KR102627299B1 - 부동소수점 곱셈 장치 및 방법 - Google Patents

부동소수점 곱셈 장치 및 방법 Download PDF

Info

Publication number
KR102627299B1
KR102627299B1 KR1020160116944A KR20160116944A KR102627299B1 KR 102627299 B1 KR102627299 B1 KR 102627299B1 KR 1020160116944 A KR1020160116944 A KR 1020160116944A KR 20160116944 A KR20160116944 A KR 20160116944A KR 102627299 B1 KR102627299 B1 KR 102627299B1
Authority
KR
South Korea
Prior art keywords
bit
mantissa
product
rounding
shift
Prior art date
Application number
KR1020160116944A
Other languages
English (en)
Other versions
KR20170037518A (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 KR20170037518A publication Critical patent/KR20170037518A/ko
Application granted granted Critical
Publication of KR102627299B1 publication Critical patent/KR102627299B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/487Multiplying; Dividing
    • 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/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/487Multiplying; Dividing
    • G06F7/4876Multiplying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • G06F5/012Methods 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49942Significance control
    • G06F7/49947Rounding
    • 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

Landscapes

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

Abstract

부동소수점 곱셈의 장치 및 방법을 제공한다. 2개의 부분 곱은 2개의 오퍼랜드 가수로부터 생성된다. 비편향 결과 지수는, 오퍼랜드 지수값들 및 선두 제로 카운트와, 필요에 따라 소정의 정규 형식의 소정의 최소 지수값에 대한 곱 가수의 시프트량과 시프트 방향으로부터 결정된다. 상기 부분 곱의 가산에 주입하기 위한 제1 및 제2의 라운딩 값은, 제1 라운딩 값에 대한 반대의 시프트 방향으로 소정의 라운딩 패턴을 상기 시프트 방향만큼 시프트시키고 제2 라운딩 값을 주기 위해 상기 제1 라운딩을 1비트씩 좌측 시프트함으로써, 생성된다. 제1 및 제2의 부분 곱은, 제1 곱 가수를 주기 위해 제1 라운딩 값과 함께 가산되고, 제2 곱 가수를 주기 위해 제2 라운딩 값과 함께 가산된다. 이들 곱 가수는 시프트 방향으로 시프트량만큼 시프트되고 나서, 하나의 곱 가수가 소정의 정규 형식으로 포맷된 가수를 생성하기 위해서 선택된다. 조기 주입 라운딩은, 보다 빠른 부동소수점 곱셈기를 제공한다.

Description

부동소수점 곱셈 장치 및 방법{APPARATUS AND METHOD FOR FLOATING-POINT MULTIPLICATION}
본 발명은, 데이터 처리장치에 관한 것이다. 보다 구체적으로, 본 발명은, 데이터 처리장치에서의 부동소수점 곱셈에 관한 것이다.
부동소수점 곱셈 능력은 데이터 처리장치에 구비될 수도 있다. 숫자의 부동소수점 형식은, 특히 표현할 수 있는 큰 범위의 값들을 고려하여 지원되는데 유용하다. 이에 따라, 데이터 처리장치에는, 구체적으로 이러한 부동소수점 값들의 곱셈을 처리하기 위해서 제공된 부동소수점 곱셈기가 구비되어도 된다. 그럼에도 불구하고, 이러한 부동소수점 곱셈기의 구현의 여러 가지 측면들은, 특히 그 곱셈기가 빠르고 효율적으로 연산해야 하는 경우 고려할만 하고, 이들의 복잡성들은 보다 커져, 곱셈기가 수신하는 부동소수점 곱셈용 오퍼랜드의 표현에 있어서 보다 많은 융통성이 허용된다. 예를 들면, 부동소수점 곱셈기의 구성은, 정규화된 입력에 대한 입력 오퍼랜드들의 표현을 제한하여서 단순화되어도 되고, 또 보다 일반적으로는, 데이터 처리장치가 처리하는데 요구되는 부동소수점 값들은 반드시 이러한 정규화된 표현에 따르지 않으므로 곱셈기의 입력 스테이지들에서 추가의 능력이 비정규화된 입력들을 정규화된 표현으로 변환하도록 구성될 필요가 있다. 데이터 처리장치에서의 부동소수점 곱셈을 처리하기 위한 향상된 기술을 제공하는 것이 바람직할 것이다.
적어도 하나의 실시예의 부동소수점 곱셈장치는, 제1 부동소수점 오퍼랜드와 제2 부동소수점 오퍼랜드의 가수(significand)를 곱하여 제1 및 제2의 부분 곱을 생성하는 부분 곱 생성회로; 소정의 정규 형식의 소정의 최소 지수값에 따라, 제1 및 제2의 부동소수점 오퍼랜드의 지수값들과 선두 제로 카운트에 따라 곱셈 결과의 비편향 지수의 값을 산출하고, 제1 및 제2의 부분 곱의 가산 연산에 의해 생성된 곱 가수에 대한 시프트량과 시프트 방향을 결정하는 지수 산출회로; 상기 가산 연산에 주입하기 위한 제1 및 제2의 라운딩 값을 생성하는 회로로서, 상기 시프트 방향에 반대방향으로 상기 시프트량만큼 소정의 라운딩 패턴을 시프트시켜서 제1 라운딩 값을 생성하고 제1 라운딩 값을 1비트씩 좌측 시프트하여서 제2 라운딩 값을 생성하는 라운딩 시프트 회로를 갖는, 라운딩 주입회로; 제1 곱 가수를 생성하기 위해서 상기 가산 연산의 제1 라운딩 값과 함께 상기 제1 및 제2의 부분 곱을 가산하는 제1 가산기 회로; 제2 곱 가수를 생성하기 위해서 상기 가산 연산의 제2 라운딩 값과 함께 상기 제1 및 제2의 부분 곱을 가산하는 제2 가산기 회로; 상기 제1 및 제2의 곱 가수 중 적어도 하나를, 상기 시프트 방향으로 상기 시프트량만큼 시프트시키는 가수 시프트 회로; 및 상기 소정의 정규 형식으로 포맷된 가수를 생성하기 위해서 상기 제1 및 제2의 곱 가수 중 하나를 선택하는 선택회로를 구비한다.
적어도 하나의 실시예의 부동소수점 곱셈장치는, 제1 부동소수점 오퍼랜드와 제2 부동소수점 오퍼랜드의 가수를 곱하여 제1 및 제2의 부분 곱을 생성하는 수단; 소정의 정규 형식의 소정의 최소 지수값에 따라, 제1 및 제2의 부동소수점 오퍼랜드의 지수값들과 선두 제로 카운트에 따라 곱셈 결과의 비편향 지수의 값을 산출하고, 제1 및 제2의 부분 곱의 가산 연산에 의해 생성된 곱 가수에 대한 시프트량과 시프트 방향을 결정하는 수단; 상기 가산 연산에 주입하기 위한 제1 및 제2의 라운딩 값을 생성하는 수단으로서, 상기 시프트 방향에 반대방향으로 상기 시프트량만큼 소정의 라운딩 패턴을 시프트시켜서 제1 라운딩 값을 생성하는 수단과, 제1 라운딩 값을 1비트씩 좌측 시프트하여서 제2 라운딩 값을 생성하는 수단을 갖는, 제1 및 제2의 라운딩 값을 생성하는 수단; 제1 곱 가수를 생성하기 위해서 상기 가산 연산의 제1 라운딩 값과 함께 상기 제1 및 제2의 부분 곱을 가산하는 수단; 제2 곱 가수를 생성하기 위해서 상기 가산 연산의 제2 라운딩 값과 함께 상기 제1 및 제2의 부분 곱을 가산하는 수단; 상기 제1 및 제2의 곱 가수 중 적어도 하나를, 상기 시프트 방향으로 상기 시프트량만큼 시프트시키는 수단; 및 상기 소정의 정규 형식으로 포맷된 가수를 생성하기 위해서 상기 제1 및 제2의 곱 가수 중 하나를 선택하는 수단을 구비한다.
적어도 하나의 실시예의 부동소수점 곱셈을 행하기 위한 데이터 처리장치의 연산방법은, 제1 부동소수점 오퍼랜드와 제2 부동소수점 오퍼랜드의 가수를 곱하여 제1 및 제2의 부분 곱을 생성하는 단계; 소정의 정규 형식의 소정의 최소 지수값에 따라, 제1 및 제2의 부동소수점 오퍼랜드의 지수값들과 선두 제로 카운트에 따라 곱셈 결과의 비편향 지수의 값을 산출하고, 제1 및 제2의 부분 곱의 가산 연산에 의해 생성된 곱 가수에 대한 시프트량과 시프트 방향을 결정하는 단계; 상기 가산 연산에 주입하기 위한 제1 및 제2의 라운딩 값을 생성하는 단계로서, 상기 시프트 방향에 반대방향으로 상기 시프트량만큼 소정의 라운딩 패턴을 시프트시켜서 제1 라운딩 값을 생성하는 것과 제1 라운딩 값을 1비트씩 좌측 시프트하여서 제2 라운딩 값을 생성하는 것으로 이루어진, 단계; 제1 곱 가수를 생성하기 위해서 상기 가산 연산의 제1 라운딩 값과 함께 상기 제1 및 제2의 부분 곱을 가산하는 단계; 제2 곱 가수를 생성하기 위해서 상기 가산 연산의 제2 라운딩 값과 함께 상기 제1 및 제2의 부분 곱을 가산하는 단계; 상기 제1 및 제2의 곱 가수 중 적어도 하나를, 상기 시프트 방향으로 상기 시프트량만큼 시프트시키는 단계; 및 상기 소정의 정규 형식으로 포맷된 가수를 생성하기 위해서 상기 제1 및 제2의 곱 가수 중 하나를 선택하는 단계를 포함한다.
본 기술은, 아래의 첨부도면에 나타낸 것처럼 본 기술의 실시예들을 참조하여 예로만 한층 더 설명하겠다:
도 1a는 일 실시예에서 곱 가수가 범위 내에 있는 경우와 곱 가수가 오버플로우되는 경우에 입력 오퍼랜드 양쪽이 정규일 때 상기 곱 가수내의 비트 위치들을 나타내고;
도 1b는 일 실시예에서 곱 가수가 범위 내에 있는 경우와 곱 가수가 오버플로우되는 경우에 그 오퍼랜드들의 한쪽이 비정규인 경우에 상기 곱 가수내의 비트 위치들을 나타내고;
도 2는 일 실시예에서 부동소수점 곱셈 장치를 개략적으로 나타내고;
도 3은 일 실시예에서 라운딩 주입회로를 개략적으로 나타내고;
도 4는 일 실시예에서 곱 가수의 오버플로우가 일어났는지를 판정하는 회로를 개략적으로 나타내고;
도 5는 일 실시예에서 곱 가수가 좌측 시프트되고 오버플로우될 때 사용된 최종(last), 가드(guard) 및 스티키(sticky) 비트들을 결정하기 위한 회로를 개략적으로 나타내고;
도 6은 일 실시예에서 곱 가수가 좌측 시프트되고 오버플로우되지 않을 때 사용된 상기 최종, 가드 및 스티키 비트들을 결정하기 위한 회로를 개략적으로 나타내고;
도 7은 일 실시예에서 곱 가수가 우측 시프트될 때 상기 최종, 가드 및 스티키 비트들을 결정하는데 사용된 회로를 개략적으로 나타내고;
도 8a는 일 실시예에서 RNE 라운딩을 적용할 때 사용된 라운딩 보정회로를 개략적으로 나타내고;
도 8b는 일 실시예에서 결과가 정확한지 부정확한지를 검출하는데 사용된 부정확 검출회로를 개략적으로 나타내고;
도 9a는 일 실시예에서 언더플로우 검출회로를 개략적으로 나타내고;
도 9b는 일 실시예에서 플러시 투 제로(flush-to-zero) 검출회로를 개략적으로 나타내고;
도 10a 내지 10c는 일 실시예에 따른 방법을 실시할 때 취해진 일련의 단계를 나타낸다.
적어도 하나의 실시예의 부동소수점 곱셈장치는, 제1 부동소수점 오퍼랜드와 제2 부동소수점 오퍼랜드의 가수를 곱하여 제1 및 제2의 부분 곱을 생성하는 부분 곱 생성회로; 소정의 정규 형식의 소정의 최소 지수값에 따라, 제1 및 제2의 부동소수점 오퍼랜드의 지수값들과 선두 제로 카운트에 따라 곱셈 결과의 비편향 지수의 값을 산출하고, 제1 및 제2의 부분 곱의 가산 연산에 의해 생성된 곱 가수에 대한 시프트량과 시프트 방향을 결정하는 지수 산출회로; 상기 가산 연산에 주입하기 위한 제1 및 제2의 라운딩 값을 생성하는 회로로서, 상기 시프트 방향에 반대방향으로 상기 시프트량만큼 소정의 라운딩 패턴을 시프트시켜서 제1 라운딩 값을 생성하고 제1 라운딩 값을 1비트씩 좌측 시프트하여서 제2 라운딩 값을 생성하는 라운딩 시프트 회로를 갖는, 라운딩 주입회로; 제1 곱 가수를 생성하기 위해서 상기 가산 연산의 제1 라운딩 값과 함께 상기 제1 및 제2의 부분 곱을 가산하는 제1 가산기 회로; 제2 곱 가수를 생성하기 위해 상기 가산 연산의 제2 라운딩 값과 함께 상기 제1 및 제2의 부분 곱을 가산하는 제2 가산기 회로; 상기 제1 및 제2의 곱 가수 중 적어도 하나를, 상기 시프트 방향으로 상기 시프트량만큼 시프트시키는 가수 시프트 회로; 및 상기 소정의 정규 형식으로 포맷된 가수를 생성하기 위해서 상기 제1 및 제2의 곱 가수 중 하나를 선택하는 선택회로를 구비한다.
본 기술에 의해 인식된 것은, 곱 가수내의 주입 라운딩이 일어나는 경우 아직 분명히 알려져 있는 스테이지에서(즉, 비트 위치에서), 향상된 부동소수점 곱셈 장치를 곱셈 프로세스에서 주입 라운딩을 초기에 행하도록 배치함으로써, (특히, 정규화될 필요가 없는) 입력 오퍼랜드들이 수신되는 형식에 관해 놓인 제약이 없을 경우라도, 2개의 입력 부동소수점 오퍼랜드의 곱을 생성할 수 있는 특히 속도라는 점에서 상기 향상된 부동소수점 곱셈 장치를 제공한다는 것이다. 필수적으로, 이것은, 상기 곱셈의 초기의 스테이지들에서, 상기 곱의 선두 비트가 어디에 있는지 아직 알려져 있지 않기 때문이고, 또 본 기술에 의해 인식된 것은, 1비트 위치내에 대한 지점을 계산하는 것이 가능하다는 것이다. 이 인식에 의거하여, 본 기술은, 2개의 가산기 회로에서 주입 라운딩에 각각 사용된 상기 주입 라운딩을 위한 2개의 라운딩 상수를 구성하는 라운딩 주입회로를 제공하고, 하나의 가산기 회로는 오버플로우가 일어나고( 이에 따라 상기 곱의 선두 비트가 보다 상위의 1비트 위치인) 곱 가수를 처리하도록 구성되고, 나머지 다른 하나의 가산기 회로는 (오직 제1 및 제2의 부분 곱의 가산으로부터) 오버플로우가 일어나지 않을(이에 따라 곱의 선두 비트 위치가 상기 오버플로우의 경우보다 하위의 하나의 위치일) 때 곱 가수를 처리하도록 구성된다. 그렇지만, 상기 가수 곱의 선두 비트의 위치에 대한 이 1비트 비트 불확실성과 아울러, 입력 오퍼랜드의 형태는, 주입 라운딩이 일어나야 하는 적절한 비트 위치를 결정하는데 상당한 역할을 한다. 이것은, 양쪽의 입력이 정규인 경우에 언라운드된 곱이 (오버플로우를 고려하는) 곱 가수 형식의 최상위 비트 위치 또는, (오버플로우가 일어나지 않을 때) 이것 아래의 1비트 위치 중 어느 한쪽에 있는 선두 비트를 제시한다는 사실에 기인한다. 그렇지만, 입력 오퍼랜드들 중 한쪽이 비정규일 때, 즉 다수의 선두 제로들을 가질 때, 이에 대응하게 논(non) 오버플로우 곱에 그 선두 제로의 수와 오버플로우 곱에서 선두 제로의 수미만의 수가 있다. 양쪽의 입력 오퍼랜드들이 비정규일 경우에, 이것은 제시불가능하게 작은 곱을 발생시킬 것이고, 상기 생성된 출력 값은 입력 오퍼랜드들의 값들에 의존하지 않고, 오직 라운딩 모드에 의해 결정된다는 것을 주목한다.
그리고, 이와 관련해서, 제1 및 제2의 가산기 회로 각각에 의해 실시된 가산 연산에 주입될 제1 및 제2의 라운딩 값을 생성하기 위해서, 본 기술에서는, (예를 들면, 가능하다면, 또 상기와 같은 편향 지수를 사용하는 경우 IEEE 754-2008 FP 표준에 따른 부동소수점 값들을 생성할 때 평상시의 것인, 정규화된) 원하는 소정의 정규 형식으로 표현되는 곱셈의 결과가 되는 시프트량과 방향을 결정하기 위해서, 상기 2개의 입력 오퍼랜드의 지수 값들을 검사하고 그들의 각각의 선두 제로 카운트를 결정하는 지수 산출회로를 제공한다. 이렇게 상기 곱 가수에 대해 결정된 시프트량과 방향에 근거하여, 상기 라운딩 주입회로는, 상기 시프트 방향과 반대의 방향으로 상기 시프트량만큼 소정의 라운딩 패턴을 시프트하여서 제1 및 제2의 라운딩 값을 생성한다. 제2 라운딩 값은, 상기 제1 라운딩 값을 1비트씩 좌측 시프트하여서 생성된다. 달리 말하면, 기수(base) 라운딩 주입이, 결정되고 나서(즉, 상기 소정의 정규 형식으로 표현되도록 시프팅을 요구하지 않는 곱 가수의 경우에 적용하는 주입), 그 뒤에 요구된 가수 시프트의 크기가 동일한 반대방향으로 시프트된다. 이에 따라 상기 라운딩 주입은 라운딩 정확한 장소에 일어나면서 시프트되지 않은 가수에 가산될 수 있다. 특히, 이에 따라 라운딩 주입이 곱셈 프로세스에서 초기에 일어날 수 있어, 제1 및 제2의 가산기 회로에 의해 제1 및 제2의 부분 곱의 가산 후에, 요구되기 위해 결정되어 있던 시프트는 상기 가수 시프트 회로에 의해 나중에 행해지도록 요구받는 중인 라운딩 주입 없이, 상기 소정의 정규 형식으로 상기 요구된 포맷 가수를 생성하는데 적용될 수 있다.
상기 제1 가산기 회로와 제2 가산기 회로의 형태는 다양할 수도 있지만, 일 실시예에서, 상기 제1 가산기 회로는 상기 제2 가산기 회로에서 생성한 제2 곱 가수보다 1비트 미만인 제1 곱 가수를 생성하도록 구성된다. 달리 말하면, 상기 제1 가산기 회로에서 지원한 최대 비트 폭은, 상기 제2 가산기 회로에서 지원한 것보다 1비트 미만이어도 된다. 이러한 특별한 배치의 규정은 제1 및 제2의 부분 곱의 합의 최대 비트 폭이 양쪽의 가산기에 대해 같게 고정된다는 인식에 기초하지만, (제1 라운딩 값을 1비트씩 좌측 시프트하여서 생성된) 제2 라운딩 값의 도입에 의해, 제2 가산기 회로에 대해 일부의 경우에 추가의 (상위) 비트 위치에 캐리를 야기시킬 수 있다. 상기 제1 및 제2 가산기 회로 양쪽이 필수적으로 동일하도록 제공되고, 상기와 같은 캐리를 고려하는 동일한 비트 폭을 처리하도록 구성될 수 있지만, 제1 가산기 회로를 제공하는데 요구된 영역(즉, 게이트의 수)의 감소는 본 실시예에 의해 이루어진다.
소정의 라운딩 패턴의 형태는, 특히 곱셈 연산에 적용되어야 하는 라운딩의 타입에 따라 다양할 수도 있다. 일부의 실시예에서, 상기 소정의 라운딩 패턴은 상기 포맷된 가수에 일치하는 길이를 갖고, 상기 장치의 라운딩 모드가 라운드 투 니어스트 타이즈 투 이븐(round-to-nearest ties-to-even)(RNE)일 때 세트 비트 뒤에 언세트 비트들을 포함하고, 상기 라운딩 모드가 라운드 업(RU)일 때 세트 비트 전부를 포함하고, 상기 반대방향이 좌측이고 상기 라운딩 모드가 라운드 업(round-up)일 때 하위 비트 위치의 수는 시프트량만큼 주어지면 세트되고, 상기 반대방향이 우측일 때 최상위 비트 위치의 수는 시프트량만큼 주어지면 언세트된다. 따라서, 예를 들면, 소수 비트가 23개인 IEEE 754-2008 형식에서 단정도(SP) 부동소수점 수에 관해 부동소수점 곱셈을 행하도록 구성된 장치일 경우에, 그리고, 상기 소정의 라운딩 패턴은, (RU 라운딩에 대해서) 1 뒤에 22개의 0들이 있거나, 1 뒤에 22개의 또 다른 1들이 있다. 곱 가수가 우측 시프트될 필요가 있는 경우, 상기 라운딩 상수는 좌측 시프트되고, 이때 우측의 비트들은 RU비트들로 대체되고(즉, 라운딩 업인 경우 1들), 좌측 시프트된 라운딩 상수는 48비트 값이 된다. 반대로, 곱 가수가 좌측 시프트될 경우, (소정의 라운딩 패턴으로서 시작하는) 라운딩 상수는 우측 시프트되고, 이때 좌측의 비트들은 0들로 대체된다. 우측 시프트된 라운딩 상수는 23비트 값인 채로 있다.
상술한 내용을 감안하면, 2개의 부분 곱의 가산으로 생성한 곱 가수가 오버플로우 된 것인지의 판정은 그 최종 출력 형태를 결정하는데 요구되는 값들을 갖는 상기 곱 가수내의 특정 비트 위치들을 최종적으로 결정하는데 유용하다는 것이 명백하다. 게다가, 이 오버플로우 상태의 판정이 상기 시프트 회로가 곱 가수를 시프트한 후에 그 곱 가수를 검사하고 나서 최상위 비트(예를 들면 SP곱셈기일 경우의 비트 47)가 세트되어 있는지를 확인하여서 결정될 수 있긴 하지만, 본 기술은, 상기 시프트량만큼 우측 시프트되고 나서 시프트 되지 않은 제2 곱 가수에 적용되는 소정의 마스크 패턴으로부터 생성됨으로써 오버플로우 비트 위치를 식별하는 이 오버플로우 식별은 오버플로우 마스크의 사용에 의해 보다 빨리 발생할 수 있는 것을 제공한다. 이에 따라, 일부의 실시예에서, 상기 장치는 제2 곱 가수의 오버플로우 비트 위치를 식별하는 오버플로우 마스크를 생성하는 회로로서, 상기 시프트량만큼 소정의 마스크 패턴을 우측 시프트하여서 상기 오버플로우 마스크를 생성하도록 배치된 마스크 생성회로; 및 오버플로우 비트 위치에서 오버플로우 값을 추출하기 위해 제2 곱 가수에 오버플로우 마스크를 적용하는 회로로서, 상기 가수 시프트 회로가 상기 제1 및 제2의 곱 가수 중 적어도 한쪽을 시프트하기 전에 상기 오버플로우 값을 추출하도록 배치된 비교회로를 구비한다. 이렇게 하여, 상기 오버플로우 값은, 먼저 상기 곱을 시프트한 후 최상위 비트가 세트되었는지를 확인하는 상술한 기술에 결정되는 것보다 상당히 일찍 결정된다. 그리고, 이것이 의미하는 것은, 최종의 곱셈 결과는, 시프팅이 완료되자마자 선택될 수 있다는 것인데, 그 이유는 오버플로우 값이 이미 이용 가능하기 때문이다.
소정의 마스크 패턴의 형태는 다양할 수 있지만, 일 실시예에서 상기 소정의 마스크 패턴은, 제2 곱 가수가 시프트되지 않을 때 제2 곱 가수의 시프트되지 않은 오버플로우 비트 위치에 세트 비트를 포함한다. 따라서, 이 "세트 비트"는, 식별되어도 되고, 시프트 하기 전과, 그리고 나서, 상기 우측 시프트가 소정의 마스크 패턴에 적용될 때, 제2 곱 가수에 대해 임의의 요구된 시프트가 적용되기 전에 오버플로우 비트 위치가 식별될 수 있기 전에, 제2 곱 가수내에서 오버플로우 비트 위치를 추적한다.
그것은 일반적으로, 오버플로우가 발생할 수 있는 좌측 시프트된 곱 가수의 결과이고, 한층 더 본 기술에 의해 인식된 것은 우측 시프트된 곱 가수가 특정한 상황에서 정규 공간에 오버플로우 될 수 있다는 것이라는 것을 알 것이다. 이에 따라, 일부의 실시예에서, 상기 지수 산출회로는, 상기 시프트 방향이 우측이고, 제2 곱 가수의 최상위 비트가 세트되고 상기 시프트량이 2이거나, 제2 곱 가수의 하나의 비트 이외의 최상위 비트가 세트되고 상기 시프트량이 1일 때, 우측 시프트 오버플로우 조건을 식별하는 우측 시프트 오버플로우 결정회로를 구비하고; 상기 지수 산출회로는 우측 시프트 오버플로우 조건에 응답하여 곱셈의 결과의 편향 지수의 값을 1로 세트한다. 달리 말하면, 이들의 2개의 명시적 상황에 대해, 즉 제2 곱 가수의 최상위 비트가 세트되고 시프트량이 2일 때, 또는 제2 곱 가수의 하나의 비트 이외의 최상위 비트가 세트되고 우측 시프트량이 1일 때, 오버플로우가 직접 식별될 수 있다는 것을 인식하고 있다. 따라서, 이들 우측 시프트 오버플로우의 양쪽의 경우에, 상기 결과의 편향 지수는 1로 세트될 것이다. 그 밖의 모든 우측 시프트의 편향 지수는 0이라는 것을 주목한다.
상기 가수 시프트 회로의 형태는 다양할 수 있지만, 일 실시예에서 상기 가수 시프트 회로는, 제1 및 제2의 좌측 시프트된 곱 가수를 주기 위해 시프트량만큼 제1 및 제2의 곱 가수를 좌측 시프트하는 좌측 시프트 회로; 우측 시프트된 곱 가수를 주기 위해 시프트량만큼 제2 곱 가수를 우측 시프트하는 우측 시프트 회로를 구비하고, 상기 좌측 시프트 회로와 상기 우측 시프트 회로는 서로 병렬로 그들의 각각의 시프팅을 행하도록 배치되고; 상기 선택회로는, 출력하기 위해서, 상기 시프트 방향과 상기 오버플로우 값에 응답하여, 포맷된 가수로서 상기 제1 좌측 시프트된 곱 가수, 상기 제2 좌측 시프트된 곱 가수 및 상기 우측 시프트된 곱 가수 중 하나를 선택하고, 상기 포맷된 가수에서 소정 수의 최상위 비트들을 선택한다. 이에 따라, 필요에 따라 상기 제1 또는 제2 곱 가수를 좌측 시프트 또는 우측 시프트할 수 있는 일반적 가수 시프트 회로를 제공할 수 있긴 하지만, 본 기술은, 서로 병렬로 각각의 시프트를 행하도록 배치된 전용 좌측 시프트 회로와 전용 우측 시프트 회로를 제공하여, 병렬로 상기 제1 및 제2의 곱 가수가 좌측 시프트되고 상기 제2 곱 가수가 우측 시프트되고, 그 후의 선택회로는 이들 3개의 시프트의 결과 중 하나를 선택한다. 이러한 선택은 상기 식별된 시프트 방향과 오버플로우 값에 따라 이루어진다, 즉 오버플로우 값에 의해 상기 제1 및 제2의 좌측 시프트된 곱 가수간에 선택이 가능하게 되고, 상기 시프트 방향에 의해 좌측 시프트된 또는 우측 시프트된 곱 가수간에 선택이 가능하게 된다. 또한, 상기 선택회로는, 상기 포맷된 가수에서 소정 수의 최상위 비트를 출력할 수 있고, 그 후, 라운딩된 가수가 23비트를 갖는 SP 부동소수점 값을 출력하는 예에서와 같이 상기 가수의 비트의 수를 감소시킬 수 있지만, 그 제1 및 제2의 곱 가수는 각각 48비트와 49비트를 갖지만, 그 선택된 시프트된 곱 가수내에서 임의의 그 밖의 비트의 수도 만들어질 수 있다.
예를 들면, 부동소수점 곱셈은, 단일 곱셈 가산 연산의 일부를 형성하고, 이에 따라 일 실시예에서 상기 제1 및 제2의 라운딩 값은 0으로 설정되고, 본 장치는 그 곱셈의 라운딩되지 않은 결과를 단일 곱셈 가산의 일부로서 가산기에 보내도록 구성된다. 달리 말하면, 본 기술에 의해 라운딩 주입이 억제되고 나서, 예를 들면 상기 포맷된 가수는, 정밀도가 이용 가능할 만큼 큰 상기 가산기에 제공하는데 적용한 상기 곱 가수의 이용 가능한 모든 비트를 포함하여도 된다.
주입 라운딩을 행할 때, 라운딩이 RNE(round-to-nearest, ties-to-even)모드에서 행해지고 있는 중일 때의 특정한 합을 위해 보정이 필요한 경우들이 있다. 이러한 보정을 결정하기 위해서, 상기 포맷된 가수의 최종(L)비트의 값, 이 값 뒤의 가드(G)비트의 값, 및 이 값 뒤의 스티키(S) 비트들의 세트의 값이 필요하다. 보다 빨리 행해질 수 있는 라운딩의 상술한 이점들은 상기 가수 곱이 시프트된 후 상기 L, G 및 S의 값을 결정한 후에만 행해질 수 있는 그 라운딩에 대한 보정에 의해 손실되지 않게, 이들 값들이 일찍 결정될 수 있도록, 본 기술은, 상기 마스크 생성회로에 의해, 시프팅이 일어나기 전에 최종 비트 위치를 발견할 수 있는 최종 비트 마스크를 생성하므로 그 시프팅이 일어나기 전에 그 최종 비트 값도 결정할 수 있다는 것을 한층 더 제공할 수 있다.
이에 따라, 일부의 실시예에서, 상기 마스크 생성회로는 제1 곱 가수내에서 포맷된 가수의 최종 비트의 최종 비트 위치를 식별하는 최종 비트 마스크를 생성하도록 배치되고, 상기 마스크 생성회로는, 소정의 최종 비트 마스크 패턴을 상기 시프트 방향과 반대의 방향으로 시프트량만큼 시프트시키는 것을 포함하는 최종 비트 마스크를 생성하도록 배치되고, 상기 최종 비트 마스크를 제1 곱 가수에 적용하여 최종 비트 위치에서 최종 비트 값을 추출하는 비교회로를 한층 더 구비한다. 달리 말하면, 상기 지수 산출회로가 주어진 수의 비트의 곱 가수에 대해 좌측 시프트가 필요하다고 결정하는 경우, 상기 마스크 생성회로는 상기 최종 비트 패턴을 동일한 수의 비트만큼 우측 시프트한다. 반대로, 상기 지수 산출회로에 의해 우측 시프트가 필요하다고 결정된 경우에는, 상기 마스크 생성회로는 최종 비트 마스크 패턴을 필요한 수의 비트만큼 좌측 시프트한다. 그리고, 비교회로는, (시프트된) 최종 비트 마스크를 제1 곱 가수에 적용하여, 상기 제1 곱 가수가 자체 시프트되기 전에, 최종 비트 위치에서의 최종 비트 값을 결정할 수 있다. 따라서, 상기에서 라운딩 값들과 오버플로우 마스크를 이용하는 경우와 같이, 여기에서 최종 비트 마스크에 대해 제안된 본 기술에 의해, (제1 및 제2의 곱 가수에 관한 시프트를 행하기 위해 상기 시프트 회로가 대기하지 않고) 최종 비트 위치를 조기에 결정할 수 있어서, 그 곱셈기의 전체 속도를 향상시킨다.
최종 비트 마스크용 마스크 생성회로는 다양한 방식으로 제공되어도 되지만, 일부의 실시예에서 상기 마스크 생성회로는 좌측 시프트 최종 비트 마스크와 우측 시프트 최종 비트 마스크를 생성하도록 배치되고, 상기 비교회로는, 좌측 방향인 시프트 방향에 응답하여 좌측 시프트 최종 비트 마스크를 사용하여 최종 비트 값을 추출하고, 우측 방향인 시프트 방향에 응답하여 우측 시프트 최종 비트 마스크를 사용하여 최종 비트 값을 추출한다. 따라서, 원리상 시프트 방향과 양이 확립되면 필요한 시프트 방향으로 필요에 따라 최종 비트 마스크를 생성하는데 만 가능함에 불구하고, 채용된 본 기술은, 좌측 시프트 최종 비트 마스크와 우측 시프트 최종 비트 마스크 양쪽을 서로 병렬로 생성하고, 결정된 경우의 시프트 방향에 따라 그들 사이에서 선택함으로써, 병렬화를 승인한다. 이것은, 본 장치에서 결과를 생성하는데 필요한 시간을 감소시킬 기회를 한층 더 증가시키는데, 그 이유는, 이들 좌측 시프트와 우측 시프트의 최종 비트 마스크가 미리 준비될 수 있기 때문이다.
상술한 것처럼, 상기 곱 가수의 비트 위치들도 그 곱 가수가 오버플로우 되었는지 아닌지에 따라 달라진다. 따라서, 이것은 상기 곱 가수의 최종 비트의 비트 위치에도 영향을 미친다. 본 장치는 이것을 다수의 방식으로 처리하도록 구성될 수 있었지만, 일부의 실시예에서, 상기 마스크 생성회로는 2개의 좌측 시프트 최종 비트 마스크를 생성하도록 배치되고, 상기 마스크 생성회로는 제1 좌측 시프트 최종 비트 마스크를 1비트씩 우측 시프트하여서 제2 좌측 시프트 최종 비트 마스크를 생성하도록 배치되고, 상기 비교회로는 제1 좌측 시프트 최종 비트 마스크를 제1 곱 가수에 적용하고, 제2 좌측 시프트 최종 비트 마스크를 제2 곱 가수에 적용하도록 배치되고, 상기 비교회로는, 제2 곱 가수의 오버플로우를 가리키는 오버플로우 값에 응답하여 상기 제1 좌측 시프트 최종 비트 마스크를 사용해서 추출된 최종 비트 값을 선택하고, 제2 곱 가수의 오버플로우 없음을 가리키는 오버플로우 값에 응답하여 상기 제2 좌측 시프트 최종 비트 마스크를 사용해서 추출된 최종 비트 값을 선택한다.
본 기술에 의해 인식된 것은, 오버플로우의 경우에 최종 비트를 식별하기 위해 사용하는데 적절한 (통상, 오버플로우를 생성하는 곱 가수의 좌측 시프트라고 인식하고 있는 경우) 상기 곱 가수의 좌측 시프트를 위해 생성된 최종 비트 마스크가, 오버플로우가 없을 때 최종 비트를 식별하는데 적절한 최종 비트 마스크로부터 생성될 수 있고, 이와는 반대로, 다른 최종 비트 마스크로부터 하나를 생성하는데 적용중인 1비트 시프트에 의해 생성될 수 있다는 것이다. 또한, 상술한 것처럼, 이러한 마스크들은, 상기 가수 시프트 회로가 필요한 시프트를 상기 곱 가수들에 적용하기 전에 생성될 수 있으므로, 이러한 곱셈의 특징은, 그 시프트가 발생하기를 기다리는 것이 지연되지 않아서, 곱셈기의 전체 처리속도가 향상된다.
일부의 실시예에서, 상기 소정의 최종 비트 마스크 패턴은, 시프트 방향이 좌측 방향일 때, 언세트(unset) 비트 뒤에 소정 수의 세트 비트를 포함하고, 상기 소정 수의 세트 비트는 소정의 정규 형식으로 상기 포맷된 가수의 비트의 수보다 하나 더 많고, 상기 마스크 생성회로는 상기 소정의 최종 비트 마스크 패턴을 시프트량만큼 우측 시프트하고 그 우측 시프트된 소정의 최종 비트 마스크 패턴에 상기 시프트량만큼 주어진 다수의 언세트 비트를 첨가함으로써 생성된 기수 시프트된 마스크로부터 제1 좌측 시프트 최종 비트 마스크를 생성하도록 배치된다. (최종 비트 위치가 쉽게 식별될 수 있는 상기 기수 시프트된 마크를 생성하는데 사용된) 소정의 최종 비트 마스크 패턴이 다수의 방식으로 규정될 수 있지만, 상술한 것처럼 언세트 비트 뒤에 세트 비트들이 있는 이러한 구성은, 상기 시프트가 적용된 후, 유용하게 최종 비트까지 그리고 이를 최종 비트를 포함하는 언세트 비트들(예를 들면, 0들)과 그 뒤의 세트 비트들(예를 들면, 1들)을 갖는, 비트 패턴을 제시한다. 예를 들면, 2개의 24비트 가수의 곱을 생성하여, 48 또는 49비트 곱이 되는 경우에, 이것은, 0비트 뒤에 24개의 연속적인 1들이 있다. 이러한 비트 패턴이 우측 시프트될 때, 0들은 좌측에 채워진다. 이러한 특별한 구성은, 라운딩 모드가 적용되는 것에 따라, 최종 비트 위치 자체를 식별하는데 유용할 뿐만 아니라, 라운딩 보정을 위해서도 요구될 수 있는 식별된 가드 및 스티키 비트 위치에 대해서도 유용하다. 특히, 개별적으로 이들의 최종, 가드 및 스티키 비트 위치를 골라내기 위해 마스크들을 구성하는데 상기 시프트된 패턴을 쉽게 사용할 수 있기 때문에 이것은 사실입니다.
마찬가지로, 일부의 실시예에서, 상기 소정의 최종 비트 마스크 패턴은, 시프트 방향이 우측 방향일 때, 일련의 언세트 비트 뒤에 소정 수의 세트 비트를 포함하고, 상기 소정 수의 세트 비트는 소정의 정규 형식으로 상기 포맷된 가수의 비트의 수이고, 상기 마스크 생성회로는, 상기 시프트량만큼 소정의 최종 비트 마스크 패턴을 좌측 시프트하고 그 좌측 시프트된 소정의 최종 비트 마스크 패턴에 상기 시프트량만큼 주어진 다수의 세트 비트를 첨가함으로써 생성된 기수 시프트된 마스크로부터 우측 시프트 최종 비트 마스크를 생성하도록 배치된다. 이러한 경우에, 유용할 것이라고 발견된 특별현 시프트되지 않은 패턴은, 일련의 언세트 비트(예를 들면, 0들) 뒤에 일련의 세트 비트(예를 들면, 1들)이 있다. 예를 들면, 2개의 24비트 가수의 곱을 생성하여 48 또는 49비트 곱이 되는 경우에, 이것은 26개의 연속적인 0들 뒤에 23개의 연속적인 1들이 있어도 된다. 이 비트 패턴이 좌측 시프트될 때, 추가의 1들은 우측에 채워진다. 마찬가지로, 이에 따라, 이 시프트된 우측 비트 마스크로부터 생성되는 또 다른 마스크들을 이용하여, 최종 비트 위치가 쉽게 식별될 수 있을 뿐만 아니라, 가드 및 스티키 비트 위치들도 쉽게 식별될 수 있다.
상술한 것처럼, 결과 가수내에 가드 비트를 식별하는데 필요할 수도 있고, 따라서 일부의 실시예에서 상기 마스크 생성회로는 가드 비트 마스크를 생성하도록 배치되고, 상기 가드 비트 마스크는 제1 곱 가수내에서 상기 포맷된 가수의 최종 비트의 위치 아래의 하나의 위치인 가드 비트 위치에서 설정된 비트를 갖고, 상기 비교회로는 상기 가드 비트 마스크를 제1 곱 가수에 적용하여 상기 가드 비트 위치에서 가드 비트 값을 추출하도록 배치된다. 예를 들면, 그 가드 비트 마스크는, 결과적으로 얻어진 출력이 유용하게 가드 비트가 위치되는 세트 비트(예를 들면, 1)과 어디에서나 0들을 갖도록 각각에서 비트들의 정렬이 선택되는 경우에, 최종 비트 마스크를 반전하고 나서 이 반전된 최종 비트 마스크와 반전되지 않은 최종 비트 마스크에 관해 비트 단위 AND를 행하여서 생성되어도 된다. 게다가, 본 기술에 의해 한층 더 인식된 것은, 제2 곱 가수의 또 다른 가드 비트 마스크가, 이 가드 비트 마스크로부터 1비트 우측 시프트를 적용하여서 얻어질 수 있다는 것이다. 마찬가지로, 또한, 본 기술에 의해 인식된 것은, 우측 시프트된 제2 곱 가수를 위한 한층 더 또 다른 가드 비트 마스크가, 우측 시프트 최종 비트 마스크를 반전하고, 그 2개를 1비트 오프셋과 정렬하여, 비트단위 AND를 행하는, 동일한 프로세스에 의해 생성될 수 있다는 것이다.
마찬가지로, 일부의 실시예에서, 상기 마스크 생성회로는 스티키 비트 마스크를 생성하도록 배치되고, 상기 스티키 비트 마스크는 상기 가드 비트 위치 아래의 모든 비트 위치에서 설정된 비트들을 갖고, 상기 비교회로는, 상기 스티키 비트 마스크를 상기 제1 곱 가수에 적용하여 일 세트의 스티키 비트 값들을 추출하고 그 세트의 스티키 비트 값들의 논리적 OR로서 스티키 비트 값 전체를 산출하도록 배치된다. 이렇게 하여, 그 후, 제1 곱 가수의 스티키 비트(보통, 다수의 스티키 비트 이상)는 이 스티키 비트 마스크를 이용하여 식별될 수 있고, 그 후에 전체 스티키 비트 값이 산출될 수 있다. 예를 들면, 스티키 비트 마스크는, 예를 들면, 소정의 마스크 패턴이 스티키 비트 위치 전부에 대한 세트 비트들을 갖는 경우에, 최종 비트와 및 가드 비트를 제외하는, 적절한 비트 선택에 의해 상기 소정의 최종 비트 마스크 패턴으로부터 생성되어도 된다. 본 기술에 의해 확보된 것은, 이들 스티키 비트들이 적용중인 반대의 시프트에 의해 제1 곱 가수에서 정확히 식별되고 나서 그 스티키 비트 마스크가 그들의 스티키 비트 위치들 전부를 직접 식별할 수 있고 전체 S값이 산출될 수 있다는 것이다.
상술한 것처럼, 상기 라운딩 모드에 따라, L 및 G의 값에 대해 보정이 필요하고, 이에 따라 일부의 실시예에서 상기 장치는, 이 장치가 라운드 투 니어스트 타이즈 투 이븐(RNE)인 라운딩 모드에 응답하여, 상기 가드 비트 값의 반대로서 보정된 가드 비트 값을 산출하고, 그 가드 비트 값과 전체 스티키 비트 값의 논리적 OR와 논리곱된 최종 비트 값으로서 보정된 최종 비트 값을 산출하는, 보정회로를 더 구비한다. 따라서, 상기 RNE 라운딩 모드에 있을 때, 적절한 보정이 이루어져도 된다.
또한, 부동소수점 곱셈의 일부로서 일어나기도 하는 각종 조건을 가리키기 위해서 본 장치가 각종 예외 플래그를 발생시키는 것이 필요한 경우도 있다. 이들 중 하나는, 본 기술이 신규의 해결방법을 제공하는 곱셈을 위한 부정확한 검출이고, 일 실시예에서 상기 장치는 상기 장치가 라운드 업(RU)이 아닌 라운딩 모드에 응답하여, 상기 보정된 가드 비트 값이나 전체 스티키 값이 논제로일 때 부정확한 플래그를 발생시키는 부정확 검출회로를 더 구비한다. 마찬가지로, 일부의 실시예에서, 상기 장치는, 상기 장치가 라운드 업(RU)인 라운딩 모드에 응답하여, 상기 오버플로우 값이 세트될 때, 상기 제1 라운딩 값이 제1 곱 가수의 대응한 하위부와 비트 일치하지 않을 때, 부정확한 플래그를 세트하고, 상기 장치가 라운드 업(RU)인 라운딩 모드에 응답하여, 상기 오버플로우 값이 세트되지 않을 때, 상기 제2 라운딩 값이 제2 곱 가수의 대응한 하위부와 비트 일치하지 않을 때, 부정확한 플래그를 세트하는, 부정확 검출회로를 더 구비한다. 달리 말하면, RU 모드에서 사용된 본 기술은, 상기 곱의 하위 비트들(G와 S에 기여하고 있는 비트들)을 검사하여 이 비트들을 라운딩 주입과 비교하는 기술이다. 이들 비트가 변경되지 않았을 경우, 상기 라운딩 주입은 그 곱을 변경하지 않았고, 그 결과는 정확하다.
또한, 일부의 실시예에서, 본 장치는, 포맷된 가수가 0이고 곱셈의 결과의 편향 지수가 1이고 부정확한 플래그가 세트될 때, 언더플로우 플래그를 세트하는 언더플로우 검출회로를 구비한다. 이 언더플로우 검출회로의 제공은, 부동소수점 곱셈을 실시하기 위한 방법론이, 언더플로우가 라운딩 전에 검출되어야 하고 상술한 조기 주입 라운딩 기술들에 의해 사전라운딩된 곱이 없는 것을 규정할 수도 있기 때문에, 유용하다. 문제가 되는 경우는 비정규 곱을 최소 정규 곱으로 변경하는 라운딩 주입이고, 이 경우에 소수부가 모드 0이고, 상기 편향 지수가 0에서 1로 변경되어 있다. 이렇게 하여, 언더플로우 검출회로는, 이 경우를, 상기 포맷된 가수가 0이고 편향 지수가 1인지를 판정하고, 한층 더 그 결과가 정확한지를 알음으로써 검출할 수 있다. 그 결과가 부정확한 경우, 비록 그 곱셈 결과가 실제로 정규 결과일지라도, 상기 라운딩에 의해 정규 수로 오버플로우가 일어나고 나서, 그 언더플로우 플래그가 세트된다.
또한, 일부의 실시예에서, 본 장치는, 상기 곱셈 결과의 편향 지수가 0이고 상기 지수가 오버플로우되지 않거나 그 지수가 라운딩으로 인해 오버플로우될 때, 플러시 투 제로 플래그를 세트하는 플러시 투 제로 플래그 생성회로를 구비한다. 또한, 오버플로우를 검출하기 위해 상술한 것과 같은 동일한 원리는, 상기 플러시 투 제로 플래그는 상기 지수가 0이고 (i) 상기 지수가 오버플로우되지 않거나 (ii) 상기 지수가 라운딩으로 인해 오버플로우되는 경우에 세트된다는 점에서, 언제 플러시 투 제로로 할지를 판정하는데 적용된다.
적어도 일부의 실시예는, 제1 부동소수점 오퍼랜드와 제2 부동소수점 오퍼랜드의 가수를 곱하여 제1 및 제2의 부분 곱을 생성하는 수단; 소정의 정규 형식의 소정의 최소 지수값에 따라, 제1 및 제2의 부동소수점 오퍼랜드의 지수값들과 선두 제로 카운트에 따라 곱셈 결과의 비편향 지수의 값을 산출하고, 제1 및 제2의 부분 곱의 가산 연산에 의해 생성된 곱 가수에 대한 시프트량과 시프트 방향을 결정하는 수단; 상기 가산 연산에 주입하기 위한 제1 및 제2의 라운딩 값을 생성하는 수단으로서, 상기 시프트 방향에 반대방향으로 상기 시프트량만큼 소정의 라운딩 패턴을 시프트시켜서 제1 라운딩 값을 생성하는 수단과, 제1 라운딩 값을 1비트씩 좌측 시프트하여서 제2 라운딩 값을 생성하는 수단을 갖는, 제1 및 제2의 라운딩 값을 생성하는 수단; 제1 곱 가수를 생성하기 위해서 상기 가산 연산의 제1 라운딩 값과 함께 상기 제1 및 제2의 부분 곱을 가산하는 수단; 제2 곱 가수를 생성하기 위해 상기 가산 연산의 제2 라운딩 값과 함께 상기 제1 및 제2의 부분 곱을 가산하는 수단; 상기 제1 및 제2의 곱 가수 중 적어도 하나를, 상기 시프트 방향으로 상기 시프트량만큼 시프트시키는 수단; 및 상기 소정의 정규 형식으로 포맷된 가수를 생성하기 위해서 상기 제1 및 제2의 곱 가수 중 하나를 선택하는 수단을 구비하는 부동소수점 곱셈장치를 제공한다.
적어도 일부의 실시예는, 제1 부동소수점 오퍼랜드와 제2 부동소수점 오퍼랜드의 가수를 곱하여 제1 및 제2의 부분 곱을 생성하는 단계; 소정의 정규 형식의 소정의 최소 지수값에 따라, 제1 및 제2의 부동소수점 오퍼랜드의 지수값들과 선두 제로 카운트에 따라 곱셈 결과의 비편향 지수의 값을 산출하고, 제1 및 제2의 부분 곱의 가산 연산에 의해 생성된 곱 가수에 대한 시프트량과 시프트 방향을 결정하는 단계; 상기 가산 연산에 주입하기 위한 제1 및 제2의 라운딩 값을 생성하는 단계로서, 상기 시프트 방향에 반대방향으로 상기 시프트량만큼 소정의 라운딩 패턴을 시프트시켜서 제1 라운딩 값을 생성하는 것과 제1 라운딩 값을 1비트씩 좌측 시프트하여서 제2 라운딩 값을 생성하는 것으로 이루어진, 단계; 제1 곱 가수를 생성하기 위해서 상기 가산 연산의 제1 라운딩 값과 함께 상기 제1 및 제2의 부분 곱을 가산하는 단계; 제2 곱 가수를 생성하기 위해 상기 가산 연산의 제2 라운딩 값과 함께 상기 제1 및 제2의 부분 곱을 가산하는 단계; 상기 제1 및 제2의 곱 가수 중 적어도 하나를, 상기 시프트 방향으로 상기 시프트량만큼 시프트시키는 단계; 및 상기 소정의 정규 형식으로 포맷된 가수를 생성하기 위해서 상기 제1 및 제2의 곱 가수 중 하나를 선택하는 단계를 포함하는, 부동소수점 곱셈을 행하기 위한 데이터 처리장치의 연산방법을 제공한다.
이제, 일부의 특별한 실시예에 대해서 도면들을 참조하여 설명한다.
부동소수점 수는 하나의 부호 비트, 지수 비트들, 및 소수 비트들로 이루어진다. 예를 들면, IEEE 754-2008 형식의 단정도(SP) 부동소수점 수는, 이들이 단일의 부호 비트, 8 지수 비트 및 23 소수비트로 이루어진 32비트로 주어진다. 2개의 이러한 부동소수점 수간의 곱셈을 행할 때, 상기 소수 비트들은 함께 곱해져야 하고, 지수 비트들은 가산되지만, 물론 그 소수 비트 곱셈의 결과는 결과 부동소수점 값이 제시되어야 하는 특별한 형식에 따라 결과 지수에 대해 수정을 필요로 할 수 있다. 부동소수점 결과 값이 본 예에서는 정규 SP 부동소수점 형식에서 생성되는 것이 유용하고, 여기서, 상기 가수(소수) 곱은, (가능한 경우) 정규화되거나, 그 곱이 비정상이면 다수의 선두 제로를 갖는다.
2개의 정규 가수를 곱셈할 때, 1.a*1.b, 그 곱은, 범위[1,2)(즉, 정확히 1부터 2까지이지만 2를 포함하지 않음) 또는 [2,4)(즉, 정확히 2부터 4까지이지만, 4를 포함하지 않음)에 있다. 예를 들면
[1,2)에 있고 오버플로우되지 않은, 1.00*1.01=1.0100, 및
[2,4)에 있고 오버플로우된, 1.10*1.10=10.1000.
도 1a는 2개의 정규 23비트 가수의 곱에 대한 가능한 2개의 비트 위치 결과를 나타내고, 여기서, 그 곱은 범위[1,2)에 있고 그 곱의 비트 47이 0이거나, 또는 그 곱은 오버플로우 범위[2,4)에 있고 그 곱의 비트 47이 1이다. 상기 곱의 제1 비트는 i(정수 비트)라고 기재되어 있고, 다음 22비트들은 f(소수 비트들)라고 적혀져 있다. 최종 소수 비트는 L(최종 비트)이라고 기재되어 있고, 그 후의 비트는 G(가드 비트)이고, 나머지 모든 비트는 s(스티키 비트들)라고 기재되어 있다. 단일의 2진 값S는 상기 s비트들의 전부의 논리적 OR이도록 규정된다. 달리 말하면, L은, 이 47비트 곱 또는 48비트 곱이 23비트 부동소수점 가수로서 리턴(return)될 때 그 절단 값의 최하위 비트이고, G는 다음의 최상위 비트(즉, 절단에 있어서 포함되지 않은 제1 비트)이고, S는 상기 절단의 일부가 아닌 나머지 모든 비트의 논리적 OR이다. 이들 3개의 값들은, 아래에 보다 상세히 설명하는 것처럼, 구현되는 특별한 라운딩 모드에 따라, 주입 라운드 곱 가수에 보정을 적용하는데 요구되어도 된다.
도 1b는 입력 오퍼랜드 중 하나가 비정규일 경우의 k개의 선두 제로를 갖는 이들의 명명된 비트들의 비트 위치를 나타낸다. 도 1b에서 볼 수 있듯이, 논오버플로우 곱에서 k개의 선두 제로가 있고 오버플로우 곱에서 k-1개의 선두 제로가 있고, 오버플로우 곱에서는 k-1개의 선두 제로가 있다. 이에 따라, 도 1a 및 1b와, 이들 도면을 참조한 상기 설명으로부터, 정규화되거나 비정규이어도 되는 입력 오퍼랜드들을 접수하는 부동소수점 곱셈기에 있어서, 상술한 특별한 비트들(i, f, L, G 및 s)이 일어나는 비트 위치들은 입력 오퍼랜드들의 특징(정규 또는 비정규)에 따라 또한 곱 가수가 오버플로우하는지에 따라 넓게 달라질 수 있다. 이때, 입력 오퍼랜드들 양쪽이 비정상인 경우는, (이 SP 예에서) 연관된 지수가 -254이하이고 최종 결과 라운딩 모드에 의해서만 결정되기 때문에 이것은 대표 예시되지 않게 아주 작은 곱을 생성하므로 본 문맥에 있어서 사소한 경우다.
도 1a 및 1b를 참조한 상기 내용은 부동소수점 입력 오퍼랜드 가수들을 고려할 뿐이고, 그 지수들을 참조하지 않고 있다.
규정:
expa= 오퍼랜드 a의 비편향 지수,
expb= 오퍼랜드 b의 비편향 지수,
clza= a의 가수에서 선두 제로들의 수,
clzb= b의 가수에서 선두 제로들의 수,
및 clz를 clza 및 clzb의 논리적 OR로 하면, 시프트 전의 그 비편향 결과 지수는,
result_exp= expa + expb - clz이다.
이 산출된 결과 지수에 의거하여, 48비트 곱 가수는, 비트들[47:0]은 상기 곱이 정규일 경우 정규화되거나 그 곱이 비정규일 경우 선두 제로들의 정확한 수를 갖는, 정규 형태로 그 곱을 표현하도록 시프팅을 요구하기도 한다. 이 시프팅은 양쪽의 방향일 수 있다. 즉:
1) result_exp가 -126의 최소 비편향 지수 값 이하일 때 우측 시프트. 이러한 모든 경우에 있어서, 상기 곱 가수는 -126의 최소 비편향 지수 값에 도달하기 위해서 하나 이상의 자리만큼 우측 시프트된다.
2) 비정규 입력이 하나 있고 result_exp가 -126보다 클 때, 좌측 시프트. 이러한 상황에서, 상기 곱 가수는, (어느쪽이든 먼저 발생하는) a) 상기 시프트된 값에 대응한 지수가 -126이고, 또는 b) 그 곱 가수가 정규가 될(즉, i비트가 위치 46에 있을) 때까지, 0이상의 자리들만큼 시프트 된다.
도 2는 일 실시예에서 부동소수점 곱셈기 장치(10)를 개략적으로 나타낸다. 오퍼랜드 "a" opa[31:0](12라고 기재됨)는 부호 비트 signa, 지수 비트들 expa[7:0], 및 소수 비트들 fraca[22:0]로 구성되고, 오퍼랜드 "b" opb[31:0](14라고 기재됨) 내용과 동일하다. 제1 스테이지(사이클) V1에서, fraca 및 fracb는 23 x 23 어레이(16)에서 함께 곱해지고 나서, 상기 23개의 부분 곱은 3:2 압축기(20, 22)를 사용하여 2개의 (48비트) 부분 곱까지 축소된다.
그 축소가 진행되고 있는 동안, (콤포넌트 24의 일부로서 도시된) 지수 산출회로는 expa 및 expb를 검사하여 그것들이 논제로인지의 여부를 안다. 논제로 expa는 a의 묵시 정수비트가 세트된다는 것을 의미하고, 이 경우에, 상기 지수 산출회로(24)는 fracb의 다른 인자가 상기 축소에 가산될 축소 어레이(부분 18)에 신호를 보낸다. 마찬가지로, 논제로 expb는 b의 묵시 정수 비트가 세트되는 것을 의미하고, 그래서, 이 경우에 fraca의 다른 인자는 상기 축소에 가산된다. 끝으로, 상기 묵시 정수 비트들의 곱에 대응한 단일의 비트는 상기 축소 어레이(18)에 가산된다. 그 어레이 축소가 진행되지만, 카운트 선두 제로(CLZ) 연산도 opa 및 opb의 가수에 관해 상기 지수 산출회로에 의해 행해지고, 상기 곱 지수, (나중에 설명된) 시프트량 및 시프트 방향이 계산된다. (본 도면에서 콤포넌트 24의 일부로서도 도시된) 라운딩 주입회로는, 주입 라운딩을 위한 2개의 라운딩 상수를 구성한다. 이때, (도 1a 및 1b에 대해 상기 주어진 이유 때문에) 이 스테이지에서, 비록 그것이 1비트 위치내로 계산될 수 있고, 이 때문에 2개의 후보 곱 가수의 각각에 대해 라운딩 상수가 생성되긴 하지만, 어디에 상기 곱 가수의 선두 비트가 있는지를 알려져 있지 않다. 라운딩 상수들(ovfl_round 및 round)은 3:2 캐리 합 가산기(CSA)(20, 22)를 사용하여 부분 곱들에 가산되고 나서, 2개의 후보 곱 가수(ovfl_prod[47:0] 및 prod[48:0])는 48비트 가산기(24) 및 49비트 가산기(26)에 의해 생성된다. 그 부분 곱의 합은, 일부의 경우에 라운딩 항이 49번째 비트에 캐리가 생기게 될 수 있긴 하지만, 항상 48비트들에 잘 맞는다.
제2 스테이지(사이클)V2에서, 레지스터(28, 30)에 유지된 2개의 후보 곱 가수는, 상기 지수 산출회로에 의해 결정된 좌측 시프트량(ls[4:0])(38)과 우측 시프트량(rs[4:0])(40)에 근거하여, 시프터(32, 34, 36)에 의해 좌측 또는 우측 시프트된다. 상기 시프트된 결과의 각각에 대한 최종 지수가 생성되고, 끝으로 상기 곱셈기(42)는, 지수 산출회로(20)로부터 수신된 시프트 방향(rs/ls) 신호, 오버플로우 플래그 및 특별한 플래그에 따라, 4개의 가능성, 즉 좌측 시프트된 오버플로우 가수(ovfl_prod), 좌측 시프트된 논오버플로우 가수(prod), 우측 시프트된 논오버플로우 가수(prod) 또는 특별한 값들 사이에서 선택한다. 만약 곱셈이 단일 곱셈 가산(fused multiply-add)(FMA)의 일부가 아니면 이 경우에 2개의 라운딩 상수가 (실제로 라운딩 주입이 일어나지 않도록) 무효로 되어 있고 소수의 전체 47비트가 전방에 배치되어, 상기 가수는 정규의 23비트 SP 형식으로 출력된다.
또한, 제2 스테이지(사이클)V2에서, 상기 비교회로(44, 46)는, (본 도면에서 콤포넌트(24)의 일부를 형성하는) 마스크 생성회로에 의해 구성된 마스크들을 사용하여 좌측 시프트된 가수들에 관해 오버플로우를 검출하고 좌우측 시프트된 가수에 대해 라운딩 보정과 예외 플래그 마스크를 결정한다. 생성된 이들 마스크들은, 상기 좌측 및 우측 시프터(32, 34, 36)에서 후보 곱 가수들을 시프트하기 전에 그 후보 곱 가수들에 직접 적용된다.
사이클 경계가 나타내어진 도 2에 도시된 부동소수점 곱셈기 장치(10)의 개요는, 주입 라운딩을 갖는 부동소수점 곱셈이 실제로 1.5사이클만 요구하는 2개의 사이클미만에서 행해질 수 있는 전체 라운딩된 결과(또는 단일 곱셈 가산의 곱셈부)가 되게 제공된다는 점에서 본 기술들의 영향에 대해 인식하게 된다. 이때, 심지어 절반 사이클의 속도 향상은, 제로 사이클 포워딩을 고려하므로 유용하다.
도 3은 일 실시예에서 라운딩 주입회로(50)를 개략적으로 나타낸다. 라운딩 상수는 1 뒤에, 22개의 0들(RNE 라운딩의 경우) 또는 22개의 1들(RU 라운딩의 경우)이 있는 것으로서 시작한다. 그 후, 이러한 기수 라운딩 패턴은, 상기 지수 산출회로에 의해 결정된 우측 시프트량만큼 좌측 시프터(52)에 의해 좌측 시프트되고, 상기 지수 산출회로에 의해 결정된 좌측 시프트량만큼 우측 시프터(54)에 의해 우측 시프트된다. 여기서, 좌측 및 우측 시프트량은 5비트 값이어서, 이들 시프트는 0비트 위치로부터 31비트 위치까지 어디든지일 수 있다. 비트들이 우측에 보이는 경우의 좌측 시프트된 라운딩 상수(56)는 RU 모드에 있을 경우 1들에 의해 덧붙여져서, 결국 48비트 값이 된다. 우측 시프트된 라운딩 상수(58)는 좌측에 0들로 대체된 비트들을 가져서 23비트 값이 남아 있다. 좌측 시프트 라운딩 값과 우측 시프트 라운딩 값 양쪽이 생성되지만, 적절한 시프트 라운딩 값만이, 사용되고, 상기 지수 산출회로에 의해 생성된 좌측 시프트(ls) 신호 또는 우측 시프트(rs) 신호에 의해 결정된다. 이렇게 생성된 라운딩 상수는 도 2에서 "prod" 가산기(26)에 대해 정확하고, 도 2에서 "ovfl_prod" 가산기(24)에 대해서, 그 라운딩 상수는 1비트 좌측 시프터(60)에 의해 좌측된 시프트된 1비트이고, 이때 RU비트(즉, RU모드에 있을 때의 비트)가 하위 비트에 채워진다. 그리고, 2개의 라운딩 상수 ovfl_round(62) 및 round(64)는, 도 2에서 각각의 3:2 CSA(20, 22)를 사용하여 상기 부분 곱에 가산된다. 이때, 또한, 도 3은, 곱셈 연산이 단일 곱셈 가산 연산의 일부를 형성할 때 주입 라운딩이 일어나지 않도록 그 개의 라운딩 상수를 0으로 세트하는 단일 곱셈 가산(FMA) 무효신호를 나타낸다. 이렇게 하여, 기수 라운딩 주입(시프트되지 않은 가수에 적용하는 주입)을 계산하고 나서 반대방향으로 시프트하는 것과 그 다음의 가수 시프트의 동일한 크기에 의해, 그 라운딩 정확한 자리에서 일어나면서 상기 시프트되지 않은 가수에 라운딩 주입이 가산될 수 있다.
도 4는 도 2에서 마스크 생성회로(24)와 비교회로(46)의 조합에 의한 오버플로우 판정을 개략적으로 나타낸다. 초기에는, 위치 47에서 하나의 1과 나머지 비트들에서 0들로 이루어진 오버플로우 마스크가 구성된다. 그리고, 오버플로우 마스크는, 상기 곱이 좌측 시프트 되는 정확히 같은 양만큼 (우측 시프터 70에 의해) 우측 시프트된다. 이러한 우측 시프팅은 상기 49비트 곱 가수가 (가산기 26에 의해) 생성되기 전에 잘 발생하고, 그 오버플로우는 상기 마스크(72)와 상기 곱(74)과의 논리적 AND(76)에 의해 검출되고 나서 축소 OR(78)이 작동한다. 이에 따라, (좌측 시프터 32, 34에 의해) 후보 가수 곱들의 좌측 시프팅이 완료되기 전에 오버플로우를 검출할 수 있다. 도 4의 논리회로의 베릴로그(Verilog)형 버전은:
ls_overflow = |(ovfl_mask[47:16] & prod[47:16]).
상기 곱 prod의 비트 모두는, 최대 좌측 시프팅량이 31에 제한되기 때문에 검사되지 않는다는 것을 안다. 또한, 도 4는, 오버플로우가 우측 시프트된 곱에서 일어나는 제한된 경우들, 즉, 주입 라운딩된 곱의 비트 47이 세트되고 우측 시프트량이 1일 때, 또는 주입 라운딩된 곱의 비트 48이 세트되고 그 시프트량이 2일 때, 검출하도록 구성된 우측 시프트 오버플로우 검출회로(80)를 나타낸다. 이들의 경우의 양쪽에 있어서, 상기 우측 시프트 오버플로우 검출회로는, 상기 편향 지수를 1로 세트한다. 그 밖의 모든 우측 시프트의 편향 지수는 0이다.
최종(L), 가드(G) 및 스티키(S)의 값을 계산하기 위한 마스크가 3세트가 있고, 이것의 생성 및 이용은 도 5, 도 6 및 도 7을 참조하여 설명되고, 이 도면에서 개략적으로 나타낸 회로는 도 2의 마스크 생성회로(24)와 비교회로(44, 46)에 대응한다.
도 5는 좌측 시프트 오버플로우의 경우를 나타내고, 여기서 초기의 마스크 패턴은 0비트 뒤에 24개의 연속적인 1들이 있도록 초기화되고, 그리고, 그 마스크는 좌측 시프트량만큼 (우측 시프터 90에 의해) 우측 시프트되고, 이때 0들은 좌측에 충진된다. 이것은, L비트까지 L비트를 포함하는 0들과, 상기 G와 S위치들에서의 1들을 갖는 25비트 마스크 lomask[24:0](92)를 생성한다. 이로부터 특정한 마스크들은, L, G 및 S를 골라내기 위해 상기 마스크 조작회로(94)에 의해 구성된다. 그 마스크 조작회로(94)에 의해 구현된 논리회로의 대응한 베릴로그형 버전들은:
logmask(98)가 상기 G비트가 위치되는 1과, 다른 곳에서 0들을 갖도록
logmask[23:0] = ~lomask[24:1] & lomask[23:0];
logmask(96)가 상기 L비트가 위치되는 1과, 다른 곳에서의 0들을 갖도록
lolmask[24:0] = {logmask[23:0], 1'b0};
logmask(100)가 상기 스티키 비트 위치마다의 1들과, 다른 곳에서의 0들을 갖도록
losmask[22:0] = lomask[22:0] & ~lolmask[22:0] & ~logmask[22:0]
이다.
이들 마스크는, 좌측 시프트된 오버플로우 곱에 대한 L, G 및 S를 (OR 게이트 110, 112 및 114로부터) 얻기 위해 AND 회로(102, 104, 106)에 의해 오버플로우 곱 가수 ovfl_prod(108)에 직접 적용된다. 대응한 베릴로그형 버전들은:
lovl = |(lolmask[24:0] & ovfl_prod[24:0]); // left overflow L
lovg = |(logmask[23:0] & ovfl_prod[23:0]); // left overflow G
lovs = |(losmask[22:0] & ovfl_prod[22:0]); // left overflow S
이다.
논오버플로우 좌측 시프트의 경우들에 대한 마스크들은, 우측으로 1비트 더 시프트된 좌측 시프트 오버플로우 마스크들로부터 만들어진다. 이것은 도 6에 나타내어져 있고, 여기서, 마스크 생성회로는 llmask(126), lgmask(128) 및 lsmask(130)를 생성하는 것을 알 수 있고, 이것은 아래의 베릴로그형 기술(description)에 따라 대응한 좌측 시프트 오버플로우 마스크(120, 122, 124)(의 비트 선택)를 시프트하여서 행해진다:
llmask[23:0] = lolmask[24:1];
lgmask[22:0] = logmask[23:1];
lsmask[21:0] = losmask[22:1].
최종의 스테이지에서, 이들 마스크는, 좌측 시프트된 논오버플로우 곱에 대한 L, G 및 S를 (OR 게이트 138, 140 및 142로부터) 얻기 위해 AND회로(132, 134, 136)에 의해 논오버플로우 곱 prod에 직접 적용된다. 대응한 베릴로그형 버전들은:
ll = |(llmask[23:0] & prod[23:0]); // left L
lg = |(lgmask[22:0] & prod[22:0]); // left G
ls = |(lsmask[21:0] & prod[21:0]); // left S
이다.
도 7은 우측 시프트 마스크들의 구성과 이용을 나타낸다. 그 곱은 우측 시프트량만큼 우측 시프트될 것이고, L, G 및 S를 계산하기 위해서, 마스크는 그 동일한 양만큼 좌측 시프트되게 구성된다. 초기의 마스크는, 2개의 연속적 0들 뒤에 23개의 연속적인 1들이 있고, 이 마스크는, 우측 시프트량만큼 (좌측 시프터 150에 의해) 좌측 시프트되고, 우측에 추가의 1들을 채워, rmask[48:0](152)를 산출한다. 이로부터 특정한 마스크들(156, 158, 160)은, L, G 및 S를 골라내도록 마스크 조작회로(154)에 의해 구성된다. 마스크 조작회로(154)에 의해 구현된 것과 같은 대응한 베릴로그 버전들은:
rgmask[47:22] = ~rmask[48:23] & rmask[47:22];
rlmask[48:23] = rgmask[47:22];
rsmask[47:0] = rmask[48:1]
이고, L, G 및 S는, 우측 시프트된 곱에 대한 L, G 및 S를 (OR 게이트 168, 170, 172로부터) 얻기 위해 이들 마스크를 논오버플로우 곱 prod에 적용하는 AND회로(162, 164, 166)에 의해 좌측 시프트의 경우들에서와 같은 방식으로 계산된다. 대응한 베릴로그형 버전들은,
rl = |(rlmask[48:23] & prod[48:23]); // right L
rg = |(rgmask[47:22] & prod[47:22]); // right G
rs = |(rsmask[47:0] & prod[47:0]); // right S
이다.
(도 5 내지 도 7에 도시된) 상기의 경우 전부에 있어서, 상기 기수 마스크는 V1에서 구성되고, 이때 L, G 및 S에 대한 특정한 마스크들이 V2의 초기에 생성된다. 이 시점에서, 곱 가수가 좌측 시프트되거나 우측 시프트될 경우와 오버플로우가 판정되었을 경우에 알려지므로, 적절한 L, G 및 S는 그 3개의 계산된 버전들로부터 간단히 선택될 수 있다.
도 8a는 일 실시예에 있어서의 보정회로(180)를 개략적으로 나타낸다. 이 보정회로는, RNE 라운딩을 적용할 때 L과 G에 대한 값들이 최종의 보정을 필요로 하기 때문에 제공된다. S는 그대로이다. 이것은, 세트 비트가 상기 G위치에서 주입되어 있기 때문이어서, 참된 G는 계산된 G의 반대이고, L도 상기 주입에 의해 변경되어 있을지도 모른다. (그 주입 후의) L, G 및 S의 값이라면, 상기 라운딩된 결과의 보정된 최종 비트("보정된 L")는 L&(G|S)에 의해 주어진다.
도 8b는 부정확한 결과를 검출하는 회로를 개략적으로 나타낸다. 도 8b에 도시된 것과 같은 부정확 검출회로(182)는, 상기 장치가 RU모드에서 라운딩을 행하고 있을 때, 곱(G와 S에 기인한 비트들)의 하위 비트들의 (비트 비교회로 184를 사용하여) 비트 비교를 행하여 그들을 라운딩 주입과 비교한다. 이들의 비트가 변경되지 않았을 경우, 상기 라운딩 주입은 상기 곱을 변경하지 않았고 그 결과는 정확하다. 부정확 검출회로(182)는, 논 RU 라운딩 모드들에 대해, 상기 보정된 G 또는 S가 논제로일 경우 부정확한 플래그를 세트하도록 배치된다. 부정확 검출회로(182)의 대응한 베릴로그형 버전은,
ru_exact = &((prod[47:0] & round[47:0]) | ~round[47:0]);
oru_exact = &((ovfl_prod[47:0] & oround[47:0]) | ~oround[47:0]);
ixc_ru = ( overflow & ~oru_exact) | (~overflow & ~ru_exact)이다.
도 9a는, 여기서는 라운딩 전에 언더플로우 검출이 일어나도록 상기 부동소수점 곱셈의 방법론이 규정되어 있기 때문에 사용되고, 물론 조기 주입 라운딩에 의해 사전 라운딩된 곱이 없는, 언더플로우 검출회로를 개략적으로 나타낸다. 여기서 문제가 되는 경우가 비정규 곱을 최소 정규 곱으로 변경하는 라운딩 주입이라는 것을 아는데, 그 이유는 이 경우에, 상기 소수가 모두 0들이고, 편향 지수가 0으로부터 1로 변경되었기 때문이다. 이에 따라, 언더플로우 검출회로(186)는 (0이어야 하는) 곱 소수를 검사하여서 이러한 타입의 언더플로우를 검출하고, 이것이 그 경우이고 편향 지수가 1이고 부정확한 플래그가 세트될 경우 라운딩은 정규 수로 오버플로우를 야기하였고, 언더플로우(ufc) 플래그는 비록 최종 결과가 실제로 정규일지라도 세트된다.
도 9b는, 플러시 투 제로 모드가 사용 가능할 때 라운딩 전에 비정규인 결과들은 0으로 플러시(flushed)되도록 상기 장치에 설치된 플러시 투 제로 검출회로(188)를 개략적으로 나타낸다. 여기서는, 지수가 0이고 (i) 지수가 오버플로우하지 않거나 (ii) 지수가 라운딩으로 인해 오버플로우하는 경우에, 플러시 투 제로가 일어난다는 점에서, 언더플로우를 검출하기 위한 도 9a에 대해 상술한 것과 유사한 로직은 적용한다. 이 플러시 투 제로 플래그는 출력 무효를 야기하고 이때의 상기 출력 값은 그것의 산출된 값이 무엇이든지간에 0으로 플러시 된다.
도 10a, 10b 및 10c는 일 실시예의 방법에서 취해진 일련의 단계를 나타낸다. 그 흐름은, 입력 오퍼랜드 opa 및 opb는 입력 레지스터에 존재하는 단계 200에서 시작한다. 그리고, 단계 202에서, 소수부 fraca와 fracb의 곱셈은 상기 곱셈기 어레이에서 시작한다. 동시에(단계 204에서), 상기 오퍼랜드들의 지수부들의 검사는 각 오퍼랜드의 비편향 지수와 각 오퍼랜드의 선두 제로 카운트를 결정하여, (양과 방향의 양쪽에서) 필요로 하는 시프트를 결정할 수 있다. 단계 206에서는, opa가 논제로 지수를 갖는지를 판정하여 논제로 지수를 갖는 경우 fracb의 다른 인자를 상기 축소 어레이에 가산하는 단계 208을 거쳐 흐름이 진행된다. 마찬가지로, 단계 210에서는, opb가 논제로 지수를 갖는지를 판정하여 논제로 지수를 갖는 경우 fraca의 다른 인자를 상기 축소 어레이에 가산하는 단계 212를 거쳐 흐름이 진행된다. 끝으로, 단계 214에서는, 임의의 묵시 정수 비트들의 곱에 대한 상기 축소 어레이에 단일의 비트를 가산한다. 그리고, 단계 216에서는, 그 결정된 시프트량에 근거하여, 좌측 시프트 및 우측 시프트의 라운딩 값은, 기수 라운딩 값을 상기 시프트량만큼 우측 시프트 및 좌측 시프트 하여서 생성된다. 그리고, 단계 218에서는, 라운딩 상수의 1비트 좌측 시프트에 의해 오버플로우 곱 가수 가산기에 대한 라운딩 값을 작성한다. 그리고, 2개의 라운딩 상수는 3:2 압축기들을 사용하여 부분 곱에 가산되고, 만약 상기 곱셈 연산이 단일 곱셈 가산의 일부가 아니면 그 경우에 라운딩 상수들은 강제로 0으로 된다. 그리고, 단계 222에서는, 각각의 48 및 49비트 가산기를 사용하여 부분 곱 가산을 완료한다.
단계 224에서는, 초기의 오버플로우 마스크 패턴을 상기 시프트량만큼 우측 시프트하여서 좌측 시프트된 가수들에 대해 오버플로우 마스크를 작성한다. 그리고, 단계 226에서는, 이 오버플로우 마스크를 논오버플로우 곱 가수에 적용하여 오버플로우 상태를 결정한다. 그리고, 단계 228에서는, 상기 시프트량과 오버플로우 상태에 따라 이들 L, G 및 S의 비트의 값들을 결정하기 위해서, 상기 L, G 및 S의 마스크를 상기 곱 가수와 오버플로우 곱 가수에 적용한다. 그리고, 단계 230에서는, 오버플로우 곱 가수를 좌측 시프트하고, 논오버플로우 곱 가수를 각각의 시프터에 의해 좌측 시프트 및 우측 시프트 한다. 그리고, 단계 232에서는, 특별한 값에 의해 무효되지 않으면, 상기 시프트된 방향과 오버플로우 값에 근거하여 상기 시프트된 곱 가수들 사이에서 출력될 곱 가수를 선택한다. 단계 234에서는 라운딩 모드에 근거하여 임의의 필요한 라운딩 보정을 적용하고, 그 후 단계 236에서는 상기 곱 가수의 하위 비트들과 그것의 라운딩 주입의 비트 비교에 의해 부정확 검출이 실시한다. 단계 238에서는, 제로 곱 가수, 1의 편향 지수 및 세트되는 부정확한 플래그로부터 언더플로우를 검출한다. 끝으로, 단계 240에서는, 상기 장치가 플러시 투 제로 모드에 있으면, 편향지수가 0이고, 지수 오버플로우가 없거나 지수 오버플로우가 라운딩에 기인하는 경우 플러시 투 제로를 실시한다. 단계 242에서는 흐름이 종료한다.
간단한 전체 요약에 의하여, 본 기술은 부동소수점 곱셈의 장치 및 방법을 제공한다. 2개의 부분 곱은 2개의 오퍼랜드 가수로부터 생성된다. 비편향 결과 지수는 오퍼랜드 지수 값들과 선두 제로 카운트들, 및 필요에 따라 소정의 정규 형식의 소정의 최소 지수값을 위한 곱 가수에 대한 시프트량과 시프트 방향으로부터, 결정된다. 부분 곱들의 가산에 주입하기 위한 제1 및 제2의 라운딩 값은, 제1 라운딩 값에 대한 반대의 시프트 방향으로 상기 시프트량만큼 소정의 라운딩 패턴을 시프트하고, 제2 라운딩 값을 주기 위해 제1 라운딩 값을 1비트씩 좌측 시프트함으로써, 생성된다. 제1 및 제2 부분 곱은, 제1 곱 가수를 주기 위해 제1 라운딩 값과 함께 가산되고, 제2 곱 가수를 주기 위해 제2 라운딩 값과 함께 가산된다. 이들 곱 가수는 시프트 방향으로 시프트량만큼 시프트되고 나서, 소정의 정규 형식으로 포맷된 가수를 생성하기 위해서 하나가 선택된다. 조기 주입 라운딩은, 보다 빠른 부동소수점 곱셈기를 제공한다.
본 출원에서, "...하도록 구성된"과 "하도록 배치된"의 단어는, 장치의 요소가 규정된 연산을 실시할 수 있는 구성을 갖는다는 것을 의미한다. 본 문맥에서, "구성"은, 하드웨어 또는 소프트웨어의 상호연결의 배치 또는 방식을 의미한다. 예를 들면, 상기 장치는 상기 규정된 연산을 제공하는 전용 하드웨어를 가져도 되거나, 프로세서 또는 다른 처리 디바이스는 그 기능을 행하도록 프로그래밍되어도 된다. "하도록 구성된" 또는 "하도록 배치된"은, 상기 장치 요소들이 임의의 방식으로 상기 규정된 연산을 제공하기 위해서 변경될 필요가 있다는 것을 암시하지는 않는다.
본 발명의 설명에서는 본 발명의 실시예들을 첨부도면을 참조하여 상세히 설명하였지만, 본 발명은 구체적인 실시예들에 한정되지 않고, 첨부된 청구항에서 기재된 것과 같은 본 발명의 범위 및 사상으로부터 벗어나지 않고 당업자가 변경, 부가 및 변형을 여러 가지로 실시할 수 있다. 예를 들면, 본 발명의 범위로부터 벗어나지 않고 종속항의 특징들과 독립항의 특징들을 여러 가지로 조합할 수 있다.

Claims (21)

  1. 제1 부동소수점 오퍼랜드와 제2 부동소수점 오퍼랜드의 가수를 곱하여 제1 및 제2의 부분 곱을 생성하는 부분 곱 생성회로;
    소정의 정규 형식의 소정의 최소 지수값에 따라, 제1 및 제2의 부동소수점 오퍼랜드의 지수값들과 선두 제로 카운트에 따라 곱셈 결과의 비편향 지수의 값을 산출하고, 제1 및 제2의 부분 곱의 가산 연산에 의해 생성된 곱 가수에 대한 시프트량과 시프트 방향을 결정하는 지수 산출회로;
    상기 가산 연산에 주입하기 위한 제1 및 제2의 라운딩 값을 생성하는 회로로서, 상기 시프트 방향에 반대방향으로 상기 시프트량만큼 소정의 라운딩 패턴을 시프트시켜서 제1 라운딩 값을 생성하고 제1 라운딩 값을 1비트씩 좌측 시프트하여서 제2 라운딩 값을 생성하는 라운딩 시프트 회로를 갖는, 라운딩 주입회로;
    제1 곱 가수를 생성하기 위해서 상기 가산 연산의 제1 라운딩 값과 함께 상기 제1 및 제2의 부분 곱을 가산하는 제1 가산기 회로;
    제2 곱 가수를 생성하기 위해서 상기 가산 연산의 제2 라운딩 값과 함께 상기 제1 및 제2의 부분 곱을 가산하는 제2 가산기 회로;
    상기 제1 및 제2의 곱 가수 중 적어도 하나를, 상기 시프트 방향으로 상기 시프트량만큼 시프트시키는 가수 시프트 회로; 및
    상기 소정의 정규 형식으로 포맷된 가수를 생성하기 위해서 상기 제1 및 제2의 곱 가수 중 하나를 선택하는 선택회로를 구비하는, 부동소수점 곱셈장치.
  2. 제 1 항에 있어서,
    상기 제1 가산기 회로는 상기 제2 가산기 회로에서 생성한 제2 곱 가수보다 1비트 미만인 제1 곱 가수를 생성하도록 구성된, 부동소수점 곱셈장치.
  3. 제 1 항에 있어서,
    상기 소정의 라운딩 패턴은 상기 포맷된 가수에 일치하는 길이를 갖고, 상기 부동소수점 곱셈장치의 라운딩 모드가 라운드 투 니어스트 타이즈 투 이븐(RNE)일 때 세트 비트 뒤에 언세트 비트들을 포함하고, 상기 라운딩 모드가 라운드 업(RU)일 때 세트 비트 전부를 포함하고,
    상기 반대방향이 좌측이고 상기 라운딩 모드가 라운드 업일 때, 하위 비트 위치의 수는 시프트량만큼 주어지면 세트되고,
    상기 반대방향이 우측일 때, 최상위 비트 위치의 수는 시프트량만큼 주어지면 언세트 되는, 부동소수점 곱셈장치.
  4. 제 1 항에 있어서,
    제2 곱 가수의 오버플로우 비트 위치를 식별하는 오버플로우 마스크를 생성하는 회로로서, 상기 시프트량만큼 소정의 마스크 패턴을 우측 시프트하여서 상기 오버플로우 마스크를 생성하도록 배치된 마스크 생성회로; 및
    오버플로우 비트 위치에서 오버플로우 값을 추출하기 위해 제2 곱 가수에 오버플로우 마스크를 적용하는 회로로서, 상기 가수 시프트 회로가 상기 제1 및 제2의 곱 가수 중 적어도 한쪽을 시프트하기 전에 상기 오버플로우 값을 추출하도록 배치된 비교회로를 구비하는, 부동소수점 곱셈장치.
  5. 제 4 항에 있어서,
    상기 소정의 마스크 패턴은, 제2 곱 가수가 시프트되지 않을 때 제2 곱 가수의 시프트되지 않은 오버플로우 비트 위치에 세트 비트를 포함하는, 부동소수점 곱셈장치.
  6. 제 1 항에 있어서,
    상기 지수 산출회로는,
    상기 시프트 방향이 우측이고,
    제2 곱 가수의 최상위 비트가 세트되고 상기 시프트량이 2이거나,
    제2 곱 가수의 하나의 비트 이외의 최상위 비트가 세트되고 상기 시프트량이 1일 때,
    우측 시프트 오버플로우 조건을 식별하는 우측 시프트 오버플로우 결정회로를 구비하고,
    상기 지수 산출회로는 우측 시프트 오버플로우 조건에 응답하여 곱셈의 결과의 편향 지수의 값을 1로 세트하는, 부동소수점 곱셈장치.
  7. 제 4 항에 있어서,
    상기 가수 시프트 회로는,
    제1 및 제2의 좌측 시프트된 곱 가수를 주기 위해 시프트량만큼 제1 및 제2의 곱 가수를 좌측 시프트하는 좌측 시프트 회로;
    우측 시프트된 곱 가수를 주기 위해 시프트량만큼 제2 곱 가수를 우측 시프트하는 우측 시프트 회로를 구비하고, 상기 좌측 시프트 회로와 상기 우측 시프트 회로는 서로 병렬로 그들의 각각의 시프팅을 행하도록 배치되고;
    상기 선택회로는, 출력하기 위해서, 상기 시프트 방향과 상기 오버플로우 값에 응답하여, 포맷된 가수로서 상기 제1 좌측 시프트된 곱 가수, 상기 제2 좌측 시프트된 곱 가수 및 상기 우측 시프트된 곱 가수 중 하나를 선택하고, 상기 포맷된 가수에서 소정 수의 최상위 비트들을 선택하는 회로인, 부동소수점 곱셈장치.
  8. 제 7 항에 있어서,
    상기 제1 및 제2의 라운딩 값은 0으로 설정되고, 상기 부동소수점 곱셈장치는 그 곱셈의 라운딩되지 않은 결과를 단일 곱셈 가산의 일부로서 가산기에 보내도록 구성되는, 부동소수점 곱셈장치.
  9. 제 4 항에 있어서,
    상기 마스크 생성회로는 제1 곱 가수내에서 상기 포맷된 가수의 최종 비트의 최종 비트 위치를 식별하는 최종 비트 마스크를 생성하도록 배치되고, 상기 마스크 생성회로는, 소정의 최종 비트 마스크 패턴을 상기 시프트 방향과 반대의 방향으로 시프트량만큼 시프트시키는 것을 포함하는 최종 비트 마스크를 생성하도록 배치되고,
    상기 최종 비트 마스크를 제1 곱 가수에 적용하여 그 최종 비트 위치에서 최종 비트 값을 추출하는 비교회로를 한층 더 구비하는, 부동소수점 곱셈장치.
  10. 제 9 항에 있어서,
    상기 마스크 생성회로는 좌측 시프트 최종 비트 마스크와 우측 시프트 최종 비트 마스크를 생성하도록 배치되고, 상기 비교회로는, 좌측 방향인 시프트 방향에 응답하여 좌측 시프트 최종 비트 마스크를 사용하여 최종 비트 값을 추출하고, 우측 방향인 시프트 방향에 응답하여 우측 시프트 최종 비트 마스크를 사용하여 최종 비트 값을 추출하는, 부동소수점 곱셈장치.
  11. 제 10 항에 있어서,
    상기 마스크 생성회로는 2개의 좌측 시프트 최종 비트 마스크를 생성하도록 배치되고, 상기 마스크 생성회로는 제1 좌측 시프트 최종 비트 마스크를 1비트씩 우측 시프트하여서 제2 좌측 시프트 최종 비트 마스크를 생성하도록 배치되고,
    상기 비교회로는 제1 좌측 시프트 최종 비트 마스크를 제1 곱 가수에 적용하고, 제2 좌측 시프트 최종 비트 마스크를 제2 곱 가수에 적용하도록 배치되고,
    상기 비교회로는, 제2 곱 가수의 오버플로우를 가리키는 오버플로우 값에 응답하여 상기 제1 좌측 시프트 최종 비트 마스크를 사용해서 추출된 최종 비트 값을 선택하고, 제2 곱 가수의 오버플로우 없음을 가리키는 오버플로우 값에 응답하여 상기 제2 좌측 시프트 최종 비트 마스크를 사용해서 추출된 최종 비트 값을 선택하는, 부동소수점 곱셈장치.
  12. 제 11 항에 있어서,
    상기 소정의 최종 비트 마스크 패턴은, 시프트 방향이 좌측 방향일 때, 언세트 비트 뒤에 소정 수의 세트 비트를 포함하고, 상기 소정 수의 세트 비트는 소정의 정규 형식으로 상기 포맷된 가수의 비트의 수보다 하나 더 많고,
    상기 마스크 생성회로는 상기 소정의 최종 비트 마스크 패턴을 시프트량만큼 우측 시프트하고 그 우측 시프트된 소정의 최종 비트 마스크 패턴에 상기 시프트량만큼 주어진 다수의 언세트 비트를 첨가함으로써 생성된 기수 시프트된 마스크로부터 제1 좌측 시프트 최종 비트 마스크를 생성하도록 배치된, 부동소수점 곱셈장치.
  13. 제 10 항에 있어서,
    상기 소정의 최종 비트 마스크 패턴은, 시프트 방향이 우측 방향일 때, 일련의 언세트 비트 뒤에 소정 수의 세트 비트를 포함하고, 상기 소정 수의 세트 비트는 소정의 정규 형식으로 상기 포맷된 가수의 비트의 수이고,
    상기 마스크 생성회로는, 상기 시프트량만큼 소정의 최종 비트 마스크 패턴을 좌측 시프트하고 그 좌측 시프트된 소정의 최종 비트 마스크 패턴에 상기 시프트량만큼 주어진 다수의 세트 비트를 첨가함으로써 생성된 기수 시프트된 마스크로부터 우측 시프트 최종 비트 마스크를 생성하도록 배치된, 부동소수점 곱셈장치.
  14. 제 9 항에 있어서,
    상기 마스크 생성회로는 가드 비트 마스크를 생성하도록 배치되고, 상기 가드 비트 마스크는 제1 곱 가수내에서 상기 포맷된 가수의 최종 비트의 위치 아래의 하나의 위치인 가드 비트 위치에서 설정된 비트를 갖고,
    상기 비교회로는 상기 가드 비트 마스크를 제1 곱 가수에 적용하여 상기 가드 비트 위치에서 가드 비트 값을 추출하도록 배치된, 부동소수점 곱셈장치.
  15. 제 14 항에 있어서,
    상기 마스크 생성회로는 스티키 비트 마스크를 생성하도록 배치되고, 상기 스티키 비트 마스크는 상기 가드 비트 위치 아래의 모든 비트 위치에서 설정된 비트들을 갖고,
    상기 비교회로는, 상기 스티키 비트 마스크를 상기 제1 곱 가수에 적용하여 일 세트의 스티키 비트 값들을 추출하고 그 세트의 스티키 비트 값들의 논리적 OR로서 스티키 비트 값 전체를 산출하도록 배치된, 부동소수점 곱셈장치.
  16. 제 14 항에 있어서,
    상기 부동소수점 곱셈장치가 라운드 투 니어스트 타이즈 투 이븐(RNE)인 라운딩 모드에 응답하여, 상기 가드 비트 값의 반대로서 보정된 가드 비트 값을 산출하고, 그 가드 비트 값과 전체 스티키 비트 값의 논리적 OR와 논리곱된 최종 비트 값으로서 보정된 최종 비트 값을 산출하는, 보정회로를 더 구비하는, 부동소수점 곱셈장치.
  17. 제 16 항에 있어서,
    상기 부동소수점 곱셈장치가 라운드 업(RU)이 아닌 라운딩 모드에 응답하여, 상기 보정된 가드 비트 값이나 전체 스티키 값이 논제로일 때 부정확한 플래그를 발생시키는 부정확 검출회로를 더 구비하는, 부동소수점 곱셈장치.
  18. 제 4 항에 있어서,
    상기 부동소수점 곱셈장치가 라운드 업(RU)인 라운딩 모드에 응답하여, 상기 오버플로우 값이 세트될 때, 상기 제1 라운딩 값이 제1 곱 가수의 대응한 하위부와 비트 일치하지 않을 때, 부정확한 플래그를 세트하고,
    상기 부동소수점 곱셈장치가 라운드 업(RU)인 라운딩 모드에 응답하여, 상기 오버플로우 값이 세트되지 않을 때, 상기 제2 라운딩 값이 제2 곱 가수의 대응한 하위부와 비트 일치하지 않을 때, 부정확한 플래그를 세트하는, 부정확 검출회로를 더 구비하는, 부동소수점 곱셈장치.
  19. 제 1 항에 있어서,
    상기 포맷된 가수가 0이고 곱셈의 결과의 편향 지수가 1이고 부정확한 플래그가 세트될 때, 언더플로우 플래그를 세트하는 언더플로우 검출회로를 더 구비하는, 부동소수점 곱셈장치.
  20. 제 1 항에 있어서,
    상기 곱셈 결과의 편향 지수가 0이고,
    상기 지수가 오버플로우되지 않거나,
    상기 지수가 라운딩으로 인해 오버플로우될 때,
    플러시 투 제로 플래그를 세트하는 플러시 투 제로 플래그 생성회로를 더 구비하는, 부동소수점 곱셈장치.
  21. 부동소수점 곱셈을 행하기 위한 데이터 처리장치의 연산방법으로서,
    제1 부동소수점 오퍼랜드와 제2 부동소수점 오퍼랜드의 가수를 곱하여 제1 및 제2의 부분 곱을 생성하는 단계;
    소정의 정규 형식의 소정의 최소 지수값에 따라, 제1 및 제2의 부동소수점 오퍼랜드의 지수값들과 선두 제로 카운트에 따라 곱셈 결과의 비편향 지수의 값을 산출하고, 제1 및 제2의 부분 곱의 가산 연산에 의해 생성된 곱 가수에 대한 시프트량과 시프트 방향을 결정하는 단계;
    상기 가산 연산에 주입하기 위한 제1 및 제2의 라운딩 값을 생성하는 단계로서, 상기 시프트 방향에 반대방향으로 상기 시프트량만큼 소정의 라운딩 패턴을 시프트시켜서 제1 라운딩 값을 생성하는 것과 제1 라운딩 값을 1비트씩 좌측 시프트하여서 제2 라운딩 값을 생성하는 것으로 이루어진, 단계;
    제1 곱 가수를 생성하기 위해서 상기 가산 연산의 제1 라운딩 값과 함께 상기 제1 및 제2의 부분 곱을 가산하는 단계;
    제2 곱 가수를 생성하기 위해서 상기 가산 연산의 제2 라운딩 값과 함께 상기 제1 및 제2의 부분 곱을 가산하는 단계;
    상기 제1 및 제2의 곱 가수 중 적어도 하나를, 상기 시프트 방향으로 상기 시프트량만큼 시프트시키는 단계; 및
    상기 소정의 정규 형식으로 포맷된 가수를 생성하기 위해서 상기 제1 및 제2의 곱 가수 중 하나를 선택하는 단계를 포함하는, 데이터 처리장치의 연산방법.
KR1020160116944A 2015-09-25 2016-09-12 부동소수점 곱셈 장치 및 방법 KR102627299B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/865,342 US9823897B2 (en) 2015-09-25 2015-09-25 Apparatus and method for floating-point multiplication
US14/865,342 2015-09-25

Publications (2)

Publication Number Publication Date
KR20170037518A KR20170037518A (ko) 2017-04-04
KR102627299B1 true KR102627299B1 (ko) 2024-01-22

Family

ID=56894789

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160116944A KR102627299B1 (ko) 2015-09-25 2016-09-12 부동소수점 곱셈 장치 및 방법

Country Status (4)

Country Link
US (1) US9823897B2 (ko)
KR (1) KR102627299B1 (ko)
CN (1) CN106970776B (ko)
GB (1) GB2542652B (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11023230B2 (en) * 2015-10-24 2021-06-01 Alan A. Jorgensen Apparatus for calculating and retaining a bound on error during floating-point operations and methods thereof
US10303438B2 (en) 2017-01-16 2019-05-28 International Business Machines Corporation Fused-multiply-add floating-point operations on 128 bit wide operands
US10241756B2 (en) * 2017-07-11 2019-03-26 International Business Machines Corporation Tiny detection in a floating-point unit
TWI638313B (zh) 2017-11-07 2018-10-11 瑞昱半導體股份有限公司 浮點數運算電路及方法
CN109783055B (zh) * 2017-11-10 2021-02-12 瑞昱半导体股份有限公司 浮点数运算电路及方法
CN112732220A (zh) * 2019-10-14 2021-04-30 安徽寒武纪信息科技有限公司 用于浮点运算的乘法器、方法、集成电路芯片和计算装置
US11188304B1 (en) 2020-07-01 2021-11-30 International Business Machines Corporation Validating microprocessor performance
WO2022016261A1 (en) * 2020-07-21 2022-01-27 The Governing Council Of The University Of Toronto System and method for accelerating training of deep learning networks
US20230035159A1 (en) * 2021-07-23 2023-02-02 Arm Limited Tininess detection
WO2023113445A1 (ko) * 2021-12-14 2023-06-22 서울대학교산학협력단 부동 소수점 연산 방법 및 장치
CN114371735B (zh) * 2022-01-07 2023-11-03 广东汇天航空航天科技有限公司 一种飞行器地理围栏数据处理方法及系统
WO2024117562A1 (ko) * 2022-11-29 2024-06-06 한국전자통신연구원 곱셈 누적 연산 방법 및 장치
CN117687596B (zh) * 2023-12-20 2024-07-19 摩尔线程智能科技(北京)有限责任公司 运算装置及方法、芯片和电子设备
CN117762375A (zh) * 2023-12-22 2024-03-26 摩尔线程智能科技(北京)有限责任公司 数据处理方法、装置、计算装置、图形处理器和存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110106868A1 (en) 2009-11-03 2011-05-05 Arm Limited Floating point multiplier with partial product shifting circuitry for result alignment
US20150254066A1 (en) 2014-03-07 2015-09-10 Arm Limited Data processing apparatus and method for multiplying floating point operands

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5276634A (en) * 1990-08-24 1994-01-04 Matsushita Electric Industrial Co., Ltd. Floating point data processing apparatus which simultaneously effects summation and rounding computations
WO1998006029A1 (en) 1996-08-07 1998-02-12 Valery Yakovlevich Gorshtein Apparatus and methods for execution of computer instructions
US6490607B1 (en) * 1998-01-28 2002-12-03 Advanced Micro Devices, Inc. Shared FP and SIMD 3D multiplier
KR20030078541A (ko) * 2002-03-30 2003-10-08 삼성전자주식회사 Dsp에서 가드 비트 처리가 간단한 연산 장치 및 상기연산 장치에서 가드 비트 처리 방법
CN100405289C (zh) * 2005-03-08 2008-07-23 中国科学院计算技术研究所 一种浮点乘法器及其兼容双精度和双单精度计算的方法
US7912887B2 (en) * 2006-05-10 2011-03-22 Qualcomm Incorporated Mode-based multiply-add recoding for denormal operands
CN101174200B (zh) * 2007-05-18 2010-09-08 清华大学 一种具有五级流水线结构的浮点乘加融合单元
CN100555212C (zh) * 2007-07-18 2009-10-28 中国科学院计算技术研究所 一种浮点乘加器及其乘法csa压缩树的进位校验装置
CN101692202B (zh) * 2009-09-27 2011-12-28 龙芯中科技术有限公司 一种64比特浮点乘加器及其浮点运算流水节拍处理方法
CN102004627B (zh) * 2010-11-01 2012-11-21 深圳市海思半导体有限公司 乘法舍入实现方法和装置
US8996600B1 (en) 2012-08-03 2015-03-31 Altera Corporation Specialized processing block for implementing floating-point multiplier with subnormal operation support

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110106868A1 (en) 2009-11-03 2011-05-05 Arm Limited Floating point multiplier with partial product shifting circuitry for result alignment
US20150254066A1 (en) 2014-03-07 2015-09-10 Arm Limited Data processing apparatus and method for multiplying floating point operands

Also Published As

Publication number Publication date
CN106970776A (zh) 2017-07-21
CN106970776B (zh) 2021-12-14
KR20170037518A (ko) 2017-04-04
US20170090868A1 (en) 2017-03-30
GB201610092D0 (en) 2016-07-27
GB2542652B (en) 2018-04-18
GB2542652A (en) 2017-03-29
US9823897B2 (en) 2017-11-21

Similar Documents

Publication Publication Date Title
KR102627299B1 (ko) 부동소수점 곱셈 장치 및 방법
US8046399B1 (en) Fused multiply-add rounding and unfused multiply-add rounding in a single multiply-add module
JP6001276B2 (ja) 浮動小数点加算を実行するための装置および方法
JP6360450B2 (ja) 浮動小数点オペランドを乗算するためのデータ処理装置及び方法
JP5996946B2 (ja) 浮動小数点加算器
CN107769791B (zh) 用于定点到浮点的转换的装置和方法及2的负幂检测器
US10338889B2 (en) Apparatus and method for controlling rounding when performing a floating point operation
GB2532309A (en) Standalone floating-point conversion unit
CN107608655B (zh) 微处理器中执行fma指令的方法和微处理器
EP0359809A4 (en) Apparatus and method for floating point normalization prediction
CN108694037B (zh) 用于在执行浮点减法时估计移位量的装置和方法
KR102412746B1 (ko) 부동 소수점 제곱근 연산 장치 및 방법
US20060136543A1 (en) Data processing apparatus and method for performing floating point addition
US7290023B2 (en) High performance implementation of exponent adjustment in a floating point design
US9836279B2 (en) Apparatus and method for floating-point multiplication
GB2559039B (en) Leading zero anticipation
US8015231B2 (en) Data processing apparatus and method for performing floating point multiplication
US7401107B2 (en) Data processing apparatus and method for converting a fixed point number to a floating point number
US6571266B1 (en) Method for acquiring FMAC rounding parameters
US20190121615A1 (en) Apparatus and method for subtracting significand values of floating-point operands
KR101922462B1 (ko) 데이터 처리장치 및 이진수에 대해 시프트 기능을 수행하는 방법
US7640286B2 (en) Data processing apparatus and method for performing floating point multiplication
US20130339417A1 (en) Residue-based exponent flow checking
US10331406B2 (en) Handling floating-point operations
US20180329682A1 (en) Handling floating point operations

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