KR102200913B1 - 풀 인-라인 비정규 서포트를 수반하는 높은 성능의 부동 소수점 덧셈기 - Google Patents

풀 인-라인 비정규 서포트를 수반하는 높은 성능의 부동 소수점 덧셈기 Download PDF

Info

Publication number
KR102200913B1
KR102200913B1 KR1020140103779A KR20140103779A KR102200913B1 KR 102200913 B1 KR102200913 B1 KR 102200913B1 KR 1020140103779 A KR1020140103779 A KR 1020140103779A KR 20140103779 A KR20140103779 A KR 20140103779A KR 102200913 B1 KR102200913 B1 KR 102200913B1
Authority
KR
South Korea
Prior art keywords
floating
point
result
path
proximity
Prior art date
Application number
KR1020140103779A
Other languages
English (en)
Other versions
KR20150059082A (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 KR20150059082A publication Critical patent/KR20150059082A/ko
Application granted granted Critical
Publication of KR102200913B1 publication Critical patent/KR102200913B1/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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/485Adding; Subtracting
    • 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/49905Exception handling
    • G06F7/4991Overflow or underflow
    • G06F7/49915Mantissa overflow or underflow in handling 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/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49936Normalisation mentioned as feature only
    • 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/50Adding; Subtracting

Abstract

본 발명은 부동 소수점 덧셈 연산에 관한 것이다. 본 발명의 실시 예에 따른 부동 소수점 덧셈 유닛을 포함하는 장치는 해당 부동 소수점 덧셈 유닛은 두 개의 부동 소수점 피연산자들에 대한 덧셈 또는 뺄셈 동작에 의하여 부동 소수점 결과를 생성하고, 각 부동 소수점 피연산자는 소수 부분 및 지수 부분을 포함하며, 상기 부동 소수점 덧셈 유닛은 상기 두 개의 부동 소수점 피연산자들 중 어느 하나 또는 상기 부동 소수점 결과가 각각 정규 수 또는 비정규 수를 포함하는지의 여부와는 무관하게 상기 두 개의 부동 소수점 피연산자들의 덧셈 또는 뺄셈 중 어느 하나에 기초하여 원접 경로 결과를 계산하는 원접 경로 회로; 상기 두 개의 부동 소수점 피연산자들 중 어느 하나 또는 상기 부동 소수점 결과가 각각 정규 수 또는 비정규 수를 포함하는지의 여부와는 무관하게 상기 두 개의 부동 소수점 연산자들의 상기 뺄셈에 기초하여 근접 경로 결과를 계산하는 근접 경로 회로; 상기 두 개의 부동 소수점 피연산들의 지수 부분들의 차이의 양에 적어도 일부 기초하여, 상기 원접 경로 결과 및 상기 근접 경로 결과 중 어느 하나를 선택하는 최후 결과 선택 회로를 포함한다. 본 발명의 실시 예에 따른 부동 소수점 덧셈기는 정규수, 비정규수, 그리고 정규수와 비정규수의 조합에 대해서도 동작할 수 있다.

Description

풀 인-라인 비정규 서포트를 수반하는 높은 성능의 부동 소수점 덧셈기{HIGH PERFORMANCE FLOATING-POINT ADDER WITH FULL IN-LINE DENORMAL/SUBNORMAL SUPPORT}
본 발명은 산술 연산의 전기적 계산과 관련된 것으로, 좀더 구체적으로는 정규 수 및 비정규 수의 부동 소수점 덧셈 연산에 관한 것이다.
컴퓨터 계산에 있어서, 부동 소수점 수(floating point number)는 보다 넓은 범위의 값들을 지원하기 위하여 실수(real number)의 근사값을 나타내는 기술을 포함한다. 이러한 수들은, 일반적으로, 고정 수(fixed number)의 유효 숫자들의 자릿수들을 대략적으로 나타내며 지수를 사용하여 스케일된다. "부동 소수점(floating point)"이라는 용어는 숫자의 기수점(radix point)(예를 들어, 10진 소수점 또는 컴퓨터에서 일반적으로 사용되는 2진 소수점)의 위치가 "변화(float)"할 수 있다는 것을 나타낸다. 즉, 소정 수의 유효 숫자들의 자리수의 어느 곳에도 위치할 수 있다. 이러한 위치는 내부 표현 방식에 있어서 지수 요소(exponent component)로써 나타내어 질 수 있으며, 따라서 부동 소수점은 과학적 표기법의 컴퓨터 실현으로 생각될 수 있다. 예를 들어, 1,234는 1.234 x 10^4 과 같다.
부동 소수점 연산에 과한 국제 표준인 IEEE 754는 IEEE에 의하여 1985년에 제정된 국제 표준이다. 많은 하드웨어 부동 소수점 유닛 또는 회로들은 실질적으로 IEEE 754 표준에 부합한다. 여기서 "IEEE 754"라는 용어는 부동 소수점 연산에 관한 IEEE Std. 754-2008(2008년 8월 29일)을 말하거나 이로부터 유래되거나 선행하는 표준을 말한다.
IEEE 754 표준은 다양한 정도의 정확도를 가능하게 한다. 두 개의 보다 일반적인 정확도의 레벨은 32-비트(single)와 64-비트(double) 정확도이다. 부동 소수점 수의 32-비트 버전은 1-비트의 부호 비트(sign bit), 8-비트 지수 부분(exponent portion) 그리고 23-비트의 가수 부분(fraction, significant, mantissa portion)을 포함한다. 64-비트 버전은 1-비트의 부호 비트, 11-비트의 지수 부분, 그리고 52-비트의 가수 부분을 포함한다.
본 발명의 목적은 정규수, 비정규수, 그리고 정규수와 비정규수의 조합에 대해서도 동작할 수 있는 부동 소수점 덧셈기를 제공하는데 있다.
본 발명의 실시 예에 따른 부동 소수점 덧셈 유닛을 포함하는 장치는 해당 부동 소수점 덧셈 유닛은 두 개의 부동 소수점 피연산자들에 대한 덧셈 또는 뺄셈 동작에 의하여 부동 소수점 결과를 생성하고, 각 부동 소수점 피연산자는 소수 부분 및 지수 부분을 포함하며, 상기 부동 소수점 덧셈 유닛은 상기 두 개의 부동 소수점 피연산자들 중 어느 하나 또는 상기 부동 소수점 결과가 각각 정규 수 또는 비정규 수를 포함하는지의 여부와는 무관하게 상기 두 개의 부동 소수점 피연산자들의 덧셈 또는 뺄셈 중 어느 하나에 기초하여 원접 경로 결과를 계산하는 원접 경로 회로; 상기 두 개의 부동 소수점 피연산자들 중 어느 하나 또는 상기 부동 소수점 결과가 각각 정규 수 또는 비정규 수를 포함하는지의 여부와는 무관하게 상기 두 개의 부동 소수점 연산자들의 상기 뺄셈에 기초하여 근접 경로 결과를 계산하는 근접 경로 회로; 상기 두 개의 부동 소수점 피연산들의 지수 부분들의 차이의 양에 적어도 일부 기초하여, 상기 원접 경로 결과 및 상기 근접 경로 결과 중 어느 하나를 선택하는 최후 결과 선택 회로를 포함하며, 상기 근접 경로 회로는 상기 근접 경로 결과가 비정규 수를 포함할 때에 상기 근접 경로 결과의 기수 시프팅을 제한하는 고정 회로를 포함한다.
실시 예에 있어서, 상기 최후 결과 선택 회로는 상기 두 개의 피연산자들의 지수 부분이 각각 서로 동일한지의 여부 및 상기 부동 소수점 덧셈 유닛이 참 뺄셈을 통하여 상기 부동 소수점 결과를 발생했는지의 여부 중 적어도 일부에 기초하여 상기 원접 경로 결과 및 상기 근접 경로 결과 중 어느 하나를 선택한다.
실시 예에 있어서, 상기 원접 경로 회로는 상기 두 개의 부동 소수점 피연산자들 모두가 비정규 수를 포함하고 상기 원전 경로 결과가 정규 수를 포함하는 경우에 상기 원접 경로 결과의 지수 부분을 조정하는 비정규-투-정규 정정 회로를 포함한다.
실시 예에 있어서, 상기 원접 경로 회로는 상기 두 개의 부동 소수점 피연산자들 중 어느 하나가 비정규 수를 포함하는지의 여부를 판단하는 비정규 수 탐지 회로를 포함한다.
실시 예에 있어서, 상기 원접 경로 회로는 부동 소수점 피연산자가 비정규 수를 포함하는 경우에 상기 부동 소수점 피연산자의 기수점을 시프트하는 리딩 비트 보상 회로를 포함한다.
실시 예에 있어서, 상기 근접 경로 회로는 상기 근접 경로 결과가 비정규 수를 포함하는 경우에 상기 근접 경로 결과의 기수 시프트를 조정하는 정규-투-비정규 정정 회로를 포함한다.
실시 예에 있어서, 상기 근접 경로 회로는 상기 두 개의 부동 소수점 피연산자들 중 어느 하나가 비정규 수를 포함하는 지의 여부를 판단하는 비정규 수 탐지 회로를 포함한다.
실시 예에 있어서, 상기 근접 경로 회로는 상기 근접 경로 결과의 상기 기수점을 시프트하는 양을 평가하는 기수점 시프팅 회로를 더 포함하며, 상기 기수점 시프팅 회로는 상기 근접 경로 결과의 기수점을 시프트하도록 평가된 양을 평가하는 리딩 제로 평가 회로; 및 상기 근접 경로 결과가 비정규 수 인지의 여부를 판단하고, 상기 근접 경로 결과가 비정규 수인 경우에 상기 근접 경로 회로의 기수 시프팅의 상기 양을 제한하여 기수점 시프팅의 최대 양을 초과하지 않도록 하는 고정 회로를 포함한다.
실시 예에 있어서, 상기 부동 소수점 덧셈 유닛은 상기 두 개의 부동 소수점 피연산자들의 곱셈에 의하여 부동 소수점 결과를 생성하지 않는다.
본 발명의 실시 예에 따른 방법은 제 1 부동 소수점 피연자 및 제 2 부동 소수점 피연자를 수신하는 단계; 상기 제 1 부동 소수점 피연산자, 상기 제 2 부동 소수점 피연산자, 또는 원접 경로 결과가 비정규 수를 포함하고 있는지의 여부와 무관하게, 상기 제 1 부동 소수점 피연산자 및 상기 제 2 부동 소수점 피연산자의 덧셈 또는 뺄셈 중 어느 하나에 기초하여 상기 원접 경로 결과를 계산하는 단계; 상기 제 1 부동 소수점 피연산자, 상기 제 2 부동 소수점 피연산자, 또는 근접 경로 결과가 비정규 수를 포함하고 있는지의 여부와 무관하게, 상기 제 1 부동 소수점 피연산자와 상기 제 2 부동 소수점 피연산자의 뺄셈에 기초하여 상기 근접 경로 결과를 계산하는 단계; 그리고 상기 제 1 부동 소수점 피연산자의 지수 부분과 상기 제 2 부동 소수점 지수 부분 사이의 차이의 적어도 일부에 기초하여 상기 원접 경로 결과와 상기 근접 경로 결과 중 어느 하나를 선택하는 단계를 포함하며, 상기 근접 경로 결과를 계산하는 단계는 상기 근접 경로 결과가 비정규 수를 포함하는 경우에 상기 근접 경로 결과의 기수 시프팅의 양을 제한하는 단계를 포함한다.
실시 예에 있어서, 상기 원접 경로 결과와 상기 근접 경로 결과 중 어느 하나를 선택하는 단계는 상기 근접 경로 결과가 참 뺄셈을 수행하는 것을 포함하는 경우에만 상기 근접 경로 결과를 선택하는 단계를 포함한다.
실시 예에 있어서, 상기 원접 경로 결과를 계산하는 단계는 상기 제 1 부동 소수점 피연산자 및 상기 제 2 부동 소수점 피연산자 모두가 비정규 수를 포함하고 상기 원접 경로 결과가 정규 수를 포함하는 경우에, 상기 원접 경로 결과의 지수 부분을 조정하는 단계를 포함한다.
실시 예에 있어서, 상기 원접 경로 결과를 계산하는 단계는 상기 제 1 부동 소수점 피연산자 및 상기 제 2 부동 소수점 피연산자 모두가 비정규 수를 포함하고 상기 원접 경로 결과가 정규 수를 포함하는 경우에, 상기 원접 경로 결과의 지수 부분을 조정하는 단계를 포함하고, 상기 근접 경로 결과를 계산하는 단계는 상기 근접 경로 결과가 비정규 수를 포함하는 경우에 상기 근접 경로 결과의 기수 시프팅을 조정하는 단계를 포함한다.
실시 예에 있어서, 상기 근접 경로 결과를 계산하는 단계는 상기 근접 경로 결과의 기수점을 시프트하기 위하여 평가된 양을 평가하는 단계; 상기 근접 경로 결과가 비정규 수를 포함하는지의 여부를 판단하는 단계; 그리고 상기 근접 경로 결과가 비정규 수를 포함한다면, 기수 시프팅의 최대 양을 초과하지 않도록 상기 근접 경로 결과의 기수 시프팅의 양을 한정하는 단계를 포함한다.
실시 예에 있어서, 상기 근접 경로 결과를 계산하는 단계는 부동 소수점 피연산자가 비정규 수를 포함하는 경우에 상기 부동 소수점 피연산자의 기수점을 시프팅하는 단계를 포함한다.
본 발명의 실시 예에 따른 시스템은 두 개의 부동 소수점 피연산자들을 저장하는 메모리; 및 프로세서를 포함하며, 상기 프로세서는 상기 두 개의 부동 소수점 피연산자들을 서로 더하거나 빼는 것에 의하여 부동 소수점 결과를 생성하는 부동 소수점 덧셈 유닛을 포함하고, 상기 두 개의 부동 소수점 피연산자들은 각각 소수 부분과 지수 부분을 포함하며, 상기 부동 소수점 덧셈 유닛은 상기 두 개의 부동 소수점 피연산자들 중 어느 하나 또는 상기 부동 소수점 결과가 정규 수 또는 비정규 수를 포함하는지의 여부와 무관하게, 상기 두 개의 부동 소수점 피연산자들의 덧셈 또는 뺄셈 중 어느 하나에 기초하여 원접 경로 결과를 계산하는 원접 경로 회로; 상기 두 개의 부동 소수점 피연산자들 중 어느 하나 또는 상기 부동 소수점 결과가 정규 수 또는 비정규 수를 포함하는지의 여부와 무관하게, 상기 두 개의 부동 소수점 피연산자들의 뺄셈에 기초하여 근접 경로 결과를 계산하는 근접 경로 회로; 그리고 상기 두 개의 부동 소수점 연산자들의 지수 부부의 차이의 양에 적어도 일부에 기초하여, 상기 원접 경로 결과 및 상기 근접 경로 결과 중 어느 하나를 선택하는 최후 결과 선택 회로를 포함하며, 상기 근접 경로 회로는 상기 근접 경로 결과가 비정규 수를 포함할 때에 상기 근접 경로 결과의 기수 시프팅을 제한하는 고정 회로를 포함한다.
실시 예에 있어서, 상기 최후 결과 선택 회로는 상기 두 개의 부동 소수점 피연산자들의 각 지수 부분들이 서로 동일한지의 여부 및 상기 부동 소수점 덧셈 유닛이 참 뺄셈을 통하여 상기 부동 소수점 결과를 발생하였는지의 여부에 적어도 일부 기초하여, 상기 원접 경로 결과 및 상기 근접 경로 결과 중 어느 하나를 선택한다.
실시 예에 있어서, 상기 원접 경로 회로는 상기 두 개의 부동 소수점 피연산자들 모두가 비정규 수를 포함하고 상기 원접 경로 결과가 정규 수를 포함하는 경우에 상기 원접 경로 결과의 지수 부분을 조정하느 비정규-투-정규 정정 회로를 포함하며, 상기 근접 경로 회로는 상기 근접 경로 결과가 비정규 수를 포함하는 경우에 상기 근접 경로 결과의 기수 시프팅을 조정하는 정규-투-비정규 정정 회로를 포함한다.
실시 예에 있어서, 상기 원접 경로 회로는 부동 소수점 피연산자가 비정규 수를 포함하는 경우에 상기 부동 소수점 피연산자의 기수점을 시프트하는 리딩 비트 보상 회로를 포함한다.
실시 예에 있어서, 상기 근접 경로 회로는 상기 근접 경로 결과의 기수점을 시프트하기 위한 평가된 양을 평가하는 리딩 제로 평가 회로; 상기 근접 경로 결과가 비정규 수인지의 여부를 판단하고, 만약 근접 경로 결과가 비정규 수인 경우에 상기 근접 경로 결과의 기수점을 시프트하기 위한 비정규 고정 양을 생성하는 고정 회로; 그리고 상기 평가된 양 또는 상기 비정규 고정 양에 기초하여, 상기 근접 경로 결과가 비정규 수를 포함하는지의 여부에 따라, 상기 근접 경로 결과의 기수점을 시프트하는 기수 시프터 회로를 포함하며, 상기 비정규 고정 양은 비정규 수의 대량 취소를 방지하기에 충분히 작은 값을 포함한다.
본 발명의 실시 예에 따른 부동 소수점 덧셈기는 정규수, 비정규수, 그리고 정규수와 비정규수의 조합에 대해서도 동작할 수 있다.
도 1은 본 발명의 실시 예에 따른 시스템 또는 부동 소수점 덧셈기의 일 예를 보여주는 도면이다.
도 2a는 본 발명의 기술적 사상의 실시 예에 따른 시스템의 실시 예를 보여주는 블록도이다.
도 2b는 본 발명의 기술적 사상의 실시 예에 따른 시스템의 일 실시 예를 보여주는 블록도이다.
도 2c는 본 발명의 기술적 사상의 실시 예에 따른 시스템의 일 실시 예를 보여주는 도면이다.
도 3은 본 발명의 기술적 사상의 실시 예에 따른 기술의 일 실시 예를 보여주는 순서도이다.
도 4는 본 발명의 기술적 사상에 따라 구현된 반도체 장치들을 포함하는 정보 처리 시스템의 일 예를 보여주는 블록도이다.
이하에서는, 첨부된 도면을 참조하여, 본 발명의 기술적 사상의 실시 예들이 설명될 것이다.
컴퓨팅 장치에 있어서, 부동 소수점 수들은 비트들의 세트 넘버로 표현된다. 이는 부동 소수점 수들이 그것이 할당된 비트들의 수에 의하여 경계 지어지며, 단지 무한한 수 공간에서 이산적이고 제한된 부분만을 표현되는 것을 의미한다. 정규 부동 소수점 수(normal floating-point number)에 있어서, 해당 수는 수의 가수(significand) 부분 내의 정수와 기수점이 어디에 위치하는 지를 가리키는 지수 부분을 수반하는, 표준 과학적 표기 형식과 유사하게 표현된다. 예를 들어, 10진법 시스템의 23,467은 2.3467 x 10^4로 표현되며, 정수(whole number)의 싱글 비트는 2이고, 기수점(radix point)은 오른쪽의 4 지점에 위치한다. 숫자가 2진수로 표현될 때, 최대 유효 비트(most significant bit)는 항상 1이다. 한편 과학적 표기법은 보통 독자들의 신뢰를 위하여 사용되는 것으로, 이는 단지 일 실시 예에 불과한 것임이 이해될 것이다. 또한 보다 적절한 본 발명의 기술적 사상은 2진수에 대하여 적용될 수 있음이 이해될 것이다.
부동 소수점 수가 작을 때, 가수 부분 또는 소수(fraction) 부분 내에 리딩 제로들(leading zeros)이 존재하지 않는다. 대신에, 리딩 제로들은 지수 부분을 조정하는 것에 의하여 제거된다. 따라서 10 진법의 0.0123은 1.23 x 10^-2와 같이 쓰여질 수 있고 리딩 제로들은 제거된다.
그러나, IEEE 754 표준에 따르면, 어떤 경우에는 지수가 너무 작아서 정확하게 표현할 수 없는 결과를 초래하는 부동 소수점 표기의 수들이 있다. 지수 부분을 표현하는데 사용되는 비트들의 수가 컴퓨팅 시스템에서는 제한되어 있기 때문에, 적절한 양의 기수 시프트(radix shift)를 위하여 필요한 값이 부동 소수점 수의 지수 부분 내에서 컴퓨팅 장치가 사용 가능한 비트들의 숫자보다 클 수 있다.
예를 들어, 부동 소수점이 지수 부분에 8 비트들을 포함한다면, 지수는 127에서 -126의 범위 내에 있을 것이다. 이는 만약 수가 -126보다 작은 지수를 갖는다면(예를 들어, 2^-134), 정규 부동 소수점 수 스킴은 유효 수학 에러(significant mathematical error) 없이는 그것을 표현할 가능성이 없는 것을 의미한다.
이러한 숫자들은 "비정규 수들(denormal numbers/denormalized numbers/subnormal numbers)"라고 칭해지며, 일반적으로 컴퓨팅 회로에 어려움을 야기한다. 비정규 수들은 비정규 수들에 비하여 다소 다른 부호화 스킴(encoding scheme)을 필요로 한다. 우선, IEEE 754 스펙에 따르면, 비정규 수의 가수(significand)의 리딩 디지트(leading digit)는 0이다. 지수를 변경하는 대신에, 리딩 제로들은 가수 내에 남아있다. 둘째로, 비정규 수의 지수 부분은 0이다. 이는 0.01234를 1.234 x 10^-2로 표현하는 대신에, 비정규 수는 0.01234 x 10^0으로 표현되는 것이다(실제 비정규 수는 10^-2보다 훨씬 작은 지수, 예를 들어, 10^-38 또는 2^-127,을 가질 것이며, 한편 38 리딩 제로들을 쓰는 것은 예시적인 범위도 초과하는 것일 수 있다). 일 실시 예로, 32-비트 부동 소수점 비정규 수는 가수로써 22 리딩 0들을 수용할 수 있는 2^-127 및 2^-149 사이에 대략적인 값을 포함할 것이다. 일반적으로, 비정규 수들은 더더욱 작은 수들을 표현할 수 있지만, 리딩 0들의 숫자가 증가함에 따라 숫자에 포함된 정확성의 양(예를 들어, 유효 디지트들(significant digits))은 감소한다. 이는 "점진적 언더플로우(gradual underflow)"라고 알려진 현상이며, 일반적으로 단지 작은 숫자들을 제로로 선언하는 것으로 대체하는 것이 보통 사용된다.
몇몇의 컴퓨팅 시스템은 하드웨어 내에서 비정규 값들을 처리한다. 전통적으로, 이러한 컴퓨팅 시스템은 정규 수 덧셈을 계산하기 위하여 제 1 하드웨어를 사용하고, 비정규 수 덧셈을 처리하기 위하여 제 2 하드웨어를 사용한다. 다른 컴퓨팅 시스템은 비정규 값들의 처리를 시스템 소프트웨어에 남겨둔다. 소프트웨어에서 비정규 값들을 처리하는 것은 일반적으로 성능의 심각한 하락을 야기한다. 그라나 비정규 값들이 하드웨어 내에서 완전히 처리될 때 조차, 계산 속도는 대부분의 현대 프로세서들에서 심각하게 하락하며, 심한 경우에는, 비정규 피연산자들(denormal operands)을 수반하는 명령어들은 정규 피연산자들에 비하여 30에서 100배정도까지 느리게 동작한다.
도 1은 본 발명의 실시 예에 따른 시스템 또는 부동 소수점 덧셈기(floating point adder)(100)의 일 예를 보여주는 도면이다. 도시된 바와 같이, 시스템은 부동 소수점 덧셈기(100)를 포함한다. 부동 소수점 덧셈기(100)는 부동 소수점 덧셈 유닛 또는 회로라고 칭해질 수도 있다. 본 실시 예에 있어서, 부동 소수점 덧셈기(100)는 두 개의 부동 소수점 피연산자들(202, 204)(또는 피연산자 값들)에 대한 덧셈 및/또는 뺄셈을 수행하며, 결과 값(248)을 생성한다.
부동 소수점 덧셈기(100)는 전통적인 부동 소수점 덧셈기와는 상당한 차이를 가진다. 부동 소수점 덧셈기(100)는 비록 하나 또는 그 이상의 피연산자들(202, 204) 또는 그 결과 값(248)이 비정규 수(denormal number)일 지라도 부동 소수점 덧셈 동작들을 수행한다. 종래의 부동 소수점 덧셈기가 오직 정규 수들(normal numbers)에 대해서만 정확히 동작하는데 반하여, 본 발명의 실시 예에 따른 부동 소수점 덧셈기(100)는 정규수, 비정규수, 또는 정규수와 비정규수의 조합에 대해서도 동작할 수 있다.
도 1의 개선된 부동 소수점 덧셈기의 기능과 대조하기 위하여, 종래의 부동 소수점 덧셈기의 동작이 간략하게 설명된다. 종래의 부동 소수점 덧셈기는 두 개의 부동 수소점 수들에 대하여 단지 덧셈(또는 뺄셈) 동작만을 수행하며, 정규의 부동 소수점 결과를 생성한다. 이러한 실시 예에 있어서, 비-정규 동작들(non-normal operations)은 비-정규 값 또는 특수 결과들(예를 들어, 246과 같은 특수 결과)을 생성하는 별도의 분리된 하드웨어에 의하여 수행된다. 그 후 시스템은 멀티플렉서(MUX)(192) 또는 다른 회로를 통하여 정규 결과(예를 들어, 248과 같은 결과)와 특수 결과 사이에서 선택을 하고, 최종 결과 값(149)을 생성한다.
다양한 실시 예들에 있어서, 특수 결과는 하나 또는 그 이상의 다음과 같은 상황들에 의하여 생성될 수 있다. 예를 들어, 피연산자 또는 결과 값들에 있어서, 무한대(infinity)가 나타난다거나, NaN(Not-a-Number)가 나타난다거나, 제로(zero)가 나타난다거나, 또는 비정규 값들이 나타난다거나 하는 경우가 그러하다. 이러한 실시 예에 있어서, 부동 소수점 뎃셈기의 정규 결과는 잘못된 값을 포함하는 것으로 간주되고, 사용되지 않는다. 대신에, 다른 하드웨어(예를 들어, 도 2c와 같은 하드웨어)가 정확한 결과 값을 정확하게 계산하기 위하여 사용된다. 일반적으로, 비-정규 값들의 계산은 정규 결과의 계산에 비하여 상당한 양의 계산 시간을 필요로 한다.
경우에 따라, 비정규 수의 덧셈은, FMAC, FMADD, FMA와 같은 부동 소수점 MAC(multiply accumulate) 유닛에 의하여 수행된다(미도시). 이는 하드웨어의 공간과 구성요소, 그리고 계산시 소모되는 파워에 있어서 높은 비용이 요구되므로 실제로는 잘 사용되지 않는다. 부동 소수점 덧셈기는 일반적으로 공간 및 비용 측면에 있어서 덧셈 및 뺄셈에 보다 적법할 것이 요구된다. 도시된 실시 예에 있어서, 부동 소수점 덧셈기(100)는 부동 소수점 곱셈 동작들을 수행하는 데에는 적법하지 않다.
위에서 설명된 바와 같이, 종래의 부동 소수점 덧셈기의 경우, 비정규 수의 발생은 특수한 하드웨어를 통하여 실시해야만 하는 결과를 초래한다. 이 후 비-정규 결과는 최종 결과(149)로써 멀티플렉서(192) 또는 이와 유사한 다른 회로에 의하여 선택된다. 이러한 실시 예에 있어서, 종래의 부동 소수점 덧셈기의 출력(예를 들어, 248과 유사)은 버려진다. 앞서 설명된 바와 같이, 비정규 값들을 실행하기 위하여 필요한 특별한 하드웨어들은 계산 시간에 있어서 높은 비용을 요구하며, FMAC와 같은 다른 회로의 사용을 수반함으로써 병렬 연산에 의한 파워 감소의 동작과 같은 것들을 수행하지 못하는 단점이 있다.
도시된 실시 예에 있어서, 부동 소수점 덧셈기(100)는 비정규 수들이 발생할 때에도 종래에 발생하던 성능 하락 없이 정규 수들과 비정규 수들 모두에 대한 부동 소수점 덧셈을 수행할 수있다. 부동 소수점 덧셈기(100)의 구체적인 동작은 다음과 같다.
종래의 부동 소수점 덧셈기와 유사하게, 부동 소수점 덧셈기(100)는 원접 경로(Far path, 298), 근접 경로(Close path, 299), 그리고 선택 회로(297)의 3개의 기본적인 부분들을 포함한다. 다양한 실시 예들에 있어서, 원접 경로(298)는 두 피연산자들(202, 204)의 지수 부분들이 하나 이상의 자릿수의 차이가 있을 때(예를 들어, 1,234-34)에 모든 범위의 덧셈 동작 또는 뺄셈 동작을 수행할 것이다. 반대로, 근접 경로(299)는 두 피연산자들(202, 204)의 지수 부분(또는 절대 값)이 하나 이하의 자릿수의 차이가 있을 때(예를 들어, 1,234+-1,234)에 뺄셈 동작을 수행할 것이다. 선택 회로(297)는 (비-특수한) 최후 결과(248) 또는 (실시 예에 따라) 최종 결과(149)를 생성하도록 원접 경로 결과(242)와 근접 경로 결과(244) 사이에서 선택동작을 수행할 것이다. 부동 소수점 덧셈기(100)의 이러한 부분들은 도 1을 참조하여 설명되었으며, 이하에서는 도 2a, 2b, 2c를 참조하여 보다 자세하게 설명될 것이다.
부동 소수점 덧셈기(100)의 도시된 실시 예에 있어서, 두 피연산자들(202, 204)의 지수 부분들의 차이가 알려지기 전에, 피연산자들(202, 204)은 원접 경로(298)와 근접 경로(299)에 의하여 병렬적으로 처리된다. 결과적으로, 두 경로들의 결과들(242, 244) 중 어느 하나는 부정확할 것이며 (지수 부분들의 차이가 알려질 무렵에) 선택 회로(297)에 의하여 버려질 것이다. 이러한 병렬적인 계산은 계산 속도를 향상시킨다는 긍정적인 효과가 있으나 부동 소수점 덧셈기(100)의 크기를 증가시키고 파워 소비를 증가시킨다는 원하지 않는 효과도 있을 것이다.
도 1의 이러한 세 부분들(297, 298, 299)은 종래의 부동 소수점 덧셈기의 유사한 부분들과 대략적으로 비슷하게 동작할 것이다. 그러나, 앞서 설명된 바와 같이, 원접 경로(298), 근접 경로(299), 그리고 선택 회로(297)는 정규 수들 및/또는 비정규 수들을 처리할 수 있는데 반하여, 종래의 부동 소수점 덧셈기는 단지 정규 수들을 처리할 수 있을 뿐이다.
도시된 실시 예에 있어서, 부동 소수점 덧셈기(100)는 두 피연산자들(202, 204)을 수신한다. 이러한 실시 예에 있어서, 피연산자들(202, 204)은 부동 소수점 수들이며 정규 수들(normal numbers)과 비정규 수들(denormal number)을 포함할 것이다. 명확한 설명을 위하여, 여기에서는 피연산자들(202, 204)이 64-비트 IEEE 754를 따르는 부동 소수점 수들인 것으로 가정된다. 따라서, 피연산자들(202, 204)은 각각 1-비트 부호 지표(sign indicator), 11-비트 지수 부분(exponent portion), 52-비트 가수 부분(fraction portion)을 포함한다. 다만 이는 하나의 실시 예에 불과하며, 본 발명의 기술적 사상은 이에 한정되지 않음이 이해될 것이다.
원접 경로(298)의 동작이 먼저 설명된다. 도시된 실시 예에 있어서, 피연산자들(202, 204)은 원접 경로(298)로의 입력이다. 피연산자들(202, 204)은 각각 비정규 수 탐지 회로(denormal number detection circuit)(252)의 대상이 된다. 일 실시 예에 있어서, 비정규 수 탐지 회로(252)는 OR 트리(tree)와 같은 일련의 OR 게이트들(gates)을 포함할 것이다. 일 실시 예에 있어서, 비정규 수 탐지 회로(252)는 대응하는 피연산자(202 또는 204)의 가수부분이 리딩 0을 포함하는 지의 여부를 감지할 것이다. 다양한 실시 예들에 있어서, 비정규 수 감지 회로(252)는 비정규 지표 신호(denormal indicator signal)(213)을 발생할 것이다.
피연산자를 정규 수들이라고 추정하는 종래의 부동 소수점 덧셈기는 프리-스왑드 신호들(pre-swapped signals)(예를 들어, 신호 210과 유사)을 발생시키기 위하여 리딩 1을 피연산자들의 가수 부분과 결부시켰다. 도시된 실시 예에 있어서, 부동 소수점 덧셈기(100)는 프리-스왑드 신호들(210)을 생성하기 위하여 비정규 지표 신호(213)의 인버스(inverse)를 피연산자들(202, 204)의 가수 부분과 결부시킨다. 이러한 실시 예에 있어서, 정규 피연산자에 의하여 생성된 프리-스왑드 신호(210)는 리딩 1을 포함할 것이며, 반면에 비정규 피연산자에 의하여 생성된 것은 리딩 0을 포함할 것이다.
도시된 실시 예에 있어서, 부동 소수점 덧셈기(100)의 원접 경로(298)는 리딩 비트 보상 회로(leading bit compensation circuit)(250)를 포함한다. 부동 소수점 포맷(format) 내에서 표현되는 숫자들의 덧셈은 문제를 가질 수 있는데, 예를 들어, 피연산자들의 가수 부분이 종종 초기에 정렬하지 않을 수 있다(예를 들어, 동일한 지수 값들을 갖는 경우). 일반적으로, 이러한 문제는 이하에서 설명될 바와 같이 기수 정렬 회로(radix alignment circuit)(154)에 의하여 처리된다.
IEEE 754 표준은 수들이 정규 수들과 비정규 수들 사이에서 부호화되는 것을 가로막는 장애(oddity)를 포함한다. 이러한 장애는 하나의 숫자 라인 상에서 숫자들을 카운팅 다운(counting down)하고, 장애가 나타날 때 발생하는 현상을 살펴보는 예를 통하여 쉽게 설명할 수 있다. 정규 수들을 부호화하는 스킴에 있어서, 1이 카운팅 다운되고 해당 숫자가 정수(whole number)에서 소수(fraction)로 변할 때(예를 들어, 1.0에서 0.9로 향하는 경우), 가수(significand)는 시프트 업(shift up) 되고 지수는 1씩 감소한다(예를 들어, 1.0 x 10^2에서 9.0 x 10^1으로 되는 경우). 그러나, 1이 카운팅 다운되고 숫자들이 정규 수들에서 비정규 수들로 변할 때에, 시프트/감소 동작들의 쌍이 발생하지 않는다. 예를 들어, 1이 1.0 x 2^-126 에서 0.1 x 2^-126 으로 변할 때, 비정규 수들의 가수는 시프트 업 되지 않는다(예를 들어, 1.0이 되는 대신에 0.1을 유지한다). 그러나 지수 부분은 여전히 감소된다(예를 들어, 0x01으로부터 0x00으로 변할 때, 비정규 수들은 0의 지수 부분을 갖는 것으로 정의된다). IEEE 754 표준에 있어서, 32-비트 부동 소수점 정규 수들의 지수 부분은 127에 의하여 오프셋 또는 바이어스 되며, 따라서 2^-126은 0x01로 부호화 된다. 그러나, 32-비트 부동 소수점 비정규 수들의 지수 부분은 126에 의하여 오프셋 또는 바이어스 되며, 따라서 2^-126은 0x00로 부호화 된다. 정규 피연산자 및 비정규 피연산자를 추가할 때에, 부호화 스킴에서의 해당 차이는 고려 대상이될 것이다.
도시된 실시 예에 있어서, 리딩 비트 보상 회로(250)는 비정규 피연산자의 기수점(radix point)을 시프트 하여, 가수가 동일한 지수 부분을 가져 마치 정규 수처럼 부호화되도록 한다. 다른 실시 예에 있어서, 기수 정렬 회로(154)는 이러한 보상을 스스로 수행하도록 변경될 것이다. 그러나 다른 실시 예에 있어서, 리딩 비트 보상 회로(250)는 비정규 피연산자 대신에 정규 피연산자의 기수점을 시프트 할 수 있으나, 이러한 방법은 정확도의 손실을 야기할 것이다.
이러한 실시 예에 있어서, 만약 피연산자들(202, 204) 중 단지 하나만이 비정규 수라면, 리딩 비트 보상 회로(250)는 비정규 수와 정규 수를 부호화할 때의 차이를 보상할 것이다. 리딩 비트 보상 회로(250)는 비정규 프리-스왑드 신호(210)를 시프트할 것이다. 다양한 실시 예들에 있어서, 리딩 비트 보상 회로(250)는 두 개의 프리-스욉드 신호들 중 어느 것이 시프트 되었는지를 판단하는 신호들(211)에 의하여 제어될 것이다. 다양한 실시 예들에 있어서, 이러한 제어 신호들(211)은 비정규 수 탐지 회로(252)의 출력으로부터 유도될 것이다.
다양한 실시 예들에 있어서, 부동 소수점 덧셈기(100)는 두 피연산자들(202, 204) 중 어느 것이 보다 큰 피연산자인지의 여부를 판단하는 지수 차이 계산 회로(exponent difference computation circuit)(152)를 포함할 것이다. 이는 크기 차이 신호(size differentiation signal)(111)를 초래할 것이다. 다양한 실시 예들에 있어서, 지수 차이 계산 회로(152)는 비정규 수 탐지 회로(252) 및/또는 리딩 비트 보상 회로(250)에 비하여 보다 많은 계산 시간을 소모할 것이다. 이러한 실시 예에 있어서, 비정규 수 탐지 회로(252) 및/또는 리딩 비트 보상 회로(250)의 포함으로 인한 추가적인 계산 시간은 (종래의 원접 경로에 비하여) 원접 경로(298)에서는 발생하지 않을 것이다.
종래에 수행되는 것과 같이, 두 개의 연산자들(예를 들어, 프리-스왑드 신호들(210) 등)은, 만약 필요하다면, 순서가 재조정되거나 스왑되어, 큰 피연산자(212)(또는, 앵커(anchor) 피연산자)가 덧셈기들(158, 160)을 위한 입력들의 세트로 놓여진다. 이와 유사하게, 작은 피연산자(214)에 대해서도 수행된다. 이러한 동작은 스왑 멀티플렉서(swap-multiplexer)(150)에 의하여 수행된다. 도시된 실시 예에 있어서, 스왑 멀티플렉서(150)는 크기 차이 신호(111)에 의하여 제어된다.
앞서 설명된 바와 같이, 덧셈은 만약 피연산자들의 가수 부분들이 정렬되지 않으면 문제가 될 수 있다. 몇몇의 실시 예들에 있어서, 큰 피연산자(212)와 작은 피연산자(214)의 기수점들을 정렬하기 위하여, 작은 피연산자(214)의 기수점은 시프트될 것이다. 도시된 실시 예에 있어서, 이는 정렬 회로(154)에 의하여 수행될 것이다. 이러한 실시 예에 있어서, 정렬 회로(154)는 지수 차이 계산 회로(152)의 출력에 의하여 제어될 것이다.
도시된 실시 예에 있어서, 부동 소수점 덧셈기(100)는 피연산자(214)가 큰 피연산자(212)의 범위를 실질적으로 벗어나는지의 여부를 감지할 것이다. (예를 들어, OR 게이트들의 시리즈인) 회로(156)는 이러한 경우에 비-제로 작은 피연산자(non-zero smaller operand)가 범위를 벗어난다는 것을 가리키는 적어도 하나의 스티키 비트(sticky bit)(113)을 생산할 것이다. 도시된 실시 예에 있어서, 시티키 비트(113)와 다른 추가적인 제어 비트들(예를 들어, 가드 비트, 라운드 비트 등)은 피연산자들(212, 214)과 연관될 것이다. 한편, 상술한 설명은 예시적인 것에 불과하며, 본 발명의 기술적 사상은 이에 한정되지 않음이 이해될 것이다.
다양한 실시 예들에 있어서, 피연산자들(212, 214)은 정수 덧셈 회로(integer addition circuit)(296)로의 입력이다. 도시된 실시 예에 있어서, 정수 덧셈 회로(296)는 한 쌍의 정수 덧셈기들(158, 160)을 포함할 것이다. 일 실시 예에 있어서, 제 1 덧셈기(158)는 덧셈에 있어서 오버플로어(overflow)가 없으며, 제 2 덧셈기(160)는 덧셈에 있어서 오버플로어가 있는 것으로 가정된다. 또는 뺄셈에 있어서, 1-비트 시프티가 있는 것으로 가정된다. 이러한 실시 예에 있어서, 제 2 덧셈기(160)는 캐리-저장 연산 회로(cary-save arithmetic circuit)(162)(예를 들어, 3:2 압축기 등)를 이용할 것이다. 다양한 실시 예들에 있어서, 덧셈기들(158, 160)은 입력으로 다양한 라운딩 상수(rounding constants)(116)를 또한 수신할 것이다.
앞서 설명된 바와 같이, 다양한 실시 예들에 있어서, 이러한 두 정수 덧셈기들(158, 160)은 연산을 쉽고 빠르게 하기 위하여 병렬적으로 사용될 것이다. 다양한 실시 예들에 있어서, 정수 덧셈 선택기(264)는 덧셈기들(158, 160)의 출력들 사이에서 선택 동작을 위하여 사용될 것이다.
종래의 시스템에 있어서, 정수 덧셈 회로(296)는 정수 덧셈 선택기를 포함할 것이다. 정수 덧셈 선택기는 오버플로어 지시자(overflow indicator)와 좌-시프트 지시자(left shift indicator)에 의존하는 정수 덧셈 선택 신호(integer addition selection signal)에 의하여 제어될 것이다.
반대로, 도시된 실시 예에 있어서, 부동 소수점 덧셈기(100) 내의 정수 덧셈 선택기(264)는 정수 덧셈 선택 신호(218)에 의하여 제어될 것이다. 이러한 실시 예에 있어서, 정수 덧셈 선택 신호(218)의 값은 적어도 일부에 있어서 오버플로어 지시자 및 좌-시프트 지시자에 근거할 것이다. 그러나, 정수 덧셈 선택 신호(218)는 두 개의 비정규 연산자들(예를 들어, 202, 204)의 덧셈이 정규 결과(예를 들어, 242)를 야기했는지의 여부를 가리키는 지시에 근거할 것이다. 이러한 실시 예에 있어서, 정수 덧셈 선택 신호(218)는 원접 경로 비정규-투-정규 정정 회로(far path denormal-to-normal correction circuit)에 의하여 포함될 것이다.
도시된 실시 예에 있어서, 정규 수들 뿐만 아니라 비정규 피연산들(202, 204)이 처리될 때에, 두 개의 비정규 수들을 더하여 정규 수를 생성하는 것이 가능하다. 이러한 실시 예에 있어서, 비정규 수들을 바이어싱하는 지수의 장애(oddity)는 반드시 다시 고려되어야 한다. 도시된 실시 예에 있어서, 덧셈 선택기(264)의 선택 로직(218)은 이러한 발생을 수용하기 위하여 조정된다. 이러한 실시 예에 있어서, 정수 덧셈 선택 신호(218)는 두 비정규 피연산자들(예를 들어, 202, 204 등)의 덧셈이 정규(normal) 결과(예를 들어, 242 등)를 가져오는지의 여부를 나타내는 지표에도 의존할 것이다. 이러한 실시 예에 있어서, 비정규-투-정규 정정 로직(denormal-to-normal correction logic)은 덧셈/라운드 단계(add/round stage)(296)에서의 1-비트 좌-시프트 정정 매커니즘에 의하여 공유될 것이다.
도시된 실시 예에 있어서, 원접 경로(298)는 앞서 설명된 바와 같이 최종적으로 원접 경로 결과(242)를 생성할 것이다. 다양한 실시 예들에 있어서, 스왑 멀티플렉서(150)를 포함하는 원접 경로(298)의 부분과 정수 덧셈 회로(296)를 포함하는 부분은 서로 다른 파이프라인 단계(예를 들어, FX1, FX2 등)에 포함될 수 있다. 한편, 상술한 설명은 예시적인 것이며, 본 발명의 기술적 사상은 이에 한정되지 않음이 이해될 것이다.
근접 경로(299)의 동작이 설명된다. 다양한 실시 예들에 있어서, 근접 경로(299)는 두 개의 피연산자들(202, 204)의 자릿수에 차이가 있는 경우(또는 작은 경우)에만 뺄셈 동작을 처리할 것이다. 몇몇의 실시 예들에 있어서, 근접 경로(299)는 또한 두 숫자들의 뺄셈의 결과가 기수점이 시프트 되어 정규 수로 적절히 포맷되거나 또는, 도시된 실시 예에 있어서, 비정규 수가 생성되기에 충분히 작은 숫자로 되도록 하는 "대량 지움(massive cancellation)"라고 알려진 현상을 조정할 것이다.
도시된 실시 예에 있어서, 피연산자들(202, 204)은 근접 결로(299)의 입력이다. 피연산자들(202, 204)은 각각 비정규 수 탐지 회로(253)의 대상이 된다. 일 실시 예에 있어서, 비정규 수 탐지 회로(253)는, 앞서 설명된 바와 같이, 일련의 OR 게이트들(OR 트리)을 포함할 것이다. 일 실시 예에 있어서, 비정규 수 탐지 회로(253)는 각각의 피 연산자(202, 204)가 리딩 0을 포함하는 지의 여부를 탐지할 것이다. 다양한 실시 예들에 있어서, 비정규 수 탐지 회로(253)는 비정규 수 지표 신호(213c)을 생성할 것이다. 다양한 실시 예들에 있어서, 원접 비정규 수 탐지 회로(252) 및 근접 비정규 수 탐지 회로(253)는 동일한 회로일 수 있다. 다른 실시 예에 있어서, 두 개의 분리된 회로들 및 출력 신호들이 존재할 것이다. 다만 상술한 설명은 예시적인 것이며, 본 발명의 기술적 사상은 이에 한정되지 않음이 이해될 것이다.
앞서 설명된 바와 같이, 덧셈 동작 동안에, 피연산자(210)는 공통 기수점(common radix point)으로 정렬될 것이 요구된다. 다양한 실시 예들에 있어서, 근접 경로(299)는 필요한 경우에 작은 피연산자의 기수점을 시프트하는 정렬 회로(alignment circuit)(171)를 포함할 것이다.
다양한 실시 예들에 있어서, 부동 소수점 덧셈기(100)의 근접 경로(299)는 두 개의 피연산자들(202, 204) 중 어느 것이 보다 큰 피연산자인지의 여부를 판단하는 지수 차이 계산 회로(172)를 포함할 것이다. 이는 크기 차이 신호(231)를 생성할 것이다. 다양한 실시 예들에 있어서, 근접 신호 크기 차이 계산 회로(172)는 원접 경로 크기 차이 계산 회로(152)에 비하여 작을 것이다. 예를 들어, 근접 신호 크기 차이 계산 회로(172)는 2-비트이며, 원접 경로 크기 차이 계산 회로(152)는 11-비트일 수 있다. 이는 근접 경로(299)의 경우에, 피연산자들(202, 204)의 값들은 서로 멀리 떨어지지 않은 것으로 추정될 수 있기 때문이다.
다시, 두 개의 연산자들(예를 들어, 프리-스왑드 신호들(210) 등)은, 만약 필요하다면, 순서가 재조정되거나 스왑되어, 큰 피연산자(232)(또는, 앵커(anchor) 피연산자)가 덧셈기들(174, 176)을 위한 입력들의 세트로 놓여진다. 이와 유한 동작이 작은 피연산자(234)에 대해서도 수행될 것이다. 이러한 동작은 스왑 멀티플렉서(swap-multiplexer)(170)에 의하여 수행된다. 종래의 부동 소수점 덧셈기의 실시 예에 있어서, 스왑 멀티플렉서(170)는 두 피연산자들(202, 204) 중 어느 것이 보다 큰 지를 가리키는 크기 차이 신호에 의하여 제어된다. 그러나, 일 실시 예에 있어서, 부동 소수점 덧셈기(100)의 스왑 멀티플렉서(170)는 신호(231)에 의하여 제어될 것이다. 이러한 실시 예에 있어서, 신호(231)는 추가적으로 지시된 작은 피연산자가 비정규인지 아닌지의 여부에 의존할 것이다.
다양한 실시 예들에 있어서, 근접 경로(299)는 두 개의 정수 덧셈기들(174, 176)을 포함할 것이다. 일 실시 예에 있어서, 제 1 덧셈기(174)는 피연산자(232)로부터 피연산자(234)의 뺄셈을 수행하며, 반면에, 제 2 덧셈기(176)는 피연산자(234)로부터 피연산자(232)의 뺄셈을 수행한다. 선택기 또는 멀티플렉서(178)은 제어 신호(135)에 기초하여 두 덧셈기들(174, 176)로부터 양의 결과를 가지는 것을 선택할 것이다.
다양한 실시 예들에 있어서, 두 개의 부동 소수점 수들에 대한 뺄셈이 수행될 때, "대량 지움"라고 알려진 효과가 발생할 것이다. 다양한 실시 예들에 있어서, 두 개의 피 연산자들의 지수들이 동일하거나 또는 단지 하나의 자릿수에만 차이가 있을 때, 수들의 값은 매우 가까워서 뺄셈 결과는 가수(significand) 또는 소수(fraction) 부분에 하나 또는 그 이상의 리딩 0을 포함할 수 있다. 이러한 실시 예에 있어서, 기수점을 시프트하는 것은 결과의 정규화 및 (만약 수가 정규 수인 경우에) 리딩 1을 예상 위치로 되돌리는 것을 일반적으로 야기할 것이다.
다양한 실시 예들에 있어서, 근접 경로(299)는 멀티플레서(178)의 출력으로의 결과 신호(236)를 정규화할 것이다. 이러한 실시 예에 있어서, 이러한 정규화는 해당 수가 적당한 부동 소수점 포맷을 갖도록 결과 신호(236)의 기수점을 시프트하는 것을 포함할 것이다. 결과 신호(236)가 정규 수인 경우에, 이는 기수점을 시프트하여 소수 부분(fraction portion)이 하나의 리딩 1을 포함하게 되는 것을 의미한다. 결과 신호(236)가 비정규 수인 경우에, 이는 기수점을 시프트하나 크지는 않아서 지수 부분이 더 이상 유효하지 않음을 의미한다. 이러한 실시 예들에 있어서, 기수를 시프트하는 양은 제한되거나 고정될 것이다.
도시된 실시 예에 있어서, 근접 경로(299)는 기수점 시프팅 회로(radix point shifting circuit)(286)를 포함할 것이다. 이러한 실시 예에 있어서, 기수점 시프팅 회로(286)는 근접 경로 결과의 기수점을 얼마나 시프트 할 것인지를 추산할 것이다. 도시된 실시 예에 있어서, 기수점 시프팅 회로(286)는 전통적인 리딩 제로 평가 회로(leading zero estimator circuit)를 포함할 것이며, 근접 경로 결과(244) 또는 결과 신호(236)의 기수점을 얼마나 시프트할 것인지를 추산할 것이다. 도시된 실시 예에 있어서, 리딩 제로 평가 회로는 리딩 제로 예상기(leading zero anticipator)(180) 및 우선순위 인코더(priority encoder)(181)를 포함할 것이다.
다양한 실시 예들에 있어서, 리딩 제로 예상기(180)는 결과 값이 비-제로 리딩 비트를 갖도록 하기 위하여 기수점이 얼마나 많이 시프트되어야 하는 지를 판단하거나 추산할 것이다. 예를 들어, 숫자 0.0001을 1.0 x 2^-4로 표현하기 위하여, 기수점은 4번 시프트 될 필요가 있을 것이다. 다양한 실시 예들에 있어서, 우선순위 인코더(181)은 리딩 제로 예상기(180)의 출력(137)을 비트-시프팅 하드웨어(예를 들어, 구성요소(175) 및 구성요소(273) 등)에 의하여 보다 쉽게 처리될 수 있는 부호화된 값(138)으로 변환할 것이다. 이러한 실시 예에 있어서, 우선순위 인코더(181)는 리딩 제로 예상기의 출력 벡터(137)의 처음의 "1"의 위치를 탐지할 것이다.
종래의 부동 소수점 덧셈기에 있어서, 우선순위 인코더(181)의 출력(181)은 이하에서 설명될 바와 같이 기수 시프터(175)의 입력일 것이다. 그러나, 도 1의 실시 예에 있어서, 비정규 수들은 가장 작은 가능한 지수 부분들에서 존재한다는 제한 때문에, 가수(significand)를 정수(예를 들어, "1" 등)를 포함하는 자리까지 시프트하는 것은 불가능할 것이다. 이는 가수를 기수점으로 시프트할 때마다, 지수 부분은 줄어들어야 하기 때문이다. 그러나, 비정규 수의 지수 부분은 매우 작기 때문에, 더 이상 감소하지 않는 지점이 오며, 따라서 가수(significand)는 "<1"을 반드시 유지한다. 이는 비정규 수의 리딩 비트가 정규 수에 비하여 0 대 1이기 때문이다. 도시된 실시 예에 있어서, 논리 및 하드웨어 구성요소들(예를 들어, 281, 282, 284 등)은 1이 발생할 수 있는 지수 감소의 최대 양에 도달할 때(예를 들어, 0의 지수 값 등)에 기수 시프팅을 고정시키거나 멈추는데 사용된다.
도시된 실시 예에 있어서, 근접 경로(299)는 두 개의 부동 소수점 피연산자들(202, 204) 중 적어도 하나가 비정규 수를 포함할 때에 근접 경로 결과(244 또는 236)의 기수 시프팅을 멈추거나 중지시키는 고정 회로(clamp circuit)(287)를 포함할 것이다. 일 실시 예에 있어서, 고정 회로(287)는 근접 경로 결과(244 또는 236)가 비정규 수인지의 여부를 판단하며, 만약 그렇다면, 기수 시프트의 최대 양을 초과하기에 앞서서 근접 회로 경로의 기수 시프팅을 멈추거나 중지시킬 것이다.
도시된 실시 예에 있어서, 고정 회로(287)는 입력으로 큰 피연산자(202 또는 204)의 지수 부분(237)을 수신한다. 이 지수 부분(237)은 결과(236)의 지수 부분이 무효화되기 전에 기수 점이 시프트 될 최대 횟수(또는 결과(236)의 지수 부분이 감소되는 횟수)를 결정하기 위한 최대 시프트 평가기(maximum shift evaluator)(281)에 의하여 평가된다. 지수 부분(237)은 지수 부분(237)이 우선선위 디코더(181)가 제안하는 것 만큼 감소될 것인지의 여부를 판단하기 위하여 우선순위 디코더(181)의 출력(138)과 비교될 것이다. 도시된 실시 예에 있어서, 이는 고정 탐지기(clamp detector)(282)에 의하여 수행될 것이다. 도시된 실시 예에 있어서, 시프트 양 선택기(284)는 고정 탐지기(282)의 출력에 기초하여 최대 시프트 평가기(281) 및 우선순위 디코더(181)의 출력 사이에서 선택할 것이다. 도시된 실시 예에 있어서, 고정 회로(287)는 최대 시프트 평가기(281), 고정 탐지기(282), 그리고 시프트 양 선택기(284)를 포함할 것이다.
도시된 실시 예에 있어서, 근접 경로(299)는 앞서 설명된 바와 같이 기수 시프터(175)를 포함할 것이다. 이러한 실시 예에 있어서, 기수 시프터(175)는 기수점 시프팅 회로(286)의 출력(238)에 기초하여 결과(236)의 기수점을 시프트할 것이다.
몇몇의 실시 예에 있어서, 리딩 제로 예상기(180)는 단지 예상치를 생산할 뿐이며 원하는 만큼 정확하지는 않을 것이다. 이따금, 리딩 제로 예상기(180)의 평가는 하나의 기수점에 의하여 오프(off)될 것이다. 이러한 실시 예에 있어서, 근접 경로(299)는 보상 기수 시프터(compensating radix shifter)(273)를 포함할 것이다. 전통적인 부동 소수점 덧셈기에서, 보상 기수 시프터는 리딩 제로 예상기(180)의 정확성(또는 그것의 결함)에 기초하는 신호에 의하여 제어될 것이다.
그러나, 도 1의 도시된 실시 예에 있어서, 부동 소수점 덧셈기(100)는 정규 및 비정규 피연산자들(202, 204)을 모두 처리한다. 앞서 설명된 바와 같이, 다양한 실시 예들에 있어서, 리딩 제로 예산기는 결과가 최소 지수일 때 비정규 수를 잘못 예상할 수 있으며, 이는 앞서 설명된 바와 같이, 하나의 기수점에 의하여 오프 될 것이다. 이러한 실시 예에 있어서, 비정규 수들에 바이어싱하는 지수의 특이함은 반드시 다시 고려되어야 한다. 도시된 실시 예에 있어서, 보상 기수 시프터(273)의 제어 로직 및 신호(239)는 이러한 발생을 수용하기 위하여 조정된다. 이러한 실시 예에 있어서, 정규-투-비정규 정정 매커니즘은 리딩 제로 예상기 정정 로직(273)에 의하여 공유될 것이며, 그리고 리딩 제로 예상기 정정 로직(273)은 근접 경로 비정규-투-정규 정정 회로(close path denormal-to-normal correction circuit)로 생각될 것이다. 도시된 실시 예에 있어서, 보상 기수 시프터(273)의 출력은 근접 경로 결과(244)이다.
다양한 실시 예들에 있어서, 기수점 시프팅 회로(286)는 리딩 제로 예상기(180), 우선순위 인코더(181), 그리고 고정 회로(287)를 포함할 것이다. 다른 실시 예에 있어서, 기수점 시프팅 회로(286)는 기수 시프터(175) 및/또는 보상 기수 시프터(273)를 더 포함할 것이다. 다만 이는 예시적인 것이며, 본 발명의 기술적 사상은 이에 한정되지 않음이 이해될 것이다.
도시된 실시 예에 있어서, 근접 경로(299)는 앞서 설명된 바와 같이 마지막으로 근접 경로 결과(244)를 생성할 것이다. 다양한 실시 예들에 있어서, 스왑 멀티플렉서(170)를 포함하는 근접 경로(299)의 부분과 적어도 몇몇의 기수점 시프팅 회로(286)를 포함하는 부분은 서로 다른 파이프라인 단계들(예를 들어, FX1, FX2 등)에 포함될 것이다. 다만 이는 예시적인 것이며, 본 발명의 기술적 사상은 이에 한정되지 않음이 이해될 것이다.
도시된 실시 예에 있어서, 부동 소수점 덧셈기(100)는 원접 경로 결과(242)와 근접 경로 결과(244) 사이에서 선택하는 최후 결과 선택 회로(final result selector circuit)(297)를 포함할 것이다. 몇몇의 실시 예들에 있어서, 선택의 적어도 일부는 문턱 양보다 적은 두 개의 부동 소수점 피연산자들(202, 204)의 지수 부분의 차이에 기초할 것이다. (예를 들어, 지수 부분들의 차이의 자릿수보다 적거나 동일할 것이다)
종래의 부동 소수점 덧셈기에 있어서, 부동 소수점 덧셈기는 피연산자들의 지수 부분들의 차이가 충분히 작을 때(하나의 자릿수보다 작을 때), (원접 경로 결과와 반대되는) 근접 경로 결과를 선택하는 정규 결과 선택기 또는 멀티플레서를 포함할 것이다.
반대로, 도시된 실시 예에 있어서, 부동 소수점 덧셈기(100)는 참 뺄셈(true subtraction)이 발생할 때 그리고 적어도 일부의 대량 지움이 발생하거나 피연산자들(202, 204)의 지수 부분들이 정확히 동일한 경우에, (원접 경로 결과(242)와 반대되는) 근접 경로 결과(244)를 선택하는 결과 선택기 또는 멀티플렉서(290)를 포함할 것이다. 본 설명에 있어서, "참 뺄셈"은 피연산자들(202, 204) 중 하나가 음(negative)인 때를 말한다. 반면에, 본 설명에 있어서, "참 덧셈(true addition)"이 발생한다. 이러한 선택은 신호(241)에 의하여 제어될 것이다. 도시된 실시 예에 있어서, 결과 선택기 또는 멀티플렉서(290)는 부동 소수점 결과(248)를 출력할 것이다.
앞서 설명된 바와 같이, 다양한 실시 예들에 있어서, 최후 결과 선택 회로(297)는 또한 부동 소수점 결과(248)와 특수 결과(246) 사이에서 선택하는 최종 결과 선택기(ultimate result selector)(192)를 포함할 것이다. 다양한 실시 예들에 있어서, 특수 결과(246)는 전통적인 부동 소수점 덧셈기의 특수 또는 부-정규(non-normal) 결과와 유사할 것이나, 비정규 수들이 부동 소수점 덧셈기(100)에 의하여 처리되는 것을 수반하는 경우에는, 특수 결과(246)는 비정규 수의 경우는 포함하지 않을 것이다. 도시된 실시 예에 있어서, 최종 결과 선택기(192)는 앞서 설명된 바와 같이 최종 결과(149)를 출력할 것이다.
다양한 실시 예들에 있어서, 최후 결과 선택 회로(297)는 원접 경로 회로(298) 및 근접 경로 회로(299)의 경우(예를 들어, FX1, FX2 등)와 다른 서로 다른 파이프라인 단계(예를 들어, FX3 등)에 포함될 것이다. 다만 이는 예시적인 것이며, 본 발명의 기술적 사상은 이에 한정되지 않음이 이해될 것이다.
도 2a는 본 발명의 기술적 사상의 실시 예에 따른 시스템의 실시 예를 보여주는 블록도이다. 구체적으로, 도 2a는 도 1에서 도시된 바와 같은 부동 소수점 덧셈기의 원접 경로 부분(298)의 일 실시 예를 보여주는 도면이다. 도시된 실시 예에 있어서, 원접 경로(298)는 두 개의 64-비트 피연산자들인 SrcA(202) 및 SrcB(204)를 수신한다. 다만 상기의 예는 일 실시 예에 불과하며, 본 발명의 기술적 사상은 이에 한정되지 않음이 이해될 것이다.
앞서 설명된 바와 같이, 피연산자들(202, 204)은 64-비트 배정도(double precision) 부동 소수점 수를 포함한다. 이러한 실시 예에 있어서, 51번에서 0번까지의 52비트들은 수의 가수 또는 소수(mantissa, fraction, or significand) 부분이다. IEEE 754에서, 소수(fraction) 부분은 표현되지 않는 "히든 비트(hidden bit)"를 포함하며, 이는 지수 부분으로부터 비롯될 수 있으며, 소수 부분을 저장하기 위하여 할당된 비트들의 수가 일반적으로 허용하는 것보다 소수 부분에 1 비트의 정확도를 더 제공할 수 있다(예를 들어, 52-비트의 소수 부분은 53 비트의 정확도를 갖는다).
이러한 실시 예에 있어서, 62번에서 52번의 비트들은 수의 지수 부분이다. 앞서 설명된 바와 같이, 11-비트의 지수는 바이어스 되어 양의 지수와 음의 지수로 표현될 것이다. 다양한 실시 예들에 있어서, 정규 수를 바이어싱하는 지수는 제로 지수(zero exponent)가 1023의 값을 갖도록 하며, 지수들로 하여금 2^1023과 2^-1022 사이에 있도록 한다. 마지막으로, 63번의 비트는 소수가 양인지 혹은 음인지를 나타내는 부호 비트(sign bit)이다. 앞서 설명된 바와 같이, 다양한 실시 예들에 있어서, "정규(normal)" 수로 고려되는 숫자에 있어서, 이는 가수 또는 소수의 히든 비트 1을 포함한다.
도시된 실시 예에 있어서, 비정규 수 탐지 회로(252)는 피연산자들(202, 204)의 지수 부분(52번-62번 비트)을 수신할 것이다. 이러한 실시 예에 있어서, 비정규 수 탐지 회로(252)는 지수 부분으로부터 (숫자가 정규 또는 비정규 인지의 여부를 가리키는) 히든 비트를 얻을 것이다. 비정규 수는 지수 부분에 제로 값을 포함하기 때문에, 히든 비트는 지수 부분이 비-제로(non-zero) 인지의 여부를 판단하는 지수 부분 비트들의 OR 연산(ORing)에 의하여 유도될 것이다. 비정규 수 탐지 회로(252)의 각 결과(213)의 인버스(논리 NOT)는 프리-스왑드 신호들(210)을 생성하기 위하여 각 피연산자들(202, 204)의 소수 부분(51번에서 0번 비트들)과 연관될 것이다. 이러한 실시 예에 있어서, 프리-스왑드 신호들(210)은 가수의 전체-정확도(예를 들어, 53 비트)을 포함할 것이다.
앞서 설명된 바와 같이, 다양한 실시 예들에 있어서, 각 신호들(211)은 비정규 수 감지 회로(252)의 출력(213)인 DenormA 및 DenormB에 기초할 것이다. 이러한 실시 예들에 있어서, 각 리딩 비트 보상 회로(250)는 만약 각 피연산자가 비정규 및 정규라면 그들의 각 프리-스왑 피연산자들(210)을 시프트할 것이다.
앞서 설명된 바와 같이, 지수 차이 계산 회로(152)는 피연산자들(202, 204)의 전체(full) 지수 비트들(62번에서 52번의 비트)을 수신할 것이다. 이로부터, 피연산자(202)가 피연산자(204)보다 (자리수의 관점에서) 큰지 혹은 작은지를 가리키고, 따라서 피연산자들(202, 204) 중 어느 것이 큰 피연산자(212)가 되고 어느 것이 작은 피연산자(214)가 되는지를 가리키는 신호(111)가 생성될 것이다. 더욱이, 지수 차이 계산 회로(152)는 큰 피연산자(또는 앵커(anchor) 피연산자)(212)와 정렬하기 위하여 얼마나 많이 작은 피연산자(214)의 기수점이 시프트될 필요가 있는지를 가리키는 신호(112)를 생성할 것이다. 도시된 실시 예에 있어서, 이 신호(212)는 정렬 회로(154)에 의하여 사용될 것이다.
앞서 설명된 바와 같이, 스왑 멀티플렉스(150)를 통과한 후에 피연산자들(210)은 큰 피연산자(212) 및 작은 피연산자(214)로 지정될 것이다. 도시된 실시 예에 있어서, 피연산자들(212, 214)은 각각 가드 비트(guard bit)(G)와 반올림 비트(round bit)(R)를 포함할 것이다. 다양한 실시 예들에 있어서, 가드 비트는 반올림 에러들(rounding errors)에 대항하여 "보호(guard)"할 것이다. 이와 유사하게, 반올림 비트는 반올림 결정에 영향을 줄 것이다. 다양한 실시 예들에 있어서, 이러한 두 개의 가드 및 반올림 비트들은 연산에 있어서 둘 또는 그 이상의 비트들의 정확성을 더하여 줄 것이다. 더욱이, 회로(156)에 의하여 생성되는 스티키(sticky) 비트는 피연산자들(212, 214)의 너비(width)를 각각 56-비트가 되도록 할 것이다.
앞서 설명된 바와 같이, 도시된 실시 예에 있어서, 덧셈기(158)는 반올림 동작을 수행하는 60-비트 정수 덧셈기를 포함할 것이다. 이러한 실시 예에 있어서, 덧셈기(158)는 덧셈 동작 동안에 지수 시프트가 일어나지 않는 것으로 가정될 것이다. 반대로, 도시된 실시 예에 있어서, 덧셈기(160)는 오버프로우(overflow) 또는 1-비트 좌측 시프트를 계산하고 표준 정규 동작들을 수행하는 60-비트 정수 덧셈기를 포함할 것이다.
도시된 실시 예에 있어서, 선택 로직(218)은 세 가지의 가능한 경우를 고려한다. 만약 오버플로어가 발생했다면, 지수 부분은 증가할 것이다. 만약 뺄셈으로 인하여 그 결과가 정수를 포함하지 않는다면(예를 들어, 1.0 + (-0.75) = 0.25 등), 가수(significand)는 시프트될 것이며 지수 부분은 적절한 정규 수를 형성하기 위하여 조정될 것이다(예를 들어, 0.25는 2.5 x 10^-1 이 될 것이다). 도시된 실시 예에 있어서, 만약 두 비정규 수들의 덧셈이 정규 수가 된다면, 앞서 설명된 바와 같이 정규 수들과 비정규 수들 사이에서 바이어싱하는 지수가 동일하지 않음에 따라 결과의 지수 부분은 증가된다. 다만 이는 일 실시 예에 불과하며, 본 발명의 기술적 사상은 이에 한정되지 않음이 이해될 것이다.
도 2b는 본 발명의 기술적 사상의 실시 예에 따른 시스템의 일 실시 예를 보여주는 블록도이다. 구체적으로, 도 2b는 도 1에서 도시된 바와 같은 부동 소수점 덧셈기의 근접 경로 부분(299)의 일 실시 예를 보여준다. 도시된 실시 예에 있어서, 근접 경로(299)는 두 개의 64-비트 피연산자들인 SrcA(202) 및 SrcB(204)를 수신한다. 다만 이는 일 실시 예에 불과하며, 본 발명의 기술적 사상은 이에 한정되지 않음이 이해될 것이다.
다시, 도시된 실시 예에 있어서, 비정규 수 탐지 회로(253)는 피연산자들(202, 204)의 지수 부분을 수신한다. 이로부터, 피연산자가 정규인지 혹은 비정규인지의 여부가 판단될 것이다. 이와 유사하게, 비정규 수 탐지 회로(252)의 각 결과(213)의 인버스(논리 NOT)는 이후 프리-스왑드 신호들(210)을 생성하기 위하여 각 피연산자들(202, 204)의 소수 부분(51번에서 0번 비트들)과 연관될 것이다. 이러한 실시 예에 있어서, 프리-스왑드 신호들(210)은 가수(significand)의 전체-정확도(예를 들어, 53 비트들 등)를 포함할 것이다.
앞서 설명된 바와 같이, 도시된 실시 예에 있어서, 지수 차이 계산 회로(172)는 피연산자들(202, 204)의 지수들의 두 개의 최소 유효 비트들(least significant bit)(53번 및 52번 비트)을 수신할 것이다. 이러한 실시 예에 있어서, 피연산자들(202, 204)이 서로 하나의 자릿수 내인 근접 경로(299) 내인 것으로 가정 되었기 때문에, 지수 차이 계산 회로(172)는 2-비트들을 포함할 것이다.
도시된 실시 예에 있어서, 2-비트 지수 차이 계산 회로(172)의 타이밍 조건들(timing requirement)은 비정규 수 탐지 회로(253) 보다 작을 것이다. 이러한 실시 예에 있어서, 비정규 수 탐지 회로(253)는 전통적인 부동 소수점 덧셈 회로와 비교하여, 근접 경로의 타이밍 조건들을 증가시킬 것이다. 그러나, 부동 소수점 덧셈기(100)의 전반적인 임계(critical) 타이밍은 원접 경로(298) 내에 포함되며, 부동 소수점 덧셈기(100)의 전반적인 타이밍은 근접 경로(299)에서의 비정규 수 탐지 회로(253)의 추가로 인하여 증가되지 않을 것이다. 다만 이는 단지 일 실시 예에 불과하며, 본 발명의 기술적 사상은 이에 한정되지 않음이 이해될 것이다.
도시된 실시 예에 있어서, 신호(231)는 피연산자(202)가 피연산자(204)보다 큰 지의 여부를 고려할 뿐만 아니라 해당 피연산자가 비정규이고 다른 피연산자가 정규인지의 여부를 고려하도록 변경될 것이다. 이러한 실시 예에 있어서, 정규 및 비정규 수들 사이에서 바이어싱하는 지수에서의 차이에 대한 정정 혹은 보상이 (정렬 회로(171)를 통하여) 발생할 것이다.
도시된 실시 예에 있어서, 덧셈기(174)는 피연산자 A(232)로부터 피연산자 B(234)를 빼는 55-비트 덧셈기를 포함할 것이다. 더욱이, 덧셈기(176)는 피연산자 B(234)로부터 피연산자 A(232)를 빼는 55-비트 덧셈기를 포함할 것이다.
도시된 실시 예에 있어서, 리딩 제로 예상기(180)는 54-비트 벡터(137)를 출력할 것이다. 이러한 실시 예에 있어서, 우선순위 인코더(181)는 이러하 54-비트 벡터(137)를 6-비트의 부호화된 출력 값(138)으로 변화할 것이다. 다양한 실시 예들에 있어서, 최대 시프트 평가기(281)와 고정 탐지기(282)는 입력으로써 가장 큰 피연산자(237)의 지수 부분을 수신할 것이다.
도시된 실시 예에 있어서, 멀티플렉서(284)의 출력(238)은 고정 탐지기(282)가 비정규 고정 기능을 적용시켰는지의 여부에 기초하여 결과 신호(236)를 위한 새로운 지수 값을 생성할 것이다. 만약 고정 탐지기(282)가 기수점 시프팅의 양이 제한되거나 고정된 것으로 판단하였다면, 지수 값은 우선순위 인코더(181)에 의하여 제시되는 양(138) 만큼 감소한다. 다양한 실시 예들에 있어서, 이는 지수 값을 제로로 세팅하는 것을 포함할 것이다. 다시 말해서, 지수 값은 최대 시프트 평가기(281)에 의하여 제시된 양 만큼 감소된다. 또한, 다양한 실시 예들에 있어서, 정규 및 비정규 수들 사이에서 바이어싱하는 지수의 차이를 조정하기 위하여 지수의 추가적인 감소가 발생할 것이다.
도시된 실시 예에 있어서, 보상 기수 시프터(273)의 제어 로직 및 신호(239)는 만약 리딩 제로 예상기 평가(137)가 부정확하였고 결과 신호(236)가 정규 수인 경우에 기수점을 조정할 것이다. 만약 리딩 제로 예상기 평가(137)가 부정확하였고 결과 신호(236)가 (비정규 수이어야 함에도 불구) 비정규 수가 아닌 경우, 지수는 감소할 것이다. 만약 리딩 제로 예상기 평가(137)가 부정확하였고 결과 신호(236)가 (비정규 수가 아니어야 함에도 불구) 비정규 수인 경우, 지수는 차이를 정규와 비정규 지수 바이어싱의 차이를 조정하기 위하여 증가될 것이다. 다시, 도시된 실시 예에 있어서, 근접 경로 결과(244)가 생성될 것이다.
도 2c는 본 발명의 기술적 사상의 실시 예에 따른 시스템의 일 실시 예를 보여주는 도면이다. 구체적으로, 도 2c는 도 1에 도시된 부동 소수점 덧셈기의 선택 회로(297)의 실시 예를 보여주는 도면이다. 도시되 실시 예에 있어서, 선택 회로(297)는 원접 경로 결과(242), 근접 경로 결과(244) 그리고 특수 결과(246)의 세 가지 결과들을 수신한다. 다양한 실시 예들에 있어서, 특수 결과(246)는 복수의 특수 결과들(예를 들어, 비정규 수 예외(exception)을 포함하지 않는 산술 예외를 위한 것 등)을 포함할 것이다. 다만 이는 예시적인 것이며, 본 발명의 기술적 사상은 이에 한정되지 않음이 이해될 것이다.
앞서 설명된 바와 같이, 도시된 실시 예에 있어서, 결과 선택기(290)는 신호(241)에 기초하여 원접 경로 결과(242) 및 근접 경로 결과(244)에서 선택 동작을 수행할 것이다. 도시된 실시 예에 있어서, 만약 둘 다 참 뺄셈이 발생하는 경우, 그리고 대량 지움이 발생하거나 피연산자들(202, 204)의 지수의 차이가 제로인 경우에, 신호(241)는 근접 경로 결과(244)가 선택되도록 할 것이다. 다만 이는 예시적인 것에 불과하며, 본 발명의 기술적 사상은 이에 한정되지 않음이 이해될 것이다.
도시된 실시 예에 있어서, 시스템은 하나 또는 그 이상의 특수 연산 경로들(296)을 포함할 것이다. 각 경로는 앞서 설명된 바와 같이 하나 또는 그 이상의 산술 예외(arithmetic exceptions)를 연산하거나 처리할 것이다. 다양한 실시 예들에 있어서, 특수 연산 경로들(296)은 하나 또는 그 이상의 특수 결과들(246)을 발생할 것이다. 앞서 설명된 바와 같이, 최종 결과 선택기(192)는 부동 소수점 결과(248) 및 특수 결과(246) 사이에서 선택 동작을 수행할 것이다. 다양한 실시 예들에 있어서, 부동 소수점 덧셈기는 특수 연산 경로(296)를 포함하지 않거나 최종 결과 선택기(192)를 포함하지 않을 수 있을 것이다. 다만 이는 예시적인 것이며, 본 발명의 기술적 사상은 이에 한정되지 않음이 이해될 것이다.
도 3은 본 발명의 기술적 사상의 실시 예에 따른 기술(300)의 일 실시 예를 보여주는 순서도이다. 다양한 실시 예들에 있어서, 기술(300)은 도 1, 도 2a, 2b 및/또는 2c와 같은 시스템에 의하여 사용되거나 생성될 수 있다. 다만, 이는 예시적인 것이며, 본 발명의 기술적 사상은 이에 한정되지 않음이 이해될 것이다. 또한 기술(300)에 의하여 도시된 순서 또는 넘버링은 예시적인 것이며, 본 발명의 기술적 사상은 이에 한정되지 않음이 이해될 것이다.
블록(302)을 참고하면, 일 실시 예로, 앞서 설명된 바와 같이, 제 1 부동 소수점 피연산자 및 제 2 부동 소수점 피연산자가 수신될 것이다. 몇몇의 실시 예들에 있어서, 제 1 및 제 2 부동 소수점 피연산자들은 앞서 설명된 바와 같이 정규 수들, 비정규 수들, 또는 이들의 조합을 포함할 것이다. 다양한 실시 예들에 있어서, 이 블록(302)에 의하여 설명되는 하나 또는 그 이상의 동작들은 앞서 설명된 바와 같이 도 1, 2a, 2b, 2c 또는 도 1, 2a, 2b, 2c의 피연산자들(202, 204)에 의하여 수행될 것이다.
블록(304)를 참조하면, 일 실시 예로, 앞서 설명된 바와 같이 제 1 부동 소수점 피연산자 및 제 2 부동 소수점 피연산자의 덧셈 또는 뺄셈에 기초하여 원접 경로가 계산될 것이다. 다양한 실시 예들에 있어서, 앞서 설명된 바와 같이, 원접 경로 계산은 제 1 부동 소수점 피연산자, 제 2 부동 소수점 피연산자, 또는 원접 경로 결과의 적어도 어느 하나가 비정규 수를 포함하는 지의 여부와 무관하게 수행될 것이다. 다양한 실시 예들에 있어서, 앞서 설명된 바와 같이, 만약 제 1 부동 소수점 피연산자 및 제 2부동 소수점 피연산자 모두가 비정규 수를 포함하고 원접 경로 결과가 정규 수를 포함한다면, 원접 경로의 계산은 원접 경로 결과의 지수 부분을 조정하는 것을 포함할 것이다. 몇몇의 실시 예들에 있어서, 앞서 설명된 바와 같이, 만약 제 1 부동 소수점 피연산자 및 제 2부동 소수점 피연산자 모두가 비정규 수를 포함하고 원접 경로 결과가 정규 수를 포함한다면, 원접 경로의 계산은 원접 경로 결과의 지수 부분을 조정하는 것을 포함할 것이다. 다양한 실시 예들에 있어서, 이 블록(304)에 의하여 설명되는 하나 또는 그 이상의 동작들은 앞서 설명된 바와 같이 도 1, 2a, 2b, 2c 또는 도 1, 2a, 또는 도 2c의 원접 경로 회로(298), 도 1 또는 도 2a의 리딩 비트 보상 회로(250), 도 1 또는 도 2a의 정수 덧셈 회로(296)에 의하여 수행될 것이다.
블록(306)을 참조하면, 일 실시 예로, 앞서 설명된 바와 같이, 제 1 부동 소수점 피연산 및 제 2 부동 소수점 피연산자의 뺄셈에 기초하여 근접 경로 결과가 계산될 것이다. 일 실시 예로, 앞서 설명된 바와 같이, 제 1 부동 소수점 피연산자, 제 2 부동 소수점 피연산자, 또는 근접 경로 결과 중 적어도 하나가 비정규 수를 포함하는 지의 여부와 무관하게, 계산이 수행될 것이다. 다양한 실시 예로, 앞서 설명된 바와 같이, 만약 근접 경로 결과가 비정규 수를 포함한다면, 근접 경로 결과를 계산하는 것은 근접 경로 결과의 기수 시프팅을 조정하는 것을 포함할 것이다. 몇몇의 실시 예들에 있어서, 앞서 설명된 바와 같이, 만약 부동 소수점 피연산자가 비정규 수를 포함한다면, 근접 경로 결과를 계산하는 것은 부동 소수점 피연산자의 기수점 시프팅을 조정하는 것을 포함할 것이다. 다양한 실시 예들에 있어서, 이 블록(306)에 의하여 설명되는 하나 또는 그 이상의 동작들은 앞서 설명된 바와 같이 도 1, 2a, 2b, 2c 또는 도 1, 2b, 또는 도 2c의 근접 경로 회로(299), 도 1 또는 도 2b의 정렬 회로(171), 도 1 또는 도 2b의 기수점 시프팅 회로(286), 도 1 또는 도2b의 보상 기수 시프터(273)에 의하여 수행될 것이다.
블록(308)을 참조하면, 일 실시 예로, 앞서 설명된 바와 같이, 만약 근접 경로 결과가 비정규 수를 포함한다면, 근접 경로 결과를 계산하는 것은 근접 경로 결과의 기수 시프팅의 양을 제한하는 것을 포함할 것이다. 다양한 실시 예들에 있어서, 앞서 설명된 바와 같이, 근접 경로 결과를 계산하는 것은 근접 경로 결과의 기수 점을 시프트하기 위한 평가된 양을 평가하는 것을 포함한 것이다. 이러한 실시 예에 있어서, 앞서 설명된 바와 같이, 근접 경로 결과를 계산하는 것은 근접 경로 결과가 비정규 수인지의 여부를 판단하는 것을 포함할 것이다. 이러한 일 실시 예에 있어서, 앞서 설명된 바와 같이, 근접 경로 결과를 평가하는 것은 근접 경로 결과의 기수 시프팅의 양을 제한하여 기수 시??ㅇ의 최대 양을 초과하지 않도록 하는 것을 포함할 것이다. 다양한 실시 예들에 있어서, 이 블록(308)에 의하여 설명되는 하나 또는 그 이상의 동작들은 앞서 설명된 바와 같이 도 1, 2a, 2b, 2c 또는 도 1, 2b, 또는 도 2c의 근접 경로 회로(299), 도 1 또는 도 2b의 고정 회로(287), 도 1 또는 도 2b의 기수점 시프팅 회로(286), 도 1 또는 도2b의 보상 기수 시프터(273) 또는 기수 시프터(175)에 의하여 수행될 것이다.
도 4는 본 발명의 기술적 사상에 따라 구현된 반도체 장치들을 포함하는 정보 처리 시스템(400)의 일 예를 보여주는 블록도이다.
도 4를 참조하면, 정보 처리 시스템(400)은 본 발명의 기술적 사상에 따라 구현된 하나 또는 그 이상의 장치들을 포함할 것이다. 다른 실시 예에 있어서, 정보 처리 시스템(400)은 본 발명의 기술적 사상에 따른 하나 또는 그 이상의 기술을 사용하거나 시행할 것이다.
다양한 실시 예들에 있어서, 정보 처리 시스템(400)은, 예를 들어, 랩톱, 데스크톱, 워크스테이션, 서버, 블레이드(blade) 서버, 개인용 디지털 기기, 스마트폰, 태블릿, 그리고 다른 적절한 컴퓨터 등과 같은 컴퓨팅 시스템, 또는 그것의 가상 머신(virtual machine) 또는 가상 컴퓨팅 장치를 포함할 것이다. 다양한 실시 예들에 있어서, 정보 처리 시스템(400)은 사용자(미도시)에 의하여 사용될 것이다.
본 발명의 기술적 사상의 실시 예에 따른 정보 처리 시스템(400)은 중앙 처리 장치(CPU), 로직, 또는 프로세서(410)를 더 포함할 것이다. 몇몇의 실시 예들에 있어서, 프로세서(410)는 하나 또는 그 이상의 기능 유닛 블록들(functional unit blocks; FUBs) 또는 조합 논리 블록들(combinational logic blocks; CLBs)(415)을 포함할 것이다. 이러한 실시 예에 있어서, 조합 논리 블록은 다양한 Boolean 논리 동작들(예를 들어, NAND, NOR, NOT, XOR 등), 안정화 논리 장치들(예를 들어, 플립-플롭, 래치 등), 다른 논리 장치들, 또는 그것의 조합들을 포함할 것이다. 이러한 조합 논리 동작들은 원하는 결과를 얻기 위하여 입력 신호들을 단순한 또는 복잡한 방법으로 처리할 것이다. 비록 동기식 조합 논리 동작들이 요구되는 것으로 앞선 예에서 예시적으로 설명되었으나, 본 발명의 기술적 사상은 이에 한정되는 것은 아니며 비동기식 동작들 또는 그것들을 함께 혼합하여 사용하는 것에 대해서도 본 발명의 기술적 사상이 적용될 수 있음이 이해될 것이다. 일 실시 예로써, 조합 논리 동작들은 복수의 CMOS 트랜지스터들을 포함할 것이다. 다양한 실시 예들에 있어서, 이러한 CMOS 트랜지스터들은 논리 동작들을 수행하는 게이트들로 정렬될 것이다. 한편 다른 기술들 역시 본 발명의 기술적 사상의 범위 내에서 적용 및 응용되어 사용될 수 있음이 이해될 것이다.
본 발명의 기술적 사상에 따른 정보 처리 시스템(400)은 휘발성 메모리(420)(예를 들어, RAM)를 더 포함할 것이다. 본 발명의 기술적 사상에 따른 정보 처리 시스템(400)은 비휘발성 메모리(430)(예를 들어, 하드 드라이브, 광학 메모리, NAND, 플래시 메모리 등)를 더 포함할 것이다. 몇몇의 실시 예들에 있어서, 휘발성 메모리(420), 비휘발성 메모리(430), 또는 이들의 조합 또는 이들의 부분들은 "저장 매체"라 표현될 수 있을 것이다. 다양한 실시 예들에 있어서, 휘발성 메모리(420) 및/또는 비휘발성 메모리(430)는 반영구 또는 실질적으로 영구적인 형태로 데이터를 저장할 것이다.
다양한 실시 예들에 있어서, 정보 처리 시스템(400)은 정보 처리 시스템(400)으로 하여금 통신 네트워크를 통한 통하여 통신하게 만드는 하나 또는 그 이상의 네트워크 인터페이스(440)를 더 포함할 것이다. Wi-Fi 프로토콜의 예들은 IEEE 802.11g, IEEE 802.11n 등을 포함할 수 있으나, 이에 한정되는 것은 아니다. 셀룰러(cellular) 프로토콜의 예들은, IEEE 802.16m (a.k.a. Wireless-MAN (Metropolitan Area Network) Advanced), Long Term Evolution(LTE) Advanced), Enhanced Data rates for GSM (Global System for Mobile Communications) Evolution (EDGE), Evolved High-Speed Packet Access (HSPA+) 등을 포함할 수 있으나 이에 한정되는 것은 아니다. 유선(wired) 프로토콜 IEEE 802.3 (a.k.a. Ethernet), Fibre Channel, Power Line communication (예를 들어, HomePlug, IEEE 1901, 등)을 포함할 수 있으나, 이에 한정되는 것은 아니다. 한편 상술한 설명은 예시적인 것에 불과하며, 본 발명의 기술적 사상은 이에 한정되지 않음이 이해될 것이다.
본 발명의 기술적 사상에 따른 정보 처리 시스템(400)은 사용자 인터페이스 유닛(450)(예를 들어, 디스플레이 어댑터, 햅틱(haptic) 인터페이스, 휴먼 인터페이스 장치 등)을 더 포함할 것이다. 다양한 실시 예들에 있어서, 이러한 사용자 인터페이스 유닛(450)은 사용자로부터 입력을 수신하거나 및/또는 사용자에게 출력을 제공할 것이다. 다른 종류의 장치들도 사용자와의 상호 작용을 위하여 역시 사용될 수 있을 것이다. 예를 들어, 사용자로부터 제공받는 피드백은 비쥬얼 피드백, 오디오 피드백, 촉감 피드백과 같은 어느 형태의 센서 피드백(sensory feedback)일 수 있다. 사용자로부터의 입력이 음향, 말, 또는 촉각 입력을 포함하여 어느 형태로든 수신될 수 있을 것이다.
다양한 실시 예들에 있어서, 정보 처리 장치(400)는 하나 또는 그 이상의 다른 장치들 또는 다른 하드웨어 구성요소들(460)(예를 들어, 디스플레이, 모니터, 키보드, 마우스, 카메라, 지문 인식기, 비디오 프로세서 등)을 포함할 것이다. 다만 이는 예시적인 것에 불과하며, 본 발명의 기술적 사상은 이에 한정되지 않음이 이해될 것이다.
본 발명의 기술적 사상에 따른 정보 처리 시스템(400)은 하나 또는 그 이상의 시스템 버스(405)를 더 포함할 것이다. 이러한 실시 예에 있어서, 시스템 버스(405)는 프로세서(410), 휘발성 메모리(420), 비휘발성 메모리(430), 네트워크 인터페이스(440), 유저 인터페이스 유닛(450), 하나 또는 그 이상의 하드웨어 구성요소들(460)과 전기적으로 연결될 것이다. 프로세서(410)에 의하여 처리되는 데이터 또는 비휘발성 메모리(430)의 외부로부터 입력되는 데이터는 비휘발성 메모리(430) 또는 휘발성 메모리(420) 내에 저장될 것이다.
다양한 실시 예들에 있어서, 정보 처리 시스템(400)은 하나 또는 그 이상의 소프트웨어 구성요소들(470)을 포함하거나 실행할 것이다. 몇몇의 실시 예들에 있어서, 소프트웨어 구성요소들(470)은 OS(operating system) 및/또는 어플리케이션을 포함할 것이다. 몇몇의 실시 예들에 있어서, OS는 어플리케이션에 하나 또는 그 이상의 서비스들을 제공하고, 어플리케이션과 정보 처리 시스템(400)의 다양한 하드웨어 구성요소들(예를 들어, 프로세서(410), 네트워크 인터페이스(440) 등) 사이에서 중간 매개로 운영하거나 동작할 것이다. 이러한 실시 예에 있어서, 정보 처리 시스템(400)은 하나 또는 그 이상의 네이티브(native) 어플리케이션을 더 포함할 것이며, 이는 부분적으로 설치될 것이며(예를 들어, 비휘발성 메모리(430) 내 등에 설치), 프로세서(410)에 의하여 직접적으로 수행되거나 OS와 직접적으로 연동될 것이다. 이러한 실시 예에 있어서, 네이티브 어플리케이션들은 프리-컴파일드 머신 수행 코드(pre-compiled machine executable code)를 더 포함할 것이다. 몇몇의 실시 예들에 있어서, 네이티브 어플리케이션들은 소스 또는 오브젝트(object)를 실행 가능한 코드로 번역하는 스크립 번역기(script interpreter)(예를 들어, C shell(csh), AppleScript, AutoHotkey 등) 또는 비쥬얼 실행 머신(VM)(예를 들어, Java Virtual Machine, Microsoft Common Language Runtime 등)을 포함할 것이며, 그 후 프로세서(410)에 의하여 처리될 것이다.
앞서 설명된 반도체 장치들은 다양한 패키징 기술들을 이용하여 캡슐화(encapsulate)될 것이다. 예를 들어, 본 발명의 기술적 사상에 따른 반도체 장치들은 package on package(POP) 기술, ball grid arrays (BGAs) 기술, a chip scale packages (CSPs) 기술, plastic leaded chip carrier (PLCC) 기술, plastic dual in-line package (PDIP) 기술, die in waffle pack 기술, die in wafer form 기술, chip on board (COB) 기술, ceramic dual in-line package (CERDIP) 기술, plastic metric quad flat package (PMQFP) 기술, plastic quad flat package (PQFP) 기술, small outline package (SOIC) 기술, shrink small outline package (SSOP) 기술, thin small outline package (TSOP) 기술, thin quad flat package (TQFP) 기술, system in package (SIP) 기술, multi-chip package (MCP) 기술, wafer-level fabricated package (WFP) 기술, wafer-level processed stack package (WSP) 기술, 또는 이 분야의 기술자에게 잘 알려진 기술 중 어느 하나를 이용하여 캡슐화 될 것이다.
입력 데이터를 운용하여 출력을 생성하는 것 기능들을 실행하기 위하여, 방법 단계들이 컴퓨터 프로그램을 수행하는 하나 또는 그 이상의 프로그램 가능한 프로세서들에 의하여 수행될 것이다. 방법 단계들은 또한 FPGA(field programmable gate array) 또는 ASIC(application-specific integrated circuit)와 같은 특수 목적 논리 회로에 의하여 수행되거나, 또는 장치들이 해당 특수 목적 회로로써 실행될 것이다.
다양한 실시 예들에 있어서, 컴퓨터 읽기 가능 매체는 실행 동작 시에 장치들로 하여금 상기 방법 단계들의 적어도 하나의 부분을 수행하도록 하는 명령어들(instructions)을 포함할 것이다. 몇몇의 실시 예들에 있어서, 컴퓨터 읽기 가능 매체는 자기 매체(magnetic medium), 광학 매체, 다른 매체 또는 그들의 조합(예를 들어, CD-ROM, 하드 드라이브, read-only 메모리, 플래시 드라이브 등)에 포함될 것이다. 이러한 실시 예에 있어서, 컴퓨터 읽기 가능 매체는 명백히 상품으로 구현되거나 상품에 체현되어 구현될 수 있다.
한편, 상술한 설명은 예시적인 것이며, 본 발명의 기술적 사상은 이에 한정되지 않음이 이해될 것이다. 본 발명의 기술적 사상은 다양하게 적용 및 응용될 수 있으며, 본 발명의 기술적 사상이 적용된 다양한 적용 예 및 응용 예들은 모두 본 발명의 기술적 사상의 범주 내에 속하는 것이 이해될 것이다.
100: 부동 소수점 덧셈기 111: 크기 차이 신호
150: 스왑 멀티플렉서 152: 지수 차이 계산 회로
154: 기수 정렬 회로 158, 160: 덧셈기들
180: 리딩 제로 예상기 181: 우선순위 인코더
192: 최종 결과 선택기 213: 비정규 지표 신호
252: 비정규 수 탐지 회로 264: 정수 덧셈 선택기
273: 리딩 제로 예상기 정정 로직 281: 최대 시프트 평가기
282: 고정 탐지기 286: 기수점 시프팅 회로
287: 고정 회로 296: 정수 덧셈 회로
297: 최후 결과 선택 회로 400: 정보 처리 시스템
420: 휘발성 메모리 430: 비휘발성 메모리
440: 네트워크 인터페이스 450: 유저 인터페이스
460: 다른 하드웨어 구성요소들

Claims (20)

  1. 부동 소수점 덧셈 유닛을 포함하는 장치에 있어서,
    상기 부동 소수점 덧셈 유닛은 두 개의 부동 소수점 피연산자들에 대한 덧셈 또는 뺄셈 동작에 의하여 부동 소수점 결과를 생성하고, 각 부동 소수점 피연산자는 소수 부분 및 지수 부분을 포함하며,
    상기 부동 소수점 덧셈 유닛은
    상기 두 개의 부동 소수점 피연산자들 중 어느 하나 또는 상기 부동 소수점 결과가 각각 정규 수 또는 비정규 수를 포함하는지의 여부와는 무관하게 상기 두 개의 부동 소수점 피연산자들의 덧셈 또는 뺄셈 중 어느 하나에 기초하여 원접 경로 결과를 계산하는 원접 경로 회로;
    상기 두 개의 부동 소수점 피연산자들 중 어느 하나 또는 상기 부동 소수점 결과가 각각 정규 수 또는 비정규 수를 포함하는지의 여부와는 무관하게 상기 두 개의 부동 소수점 연산자들의 상기 뺄셈에 기초하여 근접 경로 결과를 계산하는 근접 경로 회로; 그리고
    상기 두 개의 부동 소수점 피연산들의 지수 부분들의 차이의 양에 적어도 일부 기초하여, 상기 원접 경로 결과 및 상기 근접 경로 결과 중 어느 하나를 선택하는 최후 결과 선택 회로를 포함하며,
    상기 근접 경로 회로는:
    상기 근접 경로 결과의 기수 시프팅을 수행하는 기수 시프터 회로;
    리딩 제로 예상기를 기반으로 상기 근접 경로 결과가 비정규 수를 포함하는지를 결정하고, 상기 근접 경로 결과가 상기 비정규 수를 포함하는 경우에 상기 근접 경로 결과의 기수 시프팅을 제한하는 고정 회로; 그리고
    상기 리딩 제로 예상기가 상기 비정규 수를 잘못 예상한 경우에 추가적인 기수 시프트를 제공하는 정규-투-비정규 정정 회로를 포함하는, 장치.
  2. 제 1 항에 있어서,
    상기 최후 결과 선택 회로는 상기 두 개의 피연산자들의 지수 부분이 각각 서로 동일한지의 여부 및 상기 부동 소수점 덧셈 유닛이 참 뺄셈을 통하여 상기 부동 소수점 결과를 발생했는지의 여부 중 적어도 일부에 기초하여 상기 원접 경로 결과 및 상기 근접 경로 결과 중 어느 하나를 선택하는, 장치.
  3. 제 1 항에 있어서,
    상기 원접 경로 회로는 상기 두 개의 부동 소수점 피연산자들 모두가 상기 비정규 수를 포함하고 상기 원접 경로 결과가 정규 수를 포함하는 경우에 상기 원접 경로 결과의 지수 부분을 조정하는 비정규-투-정규 정정 회로를 포함하는, 장치.
  4. 제 1 항에 있어서,
    상기 원접 경로 회로는 상기 두 개의 부동 소수점 피연산자들 중 어느 하나가 상기 비정규 수를 포함하는지의 여부를 판단하는 비정규 수 탐지 회로를 포함하는, 장치.
  5. 제 1 항에 있어서,
    상기 원접 경로 회로는 부동 소수점 피연산자가 상기 비정규 수를 포함하는 경우에 상기 부동 소수점 피연산자의 기수점을 시프트하는 리딩 비트 보상 회로를 포함하는, 장치.
  6. 삭제
  7. 제 1 항에 있어서,
    상기 근접 경로 회로는 상기 두 개의 부동 소수점 피연산자들 중 어느 하나가 상기 비정규 수를 포함하는 지의 여부를 판단하는 비정규 수 탐지 회로를 포함하는, 장치.
  8. 제 1 항에 있어서,
    상기 근접 경로 회로는 상기 근접 경로 결과의 기수점을 시프트하는 양을 평가하는 기수점 시프팅 회로를 더 포함하며,
    상기 기수점 시프팅 회로는
    상기 근접 경로 결과의 기수점을 시프트하도록 평가된 양을 평가하는 리딩 제로 평가 회로; 및
    상기 근접 경로 결과가 상기 비정규 수를 포함하는 경우에 상기 근접 경로 회로의 기수 시프팅의 상기 양을 제한하여 기수점 시프팅의 최대 양을 초과하지 않도록 하는 상기 고정 회로를 포함하는, 장치.
  9. 제 1 항에 있어서,
    상기 부동 소수점 덧셈 유닛은 상기 두 개의 부동 소수점 피연산자들의 곱셈에 의하여 부동 소수점 결과를 생성하지 않는, 장치.
  10. 제 1 부동 소수점 피연산자 및 제 2 부동 소수점 피연산자를 수신하는 단계;
    상기 제 1 부동 소수점 피연산자, 상기 제 2 부동 소수점 피연산자, 또는 원접 경로 결과가 비정규 수를 포함하고 있는지의 여부와 무관하게, 상기 제 1 부동 소수점 피연산자 및 상기 제 2 부동 소수점 피연산자의 덧셈 또는 뺄셈 중 어느 하나에 기초하여 상기 원접 경로 결과를 계산하는 단계;
    상기 제 1 부동 소수점 피연산자, 상기 제 2 부동 소수점 피연산자, 또는 근접 경로 결과가 비정규 수를 포함하고 있는지의 여부와 무관하게, 상기 제 1 부동 소수점 피연산자와 상기 제 2 부동 소수점 피연산자의 뺄셈에 기초하여 상기 근접 경로 결과를 계산하는 단계; 그리고
    상기 제 1 부동 소수점 피연산자의 지수 부분과 상기 제 2 부동 소수점 피연산자의 지수 부분 사이의 차이의 적어도 일부에 기초하여 상기 원접 경로 결과와 상기 근접 경로 결과 중 어느 하나를 선택하는 단계를 포함하며,
    상기 근접 경로 결과를 계산하는 단계는:
    상기 근접 경로 결과의 기수 시프팅을 수행하는 단계;
    리딩 제로 예상기를 기반으로 상기 근접 경로 결과가 비정규 수를 포함하는지를 결정하는 단계;
    상기 근접 경로 결과가 상기 비정규 수를 포함하는 경우에 상기 근접 경로 결과의 기수 시프팅의 양을 제한하는 단계; 그리고
    상기 근접 경로 결과의 기수 시프팅 후에, 상기 리딩 제로 예상기가 상기 비정규 수를 잘못 예상한 경우에 추가적인 기수 시프트를 제공하는 단계를 포함하는, 방법.
  11. 제 10 항에 있어서,
    상기 원접 경로 결과와 상기 근접 경로 결과 중 어느 하나를 선택하는 단계는
    상기 근접 경로 결과가 참 뺄셈을 수행하는 것을 포함하는 경우에만 상기 근접 경로 결과를 선택하는 단계를 포함하는, 방법.
  12. 제 10 항에 있어서,
    상기 원접 경로 결과를 계산하는 단계는
    상기 제 1 부동 소수점 피연산자 및 상기 제 2 부동 소수점 피연산자 모두가 상기 비정규 수를 포함하고 상기 원접 경로 결과가 정규 수를 포함하는 경우에, 상기 원접 경로 결과의 지수 부분을 조정하는 단계를 포함하는, 방법.
  13. 제 10 항에 있어서,
    상기 원접 경로 결과를 계산하는 단계는
    상기 제 1 부동 소수점 피연산자 및 상기 제 2 부동 소수점 피연산자 모두가 상기 비정규 수를 포함하고 상기 원접 경로 결과가 정규 수를 포함하는 경우에, 상기 원접 경로 결과의 지수 부분을 조정하는 단계를 포함하는, 방법.
  14. 제 10 항에 있어서,
    상기 근접 경로 결과를 계산하는 단계는
    상기 근접 경로 결과의 기수점을 시프트하기 위하여 평가된 양을 평가하는 단계; 그리고
    상기 근접 경로 결과가 상기 비정규 수를 포함한다면, 기수 시프팅의 최대 양을 초과하지 않도록 상기 근접 경로 결과의 기수 시프팅의 양을 한정하는 단계를 포함하는, 방법.
  15. 제 10 항에 있어서,
    상기 근접 경로 결과를 계산하는 단계는
    부동 소수점 피연산자가 상기 비정규 수를 포함하는 경우에 상기 부동 소수점 피연산자의 기수점을 시프팅하는 단계를 포함하는, 방법.
  16. 시스템에 있어서,
    상기 시스템은
    두 개의 부동 소수점 피연산자들을 저장하는 메모리; 및
    프로세서를 포함하며,
    상기 프로세서는
    상기 두 개의 부동 소수점 피연산자들을 서로 더하거나 빼는 것에 의하여 부동 소수점 결과를 생성하는 부동 소수점 덧셈 유닛을 포함하고,
    상기 두 개의 부동 소수점 피연산자들은 각각 소수 부분과 지수 부분을 포함하며,
    상기 부동 소수점 덧셈 유닛은
    상기 두 개의 부동 소수점 피연산자들 중 어느 하나 또는 상기 부동 소수점 결과가 정규 수 또는 비정규 수를 포함하는지의 여부와 무관하게, 상기 두 개의 부동 소수점 피연산자들의 덧셈 또는 뺄셈 중 어느 하나에 기초하여 원접 경로 결과를 계산하는 원접 경로 회로;
    상기 두 개의 부동 소수점 피연산자들 중 어느 하나 또는 상기 부동 소수점 결과가 정규 수 또는 비정규 수를 포함하는지의 여부와 무관하게, 상기 두 개의 부동 소수점 피연산자들의 뺄셈에 기초하여 근접 경로 결과를 계산하는 근접 경로 회로; 그리고
    상기 두 개의 부동 소수점 연산자들의 지수 부부의 차이의 양에 적어도 일부 기초하여, 상기 원접 경로 결과 및 상기 근접 경로 결과 중 어느 하나를 선택하는 최후 결과 선택 회로를 포함하며,
    상기 근접 경로 회로는:
    상기 근접 경로 결과의 기수 시프팅을 수행하는 기수 시프터 회로;
    리딩 제로 예상기를 기반으로 상기 근접 경로 결과가 비정규 수를 포함하는지를 결정하고, 상기 근접 경로 결과가 상기 비정규 수를 포함하는 경우에 상기 근접 경로 결과의 기수 시프팅을 제한하는 고정 회로; 그리고
    상기 리딩 제로 예상기가 상기 비정규 수를 잘못 예상한 경우에 추가적인 기수 시프트를 제공하는 정규-투-비정규 정정 회로를 포함하는, 시스템.
  17. 제 16 항에 있어서,
    상기 최후 결과 선택 회로는 상기 두 개의 부동 소수점 피연산자들의 각 지수 부분들이 서로 동일한지의 여부 및 상기 부동 소수점 덧셈 유닛이 참 뺄셈을 통하여 상기 부동 소수점 결과를 발생하였는지의 여부에 적어도 일부 기초하여, 상기 원접 경로 결과 및 상기 근접 경로 결과 중 어느 하나를 선택하는, 시스템.
  18. 제 16 항에 있어서,
    상기 원접 경로 회로는
    상기 두 개의 부동 소수점 피연산자들 모두가 상기 비정규 수를 포함하고 상기 원접 경로 결과가 정규 수를 포함하는 경우에 상기 원접 경로 결과의 지수 부분을 조정하는 비정규-투-정규 정정 회로를 포함하는, 시스템.
  19. 제 16 항에 있어서,
    상기 원접 경로 회로는
    부동 소수점 피연산자가 상기 비정규 수를 포함하는 경우에 상기 부동 소수점 피연산자의 기수점을 시프트하는 리딩 비트 보상 회로를 포함하는, 시스템.
  20. 제 16 항에 있어서,
    상기 근접 경로 회로는
    상기 근접 경로 결과의 기수점을 시프트하기 위한 평가된 양을 평가하는 리딩 제로 평가 회로;
    상기 근접 경로 결과가 상기 비정규 수를 포함하는 경우에 상기 근접 경로 결과의 기수점을 시프트하기 위한 비정규 고정 양을 생성하는 상기 고정 회로; 그리고
    상기 평가된 양 또는 상기 비정규 고정 양에 기초하여, 상기 근접 경로 결과가 상기 비정규 수를 포함하는지의 여부에 따라, 상기 근접 경로 결과의 기수점을 시프트하는 상기 기수 시프터 회로를 포함하며,
    상기 비정규 고정 양은 상기 비정규 수의 대량 취소를 방지하기에 충분히 작은 값을 포함하는, 시스템.

KR1020140103779A 2013-11-21 2014-08-11 풀 인-라인 비정규 서포트를 수반하는 높은 성능의 부동 소수점 덧셈기 KR102200913B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201361907374P 2013-11-21 2013-11-21
US61/907,374 2013-11-21
US14/161,671 2014-01-22
US14/161,671 US9830129B2 (en) 2013-11-21 2014-01-22 High performance floating-point adder with full in-line denormal/subnormal support

Publications (2)

Publication Number Publication Date
KR20150059082A KR20150059082A (ko) 2015-05-29
KR102200913B1 true KR102200913B1 (ko) 2021-01-11

Family

ID=53174408

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140103779A KR102200913B1 (ko) 2013-11-21 2014-08-11 풀 인-라인 비정규 서포트를 수반하는 높은 성능의 부동 소수점 덧셈기

Country Status (6)

Country Link
US (2) US9830129B2 (ko)
JP (1) JP6415236B2 (ko)
KR (1) KR102200913B1 (ko)
CN (1) CN104657107B (ko)
DE (1) DE102014114074A1 (ko)
TW (1) TWI641992B (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10157059B2 (en) * 2016-09-29 2018-12-18 Intel Corporation Instruction and logic for early underflow detection and rounder bypass
US10140093B2 (en) * 2017-03-30 2018-11-27 Arm Limited Apparatus and method for estimating a shift amount when performing floating-point subtraction
US10747501B2 (en) * 2017-08-31 2020-08-18 Qualcomm Incorporated Providing efficient floating-point operations using matrix processors in processor-based systems
US10275218B1 (en) * 2017-10-25 2019-04-30 Arm Limited Apparatus and method for subtracting significand values of floating-point operands
US10824692B2 (en) * 2018-10-12 2020-11-03 Google Llc Low-power adder circuit
JP7115211B2 (ja) * 2018-10-18 2022-08-09 富士通株式会社 演算処理装置および演算処理装置の制御方法
US11074100B2 (en) * 2019-02-27 2021-07-27 Micron Technology, Inc. Arithmetic and logical operations in a multi-user network
GB2581542A (en) * 2019-07-19 2020-08-26 Imagination Tech Ltd Apparatus and method for processing floating-point numbers
GB2607364B (en) * 2021-11-18 2023-05-24 Imagination Tech Ltd Floating point adder

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2507183B2 (ja) * 1989-11-28 1996-06-12 松下電器産業株式会社 浮動小数点加減算装置
JP2013012203A (ja) * 2011-06-29 2013-01-17 Arm Ltd 浮動小数点加算器

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS588926A (ja) * 1981-07-09 1983-01-19 Matsushita Electric Ind Co Ltd 複合調理器
US4926369A (en) * 1988-10-07 1990-05-15 International Business Machines Corporation Leading 0/1 anticipator (LZA)
US5146419A (en) * 1989-11-28 1992-09-08 Matsushita Electric Industrial Co., Ltd. Floating point addition-subtraction apparatus
US5267186A (en) * 1990-04-02 1993-11-30 Advanced Micro Devices, Inc. Normalizing pipelined floating point processing unit
US5372007A (en) * 1993-10-15 1994-12-13 Garbo; Paul W. Expanding high-pressure fuel gas and steam in a turbine to drive an electric generator before burning the gas to make steam
US5493520A (en) * 1994-04-15 1996-02-20 International Business Machines Corporation Two state leading zero/one anticipator (LZA)
RU95107478A (ru) * 1995-05-18 1997-02-10 А.И. Грушин Способ устранения старших незначащих цифр при вычислениях с плавающей запятой и устройство для его осуществления
US5808926A (en) * 1995-06-01 1998-09-15 Sun Microsystems, Inc. Floating point addition methods and apparatus
JP3313560B2 (ja) * 1996-01-31 2002-08-12 株式会社日立製作所 浮動小数点演算処理装置
JP3544846B2 (ja) * 1997-02-13 2004-07-21 株式会社東芝 論理回路及び浮動小数点演算装置
US6405232B1 (en) * 1999-08-19 2002-06-11 National Semiconductor Corporation Leading bit prediction with in-parallel correction
US20030055859A1 (en) * 2001-05-04 2003-03-20 Southern Methodist University Fast IEEE floating-point adder
US6988115B2 (en) * 2001-05-04 2006-01-17 Broadcom Corporation Method and apparatus to correct leading one prediction
JP2003029960A (ja) * 2001-06-07 2003-01-31 Fujitsu Ltd 浮動小数点加算器のショートパスにおける丸めステップの排除
US20030115236A1 (en) * 2001-06-07 2003-06-19 Ajay Naini Elimination of rounding step in the short path of a floating point adder
US7707236B2 (en) * 2004-08-13 2010-04-27 Analog Devices, Inc. Methods and apparatus for an efficient floating point ALU
US20060101244A1 (en) 2004-11-10 2006-05-11 Nvidia Corporation Multipurpose functional unit with combined integer and floating-point multiply-add pipeline
US7451172B2 (en) 2005-02-10 2008-11-11 International Business Machines Corporation Handling denormal floating point operands when result must be normalized
US7698353B2 (en) 2005-09-14 2010-04-13 Freescale Semiconductor, Inc. Floating point normalization and denormalization
US8266198B2 (en) * 2006-02-09 2012-09-11 Altera Corporation Specialized processing block for programmable logic device
US8463835B1 (en) 2007-09-13 2013-06-11 Xilinx, Inc. Circuit for and method of providing a floating-point adder
US8214416B2 (en) 2008-07-28 2012-07-03 Agere Systems Inc. Floating-point addition acceleration
US8214417B2 (en) 2008-08-14 2012-07-03 Oracle America, Inc. Subnormal number handling in floating point adder without detection of subnormal numbers before exponent subtraction
US8131976B2 (en) * 2009-04-13 2012-03-06 International Business Machines Corporation Tracking effective addresses in an out-of-order processor
US8965945B2 (en) 2011-02-17 2015-02-24 Arm Limited Apparatus and method for performing floating point addition
US20130218938A1 (en) 2012-02-17 2013-08-22 Qualcomm Incorporated Floating-point adder with operand shifting based on a predicted exponent difference
US8892619B2 (en) * 2012-07-24 2014-11-18 The Board Of Trustees Of The Leland Stanford Junior University Floating-point multiply-add unit using cascade design

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2507183B2 (ja) * 1989-11-28 1996-06-12 松下電器産業株式会社 浮動小数点加減算装置
JP2013012203A (ja) * 2011-06-29 2013-01-17 Arm Ltd 浮動小数点加算器

Also Published As

Publication number Publication date
TW201531941A (zh) 2015-08-16
KR20150059082A (ko) 2015-05-29
US20150142864A1 (en) 2015-05-21
DE102014114074A1 (de) 2015-05-21
CN104657107A (zh) 2015-05-27
US10108398B2 (en) 2018-10-23
JP6415236B2 (ja) 2018-10-31
JP2015103245A (ja) 2015-06-04
TWI641992B (zh) 2018-11-21
US20180081630A1 (en) 2018-03-22
CN104657107B (zh) 2018-11-06
US9830129B2 (en) 2017-11-28

Similar Documents

Publication Publication Date Title
KR102200913B1 (ko) 풀 인-라인 비정규 서포트를 수반하는 높은 성능의 부동 소수점 덧셈기
US8965945B2 (en) Apparatus and method for performing floating point addition
US10540142B2 (en) Accuracy-conserving floating-point value aggregation
KR102358013B1 (ko) 3-경로 단일 곱셈-누산기 설계에서 고속 근경로 증분합
US9483232B2 (en) Data processing apparatus and method for multiplying floating point operands
CN107025091B (zh) 二进制融合乘加浮点计算
US10416962B2 (en) Decimal and binary floating point arithmetic calculations
US20150199173A1 (en) Multiply adder
KR20150079389A (ko) 부동 소수점 수를 정수로 변환하기 위한 전자 장치 및 시스템, 및 그것의 작동 방법
CN106250098B (zh) 用于在执行浮点运算时控制舍入的装置及方法
CN108139912B (zh) 在浮点运算期间计算和保留误差边界的装置和方法
CN112241291A (zh) 用于指数函数实施的浮点单元
CN108694037B (zh) 用于在执行浮点减法时估计移位量的装置和方法
GB2531158A (en) Rounding floating point numbers
Tsen et al. A combined decimal and binary floating-point multiplier
KR20180050204A (ko) 부동 소수점 가산기의 원경로에서의 고속 스티키 생성
US6615228B1 (en) Selection based rounding system and method for floating point operations
US20220357925A1 (en) Arithmetic processing device and arithmetic method

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