KR100958224B1 - 사전-포화 고정-소수점 곱셈기 - Google Patents

사전-포화 고정-소수점 곱셈기 Download PDF

Info

Publication number
KR100958224B1
KR100958224B1 KR1020087020038A KR20087020038A KR100958224B1 KR 100958224 B1 KR100958224 B1 KR 100958224B1 KR 1020087020038 A KR1020087020038 A KR 1020087020038A KR 20087020038 A KR20087020038 A KR 20087020038A KR 100958224 B1 KR100958224 B1 KR 100958224B1
Authority
KR
South Korea
Prior art keywords
operands
multiplier
overflow
multiplication operation
value
Prior art date
Application number
KR1020087020038A
Other languages
English (en)
Other versions
KR20080089640A (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 KR20080089640A publication Critical patent/KR20080089640A/ko
Application granted granted Critical
Publication of KR100958224B1 publication Critical patent/KR100958224B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • 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/49921Saturation, i.e. clipping the result to a minimum or maximum value
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • 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
    • G06F7/523Multiplying only
    • G06F7/533Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
    • 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
    • G06F7/523Multiplying only
    • G06F7/533Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
    • G06F7/5334Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product
    • G06F7/5336Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product overlapped, i.e. with successive bitgroups sharing one or more bits being recoded into signed digit representation, e.g. using the Modified Booth Algorithm
    • G06F7/5338Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product overlapped, i.e. with successive bitgroups sharing one or more bits being recoded into signed digit representation, e.g. using the Modified Booth Algorithm each bitgroup having two new bits, e.g. 2nd order MBA

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Complex Calculations (AREA)
  • Executing Machine-Instructions (AREA)
  • Processing Of Color Television Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Picture Signal Circuits (AREA)

Abstract

사전-포화(pre-saturating) 곱셈기가 임의의 곱셈을 수행하기 전에 곱셈 연산에 대한 피연산자(operand)들을 조사한다. 상기 피연산자들이 포화를 요구하는 오버플로(overflow)를 야기할 것이라면, 곱셈기는 본래의 피연산자들을 곱하지 않고 포화된 값을 출력한다. 일 실시예로, 상기 피연산자들로부터 유도되는 파라미터들은 곱셈 연산이 변경된 파라미터들에 수행될 때, 곱셈기가 포화된 결과를 산출하도록 변경된다. 이는 부분 적(product)으로서 영 대신 음의 영(negative zero)을 선택하도록 부스 리코딩(Booth recode)된 비트 그룹을 변경하는 단계, 및 상기 부분 적들에 대한 값 일(one)의 가산을 억제(따라서 상기 값 일을 효과적으로 차감)하는 단계를 포함할 수 있다. 다른 실시예로, 오버플로를 야기할 피연산자들이 검출될 때, 곱셈기의 출력은 미리 결정된 포화 값으로 강제된다.

Description

사전-포화 고정-소수점 곱셈기{PRE-SATURATING FIXED-POINT MULTIPLIER}
본 발명은 일반적으로 디지털 회로들의 분야 그리고 특정하게는 사전-포화, 고정-소수점 곱셈기에 관한 것이다.
고정-소수점(fixed-point) 곱셈은 프로세서들과 같은, 디지털 계산 회로들에 의해 수행되는 기본적인 산술 연산이다. 대부분의 프로세서 명령 세트 구조들은 다양한 고정-소수점 곱셈 명령들을 포함한다. 고정-소수점 곱셈의 공지된 위험성은 일부 조건들 하에서(여기서 더 완전히 기재되는 바와 같이), 적(product)이, 오버플로(overflow)로 알려진 상황인, 이용가능한 비트 폭으로 나타내어질 수 있는 수 값(numeric value)을 초과할 수 있다는 것이다. 이 경우, 상기 적의 상당한 잘못된 표현(misrepresentation)을 회피하기 위해, 곱셈 명령(instruction)은 "포화된(saturated)" 출력을 규정할 것이며, 이는 가용 비트 필드에서 표현될 수 있는 최대 수 값, 사실상, 실제 적에 가능한 가장 가까운 근사(approximation)이다. 이는 포화 고정-소수점 곱셈 명령(saturating fixed-point multiply instruction)으로 알려져 있다. 그러한 명령들은 일반적으로 피연산자들의 비트 폭의 두배인 상기 적에 대한 비트 폭을 규정한다.
정수 및 소수(fraction) 값들 모두가, 이용되는 협약(convention)에 따라, 고정-소수점 디지털 형태로 표현될 수 있다. 흔히 모든 현대 프로세서들은 2(two)의 보수(complement) 포맷을 이용하여 고정-폭 디지털 표현(representation)들로 양 및 음의 정수들을 표현한다. 상기 2의 보수 포맷이 통상적이다. 2의 보수 표현에서, 정수들은 "부호화된다(signed)". 즉, 정수가 양 또는 음인지 여부는 최상위 비트(Most Significant Bit, MSB), 즉 "부호 비트(sign bit)"의 검사에 의해 결정될 수 있다. 추가적으로, 2의 보수 표현에서, 부호화된 정수들에 대한 이진 산술 연산들은 정확한 2의 보수 결과들을 산출한다.
양의 2의 보수들은, 영(zero) 부호 비트를 갖는, 간소한 이진 형태로 표현된다. 결과적으로, 2의 보수 포맷으로 표현될 수 있는 가장 큰 양수는 2n-1이며, 여기서 n은 디지털 표현의 비트 폭이다. 음의 2의 보수들은 동일한 크기의 양의 수에 가산될 때 영이 되는 이진 수로서 표현된다. 음의 2의 보수들은 1의 부호 비트를 갖는다. 상기 음수들의 2의 보수 표현이 디지털 표현의 모든 n개의 비트들을 활용할 수 있기 때문에, 2의 보수 포맷으로 표현될 수 있는 가장 큰 음수는 2n-1이며, 이는 상기 최대 양의 2의 보수보다 크기에 있어서 일(one)만큼 더 크다. 따라서, 예를 들어, 32-비트 필드로 표현될 수 있는 부호화된 정수 값들의 범위는 -231 (0x8000 0000) 내지 +231-1(0x7FFF FFFF)이다.
임의의 2의 보수의 부정(negation)은 비트-마다(bit-wise) 상기 수를 반전(invert)시키고(1의 보수를 산출한다), 그리고 일(one)을 가산함으로써 형성될 수 있다. 그러므로, 음수의 2의 보수 표현을 계산하는 한 가지 방법은 대응하는 양수의 이진 표현을 반전시키고(이는 상기 양수의 1의 보수 형태이다) 1을 가산하는 것이다. 부정을 위한 본 알고리듬에 대한 유일한 예외는 표현될 수 있는 것보다 가장 큰 음수이다. 상기 수에 대한 2의 보수 부정을 수행하는 것은 동일한 수를 가져오며, 이는 오버플로 오류이다. 또한 영(zero)의 2의 보수를 부정(negate)하는 것은 영(zero)을 산출한다 - 모든 비트들을 반전시키는 것은 모두 일(one)들을 산출하며, 1을 가산하는 것은 영을 산출한다(자리올림(carry) 출력이 폐기될 때).
소수(fractional) 값들은 소위 Q 포맷 기수법(notation)을 이용하여 고정-폭 디지털 형태로 표현될 수 있다. Qn.x 포맷 기수법에서, 어떠한 값의 비트들은: 하나의 부호(sign) 비트, n개의 정수 비트들 및 x개의 소수 비트들로서 해석된다. 디지털 신호 처리에 대한 공통 Q 포맷은 하나의 부호 비트가 존재하고, 정수 비트들이 없으며 x개의 소수 비트들이 존재함을 지시하는 Q0.x(또는 단순히 Q.x)이다. Q.31 기수법의 수는 32비트로 표현될 것이며 -1 (0x8000 0000) 내지 1-2-31(ox7FFF FFFF)의 범위의 값들을 가질 것이다.
Q 포맷의 수들을 곱할 때, 이진 포인트(binary point)를 참작하는 것이 중요하다. 예를 들어, Q.15를 Q.15 번 곱하는 것은 Q2.30의 결과를 가져올 것이다. 그러나, 상기 값을 Q.x 포맷으로 유지하는 것이 바람직하다. 이를 처리하기 위해, 상기 곱 연산들은 2의 인수(factor)에 의한 곱셈을 포함한다 - 이는 좌측 시프트 연산(left shift operation)에 상당하다 - 그리하여 Q.31 결과를 생성한다. 2개의 n-비트 값들을 함께 곱하는 것은 항상 2n 개의 비트들로 표현될 수 있는 값을 산출할 것이다. 본 적(product)을 두배(double)하는 것은 하나를 제외한 모든 경우에서 2n 개의 비트들로 표현될 수 있는 값을 생성할 것이다: 최대 음의 값. 2의 보수의 상기 최대 음의 값은 모든 다른 비트들이 영인 하나의 부호 비트(MSB)이다. 상기 값을 좌측으로 시프트하는 것은 오버플로를 가져온다.
32-비트 적을 생성하기 위해 2개의 16-비트 피연산자들의 다음 곱셈이 한 가지 예시이다. 상기 피연산자들 각각은 음(1의 부호 비트)이며, 이들의 적은 양수이어야 한다.
0x8000 x 0x8000 = 0x4000 0000 곱셈(Multiplication)
0x4000 0000 x 0x2 = 0x8000 0000 두배(Doubling)(부정확한 결과; 양이어야 함)
0x8000 0000 - 1 = 0x7FFF FFFF 포화된 결과(가장 큰 양의 값)
본 예시에서, 상기 두 개의 피연산자들은 각각 2의 보수 포맷으로 16비트로 표현될 수 있는 가장 큰 음수이다. 이들의 적은 큰 양의 값을 산출하여야 한다. 그러나, 상기 두배(doubling) 곱셈 명령의 실제 결과는 가장 큰 음의 값이다. 그러므로, 0x7FFFFFFF의 포화 값을 얻기 위해 이 값으로부터 '1'이 차감(subtract)되어야만 한다 - 다른 비트 위치들에서 모두 일(one)들인 영 부호 비트.
종래의 포화 곱셈기들은 상기 곱셈이 수행된 후에만 오버플로 상태를 검출하며, 그리고 나서 출력을 포화시킴으로써 상기 오버플로 상태를 정정하는 단계들을 밟아야만 한다. 일부 구현들에서, 이는 예외를 야기시킴으로써와 같이, 프로세서를 정지(halt)시킬 것을 요구할 수 있다. 이는 프로세서 성능에 불리한 영향을 미치며 전력 소모를 증가시킨다. 오버플로가 하드웨어에서 포화되는 경우에조차, 상기 곱셈이 완료된 후에 그렇게 하는 것은 성능에 불리하게 영향을 미친다.
하나 이상의 실시예들에 따르면, 사전-포화 곱셈기는 임의의 곱셈을 수행하기 전에 곱셈 연산에 대한 피연산자들을 검사한다. 상기 피연산자들이 포화를 요구하는 오버플로를 야기할 것이라면, 상기 곱셈기는 상기 피연산자들을 곱하지 않고 포화된 값을 출력한다.
일 실시예로, 상기 피연산자들로부터 유도되는 파라미터들은 상기 곱셈 연산이 변경되는 파라미터들에 수행될 때, 상기 곱셈기가 포화된 결과를 생성하도록 변경된다. 이는 부분 적(product)으로서 영 대신 음의 영을 선택하도록 부스 리코딩된 비트 그룹을 변경하는 것과, 값 1을 상기 부분 적들에 가산하는 것을 억제(따라서 효과적으로 값 1을 차감함)하는 것을 포함할 수 있다. 다른 실시예로, 오버플로를 야기할 피연산자들이 검출될 때, 상기 곱셈기의 출력은 미리 결정된 포화 값으로 강제된다.
일 실시예는, 승수(multiplier) 및 피승수(multiplicand)를 포함하는, 적어도 하나의 알려진 피연산자들의 세트가 포화를 필요로하는 오버플로를 야기할 고정 소수점 포화 곱셈 연산(fixed point saturating multiply operation)을 수행하는 방법에 관한 것이다. 오버플로를 야기할 피연산자들이 임의의 곱셈 연산을 수행하기에 앞서 검출되며, 포화된 결과는 상기 피연산자들을 곱하지 않고 출력된다.
다른 실시예는, 승수 및 피승수를 포함하는, 두 개의 피연산자들을 곱하고, 그리고 이들의 적을 출력하도록 동작하는 곱셈기 회로를 포함하는 사전-포화 곱셈기에 관한 것이다. 또한 상기 사전-포화 곱셈기는 곱셈기 회로에서 오버플로를 야기할 피연산자들을 검출하도록 동작하는 오버플로 사전-검출 회로를 포함한다.
도 1은 일 실시예에 따른 사전-포화 곱셈기의 기능 블록도이다.
도 2는 다른 실시예에 따른 사전-포화 곱셈기의 기능 블록도이다.
도 3은 사전-포화 곱셈 연산을 수행하는 방법의 흐름도이다.
곱셈기는 곱셈이 수행된다면 오버플로 상태(condition)를 야기할 곱셈 연산에 대한 피연산자들을 검출한다. 본 검출에 응답하여, 상기 곱셈기는 포화된(saturated) 값을 출력한다. 일 실시예로, 상기 곱셈기는 곱셈 연산이 적(product)으로서 포화된 값을 산출할 그러한 방식으로 상기 피연산자들을 변경(alter)함으로써 상기 포화된 값을 출력한다. 도 1은 본 실시예에 따른 사전-포화 곱셈기(40)를 나타낸다. GPR 레지스터(42)는 승수(multiplier, MR) 및 피승수(multiplicand, MD) 피연산자들을 포함한다. 상기 승수는 부스 리코더(Booth recoder) 회로(44)에 대한 입력이다.
부스 리코딩(recoding)(종종 수정된 부스 리코딩으로 지칭됨)은 곱셈 연산을 수행하는데 있어서 가산될 부분 적(product)들의 수를 감소시키기 위한 기술이다. 상기 피승수의 각 비트를 고려하여 상기 피승수 또는 영(zero) 중 하나를 포함하는 대응하는 시프트된 부분 적을 생성하기 보다, 상기 승수 비트들은 그룹(group)들로 고려되며, 상기 피승수의 +/- 배수들을 포함하는 시프트된 부분 적들이 가산된다. 본 기술은 가산될 부분 적들의 수를 감소시킨다. 예를 들어, radix-4 부스 리코딩에서, 상기 승수 비트들은, 이전 그룹(상기 제 1 그룹에 영(zero)이 추가됨))의 MSB와 함께, 2의 그룹들로 고려된다. 그리고 나서 부분 적들이, 다음의 표에 따라, 상기 비트 그룹들의 값에 기초하여 생성된다:
비트 그룹(Bit Group) 부분 적(Partial Product)
000 0
001 1 x 피승수
010 1 x 피승수
011 2 x 피승수
100 -2 x 피승수
101 -1 x 피승수
110 -1 x 피승수
111 0
표 1: Radix-4 부스 리코딩
상기 승수에서 각각의 부스 리코딩되는 비트 그룹에 대해, 피승수는 상기 지시되는 인수에 의해 곱해지며, 그 결과적인 부분 적은 상기 승수(multiplier) 내부의 비트 그룹의 위치로 시프트된다. 그리고 나서 상기 부분 적들이 합산되어 상기 적을 산출한다. 부호화된(signed) 값들을 곱할 때, radix-4 부스 리코딩은 부분 적들의 수를 최대 절반까지 감소시킬 수 있다.
본 구현에서, 부스 리코더(44)의 출력들은 부스 멀티플렉서(Booth multiplexer)(48)들을 통해 월리스 트리(Wallace Tree)(50)에 대한 부분 적들을 선택한다. 상기 부스 멀티플렉서(48)는 시프트/반전 논리(shift/invert logic)(49) 로부터 적절히 수정된 피승수를 선택하며, 각 mux(48)는 상기 곱셈기에서 상기 리코딩된 비트 그룹 위치로 정렬(align)된다. 시프트/반전 논리(49)는 다음과 같이 표 1에 규정되는 수정된 피승수들을 생성한다:
0은 피승수 비트들에 대해 모든 영(zero)들을 대체한다;
x1은 피승수 비트들을 직접 통과(pass)시킨다;
x2는 피승수 비트들을 1 비트 위치만큼 좌측-시프트(left-shift) 시킨다; 그리고
부정(negation)은 상기 피승수, 시프트된 피승수, 또는 영 값에 비트마다(bit-wise)의 반전(1의 보수(one's compliment)을 수행한다.
상기 부정은 월리스 트리(50) 내의 부분 적들에 LSB에서 '1'이 가산될 때까지 완전하지 않음에 유의하라(부정에 대한 2의 보수 규칙마다: 1의 보수 +1). 월리스 트리(50)는 상기 부분 적들을 합산하여, 합(sum)과 자리올림(carry)을 출력하며, 이들은 자리올림 전파 가산기(carry propagate adder)(52)에서 가산되고, 상기 적은 54에서 래칭(latch)된다. 당해 기술분야에서 통상의 지식을 가진 자는 상기 부스 리코더의 출력 및 상기 부스 멀티플렉서(48)의 출력(또는 피승수 값)이 파이프라이닝(pipelining)을 허용하도록 래칭될 수 있음을 알 것이다.
오버플로 검출 회로(56)는 각각의 곱셈 동작의 시작에서 상기 승수 및 피승수를 모니터링하여, 포화를 요구하는 오버플로를 야기할 피연산자들의 값을 검출한다. 임박한(pending) 오버플로가 검출될 때, 오버플로 검출 회로(56)는, 상기 곱셈 동작이 적에 대한 포화된 값을 산출할 방식으로, 상기 부분 적들의 합산을 변경 하도록 부스 리코더(44)에 신호를 보낸다(signal). 이는 제한된 수의 피연산자들이 오버플로를 야기할 것이며, 이러한 피연산자들이 사전에 알려지기 때문에 가능하다.
특히, 일 실시예로, 상기 승수 및 피승수 모두가 가장 큰 음의 값을 포함하는 경우만 포화를 요구하는 오버플로를 야기할 것이다. 이 조건이 검출될 때, 오버플로 검출 회로(56)는 부스 리코딩을 변경하도록 부스 리코더(44)에 신호를 보낸다. 응답적으로, 상기 부스 리코더(44)는 최하위(least significant) 부스 리코딩된 비트 그룹(Booth recoded bit group)을 수정하여(이는, 000의 값을 가지며, 통상 영(zero)을 선택할 것이다) 음의 영(negative zero)을 선택한다. 시프트/반전 논리(49)는 영의 1의 보수(one's compliment)(즉, 모두 일(one)들)를 제공하며, 월리스 트리(50)에게 상기 부분 적들에 '1'을 가산하도록 신호(signal)한다. 오버플로 검출 회로(56)는 추가적으로 상기 월리스 트리(50)에 억제 신호(suppression signal)를 보내어 상기 영의 부정(negation)에 관련되는 '1'을 가산하는 것을 억제한다(파이프라이닝된 구현에서, "억제 +1(suppress +1)"신호가 래칭될 것임에 유의하라). 따라서, 영(zero)의 부호-연장된(sign-extended) 1의 보수(0xFFFF FFFF)가 부분 적으로서 가산되지만, 상기 대응하는 '1'은 상기 결과로부터 '1'을 효과적으로 차감(subtract)하지 않는다. 예를 들어:
0x8000 x 0x8000 = 0x40000000 두 개의 최대 음의 값들의 곱
0x40000000 x 0x2 = 0x80000000 두배(doubling)
0x80000000 + 0xFFFFFFFF = 0x7FFFFFFF 포화된 결과(효과적으로 '1'을 차감)
본 포화된 결과는 자리올림 전파 가산기(carry propagate adder)(52)에 의해 출력되며, 54에서 적(product)으로서 래칭된다. 본 실시예에 따라, 곱셈 연산을 포화시키는 타이밍은 오버플로를 야기하지 않으며 따라서 포화를 요구하지 않는 피연산자들에 대해서와 동일하다. 특히, 곱셈기(40)의 출력에 지연이 추가되지 않는다. 그러므로, 본 실시예는 곱셈 연산의 타이밍이 중요하고, 곱셈기(40) 출력에서 추가적인 지연이 허용되지 않을 수 있는 경우에 특별한 적용가능성을 찾을 수 있다.
도 2는 사전-포화 곱셈기(40)의 다른 실시예를 나타내며, 여기서 관련되는 구성요소들이 그에 따라 번호매겨진다. 본 실시예에서, 오버플로 검출 회로(56)는, 포화를 요구하는 오버플로를 야기할 알려진 피연산자들을 검출하는, 승수 및 피승수를 모니터링한다. 이러한 피연산자들이 검출될 때, 상기 오버플로 검출 회로(56)는 곱셈기(40) 적 출력에 대한 포화된 결과를 대체하는 신호를 출력한다. 예를 들어, 상기 오버플로 검출 회로(56)는 멀티플렉서(60)로 하여금 자리올림 전파 가산기(52)의 출력 대신 미리 결정된 포화 출력을 선택하도록 감독하는 멀티플렉서 선택 신호를 출력할 수 있다. 상기 미리 결정된 포화 출력은 하드웨어-내장(hard-wired) 값(즉, 고(high) 또는 저(low) 전압 레일(rail)들에 결속되는 비트 위치들을 갖는)을 포함할 수 있거나, 또는 대안적으로 레지스터와 같은 스토리지 위치의 출력을 포함할 수 있다. 복수의 피연산자들이 상이한 포화 값들을 요구하는 오버플로를 야기할 수 있는 실시예로, 오버플로 검출 회로(56)는 멀티-비트 멀 티플렉서 선택 신호를 출력할 수 있으며, 이는 복수의 미리 결정된 포화 값들 및 가산기(52)의 출력 중에서 선택한다. 상기 오버플로 검출 회로(56) 출력은 파이프라이닝된 구현에서 래칭될 수 있다.
본 실시예에서, 곱셈 연산이 억제되어(즉, 부스 리코더(44), 논리 블록(49), 월리스 트리(50), 자리올림 전파 가산기(52), 및 다른 곱셈기 회로들이 불능화될 수 있다) 전력 소모를 감소시킬 수 있다. 대안적으로, 상기 피연산자들의 곱셈은, 곱셈기(40)를 통해 진행될 수 있으며, 그 결과는 포화된 결과가 54에서 대신 래칭됨에 따라, 단순히 폐기(discard)될 수 있다. 본 실시예에서 멀티플렉서(60)의 지연이 상기 곱셈기(40)에 의해 수행되는 모든 곱셈 연산에 추가된다(비록 이러한 지연이 기존 멀티플렉서의 이용되지 않는 레그(leg)를 이용하거나, mux-latch를 이용하거나, 또는 당해 기술분야에 공지된 다른 기술들에 의해 완화될 수 있을지라도). 오버플로 조건이 매우 조기에 결정되며, 포화 값을 선택하는 결정은 주경로(critical path)의 일부가 아니다.
도 3은 피연산자들의 적어도 하나의 알려진 세트가 포화를 요구하는 오버플로를 야기할 고정-소수점 포화 곱셈 연산을 수행하는 방법을 도시한다. 초기에(즉, 임의의 곱셈을 수행하기 전에), 상기 피연산자들이 조사된다(블록(70)). 상기 피연산자들은 오버플로를 야기할 알려진 값들에 비교된다(블록(72)). 예를 들어, 일부의 경우, 피연산자들 모두가 피연산자 비트 필드(operand bit field) 내에서 표현될 수 있는 최대 음의 값을 포함한다면, 오버플로가 발생할 것이다. 상기 피연산자들을 곱하는 것이 오버플로를 야기하지 않을 것이라면(블록(72)), 상기 곱 셈이 수행되며 그 결과들이 출력된다(블록(74)). 상기 피연산자들을 곱하는 것이 포화를 요구하는 오버플로를 가져올 것이라면(블록(72)), 하나 이상의 실시예들에 따라, 포화된 결과가 본래의 피연산자들을 곱하지 않고 출력된다(블록(76)).
일 실시예로, 이는 변경되는 파라미터들에 대한 곱셈 연산을 수행하는 것이 곱셈 연산의 적으로서 포화된 값을 산출하는 방식으로 상기 피연산자들로부터 발생되는 파라미터들을 변경하는 단계를 포함한다. 다른 실시예로, 포화된 결과를 출력하는 단계는 상기 곱셈 연산으로부터의 적 대신 미리 결정된 포화 값을 출력으로서 선택하는 단계를 포함한다.
두 실시예들 모두에서(즉, 도 1 및 2에 도시된 것들), 오버플로를 야기할 피연산자들이 조기에 검출되며, 곱셈기(40)는 포화된 결과를 직접 출력한다. 이는 단지 상기 적을 검사함으로써 오버플로를 검출하고, 그리고 이후에 상기 적에 대한 포화된 값을 대체시키는 종래의 방법론에 비해 현저한 성능 개선 및 전력 절감을 나타낸다. 여기 개시되는 하나 이상의 실시예들에 따른 곱셈기(40)는 특히 고-속 프로세서들, 및/또는 배터리-전원공급 휴대용 전자 장치들과 같이, 저 전력 소모가 중요한 요소인 프로세서들에 특히 적합하다.
본 진보적 개념들이 특정한 특징들, 양상들 및 이들의 실시예들에 관련하여 여기에 기재되었을지라도, 수많은 변형들, 수정들 및 다른 실시예들이 본 제시사항의 광범위한 범위 내에서 가능함은 명백할 것이다. 그러므로 본 실시예들은 설명적인 것으로서 모든 양상들에 있어서 해석되어야 하고 제한적인 것으로 해석되어서는 안되며 첨부된 청구의 범위들의 의미와 균등의 범의 내에 따르는 모든 변경들은 이들에 포함되는 것이다.

Claims (15)

  1. 승수(multiplier) 및 피승수(multiplicand)를 포함하는, 피연산자(operand)들의 적어도 하나의 알려진 세트가 포화(saturation)를 요구하는 오버플로(overflow)를 야기할 고정 소수점 포화 곱셈 연산(fixed point saturating multiply operation)을 수행하는 방법으로서:
    임의의 곱셈 연산을 수행하기 전에 오버플로를 야기할 상기 피연산자들을 검출하는 단계; 및
    상기 피연산자들을 곱하지 않고 포화된(saturated) 결과를 출력하는 단계를 포함하는 고정 소수점 포화 곱셈 연산을 수행하는 방법.
  2. 제 1 항에 있어서,
    오버플로를 야기할 상기 피연산자들은 상기 피연산자 비트 필드(operand bit field)에 표현될 수 있는 가장 큰 음수(negative number)들인, 고정 소수점 포화 곱셈 연산을 수행하는 방법.
  3. 제 1 항에 있어서,
    곱셈 연산이 상기 포화된 결과를 발생시키도록 상기 피연산자들로부터 유도되는 하나 이상의 파라미터들을 조정(adjust)하는 단계; 및
    상기 조정된 파라미터들을 이용하여 곱셈 연산을 수행하는 단계를 더 포함하 는 고정 소수점 포화 곱셈 연산을 수행하는 방법.
  4. 제 3 항에 있어서,
    상기 피연산자들로부터 유도되는 하나 이상의 파라미터들을 조정하는 단계는 상기 승수(multiplier)로부터 유도되는 하나 이상의 부스 리코딩된 비트 그룹(Booth recoded bit group)들을 변경(alter)하는 단계를 포함하는, 고정 소수점 포화 곱셈 연산을 수행하는 방법.
  5. 제 4 항에 있어서,
    부스 리코딩된 비트 그룹을 변경하는 단계는 부스 리코딩된 비트 그룹의 선택을 영에서 음의 영(negative zero)으로 변경하는 단계 및 상기 피연산자로부터 유도되는 부분 적(partial product)들로의 값 1의 가산(addition)을 억제(suppress)하는 단계를 포함하는, 고정 소수점 포화 곱셈 연산을 수행하는 방법.
  6. 제 3 항에 있어서,
    상기 피연산자들로부터 유도되는 하나 이상의 파라미터들을 조정하는 단계는 음의 값 1(negative one)을 상기 피연산자들로부터 유도되는 부분 적들에 가산(add)하는 단계를 포함하는, 고정 소수점 포화 곱셈 연산을 수행하는 방법.
  7. 제 1 항에 있어서,
    상기 포화된 결과를 출력하는 단계는 상기 곱셈 연산의 적(product)에 관계없이 곱셈 연산의 출력을 포화된 결과로 강제(force)하는 단계를 포함하는, 고정 소수점 포화 곱셈 연산을 수행하는 방법.
  8. 제 7 항에 있어서,
    상기 곱셈 연산의 출력을 포화된 결과로 강제하는 단계는 오버플로를 야기할 상기 피연산자들의 검출에 응답하여 상기 곱셈 연산 출력과 상기 포화된 결과 사이에서 선택하는 단계를 포함하는, 고정 소수점 포화 곱셈 연산을 수행하는 방법.
  9. 승수(multiplier)와 피승수(multiplicand)를 포함하는, 두 개의 피연산자들을 곱하고, 그리고 이들의 적(product)을 출력하도록 동작하는 곱셈기 회로; 및
    상기 곱셈기 회로에서 오버플로를 야기할 피연산자들을 검출하도록 동작하는 오버플로 사전-검출 회로(overflow pre-detect circuit)를 포함하는 사전-포화 곱셈기(pre-saturating multiplier).
  10. 제 9 항에 있어서,
    상기 오버플로 사전-검출 회로는 상기 피연산자 비트 필드들에서 표현될 수 있는 가장 큰 음의 값들을 검출하는, 사전-포화 곱셈기.
  11. 제 9 항에 있어서,
    상기 곱셈기 회로는 상기 승수를 비트 그룹(bit group)들로 리코딩(recode)하도록 동작하는 부스 리코더(Booth recoder)를 포함하고, 각각의 비트 그룹은 상기 피승수의 양 또는 음의 배수를 부분 적(partial product)으로서 선택하며, 상기 부스 리코더는 상기 오버플로 사전-검출 회로에 응답하여, 상기 곱셈기에서 포화된 결과를 생성하기 위해 하나 이상의 비트 그룹들을 변경(alter)하도록 추가로 동작하는, 사전-포화 곱셈기.
  12. 제 11 항에 있어서,
    상기 부스 리코더는 상기 오버플로 사전-검출 회로에 응답하여 최하위 리코딩된 비트 그룹(the least significant recoded bit group)이 음의 영(negative zero)을 선택하게끔 강제하도록 동작하는, 사전-포화 곱셈기.
  13. 제 11 항에 있어서,
    상기 부분 적들을 가산하고 그리고 상기 부스 리코딩된 비트 그룹들에 의해 선택되는 음의 부분 적들에 대해 값 1(one)을 가산하도록 동작하는 병렬 가산기(parallel adder)를 더 포함하며, 상기 병렬 가산기는 상기 오버플로 사전-검출 회로에 응답하여 음의 영(negative zero)에 대해 값 1(one)의 가산을 억제(suppress)하도록 추가로 동작하는, 사전-포화 곱셈기.
  14. 제 9 항에 있어서,
    상기 곱셈기 회로는 상기 오버플로 사전-검출 회로에 응답하여 상기 적으로부터 값 1(one)을 차감(subtract)하도록 동작하는, 사전-포화 곱셈기.
  15. 제 9 항에 있어서,
    상기 오버플로 사전-검출 회로에 응답하여 상기 곱셈기 회로로부터의 상기 적을 또는 미리 결정된 포화된 결과(saturated result)를 출력하도록 동작하는 출력 선택기(output selector)를 더 포함하는 사전-포화 곱셈기.
KR1020087020038A 2006-01-20 2007-01-22 사전-포화 고정-소수점 곱셈기 KR100958224B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/336,358 US8082287B2 (en) 2006-01-20 2006-01-20 Pre-saturating fixed-point multiplier
US11/336,358 2006-01-20

Publications (2)

Publication Number Publication Date
KR20080089640A KR20080089640A (ko) 2008-10-07
KR100958224B1 true KR100958224B1 (ko) 2010-05-17

Family

ID=38015402

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087020038A KR100958224B1 (ko) 2006-01-20 2007-01-22 사전-포화 고정-소수점 곱셈기

Country Status (10)

Country Link
US (1) US8082287B2 (ko)
EP (1) EP1974253A2 (ko)
JP (2) JP5203972B2 (ko)
KR (1) KR100958224B1 (ko)
CN (1) CN101371221B (ko)
BR (1) BRPI0707147A2 (ko)
CA (1) CA2635119C (ko)
RU (1) RU2408057C2 (ko)
TW (1) TWI396130B (ko)
WO (1) WO2007085012A2 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8316071B2 (en) * 2009-05-27 2012-11-20 Advanced Micro Devices, Inc. Arithmetic processing unit that performs multiply and multiply-add operations with saturation and method therefor
US8892621B2 (en) * 2011-12-19 2014-11-18 Lsi Corporation Implementation of negation in a multiplication operation without post-incrementation
KR20130111721A (ko) * 2012-04-02 2013-10-11 삼성전자주식회사 부분 곱 생성기의 부스코드 생성방법, 컴퓨터 시스템 및 그 매체와 디지털 신호프로세서
US9323498B2 (en) * 2013-03-13 2016-04-26 Wisconsin Alumni Research Foundation Multiplier circuit with dynamic energy consumption adjustment
US9747074B2 (en) 2014-02-25 2017-08-29 Kabushiki Kaisha Toshiba Division circuit and microprocessor
KR101644039B1 (ko) * 2015-06-11 2016-07-29 에스케이텔레콤 주식회사 고정소수점 연산 방법 및 고정소수점 연산 장치
US11327718B2 (en) * 2020-03-19 2022-05-10 Kabushiki Kaisha Toshiba Arithmetic circuitry for power-efficient multiply-add operations
JP7381426B2 (ja) 2020-03-19 2023-11-15 株式会社東芝 演算回路

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6574651B1 (en) * 1999-10-01 2003-06-03 Hitachi, Ltd. Method and apparatus for arithmetic operation on vectored data

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6162937A (ja) * 1984-09-04 1986-03-31 Toshiba Corp 乗算器
JPH01267728A (ja) 1988-04-19 1989-10-25 Ricoh Co Ltd 乗算器
US5220525A (en) 1991-11-04 1993-06-15 Motorola, Inc. Recoded iterative multiplier
US5793315A (en) * 1996-05-31 1998-08-11 Motorola, Inc. Bit-serial digital expandor
JP3315042B2 (ja) 1996-11-20 2002-08-19 株式会社リコー 乗算装置
JPH11126157A (ja) 1997-10-24 1999-05-11 Matsushita Electric Ind Co Ltd 乗算方法および乗算回路
EP0992885B1 (en) 1998-10-06 2005-12-28 Texas Instruments Incorporated Multiplier accumulator circuits
EP0992916A1 (en) * 1998-10-06 2000-04-12 Texas Instruments Inc. Digital signal processor
JP3530418B2 (ja) 1999-05-13 2004-05-24 Necエレクトロニクス株式会社 乗算装置
US7058830B2 (en) 2003-03-19 2006-06-06 International Business Machines Corporation Power saving in a floating point unit using a multiplier and aligner bypass
US7689641B2 (en) 2003-06-30 2010-03-30 Intel Corporation SIMD integer multiply high with round and shift
US20080098057A1 (en) * 2004-08-26 2008-04-24 Daisuke Takeuchi Multiplication Apparatus

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6574651B1 (en) * 1999-10-01 2003-06-03 Hitachi, Ltd. Method and apparatus for arithmetic operation on vectored data

Also Published As

Publication number Publication date
TW200736989A (en) 2007-10-01
JP2009524169A (ja) 2009-06-25
RU2008134127A (ru) 2010-02-27
WO2007085012A2 (en) 2007-07-26
US20070174379A1 (en) 2007-07-26
JP5086466B2 (ja) 2012-11-28
JP5203972B2 (ja) 2013-06-05
CA2635119A1 (en) 2007-07-26
RU2408057C2 (ru) 2010-12-27
US8082287B2 (en) 2011-12-20
CA2635119C (en) 2013-07-30
TWI396130B (zh) 2013-05-11
BRPI0707147A2 (pt) 2011-04-19
JP2011248904A (ja) 2011-12-08
WO2007085012A3 (en) 2008-01-24
KR20080089640A (ko) 2008-10-07
CN101371221A (zh) 2009-02-18
EP1974253A2 (en) 2008-10-01
CN101371221B (zh) 2012-05-30

Similar Documents

Publication Publication Date Title
KR100958224B1 (ko) 사전-포화 고정-소수점 곱셈기
JP3689183B2 (ja) 正確な浮動小数点除算/平方根演算を実現する正確、かつ効果的なスティッキー・ビット計算
US8965945B2 (en) Apparatus and method for performing floating point addition
US5928316A (en) Fused floating-point multiply-and-accumulate unit with carry correction
JPH0612229A (ja) 乗累算回路
US5796644A (en) Floating-point multiply-and-accumulate unit with classes for alignment and normalization
US9146707B2 (en) Generating a fast 3x multiplicand term for radix-8 booth multiplication
JP5640081B2 (ja) 飽和を伴う整数乗算および乗算加算演算
Takagi et al. A hardware algorithm for integer division
JP4273071B2 (ja) 除算・開平演算器
JPH04355827A (ja) 開平演算装置
Ushasree et al. VLSI implementation of a high speed single precision floating point unit using verilog
Isseven et al. A dual-mode quadruple precision floating-point divider
Schwarz Binary Floating-Point Unit Design: the fused multiply-add dataflow
Krishnan A comparative study on the performance of FPGA implementations of high-speed single-precision binary floating-point multipliers
US6109777A (en) Division with limited carry-propagation in quotient accumulation
Tsen et al. Hardware designs for binary integer decimal-based rounding
Gök A novel IEEE rounding algorithm for high-speed floating-point multipliers
CN113434115B (zh) 一种浮点数尾数域余数运算电路及方法
Dave et al. Multiplication by complements
MX2008009315A (en) Pre-saturating fixed-point multiplier
Min et al. Fused floating-point magnitude unit
Min et al. Fused floating-point two-term sum-of-squares unit
CN116382628A (zh) 具有减少1求补延迟的浮点融合乘加
Amaricai et al. Hardware Support for Combined Interval and Floating Point Multiplication

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130429

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140430

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160330

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180329

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20190327

Year of fee payment: 10