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

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

Info

Publication number
KR0145035B1
KR0145035B1 KR1019940040059A KR19940040059A KR0145035B1 KR 0145035 B1 KR0145035 B1 KR 0145035B1 KR 1019940040059 A KR1019940040059 A KR 1019940040059A KR 19940040059 A KR19940040059 A KR 19940040059A KR 0145035 B1 KR0145035 B1 KR 0145035B1
Authority
KR
South Korea
Prior art keywords
execution
instruction
instructions
processor
serialized
Prior art date
Application number
KR1019940040059A
Other languages
English (en)
Other versions
KR950027573A (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 KR950027573A publication Critical patent/KR950027573A/ko
Application granted granted Critical
Publication of KR0145035B1 publication Critical patent/KR0145035B1/ko

Links

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/38Concurrent instruction execution, e.g. pipeline, 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional 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, 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, 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, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • 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, 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

Abstract

본 발명은 처리 시스템 및 동작 방법(a processing system and method of operation)을 제공한다. 특정한 인스트럭션(a particular instruction)이 실행을 위해 실행 회로(execution circuitry)에 지명된다. 특정한 인스트럭션의 지명 후 이 특정한 인스트럭션의 실행이 종료되기 전에, 실행 직렬화된 인스트럭션(an execution serialized instruction)이 실행 회로에 지명된다.

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:멀티 플렉서
본 발명은 일반적으로 정보 처리 시스템(systems for processing information)에 관한 것으로, 특히 처리 시스템 및 동작 방법에 관한 것이다.
슈퍼스칼라 처리 시스템(superscalar processing system)은 다수의 인스트럭션(multiple instructions)을 동시에 실행하는 다중 실행 장치(multiple execution units)를 포함한다. 어떤 처리 시스템에서는, 인스트럭션이 인스트럭션 스트림(instruction stream)내의 프로그램된 시퀀스(programmed sequence)와는 다른 순서로 실행된다. 이경우에도 하나 혹은 그 이상의 선택된 인스트럭션이 실행 직렬화(execution serialization)될 수 있으며, 실행 직렬화된 인스트럭션은 프로그램된 시퀀스의 순서대로 실행된다. 이 경우에도, 하나 혹은 그 이상의 선택된 인스트럭션이 실행 직렬화(excution serialization)될 수 있으며, 실행 직렬화된 인스트럭션은 프로그램된 시퀀스의 순서대로 실행된다. 전형적인 종래의 기법에 따르면, 이러한 실행 직렬화된 인스트럭션은 프로그램된 시퀀스내에서 그 뒤에 위치하는 다른 인스트럭션의 실행에 좋지 않은 영양을 미치게 된다.
따라서, 실행 직렬화된 인스트럭션이 프로그램된 시퀀스내에서 그 뒤에 위치하는 다른 인스트럭션의 실행에 미칠 수 있는 악 영향을 감소시킬 수 있는 처리 시스템 및 동작 방법에 대한 필요성이 제기되고 있다.
본 발명에 따른 처리 시스템 및 동작 방법에 있어서는, 특정 인스트럭션이 실행 회로(circuitry for excution)로 지명되어 실행되게 된다. 특정 인스트럭션의 지명 이후, 상기 특정 인스트럭션의 실행 종료에 앞서 실행 직렬화된 인스트럭션이 실행 회로에 지명된다.
본 발명의 기술적인 장점은 실행 직렬화된 인스트럭션이 프로그램된 시퀀스내에서 그 뒤에 위치하는 다른 인스트럭션에 대해 나쁜 영향을 덜 미친다는 것이다.
본 발명의 바람직한 실시예 및 장점들은 이하 상술하는 본 발명의 상세한 설명과 첨부 도면을 참조하면 명확하게 이해될 것이다.
제1도는 바람직한 실시예에 따른 정보 처리 프로세서(10) 시스템의 블럭도이다. 바람직한 실시예에서, 프로세서(10)는 단일 직접 회로 슈퍼스칼라 마이크로프로세서(single integrated circuit superscalar microprocessor)이다. 따라서, 후술하는 바와 같이, 프로세서(10)는 각종 장치(umits), 레지스터(registers), 버퍼(buffers), 메모리(memories) 및 다른 섹션(sections)등을 포함하며, 이들 모든 장치는 집적 회로로 형성된다. 또한, 바람직한 실시예에서, 프로세서(10)는 감축형 인스트럭션 세트 컴퓨팅(Reduced Instruction Set Computing:RISC) 기법에 따라 동작한다. 제1도에 도시된 바와 같이, 시스템 버스(11)는 프로세서(10)의 버스 인터페이스 장치(bus interface unit:BIU)에 접속된다. 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) 및 부동 소수점 장치(floation point unit : FPU)(30)를 포함한다. FXUA(22), FXUB(24), CFXU(26) 및 LSU(28)는 그들의 원시 피연산자 정보(source operand information)를 범용 구조 레지스터(general purpose architectural resisters: GPRs)(32) 및 고정 소수점 재명명 버퍼(fixed point rename buffers)(34)로 부터 입력한다. 또한, FXUA(22) 및 FXUB(24)는 캐리 비트(carry bit : CA) 레지스터(42)로 부터 캐리 비트를 입력한다. FXUA(22), FXUB(24), CFXU(26) 및 LSU(28)는 그들의 연산 결과(수신지 피연산자 정보(destination operand information))를 고정 소수점 재명명 버퍼(34)내의 선택된 엔트리(selected entries)에 출력하여 저장한다. 또한, CFXU(26)는 전용 레지스터(special purpose resisters: SPRs)(40)로 원시 피연산자 정보 및 수신지 피연산자 정보를 입력한다.
FPU(30)는 자신의 원시 피연산자 정보를 부동 소수점 구조 레지스터(floating point architectural registers : FPRs)(36) 및 부동 소수점 재명명 버퍼(38)로 부터 입력 받는다. FPU(30)은 자신의 연산결과(수신지 피연산자 정보)를 부동 소수점 재명명 버퍼(38)내의 선택된 엔트리에 출력하여 저장한다.
Load 인스트럭션에 응답하여, LSU(28)는 데이타 캐시(16)로 부터 정보를 입력받아, 이 정보를 재명명 버퍼(34, 38)중 선택된 재명령 버퍼로 복사한다. 만약 이러한 정보가 데이타 캐시(16)내에 저장되어 있지 않다면, 데이타 캐시는 이 정보를 (BIU(12) 및 시스템 버스(11)를 통해서) 시스템 버스(11)에 접속된 시스템 메모리(39)로 부터 입력한다. 또한, 데이타 캐시(16)는 (BIU(12) 및 시스템 버스(11)를 통해서) 데이타 캐시(16)로 부터 시스템 버스(11)에 접속된 시스템 메모리(39)로 데이타를 출력할 수 있다. Store 인스트럭션 에 응답하여, LSU(28)는 GPRs(32) 및 FPRs(36)중 선택된 레지스터로 부터 정보를 입력받아, 이 정보를 데이타 캐시(16)로 복사(copy)한다.
시퀀서 장치(18)는 GPRs및 FPRs(36)로 정보를 출력하고 GPRs(32) 및 FPRs(36)로 부터 정보를 입력한다. 분기 장치(20)는 시퀀서 장치(18)로 부터 인스트럭션 및 프로세서 (10)의 현재 상태를 나타내는 신호를 입력한다. 이러한 인스트럭션 및 신호에 응답하여, 분기 장치(20)는 프로세서(10)에 의해 실행될 인스트럭션 시퀀스를 저장하고 있는 적절한 메모리 어드레스를 표시하는 신호를 (시퀀서 장치(18)로)출력한다. 분기 장치(20)로 부터의 이러한 신호에 응답하여,시퀀서 장치(18)는 인스트럭션 캐시(14)로 부터 표시된 인스트럭션 시퀀스를 입력한다. 만약 하나 혹은 그 이상의 인스트럭션 시퀀스가 인스트럭션 캐시(14)에 저장되어 있지 않다면, 인스트럭션 캐시(!4)는 이러한 인스트럭션을 시스템 버스(11)에 접속된 시스템 메모리(39)로 부터 입력한다.
인스트럭션 캐시(14)로 부터의 인스트럭션 입력에 응답하여, 시퀀서 장치(18)는 이 인스트럭션을 실행 장치(20,22,24,26,28 및30)중 선택된 실행 장치로 선택적으로 지명한다. 각각의 실행 장치는 특정 인스트럭션 부류의 하나 혹은 그 이상의 인스트럭션 (one or more instruction of a particular class of instructions)을 실행한다. 예를들면, FXUA(22) 및 FXUB(24)는 원시 피연산자에 대해 제 1 부류의 고정 소수점 수학적 연산(a first class of fixed point mathematical operations) 예를들어, 가산, 감산, AND 연산, OR 연산, XOR 연산등을 실행한다. CFXU(26)는 원시 피연산자에 대해 제 2 부류의 고정 소수점 연산 예를들어 고정 소수점 곱셈 및 나눗세을 실행한다. FPU(30)는 원시 피연산자에 대해 부동 소수점 연산 예를들어 부동 소수점 곱셈 및 나눗셈을 실행한다.
정보가 재명명 버퍼(34)중 선택된 재명명 버퍼로 저장됨에 따라 이 정보는 선택된 재명명 버퍼가 할당된 인스트럭션(the instruction for which the selscted rename buffer is allocated)에 의해 지정된 저장 위치(예를 들면, GPRs(32) 혹은 CA 레지스터(42)중의 하나)와 연관된다. 재명명 버퍼(34)중 선택된 재명명 버퍼에 저장된 정보는 시퀀서 장치(18)로 부터의 신호에 응답하여, GPRs(32) (혹은 CA 레지스터(42))중 연관된 레지스터에 복사된다. 제 6내지 10 도를 참조하여 상세히 기술되는 바와 같이, 시퀀서 장치(18)는 상기 정보를 발생한 인스트럭션의 완료(completion)에 응답하여, 재명명 버퍼 (34)중 선택된 재명명 버퍼에 저장된 정보의 상술한 복사를 지시(direct)한다. 이러한 복사는 되기록(writeback)으로 일컬어진다.
정보가 재명명 버퍼(38)중 선택된 재명령 버퍼로 저장됨에 따라 이 정보는 FPRs(36)중 하나와 연관된다. 재명명 버퍼(38)중 선택된 재명령 버퍼에 저장된 정보는, 시퀀서 장치(18)로 부터의 신호에 응답하여, FPRs(36)중 상기 정보와 연관된 FPR에 복사된다. 시퀀서 장치(18)는 상기 정보를 발생한 인스트럭션의 완료에 응답하여, 재명명 버퍼(38)중 선택된 재명명 버퍼에 저장된 정보의 상술한 복사를 지시한다.
프로세서(10)는 여러 실행 장치(20, 22, 24, 26, 28 및 30)에서 동시에 다수의 인스트럭션을 처리함으로써 높은 성능을 성취한다. 따라서,각각의 인스트럭션은 일련의 단계(a seguence of stages)를 거쳐 처리되며, 각각의 단계는 다른 인스트럭션의 단계와 병렬로 실행될 수 있다. 이러한 기법은 파이프라이닝(pipelining)으로 일컬어진다. 본 발명의 바람직한 실시예의 중요한 측면으로, 인스트럭션은 통상 인출, 디코딩, 지명, 실행, 완료 및 되기록(fetch, decode, dispatch,excute, completion, and wri te back)의 6 단계로 처리된다.
인출 단계에서, 시퀀서 장치(18)는 최대 4 개까지의 인출된 인스트럭션을 디코딩한다.
지명 단계에서, 시퀀서 장치(18)는 분기 장치(20) 및 시퀀서 장치(18)와 관련하여 후술하는 인스트럭션 시퀀스를 저장하는 하나이상의 메모리 어드레스로 부터 하나 혹은 그 이상의 인스트럭션을 (인스트럭션 캐시(14)로 부터) 선택적으로 입력한다.
디코딩 단계에서, 시퀀서 장치(18)는. 각각의 지명된 인스트럭션의 결과(수신지 피연산자 정보)를 저장하기 위한 재명명 버퍼 앤트리를 할당한 이후, (디코딩 단계의 디코딩에 응답하여) 실행 장치(20, 22, 24, 26, 28 및 30)중 선택된 실행장치에 최대 4 개까지의 디코딩된 명령을 선택적으로 지명한다. 지명 단계에서, 지명된 인스트럭션의 피연산자 정보가 또한 선택된 실행 장치에 제공된다. 프로세서(10)는 자신의 프로그램된 시퀀스의 순서에 따라 인스트럭션을 지명한다.
실행 단계에서, 실행 장치는 자신의 지명된 인스트럭션을 실행하고, 전술한 바와 같이 자신의 연산 결과를 출력하여 재명명 버퍼(34, 38)내의 선택된 엔트리에 저장한다. 이러한 식으로, 프로세서(10)는 자신의 프로그램죈 시퀀스와는 다른 순서로 인스트럭션을 실행할 수도 있다.
완료 단계에서, 시퀀서 장치(18)는,제3 및 4도를 참조하여 후술하는 바와 같이, 인스트럭션이 완료되었다는 것을 표시한다. 프로세서(10)는 자신의 프로그램된 시퀀스로 인스트럭션을 완료한다.
되기록 단계에서 시퀀서 장치(18)는 재명명 버퍼(34 및 38)로 부터 GPRs(32) 및 FPRs(36)로 정보의 복사를 지시한다. 시퀀서 장치(18)는, 제 6 내지 10 도를 참조하여 후술하는 바와 같이, 선택된 재명명 버퍼에서의 이러한 정보의 복사를 지시한다. 마찬가지로, 특정 인스트럭션의 되기록 단계에서, 프로세서(10)는 이 특정한 인스트럭션에 응답하여, 자신의 구조 상태(architectural states)를 갱신한다. 프로세서(10)는 인스트럭션들의 제각기의 되기록 단계들을 그들의 프로그램된 시퀀스에 따라 처리한다. 제 6 내지 10 도를 참조하여 후술하는 바와 같이, 프로세서(10)는, 유리하게도, 특정 상황(specified situation)에서는 인스트럭션의 완료 단계와 되기록 단계를 통합(merge)한다.
바람직한 실시예에서, 각각의 인스트럭션은 각각의 인스트럭션처리 단계를 완료하는데 하나의 기계 주기(machine cycle)를 필요로 한다. 그러나, 어떤 인스트럭션(예를들면CFXU(26)에 의해 실행되는 복합 고정 소수점 인스트럭션)은 하나보다 많은 사이클을 필요로 할 수도 있다. 따라서, 선행하는 인스트럭션의 완료에 필요한 시간이 변함에 따라 특정 인스트럭션의 실행 및 완료 단계 사이에 가변지연(variable delay)이 발생할 수도 있다.
제 2도는 프로세서(10)의FXUA(22)의 블럭도이다. FXUA(22)는 참조번호(50a, 50b)로 표시된 유보 스테이션(reservation stations)을 포함한다. 마찬가지로, 가각의 분기 장치(20), FXUB(24), CFXU(26), LSU(30) 및 FPU(30)는 제각기 의 유보 스테이션을 포함한다. 보다 명확한 설명을 위하여, 다른 실행 장치 및 그들의 제각기의 예로서, 단지 FXUA(22)와 그의 유보 스테이션의 동작이 기술될 것이다.
각각의 유보 스테이션(50a, 50b)은 시퀀서 장치(18)로 부터 지명되어 FXUA(22)에 의해 실행될 제각기의 인스트럭션에 대한 정보를 저장할 수 있다. 각각의 유보 스테이션은 제각기의 수신지 레지스터 필드(destination regiter field), 피연산자 A 필드, 피연산자 B 필드, 및 연산코드 필드를 포함한다. 또한 본 발명의 바람직한 실시예의 중요한 측면으로, 각각의 유보 스테이션은 또한 제각기의 실행허용(execution-allowed : EOK) 필드를 포함한다.
유보 스테이션의 수신지 레지스터 필드에서, 유보 스테이션은 유보 스테이션의 제각기의 인스트럭션에 대해 (시퀀서 장치(18)에 의해 지정된) 적어도 하나의 수신지 레지스터를 식별한다. 유사하게, 제각기의 피연산자 A 및 피연산자 B 필드에서, 유보 스테이션은 유보 스테이션의 제각기의 인스트럭션에 대해 (GPRs(32), 재명명 버퍼(34), FXUB(24), CFXU(26) 혹은 LSU(28)로 부터의) 원시 피연산자 정보를 저장한다. 연산코드 필드에서, 유보 스테이션은 유보 스테이션의 제각기의 인스트럭션에 응답하여 원시 피연산자 정보에 대해 FXUA(22)가 실행할 연산을 나타내는(시퀀서 장치(18)에 의해 지정된) 연산 코드를 저장한다.
제어 논리(control logic)(56)로 부터의 신호에 응답하여, 실행논리(execute logic)(54)는 유보 스테이션의 피연산자 A 및 피연산자 B 필드로 부터 원시 피연산자 정보를 입력하여, 이 원시 피연산자 정보에 대해 (유보 스테이션의 저장된 연산코드에 의해 표시된) 연산을 실행한다. 이러한 연산의 결과로서 발생하는 정보는 실행 논리(54)로 부터 재명명 버퍼(34), FXUB(24), CFXU(26) 및 LSU(28)로 출력된다. 이러한 정보는 재명명 버퍼(34)중 선택된 재명명 버퍼로 저장된다. 저장된 정보는 멀티플렉서(58)의 출력에 의해 식별되는 수신지 레지스터에 응답하여 (선택된 재명명 버퍼내에서) GPRs(32)중 하나와 연관된다.
본 발명의 바람직한 실시예의 중요한 측면으로 유보 스테이션은 또한 자신의 EOK 필드내에 (스퀀서 장치(18)에 의해 지정된) EOK 정보를 저장한다. 유리하게도, 이러한 EOK 정보는 프로세서(10)가 실행 직렬화된 인스트럭션을 지연하는 소정상황(certain situation)을 수용(accomodates)한다. 실행 직렬화는 프로세서(10)와 같은 다중-파이프 라인, 순서 이탈 프로세서 (multiple-pipeline, out-of-order execution processors)에서 인스트럭션 실행을 지연하는 기법이다. 프로세서(10)가 실행 질렬화된 인스트럭션의 실행을 지연하느 제 1 경우에, 이 실행 질렬화된 인스트럭션은 불확실하게 혹은 사변적으로(speculatively) 실행되지는 않는다, 프로세서(10)가 실행 직렬화된 인스트럭션의 실행을 지연하는 제 2 경우에, 이 실행 직렬화된 인스트럭션은 자신의 모든 원시 피연산자 정보가 사용가능하고 유효해질 때까지 실행이 지연된다.
(인스트럭션이 사변적으로 실행되지 않는) 제 1 경우에 대해 살펴보면, 프로세서(10)는 통상 사변적으로 인스트럭션을 실행하여, 인스트럭션이 인스트럭션 스트림(stream)내에서 자신의 츠로그램된 시퀀스와는 다른 순서로 실행된다. 따라서, 인스트럭션 결과(수신지 피연산자 정보)가 반드시 인스트럭션의 프로스램죈 시퀀스의 순서대로 이용가능 (available)하지는 않다. 그러나, 프로세서(10)는 인스트럭션 결과를 인스트럭션의 프로그램된 시퀀스의 순서에 맞게 구조 레지스터(예를 들면, GPRs(32) 및 FPRs(32))에 되기록한다. 이러한 이유로, 프로세서(10)는 인스트럭션이 실행을 마치는 순간)까지, 이러한 인스트럭션 결과를 임시로(intermediately) 저장하는 재명명 버퍼(34, 38)를 포함한다.
그럼에도 불구하고, 바람직한 실시예의 일예와 같이, 어떤 인스트럭션은SPRs(40)에 대해 동작하며(제1도), 이 경우 인스트럭션 결과는 재명명 버퍼내에 임시로 저장되지 않고 SPRs(40)에 직접적으로 기록된다. 이러한 인스트럭션의 일 예는 Move To 인스트럭션이며, CFXU(26)가 GPRs(32)중 하나의 레지스터로 부터 SPRs(40)중 하나의 레지스터로 정보를 이동시킨다. 제1도에 도시된 바와 같이, CFXU(26) SPRs(40)에 연결된다. Move To 인스트럭션은 실행시 SPRs(40)중 하나의 레지스터를 즉시 갱신한다. 또 다른 예로소, Store 인스트럭션의 결과는 재명명 버퍼내에 임시로 저장되지 않고, 데이타 캐시(16)내의 메모리 위치에 직접 기록된다.
프로세서(10)는 (인스트럭션 결과가 재명명 버퍼내에 임시로 저장되지 않고 구조 레지스터 혹은 메모리 위치로 직접 기록되는 경우) 이러한 인스트럭션을 사변적으로 실행하지 않으므로써 프로세서(10)가 정확한 인터럽트(precise interrupts) 정확한 예외(precise exceptions)를 성취할 수 있도록 한다. 더우기 이들 인스트럭션의 결과는 재명명 버퍼내에 임시로 저장되지 않고 구조 레지스터 혹은 메모리 위치에 직접 기록되므로, 이러한 명령은 되도록 단계없이 처리된다. 따라서, 완료 및 되기록을 순서에 따라 실행하기 위해, 프로세서(10)는 선행하는 모든 인스트럭션이 완료될 때까지 이들 인스트럭션의 실행을 지연한다.
(인스트럭션의 모든 원시 피연산자 정보가 이용가능하고 유효해질 때까지 인스트럭션 실행이 지연되는) 제2경우에 대해 살펴보면, 재2도를 참조하면, 유보 스테이션은 시퀀서 장치(18)로부터 지명되는 시점에서 원시 피연산자 정보가 이용가능하지 않은 제각기의 인스트럭션에 대한 정보를 저장한다. 실행 장치로 부터 원시 피연산자 정보가 이용가능하여지면, 유보 스테이션은 이러한 원시 피연산자 정보를 입력하여 저장한다. 적절한 순간에, 유보 스테이션은 이러한 원시 피연산자 정보를 실행 논리(54)로 전송한다.
바람직한 실시예에서, 대부분의 인스트럭션은 하나 혹은 그 이상의 GPRs(32) 및 FPRs(36)을 원시 피연산자로서 지정한다. 따라서, 바람직한 실시예에서, 유보 스테이션은 실행 장치로 부터 정보를 전송하는 회로를 포함한다.
그럼에도 불구하고, 바람직한 실시예에서, 유보 스테이션은 CA레지스터(42) 혹은 SPRs(40)과 같은 여타 유형의 피연산자로부터 정보를 전송하는 회로는 포함하지 않는다. 왜냐하면, 이러한 전송되지 않는 원시 피연산자를 지정하는 인스트럭션의 빈도수(frequency)에 비해 이러한 회로의 비용 및 크기 부담이 크기 때문이다. 대신에, 바람직한 실시예의 프로세서(10)는 적어도 선행하는 모든 인스트럭션이 완료될 때까지, 이러한 전송되지 않는 원시 피연산자를 지정하는 인스트럭션의 실행을 지연한다. 선행하는 모든 인스트럭션의 완료에 응답하여, 상기 전송되지 않는 원시 피연산자는 구조 레지스터(예를 들면 SPRs(40))중 지정된 레지스터로 부터 판독된다. 이러한 인스트럭션의 예로는 (1) CA 레지스터(42)를 판독하는 확장 산술 인스트럭션(expanded arit h matic instruction)과, (2) SPRs(40)중의 하나로 부터 GPRs(32)중의 하나로 정보를 이동시키는 Move From 인스트럭션을 들 수 있다.
요약하여, 프로세서(10)는 두가지 경우에서 적어도 선행하는 모든 인스트럭션이 완료될 때까지 실행 직렬화된 인스트럭션의 실행을 지연한다. 제1경우에서, 인스트럭션은 사색적으로 실행되지 않아야 한다. 제2경우에서, 인스트럭션은 프로세서(10)가 전송회로를 포함하지 않는 적어도 하나의 원시 피연사자를 지정한다. 유리하게도, 이들 상황은 시퀀서 장치(18)가 유보 스테이션에 저장될 EOK 정보를 지정하므로써 수용된다.
만약 인스트럭션이 실행 직렬화된다면, 인스트럭션이 FXUA(22)에 지명될 때, 시퀀서 장치(18)는 (유보 스테이션의 EOK 필드내에 저장된 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)는 (디코딩 단계에서의 디코딩 동작에 응답하여) 실행 장치(20, 22 24, 26, 28 및 30)들중 선택된 실행장치들에 최대 4개까지의 디코딩된 인스트럭션을 선택적으로 지명한다.
제4도는 바람직한 실시예의 시퀀서 장치(18)의 재배열 버퍼(reoder buffer)(76)의 개념도이다. 제4도에 도시된 바와 같이, 재배열 버퍼(76)는 버퍼 번호(0-15)으로 각각 라벨된 16개의 엔트리를 가진다. 각각의 엔트리는 5개의 주요한 필드 즉 인스트럭션 유형(instrution type) 필드, GHR 수신지 수(number-of-GPR de stinations) 필드, FPR 수신지 수(number-of-FPR destinations) 필드, 종료(finished) 필드, 및 예외(exception) 필드를 가진다. 또한, 인스트럭션 필드는 실행 장치(execution unit) 서브 필드 및 EOK 서브 필드를 가진다.
제3도를 또한 참조하면, 지명 논리(74)가 실행 장치에 인스트럭션을 지명할 때, 시퀀서 장치(18)는 재배열 버퍼(76)내의 연관된 엔트리에 지명된 인스트럭션을 할당한다. 시퀀서 장치(18)는 재배열 버퍼내의 앤트리를 지명된 인스트럭션에 선입 선출 베이스(first-in first-out basis) 및 회전 방식(rotating manner)으로 할당한다. 즉, 시퀀서 장치(18)는 엔트리 0을 할당하고, 이어서 엔트리 1-15를 순차적으로 할당하며, 다시 엔트리 0을 할당하는 식으로 동작한다. 지명된 인스트럭션에 재배열 버퍼(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으로 하여) 아직 예외를 야기(cause)하지 않았음을 나타낸다.
실행 장치가 지명된 인스트럭션을 실행함에 따라, 실행 장치는 재배열 버퍼(76)내에서 연관된 엔트리를 변경한다. 상술하면, 지명된 인스트럭션의 실행 종료에 응답하여, 실행 장치는 (종료=1로 하여) 엔트리의 종료 필드를 변경한다. 만약 실행 장치가 지명된 인스트럭션의 실행 도중 예외에 직면하게 되면, 실행 장치는 (예외=1로 하여) 앤트리의 예외 필드를 변경한다.
제3도를 다시 참조하면, 재배열 버퍼(76)의 엔트리는 시퀀서 장치(18)의 완료 논리(80) 및 예외 논리(82)에 의해 판독된다. 또한, 본 발명의 바람직한 실시예의 또 다른 중요한 측면으로, 재배열 버퍼(76)의 엔트리는 시퀀서 장치(18)의 실행 직렬화 논리(84)에 의해 판독된다. 재배열 버퍼(76)의 예외필드에 응답하여, 예외 논리는 지명된 인스트럭션을 실행하는 동안 직면한 예외를 처리(handle)한다.
재배열 버퍼(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으로 클리어(clear)된 EOK 비트를 갖는다면, 실행 직렬화 장치(84)는, 이 지명된 인스트럭션을 선행하는 모든 인스트럭션의 완료에 응답하여, 라인(60)를 통해 신호를 출력한다. FXUA(22)는 라인(60)을 통해 신호를 출력하는 실행 직렬화 논리(84)에 응답하여서만, 이러한 지명된 인스트럭션을 실행한다. 즉, 실행 직렬화논리(84)가 라인(60)을 통해 신호를 출력할 때, (논리 0으로 클리어된 연관된 EOK 비트를 갖는) 이러한 지명된 인스트럭션은 FXUA(22)의 유보스테이션(50a, 50b)에서 가장 오래된 미결 인스트럭션(pending instruction)이 될 것이다. 왜냐하면, 인스트럭션들은 그들의 프로그램된 시퀀스의 순서대로 완료되기 때문이다.
마찬가지로, 실행 직렬화 논리(84)는 라인(86, 88, 90, 92 및 94)를 통해 각기 이들 라인에 연결된 실행 장치(20, 24, 26, 28 및 30)에 선택적으로 신호를 출력한다.
제5a 및 5b도는 인스트럭션의 각종 단계를 도시한 도면이다. 제5a도를 참조하면, 실행 직렬화 인스트럭션 INST n+1(예를 들면 Move To 인스트럭션 혹은 Move From 인스트럭션)의 실행(사이클 6)은 모든 선행하는 인스트럭션이 완료될 때(예를 들어, 이전 인스트럭션 INST n의 사이클 5 이후)까지, 실행 지연된다. 그럼에도 불구하고, 프로세서(10)는 유리하게도 실행 직렬화 인스트럭션 INST n+1에 후속하는 INST n+2의 지명 혹은 실행을 지연하지 않는다. 이러한 식으로, 프로세서(10)는 실행 직렬화 인스트럭션(예를 들면, INST n+1)에 후속되는 인스트럭션(예를 들면, INST n+2)의 계속적인 지명(continued dispatch)을 성취한다. 또한, 실행 장치의 유보 스테이션내에서 가장 오래된 미결 인스트럭션이 실행 직렬화되는 경우조차도 프로세서(10)의 실행 장치는 실행 장치의 유보 스테이션으로 부터 자신의 실행 논리(예를 들면, 제2도의 논리(54))로 순서에 어긋나게 인스트럭션을 전송할 수 있다.
바람직한 실시예의 프로세서(10)는 다른 대안들(alternatives)보다 고성능을 성취한다. 제5b도에 도시된 바와 같이, 이들 대안중의 하나의 기법에 따르면, 인스트럭션 INST i+2 의 지명(사이클 8)은 실행 직렬화된 실행 INST i+1 의 디코딩(사이클 2)에 응답하여 지연된다. 이러한 대안적 기법에서, 인스트럭션 INST i+2 의 인스트럭션 지명(사이클 8)은 이전에 지명된 모든 인스트럭션의 완료이후에 (예를 들면, 이전에 실행 직렬화된 인스트럭션 INST i+1 의 사이클 7 이후에) 재개(resume)된다. 이러한 대안적 기법의 단점은 실행 직렬화된 인스트럭션(예를 들면, INST i+1)에 후속하는 모든 인스트럭션(예를 들면, INST i+2)이 실행 지연된다는 것이다.
전술한 바와 같이, 프로세서(10)는 실행 직렬화된 인스트럭션 뒤에 연속하여 나타나는 인스트럭션을 계속적으로 지명한다. Move From 인스트럭션은 실행 직렬화된 인스트럭션이며, 따라서 바람직한 실시예의 실행 직렬화된 기법으로, 프로세서(10)는 Move From 인스트럭션의 결과(수신지 피연산자 정보)를 출력하여, 이 수신지 피연산자 정보를, GPRs(32)중의 하나의 레지스터로 되기록하기 전에, 선택된 재명명 버퍼에 저장하는 회로를 더 포함한다.
프로세서(10)는 Move From 인스트럭션의 수신지 레지스터가 GPRs(32)의 하나인지 아닌지 여부에 관계없이 이러한 재명명을 지원한다. 이러한 식으로, 프로세서(10)는 지산의 유보 스테이션의 기존 전송 회로와, 재명명 버퍼를 탐색하는 회로를 함께 사용하여 (Move From 인스트럭션의) 수신지 피연산자 정보를 Move From 인스트럭션 이후에 지명된 인스트럭션의 원시 레지스터와 정확히 매칭(matching)시킨다. 따라서, Move From 인스트럭션 이후의 다른 인스트럭션은 Move From 인스트럭션이 지명된 후에 하시라도 지명가능하다. Move From 인스트럭션에 대해 이러한 회로를 사용하지 않으면, Move From 인스트럭션 이후의 다른 인스트럭션은 Move From 인스트럭션이 완료될 때까지는 지명되지 않을 것이다. 왜냐하면, 다른 인스트럭션은(그들의 원시 피연산자 정보로서) Move From 인스트럭션의 수신지 피연산자 정보를 필요로 하기 때문이다.
본 발명의 바람직한 실시예의 또 다른 중요한 측면으로, 프로세서(10)는 유리한 방식으로(in an adnantageous manner)인스트럭션 인출 및 디코딩과 관련된 예외(instruction fetch and decode related exceptions:IFDRE)에 응답함으로써 인스트럭션 지명을 능률화(streamline)한다는 사실이다. 프로세서(10)는 만약 예외 조건이 전적으로 인스트럭션 및 프로세서(10)의 상태로 부터 검출 가능하다면, 인출 단계 혹은 디코드 단계에서 인스트럭션 인출 혹은 디코딩과 관련된 예외를 검출한다. 이러한 인스트럭션 인출 혹은 디코딩과 관련된 예외의 예는 인스트럭션 액세스 페이지폴트(instruction access pagefault), 인스트럭션 엑세스 기억 장치 보호 위반(instruction access storage protection violation), 특권 인스트럭션 위반(priviledged instruction vioalt ion) 및 불법 인스트럭션(illegal instruction)등이 있다.
유리하게도, 이러한 인스트럭션 인출 혹은 디코딩과 관련된 예외에 응답하여, 시퀀서 장치(18)는 IFDRE-야기 인스트럭션(IFDRE-causing instruction)을 실행 장치의 유보 스테이션에 지명하되 제2 내지 4도를 참조하여 전술한 바와 같이 EOK 비트를 논리 0으로 클리어한다. 또한, 시퀀서 장치(18)는 재배열 버퍼(76)내에서 IFDRE-야기 인스트럭션과 연관된 엔트리내에 (종료=1로 유지한 채) 예외=1로 설정함으로써 IFDRE 조건의 표시(indication)를 저장한다. 이러한 표시는 이 인스트럭션을 IFDRE_야기 인스트럭션으로 식별한다.
제2 내지 4도를 참조하여 전술한 바와 같이, EOK 비트를 논리 0으로 클리어함으로써, 시퀀서 장치(18)는 실행 장치가 지명된 인스트럭션을 (이 지명된 인스트럭션이 다른 모든 조건으로는 실행준비가 되었다 하더라도) 실행하는 것을 저지한다. 따라서 실행 장치는, 제2 내지 4도를 참조하여 전술한 바와 같이, 시퀀서 장치(18)가 라인(60, 86, 88, 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 조건이 존재한다고 결정하면 (1) 재배열 버퍼(76)내에서 이 IFDRE_야기 인스트럭션과 연관된 엔트리내에 (종료=0으로 유지한 채) 예외=1도 설정하고, (2) 이 IFDRE_야기 인스트럭션의 유보 스테이션내에 EOK 비트를 논리 0으로 설정함으로써 실제 지명 동안 이러한 IFPRE 조건의 표시를 출력한다.
이는 매우 유리한데 왜냐하면, 인스트럭션을 지명하기로 결정한 이후에, 이러한 지명의 효과를 반전시켜 결국 인스트럭션을 지명하지 않는 것은 불가능하기 때문이다. 더우기 지명 사이클 동안, 인스트럭션을 지명하기로 결정한 이후에 추가 동작(additional operations)이 수행된다. 따라서, 프로세서(10)는 각각의 인스트럭션을 지명할 것인가를 결정하기 전에 임의의 예외 조건을 검출할 필요는 없다. 이는 시퀀서 장치(18)가 프로세서 (10)의 단일 사이클 동안 다수의 인스트럭션을 지명하는 것에 특히 유리하다.
제6도는 재배열 버퍼(76)의 개념도이며, 이 도면에서 4개의 인스트럭션이 프로세서(10)의 동일한 사이클 동안 실행을 종료하는(종료=1이 되는)것으로 도시되었다. 제7도는 제6도의 4개의 인스트럭션의 각종 단계를 도시한다. 제8a 내지 8d도는 프로세서(10)의 재명명 버퍼의 개념도이다.
제6 내지 8도를 참조하면, 본 발명의 바람직한 실시예의 또 다른 중요한 측면으로 되기록은 인스트럭션의 완료와는 무관하며, 따라서 프로세서(10)에 의해 처리되는 인스트럭션의 되기록 단계는 인스트럭션의 완료 단계로 부터 분리 가능하다. 유리하게도, 이러한 식으로 완료 단계로 부터 되기록 단계를 분리함으로써, 프로세서(10)는 재명명 버퍼와 구조 레지스터간의 적은 수의 포트(ports)만을 사용하여 효율적인 동작을 성취할 수 있다. 예를 들면, 제1도에 도시된 바와 같이, 바람직한 실시예의 프로세서(10)는 재명명 버퍼(34)와 GPRs(32) 사이에 두 개의 되기록 포트와, 재명명 버퍼(34)와 FPRs(36) 사이에 또한 두 개의 되기록 포트를 포함한다. 되기록 포트의 수가 적을수록 재명명 버퍼(34, 38) 및 구조 레지스터(32, 36)의 물리적인 크기는 감소된다. 또한, 완료 논리 (80)(제3도)는 더욱 능률적으로 되어 프로세서(10)는 특정 인스트럭션이 현재 사이클동안 완료될 수 있는지의 여부를 더욱 신속히 결정한다.
바람직한 실시예에서, 프로세서(10)는 한 사이클당 최대 4개까지의 인스트럭션을 완료할 수 있다. 또한, 바람직한 실시예에서, 각각의 인스트럭션은 두 개 까지의 수신지 피연산자를 포함할 수 있다. 따라서, 만약 프로세서(10)가 완료 단계로 부터 되기록 단계가 분리되는 것을 지원하지 않는다면, 4개의 인스트럭션 각각이 두 개의 수신지 피연산자를 가지는 경우, 프로세서(10)가 특정 사이클에서 4개의 인스트럭션을 완료하기 위해서는 (예를 들면 재명명 버퍼(34)와 GPRs(32) 사이에) 8개의 되기록 포트가 필요하다. 그 이유는, 인스트럭션이 완료되려면 재명명 버퍼에서 연관된 구조 레지스터로 복사될 인스트럭션의 수신지 피연산자의 각각에 대해 하나의 되기록 포트가 필요할 것이기 때문이다.
되기록 포트의 수가 적을 수록, 되기록 포트의 유용성을 검증하는 것을, 동일한 사이클 동안 더욱 많은 인스트럭션이 되기록 대상으로 고려되므로 한층 더 복잡해지게 된다. 더 많은 인스트럭션이 되기록 대상으로 고려되는 이유는, 특정 사이클 동안 특정 인스트럭션에 대해 되기록 포트가 사용가능한지의 여부는 동일 사이클 혹은 선행하는 사이클 동안 선행하는 인스트럭션에 시용되는 되기록 포트의 수에 의존하기 때문이다.
유리하게도, 완료 단계로 부터 되기록 단계를 분리함으로써, 프로세서(10)의 완료 논리(80)(제3도)는 더욱 능률적으로 된다. 그 이유는 인스트럭션의 완료는 다음의 조건에 따르기 때문이다.
조건 1 : (그 인스트럭션이 지명된) 실행 장치가 인스트럭션의 실행을 종료한다.
조건 2 : 그 인스트럭션을 처리하는 어떠한 단계에서도 예외에 직면하지 않았다.
조건 3 : 이전에 지명된 모든 인스트럭션이 조건 1 및 2를 만족한다.
되기록 단계로 부터 완료 단계를 분리함으로써, 되기록 포트가 특정 사이클 동안 사용 가능하다면, 프로세서(10)는 이 특정 사이클 동안 재명명 버퍼로부터 완료된 인스트럭션의 수신지 피연산자 정보를 복사하여 이를 구조 레지스터에 저장한다. 되기록 포트가 특정 사이클 동안 사용 가능하지 않다면, 프로세서(10)는 되기록 포트가 사용 가능한 차후의 사이클 동안 재명명 버퍼로 부터 완료된 인스트럭션의 수신지 피연산자 정보를 복사하여 이를 구조 레지스터에 저장한다.
제6도를 참조하면, 재배열 버퍼(76)는 프로세서(10)의 동일한 사이클 동안 실행을 종료하는 4개의 인스트럭션 정보를 저장한다. 제7도는 4개의 인스트럭션, 즉 INST x, INST x+1, INSY 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)는 지명된 인스트럭션을 재명명 버퍼에 선입 선출(first-in first-out) 및 회전 방식(rotating manner)으로 할당한다. 즉, 시퀀서 장치(18)는 재명명 버퍼 0을 할당하고, 이어서 버퍼 1-11를 순서적으로 할당하며, 다시 버퍼 0을 할당하는 식으로 동작한다.
제 8a 내지 8d도를 참조하면, 재명명 버퍼 2는 인스트럭션 INST x의 수신지 피연산자 정보를 저장하기 위해 할당된다. 재명명 버퍼 3은 인스트럭션 INST x+1 의 수신지 피연산자 정보를 저장하기 위해 할당된다. 인스트럭션 INST x+2는 두 개의 수신지 피연산자를 가지므로, 재명명 버퍼 4, 5가 인스트럭션 INST x+2 의 수신지 피연산자 정보를 저장하기 위해 할당된다. 마찬가지로, 재명명 비퍼 6, 7이 인스트럭션 INST x+3 의 수신지 피연산자 정보를 저장하기 위해, 할당된다.
제8a도는 제7도의 사이클(4, 5)의 시작시에 할당포인터(80), 되기록 포인터(82), 및 완료 포인터(84)의 상태를 도시한다. 프로세서(10)는 재명명 버퍼(34)에 대한 판독 및 기록을 제어하기 위해 이러한 포인터를 포함한다. 프로세서(10)는 또한, 재명명 버퍼가 특정한 인스트럭션에 할당되었는지의 여부를 나타내는 할당 포인터(80)를 유지(maintain)한다. 제8a도에 도시된 바와 같이, 할당 포인터(80)는 재명명 버퍼 8을 가리켜, 재명명 버퍼(8)가 인스트럭션의 할당에 사용가능한 다음 재명명 버퍼라는 것을 나타낸다.
본 발명의 바람직한 실시예의 또 다른 중요한 측면으로 프로세서(10)는 또한 (이전에 특정 인스트럭션에 할당되었던) 재명명 버퍼가 다른 인스트럭션에 재할당되도록 이용가능한 여부를 나타내는 되기록 포인터(82)를 포함한다. 제8a도에 도시된 바와 같이, 되기록 포인터(82)는 재명명 버퍼 2를 가리켜, 재명명 버퍼 2가 다음 재명명 버퍼라는 것을 나타내며, 프로세서(10)는 이 버퍼로 부터(제8a도의 재명명 버퍼의 레지스터 필드에서 지정된) GPRs(32)의 하나로 (제8a도의 재명명 버퍼의 정보필드에 저장된)수신지 피연산자 정보를 복사한다.
따라서, 프로세서(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도에 도시된 바와 같이, 프로세서(10)가 추가 인스트럭션을 자명하지 않았으므로, 할당 포인터(80)는 변하지 않는다. 이에 비해, 완료 포인터(84)는 재명명 레지스터 2에서 재명명 레지스터 8로 전진하여, 총 6개의 수신지 피연산자를 가지는 4개의 인스트럭션 INST x, INST x+1, INST x+2 및 INST x+3 이 사이클 5 동안 완료되었음을 나타낸다.
또한, 제8b도에서, 되기록 포인터(82)는 재명명 레지스터 2에서 재명명 레지스터 4로 전진하여, 사이클 5동안 인스트럭션 INST x 및 INST x+1의 수신지 피연산자 정보가 되기록 되었음을 나타낸다. 제7도는 사이클 5동안 인스트럭션 INST x 및 INST x+1의 완료 및 되기록이 함께 발생하였음을 나타냄으로써, 이러한 사실을 예시한다. 이러한 식으로, 사이클 5의 시작시에 두 개의 되기록 포트가 사용가능하기 때문에, (재명명 레지스터 2 및 재명명 레지스터 3내의) 인스트럭션 INST x 및 INST x+1 의 결과는 되기록 엔트리를 우회하여 GPRs(32)에 직접 기록된다. 제8b도에서 두 개의 되기록 포인터 포트 모두가 사이클 5 동안 인스트럭션 INST x 및 INST x+1의 결과를 되기록 하는데 사용되므로, 되기록 포인터(82)는 재명명 레지스터 4 넘어 전진하지 않는다.
제8c도는 제7도의 사이클 7의 시작시에 할당 포인터(80), 되기록 포인터(82) 및 완료 포인터(84)의 상태를 도시한다. 제7 및 8c도에 도시된 바와 같이, 두 개의 되기록 포트 모두가 사이클 6 동안 인스트럭션 INST x+2의 두 결과를 되기록 하는데 사용된다. 따라서, 되기록 포인터(82)는 재명명 버퍼 4에서 재명명 레지스터 6으로 전진한다. 프로세서(10)가 추가 인스트럭션을 지명하지 않았으므로, 할당 포인터(80)은 변하지 않는다. 또한 프로세서(10)가 추가 인스트럭션을 완료하지 않았기 때문에, 완료 포인터(84)는 변하지 않는다.
제8d도는 제7도의 사이클 8의 시작시에 할당 포인터(80), 되기록 포인터(82) 및 완료 포인터(84)의 상태를 도시한다. 제7 및 8d도에 도시된 바와 같이, 두 개의 되기록 포트 모두가 사이클 7 동안 인스트럭션 INST x+3의 두 결과를 되기록하는데 사용된다. 따라서, 되기록 포인터(82)는 재명명 레지스터 8로 전진한다. 프로세서(10)가 추가 인스트럭션을 완료하지 않았으므로, 할당 포인터(8)는 변하지 않는다. 또한, 프로세서(10)가 추가 인스트럭션을 완료하지 않았기 때문에 완료 포인터(84)는 변하지 않는다.
제9도는 프로세서(10)가 되기록 단계로부터 완료 단계를 분리하는 본 발명의 바람직한 실시예의 중요한 특징이 없는 경우의 4개의 인스트럭션의 각종 단계를 도시한다. 이러한 상황을 예시하기 위해, 제9도는 제6도의 재배열 버퍼 번호(7, 8, 9 및 10)와 제각기 연관된 4 개의 인스트럭션 INST x, INST x+2 및 INST x+3의 각종 단계를 도시한다.
제10a내지 10d도는 제9도에 따른 프로세서의 재명명 버퍼의 개념도이다. 특히, 제 10a도는 제9도의 사이클 4 및 5의 시작시에 할당 포인터(90) 및 완료 포인터(94)의 상태를 도시한다. 제10b도는 제9도의 사이클 6의 시작시에 할당 포인터(90) 및 완료 포인터(94)의 상태를 도시한다.
제10a 내지 10d도에 도시된 바와 같이, 프로세서(10)가 되기록 단계로 부터 완료 단계를 분리하는 본 발명의 바람직한 실시예의 주요한 특징이 없는 경우,(할당된 재명명 버퍼를 가지는) 특정한 인스트럭션은, 이 특정한 인스트럭션의 결과가 할당된 재명명 버퍼로 부터 복사되어 구조 레지스터내에 실제로 저장된 후에만 완료될 수 있다. 이에 비해 프로세서(10)가 되기록 단계로 부터 완료단계를 분리하는 본 발명의 바람직한 실시예의 중요한 특징이 있는 경우 프로세서(10)는 또한 되기록 포인터(82)를 포함하여(이전에 특정한 인스트럭션에 할당된) 재명명 버퍼가 다른 인스트럭션에 재할당되도록 이용가능한지의 여부를 나타낸다. 또한, 프로세서(10)는 특정한 인스트럭션의 결과가 할당된 재명명 버퍼로 부터 복사되어 실제적으로 구조 레지스터에 저장되는지의 여부에 관계없이 특정한 인스트럭션을 완료한다. 따라서 프로세서(10)는 특정한 사이클에서 4개까지의 인스트럭션을 완료할 수 있고, 4개의 인스트럭션 각각이 두 개의 수신지 피연산자를 가지며, 이들 수신지 피연신자중 일부의 수신지 피연산자만이 특정한 사이클 동안 GRPs(32)로 복사될 수 있더라도 역시 마찬가지이다.
제11도는 재명명 버퍼(34)의 다른 실시예의 블록도이며, 이 실시예에 되기록 엔트리는 재명명 엔트리와 분리되어 버퍼(110)에 저장된다. 재명명 앤트리는 버퍼(112)에 저장된다. 재명명 엔트리가 할당된 특정 인스트럭션이 특정 사이클 동안 완료되는 것에 응답하여, 버퍼(112)의 재명명 엔트리로 부터의 정보는 상기 특정 사이클 동안 출력되어 버퍼(110)의 되기록 엔트리에 저장된다. GPRs(32)로의 두 개의 되기록 포트중 어느하나가 특정한 사이클 동안 이용가능한 것에 응답하여, 버퍼(110)의 되기록 엔트리로 부터의 정보는 상기 사이클 동안 출력되어 특정한 GPRs(32)의 하나에 저장된다.
버퍼(112)는 제11도에 도시된 바와 같이 8개 포트중 어느 포트를 통해서도 버퍼(110)에 정보를 출력할 수 있어서, 프로세서(10)의 어느 특정한 사이클 동안 버퍼(110)로 8개까지의 재명명 엔트리의 정보를 출력할 수 있다. 따라서, 프로세서(10)는 하나의 특정한 사이클내애 4개까지의 인스트럭션을 완료할 수 있고, 4 개의 인스트럭션 각각이 두 개의 수신지 피연산자를 가지며, 또한 이들 수신지 피연산지중 일부의 수신지 피연산자만이 상기 특정한 사이클동안 복사될 수 있더라도 역시 마찬가지이다. 유리하게도, 완료단계에서 되기록 포트가 이용가능하다면, 결과(수신지 피연산자 정보)는 버퍼(110)의 되기록 엔트리를 우회하여 GPRs(32)에 직접 기록될 수 있다. 프로세서(10)는 제11도에 도시한 바와 같이 버퍼(110, 112) 및 GRPs(32)에 접속된 멀티플렉서(113a, 113b)를 적절히 동작시킴으로써, 이러한 우회를 성취한다.
제11도의 재명명 버퍼의 다른 실시예의 장점은, 버퍼(112)내의 재명명 엔트리는 이 재명명 엔트리를 이전에 할당받아 이 재명명 앤트리와 연관된 인스트럭션이 완료된 후에 다른 인스트럭션에 재할당될 수 있다는 점이다. 그 이유는, 재명명 엔트리의 정보는 이전에 연관된 인스트럭션의 완료에 응답하여 적절히 출력되어 버퍼(110)의 되기록 엔트리네에 저장되기 때문이다. 제11도의 또 다른 측면에서, 멀티플렉서(114)는 버퍼(110) 혹은 버퍼(112)로 부터 선택된 정보를 실행 장치로 적절히 출력하며, 이러한 동작은 실행장치가 이러한 정보와 연관된 구조 레지스터를 지정하는 인스트럭션을 실행하는 경우에 발생한다. 비록, 바람직한 실시예의 프로세서(10)는 재명명 버퍼와 구조 레지스터 사이에 두 개의 되기록 포트를 가지나, 되기록 포트의 적당한 개수는 엔트리 및 되기록 엔트리가 가득차서 인스트럭션 지명이 지연될 가능성(likelihood)의 함수로서 나타난다.
제2 내지 5도를 참조하여 앞서 기술한 바와 같이, 프로세서(10)는 두가지 상황에서, 적어도 모든 선행하는 인스트럭션이 완료될 때까지 실행 직렬화된 인스트럭션의 실행을 지연한다. 제1상황에서 인스트럭션은 사면적으로 실행되지 않아야 한다. 제2상황에서 인스트럭션은 프로세서(10)가 전송회로를 포함하지 않는 적어도 하나의 소오스 피연산자를 지정한다.
제1상황에 대해 살펴보면 어떤 인스트럭션은 전용 구조 레지스터(SPRs)(40)(제1도)상에서 동작하며, 연산 결과는 재명명 버퍼내에 임시로 저장되지 않고 SPRs(40)에 직접 기록된다. 이러한 인스트럭션의 일 예는 정보를 GPRs(32)의 하나로 부터 SPRs(40)의 하나로 이동시키는 Move To 인스트럭션이다. 제1도에 도시된 바와 같이, 이러한 Move To 인스트럭션은 CFXU(26)에 의해 실행된다. Move To 인스트럭션은 실행시 SPRs(40)의 하나를 즉시 갱신한다. 유사하게, Store 연산은 실행시 데이타 캐시(16)내의 메모리 위치를 즉각적으로 갱신한다. 프로세서(10)는 (인스트럭션 결과가 재명명 버퍼내에 임시로 저장되지 않고 구조 레지스터 혹은 메모리 위치로 직접 기록되는 경우), 이러한 인스트럭션을 사색적으로 실행하지 않으으므로써의 프로세서(10)가 정확한 인터럽트 및 정확한 예외를 성취할 수 있도록 한다. 따라서, 순서에 맞는 완료 및 되기록을 위해, 프로세서(10)는 선행하는 모든 인스트럭션이 완료될때까지 Move To 인스트럭션 및 Store 인스트럭션의 실행을 지연한다.
실행 장치에 지명된 인스트럭션의 연관된 EOK 비트가 논리 0으로 설정된 경우 실행 직렬화 논리(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 는 Store 인스트럭션이며, LSU(28)에 지명되고, 수신지 피연산자를 가지지 않는다(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)가 예외 불가능한 각각의 인스트럭션의 실행을 종료하였는지의 여부에 상관없이, 인스트럭션의 실행 혹은 프로그램된 시퀀스내에서 이 인스트럭션에 선행하는 각각의 인스트럭션의 실행결과 예외가 발생하지 않는다면 판정에 응답하여, 인스트럭션을 완료한다. 따라서, 인스트럭션의 완료 단계가 인스트럭션의 실행 단계를 선행하는 것이 가능하다. 이러한 식으로, 프로세서(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 vaild)=0이며, 이는 이들 재명명 버퍼의 정보 필드가 유효한 정보를 저장하고 있지 않음을 나타낸다. 사이클 4의 시작시에(제13도), 인스트럭션 INST a, INST a+1, INST a+2 및 INSTa+3이 아직 실행을 종료하지 않았으므로, 정보 유효=0이 된다.
재명명 버퍼 4에서, 캐리 유효(carry vaild)=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 인스트럭션을 번역(translate)하고, 기억장치 보호(storage protection)를 위해 Store 인스트럭션을 검사(check)한다. 따라서, 제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도의 정보 필드내에서 데이타(DATA)로 표시된) 유효한 데이타를 저장하고 있다는 것을 나타낸다.
재명명 버퍼 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도에 대응한다.
제13도에 도시된 바와 같이 인스트럭션 INST a, INST a+1, INST a+2 및 INST a+3 이 사이클 5 동안 완료하는 것에 응답하여 제12c도에 도시된 바와 같이 응답하여, 재배열 버퍼 3, 4, 5 및 6내의 정보는 삭제된다. 명백히, 인스트럭션 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)을 통해서 신호를 출력하는데 이는 인스트럭션 INST a+2 의 EOK 비트가 재배열 비퍼 5내에서 논리 0으로 클리어 되었기 때문이다.
실행 단계 실행 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)는 인스트럭션 INST a, INST a+1 및 INST a+3이 사이클 5 동안 완료되는 것에 응답하여 재명명 버퍼2로 부터 전진하여, 재명명 버퍼 6을 가리킨다. 또한, 제13도에 도시된 바와 같이, 인스트럭션 INST a 의 두 결과는 사이클 5 동안 재명명 버퍼 2, 3으로부터 GPRs(32)(제1도)로 복사된다. 따라서, 제14c도에 도시된 바와 같이, WB(82)는 재명명 버퍼 2로 부터 전진하여 재명명 버퍼 4를 가리킨다. 또한, 재명명 버퍼 2,3내의 정보는 인스트럭션 INST a의 두 결과가 사이클 5 동안 재명명 버퍼 2, 3에서 GPRs(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의 되기록 단계 동안 인스트럭션 INST a+1의 캐리 결과가 재명명 버퍼 4로 부터 GPRs(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로 부터 GPRs(32)(제1도)로 복사된다. 따라서, 제14d도에 도시된 바와 같이, WB(82)는 재명명 버퍼 4로 부터 전진하여 재명명 버퍼 5을 가리킨다. 또한, 재명명 버퍼 4내의 정보를 인스트럭션 INST a+1의 결과가 사이클 6 동안 재명명 버퍼 4로 부터GPRs(32)(제1도)로 복사되는 것에 응답하여 삭제된다.
바람직한 실시예에서, 원시 피연산자 정보가 전송되지 않은 피연산자(예를 들면, 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)의 상태로 도시한다. 제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 으로부터 GPRs(32)(제1도)로 복사된다. 따라서, 제14g도에 도시된 바와 같이, WB(82)는 재명명 버퍼 5로 부터 전진하여 재명명 버퍼 7을 가리킨다. 또한, 재명명 버퍼 5 및 6 내의 정보는 인스트럭션 INST a+3 및 INST a+4의 결과가 사이클 9동안 재명명 버퍼 5, 6으로부터 GRPs(32)(제1도)로 복사되는 것에 응답하여 삭제된다.
제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 14의 실행은 사이클 7 동안 발생하고, 인스트럭션 INST a+4의 결과의 완료/되기록은 사이클 9 동안 발생한다. 따라서, 바람직한 실시예의 조기 완료 특징을 가진 제13도에서, 인스트럭션 INST a+4의 실행, 완료, 및 되기록 단계는 조기 완료 특징이 없는 제15도에서보다 먼저 발생한다.
프로세서(10)는 전송되지 않는 원시 피연산자(예를 들면, SPRs(40) 및 CA 레지스터(42))를 지정하는 인스트럭션의 실행을 적어도 선행하는 모든 인스트럭션이 완성될 때까지 지연한다. 그 이유는 인스트럭션이 전송되지 않는 원시 피연산자를 지정하고, 인스트럭션의 실행은 이러한 원시 피연산자 정보가 구조 레지스터에서 사용가능하고 유효한 상태가 되는 것을 조건으로 하기 때문이다. 이러한 인스트럭션의 예는 (1) CA 레지스터(42)를 판독하는 확장 산술 인스트럭션과 (2) SPRs(40)의 하나로부터 GPRs(32)의 하나로 정보를 이동하는 Move From 인스트럭션이다.
선행하는 모든 인스트럭션이 완료 되었더라도, 선행하는 임의의 인스트럭션이 조기 완료되어, 이 인스트럭션의 완료 단계가 이 인스트럭션의 실행 단계보다 선행하는 것이 가능하다. 제1내지 5도를 참조하여 전술한 바와 같이, 프로세서(10)는 GPRs(32), FPRs(36), 재명명 버퍼(34 및 38) 및 제어 레지스터로부터 실행 장치로 정보를 전송하는 회로를 포함한다. 만약, 특정 인스트럭션의 원시 피연산자 정보가 선행하는 조기 완료된 인스트럭션의 결과에 종속하고 이 원시 피연산자 정보가 프로세서(10)의 정보 전송 회로에 의해 지원된다면, 프로세서(10)는 조기 완료된 인스트럭션의 실행 단계를 종료한 후에 이 특정한 인스트럭션을 실행한다(이때에는 조기 완료된 인스트럭션의 결과가 재명명 버퍼내에서 사용가능하고 유효해진다).
이에 반해 원시 피연산자 정보가 프로세서(10)의 정보 전송 회로에 의해 지원되지 않는다면, 프로세서(10)는 조기 완료된 인스트럭션의 되기록 단계를 종료한 후에 상기 특정한 인스트럭션을 실행한다(이때에는 조기 완료된 인스트럭션의 결과가 구조 레지스터내에서 사용가능하고 유효해진다). 만약 조기 완료된 인스트럭션의 실행이 종료되지 않는다면, 이 인스트럭션의 결과(수신지 피연산자 정보)는 사용가능하지 않다. 따라서 이러한 경우, 프로세서(10)는 조기 완료된 인스트럭션의 되기록 단계를 이 인스트럭션의 실행이 종료될 때까지 지연한다.
만약, 인스트럭션이 조기 완료된다면, 시퀀서 장치(18)는, 이 인스트럭션의 연관된 실행 장치에 이 인스트럭션을 지명함과 동시에 표시 신호를 출력한다. 이러한 표시 신호에 응답하여, 연관된 실행장치는 재배열 버퍼(76)내에서 인스트럭션의 할당된 엔트리를 변경하지 않는다. 그 이유는, 재배열 버퍼 엔트리가 할당된 인스트럭션을 완료하게 되면, 이 재배열 버퍼 엔트리는 다른 인스트럭션에 재할당되어 이 재배열 버퍼 엔트리내의 정보는 더 이상 유효하지 않게 되기 쉽기 때문이다.
따라서, 만약 인스트럭션이 조기 완료된다면, 이 인스트럭션애 할당된 버퍼 엔트리는 이 인스트럭션의 실행 장치가 이 인스트럭션의 실행을 종료하기전에 무효화될 수도 있다. 바람직한 실시예에서 단일 사이클 동안 시퀀시 장치(18)는 유효한 정보를 가지는 4개의 가장 오래된 버퍼 앤트리를 검사하여, 4개의 인스트럭션이 단일 사이클 동안 동시에 완료될 수 있는 후보가 되도록 한다.
바람직한 실시예에서, Move From 인스트럭션은 SPR로 부터 정보를 입력하고, SPR은 Move To 인스트럭션에 의해서만 변경된다. 유리하게도, 프로세서(10)는 선행하는 모든 인스트럭션의 완료에 응답하여 Move From 인스트럭션을 실행하며, 하나 혹은 그 이상의 선행하는 인스트럭션이 조기 완료되었더라도 마찬가지이다. 이것은 프로세서(10)가 사변적으로 실행되지 않아야 할 인스트럭션(예를 들면, Move To 인스트럭션 혹은 Store 인스트럭션)을 조기 완료하지 않기 때문에 가능하다. 만약, 모든 선행하는 인스트럭션이 완료된다면, 프로세서(10)는 실제적으로 선행하는 모든 Move To 인스트럭션의 실행을 실제로 종료한 것이다. 따라서, 프로세서(10)는 선행하는 모든 인스트럭션의 완료에 응답하여, Move From 인스트럭션을 실행한다. 왜냐하면, 이러한 경우 프로세서(10)는 선행하는 모든 Move To 인스트럭션의 실행을 실제로 종료한 것이기 때문이다.
바람직한 실시예의 또 다른 중요한 측면으로, 프로세서(10)는 부정확하고, 복구 불가능한 부동 소수점 예외 모드(inprecise nonrecoverable floating point exception mode)를 지원한다. 이러한 모드에서 동작할 때, 프로세서(10)는 부동 소수점 예외 조건을 보고(report) 하되 어느 부동 소수점 인스트럭션이 상기 예외 조건을 유발하였는지에 대해서는 정확한 정보를 제공하지 않는다. 프로세서(10)가 이 예외를 처리할 때, 프로세서(10)는 예외를 야기한 부동 소수점 인스트럭션이 이후의 여러 인스트럭션(a vaviable number of instuctions)을 완료한 상태에 놓일 수 있도록 허용된다. 이러한 모드에서 동작할 때, 프로세서(10)는, 예외 조건을 야기하는 부동 소수점 인스트럭션에서 프로그램 실행이 정확하게 중단되지 않아도되는 프로그램을 인스트럭션 시퀀스에 대해서 향상된 성능을 발휘한다.
정확한 부동 소수점 예외 모드에서 동작할 때, 프로세서(10)는 선행하는 모든 인스트럭션이 완료되더라도, 부동 소수점 인스트럭션의 실행을 종료하기 전에는 부동 소수점 인스트럭션을 조기 완료하지 않는다.
이에 반해, 부정확하고 복구 불가능한 부동 소수점 예외모드에서 동작할 때, 프로세서(10)는 선행하는 모든 인스트럭션의 완료에 응답하여, 부동 소수점 인스트럭션의 실행을 종료하기 전에 부동 소수점 인스트럭션을 조기 완료한다. 부정확하고 복구 불가능한 부동 소수점 예외 모드하에서, 조기 완료된 부동 소수점 연산은 다른 유형의 조기 완료된 인스트럭션과는 상이하다. 왜냐하면, 프로세서(10)는 부동 소수점 인스트럭션의 실제 실행시 부동 소수점 예외 조건이 발생되더라도 이 부동 소수점 인스트럭션을 조기 완료하기 때문이다. 각각의 재배열 버퍼 엔트리는 자신의 연관된 인스트럭션이 부동 소수점 인스트럭션인지의 여부를 나타낸다.
부동 소수점 인스트럭션의 실행을 종료하고 단계를 완료하는 것에 응답하여, 부동 소수점 인스트럭션의 결과는 부동 소수점 재명명 버퍼(38)내에 임시로 저장된다. 이 결과는 선행하는 모든 부동 소수점 인스트럭션의 결과가 FPRs(36)로 복사될 때 까지 임시로 저장된다. 이러한 식으로, 프로세서(10)는 부동 소수점 인스트럭션들의 제각기의 되기록 단계들을 그들의 프로그램된 순서에 맞게 처리한다.
재명명 버퍼(38)는 부동 소수점 인스트럭션의 결과를 임시로 저장하여, 차후에 FPRs(38)로 복사한다. 또한, 재명명 버퍼(38)는 구조 부동 소수점 상태 및 제어 레지스터(FPSCR)(도시되지 않음)를 적절히 변경시키기 위한 상태 정보를 더 저장한다. 결과를 재명명 버퍼(38)로 부터 FPRs(36) 및 FPSCR로 복사하는 동안, 부동 소수점 예외의 검출에 응답하여, 프로세서(10)는 예외를 보고한다.
부정확하고 복구 불가능한 부동 소수점 예외 모드에서 동작할 때, 프로세서(10)는 부동 소수점 예외 조건을 보고하되 어느 부동 소수점 인스트럭션이 이 예의 조건을 야기하였는지에 대한 정확한 정보는 제공하지 않는다. 유리하게도, 이러한 경우, 바람직한 실시예의 프로세서(10)는 다음과 같은 방식으로 예외를 통보한다.
먼저, 프로세서(10)는, 프로세서(10)가 부동 소수점 예외를 검출한 사이클 동안 인스트럭션 완료를 중단한다. 프로세서(10)가 어느 인스트럭션에서 완료를 중단하게 되었는지의 정확한 정보는, 프로세서(10)의 상태가 이 인스트럭션에 선행하는 모든 완료된 인스트럭션의 효과를 반영하는 한, 중요하지 않다.
두번째로, 프로세서(10)는 선행하는 모든 조기 완료된 인스트럭션의 실행을 종료한다. 또한, 프로세서(10)는 이러한 인스트럭션의 결과를 구조 레지스터에 복사하여, 재명명 버퍼(34, 38)내의 모든 되기록 엔트리가 비워지도록 한다.
세번째로, 프로세서(10)는 부동 소수점 예외를 보고한다. 부정확하고 복구 불가능한 부동 소수점 예외 모드하에서, 조기 완료된 부동 소수점 인스트럭션은 다른 유형의 조기 완료된 인스트럭션과는 상이하다. 왜냐하면, 프로세서(10)는 부동 소수점 인스트럭션의 실제 실행시 부동 소수점 예외 조건이 발생되더라도, 부동 소수점 인스트럭션을 조기 완료하기 때문이다. 따라서, 조기 완료된 혹은시퀀스로 완료된 다른 인스트럭션에 의해서는 예외가 발생하지 않는다.
비 부동 소수점 인스트럭션(non-floating point instructin)에 의해 발생하는 예외의 검출에 응답하여, 프로세서(10)는, 프로세서(10)가 어느 부동 소수점 예외에도 직면하지 않고, 모든 선행하는 조기 완료된 부동 소수점 인스트럭션의 실행을 종료하기 전까지는, 비 부동 소수점 예외의 보고를 지연한다. 유리하게도, 이러한 경우에는 바람직한 실시예의 프로세서(10)는 다음과 같은 방식으로 예외를 보고한다.
먼저 프로세서(10)는 프로세서(10)가 비 부동 소수점 예외를 검출한 사이클 동안 인스트럭션 완료를 중단한다. 프로세서(10)는 비 부동 소수점 예외를 야기하는 인스트럭션에서 인스트럭션 완료를 중단하므로, 이 인스트럭션은 완료되지 않는다.
두번째로, 프로세서(10)는 선행하는 모든 조기 완료된 인스트럭션의 실행을 종료하며, 이것은 프로세서(10)가 어느 부동 소수점 예외에도 직면하지 않고, 선행하는 모든 조기 완료된 부동 소수점 인스트럭션의 실행을 종료할 수 있는지를 판정한다. 또한, 프로세서(10)는 이러한 인스트럭션의 결과를 구조 레지스터에 복사하여, 재명명 버퍼(34, 38)내의 모든 되기록 엔트리가 비워지도록 한다. 이러한 식으로, 프로세서(10)가 예외를 보고할때, 프로세서(10)의 일관된 상태가 존재한다. 또한, 예외가 인식되었을 때, 다른 되기록 버퍼가 빌 때까지 기다림으로써 일관된 프로세서의 상태를 제공한다.
세번째로, 프로세서(10)가 부동 소수점 예외를 검출하지 않았다면, 프로세서(10)는 정확한 비 부동 소수점 예외를 보고한다. 이에 반해, 만약 프로세서(10)가 부동 소수점 예외를 검출하였다면, 프로세서(10)는 부정확하고 복구 불가능한 부동 소수점 예외를 보고한다.
비록 본 발명의 예시적인 실시예 및 그 장점들이 상세히 설명되었지만, 본 발명이 이 실시예에 한정되어서는 안된다. 다양한 변경, 치환 및 수정이, 본 발명의 폭, 범주 및 사상을 벗어남이 없이, 예시적인 실시예에 구현될 수 있다. 본 발명의 폭, 범주 및 사상은 예시적인 실시예에 한정되어서는 안되며, 첨부된 특허 청구의 범위 및 그 균등물에 따라 정의되어야 한다.

Claims (23)

  1. 처리 시스템(processing system)을 동작(operating)시키는 방법에 있어서, 특정한 인스트럭션(a particular instruction)을, 실행을 위해, 실행 회로(execution circuitry)에 지명(dispatching)하는 단계와; 상기 특정한 인스트럭션을 지명한 후, 상기 특정한 인스트럭션의 실행을 종료(finishing)하기 전에, 상기 실행 회로에 실행 직렬화된 인스트럭션(an execution serialized INSTruction)를 지명하는 단계를 포함하는 처리 시스템 동작 방법.
  2. 제1항에 있어서, 적어도 상기 특정한 인스트럭션의 실행을 종료할 때 까지, 상기 지명된 실행 직렬화된 인스트럭션 실행을 지연(delaying)하는 단계를 더 포함하는 처리 시스템 동작 방법.
  3. 제2항에 있어서, 상기 실행 직렬화된 인스트럭션을 지명한 후, 상기 특정한 인스트럭션의 실행을 종료하기 전에, 상기 실행 회로에 추가 인스트럭션(an additional INSTruction)를 지명하는 단계를 더 포함하는 처리 시스템 동작 방법.
  4. 제3항에 있어서, 상기 특정한 인스트럭션의 실행을 종료하기 전에, 상기 추가 인스트럭션의 실행을 시작(initiating)하는 단계를 더 포함하는 처리 시스템 동작 방법.
  5. 제1항에 있어서, 상기 실행 직렬화된 인스트럭션의 지명 단계는 상기 실행 회로의 유보 스테이션(a reservation station)에 상기 실행 직렬화된 인스트럭션을 지명하는 단계를 포함하는 처리 시스템 동작 방법.
  6. 제1항에 있어서, 상기 실행 직렬화된 인스트럭션의 지명 단계는 상기 실행 회로가 상기 지명된 실행 직렬화된 인스트럭션을 실행하지 못하도록 하는 표시(indication)를 상기 실행 회로에 출력하는 단계를 더 포함하는 처리 시스템 동작 방법.
  7. 제6항에 있어서, 상기 특정한 인스트럭션의 실행 종료에 응답하여, 상기 실행회로가 상기 지명된 실행 직렬화된 인스트럭션의 실행을 시작하도록 하는 추가 표시를 상기 실행 회로에 출력하는 단계를 더 포함하는 처리 시스템 동작 방법.
  8. 제1항에 있어서, 상기 직렬화된 인스트럭션은 불확실하게(speculatively) 실행되지 않는 처리 시스템 동작 방법.
  9. 제8항에 있어서, 상기 실행 직렬화된 인스트럭션의 결과(a result)는 재명령 버퍼(a rename buffer)내에 임시로 저장(intermediate storage)되지 않고 기억 장치 위치(a storage location)에 직접적으로 기록되는 처리 시스템 동작 방법.
  10. 제1항에 있어서, 상기 실행 직렬화된 인스트럭션은, 상기 실행 직렬화된 인스트럭션의 모든 원시 피연산자 정보(source operand information)가 사용가능(available)하고 유효해(vaild)질 때까지, 실행이 지연되는 처리 시스템 동작 방법.
  11. 제10항에 있어서, 상기 실행 직렬화된 인스트럭션은 적어도 하나의 전송되지 않는 원시 피연산자(an least one unforwaroed source operand)를 지정(specifying)하는 처리 시스템 동작 방법.
  12. 인스트럭션을 실행하는 실행 회로와; 상기 실행회로에 결합되어, 특정한 인스트럭션을, 실행을 위해, 상기 실행 회로에 지명하고, 상기 특정한 인스트럭션을 지명한 후, 상기 특정한 인스트럭션의 실행을 종료하기 전에, 상기 실행 회로에 실행 직렬화된 인스트럭션을 지명하는 지명 회로
  13. 제12항에 있어서, 상기 실행 회로는, 적어도 상기 특정한 인스트럭션의 실행을 종료할 때 까지, 상기 지명된 실행 직렬화된 인스트럭션의 실행을 지연하는 회로를 더 포함하는 처리 시스템.
  14. 제13항에 있어서, 상기 지명 회로는, 상기 실행 직렬화된 인스트럭션을 지명한 후, 상기 특정한 인스트럭션의 실행을 종료하기 전에, 상기 실행 회로에 추가 인스트럭션을 또한 지명할 수 있는 처리 시스템.
  15. 제14항에 있어서, 상기 실행 회로는 상기 특정한 인스트럭션의 실행을 종료하기 전에, 상기 추가 인스트럭션의 실행을 시작하는 회로를 더 포함하는 처리 시스템.
  16. 제12항에 있어서, 상기 실행 회로는 적어도 하나의 유보 스테이션을 더 포함하여, 상기 지명 회로는 상기 유보 스테이션에 상기 실행 직렬화된 인스트릭션을 지명하는 처리 시스템.
  17. 제12항에 있어서, 상기 지명 회로는, 상기 실행 회로가 상기 지명된 실행 직렬화된 인스트럭션을 실행하지 못하도록 하는 표시를 상기 실행 회로에 출력하는 처리 시스템.
  18. 제17항에 있어서, 상기 실행 회로는, 상기 특정한 인스트럭션의 실행 종료에 응답하여, 상기 지명된 실행 직렬화된 인스트럭션의 실행을 시작하는 회로를 더 포함하는 처리 시스템.
  19. 제12항에 있어서, 상기 실행 직렬화된 인스트럭션은 불확실하게 실행되지 않는 처리 시스템.
  20. 제19항에 있어서, 상기 실행 회로는, 상기 실행 직렬화된 인스트럭션의 결과를 재명명 버퍼내에 임시로 저장하지 않고 기억 장치 위치에 직접적으로 기록하는 처리 시스템.
  21. 제12항에 있어서, 싱기 실행 회로는, 적어도 상기 인스트럭션의 원시 피연산자 정보가 사용가능하고 유효해질 때까지, 상기 실행 직렬화된 인스트럭션의 실행을 지연하는 처리 시스템.
  22. 제21항에 있어서, 상기 실행 직렬화된 회로는 적어도 하나의 전송되지 않는 원시 피연산자를 규정하는 처리 시스템.
  23. 제12항에 있어서, 상기 실행 회로는, 상기 특정한 인스트럭션을 실행하는 제1 실행 회로와; 상기 실행 직렬화된 인스트럭션을 실행하는 제2실행 회로를 포함하는 처리 시스템.
KR1019940040059A 1994-03-31 1994-12-30 처리 시스템 및 그의 동작 방법 KR0145035B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US22099394A 1994-03-31 1994-03-31
US8/220,993 1994-03-31
US08/220,993 1994-03-31

Publications (2)

Publication Number Publication Date
KR950027573A KR950027573A (ko) 1995-10-18
KR0145035B1 true KR0145035B1 (ko) 1998-08-17

Family

ID=22825892

Family Applications (1)

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

Country Status (13)

Country Link
US (1) US6041167A (ko)
EP (1) EP0753173B1 (ko)
JP (1) JP2742392B2 (ko)
KR (1) KR0145035B1 (ko)
CN (1) CN1099082C (ko)
AT (1) ATE177546T1 (ko)
CA (1) CA2137046C (ko)
DE (1) DE69417071T2 (ko)
HU (1) HUT75816A (ko)
PL (1) PL177392B1 (ko)
RU (1) RU2150738C1 (ko)
TW (1) TW353732B (ko)
WO (1) WO1995027246A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999008184A1 (en) * 1997-08-06 1999-02-18 Advanced Micro Devices, Inc. An apparatus and method for accessing special registers without serialization
EP2169538A4 (en) * 2007-06-20 2010-12-01 Fujitsu Ltd INSTRUCTION PROCESSOR
WO2008155840A1 (ja) * 2007-06-20 2008-12-24 Fujitsu Limited 命令制御装置及び命令制御方法
US7913067B2 (en) * 2008-02-20 2011-03-22 International Business Machines Corporation Method and system for overlapping execution of instructions through non-uniform execution pipelines in an in-order processor
US10514927B2 (en) 2014-03-27 2019-12-24 Intel Corporation Instruction and logic for sorting and retiring stores
CN108255743A (zh) * 2017-12-06 2018-07-06 中国航空工业集团公司西安航空计算技术研究所 一种用于在染色内核中写回仲裁电路
KR20220146835A (ko) * 2021-04-26 2022-11-02 한국전자통신연구원 컴퓨팅 자원 분할 운용 방법 및 장치

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5776634A (en) * 1980-10-31 1982-05-13 Hitachi Ltd Digital signal processor
JPH069028B2 (ja) * 1986-02-18 1994-02-02 日本電気株式会社 演算装置
US5051940A (en) * 1990-04-04 1991-09-24 International Business Machines Corporation Data dependency collapsing hardware apparatus
JPH06103494B2 (ja) * 1986-11-18 1994-12-14 株式会社日立製作所 ベクトル処理装置の制御方式
JPH02103656A (ja) * 1988-10-12 1990-04-16 Fujitsu Ltd 主記憶参照の遂次化制御方式
US5075840A (en) * 1989-01-13 1991-12-24 International Business Machines Corporation Tightly coupled multiprocessor instruction synchronization
JPH0630094B2 (ja) * 1989-03-13 1994-04-20 インターナショナル・ビジネス・マシーンズ・コーポレイション マルチプロセツサ・システム
JP2519798B2 (ja) * 1989-05-30 1996-07-31 富士通株式会社 多重プロセッサシステムにおけるシリアライズ機能の検証方式
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
US5075846A (en) * 1989-09-29 1991-12-24 Motorola, Inc. Memory access serialization as an MMU page attribute
US5471593A (en) * 1989-12-11 1995-11-28 Branigin; Michael H. Computer processor with an efficient means of executing many instructions simultaneously
US5487156A (en) * 1989-12-15 1996-01-23 Popescu; Valeri Processor architecture having independently fetching issuing and updating operations of instructions which are sequentially assigned and stored in order fetched
US5185871A (en) * 1989-12-26 1993-02-09 International Business Machines Corporation Coordination of out-of-sequence fetching between multiple processors using re-execution of instructions
JPH07101410B2 (ja) * 1990-01-17 1995-11-01 インターナショナル、ビジネス、マシーンズ、コーポレーション データ処理ネットワークにおいて逐次化手段の試験のため命令流の実行を同期させる方法
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
US5197135A (en) * 1990-06-26 1993-03-23 International Business Machines Corporation Memory management for scalable compound instruction set machines with in-memory compounding
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
JP2532300B2 (ja) * 1990-10-17 1996-09-11 三菱電機株式会社 並列処理装置における命令供給装置
JP2535252B2 (ja) * 1990-10-17 1996-09-18 三菱電機株式会社 並列処理装置
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
US5257354A (en) * 1991-01-16 1993-10-26 International Business Machines Corporation System for monitoring and undoing execution of instructions beyond a serialization point upon occurrence of in-correct results
ATE200357T1 (de) * 1991-07-08 2001-04-15 Seiko Epson Corp Risc-prozessor mit dehnbarer architektur
EP0529303A3 (en) * 1991-08-29 1993-09-22 International Business Machines Corporation Checkpoint synchronization with instruction overlap enabled
US5269017A (en) * 1991-08-29 1993-12-07 International Business Machines Corporation Type 1, 2 and 3 retry and checkpointing
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
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
US5268855A (en) * 1992-09-14 1993-12-07 Hewlett-Packard Company Common format for encoding both single and double precision floating point numbers
CA2123442A1 (en) * 1993-09-20 1995-03-21 David S. Ray Multiple execution unit dispatch with instruction dependency
EP0779577B1 (en) * 1993-10-18 2002-05-22 VIA-Cyrix, Inc. Micoprocessor pipe control and register translation
DE69429061T2 (de) * 1993-10-29 2002-07-18 Advanced Micro Devices Inc Superskalarmikroprozessoren
JP3311462B2 (ja) * 1994-02-23 2002-08-05 富士通株式会社 コンパイル処理装置

Also Published As

Publication number Publication date
WO1995027246A1 (en) 1995-10-12
PL177392B1 (pl) 1999-11-30
CA2137046A1 (en) 1995-10-01
CN1099082C (zh) 2003-01-15
EP0753173A1 (en) 1997-01-15
HUT75816A (en) 1997-05-28
JPH07271582A (ja) 1995-10-20
TW353732B (en) 1999-03-01
DE69417071T2 (de) 1999-10-14
PL316566A1 (en) 1997-01-20
JP2742392B2 (ja) 1998-04-22
KR950027573A (ko) 1995-10-18
CA2137046C (en) 2000-01-18
ATE177546T1 (de) 1999-03-15
DE69417071D1 (de) 1999-04-15
US6041167A (en) 2000-03-21
EP0753173B1 (en) 1999-03-10
CN1121210A (zh) 1996-04-24
RU2150738C1 (ru) 2000-06-10
HU9602595D0 (en) 1996-11-28

Similar Documents

Publication Publication Date Title
KR100188502B1 (ko) 처리 시스템 및 그의 동작 방법
US5584009A (en) System and method of retiring store data from a write buffer
US5471598A (en) Data dependency detection and handling in a microprocessor with write buffer
US6230254B1 (en) System and method for handling load and/or store operators in a superscalar microprocessor
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
KR100209831B1 (ko) 처리 시스템 및 그의 동작 방법
US5740398A (en) Program order sequencing of data in a microprocessor with write buffer
US5913054A (en) Method and system for processing a multiple-register instruction that permit multiple data words to be written in a single processor cycle
US5615402A (en) Unified write buffer having information identifying whether the address belongs to a first write operand or a second write operand having an extra wide latch
US6192461B1 (en) Method and apparatus for facilitating multiple storage instruction completions in a superscalar processor during a single clock cycle
KR100322149B1 (ko) 고성능 추론적 스트링/다중 연산 방법
KR100523706B1 (ko) 단일 사이클 파이프라인 스톨을 발생하기 위한 파이프라인 프로세서 시스템 및 방법
KR0145035B1 (ko) 처리 시스템 및 그의 동작 방법
US5678016A (en) Processor and method for managing execution of an instruction which determine subsequent to dispatch if an instruction is subject to serialization
US5765017A (en) Method and system in a data processing system for efficient management of an indication of a status of each of multiple registers
US5805916A (en) Method and apparatus for dynamic allocation of registers for intermediate floating-point results
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
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20010306

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee