KR20090031594A - 멀티스테이지 부동 소수점 누산기 - Google Patents
멀티스테이지 부동 소수점 누산기 Download PDFInfo
- Publication number
- KR20090031594A KR20090031594A KR1020097001736A KR20097001736A KR20090031594A KR 20090031594 A KR20090031594 A KR 20090031594A KR 1020097001736 A KR1020097001736 A KR 1020097001736A KR 20097001736 A KR20097001736 A KR 20097001736A KR 20090031594 A KR20090031594 A KR 20090031594A
- Authority
- KR
- South Korea
- Prior art keywords
- floating point
- operand
- alignment unit
- accumulator
- operative
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/485—Adding; Subtracting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/50—Adding; Subtracting
- G06F7/505—Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
- G06F7/509—Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination for multiple operands, e.g. digital integrators
- G06F7/5095—Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination for multiple operands, e.g. digital integrators word-serial, i.e. with an accumulator-register
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/01—Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/50—Adding; Subtracting
- G06F7/505—Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
- G06F7/509—Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination for multiple operands, e.g. digital integrators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/3804—Details
- G06F2207/386—Special constructional features
- G06F2207/3884—Pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/01—Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
- G06F5/012—Methods 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49936—Normalisation mentioned as feature only
Landscapes
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Nonlinear Science (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
- Telephone Function (AREA)
- Secondary Cells (AREA)
Abstract
멀티스테이지 부동 소수점 누산기는 적어도 2 개의 스테이지를 포함하고, 보다 고속으로 동작할 수 있다. 일 디자인에 있어서, 부동 소수점 누산기는 제 1 스테이지 및 제 2 스테이지를 포함한다. 제 1 스테이지는 3 개의 피연산자 정렬 유닛, 2 개의 다중화기, 및 3 개의 래치를 포함한다. 3 개의 피연산자 정렬 유닛은, 현재의 부동 소수점 값, 이전의 부동 소수점 값, 및 이전의 누산된 값에 대해 동작한다. 제 1 다중화기는 제 2 피연산자 정렬 유닛으로 제로 또는 이전의 부동 소수점 값을 제공한다. 제 2 다중화기는 제 3 피연산자 정렬 유닛으로 제로 또는 이전의 누산된 값을 제공한다. 3 개의 래치는 3 개의 피연산자 정렬 유닛에 연결된다. 제 2 스테이지는, 3 개의 피연산자 정렬 유닛에 의해 발생된 피연산자를 합산하는 3-피연산자 가산기, 래치, 및 후정렬 유닛을 포함한다.
멀티스테이지 부동 소수점 누산기, 피연산자 정렬, 후정렬, 산술 논리 유닛, 그래픽스, MAC 연산, 파이프라인
Description
배 경
Ⅰ. 기술분야
본 개시물은 일반적으로 일렉트로닉스에 관한 것이고, 보다 상세하게는 부동 소수점 누산기에 관한 것이다.
Ⅱ. 배경기술
디지털 프로세서에 있어서, 수치 데이터는 정수 또는 부동 소수점 표현을 이용하여 표현될 수도 있다. 부동 소수점 표현은, 몇몇 산술 연산에 대한 그 조작의 용이성 및 광범위한 값을 표현하는 그 능력 때문에, 다수의 애플리케이션에서 이용된다. 통상적으로, 부동 소수점 표현은 3 개의 성분, 즉 부호 비트 (sign), 유효수 (significand) 로서 종종 언급되는 가수 (mant), 및 지수 (exp) 를 포함한다. 부동 소수점 값은 (-1)sign × mant × 2exp 와 같이 표현될 수도 있다.
부동 소수점 누산은, 그래픽스, 디지털 신호 처리 등과 같은 각종 애플리케이션에 대해 일반적으로 수행되는 산술 연산이다. 통상적으로, 부동 소수점 누 산은, (1) 입력 부동 소수점 값 및 누산된 부동 소수점 값을 수신하는 단계, (2) 이들 2 개의 부동 소수점 값의 가수를 그 지수에 기초하여 정렬하는 단계, (3) 이들 2 개의 정렬된 가수를 합산하는 단계, 및 (4) 정규화를 위해 그 결과를 후정렬 (post-aligning) 하는 단계를 수반한다. 단계 2, 단계 3 및 단계 4 각각은 수행하는데 특정 시간량을 필요로 한다. 이들 단계를 위한 총 시간은, 프로세서가 동작할 수 있는 속도를 제한할 수도 있다.
개 요
보다 고속으로 동작할 수 있는 멀티스테이지 부동 소수점 누산기가 본 명세서에 기재되어 있다. 멀티스테이지 부동 소수점 누산기는 부동 소수점 누산을 위한 단계를 다수의 스테이지로 파티셔닝한다. 각 스테이지의 지연은, 부동 소수점 누산을 위한 단계 모두에 대한 총 지연의 일부이다. 이는, 멀티스테이지 부동 소수점 누산기가 보다 높은 클록 속도로 동작하는 것을 허용한다.
일 실시형태에 있어서, 부동 소수점 누산기는 적어도 2 개의 스테이지를 포함한다. 각 스테이지는, 각 스테이지에 대한 적어도 하나의 결과를 저장하는 적어도 하나의 래치 및 기능 로직을 포함한다. 부동 소수점 누산기는, 적어도 2 개의 클록 사이클 이전으로부터의 누산된 결과를 이용하여 복수의 부동 소수점 값에 대한 누산을 수행한다.
일 실시형태에 있어서, 부동 소수점 누산기는 2 개의 스테이지를 포함한다. 일 실시형태에 있어서, 제 1 스테이지는 3 개의 피연산자 정렬 유닛, 2 개의 다 중화기, 및 3 개의 래치를 포함한다. 3 개의 피연산자 정렬 유닛은, 2 개의 클록 사이클 이전으로부터의 이전의 누산된 값, 이전의 부동 소수점 값, 및 현재의 부동 소수점 값에 대해 동작한다. 제 1 다중화기는 제 2 피연산자 정렬 유닛으로 제로 또는 이전의 부동 소수점 값을 제공한다. 제 2 다중화기는 제 3 피연산자 정렬 유닛으로 제로 또는 이전의 누산된 값을 제공한다. 3 개의 래치는 3 개의 피연산자 정렬 유닛에 연결된다. 일 실시형태에 있어서, 제 2 스테이지는, 3 개의 피연산자 정렬 유닛에 의해 발생된 피연산자를 합산하는 3-피연산자 가산기, 이 3-피연산자 가산기에 연결된 래치, 및 이 래치에 연결된 후정렬 유닛을 포함한다.
멀티스테이지 부동 소수점 누산기는 승산기와 협력하여 승산 및 누산 (MAC) 연산을 수행하는데 사용될 수도 있는데, 이 MAC 연산은 일반적으로 내적 (dot product), 필터링 등에 이용된다.
본 개시물의 각종 양태 및 실시형태는 보다 상세하게 후술된다.
도면의 간단한 설명
본 개시물의 양태 및 실시형태는, 첨부 도면과 관련하여 취해지는 경우에 후술되는 상세한 설명으로부터 보다 명백해질 것이고, 첨부 도면에서 동일한 참조부호는 본 명세서 전체에 걸쳐 동일한 구성요소를 나타낸다.
도 1 은 단일 스테이지 부동 소수점 누산기를 도시한 도면이다.
도 2 및 도 3 은 2-스테이지 부동 소수점 누산기의 2 가지 실시형태를 도시 한 도면이다.
도 4 는 승산 및 누산 (MAC) 유닛을 도시한 도면이다.
도 5 는 그래픽스 프로세서의 블록도이다.
도 6 은 무선 디바이스의 블록도이다.
상세한 설명
"예시적인" 이라는 단어는 본 명세서에서 "실시예, 실례 또는 예시의 역할을 하는 것"을 의미하는데 이용된다. 본 명세서에서 "예시적인" 것으로서 기재된 임의의 실시형태나 디자인은 반드시 다른 실시형태나 디자인에 비해 바람직하거나 이로운 것으로서 해석되는 것은 아니다.
하나의 스테이지에서의 부동 소수점 누산은:
와 같이 표현될 수도 있는데, 여기서 n 은 누산되는 부동 소수점 값에 대한 인덱스이고,
Xn 은 누산되는 n 번째 부동 소수점 값이고 (X0 = 0),
N 은 누산되는 부동 소수점 값의 총 수이다.
일반적으로, N 은 임의의 양의 정수값일 수도 있다.
[수학식 1] 은 다음과 같이 정정될 수도 있는데:
이고, 여기서 An 은 X1 내지 Xn 에 대해 누산된 결과이고, A0 = 0 이다. 최종 누산된 결과 AN 은, N 개의 부동 소수점 값 X1 내지 XN 모두가 누산된 이후에 획득된다.
도 1 은 단일 스테이지 부동 소수점 누산기 (100) 의 블록도이다. 래치 (110) 는 입력 부동 소수점 값을 수신하여 래치하고, 래치된 값을 누산될 현재의 부동 소수점 값 Xn 으로서 제공하는데, 이 입력 부동 소수점 값은 입력 피연산자로도 언급된다. 다중화기 (Mux ; 112) 는 2 개의 입력을 통해 누산된 결과 및 제로 (0.0) 를 수신한다. 다중화기 (112) 는, 누산이 시작되거나 디스에이블되는 경우에는 제로를 제공하고, 누산이 지속 중인 경우에는 누산된 결과를 제공한다. 다중화기 (112) 의 출력은 [수학식 2] 에서의 이전의 누산된 값 An-1 이고, 이는 Xn 과 합산될 것이다.
피연산자 정렬 유닛 (120 및 122) 은 각각 피연산자 Xn 및 An-1 을 수신한다. 피연산자 정렬 유닛 (120 및 122) 은, 예를 들어 2 개의 피연산자의 지수가 동등할 때까지, 하나의 피연산자의 가수를 시프트시키며 그 지수를 조정함으로써, 2 개의 피연산자의 가수를 정렬한다. 그런 다음, 2-피연산자 가산기 (140) 는 2 개의 정렬된 가수를 합산하여, 결과적인 가수 및 지수를 제공한다. 래치 (150) 는 2-피연산자 가산기 (140) 의 출력을 수신하여 래치한다. 후정렬 유닛 (160) 은 필요에 따라 결과적인 가수를 시프트시키며 지수를 조정하여, 1.xxx--xxx 의 포맷을 갖는 정규화된 가수를 획득하는데, 여기서 각 "x" 는 하나의 이진 비트를 나타낸다. 후정렬 유닛 (160) 은 정규화된 가수 및 지수를 누산된 결과로서 제공한다.
부동 소수점 누산기 (100) 는 2 개의 신호 경로, 즉 Xn 에 대한 제 1 신호 경로, 및 An-1 에 대한 제 2 신호 경로를 갖는다. 제 1 신호 경로의 총 지연은 래치 (110) 로부터 래치 (150) 까지이고, 이는 피연산자 정렬 유닛 (120) 의 지연 및 2-피연산자 가산기 (140) 의 지연에 의해 결정된다. 제 2 신호 경로의 총 지연은, 후정렬 유닛 (160) 의 지연, 다중화기 (112) 의 지연, 피연산자 정렬 유닛 (122) 의 지연, 및 2-피연산자 가산기 (140) 의 지연에 의해 결정된다. 제 2 신호 경로의 총 지연은 제 1 신호 경로의 총 지연보다 길고, 래치 (110 및 150) 가 얼마나 빨리 클로킹 (clocking) 될 수 있는지를 결정한다. 특히, 래치에 대한 클록 속도는, 각 클록 주기가 제 2 신호 경로의 총 지연보다 길도록 선택될 수도 있다. 이 총 지연은 비교적 길어, 그에 따라 부동 소수점 누산기 (100) 에 대한 클록 속도를 제한할 수도 있다.
부동 소수점 누산기 (100) 는, 높은 클록 속도로 동작할 수도 있는 고성능 및 고속 산술 논리 유닛 (ALU) 에 사용될 수도 있다. 부동 소수점 누산이 하나의 클록 주기에서 완료될 수 없는 경우, ALU 를 사용하는 데이터 파이프라인들 사 이에 추가의 데이터 종속성이 도입될 수도 있다. 데이터 파이프라인은, 부동 소수점 누산기 (100) 가 누산된 결과를 제공할 때까지 대기할 필요가 있을 수도 있다. 이 데이터 종속성은, 특히 대규모로 부동 소수점 누산을 수행하는 애플리케이션에 있어서, 성능에 영향을 미칠 수도 있다.
멀티스테이지 부동 소수점 누산기는 동작 속도를 향상시키는데 사용될 수도 있다. 멀티스테이지 부동 소수점 누산기는 부동 소수점 누산을 위한 단계를 다수의 스테이지로 파티셔닝한다. 각 스테이지의 지연은, 누산을 위한 단계 모두에 대한 총 지연의 일부이다. 이는, 멀티스테이지 부동 소수점 누산기가 보다 높은 클록 속도로 동작하는 것을 허용한다.
2 개의 스테이지에서의 부동 소수점 누산은:
와 같이 표현될 수도 있는데, 여기서 X0 = X-1 = 0 이다.
[수학식 3] 은 다음과 같이 정정될 수도 있는데:
이고, 여기서 A0 = A-1 = 0 이다.
도 2 는 2-스테이지 부동 소수점 누산기 (200) 의 일 실시형태의 블록도이다. 래치 (210) 는 입력 부동 소수점 값을 수신하여 래치하고, 누산될 현재의 부동 소수점 값 Xn 을 제공한다. 다중화기 (212) 는 이전의 피연산자 및 제로를 수신하여, 누산이 시작되거나 디스에이블되는 경우에는 제로를 제공하고, 누산이 지속 중인 경우에는 이전의 피연산자를 제공한다. 다중화기 (212) 의 출력은 [수학식 4] 에서의 Xn-1 이고, 이는 Xn 과 합산될 것이다. 다중화기 (214) 는 누산된 결과 및 제로를 수신하여, 최종 2 개의 클록 주기 내에서 누산이 시작되거나 디스에이블되는 경우에는 제로를 제공하고, 누산이 지속 중인 경우에는 누산된 결과를 제공한다. 다중화기 (214) 의 출력은 [수학식 4] 에서의 이전의 누산된 값 An-2 이고, 이는 Xn 과 합산될 것이다. 부동 소수점 누산기 (200) 는 2 개의 클록 사이클의 지연을 갖는 파이프라인이다. 따라서, 후정렬 유닛 (260) 으로부터의 현재의 누산된 결과는 2 개의 클록 사이클 이전에 대한 이전의 누산된 값이다.
피연산자 정렬 유닛 (220, 222 및 224) 은 각각 피연산자 Xn, Xn-1 및 An-2 를 수신한다. 피연산자 정렬 유닛 (220, 222 및 224) 은, 예를 들어 3 개의 피연산자 모두의 지수가 동등할 때까지, 필요에 따라, 하나 이상의 피연산자의 하나 이상의 가수를 시프트시키며 그 지수를 조정함으로써, 3 개의 피연산자의 가수를 정렬한다. 래치 (230, 232 및 234) 는 각각 피연산자 정렬 유닛 (220, 222 및 224) 의 출력을 수신하여 래치한다. 3-피연산자 가산기 (240) 는 래치 (230, 232 및 234) 로부터의 3 개의 정렬된 가수를 합산하여, 결과적인 가수 및 지수를 제공한다. 래치 (250) 는 3-피연산자 가산기 (240) 의 출력을 수신하여 래치한 다. 후정렬 유닛 (260) 은 필요에 따라 결과적인 가수를 시프트시키며 지수를 조정하여, 정규화된 가수를 획득한다. 후정렬 유닛 (260) 은 누산된 결과를 제공한다.
부동 소수점 누산기 (200) 는 2 개의 스테이지를 갖는다. 제 1 스테이지는 다중화기 (212) 내지 래치 (234) 를 포함하는 것으로서 고려될 수도 있다. 제 2 스테이지는 3-피연산자 가산기 (240), 래치 (250) 및 후정렬 유닛 (260) 을 포함하는 것으로서 고려될 수도 있다. 일반적으로, 각 스테이지는 기능 로직, 및 적어도 하나의 래치 또는 레지스터를 포함하는데, 이들은 각 스테이지 내의 어디든지 위치할 수도 있다. 래치(들)는 스테이지의 중간 및/또는 최종 결과(들)를 저장하는데 사용된다. 각 스테이지는 각 클록 주기에서 업데이트된다.
부동 소수점 누산기 (200) 는 3 개의 신호 경로, 즉 Xn 에 대한 제 1 신호 경로, Xn-1 에 대한 제 2 신호 경로, 및 An-2 에 대한 제 3 신호 경로를 갖는다. 제 1 신호 경로는 2 개의 세그먼트, 즉 (1) 피연산자 정렬 유닛 (220) 의 지연에 의해 결정된 지연을 가지며 래치 (210) 로부터 래치 (230) 까지의 제 1 세그먼트, 및 (2) 3-피연산자 가산기 (240) 의 지연에 의해 결정된 지연을 가지며 래치 (230) 로부터 래치 (250) 까지의 제 2 세그먼트로 파티셔닝된다. 제 2 신호 경로는, (1) 다중화기 (212) 의 지연 및 피연산자 정렬 유닛 (222) 의 지연에 의해 결정된 지연을 가지며 다중화기 (212) 로부터 래치 (232) 까지의 제 1 세그먼트, 및 (2) 래치 (232) 로부터 래치 (250) 까지의 제 2 세그먼트로 파티셔닝된다. 제 3 신 호 경로는, (1) 후정렬 유닛 (260) 의 지연, 다중화기 (214) 의 지연 및 피연산자 정렬 유닛 (224) 의 지연에 의해 결정된 지연을 가지며 래치 (250) 로부터 래치 (234) 까지의 제 1 세그먼트, 및 (2) 래치 (234) 로부터 래치 (250) 까지의 제 2 세그먼트로 파티셔닝된다. 따라서, 3 개의 신호 경로 각각은 2 개의 세그먼트로 파티셔닝된다. 제 2 세그먼트는 3 개의 신호 경로 모두에 대해 동일하다.
따라서, 부동 소수점 누산기 (200) 는 4 개의 상이한 세그먼트, 즉 3 개의 피연산자에 대한 3 개의 제 1 세그먼트, 및 공통의 제 2 세그먼트를 갖는다. 4 개의 세그먼트 모두의 가장 긴 지연은, 래치가 얼마나 빨리 클로킹될 수 있는지를 결정한다. 이 가장 긴 지연은, 부동 소수점 누산기 (100) 에서의 제 2 신호 경로의 총 지연보다 훨씬 짧을 수도 있다. 따라서, 부동 소수점 누산기 (200) 는 부동 소수점 누산기 (100) 보다 높은 클록 속도로 동작할 수도 있다.
표 1 은 N 개의 부동 소수점 값 X1 내지 XN 의 누산을 위한 래치 (210) 의 출력, 다중화기 (212) 의 출력, 다중화기 (214) 의 출력, 및 후정렬 유닛 (260) 의 출력을 나타낸다. 래치 (210) 는 클록 사이클 1 내지 클록 사이클 N 각각에 대해 현재의 부동 소수점 값을 제공한다. 다중화기 (212) 는 클록 사이클 1 에 대해서는 제로를 제공하고, 클록 사이클 2 내지 클록 사이클 N 각각에 대해서는 이전의 부동 소수점 값을 제공한다. 다중화기 (214) 는 클록 사이클 1 및 클록 사이클 2 각각에 대해서는 제로를 제공하고, 클록 사이클 3 내지 클록 사이클 N 각각에 대해서는 이전의 누산된 값을 제공한다. 클록 사이클 3 및 그 이후에 있 어서, 후정렬 유닛 (260) 의 출력은 동일한 클록 사이클에서 다중화기 (214) 의 출력에 나타난다. 표 1 에서의 "-" 은 '상관 없음 (don't care)' 을 나타내고, 이는 임의의 값일 수도 있다.
도 2 및 표 1 에 나타낸 바와 같이, 부동 소수점 누산기 (200) 는 2 개의 클록 사이클의 지연을 갖는 파이프라인이다. 최종 출력 AN 은, 최종 부동 소수점 값 XN 을 부동 소수점 누산기 (200) 로 제공한 이후에 2 개의 클록 사이클에서 획득된다.
부동 소수점 누산기 (200) 는 2 개의 클록 사이클 이전으로부터의 누산된 결과 An-2 를 이용한다. 이는, 누산된 결과에 대한 신호 경로가 보다 작은 지연을 갖는 2 개의 세그먼트로 파티셔닝되는 것을 허용한다. 또한, 이 파티셔닝은, 부동 소수점 누산기 (200) 가 3-피연산자 가산기 (240) 를 사용하는 것을 야기하는데, 이 3-피연산자 가산기는 도 1 에서의 2-피연산자 가산기 (140) 보다 약간 긴 지연을 갖는다. 그럼에도 불구하고, 부동 소수점 누산기 (200) 는 보다 고속으로 동작할 수도 있다.
특정 실시예에 의해 클록 속도에서의 가능한 개선이 예시될 수도 있다. 이 실시예에 있어서, 부동 소수점 누산기 (100 및 200) 내에서, 다중화기 (112 및 214) 는 0.2 나노초 (㎱) 의 지연을 가질 수도 있고, 피연산자 정렬 유닛 (122 및 224) 은 1.0 ㎱ 의 지연을 가질 수도 있고, 2-피연산자 가산기 (140) 는 2.0 ㎱ 의 지연을 가질 수도 있고, 3-피연산자 가산기 (240) 는 2.4 ㎱ 의 지연을 가질 수도 있고, 후정렬 유닛 (160 및 260) 은 1.0 ㎱ 의 지연을 가질 수도 있다. 부동 소수점 누산기 (100) 에 있어서, An-1 에 대한 신호 경로는 4.2 ㎱ 의 총 지연을 갖고, 부동 소수점 누산기 (100) 는 최대 238 메가헤르츠 (㎒) 의 클록 속도로 동작할 수도 있다. 부동 소수점 누산기 (200) 에 있어서, 제 1 세그먼트의 지연은 2.2 ㎱ 이고, 제 2 세그먼트의 지연은 2.4 ㎱ 이다. 그러면, 부동 소수점 누산기 (200) 는 최대 416 ㎒ 의 클록 속도로 동작할 수도 있다. 개선량은 다른 디자인에 대해 상이할 가능성이 있다.
도 2 는 누산된 결과에 대한 제 3 신호 경로를 파티셔닝하는 특정 실시형태를 도시한 도면이다. 또한, 제 3 신호 경로는 다른 방식으로 파티셔닝될 수도 있다. 예를 들어, 래치 (250) 는 후정렬 유닛 (260) (앞 대신에) 뒤에 위치할 수도 있다. 그러면, 제 1 세그먼트는 다중화기 (214) 및 피연산자 정렬 유닛 (224) 을 포함하고, 제 2 세그먼트는 3-피연산자 가산기 (240) 및 후정렬 유닛 (260) 을 포함할 것이다. 일반적으로, 제 3 신호 경로는, 2 개의 세그먼트가 지연에 있어서 가능한 한 양호하게 매핑되도록 파티셔닝될 수도 있어, 2 개의 세그먼트의 지연들 사이의 차이는 가능한 한 작아진다.
도 3 은 2-스테이지 부동 소수점 누산기 (300) 의 일 실시형태의 블록도이다. 다중화기 (212 및 214) 를 제외하고, 부동 소수점 누산기 (300) 는 도 2 에서의 부동 소수점 누산기 (200) 의 유닛 모두를 포함한다. 래치 (230) 의 출력은 직접적으로 피연산자 정렬 유닛 (222) 으로 제공된다. 후정렬 유닛 (260) 의 출력은 직접적으로 피연산자 정렬 유닛 (224) 으로 제공된다. 래치 (230, 232, 234 및 250) 는, 누산이 시작되는 경우에 이들 래치를 제로로 리셋하는 리셋 신호를 수신한다. 이 실시형태는 다중화기 (212 및 214) 및 연관된 이들 다중화기의 지연을 제거하는데, 이는 부동 소수점 누산기 (300) 가 보다 높은 클록 속도로 동작하는 것을 허용할 수도 있다.
부동 소수점 누산은 다른 기능과 함께 수행될 수도 있다. 예를 들어, 승산 및 누산 (MAC) 연산이 각종 애플리케이션에 일반적으로 이용된다. 2 개의 스테이지에서의 승산 및 누산은:
와 같이 표현될 수도 있는데, 여기서 Yi = Ci·Di 이고, Ci 및 Di 는 승산 및 누산될 부동 소수점 피연산자의 i 번째 쌍이다.
[수학식 5] 는 다음과 같이 정정될 수도 있다:
도 4 는 MAC 유닛 (400) 의 일 실시형태의 블록도이다. MAC 유닛 (400) 은 2-피연산자 승산기 (208) 및 2-스테이지 부동 소수점 누산기 (200) 를 포함한다. 2-피연산자 승산기 (208) 는 승산 및 누산될 2 개의 피연산자를 수신하고, 이들 2 개의 피연산자를 승산하여, 그 결과를 래치 (210) 로 제공한다. 도 2 에 대해 전술한 바와 같이, 부동 소수점 누산기 (200) 는 래치 (210) 로부터의 결과에 대한 누산을 수행한다.
MAC 유닛 (400) 은 그래픽스, 디지털 신호 처리 등과 같은 각종 애플리케이션에 사용될 수도 있다. MAC 유닛 (400) 은, 와 같이, 부동 소수점 값의 2 개의 시퀀스 및 의 내적을 수행하는데 사용될 수도 있다. 내적은, 그래픽스에서 객체를 충돌시키기 위한 물리학 계산 (physics calculation), 상관, 필터링 등에 광범위하게 이용된다. 또한, 스칼라로 부동 소수점 값의 시퀀스를 스케일링하고, 스케일링된 값의 시퀀스를 누산하는데 MAC 유닛 (400) 이 사용될 수도 있다.
또한, 누산은 다른 기능과 협력하여 수행될 수도 있다. 예를 들어, 2-피연산자 승산기 (208) 는 스칼라 승산기, 가산기, 제산기, 초등 함수 (elementary function), 시프터 등으로 대체될 수도 있다.
또한, 부동 소수점 누산은 3 이상의 스테이지에서 수행될 수도 있다. 예를 들어, 3 개의 스테이지의 부동 소수점 누산은:
와 같이 표현될 수도 있는데, 여기서 X0 = X-1 = X-2 = 0 이다.
[수학식 7] 은 다음과 같이 정정될 수도 있는데:
이고, 여기서 A0 = A-1 = A-2 = 0 이다.
[수학식 7] 및 [수학식 8] 은 3 개의 클록 사이클 이전으로부터의 누산된 결과 An-3 을 이용한다. 이는, 누산된 결과에 대한 신호 경로가 보다 작은 지연을 갖는 3 개의 세그먼트로 파티셔닝되는 것을 허용한다. 예를 들어, 부가적인 래치가 도 2 에서의 후정렬 유닛 (260) 뒤에 삽입될 수도 있다. 그러면, 누산된 결과에 대한 제 3 신호 경로는 3 개의 세그먼트로 파티셔닝될 수도 있고, 부동 소수점 누산기는 더욱 더 높은 클록 속도로 동작할 수도 있다. 4-피연산자 가산기가 [수학식 8] 에서의 4 개의 피연산자를 합산하는데 사용될 수도 있다.
본 명세서에 기재된 멀티스테이지 부동 소수점 누산기는, 그래픽스 프로세서 (예를 들어, 쉐이더), 그래픽스 처리 유닛 (GPU), 디지털 신호 프로세서 (DSP), 축소 명령 집합 컴퓨터 (RISC), ARM (Advanced RISC Machine) 등과 같은 각종 타입의 프로세서에 사용될 수도 있다. 무선 디바이스 및 그래픽스 프로세서에 대한 멀티스테이지 부동 소수점 누산기의 예시적인 사용이 후술된다.
도 5 는 L 개의 그래픽스 애플리케이션/프로그램을 지원하는 그래픽스 프로세서 (500) 의 일 실시형태의 블록도이고, 일반적으로 L ≥ 1 이다. L 개의 그래픽스 애플리케이션은 비디오 게임, 그래픽스 등을 위한 것일 수도 있고, 동시에 실행될 수도 있다. 그래픽스 프로세서 (500) 는 쉐이더 코어 (502), 텍스처 엔진 (504), 및 캐시 메모리 시스템 (506) 을 포함한다. 쉐이더 코어 (502) 는 쉐이딩 (shading) 과 같은 그래픽스 연산을 수행할 수도 있는데, 쉐이딩은 라이팅 (lighting), 섀도잉 (shadowing) 을 수반한 매우 복잡한 그래픽스 연산이다. 텍스처 엔진 (504) 은 텍스처 매핑과 같은 그래픽스 연산을 수행할 수도 있다. 텍스처링은, 텍스처 테이블/이미지의 컬러로 이미지의 픽셀의 컬러를 변경함으로써 달성된다. 캐시 메모리 시스템 (506) 은 하나 이상의 캐시를 포함할 수도 있는데, 이 하나 이상의 캐시는 쉐이더 코어 (502) 및 텍스처 엔진 (504) 에 대한 명령들 및 데이터를 저장할 수 있는 고속 메모리이다.
쉐이더 코어 (502) 내에서, 다중화기 (510) 는 L 개의 그래픽스 애플리케이션으로부터 스레드를 수신하여, 이들 스레드를 스레드 스케줄러 (512) 로 제공한다. 스레드 스케줄러 (512) 는 각종 기능을 수행하여, 스레드의 실행을 스케줄링 및 관리한다. 명령 캐시 (514) 는 스레드에 대한 명령들을 저장한다. 이들 명령들은 각 스레드에 대해 수행될 특정 동작을 지시하고, 캐시 메모리 시스템 (506) 및/또는 메인 메모리로부터 로딩될 수도 있다. ALU (516) 는 산술 연산, 논리 연산, 포맷 변환 등을 수행한다. ALU (516) 는 하나 이상의 멀티스테이지 부동 소수점 누산기 (Acc) 를 구현할 수도 있다. 상수 버퍼 (518) 는 ALU (516) 에 의해 이용되는 상수값을 저장한다. 로드 제어 유닛 (520) 은 쉐이더 코어 (502) 내의 각종 유닛에 대한 명령들 및 데이터의 흐름을 제어한다. 출력 버퍼 (522) 는 ALU (516 및 544) 로부터의 중간 결과 및 최종 결과를 저장한다. 역다중화기 (Demux ; 524) 는 출력 버퍼 (522) 로부터의 실행된 스레드에 대한 최종 결과를 수신하여, 이들 결과를 그래픽스 애플리케이션으로 제공한다.
텍스처 엔진 (504) 내에서, 텍스처 어드레스 발생기 (540) 는 텍스처 엔진 (504) 에 의해 연산될 각 픽셀의 위치를 컴퓨팅한다. 텍스처 캐시 (542) 는 텍스처 엔진 (504) 에 대한 픽셀을 저장한다. ALU (544) 는 픽셀에 대한 계산을 수행하여 중간 결과를 제공하는데, 이 중간 결과는 출력 버퍼 (522) 에 저장될 수도 있다. 또한, ALU (544) 는 하나 이상의 멀티스테이지 부동 소수점 누산기를 구현할 수도 있다.
도 6 은 무선 통신 시스템에서의 무선 디바이스 (600) 의 일 실시형태의 블 록도이다. 무선 디바이스 (600) 는 셀룰러 전화기, 단말기, 핸드셋, PDA (Personal Digital Assistant), 또는 일부 다른 디바이스일 수도 있다. 무선 통신 시스템은 코드 분할 다중 접속 (CDMA) 시스템, GSM (Global System for Mobile Communications) 시스템, 또는 일부 다른 시스템일 수도 있다.
무선 디바이스 (600) 는 수신 경로 및 송신 경로를 통해 양방향 통신을 제공할 수 있다. 수신 경로 상에서, 기지국에 의해 송신된 신호는 안테나 (612) 에 의해 수신되어, 수신기 (RCVR ; 614) 로 제공된다. 수신기 (614) 는 수신된 신호를 컨디셔닝 및 디지털화하여, 샘플을 추가 처리를 위해 디지털 섹션 (620) 으로 제공한다. 송신 경로 상에서, 송신기 (TMTR ; 616) 는 디지털 섹션 (620) 으로부터 송신될 데이터를 수신하고, 이 데이터를 처리 및 컨디셔닝하여, 변조된 신호를 발생시키는데, 이 변조된 신호는 안테나 (612) 를 통해 기지국으로 송신된다.
디지털 섹션 (620) 은, 예를 들어 모뎀 프로세서 (622), 비디오 프로세서 (624), 제어기/프로세서 (626), 디스플레이 프로세서 (628), ARM/DSP (632), 그래픽스 프로세서 (634), 내부 메모리 (636), 및 외부 버스 인터페이스 (EBI ; 638) 와 같은 각종 처리 유닛, 인터페이스 유닛, 및 메모리 유닛을 포함한다. 모뎀 프로세서 (622) 는 데이터 송신 및 수신을 위한 처리 (예를 들어, 인코딩, 변조, 복조, 및 디코딩) 를 수행한다. 비디오 프로세서 (624) 는, 비디오 콘텐츠 (예를 들어, 정지 이미지, 동영상 (moving video), 및 무빙 텍스트 (moving text)) 에 대해 캠코더, 비디오 재생, 및 화상 회의와 같은 비디오 애플리케이션을 위한 처리를 수행한다. 제어기/프로세서 (626) 는 디지털 섹션 (620) 내의 각종 처리 유 닛 및 인터페이스 유닛의 동작을 지시할 수도 있다. 디스플레이 프로세서 (628) 는, 디스플레이 유닛 (630) 상의 비디오, 그래픽스 및 텍스트의 디스플레이를 용이하게 하는 처리를 수행한다.
ARM/DSP (632) 는 무선 디바이스 (600) 를 위한 각종 타입의 처리를 수행할 수도 있다. 그래픽스 프로세서 (634) 는 그래픽스 처리를 수행한다. 프로세서 (622 내지 634) 각각은 하나 이상의 멀티스테이지 부동 소수점 누산기를 구현할 수도 있다. 내부 메모리 (636) 는 디지털 섹션 (620) 내의 각종 유닛에 대한 명령들 및/또는 데이터를 저장한다. EBI (638) 는 디지털 섹션 (620) (예를 들어, 내부 메모리 (636)) 과 메인 메모리 (640) 사이의 데이터 전송을 용이하게 한다.
디지털 섹션 (620) 은 하나 이상의 DSP, 마이크로프로세서, RISC 등으로 구현될 수도 있다. 또한, 디지털 섹션 (620) 은 하나 이상의 주문형 집적 회로 (ASIC) 또는 일부 다른 타입의 집적 회로 (IC) 상에 제조될 수도 있다.
본 명세서에 기재된 멀티스테이지 부동 소수점 누산기는 각종 하드웨어 유닛으로 구현될 수도 있다. 예를 들어, 부동 소수점 누산기는, ASIC, DSP, 디지털 신호 처리 디바이스 (DSPD), 프로그래머블 논리 디바이스 (PLD), 필드 프로그래머블 게이트 어레이 (FPGA), 프로세서, 제어기, 마이크로제어기, 마이크로프로세서, 전자 디바이스, 및 다른 전자 유닛으로 구현될 수도 있다.
개시된 실시형태의 전술한 설명은, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 개시물을 실시 또는 이용할 수 있도록 제공된다. 이들 실 시형태에 대한 각종 변형은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 자명하고, 본 명세서에 정의된 일반적인 원리는 본 개시물의 사상 또는 범위를 벗어나지 않으면서 다른 실시형태에 적용될 수도 있다. 따라서, 본 개시물은 본 명세서에 제시된 실시형태에 제한되는 것으로 의도되는 것이 아니라, 본 명세서에 개시된 신규 특징 및 원리에 부합하는 가장 광범위한 범위를 따르는 것이다.
Claims (23)
- 복수의 부동 소수점 값들에 대한 누산을 수행하도록 동작하며 적어도 2 개의 스테이지들을 포함하는 부동 소수점 누산기를 포함하고,각 스테이지는 상기 스테이지에 대한 적어도 하나의 결과를 저장하도록 동작하는 적어도 하나의 래치를 포함하는, 프로세서.
- 제 1 항에 있어서,상기 부동 소수점 누산기는, 적어도 2 개의 클록 사이클들 이전으로부터의 누산된 결과들을 이용하여 누산을 수행하도록 동작하는, 프로세서.
- 제 1 항에 있어서,상기 부동 소수점 누산기는 2 개의 스테이지들을 갖는 파이프라인이고, 2 개의 클록 사이클들의 지연을 갖는, 프로세서.
- 제 1 항에 있어서,상기 부동 소수점 누산기는,현재의 부동 소수점 값에 대한 제 1 피연산자 정렬 유닛,이전의 부동 소수점 값에 대한 제 2 피연산자 정렬 유닛, 및이전의 누산된 값에 대한 제 3 피연산자 정렬 유닛을 포함하는, 프로세서.
- 제 4 항에 있어서,상기 부동 소수점 누산기는,상기 제 2 피연산자 정렬 유닛으로 제로 또는 상기 이전의 부동 소수점 값을 제공하도록 동작하는 제 1 다중화기, 및상기 제 3 피연산자 정렬 유닛으로 제로 또는 상기 이전의 누산된 값을 제공하도록 동작하는 제 2 다중화기를 더 포함하는, 프로세서.
- 제 4 항에 있어서,상기 부동 소수점 누산기는,상기 제 1 피연산자 정렬 유닛, 상기 제 2 피연산자 정렬 유닛 및 상기 제 3 피연산자 정렬 유닛에 각각 연결된 제 1 래치, 제 2 래치 및 제 3 래치를 더 포함하는, 프로세서.
- 제 4 항에 있어서,상기 부동 소수점 누산기는,상기 제 1 피연산자 정렬 유닛, 상기 제 2 피연산자 정렬 유닛 및 상기 제 3 피연산자 정렬 유닛에 의해 발생된 피연산자들을 합산하도록 동작하는 3-피연산자 가산기를 더 포함하는, 프로세서.
- 제 1 항에 있어서,상기 부동 소수점 누산기는,현재의 부동 소수점 값, 이전의 부동 소수점 값, 및 이전의 누산된 값을 합산하도록 동작하는 3-피연산자 가산기를 더 포함하는, 프로세서.
- 제 8 항에 있어서,상기 부동 소수점 누산기는,상기 3-피연산자 가산기에 연결된 래치, 및상기 래치에 연결된 후정렬 (post alignment) 유닛을 더 포함하는, 프로세서.
- 제 1 항에 있어서,입력 피연산자들을 승산하여, 상기 부동 소수점 누산기로 상기 복수의 부동 소수점 값들을 제공하도록 동작하는 승산기를 더 포함하는, 프로세서.
- 제 10 항에 있어서,상기 승산기 및 상기 부동 소수점 누산기는, 피연산자들의 2 개의 시퀀스를 승산 및 누산하도록 동작하는, 프로세서.
- 복수의 부동 소수점 값들에 대한 누산을 수행하도록 동작하며 적어도 2 개의 스테이지들을 포함하는 부동 소수점 누산기를 포함하고,각 스테이지는 상기 스테이지에 대한 적어도 하나의 결과를 저장하도록 동작하는 적어도 하나의 래치를 포함하는, 집적 회로.
- 제 12 항에 있어서,상기 부동 소수점 누산기는, 적어도 2 개의 클록 사이클들 이전으로부터의 누산된 결과들을 이용하여 누산을 수행하도록 동작하는, 집적 회로.
- 제 12 항에 있어서,상기 부동 소수점 누산기는,현재의 부동 소수점 값에 대한 제 1 피연산자 정렬 유닛,이전의 부동 소수점 값에 대한 제 2 피연산자 정렬 유닛, 및이전의 누산된 값에 대한 제 3 피연산자 정렬 유닛을 포함하는, 집적 회로.
- 제 14 항에 있어서,상기 부동 소수점 누산기는,상기 제 1 피연산자 정렬 유닛, 상기 제 2 피연산자 정렬 유닛 및 상기 제 3 피연산자 정렬 유닛에 의해 발생된 피연산자들을 합산하도록 동작하는 3-피연산자 가산기를 더 포함하는, 집적 회로.
- 제 15 항에 있어서,상기 부동 소수점 누산기는,상기 3-피연산자 가산기에 연결된 제 4 래치, 및상기 제 4 래치에 연결된 후정렬 (post alignment) 유닛을 더 포함하는, 집적 회로.
- 제 12 항에 있어서,입력 피연산자들을 승산하여, 상기 부동 소수점 누산기로 상기 복수의 부동 소수점 값들을 제공하도록 동작하는 승산기를 더 포함하는, 집적 회로.
- 적어도 하나의 산술 논리 유닛 (ALU) 으로서, 각 ALU 는, 복수의 부동 소수점 값들에 대한 누산을 수행하도록 동작하며 적어도 2 개의 스테이지들을 포함하는 부동 소수점 누산기를 포함하는, 상기 적어도 하나의 ALU; 및상기 ALU 에 연결된 메모리를 포함하는, 그래픽스 프로세서.
- 제 18 항에 있어서,상기 부동 소수점 누산기는,현재의 부동 소수점 값에 대한 제 1 피연산자 정렬 유닛,이전의 부동 소수점 값에 대한 제 2 피연산자 정렬 유닛,이전의 누산된 값에 대한 제 3 피연산자 정렬 유닛, 및상기 제 1 피연산자 정렬 유닛, 상기 제 2 피연산자 정렬 유닛 및 상기 제 3 피연산자 정렬 유닛에 의해 발생된 피연산자들을 합산하도록 동작하는 3-피연산자 가산기를 포함하는, 그래픽스 프로세서.
- 제 18 항에 있어서,각 ALU 는,입력 피연산자들을 승산하여, 상기 부동 소수점 누산기로 상기 복수의 부동 소수점 값들을 제공하도록 동작하는 승산기를 더 포함하는, 그래픽스 프로세서.
- 제 18 항에 있어서,그래픽스 연산들을 수행하도록 동작하며 제 1 ALU 를 포함하는 쉐이더 코어를 더 포함하는, 그래픽스 프로세서.
- 제 21 항에 있어서,텍스처 매핑을 수행하도록 동작하며 제 2 ALU 를 포함하는 텍스처 엔진을 더 포함하는, 그래픽스 프로세서.
- 복수의 부동 소수점 값들에 대한 누산을 수행하도록 동작하며 적어도 2 개의 스테이지들을 포함하는 부동 소수점 누산기를 포함하는 그래픽스 프로세서; 및상기 그래픽스 프로세서에 연결된 메모리를 포함하는, 무선 디바이스.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/506,349 US7543013B2 (en) | 2006-08-18 | 2006-08-18 | Multi-stage floating-point accumulator |
US11/506,349 | 2006-08-18 | ||
PCT/US2007/076242 WO2008022331A2 (en) | 2006-08-18 | 2007-08-17 | Multi-stage floating-point accumulator |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20090031594A true KR20090031594A (ko) | 2009-03-26 |
KR101085810B1 KR101085810B1 (ko) | 2011-11-22 |
Family
ID=39083186
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020097001736A KR101085810B1 (ko) | 2006-08-18 | 2007-08-17 | 멀티스테이지 부동 소수점 누산기 |
Country Status (8)
Country | Link |
---|---|
US (1) | US7543013B2 (ko) |
EP (1) | EP2057535B1 (ko) |
JP (1) | JP5086348B2 (ko) |
KR (1) | KR101085810B1 (ko) |
CN (1) | CN101506771B (ko) |
AT (1) | ATE487981T1 (ko) |
DE (1) | DE602007010468D1 (ko) |
WO (1) | WO2008022331A2 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200063077A (ko) * | 2018-11-26 | 2020-06-04 | 쥐에스아이 테크놀로지 인코포레이티드 | 대규모 병렬 연관된 승산기-누산기 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101847087B (zh) * | 2010-04-28 | 2012-03-28 | 中国科学院自动化研究所 | 一种支持定浮点可重构的横向求和网络结构 |
CN102445606A (zh) * | 2010-09-30 | 2012-05-09 | 上海华建电力设备股份有限公司 | 电力监测终端的功能优化方法 |
CN102033732B (zh) * | 2010-12-17 | 2012-07-18 | 浙江大学 | 基于fpga的高速低延迟浮点累加器及其实现方法 |
CN103176767B (zh) * | 2013-03-01 | 2016-08-03 | 浙江大学 | 一种低功耗高吞吐的浮点数乘累加单元的实现方法 |
US9575725B1 (en) | 2014-03-18 | 2017-02-21 | Altera Corporation | Specialized processing block with embedded pipelined accumulator circuitry |
CN106503796B (zh) * | 2015-10-08 | 2019-02-12 | 上海兆芯集成电路有限公司 | 多运算神经网络单元 |
CN107305485B (zh) * | 2016-04-25 | 2021-06-08 | 中科寒武纪科技股份有限公司 | 一种用于执行多个浮点数相加的装置及方法 |
CN111221496B (zh) * | 2018-11-26 | 2023-06-13 | 北京华航无线电测量研究所 | 一种使用fpga实现浮点数据累加的方法 |
US11188329B1 (en) * | 2020-06-24 | 2021-11-30 | Micron Technology, Inc. | Dynamic precision bit string accumulation |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4866652A (en) | 1987-09-01 | 1989-09-12 | Weitek Corporation | Floating point unit using combined multiply and ALU functions |
US4841467A (en) * | 1987-10-05 | 1989-06-20 | General Electric Company | Architecture to implement floating point multiply/accumulate operations |
JP2693800B2 (ja) | 1988-12-28 | 1997-12-24 | 甲府日本電気株式会社 | 浮動小数点データ総和演算回路 |
JPH03163662A (ja) * | 1989-11-21 | 1991-07-15 | Mitsubishi Electric Corp | 浮動小数点累算器 |
JPH04151729A (ja) * | 1990-09-10 | 1992-05-25 | Mitsubishi Electric Corp | 浮動小数点累算器 |
JPH05197741A (ja) * | 1991-06-06 | 1993-08-06 | Lsi Logic Corp | インターリーブド乗算器累算器 |
US6247036B1 (en) * | 1996-01-22 | 2001-06-12 | Infinite Technology Corp. | Processor with reconfigurable arithmetic data path |
US6446195B1 (en) * | 2000-01-31 | 2002-09-03 | Intel Corporation | Dyadic operations instruction processor with configurable functional blocks |
GB2409074B (en) | 2001-03-14 | 2005-08-03 | Micron Technology Inc | Arithmetic pipeline |
US7080111B2 (en) * | 2001-06-04 | 2006-07-18 | Intel Corporation | Floating point multiply accumulator |
US20030154227A1 (en) | 2002-02-08 | 2003-08-14 | Intel Corporation | Multi-threaded multiply accumulator |
-
2006
- 2006-08-18 US US11/506,349 patent/US7543013B2/en active Active
-
2007
- 2007-08-17 DE DE602007010468T patent/DE602007010468D1/de active Active
- 2007-08-17 KR KR1020097001736A patent/KR101085810B1/ko not_active IP Right Cessation
- 2007-08-17 JP JP2009525707A patent/JP5086348B2/ja not_active Expired - Fee Related
- 2007-08-17 EP EP07814226A patent/EP2057535B1/en not_active Not-in-force
- 2007-08-17 WO PCT/US2007/076242 patent/WO2008022331A2/en active Application Filing
- 2007-08-17 AT AT07814226T patent/ATE487981T1/de not_active IP Right Cessation
- 2007-08-17 CN CN2007800303290A patent/CN101506771B/zh not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200063077A (ko) * | 2018-11-26 | 2020-06-04 | 쥐에스아이 테크놀로지 인코포레이티드 | 대규모 병렬 연관된 승산기-누산기 |
Also Published As
Publication number | Publication date |
---|---|
WO2008022331A3 (en) | 2008-05-22 |
WO2008022331A2 (en) | 2008-02-21 |
US7543013B2 (en) | 2009-06-02 |
CN101506771A (zh) | 2009-08-12 |
EP2057535A2 (en) | 2009-05-13 |
JP2010501938A (ja) | 2010-01-21 |
JP5086348B2 (ja) | 2012-11-28 |
ATE487981T1 (de) | 2010-11-15 |
EP2057535B1 (en) | 2010-11-10 |
US20080046495A1 (en) | 2008-02-21 |
CN101506771B (zh) | 2013-01-02 |
KR101085810B1 (ko) | 2011-11-22 |
DE602007010468D1 (de) | 2010-12-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101085810B1 (ko) | 멀티스테이지 부동 소수점 누산기 | |
KR101566257B1 (ko) | 입력 데이터 값에 따른 결합형 곱셈-덧셈 (fma) 유닛의 전력 소모 절감 | |
US8106914B2 (en) | Fused multiply-add functional unit | |
JP5089776B2 (ja) | 浮動小数点演算のための再構成アレイプロセッサ | |
US5844830A (en) | Executing computer instrucrions by circuits having different latencies | |
KR100955557B1 (ko) | 선택가능 준정밀도를 가진 부동―소수점 프로세서 | |
US7797363B2 (en) | Processor having parallel vector multiply and reduce operations with sequential semantics | |
US6487575B1 (en) | Early completion of iterative division | |
US8046564B2 (en) | Reconfigurable paired processing element array configured with context generated each cycle by FSM controller for multi-cycle floating point operation | |
US8930433B2 (en) | Systems and methods for a floating-point multiplication and accumulation unit using a partial-product multiplier in digital signal processors | |
CN102576302B (zh) | 微处理器及用于微处理器上增强精确度乘积和计算的方法 | |
EP0877315A2 (en) | Data processing circuit | |
WO2000045253A1 (en) | Division unit in a processor using a piece-wise quadratic approximation technique | |
WO2000011546A1 (en) | Method and apparatus for concurrently executing multiplication and iterative operations | |
Hamid et al. | Design of generic floating point multiplier and adder/subtractor units | |
US5805489A (en) | Digital microprocessor device having variable-delay division hardware | |
US6725360B1 (en) | Selectively processing different size data in multiplier and ALU paths in parallel | |
Hsiao et al. | Design of a low-cost floating-point programmable vertex processor for mobile graphics applications based on hybrid number system | |
EP1237070A2 (en) | Denormalization circuit | |
Kumar et al. | FPGA Based Implementation of Pipelined 32-bit RISC Processor with Floating Point Unit | |
Saini et al. | Efficient implementation of pipelined double precision floating point unit on FPGA | |
WO1998006029A1 (en) | Apparatus and methods for execution of computer instructions |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E90F | Notification of reason for final refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20141030 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20150930 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20161028 Year of fee payment: 6 |
|
FPAY | Annual fee payment |
Payment date: 20170929 Year of fee payment: 7 |
|
LAPS | Lapse due to unpaid annual fee |