KR20120017457A - 포화가 적용된 정수 곱셈 연산 및 곱셈-덧셈 연산 - Google Patents

포화가 적용된 정수 곱셈 연산 및 곱셈-덧셈 연산 Download PDF

Info

Publication number
KR20120017457A
KR20120017457A KR1020117030951A KR20117030951A KR20120017457A KR 20120017457 A KR20120017457 A KR 20120017457A KR 1020117030951 A KR1020117030951 A KR 1020117030951A KR 20117030951 A KR20117030951 A KR 20117030951A KR 20120017457 A KR20120017457 A KR 20120017457A
Authority
KR
South Korea
Prior art keywords
signal
operand
sign
bias
input
Prior art date
Application number
KR1020117030951A
Other languages
English (en)
Other versions
KR101560340B1 (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 KR20120017457A publication Critical patent/KR20120017457A/ko
Application granted granted Critical
Publication of KR101560340B1 publication Critical patent/KR101560340B1/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
    • 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
    • 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/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • 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
    • 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

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)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)

Abstract

제 1 피연산자(212)와 제 2 피연산자(214)의 곱을 나타내는 합 신호 및 캐리 신호가 생성된다. 제 1 피연산자와 제 2 피연산자의 곱 결과 부호에 따라 결정되는 값을 갖는 바이어스 신호가 생성된다(240). 합 신호와 캐리 신호와 부호 확장 가수와 바이어스 신호의 합산(230)에 근거하는 출력 신호가 제공된다. 곱 결과 부호 및 출력 신호의 부호에 근거하여, 출력 신호의 일부분 또는 포화 최소값(462) 또는 포화 최대값(464)이 최종 결과로서 선택된다.

Description

포화가 적용된 정수 곱셈 연산 및 곱셈-덧셈 연산{INTEGER MULTIPLY AND MULTIPLY-ADD OPERATIONS WITH SATURATION}
본 공개는 일반적으로 데이터 처리 장치와 관련이 있고, 더 구체적으로 산술 연산 처리 장치와 관계가 있다.
데이터 처리 장치에 정수 또는 부동 소수점 처리 장치 등의 전문화된 산술 연산 처리 장치가 포함될 수 있다. 산술 연산 처리 장치는 특히 그래픽 처리, 디지털 신호 처리 및 과학 분야 응용 프로그램과 연관된 작업을 수행하는 데 이용할 수 있다. 산술 연산 처리 장치는 특히 수학적 계산과 연관된 명령을 주로 실행한다. 예를 들어 산술 연산 처리 장치에 곱셈, 덧셈, 곱셈-덧셈, 행렬 연산 등의 산술 연산을 수행하는 명령이 포함될 수 있다. 산술 연산 처리 장치는 일반적으로 2진 부동 소수점 형식과 2진 정수 형식 중 하나 또는 두 가지 모두를 사용하여 숫자를 표시한다. 부동 소수점 수와 정수는 각각 연관된 정밀도를 가지며, 숫자를 표시하는 데 사용되는 2진 비트 수로 결정되는 특정한 범위의 값을 나타낼 수 있다. 산술 연산 처리 장치는 지원 범위를 벗어나는 수학적 연산 결과를 표시하기 위해 포화 산술(saturation arithmetic)을 사용할 수 있다.
포화 산술은 산술 연산의 결과를 최소값과 최대값 사이의 고정된 범위로 제한하는 산술 연산 버전이다. 또한, 연산 결과가 최대값보다 커서 흔히 알려진 오버플로 조건(overflow condition)이 발생하면, 산술 연산 처리 장치는 최대 표시 가능한 값에 대응하는 결과를 제시한다. 연산 결과가 최소값보다 작아서 흔히 알려진 언더플로 조건(underflow condition)이 발생하면 산술 연산 처리 장치는 최소 표시 가능한 값에 대응하는 결과를 제시한다. 포화 산술을 사용하면, 계산 결과가 오버플로 또는 언더플로일 때 발생할 수 있는 오류의 심각도를 줄일 수 있다. 예를 들어 포화를 사용하지 않으면, 계산 결과가, 지원되는 범위를 오버플로할 때, 산술 연산 처리 장치는 음수 값 결과를 제시할 수 있다. 불행히도, 산술 연산 처리 장치가 정확한 포화 결과를 제시할 수 있도록 포화 발생을 검출하는 것은 장치의 계산 성능에 부정적 영향을 미칠 수 있다. 이는 결과의 크기(숫자 표시를 위해 사용되는 2진 비트 수)가 피승수(multiplicand), 승수(multiplier), 또는 가수(addend)와 동일한 크기로 제한되는 곱셈-덧셈 연산에 있어 특히 사실이다.
본 공개에서 첨부되는 다음과 같은 도면을 참조하면 선행 기술에 숙련된 사람들이 다양한 기능과 이점을 더 쉽고 확실하게 이해할 수 있다.
도 1은 기존에 알려진 대로 포화 산술을 수행하도록 작동할 수 있는 종래의 산술 연산 처리 장치를 보여주는 블록 다이어그램이다.
도 2는 본 발명의 한 가지 구현에 따른, 포화 산술을 수행하도록 작동할 수 있는 산술 연산 처리 장치를 보여주는 블록 다이어그램이다.
도 3은 도 2의 바이어스 생성기를 보여주는 부분적 구성도이자 블록 다이어그램이다.
도 4는 본 발명의 다른 구현 방식에 따른, 포화 산술을 수행하도록 작동할 수 있는 산술 연산 처리 장치를 보여주는 블록 다이어그램이다.
도 5는 도 4의 바이어스된 가수 생성기를 보여주는 부분적 구성도이자 블록 다이어그램이다.
도 6은 본 발명의 또 다른 구현 방식에 따른, 패킹된 피연산자에 포화 산술을 수행하도록 작동할 수 있는 산술 연산 처리 장치를 보여주는 블록 다이어그램이다.
여러 다른 도면에 같은 참조 기호를 사용하여 유사하거나 동일한 항목을 나타낸다. 명확성을 위해 동일한 이름으로 신호, 신호 전달 노드, 신호로 표시되는 정보를 표시한다.
도 1은 기존에 알려진 대로 포화 산술을 수행하도록 작동할 수 있는 종래의 산술 연산 처리 장치를 보여주는 블록 구성도이다. 산술 연산 처리 장치(100)는 피연산자 두 개를 곱하여 산출된 곱을 셋째 피연산자에 더하여 중간 결과를 제시함으로써 곱셈-덧셈 계산을 수행한다. 포화 검출 회로가 중간 결과를 수신하고 계산의 최종 결과를 제시한다. 산술 연산 처리 장치(100)는 "A"로 표시된 피승수 피연산자(112), "B"로 표시된 승수 피연산자(114), "C"로 표시된 가수 피연산자(116), 중간 결과를 제시하는 곱셈-덧셈 모듈(120), "RESULT"로 표시된 최종 결과를 제시하는 포화 모듈(190)로 구성된다.
곱셈-덧셈 모듈(120)에는 피연산자(112)를 수신하기 위한 1차 입력, 피연산자(114)를 수신하기 위한 2차 입력, 피연산자(116)를 수신하기 위한 3차 입력, 그리고 출력이 포함된다. 포화 모듈(190)에는 곱셈-덧셈 모듈(120)의 출력에 연결되는 입력과 RESULT 신호를 제시하기 위한 출력이 포함된다. 산술 연산 처리 장치(100)는 또한 앞서 계산된 곱셈-덧셈 결과를 후속 곱셈-덧셈 연산의 가수로 사용하여 곱셈-덧셈 연산을 수행할 수 있다.
산술 연산 처리 장치(100)에서 각각이 부호 있는 16비트 정수인 피연산자 A, B, C를 수신한다. 곱셈-덧셈 모듈(120)에서 제시하는 중간 결과에는 곱셈-덧셈 연산의 결과를 정확히 표시하기 위한 추가 비트가 포함된다. 도 1에 제시된 예에서, 포화 모듈(190)이 제시하는 최종 결과는 32비트 부호 있는 정수이다. 포화 모듈(190)은 곱셈-덧셈 모듈(120)에서 제공하는 중간 결과 값이 부호 있는 32비트 정수로 표시 가능한 값을 초과하는지 여부, 즉 오버플로 조건인지 또는 언더플로 조건인지를 검출한다. 오버플로가 발생하면, 포화 모듈(190)에서 최대 32비트 양 부호 정수, 2진 01111...1111을 나타내는 RESULT 신호를 생성한다. 언더플로가 발생하면, 포화 모듈(190)에서 최대 32비트 음 부호 정수, 2진 100...0000을 나타내는 RESULT 신호를 생성한다. 곱셈-덧셈 모듈(120)에서 제공하는 중간 결과 값이 지원되는 범위 안에 있으면, 포화 검출 모듈(190)은 출력에서 변경되지 않은 중간 결과를 제시한다.
포화 모듈(190)은, 각각의 피연산자의 각각의 부호와 중간 결과의 부호를 근거로, 오버플로 조건이 발생했는지 혹은 언더플로 조건이 발생했는지를 판별한다. 하지만, 최종 결과의 표시가 부호 있는 16비트 정수로 제한되는 경우, 포화 모듈(190)에서의 연산은 상당히 복잡해지고 시간도 많이 걸린다. 따라서 산술 연산 처리 장치(100)의 계산 성능이 저하된다.
곱셈-덧셈 연산의 오버플로와 언더플로는 연산의 최종 결과에 따라 결정된다. 따라서, 포화를 적용한 곱셈-덧셈 수행은 포화 적용 덧셈 연산이 뒤따르는 포화 적용 곱셈 연산 수행과 수학적으로 동등하지 않다. 예를 들어, 곱셈 연산 자체에서 지원 범위를 초과하는 곱이 산출될 수 있지만, 가수 덧셈에서 최종 곱셈-덧셈 결과를 지원되는 2진 비트 수로 표시할 수 있는 값으로 되돌릴 수 있다. 곱셈-덧셈 연산에서 가능한 사례는 다음 네 가지이다. (1) 곱셈 연산의 결과 값이 결과를 표시하기 위해 할당된 비트 수를 초과하고, 가수 덧셈이 최종 결과를 지원 범위에 들어가지 않게 하는 경우, (2) 곱셈 연산의 결과 값이 결과를 표시하기 위해 할당된 비트 수를 초과하지만, 가수 덧셈이 최종 결과를 지원 범위에 들어가게 하는 경우, (3) 곱셈 연산의 결과 값이 결과를 표시하기 위해 할당된 비트 수를 초과하지 않지만, 가수 덧셈에서 지원 범위를 초과하는 결과 값이 산출되는 경우, (4) 곱셈 연산의 결과 값이 결과를 표시하기 위해 할당된 비트 수를 초과하지 않으며, 가수 덧셈에서 지원 범위를 초과하지 않는 결과 값이 산출되는 경우.
도 2는 본 발명의 한 가지 구현에 따른 포화 산술을 수행하도록 작동할 수 있는 산술 연산 처리 장치(200)를 보여주는 블록 다이어그램이다. 산술 연산 처리 장치(200)는 곱셈-덧셈 연산을 수행하며 바이어스 값(bias value)을 제공하기 위해 필요한 바이어스 생성기를 포함하고 있다. 바이어스 값, 중간 결과 곱, 가수 피연산자가 모두 합산되므로 도 1의 포화 모듈(190)로 수행했던 복잡하고 시간이 많이 걸리는 연산을, 도 1의 산술 연산 처리 장치(100)와 같이 결과를 크게 지연시키지 않고, 빠르게 수행될 수 있는 간단한 멀티플렉싱 작업으로 바꾼다.
산술 연산 처리 장치(200)는 "A"로 표시된 피승수 피연산자(212), "B"로 표시된 승수 피연산자(214), "C"로 표시된 가수 피연산자(216), 승산기(220), 바이어스 생성기(240), 확장 로직(250), 가산기(230), 출력 선택 회로(260)로 구성된다.
승산기(220)에는 피연산자(212)를 수신하기 위한 1차 입력, 피연산자(214)를 수신하기 위한 2차 입력, "CARRY"로 표시된 신호를 제공하기 위한 1차 출력, "SUM"으로 표시된 신호를 제공하기 위한 2차 출력이 포함된다. 바이어스 생성기(240)에는 피연산자(212)의 부호에 해당하는 "SIGN A"로 표시된 신호를 수신하기 위한 1차 입력, 피연산자(214)의 부호에 해당하는 "SIGN B"로 표시된 신호를 수신하기 위한 2차 입력, "BIAS"로 표시된 신호를 제공하기 위한 출력, 그리고 "SIGN PROD"로 표시되는 피연산자(212)와 피연산자(214)의 곱 결과 부호를 나타내는 신호를 제공하기 위한 출력이 포함된다. 확장 로직(250)에는 피연산자(216)를 수신하기 위한 1차 입력과 "CEXT"로 표시된 신호를 제공하기 위한 출력이 있다. 가산기(230)에는 CARRY 신호를 수신하기 위한 1차 입력, SUM 신호를 수신하기 위한 2차 입력, BIAS 신호를 수신하기 위한 3차 입력, CEXT 신호를 수신하기 위한 4차 입력, "IR"로 표시된 중간 결과를 제공하기 위한 출력이 있다. 선택 회로(260)에는 중간 결과 신호인 IR 신호를 수신하기 위한 1차 입력, SIGN PROD 신호를 수신하기 위한 2차 입력, "RESULT"로 표시된 최종 결과를 제공하기 위한 출력이 있다.
피연산자들(212, 214 및 216) 각각은 부호 있는 16비트 정수이다. 승산기(220)는 피연산자(212)와 피연산자(214)를 수신하여, CARRY 신호로 표시되는 32비트 캐리 값 형태의 곱을 제공함과 아울러 SUM 신호로 표시되는 32비트 합계 값을 제공한다.
바이어스 생성기(240)는 피승수 피연산자(212)와 승수 피연산자(214)의 곱 결과 부호를 근거로 BIAS 신호로 표시되는 바이어스 값을 제공한다. 곱 결과 부호는 SIGN A 신호와 SIGN B 신호로 표시되는 각 피연산자의 부호에 따라 결정된다. BIAS 신호에는 32비트 정보가 포함되고, 여기서 상위 17비트는 의미가 있고 하위 15비트는 모두 0이다. 확장 로직(250)은, SUM 신호, CARRY 신호, BIAS 신호 각각과 연관되는 비트 수에 대응하는 32비트 CEXT 신호를 제공하기 위해 가수 피연산자(216)를 부호 확장시킨다.
가산기(230)는 32비트 바이어스 값(BIAS 신호), 32비트 부호 확장 가수(CEXT 신호), 32비트 곱셈 결과 2개(CARRY 신호 및 SUM 신호)를 합산하여 IR 신호로 표시되는 32비트 중간 결과를 제공한다. 한 가지 구현에서, 가산기(230)에는 하나 이상의 캐리-저장-가산기(Carry-Save-Adder, CSA) 스테이지(stage)들과 최종 캐리-전파 가산기(Carry-Propagate Adder, CPA)가 포함된다. 또 다른 구현에서, 가산기(230)에 포함된 CSA 스테이지들은 승산기(220)에 포함된 CSA 스테이지들과 공유될 수 있다. 따라서, 32비트 바이어스 값과 부호 확장 가수는 승산기(220)에 포함된 하나 이상의 CSA 스테이지들에서 합산(압축)될 수 있다. 바이어스 값은 부호 있는 16비트 정수와 연관된 범위는 초과하지만 부호 있는 32비트 정수 범위는 벗어나지 않는 결과를 산출하여 IR 신호로 표시되는 32비트 중간 결과의 오버플로 또는 언더플로 여부를 나타낸다. 특히, 16비트 부호 있는 정수의 오버플로나 언더플로는 간단히 32비트 중간 결과의 부호와 피연산자(212와 214)의 곱 결과 부호에 따라 결정될 수 있다.
출력 선택 회로(260)는, SIGN PROD 신호로 표시되는 피연산자(212)와 피연산자(214)의 곱 결과 부호와, IR 신호의 최상위 비트로 표시되는 중간 결과의 부호를 사용하여 곱셈-덧셈 연산으로 오버플로 조건이 초래되었는지 또는 언더플로 조건이 초래되었는지 여부를 결정한다. 중간 결과에 바이어스 값의 가산이 포함되므로 출력 선택 회로(260)는 32비트 중간 결과에 근거하여 원하는 16비트 결과에 대응하는 오버플로 조건 또는 언더플로 조건을 쉽게 검출할 수 있다. 피연산자(212)와 피연산자(214)의 곱 결과 부호가 1(음)이고 중간 결과의 부호가 0(양)이면, 언더플로가 발생한 것이며 출력 선택 회로(260)는 16비트 부호 있는 정수를 사용하여 표시 가능한 최대 음수 값인 2진 1000 0000 0000 0000으로 RESULT 신호를 설정한다. 피연산자(212)와 피연산자(214)의 곱 결과 부호가 0(양)이고 중간 결과의 부호가 1(음)이면, 오버플로가 발생한 것이며 출력 선택 회로(260)는 표시 가능한 16비트 부호 있는 최대 양의 정수인 2진 0111 1111 1111 1111로 RESULT 신호를 설정한다. 오버플로나 언더플로가 발생하지 않았으면, 출력 선택 회로(260)는 중간 결과의 부분에 근거하여 출력을 제공한다. 특히 포화가 발생하지 않았을 때, 최종 결과는 비트 15의 반전(inverting) 이후 IR 신호로 표시되는 중간 결과의 하위 16비트와 동일하다.
도 3은 도 2에 나온 바이어스 생성기(240)를 보여주는 부분적 구성도이자 블록 다이어그램이다. 바이어스 생성기(240)에는 부 바이어스 값(negative bias value)(242), 정 바이어스 값(positive bias value)(244), XNOR(eXclusive NOR) 게이트(246), 멀티플렉서(248)가 포함된다. XNOR 게이트(246)에는 SIGN A 신호를 수신하기 위한 1차 입력, SIGN B 신호를 수신하기 위한 2차 입력, SIGN PROD 신호를 제공하기 위한 출력이 있다. 멀티플렉서(248)에는 부 바이어스 값(242)을 수신하기 위한 1차 데이터 입력, 정 바이어스 값(244)을 수신하기 위한 2차 입력, SIGN PROD 신호를 수신하기 위한 제어 입력, BIAS 신호를 제공하기 위한 출력이 있다.
SIGN PROD 신호가 로직 상위 레벨(음)에 있다면, 멀티플렉서(248)는 부 바이어스 값(242)을 선택하여 다음과 같은 2진 값으로 BIAS 신호를 생성한다.
1000 0000 0000 0000 1000 0000 0000 0000
SIGN PROD 신호가 로직 하위 레벨(양)에 있다면, 멀티플렉서(248)는 정 바이어스 값(244)을 선택하여 다음과 같은 2진 값으로 BIAS 신호를 생성한다.
0111 1111 1111 1111 1000 0000 0000 0000
도 4는 본 발명의 한 가지 구현에 따른 포화 산술을 수행하도록 작동할 수 있는 산술 연산 처리 장치(400)를 보여주는 블록 다이어그램이다. 산술 연산 처리 장치(400)는 곱셈-덧셈 연산을 수행할 수 있다. 도 2에 나온 산술 연산 처리 장치(200)와 달리, 산술 연산 처리 장치(400)는, 바이어스 생성기(240)와 확장 로직(250)의 기능을, "BIASED ADDEND"로 표시된 바이어스된 가수를 생성하는 단일 모듈에 통합시킨다. 산술 연산 처리 장치(400)는 "A"로 표시된 피승수 피연산자(412), "B"로 표시된 승수 피연산자(414), "C"로 표시된 가수 피연산자(416), (부스 인코더(Booth encoder)(422)와 CSA 어레이(424)가 포함된) 승산기 모듈(420), 바이어스된 가수 생성기(440), (3:2 압축기(432)와 캐리-전파 가산기(434)가 포함된) 가산기(430), (포화된 최소값(462), 포화된 최대값(464), 멀티플렉서(466), 인버터(inverter)(450) 및 선택 로직(468)이 포함된) 출력 선택 회로(460)로 구성된다.
승산기(420)에는 피연산자(412)를 수신하기 위한 1차 입력, 피연산자(414)를 수신하기 위한 2차 입력, "CARRY"로 표시된 신호를 제공하기 위한 1차 출력, "SUM"으로 표시된 신호를 제공하기 위한 2차 출력이 포함된다. 바이어스된 가수 생성기(440)에는 피연산자(412)의 부호에 해당하는 "SIGN A"로 표시된 신호를 수신하기 위한 1차 입력, 피연산자(414)의 부호에 해당하는 "SIGN B"로 표시된 신호를 수신하기 위한 2차 입력, "ADDEND"로 표시된 신호로 표현되는 가수 피연산자(416)를 수신하기 위한 입력, "BIASED ADDEND"로 표시된 신호를 제공하기 위한 1차 출력, 피연산자(412)와 피연산자(414)의 곱 결과 부호에 해당하는 "SIGN PROD"로 표시된 신호를 제공하기 위한 2차 출력이 있다. 가산기(430)에는 CARRY 신호를 수신하기 위한 1차 입력, SUM 신호를 수신하기 위한 2차 입력, BIASED ADDEND 신호를 수신하기 위한 3차 입력, (CPA(434)에서 제공된 32비트 중간 결과 중 최하위 16비트에 해당하는) "IR"로 표시된 중간 결과를 제공하기 위한 1차 출력, (CPA(434)에서 제공된 32비트 중간 결과의 부호에 해당하는) "SIGN IR"로 표시된 신호를 제공하기 위한 2차 출력이 있다. 인버터(450)에는 IR 신호의 비트 15를 수신하기 위한 입력, 그리고 출력이 있다. 멀티플렉서(466)에는 포화된 최소값(462)을 수신하기 위한 1차 입력, 포화된 최대값(464)을 수신하기 위한 2차 입력, 불포화 16비트 결과를 수신하기 위한 3차 입력, "SELECT"로 표시된 신호를 수신하기 위한 제어 입력, "RESULT"로 표시된 신호를 제공하기 위한 출력이 있다. 불포화 16비트 결과의 최상위 비트는 인버터(450)에서 제공되고, 불포화 16비트 결과의 비트 14 내지 비트 0은 IR 신호(14:0)에 의해 제공된다. 선택 로직(468)에는 SIGN IR 신호를 수신하기 위한 1차 입력, SIGN PROD 신호를 수신하기 위한 2차 입력, 그리고 SELECT 신호를 멀티플렉서(466)의 제어 입력으로 보내기 위한 출력이 있다.
피연산자들(412, 414, 416) 각각은 부호 있는 16비트 정수이다. 승산기(420)에서 피연산자(412)와 피연산자(414)를 수신하여 CARRY 신호로 표시되는 32비트 캐리 값 형태의 곱을 제공함과 아울러 SUM 신호로 표시되는 32비트 합계 값을 제공한다. 승산기(420)는 부스 인코더(422)를 사용하여 부스 레코딩(Booth's recording)으로 알려진 프로세스에 부분적 곱 결과를 제공한다. CSA 어레이(424)는 이러한 부분적 곱 결과를 연속적인 CSA 스테이지들에서 2개의 부분적 곱 결과로 감소시켜 CARRY 신호와 SUM 신호를 제공한다.
바이어스된 가수 생성기(440)는 바이어스 값을 생성한 후, 바이어스 값과 가수 피연산자(416)를 합하여 32비트 BIASED ADDEND 신호를 제공한다. 바이어스된 가수 생성기(440)의 연산에 대해서는 아래 도 5에서 자세히 설명된다.
압축기(432)가 CARRY 신호, SUM 신호 및 BIASED ADDEND 신호를 수신하여 32비트 캐리 신호와 32비트 합 신호로 표시되는 각각의 값들의 합계를 CPA(434)에 제공한다. CPA(434)는 압축기(432)에서 생성된 캐리/합 표시를 단일의 32비트 2진 정수로 표시되는 결과로 변환한 후, 이 값의 최하위 16비트를 IR 신호를 통해 멀티플렉서(466)에 제공한다. IR 신호로 표시되는 이 값은, 선택 모듈(468)에서 오버플로 조건이나 언더플로 조건이 발생하지 않았다고 결정하는 경우에, 곱셈-덧셈 계산의 최종 결과와 동일하다.
멀티플렉서(466)와 선택 모듈(468)의 연산은, 도 2의 출력 선택 회로(260)를 참조하여 설명된 것과 동일하며 여기에 추가적인 세부사항이 더 제시된다. 선택 모듈(468)이 오버플로 조건을 검출하는 경우, 선택 모듈(468)은 SELECT 신호를 통해 멀티플렉서(466)를 구성하여 포화된 최대값(464)을 RESULT 신호를 통해 최종 결과로 제공하도록 한다. 선택 모듈(468)이 언더플로 조건을 검출하는 경우, 선택 모듈(468)은 멀티플렉서(466)를 구성하여 포화된 최소값(462)을 RESULT 신호를 통해 최종 결과로 제공하도록 한다. 선택 모듈(468)에서 오버플로 조건이나 언더플로 조건이 검출되지 않는 경우, 선택 모듈(468)은 멀티플렉서(466)를 구성하여 불포화 결과를 최종 결과로 제공하도록 한다.
도 5는 도 4의 바이어스된 가수 생성기(440)를 보여주는 부분적 구성도이자 블록 다이어그램이다. 바이어스된 가수 생성기(440)는 도 2에 나온 바이어스 생성기(240)와 확장 로직(250)에 의해 수행된 연산을 결합하여, 바이어스 값과 개별 부호 확장 가수가 아닌 단일의 바이어스된 가수를 제공한다. 이로 인해, 가산기(430)는 단지 값 3개만의 합계를 계산하는 반면, 도 2의 가산기(230)는 값 4개의 합계를 계산해야만 한다.
바이어스된 가수 생성기(440)에는 제 1 바이어스 값(510), 제 2 바이어스 값(520), 제 3 바이어스 값(530), 제 4 바이어스 값(540), XNOR 게이트(550), 그리고 멀티플렉서(560)가 포함된다. XNOR 게이트(550)에는 SIGN A 신호를 수신하기 위한 1차 입력과, SIGN B 신호를 수신하기 위한 2차 입력, 그리고 SIGN PROD 신호를 제공하기 위한 출력이 있다. 멀티플렉서(560)에는 바이어스 값(510)을 수신하기 위한 1차 데이터 입력, 바이어스 값(520)을 수신하기 위한 2차 데이터 입력, 바이어스 값(530)을 수신하기 위한 3차 데이터 입력, 바이어스 값(540)을 수신하기 위한 4차 데이터 입력, SIGN PROD 신호를 수신하기 위한 1차 제어 입력, 가수 피연산자(416)의 부호를 나타내며 "SIGN C"로 표시된 신호를 수신하기 위한 2차 제어 입력, 그리고 "BIAS"로 표시된 신호를 제공하기 위한 출력이 있다. BIAS 신호는 17비트 2진 값이며, 그리고 32비트 BIASED ADDEND 신호의 상위 17비트 부분을 제공한다. BIASED ADDEND 신호의 최하위 15비트는 ADDEND 신호의 최하위 15비트에 따라 결정된다. 바이어스된 가수 생성기의 연산 작업이 다음의 표 1에 나와 있다.
SIGN PROD SIGN C BIASED ADDEND(31:0)
0 0 01111111111111111::CEXT(14:0)
0 1 01111111111111110::CEXT(14:0)
1 0 10000000000000001::CEXT(14:0)
1 1 10000000000000000::CEXT(14:0)
따라서, BIASED ADDEND 신호는 바이어스 값과 가수의 부호 없는 부분을 연결한 것이다. BIASED ADDEND 신호의 비트 15는 가수 피연산자(416)의 부호가 반전된 것임에 유의해야 한다.
도 6은 본 발명의 또 다른 구현 방식에 따른, 패킹된 피연산자에 포화 산술을 수행하도록 작동할 수 있는 산술 연산 처리 장치(600)를 보여주는 블록 다이어그램이다. 산술 연산 처리 장치(600)는 "A1, A2, A3, A4"로 표시되는 피승수 피연산자(612), "B1, B2, B3, B4"로 표시되는 승수 피연산자(614), "C1, C2, C3, C4"로 표시되는 가수 피연산자(616), 승산기(620), 바이어스 생성기(640), 확장 로직(650), 가산기(630), 출력 선택 회로(660), 그리고 "R1, R2, R3, R4"로 표시되는 결과(618)로 구성된다.
산술 연산 처리 장치(600)의 연결과 연산은, 피연산자(612, 614 및 616)와 결과(618) 각각이 네 개의 개별 16비트 부호 있는 정수를 포함하는 패킹된 피연산자라는 점을 제외하고, 도 2의 산술 연산 처리 장치(200)와 유사하다. 패킹된 피연산자를 다중 정밀도 피연산자(multiple precision operands)라고도 한다. 산술 연산 처리 장치(600)는 네 개의 곱셈-덧셈 연산을 병렬로 수행한다. 예를 들어 산술 연산 처리 장치(600)는 결과 R1=(A1×B1)+C1, 결과 R2=(A2×B2)+C2, 결과 R3=(A3×B3)+C3 및 결과 R4=(A4×B4)+C4를 계산한다. 산술 연산 처리 장치(600)는 이러한 개개의 계산 각각을 도 2의 산술 연산 처리 장치(200)를 참조하여 설명한 것과 유사한 방식으로 수행한다. 승산기(620)는 128비트 캐리 신호와 128비트 합 신호를 제공하며, 여기서 각각의 결과는 복수의 곱을 나타낸다. 바이어스 생성기(640)는 각각의 계산에 해당하는 고유한 바이어스 값을 제공한다. 출력 선택 회로(660)는 각각의 계산이 오버플로인지 또는 언더플로인지 판별하고, 표시 가능한 최대값 또는 최소값으로 적절히 치환한다.
첫 번째 양상에서, 승산기-가산기에는, 제 1 피연산자 및 제 2 피연산자 수신용 1차 입력 및 2차 입력, 합 신호 제공용 1차 출력, 캐리 신호 제공용 2차 출력을 갖는 승산기와; 제 1 피연산자 및 제 2 피연산자의 부호 비트 수신용 1차 입력 및 2차 입력, 제 3 피연산자 수신용 3차 입력, 바이어스된 가수 신호 제공용 1차 출력, 제 1 피연산자 및 제 2 피연산자의 곱 결과 부호를 표시하는 신호 제공용 2차 출력을 갖는 바이어스된 가수 생성기와; 승산기의 1차 출력 및 2차 출력에 결합되는 1차 입력 및 2차 입력, 바이어스된 가수 신호 수신용 3차 입력, 1차 입력과 2차 입력과 3차 입력의 합을 나타내는 신호 제공용 출력을 포함하는 가산기와; 가산기의 1차 출력에 결합되는 1차 입력, 포화 최소값 수신용 2차 입력, 포화 최대값 수신용 3차 입력, 제어 입력, 포화 신호와 함께 곱셈-덧셈 결과를 제공하기 위한 출력을 갖는 멀티플렉서와; 그리고 바이어스 생성기의 2차 출력에 결합되는 1차 입력, 합 부호를 나타내는 신호 수신용 2차 입력, 멀티플렉서의 상기 제어 입력에 결합되는 출력이 있는 선택 로직이 포함된다.
첫 번째 양상의 한 가지 구현에서, 승산기는 캐리-저장 승산기 어레이이며 부스 레코딩을 사용하는 것이 특징이다. 첫 번째 양상의 다른 구현에서는, 바이어스된 가수 신호에 합 신호 및 캐리 신호와 동일한 비트 수가 포함된다. 첫 번째 양상의 추가 구현에서는, 제 1 피연산자, 제 2 피연산자 및 제 3 피연산자 각각에 부호 있는 정수가 포함된다. 첫 번째 양상의 또 다른 구현에서, 바이어스된 가수 생성기는, 제 1 피연산자의 부호 비트 수신용 1차 입력, 제 2 피연산자의 부호 비트 수신용 2차 입력, 제 1 피연산자와 제 2 피연산자의 곱 결과 부호를 나타내는 부호 신호 제공용 출력을 포함하는 로직 게이트와; 그리고 제 1 바이어스 수신용 1차 입력, 제 2 바이어스 수신용 2차 입력, 제 3 바이어스 수신용 3차 입력, 제 4 바이어스 수신용 4차 입력, 로직 게이트의 출력에 결합되는 1차 제어 입력, 제 3 피연산자의 부호 수신용 2차 제어 입력, 바이어스된 가수 신호를 제공하기 위해 가산기의 3차 입력에 결합되는 출력을 포함하는 멀티플렉서로 구성된다. 첫 번째 양상의 또 다른 구현에서, 제 1 피연산자 및 제 2 피연산자에는 패킹된 피연산자가 포함되고 승산기-가산기에는 포화가 적용된, 유사한 복수의 곱셈-덧셈 결과를 산출하기 위한 다수의 섹션이 포함된다.
두 번째 양상에서, 산술 연산 처리 장치는, 제 1 피연산자와 제 2 피연산자의 곱을 나타내는 합 신호 및 캐리 신호를 제공하기 위한 승산기와; 합 신호와 캐리 신호와 바이어스 신호의 합을 나타내는 중간 결과 신호를 제공하기 위한 가산기와; 제 1 피연산자와 제 2 피연산자의 곱 결과 부호로 결정되는 값을 갖는 바이어스 신호를 제공하기 위한 바이어스 생성기와; 그리고 곱 결과 부호와 중간 결과의 부호에 응답하여 가산기의 1차 출력 신호의 일부분, 포화 최소값, 포화 최대값 중 하나를 선택하기 위한 출력 선택 회로로 구성된다. 두 번째 양상의 한 가지 구현에서, 가산기는 부호 확장 가수에 근거하여 중간 결과 신호를 추가로 제공한다. 두 번째 양상의 다른 구현에서, 산술 연산 처리 장치에는 부호 확장 가수를 제공하기 위해 제 3 피연산자를 부호 확장시키는 부호 확장 로직이 추가로 포함된다. 두 번째 양상의 추가 구현에서, 제 1 피연산자, 제 2 피연산자 및 제 3 피연산자 각각에는 부호 있는 정수가 포함된다. 두 번째 양상의 또 다른 구현에서는, 바이어스 생성기가 제 1 피연산자와 제 2 피연산자의 곱 결과 부호에 응답하여 바이어스 신호로서 부 바이어스와 정 바이어스 중 하나를 제공한다. 두 번째 양상의 또 다른 구현에서, 제 1 피연산자 및 제 2 피연산자에는 패킹된 피연산자가 포함되고 산술 연산 처리 장치에는 포화가 적용된, 유사한 복수의 결과를 산출하기 위한 다수의 섹션이 포함된다. 두 번째 양상의 또 다른 구현에서, 출력 선택 회로는 또한 1차 출력 신호 부분의 최상의 비트를 반전시킨다.
세 번째 양상의 방법에는, 제 1 피연산자와 제 2 피연산자의 곱을 나타내는 합 신호 및 캐리 신호를 생성하는 것과; 제 1 피연산자와 제 2 피연산자의 곱 결과 부호에 의해 결정되는 값을 갖는 바이어스 신호를 생성하는 것과; 합 신호와 캐리 신호와 신호 확장 가수와 바이어스 신호의 합산에 응답하여 1차 출력 신호를 제공하는 것과; 그리고 곱 결과 부호 및 1차 출력 신호의 부호에 응답하여 1차 출력 신호의 일부분, 포화 최소값, 포화 최대값 중 하나를 최종 결과로서 선택하는 것이 포함된다. 세 번째 양상의 한 구현에서, 합 신호 및 캐리 신호 생성에는 또한 캐리-저장 승산기 어레이 및 부스 레코딩을 사용하여 합 신호 및 캐리 신호를 생성하는 것이 포함된다. 세 번째 양상의 추가 구성에서, 합 신호와 캐리 신호 각각의 비트 크기와 일치하도록 제 3 피연산자를 부호 확장시키는 것이 추가로 방법에 포함된다. 세 번째 양상의 또 다른 구현에서, 바이어스 신호 생성에는 또한, 제 1 피연산자의 부호 비트, 제 2 피연산자의 부호 비트, 제 1 피연산자와 제 2 피연산자를 근거로 하는 곱셈의 곱 결과 부호의 결정, 그리고 곱 결과 부호에 따른 부 바이어스 또는 정 바이어스 선택에 응답하여 바이어스 신호를 생성하는 것이 포함된다. 세 번째 양상의 또 다른 구현에서, 최종 결과에는 제 3 피연산자와 동일한 2진 비트 수가 포함된다. 세 번째 양상의 다른 구현에서, 합 신호 및 캐리 신호 생성에는 제1의 패킹된 피연산자와 제2의 패킹된 피연산자의 곱을 나타내는 패킹된 합 신호 및 캐리 신호를 생성하는 것이 포함된다. 세 번째 양상의 추가 구현에서, 1차 출력 신호 제공에는 합 신호와 캐리 신호와 부호 확장 가수와 바이어스 신호의 합으로서 1차 출력 신호를 제공하는 것이 포함되며, 최종 결과에는 이러한 합보다 적은 2진 비트 수가 포함된다.
일반적인 설명으로 앞서 소개한 동작이나 요소가 모두 필요한 것이 아니라는 점, 특정 동작 또는 장치의 일부는 필요 없을 수 있다는 점, 앞선 설명에 추가로 하나 이상의 추가 동작이 수행될 수도 있고 하나 이상의 요소가 더 포함될 수도 있다는 점에 유의해야한다. 더 나아가, 동작의 나열 순서가 반드시 동작의 수행 순서가 되는 것도 아니다.
또한, 특정 구현과 관련된 개념들도 설명되었다. 하지만, 통상의 기술 보유자라면 아래 청구항에 제시된 바와 같은 본 개시내용의 범위를 벗어남이 없이 다양한 수정과 변경이 가능함을 알 수 있다. 따라서, 본 명세서 및 도면은 한정적 의미가 아닌 예시적인 것으로 보아야 하며, 이러한 모든 수정은 본 개시내용의 범위 내에 포함되도록 의도된 것이다.
예를 들어, 본 명세서에서 사용된 기법은 곱셈-덧셈 연산이 아닌 곱셈 연산만 수행할 수 있는 승산기에도 사용될 수 있다. 이러한 경우에 가수 입력은 생략된다. 그러나, 이때는 단순 곱셈 연산을 수행하도록 가수 입력을 비활성화시키는 실행 제어 장치를 사용하여, 곱셈-덧셈 연산을 수행할 수 있는 산술 연산 처리 장치를 구성할 수 있다. 공개된 기법은, 곱셈 또는 곱셈-덧셈 연산의 결과가 해당하는 중간 곱을 표시하는 데 사용된 비트 수보다 적은 정보 비트 수를 포함하는 경우에는 언제든지 적용될 수 있다. 예를 들어, 최종 결과를 표시하는 데 사용된 비트 수가 각각의 피연산자를 표시하는 데 사용된 비트 수와 같을 때, 또는 최종 결과를 표시하는 데 사용된 비트 수가 가수 피연산자를 표시하는 데 사용된 비트 수와 같을 때, 포화가 필요할 수 있다.
특정 구현에 따른 이점, 기타 장점 및 문제 해결책이 앞서 설명되었다. 하지만, 이러한 이점, 장점 및 문제 해결책 그리고 특정 이점, 장점 또는 해결책을 유발하거나 심화시킬 수 있는 기타 특징이 아래 청구항의 일부 또는 전부의 중요하거나, 필수적이거나 또는 기본적인 특성으로 해석돼서는 안 된다.

Claims (20)

  1. 승산기-가산기(multiplier-adder)(400)로서,
    제 1 피연산자(operand) 및 제 2 피연산자를 수신하기 위한 1차 입력 및 2차 입력과, 합 신호(sum signal)를 제공하기 위한 1차 출력과, 그리고 캐리 신호(carry signal)를 제공하기 위한 2차 출력으로 구성되는 승산기(420)와;
    상기 제 1 피연산자 및 상기 제 2 피연산자의 부호 비트(sign bits)를 수신하기 위한 1차 입력 및 2차 입력과, 제 3 피연산자를 수신하기 위한 3차 입력과, 바이어스된 가수 신호(biased addend signal)를 제공하기 위한 1차 출력과, 그리고 상기 제 1 피연산자와 상기 제 2 피연산자의 곱(product) 결과 부호를 나타내는 신호를 제공하기 위한 2차 출력으로 구성되는 바이어스된 가수 생성기(biased addend generator)(440)와;
    상기 승산기의 상기 1차 출력 및 상기 2차 출력에 결합되는 1차 입력 및 2차 입력과, 상기 바이어스된 가수 신호를 수신하기 위한 3차 입력과, 그리고 상기 1차 입력과 상기 2차 입력과 상기 3차 입력의 합(sum)을 나타내는 신호를 제공하기 위한 출력으로 구성되는 가산기(430)와;
    상기 가산기의 상기 1차 출력에 결합되는 1차 입력과, 포화 최소값(saturated minimum value)을 수신하기 위한 2차 입력과, 포화 최대값(saturated maximum value)을 수신하기 위한 3차 입력과, 제어 입력과, 그리고 포화 신호와 함께 곱셈-덧셈 결과를 제공하기 위한 출력으로 구성되는 멀티플렉서(466)와; 그리고
    상기 바이어스 생성기의 상기 2차 출력에 결합되는 1차 입력과, 상기 합의 부호를 나타내는 신호를 수신하기 위한 2차 입력과, 그리고 상기 멀티플렉서의 상기 제어 입력에 결합되는 출력으로 구성되는 선택 로직(select logic)(468)을 포함하는 것을 특징으로 하는 승산기-가산기.
  2. 제1항에 있어서,
    상기 승산기는 부스 레코딩(Booth's recoding)(422)의 사용을 특징으로 하는 캐리-저장 승산기 어레이(carry-save multiplier array)(424)인 것을 특징으로 하는 승산기-가산기.
  3. 제1항에 있어서,
    상기 바이어스된 가수 신호에는 상기 합 신호 및 상기 캐리 신호와 동일한 비트 수가 포함되는 것을 특징으로 하는 승산기-가산기.
  4. 제1항, 제2항, 제3항 및 제5항에 있어서,
    상기 제 1 피연산자, 상기 제 2 피연산자 및 상기 제 3 피연산자 각각은 부호 있는 정수로 구성되는 것을 특징으로 하는 승산기-가산기.
  5. 제3항에 있어서,
    상기 바이어스된 가수 생성기(440)는,
    상기 제 1 피연산자의 부호 비트를 수신하기 위한 1차 입력과, 상기 제 2 피연산자의 부호 비트를 수신하기 위한 2차 입력과, 그리고 상기 제 1 피연산자와 상기 제 2 피연산자의 상기 곱 결과 부호를 나타내는 부호 신호를 제공하기 위한 출력으로 구성되는 로직 게이트(logic gate)(550)와; 그리고
    제 1 바이어스를 수신하기 위한 1차 입력과, 제 2 바이어스를 수신하기 위한 2차 입력과, 제 3 바이어스를 수신하기 위한 3차 입력과, 제 4 바이어스를 수신하기 위한 4차 입력과, 상기 로직 게이트의 상기 출력에 결합되는 1차 제어 입력과, 상기 제 3 피연산자의 부호를 수신하기 위한 2차 제어 입력과, 그리고 상기 바이어스된 가수 신호를 제공하기 위해 상기 가산기의 상기 3차 입력에 결합되는 출력으로 구성되는 멀티플렉서(560)를 포함하는 것을 특징으로 하는 승산기-가산기.
  6. 제1항, 제2항, 제3항 및 제5항에 있어서,
    상기 제 1 피연산자 및 상기 제 2 피연산자는 패킹된 피연산자(packed operands)로 구성되고, 상기 승산기-가산기는 포화가 적용된, 유사한 복수의 곱셈-덧셈 결과를 산출하기 위한 복수의 섹션(sections)으로 구성되는 것을 특징으로 하는 승산기-가산기.
  7. 산술 연산 처리 장치(arithmetic processing unit)(200)로서,
    제 1 피연산자와 제 2 피연산자의 곱을 나타내는 합 신호 및 캐리 신호를 제공하기 위한 승산기(220)와;
    상기 합 신호와 상기 캐리 신호와 바이어스 신호의 합을 나타내는 중간 결과 신호를 제공하기 위한 가산기(230)와;
    상기 제 1 피연산자와 상기 제 2 피연산자의 곱 결과 부호에 따라 결정되는 값을 갖는 상기 바이어스 신호를 제공하기 위한 바이어스 생성기(240)와; 그리고
    상기 곱 결과 부호 및 상기 중간 결과의 부호에 응답하여 상기 가산기의 1차 출력 신호의 일부분, 포화 최소값, 포화 최대값 중 하나를 선택하기 위한 출력 선택 회로(260)를 포함하는 것을 특징으로 하는 산술 연산 처리 장치.
  8. 제7항에 있어서,
    상기 가산기는 부호 확장 가수(sign-extended addend)에 따라 상기 중간 결과 신호를 추가로 제공하는 것을 특징으로 하는 산술 연산 처리 장치.
  9. 제8항에 있어서,
    상기 부호 확장 가수를 제공하기 위해 제 3 피연산자를 부호 확장(sign-extending)시키는 부호 확장 로직(sign extension logic)(250)을 더 포함하는 것을 특징으로 하는 산술 연산 처리 장치.
  10. 제7항, 제8항, 제9항, 제11항 및 제13항에 있어서,
    상기 제 1 피연산자, 상기 제 2 피연산자 및 상기 제 3 피연산자 각각은 부호 있는 정수로 구성되는 것을 특징으로 하는 산술 연산 처리 장치.
  11. 제9항에 있어서,
    상기 바이어스 생성기(240)는, 상기 제 1 피연산자와 상기 제 2 피연산자의 상기 곱 결과 부호에 응답하여 부 바이어스(negative bias)와 정 바이어스(positive bias) 중 하나를 상기 바이어스 신호로서 제공하는 것을 특징으로 하는 산술 연산 처리 장치.
  12. 제7항, 제8항, 제9항, 제11항 및 제13항에 있어서,
    상기 제 1 피연산자(612) 및 상기 제 2 피연산자(614)는 패킹된 피연산자로 구성되고, 상기 산술 연산 처리 장치는 포화가 적용된, 유사한 복수의 결과(618)를 산출하기 위한 복수의 섹션으로 구성되는 것을 특징으로 하는 산술 연산 처리 장치.
  13. 제7항에 있어서,
    상기 출력 선택 회로(260, 460)는 또한 상기 1차 출력 신호의 상기 일부분의 최상위 비트(most significant bit)를 반전(invert)(450)시키는 것을 특징으로 하는 산술 연산 처리 장치.
  14. 제 1 피연산자(212)와 제 2 피연산자(214)의 곱을 나타내는 합 신호 및 캐리 신호를 생성하는 단계와;
    상기 제 1 피연산자와 상기 제 2 피연산자의 곱 결과 부호에 따라 결정되는 값을 갖는 바이어스 신호를 생성하는 단계(240)와;
    상기 합 신호와 상기 캐리 신호와 부호 확장 가수와 상기 바이어스 신호의 합산(230)에 응답하여 1차 출력 신호를 제공하는 단계와; 그리고
    상기 곱 결과 부호 및 상기 1차 출력 신호의 부호에 응답하여 상기 1차 출력 신호의 일부분, 포화 최소값(462), 포화 최대값(464) 중 하나를 최종 결과로서 선택하는 단계를 포함하는 것을 특징으로 하는 방법.
  15. 제14항에 있어서,
    상기 합 신호 및 상기 캐리 신호를 생성하는 단계는 또한, 캐리-저장 승산기 어레이(424) 및 부스 레코딩(422)을 사용하여 상기 합 신호 및 상기 캐리 신호를 생성하는 것을 포함하는 것을 특징으로 하는 방법.
  16. 제14항에 있어서,
    상기 합 신호와 상기 캐리 신호 각각의 비트 크기와 일치하도록 제 3 피연산자(216)를 부호 확장시키는 단계(250)를 더 포함하는 것을 특징으로 하는 방법.
  17. 제16항에 있어서,
    상기 바이어스 신호를 생성하는 단계는 또한,
    상기 제 1 피연산자(212)의 부호 비트와;
    상기 제 2 피연산자(214)의 부호 비트와;
    상기 제 1 피연산자와 상기 제 2 피연산자를 근거로 하는 곱셈의 상기 곱 결과 부호의 결정과; 그리고
    상기 곱 결과 부호에 따른 부 바이어스(242) 또는 정 바이어스(244)의 선택(248)에 응답하여,
    상기 바이어스 신호를 생성하는 것을 포함하는 것을 특징으로 하는 방법.
  18. 제14항, 제15항, 제16항 및 제17항에 있어서,
    상기 최종 결과는 상기 제 3 피연산자와 동일한 2진 비트 수로 구성되는 것을 특징으로 하는 방법.
  19. 제14항에 있어서,
    상기 합 신호 및 상기 캐리 신호를 생성하는 단계는 제1의 패킹된 피연산자와 제2의 패킹된 피연산자의 곱을 나타내는 패킹된 합 신호 및 캐리 신호를 생성하는 것을 포함하는 것을 특징으로 하는 방법.
  20. 제14항, 제15항, 제16항 및 제17항에 있어서,
    상기 1차 출력 신호를 제공하는 단계는, 상기 합 신호와 상기 캐리 신호와 상기 부호 확장 가수와 상기 바이어스 신호의 합으로서 상기 1차 출력 신호를 제공하는 것을 포함하며, 상기 최종 결과에는 상기 합보다 적은 2진 비트 수가 포함되는 것을 특징으로 하는 방법.
KR1020117030951A 2009-05-27 2010-05-24 포화가 적용된 정수 곱셈 연산 및 곱셈-덧셈 연산 KR101560340B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/472,715 US8316071B2 (en) 2009-05-27 2009-05-27 Arithmetic processing unit that performs multiply and multiply-add operations with saturation and method therefor
US12/472,715 2009-05-27

Publications (2)

Publication Number Publication Date
KR20120017457A true KR20120017457A (ko) 2012-02-28
KR101560340B1 KR101560340B1 (ko) 2015-10-14

Family

ID=42299237

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117030951A KR101560340B1 (ko) 2009-05-27 2010-05-24 포화가 적용된 정수 곱셈 연산 및 곱셈-덧셈 연산

Country Status (6)

Country Link
US (1) US8316071B2 (ko)
EP (1) EP2435904B1 (ko)
JP (1) JP5640081B2 (ko)
KR (1) KR101560340B1 (ko)
CN (1) CN102804128B (ko)
WO (1) WO2010138432A1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
WO2014105154A1 (en) * 2012-12-24 2014-07-03 Intel Corporation Systems, methods, and computer program products for performing mathematical operations
US20160179530A1 (en) * 2014-12-23 2016-06-23 Elmoustapha Ould-Ahmed-Vall Instruction and logic to perform a vector saturated doubleword/quadword add
US9836278B2 (en) * 2015-05-29 2017-12-05 Huawei Technologies Co., Ltd. Floating point computation apparatus and method
EP3529695B1 (en) 2016-10-20 2023-10-11 INTEL Corporation Systems, apparatuses, and methods for fused multiply add
US11327718B2 (en) * 2020-03-19 2022-05-10 Kabushiki Kaisha Toshiba Arithmetic circuitry for power-efficient multiply-add operations
CN111610955B (zh) * 2020-06-28 2022-06-03 中国人民解放军国防科技大学 一种数据饱和加打包处理部件、芯片及设备
CN116257207B (zh) * 2022-09-08 2023-10-03 重庆位图信息技术有限公司 一种数据截位方法、模块、计算机设备及存储介质

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6211933A (ja) 1985-07-09 1987-01-20 Nec Corp 演算回路
US5623434A (en) 1994-07-27 1997-04-22 Chromatic Research, Inc. Structure and method of using an arithmetic and logic unit for carry propagation stage of a multiplier
US5742840A (en) 1995-08-16 1998-04-21 Microunity Systems Engineering, Inc. General purpose, multiple precision parallel operation, programmable media processor
US5953241A (en) 1995-08-16 1999-09-14 Microunity Engeering Systems, Inc. Multiplier array processing system with enhanced utilization at lower precision for group multiply and sum instruction
JP3710193B2 (ja) * 1996-03-11 2005-10-26 沖電気工業株式会社 積和演算回路
JPH1173408A (ja) * 1997-08-29 1999-03-16 Internatl Business Mach Corp <Ibm> 演算処理システム及び演算処理方法
US6223198B1 (en) 1998-08-14 2001-04-24 Advanced Micro Devices, Inc. Method and apparatus for multi-function arithmetic
US7870182B2 (en) * 2003-12-29 2011-01-11 Xilinx Inc. Digital signal processing circuit having an adder circuit with carry-outs
US7882165B2 (en) * 2003-12-29 2011-02-01 Xilinx, Inc. Digital signal processing element having an arithmetic logic unit
US7428566B2 (en) * 2004-11-10 2008-09-23 Nvidia Corporation Multipurpose functional unit with multiply-add and format conversion pipeline
US20060101244A1 (en) * 2004-11-10 2006-05-11 Nvidia Corporation Multipurpose functional unit with combined integer and floating-point multiply-add pipeline
JP2008522304A (ja) 2004-12-01 2008-06-26 エヌエックスピー ビー ヴィ マルチオペランド演算回路を有する電子装置
US7716266B2 (en) * 2005-02-01 2010-05-11 International Business Machines Corporation Common shift-amount calculation for binary and hex floating point
JP2006227939A (ja) * 2005-02-17 2006-08-31 Matsushita Electric Ind Co Ltd 演算装置
CN100410873C (zh) * 2005-04-12 2008-08-13 威盛电子股份有限公司 分离饱和加减功能以改善处理器管线的关键执行阶段时程
US8082287B2 (en) 2006-01-20 2011-12-20 Qualcomm Incorporated Pre-saturating fixed-point multiplier

Also Published As

Publication number Publication date
WO2010138432A1 (en) 2010-12-02
CN102804128A (zh) 2012-11-28
US8316071B2 (en) 2012-11-20
JP2012528391A (ja) 2012-11-12
US20100306301A1 (en) 2010-12-02
KR101560340B1 (ko) 2015-10-14
CN102804128B (zh) 2015-08-19
EP2435904A1 (en) 2012-04-04
JP5640081B2 (ja) 2014-12-10
EP2435904B1 (en) 2016-05-04

Similar Documents

Publication Publication Date Title
KR101560340B1 (ko) 포화가 적용된 정수 곱셈 연산 및 곱셈-덧셈 연산
US8078660B2 (en) Bridge fused multiply-adder circuit
KR102627299B1 (ko) 부동소수점 곱셈 장치 및 방법
US20160092169A1 (en) Standalone floating-point conversion unit
JPH0612229A (ja) 乗累算回路
US5148386A (en) Adder-subtracter for signed absolute values
US20100125621A1 (en) Arithmetic processing device and methods thereof
CN109901813B (zh) 一种浮点运算装置及方法
US20130282784A1 (en) Arithmetic processing device and methods thereof
TWI776213B (zh) 用於將輸入集相乘之硬體電路及方法,以及非暫時性機器可讀儲存裝置
US20070174379A1 (en) Pre-saturating fixed-point multiplier
JP2010238011A (ja) ベクトル乗算処理装置および方法ならびにプログラム
JP2722858B2 (ja) 開平演算装置
JP2006172035A (ja) 除算・開平演算器
JP3306497B2 (ja) 浮動小数点乗算器における丸め回路
US5870322A (en) Multiplier to selectively perform unsigned magnitude multiplication or signed magnitude multiplication
EP3289445B1 (en) Floating point computation apparatus and method
JPS6285333A (ja) 浮動小数点乗算器丸め処理方式
JPH0527950A (ja) 開平演算装置
JP3137131B2 (ja) 浮動小数点乗算器及び乗算方法
JP2006301685A (ja) 乗算装置
JP3803653B2 (ja) 乗算処理装置
JP5603609B2 (ja) ロジスティック写像の演算装置
JP3100868B2 (ja) 浮動小数点数のための算術演算装置
JPH10333886A (ja) 浮動小数点の乗算回路

Legal Events

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

Payment date: 20180918

Year of fee payment: 4