KR20070058293A - 연산 처리 장치, 정보 처리 장치, 및 연산 처리 방법 - Google Patents

연산 처리 장치, 정보 처리 장치, 및 연산 처리 방법 Download PDF

Info

Publication number
KR20070058293A
KR20070058293A KR1020060037654A KR20060037654A KR20070058293A KR 20070058293 A KR20070058293 A KR 20070058293A KR 1020060037654 A KR1020060037654 A KR 1020060037654A KR 20060037654 A KR20060037654 A KR 20060037654A KR 20070058293 A KR20070058293 A KR 20070058293A
Authority
KR
South Korea
Prior art keywords
shift
bit
unit
result
calculation
Prior art date
Application number
KR1020060037654A
Other languages
English (en)
Other versions
KR100818011B1 (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 KR20070058293A publication Critical patent/KR20070058293A/ko
Application granted granted Critical
Publication of KR100818011B1 publication Critical patent/KR100818011B1/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
    • 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
    • G06F7/49952Sticky bit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3812Devices capable of handling different types of numbers
    • G06F2207/382Reconfigurable for different fixed word lengths
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49942Significance control
    • G06F7/49947Rounding
    • G06F7/49957Implementation of IEEE-754 Standard
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/74Selecting or encoding within a word the position of one or more bits having a specified value, e.g. most or least significant one or zero detection, priority encoders

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Complex Calculations (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

본 발명은 스티키 비트를 생성하기 위한 하드웨어 자원을 저감하면서, 스티키 비트를 생성하기 위해 요구되는 사이클 타임을 삭감하여 스티키 비트를 효율적으로 생성할 수 있도록 하는 것을 목적으로 한다.
연산 결과가 정규화일 때에 연산 결과가 시프트되었는지의 여부를 나타내는 정보의 생성을 행하는 연산 처리 장치에서, 연산 결과를 출력하는 연산 수단과, 복수의 시프트 수단을 가지며, 연산 결과에 대한 정규화 처리를 복수의 시프트 수단에 의해 분할하여 행하는 정규화 처리 수단(30)과, 복수의 시프트 수단에 대한 복수의 시프트량을 산출하는 시프트량 산출 수단과, 복수의 시프트량을 이용하여 연산 결과가 정규화일 때에 연산 결과가 시프트되는지의 여부의 예측 결과인 임시 정보의 생성을 행하는 예측 수단(51)과, 임시 정보를 이용하여 상기 정보의 생성을 행하는 생성 수단(52)을 구비한다.

Description

연산 처리 장치, 정보 처리 장치, 및 연산 처리 방법{ARITHMETIC OPERATION UNIT, INFORMATION PROCESSING APPARATUS AND ARITHMETIC OPERATION METHOD}
도 1은 본 발명의 일 실시예로서의 연산 처리 장치의 구성을 나타내는 블록도.
도 2는 본 발명의 일 실시예로서의 연산 처리 장치의 정규화 처리부, 스티키 비트 생성부, 반올림 처리부의 구성을 나타내는 블록도.
도 3은 본 발명의 일 실시예로서의 연산 처리 장치의 스티키 비트 생성부의 논리합 산출부가 구비하는 논리 회로의 일례를 나타낸 도면.
도 4는 본 발명의 일 실시예로서의 연산 처리 장치의 스티키 비트 생성부의 논리합 산출부가 구비하는 논리 회로의 일례를 나타낸 도면.
도 5는 본 발명의 일 실시예로서의 연산 처리 장치가 단정밀도 연산을 서포트할 때의 스티키 비트 생성부의 논리합 산출부의 동작을 설명하기 위한 도면이며, (a) 내지 (c)의 각각은 스티키 비트 생성 영역 중의 일부 영역에 대한 동작을 설명하기 위한 도면.
도 6은 본 발명의 일 실시예로서의 연산 처리 장치의 스티키 비트 생성부의 논리합 산출부가 구비하는 논리 회로의 일례를 나타낸 도면.
도 7은 본 발명의 일 실시예로서의 연산 처리 장치의 스티키 비트 생성부의 논리합 산출부가 구비하는 논리 회로의 일례를 나타낸 도면.
도 8은 본 발명의 일 실시예에서의 연산 처리 장치의 스티키 비트 생성부의 논리합 산출부가 구비하는 논리 회로의 일례를 나타낸 도면이다.
도 9는 본 발명의 일 실시예로서의 연산 처리 장치가 배정밀도 연산을 서포트할 때의 스티키 비트 생성부의 논리합 산출부의 동작을 설명하기 위한 도면이며, (a) 내지 (c) 각각은 스티키 비트 생성 영역 중의 일부 영역에 대한 동작을 설명하기 위한 도면.
도 10은 본 발명의 일 실시예로서의 연산 처리 장치에서, 단정밀도 연산을 서포트할 때에 파이프 라인 스테이지를 잘랐을 때의 동작예를 나타내는 도면.
도 11은 본 발명의 일 실시예로서의 연산 처리 장치에서, 배정밀도 연산을 서포트할 때에 파이프 라인 스테이지를 잘랐을 때의 동작예를 나타내는 도면.
도 12는 종래의 부동 소수점 곱합 연산기의 구성을 나타내는 블록도.
도 13은 제2 시프트부에 입력되는 데이터 포멧을 설명하기 위한 도면.
도 14는 본 발명의 연산 처리 장치 및 종래의 부동 소수점 곱합 연산기가 단정밀도 연산을 서포트하는 경우의 출력 데이터를 설명하기 위한 도면.
도 15는 본 발명의 연산 처리 장치 및 종래의 부동 소수점 곱합 연산기가 배정밀도 연산을 서포트하는 경우의 출력 데이터를 설명하기 위한 도면.
도 16은 종래의 부동 소수점 곱합 연산기의 정규화 처리부 및 반올림 처리부의 구성을 나타낸 도면.
도 17은 종래의 부동 소수점 곱합 연산기에서, 단정밀도 연산을 서포트할 때 에 파이프 라인 스테이지를 잘랐을 때의 동작예를 나타내는 도면.
도 18은 본 발명의 일 실시예로서의 연산 처리 장치의 스티키 비트 생성부의 논리합 산출부의 논리합 회로를 나타내는 도면.
<도면의 주요 부분에 대한 부호의 설명>
1, 100: 부동 소수점 곱합 연산기 10: 우측 시프트부
11: 승산기 12: CSA(Carry Save Adder)
13: 절대치 가산기 20: 시프트량 산출부(시프트량 산출 수단)
30, 300: 정규화 처리부(정규화 처리 수단)
31: 제1 시프트부(제1 처리부) 32: 제2 시프트부(제1 처리부)
32a, 33a, 51a 내지 51c: 논리 회로
32a-1, 33a-1, 51a-4, 51a-5, 51b-4, 51b-5, 51c-3: AND 게이트
32a-2, 33 -2: 버퍼게이트
32a-3, 33a-3, 51a-1 내지 51c-1: OR 게이트
33: 제3 시프트부(제1 처리부) 34: 제4 시프트부(제1 처리부)
35: 1 비트 시프트부(제2 처리부) 40: 반올림 처리부
41: 증분 수단 42, 50: 스티키 비트 생성부
43: 반올림 판정부(반올림 판정 수단) 44: 선택 회로(선택 수단)
51: 논리합 산출부(예측 수단)
51a-2, 51a-3, 51b-2, 51b-3: NOT 게이트
51c-2: NAND 게이트 51d: 논리합 회로
52: 생성부(생성 수단)
본 발명은, 연산 처리 장치의 부동 소수점 곱합 연산기(FMA:Floating-point Multiply Adder)에서, 스티키 비트(Sticky bit)를 이용하여 연산 결과의 반올림 처리를 행하는 기술에 관한 것이며, 특히 연산 결과의 반올림 처리에서의 정규화 시프트량을 소정 비트(예컨대 1 비트)의 오차 이내에서 구하는 예측 논리를 사용하는 경우에 스티키 비트를 효율적으로 구하기 위한 기술에 관한 것이다.
종래부터, 부동 소수점 곱합 연산기(FMA:Floating-point Multiply Adder)는 예컨대 도 12에 나타내는 것 같이 구성된다. 이 도 12에 나타내는 부동 소수점 곱합 연산기(100)는 우측 시프트부[Aligner(Right Shifter)](10), 승산기[CSA(Carry Save Adder) Tree](11), CSA(Carry Save Adder)(12), 절대치 가산기(Abs. Adder)(13), 시프트량 산출부[L. Z. Predictor(Leading Zero Predictor)](20), 정규화 처리부[Normalizer(Left Shifter)](300), 및 반올림 처리부(Rounder)(400)를 구비하여 구성되어 있다.
또한, 부동 소수점 곱합 연산기(100)는 예컨대 IEEE(The Institute of Electrical and Electronics Engineers,Inc.; 미국 전자 기술자 협회)(754) 준거의 단정밀도 연산과 배정밀도 연산을 서포트한다.
우측 시프트부(10), 승산기(11), CSA(12) 및 절대치 가산기(13)는 3 피연산 자(도면 중“OP1",“OP2",“OP3")의 부동 소수점 곱합 연산을 실행하는 곱합 연산부로서 기능하는 것이다.
시프트량 산출부(20)는 절대치 가산기(13)로부터의 출력 데이터(연산 결과; 후술하는 도 13 참조)의 선두로부터 어느 정도 "0"이 연속되고 있는지를 구하는 것이며, 이 결과가 정규화 처리부(300)에 입력되는 시프트량(Shift Amount)이 된다. 즉, 시프트량 산출부(20)는 정규화 처리부(300)에 의한 좌측 시프트 처리(정규화 처리)에 이용하는 정규화 시프트량을 산출한다.
여기서, 부동 소수점 곱합 연산기(100)에서는 고속화를 위해 절대치 가산기(13)에 의한 처리와 병행하여 시프트량 산출부(20)가 정규화 시프트량을 산출하도록 구성되어 있고, 시프트량 산출부(20)는 절대치 가산기(13)의 출력 데이터가 아닌, 전단의 CSA(12)의 출력 데이터[즉, 절대치 가산기(13)의 입력 데이터]를 이용하여 정규화 시프트량을 산출한다. 또한, 시프트량 산출부(20)에 의해 산출된 정규화 시프트량은 여기서 7 비트로 나타내어지는 데이터로 정규화 처리부(300)에 출력된다.
또한, 이러한 시프트량 산출부(20)에서는 산출하는 정규화 시프트량이 1 비트 부족한 경우가 있다.
정규화 처리부(300)는 시프트량 산출부(20)에 의해 산출된 정규화 시프트량을 이용하여 절대치 가산기(13)의 출력 데이터(이하, 연산 결과라고 한다)에 대하여 시프트 처리를 실시하는 것이며, 정규화 처리부(300)에 의해 연산 결과의 소정 비트 위치가 반드시 "1"이 된다.
반올림 처리부(400)는 정규화 처리부(300)에 의해 정규화 처리를 실시한 연산 결과에 대하여 반올림 처리를 행하는 것이며, 반올림 처리부(400)는 반올림 처리에 필요한 스티키 비트를 스스로 생성한다. 즉, 반올림 처리부(400)는 본 부동 소수점 곱합 연산기(100)의 출력 데이터로서의 연산 결과의 가수(假數)부(후술하는 도 14, 도 15 참조)의 정밀도를 향상시키도록 연산 결과에서 가수부 이외의 잘리는 영역(스티키 비트 생성 영역: 후술하는 도 14, 도 15 참가)에 "1"이 있는 경우에는 상기 가수부에 "1"을 추가하는 반올림 처리를 실시한다.
여기서, 도 13에 나타내는 것 같이, 절대치 가산기(13)의 출력 데이터인 연산 결과는 예컨대 128 비트 길이 데이터("0" 또는 "1"의 데이터)로 이루어지고, C<127:0>로 나타내어진다. 또한, C<127:125>는 고정치 "000"이 된다.
그리고, 부동 소수점 곱합 연산기(100)가 단정밀도 연산을 서포트하는 경우에는 정규화 처리부(300)에 의해 정규화 처리를 실시한 정규화 처리부(300)로부터의 출력 데이터(R<127:0>)는 도 14에 나타내는 것 같이 구성된다.
즉, 128 비트의 연산 결과(R<127:0>) 중, 최상위로부터 4 비트의 R<127:124>은 고정치의 필드이고, R<123:101>의 23 비트가 가수부이며, 또한 그 후단의 R<100>이 G(guard) 비트, R<99>이 R(round) 비트이고, 나머지 R<98:0>의 99 비트가 스티키 비트의 생성 대상 범위가 되는 스티키 비트 생성 영역이 된다.
또한, 부동 소수점 곱합 연산기(100)가 배정밀도 연산을 서포트하는 경우에는 정규화 처리부(300)에 의해 정규화 처리를 실시한 정규화 처리부(300)로부터의 출력 데이터(R<127:0>)는 도 15에 나타내는 것 같이 구성된다.
즉, 128 비트의 연산 결과 중, 최상위로부터 4 비트의 R<127:124>는 고정치의 필드이고, R<123:72>의 52 비트가 가수부이며, 또한 그 후단의 R<71>이 G(guard) 비트, R<70>이 R(round) 비트이고, 나머지 R<69:0>의 70 비트가 스티키 비트의 생성 대상 범위가 되는 스티키 비트 생성 영역이 된다.
또한, 도 14, 도 15에 나타내는 단정밀도 연산 및 배정밀도 연산 각각의 경우에서, R<127:124>은 고정치의 필드에서 "0000"인 상태지만, 정규화 처리부(300)에 의한 정규화 처리에 의해 R<124>가 반드시 "1"이 된다.
도 16에 정규화 처리부(300) 및 반올림 처리부(400)의 구성을 나타낸다. 이 도 16에 나타내는 바와 같이, 정규화 처리부(300)는 복수단의 시프터(31 내지 35), 즉 제1 시프트부(1st left shifter)(31), 제2 시프트부(2nd left shifter)(32), 제3 시프트부(3rd left shifter)(33), 제4 시프트부(4th left shifter)(34), 및 1 비트 시프트부(1 bit left shifter)(35)를 구비하여 구성되어 있다.
제1 내지 제4 시프트부(31 내지 34)는 시프트량 산출부(20)에 의해 7 비트 길이의 데이터로서 산출된 정규화 시프트량 SA<6:0>(SA:Shift Amount)을 이용하여 연산 결과에 정규화 처리(좌측 시프트)를 행한다.
도 13에 나타낸 바와 같이, 입력 데이터(연산 결과)가 128 비트의 데이터이기 때문에, 제1 내지 제4 시프트부(31 내지 34)에 의한 시프트량[즉, 시프트량 산출부(20)에 의해 산출되는 정규화 시프트량]은 최대 127 비트가 된다. 이 때문에, 여기서 제1 시프트부(31)는 정규화 시프트량으로서, 7 비트 길이 데이터 중 1 비트의 데이터에 기초하여, 64 비트 또는 0 비트의 시프트를 행할 수 있고, 제2 시프트 부(32)는 7 비트 길이 데이터 중 2 비트의 데이터에 기초하여 48, 32, 16, 0 중 어느 하나의 비트의 시프트를 행하는 수 있으며, 제3 시프트부(33)는 7 비트 길이 데이터 중 2 비트의 데이터에 기초하여, 12, 8, 4, 0 중 어느 하나의 비트의 시프트를 행할 수 있고, 제4 시프트부(34)는 7 비트 길이 데이터 중 2 비트의 데이터에 기초하여 3, 2, 1, 0, 중 어느 하나의 비트의 시프트를 행할 수 있다.
1 비트 시프트부(35)는 제4 시프트부(34)에 의한 정규화 처리의 결과, 소정의 비트 위치(여기서는 R<124>)가 "1"이 되도록 시프트되어 있는지의 여부를 판단하고, 소정의 비트 위치가 "1"이 아니면 시프트량 산출부(20)에 의해 산출된 정규화 시프트량이 1 비트 부족한 것으로서, 제4 시프트부(34)에 의해 정규화 처리를 실시한 연산 결과에 대하여 1 비트의 좌측 시프트 처리를 더 실시한다. 그 결과, 이러한 소정의 비트 위치의 데이터는 "1"이 된다.
즉, 1 비트 시프트부(35)는 제4 시프트부(34)의 출력 데이터의 소정 비트 위치가 "0"인지 "1"인지를 판단하고, "1"인 경우에는 시프트 처리를 실행하지 않는다. 한편, 시프트량 산출부(20)에 의해 산출된 정규화 시프트량이 1 비트 부족하기 때문에 소정 비트 위치가 0인 경우에는 정규화 처리를 완료하도록, 소정 비트 위치가 "1"이 되도록 제4 시프트부(34)의 출력 데이터를 1 비트만 시프트한다.
또한, 도 16에 나타내는 것 같이, 반올림 처리부(400)는 증분 수단(Incrementer)(41), 스티키 비트 생성부(42), 반올림 판정부(Judge Round)(43), 및 선택 회로(44)로 구성되다.
증분 수단(41)은 정규화 처리부(300)에 의해 정규화 처리를 실시한 연산 결 과 중의 가수부(단정밀도 연산의 경우는 R<123:101>, 배정밀도 연산의 경우는 R<123:72>)에 "1"을 추가하는 반올림 처리를 행한다.
스티키 비트 생성부(42)는 증분 수단(41)에 의해 반올림 처리를 실시한 연산 결과를 최종적으로 출력하는지의 여부를 반올림 판정부(43)가 판단하는 데 이용하는 스티키 비트를 생성한다. 스티키 비트 생성부(42)는 스티키 비트 생성 영역에 "1"의 데이터가 포함되어 있는지의 여부를 스티키 비트 생성 영역의 모든 데이터에 대하여 논리합 연산을 행함으로써 판단하고, 스티키 비트 생성 영역에 적어도 하나 "1"이 포함되는 경우에는 스티키 비트를 "1"로 설정한다.
따라서, 단정밀도 연산의 경우에는 스티키 비트 생성부(42)는 R<98:0>의 99 비트의 데이터의 논리합 연산을 행하는 것에 의해, 이 스티키 비트 생성 영역에 "1"이 존재하는지의 여부를 판단하여 스티키 비트를 생성한다. 또한, 배정밀도 연산의 경우에는 스티키 비트 생성부(42)는 R<69:0>의 70 비트의 데이터의 논리합 연산을 행함으로써 스티키 비트를 생성한다.
반올림 판정부(43)는 스티키 비트 생성부(42)에 의해 생성된 스티키 비트, 연산 결과에서의 가수부의 최하위 비트인 L(Least significant bit) 비트, G(Guard) 비트, R(Round) 비트(도 14, 도 15 참조)와 함께, 외부로부터 입력되는 RD(Round Directlon) 비트 및 SIGN 비트에 기초하여, 반올림 처리가 필요한지의 여부를 판단한다. 그리고, 반올림 판정부(43)는 이러한 판정의 결과를 선택 회로(44)에 출력한다.
선택 회로(44)는 반올림 판정부(43)에 의한 판정 결과에 기초하여, 증분 수 단(41)을 통해 입력되는 반올림 처리를 실시한 연산 결과와, 정규화 처리부(300)로부터 출력된 상태 그대로의 연산 결과 중 어느 하나를 출력하는 것이다.
즉, 선택 회로(44)는 반올림 판정부(43)에 의한 판정 결과가 반올림 처리가 필요하다고 판단된 경우에는 증분 수단(41)에 의해 반올림 처리를 실시한 연산 결과를 출력하는 한편, 반올림 판정부(43)에 의한 판정 결과가 반올림 처리가 필요하지 않다고 판단된 경우에는 정규화 처리부(300)로부터 출력된 상태 그대로의 반올림 처리가 실시되지 않은 연산 결과를 출력한다.
또한, 종래부터 정규화 처리 전의 곱합 연산 결과의 가수부를 정규화 시프트량에 기초하여 생성된 마스크 데이터를 이용하여 마스크함으로써 스티키 비트를 생성하는 기술이 있다(예컨대, 하기 특허 문헌 1 참조).
[특허 문헌 1] 일본 특허 공개 평8-212192호 공보
그러나, 도 12에 나타내는 종래의 부동 소수점 곱합 연산기(100)로는 스티키 비트 생성부(42)가 스티키 비트를 생성하기 위해 최대(단정밀도 연산의 경우) 99 비트 길이의 데이터의 논리합 연산을 행할 필요가 있다. 이것은 56 비트 길이의 데이터를 AND 회로로 처리하는 경우와 같은 정도의 딜레이인 56 비트의 증분 수단(41)보다 딜레이가 크다.
또한, 부동 소수점 곱합 연산기(100)로는 정규화 처리부(300)에 의해 연산 결과에 정규화 처리를 실시하고, 계속해서 스티키 비트 생성부(42)가 스티키 비트를 생성한 후에 반올림 측정부(43)가 반올림 측정을 더 행함으로써 데이터를 선택 하기 때문에, 정규화 처리부(300)로부터 데이터가 출력된 후 반올림 처리부(400)[즉 부동 소수점 곱합 연산기(100)]로부터 데이터가 출력될 때까지, 딜레이가 심한 결과가 된다.
또한, 최근에는 부동 소수점 곱합 연산기(100)가 탑재되는 중앙 처리 장치의 주파수는 2 GHz를 크게 넘어 있다. 이러한 2 GHz 이상의 주파수가 되면 사이클 타임이 매우 짧기 때문에 128 비트 폭의 시프트부(Left Shifter) 이상의 딜레이 시간이 요구되는 정규화 처리를 정규화 처리부(300)에서 1 사이클로 실행하는 것은 곤란하다. 또한 반올림 처리부(400)의 처리도 동일한 사이클 타임으로 실행하는 것은 곤란하다. 따라서, 도 17에 파선(Y)으로 나타내는 것 같이, 정규화 처리부(300)에 의한 처리와 반올림 처리부(400)에 의한 처리 사이에서 파이프 라인 스테이지를 분할하는 것이 일반적이다. 또한, 도 17에 나타내는 예는 단정밀도 연산을 서포트하는 경우이며, 파선(X)으로 나타내는 것 같이, 제1 시프트부(31)에 의한 처리와 제2 시프트부(32)에 의한 처리 사이에서 파이프 라인 스테이지가 잘리고, 또한 파선(Z)으로 나타내는 것 같이, 선택 회로(44)로부터의 출력 후에도 파이프 라인 스테이지가 잘려 있다.
이 도 17에 나타내는 바와 같이, 파이프 라인 스테이지를 분할하는 경우에는 파이프 라인 스테이지를 잘랐을 때 데이터를 래치(Latch)할 필요가 있고, 정규화 처리부(300)에 의한 처리와 반올림 처리부(400)에 의한 처리의 경계에서는 128 비트의 데이터를 래치하게 된다. 즉, 이 스태이징 래치로는 스티키 비트 생성부(42)가 스티키 비트를 생성하기 위해서만 사용하는 스티키 비트 생성 영역의 99 비트의 데이터(R<98:0>)를 래치해야 하고, 이러한 스테이징 래치를 위한 배치·배선(물량)이 방대하게 되어 버린다. 또한, 배정밀도 연산을 서포트하는 경우에도 스티키 비트를 생성하기 위해서만 스티키 비트 생성 영역의 70 비트 폭의 데이터(R<69:0>)를 래치해야 한다.
또한, 상기 특허 문헌 1에 개시되어 있는 기술로는 시프트량 산출부(최상위 자릿수 검출부)에 의해 산출된 정규화 시프트량이 1 비트 부족한 경우에 대응하기 위해 정규화 시프트량이 1 비트 부족하지 않은 경우의 마스크와, 정규화 시프트량이 1 비트 부족한 경우의 마스크의 두 가지 마스크를 작성할 필요가 있다.
그리고, (1) 정규화 처리의 결과를 보고 정규화 시프트량이 1 비트 부족한지의 여부를 판단하고, 상기의 2 종류의 마스크 중 어느 하나를 채용하는 방법, 또는 (2) 상기의 2 종류의 마스크 각각을 이용한 처리 결과를 준비 해 두고, 정규화 처리의 결과에 기초하여 어느 한 쪽의 처리 결과를 선택하는 방법 중 어느 하나의 방법을 채용할 필요가 있다.
그러나, 상기 (1)의 방법을 채용한 경우에는 딜레이가 매우 큰 것이 되어 버린다. 또한, 상기 (2)의 방법을 채용한 경우에는 마스크 처리나 논리합 연산 처리를 위한 하드웨어 자원(물량)이 증대되어 버린다.
본 발명은, 이러한 과제를 감안하여 창안된 것으로, 스티키 비트를 생성하기 위한 하드웨어 자원을 저감하면서, 스티키 비트를 생성하기 위해 요구되는 사이클 타임을 삭감하여 스티키 비트를 효율적으로 생성할 수 있도록 하는 것을 목적으로 한다.
상기 목적을 달성하기 위해, 본 발명에서의 연산 처리 장치는 연산 결과가 정규화일 때에 1이 시프트되었는지의 여부를 나타내는 스티키 비트를 이용하여 연산 결과의 반올림 처리를 행하는 연산 처리 장치에서, 상기 연산 결과를 출력하는 연산 수단과, 적어도 2 개 이상의 시프트 수단을 가지며, 상기 연산 결과에 대한 정규화 처리를 상기 복수의 시프트 수단에 의해 분할하여 행하는 정규화 처리 수단과, 상기 복수의 시프트 수단에 대한 복수의 시프트량을 산출하는 시프트량 산출 수단과, 상기 복수의 시프트량을 이용하여 연산 결과가 정규화일 때에 1이 시프트되는지의 여부의 예측 결과인 임시 스티키 비트의 생성을 행하는 스티키 비트 예측 수단과, 상기 임시 스티키 비트를 이용하여 상기 스티키 비트의 생성을 행하는 스티키 비트 생성 수단을 갖는 것을 특징으로 하는 연산 처리 장치인 것을 특징으로 한다(청구항 1).
상기 목적을 달성하기 위해, 본 발명에서의 상기 연산 처리 장치는 추가로, 상기 스티키 비트를 이용하여 상기 반올림 처리를 행하는지의 여부의 판정 결과를 출력하는 반올림 판정 수단과, 상기 연산 결과에 1을 가산하는 증분 수단과, 상기 판정 결과를 이용하여 상기 연산 결과와 상기 증분 수단의 출력 중 어느 하나를 선택하는 선택 수단을 갖는 것을 특징으로 한다(청구항 2).
상기 목적을 달성하기 위해 본 발명에서의 연산 처리 장치는 연산 결과가 정규화일 때에 1이 시프트되었는지의 여부를 나타내는 스티키 비트를 이용하여 연산 결과의 반올림 처리를 행하는 연산 처리 장치에 의해 연산을 행하는 정보 처리 장 치에 있어서, 상기 연산 결과를 출력하는 연산 수단과, 적어도 2 개 이상의 시프트 수단을 가지며, 상기 연산 결과에 대한 정규화 처리를 상기 복수의 시프트 수단에 의해 분할하여 행하는 정규화 처리 수단과, 상기 복수의 시프트 수단에 대한 복수의 시프트량을 산출하는 시프트량 산출 수단과, 상기 복수의 시프트량을 이용하여 연산 결과가 정규화일 때에 상기 연산 결과가 시프트되는지의 여부의 예측 결과인 임시 스티키 비트의 생성을 행하는 스티키 비트 예측 수단과, 상기 스티키 비트를 이용하여 상기 스티키 비트의 생성을 행하는 스티키 비트 생성 수단을 갖는 연산 처리 장치에 의해 연산을 행하는 것을 특징으로 하는 정보 처리 장치인 것을 특징으로 한다(청구항 3).
상기 목적을 달성하기 위해, 본 발명에서의 상기 연산 처리 장치는 추가로, 상기 스티키 비트를 이용하여 상기 반올림 처리를 행하는지의 여부의 판정 결과를 출력하는 반올림 판정 수단과, 상기 연산 결과에 1을 가산하는 증분 수단과, 상기 판정 결과를 이용하여 상기 연산 결과와 상기 증분 수단의 출력 중 어느 하나를 선택하는 선택 수단을 갖는 것을 특징으로 한다(청구항 4).
상기 목적을 달성하기 위해, 본 발명에서의 연산 처리 방법은 연산 결과가 정규화일 때에 1이 시프트되었는지의 여부를 나타내는 스티키 비트를 이용하여 연산 결과의 반올림 처리를 행하는 연산 처리 방법에 있어서, 상기 연산 결과를 출력하는 단계와, 적어도 2 개 이상의 시프트 처리 단계에서 이용하는 복수의 시프트량을 산출하는 시프트량 산출 단계와, 상기 연산 결과에 대한 정규화 처리를 상기 시프트량을 이용하여 각각 상기 복수의 시프트 처리 단계로 분할하여 행하는 정규화 처리 단계와, 상기 복수의 시프트량을 이용하여 연산 결과가 정규화일 때에 1이 시프트되는지의 여부의 예측 결과인 임시 스티키 비트의 생성을 행하는 스티키 비트 예측 단계와, 상기 임시 스티비 비트를 이용하여 상기 스티키 비트의 생성을 행하는 스티키 비트 생성 단계를 갖는 것을 특징으로 한다(청구항 5).
이하, 도면을 참조하면서 본 발명의 실시예에 관해서 설명한다.
〔1〕본 발명의 단정밀도 연산에서의 실시예에 관해서
우선, 도 1에 나타내는 블록도를 참조하면서, 본 발명의 일 실시예로서의 부동 소수점 곱합 연산기의 구성에 관해서 설명한다. 또한, 도 1에서 기술한 부호와 동일한 부호는 동일한 부분 또는 거의 동일한 부분을 나타내고 있다. 따라서, 여기서는 이들의 상세한 설명은 일부 생략한다.
이 도 1에 나타내는 바와 같이, 본 부동 소수점 곱합 연산기(1)는 우측 시프트부[Aligner(Right Shifter)](10), 승산기{Multiplier[CSA(Carry Save Adder) Tree]}(11), CSA(Carry Save Adder)(12), 절대치 가산기(Abs. Adder)(13), 시프트량 산출부[L. Z. Predictor(Leading Zero Predictor); 시프트량 산출 수단](20), 정규화 처리부[Normalizer(Left Shifter); 정규화 처리 수단](30), 반올림 처리부(Rounder)(40), 및 스티키 비트 생성부(Sticky bit Generator)(50)를 구비하여 구성되어 있다.
또한, 본 부동 소수점 곱합 연산기(1)는 예컨대 IEEE(The Institute of Electrical and Electronics Engineers, Inc.; 미국 전자 기술자 협회)(754) 준거의 단정밀도 연산을 서포트한다.
또한, 절대치 가산기(13)로부터의 출력 데이터[연산 결과; 정규화 처리부(30)의 입력 데이터 포멧]는 상기 도 13에 나타낸 것(C<127:0>)과 동일하며, 본 부동 소수점 곱합 연산기(1)가 단정밀도 연산을 서포트하는 경우의 데이터 구조[정규화 처리부(30)의 출력 데이터 포멧)는 상기 도 14에 나타낸 것(R<127:0>)과 마찬가지이다. 따라서, 이하의 설명에서도, 연산 결과(입력 데이터 포멧)나 출력 데이터(출력 데이터 포멧)에 관해서는 상기 도 13 내지 도 15를 이용하여 설명한다.
우측 시프트부(10), 승산기(11), CSA(12) 및 절대치 가산기(13)는 3 피연산자(도면 중 "OP1", "OP2", "OP3")의 부동 소수점 곱합 연산을 실행하는 곱합 연산부로서 기능하는 것이다. 또한, 이 곱합 연산부의 연산 결과[즉, 절대치 가산기(13)의 출력 데이터]는 상기 도 13에 나타낸 바와 같이 C<127:0>로 나타내어진다.
시프트량 산출부(20)는 절대치 가산기(13)로부터의 출력 데이터(연산 결과)의 선두로부터 어느 정도 "0"이 연속하고 있는지를 예측하는 것이며, 이 결과가 정규화 처리부(30)의 시프트량(Shift Amount)이 된다. 즉, 시프트량 산출부(20)는 정규화 처리부(30)에 의한 좌측 시프트 처리(정규화 처리)에 이용한다, 연산 결과에 대한 정규화 시프트량을 산출한다. 또한, 시프트량 산출부(20)에 의해 산출되는 정규화 시프트량은 1 비트 부족한 경우가 있다.
정규화 처리부(30)는 시프트량 산출부(20)에 의해 산출된 정규화 시프트량을 이용하여 절대치 가산기(13)의 출력 데이터(이하, 연산 결과라고 한다)에 대하여 좌측 시프트 처리(정규화 처리)를 실시하는 것이며, 정규화 처리부(30)에 의해 연산 결과의 소정 비트 위치(여기서는 R<124>)가 반드시 "1"이 된다.
여기서, 도 2에 본 부동 소수점 곱합 연산기(1)의 정규화 처리부(30), 반올림 처리부(40), 및 스티키 비트 생성부(50)의 구성을 나타낸다. 이 도 2에 나타내는 것 같이, 정규화 처리부(30)는 복수 단의 시프터(31 내지 35), 즉, 제1 시프트부(1st left shifter)(31), 제2 시프트부(2nd left shifter)(32), 제3 시프트부(3rd left shifter)(33), 제4 시프트부(4th left shifter)(34), 및 1 비트 시프트부[1bit left shifter(제2 처리부)](35)를 구비하여 구성되어 있다.
제1 내지 제4 시프트부(31 내지 34)는 시프트량 산출부(20)에 의해 산출된 정규화 시프트량(7 비트의 데이터: SA<6:0>)을 이용하여 연산 결과에 정규화 처리(좌측 시프트)를 행하는 제1 처리부로서 기능한다.
여기서, 연산 결과는 128 비트의 데이터이기 때문에, 제1 내지 제4 시프트부(31 내지 34)에 의한 시프트량[즉, 시프트량 산출부(20)에 의해 산출되는 정규화 시프트량]은 최대 127 비트가 된다. 이 때문에, 여기서 제1 시프트부(31)는 정규화 시프트량인 7 비트 길이 데이터 SA<6:0> 중 SA<6>에 기초하여, 64 비트 또는 0 비트의 시프트를 행할 수 있고, 제2 시프트부(32)는 SA<6:0> 중 SA<5:4>에 기초하여, 48, 32, 16, 0 중 어느 하나의 비트의 시프트를 행할 수 있으며, 제3 시프트부(33)는 SA<6:0> 중 SA<3:2>에 기초하여, 12, 8, 4, 0 중 어느 하나의 비트의 시프트를 행할 수 있고, 제4 시프트부(34)는 SA<6:0> 중 SA<1:0>에 기초하여, 3, 2, 1, 0 중 어느 하나의 비트의 시프트를 행할 수 있다.
또한, 전술과 같이, 7 비트 길이의 데이터로 출력되는 정규화 시프트량 중, 제1 시프트부(31)에는 정규화 시프트량이 64 비트 이상인지의 여부, 즉 제1 시프트 부(31)가 64 비트의 시프트 처리를 실행하는지의 여부를 나타내는 1 비트의 데이터(SA<6>)가 입력되고, SA<6>가 "1"인 경우에는 64 비트의 시프트를 실행하며, SA<6>이 "0"인 경우에는 시프트를 실행하지 않는다.
또한, 제2 시프트부(32) 내지 제4 시프트부(34)에 입력되는 정규화 시프트량이 SA<5:0>로 나타내어지는 경우, 제2 시프트부(32)는 SA<5:4>에 기초하여 정규화 처리를 실행한다. 여기서는 제2 시프트부(32)는 SA<5:4>가 "11"인 경우에는 48 비트의 시프트를 실행하고, SA<5:4>가 "10"인 경우에는 32 비트의 시프트를 실행하며, SA<5:4>가 "10"인 경우에는 16 비트의 시프트를 실행하고, SA<5:4>가 "00"인 경우에는 시프트를 실행하지 않는다.
또한, 이와 마찬가지로, 제3 시프트부(33)는 SA<3:2>가 "11"인 경우에는 12 비트의 시프트를 실행하고, SA<3:2>가 "10"인 경우에는 8 비트의 시프트를 실행하며, SA<3:2>가 "01"인 경우에는 4 비트의 시프트를 실행하고, SA<3:2>가 "00"인 경우에는 시프트를 실행하지 않는다.
또한, 이와 마찬가지로, 제4 시프트부(34)는 SA<1:0>이 "11"인 경우에는 3 비트의 시프트를 실행하고, SA<1:0>가 "10"인 경우에는 2 비트의 시프트를 실행하며, SA<1:0>가 "01"인 경우에는 1 비트의 시프트를 실행하고, SA<1:0>가 "00"인 경우에는 시프트를 실행하지 않는다.
1 비트 시프트부(35)는 제4 시프트부(34)에 의한 정규화 시프트량에 기초하는 정규화 처리의 결과, 소정의 비트 위치 R<124>가 "1"이 되도록 시프트되어 있는지의 여부(정규화 시프트량이 부족한지의 여부)를 판단하고, 소정의 비트 위치가 "1"이 아니면 시프트량 산출부(20)에 의해 산출된 정규화 시프트량이 1 비트 부족한 것으로서, 제4 시프트부(34)에 의해 정규화 처리를 실시한 연산 결과에 대하여 1 비트의 시프트 처리를 더 실시한다. 그 결과, 이러한 소정의 비트 위치의 데이터는 "1"이 된다.
즉, 1 비트 시프트부(35)는 제4 시프트부(34)의 출력 데이터의 소정 비트 위치가 "0"인지 "1"인지를 판단하고, "1"인 경우에는 시프트 처리를 실행하지 않는다.
한편, 시프트량 산출부(20)에 의해 산출된 정규화 시프트량이 1 비트 부족하기 때문에 소정 비트 위치가 "0"인 경우에는 정규화 처리를 완료하도록(즉, 소정 비트 위치를 "1"로 하도록), 제4 시프트부(34)의 출력 데이터를 1 비트만 시프트한다.
또한, 본 부동 소수점 곱합 연산기(1)로는 스티키 비트 생성부(50)가 정규화 처리부(30)에 의한 정규화 처리와 병행하면서 스티키 비트를 생성하기 때문에, 정규화 처리부(30)는 반올림 처리부(40)에 대하여 정규화 처리를 실시한 연산 결과의 전체 비트가 아닌, 이러한 연산 결과 중, 스티키 비트 생성 영역을 제외한 부분을 반올림 처리부(40)에 출력한다. 바꿔 말하면, 반올림 처리부(40)에는 단정밀도 연산의 경우에는 R<127:99>의 29 비트 길이의 데이터가 반올림 처리부(40)에 입력된다.
또한, 도 2에 나타내는 것 같이, 스티키 비트 생성부(50)는 정규화 처리부(30)에 의한 정규화 처리와 병행하여 스티키 비트를 생성하는 것이며, 논리합 산출 부(Sticky bit Predictor; 예측 수단)(51) 및 생성부(도면 중 "make sticky"라고 표기; 생성 수단)(52)를 구비하여 구성되어 있다.
이 스티키 비트 생성부(50)는 구체적으로, 정규화 처리부(30)의 출력 데이터(R<127:0>) 중의 스티키 비트 생성 영역(단정밀도 연산의 경우는 도 14의 R<98:0>), 1 비트라도 "1"이 있으면 스티키 비트를 온으로 설정하고, 스티키 비트 생성 영역의 전체 비트가 "0"이면 스티키 비트를 오프로 설정하는 것이며, 논리합 산출부(51)와 생성부(52)에 의해 스티키 비트를 생성한다.
논리합 산출부(51)는 정규화 처리부(30)에 의한 정규화 처리와 병행하면서, 연산 결과에서의 최하위 비트로부터 소정 영역 내의 데이터가 정규화 처리부(30)에 의한 정규화 처리에 의해 스티키 비트 생성 영역 내에 이행되는지의 여부를 예측하고, 스티키 비트 생성 영역 내에 이행된다고 예측한 데이터의 논리합을 임시 스티키 비트(Interim Sticky bit)로서 산출하는 것이다.
여기서 논리합 산출부(51)는 제1 시프트부(31)에 의한 정규화 처리를 실시한 연산 결과에 대하여, 이러한 연산 결과 중의 소정 영역(제1 영역)의 데이터가 정규화 처리부(30)에 의한 정규화 처리에 의해 스티키 비트 생성 영역에 시프트되는지의 여부를 제2 시프트부(32) 및 제3 시프트부(33)에 입력되는 정규화 시프트량(4 비트의 데이터; SA<5:2>)을 이용하여 예측하고, 예측한 스티키 비트 생성 영역 내에 시프트되는 데이터가 "1"을 포함하는지의 여부를 판단한다. 이에 따라, 논리합 산출부(51)는 임시 스티키 비트를 생성한다.
여기서, 본 부동 소수점 곱합 연산기(1)가 단정밀도 연산을 서포트하는 경우 에 관해서 설명한다.
본 부동 소수점 곱합 연산기(1)로는 정규화 처리부(20)가 좌측 시프트 처리를 실시하기 때문에, R<98:0>에 "1"이 있는지의 여부의 체크는 정규화 시프트량을 이용하여 C<98:0>의 범위에 "1"을 포함하는지의 여부를 체크함으로써 실행할 수 있다.
구체적으로는, 논리합 산출부(51)는 우선, 제2 시프트부(32) 내지 제4 시프트부(34)가 시프트할 수 있는 최대 범위인 63 비트에 1 비트 시프트부(35)가 시프트할 수 있는 1 비트를 추가한 64 비트 길이 만큼의 정규화 처리가 실행되었다고 해도 R<98:0>에 포함되는 범위, 즉 정규화 시프트량에 관계없이 스티키 비트 생성 영역에 남는 범위에 대하여 논리합 연산 처리를 실시한다.
단정밀도 연산의 경우, 논리합 산출부(51)는 최대 시프트량인 64 비트의 좌측 시프트가 실행되더라도 R<98:64>가 되는 C<34:0>에 관해서, 논리합 연산을 행한다.
또한, 논리합 산출부(51)는 상기한 정규화 시프트량에 상관없이 R<98:0>에 포함되는 부분을 제외한 범위, 여기서는 상기 C<34; 0>를 제외한 범위인 C<94:35>를 대상으로 처리를 행한다. 여기서는 C<94:35>에서 정규화 시프트량(SA<5:2>)에 기초하는 시프트 처리에 의해 R<98:0> 밖으로 나가지 않은 부분에 관해서 4 비트 단위로 논리합 연산하여 검증한다. 또한, 4 비트 단위로 논리합 연산하는 것은 제3 시프트부(33)가 4 비트 단위로 시프트량이 변화되도록 구성되어 있기 때문이다.
즉, 도 5(a)에 나타내는 것 같이, C<94:91>에 관해서 SA<5:2>가 "0000"인 경 우에는 시프트량이 0 내지 3 비트가 되기 때문에, 이 C<94:91>는 R<98:0>의 범위 내에 반드시 남기 때문에, 이 경우에만 C<94:91>을 논리합 연산한 결과를 PAT<14>로서 출력한다. 한편, SA<5:2>가 "0001"인 경우에는 시프트량이 4 내지 7 비트가 되기 때문에, 이 C<94:91>는 R<98:95>의 범위 내에 수용되거나, 또는 R<98:0>의 범위 밖으로 나가기 때문에, 생성부(52)에 의해 처리를 행한다.
이 도 5(a)에 나타내는 처리는 예컨대 도 6에 나타내는 OR(논리합) 게이트, NOT(부정) 게이트, 및 AND(논리곱) 게이트로 이루어지는 논리 회로(51a)에 의해 실현된다. 즉, 논리합 산출부(51)는 회로(51a)를 구비하고 있다. 또한 논리 회로(51a)의 입력 신호(S16)는 예컨대 도 3에 나타내는 논리 회로(32a)에 의해 실현된다. 즉, 논리합 산출부(51)는 SA<5>와 SA<4>의 논리합을 S16(16 비트 이상의 시프트를 행하는지의 여부를 나타내는 신호)으로서 출력하는 OR 게이트(32a-3)를 구비하는 논리 회로(32a)를 구비하고 있다. 또한 마찬가지로, 논리 회로(51a)의 입력 신호(S4)는 예컨대 도 4에 나타내는 논리 회로(33a)에 의해 실현된다. 즉, 논리합 산출부(51)는 SA<3>와 SA<2>의 논리합을 S4(4 비트 이상의 시프트를 행하는지의 여부를 나타내는 신호)로서 출력하는 OR 게이트(33a-3)를 구비하는 논리 회로(33a)를 구비하고 있다.
다음에, 도 5(b)에 나타내는 것 같이, C<90:87>에 관해서 SA<5:2>가 "0001" 이하인 경우에는 이 C<90:87>는 R<98:0>의 범위 내에 반드시 남기 때문에, C<90:87>를 논리합 연산한 결과를 PAT<13>로서 출력한다. 한편, SA<5:2>가 "0010"인 경우에는 이 C<90:87>는 R<98:95>의 범위 내에 수용되거나, 또는 R<98:0>의 범 위 밖으로 나가기 때문에, 예측을 행하지 않고 시프트 결과를 이용하여 생성부(52)에 의해 처리를 행한다.
이 도 5(b)에 나타내는 처리는 예컨대 도 7에 나타내는 OR 게이트, NOT 게이트, 및 AND 게이트로 이루어지는 논리 회로(51b)에 의해 실현된다. 즉, 논리합 산출부(51)는 C<90:87>의 논리합을 출력하는 OR 게이트(51b-1)와, S16, S8을 각각 반전 출력하는 NOT 게이트(51b-2, 51b-3)와, 이들 NOT 게이트(51b-2, 51b-3)로부터의 출력의 논리곱을 출력하는 AND 게이트(51b-4)와, OR 게이트(51b-1)의 출력과 AND 게이트(51b-4)의 출력의 논리곱을 PAT<13>로서 출력하는 AND 게이트(51b-5)로 이루어지는 논리 회로(51b)를 구비하고 있다. 또한 논리 회로(51b)의 입력 신호(S16)는 예컨대 도 3에 나타내는 논리 회로(32a)에 의해 실현된다. 즉, 논리합 산출부(51)는 SA<5>와 SA<4>의 논리합을 S16(16 비트 이상의 시프트를 행하는지의 여부를 나타내는 신호)으로서 출력하는 OR 게이트(32a-3)로 이루어지는 논리 회로(32a)를 구비하고 있다. 또한 마찬가지로, 논리 회로(51b)의 입력 신호(S8)는 예컨대 도 4에 나타내는 논리 회로(33a)에 의해 실현된다. 즉, 논리합 산출부(51)는 SA<3>를 S8(8 비트 이상의 시프트를 행하는지의 여부를 나타내는 신호)로서 출력하는 버퍼 게이트(33a-2)로 이루어지는 논리 회로(33a)를 구비하고 있다.
이후, C<86:35>까지의 데이터에 관해서도, 4 비트마다의 데이터를 대상으로 정규화 시프트량의 값을 1 비트씩 늘리면서 같은 경우에 따른 분류를 하고, 논리합 연산을 행함으로써 PAT<12> 내지 PAT<1>로서 출력하거나, 또는 예측을 행하지 않고 시프트한 결과를 이용하여 처리를 행한다.
그리고, 도 5(c)에 나타내는 것 같이, 최후의 C<38:35>에 관해서는 SA<5:2>가 "1110" 이하인 경우에는 이 C<38:35>는 R<98:0>의 범위 내에 반드시 남기 때문에, 이 경우에만 C<38:35>를 논리합 연산한 결과를 PAT<0>로서 출력한다. 한편, SA<5:2>가 "1111"인 경우에는 이 C<38:35>는 R<98:95>의 범위 내에 수용되거나, 또는 R<98:0>의 범위 밖으로나가기 때문에, 생성부(52)에 의해 처리를 행한다.
이 도 5(c)에 나타내는 처리는 예컨대 도 8에 나타내는 OR 게이트, NAND 게이트, 및 AND 게이트로 이루어지는 논리 회로(51c)에 의해 실현된다. 즉, 논리합 산출부(51)는 C<38:35>의 논리합을 출력하는 OR 게이트(51c-1)와, S48과 S12의 부정 논리곱을 출력하는 NAND 게이트(51c-2)와, OR 게이트(51c-1)의 출력과 NAND 게이트(51c-2)의 출력의 논리곱을 PAT<0>로서 출력하는 AND 게이트(51c-3)로 이루어지는 논리 회로(51c)를 구비하고 있다. 또한 논리 회로(51b)의 입력 신호(S48)는 예컨대 도 3에 나타내는 논리 회로(32a)에 의해 실현된다. 즉, 논리합 산출부(51)는 SA<5>와 SA<4>의 논리곱을 S48(48 비트의 시프트를 행하는지의 여부를 나타내는 신호)로서 출력하는 AND 게이트(32a-1)로 이루어지는 논리 회로(32a)를 구비하고 있다. 또한 마찬가지로, 논리 회로(51b)의 입력 신호(S12)는 예컨대 도 4에 나타내는 논리 회로(33a)에 의해 실현된다. 즉, 논리합 산출부(51)는 SA<3>과 SA<2>의 논리곱을 S12(12 비트의 시프트를 행하는지의 여부를 나타내는 신호)로서 출력하는 AND 게이트(33a-1)로 이루어지는 논리 회로(33a)를 구비하고 있다.
이와 같이, 논리합 산출부(51)가 C<94:35>의 데이터를 대상으로 전술한 것 같이 처리를 행함으로써, PAT<14:0>가 출력된다.
마지막으로, 논리합 산출부(51)는 도 18에 나타낸 바와 같이 구성된 논리합 회로(51d)에 의해 PAT<14:0>의 논리합 연산을 행하는 것에 의해, 임시 스티키 비트를 생성한다. 여기서, PAT<14:0> 중의 적어도 1 비트가 "1"이면 논리합 산출부(51)[논리 회로(51d)]는 임시 스티키 비트를 온(즉 "1")으로 설정하는 반면, 전체 비트가 "0"이면 임시 스티키 비트를 오프(즉 "0")로 설정한다.
이와 같이, 논리합 산출부(51)는 단정밀도 연산을 서포트하는 경우에는 C<94:0>(제1 영역)의 데이터를 대상으로 정규화 처리부(30)[여기서는 제1 시프트부(31) 내지 제3 시프트부(33)]에 의한 정규화 처리에 의해 스티키 비트 생성 영역에 시프트되는 데이터를 예측하고, 이 예측에 기초하여 임시 스티키 비트를 생성한다.
다음에, 생성부(52)에 관해서 설명을 행한다. 생성부(52)는 정규화 처리부(30)에 의해 정규화 처리를 실시한 연산 결과에서의 스티키 비트 생성 영역 중 제2 영역인 R<98:95>의 범위 내의 데이터와, 논리합 산출부(51)에 의해 산출된 임시 스티키 비트에 기초하여, 스티키 비트를 생성하는 것이다.
즉, 논리합 산출부(51)는 정규화 시프트량의 SA<5:0> 중의 SA<5:2>에 관한 정규화 처리에 관해서 예측을 행하였지만, 생성부(52)는 SA<1:0>에 관한 정규화 처리에 관해서 예측은 행하지 않고, 1 비트 시프트부(35)의 결과에 의한 최종적인 시프트 결과를 이용한다.
즉, 제4 시프트부(34)가 시프트할 수 있는 최대의 시프트량인 3 비트와, 1 비트 시프트부가 시프트할 수 있는 1 비트를 합한 R<98:95>의 4 비트 길이 데이터의 범위에 관해서는 논리합 연산을 행한다.
따라서, 여기서 생성부(52)는 R<98:95>의 4 비트와, 임시 스티키 비트의 1 비트의 계 5 비트 길이의 데이터를 논리합 연산하고, 이들 5 비트 길이의 데이터 중 1 비트라도 "1"이면 스티키 비트를 온으로 설정하는 반면, 전체 비트가 "0"이면 스티키 비트를 오프로 설정한다.
이와 같이, 생성부(52)가 논리합 연산을 처리할 수 있는 비트수는 반드시 1 비트 시프트부(35)가 담당할 수 있는 시프트량(여기서는 1 비트) 이상이 된다.
또한, 본 부동 소수점 곱합 연산기(1)로는 제1 처리부로서 기능하는 제1 시프트부(31) 내지 제4 시프트부(34) 중의 최종단의 제4 시프트부(34)가 이들 복수단의 시프트부(31 내지 34) 중에서 가장 적은 시프트량을 처리할 수 있도록 구성되어 있다. 이에 따라, 생성부(52)가 논리합 연산을 처리할 수 있는 비트수를 최소로 할 수 있고, 생성부(52)의 회로 규모를 최소로 하는 것이 가능해지는 동시에, 생성부(52)의 딜레이도 최소로 할 수 있다.
다음에, 생성부(52)에 관해서 설명하면 생성부(52)는 정규화 처리부(30)에 의해 정규화 처리를 실시한 연산 결과에서의 스티키 비트 생성 영역 중의 제1 영역(여기서는 C<65:0>) 범위와 같은 범위의 영역을 제외한 영역(여기서는 R<69:66>:제2 영역) 범위 내의 데이터와, 논리합 산출부(51)에 의해 산출된 임시 스티키 비트에 기초하여, 스티키 비트를 생성하는 것이다.
즉, 생성부(52)는 SA<1:0>에 관한 정규화 처리에 관해서 예측은 행하지 않고, R<69:66>의 4 비트의 데이터에 관해서는 논리합 연산을 행한다.
따라서, 생성부(52)는 R<69:66>의 4 비트와, 임시 스티키 비트의 1 비트의 계 5 비트의 데이터를 논리합 연산하고, 이들 5 비트 길이의 데이터 중 1 비트라도 "1"이면 스티키 비트를 온으로 설정하는 반면, 전체 비트가 "0"이면 스티키 비트를 오프로 설정한다.
다음에, 반올림 처리부(40)에 관해서 설명한다. 도 2에 나타내는 바와 같이, 반올림 처리부(40)는 정규화 처리부(30)에 의해 정규화 처리를 실시한 연산 결과에 대하여, 스티키 비트 생성부(50)의 생성부(52)에 의해 생성된 스티키 비트에 기초하여 반올림 처리를 실시하는 것이며, 증분 수단(Incrementer)(41), 반올림 판정부(Judge Round; 반올림 판정 수단)(43), 및 선택 회로(선택 수단)(44)을 구비하여 구성되어 있다.
증분 수단(41)은 정규화 처리부(30)에 의해 정규화 처리를 실시한 연산 결과 중의 가수부(단정밀도 연산의 경우는 C<123:101>)에 "1"을 추가하는 반올림 처리를 행한다.
반올림 판정부(43)는 (1) 스티키 비트 생성부(50)에 의해 생성된 스티키 비트, (2)정규화 처리부(30)로부터 출력된 연산 결과에서의 가수부의 최하위 비트인 L(Least significant bit) 비트(도 14, 도 15 참조), (3) 이러한 연산 결과에서의 G(Guard) 비트, (4) 이러한 연산 결과에서의 R(Round) 비트(도 14, 도 15 참조), (5) 외부로부터 입력되는 RD(Round Direction: 반올림 방향) 비트, 및 (6) 외부로부터 입력되는 SIGN(부호) 비트에 기초하여, 반올림 처리가 필요한지의 여부를 판단하다. 그리고, 반올림 판정부(43)는 이러한 판정 결과를 선택 회로(44)에 출력한다.
선택 회로(44)는 반올림 판정부(43)에 의한 판정 결과에 기초하여, 증분 수단(41)을 통해 입력된 반올림 처리를 실시한 연산 결과와, 정규화 처리부(30)로부터 출력된 상태 그대로의 연산 결과 중 어느 하나를 출력하는 것이다.
즉, 선택 회로(44)는 반올림 판정부(43)에 의한 판정 결과가 반올림 처리가 필요한 경우에는 증분 수단(41)에 의해 반올림 처리를 실시한 연산 결과를 출력하는 한편, 반올림 판정부(43)에 의한 판정 결과가 반올림 처리가 필요하지 않은 경우에는 반올림 처리가 실시되지 않은 연산 결과인 정규화 처리부(30)의 연산 결과를 출력한다.
다음에, 도 10을 참조하면서, 본 부동 소수점 곱합 연산기(1)의 정규화 처리부(30), 스티키 비트 생성부(50), 및 반올림 처리부(40)의 동작예(파이프 라인 스테이지를 분할하는 경우)에 관해서 설명한다. 또한, 도 10은 본 부동 소수점 곱합 연산기(1)가 단정밀도 연산의 연산을 행하는 경우를 나타내고, 도 10에서 파선(X 내지 Z)은 파이프 라인 스테이지의 분할을 행하는 경계를 나타내고 있다.
도 10에 나타낸 바와 같이, 본 부동 소수점 곱합 연산기(1)로는 정규화 처리부(30)의 제2 시프트 처리부(32) 이후의 처리에 병행하여 스티키 비트 생성부(50)의 논리합 산출부(51)가 처리를 실행하고, 스티키 비트 생성부(50)의 생성부(52)는 정규화 처리부(30)에 의한 정규화 처리 후에 1 비트 시프트부(35)의 결과를 이용하여 스티키 비트를 생성한다.
그리고, 전술한 바와 같이, 종래부터 정규화 처리부(30)에 의한 정규화 처리와, 반올림 처리부(40)에 의한 반올림 처리 사이는 처리 사이클이 길어지기 때문 에, 파이프 라인 스테이지를 분할하는 것이 일반적이고, 본 부동 소수점 곱합 연산기(1)로도 파선(Y)에 나타내는 바와 같이 파이프 라인 스테이지를 분할하는 경우가 있다.
이 경우, 1 비트 시프트부(35)[즉, 정규화 처리부(30)]로부터 출력되는 데이터는 R<127:0> 중의 스티키 비트 생성 영역 R<98:0>을 제외한 R<127:99>의 29 비트의 데이터가 되고, 이 29 비트 길이의 데이터를 래치하는 것만으로 좋다. 출력 데이터로부터 스티키 비트 생성 영역 R<98:0>을 제외할 수 있는 것은 스티키 비트 생성부(50)가 스티키 비트를 생성하기 때문에, 반올림 처리부(40)에 다시 R<98:0>을 출력할 필요가 없기 때문이다.
또한, 스티키 비트 생성부(50)에 의해 생성된 스티키 비트 1 비트분을 래치할 필요도 있다.
그리고, 래치된 29 비트 길이의 데이터 중, R<127:101>은 증분 수단(41)에 입력되는 동시에, 증분 수단(41)을 바이패스하여 선택 회로(44)에도 직접 입력된다.
또한, 래치된 29 비트의 데이터 중, L 비트, R 비트, 및 G 비트에 해당하는 R<101:99>의 3 비트 폭의 데이터는 반올림 판정에 이용되기 때문에 반올림 판정부(43)에 입력된다.
그리고, 래치된 58 비트 길이의 데이터 중, R<127:72>은 증분 수단(41)에 입력되는 동시에, 증분 수단(41)을 바이패스하여 선택 회로(44)에도 직접 입력된다.
또한, 래치된 58 비트 길이의 데이터 중, 반올림 판정부(43)에 의한 판정에 이용되는 L 비트, R 비트, 및 G 비트에 해당하는 R<72:70>의 3 비트 폭의 데이터는 반올림 판정부(43)에 입력된다.
이와 같이, 본 발명의 일 실시예로서의 부동 소수점 곱합 연산기(1)에 의하면 논리합 산출부(51)가 정규화 처리부(30)에 의한 정규화 처리와 병행하여 임시 스티키 비트를 산출하고, 생성부(52)가 임시 스티키 비트와, 정규화 처리부(30)에 의해 정규화 처리를 실시한 연산 결과 중 스티키 비트 생성 영역의 일부 데이터에 기초하여 스티키 비트의 생성을 위해 정규화 처리 후에 스티키 비트 생성 영역에 관한 모든 데이터에 관해서 논리합을 산출할 필요가 없고, 딜레이를 방지하여 효율적으로 스티키 비트를 생성할 수 있다.
구체적으로는, 단정밀도 연산을 서포트하는 경우, 정규화 처리부(30)에 의한 정규화 처리 후는 스티키 비트 생성 영역 99 비트의 데이터를 논리합 연산하는 것은 아니라 5 비트의 데이터만을 논리합 연산하는 것만으로도 좋기 때문에, 딜레이를 대폭 삭감할 수 있다.
또한, 정규화 처리부(30)에 의한 처리와 반올림 처리부(40)에 의한 처리 사이의 파이프 라인 스테이지를 분할한 경우에는 정규화 처리와 병행하여 스티키 비트의 생성을 행하기 때문에, 연산 결과 데이터 전체(R<127:0>)를 래치할 필요는 없고, 스티키 비트 생성 영역을 제외한 범위만을 래치하는 것만으로도 좋기 때문에, 래치 등의 하드웨어 자원(물량)을 삭감할 수 있다. 구체적으로는 단정밀도 연산용 부동 소수점 곱합 연산기에서 종래는 128 비트 길이의 래치 대상 데이터를 59 비트 길이(도 11 참조)로 삭감할 수 있고, 이들의 차분인 68 비트분의 래치를 삭감할 수 있다.
또한, 본 부동 소수점 곱합 연산기(1)로는 1 비트 시프트부(35)에 의한 정규화 처리의 결과를 고려하여 즉, 1 비트 시프트부(35)에 의한 정규화 처리로 변화할 수 있는 스티키 비트 생성 영역(제2 영역)에 관해서는, 상기 정규화 처리의 결과에 기초하여 스티키 비트의 생성을 행하기 때문에, 스티키 비트의 생성을 정규화 처리부(30)에 의한 정규화 처리와 병행하여 시작하면서, 시프트량 산출부(20)에 의해 산출된 정규화 시프트량이 1 비트 부족한지의 여부의 경우에 따른 분류를 행할 필요가 없기 때문에, 정규화 시프트량이 부족한지의 여부에 상관없이 스티키 비트를 확실하게 생성할 수 있다. 따라서, 전술한 특허 문헌 1에 개시된 기술과 같이, 이 정규화 시프트량이 1 비트 부족한 경우와, 부족하지 않는 경우 양쪽 모두의 경우에 대응하기 위해 딜레이나 물량의 증가가 발생하는 경우는 없다.
또한, 정규화 처리부(30)에서의 복수 단에 의해 구성되는 시프트부(31 내지 34) 중 최종단의 제4 시프트부(34)에 의한 정규화 처리에 대하여, 논리합 산출부(51)는 예측을 행하지 않고, 생성부(52)가 제4 시프트부(34)에서의 정규화 처리의 결과에 기초하여 스티키 비트의 생성을 행한다. 즉, 생성부(52)가 처리 대상으로 하는 제2 영역은 제4 시프트부(34)에 의한 최대 시프트량과 1 비트 시프트부(35)의 1 비트의 합계이다. 이에 따라 논리합 산출부(51)가 복수 단에 의해 구성되는 시프트부(31 내지 34)의 모든 시프트부(제1 처리부)에 의한 정규화 처리의 결과를 예측하는 방법보다 효율적으로 임시 스티키 비트를 생성할 수 있다.
이 때, 본 부동 소수점 곱합 연산기(1)로는 제4 시프트부(34)가 시프트부(31 내지 34) 중에서 가장 시프트량이 적기 때문에, 생성부(52)에 의한 처리도 효율이 좋아지고, 또한 생성부(52)를 구성하는 물량을 저감할 수 있다.
〔2〕본 발명의 배정밀도 연산에서의 실시예에 관해서
우선, 도 1에 나타내는 블록도를 참조하면서, 본 발명의 일 실시예로서의 부동 소수점 곱합 연산기의 구성에 관해서 설명한다. 또한, 도 1에서 기술한 부호와 동일한 부호는 동일한 부분 또는 거의 동일한 부분을 나타내고 있다. 따라서, 여기서는 이들의 상세한 설명은 일부 생략한다.
이 도 1에 나타내는 바와 같이, 본 부동 소수점 곱합 연산기(1)는 우측 시프트부[Aligner(Right Shifter)](10), 승산기{Multiplier[CSA(Carry Save Adder) Tree]}(11), CSA(Carry Save Adder)(12), 절대치 가산기(Abs. Adder)(13), 시프트량 산출부[L. Z. Predictor(Leading Zero Predictor)](20), 정규화 처리부[Normalizer(Left Shifter)](30), 반올림 처리부(Rounder)(40), 및 스티키 비트 생성부(Sticky bit Generator)(50)를 구비하여 구성되어 있다.
또한, 본 부동 소수점 곱합 연산기(1)는 예컨대 IEEE(The Institute of Electrical and Electronics Engineers, Inc.; 미국 전자 기술자 협회)(754) 준거의 배정밀도 연산을 서포트한다.
또한, 절대치 가산기(13)로부터의 출력 데이터[연산 결과; 정규화 처리부(30)의 입력 데이터 포멧]는 상기 도 13에 나타낸 것 (C<127:0>)과 동일하며, 본 부동 소수점 곱합 연산기(1)가 배정밀도 연산을 서포트하는 경우의 데이터 구조[정규화 처리부(30)의 출력 데이터 포멧]는 상기 도 15에 나타낸 것 (R<127:0>)과 마 찬가지이다. 따라서, 이하의 설명에서도, 연산 결과(입력 데이터 포멧)나 출력 데이터(출력 데이터 포멧)에 관해서는 상기 도 13 내지 도 15를 이용하여 설명한다.
우측 시프트부(10), 승산기(11), CSA(12) 및 절대치 가산기(13)는 3 피연산자(도면 중 "OP1", "OP2", "OP3")의 부동 소수점 곱합 연산을 실행하는 곱합 연산부로서 기능하는 것이다. 또한, 이 곱합 연산부의 연산 결과[즉, 절대치 가산기(13)의 출력 데이터]는 상기 도 13에 나타내는 바와 같이 C<127:0>로 나타내어진다.
시프트량 산출부(20)는 절대치 가산기(13)로부터의 출력 데이터(연산 결과)의 선두로부터 어느 정도 "0"이 연속하고 있는지를 예측하는 것이며, 이 결과가 정규화 처리부(30)의 시프트량(Shift Amount)이 된다. 즉, 시프트량 산출부(20)는 정규화 처리부(30)에 의한 좌측 시프트 처리(정규화 처리)에 이용하는 연산 결과에 대한 정규화 시프트량을 산출한다. 또한, 시프트량 산출부(20)에 의해 산출되는 정규화 시프트량은 1 비트 부족한 경우가 있다.
정규화 처리부(30)는 시프트량 산출부(20)에 의해 산출된 정규화 시프트량을 이용하여 절대치 가산기(13)의 출력 데이터(이하, 연산 결과라고 한다)에 대하여 좌측 시프트 처리(정규화 처리)를 실시하는 것이며, 정규화 처리부(30)에 의해 연산 결과의 소정 비트 위치(여기서는 R<124>)가 반드시 "1"이 된다.
여기서, 도 2에 본 부동 소수점 곱합 연산기(1)의 정규화 처리부(30), 반올림 처리부(40), 및 스티키 비트 생성부(50)의 구성을 나타낸다. 이 도 2에 나타내는 것 같이, 정규화 처리부(30)는 복수 단의 시프터(31 내지 35), 즉 제1 시프트부 (1st left shifter)(31), 제2 시프트부(2nd left shifter)(32), 제3 시프트부(3rd left shifter)(33), 제4 시프트부(4th left shifter)(34), 및 1 비트 시프트부[1 bit left shifter(제2 처리부)](35)를 구비하여 구성되어 있다.
제1 내지 제4 시프트부(31 내지 34)는 시프트량 산출부(20)에 의해 산출된 정규화 시프트량(7 비트의 데이터: SA<6:0>)을 이용하여 연산 결과에 정규화 처리(좌측 시프트)를 행하는 제1 처리부로서 기능한다.
여기서, 연산 결과는 128 비트의 데이터이기 때문에, 제1 내지 제4 시프트부(31 내지 34)에 의한 시프트량[즉, 시프트량 산출부(20)에 의해 산출되는 정규화 시프트량]은 최대 127 비트가 된다. 이 때문에, 여기서 제1 시프트부(31)는 정규화 시프트량인 7 비트 길이 데이터 SA<6:0> 중 SA<6>에 기초하여, 64 비트 또는 0 비트의 시프트를 행할 수 있고, 제2 시프트부(32)는 SA<6:0> 중 SA<5:4>에 기초하여, 48, 32, 16, 0 중 어느 하나의 비트의 시프트를 행할 수 있으며, 제3 시프트부(33)는 SA<6:0> 중 SA<3:2>에 기초하여, 12, 8, 4, 0 중 어느 하나의 비트의 시프트를 행할 수 있고, 제4 시프트부(34)는 SA<6:0> 중 SA<1:0>에 기초하여, 3, 2, 1, 0 중 어느 하나의 비트의 시프트를 행할 수 있다.
또한, 전술한 것 같이, 7 비트 길이의 데이터로 출력되는 정규화 시프트량 중, 제1 시프트부(31)에는 정규화 시프트량이 64 비트 이상인지의 여부, 즉 제1 시프트부(31)가 64 비트의 시프트 처리를 실행하는지의 여부를 나타내는 1 비트의 데이터(SA<6>)가 입력되고, SA<6>가 "1"인 경우에는 64 비트의 시프트를 실행하며, SA<6>가 "0"인 경우에는 시프트를 실행하지 않는다.
또한, 제2 시프트부(32) 내지 제4 시프트부(34)에 입력되는 정규화 시프트량이 SA<5:0>로 나타내어지는 경우, 제2 시프트부(32)는 SA<5:4>에 기초하여 정규화 처리를 실행한다. 여기서는, 제2 시프트부(32)는 SA<5:4>가 "11"인 경우에는 48 비트의 시프트를 실행하고, SA<5:4>가 "10"인 경우에는 32 비트의 시프트를 실행하며, SA<5:4>가 "01"인 경우에는 16 비트의 시프트를 실행하고, SA<5:4>가 "00"인 경우에는 시프트를 실행하지 않는다.
또한, 이와 마찬가지로, 제3 시프트부(33)는 SA<3:2>가 "11"인 경우에는 12 비트의 시프트를 실행하고, SA<3:2>가 "10"인 경우에는 8 비트의 시프트를 실행하며, SA<3:2>가 "01"인 경우에는 4 비트의 시프트를 실행하고, SA<3:2>가 "00"인 경우에는 시프트를 실행하지 않는다.
또한, 이와 마찬가지로, 제4 시프트부(34)는 SA<1:0>가 "11"인 경우에는 3 비트의 시프트를 실행하고, SA<1:0>가 "10"인 경우에는 2 비트의 시프트를 실행하며, SA<1:0>가 "01"인 경우에는 1 비트의 시프트를 실행하고, SA<1:0>가 "00"인 경우에는 시프트를 실행하지 않는다.
1 비트 시프트부(35)는 제4 시프트부(34)에 의한 정규화 시프트량에 기초하는 정규화 처리의 결과, 소정의 비트 위치 R<124>이 "1"이 되도록 시프트되어 있는지의 여부(정규화 시프트량이 부족한지의 여부)를 판단하고, 소정의 비트 위치가 "1"이 아니면 시프트량 산출부(20)에 의해 산출된 정규화 시프트량이 1 비트 부족한 것으로서, 제4 시프트부(34)에 의해 정규화 처리를 실시한 연산 결과에 대하여 1 비트의 시프트 처리를 더 실시한다. 그 결과, 이러한 소정의 비트 위치의 데이 터는 "1"이 된다.
즉, 1 비트 시프트부(35)는 제4 시프트부(34)의 출력 데이터의 소정 비트 위치가 "0"인지 "1"인지를 판단하고, "1"인 경우에는 시프트 처리를 실행하지 않는다.
한편, 시프트량 산출부(20)에 의해 산출된 정규화 시프트량이 1 비트 부족하기 때문에 소정 비트 위치가 "0"인 경우에는 정규화 처리를 완료하도록(즉, 소정 비트 위치를 "1"로 하도록), 제4 시프트부(34)의 출력 데이터를 1 비트만 시프트한다.
또한, 본 부동 소수점 곱합 연산기(1)로는 스티키 비트 생성부(50)가 정규화 처리부(30)에 의한 정규화 처리와 병행하면서 스티키 비트를 생성하기 때문에, 정규화 처리부(30)는 반올림 처리부(40)에 대하여 정규화 처리를 실시한 연산 결과의 전체 비트가 아닌, 이러한 연산 결과 중, 스티키 비트 생성 영역을 제외한 부분을 반올림 처리부(40)에 출력한다. 바꿔 말하면 반올림 처리부(40)에는 배정밀도 연산의 경우에는 R<127:70>의 58 비트 길이의 데이터가 반올림 처리부(40)에 입력된다.
또한, 도 2에 나타내는 것 같이, 스티키 비트 생성부(50)는 정규화 처리부(30)에 의한 정규화 처리와 병행하여 스티키 비트를 생성하는 것이며, 논리합 산출부(Sticky bit Predictor)(51) 및 생성부(도면 중 "make sticky"라고 표기)(52)를 구비하여 구성되어 있다.
이 스티키 비트 생성부(50)는 구체적으로, 정규화 처리부(30)의 출력 데이터 (R<127:0>) 중의 스티키 비트 생성 영역(배정밀도 연산의 경우는 도 15의 R<69:0>) 내에 1 비트라도 "1"이 있으면 스티키 비트를 온으로 설정하고, 스티키 비트 생성 영역의 전체 비트가 "0"이면 스티키 비트를 오프로 설정하는 것이며, 논리합 산출부(51)와 생성부(52)에 의해 스티키 비트를 생성한다.
논리합 산출부(51)는 정규화 처리부(30)에 의한 정규화 처리와 병행하면서, 연산 결과에서의 최하위 비트로부터 소정 영역 내의 데이터가 정규화 처리부(30)에 의한 정규화 처리에 의해 스티키 비트 생성 영역 내에 이행되는지의 여부를 예측하고, 스티키 비트 생성 영역 내에 이행된다고 예측한 데이터의 논리합을 임시 스티키 비트(Interim Sticky bit)로서 산출하는 것이다.
여기서 논리합 산출부(51)는 제1 시프트부(31)에 의한 정규화 처리를 실시한 연산 결과에 대하여, 이러한 연산 결과 중 소정 영역(제1 영역)의 데이터가 정규화 처리부(30)에 의한 정규화 처리에 의해 스티키 비트 생성 영역에 시프트되는지의 여부를 제2 시프트부(32) 및 제3 시프트부(33)에 입력되는 정규화 시프트량(4 비트의 데이터; SA<5:2>)을 이용하여 예측하고, 예측한 스티키 비트 생성 영역 내에 시프트되는 데이터가 "1"을 포함하는지의 여부를 판단한다. 이에 따라, 논리합 산출부(51)는 임시 스티키 비트를 생성한다.
여기서, 본 부동 소수점 곱합 연산기(1)가 배정밀도 연산을 서포트하는 경우에 관해서 설명하면 정규화 처리부(20)가 연산 결과에 대한 좌측 시프트 처리를 실시하기 때문에, R<69:0>의 범위 내에 "1"이 있는지의 여부의 체크는 정규화 시프트량을 이용하여 C<69:0>의 범위 내에 "1"이 있는지의 여부를 체크함으로써 실행할 수 있다.
배정밀도 연산의 경우, 논리합 산출부(51)는 우선, 제2 시프트부(32) 이후에서 시프트할 수 있는 최대 폭인 64 비트의 시프트 처리를 실시하였다고 해도 R<69:64>이 되는 C<5:0>에 관해서 논리합 연산을 행한다.
또한, 논리합 산출부(51)는 상기한 정규화 시프트량에 상관없이 R<69:0>에 포함되는 범위 이외의 부분, 여기서는 C<65:6>을 대상으로 처리를 행한다.
논리합 산출부(51)는 C<65:6>에서, 정규화 시프트량(SA<5:2>)에 기초하는 시프트 처리에 의해 R<69:0>의 범위 밖으로 나가지 않은 부분에 관해서, 4 비트 단위로 논리합 연산하여 검증한다.
즉, 도 9(a)에 나타내는 것 같이, C<65:62>에 관해서 SA<5:2>가 "0000"인 경우에는 이 C<65:62>는 R<69:0>의 범위 내에 반드시 남기 때문에, 이 경우에만 C<65:62>를 논리합 연산한 결과를 PAT<14>로서 출력한다. 한편, SA<5:2>가 "0001"인 경우에는 이 C<65:62>는 R<69:66>의 범위 내에 수용되거나, 또는 R<69:0>의 범위 밖으로 나가기 때문에, 상기 시프트 결과를 이용하여 생성부(52)에 의한 처리를 행한다. 또한, 이 처리는 예컨대 전술한 도 6에 나타내는 논리 회로(51a)와 같은 구성에 의한 논리 회로에 의해 실현된다.
다음에, 도 9(b)에 나타내는 것 같이, C<61:58>에 관해서, SA<5:2>가 "0001" 이하인 경우에는 이 C<61:58>는 R<69:0>의 범위 내에 반드시 남기 때문에, 이 경우에만 C<61:58>을 논리합 연산한 결과를 PAT<13>로서 출력한다. 한편, SA<5:2>가 "0010"인 경우에는 이 C<61:58>는 R<69:66>의 범위 내에 수용되거나, 또는 R<69:0> 의 범위 밖으로 나가기 때문에, 생성부(52)에 의한 처리를 행한다. 또한, 이 처리는 예컨대 전술한 도 7에 나타내는 논리 회로(51b)와 같은 구성에 의한 논리 회로에 의해 실현된다.
이후, C<57:6>의 범위까지의 데이터에 관해서도, 4 비트마다의 데이터를 대상으로 정규화 시프트량의 값을 1 비트씩 늘리면서 같은 경우에 따른 분류를 행하여 논리합 연산을 행하거나, 또는 예측을 행하지 않고 상기 시프트 결과를 이용하여 생성부(52)에 의한 처리로 커버한다.
그리고, 도 9(c)에 나타내는 것 같이, 최후의 C<9:6>에 관해서는 SA<5:2>가 "1110" 이하인 경우에는 이 C<9:6>는 R<69:0> 내에 반드시 남기 때문에, 이 경우에만 C<9:6>를 논리합 연산한 결과를 PAT<0>으로서 출력한다. 한편, SA<5:2>가 "1111"인 경우에는 이 C<9:6>는 R<69:66> 내에 수용되거나, 또는 R<69:0> 밖으로 나가기 때문에, 생성부(52)에 의한 처리로 커버한다. 또한, 이 처리는 예컨대 전술한 도 8에 나타내는 논리 회로(51c)와 같은 구성에 의한 논리 회로에 의해 실현된다.
이와 같이, 논리합 산출부(51)가 C<65:6>의 데이터를 대상으로 전술한 것 같이 처리를 행하는 것에 의해 PAT<14:0>가 출력된다.
마지막으로, 논리합 산출부(51)는 도 18에 나타내는 바와 같이 구성된 논리합 회로(51d)에 의해 PAT<14:0>의 논리합 연산을 행함으로써, 단정밀도 연산의 경우 마찬가지로 임시 스티키 비트를 생성한다.
이와 같이, 논리합 산출부(51)는 단정밀도 연산을 서포트하는 경우에는 C<65:0>(제1 영역)의 데이터를 대상으로 정규화 처리부(30)[여기서는 제1 시프트부(31) 내지 제3 시프트부(33)]에 의한 정규화 처리에 의해 스티키 비트 생성 영역에 시프트되는 범위의 데이터를 예측하고, 이 예측에 기초하여 임시 스티키 비트를 생성한다.
다음에, 생성부(52)에 관해서 설명을 행하면 생성부(52)는 정규화 처리부(30)에 의해 정규화 처리를 실시한 연산 결과에서의 스티키 비트 생성 영역 중 제1 영역(여기서는 R<65:05>)의 범위와 같은 범위 영역을 제외한 영역(여기서는 R<69:66>: 제2 영역)의 데이터와, 논리합 산출부(51)에 의해 산출된 임시 스티키 비트에 기초하여, 스티키 비트를 생성하는 것이다.
즉, 생성부(52)는 SA<1:0>에 관한 정규화 처리에 관해서 예측은 행하지 않고, R<69:66>의 4 비트의 데이터에 관해서는 논리합 연산을 행한다.
따라서, 생성부(52)는 R<69:66>의 4 비트와, 임시 스티키 비트의 1 비트의 계 5 비트의 데이터를 논리합 연산하고, 이들 5 비트 길이의 데이터 중 1 비트라도 "1"이면 스티키 비트를 온으로 설정하는 반면, 전체 비트가 "0"이면 스티키 비트를 오프로 설정한다.
다음에, 반올림 처리부(40)에 관해서 설명한다. 도 2에 나타내는 바와 같이, 반올림 처리부(40)는 정규화 처리부(30)에 의해 정규화 처리를 실시한 연산 결과에 대하여, 스티키 비트 생성부(50)의 생성부(52)에 의해 생성된 스티키 비트에 기초하여 반올림 처리를 실시하는 것이며, 증분 수단(Incrementer)(41), 반올림 판정부(Judge Round;)(43), 및 선택 회로(선택 수단)(44)를 구비하여 구성되어 있다.
증분 수단(41)은 정규화 처리부(30)에 의해 정규화 처리를 실시한 연산 결과 중의 가수부(단정밀도 연산의 경우는 C<123:72>)에 "1"을 추가하는 반올림 처리를 행한다.
반올림 판정부(43)는 (1) 스티키 비트 생성부(50)에 의해 생성된 스티키 비트, (2) 정규화 처리부(30)로부터 출력된 연산 결과에서의 가수부의 최하위 비트인 L(Least significant bit) 비트(도 14, 도 15 참조), (3) 이러한 연산 결과에서의 G(Guard) 비트, (4) 이러한 연산 결과에서의 R(Round) 비트(도 14, 도 15 참조), (5) 외부로부터 입력되는 RD(Round Direction: 반올림 방향) 비트, 및 (6) 외부로부터 입력되는 SIGN(부호) 비트에 기초하여, 반올림 처리가 필요한지의 여부를 판단하다. 그리고, 반올림 판정부(43)는 이러한 판정 결과를 선택 회로(44)에 출력한다.
선택 회로(44)는 반올림 판정부(43)에 의한 판정 결과에 기초하여, 증분 수단(41)을 통해 입력된 반올림 처리를 실시한 연산 결과와, 정규화 처리부(30)로부터 출력된 상태 그대로의 연산 결과 중 어느 하나를 출력하는 것이다.
즉, 선택 회로(44)는 반올림 판정부(43)에 의한 판정 결과가 반올림 처리가 필요한 경우에는 증분 수단(41)에 의해 반올림 처리를 실시한 연산 결과를 출력하는 한편, 반올림 판정부(43)에 의한 판정 결과가 반올림 처리가 필요하지 않은 경우에는 반올림 처리가 실시되지 않은 연산 결과인 정규화 처리부(30)의 연산 결과를 출력한다.
또한, 본 부동 소수점 곱합 연산기(1)가 배정밀도 연산의 연산을 행하는 경 우의 동작예를 도 11에 도시하면 이 경우, 1 비트 시프트부(35)[즉, 정규화 처리부(30)]로 부터 출력되는 데이터는 R<127:0> 중의 스티키 비트 생성 영역 R<69:0>의 범위를 제외한 R<127:70>의 58 비트 길이의 데이터가 되고, 이 58 비트의 데이터를 래치하는 것만으로 좋아진다.
그리고, 래치된 58 비트 길이의 데이터 중, R<127:72>은 증분 수단(41)에 입력되는 동시에, 증분 수단(41)을 바이패스하여 선택 회로(44)에도 직접 입력된다.
또한, 래치된 58 비트 길이의 데이터 중, 반올림 판정부(43)에 의한 판정에 이용되는 L 비트, R 비트, 및 G 비트에 해당하는 R<72:70>의 3 비트 폭의 데이터는 반올림 판정부(43)에 입력된다.
이와 같이, 본 발명의 일 실시예로서의 부동 소수점 곱합 연산기(1)에 의하면 논리합 산출부(51)가 정규화 처리부(30)에 의한 정규화 처리와 병행하여 임시 스티키 비트를 산출하고, 생성부(52)가 임시 스티키 비트와, 정규화 처리부(30)에 의해 정규화 처리를 실시한 연산 결과 중 스티키 비트 생성 영역의 일부 데이터에 기초하여 스티키 비트의 생성을 의해 정규화 처리 후에 스티키 비트 생성 영역에 관한 모든 데이터에 관해서 논리합을 산출할 필요가 없고, 딜레이를 방지하여 효율적으로 스티키 비트를 생성할 수 있다.
구체적으로는, 단정밀도 연산을 서포트하는 경우, 정규화 처리부(30)에 의한 정규화 처리 후는 스티키 비트 생성 영역 70 비트의 데이터를 논리합 연산하는 것은 아니라 5 비트의 데이터만을 논리합 연산하는 것만으로도 좋기 때문에, 딜레이를 대폭 삭감할 수 있다.
또한, 정규화 처리부(30)에 의한 처리와 반올림 처리부(40)에 의한 처리 사이의 파이프 라인 스테이지를 분할한 경우에는 정규화 처리와 병행하여 스티키 비트의 생성을 행하기 때문에, 연산 결과 데이터의 전체(R<127:0>)를 래치할 필요는 없고, 스티키 비트 생성 영역을 제외한 범위만을 래치하는 것만으로도 좋기 때문에, 래치 등의 하드웨어 자원(물량)을 삭감할 수 있다. 구체적으로는 단정밀도 연산용 부동 소수점 곱합 연산기에서 종래는 128 비트 길이의 래치 대상 데이터를 59 비트 길이(도 11 참조)로 삭감할 수 있고, 이들의 차분인 68 비트분의 래치를 삭감할 수 있다.
또한, 본 부동 소수점 곱합 연산기(1)로는 1 비트 시프트부(35)에 의한 정규화 처리의 결과를 고려하여 즉, 1 비트 시프트부(35)에 의한 정규화 처리로 변화할 수 있는 스티키 비트 생성 영역(제2 영역)에 관해서는, 상기 정규화 처리의 결과에 기초하여 스티키 비트의 생성을 행하기 때문에, 스티키 비트의 생성을 정규화 처리부(30)에 의한 정규화 처리와 병행하여 시작하면서, 시프트량 산출부(20)에 의해 산출된 정규화 시프트량이 1 비트 부족한지의 여부에 따른 분류를 행할 필요가 없기 때문에, 정규화 시프트량이 부족한지의 여부에 상관없이 스티키 비트를 확실하게 생성할 수 있다. 따라서, 전술한 특허 문헌 1에 개시된 기술과 같이, 이 정규화 시프트량이 1 비트 부족한 경우와, 부족하지 않는 경우 양쪽 모두의 경우에 대응하기 위해 딜레이나 물량의 증가가 발생하는 경우는 없다.
또한, 정규화 처리부(30)에서의 복수 단에 의해 구성되는 시프트부(31 내지 34) 중 최종단의 제4 시프트부(34)에 의한 정규화 처리에 대하여, 논리합 산출부 (51)는 예측을 행하지 않고, 생성부(52)가 제4 시프트부(34)에서의 정규화 처리의 결과에 기초하여 스티키 비트의 생성을 행한다. 즉, 생성부(52)가 처리 대상으로 하는 제2 영역은 제4 시프트부(34)에 의한 최대 시프트량과 1 비트 시프트부(35)의 1 비트의 합계이다. 이에 따라 논리합 산출부(51)가 복수 단에 의해 구성되는 시프트부(31 내지 34)의 모든 시프트부(제1 처리부)에 의한 정규화 처리의 결과를 예측하는 방법보다 효율적으로 임시 스티키 비트를 생성할 수 있다.
이 때, 본 부동 소수점 곱합 연산기(1)로는 제4 시프트부(34)가 시프트부(31 내지 34) 중에서 가장 시프트량이 적기 때문에, 생성부(52)에 의한 처리도 효율이 좋아지고, 생성부(52)를 구성하는 물량을 더 저감할 수 있다.
〔3〕 기타
또한, 본 발명은 전술한 실시예에 한정되는 것이 아닌, 본 발명의 취지를 일탈하지 않는 범위에서 여러 가지 변형하여 실시할 수 있다.
예컨대, 전술한 실시예에서 제1 처리부를 구성하는 복수 단의 시프트부(31 내지 34)에서의 시프트량은 본 발명에서 한정되는 것이 아닌, 여러 가지 변경을 하더라도 좋다.
또한, 전술한 실시예에서는 시프트량 산출부(20)에 의해 산출되는 정규화 시프트량에 관해서 1 비트 부족한 경우가 있는 것을 예로 들어 설명하였지만, 이러한 정규화 시프트량의 부족량은 한정되는 것이 아니다.
또한, 전술한 실시예에서는 부동 소수점 곱합 연산기(1)가 단정밀도 연산과 배정밀도 연산의 연산을 실행하는 경우를 예로 들어 설명하였지만, 본 발명은 이에 한정되는 것이 아닌, 예컨대 n 배정밀도 연산(n은 정수) 등 본 부동 소수점 곱합 연산기(1)가 서포트하는 연산 정밀도는 한정되는 것이 아니다.
〔4〕 부기
(부기 1)
연산 결과가 정규화일 때에 상기 연산 결과가 시프트되었는지의 여부를 나타내는 정보의 생성을 행하는 연산 처리 장치에 있어서,
상기 연산 결과를 출력하는 연산 수단과,
복수의 시프트 수단을 가지며, 상기 연산 결과에 대한 정규화 처리를 상기 복수의 시프트 수단에 의해 분할하여 행하는 정규화 처리 수단과,
상기 복수의 시프트 수단에 대한 복수의 시프트량을 산출하는 시프트량 산출 수단과,
상기 복수의 시프트량을 이용하여 연산 결과가 정규화일 때에 상기 연산 결과가 시프트되는지의 여부의 예측 결과인 임시 정보를 생성하는 예측 수단과,
상기 임시 정보를 이용하여 상기 정보를 생성하는 생성 수단을 갖는 것을 특징으로 하는 연산 처리 장치.
(부기 2)
연산 결과가 정규화일 때에 상기 연산 결과가 시프트되었는지의 여부를 나타내는 정보를 이용하여 연산 결과의 반올림 처리를 행하는 연산 처리 장치에 있어서,
상기 연산 결과를 출력하는 연산 수단과,
복수의 시프트 수단을 가지며, 상기 연산 결과에 대한 정규화 처리를 상기 복수의 시프트 수단에 의해 분할하여 행하는 정규화 처리 수단과,
상기 복수의 시프트 수단에 대한 복수의 시프트량을 산출하는 시프트량 산출 수단과,
상기 복수의 시프트량을 이용하여 연산 결과가 정규화일 때에 상기 연산 결과가 시프트되는지의 여부의 예측 결과인 임시 정보를 생성하는 예측 수단과,
상기 임시 정보를 이용하여 상기 정보를 생성하는 생성 수단과,
상기 정보를 이용하여 상기 반올림 처리를 행하는지의 여부의 판정 결과를 출력하는 반올림 판정 수단과,
상기 연산 결과에 소정치를 가산하는 증분 수단과,
상기 판정 결과를 이용하여 상기 연산 결과와 상기 증분 수단의 출력 중 어느 하나를 선택하는 선택 수단을 갖는 것을 특징으로 하는 연산 처리 장치.
(부기 3)
연산 결과가 정규화일 때에 상기 연산 결과가 시프트되었는지의 여부를 나타내는 정보를 이용하여 연산 결과의 반올림 처리를 행하는 연산 처리 장치에 의해 연산을 행하는 정보 처리 장치에 있어서,
상기 연산 결과를 출력하는 연산 수단과,
복수의 시프트 수단을 가지며, 상기 연산 결과에 대한 정규화 처리를 상기 복수의 시프트 수단에 의해 분할하여 행하는 정규화 처리 수단과,
상기 복수의 시프트 수단에 대한 복수의 시프트량을 산출하는 시프트량 산출 수단과,
상기 복수의 시프트량을 이용하여 연산 결과가 정규화일 때에 상기 연산 결과가 시프트되는지의 여부의 예측 결과인 임시 정보를 생성하는 예측 수단과,
상기 임시 정보를 이용하여 상기 정보를 생성하는 생성 수단을 갖는 연산 처리 장치에 의해 연산을 행하는 것을 특징으로 하는 정보 처리 장치.
(부기 4)
상기 연산 처리 장치는 추가로,
상기 정보를 이용하여 상기 반올림 처리를 행하는지의 여부의 판정 결과를 출력하는 반올림 판정 수단과,
상기 연산 결과에 소정치를 가산하는 증분 수단과,
상기 판정 결과를 이용하여 상기 연산 결과와 상기 증분 수단의 출력 중 어느 하나를 선택하는 선택 수단을 갖는 것을 특징으로 하는 정보 처리 장치.
(부기 5)
연산 결과가 정규화일 때에 상기 연산 결과가 시프트되었는지의 여부를 나타내는 정보를 이용하여 연산 결과의 반올림 처리를 행하는 연산 처리 방법에 있어서,
상기 연산을 행하는 단계와,
복수의 시프트 처리 단계에서 이용하는 복수의 시프트량을 산출하는 시프트량 산출 단계와,
상기 연산 결과에 대한 정규화 처리를 상기 시프트량을 이용하여 각각 상기 복수의 시프트 처리 단계로 분할하여 행하는 정규화 처리 단계와,
상기 복수의 시프트량을 이용하여 연산 결과가 정규화일 때에 상기 연산 결과가 시프트되는지의 여부의 예측 결과인 임시 정보를 생성하는 예측 단계와,
상기 임시 정보를 이용하여 상기 정보를 생성하는 생성 단계를 갖는 것을 특징으로 하는 연산 처리 방법.
(부기 6)
연산 결과가 정규화일 때에 상기 연산 결과가 시프트되었는지의 여부를 나타내는 정보를 이용하여 연산 결과의 반올림 처리를 행하는 연산 처리 방법에 있어서,
상기 연산 결과를 출력하는 단계와,
적어도 2 개 이상의 시프트 처리 단계에서 이용하는 복수의 시프트량을 산출하는 시프트량 산출 단계와,
상기 연산 결과에 대한 정규화 처리를 상기 시프트량을 이용하여 각각 상기 복수의 시프트 처리 단계로 분할하여 행하고 정규화된 연산 결과를 생성하는 정규화 처리 단계와,
상기 복수의 시프트량을 이용하여 연산 결과가 정규화일 때에 상기 연산 결과가 시프트되는지의 여부의 예측 결과인 임시 정보를 생성하는 스티키 비트 예측 단계와,
상기 임시 정보를 이용하여 상기 정보를 생성하는 생성 단계와,
상기 정규화된 연산 결과에 대하여 상기 정보를 이용하여 반올림 처리를 행 하는 반올림 처리 단계를 갖는 것을 특징으로 하는 연산 처리 방법.
(부기 7)
곱합 연산을 실행하는 곱합 연산부와,
이 곱합 연산부에 의한 상기 연산의 결과에 대한 정규화 시프트량을 산출하는 시프트량 산출부와,
이 시프트량 산출부에 의해 산출된 상기 정규화 시프트량을 이용하여 상기 곱합 연산부에 의한 상기 연산 결과에 대하여 정규화 처리를 실시하는 정규화 처리부와,
이 정규화 처리부에 의한 정규화 처리와 병행하면서, 상기 연산 결과에서의 최하위로부터 소정 영역(이하, 제1 영역이라고 한다) 내의 데이터가 상기 정규화 처리부에 의한 정규화 처리에 의해 스티키 비트 생성 영역 내에 이행되는지의 여부를 예측하고, 상기 스티키 비트 생성 영역 내에 이행된다고 예측한 데이터의 논리합을 임시 스티키 비트로서 산출하는 논리합 산출부와,
상기 정규화 처리부에 의해 정규화 처리를 실시한 연산 결과에서의 상기 스티키 비트 생성 영역 중의 상기 제1 영역과 동일한 영역을 제외한 영역(이하, 제2 영역이라고 한다) 내의 데이터와, 상기 논리합 산출부에 의해 생성된 임시 스티키 비트에 기초하여 스티키 비트를 생성하는 생성부와,
상기 정규화 처리부에 의해 상기 정규화 처리를 실시한 상기 연산 결과에 대하여, 상기 생성부에 의해 생성된 상기 스티키 비트에 기초하여 반올림 처리를 실시하는 반올림 처리부를 구비하여 구성되어 있는 것을 특징으로 하는 정보 처리 장 치.
(부기 8)
상기 정규화 처리부가 상기 정규화 시프트량에 기초하여 정규화 처리를 실시하는 제1 처리부와, 이 제1 처리부에 의한 정규화 처리의 결과에 기초하여 상기 정규화 시프트량이 부족한지의 여부를 판단하고, 부족하다고 판단한 경우에는 상기 부족한 시프트량을 이용하여 상기 결과에 대하여 정규화 처리를 더 실시하는 1 비트 시프트부를 구비하며,
상기 스티키 비트 생성 영역의 상기 제2 영역의 총 비트수가 상기 1 비트 시프트부에 의해 정규화 처리가 실시될 수 있는 상기 부족한 시프트량 이상인 것을 특징으로 하는 부기 7 기재의 정보 처리 장치.
(부기 9)
상기 정규화 처리부의 상기 1 비트 시프트부는 상기 정규화 시프트량이 부족하지 않다고 판단한 경우에는 정규화 처리를 실행하지 않은 것을 특징으로 하는 부기 8 기재의 정보 처리 장치.
(부기 10)
상기 정규화 처리부의 상기 제1 처리부가 상기 정규화 시프트량에 기초하여 상기 연산 결과를 시프트하는 복수 단의 시프트부로 이루어지고,
상기 스티키 비트 생성 영역의 상기 제2 영역의 총 비트수가 상기 복수 단의 시프트부 중의 최종단의 시프트부가 담당하는 최대의 정규화 시프트량과 상기 1 비트 시프트부가 담당할 수 있는 상기 부족한 시프트량의 합계인 것을 특징으로 하는 부기 8 또는 부기 9 기재의 정보 처리 장치.
(부기 11)
상기 정규화 처리부의 상기 제1 처리부의 상기 최종단의 시프트부가, 상기 복수 단의 시프트부 중에서 가장 적은 시프트량을 담당하는 것을 특징으로 하는 부기 10 기재의 정보 처리 장치.
(부기 12)
상기 정규화 처리부로부터 상기 반올림 처리부에 상기 연산 결과 중의 상기 스티키 비트 생성 영역을 제외한 부분이 입력되는 것을 특징으로 하는 부기 7 내지 부기 11 중 어느 한 항에 기재한 정보 처리 장치.
이와 같이, 본 발명에 의하면 논리합 산출부가 정규화 처리부에 의한 정규화 처리와 병행하여 임시 스티키 비트를 산출하고, 생성부가 이 임시 스티키 비트와, 정규화 처리부에 의해 정규화 처리를 실시한 연산 결과 중 스티키 비트 생성 영역의 일부 데이터에 기초하여 스티키 비트의 생성을 행하기 위해 정규화 처리 후에 스티키 비트 생성 영역에 관한 모든 데이터에 관해서 논리합을 산출할 필요가 없으며, 딜레이의 증대를 방지하여 효율적으로 스티키 비트를 생성할 수 있다.
구체적으로는 종래의 방식으로는 99 입력이 필요한 논리합 회로를 5 입력의 논리합 회로로 하는 것이 가능하고, 연산 딜레이 및 파이프 런 단수를 대폭 삭감하여 클록 주파수의 향상에 공헌하는 것이 가능해진다.
또한, 정규화 처리부에 의한 정규화 처리와 반올림 처리부에 의한 처리 사이 의 파이프 라인 스테이지를 분할한 경우에는 정규화 처리와 병행하여 스티키 비트를 생성하고 있기 때문에, 연산 결과 전체를 래치할 필요는 없고, 연산 결과로부터 스티키 비트 생성 영역을 제외한 영역을 래치하는 것만으로 좋기 때문에, 이러한 래치를 위한 스테이징 래치나 배치 배선에 관한 하드웨어 자원을 저감할 수 있다. 구체적으로는 종래 방식으로는 단정밀도 연산 및 배제도 연산을 위해 128 비트의 데이터 폭이 필요한 래치를 60 비트 폭으로 하는 것이 가능해지고, 배치 배선 등의 물리량을 대폭 삭감하는 것이 가능해진다.
또한, 스티키 비트 생성부의 처리 대상 영역인 제2 영역에 정규화 시프트량의 부족분의 정규화 처리를 실시하는 1 비트 시프트부에 의해 처리를 실시할 수 있는 영역이 포함되어 있기 때문에, 시프트량 산출부에 의해 산출된 정규화 시프트량이 소정 비트 부족한지의 여부에 의해 각각 대응하는 전용 하드웨어를 준비할 필요가 없고, 정규화 시프트량이 부족한 경우에도 상관없이 스티키 비트를 확실하게 생성할 수 있다.
따라서, 전술한 특허 문헌 1에 개시된 기술과 같이, 정규화 시프트량이 소정 비트 부족한 경우와, 부족하지 않은 경우의 양쪽 모두의 경우에 대응하기 위해 딜레이 증가나 물량 증가를 초래하지 않는다.
따라서, 종래와 같이 연산 결과의 정규화 처리 후에 스티키 비트의 생성 처리를 행하는 방식보다 본 방식은 물리량의 대폭 삭감을 가능하게 하고, 연산 딜레이 및 파이프 런 단수를 대폭 삭감할 수 있다고 하는 특유의 효과를 갖는다.

Claims (5)

  1. 연산 결과를 정규화할 때에 상기 연산 결과가 시프트되었는지의 여부를 나타내는 정보의 생성을 행하는 연산 처리 장치에 있어서,
    상기 연산 결과를 출력하는 연산 수단과,
    복수의 시프트 수단을 가지며, 상기 연산 결과에 대한 정규화 처리를 상기 복수의 시프트 수단에 의해 분할하여 행하는 정규화 처리 수단과,
    상기 복수의 시프트 수단에 대한 복수의 시프트량을 산출하는 시프트량 산출 수단과,
    상기 복수의 시프트량을 이용하여 연산 결과를 정규화할 때에 상기 연산 결과가 시프트되는지의 여부의 예측 결과인 임시 정보를 생성하는 예측 수단과,
    상기 임시 정보를 이용하여 상기 정보를 생성하는 생성 수단을 갖는 것을 특징으로 하는 연산 처리 장치.
  2. 연산 결과를 정규화할 때에 상기 연산 결과가 시프트되었는지의 여부를 나타내는 정보를 이용하여 연산 결과의 반올림 처리를 행하는 연산 처리 장치에 있어서,
    상기 연산 결과를 출력하는 연산 수단과,
    복수의 시프트 수단을 가지며, 상기 연산 결과에 대한 정규화 처리를 상기 복수의 시프트 수단에 의해 분할하여 행하는 정규화 처리 수단과,
    상기 복수의 시프트 수단에 대한 복수의 시프트량을 산출하는 시프트량 산출 수단과,
    상기 복수의 시프트량을 이용하여 연산 결과를 정규화할 때에 상기 연산 결과가 시프트되는지의 여부의 예측 결과인 임시 정보를 생성하는 예측 수단과,
    상기 임시 정보를 이용하여 상기 정보를 생성하는 생성 수단과,
    상기 정보를 이용하여 상기 반올림 처리를 행하는지의 여부의 판정 결과를 출력하는 반올림 판정 수단과,
    상기 연산 결과에 소정치를 가산하는 증분 수단과,
    상기 판정 결과를 이용하여 상기 연산 결과와 상기 증분 수단의 출력 중 어느 하나를 선택하는 선택 수단을 갖는 것을 특징으로 하는 연산 처리 장치.
  3. 연산 결과를 정규화할 때에 상기 연산 결과가 시프트되었는지의 여부를 나타내는 정보를 이용하여 연산 결과의 반올림 처리를 행하는 연산 처리 장치에 의해 연산을 행하는 정보 처리 장치에 있어서,
    상기 연산 결과를 출력하는 연산 수단과,
    복수의 시프트 수단을 가지며, 상기 연산 결과에 대한 정규화 처리를 상기 복수의 시프트 수단에 의해 분할하여 행하는 정규화 처리 수단과,
    상기 복수의 시프트 수단에 대한 복수의 시프트량을 산출하는 시프트량 산출 수단과,
    상기 복수의 시프트량을 이용하여 연산 결과를 정규화할 때에 상기 연산 결 과가 시프트되는지의 여부의 예측 결과인 임시 정보를 생성하는 예측 수단과,
    상기 임시 정보를 이용하여 상기 정보를 생성하는 생성 수단을 갖는 연산 처리 장치에 의해 연산을 행하는 것을 특징으로 하는 정보 처리 장치.
  4. 제3항에 있어서, 상기 연산 처리 장치는,
    상기 정보를 이용하여 상기 반올림 처리를 행하는지의 여부의 판정 결과를 출력하는 반올림 판정 수단과,
    상기 연산 결과에 소정치를 가산하는 증분 수단과,
    상기 판정 결과를 이용하여 상기 연산 결과와 상기 증분 수단의 출력 중 어느 하나를 선택하는 선택 수단을 더 포함하는 것을 특징으로 하는 정보 처리 장치.
  5. 연산 결과를 정규화할 때에 상기 연산 결과가 시프트되었는지의 여부를 나타내는 정보를 이용하여 연산 결과의 반올림 처리를 행하는 연산 처리 방법에 있어서,
    상기 연산을 행하는 단계와,
    복수의 시프트 처리 단계에서 이용하는 복수의 시프트량을 산출하는 시프트량 산출 단계와,
    상기 연산 결과에 대한 정규화 처리를 상기 시프트량을 이용하여 각각 상기 복수의 시프트 처리 단계로 분할하여 행하는 정규화 처리 단계와,
    상기 복수의 시프트량을 이용하여 연산 결과를 정규화할 때에 상기 연산 결 과가 시프트되는지의 여부의 예측 결과인 임시 정보를 생성하는 예측 단계와,
    상기 임시 정보를 이용하여 상기 정보를 생성하는 생성 단계를 갖는 것을 특징으로 하는 연산 처리 방법.
KR1020060037654A 2005-12-02 2006-04-26 연산 처리 장치, 정보 처리 장치, 및 연산 처리 방법 KR100818011B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2005349804A JP4571903B2 (ja) 2005-12-02 2005-12-02 演算処理装置,情報処理装置,及び演算処理方法
JPJP-P-2005-00349804 2005-12-02

Publications (2)

Publication Number Publication Date
KR20070058293A true KR20070058293A (ko) 2007-06-08
KR100818011B1 KR100818011B1 (ko) 2008-03-31

Family

ID=37897349

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060037654A KR100818011B1 (ko) 2005-12-02 2006-04-26 연산 처리 장치, 정보 처리 장치, 및 연산 처리 방법

Country Status (5)

Country Link
US (1) US7720899B2 (ko)
EP (1) EP1806652B1 (ko)
JP (1) JP4571903B2 (ko)
KR (1) KR100818011B1 (ko)
CN (1) CN100545805C (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230130591A (ko) * 2018-10-03 2023-09-12 캐논 가부시끼가이샤 정보 처리장치, 정보 처리방법, 비일시적인 컴퓨터 판독가능한 기억매체

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2110740B1 (en) * 2007-02-09 2013-05-29 Fujitsu Limited Computation processor, information processor, and computing method
US8106914B2 (en) * 2007-12-07 2012-01-31 Nvidia Corporation Fused multiply-add functional unit
US8402075B2 (en) * 2009-03-16 2013-03-19 Advanced Micro Devices, Inc. Mechanism for fast detection of overshift in a floating point unit of a processing device
US8762444B2 (en) * 2011-09-28 2014-06-24 Nvidia Corporation Fast condition code generation for arithmetic logic unit
US9911470B2 (en) 2011-12-15 2018-03-06 Nvidia Corporation Fast-bypass memory circuit
JP5450781B1 (ja) * 2012-12-26 2014-03-26 株式会社東芝 演算回路及び方法
US10141930B2 (en) 2013-06-04 2018-11-27 Nvidia Corporation Three state latch
GB2535426B (en) * 2014-10-31 2021-08-11 Advanced Risc Mach Ltd Apparatus, method and program for calculating the result of a repeating iterative sum
JP6871513B2 (ja) * 2017-05-22 2021-05-12 富士通株式会社 演算器及び演算器の制御方法
US10514891B1 (en) * 2019-05-24 2019-12-24 Google Llc Multi-input floating-point adder
US11188299B2 (en) * 2019-07-31 2021-11-30 International Business Machines Corporation Repurposed hexadecimal floating point data path

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US44716A (en) * 1864-10-18 Improved potato-digger
JPS63229521A (ja) * 1987-03-19 1988-09-26 Matsushita Electric Ind Co Ltd シフト回路
US4941120A (en) 1989-04-17 1990-07-10 International Business Machines Corporation Floating point normalization and rounding prediction circuit
JPH0367328A (ja) * 1989-08-04 1991-03-22 Ricoh Co Ltd 浮動小数点演算装置
JPH03211617A (ja) * 1990-01-17 1991-09-17 Nec Corp ブロック論理和回路とシフト方式
US5128889A (en) 1990-02-22 1992-07-07 Matsushita Electric Industrial Co., Ltd. Floating-point arithmetic apparatus with compensation for mantissa truncation
US5471410A (en) 1994-10-14 1995-11-28 International Business Machines Corporation Method and apparatus for sticky and leading one detection
JP3950920B2 (ja) * 1994-11-17 2007-08-01 株式会社ルネサステクノロジ 積和演算器及びデータ処理装置
US5757682A (en) * 1995-03-31 1998-05-26 International Business Machines Corporation Parallel calculation of exponent and sticky bit during normalization
US5867407A (en) 1995-06-30 1999-02-02 Digital Equipment Corporation Normalization shift prediction independent of operand substraction
US5754458A (en) * 1996-05-30 1998-05-19 Hewlett-Packard Company Trailing bit anticipator
US5771183A (en) * 1996-06-28 1998-06-23 Intel Corporation Apparatus and method for computation of sticky bit in a multi-stage shifter used for floating point arithmetic
US5793654A (en) * 1996-09-30 1998-08-11 Intel Corporation Saturating alignment shifter
US6167419A (en) * 1997-04-01 2000-12-26 Matsushita Electric Industrial Co., Ltd. Multiplication method and multiplication circuit
KR20010018956A (ko) * 1999-08-24 2001-03-15 한탁돈 부동소수점 병렬 반올림 방법 및 연산장치
US6557021B1 (en) * 1999-11-04 2003-04-29 Intrinsity, Inc. Rounding anticipator for floating point operations
US6571266B1 (en) 2000-02-21 2003-05-27 Hewlett-Packard Development Company, L.P. Method for acquiring FMAC rounding parameters
US6738795B1 (en) 2000-05-30 2004-05-18 Hewlett-Packard Development Company, L.P. Self-timed transmission system and method for processing multiple data sets
US6615228B1 (en) 2000-05-30 2003-09-02 Hewlett-Packard Development Company, Lp Selection based rounding system and method for floating point operations
JP3492638B2 (ja) 2001-02-23 2004-02-03 エヌイーシーコンピュータテクノ株式会社 浮動小数点乗算器

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230130591A (ko) * 2018-10-03 2023-09-12 캐논 가부시끼가이샤 정보 처리장치, 정보 처리방법, 비일시적인 컴퓨터 판독가능한 기억매체
US11810330B2 (en) 2018-10-03 2023-11-07 Canon Kabushiki Kaisha Information processing apparatus, information processing method, non-transitory computer-readable storage medium

Also Published As

Publication number Publication date
EP1806652B1 (en) 2015-12-09
JP4571903B2 (ja) 2010-10-27
EP1806652A3 (en) 2008-11-05
KR100818011B1 (ko) 2008-03-31
US20070130242A1 (en) 2007-06-07
CN1975662A (zh) 2007-06-06
CN100545805C (zh) 2009-09-30
EP1806652A2 (en) 2007-07-11
US7720899B2 (en) 2010-05-18
JP2007156748A (ja) 2007-06-21

Similar Documents

Publication Publication Date Title
KR100818011B1 (ko) 연산 처리 장치, 정보 처리 장치, 및 연산 처리 방법
US10574260B2 (en) Techniques for floating-point number conversion
US7689640B2 (en) Method and apparatus for formatting numbers in microprocessors
EP3769208B1 (en) Stochastic rounding logic
US6175851B1 (en) Fast adder/subtractor for signed floating point numbers
US20140358979A1 (en) GENERATING A FAST 3x MULTIPLAND TERM FOR RADIX-8 BOOTH MULTIPLICATION
KR19980041753A (ko) 다른 데이타 형을 갖는 다수의 데이타를 처리하는 가산기
US8060551B2 (en) Method and apparatus for integer division
US7143126B2 (en) Method and apparatus for implementing power of two floating point estimation
US5623435A (en) Arithmetic unit capable of performing concurrent operations for high speed operation
US8554819B2 (en) System to implement floating point adder using mantissa, rounding, and normalization
US7401107B2 (en) Data processing apparatus and method for converting a fixed point number to a floating point number
CN112653448A (zh) 用于二进制标志确定的设备和方法
KR20210147070A (ko) 다중 입력 부동 소수점 가산기
CN108153513A (zh) 前导零预测
EP1282034A2 (en) Elimination of rounding step in the short path of a floating point adder
US6993549B2 (en) System and method for performing gloating point operations involving extended exponents
US5798958A (en) Zero detect for binary sum
Giri et al. Pipelined floating-point arithmetic unit (fpu) for advanced computing systems using fpga
US7096241B2 (en) Exponent encoder circuit and mask circuit
US20040049528A1 (en) Apparatus and method for adding multiple-bit binary-strings
KR100259095B1 (ko) 정규화 기능을 갖는 가산기
EP3528107B1 (en) Increment/decrement apparatus and method
CN107533462B (zh) 浮点运算装置以及方法
JP3471577B2 (ja) ビット連続数検出装置

Legal Events

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

Payment date: 20130304

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20140228

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20150224

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20160218

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20170220

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee