KR100188502B1 - 처리 시스템 및 그의 동작 방법 - Google Patents

처리 시스템 및 그의 동작 방법 Download PDF

Info

Publication number
KR100188502B1
KR100188502B1 KR1019950006995A KR19950006995A KR100188502B1 KR 100188502 B1 KR100188502 B1 KR 100188502B1 KR 1019950006995 A KR1019950006995 A KR 1019950006995A KR 19950006995 A KR19950006995 A KR 19950006995A KR 100188502 B1 KR100188502 B1 KR 100188502B1
Authority
KR
South Korea
Prior art keywords
instruction
execution
instructions
processor
inst
Prior art date
Application number
KR1019950006995A
Other languages
English (en)
Other versions
KR950027561A (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 KR950027561A publication Critical patent/KR950027561A/ko
Application granted granted Critical
Publication of KR100188502B1 publication Critical patent/KR100188502B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Hardware Redundancy (AREA)
  • Preparation Of Compounds By Using Micro-Organisms (AREA)
  • Electrical Discharge Machining, Electrochemical Machining, And Combined Machining (AREA)
  • Executing Machine-Instructions (AREA)
  • Retry When Errors Occur (AREA)

Abstract

본 발명은 처리 시스템 및 동작 방법을 제공한다. 인스트럭션을 실행 회로에 디스패치할 것인지에 대한 판정이 행해진다. 인스트럭션을 디스패치하기로 판정한 후에, 인스트럭션에 대한 예외 조건이 존재하는지에 대한 판정이 행해진다. 이 인스트럭션은 실행 회로로 디스패치된다. 이 인스트럭션에 대한 예외 조건이 존재한다는 판정에 응답하여, 실행 회로가 이 인스트럭션을 실행하지 못하도록 하는 표시 신호가 출력된다.

Description

처리 시스템 및 그의 동작 방법
제1도는 바람직한 실시예에 따른 정보 처리 프로세서의 블럭도.
제2도는 제1도에 도시된 프로세서의 고정 소수점 실행 유닛의 블럭도.
제3도는 제1도에 도시된 프로세서의 시퀀서 유닛의 블럭도.
제4도는 제3도에 도시된 시퀀서 유닛의 재배열 버퍼의 개념도.
제5a 및 5b도는 제1도에 도시된 프로세서에 의해 처리되는 인스트럭션의 여러 단계들을 도시한 도면.
제6도는 제1도에 도시된 프로세서의 재배열 버퍼의 개념도.
제7도는 제6도의 4개의 인스트럭션의 여러 단계들을 도시한 도면.
제8a 내지 8d도는 제1도에 도시된 프로세서의 재명명 버퍼의 개념도.
제9도는 바람직한 실시예의 중요한 특징을 갖지 않는 경우 4개의 인스트럭션의 여러 단계들을 도시한 도면.
제10a 내지 10d도는 제9도에 따른 프로세서의 재명명 버퍼의 개념도.
제11도는 제1도에 도시된 프로세서의 재명명 버퍼의 또다른 실시예의 블럭도.
제12a 내지 12c도는 제1도에 도시된 프로세서의 재배열 버퍼의 개념도.
제13도는 제12a 내지 12c도의 5개의 인스트럭션의 여러 단계들을 도시한 도면.
제14a 내지 14f도는 제1도에 도시된 프로세서의 재명명 버퍼의 개념도.
제15도는 바람직한 실시예의 중요한 특징을 갖지 않는 경우 제12a 내지 12c도의 5개의 인스트럭션의 여러 단계들을 도시한 도면.
제16a 내지 16h도는 제15도에 도시된 인스트럭션 처리의 여러 사이클에서 제1도에 도시된 프로세서의 재명명 버퍼를 개념적으로 예시한 도면.
* 도면의 주요부분에 대한 부호의 설명
10 : 정보 처리 프로세서 11 : 시스템 버스
12 : 버스 인터페이스 유닛 14 : 인스트럭션 캐쉬
16 : 데이타 캐쉬 18 : 시퀀서 유닛
20 : 분기 유닛 22 : 고정 소수점 유닛 A
24 : 고정 소수점 유닛 B 26 : 복합 고정 소수점 유닛
28 : 로드/저장 유닛 30 : 부동 소수점 유닛
34 : 고정 소수점 재명명 버퍼 36 : 부동 소수점 구조화 레지스터
38 : 재명명 버퍼 40 : 전용 레지스터
42 : 캐리 비트 레지스터 70 : 인스트럭션 버퍼
72 : 디코드 로직 74 : 디스패치 로직
76 : 재배열 버퍼 80 : 완료 로직
82 : 예외 로직 84 : 실행 직렬화 로직
110 : 되기록엔트리 112 : 재명명 엔트리
113a, 113b, 114 : 멀티플렉서
본 발명은 전반적으로 정보 처리 시스템에 관한 것으로, 특히, 처리 시스템 및 동작 방법에 관한 것이다.
수퍼스칼라 처리 시스템(superscalar processing system)은 다수의 인스트럭션들(instructions)을 동시에 실행하는 다수의 실행 유닛(multiple execution units)을 구비하고 있다. 어떤 처리 시스템에서는 인스트럭션이 인스트럭션 스트림내에 프로그램된 인스트럭션 시퀀스와는 다른 순서로 실행된다. 그러나, 이들 처리 시스템들중 몇몇 시스템은 인스트럭션을 인스트럭션의 프로그램된 시퀀스의 순서대로 실행 회로에 디스패치(dispatch)하도록 설계되어 있다. 전형적인 종래의 기술에 따라 인스트럭션을 순서대로 디스패치하는 방안은 하나의 머신 사이클(machine cycle) 동안 다수의 인스트럭션을 디스패치하는 처리 시스템의 성능에 나쁜 영향을 끼치며, 특히, 하나의 머신 사이클이 단축될 경우 더욱 나쁜 영향을 끼치게 된다.
따라서, 인스트럭션을 순서대로 디스패치하여도 하나의 머신 사이클 동안 다수의 인스트럭션을 디스패치하는 처리 시스템의 성능에 악영향을 끼치지 않도록 하는 처리 시스템 및 동작 방법이 필요하다.
본 발명의 처리 시스템 및 동작 방법에 따르면, 인스트럭션을 실행 회로에 디스패치할지에 대한 판정이 행해진다. 인스트럭션을 디스패치하기로 판정한 후에, 인스트럭션에 대한 예외 조건(exception condition)이 존재하는지에 대한 판정이 행해진다. 이 인스트럭션은 실행 회로로 디스패치된다. 인스트럭션에 대해 예외 조건이 존재한다는 판정에 응답하여, 실행 회로가 이 인스트럭션을 실행하지 못하게 하는 표시 신호가 출력된다.
본 발명은 인스트럭션을 순서대로 디스패치하였을 때 하나의 머신 사이클 동안 다수의 인스트럭션을 디스패치하는 처리 시스템의 성능에 악영향을 끼치지 않도록 하는 기술적인 장점을 갖고 있다.
본 발명의 바람직한 실시예 및 장점들은 이하의 상세한 설명과 첨부된 도면을 참조하면 명확하게 이해될 것이다.
제1도는 바람직한 실시예에 따른 정보 처리 프로세서(10) 시스템의 블럭도이다. 바람직한 실시예에서, 프로세서(10)는 단일 집적 회로 수퍼스칼라 마이크로프로세서이다. 따라서, 이하 설명되는 바와 같이, 프로세서(10)는 여러 유닛, 레지스터, 버퍼, 메모리 및 다른 섹션(sections)등을 포함하며, 이들 모든 장치들은 집적 회로로 구현된다. 또한, 바람직한 실시예에서, 프로세서(10)는 RISC(reduced Instruction set computing) 기법에 따라 동작한다. 제1도에 도시된 바와 같이, 시스템 버스(11)는 프로세서(10)의 버스 인터페이스 유닛(bus interface unit: BIU)(12)에 접속된다. BIU(12)는 프로세서(10)와 시스템 버스(11)간의 정보 전송을 제어한다.
BIU(12)는 프로세서(10)의 인스트럭션 캐쉬(14) 및 데이타 캐쉬(16)에 접속된다. 인스트럭션 캐쉬(14)는 인스트럭션을 시퀀서 유닛(18)으로 출력한다. 인스트럭션 캐쉬(14)로부터의 인스트럭션 출력에 응답하여, 시퀀서 유닛(18)은 이들 인스트럭션을 프로세서(10)내의 다른 실행 회로에 선택적으로 출력한다.
시퀀서 유닛(18) 이외에도 본 발명의 바람직한 실시예에서, 프로세서(10)의 실행 회로는 다수의 실행 유닛, 즉, 분기 유닛(branch unit)(20), 고정 소수점 유닛 A(fixed point unit: FXUA)(22), 고정 소수점 유닛 B(FXUB)(24), 복합 고정 소수점 유닛(complex fixed point unit: CFXU), 로드/저장 유닛(load/store unit: LSU)(28) 및 부동 소수점 유닛(floating point unit: FPU)(30)을 포함한다. FXUA(22), FXUB(24), CFXU(26) 및 LSU(28)는 이들의 원시 오퍼랜드 정보(source operand information)를 범용 구조화 레지스터(general purpose architectural resisters: GPR)(32) 및 고정 소수점 재명명 버퍼(fixed point rename buffers)(34)로부터 수신한다. 또한, FXUA(22) 및 FXUB(24)는 캐리 비트(carry bit: CA) 레지스터(42)로부터 캐리 비트를 수신한다. FXUA(22), FXUB(24), CFXU(26) 및 LSU(28)는 이들의 연산 결과(목적지 오퍼랜드 정보)를 출력하여, 고정 소수점 재명명 버퍼(34)내에 선택된 엔트리에 저장한다. 또한, CFXU(26)는 전용 레지스터(special purpose resisters: SPR)(40)로/로부터 원시 오퍼랜드 정보 및 목적지 오퍼랜드 정보를 송수신한다.
FPU(30)는 부동 소수점 구조화 레지스터(floating point architectural registers: FPR)(36) 및 부동 소수점 재명명 버퍼(38)로부터 자신의 원시 오퍼랜드 정보를 수신한다. FPU(30)는 자신의 연산 결과(목적지 오퍼랜드 정보)를 출력하여, 부동 소수점 재명명 버퍼(38)내에 선택된 엔트리에 저장한다.
로드 인스트럭션에 응답하여, LSU(28)는 데이타 캐쉬(16)로부터 정보를 수신하고, 이 정보를 재명명 버퍼(34, 38)중 선택된 재명명 버퍼에 복사한다. 만약 정보가 데이타 캐쉬(16)내에 저장되어 있지 않으면, 데이타 캐쉬(16)는 시스템 버스(11)에 접속된 시스템 메모리(39)로부터 전술한 정보를 (BIU(12) 및 시스템 버스(11)를 통해) 수신한다. 또한, 데이타 캐쉬(16)는 데이타를 데이타 캐쉬(16)로부터 (BIU(12) 및 시스템 버스(11)를 통해) 시스템 버스(11)에 접속된 시스템 메모리(39)에 출력할 수 있다. 저장 인스트럭션에 응답하여, LSU(28)는 GPR(32) 및 FPR(36)중 선택된 레지스터로부터 정보를 입력받아 데이타 캐쉬(16)에 복사한다.
시퀀서 유닛(18)은 정보를 GPR(32) 및 FPR(36)에 출력하고, GPR(32) 및 FPR(36)로부터 정보를 수신한다. 분기 유닛(20)은 시퀀서 유닛(18)으로부터 인스트럭션과 프로세서(10)의 현재 상태를 나타내는 신호를 수신한다. 이러한 인스트럭션 및 신호에 응답하여, 분기 유닛(20)은 프로세서(10)에 의해 실행될 인스트럭션 시퀀스를 저장하고 있는 메모리의 적절한 어드레스를 가리키는 신호를 (시퀀서 유닛(18)에) 출력한다. 분기 유닛(20)으로부터 제공된 이러한 신호에 응답하여, 시퀀서 유닛(18)은 인스트럭션 캐쉬(14)로부터 지정된 인스트럭션 시퀀스를 수신한다. 만약 인스트럭션 캐쉬(14)에 하나 이상의 인스트럭션 시퀀스가 저장되어 있지 않다면, 인스트럭션 캐쉬(14)는 시스템 버스(11)에 접속된 시스템 메모리(39)로 부터 전술한 인스트럭션을 수신한다.
인스트럭션 캐쉬(14)로부터의 인스트럭션 입력에 응답하여, 시퀀서 유닛(18)은 이 인스트럭션을 실행 유닛(20, 22, 24, 26, 28, 30)중 선택된 실행 유닛에 선택적으로 디스패치시킨다. 각각의 실행 유닛은 특정한 인스트럭션 부류들중 하나 혹은 그 이상의 인스트럭션을 실행시킨다. 예를 들어, FXUA(22) 및 FXUB(24)는 원시 오퍼랜드에 대해 제1 부류의 고정 소수점의 수학적 연산, 예를 들어, 가산, 감산, AND 연산, OR 연산, XOR 연산등을 실행한다. CFXU(26)는 원시 오퍼랜드에 대해 제2 부류의 고정 소수점 연산, 예를 들어, 고정 소수점의 곱셈 및 나눗셈을 실행한다. FPU(30)는 원시 오퍼랜드에 대해 부동 소수점 연산, 예를 들어, 부동 소수점의 곱셈 및 나눗셈을 실행한다.
정보가 재명명 버퍼들(34)중 선택된 재명명 버퍼에 저장되면, 이 정보는 선택된 재명명 버퍼에 할당된 인스트럭션에 의해 지정된 저장 위치(예를 들면, GPR(32) 혹은 CA 레지스터(42)중의 하나)와 관련된다. 재명명 버퍼들(34)중 선택된 재명명 버퍼에 저장된 정보는 시퀀서 유닛(18)로부터의 신호에 응답하여, GPR(32) (또는 CA 레지스터(42))중 관련된 레지스터에 복사된다. 다음에 제6 내지 10도를 참조하여 또한 설명되는 바와 같이, 시퀀서 유닛(18)은 전술한 정보를 생성한 인스트럭션이 완료(completion)된 것에 응답하여, 재명명 버퍼(34)중 선택된 재명명 버퍼에 저장된 정보의 복사를 지시한다. 이러한 복사는 되기록(writeback)으로 일컬어진다.
정보가 재명명 버퍼들(38)중 선택된 재명명 버퍼에 저장되면, 이 정보는 FPR(36)들중 하나와 관련된다. 시퀀서 유닛(18)으로부터의 신호에 응답하여, 재명명 버퍼들(38)중 선택된 재명명 버퍼에 저장된 정보는 FPR(36)중 전술한 정보와 관련된 FPR에 복사된다. 시퀀서 유닛(18)은 상기 정보를 생성한 인스트럭션의 완료에 응답하여, 재명명 버퍼(38)중 선택된 재명명 버퍼에 저장된 정보의 복사를 지시한다.
프로세서(10)는 여러 실행 유닛(20, 22, 24, 26, 28, 30)에서 다수의 인스트럭션을 동시에 처리함으로써 높은 성능을 달성한다. 따라서, 각각의 인스트럭션은 일련의 단계로 처리되며, 이러한 각각의 단계는 다른 인스트럭션의 단계와 병렬로 실행될 수 있다. 이러한 기법은 파이프라이닝(pipelining)으로 일컬어진다. 본 발명의 바람직한 실시예의 중요 특징에 있어서, 인스트럭션은 통상적으로 6 단계, 즉, 인출(fetch), 리코딩, 디스패치, 실행, 완료 및 되기록(writeback) 단계로 처리된다.
인출 단계에서, 시퀀서 유닛(18)은 분기 유닛(20) 및 시퀀서 유닛(18)과 함께 전술한 인스트럭션 시퀀스를 저장하고 있는 하나 이상의 메모리 어드레스로부터 하나 이상의 인스트럭션을 (인스트럭션 캐쉬(14)로부터) 선택적으로 입력받는다.
디코딩 단계에서, 시퀀서 유닛(18)은 4개까지 인출된 인스트럭션을 디코딩한다.
디스패치 단계에서, 시퀀서 유닛(18)은 (디코딩 단계의 디코딩에 응답하여) 실행 유닛(20, 22, 24, 26, 28, 30)중 선택된 실행 유닛에 4개까지 디코딩된 인스트럭션을 선택적으로 디스패치한 후에, 각각의 디스패치된 인스트럭션의 결과(목적지 오퍼랜드 정보)를 저장하기 위한 재명명 버퍼의 엔트리를 예약해 둔다. 디스패치 단계에서, 디스패치된 인스트럭션의 오퍼랜드 정보는 선택된 실행 유닛으로 제공된다. 프로세서(10)는 자신의 프로그램된 시퀀스의 순서에 따라 인스트럭션을 디스패치시킨다.
실행 단계에서, 실행 유닛들은 자신의 디스패치된 인스트럭션을 실행하고, 전술한 바와 같이 자신의 연산 결과(목적지 오퍼랜드 정보)를 출력하여 재명명 버퍼(34, 38)내의 선택된 엔트리에 저장한다. 이러한 방식으로, 프로세서(10)는 인스트럭션을 자신의 프로그램된 시퀀스와는 다른 순서로 실행할 수 있다.
완료 단계에서, 시퀀서 유닛(18)은 이하 제3 및 4도를 참조하여 기술되는 바와 같이, 인스트럭션이 완료되었음을 나타낸다. 프로세서(10)는 인스트럭션을 자신의 프로그램된 시퀀스 순서에 따라 완료한다.
되기록 단계에서, 시퀀서 유닛(18)은 재명명 버퍼(34 및 38)로부터의 정보가 각각 GPR(32) 및 FPR(36)에 복사되도록 지시한다. 시퀀서 유닛(18)은 이하 제6∼10도를 참조하여 기술되는 바와 같이, 선택된 재명명 버퍼에 저장된 정보의 복사를 지시한다. 마찬가지로, 특정 인스트럭션의 되기록 단계에서, 프로세서(10)는 특정한 인스트럭션에 응답하여 자신의 구조화 상태(architectural states)를 갱신한다. 프로세서(10)는 각각의 인스트럭션의 되기록 단계들을 프로그램된 시퀀스 순서에 따라 처리한다. 이하 제6∼10도를 참조하여 또한 기술되는 바와 같이, 특정한 상황인 경우 프로세서(10)는 인스트럭션의 완료 단계와 되기록 단계를 통합하는 것이 바람직하다.
바람직한 실시예에서, 각각의 인스트럭션은 각각의 인스트럭션 처리 단계를 완료하기 위해 하나의 머신 사이클을 필요로 한다. 그러나, 어떤 인스트럭션(예를 들면, CFXU(26)에 의해 실행되는 복합 고정 소수점 인스트럭션)은 하나보다 많은 사이클이 필요할 수도 있다. 따라서, 선행하는 인스트럭션들을 완료하는데 필요한 시간이 변함에 따라 특정 인스트럭션의 실행 단계와 완료 단계 사이에 가변적인 지연이 발생될 수 있다.
제2도는 프로세서(10)의 FXUA(22)의 블럭도이다. FXUA(22)는 예약 스테이션(reservation stations)(50a, 50b)을 포함한다. 마찬가지로, 각각의 분기 유닛(20), FXUB(24), CFXU(26), LSU(28) 및 FPU(30)도 제각기 예약 스테이션을 포함한다. 명료성을 위해, 다음 설명에서는 FXUA(22)와 이 예약 스테이션의 동작을 다른 실행 유닛들과 이들의 예약 스테이션의 동작의 하나의 예로서 기술할 것이다.
각각의 예약 스테이션(50a, 50b)은 시퀀서 유닛(18)로부터 디스패치되어 FXUA(22)에 의해 실행될 개개의 인스트럭션에 대한 정보를 저장할 수 있다. 각각의 예약 스테이션은 목적지 레지스터 필드(destination register field)와, 오퍼랜드 A 필드와, 오퍼랜드 B 필드와, 연산 코드 필드를 제각기 포함한다. 또한, 본 발명의 바람직한 실시예의 중요한 특징에 있어서, 각각의 예약 스테이션은 또한 실행 허용(EOK) 필드를 제각기 포함한다.
예약 스테이션의 목적지 레지스터 필드에서, 예약 스테이션은 예약 스테이션의 개개의 인스트럭션에 대해 (시퀀서 유닛(18)에 의해 지정된) 적어도 하나의 목적지 레지스터를 식별한다. 유사하게, 각각의 오퍼랜드 A 및 오퍼랜드 B 필드에서, 예약 스테이션은 예약 스테이션의 개개의 인스트럭션에 대해 (GPR(32), 재명명 버퍼(34), FXUB(24), CFXU(26) 또는 LSU(28)로부터) 원시 오퍼랜드 정보를 저장한다. 연산 코드 필드에서, 예약 스테이션은 예약 스테이션의 개개의 인스트럭션에 응답하여 FXUA(22)에 의해 실행될 원시 오퍼랜드 정보에 대한 연산을 나타내는 (시퀀서 유닛(18)에 의해 지정된) 연산 코드를 저장한다.
제어 로직(56)으로부터의 신호에 응답하여, 실행 로직(54)은 예약 스테이션의 오퍼랜드 A 및 오퍼랜드 B 필드로부터 원시 오퍼랜드 정보를 수신하여, 이 원시 오퍼랜드 정보에 대해 (예약 스테이션내에 저장된 연산 코드가 지정하는) 연산을 실행한다. 이러한 연산 결과에 의해 생성된 정보는 실행 로직(54)으로부터 재명명 버퍼(34), FXUB(24), CFXU(26) 및 LSU(28)로 출력된다. 이러한 정보는 재명명 버퍼(34)들중 선택된 재명명 버퍼에 저장된다. (선택된 재명명 버퍼내에) 저장된 정보는 멀티플렉서(58)의 출력에 의해 식별된 목적지 레지스터에 응답하여 GPR(32)들중 하나와 관련된다.
본 발명의 바람직한 실시예의 중요한 특징에 있어서, 예약 스테이션은 또한 자신의 EOK 필드내에 (시퀀서 유닛(18)이 지정한) EOK 정보를 저장한다. 바람직하게도, 이러한 EOK 정보는 프로세서(10)가 실행 직렬화된 인스트럭션의 실행을 지연시키는 소정의 상황들을 수용한다. 실행 직렬화 기법은 프로세서(10)와 같은 다중 파이프라인, 비순서적인 실행 프로세서(multiple-pipeline, out-of-order execution processors)에서 인스트럭션의 실행을 지연시키는 방안이다. 프로세서(10)가 실행 직렬화 인스트럭션의 실행을 지연시키는 제1 경우에 있어서, 실행 직렬화된 인스트럭션은 사변적으로 실행되지 않는다. 프로세서(10)가 실행 직렬화된 인스트럭션의 실행을 지연시키는 제2 경우에 있어서, 실행 직렬화된 인스트럭션은 자신의 모든 원시 오퍼랜드 정보가 이용가능하고 유효할 때까지 실행이 지연된다.
(인스트럭션이 사변적으로 실행되지 않는) 제1 경우에 대해 살펴보면, 프로세서(10)는 통상적으로 인스트럭션을 사변적으로 실행하여, 인스트럭션이 인스트럭션 스트림내에 프로그램된 시퀀스 순서와 다르게 실행되도록 한다. 따라서, 인스트럭션의 결과(목적지 오퍼랜드 정보)는 반드시 인스트럭션의 프로그램된 시퀀스 순서로 사용될 필요는 없다. 그러나, 프로세서(10)는 인스트럭션 결과를 인스트럭션의 프로그램된 시퀀스 순서에 따라 구조화 레지스터(예를 들면, GPR(32) 및 FPR(32))에 되기록한다. 이러한 이유에 의해, 프로세서(10)는 적절한 순간(즉, 모든 선행하는 인스트럭션의 실행을 예외 조건(exception condition)없이 완료하는 순간)까지 인스트럭션 결과들을 임시 저장하고, 이러한 임시 저장된 결과를 구조화 레지스터에 되기록되도록 하는 재명명 버퍼(34, 38)를 포함한다.
그렇지만, 바람직한 실시예의 하나의 예의 경우와 같이, 어떤 인스트럭션들은 SPR(40)(제1도)에 대해 동작하며, 이 경우 인스트럭션 결과는 재명명 버퍼내에 임시 저장되지 않고 SPR(40)에 직접 기록된다. 이러한 인스트럭션의 하나의 예는 CFXU(26)가 정보를 GPR(32)들중 하나의 레지스터로부터 SPR(40)들중 하나의 레지스터로 이동시키는 Move To 인스트럭션을 들 수 있다. 제1도에 도시된 바와 같이, CFXU(26)는 SPR(40)에 접속된다. Move To 인스트럭션은 실행시 SPR(40)들중 하나의 레지스터를 즉시 갱신한다. 또다른 예로, 저장 인스트럭션의 결과는 재명명 버퍼내에 임시 저장되지 않고 데이타 캐쉬(16)내의 메모리 위치에 직접 기록된다.
프로세서(10)가 정확한 인터럽트 및 정확한 예외(exceptions)를 달성할 수 있도록, 프로세서(10)는 (인스트럭션 결과가 재명명 버퍼내에 임시 저장되지 않고 구조화 레지스터 또는 메모리 위치로 직접 기록되는 경우) 인스트럭션을 사변적으로 실행하지 않는다. 또한, 이들 인스트럭션의 결과는 재명명 버퍼내에 임시 저장되지 않고 구조화 레지스터 또는 메모리 위치에 직접 기록되기 때문에, 이러한 인스트럭션은 되기록 단계를 거치지 않고 처리된다. 따라서, 완료 및 되기록이 순서에 따라 실행되도록 하기 위해, 프로세서(10)는 선행하는 모든 인스트럭션이 완료될 때까지 이들 인스트럭션의 실행을 지연시킨다.
(인스트럭션의 모든 원시 오퍼랜드 정보가 이용가능하고 유효할 때까지 인스트럭션의 실행이 지연되는) 제2 경우에 대해, 제2도를 참조하면, 예약 스테이션은 인스트럭션이 시퀀서 유닛(18)으로부터 디스패치될 때 원시 오퍼랜드 정보가 이용될 수 없는 개개의 인스트럭션에 대한 정보를 임시 저장한다. 실행 유닛으로부터 원시 오퍼랜드 정보가 이용가능하면, 예약 스테이션은 이러한 원시 오퍼랜드 정보를 입력하여 저장한다. 예약 스테이션은 적절한 때에 이러한 원시 오퍼랜드 정보를 실행 로직(54)에 제공한다.
바람직한 실시예에서, 대부분의 인스트럭션들은 하나 이상의 GPR(32) 및 FPR(36)을 원시 오퍼랜드로서 지정한다. 따라서, 바람직한 실시예에서, 예약 스테이션은 실행 유닛으로부터의 정보를 전송하는 회로를 구비한다.
그렇지만, 바람직한 실시예에 있어서, 예약 스테이션은 CA 레지스터(42) 또는 SPR(40)과 같이 다른 유형의 오퍼랜드로부터 제공된 정보를 전송하는 회로는 구비하지 않는다. 그 이유는 전송되지 않는 원시 오퍼랜드를 지정하는 인스트럭션의 빈도에 비해 이러한 회로의 비용 및 크기가 부담되기 때문이다. 이 대신에, 바람직한 실시예의 프로세서(10)는 적어도 선행하는 모든 인스트럭션들이 완료될 때까지 전송되지 않는 원시 오퍼랜드를 지정하는 인스트럭션의 실행을 지연시킨다. 선행하는 모든 인스트럭션의 완료에 응답하여, 구조화 레지스터(예를 들면, SPR(40))중 지정된 레지스터로부터 전송되지 않는 원시 오퍼랜드가 판독된다. 이러한 인스트럭션의 예로는 (1) CA 레지스터(42)를 판독하는 확장된 산술 인스트럭션(arithmatic instruction)과, (2) 정보를 SPR(40)들중의 하나의 레지스터로부터 GPR(32)들중의 하나의 레지스터로 이동시키는 Move From 인스트럭션을 들 수 있다.
요약하면, 프로세서(10)는 두가지 경우에 있어서 적어도 선행하는 모든 인스트럭션이 완료될 때까지 실행 직렬화된 인스트럭션의 실행을 지연시킨다. 제1 경우에 있어서, 인스트럭션은 사변적으로 실행되지 않는다. 제2 경우에 있어서, 인스트럭션은 프로세서(10)가 전송 회로를 포함하지 않는 적어도 하나의 원시 오퍼랜드를 지정한다. 예약 스테이션에 저장될 EOK 정보를 지정하는 시퀀서 유닛(18)은 이들 두 경우를 수용하는 것이 바람직하다.
만약 인스트럭션이 실행 직렬화된다면, 시퀀서 유닛(18)은 인스트럭션이 FXUA(22)에 디스패치될 때 (예약 스테이션의 EOK 필드내에 저장된 EOK 정보내의) EOK 비트를 논리 0으로 클리어시킨다. EOK 비트가 논리 0으로 클리어되어 있으면, 시퀀서 유닛(18)은 설사 인스트럭션이 실행될 준비가 되어 있더라도 FXUA(22)가 인스트럭션을 실행하지 못하게 한다. 따라서, 이하 기술되는 바와 같이, FXUA(22)는 라인(60)을 통해 신호를 출력하는 시퀀서 유닛(18)에만 응답하여 이러한 실행 직렬화된 인스트럭션을 실행한다.
이와 달리, 만약 인스트럭션이 실행 직렬화되어 있지 않다면, 시퀀서 유닛(18)은 인스트럭션이 FXUA(22)에 디스패치될 때 EOK 비트를 논리 1로 설정한다. EOK 비트가 논리 1로 설정되면, 시퀀서 유닛(18)은 인스트럭션의 원시 오퍼랜드 정보가 이용가능하고 유효해지는 즉시 FXUA(22)가 인스트럭션을 실행할 수 있도록 한다.
제3도는 시퀀서 유닛(18)의 블럭도이다. 전술한 바와 같이, 인출 단계에서, 시퀀서 유닛(18)은 인스트럭션 캐쉬(14)로부터 4개까지 인스트럭션을 입력받아 이들 인스트럭션을 인스트럭션 버퍼(70)에 저장한다. 디코딩 단계에서, 디코드 로직(72)은 인스트럭션 버퍼(70)로부터 4개까지 인출된 인스트럭션을 입력받아 이를 디코딩한다. 디스패치 단계에서, 디스패치 로직(74)은 (디코딩 단계의 디코딩에 응답하여) 4개까지 디코딩된 인스트럭션을 실행 유닛(20, 22, 24, 26, 28, 30)들중 선택된 실행 유닛에 선택적으로 디스패치한다.
제4도는 바람직한 실시예의 시퀀서 유닛(18)의 재배열 버퍼(reorder buffer)(76)의 개념도이다. 제4도에 도시된 바와 같이, 재배열 버퍼(76)는 제각기 버퍼 번호(0-15)로 명명된 16개의 엔트리를 가진다. 각각의 엔트리는 5개의 주요 필드, 즉, 인스트럭션 유형 필드와, GPR 목적지의 수 필드와, FPR 목적지의 수 필드와, 종료 필드와, 예외 필드를 갖고 있다. 또한, 인스트럭션 필드는 실행 유닛 서브 필드 및 EOK 서브 필드를 갖고 있다.
제3도를 또한 참조하면, 디스패치 로직(74)이 인스트럭션을 실행 유닛에 디스패치하면, 시퀀서 유닛(18)은 재배열 버퍼(76)내의 관련된 엔트리에 디스패치된 인스트럭션을 할당한다. 시퀀서 유닛(18)이 엔트리 0을 할당하고, 이어서 엔트리 1-15를 순차적으로 할당하고, 다시 엔트리 0을 할당하는 방식으로 수행하도록, 시퀀서 유닛(18)은 디스패치된 인스트럭션을 재배열 버퍼(76)내의 엔트리에 FIFO(first-in first-out) 방식 및 회전 방식(rotating manner)으로 할당한다. 디스패치된 인스트럭션이 재배열 버퍼(76)내의 관련된 엔트리에 할당되면, 디스패치 로직(74)은 디스패치된 인스트럭션과 관련된 정보를 출력하여, 재배열 버퍼(76) 내의 관련된 엔트리의 여러 필드 및 서브필드에 저장한다.
예를 들면, 제4도의 엔트리 0에서, 재배열 버퍼(76)는 인스트럭션이 FXUA(22)에 디스패치되었음을 나타낸다. 또한, 엔트리 0은 EOK=0으로 하여, 디스패치된 인스트럭션이 실행 직렬화되었음을 나타내고, 프로세서(10)가 적어도 선행하는 모든 인스트럭션이 완료될 때까지 디스패치된 인스트럭션의 실행을 지연시켜야 함을 나타낸다. 또한, 엔트리 1에서, 재배열 버퍼(76)는 EOK=0으로 하여 그 다음 인스트럭션이 실행 직렬화되었음을 나타낸다.
본 발명의 바람직한 실시예의 다른 중요한 특징에 있어서, 엔트리 0은 또한 디스패치된 인스트럭션이 (GPR 목적지의 수=1로 하여) 하나의 GPR 목적지 레지스터를 가지고, (FPR 목적지의 수=0으로 하여) FPR 목적지 레지스터를 갖지 않고, (종료=0으로 하여) 아직 종료되지 않았고, (예외=0으로 하여) 아직 예외를 야기하지 않았음을 나타낸다.
실행 유닛이 디스패치된 인스트럭션을 실행하면, 실행 유닛은 재배열 버퍼(76)내의 관련된 엔트리를 변경한다. 구체적으로, 디스패치된 인스트럭션의 실행 종료에 응답하여, 실행 유닛은 (종료=1로 하여) 엔트리의 종료 필드를 변경한다. 만약 실행 유닛이 디스패치된 인스트럭션을 실행하는 동안에 예외에 직면하게 되면, 실행 유닛은 (예외=1로 하여) 엔트리의 예외 필드를 변경한다.
제3도를 다시 참조하면, 재배열 버퍼(76)의 엔트리는 시퀀서 유닛(18)의 완료 로직(80) 및 예외 로직(82)에 의해 판독된다. 또한, 본 발명의 바람직한 실시예의 또다른 중요한 특징에 있어서, 재배열 버퍼(76)의 엔트리는 시퀀서 유닛(18)의 실행 직렬화 로직(84)에 의해 판독된다. 재배열 버퍼(76)의 예외 필드에 응답하여, 예외 로직(82)은 디스패치된 인스트럭션을 실행하는 동안 발생된 예외를 처리한다.
재배열 버퍼(76)의 종료 필드 및 예외 필드에 응답하여, 완료 로직(80)은 디스패치 로직(74), 실행 직렬화 로직(84) 및 재배열 버퍼(76)에 신호를 출력한다. 이들 신호를 통해, 완료 로직(80)은 인스트럭션의 완료를 프로그램된 시퀀스의 순서로 나타낸다. 완료 로직(80)은 다음과 같은 조건들을 충족하는 경우에 인스트럭션의 완료를 나타낸다.
조건 1 : (인스트럭션이 디스패치된) 실행 유닛이 인스트럭션의 실행을 종료한다(이에 따라, 재배열 버퍼(76)내의 인스트럭션 관련 엔트리에서 종료=1이 된다).
조건 2 : 예외가 인스트럭션의 임의의 처리 단계와 더불어 발생되지 않는다 (이에 따라, 재배열 버퍼내의 인스트럭션 관련 엔트리에서 예외=0이 된다).
조건 3 : 이전에 디스패치된 모든 인스트럭션은 조건 1 및 2를 충족한다.
재배열 버퍼(76)내의 정보에 응답하여, 디스패치 로직(74)은 추가로 디스패치될 인스트럭션의 적절한 수를 결정한다.
본 발명의 바람직한 실시예의 또다른 중요한 특징에 있어서, 완료 로직(80)으로부터의 신호에 응답하여, 실행 직렬화 로직(84)은 신호를 라인(60)을 통해 FXUA(22)에 선택적으로 출력한다. 만약 FXUA(22)에 디스패치된 인스트럭션이 (재배열 버퍼(76)내의 인스트럭션 관련 엔트리의 인스트럭션 유형 필드내에서) 논리 0으로 클리어된 관련 EOK 비트를 가지면, 실행 직렬화 로직(84)은 디스패치된 인스트럭션에 선행하는 모든 인스트럭션의 완료에 응답하여 신호를 라인(60)을 통해 출력한다. 실행 직렬화 로직(84)이 신호를 라인(60)을 통해 출력한 것에만 응답하여, FXUA(22)는 이러한 디스패치된 인스트럭션을 실행한다. 즉, 실행 직렬화 로직(84)이 신호를 라인(60)을 통해 출력할 때, (논리 0으로 클리어된 관련 EOK 비트를 갖는) 이러한 디스패치된 인스트럭션은 FXUA(22)의 예약 스테이션(50a, 50b)에서 가장 오랫동안 보류중인 인스트럭(oldest pending instruction)이 되는데, 그 이유는 인스트럭션들이 프로그램된 시퀀스 순서대로 완료되기 때문이다.
마찬가지로, 실행 직렬화 로직(84)은 신호를 라인(86, 88, 90, 92 및 94)을 통해 이들 라인에 제각기 접속된 실행 유닛(20, 24, 26, 28 및 30)에 선택적으로 출력한다.
제5a 및 5b도는 인스트럭션의 여러 단계들을 도시한 도면이다. 제5a도를 참조하면, 선행하는 모든 인스트럭션이 완료될 때(예를 들어, 선행하는 인스트럭션(INST n)의 사이클 5)까지, 실행 직렬화 인스트럭션(INST n+1)(예를 들어, Move To 인스트럭션 또는 Move From 인스트럭션)의 실행(사이클 6)이 지연된다. 그렇지만, 프로세서(10)는 바람직하게도 실행 직렬화 인스트럭션(INST n+1) 다음 인스트럭션(INST n+2)의 디스패치(사이클 3) 또는 실행(사이클 4)을 지연시키지 않는다. 이러한 방식으로, 프로세서(10)는 실행 직렬화 인스트럭션(예를 들어, INST n+1) 이후의 인스트럭션(예를 들어, INST n+2)을 연속적으로 디스패치한다. 또한, 실행 유닛의 예약 스테이션내에 가장 오랫동안 보류중인 인스트럭션이 실행 직렬화되더라도, 프로세서(10)의 실행 유닛은 인스트럭션을 실행 유닛의 예약 스테이션으로부터 실행 로직(예를 들어, 제2도의 실행 로직(54))에 비순서적으로 제공할 수 있다.
바람직한 실시예의 프로세서(10)는 다른 대안들보다 뛰어난 성능을 제공한다. 제5b도에 도시된 바와 같이, 이들 대안들 중 하나의 기법에 따르면, 인스트럭션(INST i+2)의 디스패치(사이클 8)는 실행 직렬화에 대한 인스트럭션(INST i+1)이 디코딩(사이클 2)된 것에 응답하여 지연된다. 이러한 대안적 기법에서, 인스트럭션(INST i+2)의 인스트럭션 디스패치(사이클 8)는 이전에 디스패치된 모든 인스트럭션이 완료된 이후에(예를 들어, 선행하는 실행 직렬화된 인스트럭션 (INST i+1)의 사이클 7 이후에) 재개된다. 이러한 대안적인 기법의 문제점은 실행 직렬화된 인스트럭션(예를 들어, INST i+1) 다음의 모든 인스트럭션(예를 들어, INST i+2)의 실행이 지연된다는 것이다.
전술한 바와 같이, 프로세서(10)는 실행 직렬화된 인스트럭션 다음의 인스트럭션을 연속적으로 디스패치한다. Move From 인스트럭션은 실행 직렬화된 인스트럭션이므로, 바람직한 실시예의 실행 직렬화된 기법으로 이득을 얻을 수 있다. 또한, 본 발명의 바람직한 실시예의 또다른 중요한 특징에 있어서, 프로세서(10)는 Move From 인스트럭션의 결과(목적지 오퍼랜드 정보)를 출력하여, 목적지 오퍼랜드 정보를 GPR(32)중의 하나의 레지스터에 되기록하기 전에, 선택된 재명명 버퍼에 저장하는 회로를 더 포함한다.
프로세서(10)는 Move From 인스트럭션의 목적지 레지스터가 GPR(32)의 하나 인지의 여부에 관계없이 이러한 재명명 방안을 지원한다. 이러한 방식으로, 프로세서(10)는 자신의 예약 스테이션의 기존의 전송 회로와 재명명 버퍼를 탐색하는 회로를 함께 사용하여, (Move From 인스트럭션의) 목적지 오퍼랜드 정보를 Move From 인스트럭션 이후에 디스패치된 인스트럭션의 원시 레지스터와 정확하게 일치시킨다. 따라서, Move From 인스트럭션 이후의 다른 인스트럭션들은 Move From 인스트럭션이 디스패치된 이후에도 언제든지 디스패치될 수 있다. Move From 인스트럭션에 대해 전술한 회로를 사용하지 않으면, Move From 인스트럭션 이후의 다른 인스트럭션들은 Move Form 인스트럭션이 완료될 때까지는 디스패치될 수 없는데, 그 이유는 전술한 다른 인스트럭션들이 Move From 인스트럭션의 목적지 오퍼랜드 정보를 (원시 오퍼랜드 정보로서) 필요로 하기 때문이다.
본 발명의 바람직한 실시예의 또다른 중요한 특징에 있어서, 프로세서(10)는 바람직한 방식으로 인스트럭션의 인출 및 디코딩과 관련된 예외(instruction fetch and decode related exceptions: IFDRE)에 응답하여 인스트럭션을 능률적으로 디스패치한다. 만약 예외 조건이 인스트럭션 및 프로세서(10)의 상태로부터 완전히 검출될 수 있으면, 프로세서(10)는 인출 단계 또는 디코딩 단계에서 인스트럭션의 인출 또는 디코드와 관련된 예외를 검출한다. 이러한 인스트럭션의 인출 또는 디코딩과 관련된 예외의 예로는 인스트럭션 액세스의 페이지폴트(instruction access pagefault), 인스트럭션 액세스의 저장 장치의 보호 위반(instruction access storage protection violation), 특권 인스트럭션 위반(priviledged instruction violation) 및 불법 인스트럭션을 들 수 있다.
바람직하게, 이러한 인스트럭션의 인출 또는 디코딩과 관련된 예외에 응답하여, 시퀀서 유닛(18)은 IFDRE-야기 인스트럭션(IFDRE-causing instruction)을 실행 유닛의 예약 스테이션에 디스패치하되, 제2∼4도를 참조하여 전술한 바와 같이 EOK 비트는 논리 0으로 클리어된다. 또한, 시퀀서 유닛(18)은 재배열 버퍼(76)내의 IFDRE-야기 인스트럭션과 관련된 엔트리내에 (종료=1로 유지하면서) 예외=1로 설정함으로써 IFDRE 조건의 표시를 저장한다. 이러한 표시는 인스트럭션을 IFDRE_야기 인스트럭션으로 식별한다.
제2 내지 4도를 참조하여 전술한 바와 같이, EOK 비트가 논리 0으로 클리어되면, 설사 디스패치된 인스트럭션이 실행할 준비가 되어 있더라도, 시퀀서 유닛(18)은 실행 유닛이 디스패치된 인스트럭션을 실행하지 못하게 한다. 따라서, 제2∼4도를 참조하여 전술한 바와 같이, 시퀀서 유닛(18)이 신호를 라인들(60, 86, 88, 90, 90 또는 94) 중 제각기 접속된 하나의 라인을 통해 출력한 것에만 응답하여, 실행 유닛은 이러한 인스트럭션을 실행한다.
IFDRE_야기 인스트럭션에 선행하는 모든 인스트럭션이 완료된 것에 응답하여, 시퀀서 유닛(18)은 신호를 라인들(60, 86, 88, 90, 92 또는 94) 중 제각기 접속된 하나의 라인을 통해 실행 유닛에 출력하는 것 대신에 인출 또는 디코딩과 관련된 예외를 처리한다. 따라서, IFDRE_야기 인스트럭션은 실행 유닛에 의해서는 결코 실행되지 않는다. 시퀀서 유닛(18)는 재배열 버퍼(76)내의 IFDRE_야기 인스트럭션과 관련된 엔트리내에 예외=1 및 종료=0인 것에 응답하여 인스트럭션을 IFDRE_야기 인스트럭션으로서 인식한다.
이러한 방식으로, 프로세서(10)는 수퍼스칼라 프로세서내의 속도 임계 회로인 디스패치 로직(74)(제3도)을 이용하여 인스트럭션 디스패치의 효율 및 속도를 증가시킨다. 따라서, 바람직한 실시예의 프로세서(10)는 전술한 대안보다 뛰어난 성능을 제공한다. 이러한 대안적 기법중 하나의 기법에 따르면, 프로세서는 IFDRE_야기 인스트럭션을 전혀 디스패치하지 않는다. 이러한 대안적 기법을 이용하면, 디스패치가 복잡하고 느리게 수행된다. 그 이유는 프로세서가 각각의 인스트럭션에 대해 인스트럭션을 디스패치할지의 여부를 결정하기 전에 모든 인스트럭션의 인출 또는 디코딩과 관련된 예외 조건을 검출해야 하기 때문이다. 예를 들어, 이러한 대안적 기법에 따르면, 프로세서는 n번째 인스트럭션 혹은 선행하는 n-1까지의 인스트럭션들중 소정의 인스트럭션이 인출 또는 디코딩과 관련된 예외 조건을 갖는지의 여부에 응답하여 n번째 인스트럭션을 디스패치할 것인지를 결정한다.
이와 달리, 바람직한 실시예에 있어서, 디스패치 로직(74)(제3도)은 인출 또는 디코딩과 관련된 예외 조건과는 무관하게 동작한다. 실행을 위해 인스트럭션을 실행 유닛에 디스패치하기로 결정한 후에도, 시퀀서 유닛(18)은 인스트럭션에 대한 IFDRE 조건이 존재하는지를 판정할 수 있다. 만약 시퀀서 유닛(18)이 인스트럭션에 대한 IFDRE 조건이 존재하는 것으로 판정하면, 시퀀서 유닛(18)은 IFDRE 조건이 존재하는 신호를 출력하여, 실행 유닛이 인스트럭션을 실행하지 못하게 한다. 구체적으로, 시퀀서 유닛(18)이 인스트럭션에 대한 IFDRE 조건이 존재하는 것으로 판정하면, 시퀀서 유닛(18)은 (1) 재배열 버퍼(76)내의 IFDRE_야기 인스트럭션과 관련된 엔트리내에 (종료=0으로 유지하면서) 예외=1로 설정하고, (2) IFDRE_야기 인스트럭션의 예약 스테이션내에 EOK 비트를 논리 0으로 설정함으로써, 실제 디스패치 동안 IFDRE 조건이 존재하는 신호를 출력한다.
이것은 바람직한데, 그 이유는 인스트럭션을 디스패치하기로 결정하고 나서 이 결정의 결과를 반전시켜 인스트럭션을 디스패치하지 않도록 하는 것은 통상적으로 불가능하기 때문이다. 또한, 디스패치 사이클 동안, 인스트럭션을 디스패치하기로 결정한 이후에 동작이 추가로 수행된다. 따라서, 프로세서(10)는 각각의 인스트럭션을 디스패치할 것인지를 결정하기 전에 임의의 예외 조건을 검출할 필요는 없다. 이것은 시퀀서 유닛(18)이 프로세서(10)의 단일 사이클 동안 다수의 인스트럭션을 디스패치하는 경우에 특히 바람직하다.
제6도는 재배열 버퍼(76)의 개념도로서, 이 도면에서 4개의 인스트럭션이 프로세서(10)의 동일한 사이클 동안 실행을 종료(종료=1)하는 것으로 도시되어 있다. 제7도는 제6도의 4개의 인스트럭션의 여러 단계들을 도시한 도면이다. 제8a 내지 8d도는 프로세서(10)의 재명명 버퍼의 개념도이다.
제6∼8도를 참조하면, 본 발명의 바람직한 실시예의 또다른 중요한 특징에 있어서, 되기록은 인스트럭션의 완료와는 무관하므로, 프로세서(10)에 의해 처리되는 인스트럭션의 되기록 단계는 인스트럭션의 완료 단계와 분리가능하다. 바람직하게, 이러한 방식으로 되기록 단계가 완료 단계와 분리되면, 프로세서(10)는 재명명 버퍼와 구조화 레지스터간의 되기록 포트를 적게 사용함으로써 동작을 효율적으로 성취할 수 있다. 예를 들면, 제1도에 도시된 바와 같이, 바람직한 실시예의 프로세서(10)는 재명명 버퍼(34)와 GPR(32) 사이에 두개의 되기록 포트와, 재명명 버퍼(34)와 FPR(36) 사이에 두개의 되기록 포트를 포함한다. 되기록 포트의 수가 적을수록 재명명 버퍼(34, 38) 및 구조화 레지스터(32, 36)의 물리적인 크기는 감소된다. 또한, 완료 로직(80)(제3도)이 더욱 효율적으로 되기 때문에, 프로세서(10)는 특정 인스트럭션이 현재 사이클 동안 완료될 수 있는지의 여부를 보다 빨리 결정할 수 있다.
바람직한 실시예에서, 프로세서(10)는 사이클당 4개까지 인스트럭션을 완료할 수 있다. 또한, 바람직한 실시예에서, 각각의 인스트럭션은 목적지 오퍼랜드를 두개까지 포함할 수 있다. 따라서, 만약 프로세서(10)가 완료 단계로부터 되기록 단계를 분리하는 것을 지원하지 않았다면, 4개의 인스트럭션 각각이 두개의 목적지 오퍼랜드를 가지는 경우, 프로세서(10)는 특정한 사이클 동안 4개의 인스트럭션을 완료하기 위해 (예를 들어, 재명명 버퍼(34)와 GPR(32) 사이에) 8개의 되기록 포트를 필요로 한다. 그 이유는 인스트럭션을 완료하는 경우 재명명 버퍼로부터 이와 관련된 구조화 레지스터로 복사되는 각각의 인스트럭션의 목적지 오퍼랜드에 대해 되기록 포트가 필요하기 때문이다.
되기록 포트의 수가 적을수록 동일 사이클 동안 더많은 인스트럭션이 되기록 대상으로 고려됨에 따라, 되기록 포트의 이용을 입증하는 것이 더욱 복잡해진다. 그 이유는 특정한 사이클 동안 특정 인스트럭션에 대한 되기록 포트의 사용이 동일 사이클 또는 이전의 사이클 동안 선행하는 인스트럭션에 대해 사용되는 되기록 포트의 수에 따라 달라지기 때문이다.
바람직하게, 완료 단계로부터 되기록 단계를 분리하면, 프로세서(10)의 완료로직(80)(제3도)이 더욱 효율적으로 된다. 그 이유는 인스트럭션의 완료는 다음의 조건을 따르기 때문이다.
조건 1 : (인스트럭션이 디스패치된) 실행 유닛이 인스트럭션의 실행을 종료한다.
조건 2 : 인스트럭션을 처리하는 어떠한 단계에서도 예외가 발생되지 않았다.
조건 3 : 이전에 디스패치된 모든 인스트럭션이 조건 1 및 2를 충족한다.
되기록 단계로부터 완료 단계가 분리되었을 때, 프로세서(10)는 되기록 포트가 특정한 사이클 동안 사용가능한 경우 특정한 사이클 동안 재명명 버퍼로부터 완료된 인스트럭션의 목적지 오퍼랜드 정보를 복사하여 이를 구조화 레지스터에 저장한다. 되기록 포트가 특정한 사이클 동안 사용할 수 없으면, 프로세서(10)는 되기록 포트가 사용가능할 때 차후의 사이클 동안 재명명 버퍼로부터 완료된 인스트럭션의 목적지 오퍼랜드 정보를 복사하여 이를 구조화 레지스터에 저장한다.
제6도를 참조하면, 재배열 버퍼(76)는 프로세서(10)의 동일한 사이클 동안 실행을 종료하는 4개의 인스트럭션 정보를 저장한다. 제7도는 4개의 인스트럭션(INST x, INST x+1, INST x+2, INST x+3)의 여러 단계들을 도시한 도면으로서, 이들 인스트럭션은 제각기 제6도의 재배열 버퍼 번호(7, 8, 9, 10)와 관련된다. 따라서, 인스트럭션(INST x)은 하나의 목적지 오퍼랜드를 가진다(GPR 목적지의 수=1). 또한, 인스트럭션(INST x+1)도 하나의 목적지 오퍼랜드를 가진다(GPR 목적지의 수=1). 이와 달리, 인스트럭션(INST x+2)은 두개의 목적지 오퍼랜드를 가진다(GPR 목적지의 수=2). 마찬가지로, 인스트럭션(INST x+3)도 두개의 목적지 오퍼랜드를 가진다(GPR 목적지의 수=2). 제7도에 도시한 바와 같이, 각각의 인스트럭션(INST x, INST x+1, INST x+2, INST x+3)은 사이클(4)이 종료될 때 실행을 종료한다.
제8a 내지 8d도는 프로세서(10)의 재명명 버퍼(34)의 개념도이다. 부동 소수점 재명명 버퍼(34)의 동작을 예시한 바와 같이, 다음 설명에서는 명료성을 위해 고정 소수점 재명명 버퍼(34)만을 기술할 것이다. 제8a 내지 8d도에 도시된 바와 같이, 재명명 버퍼(34)는 제각기 버퍼의 번호 0-11로 명명된 12개의 재명명 버퍼를 포함한다. 시퀀서 유닛(18)이 재명명 버퍼 번호 0을 할당하고, 이어서 재명명 버퍼 번호 1-11을 순서적으로 할당하고, 이어서 재명명 버퍼 번호 0을 다시 할당할 수 있도록, 시퀀서 유닛(18)은 디스패치된 인스트럭션에 대한 재명명 버퍼의 번호 0-11을 FIFO 방식 및 회전 방식으로 할당한다.
제8a 내지 8d도를 참조하면, 인스트럭션(INST x)의 목적지 오퍼랜드 정보를 저장하는데 재명명 버퍼 2가 할당된다. 인스트럭션(INST x+1)의 목적지 오퍼랜드 정보를 저장하는데 재명명 버퍼 3이 할당된다. 인스트럭션(INST x+2)은 두개의 목적지 오퍼랜드를 가지므로, 인스트럭션(INST x+2)의 목적지 오퍼랜드 정보를 저장하는데 재명명 버퍼 4, 5가 할당된다. 마찬가지로, 인스트럭션(INST x+3)의 목적지 오퍼랜드 정보를 저장하는데 재명명 버퍼 6, 7이 할당된다.
제8a도는 제7도의 사이클(4, 5)의 개시 때 할당 포인터(80), 되기록 포인터(82) 및 완료 포인터(84)의 상태를 도시한 도면이다. 프로세서(10)는 재명명 버퍼(34)에 대한 판독 및 기록을 제어하기 위해 전술한 포인터들을 보유한다. 프로세서(10)는 또한 재명명 버퍼가 특정한 인스트럭션에 할당되었는지의 여부를 나타내는 할당 포인터(80)를 보유한다. 제8a도에 도시된 바와 같이, 할당 포인터(80)는 재명명 버퍼 8을 가리키고 있는데, 이는 재명명 버퍼(8)가 인스트럭션에 할당하는데 사용되는 다음 재명명 버퍼임을 나타낸다.
본 발명의 바람직한 실시예의 또다른 중요한 특징에 있어서, 프로세서(10)는 (이전에 특정 인스트럭션에 할당되었던) 재명명 버퍼가 다른 인스트럭션에 재할당하는데 사용될 수 있는지를 나타내는 되기록 포인터(82)를 또한 포함한다. 제8a도에 도시된 바와 같이, 되기록 포인터(82)는 재명명 버퍼 2를 가리키고 있는데, 이는 재명명 버퍼 2가 다음 재명명 버퍼임을 나타내며, 프로세서(10)는 이 버퍼로부터의 (제8a도의 재명명 버퍼의 정보 필드에 저장된) 목적지 오퍼랜드 정보를 (제8a도의 재명명 버퍼의 레지스터 필드에 지정된) GPR(32)의 하나의 레지스터에 복사한다.
따라서, 프로세서(10)는 특정한 인스트럭션의 결과(목적지 피연신자 정보)를 재명명 버퍼로부터 복사하여 구조화 레지스터에 저장한 것에 응답하여, 되기록 포인터(82)를 (이전에 특정한 인스트럭션에 할당되었던 재명명 버퍼를 지나서) 전진시킨다. 이러한 방식으로, 프로세서(10)는 할당된 재명명 버퍼를 예약하여, 특정한 인스트럭션의 결과(목적지 오퍼랜드 정보)를 이 결과가 구조화 레지스터에 복사될 때까지 저장한다.
또한, 프로세서(10)는 (이전에 특정한 인스트럭션에 할당된 재명명 버퍼에 대해) 특정한 인스트럭션이 다음의 조건들을 충족하고 있는지를 나타내는 완료 포인터(84)를 보유하고 있다.
조건 1 : (인스트럭션이 디스패치된) 실행 유닛이 인스트럭션의 실행을 종료한다.
조건 2 : 인스트럭션을 처리하는 어떠한 단계에서도 예외가 발생되지 않았다.
조건 3 : 이전에 디스패치된 모든 인스트럭션이 조건 1 및 2를 충족한다.
제8a도에 도시된 바와 같이, 완료 포인터(84)는 재명명 버퍼 2를 가리키고 있는데, 이는 재명명 버퍼 2가 조건 1, 2 및 3을 만족하는 다음 재명명 버퍼임을 나타낸다. 본 발명의 바람직한 실시예의 중요한 특징에 있어서, 프로세서(10)는 재명명 버퍼로부터 인스트럭션의 결과가 복사되어 구조화 레지스터에 저장되는 것과는 무관한 완료 포인터(84)를 보유한다.
따라서, 재명명 엔트리는 완료 포인터(84)가 가리키는 재명명 버퍼 및 이 재명명 버퍼의 후속 재명명 버퍼들로 정의될 수 있으며, 이들 재명명 버퍼는 할당 포인터(80)가 가리키는 재명명 버퍼보다 앞서 있다. 되기록 엔트리는 되기록 포인터(82)가 가리키는 재명명 버퍼 및 이 재명명 버퍼의 후속 재명명 버퍼들로 정의될 수 있으며, 이들 재명명 버퍼는 완료 포인터(84)가 가리키는 재명명 버퍼보다 앞서 있다. 되기록 엔트리는 완료 인스트럭션들이지만 이들 인스트럭션의 결과가 예를 들어, 구조화 레지스터에 대한 기록 포트를 사용할 수 없어서 재명명 버퍼로부터 구조화 레지스터에 복사되지 않은 결과들을 저장한다.
개념적으로, 되기록 엔트리는 재명명 엔트리 및 구조화 레지스터 사이에 위치된다. 바람직하게, 되기록 포트가 완료 단계에서 사용될 수 있으면, 결과는 되기록 엔트리를 바이패스(bypass)하여 구조화 레지스터에 직접 기록될 수도 있다. 또한, 재명명 엔트리와 마찬가지로, 실행 유닛이 정보와 관련된 구조화 레지스터를 지정하는 인스트럭션을 실행하는 경우, 프로세서(10)는 되기록 엔트리가 정보를 실행 유닛으로 출력하도록 할 수 있다.
예를 들어, 제8b도는 제7도의 사이클 6이 개시할 때 할당 포인터(80), 되기록 포인터(82) 및 완료 포인터(84)의 상태를 도시한 도면이다. 제8b도에 도시된 바와 같이, 할당 포인터(80)는 변하지 않는데, 그 이유는 프로세서(10)가 추가 인스트럭션을 디스패치하지 않았기 때문이다. 이와 달리, 완료 포인터(84)는 재명명 레지스터 2에서부터 재명명 레지스터 8로 전진하였는데, 이는 사이클 5 동안 총 6개의 목적지 오퍼랜드를 갖는 4개의 인스트럭션(INST x, INST x+1, INST x+2, INST x+3)이 완료되었음을 나타낸다.
또한, 제8b도에서, 되기록 포인터(82)는 재명명 레지스터 2에서부터 재명명 레지스터 4로 전진하였는데, 이는 사이클 5 동안 인스트럭션(INST x, INST x+1)의 목적지 오퍼랜드 정보가 되기록되었음을 나타낸다. 제7도는 사이클 5 동안 인스트럭션(INST x, INST x+1)에 대한 완료 및 되기록이 함께 발생되는 것을 보여 줌으로써 전술한 사실을 나타내고 있다. 이러한 방식으로, (재명명 레지스터 2 및 재명명 레지스터 3내의) 인스트럭션(INST x, INST x+1)의 결과는 되기록 엔트리를 바이패스하여 GPR(32)에 직접 기록되는데, 그 이유는 사이클 5가 개시될 때 두 개의 되기록 포트가 사용될 수 있기 때문이다. 제8b도에서, 되기록 포인터(82)는 재명명 레지스터 4를 넘어 전진하지 않는데, 그 이유는 사이클 5 동안 두개의 되기록 포인터 포트 모두가 인스트럭션(INST x, INST x+1)의 결과를 되기록하는데 사용되기 때문이다.
제8c도는 제7도의 사이클 7이 개시될 때 할당 포인터(80), 되기록 포인터(82) 및 완료 포인터(84)의 상태를 도시한 도면이다. 제7 및 8c도에 도시된 바와 같이, 두개의 되기록 포트는 모두 사이클 6 동안 인스트럭션(INST x+2)의 두 결과를 되기록하는데 사용된다. 따라서, 되기록 포인터(82)는 재명명 버퍼 4에서 부터 재명명 레지스터 6으로 전진한다. 할당 포인터(80)는 프로세서(10)가 추가 인스트럭션을 디스패치하지 않았기 때문에 변하지 않는다. 또한, 완료 포인터(84)도 프로세서(10)가 추가 인스트럭션을 완료하지 않았기 때문에 변하지 않는다.
제8d도는 제7도의 사이클 8이 개시될 때 할당 포인터(80), 되기록 포인터(82) 및 완료 포인터(84)의 상태를 도시한 도면이다. 제7 및 8d도에 도시된 바와 같이, 두개의 되기록 포트는 모두 사이클 7 동안 인스트럭션(INST x+3)의 두 결과를 되기록하는데 사용된다. 따라서, 되기록 포인터(82)는 재명명 레지스터에서부터 재명명 레지스터 8로 전진한다. 할당 포인터(8)는 프로세서(10)가 추가 인스트럭션을 완료하지 않았기 때문에 변하지 않는다. 또한, 완료 포인터(84)도 프로세서(10)가 추가 인스트럭션을 완료하지 않았기 때문에 변하지 않는다.
제9도는 본 발명의 바람직한 실시예의 중요한 특징인 프로세서(10)가 완료 단계와 되기록 단계를 분리하는 것이 없는 경우의 4개의 인스트럭션의 여러 단계들을 도시한 도면이다. 이러한 경우를 예시하기 위해, 제9도는 제6도의 재배열 버퍼 번호(7, 8, 9, 10)와 제각기 관련된 4개의 인스트럭션(INST x, INST x+1, INST x+2, INST x+3)의 여러 단계들을 도시하고 있다.
제10a 내지 10d도는 제9도에 따른 프로세서의 재명명 버퍼의 개념도이다. 구체적으로, 제10a도는 제9도의 사이클 4 및 5가 개시될 때 할당 포인터(90) 및 완료 포인터(94)의 상태를 도시한 도면이다. 제10b도는 제9도의 사이클 6이 개시될 때 할당 포인터(90) 및 완료 포인터(94)의 상태를 도시한 도면이다. 제10c도는 제9도의 사이클 7이 개시될 때 할당 포인터(90) 및 완료 포인터(94)의 상태를 도시한 도면이다. 제10d도는 제9도의 사이클 8이 개시될 때 할당 포인터(90) 및 완료 포인터(94)의 상태를 도시한 도면이다.
제10a 내지 10d도에 도시된 바와 같이, 본 발명의 바람직한 실시예의 중요한 특징인 프로세서(10)가 되기록 단계와 완료 단계를 분리하는 것이 없는 경우, (할당된 재명명 버퍼를 가지는) 특정한 인스트럭션은 실제로 특정한 인스트럭션의 결과가 할당된 재명명 버퍼에서부터 복사되어 구조화 레지스터내에 저장된 이후에만 완료될 수 있다. 이와 달리, 프로세서(10)가 되기록 단계와 완료 단계를 분리하는 본 발명의 바람직한 실시예의 중요한 특징이 있는 경우, 프로세서(10)는 또한 (이전에 특정한 인스트럭션에 할당된) 재명명 버퍼가 다른 인스트럭션에 재할당하는데 사용될 수 있는지를 나타내는 되기록 포인터(82)를 포함한다. 또한, 프로세서(10)는 특정한 인스트럭션의 결과가 할당된 재명명 버퍼로부터 복사되어 구조화 레지스터에 실제로 저장되는지에 관계없이 특정한 인스트럭션을 완료한다. 따라서, 4개의 인스트럭션 각각이 두개의 목적지 오퍼랜드를 가지고, 특정한 사이클 동안 이들 목적지 오퍼랜드들 중 일부의 목적지 오퍼랜드만이 GPR(32)로 복사되더라도, 프로세서(10)는 특정한 사이클 동안 인스트럭션을 4개까지 완료할 수 있다.
제11도는 재명명 버퍼(34)의 다른 실시예의 블럭도로서, 이 실시예에서 되기록 엔트리는 재명명 엔트리와 분리되어 버퍼(110)에 저장된다. 재명명 엔트리는 버퍼(112)에 저장된다. 특정한 사이클 동안 재명명 엔트리가 할당되는 특정 인스트럭션이 완료된 것에 응답하여, 특정한 사이클 동안 정보는 버퍼(112)의 재명명 엔트리로부터 출력되어 버퍼(110)의 되기록 엔트리에 저장된다. 특정한 사이클 동안 GPR(32)에 두개의 되기록 포트중 어느 하나가 이용될 수 있는 것에 응답하여, 특정한 사이클 동안 정보는 버퍼(110)의 되기록 엔트리로부터 출력되어 GPR들(32) 중 하나에 저장된다.
제11도에 도시된 바와 같이, 버퍼(112)는 정보를 8개의 포트들 중 임의의 포트를 통해 버퍼(110)에 출력할 수 있으므로, 프로세서(10)의 어느 특정한 사이클 동안 버퍼(112)는 재명명 엔트리의 정보를 버퍼(110)에 8개까지 출력할 수 있다. 따라서, 4개의 인스트럭션 각각이 두개의 목적지 오퍼랜드를 가지고, 특정한 사이클 동안 이들 목적지 피연산지들 중 일부의 목적지 오퍼랜드만이 복사되더라도, 특정한 사이클 동안 프로세서(10)는 인스트럭션을 4개까지 완료할 수 있다. 바람직하게, 완료 단계에서 되기록 포트가 이용될 수 있으면, 결과(목적지 오퍼랜드 정보)는 버퍼(110)의 되기록 엔트리를 바이패스하여 GPR(32)에 직접 기록될 수 있다. 프로세서(10)는 이러한 바이패스를 제11도에 도시된 바와 같이, 버퍼(110, 112) 및 GPR(32)에 접속된 멀티플렉서(113a, 113b)를 적절하게 동작시킴으로써 달성할 수 있다.
제11도의 재명명 버퍼의 다른 실시예의 장점은, (재명명 엔트리가 이전에 할당된) 재명명 엔트리의 선행하는 관련 인스트럭션이 (아직 되기록되기 전에) 완료된 이후에도 버퍼(112)내의 재명명 엔트리가 다른 인스트럭션에 재할당될 수 있다는 점이다. 그 이유는 선행하는 관련 인스트럭션이 완료된 것에 응답하여 재명명 엔트리의 정보가 적절하게 출력되어 버퍼(110)의 되기록 엔트리내에 저장되기 때문이다. 제11도의 또다른 특징에 있어서, 멀티플렉서(114)는 버퍼(110) 또는 버퍼(112)로부터 선택된 정보를 실행 유닛에 적절하게 출력하며, 이러한 동작은 실행 유닛이 전술한 정보와 관련된 구조화 레지스터를 지정하는 인스트럭션을 실행하는 경우에 발생된다. 비록 바람직한 실시예의 프로세서(10)가 재명명 버퍼와 구조화 레지스터 사이에 두개의 되기록 포트를 가지고 있지만, 특정한 실시예에 대한 되기록 포트의 적절한 수는 재명명 엔트리 및 되기록 엔트리가 충만하여 인스트럭션 디스패치가 지연될 가능성이 있는 함수이다.
제2∼5도를 참조하여 전술한 바와 같이, 프로세서(10)는 두가지 상황에서 적어도 선행하는 모든 인스트럭션이 완료될 때까지 실행 직렬화된 인스트럭션의 실행을 지연시킨다. 제1 상황에 있어서, 인스트럭션은 사변적으로 실행되지 않는다. 제2 상황에서, 인스트럭션은 프로세서(10)가 전송 회로를 구비하지 않는 적어도 하나의 소스 오퍼랜드를 지정한다.
제1 상황에 대해 살펴보면, 어떤 인스트럭션은 전용 구조화 레지스터(SPR)(40)(제1도)상에서 동작하며, 연산 결과는 재명명 버퍼내에 임시 저장되지 않고 SPR(40)에 직접 기록된다. 이러한 인스트럭션의 예로는 정보를 GPR(32) 들중의 하나의 레지스터로부터 SPR(40)들중의 하나의 레지스터로 이동시키는 Move To 인스트럭션을 들 수 있다. 제1도에 도시된 바와 같이, 이러한 Move To 인스트럭션은 CFXU(26)에 의해 실행된다. Move To 인스트럭션은 실행시 SPR(40)들중 하나를 즉시 갱신한다. 유사하게, Store 인스트럭션은 실행시 데이타 캐쉬(16)(제1도)내의 메모리 위치를 즉시 갱신한다. 프로세서(10)가 정확한 인터럽트 및 정확한 예외를 성취할 수 있도록 하기 위해, 프로세서(10)는 (인스트럭션 결과가 재명명 버퍼내에 임시 저장되지 않고 구조화 레지스터 또는 메모리 위치에 직접 기록되는 경우), 인스트럭션을 사변적으로 실행하지 않는다. 따라서, 완료 및 되기록을 순서에 따라 실행하기 위해, 프로세서(10)는 선행하는 모든 인스트럭션이 완료될 때까지 Move To 인스트럭션 및 Store 인스트럭션의 실행을 지연시킨다.
실행 유닛에 디스패치된 인스트럭션이 (재배열 버퍼(76)의 인스트럭션의 관련 엔트리의 인스트럭션 유형 필드내에) 논리 0으로 클리어된 관련 EOK 비트를 가지면, 실행 직렬화 로직(84)은 디스패치된 인스트럭션에 선행하는 모든 인스트럭션이 완료된 것에 응답하여, 실행 유닛에 접속된 라인(60, 86, 88, 90, 92)중 해당 라인을 통해 신호를 출력한다. 실행 유닛은 실행 직렬화 로직(84)이 신호를 출력한 것에만 응답하여 디스패치된 인스트럭션을 실행한다.
제12a 내지 12c도는 재배열 버퍼(76)의 개념도이다. 제13도는 제12a 내지 12c도의 5개의 인스트럭션들의 여러 단계들을 도시한 도면이다. 제14a 내지 14f도는 프로세서(10)의 재배열 버퍼(34)의 개념도이다.
제12a도는 제13도의 사이클 4의 개시 때 재배열 버퍼(76)의 상태를 도시한 도면이다. 따라서, 제12a도에서, 재배열 버퍼(76)는 제13도의 사이클 3 동안 디스패치된 4개의 인스트럭션에 대한 정보를 저장한다. 제13도는 제12a도의 재배열 버퍼 번호(3, 4, 5, 6)와 제각기 관련된 4개의 인스트럭션(INST a, INST a+1, INST a+2, INST a+3)의 여러 단계들을 도시한 도면이다.
제12a도에 도시된 바와 같이, 인스트럭션(INST a)은 FXUA(22)에 디스패치되며, 두개의 목적지 오퍼랜드를 포함한다(GPR 목적지의 수=2). 이와 달리, 인스트럭션(INST a+1)은 FXUB(24)에 디스패치되지만, 하나의 목적지 오퍼랜드를 갖는다(GPR 목적지의 수=1). 인스트럭션(INST a+2)은 LSU(28)에 디스패치되는 Store 인스트럭션이고, 목적지 오퍼랜드를 가지지 않는다(GPR 목적지의 수=0). 또한, (인스트럭션(INST a+2)과 관련된) 재배열 버퍼 5는 인스트럭션(INST a+2)이 실행 직렬화된 것에 응답하여 EOK=0을 가진다. 인스트럭션(INST a+3)은 CFXU(26)에 디스패치되고, 하나의 목적지 오퍼랜드를 갖는다(GPR 목적지의 수=1).
본 발명의 바람직한 실시예의 중요한 특징에 있어서, 시퀀서 유닛(18)은 인스트럭션의 실행으로부터 예외가 발생될 가능성이 있는지를 판정한다. 시퀀서 유닛(18)은 이러한 판정을 인스트럭션의 실행에 앞서 행한다. 만약 인스트럭션에 대한 예외가 발생될 가능성이 없으면, 시퀀서 유닛(18)은 프로세서(10)가 예외가 발생될 가능성이 없는 인스트럭션의 실행을 실제로 종료했는지의 여부에 관계없이 (인스트럭션이 디스패치된 것에 응답하여) 인스트럭션의 관련 재배열 버퍼 엔트리내에 종료=1로 바람직하게 설정한다.
또한, 이 경우, 프로세서(10)가 예외가 발생될 가능성이 없는 인스트럭션의 실행을 실제로 종료하였는지의 여부에 관계없이, 프로세서(10)는 선행하는 모든 인스트럭션을 완료한 것에 응답하여 인스트럭션을 완료한다. 따라서, 프로세서(10)가 예외가 발생될 가능성이 없는 각각의 인스트럭션의 실행을 종료하였는지의 여부에 관계없이, 프로세서(10)는 전술한 인스트럭션과 이 인스트럭션에 선행하는 각각의 인스트럭션이 프로그램된 시퀀스로 실행하면서 예외가 발생되지 않는다는 판정에 응답하여 인스트럭션을 완료한다. 따라서, 인스트럭션의 완료 단계가 인스트럭션의 실행 단계보다 앞서 수행하는 것이 가능하며, 이러한 방식으로, 프로세서(10)는 인스트럭션의 조기 완료(early completion)를 지원한다.
조기 완료를 지원함으로써, 프로세서(10)는 인스트럭션의 결과가 재명명 버퍼내에 임시 저장되지 않고 구조화 레지스터 또는 메모리 위치에 직접 기록되는 (Move To 인스트럭션 또는 Store 인스트럭션과 같은) 차후의 실행 직렬화된 인스트럭션을 더욱 신속하게 바람직하게 실행할 수 있다. 그 결과, 프로세서(10)의 성능을 저하시키지 않고 정확한 인터럽트 및 정확한 예외를 성취할 수 있다. 그 이유는 선행하는 모든 인스트럭션들이(1) 예외없이 이미 실행을 종료하였거나, 혹은 (2) 예외없이 실행을 종료할 것이기 때문이다. 이러한 기법에 의해 프로세서(10)는 순서에 따른 완료 및 순서에 따른 되기록을 계속 보장할 수 있다.
예를 들어, 제12a도에서, 인스트럭션(INST a+1, INST a+3)은 예외를 야기하지 않으므로, 재배열 버퍼 번호 4 및 6에서 종료=1로 된다. 제14a도는 제13도의 사이클 4의 개시 때 재명명 버퍼(34)의 할당 포인터(AL)(80), 되기록 포인터(WB)(82) 및 완료 포인터(CO)(84)의 상태를 도시한 도면이다. 따라서, 제14a도는 제12a도에 대응한다. 제14a도에 도시된 바와 같이, WB(82) 및 CO(84)는 재명명 버퍼 2를 가리키고, AL(80)은 재명명 버퍼 6을 가리킨다. 재명명 버퍼 2 및 3은 인스트럭션(INST a)에 할당된다. 재명명 버퍼 4는 인스트럭션(INST a+1)에 할당되고, 재명명 버퍼 5는 인스트럭션(INST a+3)에 할당된다. 인스트럭션(INST a+2)은 목적지 오퍼랜드를 가지지 않으므로, 할당된 재명명 버퍼를 갖지 않음에 유의하여야 한다. 재명명 버퍼 2-5에서, 정보 유효(information valid)=0이며, 이는 이들 재명명 버퍼의 정보 필드가 유효한 정보를 저장하고 있지 않음을 나타낸다. 사이클 4의 개시 때(제13도), 인스트럭션(INST a, INST a+1, INST a+2, INST a+3)이 아직 실행을 종료하지 않았기 때문에 정보 유효=0이 된다.
재명명 버퍼 4에서, 캐리 유효(carry valid)=1이며, 이는 인스트럭션(INST a+1)이 CA 레지스터(42)를 변경하는 것을 나타낸다. 전술한 바와 같이, 인스트럭션(INST a+1)은 예외를 야기하지 않으므로, 재배열 버퍼 4(제12a도)내에서 종료=1이 됨에 유의하여야 한다. 따라서, 프로세서(10)는 CA 레지스터(42)를 변경하는 인스트럭션의 조기 완료를 지원한다.
제14a 내지 14g도에 도시된 바와 같이, CA 비트 정보는 재명명 버퍼(34)에 임시 저장된다. 그렇지만, 바람직한 실시예의 프로세서(10)는 이러한 CA 비트 정보를 재명명 버퍼(34)로부터 실행 유닛에 전송하는 회로를 구비하지 않는다. 만약 특정한 인스트럭션의 원시 오퍼랜드 정보가 CA 레지스터(42)를 구비하면, 이 특정한 인스트럭션의 원시 오퍼랜드 정보는 CA 레지스터(42)를 변경하는 선행하는 인스트럭션의 결과에 종속한다.
제12b도는 제13도의 사이클 5의 개시 때 재배열 버퍼(76)의 상태를 도시한 도면이다. 따라서, 제12b도에서, 재배열 버퍼(76)는 제13도의 사이클 4 동안 디스패치된 인스트럭션(INST a+4)의 정보를 저장한다. 제13도는 재배열 버퍼 7과 관련된 인스트럭션(INST a+4)의 여러 단계들을 도시한 도면이다. 제12b도에 도시된 바와 같이, 인스트럭션(INST a+4)은 FXUA(22)에 디스패치되고, 하나의 목적지 오퍼랜드를 가진다(GPR 목적지 수=1). 또한, (인스트럭션(INST a+4)과 관련된) 재배열 버퍼 7은 인스트럭션(INST a+4)이 실행 직렬화된 것에 응답하여 EOK=0을 가진다.
또한, 인스트럭션(INST a)은 사이클 4 동안 실행을 종료하므로, 제12b도의 재배열 버퍼 3에서 종료=1이 된다. 제13도를 참조하면, 인스트럭션(INST a+2)은 Store 인스트럭션이다. 사이클 4 동안, LSU(28)는 Store 인스트럭션(INST a+2)의 제1실행 단계(실행 A)를 종료한다. 실행 단계(실행 A) 동안, LSU(28)는 Store 인스트럭션을 번역하고, 기억장치의 보호를 위해 Store 인스트럭션을 검사한다. 따라서, 제12b도의 재배열 버퍼 5에서 종료=1이 된다.
제14b도는 제13도의 사이클 5의 개시 때 재명명 버퍼(34)의 할당 포인터(AL)(84), 되기록 포인터(WB)(82) 및 완료 포인터(CO)(84)의 상태를 도시한 도면이다. 따라서, 제14b도는 제12b도에 대응한다. 제14b도에 도시된 바와 같이, WB(82) 및 CO(84)는 계속하여 재명명 버퍼 2를 가리키고 있으며, AL(80)은 재명명 버퍼 6에서부터 전진하여 재명명 버퍼 7을 가리킨다. 따라서, 재명명 버퍼 6은 인스트럭션(INST a+4)에 할당된다.
재명명 버퍼 6에서, 정보 유효=0이며, 이는 이 재명명 버퍼의 정보 필드가 유효 데이타를 저장하고 있지 않음을 나타낸다. 사이클 5의 개시 때(제13도), 인스트럭션(INST a+4)이 아직 실행을 종료하지 않았기 때문에, 재명명 버퍼 6 내의 정보 유효=0이 된다. 이와 달리, 제14b도에서는 제13도에 도시된 사이클 4 동안 인스트럭션(INST a, INST a+1)의 실행이 종료된 것에 응답하여, 재명명 버퍼 2 및 3내의 정보 유효=1이 되며, 이는 재명명 버퍼 2 및 3의 정보 필드가 (제14b도의 정보 필드내에서 데이타로 표시된) 유효 데이타를 저장하고 있음을 나타낸다.
재명명 버퍼 6에서, 캐리 유효=1이 되며, 이는 인스트럭션(INST a+4)이 CA 레지스터(42)를 변경함을 나타낸다. 또한, 인스트럭션(INST a+4)의 원시 오퍼랜드 정보는 CA 레지스터(42)를 구비하므로, 인스트럭션(INST a+4)은 이 원시 오퍼랜드 정보가 CA 레지스터(42)를 변경하는 선행하는 인스트럭션(INST a+1)의 결과에 의존하는 실행 직렬화된 인스트럭션이다. 비록 인스트럭션(INST a+3)은 CA 레지스터(42)를 변경하지는 않지만, 인스트럭션(INST a+3)은 제13도에 화살표(100)로 도시된 바와 같이 선행하는 인스트럭션(INST a+1)의 결과에 의존하는 원시 오퍼랜드 정보를 또한 갖는다.
제12c도는 제13도의 사이클 6의 개시 때 재배열 버퍼(76)의 상태를 도시한 도면이다. 제14c도는 제13도의 사이클 6의 개시 때 재명명 버퍼(34)의 할당 포인터(AL)(80), 되기록 포인터(WB)(82) 및 완료 포인터(CO)(84)의 상태를 도시한 도면이다. 따라서, 제14c도는 제12c도에 대응한다.
제12c도에 도시된 바와 같이 재배열 버퍼 3, 4, 5, 6내의 정보는 제13도에 도시된 사이클 5 동안 인스트럭션(INST a, INST a+1, INST a+2, INST a+3)이 완료한 것에 응답하여 삭제된다. 인스트럭션(INST a+1)은 제13도에서 조기완료/실행으로 도시된 바와 같이, 인스트럭션(INST a+1)이 사이클 5 동안 실행을 종료하기에 앞서 사이클 5 동안 조기 완료한다. 인스트럭션(INST a+1)은 실행을 위해 하나보다 많은 프로세서(10) 사이클을 필요로 하는 인스트럭션 부류의 구성원이다.
제14c도를 참조하면, 프로세서(10)는 이 프로세서(10)가 특정한 인스트럭션(예를 들어, 사이클 6-8 동안 계속하여 실행되는 인스트럭션(INST a+3))의 실행을 실제로 종료하였는지에 관계없이, 프로세서(10)가 선행하는 모든 인스트럭션(예를 들어, INST a, INST a+1, INST a+2)을 완료한 것에 응답하여, CO(84)를 이전에 특정한 인스트럭션(예를 들어, INST a+3)에 할당되었던 재명명 버퍼를 지나서(예를 들어, 사이클 6의 개시 이전에 재명명 버퍼 5를 지나서) 전진시킨다.
또한, 사이클 5 동안, 실행 직렬화 로직(84)(제3도)은 인스트럭션(INST a 및 INST a+1)이 완료된 것에 응답하여 신호를 LSU(28)에 접속된 라인(92)을 통해 출력하는데, 이러한 결과는 (사이클 3 동안 LSU(28)에 디스패치된) 인스트럭션(INST a+2)이 재배열 버퍼 5내에 논리 0으로 클리어된 관련 EOK 비트를 가지기 때문에 발생된다.
실행 단계(실행 A)가 예외없이 종료하고(사이클 4) 선행하는 인스트럭션(INST a 및 INST a+1)이 완료한(사이클 5) 것에 응답하여, Store 인스트럭션(INST a+2)은 사이클 5 동안 완료된다. 제2실행 단계(실행 B) 동안, LSU(28)는 정보를 실제로 데이타 캐쉬(16)의 메모리 장소에 기록한다. LSU(28)는 실행 직렬화 로직(84)이 신호를 라인(92)을 통해 출력한 것에만 응답하여 Store 인스트럭션(INST a+2)의 실행 단계(실행 B)를 실행한다.
제14c도에 도시된 바와 같이, AL(80)은 재명명 버퍼(7)를 계속하여 가리키고 있으며, CO(84)는 사이클 5 동안 선행하는 인스트럭션(INST a, INST a+1, INST a+3)이 완료한 것에 응답하여 재명명 버퍼 2를 전진하여 재명명 버퍼 6을 가리킨다. 또한, 제13도에 도시된 바와 같이, 인스트럭션(INST a)의 두 결과는 사이클 5 동안 재명명 버퍼 2 및 3에서부터 GPR(32)(제1도)로 복사된다. 따라서, 제14c도에 도시된 바와 같이, WB(82)는 재명명 버퍼 2를 전진하여 재명명 버퍼 4를 가리킨다. 또한, 재명명 버퍼 2 및 3내의 정보는 인스트럭션(INST a)의 두 결과가 사이클 5 동안 재명명 버퍼 2 및 3에서부터 GPR(32)(제1도)로 복사된 것에 응답하여 삭제된다.
제14c도에 있어서, 제13도에 도시된 인스트럭션(INST a+1)이 사이클 5 동안 실행을 종료한 것에 응답하여, 재명명 버퍼 4내의 정보 유효=1이 된다. 이것은 재명명 버퍼 4내의 정보 필드가 (제14c도의 정보 필드내의 데이타로 표시된) 유효 데이타를 저장하고, 재명명 버퍼 4내의 캐리 필드도 (제14c도의 캐리 필드내에 CA로 표시된) 유효 데이타를 저장하고 있음을 나타낸다 인스트럭션(INST a+4)은 이 원시 오퍼랜드 정보가 CA 레지스터(42)를 변경하는 인스트럭션(INST a+1)의 결과에 의존하는 실행 직렬화된 인스트럭션이며, 재명명 버퍼(34)의 캐리 필드가 제공되지 않기 때문에, 프로세서(10)는 사이클 6에서 인스트럭션(INST a+1)의 되기록 단계(WBACK) 동안 인스트럭션(INST a+1)의 캐리 결과가 재명명 버퍼 4에서부터 GPR(32)로 복사될 때까지 인스트럭션(INST a+4)의 실행을 지연시킨다.
이와 달리, 인스트럭션(INST a+3)은 인스트럭션(INST a+1)의 결과에 의존하는 원시 오퍼랜드 정보를 또한 갖지만, 재명명 버퍼(34)의 정보 필드가 제공된다. 따라서, (인스트럭션(INST a+1)이 사이클 5 동안 실행을 종료하였음을 나타내는) 재명명 버퍼 4내에서 정보 유효=1인 것에 응답하여, 인스트럭션(INST a+1) 의 되기록 단계를 종료하기 이전의 사이클 6 동안, 프로세서(10)는 인스트럭션(INST a+3)의 실행을 개시한다.
제14d도는 제13도의 사이클 7의 개시 때 재명명 버퍼(34)의 할당 포인터(AL)(80), 되기록 포인터(WB)(82) 및 완료 포인터(CO)(84)의 상태를 도시한 도면이다. 제14d도에 도시된 바와 같이, AL(80)은 재명명 버퍼 7을 계속하여 가리키고 있으며, CO(84)는 재명명 버퍼 6을 계속하여 가리키고 있다. 제13도에 도시된 바와 같이, 인스트럭션(INST a+1)의 결과는 사이클 6 동안 재명명 버퍼 4에서부터 GPR(32)(제1도)로 복사된다. 따라서, 제14d도에 도시된 바와 같이, WB(82)는 재명명 버퍼 4를 전진하여 재명명 버퍼 5를 가리킨다. 또한, 인스트럭션(INST a+1)의 결과가 사이클 6 동안 재명명 버퍼 4에서부터 GPR(32)(제1도)로 복사된 것에 응답하여 재명명 버퍼 4내의 정보가 삭제된다.
바람직한 실시예에서, 원시 오퍼랜드 정보가 전송되지 않은 오퍼랜드(예를 들어, CA 레지스터(42)로 전송 예정된 CA 비트 정보)에 의존하는 실행 직렬화된 인스트럭션(예를 들어, INST a+4)에 대해, 프로세서(10)는 재명명 버퍼(34)가 (1) 선행하는 모든 인스트럭션이 완료되고, (2) 만약 선행하는 임의의 완료된 인스트럭션의 되기록 단계가 아직 종료되지 않았다면, 이러한 선행하는 임의의 인스트럭션이 제공되지 않은 오퍼랜드를 변경할 수 없음을 나타내는 것에 응답하여, 실행 직렬화된 인스트럭션(예를 들어, INST a+4)을 실행한다.
따라서, 제14d도에서, CO(84)는 재명명 버퍼 6을 가리키며, 이는 인스트럭션(INST a+4)에게 선행하는 모든 인스트럭션이 완료되었음을 나타낸다. 또한, 제14d도에서, WB(82)는 재명명 버퍼 5를 가리키며, 이는 선행하는 완료된 인스트럭션(INST a+3)의 되기록 단계가 아직 종료되지 않았지만, (재명명 버퍼 5내의 캐리 유효=0이므로) 인스트럭션(INST a+3)이 CA 레지스터(42)로 전송 예정된 전송되지 않은 어떠한 정보도 변경하지 않음을 나타낸다. 따라서, 프로세서(10)는 사이클 7 동안 인스트럭션(INST a+4)을 실행한다.
또다른 실시예에서, 원시 오퍼랜드 정보가 전송되지 않은 오퍼랜드(예를 들어, CA 레지스터(42)에 전송 예정된 CA 비트 정보)에 의존하는 실행 직렬화된 인스트럭션에 대해, 프로세서(10)는 재명명 버퍼(34)가 다음과 같은 경우를 나타내는 것, 즉, (1) 선행하는 모든 인스트럭션이 완료되고, (2) 선행하는 모든 완료된 인스트럭션의 되기록 단계를 종료하여 WB(82) 및 CO(84)가 동일한 재명명 버퍼를 가리키는 것에 응답하여 실행 직렬화된 인스트럭션을 실행한다.
제14e도는 제13도의 사이클 8의 개시 때 재명명 버퍼(34)의 할당 포인터 (AL)(80), 되기록 포인터(WB)(82) 및 완료 포인터(CO)(84)의 상태를 도시한 도면이다. 제14e도에 도시된 바와 같이, AL(80)은 계속적으로 재명명 버퍼 7을 가리키고 있으며, WB(82)는 계속하여 재명명 버퍼 5를 가리키고 있다. 인스트럭션(INST a+4)은 제13도에서 실행/완료로 표시된 바와 같이, 사이클 7 동안 실행을 종료하기에 앞서 사이클 7 동안 실행을 종료하고 완료한다. 따라서, 제14e도에 도시된 바와 같이, CO(84)는 재명명 버퍼(6)를 전진하여 재명명 버퍼(7)를 가리킨다.
바람직하게, 프로세서(10)는 이 프로세서(10)가 선행하는 모든 인스트럭션(예를 들어, 사이클 8 동안 계속하여 실행되는 INST a+3)의 실행을 실제로 종료하였는지에 관계없이, 프로세서(10)가 선행하는 모든 인스트럭션(예를 들어, INST a, INST a+1, INST a+2, INST a+3)을 완료한 것에 응답하여, CO(84)를 이전에 특정한 인스트럭션(예를 들어, INST a+3)에 할당되었던 재명명 버퍼를 지나서 (예를 들어, 사이클 8의 개시 이전에 재명명 버퍼 6을 지나서) 전진시킨다.
제14e도에 있어서, 제13도에 도시된 인스트럭션(INST a+4)이 사이클 7 동안 실행을 종료한 것에 응답하여, 재명명 버퍼 6내에서 정보 유효=1이 된다. 이는 재명명 버퍼 6의 정보 필드가 (제14e도의 정보 필드내에 데이타로 표시된) 유효 데이타를 저장하고, 재명명 버퍼(6)의 캐리필드가 (제14e도의 캐리 필드내에 CA로 표시된) 유효 데이타를 저장하고 있음을 나타낸다.
제14f도는 제13도의 사이클 9의 개시 때 재명명 버퍼(34)의 할당 포인터 (AL)(80), 되기록 포인터(WB)(82) 및 완료 포인터(CO)(84)의 상태를 도시한 도면이다. 제14f도에 도시된 바와 같이, AL(80) 및 CO(84)는 계속적으로 재명명 버퍼 7을 가리키고 있으며, WB(82)는 계속하여 재명명 버퍼 5를 가리키고 있다. 제14f도에서, 인스트럭션(INST a+3)이 사이클 8 동안 실행을 종료한 것에 응답하여, 재명명 버퍼 5내에서 정보 유효=1이 된다. 이것은 재명명 버퍼 5내의 정보 필드가 (제14e도의 정보 필드내에 데이타로 표시된) 유효 데이타를 저장하고 있음을 나타낸다.
제14g도는 제13도의 사이클 10의 시작시에 재명명 버퍼(34)의 할당 포인터(AL)(80), 되기록 포인터(WB)(82), 및 완료 포인터(CO)(84)의 상태를 도시한다. 제14g도에 도시된 바와 같이, AL(80) 및 CO(84)는 계속하여 재명명 버퍼(7)를 가리키고 있다. 제13도에 도시된 바와 같이, 인스트럭션(INST a+3 및 INST a+4)의 결과는 사이클 9 동안 각각 재명명 버퍼 5 및 6에서부터 GPR(32)(제1도)로 복사된다. 따라서, 제14g도에 도시된 바와 같이, WB(82)는 재명명 버퍼 5를 전진하여 재명명 버퍼 7을 가리킨다. 또한, 인스트럭션(INST a+3 및 INST a+4)의 결과가 사이클 9 동안 재명명 버퍼 5 및 6에서부터 GPR(32)(제1도)로 복사된 것에 응답하여 재명명 버퍼 5 및 6내의 정보가 삭제된다.
제15도는 바람직한 실시예의 조기 완료의 특징을 갖지 않는 다른 실시예에 있어서 제12a 내지 12c도의 5개의 인스트럭션의 여러 단계들을 도시한 도면이다. 제16a 내지 16h도는 제15도에 도시된 인스트럭션 처리의 여러 사이클 동안 프로세서(10)의 재명명 버퍼(34)의 개념도이다. 제15도에 도시된 바와 같이, 바람직한 실시예의 조기 완료의 특징을 갖지 않으면, 인스트럭션(INST a+4)의 실행은 사이클 10까지 지연되며, 인스트럭션(INST a+4)의 결과의 완료/되기록은 사이클 11까지 지연된다. 이러한 결과는 인스트럭션(INST a+4)이 선행하는 모든 인스트럭션이 완료될 때까치 실행이 지연되는 실행 직렬화된 인스트럭션이기 때문에 발생된다. 바람직한 실시예의 조기 완료의 특징을 갖지 않으면, 인스트럭션(INST a+3)은 사이클 9까지 완료되지 않으며, 이로 인해 인스트럭션(INST a+4)의 실행이 사이클 10까지 지연된다.
이와 달리, 제13도에 있어서, 인스트럭션(INST a+3)은 사이클 5 동안 조기 완료되고, 인스트럭션(INST a+4)은 사이클 7 동안 실행된다. 인스트럭션(INST a+4)은 이 오퍼랜드 정보가 CA 레지스터(42)로 전송 예정된 전송되지 않은 CA 비트 정보를 변경하는 선행하는 인스트럭션(INST a+1)의 결과에 종속하는 실행 직렬화된 인스트럭션이다. 그렇지만, 제13도에서, 인스트럭션(INST a+4)의 실행은 사이클 7 동안 발생되고, 인스트럭션(INST a+4)의 결과의 완료/되기록은 사이클 9 동안 발생된다. 따라서, 바람직한 실시예의 조기 완료의 특징을 가진 제13도에서, 인스트럭션(INST a+4)의 실행, 완료 및 되기록 단계는 조기 완료의 특징을 갖지 않는 제15도의 경우보다 먼저 발생된다.
프로세서(10)는 전송되지 않은 원시 오퍼랜드(예를 들어, SPR(40) 및 CA 레지스터(42))를 지정하는 인스트럭션의 실행을 적어도 선행하는 모든 인스트럭션이 완료될 때까지 지연시킨다. 그 이유는 인스트럭션이 전송되지 않은 원시 오퍼랜드를 지정하는 경우, 인스트럭션의 실행이 원시 오퍼랜드 정보가 구조화 레지스터에서 사용가능하고 유효한 상태가 되는 것을 조건으로 하기 때문이다 이러한 인스트럭션의 예로는 (1) CA 레지스터(42)를 판독하는 확장된 산술 인스트럭션과, (2) 정보를 SPR(40)들중 하나의 레지스터로부터 GPR(32)들중 하나의 레지스터로 이동시키는 Move From 인스트럭션을 들 수 있다.
선행하는 모든 인스트럭션이 완료되었더라도, 선행하는 임의의 인스트럭션이 조기 완료되어, 이 인스트럭션의 완료 단계가 인스트럭션의 실행 단계보다 선행하는 것이 가능하다. 제1 내지 5도를 참조하여 전술한 바와 같이, 프로세서(10)는 정보를 GPR(32), FPR(36), 재명명 버퍼(34, 38) 및 제어 레지스터에서부터 실행 유닛으로 전송하는 회로를 포함한다. 만약 특정 인스트럭션이 선행하는 조기 완료된 인스트럭션의 결과에 종속하는 원시 오퍼랜드 정보를 가지고, 이 원시 오퍼랜드 정보가 프로세서(10)의 정보 전송 회로에 의해 지원되면, 프로세서(10)는 조기 완료된 인스트럭션의 실행 단계를 종료할 때까지 특정한 인스트럭션의 실행을 지연시킨다(이 때, 조기 완료된 인스트럭션의 결과는 재명명 버퍼내에서 사용가능하고 유효하다).
이와 달리, 만약 원시 오퍼랜드 정보가 프로세서(10)의 정보 전송 회로에 의해 지원되지 않으면, 프로세서(10)는 조기 완료된 인스트럭션의 되기록 단계를 종료할 때까지 특정한 인스트럭션의 실행을 지연시킨다(이 때, 조기 완료된 인스트럭션의 결과는 구조화 레지스터내에서 사용가능하고 유효하다). 만약 조기 완료된 인스트럭션의 실행이 종료되지 않으면, 이 인스트럭션의 결과(목적지 오퍼랜드 정보)는 사용할 수 없다. 따라서, 이 경우 프로세서(10)는 인스트럭션의 실행이 종료될 때까지 조기 완료된 인스트럭션의 되기록 단계를 지연시킨다.
만약 인스트럭션이 조기 완료되면, 시퀀서 유닛(18)은 이와 관련된 표시 신호를 출력함과 동시에 이 인스트럭션을 인스트럭션 관련 실행 유닛에 디스패치시킨다. 이러한 표시 신호에 응답하여, 관련된 실행 유닛은 재배열 버퍼(76)내에서 인스트럭션의 할당된 엔트리를 변경하지 않는다. 그 이유는 재배열 버퍼 엔트리가 할당된 인스트럭션을 완료하게 되면, 이 재배열 버퍼 엔트리가 다른 인스트럭션에 재할당되어 재배열 버퍼 엔트리내의 정보가 더이상 유효하지 않게 되기 때문이다.
따라서, 만약 인스트럭션이 조기 완료되면, 이 인스트럭션의 할당된 버퍼 엔트리는 인스트럭션의 실행 유닛이 인스트럭션의 실행을 종료하기 전에 무효화될 수도 있다. 바람직한 실시예에서, 프로세서(10)의 단일 사이클 동안 시퀀서 유닛(18)은 유효 정보를 갖는 4개의 가장 오래된 버퍼 엔트리를 검사하여, 4개의 인스트럭션이 단일 사이클 동안 동시에 완료될 수 있는 후보가 되도록 한다.
바람직한 실시예에서, Move From 인스트럭션은 SPR로부터 정보를 입력받고, SPR은 Move To 인스트럭션에 의해서만 변경된다. 바람직하게, 프로세서(10)는 선행하는 모든 인스트럭션의 완료에 응답하여 Move From 인스트럭션을 실행하며, 하나 이상의 선행하는 인스트럭션이 조기 완료되더라도 마찬가지로 Move From 인스트럭션을 실행한다. 이것은 프로세서(10)가 사변적으로 실행되지 않는 인스트럭션(예를 들어, Move To 인스트럭션 또는 Store 인스트럭션)을 조기 완료하지 않기 때문에 가능하다. 만약 선행하는 모든 인스트럭션이 완료된다면, 프로세서(10)는 실제로 선행하는 모든 Move To 인스트럭션의 실행을 실제로 종료하였을 것이다. 따라서, 프로세서(10)는 선행하는 모든 인스트럭션의 완료에 응답하여 Move From 인스트럭션을 실행하는데, 그 이유는 이 경우에 프로세서(10)가 선행하는 모든 Move To 인스트럭션의 실행을 실질적으로 종료하였기 때문이다.
바람직한 실시예의 또다른 중요한 특징에 있어서, 프로세서(10)는 부정확하고, 복구 불가능한 부동 소수점 예외 모드를 지원한다. 이러한 모드에서 동작하면, 프로세서(10)는 부동 소수점 예외 조건을 보고(report)하되, 어떤 부동 소수점 인스트럭션이 예외 조건을 유발했는지에 대한 정확한 정보는 제공하지 않는다. 프로세서(10)가 예외를 처리할 때, 프로세서(10)는 예외를 야기한 부동 소수점 인스트럭션 이외의 여러 인스트럭션들을 완료한 상태에 놓일 수 있도록 허용된다. 이러한 모드에서 동작하면, 프로세서(10)는 프로그램 실행이 예외 조건을 야기시키는 부동 소수점 인스트럭션에서 정확하게 중단되지 않아도 되는 인스트럭션 시퀀스에 대해 향상된 성능을 발휘한다.
정확한 부동 소수점 예외 모드에서 동작하면, 프로세서(10)는 선행하는 모든 인스트럭션이 완료했더라도, 부동 소수점 인스트럭션의 실행을 종료하기 전에는 부동 소수점 인스트럭션을 조기 완료하지 않는다.
이와 달리, 부정확하고 복구 불가능한 부동 소수점 예외 모드에서 동작하면, 프로세서(10)는 선행하는 모든 인스트럭션의 완료에 응답하여, 부동 소수점 인스트럭션의 실행을 종료하기 전에 부동 소수점 인스트럭션을 조기 완료한다. 부정확하고 복구 불가능한 부동 소수점 예외 모드에서, 조기 완료된 부동 소수점 인스트럭션은 다른 유형의 조기 완료된 인스트럭션과 상이하다. 그 이유는 차후에 부동 소수점 인스트럭션이 실행되어 부동 소수점 예외 조건이 발생되더라도, 프로세서(10)가 부동 소수점 인스트럭션을 조기 완료하기 때문이다. 각각의 재배열 버퍼 엔트리는 자신의 관련 인스트럭션이 부동 소수점 인스트럭션인지를 나타낸다.
부동 소수점 인스트럭션의 실행이 종료되고 이 단계가 완료된 것에 응답하여, 부동 소수점 인스트럭션의 결과는 부동 소수점 재명명 버퍼(38)내에 임시 저장된다. 이 결과는 선행하는 모든 부동 소수점 인스트럭션의 결과가 FPR(36)에 복사될 때까지 재명명 버퍼(38)에 임시 저장된다. 이러한 방식으로, 프로세서(10)는 부동 소수점 인스트럭션들의 각각의 되기록 단계들을 프로그램된 순서에 따라 처리한다.
재명명 버퍼(38)는 부동 소수점 인스트럭션의 결과를 임시 저장하여, 나중에 FPR(36)에 복사한다. 또한, 재명명 버퍼(38)는 구조화 부동 소수점 상태 및 제어 레지스터(FPSCR)(도시되지 않음)를 적절하게 변경시키기 위해 상태 정보를 또한 저장한다. 결과를 재명명 버퍼(38)로부터 FPR(36) 및 FPSCR에 복사하는 동안(FPSCR의 FEX 비트로 설정되어 표시된) 부동 소수점 예외가 검출된 것에 응답하여, 프로세서(10)는 예외를 보고한다.
부정확하고 복구 불가능한 부동 소수점 예외 모드에서 동작할 때, 프로세서(10)는 부동 소수점 예외 조건을 보고하되, 어떤 부동 소수점 인스트럭션이 예외 조건을 야기하였는지에 대한 정확한 정보는 제공하지 않는다. 바람직하게, 이 경우, 바람직한 실시예의 프로세서(10)는 다음과 같은 방식으로 예외를 통보한다.
먼저, 프로세서(10)는 프로세서(10)가 부동 소수점 예외를 검출한 사이클 동안 인스트럭션 완료를 중단한다. 프로세서(10)가 어떤 인스트럭션에서 완료를 중단하게 되었는지에 대한 정확한 정보는 프로세서(10)의 상태가 이 인스트럭션에 선행하는 모든 완료된 인스트럭션의 결과를 반영하는 한 중요하지 않다.
두번째, 프로세서(10)는 선행하는 모든 조기 완료된 인스트럭션의 실행을 종료한다. 또한, 프로세서(10)는 이 인스트럭션의 결과를 구조화 레지스터에 복사하여, 재명명 버퍼(34, 38)내의 모든 되기록 엔트리가 비워지도록 한다.
세번째, 프로세서(10)는 부동 소수점 예외를 보고한다. 부정확하고 복구 불가능한 부동 소수점 예외 모드에서, 조기 완료된 부동 소수점 인스트럭션은 다른 유형의 조기 완료된 인스트럭션과는 상이하다. 그 이유는 부동 소수점 인스트럭션이 차후에 실행되어 부동 소수점의 예외 조건이 발생되더라도, 프로세서(10)가 부동 소수점 인스트럭션을 조기 완료하기 때문이다. 따라서, 조기 완료되거나 혹은 실제로 완료된 다른 인스트럭션에 의해서는 예외가 발생되지 않는다.
부동 소수점이 아닌 인스트럭션에 의해 발생된 예외의 검출에 응답하여, 프로세서(10)가 어떠한 부동 소수점 예외에도 직면하지 않고 선행하는 모든 조기 완료된 부동 소수점 인스트럭션의 실행을 종료할 때까지, 프로세서(10)는 부동 소수점이 아닌 예외를 보고하는 것을 지연시킨다. 바람직하게, 이 경우 바람직한 실시예의 프로세서(10)는 다음과 같은 방식으로 예외를 보고한다.
먼저, 프로세서(10)는 부동 소수점이 아닌 예외를 검출하는 사이클 동안 인스트럭션 완료를 중단한다. 프로세서(10)는 부동 소수점이 아닌 예외를 야기하는 인스트럭션에서 인스트럭션의 완료를 중단하므로, 인스트럭션이 완료되지 않는다.
두번째, 프로세서(10)는 선행하는 모든 조기 완료된 인스트럭션의 실행을 종료한다. 이것은 프로세서(10)가 어떠한 부동 소수점 예외에도 직면하지 않고 선행하는 모든 조기 완료된 부동 소수점 인스트럭션의 실행을 종료할 수 있는지를 판정한다. 또한, 프로세서(10)는 이러한 인스트럭션의 결과를 구조화 레지스터에 복사하여, 재명명 버퍼(34, 38)내의 모든 되기록 엔트리가 비워지도록 한다. 이러한 방식으로, 프로세서(10)가 예외를 보고할 때, 프로세서(10)의 상태가 일관되게 존재한다. 또한, 예외가 인식되었을 때, 다른 되기록 버퍼가 비어있을 때까지 대기하여 일관된 프로세서의 상태가 제공되도록 한다.
세번째, 프로세서(10)가 부동 소수점 예외를 검출하지 않았다면, 프로세서(10)는 정확한 부동 소수점이 아닌 예외를 보고한다. 이와 달리, 만약 프로세서(10)가 부동 소수점 예외를 검출하였다면, 프로세서(10)는 부정확하고 복구 불가능한 부동 소수점 예외를 보고한다.
본 발명은 예시적인 실시예 및 그 장점들을 상세히 설명하였지만, 이러한 실시예로 한정되지 않음에 유의하여야 한다. 본 발명은 본 발명의 폭, 범주 및 사상을 벗어나지 않은 범위내에서 여러가지 변경, 대체 및 대안들이 예시적인 실시예로 구현될 수 있다. 본 발명의 폭, 범주 및 사상은 전술한 예시적인 실시예로 한정되지 않으며, 첨부된 특허 청구범위 및 이와 대등한 것으로 정의된다.

Claims (16)

  1. 처리 시스템(processing system)을 동작시키는 방법에 있어서, ① 실행 회로에 디스패치(dispatch)될 인스트럭션(instruction)에 대한 예외 조건이 존재하는지를 판정하는 단계와, ② 상기 인스트럭션을 상기 실행 회로에 디스패치하는 단계와, ③ 상기 인스트럭션에 대한 예외 조건이 존재한다는 판정에 응답하여, 상기 실행 회로에 의한 상기 인스트럭션의 실행을 금지시켜, 상기 인스트럭션이 상기 실행 회로에 의해 실행되지 못하도록 하는 단계를 포함하는 처리 시스템의 동작 방법.
  2. 제1항에 있어서, 상기 금지 단계는 상기 인스트럭션을 상기 실행 회로에 디스패치하는 동안 상기 실행을 금지하는 표시 신호를 출력하는 단계를 포함하는 처리 시스템의 동작 방법.
  3. 제1항에 있어서, 상기 예외 조건은 인스트럭션의 인출 및 디코드와 관련된 예외 조건인 처리 시스템의 동작 방법.
  4. 제1항에 있어서, 상기 실행 금지 표시 신호를 상기 실행 회로에 저장하는 단계를 더 포함하는 처리 시스템의 동작 방법.
  5. 제1항에 있어서, 상기 실행 금지 표시 신호를 재배열 버퍼(reorder buffer)에 저장하는 단계를 더 포함하는 처리 시스템의 동작 방법.
  6. 제1항에 있어서, 상기 예외 조건이 없었다면 상기 인스트럭션이 실행되어졌을 머신 사이클(machine cycle) 동안 상기 예외 조건을 처리하는 단계를 더 포함하는 처리 시스템의 동작 방법.
  7. 제6항에 있어서, 상기 처리 단계는, 인스트럭션 시퀀스(a sequence of instruction)에서 상기 인스트럭션에 선행하는 인스트럭션이 완료된 것에 응답하여, 상기 예외 조건을 처리하는 단계를 포함하는 처리 시스템의 동작 방법.
  8. 제1항에 있어서, 상기 디스패치 단계는 상기 처리 시스템의 하나의 머신 사이클 동안 다수의 인스트럭션을 디스패치하는 단계를 포함하는 처리 시스템의 동작 방법.
  9. 처리 시스템에 있어서, ① 인스트럭션을 실행하는 실행 회로와, ② 상기 실행 회로에 디스패치될 인스트럭션에 대한 예외 조건이 존재하는지를 판정하고, 상기 인스트럭션을 상기 실행 회로에 디스패치하고, 상기 인스트럭션에 대한 예외 조건이 존재한다는 판정에 응답하여 상기 실행 회로에 의한 상기 인스트럭션의 실행을 금지시켜 상기 인스트럭션이 상기 실행 회로에 의해 실행되지 못하도록 하는 디스패치 회로를 포함하는 처리 시스템.
  10. 제9항에 있어서, 상기 디스패치 회로는, 상기 인스트럭션을 상기 실행 회로에 디스패치하는 동안 상기 실행을 금지하는 표시 신호를 출력하는 처리 시스템.
  11. 제9항에 있어서, 상기 예외 조건은 인스트럭션의 인출 및 디코드와 관련된 예외 조건인 처리 시스템.
  12. 제9항에 있어서, 상기 실행 회로는 상기 실행 금지 표시 신호를 저장하는 처리 시스템.
  13. 제9항에 있어서, 상기 실행 금지 표시 신호를 저장하는 재배열 버퍼를 더 포함하는 처리 시스템.
  14. 제9항에 있어서, 상기 예외 조건이 없었다면 상기 인스트럭션이 실행되어졌을 머신 사이클동안, 상기 예외 조건을 처리하는 예외 처리 회로를 더 포함하는 처리 시스템.
  15. 제14항에 있어서, 상기 예외 처리 회로는, 인스트럭션 시퀀스에서 상기 인스트럭션에 선행하는 인스트럭션이 완료된 것에 응답하여 상기 예외 조건을 처리하는 처리 시스템.
  16. 제9항에 있어서, 상기 디스패치 회로는 상기 처리 시스템의 하나의 머신 사이클 동안 다수의 인스트럭션을 디스패치하도록 동작할 수 있는 처리 시스템.
KR1019950006995A 1994-03-31 1995-03-30 처리 시스템 및 그의 동작 방법 KR100188502B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/221,438 1994-03-31
US08/221,438 US5546599A (en) 1994-03-31 1994-03-31 Processing system and method of operation for processing dispatched instructions with detected exceptions
US8/221,438 1994-03-31

Publications (2)

Publication Number Publication Date
KR950027561A KR950027561A (ko) 1995-10-18
KR100188502B1 true KR100188502B1 (ko) 1999-06-01

Family

ID=22827837

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019950006995A KR100188502B1 (ko) 1994-03-31 1995-03-30 처리 시스템 및 그의 동작 방법

Country Status (6)

Country Link
US (1) US5546599A (ko)
EP (1) EP0675434B1 (ko)
JP (1) JP2694124B2 (ko)
KR (1) KR100188502B1 (ko)
AT (1) ATE174699T1 (ko)
DE (1) DE69506606T2 (ko)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5692169A (en) * 1990-12-14 1997-11-25 Hewlett Packard Company Method and system for deferring exceptions generated during speculative execution
JP3212213B2 (ja) * 1994-03-16 2001-09-25 株式会社日立製作所 データ処理装置
US5625835A (en) * 1995-05-10 1997-04-29 International Business Machines Corporation Method and apparatus for reordering memory operations in a superscalar or very long instruction word processor
KR100376056B1 (ko) * 1995-12-29 2003-07-22 엘지엔시스(주) 멀티 프로세서 인터럽트 처리장치
US6209083B1 (en) * 1996-02-28 2001-03-27 Via-Cyrix, Inc. Processor having selectable exception handling modes
US5838942A (en) * 1996-03-01 1998-11-17 Hewlett-Packard Company Panic trap system and method
US5809275A (en) * 1996-03-01 1998-09-15 Hewlett-Packard Company Store-to-load hazard resolution system and method for a processor that executes instructions out of order
US5881306A (en) * 1996-12-17 1999-03-09 International Business Machines Corporation Instruction fetch bandwidth analysis
US5838941A (en) * 1996-12-30 1998-11-17 Intel Corporation Out-of-order superscalar microprocessor with a renaming device that maps instructions from memory to registers
US5887185A (en) * 1997-03-19 1999-03-23 Advanced Micro Devices, Inc. Interface for coupling a floating point unit to a reorder buffer
US6098167A (en) * 1997-03-31 2000-08-01 International Business Machines Corporation Apparatus and method for fast unified interrupt recovery and branch recovery in processors supporting out-of-order execution
US5887161A (en) * 1997-03-31 1999-03-23 International Business Machines Corporation Issuing instructions in a processor supporting out-of-order execution
US5913048A (en) * 1997-03-31 1999-06-15 International Business Machines Corporation Dispatching instructions in a processor supporting out-of-order execution
US5805849A (en) * 1997-03-31 1998-09-08 International Business Machines Corporation Data processing system and method for using an unique identifier to maintain an age relationship between executing instructions
US5870582A (en) * 1997-03-31 1999-02-09 International Business Machines Corporation Method and apparatus for completion of non-interruptible instructions before the instruction is dispatched
US5881280A (en) * 1997-07-25 1999-03-09 Hewlett-Packard Company Method and system for selecting instructions for re-execution for in-line exception recovery in a speculative execution processor
US7089404B1 (en) 1999-06-14 2006-08-08 Transmeta Corporation Method and apparatus for enhancing scheduling in an advanced microprocessor
GB2365546B (en) * 1999-12-23 2004-02-18 St Microelectronics Sa A computer system with two debug watch modes
GB2362730B (en) 1999-12-23 2004-02-11 St Microelectronics Sa Computer register watch
US6820190B1 (en) * 2000-02-02 2004-11-16 Hewlett-Packard Development Company, L.P. Method and computer system for decomposing macroinstructions into microinstructions and forcing the parallel issue of at least two microinstructions
US7278011B2 (en) * 2004-04-08 2007-10-02 International Business Machines Corporation Completion table configured to track a larger number of outstanding instructions without increasing the size of the completion table

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5051940A (en) * 1990-04-04 1991-09-24 International Business Machines Corporation Data dependency collapsing hardware apparatus
US5341482A (en) * 1987-03-20 1994-08-23 Digital Equipment Corporation Method for synchronization of arithmetic exceptions in central processing units having pipelined execution units simultaneously executing instructions
JP2858140B2 (ja) * 1988-10-19 1999-02-17 アポロ・コンピューター・インコーポレーテッド パイプラインプロセッサ装置および方法
US5136697A (en) * 1989-06-06 1992-08-04 Advanced Micro Devices, Inc. System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache
US5129067A (en) * 1989-06-06 1992-07-07 Advanced Micro Devices, Inc. Multiple instruction decoder for minimizing register port requirements
US5077692A (en) * 1990-03-05 1991-12-31 Advanced Micro Devices, Inc. Information storage device with batch select capability
US5261066A (en) * 1990-03-27 1993-11-09 Digital Equipment Corporation Data processing system and method with small fully-associative cache and prefetch buffers
IL94115A (en) * 1990-04-18 1996-06-18 Ibm Israel Dynamic process for creating pseudo-random test templates for pompous hardware design violence
US5214763A (en) * 1990-05-10 1993-05-25 International Business Machines Corporation Digital computer system capable of processing two or more instructions in parallel and having a coche and instruction compounding mechanism
US5197135A (en) * 1990-06-26 1993-03-23 International Business Machines Corporation Memory management for scalable compound instruction set machines with in-memory compounding
CA2045756C (en) * 1990-06-29 1996-08-20 Gregg Bouchard Combined queue for invalidates and return data in multiprocessor system
JPH04172533A (ja) * 1990-11-07 1992-06-19 Toshiba Corp 電子計算機
US5222244A (en) * 1990-12-20 1993-06-22 Intel Corporation Method of modifying a microinstruction with operands specified by an instruction held in an alias register
US5390305A (en) * 1991-03-29 1995-02-14 Kabushiki Kaisha Toshiba Information processing apparatus capable of executing exception at high speed
JP2925818B2 (ja) * 1991-04-05 1999-07-28 株式会社東芝 並列処理制御装置
US5274818A (en) * 1992-02-03 1993-12-28 Thinking Machines Corporation System and method for compiling a fine-grained array based source program onto a course-grained hardware
EP0638183B1 (en) * 1992-05-01 1997-03-05 Seiko Epson Corporation A system and method for retiring instructions in a superscalar microprocessor
US5257216A (en) * 1992-06-10 1993-10-26 Intel Corporation Floating point safe instruction recognition apparatus
US5257214A (en) * 1992-06-16 1993-10-26 Hewlett-Packard Company Qualification of register file write enables using self-timed floating point exception flags
DE69327688T2 (de) * 1992-08-12 2000-09-07 Advanced Micro Devices, Inc. Befehlsdecoder
US5268855A (en) * 1992-09-14 1993-12-07 Hewlett-Packard Company Common format for encoding both single and double precision floating point numbers

Also Published As

Publication number Publication date
ATE174699T1 (de) 1999-01-15
DE69506606T2 (de) 1999-07-22
DE69506606D1 (de) 1999-01-28
EP0675434B1 (en) 1998-12-16
JPH07271585A (ja) 1995-10-20
EP0675434A2 (en) 1995-10-04
JP2694124B2 (ja) 1997-12-24
KR950027561A (ko) 1995-10-18
US5546599A (en) 1996-08-13
EP0675434A3 (en) 1996-08-07

Similar Documents

Publication Publication Date Title
KR100188502B1 (ko) 처리 시스템 및 그의 동작 방법
KR100209831B1 (ko) 처리 시스템 및 그의 동작 방법
US5559976A (en) System for instruction completion independent of result write-back responsive to both exception free completion of execution and completion of all logically prior instructions
US5694565A (en) Method and device for early deallocation of resources during load/store multiple operations to allow simultaneous dispatch/execution of subsequent instructions
US5611063A (en) Method for executing speculative load instructions in high-performance processors
US7769986B2 (en) Method and apparatus for register renaming
US6192461B1 (en) Method and apparatus for facilitating multiple storage instruction completions in a superscalar processor during a single clock cycle
JP3611304B2 (ja) 1サイクルのパイプライン・ストールを生成するパイプライン・プロセッサのシステム及び方法
US5678016A (en) Processor and method for managing execution of an instruction which determine subsequent to dispatch if an instruction is subject to serialization
KR0145035B1 (ko) 처리 시스템 및 그의 동작 방법
US5765017A (en) Method and system in a data processing system for efficient management of an indication of a status of each of multiple registers
US5850563A (en) Processor and method for out-of-order completion of floating-point operations during load/store multiple operations
US5805916A (en) Method and apparatus for dynamic allocation of registers for intermediate floating-point results
US6098168A (en) System for completing instruction out-of-order which performs target address comparisons prior to dispatch
US5784606A (en) Method and system in a superscalar data processing system for the efficient handling of exceptions
US5758117A (en) Method and system for efficiently utilizing rename buffers to reduce dispatch unit stalls in a superscalar processor
US6266761B1 (en) Method and system in an information processing system for efficient maintenance of copies of values stored within registers

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
FPAY Annual fee payment

Payment date: 20011107

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee