KR101861550B1 - 다항식 연산을 위한 부분적 발생 장치 및 방법 - Google Patents

다항식 연산을 위한 부분적 발생 장치 및 방법 Download PDF

Info

Publication number
KR101861550B1
KR101861550B1 KR1020120021304A KR20120021304A KR101861550B1 KR 101861550 B1 KR101861550 B1 KR 101861550B1 KR 1020120021304 A KR1020120021304 A KR 1020120021304A KR 20120021304 A KR20120021304 A KR 20120021304A KR 101861550 B1 KR101861550 B1 KR 101861550B1
Authority
KR
South Korea
Prior art keywords
value
encoder
bit
values
carry
Prior art date
Application number
KR1020120021304A
Other languages
English (en)
Other versions
KR20130099640A (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 KR1020120021304A priority Critical patent/KR101861550B1/ko
Priority to US13/588,250 priority patent/US9354843B2/en
Priority to EP13156769.5A priority patent/EP2634689B1/en
Priority to JP2013039962A priority patent/JP6309196B2/ja
Priority to CN201310063219.1A priority patent/CN103294445B/zh
Publication of KR20130099640A publication Critical patent/KR20130099640A/ko
Application granted granted Critical
Publication of KR101861550B1 publication Critical patent/KR101861550B1/ko

Links

Images

Classifications

    • 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
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/533Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
    • G06F7/5334Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product
    • G06F7/5336Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product overlapped, i.e. with successive bitgroups sharing one or more bits being recoded into signed digit representation, e.g. using the Modified Booth Algorithm
    • G06F7/5338Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product overlapped, i.e. with successive bitgroups sharing one or more bits being recoded into signed digit representation, e.g. using the Modified Booth Algorithm each bitgroup having two new bits, e.g. 2nd order MBA
    • 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
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing

Abstract

일 양상에 따른 다항식 연산을 위한 부분적 생성 장치는, 승수(multiplier)와 관련된 두 개의 입력에 따라 서로 배타적인 세 개의 값 중 어느 하나를 출력하는 다수의 제 1 인코더, 기준 비트 위치에 대응되는 제 1 인코더의 출력, 상위 비트 위치에 대응되는 제 1 인코더의 출력, 하위 비트 위치에 대응되는 제 1 인코더의 출력, 및 피승수(multiplicand)에 따라 두 개의 부분적(partial product) 후보값과 캐리 예측값을 생성하는 다수의 제 2 인코더, 및 하위 비트 위치에 대응되는 제 2 인코더의 캐리 예측값에 따라 두 개의 부분적 후보값 중에서 어느 하나를 선택하는 다수의 멀티플렉서를 포함할 수 있다.

Description

다항식 연산을 위한 부분적 발생 장치 및 방법{APPARATUS AND METHOD FOR GENERATING PARTIAL PRODUCT FOR POLYNOMIAL OPERATION}
다항식 연산을 위한 디지털 처리 기술과 관련된다.
최근의 이미지 프로세싱 기기 또는 다양한 멀티미디어 기기들은 덧셈 뺄셈, 곱셈, 나눗셈과 같은 기본적인 연산들 외에 삼각함수, 로그함수, 및 지수함수 등과 같은 초월함수의 연산을 필요로 한다. 이러한 복잡한 함수들은 소프트웨어의 컴파일 단계에서 덧셈, 곱셈 등의 기본 연산으로 분해하여 처리하도록 지원될 수도 있지만, 이 경우 프로세서 내부에 전용의 처리 유닛을 장착하는 방식에 비하여 처리 시간이 매우 길다. 영상 정보는 처리 시간이 성능에 중요한 지표이므로 일반적으로 전용의 처리 유닛을 장착한 프로세서들이 영상 정보 처리시의 초월함수 연산에 활용되고 있다.
디지털 기기 내에서 이러한 초월 함수가 처리되는 방식으로는 주로 곱셈과 덧셈 연산을 이용한 방법이 사용되고 있다. 즉 초월함수 연산은 주로 다항식 전개에 의해서 결과를 구한다. 이때 다항식이란, 상수와 몇몇 변수들의 곱으로 이루어진 단항식들의 합으로 이루어진다. 이는 보다 기본적인 연산들의 구성으로 생각해 보면 일련의 연속된 곱셈들과 이들 결과의 덧셈으로 구성된다. 이중 곱셈 연산은 기본적인 산술 연산이면서, 또한 긴 처리 시간을 요한다. 따라서 이러한 곱셈 연산의 연산 시간을 줄인다면, 이는 전체적인 다항식 연산 시간을 줄일 수 있게 되어 보다 고속의 디지털 기기를 구현할 수 있다.
연산 시간 증가없이 어떠한 비트 길이의 입력에 대해서도 일정한 처리 시간을 가지며, 또한 선행 곱셈 연산에서 발생한 2개의 부분적과 피승수(multiplicand)를 이용하여 Booth Encoding 결과 및 이에 따른 부분적 생성까지 완료하는 구조가 제시된다.
일 양상에 따른 다항식 연산을 위한 부분적 생성 장치는, 승수(multiplier)와 관련된 두 개의 입력에 따라 서로 배타적인 세 개의 값 중 어느 하나를 출력하는 다수의 제 1 인코더, 기준 비트 위치에 대응되는 제 1 인코더의 출력, 상위 비트 위치에 대응되는 제 1 인코더의 출력, 하위 비트 위치에 대응되는 제 1 인코더의 출력, 및 피승수(multiplicand)에 따라 두 개의 부분적(partial product) 후보값과 캐리 예측값을 생성하는 다수의 제 2 인코더, 및 하위 비트 위치에 대응되는 제 2 인코더의 캐리 예측값에 따라 두 개의 부분적 후보값 중에서 어느 하나를 선택하는 다수의 멀티플렉서를 포함할 수 있다.
또한 일 양상에 따른 다항식 연산을 위한 부분적 생성 방법은, 승수(multiplier)와 관련된 두 개의 입력에 따라 서로 배타적인 값으로 정의되는 P(Propagation), G(Generation), 및 T(Termination) 중 어느 하나의 값을 PGT 값으로 출력하는 단계, 입력의 비트값에 대한 기준 비트 위치, 상위 비트 위치, 및 하위 비트 위치의 PGT값들에 따라 두 개의 인코딩 후보값과 캐리 예측값을 생성하고, 두 개의 인코딩 후보값과 피승수(multiplicand)를 각각 곱해서 두 개의 부분적(partial product) 후보값을 생성하는 단계, 및 하위 비트 위치의 캐리 예측값에 따라 두 개의 부분적 후보값 중에서 어느 하나를 선택하는 단계를 포함할 수 있다.
개시된 내용에 의하면, 각각의 부분적 후보값과 캐리 예측값이 기준 비트 위치와 인접한 PGT값에만 의존적이고 상호 독립적, 병렬적으로 구해질 수 있기 때문에 입력값의 비트 길이가 증가하더라도 캐리 전달로 인한 지연에 영향을 받지 않을 수 있다.
도 1은 일 실시예에 따른 다항식 연산을 위한 부분적 생성 장치의 구성을 도시한다.
도 2는 일 실시예에 따른 제 1 인코더의 구성을 도시한다.
도 3은 일 실시예에 따른 제 2 인코더의 구성을 도시한다.
도 4는 다른 실시예에 따른 제 2 인코더의 구성을 도시한다.
도 5는 일 실시예에 따른 멀티플렉서의 구성을 도시한다.
도 6은 일 실시예에 따른 다항식 연산을 위한 부분적 생성 방법의 흐름을 도시한다.
이하, 첨부된 도면을 참조하여 본 발명의 실시를 위한 구체적인 예를 상세히 설명한다.
도 1은 일 실시예에 따른 다항식 연산을 위한 부분적 생성 장치의 구성을 도시하고, 도 2는 일 실시예에 따른 제 1 인코더의 구성을, 도 3 및 도 4는 일 실시예에 따른 제 2 인코더의 구성을, 도 5는 일 실시예에 따른 멀티플렉서의 구성을 도시한다.
도 1을 참조하면, 부분적 생성 장치는 제 1 인코더(101), 제 2 인코더(102), 및 멀티플렉서(103)를 포함한다.
제 1 인코더(101)는 승수(multiplier)와 관련된 두 개의 입력을 수신한다. 승수가 'X'라고 할 때, 제 1 인코더(101)는 'X'와 관련된 'A'와 'B'를 수신할 수 있다. 각각의 'A'와 'B'는 일련의 곱셈 과정에서 생성되는 선행 부분적(precedence partial product)이 될 수 있다. 예컨대, 'X'는 'A'와 'B'의 합으로 표현될 될 수 있다.
제 1 인코더(101)는 입력의 각 비트 위치에 형성될 수 있다. 만약, 입력이 6비트의 길이를 갖는 두 개의 선행 부분적 'A' 및 'B'인 경우, 제 1 인코더(101)는 각 비트 위치별로 6개가 형성될 수 있다. 예컨대, n번째-제 1 인코더(101a)의 입력은 'A[2]'와 'B[2]'가 될 수 있다. 'A[2]'는 승수 'X'와 관련된 어느 하나의 선행 부분적의 3번째 비트값이 될 수 있고, 'B[2]'는 승수 'X'와 관련된 다른 하나의 선행 부분적의 3번째 비트값이 될 수 있다. 이해를 돕기 위하여, n번째 비트값에 대응되는 위치를 '기준 비트 위치'라 칭하기로 한다.
제 1 인코더(101)는 수신된 두 개의 입력에 따라 서로 배타적인 세 개의 값 중 어느 하나를 출력한다. 예컨대, 제 1 인코더(101)는 P(Propagation), G(Generation), 및 T(Termination) 중 어느 하나의 값을 PGT값으로 출력하는 것이 가능하다. PGT값은 각 비트 위치에서의 캐리 발생과 관련된 값이 될 수 있다. P는 하위 비트에서 캐리가 발생하면 기준 비트에서도 캐리가 발생하는 상태를 나타내고, G는 기준 비트에서 캐리가 발생한 상태를 나타내고, T는 하위 비트에서 캐리가 발생하더라도 기준 비트에서 캐리가 발생하지 않는 상태를 나타낼 수 있다. 예컨대, n번째-제 1 인코더(101a)는 비트 입력인 'A[2]'와 'B[2]'에 따라 P(예컨대, '100'), G(예컨대, '010'), 또는 T(예컨대, '001') 중 어느 하나의 값을 선택적으로 출력할 수 있다. 여기서, PGT값이 3비트의 데이터인 것으로 설명하였으나, 이것은 이해를 돕기 위한 예시로, 그 밖에도 다양한 변형이 가능함은 물론이다.
제 2 인코더(102)는 인접한 제 1 인코더(101)의 출력들을 수신한다. 예컨대, n번째-제 2 인코더(102a)는 기준 비트 위치에 대응되는 n번째-제 1 인코더(101a)의 출력, 상위 비트 위치에 대응되는 n+1번째-제 1 인코더(101b)의 출력, 및 하위 비트 위치에 대응되는 n-1번째-제 1 인코더(101c)의 출력을 수신할 수 있다.
제 2 인코더(102)는 피승수(multiplicand)를 수신한다. 만약 피승수가 'Y'라면 제 2 인코더(102)는 'Yn' 및 'Yn -1'을 수신할 수 있다. 여기서 Yn은 원래의 피승수를, Yn -1은 한비트 쉬프트된 피승수를 나타낼 수 있다.
제 2 인코더(102)는 인접한 제 1 인코더(101)의 출력들과 피승수에 따라 두 개의 부분적(partial product) 후보값과 캐리 예측값(carry estimation)을 생성한다. 예컨대, n번째-제 2 인코더(102a)는 n번째-제 1 인코더(101a)의 출력, n+1번째-제 1 인코더(101b)의 출력, 및 n-1번째-제 1 인코더(101c)의 출력을 수신하고, Radix-4 Booth 인코딩 알고리즘에 기초하여 두 개의 인코딩 후보값과 캐리 예측값 'e1'을 생성한 후, 두 개의 인코딩 후보값과 피승수를 각각 곱하여 두 개의 부분적 후보값 'pp1_0'과 'pp1_1'을 생성할 수 있다. 두 개의 부분적 후보값 중 어느 하나는 하위 비트에서 캐리가 발생하였을 때의 부분적이 될 수 있고, 다른 하나는 하위 비트에서 캐리가 발생하지 아니하였을 때의 부분적이 될 수 있다.
제 2 인코더(102)는 Radix-4 Booth 잉여 인코딩을 위해 짝수 비트 위치에 형성될 수 있다. 예컨대, 제 2 인코더(102)는 n-2번째, n번째, n+2번째의 비트 위치에 각각 형성될 수 있다.
멀티플렉서(103)는 기준 비트 위치에 대응되는 제 2 인코더(102)의 출력과 하위 비트 위치에 대응되는 제 2 인코더(102)의 캐리 예측값을 수신한다. 예컨대, n번째-멀티플렉서(103a)는 n번째-제 2 인코더(102a)의 부분적 후보값 'pp1_0' 및 'pp1_1'과 n-2번째-제 2 인코더(102b)의 캐리 예측값 'e0'을 수신할 수 있다.
멀티플렉서(103)는 하위 비트 위치의 제 2 인코더(102)의 캐리 예측값에 따라 기준 비트 위치의 제 2 인코더(102)의 출력 중 어느 하나를 선택한다. 예컨대, n번째-멀티플렉서(103a)는 n번째-제 2 인코더(102a)의 부분적 후보값 'pp1_0' 및 'pp1_1' 중 어느 하나를 n-2번째-제 2 인코더(102b)의 캐리 예측값 'e0'에 따라 선택하는 것이 가능하다.
일 양상에 따라, 제 1 인코더(101)의 출력을 PGT값이라 할 때, 제 1 인코더(200)는 두 입력 'A'와 'B'에 따라 'P', 'G', 및 'T' 중 어느 하나를 출력한다. 이 때, 두 입력과 PGT값의 관계는 다음과 같이 정의될 수 있다.
<수학식 1>
Pn = An XOR Bn
Gn = An AND Bn
Tn = ~(An OR Bn)
위 수학식 1을 표로 나타내면 다음과 같다.
입력(A, B) 출력 PGT
0 0 0 0 1 T
0 1 1 0 0 P
1 0 1 0 0
1 1 0 1 0 G
수학식 1 및 표 1과 같이, PGT값은 두 개의 입력에 대해 상호 배타적인 세 가지 값 중에서 어느 하나의 값만 갖는 것을 알 수 있다. 수학식 1 및 표 1과 같이 동작하는 제 1 인코더(101)는 다양한 방식을 통해 구현될 수 있으며, 그 일 예는 도 2와 같다. 예컨대, 도 2를 참조하면, 제 1 인코더(101)는 XOR, AND, NOR 논리 게이트 등을 포함할 수 있다. 다만 도 2에서 도시된 구성은 이해를 돕기 위한 하나의 예에 불과한 것으로 본 실시예에 따른 제 1 인코더(200)의 구성이 여기에 한정되는 것은 아니다.
추가적 양상에 따라, 제 2 인코더(102)는 인코딩 후보값을 생성하는 부분, 캐리 예측값을 생성하는 부분, 및 부분적 후보값을 생성하는 부분을 포함할 수 있다. 예컨대, 도 3을 참조하면, 제 2 인코더(102)는 인코딩 후보값 생성부(301), 캐리 예측값 생성부(302), 및 부분적 후보값 생성부(303)를 포함할 수 있다.
인코딩 후보값 생성부(301) 및 캐리 예측값 생성부(302)는 인접한 비트 위치의 제 1 인코더(101a, 101b, 101c, 도 1 참조)의 PGT값에 따라 다음과 표와 같은 인코딩을 수행한다.
P GT B E0 B E1 e P GT B E0 B E1 e P GT B E0 B E1 e
PPP  0  0 0 GPP -2 -2 1 TPP -2 -2 1
PPG  0  1 1 GPG -2 -1 1 TPG -2 -1 1
PPT -1  0 0 GPT  1  2 0 TPT  1  2 0
PGP  1  1 1 GGP -1 -1 1 TGP -1 -1 1
PGG  1  2 1 GGG -1  0 1 TGG -1  0 1
PGT  0  1 1 GGT -2 -1 1 TGT -2 -1 1
PTP -1 -1 0 GTP  1  1 0 TTP  1  1 0
PTG -1  0 0 GTG  1  2 0 TTG  1  2 0
PTT -2 -1 0 GTT  0  1 0 TTT  0  1 0
표 2에서, PGT 필드의 값이 'PPP'라면 이것은 각 비트 자리에 PGT값이 모두 'P'로 출력된 경우를 나타낼 수 있다. 'BE0' 및 'BE1'은 두 개의 인코딩 후보값을 나타내고, 'e'는 캐리 예측값을 나타낸다. 즉 표 2와 같이 인코딩 후보값 생성부(301)는 PGT값에 따라 -2, -1, 0, 1, 2 중 어느 하나의 값을 갖는 두 개의 인코딩 후보값을 출력하고, 캐리 예측값 생성부(302)는 0, 1 중 어느 하나의 값을 갖는 캐리 예측값을 출력하는 것이 가능하다.
그리고 부분적 후보값 생성부(303)는 두 개의 인코딩 후보값 'BE0', 'BE1'과 피승수 'Y'를 이용하여 두 개의 부분적 후보값 'PP0' 및 'PP1'을 생성한다.
표 2와 같이 동작하는 제 2 인코더(102)는 다양한 방식을 통해 구현될 수 있다. 제 2 인코더(102)의 구현 방법을 일 예로서 설명하면 다음과 같다.
표 2와 같은 인코딩 결과를 구하는 것은 최종적으로 부분적을 얻기 위함이다. 따라서 인코딩 값에 따라 다음의 세 가지 명령을 정의하고 이를 이용하여 부분적을 생성하는 설계 기법이 사용될 수 있다.
* Shift: 인코딩 값 +2와 -2에 대응되며, 입력 값을 1 비트 위치 만큼 이동
* Zero: 인코딩 값 0에 대응되며, 0을 출력
* Negation: 인코딩 값 -1, -2에 대응되며, 입력에 보수 값을 취함
이 세 가지 명령과 인코딩 값의 발생 조건을 간략하게 나타내면 다음 표와 같다.
Encoding Negation Shift Zero Partial Product
2 X 1 1 Yn -1
1 0 0 X Yn
0 X 1 0 0
-1 1 0 X ~Yn
-2 1 1 1 ~Yn -1
위 표는 부분적을 생성하는 논리 구조에서 사용될 각 Negation, Zero, Shift의 값을 정의한 것이다. 여기서 각 값은 0과 1의 논리 상태를 가지며 X는 "don't-care" 조건으로 어떠한 값을 가져도 상관없다. 따라서 위 표와 같은 논리 값에서 X의 상태를 적절히 조정하면 PGT값으로부터 각 Negation, Shift, Zero 를 구하는 논리식을 보다 간단히 할 수 있다. 이에 대한 한가지 실시 예는 다음의 표와  같다.
PGT Shift0 Shift1 PGT Shift0 Shift1 PGT Shift0 Shift1
PPP 1 1 GPP 1 1 TPP 1 1
PPG 1 0 GPG 1 0 TPG 1 0
PPT 0 1 GPT 0 1 TPT 0 1
PGP 0 0 GGP 0 0 TGP 0 0
PGG 0 1 GGG 0 1 TGG 0 1
PGT 1 0 GGT 1 0 TGT 1 0
PTP 0 0 GTP 0 0 TTP 0 0
PTG 0 1 GTG 0 1 TTG 0 1
PTT 1 0 GTT 1 0 TTT 1 0
PGT Zero0 Zero1 PGT Zero0 Zero1 PGT Zero0 Zero1
PPP 0 0 GPP 1 1 TPP 1 1
PPG X→0 X→0 GPG 1 X→1 TPG 1 X→1
PPT X→0 0 GPT X→1 1 TPT X→1 1
PGP X→0 X→1 GGP X→1 X→0 TGP X→1 X→0
PGG 0 1 GGG X→1 0 TGG X→1 0
PGT 0 X→1 GGT 1 X→0 TGT 1 X→0
PTP X→1 X→0 GTP X→0 X→1 TTP X→0 X→1
PTG X→1 0 GTG X→0 1 TTG X→0 1
PTT X→1 X→0 GTT 0 X→1 TTT 0 X→1
PGT Neg0 Neg1 PGT Neg0 Neg1 PGT Neg0 Neg1
PPP X→0 X→0 GPP 1 1 TPP 1 1
PPG X→0 0 GPG 1 1 TPG 1 1
PPT 1 X→1 GPT 0 0 TPT 0 0
PGP 0 0 GGP 1 1 TGP 1 1
PGG 0 0 GGG 1 X→1 TGG 1 X→1
PGT X→0 0 GGT 1 1 TGT 1 1
PTP 1 1 GTP 0 0 TTP 0 0
PTG 1 X→1 GTG 0 0 TTG 0 0
PTT 1 1 GTT X→0 0 TTT X→0 0
한편, PGT 값의 각 P, G, T는 상호 배타적으로 세 가지 중 단 하나의 값만 Active 상태이므로 각 명령은 다음과 같이 간단한 논리식으로 표현될 수 있다.
<수학식 2>
Shiftno - carry = Pn XOR Tn -1
Shiftcarry = Pn XOR Gn -1
Zerono - carry = ~Pn +1 XOR Tn
Zerocarry = ~Pn +1 XOR Gn
Negationno - carry = Pn +1 XOR (Gn OR (Pn AND ~Tn -1))
Negationcarry = Pn +1 XOR (Gn OR (Pn AND ~Tn -1))
수학식 2 및 표 2 내지 6과 같이 동작하는 제 2 인코더(102)는 다양한 방식을 통해 구현될 수 있으며, 그 일 예는 도 4와 같다. 예컨대, 도 4를 참조하면, 제 2 인코더(102)는 XOR, AND, NOR 논리 게이트 등을 토대로, 두 개의 부분적 후보값을 생성하는 부분(401)과 캐리 예측값을 생성하는 부분(402)을 포함할 수 있다. 다만 도 4에서 도시된 구성은 이해를 돕기 위한 하나의 예에 불과한 것으로 본 실시예에 따른 제 2 인코더(102)의 구성이 여기에 한정되는 것은 아니다.
한편, 본 실시예에 따른 멀티플렉서(103)의 구현 예는 도 5와 같다. 도 5를 참조하면, 본 실시예에 따른 멀티플렉서(103)는 기준 비트 위치의 두 개의 부분적 후보값 'PP0', 'PP1'과 하위 비트 위치의 캐리 예측값 'en -2'를 수신하고, 캐리 예측값 'en -2'에 따라 두 개의 부분적 후보값 'PP0' 및 'PP1' 중 어느 하나를 선택하여 최종 부분적 'PPn'으로 출력하는 것이 가능하다. 다만 도 5의 구조 역시 하나의 예에 불과한 것으로 그 밖에도 다양한 논리 구조가 채택될 수 있다.
도 6은 일 실시예에 따른 다항식을 위한 부분적 생성 방법을 도시한다. 도 1 및 도 6을 참조하여 본 실시예에 따른 부분적 생성 방법을 설명하면 다음과 같다.
먼저 PGT값이 생성된다(601). 예컨대, 제 1 인코더(101)가, 표 1 및 수학식 1과 같이, 승수와 관련된 두 개의 입력에 따라 서로 배타적인 값으로 정의되는 P(Propagation), G(Generation), 및 T(Termination) 중 어느 하나의 값을 출력하는 것이 가능하다.
그리고 부분적 후보값 및 캐리 예측값이 생성된다(602). 예컨대, 제 2 인코더(102)가, 표 2 내지 4 및 수학식 2와 같이, 입력의 비트값에 대한 기준 비트 위치, 상위 비트 위치, 및 하위 비트 위치의 PGT값들에 따라 두 개의 인코딩 후보값과 캐리 예측값을 생성하고, 두 개의 인코딩 후보값과 피승수를 각각 곱해서 두 개의 부분적 후보값을 생성하는 것이 가능하다.
그리고 부분적 후보값 중 어느 하나가 선택된다(603). 예컨대, 멀티플렉서(103)가 하위 비트 위치의 캐리 예측값에 따라 두 개의 부분적 후보값 중에서 어느 하나를 선택하는 것이 가능하다.
이상에서 살펴본 것과 같이, 개시된 실시예에 의하면, 각각의 부분적 후보값과 캐리 예측값이 기준 비트 위치와 인접한 PGT값에만 의존적이고 상호 독립적, 병렬적으로 구해질 수 있기 때문에 입력값의 비트 길이가 증가하더라도 캐리 전달로 인한 지연을 줄일 수가 있다. 특히 고속의 처리를 위해 파이프라인 스테이지가 증가하게 될 때, 분해하기 어려운 긴 처리 시간을 필요로 하는 CPA(carry propagation adder)에 비하여 일정하고 작은 그리고 논리적으로 분할 가능한 구조로 구성되어 있으므로 더 유리하게 작용할 수 있다. 나아가 제시된 구조는 입력 비트의 길이가 커지더라도 일정한 처리 시간만을 요구하므로 더 큰 곱셈기에 적용할수록 지연 감소 효과는 더 증가할 수 있다.
한편, 본 발명의 실시 예들은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터가 읽을 수 있는 코드로 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다.
컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현하는 것을 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 발명을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술 분야의 프로그래머들에 의하여 용이하게 추론될 수 있다.
나아가 전술한 실시 예들은 본 발명을 예시적으로 설명하기 위한 것으로 본 발명의 권리범위가 특정 실시 예에 한정되지 아니할 것이다.
101: 제 1 인코더
102: 제 2 인코더
103: 멀티플렉서

Claims (13)

  1. 승수(multiplier)와 관련된 두 개의 입력에 따라 서로 배타적인 세 개의 값 중 어느 하나를 출력하는 다수의 제 1 인코더;
    기준 비트 위치에 대응되는 제 1 인코더의 출력, 상위 비트 위치에 대응되는 제 1 인코더의 출력, 하위 비트 위치에 대응되는 제 1 인코더의 출력, 및 피승수(multiplicand)에 따라 두 개의 부분적(partial product) 후보값과 캐리 예측값을 생성하는 다수의 제 2 인코더; 및
    하위 비트 위치에 대응되는 제 2 인코더의 캐리 예측값에 따라 상기 두 개의 부분적 후보값 중에서 어느 하나를 선택하는 다수의 멀티플렉서; 를 포함하는 다항식 연산을 위한 부분적 생성 장치.
  2. 제 1 항에 있어서, 상기 각각의 제 1 인코더는
    일련의 곱셈 과정에서 생성되는 선행 부분적(precedence partial product)의 비트값을 상기 승수와 관련된 두 개의 입력으로 수신하는 것을 특징으로 하는 다항식 연산을 위한 부분적 생성 장치.
  3. 제 1 항에 있어서, 상기 각각의 제 1 인코더는
    상기 입력의 비트값에 대한 각 비트 위치에 형성되는 것을 특징으로 하는 다항식 연산을 위한 부분적 생성 장치.
  4. 제 1 항에 있어서, 상기 각각의 제 1 인코더는
    P(Propagation), G(Generation), 및 T(Termination) 중 어느 하나의 값을 출력하는 PGT 인코더인 것을 특징으로 하는 다항식 연산을 위한 부분적 생성 장치.
  5. 제 4 항에 있어서,
    상기 P는 하위 비트에서 캐리가 발생하면 기준 비트에서도 캐리가 발생하는 상태를 나타내고,
    상기 G는 기준 비트에서 캐리가 발생한 상태를 나타내고,
    상기 T는 하위 비트에서 캐리가 발생하더라도 기준 비트에서 캐리가 발생하지 않는 상태를 나타내는 것을 특징으로 하는 다항식 연산을 위한 부분적 생성 장치.
  6. 제 1 항에 있어서, 상기 각각의 제 2 인코더는
    기준 비트 위치에 대응되는 제 1 인코더의 출력, 상위 비트 위치에 대응되는 제 1 인코더의 출력, 하위 비트 위치에 대응되는 제 1 인코더의 출력에 따라 두 개의 인코딩 후보값과 상기 캐리 예측값을 생성하고,
    상기 두 개의 인코딩 후보값과 상기 피승수(multiplicand)를 각각 곱하여 상기 두 개의 부분적(partial product) 후보값을 출력하는 것을 특징으로 하는 다항식 연산을 위한 부분적 생성 장치.
  7. 제 6 항에 있어서, 상기 각각의 제 2 인코더는
    하위 비트에서 캐리가 발생할 경우의 인코딩 후보값인 제 1 인코딩 후보값과 하위 비트에서 캐리가 발생하지 않을 경우의 인코딩 후보값인 제 2 인코딩 후보값을 생성하는 것을 특징으로 하는 다항식 연산을 위한 부분적 생성 장치.
  8. 제 6 항에 있어서, 상기 각각의 제 2 인코더는
    Radix-4 Booth 인코딩 알고리즘에 기초하여 인코딩을 수행하는 것을 특징으로 하는 다항식 연산을 위한 부분적 생성 장치.
  9. 제 6 항에 있어서, 상기 각각의 제 2 인코더는
    상기 입력의 비트값에 대한 각 비트 위치 중에서 짝수 비트 위치에 형성되는 것을 특징으로 하는 다항식 연산을 위한 부분적 생성 장치.
  10. 승수(multiplier)와 관련된 두 개의 입력에 따라 서로 배타적인 값으로 정의되는 P(Propagation), G(Generation), 및 T(Termination) 중 어느 하나의 값을 PGT 값으로 출력하는 단계;
    상기 입력의 비트값에 대한 기준 비트 위치, 상위 비트 위치, 및 하위 비트 위치의 PGT값들에 따라 두 개의 인코딩 후보값과 캐리 예측값을 생성하고, 상기 두 개의 인코딩 후보값과 피승수(multiplicand)를 각각 곱해서 두 개의 부분적(partial product) 후보값을 생성하는 단계; 및
    하위 비트 위치의 캐리 예측값에 따라 상기 두 개의 부분적 후보값 중에서 어느 하나를 선택하는 단계; 를 포함하는 다항식 연산을 위한 부분적 생성 방법.
  11. 제 10 항에 있어서,
    상기 P는 하위 비트에서 캐리가 발생하면 기준 비트에서도 캐리가 발생하는 상태를 나타내고,
    상기 G는 기준 비트에서 캐리가 발생한 상태를 나타내고,
    상기 T는 하위 비트에서 캐리가 발생하더라도 기준 비트에서 캐리가 발생하지 않는 상태를 나타내는 것을 특징으로 하는 다항식 연산을 위한 부분적 생성 방법.
  12. 제 10 항에 있어서, 상기 두 개의 입력은
    일련의 곱셈 과정에서 생성되는 선행 부분적(precedence partial product)의 비트값인 것을 특징으로 하는 다항식 연산을 위한 부분적 생성 방법.
  13. 제 10 항에 있어서, 상기 두 개의 인코딩 후보값은
    하위 비트에서 캐리가 발생할 경우의 인코딩 후보값인 제 1 인코딩 후보값과 하위 비트에서 캐리가 발생하지 않을 경우의 인코딩 후보값인 제 2 인코딩 후보값인 것을 특징으로 하는 다항식 연산을 위한 부분적 생성 방법.
KR1020120021304A 2012-02-29 2012-02-29 다항식 연산을 위한 부분적 발생 장치 및 방법 KR101861550B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020120021304A KR101861550B1 (ko) 2012-02-29 2012-02-29 다항식 연산을 위한 부분적 발생 장치 및 방법
US13/588,250 US9354843B2 (en) 2012-02-29 2012-08-17 Apparatus and method for generating partial product for polynomial operation
EP13156769.5A EP2634689B1 (en) 2012-02-29 2013-02-26 Apparatus and method for generating partial product for polynomial operation
JP2013039962A JP6309196B2 (ja) 2012-02-29 2013-02-28 多項式演算のための部分積発生装置及び方法
CN201310063219.1A CN103294445B (zh) 2012-02-29 2013-02-28 产生用于多项式运算的部分乘积的设备和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120021304A KR101861550B1 (ko) 2012-02-29 2012-02-29 다항식 연산을 위한 부분적 발생 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20130099640A KR20130099640A (ko) 2013-09-06
KR101861550B1 true KR101861550B1 (ko) 2018-05-29

Family

ID=47757428

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120021304A KR101861550B1 (ko) 2012-02-29 2012-02-29 다항식 연산을 위한 부분적 발생 장치 및 방법

Country Status (5)

Country Link
US (1) US9354843B2 (ko)
EP (1) EP2634689B1 (ko)
JP (1) JP6309196B2 (ko)
KR (1) KR101861550B1 (ko)
CN (1) CN103294445B (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160379706A1 (en) * 2013-12-27 2016-12-29 Intel Corporation Dual voltage asymmetric memory cell
KR102594656B1 (ko) * 2016-11-25 2023-10-26 삼성전자주식회사 보안 프로세서, 이를 포함하는 어플리케이션 프로세서 및 보안 프로세서의 동작 방법
US10599606B2 (en) 2018-03-29 2020-03-24 Nvidia Corp. 424 encoding schemes to reduce coupling and power noise on PAM-4 data buses
US11159153B2 (en) 2018-03-29 2021-10-26 Nvidia Corp. Data bus inversion (DBI) on pulse amplitude modulation (PAM) and reducing coupling and power noise on PAM-4 I/O
US11966348B2 (en) 2019-01-28 2024-04-23 Nvidia Corp. Reducing coupling and power noise on PAM-4 I/O interface
US10657094B2 (en) 2018-03-29 2020-05-19 Nvidia Corp. Relaxed 433 encoding to reduce coupling and power noise on PAM-4 data buses
US10466968B1 (en) * 2018-07-12 2019-11-05 Nvidia Corp. Radix-4 multiplier partial product generation with improved area and power
US10623200B2 (en) 2018-07-20 2020-04-14 Nvidia Corp. Bus-invert coding with restricted hamming distance for multi-byte interfaces

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5446651A (en) * 1993-11-30 1995-08-29 Texas Instruments Incorporated Split multiply operation
KR20050081407A (ko) * 2004-02-13 2005-08-19 삼성전자주식회사 부스 알고리즘을 이용한 곱셈기의 인코더
KR100935858B1 (ko) * 2007-12-05 2010-01-07 한국전자통신연구원 재구성 가능한 산술연산기 및 이를 구비한 고효율 프로세서
JP4519807B2 (ja) * 2006-06-05 2010-08-04 ルネサスエレクトロニクス株式会社 乗算器及びフィルタ処理装置
JP4790791B2 (ja) * 2006-02-15 2011-10-12 パナソニック株式会社 乗算器、デジタルフィルタ、信号処理装置、合成装置、合成プログラム、および合成プログラム記録媒体

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5150322A (en) * 1990-06-05 1992-09-22 Vlsi Technology, Inc. Mixed-radix serial/parallel multipliers
US5245564A (en) 1991-05-10 1993-09-14 Weitek Corporation Apparatus for multiplying operands
US5944776A (en) 1996-09-27 1999-08-31 Sun Microsystems, Inc. Fast carry-sum form booth encoder
KR100290906B1 (ko) * 1998-03-10 2001-07-12 김영환 부동소수점곱셈기에서반올림과덧셈을동시에수행하는장치및방법
US6421699B1 (en) * 1999-03-19 2002-07-16 International Business Machines Corporation Method and system for a speedup of a bit multiplier
US6285300B1 (en) * 2000-02-09 2001-09-04 Hewlett Packard Company Apparatus and method for reducing power and noise through reduced switching recording in logic devices
JP2002108606A (ja) * 2000-09-26 2002-04-12 Toshiba Corp スティッキービット生成回路及び乗算器
US6978426B2 (en) * 2002-04-10 2005-12-20 Broadcom Corporation Low-error fixed-width modified booth multiplier
US7069290B2 (en) 2002-05-06 2006-06-27 Lucent Technologies Inc. Power efficient booth recoded multiplier and method of multiplication
US7840629B2 (en) 2006-02-28 2010-11-23 Sony Computer Entertainment Inc. Methods and apparatus for providing a booth multiplier
US7797365B2 (en) 2006-06-27 2010-09-14 International Business Machines Corporation Design structure for a booth decoder
US8078662B2 (en) 2006-09-29 2011-12-13 Intel Corporation Multiplier product generation based on encoded data from addressable location
KR100953342B1 (ko) 2007-12-27 2010-04-20 주식회사 동부하이텍 곱셈기의 인코더

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5446651A (en) * 1993-11-30 1995-08-29 Texas Instruments Incorporated Split multiply operation
KR20050081407A (ko) * 2004-02-13 2005-08-19 삼성전자주식회사 부스 알고리즘을 이용한 곱셈기의 인코더
JP4790791B2 (ja) * 2006-02-15 2011-10-12 パナソニック株式会社 乗算器、デジタルフィルタ、信号処理装置、合成装置、合成プログラム、および合成プログラム記録媒体
JP4519807B2 (ja) * 2006-06-05 2010-08-04 ルネサスエレクトロニクス株式会社 乗算器及びフィルタ処理装置
KR100935858B1 (ko) * 2007-12-05 2010-01-07 한국전자통신연구원 재구성 가능한 산술연산기 및 이를 구비한 고효율 프로세서

Also Published As

Publication number Publication date
JP2013182619A (ja) 2013-09-12
KR20130099640A (ko) 2013-09-06
US9354843B2 (en) 2016-05-31
EP2634689A1 (en) 2013-09-04
CN103294445A (zh) 2013-09-11
JP6309196B2 (ja) 2018-04-11
EP2634689B1 (en) 2015-04-08
US20130226982A1 (en) 2013-08-29
CN103294445B (zh) 2018-01-30

Similar Documents

Publication Publication Date Title
KR101861550B1 (ko) 다항식 연산을 위한 부분적 발생 장치 및 방법
US20030028575A1 (en) A Microprocessor and a digital signal processor including adder and multiplier circuits employing logic gates having discrete and weighted inputs
JP2002108606A (ja) スティッキービット生成回路及び乗算器
Muralidharan et al. Radix-4 and radix-8 booth encoded multi-modulus multipliers
Lang et al. A radix-10 digit-recurrence division unit: algorithm and architecture
Patil et al. Design of speed and power efficient multipliers using vedic mathematics with VLSI implementation
Esposito et al. Approximate adder with output correction for error tolerant applications and Gaussian distributed inputs
Erle et al. Decimal floating-point multiplication
Véstias et al. Improving the area of fast parallel decimal multipliers
Ahmed et al. Improved designs of digit-by-digit decimal multiplier
JP2007538305A (ja) 低電力動作のための平衡論理レベルを備えた演算回路
US6173304B1 (en) Joint optimization of modified-booth encoder and partial product generator
US9720648B2 (en) Optimized structure for hexadecimal and binary multiplier array
Bioul et al. Decimal addition in FPGA
Amaricai et al. Low‐precision DSP‐based floating‐point multiply‐add fused for Field Programmable Gate Arrays
Neto et al. Decimal addition on FPGA based on a mixed BCD/excess-6 representation
US7069290B2 (en) Power efficient booth recoded multiplier and method of multiplication
Varghese et al. High Speed Low Power Radix 4 Approximate Booth Multiplier
CN110506255B (zh) 节能型可变功率加法器及其使用方法
Lin et al. A parallel decimal adder with carry correction during binary accumulation
Ramezani et al. An Efficient Implementation of Low-Latency Two-Dimensional Gaussian Smoothing Filter using Approximate Carry-Save Adder
US7330867B2 (en) Method and device for floating-point multiplication, and corresponding computer-program product
EP0296344B1 (en) Parallel adder having removed dependencies
Kwak et al. High-speed CORDIC based on an overlapped architecture and a novel σ-prediction method
Abraham et al. An ASIC design of an optimized multiplication using twin precision

Legal Events

Date Code Title Description
A201 Request for examination
GRNT Written decision to grant