KR100264962B1 - 결합된 선두 1 및 선두 제로 예상기 - Google Patents

결합된 선두 1 및 선두 제로 예상기 Download PDF

Info

Publication number
KR100264962B1
KR100264962B1 KR1019970035004A KR19970035004A KR100264962B1 KR 100264962 B1 KR100264962 B1 KR 100264962B1 KR 1019970035004 A KR1019970035004 A KR 1019970035004A KR 19970035004 A KR19970035004 A KR 19970035004A KR 100264962 B1 KR100264962 B1 KR 100264962B1
Authority
KR
South Korea
Prior art keywords
leading
adder
output
bits
normalizer
Prior art date
Application number
KR1019970035004A
Other languages
English (en)
Other versions
KR19980041799A (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 윤종용
Publication of KR19980041799A publication Critical patent/KR19980041799A/ko
Application granted granted Critical
Publication of KR100264962B1 publication Critical patent/KR100264962B1/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/49Computations with a radix, other than binary, 8, 16 or decimal, e.g. ternary, negative or imaginary radices, mixed radix non-linear PCM
    • 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/74Selecting or encoding within a word the position of one or more bits having a specified value, e.g. most or least significant one or zero detection, priority encoders
    • 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • 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/544Methods 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 for evaluating functions by calculation
    • G06F7/5443Sum of products

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Nonlinear Science (AREA)
  • Complex Calculations (AREA)

Abstract

정규화된 이진수를 처리하는 부동 소수점 유닛(FPU)이 설명된다. 모든 곱셈, 덧셈 및 뺄셈은 포맷(A*B)+C 또는 (A*B)-C를 이용하여 수행된다. 연산 A*B는 A*B의 곱에 대해 C를 정렬시키는 것과 동시에 수행된다. 승수의 출력과 정렬된 오퍼런드 C는 캐리 세이브 가산기에 인가되고, 다음에 그 출력이 결과 A*B±C를 생성하기 위해 캐리 전파 가산기(carry propogate adder)에 인가된다. 캐리 세이브 가산기의 출력은 또한 결합된 선두 1 예상기(LOA, leading one anticipator)와 선두제로 예상기(LZA, leading zero anticipator)에 인가된다. 캐리 전파 가산기의 출력은 후 정규화기에 공급된다. 결합된 LOA/LZA의 출력은 멀티플렉서의 입력에 인가되고, 상기 멀티플렉서의 제어 입력은 가산기 출력의 최상위 비트에 접속되며, 여기서 최상위 비트는 결과가 양 또는 음 인지를 가르킨다. 멀티플렉서의 출력은 가산기의 출력이 양수이면 선두 제로 카운트를 또는 가산기의 출력이 음수이면 선두 1 카운트를 반영할 것이다. 이때 결과로 나타나는 카운트는 A*B±C의 결과를 정규화하는데 사용된다.

Description

결합된 선두 1 및 선두 제로 예상기
본 발명은 산술 처리 회로에 관한 것으로, 특히 이진수를 산출함과 함께 이진수에 있는 선두 1 및 선두 제로(the leading ones and leading zeros)를 식별하고 카운트하는 회로에 관한 것이다.
이진수에 대한 산술 처리 회로는 전형적으로 IEEE 754 표준에 따른 부동 소수점 산술을 이용한다. 덧셈, 곱셈 및 뺄셈에 사용되는 부동 소수점 산술은, 이진수의 가수부가 1보다 크거나 같고 2보다 작도록, 양수의 경우, 첫번째 비-제로 디짓(예를 들면, 1)가 근점(radix point)의 바로 좌측에 있을 때까지 먼저 이진수를 쉬프트함으로써 가산되고, 곱해지거나 나누어질 이진수를 정규화한다. 음의 이진수는 선두 1을 가질 것이다. 따라서, 음수를 정규화하기 위해, 첫번째 제로가 근점의 바로 좌측에 있도록 숫자가 쉬프트되어야 한다.
곱셈의 경우, 이때 정규화된 이진수가 곱해지고 그 지수가 더해진다. 나눗셈의 경우, 정규화된 이진수가 나누어지고 그 지수는 감산된다. 나눗셈과 뺄셈의 경우, 그 지수가 같도록 정규화된 숫자가 쉬프트(예를 들어, 정렬됨)된 다음, 숫자가 더해지거나 또는 감산된다.
이진수를 정규화하기 위해, 다음 산술 연산을 위해 이진수의 쉬프트 수가 신속히 수행될 수 있도록 선두 제로(양수의 경우) 또는 선두 1(음수의 경우)의 수가 신속히 결정되어야만 한다. 이상적으로, 선두 1 카운트 또는 선두 제로 카운트는 산술 연산 직후에 쉬프팅이 수행될 수 있도록 산술 연산과 병렬로 수행된다.
필요한 것은 이진수를 발생하고, 이진수에 있는 선두 1 또는 제로의 수를 산출하고, 다음의 부동 소수점 산술 연산을 위해 정규화된 이진 결과를 만들기 위해 이진수를 쉬프트하기 위한 고속 산출 처리 회로이다.
정규화된 이진수를 처리하는 부동 소수점 유닛(FPU)이 설명된다. FPU는 가수 데이타 경로와 지수 데이타 경로로 구성된다. 포맷(A*B)+C 또는 (A*B)-C를 이용하여 모든 곱셈, 덧셈 및 뺄셈이 수행된다. 곱셈의 경우, C는 제로로 설정된다. 덧셈 또는 뺄셈의 경우, B는 1로 설정된다. 뺄셈의 경우, C의 보수는 먼저 A*B의 곱에 더해지고, 2의 보수 감산을 수행하기 위해 핫 원(hot one)이 더해진다.
A*B의 곱에 C를 정렬시키는 것과 병렬로 연산 A*B가 수행된다. 승수의 출력과 정렬된 오퍼런드 C는 캐리 가산기에 인가되고, 그 출력은 다음에 결과 A*B±C를 생성하기 위해 캐리 전파 가산기에 인가된다. 캐리 세이브 가산기의 출력은 또한 결합된 선두 1 예상기(LOA) 및 선두 제로 예상기(LZA)에 인가된다. 캐리 전파 가산기의 출력은 후 정규화기에 공급된다.
결합된 LOA/LZA의 출력은 멀티플렉서의 입력에 인가되고, 멀티플렉서의 제어입력은 가산기 출력의 최상위 비트에 접속되며, 여기서 최상위 비트는 결과가 음 또는 양인지를 가리킨다. 멀티플렉서의 출력은 이와 같이 가산기의 출력이 양수이면 선두 제로 카운트를 또는 가산기의 출력이 음수이면 선두 1 카운트를 반영할 것이다.
멀티플렉서의 출력은 그 출력이 후 정규화기를 제어하여 A*B±C 연산의 결과를 쉬프트시켜 그 결과가 정규화되게 하는 후 정규화기 카운트 논리 회로에 의해 더 처리된다.
다음에 결과는 A*B±C 곱이다.
바람직한 실시예에서, A*B와 C의 지수가 2 이내인 것으로 결정되면 결합된 LOA/LZA만이 이용된다. 만일 지수가 2이내가 아니면, 후 정규화 쉬프팅은 지수 차 또는 고정된 값에 근거하여, FPU를 간단하게 하고 그 전체적인 속도를 향상시킨다.
제1도는 부동 소수점 유닛(FPU)의 가수부의 단순 개략도.
제2도는 FPU의 지수부의 단순 개략도.
제3도는 가수부의 상세도.
제4도는 오퍼런드 C의 정렬 쉬프트 범위를 도시하는 도면.
제5도는 C>>A*B일 때 정렬 쉬프트를 도시하는 도면.
제6도는 C>A*B일 때 정렬 쉬프트를 도시하는 도면.
제7도는 C가 A*B의 두개의 지수값내에 있을 때 정렬 쉬프트를 도시하는 도면.
제8도는 선두 제로/1 예상기에 의해 수행되는 논리 프로세서를 도시하는 도면.
제9도는 C<A*B일 때 정렬 쉬프트를 도시하는 도면.
제10도는 C<<A*B일 때 정렬 쉬프트를 도시하는 도면.
제11도는 FPU의 지수부에 대한 상세도.
제12도는 FPU의 부호 부분에 대한 상세도.
* 도면의 주요부분에 대한 부호의 설명
10 : 가수부 14 : 곱셈기
18 : 정렬기 22,23,42,76,78 : 가산기
24 : 후 정규화기 30,50,51,52,68,70 : 멀티플렉서
32 : 후 정규화 카운트 논리 회로
36 : 쉬프터 38 : 증가기
40 : 지수부 44 : 정렬 카운터
45 : 지수 논리 회로 54,55,56 : 동기 블럭
제1도는 부동 소수점 유닛(FPU)의 바람직한 가수부(10)의 단순 블럭도이다. 가수부(10)는 항상 정규화된 이진수 A, B 및 C에 대해 연산 A*B±C를 수행한다. 곱셈만의 경우, C는 제로로 설정된다. 덧셈 또는 뺄셈만의 경우, B는 1로 설정된다. 바람직한 실시예에서, A, B 및 C는 IEEE 754 표준에 따라 정규화된다.
이진수 A와 B는 임의의 종래의 곱셈기일 수 있는 곱셈기(14)에 의해 곱해진다. 바람직한 실시예에서, 곱셈기(14)는 곱셈이 완료될 때까지 각각의 순환에 대해 4 대 2 압축을 제공하는 캐리 세이브 가산기이다. 캐리 세이브 가산기를 이용하는 이와 같은 곱셈기에서, 결과는 합계 성분 및 캐리 성분이다.
이와 같은 곱셈 처리와 병렬로, 어떠한 지수 오버플로우 또는 언더플로우도 없다고 가정할 때, 그 지수가 A*B의 곱의 지수와 같게 되도록 C는 정렬기(18)에 의해 정렬된다. 따라서, 정렬후, C는 A 및 B의 지수의 합계와 같은 지수를 가질 것이다.
만일 C가 A*B로부터 감산되려 한다면, 정렬된 C값은 정렬된 C값이 보수로 되려 한다는 것을 가리키는 신호(21)를 한 입력으로서 갖는 배타적 OR(XOR) 게이트(20)에 의해 보수로 된다. 만일 XOR 게이트(20)에 인가된 어떠한 보수 신호(21)도 존재하지 않으면, 정렬된 C는 보수로 되지 않는다.
A*B의 값과 양 또는 음으로 된 항 C은 이때 가산기(22 및 23)에 의해 더해져 결과 A*B±C를 제공한다. 바람직한 실시예에서, 가산기(22)는 합계 성분과 캐리성분을 발생하는 캐리 세이브 가산기이고, 가산기(23)는 합계와 캐리 모두를 더한다.
가산기(23)의 출력은 가산기(23)에 대한 결과를 정규화된 포맷으로 순차적으로 쉬프트하기 위한 후 정규화기(24)이 입력에 인가된다. 가산기(22)의 출력은 결합된 선두 1 예상기(LOA)와 선두 제로 예상기(PZA)에 인가된다. LOA/LZA(28)는 가산기(22)로부터의 결과의 선두 1 또는 제로를 가리키기 위해 논리 연산을 수행한다. LOA/LZA(28)에 의해 수행된 논리 연산과 관련된 부수적인 세부사항은 제8도를 참조로 설명될 것이다. LOZ/LZA(28) 출력은 멀티플렉서(30)에 결합된다.
가산기(22)로부터의 최상위 비트(MSB) 출력은 결과가 음수 또는 양수인지를 가리킨다. 1의 MSB는 결과가 음이고 멀티플렉서(30)가 선두 1 예상기 결과를 후 정규화 카운트 논리 회로(32)에 공급한다는 것을 가리킨다. 역으로, 만일 MSB가 0이면, 이는 가산기(22)로부터의 양의 결과를 가리키고, 이때 멀티플렉서(30)는 선두 제로 예상기 결과를 후 정규화기 카운트 논리 회로(32)으로 전송한다.
후 정규화 카운트 논리 회로(32)는 이때 LOZ/LZA(28)로부터의 카운트 신호를 후 정규화기(24)를 위한 쉬프트 신호로 변환한다. 후 정규화기(24)는 이때 가산기(22)로부터의 이진 결과를, 양수인 경우, 근점이 우측으로 첫번째 1 비트 1위치를 가지며, 음수의 경우, 근점의 우측으로 첫번째 0 비트 1위치를 갖는 중간 정규화된 형식으로 쉬프트한다. 쉬프팅은 2의 보수로 된 C 대신에 1의 보수로 된 C에 대해 수행된 LOA 및 LZA로 인해 1만큼 오프될 수 있다.
만일 결과가 음이면, 정규화된 수는 이때 XOR 게이트(34)와 보수 신호(35)를 이용하여 보수로 되어야 한다. 가산기(33)의 MSB는 이와 같은 보수가 발생하는 지를 식별하고, 그렇다면 정규화된 결과와 함께 XOR 게이트(34)의 입력에 논리 1 신호(45)를 공급한다. 만일 결과가 양이면, 어떠한 보수화도 발생하지 않는다.
만일 결과의 MSB가 1이 아니면, 이때 숫자는 쉬프터(36)에 의해 좌 1 위치 쉬프트되어 첫번째 1이 근점의 바로 좌측에 있게 된다.
만일 정규화된 수가 음이면, 이때 1이 증가기(38)에 의해 더해져 2의 보수변환을 완료하게 된다. 증가기(38)는 또한 라운딩에 사용된다.
제1도의 가수부(10)의 출력은 A*B±C의 정규화된 값이다.
후 정규화기(24)는 단순히 쉬프터 또는 임의의 다른 적당한 회로일 수 있다. 결합된 LOZ/LZA(28)는 많은 형태를 띨 수 있다. 한 실시예에서, LOZ/LZA(28)는 비트 P(전파), G(발생), 및 Z(제로)를 발생하는 캐리 푹-어헤 가산기에 사용되는 것과 유사한 트리 구조를 형성한다. 이와 같이 후 정규화기 카운트 논리 회로(32)는 LOZ/LZA(28)와 후 정규화기(24) 간에 필요한 특정한 인터페이스에 따른다.
한 실시예에서, A, B 및 C의 가수 길이는 23 비트 길이+명시적 및 부호 비트이고, 지수 값은 8 비트 길이+확장된 비트이다.
제2도는 정렬 카운트를 발생하기 위한 FPU의 지수부(40)의 단순 개략도이다.
A 및 B의 지수값은 C에 대한 보수화된 지수값과 함께 가산기(42)에 인가되어, C의 지수는 A 및 B의 지수의 합계로부터 감산될 것이다. 결과는 C가 곱 A*B와 정렬될 수 있도록 C의 가수부의 쉬프트의 수를 정렬기(18)(제1도)로서 결정하는 정렬 카운터(44)에 인가된다. 제3도를 참조로 서술될 바람직한 실시예에서, 정렬 카운터(44)에 의해 발생된 ALIGNCNT 신호는 나중에 제시되는 표 1에 따른다.
지수 논리 회로(45)은 결과로 나타나는 지수를 계산한다. 조정 신호(46)는 정규화된 결과에 대한 정확한 지수를 계산하기 위해 정규화된 위한 결과 A*B±C의 임의의 쉬프팅을 가리킨다.
따라서, FPU의 출력은 부호 비트는 물론 지수부(40)과 결합하여 가수부(10)의 출력일 수 있다.
함수 A*B±C를 항상 수행하며, A*B의 곱에 C를 동시에 정렬시키고, 덧셈/뺄셈과 함께 선두 제로 및 선두 1을 동시에 발생하며, 연산 A*B±C의 결과를 정규화하기 위해 적당한 쉬프트 카운트를 선택하는 조합은 결국 극히 고속의 FPU를 생성하게 된다.
제3도는 바람직한 실시예 FPU의 가수부(10)를 상세히 도시한다.
제3도의 가수부(10)는 식 A*B±C에 대한 세가지 오퍼런드는 선택하기 위한 멀티플렉서(50, 51 및 52)를 포함한다. 멀티플렉서(50)는 새로운 값 A 또는 이전의 연산으로부터 전해진 결과(F)를 선택한다. 멀티플렉서(51)는 A와 곱해질 이진수 B를 선택하거나 또는 FPU가 연산 A+C 또는 A-C를 수행하기 위한 것이라면 논리 1 입력을 선택한다. 멀티플렉서(52)는 값 C, 전해진 결과 (RT) 또는 논리 0(만일 가수부(10)가 연산 A*B만을 수행하기 위한 것이라면)을 선택한다. 설명을 위해 멀티플렉서(50,51 및 52)는 값 A, B 및 C를 각각 선택한다고 가정한다.
동기 블럭(54, 55 및 56)에 있는 래치는 신호를 동기화시키기 위한 CLK1를 수신한다.
A 및 B의 값은 이때 바람직한 실시예에서, 캐리 세이브 형태로 값 A 및 B를 곱하는 캐리 세이브 가산기(CSA)의 어레이인 곱셈기(14)에 인가된다. 다른 형태의 곱셈기도 또한 사용될 수 있고, 이와 같은 곱셈기는 공지되어 있다. CSA 가산기는 각 사이클 동안 4:2 압축을 수행하고, 곱셈기 어레이는 두 개의 기본 기법:수정된 부스 엔코딩과 확장된 왈레스(캐리-세이브) 트리를 이용한다. 이들 기법은 본 발명에서 참조로 인용되는 IEEE Journal of Solid-State Circuits, Vol. 25, No. 5, October 1990, Erdem Hokenek 등에 의한 “Second-Generation RISC Floating Point with Multiply-Add Fused”라는 논문 명칭에 기술되어 있다. 곱셈기(14)는 상기 논문의 다른 인용참증과 함께 IEEE 논문에 기술된 기법을 이용하여 형성될 수 있다.
곱셈기(14)의 출력은 다중 덧셈으로부터의 합계와 캐리일 것이다.
곱셈과 병렬로, 이진수 C는 정렬기(18)에 의해 적당한 장소만큼 쉬프트되어, C는 곱셈기(14)로부터의 A*B 출력의 곱과 동일한 지수를 가질 것이다.
C가 A*B 보다 크거나 크지 않은 지가 C 만이 곱 A*B에 대해 정렬되기 때문에, 정렬기(18)는 한 실시예에서, 어느 한 방향으로 C를 적당히 쉬프트한다. 그러나, 바람직한 실시예에서, 오퍼런드 C는 정렬기(18)가 양방향으로 대신에 우측으로만 C를 쉬프트할 것을 필요로 하도록 정렬이전에 최좌측 위치로 머리 쉬프트된다.
바람직한 실시예에서, A와 B의 가수부가 각각 25 비트(부호 비트를 포함하여)이기 때문에, A*B의 곱은 두개의 엔코드된 부호 비트를 포함하여 50 비트이다.
정렬 이전에 C는 또한 25 비트이기 때문에, 제로 쉬프트(만일 C>>A*B이면) 또는 75의 최대 우측 쉬프트(만일 C<<A*B이면)를 참작하는 정렬후에 C가 100 비트(25+50+25)의 최대일 필요가 있다. 이와 같이, 오퍼런드 C의 쉬프팅 범위(ALIGNCNT)는 표 1로 표시된 바와 같이 그리고 제4도에 도시된 바와 같이 제로 내지 75이다. 덧셈/뺄셈의 경우를 적절히 분류함으로써, 표 1에서와 같이, 쉬프팅 범위는 한개의 27 위치 고정 쉬프터와 한개의 48 변수 위치 쉬프터로 단순화될 수 있다. 숫자 27은 C에 있는 25 비트+A*B의 50 비트 곱에 있는 두개의 엔코드된 부호 비트의 합계이다. 숫자 48은 곱 A*B에 있는 48 상위 비트에 근거한다.
Figure kpo00001
C의 이와 같은 정렬은 C의 지수와 A*B의 곱을 같도록 하기 위해 FPU의 지수부(40)로부터의 ALIGNCNT 신호에 근거한다.
곱셈기(14)와 정렬기(18)의 출력은 동기 회로(58, 59 및 60)을 이용하여 CLK2에 의해 동기화된다.
XOR 게이트(20)에 의한 감산에 대해 임의의 보수화 후에, 이때 결과로 나타나는 값이 동기 회로(62, 63 및 64)에 의해 CLK1 펄스에 대해 동기화된다.
가수부(10)의 최종적인 정규화된 결과가 24 비트+부호 비트뿐일 것이기 때문에, 정렬된 오퍼런드 C의 모든 100 비트에 대한 산술 연산을 수행하는 것은 바람직하지 않다. 바람직한 FPU는 신규한 기술을 이용하여 FPU의 복잡성을 감소시키고 임의의 연산을 가속시킨다. C와 A*B 간의 다섯가지 서로 다른 관계 또는 경우는 다음과 같다.
1. C>>A*B
2. C>A*B
3. C
Figure kpo00002
A*B
4. C<A*B
5. C<<A*B
곱셈기(14) 어레이 출력 및 오퍼런드 C의 캐리 및 합계 항의 포맷이 이하의 표 2에 도시되어 있다. 비트 위치는 세개의 부분--부분 A, 부분 B 및 부분 C로 나뉘어진다. 부분 A 및 B에 있는 상위 비트는 후 정규화 동안 쉬프트하기 위해 보존될 필요가 있는 반면에 부분 C에 있는 하위 비트는 연산이 차(difference) 연산이면 1을 더함으로써 1의 보수에서 2의 보수로의 변환을 조건적으로 완료한 후 부분 스티키(sticky) 비트(STICKY A)를 발생하기 위해 함께 OR된다. 차 연산은 다른 부호와 오퍼런드를 더하거나 또는 동일한 부호와 오퍼런드를 빼는 것을 의미한다. 합계 연산은 동일한 부호와 오퍼런드를 더하거나 또는 다른 부호와 오퍼런드를 빼는 것을 의미한다.
Figure kpo00003
따라서, 만일 C>>A*B이면, 이때 C의 정렬 쉬프트는 없을 것이고, 최종 결과는 간단히 제5도에 도시된 바와 같이 C의 첫번째 25 비트일 것이다. A*B는 C와 비교하여 그다지 중요하지 않기 때문에, A*B에 더하거나 또는 A*B로부터 빼는데 사용될 필요는 없다. A*B는 이때 스티키 비트와 라운딩에 사용될 것이다. 첫번째 상황에서, C의 25 최상위 비트는 멀티플렉서(68)에 인가된다.
멀티플렉서(68)는 첫번째 지수 관계가 표 1에 존재한다는 것을 가리키는 제어 신호(69)에 근거하여 이들 25 최상위 비트를 그 출력으로 포워드한다.
멀티플렉서(68)의 출력은 1(one) 회로(72)에 의해 멀티플렉서(70)의 입력과 증가기의 입력 모두에 접속된다. 1 회로(72)에 의한 증가는 5의 경우에 대한 2의 보수 변환을 완료하기 위해 부정으로 된 숫자인 경우 정렬된 오퍼런드 C에 1을 더한다. 1과 2의 경우에서, 1 회로(72)의 한 증가는 가산기(78)로부터의 캐리 아웃 비트를 더한다. 멀티플렉서(70)는 신호(73)에 의해 1, 2 또는 5가 존재하는 것에 따라 그 두 개의 입력중 하나를 전달한다.
이때 C의 25 최상위 비트는 후 정규화기(24)의 25 최상위 비트 위치에 인가된다. 후 정규화기(24)는 75 비트 길이이고, 25 최상위 비트는 C>>A*B 또는 C>A*B인 경우 오퍼런드 C를 위해 할당되고, 나머지 50 비트는 가산기(78 및 80)에 의해 출력된 결과 A*B±C의 비트에 할당된다. C>>A*B인 상황에서, 후 정규화기(24)에 있는 나머지 50 비트에 있는 A*B 결과는 라운딩에 사용된다. 후 정규화기(234)에 있는 숫자는 표 2에 도시된 바와 같이, C>>A*B인 경우 쉬프트되지 않는다.
후 정규화기(24)로부터 출력된 숫자에 대해 수행된 후속 연산이 C
Figure kpo00004
A*B인 세번째 상황의 내용에서 나중에 설명될 것이다.
제6도에 도시된 바와 같이, 두번째 상황이 C>A*B인 경우에 적용된다고 가정하면, 이때 C는 정렬기(18)에 의해 우측 27-Δ e로 쉬프트된다. 이와 같은 경우, 곱 A*B는 상위로 되며 정렬된 오퍼런드 C에 더해질 것이다. 이 경우, 정렬된 C에 있는 25 최상위 비트(부호 비트를 포함하여)는 상술한 바와 같이 멀티플렉서(68)를 통해 전달된다. 또한, 정렬된 C에 있는 중간 50 비트는 곱 A*B와 함께 캐리 선택 가산기(76)에 인가된다. 가산기(76)는 임의의 종류의 적당한 가산기일 수 있다. 바람직한 실시예에서, 가산기(76)는 멀티플렉서(14)로부터의 합계 및 캐리 비트와 정렬된 C의 중간 50 비트를 합계 비트 출력 및 캐리 비트 출력으로 변환한다. 합계 및 캐리 비트는 이때 가산기(78)에 의해 더해진다.
정렬된 C의 최상위 25 비트는 멀티플렉서(68)를 거쳐 후 정규화기(24)에 있는 최상위 25 비트 위치에 인가되고 다음에 가산기(78)로부터의 다음 50 비트 위치가 뒤따른다.
다양한 비트가 동기 회로(81 내지 86)를 이용하여 클럭 신호 CLK1 및 CLK2에 의해 동기화된다.
이때 후 정규화기 카운트 논리 회로(3)는 ALIGNCNT와 ADDER CASES 신호로 명시된 바와 같이, 이하의 표 2에 식별된 양만큼 후 정규화기(24)에 있는 숫자를 쉬프트한다.
Figure kpo00005
제7도에 도시된 바와 같이, C의 지수가 A*B의 그것 또는 A*B의 +1, +2 또는 -1과 같은 세번째 상황에서, 선두 1의 스트링 또는 선두 제로의 스트링일 가능성이 있도록 비트 값의 대량 소거의 잠재성이 존재한다. 가산기(76)로부터의 합계 및 캐리는 LOA/LZA(28)에 인가된다. 멀티플렉서(30)는 가산기(78) 출력의 최상위 비트에 따라 LOA 또는 LZA중 어느 하나에 대한 카운트를 출력하기 위해 제1도에서 멀티플렉서(30)에 대해 이전에 설명된 바와 같이 제어된다.
선두 제로 카운트 또는 선두 1 카운트는 이때 후 정규화 카운트 논리 회로(32)에 인가된다. 이와 같은 세번째 상황(C
Figure kpo00006
A*B)이 존재할 때, ALIGNCNT 신호와 ADDER CASES 신호는 LOA/LZA 신호가 표 3에 따라 쉬프팅 카운트를 제공한다는 것을 식별한다.
이때 후 정규화 카운트 논리 회로(32)의 출력은 결과가 정규화되도록 선두제로 또는 1을 삭제하기 위해 후 정규화기(24)에 있는 이진수를 쉬프트한다.
따라서, LOA/LZA(28)는 후 정규화기(24)에 인가된 선두 제로 또는 선두 1의 수를 예측한다. 이는 덧셈과 병렬로 선두 1 및 제로를 삭제함으로서 FPU의 속도를 향상시킨다. 선두 1 또는 선두 제로 예측의 정확도는 1 비트 위치 이내에 있고, 나중에 서술된 미세한 후 정규화 논리 회로에 의해 거친 후 정규화가 수행된 후 더욱 조정된다.LOA/LZA(28)는 다음과 같이 동작한다.
LOA/LZA(28)는 50-비트 합계 숫자와 50-비트 캐리 숫자를 수신한다. 그 출력은 선두 제로에 대해 6-비트 카운트이고 선두 1에 대해 6-비트 카운트이다. LOA/LZA(28)는 캐리 룩-어헤드 가산기에서 캐리 트리에 있는 그것과 전체적으로 유사한 논리 회로를 포함하는데, 다음 설명후의 그 구조는 기술분야의 숙련자에 의해 알 수 있을 것이다.
제8도는 LOA/LZA(28)에 의해 수행된 프로세스를 도시한다. 프로세스가 종료될 때까지 LOA/LZA(28)로 입력된 두개의 숫자의 각 비트 쌍에 대해 전파(P), 발생(G), 및 제로(Z) 비트가 발생된다. 이들 비트 값을 발생하기 위한 논리적 관계는 이하에 열거되어 있다.
Figure kpo00007
(여기서, i는 비트 위치) LOA/LZA로의 두개 숫자의 최상위 비트 위치에서 시작하면, 두개의 비트 간의 논리적 관계가 결국 P, G 또는 Z 비트가 되는 지가 결정된다. 만일 C가 A*B로부터 감산되고 있고, C의 지수가 세번째 경우에 대해 유효하다면, 대량 소거가 있을 것이다. 세번째 경우 그 결과는 P 비트일 것이다.
제8도에 도시된 바와 같이, 만일 다음 하위 비트 위치에 있는 비트 간의 관계가 Z 비트가 되면, 프로세스는 선두 제로를 가리키는, 제8도의 좌측 상의 트리로 진행한다. 만일 결과가 G 비트에 있으면, 프로세스는 선두 제로를 가리키는, 제8도의 우측 상의 트리 위치로 진행한다. 만일 결과가 P이면 프로세스는 Z 또는 G가 달성될 때까지 다음 하위 비트 위치에 대해 계속된다.
프로세스는 P, G 및 Z 비트의 지정된 조합이 발생될 때까지 아래로 계속되고, 다음에 프로세스는 종료된다. 예를 들어, 프로세스는 단계 1, 2, 3 및 4를 주행하므로써 조합 PPZGGZ의 발생시 종료할 것이다.
LOA/LZA(28)는 이때 P, G 및 Z 비트에 대한 반복 루프의 수를 식별하는 n 및 m의 숫자를 1에 더함으로써 발생된 P, G 및 Z의 조합을 6-비트 카운트로 변환한다. 예를 들어, 제8도에서 단계 4에서 종료하는 비트 PPZGGZ의 조합(즉, P2ZG2Z)는 선두 1의 숫자가 다섯이라는 것을 가리킨다.
Z의 첫번째 비트를 갖는 유사한 트리가 4 및 5의 경우에 사용된다. 기술 분야의 숙련자는 선두 1 및 제로에 대응하는 P, G 및 Z 비트의 조합을 식별함으로써 이와 같은 트리를 용이하게 생성할 수 있을 것이다.
멀티플렉서(30)는 이때 선두 1 또는 제로에 대한 카운트를 전달한다.
CLK2와 CLK1 펄스의 발생시, 이때 6-비트 카운트는 산출된 양만큼 후 정규화기(24)에 있는 숫자를 쉬프트한 후 정규화 카운트 논리 회로(32)로 입력된다.
만일 후 정규화기(24)에 있는 숫자가 음이면, 후 정규화기(24)에 있는 정규화된 양이 XOR 게이트(34)에 의해 보수로 된다.
만일 MSB가 0이면, 이때 정규화된 숫자는 쉬프터(94)에 의해 1만큼 쉬프트되어야 한다. 이와 같은 쉬프트는 MSB가 1이면 발생하지 않는다.
멀티플렉서(100)는 그 입력에 인가된 적당한 값을 출력하도록 제어된다.
결과가 음이면 2의 보수 변환을 완료하기 위해, 1이 증가기(102)에 의해 더해진다. 동일한 증가기(102)가 또한 라운딩에 사용된다. 라운딩 논리 회로(112)로부터의 제어 신호는 멀티플렉서(104)를 제어하여, 값을 포워드하는 결과(RT)가 멀티플렉서(104)로부터 출력된 숫자, 언더플로우에 대해 제로, 또는 오버플로우에 대해 최대 숫자인 지를 판단하는 다른 멀티플렉서(106)에 적당한 입력을 전달한다. 언더플로우 및 오버플로우 검출기(도시암됨)가 또한 A*B±C의 값이 최대 또는 최소임계치를 초과하였는 지를 검출하도록 제공한다.
후 정규화기(24)로부터 출력된 정규화된 숫자의 상술된 프로세싱은 또한 C>>A*B일 때를 제외한 모든 상황에 대해 수행된다.
C<A*B인 네번째 상황이 제9도에 도시되어 있는데, 여기서 후 정규화 카운트가 표 3에 제시되어 있다. A*B와 C는 가산기(76 및 78)에 의해 더해진다. 후 정규화기(24)에 있는 결과의 쉬프팅은 표 3에 따른다. 정렬된 C에 있는 25 최하위 비트는 스티키 A 비트를 발생하도록 함께 OR되고, 멀티플렉서(68)를 통해 라인(113)을 거쳐 라운딩 논리 회로(112)에 인가된다. 만일 라운딩 논리 회로(112)가 숫자가 라운드 업될 것이라면, 이때 회로(112)는 멀티플렉서(104)를 제어하여 증가기(102)에 의해 증가되는 대로 숫자를 출력한다.
제10도에 도시된 C<<A*B인 다섯번째 상황에서, 정렬된 C는 곱 A*B의 LSB의 라운딩에만 영향을 미칠 것이다. 오퍼런드 C의 25 최하위 비트는 멀티플렉서(68)에 그리고 궁극적으로 스티키 비트 검출기(114)에 인가되고, 이는 이들 LSB를 OR하고, 라운딩 논리 회로(112)에 신호를 공급한다. 후 정규화기(24)에 있는 최상위 25 비트는 표 3에 따라 쉬프팅한 후 출력된다. 후 정규화기(24)로부터 출력된 최하위 50 비트는 최종적인 결과를 라운드하는데 사용되는 스티키 비트(25 비트 위치 내의 1 이상의 1 비트)를 검출하기 위해 스티키 비트 검출기(116)에 의해 분석된다.
동기 회로(118)는 CLK2의 수신시 결과로 나타나는 정규화된 숫자를 출력한다.
제11도는 그 연산이 본 발명을 이해하는데 필요하지 않은 FPU의 지수부(40)를 상세히 설명한다. 종래의 보다 많은 지수 데이타 경로가 또한 사용될 수 있다. 기술분야의 숙련자는 이하에 간략히 제시된 제11도의 지수부의 동작을 이해할 것이다.
IEEE 754 부동 소수점 표준에 따르면, 단일 정확도 부동 소수점수는 포맷이 비트 30 내지 23인 부호없는 8-비트 잉여 127 지수(E)를 이용한다. 지수부(40)에서, 모든 계산은(E′) 영역에서 수행되고, 여기서 E′는 E의 MSB를 반전시킴으로써 달성될 수 있다.
Figure kpo00008
끝에서, 결과의 지수는 그 MSB를 반전시킴으로써 다시 E 영역으로 변환된다.
첫번째 단계에서, 세개의 입력 지수 Ea, Eb및 Ec는 먼저 Ea′, Eb′, 및 Ec′로 변환된다. 다음에 △e는 다음과 같이 산출된다.
Figure kpo00009
△e이외에, (△e+27), 및 (△e-48)은 표 4에 도시된 바와 같이, 또한 △e가 어떤 범위에 속하는 지를 결정하는 범위 검출의 목적을 위해 계산된다.
Figure kpo00010
두번째 단계에서 수행된 유일한 논리 함수는 중간 결과 Er를 발생하기 위해 3을 더하고 있다.
세번째 단계에서, Er는 선두 제로 분석기(LZA)로부터의 후 정규화 선두 제로 카운트에 근거하여 조정된다. 가수 라운딩 오버플로우(FOVERND)의 결과에 따라 다른 조정도 역시 수행된다. FOVERND는 라운딩후 가수의 MSB로부터 캐리 아웃이 존재할 때 어써트된다. 증가가 수행된 다음 FOVERND가 단계에 늦게 도달하기 때문에 증가되지 않은 값과 멀티플렉스된다. 두 세트의 오버플로우/언더플로우 검출이 동일한 이유로 병렬로 수행된다.
제12도는 FPU의 부호 부분(130)을 도시한다. 부호 부분(130)은 입력의 부호에 근거하여 곱셈/덧셈 명령의 결과의 부호와 가수 결과(Sm)의 그것을 발생한다. 논리는 다음과 같이 요약될 수 있다:
Figure kpo00011
Sa: SbXOR Sb.
따라서, 본 발명은 결합된 선두 1 및 선두 제로 예상기를 갖는 갖는 부동 소수점 유닛(FPU)을 제공한다. 이로 인해 본 발명은 FPU 회로를 단순화하고 FPU의 가수부의 속도를 증가시키며, A*B에 대한 오퍼런드 C의 크기에 따라 서로 다른 연산을 수행하는 FPU를 제공한다.
본 발명을 특정의 바람직한 실시예에 관련하여 도시하고 설명하였지만, 본 발명이 그에 한정되는 것은 아니고, 이하의 특허청구범위에 의해 마련되는 본 발명의 정신이나 분야를 이탈하지 않는 한도내에서 본 발명이 다양하게 개조 및 변화될 수 있다는 것을 당 업계에서 통상의 지식을 가진 자는 용이하게 알 수 있다.

Claims (1)

  1. 부동 소수점 프로세서 회로에 있어서, 이전수 A와 B를 수신하여 곱셈을 하기 위한 곱셈기, 가수부와 지수부를 가지는 이진수 C를 수신하여 미리 시프팅한 후, 정렬하기 위한 정렬기, 상기 곱셈기와 상기 정렬기의 출력에 연결되어 합과 캐리비트를 출력하는 캐리 세이브 가산기, 상기 캐리 세이브 가산기의 출력에 접속되어 상기 합과 캐리비트를 가산하기 위한 가산기, 상기 합과 캐리비트를 가산하는 상기 가산기와 병렬로 상기 가산기의 출력중에 선두 1과 제로를 계산하기 위하여 상기 캐리 세이브 가산기의 출력에 접속된 결합된 선두 제로 예상기와 선두 1 예상기, 및 상기 가산기로부터 출력된 이진 출력을 수신하고 상기 출력을 쉬프트하기 위한 후 정규화기, 를 구비하되, 상기 후 정규화기의 쉬프트 제어 입력은 상기 후 정규화기에 저장된 숫자를 쉬프트하는 상기 결합된 선두 제로 예상기와 상기 선두 1 예상기의 출력에 관련된 신호를 수신하도록 접속되어 있는 것을 특징으로 하는 회로.
KR1019970035004A 1996-11-18 1997-07-25 결합된 선두 1 및 선두 제로 예상기 KR100264962B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/746,880 US5993051A (en) 1996-11-18 1996-11-18 Combined leading one and leading zero anticipator
US8/746,880 1996-11-18

Publications (2)

Publication Number Publication Date
KR19980041799A KR19980041799A (ko) 1998-08-17
KR100264962B1 true KR100264962B1 (ko) 2000-09-01

Family

ID=25002753

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970035004A KR100264962B1 (ko) 1996-11-18 1997-07-25 결합된 선두 1 및 선두 제로 예상기

Country Status (2)

Country Link
US (1) US5993051A (ko)
KR (1) KR100264962B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101753162B1 (ko) 2011-02-08 2017-07-04 삼성전자주식회사 이진수 연산의 선행 제로 비트수 계산방법 및, 그 장치

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6441842B1 (en) * 1992-02-19 2002-08-27 8×8, Inc. Video compression/decompression processing and processors
US6275838B1 (en) * 1997-12-03 2001-08-14 Intrinsity, Inc. Method and apparatus for an enhanced floating point unit with graphics and integer capabilities
US6266757B1 (en) * 1998-05-06 2001-07-24 Intel Corporation High speed four-to-two carry save adder
US6115729A (en) * 1998-08-20 2000-09-05 Arm Limited Floating point multiply-accumulate unit
US6381624B1 (en) * 1999-04-29 2002-04-30 Hewlett-Packard Company Faster multiply/accumulator
US6542915B1 (en) * 1999-06-17 2003-04-01 International Business Machines Corporation Floating point pipeline with a leading zeros anticipator circuit
US6622153B1 (en) * 1999-07-07 2003-09-16 Agere Systems, Inc. Virtual parallel multiplier-accumulator
US6499044B1 (en) 1999-11-12 2002-12-24 Jeffrey S. Brooks Leading zero/one anticipator for floating point
US7080111B2 (en) * 2001-06-04 2006-07-18 Intel Corporation Floating point multiply accumulator
US6779013B2 (en) * 2001-06-04 2004-08-17 Intel Corporation Floating point overflow and sign detection
US7392273B2 (en) * 2002-12-20 2008-06-24 International Business Machines Corporation High-sticky calculation in pipelined fused multiply/add circuitry
US7373369B2 (en) * 2003-06-05 2008-05-13 International Business Machines Corporation Advanced execution of extended floating-point add operations in a narrow dataflow
US7272624B2 (en) * 2003-09-30 2007-09-18 International Business Machines Corporation Fused booth encoder multiplexer
US7290023B2 (en) * 2003-11-20 2007-10-30 International Business Machines Corporation High performance implementation of exponent adjustment in a floating point design
US20060053190A1 (en) * 2004-09-09 2006-03-09 International Business Machines Corporation Construction of a folded leading zero anticipator
US8239440B2 (en) * 2008-03-28 2012-08-07 Oracle America, Inc. Processor which implements fused and unfused multiply-add instructions in a pipelined manner
US8180822B2 (en) * 2008-09-03 2012-05-15 Oracle America, Inc. Method and system for processing the booth encoding 33RD term
US8161090B2 (en) * 2008-12-05 2012-04-17 Crossfield Technology LLC Floating-point fused add-subtract unit
US9092213B2 (en) * 2010-09-24 2015-07-28 Intel Corporation Functional unit for vector leading zeroes, vector trailing zeroes, vector operand 1s count and vector parity calculation
JP6871513B2 (ja) * 2017-05-22 2021-05-12 富士通株式会社 演算器及び演算器の制御方法
KR20200135059A (ko) 2019-05-24 2020-12-02 삼성전자주식회사 데이터를 처리하는 방법 및 장치

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4969118A (en) * 1989-01-13 1990-11-06 International Business Machines Corporation Floating point unit for calculating A=XY+Z having simultaneous multiply and add

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4841467A (en) * 1987-10-05 1989-06-20 General Electric Company Architecture to implement floating point multiply/accumulate operations
US5550767A (en) * 1994-10-14 1996-08-27 Ibm Corporation Method and apparatus for detecting underflow and overflow

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4969118A (en) * 1989-01-13 1990-11-06 International Business Machines Corporation Floating point unit for calculating A=XY+Z having simultaneous multiply and add

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101753162B1 (ko) 2011-02-08 2017-07-04 삼성전자주식회사 이진수 연산의 선행 제로 비트수 계산방법 및, 그 장치

Also Published As

Publication number Publication date
KR19980041799A (ko) 1998-08-17
US5993051A (en) 1999-11-30

Similar Documents

Publication Publication Date Title
KR100264962B1 (ko) 결합된 선두 1 및 선두 제로 예상기
KR100232962B1 (ko) 자리올림수 교정을 갖는 휴즈된 부동 소수점 곱셈 및 누산 장치
US4841467A (en) Architecture to implement floating point multiply/accumulate operations
JP6001276B2 (ja) 浮動小数点加算を実行するための装置および方法
US8429217B2 (en) Executing fixed point divide operations using a floating point multiply-add pipeline
US7698353B2 (en) Floating point normalization and denormalization
KR100241076B1 (ko) 조정및정규화클래스를구비한부동소수점승산및누산장치
US9823897B2 (en) Apparatus and method for floating-point multiplication
US5602769A (en) Method and apparatus for partially supporting subnormal operands in floating point multiplication
JPH02232723A (ja) ディジタルコンピュータ用パイプライン式浮動小数点加減算器
US5111421A (en) System for performing addition and subtraction of signed magnitude floating point binary numbers
US20130151579A1 (en) Apparatuses and related methods for overflow detection and clamping with parallel operand processing
WO1994006076A1 (en) High performance mantissa divider
US5260889A (en) Computation of sticky-bit in parallel with partial products in a floating point multiplier unit
US5954790A (en) Method and apparatus for parallel prediction and computation of massive cancellation in floating point subtraction
KR20020063058A (ko) 덧셈 및 반올림 연산을 동시에 수행하는 부동 소수점alu 연산 장치
US5408426A (en) Arithmetic unit capable of performing concurrent operations for high speed operation
US7290023B2 (en) High performance implementation of exponent adjustment in a floating point design
US11366638B1 (en) Floating point multiply-add, accumulate unit with combined alignment circuits
Schwarz Binary Floating-Point Unit Design: the fused multiply-add dataflow
KR100290906B1 (ko) 부동소수점곱셈기에서반올림과덧셈을동시에수행하는장치및방법
EP1282034A2 (en) Elimination of rounding step in the short path of a floating point adder
JPH1091396A (ja) 浮動小数点数検出装置および浮動小数点数検出回路
US11429349B1 (en) Floating point multiply-add, accumulate unit with carry-save accumulator
KR20040033198A (ko) 부동소수점의 곱셈 및 누산장치

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20120531

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20130531

Year of fee payment: 14

LAPS Lapse due to unpaid annual fee