KR980010751A - 부동 소수점 하드웨어를 사용하여 마이크로프로세서 정수 나눗셈 연산을 실행하기 위한 방법 및 장치 - Google Patents

부동 소수점 하드웨어를 사용하여 마이크로프로세서 정수 나눗셈 연산을 실행하기 위한 방법 및 장치 Download PDF

Info

Publication number
KR980010751A
KR980010751A KR1019970036389A KR19970036389A KR980010751A KR 980010751 A KR980010751 A KR 980010751A KR 1019970036389 A KR1019970036389 A KR 1019970036389A KR 19970036389 A KR19970036389 A KR 19970036389A KR 980010751 A KR980010751 A KR 980010751A
Authority
KR
South Korea
Prior art keywords
integer
approximation
floating point
molecule
value
Prior art date
Application number
KR1019970036389A
Other languages
English (en)
Other versions
KR100528269B1 (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 KR980010751A publication Critical patent/KR980010751A/ko
Application granted granted Critical
Publication of KR100528269B1 publication Critical patent/KR100528269B1/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/52Multiplying; Dividing
    • G06F7/535Dividing only
    • 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/3824Accepting both fixed-point and 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

Landscapes

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

Abstract

공동 정수 분모로 나누어진 정수 분자의 다수의 정수 몫을 효과적으로 형성하는 방법 및 장치는 정수 분모의 역수의 부동 소수점 근사값에 분자의 부동 소수점 표시를 곱하고, 필요할 때 아래 또는 위로 라운드하기 전에 부동 소수점 몫을 바이어스함으로써 달성된다. 먼저, 분모의 역수의 초기 근사값은 역수(112)의 제한된 정밀도 제곱근을 제곱함으로써(114) 계산된다(102). 최종 역수는 유한 멱급수(104)를 사용하여 계산된다. 최종적으로, 변형된 분자는 원래의 분자를 바이어스함으로써 형성되고(106), 역수배 곱해진 변형된 분자의 곱은 계산되며, 곱은 필요할 때(108) 위 또는 아래로 라운드된다.

Description

부동 소수점 하드웨어를 사용하여 마이크로프로세서 정수 나눗셈 연산을 실행하기 위한 방법 및 장치
제1도는 본 발명에 의해 제출된 문제점 중 하나를 설명하는 넘버 라인의 도면.
제2도는 본 발명을 설명하는 넘버 라인의 도면.
제3도는 본 발명의 연산을 설명하는 하이 레벨의 플로우챠트.
제4도 내지 제6도는 제3도의 본발명에 의한 스텝을 설명하는 플로우챠트.
제7도는 파이프라인 프로세서 시스템에서 본 발명의 연산을 설명하는 명령 스케쥴링 테이블.
제8도는 본 발명의 주문 제작된 집적 회로 완성을 설명하는 블럭도.
제9도 및 제10도는 본 발명을 행하는 데이터 프로세싱 시스템을 설명하는 블럭도.
* 도면의 주요부분에 대한 부호의 설명
200:중앙 처리 장치 212:패취 유닛
216:분기 처리 유닛 218:디스페처 유닛
224:다수 사이클 정수 유닛 229:단일 사이클 정수 유닛
234:로드/저장 유닛 240:부동 소수점 유닛
250:명령 메모리 관리 유닛 254:16(Kbit) 명령 캐쉬
258:128 비트 버스 272:32비트 어드레스 버스
274:64비트 데이터 버스 280:외부 메모리
[발명이 속하는 기술분야 및 그 분야의 종래기술]
본 발명은 일반적으로 마이크로프로세서 나눗셈에 관한 것으로, 특히 부동 소수점 덧셈 및 곱셈 연산을 행할 수 있는 하드웨어 부동 소수점 수단을 사용하여 정수 나눗셈 결과를 얻기 위한 방법 및 장치에 관한 것이다.
최신식 컴퓨팅 산업에서, 컴퓨터 시스템 내의 중앙 처리 장치(CPU)를 사용하여 정수 나눗셈 연산을 행하는 것이 많이 필요하게 된다. 정수 분자를 정수 분모로 나누는 정수 나눗셈 연산은 많은 응용에 사용된다. 전통적으로, 정수 나눗셈은 인터넷에 사용하는 MPEG 시퀀스 또는 JPEG 이미지를 포함하는 계산에 사용된다. 정수 나눗셈은 컴퓨터 그래픽 프로세싱, 다양한 플로팅 알고리즘, 3D 스크린 디스플레이, 그래픽 유저 인터페이스(GUIs) 및 정수 나눗셈을 사용하여 스케일링 및/또는 압축할 수 있는 다른 응용에 사용된다. 선형 대수학 및 매트릭스 계산에 따른 멀티매체 응용은 정수 나눗셈의 사용을 필요로 한다. 또, 비디오 프로세싱, 정수 선형 프로그래밍, 다수 정밀도 산술 및 유클리드 GCD(greatest common denomi nator) 알고리즘은 중요한 다수의 정수 나눗셈을 필요로 한다. 그러므로, 이들 응용이 더 널리 사용될 때, 최신식 컴퓨터 및 최신식 마이크로프로세서 설계는 더욱더 유효하고 효과적인 방법으로 정수 나눗셈을 행하게 하는 것이 중요하다.
최근, 정수 나눗셈은 중앙 처리 장치(CPU)내의 나눗셈 연산을 사용함으로써 행해진다. 이 정수 나눗셈은 전형적으로 32 비트 이상의 정밀도를 가지지 못하는 CPU의 정수 실행 유닛에 사용된다. 대부분의 나눗셈 연산은 연산하는데 적어도 20-40 클럭 사이클을 필요로 하고, 나눗셈 연산은 일반적으로 대부분의 최신식 중앙 처리 장치(CPU)에서 행하기 위한 몇배의 소모 수학 연산이다. 산업에서 알 수 있는 바와 같이, 더 빨리 연산하는 컴퓨터는 더 가치있는 컴퓨터이기 때문에, 나눗셈 연산의 사용은 최적이 아니다. 상기 응용에서, 발생하는 정수 나눗셈은 전형적으로 동일 정수 분모를 항상 포함하는 스케일링 연산일 수 있다. 나눗셈 연산을 행할 때, 분모는 계속적으로 동일 값이고, 각 나눗셈은 연속적으로 행해지며, 서로 독립이여야 하고, 속도 장점은 패러럴 연산을 행하고 나눗셈 연산들 사이의 정보를 통과함으로써 달성되어, 동일 정수 분모가 경험될 때 다음 나눗셈 프로세싱을 전척시킬 수 없다. 요약하면, 정수 유닛 내의 정수 나눗셈 연산의 사용은 정수 디바이더 연산을 행하기에는 비효율적인 방법으로, 상기 토론된 응용이 적당한 효율을 갖는 적당한 시간 주기로 행해진다. 정수 나눗셈을 행하는 정수 나눗셈 연산의 사용은 동일 정수 분모, 정밀도 부족 및 일반적으로 상기 응용에 사용하는 쓸모없는 방법론을 포함하는 클러스터 스케일링 때문에 쓸모없이 느려진다. 동시에, 부동 소수점 프로세서는 부동 소수점 넘버의 덧셈, 뺄셈 및 곱셈 연산의 효과적인 파이프라인 프로세싱을 제공하기 위해 일반적으로 행해진다. 또, 이들 부동 소수점 프로세서는 53비트량으로 다룰 수 있다.
[발명이 이루고자 하는 기술적 과제]
그러므로, 이들 정수 나눗셈 연산의 실행 속도는 향상되고, 연산 정밀도가 높으며, 연산의 많은 파이프라이닝이 달성된 부동 소수점 형태로 표시된 정수의 정수 나눗셈 연산을 행하는 새로운 장치 및 방법이 필요하고, 동일 분모를 사용하여 행하는 다수 나눗셈은 몇배 효과적인 방법으로 합리화될 수 있다.
[바람직한 실시예의 상세한 설명]
일반적으로, 본 발명은 나눗셈 하드웨어 및 알고리즘의 사용을 피함으로써 중앙 처리 장치(CPU) 내의 정수 나눗셈 연산을 행하는 스텝을 포함한다. 대신에 하드 웨어 및 방법은 정확성 및 속도 효과 방법에서 정수 나눗셈 연산을 처리하기 위해 CPU 내의 하드웨어 부동 소수점 유닛의 더 효율적인 덧셈 및 곱셈 방법을 사용한다. 종래 기술에서, 수학 나눗셈 연산은 정수 나눗셈 기능을 행하기 위해 사용된다. 나눗셈 연산을 결과 x(여기에서, x는 어떤 정수값에 a/b 라운드됨)을 제공하기 위해 정수 분자 a를 정수 분모 b로 나누는 스텝을 포함한다. [a/b]로 표시된 a/b의 하한은 a/b보다 크지 않은 가장 큰 정수이고,
[a/b]로 표시된 a/b의 상한은 a/b보다 작지 않은 가장 작은 정수이다. 여기에서 설명된 방법 및 장치에서, a/b의 정수 나눗셈 b의 역수인 1/b = b-1의 근사값을 형성하고, 바이어스된 분자 a' = ±(a+p)을 계산하며, 1/b =b-1과 a'간의 곱셈을 행하고, 다음 최고 정수 또는 다음 최저 정수에 대한 곱셈의 결과를 라운드함으로써 행해진다.
1/b=b-1의 값이 무한 또는 완전한 정밀도로 CPU에 표시할 수 없기 때문에, 여기에서 토론된 값 a의 추가 바이어싱은 이 방법을 사용할 때 필요해짐이 가장 중요해진다. 예를 들면, 1/3의 값은 대부분의 CPU에서 무한/완전 정확성으로 표시될 수 없다. 그러므로, 중앙 처리 장치(CPU)가 정수 분자 a 및 정수 분자 b를 받아들일 때, 이들 수는 부동 소수점 포맷에 제공되거나, 부동 소수점 프로세싱용 부동 소수점 포맷을 전환하고, a는 1/b=b-1의 값에 접근하여 정확성의 손실을 보상하기 위해 바이어스된다.
실험은 정수 유닛을 사용하는 전형적인 정수 나눗셈 연산이 32 비트 정수용으로 20-40 클럭 사이클을 취할 수 있음을 도시한다. 부동 소수점 유닛 내의 덧셈 및 곱셈의 방법을 사용하여, 단일 50 비트 정수 나눗셈 연산은 30 클럭 사이클을 취한다. 나눗셈 연산이 동일 정수 분모 b를 사용하여 행해질 경우, 제2나눗셈은 제1덧셈 클럭 사이클로만 행해질 수 있고, 제3나눗셈은 제2덧셈 클럭 사이클로 행해질 수 있다. 추가적인 나눗셈은 대체로 칩된다. 즉, 전형적인 정수 나눗셈 유닛은 대충 60-120 클럭 사이클에서 24/11, 101/11 및 65/11을 계산할 수 있고, 후술하는 a'b-1의 라운드 값을 발견하는 방법은 32 클럭 사이클에서 모두 3개의 정수 몫 결과를 발견할 수 있다. 또, 이들 결과는 우수한 파이프라인 부동 소수점 유닛의 결과를 직접 사용하기 위해 더 쉬운 부동 소수점 포맷으로 얻어진다. 시간은 부동 소수점 유닛에서 단일 부동 소수점 나눗셈보다 더 빠르고, 다수의 추가 계산은 정수 나눗셈 연산의 결과를 제공하는 부동 소수점 연산으로 오버랩될 수 있다.
그러므로, 여기에 토론된 정수 나눗셈 절차 및 장치는 정수 하드웨어 유닛보다 전형적으로 더 효과적으로 파이프라인된 부동 소수점 하드웨어로 행해진 부동 소수점 계산으로 제공한다. 나눗셈 연산의 속도는 부동 소수점 유닛에서 단일 정수 나눗셈 연산용으로 향상되고, (JPEG 스케일링 등과 같은)동일 분모 b를 갖는 다수 나눗셈 연산은 성능면에서 크게 향상된다. 부동 소수점 하드웨어 유닛은 더 많은 비트 정밀도용으로 제공하므로, 여기에서 토론된 방법 및 장치는 정확한 정수 나눗셈 정밀도를 정수 유닛에 일반적으로 사용된 32 비트 표시에서 이들보다 더 큰 정수로 제공한다. 추가로, 정수값은 정수 포맷과 부동 소수점 포맷 사이의 전환 시간이 감소되도록 부동 소수점 포맷에 유지될 수 있다. 일반적으로, 여기에 토론된 정수 나눗셈 결과를 계산하는 방법은 멀티매체 응용, MPEG 응용, JPEG 프로세싱, 그래픽 인터페이스, D 그래픽, GOD(greatest common denominator) 계산, 선형 대수학 계산, 매트릭스 연산, 비디오 프로세싱, 디지탈-오디오 프로세싱, 정수 선형 프로그래밍 등을 가능하게 하는 빠른 결과 계산을 허용하여, 이전에 가능하지 않는 계산 속도로 행해진다.
이하에서는 이론설명과 도면을 참조하여 본 발명의 실시 형태를 설명한다.
다양한 컴퓨터 응용을 위한 정수 나눗셈 연산을 행하기 위한 특정한 방법 및 장치를 설명하기 전에, 다음 이론적인 토론은 여기에 토론된 정수 나눗셈 프로세스의 이해를 돕기 위해 제공된다.
최대값A보다 크기가 작은 큰 정수는 부동 소수점 포맷으로 표현될 수 있다. |a| 〈 A 및 A 〉 b 〉 0은 CPU에 제공된 2개의 정수값이라 하자. 또, 하한 [a/b] 및 상한 [a/b]는 (-A, A) 범위 내의 정수이다. 목적은 근사값 zb-1을 사용하고, [a/b] = [(a+1/2)z]및/또는 [a/b]= (a+1/2)z]을 계산함으로써 정확한 나눗셈을 행하지 않고 하한 또는 상한을 계산하는 것이다. 이 CPU 계산은 빨리 행해질 수 있고, 이전에 토론된 모든 장점을 갖는다. 상기 계산은 δ = 1-bz 가 |δ|〈 1/2A+1을 만족하기 위해 z가 1/b = b-1에 대해 정확히 충분한 근사값인 경우에 정확한 결과를 제공할 수 있다.
CPU에서 z를 계산하는 종래 방식은 근사값 y로 칭해진 1/b=b-1의 초기 평가를 얻고, e=1-by를 계산하며, 마지막으로 CPU내의 하나 이상의 되풀이되는 처리 스텝에 의해 y로 z를 계산한다. 생략된 멱급수 근사값은 z=y(1+e+e2+e3+e4+…+em)로 제공된다. 이 생략된 멱급수 근사값이 정확하게 계산될 경우, 결과는 에러 δ = em+1을 제공할 수 있다. 계산은 이 표현(즉, 한번 반복)의 사용 또는 멱급수에 사용된 부분의 수에 의존하는 순차 사용(즉, 다수 반복)으로 행해질 수 있다. 일반적으로, 적당하거나 높은 잠재력을 갖는 파이프라인 프로세서에서는 높은 값 m을 갖는 단일 다항식으로 사용하는 것이 유리하고, 잠재가 낮은 프로세서에서는 낮은 차 다항식의 반복된 사용이 더 유리하다. 추가로, 어떤 값 m에 대해, 다항식은 쉽게 팩터될 수 있어, 높은 차의 단일 다항식의 더 빠른 계산을 허용한다. 후술한 바와 같은 이러한 경우는 특히 유리해진다.
최신식 파이프라인 마이크로프로세서(제8-9도를 참조하라)에서는 부동 소수점 넘버의 역수에 대한 근사값을 계산하는 명령이 있다. 이러한 명령이 근사값 y로서 사용되도록 8 비트 결과를 제공할 경우, m=6은 (직접적으로 계산된 경우) 50 비트이상의 정확성을 갖는 z를 제공하는 최소 m일 수 있다. 이러한 명령이 빠른 경우, 명령은 우수한 개시점일 수 있다.
이러한 명령이 느리거나 존재하지 않을 경우, 근사값은 부동 소수점 넘버의 역수 제곱근에 대한 근사값을 계산하는 명령을 사용하여 얻어질 수 있다. 이러한 완성이 5 비트로 정확해진 r=1/γb에 대한 근사값을 제공할 경우, 1/b = b-1에 대한 근사값 y는 4비트 이하의 정확성을 갖는 y=r2로서 계산될 수 있다. 이것은 이 결과로 충분히 빨리 진행될 수 있고, 이전의 파라그래프에서 설명된 개시 근사값을 사용하기 위해 m=16을 얻는다.
4비트 이하의 정확한 값 y를 사용하기 위해, 250의 A값에 사용하여 보장하면 돈팅 문제(dauting problem)와 유사해진다. 펙터링 후, 최종 근사값은 z=y+ye(1+e)(1+e2)(1+e4)(1+e8)로 기록될 수 있다. 이 펙터링은 순서를 선택함으로써 많은 방식으로 계산될 수 있고, 산술 연산은 행해진다.
결합된 곱셈/덧셈 명령이 사용가능해질 때 특히 빠르고 편의한 것은 z=y+(e+e2)(y+yㆍe)((e+e2)+(e+e2)ㆍe4)(1+e8)이다. z를 계산하는데 필요한 시간을 최소화하기 위해 순서를 선택하는 다수의 방법이 있다. 특히 우수한 방법은 후술한다.
정확히 계산된 경우, 이 z는 δ의 필요한 에러 경계를 만족할 수 있다. 그러나, 도시한 바와 같이 z의 계산에서 발생하는 다수의 산술 라운딩이 필요해진다. 삽입될 수 있는 최대 총 에러는 연산이 발생하는 순 서에 상세히 의존한다. 제7도에 설명된 연산의 특정 선택에 대해서는 약간 지루하지만 간단하여, 정확한 불일치 및 산술 라운딩 비정확성을 고려하는 최종 δ가 A의 제공된 선택용으로 필요한 값 이하로 경계점을 도시한다. 이 정확성은 4개의 IEEE 산술 라운딩 모드 중 하나용으로 보장된다. 많은 CPU 또는 디지탈 신호 프로세서(DSPs)에서 전형적으로 배선된 곱셉-덧셈 명령이 효율적이고 정확하게 이 다항식 계산을 행하는데 매우 유용함에 주의한다. "라운드-투-플러스 무한대 모드(round-to-plus-infinity mode)에서 행할 수 있지만, 최종 라운딩을 행하기 위해 "라운드-투-0(round-to-0)" 또는 "라운드-투-네가티브-무한대(round-to-negative-infinity)" 중 하나로 행하는 것이 편리하다.
정수의 최종 산출은 a'z에 큰 수 M을 더하는 고안에 의한 기본적인 부동 소수점 명령을 효율적으로 사용하여 달성되고, 라운드-투-마이너스-무한대(round-to-minus-infinity) 또는 라운드-투-제로 라운딩 모드(round-to-zero-rounding mode)는 M+a'z 이하에서 가장 높은 정수를 제공할 수 있RH(값 M+a'z는 정확히 정수일 필요는 없다), 라운드-투-플러스-무한대 모드(round-to-plus-infinity mode)는 M+a'z 이상에서 가장 낮은 점수를 제공할 수 있다(값 M+a'z는 정확히 정수일 필요는 없다). 결과에서 M을 빼거나, M에서 결과를 뺌으로써, 정확한 하한 또는 상한이 얻어진다. "라운드-투-0" 또는 "라운드-투-마이너스-무한대 모드"에서, [a/b]=(M+(a+1/2)z)-M,[a/b]=M-(M+(1/2-a)z)이고, 라운드-투-플러스-무한대 모드에서,[a/b]=M-(M+(-a-1/2)z),[a/b]=(M+(a-1/2)z)-M이다.
하나의 최신식 파이프라인 CPU(제9도를 참조하라)에서의 이들 방법은 상술한 바와 같은 종래 기술의 모든 장점을 갖는 250보다 작거나 동일한 정수 a 및 b의 비율의 정확한 하한 및 상한을 계산할 수 있다. 동일값 z는 동일 분모 b를 갖는 모든 부분용으로 사용될 수 있음에 주의한다. 또, 이러한 정수에서, 바이어싱 a의 결과는 이중 문제점에 정확히 나타날 수 있음에 주의한다. 일반적으로, 비트가 정확히 N-비트 정수를 사용하는 것을 원할 경우, 작은 수의 예비 비트는 z의 계산시 발생하는 산술 라운딩을 포함하기 위해 부동 소수점 산술에 필요해진다.
제1-10도를 참조하여 본 발명을 설명한다.
제1도는 본 발명에 의해 제출된 문제점 중 하나를 설명하는 넘버 라인이다. 넘버 라인의 틱은 정수 b에 의한 정수의 정수 나눗셈의 유리 결과의 가능한 값을 도시한다. 이들 결과는 정수 n에 1/b의 배수가 더해진다. 2개의 연속 정수 n과 n+1간에, 가능한 값은 n, n+1/b, n+2/b … n+(b-1)/b까지 및 마지막으로 n+1이다. 넘버 라인 위에는 정확히 가능한 유리 결과가 도시되어 있다. 이들 결과가 정확한 분모로 나누는 대신에 근사값 역수로 곱함으로써 근사적으로만 계산된 경우, 이들 결과는 이들 정확한 점에 대해 어떤 분포로 벌어질 수 있다. 도트 위의 짧은 선 세그먼트는 이 전개의 최대 범위를 표시한다. 근사값 결과가 전체 세그먼트에서 하부 절반 세그먼트 중 하나에 존재할 경우, 다음 트렁케이션은 잘못된 하한 결과를 얻을 수 있다. 예를 들면, 실제 하한이 n이지만, n라인의 왼쪽은 n-1로 트렁케이트될 수 있다. 근사값 결과가 전체 세그먼트에서 상부 절반 세그먼트 중 하나에 존재할 경우, 다음 라운딩은 잘못된 상한 결과를 얻을 수 있다. 예를 들면, n 라인의 오른쪽에 대한 절반 세그먼트에서, 상한은 보정 결과 n 대신에 n+1을 제공한다.
제2도는 본 발명을 설명하는 넘버 라인이다. 넘버 라인의 틱은 전술한 바와 같이 정수 b에 의한 정수의 정수 나눗셈의 유리 결과의 가능한 값을 도시한다. 넘버 라인 위에는 정수에 1/2를 더하여 b로 나누는 정확히 가능한 유리 결과가 도시되어 있다. 이들 결과는 제1도에 참조하여 양 1/2b에 의해 바이어스된다. 정확히 바이어스된 해답 위의 짧은 선 세그먼트는 정확한 역수에 대한 근사값에 관련된 불확실성의 확장을 설명한다. 시프트가 도시한 바와 같이 우측이고, 확장이 1/2b 이하인 경우, 근사값 바이어스 결과 는 다음 최하위 정수로 아래로 라운드되어, 정확한 값 [a/b]를 얻고, 시프트가 좌측이고(도시하지 않음) 확장이 1/2b이하인 경우, 근사값 바이어스 결과는 항상 다음 정수로 위로 라운드되어 정확한 값 [a/b]를 얻는다. 그러므로, 계산이 실패할 수 있는 a의 값은 없다. 충분히 정확한 근사값을 1/b로 형성하는 효과적인 수단과 결합된 시프트는 본 발명에 대한 열쇠이다.
여기에서, 제2도는 아래로 라운드되어 결합된 시프팅 업을 설명하고, 하한 기능을 형성하는데 사용된다. 위로 라운드되어 결합된 시프트 다운은 상한 기능을 형성한다. [x]=[-x]와 같은 다양한 항등원은 설명된 방법의 약간의 변형을 제공하는데 사용될 수 있다.
제3도는 본 발명을 설명하는 하이 레벨 플로우챠트이다. 먼저, y는 스텝 102에서 초기 근사값으로서 1/b로 형성된다. 다음에, z는 스텝 104에서 최종 근사값으로서 1/b로 계산된다. 그 다음, 변형된 분자는 스텝 106에서 형성된다. 최종적으로, 변형된 분자를 갖는 z의 곱은 스텝 108에서 라운드된다.
제4도는 스텝 102를 설명하는 플로우챠트이다. 먼저, r은 스텝 112에서 1/γb의 근사값 역수로서 계산된다. 다음에, y는 스텝 114에서 r2로 계산된다.
제5도는 스텝 104에서 1/b에 대한 최종 근사값으로서 z의 계산을 설명하는 플로우챠트이다. 제5도에서의 2개의 입력값은 박스 120에서는 y이고, 박스 122에서는 b이다. 박스 120에서의 y값은 스텝 114 및 제4도에서 계산된다. 박스 122에서의 b입력값은 분모이다. 값 e는 스텝 124에서 e=1-b*y=(1-by)가 되도록 계산된다. 이 식 및 다음 식에서, 중간 항은 행해지는 연산을 표시하고, 우측 항은 정확한 산술로 얻어질 수 있는 대수학 정확값을 표시한다. 이 값 e는 스텝 126에서 s=e4e=e2및 스텝 128에서 n=e+e*e=e(1+e)를 계산하기 위해 사용된다.
스텝 126으로부터의 값 s는 스텝 130에서 k=y+y*s=y(1+e4)의 계산에 사용된다. 또, 스텝 126으로부터의 s값은 스텝 132에서 q=s*s=e4의 계산에 사용된다. 스텝 132로부터의 값 q는 스텝 134에서 d=1+q*q=1+e8의 계산에 사용된다. 스텝 132로부터의 값 q 및 스텝 128로부터의 n은 스텝 136에서 c=n+n*q=e(1+e)(1+e4)의 계산에 사용된다. 스텝 130으로부터의 값 k 및 스텝 134로부터의 값 d는 스텝 138에서 m=k*d=y(1+e2)(1+e8)의 계산에 사용된다. 최종적으로, 박스 120으로부터의 값 y, 스텝 138로부터의 값 m 및 스텝 136으로부터의 값 c는 스텝140에서 z=y+m*c=y+ye(1+e)(1+e2)(1+e4)(1+e8)의 계산에 사용된다. 정확한 결과는 y(1+e+e2+…+e16)과 동일하고, 설명된 완성용으로 충분히 정확해진다.
제6도는 제3도에서의 스텝 106 및 108을 설명하는 플로우챠트이다. 테스트는 스텝 150에서 라운딩형(하한 또는 상한 기능)으로 행해진다. 라운딩형이 하한 기능을 표시할 경우, R의 값은 스텝 152에서 R=M+(1/2+a)*z로 계산된다. 결과[a/b]는 스텝 156에서 R에서 M을 뺌으로써 계산된다. 상한 라운딩이 스텝 150에서 표시될 경우, R은 스텝 154에서 R=M+(1/2-a)*z가 되도록 계산된다. 결과 [a/b]는 스텝 158에서 M에서 R을 뺌으로써 계산된다. 라운딩을 행하기 위해 설명된 방법은 부동 소수점 산술이 라운드-투-제로 또는 라운드-투-마이너스-무한 모드에서 행해진다고 가정한다. 교호 수단은 이전에 언급하였다.
제7도는 본 발명을 행하는 파이프라인 CPU의 실행을 표시하는 명령 스케쥴링 테이블이다. 테이블은 4개의 칼럼을 갖는다. 칼럼 1은 사이클 수를 포함한다. 칼럼 2는 연산을 포함한다. 설명된 스케쥴은 [a/b],[a'/b]및 [a"/b]을 계산한다. 사이클 20, 25 및 28은 [a'/b]을 계산하는데만 필요한 추가 사이클이고, 사이클 22, 26 및 29는 [a"/b]을 계산하는데만 필요한 추가 사이클임에 주의한다. 제3컬럼은 연산의 결과가 제2칼럼에 표시된 사이클이 다음 연산에 사용될 때를 표시한다. 스케쥴링은 클럭당 단일 문제점 및 모든 명령용 3클럭 잠재를 가정한다. 사이클 0에서, r은 r=1/γb가 되도록 계산된다. 계산의 결과는 사이클에서 사용가능해진다. 그 다음, 사이클3에서, y는 y=r*r이되도록 계산된다. 이 계산의 결과는 사이클 6에 준비되고, e=1-b*y를 계산하는데 사용된다. 파이프라이닝은 사이클 9 및 10에서 명백해지고, 값 e는 사이클 9에서의 값 s 및 사이클 10에서의 값 n을 계산하는데 사용된다. 마지막으로, 제4컬럼은 소정의 연산의 결과를 설명하는 내용을 포함한다. 이 스케쥴은 제5도에 설명된 계산을 행한다. 결과 [a/b]가 사이클 30에서 사용가능해지고, 결과 [a'/b]는 사이클 31에서 사용가능해지며, 결과 [a"/b]는 사이클 32에서 사용가능해짐에 주의한다. 추가로 32 사이클에서의 3개의 결과를 달성하기 위해, 추가적인 10 부동 소수점 연산은 초기화되어, 여분 시간 비용없이 계산될 수 있다. [a/b]만이 계산된 경우, 추가 부동 소수점 연산은 제1 30사이클에서 행해지고, [a'/b] 및 [a"/b]가 계산될 경우, 14 추가 부동 소수점 연산은 제1 31사이클에서 행해질 수 있다. 이들 속도는 전형적으로 이러한 프로세서에서 단일 부동 소수점 이중 정밀도 나눗셈보다 더 빨라진다. 추가로, 이것은 나눗셈 연산용으로 일반적이어서, 다른 부동 소수점 명령의 문제점을 예방한다. 제8도의 하드웨어 블록(104)는 제3도의 스텝(104)를 행하는데 사용된다.
제8도는 제1-7도에 언급한 연산을 행하는데 사용될 수 있는 주문에 의해 설계된 집적 회로를 설명한다. 제8도는 제8도에 명백하게 라벨화된 바와같이 스텝 102 내지 108을 행하는데 사용된 하드웨어를 설명한다. 즉, 제8도의 하드웨어 블럭(102)은 제3도의 스텝 102를 행하는데 사용된다. 제8도의 하드웨어 블럭(104)은 스텝 104를 행하는데 사용된다. 하드웨어 블럭(106)은 도3으로부터 스텝 106을 행하는데 사용된다. 제8도의 하드웨어 부분(108)은 제3도의 스텝 108을 행하는데 사용된다.
제8도에서, 입력 정수 분자 a 및 정수 분모 b는 전도선(162 및 164)룰 통해 제공되고, 하한 연산을 원하는지 상한 연산을 원하는지를 제어하는 신호는 전도선(166)을 통해 제공된다.
하드웨어 부분(102)는 입력값 b의 역수의 초기 근사값 y를 제공하는데 사용될 수 있는 하드웨어를 표시한다. 값 b는 부동 소수점 포맷(170)에서 설명된다. 포맷(170)은 fhigh로서 표시된 하이 오더 비트 및 flow로서 표시된 로우 오더 바이트를 포함하는 지수 부분 e 및 분수 부분을 갖는다. 지수 부분 e는 yo의 지수 부분을 구성하는데 사용되고, yo는 b의 역수값의 초기 근사값이다. 포맷(170)의 분수 부분의 fhigh 부분은 메모리에 저장된 테이블을 액세스하는데 사용된다. 메모리에 저장된 테이블(174)는 전형적으로 ROM 메모리 또는 RAM 메모리에 제공된다. 테이블은 yo의 분수 부분 fhigh의 하이 오더 비트를 제공할 수 있고, 분수 부분의 하부 부분은 제8도의 포맷(176)을 통해 설명한 바와 같이 0으로 채워진다. 포맷(176)은 도전체(162)을 통해 제공된 입력 b의 역수의 초기 근사값인 값 yo의 지수 및 분수 부분을 설명한다. yo값은 도전체(178)을 통해 하드웨어의 다음 부분에 제공된다.
yo값은 하드웨어 부분(104)을 통해 반복적으로 처리되거나 파이프라인 처리되어, 상술한 오차 내에서 정확한 1/b의 최종 근사값이 된다. 하드웨어 부분(104)는 도전체(178)을 통한 값 yo 및 도전체(162)를 통한 값 b를 입력할 때 억셉트한다. 이들 입력값이 도전체(162 및 178)에 의해 제공될 때, 단일 하드웨어 유닛은 더 정확한 역수 근사값의
점차적인 계산을 반복적으로 행할 수 있거나, 다수의 하드웨어 유닛의 파이프라인 세트는 값 b의 역수의 더 정확한 근사값의 연속 파이프라인 연산으로 계산할 수 있다. 설명된 특별한 완성은 쉽게 파이프라인 될 수 있는 간단한 공식을 사용한다. 스테이지가 하드웨어를 분배할 경우, 전자는 후자보다 하향 정밀도 산술을 사용할 수 있다. 스테이지가 반복적으로 동일 하드웨어를 사용할 경우, 파워는 계산 부분만을 행함으로써 초기 행함으로써 초기 스테이지로 감소될 수 있다.
b의 역수의 더 정확한 근사값은 하드웨어 다이아그램(104)에서 설명한 바와 같이 행해진다. 파이프라인의 제1스테이지 및 제1반복 스텝에서, 하드웨어(180)은 하드웨어(182)를 통해 에러항을 계산하는데 사용된 다. 에러항 및 y0의 값은 사용하면, b의 더 정확한 역수 근사값은 하드웨어(184)를 통해 계산된다. 다음 스텝 또는 스테이지(180')을 통해 설명된 바와 같이 처리하는 반복 프로세싱 또는 파이프라인 프로세싱을 사용하면, 180에서 설명한 것과 유사한 연산은 값 b의 역수 근사값의 정밀도에 대해 행해진다. 상술한 정밀도 오차가 달성되도록 하드웨어(104) 내에 배치된 파이프 라인의 충분한 반복 또는 충분한 스테이지가 행해질 때, 출력 z는 도전체(186)을 통해 제공된다. 하드웨어 부분(102 및 104)와 병행하여, 입력 정수 분자 값 a는 하드웨어(106)을 통해 처리된다. 하드웨어 부분(106 및 108)은 도전체(166)을 통해 하한 및 상한 제어 정보를 받아들인다. 라인(166) 상의 신호는 하한 연산이 행해지는지 상한 연산이 행해지는지를 제어하는데 사용된다. 스텝 106에서, 이 제어는 a값이 어떻게 바이어스되는지(하한에 대해 포지티브(+) 및 상한에 대해 네가티브(-))를 결정하는데 사용된다. 바이어스된 값 R은 도전체(188)을 통해 하드웨어(108)에 제공된다. 그 다음, 하드웨어(108)은 도전체(186)을 통해 제공된 값 z와 도전체(188)을 통해 제공된 값 R 사이의 곱셈 연산을 행한다. 그 다음, 곱셈의 곱은 다음 최하위 정수로 라운드된다. 도전체(166)으로부터의 제어 신호는 정수(하한에 대해서는 no, 상한에 대해서는 yes)의 신호를 변경하는지를 결정한다. 하드웨어(108)의 출력은 도전체(168)을 통해 제공된 정수몫 결과값이다. 제3도의 구조에 따른 제8도의 분할은 간단하여 b값이 변경되지 않을 경우 z값을 보유하고, b값이 최근에 사용될 경우 캐쉬로부터 z값을 얻는다. 전술한 바와 같이, 수학 항등원은 완성에 대해 최소 변경을 갖는 동일 기능성을 제공하는데 사용될 수 있다.
제9도 및 제10도는 여기에서 토론한 바와 같이 정수 나눗셈 연산을 행하는데 사용된 데이터 처리 시스템을 설명한다. 제9도 및 재10도는 32 비트 어드레스 버스(272) 및 64 비트 데이터 버스(274)를 통해 외부 메모리(280)에 결합된 중앙 처리 장치(CPU)부(200)을 설명한다. 중앙 처리 장치(CPU:200)은 페처 유닛(212)을 갖는다. 페처 유닛(212)는 명령 메모리 관리 유닛(IMMU:250)을 사용하는 128 비트 버스(258)을 통해 16 키로비트 명령 캐쉬(254)로부터의 컴퓨터 명령을 페처한다. 페처유닛(212)는 제10도에 도시한 바와 같이 8 명령 큐(214)를 채우는 명령을 제공한다. 유닛(212)는 큐(214)가 CPU부(200)에 의해 처리될 수 있는 명령으로 채워지는 것을 보장하기 위한 시간에서 4개의 명령인 페처를 속행한다. 분기 예보 정보를 포함하는 분기 처리 유닛(216)은 명령의 적당한 실행 플로가 명령 큐(214) 내에 보유되도록 패취(212)을 제어하는데 사용된다. 디스패취 유닛(218)은 제9도 및 제10도의 중앙 부분에 설명한 바와 같이 명령을 디코드하고 근사값 실행 유닛에 대한 명령을 문제화하는데 제공된다. 디스페처 유닛(218)은 제9도 및 제10도의 중간 부분에 설명된 실행유닛의 4형태 중 하나에 대한 디코드된 명령을 제공할 수 있다. 이들 4가지 형태는 부동 소수점 유닛(240), 로드/저장 유닛(234), 단일 사이클 정수 유닛(228) 및 다수 사이클 정수 유닛(224)이다. 유닛(218, 216, 214 및 212)는 도 9 및 10의 많은 실행 유닛 중 하나에 대한 명령의 연속 스트림을 제공하는 더 큰 명령 유닛(210)의 모든 부분이다.
명령은 제9도 및 제10도에서 설명한 바와 같이 128 비트 버스(220)을 통해 보류부(222, 226, 232 및 238)에 제공된다. 보류부(222, 226, 232 및 238)의 각각은 하나 이상의 실행 유닛(224, 228, 234 및 240)을 공급한다. 이들 실행 유닛(224, 228, 234 및 240)은 명령 유닛(210)에 의해 제공된 디코드된 명령을 실행할 수 있다. 명령 실행시, GPR(General Purpose Register) 파일 영역(230)에 저장된 다양한 일반 목적 레지스터 및 부동 소수점 레지스터 파일 영역(236)에 저장된 다양한 부동 소수점 레지스터는 실행 유닛에 의해 액세스될 수 있다. 추가로, 로드/저장 유닛(234)는 저장 큐 및 마무리 로드 큐(244), 데이터 캐쉬 태그(62)와 관련된 D(data)캐쉬(264) 및 데이터 캐쉬 메모리 관리 유닛(260)을 액세스할 수 있다. 로드/저장 유닛(234)는 처리 유닛(200)의 내부 데이터의 보전을 유지하기 위해 이 정보를 액세스할 수 있다.
버스 인터페이스 유닛(270)은 외부 버스(272 및 274)에 인터페이스 된다. 버스 인터페이스 유닛(270)은 명령을 명령 태그(252)와 관련된 I(명령) 캐쉬(254)로 배치한다. 또, 데이터는 버스 인터페이스 유닛(270)을 통해 외부 메모리로 판독 되고, D(data) 캐쉬(264)내에 배치된다. 또, 명령은 전술한 바와 같이 명령 메모리 경영 유닛(MMU:250)을 통해 명령 페취 유닛(212)에 제공된다. 명령이 명령유닛을 통해 제공되고 실행 유닛(224, 228, 234 및 240)을 통해 적절하게 처리될 때, 명령은 완성 유닛(242)로 퇴각된다. 완성 유닛(242)는 실행 고장 및 오예보 분기를 보상하고, 일반적으로 프로세서(200) 내의 파이프라인 실행 시퀀스의 끝이다. 32 비트 어드레스 버스(272)와 64 비트 데이터 버스(274)는 외부 메모리(280) 및 컴퓨터 판독가능 매체(286)에 결합된다. 외부 메모리(280)은 하드웨어 유닛(200)내의 특정 연산을 행하는데 사용된 4개 세트의 명령을 포함한다. 특히, 메모리(280)은 제3도의 스텝 102, 104, 106 및 108에 각각 해당하는 4개의 소프트웨어 프로그램 부분(102, 104, 106 및 108)을 포함한다. 그러므로, 외부 메모리(280)을 억세스함으로써 CPU(200)은 도1 내지 도7를 통해 여기에 토론한 바와 같이 정수 나눗셈 연산을 행할 수 있다. 메모리(280)에 저장된 소프트웨어 부분(102, 104, 106, 108)은 전형적으로 EPROM, EEPROM, ROM, DRAM, SRAM, 자기 기억 장치, 테이프 기억 장치, 광 기억 장치, 콤팩트 디스크(CDs), 플래쉬 메모리 기억 장치, 네트워크 기억 장치, 통신 링크를 교차하는 다른 컴퓨터 또는 컴퓨터 실행가능 코드 또는 컴퓨터 데이터용 유사 저장 디바이스와 같은 컴퓨터 판독가능 매체(286)으로부터 메모리(280)로 로드된다.
[발명의 효과]
발명의 상세한 설명의 항에서 없는 구체적인 실시 상태 또는 실시예는 어디까지나 본 발명의 기술 내용을 명백하게 하는 것으로, 그와 같은 구체 예에서만 한정하여 협의로 해석되어야 하는 것은 아니고, 본 발명의 정신과 다음에 기재하는 특허 청구 사항의 범위 내에서 여러 가지로 변경하여 실시할 수 있다.

Claims (5)

  1. 정수 분자(a) 및 정수 분모(b)의 정수 몫을 형성하는 방법에 있어서, 정수 나눗셈 명령과 함께 상기 정수 분자(a) 및 상기 정수 분모(b)를 중앙 처리 장치(CPU:200)에 제공하는 단계; 상기 중앙 처리 장치(CPU:200)을 사용하여 상기 정수 분모(b)의 역수의 초기 근사값(y)를 결정하는 단계(102); 상기 정수 분모(b)의 역수의 더 정확한 근사값(z)를 형성하기 위해 상기 초기 근사값(y)를 리파인(refining)하는 단계(104); 바이어스 분자(a')를 형성하기 위해 바이어스 값(p)에 의한 상기 정수 분자(a)를 바이어스하는 단계(106); 및 상기 더 정확한 근사값(Z)에 상기 CPU(200)내에 문제화 된 제어 신호에 응답하여 상기 바이어스된 분자(a')를 곱하고, a/b의 정수 몫이 정수 값임을 보장하기 위해 상기 CPU(200)내의 라운딩 연산을 행함으로써 a/b의 정수 몫을 결정하는 단계(108)을 포함하는 것을 특징으로 하는 정수 몫 형성 방법.
  2. 파이프라인 된 부동 소수점 프로세서에서 정수 나눗셈을 행하는 방법에 있어서, 상기 파이프라인된 부동 소수점 프로세서(240)에 대한 정수 분자(a) 및 정수 분모(b)를 제공하는 단계; 상기 파이프라인된 부동 소수점 프로세서(240)을 통해 y1/b와 같이 상기 정수 분모(b)의 역수의 초기 근사값(y)를 결정하는 단계(102); 상기 파이프라인된 부동 소수점 프로세서(240)을 통해 e=1-b*y에서와 같이 상기 초기 근사값(y)의 에러값(e)를 발견하는 단계(124); 상기 부동 소수점 프로세서(240) 내의 적어도 한 번의 반복을 통해 상기 분모(b)의 역수에 대해 더 정확한 근사값(z)을 반복적으로 결정하는 단계(140)로, 상기 반복은 상기 더 정확한 에러 근사값(z)가 특정한 에러오차(d)내에 존재할 때까지 행해지고, 상기 더 정확한 에러 근사값(z)는 상기 초기 근사값(y) 및 상기 에러값(e)의 함수인 결정 단계; 바이어스 된 분자(a')에 대한 상기 정수 분자(a)를 바이어싱하는 단계로, 여기에서 a'=±(a+p)에서 |p|는 하한 연산에 대해 1.0이하의 분수값이고, a'=±(a-p)에서 |p|는 하한 연산에 대해 1.0 이하의 분수값인 바이어싱 단계; 상기 정수 분 자(a')에 상기 더 정확한 근사값(z)를 곱함으로써 예비 결과를 결정하는 단계(106); 및 상기 정수 값에 대한 상기 예비 결과를 라운드하는 단계(108)를 포함하는 것을 특징으로 하는 정수 나눗셈을 행하는 방법.
  3. 정수 분모(b)의 초기 근사값(y)를 결정하는(102) 부동 소수점 수단(240); 상기 정수 분모(b)의 역수의 더 정확한 근사값(z)를 형성하기 위해 상기 초기 근사값(y)를 정련하는 (104) 부동 소수점 수단(240); 바이어스 된 분자(a')를 형성하기 위해 바이어스값(p)에 의한 상기 분자(a)를 바이어스 하는(106) 부동 소수점 수단(240); 및 상기 더 정확한 근사값(z)에 상기 바이어스 된 분자(a')를 곱하고, a/b의 정수 몫이 정수값임을 보장하기 위해 상기 CPU(200) 내에서 라운딩 연산을 행함으로써 a/b의 정수 몫을 결정하는(180) 부동 소수점 수단(240)을 포함하는 것을 특징으로 하는 정수 디바이더.
  4. 정수 분모(b)의 역수의 초기 근사값(b)를 결정하는 (102) 적어도 한개의 컴퓨터 명령; 상기 정수 분모(b)의 역수의 더 정확한 근사값(z)를 형성하기 위해 상기 초기 근사값(y)를 정련하는(105) 적어도 한개의 컴퓨터 명령; 바이어 된 분자(a')를 형성하기 위해 정수 분자(a)를 바이어스값(p)로 바이어스하는(106) 적어도 한개의 컴퓨터 명령; 및 상기 더 정확한 근사값(z)를 상기 바이어스 된 분자(a')에 곱하고, a/b의 정수 몫이 정수값임을 보장하기 위해 상기 CPU(200) 내에서 연산을 라운딩함으로써 (108) a/b의 정수 몫을 결정하는 적어도 한개의 컴퓨터 명령을 포함하는 컴퓨터 판독가능한 매체(286)에 저장된 것을 특징으로 하는 정수 디바이더.
  5. 정수 분자(a) 및 정수 분모(b)의 정수 몫을 형성하는 장치에 있어서, 파이프라인된 부동 소수점 수학 회로를 포함하는 중앙 처리 장치(CPU:200); 및 하나 이상의 컴퓨터 명령을 포함하는 상기 중앙 처리 장치(CPU:200)에 결합된 메모리를 포함하며, 상기 하나 이상의 컴퓨터 명령은 상기 CPU(200)에 의해 억세스되며, 파이프라인된 부동 소수점 수학 회로를 사용하여 상기 정수 분모(b)의 역수의 초기 근사값(y)를 결정하는 단계(102); 파이프라인 된 부동 소수점 수학 회로를 사용하여 상기 정수 분모(b)의 역수의 더 정확한 근사값(y)를 형성하기 위해 상기 초기 근사값(y)를 정련하는 단계(104); 파이프라인 된 부동 소수점 수학 회로를 사용하여 바이어스 분자(a')를 형성하기 위해 바이어스 값(p)에 의한 상기 정수 분자(a) 를 바이어스 하는 단계(106) 및 상기 CPU(200) 내에 문제화된 제어 신호에 응답하여 상기 바이어스 된 분자(a') 를 곱하고, a/b의 정수 몫이 정수 값임을 보장하기 위해 상기 CPU 내에서 라운딩 연산을 행함으로써 a/b의 정수 몫을 결정하는 단계(108)의 연산을 실행하도록 디코드되는 것을 특징으로 하는 정수 몫 형성 장치.
    ※ 참고사항 : 최초출원 내용에 의하여 공개하는 것임.
KR1019970036389A 1996-07-25 1997-07-25 부동소수점하드웨어를사용하여마이크로프로세서정수나눗셈연산들을실행하기위한방법및장치 KR100528269B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US685,995 1996-07-25
US08/685,995 US5768170A (en) 1996-07-25 1996-07-25 Method and apparatus for performing microprocessor integer division operations using floating point hardware

Publications (2)

Publication Number Publication Date
KR980010751A true KR980010751A (ko) 1998-04-30
KR100528269B1 KR100528269B1 (ko) 2006-02-01

Family

ID=24754483

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970036389A KR100528269B1 (ko) 1996-07-25 1997-07-25 부동소수점하드웨어를사용하여마이크로프로세서정수나눗셈연산들을실행하기위한방법및장치

Country Status (5)

Country Link
US (1) US5768170A (ko)
EP (1) EP0821303A3 (ko)
JP (1) JPH1078863A (ko)
KR (1) KR100528269B1 (ko)
CN (1) CN1175730A (ko)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5973705A (en) * 1997-04-24 1999-10-26 International Business Machines Corporation Geometry pipeline implemented on a SIMD machine
JPH11242585A (ja) * 1998-02-24 1999-09-07 Sony Corp 除算回路およびグラフィック演算装置
US6247116B1 (en) 1998-04-30 2001-06-12 Intel Corporation Conversion from packed floating point data to packed 16-bit integer data in different architectural registers
US6263426B1 (en) 1998-04-30 2001-07-17 Intel Corporation Conversion from packed floating point data to packed 8-bit integer data in different architectural registers
US6292815B1 (en) * 1998-04-30 2001-09-18 Intel Corporation Data conversion between floating point packed format and integer scalar format
US6266769B1 (en) 1998-04-30 2001-07-24 Intel Corporation Conversion between packed floating point data and packed 32-bit integer data in different architectural registers
US6282554B1 (en) 1998-04-30 2001-08-28 Intel Corporation Method and apparatus for floating point operations and format conversion operations
US6175907B1 (en) * 1998-07-17 2001-01-16 Ip First, L.L.C Apparatus and method for fast square root calculation within a microprocessor
US6341300B1 (en) 1999-01-29 2002-01-22 Sun Microsystems, Inc. Parallel fixed point square root and reciprocal square root computation unit in a processor
US6384748B1 (en) 1998-12-21 2002-05-07 Base One International Corporation Method of encoding numeric data and manipulating the same
US6351760B1 (en) 1999-01-29 2002-02-26 Sun Microsystems, Inc. Division unit in a processor using a piece-wise quadratic approximation technique
US6732259B1 (en) 1999-07-30 2004-05-04 Mips Technologies, Inc. Processor having a conditional branch extension of an instruction set architecture
US7242414B1 (en) 1999-07-30 2007-07-10 Mips Technologies, Inc. Processor having a compare extension of an instruction set architecture
JP3447614B2 (ja) 1999-05-31 2003-09-16 株式会社東芝 分数演算器、グラフィック用セットアップエンジン、分数演算方法、及び機械読み出し可能な記憶媒体
US6697832B1 (en) 1999-07-30 2004-02-24 Mips Technologies, Inc. Floating-point processor with improved intermediate result handling
US6912559B1 (en) 1999-07-30 2005-06-28 Mips Technologies, Inc. System and method for improving the accuracy of reciprocal square root operations performed by a floating-point unit
US7346643B1 (en) * 1999-07-30 2008-03-18 Mips Technologies, Inc. Processor with improved accuracy for multiply-add operations
US6631392B1 (en) 1999-07-30 2003-10-07 Mips Technologies, Inc. Method and apparatus for predicting floating-point exceptions
KR100429195B1 (ko) * 2000-03-16 2004-04-28 엘지전자 주식회사 근사값을 이용한 나누기 방법
US6963895B1 (en) * 2000-05-01 2005-11-08 Raza Microelectronics, Inc. Floating point pipeline method and circuit for fast inverse square root calculations
US6996596B1 (en) 2000-05-23 2006-02-07 Mips Technologies, Inc. Floating-point processor with operating mode having improved accuracy and high performance
GB2386984B (en) * 2002-03-28 2005-07-20 David Robinson A data processing system and method for performing a mathematical operation on multi bit binary integer numbers using floating point arithmetic
CN1296816C (zh) * 2002-05-27 2007-01-24 华邦电子股份有限公司 以少位处理器作多位求方根的方法
KR100480724B1 (ko) * 2002-10-31 2005-04-07 엘지전자 주식회사 가변 스텝사이즈 적응형 역수기
US7523152B2 (en) * 2002-12-26 2009-04-21 Intel Corporation Methods for supporting extended precision integer divide macroinstructions in a processor
JP3755602B2 (ja) * 2003-03-04 2006-03-15 ソニー株式会社 信号処理装置、信用処理装置用プログラム、信号処理装置用プログラムを記録した記録媒体、及び信号処理方法
US7421139B2 (en) * 2004-10-07 2008-09-02 Infoprint Solutions Company, Llc Reducing errors in performance sensitive transformations
CN101036113B (zh) * 2004-10-15 2010-11-03 日本电信电话株式会社 信息编码方法、解码方法、利用这些方法的装置
US7747667B2 (en) * 2005-02-16 2010-06-29 Arm Limited Data processing apparatus and method for determining an initial estimate of a result value of a reciprocal operation
US8015228B2 (en) 2005-02-16 2011-09-06 Arm Limited Data processing apparatus and method for performing a reciprocal operation on an input value to produce a result value
US7676535B2 (en) * 2005-09-28 2010-03-09 Intel Corporation Enhanced floating-point unit for extended functions
KR101718817B1 (ko) * 2010-11-17 2017-03-29 삼성전자주식회사 부동 소수점 데이터와 정수형 데이터 간의 변환장치 및 그 방법
GB201117318D0 (en) 2011-10-06 2011-11-16 Imagination Tech Ltd Method and apparatus for use in the design and manufacture of integrated circuits
CN104375800A (zh) * 2014-12-09 2015-02-25 国网重庆市电力公司电力科学研究院 一种嵌入式系统的浮点除法运算方法、系统和嵌入式系统
CN105302520B (zh) * 2015-10-16 2018-03-23 北京中科汉天下电子技术有限公司 一种倒数运算的求解方法及系统
US10313118B2 (en) 2016-10-27 2019-06-04 Cisco Technology, Inc. Authenticated access to cacheable sensor information in information centric data network

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60142738A (ja) * 1983-12-30 1985-07-27 Hitachi Ltd 内挿近似を使用する除算装置
JPS60164837A (ja) * 1984-02-07 1985-08-27 Nec Corp 除算装置
JPS61243532A (ja) * 1985-04-22 1986-10-29 Toshiba Corp 演算装置
US4878190A (en) * 1988-01-29 1989-10-31 Texas Instruments Incorporated Floating point/integer processor with divide and square root functions
JP2578482B2 (ja) * 1988-08-15 1997-02-05 富士通株式会社 浮動小数点演算器
US5249149A (en) * 1989-01-13 1993-09-28 International Business Machines Corporation Method and apparatus for performining floating point division
US5206823A (en) * 1990-12-13 1993-04-27 Micron Technology, Inc. Apparatus to perform Newton iterations for reciprocal and reciprocal square root
US5309353A (en) * 1992-10-02 1994-05-03 Westinghouse Electric Corp. Multiple reference frame controller for active filters and power line conditioners
US5341321A (en) * 1993-05-05 1994-08-23 Hewlett-Packard Company Floating point arithmetic unit using modified Newton-Raphson technique for division and square root
US5563818A (en) * 1994-12-12 1996-10-08 International Business Machines Corporation Method and system for performing floating-point division using selected approximation values

Also Published As

Publication number Publication date
EP0821303A2 (en) 1998-01-28
JPH1078863A (ja) 1998-03-24
EP0821303A3 (en) 1998-03-11
KR100528269B1 (ko) 2006-02-01
US5768170A (en) 1998-06-16
CN1175730A (zh) 1998-03-11

Similar Documents

Publication Publication Date Title
KR100528269B1 (ko) 부동소수점하드웨어를사용하여마이크로프로세서정수나눗셈연산들을실행하기위한방법및장치
Pineiro et al. High-speed function approximation using a minimax quadratic interpolator
CN107077415B (zh) 用于执行转换运算的装置和方法
US5631859A (en) Floating point arithmetic unit having logic for quad precision arithmetic
US6360241B1 (en) Computer method and apparatus for division and square root operations using signed digit
US9753695B2 (en) Datapath circuit for digital signal processors
US6138135A (en) Propagating NaNs during high precision calculations using lesser precision hardware
US6223192B1 (en) Bipartite look-up table with output values having minimized absolute error
JPH10510383A (ja) シフト手段を使用した累乗回路および使用方法
JPH04227535A (ja) 除算を行なう装置
TW201216152A (en) Vector floating point argument reduction
US20130185345A1 (en) Algebraic processor
US20080208945A1 (en) Method to compute an approximation to the reciprocal of the square root of a floating point number in ieee format
US6009450A (en) Finite field inverse circuit
CN101874237A (zh) 用于执行算术运算的大小检测的设备和方法
JPH07168697A (ja) 倍精度除算回路および方法
Knofel Fast hardware units for the computation of accurate dot products
US20060184594A1 (en) Data processing apparatus and method for determining an initial estimate of a result value of a reciprocal operation
EP1335278A2 (en) Higher precision divide and square root approximations
US6674435B1 (en) Fast, symmetric, integer bezier curve to polygon conversion
US6598063B1 (en) Fast calculation of (A/B)K by a parallel floating-point processor
EP1025485B1 (en) Multifunction bipartite look-up table
US5648924A (en) Method and apparatus for finding arctangents
US5655139A (en) Execution unit architecture to support X86 instruction set and X86 segmented addressing
US5646876A (en) Method and apparatus for reducing rounding error when evaluating binary floating point polynomials

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
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: 20121023

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20131024

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee