KR100317767B1 - 부동 소수점 2진 4 워드 포맷 승산 명령 유닛 - Google Patents
부동 소수점 2진 4 워드 포맷 승산 명령 유닛 Download PDFInfo
- Publication number
- KR100317767B1 KR100317767B1 KR1019990004766A KR19990004766A KR100317767B1 KR 100317767 B1 KR100317767 B1 KR 100317767B1 KR 1019990004766 A KR1019990004766 A KR 1019990004766A KR 19990004766 A KR19990004766 A KR 19990004766A KR 100317767 B1 KR100317767 B1 KR 100317767B1
- Authority
- KR
- South Korea
- Prior art keywords
- block stage
- multiplier
- floating point
- parallel path
- bits
- Prior art date
Links
- 238000004364 calculation method Methods 0.000 claims description 30
- 238000000034 method Methods 0.000 claims description 25
- 238000006243 chemical reaction Methods 0.000 claims description 14
- 238000007792 addition Methods 0.000 claims description 11
- 230000002074 deregulated effect Effects 0.000 claims 1
- 238000005192 partition Methods 0.000 abstract 2
- 230000011218 segmentation Effects 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 9
- 238000012545 processing Methods 0.000 description 5
- 238000012937 correction Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/52—Multiplying; Dividing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/487—Multiplying; Dividing
- G06F7/4876—Multiplying
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/52—Multiplying; Dividing
- G06F7/523—Multiplying only
- G06F7/53—Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
- G06F7/5324—Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel partitioned, i.e. using repetitively a smaller parallel parallel multiplier or using an array of such smaller multipliers
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Nonlinear Science (AREA)
- Advance Control (AREA)
Abstract
S/390 프로세서 상에서 4 워드 포맷에 대하여 IEEE 754 표준에 의해 정의된 부동 소수점 승산 명령을 실행하는 방법을 결정하는 데에는 특유한 분할 문제가 존재한다. IBM과 HP를 포함한 몇몇의 제조자들은 2진 4 워드 포맷이 113 비트의 유효 자리를 갖도록 정의하고 있다. IBM S/390 16진수의 긴 부동 소수점 포맷은 56 비트의 유효 자리를 가지는데, 최근의 S/390 부동 소수점 유닛은 단지 긴 포맷 승산기를 포함한다. 4 워드 포맷 승산기는 수회의 긴 정밀 승산 및 확장 정밀도 또는 긴 정밀도 가산이 연속하여 실행되어야 한다. S/390 16진수 4 워드 포맷은 112 비트의 유효 자리를 갖기 때문에 2진 포맷에 비해 그 구현이 용이하며, 두개의 56비트부들로 보다 쉽게 분할될 수 있다. 그러나, 113비트의 유효 자리는 두개의 분할을 초과하여 세개의 분할을 필요로한다. 확장 정밀도 승수들에 있어서, 각각의 분할은 서로 승산되며, 두개의 분할만이 존재한다면, 단지 4회의 승산이 요구되지만, 3개의 분할에 대해서는 그 회수가 9회로 증가된다.
Description
본 발명은 컴퓨터 및 컴퓨터 시스템과 그 부동 소수점 유닛에 관한 것으로, 특히 2진 4 워드 포맷에 따른 승산의 부동 소수점 연산 실행에 관한 것이다.
본 출원은 본 발명의 발명자에 의해 본 출원과 함께 출원된 하기의 특허 출원과 관련된다. 그 출원은 'S/390 프로세서 상에서 2진 4 워드 포맷 승산 명령의 분할'이란 명칭으로 출원되었다. 함께 출원된 발명과 본 출원 발명은 동일 양수인인 뉴욕 아몽크 소재의 IBM 사의 소유이다.
'2진 부동 소수점 연산용 IEEE 표준(IEEE 754 Standard)'은 하나의 비트 부호, 15 비트 이상의 지수 및 64 비트 이상의 유효 자리로 표시를 특정하는 소위 이중 확장된 포맷을 정의한다. 이것은 보다 제한적이지만 이중 확장된 포맷의 부세트인 4 워드 포맷을 채택한 표준화 위원회에서 토의되어 왔다. 휴렛 팩커드 사(Hewlett-Packard')의 PA-RISC 1.1 아키텍쳐(Architecture) 및 IBM S/390의 제조자들은 가장 중요한 비트가 내포된 1 비트의 부호 정보, 15 비트의 지수 및 113 비트의 유효 자리를 포함하는 특정 4 워드 포맷을 채택하였다. 이와 같은 포맷은 하나의 오퍼랜드를 표시하기 위해 128개의 비트나 하나의 4 워드를 필요로 한다.
대개의 부동 소수점 유닛들은 4 워드 포맷에는 적합하지 않지만, 자주 사용되는 이중 워드 포맷에는 적합하다. 4 워드 포맷 오퍼랜드는 포맷이 구현된 하드웨어 내에서 분할된 다음, 전체 4 워드 포맷 연산이 달성되도록 더 작은 연산들인 승산이 실행되어야 한다. 전형적으로 이와 같은 방식으로 지원되는 하나의 부동 연산은 4 워드 포맷에 대한 승산이다.
주목해야 할 것은 휴렛 팩커드 사(Hewlett-Packard)의 PA-RISC 1.1 아키텍쳐와 관련된 4 워드 포맷의 정의가 S/390 아키텍쳐에 의한 소위 2진 확장된 포맷이라는 것과, 이들은 지금의 토의에서는 중요하지 않은 signaling NaN과 quiet NaN의 표시를 제외하고는 동일하다는 점이다. 또한, S/390 아키텍쳐는 단(워드), 장(워드) 및 확장된(4 워드) 포맷들을 갖는 고유 16진수 포맷을 지원한다. 전형적인 S/390 부동 소수점 유닛에서, 16진수 이중 워드 정밀도가 하드웨어에 적합한데, 이것은 양 포맷이 표현하기 위한 64 비트를 필요로하기 때문에 IEEE 754 표준 이중 워드 포맷에 적합한 다른 제조자들과 동일하기 때문이다.
16진수 이중 포맷은 1 비트의 부호 정보, 7 비트의 지수 및 56 비트의 유효 자리를 포함한다. S/390 부동 소수점 유닛 데이타플로우는 전형적으로는 56 비트 오퍼랜드에 대해 적합하다. 승수는 분할 연산 등과 같은 다른 목적으로 사용될 경우에, 여러개의 추가 보호 비트를 가질 수도 있다. 성능면에서, 오퍼랜드의 성능을 최적화한 승수에서, 하나의 추가 비트가 카운터 트리의 전체적인 지연에 상당한 영향을 미치기 때문에, 승수는 임의의 보호 비트들에 의해 확장되지 않는다. 그러나, 다른 오퍼랜드인 피승수(multiplicand)는 카운터 트리의 지연에 거의 영향을미치지 않기 때문에, 한 개 또는 두 개의 16진수에 의해 용이하게 확장될 수 있다. 전형적인 S/390 승산기는 56 비트의 승수 및 60 또는 64 비트의 피승수를 갖는다(예를 들어, 1997년 7/9월 IBM Journal of Research and Development의 Vol. 41 No.4/5의 475-488면에 기재된 E.M.Schwarz, L.Sigal 및 T.J.McPherson의 'S/390 병렬 엔터프라이즈 서버 G4용 CMOS 부동 소수점 유닛'을 참조).
2진 확장 포맷의 113 비트의 유효 자리의 절반 보다 약간 작은 56 비트의 유효 자리 데이타플로우를 갖는 시스템용 S/390 부동 소수점 유닛에 2진 확장 포맷(4 워드 포맷)을 최적화하기 위한 방법은 10년 전 IEEE 표준의 채택이래 개발되지 않고 있다. 따라서, 본 발명은 전형적인 S/390 승산기에 2진 4 워드 포맷에 대한 승산 연산을 실현하는데 관한 것이다.
본 발명은 56 및 60 비트 오퍼랜드와 16진법 지수를 지원하는 하드웨어 승산기 상에서 2진 4 워드 포맷 승산 연산을 실행하기 위한 프로세스를 제공한다. 이와 같은 형태의 하드웨어 승산기는 S/390 부동 소수점 유닛에 일반적으로 이용할 수 있다. 상기 프로세스는 전체 4 워드 포맷 승산을 실행하기 위한 최소의 하드웨어 연산을 제공하며, 16진법 설계에 강점이 있는 16진법 포맷에서의 중간 결과들을 보유할 수도 있다.
본 발명은 단지 4개의 승산을 필요로 하는 113 비트의 유효 자리의 특유한 분리를 포함하며, 또한 16진수 데이타플로우에서 2진 오퍼랜드를 실행하는 소정의 번거로운 추가 작업을 처리한다. 승수 오퍼랜드의 유효 자리는 각각 1, 56 및 56비트의 3개의 그룹으로 분할되며, 피승수 오퍼랜드의 유효 자리는 56과 60 비트의 두개의 그룹으로 분리된다.
S/390 부동 소수점 architecture는 X=(-1)**S*0.F*16**(Xh-64) 의 식으로 표현되는 16진법 포맷을 정의하는데, 여기서 X는 오퍼랜드의 값이고, S는 1 비트 부호이고, F는 유효 자리이며, Xh는 64 바이어스를 감산하여 지수를 형성하는 지수부를 표시한다. 2진 확장 포맷은 X=(-1)**S*1.F*2**(Xb-16383)에 의해 표현되는 포맷을 가지는데, 여기서 Xb는 2진 지수부를 표시한다. 쉬바르쯔(Schwarz) 등의 미국 특허 제5,687,106호에는 16진법 부동 소수점 포맷의 내부 부동 소수점 데이타플로우를 이용하여 16진법 부동 소수점 포맷 및 2진법 부동 소수점 포맷 모두를 지원하기 위한 방법이 교시되어 있다. 제안된 내부 데이타플로우는 X=(-1)**S*0.F*16**(Xi-8192) 의 식으로 표현될 수 있는 14 비트 지수 및 8192의 바이어스를 갖는데, 여기서 Xi는 내부 지수부를 나타낸다. 2진수의 지수를 16진수 포맷으로 변환하는 것은 지수부 우측의 두개의 비트들을 시프트하고 바이어스를 조정하는 것과 같다. 시프트되어진 2진 지수의 최소한 2개의 유효 비트는 2**0, 2**1, 2**2 또는 2**3인 값들을 나타낸다. 2진수로 구조화된 포맷에서의 지수값은 내부의 16진수 포맷에서는 유효 자리의 시프트가 3 비트까지 되도록 변환된다. 16진 포맷에서 53 비트만큼 긴 2진 유효 자리를 나타내기 위해서는, 총 56 비트를 줄 수 있는 이와 같은 시프팅을 위해 3개의 추가 비트가 필요하다. 확장 포맷에는 116 비트의 유효 자리가 필요하다.
분리 방법은 3 비트 2진 시프트를 하나의 오퍼랜드인 피승수에만 적용하는것 만을 포함한다. 이용된 3 비트 시프트는 두개의 입력 오퍼랜드들 모두에 대한 2진 시프트의 조합이다. 승수 유효 자리는 3개의 부분들로 분리되는데, 이는 하이 파트인 명시값인 1, 56 비트와 로우 파트인 56 비트로 구성되며, 총 113 비트이다. 또한, 피승수의 유효 자리는 양 입력 오퍼랜드에 대하여 2진 시프트들의 조합을 갖는 116 비트 유효 자리로 확장되어, 56 비트부와 60 비트부로 분리한다. 이와 같이, 승수는 1, YH(56 비트), YL(56 비트)의 3 부분을 갖고, 피승수는 XH(56 비트)와 XL(60 비트)의 2 부분을 갖는다.
단지 YL*XL, YL*XH, YH*XL 및 YH*XH의 4개의 승산만이 이와 같이 분리되어 확장된 2진 승산을 계산하기 위해 필요하며, 여기서 승수의 크기는 단지 56과 60 비트이다. 1에 대한 승산은 어떠한 계산에도 필요하지 않다. 이와 같은 알고리즘의 또 다른 장점은 2진 지수 중 적어도 2 비트의 유효 자리가 그것들이 다른 2진 부동 소수점 연산용으로 유지되는 방법인 16진수 포맷 내에서의 유효 자리의 2진 정규화에 의해 데이타플로우에서 유지될 수 있다는 것이다.
이하의 상세한 설명에서 상술한 사항들 및 그 향상된 것들에 대하여 설명한다. 이하에서는 여러 장점 및 특징을 갖는 본 발명이 보다 잘 이해되도록 도면 등을 참조하여 설명한다.
도 1은 본 발명의 양호한 실시예 전체를 개략적으로 도시한 도면으로, 특히 피승수를 56 및 60 비트부로, 승수를 1, 56 및 56 비트부로 분할하는 2진 확장 포맷에 대한 승산 연산의 처리 흐름도를 도시하는 도면.
도 2는 본 발명의 제1 대체예 전체를 개략적으로 도시한 도면으로, 특히 피승수를 56, 56 및 4 비트부로, 승수를 56, 56 및 4 비트부로 분할하는 2진 확장 포맷에 대한 승산 연산의 처리 흐름도를 도시하는 도면.
도 3은 본 발명의 제2 대체예 전체를 개략적으로 도시한 도면으로, 특히 피승수를 56 및 60 비트부로, 승수를 56, 56 및 4 비트부로 분할하는 2진 확장 포맷에 대한 승산 연산의 처리 흐름도를 도시하는 도면.
도 4는 본 발명의 제3 대체예 전체를 개략적으로 도시한 도면으로, 특히 피승수를 1, 56 및 56 비트부로, 승수를 1, 56 및 56 비트부로 분할하는 2진 확장 포맷에 대한 승산 연산의 처리 흐름도를 도시하는 도면.
<도면의 주요 부분에 대한 부호의 설명>
10 : 판단 블럭 스테이지
11 : 특수숫자 처리기
12 : 판단 블럭 스테이지
14 : 프로세스 블럭 스테이지
15 : 멀티플렉서
이하에서는 다시 본 발명에 대하여 설명하는데, 2진 확장 정밀 포맷에 대한 부동 소수점 승산 연산을 실행하는 처리 흐름도가 16진법 이중 워드 포맷에 적합한 부동 소수점 하드웨어에 대하여 도시된 양호한 실시예를 도시하는 도 1로부터 본발명이 보여질 것이다. 처리 흐름도는 특정한 경우의 오퍼랜드가 있는지의 여부, 그 오퍼랜드들이 비정규화되었는지의 여부를 검색하는 단계, 부호 계산 단계, 지수 계산 단계, 승수 및 피승수의 유효 자리에 대한 분할 단계, 및 라운딩 앤드 오버플로우 검색 단계들에 대한 부 프로세스들을를 포함한다.
승수 및 피승수 입력 오퍼랜드들은 입력 오퍼랜드들 중 어느 것이 IEEE 754 특수숫자들인 0(zero), NaN(Not-a-Number) 또는 무한수인지를 판단하는 판단 블럭 스테이지(10)로 입력되는 부호, 지수 및 유효 자리부들을 포함한다. 어떤 오퍼랜드가 이들 특수숫자들 중 하나라면, 계산은 특수숫자 처리기(11)로 진행하며, 어떠한 대수 계산도 필요치 않게 된다. 이들 3개의 특수숫자들이 없다면, 프로세스는 오퍼랜드 중에 비정규화된 수가 있는지를 판단하는 판단 블럭 스테이지(12)로 향한다. IEEE 754 표준에 의해 정의에 따라 오퍼랜드 중에 하나가 비정규화된 것이 있다면, 프로세스는 오퍼렌드를 정규화하여 하나 이상의 비트의 확장 지수 영역을 생성하는 사전 정규화 블럭 스테이지로 향하는데, 이 프로세스는 멀티플렉서(15)로 진행한다. 판단 블럭 스테이지(12)에서 오퍼랜드 중에 비정규화된 것이 없다고 판단하면, 지수는 프로세스 블럭 스테이지(14)에서 확장되고, 이 프로세스는 멀티플렉서(15) 내의 사전 정규화 경로로 수렴한다.
다음으로, 프로세스는 4개의 병렬 경로로 나누어 진다. 2개의 오퍼랜드의 부호 비트들은 이 부호들의 단순한 배타적 논리합인 부호 계산 블럭 스테이지(16)에서 처리된다. 2개의 16비트 2진 지수들은 2진 지수의 16진수로의 변환 블럭 스테이지(100)에 의해 처리된다. 2개의 오퍼랜드들의 16진 지수들은 그 지수들을 가산하고 바이어스를 감산하는 16진 지수 계산 블럭 스테이지(104)로 출력된다. 113비트의 피승수 유효 자리는 2진 지수 변환 블럭 스테이지(100)로부터 2진 시프트량 정보를 이용하여 블럭 스테이지(101)에 의해 처리된다. 분할로 인하여, 피승수는 XH로 지정된 두개의 56비트 하이부 및 XL로 지정된 60비트 로우부로 나누어 진다. 116비트가 2**0, 2**-1, 2**-2, 또는 2**-3 일 수 있었던 113비트 피승수 및 2진 시프트량을 나타내기 위하여 유효 자리로 사용된다. 승수 오퍼랜드의 113비트 유효 자리는 오퍼랜드를 YH로 지정된 1, 56 비트 하이부 및 YL로 지정된 56 비트 로우부의 명시값으로 분리하는 분할 블럭 스테이지(102)로 입력된다.
쉬바르쯔(Schwarz) 등의 미국 특허 제5,687,106호에서, 2진 지수 변환 블럭 스테이지는 하나의 2진 지수를 구하여 하기 수학식에 의해 16진 지수 및 적절한 시프트량으로 변환하도록 고려된다:
여기서 Xb는 2진 지수부를 표시하며, Xi는 변환된 내부 16진 지수부를 표시한다. 또한, Xb >> 2는 2비트가 절단되어 우측으로 시프트된 Xb이며, ||는 결합을 표시한다. 그리고, SIGNEXT는 Xi의 최상위 비트를 Xb의 최상위 비트로 설정하여, 보다 적은 상위 비트들에 이와 같이 보수된 비트가 채워지도록 한다.
확장 포맷에 대하여, Xb가 15비트이면, 시프팅은 13비트를 남기면서 적어도 2개의 최상위 비트를 절단한다. Xi가 14비트이면, 13비트의 중간 결과의 SIGNEXT는 하기의 수학식에 의해 표현될 수 있다.
여기서, '는 그 보수를 취한 것을 의미한다.
2진 지수의 16진수로의 변환 블럭 스테이지(100)는 1, YH, YL의 형태로 고정된 승수 유효 자리를 갖는 2진 지수 변환들과 그 유효 자리 표시에서 두개의 2진 시프트를 취하는 피승수의 결합을 수행한다. 하기의 수학식들은 피승수 Y의 변환에 적용되는 보정항을 필요로하는 고정된 포맷 유효 자리를 승수가 갖는 것을 보여준다.
2진 지수의 16진수로의 변환 블럭 스테이지(100)는 고정된 승수 지수 변환을 수행하여, 피승수 유효 자리 분할 블럭 스테이지(101)로 전달되는 2진 시프트양 신호를 생성하는 피승수 지수 변환부로 보정항을 전달한다.
분할 블럭 스테이지(101)의 출력들인 XH 및 XL과 분할 블럭 스테이지(102)의 출력들인 1, YH 및 YL은 계산 블럭 스테이지(103)로 입력된다. 이 계산은 4번의 승산과 4번의 가산을 수행하는 것을 포함한다. 이들 계산들은 부분곱들인 P1, P2,P3, 및 P4와 중간합들인 S1, S2, 및 S3를 만드는 하기의 수학식들에 의해 표현되어, 최종 결과인 PR을 발생시킨다.
상기 결과가 계산 블럭 스테이지(103)로부터 출력되어, 계산 블록 스테이지(104)로부터의 16진 지수 및 계산 블럭 스테이지(16)로부터의 부호 비트와 머지 블럭 스테이지(105)에서 조합된다. 16진수 내부 포맷에서 표시되는 결과가 계산 블럭 스테이지(106)에서의 2진 포맷으로 역전환되어, 계산 블럭 스테이지(17)에서 라운드된다. 다음으로, 참값이 픽스-업 블럭 스테이지(19)로 전송되었는지 및 보고된 결과가 거짓값이라고 판단되는지와 같은 오버플로우나 언더플로우 상태에 대하여 판단 블럭 스테이지(18)에서 검사된 다음, 이 처리가 완료된다.
블럭 스테이지들(10 내지 19)은 본 양호한 실시예에만 한정된 것은 아니며, 단지 블록 스테이지들(100 내지 106)만이 특유한 것이다. 제안된 프로세스는 계산 시간을 4회의 승산 및 4회의 가산에 대한 대기 시간으로 감소시키는 유효 자리의 특유한 분할을 제공한다. 중간 결과들은 하드웨어 문제점들을 용이하게 디버깅하기 위하여 16진수 부동 소숫점 유닛에 적합한 16진 포맷으로 유지된다. 또한, 16진수 내부 포맷이 다음에 계속되는 명령에서의 데이타 의존성을 해결하기 위하여 파이프라인의 처음보다 앞서 전송될 수 있다는 장점이 있다.
본 발명에 대한 3가지 대체예들이 도 2, 3, 및 4에서 설명된다. 도 2의 제1 대체예는 도 1에서와 동일한 블럭 스테이지(104 및 105)와 블럭 스테이지들(10-19)을 도시한다. 단지 지수 및 유효 자리들에 대한 프로세스 블럭 스테이지에 차이가 있다. 도 2에 있는 제1 대체예의 방법은 2진 지수의 16진수로의 변환 블럭 스테이지(200)에서 2개의 16비트 지수들을 수신한다. 이 변환 블럭 스테이지(200)는 쉬바르쯔 등의 미국 특허 제5,687,106호에 따라서 독립적으로 승수 및 피승수에 대한 2진 시프트양들을 계산하여, 이 양들을 분할 블럭 스테이지들(201 및 202)로 전달한다. 승수 및 피승수 모두에 표현되어질 상기와 같이 주어진 2진 시프트양들은 표현하기 위해 116비트를 필요로 하며, 또한 56, 56 및 4비트부들로의 분할이 블럭 스테이지(201 및 202) 모두에 의해 선택되어 각각에 의해 처리된다. 3부분의 피승수는 XH, XL 및 XG로 지정되고, 승수부들은 YH, YL 및 YG로 지정된다. 다음으로, 유효 자리 계산 블럭 스테이지에서 X의 3개의 부들에 Y의 3개의 부들을 곱하는 9회의 승산 및 그 9개의 부분곱들을 합하는 8회의 가산이 실행된다. 이것은 본 발명의 양호한 실시예보다 훨씬 더 낮은 성능을 갖게 되지만, 이러한 스킴은 오퍼랜드당 116개의 비트를 필요로 하는 16진수 포맷에서 파이프라인에 내부적으로 표현되어지도록 주어지는 승수 및 피승수를 분할하는 직접적인 방법이다.
도 3의 제2 대체예는 도 1에서와 동일한 블럭 스테이지들(104 및 105)와 블럭 스테이지들(10-19)을 도시한다. 그리고, 도 3의 2진 지수의 16진수로의 변환 블럭 스테이지(200)는 제1 대체예의 방법에 관한 도 2에서와 동일하다. 유효 자리들에 대한 프로세스 블럭 스테이지들에서 차이가 있으며, 제2 대체예는 승산 하드웨어가 60비트의 하나의 유효 자리를 지원하도록 주어지는 제1 대체예의 방법의 최적화이다. 도 3에서, 피승수는 분할 블럭 스테이지(301)에 의해 XH 및 XL로 지정된 56 및 60비트로 분할된다. 승수는 분할 블럭 스테이지(302)에 의해 YH, YL 및 YG로 각각 지정된 3개의 부분들, 즉 56, 56 및 4비트부로 분할된다. 제2 대체예의 방법에서의 유효 자리 계산 블럭 스테이지(303)는 2개의 피승수부 및 3개의 승수부가 있기 때문에 6회의 승산이 필요하며, 그 부분곱들을 합하기 위한 5회의 가산을 필요로 한다. 이것은 제1 대체예보다 향상된 것이지만, 도 1에서의 양호한 실시예보다는 훨씬 더 느리다.
도 4의 제3 대체예에 도시된 블럭 스테이지들(10-19)은 도 1에서와 동일하다. 이 제3 대체예는 지수 계산들이 2진 지수들 상에서 직접 행해지고, 유효 자리들은 대응하는 16진 지수없이 113비트양으로서 취급된다. 2진 지수의 16진수로의 변환 블럭 스테이지(400)는 2진 지수들을 모두 함께 합한다. 113비트의 피승수 유효 자리는 분할 블럭 스테이지(401)에 의해 1, 56 및 56비트부로 분할된다. 또한, 113비트의 승수 유효 자리도 분할 블럭 스테이지(401)에 의해 1, 56 및 56비트부로 분할되어, 1, YH 및 YL로서 각각 지정된다. 유효 자리 계산 블럭 스테이지는 도 1의 양호한 실시예와 등가인 단지 4회의 승산에 에 의해서만 곱 계산을 수행할 수 있지만, 거기에는 여분으로 내포된 1에 기인하여 더 많은 가산이 필요하게 된다. 또한, 본 제3 대체예는 데이타 의존성들을 초기에 해결하는 장점을 가지며, 고유 부동 소수점 유닛 포맷이 16진수인 비고유 포맷에서의 중간 결과물들을 보유한다.
상기한 바와 같이, 본 발명은 56 및 60 비트 오퍼랜드와 16진법을 지원하는 하드웨어 승산기 상에서 2진 4 워드 포맷 승산 연산을 실행하기 위한 프로세스를 제공할 수 있다. 이와 같은 형태의 하드웨어 승산기는 S/390 부동 소수점 유닛에 일반적으로 이용될 수 있으며, 상기 프로세스는 전체 4 워드 포맷 승산을 수행하기 위한 최소의 하드웨어 연산을 제공하고, 16진법 설계에 강점이 있는 16진법 포맷에서의 중간 결과들을 보유할 수 있게 된다.
본 명세서에서는 본 발명의 양호한 실시예들에 관해서만 설명되어 있지만, 본 분야의 숙련된 기술자들이 첨부된 청구항의 범위 내에 포함되는 다양하게 향상되고 진보된 것들을 지금이나 적어도 장래에는 만들 수 있다는 점이 이해되어야 한다. 또한, 첨부된 청구항들은 본 발명에서 처음으로 개시된 사항들이 적절히 보호받을 수 있도록 해석되어야 한다.
Claims (12)
- IEEE 754 표준에 의해 정의된 부동 소수점 승산 명령을 4 워드 포맷용 2진 확장 정밀도 포맷에 대하여 컴퓨터 프로세서 상에서 실행시키기 위한 부동 소수점 유닛(FPU)에 있어서,상기 컴퓨터 프로세서는 16진법 이중 워드 포맷에 최적화된 부동 소수점 하드웨어를 구비하고, 상기 2진 4 워드 포맷이 113비트의 유효 자리를 갖도록 정의되어 있으며,4 워드 포맷 승산은 입력된 승수 및 피승수를 갖는 상기 컴퓨터 프로세서에 의해 연속된 수 회의 긴 정밀도 승산 및 확장 정밀도 또는 긴 정밀도 가산들로서 실행되어야 하며,부동 소수점 승산기를 구비한 상기 중앙 프로세서에 의해 상기 승산들을 실행하기 위한 FPU 데이타플로우 파이프라인을 포함하고,상기 부동 소수점 승산기 내의 상기 승산기들 내의 상기 승수 및 피승수 입력 오퍼랜드들은 판단 블럭 스테이지로 입력되는 부호, 지수 및 유효 자리부들을 포함하고,상기 판단 블럭 스테이지는, 상기 입력 오퍼랜드들 중에 IEEE 754 특수숫자인 0, NaN(Not-a-Number), 또는 무한수와 동일한것이 있는지를 판단하여, 오퍼랜드 중에 상기 특수숫자가 있다면, 계산이 특수숫자 처리기에 의해 처리되도록 진행하여, 어떠한 연산도 필요치 않게 하고, 상기와 반대로, 오퍼랜드 중에 상기 세개의특수숫자가 없다면, 상기 프로세스의 데이타플로우는 판단 블럭 스테이지로 진행하고,상기 판단 블럭 스테이지는, 오퍼랜드 중에 비정규화된 것이 있는지를 IEEE 754표준에 따라 판단하여, 오퍼랜드 중에 비정규환된것이 있다면, 상기 프로세스는 상기 오퍼랜드들을 정규화하여 1 이상의 비트로 확장 지수 범위를 생성하는 사전 정규화 블럭 스테이지로 진행하고, 계속해서 병렬 경로 멀티플렉서 스테이지로 진행하고, 오퍼랜드 중에 비정규화된 것이 없다고 상기 판단 블럭 스테이지가 판단하면, 그 숫자의 지수는 병렬 경로 멀티플렉서로 진행하고,상기 병렬 경로 멀티플렉서는 상기 확장 프로세스 블럭 스테이지와 상기 사전 정규화 경로로부터 수렴하는 데이타플로우를 수신하고,상기 데이타플로우 프로세스는 4개의 병렬 경로 - 제1 병렬 경로는 부호 계산 블럭 스테이지를 가지며, 제2 병렬 경로는 지수 변환 블럭 스테이지를 가지며, 제3 병렬 경로는 분할 피승수 유효 자리 블럭 스테이지를 가지며, 제4 병렬 경로는 분할 승수 유효 자리 블럭 스테이지를 가짐 - 로 분리되고,상기 두개의 오퍼랜드의 부호 비트들은 상기 부호 계산 블럭 스테이지에서 처리되고,상기 오퍼랜드의 두개의 16비트 2진 지수는 상기 지수 변환 블럭 스테이지에 의해 처리되고,상기 분할 피승수 유효 자리 블럭 스테이지는 상기 멀티플렉서로부터 113 비트의 피승수 유효 자리가 입력되고, 상기 제4 병렬 경로에서 113비트의 승수는 분할 승수 유효 자리 블럭 스테이지로 입력되고, 상기 제3 및 제4 병렬 경로는 계산 블럭 스테이지에 수렴하고,상기 계산 블럭 스테이지는 부분곱들 및 중간합들을 제공하는 수 회의 승산 및 가산을 수행하여 최종 결과를 출력하고,상기 계산 블럭 스테이지의 출력, 상기 제2 병렬 경로로부터의 상기 지수 및 상기 제1 병렬 경로로부터의 상기 부호는 16진수 내부 포맷으로 표현되는 결과를 제공하는 머지 블럭 스테이지에서 조합되고,계산 블럭 스테이지에서 2진 포맷으로 다시 전환되고, 라운드(round)되는부동 소수점 유닛.
- 제1항에 있어서,지수 변환 스테이지를 갖는 상기 제2 병렬 경로는 2진 지수를 16진수로 변환하는 블럭 스테이지이고,분할 피승수 유효 자리를 갖는 상기 제3 병렬 경로는 피승수 유효 자리를 56/60 비트로 분할하는 블럭 스테이지이고,분할 승수 유효 자리를 갖는 상기 제4 병렬 경로는 승수 유효 자리를 1/56/56 비트로 분할하는 블럭 스테이지이고,상기 2개의 오퍼랜드의 부호 비트는 상기 부호 계산 블럭 스테이지에서 처리되고,상기 오퍼랜드의 2개의 16비트 2진 지수는 2진 지수의 16진수로의 변환 블럭스테이지에 의해 처리되고,상기 2진 지수의 16진수로의 변환 블럭 스테이지로부터 상기 2개의 오퍼랜드들의 16진 지수들이 상기 지수들을 가산하고 소정의 바이어스를 감산하는 상기 제2 병렬 경로의 16진 지수 계산 블럭 스테이지로 출력되고, 또한 2진 지수의 16진수로의 변환 블럭 스테이지로부터 소정의 시프트량이 비트 블럭 스테이지 내에서 분할된 분할 피승수 유효 자리를 갖는 상기 제3 병렬 경로로 전달되고,상기 비트 블럭 스테이지는 상기 멀티플렉서로부터 입력된 113 비트 피승수 유효 자리를 수신하고,상기 제4 병렬 경로에서 113 비트 승수는 상기 비트 블럭 스테이지 내에서 분할된 분할 승수 유효 자리를 갖도록 입력되고,상기 제3 및 제4 병렬 경로는 부분곱들 및 중간합들을 제공하는 소정 횟수의 승산 및 가산을 수행하는 계산 블럭 스테이지로 수렴하여, 최종 결과를 출력하고,상기 계산 블럭 스테이지의 출력, 상기 제2 병렬 경로로부터의 상기 16진 지수 및 상기 제1 병렬 경로로부터의 상기 부호 비트는 머지 블럭 스테이지에서 조합되어 16진수 내부 포맷으로 표시되는 결과를 제공하고,상기 결과는 상기 계산 블럭 스테이지에서의 2진 포맷으로 역변환되고, 라운드되는부동 소수점 유닛.
- 제2항에 있어서, 상기 피승수의 분할은 2개의 56비트 하이부 및 1개의 60비트 로우부로 이루어지는 부동 소수점 유닛.
- 제3항에 있어서, 상기 제4 병렬 경로의 승수 분할 블럭 스테이지에서의 승수 오퍼랜드의 113 비트 유효 자리는 명시값인 1, 56 비트 하이부 및 56 비트 로우부로 분리되는 부동 소수점 유닛.
- 제2항에 있어서, 상기 제3 병렬 경로는 56/60 비트로 분할되는 분할 피승수 유효 자리를 갖고, 상기 제4 병렬 경로는 1/56/56 비트로 분할되는 분할 승수 유효 자리를 갖는 부동 소수점 유닛.
- 제5항에 있어서, 상기 계산 블럭 스테이지는 부분곱, 중간합 및 최종 결과를 제공하는 4회의 승산 및 4회의 가산을 수행하는 부동 소수점 유닛.
- 제2항에 있어서, 상기 제3 병렬 경로는 56/56/4 비트로 분할되는 분할 피승수 유효 자리를 갖고, 상기 제4 병렬 경로는 56/56/4 비트로 분할되는 분할 승수 유효 자리를 갖는 부동 소수점 유닛.
- 제7항에 있어서, 상기 계산 블럭 스테이지는 부분곱, 중간합 및 최종 결과를 제공하는 9회의 승산 및 8회의 가산을 수행하는 부동 소수점 유닛.
- 제2항에 있어서, 상기 제3 병렬 경로는 56/60 비트로 분할되는 분할 피승수 유효 자리를 갖고, 상기 제4 병렬 경로는 56/56/4 비트로 분할되는 분할 승수 유효 자리를 갖는 부동 소수점 유닛.
- 제9항에 있어서, 상기 계산 블럭 스테이지는 부분곱, 중간합 및 최종 결과를 제공하는 6회의 승산 및 5회의 가산을 수행하는 부동 소수점 유닛.
- 제1항에 있어서, 상기 제3 병렬 경로는 1/56/56 비트로 분할되는 분할 피승수 유효 자리를 갖고, 상기 제4 병렬 경로는 1/56/56 비트로 분할되는 분할 승수 유효 자리를 갖는 부동 소수점 유닛.
- 제11항에 있어서, 상기 계산 블럭 스테이지는 부분곱, 중간합 및 최종 결과를 제공하는 4회의 승산 및 5회의 가산을 수행하는 부동 소수점 유닛.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/034,718 | 1998-03-04 | ||
US09/034,718 US6055554A (en) | 1998-03-04 | 1998-03-04 | Floating point binary quad word format multiply instruction unit |
US9/034,718 | 1998-03-04 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR19990077418A KR19990077418A (ko) | 1999-10-25 |
KR100317767B1 true KR100317767B1 (ko) | 2001-12-22 |
Family
ID=21878160
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019990004766A KR100317767B1 (ko) | 1998-03-04 | 1999-02-10 | 부동 소수점 2진 4 워드 포맷 승산 명령 유닛 |
Country Status (3)
Country | Link |
---|---|
US (1) | US6055554A (ko) |
JP (1) | JP3163072B2 (ko) |
KR (1) | KR100317767B1 (ko) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6829627B2 (en) * | 2001-01-18 | 2004-12-07 | International Business Machines Corporation | Floating point unit for multiple data architectures |
FR2853425B1 (fr) * | 2003-04-07 | 2006-01-13 | Atmel Corp | Sequence de multiplication efficace pour operandes a grands nombres entiers plus larges que le materiel multiplicateur |
US20090198758A1 (en) * | 2008-01-31 | 2009-08-06 | International Business Machines Corporation | Method for sign-extension in a multi-precision multiplier |
JP5640157B2 (ja) * | 2010-11-30 | 2014-12-10 | エム.エス.ラマイア スクール オブ アドバンスド スタディーズ | マルチコアプロセッサを用いたウェーブレット変換 |
US11175394B2 (en) | 2019-03-27 | 2021-11-16 | Raytheon Company | Binary to quad phase generator |
US10990389B2 (en) * | 2019-04-29 | 2021-04-27 | Micron Technology, Inc. | Bit string operations using a computing tile |
CN111198672B (zh) * | 2019-12-30 | 2022-03-25 | 华南师范大学 | 一种基于二元扩域的点加和倍点电路及其控制方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4594679A (en) * | 1983-07-21 | 1986-06-10 | International Business Machines Corporation | High speed hardware multiplier for fixed floating point operands |
US5687106A (en) * | 1995-03-31 | 1997-11-11 | International Business Machines Corporation | Implementation of binary floating point using hexadecimal floating point unit |
US5740093A (en) * | 1995-12-20 | 1998-04-14 | Intel Corporation | 128-bit register file and 128-bit floating point load and store for quadruple precision compatibility |
JPH09269891A (ja) * | 1996-04-01 | 1997-10-14 | Hitachi Ltd | 部分積加算方法および装置、浮動小数点乗算方法および装置、浮動小数点積和演算方法および装置 |
-
1998
- 1998-03-04 US US09/034,718 patent/US6055554A/en not_active Expired - Lifetime
-
1999
- 1999-02-10 KR KR1019990004766A patent/KR100317767B1/ko not_active IP Right Cessation
- 1999-02-24 JP JP04635999A patent/JP3163072B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH11296346A (ja) | 1999-10-29 |
KR19990077418A (ko) | 1999-10-25 |
US6055554A (en) | 2000-04-25 |
JP3163072B2 (ja) | 2001-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7395304B2 (en) | Method and apparatus for performing single-cycle addition or subtraction and comparison in redundant form arithmetic | |
JP6744916B2 (ja) | 冗長表現を用いた、第1および第2のオペランドの積算 | |
US6751644B1 (en) | Method and apparatus for elimination of inherent carries | |
US6697832B1 (en) | Floating-point processor with improved intermediate result handling | |
US6078941A (en) | Computational structure having multiple stages wherein each stage includes a pair of adders and a multiplexing circuit capable of operating in parallel | |
US6099158A (en) | Apparatus and methods for execution of computer instructions | |
EP0645699A1 (en) | Fast multiply-add instruction sequence in a pipeline floating-point processor | |
US5245564A (en) | Apparatus for multiplying operands | |
US5157624A (en) | Machine method to perform newton iterations for reciprocal square roots | |
CN108351776B (zh) | 数据处理方法和装置 | |
CN108351762B (zh) | 使用重叠位的数值的冗余表示的方法和装置 | |
US11068238B2 (en) | Multiplier circuit | |
JPH01112332A (ja) | 乗算及び算術論理演算機能を組合わせて使用する浮動小数点ユニット | |
US5548545A (en) | Floating point exception prediction for compound operations and variable precision using an intermediate exponent bus | |
Magenheimer et al. | Integer multiplication and division on the HP precision architecture | |
Quinnell et al. | Bridge floating-point fused multiply-add design | |
US20050228844A1 (en) | Fast operand formatting for a high performance multiply-add floating point-unit | |
KR100317767B1 (ko) | 부동 소수점 2진 4 워드 포맷 승산 명령 유닛 | |
Erle et al. | Decimal floating-point multiplication | |
CN108351763B (zh) | 用于重叠传播操作的方法和装置 | |
JP3803438B2 (ja) | 浮動小数点乗算累算装置 | |
US6813628B2 (en) | Method and apparatus for performing equality comparison in redundant form arithmetic | |
GB2549153A (en) | Apparatus and method for supporting a conversion instruction | |
US6697833B2 (en) | Floating-point multiplier for de-normalized inputs | |
EP0332215B1 (en) | Operation circuit based on floating-point representation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20041012 Year of fee payment: 4 |
|
LAPS | Lapse due to unpaid annual fee |