KR20210147070A - 다중 입력 부동 소수점 가산기 - Google Patents

다중 입력 부동 소수점 가산기 Download PDF

Info

Publication number
KR20210147070A
KR20210147070A KR1020217036592A KR20217036592A KR20210147070A KR 20210147070 A KR20210147070 A KR 20210147070A KR 1020217036592 A KR1020217036592 A KR 1020217036592A KR 20217036592 A KR20217036592 A KR 20217036592A KR 20210147070 A KR20210147070 A KR 20210147070A
Authority
KR
South Korea
Prior art keywords
bits
operand
mantissa
value
zero
Prior art date
Application number
KR1020217036592A
Other languages
English (en)
Other versions
KR102639646B1 (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 KR20210147070A publication Critical patent/KR20210147070A/ko
Application granted granted Critical
Publication of KR102639646B1 publication Critical patent/KR102639646B1/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/49942Significance control
    • G06F7/49947Rounding
    • G06F7/49952Sticky bit
    • 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
    • G06F7/504Adding; Subtracting in bit-serial fashion, i.e. having a single digit-handling circuit treating all denominations after each other
    • G06F7/5045Adding; Subtracting in bit-serial fashion, i.e. having a single digit-handling circuit treating all denominations after each other for multiple operands
    • 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
    • G06F7/505Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
    • G06F7/509Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination for multiple operands, e.g. digital integrators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision

Landscapes

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

Abstract

본 발명은 3개 이상의 부동 소수점 수들을 가산하기 위한 장치를 포함하는 방법들, 시스템들, 및 장치에 관한 것이다. 일 양상에서, 방법은 3개 이상의 피연산자들 각각에 대해, 피연산자의 부동 소수점 표현을 포함하는 한 세트의 비트들을 수신하는 단계를 포함한다. 각각의 다른 피연산자에 대해, 피연산자의 가수 비트들이 정해진 피연산자의 비트들과 정렬되도록 피연산자의 가수 비트들이 시프팅된다. 각각의 다른 피연산자에 대한 스티키 비트가 결정된다. 전체 스티키 비트 값은 각각의 스티키 비트에 기반하여 결정된다. 전체 스티키 비트 값은, 스티키 비트들 모두가 제로이거나, 적어도 2개의 스티키 비트들이 비-제로이고 매칭하지 않을 때마다, 제로이다. 전체 스티키 비트 값은, 비-제로 스티키 비트들 모두가 매칭하거나 비-제로 스티키 비트가 하나만 있을 때마다, 각각의 비-제로 스티키 비트의 값과 매칭한다.

Description

다중 입력 부동 소수점 가산기
[0001] 수들은 종종 부동 소수점 포맷(floating-point format)을 사용하여 컴퓨터들에서 표현된다. 2-입력 가산기들은 종종 (수들 중 하나의 보수(complement)를 사용하여) 부동 소수점 수들에 대한 가산(addition) 및 감산(subtraction) 연산들을 수행하는 데 사용된다. 둘 초과의 부동 소수점 수들에 대해 이러한 연산들을 수행하기 위해, 다수의 가산기들은 한 번에 최대 2개의 부동 소수점 수들을 가산하는 데 사용될 수 있거나, 단일 가산기에 의해 다수의 가산 연산들이 수행될 수 있다. 예컨대, 3개의 부동 소수점 수들을 가산하기 위해, 가산기는 2개의 부동 소수점 수들을 가산하고, 그런 다음 세 번째 부동 소수점 수를 처음 2개의 수들의 합(sum)에 가산할 수 있다.
[0002] 부동 소수점 가산은, 수들의 지수들에 기반하여 수들을 정렬하기 위한 비트들의 시프팅, 가산의 수행, 합의 정규화(normalizing) 및 적절한 경우 합의 라운딩(rounding)을 포함하는 다수의 단계들을 포함할 수 있다. 따라서, 둘 초과의 부동 소수점 수들을 가산 위해 하나 초과의 가산 연산을 수행하는 것은 이러한 단계들의 다수의 반복들을 초래할 수 있다. 합들을 동시에 컴퓨팅하기 위해 다수의 가산기들이 사용되는 경우, 부가적인 가산기들은 가산기들을 포함하는 칩의 제한된 공간을 더 많이 차지할 수 있다.
[0003] 본 명세서는, 3개 이상의 부동 소수점 수들을 가산하는 다중 입력 가산기들에 관련된 기술들을 설명한다.
[0004] 일반적으로, 본 명세서에 설명된 청구 대상의 하나의 혁신적인 양상은 방법들로 구현될 수 있고, 방법들은 다중 입력 하드웨어 가산기에 의해 가산될 3개 이상의 피연산자(operand)들 각각에 대해, 피연산자의 부동 소수점 표현을 포함하는 한 세트의 비트들을 수신하는 단계; 각각의 다른 피연산자가 정렬될 정해진 피연산자를 식별하는 단계; 각각의 다른 피연산자에 대해, 피연산자의 가수 비트(mantissa bit)들이 정해진 피연산자의 비트들과 정렬되도록 피연산자의 가수 비트들을 제로 이상의 비트 위치들로 시프팅함으로써 피연산자에 대한 시프팅된 세트의 비트들을 생성하는 단계; 시프팅에 기반하여, 각각의 다른 피연산자에 대한 스티키 비트의 값을 결정하는 단계 ― 피연산자에 대한 스티키 비트는, 비-제로 값이 피연산자에 대한 시프팅된 세트의 비트들을 생성하기 위해 임의의 정밀도 비트 위치들 및 피연산자의 가수 비트들의 최하위 위치를 넘어 시프팅되었을 때, 비-제로 값을 가짐 ― ; 각각의 스티키 비트의 값에 기반하여, 전체 스티키 비트 값을 결정하는 단계 ― 전체 스티키 비트 값은, (i) 다른 피연산자들 모두에 대한 스티키 비트들 모두가 제로이거나, (ii) 다른 피연산자들 중 적어도 2개가 비-제로이고 매칭하지 않는 스티키 비트들을 가질 때마다, 제로이고; 그리고 전체 스티키 비트 값은, 비-제로 스티키 비트들 모두가 매칭하거나 비-제로 스티키 비트가 하나만 있을 때마다, 각각의 비-제로 스티키 비트의 값과 매칭함 ― ; 및 (i) 정해진 피연산자를 나타내는 한 세트의 비트들, (ii) 각각의 다른 피연산자에 대한 시프팅된 세트의 비트들, 및 (iii) 전체 스티키 비트 값을 사용하여 3개 이상의 피연산자들의 합을 결정하는 단계를 포함한다. 이것 및 다른 양상들의 다른 구현들은 방법들의 액션들을 수행하도록 구성된 대응하는 시스템들 및 장치를 포함한다.
[0005] 이들 및 다른 구현들 각각은 선택적으로 다음의 특징들 중 하나 이상을 포함할 수 있다. 일부 양상들에서, 3개 이상의 피연산자들의 합을 결정하는 단계는, 정해진 피연산자를 나타내는 한 세트의 비트들 및 각각의 시프팅된 세트의 비트들의 합을 나타내는 합산 세트(summation set)의 비트들을 결정하는 단계, 합산 세트의 비트들의 가수의 은닉 비트(hidden bit)가 제로일 때마다, 은닉 비트가 1이 될 때까지, 합산 세트의 비트들의 가수를 시프팅함으로써 합산 세트의 비트들의 가수를 정규화하는 단계, 및 합산 세트의 비트들의 가수 및 전체 스티키 비트 값에 기반하여, 합산 세트의 비트들로 표현된 부동 소수점 값을 라운딩할지 여부를 결정하는 단계를 포함한다.
[0006] 일부 양상들에서, 합산 세트의 비트들로 표현된 부동 소수점 값을 라운딩할지 여부를 결정하는 단계는: 합산 세트의 비트들의 가수가 합산 세트의 비트들의 가수를 정규화하기 위해 시프팅된 비트 위치들의 수를 결정하는 단계 및 비트 위치들의 수가 스티키 비트 이외의 다중 입력 가산기의 정밀도 비트들의 수를 초과할 때마다, 합산 세트의 비트들로 표현된 부동 소수점 값 및 전체 스티키 비트 값에 기반하여, 합산 세트의 비트들로 표현된 부동 소수점 값을 라운딩하기로 결정하는 단계를 포함한다.
[0007] 일부 양상들은, 전체 스티키 비트 값이 비-제로이고 정규화 동안 가수로 시프팅될 때마다, 전체 스티키 비트 값을 나타낼 가수의 비트를 제로에 할당함으로써, 전체 스티키 비트 값이 정규화 동안 합산 세트의 비트들의 가수에 포함되는 것을 방지하는 단계를 포함할 수 있다. 일부 양상들에서, 피연산자의 가수 비트들을 제로 이상의 비트 위치들로 시프팅하는 단계는, 피연산자의 지수와 정해진 피연산자의 지수 사이의 차이에 기반하여, 가수 비트들을 시프팅하는 단계를 포함한다.
[0008] 일부 양상들에서, 각각의 다른 피연산자가 정렬될 정해진 피연산자를 식별하는 단계는 가장 큰 지수 값을 갖는 피연산자를 식별하는 단계를 포함한다. 일부 양상들에서, 다중 입력 가산기는, 4개의 부동 소수점 입력들을 갖고 4개의 부동 소수점 입력들에서 수신된 4개의 부동 소수점 값들의 합을 결정하는 4-입력 가산기이다.
[0009] 일반적으로, 본 명세서에 설명된 청구 대상의 다른 혁신적인 양상은 다중 입력 하드웨어 가산기들로 구현될 수 있고, 다중 입력 하드웨어 가산기들은 3개 이상의 부동 소수점 피연산자들을 수신하도록 구성된 3개 이상의 입력들 및 가산기 회로를 포함한다. 가산기 회로는, 다중 입력 하드웨어 가산기에 의해 가산될 3개 이상의 피연산자들 각각에 대해, 피연산자의 부동 소수점 표현을 포함하는 한 세트의 비트들을 수신하는 동작을 포함하는 동작들을 수행하도록 구성될 수 있다. 가산기 회로는 각각의 다른 피연산자가 정렬될 정해진 피연산자를 식별하고, 각각의 다른 피연산자에 대해, 피연산자의 가수 비트들이 정해진 피연산자의 비트들과 정렬되도록 피연산자의 가수 비트들을 제로 이상의 비트 위치들로 시프팅함으로써 피연산자에 대한 시프팅된 세트의 비트들을 생성할 수 있다. 가산기 회로는, 시프팅에 기반하여, 각각의 다른 피연산자에 대한 스티키 비트의 값을 결정할 수 있다. 피연산자에 대한 스티키 비트는, 비-제로 값이 피연산자에 대한 시프팅된 세트의 비트들을 생성하기 위해 임의의 정밀도 비트 위치들 및 피연산자의 가수 비트들의 최하위 위치를 넘어 시프팅되었을 때, 비-제로 값을 가질 수 있다. 가산기 회로는, 각각의 스티키 비트의 값에 기반하여, 전체 스티키 비트 값을 결정할 수 있다. 전체 스티키 비트 값은, (i) 다른 피연산자들 모두에 대한 스티키 비트들 모두가 제로이거나, (ii) 다른 피연산자들 중 적어도 2개가 비-제로이고 매칭하지 않는 스티키 비트들을 가질 때마다, 제로일 수 있다. 전체 스티키 비트 값은, 비-제로 스티키 비트들 모두가 매칭하거나 비-제로 스티키 비트가 하나만 있을 때마다, 각각의 비-제로 스티키 비트의 값과 매칭할 수 있다. 가산기 회로는 (i) 정해진 피연산자를 나타내는 한 세트의 비트들, (ii) 각각의 다른 피연산자에 대한 시프팅된 세트의 비트들, 및 (iii) 전체 스티키 비트 값을 사용하여 3개 이상의 피연산자들의 합을 결정할 수 있다.
[0010] 이들 및 다른 구현들 각각은 선택적으로 다음의 특징들 중 하나 이상을 포함할 수 있다. 일부 양상들에서, 3개 이상의 피연산자들의 합을 결정하는 동작은, 정해진 피연산자를 나타내는 한 세트의 비트들 및 각각의 시프팅된 세트의 비트들의 합을 나타내는 합산 세트의 비트들을 결정하는 동작을 포함할 수 있다. 합산 세트의 비트들의 가수의 은닉 비트가 제로일 때마다, 은닉 비트가 1이 될 때까지, 합산 세트의 비트들의 가수를 시프팅함으로써 합산 세트의 비트들의 가수가 정규화될 수 있다. 가산기 회로는, 합산 세트의 비트들의 가수 및 전체 스티키 비트 값에 기반하여, 합산 세트의 비트들로 표현된 부동 소수점 값을 라운딩할지 여부를 결정할 수 있다.
[0011] 일부 양상들에서, 합산 세트의 비트들로 표현된 부동 소수점 값을 라운딩할지 여부를 결정하는 동작은 합산 세트의 비트들의 가수가 합산 세트의 비트들의 가수를 정규화하기 위해 시프팅된 비트 위치들의 수를 결정하는 동작 및, 비트 위치들의 수가 스티키 비트 이외의 다중 입력 가산기의 정밀도 비트들의 수를 초과할 때마다, 합산 세트의 비트들로 표현된 부동 소수점 값 및 전체 스티키 비트 값에 기반하여, 합산 세트의 비트들로 표현된 부동 소수점 값을 라운딩하기로 결정하는 동작을 포함할 수 있다.
[0012] 일부 양상들에서, 동작들은, 전체 스티키 비트 값이 비-제로이고 정규화 동안 가수로 시프팅될 때마다, 전체 스티키 비트 값을 나타낼 가수의 비트를 제로에 할당함으로써, 전체 스티키 비트 값이 정규화 동안 합산 세트의 비트들의 가수에 포함되는 것을 방지하는 동작을 포함할 수 있다.
[0013] 일부 양상들에서, 동작들은 합을 결정하기 이전에, 각각의 세트의 비트들을 우측의 특정 수의 비트 위치들로 시프팅하는 동작을 포함할 수 있다. 일부 양상들에서, 피연산자에 대한 비트들을 제로 이상의 비트 위치들로 시프팅하는 동작은, 피연산자의 지수와 정해진 피연산자의 지수 사이의 차이에 기반하여, 비트들을 시프팅하는 동작을 포함할 수 있다.
[0014] 일부 양상들에서, 각각의 다른 피연산자가 정렬될 정해진 피연산자를 식별하는 동작은 가장 큰 지수 값을 갖는 피연산자를 식별하는 동작을 포함할 수 있다. 일부 양상들에서, 다중 입력 가산기는, 4개의 부동 소수점 입력들을 갖고 4개의 부동 소수점 입력들에서 수신된 4개의 부동 소수점 값들의 합을 결정하는 4-입력 가산기이다.
[0015] 일반적으로, 본 명세서에 설명된 청구 대상의 다른 혁신적인 양상은 다중 입력 하드웨어 가산기들로 구현될 수 있고, 다중 입력 하드웨어 가산기들은 3개 이상의 부동 소수점 피연산자들을 수신하도록 구성된 3개 이상의 입력들을 포함한다. 각각의 입력은 피연산자의 부동 소수점 표현을 포함하는 한 세트의 비트들을 수신하도록 구성될 수 있다. 다중 입력 하드웨어 가산기들은, 각각의 다른 피연산자가 정렬될 정해진 피연산자를 식별하도록 구성된 지수 감산 및 스와프 컴포넌트를 포함할 수 있다. 다중 입력 하드웨어 가산기들은 하나 이상의 시프터들을 포함할 수 있고, 하나 이상의 시프터들은 정해진 피연산자와 상이한 각각의 다른 피연산자에 대해, 피연산자의 가수 비트들이 정해진 피연산자의 비트들과 정렬되도록 피연산자의 가수 비트들을 제로 이상의 비트 위치들로 시프팅함으로써 피연산자에 대한 시프팅된 세트의 비트들을 생성하고 시프팅에 기반하여, 각각의 다른 피연산자에 대한 스티키 비트의 값을 결정하도록 구성된다. 피연산자에 대한 스티키 비트는, 비-제로 값이 피연산자에 대한 시프팅된 세트의 비트들을 생성하기 위해 임의의 정밀도 비트 위치들 및 피연산자의 가수 비트들의 최하위 위치를 넘어 시프팅되었을 때, 비-제로 값을 갖는다. 다중 입력 하드웨어 가산기들은, 각각의 스티키 비트의 값에 기반하여, 전체 스티키 비트 값을 결정하도록 구성된 스티키 비트 계산기를 포함할 수 있다. 전체 스티키 비트 값은, (i) 다른 피연산자들 모두에 대한 스티키 비트들 모두가 제로이거나, (ii) 다른 피연산자들 중 적어도 2개가 비-제로이고 매칭하지 않는 스티키 비트들을 가질 때마다, 제로이다. 전체 스티키 비트 값은, 비-제로 스티키 비트들 모두가 매칭하거나 비-제로 스티키 비트가 하나만 있을 때마다, 각각의 비-제로 스티키 비트의 값과 매칭한다. 다중 입력 하드웨어 가산기들은, (i) 정해진 피연산자를 나타내는 한 세트의 비트들, (ii) 각각의 다른 피연산자에 대한 시프팅된 세트의 비트들, 및 (iii) 전체 스티키 비트 값을 사용하여 3개 이상의 피연산자들의 합을 결정하도록 구성된 가산기 회로를 포함할 수 있다.
[0016] 이들 및 다른 구현들 각각은 선택적으로 다음의 특징들 중 하나 이상을 포함할 수 있다. 일부 양상들에서, 하나 이상의 시프터들은, 비-제로 값이 스티키 비트로 시프팅될 때마다, 피연산자에 대한 스티키 비트를 1의 값으로 설정한다.
[0017] 일부 양상들에서, 가산기 회로는 추가로, 정해진 피연산자를 나타내는 한 세트의 비트들 및 각각의 시프팅된 세트의 비트들의 합을 나타내는 합산 세트의 비트들을 결정하도록 구성된다. 합산 세트의 비트들의 가수의 은닉 비트가 제로일 때마다, 은닉 비트가 1이 될 때까지, 합산 세트의 비트들의 가수를 시프팅함으로써 합산 세트의 비트들의 가수가 정규화될 수 있다. 가산기 회로는, 합산 세트의 비트들의 가수 및 전체 스티키 비트 값에 기반하여, 합산 세트의 비트들로 표현된 부동 소수점 값을 라운딩할지 여부를 결정할 수 있다.
[0018] 일부 양상들에서, 합산 세트의 비트들로 표현된 부동 소수점 값을 라운딩할지 여부를 결정하는 동작은 합산 세트의 비트들의 가수가 합산 세트의 비트들의 가수를 정규화하기 위해 시프팅된 비트 위치들의 수를 결정하는 동작, 및 비트 위치들의 수가 스티키 비트 이외의 다중 입력 가산기의 정밀도 비트들의 수를 초과할 때마다, 합산 세트의 비트들로 표현된 부동 소수점 값 및 전체 스티키 비트 값에 기반하여, 합산 세트의 비트들로 표현된 부동 소수점 값을 라운딩하기로 결정하는 동작을 포함할 수 있다.
[0019] 일부 양상들에서, 동작들은, 전체 스티키 비트 값이 비-제로이고 정규화 동안 가수로 시프팅될 때마다, 전체 스티키 비트 값을 나타낼 가수의 비트를 제로에 할당함으로써, 전체 스티키 비트 값이 정규화 동안 합산 세트의 비트들의 가수에 포함되는 것을 방지하는 동작을 포함할 수 있다. 일부 양상들에서, 피연산자의 가수 비트들을 제로 이상의 비트 위치들로 시프팅하는 동작은, 피연산자의 지수와 정해진 피연산자의 지수 사이의 차이에 기반하여, 가수 비트들을 시프팅하는 동작을 포함할 수 있다.
[0020] 일반적으로, 본 명세서에 설명된 청구 대상의 다른 혁신적인 양상은 방법들로 구현될 수 있고, 방법들은 다중 입력 하드웨어 가산기에 의해 가산될 3개 이상의 피연산자들 각각에 대해, 피연산자의 부동 소수점 표현을 포함하는 한 세트의 비트들을 수신하는 단계; 각각의 다른 피연산자가 정렬될 정해진 피연산자를 식별하는 단계; 각각의 다른 피연산자에 대해, 피연산자의 가수 비트들이 정해진 피연산자의 비트들과 정렬되도록 피연산자의 가수 비트들을 제로 이상의 비트 위치들로 시프팅함으로써 피연산자에 대한 시프팅된 세트의 비트들을 생성하는 단계; 시프팅에 기반하여, 각각의 다른 피연산자에 대한 스티키 비트의 값을 결정하는 단계, ― 피연산자에 대한 스티키 비트는, 비-제로 값이 피연산자에 대한 시프팅된 세트의 비트들을 생성하기 위해 피연산자를 나타내는 한 세트의 비트들로부터 시프팅되었을 때, 비-제로 값을 갖고, 그리고 피연산자의 부호와 매칭하는 부호를 가짐 ― ; 각각의 스티키 비트의 값에 기반하여, 전체 스티키 비트 값을 결정하는 단계 ― 전체 스티키 비트 값은, (i) 다른 피연산자들 모두에 대한 스티키 비트들 모두가 제로이거나, (ii) 다른 피연산자들 중 적어도 2개가 비-제로이고 매칭하지 않는 스티키 비트들을 가질 때마다, 제로이고; 그리고 전체 스티키 비트 값은, 비-제로 스티키 비트들 모두가 매칭하거나 비-제로 스티키 비트가 하나만 있을 때마다, 각각의 비-제로 스티키 비트의 값과 매칭함 ― ; 및 (i) 정해진 피연산자를 나타내는 한 세트의 비트들, (ii) 각각의 다른 피연산자에 대한 시프팅된 세트의 비트들, 및 (iii) 전체 스티키 비트 값을 사용하여 3개 이상의 피연산자들의 합을 결정하는 단계를 포함한다. 이것 및 다른 양상들의 다른 구현들은 방법들의 액션들을 수행하도록 구성된 대응하는 시스템들 및 장치를 포함한다.
[0021] 이들 및 다른 구현들 각각은 선택적으로 다음의 특징들 중 하나 이상을 포함할 수 있다. 일부 양상들에서, 3개 이상의 피연산자들의 합을 결정하는 단계는, 정해진 피연산자를 나타내는 한 세트의 비트들 및 각각의 시프팅된 세트의 비트들의 합을 나타내는 합산 세트의 비트들을 결정하는 단계, 합산 세트의 비트들의 가수의 은닉 비트가 제로일 때마다, 은닉 비트가 1이 될 때까지, 합산 세트의 비트들의 가수를 시프팅함으로써 합산 세트의 비트들의 가수를 정규화하는 단계, 및 합산 세트의 비트들의 가수 및 전체 스티키 비트 값에 기반하여, 합산 세트의 비트들로 표현된 부동 소수점 값을 라운딩할지 여부를 결정하는 단계를 포함한다.
[0022] 일부 양상들에서, 합산 세트의 비트들로 표현된 부동 소수점 값을 라운딩할지 여부를 결정하는 단계는, 합산 세트의 비트들의 가수가 합산 세트의 비트들의 가수를 정규화하기 위해 시프팅된 비트 위치들의 수를 결정하는 단계, 및 비트 위치들의 수가 스티키 비트 이외의 다중 입력 가산기의 정밀도 비트들의 수를 초과할 때마다, 합산 세트의 비트들로 표현된 부동 소수점 값 및 전체 스티키 비트 값에 기반하여, 합산 세트의 비트들로 표현된 부동 소수점 값을 라운딩하기로 결정하는 단계를 포함한다.
[0023] 일부 양상들은, 전체 스티키 비트 값이 비-제로이고 정규화 동안 가수로 시프팅될 때마다, 전체 스티키 비트 값을 나타낼 가수의 비트를 제로에 할당함으로써, 전체 스티키 비트 값이 정규화 동안 합산 세트의 비트들의 가수에 포함되는 것을 방지하는 단계를 포함할 수 있다. 일부 양상들에서, 피연산자의 가수 비트들을 제로 이상의 비트 위치들로 시프팅하는 단계는, 피연산자의 지수와 정해진 피연산자의 지수 사이의 차이에 기반하여, 가수 비트들을 시프팅하는 단계를 포함한다.
[0024] 일부 양상들에서, 각각의 다른 피연산자가 정렬될 정해진 피연산자를 식별하는 단계는 가장 큰 지수 값을 갖는 피연산자를 식별하는 단계를 포함한다. 일부 양상들에서, 다중 입력 가산기는, 4개의 부동 소수점 입력들을 갖고 4개의 부동 소수점 입력들에서 수신된 4개의 부동 소수점 값들의 합을 결정하는 4-입력 가산기이다.
[0025] 일반적으로, 본 명세서에 설명된 청구 대상의 다른 혁신적인 양상은 다중 입력 하드웨어 가산기들로 구현될 수 있고, 다중 입력 하드웨어 가산기들은 3개 이상의 부동 소수점 피연산자들을 수신하도록 구성된 3개 이상의 입력들 및 가산기 회로를 포함한다. 가산기 회로는 동작들을 수행하도록 구성될 수 있고, 동작들은 다중 입력 하드웨어 가산기에 의해 가산될 3개 이상의 피연산자들 각각에 대해, 피연산자의 부동 소수점 표현을 포함하는 한 세트의 비트들을 수신하는 동작을 포함한다. 가산기 회로는 각각의 다른 피연산자가 정렬될 정해진 피연산자를 식별하고, 각각의 다른 피연산자에 대해, 피연산자의 가수 비트들이 정해진 피연산자의 비트들과 정렬되도록 피연산자의 가수 비트들을 제로 이상의 비트 위치들로 시프팅함으로써 피연산자에 대한 시프팅된 세트의 비트들을 생성할 수 있다. 가산기 회로는, 시프팅에 기반하여, 각각의 다른 피연산자에 대한 스티키 비트의 값을 결정할 수 있다. 피연산자에 대한 스티키 비트는, 비-제로 값이 피연산자에 대한 시프팅된 세트의 비트들을 생성하기 위해 피연산자를 나타내는 한 세트의 비트들로부터 시프팅되었을 때, 비-제로 값을 가질 수 있다. 피연산자에 대한 스티키 비트는, 피연산자의 부호와 매칭하는 부호를 가질 수 있다. 가산기 회로는, 각각의 스티키 비트의 값에 기반하여, 전체 스티키 비트 값을 결정할 수 있다. 전체 스티키 비트 값은, (i) 다른 피연산자들 모두에 대한 스티키 비트들 모두가 제로이거나, (ii) 다른 피연산자들 중 적어도 2개가 비-제로이고 매칭하지 않는 스티키 비트들을 가질 때마다, 제로일 수 있다. 전체 스티키 비트 값은, 비-제로 스티키 비트들 모두가 매칭하거나 비-제로 스티키 비트가 하나만 있을 때마다, 각각의 비-제로 스티키 비트의 값과 매칭할 수 있다. 가산기 회로는 (i) 정해진 피연산자를 나타내는 한 세트의 비트들, (ii) 각각의 다른 피연산자에 대한 시프팅된 세트의 비트들, 및 (iii) 전체 스티키 비트 값을 사용하여 3개 이상의 피연산자들의 합을 결정할 수 있다.
[0026] 이들 및 다른 구현들 각각은 선택적으로 다음의 특징들 중 하나 이상을 포함할 수 있다. 일부 양상들에서, 3개 이상의 피연산자들의 합을 결정하는 동작은, 정해진 피연산자를 나타내는 한 세트의 비트들 및 각각의 시프팅된 세트의 비트들의 합을 나타내는 합산 세트의 비트들을 결정하는 동작을 포함할 수 있다. 합산 세트의 비트들의 가수의 은닉 비트가 제로일 때마다, 은닉 비트가 1이 될 때까지, 합산 세트의 비트들의 가수를 시프팅함으로써 합산 세트의 비트들의 가수가 정규화될 수 있다. 가산기 회로는, 합산 세트의 비트들의 가수 및 전체 스티키 비트 값에 기반하여, 합산 세트의 비트들로 표현된 부동 소수점 값을 라운딩할지 여부를 결정할 수 있다.
[0027] 일부 양상들에서, 합산 세트의 비트들로 표현된 부동 소수점 값을 라운딩할지 여부를 결정하는 동작은 합산 세트의 비트들의 가수가 합산 세트의 비트들의 가수를 정규화하기 위해 시프팅된 비트 위치들의 수를 결정하는 동작, 및 비트 위치들의 수가 스티키 비트 이외의 다중 입력 가산기의 정밀도 비트들의 수를 초과할 때마다, 합산 세트의 비트들로 표현된 부동 소수점 값 및 전체 스티키 비트 값에 기반하여, 합산 세트의 비트들로 표현된 부동 소수점 값을 라운딩하기로 결정하는 동작을 포함할 수 있다.
[0028] 일부 양상들에서, 동작들은, 전체 스티키 비트 값이 비-제로이고 정규화 동안 가수로 시프팅될 때마다, 전체 스티키 비트 값을 나타낼 가수의 비트를 제로에 할당함으로써, 전체 스티키 비트 값이 정규화 동안 합산 세트의 비트들의 가수에 포함되는 것을 방지하는 동작을 포함할 수 있다.
[0029] 일부 양상들에서, 동작들은, 합을 결정하기 이전에, 각각의 세트의 비트들을 우측의 특정 수의 비트 위치들로 시프팅하는 동작을 포함할 수 있다. 일부 양상들에서, 피연산자에 대한 비트들을 제로 이상의 비트 위치들로 시프팅하는 동작은, 피연산자의 지수와 정해진 피연산자의 지수 사이의 차이에 기반하여, 비트들을 시프팅하는 동작을 포함할 수 있다.
[0030] 일부 양상들에서, 각각의 다른 피연산자가 정렬될 정해진 피연산자를 식별하는 동작은 가장 큰 지수 값을 갖는 피연산자를 식별하는 동작을 포함할 수 있다. 일부 양상들에서, 다중 입력 가산기는, 4개의 부동 소수점 입력들을 갖고 4개의 부동 소수점 입력들에서 수신된 4개의 부동 소수점 값들의 합을 결정하는 4-입력 가산기이다.
[0031] 일반적으로, 본 명세서에 설명된 청구 대상의 다른 혁신적인 양상은 다중 입력 하드웨어 가산기들로 구현될 수 있고, 다중 입력 하드웨어 가산기들은 3개 이상의 부동 소수점 피연산자들을 수신하도록 구성된 3개 이상의 입력들을 포함한다. 각각의 입력은 피연산자의 부동 소수점 표현을 포함하는 한 세트의 비트들을 수신하도록 구성될 수 있다. 다중 입력 하드웨어 가산기들은, 각각의 다른 피연산자가 정렬될 정해진 피연산자를 식별하도록 구성된 지수 감산 및 스와프 컴포넌트를 포함할 수 있다. 다중 입력 하드웨어 가산기들은 하나 이상의 시프터들을 포함할 수 있고, 하나 이상의 시프터들은 정해진 피연산자와 상이한 각각의 다른 피연산자에 대해, 피연산자의 가수 비트들이 정해진 피연산자의 비트들과 정렬되도록 피연산자의 가수 비트들을 제로 이상의 비트 위치들로 시프팅함으로써 피연산자에 대한 시프팅된 세트의 비트들을 생성하고, 그리고 시프팅에 기반하여, 각각의 다른 피연산자에 대한 스티키 비트의 값을 결정하도록 구성된다. 피연산자에 대한 스티키 비트는, 비-제로 값이 피연산자에 대한 시프팅된 세트의 비트들을 생성하기 위해 피연산자를 나타내는 한 세트의 비트들로부터 시프팅되었을 때, 비-제로 값을 갖고, 그리고 피연산자의 부호와 매칭하는 부호를 갖는다. 다중 입력 하드웨어 가산기들은, 각각의 스티키 비트의 값에 기반하여, 전체 스티키 비트 값을 결정하도록 구성된 스티키 비트 계산기를 포함할 수 있다. 전체 스티키 비트 값은, (i) 다른 피연산자들 모두에 대한 스티키 비트들 모두가 제로이거나, (ii) 다른 피연산자들 중 적어도 2개가 비-제로이고 매칭하지 않는 스티키 비트들을 가질 때마다, 제로이다. 전체 스티키 비트 값은, 비-제로 스티키 비트들 모두가 매칭하거나 비-제로 스티키 비트가 하나만 있을 때마다, 각각의 비-제로 스티키 비트의 값과 매칭한다. 다중 입력 하드웨어 가산기들은, (i) 정해진 피연산자를 나타내는 한 세트의 비트들, (ii) 각각의 다른 피연산자에 대한 시프팅된 세트의 비트들, 및 (iii) 전체 스티키 비트 값을 사용하여 3개 이상의 피연산자들의 합을 결정하도록 구성된 가산기 회로를 포함할 수 있다.
[0032] 이들 및 다른 구현들 각각은 선택적으로 다음의 특징들 중 하나 이상을 포함할 수 있다. 일부 양상들에서, 하나 이상의 시프터들은, 비-제로 값이 스티키 비트로 시프팅될 때마다, 피연산자에 대한 스티키 비트를 1의 값으로 설정한다.
[0033] 일부 양상들에서, 가산기 회로는 추가로, 정해진 피연산자를 나타내는 한 세트의 비트들 및 각각의 시프팅된 세트의 비트들의 합을 나타내는 합산 세트의 비트들을 결정하도록 구성된다. 합산 세트의 비트들의 가수의 은닉 비트가 제로일 때마다, 은닉 비트가 1이 될 때까지, 합산 세트의 비트들의 가수를 시프팅함으로써 합산 세트의 비트들의 가수가 정규화될 수 있다. 가산기 회로는, 합산 세트의 비트들의 가수 및 전체 스티키 비트 값에 기반하여, 합산 세트의 비트들로 표현된 부동 소수점 값을 라운딩할지 여부를 결정할 수 있다.
[0034] 일부 양상들에서, 합산 세트의 비트들로 표현된 부동 소수점 값을 라운딩할지 여부를 결정하는 동작은 합산 세트의 비트들의 가수가 합산 세트의 비트들의 가수를 정규화하기 위해 시프팅된 비트 위치들의 수를 결정하는 동작, 및 비트 위치들의 수가 스티키 비트 이외의 다중 입력 가산기의 정밀도 비트들의 수를 초과할 때마다, 합산 세트의 비트들로 표현된 부동 소수점 값 및 전체 스티키 비트 값에 기반하여, 합산 세트의 비트들로 표현된 부동 소수점 값을 라운딩하기로 결정하는 동작을 포함할 수 있다.
[0035] 일부 양상들에서, 동작들은, 전체 스티키 비트 값이 비-제로이고 정규화 동안 가수로 시프팅될 때마다, 전체 스티키 비트 값을 나타낼 가수의 비트를 제로에 할당함으로써, 전체 스티키 비트 값이 정규화 동안 합산 세트의 비트들의 가수에 포함되는 것을 방지하는 동작을 포함할 수 있다. 일부 양상들에서, 피연산자의 가수 비트들을 제로 이상의 비트 위치들로 시프팅하는 동작은, 피연산자의 지수와 정해진 피연산자의 지수 사이의 차이에 기반하여, 가수 비트들을 시프팅하는 동작을 포함할 수 있다.
[0036] 본 명세서에 설명된 청구 대상은 다음의 장점들 중 하나 이상을 실현하기 위해 특정 실시예들로 구현될 수 있다. 본원에서 설명된 다중 입력 가산기들은 2-입력 가산기들을 사용하여 다수의 가산들을 수행하는 것보다 더 적은 전력을 사용하여 3개 이상의 피연산자들을 가산할 수 있는데, 왜냐하면 여러번이 아니라(예컨대, 2-입력 가산기의 다수의 가산 연산들 각각마다 한 번보다는) 다중 입력 가산기에 의해 한 번에 일부 단계들, 예컨대, 정규화 및 라운딩이 수행되기 때문이다. 이것은 또한, 둘 초과의 피연산자들의 합을 결정하기 위해 수행될 필요가 있는 정규화 및 라운딩 단계들이 더 적다는 결과로서 더 빠르고 더 효율적인 가산들을 발생시킬 수 있고, 이것은 기계 학습 가속기 회로들과 같은 많은 복잡한 수학 연산들을 수행하는 집적 회로들에서 특히 유익하다. 다중 입력 가산기는 또한, 가산 연산들을 동시에 수행하는 다수의 2-입력 가산기들보다 칩 상의 더 적은 공간을 소비하여, 다른 컴포넌트들에 대한 공간을 마련하거나 칩들의 크기를 감소시킨다.
[0037] 합을 라운딩할지 여부 및 라운딩할 방법을 결정하기 위한 전체 스티키 비트 값은, 라운딩에 의해 발생된 에러들이 수용 가능한 경계 내에 있고 제로에서 떨어진 바이어스(bias)가 없는 것을 보장하는 방식으로 피연산자들의 스티키 비트 값들에 기반하여 컴퓨팅될 수 있다. 즉, 본 문헌에서 설명된 바와 같이, 전체 스티키 비트를 컴퓨팅함으로써, 임의의 바이어스는 양수 또는 음수보다는 제로로의 라운딩을 향한다. 이러한 방식으로 제로를 향한 바이어싱은 뉴럴 네트워크들과 같은 기계 학습 모델들의 수렴에 대한 영향을 최소화한다. 따라서, 설명된 기법들은, 예컨대, 다중 입력 가산기가 기계 학습 모델들의 트레이닝을 수행하는 특수 목적 기계 학습 가속기 칩 상에 있을 때, 기계 학습 모델들을 트레이닝하기 위해 최적화되는 방식으로 전체 스티키 비트 값을 결정한다.
[0038] 앞서 언급된 청구 대상의 다양한 특징들 및 장점들은 도면들에 관련하여 아래에 설명된다. 부가적인 특징들 및 장점들은 본원에 설명된 청구 대상 및 청구항들로부터 명백해진다.
[0039] 도 1은 예시적인 다중 입력 하드웨어 가산기의 블록도이다.
[0040] 도 2는 3개 이상의 피연산자들을 가산하기 위한 예시적인 프로세스를 예시하는 흐름도이다.
[0041] 도 3은 4-입력 가산기를 사용하여 가산된 4개의 피연산자들의 예를 예시한다.
[0042] 다양한 도면들 내의 동일한 참조 번호들 및 지정들은 동일한 엘리먼트들을 표시한다.
[0043] 일반적으로, 본원에 설명된 시스템들 및 기법들은 3개 이상의 부동 소수점 입력들의 합을 컴퓨팅하는 다중 입력 하드웨어 가산기들에 관련된다. 예컨대, 4-입력 가산기는 4개의 부동 소수점 수들의 합을 컴퓨팅할 수 있다. 부동 소수점 수는, 수가 양수인지 또는 음수인지를 나타내는 부호 비트, 부동 소수점 수에 대한 지수 값을 나타내는 지수 비트들, 및 부동 소수점의 유효 숫자들을 나타내는 가수 비트들(또한 정수부로 지칭됨)을 포함하는 한 세트의 비트들로 표현된다. 예컨대, IEEE 754 단일 정밀도 포맷 부동 소수점 수는 하나의 부호 비트, 8개의 지수 비트들 및 24개의 가수 비트들(23개의 명시적으로 저장된 비트들 및 하나의 암시적 은닉 비트)을 포함한다. 부동 소수점 수의 값을 도출하기 위해, 가수에는 밑(예컨대, 2인 밑)에 대한 지수의 거듭제곱(power)이 곱해진다.
[0044] 3개 이상의 부동 소수점 피연산자들의 합을 결정하기 위해, 다중 입력 가산기는, 각각의 다른 피연산자가 정렬될 피연산자를 식별할 수 있다. 이 피연산자는 가장 큰 지수 값을 갖는 피연산자일 수 있다. 정렬을 설정하기 위해, 즉, 다른 피연산자와 정해진 피연산자를 정렬하기 위해, 다중 입력 가산기는, 모든 피연산자들의 가수 비트들이 정렬되도록, 식별된 피연산자의 지수 값과 다른 피연산자의 지수 값 사이의 차이에 기반하여, 각각의 다른 피연산자의 가수 비트들을 시프팅할 수 있다. 정해진 피연산자가 다른 피연산자보다 더 큰 값을 갖는 지수를 갖는 경우, 다른 피연산자의 가수의 비트들은 우측으로 비트들의 수만큼 시프팅되고, 여기서 최상위 비트들은 제로로 설정되고(논리 시프트), 여기서 시프팅될 비트들의 수는 지수들의 차이에 대응한다. 시프트 후에, 다른 피연산자의 지수는 정해진 피연산자의 지수와 동일한 값으로 설정되고, 다른 피연산자의 가수의 값은 우측 시프트만큼 감소된다. 다시 말해서, 정렬될 때, 각각의 피연산자는 동일한 지수 값을 갖는다. 우측 시프트가 발생하면, 다른 피연산자는 IEEE 부동 소수점 포맷 측면에서 더 이상 정규화되지 않는다. 다른 피연산자들의 정렬 프로세스는, 일부 정밀도가 손실되게 할 수 있는데, 왜냐하면 원래 다른 피연산자의 가수의 하위 단부에서 일부 비-제로 비트들, 즉, 하위 비트(less significant bit)들은, 하위 비트들이 나타내는 정보가 손실되도록, 가수에서 벗어나(off) 그리고 심지어 부가적인 정밀도 비트들에서 벗어나 시프팅될 수 있기 때문이다. 본원에 개시된 바와 같이, 스티키 비트 및 전체 스티키 비트의 결정은, 다른 양상들 중에서도, 당면한 가산 스테이지에서 다른 피연산자들의 정규화되지 않은 표현을 통한 값의 효율적인 변화 및 정밀도에서의 이러한 손실이, 위에서 설명된 바와 같이, 상당히 바이어싱하거나 합산 결과들의 정밀도를 감소시킨다는 것을 방지 또는 완화하도록 의도된다. 예컨대, 합산 피연산자들에 대한 내부 정밀도 비트들의 수를 증가시킴으로써, 합산 결과의 더 높은 정밀도가 달성될 수 있지만, 스티키 비트들 및 전체 스티키 비트에 관련된 개시된 기술은, 3개 이상의 부동 소수점 수들의 사이의 경우에 대해, 합산 결과의 라운딩이 피연산자 당 단일 스티키 비트를 사용하여 제로에서 떨어진 바이어스 없이 그리고 수용 가능한 경계 내에 있는 것을 달성한다. 따라서, 개시된 기술에 의해 요구되는 하드웨어 자원들은, 다중 입력 부동 소수점 가산의 정밀도가 증가된 종래 기법들과 비교할 때, 감소된다.
[0045] 피연산자의 가수 비트들을 시프팅할 때, 가수 비트들 중 일부는 부동 소수점 피연산자들을 표현하기 위해 이용 가능한 비트들에서 벗어나 시프팅될 수 있다. 다중 입력 가산기는 정밀도 및 라운딩을 위해 일부 추가 비트들을 포함할 수 있다. 예컨대, 다중 입력 가산기는 정밀도를 위한 3개의 추가 비트들 및 내부 계산 및 라운딩을 위한 하나의 스티키 비트를 포함할 수 있다. 스티키 비트는 LSB(least significant bit) 위치에 있을 수 있고, 3개의 정밀도 비트들은 스티키 비트와 가수 비트들 사이에 있을 수 있다. 이 예에서, 피연산자가 정렬 동안에 우측으로 3개 초과의 비트 위치들로 시프팅되면, 최하위 가수 비트들 중 하나 이상은 이용 가능한 비트들로부터 그리고 스티키 비트 위치로 또는 스티키 비트 위치를 통해 시프팅된다. 스티키 비트는, 정렬 후 유지되지 않는 하위 비트들에 무엇이 있을 수 있는지를 나타내는 표시이다. 1의 값이 피연산자에 대한 스티키 비트 위치로 시프팅되면, 스티키 비트는 추가의 시프트들에도 불구하고 1로 유지된다.
[0046] 정밀도 비트들의 수가 정렬 동안의 시프팅으로 인해 손실된 잠재적인 비트들의 수에 영향을 미치기 때문에, 정밀도 비트들의 수는 다중 입력 가산기에 대한 타겟 에러 경계에 기반하여 선택될 수 있다. 예컨대, 3개의 정밀도 비트들 및 스티키 비트를 사용하여, 무한 개수의 정밀도 비트들을 갖는 가산기에 대한 4-입력 가산기의 에러는 아래의 수학식 1에 도시된다. 수학식 1에서, 파라미터(M)는 각각의 피연산자의 가수 비트들의 수(은닉 비트를 포함함)이고, 파라미터(E)는 각각의 피연산자의 지수 비트들의 수이다. 파라미터(z)는 4-입력 가산기의 출력이고, 파라미터(z_ref)는 무한 개수의 정밀도 비트들을 갖는 가산기의 출력이고, 파라미터(z_ref.exp)는 가산기 출력의 지수이고, 파라미터들(a.exp-d.exp)은 4개의 입력 피연산자들의 지수들이다. 이러한 수학식에서 ".exp"의 사용은, 저장된 지수가 아니라 부동 소수점 수의 실제 지수를 의미한다. 부동 소수점 수의 실제 지수는 저장된 지수에서 바이어스를 감산함으로써 도출될 수 있다. 이 수학식은, 파라미터(z) 및 파라미터(z_ref) 둘 모두가 무한대가 아니거나 수가 아닌(NaN; not a number) 경우에 유효하다. 파라미터(z) 또는 파라미터(z_ref)가 무한대 또는 NaN인 경우, 파라미터(z)에서 파라미터(z_ref)를 감산한 절대값은 무한대 또는 NaN이다.
Figure pct00001
[0047] 피연산자에 대한 스티키 비트의 부호는, 피연산자의 부호가 가장 큰 지수 값을 갖는 피연산자의 부호와 동일한지 여부에 기반할 수 있다. 예컨대, 가장 큰 지수 값을 갖는 피연산자와 부호가 상이한 피연산자의 가수가 가수 가산 동안에서 음수 값으로 처리되는 경우, 부호들이 동일하면, 스티키 비트의 부호는 양수가 될 것이고, 부호들이 상이하면, 스티커 비트의 부호는 음수가 될 것이다.
[0048] 가수 비트들을 정렬한 후에, 다중 입력 가산기는 피연산자들의 가수들을 가산할 수 있다. 가산의 일부로서, 다중 입력 가산기는 또한 추가 정밀도 비트들을 가산할 수 있다. 그런 다음, 다중 입력 가산기는 필요한 경우 합을 정규화할 수 있다. 예컨대, MSB(most significant bit)가 제로의 값을 갖는 경우, 다중 입력 가산기는, MSB가 1의 값을 가질 때까지, 합의 가수 비트들을 시프팅할 수 있다. 다중 입력 가산기는 또한, 전체 스티키 비트 값에 기반하여, 가수를 라운딩할지 여부를 결정할 수 있다. 둘 초과의 피연산자들을 가산하는 다중 입력 가산기들에 대해, 정확도 및 에러 바이어스들에 미치는 영향을 최소화하기 위해 전체 스티키 비트의 계산이 신중하게 처리될 필요가 있다.
[0049] 스티키 비트의 값은, 대규모 가수 소거(massive mantissa cancellation)가 발생할 때, 정확도 및 에러 바이어스에 더 큰 영향을 미칠 수 있다. 대규모 가수 소거는, 가까운 값들을 갖지만 반대 부호들을 갖는 가산되는 가수 값들을 피연산자들이 가질 때 발생하고, 이것은 정규화 전에 가수의 합에서 하나 초과의 리딩 제로들을 발생시킨다. 대규모 가수 소거는 2-입력 가산기들을 사용하여 발생할 수 있다. 그러나, 이것이 2-입력 가산기들을 사용하여 발생하는 경우, 스티키 비트는 항상 제로이다. 이것은, 지수 차이가 1보다 작거나 동일할 때만 대규모 가수 소거가 발생할 수 있기 때문이다. 다중 입력 가산기를 사용하여 대규모 가수 소거가 발생하면, 일부 피연산자와 지수가 가장 큰 피연산자 사이의 지수 차이가 클 수 있고, 비-제로 스티키 비트를 발생시킨다. 따라서, 전체 스티키 비트 계산은 신중하게 처리될 필요가 있다.
[0050] 일부 구현들에서, 다중 입력 가산기는, (가장 큰 지수 값을 갖는 식별된 피연산자 외에) 다른 모든 피연산자들에 대한 모든 스티키 비트들이 제로일 때마다, 전체 스티키 비트 값이 제로가 되도록 하는 전체 스티키 비트 값을 결정한다. 다른 피연산자들 중 적어도 2개가 비-제로이고 매칭하지 않는 스티키 비트들을 가질 때마다, 전체 스티키 비트 값은 또한 제로이다. 예컨대, 하나의 피연산자가 -1의 값을 갖는 스티키 비트를 갖고 다른 피연산자가 +1의 값을 갖는 스티키 비트를 갖는 경우, 전체 스티키 비트 값은 제로가 될 것이다. 모든 비-제로 스티키 비트가 매칭하고, 예컨대, 모두 값이 +1인 경우, 전체 스티키 비트 값은 비-제로 스티키 비트(이 예에서는 +1)와 동일할 수 있다. 이러한 방식으로 전체 스티키 비트가 결정될 때, 다중 입력 가산기의 합산 결과의 에러들이 특정 경계 내에 있고 제로에서 떨어진 바이어스가 없을 수 있다는 것이 보장될 수 있다. 특히, 이러한 효과를 달성하기 위해, 다중 입력 가산기의 각각의 피연산자에 대해 많은 수의 추가 정밀도 비트들을 유지할 필요가 없다. 이것은, 개시된 기법들이 종래의 다중 입력 가산기 구현들과 비교할 때 감소된 하드웨어 자원들로 구현될 수 있다는 장점으로 이어진다.
[0051] 도 1은 예시적인 다중 입력 하드웨어 가산기(100)의 블록도이다. 이 예에서, 다중 입력 가산기(100)는, 4개의 부동 소수점 피연산자들의 합을 결정하기 위한 몇몇의 컴포넌트들을 포함하는 하드웨어 회로 형태의 4-입력 가산기이다. 그러나, 다중 입력 가산기(100)는, 후술되는 바와 같이, 3개의 부동 소수점 피연산자들, 5개의 부동 소수점 피연산자들, 또는 다른 적절한 수의 부동 소수점 피연산자들의 합을 결정하도록 구성될 수 있다.
[0052] 다중 입력 가산기(100)는 정해진 포맷을 갖는 부동 소수점 수들의 합을 결정할 수 있다. 포맷은 부동 소수점 수들의 다양한 부분을 나타내는 데 사용되는 비트들의 수에 의해 정의될 수 있다. 위에서 설명된 바와 같이, IEEE 754 단일 정밀도 포맷 부동 소수점 수는 하나의 부호 비트, 8개의 지수 비트들 및 24개의 가수 비트들(23개의 명시적으로 저장된 비트들 및 하나의 암시적 은닉 비트)을 포함한다. 다중 입력 가산기(100)는 이러한 32-비트 단일 정밀도 포맷 부동 소수점 수들의 합을 결정하도록 구성될 수 있다. 다른 예에서, 다중 입력 가산기(100)는 하나의 부호 비트, 8개의 지수 비트들, 및 16개의 가수 비트들(15개의 명시적으로 저장된 비트 및 하나의 암시적 은닉 비트), 또는 다른 부동 소수점 포맷 수들을 포함하는 24-비트 수들의 합을 결정하도록 구성될 수 있다. 특정 포맷에 대한 다중 입력 가산기를 구성하기 위해, 가산기(150)(아래에서 더 상세히 설명됨)는 특정 수의 비트들을 갖는 가수들을 가산하도록 구성될 수 있고, 내부 계산 및 라운딩을 위해 스티키 비트를 포함하는 부가적인 비트들을 포함하도록 구성될 수 있다.
[0053] 다중 입력 가산기(100)는, 입력으로서, 4개의 부동 소수점 피연산자들(a, b, c 및 d)을 수신하고, 입력 피연산자들의 지수 값들에 기반하여 중간 피연산자들(x, y, m 및 n)에 그들을 할당하는 지수 감산 및 스와프 컴포넌트(110)를 포함한다. 지수 감산 및 스와프 컴포넌트(110)는 가장 큰 지수 값을 갖는 입력 피연산자를 피연산자(x)에 할당하고, 다른 입력 피연산자들을 중간 피연산자들(y, m 및 n)에 할당할 수 있다. 모든 피연산자들이 동일한 지수 값을 갖는 경우, 지수 감산 및 스와프 컴포넌트(110)는 입력 피연산자(a)를 중간 피연산자(x)에 할당하고, 입력 피연산자(b)를 중간 피연산자(y)에 할당하고, 입력 피연산자(c)를 중간 피연산자(m)에 할당하고, 그리고 입력 피연산자(d)를 중간 피연산자(n)에 할당할 수 있다.
[0054] 지수 감산 및 스와프 컴포넌트(110)는 하나 이상의 스와프 유닛들, 하나 이상의 감산기들, 및/또는 하나 이상의 절대값 계산기들을 포함할 수 있다. 예컨대, 지수 감산 및 스와프 컴포넌트(110)는 3개의 스와프 유닛들, 4개의 8-비트 감산기들(지수 비트들의 수에 기반함), 및 2개의 절대값 계산기들을 포함할 수 있다. 이러한 컴포넌트들 각각의 수량 및 이러한 컴포넌트들의 구성은, 다중 입력 가산기(100)의 입력들 수 및/또는 다중 입력 가산기(100)가 가산하도록 구성되는 입력 피연산자들의 지수 비트들의 수에 기반하여 달라질 수 있다. 예컨대, 입력 피연산자들이 4개의 지수 비트들을 갖는 경우, 감산기들은 4-비트 감산기들일 수 있다.
[0055] 지수 감산 및 스와프 컴포넌트(110)는 가장 큰 지수 값을 갖는 입력 피연산자를 식별하고, 이러한 이 피연산자의 지수 값과 각각의 다른 입력 피연산자의 지수 값 사이의 차이를 계산한다. 하드웨어에서, 감산기는 입력 피연산자(a)의 지수 값과 입력 피연산자(b)의 지수 값 사이의 차이를 결정할 수 있다. 감산기는 또한 피연산자(c)의 지수 값과 피연산자(d)의 지수 값 사이의 차이를 결정할 수 있다.
[0056] 그런 다음, 스와프 유닛들은 아래의 수학식들 2 및 3을 사용하여 입력 피연산자들을 중간 피연산자들에 할당할 수 있다.
Figure pct00002
Figure pct00003
[0057] 피연산자 이름 뒤에 ".e"가 있는 파라미터들은 피연산자의 지수 값을 나타낸다. 예컨대, 파라미터(a.e)는 입력 피연산자(a)의 지수 값이다. 이러한 초기 스와프 후에, 입력 피연산자들 중 2개가 중간 피연산자들(m 및 n)에 할당되었다.
[0058] 그런 다음, 감산기는, 이전 스와프 후에, p.e와 r.e 사이의 차이를 결정할 수 있다. 그런 다음, 스와프 유닛들은 아래 수학식 4를 사용하여 중간 피연산자들(x 및 y)에 입력 피연산자들을 할당할 수 있다.
Figure pct00004
[0059] 그런 다음, 지수 감산 및 스와프 컴포넌트(110)는, 중간 피연산자들(x)과 이들 피연산자들의 지수 값들 사이의 차이에 기반하여, 중간 피연산자들(y, m, 및 n)의 가수들을 얼마나 많은 비트 위치들로 시프팅할지를 결정할 수 있다. 예컨대, 지수 감산 및 스와프 컴포넌트(110)는 아래의 수학식들 5, 6 및 7을 사용하여 각각의 중간 피연산자의 가수를 얼마나 많은 비트 위치들로 시프팅할지를 결정할 수 있다.
Figure pct00005
Figure pct00006
Figure pct00007
[0060] 피연산자 이름 뒤에 "_shift""가 있는 파라미터들은 해당 피연산자를 시프팅할 비트 위치들의 수를 나타내고, 예컨대 m_shift는 피연산자(m)를 시프팅할 비트 위치들의 수이다. 위의 논리를 사용하여, 지수 감산 및 스와프 컴포넌트(110)는, x.e가 y.e, m.e 및 n.e보다 더 크거나 동일하도록, 입력 피연산자들(a, b, c 및 d)을 x, y, m 및 n에 할당한다. 지수 감산 및 스와프 컴포넌트(110)는 또한, 피연산자(y)에 대한 시프트가 x.e와 y.e 사이의 차이와 동일하고 피연산자(m)에 대한 시프트가 x.e와 m.e 사이의 차이와 동일하고, 피연산자(n)에 대한 시프트가 x.e와 n.e 사이의 차이와 동일하도록 피연산자(y, m 및 n)의 가수를 시프팅하기 위한 비트 위치들의 수를 결정한다.
[0061] 지수 감산 및 스와프 컴포넌트(110)는 또한, 중간 피연산자(x)의 부호에 대한 각각의 피연산자의 부호들에 기반하여, 중간 피연산자들(y, m, 또는 n) 중 임의의 것이 반전되어야 하는지 여부를 결정할 수 있다. 중간 피연산자가 반전되어야 하는 경우, 지수 감산 및 스와프 컴포넌트(110)는 피연산자에 대한 반전 연산 "_op" 파라미터의 값(예컨대, 비트로 저장됨)을 1의 값으로 설정할 수 있다. 지수 감산 및 스와프 컴포넌트(110)는 수학식들 8, 9 및 10을 사용하여 중간 피연산자들(y, m 또는 n)을 반전시킬지 여부를 결정할 수 있다.
Figure pct00008
Figure pct00009
Figure pct00010
[0062] 지수 감산 및 스와프 컴포넌트(110)는 중간 피연산자를 파이프라인 레지스터들(125)로 출력한다. 지수 감산 및 스와프 컴포넌트(110)는 또한 반전 연산 파라미터들을 파이프라인 레지스터들(125)로 출력한다. 파이프라인 레지스터들(125 및 165)은 다중 입력 가산기(110)의 데이터 경로를 스테이지들로 분리하는 데 사용된다. 이 예에서, 데이터 경로는 파이프라인 레지스터들(125) 이전의 제1 정렬 스테이지, 파이프라인 레지스터들(125)과 파이프라인 레지스터들(165) 사이의 제2 가산 스테이지, 및 파이프라인 레지스터들(125 및 165) 이후의 제3 정규화 및 라운딩 스테이지를 포함한다. 다른 컴포넌트들은 파이프라인 레지스터들(125 및 165)로부터 자신들의 동작들에 필요한 데이터를 획득할 수 있다.
[0063] 파이프라인 레지스터들(125)은 각각의 중간 피연산자에 대한 부호, 지수 및 가수를 저장할 수 있다. 예컨대, 파이프라인 레지스터들(125)은, 피연산자(x)에 대해, x.sign(부호 값), x.exponent(지수 값), 및 x.mantissa(가수 값)를 저장할 수 있다. 다른 피연산자들에 대해, 파이프라인 레지스터(125)는 시프팅된 가수(예컨대, 피연산자(y)에 대한 y_shifted_f)를 저장할 수 있다. 시프팅된 피연산자에 대한 시프팅된 가수는 피연산자에 대한 스티키 비트 및 추가 정밀도 비트들을 포함할 수 있다. 파이프라인 레지스터들(125)은 또한 반전 연산 "_op" 파라미터들(예컨대, y_op, m_op, 및 n_op)의 값들을 저장할 수 있다.
[0064] 파이프라인 레지스터들(125)은 또한 result_is_special 파라미터의 값을 저장할 수 있다. 입력 피연산자들 중 하나 이상이 NaN이거나 입력 피연산자들 중 하나 이상이 무한대이거나, 또는 모든 입력 피연산자들이 제로 또는 비정상들(지수가 제로이고 가수가 비-제로인 부동 소수점 수들)인 특별한 경우들이 있을 수 있다. 어느 경우에서든, result_is_special의 값은, 가산의 결과가 특별한 경우들 중 하나임을 나타내는 1이 될 수 있다.
[0065] 도 1에 도시되지 않지만, 다중 입력 하드웨어 가산기(100)는 특별한 경우들을 처리하기 위한 부가적인 컴포넌트들 또는 로직을 포함할 수 있다. 예컨대, 다중 입력 가산기(100)는, 입력 피연산자들 중 적어도 하나가 NaN이거나 입력 피연산자들 중 적어도 2개가 부호들이 반대인 무한대인 경우, NaN인 최종 결과(z)를 출력할 수 있다. 다른 예에서, 다중 입력 하드웨어 가산기(100)는, 모든 입력 피연산자들이 제로들이거나 비정상들인 경우, 제로인 최종 결과(z)를 출력할 수 있다. 다른 예에서, 다중 입력 하드웨어 가산기는, 입력 피연산자들 중 적어도 하나가 무한대이고 무한대인 모든 피연산자들이 동일한 부호를 갖는 경우, 양수 또는 음수의 무한대인 최종 결과(z)를 출력할 수 있다. 다중 입력 하드웨어 가산기(100)는 비정상들을 적절히 부호가 있는 제로들로서 처리하고, 비정상 결과들을 제로들로 플러싱(flush)할 수 있다.
[0066] 지수 감산 및 스와프 컴포넌트(110)는 또한 가수 비트들(도 1에서 ".f"를 갖는 파라미터들) 및 피연산자들(y, m 및 n)에 대한 시프트들을 개개의 우측 시프터들(121, 122, 123)로 출력한다. 다중 입력 가산기(100)는, 지수 값이 가장 큰 피연산자가 아닌 각각의 피연산자에 대한 우측 시프터를 포함할 수 있다. 따라서, 다중 입력 가산기(100)는 n-1개의 우측 시프터들을 포함할 수 있으며, 여기서 n은 다중 입력 가산기(100)에 대한 입력 피연산자들의 수이다. 이 예에서, 6-입력 가산기는 5개의 우측 시프터들을 가질 것이다. 다른 예들에서, 더 적은 수의 우측 시프터들이 사용될 수 있고, 각각의 우측 시프터는 가산 연산당 하나 초과의 피연산자들을 시프팅할 수 있다.
[0067] 우측 시프터(121)는 y_shift에 기반하여 피연산자(y)에 대한 가수 비트들(y.f)을 시프팅할 수 있다. 예컨대, y_shift가 5인 경우(이것은 x에 대한 지수 값이 y의 지수 값보다 5가 더 크다는 것을 의미함), 우측 시프터(121)는 피연산자(y)에 대한 가수 비트들(y.f)을 우측으로 5개의 비트 위치들로 시프팅할 수 있다. 유사하게, 우측 시프터(122)는 m_shift에 기반하여 피연산자(m)에 대한 가수 비트들(m.f)을 시프팅할 수 있고, 우측 시프터(123)는 n_shift에 기반하여 피연산자(n)에 대한 가수 비트들(n.f)을 시프팅할 수 있다. 피연산자의 시프트가 제로이면, 피연산자의 가수는 시프팅되지 않고, 예컨대, 제로 비트 위치들로 시프팅된다. 피연산자들이 시프팅된 후에 적절한 경우, 각각의 피연산자(x, y, m 및 n)의 지수 값들은 동일하다. 즉, 가수들의 시프팅으로 인해, y, m 및 n의 지수 값은 이제 피연산자(x)의 지수 값과 동일하다. 각각의 우측 시프터(121, 122 및 123)는 제로 이상의 비트 위치들로 시프팅된 피연산자의 가수의 시프팅된 버전을 출력할 수 있다. 예컨대, 우측 시프터(121)는 피연산자(y)의 가수의 시프팅된 버전(y_shifted_f)을 출력할 수 있고; 우측 시프터(122)는 피연산자(m)의 가수의 시프팅된 버전(m_shifted_f)을 출력할 수 있고; 그리고 우측 시프터(123)는 피연산자(n)의 가수의 시프팅된 버전(n_shifted_f)을 출력할 수 있다.
[0068] 일부 구현들에서, 다중 입력 가산기(100)는 정밀도 및 라운딩을 위한 가수들에 대한 부가적인 비트들을 포함한다. 예컨대, 다중 입력 가산기(100)는 가수의 우측에 하나 이상의 정밀도 비트들을 포함하고, 하나 이상의 정밀도 비트들의 우측에 스티키 비트를 포함할 수 있다. 피연산자의 가수가 우측으로 시프팅될 때, 가수의 LSB들은 정밀도 비트 위치(들)로 시프팅되고, 충분히 시프팅된 경우, 스티키 비트 위치로 시프팅되고, 잠재적으로 가수에 대해 이용 가능한 비트들에서 벗어나 시프팅된다. 이러한 방식으로, 피연산자의 가수가 정밀도 비트들의 수보다 더 적은 비트 위치들로 시프팅되면, 정밀도 비트 위치들로 시프팅된 비트들의 값들이 유지될 수 있다.
[0069] 예컨대, 다중 입력 가산기(100)는 28 비트들을 사용하여 24-비트 가수를 저장할 수 있다. 이 예에서, 24 가수 비트들은 24개의 MSB들이 될 수 있다. 다음 3개의 비트들은 정밀도 비트들이 될 수 있고, LSB는 스티키 비트가 될 수 있다. 피연산자의 가수가 우측 3개의 비트 위치들로 시프팅되면, 가수의 LSB가 세 번째 정밀도 비트 위치에 저장될 것이다. 그러나, 피연산자의 가수가 우측 5개의 비트 위치들로 시프팅되면, LSB가 이용 가능한 비트 위치에서 벗어나 시프팅될 것이다.
[0070] 피연산자에 대한 스티키 비트는 이용 가능한 비트 위치들로부터 무엇이 시프팅되었을 수 있는지를 나타내는 데 사용된다. 1의 값이 스티키 비트 위치로 언제든(ever) 시프팅되면, 스티키 비트는 1의 값으로 설정된다. 스티키 비트 값은, 제로가 나중에 스티키 비트 위치로 시프팅되더라도, 예컨대, 상위 비트(more significant bit)가 제로의 값을 갖고, 1의 값을 갖는 하위 비트가 스티키 비트 위치로 시프팅된 후에 스티키 비트 위치로 시프팅되는 경우에, 해당 값으로 설정된 후에 1의 값을 유지할 수 있다.
[0071] 피연산자에 대한 스티키 비트의 부호는, 피연산자의 부호가 가장 큰 지수 값을 갖는 피연산자의 부호와 동일한지 여부에 기반할 수 있다. 부호들이 동일하면, 스티키 비트의 부호는 양수이다. 부호들이 상이하면, 스티키 비트의 부호는 -1이다.
[0072] 일부 구현들에서, 피연산자의 모든 가수 비트들이 이용 가능한 비트 위치들로부터 시프팅되는 경우, 피연산자에 대한 스티키 비트는 제로의 값을 가질 수 있다. 예컨대, 가수 비트들을 시프팅하는 우측 시프터는, 모든 가수 비트들이 이용 가능한 비트 위치들에서 벗어나 시프팅되면, 스티키 비트를 제로로 설정할 수 있다.
[0073] 다중 입력 가산기(110)는 또한, 피연산자에 대한 반전 연산 파라미터가 1의 값으로 설정되는 경우, 시프팅된 가수 비트들에 대해 반전 연산들을 수행할 수 있는 반전 컴포넌트들(131, 132 및 133)을 포함한다. 예컨대, 각각의 반전 컴포넌트(131-133)는, 피연산자에 대한 반전 연산 파라미터가 1의 값으로 설정되는 경우, 피연산자의 가수 비트들에 대해 2의 보수 반전을 수행할 수 있다. 이러한 방식으로, 반전된 가수에 다른 피연산자의 가수를 가산하는 것은 2개의 가수들 사이의 감산 연산을 발생시킨다.
[0074] 다중 입력 가산기(110)는 또한 스티키 비트 계산기(134)를 포함한다. 스티키 비트 계산기(134)는, 합(예컨대, 가수들의 합을 나타내는 합산 세트의 비트들)에 대한 전체 스티키 비트 값을 계산할 수 있다. 스티키 비트 계산기(134)는, 피연산자들(y, m, 및 n)에 대한 모든 스티키 비트들이 제로일 때마다, 전체 스티키 비트 값이 제로가 되도록 전체 스티키 비트 값을 계산할 수 있다. 다른 피연산자들 중 적어도 2개가 비-제로이고 매칭하지 않는 스티키 비트들을 가질 때마다, 전체 스티키 비트 값은 또한 제로이다. 모든 비-제로 스티키 비트가 매칭하고, 예컨대, 모두 값이 +1인 경우, 전체 스티키 비트 값은 비-제로 스티키 비트(이 예에서는 +1)와 동일할 수 있다.
[0075] 예컨대, 피연산자(y)에 대한 스티키 비트가 +1이고, m에 대한 스티키 비트가 +1이고, n에 대한 스티키 비트가 0인 경우, 비-제로 스티키 비트들 모두가 +1이기 때문에, 전체 스티키 비트 값은 +1이 될 것이다. 다른 예에서, 피연산자(y)에 대한 스티키 비트가 -1이고, m에 대한 스티키 비트가 0이고, n에 대한 스티키 비트가 0이면, 비-제로 스티키 비트만이 -1의 값을 갖기 때문에, 전체 스티키 비트 값은 -1이 될 것이다. 다른 예에서, 피연산자(y)에 대한 스티키 비트가 -1이고, m에 대한 스티키 비트가 -1이고, n에 대한 스티키 비트가 -1이면, 모든 스티키 비트들이 -1의 값을 갖기 때문에, 전체 스티키 비트 값은 -1이 될 것이다. 다른 예에서, 피연산자(y)에 대한 스티키 비트가 +1이고, m에 대한 스티키 비트가 -1이고, n에 대한 스티키 비트가 -1이면, 모든 피연산자들(y, m 및 n)에 대한 비-제로 스티키 비트들 모두의 값들이 매칭하지 않기 때문에, 전체 스티키 비트 값은 0이 될 것이다. 또 다른 예에서, 피연산자(y)에 대한 스티키 비트가 0이고, m에 대한 스티키 비트가 0이고, n에 대한 스티키 비트가 0이면, 모든 스티키 비트들이 제로의 값을 갖기 때문에, 전체 스티키 비트 값은 0이 될 것이다.
[0076] 일부 구현들에서, 스티키 비트 계산기(134)는 전체 스티키 비트를 피연산자들(y, m, 또는 n) 중 하나에 할당하고, 반전 컴포넌트들(131, 132, 133)이 시프팅된 가수 비트들에 대한 반전 연산들을 수행하기 전에, 다른 피연산자들에 대한 스티키 비트를 클리어(clear)할 수 있다. 전체 스티키 비트가 +1이면, 스티키 비트 계산기(134)는 피연산자(x)와 동일한 부호를 갖는 하나의 피연산자의 스티키 비트를 1로 설정하고, 다른 2개의 피연산자들의 스티키 비트를 제로로 설정한다. 전체 스티키 비트가 -1이면, 스티키 비트 계산기(134)는 피연산자(x)의 반대 부호를 갖는 하나의 피연산자의 스티키 비트를 1로 설정하고, 다른 2개의 피연산자들의 스티키 비트를 제로로 설정한다.
[0077] 다중 입력 가산기(100)는 또한, 피연산자들(x, y, m 및 n)의 가수들, 정밀도 비트들, 및 스티키 비트를 가산하는 4-입력 가수 가산기(150)를 포함한다. 예컨대, 4-입력 가산기(150)는 피연산자(x)의 원래 가수를 피연산자들(y, m, 및 n)에 대한 가수들의 시프팅된 버전들(및 그들의 정밀도 및 스티키 비트들)에 가산할 수 있다. 피연산자(x)의 가수가 시프팅되지 않기 때문에, 피연산자(x)에 대한 정밀도 비트들 및 스티키 비트는 제로가 될 것이다. 상이한 수들의 입력들에 대해, 다중 입력 가산기(100)는, 가수들의 해당 수의 합을 컴퓨팅하는 가산기를 포함할 수 있다.
[0078] 가산기(150)는, 4개의 가수들 및 그들의 정밀도 및 스티키 비트들의 합을 나타내는 합산 세트의 비트들을 출력할 수 있다. 예컨대, 2개의 오버플로 비트(overflow bit)들이 포함된 경우, 합산 세트의 비트들은, 2개의 오버플로 비트들, 24개의 가수 비트들, 3개의 정밀도 비트들, 2의 보수 변환을 위한 하나의 비트 및 최종 스티키 비트를 포함하는 31개의 비트들을 포함할 수 있다. 2개의 오버플로 비트들이 포함되지 않은 경우, 합산 세트의 비트들은 다른 29개의 비트들을 포함할 수 있다. 물론, 입력 피연산자들의 포맷, 원하는 정밀도 등에 기반하여, 다른 포맷들이 또한 가능하다.
[0079] 다중 입력 가산기(100)는 또한, 합에 대한 부호가 음수인 경우, 가수의 합을 반전시킬 수 있는 반전 컴포넌트(155)를 포함한다. 예컨대, 반전 컴포넌트(155)는, 합이 제로보다 더 작은 경우, 2의 보수 반전을 사용하여 가수들의 합을 반전시킬 수 있다.
[0080] 일부 구현들에서, 다중 입력 가산기는, 가산기에 의해 출력된 합산 세트의 비트들을 재매핑함으로써, 합산 세트의 비트들의 기수(radix)를 우측 하나 이상의 비트 위치들(예컨대, 2-비트 오버플로에 대한 2개의 비트 위치들)로 시프팅한다. 이것은 오버플로의 경우 우측 시프팅을 수행해야 하는 것을 방지할 수 있다. 예컨대, 입력 피연산자들이 24개의 가수 비트들을 각각 포함하면, 다중 입력 가산기(100)는 29개의 비트들을 사용하여 가수들을 저장할 수 있다. 이러한 29개의 비트들은 24개의 가수 비트들, 3개의 정밀도 비트들, (MSB에서) 2의 보수 변환을 위한 하나의 비트 및 스티키 비트 위치에 대한 하나의 비트(LSB)를 포함할 수 있다. 반전 컴포넌트(155)의 출력은 2개의 오버플로 비트들, 24개의 가수 비트들, 3개의 정밀도 비트들 및 합에 대한 스티키 비트를 포함할 수 있다. 다중 입력 가산기는 오버플로 비트의 MSB를 가수의 은닉 비트로 간주하고, 다음 23개의 비트들을 가수의 나머지로 간주하고, 다음 5개의 비트들을 추가 정밀도 비트들로 간주하고, LSB를 스티키 비트로 간주할 수 있다. 기수의 우측으로의 시프트들의 수는 합의 지수 값에 영향을 준다. 예컨대, 합의 기수가 우측으로 2개의 비트 위치들로 시프팅되는 경우, 아래에 설명되는 바와 같이, 합의 지수 값에 수 2가 가산될 수 있다.
[0081] 다중 가산기(100)는 또한 리딩(leading) 제로 검출기(160)를 포함한다. 리딩 제로 검출기(160)는, 합산 세트의 비트들의 가수에 임의의 리딩 제로들이 있는지 여부를 결정할 수 있다. 그렇다면, 합산 세트의 비트들로 표현되는 합은, MSB가 가수의 MSB에서 1의 값을 갖도록 정규화될 수 있다. 리딩 제로 검출기(160)는 가수에서 리딩 제로들의 수를 결정하고, 합산 세트의 비트들 및 리딩 제로들의 수를 좌측 시프터(170)에 제공할 수 있다.
[0082] 좌측 시프터(170)는, 가수의 MSB가 1의 값을 가질 때까지, 합산 세트의 비트들을 좌측으로 시프팅할 수 있다. 좌측 시프터(170)는 리딩 제로들의 수에 기반하여 합산 세트의 비트들을 좌측으로 시프팅할 수 있다. 예컨대, 가수가 2개의 리딩 제로들을 갖는 경우, 좌측 시프터(170)는 합산 세트의 비트들의 각각의 비트를 좌측으로 2개의 비트 위치들로 시프팅할 수 있다.
[0083] 좌측 시프터(170)는 또한 스티키 비트의 값이 가수 비트들로 시프팅되는 것을 방지할 수 있다. 합산 세트의 비트들의 스티키 비트가 가수 비트들로 시프팅될 경우, 스티키 비트는 제로의 값으로 설정될 수 있다. 모든 추가 정밀도 비트들이 가수 비트들로 시프팅되는 경우, 스티키 비트가 또한 제로로 설정된다. 좌측 시프터는, 스티키 비트가 가수 비트들로 시프팅될 것인지 여부를 결정하기 위해, 리딩 제로들의 수(이것은 합산 세트의 비트들이 시프팅될 비트 위치들의 수를 나타냄)를 사용할 수 있다. 오버플로에 대해 어떠한 추가 비트들도 사용되지 않고 3개의 정밀도 비트들이 사용되는 경우, 합산 세트의 비트들이 좌측으로 3개 이상 위치들로 시프팅되면, 스티키 비트의 값이 가수로 시프팅될 것이다. 이 경우에, 스티키 비트가 비-제로 값을 갖는다면, 스티키 비트에 대한 가수로 시프팅된 값은 제로의 값으로 교체될 수 있다.
[0084] 다중 입력 가산기(100)는 또한 라운더(175)를 포함한다. 라운더(175)는, 좌측 상의 모든 비트들 및 가수의 LSB 값에 기반하여, 가수를 라운딩할 수 있으며, 모든 비트들은 스티키 비트, 추가 정밀도 비트들, 및 가수 오버플로 경우를 정규화할 때 영역에서 벗어나 우측으로 시프팅된 가수 영역으로부터의 비트들을 포함할 수 있다. 일부 구현들에서, 라운더(175)는 오사오입(round to the nearest even), 절반 짝수 라운딩 기법(half to even rounding technique)을 사용하여 라운딩한다. 다른 라운딩 기법들이 또한 사용될 수 있다.
[0085] 오사오입, 절반 짝수 라운딩 기법을 사용하여, 가수에서 절단된(truncated) 비트들의 값(예컨대, 시프팅 후 정밀도 비트들 및 정밀도 비트들에 후속하는 스티키 비트의 값들)이 가수의 LSB 값의 절반을 초과하면, 가수의 값이 라운딩 업될 것이다. 절단된 비트들의 값이 가수의 LSB 값의 절반 미만인 경우, 가수의 값은 라운딩 다운될 것이다. 절단되는 비트의 값이 가수의 LSB 값의 절반인 경우, 가수의 LSB가 제로이면 가수의 값은 라운딩 다운될 것이거나, 가수의 LSB가 1이면 가수의 값은 라운딩 업될 것이다. 어떠한 특별한 경우들도 발생하지 않는 경우, 라운딩된 가수 비트들은 4개의 입력 피연산자들의 합의 가수(z.f)로서 출력될 수 있다(예컨대, 여기서 z는 NaN, 무한대, 제로임).
[0086] 다중 입력 가산기는 또한, 합의 지수 값을 결정하는 지수 업데이터(180)를 포함한다. 지수 값은 피연산자(z)의 지수(x.e), 임의의 라운딩 오버플로(예컨대, 라운딩이 가수로 하여금 최상위 비트를 오버플로하게 하는 경우), 및 비트 위치들의 수(존재하는 경우)의 합 ― 비트 위치들의 수는 합의 기수가 우측으로 시프팅된 비트 위치들의 수임 ― 에서 합산 세트의 비트들이 좌측 시프터(170)에 의해 좌측으로 시프팅된 비트 위치들의 수(예컨대, 리딩 제로 검출기(160)에 의해 결정된 리딩 제로들의 수와 동일함)를 감산한 값과 동일할 수 있다. 지수 업데이터(180)는 4개의 입력 피연산자들의 합에 대한 지수(z.e)를 출력할 수 있다.
[0087] 다중 입력 가산기(100)는 또한, 피연산자(x)의 부호 비트(이는 음수인 경우 1임) 및 가산기에 의해 출력된 합이 음수인지 여부를 나타내는 비트(이는 또한 음수인 경우 1임)에 대해 배타적 논리합(exclusive disjunction)을 수행하는 XOR 게이트(185)를 포함한다. 비트들 둘 모두가 동일한 값을 갖는 경우에, XOR 게이트(185)의 출력은 제로이다. 즉, 부호들이 동일하면(즉, 둘 모두가 양수 또는 둘 모두가 음수임), 합(z.s)의 부호는 양수이다. 비트들이 상이한 값들을 갖는 경우, XOR 게이트의 출력은 1이다. 즉, 부호들이 상이한 경우, 합(z.s)의 부호는 음수이다.
[0088] 도 2는 3개 이상의 피연산자들을 가산하기 위한 예시적인 프로세스(200)를 예시하는 흐름도이다. 프로세스(200)의 동작들은 도 1의 다중 입력 가산기(100)와 같은 다중 입력 하드웨어 가산기에 의해 수행될 수 있다. 도 2는, 4-입력 가산기를 사용하여 가산된 4개의 피연산자들의 예를 예시하는 도 3을 참조하여 설명된다.
[0089] 다중 입력 가산기에는 3개 이상의 부동 소수점 입력들을 갖는다. 각각의 입력은 2개 이상의 다른 피연산자들에 가산될 부동 소수점 피연산자를 수신하도록 구성된다. 다중 입력 가산기는, 예컨대, 부호 비트, 특정 수의 지수 비트들 및 특정 수의 가수 비트들을 갖는 특정 포맷의 부동 소수점 피연산자들의 합을 결정하도록 구성될 수 있다. 위에서 설명된 바와 같이, 다중 입력 가산기는, 정밀도를 위해 그리고 정렬 단계들로 인해 가수에 대한 스티키 비트를 추적하기 위해 추가 비트들을 사용할 수 있다.
[0090] 다중 입력 가산기는, 다중 입력 가산기에 의해 가산될 3개 이상의 피연산자들 각각에 대해, 피연산자의 부동 소수점 표현을 포함하는 한 세트의 비트들을 수신한다(210). 예컨대, 피연산자에 대한 한 세트의 비트들은, 피연산자의 부호를 나타내는 부호 비트, 피연산자에 대한 지수 값을 나타내는 지수 비트들, 및 부동 소수점 수의 유효 숫자들을 나타내는 가수 비트들을 포함할 수 있다.
[0091] 다중 입력 가산기 내에서, 피연산자들은 은닉 비트, 정밀도를 위한 추가 비트 및 스티키 비트를 포함할 수 있다. 도 3의 예에서, 참조 번호(301)에 도시된 바와 같이, 각각의 피연산자(321-324)는 부호 비트(311), 3개의 지수 비트들(312), 은닉 비트(313), 5개의 가수 비트들(314), 2개의 정밀도 비트들(315) 및 스티키 비트(316)를 포함한다. 예컨대, 다중 입력 가산기는, 하나의 부호 비트(311), 3개의 지수 비트들(312), 은닉 비트(313)를 포함하는 6개의 가수 비트들(313 및 314), 2개의 정밀도 비트들(315) 및 하나의 스티키 비트(316)를 갖는 13-비트 포맷의 9-비트 입력 피연산자(예컨대, 하나의 부호 비트(311), 3개의 지수 비트들(312) 및 5개의 가수 비트들(314))를 수신할 수 있다. 위에서 설명된 바와 같이, 다중 입력 가산기는 내부 계산 및 라운딩을 위한 추가 비트들을 포함할 수 있다. 이 예에서, 다중 입력 가산기는 각각의 피연산자에 대해 2개의 정밀도 비트들(315) 및 스티키 비트(316)를 포함한다. 다중 입력 가산기의 타겟 정밀도에 기반하여 다른 수의 정밀도 비트들이 또한 사용될 수 있다.
[0092] 다중 입력 가산기는, 각각의 다른 피연산자가 정렬될 정해진 피연산자를 식별한다(220). 예컨대, 다중 입력 가산기는 가장 큰 지수 값을 갖는 피연산자를, 각각의 다른 피연산자가 정렬될 정해진 피연산자로서 식별할 수 있다. 이 예에서, 피연산자(322)는 가장 큰 지수 값(2진수로 110 또는 10진수로 6)을 갖는다.
[0093] 각각의 다른 피연산자에 대해, 다중 입력 가산기는 피연산자에 대해 시프팅된 세트의 비트들을 생성한다(230). 다중 입력 가산기는, 피연산자의 비트들이 정해진 피연산자의 비트들과 정렬되도록, 피연산자에 대한 비트들을 하나 이상의 비트 위치들로 시프팅함으로써 시프팅된 세트의 비트들을 생성할 수 있다. 예컨대, 다중 입력 가산기는, 각각의 피연산자에 대해, 정해진 피연산자의 지수 값과 다른 피연산자의 지수 값 사이의 차이를 결정할 수 있다. 차이가 제로이면, 다른 피연산자는 시프팅되지 않을 수 있고, 예컨대, 제로 비트 위치들로 시프팅될 수 있다.
[0094] 그런 다음, 다중 입력 가산기는 다른 피연산자의 가수 비트들을 우측으로(즉, 가수의 최상위 측으로부터 가수의 최하위 측을 향해, 이것은 도 3에서 좌측에서 우측으로를 의미함) 정해진 피연산자의 지수 값과 다른 피연산자의 지수 값 사이의 차이와 동일한 수의 비트 위치들로 시프팅할 수 있다. 예컨대, 정해진 피연산자에 대한 지수의 10진수 값이 5이고 다른 피연산자의 지수의 10진수 값이 3인 경우, 다중 입력 가산기는 다른 피연산자의 가수 비트들을 우측으로 2개의 비트 위치들로 시프팅할 수 있다.
[0095] 참조 번호(302)에 도시된 바와 같이, 각각의 다른 피연산자(321, 323 및 324)의 가수 비트들이 시프팅되었다. 피연산자(321)의 가수 비트들은, 피연산자(321)의 지수 값이 2진수로 011이거나 또는 10진수로 3이기 때문에, 우측 3개의 비트 위치들로 시프팅되었다. 피연산자(322)의 지수 값과 피연산자(321)의 지수 값 사이의 차이가 3(6-3)이기 때문에, 피연산자(321)의 가수 비트들이 우측으로 3개의 비트 위치들로 시프팅되었다. 시프트로 인해, 피연산자(321)에 대한 정밀도 비트들(314)은 1 및 제로를 갖는다. 다른 2개의 피연산자들(323 및 324)은 또한 피연산자(322)의 지수 값과 개개의 지수 값 사이의 차이에 기반하여 우측으로 시프팅되었다. 다음에 논의되는 바와 같이, 시프트는 또한 최하위 가수 비트들에 바로 후속하는 정밀도 비트들을 포함한다. 마찬가지로, 다음에 논의될 바와 같이 최하위 정밀도 비트에 바로 후속하는 스티키 비트의 값이 또한 우측 시프트 연산의 영향을 받다.
[0096] 이 예에서, 다른 피연산자들(321, 323 및 324)은 또한 반전 연산 비트(317)를 포함한다. 피연산자의 부호가 가장 큰 지수 값을 갖는 피연산자(322)의 부호와 상이한 경우, 피연산자에 대한 반전 연산 비트(317)는 1로 설정된다. 반전 연산 비트(317)가 1로 설정되면, 다중 입력 가산기는 피연산자의 가수 비트들에 대해 2의 보수 반전을 수행한다. 이러한 방식으로, 반전된 가수에 다른 피연산자의 가수를 가산하는 것은 2개의 가수들 사이의 감산 연산을 발생시킨다.
[0097] 다중 입력 가산기는, 시프팅에 기반하여, 각각의 다른 피연산자에 대한 스티키 비트의 값을 결정한다(240). 피연산자에 대한 스티키 비트는, 비-제로 값이 피연산자에 대한 시프팅된 세트의 비트들을 생성하기 위해 피연산자를 나타내는 한 세트의 비트들로부터 시프팅되었을 때, 비-제로 값을 갖는다. 또한, 부호 값은 스티키 비트와 연관된다. 이하에서는, 우리는 앞에 언급된 것을 단순히 스티키 비트의 부호로 나타낸다. 피연산자의 스티키 비트 값은 또한 피연산자의 부호와 매칭하는 부호를 갖는다.
[0098] 참조 번호(302)에 도시된 바와 같이, 피연산자(321)의 스티키 비트(316)는, 피연산자(321)의 원래 가수의 LSB가 스티키 비트(316)로 3개의 비트 위치들로 시프팅되었기 때문에, 1의 값을 갖는다. 피연산자의 가수 비트들이 3 대신에 4개의 비트 위치들로 시프팅된 경우, 제로가 해당 비트 위치로 시프팅될지라도, 피연산자에 대한 스티키 비트(316)는 여전히 1의 값을 가질 것이다. 이것은, 일단 피연산자에 대한 스티키 비트가 정렬 동안에 비-제로 값으로 설정되면, 스티키 비트가 해당 값으로 유지되기 때문이다.
[0099] 다중 입력 가산기는, 각각의 스티키 비트 값에 기반하여, 전체 스티키 비트 값을 결정한다(250). 위에서 설명된 바와 같이, 전체 스티키 비트 값은 (i) 다른 모든 피연산자들에 대한 모든 스티키 비트들이 제로이거나 (ii) 다른 피연산자들 중 적어도 2개가 비-제로이고 매칭하지 않는 스티키 비트들을 가질 때마다, 제로이다(예컨대, 비-제로 스티키 비트들을 갖는 피연산자들의 부호 비트들은 매칭하지 않음). 전체 스티키 비트 값은, 비-제로 스티키 비트들 모두가 매칭하거나 비-제로 스티키 비트가 하나만 있을 때마다, 각각의 비-제로 스티키 비트의 값과 매칭한다. 이 예에서, 비-제로 스티키 비트들(피연산자들(321 및 324)에 대한 스티키 비트들)이 2개가 있고, 이들 둘 모두는 1의 값을 가짐으로써 매칭하기 때문에, 합에 대한 전체 스티키 비트 값은 1이다.
[00100] 위에서 설명된 바와 같이, 다중 입력 가산기는 전체 스티키 비트 값을 다른 피연산자들(321, 323 또는 324) 중 하나에 할당하고, 예컨대, 각각의 다른 스티키 비트 값에 제로의 값을 할당함으로써, 각각의 다른 피연산자에 대한 스티키 비트 값을 클리어할 수 있다. 단계(303)의 이러한 예에서, 다중 입력 가산기는 전체 스티키 비트 값을 피연산자(321)에 할당하였고, 참조 번호(303)에 도시된 바와 같이, 피연산자(324)에 대한 스티키 비트 값을 클리어하였다.
[00101] 다중 입력 가산기는 (i) 정해진 피연산자를 나타내는 한 세트의 비트들, (ii) 각각의 다른 피연산자에 대한 시프팅된 세트의 비트들, 및 (iii) 전체 스티키 비트 값을 사용하여 3개 이상의 피연산자들의 합을 결정한다. 위에서 설명된 바와 같이, 다중 입력 가산기는 가장 큰 지수 값을 갖는 피연산자의 가수 비트들을 다른 피연산자들의 시프팅된 가수 비트에 먼저 가산할 수 있다. 합은 합산 세트의 비트들(304)로서 표현될 수 있으며, 합산 프로세스는, 가수 비트들(314) 외에, 각각의 피연산자의 가수의 최하위 단부 다음에 비트들(315 및 316)을 포함한다.
[00102] 피연산자들을 가산하기 전에, 다중 입력 가산기는 각각의 피연산자(321-324)에 대한 오버플로 비트들을 가산할 수 있다. 예컨대, 참조 번호(303)에 도시된 바와 같이, 각각의 피연산자(321-324)는 2의 보수 비트(320), 제로의 값을 갖는 2개의 오버플로 비트들(318), 은닉 비트(313), 5개의 가수 비트들(314), 2개의 정밀도 비트들(315) 및 스티키 비트(316)를 포함한다. 다중 입력 가산기는, 합산 세트의 비트들(304)을 결정하기 위해, 참조 번호(303)에 도시된 바와 같이, 피연산자들(321-324)에 대한 세트들의 비트들을 가산할 수 있다. 합산 세트의 비트들(304)은 피연산자들(321-324)의 부호 없는 합을 나타낸다. 합산 세트의 비트들(304)은 2개의 오버플로 비트들(318), 은닉 비트(313), 5개의 가수 비트들(314), 2개의 정밀도 비트들(315), 및 전체 스티키 비트 값을 나타내는 스티키 비트(316)를 포함한다.
[00103] 위에서 설명된 바와 같이, 다중 입력 가산기는 정규화 이전에 합의 기수(예컨대, 2개의 비트 위치들)를 우측으로 시프팅할 수 있다. 이 시프트는 합산 세트의 비트들에 있는 값들의 실제 시프트가 아닐 수 있다. 대신에, 이 시프트는 비트 위치들의 재매핑일 수 있다. 예컨대, 다중 입력 가산기는 은닉 비트(313)(오버플로 비트들(318)의 MSB 값을 가짐), 5개의 가수 비트들(314)(오버플로 비트들(318)의 LSB, 합산 세트의 비트들(304)의 은닉 비트(313) 및 합산 세트의 비트들(304)의 가수(314)의 처음 3개의 MSB들을 포함함), 4개의 추가 비트들(319)(합산 세트의 비트들(304)의 가수(314)의 2개의 LSB들 및 합산 세트의 비트들(304)의 정밀도 비트들(315)을 포함함), 및 스티키 비트(316)를 포함하는 재매핑된 합산 세트의 비트들(304)을 생성할 수 있다. 다중 입력 가산기는 또한, 이러한 시프트에 기반하여, 합에 대한 지수 값에 시프트의 비트 위치들의 수(예컨대, 이 예에서는 2)를 가산할 수 있다.
[00104] 그런 다음, 다중 입력 가산기는 합을 나타내는 합산 비트들을 정규화할 수 있다. 비트 시퀀스(305)를 시퀀스(306)로 변환하는 정규화는, 가수 비트들이 임의의 리딩 제로들을 포함하는 경우, 합산 세트의 비트들의 가수 비트들을 좌측으로 시프팅하는 것을 포함할 수 있다. 예컨대, 다중 입력 가산기는, 가수의 최상위 비트가 1의 값을 갖도록, 가수의 각각의 리딩 제로에 대해 가수 비트들 및 정밀도 비트들을 좌측으로 하나의 위치로 시프팅할 수 있다. 시퀀스(306)에서, 이것은 도시된 최좌측 비트이다.
[00105] 이 예에서, 합산 세트의 비트들(305)은 MSB에서 하나의 리딩 제로를 포함한다. 따라서, 다중 입력 가산기는 합산 세트의 비트들(305)을 좌측으로 하나의 비트 위치로 시프팅하여, 합산 세트의 비트들(306)을 생성할 수 있다. 이 때, 합산 세트의 비트들의 MSB는 1의 값을 갖는 은닉 비트(313)이다. 합산 세트의 비트들(306)은 은닉 비트(313), 5개의 가수 비트들(314), 3개의 추가 비트들(319) 및 스티키 비트(316)를 포함한다. 다중 입력 가산기는 또한, 시프트에 기반하여, 합의 지수를 업데이트할 수 있다. 예컨대, 다중 입력 가산기는, 정규화된 합산 세트의 비트들(306)에 도달하기 위해, 합의 지수로부터, 합산 세트의 비트들(305)이 좌측으로 시프팅된 비트 위치들의 수를 감산할 수 있다. 이 예에서, 다중 입력 가산기는 합의 지수 값에서 1의 값을 감산할 수 있다.
[00106] 그런 다음, 정밀도 비트들 및 전체 스티키 비트 값에 기반하여 합이 라운딩될 수 있다. 위에서 설명된 바와 같이, 합은 오사오입, 절반 짝수 라운딩 기법을 사용하여 라운딩될 수 있다. 오사오입, 절반 짝수 라운딩 기법을 사용하여, 가수에서 절단된 비트들의 값(예컨대, 시프팅 후 정밀도 비트들의 값들 및 정밀도 비트들에 후속하는 전체 스티키 비트 값)이 가수의 LSB 값의 절반을 초과하면, 가수의 값이 라운딩 업될 것이다. 절단된 비트들의 값이 가수의 LSB 값의 절반 미만인 경우, 가수의 값은 라운딩 다운될 것이다. 절단되는 비트의 값이 가수의 LSB 값의 절반인 경우, 가수의 LSB가 제로이면 가수의 값은 라운딩 다운될 것이거나, 가수의 LSB가 1이면 가수의 값은 라운딩 업될 것이다. 어떠한 특별한 경우들도 발생하지 않는 경우, 라운딩된 가수 비트들은 4개의 입력 피연산자들의 합의 가수(z.f)로서 출력될 수 있다(예컨대, 여기서 z는 NaN, 무한대, 제로임).
[00107] 이 예에서, 가수의 LSB는 제로이고, 추가 정밀도 비트들(319) 각각은 제로의 값을 가지며, 스티키 비트는 1의 값을 갖는다. 절단된 비트들의 값은 0.0625이고, 이는 1(가수의 LSB의 값)의 절반보다 더 작다. 따라서, 합산 세트의 비트들의 가수의 LSB는 참조 번호(307)에 도시된 바와 같이 라운딩되지 않고, 참조 번호(307)는 4개의 피연산자들(321-324)의 합의 가수(314)를 도시한다. 은닉 비트(313)는 드롭될 수 있고, 다중 입력 가산기는 5-비트 가수(314)를 출력할 수 있다.
[00108] 또한, 다중 입력 가산기는 합의 부호(331) 및 합에 대한 지수 값(332)을 결정할 수 있다. 위에서 설명된 바와 같이, 합의 부호(331)는 가장 큰 지수 값을 갖는 피연산자의 부호 및 가수 가산기(150)의 출력의 부호에 대한 XOR 연산의 출력일 수 있다. 이 예에서, 4개의 피연산자들 모두가 양수이기 때문에, 합의 부호(331)는 양수이다. 합에 대한 지수 값(332)은 가장 큰 지수 값을 갖는 피연산자(322)의 지수 값, (재매핑이 수행된 경우) 합산 세트의 비트들(305)을 생성하기 위해 재매핑 동안 기수가 우측으로 시프팅된 비트 위치들의 수, 및 합산 세트의 비트들(305)이 합산 세트의 비트들(306)을 생성하기 위해 정규화 동안 좌측으로 시프팅된 비트 위치들의 수에 기반한다. 예컨대, 지수 값(332)은 피연산자(322)의 지수 값 및 기수가 우측으로 시프팅된 비트 위치들의 수의 합에서, 정규화 동안 합이 좌측으로 시프팅된 비트 위치들의 수를 감산한 값일 수 있다. 이 예에서 지수 값(332)는 7(예컨대, 6+2-1)이 될 것이다.
[00109] 합을 나타내는 한 세트의 비트들(308)은 부호 비트(331), 결정된 지수 값을 나타내는 지수 비트들(332), 및 합의 가수를 나타내는 가수 비트들(314)로 생성될 수 있다. 예컨대, 다중 입력 가산기는 합에 대해 하나 이상의 바이트들의 메모리의 개개의 메모리 위치들에 각각의 세트의 비트들을 출력할 수 있다.
[00110] "데이터 프로세싱 장치"라는 용어는 프로그래밍 가능 프로세서, 컴퓨터, 또는 시스템 온 칩, 또는 앞서 말한 것들의 다수 또는 이들의 조합들을 예로서 포함하는, 데이터를 프로세싱하기 위한 모든 종류들의 장치, 디바이스들, 및 기계들을 포함한다. 장치는 특수 목적 로직 회로, 예컨대, FPGA(field programmable gate array) 또는 ASIC(application specific integrated circuit)를 포함할 수 있다.
[00111] 본 명세서에 설명된 프로세스들 및 로직 흐름들은 입력 데이터에 대해 동작하고 출력을 발생시킴으로써 하나 이상의 컴퓨터 프로그램들을 실행하여 동작들을 수행하는 하나 이상의 프로그래밍 가능 프로세서들에 의해 수행될 수 있다. 프로세스들 및 로직 흐름들은 또한, 특수 목적 로직 회로, 예컨대, FPGA(field programmable gate array) 또는 ASIC(application specific integrated circuit)에 의해 수행될 수 있거나, 장치는 또한 그들로서 구현될 수 있다.
[00112] 컴퓨터 프로그램의 실행에 적합한 프로세서들은, 예로서, 범용 그리고 특수 목적 마이크로프로세서들 둘 다 및 임의의 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서들을 포함한다. 일반적으로, 프로세서는 판독 전용 메모리 또는 랜덤 액세스 메모리 또는 둘 모두로부터 명령들 및 데이터를 수신할 것이다. 컴퓨터의 필수 엘리먼트들은 명령들에 따라 동작들을 수행하기 위한 프로세서, 및 명령들 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스들이다. 일반적으로, 컴퓨터는 또한, 데이터를 저장하기 위한 하나 이상의 대용량 저장 디바이스들, 예컨대, 자기적, 마그네토 광학 디스크들 또는 광학 디스크들을 포함할 것이거나, 또는 이들로부터 데이터를 수신하거나 또는 이들에 데이터를 전달하거나 또는 둘 다를 수행하도록 동작적으로 커플링될 것이다.
[00113] 본 명세서가 많은 특정 구현 세부사항들을 포함하지만, 이들은 청구될 수 있는 것의 또는 임의의 발명들의 범위에 대한 한정들로서가 아니라, 그보다는 특정 발명들의 특정 실시예들에 특정적인 특징들의 설명들로서 해석되어야 한다. 개별 실시예들과 관련하여 본 명세서에 설명되는 특정 특징들은 또한 단일 실시예로 결합하여 구현될 수 있다. 반대로, 단일 실시예와 관련하여 설명되는 다양한 특징들은 또한 다수의 실시예들로 개별적으로 또는 임의의 적절한 하위 결합으로 구현될 수 있다. 더욱이, 특징들이 특정한 결합들로 작용하는 것으로 앞서 설명되고 심지어 초기에 이와 같이 청구될 수 있다 하더라도, 일부 경우들에는 청구된 결합으로부터의 하나 이상의 특징들이 그 결합으로부터 삭제될 수 있고, 청구된 결합은 하위 결합 또는 하위 결합의 변형에 관련될 수 있다.
[00114] 마찬가지로, 동작들이 특정 순서로 도면들에 도시되지만, 이는 바람직한 결과들을 달성하기 위해 이러한 동작들이 도시된 특정 순서로 또는 순차적인 순서로 수행될 것을, 또는 예시된 모든 동작들이 수행될 것을 요구하는 것으로 이해되지는 않아야 한다. 특정 상황들에서는, 멀티태스킹 및 병렬 프로세싱이 유리할 수도 있다. 또한, 위에서 설명된 실시예들에서의 다양한 시스템 컴포넌트들의 분리는 모든 실시예들에서 그러한 분리를 요구하는 것으로서 이해되지는 않아야 하며, 설명된 프로그램 컴포넌트들 및 시스템들이 일반적으로, 단일 소프트웨어 제품에 함께 통합되거나 다수의 소프트웨어 제품들에 패키징될 수 있음이 이해되어야 한다.
[00115] 따라서, 청구 대상의 특정 실시예들이 설명되었다. 다른 실시예들이 다음의 청구항들의 범위 내에 있다. 일부 경우들에서, 청구항들에서 언급된 액션들은, 상이한 순서로 수행될 수 있으며, 여전히 바람직한 결과들을 달성할 수 있다. 게다가, 첨부 도면들에 도시된 프로세스들은 바람직한 결과들을 달성하기 위해 반드시 도시된 특정 순서 또는 순차적인 순서를 필요로 하는 것은 아니다. 특정 구현들에서는, 멀티태스킹 및 병렬 프로세싱이 유리할 수도 있다.

Claims (20)

  1. 3개 이상의 부동 소수점 입력(floating-point input)들을 갖는 다중 입력 하드웨어 가산기(multi-input hardware adder)에 의해 수행되는 방법으로서,
    상기 다중 입력 하드웨어 가산기에 의해 가산될 3개 이상의 피연산자(operand)들 각각에 대해, 상기 피연산자의 부동 소수점 표현을 포함하는 한 세트의 비트들을 수신하는 단계;
    각각의 다른 피연산자가 정렬될 정해진 피연산자를 식별하는 단계;
    각각의 다른 피연산자에 대해, 상기 피연산자의 가수 비트(mantissa bit)들이 상기 정해진 피연산자의 비트들과 정렬되도록 상기 피연산자의 상기 가수 비트들을 제로 이상의 비트 위치들로 시프팅함으로써 상기 피연산자에 대한 시프팅된 세트의 비트들을 생성하는 단계;
    상기 시프팅에 기반하여, 각각의 다른 피연산자에 대한 스티키 비트(sticky bit)의 값을 결정하는 단계
    ― 피연산자에 대한 상기 스티키 비트는, 비-제로 값이 상기 피연산자에 대한 상기 시프팅된 세트의 비트들을 생성하기 위해 임의의 정밀도 비트 위치(precision bit position)들 및 상기 피연산자의 상기 가수 비트들의 최상위 위치(least significant position)를 넘어 시프팅되었을 때, 비-제로 값을 가짐 ― ;
    각각의 스티키 비트의 값에 기반하여, 전체 스티키 비트 값을 결정하는 단계
    ― 상기 전체 스티키 비트 값은, (i) 다른 피연산자들 모두에 대한 스티키 비트들 모두가 제로이거나, (ii) 상기 다른 피연산자들 중 적어도 2개가 비-제로이고 매칭하지 않는 스티키 비트들을 가질 때마다, 제로이고; 그리고
    상기 전체 스티키 비트 값은, 상기 비-제로 스티키 비트들 모두가 매칭하거나 비-제로 스티키 비트가 하나만 있을 때마다, 각각의 비-제로 스티키 비트의 값과 매칭함 ― ; 및
    (i) 상기 정해진 피연산자를 나타내는 상기 한 세트의 비트들, (ii) 각각의 다른 피연산자에 대한 상기 시프팅된 세트의 비트들, 및 (iii) 상기 전체 스티키 비트 값을 사용하여 상기 3개 이상의 피연산자들의 합(sum)을 결정하는 단계를 포함하는,
    3개 이상의 부동 소수점 입력들을 갖는 다중 입력 하드웨어 가산기에 의해 수행되는 방법.
  2. 제1 항에 있어서,
    상기 3개 이상의 피연산자들의 합을 결정하는 단계는:
    상기 정해진 피연산자를 나타내는 상기 한 세트의 비트들 및 각각의 시프팅된 세트의 비트들의 합을 나타내는 합산 세트(summation set)의 비트들을 결정하는 단계;
    상기 합산 세트의 비트들의 가수의 은닉 비트(hidden bit)가 제로일 때마다, 상기 은닉 비트가 1이 될 때까지, 상기 합산 세트의 비트들의 상기 가수를 시프팅함으로써 상기 합산 세트의 비트들의 상기 가수를 정규화(normalize)하는 단계; 및
    상기 합산 세트의 비트들의 상기 가수 및 상기 전체 스티키 비트 값에 기반하여, 상기 합산 세트의 비트들로 표현된 부동 소수점 값을 라운딩(round)할지 여부를 결정하는 단계를 포함하는,
    3개 이상의 부동 소수점 입력들을 갖는 다중 입력 하드웨어 가산기에 의해 수행되는 방법.
  3. 제2 항에 있어서,
    상기 합산 세트의 비트들로 표현된 상기 부동 소수점 값을 라운딩할지 여부를 결정하는 단계는:
    상기 합산 세트의 비트들의 상기 가수가 상기 합산 세트의 비트들의 상기 가수를 정규화하기 위해 시프팅된 비트 위치들의 수를 결정하는 단계; 및
    상기 비트 위치들의 수가 상기 스티키 비트 이외의 상기 다중 입력 가산기의 정밀도 비트들의 수를 초과할 때마다, 상기 합산 세트의 비트들로 표현된 상기 부동 소수점 값 및 상기 전체 스티키 비트 값에 기반하여, 상기 합산 세트의 비트들로 표현된 상기 부동 소수점 값을 라운딩하기로 결정하는 단계를 포함하는,
    3개 이상의 부동 소수점 입력들을 갖는 다중 입력 하드웨어 가산기에 의해 수행되는 방법.
  4. 제2 항에 있어서,
    상기 전체 스티키 비트 값이 비-제로이고 정규화 동안 상기 가수로 시프팅될 때마다, 상기 전체 스티키 비트 값을 나타낼 상기 가수의 비트를 제로에 할당함으로써, 상기 전체 스티키 비트 값이 정규화 동안 상기 합산 세트의 비트들의 상기 가수에 포함되는 것을 방지하는 단계를 더 포함하는,
    3개 이상의 부동 소수점 입력들을 갖는 다중 입력 하드웨어 가산기에 의해 수행되는 방법.
  5. 제1 항에 있어서,
    상기 피연산자의 상기 가수 비트들을 제로 이상의 비트 위치들로 시프팅하는 단계는, 상기 피연산자의 지수(exponent)와 상기 정해진 피연산자의 지수 사이의 차이에 기반하여, 상기 가수 비트들을 시프팅하는 단계를 포함하는,
    3개 이상의 부동 소수점 입력들을 갖는 다중 입력 하드웨어 가산기에 의해 수행되는 방법.
  6. 제1 항에 있어서,
    각각의 다른 피연산자가 정렬될 정해진 피연산자를 식별하는 단계는, 가장 큰 지수 값을 갖는 상기 피연산자를 식별하는 단계를 포함하는,
    3개 이상의 부동 소수점 입력들을 갖는 다중 입력 하드웨어 가산기에 의해 수행되는 방법.
  7. 제1 항에 있어서,
    상기 다중 입력 가산기는, 4개의 부동 소수점 입력들을 갖고 상기 4개의 부동 소수점 입력들에서 수신된 4개의 부동 소수점 값들의 합을 결정하는 4-입력 가산기인,
    3개 이상의 부동 소수점 입력들을 갖는 다중 입력 하드웨어 가산기에 의해 수행되는 방법.
  8. 다중 입력 하드웨어 가산기로서,
    3개 이상의 부동 소수점 피연산자들을 수신하도록 구성된 3개 이상의 입력들; 및
    동작들을 수행하도록 구성된 가산기 회로를 포함하고,
    상기 동작들은:
    상기 다중 입력 하드웨어 가산기에 의해 가산될 3개 이상의 피연산자들 각각에 대해, 상기 피연산자의 부동 소수점 표현을 포함하는 한 세트의 비트들을 수신하는 동작;
    각각의 다른 피연산자가 정렬될 정해진 피연산자를 식별하는 동작;
    각각의 다른 피연산자에 대해, 상기 피연산자의 가수 비트들이 상기 정해진 피연산자의 비트들과 정렬되도록 상기 피연산자의 상기 가수 비트들을 제로 이상의 비트 위치들로 시프팅함으로써 상기 피연산자에 대한 시프팅된 세트의 비트들을 생성하는 동작;
    상기 시프팅에 기반하여, 각각의 다른 피연산자에 대한 스티키 비트의 값을 결정하는 동작
    ― 피연산자에 대한 상기 스티키 비트는, 비-제로 값이 상기 피연산자에 대한 상기 시프팅된 세트의 비트들을 생성하기 위해 임의의 정밀도 비트 위치들 및 상기 피연산자의 상기 가수 비트들의 최하위 위치를 넘어 시프팅되었을 때, 비-제로 값을 가짐 ― ;
    각각의 스티키 비트의 값에 기반하여, 전체 스티키 비트 값을 결정하는 동작
    ― 상기 전체 스티키 비트 값은, (i) 다른 피연산자들 모두에 대한 스티키 비트들 모두가 제로이거나, (ii) 상기 다른 피연산자들 중 적어도 2개가 비-제로이고 매칭하지 않는 스티키 비트들을 가질 때마다, 제로이고; 그리고
    상기 전체 스티키 비트 값은, 상기 비-제로 스티키 비트들 모두가 매칭하거나 비-제로 스티키 비트가 하나만 있을 때마다, 각각의 비-제로 스티키 비트의 값과 매칭함 ― ; 및
    (i) 상기 정해진 피연산자를 나타내는 상기 한 세트의 비트들, (ii) 각각의 다른 피연산자에 대한 상기 시프팅된 세트의 비트들, 및 (iii) 상기 전체 스티키 비트 값을 사용하여 상기 3개 이상의 피연산자들의 합을 결정하는 동작을 포함하는,
    다중 입력 하드웨어 가산기.
  9. 제8 항에 있어서,
    상기 3개 이상의 피연산자들의 합을 결정하는 동작은:
    상기 정해진 피연산자를 나타내는 상기 한 세트의 비트들 및 각각의 시프팅된 세트의 비트들의 합을 나타내는 합산 세트의 비트들을 결정하는 동작;
    상기 합산 세트의 비트들의 가수의 은닉 비트가 제로일 때마다, 상기 은닉 비트가 1이 될 때까지, 상기 합산 세트의 비트들의 상기 가수를 시프팅함으로써 상기 합산 세트의 비트들의 상기 가수를 정규화하는 동작; 및
    상기 합산 세트의 비트들의 상기 가수 및 상기 전체 스티키 비트 값에 기반하여, 상기 합산 세트의 비트들로 표현된 부동 소수점 값을 라운딩할지 여부를 결정하는 동작을 포함하는,
    다중 입력 하드웨어 가산기.
  10. 제9 항에 있어서,
    상기 합산 세트의 비트들로 표현된 상기 부동 소수점 값을 라운딩할지 여부를 결정하는 동작은:
    상기 합산 세트의 비트들의 상기 가수가 상기 합산 세트의 비트들의 상기 가수를 정규화하기 위해 시프팅된 비트 위치들의 수를 결정하는 동작; 및
    상기 비트 위치들의 수가 상기 스티키 비트 이외의 상기 다중 입력 가산기의 정밀도 비트들의 수를 초과할 때마다, 상기 합산 세트의 비트들로 표현된 상기 부동 소수점 값 및 상기 전체 스티키 비트 값에 기반하여, 상기 합산 세트의 비트들로 표현된 상기 부동 소수점 값을 라운딩하기로 결정하는 동작을 포함하는,
    다중 입력 하드웨어 가산기.
  11. 제9 항에 있어서,
    상기 동작들은, 상기 전체 스티키 비트 값이 비-제로이고 정규화 동안 상기 가수로 시프팅될 때마다, 상기 전체 스티키 비트 값을 나타낼 상기 가수의 비트를 제로에 할당함으로써, 상기 전체 스티키 비트 값이 정규화 동안 상기 합산 세트의 비트들의 상기 가수에 포함되는 것을 방지하는 동작을 더 포함하는,
    다중 입력 하드웨어 가산기.
  12. 제8 항에 있어서,
    상기 피연산자의 상기 가수 비트들을 제로 이상의 비트 위치들로 시프팅하는 동작은, 상기 피연산자의 지수와 상기 정해진 피연산자의 지수 사이의 차이에 기반하여, 상기 가수 비트들을 시프팅하는 동작을 포함하는,
    다중 입력 하드웨어 가산기.
  13. 제8 항에 있어서,
    각각의 다른 피연산자가 정렬될 정해진 피연산자를 식별하는 동작은, 가장 큰 지수 값을 갖는 상기 피연산자를 식별하는 동작을 포함하는,
    다중 입력 하드웨어 가산기.
  14. 제8 항에 있어서,
    상기 다중 입력 가산기는, 4개의 부동 소수점 입력들을 갖고 상기 4개의 부동 소수점 입력들에서 수신된 4개의 부동 소수점 값들의 합을 결정하는 4-입력 가산기인,
    다중 입력 하드웨어 가산기.
  15. 다중 입력 하드웨어 가산기로서,
    3개 이상의 부동 소수점 피연산자들을 수신하도록 구성된 3개 이상의 입력들 ― 각각의 입력은 피연산자의 부동 소수점 표현을 포함하는 한 세트의 비트들을 수신하도록 구성됨 ― ;
    각각의 다른 피연산자가 정렬될 정해진 피연산자를 식별하도록 구성된 지수 감산 및 스와프 컴포넌트;
    하나 이상의 시프터들 ― 상기 하나 이상의 시프터들은:
    상기 정해진 피연산자와 상이한 각각의 다른 피연산자에 대해, 상기 피연산자의 가수 비트들이 상기 정해진 피연산자의 비트들과 정렬되도록 상기 피연산자의 상기 가수 비트들을 제로 이상의 비트 위치들로 시프팅함으로써 상기 피연산자에 대한 시프팅된 세트의 비트들을 생성하고; 그리고
    상기 시프팅에 기반하여, 각각의 다른 피연산자에 대한 스티키 비트의 값을 결정하도록 구성되고,
    피연산자에 대한 상기 스티키 비트는, 비-제로 값이 상기 피연산자에 대한 상기 시프팅된 세트의 비트들을 생성하기 위해 임의의 정밀도 비트 위치들 및 상기 피연산자의 상기 가수 비트들의 최하위 위치를 넘어 시프팅되었을 때, 비-제로 값을 가짐 ― ;
    각각의 스티키 비트의 값에 기반하여, 전체 스티키 비트 값을 결정하도록 구성된 스티키 비트 계산기
    ― 상기 전체 스티키 비트 값은, (i) 다른 피연산자들 모두에 대한 스티키 비트들 모두가 제로이거나, (ii) 상기 다른 피연산자들 중 적어도 2개가 비-제로이고 매칭하지 않는 스티키 비트들을 가질 때마다, 제로이고; 그리고
    상기 전체 스티키 비트 값은, 상기 비-제로 스티키 비트들 모두가 매칭하거나 비-제로 스티키 비트가 하나만 있을 때마다, 각각의 비-제로 스티키 비트의 값과 매칭함 ― ; 및
    (i) 상기 정해진 피연산자를 나타내는 상기 한 세트의 비트들, (ii) 각각의 다른 피연산자에 대한 상기 시프팅된 세트의 비트들, 및 (iii) 상기 전체 스티키 비트 값을 사용하여 상기 3개 이상의 피연산자들의 합을 결정하도록 구성된 가산기 회로를 포함하는,
    다중 입력 하드웨어 가산기.
  16. 제15 항에 있어서,
    상기 하나 이상의 시프터들은, 비-제로 값이 상기 스티키 비트로 시프팅될 때마다, 피연산자에 대한 상기 스티키 비트를 1의 값으로 설정하는,
    다중 입력 하드웨어 가산기.
  17. 제15 항에 있어서,
    상기 가산기 회로는 추가로:
    상기 정해진 피연산자를 나타내는 상기 한 세트의 비트들 및 각각의 시프팅된 세트의 비트들의 합을 나타내는 합산 세트의 비트들을 결정하고;
    상기 합산 세트의 비트들의 가수의 은닉 비트가 제로일 때마다, 상기 은닉 비트가 1이 될 때까지, 상기 합산 세트의 비트들의 상기 가수를 시프팅함으로써 상기 합산 세트의 비트들의 상기 가수를 정규화하고; 그리고
    상기 합산 세트의 비트들의 상기 가수 및 상기 전체 스티키 비트 값에 기반하여, 상기 합산 세트의 비트들로 표현된 부동 소수점 값을 라운딩할지 여부를 결정하도록 구성되는,
    다중 입력 하드웨어 가산기.
  18. 제17 항에 있어서,
    상기 합산 세트의 비트들로 표현된 상기 부동 소수점 값을 라운딩할지 여부를 결정하는 동작은:
    상기 합산 세트의 비트들의 상기 가수가 상기 합산 세트의 비트들의 상기 가수를 정규화하기 위해 시프팅된 비트 위치들의 수를 결정하는 동작; 및
    상기 비트 위치들의 수가 상기 스티키 비트 이외의 상기 다중 입력 가산기의 정밀도 비트들의 수를 초과할 때마다, 상기 합산 세트의 비트들로 표현된 상기 부동 소수점 값 및 상기 전체 스티키 비트 값에 기반하여, 상기 합산 세트의 비트들로 표현된 상기 부동 소수점 값을 라운딩하기로 결정하는 동작을 포함하는,
    다중 입력 하드웨어 가산기.
  19. 제15 항에 있어서,
    상기 동작들은, 상기 전체 스티키 비트 값이 비-제로이고 정규화 동안 상기 가수로 시프팅될 때마다, 상기 전체 스티키 비트 값을 나타낼 상기 가수의 비트를 제로에 할당함으로써, 상기 전체 스티키 비트 값이 정규화 동안 상기 합산 세트의 비트들의 상기 가수에 포함되는 것을 방지하는 동작을 더 포함하는,
    다중 입력 하드웨어 가산기.
  20. 제15 항에 있어서,
    상기 피연산자의 상기 가수 비트들을 제로 이상의 비트 위치들로 시프팅하는 동작은, 상기 피연산자의 지수와 상기 정해진 피연산자의 지수 사이의 차이에 기반하여, 상기 가수 비트들을 시프팅하는 동작을 포함하는,
    다중 입력 하드웨어 가산기.
KR1020217036592A 2019-05-24 2019-12-12 다중 입력 부동 소수점 가산기 KR102639646B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201962852796P 2019-05-24 2019-05-24
US62/852,796 2019-05-24
US16/435,075 2019-06-07
US16/435,075 US10514891B1 (en) 2019-05-24 2019-06-07 Multi-input floating-point adder
PCT/US2019/065956 WO2020242526A1 (en) 2019-05-24 2019-12-12 Multi-input floating-point adder

Publications (2)

Publication Number Publication Date
KR20210147070A true KR20210147070A (ko) 2021-12-06
KR102639646B1 KR102639646B1 (ko) 2024-02-21

Family

ID=68979699

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217036592A KR102639646B1 (ko) 2019-05-24 2019-12-12 다중 입력 부동 소수점 가산기

Country Status (8)

Country Link
US (2) US10514891B1 (ko)
EP (1) EP3977259A1 (ko)
JP (1) JP7285966B2 (ko)
KR (1) KR102639646B1 (ko)
CN (1) CN113874833A (ko)
BR (1) BR112021023433A2 (ko)
TW (1) TWI723681B (ko)
WO (1) WO2020242526A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023113445A1 (ko) * 2021-12-14 2023-06-22 서울대학교산학협력단 부동 소수점 연산 방법 및 장치

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2598107B (en) * 2020-08-17 2022-08-17 Imagination Tech Ltd Method and system for processing floating point numbers

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5502401A (en) * 1995-04-26 1996-03-26 Texas Instruments Incorporated Controllable width or gate
JP2002215384A (ja) * 2001-01-16 2002-08-02 Toshiba Corp 多入力加減算回路

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2747267B2 (ja) * 1996-01-29 1998-05-06 甲府日本電気株式会社 3入力浮動小数点加算装置
JP3695820B2 (ja) * 1996-02-02 2005-09-14 株式会社東芝 浮動小数点積和演算器
JP2919386B2 (ja) 1996-09-19 1999-07-12 甲府日本電気株式会社 浮動小数点数検出装置および浮動小数点数検出回路
JP4571903B2 (ja) * 2005-12-02 2010-10-27 富士通株式会社 演算処理装置,情報処理装置,及び演算処理方法
JP4388543B2 (ja) 2006-12-14 2009-12-24 株式会社日立製作所 3項入力の浮動小数点加減算器
US8650231B1 (en) * 2007-01-22 2014-02-11 Altera Corporation Configuring floating point operations in a programmable device
CN107908427B (zh) * 2011-12-23 2021-11-09 英特尔公司 用于多维数组中的元素偏移量计算的指令
US9405728B2 (en) * 2013-09-05 2016-08-02 Altera Corporation Floating-point adder circuitry
US9645792B2 (en) * 2014-08-18 2017-05-09 Qualcomm Incorporated Emulation of fused multiply-add operations
US9904513B2 (en) * 2015-06-25 2018-02-27 Intel Corporation Handling instructions that require adding results of a plurality of multiplications
US10037189B2 (en) * 2016-09-20 2018-07-31 Altera Corporation Distributed double-precision floating-point multiplication
US10078512B2 (en) * 2016-10-03 2018-09-18 Via Alliance Semiconductor Co., Ltd. Processing denormal numbers in FMA hardware

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5502401A (en) * 1995-04-26 1996-03-26 Texas Instruments Incorporated Controllable width or gate
JP2002215384A (ja) * 2001-01-16 2002-08-02 Toshiba Corp 多入力加減算回路

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023113445A1 (ko) * 2021-12-14 2023-06-22 서울대학교산학협력단 부동 소수점 연산 방법 및 장치

Also Published As

Publication number Publication date
KR102639646B1 (ko) 2024-02-21
WO2020242526A1 (en) 2020-12-03
US20200371748A1 (en) 2020-11-26
EP3977259A1 (en) 2022-04-06
TW202044017A (zh) 2020-12-01
JP2022533850A (ja) 2022-07-26
BR112021023433A2 (pt) 2022-01-11
CN113874833A (zh) 2021-12-31
US10514891B1 (en) 2019-12-24
TWI723681B (zh) 2021-04-01
JP7285966B2 (ja) 2023-06-02

Similar Documents

Publication Publication Date Title
US8185570B2 (en) Three-term input floating-point adder-subtractor
US10338889B2 (en) Apparatus and method for controlling rounding when performing a floating point operation
US8239441B2 (en) Leading zero estimation modification for unfused rounding catastrophic cancellation
KR100203468B1 (ko) 부동소수점수를 위한 산술연산장치
US20230092574A1 (en) Single-cycle kulisch accumulator
KR102639646B1 (ko) 다중 입력 부동 소수점 가산기
CN108694037B (zh) 用于在执行浮点减法时估计移位量的装置和方法
US6941335B2 (en) Random carry-in for floating-point operations
WO1999040508A1 (en) Fast adder/subtractor for signed floating point numbers
US20070156803A1 (en) Overflow detection and clamping with parallel operand processing for fixed-point multipliers
US5623435A (en) Arithmetic unit capable of performing concurrent operations for high speed operation
US10089073B2 (en) Method and apparatus for converting from integer to floating point representation
US4639887A (en) Bifurcated method and apparatus for floating point addition with decreased latency time
US5260889A (en) Computation of sticky-bit in parallel with partial products in a floating point multiplier unit
KR20020063058A (ko) 덧셈 및 반올림 연산을 동시에 수행하는 부동 소수점alu 연산 장치
US8554819B2 (en) System to implement floating point adder using mantissa, rounding, and normalization
CN108153513B (zh) 前导零预测
CN116974512A (zh) 浮点运算装置、矢量处理装置、处理器及电子设备
Yehia et al. A redundant decimal floating-point adder
CN112783470A (zh) 一种用于执行浮点对数运算的装置和方法
US5432727A (en) Apparatus for computing a sticky bit for a floating point arithmetic unit
Hass Synthesizing optimal fixed-point arithmetic for embedded signal processing
US7640286B2 (en) Data processing apparatus and method for performing floating point multiplication
US20190155573A1 (en) Handling floating-point operations
JP3100868B2 (ja) 浮動小数点数のための算術演算装置

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant