KR930004215B1 - 디지탈하드웨어장치 및 디지탈데이터처리 방법 - Google Patents

디지탈하드웨어장치 및 디지탈데이터처리 방법 Download PDF

Info

Publication number
KR930004215B1
KR930004215B1 KR1019900018608A KR900018608A KR930004215B1 KR 930004215 B1 KR930004215 B1 KR 930004215B1 KR 1019900018608 A KR1019900018608 A KR 1019900018608A KR 900018608 A KR900018608 A KR 900018608A KR 930004215 B1 KR930004215 B1 KR 930004215B1
Authority
KR
South Korea
Prior art keywords
polynomial
accumulator
unit
value
variable
Prior art date
Application number
KR1019900018608A
Other languages
English (en)
Other versions
KR920010418A (ko
Inventor
고재용
Original Assignee
고재용
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 고재용 filed Critical 고재용
Priority to KR1019900018608A priority Critical patent/KR930004215B1/ko
Priority to PCT/KR1991/000029 priority patent/WO1992009043A1/en
Publication of KR920010418A publication Critical patent/KR920010418A/ko
Application granted granted Critical
Publication of KR930004215B1 publication Critical patent/KR930004215B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Complex Calculations (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Controls And Circuits For Display Device (AREA)

Abstract

내용 없음.

Description

디지탈하드웨어장치 및 디지탈데이터처리 방법
제1도는 본 발명에 의한 1번수 다항식의 순차값연산장치의 개략블럭도.
제2도는 제1의 누산기의 내부구조 및 이의 연결상태를 도시한 블럭도.
제3도는 본 발명에 의한 1변수 다항식의 순차값 연산장치의 실시예를 도시한 블럭도.
제4도는 제3도의 점선부분 A의 누산기 부분을 원칩(4비트)화한 경우의 외부단자를 나타낸 도면.
제5도는 제4도에 도시한 윈칩의 누산기를 사용하여 구성한 1변수 4비트 4차 다항식 순차값연산장치를 나타낸 도면.
제6(a)도는 2변수(2차원) 순차값 연산장치를 구성하기 위한 각 단위누산기의 연결상태를 도시한 블럭도.
제6(b)도는 제6(a)도의 단위 누산기의 연결관계를 나타낸 도면.
제7(a)도-제7(f)도는 2변수 함수의 순차값 연산을 수행하는 과정을 나타내는 도면.
제8도는 제6(a)도의 선택회로(MUX)의 상세도.
제9(a)도는 3변수 다항식 순차값 연산시스템의 연결상태를 개략적으로 나타낸 블럭도.
제9(b)도는 제9(a)도의 단위누산기의 연결관계를 나타낸 도면.
제10도는 n차원 다항식의 순차값을 연산하기 위한 각 단위누산기의 접속관계를 나타낸 도면.
제11(a)도는 4비트의 누산기가 4개 직렬 연결된 다항폭포를 원칩으로 형성한 도면이고,
제11(b)도는 제11(a)도의 원칩을 사용하여 1차원 8비트 8차식 연산시스템을 구성한 블럭도.
제12도 내지 제14도는 종래예를 도시한 도면이다.
본 발명은 일반 다변수 함수의 순차값 연산을 실시간처리해 주는 병렬처리 디지탈하드웨어장치 및 동일한 기법(알고리즘)으로 수행하는 디지탈 데이터처리방법인 소프트웨어에 관한 것이다.
디지탈 하드웨어 연산장치는, 시뮬레이션, 실시간 컴퓨터그래픽, 수치해석, 수치제어, 신디사이져, 영상처리기, 고속통신장비 등에서 로그, 사인, 제곱, 지수함수 및 이들이 결합된 일반식에 대해 디지탈 사칙연산, 즉 이진덧셈 및 곱셈등의 연산을 시행하는데 사용되고 있다. 상기와 같은 연산을 실시간처리하는 장치가 요구되고 있으나, 종래의 방법/장치로는 실시간대로 실시하는데 충분히 만족스럽지 못하였다.
즉, 종래의 방법이나 장치로서는 제12도, 제13도 및 제14도에 도시한 바와 같이 (1) 참조표(Look up Table)을 이용하는 방법, (2) 참조표 및 선형보간(linear interpotation)을 이용하는 방법, (3) 재귀적인해(Recursive solution)법, (4) 테일러 급수법을 들 수 있으나, 상기한 (1) 참조표를 이용하는 방법은 구간별로 미리 계산된 대표값들을 메모리에 저장하고, 구하려는 값이 속하는 구간의 대표값을 가져오는 방법으로 에러율이 크고, 많은 기억장소를 필요로 하며, 더구나 메모리에서 대표값을 가져오는 행위자체의 걸리는 시간으로 인하여 실시간대의 처리를 실현할 수 없다는 단점이 있다.
(2) 참조표 및 선형보간을 이용하는 방법(제12(a)도-제12(d))은, 참조표만 이용할 때보다는, 선형 보간을 행하는 것으로 인하여, 어느 정도 에러율이 줄어들지만, 에러율은 만족할만큼 향상되는 것도 아니거나와 보간연산에 드는 시간이 더 추가하게 되어 실시간대의 처리를 그만큼 더 어렵게 된다는 문제점이 있다.
(3) 재귀적 해법의 경우는 제13(a)도 및 제13(b)도에 도시되어 있는 바와 같이 함수에 대해 뉴톤-랩슨(Newton-Rapson)방법등을 필요한 정밀도만큼 반복적으로 적용시킴으로서 참조표를 두지 않고 필요한 값을 직접 연산하여 구하는 방법으로 사인곡선의 순차값연산에 적용할 때 비교적 좋은 성능을 보이나, 사인곡선 순차값연산에 있어서는 각 순차값에 대해 곱셈연산이 한두번 더 행하여져야 하고, 이로인해 축적되는 에러가 문제로 될 뿐만 아니라, 사인함수외의 일반함수에 대하여서 곱셈연산을 상당수 수행하여야 하므로 실행시간이 더 늦어지고, 에러 축적이 문제가 된다. 따라서, 참조표를 사용하지 않기 때문에 어느정도 메모리용량을 줄일 수 있으나, 근본적으로 에러율에 대한 문제점이 해소되지 않고, 처리속도 역시 개선이 요구된다.
한편, (4) 테일러 급수법은, (3)의 방법과 마찬가지로 참조표를 사용하지 않고 직접 함수값을 연산하는 방식으로 일반적인 모든 함수를 테일러 급수에 의한 다항식으로 변환시켜서, 덧셈 및 곱셈의 규칙적인 패턴연산을 수행하여 함수값을 구하는 방식이다. 예를 들면, 하기식(1)과 같은 알고리즘을 하드웨어화한 제14도에 도시된 하드웨어를 통하여 다항식 P(X)an Xn+an-1Xn-1+…a1X1+a0X0을 다항식 P(X)=((…(((anX+an-1)X+a)X…+a)X+a0)로 변형시키고, 최내측의 가로로부터 즉(anX+an-1)부터를 순차적으로 덧셈 및 곱셈의 규칙적인 연산을 수행하여 최종적인 a0항을 더하여, 함수값 P(X)를 구하는 방법이다. 즉 아래와 같은 알고리즘으로 수행된다.
DoForj=oto m
Poly value=Poly value X+[m-i]
상기한 (4) 테일러급수법을 제14도에 도시한 하드웨어가 내장된 전용계산 장치를 통하여 함수값을 구함으로서 참조표를 사용하지 않아 메모리 용량을 어느정도 줄일 수 있고, 일반적인 다항식의 연산을 수행할 수 있다는 장점이 있으나, 한 순차값을 계산하는데 다항식 차수만큼의 곱셈이 요구되므로 만족할만한 처리속도를 내지못할 뿐만 아니라 비교적 복잡한 제어를 요구하게 되고, 다변수 함수에 대하여서는 사용할 수 없다는 단점때문에 전용계산 장치가 있음에도 불구하고 상기한 (3) 재귀적인 해법에 의한 것보다도 자주 쓰이지 않는 실정이다.
따라서 본 발명의 목적은 테일러 급수를 포함한 일반적인 다항식 연산을 짧은 시간인 실시간대에 수행하는 병렬처리 디지탈하드웨어장치를 제공하기 위한 것이다.
본 발명의 다른 목적은 n변수의 다항식 연산을 실시간대에 수행하는 병렬처리 디지탈하드웨어장치를 제공하기 위한 것이다.
본 발명의 또다른 목적은 연산처리를 위한 메모리용량을 대폭적으로 줄일 뿐만 아니라 연산의 에러율을 크게 경감시킨 병렬처리 디지탈하드웨어장치를 제공하기 위한 것이다.
본 발명의 또다른 목적은 하드웨어 없이도 기존의 기범보다 빠르게 n차원 다항식 순차값 연산을 하는 소프트웨어 알고리즘의 제공에 있다.
이하 본 발명의 실시예를 나타낸 첨부된 도면을 참조하여 상세하게 설명하다.
제1도는 1변수 다항식 연산장치(혹은 1차원 다항식 연산장치)의 시스템을 나타낸 구조로서, n+1개의 누산기(ACCO, ACC1,…ACCn)를 직렬로 연결하고 즉, 예를 들면 i번째의 누산기(ACCi)의 각 입력단자(단, i=0,1,…n)중의 어느 하나, 이하 동양)에는 i-1번째의 누산기(ACCi-1)의 출력단자가 접속하되 0번째의 누산기(ACCO)의 입력단자는 0을 입력시키도록 하고, 선택제어회로(CG)를 각 누산기(ACCO, ACC1,…ACCn)의 제어단자에 접속하여 구성한 것이다. 설명의 편의상 이하 이 1변수 다항식 연산기를 "다항폭포(Polynomial Fall)"라 지칭하고, 이 다항폭포내의 누산기 갯수를 "다항폭포의 길이"라 한다.
제2도는 제1도에 도시한 다항 폭포에서의 누산기만의 연결상태를 좀더 구체적으로 도시한 도면으로서, 각 누산기(ACCi)는 가감기(∑i)의 출력을 레지스터(Ri)의 입력단자에 접속하고 가감기(∑I)의 입력단자에는 레지스터(Ri)와 그 바로 전단의 레지스터(Ri-1)의 각 출력을 접속하여 구성한다. 다만 첫번째 누산기(ACCO)의 가감기(∑0)의 입력단자에는 0의 신호와 누산기(ACCO)의 레지스터(RO)의 출력단자가 입력되도록 구성되어 있다. 그러나 상기 누산기(ACCO)는 가감시(∑O)없이 레지스터(RO)단독으로 구성하여 레지스터(RO)는 항상 초기치가 출력하도록 구성하여도 된다.
제1도 및 제2도에 도시된 시스템에서 클럭펄스가 입력되면, 누산기(ACCO)는, 입력이 0이므로 계속하여 초기치인 상수값을 출력하게 되고 그 다음의 누산기(ACC1)에서는 1차 다항식의 순차값이 출력되며, 그 다음의 누산기(ACC2)에서는 누산기(ACC1)의 출력인 1차식을 계차로 하는 다항식 즉, 2차 다항식의 출력된다. 이와 같이 하여 최종의 누산기(ACCn)에서는 n차 다항식 P(X)의 순차값이 출력된다.
좀더 구체적으로 설명하면, 초기화된 길이 m의 다항폭포는(초기화 즉 초기값 설정에 대하여서도 후술함) 제2도에 도시된 바와 같은 다항폭포내의 레지스터 R1…Rn까지 각 Ri에 대해 각 누산기는 자기 자신의 값에 입력값을 더한 값을 다음 순간 값으로 가지므로, 순간 t에서의 출력을 ACC(t), 입력을 input(t)라 할때, 다음 주기의 출력 ACC+(t+Φ)는 ACC(t+Φ)=ACCi(t)+Inputi(t)가 됨을 알 수 있다. 클럭신호를 감안하여 제n번째 클럭에서의 출력을 계산하여 보면,
*ACCi(n)=ACCi(n-1)+Inputi(n-1)
단 ACCO(n)=rO, ACCi(O)=ri
이때 각 누산기 i의 입력 Inputi(n-1)은 누산기 i의 연결된 누산기 i-1의 출력 Acc(n-1)이다. 따라서 식은 Acci(n)=Acci(n-1)+Acci(n-1)이 된다. 이 식에서 항들을 이항하면 Acc(n-1)=Acci(n)-Acci(n-1)로 고쳐지는데, 이는 Acc(n)이 Acci(n)의 계차수열임을 의미한다. 따라서 ACCO(n) n=0, 1, 2, 3,…)일때의 값이 상수값이 된다고 할때 Acc1(n)의 N=0, 1, 2, 3일때의 각 값은 1계차수열 즉 1차 다항식의 순차값이 되고 Acc2에 대해서는 2차 다항식의 순차값이 된다. 따라서 m계차수열인 차수 m인 다항식이 각 i계차수의 초항을 다항 폭포의 각 레지스터에 주면, 다항식의 순차값이 계산되어서 본 발명에 의한 다항폭포는 일반적인 다항식의 순차값 연산에 사용될 수 있음을 알 수 있다.
다음에 초기치를 설정하는 방법에 대하여 설명한다.
≪초기화 알고리즘≫
fori=o to m
P°(Xo+is) ← P(Xo+1S);
fori=1 to m
forj=i to m
P(Xo+js) ← P(Xo+js)-P(Xo-(j-1)s))
fori-o to m
Ri ← P(Xo+)(n-1)s);
위의 알고리즘은 m가 다항식의 순차값을 구하기 위한 다항폭포의 초기치를 나타낸다. 이때, P는 P순차열의 i계차 다항식에 해당한다. 즉,
P(X+s)=P(X+s)=P(X)
단, P°(X)는 P(X), 즉 순차값을 구하려는 다항식이다.
레지스터 Ri의 초기값을 결국 구하려는 다항식 순차열의 m-1계차수열의 조항들이다. 즉,
Rm←P°(Xo)
Rm-1←P1(Xo+1s)=P.(Xo+s)-P(Xo)
Rm-2←P2(Xo+2s)=P1(Xo+2s)-P1(Xo+s)
=P(Xo)-P(Xo+s)+P(Xo+2s)
Rm-i←P(Xo+is)=P(Xo+is)-P(Xo+(i-1)s) 단, 0〈i〈m
Ro←Pm(Xo+ms)이 된다.
이들 알기 쉽게 나타내면 표 1와 같다.
[표 1]
상기 피라밋트형의 다항식의 순차값에 의한 순차열의 조항값 즉 각 순차열의 좌단에 나타난 P0(Xo), P1(Xo+s), P2(Xo+2s), P3(Xo+3s),……Pm(Xo+ms)이 전술한 누산기의 각 레지스터(R0, R1, …Rn)의 초기값이다.
예를들면, 폭포의 길이가 4인 경우의 각 누산기의 레지스터 출력단에서 출력되는 클럭싸이클이 0일때는 각 레지스터(R0, R1, R2, R3)는 전술한 초기화시켜 얻어진 초기치인 r0, r1, r2, r3가 각각 출력된다. 그다음 클럭싸이클 1에서는 각레지스터의 출력은 좌단의 레지스터(R0)를 제외하고는 전단의 출력이 누산되므로 레지스터(R0)는 r0, 레지스터(R1)는 r0+r1, 레지스터(R2)는 r1+r2, 레지스터(R3)는 r2+r3가 출력되며, 그다음 싸이클 2에서는, 레지스터(R0)는 r0, 레지스터(R1)는 2r0+r1, 레지스터(R2)는 r0+2r1+r2, 레지스터(R3)는 r1+2r2+r3가 각가 출력되며 계속하여, 클럭싸이클 3, 4, 5…에 대하여 각 출력을 표시하면 표 2과 같이 된다.
[표 2]
다음에 실질적인 함수의 예를들어 순차값을 구하는 경우에 대하여 설명한다.
먼저 P(X)=X3의 순차값 P(X)을 구하는 경우 차수가 3이므로 폭포의 길이는 4이다. 따라서 제1도 및 제2도의 4개의 누산기(ACC0, ACC1, ACC2, ACC3)의 각 레지스터(R0,…R3)에 전술한 바와같은 방식으로 설정한 초기값 0.6000, 0.6000, 1.000, 0.0000을 기억시키다. 따라서 클럭사이클 0에서는 각각의 레지스터 R0…R3에는 각각 .000, 6.000, 1.000, 0.000이 출력되고 그 다음의 클럭사이클 1에서는 레지스터 R0에는 6.000, R1에는 6.000+6.000=12.000, R2에는 6.000+1.000=7.000, R3에는 1.000+0.000=1.000이 출력되며 그리고 클럭사이클 2에서는 레지스터 R0, R1, R2, R3에는 각각 8.000, 18.000, 19.000, 8.000이 출력되고, 이어서 클럭사이클 3,4,5,…10까지 각 클럭사이클에서의 각 레지스터 R0…R3에 출력되는 각각의 출력값은 표 3과같다.
[표 3]
따라서 P(X)=X3의 각 클럭사이클 X=0, X=1, …X=10에서의 인산값 P(0), P(1)…P(10)은 최종(우단)레지스터 R3에서의 출력값인 0.000, 1.000,…1000.000이 된다.
한편, P(-0.1), P(0.2), P(0.5), P(0.8), R(0.11)…P(0.20)과 같은 순차열 P(X)의 독립변수 X가 1씩 증가하지 않고 소수점이하 자리수로 증가하는(정수가 아니라 소수인)경우에 대해서는 하드웨어의 추가없이 적절한 초기화만 연산할 수 있다.
즉, 위 다항식 순차를 다시 써보면, P(-0.1+1+0×0.3), P(-0.1+1×0.3)…P(-0.1+2×0.3)…과 같이 되어, 일반항은 P(-0.1+n×0.3)이고, n은 정수이므로, 다항식은 n을 중심으로 정이하면, 형태만 다른 다항식인 R(0), R(1), R(2),…(Rn)이 된다.
따라서 레지스터(R0,…Rn)들은 다항식 R에 맞추어 초기화시키면, 순차값 P(-0.1×n×0.3)을 한 클럭마다 구할 수 있다. 실제로 4차 다항식 P(X)=(X-0.5)(X-1)(X-1.5)(X-2.0)=X4-5X3+8.75X2-6.25X+1.5의 순차값 P(-0.1+n×0.3)을 구하려면, 전술한 바와같은 방법으로 초기화하여 얻어진 0.194, -0.583, 1.094, -1.656, 2.218의 5개의 초기값을 레지스터(R0,…R4)에 기억시키면, 클럭사이클 0, 1…11에서 표 4에 나타낸 바와 같은 순차열이 각 레지스터(R0,…R4)에 출력된다. 따라서 최종단의 레지스터(이 경우에는 R4)의 출력값은 각 클럭사이클에서의 P(-0.1), P(0.2), P(0.5),…P(3.2)의 연산값이 된다.
[표 4]
제3도는 본 발명에 의한 1차원 다항식 연산장치인 디지타 하드웨어장치 하나의 실시예를 도시한 블럭도이다. 제3도에 도시한 바와 같이, 컴퓨터의 데이터버스(Data bus)에 실린 데이터나, 전단의 누산기의 출력데이터중 하나를 컴퓨터의 지령신호(direction)에 응하여 선택, 출력하는 멀티플랙서(MUX)와, 상기 멀티플렉서(MUX) 및 레지스터(R)의 출력이 각각 입력되는 가감기(∑)와 이 가감기(∑)의 출력신호가 입력되는 레지스터(R)로 형성되는 누산기(ACC)가 소정 갯수만큼 직렬 연결된다. 각 레지스터의 로우드 지령입력단에는 디코더의 출력이 연결되므로 각 레지스터들은 고유 번지를 갖게 된다. 이 번지는 초기화시에 쓰이며, 본 서브시스템을 제어하는 컴퓨터는 각 레지스터의 초기값에 해당하는 값을 연산하여(이 초기값 설정은 전술한 바와 같은 방법에 의하여 컴퓨터가 연산하여 한 것임)데이터버스에 띄운후 레지스터의 번지를 어드레스에 띄우고 신호를 0으로 놓으면 초기치가 대응 레지스터에 로우드된다. 순차값을 구하는 경우는 디코더는 디스에이블되고, 프리시드(proceed)신호에 의해 MUX 및 MAP 제어논리가 조정되어 상술한 순차값 연산이 이루어진다.
그외 초기화신호 및 프리시드 신호가 모두 0일때는 각 누산기의 레지스터는 로우드 디스에이블되므로 이전단계의 신호값을 그대로 유지하게 된다.
상기 시스템에 의하여 누산기를 통하여 병렬적으로 덧셈을 행하게 함은 물론 그 연산과정에 곱셈이 제외되므로 수행시간이 대폭적으로 줄어들게 된다. 예를들면 종래의 방법으로는 m차의 다항식 순차값을 계산하는 경우 m번의 곱셈과 덧셈을 수행하여야 한다. 더구나 r비트에 대한 곱셈연산은 덧셈연산에 비해 r배 늦으므로 전체 mr+m의 덧셈을 수행하는 시간이 필요하다. 반면에 본 발명에 의한 상기한 1차원 함수연산장치에 의해 연산을 수행하는 경우 1번의 덧셈을 하는 시간에 이 연산작업이 끝나므로 종래의 방법보다 mr+m배 빠른 연산이 된다. 예를들어 32비트 8차 다항식의 연산의 경우 기존의 방법보다 264배의 속도 향상을 달성할 수 있다.
종래의 방법(MAC)에서 곱셈/덧셈을 수행할때마다 메모리로 부터 각 계수를 공급해주는 과정이 있는 것을 감안하면, 본 발명에 의한 장치는 상기한 예보다도 실제적으로는 더 큰 속도향상이 달성될 수 있음을 알 수 있다.
제4도는, 제3도에 있어서의 점선으로 표시한 누산기 부분(A)에 대하여 원칩(4비트 경우)으로 형성한 예의 외부단자를 나타낸 것이다.
그리고, 제5도는, 제4도에 도시한 원칩의 누산기를 사용하여 1차원 4비트 4차식 순차값 연산장치를 구성한 예를 나타낸 것이다. 이와같이 구성된 장치에 대한 작용은 제3도의 장치와 동일하므로 생략한다.
상기한 예들은 1차원, 즉 1변수 순차값 연산시스템에 대하여 설명하였지만, 이하는 n차원(n변수)순차값 연산 시스템에 대하여 설명한다.
n변수(n차원) 연산 시스템은 독립변수가 n개인 다항식 P(X, Y, Z…)에서 독립변수들이 연속적으로 변할때 다항식의 순차값을 구하는데 사용하기 위한 시스템이다. n차원 벡터에서 정의된 임의의 포텐셜함수 P(X, Y, Z…)를 테일러 급수확장을 통해 n변수 다항식으로 변환하면, 본 발명에 의한 연산시스템을 통해 근접값에 대한 함수값의 순간연산이 가능하다. 즉 n차원에서 정의된 포텐셜함수(X,Y,Z…)에 대해, 벡터상위치(X0,Y0,Z0…)에서 근접벡터(X0±△XY, Y0±△Y, Z0±△Z,…)로 연속적으로 이동하는 상황에서의 함수값 연산을 순간적으로 행한다.
이는 종래의 기술로는 시간이 매우 길게되어 실시간처리가 불가능한 연산으로 여겨왔다. 그러나 본 발명에 의한 장치에서는 n차원 포텐셜함수에 대하여 n번의 덧셈을 하는 시간내에 그 주변값을 구하므로, 많은 상황을 실시간 처리한다.
예를들면, 컴퓨터그래픽에서의 물체회전(2-3차원)은 지금까지는 미리 그려져 있는 몇개의 그림을 RAM등에 저장한후 이로부터 읽어내어 화면에 나타내는 정도였지만, 본 발명에 의한 연산시스템에 의하면 정교한 실시간 회전 연산처리가 가능하게 된다.
제6(a)도는 2변수다항식 순차값을 연산하는 2차원 순차값 연산시스템을 개략적으로 도시한 블럭도이다.
제6(a)도 X축 및 Y축의 선택회로(제8도)를 가지는 단위 누산기(또는 용소)가 2차원(i,j)의 좌표를 갖도록 행방향으로 m개, 열방향으로 n개 배치되고, 각 누산기(예를들면, 좌표(i,j)위치에 있는 단위누산기, 이하 단위누산기(i,j)라 하며, i,j는 각각 임의의 정의 정수를 나타낸다)의 두 입력단에는 X방향으로 부터는 단위 누산기(i-1,j)의 출력이 연결되고, Y방향으로 부터는 단이 누산기(i,j-1)의 출력이 연결되도록 연결접속하되, 단위누산기(o,j)나 단위누산기(i,o)에 대하여서는 단위누산기(-1,i)나 (i,-1)가 존재하지 않으므로 1차원(1변수)의 경우와 같이 0을 연결하며, 단위누산기(i,j)의 출력은 단위누산기(i+1,j) 및 (i,j+1)의 입력단자에 연결하게 구성한다.
단, i+1이 최종 단위누산기의 번호, 즉 m-1보다 큰 경우는 누산기(i+1,j)이 역시 존재하지 않으므로(i,j)로부터의 출력을 X방향으로 연결할 필요가 없다.
누산기(i,j+1)도 j+1〉n인 경우, 존재하지 않으므로 (i,j)로부터의 출력을 Y방향으로 연결하지 않는다.
한편, 제6(b)도는 제6(a)도의 2변수 다항식 순차값을 계산하기 위한 2차원 순차값 연산시스템의 단위누산기의 연결관계를 개략적으로 나타낸 것이다.
이와같이 2차원(2변수)으로 연결된 단위 누산기들로 구성된 2변수 다항식 순차값 연산시스템을, 이하 2차원 다항 폭포라 한다. 이 시스템을 통해 X가 변하는 경우의 순차값 P(X+S,Y)를 구하려면 X/Y 선택선에 X선택신호를 주고 이에따라 X/Y선택회로(제8도)에서 단위누산기(i,j)의 두 입력단자중 X방향의 입력단, 즉 단위누산기(i-1,j)의 출력을 선택하여 단위누산기(i,j)에 누산하고 Y가 변하는 경우 X/Y 선택에 Y선택신호를 주어 X/Y 선택회로에서 단위누산기(i,j-1)의 출력을 선택하여 단위누산기(i,j)에서 누산된다. 따라서 상기 시스템을 통하여 2변수 다항식에 대한 순차값을 연산하려면 우선 1변수다항식의 순차값 연산시스템에서와 같이 초기화된 X,Y 변수에 대한 초기값을 각 누산기의 레지스터(도시생략)에 저장시킨다.
그리고 X방향의 변화가 일어날 경우 전술한 바와 같이 중앙시스템의 X선택신호에 의해 각 열마다 X방향으로 전술한 바와 같이 동양의 1차원 다항폭포연산이 일어나게한다. 이때 변수 Y는 상수로 고정된다. 출력은 최종단 누산기(m,n)에 래치된다. Y값이 변하는 경우는 Y선택신호를 보내 X값이 상수로 고정된 상태에서 변수 Y에 대하여 순차값을 동일방법으로 연산하면, 역시 최종의 단위누산기(m,n)에서의 출력이 이때의 순차값이 된다.
제7(a)도 내지 제7(b)도는, 2변수함수인 P(X,Y)=X2Y2에 대하여 상기 제6(a)도, 제6(b)도에 도시한 연산시스템을 사용하여 연산한 연산예를 도식적으로 나타낸 것이다.
제7(a)도는, 상기 함수 P(X,Y)=X2Y2에서 X=Xo+ms, Y=Yo+nt로 치환하여 P(Xo+ms, Yo+nt)=(Xo+ms)2(Yo+nt)2로 변환하고, Xo=0, Yo=0, s=1, t=1(이때 초기치는 0클럭사이클에서 m=n=o이 된다)인 경우의 순차값 연산을 위하여 초기화시킨 각 단위 누산기(제6(b)도)의 초기값을 나타낸 것이다. 이 초기치는 다음과 같이 구하여진다.
이와같이 초기화된 시스템을 첫번째 클럭사이클에서 변수 Y는 고정시킨 채로 변수 X에 대해 순차값 연산을 실시하면, 각 단위누산기에 출력되어 누산되는 순차값은 제7(b)도와 같이 된다. 즉 1행에 있는 각 단위누산기는 초기값이 모두 0으로 설정되어 있으므로 1클럭사이클시에 그 다음단의 단위누산기에 입력되는 입력은 0이므로 1행에 있는 단위누산기[(2,1); (2,1); (2,2)]의 순차값은 초기값과 동일하게 된다. 그러나 2행에 있는 각 단위누산기의 경우 1열에 있는 단위누산기(1.0)는 입력이 0이므로 순차값은 초기값인 2로되나, 그 다음단의 단위누산기(1,1)은 입력이 2가되고(이는 단위누산기(1,0)의 출력임) 2초기값이 1이므로 1클럭시에 가산되어, 3으로 되고, 이와 동양으로 단위누산기(1,2)의 순차값도 그 전단의 초기값(1)이 입력되고 단위누산기(1,2)의 초기값 0과 누산되므로 순차값은 1이된다. 3행의 단위누산기[(0,0); (0,1); (0,2)]의 순간값도 동양으로 1클럭 사이클시에는 각각 4,6,2로 된다.
제7(c)도는 그 다음의 2번째 클럭사이클시(Y변수에 대하여서는 1번째 클럭사이클)에 즉, 1번째 각 사이클의 각 순차값이 제7(b)도와 같이 래치된 후 다음 클럭이 입력되며, X의 1로 고정하고 Y만을 변수로 하였을 때의 각 순차값을 나타낸 것이다. 즉, 2번째 클럭이 입력되는 바로전에는 제6(b)도에 나타낸 각 단위누산기는 제7(b)도에 나타낸 바와 같은 순차값의 데이터가 래치되어 있다. 따라서, 2번째 클럭시에는 1열의 경우 개시되는 최초의 단(1행 3열)의 단위누산기(0.0)는 전단의 입력이 없으므로 0의 신호가 입력되어 2의 순차값은 변동없이 4를그대로 유지하나, 그 다음단의 단위누산기(0,1)의 순차값은 이 전단의 누산기(0,0)의 래치되어 출력되는 값이 4이므로 단위누산기(0,1)의 래치된 값 2와 합산되어서 8이 된다. 동양으로, 그 다음단의 단위누산기(0,2)의 순차값은 그대로 되며, 2열의 각 단위누산기(1,0), (1,1), (1,2)의 순차값은 각각 6,9,3으로 되고 3열의 각 단위누산기(2,0), (2,1), (2,2)의 순차값은 각각 2,3,1로 되어 래치되며, 단위누산기(2,2)의 출력은 1로 된다. 이것은 X=Xo+ms, Y=Yo+mt에서 Xo=Yo=0, s=t=1, m=n=1에서 X=1, Y=1로 되고 이때의 함수값 P(X,Y)=12×12=1과 같은 동일한 값이 출력됨을 알 수 있다.
제7(d)도는 X를 1로 고정하고 Y를 변수로 하였을 경우 3번째 클럭사이클(변수 Y만으로는 2번째이고 X는 1번째 즉, m=1, n=2)일때의 함수 P(1,Y)의 각 단위누산기에 있어서의 순차값을 나타낸 것이며, 그 작동관계는 제7(c)도의 경우와 동양이며 이때의 출력은 P(1,2)=1222=4와 일치함을 알 수 있다. 그리고, 제7(e)도, 제7(f)도의 경우도, 각각 [m=1, n=3], [m=2, n=3]인 경우의 함수값 P(X, Y)의 각 단위누산기에 있어서 출력되어 래치되는 순차값을 나타낸 것으로, 제7(e)도, 제7(f)도에 대한 제6(b)도에 도시된 2변수 연산시스템에 있어서의 작동관계는 전술한 제7(b)도-제7(d)도의 경우와 동양이며, 최종의 단위누산기(2,2)에서의 출력은 각각 9, 36이 되며, 이는 (X,Y)값을 각각 (1,3), (2,3)으로 하였을 때의 P(1,3), P(2,3)의 값과 일치함을 알 수 있다. 제7(a)도-제7(f)도의 연산에는 2변수 단항식의 함수의 연산을 실예로 하는 경우이나, 2변수 다항식의 함수에 대하여서도 동양으로 수행될 수 있음은 말할 것도 없다.
제9(a)도는 3차원(3변수)다항식에서 폭포의 길이를 2로 하여 다항식의 순차값을 연산하기 위한 3변수 다항식 연산시스템의 연결상태를 개략적으로 도시한 블럭도로서, 이 실시예는 독립변수가 3개이고 폭포의 길이가 각축에 대해 2이므로 단위누산기(또는 용소)를 23=8개 사용하여 3변수 다항식 연산시스템을 구성한 것이다. 즉 각 단위누산기(또는 용소)는 제1도 내지 제3도에 도시한 바의 가감기 및 레지스터로 구성되는 누산기의 입력단자에 3변수 X,Y,Z중 하나를 선택하여 접촉시켜주는 3변수 X/Y/Z 선택회로(이는 제8도의 2변수 X/Y선택회로와는 선택단자만 다를 뿐 그외는 동양이므로 도시 생략)가 접속되게 구성되어 있다. 이들 각 단위누산기(I,J,K)(단, I,J,K값은 0 또는 1로서 X,Y,Z에 대응시켜 부여된 단위누산기의 고유번호임)의 입력측에는 각각 X축방향으로 부터의 입력이 (I-1,J,K) 누산기의 출력값과 Y방향의 입력인 (I,J-1,K)의 출력값 및 Z방향입력인 (I,J,K-1)대신 Φ이 입력되고, J-1〈0이면 (I,J-1,K)대신 Φ이 입력되며, K-1〈0이면 (I,J,K-1)대신 Φ이 입력된다(단 Φ신호는 0신호를 의미함). 각 단위누산기(I,J,K)의 출력은 누산기(I+1,J,K), (I,J+1,K), (I,J,K+1)에 연결하되 I+1〉Xmax이면 X방향누산기(I+1,J,K)는 존재하지 않으므로 이 누산기로는 연결하지 않고, J+1〉Ymax이면 Y방향(I,J+1,K)방향으로 연결할 필요가 없다. 마찬가지로 K+1〉Zmax인 경우 존재하지 않는 누산기(I,J,K+1)에는 연결하지 않는다.
즉, 제9(a)도에서 단위누산기(0,0,0)는 X,Y,Z에 대응하는 고유번호가 모두 0이므로, 이에 1을 뺀값은 0보다 작게되므로 그의 3변수 X/Y/Z 선택회로는 모두 Φ입력이 접속되고, 1을 더한 값은 모두 1이되고 X,Y,Z에 대응하는 최대번호값인 1보다 크지 아니하므로 이 단위누산기(0.0.0)는 3개의 출력이 모두 그 다음단위의 단위누산기(0,0,1), (0,1,0), (1,0,0)의 3변수 X/Y/Z 선택회로에 접속되며, 단위누산기(0,1,0)의 X,Z에 대응되는 고유번호값이 0, Y에 대응되는 고유번호값이 1이므로, 이 단위누산기(0,1,0)의 3변수 X/Y/Z 선택회로에는 Y에 대응하는 그 전단 단위누산기(0,0,0)출력신호만이 접속되고, 나머지는 Φ의 입력신호가 접속되며, 또한 상기 단위누산기(0,1,0)의 출력은 X,Z에 대응하는 고유번호가 0으로 되어 이에 1을 더하더라고, X,Y에 대응하는 최대의 번호의 값보다 크지는 아니하므로 이에 대응하는 신호가 출력되어 그 다음단위 단위누산기(0,1,1) 및 (1,1,0)에 접속되나, Y에 대응하는 고유번호는 1이어서 이에 1을 더하면 이에 대응하는 최대 번호값보다 크게 되므로 연결되지 않도록 구성되어 있다. 이들 단위누산기의 접속방법을 구체적으로 도시하면 제9(b)도와 같다.
이와같이 구성된 3변수 다항식 순간값 연산시스템에 의하면, 3변수 다항식 P(X, Y, Z)에 대한 초기값을 전술한 다항식의 초기값 설정방법과 동양으로 구한 후(단, 이들 초기값 설명방법은 본 발명의 발명범위가 아니므로 그 구체적인 설정방법에 대하여서는 생략한다), 이들 초기값 컴퓨터의 지령에 의하면 각 단위누산기(i,j,k)의 레지스터(도시생략)에 래치시키고, 전술한 2변수 다항식의 순간값 연산시스템의 경우와 동양으로 Y,Z를 임의의 상수 Yk, Zi로 고정하고 X만을 변수로 하도록 컴퓨터의 제어신호에 의하여 상기 3변수 다항식 순간값 연산시스템을 제어하면, 상기 함수 P(X,Y,Z)는 P(X,Yk, Z)로 되어 X에 대한 1변수 다항식의 순차값 연산과 동일한 것으로 되어(다만 이때 3변수 X/Y/Z 선택회로에서는 변수 X의 신호만을 선택하고 나머지 Y,Z에 대한 신호는 선택하지 않는다), 각 단위누산기(I,J,K)에 대응하는 순차값이 각 단위누산기(I,J,K)에 래치된다. 그다음 변수 X,Y,Z중의 어느하나를 변수로 취하고 나머지 상수로 취하면, 예를들어 Y를 변수, X,Z를 상수 Xm, Zl(Zl의 상수값은 이전과 동일)으로 하면, Y만을 변수로 하는 P(Xm, Y, Zl)의 1변수 다항식으로 되므로, 1클럭사이클이 지나는 동안 상기와 동양으로 각 단위누산기(I,J,K)에 대응하여 이때의 순차값이 각 단위누산기(I,J,K)에 래치된다.
계속하여 상기 변수 X,Y,Z중의 어느 하나를 변수로 하고 나머지 상수로 취하여 일변수함수로 변경시켜서 상기와 동양으로 클럭사이클이 지날때마다 그때 그때의 순차값이 각 누산기(I,J,K)에 래치되고, 최종단 단위누산기(2,2,2)의 출력단에서는 순차값이 변경될 때마다 그때의 순간값을 출력하게 된다.
이상은 3차원(3변수) 이하의 다항식 순간값 연산시스템에 대하여 설명하였으나, n차원 벡터 포센셜함수의 순간값 연산을 하기 위해서 다항폭포를 n차원으로 확장하면 된다.
왜냐하면, 연산자 Gx, Gy, Gz,…를 다음과 같이 정의하면,
로 되고, 또한P(단, P는 다항식)이 성립하므로 상기 연산자는 교환법칙이 성립한다.
그러므로 n개의 변수중의 어느하나만을 임의선택하여 변수로 취하고 나머지 n-1개의 변수는 상수로 고정시켜 선택된 변수에 대한 1차원(1변수)다항식으로 변환시켜 순차값을 구하는 것을 반복수행함으로써 변수의 n차원 각각에 대해 설정된 값에 있어서의 순차값을 구할 수 있게 되나, 변수의 선택순서가 다르다 하더라도 순차값은 항상 동일하게 되어 n차원(변수)벡터 포텐셜함수의 순차값은 다항폭포 n차원으로 확장하여 구할 수 있음과 동시에 시스템의 제어가 극히 용이하게 되어 간단한 구종에 의하여서도 실현될 수 있다.
제10도는 n차원 다항식의 순차값을 연산하기 위한 각 단위누산기의 접속관계를 하나의 예로서 도시한 개략도로서, 각 단위누산기는 n개의 입력단을 가지고 외부의 제어신호 예를들면 컴퓨터의 제어신호에 의해, 입력되는 n개의 신호중 어느하나의 신호만을 선택하도록 구성된 선택회로, 즉 멀티플렉서(MUX)와, 상기 선택된 신호의 데이터를 누산하는 통상의 누산기(ACC)로 구성되어 있다. 그리고, 상기 단위누산기는 X,Y,Z,…의 각 변수에 대응하는 다항식의 차수가 Xmex, Ymax, Zmax,…라 할때 (Xmax+1), (Ymax+1), (Zmax+1)…개의 단위누산기를 접속하며, 각 단위누산기에 좌표값(I,J,K,L,…, 단 0〈I〈Xmax, O〈J〈Ymax, O〈K〈Zmax,…)을 부여할때 상기 각 단위누산기(I,J,K,L,…)의 n개의 입력단의 각 멀티플렉서(MUX)에는 (I-1,J,K,L,…), (I,J-1,K,L,…), (I,J,K-1,L,…), (I,J,K,L-1,…)을 연결하되 그 좌표값중에 어느 하나라도 0보다 작은 좌표값을 갖는 경우는 그와같은 좌표를 가지는 단위누산기가 존재하지 아니하므로 Φ을 연결하도록 구성하고, 상기 각 단위누산기(I,J,K,L,…)의 출력은 n개의 단위누산기(I+1,J,K,L,…), (I,J+1,K,L,…), (I,J,K+1,L,…), (K,J,K,L+1,…)의 입력단에 접속하되 접속되는 각 누산기중 그 좌표값중 어느 하나라도 최대의 좌표값 즉 치수에 해당되는 좌표값(Xmax, Ymax, Zmax,…)보다 큰 경우에는 이와같은 단위누산기가 존재하지 아니하므로 비연결상태로 한다.
이와같이 구성되면, n차원(n변수)다항식 P(X, Y, Z,…)에서 어느 클럭사이클에서 각 단위누산기(I,J,K,L,…)는 하나의 변수만을 선택하고, 나머지 n-1개의 변수에 대하여서는 상수로 고정함으로서 선택된 변수, 예를들면 X에 대한 1변수 다항식으로 변환되므로 이 클럭사이클 구간에서 전술한 1변수 다항식의 연산과 동양으로 순차값이 구하여지고 그다음 클럭사이클 구간에서도 이와같은 과정을 반복함으로서, n차원(n변수)다항식 P(X,Y,Z,…)의 순차값이 구하여진다.
이상과 같이 본 발명을 실시예에 의거하여 설명하였지만, 전술한 실시예들은 본 발명의 기술사상이나 범위를 제한하고자 하는 의도는 아니며, 첨부된 특허청구의 범위기재 내용내의 기술사상이나 범위를 벗어나지 않는 범위내에서 여러가지 변경이나 수정이 이루어질 수 있다.
예를들면, 본 발명의 전술한 실시예들에서는, 모두 클럭신호로 구동하는 동기식으로 구성되어 있으나, 본 발명의 클럭신호없이 구동되는 비동기식이나, 또는 일부만을 동기식으로한 동기/비동기 혼합형식으로 구성할 수도 있다.
그러나, 비동기식으로 하는 경우에는, 공지의 비동기가산기, 비동기 래치회로, 비동기 멀티플렉서 및 비동기 프로토콜을 지원하는 셀트타임드서키트등을 구비하여 구성되며, 동기/비동기식으로 하는 경우에는, 연결되는 각 단위누산기만큼의 가산기를 각 단위누산기에 설치하고, 단위누산기의 출력을 이들 가감기에 연결하여 가감연산을 비동기식으로 하도록 구성하고, 기타 래지스터등은 클럭신호로 구성되도록 동기식으로 구성하면 된다.
이때, 상기 비동기식의 경우는 연산속도는 대단히 향상되나, 구성이 복잡하여지기 때문에 코스트가 높게된다는 결점이 있다. 한편 동기/비동기 형식은 가감기가 비동기식으로 연결되어 있기 때문에 예를들어 2차원 다항폭포를 사용하여 벡터(X,Y)가 (X+△X,△Y+Y)로 변하는 경우의 가감연산은, (X,Y)→(X+△X; Y)→(X+X, Y+△Y)의 두 클럭사이클을 필요로 하지 않고(동기식에서는 두 클럭사이클 필요) 직접(X,Y)→(X+△X, Y+△Y)의 한클럭사이클이 필요할 뿐이다. 또한 1변수의 경우 0, 1, 2, 3, 7, 8, 9와 같이 순차열이 복수가 뛰어넘는 경우 연산도 한 클럭내에서 가능하게 된다. 따라서 동기/비동기식의 가감연산시간이 단축되나, 다만 결합(또는 연결)하고자 하는 단위 누산기만큼 가감기 수를 각 단위누산기에 설치하여 주어야 하기 때문에 변수의 갯수가 증가하면 기하급수적으로 가감기의 숫자가 증가되기 때문에 코스트가 매우 높게될 뿐 아니라 연산속도도 순수한 비동기식의 경우에 비하여 그다지 향상되지도 않는다.
또한 본 발명의 실시예에서는 변수가 일방향으로 진행되는 경우, 예를들면, 0,1,2,3…과 같이 변수값이 한방향으로 순차적으로 진행하는 경우에 대하여 설명하였으나, 이것에 한정되는 것은 아니고, 예를들면, 0,1,2,3,4, …6,5,4,3,…과 같이 변수가 증가하는 방향과 감소하는 방향의 양방향으로 순차적으로 진행하는 경우에도 적용한다. 그러나 양방향으로 진행하는 경우에는 레지스터에 보조래지스터 및 추가제어논리를 설치하여 이들 래지스터 및 가감기를 변수방향 선택지령신호로 제어하여 주어야 한다.
또한, 본 발명에 의한 시스템은, n차 벡터의 포텐셜함수 순차값연산을 순간적으로 수행하는 경우에 대하여 설명하였지만, n차원 다항식 연산시스템의 각 단위누산기를 적절히 초기화시키면, 순차값 뿐만 아니라 n》m인 m차원 포텐셜 함수의 "임의"포텐셜함수값연산에도 적용시킬 수 있다. 즉 벡터가 순차적으로 변하지 않고, 멀리 점프를 하는 경우에도 하드웨어의 추가없이 초기화작업이 가능하고 한 클럭내에 포텐셜 함수값을 구할 수 있다.
이러한 순간연산은, 하나의 변수를 여러개의 변수로 나누어 처리함으로써 가능하다. 예를들어 일변수 X를 X=2nXn+2n-1X+…+2로 볼때, 각 2Xi는 0 또는 2만을 갖는다. 따라서 각 2를 독립변수 Ki로 놓고 각 Ki의 증가분은 2로 정하면 된다. 이는 결국 n차원의 벡터(K1, K2, …Kn)상에서의 연속값을 구하는 문제로 된다. 따라서 현재의 X값으로 부터 2만큼 크거나 작은 범위내에 있는 X값에 대해 순간연산이 가능하다. 다만, 위와같은 경우 초기화 문제가 대두된다. 예로서 1변수 1차함수값을 2범위내에서 구하는 경우 길이 2인 8차의 다항폭포가 쓰이므로 초기화해야 할 래지스터의 갯수는 28개이어서, 차라리 RAM의 28개의 공간에 미리 값들을 계산해 놓고 참조표법을 쓰는 것보다는 이득이 없을 것 같이 보이지만, 참조표법 28표를 작성한 28개의 X값에만 적용시킬 수 있는 반면, 이 방법은 X의 변화가 28의 범위를 벗어나지 않는다면 어떤 X값에 대해서 적용이 가능할 뿐만 아니라 만일 X값이 상기 범위를 벗어난다 하더라도 범위이전(scopeshipt)을 필요한 만큼 시행하거나, 재초기화를 수행하여 값을 구할 수 있다.
또한 본 발명의 실시예들은 컴퓨터에 결합하여 사용되는 예를 들고 있지만, 반드시 컴퓨터에 결합하여 사용하는 것만은 아니고, 음형합성기, 모뎀등에서 본 발명에 의한 시스템을 결합하여 사용하는 것도 가능하다.
또한 본 발명에 의한 시스템은 덧셈연산형태(부동점수나 정수연산) 각각에 대해 표준칩을 개발해 두면, 여러가지 용량을 요구하는 응용에 모두 사용될 수 있다. 이는, 표준칩간의 폭포연결로 가능하게 된다. 각 현상에서 요구되는 여러가지 용량, 즉 큰수/정밀한 수를 요구하거나 고차원의 다항식을 요구하는 경우에 대해 2차원적 폭포연결(2 dimensiconal cascade connection)을 지원하는 표준칩, 예를들면 제11(a)도에 도시한 바와같이, 4비트의 누산기가 4개(그래픽용으로 3개)직렬연결되어 있는 다항폭포(제5도)를 한칩에 몰아넣는 경우이다. 이런 표준칩은 폭포연결을 통하여 다양한 용량의 시스템이 되는데, 예를들면 4비트 4단위 누산기를 4개 연결하여 1차원 8비트 8차식 연산시스템을 구현할 수 있다. 이와같은 예를 제11(b)도에 도시된 바와 같으며, 캐리(C0, C1, C2, C3)을 다음칩의 입력(D0, D1, D2, D3)으로 연결함으로서 고차 다항식으로 된다.
한편, 본 발명은 하드웨어로 구현시킬 수 있을 뿐만 아니라 이하의 기재내용과 같이 소프트웨어 방법으로도 구현될 수 있다.
즉, 하드웨어 다항폭포와 알고리즘이 같고, 호너의 방법보다 훨씬 빠른 속도로 다항식 순차값 연산을 한다. 물론 소프트웨어는 하드웨어 다항폭포나 다른 어떤 추가적인 하드웨어 없이, 독립적으로 기존 컴퓨터시스템 상에서 수행된다.
본 소프트웨어 역시 1차원의 경우에 대해 설명한 후 다차원으로 확장하기로 한다. 본 다항폭포의 알고리즘을 소프트웨어로 구현하기 위해, 하드웨어 다항폭포의 각 단위 누산기에 해당하는 기억장소를 확보한다. 이는 이하 배열 ACC[i]로 표시한다. 전술한 방법으로 구해진 누산기 i의 초기값을 배열 ACC[i]〈m 차식일 경우 O〈i〈m〉에 넣어 두고, 아래 알고리즘과 같이 각 ACC[i]들을 누산시킨다. 그러면 마지막 기억장소 ACC[m]에 m차 다항식의 순차값이 연산되어 들어간다. 이때 다항식을 입력받거나 배열 ACC[i]를 초기화하는 것은 하드웨어의 경우에서 처럼 여러가지 기법이 있을 수 있으므로, 이들에 대해 보호청구하지 않는다. 여기서 보호청구하는 것은, 배열 ACC[i]에 대해 각 변수를 누산시킴으로써, m차 다항식의 순차를 구하는 소프트웨어 기법이다.
/*다항식, x 초기값, 순차에서의 x변위 입력*/
……
/*다항식에 맞추어 배열 ACC[i]를 초기화.*/
……
/*해당 구간에 대해 순차값을 구해 출력함*/
while(TRUE)
for i:m down to 1 ……Algorithm 1.
ACC[i]:ACC[i]+ACC[I-1];
print(r[ml]):
이와같은 기법을 쓰면, m번의 덧셈으로 순차값을 구하므로, m번의 곱셈 및 m번의 덧셈을 통해 순차값을 구하던 기존기법에 비해 수행속도가 훨씬 빨라진다. 즉, Rr bit의 곱셈은 덧셈 연산보다 r배 느린므로, m번의 덧셈과 m번의 곱셈을 하는 기존 호너(Horner)의 기법은 본 기법보다 r+1배 느리다. 즉 본기법을 33배의 속도향상이 되어 많은 용융들의 실시간 처리가 가능해진다.
표 5은 C연어로 구현된 위 알고리즘의 실시예이다. 이 프로그램의 마지막 3열이위에 보인 알고리즘에 해당하는 부분이다. 프로그램의 앞 부분들은, 다항식을 입력받는 부분과 ACC[i]를 초기화하는 부분들이다.
하드웨어 다항폭포의 경우와는 달리, 소프트웨어 다항폭포는 순차구간의 역방향 순차값을 구하는데 추가적인 부담이 없다. 어느 한방향의 순차값을 구하기 위해 초기화된 배열 ACC[i]들에 대해 그 역방향의 순차값 역시 아래와 같은 알고리즘으로 구한다.
for i:=1 to,
ACC[i]:=ACC[i]-ACC[i-1];
이 알고리즘과 전술한 알고리즘을 합하여, 양방향으로 진행할 수 있는 순차값 연산 소프트웨어의 실시예는 아래와 같다.
/*다항식, x 초기값, 순차에서의 x변위 입력*/
……
/*다항식에 맞추어 배열 ACC[i]를 초기화.*/
……
/*해당 구간에 대해 순차값을 구해 출력함*/
소프트웨어 다항폭포 역시 다차원으로 확장 가능하다. 우선 2차원 확장예를 보면, 역시 하드웨어 2차원 다항폭포에서와 같이 (i,j)의 좌표를 가지는 배열 ACC[i][j]를 기억장소에 확보해 놓고, 아래와 같은 알고리즘을 쓰면 된다. 이 소프트웨어 역시 하드웨어의 연산의 기저에 깔린 알고리즘과 동일한 것을 프로그래밍 언어로 기술한 것과 같다.
이를 실현하기 위한 알고리즘은 다음과 같다.
알고리즘에 쓰인 변수들은 다음과 같다.
ACC[i][j]:2차원 다항폭포.
Axis:현재 다항폭포 연산을 하려는 축.
max[Axis]:축 방향으로의 다항용소의 크기.
Direction[Axis]:축에서의 순차의 방향, 즉 초기화가 의도한 바와같은 방향으로 변하는 경우, 이 변수를 Forward로 주고, 반대방향으로 변하는 경우는 Backward를 주고, 축방향으로의 움직임이 없을 때는 0으로 준다.
프로시춰 get-direction은 각 축에 대한 변위방향을 얻어오는 역할을 하는 외부 프로시줘이다.
《2차원 다항 용소의 알고리즘》
/*다항식, x 초기값, 순차에서의 x변위 입력*/
……
/*다항식에 맞추어 배열 ACC[i][j]를 초기화.*/
……
/*해당 구간에 대해 순차값을 구해 출력함*/
[표 5] 순차값 연산을 행하는 C Program 예.
2차원 이상의 n차원에 대해서는, 알고리즘을 다음과 같이 확장하면 된다. 편의상 각 차원의 축을 수로 표시한다. 즉, 첫번째 축은 1이고, n번째 축은 n이 된다. 이때 각 누산기 ACC i,j,k,…에 해당하는 기억장소 ACC[i][j]…를 확보하고, 아래 실시예와 같은 기법을 쓰면 된다.
이 소프트웨어 역시 하드웨어의 연산의 기저에 깔린 알고리즘과 동일한 것을 프로그래밍 언어로 기술한 것과 같다.
이를 실현하기 위한 알고리즘은 다음과 같다.
알고리즘에 쓰인 변수들은 다음과 같다.
ACC[i][J]:n차원 다항폭포
Axis:현재 다항폭포 연산을 하려는 축.
max[Axis]:축방향으로의 다항용소의 크기.
Direction[Axis]:축에서의 순차의 방향, 즉 초기화가 의도한 바와 같은 방향으로 변하는 경우, 이 변수를 Foward로 주고, 반대방향으로 변하는 경우는 Backward를 주고, 축방향으로의 움직임이 없을 때는 0으로 준다.
프로시줘 get-direction은 각 축에 대한 변위방향을 얻어오는 역할을 하는 외부 프로시줘이다.
〈〈n차원 다항 용소의 알고리즘〉〉
/*다항식, x 초기값, 순차에서의 x변위 입력*//
……
/*다항식에 맞추어 배열 ACC[Ax][Ax]…[Axn]를 초기화.*/
……
/*해당 구간에 대해 순차값을 구해 출력함*/
While(True)
이상과 같이 구성된 본 발명에 의한 시스템에 의하면, 곱셈연산없이 단지 덧셈연산을 n회 수행함으로서 다항식의 순차값을 연산하기 때문에 연산에 소요되는 시간은 극히 짧게 되어 실시간대에 다항식의 순차값이 구하여 질 뿐만 아니라 곱셈연산에 기인되는 에러누적에 의한 에러율이 거의 없게 되며, 다항식의 고차원되더라도 이 고차원 다항식을 하나의 임의 변수만을 선택하여 연산작업을 하도록 함으로서 1차변수의 다항식으로 변환시켜 순차값 연산을 수행할 수 있으므로, 역시 곱셈연산없이 덧셈연산만으로 순차값을 연산할 수 있고, 이로인해 에러율이 거의 없을 뿐만 아니라 순차값 연산속도도 대폭적으로 빨라지게 되어 종래에는 거의 실현될 수 없던 고차원의 순차값 연산이 실시간대로 실현될 수 있다. 또한, 이들은 찾음표법과 같이 각 변수에 대한 함수값을 일이 RAM에 기억시킬 필요가 없기 때문에이에 대한 기억용량이 전혀 필요없게 되므로, 소형의 컴퓨터 뿐만 아니라 간단한 구조의 음성합성기, 모뎀등에는 적용시켜 사용될 수 있으며, 변수값의 변화가 정수뿐만 아니라 소수점 몇자리까지 되더라도 n차원의 그래픽, 수치제어등이 실시간대에 실현이 가능하므로 보다 정밀하고, 정확하게 고차원의 그래픽, 수치제어등을 실현할 수 있게 된다.
또한, 길이 n의 P경로내에서 n차이하 i차 다항식값 순차 역시 구할 수 있다. 즉 출력단으로부터 i번째되는 래지스터들의 초기값을 주고, 이 전단계의 레지스터에는 O을 주면 길이 i인 경로와 같은 행동을 하게 된다. 그리고, 본 발명에 의한 시스템은 이 시스템을 제어하는 중앙시스템(예를들면 컴퓨터)에서 취할 수 있는 순차값 발생도 다양하다. 폴링에 의한 다항식 순차값 발생도 가능하지만 컴퓨터는 본 시스템의 각 래지스터들은 초기화시킨 후에 다른 일을 처리할 수 있다. 따라서 DMA(Direct Memory Access) 및 인터랍트 기법을 적절히 사용하여 제어시스템에 거의 부하를 주지 않고 연산을 할 수 있게 된다.
또한 본 발명에 의한 시스템은, 하드웨어 연산장치에 의한 것보다는 속도가 떨어지지만 소프트웨어로 구현될 수 있다.
결론적으로 말하면, 본 발명이 제어나 컴퓨터에 사용되면, 시스템은 다항식의 순차값을 한 클럭마다 얻게되어 다차원의 그래픽등이 실시간 처리가 가능하며, 이때 컴퓨터는 래지스터들을 초기화하기만 하면 되므로, 다변수 다항식연산에 걸리던 계산부하가 사라지게 되어 전반적인 시스템의 성능 향상이 이루어지게 될 뿐만 아니라 찾음표법과 같이 연산에 필요한 데이터를 저장할 메모리가 필요없게 되어 메모리 용량이 적은 PC등과 같은 소형의 컴퓨터나 또는 모뎀. 음향합성기 및 수치제어용의 마이크로프로세서등을 이용하여도 실시간 처리가 가능하고, 또한 곱셈이 전혀 필요없게 되어 그에 수반되는 에러율도 없으므로 정밀도 및 정확도에 있어서도 획기적인 향상이 이루어진다는 효과가 있다.

Claims (1)

  1. 외부신호에 의하여 입력되는 복수개의 신호중 어느하나의 신호만을 선택하게 구성된 선택회로(MUX)와 전단 및 그단의 출력 신호를 가산하는 가산기와 상기 선택회로(MUX)의 출력을 일시기억시켜 출력시키는 래지스터를 구비하여 구성되는 단위 누산기를 구성하여, X, Y, Z…의 각 변수에 대응하는 다항식의 차수가 Xmax, Ymax, Zmax,…라 할때, (Xmax+1)·(Ymax+1)·(Zmax+1)…개의 상기 단위 누산기를 구비하고, 상기 각 단위 누산기에 좌표값(I,J,K,…)(단, O〈I〈Xzmx, O〈J〈Ymax, O〈K〈Zmax,…)을 부여할때, 상기 각 단위 누산기(I,J,K,L,…)의 복수개의 입력단의 각 선택회로(MUX)에는 복수개의 다른 단위 누산기(I-1,J,K,…),(I,J-1,K…), (I,J,K-1,…)을 접속하되, 접속되는 단위 누산기의 좌표값중에서 0보다 작은 좌표값을 갖는 단위 누산기는 0신호를 접속하고, 상기 각 단위 누산기(I,J,K…)의 출력은 복수개의 다른 단위 누산기(I+1,J,K…),(I,J+1,K…),(I,J,K+…)의 입력단에 접속하되 접속되는 각 누산기중 그 좌표값이 어느하나도 해당치수의 좌표값(Xmax, Ymax, Zmax,…)보다 큰 경우에는 접속되지 않도록 구성됨을 특징으로 하는 디지탈 하드웨어 연산장치.
KR1019900018608A 1990-11-16 1990-11-16 디지탈하드웨어장치 및 디지탈데이터처리 방법 KR930004215B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1019900018608A KR930004215B1 (ko) 1990-11-16 1990-11-16 디지탈하드웨어장치 및 디지탈데이터처리 방법
PCT/KR1991/000029 WO1992009043A1 (en) 1990-11-16 1991-11-16 Method and apparatus for rendering a trimmed patch and an equipotential surface

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019900018608A KR930004215B1 (ko) 1990-11-16 1990-11-16 디지탈하드웨어장치 및 디지탈데이터처리 방법

Publications (2)

Publication Number Publication Date
KR920010418A KR920010418A (ko) 1992-06-26
KR930004215B1 true KR930004215B1 (ko) 1993-05-21

Family

ID=19306147

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019900018608A KR930004215B1 (ko) 1990-11-16 1990-11-16 디지탈하드웨어장치 및 디지탈데이터처리 방법

Country Status (2)

Country Link
KR (1) KR930004215B1 (ko)
WO (1) WO1992009043A1 (ko)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4797882A (en) * 1985-10-02 1989-01-10 American Telephone And Telegraph Company, At&T Bell Laboratories Mesh-based switching network
US4999789A (en) * 1987-02-05 1991-03-12 Hewlett-Packard Co. Method and apparatus for trimming B-spline descriptions of patches in a high performance three dimensional graphics system
GB2204767B (en) * 1987-05-08 1991-11-13 Sun Microsystems Inc Method and apparatus for adaptive forward differencing in the rendering of curves and surfaces

Also Published As

Publication number Publication date
KR920010418A (ko) 1992-06-26
WO1992009043A1 (en) 1992-05-29

Similar Documents

Publication Publication Date Title
US5973705A (en) Geometry pipeline implemented on a SIMD machine
US5515308A (en) Floating point arithmetic unit using modified Newton-Raphson technique for division and square root
US4635292A (en) Image processor
US3922536A (en) Multionomial processor system
JPH07117948B2 (ja) コンピユータ装置
JPH0522271B2 (ko)
de Lassus Saint-Geniès et al. Exact lookup tables for the evaluation of trigonometric and hyperbolic functions
US3813529A (en) Digital high order interpolator
KR930004215B1 (ko) 디지탈하드웨어장치 및 디지탈데이터처리 방법
WO1992000563A1 (en) A number theory mapping generator for addressing matrix structures
US3167645A (en) Method and apparatus for performing arithmetical operations in the system of residual classes
US6389443B1 (en) Method and apparatus for an efficient square-root computation
US5261034A (en) Graphics microcomputer for generating geometric figures
CA2011825C (en) Method and apparatus for generating display figures with three degrees of freedom
Frick et al. Epsilon-Ritz method for solving optimal control problems: Useful parallel solution method
Sivertsen Virtual testing of mechanical systems: theories and techniques
De Vita et al. Low-Power Integrated Circuit for Orientation Independent Acquisitions from Smart Accelerometers
EP1018707A2 (en) A system and method for improved rendering of graphical rotations
Roditis et al. Parallel multisplitting, block Jacobi type solutions of linear systems of equations
Burleson et al. VLSI design of inner-product computers using distributed arithmetic
JP2605792B2 (ja) 演算処理装置
Kammer The SUPRENUM vector floating-point unit
KR20240022401A (ko) 동형 암호 연산 가속기 및 그것을 포함하는 암호 시스템
KR100228576B1 (ko) 어레이형 고속 좌표 회전 디지틀 컴퓨터 회로
JPH02281385A (ja) 曲線の直線近似化装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
G160 Decision to publish patent application
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee