KR20130098328A - 부동 소수점 제산을 수행하기 위한 방법 및 장치 - Google Patents

부동 소수점 제산을 수행하기 위한 방법 및 장치 Download PDF

Info

Publication number
KR20130098328A
KR20130098328A KR1020137005841A KR20137005841A KR20130098328A KR 20130098328 A KR20130098328 A KR 20130098328A KR 1020137005841 A KR1020137005841 A KR 1020137005841A KR 20137005841 A KR20137005841 A KR 20137005841A KR 20130098328 A KR20130098328 A KR 20130098328A
Authority
KR
South Korea
Prior art keywords
floating point
point division
logic
output correction
input
Prior art date
Application number
KR1020137005841A
Other languages
English (en)
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 KR20130098328A publication Critical patent/KR20130098328A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/487Multiplying; Dividing
    • G06F7/4873Dividing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision

Landscapes

  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Software Systems (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Nonlinear Science (AREA)
  • Complex Calculations (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

입력 체크/출력 보정 부동 소수점 제산 로직과 부동 소수점 제산 픽스업 명령(예를 들어, 명령, 커맨드, 신호 또는 기타 인디케이터)을 이용하여 부동 소수점 제산을 수행하는 방법 및 장치에 관한 것이다. 일례로, 장치는, 입력 체크/출력 보정 부동 소수점 제산 로직을 포함하는 부동 소수점 산술 로직 유닛(ALU)을 구비하는 프로세서를 포함한다. 입력 체크/출력 보정 부동 소수점 제산 로직은, 입력 체크/출력 보정 부동 소수점 제산 로직이 분자를 나타내는 제1 입력과 분모를 나타내는 제2 입력을 검사하여 부동 소수점 계산의 특별한 경우가 발생하는지 여부를 결정하게 하는, 부동 소수점 ALU에 의해 실행 가능한 부동 소수점 제산 픽스업 명령에 응답한다. 또한, 부동 소수점 제산 픽스업 명령은, 입력 체크/출력 보정 부동 소수점 제산 로직이 후보 몫을 나타내는 제3 입력 및 결정된 부동 소수점 계산의 특별한 경우에 기초하여 부동 소수점 제산 결과를 나타내는 출력을 제공하게 한다.

Description

부동 소수점 제산을 수행하기 위한 방법 및 장치{METHOD AND APPARATUS FOR PERFORMING FLOATING-POINT DIVISION}
본 발명은 일반적으로 부동 소수점 제산을 수행하기 위한 방법 및 장치에 관한 것이다.
부동 소수점 숫자들(floating-point numbers)의 제산은 컴퓨터 그래픽 및 넌그래픽 컴퓨터 처리 및 계산 등의 애플리케이션들을 위한 서로 다른 컴퓨터 아키텍처들에서 다양한 방식으로 다루어져 왔다. 예를 들어, 부동 소수점 제산은, 3차원(3D) 그래픽 모델링 및 렌더링에서의 역행렬을 계산하여 표시 스크린에 출력할 3D 그래픽 오브젝트를 생성하는 데 사용되거나, 화상 데이터를 평탄화하고 잡음을 제거하기 위한 평균화(평균) 필터에 의해 사용된다. 또한, 부동 소수점 제산은, 고유벡터 및 고유값의 계산, 선형 함수나 다항식의 내삽, 및 초월 함수, 유리 함수, 편미분 방정식의 계산 등의 수치 알고리즘에서 사용된다.
많은 명령 세트 아키텍처(instruction set architecture: ISA)는 부동 소수점 제산 연산을 수행하기 위한 컴퓨터 명령(들)을 규정한다. 부동 소수점 산술에 대한 IEEE 표준의 일부(IEEE 754, 이하 "IEEE Std. 754"라 칭함)로서, 부동 소수점 제산 연산이 다양한 양태들로 규정되어 있다. IEEE Std. 754에 부합하는 ISA에 대하여, 몫을 수치 계산하는 것에 더하여, 분자의 무한값 또는 부정(indeterminate)값, 분모의 무한값, 및 부정값 또는 제로값 등의 부동 소수점 제산의 특별한 경우를 식별해서 적절히 처리해야 하며, 이는 상당한 논리 연산을 필요로 할 수 있다.
이러한 부동 소수점 제산을 위한 명령은 논리 회로와 마이크로 코드를 이용하여 완전하게 구현될 수 있다. 도 1은 중앙 처리 유닛(CPU)(100)에서 부동 소수점 제산 연산을 수행하는 일례를 도시한다. CPU(100)는 전용 부동 소수점 제산기(104)를 구비한 부동 소수점 산술 로직 유닛(arithmetic logic unit: ALU)(102)을 포함한다. 부동 소수점 ALU(102)는 메모리(108)에 저장된 DIVPD(packed double-precision floating-point divide) 명령(106)을 실행할 수 있으며, 이러한 명령이 CPU(100)에 의해 실행되면, 이 명령에 의해 부동 소수점 제산기(104)가 부동 소수점 제산 연산을 수행할 수 있다. 부동 소수점 제산 연산의 분자와 분모는 레지스터(110)로부터 판독될 수 있고, 그 결과를 레지스터(110)에 기입할 수 있다. 구체적으로, 특별한 경우 체크와 보정 및 몫의 수치 계산의 함수 모두는 DIVPD 명령(106)을 이용하는 부동 소수점 제산기(104)에 의해 구현된다. 다른 부동 소수점 연산들에 비해 부동 소수점 제산의 복잡한 성질로 인해, 부동 소수점 제산기(104)는 많은 트랜지스터로 구성되며, 이에 따라 CPU(100)의 다이 면적과 비용을 증가시킨다. 특히, 부동 소수점 제산기(104)의 개수가 CPU(100) 내의 "코어"의 개수에 의존하므로, 이러한 문제는, 동일한 부동 소수점 제산기(104)와 명령(106)을 그래픽 처리 유닛(GPU)이나 GPU에서의 범용 계산(GPGPU) 설계에 적용하려 하면 GPU 또는 GPGPU가 통상적으로 CPU에 비해 병렬 스트림 처리용으로 많은 "코어"들을 갖는다는 사실 때문에, 더욱 악화된다.
한편, 전용 논리 회로와 명령을 이용하여 부동 소수점 제산 연산을 완전히 구현하는 문제점을 인식하는 일부 컴퓨터 아키텍처에서는, 전용 부동 소수점 제산 명령을 완벽하게 생략하고 있다. 대신에, 이러한 컴퓨터 아키텍처는, 전용 부동 소수점 제산 명령과 부동 소수점 제산기를 사용하지 않는 Newton-Raphson 법 등의 알려져 있는 반복 알고리즘을 이용하여 부동 소수점 제산 연산을 구현한다. 예를 들어, 도 2는, 전용 부동 소수점 제산기 없이 하나 이상의 부동 소수점 ALU(212) 내의 하나 이상의 부동 소수점 가산기/감산기(208) 및 부동 소수점 승산기(210)와 함께, 적어도 부동 소수점 가산/감산 명령(204)과 부동 소수점 승산 명령(206)을 포함하는 메모리(202)에 저장된 명령들을 이용하여, GPU(200)에서 부동 소수점 제산 연산을 구현하는 일례를 도시한다. 이 예에서, 부동 소수점 제산의 몫은 빠르게 수렴하는 부동 소수점 가산/감산 및 승산 연산들을 이용하여 연속 근사 면에서 수치 계산된다. 도 1에 도시한 전용 부동 소수점 제산기(104)와 명령(106)에 비해, 도 2에 도시한 부동 소수점 가산기/감산기(208)와 부동 소수점 승산기(210)는 덜 복잡하다. 따라서, 이러한 컴퓨터 아키텍처가 부동 소수점 제산 연산 면에서 더욱 비용 효과적이다. 그러나, 반복 알고리즘은 부동 소수점 제산의 몫을 수치 계산할 뿐이다. 전술한 바와 같이, IEEE Std. 754에 부합하도록, 부동 소수점 제산의 특별한 경우를 식별하여 다루는 데에는 논리 명령(214) 및 조건 명령(예를 들어, 조건 이동, 조건 분기, 및 조건 트랩) 등의 추가 명령이 필요하다. 이 경우, 특별 경우 체크 및 보정의 특징을 더함으로써 부동 소수점 제산 연산의 실행 시간이 상당히 증가하게 된다. 예를 들어, 도 2의 부동 소수점 제산 연산은, 실행을 위해 최대 30 클록 사이클이 걸리는 최대 30개의 추가 조건부 및 논리 명령들(214)을 필요로 할 수 있다. 이에 따라, 도 2에서는 설계 복잡도와 비용이 감소되지만, IEEE Std. 754에서의 특별한 경우를 다루는 요건에 부합하도록 부동 소수점 제산 연산의 실행 시간은 증가한다.
게다가, 부동 소수점 제산 결과를 제공하는 것에 더하여, IEEE Std. 754는 또한 예외가 발생하는 경우 신호로 알려지는 예외(예를 들어, 무효 연산, 0에 의한 제산 등)를 규정한다. 신호는, 명령 실행의 정상 흐름을 인터럽트하는 트랩 시퀀스의 처리 활성화 등의, 표시된 예외에 대한 디폴트 또는 대체 핸들링을 호출한다. 예외의 각 종류마다, 구현예에서는 대응하는 상태 플래그를 제공한다. 일부 컴퓨터 아키텍처는, 특별 경우 체크 및 보정이라는 특징을 지니고 있지만, 예외 상태 플래그를 갖지 않음으로 인해, IEEE Std. 754에 완전히 부합하지 못한다.
이에 따라, 부동 소수점 제산을 수행하는 개선된 방법과 장치가 필요하다.
다음에 따르는 상세한 설명을 유사한 참조 번호들이 유사한 요소들을 가리키는 첨부 도면과 함께 고려할 때 실시예들을 더욱 쉽게 이해할 수 있다.
도 1은 중앙 처리 유닛에서 부동 소수점 제산 연산을 구현하는 일례를 도시한 블록도이다.
도 2는 그래픽 처리 유닛에서 부동 소수점 제산 연산을 구현하는 일례를 도시한 블록도이다.
도 3은 본 개시 내용에서 설명한 일 실시예에 따라 입력 체크/출력 보정 부동 소수점 제산 로직을 포함하는 장치의 일례를 도시한 블록도이다.
도 4는 도 3에 도시한 입력 체크/출력 보정 부동 소수점 제산 로직의 일례를 도시한 블록도이다.
도 5는 도 3에 도시한 부동 소수점 제산 픽스업(fix-up) 명령의 예시적인 명령 포맷이다.
도 6은 도 3에 도시한 부동 소수점 제산 픽스업 명령의 다른 예시적인 명령 포맷이다.
도 7은 도 3에 도시한 임의 비트 패턴의 예시적인 포맷이다.
도 8은 본 개시 내용에서 설명한 일 실시예에 따라 부동 소수점 제산을 수행하는 방법의 일례를 표시한 흐름도이다.
도 9는 부동 소수점 제산을 수행하는 방법의 다른 일례를 표시한 흐름도이다.
도 10은 부동 소수점 제산을 수행하는 방법의 또 다른 일례를 표시한 흐름도이다.
간략하게, 일례로, 방법 및 장치는, 입력 체크/출력 보정 부동 소수점 제산 로직으로 하여금 분자를 나타내는 제1 입력 및 분모를 나타내는 제2 입력을 검사하여 부동 소수점 제산의 특별한 경우가 발생하는지 여부를 결정하게 하는 부동 소수점 제산 픽스업 명령(예를 들어, 명령, 커맨드, 신호 또는 다른 인디케이터)을 이용하여 부동 소수점 제산을 수행한다. 또한, 이는, 후보 몫을 나타내는 제3 입력 및 결정된 부동 소수점 제산의 특별한 경우에 기초하여 부동 소수점 제산 결과를 나타내는 출력을 제공한다. 부동 소수점 제산 픽업 명령은, 예를 들어, 하나의 클록 사이클로 실행되는 단일 명령일 수 있고, 또는 입력 체크 명령과 출력 보정 명령으로 이루어질 수 있으며, 여기서 각 명령은 하나의 클록 사이클로 실행된다. 입력 체크/출력 보정 부동 소수점 제산 로직은, 예를 들어, 그래픽 처리 유닛의 일부일 수 있다.
다른 장점들 중에서, 예를 들어, 부동 소수점 제산을 수행하는 방법 및 장치는, 부동 소수점 제산을 IEEE Std. 754에 여전히 부합하게 하면서 더욱 짧고 더욱 빠르게 구현할 수 있는 기능을 제공한다. 부동 소수점 제산의 수치 부분은 여전히 기존의 부동 소수점 가산기/감산기 및 승산기를 대응하는 명령과 함께 사용하는 반복 알고리즘에 의해 계산되며, 이에 따라 방법 및 장치가 비용 효율적으로 된다. 한편, 입력 체크/출력 보정 부동 소수점 제산 로직 및 대응하는 부동 소수점 제산 픽스업 명령을 적용함으로써, 실행 시간을 감소시키기 위해 부동 소수점 제산의 특별한 경우를 인식하여 다루기 위한 다수의 시간 소모적 조건부 및 논리 명령들(최대 30개의 명령)을 교체할 수 있다.
일례로, 장치는, 입력 체크/출력 보정 부동 소수점 제산 로직을 포함하는 부동 소수점 산술 로직 유닛을 구비하는 프로세서를 포함한다. 입력 체크/출력 보정 부동 소수점 제산 로직은, 입력 체크/출력 보정 부동 소수점 제산 로직이 분자를 나타내는 제1 입력과 분모를 나타내는 제2 입력을 검사하여 부동 소수점 제산의 특별한 경우가 발생하는지 여부를 결정하게 하는 부동 소수점 산술 로직 유닛에 의해 실행 가능한 부동 소수점 제산 픽스업 명령에 응답한다. 또한, 부동 소수점 제산 픽스업 명령은, 입력 체크/출력 보정 부동 소수점 제산 로직이 후보 몫을 나타내는 제3 입력 및 결정된 부동 소수점 제산의 특별한 경우에 기초하여 부동 소수점 제산 결과를 나타내는 출력을 제공하게 한다.
입력 체크/출력 보정 부동 소수점 제산 로직은, 분자를 나타내는 제1 입력 및 분모를 나타내는 제2 입력을 검사하여 부동 소수점 제산의 특별한 경우가 발생하는지 여부를 결정하도록 동작 가능한 복수의 특별 경우 시험 회로(special case test circuit)를 포함할 수 있다. 복수의 특별 경우 시험 회로는, 분자 또는 분모가 수치가 아닌지 여부를 결정하도록 동작 가능한 NaN(not-a-number: 숫자가 아닌 값) 시험 회로, 분자 또는 분모가 제로인지의 여부를 결정하도록 동작 가능한 제로 시험 회로, 및 분자 또는 분모가 무한대인지의 여부를 결정하도록 동작 가능한 무한대 시험 회로를 포함할 수 있다. 또한, 복수의 특별 경우 시험 회로는, 분자 및 분모에 기초하여 오버플로우 또는 언더플로우가 발생하는지 여부를 결정하도록 동작 가능한 오버플로우/언더플로우 시험 회로를 포함할 수 있다.
또한, 입력 체크/출력 보정 부동 소수점 제산 로직은, 후보 몫을 나타내는 제3 입력 및 결정된 부동 소수점 제산의 특별한 경우에 기초하여 부동 소수점 제산 결과를 나타내는 출력을 제공하도록 동작 가능한 우선순위 멀티플렉서(priority multiplexer)를 포함할 수 있다. 프로세서는 분자, 분모, 후보 몫, 및 부동 소수점 제산 결과를 저장하도록 동작 가능한 복수의 레지스터를 포함할 수 있다.
또한, 부동 소수점 산술 로직 유닛은 적어도 하나의 부동 소수점 가산기/감산기 및 적어도 하나의 부동 소수점 승산기를 포함할 수 있다. 적어도 하나의 부동 소수점 가산기/감산기 및 부동 소수점 승산기는, 부동 소수점 제산의 특별한 경우에 상관없이 적어도 하나의 부동 소수점 가산기/감산기 및 부동 소수점 승산기가 분자 및 분모에 기초하여 후보 몫을 수치 계산하게 하는 부동 소수점 산술 로직 유닛에 의해 실행 가능한 복수의 명령에 응답한다.
입력 체크/출력 보정 부동 소수점 제산 로직은, 부동 소수점 제산의 특별한 경우가 발생하지 않으면, 입력 체크/출력 보정 부동 소수점 제산 로직이 후보 몫을 부동 소수점 제산 결과를 나타내는 출력으로서 제공하게 하는 부동 소수점 산술 로직 유닛에 의해 실행 가능한 부동 소수점 제산 픽스업 명령에 더 반응할 수 있다.
또한, 입력 체크/출력 보정 부동 소수점 제산 로직은, 부동 소수점 제산의 특별한 경우가 발생하면, 입력 체크/출력 보정 부동 소수점 제산 로직이 대응하는 부동 소수점 제산의 특정값을 부동 소수점 제산 결과를 나타내는 출력으로서 제공하게 하는 부동 소수점 산술 로직 유닛에 의해 실행 가능한 부동 소수점 제산 픽스업 명령에 응답할 수 있다. 부동 소수점 제산의 특정값은, NaN, 제로, 무한대, 최대 부동 상수, 및 최소 부동 상수 중 적어도 하나로부터 선택될 수 있다.
일례로, 입력 체크/출력 보정 부동 소수점 제산 로직은, 분자를 나타내는 제1 입력의 부호 비트와 분모를 나타내는 제2 입력의 부호 비트에 기초하여 부동 소수점 제산 결과를 나타내는 출력의 부호 비트를 설정하도록 동작 가능한, 우선순위 멀티플렉서에 동작 가능하게 연결된 부호 비트 설정 로직을 포함한다.
다른 일례로, 부동 소수점 제산 결과를 나타내는 출력이 입력 체크/출력 보정 부동 소수점 제산 로직의 제1 출력이다. 또한, 입력 체크/출력 보정 부동 소수점 제산 로직은, 분자를 나타내는 제1 입력과 분모를 나타내는 제2 입력에 기초하여 예외 상태 플래그를 결정하도록 동작 가능한 예외 플래그 로직을 포함한다. 예외 플래그 로직은 또한 입력 체크/출력 보정 부동 소수점 제산 로직의 예외 상태 플래그를 나타내는 제2 출력을 제공하도록 동작 가능하다.
또 다른 일례로, 입력 체크/출력 보정 부동 소수점 제산 로직은, 부동 소수점 제산의 특별한 경우가 발생하는지 여부를 나타내는 임의 비트 패턴을 인코딩하도록 동작 가능한 임의 비트 패턴 인코더를 포함한다. 임의 비트 패턴 인코더는 또한 임의 비트 패턴을 복수의 레지스터 중 하나에 저장하도록 동작 가능하다.
다른 장점들 중에서, 부동 소수점 제산을 수행하는 방법 및 장치는, 부동 소수점 제산을 IEEE Std. 754에 여전히 부합하면서 더욱 짧고 빠르게 구현할 수 있는 기능을 제공한다. 부동 소수점 제산의 수치 부분은, 기존의 부동 소수점 가산기/감산기 및 승산기를 대응하는 명령과 함께 이용하는 반복 알고리즘에 의해 여전히 계산되며, 이에 따라 방법 및 장치가 비용 효율적으로 된다. 한편, 입력 체크/출력 보정 부동 소수점 제산 로직 및 대응하는 부동 소수점 제산 픽스업 명령을 적용함으로써, 실행 시간을 감소시키기 위해 부동 소수점 제산의 특별한 경우를 인식하여 다루기 위한 다수의 시간 소모적인 조건부 및 논리 명령들(최대 30개의 명령)을 교체할 수 있다. 따라서, 제안한 기술들은, 컴퓨터 그래픽 및/또는 넌그래픽 처리 및 계산에서 사용되는 그래픽 처리 유닛(GPU) 및/또는 GPU에서의 범용 계산(GPGPU)과 같은 단일 명령 다중 데이터(SIMD) 프로세서 등의 병렬 스트림 프로세서에 적합할 수 있다. 또한, 부동 소수점 제산을 수행하는 방법 및 장치는 IEEE Std. 754에 부합할 수 있다. 이에 따라, 제안한 기술들은, 명령 카운트가 적고 실행 속도가 빠르면서 프로세서 설계 및 제조비용이 적은 이점 및 반복 알고리즘 구현의 유연성의 이점을 유지할 수 있다. 당업자라면 다른 장점들도 인식할 것이다.
도 3은 프로세서(304)를 포함하는 집적 회로(302)를 포함하는 장치(300)의 일례를 도시한다. 장치(300)는, 예를 들어, 랩탑 컴퓨터, 데스크탑 컴퓨터, 미디어 센터, 핸드헬드 디바이스(예를 들어, 모바일 또는 스마트 폰, 태블릿 등), Blu-ray™ 플레이어, 게이밍 콘솔, 셋톱 박스, 프린터, 또는 다른 임의의 적절한 디바이스일 수 있지만, 이러한 예로 한정되지는 않는다. 집적 회로(302)는 하나 이상의 프로세서(304)를 갖는 임의의 적절한 회로일 수 있다. 프로세서(304)에 더하여, 집적 회로(302)는 또한 예를 들어 캐시 메모리 및 입력/출력(I/O) 인터페이스 회로 등의 당업계에 알려져 있는 다른 임의의 적절한 회로를 포함할 수 있다. 프로세서(304)는, GPU, 중앙 처리 유닛(CPU), GPGPU, 또는 가속 처리 유닛(APU), 디지털 신호 프로세서(DSP), 또는 다른 임의의 적절한 프로세서일 수 있지만, 이러한 예로 한정되지는 않는다. 장치(300)는 하나 이상의 표시 스크린(306)을 포함하거나 이러한 표시 스크린에 동작 가능하게 연결될 수 있다. 프로세서(304)는, 예를 들어, 표시 스크린(306) 상에 표시되는 화상의 적어도 일부를 나타내는 화상 데이터(308)를 생성하기 위한 GPU일 수 있다.
프로세서(304)는 부동 소수점 ALU(310), 레지스터(312), 및 메모리(314)를 포함할 수 있다. 레지스터(312)는 다른 곳에서 이용 가능한 저장 장치보다 빠르게 콘텐츠에 액세스할 수 있는 프로세서 레지스터 또는 프로세서(304) 상의 범용 레지스터일 수 있다. 바람직하게, 레지스터(312)는, 이 예에서, 부동 소수점 분자, 분모, 몫 등의 부동 소수점 숫자를 저장하는 부동 소수점 레지스터를 포함한다. 또한, 레지스터(312)는, 현재 실행되고 있는 명령을 저장하는 명령 레지스터, 및 IEEE Std. 754에 의해 요구되는 예외 상태 플래그를 저장하는 제어 및 상태 레지스터들을 포함할 수 있다. 레지스터(312)에 저장되어 있는 데이터는 부동 소수점 ALU(310)에 의해 판독 또는 기입될 수 있다. 메모리(314)는, 부동 소수점 ALU(310)에 의해 실행 가능한 복수의 명령(316 내지 320)(예를 들어, 명령, 커맨드, 신호 또는 다른 인디케이터)을 영구적으로 또는 일시적으로 저장하는 당업계에 알려져 있는 임의의 적절한 메모리일 수 있다. 이 예에서, 메모리(314)는 실행 가능 명령 페치를 가속하는 프로세서(304)의 명령 버퍼 또는 명령 캐시이다. 또한, 메모리(314)는 다른 예들에서 프로세서(304)에 동작 가능하게 연결된 메인 메모리일 수 있다. 명령들(316 내지 320)은 부동 소수점 제산 픽스업 명령(316), 부동 소수점 가산/감산 명령(318), 부동 소수점 승산 명령(320)을 포함하고, 및 필요에 따라 다른 임의의 적절한 명령도 포함한다.
부동 소수점 ALU(310)는, 이 예에서, 부동 소수점 연산을 전용으로 수행하는 ALU이다. 도 3에 도시한 바와 같이, 프로세서(304)는 스트림 처리를 위한 병렬 부동 소수점 연산들을 수행하는 하나보다 많은 부동 소수점 ALU(310)를 포함할 수 있다. 부동 소수점 ALU(310)는 명령을 수신 및 실행할 수 있고, 명령의 실행에 따라 부동 소수점 연산을 수행할 수 있다. 부동 소수점 ALU(310)는, 부동 소수점 가산/감산 및 승산 명령들(318, 320)을 포함하는 복수의 명령에 응답하여 부동 소수점 제산의 몫을 수치 계산할 수 있는 적어도 하나의 부동 소수점 가산기/감산기(322) 및 적어도 하나의 부동 소수점 승산기(324)를 포함할 수 있다. 전술한 바와 같이, 부동 소수점 가산기/감산기 및 승산기(322, 324)는 부동 소수점 제산의 특별한 경우를 인식하여 다루지 못하며, 부동 소수점 가산/감산 및 승산 명령들(318, 320)은 분자 및 분모를 정상적인 숫자들로 여기고, 반복 알고리즘을 수행하여 후보 몫(328)을 입력 체크/출력 보정 부동 소수점 제산 로직(326)에 제공한다.
부동 소수점 ALU(310)는 입력 체크/출력 보정 부동 소수점 제산 로직(326)을 포함한다. 본 명세서에 참조하는 "로직"은, 원하는 기능을 달성할 수 있는 임의의 적절한 회로이며, 디지털 회로, 아날로그 회로, 혼합형 아날로그-디지털 회로, 또는 임의의 적절한 회로일 수 있다. 입력 체크/출력 보정 부동 소수점 제산 로직(326)은 부동 소수점 ALU(310)에 의해 실행 가능한 부동 소수점 제산 픽스업 명령(316)에 응답한다. 이 예에서는, 부동 소수점 제산 픽스업 명령(316)을 실행함으로써, 입력 체크/출력 보정 부동 소수점 제산 로직(326)이 레지스터(312)로부터 부동 소수점 제산의 분자와 분모를 체크하여 부동 소수점 제산의 특별한 경우가 발생하는지 여부를 결정하고, 또한, 부동 소수점 가산기/감산기와 승산기(322, 324)에 의해 계산된 후보 몫(328) 및 결정된 특별한 경우에 기초하여 보정된 부동 소수점 제산 결과를 결정한다.
도 4는 입력 체크/출력 보정 부동 소수점 제산 로직(326)의 일례를 도시한다. 입력 체크/출력 보정 부동 소수점 제산 로직(326)은, 레지스터(312)로부터 적어도, 분자(400)를 수신하는 제1 입력, 분모(402)를 수신하는 제2 입력, 및 후보 몫(328)을 수신하는 제3 입력을 갖는다. 후보 몫(328)은, 필요하다면, 부동 소수점 가산기/감산기와 승산기(322, 324)로부터 직접 수신될 수 있다. 분자(400), 분모(402), 및 후보 몫(328)은, 단 정밀도(32비트) 부동 소수점 숫자들, 배 정밀도(64비트) 부동 소수점 숫자들, 단일-확장 정밀도(≥43비트) 부동 소수점 숫자들, 이중-확장 정밀도(≥79비트) 부동 소수점 숫자들 등의 부동 소수점 숫자들이지만, 이러한 예로 한정되지는 않는다. 또한, 입력 체크/출력 보정 부동 소수점 제산 로직(326)은 적어도 레지스터(312)에 또는 필요하다면 프로세서(304) 내의 임의의 로직에 부동 소수점 제산 결과(404)를 제공하는 제1 출력 및 예외 상태 플래그(406)를 제공하는 제2 출력을 갖는다.
이 예에서, 입력 체크/출력 보정 부동 소수점 제산 로직(326)은, 분자(400)와 분모(402)를 검사하여 부동 소수점 제산의 특별한 경우가 발생하는지 여부를 결정하도록 동작 가능한 복수의 특별 경우 시험 회로(408 내지 414)를 포함한다. 복수의 특별 경우 시험 회로(408 내지 414)는 NaN 시험 회로(408), 무한대(inf) 시험 회로(410), 제로 시험 회로(412), 및 오버플로우/언더플로우 시험 회로(414)를 포함한다. 특별 경우 시험 회로들(408 내지 414)의 각각은 IEEE Std. 754에 의해 규정된 부동 소수점 제산의 하나 이상의 특정한 특별 경우를 체크하도록 동작 가능하다. 또한, 입력 체크/출력 보정 부동 소수점 제산 로직(326)은 분자(400) 또는 분모(402)가 비정규수인지의 여부를 체크하도록 동작 가능한 비정규수(denormalized number; denorm) 시험 회로(416)를 포함할 수 있다. 이 예에서, 비정규수 시험 회로(416)는 부동 소수점 제산 결과(404)를 제공하는 데 사용되지 않고 예외 상태 플래그(406)를 생성하는 데 사용된다. 후술하는 기능들을 수행할 수 있는 임의의 조합 로직을 특별 경우 시험 회로들(408 내지 414) 및 비정규수 시험 회로(416)로서 사용할 수 있다. 예를 들어, NaN 시험 회로(408)는 분자(400)와 분모(402)의 지수와 소수 비트들을 검사하여 분자(400)가 NaN인지의 여부 및 분모(402)가 NaN인지의 여부를 결정한다. NaN 시험 회로(408)의 두 개의 출력은 분자(400) 또는 분모(402)가 NaN인지의 여부를 각각 나타낸다. 이는 무한대 시험 회로(410)와 제로 시험 회로(412)에 동일하게 적용될 수 있다. 표 1은 부동 소수점 숫자가 숫자가 아닌 값(NaN), 무한대(inf), 제로(zero), 또는 비정규수(denorm)인지를 결정하도록 조건들을 요약한다.
[표 1]
Figure pct00001
오버플로우/언더플로우 시험 회로(414)에서는, 분자(400)와 분모(402)의 지수를 검사하여 분자(400)와 분모(402)가 예를 들어 IEEE Std. 754에 의해 특정된 소정의 범위보다 큰지 또는 작은지를 결정한다. 그 범위는 IEEE Std. 754에서 규정된 부동 소수점 숫자의 포맷에 의존한다.
또한, 입력 체크/출력 보정 부동 소수점 제산 로직(326)은 특별 경우 시험 회로들(408 내지 414)에 동작 가능하게 연결된 우선순위 멀티플렉서(418)를 포함한다. 우선순위 멀티플렉서(418)는 특별 경우 시험 회로들(408 내지 414)의 출력들을 자신의 선택기 입력(S0 내지 S7)으로서 수신한다. 우선순위 멀티플렉서(418)의 입력(I0 내지 I5)은, NaN(420), inf(422), zero(424), 최대 부동 상수(max_float)(426) 및 최소 부동 상수(min_float; 428) 등의 후보 몫(328) 및 특정값들을 포함한다. 우선순위 멀티플렉서(418)는, 예를 들어, 당업계에 알려져 있는 임의의 적절한 조합 로직을 사용하여 이하의 예시적인 "If" 문을 구현함으로써 설계될 수 있다:
Figure pct00002
"IF" 문은 우선순위를 암시하며, 이에 따라 정확한 입력을 선택하는 조건을 순서대로 체크해야 한다. 예를 들어, 우선순위 멀티플렉서(418)는 우선 NaN 시험 회로(408)로부터의 선택 입력(S0)을 체크하여 분자(400)가 NaN인지의 여부를 결정하고, 분자가 NaN이라면, 우선순위 멀티플렉서(418)는 다른 선택기 입력(S1 내지 S7)에 상관없이 NaN(420)을 나타내는 입력(I1)을 자신의 출력으로서 선택한다. 분자(400)가 NaN이 아니면, 우선순위 멀티플렉서(418)는 NaN 시험 회로(408)로부터의 선택기 입력(S1)을 계속 체크하여 분모(402)가 NaN인지의 여부를 결정하고, 분모가 NaN이면, 우선순위 멀티플렉서(418)는 NaN(420)을 나타내는 입력(I1)을 자신의 출력으로서 선택한다. NaN, inf, zero의 특별한 경우들이 우선순위 멀티플렉서(418)에 의해 체크된 후에, 세 개의 특별한 경우들 중 어떠한 것도 발생하지 않으면, 우선순위 멀티플렉서(418)는 오버플로우/언더플로우 시험 회로(414)로부터의 선택기 입력(S6, S7)을 체크하여 오버플로우 또는 언더플로우 특별 경우가 발생하는지 여부를 결정하고, 이에 따라 특정값을 출력한다는 점에 주목한다. 예를 들어, 오버플로우가 결정되면, 특정값은 IEEE Std. 754에서 특정된 바와 같이 부동 소수점 제산에서 사용되는 반올림 모드에 따라 상수 - IEEE Std. 754에서 규정된 max_float(426) 또는 inf(422)일 수 있다. 마찬가지로, 언더플로우 경우의 특정값은 부동 소수점 제산의 반올림 모드에 따라 min_float(428)이거나 zero(424)일 수 있다.
부동 소수점 제산의 특별한 경우들의 조건들을 "If" 문에서의 특정한 순서로 예시하고 있지만, 당업자라면 조건들을 우선순위 멀티플렉서(418)에 의해 다른 순서로 체크해도 된다는 점을 인식할 것이다. 일례로, 우선순위 멀티플렉서(418)는 "ELSEIF numerator=denominator=zero THEN result=NaN" 문보다 먼저 "ELSEIF numerator=denominator=inf THEN result=NaN" 문을 체크할 수 있다. 다른 일례로, 우선순위 멀티플렉서(418)는 "ELSEIF denominator=zero OR numerator=inf THEN result=inf" 문보다 먼저 "ELSEIF denominator=inf OR numerator=zero THEN result=zero" 문을 체크할 수 있다. 또 다른 일례로, 우선순위 멀티플렉서(418)는 "ELSEIF overflow THEN result=max_float/inf" 문보다 먼저 "ELSEIF underflow THEN result=min_float/zero" 문을 체크할 수 있다.
이 예에서, 부동 소수점 제산의 특별한 경우들의 모든 조건들은 후보 몫(328)을 선택하는 조건보다 높은 우선순위를 갖는다. 결국, 부동 소수점 제산의 특별한 경우들 중 어떠한 것도 결정되지 않으면, 우선순위 멀티플렉서(418)는 후보 몫(328)을 나타내는 입력(I0)을 자신의 출력으로서 선택한다.
입력 체크/출력 보정 부동 소수점 제산 로직(326)은 우선순위 멀티플렉서(418)에 동작 가능하게 연결된 부호 비트 설정 로직(430)을 더 포함할 수 있다. IEEE Std. 754에서 규정된 바와 같이, 부동 소수점 숫자의 부호는 부호 비트에 의해 설정된다. inf(422)와 zero(424) 등의 부동 소수점 제산의 일부 특정값들도 부호 값들이며, 이는 부동 소수점 제산 결과(404)가 분자(400)와 분모(402)의 부호 비트들에 따라 +inf, -inf, +zero, 또는 -zero일 수 있음을 의미한다. 부호 비트 설정 로직(430)은 수신된 분자(400)와 분모(402)의 부호 비트들에 기초하여 부동 소수점 제산 결과(404)의 부호 비트를 설정한다. 예를 들어, 부동 소수점 제산 결과(404)의 부호 비트는 분자(400)와 분모(402)의 부호 비트들의 "배타적 OR"이다. 선택 사항으로, 부동 소수점 가산기/감산기와 승산기(322, 324)는, 후보 몫(328)을 수치 계산하는 경우 분자(400)와 분모(402)의 부호 비트들을 무시할 수 있고, 무부호 후보 몫(328)을 입력 체크/출력 보정 부동 소수점 제산 로직(326)에 제공할 수 있고, 우선순위 멀티플렉서(418)가 후보 몫(328)을 자신의 출력으로서 결정하면, 분자(400)와 분모(402)의 부호 비트들에 기초하여 후보 몫(328)의 부호 비트가 부호 비트 설정 로직(430)에 의해 설정된다. 부호 비트를 설정한 후, 입력 체크/출력 보정 부동 소수점 제산 로직(326)은 부호있는 부동 소수점 제산 결과(404)를 제1 출력으로서 출력한다. 전술한 바와 같이, 부동 소수점 제산 결과(404)는 레지스터(312)에 저장될 수 있고, 또는 필요하다면 프로세서(304) 내의 임의의 로직에 전달될 수 있다.
부동 소수점 제산 결과(404)를 나타내는 제1 출력에 더하여, 입력 체크/출력 보정 부동 소수점 제산 로직(326)은 IEEE Std. 754의 요건에 따라 예외 상태 플래그(406)를 나타내는 제2 출력을 제공하도록 동작 가능한 예외 플래그 로직(432)을 또한 포함할 수 있다. 전술한 바와 같이, 예외 상태 플래그(406)는, 명령 실행의 정상 흐름을 인터럽트하는 트랩 시퀀스의 처리 활성화 등의, 신호로 표시되는 예외에 대한 디폴트 또는 대체 핸들링을 호출한다. 도 4에 도시한 바와 같이, 이 예에서, NaN 시험 회로(408)와 제로 시험 회로(412)의 각각은 예외 플래그 로직(432)에 연결된 출력을 갖고, 이는 하나의 구체적인 예외를 나타낸다. 예를 들어, 제로 시험 회로(412)는, 일단 분모(402)가 0으로서 결정되면 "0에 의한 제산" 신호를 예외 플래그 로직(432)에 송신할 수 있다. NaN 시험 회로(408)는, 일단 분자(400)와 분모(402) 모두가 zero 또는 inf이면 "무효 연산" 신호를 예외 플래그 로직(432)에 송신할 수 있다. "부정확"(inexact) 예외 등의, IEEE Std. 754에 규정된 다른 예외들도 필요하다면 예외 신호로서 결정되어 예외 플래그 로직(432)에 송신될 수 있지만, 이러한 예로 한정되지는 않는다. 비정규수 시험 회로(416)에서는, 비정규수가 IEEE Std. 754에 의해 요구되는 예외가 아니지만, 선택 사항으로, 비정규수를 당업계에 알려진 바와 같이 프로세서(304)를 위한 추가 예외로서 고려하는 것이 필요할 수도 있다. 이 예에서, 비정규수 시험 회로(416)는 분자(400)와 분모(402)를 검사하여 이들 중 어느 하나라도 비정규수인지의 여부를 결정한다. 표 1에서 알 수 있는 바와 같이, 부동 소수점 숫자는 지수가 제로이고 소수가 넌제로이면 비정규수이다.
이어서, 예외 플래그 로직(432)은 수신된 모든 예외 신호들에 따라 예외 상태 플래그(406)를 설정하고, 예외 상태 플래그(406)를 입력 체크/출력 보정 부동 소수점 제산 로직(326)의 제2 출력으로서 출력한다. 전술한 바와 같이, 예외 상태 플래그(406)는 레지스터(312)에 저장될 수 있고, 또는 필요하다면 프로세서(304) 내의 임의의 로직에 직접 전달될 수 있다.
선택 사항으로, 입력 체크/출력 보정 부동 소수점 제산 로직(326)은 특별 경우 시험 회로들(408 내지 414)에 동작 가능하게 연결된 임의 비트 패턴(ABP) 인코더(434)를 더 포함할 수 있다. ABP 인코더(434)는, 이 예에서, 특별 경우 시험 회로들(408 내지 414)에 의해 결정된 특별한 경우들을 나타내는 임의 비트 패턴(ABP; 436)을 생성한다. ABP(436)는 레지스터(312)에 저장된다. 이 예에서, 전술한 바와 같이 특별 경우 시험 회로들(408 내지 414)로부터 출력들을 직접 수신하는 것 대신에, 우선순위 멀티플렉서(418)는 레지스터(312)로부터 자신의 선택기 입력(S0 내지 S7)으로 ABP(436)를 제어 신호로서 수신할 수 있다. 또한, ABP(436)는 분자(400)와 분모(402)의 부호 비트들에 관한 정보를 포함할 수 있고, 이에 따라, 부동 소수점 제산 결과(404)의 부호 비트를 설정하는 부호 비트 설정 로직(430)에 의해 사용될 수 있다.
도 5와 도 6은 부동 소수점 제산 픽스업 명령(316)의 예시적인 명령 포맷들을 도시한다. 도 5는 하나의 클록 사이클로 프로세서(304)에 의해 실행되는 단일 부동 소수점 제산 픽스업 명령(316)을 도시한다. 하나의 클록 사이클의 시간은 프로세서(304)의 클록 주파수에 의해 결정되고, 예를 들어, 약 0.5ns 내지 약 10ns이다. 이 예에서, 하나의 클록 사이클의 시간은 850MHz의 클록 주파수에서 동작하는 프로세서(304)에 대하여 약 1.18ns이다. 하나보다 많은 부동 소수점 제산 픽스업 명령(316)이 하나의 클록 사이클로 병렬 실행될 수 있다는 점을 이해하기 바란다. 부동 소수점 제산 픽스업 명령(316)은 16비트 명령, 32비트 명령, 또는 64비트 명령일 수 있지만, 이러한 예로 한정되지는 않는다. 도 5는 4-어드레스 ISA로 된 단일 부동 소수점 제산 픽스업 명령(316)의 예시적인 명령 포맷이다. 명령을 특정하는 이진 인코딩인 연산 코드(opcode; 500)는 예를 들어 "픽스업"이다. 연산 코드(500)는 명령을 식별하는 데 사용되며, 그 명칭은 임의적이다. 연산 코드(500)의 비트들의 개수는 서로 다른 ISA들에 따라 가변될 수 있다. 데스티네이션(502), 소스 1(504), 소스 2(506) 및 소스 3(508)은, 레지스터 번호, 메모리 어드레스, 메모리 오프셋, 또는 명령(316)에 필요한 데이터를 저장하는 이들의 임의의 적절한 조합을 특정하도록 인코딩된다. 이 예에서, 데스티네이션(502)은, 부동 소수점 제산 픽스업 명령(316)이 실행된 후 부동 소수점 제산 결과(404)를 저장하는 레지스터(312)의 데스티네이션 레지스터를 가리킨다. 소스 1(504)과 소스 2(506)는, 전술한 바와 같이 입력 체크/출력 보정 부동 소수점 제산 로직(326)의 두 개의 입력인 분자(400)와 분모(402)를 각각 유지하는 레지스터들(312) 중의 소스 레지스터들을 가리킨다. 소스 3은, 입력 체크/출력 보정 부동 소수점 제산 로직(326)의 다른 입력인 후보 몫(328)을 유지하는 레지스터들(312) 중의 소스 레지스터를 가리킨다. 데스티네이션(502), 소스 1(504), 소스 2(506), 및 소스 3(508)의 비트들의 개수는 레지스터들(312)의 개수 및 특정한 ISA에 기초하여 결정된다.
이제 도 6을 참조해 보면, 이 예에서, 부동 소수점 제산 픽스업 명령(316)은, 3-어드레스 ISA를 위한 두 개의 3-어드레스 명령을 포함하며, 즉, 입력 체크 명령(600)과 출력 보정 명령(602)을 포함한다. 두 개의 명령(600, 602)의 각각은 하나의 클록 사이클로 실행되고, 이 예에서 부동 소수점 제산 픽스업 명령(316) 전체는 두 개의 클록 사이클로 실행된다. 입력 체크 명령(600)은 예를 들어 "입력 체크"인 연산 코드(604)를 포함한다. 도 5에서의 명령 포맷과는 다르게, 입력 체크 명령(600)의 데스티네이션(606)은 ABP(436)를 유지하는 레지스터를 특정한다. 도 7은 ABP(436)의 일례를 도시한다. ABP(436)는, 특별 경우 시험 회로들(408 내지 414)로부터의 특별 경우 체크 결과에 기초하여 ABP 인코더(434)에 의해 인코딩될 수 있다. 이 예에서, ABP(436)는, 분자가 inf(700), NaN(702) 및 zero(704)인지 및 분모가 inf(706), NaN(708) 및 zero(710)인지를 나타내는 부분들을 포함한다. 또한, ABP(436)는, 오버플로우 또는 언더플로우 특별 경우가 발생하는지 여부를 나타내는 부분(712)과, 분자(400)와 분모(402)의 부호 비트들을 각각 나타내는 부분들(714, 716)을 포함할 수 있다. ABP(436)의 인코딩과 포맷은 임의적이라는 점을 이해하기 바란다. ABP(436)는 ABP(436)의 크기(예를 들어, 32비트 ABP, 64비트 ABP)에 따라 다수의 미사용 비트들을 포함할 수 있다. 이제 다시 도 6을 참조해 보면, 입력 체크 명령(600)의 소스 1(608)과 소스 2(610)는, 분자(400)와 분모(402)를 각각 유지하는 레지스터들(312) 중의 소스 레지스터들을 가리킨다. 입력 체크 명령(600)을 실행함으로써, 입력 체크/출력 보정 부동 소수점 제산 로직(326)은 분자(400)와 분모(402)를 체크하고, 입력 체크 결과를 나타내는 ABP(436)를 생성한다.
반면에, 출력 보정 명령(602)은, 예를 들어, "출력 보정"인 연산 코드(612)에 의해 식별된다. 출력 보정 명령(602)의 데스티네이션(614), 소스 1(616), 및 소스 2(618)는, 부동 소수점 제산 결과(404), ABP(436), 및 후보 몫(328)을 각각 저장하는 레지스터들(312)을 특정한다. 통상적으로, 출력 보정 명령(602)은, 입력 체크 명령(600) 후에 실행되고, 입력 체크/출력 보정 부동 소수점 제산 로직(326)으로 하여금 후보 목(328) 및 ABP(436)에 의해 표현된 부동 소수점 제산의 결정된 특별한 경우들에 기초하여 부동 소수점 제산 결과(404)를 출력하게 한다.
도 8은 본 개시 내용에서 설명하는 일 실시예에 따라 부동 소수점 제산을 수행하는 방법의 일례를 표시한 흐름도이다. 이는 상술한 도면들을 참조하여 설명한다. 그러나, 임의의 적절한 로직이나 구조를 채용해도 된다. 연산 시, 부동 소수점 제산 픽스업 명령(316)은 블록(800)에서 처리된다. 예를 들어, 부동 소수점 제산 픽스업 명령(316)은 명령 캐시(314)로부터 로딩될 수 있고, 명령 디코더에 의해 디코딩될 수 있고, 프로세서(304)(즉, 부동 소수점 ALU(310))에 의해 실행될 수 있다. 이어서, 블록(802)에서, 부동 소수점 제산 픽스업 명령(316)을 실행함으로써, 입력 체크/출력 보정 부동 소수점 제산 로직(326)이, 특히, 특별 경우 시험 회로들(408 내지 414)이 분자(400)를 나타내는 제1 입력 및 분모(402)를 나타내는 제2 입력을 검사하여 부동 소수점 제산의 특별한 경우가 발생하는지 여부를 결정하게 된다. 블록(804)에서, 부동 소수점 제산 픽스업 명령(316)을 또한 실행함으로써, 후보 몫(328)을 나타내는 제3 입력 및 결정된 부동 소수점 제산의 특별한 경우에 기초하여 입력 체크/출력 보정 부동 소수점 제산 로직(326)의 우선순위 멀티플렉서(418)가 부동 소수점 제산 결과(404)를 나타내는 출력을 제공하게 된다. 전술한 바와 같이, 부동 소수점 제산 픽스업 명령(316)은 하나 또는 둘의 클록 사이클로 실행될 수 있다. 이에 따라, 블록들(800 내지 804)은 하나 또는 둘의 클록 사이클로 수행될 수 있다.
본 개시 내용에 따른 일 실시예에서, 부동 소수점 제산 결과(404)는 장치(300)에 의해 다양한 목적으로 사용될 수 있다. 예를 들어, 장치(300)는 하나 이상의 표시 스크린(306) 상에 표시되는 화상의 데이터(308)를 생성하는 GPU(304)를 포함할 수 있다. 블록(806)에서, 장치(300)는, 화상의 적어도 일부, 예를 들어, 입력 체크/출력 보정 부동 소수점 제산 로직(326)의 부동 소수점 제산 결과(404)를 나타내는 출력에 기초하여 하나 이상의 화소 또는 화소를 생성하는 데 사용되는 그래픽 프리미티브(graphic primitive)를 생성할 수 있다. 일례로, 부동 소수점 제산 결과(404)는 당업계에 알려져 있는 바와 같이 표시 스크린(306)에 출력(308)될 3D 그래픽 오브젝트를 생성하도록 3D 그래픽 모델링 및 렌더링 시 역행렬을 계산하는 데 사용된다. 다른 일례로, 부동 소수점 제산 결과(404)는 당업계에 알려져 있듯이 화상 데이터(308)를 평탄화하고 잡음을 제거하기 위한 평균화(평균) 필터에 의해 사용된다.
프로세서(304)는 또한 GPGPU일 수 있으며, 부동 소수점 제산 결과(404)는, 넌그래픽 계산을 위해 GPU에 액세스할 수 있는 오픈 컴퓨팅 랭귀지(OpenCL)의 일부로서 넌그래픽 컴퓨터 처리 및 계산에 사용된다. 예를 들어, 부동 소수점 제산 결과(404)는 고유벡터 및 고유값의 계산, 선형 함수나 다항식의 내삽, 및 초월 함수, 유리 함수, 편미분 방정식의 계산 등의 수치 알고리즘에서 사용될 수 있지만, 이러한 예로 한정되지는 않는다. 블록들(802, 804)은 도 9와 도 10에 더 도시되어 있다.
도 9를 참조해 보면, 연산 시, 부동 소수점 제산 픽스업 명령(316)을 실행함으로써, 입력 체크/출력 보정 부동 소수점 제산 로직(326)이 후보 몫(328)을 나타내는 제3 입력을 수신하게 된다. 전술한 바와 같이, 후보 몫(328)은 부동 소수점 제산의 특별한 경우에 상관없이 분자(400)와 분모(402)에 기초하여 수치 계산된다. 수치 계산은, Newton-Raphson 법과 Goldschmidt 법 등의 반복 알고리즘을 이용하여 수행되지만, 이러한 예로 한정되지는 않는다. 부동 소수점 제산 픽스업 명령(316)의 실행과는 별도로, 수치 계산은, 부동 소수점 가산/감산 및 부동 소수점 승산 명령들(318, 320) 등의 복수의 명령의 실행에 응답하여 부동 소수점 가산기/감산기(322) 및 부동 소수점 승산기(324)에 의해 수행된다. 수치 계산에서는 분자(400)와 분모(402) 모두가 정상적인 부동 소수점 숫자들이고 부동 소수점 제산의 특별한 경우들을 고려하지 않으므로, 어떠한 로직이나 조건부 연산도 필요하지 않다.
블록(902)으로 진행하여, 부동 소수점 제산 픽스업 명령(316)을 실행함으로써, 특별 경우 시험 회로들(408 내지 414)이 분자(400)와 분모(402)를 검사하게 된다. 검사에 기초하여, 블록(904)에서, 부동 소수점 제산 픽스업 명령(316)을 실행함으로써, 입력 체크/출력 보정 부동 소수점 제산 로직(326)이 부동 소수점 제산의 특별한 경우들 중 하나가 발생하는지 여부를 결정하게 된다. 부동 소수점 제산의 특별한 경우가 발생하면, 블록(906)에서, 부동 소수점 제산 픽스업 명령(316)을 실행함으로써, 입력 체크/출력 보정 부동 소수점 제산 로직(326)이 또한 부동 소수점 제산의 대응하는 특정값을 부동 소수점 제산 결과(404)를 나타내는 출력으로서 제공하게 된다. 특정값은, 식별된 특별한 경우에 기초하여, NaN(420), inf(422), zero(424), max_float(426) 및 min_float(428) 중 하나일 수 있다. 전술한 "If" 문에서 도시한 바와 같이 특별 경우 조건들이 더욱 높은 우선순위를 갖기 때문에, 특별 경우들 중 임의의 하나라도 발생하면, 우선순위 멀티플렉서(418)는 후보 몫(328)을 무시하고, 대응하는 특정값을 자신의 출력으로서 직접 제공한다.
반면에, 부동 소수점 제산의 특별한 경우들 중 어떠한 것도 발생하지 않으면, 블록(908)에서, 부동 소수점 제산 픽스업 명령(316)을 실행함으로써, 입력 체크/출력 보정 부동 소수점 제산 로직(326)이 후보 몫(328)을 부동 소수점 제산 결과(404)를 나타내는 출력으로서 제공하게 된다. 우선순위 멀티플렉서(418)의 출력이 무부호 값이므로, 블록(910)에서, 부동 소수점 제산 픽스업 명령(316)을 실행함으로써, 부호 비트 설정 로직(430)이 분자(400)와 분모(402)의 부호 비트들에 기초하여 부동 소수점 제산 결과(404)의 부호 비트를 설정할 수도 있다.
도 9에 도시한 처리 블록들은 특정한 순서로 도시되어 있지만, 당업자라면 처리를 다른 순서로 수행할 수 있음을 이해할 것이다. 예를 들어, 블록(900)은 블록(902) 후에 수행되거나 본질적으로 동시에 수행될 수 있다. 입력 체크/출력 보정 부동 소수점 제산 로직(326)은 후보 몫(328)을 동시에 수신하여 분자(400)와 분모(402)를 검사할 수 있다.
도 10을 참조해 보면, 이 예에서, 부동 소수점 제산 픽스업 명령(316)을 실행함으로써, 블록(1000)에서, 도 7에 도시한 바와 같이 부동 소수점 제산의 특별한 경우가 발생하는지 여부를 나타내는 ABP(436)를 ABP 인코더(434)가 인코딩한다. ABP(436)는, 분자(400)와 분모(402)의 검사에 기초하여 부동 소수점 제산의 특별한 경우들에 관한 정보를 포함하고, 블록(910)에서 부호 비트 설정 로직에 의해 사용될 수 있는 분자(400)와 분모(402)의 부호 비트들을 나타내는 정보를 포함할 수도 있다. 이어서, ABP(436)는 블록(1002)에서 레지스터(312)에 저장된다. 도 6을 참조하여 설명한 바와 같이, 3-어드레스 입력 체크 명령(600)을 실행하여 입력 체크/출력 보정 부동 소수점 제산 로직(326)으로 하여금 처리 블록들(1000, 1002)을 수행하게 할 수 있음을 주목한다. 3-어드레스 출력 보정 명령(602)을 더 실행하여 입력 체크/출력 보정 부동 소수점 제산 로직(326)으로 하여금 도 9의 블록들(904 내지 910)에 도시한 바와 같이 후보 목(328)과 ABP(436)에 기초하여 부동 소수점 제산 결과(404)를 제공할 수 있다.
이 예에서, IEEE Std. 754에서의 예외 상태 플래그를 제공하는 요건에 부합하도록, 부동 소수점 제산 픽스업 명령(316)을 실행함으로써 예외 플래그 로직(432)이 블록(1004)에서 분자(400)와 분모(402)에 기초하여 예외 상태 플래그(406)를 결정할 수 있다. 구체적으로, 적어도 NaN 시험 회로(408)와 제로 시험 회로(412)로부터의 출력 신호들에 기초하여 결정을 내릴 수 있다. 이어서, 결정된 예외 상태 플래그(406)는 블록(1006)에서 입력 체크/출력 보정 부동 소수점 제산 로직(326)의 제2 출력으로서 제공된다.
도 10에 도시한 처리 블록들은 특정한 순서로 도시되어 있지만, 당업자라면 처리를 다른 순서로 수행할 수 있음을 인식할 것이다. 예를 들어, 블록들(1000, 1002)은 블록들(1004, 1006) 후에 수행될 수 있고 또는 본질적으로 동시에 수행될 수 있다. 부동 소수점 제산 픽스업 명령(316)을 실행함으로써 입력 체크/출력 보정 부동 소수점 제산 로직(326)이 ABP(436)와 예외 상태 플래그(406)를 본질적으로 동시에 다룰 수 있다.
또한, CDROM, RAM, ROM의 다른 형태, 하드 드라이브, 분산형 메모리 등의 컴퓨터 판독 가능 매체에 저장된 실행 가능 명령에 기초하여 집적 회로를 구비하는 웨이퍼를 생성하는 집적 회로 설계 시스템(예를 들어, 워크스테이션)은 알려져 있지만, 이러한 예로 한정되지는 않는다. 명령은, 하드웨어 기술자 언어(HDL), 베릴로그 등의 임의의 적절한 언어 또는 다른 적절한 언어에 의해 표현될 수 있지만, 이러한 예로 한정되지는 않는다. 이처럼, 본 명세서에서 설명하는 로직 및 회로들은 명령이 내부에 저장된 컴퓨터 판독 가능 매체를 이용하는 이러한 시스템에 의해 집적 회로들로서 제조될 수도 있다. 예를 들어, 전술한 로직과 회로들을 구비하는 집적 회로는 이러한 집적 회로 제조 시스템을 이용하여 생성될 수 있다. 컴퓨터 판독 가능 매체는, 하나 이상의 집적 회로 설계 시스템이 집적 회로를 설계하게 하는 그 하나 이상의 집적 회로 설계 시스템에 의해 실행 가능한 명령을 저장한다. 설계된 집적 회로는, 본 명세서에서 개시한 바와 같이 입력 체크/출력 보정 부동 소수점 제산 로직 및 다른 로직이나 구조를 구비하는 부동 소수점 ALU를 포함한다. 입력 체크/출력 보정 부동 소수점 제산 로직은, 입력 체크/출력 보정 부동 소수점 제산 로직이 입력 체크/출력 보정 부동 소수점 제산 로직의 분자를 나타내는 제1 입력과 분모를 나타내는 제2 입력을 검사하여 입력 체크/출력 보정 부동 소수점 제산 로직의 후보 몫을 나타내는 제3 입력 및 결정된 부동 소수점 제산의 특별한 경우에 기초하여 부동 소수점 제산의 특별한 경우가 발생하는지 여부를 결정하고 입력 체크/출력 보정 부동 소수점 제산 로직의 부동 소수점 제산 결과를 나타내는 출력을 제공하게 하는, 부동 소수점 ALU에 의해 실행 가능한 부동 소수점 제산 픽스업 명령에 응답한다.
다른 장점들 중에서, 부동 소수점 제산을 수행하는 방법 및 장치는 부동 소수점 제산을 IEEE Std. 754에 여전히 부합하게 하면서 더욱 짧고 더욱 빠르게 구현할 수 있는 기능을 제공한다. 부동 소수점 제산의 수치 부분은 여전히 기존의 부동 소수점 가산기/감산기 및 승산기를 대응하는 명령과 함께 사용하는 반복 알고리즘에 의해 계산되며, 이에 따라 방법 및 장치가 비용 효율적으로 된다. 한편, 입력 체크/출력 보정 부동 소수점 제산 로직 및 대응하는 부동 소수점 제산 픽스업 명령을 적용함으로써, 실행 시간을 감소시키기 위해 부동 소수점 제산의 특별한 경우를 인식하여 다루기 위한 다수의 시간 소모적 조건부 및 논리 명령들(최대 30개의 명령)을 교체할 수 있다. 따라서, 제안한 기술들은, 컴퓨터 그래픽 및/또는 넌그래픽 처리 및 계산에서 사용되는 그래픽 처리 유닛(GPU) 및/또는 GPU에서의 범용 계산(GPGPU)과 같은 SIMD 프로세서 등의 병렬 스트림 프로세서에 적합할 수 있다. 또한, 부동 소수점 제산을 수행하는 방법 및 장치는 IEEE Std. 754에 부합할 수 있다. 이에 따라, 제안한 기술들은, 명령 카운트가 적고 실행 속도가 빠르면서 프로세서 설계 및 제조비용이 적은 이점 및 반복 알고리즘 구현의 유연성의 이점을 유지할 수 있다. 당업자라면 다른 장점들도 인식할 것이다.
전술한 본 발명의 상세한 설명 및 예들은 예시용으로 제시되었을 뿐이며 한정적으로 제시된 것이 아니다. 따라서, 본 발명은 본 명세서에서 설명하고 청구하는 기본 원리의 사상과 범위 내에 속하는 임의의 모든 수정, 변경, 또는 균등물을 포함하려는 것이다.

Claims (24)

  1. 집적 회로로서,
    프로세서를 포함하되,
    상기 프로세서는 입력 체크/출력 보정 부동 소수점 제산 로직을 포함하는 부동 소수점(floating-point) 산술 로직 유닛(arithmetic logic unit: ALU)을 포함하며, 상기 입력 체크/출력 보정 부동 소수점 제산 로직은, 상기 부동 소수점 ALU에 의해 실행 가능한 부동 소수점 제산 픽스업(fix-up) 명령에 응답하여,
    상기 입력 체크/출력 보정 부동 소수점 제산 로직의 분자를 나타내는 제1 입력과 분모를 나타내는 제2 입력을 검사하여 부동 소수점 제산의 특별한 경우가 발생하는지 여부를 결정하고,
    상기 입력 체크/출력 보정 부동 소수점 제산 로직의 후보 몫을 나타내는 제3 입력 및 결정된 부동 소수점 제산의 특별한 경우에 기초하여 상기 입력 체크/출력 보정 부동 소수점 제산 로직의 부동 소수점 제산 결과를 나타내는 출력을 제공하는 것인 집적 회로.
  2. 제1항에 있어서, 상기 입력 체크/출력 보정 부동 소수점 제산 로직은,
    상기 입력 체크/출력 보정 부동 소수점 제산 로직의 상기 분자를 나타내는 제1 입력과 상기 분모를 나타내는 제2 입력을 검사하여 상기 부동 소수점 제산의 특별한 경우가 발생하는지 여부를 결정하도록 동작 가능한 복수의 특별 경우 시험 회로; 및
    상기 입력 체크/출력 보정 부동 소수점 제산 로직의 후보 몫을 나타내는 제3 입력 및 상기 결정된 부동 소수점 제산의 특별한 경우에 기초하여, 상기 입력 체크/출력 보정 부동 소수점 제산 로직의 부동 소수점 제산 결과를 나타내는 출력을 제공하도록 동작 가능한 우선순위 멀티플렉서를 포함하고,
    상기 프로세서는, 상기 입력 체크/출력 보정 부동 소수점 제산 로직에 동작 가능하게 연결되고 상기 분자, 상기 분모, 상기 후보 몫, 및 상기 부동 소수점 제산 결과를 저장하도록 동작 가능한 복수의 레지스터를 더 포함하는 집적 회로.
  3. 제1항에 있어서, 상기 부동 소수점 제산 픽스업 명령은 하나의 클록 사이클로 실행되는 단일 명령인 것인 집적 회로.
  4. 제1항에 있어서, 상기 부동 소수점 제산 픽스업 명령은 입력 체크 명령과 출력 보정 명령으로 이루어지고, 상기 입력 체크 명령과 상기 출력 보정 명령의 각각은 하나의 클록 사이클로 실행되는 것인 집적 회로.
  5. 제2항에 있어서, 상기 부동 소수점 ALU는 적어도 하나의 부동 소수점 가산기/감산기와 적어도 하나의 부동 소수점 승산기를 더 포함하고,
    상기 적어도 하나의 부동 소수점 가산기/감산기와 부동 소수점 승산기는, 상기 적어도 하나의 부동 소수점 가산기/감산기와 부동 소수점 승산기가 상기 부동 소수점 계산의 특별한 경우에 상관없이 상기 분자와 상기 분모에 기초하여 상기 후보 몫을 수치 계산하게 하는, 상기 부동 소수점 ALU에 의해 실행 가능한 복수의 명령에 응답하는, 집적 회로.
  6. 제5항에 있어서, 상기 입력 체크/출력 보정 부동 소수점 제산 로직은, 상기 부동 소수점 제산의 특별한 경우가 발생하지 않으면, 상기 입력 체크/출력 보정 부동 소수점 제산 로직이 상기 후보 몫을 상기 입력 체크/출력 보정 부동 소수점 제산 로직의 부동 소수점 제산 결과를 나타내는 출력으로서 제공하게 하는, 상기 부동 소수점 ALU에 의해 실행 가능한 부동 소수점 제산 픽스업 명령에 또한 응답하는 것인 집적 회로.
  7. 제2항에 있어서, 상기 입력 체크/출력 보정 부동 소수점 제산 로직은, 상기 부동 소수점 제산의 특별한 경우가 발생하면, 상기 입력 체크/출력 보정 부동 소수점 제산 로직이 부동 소수점 제산의 대응하는 특정값을 상기 입력 체크/출력 보정 부동 소수점 제산 로직의 부동 소수점 제산 결과를 나타내는 출력으로서 제공하게 하는, 상기 부동 소수점 ALU에 의해 실행 가능한 부동 소수점 제산 픽스업 명령에 또한 응답하는 것인 집적 회로.
  8. 제7항에 있어서, 상기 복수의 특별한 경우, 시험 회로는,
    상기 분자 또는 상기 분모가 NaN(not-a-number; 숫자가 아닌 값)인지의 여부를 결정하도록 동작 가능한 NaN 시험 회로;
    상기 분자 또는 상기 분모가 제로인지의 여부를 결정하도록 동작 가능한 제로 시험 회로;
    상기 분자 또는 상기 분모가 무한대인지의 여부를 결정하도록 동작 가능한 무한대 시험 회로; 및
    상기 분자 또는 상기 분모에 기초하여 오버플로우 또는 언더플로우가 발생하는지 여부를 결정하도록 동작 가능한 오버플로우/언더플로우 시험 회로를 포함하고,
    상기 부동 소수점 제산의 특정값은 NaN, 제로, 무한대, 최대 부동 상수, 및 최소 부동 상수 중 적어도 하나로부터 선택되는 것인 집적 회로.
  9. 제2항에 있어서, 상기 입력 체크/출력 보정 부동 소수점 제산 로직은, 상기 우선순위 멀티플렉서에 동작 가능하게 연결되고 상기 입력 체크/출력 보정 부동 소수점 제산 로직의 상기 분자를 나타내는 제1 입력의 부호 비트와 상기 분모를 나타내는 제2 입력의 부호 비트에 기초하여 상기 부동 소수점 제산 결과를 나타내는 출력의 부호 비트를 설정하도록 동작 가능한 부호 비트 설정 로직을 더 포함하는 것인 집적 회로.
  10. 제2항에 있어서, 상기 부동 소수점 제산 결과를 나타내는 출력은 상기 입력 체크/출력 보정 부동 소수점 제산 로직의 제1 출력이며,
    상기 입력 체크/출력 보정 부동 소수점 제산 로직은,
    상기 입력 체크/출력 보정 부동 소수점 제산 로직의 상기 분자를 나타내는 제1 입력과 상기 분모를 나타내는 제2 입력에 기초하여 예외 상태 플래그를 결정하고;
    상기 입력 체크/출력 보정 부동 소수점 제산 로직의 상기 예외 상태 플래그를 나타내는 제2 출력을 제공하도록
    동작하는 예외 플래그 로직을 더 포함하는 것인 집적 회로.
  11. 제2항에 있어서, 상기 입력 체크/출력 보정 부동 소수점 제산 로직은,
    상기 부동 소수점 제산의 특별한 경우가 발생하는지 여부를 나타내는 임의 비트 패턴을 인코딩하고;
    상기 임의 비트 패턴을 상기 복수의 레지스터 중 하나에 저장하도록
    동작하는 임의 비트 패턴 인코더를 더 포함하는 것인 집적 회로.
  12. 제1항에 있어서, 상기 입력 체크/출력 보정 부동 소수점 제산 로직은 그래픽 처리 유닛(GPU)의 일부인 것인 집적 회로.
  13. 제1항에 있어서, 상기 프로세서는, 상기 입력 체크/출력 보정 부동 소수점 제산 로직의 부동 소수점 제산 결과를 나타내는 출력에 기초하여 화상의 적어도 일부를 생성하도록 동작 가능한 것인 집적 회로.
  14. 방법으로서,
    부동 소수점 제산 픽스업 명령을 처리하는 단계; 및
    처리된 부동 소수점 제산 픽스업 명령에 기초하여, 입력 체크/출력 보정 부동 소수점 제산 로직에 의해,
    상기 입력 체크/출력 보정 부동 소수점 제산 로직의 분자를 나타내는 제1 입력과 분모를 나타내는 제2 입력을 검사하여 부동 소수점 제산의 특별한 경우가 발생하는지 여부를 결정하고,
    상기 입력 체크/출력 보정 부동 소수점 제산 로직의 후보 몫을 나타내는 제3 입력 및 결정된 부동 소수점 제산의 특별한 경우에 기초하여 상기 입력 체크/출력 보정 부동 소수점 제산 로직의 부동 소수점 제산 결과를 나타내는 출력을 제공하는 단계를 포함하는 방법.
  15. 제14항에 있어서, 상기 제공하는 단계는, 상기 입력 체크/출력 보정 부동 소수점 제산 로직이 상기 입력 체크/출력 보정 부동 소수점 제산 로직의 상기 후보 몫을 나타내는 제3 입력을 수신하게 하는 단계를 포함하고, 상기 후보 몫은 상기 부동 소수점 제산의 특별한 경우에 상관없이 상기 분자와 상기 분모에 기초하여 수치 계산되는 것인 방법.
  16. 제14항에 있어서, 상기 부동 소수점 제산 픽스업 명령은 하나의 클록 사이클로 실행되는 단일 명령인 것인 방법.
  17. 제14항에 있어서, 상기 부동 소수점 제산 픽스업 명령은 입력 체크 명령과 출력 보정 명령으로 이루어지고, 상기 입력 체크 명령과 상기 출력 보정 명령의 각각은 하나의 클록 사이클로 실행되는 것인 방법.
  18. 제15항에 있어서, 상기 제공하는 단계는, 상기 부동 소수점 제산의 특별한 경우가 발생하지 않으면, 상기 입력 체크/출력 보정 부동 소수점 제산 로직이 상기 후보 몫을 상기 입력 체크/출력 보정 부동 소수점 제산 로직의 부동 소수점 제산 결과를 나타내는 출력으로서 제공하게 하는 단계를 포함하는 것인 방법.
  19. 제14항에 있어서, 상기 제공하는 단계는, 상기 부동 소수점 제산의 특별한 경우가 발생하면, 상기 입력 체크/출력 보정 부동 소수점 제산 로직이 부동 소수점 제산의 대응하는 특정값을 상기 입력 체크/출력 보정 부동 소수점 제산 로직의 부동 소수점 제산 결과를 나타내는 출력으로서 제공하게 하는 단계를 포함하는 것인 방법.
  20. 제14항에 있어서, 상기 제공하는 단계는, 상기 입력 체크/출력 보정 부동 소수점 제산 로직이 상기 입력 체크/출력 보정 부동 소수점 제산 로직의 상기 분자를 나타내는 제1 입력의 부호 비트와 상기 분모를 나타내는 제2 입력의 부호 비트에 기초하여 상기 입력 체크/출력 보정 부동 소수점 제산 로직의 부동 소수점 제산 결과를 나타내는 출력의 부호 비트를 설정하게 하는 단계를 포함하는 것인 방법.
  21. 제14항에 있어서, 상기 부동 소수점 제산 결과를 나타내는 출력은 상기 입력 체크/출력 보정 부동 소수점 제산 로직의 제1 출력이며,
    상기 제공하는 단계는, 상기 입력 체크/출력 보정 부동 소수점 제산 로직이,
    상기 입력 체크/출력 보정 부동 소수점 제산 로직의 상기 분자를 나타내는 제1 입력과 상기 분모를 나타내는 제2 입력에 기초하여 예외 상태 플래그를 결정하게 하고,
    상기 입력 체크/출력 보정 부동 소수점 제산 로직의 상기 예외 상태 플래그를 나타내는 제2 출력을 제공하게 하는 단계를 포함하는 것인 방법.
  22. 제14항에 있어서, 상기 제공하는 단계는, 상기 입력 체크/출력 보정 부동 소수점 제산 로직이,
    상기 부동 소수점 제산의 특별한 경우가 발생하는지 여부를 나타내는 임의 비트 패턴을 인코딩하게 하고,
    상기 임의 비트 패턴을 레지스터에 저장하게 하는 단계를 포함하는 것인 방법.
  23. 장치로서,
    입력 체크/출력 보정 부동 소수점 제산 로직을 포함하는 부동 소수점 산술 로직 유닛(ALU)을 포함하되, 상기 입력 체크/출력 보정 부동 소수점 제산 로직은, 상기 부동 소수점 ALU에 의해 실행 가능한 부동 소수점 제산 픽스업 명령에 응답하여,
    상기 입력 체크/출력 보정 부동 소수점 제산 로직의 분자를 나타내는 제1 입력과 분모를 나타내는 제2 입력을 검사하여 부동 소수점 제산의 특별한 경우가 발생하는지 여부를 결정하고,
    상기 입력 체크/출력 보정 부동 소수점 제산 로직의 후보 몫을 나타내는 제3 입력 및 결정된 부동 소수점 제산의 특별한 경우에 기초하여 상기 입력 체크/출력 보정 부동 소수점 제산 로직의 부동 소수점 제산 결과를 나타내는 출력을 제공하며,
    상기 장치는, 상기 입력 체크/출력 보정 부동 소수점 제산 로직의 부동 소수점 제산 결과를 나타내는 출력에 기초하여 화상의 적어도 일부를 생성하도록 동작하는 것인 장치.
  24. 하나 이상의 집적 회로 설계 시스템으로 하여금 프로세서를 포함하는 집적 회로를 설계하게 하는, 상기 하나 이상의 집적 회로 설계 시스템에 의해 실행 가능한 명령을 저장하는, 컴퓨터 판독 가능 매체로서,
    상기 프로세서는 입력 체크/출력 보정 부동 소수점 제산 로직을 포함하는 부동 소수점 산술 로직 유닛(ALU)을 포함하며, 상기 입력 체크/출력 보정 부동 소수점 제산 로직은, 상기 부동 소수점 ALU에 의해 실행 가능한 부동 소수점 제산 픽스업 명령에 응답하여,
    상기 입력 체크/출력 보정 부동 소수점 제산 로직의 분자를 나타내는 제1 입력과 분모를 나타내는 제2 입력을 검사하여 부동 소수점 제산의 특별한 경우가 발생하는지 여부를 결정하고,
    상기 입력 체크/출력 보정 부동 소수점 제산 로직의 후보 몫을 나타내는 제3 입력 및 결정된 부동 소수점 제산의 특별한 경우에 기초하여 상기 입력 체크/출력 보정 부동 소수점 제산 로직의 부동 소수점 제산 결과를 나타내는 출력을 제공하는 것인 컴퓨터 판독 가능 매체.
KR1020137005841A 2010-09-03 2011-09-02 부동 소수점 제산을 수행하기 위한 방법 및 장치 KR20130098328A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/875,757 2010-09-03
US12/875,757 US20120059866A1 (en) 2010-09-03 2010-09-03 Method and apparatus for performing floating-point division
PCT/US2011/050290 WO2012031177A1 (en) 2010-09-03 2011-09-02 Method and apparatus for performing floating-point division

Publications (1)

Publication Number Publication Date
KR20130098328A true KR20130098328A (ko) 2013-09-04

Family

ID=44658841

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137005841A KR20130098328A (ko) 2010-09-03 2011-09-02 부동 소수점 제산을 수행하기 위한 방법 및 장치

Country Status (6)

Country Link
US (1) US20120059866A1 (ko)
EP (1) EP2612234A1 (ko)
JP (1) JP2013541084A (ko)
KR (1) KR20130098328A (ko)
CN (1) CN103180820A (ko)
WO (1) WO2012031177A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11934668B2 (en) 2020-09-02 2024-03-19 Samsung Electronics Co., Ltd. Electronic device with storage device data conversion

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9792087B2 (en) 2012-04-20 2017-10-17 Futurewei Technologies, Inc. System and method for a floating-point format for digital signal processors
US9110713B2 (en) 2012-08-30 2015-08-18 Qualcomm Incorporated Microarchitecture for floating point fused multiply-add with exponent scaling
US20140067894A1 (en) * 2012-08-30 2014-03-06 Qualcomm Incorporated Operations for efficient floating point computations
US9904512B1 (en) 2013-05-31 2018-02-27 Altera Corporation Methods and apparatus for performing floating point operations
CN104615404A (zh) * 2015-02-15 2015-05-13 浪潮电子信息产业股份有限公司 一种基于查表操作的高速浮点除法部件装置
CN108140232B (zh) 2015-06-10 2022-05-24 无比视视觉技术有限公司 用于处理图像的图像处理器和方法
GB2555459B (en) * 2016-10-28 2018-10-31 Imagination Tech Ltd Division synthesis
US10671345B2 (en) * 2017-02-02 2020-06-02 Intel Corporation Methods and apparatus for performing fixed-point normalization using floating-point functional blocks
US10409614B2 (en) * 2017-04-24 2019-09-10 Intel Corporation Instructions having support for floating point and integer data types in the same register
US10474458B2 (en) * 2017-04-28 2019-11-12 Intel Corporation Instructions and logic to perform floating-point and integer operations for machine learning
CN107291425B (zh) * 2017-06-23 2020-11-24 上海兆芯集成电路有限公司 合并解决重命名尺寸问题的部分写入结果的系统和方法
US11836459B2 (en) * 2021-03-30 2023-12-05 Apple Inc. Floating-point division circuitry with subnormal support
CN113591031A (zh) * 2021-09-30 2021-11-02 沐曦科技(北京)有限公司 低功耗矩阵运算方法及装置

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5249149A (en) * 1989-01-13 1993-09-28 International Business Machines Corporation Method and apparatus for performining floating point division
DE68926289T2 (de) * 1989-01-13 1996-10-10 Ibm Gleitkommadivisions-Verfahren und -Anordnung
US5262973A (en) * 1992-03-13 1993-11-16 Sun Microsystems, Inc. Method and apparatus for optimizing complex arithmetic units for trivial operands
US5341320A (en) * 1993-03-01 1994-08-23 Motorola, Inc. Method for rapidly processing floating-point operations which involve exceptions
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
US5339266A (en) * 1993-11-29 1994-08-16 Motorola, Inc. Parallel method and apparatus for detecting and completing floating point operations involving special operands
WO1997015001A2 (en) * 1995-10-06 1997-04-24 Patriot Scientific Corporation Risc microprocessor architecture
US5812439A (en) * 1995-10-10 1998-09-22 Microunity Systems Engineering, Inc. Technique of incorporating floating point information into processor instructions
JP3313560B2 (ja) * 1996-01-31 2002-08-12 株式会社日立製作所 浮動小数点演算処理装置
US6044454A (en) * 1998-02-19 2000-03-28 International Business Machines Corporation IEEE compliant floating point unit
US6487575B1 (en) * 1998-08-31 2002-11-26 Advanced Micro Devices, Inc. Early completion of iterative division
US6151669A (en) * 1998-10-10 2000-11-21 Institute For The Development Of Emerging Architectures, L.L.C. Methods and apparatus for efficient control of floating-point status register
US6247117B1 (en) * 1999-03-08 2001-06-12 Advanced Micro Devices, Inc. Apparatus and method for using checking instructions in a floating-point execution unit
US6826682B1 (en) * 2000-06-26 2004-11-30 Transmeta Corporation Floating point exception handling in pipelined processor using special instruction to detect generated exception and execute instructions singly from known correct state
US7363337B2 (en) * 2001-05-25 2008-04-22 Sun Microsystems, Inc. Floating point divider with embedded status information
US7395297B2 (en) * 2001-05-25 2008-07-01 Sun Microsystems, Inc. Floating point system that represents status flag information within a floating point operand
US7075354B2 (en) * 2003-07-16 2006-07-11 Via Technologies, Inc. Dynamic multi-input priority multiplexer
US7437538B1 (en) * 2004-06-30 2008-10-14 Sun Microsystems, Inc. Apparatus and method for reducing execution latency of floating point operations having special case operands
US7373489B1 (en) * 2004-06-30 2008-05-13 Sun Microsystems, Inc. Apparatus and method for floating-point exception prediction and recovery
WO2007063601A1 (ja) * 2005-12-02 2007-06-07 Fujitsu Limited 浮動小数点数の除算または平方根演算を行う演算装置及び演算方法
US7962543B2 (en) * 2007-06-01 2011-06-14 Advanced Micro Devices, Inc. Division with rectangular multiplier supporting multiple precisions and operand types
US8005884B2 (en) * 2007-10-09 2011-08-23 Advanced Micro Devices, Inc. Relaxed remainder constraints with comparison rounding
US8452831B2 (en) * 2009-03-31 2013-05-28 Oracle America, Inc. Apparatus and method for implementing hardware support for denormalized operands for floating-point divide operations
JP4858794B2 (ja) * 2009-12-02 2012-01-18 日本電気株式会社 浮動小数点除算器、及びそれを用いた情報処理装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11934668B2 (en) 2020-09-02 2024-03-19 Samsung Electronics Co., Ltd. Electronic device with storage device data conversion

Also Published As

Publication number Publication date
CN103180820A (zh) 2013-06-26
WO2012031177A1 (en) 2012-03-08
JP2013541084A (ja) 2013-11-07
EP2612234A1 (en) 2013-07-10
US20120059866A1 (en) 2012-03-08

Similar Documents

Publication Publication Date Title
KR20130098328A (ko) 부동 소수점 제산을 수행하기 위한 방법 및 장치
US8106914B2 (en) Fused multiply-add functional unit
US7949696B2 (en) Floating-point number arithmetic circuit for handling immediate values
JP4990977B2 (ja) 命令に応じた丸め処理の実行
Zhang et al. Efficient multiple-precision floating-point fused multiply-add with mixed-precision support
TWI526928B (zh) 向量浮點引數之減少
US9264066B2 (en) Type conversion using floating-point unit
US10346133B1 (en) System and method of floating point multiply operation processing
JP6225687B2 (ja) データ処理装置、およびデータ処理方法
JP6415236B2 (ja) 浮動小数点加算ユニットを含む装置及びシステム、並びに浮動小数点加算方法
CN108139912B (zh) 在浮点运算期间计算和保留误差边界的装置和方法
CN114461176B (zh) 一种算术逻辑单元、浮点数处理方法、gpu芯片、电子设备
JP4476210B2 (ja) 逆数演算の結果値の初期推定値を求めるデータ処理装置および方法
US6298365B1 (en) Method and system for bounds comparator
KR100847934B1 (ko) 스케일링된 정수를 사용하는 부동 소수점 연산
US9489174B2 (en) Rounding floating point numbers
US8140608B1 (en) Pipelined integer division using floating-point reciprocal
US6233595B1 (en) Fast multiplication of floating point values and integer powers of two
US8898214B2 (en) Method and apparatus to perform floating point operations
WO2020161470A1 (en) Anchored data element conversion
JP6497250B2 (ja) 演算処理装置および演算処理装置の制御方法
US11704092B2 (en) High-precision anchored-implicit processing
KR101484379B1 (ko) 고속 브랜치-프리 벡터 나눗셈 계산
JP2006243826A (ja) 浮動小数点数値のm乗根を演算する浮動小数点演算装置及びコンピュータプログラム

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid