KR20090101064A - 단정밀도 부동 소수점 데이터의 저장 방법 및 프로세서 - Google Patents

단정밀도 부동 소수점 데이터의 저장 방법 및 프로세서 Download PDF

Info

Publication number
KR20090101064A
KR20090101064A KR1020080120003A KR20080120003A KR20090101064A KR 20090101064 A KR20090101064 A KR 20090101064A KR 1020080120003 A KR1020080120003 A KR 1020080120003A KR 20080120003 A KR20080120003 A KR 20080120003A KR 20090101064 A KR20090101064 A KR 20090101064A
Authority
KR
South Korea
Prior art keywords
precision floating
register
point data
point
processing
Prior art date
Application number
KR1020080120003A
Other languages
English (en)
Other versions
KR101026821B1 (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 KR20090101064A publication Critical patent/KR20090101064A/ko
Application granted granted Critical
Publication of KR101026821B1 publication Critical patent/KR101026821B1/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/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
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • 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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • 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/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
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing

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)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Nonlinear Science (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)

Abstract

본 발명은 단(single)정밀도 부동 소수점 데이터 및 배(double)정밀도 부동 소수점 데이터를 처리하는 프로세서에 있어서, 새로운 단정밀도 부동 소수점 데이터의 저장 방법을 제안하여, 바이패스 기능을 위한 의존 관계 검출 회로를 구성하는 하드웨어량을 가능한 한 저감하는 것을 과제로 한다.
본 발명의 단정밀도 부동 소수점 데이터 저장 방법에 따르면, 배정밀도 부동 소수점 데이터를 저장할 수 있는 크기를 갖는, 배정밀도 부동 소수점 데이터와 단정밀도 부동 소수점 데이터가 저장되는 레지스터를 구비하는 프로세서에 있어서, 단정밀도 부동 소수점 데이터 처리가 지정된 경우, 상기 레지스터의 상위 절반에 입력한 단정밀도 부동 소수점 데이터를 기록하고, 상기 레지스터의 하위 절반에 올제로(all zero)를 기록한다.

Description

단정밀도 부동 소수점 데이터의 저장 방법 및 프로세서{SINGLE-PRECISION FLOATING-POINT DATA STORING METHOD AND PROCESSOR}
본 발명은, 프로세서에 관한 것으로, 더욱 상세하게는 프로세서에 있어서의 단정밀도 부동 소수점 데이터의 저장 방법에 관한 것이다.
프로세서의 처리 성능을 향상시키기 위하여, 연산의 입력 데이터를 획득하여 연산을 실행할 때에, 선행하는 명령의 결과가 연산기로부터 출력되어 부동 소수점 레지스터에 기록되기 전에 상기 연산기로부터의 출력 데이터를 후속의 입력 데이터로서 사용하는 바이패스 기능이 있다. 이 바이패스 기능을 실현하기 위해서는, 선행하는 명령의 출력과의 의존 관계를 검출하는 회로가 필요하다.
그런데, 예컨대 SPARC-V9(SPARC: 등록 상표) 아키텍처에서의 부동 소수점 레지스터는, 레지스터 어드레스가 5비트이기 때문에, 32개의 지시가 가능하다. 도 18에 SPARC-V9 아키텍처에서의 부동 소수점 레지스터의 구성을 도시한다. 단정밀도 부동 소수점 레지스터(4바이트) 32개를 %f0, %f1, %f2, …, %f30, %f31과 같이 표시하고, 배정밀도 부동 소수점 레지스터(8바이트) 32개를 %d0, %d2, %d4, …, %d62와 같이 표시한다. 배정밀도 부동 소수점 레지스터는 짝수 번호만 어드레스의 지정 이 가능하다. 할당은, 배정밀도 부동 소수점 레지스터 %d(n)(0≤n≤30)(8바이트)은, 단정밀도 부동 소수점 레지스터 %f(n)(4바이트)과 %f(n+1)(4바이트)의 2개를 결합한 것에 대응한다.
이 SPARC-V9 아키텍처와 같이, 단정밀도 부동 소수점 레지스터가 4바이트의 레지스터이고, 배정밀도 부동 소수점 레지스터가 이것을 2개 조합한 8바이트의 레지스터라고 하는 사용 방법을 취하면, 예컨대 배정밀도 부동 소수점 데이터(8바이트)를 %d0에 입력한다고 하는 연산을 행할 때, 상술한 바이패스 기능을 실현하기 위하여, %f0(4바이트)과 %f1(4바이트) 2개의 출력 타이밍을 검출할 필요가 있다. 이와 같이 %d0으로부터 %d30까지의 배정밀도 부동 소수점 레지스터를 위한 의존 관계 검출 회로는, 8바이트의 레지스터만으로 의존 관계를 검출할 뿐인 회로에 비하여, 보다 많은 회로를 필요로 한다.
프로세서에 있어서 회로량이 증가해 버리면, 가격 대 성능비(cost per performance)가 떨어져 버릴 뿐만 아니라, 프로세서의 동작 주파수가 저하된다. 이에 따라, 프로세서의 성능이 저하되어 버린다. 그래서, 프로세서 내에서의 회로량을 가능한 한 억제하는 것이 요구된다.
그래서, 본 발명은, 단정밀도 부동 소수점 데이터 및 배정밀도 부동 소수점 데이터를 처리하는 프로세서에 있어서, 새로운 단정밀도 부동 소수점 데이터의 저장 방법을 제안함으로써, 바이패스 기능을 위한 의존 관계 검출 회로를 구성하는 하드웨어량을 가능한 한 저감하는 것을 목적으로 한다.
본 단정밀도 부동 소수점 데이터의 저장 방법은, 배정밀도 부동 소수점 데이터를 저장할 수 있는 크기를 갖는, 배정밀도 부동 소수점 데이터와 단정밀도 부동 소수점 데이터가 저장되는 레지스터를 구비하는 프로세서에 있어서, 단정밀도 부동 소수점 데이터 처리가 지정된 경우, 상기 레지스터의 상위 절반에 입력한 단정밀도 부동 소수점 데이터를 기록하고, 상기 레지스터의 하위 절반에 올제로(all zero)를 기록한다.
개시된 단정밀도 부동 소수점 데이터의 저장 방법에 따르면, 단정밀도 부동 소수점 데이터의 처리를 처리하는 경우에도 배정밀도 소수점 레지스터로 처리하는 것이 가능해지기 때문에, 레지스터의 의존 관계 검출 회로로서 배정밀도 소수점 레지스터의 의존 관계 검출 회로를 그대로 이용할 수 있게 된다. 또한, 단정밀도 부동 소수점 데이터를 대체 단정밀도 부동 소수점 데이터로서 처리함으로써 연산기 입력 레지스터에의 데이터 선택 회로를 크게 삭감할 수 있다. 따라서, 프로세서 내 에서의 하드웨어량을 저감할 수 있으며, 이에 따라 프로세서의 복잡화를 방지할 수 있어서 동작 주파수를 향상시킬 수 있다.
이하, 도면을 참조하여, 본 발명의 실시형태에 대해서 설명한다.
우선 처음에, 본 발명의 실시예를 적용하는 프로세서에 대해서 설명한다.
SPARC-V9에 있어서의 부동 소수점 레지스터의 구성에 대해서는 상술하였는데, 본 발명의 실시예를 적용하는 프로세서는, 부동 소수점 레지스터를 더욱 확장한다.
도 1에 도시된 바와 같이, 이 프로세서에서는, 확장 전치 명령을 이용하여 확장 연산 레지스터(XAR)라고 하는 레지스터를 갱신하여, 부동 소수점 레지스터 어드레스가 나타내는 영역을 확장한다. 다시 말하면, 확장 전치 명령에 의해 부동 소수점 레지스터에 액세스하는 명령을 수식(修飾)하여, 부동 소수점 레지스터의 영역을 확장하게 된다. 보다 상세한 것에 대해서는 후술하겠지만, 예컨대 확장 연산 레지스터(XAR) 중 3비트를 부동 소수점 레지스터 어드레스로서 추가하여, 배정밀도 부동 소수점 레지스터(8바이트)를 256개까지 증가시키는 구성으로 되어 있다.
도 1에 도시된 부동 소수점 레지스터 구조를 구비하는 프로세서에서, 배정밀도 부동 소수점 레지스터를 %d0으로부터 %d510(짝수 번호만 지정 가능)의 256개까지 지정할 수 있는 한편, 단정밀도 부동 소수점 레지스터를 %f0으로부터 %f255까지 4바이트의 단위로 256개 지정할 수 있도록 하면, 하드웨어로서 확장 레지스터의 의존 관계를 검출하기 위한 회로가 상당히 커져 버린다.
그래서 도 1에 도시된 확장된 부동 소수점 레지스터를 구비하는 프로세서에서의 단정밀도 부동 소수점 데이터 저장 방법에 대해서, 이하에서 설명한다. 또한, 본 발명의 실시예로써 이하에서 설명하지만, 본 발명은 이제부터 설명하는 실시예에 한정되는 것은 아니며, 그 요지를 일탈하지 않는 범위에서 여러 가지 응용을 할 수 있음을 당연한 것이다. 다시 말하면 본 발명의 단정밀도 부동 소수점 데이터 저장 방법은, 실시예의 프로세서 구조에 한정되지 않고 어떠한 구조의 프로세서여도 좋다.
본 실시예에서는, 확장 연산 레지스터(XAR)에 의해 단정밀도 부동 소수점 명령이 확장된 경우에, 단정밀도 부동 소수점 데이터를 배정밀도 부동 소수점 데이터 길이인 8바이트 레지스터의 상위 4바이트에 배치하고, 하위 4바이트에는 올제로를 배치하여 데스티네이션(destination) 레지스터에 기록하도록 정의한다. 이러한 형식으로 단정밀도 부동 소수점 데이터를 저장하는 것을 대체 단정밀도 부동 소수점 데이터라고 부르기로 한다. 대체 단정밀도 부동 소수점 데이터의 포맷을 도 2에 도시한다.
그에 대응하여, 통상의 단정밀도 부동 소수점 데이터 4바이트만을 부동 소수점 레지스터에 저장하는 것을 통상 단정밀도 부동 소수점 데이터라고 부르기로 한다. 통상 단정밀도 부동 소수점 데이터의 포맷을 도 3에 도시한다.
이와 같이 본 실시예에서는, 단정밀도 부동 소수점 데이터를, 대체 단정밀도 부동 소수점 데이터, 다시 말하면 8바이트의 데이터로서 저장할 수 있도록 구성한다. 이에 따라, 종래부터 SPARC-V9로 정의되어 있는 %d32에서 %d62까지의 레지스터 나, 또한 확장 연산 레지스터(XAR)에 의해 레지스터 확장이 지정된 %d64에서 %d510까지의 레지스터를 이용하여 단정밀도 부동 소수점 연산이 가능해진다.
또한, 확장 연산 레지스터(XAR)에 의해 단정밀도 부동 소수점 명령이 수식되었을 때에는, %d32보다 작은 레지스터 어드레스에 대해서도 마찬가지로 8바이트의 대체 단정밀도 부동 소수점 데이터 레지스터로서 사용하도록 구성한다. 다시 말하면 %d0에서 %d30(8바이트 길이, 짝수번만 지정 가능)으로서 상위 4바이트에 단정밀도 데이터를 저장하고, 하위 4바이트에 올제로를 저장하도록 구성한다.
%f0에서 %f31의 4바이트 레지스터 32개를 이용하는 통상의 단정밀도 부동 소수점 데이터로 저장할 것인지, 대체 단정밀도 부동 소수점 데이터로 저장할 것인지는 다음과 같이 판단한다. 우선, 명령 세트에 확장 연산 레지스터(XAR)를 갱신하는 SXAR(Set XAR) 명령이라고 하는 명령을 정의한다.
확장 연산 레지스터(XAR)는, 도 4에 도시된 구성으로 되어 있다. 도 4의 VAL[밸리드(valid)]은, 1비트폭의 값이며, 밸리드가 설정되어 있는 경우(VAL=1)에 확장 연산 레지스터가 유효한 것을 의미한다. RD는, 확장되는 명령의 데스티네이션 레지스터를 지정하는 어드레스의 확장분의 3비트를 저장하는 영역이다. 또한, RS1∼RS3은 각각 소스 레지스터를 지정하는 어드레스의 확장분의 3비트를 저장하는 어드레스 확장 영역이다. 이 3비트는, 부동 소수점 레지스터를 256개로 확장하기 위하여 기존의 명령으로 부족한 상위 3비트가 되는 것이다. 다시 말하면 확장 연산 레지스터(XAR)의 VAL의 밸리드 비트가 설정되어 있을 때, 확장 어드레스와 부동 소수점 명령의 피연산자 레지스터(operand register) 어드레스 5비트를 이용하여 8바 이트(배정밀도) 레지스터를 256개까지 지정할 수 있도록 되어 있다.
이러한 XAR의 구성에 있어서, 상술한 SXAR 명령에 의해, 확장 연산 레지스터(XAR)의 VAL(밸리드 비트)가 설정되어 있는 경우에, 단정밀도 부동 소수점 처리 명령이 수식(확장)되어 있다고 판단할 수 있으며, 또한 밸리드 비트가 설정되어 있지 않은 경우에는 단정밀도 부동 소수점 처리 명령이 수식되어 있지 않다고 판단할 수 있다.
도 5에, 통상 단정밀도 부동 소수점 데이터로 저장할 것인지, 대체 단정밀도 부동 소수점 데이터로 저장할 것인지를 판단하는 처리의 흐름을 도시한다. 우선, S51에서 단정밀도 부동 소수점 명령을 디코드한다. S52에서, 확장 연산 레지스터(XAR)의 밸리드 비트(VAL)가 유효한지의 여부를 판단한다. S52에서, VAL=1(YES)이면 부동 소수점 레지스터가 확장되어 있다고 하여 대체 단정밀도 부동 소수점 데이터로서 처리하고(S53), S52에서 VAL=0(NO)이면 통상의 단정밀도 부동 소수점 데이터로서 처리한다(S54).
이와 같이, 확장 연산 레지스터(XAR)에 의해 지정 가능해진 확장 레지스터에 관하여는, 단정밀도 부동 소수점 데이터의 처리를 처리하는 경우에도, 8바이트 데이터 단위로의 레지스터 의존 관계를 검출하기 위한 회로를 이용할 수 있다. 다시 말하면, 종래의 배정밀도 부동 소수점 데이터의 레지스터 의존 관계 검출 회로를 이용할 수 있기 때문에, 4바이트 데이터 단위의 레지스터 의존 관계 검출 회로는 불필요하게 된다.
또한, 보다 상세한 것은 후술하겠지만, 부동 소수점 레지스터의 어드레스 생 성이나, 레지스터의 갱신을 4바이트로 할 것인지 8바이트로 할 것인지 등의, 통상 단정밀도 부동 소수점 데이터 처리인지 대체 단정밀도 부동 소수점 데이터 처리인지의 구별은 명령 디코드부가 행하기 때문에, 연산 처리부, 로드 처리부, 스토어 처리부는, 통상 단정밀도 부동 소수점 데이터인지 대체 단정밀도 부동 소수점 데이터인지를 구별할 필요가 없다. 연산 처리부, 로드 처리부, 스토어 처리부에 대해서는 공통의 회로로 처리하는 것이 가능하여, 이들을 구별하기 위한 하드웨어의 추가가 불필요하다.
이하, 본 실시예의 프로세서에 있어서의 단정밀도 부동 소수점 레지스터 연산 처리, 로드 명령 처리, 스토어 명령 처리에 대해서 도면을 참조하여 보다 상세하게 설명한다.
우선, 프로세서의 구성을 도 6에 도시한다.
프로세서(60)는, 1차 명령 캐시(61), 2차 캐시/메모리부(62), 명령 디코드부(63), 레지스터 리네이밍 테이블(64), 연산 처리부(65), 어드레스 생성부(66), 리네이밍 레지스터(67), 로드 처리부(68), 스토어 처리부(69), 고정 소수점 레지스터(70), 부동 소수점 레지스터(71), 1차 데이터 캐시(72), 커밋(commit) 제어부(73), 확장 연산 레지스터(XAR)(74)를 구비한다.
1차 명령 캐시(61), 1차 데이터 캐시(72)는 캐시 메모리이며, 2차 캐시/메모리부(62)는 통상의 메모리 또는 2차 캐시 메모리이다. 고정 소수점 레지스터(70)는 종래의 구성이며, 부동 소수점 레지스터(71)는 확장 연산 레지스터(XAR)(74)로 확장되어, 도 1에 도시된 바와 같은 구성이다.
명령 디코드부(63)는 명령의 디코드를 행한다. 레지스터 리네이밍 테이블(64)은, 래치로 구성된 회로이며, 레지스터의 의존 관계를 검출한다. 연산 처리부(65)는, 연산 처리를 행하는 연산기 등으로 구성된다. 어드레스 생성부(66)는 디코드된 명령으로부터, 액세스하는 어드레스를 생성한다. 리네이밍 레지스터(67)는 연산 처리부(65)로 처리된 결과를 일시적으로 유지하는 레지스터이다. 로드 처리부(68), 스토어 처리부(69)는 로드 명령 또는 스토어 명령을 각각 처리하는 회로이다. 커밋 제어부(73)는, 레지스터 갱신, 메모리 갱신을 제어한다. 또한, 확장 연산 레지스터(XAR)(74)에 의해 단정밀도 부동 소수점 명령이 확장되었을 때에는, 대체 단정밀도 부동 소수점 데이터로서 8바이트 길이의 단정밀도 부동 소수점 데이터를 처리한다. 또한, 대체 단정밀도 부동 소수점 데이터의 하위 4바이트는, 갱신시에 올제로로 한다.
예를 들어, 도 7에서는, 부동 소수점 레지스터 %d0에 대체 단정밀도 부동 소수점 명령으로 기록하는 경우와, %f0에 통상 단정밀도 부동 소수점 명령으로 기록하는 경우에 대해서 나타낸다. 부동 소수점 레지스터 %d0(%f0, %f1)에 미리 %f0=X, %f1=Y가 입력되어 있는 상태에서, 단정밀도 부동 소수점 데이터 Z를 기록할 때, 대체 단정밀도 부동 소수점 명령으로 기록할 때에는, %f0=Z, %f1=올제로가 된다. 통상 단정밀도 부동 소수점 명령으로 기록할 때에는, %f0=Z로 갱신되지만, %f1은 갱신되지 않고 %f1=Y인 채가 된다.
그러면, 우선, 부동 소수점 레지스터에 단정밀도 부동 소수점 데이터를 기록하는 통상 단정밀도 부동 소수점 연산, 로드 명령과, 대체 단정밀도 부동 소수점 연산, 로드 명령에 대해서 서술한다.
도 8에, 단정밀도 부동 소수점 연산 명령을 처리하는 연산 처리부의 데이터의 흐름을 도시한다. 도 8에 도시된 바와 같이, 부동 소수점 연산 처리부(65)에서는, 명령 제어를 행하는 명령 디코드부(63)로부터 명령 연산 부호(instruction operation code)를 수취하고, 명령 연산 부호가 연산 부호 디코드(84)된다. 디코드의 결과, 단정밀도 부동 소수점 연산이 지시된 경우에, 부동 소수점 연산기(81)는 입력 레지스터(82)로부터 입력되는 입력 데이터의 상위 4바이트만을 이용한 연산을 행하고, 하위 4바이트는 무시한다. 그리고 출력시에는 상위 4바이트에 연산 결과를, 하위 4바이트에는 제로를 출력하고, 연산 출력 레지스터(83)에 일단 저장하며, 다음 사이클에서 그 8바이트를 리네이밍 레지스터(67)에 기록한다.
또한, 도 9에 단정밀도 부동 소수점 로드 명령을 처리하는 로드 처리부의 데이터의 흐름을 도시한다. 도 9에 도시된 바와 같이, 메모리의 로드 처리를 행하는 1차 데이터 캐시(72)에서는, 명령 제어를 행하는 명령 디코드부(63)로부터 4바이트 길이 로드가 지시되었을 때에는, 로드 출력 레지스터(91)의 상위 4바이트에 대하여 캐시 메모리의 데이터를, 또한 하위 4바이트에는 제로를 일단 저장한다. 그리고, 다음 사이클에서, 합계 8바이트의 데이터를, 어드레스 생성부(66)로부터 지정되는 어드레스에 기초하여, 로드 출력 레지스터(91)로부터 리네이밍 레지스터(67)에 기록한다.
명령 디코드부(63)에서는, 단정밀도 부동 소수점 명령이, 확장 연산 레지스터(XAR)(74)에 의해 수식되어 있는지의 여부를 해독하지만, 도 8에 도시된 연산 처 리부(65) 및 도 9에 도시된 로드 처리부(68)에 대해서는 통상 단정밀도 부동 소수점 명령과 대체 단정밀도 부동 소수점 명령에서 동일한 연산 부호를 생성하여, 송출한다. 각 처리부는 이 연산 부호를 수취하여 단정밀도 부동 소수점 처리를 행하지만, 단정밀도 부동 소수점 연산 처리 및 단정밀도 부동 소수점 로드 처리에 대해서는, 각 처리부가 도 8 및 도 9에 도시된 처리를 행하고 있으면, 통상 단정밀도 부동 소수점 처리와 대체 단정밀도 부동 소수점 처리로 구별하여 처리를 행할 필요는 없다.
통상 단정밀도 부동 소수점 처리를 행할 것인지, 대체 단정밀도 부동 소수점 처리를 행할 것인지라고 하는 제어는 명령 디코드부(63)에서 행한다.
도 10에 통상 단정밀도 부동 소수점 데이터 다시 말하면 4바이트 기록을 하는 경우를, 도 11에 대체 단정밀도 부동 소수점 데이터 다시 말하면 8바이트 기록을 하는 경우를 도시하며, 도면을 참조하여 설명한다.
명령 디코드부(63)는, 부동 소수점 레지스터의 갱신을 행하는 통상 단정밀도 부동 소수점 연산 명령, 또는 통상 단정밀도 부동 소수점 로드 명령의 경우, 레지스터 갱신 지시를 발행하는 커밋 제어부(73)에, 4바이트로 부동 소수점 레지스터(71)의 기록을 행하도록 지시한다. 그에 대응하여, 대체 부동 소수점 연산 명령 또는 대체 부동 소수점 로드 명령의 경우(및 배정밀도 부동 소수점 연산 명령, 배정밀도 부동 소수점 로드 명령의 경우)에, 명령 디코드부(63)는 커밋 제어부(73)에 8바이트로 부동 소수점 레지스터(71)의 기록을 행하도록 지시한다. 8바이트로 기록한다고 하는 지시는, 커밋 제어부, 레지스터 파일부 모두 종래로부터의 배정밀도 부동 소수점 데이터를 기록하는 처리와 동일한 것이다.
커밋 제어부(73)에서는, 이들의 지시, 다시 말하면 부동 소수점 레지스터에 대하여, 4바이트 기록을 행할 것인지 8바이트 기록을 행할 것인지에 관하여 기록하는 1비트를 구비한다(도 10 및 도 11의 「8 바이트 길이 비트」). 이 1비트의 정보에 기초하여, 명령 커밋시에, 연산 결과 또는 로드한 결과를 저장하는 리네이밍 레지스터(67)의 상위로부터 지정된 길이(length)의 데이터를 부동 소수점 레지스터에 기록한다.
도 10의 커밋 제어부(73)의 각 요소를 확대한 부분에 있어서, 부동 소수점 라이트 비트='1', 8바이트 길이 비트='0'이다. 부동 소수점 레지스터에서는, 기록 위치인 부동 소수점 레지스터의 어드레스가 짝수인 경우에는, 8바이트의 부동 소수점 레지스터의 상위 4바이트에 리네이밍 레지스터(67)의 상위 4바이트의 데이터를 기록하고, 기록 위치인 부동 소수점 레지스터의 어드레스가 홀수인 경우에는, 8바이트의 부동 소수점 레지스터의 하위 4바이트에 리네이밍 레지스터(67)의 상위 4바이트의 데이터를 기록한다.
또한, 도 11의 커밋 제어부(73)의 각 요소를 확대한 부분에 있어서, 부동 소수점 라이트 비트='1', 8바이트 길이 비트='1'이다. 부동 소수점 레지스터에서는, 기록 위치인 8바이트의 부동 소수점 레지스터의 상위 4바이트에 리네이밍 레지스터(67)의 상위 4바이트의 데이터를, 8바이트의 부동 소수점 레지스터의 하위 4바이트에 리네이밍 레지스터(67)의 하위 4바이트의 데이터를 기록한다.
이제, 다음으로, 캐시 메모리에 단정밀도 부동 소수점 데이터를 기록하는 통 상 단정밀도 부동 소수점 스토어 명령과, 대체 단정밀도 부동 소수점 스토어 명령에 대해서 설명한다.
도 12에 단정밀도 부동 소수점 스토어 명령을 처리하는 스토어 처리부(69)의 데이터의 흐름을 도시한다. 스토어 처리부(69)에 있어서도, 통상 단정밀도 부동 소수점 스토어 명령인지, 대체 단정밀도 부동 소수점 스토어 명령인지에 의해 처리를 구별하지 않고서, 공통의 처리를 행한다. 즉, 단정밀도 부동 소수점 스토어 명령에 대하여 스토어 처리부는, 부동 소수점 레지스터(71)로부터의 스토어 데이터의 독출을 행하고, 스토어 대상이 되는 4바이트 데이터를, 스토어 처리부(69)에 있는, 스토어 명령마다 1개 할당되는 스토어 버퍼(121)의 상위 4바이트에 정렬(align)하여 기록한다. 스토어 데이터의 하위 4바이트에 관하여는, 캐시에 기록할 때에 무시하므로 어떠한 데이터라도 양호하다.
메모리 어드레스 생성부(75)는, 메모리 어드레스를 생성하여 스토어 처리부(69)로 발송한다.
명령 디코드부(63)에서는, 캐시 메모리 상에 단정밀도 부동 소수점 데이터의 기록을 행하는 통상 단정밀도 소수점 스토어 명령과 대체 단정밀도 소수점 스토어 명령 모두, 캐시 메모리에 기록하는 길이를 4바이트로 하여 디코드한다. 스토어 버퍼(121)에는, 데이터를 스토어하는 어드레스를 송출하고, 이 스토어 길이 정보(4바이트)를 송출한다. 커밋 제어부(73)로부터는 스토어 명령의 커밋시에, 통상 단정밀도 소수점 스토어 명령과 대체 단정밀도 소수점 스토어 명령으로 공통의 스토어 커밋 지시 신호가 스토어 처리부(69)에 송출되고, 스토어 처리부(69)는 이것을 계기 로 스토어 데이터의 상위 4바이트를 캐시 메모리[1차 데이터 캐시(72)]에 기록하는 처리를 행한다. 이와 같이 단정밀도 부동 소수점 스토어 명령을 처리하는 경우, 스토어 처리부(69), 커밋 제어부(73)에서는, 통상 단정밀도 부동 소수점 스토어 명령과 대체 단정밀도 부동 소수점 스토어 명령의 구별을 행하지 않고서 동등한 동작을 행한다. 통상 단정밀도 부동 소수점 스토어 명령인지, 대체 단정밀도 부동 소수점 스토어 명령인지의 차이는, 독출하는 레지스터 어드레스 생성의 방식에 있다.
다음으로, 명령 디코드부(63)에 있어서의 레지스터 어드레스 생성에 대해서 설명한다. 레지스터 어드레스의 생성에 대해서는, 확장 연산 레지스터(XAR)에 의해 수식된 모든 단정밀도 부동 소수점 명령(연산 명령, 로드 명령, 스토어 명령)에 있어서 공통이다. 또한 명령 디코드부(63)는, 확장 연산 레지스터(XAR)(74)에 의해 수식된 단정밀도 부동 소수점 명령에 대한 레지스터 어드레스를 생성할 뿐만 아니라, 통상의 단정밀도 부동 소수점 명령에 대한 레지스터 어드레스도 생성한다.
도 13에, SPARC-V9 아키텍처에 있어서의 레지스터 어드레스의 생성을 설명하는 도면을 도시한다. 도 13은 연산 부호의 레지스터 어드레스 필드와 레지스터 어드레스 번호의 대응을 도시한 것으로, 이것에 따라서 레지스터 어드레스가 생성된다. SPARC-V9 아키텍처의 경우는, 단정밀도 부동 소수점 레지스터와 배정밀도 부동 소수점 레지스터에서는, 명령 연산 부호에 있는 5비트의 레지스터 어드레스 필드가 나타내는 레지스터 어드레스의 비트 어사인(assign)이 상이하다. 통상 단정밀도 부동 소수점 레지스터를 이용하는 경우는, 명령 연산 부호의 레지스터 어드레스 필드와 지시하는 레지스터 번호가 일치하며, 0번부터 31번을 지시하여 나타낸다. 배정 밀도 부동 소수점 레지스터를 이용하는 명령의 경우에는, 레지스터 어드레스 필드의 비트 [0]을 레지스터 어드레스 비트 [5]에 가져와, 레지스터 어드레스 비트 [0]은 항상 0으로 한다. 다시 말하면, 배정밀도 부동 소수점의 레지스터 어드레스의 지시는 짝수 번호만으로 지시할 수 있으며, 0번으로부터 62번까지가 된다.
도 14에, 대체 단정밀도 부동 소수점 데이터를 처리하는 경우의 레지스터 어드레스의 생성을 설명하는 도면을 도시한다. 대체 단정밀도 부동 소수점 데이터를 취급할지의 여부는, 도 5에 도시된 바와 같이 확장 연산 레지스터(XAR)(74)의 밸리드 비트가 유효한지의 여부로 판단된다. 하위 4바이트는 갱신시에 올제로로 하는 8바이트의 대체 단정밀도 부동 소수점 데이터를 처리할 때에는, 상술한 바와 같이 연산 처리부(65), 로드 처리부(68), 스토어 처리부(69)에서, 입력 데이터나 출력 데이터는 단정밀도 부동 소수점 데이터로서 처리된다. 그러나, 명령 연산 부호의 레지스터 어드레스 필드로부터 물리 레지스터 어드레스로 변환하는 경우에는, 배정밀도 부동 소수점 레지스터의 변환 방식에 따르도록 한다. 다시 말하면, 대체 단정밀도 부동 소수점의 경우, 레지스터 어드레스의 지시는 짝수 번호만으로 행한다. 도 1에 도시된 프로세서에서는 256개까지 레지스터 확장을 행하고 있으며, 레지스터 어드레스는 0번에서 510번(짝수 번호만)까지 지시할 수 있다.
명령 디코드부(63)는, 이상과 같이 통상 단정밀도 부동 소수점 데이터를 처리하는 경우의 레지스터 어드레스를 생성하고, 대체 단정밀도 부동 소수점 데이터를 처리하는 경우의 레지스터 어드레스를 생성한다.
이상과 같이 본 실시예의 프로세서의, 단정밀도 부동 소수점 연산 명령, 단 정밀도 부동 소수점 로드 명령, 단정밀도 부동 소수점 스토어 명령 시의 동작에 대해서 설명하였다.
다음으로, 명령 간의 데이터 의존 관계를 검출하는 방법에 대해서 설명한다.
레지스터 리네이밍 테이블의 구성을 도 15에 도시한다.
아웃 오브 오더 처리를 행하는 프로세서에서는, 레지스터의 의존 관계를 검출하기 위한 레지스터 리네이밍을 행하지만, 부동 소수점 레지스터의 갱신을 행하는 통상 단정밀도 연산 명령의 경우, 레지스터 리네이밍을 4바이트 단위로 행하고, 대체 부동 소수점 연산 명령의 경우에는 8바이트 단위로 행할 필요가 있다. 레지스터 리네이밍에는, 각 레지스터가 라이트(write) 보류 상태인지의 여부를 나타내는 1비트와, 리네임된 최신의 리네이밍 레지스터 어드레스를 유지하는 테이블이 필요하게 된다. 일반적으로 프로세서에 있어서 이 테이블은 고속으로 참조 갱신될 필요가 있기 때문에, 명령 디코드 회로의 가까운 장소에 래치 회로에 의해 구성된다. 이 래치로 구성된 테이블의 참조 갱신에 따른 회로 규모의 삭감은, 프로세서의 동작 주파수에 크게 공헌한다. SPARC-V9 아키텍처에 있어서는, %f0에서 %f31, 다시 말하면 %d0에서 %d30에 관해서, 4바이트 길이의 레지스터에 대한 리네이밍 레지스터 번호를 가질 필요가 있으며, %d0에서 %d30까지 32개의 레지스터에 대해서 리네이밍 레지스터 번호를 유지하는 테이블이 필요하다. 한편 %d32에서 %d510까지는, 8바이트 길이의 레지스터에 대한 리네이밍 레지스터 번호를 갖게 되기 때문에 240개의 레지스터에 대해서 리네이밍 레지스터 번호를 유지하는 테이블이 된다. 이것은 %d32에서 %d510까지가 단정밀도 부동 소수점 데이터를 대체 단정밀도 부동 소수점 데이터로서 8바이트 길이로 관리하기 때문이며, 가령 통상의 4바이트 길이의 단정밀도 부동 소수점 데이터로 관리하고, 단정밀도 부동 소수점 레지스터는 %f0에서 %f255인 것과 같이 정의해 버리면, %f32에서 %f255까지만으로 224개의 리네이밍 레지스터 번호를 유지할 수 있는 테이블이 필요해져 버린다.
다시 말하면, 단정밀도 부동 소수점 데이터를 대체 단정밀도 부동 소수점 데이터로서 처리하는 경우에는, 확장된 레지스터 부분에 단정밀도 부동 소수점 데이터를 저장하는 것이 가능하고, 레지스터 리네이밍 테이블에 있어서는 배정밀도 부동 소수점 레지스터의 의존 관계 검출 회로를 이용할 수 있기 때문에 하드웨어의 추가가 불필요하다.
또한, 단정밀도 부동 소수점 데이터를 대체 단정밀도 부동 소수점 데이터로서 처리하는 경우에는, 연산기에의 입력 데이터의 선택 회로도 삭감할 수 있다. 일반적인 프로세서에서는, 연산 처리를 빠르게 실행 개시하기 위해서, 연산의 입력 데이터를 레지스터로부터 뿐만이 아니라, 레지스터에 기록하기 전의 연산기 출력 결과 등으로부터도 획득되는 데이터 바이패스 제어를 행하고 있다.
도 16에 4바이트 단위로 데이터를 관리할 때의 연산기에의 데이터 바이패스 회로도를, 도 17에 8바이트 단위로 데이터를 관리할 때의 연산기에의 데이터 바이패스 회로도를 도시한다. 모두, 연산기가 3개 있는 입력 레지스터 중의 하나를 확대하여 표시하고, 입력하는 데이터가 부동 소수점 레지스터, 리네이밍 레지스터, 연산기 출력 결과, 로드 출력 결과 중 어느 하나로부터 선택되는 경우의 구성도를 나타내고 있다.
8바이트의 배정밀도 부동 소수점 연산 명령을 실행할 때에는, 8바이트의 데이터를 입력 데이터로서 이용할 필요가 있다. 프로그램에 따라서는, 배정밀도 부동 소수점 연산과 단정밀도 부동 소수점 연산이 혼합되는 것이 있다.
가령 단정밀도 부동 소수점 데이터를 4바이트 길이로 관리하는 경우에는, 프로그램으로서 단정밀도 부동 소수점 레지스터 %f0, %f1을 갱신하고, 그 직후에 배정밀도 부동 소수점 레지스터 %d0을 독출 가능하게 할 필요가 있다. 다시 말하면, 상위 4바이트와 하위 4바이트의 데이터가 다른 장소(예컨대, 상위 4바이트는 연산기 출력 결과로부터 얻어지고, 하위 4바이트는 부동 소수점 레지스터로부터 얻어지는 등)로부터 출력되는 경우에도, 하드웨어에서 데이터 바이패스 제어를 올바르게 행하기 위해서는, 4바이트마다 입력 데이터의 선택을 행할 필요가 있으며, 각각에 대하여 이 선택 회로가 필요하게 된다. 도 16은 이것을 나타낸 것이다.
한편 8바이트 길이의 데이터로 관리하는 경우에는, 도 17에 도시된 바와 같이, 상위 4바이트와 하위 4바이트의 데이터를 따로따로 처리하지 않기 때문에, 합쳐서 8바이트에 관한 데이터 바이패스 처리를 행하면 된다.
이와 같이, 단정밀도 부동 소수점 데이터를 대체 단정밀도 부동 소수점 데이터로서 처리함으로써, 연산기 입력 레지스터로의 데이터 선택 회로를 크게 삭감할 수 있다.
이상과 같이, 본 실시예의 단정밀도 부동 소수점 데이터의 저장 방법에 따르면, 단정밀도 부동 소수점 데이터의 처리를 처리하는 경우에도 배정밀도 부동 소수점 레지스터로 처리하는 것이 가능해진다. 이에 따라, 레지스터의 의존 관계를 검 출하기 위한 회로로서 배정밀도 부동 소수점 레지스터의 의존 관계 검출 회로를 이용하는 것이 가능해진다. 이에 따라 하드웨어 회로의 추가를 억제하는 것이 가능해진다.
또한, 레지스터 어드레스 생성이나, 레지스터의 갱신을 4바이트(단정밀도 부동 소수점 데이터 길이)로 할 것인지 8바이트(대체 단정밀도 부동 소수점 데이터 길이)로 할 것인지 등의, 통상 단정밀도 부동 소수점 데이터 처리인지 대체 단정밀도 부동 소수점 데이터 처리인지의 구별은 명령 디코드부에서 행한다. 그리고, 연산 처리부, 로드 처리부, 스토어 처리부로서는, 통상의 단정밀도 부동 소수점 데이터와 대체 단정밀도 부동 소수점 데이터의 경우를 구별하지 않고, 완전히 공통의 회로로 이 2종류의 명령을 처리하는 것이 가능하다.
또한, 단정밀도 부동 소수점 데이터를 대체 단정밀도 부동 소수점 데이터로서 처리함으로써, 연산기 입력 레지스터에의 데이터 선택 회로를 크게 삭감할 수 있다.
이상과 같이 본 실시예의 단정밀도 부동 소수점 데이터의 저장 방식에 따르면, 프로세서의 하드웨어량을 억제할 수 있다. 하드웨어 회로가 복잡하게 되지 않기 때문에, 프로세서의 동작 주파수를 향상시킬 수 있으며, 이에 따라 프로세서의 성능 향상에 공헌할 수 있다.
또한, 부동 소수점 로드, 스토어의 처리에 있어서의 단정밀도 부동 소수점 데이터의 메모리상에서의 데이터의 유지는, 통상 단정밀도 부동 소수점 명령의 경우에도 대체 단정밀도 부동 소수점 명령의 경우에도 4바이트 단위로 행하고, 프로 그램의 입력 데이터, 출력 데이터가 기존의 단정밀도 부동 소수점 데이터인 것도 처리할 수 있다.
이상, 본 발명의 실시예에 대해서 상세히 설명하였으나, 본 발명은 상술한 실시예에 한정되는 것은 아니다. 부동 소수점 레지스터 영역이 확장된 프로세서에 본 실시예의 단정밀도 부동 소수점 데이터의 저장 방식을 적용하는 것을 설명하였으나, 부동 소수점 레지스터 영역을 확장한 프로세서가 아니라도, 어떠한 구성의 프로세서에 적용하여도 상관없다.
이와 같이 본 발명의 단정밀도 부동 소수점 데이터의 저장 방법에 따르면, 단정밀도 부동 소수점 데이터의 처리를 처리하는 경우에도 8바이트의 배정밀도 소수점 레지스터로 처리하는 것이 가능해지기 때문에, 레지스터의 의존 관계 검출 회로로서 배정밀도 소수점 레지스터의 의존 관계 검출 회로를 그대로 이용할 수 있게 된다. 따라서 의존 관계 검출 회로를 위한 하드웨어의 추가를 억제할 수 있다.
이상의 실시예를 포함하는 실시형태에 관해서, 이하의 부기를 더 개시한다.
(부기 1)
배정밀도 부동 소수점 데이터를 저장할 수 있는 크기를 갖는, 배정밀도 부동 소수점 데이터와 단정밀도 부동 소수점 데이터가 저장되는 레지스터를 구비하는 프로세서에 있어서,
단정밀도 부동 소수점 데이터가 지정된 경우, 상기 레지스터의 상위 절반에 입력한 단정밀도 부동 소수점 데이터를 기록하고, 상기 레지스터의 하위 절반에 올제로를 기록하는 것을 특징으로 하는 단정밀도 부동 소수점 데이터 저장 방식.
(부기 2)
배정밀도 부동 소수점 데이터를 저장할 수 있는 크기를 갖는, 배정밀도 부동 소수점 데이터와 단정밀도 부동 소수점 데이터가 저장되는 레지스터를 구비하는 프로세서의 단정밀도 부동 소수점 데이터 저장 방법에 있어서,
단정밀도 부동 소수점 데이터 처리가 지정되고, 또한 제1 처리가 지정된 경우, 상기 레지스터의 상위 절반에 입력한 단정밀도 부동 소수점 데이터를, 상기 레지스터의 하위 절반에 올제로를 기록하며,
단정밀도 부동 소수점 데이터 처리가 지정되고, 또한 제2 처리가 지정된 경우, 상기 레지스터의 상위 절반에 입력한 단정밀도 부동 소수점 데이터를 기록하고, 상기 레지스터의 하위 절반에는 기록을 행하지 않는 것을 특징으로 하는 단정밀도 부동 소수점 데이터 저장 방법.
(부기 3)
명령을 디코드하고, 상기 명령의 디코드 결과에 기초하여, 상기 레지스터로의 기록 처리를 더 실행하는 것을 특징으로 하는 부기 2에 기재된 단정밀도 부동 소수점 데이터 저장 방법.
(부기 4)
또한, 상기 레지스터에의 기록을 행하기 전에, 상기 제1 처리 또는 상기 제2 처리에 각각 대응하는 데이터를 일단 리네이밍 레지스터에 저장하고,
상기 제1 처리가 지정된 경우에는, 상기 리네이밍 레지스터의 데이터를 그대로 기록하며,
상기 제2 처리가 지정된 경우에는, 상기 디코드 결과에 포함되는 상기 레지스터로의 기록 위치 어드레스가 짝수인 경우에는, 상기 레지스터의 상위 절반에 상기 리네이밍 레지스터의 상위 절반의 데이터를 기록하고, 상기 레지스터로의 기록 위치 홀수인 경우에는, 상기 레지스터의 하위 절반에 상기 리네이밍 레지스터의 상위 절반의 데이터를 기록하는 것을 특징으로 하는 부기 3에 기재된 단정밀도 부동 소수점 데이터 저장 방법.
(부기 5)
배정밀도 부동 소수점 데이터와 단정밀도 부동 소수점 데이터를 저장하는 레지스터와,
단정밀도 부동 소수점 데이터 처리가 지정된 경우, 상기 레지스터의 상위 절반에 입력한 단정밀도 부동 소수점 데이터를 기록하고, 상기 레지스터의 하위 절반에 올제로를 기록하는 제어부를 구비하는 것을 특징으로 하는 프로세서.
(부기 6)
배정밀도 부동 소수점 데이터를 저장할 수 있는 크기를 갖는, 배정밀도 부동 소수점 데이터와 단정밀도 부동 소수점 데이터가 저장되는 레지스터와,
단정밀도 부동 소수점 데이터 처리가 지정되고, 또한 제1 처리가 지정된 경우, 상기 레지스터의 상위 절반에 입력한 단정밀도 부동 소수점 데이터를, 상기 레지스터의 하위 절반에 올제로를 기록하는 한편, 단정밀도 부동 소수점 데이터 처리가 지정되고, 또한 제2 처리가 지정된 경우, 상기 레지스터의 상위 절반에 입력한 단정밀도 부동 소수점 데이터를 기록하고, 상기 레지스터의 하위 절반에는 기록을 행하지 않는 제어부를 구비하는 것을 특징으로 하는 프로세서.
(부기 7)
명령을 디코드하는 디코더를 더 구비하고,
상기 제어부는, 상기 디코더에 의한 명령 디코드 결과에 기초하여, 상기 레지스터에의 기록 처리를 실행하는 것을 특징으로 하는 부기 6에 기재된 프로세서.
(부기 8)
상기 레지스터에의 기록을 행하기 전에, 상기 제1 처리 또는 상기 제2 처리에 각각 대응하는 데이터를 일단 저장하는 리네이밍 레지스터와,
상기 디코더가 디코드한 명령의 제어 신호 및 상기 레지스터에의 기록처 어드레스를 세트하고, 상기 리네이밍 레지스터에 저장된 데이터를 상기 레지스터에의 저장을 커밋하는 커밋 제어부를 더 구비하며,
상기 제1 처리가 지정된 경우에는, 상기 리네이밍 레지스터의 데이터를 그대로 기록하고,
상기 제2 처리가 지정된 경우에, 상기 커밋 제어부에 세트된 레지스터에의 기록처 어드레스가 짝수인 경우에는, 상기 레지스터의 상위 절반에 상기 리네이밍 레지스터의 상위 절반의 데이터를 기록하고, 상기 레지스터에의 기록처 어드레스가 홀수인 경우에는, 상기 레지스터의 하위 절반에 상기 리네이밍 레지스터의 상위 절반의 데이터를 기록하는 것을 특징으로 하는 부기 6에 기재된 프로세서.
(부기 9)
상기 제1 처리 또는 상기 제2 처리를 지정하고, 상기 지정 정보를 유지하는 제2 레지스터를 더 구비하는 것을 특징으로 하는 부기 6에 기재된 프로세서.
(부기 10)
상기 제2 레지스터는 확장 연산 레지스터이고, 상기 확장 연산 레지스터가 유효한지의 여부로, 상기 제1 처리 또는 상기 제2 처리를 구별하는 것을 특징으로 하는 부기 9에 기재된 프로세서.
(부기 11)
명령을 디코드하는 디코더를 더 구비하고,
상기 디코더가 단정밀도 부동 소수점 연산 처리, 단정밀도 부동 소수점 로드·스토어 처리를 지시하는 명령을 디코드할 때, 상기 제2 레지스터의 지정에 기초하여, 독출 또는 기록의 레지스터 어드레스를 단정밀도 부동 소수점 데이터 단위로 지시할지, 배정밀도 부동 소수점 데이터 단위로 지시할지를 구별하여 사용하는 것을 특징으로 하는 부기 9에 기재된 프로세서.
(부기 12)
명령을 디코드하는 디코더와,
연산 처리를 행하는 연산 처리부와,
로드 처리를 행하는 로드 처리부를 더 구비하고,
상기 디코더는, 단정밀도 부동 소수점 연산 처리, 단정밀도 부동 소수점 로드 처리를 지시하는 명령을 디코드할 때, 상기 제1 처리 및 상기 제2 처리에 대응하여 공통의 연산 부호를 상기 연산 처리부 및 상기 로드 처리부로 발송하며,
상기 연산 처리부 및 상기 로드 처리부는 상기 제1 레지스터의 상위 절반에 결과를 출력하고, 하위 절반의 데이터를 올제로로 출력하는 것을 특징으로 하는 부기 9에 기재된 프로세서.
(부기 13)
명령을 디코드하는 디코더와,
연산 처리를 행하는 연산 처리부와,
스토어 처리를 행하는 스토어 처리부를 더 구비하고,
상기 디코더는, 단정밀도 부동 소수점 연산 처리, 단정밀도 부동 소수점 스토어 처리를 지시하는 명령을 디코드할 때, 상기 제1 처리 및 상기 제2 처리에 대응하여 공통의 연산 부호를 상기 연산 처리부 및 상기 스토어 처리부로 발송하며,
상기 연산 처리부 및 상기 스토어 처리부는 상기 제1 레지스터의 상위 절반의 길이의 데이터만을 입력으로서 연산 처리, 또는 스토어 처리를 행하는 것을 특징으로 하는 부기 9에 기재된 프로세서.
도 1은 본 실시예를 적용하는 부동 소수점 레지스터 확장 아키텍처를 도시하는 도면이다.
도 2는 대체 단정밀도 부동 소수점 데이터의 포맷을 도시하는 도면이다.
도 3은 통상 단정밀도 부동 소수점 데이터의 포맷을 도시하는 도면이다.
도 4는 확장 연산 레지스터(XAR)의 구성을 도시하는 도면이다.
도 5는 통상 단정밀도 부동 소수점 데이터로 처리할지, 대체 단정밀도 부동 소수점 데이터로 처리할지를 판단하는 처리 흐름를 도시하는 도면이다.
도 6은 프로세서의 구성을 도시하는 도면이다.
도 7은 대체 단정밀도 부동 소수점 명령과 통상 단정밀도 부동 소수점 명령의 차이를 설명하는 도면이다.
도 8은 단정밀도 부동 소수점 연산 명령을 처리하는 연산 처리부의 데이터의 흐름을 도시하는 도면이다.
도 9는 단정밀도 부동 소수점 로드 명령을 처리하는 로드 처리부의 데이터의 흐름을 도시하는 도면이다.
도 10은 통상 단정밀도 부동 소수점 데이터 처리에 있어서의 커밋 시의 부동 소수점 레지스터의 갱신 처리를 설명하는 도면이다.
도 11은 대체 단정밀도 부동 소수점 데이터 처리에 있어서의 커밋 시의 부동 소수점 레지스터의 갱신 처리를 설명하는 도면이다.
도 12는 단정밀도 부동 소수점 스토어 명령을 처리하는 스토어 처리부의 데 이터의 흐름을 도시하는 도면이다.
도 13은 SPARC-V9 아키텍처에 있어서의 레지스터 어드레스의 생성을 설명하는 도면이다.
도 14는 대체 단정밀도 소수점 데이터를 처리하는 경우의 레지스터 어드레스의 생성을 설명하는 도면이다.
도 15는 레지스터 리네이밍 테이블의 구성을 도시하는 도면이다.
도 16은 4바이트 단위로 데이터를 관리할 때의 연산기에의 데이터 바이패스 회로도를 도시한다.
도 17은 8바이트 단위로 데이터를 관리할 때의 연산기에의 데이터 바이패스 회로도를 도시한다.
도 18은 SPARC-V9 아키텍처의 부동 소수점 레지스터의 구성을 도시하는 도면이다.
<도면의 주요 부분에 대한 부호의 설명>
61: 1차 명령 캐시 62: 2차 캐시/메모리부
63: 명령 디코드부 64: 레지스터 리네이밍 테이블
65: 연산 처리부 66: 어드레스 생성부
67: 리네이밍 레지스터 68: 로드 처리부
69: 스토어 처리부 70: 고정 소수점 레지스터
71: 부동 소수점 레지스터 72: 1차 데이터 캐시
73: 커밋 제어부 74: 확장 연산 레지스터(XAR)
75: 메모리 어드레스 생성부 81: 부동 소수점 연산기
82: 입력 레지스터 83: 연산 출력 레지스터
84: 연산 부호 디코드 91: 로드 출력 레지스터
92: 연산 부호 디코드 121: 스토어 버퍼

Claims (10)

  1. 배정밀도 부동 소수점 데이터를 저장할 수 있는 크기를 갖는, 배정밀도 부동 소수점 데이터와 단정밀도 부동 소수점 데이터가 저장되는 레지스터를 구비하는 프로세서에서 단정밀도 부동 소수점 데이터 저장 방식에 있어서,
    단정밀도 부동 소수점 데이터가 지정된 경우, 상기 레지스터의 상위 절반에 입력한 단정밀도 부동 소수점 데이터를 기록하고, 상기 레지스터의 하위 절반에 올제로(all zero)를 기록하는 것을 특징으로 하는 단정밀도 부동 소수점 데이터 저장 방식.
  2. 배정밀도 부동 소수점 데이터를 저장할 수 있는 크기를 갖는, 배정밀도 부동 소수점 데이터와 단정밀도 부동 소수점 데이터가 저장되는 레지스터를 구비하는 프로세서의 단정밀도 부동 소수점 데이터 저장 방법에 있어서,
    단정밀도 부동 소수점 데이터 처리가 지정되고 제1 처리가 지정된 경우, 상기 레지스터의 상위 절반에 입력한 단정밀도 부동 소수점 데이터를, 상기 레지스터의 하위 절반에 올제로를 기록하며,
    단정밀도 부동 소수점 데이터 처리가 지정되고 제2 처리가 지정된 경우, 상기 레지스터의 상위 절반에 입력한 단정밀도 부동 소수점 데이터를 기록하고, 상기 레지스터의 하위 절반에는 기록을 행하지 않는 것을 특징으로 하는 단정밀도 부동 소수점 데이터 저장 방법.
  3. 제2항에 있어서, 명령을 디코드하고, 상기 명령의 디코드 결과에 기초하여, 상기 레지스터에의 기록 처리를 더 실행하는 것을 특징으로 하는 단정밀도 부동 소수점 데이터 저장 방법.
  4. 배정밀도 부동 소수점 데이터와 단정밀도 부동 소수점 데이터를 저장하는 레지스터와,
    단정밀도 부동 소수점 데이터 처리가 지정된 경우, 상기 레지스터의 상위 절반에 입력한 단정밀도 부동 소수점 데이터를 기록하고, 상기 레지스터의 하위 절반에 올제로를 기록하는 제어부를 구비하는 것을 특징으로 하는 프로세서.
  5. 배정밀도 부동 소수점 데이터를 저장할 수 있는 크기를 갖는, 배정밀도 부동 소수점 데이터와 단정밀도 부동 소수점 데이터가 저장되는 레지스터와,
    단정밀도 부동 소수점 데이터 처리가 지정되고 제1 처리가 지정된 경우, 상기 레지스터의 상위 절반에 입력한 단정밀도 부동 소수점 데이터를, 상기 레지스터의 하위 절반에 올제로를 기록하며, 단정밀도 부동 소수점 데이터 처리가 지정되고 제2 처리가 지정된 경우, 상기 레지스터의 상위 절반에 입력한 단정밀도 부동 소수점 데이터를 기록하고, 상기 레지스터의 하위 절반에는 기록을 행하지 않는 제어부를 구비하는 것을 특징으로 하는 프로세서.
  6. 제5항에 있어서, 명령을 디코드하는 디코더를 더 구비하고,
    상기 제어부는, 상기 디코더에 의한 명령 디코드 결과에 기초하여, 상기 레지스터로의 기록 처리를 실행하는 것을 특징으로 하는 프로세서.
  7. 제5항에 있어서, 상기 제1 처리 또는 상기 제2 처리를 지정하고, 상기 지정 정보를 유지하는 제2 레지스터를 더 구비하는 것을 특징으로 하는 프로세서.
  8. 제7항에 있어서, 명령을 디코드하는 디코더를 더 구비하고,
    상기 디코더가 단정밀도 부동 소수점 연산 처리, 단정밀도 부동 소수점 로드·스토어 처리를 지시하는 명령을 디코드할 때, 상기 제2 레지스터의 지정에 기초하여, 독출 또는 기록의 레지스터 어드레스를 단정밀도 부동 소수점 데이터 단위로 지시할 것인지 배정밀도 부동 소수점 데이터 단위로 지시할 것인지를 구분하여 사용하는 것을 특징으로 하는 프로세서.
  9. 제7항에 있어서, 명령을 디코드하는 디코더와,
    연산 처리를 행하는 연산 처리부와,
    로드 처리를 행하는 로드 처리부를 더 구비하고,
    상기 디코더는, 단정밀도 부동 소수점 연산 처리, 단정밀도 부동 소수점 로드 처리를 지시하는 명령을 디코드할 때, 상기 제1 처리 및 상기 제2 처리에 대응하여 공통의 연산 부호(operation code)를 상기 연산 처리부 및 상기 로드 처리부 로 발송하며,
    상기 연산 처리부 및 상기 로드 처리부는 상기 제1 레지스터의 상위 절반에 결과를 출력하고, 하위 절반의 데이터를 올제로로 출력하는 것을 특징으로 하는 프로세서.
  10. 제7항에 있어서, 명령을 디코드하는 디코더와,
    연산 처리를 행하는 연산 처리부와,
    스토어 처리를 행하는 스토어 처리부를 더 구비하고,
    상기 디코더는, 단정밀도 부동 소수점 연산 처리, 단정밀도 부동 소수점 스토어 처리를 지시하는 명령을 디코드할 때, 상기 제1 처리 및 상기 제2 처리에 대응하여 공통의 연산 부호를 상기 연산 처리부 및 상기 스토어 처리부로 발송하며,
    상기 연산 처리부 및 상기 스토어 처리부는 상기 제1 레지스터의 상위 절반의 길이의 데이터만을 입력으로서 연산 처리, 또는 스토어 처리를 행하는 것을 특징으로 하는 프로세서.
KR1020080120003A 2008-03-21 2008-11-28 단정밀도 부동 소수점 데이터의 저장 방법 및 프로세서 KR101026821B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2008073434A JP5309636B2 (ja) 2008-03-21 2008-03-21 演算処理装置及び演算処理装置の制御方法
JPJP-P-2008-073434 2008-03-21

Publications (2)

Publication Number Publication Date
KR20090101064A true KR20090101064A (ko) 2009-09-24
KR101026821B1 KR101026821B1 (ko) 2011-04-04

Family

ID=40122469

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080120003A KR101026821B1 (ko) 2008-03-21 2008-11-28 단정밀도 부동 소수점 데이터의 저장 방법 및 프로세서

Country Status (5)

Country Link
US (1) US8412761B2 (ko)
EP (1) EP2104033B1 (ko)
JP (1) JP5309636B2 (ko)
KR (1) KR101026821B1 (ko)
CN (1) CN101539850B (ko)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5309636B2 (ja) * 2008-03-21 2013-10-09 富士通株式会社 演算処理装置及び演算処理装置の制御方法
CN101930356B (zh) * 2010-08-24 2013-03-20 中国航天科技集团公司第九研究院第七七一研究所 用于浮点协处理器的寄存器文件分组编址、读写控制方法
CN101930355B (zh) * 2010-08-24 2013-07-24 中国航天科技集团公司第九研究院第七七一研究所 实现寄存器文件分组编址、读写控制方法的寄存器电路
CN103984524B (zh) * 2014-05-15 2016-07-06 中国航天科技集团公司第九研究院第七七一研究所 一种面向risc处理器的三端口浮点寄存器文件
US20170322808A1 (en) * 2016-05-05 2017-11-09 Cirrus Logic International Semiconductor Ltd. Low-power processor with support for multiple precision modes
US10684852B2 (en) 2017-06-23 2020-06-16 International Business Machines Corporation Employing prefixes to control floating point operations
US10310814B2 (en) 2017-06-23 2019-06-04 International Business Machines Corporation Read and set floating point control register instruction
US10514913B2 (en) 2017-06-23 2019-12-24 International Business Machines Corporation Compiler controls for program regions
US10740067B2 (en) 2017-06-23 2020-08-11 International Business Machines Corporation Selective updating of floating point controls
US10481908B2 (en) 2017-06-23 2019-11-19 International Business Machines Corporation Predicted null updated
US10379851B2 (en) 2017-06-23 2019-08-13 International Business Machines Corporation Fine-grained management of exception enablement of floating point controls
US10725739B2 (en) 2017-06-23 2020-07-28 International Business Machines Corporation Compiler controls for program language constructs
US10671497B2 (en) 2018-01-19 2020-06-02 International Business Machines Corporation Efficient and selective sparing of bits in memory systems
JP6604393B2 (ja) * 2018-03-08 2019-11-13 日本電気株式会社 ベクトルプロセッサ、演算実行方法、プログラム
CN108304217B (zh) * 2018-03-09 2020-11-03 中国科学院计算技术研究所 将长位宽操作数指令转换为短位宽操作数指令的方法
US11372643B2 (en) * 2018-11-09 2022-06-28 Intel Corporation Systems and methods for performing instructions to convert to 16-bit floating-point format
US11093246B2 (en) 2019-09-06 2021-08-17 International Business Machines Corporation Banked slice-target register file for wide dataflow execution in a microprocessor
US11157276B2 (en) * 2019-09-06 2021-10-26 International Business Machines Corporation Thread-based organization of slice target register file entry in a microprocessor to permit writing scalar or vector data to portions of a single register file entry
US11119774B2 (en) 2019-09-06 2021-09-14 International Business Machines Corporation Slice-target register file for microprocessor
US20240004664A1 (en) * 2022-06-30 2024-01-04 Advanced Micro Devices, Inc. Split register list for renaming

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61138333A (ja) 1984-12-10 1986-06-25 Nec Corp 演算モジユ−ル
US5740093A (en) * 1995-12-20 1998-04-14 Intel Corporation 128-bit register file and 128-bit floating point load and store for quadruple precision compatibility
US5778247A (en) * 1996-03-06 1998-07-07 Sun Microsystems, Inc. Multi-pipeline microprocessor with data precision mode indicator
US5784588A (en) * 1997-06-20 1998-07-21 Sun Microsystems, Inc. Dependency checking apparatus employing a scoreboard for a pair of register sets having different precisions
US5884070A (en) * 1997-06-25 1999-03-16 Sun Microsystems, Inc. Method for processing single precision arithmetic operations in system where two single precision registers are aliased to one double precision register
JP3526269B2 (ja) * 2000-12-11 2004-05-10 株式会社東芝 ネットワーク間中継装置及び該中継装置における転送スケジューリング方法
JP4443100B2 (ja) 2002-07-31 2010-03-31 インターナショナル・ビジネス・マシーンズ・コーポレーション プログラム変換方法、これを用いたデータ処理装置及びプログラム
US7191316B2 (en) 2003-01-29 2007-03-13 Sun Microsystems, Inc. Method and a system for using same set of registers to handle both single and double precision floating point instructions in an instruction stream
US7418606B2 (en) 2003-09-18 2008-08-26 Nvidia Corporation High quality and high performance three-dimensional graphics architecture for portable handheld devices
US20070011222A1 (en) 2005-07-07 2007-01-11 Dance Sherman M Floating-point processor for processing single-precision numbers
JP5309636B2 (ja) * 2008-03-21 2013-10-09 富士通株式会社 演算処理装置及び演算処理装置の制御方法

Also Published As

Publication number Publication date
EP2104033A1 (en) 2009-09-23
JP2009230339A (ja) 2009-10-08
CN101539850A (zh) 2009-09-23
JP5309636B2 (ja) 2013-10-09
EP2104033B1 (en) 2011-07-06
US20090240757A1 (en) 2009-09-24
US8412761B2 (en) 2013-04-02
CN101539850B (zh) 2015-04-01
KR101026821B1 (ko) 2011-04-04

Similar Documents

Publication Publication Date Title
KR101026821B1 (ko) 단정밀도 부동 소수점 데이터의 저장 방법 및 프로세서
JP5471082B2 (ja) 演算処理装置および演算処理装置の制御方法
JP5653963B2 (ja) 可変長命令のプリデコーディング
US10417001B2 (en) Physical register table for eliminating move instructions
US6594754B1 (en) Mapping destination logical register to physical register storing immediate or renamed source register of move instruction and using mapping counters
JP5808348B2 (ja) マシン状態に基づいた命令の分割
JP6807383B2 (ja) 転送プレフィックス命令
KR101980080B1 (ko) 데이터 처리장치에 있어서의 어드레스 생성
US7996662B2 (en) Floating point status/control register encodings for speculative register field
US6772317B2 (en) Method and apparatus for optimizing load memory accesses
JP5217431B2 (ja) 演算処理装置及び演算処理装置の制御方法
KR102161682B1 (ko) 이미디에이트 핸들링 및 플래그 핸들링을 위한 프로세서 및 방법
KR100308512B1 (ko) 편집 기능을 위한 전문 밀리코드 지시
US20050251662A1 (en) Secondary register file mechanism for virtual multithreading
KR100317769B1 (ko) 압축 기억된 십진수 나눗셈에 대한 전문 밀리코드 명령
KR100322726B1 (ko) 번역 및 테스트를 위한 전문 밀리코드 명령
JP3983482B2 (ja) 高速ディスプレースメント付きpc相対分岐方式
KR100322725B1 (ko) 전문 갱신 및 분기 명령을 이용하는 밀리코드 플래그
KR20180104652A (ko) 제 1 및 제 2 아키텍처 레지스터 번호를 식별하는 명령의 인코딩
KR20210074276A (ko) 정확한 인터럽트 그리고/또는 덮어 쓰기 기능을 갖는 벡터 명령어
JP4533432B2 (ja) Tlb相関型分岐予測器及びその使用方法
JP2569867B2 (ja) 実効アドレス先行計算型パイプラインマイクロプロセッサ
JP2000099329A (ja) プロセッサ

Legal Events

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

Payment date: 20140228

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150302

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160303

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170302

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20190227

Year of fee payment: 9