KR102318494B1 - 곱셈 가산기 - Google Patents

곱셈 가산기 Download PDF

Info

Publication number
KR102318494B1
KR102318494B1 KR1020150001770A KR20150001770A KR102318494B1 KR 102318494 B1 KR102318494 B1 KR 102318494B1 KR 1020150001770 A KR1020150001770 A KR 1020150001770A KR 20150001770 A KR20150001770 A KR 20150001770A KR 102318494 B1 KR102318494 B1 KR 102318494B1
Authority
KR
South Korea
Prior art keywords
value
exponent
range
product
mantissa
Prior art date
Application number
KR1020150001770A
Other languages
English (en)
Other versions
KR20150085471A (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 KR20150085471A publication Critical patent/KR20150085471A/ko
Application granted granted Critical
Publication of KR102318494B1 publication Critical patent/KR102318494B1/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/544Methods 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 for evaluating functions by calculation
    • G06F7/5443Sum of products
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing

Landscapes

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

Abstract

부동 소수점 곱셈 가산 회로(24)는, 곱셈기(26)와 가산기(28)를 구비한다. 결과값과 함께 입력 오퍼랜드 A, B 및 C 모두는 보통의 지수값 범위, 이를테면, IEEE 754 표준과 일치하는 범위를 갖는다. 보통의 지수값 범위보다 낮게 확장되는 확장 지수값 범위로서 상기 곱셈기(26)로부터 상기 가산기(28)에 전달된 곱값. 상기 가산기 내의 시프터(48,50)는, 필요에 따라, 상기 결과값을 다시 상기 보통의 지수값 범위로 돌아가게 하기 위해서 상기 곱의 상기 확장 지수값 범위를 고려할 수 있다.

Description

곱셈 가산기{MULTIPLY ADDER}
본 발명은, 데이터 처리 시스템의 분야에 관한 것이다. 보다 구체적으로, 본 발명은, 데이터 처리 시스템내에서의 곱셈 가산 연산에 관한 것이다.
데이터 처리 시스템에, A+(B*C) 형식의 곱셈 가산 연산을 행하는 연산회로를 제공하는 것이 알려져 있고, 이때 A, B 및 C는 모두 부동 소수점 수다. 입력 오퍼랜드와 출력 결과는, 관련된 부동 소수점 수에 대한 지수값과 가수값을 지정하는 포맷이 일반적으로 예측될 것이다. 그 부동 소수점 수를 표현하는데 사용된 비트의 수는, 주어진 부동 소수점 수 포맷을 지원하는 가능 지수값의 범위를 제약할 것이다. 이러한 부동 소수점 수 포맷이 IEEE 754 표준에 예시되어 있다.
본 발명의 적어도 일부의 예시 실시예들은, 산술 연산 A+(B*C)를 행하기 위한 장치를 제공하되, 여기서, A, B 및 C는 각각 지수 값 범위 내의 지수 값과 가수 값을 갖는 부동 소수점 수이고, 상기 장치는,
곱 가수 값과 곱 지수 값을 갖는 곱한 값을 생성하기 위해 B와 C를 곱셈하는 곱셈기; 및
결과값을 생성하기 위해 A와 상기 곱한 값을 가산하는 가산기를 구비하고,
상기 곱셈기는, 상기 지수값 범위보다 낮은 값으로 확장되는 확장 지수값 범위내의 상기 가산기에 전달된 상기 곱 지수값을 생성하고, 상기 곱셈기는, 상기 곱 지수의 값이 상기 지수값 범위보다 낮을 때, 상기 가산기에 보내진 범위외의 지수 플래그 신호를 생성하고,
상기 가산기는, 상기 확장 지수값 범위내의 상기 곱 지수값을 수신하고, 상기 범위외의 지수 플래그 신호가 상기 곱셈기에 의해 생성되었는지에 따라 상기 곱 지수값을 해석하는 방법을 결정하고, 상기 지수값 범위내의 결과 지수를 갖는 상기 결과값을 생성한다.
본 발명의 적어도 일부의 예시 실시예들은, 산술 연산 A+(B*C)를 행하기 위한 장치를 제공하되, 여기서, A, B 및 C는 각각 지수 값 범위 내의 지수 값과 가수값을 갖는 부동 소수점 수이고, 상기 장치는,
곱 가수 값과 곱 지수 값을 갖는 곱한 값을 생성하기 위해 B와 C를 곱셈하는 곱셈수단; 및
결과 값을 생성하기 위해 A와 상기 곱한 값을 가산하는 가산수단을 구비하고,
상기 곱셈수단은, 상기 지수값 범위보다 낮은 값으로 확장되는 확장 지수값 범위내의 상기 가산수단에 전달된 상기 곱 지수값을 생성하고, 상기 곱셈수단은, 상기 곱 지수의 값이 상기 지수값 범위보다 낮을 때, 상기 가산수단에 보내진 범위외의 지수 플래그 신호를 생성하고,
상기 가산수단은, 상기 확장 지수값 범위내의 상기 곱 지수값을 수신하고, 상기 범위외의 지수 플래그 신호가 상기 곱셈수단에 의해 생성되었는지에 따라 상기 곱 지수값을 해석하는 방법을 결정하고, 상기 지수값 범위내의 결과 지수를 갖는 상기 결과값을 생성한다.
본 발명의 적어도 일부의 예시 실시예들은, 산술 연산 A+(B*C)를 행하는 방법을 제공하되, 여기서, A, B 및 C는 각각 지수값 범위내의 지수값과 가수값을 갖는 부동 소수점 수이고, 상기 방법은,
곱 가수값과 곱 지수값을 갖는 곱한 값을 생성하기 위해 B와 C를 곱셈하는 단계; 및
결과값을 생성하기 위해 A와 상기 곱한 값을 가산하는 단계를 포함하고,
상기 곱셈단계는, 상기 지수값 범위보다 낮은 값으로 확장되는 확장 지수값 범위내의 가산기에 전달된 상기 곱 지수값을 생성하고, 상기 곱셈단계는, 상기 곱 지수의 값이 상기 지수값 범위보다 낮을 때, 범위외의 지수 플래그 신호를 생성하고,
상기 가산단계는, 상기 확장 지수값 범위내의 상기 곱 지수값을 수신하고, 상기 범위외의 지수 플래그 신호가 생성되었는지에 따라 상기 곱 지수값을 해석하는 방법을 결정하고, 상기 지수값 범위내의 결과 지수를 갖는 상기 결과값을 생성한다.
본 발명의 상기 내용, 및 다른 목적들, 특징들 및 이점들은, 첨부도면과 관련지어 읽혀질 아래의 상세한 예시적 실시예들의 설명으로부터 명백할 것이다.
도 1은 곱셈 가산기 회로소자를 구비한 부동 소수점 파이프라인을 갖는 프로세서를 포함하는 데이터 처리 시스템을 개략적으로 도시한 것이고,
도 2는 곱셈 가산기 회로소자와 여러 가지 포인트에서의 데이터 값의 포맷을 개략적으로 도시한 것이고,
도 3은 곱셈기의 일부를 개략적으로 도시한 것이고,
도 4는 가산기의 일부를 개략적으로 도시한 것이며,
도 5는 도 3의 곱셈기의 연산을 개략적으로 설명하는 흐름도다.
본 발명의 적어도 일부의 예시 실시예들에 의해 인식한 것은, 상기 결과 값과 함께 곱셈 가산 연산에 대한 입력 오퍼랜드 A, B 및 C 모두의 지수는 지수값 범위내에 있어도 되지만, 상기 곱셈기와 상기 가산기 사이에서 전달된 상기 곱 지수의 확장 지수값 범위를 사용하는 것이 가능하다는 것이다. 이 확장 지수값 범위는, (보통의) 지수값 범위보다 낮게 확장됨으로써 보통 이하의 부동 소수점 곱값들을 표현하는 방식의 수를 증가시킨다. 따라서, 상기 곱 지수가 (보통의) 지수값 범위내에 들어가도록 상기 곱값을 시프트할 필요가 없어도 되고 그 이후 이러한 시프트를 행하는데 시간도 걸리지 않는다. 이것은, 곱셈 가산 연산을 행하는 속도를 향상시킨다. 그 기술에 의해 안 것은, 상기 가산기는 이미 가산연산의 일부로서 상기 오퍼랜드A와 곱을 정렬하는 시프터를 구비하는 것이 일반적이고 그에 따라서 (보통의) 지수값 범위 밖에 있는 곱 지수로 인해 일어나는 어떠한 추가의 시프트도, 별도의 처리 지연을 일으키지 않고 상기 가산기에서 행해진 시프트 연산 내에서 수용되어도 된다는 것이다.
상기 곱셈기에서 가산기로 전달된 곱한 값은 반올림되지 않아도 된다. 따라서, 곱셈기에서 가산기로 전달된 가수(또는 소수부)는, 입력 또는 출력내에서 상기 가수를 표현하는데 유용하지만, 계산중인 결과내에서 원하는 레벨의 정확도를 달성하는데 필요한 것보다 많은 비트를 포함한다. 이러한 형식의 곱셈 가산 회로소자가, 단일(fused) 곱셈 가산기다.
상기 곱셈기에의 보통이하의 입력 오퍼랜드(즉, 표현될 수 있는 최소의 지수값에 의해, 가수값이 그 가수의 선두에 일반적으로 상정된 선두의 "1"이라기 보다는 한 개 이상의 제로에서 시작하도록 크기를 갖는 부동 소수점 수)를 효율적으로 처리하기 위해서, 일부의 실시예는, 상기 곱셈기가,
B의 가수값에서 선두의 제로의 수의 카운트 값 CLZB를 결정하도록 구성된 제1의 카운트 선두 제로 회로소자;
CLZB가 제로보다 큰 경우 시프트된 B의 가수를 형성하기 위해 CLZB 자리만큼 상기 B의 가수를 왼쪽으로 시프트하도록 구성된 제1 시프터;
C의 가수값에서 선두의 제로의 수의 카운트 값 CLZC를 결정하도록 구성된 제2의 카운트 선두 제로 회로소자; 및
CLZC가 제로보다 큰 경우 시프트된 C의 가수를 형성하기 위해 CLZC 자리만큼 상기 C의 가수를 왼쪽으로 시프트하도록 구성된 제2 시프터를 구비하도록 된 것이다.
일부의 실시예에서, 상기 곱셈기는, 적어도 B의 지수값, C의 지수값, -CLZB 및 -CLZC의 합으로서 상기 곱 지수를 형성하도록 구성되어도 된다. 따라서, 그의 확장 지수값 범위를 갖는 상기 곱 지수값은, B와 C의 가수값에 관해 행해지고 있던 어떠한 왼쪽으로의 시프트도 고려할 수도 있다.
일부의 실시예에서, 오버플로우 값은, B의 가수와 C의 가수의 곱이 계산될 때 상정된 MSB위치로부터 오버플로우를 고려하기 위해 상기 곱 지수에 가산되어도 된다.
상기 가산기는, A의 지수값과 곱 지수에 응답하여, 가산이 행해지기 전에 A의 가수와 상기 곱 가수를 크기에 있어서 정렬하기 위해 A의 가수와 상기 곱 가수 중 적어도 한쪽의 시프트 연산을 행하는 가산기 시프터를 구비하여도 된다. 이 가산기 시프터는, 상기 A의 가수와 상기 곱 가수에 대해 행해질 시프트를 결정할 때 상기 곱 지수의 상기 확장 지수값 범위에 응답한다.
일부의 실시예에서, 상기 곱셈기는, 상기 곱 지수의 값이 (보통의) 지수값 범위보다 낮은 것을 나타내기 위해 상기 가산기에 보내진 범위외의 지수 플래그 신호를 생성하도록 구성된다. 이러한 플래그 신호는, 상기 (보통의) 지수값 범위 밖에 있는 경우 상기 곱 지수를 처리하는데 필요한 임의의 추가의 처리에서 전환하는데 사용되어도 된다.
이러한 사용에 제한되지는 않지만, 본 기술은, IEEE 754 표준에 따른 상기 지수값 범위이고 확장 지수값 범위가 네가티브 지수값을 포함하는 시스템내에서 이용되어도 된다. 표기되는 부동 소수점 수의 정밀도, 예를 들면 단정도 또는 배정도에 따라 특정한 범위가 좌우된다는 것을 알 것이다.
도 1은 프로세서(4)가 메모리(6)에 결합된 형태의 데이터 처리장치(2)를 개략적으로 도시한 것이다. 그 메모리(6)는, 프로그램(8)과 데이터(10)를 기억하고 있다. 그 프로그램(8)은, 상기 프로세서(4)에 의해 실행될 때, 그 데이터(10)를 조작하는 프로그램 명령어들을 포함한다. 그 프로그램 명령어들은, 부동 소수점 프로그램 명령어들을 포함하여도 된다. 이들 부동 소수점 프로그램 명령어들은 곱셈 가산 명령어를 포함할 수도 있다. 그 부동 소수점 명령어들은, 지수값과 가수값으로 이루어진 부동 소수점 수에 관해 동작한다. 이들 값은 IEEE 754 표준에 따라 표기되어도 된다. 그 밖의 부동 소수점 표준을 이용하는 것도 가능하고 또 본 기술은 상기 IEEE 754 표준으로 사용하는데 한정되지 않는다는 것을 알 것이다. 상기 지수가 보통의 지수값 범위내일 때의 가수값은, 그것의 최상위 비트 위치에 암시적 "1"을 포함한다. 이에 따라, 실제로 조작되어 기억된 데이터는 가수의 소수부이고, 선두의 "1"이 상정된다. 상기 지수값이 범위외(지수가 그 최소값)인 보통이하의 수의 경우에, 상기 상정된 선두의 "1"이 없는 대신에 선두의 "0" 값의 변수가 있다. 상기 가수의 선두값을 "0"이라고 상정하고, 그 소수부 값 선두의 제로의 수는 관련된 부동 소수점 수의 효과적인 지수값을 결정하기 위해서 카운트되어도 된다.
도 1의 프로세서(4)는, 로드(load) 스토어 파이프라인(12), 인티저(integer) 파이프라인(14), SIMD 파이프라인(16) 및 부동 소수점 파이프라인(18)으로 이루어진 몇몇의 실행 파이프라인을 구비한다. 페치(fetch) 스테이지(20)에 의해 상기 메모리(6)로부터 인출된 프로그램 명령어들은, 상기 실행 파이프라인 12, 14, 16, 18 중 적절한 파이프라인에 발행되는 발행(issue) 스테이지(22)에 전달된다. 부동 소수점 파이프라인(18)은, 추가로 후술하는 것처럼 부동 소수점 수의 곱셈 가산연산을 행하기 위한 회로소자를 구비한다.
곱셈 가산 연산을 행하는데 걸린 처리 사이클의 수는, 중요한 성능 특징일 수도 있다. 일부의 실시예는, 곱셈 가산 연산을 행하는데 걸린 처리 사이클의 수를 줄이는 것이 바람직할 수도 있다.
도 2는 곱셈기(26)와 가산기(28)를 구비한 곱셈 가산 회로소자(24)를 개략적으로 도시한 것이다. 상기 곱셈 가산 회로소자(24)에의 입력 오퍼랜드들은, A, B 및 C이다. 이들 입력 오퍼랜드 각각은, IEEE 754 표준 포맷을 가짐에 따라서, 관련된 수의 정밀도에 의존한 지수값 범위(즉, 보통의 지수값 범위)를 가질 수도 있다. 곱셈기(26)는 상기 오퍼랜드 B와 C의 곱셈을 행하여 곱한 값을 생성한다. 이 곱한 값은, 상기 오퍼랜드A에 가산되는 상기 가산기(28)에 전달된다. 그 가산기(28)로부터의 출력은, IEEE 754 표준 포맷의 결과 값이다.
본 기술에 따라, 상기 곱셈기(26)로부터 상기 가산기(28)에의 출력(즉, 곱한 값)이, 반올림되지 않은 값이고, 확장 지수값 범위를 갖는다. 이 확장 지수값 범위는, A, B, C 및 결과 값에 이용된 상기 지수값 범위보다 낮게(예를 들면, 네가티브 지수값으로) 확장된다. 상기 곱셈기(26)를 조정하여 상기와 같은 확장 지수값 범위를 갖는 곱을 생성하고 상기 가산기(28)를 조정하여 상기와 같은 확장 지수값 범위를 갖는 상기 곱을 수신하면, 상기 곱셈기(26)와 상기 가산기(28) 사이에서 다시 상기 지수값 범위(보통의 지수값 범위)를 갖는 포맷으로 상기 곱을 어떠한 조작도 할 필요가 없다. 이러한 추가의 조작을 하지 않으면 상기 곱셈 가산 회로소자(24)의 연산속도를 향상시킨다.
도 3은 곱셈기(26)를 개략적으로 도시한 것이다. 3개의 실행 스테이지 E1, E2 및 E3가 있다. 제1 스테이지E1에서, 카운트 선두 제로 회로소자(30, 32)는, 오퍼랜드 B와 C의 가수에서 선두의 제로의 수를 각각 카운트한다. 그리고, 시프터(34, 36, 38)는, 상기 스테이지E1으로부터의 출력을 형성하기 위해 이들의 가수값(그리고, 기저 곱의 보다 큰 및/또는 부호 있는 배수를 가산하는 방법에 필요한 그의 도함수, 예를 들면 Booth 곱셈기)을 시프트한다. 상기 Booth 곱셈 연산이 행해지기 전에 B와 C의 가수를 정렬하기 위해 상기 관련된 가수가 보통이하일 때 왼쪽 시프트가 적용될 것이다. 이 적용된 시프트는, 상기 결정된 카운트 선두 제로 값에 유지되고, 상기 가산기(28)에 전달된 상기 곱 값에 대한 곱 지수값을 형성하는데 사용된다. 특히, 상기 카운트 선두 제로 회로소자(30)는, B의 가수에 대한 카운트 선두 제로값 CLZB를 결정한다. 이 카운트 선두 제로 회로소자(34)는, C의 가수에 대한 카운트 선두 제로값 CLZC를 결정한다.
상기 곱셈기(26)내의 제2 스테이지 E2는, Booth 곱셈을 행하고, 제3 스테이지E3에 공급된 2개의 107비트의 부분 곱값 D와 E를 생성한다.
제3 스테이지 E3은 가산기(40)를 갖는 이들 부분 곱의 비트 가산을 행한다. 그 결과로 얻어지는 곱 가수는, 여기서 설명된 상기 단일 곱셈 가산 회로소자의 연산과 일치하는 것처럼 반올림되지 않은 값이다. 상기 곱 가수는, 무한대, NaN(not-a-number) 또는 실패한 양쪽이 일어나지 않는 조건 코드 등의 예외를 제공하는 곱셈기(26)로부터의 출력이다. 이들 조건 중 어떠한 것도 일어나지 않으면, 그 곱 가수 대신에 곱셈기(26)로부터 특수값이 출력된다.
상기 오퍼랜드 B의 지수값, 상기 오퍼랜드 C의 지수값, CLZB값 및 CLZC값은, 곱셈기(26)에 의해, 확장 지수값 범위를 갖고(보통의 지수값 범위보다 낮게 확장되고) 상기 가산기(28)에 전달되는, 상기 곱 지수값을 형성하는데 사용된다. 곱셈기(26)내의 가산기(42)는, 상기 곱 지수를 형성하도록, 상기 곱 지수가 계산되었을 때 오버플로우가 일어났는지를 나타내는 값과 함께 상기 지수 입력의 합을 행한다. 이렇게 하여 상기 가산기(42)는, B의 지수, C의 지수, -CLZB, -CLZC, 및 오버플로우값의 합을 행한다.
도 4는 3개의 스테이지 E4, E5, E6로 형성된 가산기(28)를 개략적으로 도시한 것이다. 가산기(28)는, 반올림되지 않고 확장 지수값 범위를 갖는 곱셈기(26)로부터의 곱 출력뿐만 아니라 보통의 지수값 범위를 갖는 IEEE 754 표준 포맷으로 입력 오퍼랜드A를 수신한다. 또한, 네가티브 플래그 값NF도, 보통의 지수값 범위로 표기된 것보다 낮은 영역내에 상기 곱 지수가 있는 것을 나타내기 위해 상기 곱셈기(26)와 가산기(28) 사이에서 전달된다. 이 네가티브 플래그는, 보통의 지수값 범위를 포지티브 값이라고 상정할 때 네가티브 값을 표기하는 것과 일치하는 방식으로 상기 곱 지수의조작을 제어하는데 사용되어도 된다.
상기 스테이지 E4내에서, 선두의 제로 예측 회로(44)는, A의 가수와 상기 곱 가수의 합이 선두의 제로를 갖는지를 판정한다. (네가티브 플래그를 포함하는) A에 대한 지수값 및 곱 지수값과 함께 이것은, A의 가수와 곱 가수가 가산되기 전에 A의 가수와 곱 가수에 적용될 시프트를 결정하는 정렬 제어 회로소자(46)에 공급된다.
스테이지 E5내의 시프터(48, 50)는, 결과 가수값을 형성하기 위해 가산기(28)의 스테이지 E6에서 비트 가산기(52)에 공급될 수 있는 A의 정렬된 값과 정렬된 곱 값을 형성하기 위해 상기 정렬 제어 회로소자(46)에 의해 결정된 것처럼 시프트를 적용한다. 상기 시프터(48, 50)는, 상기 확장 지수값 범위를 갖는 곱 지수값에 자신이 응답하는 정렬 제어 회로소자(46)에 의해 제어되는 것을 알 것이다. 따라서, 상기 시프터(48, 50)는, IEEE 754 표준 컴플라이언트 결과값을 생성하는데 필요한 것처럼 상기 결과값을 보통의 지수값 범위로 다시 돌아가게 하는데 필요한 어떠한 필요한 시프트도 행하도록 제어될 수 있다. 추가의 시간 페널티를 야기시키지 않고 상기 가산기(28)내에서 상기 시프터(48, 50)가 행한 시프트에 어떠한 필요한 조정도 할 수 있으므로 상기 곱셈기(26)로부터 가산기(28)에 전달된 곱의 지수값을 상기 IEEE 754 표준 포맷의 보통의 지수값 범위로 다시 돌아가게 할 필요가 없다.
표준 가산기와 비교하여, 본 기술은, 곱 지수가 네가티브 수(즉, 딴 방법으로 큰 지수처럼 보이는 것이 실제로 매우 작은 지수임)로서 취급되는 것을 가리키는 여분의 비트(NF)의 상기 가산기에 보낸다. 상기 정렬 제어 회로소자(46)는, 네가티브 플래그 값 NF를 수신함에 따라서 그 지수값을 취급한다.
도 5는 곱셈기(26)의 연산을 개략적으로 설명하는 흐름도다. 도 5는 연속적으로 일어나는 처리를 도시한 것이다. 실제로, 상기 곱셈기 회로소자(26)는, 병렬 순서나 또는 다른 순서로 여러 가지의 이들 연산을 행하여도 된다. 그 밖의 실시예에서는, "1"들과 "0"들의 역할이 유사한 방식으로 연산하기 위해 본 분야의 것들이 이해하는 방식에 있어서 반대로 되어도 된다는 것도 알 것이다.
단계 54에서는, B 가수에 대한 선두의 제로를 카운트하고, 그에 따라 CLZB의 값을 세트한다. 단계 56에서는, 상기 가수 B에 대한 카운트 선두의 제로 값이 제로보다 큰지를 판정한다. 그 카운트 선두의 제로 값이 제로보다 큰 경우, 단계 58에서는 상기 B 가수를 CLZB값만큼 왼쪽으로 시프트한다. 그 CLZB값이 제로인 경우, 단계 58을 우회한다.
단계 60에서는, C 가수의 선두의 제로를 카운트하고, 그 CLZC값을 세트하는데 사용한다. 단계 62에서는, CLZC값이 제로보다 큰지를 판정한다. 그 CLZC값이 제로보다 큰 경우, 단계 64에서는, 그 CLZC값에 대응한 자리의 수만큼 상기 C가수를 왼쪽으로 시프트한다. 단계 62에서 CLZC값이 제로보다 크지 않다고 판정되면, 단계 64를 우회한다.
단계 66에서는, B 가수와 C가수를 곱셈하여, 오버플로우를 검출한다. 단계 68에서는, B의 지수, C의 지수, -CLZB, -CLZC 및 단계 66에서 오버플로우가 검출되었을 경우의 +1의 값의 합으로서 상기 곱 지수를 형성한다. 그 계산된 곱 지수가 네가티브일 경우, 네가티브 플래그 NF는 가산기(28)에 이것을 신호로 보내도록 세트된다. 단계 70에서는, 상기 가산기(28)에, 상기 곱 가수, 상기 곱 지수 및 상기 네가티브 플래그를 출력한다.
여기에서는 본 발명의 예시적 실시예들을 첨부도면을 참조하여 상세히 설명하였지만, 본 발명은 이들의 구체적인 실시예들에 한정되지 않고, 첨부된 청구항에서 기재된 것과 같은 본 발명의 범위와 사상을 벗어나지 않고 당업자가 여러 가지로 변경 및 변형을 할 수 있다는 것을 알 것이다.

Claims (9)

  1. 산술 연산 A+(B*C)를 행하기 위한 장치로서, 여기서, A, B 및 C는 각각 지수값 범위내의 지수값과 가수값을 갖는 부동 소수점 수이고, 상기 장치는,
    곱 가수값과 곱 지수값을 갖는 곱한 값을 생성하기 위해 B와 C를 곱셈하는 곱셈기; 및
    결과값을 생성하기 위해 A와 상기 곱한 값을 가산하는 가산기를 구비하고,
    상기 곱셈기는, 상기 지수값 범위보다 낮은 값으로 확장되는 확장 지수값 범위내의 상기 가산기에 전달된 상기 곱 지수값을 생성하고, 상기 곱셈기는, 상기 곱 지수의 값이 상기 지수값 범위보다 낮을 때, 상기 가산기에 보내진 범위외의 지수 플래그 신호를 생성하고,
    상기 가산기는, 상기 확장 지수값 범위내의 상기 곱 지수값을 수신하고, 상기 범위외의 지수 플래그 신호가 상기 곱셈기에 의해 생성되었는지에 따라 상기 곱 지수값을 해석하는 방법을 결정하고, 상기 지수값 범위내의 결과 지수를 갖는 상기 결과값을 생성하는, 장치.
  2. 제 1 항에 있어서,
    상기 곱셈기로부터 상기 가산기에 전달된 상기 곱한 값이 반올림되지 않은, 장치.
  3. 제 1 항에 있어서,
    상기 곱셈기는,
    B의 가수값에서 선두의 제로의 수의 제1 카운트 값을 결정하도록 구성된 제1의 카운트 선두 제로 회로소자;
    상기 제1 카운트 값이 제로보다 큰 경우 시프트된 B의 가수를 형성하기 위해 상기 제1 카운트 값과 같은 자리의 수만큼 상기 B의 가수를 왼쪽으로 시프트하도록 구성된 제1 시프터;
    C의 가수값에서 선두의 제로의 수의 제2 카운트 값을 결정하도록 구성된 제2의 카운트 선두 제로 회로소자; 및
    상기 제2 카운트 값이 제로보다 큰 경우 시프트된 C의 가수를 형성하기 위해 상기 제2 카운트 값과 같은 자리의 수만큼 상기 C의 가수를 왼쪽으로 시프트하도록 구성된 제2 시프터를 구비하는, 장치.
  4. 제 3 항에 있어서,
    상기 곱셈기는, 적어도 B의 지수값, C의 지수값, 마이너스 상기 제1 카운트 값 및 마이너스 상기 제2 카운트 값의 합으로서 상기 곱 지수를 형성하도록 구성되는, 장치.
  5. 제 1 항에 있어서,
    상기 가산기는, A의 지수값과 상기 곱 지수에 응답하여, A의 가수와 상기 곱 가수를 크기에 있어서 정렬하기 위해 상기 A의 가수와 상기 곱 가수 중 적어도 한쪽의 시프트 연산을 행하는 가산기 시프터를 구비하는, 장치.
  6. 삭제
  7. 제 1 항에 있어서,
    상기 지수값 범위는 IEEE 754 표준을 따르고, 상기 확장 지수값 범위는 네가티브 지수값을 포함하는, 장치.
  8. 산술 연산 A+(B*C)를 행하기 위한 장치로서, 여기서, A, B 및 C는 각각 지수값 범위내의 지수값과 가수값을 갖는 부동 소수점 수이고, 상기 장치는,
    곱 가수값과 곱 지수값을 갖는 곱한 값을 생성하기 위해 B와 C를 곱셈하는 곱셈수단; 및
    결과값을 생성하기 위해 A와 상기 곱한 값을 가산하는 가산수단을 구비하고,
    상기 곱셈수단은, 상기 지수값 범위보다 낮은 값으로 확장되는 확장 지수값 범위내의 상기 가산수단에 전달된 상기 곱 지수값을 생성하고, 상기 곱셈수단은, 상기 곱 지수의 값이 상기 지수값 범위보다 낮을 때, 상기 가산수단에 보내진 범위외의 지수 플래그 신호를 생성하고,
    상기 가산수단은, 상기 확장 지수값 범위내의 상기 곱 지수값을 수신하고, 상기 범위외의 지수 플래그 신호가 상기 곱셈수단에 의해 생성되었는지에 따라 상기 곱 지수값을 해석하는 방법을 결정하고, 상기 지수값 범위내의 결과 지수를 갖는 상기 결과값을 생성하는, 장치.
  9. 산술 연산 A+(B*C)를 행하는 방법으로서, 여기서, A, B 및 C는 각각 지수값 범위내의 지수값과 가수값을 갖는 부동 소수점 수이고, 상기 방법은,
    곱 가수값과 곱 지수값을 갖는 곱한 값을 생성하기 위해 B와 C를 곱셈하는 단계; 및
    결과값을 생성하기 위해 A와 상기 곱한 값을 가산하는 단계를 포함하고,
    상기 곱셈단계는, 상기 지수값 범위보다 낮은 값으로 확장되는 확장 지수값 범위내의 가산기에 전달된 상기 곱 지수값을 생성하고, 상기 곱셈단계는, 상기 곱 지수의 값이 상기 지수값 범위보다 낮을 때, 범위외의 지수 플래그 신호를 생성하고,
    상기 가산단계는, 상기 확장 지수값 범위내의 상기 곱 지수값을 수신하고, 상기 범위외의 지수 플래그 신호가 생성되었는지에 따라 상기 곱 지수값을 해석하는 방법을 결정하고, 상기 지수값 범위내의 결과 지수를 갖는 상기 결과값을 생성하는, 방법.
KR1020150001770A 2014-01-15 2015-01-07 곱셈 가산기 KR102318494B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1400644.9A GB2522194B (en) 2014-01-15 2014-01-15 Multiply adder
GB1400644.9 2014-01-15

Publications (2)

Publication Number Publication Date
KR20150085471A KR20150085471A (ko) 2015-07-23
KR102318494B1 true KR102318494B1 (ko) 2021-10-28

Family

ID=50238976

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150001770A KR102318494B1 (ko) 2014-01-15 2015-01-07 곱셈 가산기

Country Status (4)

Country Link
US (1) US9696964B2 (ko)
KR (1) KR102318494B1 (ko)
CN (1) CN104778028B (ko)
GB (1) GB2522194B (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9703531B2 (en) * 2015-11-12 2017-07-11 Arm Limited Multiplication of first and second operands using redundant representation
WO2017166026A1 (zh) * 2016-03-28 2017-10-05 武汉芯泰科技有限公司 一种乘加器、乘加器阵列及数字滤波器
US10402168B2 (en) * 2016-10-01 2019-09-03 Intel Corporation Low energy consumption mantissa multiplication for floating point multiply-add operations
CN107168678B (zh) * 2017-05-09 2020-10-27 清华大学 一种乘加计算装置及浮点乘加计算方法
US11200186B2 (en) 2018-06-30 2021-12-14 Intel Corporation Apparatuses, methods, and systems for operations in a configurable spatial accelerator
CN109634558B (zh) * 2018-12-12 2020-01-14 上海燧原科技有限公司 可编程的混合精度运算单元
FR3097992B1 (fr) * 2019-06-25 2021-06-25 Kalray Opérateur d’addition et multiplication fusionnées pour nombres à virgule flottante de précision mixte réalisant un arrondi correct
US11256476B2 (en) 2019-08-08 2022-02-22 Achronix Semiconductor Corporation Multiple mode arithmetic circuit
US11907713B2 (en) 2019-12-28 2024-02-20 Intel Corporation Apparatuses, methods, and systems for fused operations using sign modification in a processing element of a configurable spatial accelerator
CN112558918B (zh) * 2020-12-11 2022-05-27 北京百度网讯科技有限公司 用于神经网络的乘加运算方法和装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110072066A1 (en) * 2009-09-21 2011-03-24 Arm Limited Apparatus and method for performing fused multiply add floating point operation

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5761105A (en) * 1995-09-26 1998-06-02 Advanced Micro Devices, Inc. Reservation station including addressable constant store for a floating point processing unit
US5768169A (en) * 1995-10-02 1998-06-16 Intel Corporation Method and apparatus for improved processing of numeric applications in the presence of subnormal numbers in a computer system
US20070074008A1 (en) * 2005-09-28 2007-03-29 Donofrio David D Mixed mode floating-point pipeline with extended functions
CN100555212C (zh) * 2007-07-18 2009-10-28 中国科学院计算技术研究所 一种浮点乘加器及其乘法csa压缩树的进位校验装置
US8244789B1 (en) * 2008-03-14 2012-08-14 Altera Corporation Normalization of floating point operations in a programmable integrated circuit device
US8291003B2 (en) * 2008-09-09 2012-10-16 International Business Machines Corporation Supporting multiple formats in a floating point processor
US20100125621A1 (en) * 2008-11-20 2010-05-20 Advanced Micro Devices, Inc. Arithmetic processing device and methods thereof
CN102339217B (zh) * 2010-07-27 2014-09-10 中兴通讯股份有限公司 一种浮点数乘加器融合处理装置及方法
US8965945B2 (en) * 2011-02-17 2015-02-24 Arm Limited Apparatus and method for performing floating point addition
US8838664B2 (en) * 2011-06-29 2014-09-16 Advanced Micro Devices, Inc. Methods and apparatus for compressing partial products during a fused multiply-and-accumulate (FMAC) operation on operands having a packed-single-precision format

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110072066A1 (en) * 2009-09-21 2011-03-24 Arm Limited Apparatus and method for performing fused multiply add floating point operation

Also Published As

Publication number Publication date
KR20150085471A (ko) 2015-07-23
US9696964B2 (en) 2017-07-04
GB201400644D0 (en) 2014-03-05
GB2522194B (en) 2021-04-28
CN104778028A (zh) 2015-07-15
CN104778028B (zh) 2019-06-07
GB2522194A (en) 2015-07-22
US20150199173A1 (en) 2015-07-16

Similar Documents

Publication Publication Date Title
KR102318494B1 (ko) 곱셈 가산기
KR102447636B1 (ko) 부동 소수점 수를 누산하기 위한 산술 연산을 수행하는 장치 및 방법
JP4418578B2 (ja) 第1、第2、第3オペランドに浮動小数点演算を適用するためのデータ処理装置および方法
EP3374853A1 (en) Multiplication of first and second operands using redundant representation
WO2016071668A1 (en) Vector operands with elements representing different bit portions of an integer
JP2004213622A (ja) 固定小数点表示と浮動小数点表示との間で数を変換するデータ処理装置および方法
CN107025091B (zh) 二进制融合乘加浮点计算
JP6415236B2 (ja) 浮動小数点加算ユニットを含む装置及びシステム、並びに浮動小数点加算方法
CN106250098B (zh) 用于在执行浮点运算时控制舍入的装置及方法
CN111492343A (zh) 浮点乘法运算处理的系统和方法
JP2018535476A (ja) 浮動小数点数の丸め処理
CN104899004A (zh) 一种用于将浮点操作数相乘的数据处理装置和方法
WO2017081435A1 (en) Lane position information for processing of vector
WO2017081434A1 (en) Redundant representation of numeric value using overlap bits
KR102412746B1 (ko) 부동 소수점 제곱근 연산 장치 및 방법
JP4476210B2 (ja) 逆数演算の結果値の初期推定値を求めるデータ処理装置および方法
US10331407B2 (en) Tiny detection in a floating-point unit
KR102208274B1 (ko) 특히 함수 모델을 순수 하드웨어에 기초하여 연산하기 위한 함수 모델 유닛 내에서 사용하기 위한 fma 유닛
WO2017081436A1 (en) Overlap propagation operation
GB2549153A (en) Apparatus and method for supporting a conversion instruction
JP2010218197A (ja) 浮動小数点積和演算装置、浮動小数点積和演算方法、及び浮動小数点積和演算用プログラム
US8041927B2 (en) Processor apparatus and method of processing multiple data by single instructions
US8244783B2 (en) Normalizer shift prediction for log estimate instructions
CN111124361A (zh) 算术处理装置及其控制方法
JPH01282633A (ja) 非正規化数の処理方式

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right