KR102471606B1 - 내장형 라운딩 규칙을 갖는 부동 소수점 명령어 포맷 - Google Patents

내장형 라운딩 규칙을 갖는 부동 소수점 명령어 포맷 Download PDF

Info

Publication number
KR102471606B1
KR102471606B1 KR1020197018849A KR20197018849A KR102471606B1 KR 102471606 B1 KR102471606 B1 KR 102471606B1 KR 1020197018849 A KR1020197018849 A KR 1020197018849A KR 20197018849 A KR20197018849 A KR 20197018849A KR 102471606 B1 KR102471606 B1 KR 102471606B1
Authority
KR
South Korea
Prior art keywords
register
rounding
data item
instruction
rule
Prior art date
Application number
KR1020197018849A
Other languages
English (en)
Other versions
KR20190104329A (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 KR20190104329A publication Critical patent/KR20190104329A/ko
Application granted granted Critical
Publication of KR102471606B1 publication Critical patent/KR102471606B1/ko

Links

Images

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49942Significance control
    • G06F7/49947Rounding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • 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/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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/30181Instruction operation extension or modification
    • G06F9/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

프로세서는 제1 데이터 아이템을 저장하는 제1 저장소, 제2 저장소, 및 명령어를 인코딩하는 논리 회로를 포함하는 실행 유닛을 포함하고, 명령어는 제1 저장소의 식별자를 저장하는 제1 필드, 제2 저장소의 식별자를 저장하는 제2 필드, 및 라운딩 규칙을 표현하는 식별자를 저장하는 제3 필드를 포함하고, 실행 유닛은 명령어를 실행하여, 제1 데이터 아이템에 기초하여 제2 데이터 아이템을 생성하고, 명령어에 의해 지정된 라운딩 규칙에 따라 제2 데이터 아이템을 라운딩하고, 제2 저장소에 라운딩된 제2 데이터 아이템을 저장한다.

Description

내장형 라운딩 규칙을 갖는 부동 소수점 명령어 포맷
본 출원은 2016년 12월 15일자로 출원된 미국 가출원 제62/434,521호에 대해 우선권을 주장하며, 그 내용은 본 명세서에 참고로 통합된다.
본 개시는 프로세서, 보다 구체적으로는 프로세서와 관련된 명령어 세트 아키텍처(ISA)에 관한 것으로서, ISA의 부동 소수점 명령어들 각각은 해당 부동 소수점 명령어에 구체적으로 적용 가능한 라운딩 규칙을 지정한다.
프로세서들(예컨대, 중앙 처리 유닛(CPU)들)은 시스템 소프트웨어(예를 들어, 운영 체제) 및 사용자 소프트웨어 애플리케이션들을 포함하는 소프트웨어 애플리케이션들을 실행할 수 있다. 프로세서의 마이크로아키텍처는 명령어들의 세트를 지정하는 명령어 세트 아키텍처(ISA)에 따라 설계될 수 있다. 소프트웨어 프로그램이 프로세서의 실행 파이프라인 상에서 실행될 수 있는 이러한 명령어들의 집합으로 컴파일될 수 있다. ISA에서 지정된 명령어들은 (예를 들어, 입력들로서 또는 출력들로서) 부동 소수점 값들을 처리하는 명령어들을 포함할 수 있다. 이러한 명령어들은 ISA의 부동 소수점 명령어들로서 지칭된다.
본 개시는 이하에 주어진 상세한 설명으로부터 그리고 본 개시의 다양한 실시예들의 첨부 도면들로부터 더 완전하게 이해될 것이다. 그러나, 도면들은 본 개시를 특정 실시예들로 제한하는 것으로 간주되지 않아야 하며, 단지 설명 및 이해를 위한 것이다.
도 1은 본 개시의 일 실시예에 따른 프로세서(102)를 포함하는 시스템을 도시한다.
도 2는 본 개시의 일 실시예에 따른 라운딩 규칙의 식별자를 저장하기 위한 필드를 포함할 수 있는 부동 소수점 명령어를 도시한다.
도 3은 본 개시의 일 실시예에 따른 부동 소수점 변환 명령어들을 도시한다.
컴퓨터에서, 부동 소수점 값들은 실수의 표현으로 해석될 수 있는 다수의 비트를 사용하여 표현될 수 있다. 하나의 일반적인 표현은 IEEE 754 기술 표준에 따라 정의된 바와 같은 binary32 포맷이다. binary32 포맷의 32 비트는 부호 비트(S), 8 지수 비트 및 23 분수 비트를 포함할 수 있다.
이 포맷으로 인코딩된 32 비트 워드는 표 1에 표시된 바와 같은 다음의 의사 코드를 사용하여 실수로 변환될 수 있다.
Figure 112019066559038-pct00001
이 예에서, 부호 비트 S는 실수가 양(+)의 수 또는 음(-)의 수인지를 결정하는 데 사용되며, 지수 값 255(즉, 모두 1들)는 +/- 무한대 및 다른 예외 조건들을 표현하는 데 사용된다. 유한 수의 비트를 사용하는 표현은 유한 수의 실수 값을 표현할 수 있을 뿐이며, 특히 그러한 표현을 사용하여 표현할 수 없는 일부 실수들이 존재한다. 예를 들어, IEEE binary32 포맷은 기껏해야 232 개의 실수 값을 표현할 수 있다. 이것은 소정의 실수들이 표현될 수 없다는 것을 의미한다.
십진수 33554432(16 진수로는 0x200_0000) 및 숫자 1을 고려한다. 이 양 숫자는 각자 binary32 포맷으로 S=0, 지수=152, 분수=0 및 S=0, 지수=127, 분수=0으로 정확하게 표현될 수 있다. 그러나, 이들의 합계인 33554433(0x200_0001)은 이러한 포맷으로 표현될 수 없는데, 이는 합계의 표현이 binary32 포맷의 분수 부분에 할당된 비트들의 수를 초과하는 25 비트 분수를 필요로 하기 때문이다.
실수 값이 특정 부동 소수점 포맷으로 정확히 표현될 수 없을 때, 라운딩 연산이 발생할 수 있다. 일부 구현들에서, 라운딩 연산은 해당 포맷(예를 들어, binary32 포맷)으로 표현될 수 있는 대안적인 실수를 선택하는 것이다. 통상적으로, 선택되는 대안적인 실수는 다음으로 가장 큰 표현 가능한 실수 또는 다음으로 가장 작은 표현 가능한 실수일 수 있다.
덧셈, 뺄셈, 곱셈 및/또는 나눗셈과 같은 부동 소수점 연산들을 수행할 때, 종종 이들 연산의 정확한 결과는 부동 소수점 포맷으로 표현될 수 없다. 이러한 상황에서, 프로세서는 표현될 수 있는 대안적인 숫자를 결정하기 위해 라운딩 연산을 실행해야 할 필요가 있을 수 있다. 프로세서는 라운딩 규칙들에 기초하여 특정 라운딩 방법을 선택할 수 있다. 사용될 수 있는 라운딩 규칙들 중 일부는 다음과 같다.
● 가장 가까운 값으로 라운딩(round to the nearest): 가장 가까운 값으로 라운딩함; 숫자가 중간에 속할 경우, 이 숫자는 짝수(0) 최하위 비트를 갖는 가장 가까운 값으로 라운딩된다.
● 0을 향해 라운딩(round toward 0): 0을 향해 라운딩한다(절단으로도 알려짐).
● + 무한대를 향해 라운딩(round toward + Infinity): 양의 무한대를 향해 라운딩한다(라운딩 업 또는 상한(ceiling)으로도 알려짐).
● - 무한대를 향해 라운딩(round toward - Infinity): 음의 무한대를 향해 라운딩한다(라운딩 다운 또는 하한(bottom)으로도 알려짐).
상이한 라운딩 규칙들의 적용은 상이한 라운딩 결과들을 생성할 수 있다.
라운딩은 또한 부동 소수점 수가 정수로 변환될 때 프로세서에서 발생할 수 있다. 그러한 경우, 프로세서는 결정된 라운딩 규칙을 사용하여 부동 소수점 포맷으로 표현된 실수 값을 가장 가까운 정수로 변환할 수 있다. 정수 결과들은 사용된 라운딩 규칙에 따라 상이할 수 있다. 예를 들어, 표 2에 표시된 바와 같은 다음 예들을 고려한다. 상이한 라운딩 규칙들의 사용은 상이한 결과들을 생성할 수 있다.
규칙/값 +11.5 +12.5 -11.5 -12.5
가장 가까운 값 +12 +12 -12 -12
0을 향함 +11 +12 -11 -12
+무한대를 향함 +12 +13 -11 -12
-무한대를 향함 +11 +12 -12 -13
라운딩은 정수 대 부동 소수점 변환의 경우에도 발생할 수 있다. 예를 들어, 정수 포맷으로 표현된 32 비트 정수를 binary32 비트 포맷으로 변환할 때, 정수 0x200_0001은 정확하게 표현될 수 없으며, 변환 전에 아마도 0x200_0000 또는 0x200_0004로 라운딩된다.
프로세서의 일부 구현들에서, 라운딩 규칙은 프로세서 아키텍처의 사양에서 결정된다. 다른 구현들에서, 사용될 수 있는 라운딩 규칙들은 프로그래밍 인터페이스를 통해 프로세서에 의해 액세스 가능한 레지스터(부동 소수점 제어 레지스터라고 함)에서 지정된다. 이러한 시나리오에서, 부동 소수점 연산(또는 부동 소수점/정수 변환)이 표현 불가능한 결과를 생성할 때, 프로세서는 부동 소수점 제어 레지스터를 검사하여 적용할 라운딩 규칙을 결정하며, 결과는 결정된 라운딩 규칙에 기초하여 라운딩된다.
사용되는 라운딩 규칙의 선택은 부동 소수점 연산들의 시퀀스의 전체 결과에 영향을 줄 수 있다. 결과적으로, 특수 응용들에서, 상이한 라운딩 규칙들의 선택은 더 높거나 더 낮은 품질의 최종 결과를 유발할 수 있다. 그러한 응용들에서, 프로그램은 적절한 라운딩 규칙(또는 규칙들)을 선택할 수 있다. 그러나 일반적으로 소프트웨어 애플리케이션은 부동 소수점 연산들에 사용되는 라운딩 규칙을 지정하지 않는다. 규칙이 지정되지 않을 때, 디폴트 라운딩 규칙이 사용된다. 디폴트 라운딩 규칙은 일반적으로 프로그래밍 언어와 관련되며, 종종 가장 가까운 값으로의 라운딩 규칙이다.
부동 소수점 수에서 정수로 변환할 때의 라운딩 방법의 선택은 프로그래밍 언어의 함수 라이브러리 안에 라운딩 함수들로서 명시적으로 정의될 수 있다. 이어서, 프로그래머는 코드에서 이러한 라운딩 함수들(예를 들어, 상한, 라운딩 또는 하한)을 사용하여 원하는 라운딩 규칙을 특정 숫자에 명시적으로 적용할 수 있다.
부동 소수점 라운딩 모드를 제어하는 유일한 방법이 부동 소수점 제어 레지스터인 경우, 라운딩 모드를 명시적으로 지정하는 라이브러리 함수는 라운딩 모드를 관리하는 것과 관련된 오버 헤드를 증가시킬 것이다. 예를 들어, 상한 함수에 대한 의사 코드 시퀀스가 표 3에 표시되어 있다.
Figure 112019066559038-pct00002
여기서는, 이 코드 시퀀스 내의 5 개의 명령어 라인 중 3 개가 라운딩 모드를 조작하는 것과 관련되며, 이는 계산 오버헤드의 증가를 유발한다는 점에 유의한다.
라운딩 모드를 자주 전환하는 것은, 특히 현대의 무질서 수퍼스칼라 프로세서들과 관련하여 계산상 비쌀 수 있다. 일부 구현들에서, 라운딩 모드를 판독 및/또는 기입하는 것은 다수의 프로세서 사이클을 소비할 수 있다. 이것은 종종 직렬화 연산이며, 병렬 및 무질서 부동 소수점 실행을 금지한다.
코드 시퀀스에서 라운딩 모드가 자주 변경될 필요가 있는 경우들이 발생한다. 하나의 예는 C 프로그램에서 일반적으로 부동 소수점 연산들이 가장 가까운 수로의 라운딩을 사용하여 수행되는 반면에 부동 소수점 대 정수 변환이 0으로의 라운딩을 사용하여 지정되는 경우이다. 이것은 나중에 정수들로 라운딩되는 부동 소수점 연산들을 포함하는 연산들의 시퀀스가 빈번한 라운딩 모드 변경들을 가질 것이라는 것을 의미한다. 발생하는 다른 시나리오는 사용자가 코드의 특정 영역에 적용되는 부동 소수점 라운딩 모드를 제어하기를 명시적으로 원하는 경우이다. 이러한 기능을 적절히 지원하기 위해, 부동 소수점 라운딩 모드 레지스터는 제어가 코드의 해당 영역을 떠날 때마다 언어에 대한 디폴트 모드로 재설정될 필요가 있다. 이것 또한 매우 비싼 것으로 밝혀졌다.
본 개시의 실시예들은 라운딩을 요구할 수 있는 부동 소수점 명령어에 적용될 라운딩 규칙을 지정하는 명령어들을 포함하는 명령어 세트 아키텍처를 제공한다. 일 실시예에서, 명령어는 라운딩 규칙을 명령어의 속성으로서 직접 지정할 수 있다. 언어에 의해 특정 라운딩 모드가 요구되는 경우, 라운딩 규칙은 명령어 내의 즉석 값을 사용하여 명시적으로 인코딩될 수 있으며, 따라서 부동 소수점 레지스터를 관리할 필요가 없어진다. 다른 실시예에서, 명령어는 부동 소수점 제어 레지스터로부터 명령어에 대한 라운딩 규칙을 표현하는 식별자가 판독되도록 지정할 수 있다. 이것은 사용자가 사용되는 라운딩 규칙에 대한 제어를 수행하고 애플리케이션 프로그램에서 라운딩 규칙을 동적으로 변경하기를 원하는 경우를 지원한다. 따라서, 본 개시의 실시예들은 ISA의 부동 소수점 변환 명령어들을 포함하는 부동 소수점 명령어로 하여금 원하는 라운딩 모드를 정확하게 지정하거나 부동 소수점 제어 레지스터에 의해 제공되는 디폴트 라운딩 모드가 사용되도록 지정하게 하기 위한 수단을 제공한다.
도 1은 본 개시의 일 실시예에 따른 프로세서(102)를 포함하는 시스템 온 칩(SoC)(100)을 도시한다. 프로세서(102)는 SoC(100)와 같은 반도체 칩셋 상에 제조된 논리 회로를 포함할 수 있다. 프로세서(102)는 중앙 처리 유닛(CPU), 그래픽 처리 유닛(GPU), 또는 멀티 코어 프로세서의 처리 코어일 수 있다. 도 1에 도시된 바와 같이, 프로세서(102)는 명령어 실행 파이프라인(104) 및 레지스터 파일(106)을 포함할 수 있다. 파이프라인(104)은 다수의 파이프라인 스테이지를 포함할 수 있고, 각각의 스테이지는 프로세서(102)의 명령어 세트 아키텍처(ISA)에서 지정된 명령어를 완전히 실행하는 데 필요한 멀티 스테이지 프로세스 내의 특정 스테이지의 연산들을 수행하도록 제조된 논리 회로를 포함한다. 일 실시예에서, 파이프라인(104)은 명령어 인출/디코드 스테이지(110), 데이터 인출 스테이지(112), 실행 스테이지(114) 및 후기입 스테이지(write back stage)(116)를 포함할 수 있다.
프로세서(102)는 프로세서(102)와 관련된 레지스터들(108, 109)을 더 포함할 수 있는 레지스터 파일(106)을 포함할 수 있다. 일 실시예에서, 레지스터 파일(106)은 각자가 파이프라인(104)에서 실행되는 명령어들에 의해 처리되는 데이터 아이템들을 저장하기 위해 소정 수("길이"로서 지칭됨)의 비트를 포함할 수 있는 범용 레지스터들(108, 109)을 포함할 수 있다. 예를 들어, 구현들에 따라, 레지스터들(108, 109)은 64 비트, 128 비트, 256 비트 또는 512 비트 레지스터들일 수 있다. 레지스터들(108, 109) 각각은 하나 이상의 데이터 아이템을 저장할 수 있다. 레지스터들(108, 109)은 부동 소수점 데이터 아이템들 및/또는 고정 소수점 데이터 아이템들을 저장하도록 구현될 수 있으며, 부동 소수점 데이터 아이템들은 실수들을 표현할 수 있고, 고정 소수점 데이터 아이템들은 정수들을 표현할 수 있다.
프로그램의 소스 코드는 프로세서(102)와 관련된 명령어 세트 아키텍처(ISA)에서 정의된 일련의 기계 실행 가능 명령어들로 컴파일될 수 있다. 프로세서(102)가 실행 가능 명령어들을 실행하기 시작할 때, 이러한 기계 실행 가능 명령어들은 파이프라인(104) 상에 배치되어 순차적으로 실행될 수 있다. 명령어 인출/디코드 스테이지(110)는 파이프라인(104) 상에 배치된 명령어를 검색하고, 명령어와 관련된 식별자를 식별할 수 있다. 명령어 식별자는 수신된 명령어를 프로세서(102)의 ISA에서 지정된 명령어(118)의 회로 구현과 관련시킬 수 있다.
ISA에서 지정된 명령어들은 범용 레지스터(GPR)들(108, 109)에 저장된 데이터 아이템들을 처리하도록 설계될 수 있다. 데이터 인출 스테이지(112)는 GPR(108)로부터 처리될 (예를 들어, 부동 소수점 또는 고정 소수점) 데이터 아이템들을 검색할 수 있다. 실행 스테이지(114)는 프로세서(102)의 ISA에서 지정된 명령어들을 실행하기 위한 논리 회로를 포함할 수 있다.
일 실시예에서, 실행 스테이지(114)와 관련된 논리 회로는 다수의 "실행 유닛"(또는 기능 유닛)을 포함할 수 있으며, 이들 각각은 하나의 각각의 명령어를 실행하도록 전용화된다. 이들 실행 유닛에 의해 실행되는 모든 명령어들의 집합은 프로세서(102)와 관련된 명령어 세트를 구성할 수 있다. 데이터 인출 스테이지(112)에 의해 검색된 데이터 아이템들을 처리하기 위한 명령어의 실행 후에, 후기입 스테이지(116)는 결과들을 출력하여 GPR들(108, 109)에 저장할 수 있다.
일 실시예에서, 프로세서(102)의 ISA는 부동 소수점 명령어를 정의할 수 있고, 프로세서(102)의 실행 스테이지(114)는 ISA에서 정의된 부동 소수점 명령어의 하드웨어 구현을 포함하는 실행 유닛(118)을 포함할 수 있다. 부동 소수점 명령어는 제1 레지스터(108)의 식별자를 저장하기 위한 제1 필드(120)(또는 피연산자), 제2 레지스터(109)의 식별자를 저장하기 위한 제2 필드(122)(또는 피연산자) 및 라운딩 규칙을 표현하는 식별자를 저장하기 위한 제3 필드(124)(또는 피연산자)를 포함할 수 있다. 명령어는, 실행될 때, 제1 데이터 아이템(부동 소수점 데이터 아이템 또는 고정 소수점 데이터 아이템)을 판독하고, 제1 레지스터에 저장된 제1 데이터 아이템에 기초하여 결과 값(부동 소수점 데이터 아이템)을 계산하고, 명령어의 제3 필드에서 지정된 라운딩 규칙을 사용하여 결과 값을 라운딩하여 결과를 제2 레지스터(109)에 저장하기 위한 연산들을 포함할 수 있다. 이러한 방식으로, 본 개시의 실시예들은 프로그램이 명령어별 라운딩 규칙을 지정하게 할 수 있다. 명령어별 라운딩 규칙 구현은 프로세서(102)에 의해 실행되는 모든 명령어들에 대해 하나의 라운딩 규칙(예를 들어, 디폴트 라운딩 규칙)을 사용하는 것이 아니라 상이한 라운딩 규칙들과 관련된 상이한 명령어들을 허용한다.
일 실시예에서, 라운딩 규칙은 제3 필드(124)에 저장된 즉석 값에 의해 식별될 수 있다. 예를 들어, 즉석 값은 정수일 수 있고, 상이한 정수 값들이 상이한 라운딩 규칙들에 대응할 수 있다. 다른 실시예에서, 제3 필드(124)는 레지스터 파일(106)의 제3 레지스터(126)의 식별자를 저장할 수 있으며, 레지스터(126)는 특정 라운딩 규칙에 대응하는 식별자를 저장할 수 있다. (예를 들어, 레지스터(126)를 통한) 라운딩 규칙의 간접 지정은 애플리케이션을 프로그래밍하는 프로그래머에게 추가적인 유연성을 제공할 수 있다.
도 2는 본 개시의 일 실시예에 따른 라운딩 규칙의 식별자를 저장하기 위한 필드를 포함할 수 있는 부동 소수점 명령어를 도시한다. 도 2에 도시된 바와 같이, 명령어(200)는 ISA에서 연산 필드(202), 타겟 레지스터 필드(204), 제1 입력 레지스터 필드(206), 제2 입력 레지스터 필드(208), 연산 타입 필드(210) 및 라운딩 규칙 필드(212)를 포함하도록 ISA에서 지정될 수 있다. 연산 필드(202)는 부동 소수점 연산에 대한 식별자(예를 들어, fadd)를 저장할 수 있다. 타겟 레지스터 필드(204)는 출력을 저장하기 위해 프로세서와 관련된 부동 소수점 레지스터를 지정할 수 있다. 제1 입력 레지스터 필드(206) 및 제2 입력 레지스터 필드(208)는 입력 값들(또는 함께 더해질 값들)을 저장하는 부동 소수점 레지스터들을 지정할 수 있다. 연산 타입 필드(210)는 부동 소수점 타입(예를 들어, 단일 정밀도 또는 이중 정밀도)을 표현하는 값을 저장할 수 있다. 라운딩 규칙 필드(212)는 라운딩 규칙의 타입을 표현하는 식별자(FRM)를 저장할 수 있다.
예를 들어, GPTX 아키텍처에서의 명령어 fadd_s_rzero $f3,$f1,$f2는 라운딩 규칙 0으로의 라운딩을 사용하여 콘텐츠 $f1과 $f2를 단일 정밀도 부동 소수점 덧셈하고 결과들을 $f3에 다시 저장할 것을 지정한다.
FRM 값에 인코딩된 고정 라운딩 규칙들은 다음을 포함할 수 있다.
● rnear: 가장 가까운 값으로 라운딩한다(예를 들어, 식별자 RNEAR과 관련됨).
● rzero: 0으로 라운딩한다(예를 들어, 식별자 RZERO와 관련됨).
● rdown: 라운딩 다운한다(예를 들어, 식별자 RDOWN과 관련됨).
● rup: 라운딩 업한다(예를 들어, 식별자 RUP와 관련됨).
FRM 식별자에 대해 이용 가능한 다른 인코딩은 rdyn이며, 이는 부동 소수점 제어 레지스터에서 지정된 라운딩 규칙이 사용되어야 함을 지정하고, 따라서 (고정 규칙을 사용하는 것이 아니라) 라운딩 규칙들을 간접적으로 지정한다.
정수에서 부동 소수점 수로의 변환 동안에, 프로세서는 정수를 범용 레지스터에 저장하고 결과를 부동 소수점 레지스터에 저장할 수 있다. 범용 레지스터에서 부동 소수점 레지스터로의 복사 동안, 정수 값은 필요한 경우에는 라운딩을 사용하여 등가의 부동 소수점 표현으로 변환된다. 라운딩은 프로세서가 부동 소수점 레지스터로부터 부동 소수점 값을 범용 레지스터들에 복사하는 명령어를 실행할 때 유사하게 발생할 수 있으며, 부동 소수점 값은 명령어에서 지정된 라운딩 규칙에 기초하여 정수 값으로 변환된다.
ISA의 일 구현에서, 이러한 명령어들은 범용 레지스터에 저장된 정수를 부동 소수점 레지스터에 저장되는 부동 소수점 값으로 그리고 부동 소수점 레지스터 내의 부동 소수점 값을 범용 레지스터에 저장되는 정수로 각각 변환하는 fcvtr(정수로부터 부동 소수점으로 변환) 및 rcvtf(부동 소수점으로부터 정수로 변환) 명령어들이다. 이러한 명령어들의 FRM 필드는 변환 동안 적용될 라운딩 규칙의 선택을 지정할 수 있다.
도 3은 본 개시의 일 실시예에 따른 fcvtr 명령어(302) 및 rcvtf 명령어(304)를 도시한다. fcvtr 명령어(302)의 사양은 부동 소수점 레지스터(부동 소수점 레지스터는 부동 소수점 값을 저장함)에 대한 참조를 저장하기 위한 부동 소수점 레지스터 필드(306) 및 범용 레지스터(범용 레지스터는 정수를 저장함)에 대한 참조를 저장하기 위한 범용 레지스터 필드를 포함할 수 있다. 명령어 fcvtr(302)은 라운딩 규칙 필드(310)에서 지정된 라운딩 규칙에 기초하여 부동 소수점 값을 정수로 변환한다. 유사하게, rcvtf 명령어(304)의 사양은 (정수를 저장하는) 범용 레지스터에 대한 참조를 저장하기 위한 범용 레지스터 필드(312) 및 (부동 소수점 값을 저장하는) 부동 소수점 레지스터에 대한 참조를 저장하기 위한 부동 소수점 레지스터 필드(314)를 포함할 수 있다. 명령어 rcvtf(304)는 라운딩 규칙 필드(316)에서 지정된 라운딩 규칙에 기초하여 정수를 부동 소수점 값으로 변환한다.
범용 레지스터들(예를 들어, fcvtr 또는 rcvtf)로/로부터 복사할 수 있는 명령어들과 관련하여, 라운딩 규칙들은 원시 규칙(raw rule)으로 지칭되는 추가적인 라운딩 규칙을 포함할 수 있다. 일 실시예에서, 원시 규칙은 식별자 RAW를 갖는 fcvtr 명령어의 라운딩 규칙 필드(310)(또는 rcvtf 명령어의 필드(316))에서 지정될 수 있다. 원시 규칙하에서, 소스 레지스터(범용 또는 부동 소수점) 내의 비트들은 변환 없이 그대로 타겟 레지스터(부동 소수점/범용 레지스터)에 직접 복사(예를 들어, 비트 대 비트 복사)된다. 원시 규칙의 사용은 값의 교란 없이 부동 소수점 레지스터에서 동일한(또는 더 큰) 길이의 범용 레지스터로의 그리고 그 반대로의 부동 소수점 값들의 복사를 가능하게 한다.
부동 소수점 수를 정수로 변환하는 명령어와 관련하여, 본 개시의 실시예들은 정의되지 않은 숫자(NaN)들의 핸들링에 관한 추가적인 라운딩 규칙을 제공할 수 있다. 정의되지 않은 숫자는 무한대 값을 표현할 수 있다. 이 라운딩 규칙은 다음 중 하나로 선택되도록 NaN 대 정수 변환을 지정할 수 있다.
● 모든 NaN들이 0으로 변환되거나,
● +NaN/-NaN이 표현 가능한 최대 양의/최대 음의 정수 값으로 변환되거나,
● 모든 NaN이 표현 가능한 최대 양의 값으로 변환되거나,
● 모든 NaN이 표현 가능한 최대 음의 값으로 변환된다.
rcvtf 명령어와 관련하여, 도 3에 도시된 바와 같이, rcvtf 명령어(304)는 (전술한 바와 같은) NaN 대 정수 변환 규칙이 지정될 수 있는 NaN 규칙 필드(318)를 포함할 수 있다.
일 실시예에서, 표 3에 표시된 바와 같은 상한 함수는 표 4의 다음의 코드에 의해 rcvtf 명령어를 사용하여 구현될 수 있다.
Figure 112019066559038-pct00003
명령어는 명시적으로 라운딩 규칙을 인코딩하므로, 부동 소수점 제어 레지스터를 조작할 필요가 없으며, 따라서 라운딩 모드들을 전환하는 것과 관련된 오버헤드가 감소한다.
본 개시는 제한된 수의 실시예들과 관련하여 설명되었지만, 이 분야의 기술자들은 그러한 실시예들로부터의 다수의 수정 및 변경을 인식할 것이다. 첨부된 청구항들은 본 개시의 진정한 사상 및 범위 내에 속하는 바와 같은 그러한 모든 수정들 및 변경들을 커버하는 것으로 의도된다.
설계는 창작으로부터 제조 시뮬레이션에 이르는 다양한 스테이지들을 거칠 수 있다. 설계를 표현하는 데이터는 다수의 방식으로 설계를 표현할 수 있다. 먼저, 시뮬레이션들에서 유용한 바와 같이, 하드웨어는 하드웨어 기술 언어 또는 다른 기능 기술 언어를 사용하여 표현될 수 있다. 또한, 논리 및/또는 트랜지스터 게이트들을 갖는 회로 레벨 모델이 설계 프로세스의 일부 스테이지들에서 생성될 수 있다. 또한, 대부분의 설계들은 소정 단계에서 하드웨어 모델에서 다양한 디바이스들의 물리적 배치를 표현하는 데이터의 레벨에 도달한다. 전통적인 반도체 제조 기술들이 사용되는 경우에, 하드웨어 모델을 표현하는 데이터는 집적 회로를 생성하는 데 사용되는 마스크들에 대한 상이한 마스크 층들 상의 다양한 피처들의 존재 또는 부재를 지정하는 데이터일 수 있다. 설계의 임의의 표현에서, 데이터는 임의 형태의 기계 판독 가능 매체에 저장될 수 있다. 메모리, 또는 디스크와 같은 자기 또는 광학 저장소는 정보를 전송하도록 변조되거나 생성된 광학 또는 전기 파동을 통해 전송된 그러한 정보를 저장하는 기계 판독 가능 매체일 수 있다. 코드 또는 설계를 나타내거나 운반하는 전기 반송파가 전송될 때, 전기 신호의 복사, 버퍼링 또는 재전송이 수행될 정도까지, 새로운 사본이 작성된다. 따라서, 통신 제공자 또는 네트워크 제공자는 본 개시의 실시예들의 기술들을 구현하는, 반송파에 인코딩된 정보와 같은 물품(article)을 유형적인 기계 판독 가능 매체 상에 적어도 일시적으로 저장할 수 있다.
본 명세서에서 사용되는 바와 같은 모듈은 하드웨어, 소프트웨어 및/또는 펌웨어의 임의의 조합을 지칭한다. 예로서, 모듈은 마이크로컨트롤러에 의해 실행되도록 적응된 코드를 저장하기 위한 비일시적 매체와 관련된 마이크로컨트롤러와 같은 하드웨어를 포함한다. 따라서, 모듈에 대한 언급은 일 실시예에서 비일시적 매체 상에 유지될 코드를 인식 및/또는 실행하도록 특별히 구성된 하드웨어를 지칭한다. 또한, 다른 실시예에서, 모듈의 사용은 미리 결정된 연산들을 수행하기 위해 마이크로컨트롤러에 의해 실행되도록 특별히 적응된 코드를 포함하는 비일시적 매체를 지칭한다. 그리고, 추측할 수 있는 바와 같이, 또 다른 실시예에서, 모듈이라는 용어는 (이 예에서) 마이크로컨트롤러와 비일시적 매체의 조합을 지칭할 수 있다. 종종, 분리된 것으로 도시된 모듈 경계들은 일반적으로 변하고, 잠재적으로 중첩되다. 예를 들어, 제1 모듈 및 제2 모듈은 하드웨어, 소프트웨어, 펌웨어 또는 이들의 조합을 공유할 수 있는 반면, 소정의 독립적인 하드웨어, 소프트웨어 또는 펌웨어를 잠재적으로 유지할 수 있다. 일 실시예에서, 논리라는 용어의 사용은 트랜지스터들, 레지스터들 또는 다른 하드웨어, 예를 들어 프로그래밍 가능 논리 디바이스들과 같은 하드웨어를 포함한다.
일 실시예에서 '구성된'이라는 표현의 사용은 지정된 또는 결정된 작업을 수행하기 위해 장치, 하드웨어, 논리 또는 요소를 배열, 조립, 제조, 판매 제의, 수입 및/또는 설계하는 것을 지칭한다. 이 예에서, 동작하고 있지 않은 장치 또는 그의 요소는 상기 지정된 작업을 수행하도록 설계, 결합 및/또는 상호 연결되는 경우에 여전히 지정된 작업을 수행하도록 '구성된다'. 단지 설명을 위한 예로서, 논리 게이트는 동작 동안 0 또는 1을 제공할 수 있다. 그러나, 클럭에 인에이블 신호를 제공하도록 '구성된' 논리 게이트는 1 또는 0을 제공할 수 있는 모든 잠재적 논리 게이트를 포함하지는 않는다. 대신에, 논리 게이트는 동작 동안 1 또는 0 출력이 클럭을 인에이블하는 소정의 방식으로 결합된 논리 게이트이다. '구성된'이라는 용어의 사용은 동작을 요구하지 않는 대신에 장치, 하드웨어 및/또는 요소의 잠재적 상태에 초점을 맞춘 것이며, 잠재적 상태에서 장치, 하드웨어 및/또는 요소는 장치, 하드웨어 및/또는 요소가 동작하고 있을 때 특정 작업을 수행하도록 설계된다는 점에 다시 한 번 유의한다.
또한, 일 실시예에서 '~하기 위해', '~할 수 있는' 및/또는 '~하도록 동작할 수 있는'이라는 표현들의 사용은 소정의 장치, 논리, 하드웨어 및/또는 요소가 지정된 방식으로의 장치, 논리, 하드웨어 및/또는 요소의 사용을 가능하게 하는 방식으로 설계된 것을 지칭한다. 일 실시예에서 '~하기 위해', '~할 수 있는' 또는 '~하도록 동작할 수 있는'이라는 표현들의 사용은 장치, 논리, 하드웨어 및/또는 요소의 잠재적 상태를 지칭하며, 잠재적 상태에서 장치, 논리, 하드웨어 및/또는 요소는 동작하고 있는 것이 아니라, 지정된 방식으로의 장치의 사용을 가능하게 하는 방식으로 설계된다는 점에 다시 한 번 유의한다.
본 명세서에서 사용되는 바와 같이, 값은 숫자, 상태, 논리 상태 또는 이진 논리 상태의 임의의 알려진 표현을 포함한다. 종종, 논리 레벨들, 논리 값들 또는 논리적 값들의 사용은 또한 이진 논리 상태들을 간단히 표현하는 1들 및 0들로 지칭된다. 예를 들어, 1은 하이 논리 레벨을 지칭하고, 0은 로우 논리 레벨을 지칭한다. 일 실시예에서, 트랜지스터 또는 플래시 셀과 같은 저장 셀은 단일 논리 값 또는 다수의 논리 값을 유지할 수 있다. 그러나 컴퓨터 시스템들에서는 값들의 다른 표현들이 사용되어 왔다. 예를 들어, 십진수 10은 910의 이진값 및 십육진 문자 A로 표현될 수도 있다. 따라서, 값은 컴퓨터 시스템에서 유지될 수 있는 정보의 임의의 표현을 포함한다.
또한, 상태들은 값들 또는 값들의 부분들에 의해 표현될 수 있다. 예로서, 논리 1과 같은 제1 값은 디폴트 또는 초기 상태를 표현할 수 있는 반면, 논리 0과 같은 제2 값은 비 디폴트 상태를 표현할 수 있다. 또한, 재설정 및 설정이라는 용어들은 일 실시예에서 각각 디폴트 및 업데이트된 값 또는 상태를 지칭한다. 예를 들어, 디폴트 값은 잠재적으로 하이 논리 값, 즉 재설정을 포함할 수 있는 반면, 업데이트된 값은 잠재적으로 로우 논리 값, 즉 설정을 포함할 수 있다. 값들의 임의의 조합이 임의 수의 상태들을 표현하는 데 이용될 수 있다는 점에 유의한다.
전술한 방법들, 하드웨어, 소프트웨어, 펌웨어 또는 코드의 실시예들은 처리 요소에 의해 실행 가능한, 기계 액세스 가능, 기계 판독 가능, 컴퓨터 액세스 가능 또는 컴퓨터 판독 가능 매체 상에 저장된 명령어들 또는 코드를 통해 구현될 수 있다. 비일시적 기계 액세스 가능/판독 가능 매체는 컴퓨터 또는 전자 시스템과 같은 기계에 의해 판독 가능한 형태로 정보를 제공(즉, 저장 및/또는 전송)하는 임의의 메커니즘을 포함한다. 예를 들어, 비일시적 기계 액세스 가능 매체는 랜덤 액세스 메모리(RAM), 예를 들어 정적 RAM(SRAM) 또는 동적 RAM(DRAM); ROM; 자기 또는 광학 저장 매체; 플래시 메모리 디바이스들; 전기 저장 디바이스들; 광학 저장 디바이스들; 음향 저장 디바이스들; 일시적(전파) 신호들(예를 들어, 반송파들, 적외선 신호들, 디지털 신호들)로부터 수신된 정보를 유지하기 위한 다른 형태의 저장 디바이스들 등을 포함하며, 일시적 신호들은 그들로부터 정보를 수신할 수 있는 비일시적 매체들과 구별된다.
본 개시의 실시예들을 수행하기 위한 논리를 프로그래밍하는 데 사용되는 명령어들은 DRAM, 캐시, 플래시 메모리 또는 다른 저장소와 같은 시스템 내의 메모리 내에 저장될 수 있다. 또한, 명령어들은 네트워크를 통해 또는 다른 컴퓨터 판독 가능 매체들을 통해 배포될 수 있다. 따라서, 기계 판독 가능 매체는 플로피 디스켓들, 광학 디스크들, 컴팩트 디스크 판독 전용 메모리(CD-ROM들) 및 광자기 디스크들, 판독 전용 메모리(ROM들), 랜덤 액세스 메모리(RAM), 소거 및 프로그래밍 가능 판독 전용 메모리(EPROM), 전기적 소거 및 프로그래밍 가능 판독 전용 메모리(EEPROM), 자기 또는 광학 카드들, 플래시 메모리, 또는 전기, 광학, 음향 또는 다른 형태의 전파 신호들(예를 들어, 반송파들, 적외선 신호들, 디지털 신호들 등)을 통한 인터넷을 통한 정보의 전송에 사용되는 유형적인 기계 판독 가능 저장소와 같이 기계(예를 들어, 컴퓨터)에 의해 판독 가능한 형태로 정보를 저장 또는 전송하기 위한 메커니즘을 포함할 수 있지만, 이에 한정되지 않는다. 따라서, 컴퓨터 판독 가능 매체는 기계(예를 들어, 컴퓨터)에 의해 판독 가능한 형태로 전자 명령어들 또는 정보를 저장 또는 전송하기에 적합한 임의의 타입의 유형적인 기계 판독 가능 매체를 포함한다.
본 명세서 전반에서 "하나의 실시예" 또는 "일 실시예"에 대한 언급은 실시예와 관련하여 설명되는 특정 특징, 구조 또는 특성이 본 개시의 적어도 하나의 실시예에 포함됨을 의미한다. 따라서, 본 명세서 전반의 다양한 곳들에서의 "하나의 실시예에서" 또는 "일 실시예에서"라는 표현들의 출현들은 반드시 모두가 동일한 실시예를 지칭하는 것은 아니다. 또한, 특정 특징들, 구조들 또는 특성들은 하나 이상의 실시예에서 임의의 적절한 방식으로 조합될 수 있다.
전술한 명세서에서는, 특정 실시예들을 참조하여 상세한 설명이 이루어졌다. 그러나, 첨부된 청구항들에 설명된 바와 같은 본 개시의 더 넓은 사상 및 범위를 벗어나지 않으면서 다양한 수정들 및 변경들이 이루어질 수 있음이 명백할 것이다. 따라서, 명세서 및 도면들은 제한적인 것이 아니라 예시적인 것으로 간주되어야 한다. 또한, 실시예 및 다른 예시적인 언어의 전술한 사용은 반드시 동일한 실시예 또는 동일한 예를 지칭하는 것이 아니라, 잠재적으로 동일한 실시예뿐만 아니라 상이하고 구별되는 실시예들을 지칭할 수 있다.

Claims (20)

  1. 프로세서로서,
    제1 레지스터, 제2 레지스터 및 제3 레지스터를 포함하는 범용 레지스터 파일 ― 상기 제1 레지스터는 제1 데이터 아이템을 저장함 ―; 및
    명령어를 실행하기 위한 논리 회로를 포함하는 실행 유닛
    을 포함하고, 상기 명령어는:
    상기 제1 레지스터를 표현하는 제1 식별자;
    상기 제2 레지스터를 표현하는 제2 식별자; 및
    라운딩 규칙에 대응하는 식별 값을 저장하는 상기 제3 레지스터를 표현하는 제3 식별자
    를 포함하고, 상기 실행 유닛은 상기 명령어를 실행하여:
    상기 제1 데이터 아이템에 기초하여 제2 데이터 아이템을 생성하고;
    상기 명령어에 의해 지정된 상기 라운딩 규칙에 따라 상기 제2 데이터 아이템을 라운딩하고;
    상기 제2 레지스터에 상기 라운딩된 제2 데이터 아이템을 저장하는, 프로세서.
  2. 제1 항에 있어서,
    상기 명령어는 상기 프로세서와 관련된 명령어 세트 아키텍처(ISA)에서 지정되는, 프로세서.
  3. 삭제
  4. 제1 항에 있어서,
    상기 제1 레지스터는 상기 제2 레지스터와 다르거나 상기 제1 레지스터와 동일한 것인, 프로세서.
  5. 제1 항에 있어서,
    상기 제1 레지스터에 저장된 상기 제1 데이터 아이템 및 상기 제2 레지스터에 저장된 상기 제2 데이터 아이템은 부동 소수점 포맷으로 표현되는, 프로세서.
  6. 제1 항에 있어서,
    상기 제1 레지스터에 저장된 상기 제1 데이터 아이템은 부동 소수점 포맷으로 표현되고, 상기 제2 레지스터에 저장된 상기 제2 데이터 아이템은 고정 소수점 포맷으로 표현되는, 프로세서.
  7. 제1 항에 있어서,
    상기 라운딩 규칙은 가장 가까운 값으로 라운딩하는 규칙, 0을 향해 라운딩하는 규칙, 양의 무한대를 향해 라운딩하는 규칙 또는 음의 무한대를 향해 라운딩하는 규칙 중 하나인, 프로세서.
  8. 제1 항에 있어서,
    상기 명령어는 덧셈, 뺄셈, 곱셈 또는 나눗셈 연산 중 하나를 포함하는, 프로세서.
  9. 제1 항에 있어서,
    상기 제1 레지스터에 저장된 상기 제1 데이터 아이템의 값은 부호 비트를 포함하는 복수의 비트들에 의해 표현되고, 비트들의 제1 서브세트가 지수를 표현하고, 비트들의 제2 세트가 분수를 표현하는, 프로세서.
  10. 제1 항에 있어서,
    상기 제1 레지스터 및 상기 제2 레지스터는 동일한 길이를 갖는 부동 소수점 레지스터들인, 프로세서.
  11. 제1 항에 있어서,
    상기 제1 레지스터 및 상기 제2 레지스터는 부동 소수점 레지스터들이고, 상기 제1 레지스터는 상기 제2 레지스터보다 더 많은 비트들을 포함하는, 프로세서.
  12. 제1 항에 있어서,
    상기 제1 레지스터는 부동 소수점 값을 저장하기 위한 부동 소수점 레지스터이고, 상기 제2 레지스터는 정수를 저장하기 위한 범용 레지스터이고, 상기 명령어는 상기 명령어에 지정된 상기 라운딩 규칙을 사용하는 실수 대 정부 변환 연산을 포함하는, 프로세서.
  13. 제1 항에 있어서,
    상기 제1 레지스터는 정수를 저장하기 위한 범용 레지스터이고, 상기 제2 레지스터는 실수 값을 저장하기 위한 부동 소수점 레지스터이고, 상기 명령어는 상기 명령어에 지정된 상기 라운딩 규칙을 사용하는 정수 대 실수 변환 연산을 포함하는, 프로세서.
  14. 제1 항에 있어서,
    상기 라운딩 규칙은 정의되지 않은 수를 0으로 변환하는 규칙, 정의되지 않은 수를 복수의 비트들을 사용하여 표현 가능한 최대 수로 변환하는 규칙 또는 정의되지 않은 수를 복수의 비트들을 사용하여 표현 가능한 최소 수로 변환하는 규칙 중 적어도 하나인, 프로세서.
  15. 삭제
  16. 제1 항에 있어서,
    실행될 때, 상기 프로세서는 상기 논리 회로를 사용하여, 미리 결정된 수의 프로세서 클럭 사이클들을 사용하여 상기 명령어를 완료하는, 프로세서.
  17. 시스템으로서,
    메모리; 및
    상기 메모리에 통신 가능하게 결합된 프로세서
    를 포함하고, 상기 프로세서는:
    제1 레지스터, 제2 레지스터 및 제3 레지스터를 포함하는 범용 레지스터 파일 ― 상기 제1 레지스터는 제1 데이터 아이템을 저장함 ―; 및
    명령어를 인코딩하는 논리 회로를 포함하는 실행 유닛
    을 포함하고, 상기 명령어는:
    상기 제1 레지스터를 표현하는 제1 식별자;
    상기 제2 레지스터를 표현하는 제2 식별자; 및
    라운딩 규칙에 대응하는 식별 값을 저장하는 상기 제3 레지스터를 표현하는 제3 식별자
    를 포함하고, 상기 실행 유닛은 상기 명령어를 실행하여:
    상기 제1 데이터 아이템에 기초하여 제2 데이터 아이템을 생성하고;
    상기 명령어에 의해 지정된 상기 라운딩 규칙에 따라 상기 제2 데이터 아이템을 라운딩하고;
    상기 제2 레지스터에 상기 라운딩된 제2 데이터 아이템을 저장하는, 시스템.
  18. 삭제
  19. 제17 항에 있어서,
    상기 제1 레지스터는 상기 제2 레지스터와 다르거나 상기 제1 레지스터와 동일한 것인, 시스템.
  20. 제17 항에 있어서,
    상기 제1 레지스터에 저장된 상기 제1 데이터 아이템 및 상기 제2 레지스터에 저장된 상기 제2 데이터 아이템은 부동 소수점 포맷으로 표현되는, 시스템.
KR1020197018849A 2016-12-15 2017-12-15 내장형 라운딩 규칙을 갖는 부동 소수점 명령어 포맷 KR102471606B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201662434521P 2016-12-15 2016-12-15
US62/434,521 2016-12-15
US15/841,959 2017-12-14
US15/841,959 US20180173527A1 (en) 2016-12-15 2017-12-14 Floating point instruction format with embedded rounding rule
PCT/US2017/066677 WO2018112345A1 (en) 2016-12-15 2017-12-15 Floating point instruction format with embedded rounding rule

Publications (2)

Publication Number Publication Date
KR20190104329A KR20190104329A (ko) 2019-09-09
KR102471606B1 true KR102471606B1 (ko) 2022-11-25

Family

ID=62559336

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197018849A KR102471606B1 (ko) 2016-12-15 2017-12-15 내장형 라운딩 규칙을 갖는 부동 소수점 명령어 포맷

Country Status (5)

Country Link
US (1) US20180173527A1 (ko)
EP (1) EP3555742B1 (ko)
KR (1) KR102471606B1 (ko)
CN (1) CN110140109A (ko)
WO (1) WO2018112345A1 (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10310814B2 (en) * 2017-06-23 2019-06-04 International Business Machines Corporation Read and set floating point control register instruction
US10379851B2 (en) 2017-06-23 2019-08-13 International Business Machines Corporation Fine-grained management of exception enablement of floating point controls
US10514913B2 (en) 2017-06-23 2019-12-24 International Business Machines Corporation Compiler controls for program regions
US10684852B2 (en) 2017-06-23 2020-06-16 International Business Machines Corporation Employing prefixes to control floating point operations
US10481908B2 (en) 2017-06-23 2019-11-19 International Business Machines Corporation Predicted null updated
US10725739B2 (en) 2017-06-23 2020-07-28 International Business Machines Corporation Compiler controls for program language constructs
US10740067B2 (en) 2017-06-23 2020-08-11 International Business Machines Corporation Selective updating of floating point controls
US11366663B2 (en) 2018-11-09 2022-06-21 Intel Corporation Systems and methods for performing 16-bit floating-point vector dot product instructions
CN112395003A (zh) * 2019-08-14 2021-02-23 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
CN112395004A (zh) * 2019-08-14 2021-02-23 上海寒武纪信息科技有限公司 运算方法、***及相关产品
CN111486888A (zh) * 2020-04-14 2020-08-04 新石器慧通(北京)科技有限公司 误差校正方法、装置及无人车辆
US11269632B1 (en) * 2021-06-17 2022-03-08 International Business Machines Corporation Data conversion to/from selected data type with implied rounding mode
US20230308113A1 (en) * 2022-03-25 2023-09-28 International Business Machines Corporation Reduced logic conversion of binary integers to binary coded decimals

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030055860A1 (en) * 1998-10-06 2003-03-20 Jean-Pierre Giacalone Rounding mechanisms in processors
US20080089448A1 (en) * 2006-09-29 2008-04-17 Analog Devices, Inc. Fixed-point implementation of a joint detector
US20100241834A1 (en) * 2007-11-05 2010-09-23 Sandbridge Technologies, Inc. Method of encoding using instruction field overloading
US20110029760A1 (en) * 2009-07-28 2011-02-03 Via Technologies, Inc. Non-atomic scheduling of micro-operations to perform round instruction
US20110093682A1 (en) * 1994-12-02 2011-04-21 Alexander Peleg Method and apparatus for packing data
US20120324136A1 (en) * 2011-06-14 2012-12-20 Nimrod Alexandron Representation of data relative to varying thresholds
US20130151576A1 (en) * 2011-12-07 2013-06-13 Arm Limited Apparatus and method for rounding a floating-point value to an integral floating-point value
US20140095891A1 (en) * 2012-09-28 2014-04-03 Gilbert M. Wolrich Instruction set for sha1 round processing on 128-bit data paths

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5267186A (en) * 1990-04-02 1993-11-30 Advanced Micro Devices, Inc. Normalizing pipelined floating point processing unit
DE4434895C2 (de) * 1993-12-23 1998-12-24 Hewlett Packard Co Verfahren und Vorrichtung zur Behandlung von Ausnahmebedingungen
US5511016A (en) * 1994-11-30 1996-04-23 International Business Machines Corporation Method for store rounding and circuit therefor
US5812439A (en) * 1995-10-10 1998-09-22 Microunity Systems Engineering, Inc. Technique of incorporating floating point information into processor instructions
US5892697A (en) * 1995-12-19 1999-04-06 Brakefield; James Charles Method and apparatus for handling overflow and underflow in processing floating-point numbers
US6058410A (en) * 1996-12-02 2000-05-02 Intel Corporation Method and apparatus for selecting a rounding mode for a numeric operation
US6253311B1 (en) * 1997-11-29 2001-06-26 Jp First Llc Instruction set for bi-directional conversion and transfer of integer and floating point data
US7058937B2 (en) * 2002-04-12 2006-06-06 Intel Corporation Methods and systems for integrated scheduling and resource management for a compiler
US9223751B2 (en) * 2006-09-22 2015-12-29 Intel Corporation Performing rounding operations responsive to an instruction
US8327120B2 (en) * 2007-12-29 2012-12-04 Intel Corporation Instructions with floating point control override
US20110004644A1 (en) * 2009-07-03 2011-01-06 Via Technologies, Inc. Dynamic floating point register precision control
CN101692202B (zh) * 2009-09-27 2011-12-28 龙芯中科技术有限公司 一种64比特浮点乘加器及其浮点运算流水节拍处理方法
US8914430B2 (en) * 2010-09-24 2014-12-16 Intel Corporation Multiply add functional unit capable of executing scale, round, GETEXP, round, GETMANT, reduce, range and class instructions
BR112014004600A2 (pt) * 2011-09-26 2017-06-13 Intel Corp Instrução e lógica para prover operação de carga/armazenamento de vetor com funcionalidade de passo
WO2013095535A1 (en) * 2011-12-22 2013-06-27 Intel Corporation Floating point rounding processors, methods, systems, and instructions
US9513871B2 (en) * 2011-12-30 2016-12-06 Intel Corporation Floating point round-off amount determination processors, methods, systems, and instructions
WO2014105011A1 (en) * 2012-12-26 2014-07-03 Intel Corporation Coalescing adjacent gather/scatter operations
CN106030510A (zh) * 2014-03-26 2016-10-12 英特尔公司 三源操作数浮点加法处理器、方法、***和指令

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110093682A1 (en) * 1994-12-02 2011-04-21 Alexander Peleg Method and apparatus for packing data
US20030055860A1 (en) * 1998-10-06 2003-03-20 Jean-Pierre Giacalone Rounding mechanisms in processors
US20080089448A1 (en) * 2006-09-29 2008-04-17 Analog Devices, Inc. Fixed-point implementation of a joint detector
US20100241834A1 (en) * 2007-11-05 2010-09-23 Sandbridge Technologies, Inc. Method of encoding using instruction field overloading
US20110029760A1 (en) * 2009-07-28 2011-02-03 Via Technologies, Inc. Non-atomic scheduling of micro-operations to perform round instruction
US20120324136A1 (en) * 2011-06-14 2012-12-20 Nimrod Alexandron Representation of data relative to varying thresholds
US20130151576A1 (en) * 2011-12-07 2013-06-13 Arm Limited Apparatus and method for rounding a floating-point value to an integral floating-point value
US20140095891A1 (en) * 2012-09-28 2014-04-03 Gilbert M. Wolrich Instruction set for sha1 round processing on 128-bit data paths

Also Published As

Publication number Publication date
WO2018112345A1 (en) 2018-06-21
CN110140109A (zh) 2019-08-16
EP3555742A4 (en) 2020-08-26
EP3555742A1 (en) 2019-10-23
KR20190104329A (ko) 2019-09-09
EP3555742B1 (en) 2023-07-19
US20180173527A1 (en) 2018-06-21

Similar Documents

Publication Publication Date Title
KR102471606B1 (ko) 내장형 라운딩 규칙을 갖는 부동 소수점 명령어 포맷
RU2656730C2 (ru) Процессоры, способы, системы и команды для сложения трех операндов-источников с плавающей запятой
US10140046B2 (en) Supporting data compression using match scoring
CN117349584A (zh) 实行16位浮点矩阵点积指令的***和方法
CN112099852A (zh) 可变格式、可变稀疏矩阵乘法指令
JP6711480B2 (ja) ベクトルインデックスロードおよびストアのための方法および装置
CN110879724A (zh) 用于深度学习和其它算法的fp16-s7e8混合精度
US20190065202A1 (en) Pointer-size controlled instruction processing
CN117724766A (zh) 用于执行将矩阵变换为行交错格式的指令的***和方法
JP7351060B2 (ja) 浮動小数点データを圧縮するためのシステム
CN117724763A (zh) 用于矩阵操作加速器的指令的装置、方法和***
JP2017538213A (ja) アウトオブオーダーハードウェアソフトウェア協調設計プロセッサにおいてスタック同期命令を用いてプレディケート値のスタックを実装し維持する方法および装置
JP2019197531A (ja) 連鎖タイル演算を実施するためのシステムおよび方法
JP5947879B2 (ja) マスクレジスタを用いてジャンプを行うシステム、装置、および方法
JP5806748B2 (ja) 書き込みマスク・レジスタの末尾の最下位マスキング・ビットを判定するためのシステム、装置、および方法
JP2018500651A (ja) マスクレジスタとベクトルレジスタとの間で可変に拡張するための方法および装置
KR102161682B1 (ko) 이미디에이트 핸들링 및 플래그 핸들링을 위한 프로세서 및 방법
JP6835436B2 (ja) マスクをマスク値のベクトルに拡張するための方法および装置
KR20210028075A (ko) 범위-특정 계수 세트를 사용하여 단항 함수를 수행하는 시스템
JP6807073B2 (ja) 高速ベクトルによる動的なメモリ競合検出
CN116860334A (zh) 用于计算两个区块操作数中的半字节的数量积的***和方法
JP2018507453A (ja) 命令フローを最適化するチェックを実行するための装置および方法
CN116880906A (zh) 用于8位浮点矩阵点积指令的装置、方法和***
JP2009093513A (ja) 命令ビット長削減方法
CN104823153A (zh) 引导变化预测器逻辑

Legal Events

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