KR100290906B1 - 부동소수점곱셈기에서반올림과덧셈을동시에수행하는장치및방법 - Google Patents

부동소수점곱셈기에서반올림과덧셈을동시에수행하는장치및방법 Download PDF

Info

Publication number
KR100290906B1
KR100290906B1 KR1019980007932A KR19980007932A KR100290906B1 KR 100290906 B1 KR100290906 B1 KR 100290906B1 KR 1019980007932 A KR1019980007932 A KR 1019980007932A KR 19980007932 A KR19980007932 A KR 19980007932A KR 100290906 B1 KR100290906 B1 KR 100290906B1
Authority
KR
South Korea
Prior art keywords
rounding
bit
addition
adder
value
Prior art date
Application number
KR1019980007932A
Other languages
English (en)
Other versions
KR19990074385A (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 KR1019980007932A priority Critical patent/KR100290906B1/ko
Priority to US09/126,441 priority patent/US6269385B1/en
Publication of KR19990074385A publication Critical patent/KR19990074385A/ko
Application granted granted Critical
Publication of KR100290906B1 publication Critical patent/KR100290906B1/ko

Links

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
    • 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
    • G06F7/487Multiplying; Dividing
    • G06F7/4876Multiplying
    • 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/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49942Significance control
    • G06F7/49947Rounding
    • G06F7/49957Implementation of IEEE-754 Standard

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

부동소수점 연산기에서의 칩 사이즈 문제와 연산시간을 단축할 수 있도록 한 부동소수점 곱셈기에서 반올림과 덧셈을 동시에 수행하는 장치 및 방법이 제안된다. 이 부동소수점 연산기는 2n 비트의 올림수(C)와 합(S)에서 상위 n+1비트와 1비트를 가산하기 위해 n비트의 반가산기와 1비트의 전가산기를 포함하는 덧셈기와; 2n비트의 올림수(c)와 합(s)에서 하위 n-2비트에 대해 덧셈에 대한 올림수()를 발생하는발생기와; 상기 가산된 n비트의 올림수(C)와 n+1비트의 합(S)을를 생성할때 전가산기에 0 또는 1값을 제공하는 예측기와; 상기 덧셈기를 통해 가산된 올림수와 합의 상위 n비트 값에 각각 0 또는 1값을 가산시켜 결과값인 i0과 i1을 출력하는 캐리 선택 덧셈기와, 상기 캐리 선택 덧셈기의 두 개의 입력값중 덧셈과 반올림이 수행된 값을 선택하도록 0 또는 1의 제어신호를 출력하는 선택기와; 상기 선택기의 제어신호에 따라 가까운쪽으로의 라운드 모드, 0쪽으로의 라운드 모드, 무한대로의 라운드 모드중 어느 한 모드를 선택하여 i0과 I1의 결과를 다중화 출력하는 멀티플렉서와; NS(no shift)시 반올림이 수행된 값에 대한 최하위비트(LSB)를 생성하는

Description

부동소수점 곱셈기에서 반올림과 덧셈을 동시에 수행하는 장치 및 방법{method and appratus for performing simultaneously addition and rounding in a floating point multiplier}
본 발명은 부동소수점 곱셈기에 관한 것으로써, 특히 IEEE 표준안의 4가지 모드에 해당하는 반올림과 덧셈을 동시에 수행하는 부동소수점 곱셈장치 및 그 연산방법에 관한 것이다.
통상적으로 부동소수점 연산기(floating point unit)는 그래픽 가속기(graphic accelerator), 디지탈 신호 처리기(digital signal processor) 및 고성능을 요구하는 컴퓨터 등에 필수적으로 사용되고 있다.
최근들어 반도체 기술분야의 발전으로 칩의 집적도가 증가함에 따라 부동소수점 연산기를 중앙처리장치(central processing unit)와 함께 한 칩에 내장할 수 있게 함으로써 부동소수점 연산기는 주 연산기의 중요한 요소로 등장하고 있다. 부동소수점 연산기가 부동소수점 연산기에 내장되는 경우 차지하는 면적으로 인하여 덧셈/뺄셈, 곱셈 등의 기본적인 연산기만 내장되므로, 부동소수점 곱셈기는 전체적인 부동 소수점 연산에 큰 영향을 준다.
한편, 부동소수점 곱셈 연산에서 분수부의 처리는 첫째, 곱셈(multiplication), 이 곱셈과정에서 생성된 캐리(carry)와 합(sum)의 덧셈(addition), 정규화(normalization), 반올림(rounding)의 순서로 이루어지는 것이 있고, 둘째, 곱셈, 덧셈, 반올림, 정규화의 4과정으로 이루어지는 것이 있다.
상기한 과정을 수행하기 위한 부동소수점 수의 표현에 관한 IEEE 표준안에서는 32비트인 단정밀도(single precision)형식과 64비트인 배정밀도(double precision) 형식이 있다. 상기 단정밀도 형식은 1비트의 부호비트, 8비트 지수부, 23비트의 분수부로 되어 있다. 또한 배정밀도 형식은 1비트의 부호 비트, 11비트 지수부, 52비트의 분수부로 되어 있다. 여기서 IEEE표준안에 따르는 정규화된 피연산자(A)는 다음식으로 표현할 수 있다.
여기서 s : 부호, f : 분수, e : 지수를 각각 나타낸다.
상기 s는 분수부에 대한 부호비트이며, f는 절대값 형태의 분수부이며, e는 바이어스(bias) 형태의 지수부이다. 분수부의 정규화된 형태는 최상위비트(MSB : most significant bit)가 1인 상태이며, 부동 소수점 표현에서는 이 MSB가 생략되므로 히든비트(hidden bit)라 한다.
한편 IEEE 반올림에서 라운드 비트(round bit)와 스티키 비트(sticky bit)는 다음 결과에 의해 생성된다.
2개의 부동 소수점 수의 분수부인 n비트의 A, B를 곱하면 2n 비트의 합인와 캐리인가 생성된다. 상기 S, C가 각각 생성된 후, S와 C를 더한 결과로서 2n 비트의 결과(F)가 생성된다. 그런데, 2n 비트 결과(F)는 부동소수점의 분수부인 상위 n+1비트와 버려지는 부분인 하위 n-1비트로나눌 수 있다. 여기서, 결과(F)의 하위 n-1비트는 반올림의 판단 근거가 된다.
그리고, 이러한 정보는 라운드 비트와 스티키 비트로 표현될 수 있으며, 이 비트를 가지고 IEEE에서 지정한 반올림 모드를 수행할 수 있다. 라운드비트(R)는 올림수와 합을 더한 결과(F)에서 하위 n-1비트의 MSB이고, 스티키비트(Sy)는 F 에서 하위 n-2비트를 전부 논리합 연산을 수행한 값이다. 따라서 F는 다음 수학식 1로 표현할 수 있다.
다음 IEEE 표준안인 반올림 모드를 살펴보면, IEEE 표준안에서는 가까운쪽으로의 라운드(round-to-nearest), 0쪽으로의 라운드(round-to-zero), +무한대로의 라운드(round-to-positive-infinity), -무한대로의 라운드(round-to-positive-infinity)인 4가지의 반올림 방식을 규정하고 있다.
이러한 IEEE 표준안인 4가지 반올림 방식을 부호에 따라 다음에 제시된 표 1, 표 2, 표 3, 표 4로 나누어 볼 수 있다.
다음 표 1은 부호에 따르는 IEEE 반올림 모드를 나타낸 것이다.
IEEE 라운딩 모드들 양 수 음 수
가까운쪽으로 라운드 가까운쪽으로 라운드
0쪽으로 라운드 0쪽으로 라운드
+무한대로 라운드 무한대로 라운드 0으로 라운드
-무한대로 라운드 0으로 라운드 무한대로 라운드
다음 표 2는 가까운쪽으로 라운딩(LSB, R, Sy)의 결과를 나타낸 것이다.
LSB 라운드 비트 스티키 비트 라운드-오프 결과
0 0 0 절단(truncation)
0 0 1 절단(truncation)
0 1 0 절단(truncation)
0 1 1 증가(increment)
1 0 0 절단(truncation)
1 0 1 절단(truncation)
1 1 0 증가(increment)
1 1 1 증가(increment)
다음 표 3은 0으로 라운딩(LSB, R, Sy)의 결과를 나타낸 것이다.
라운드 비트 스티키 비트 라운드-오프 결과
0 0 절단(truncation)
0 1 절단(truncation)
1 0 절단(truncation)
1 1 절단(truncation)
다음 표 4는 무한대로 라운딩(LSB, R, Sy)의 결과를 나타낸 것이다.
라운드 비트 스티키 비트 라운드-오프 결과
0 0 절단(truncation)
0 1 증가(increment)
1 0 증가(increment)
1 1 증가(increment)
상기한 표 2내지 표 4는 부동소수점 곱셈 연산에서 반올림을 제외한 곱셈, 덧셈, 정규화를 거친후에 생성된 분수부의 최하위 비트(LSB : least significant bit), R, Sy 비트에 대한 가까운쪽으로의 라운드, 0쪽으로의 라운드, 무한대로의 라운드에 대한 결과를 보여준 것이다.
도 1은 일반적인 부동 소수점 곱셈기에서 분수부 처리과정을 나타낸 블록도로써 곱셈, 덧셈, 반올림, 정규화 4단계로 구성되어 있다.
상기 종래의 부동소수점 곱셈기는 각각 복수열의 n비트 2진수를 생성하는 수정형 부드 부호기(도시생략됨)와, 상기 n비트 2진수를 각각 제공받아 n+2 최상위 캐리/썸비트와, n-2 최하위 캐리/썸비트를 각각 생성하는 월라스 트리/어레이 구조(10)와, 상기 n비트 2진수를 각각 제공받아 지수부의 정령시 분수부의 데이터 손실에 대한 보상 정보인 스티키 비트(Sy)를 생성하는 스티키 비트 발생기(20)와, 상기 월라스 트리/어레이 구조(10)의 n+2 최상위 캐리/썸비트를 선택적으로 가산하는 캐리 선택 가산기(30)와, 상기 n-2 최하위 캐리/썸비트를 제공받아 올림수만을 발생하는발생기(40)와, 상기 캐리선택 가산기(30)의 가산 결과에 대해 스티키 비트에 따라 정규화 과정을 거친 후 n비트의 결과를 출력하는 것으로 구성되어 있다.
이하에서 상기한 곱셈, 덧셈, 반올림, 정규화 단계를 각 단계별로 상세히 설명한다.
먼저 곱셈단계에서는 수정형 부드(booth) 부호기를 통해 생성된 부분곱을 월라스 트리/배열구조(10)를 사용하여 각각 2n비트의 합(sum)과 올림수(carry)를 생성한다.
다음 덧셈단계에서는 덧셈시 상위 n+2비트만을 필요로 하기 때문에, 하위 n-2비트에 대한 덧셈의 결과를 생성해낼 필요가 없다. 그러므로, 곱셈 단계에서 생성된 2n비트의 올림수와 합의 덧셈만이 필요하고, 하위 n-2비트에 대한 올림수와 합의 덧셈은 이 덧셈으로 인한 결과로 생긴 캐리만이 상위 n+2비트의 덧셈에 영향을 미친다.
따라서, 하위 n-2비트에 대한 올림수와 합에 대한 덧셈의 결과로 발생하는 올림수가 1이면 상위 n+2비트의 올림수와 덧셈의 결과값에 1을 더하고, 올림수가 0이면 0을 더한다. 이것은 상위 n+2비트의 올림수와 합의 덧셈을 캐리 선택 가산기(CSA : carry select adder)(30)를 이용하여 구현할 수 있고, 하위 n-2비트에 대한 올림수와 합의 덧셈은 이것의 덧셈에 대한 올림수만을 발생하는 로직회로인발생기(40)로 구현하면 2n비트 덧셈기를 대체할 수 있다. 따라서 덧셈후 결과는 다음 [수학식 3]으로 나타낼 수 있다.
여기서을 더한후에 오버플로우(overflow)한 값이다. 이때는 하위 k-1번째 비트에서 k비트로 올림수라고 정의한다. 그리고라고 정의하면는 다음 [수학식 4]와 같다.
여기서, 올림수는=오버플로우()이 된다. 오버플로우(Z)는 Z의 연산의 결과 오버플로우가 생기면 1을 복귀하고 아니면 0을 복귀한다.
반올림 단계에서는 덧셈후 최상위 비트(MSB)값이= 1이면에 반올림 결과를 더하고 덧셈 후 최상위 비트(MSB)값이= 0이면에 반올림 결과를 더하면 된다. 이때 정규화 단계에서 첫 번째의 오버플로우인 경우 1비트 오른쪽 쉬프트 및 지수증가가 필요하고 두 번째의 오버플로우가 없는 경우 쉬프트가 필요하지 않는다. 따라서 첫 번째의 경우는 RS(오른쪽 쉬프트)라 하고, 두 번째의 경우는 NS(쉬프트 없음)라 한다.
한편 반올림의 결과를 결정하는 요소인 스티키비트(Sy)는 부동소수점 곱셈 연산기에 입력되는 두 개의 분수부의 트라이어링-제로(trailing-zero)의 합이 n-2보다 크면 0이고, n-2보다 작으면 1이다. 그리고 상기 스티키비트(Sy)는 부동소수점 곱셈 연산기에서 입력되는 두 개의 분수부를 곱하여 올림수(C)와 합(S)을 생성할 때 병렬적으로 구해진다. 여기서, NS시 반올림 단계후 결과값을라하고 RS시 반올림 단계 후의 결과 값을라하면 NS시에는 반올림의 위치가이고, RS시에는 반올림의 위치가이므로 NS일 때 보다 RS일 때 상위비트(significant bit)가 1비트 높다. 따라서 결과값는 다음의[수학식 5]로 나타낼 수 있다.
여기서 라운딩 _모드, R , Sy )는 해당 반올림 모드에 대한 반올림 결과를 의미하며, 반올림 결과가 올림이면 1의 값을 갖고 버림이면 0의 값을 갖는다. 라운딩 _모드는 RS시 1비트 오른쪽 쉬프트가 필요하므로 NS때 비하여 1비트 오른쪽으로 쉬프된 형태이다.
마지막으로 정규화 과정에서는 반올림의 결과의 최상위비트(MSB)가 1이면 비트 오른쪽으로 쉬프트를 수행하고, 최상위비트(MSB)가 0이면 쉬프트없이 상위비트를 출력하면 된다. 이때 "∧"는 논리곱 연산이고, "∨"는 논리합 연산이며, ""는 배타적논리합 연산이고, ""는 배타적 부정논리합 연산을 각각 나타낸다.
상기한 종래의 부동소수점 곱셈 연산에서 생성된 캐리(carry)와 합(sum)의 덧셈(addition), 정규화(normalization), 반올림(rounding)의 경우 또는 곱셈, 덧셈, 반올림, 정규화의 경우 반올림의 처리를 위해 별도의 고속 증가기나 덧셈기를 사용한다. 이때 반올림시 오버플로우(overflow)로 인하여 발생하는 재정규화(renormalization)를 위한 별도의 하드웨어가 필요하고, 정규화 이전에 반올림 위치에서 반올림을 수행하는 별도의 하드웨어가 필요하기 때문에 연산기가 차지하는 면적이 커지고 연산 처리시간이 길어진다.
따라서 본 발명은 상기한 종래의 부동소수점 연산기에서의 칩 사이즈 문제와 연산시간을 단축할 수 있도록 한 부동소수점 곱셈기에서 반올림과 덧셈을 동시에 수행하는 장치 및 방법을 제공함에 그 목적이 있다.
본 발명의 다른 목적은 반올림이 덧셈과 병렬로 수행되기 때문에 기존의 부동소수점 곱셈 연산시 반올림 단계에서 필요한 덧셈기를 위한 별도의 하드웨어가 필요없고, 덧셈과 반올림을 한 개의 파이프라인에서 동시에 수행할 수 있도록 한 부동소수점 곱셈기에서 반올림과 덧셈을 동시에 수행하는 장치 및 방법을 제공함에 있다.
본 발명의 또다른 목적은 부동소수점 곱셈을 3단계로 수행할 수 있어 연산 처리 속도가 빠르고 반올림 모드에 적용되는 IEEE 표준안인 가까운쪽으로의 라운드(round-to-nearest), 0쪽으로의 라운드(round-to-zero), +무한대로의 라운드(round-to-positive-infinity),-무한대로의 라운드(round-to-positive-infinity)인 4가지의 반올림 모드를 모두 지원 가능하도록 한 부동소수점 곱셈기에서 반올림과 덧셈을 동시에 수행하는 장치 및 방법을 제공함에 있다.
도 1은 일반적인 부동 소수점 곱셈기에서 분수부 처리과정을 나타낸 블록도
도 2는 본 발명의 부동소수점 곱셈기에서 반올림과 덧셈을 동시에 수행하는 구성을 개략적으로 나타낸 블록도
도 3은 도 2의 멀티플렉서와 선택기의 연결 구성을 개략적으로 나타낸 도면
도 4는 도 2의 선택기의 일 실시예를 나타낸 로직 회로도
도 5 도 2의로직회로의 일 실시예를 나타낸 로직 회로도
도면의 주요부분에 대한 부호의 설명
10 : 월라스 트리/어레이 구조 20 : 스티키(Sy) 비트 발생기
30 : 캐리 선택 가산기(CPA) 40 :발생기
50 : n비트 0가산기 50-1 : 전가산기
51 : 예측기(predictor) 60 : 캐리 선택 덧셈기
70 :발생기 80 : 멀티플렉서
90 : 선택기 91, 101 : 3-to-1 멀티플렉서
92 : 라운드 모드부 100 :로직회로
상기한 목적들을 달성하기 위한 본 발명에 따른 부동소수점 곱셈기에서 반올림과 덧셈을 동시에 수행하는 장치의 특징은, 2n 비트의 올림수(C)와 합(S)에서 상위 n+1비트와 1비트를 가산하기 위해 n비트의 반가산기와 1비트의 전가산기를 포함하는 덧셈기와, 2n비트의 올림수(c)와 합(s)에서 하위 n-2비트에 대해 덧셈에 대한 올림수()를 발생하는발생기와, 상기 가산된 n비트의 올림수(C)와 n+1비트의 합(S)을를 생성할때 전가산기에 0 또는 1값을 제공하는 예측기와, 상기 덧셈기를 통해 가산된 올림수와 합의 상위 n비트 값에 각각 0 또는 1값을 가산시켜 결과값인 i0과 i1을 출력하는 캐리 선택 덧셈기와, 상기 캐리 선택 덧셈기의 두 개의입력값중 덧셈과 반올림이 수행된 값을 선택하도록 0 또는 1의 제어신호를 출력하는 선택기와, 상기 선택기의 제어신호에 따라 가까운쪽으로의 라운드 모드, 0쪽으로의 라운드 모드, 무한대로의 라운드 모드중 어느 한 모드를 선택하여 i0과 I1의 결과를 다중화 출력하는 멀티플렉서와, NS(no shift)시 반올림이 수행된 값에 대한 최하위비트(LSB)를 생성하는로직회로로 구성된 점에 있다.
본 발명의 부동소수점 곱셈기에서 반올림과 덧셈을 동시에 수행하는 방법의 특징은, 2개의 n비트의 부동소수점 수의 분수부를 곱하여 2n비트의 합(S)과 올림수(C)를 생성하는 곱셈과정과; 상기 곱셈과정을 통해 얻어진 합과 올림수를 예측기의 변수값에 따라 분수부의 덧셈 연산을 수행하는 제1 덧셈 연산과정과; 상기 제1 덧셈 연산과정을 통해 생성된 분부수의 결과값에 각각 0 또는 1의 값을 더하여 출력하는 제2 덧셈 연산과정과; 상기 제2 덧셈 연산과정을 통해 연산된 결과에 따라 IEEE 표준안에 지정된 3가지의 라운드 모드중 어느 한 모드에 대한 결과를 선택적으로 출력하는 분수부의 다중화 출력과정; 상기 덧셈 및 반올림 연산과정에서 선택되어 얻어진 덧셈의 결과값과 반올림된 값을 정규화하여 최종 연산출력을 얻는 정규화과정으로 이루어진 점에 있다.
이하, 본 발명에 따른 부동소수점 곱셈기에서 반올림과 덧셈을 동시에 수행하는 장치 및 방법의 바람직한 일 실시예를 첨부한 도면을 참조하여 상세히 설명한다.
도 2는 본 발명의 부동소수점 곱셈기에서 반올림과 덧셈을 동시에 수행하는 구성을 개략적으로 나타낸 블록도, 도 3은 도 2의 멀티플렉서와 선택기의 연결 구성을 개략적으로 나타낸 도면, 도 4는 도 3의 선택기의 일 실시예를 나타낸 로직 회로도이고 도 5는 도 3의로직회로의 일 실시예를 나타낸 로직 회로도이다.
먼저 도 2를 참조하면, 본 발명의 부동소수점 곱셈기는 n비트 반가산기(50), 1비트의 전가산기(50-1), 예측기(51), 캐리 선택 덧셈기(60),를 생성하는발생기(70), 상기 캐리 선택 덧셈기(60)의 결과값을 다중화 출력하는 멀티플렉서(80), 라운드 모드에 따라 멀티플렉서(80)에 제어신호를 출력하는 선택기(90), NS(쉬프트 없음)시 0번째 비트값을 출력하는로직회로(100)로 구성되어 있다.
먼저, 2n 비트의 올림수(C)와 합(S)에서 상위 n+1비트를 n비트 반가산기(50)와 1비트 전가산기(50-1)로 더한다. 이 때, 예측기(51)의 입력값이 상기 전가산기(50-1)로 입력된다.
다음, 상기 n비트 반가산기(50)와 1비트 전가산기(50-1)를 통해 가산된 n비트의 올림수(C)와 n+1비트의 합(S)이 발생된다. 이때, n+1비트의 합의 최하위비트를 L이라고 정의한다.
상기 반가산기(50)와 전가산기(50-1)를 통해 생성된 올림수와 합의 상위 n비트값은 n비트의 0가산기(60-1) 및 n비트 1가산기(60-2)로 구성된 n비트 올림수 선택 덧셈기(60)를 통해 가산되고 가산된 값은 멀티플렉서(80)로 입력된다.
이어서 선택기(90)는 상기 멀티플렉서(80)의 제어신호가 되며, 선택기=0이면 i0을 선택하고 선택기=1이면 i1을 선택한다. 상기 선택기(90)는 계산결과의 부호와반올림 모드에 따라 선택신호를 멀티플렉서(80)에 제공한다. 그러면 상기 멀티플렉서(80)는 전술한 표 1에서 나타낸 바와 같이 가까운쪽으로의 라운드, 0쪽으로의 라운드 무한대로의 라운드중 어느 하나를 선택적으로 다중 출력한다.
상기 멀티플렉서(80)의 출력값은 선택기(90)의 선택값에 따라 D+예측기와 D+예측기+2이다. 여기서 D+예측기+2가 되는 이유는 올림수 선택 덧셈기(60)에서 더해지는 1이 n번째 비트에 더해지기 때문에 기준이 되는 n-1번째 비트보다 상위비트가 1비트 높기때문이다.따라서 전술한 [수학식 5]에 의하여 반올림과 덧셈을 동시에 수행하기 위해 D, D+1, D+2, D+3의 결과값을 적절히 생성해야 한다.
도 2에서 예측기(51)와 선택기(90)를 각각의 경우에 맞게 선택하면 덧셈과 반올림을 동시에 수행한 값인 Q를 생성해낼 수 있다. 여기서 예측기(51)의 로직회로의 설계사항으로 두가지 사항을 고려해야 하는데 첫째, 예측기(51)로 입력되는 신호들은 올림수 선택 덧셈기(60)가 덧셈을 시작하기 전에 미리 결정되어 있어야 하고, 둘째, 선택기(90)가 최적화 되고 무시될 수 있는 시간을 가지게 할려면, 예측기(51)의 로직회로는 매우 신중하게 선택되어야 한다.
도 3은 부호와 반올림 모드에 따른 선택기(90)의 구성을 개략적으로 나타낸 것으로, 상기 선택기(90)는 사인비트와 모드 비트를 디코딩하는 디코더 로직과, 상기 디코더 로직의 디코딩 비트와 라운드 모드부(92) 3가지 모드에 따라 어느 한 모드의 결과값을 다중화 출력하는 3-to-1 멀티플렉서(91)로 구성된다.
상기 멀티플렉서(80)로 입력되는 i0의 입력값을이라 정의하면, i0의 입력값과 L(최하위비트)을 합한 값은 올림수(C)와 합(S)의 상위 n+1비트와 예측기(51)의 값을 더한값과 일치하므로 다음 수학식을 만족한다.
이하에서 멀티플렉서(80), 선택기(90)에 의한 모드별 1) 가까운쪽으로의 라운드, 2) 0쪽으로의 라운드, 3) 무한대쪽으로의 라운드를 차례로 설명한다.
1) 가까운쪽으로의 라운드
가까운쪽으로의 라운드 일때는 RS시 반올림 결과가 올림수가 되기 위해 전술한 표 2에 의해=1이 되어야 한다.
상기 [수학식 5]에 의해 반올림과 덧셈을 동시에 수행하기 위해서 각각, D, D+1, D+2의 생성이 필요하다. 그런데 예측기=0이면 멀티플렉서(80)로 입력되는 값은 D와 D+2가 된다. 이때 D 또는 D+2의 상위 n비트는 D+1의 상위 n비트와 동일하므로 예측기=0일 때 D, D+1, D+2가 모두 생성될 수 있다.
예측기=0일 경우 [수학식 5]를 참조하면 NS시 선택기(90)가 1이 되기 위해서에 의해 생성되는이 1이거나 라운딩모드()가 1이어야 한다. 그리고 RS시 선택기(90)가 1이 되기 위해서이 1이거나 라운딩모드 가 1이어야 한다. 따라서 NS시 또는 RS시 선택기(90)는 다음 수학식으로 표현할 수 있다.
그리고 NS시로직회로(100)의 최하위비트(LSB)값은 다음 수학식에 의거 출력된다.
이때 선택기(90)와로직회로(100)는 내부적인 연산을 위해 필요한 변수들을 다음 수학식에 의해 얻어낼 수 있다.
상기 선택기(90)에서 좀더 효율적인 변수를 선택하기 위해 예측기(51)에서를 올림수 신호로 선택할 수 있다. 이것은 오버플로우()와 동일하고 예측기(51)의 결과에 대한 수학식은 다음과 같다.
이때 예측기(51)의 연산값은 반가산기(50)에서 더해지기 때문에 올림수()는를 합한값과의 올림수로 출력된다. 따라서은 다음 수학식으로 바뀐다.
전술한 표 2에 나타낸 바와 같이 라운딩 _가까운쪽으로 (LSB, R, Sy)는 (LSB∧R)∨(R∧Sy)가 된다. 따라서 NS시와 RS시 선택기(90)와로직회로(100)의 출력값은 다음식과 같다.
상기한 [수학식 12]에 의거 가까운쪽으로의 라운드 모드(93)가 디코딩 비트 신호에 따라 멀티플렉서(91)에 의해 선택되도록 한다.
상기 라운드 모드(93)는 도 4에 도시한 바와 같은 로직회로에 의해 상기한 [수학식 12]의 입력값에 따라 해당 모드값을 멀티플렉서(91)에 제공한다.
2) 0쪽으로의 라운드
0쪽으로의 라운드모드에서 예측기(51)의 출력은 가까운쪽으로의 라운드 모드에서의 예측기 (51)의 출력과 동일하고 다음 표 5에 그 결과를 나타낸다.
라운딩 _제로 (X,X,X)=0이므로 NS시와 RS시 선택기(90)와로직회로(100)의 출력값은 [수학식 7]과 [수학식 8]에서 라운딩 _모드를 0으로 대치하여 적용하면 다음 [수학식 13]의해 구해진다.
상기 0쪽으로의 라운드 모드(94)는 도 4에 도시한 바와 같은 게이트의 로직회로에 의해 해당 모드값을 멀티플렉서(91)에 제공한다.
3) 무한대쪽으로의 라운드
= 예측기 = L(최하위 비트) = 스티키비트(Sy) = 1이고 L = 0인 경우 예측기(51)의 결과는=0, R=0, Sy=1이 된다.
전술한 표 2에 의하여 가까운쪽으로의 라운드는 반올림의 결과를 올림수로 사용한다. 그런데, 무한대쪽으로의 라운드는 스티키비트(Sy)=1이므로 전술한 표 4에 의하여 반올림의 결과가 올림이 된다. 따라서 무한대쪽으로의 라운드시에는 전술한 바와 같은 가까운쪽으로의 라운드에 적용된 예측기(51)를 사용할 수 없기 때문에 예측기(51)를 다음 수학식으로 정의한다.
)
다음 표 5는의 값에 따른, R, 예측기(51)의 결과를 나타낸 것이다.
R 예측기
0 0 0 0 0 0 0
0 1 0 1 0 1 1
1 0 0 1 0 1 1
1 1 0 0 1 0 1
0 0 1 0 0 1 0
0 1 1 1 1 0 1
1 0 1 1 1 0 1
1 1 1 0 1 1 1
상기 표 5에는, R, 예측기(51)의 결과 값이에 대하여 제시되었다. 이것은의 값에 따라 다음 두가지 경우로 나누어 볼 수 있다.
첫째,이고일 때,이 되고 R과 예측기(51)의 결과는 1이된다.
둘째, 상기 첫째의 경우를 제외한 경우에 해당하며와 예측기(51)의 값이 동일하게 된다.
첫 번째의 경우에서는 R=1이므로 전술한 표 4에 의해서 반올림의 결과가 올림수가 된다. 이때이 되고 예측기=1이 된다. 따라서 전술한 [수학식 4], [수학식 5], [수학식 6]의해 NS시 반올림 단계후 결과값()은 다음과 같은 수학식으로 표현할 수 있다.
따라서 NS시로직회로(100)와 선택기(90)의 결과는 다음과 같다.
RS시에는 전술한 [수학식 4], [수학식 5], [수학식 6]의해 반올림 단계 후의 결과값()은 다음과 같은 수학식으로 표현할 수 있다.
따라서 선택기(80)의 결과는 선택기=L이 된다.
두 번째의 경우에서는와 예측기(51)의 결과가 동일하므로 NS시 반올림 단계후 결과값()은 다음 수학식과 같다.
여기서 전술한 표 2를 참조하면 라운딩 _무한대 (LSB , R , Sy )는 R∨Sy이다. 따라서 선택기(90)와로직회로(100)는 다음의 수학식으로 나타낼 수 있다.
RS시 반올림 단계 후의 결과값()은 다음의 수학식으로 나타낼 수 있다.
따라서 선택기(90)의 결과는 다음 수학식에 의거 출력된다.
전술한 [수학식 14]∼ [수학식 20]을 종합해보면 무한대로의 라운드시 NS와 RS에 따른 선택기(90)와로직회로(100)의 결과는 다음 수학식으로 나타낼 수 있다.
결과적으로 본 발명에 적용되는 선택기(90)는 도 4에 도시한 바와 같이 멀티플렉서(91)로 입력되는 값중 최상위비트의 입력값이 가까운쪽으로의 라운드 모드일 때 선택기(90)의 결과값이 되고, 0쪽으로의 라운드 모드일 때 선택기(90)의 다음 결과값이 되며, 무한대로의 라운드 모드일 때 선택기(90)의 그 다음 결과값이 된다.
로직회로(100)는 도 5에 도시한 바와 같이 멀티플렉서(101)로 입력되는 값중 최상위비트의 입력값이 가까운쪽으로의 라운드 모드일 때 선택기(90)의 결과값이 되고, 0쪽으로의 라운드 모드일 때 선택기(90)의 다음 결과값이 되며, 무한대로의 라운드 모드일 때 선택기(90)의 그 다음 결과값이 된다.
이때 적용되는 입력변수로는이다. 이중에은 NS인지 RS인지 결정하는 제어신호이다. 또한의 변수로 부터 생성되어 선택기(90)를 결정하는 중요한 인자로 작용한다.
이상에서 상세히 설명한 바와 같이 본 발명에 따른 부동소수점 곱셈기에서반올림과 덧셈을 동시에 수행하는 장치는 가산기의 입력단에 예측기를 접속하고 멀티플렉서의 제어신호 입력단자에 선택기를 접속 체용함으로써 종래의 부동소수점 연산기에서의 칩 사이즈 문제와 연산시간을 단축할 수 있는 효과가 있다.
또한 본 발명은 반올림이 덧셈과 병렬로 수행되기 때문에 기존의 부동소수점 곱셈 연산시 반올림 단계에서 필요한 덧셈기를 위한 별도의 하드웨어가 필요없고, 덧셈과 반올림을 한 개의 파이프라인에서 동시에 수행할 수 있는 이점이 있다.
또한 본 발명은 부동소수점 곱셈을 3단계로 수행할 수 있어 연산 처리 속도가 빠르고 반올림 모드에 적용되는 IEEE 표준안인 4가지의 반올림 모드를 모두 지원할 수 있는 이점도 있다.

Claims (10)

  1. 2n 비트의 올림수(C)와 합(S)에서 상위 n+1비트와 1비트를 가산하기 위해 n비트의 반가산기와 1비트의 전가산기를 포함하는 덧셈기와;
    2n 비트의 올림수(C)와 합(S)에서 하위 n-2비트에 대해 덧셈에 대한 올림수()를 발생하는발생기와;
    상기 가산된 n비트의 올림수(C)와 n+1비트의 합(S)을 생성할때 전가산기에 0 또는 1값을 제공하는 예측기와;
    상기 덧셈기를 통해 가산된 올림수와 합의 상위 n비트 값에 각각 0 또는 1값을 가산시켜 결과값인 i0과 i1을 출력하는 캐리 선택 덧셈기와;
    상기 캐리 선택 덧셈기의 두 개의 입력값중 덧셈과 반올림이 수행된 값을 선택하도록 0 또는 1의 제어신호를 출력하는 선택기와;
    상기 선택기의 제어신호에 따라 가까운쪽으로의 라운드 모드, 0쪽으로의 라운드 모드, 무한대로의 라운드 모드중 어느 한 모드를 선택하여 i0과 I1의 결과를 다중화 출력하는 멀티플렉서와;
    NS(no shift)시 반올림이 수행된 값에 대한 최하위비트(LSB)를 생성하는로직회로로 구성된 것을 특징으로 하는 부동소수점 곱셈기에서 반올림과 덧셈을 동시에 수행하는 장치.
  2. 제 1 항에 있어서, 상기 선택기는 가까운쪽으로의 라운드 모드, 0쪽으로의 라운드 모드, 무한대로의 라운드 모드를 모두 지원함을 특징으로 하는 부동소수점 곱셈기에서 반올림과 덧셈을 동시에 수행하는 장치.
  3. 제 1 항 또는 제 2 항에 있어서, 상기 가까운쪽으로의 라운드 모드에서 선택기와로직회로는 다음의 수학식을 만족함을 특징으로 하는 부동소수점 곱셈기에서 반올림과 덧셈을 동시에 수행하는 장치.
    여기서, "∧"는 논리곱 연산이고, "∨"는 논리합 연산을 각각 나타낸다.
  4. 제 1 항 또는 제 2 항에 있어서, 상기 0쪽으로의 라운드 모드에서 선택기와로직회로는 다음의 수학식을 만족함을 특징으로 하는 부동소수점 곱셈기에서 반올림과 덧셈을 동시에 수행하는 장치.
    여기서은 n비트 올림수,은 n-1번째의 반올림의 위치를 나타낸다.
  5. 제 1 항 또는 제 2 항에 있어서, 상기 무한대로의 라운드 모드에서 선택기와로직회로는 다음의 수학식을 만족함을 특징으로 하는 부동소수점 곱셈기에서 반올림과 덧셈을 동시에 수행하는 장치.
    여기서, "∧"는 논리곱 연산이고, "∨"는 논리합 연산이며, ""는 배타적논리합 연산이고, ""는 배타적 부정논리합 연산을 각각 나타낸다.
  6. 제 1 항에 있어서, 상기 덧셈기를 통해 가산된 올림수에 0값을 가산하는 n비트 0가산기와, 상기 합의 상위 n비트 값에 1값을 가산시키는 n비트 1가산기로 구성함을 특징으로 하는 부동소수점 곱셈기에서 반올림과 덧셈을 동시에 수행하는 장치.
  7. 제 1 항에 있어서, 상기 제어신호는 멀티플렉서의 RS(오른쪽 쉬프트) 또는 NS(쉬프트 없음)를 결정함을 특징으로 하는 부동소수점 곱셈기에서 반올림과 덧셈을 동시에 수행하는 장치.
  8. 제 1 항에 있어서, 상기 선택기는 3가지의 연산모드를 지정하는 라운드 모드부와, 상기 라운드 모드부의 지정모드에 따라 어느 한 모드의 연산된 결과를 선택적으로 출력하는 멀티플렉서와, 상기 멀티플렉서에 사인비트 및 모드비트에 따른 디코딩된 제어신호를 인가하는 디코더로 구성된 것을 특징으로 하는 부동소수점 곱셈기에서 반올림과 덧셈을 동시에 수행하는 장치.
  9. 제 1 항에 있어서, 상기로직회로는 다수개의 변수값을 생성하는 로직회로들과, 상기 로직회로들의 입력값에 따라 NS시 반올림에 대한 최하위 비트를 선택적으로 생성하는 멀티플렉서로 구성된 것을 특징으로 하는 부동소수점 곱셈기에서 반올림과 덧셈을 동시에 수행하는 장치.
  10. 덧셈기와발생기를 통해 2개의 n비트의 부동소수점 수의 분수부를 곱하여 2n비트의 합(S)과 올림수(C)를 생성하는 곱셈과정과;
    상기 곱셈과정을 통해 얻어진 합과 올림수를 예측기의 변수값에 따라 n-비트 가산기를 통해 분수부의 덧셈 연산을 수행하는 제1 덧셈 연산과정과;
    상기 제1 덧셈 연산과정을 통해 생성된 분부수의 결과값에 캐리선택 덧셈기를 통해 각각 0 또는 1의 값을 더하여 출력하는 제2 덧셈 연산과정과;
    상기 제2 덧셈 연산과정을 통해 연산된 결과에 따라 IEEE 표준안에 지정된 3가지의 라운드 모드중 어느 한 모드에 대한 결과를 멀티플렉서를 통해 선택적으로 출력하는 분수부의 다중화 출력과정;
    상기 덧셈 및 반올림 연산과정에서 선택되어 얻어진 덧셈의 결과값과 반올림된 값을 정규화하여 최종 연산출력을 얻는 정규화과정으로 이루어진 것을 특징으로 하는 부동소수점 곱셈기에서 반올림과 덧셈을 동시에 수행하는 방법.
KR1019980007932A 1998-03-10 1998-03-10 부동소수점곱셈기에서반올림과덧셈을동시에수행하는장치및방법 KR100290906B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1019980007932A KR100290906B1 (ko) 1998-03-10 1998-03-10 부동소수점곱셈기에서반올림과덧셈을동시에수행하는장치및방법
US09/126,441 US6269385B1 (en) 1998-03-10 1998-07-30 Apparatus and method for performing rounding and addition in parallel in floating point multiplier

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019980007932A KR100290906B1 (ko) 1998-03-10 1998-03-10 부동소수점곱셈기에서반올림과덧셈을동시에수행하는장치및방법

Publications (2)

Publication Number Publication Date
KR19990074385A KR19990074385A (ko) 1999-10-05
KR100290906B1 true KR100290906B1 (ko) 2001-07-12

Family

ID=19534533

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980007932A KR100290906B1 (ko) 1998-03-10 1998-03-10 부동소수점곱셈기에서반올림과덧셈을동시에수행하는장치및방법

Country Status (2)

Country Link
US (1) US6269385B1 (ko)
KR (1) KR100290906B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100465371B1 (ko) * 2001-01-26 2005-01-13 학교법인연세대학교 덧셈 및 반올림 연산을 동시에 수행하는 부동 소수점alu 연산 장치

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7242414B1 (en) * 1999-07-30 2007-07-10 Mips Technologies, Inc. Processor having a compare extension of an instruction set architecture
US7346643B1 (en) * 1999-07-30 2008-03-18 Mips Technologies, Inc. Processor with improved accuracy for multiply-add operations
US6996596B1 (en) * 2000-05-23 2006-02-07 Mips Technologies, Inc. Floating-point processor with operating mode having improved accuracy and high performance
US6941335B2 (en) * 2001-11-29 2005-09-06 International Business Machines Corporation Random carry-in for floating-point operations
KR101861550B1 (ko) * 2012-02-29 2018-05-29 삼성전자주식회사 다항식 연산을 위한 부분적 발생 장치 및 방법
US10372415B2 (en) * 2016-05-04 2019-08-06 Texas Instruments Incorporated Internally truncated multiplier
KR102481418B1 (ko) * 2016-06-07 2022-12-26 목원대학교 산학협력단 단일 곱셈-누산 방법 및 장치

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03180928A (ja) * 1989-12-11 1991-08-06 Hitachi Ltd 浮動小数点乗算装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5150319A (en) * 1991-05-03 1992-09-22 Sun Microsystems, Inc. Circuitry for rounding in a floating point multiplier
KR0139733B1 (ko) 1994-04-29 1998-07-01 구자홍 부동 소수점 덧셈/뺄셈 연산기의 반올림 방법 및 장치
US5742537A (en) * 1995-06-30 1998-04-21 Wolrich; Gilbert M. Fast determination of floating point sticky bit from input operands
US5790446A (en) * 1995-07-05 1998-08-04 Sun Microsystems, Inc. Floating point multiplier with reduced critical paths using delay matching techniques
JPH09269891A (ja) * 1996-04-01 1997-10-14 Hitachi Ltd 部分積加算方法および装置、浮動小数点乗算方法および装置、浮動小数点積和演算方法および装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03180928A (ja) * 1989-12-11 1991-08-06 Hitachi Ltd 浮動小数点乗算装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100465371B1 (ko) * 2001-01-26 2005-01-13 학교법인연세대학교 덧셈 및 반올림 연산을 동시에 수행하는 부동 소수점alu 연산 장치

Also Published As

Publication number Publication date
US6269385B1 (en) 2001-07-31
KR19990074385A (ko) 1999-10-05

Similar Documents

Publication Publication Date Title
US5790446A (en) Floating point multiplier with reduced critical paths using delay matching techniques
US7395304B2 (en) Method and apparatus for performing single-cycle addition or subtraction and comparison in redundant form arithmetic
US6055555A (en) Interface for performing parallel arithmetic and round operations
US4841467A (en) Architecture to implement floating point multiply/accumulate operations
EP0377837B1 (en) Floating point unit having simultaneous multiply and add
US5553012A (en) Exponentiation circuit utilizing shift means and method of using same
US20210349692A1 (en) Multiplier and multiplication method
US5633819A (en) Inexact leading-one/leading-zero prediction integrated with a floating-point adder
KR100264962B1 (ko) 결합된 선두 1 및 선두 제로 예상기
KR100241076B1 (ko) 조정및정규화클래스를구비한부동소수점승산및누산장치
EP0356153B1 (en) Radix-2**n divider method and apparatus using overlapped quotient bit selection and concurrent quotient rounding and correction
US5132925A (en) Radix-16 divider using overlapped quotient bit selection and concurrent quotient rounding and correction
US4928259A (en) Sticky bit predictor for floating-point multiplication
KR100290906B1 (ko) 부동소수점곱셈기에서반올림과덧셈을동시에수행하는장치및방법
KR20020063058A (ko) 덧셈 및 반올림 연산을 동시에 수행하는 부동 소수점alu 연산 장치
JPH05134851A (ja) 乗算回路出力方式
US5862068A (en) Arithmetic circuit for calculating a square-root of a sum of squares
KR100627993B1 (ko) 3입력 분할 가산기
US4823300A (en) Performing binary multiplication using minimal path algorithm
Schwarz Binary Floating-Point Unit Design: the fused multiply-add dataflow
KR100317767B1 (ko) 부동 소수점 2진 4 워드 포맷 승산 명령 유닛
EP0332215B1 (en) Operation circuit based on floating-point representation
EP0361886A2 (en) Improved floating point computation unit
US6317772B1 (en) Split remainder divider
JP2002023997A (ja) 浮動小数点演算のための選択ベースの丸め方法

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: 20130225

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20140221

Year of fee payment: 14

FPAY Annual fee payment

Payment date: 20150223

Year of fee payment: 15

FPAY Annual fee payment

Payment date: 20160223

Year of fee payment: 16

FPAY Annual fee payment

Payment date: 20170223

Year of fee payment: 17

LAPS Lapse due to unpaid annual fee