KR20230015844A - 극소 검출 - Google Patents

극소 검출 Download PDF

Info

Publication number
KR20230015844A
KR20230015844A KR1020220088033A KR20220088033A KR20230015844A KR 20230015844 A KR20230015844 A KR 20230015844A KR 1020220088033 A KR1020220088033 A KR 1020220088033A KR 20220088033 A KR20220088033 A KR 20220088033A KR 20230015844 A KR20230015844 A KR 20230015844A
Authority
KR
South Korea
Prior art keywords
rounding
minima
detection
circuitry
floating point
Prior art date
Application number
KR1020220088033A
Other languages
English (en)
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 KR20230015844A publication Critical patent/KR20230015844A/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/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
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • G06F5/012Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising in floating-point computations
    • 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/06Arrangements for sorting, selecting, merging, or comparing data on individual record carriers
    • G06F7/10Selecting, i.e. obtaining data of one kind from those record carriers which are identifiable by data of a second kind from a mass of ordered or randomly- distributed record carriers
    • 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/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49942Significance control
    • G06F7/49947Rounding

Landscapes

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

Abstract

장치는 부동 소수점 결과 값을 생성하기 위해 반올림과 함께 부동 소수점 연산을 수행하기 위한 부동 소수점 프로세싱 회로부; 및 부동 소수점 연산의 결과가 극소한지 여부를 나타내는 극소 상태를 검출하기 위한 극소 검출 회로부를 포함한다. 극소한 결과는 부동 소수점 결과 값에 사용될 부동 소수점 포맷의 정규 부동 소수점 수로서 표현가능한 0이 아닌 최소 크기보다 더 작은 크기를 갖는 0이 아닌 수에 대응한다. 극소 검출 회로부는 극소 상태를 검출하기 위해 반올림 전 극소 검출 및 반올림 후 극소 검출 둘 모두를 지원하도록 구성된 하드웨어 회로 로직을 포함한다.

Description

극소 검출{TININESS DETECTION}
본 발명은 데이터 프로세싱 분야에 관한 것이다. 보다 구체적으로, 그것은 부동 소수점(floating-point, FP) 연산들에 대한 극소 검출(tininess detection)에 관한 것이다.
데이터 프로세싱 장치는 부동 소수점 표현으로 표현되는 수들을 프로세싱하기 위한 지원을 제공할 수 있다. 부동 소수점 표현에서, 수는 유효숫자(significand) 1.F 또는 0.F, 지수 E, 및 부호 비트 S를 사용하여 표현된다. 부호 비트 S는 부동 소수점 수가 양수인지 또는 음수인지를 표현한다. 유효숫자 1.F 또는 0.F는 부동 소수점 수의 유효 자릿수들을 표현한다(이때, 1 또는 0은 각각 정규 값 및 준정규 값에 대한 암시적 비트이고, F는 1 또는 0의 암시적 비트 다음의 유효숫자의 나머지 비트들을 나타내는, 부동 소수점 수의 저장 비트들을 나타냄). 정규 수들의 경우, 지수 E는 유효숫자에 대한 소수점(이진 소수점으로도 알려짐)의 포지션(position)을 표현한다. 따라서, 지수 값을 가변시킴으로써, 소수점이 유효숫자 내에서 좌측 및 우측으로 이동할 수 있으며, 이에 따라, 미리결정된 비트 수에 대하여, 부동 소수점 표현은 소수점이 유효숫자 내에서 고정된 위치를 갖는 고정 소수점 표현보다 더 넓은 범위의 수들을 표현할 수 있다.
적어도 일부 예들은 장치를 제공하며, 장치는: 부동 소수점 결과 값을 생성하기 위해 반올림과 함께 부동 소수점 연산을 수행하기 위한 부동 소수점 프로세싱 회로부; 및 부동 소수점 연산의 결과가 극소한지 여부를 나타내는 극소(tininess) 상태를 검출하기 위한 극소 검출 회로부 - 극소한 결과는 부동 소수점 결과 값에 대해 사용될 부동 소수점 포맷의 정규 부동 소수점 수로서 표현가능한 0이 아닌 최소 크기보다 더 작은 크기를 갖는 0이 아닌 수에 대응함 - 를 포함하고, 극소 검출 회로부는 극소 상태를 검출하기 위해 반올림 전 극소 검출 및 반올림 후 극소 검출 둘 모두를 지원하도록 구성된 하드웨어 회로 로직(hardware circuit logic)을 포함한다.
적어도 일부 예들은 데이터 프로세싱 방법을 제공하며, 데이터 프로세싱 방법은: 부동 소수점 결과 값을 생성하기 위해 반올림과 함께 부동 소수점 연산을 수행하는 단계; 및 부동 소수점 연산의 결과가 극소한지 여부를 나타내는 극소 상태를 검출하는 단계 - 극소한 결과는 부동 소수점 결과 값에 대해 사용될 부동 소수점 포맷의 정규 부동 소수점 수로서 표현가능한 0이 아닌 최소 크기보다 더 작은 크기를 갖는 0이 아닌 수에 대응함 - 를 포함하고, 여기서, 극소 상태는, 극소 상태를 검출하기 위해 반올림 전 극소 검출 및 반올림 후 극소 검출 둘 모두를 지원하도록 구성된 하드웨어 회로 로직을 포함하는 극소 검출 회로부를 사용하여 검출된다.
적어도 일부 예들은 장치를 제공하며, 장치는: 부동 소수점 결과 값에 대한 도입 반올림된 유효숫자를 생성하기 위해 도입 반올림과 함께 부동 소수점 연산을 수행하기 위한 부동 소수점 프로세싱 회로부; 및 부동 소수점 연산의 결과가 극소한지 여부를 나타내는 극소 상태를 검출하기 위한 극소 검출 회로부 - 극소한 결과는 부동 소수점 결과 값에 대해 사용될 부동 소수점 포맷의 정규 부동 소수점 수로서 표현가능한 0이 아닌 최소 크기보다 더 작은 크기를 갖는 0이 아닌 수에 대응함 - 를 포함하고, 여기서, 극소 검출 회로부는 부동 소수점 프로세싱 회로부에 의해 생성된 도입 반올림된 유효숫자에 기초하여 극소 상태를 검출하도록 구성된다.
본 기법의 추가의 태양들, 특징들 및 이점들이 첨부 도면들과 관련하여 판독될 예들의 하기의 설명으로부터 명백해질 것이다.
도 1은 부동 소수점 프로세싱 회로부를 갖는 데이터 프로세싱 장치의 예를 개략적으로 예시한다.
도 2는 반올림 전 극소 검출을 수행하기 위한 접근법을 개략적으로 예시한다.
도 3은 반올림 후 극소 검출을 수행하기 위한 접근법을 개략적으로 예시한다.
도 4는 반올림 전 극소 검출 및 반올림 후 극소 검출 둘 모두를 수행할 수 있는 조합된 극소 검출 회로부의 제1 예를 도시한다.
도 5는, 부동 소수점 연산에 비도입 반올림이 사용될 때, 반올림 전 극소 검출 및 반올림 후 극소 검출 둘 모두를 수행하는 방법을 도시하는 흐름도이다.
도 6은, 부동 소수점 프로세싱 회로부가 도입 반올림을 수행하는 경우의, 반올림 전 극소 검출 및 반올림 후 극소 검출 둘 모두를 수행할 수 있는 조합된 극소 검출 회로부의 다른 예를 도시한다.
도 7은, 도입 반올림이 사용되는 경우에, 반올림 전 극소 검출 및 반올림 후 극소 검출을 수행하는 방법을 도시하는 흐름도이다.
IEEE-754 부동 소수점 표준들은 부동 소수점 연산의 결과에 대한 극소의 개념을 정의한다. 부동 소수점 연산의 결과는, 결과가 부동 소수점 결과 값에 사용될 부동 소수점 포맷의 정규 부동 소수점 수로 표현가능한 0이 아닌 최소 크기보다 더 작은 크기를 갖는 0이 아닌 수에 대응하는 경우, "극소"하다고 고려된다. 따라서, 장치는 부동 소수점 결과 값을 생성하기 위해 반올림과 함께 부동 소수점 연산을 수행하기 위한 부동 소수점 프로세싱 회로부, 및 부동 소수점 연산의 결과가 극소한지 여부를 나타내는 극소 상태를 검출하기 위한 극소 검출 회로부를 갖는다. 극소 상태는, 부동 소수점 연산의 참인 결과가, 사용되고 있는 부동 소수점 포맷으로 정확히 표현되기에 너무 작은 크기를 가졌다는 것을 소프트웨어 또는 프로그래머에게 나타낼 수 있는, 부동 소수점 연산에 대한 언더플로우 예외(underflow exception)를 시그널링할지 여부를 결정하는데 유용할 수 있다.
IEEE-754 표준들은 결과가 극소하다고 고려되기 위해 충족되어야 하는 조건을 정의하지만, 결과가 극소한지 여부를 검출하기 위한 극소 검출 회로부를 구현하는 방법에 대해서는 어떠한 실용적인 제안도 제공하지 않는다. 따라서, 프로세서 마이크로 설계사(processor micro-architect)들은 극소 검출 회로부의 하드웨어 회로 로직을 구현하는 방법에 대한 회로 설계 결정들을 한다. 극소 검출 회로부의 설계는 표준들에 의해 제공되는 극소의 정의로부터 암시되지 않는 설계 결정들을 수반한다.
표준들은 극소를 검출하기 위한 2가지 대안적인 방식들을 정의한다. 예를 들어, IEEE-754 1985 표준은 다음을 정의한다(여기서 Emin은 사용되고 있는 부동 소수점 포맷의 정규 부동 소수점 수들에 대해 표현가능한 최소 지수를 지칭함):
"극소는 다음 중 어느 하나에 검출될 수 있다:
1. 반올림 후 - 지수 범위가 무한이었던 것처럼 계산된 0이 아닌 결과가 엄격히 ± 2Emin 사이에 있을 때
2. 반올림 전 - 지수 범위 및 정밀도 둘 모두가 무한이었던 것처럼 계산된 0이 아닌 결과가 엄격히 ± 2Emin 사이에 있을 때."
대체적으로, 프로세서의 임의의 특정 구현은 반올림 전 극소 검출 및 반올림 후 극소 검출 중 단지 하나만을 구현할 것으로 예상된다. 대체적으로, 반올림 전 극소 검출이 회로부에 구현하기에 더 간단할 수 있지만, 반올림 후 극소 검출의 구현은 결국 생성되는 언더플로우 예외들의 수를 감소시키는 것을 도울 수 있다(때때로, 반올림은 극소한 반올림되지 않은 결과가 극소하지 않은 반올림된 값으로 반올림되게 할 수 있으므로, 반올림 후에 극소를 검출하는 것이 언더플로우들의 수를 감소시킬 수 있음). 반올림 전 극소 및 반올림 후 극소의 정의들이 유사하게 보일 수 있지만, 실제로 극소 검출은 전형적으로 주어진 프로세서 구현에 어느 것이 사용되는 지에 따라 완전히 상이한 방식으로 구현될 것이다. 예를 들어, 반올림 후 극소가 정밀도가 무한이도록 허용하지 않는 경우, 반올림 후 극소 검출은 반올림 증분이 계산되어 부동 소수점 연산으로부터 도출된 유효숫자에 가산되도록 요구할 수 있지만, 이것은 반올림 전 극소 검출에 대해서는 요구되지 않을 것이라고 예상될 수 있다.
아래에서 논의되는 예들에서, 극소 검출 회로부는 극소 상태를 검출하기 위해 반올림 전 극소 검출 및 반올림 후 극소 검출 둘 모두를 지원하도록 구성된 하드웨어 회로 로직을 포함한다. 이것은 반직관적(counter-intuitive)인데, 그 이유는, IEEE 표준들이 이들 중 단지 하나만이 지원되도록 요구하고, 제2 기법을 지원하는 것이 이점 없이 여분의 회로 로직을 불필요하게 도입하는 것으로 보일 것이기 때문이다. 그러나, 본 발명자들은, 놀랍게도, 표준이 제공하는 극소의 정의의 차이들에도 불구하고, 하드웨어로 회로 로직을 합리적인 양만큼 공유하면서, 반올림 전 극소 검출 및 반올림 후 극소 검출을 구현하는 것이 가능하며, 이에 따라, 극소 검출을 위한 두 기법들 모두를 지원하기 위해 하드웨어적으로 필요로 되는 추가적인 회로 로직의 양이 제한될 수 있다는 것을 인식하였다. 또한, 두 유형들 모두의 극소 검출을 지원하여, 단일 하드웨어 장치가, 둘 중 어느 한 유형의 극소 검출을 지원할 수 있는 상이한 프로세서 설계들 상에서 달성된 부동 소수점 프로세싱의 결과들을 에뮬레이팅(emulating)할 수 있게 하는 것이 유용할 수 있다. 일부 계산들에 대하여, 극소 상태는, 반올림 전 극소 검출이 사용되는지 또는 반올림 후 극소 검출이 사용되는지에 따라 상이한 결과들을 가질 수 있고, 반올림 후 극소 검출을 사용하는 제1 프로세서에 대해 설계된 소프트웨어가 (필요한 경우, 제2 프로세서의 네이티브(native) 명령어 세트로 적합하게 변형되면서) 반올림 전 극소 검출을 제공하는 제2 프로세서 상에서 실행되는 경우, 제1 프로세서의 거동을 에뮬레이팅하려고 시도하는 경우에 바람직하지 않을 수 있는 언더플로우 시그널링에서의 차이들이 소프트웨어에 가시적일 수 있다. 따라서, 반올림 전 극소 검출 및 반올림 후 극소 검출 둘 모두를 지원하는 하드웨어 회로 로직을 제공하는 것이 주어진 프로세서 구현에 의해 다뤄질 수 있는 소프트웨어의 범위를 증가시킬 수 있다.
극소 검출 회로부는 반올림 전 극소 검출 및 반올림 후 극소 검출 둘 모두에 대해 사용되는 공유된 데이터 경로를 포함할 수 있다. 공통 데이터 경로를 공유함으로써, 이것은 극소 검출을 위한 두 기법들 모두를 지원하기 위해 하드웨어적으로 필요로 되는 추가적인 회로 로직의 양을 제한한다.
극소 검출 회로부는, 극소 검출 회로부가 반올림 전 극소 검출을 수행하기 위한 것인지 또는 반올림 후 극소 검출을 수행하기 위한 것인지에 기초하여, 극소 상태를 결정할 시에 사용할 중간 값(극소 상태 자체는 아님)을 선택하기 위한 선택 회로부를 가질 수 있다. 따라서, 극소 검출 회로부의 일부 부분들은 두 기법들 모두에 대해 공통적일 수 있지만, 다른 부분들은 반올림 전 극소 검출이 사용되는지 또는 반올림 후 극소 검출이 사용되는지에 기초한 선택을 수반할 수 있고, 선택 회로부에 의해 선택된, 선택된 중간 값은 극소 검출 회로부에 의해 결정된 전체 극소 상태에 기여할 수 있다. 선택 회로부가, 단지 반올림 전 극소 상태 및 반올림 후 극소 상태에 대한 최종 값들 사이에서 선택하는 것이 아니라, 극소 검출 회로부의 중간 지점에서 중간 값을 선택하는 것이므로, 이것은, 두 기법들 모두 사이에서 공유되는 회로부 로직의 양이, 반올림 전 극소 검출 및 반올림 후 극소 검출 각각에 대해 완전히 별개의 데이터 경로들이 제공되고, 단지 반올림 전/후 극소 상태에 대한 최종 값들 사이의 선택만이 존재하는 경우보다, 더 많을 수 있다는 것을 의미한다.
극소 검출 회로부는, 소프트웨어 프로그래밍가능 제어 파라미터에 기초하여, 극소 상태를 반올림 전 극소 검출에 따라 검출할지 또는 반올림 후 극소 검출에 따라 검출할지를 선택할 수 있다. 예를 들어, 제어 파라미터는 소프트웨어 기록가능 레지스터에 보유되는 값일 수 있거나, 또는 부동 소수점 프로세싱 회로부가 부동 소수점 연산을 수행하게 하는 명령어의 파라미터로서 특정될 수 있다. 따라서, 소프트웨어는, 실행되고 있는 소프트웨어의 요구사항들에 따라, 극소 상태가 반올림 전 극소에 따라 정의되어야 하는지 또는 반올림 후 극소에 따라 정의되어야 하는지에 영향을 줄 수 있다. 일부 경우에, 수행되는 극소 검출의 유형에 영향을 주는 파라미터를 설정하는 소프트웨어는 부동 소수점 연산 자체(그 결과가 극소에 대해 분석되는 연산)를 실제로 수행하고 있는 것과 동일한 소프트웨어일 수 있다. 대안적으로, 소프트웨어 프로그래밍가능 제어 파라미터는, 극소 상태가 검출되고 있는 부동 소수점 연산을 실제로 수행하는 소프트웨어보다 더 많은 권한이 주어진 소프트웨어에 의해 설정될 수 있다.
부동 소수점 프로세싱 회로부는 상이한 방식들로 부동 소수점 연산에 대한 반올림을 수행할 수 있다. 하나의 예에서, 부동 소수점 프로세싱 회로부는 부동 소수점 결과 값에 대한 도입 반올림된 유효숫자를 생성하기 위해 도입 반올림을 수행할 수 있다. 도입 반올림은, 반올림 값의 가산이 부동 소수점 연산 자체의 부분으로서 이미 수행되고 있는 가산과 동일한 가산의 부분으로서 수행되어, 부동 소수점 연산이 그것의 부동 소수점 결과 값을 생성한 후에 반올림 증분의 어떠한 별개의 가산도 필요로 하지 않게 하는 기법이다.
아래에 나타낸 예에서, 부동 소수점 프로세싱 회로부가 도입 반올림을 사용할 때, 극소 검출 회로부는, 반올림 전 극소 검출 및 반올림 후 극소 검출 둘 모두에 대해, 도입 반올림된 유효숫자에 기초하여 극소 상태를 검출할 수 있다. 이것은 반직관적인 것으로 보일 수 있는데, 그 이유는, 반올림 전 극소 검출이 임의의 반올림이 적용되기 전에 반올림되지 않은 유효숫자의 가시성을 요구할 것이라고 생각될 것이기 때문이다. 그러나, 본 발명자들은, 도입 반올림된 유효숫자에 기초하여 반올림 전 극소 검출에 대한 극소 상태를 추론하는 것이 가능하며, 이에 따라, 조합된 극소 검출 회로부가 도입 반올림의 사용과 호환가능하게 된다는 것을 인식했으며, 이는 성능을 개선하는 데 유용할 수 있다. 유사하게, IEEE 표준들에서의 반올림 후 극소에 대한 정의를 분석함으로써, 극소 검출에 필요한 반올림이 결과 자체에 필요한 반올림과는 상이할 수 있기 때문에, 반올림 후 극소 검출이 도입 반올림과는 호환가능하지 않을 것이라고 예상될 수 있지만, 본 발명자들은 다시, 도입 반올림된 유효숫자의 비트들에 대한 분석에 기초하여, 극소 상태를 추론하여, 반올림 후 극소 검출을 도입 반올림과 호환가능하게 만드는 것이 가능하다는 것을 인식하였다.
따라서, 다른 예에서, 장치는 부동 소수점 결과 값에 대한 도입 반올림된 유효숫자를 생성하기 위해 도입 반올림과 함께 부동 소수점 연산을 수행하기 위한 부동 소수점 프로세싱 회로부, 및 부동 소수점 연산의 결과가 극소한지 여부를 나타내는 극소 상태를 검출하기 위한 극소 검출 회로부를 포함하며, 여기서, 극소한 결과는 부동 소수점 결과 값에 대해 사용될 부동 소수점 포맷의 정규 부동 소수점 수로서 표현가능한 0이 아닌 최소 크기보다 더 작은 크기를 갖는 0이 아닌 수에 대응한다. 극소 검출 회로부는 부동 소수점 프로세싱 회로부에 의해 생성된 도입 반올림된 유효숫자에 기초하여 극소 상태를 검출하도록 구성된다. 따라서, 반올림 전 극소 검출 및 반올림 후 극소 검출 중 단지 하나(그러나 둘 모두는 아님)만을 지원하는 프로세서들에서도, 도입 반올림된 유효숫자에 기초하여 극소 상태의 검출을 지원하는 하드웨어 회로 로직을 제공하는 것은 성능에 도움이 될 수 있다.
대안적으로, 부동 소수점 프로세싱 회로부는 비도입 반올림을 수행할 수 있는데, 여기서 부동 소수점 프로세싱 회로부는 반올림되지 않은 유효숫자를 생성하고, 부동 소수점 프로세싱 회로부는 부동 소수점 결과 값에 대한 반올림된 결과 유효숫자를 생성하기 위해 반올림되지 않은 유효숫자를 반올림하기 위한 비도입 반올림 회로부를 포함한다. 이러한 경우, 극소 검출 회로부는, 반올림 전 극소 검출 및 반올림 후 극소 검출 둘 모두에 대해, 반올림되지 않은 유효숫자에 기초하여 극소 상태를 검출할 수 있다.
부동 소수점 프로세싱 회로부가 도입 반올림을 수행하고 있는지 또는 비도입 반올림을 수행하고 있는지에 관계없이, 부동 소수점 프로세싱 회로부는 부동 소수점 결과 값에 대한 반올림된 결과 유효숫자를 생성하기 위해 반올림 가산을 선택적으로 수행함으로써 반올림을 수행할 수 있다. 도입 반올림이 수행되고 있는 경우, 이러한 반올림 가산은 부동 소수점 연산 자체에 사용되는 것과 동일한 가산의 부분일 수 있고, 또는 비도입 반올림이 사용되는 경우, 반올림 가산은 부동 소수점 연산이 수행되고 있을 시에 부동 소수점 결과를 생성하기 위해 수행되고 있는 임의의 가산과는 별개의 가산일 수 있다.
반올림 후 극소 검출의 경우, 극소 검출 회로부는 반올림된 부동 소수점 결과에 대한 반올림된 결과 유효숫자를 생성하기 위해 부동 소수점 프로세싱 회로부에 의해 이미 수행되고 있는 반올림 가산 이외의 어떠한 추가의 반올림 가산도 수행하지 않으면서 반올림 후 극소 검출을 수행할 수 있다. 이것은 반직관적일 수 있는데, 그 이유는, 반올림 후 극소 검출이, 표준들에 정의된 반올림 후 극소의 "무한 지수" 요건으로 인해 결과 자체에 대한 반올림과 동일한 유형의 반올림이 아닌 반올림이 수행되도록 요구한다고 생각될 것이기 때문이며, 이에 따라 통상적으로 추가의 반올림 가산이 요구될 것으로 예상될 것이다. 그러나, 본 발명자들은 그러한 추가의 반올림 증분 가산이 필요하지 않다고 인식했는데, 그 이유는, 어떠한 추가의 반올림 증분이 가산될 필요 없이, 비교적 간단한 부울 로직 게이트들의 세트를 이용하여 부동 소수점 프로세싱 회로부의 출력으로부터 도출된 유효숫자의 비트들을 분석하여 반올림 후 극소 상태를 추론하는 것이 가능하기 때문이다. 이것은 비도입 반올림을 사용하는 구현들 및 도입 반올림을 사용하는 구현들을 둘 모두에 대해 가능하다. 이것은 도움이 되는데, 그 이유는, 가산들이 성능 측면에서 느려지는 경향이 있고, 이에 따라, 추가의 반올림 가산을 회피하면 극소 검출의 전체 지연을 감소시킬 수 있어, 성능이 개선되기 때문이다.
보다 구체적으로, 극소 검출 회로부는, 부동 소수점 프로세싱 회로부에 의해 출력된 반올림되지 않은 유효숫자 또는 도입 반올림된 유효숫자로부터 도출된 유효숫자에 기초하여, 반올림 후 극소 검출을 위한 반올림 후 극소 검출 반올림 증분을 결정하기 위한 증분 결정 회로부를 포함하고; 반올림 후 극소 검출을 수행할 때, 극소 검출 회로부는, 반올림되지 않은 유효숫자 또는 도입 반올림된 유효숫자로부터 도출된 유효숫자에 반올림 후 극소 검출 반올림 증분을 가산하지 않으면서, 증분 결정 회로부에 의해 결정된 반올림 후 극소 검출 반올림 증분에 기초하여 극소 상태를 결정하도록 구성된다. 따라서, 반올림 후 극소 검출의 경우, 반올림 후 극소 검출 반올림 증분은 결정될 수 있지만, 그것을 유효숫자에 가산할 필요는 없는데, 그 이유는, 대신에 극소 상태는, 가산기가 아닌, 부울 논리 게이트들의 세트들을 통해 반올림 후 극소 검출 반올림 증분으로부터 추론될 수 있기 때문이다. 이것은 성능을 개선시킨다.
부동 소수점 연산에서, 부동 소수점 프로세싱 회로부는 결과 지수와, 반올림이 위에서 논의된 바와 같은 비도입 반올림에 의해 수행되는지 또는 도입 반올림에 의해 수행되는지에 따라, 반올림되지 않은 유효숫자 또는 도입 반올림된 유효숫자 중 어느 하나를 생성할 수 있다. 장치는 시프트된 유효숫자를 생성하기 위해, 반올림되지 않은 유효숫자 또는 도입 반올림된 유효숫자를 가변적인 비트 수만큼 시프트하기 위한 시프트 회로부를 가질 수 있다. 극소 검출 회로부는, 반올림 전 극소 검출 및 반올림 후 극소 검출 둘 모두에 대하여, 시프트 회로부에 의해 생성된 시프트된 유효숫자에 기초하여 극소 상태를 검출할 수 있다. 따라서, 시프트 회로부는 두 유형들 모두의 극소 검출에 대해 공유될 수 있다.
시프트에 사용될 가변적인 비트 수는 시프트 제어 회로부에 의해 선택될 수 있다. 결과 지수 E가 0이 아닌 정규 부동 소수점 수들에 대한 부동 소수점 포맷에 의해 지원되는 최소 지수 Emin 미만일 때, 시프트는 Emin - E 비트들만큼의 우측 시프트이다. 결과 지수가 최소 지수 이상이고 반올림되지 않은 유효숫자 또는 도입 반올림된 유효숫자의 최상위 비트가 1일 때, 가변적인 비트 수는 0이다. 결과 지수가 최소 지수 Emin 이상이고 반올림되지 않은 유효숫자 또는 도입 반올림된 유효숫자의 최상위 비트가 0일 때, 시프트는 lzc 및 (E - Emin) 중 최소치에 대응하는 비트 수만큼의 좌측 시프트이고, 여기서 lzc는 반올림되지 않은 유효숫자 및 도입 반올림된 유효숫자 내의 전치(leading) 0들의 수이다. 이러한 접근법은 반올림 전 극소 검출 및 반올림 후 극소 검출 둘 모두에 대한 기반으로서 사용될 수 있는 시프트된 유효숫자를 제공한다.
극소 검출 회로부는, 결과 지수와 반올림되지 않은 유효숫자 또는 도입 반올림된 유효숫자에 의해 표현되는 결과 크기가, 반올림 전 극소 검출 및 반올림 후 극소 검출이 적어도 하나의 반올림 모드에서 극소 상태에 대해 상이한 결과들을 제공할 수 있는, 미리결정된 범위 내에 있는지 여부를 식별하는 범위 식별 회로부를 가질 수 있다. 그러한 범위 식별 회로부를 제공함으로써, 이것은 회로 하드웨어 설계가 간단해질 수 있다는 것을 의미하는데, 그 이유는, 반올림되지 않은 유효숫자 또는 도입 반올림된 유효숫자(또는 이전에 언급된 시프트된 유효숫자와 같은 도출된 유효숫자)에 대한 더 주의깊은 분석이 극소 상태가 반올림 전 극소/반올림 후 극소에 대해 가변될 수 있는 경우들로 제한될 수 있기 때문이다. 그 범위 밖에서는, 시프트된 유효숫자의 하위 비트들의 특정 비트 값들을 주의 깊게 분석하지 않으면서 극소 상태를 설정하는 것이 훨씬 더 간단할 수 있다. 따라서, 결과 크기가 소정 범위에 있는지 여부를 식별하는 것은 고려할 필요가 있는 가능성들의 수를 감소시키고, 따라서 회로 하드웨어 설계를 단순화한다.
범위 식별 회로부는, 시프트된 유효숫자에 기초하여, 결과 크기가 미리결정된 범위 내에 있음을 식별할 수 있다. 예를 들어, 결과 크기가 미리결정된 범위 내에 있는지 여부를 결정하기 위해, 시프트된 유효숫자의 소정 수의 최상위 비트들이 분석될 수 있다.
결과 크기가 범위 식별 회로부에 의해 미리결정된 범위 내에 있다고 결정될 때, 적어도 반올림 후 극소 검출에 대하여 그리고 적어도 하나의 반올림 모드에 대하여, 극소 검출 회로부는, 부동 소수점 결과에 사용될 부동 소수점 포맷에 맞추기 위해 시프트된 유효숫자가 버림되는 경우에 폐기될 비트 포지션들에 있는 시프트된 유효숫자의 하나 이상의 하부 비트들에 기초하여 극소 상태를 설정하도록 구성되며; 결과 크기가 범위 식별 회로부에 의해 미리결정된 범위 밖에 있다고 결정될 때, 극소 검출 회로부는 시프트된 유효숫자의 상기 하나 이상의 하부 비트들과는 무관하게 극소 상태를 설정하도록 구성된다.
따라서, 미리결정된 범위 내에 있는 값들의 경우, 시프트된 유효숫자의 하나 이상의 하부 비트들의 분석이 극소 상태가 결정될 수 있게 하기에 충분하기 때문에, 반올림된 증분을 실제로 가산할 필요가 여전히 없다. 미리결정된 범위 밖에서는, 극소 상태가 시프트된 유효숫자의 그러한 하나 이상의 하부 비트들과는 독립적으로 설정될 수 있다. 예를 들어, 결과 크기가 범위 식별 회로부에 의해 미리결정된 범위보다 더 크다고 결정될 때, 반올림 전 극소 검출 및 반올림 후 극소 검출 둘 모두에 대하여, 극소 검출 회로부는 부동 소수점 연산의 결과가 극소하지 않다고 나타내게 극소 상태를 설정하도록 구성되고; 결과 크기가 범위 식별 회로부에 의해 미리결정된 범위보다 더 작다고 결정될 때, 반올림 전 극소 검출 및 반올림 후 극소 검출 둘 모두에 대하여, 극소 검출 회로부는 부동 소수점 연산의 결과가 극소하다고 나타내게 극소 상태를 설정하도록 구성된다. 따라서, 미리결정된 범위 밖의 크기의 경우, 범위 내의 특정 값에 대한 추가의 분석 없이, 단지 범위 결정 자체에만 기초하여 극소 상태를 설정하는 것은 비교적 간단하며, 회로를 단순화한다.
일부 경우들에서, 부동 소수점 프로세싱 회로부는 다수의 상이한 반올림 모드들을 지원할 수 있다. 결과 크기가 미리결정된 범위 내에 있을 때, 반올림 전 극소 검출 및 반올림 후 극소 검출이 상이한 결과들을 제공할 수 있는 적어도 하나의 반올림 모드가 있을 수 있지만, 이것은 모든 반올림 모드들에 반드시 적용되는 것은 아니며, 결과 크기가 미리결정된 범위 내에 있을 때 반올림 전 극소 검출이 사용되는지 또는 반올림 후 극소 검출이 사용되는지에 관계없이 동일한 결과를 제공하는 적어도 하나의 다른 반올림 모드가 있을 수 있다.
다수의 반올림 모드들이 지원되는 경우, 결과 크기가 범위 식별 회로부에 의해 미리결정된 범위 내에 있다고 결정될 때, 적어도 반올림 후 극소 검출에 대하여, 극소 검출 회로부는 부동 소수점 프로세싱 연산을 위해 어떤 반올림 모드가 선택되는지에 따라 극소 상태를 설정하도록 구성되고; 결과 크기가 범위 식별 회로부에 의해 미리결정된 범위 밖에 있다고 결정될 때, 극소 검출 회로부는 부동 소수점 프로세싱 연산을 위해 어떤 반올림 모드가 선택되는지에 독립적으로 극소 상태를 설정하도록 구성된다. 따라서, 범위 식별 회로부를 제공하는 다른 이점은, 결과 크기가 미리결정된 범위 내에 있는 경우들에서만 반올림 모드 특정 결정들이 이루어질 필요가 있고, 반면 그 범위 밖에서는, 극소 상태를 설정하기 위해서 반올림 모드를 고려할 필요가 없다는 것이다. 반올림 전 극소 검출이 반올림 모드에 종속하는지 여부는 부동 소수점 연산을 위해 비도입 반올림이 사용되는지 또는 도입 반올림이 사용되는지에 따를 수 있는데 - 비도입 반올림의 경우에는, 반올림 전 극소 검출이 반올림 모드에 따를 필요가 없지만, 도입 반올림의 경우에는, 반올림 전 극소 검출이, 결과 크기가 미리결정된 범위 내에 있을 경우, 사용되는 반올림 모드에 종속할 수 있다.
미리결정된 범위에 대한 정의는 도입 반올림이 사용되는지 또는 비도입 반올림이 사용되는지에 따라 가변적일 수 있다. 대체적으로, 미리결정된 범위는 부동 소수점 포맷으로 표현가능한 최소의 정규의 0이 아닌 양수에 가까운 비교적 작은 범위의 수 크기들을 커버할 수 있으며, 이에 따라, 대부분의 부동 소수점 연산들에서, 결과 크기는 미리결정된 범위 밖에 있다고 결정될 수 있다. 극소 상태가 반올림 후 극소 검출 또는 반올림 전 극소 검출에 따라 가변될 수 있는 범위는 비교적 작으므로, 이것은, 시프트된 유효숫자의 하위 비트들에 대한 검사로부터 어떠한 시나리오가 발생했는지를 추론하고, 이에 따라, (반올림 후 극소 검출을 위한) 반올림 가산 또는 좌측 시프트 정규화를 필요로 하지 않으면서, 그에 따라 극소 상태를 결정할 수 있는 정도까지, 가능한 시나리오들의 수를 감소시킨다.
비도입 반올림의 경우, 부동 소수점 프로세싱 회로부는 반올림되지 않은 유효숫자를 생성할 수 있으며, 이에 따라, 범위 결정은 위에서 논의된 바와 같은 시프트 회로부에 의해, 반올림되지 않은 유효숫자로부터 생성된 시프트된 유효숫자에 기초할 수 있다. 그러한 경우에, 범위 식별 회로부는, 결과 크기 x가
Figure pat00001
의 경계들을 충족할 때, 결과 크기가 미리결정된 범위 내에 있다고 결정할 수 있는데, 여기서 ulp는 부동 소수점 결과 값에 사용될 부동 소수점 포맷의 준정규 수로서 표현가능한 최소의 0이 아닌 양수이다. 결과 크기가 이러한 미리결정된 범위 내에 있는지 여부는 시프트된 유효숫자의 상부 k+1개의 비트들을 분석함으로써 결정될 수 있는데, 여기서, k는 사용되고 있는 부동 소수점 포맷에 정의된 유효숫자 비트들의 수(부동 소수점 수의 저장된 분수의 부분이 아닌 암시적 전치 비트들을 포함함)이다. 다시 말해서, 2배 정밀도, 단일 정밀도, 및 절반 정밀도 부동 소수점 포맷들에 대하여, 각각 k = 53, 24, 11이며, 이에 따라, 시프트된 유효숫자의 상부 54, 25, 또는 12개의 비트들이, 결과 크기가 미리결정된 범위 내에 있는지 여부를 식별하기 위해 분석될 수 있다.
비도입 반올림의 경우, 반올림 후 극소 검출이 사용될 때, 시프트된 유효숫자의 하나 이상의 하부 비트들의 분석이 극소 상태를 결정하기 위해 수행될 수 있다. 그러나, 반올림 전 극소 검출의 경우, 극소 검출 회로부는, 결과 크기가 미리결정된 범위 내에 있는 경우에, 부동 소수점 연산의 결과가 극소하다고 나타내도록 극소 상태를 간단히 설정할 수 있다. 따라서, 비도입 반올림 및 반올림 전 극소 검출을 이용하면, 크기가 미리결정된 범위 내에 있다는 결정은 어떠한 추가의 분석 없이 극소 상태를 추론할 수 있기에 충분하다.
한편, 도입 반올림이 부동 소수점 프로세싱 회로부에 의해 사용되고 있고 따라서 시프트된 유효숫자가 도입 반올림된 유효숫자로부터 생성되는 경우, 미리결정된 범위는 비도입 반올림 경우와 상이할 수 있다. 이러한 경우에, 범위 식별 회로부는, 결과 크기 x가
Figure pat00002
의 경계들을 충족할 때, 결과 크기가 미리결정된 범위 내에 있다고 결정하도록 구성되는데, 여기서 ulp는 부동 소수점 결과 값에 사용될 부동 소수점 포맷의 준정규 수로서 표현가능한 최소의 0이 아닌 양수이다. 다시, 결과 크기가 이러한 범위 내에 있는지 여부는 시프트된 유효숫자로부터 분석될 수 있다. 도입 반올림의 경우, 시프트된 유효숫자의 상부 k개의 비트들은, 결과 크기가 미리결정된 범위 내에 있는지 여부를 결정하기에 충분하며, 이에 따라, 2배 정밀도, 단일 정밀도 또는 절반 정밀도 부동 소수점 포맷들 각각에 대하여, 이것은 각각 53, 24 또는 11개의 비트들의 분석에 기초할 수 있다.
도입 반올림의 경우, 결과 크기가 미리결정된 범위 내에 있을 때, 시프트된 유효숫자의 하나 이상의 하부 비트들의 일부 추가의 분석이 반올림 전 극소 검출 및 반올림 후 극소 검출 둘 모두에 대해 수행될 수 있다. 따라서, 부동 소수점 프로세싱 회로부가 도입 반올림을 수행하고 결과 크기가 미리결정된 범위 내에 있을 때, 적어도 하나의 반올림 모드에 대하여, 반올림 전 극소 검출 및 반올림 후 극소 검출 둘 모두에 대해, 극소 검출 회로부는, 부동 소수점 결과에 사용될 부동 소수점 포맷에 맞추기 위해 시프트된 유효숫자가 버림되는 경우에 폐기될 비트 포지션들에 있는 시프트된 유효숫자의 하나 이상의 하부 비트들에 기초하여 극소 상태를 설정하도록 구성된다. 이들 하나 이상의 하부 비트들을 극소 상태에 맵핑(mapping)하는 데 사용되는 특정 논리 함수들은 반올림 후 극소 검출에 비교하여 반올림 전 극소 검출에 대해 상이할 수 있지만, 그럼에도 불구하고, 범위 식별 회로부는 하드웨어 회로 로직을 공유하기 위해 두 경우들 모두에 대해 공통적일 수 있고, 따라서 공유된 데이터 경로를 가짐으로써 전체 회로 면적을 감소시킬 수 있다.
특정 장치 예
도 1은 데이터 프로세싱 장치(2), 예를 들어, 중앙 처리 장치(central processing unit, CPU)와 같은 프로세서의 예를 개략적으로 예시한다. 장치(2)는 캐시 또는 메모리로부터 프로그램 명령어들을 페치하기 위한 명령어 페치 회로부(4), 및 명령어들에 의해 표현되는 프로세싱 연산들을 수행하도록 실행 유닛들(8)을 제어하기 위한 제어 신호들을 생성하기 위해 페치된 명령어들을 디코딩하기 위한 디코드 회로부(6)를 갖는다. 실행 유닛들(8)은 레지스터들(10)로부터 판독된 피연산자들에 대해 프로세싱 연산들을 수행하고, 연산들의 결과들을 레지스터들(10)에 기록한다. 실행 유닛들(8)은, 정수 값들에 대해 산술 및 논리 연산들을 수행하기 위한 정수 산술/논리 유닛(arithmetic/logic unit, ALU)(12), 부동 소수점 표현으로 표현된 수들에 대해 부동 소수점 연산들을 수행하기 위한 부동 소수점 ALU(14), 프로그램 흐름의 비순차적 변경을 트리거(trigger)할 수 있는 분기 명령어들을 실행하기 위한 분기 실행 유닛(16), 및 캐시 또는 메모리로부터 레지스터들(10)로 데이터를 로드하는 로드 동작들 또는 레지스터들(10)로부터 캐시 또는 메모리로 데이터를 저장하는 저장 동작들을 프로세싱하기 위한 로드/저장 유닛(18)과 같은, 상이한 종류들의 명령어를 실행하기 위한 다수의 상이한 유형들의 실행 유닛을 포함할 수 있다. 이것은 단지 제공될 수 있는 일부 유형들의 실행 유닛의 예이고, 다른 예들은 다른 유형들을 가질 수 있다는 것이 이해될 것이다.
부동 소수점 ALU(14)는 부동 소수점 프로세싱 연산들을 수행하기 위한 부동 소수점 프로세싱 회로부(20)를 갖는다. 그러한 부동 소수점 프로세싱 연산들은 가산, 감산, 곱셉, 나눗셈 또는 제곱근 연산들과 같은 산술 연산들뿐만 아니라, 상이한 부동 소수점 표현들 사이의 변환 또는 부동 소수점 표현과 부동 소수점이 아닌 표현(예를 들어, 정수 또는 고정 소수점) 사이의 변환을 위한 변환 동작들을 포함할 수 있다. 부동 소수점 ALU는, 아래에서 더 상세히 논의될 그리고 부동 소수점 프로세싱 회로부(20)에 의해 수행되는 부동 소수점 연산의 결과에 대한 극소 상태를 검출하기 위해 제공되는, 극소 검출 회로부(22)를 또한 포함한다. 극소 상태는 부동 소수점 연산의 결과가 극소한지 여부를 나타낸다. 결과는, 그것이 부동 소수점 프로세싱 회로부(20)에 의해 수행되고 있는 부동 소수점 연산에서 생성된 부동 소수점 결과 값에 사용될 부동 소수점 포맷의 정상 부동 소수점 수로 표현가능한 0이 아닌 최소 크기보다 더 작은 크기를 갖는 0이 아닌 수에 대응하는 경우, 극소하다고 간주된다.
부동 소수점 표현에 대한 소개
부동 소수점(FP)은 적은 수의 비트들을 사용하여 실수들을 근사화하는 유용한 방식이다. IEEE 754-2008 FP 표준은 FP 수들에 대해 다수의 상이한 포맷들을 제안하지만, 일부 통상적으로 사용되는 포맷들은 이진수 64(2배 정밀도, 또는 DP(double precision)로도 알려짐), 이진수 32(단일 정밀도, 또는 SP(single precision)로도 알려짐), 및 이진수 16(절반 정밀도, 또는 HP(half precision)로도 알려짐)이다. 수들 64, 32, 및 16은 각각의 포맷에 대해 저장되는 값에 요구되는 비트들의 수를 지칭한다.
표현
FP 수들은 과학 수업들에서 교시된 "과학적 표기법(scientific notation)"과 매우 유사하며, 여기서 음의 2백만 대신에 -2.0 × 106을 기록할 것이다. 이러한 수의 부분들은 부호(이 경우 음수), 유효숫자(2.0), 지수의 밑(10), 및 지수(6)이다. 차이점들이 있지만, 이들 부분들 모두는 FP 수들에서 아날로그(analog)들을 갖고, 이의 가장 중요한 것은 구성 부분들이 이진수들로 저장되고 지수의 밑이 항상 2라는 것이다.
보다 정확하게는, FP 수들 모두는 부호 비트, 일부 바이어스된 지수 비트들의 수, 및 일부 분수 비트들의 수로 이루어진다. 특히, 관심 있는 포맷들은 하기의 비트들로 이루어진다:
[표 1]
Figure pat00003
부호는 음수들의 경우 1, 그리고 양수들의 경우 0이다. 0을 포함한 모든 수는 부호를 갖는다.
지수는 바이어스되어 있는데, 이는 참 지수(true exponent)가 수로 저장된 것과 상이하다는 것을 의미한다. 예를 들어, 바이어스된 SP 지수들은 8 비트 길이이고, 0 내지 255의 범위이다. 지수 0 및 255는 특수한 경우들이지만, 모든 다른 지수들은 바이어스 127을 갖고, 이는 참 지수가 바이어스된 지수보다 127 더 적다는 것을 의미한다. 최소 바이어스된 지수는 1이고, 이는 -126의 참 지수에 대응한다. 최대 바이어스된 지수는 254이고, 이는 127의 참 지수에 대응한다. HP 및 DP 지수들은 상기의 표에 나타낸 바이어스들과 동일한 방식으로 작용한다.
SP 지수 255(또는 DP 지수 2047, 또는 HP 지수 31)는 무한대 및 NaN(not a number)(수가 아님)들로 불리는 특수 기호들에 대해 예비되어 있다. 무한대들(양 또는 음일 수 있음)은 0의 분수(zero fraction)를 갖는다. 지수 255 및 0이 아닌 분수를 갖는 임의의 수가 NaN이다. 무한대는 포화 값을 제공하므로, 이것은 실제로 "이러한 계산은 이러한 포맷으로 표현할 수 있는 것보다 더 큰 수를 생성하였다"와 같은 것을 의미한다. NaN들은 실수들에 대해 수학적으로 정의되지 않는 연산들, 예를 들어 0으로 나누는 것 또는 음수의 제곱근을 취하는 것을 위해 반환된다.
포맷들 중 임의의 포맷에서, 지수 0은 준정규 수(subnormal number) 및 0들에 대해 예비된다. 정규 수는 다음의 값을 나타낸다:
-1sign × 1.fraction × 2e
여기서, e는 바이어스된 지수로부터 계산된 참 지수이다. 1.fraction이라는 용어는 유효숫자로 불리고, 1은 FP 수의 일부로서 저장되지 않지만, 대신에 지수로부터 추론된다. 0 및 최대 지수를 제외한 모든 지수들은 1.fraction 형태의 유효숫자를 나타낸다. 지수 0은 0.fraction 형태의 유효숫자, 및 주어진 포맷에 대한 1-bias와 동일한 참 지수를 나타낸다. 그러한 수를 준정규적이라 부른다(역사적으로 이들 수들은 비정규적(denormal)으로 지칭되었지만, 현대의 사용법은 준정규적(subnoraml)이라는 용어를 선호함).
지수 및 분수 둘 모두가 0과 동일한 수들은 0들이다.
다음의 표는 HP 포맷의 일부 예시적인 수들을 갖는다. 엔트리들은 이진수로 되어 있는데, 이때 '_' 문자들이 추가되어 가독성을 증가시킨다. 준정규 엔트리(0 지수를 갖는, 표의 네 번째 라인)는 선행 라인에 있는 정규 엔트리와는 상이한 유효숫자를 생성한다는 것에 주목한다.
[표 2]
Figure pat00004
FP 구현의 복잡성의 상당 부분은 준정규적에 의한 것이고, 그에 따라 그들은 종종 마이크로코드 또는 소프트웨어에 의해 다루어진다. 일부 프로세서 구현들은 하드웨어에서 준정규적으로 다루고, 이들 연산들을 소프트웨어 또는 마이크로코드 구현에 비해 10 내지 100배만큼 가속시킨다.
정수, 고정 소수점, 부동 소수점
부호를 다루는 FP 방식은 부호 크기(sign-magnitude)라 불리고, 정수들이 컴퓨터에 저장되는 통상의 방식과는 상이하다(2의 보수). 부호 크기 표현에서, 동일한 수의 양수 버전과 음수 버전은 부호 비트에서만 상이하다. 부호 비트 및 3개의 유효숫자 비트들로 이루어진 4 비트 부호 크기 정수는 다음과 같이 플러스(+) 1 및 마이너스(-) 1을 표현할 것이다:
+1 = 0001
-1 = 1001
2의 보수 표현에서, n 비트 정수 i는 2진 n+1 비트 값 2n+i의 낮은 차수 n 비트들로 표현되므로, 4-비트의 2의 보수 정수는 플러스 1 및 마이너스 1을 다음과 같이 표현할 것이다:
+1 = 0001
-1 = 1111
2의 보수 포맷은 컴퓨터 산술을 단순화하기 때문에, 부호가 있는 정수들에 대해 실제로 보편적이다.
고정 소수점 수는 정확히 정수처럼 보이지만, 실제로 분수 비트들의 소정 수를 갖는 값을 표현한다. 센서 데이터는 종종 고정 소수점 포맷으로 되어 있고, FP의 광범위한 채택 전에 기록된 많은 고정 소수점 소프트웨어가 있다. 고정 소수점 수들은, 프로그래머가 "이진 소수점", 즉 수의 정수 부분과 분수 부분 사이의 분리점(separator)을 파악해야 하고, 또한 비트들을 정확한 자리(place)에 유지하기 위해 수를 항상 시프트해야 하기 때문에 작업하기가 매우 지루하다. FP 수들은 이러한 어려움을 갖지 않으므로, 고정 소수점 수들과 FP 수들 사이에서 변환할 수 있는 것이 바람직하다. 변환을 할 수 있다는 것은 또한, 고정 소수점 소프트웨어 및 데이터를 여전히 사용할 수 있지만, 새로운 소프트웨어를 기록할 때 고정 소수점에 제한되지는 않는다는 것을 의미한다.
반올림 FP 수들
대부분의 FP 연산들은, 무한 범위와 정밀도로 연산이 행해진 것처럼 계산되도록, 그리고 이어서, FP 수에 맞추기 위해 반올림되도록 IEEE-754 표준에 의해 요구된다. 계산이 정확히 FP 수와 매칭되면, 그러한 값은 항상 반환되지만, 일반적으로 계산은 2개의 연속적인 부동 소수점 수들 사이에 있는 값이 된다. 반올림은 2개의 연속된 수들 중 어느 것이 반환되어야 하는지를 선택하는 프로세스이다.
반올림 모드라 불리는 다수의 반올림 방식들이 있고; 이들 중 6개는 다음과 같다:
[표 3]
Figure pat00005
상기 정의는 임의의 실용적인 방식으로 반올림하는 방법을 알려주지는 않는다. 하나의 공통 구현은 연산을 행하고, 나머지 비트들 모두뿐만 아니라 버림된 값(truncated value)(즉, FP 포맷에 맞춘 값)을 보고, 이어서 소정 조건들이 유지되는 경우 버림된 값을 조정하는 것이다. 이들 계산들은 모두 다음을 기초로 한다:
L - (최소, least) 버림된 값의 최하위 비트
G - (가드, guard) 다음의 최상위 비트(즉, 버림에 포함되지 않은 제1 비트)
S - (스티키, sticky) 버림의 일부가 아닌 모든 나머지 비트들의 논리 OR
이들 3개의 값들 및 버림된 값이 주어지면, 다음의 표에 따라 항상, 정확하게 반올림된 값을 계산할 수 있다:
[표 4]
Figure pat00006
예를 들어, 2개의 4 비트 유효숫자들을 곱한 다음, 4 비트 유효숫자로 반올림하는 것을 고려한다.
sig1 = 1011 (십진수 11)
sig2 = 0111 (십진수 7)
곱하여 산출한다
sig1 × sig2 = 1001_101 (십진수 77)
L Gss
버림된 4 비트 결과의 최하위 비트는 L로 라벨링되고, 다음 비트 G, 및 S는 s로 라벨링된 나머지 비트들의 논리 OR이다(즉, S = 0 | 1 = 1). 반올림하기 위해, 반올림 모드 및 상기 표에서의 계산에 따라 4 비트 결과(1001)를 조정한다. 따라서, 예를 들어 RNA 반올림에서, G가 설정되어 1001 + 1 = 1010을 반환한다. RX 반올림의 경우, G | S가 참이면, L을 1로 설정하고(이미 1이므로, 이 경우에는 아무것도 변경되지 않음) 1001을 반환한다.
반올림 정수 및 고정 소수점 수들
FP 수를 정수 또는 고정 소수점으로 변환하면, 또한 반올림해야 한다. 이 개념은 기본적으로 FP 반올림과 동일하다. 정수가 될 수 있는 FP 수는 항상 그러한 정수로 반올림한다. 모든 다른 FP 수들은 2개의 연속적인 정수들 사이에 있고, 반올림은 어느 정수가 반환되는지를 지시한다. 불행하게도, 정수들에 대한 반올림 로직은 2의 보수와 부호 크기 형태 사이의 차이들 때문에 다소 더 어렵다. 부호 크기 수를 증분시키는 것은 항상 크기를 증가시켜서, 증분된 수가 0으로부터 더 멀리 떨어지게 한다. 양의 2의 보수들에 대해서는 동일한 것이 일어나지만, 음의 2의 보수들은 증분될 때 0에 더 가깝게 된다. 이것은, 정수가 양수인지 또는 음수인지 여부에 기초하여 반올림 로직이 변경되어야 한다는 것을 의미한다. 그것은 또한, 기본 값(증분되거나 증가되지 않을 값)을 선택하는 데 주의해야 한다는 것을 의미한다. 양의 정수들의 경우, 그러한 값은 단지 버림된 FP 유효숫자이므로, 1.37은 1의 기본 값, 및 1 또는 2 중 어느 하나의 결과를 가질 것이다. 음의 정수들의 경우, 다시 유효숫자를 버림하고 결과의 1의 보수를 취하고(1의 보수는 모든 비트들이 반전된 원래의 수임), -1.37은 1로 버림되고, 이어서 반전되어 -2의 기본 값을 제공한다. 이어서, 원하는 결과가 -2 또는 (증분될 때) -1 중 어느 하나이기 때문에 모든 것이 산출된다.
더 복잡한 것을 하기 위해, 변환 방법은 음의 정수들에 대해 L, G 및 S를 찾도록 일부 계산을 요구한다. 정확한 반올림은, 2의 보수 프로세스(반전 및 1을 가산)를 완료하고, 이어서 L, G 및 S를 계산할 것을 요구하지만, 그러한 1을 가산하는 것은 단지 반전하는 것과 비교하여 느리다. 이상적으로는, 원래의 시프트된 입력으로부터(즉, 부호들에 대해 무언가를 행하기 전의 입력으로부터) 실제 L, G, 및 S를 계산하기를 원할 것이다. 따라서, 부동 소수점 1.37 또는 -1.37 둘 모두는 정수 1로 우측 시프트될 것이다.
반전시키기 전에 L0, G0, 및 S0를 최하위 비트(lsb), 가드 및 스티키로 하고, 반전시킨 후에 Li, Gi 및 Si를 lsb, 가드 및 스티키로 하고, 마지막으로 반전 및 1을 가산한 후에 L, G 및 S를 lsb, 가드 및 스티키로 한다.
S0이 0이면, Si에 기여하는 비트들은 모두 1이고, 따라서 S(그들 Si 비트들에 1을 가산함으로써 획득됨)가 또한 0이다. S0이 0이 아니면, Si는 모두 1이 아니고, 따라서 S는 0이 아니다. 따라서, 모든 경우들에서 S0 = S이다.
G0이 0이면, Gi는 1이고, G는 또한, S0가 0일때에만 일어나는 S 비트들로부터의 캐리-인(carry-in)이 있는 경우를 제외하고는 1이다. G0이 1이면, Gi는 0이고, 다시 G는 또한, S0가 0일때에만 일어나는 S 비트들로부터의 캐리-인이 있는 경우를 제외하고는 0이다. 따라서, G= G0 ^ S0이다.
매우 유사한 로직에 의해, L = L0 ^ (G0 | S0)이다.
이제, 음의 정수 및 양의 정수 둘 모두에 대해 L, G, 및 S를 가지며, 반올림 규칙을 다음과 같이 제시할 수 있다:
[표 5]
Figure pat00007
고정 소수점 수들은 정수들과 정확히 동일한 방식으로 반올림한다. (정수 또는 고정 소수점으로의) 부호화되지 않은 변환들에 대한 규칙들은 양의 변환들에 대한 규칙들과 동일하다.
도입 반올림
반올림을 행하기 위한 더 빠른 방식은 거의 모든 FP 연산의 일부인 유효숫자 가산의 일부로서 반올림 상수를 도입하는 것이다. 이것이 어떻게 작업되는지 보기 위해, 달러와 센트로 수들을 가산하고 이어서 달러로 반올림하는 것을 고려한다. 가산하면,
$1.27
+$2 .35
$3.62
합계 $3.62는 $3보다 $4에 더 가깝기 때문에, 가장 가까운 값으로 반올림하는 모드들 중 어느 하나는 $4를 반환해야 한다는 것을 알 수 있다. 수들을 이진수로 표현하는 경우, 마지막 섹션으로부터의 L, G, S 방법을 사용하여 동일한 결과를 달성할 수 있다. 그러나, 단지 50 센트를 가산하고, 그 결과를 버림한다고 가정한다.
1.27
+ 2.35
+ 0.50 (반올림 도입)
4.12
합계($4.12)에서 달러 금액($4)을 바로 반환했으면, RNA 반올림 모드를 사용하여 정확하게 반올림하였다. $0.50 대신 $0.99를 가산하면, RP 반올림을 사용하여 정확하게 반올림할 것이다. RNE은 약간 더 복잡하다: $0.50를 가산하고, 버림하고, 이어서 남아 있는 센트를 살펴본다. 남아 있는 센트가 0이 아니면, 버림된 결과는 정확하다. 남아 있는 센트가 0이면, 도입 전에 2 달러 금액들 사이에 정확하게 있으므로, 짝수 달러 금액을 선택한다. 이진 FP의 경우, 이러한 금액들은 달러 금액의 최하위 비트를 0으로 설정한다.
3개의 수들을 가산하는 것은 2개의 수들을 가산하는 것보다 단지 약간 느리므로, 2개의 유효숫자들을 가산하고, L, G, 및 S를 검사하고, 이어서 반올림 모드에 따라 결과를 증분시키는 경우보다 도입 반올림을 사용함으로써 반올림된 결과를 훨씬 더 빨리 얻는다.
도입 반올림 구현
FP의 경우, 반올림 도입은 3개의 상이한 값들 중 하나인데, 그 값들은 반올림 모드 및 (때때로) 결과의 부호에 의존한다.
Figure pat00008
RNA 및 RNE은 둘 모두는 G 포지션에서 1을 도입할 것을 요구한다(이것은 달러 및 센트 예에서 $0.50을 가산하는 것과 같음).
Figure pat00009
RP 및 RM 반올림은 모드뿐만 아니라 부호에 의존한다. RP는 양의 결과들을 위로 반올림하지만(유효숫자의 크기를 양의 무한대를 향해 증가시킴), 음의 결과들을 버림한다(양의 무한대에 더 가까운 유효숫자를 선택함). 유사하게, RM은 음의 결과들을 위로 반올림하지만(유효숫자의 크기를 음의 무한대를 향해 증가시킴), 양의 결과들을 버림한다(음의 무한대에 더 가까운 유효숫자를 선택함). 따라서, RM 및 RP를 2개의 경우들, 즉 부호가 반올림 방향과 매칭되는 경우의 반올림(RU), 및 부호가 반올림 도입과 다른 경우의 버림(RZ)으로 나눈다. RU 경우들에 대해, G-bit 위치에 그리고 S에 논리적으로 기여하는 모든 위치에 1을 도입한다(이것은 달러와 센트 예에서 $0.99를 가산하는 것과 같음).
Figure pat00010
RZ 및 RX 모드들에 대해, 그리고 RZ 모드로 감소하는 RP 및 RM 모드들에 대해, 0을 도입한다.
대부분의 반올림 모드들에 대해, 반올림 도입을 추가하고 이어서 버림하는 것은 정확하게 반올림된 결과를 제공한다. 두 가지 예외들은 RNE 및 RX인데, 이들은 가산 후에 G 및 S를 검사하는 것을 요구한다. RNE의 경우, G 및 S 둘 모두가 0이면 L을 0으로 설정한다. RX의 경우, G 또는 S가 0이 아니면 L을 1로 설정한다.
FP 수가 실수들이 아님
FP 수들을 바로 실수들과 같은 것으로 생각하기 쉽지만, 그들은 가장 기본적인 속성들에 대해서도 근본적으로 상이하다:
1. 그들은 결합적이지 않다. 예를 들어, SP에서는 3개의 수들을 가산하고 100만 또는 0을 반환할 수 있는데, 아마도 사람들은 반올림 오류라고는 생각하지 않을 것이다:
(245 + -245) + 220 = 220
245 + (-245 + 220) = 0
2. 그들은 분배 법칙을 따르지 않는다. 다시 SP에서:
3,000,001 * (4.00001 + 5.00001) = 0x4bcdfe83
(3,000,001 * 4.00001) + (3,000,001 * 5.00001) = 0x4bcdfe82
그리고 오버플로우의 존재 시에 상황은 더 악화된다:
250 * (278 - 277) = 2127
(250 * 278) - (250 * 277) = 무한대
3. 일부 구현들에서, 그들은 우리가 디폴트 NaN 모드(모든 NaN들을 단일 NaN으로 변환하는 모드)에 있지 않으면 심지어 가환적(commutative)이지 않은데, 그 이유는 일반적으로 nanA + nanB! = nanB + nanA이기 때문이다. 수치 가산들 및 곱셈들은 가환적이다.
4. IEEE NaN 규칙들 때문에, 어떠한 곱셈 또는 가산 아이덴티티(identity)들도 없다. 1과 0은 수치 값들에 대한 아이덴티티들로서 작용한다.
FP 수들을 생각하는 하나의 유용한 방법은, 극히 적은(DP의 경우 53) 연속 비트들이 0이 아닐 수 있는 매우 긴 고정 소수점 수들인 것으로 그들을 간주하는 것이다. 예를 들어, 무한이 아닌 DP 수들은 2046개의 자리들 중 어느 하나에서 유효숫자의 제1 비트를 가질 수 있고, 그러한 제1 비트에 이어서 52개의 다른 유효숫자 비트들이 뒤따르고, 부호 비트가 있으므로 임의의 유한의 DP 수는 2046 + 52 + 1 = 2099 비트 고정 소수점 수로 표현될 수 있다. 이러한 방식으로 검사하면, 2개의 FP 수들을 가산하는 것은 대체적으로 다른 FP 수를 생성하지 않는다는 것이 매우 명확해진다: 가산의 결과는 그것이 FP 수가 되도록 반올림되어야 한다.
극소 검출
IEEE-754 부동 소수점 표준들(1985, 2008, 2019)은 계산이 "반올림 전" 그리고 "반올림 후"에 극소한 결과를 산출하는지 여부를 검출하는 2개의 호환불가능한 방식들을 갖는다. 극소를 검출하는 이러한 방식들 중 하나 또는 다른 하나를 사용할 수 있는 상이한 프로세서들의 거동을 에뮬레이팅하는 것을 돕기 위해, 두 방식들 모두를 극소를 검출하는 부분에 제공하는 것이 유용할 수 있다.
표준은 극소를 검출하기 위한 두 가지 방식들을 제공한다. 1985 표준으로부터:
"극소는 다음 중 하나에 검출될 수 있다:
1. 반올림 후 - 지수 범위가 무한이었던 것처럼 계산된 0이 아닌 결과가 엄격히 ± 2Emin 사이에 있을 때
2. 반올림 전 - 지수 범위 및 정밀도 둘 모두가 무한이었던 것처럼 계산된 0이 아닌 결과가 엄격히 ± 2Emin 사이에 있을 때. "
언더플로우는 극소하고 부정확한 최종 결과들에 대해 시그널링된다. 부동 소수점 연산에 대해 반환된 IEEE 754 결과는 두 방법들 모두에 대해 동일하고, 부정확성도 또한 두 방법들 모두에 대해 동일하다(부정확하다는 것은 반올림된 결과와 반올림되지 않은 결과가 상이하다는 것을 의미함).
도 2는 반올림 전 극소 검출을 구현하기 위한 하나의 접근법을 도시한다. 부동 소수점 프로세싱 회로부(20) 내의 회로 로직(23)은 먼저 부동 소수점 연산(예를 들어, 가산 또는 승산)을 수행하여, 반올림되지 않은 결과 유효숫자 x를 생성하는데, 여기서 그것은 무한 범위 및 정밀도를 갖는 것처럼 계산되고, 그리고 이어서, 무한 지수 E가 Emin 미만인 경우, 시프터(shifter)(24)가 그 결과를 우측 시프트하여 반올림되지 않은 유효숫자가 지수 Emin에 대응하게 된다. 시프트 제어 회로부(26)는 시프터(24)에 의해 사용되는 시프트 양을 제어한다. 전치 0 카운터(28)가 또한 반올림되지 않은 유효숫자 내의 전치 0들의 수를 카운팅(lzc)하기 위해 제공되고, 전치 0 카운트가 0이 아니고 무한 지수 E가 Emin 이상인 경우, 시프터(24)는 대신 반올림되지 않은 유효숫자를, lzc 및 E-Emin 중 최소치에 대응하는 비트 수만큼 좌측 시프트한다. 따라서, 시프터의 출력(시프트된 유효숫자)은, E < Emin이거나 lzc가 0이 아닌 경우에, 유효숫자가 Emin의 지수 값에 대응하는 비트 포지션들로 시프트되는 것을 보장하기 위해 수행되는 우측/좌측 시프트의 결과이거나, 또는 lzc가 0이었고 E가 이미 Emin 이상이었던 경우, 가변적인 시프트는 0 비트들만큼인 것으로, 즉, 시프트된 유효숫자는 반올림되지 않은 유효숫자와 동일하다.
어느 방식으로든, x가 "반올림 전"에 극소한지(BR_tiny) 여부를 결정하는 것은 시프트된 반올림되지 않은 유효숫자의 제1 비트를 살펴보는 것으로 이루어지는데:
- 전치 비트가 1인 경우, 결과는 BR_tiny가 아니고
- 전치 비트가 0인 경우, 결과는 BR_tiny이다.
따라서, 반올림 전 극소 상태는, 반올림 전 극소 상태를 생성하도록, 시프트된 유효숫자의 최상위 비트를 반전시키는 NOT 게이트(인버터)(34)에 의해 생성된다. 이러한 예에서, 반올림 전 극소 검출 회로부(22)는 단순히 NOT 게이트(34)를 포함할 것이다. 시프트 회로(24), 시프트 제어 회로부(26), 및 전치 0 카운터(28)는 부동 소수점 프로세싱 연산(20)의 부분으로 고려될 수 있는데, 그 이유는, 극소 검출에 유용할 뿐만 아니라, 반올림되지 않은 결과를 이러한 방식으로 시프트하는 것이 또한 반올림된 결과를 올바르게 계산하는 것을 용이하게 한다는 이점을 갖기 때문이다. k-비트 유효숫자들(즉, k-1 비트 분수들)을 갖는 포맷들의 경우, 이제 비트 k에서 단순히 반올림한다. 따라서, 반올림 값 선택 회로부(30)는, 반올림된 부동 소수점 결과를 생성하기 위해, 시프트된 유효숫자로부터 결정된 상태 값들 L, G, S에 대한 분석에 기초하여, 가산기(32)에 의해 시프트된 유효숫자에 가산될 반올림 값을 결정할 수 있다. 반올림 값 선택은 상기 표 4에 나타낸 바와 같이 수행된다.
도 3은 반올림 후 극소 검출을 수행하기 위한 접근법을 도시한다. 이것은, 반올림 단계가 있기 때문에, 반올림 전 극소 검출처럼 간단하지 않으며, 그것은 "지수 범위[그러나 정밀도는 아님]가 무한이었던 것처럼 계산된 0이 아닌 결과가 엄격히 ± 2Emin 사이에 있을 때"라는 표준에서의 반올림 후 극소의 정의로 인해 보통의 반올림은 아니다.
무한 지수 범위는 "반올림 후" 테스트가 항상 정규화된 수, 즉, 유효숫자가 "1"로 시작하는 수에 대해 행해진다는 것을 의미한다. 따라서, 도 3에 도시된 바와 같이, 전치 0 검출에 기초한 정규화 시프트(38)가 극소 검출 회로부(20)에서 수행된다(그리고 지수 E는 정규화를 처리하도록 회로부(40)에 의해 조정됨). 이러한 정규화는 반올림한 표준 부동 소수점 결과에는 필요하지 않는데, 그 이유는, 준정규적 범위 내의 값들의 경우에는, 시프트 회로부(24)에 의해 수행되는 시프트가 일부 전치 0들을 가질 것이지만, 반면, 시프터(38)는, 지수 E의 값에 관계없이, 극소 검출을 위해 시프트된 유효숫자가 전치 1을 갖도록 보장하기 때문이다. 포맷이 k개의 유효숫자 비트들을 갖는 경우, 정규화된 유효숫자는 (사용되고 있는 반올림 모드에 따라 상태 값들 비트들 L, G, S에 기초하여 반올림 후 극소 반올림 증분 선택(42)을 수행하고(여기서, S는 G보다 하위인 s로 라벨링된 모든 비트들의 논리 OR임), 정규화 시프트(38)에 의해 출력된 시프트된 유효숫자에 반올림 증분을 가산함(44)으로써) 전치 1로 시작하는 k-비트 값으로 반올림된다. 반올림된 값이 전치 1을 가져야 하므로, 반올림 가산(44) 이후에 추가의 정규화 시프트(46)가 여전히 요구될 수 있다(정규화 시프트(46)는, 극소 반올림이 오버플로우를 야기한 경우, 1 비트만큼의 우측 시프트로 제한될 것임). 이어서, 회로부(46, 48)를 사용하여, k-비트 반올림된 값이 "엄격히 ± 2Emin 사이에" 있는지 여부가 계산되고, 이에 따라 극소가 결정되는데:
- 반올림된 값이 엄격히 ± 2Emin 사이에 있는 경우, 결과는 AR_tiny이고
- 그렇지 않으면, 결과는 AR_tiny가 아니다
(여기서 "AR_tiny"는, 반올림 후 극소 검출을 사용하여, 결과가 극소하다고 밝혀졌음을 의미함).
이러한 극소 반올림 계산은 원래의 FP 연산에 의해 반환되는 값과는 아무 관련이 없다는 점에 유의한다. "반올림 후" 극소 반올림은 엄격히 극소를 결정하기 위해 사용되고, 그 후 극소 반올림된 값은 폐기된다. 따라서, 반올림 후 극소 검출과는 별개로, 시프터(24)에 의해 생성된 시프트된 유효숫자는 또한 도 2에 도시된 바와 동일한 방식으로 반올림 증분 선택(30) 및 가산(32)의 대상이 된다. 따라서, 32 및 44에서 2개의 별개의 반올림 가산들이 존재한다.
비도입 반올림을 갖는 조합된 반올림 전 극소 검출 및 반올림 후 극소 검출
전형적인 프로세서 하드웨어 설계에서, 극소 검출 회로부(22)는 반올림 전 극소 검출 및 반올림 후 극소 검출 중 단지 하나만을 수행한다. 이것은, IEEE-754 표준이 둘 모두가 지원되도록 요구하지 않고, 이에 따라, 제2 극소 검출 기법을 지원하기 위한 추가적인 로직이 불필요하다고 고려될 수 있기 때문이다. 또한, 도 2 및 도 3에 도시된 바와 같이, 반올림 전 극소 검출 및 반올림 후 극소 검출을 검출하기 위한 기법들은 전형적으로 완전히 상이한 회로 로직을 요구하는 것으로 간주되었을 수 있고, 이에 따라 회로부가 공유될 가능성이 거의 없다.
그러나, 본 발명자들은, 결과 크기가 특정 범위 내에 있는 경우에, 시프트된 유효숫자의 비트들을 분석함으로써, 비교적 효율적인 회로 로직을 이용하여 두 기법들 모두를 지원하는 반올림 전 극소 검출 및 반올림 후 극소 검출 둘 모두에 대한 통일된 데이터 경로를 제공하는 것이 가능하다는 것을 인식했는데, 도 3에 도시된 접근법과는 반대로, 부동 소수점 프로세싱 연산의 실제 부동 소수점 결과의 반올림을 위해 이미 수행되고 있는 것 이외에 반올림 가산을 실제로 수행할 필요가 없는 반올림 후 극소 검출의 경우에도, 그러하다.
이것은 하기와 같은 일련의 실현들을 활용한다.
반올림은 2개의 연속적인 FP 수들 사이에서 선택을 한다는 것을 상기하자. ulp를, 최저 자리의 단위로서, 주어진 지수를 갖는 유효숫자의 낮은 차수 비트의 크기로서 정의하고(즉, 지수가 Emin인 값들에 대한 특정 경우에, ulp는 사용되고 있는 부동 소수점 포맷으로 표현가능한 최소의 준정규 수임), x를 부동 소수점 연산의 반올림되지 않은 결과라고 한다.
임의의 x>= 2Emin은 >= 2Emin인 어느 것으로 반올림될 것이며, 이에 따라 x는 AR_tiny가 아니다.
임의의 x <= 2Emin - ulp는 <= 2Emin - ulp인 어느 것으로 반올림될 것이며, 이에 따라 x는 AR_tiny이다.
이것으로, 다음과 같은 매우 작은 범위의 수들에 추가의 테스트가 요구된다,
2Emin > x > 2Emin - ulp.
k-비트 유효숫자들을 갖는 포맷들의 경우, 이러한 범위 내의 시프트된 반올림되지 않은 수들 x 모두는 전치 0과 바로 다음에 적어도 k-1개의 1들로 이루어진다. 반올림되지 않은 시프트된 결과는 이제 (높은 차수의 비트로 시작하는) 하기의 부분들을 갖는다:
1) 정수 비트 (이러한 범위 내에서는 항상 0임).
2) k-1개의 분수 비트들 (이러한 범위 내에서의 항상 모두 1들임).
3) G, 가드 비트
4) R, G 이후의 다음 비트
5) 임의의 수의 s 또는 스티키 비트들.
반올림 전 극소 검출의 경우, 이러한 2Emin > x > 2Emin - ulp의 범위 내의 모든 값들은 극소하며, G, R, 또는 s에 대한 어떠한 추가의 분석도 요구하지 않고 - 반올림 전 극소 상태는 반올림되지 않은 시프트된 결과의 부분 1) 및 부분 2)로부터 결정될 수 있다.
x가 AR_tiny인지 여부를 결정하기 위해, (이론적으로) 값이 정규화되어야 하며, 따라서 전치 0이 있고 다음 비트가 1이면, 1 비트 포지션만큼의 이론적인 좌측 시프트가 존재한다(실제로, 이러한 시프트는 수행될 필요가 없는데, 그 이유는, 간단히 정규 L, G, S의 한 자리 우측에 있는 비트들을 반올림 증분 선택을 위한 L, G, S 값들로 처리할 수 있기 때문임). 따라서, G가 AR 극소 결정을 위한 낮은 차수 유효숫자 비트(상기 표 4의 L과 등가임)가 된다. 그러한 비트가 0인 경우, AR_rounding(AR 극소 검출을 위해 이론적으로는 수행되었지만, 아래에 나타낸 바와 같이 AR 극소가 결정될 때 실제로는 수행되지 않는, 반올림)은 2Emin-ulp/2까지 경계가 지어지며, 이에 따라 x는 AR_tiny이다. 따라서, 실제로, 2Emin-ulp/2 > x > 2Emin - ulp인 범위의 부분이 또한 고려되지 않을 수 있는데, 그 이유는, 그러한 범위 내의 수들은 극소하지 않은 어느 것에 도달하기 위해 AR-극소-반올림될 수 없기 때문이다.
유일한 나머지 경우는 G가 1일 때이며, 여기서, 위에서 언급한 x의 범위에 대해 2Emin > x ≥ 2Emin - ulp/2의 범위 내의 수들에 적용된다. 이러한 경우, x는 (AR_rounding 하에서) 2Emin-ulp/2가 되거나(이는 AR_tiny임) 2Emin가 될(이는 AR_tiny가 아님) 수 있다.
따라서, 체크할 범위는 2Emin > x ≥ 2Emin - ulp/2이고, 이는 반올림되지 않은 시프트된 유효숫자의 상단 k+1개의 비트들에 기초하여 결정될 수 있다(즉, 사용되고 있는 부동 소수점 포맷의 k-비트 유효숫자(k-1 비트는 분수를 저장함)를 형성하기 위해 버림이 적용될 소수점보다 상위인 전치 0 이후의 상단 k-1개의 분수 비트들뿐만 아니라 G 비트도 고려됨).
반올림 계산은 위에서 나타낸 FP 개요에 대한 표 4에 사용되는 것과 동일하지만, L, G 및 S를 정규적으로 사용하는 대신, 다음을 사용하여 반올림 후 증분(after-rounding increment, ARI)이 계산된다:
AR_L = G = 1
AR_G = R
AR_S = s로 라벨링된 모든 비트들의 논리 OR
(이것은 위에서 언급한 이론적인 1 비트 좌측 시프트에 대해 처리함).
ARI의 계산은 반올림 모드에 따라 가변하지만, 3개의 관심 있는 반올림 모드들(RNE, RU, RZ)에 대해, 다음을 갖는다:
[표 6]
Figure pat00011
(표 4에 나타낸 바와 같이, RU는, 값이 양수인 경우, RP에 대응하고, 값이 음수인 경우, RM에 대응한다는 것에 주목함).
모든 이러한 예들에서, ARI는 실제로 어떠한 반올림도 행하지 않으면서 용이하게 계산되며, 따라서 반올림을 위해 이미 제공된 가산기(32) 이외의 어떠한 추가적인 반올림 가산기도 필요하지 않다.
그것을 모두 종합하면, 시프트된 반올림되지 않은 유효숫자 x가 제공되면, 표 7에 따라 BR_tiny 및 AR_tiny 둘 모두가 계산될 수 있으며:
[표 7]
Figure pat00012
여기서 k는 사용되고 있는 부동 소수점 포맷의 유효숫자 내의 비트들의 수(저장된 분수 F의 부분이 아닌 암시적 전치 1 또는 0을 포함함)이다.
이를 실행하면, 도 4는, 부동 소수점 연산에 대해 비도입 반올림을 사용하는 예에서, 반올림 전 극소 상태 및 반올림 후 극소 상태 둘 모두를 검출하기 위한 조합된 극소 검출 회로부의 예를 개략적으로 예시한다. 부동 소수점 프로세싱 회로부(20)는 도 2 및 도 3에 도시된 것과 동일하므로, 부동 소수점 프로세싱 연산 자체를 수행하기 위한 회로 로직(23)을 포함한다(예를 들어, 로직(23)은 부동 소수점 가산기 또는 곱셈기일 수 있음). 또한, 부동 소수점 프로세싱 회로부(20)는 도 2에서와 같이 시프트 회로부(24), 시프트 제어 회로부(26), 전치 0 카운트 회로부(28)를 포함한다. 시프트 회로부(24)는 지수 E와 최소 지수 Emin 사이의 차이, 및 부동 소수점 연산에 의해 생성된 반올림되지 않은 유효숫자의 전치 0들의 전치 0 카운트에 따라 가변적인 우측 또는 좌측 시프트를 적용하여, 시프트된 유효숫자를 생성한다. 또한, 부동 소수점 프로세싱 회로부(20)는 반올림 값을 시프트된 반올림되지 않은 유효숫자에 가산하기 위해 반올림 값 선택 회로부(30) 및 반올림 가산기(32)를 포함하며, 이때, 반올림 값은 사용되고 있는 반올림 모드에 따라 시프트된 반올림되지 않은 유효숫자의 LGS 비트들에 기초하여 선택된다(예를 들어, 위의 표 4를 참조).
도 2 및 도 3과는 대조적으로, 도 4의 극소 검출 회로부(22)는, 반올림 전 극소 검출이 수행되고 있는지 또는 반올림 후 극소 검출이 수행되고 있는지에 따라 그리고 부동 소수점 프로세싱 연산(23)에 의해 생성된 결과에 대한 결과 크기가 미리결정된 범위보다 더 큰지, 그 내에 있는지, 또는 그것보다 더 작은지를 나타내는, 범위 식별 회로부(50)에 의해 생성된 신호에 따라, 극소 상태에 대한 출력 값을 선택하기 위한, 범위 식별 회로부(50), 반올림 후(AR) 극소 반올림 증분 선택 회로부(52), 및 멀티플렉서(multiplexer)들(54, 56)을 포함한다.
위에서 논의된 바와 같이, 범위 식별 회로부는 시프트된 유효숫자의 상부 k+1개의 비트들을 체크한다. 시프트된 유효숫자의 전치 비트가 1인 경우, 결과 크기는 미리결정된 범위보다 더 크다고 결정된다(다른 예들에서, 결과들이 미리결정된 범위보다 더 큰지는, 시프터(24)에 의해 적용된 시프트를 처리하기 위한 조정 후, 지수 E가 Emin을 초과하는지 여부로부터도 식별될 수 있음). 시프트된 유효숫자의 최상위 비트가 0이고 그리고 그것에 적어도 k개의 연속적인 1들이 이어지는 경우, 결과 크기는 미리결정된 범위 내에 있다. 시프트된 유효숫자의 최상위 비트가 0이고 그리고 그것에 k개 미만의 연속적인 1들이 이어지는 경우, 결과 크기는 미리결정된 범위보다 더 작다.
AR 극소 반올림 증분 선택 회로부(52)는 반올림 모드 및 시프트된 유효숫자의 하부 비트들 R 및 ssss(간결하게 하기 위해, 도 4는 s로 레이블링된 4개의 비트들을 도시하지만, s 비트들의 수는 부동 소수점 연산에 의해 생성된 정밀도에 따라 가변할 것임)에 따라 AR 극소 반올림 증분을 결정한다. 반올림 모드가 RZ인 경우, AR 극소 반올림 증분은 0이다. 반올림 모드가 RNE인 경우, AR 극소 반올림 증분은 결과를 위해 버림된 k-비트 유효숫자의 부분을 형성할 최하위 비트보다 2개 자리 아래에 있는 비트 R과 동일하다. 반올림 모드가 RU인 경우, AR 극소 반올림 증분은 논리 OR 연산으로 비트 R과 모든 하부 비트들 ssss를 조합한 결과에 대응한다(즉, 하부 비트들 R, ssss 중 임의의 하나 이상이 1인 경우, 반올림 후 극소 반올림 증분(ARI)은 또한 1임). AR 극소 반올림 증분 ARI는 NOT 게이트(53)에 의해 반전되어 멀티플렉서(54)에 공급되며, 멀티플렉서는, 극소 검출이 반올림 후 극소 검출에 따라 수행되고 있는지 또는 반올림 전 극소 검출에 따라 수행되고 있는지에 따라 ARI의 반전된 값과 1의 단일 비트 값 사이에서 선택한다. 멀티플렉서(54)의 출력은 결과 크기가 미리결정된 범위 내에 있다고 밝혀진 경우에 극소 상태를 표현하고, 반올림 전 극소 검출이 수행되고 있는 경우에는 1로 설정되고, 반올림 후 극소 검출이 수행되는 경우에는 ARI의 반전으로 설정된다.
멀티플렉서(56)는 범위 식별 회로부(50)의 출력에 따라 극소 상태에 대한 최종 값을 선택한다. 범위 식별 회로부(50)가 결과 크기가 미리결정된 범위보다 더 크다고 결정하는 경우, 반올림 전 극소 검출 및 반올림 후 극소 검출 둘 모두에 대해, 결과가 극소하지 않다고 나타내기 위해, 0의 극소 상태 값이 출력된다. 범위 식별 회로부(50)가 결과 크기가 미리결정된 범위보다 더 작다고 식별하는 경우, 반올림 전 극소 검출 및 반올림 후 극소 검출 둘 모두에 대해, 결과가 극소하다고 나타내기 위해, 1의 값이 극소 상태로서 출력된다. 범위 식별 회로부(50)가 결과 크기가 미리결정된 범위 내에 있다고 식별하는 경우, 멀티플렉서(56)에 의해 출력되는 극소 상태는, 반올림 전 극소 검출이 수행되고 있는지 또는 반올림 후 극소 검출이 수행되고 있는지에 기초하여 설정되었던 멀티플렉서(54)의 출력이다.
따라서, 이러한 접근법을 이용하여, 극소 검출 회로부는 하드웨어적으로 비교적 간단한 회로 로직을 이용하여, 그리고 반올림 전 극소 검출 및 반올림 후 극소 검출 두 유형들 모두의 극소 검출이 동일한 하드웨어 구현에서 지원되도록 반올림 전 극소 검출 및 반올림 후 극소 검출 둘 모두에 대한 공통 데이터 경로를 이용하여 구현될 수 있다. 결과 크기가 미리결정된 범위 내에 있는지 여부를 계산하는 것은 특정 비트 값들의 어떠한 어려운 비교도 요구하지 않는데, 그 이유는, 그것이 단지 반올림되지 않은 유효숫자의 처음 k+1개의 비트들에 대한 간단한 검사이며, 이에 따라, 어떠한 가산들/감산들도, 또는 더 많은 임의의 비트 패턴들의 비교 상수에 대한 비교도 요구되지 않기 때문이다. 범위 계산은 간단한 부울 게이트들의 세트로 행해질 수 있다. 예를 들어, 결과가 범위보다 더 큰지 여부를 나타내는 신호는 단순히, 시프트된 유효숫자의 최상위 비트로부터 직접 도출될 수 있다. 결과가 범위 내에 있는지 여부를 나타내는 신호는 시프트된 유효숫자의 다음 k개의 비트들 각각(의 비반전된 값들)과, 시프트된 유효숫자의 최상위 비트의 반전의 비트별 AND를 수행함으로써 생성될 수 있다. 결과가 범위보다 더 작은지 여부를 나타내는 신호는 시프트된 유효숫자의 다음 k개의 비트들의 비트별 AND의 반전과, 시프트된 유효숫자의 최상위 비트의 반전에 대해 AND 연산을 수행함으로써 생성될 수 있다. 물론, 동일한 결과를 제공하기 위해 대안적인 논리 게이트들의 세트가 고안될 수 있으며, 따라서 이는 단지 하나의 예일 뿐이다.
또한, 극소 검출 회로부(22)는, 반올림 후 극소 검출을 수행하고 있을 때, 도 3의 예에서와 같이, 어떠한 반올림 증분 가산 회로부(44) 또는 정규화 회로부(38, 46)를 포함할 필요가 없는데, 이는 AR 극소 검출을 지원하기 위해서라도 그러하며, 이는 극소 검출의 속도를 매우 높이고 회로 면적을 감소시킨다. 범위 식별 회로부(50)가 증분 ARI가 결정될 비교적 좁은 미리결정된 범위를 식별하였으며 이에 따라 가능성들의 수가 제한되기 때문에, 반올림 후 극소 반올림 증분 ARI를 계산하기 위해 반올림 후 극소 반올림 증분 선택 회로부(52) 내에 필요로 되는 회로 로직의 양은 비교적 작다. 따라서, 이러한 접근법은 비교적 작은 회로 면적 및 전력 비용으로 두 유형들 모두의 극소 검출이 지원될 수 있게 한다.
도 5는 도 4의 예에서 극소를 검출하는 방법을 예시하는 흐름도이다. 단계(200)에서, 부동 소수점 프로세싱 회로부(20)는 부동 소수점 연산을 수행하여 결과 지수 E 및 반올림되지 않은 유효숫자를 생성한다. 단계(202)에서, 시프트 제어 회로부(26)는, 결과 지수 E가, 사용되고 있는 부동 소수점 포맷으로 표현가능한 최소 정규 지수인 최소 지수 Emin 미만인지 여부를 결정한다. 결과 지수 E가 Emin 미만인 경우, 단계(204)에서, 시프트 제어 회로부(26)는 반올림되지 않은 유효숫자를 (Emin-E) 비트들만큼 우측 시프트하도록 시프트 회로부(24)를 제어하여, 시프트된 유효숫자를 생성한다.
결과 지수 E가 Emin 이상이라고 결정되는 경우, 단계(206)에서, 시프트 제어 회로부(26)는, 전치 0 카운트 회로부(28)에 의해 결정된 반올림되지 않은 유효숫자 내의 전치 0들의 수의 카운트에 기초하여, 전치 0 카운트가 0인지 또는 0이 아닌지를 결정한다. 전치 0 카운트가 0인 경우(즉, 시프트된 유효숫자의 최상위 비트가 1임), 단계(208)에서, 시프트 양은 0이 되고, 이에 따라 시프트 회로부(24)는 단순히, 반올림되지 않은 유효숫자와 동일한 값을 시프트된 유효숫자로서 출력한다. 전치 0 카운트가 0이 아닌 경우, 단계(210)에서, 시프트 제어 회로부(26)는 전치 0 카운트 및 결과 지수와 최소 지수 사이의 차이(E - Emin) 중 최소치에 대응하는 비트 수만큼 반올림되지 않은 유효숫자를 좌측 시프트하도록 시프트 회로부(24)를 제어한다. 좌측 시프트의 출력은 시프트된 유효숫자이다.
단계(202) 내지 단계(208)에서 시프트에 사용되는 가변적인 비트 수에 관계없이(가변적인 비트 수는 시프트 전혀 없음, 우측 시프트, 또는 좌측 시프트를 표현할 수 있음), 단계(212)에서, 범위 식별 회로부(50)는 시프트된 유효숫자의 상부 k+1개의 비트들을 사용하여, 결과 크기 x가 미리결정된
Figure pat00013
의 범위보다 더 큰지, 그 내에 있는지, 또는 그보다 더 작은지를 결정한다. 시프트된 유효숫자의 최상위 비트가 1인 경우, 결과 크기 x는 미리결정된 범위보다 더 크다고 결정되고, 이에 따라, 단계(214)에서, 멀티플렉서(56)는 부동 소수점 연산의 결과가 극소하지 않다고 나타내는 극소 상태 값을 출력한다. 이것은, 반올림 전 극소 검출이 수행되는지 또는 반올림 후 극소 검출이 수행되는지에 관계없이 그러하다.
단계(212)에서, 범위 식별 회로부(50)가 시프트된 유효숫자의 최상위 비트가 0이라고 결정하고, 시프트된 유효숫자의 다음 k개의 비트들 중 임의의 하나 이상이 또한 0인 경우, 결과 크기 x는 미리결정된 범위보다 더 작다고 결정되고, 이에 따라, 단계(216)에서, 멀티플렉서(56)는, 반올림 전 극소 검출 및 반올림 후 극소 검출 둘 모두에 대해, 결과가 극소함을 나타내는 1의 값을 극소 상태로서 출력한다.
단계(212)에서, 결과 크기 x가 미리결정된 범위 내에 있다고 결정되는 경우, 단계(218)에서, 멀티플렉서(54)는 반올림 전 극소 검출이 수행되고 있는지 또는 반올림 후 극소 검출이 수행되고 있는지를 결정하고, 반올림 전 극소 검출이 수행되는 경우에는, 단계(220)에서, 사용되고 있는 반올림 모드에 관계없이, 결과가 극소하다는 것을 나타내도록 극소 상태가 1로 설정된다.
단계(218)에서, 반올림 후 극소 검출이 수행된다고 결정되는 경우, 멀티플렉서(54)는 반올림 후 극소 반올림 증분 선택 회로부(52)에 의해 선택된 반올림 증분(ARI)에 종속하는 NOT 게이트(53)의 출력을 선택하는데, 이는 결국 반올림 모드에 종속한다. 단계(222)에서, 어떤 반올림 모드가 사용되는지가 결정된다. 반올림 모드가 RNE인 경우, 단계(224)에서, 반올림 후 극소 검출에 대한 극소 상태 출력은, 결과 값을 위해 버림된 k-비트 유효숫자의 부분이 될 최하위 비트 포지션보다 2개 자리 아래에 있는 비트 R의 반전에 대응한다. 사용되고 있는 반올림 모드가 RU인 경우, 단계(226)에서, 극소 상태는 비트 R과 모든 하부 비트들 ssss의 논리 OR의 반전에 대응하며, 이에 따라, 하부 비트들 R 및 s 모두가 0인 경우, 극소 상태는 결과가 극소하다고 나타내기 위해 1이 될 것이며, 비트들 R 및 s 중 임의의 하나가 1인 경우, 결과는 극소하지 않을 것이다(이것은, RU 반올림의 경우, 가산될 반올림 값이 R 및 ssss에 대응하는 모든 비트 포지션들에서 1들을 갖는다는 것을 반영하고, 이에 따라, 이러한 비트들 중 임의의 하나가 1인 경우, 이것은, AR 극소 반올림을 행할 때, 전치 비트가 범위 내 값들에 대해 1인 것을 보장하기 위해, 한 자리만큼의 이론적인 좌측 시프트가 필요로 될 것이라고 고려될 때, 반올림된 값의 하부 비트인, G 비트 포지션에의 증분을 야기할 것이며, 그리고 이에 따라, G 비트 포지션이 증분되는 경우, 이것은 극소하지 않은 값 2Emin으로의 반올림을 야기할 것임). 사용되고 있는 반올림 모드가 RZ인 경우, 단계(228)에서, 결과는 극소하고, RZ를 이용하면, 가산될 반올림 값이 0이므로, 미리결정된 범위 내의 값을 극소하지 않은 값으로 반올림할 수 없다.
도 5의 흐름도는 극소 상태를 생성하기 위해 수행될 수 있는 논리 함수들을 도시하지만, 회로 로직은 도 5에 도시된 정확한 동작을 도시된 순서로 수행할 필요는 없으며, 극소 검출 회로부가 동일한 동작을 상이한 순서들로 수행하거나 단계들을 순차적으로 수행하는 대신 병렬로 수행하는 것이 허용가능하다는 것이 이해될 것이다. 예를 들어, 실제로, 단계들(222, 224, 226, 228)에 따라 선택된 반올림 후 극소 반올림 증분은, 반올림 전 극소 검출이 사용되는지 또는 반올림 후 극소 검출이 사용되는지에 관계없이, 결과 크기 x가 미리결정된 범위 내에 있는지 여부를 결정하는 것과 병렬로 선택될 수 있으며, 이에 따라, 반올림 모드를 고려하는 것은, 결과 x가 미리결정된 범위 내에 있다고 결정한 후에는, 시작할 필요가 없다. 유사하게, 반올림 모드를 고려하는 것은, 반올림 전 극소 검출이 수행되고 있는지 또는 반올림 후 극소 검출이 수행되고 있는지를 결정한 후에는 수행될 필요가 없으며 - 도 4에 도시된 바와 같이, ARI는 (BR 극소 검출이 사용되더라도) 매번 선택될 수 있지만, 반올림 전 극소 검출이 사용되는 경우, 멀티플렉서(54)는 ARI 선택 회로부(52)의 출력을 선택하지 않을 것이다. 또한, 도 4에 도시된 것과 상이한 배열의 멀티플렉서들을 제공하는 것이 가능할 것이다. 예를 들어, 제1 세트의 멀티플렉서들은 각각의 반올림 모드에 대해 반올림 전 극소 값과 반올림 후 극소 값 사이에서 선택할 수 있고(RZ 반올림은 제외, 여기서 BR 및 AR 극소 검출 둘 모두에 대해 결과는 동일하므로, 극소 검출 유형에 기초한 명시적인 선택은 필요하지 않음), 제1 세트의 멀티플렉서들 아래의 제2 멀티플렉서는, 사용되는 반올림 모드에 기초하여, 범위 결정 회로부(50)가 시프트된 유효숫자가 미리결정된 범위 내의 결과 x를 표현한다고 식별하는 경우에 사용될 극소 상태 값으로서 출력하기 위해, 제1 세트의 멀티플렉서들의 출력들 중 어느 것(또는, RZ 반올림의 경우, 결과가 극소하다고 나타내기 위한 1의 디폴트 값)이 선택되는지를 선택할 수 있을 것이다.
도입 반올림을 갖는 조합된 극소 검출
도입 반올림은 반올림되지 않은 유효숫자를 얻기 전의 계산에 반올림 도입을 가산한다. 반올림되지 않은 유효숫자에 대한 액세스를 갖지 않기 때문에, 전에 주어진 분석을 사용할 수 없다. 아래의 분석에서, 도입 반올림된 유효숫자 내의 비트 포지션들 G, R, ssss에서의 값들은 G', R', s's's's'로 라벨링되어, 도입 반올림 값들이, 비도입 반올림이 사용되었을 경우, 반올림되지 않은 유효숫자에 대해 생성되었을 원래의 값들 G, R, ssss와 상이할 수 있음을 나타낸다.
도입을 가산하면 관심 범위들이 바뀌고, 이에 따라, 관심 범위는
Figure pat00014
이 된다. 이러한 범위보다 더 큰 도입 반올림된 결과들에 대하여, BR 및 AR 극소 상태는 0일 것이고, 이러한 범위보다 더 작은 도입 반올림된 결과들에 대하여, BR 및 AR 극소 상태는 1일 것이다.
이러한 범위 내의 값들에 대하여, 여기에는 2개의 관심 있는 도입들이 있다:
RNE: 비트 G에 1을 가산함
RU: G, R 및 모든 s 비트들에 1들을 가산함
(RZ는 0을 가산하며, 이에 따라, 도입 반올림은 결과를 변경시키지 않을 것이며, 따라서 반올림 전 극소 검출 및 반올림 후 극소 검출 둘 모두에 대하여, 값이
Figure pat00015
의 범위 내에 있을 때, 극소 상태는 극소하지 않은 결과를 나타내기 위해 0일 것임).
RNE 반올림의 경우, 비트 G에 1을 가산하는 것은 낮은 차수의 비트들 중 어느 것도 변경시키지 않으며, 특히, R을 변경시키지 않으므로, R' = R이고 s's's's' = ssss이다. 그러나, 도입은 포지션 G에서의 비트를 바꾸고, 이때, 새로운 BR 반올림 증분 = BRI = G이다. G가 알려지지 않았기 때문에, G'=G+1이 검사된다. 이어서 BRI는 ~G'로 주어진다. BR 극소 상태는 BRI와 동일하게 설정될 수 있다. 즉, RNE 반올림 및 BR 극소에 대하여, G' = 1인 경우, 이것은, 도입 반올림이 수행되지 않았으면, G의 반올림되지 않은 값이 0이었을 것임을 나타내며, 이에 따라,
Figure pat00016
의 범위에 대하여, 이것은, 도입 반올림이 수행되지 않았더라도, x가 이미 2Emin 이상이었을 것임을 암시하며, 이에 따라, 반올림 전 극소 상태는 극소하지 않은 결과를 나타내도록 0이어야 한다. G'=0인 경우, 이것은, 도입 반올림이 수행되지 않았으면, G의 반올림되지 않은 값이 1이었을 것임을 나타내며, 따라서, 앞서 나타낸 범위 내의 값들에 대하여, 도입 반올림된 유효숫자는, 단지 도입 반올림 값의 가산으로 인해서만, 2Emin에 도달했고, 그에 따라, 도입 반올림이 적용되지 않았을 경우에는, 결과가 극소했을(2Emin 미만) 것이다. 따라서, G'=0인 경우, 반올림 전 극소 상태는 1이다. 따라서, RNE 반올림의 경우, BR 극소 상태를 ~G'로 설정함으로써 정확한 결과가 제공된다.
RU 반올림의 경우, 도입 상수를 가산함으로써 합계가 제공된다:
sum[5:0] = L'G'R's's's' = LGRsss + 11111
(실제로, 3개 초과의 또는 그 미만의 s 비트들이 있을 수 있으며, 이때, 각각은 그것의 대응하는 1 도입을 가짐).
반올림 증분이, 0이 아닌 G, R, 또는 s 비트들 중 임의의 것과 등가라는 것에 주목함으로써, RU 반올림에 대한 BRI가 계산될 수 있으며, 이는 결국 ~&sum[4:0]과 등가이다. G, R, s가 모두 0이었을 경우, RU 반올림을 위해 11111 반올림 값을 가산하면 G', R', s's's'는 모두 1이 될 것이고, 도입 반올림된 값이
Figure pat00017
의 범위 내에 있는 경우, 이것은 G보다 상위의 임의의 비트에 도입 반올림으로 인한 어떠한 변경도 없었음을 암시하며, 이에 따라, 도입 반올림이 수행되지 않았을 경우, 결과는 2Emin이었을 것이며, 반올림 전 극소 상태는 0이어야 한다. 따라서, 시프트한 후 도입 반올림된 유효숫자 내의 비트들 G', R', s's's' 모두의 AND가 1인 경우, 반올림 전 극소 상태는 0이다(극소하지 않음). G', R', s's's' 중 임의의 하나가 0인 경우, 이것은, 도입 반올림을 위해 11111 반올림 값을 가산하면 캐리가 L' 비트 포지션에서의 비트 값을 변경시킨다는 것을 암시하며, 이에 따라, 도입 반올림된 값이
Figure pat00018
의 범위 내에 있는 경우, 도입 반올림이 수행되지 않았으면, 결과는 2Emin 미만이었을 것이며, 이에 따라, BR 극소 상태는 반올림 전 극소한 결과를 나타내도록 1이어야 한다. 따라서, BR 극소 상태를 ~&sum[4:0](즉, 시프트된 도입 반올림된 유효숫자의 G', R', 및 모든 s' 비트들의 논리 AND의 반전)으로 설정하면, RU 반올림에 대한 정확한 결과가 제공된다.
반올림 후 극소 검출에 대하여, RNE 및 RU 반올림에 대한 AR 극소 상태를 설정하기 위해 사용되는 관계는 하기와 같이 입증될 수 있다:
어써션(Assertion) : RNE 및 도입 반올림된 결과가 최소 정규치인 경우, AR_tiny = 1 <=> G' = R' = 0임.
증명 : 먼저 반올림되지 않은 결과 x가 정규적(극소하지 않음)이라고 가정함;
Figure pat00019
명확히, AR_tiny = 0이고 lsb에 캐리가 없으며, 이는 G = 0 및 G' = 1을 암시한다. 따라서, 도입 반올림된 결과가 최소 정규치이고 및 G'=1인 경우, 반올림 후에 결과는 극소하지 않기 때문에, 반올림 후 극소 상태는 0이다.
이제, 여전히 도입 반올림된 결과로서 최소 정규치를 생성하는 동안, 반올림되지 않은 결과 x가 준정규적이라고 가정한다. 또한 G = 1이라고 가정할 수 있고; 그렇지 않으면 증분은 없다:
Figure pat00020
G'= 1인 경우, G = 0이고, 반올림 도입은 상부 비트들을 변경시키지 않았으며, 이에 따라, 도입 반올림된 결과가 실제로 최소 정규치(1.000…0G'R's's's')라고 알려지면, G'가 1이고 결과가 극소하다는 것은 가능하지 않다.
따라서, G'=1인 경우, AR_tiny = 0이다.
이것은, 도입 반올림된 결과가 최소 정규치인 경우, AR_tiny 상태가 1이 되도록, G'는 0이어야 한다는 것을 암시한다.
이러한 경우:
Figure pat00021
G'= 0인 경우, G = 1이고, 도입-전 값은 0.11…11Rsss였다. 반올림 후 극소 검출을 행하는 것은, 지수가 무한하다고 가정되는 것을 암시하며, 이에 따라, 1.1…11Rsss로 정규화하기 위해 (이론적인) 좌측 시프트가 행해지고, 이어서 표 4에서와 같이 반올림이 적용되지만, 이제 최하위 및 가드 포지션들에의 비트들은 L 및 G인 대신 G 및 R이며 - 즉, 반올림 후 극소 검출 반올림에 대하여 AR_L = G 및 AR_G = R로 처리될 수 있다. 표 4로부터, 반올림 모드가 RNE일 때, (AR_L & AR_G) | (AR_G & AR_S)인 경우, 반올림(round up)한다고 알려져 있다. 앞서 G=1라고 추론하였으므로, 이것은 (1 & R) | (R & S)로 단순화되고, 이는 R과 등가이다. 도입이 R의 값을 변경시키지 않으므로, R'= R이다.
따라서,
R' = AR_G = 0인 경우, ARI(반올림 후 극소 검출 반올림 증분)가 없으므로, 반올림 후 결과는 극소하게 남아있다.
R' = AR_G = 1인 경우, ARI = 1이므로, 결과는 극소하지 않다.
이것은, RNE 반올림에 대하여, G'= 0 & R' = 0인 경우(그리고 그러한 경우에만), AR_tiny = 1임을 암시한다.
어써션 : RUP 및 반올림된 결과가 최소 정규치인 경우, AR_tiny = 1 <=> G' = 0임.
증명: 아래의 경우 1 내지 경우 4로서 개별적으로 G=0, Rsss = 0에 대한 상이한 가능성들을 분석함으로써 증명을 분해할 수 있음.
경우 1: G =0, Rsss = 0
G, R, s가 모두 0들인 경우, 반올림 도입은 G' R's's's'가 모두 1들이 되게 할 것이다. 도입 반올림된 결과가 2Emin 이상인 미리결정된 범위 내의 값들에 대하여, 이것은 또한, 도입 반올림으로 인한 L에 대한 변경이 없었다는 것을 암시하고(결과는 이미 2Emin 반올림 전과 동일했음), 이에 따라, 극소 상태는 0이다.
즉, G' = 1 & (&sum[3:0]) = 1인 경우, AR_tiny = 0이다.
이것은 또한, BR_tiny =0인 경우, AR_tiny는 항상 0이라는 관찰을 따른다.
경우 2: G = 0 & Rsss != 0
경우 2에서, Rsss 중 임의의 것이 0이 아닌 경우, 1111을 가산하는 것은 비트들 R's's's' 중 적어도 하나가 0임을 의미할 것이다(Rsss가 0이었을 경우에만, R's's's'가 1111일 수 있음). 따라서, 경우 2에 대하여, &sum[3:0] = 0이다.
G, R, ssss 중 임의의 것이 0이 아닌 이러한 범위 내의 결과에 대하여, AR_tiny는, ARI 극소 증분이 오버플로우를 야기하는 경우에만, 0일 것이다. 이것은 하기의 추론으로부터 알 수 있다.
G, R, sss 중 임의의 것이 0이 아닌 경우, 도입 반올림에서 11111을 가산하면 도입 반올림된 결과의 L 비트로의 캐리가 야기될 것이며, 이에 따라, 이러한 경우에, 원래의 반올림되지 않은 결과(도입 반올림이 없음)는 도입 반올림된 값이 미리결정된
Figure pat00022
의 범위 내에 있기 위해 준정규적이어야 했을 것이다.
도입 반올림되기 전의 값이 준정규적이며, 그리고 이에 따라, 형태 0.1111...을 가질 것이므로, AR 극소 검출 반올림이 도입 반올림되기 전의 준정규 결과에 적용되었을 경우, 이론적인 정규화(한 비트만큼의 좌측 시프트)가 1의 최상위 비트를 제공하기 위해 수행될 것이며, 그리고 이어서, RU 반올림의 경우, 반올림되지 않은 결과로부터의 AR_G, AR_R 및 AR_s, 즉, 비트들 R, s, s, s에 1들이 가산될 것이다:
Figure pat00023
(G"는, (이론적인) AR 반올림 가산 후 G 포지션에서의 값으로서, 일반적인 도입 반올림 이후에 형성되는 G 포지션에서의 값인, 앞서 나타낸 G'과는 동일하지 않음).
AR 반올림 가산에 의해 야기되는 오버플로우가 없는 경우, AR 극소 반올림 증분 후의 최상위 '1'은 2Emin 미만의 2의 제곱에 대응하는 비트 포지션에 남아 있을 것이며, 반올림 후 결과는 극소하게 남아 있을 것이다.
따라서, 도입 반올림된 값이 미리결정된 범위 내에 있고, G, R, sss 중 임의의 것이 0이 아닌 때, AR_tiny는, ARI 극소 증분이 오버플로우를 야기하는 경우에만, 0일 수 있다.
ARI가 오버플로우를 야기하기 위해(1 비트 좌측 시프트 후), AR_L(G) 비트가 설정되어야 한다(그렇지 않으면, 반올림 증분에 의해 야기된 캐리가 비트 G를 넘어 전파되지 않을 것임). 따라서, G =0이고 결과가 미리결정된 범위 내에 있을 때, AR_tiny는 항상 1이다.
도입 반올림으로 인해, G가 아니라 단지 G'가 분석에 가능하게 된다. G=0 & Rsss!=0에 대하여 G'의 값이 무엇인지가 추론될 수 있다. R 또는 s 비트들 중 적어도 하나가 1이므로, 도입 반올림 후 G 비트 포지션에 캐리-인이 있을 것이다. G' = G + 1 + cin(1은 RU 반올림에 대한 도입 반올림 상수 11111로부터의 것이고, cin은 Rsss 비트 포지션들 모두에 1을 가산함으로 비롯된 것임)이다. G=0 및 cin = 1이므로, G' = 0 + 1 + 1 = 0이다.
따라서, G' = 0 & (&sum[3:0]) = 0인 경우, AR_tiny = 1이다.
경우 3: G =1 & Rsss = 0
G, R, ssss 중 임의의 것이 0이 아닌 미리결정된 범위 내의 결과에 대하여, AR_tiny는 (경우 2에 대해 주어진 것과 동일한 이유로) ARI 극소 증분이 오버플로우를 야기하는 경우에만 0일 것이다.
1 비트 좌측 시프트(정규화) 후, R&s 비트들은 모두 0들이므로, 비트 G"에의 반올림 증분이 있을 수 없으며, 이에 따라, 오버플로우 가능성이 없는데, 즉, ARI = 0 & AR_tiny = 1이다.
G=1 및 Rsss = 0인 경우, 도입 반올림 후에 G'의 값이 무엇일지가 추론될 수 있다. R|S가 0이므로, (&sum[3:0]) = 1이고, 반올림 도입 동안 G 비트 포지션에 대한 캐리-인이 없다.
이것은, G' = G + 1 + cin = 1 + 1 + 0 = 0이기 때문에, 경우 3에서 G' = 0임을 암시한다.
따라서, G' =0 & (&sum[3:0]) = 1일 때, AR_tiny = 1이다.
경우 4: G = 1 & Rsss != 0
R|S가 0이 아니므로, 경우 2에 대해 설명된 바와 동일한 이유로, (&sum[3:0]) = 0이다.
이러한 범위 내의 결과에 대하여, 다시 AR_tiny는, ARI 극소 증분이 오버플로우를 야기하는 경우에만 0일 것이다. 1 비트 좌측 시프트(지수를 무한으로 처리하기 위한 정규화) 후, R & s 비트들이 모두 0들이 아니므로, 반올림 증분이 있을 것이며, 즉, ARI =1이다. G = 1이므로, 이러한 증분은 결과로 전파될 수 있으며 오버플로우를 야기하여 AR_tiny = 0이게 할 것이다.
이제, 경우 4에서, G'의 값이 무엇인지가 추론된다. 경우 4에 대하여, (G' = G + 1 + cin = 1 + 1 + 1 = 1이므로) 반올림 도입 후에 G' = 1이다.
즉, G' =1 & (&sum[3:0]) = 0일 때, AR_tiny = 0이다.
4개의 경우들 모두를 살펴보면, 결과가 미리결정된 범위 내에 있고 반올림 모드가 RU인 경우, G' = 0이면, AR_tiny = 1임을 알 수 있다.
이것을 모두 종합하면, 도입 반올림이 사용될 때, 미리결정된 범위 내의 값들에 대한 극소 상태를 결정하기 위해 사용되는 반올림 전 증분(BRI) 및 반올림 후 증분(ARI)은 표 8에 제시된 바와 같다:
[표 8]
Figure pat00024
시프트된 도입 반올림된 결과에 기초하여, 결과 크기가 미리결정된 범위 내에 있는지 여부를 결정하기 위해 그리고 극소 상태를 결정하기 위해 적용할 테스트들은 표 9에 제시되어 있다:
[표 9]
Figure pat00025
이를 실행하면, 도 6은, 도입 반올림이 사용될 때의, 조합된 반올림 전 및 반올림 후 극소 검출 회로부(22)에 대한 회로 로직을 예시한다. 이러한 예에서의 부동 소수점 프로세싱 회로부(20)는 프로세싱 연산 자체, 및 사용되고 있는 반올림 모드에 따라 도입 반올림 값 선택 회로부(72)에 의해 선택되는 도입 반올림 값의 가산 둘 모두를 수행하는 부동 소수점 프로세싱 연산 회로부(70)를 포함한다. 도입 반올림 값은, RZ 반올림이 수행되고 있는 경우에는 0이거나, RNE 반올림이 사용되고 있는 경우에는 버림 후의 k-비트 유효숫자의 하부 비트보다 한자리 아래에 있는 비트 포지션에서의 1의 비트에 대응하거나, RU 반올림이 사용되고 있는 경우에는 유효숫자가 버림될 지점보다 하부에 있는 모든 비트 포지션들에서 1의 비트들을 갖는 값에 대응한다. 부동 소수점 프로세싱 연산은 가산 또는 곱셈일 수 있으며, 예를 들어, 이는 2개 이상의 피연산자들의 가산, 또는 소정 수의 부분적인 곱셈 곱(partial multiplication product)들을 수반할 수 있으며, 이에 따라, 도입 반올림 값의 가산은 동일한 가산 또는 부동 소수점 프로세싱 연산 자체의 일부로서 이미 수행되고 있는 가산들로 폴딩(folding)될 수 있고, 따라서, 프로세싱 로직(70)에 의해 출력된 유효숫자는 이미 반올림된 도입 반올림된 유효숫자이며, 이에 따라, 이러한 예에서, 부동 소수점 프로세싱 회로부(20)는 결과 유효숫자의 비트들을 검사하고 추가의 반올림 증분을 가산하기 위한 반올림 값 선택 회로부(30) 및 가산기(32)를 필요로 하지 않는다. 그럼에도 불구하고, 부동 소수점 프로세싱 회로부(20)는 시프트 회로부(24), 시프트 제어 회로부(26), 및 전치 0 카운트 회로부(28)를 포함하여, 정규화 시프트를 수행함으로써, 결과 지수 E가 최소 정규 지수 미만이거나 전치 0 카운트가 0이 아닌 경우, 유효숫자가, 사용되고 있는 부동 소수점 포맷의 정규 부동 소수점 수들에 대해 지원되는 최소 값을 갖는 지수에 대응하는 전치 0을 갖는 준정규 포맷 또는 전치 1을 갖는 정규 포맷 중 어느 하나가 되도록 조정되는 것을 보장하기 위해, 우측 또는 좌측 시프트가 적용되는 것을 보장한다. 시프트된 도입 반올림된 유효숫자의 상단 k개의 비트들은 버림되고, 어떠한 추가의 반올림을 필요로 하지 않으면서 부동 소수점 연산에 대한 전체 부동 소수점 결과로서 출력될 수 있다. 전치 비트는 결과 부동 소수점 값의 k-1 비트의 저장되는 분수를 생성하기 위해 폐기된다.
한편, 극소 검출 회로부는 (버림 없는) 완전한 도입 반올림된 유효숫자를 수신하고, 범위 식별 회로부(80), 반올림 후 극소 반올림 증분 선택 회로부(82), 반올림 전 극소 반올림 증분 선택 회로부(84), 및 멀티플렉서들(86, 88)을 포함한다.
도 6의 도입 반올림 예에서의 범위 식별 회로부(80)는, 미리결정된 관심 범위가 상이하다는 점에서 도 4의 범위 식별 회로부(50)와 상이하지만, 유사한 방식으로, 범위 식별 회로부는 시프터(24)에 의해 출력된 시프트된 유효숫자가 미리결정된 범위보다 더 큰지, 그 내에 있는지, 또는 그것보다 더 작은지를 식별한다. 이러한 경우에, 관심 범위는
Figure pat00026
이다. 결과 크기가 미리결정된 범위보다 더 큰지, 그 내에 있는지, 또는 그것보다 더 작은지를 나타내는 신호는 멀티플렉서(88)에 출력되고, 이는 극소 상태에 대한 최종 값을 선택할 것이다.
한편, 반올림 후 극소 반올림 증분 선택 회로부(82) 및 반올림 전 극소 반올림 증분 선택 회로부(84)는 부동 소수점 결과 값을 생성하기 위해 시프트된 유효숫자가 버림될 때 폐기될 비트 포지션들에 있는 시프트된 유효숫자의 비트들 G', R' 및 하부 비트들 s'에 대한 분석에 따라, 반올림 증분들에 대한 반올림-모드-특정 선택들을 수행한다. 극소 반올림 증분을 선택하는 데 사용되는 함수들은, 상기 표 9에 나타내고 아래의 도 7의 흐름도에서 추가로 논의된 바와 같이, 반올림 전 극소 반올림 증분 선택 및 반올림 후 극소 반올림 증분 선택에 대해 상이하다. 회로부(84)에 의해 선택된 반올림 전 극소 반올림 증분(BRI)은 멀티플렉서(86)의 하나의 입력부에 출력되고, 반올림 후 극소 반올림 증분(ARI)의 반전된 버전은 멀티플렉서(86)의 다른 입력부에 출력된다. 멀티플렉서(86)는, 현재 동작을 위해 반올림 전 극소 검출이 수행될 경우에는 BRI를 선택하고, 반올림 후 극소 검출이 수행될 때에는 ARI의 반전된 버전을 선택한다.
최종 멀티플렉서(88)는, 범위 식별 회로부(80)가 결과 크기가 미리결정된 범위보다 더 크다고 식별할 때에는 극소하지 않은 결과를 나타내도록 극소 상태로서 0의 값을 출력하고, 결과 크기가 미리결정된 범위보다 더 작다고 결정할 때에는 극소한 결과를 나타내는 1의 극소 상태를 출력한다. 이것은 반올림 전 극소 검출 및 반올림 후 극소 검출 둘 모두에 대해 그러하다. 한편, 미리결정된 범위 내에서, 멀티플렉서(86)의 출력은 극소 상태로서 출력된다.
도 7은 도입 반올림이 사용되는 경우에, 극소 검출을 수행하기 위한 방법을 예시하는 흐름도이다. 다시, 이것은 단계들에 대한 하나의 가능한 순서화를 도시하지만, 이들 단계들 중 일부를 서로 병렬로 또는 상이한 순서로 수행하는 것이 가능할 수 있다는 것이 이해될 것이다.
단계(250)에서, 부동 소수점 프로세싱 회로부(20)는 부동 소수점 연산을 수행하여, 결과 지수 E 및 도입 반올림된 유효숫자를 생성하는데, 여기서, 도입 반올림 값의 가산이 부동 소수점 연산 자체의 부분으로서 수행되었다. 이것은 임의의 표준 도입 반올림 기법들에 따라 행해질 수 있다.
단계들(252, 254, 256, 258, 260)은 도 5의 대응하는 단계들(202, 204, 206, 208, 210)과 동일하고, 이는 사용되고 있는 부동 소수점 포맷에서 지원되는 최소 정규 지수 Emin과 결과 지수 E의 비교에 따라 그리고 도입 반올림 유효숫자의 전치 0 카운트에 따라, 우측 또는 좌측 시프트를 선택적으로 적용하여 도입 반올림 유효숫자를 정규화하거나 그것을 올바른 준정규 형식으로 배치한다. 이러한 단계들의 결과는 시프트된 유효숫자로 지칭된다(단계(258)에서 시프트 양이 0일 수 있고, 그러한 경우에, 시프트된 유효숫자가 단순히 도입 반올림된 유효숫자와 동일하다는 것이 인식되더라도 그러함).
단계(262)에서, 범위 식별 회로부(80)는, 시프트된 유효숫자의 상단 k개의 비트들에 기초하여, 결과 크기 x가 미리결정된
Figure pat00027
의 범위보다 더 큰지, 그 내에 있는지, 또는 그보다 더 작은지를 식별한다.
시프트된 유효숫자의 최상위 비트가 1이고 시프트된 유효숫자의 다음 k - 1개의 비트들 중 임의의 것이 0이 아닌 경우, 결과 크기 x는 미리결정된 범위보다 더 크고, 단계(264)에서, 부동 소수점 연산의 결과는 극소하지 않다고 결정되며, 따라서, 반올림 전 극소 검출 및 반올림 후 극소 검출 둘 모두에 대하여, 극소 상태는 0이다.
단계(262)에서, 범위 식별 회로부(80)가 시프트된 유효숫자의 최상위 비트가 0이라고 식별하는 경우, 결과 크기 x는 미리결정된 범위보다 더 작고, 따라서, 반올림 전 극소 검출 및 반올림 후 극소 검출 둘 모두에 대하여, 극소 상태는 결과가 극소하다고 나타내도록 1로 설정된다.
단계(262)에서, 범위 식별 회로부(80)가 시프트된 유효숫자의 최상위 비트가 1이라고 식별하고 이것에 k - 1개의 0들이 이어지는 경우, 결과 크기 x는 미리결정된 범위 내에 있다고 결정되며, 이에 따라, 이러한 경우, 극소 상태는 반올림 후 극소 반올림 증분 선택 회로부(82) 및 반올림 전 극소 반올림 증분 선택 회로부(84)에 의해 행해지는 분석에 따른다. 단계(268)에서, 멀티플렉서(86)는 반올림 전 극소 검출이 수행되고 있는지 또는 반올림 후 극소 검출이 수행되고 있는지를 결정한다.
반올림 후 극소 검출이 수행되고 있는 경우, 단계(270)에서, 극소 상태는 사용되고 있는 반올림 모드에 따른다. 반올림 모드가 RNE인 경우, 단계(272)에서, 반올림 후 극소 반올림 증분 선택 회로부(82)는 G' 및 R'(이들은 부동 소수점 결과를 형성하기 위해 유효숫자를 버림할 때 폐기될 부분 내의 최상위 비트 포지션들에서의 2개의 비트들임)의 논리 OR로서 반올림 후 극소 반올림 증분 ARI를 결정하며, 극소 상태는 이러한 ARI의 반전에 따라 설정되고, 이에 따라, G' 및 R' 둘 모두가 0이면 결과는 극소하고, G' 또는 R' 중 어느 하나가 1이면 결과는 극소하지 않다.
사용될 반올림 모드가 RU인 경우, 단계(274)에서, 반올림 후 극소 검출에 대해, ARI는 부동 소수점 결과를 형성하기 위해 시프트된 유효숫자가 버림되는 지점보다 한 자리 아래에 있는 비트 G'와 동일하고, 극소 상태는 G'의 반전과 동일하고, 이에 따라, 비트 G'가 1이면 결과는 극소하지 않고, G'가 0이면 결과는 극소하다.
단계(270)에서, 반올림 모드가 RZ 반올림이라고 결정되는 경우, 단계(276)에서, 결과는 극소하지 않다고 결정되고, 그리고 이에 따라, 멀티플렉서(88)는 0의 값을 출력할 것이다.
한편, 단계(268)에서, 반올림 전 극소 검출이 사용될 것이라고 결정되는 경우, 단계(280)에서, 극소 상태는 사용될 것으로 결정된 반올림 모드에 따른다. 단계(282)에서, RNE 반올림이 사용되고 있는 경우, 극소 상태는 비트 G'의 반전에 대응하며, 이는 버림 시에 폐기되는 부분의 최상위 비트이다. 사용되고 있는 반올림 모드가 RU 반올림인 경우, 단계(284)에서, 극소 상태는 비트별 논리 AND 연산에서, 비트 G'와 G'보다 하부의 시프트된 유효숫자의 비트의 모든 비트들을 조합한 결과의 반전에 대응한다. 이것은, 버림 시에 폐기되는 부분 내의 모든 비트들이 1인 경우, 극소 상태는 결과가 극소하지 않음을 나타내도록 0이고, 반면 하부 비트들 G', R', 및 s' 중 임의의 것이 0인 경우, 결과는 극소한 것으로 나타내질 것임을 의미한다.
한편, 단계(286)에서, 사용되고 있는 반올림 모드가 RZ인 경우, 결과는 극소하다고 결정된다.
따라서, 이러한 접근법에서, 도입 반올림이 사용되고 있더라도, 반올림 전 극소 검출 및 반올림 후 극소 검출 둘 모두에 대해, 도입 반올림을 위한 부동 소수점 연산(70) 자체의 부분으로서 이미 수행되고 있는 가산 이외의 어떠한 반올림 증분 가산도 요구하지 않으면서, 시프트된 유효숫자의 비트들을 분석함으로써 비교적 간단한 부울 논리 세트를 이용하여 극소 상태를 계산하는 조합된 극소 검출 회로부(22)를 제공하는 것이 여전히 가능하다. 이것은 공유된 데이터 경로로 두 유형들 모두의 극소 검출을 수행할 수 있는 빠른 극소 검출을 제공한다.
본 명세서에 설명된 개념들은 설명된 개념들을 구현하는 장치의 제조를 위한 컴퓨터 판독가능 코드로 구현될 수 있다. 예를 들어, 컴퓨터 판독가능 코드는, 개념들을 구현하는 장치를 포함하는 집적 회로를 제조하도록, EDA(electronic design automation) 스테이지(stage)를 포함하는 반도체 설계 및 제조 프로세스의 하나 이상의 스테이지들에서 사용될 수 있다. 상기 컴퓨터 판독가능 코드는 추가적으로 또는 대안적으로 본 명세서에 설명된 개념들을 구현하는 장치의 정의, 모델링, 시뮬레이션, 검증 및/또는 테스트를 가능하게 할 수 있다.
예를 들어, 본 명세서에 설명된 개념들을 구현하는 장치를 제조하기 위한 컴퓨터 판독가능 코드는 개념들에 대한 HDL(hardware description language) 표현을 정의하는 코드로 구현될 수 있다. 예를 들어, 코드는 개념들을 구현하는 장치를 정의하기 위한 하나 이상의 로직 회로들의 RTL(register-transfer-level) 추상화를 정의할 수 있다. 코드는 Verilog, Syste㎷erilog, Chisel, 또는 VHDL(Very High-Speed Integrated Circuit Hardware Description Language)로 장치를 구현하는 하나 이상의 로직 회로들의 HDL 표현뿐만 아니라 FIRRTL과 같은 중간 표현들을 정의할 수 있다. 컴퓨터 판독가능 코드는, 개념들의 시뮬레이션, 기능적 그리고/또는 형식적 검증, 및 테스트를 가능하게 하기 위해 컴퓨터에 의해 해석될 수 있는, 시스템-레벨 모델링 언어들, 예컨대, SystemC 및 Syste㎷erilog 또는 개념들의 다른 거동 표현들을 사용하여 개념을 구현하는 정의들을 제공할 수 있다.
추가적으로 또는 대안적으로, 컴퓨터 판독가능 코드는 하나 이상의 넷리스트(netlist)들의 컴퓨터 판독가능 표현들을 구현할 수 있다. 하나 이상의 넷리스트들은 하나 이상의 논리 합성 프로세스들을 RTL 표현에 적용함으로써 생성될 수 있다. 대안적으로 또는 추가적으로, 하나 이상의 로직 합성 프로세스들은 기술된 개념들을 구현하도록 FPGA(field programmable gate array)를 구성하기 위해 FPGA에 로딩될 비트스트림을 컴퓨터 판독가능 코드로부터 생성할 수 있다. FPGA는 집적 회로 내에 제조하기 전에 개념들의 검증 및 테스트를 위해 배치될 수 있거나, FPGA는 제품에 직접 배치될 수 있다.
컴퓨터 판독가능 코드는, 예를 들어, 본 발명을 구현하는 장치를 제조하기 위해 반도체 설계 및 제조 프로세스에서 사용될 RTL 표현, 넷리스트 표현, 또는 다른 컴퓨터 판독가능 정의 중 하나 이상의 혼합을 포함하는, 장치의 제조를 위한 코드 표현들의 혼합을 포함할 수 있다. 대안적으로 또는 추가적으로, 개념은 장치를 제조하기 위해 반도체 설계 및 제조 프로세스에서 사용되는 컴퓨터 판독가능 정의 및 일단 제조된, 정의된 장치에 의해 실행될 명령어들을 정의하는 컴퓨터 판독가능 코드의 조합으로 정의될 수 있다.
그러한 컴퓨터 판독가능 코드는 임의의 알려진 일시적 컴퓨터 판독가능 매체(예컨대, 네트워크를 통한 코드의 유선 또는 무선 송신) 또는 반도체, 자기 디스크 또는 광학 디스크와 같은 비일시적 컴퓨터 판독가능 매체에 배치될 수 있다. 컴퓨터 판독가능 코드를 사용하여 제조된 집적 회로는 중앙 처리 장치, 그래픽 처리 장치, 신경 처리 장치, 디지털 신호 프로세서, 또는 개별적으로 또는 집합적으로 개념을 구현하는 다른 구성요소들 중 하나 이상과 같은 구성요소들을 포함할 수 있다.
본 출원에서, "...하도록 구성된"이라는 말은 장치의 요소가 정의된 동작을 수행할 수 있는 구성을 갖는다는 것을 의미하는 데 사용된다. 이러한 문맥에서, "구성"은 하드웨어 또는 소프트웨어의 상호접속의 배열 또는 방식을 의미한다. 예를 들어, 장치는 정의된 동작을 제공하는 전용 하드웨어를 가질 수 있거나, 프로세서 또는 다른 처리 디바이스가 기능을 수행하도록 프로그래밍될 수 있다. "하도록 구성된"은, 장치 요소가, 정의된 동작을 제공하기 위해 어떤 방식으로든 변경될 필요가 있음을 암시하지는 않는다.
본 발명의 예시적인 실시예들이 첨부 도면들을 참조하여 본 명세서에 상세히 설명되었지만, 본 발명은 그러한 정확한 실시예들로 제한되지 않는다는 것 그리고 첨부된 청구범위에 의해 정의되는 바와 같은 본 발명의 범주로부터 벗어나지 않으면서 당업자에 의해 다양한 변경들, 및 수정들이 이루어질 수 있다는 것이 이해될 것이다.

Claims (20)

  1. 장치로서,
    부동 소수점 결과 값을 생성하기 위해 반올림과 함께 부동 소수점 연산을 수행하기 위한 부동 소수점 프로세싱 회로부; 및
    상기 부동 소수점 연산의 결과가 극소(tiny)한지 여부를 나타내는 극소 상태(tininess status)를 검출하기 위한 극소 검출 회로부 - 극소한 결과는 상기 부동 소수점 결과 값에 대해 사용될 부동 소수점 포맷의 정규 부동 소수점 수로서 표현가능한 0이 아닌 최소 크기보다 더 작은 크기를 갖는 0이 아닌 수에 대응함 - 를 포함하고,
    상기 극소 검출 회로부는 상기 극소 상태를 검출하기 위해 반올림 전 극소 검출 및 반올림 후 극소 검출 둘 모두를 지원하도록 구성된 하드웨어 회로 로직(hardware circuit logic)을 포함하는, 장치.
  2. 제1항에 있어서, 상기 극소 검출 회로부는 상기 반올림 전 극소 검출 및 상기 반올림 후 극소 검출 둘 모두에 사용되는 공유된 데이터 경로를 포함하는, 장치.
  3. 제2항에 있어서, 상기 극소 검출 회로부는, 상기 극소 검출 회로부가 상기 반올림 전 극소 검출을 수행하기 위한 것인지 또는 상기 반올림 후 극소 검출을 수행하기 위한 것인지에 기초하여, 상기 극소 상태를 결정할 시에 사용할, 상기 극소 상태 자체는 아닌, 중간 값을 선택하기 위한 선택 회로부를 포함하는, 장치.
  4. 제1항에 있어서, 상기 극소 검출 회로부는, 소프트웨어 프로그래밍가능 제어 파라미터에 기초하여, 상기 극소 상태를 상기 반올림 전 극소 검출에 따라 검출할지 또는 상기 반올림 후 극소 검출에 따라 검출할지를 선택하도록 구성되는, 장치.
  5. 제1항에 있어서, 상기 부동 소수점 프로세싱 회로부는 상기 부동 소수점 결과 값에 대한 도입 반올림된 유효숫자(injection-rounded significand)를 생성하기 위해 도입 반올림을 수행하도록 구성되고,
    상기 극소 검출 회로부는, 상기 반올림 전 극소 검출 및 상기 반올림 후 극소 검출 둘 모두에 대해, 상기 도입 반올림된 유효숫자에 기초하여 상기 극소 상태를 검출하도록 구성되는, 장치.
  6. 제1항에 있어서, 상기 부동 소수점 프로세싱 회로부는 반올림되지 않은 유효숫자를 생성하도록 구성되고,
    상기 부동 소수점 프로세싱 회로부는 상기 부동 소수점 결과 값에 대한 반올림된 결과 유효숫자를 생성하기 위해 상기 반올림되지 않은 유효숫자를 반올림하기 위한 비도입 반올림 회로부(non-injection rounding circuitry)를 포함하고,
    상기 극소 검출 회로부는, 상기 반올림 전 극소 검출 및 상기 반올림 후 극소 검출 둘 모두에 대해, 상기 반올림되지 않은 유효숫자에 기초하여 상기 극소 상태를 검출하도록 구성되는, 장치.
  7. 제1항에 있어서, 상기 부동 소수점 프로세싱 회로부는 상기 부동 소수점 결과 값에 대한 반올림된 결과 유효숫자를 생성하기 위해 반올림 가산을 선택적으로 수행함으로써 상기 반올림을 수행하도록 구성되고,
    상기 극소 검출 회로부는 상기 반올림된 부동 소수점 결과에 대한 상기 반올림된 결과 유효숫자를 생성하기 위해 상기 부동 소수점 프로세싱 회로부에 의해 수행되는 상기 반올림 가산 이외의 어떠한 추가의 반올림 가산도 수행하지 않으면서 상기 반올림 후 극소 검출을 수행하도록 구성되는, 장치.
  8. 제1항에 있어서, 상기 부동 소수점 연산에서, 상기 부동 소수점 프로세싱 회로부는 결과 지수와, 반올림되지 않은 유효숫자 또는 도입 반올림된 유효숫자를 생성하도록 구성되고,
    상기 장치는 시프트된 유효숫자를 생성하기 위해, 상기 반올림되지 않은 유효숫자 또는 상기 도입 반올림된 유효숫자를 가변적인 비트 수만큼 시프트(shift)하기 위한 시프트 회로부를 포함하고,
    상기 극소 검출 회로부는, 상기 반올림 전 극소 검출 및 상기 반올림 후 극소 검출 둘 모두에 대해, 상기 시프트 회로부에 의해 생성된 상기 시프트된 유효숫자에 기초하여 상기 극소 상태를 검출하도록 구성되는, 장치.
  9. 제8항에 있어서,
    상기 장치는 상기 시프트를 위한 상기 가변적인 비트 수를 선택하기 위한 시프트 제어 회로부를 포함하고,
    상기 결과 지수가 0이 아닌 정규 부동 소수점 수들에 대한 상기 부동 소수점 포맷에 의해 지원되는 최소 지수 미만일 때, 상기 시프트는 Emin - E 비트들만큼의 우측 시프트이고, Emin은 상기 최소 지수이고, E는 상기 결과 지수이고,
    상기 결과 지수가 상기 최소 지수 이상이고 상기 반올림되지 않은 유효숫자 또는 상기 도입 반올림된 유효숫자의 최상위 비트가 1일 때, 상기 가변적인 비트 수는 0이고,
    상기 결과 지수가 상기 최소 지수 이상이고 상기 반올림되지 않은 유효숫자 또는 상기 도입 반올림된 유효숫자의 최상위 비트가 0일 때, 상기 시프트는 lzc 및 (E - Emin) 중 최소치에 대응하는 비트들의 수만큼의 좌측 시프트이고, lzc는 상기 반올림되지 않은 유효숫자 또는 상기 도입 반올림된 유효숫자 내의 전치 0들의 수인, 장치.
  10. 제8항에 있어서, 상기 극소 검출 회로부는, 상기 결과 지수와 상기 반올림되지 않은 유효숫자 또는 상기 도입 반올림된 유효숫자에 의해 표현되는 결과 크기가, 상기 반올림 전 극소 검출 및 상기 반올림 후 극소 검출이 적어도 하나의 반올림 모드에 대하여 상기 극소 상태에 대한 상이한 결과들을 제공할 수 있는, 미리결정된 범위 내에 있는지 여부를 식별하기 위한 범위 식별 회로부를 포함하는, 장치.
  11. 제10항에 있어서, 상기 범위 식별 회로부는, 상기 시프트된 유효숫자에 기초하여, 상기 결과 크기가 상기 미리결정된 범위 내에 있는지 여부를 식별하도록 구성되는, 장치.
  12. 제10항에 있어서,
    상기 결과 크기가 상기 범위 식별 회로부에 의해 상기 미리결정된 범위 내에 있다고 결정될 때, 적어도 상기 반올림 후 극소 검출에 대하여, 그리고 적어도 하나의 반올림 모드에 대하여, 상기 극소 검출 회로부는, 상기 부동 소수점 결과에 사용될 상기 부동 소수점 포맷에 맞추기 위해 상기 시프트된 유효숫자가 버림되는 경우에 폐기될 비트 포지션(bit position)들에 있는 상기 시프트된 유효숫자의 하나 이상의 하부 비트들에 기초하여 상기 극소 상태를 설정하도록 구성되고,
    상기 결과 크기가 상기 범위 식별 회로부에 의해 상기 미리결정된 범위 밖에 있다고 결정될 때, 상기 극소 검출 회로부는 상기 시프트된 유효숫자의 상기 하나 이상의 하부 비트들과는 독립적으로 상기 극소 상태를 설정하도록 구성되는, 장치.
  13. 제10항에 있어서,
    상기 결과 크기가 상기 범위 식별 회로부에 의해 상기 미리결정된 범위보다 더 크다고 결정될 때, 상기 반올림 전 극소 검출 및 상기 반올림 후 극소 검출 둘 모두에 대하여, 상기 극소 검출 회로부는 상기 부동 소수점 연산의 결과가 극소하지 않다고 나타내게 상기 극소 상태를 설정하도록 구성되고,
    상기 결과 크기가 상기 범위 식별 회로부에 의해 상기 미리결정된 범위보다 더 작다고 결정될 때, 상기 반올림 전 극소 검출 및 상기 반올림 후 극소 검출 둘 모두에 대하여, 상기 극소 검출 회로부는 상기 부동 소수점 연산의 결과가 극소하다고 나타내게 상기 극소 상태를 설정하도록 구성되는, 장치.
  14. 제13항에 있어서, 상기 부동 소수점 프로세싱 회로부는 상기 반올림되지 않은 유효숫자를 생성하도록 구성되고,
    상기 범위 식별 회로부는, 상기 결과 크기 x가
    Figure pat00028
    의 경계들을 충족할 때, 상기 결과 크기가 상기 미리결정된 범위 내에 있다고 결정하도록 구성되며, ulp는 상기 부동 소수점 결과 값에 사용될 상기 부동 소수점 포맷의 준정규 수로서 표현가능한 최소의 0이 아닌 양수인, 장치.
  15. 제10항에 있어서, 상기 부동 소수점 프로세싱 회로부는 상기 반올림되지 않은 유효숫자를 생성하도록 구성되고,
    상기 결과 크기가 상기 범위 식별 회로부에 의해 상기 미리결정된 범위 내에 있다고 결정될 때, 상기 반올림 전 극소 검출에 대하여, 상기 극소 검출 회로부는 상기 부동 소수점 연산의 결과가 극소하다고 나타내게 상기 극소 상태를 설정하도록 구성되는, 장치.
  16. 제10항에 있어서, 상기 부동 소수점 프로세싱 회로부는 상기 도입 반올림된 유효숫자를 생성하기 위해 도입 반올림을 수행하도록 구성되고,
    상기 범위 식별 회로부는, 상기 결과 크기 x가
    Figure pat00029
    의 경계들을 충족할 때, 상기 결과 크기가 상기 미리결정된 범위 내에 있다고 결정하도록 구성되며, ulp는 상기 부동 소수점 결과 값에 사용될 상기 부동 소수점 포맷의 준정규 수로서 표현가능한 최소의 0이 아닌 양수인, 장치.
  17. 제10항에 있어서, 상기 부동 소수점 프로세싱 회로부는 상기 도입 반올림된 유효숫자를 생성하기 위해 도입 반올림을 수행하도록 구성되고,
    상기 결과 크기가 상기 미리결정된 범위 내에 있을 때, 적어도 하나의 반올림 모드에 대하여, 상기 반올림 전 극소 검출 및 상기 반올림 후 극소 검출 둘 모두에 대해, 상기 극소 검출 회로부는, 상기 부동 소수점 결과에 사용될 상기 부동 소수점 포맷에 맞추기 위해 상기 시프트된 유효숫자가 버림되는 경우에 폐기될 비트 포지션들에 있는 상기 시프트된 유효숫자의 하나 이상의 하부 비트들에 기초하여 상기 극소 상태를 설정하도록 구성되는, 장치.
  18. 제1항의 장치의 제조를 위한 컴퓨터 판독가능 코드를 저장하기 위한 비일시적 컴퓨터 판독가능 매체.
  19. 데이터 프로세싱 방법으로서,
    부동 소수점 결과 값을 생성하기 위해 반올림과 함께 부동 소수점 연산을 수행하는 단계; 및
    상기 부동 소수점 연산의 결과가 극소한지 여부를 나타내는 극소 상태를 검출하는 단계 - 극소한 결과는 상기 부동 소수점 결과 값에 대해 사용될 부동 소수점 포맷의 정규 부동 소수점 수로서 표현가능한 0이 아닌 최소 크기보다 더 작은 크기를 갖는 0이 아닌 수에 대응함 - 를 포함하고,
    상기 극소 상태는, 상기 극소 상태를 검출하기 위해 반올림 전 극소 검출 및 반올림 후 극소 검출 둘 모두를 지원하도록 구성된 하드웨어 회로 로직을 포함하는 극소 검출 회로부를 사용하여 검출되는, 방법.
  20. 장치로서,
    부동 소수점 결과 값에 대한 도입 반올림된 유효숫자를 생성하기 위해 도입 반올림과 함께 부동 소수점 연산을 수행하기 위한 부동 소수점 프로세싱 회로부; 및
    상기 부동 소수점 연산의 결과가 극소한지 여부를 나타내는 극소 상태를 검출하기 위한 극소 검출 회로부 - 극소한 결과는 상기 부동 소수점 결과 값에 대해 사용될 부동 소수점 포맷의 정규 부동 소수점 수로서 표현가능한 0이 아닌 최소 크기보다 더 작은 크기를 갖는 0이 아닌 수에 대응함 - 를 포함하고,
    상기 극소 검출 회로부는 상기 부동 소수점 프로세싱 회로부에 의해 생성된 상기 도입 반올림된 유효숫자에 기초하여 상기 극소 상태를 검출하도록 구성되는, 장치.
KR1020220088033A 2021-07-23 2022-07-18 극소 검출 KR20230015844A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/384,001 2021-07-23
US17/384,001 US20230035159A1 (en) 2021-07-23 2021-07-23 Tininess detection

Publications (1)

Publication Number Publication Date
KR20230015844A true KR20230015844A (ko) 2023-01-31

Family

ID=85039132

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220088033A KR20230015844A (ko) 2021-07-23 2022-07-18 극소 검출

Country Status (3)

Country Link
US (1) US20230035159A1 (ko)
KR (1) KR20230015844A (ko)
CN (1) CN115686433A (ko)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7720898B2 (en) * 2003-06-11 2010-05-18 Stmicroelectronics, Inc. Apparatus and method for adjusting exponents of floating point numbers
US9489174B2 (en) * 2014-09-26 2016-11-08 Imagination Technologies Limited Rounding floating point numbers
US9940101B2 (en) * 2015-08-25 2018-04-10 Samsung Electronics Co., Ltd. Tininess prediction and handler engine for smooth handling of numeric underflow
US9823897B2 (en) * 2015-09-25 2017-11-21 Arm Limited Apparatus and method for floating-point multiplication

Also Published As

Publication number Publication date
CN115686433A (zh) 2023-02-03
US20230035159A1 (en) 2023-02-02

Similar Documents

Publication Publication Date Title
CN107077415B (zh) 用于执行转换运算的装置和方法
KR102430645B1 (ko) 독립형 부동소수점 변환장치
JP6001276B2 (ja) 浮動小数点加算を実行するための装置および方法
CN107769791B (zh) 用于定点到浮点的转换的装置和方法及2的负幂检测器
KR20080055985A (ko) 선택가능 준정밀도를 가진 부동―소수점 프로세서
GB2542652A (en) Apparatus and method for floating-point multiplication
WO2018138469A1 (en) An apparatus and method for processing input operand values
KR102412746B1 (ko) 부동 소수점 제곱근 연산 장치 및 방법
CN111752526A (zh) 浮点相加
US10089073B2 (en) Method and apparatus for converting from integer to floating point representation
Jaiswal et al. High performance FPGA implementation of double precision floating point adder/subtractor
GB2549153B (en) Apparatus and method for supporting a conversion instruction
US11119731B2 (en) Apparatus and method for rounding
CN108153513B (zh) 前导零预测
WO2020161458A1 (en) Encoding special value in anchored-data element
US10275218B1 (en) Apparatus and method for subtracting significand values of floating-point operands
KR101922462B1 (ko) 데이터 처리장치 및 이진수에 대해 시프트 기능을 수행하는 방법
KR20230015844A (ko) 극소 검출
US8244783B2 (en) Normalizer shift prediction for log estimate instructions
EP3912272A1 (en) Anchored data element conversion
US20240004611A1 (en) Tininess detection
US10331406B2 (en) Handling floating-point operations
LaMeres Floating-Point Systems
Crespo Vector Multiply-Accumulate Unit for Transprecision Computing
Kaveti HDL Implementation and Analysis of a Residual Register for a Floating-point Arithmetic Unit