KR19980702203A - 고성능 추측 실행 프로세서를 위한 구조 및 방법 - Google Patents

고성능 추측 실행 프로세서를 위한 구조 및 방법 Download PDF

Info

Publication number
KR19980702203A
KR19980702203A KR1019970705598A KR19970705598A KR19980702203A KR 19980702203 A KR19980702203 A KR 19980702203A KR 1019970705598 A KR1019970705598 A KR 1019970705598A KR 19970705598 A KR19970705598 A KR 19970705598A KR 19980702203 A KR19980702203 A KR 19980702203A
Authority
KR
South Korea
Prior art keywords
instruction
signal
command
execution
data
Prior art date
Application number
KR1019970705598A
Other languages
English (en)
Other versions
KR100425805B1 (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 KR19980702203A publication Critical patent/KR19980702203A/ko
Application granted granted Critical
Publication of KR100425805B1 publication Critical patent/KR100425805B1/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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1405Saving, restoring, recovering or retrying at machine instruction level
    • G06F11/1407Checkpointing the instruction stream
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative 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/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
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3865Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Retry When Errors Occur (AREA)

Abstract

본 발명의 중앙 처리 장치(CPU)(51)와 같은 고성능 프로세서는, 설명된 다수의 특징 및 기능을 제공하는 구조 및 방법을 제공한다. 이 구조 및 방법은 (1)정규 상태를 유지하면서 로드/기억 명령을 포함하는 긴 대기시간 명령을 능동적으로 스케줄링하기 위한 구조 및 방법, (2)정규 상태를 유지하기 위해 상태를 트래킹하기 위한 구조 및 방법, (3)정규 상태를 유지하기 위해 명령을 체크포인트 처리하기 위한 구조 및 방법, (4)타임아웃 체크포인트를 형성하고 유지하며 이용하기 위한 구조 및 방법, (5)부동소수점 예외를 트래킹하는 구조 및 방법, (6) 리네임가능한 트랩 스택을 형성하고 유지하며 이용하기 위한 구조 및 방법, (7) 다수의 동시에 발생된 미결정 분기 평가를 위해 워치포인트를 형성하고 유지하며 이용하기 위한 구조 및 방법, (8)정규 상태를 유지하기 위해 명령 상태를 트래킹하기 위한 구조 및 방법, 및 (9)정규 상태를 유지하면서 프로세서 처리량을 증가시키기 위한 구조 및 방법을 포함하며, 본 발명은 이에 의해 제한되지 않는다.

Description

고성능 추측 실행 프로세서를 위한 구조 및 방법
관련 출원
본 출원은 1995년 3월 3일에, 발명자 Gene W. Shen 등에 의해 PROCESSOR STRUCTURE AND METHOD FOR TRACKING INSTRUCTION STATUS TO MAINTAIN PRECISE STATE이란 명칭으로 출원된, 미국 특허 출원 대리인 번호 제A-60625-1/JAS호, 미국 특허 출원 제08/392,299호의 연속 출원이며; 이 출원은 1995년 2월 14일에 발명자 Gene W. Shen 등에 의해 PROCESSOR STRUCTURE AND METHOD FOR TRACKING INSTRUCTION STATUS TO MAINTAIN PRECISE STATE이란 명칭으로 출원된, 미국 특허 출원 대리인 번호 제A-60625/JAS호, 미국 특허 출원 제08/390,885호의 연속 출원이다.
1995년 2월 14일에, 발명자 Takeshi Kitahara 에 의해 INSTRUCTION FLOW CONTROL CIRCUIT FOR SUPERSCALER MICROPROCESSOR이란 명칭으로 출원된, 미국 특허 출원 대리인 번호 제1706호인 미국 특허 출원 제08/388,602호; 1995년 2월 14일에, 발명자 Michael Simone 및 Michael Shebanow에 의해 ADDRESSING METHOD FOR EXECUTING LOAD INSTRUCTIONS OUT OF ORDER WITH RESPECT TO STORE INSTRUCTIONS이란 명칭으로 출원된, 미국 특허 출원 대리인 번호 제1693호인 미국 특허 출원 제08/388,389호; 1995년 2월 14일에, 발명자 DeForest Tovey, Michael Shebanow, 및 John Gmuender에 의해 METHOD AND APPARATUS FOR EFFICIENTLY WRITING RESULTS TO RENAMED REGISTERS이란 명칭으로 출원된, 미국 특허 출원 대리인 번호 제1707호인 미국 특허 출원 제08/388,606호; 및 1995년 2월 14일에, 발명자 DeForest Tovey, Michael Shebanow, 및 John Gmuender에 의해 METHOD AND APPARATUS FOR COORDINATING THE USE OF PHYSICAL REGISTERS IN A MICROPROCESSOR이란 명칭으로 출원된, 미국 특허 출원 대리인 번호 제1741호인 미국 특허 출원 제388,364호는 그 전체가 참조로 본 명세서에 각각 통합되어 있다.
1995년 2월 14일에, 발명자 Gene W. Shen, John Szeto, Niteen A. Patkar 및 Michael C. Shebanow에 의해 PROCESSOR STRUCTURE AND METHOD FOR TRACKING INSTRUCTION STATUS TO MAINTAIN PRECISE STATE이란 명칭으로 출원된 미국 특허 출원 제08/390,885호; 1995년 3월 3일에, 발명자 Gene W. Shen, John Szeto, Niteen A. Patar 및 Michael C. Shebanow에 의해 PROCESSOR STRUCTURE AND METHOD FOR TRACKING INSTRUCTION STATUS TO MAINTAIN PRECISE STATE이란 명칭으로 출원된 미국 특허 출원 제08/398,299호; 1995년 3월 3일에, 발명자 Chih-Wei David Chang, Kioumars Caeallu, Joel F. Boney, Ming-Ying Li, 및 Jen-Hong Charles Chen에 의해 PARALLEL ACCESS MICRO-TLB TO SPEED UP ADDRESS TRANSLATION이란 명칭으로 출원된 미국 특허 출원 제08/397,810호; 1995년 3월 3일에, 발명자 Leon Kuo-Liang Peng, Yolin Lih 및, Chih-Wei David Chang에 의해 LOOKASIDE BUFFER FOR ADDRESS TRANSLATION IN A COMPUTER SYSTEM이란 명칭으로 출원된 미국 특허 출원 제08,397,809호; 1995년 3월 3일에, 발명자 Michael C. Shebanow, Gene W. Shen, Ravi Swami, 및 Niteen Patkar에 의해 RECLAMATION OF PROCESSOR RESOURCES IN A DATA PROCESSOR이란 명칭으로 출원된 미국 특허 출원 제08/397,893호; 및 1995년 3월 3일에, 발명자 Michael C. Shebanow, John Gmuender, Michael A. Simone, John R.F.S. Szeto, Takumi Maruyama, 및 DeForest W. Tovey에 의해 METHOD AND APPARATUS FOR SELECTING INSTRUCTIONS FORM ONES READY TO EXECUTE이란 명칭으로 출원된 미국 특허 제08/397,891호; 1995년 3월 3일에, 발명자 Shalesh Thusoo, Farnad Sajjadian, Jaspal Kohli 및 Niteen Patkar에 의해 HARDWARE SUPPORT FOR FAST SOFTWARE EMULATION OF UNIMPLEMENTED INSTRUCTIONS이란 명칭으로 출원된 미국 특허 제08/397,911호; 1995년 3월 3일에, 발명자 Akiro Katsuno, Sunil Savkar 및 Michael C. Shebanow에 의해 METHOD AND APPARATUS FOR ACCELERATING CONTROL TRANSFER RETURNS이란 명칭으로 출원된 미국 특허 출원 제08/398,284호; 1995년 3월 3일에, 발명자 Akira Katsuno, Niteen A. Patkar, Sunil Savkar 및 Michael C. Shebanow에 의해 METHODS FOR UPDATING FETCH PROGRAM COUNTER이란 명칭으로 출원된 미국 특허 출원 제08/398,066호; 1995년 3월 3일에, 발명자 Chih-Wei David Chang, Joel Fredrick Boney, 및 Jaspal Kohil에 의해 METHOD AND APPARATUS FOR PRIORITIZING AND HANDLING ERRORS IN A COMPUTER SYSTEM이란 명칭으로 출원된 미국 특허 출원 제08/397,910호; 1995년 3월 3일에, 발명자 Michael Simone에 의해 METHOD AND APPARATUS FOR GENERATING A ZERO BIT STATUS FLAG IN A MICROPROCESSOR이란 명칭으로 출원된 미국 특허 제08/397,800호; 및 1995년 3월 3일에, 발명자 Chien Chen 및 Yizhi Lu에 의해 ECC PROTECTED MEMORY ORGANIZATION WITH PIPELINED READ-MODIFY-WRITE ACCESS이란 명칭으로 출원된 미국 특허 출원 제08.397,912호는 참조로 그 전체가 본 명세서에 각각 통합되어 있다.
1995년 6월 1일에 발명자 Sunil Savkar, Michael C. Shebanow, Gene W. Shen, 및 Farnad Sajjadian에 의해 METHOD AND APPARATUS FOR ROTATING ACTIVE INSTRUCTIONS IN A PARALLEL DATA PROCESSOR이란 명칭으로 출원된 미국 출원 번호제 호; 1995년 6월 1일에, 발명자 Sunil Savkar, Michael C. Shebanow, Gene W. Shen, 및 Farnad Sajjadian에 의해 PROGRAMMABLE INSTRUCTION TRAP SYSTEM AND METHOD이란 명칭으로 출원된 미국 출원 번호 제 호가 참조로 그 전체가 본 명세서에 통합되어 있다.
1995년 6월 7일에, 발명자 Gene W. Shen, John Szeto, Niteen A. Patkar, 및 Michael C. Shebanow에 의해 PROCESSOR STRUCTURE AND METHOD FOR TRACKING INSTRUCTION STATUS TO MAINTAIN PRECISE STATE이란 명칭으로 출원된, 대리인 번호 제A-60624/JAS호, 미국 특허 출원 제08/487,801호; 1995년 6월 7일에, 발명자 Gene W. Shen, John Szeto, Niteen A. Patkar, Michael C. Shebanow 및 Michael A. Simone에 의해 PROCESSOR STRUCTURE AND METHOD FOR AGGRESSIVELY SCHEDULING LONG LATENCY INSTRUCTIONS INCLUDING LOAD/STORE INSTRUCTIONS WHILE MAINTAINING PRECISE STATE이란 명칭으로 출원된, 대리인 번호 제A-60622/JAS호, 미국 특허 출원 제08/478,025호; 1995년 6월 7일에, 발명자 Gene W.Shen, John Szeto, Niteen A. Patkar, 및 Michael C. Sheganow에 의해 PROCESSOR STRUCTURE AND METHOD FOR MAINTAINING AND RESTORING PRECISE STATE AT ANY INSTRUCTION BOUNDARY이란 명칭으로 출원된, 대리인 번호 제A-60623/JAS호, 미국 특허 출원 제08/483,958호; 1995년 6월 7일에, 발명자 Gene W. Shen, John Szeto, Niteen A. Patkar 및 Michael C. Shebanow에 의해 PROCESSOR STRUCTURE AND METHOD FOR CHECKPOINTING INSTRUCTIONS TO MAINTAIN PRECISE STATE이란 명칭으로 출원된, 대리인 번호 제A-60625-2/JAS호, 미국 특허 출원 제08/467,419호; 1995년 6월 7일에, 발명자 Gene W.Shen, John Szeto, Niteen A. Patkar, 및 Michael C. Sheganow에 의해 PROCESSOR STRUCTURE AND METHOD FOR A TIME-OUT CHECKPOINT이란 명칭으로 출원된 대리인 번호 제A-60647/JAS호, 미국 특허 출원 제08/473,223호; 1995년 6월 7일에 발명자 Gene W. Shen, John Szeto, 및 Michael C. Shebanow에 의해 PROCESSOR STRUCTURE AND METHOD FOR TRACKING FLOATING-POINT EXCEPTIONS이란 명칭으로 출원된 대리인 번호 제A-60648/JAS, 미국 특허 출원 제08/484,795호; 1995년 6월 7일에 발명자 Hideki Osone 및 Michael C. Shebanow에 의해 PROCESSOR STRUCTURE AND METHOD FOR RENAMABLE TRAP-STACK이란 명칭으로 출원된 대리인 번호 제A-60649/JAS호, 미국 특허 출원 제08/472,394호 및, 1995년 6월 7일에, 발명자 Gene W.Shen, Michael C. Sheganow, Hideki Osone 및 Takumi Maruyama에 의해 출원된 대리인 번호 제A-60682/JAS호 및 미국 특허 출원 제08/482,073호가 참조로 본 명세서에 그 전체가 각각 통합되어 있다.
프로세서에 있어서, 제어 흐름 명령(분기 명령), 메모리 트랜잭션에 기인한 대기시간 및, 복수의 사이클 동작을 필요로하는 명령은 버블(bubbles)을 파이프라인으로 유도하기 때문에 종종 프로세서가 최상의 명령 실행 대역폭을 유지하는 것을 방해한다. 성능을 향상시키기 위해, 추측 비순위 명령의 실행을 구현함으로써 성능이 개선될 수 있다. 통상적으로, 명령에 의한 중간 결과가 순차 명령에 대해 허용가능하지 않는 경우, 프로세서는 실행을 중단하거나, 또는 중간 결과가 허용가능할때까지 정지(stall)한다.
추측 실행 및 비순위 실행인 2개의 기술은, 최신 프로세서에서 높은 실행 대역폭을 유지하는데 도움이 된다. 추측 실행은, 적절한 분기를 선택하기 위한 이전 처리 단계로부터의 정보 없이 분기가 걸릴 경우, 예측이 행해지고 명령 디스패치 및 실행을 이 예측에 기초하여 처리하는 공지된 기술이다. 만일 차후에 이 예측이 부정확하다고 판명되면, 잘못 예측된 명령 시퀀스는 분기 예측 오류 복구(branch mispredict recovery)를 이용하여 원상태로 되어야 한다. 추측 실행은 또한, 프로세서가 명령을 계속적으로 이슈하고 실행할 수 있도록 한다. 공지된 예측 설계안은 성능을 개선시키기 위해 잘못 예측된 실행의 발생 빈도를 최소화한다. 그러나, 추측 머신에 있어서 정규 상태를 유지하는 것이 복잡해지며, 바람직하지 않은 오버헤드를 초래한다. 비순위 실행은, 메모리와 복수 사이클 명령 대기시간을 드러내지 않는 기술이다. 비순위 실행을 구현하는 프로세서에서, 명령은 순차적인 순서가 아닌 다른 순서로 동적으로 재배열되고 실행되어 허용가능한 명령 레벨 병렬성을 나타낸다.
정규 예외(precise exception) 모델은 예외 상태를 분석하는 소프트웨어를 단순화하기 위한 중요한 특징으로 나타나지만, 정규 예외의 유지는 추측 비순위 실행을 구현하는 머신을 복잡하게 한다. 머신 상태는 일반적으로 프로세서 특정적이며, 아키텍쳐 상태는 모든 제어/상태 레지스터, 데이타 레지스터 및 어드레스 레지스터와, 모든 외부 메모리 상태를 포함한다. 예컨대, SPARC-V9 제어/상태 레지스터는 SPARC-V9 아키텍쳐 메뉴얼의 29-30쪽에 기재되어 있다. 이는 어떤 소프트웨어 및 소프트웨어 프로그래머인지를 보여준다. 머신 상태는 프로세서 특정적이며 이 머신의 상태에 대한 것을 제외한 모든 것을 포함하는 아키텍쳐 상태의 표면상의 설정이다. 잘못된 명령은 예외를 발생시키는 명령이다. 예외는 프로세서가 실행되기 전에 예외를 발생시키는 상황을 정지시키거나 판단하도록 알리는 어떤 상황이나 상태이다. 예외가 에러 상태가 되어야 할 필요는 없으며, 예컨대 인터럽트를 포함한다. 실행 트랩은 예외로부터 이슈될 수 있다. 정규 예외 모델을 구현하는 프로세서에서, 오류나 예외는 아키텍쳐 상태를 수정하지 않는다. 아키텍쳐 상태는 잘못된 명령 전의 모든 명령에 대해서 수정되어지지만, 아키텍쳐 상태는 잘못된 명령 다음의 명령에 대해서는 수정되지 않는다. 정규 예외 모델이 제공되지 않을 경우, 소프트웨어가 잘못된 명령을 식별해야만 하며, 그런 다음 잘못된 명령을 다시 판단하는 것, 잘못된 명령을 바이패스시키는 것 및 다음 명령을 실행하는 것중 하나에 대한 재시도 지점을 계산해 낸다.
짧게 파이프라인된 단일-이슈 머신을 위한 정규 상태 유지 기술이 공지되어 있다. 일반적으로, 짧게 파이프라인된 머신은 상태가 수정되는, 명령의 인출, 이슈, 실행 및 재기록 스테이지로 구성된 대략 4개 또는 5개의 스테이지보다 작은 스테이지를 갖는다. 단일-이슈 실행은 예외 및 오류 예측의 경우에, 파이프라인 스테이지에서의 명령이 플러쉬되는 것에 대한 우려 없이 파이프라인이 클리어될 수 있기 때문에 복구를 간단하게 한다. 이러한 통상적인 기술에서, 발생될 수 있는 모든 예외는 아키텍쳐 상태를 수정하기 전에 검출된다. 예외가 검출되면, 파이프라인에 있어서의 명령은 플러쉬되며, 아키텍쳐 상태에 대한 데이타, 상태, 결과의 모든 재기록은 아키텍쳐 상태의 수정을 방지하도록 의도적으로 차단된다.
추측 비순위 슈퍼스칼라(다중-이슈) 구현에 있어서, 규정 상태를 유지하는 것은 단일-이슈 머신에 대해서보다 훨씬 더 어렵다. 이러한 추측 비순위 머신에 있어서, 에러를 발생시키는 명령은 추측적으로 실행되며, 오류가 검출된 후 발생하는 모든 아키텍쳐 상태 수정을 원상태로 되돌리기 위한 방법 및 구조가 반드시 제공되어야 한다. 또한, 예외는 일반적으로 프로그램 순서와 다른 순서로 검출될 수 있다. 따라서, 비순위 프로세서는 예외를 해독하고 명령이 완료하도록(및 아키텍쳐 상태를 수정하도록) 허용되어야 하는지를 그리고, 명령이 원상태로 복구되어야 하는지를 판단할 수 있어야 한다.
도 1은 추측 프로세서에서 규정 상태를 유지하기 위해 재배열 버퍼를 사용하는 통상적인 접근법을 도시한다. 재배열 버퍼는 머신 상태가 명령 실행 완료의 결과로서 수정될때 명령 실행 완료(그 결과가 이용가능할때)와 시간 사이에서 시간 지연을 효과적으로 유도하는 선입선출 스택에 의해 구현된다. 규정 상태는 잘못 예측된 분기 명령, 실행, 예외등과 같은 상태가 메모리로 재기록되는 것을 방지함으로써 유지된다. 규정 상태는 명령이 여전히 추측적인 경우, 잘못 예측된 추측 실행을 원상태로 되돌리도록 상태를 복구시키는 것에 의해서 보다는 상태 수정을 금지시킴으로써 유지된다.
도 2는 추측 프로세서에서, 명령을 실행하기 전에, 체크포인트에서 상태를 기억한 다음, 기억된 체크포인트 정보로부터 상태를 복구함으로써 규정 상태를 유지하는 통상적인 접근법을 나타낸다. 통상적인 체크포인트 처리에서, 머신 상태의 수정을 발생시킬 수 있는, 모든 추측적으로 실행된 명령은 체크포인트된다. 각 프로세서는 예컨대, 머신의 상태를 규정하는, 모든 제어/상태 레지스터, 데이타 레지스터 값등을 포함하는 일련의 상태 파라미터를 갖는다. 이전의 머신 상태를 복구하기 위해 상태 규정 파라미터는 필요한 경우 복구될 수 있도록 기억되어야 한다. 통상적인 체크포인트 처리에서, 모든 상태 규정 파라미터는 일반적으로 상태 규정 파라미터중 어느 하나를 수정할 수 있는 모든 명령을 위해 기억된다. 모든 체크포인트된 명령에 대해, 통상적인 체크포인트 처리는 실행되려고 하는 특정 명령에 의해 수정될 수 있는 상태만을 제외하고 체크포인트된 명령의 어느 하나에 의해 변화될 수 있는 모든 상태 정보를 기억한다. 예컨대, 머신 상태를 규정하기 위해 100개의 상태 파라미터를 요구하는 머신에서, 만일 명령 X의 실행이 제어/상태 레지스터 하나만을 수정할 수 있으면, 이 명령의 실행은 이 명령에 의해 수정될 수 있는 그 하나만을 제외하고 여전히 100개의 상태 파라미터를 기억할 것을 요구한다.
도 3은 임의의 특정 머신 또는 CPU을 위한 실제 체크포인트 데이타를 한정하지 않고 나타내기 위해, 명령 및 통상적인 체크포인트의 예시적인 시퀀스의 구조 및 콘텐트를 개략적인 방식으로 도시한다. 통상적인 체크포인트는 고정된 사이즈를 가지기 때문에, 각각의 체크포인트는 특정 명령에 의해 실제로 수정된 상태와 비교하여 비교적 큰 사이즈를 가져야 함을 알 수 있다. 통상적인 체크포인트 처리가 사용하는 복구는 오류의 또는 잘못 예측된 추측 명령 이전의 가장 근접해 있는, 기억된 체크포인트를 이용하여 상태를 원상태로 되돌리는 단계, 프로그램 카운터를 체크포인트 명령의 바로 직후로 백업하는 단계, 및 체크포인트된 명령의 전방에 있는 명령으로부터 다시 실행하는 단계를 포함한다.
체크포인트 처리, 재배열 버퍼, 히스토리 버퍼 및, 미결정 파일의 사용은 어떤 환경에서 비순위 실행을 관리하고 정규 상태를 유지하기 위한 방법으로서 개시되어 있다. 임의의 명령 경계가 아닌 체크포인트 경계에서 머신 상태의 복구를 허용하는 통상적인 체크포인트 처리가 HwU 및 Patt에 의해 제시되어 있다(W. Hwu and Y.N. Patt, Checkpoint Repair for High Performance Out-of-order Execution Machines Proceedings of the 14th Annual Symposium on Computer Architecture,(1987년 6월), pp.18-26). 파이프라인된 RISC 프로세서에서 정규 인터럽트를 구현하는 방법은 Wang 및 Emnett(Implementing Precise Interruptions in Pipelined RISC Processors, IEEE Micro, August 1993, pp.36-43)에 의해 제시되어 있다. 파이프라인된 프로세서에서 정규 인터럽트를 구현하는 방법은 Smith 및 Pleszkun(J.E. Smith and A.R. Pleszkun, Implementation of Precise Interrupts in Pipelined Processors., Proceedings of the 12th Annual International Symposium on Computer Architecture,(June 1985), pp.36-44)에 의해 제시되어 있다. 고성능 슈퍼스칼라 마이크로프로세서를 설계하는 통상적인 기술의 개요가 Mike Johnson에 의해 개시되어 있다(M. Johnson[a.k.a. William Johnson],Superscalar Microprocessor Design, Prentice-Hall, Inc., Englewood Cliffs, New Jersey 07632, 1991, ISBN 0-13-875634-1.). 이들 참조문 각각은 그 전체가 참조로 여기에 통합되어 있다.
이들 기술의 적어도 몇개가 성능을 개선시키더라도, 이들은 추측의 정도를 제한하거나, 명령 레벨의 머신 상태 복구가 아닌 단지 질이 낮은 머신 상태 복구를 제공하기 때문에 완전히 만족스럽지 않다. 통상적인 재배열 버퍼 기술은 재배열 버퍼 길이가 지원되는 추측의 정도(degree)에 관해서 선형적이기 때문에, 추측의 정도를 제한한다. 즉, 복구될 수 있는 각 명령에 대해 명령 실행 결과는 재배열 버퍼에 기억되어야 한다. 예컨대, 만일 머신이 64개의 발행할 잠재적인 추측 명령을 허용하면, 재배열 버퍼는 결과를 기억하기 위한 적어도 64개의 위치를 포함해야 한다. 통상적인 체크포인트 처리에서, 체크포인트된 체크포인트의 수는 통상적으로 머신에서의 이슈된 명령의 수보다 적지만, 각 체크포인트에서 기억된 데이타(매번 머신의 전체 상태)의 량은 매우 크다. 체크포인트 기억 장치는 프로세서 칩 기판 영역 상에 부담을 지운다. 이상적으로, 규정 상태를 유지하기 위한 설계안은 현재 이슈된 추측 명령의 많은 수에 대해 선형적인 또는 낮은 순서의 관계(예컨대 대수적으로)로 평가가능해야 한다. 재배열 버퍼 엔트리 기억 장치의 영역은 데이타를 기억하기 위해 충분한 폭을 가져야 하며, 이들 기술은 또한 모든 엔트리에 대한 관련 룩업을 필요로 한다. 이는 매우 큰 재배열 버퍼에 대해 어려울 수 있다.
더욱이, 규정 상태를 기억하기 위한 통상적인 방법은 어떤 상황에서는 완전하지 않다. 예컨대, 추측 분기의 결과로서 실행된 명령이 외부 덤(dumb) 디바이스의 상태를 수정하는 경우, 상태의 복구는 통상적으로 외부 디바이스에 대한 수정이 발생하는 시점 이전의 체크포인트 경계에서 상태를 복구하는 것을 수반하며, 그런 다음 외부 디바이스를 수정하는 명령을 포함하는 비오류 명령의 재실행을 진행시킨다. 이러한 재실행의 경우에, 잘못된 명령만이 외부 디바이스의 상태에서의 변화의 결과를 원상태로 되돌리지 않으며, 상태가 복구되는 지점과 잘못된 명령 사이의 비오류 명령의 재실행은 또한 문제를 발생시킨다.
통상적인 체크포인트 처리는 분기 예측 오류 또는 실행 에러로부터 복구하기 위해 명령 스트림의 서로다른 지점의 제한된 수에서 머신 상태를 세이브하고 체크포인트된 아키텍쳐 상태를 복구한다. 통상적인 체크포인트 처리는 각각의 명령을 체크포인트하지 않는다. 통상적인 체크포인트 처리는 체크포인트 경계, 즉 체크포인트가 명령에 대해 완료될때에서만 머신 상태를 복구할 수 있다. 오류 또는 실행 에러가 발생하면, 체크포인트된 상태는 공지된 기술에 의해 복구되며, 이것에 의해, 체크포인트에 이어서 발생하는 모든 명령을 실제로 복구함으로써, 잘못된 명령(들)을 포함한다. 그런 다음 명령은 전방으로 예컨대, 단일-이슈 모드에서는 체크포인트된 명령으로부터 잘못된 명령에 도달할때까지 연속적으로 재실행된다.
이 통상적인 체크포인트 처리 기술은 추측 실행을 허용하지만, 이는 많은 면에서 바람직하지 않다. 예컨대, 이는 확실한 실행 복구를 제공하지 않는다. 간헐적인 에러에 있어서, 예외를 야기하는 명령 전에, 체크포인트에 대한 머신의 통상적인 백업과, 체크포인트 다음의 명령의 재실행은 명확한 동작을 달성하지 못할 수 있으며, 재실행된 명령의 변경된 상태를 잘못 전달함으로써 머신 상태의 붕괴를 악화시킬 수 있다. 통상적인 체크포인트 처리 및 머신 백업 과정은 명령 재실행을 최소화하도록 시도하지 않는다. 더욱이, 하드웨어 고장 및 머신 타임아웃과 같은 치명적인 머신 에러가 만일 복구된 체크포인트된 명령과 예외를 발생시키는 명령 사이의 모든 명령이 재실행되면, 프로세서를 교착 상태에 빠지게 할 수 있다.
통상적인 재배열 버퍼는 소정의 사이즈의 선입선출(FIFO) 메모리 구조인 재배열 버퍼에서의 추측 명령을 관리한다. 명령이 실행을 완료하면, 이 실행으로부터 발생되는 데이타값은 재배열 버퍼에 기록되며, 데이타값은 버퍼를 통하여 이동하여 최상부에서 나타나면, 재배열 버퍼로부터 레지스터 파일로 기록된다. 재배열 버퍼의 사이즈가 명령 실행 완료와 아키텍쳐 상태의 영구적인 수정 사이의 지연을 실제로 규정한다. 데이타값이 레지스터에 기록되면, 이들은 복구될 수 없다. 관련 룩업(Associative lookup) 즉, 재배열 버퍼의 엔트리가 레지스터 파일의 엔트리와 결합되도록 하는 처리는 M.Johnson의Superscalar Microprocessor Design의 49쪽et seq에 개시되어 있다.
재배열 버퍼 설계안은 적어도 3가지의 제한을 갖는다. 첫번째로, 통상적인 재배열 버퍼 설계안에서, 명령 실행의 결과만이 재배열 버퍼에 세이브되며, 프로그램 카운터(PC) 값은 세이브되지 않는다. 그러므로, 재배열 버퍼를 사용한, 모든 분기 예측 오류 복구는 PC 재구성, 명령 인출 및 명령 이슈의 추가적인 단계를 요구한다. 따라서, 재배열 버퍼를 사용한 분기 예측 오류으로부터의 통상적인 복구는 지연된다.
두번째로, 재배열 버퍼는 일반적으로 명령의 제한된 믹스의 추측 실행만을 허용한다. 예컨대, 명령 이슈 스테이지 동안 검출된 트랩(이슈 트랩)은 일반적으로 제어 레지스터 갱신을 수반하기 때문에 재배열 버퍼를 사용하여 추측 실행될 수 없다. 재배열 버퍼 기술은 제어 레지스터 갱신을 수반하는 명령의 추측 실행을 지원하지 않는다. 확실한 명령 세트 아키텍쳐에서의 이슈 트랩(예컨대, Sun Microsystems의 SPARC 아키텍쳐에서의 스필/필(spill/fill) 트랩)에 추측으로 진입하게 하지 못함으로써 상당한 성능 제한을 가져올 수 있다.
3번째로, 재배열 버퍼 사이즈는 일반적으로 프로세서에서 허용하는 이슈된 명령의 수의 직접 선형 함수이다. 예컨대, 64개의 이슈된 명령을 허용하는 프로세서에서, 64개의 엔트리를 갖는 재배열 버퍼가 요구될 것이다. 프로세서 내에서 다수의 버퍼 레지스터를 배치하는 것은 매우 큰 활성화된 명령 윈도우 즉, 동시에 이슈된 비교적 큰 수의 명령은 명령 레벨 병렬성의 개선된 추출을 허용하는 데이타플로우 프로세서에서 금지될 수 있다. 데이타플로우 프로세서는 명령 실행의 순서가 통상적인 넌-데이타 플로우 프로세서에서와 같이 프로그램 카운터를 인크리먼트하는 것에 기초하지 않고 오퍼랜드 또는 데이타 가용성에 의해 결정되는 프로세서이다.
미결정 파일은 재배열 버퍼에서의 관련 룩업 문제점을 회피한 재배열 버퍼의 수정 기술이다. 미결정 파일은 M.Johnson에 의한Superscalar Microprocessor Design의 94-95쪽에 개시되어 있다. 히스토리 버퍼는 파이프라인된 스칼라 프로세서에서의 정규 인터럽트를 비순위 완료로 구현하기 위해 제안된 방법 및 구조이며 M.Johnson에 의한Superscalar Microprocessor Design의 91-92쪽에 개시되어 있다.
참조로 여기에 명백하게 그 전체가 통합된 D.Weaver 및 GerMond, Englewood Cliffs에 의한 The SPARC Architecture Manual 9판(1994)은 비순위 추측 실행 프로세서의 특정 형태를 개시한다. SPARC V9 아키텍쳐는 부동소수점 상태 레지스터(FSR)를 필요로 한다. FSR은 FSR_accrued_exception(FSR.aexc) 필드, FSR_current_exception(FSR.cexc) 필드 및 FSR_floating_point_trap_type(FSR.ftt) 필드의 3개의 필드를 포함하는데, 이러한 필드는 부동소수점 예외가 발생하면 갱신되고 부동소수점 예외에 의해 발생되는 트랩을 처리하기 위한 트랩 처리 루틴에 의해 이용된다. 명령이 프로그램 순서와 다른 순서로 실행하고 완료하기 때문에 비순위 추측 프로세서에 있어서는 이들 필드의 갱신이 어렵다. 만일 명령이 프로그램 순서로 이슈되고 실행되면 이들 필드는 갱신되거나 갱신될 수 있도록 제공될 필요가 없기 때문에, 장치 및 대응하는 방법은 이들 예외를 트래킹하고 FSR 레지스터를 정확하게 갱신하기 위해 요구된다.
명령을 추측적으로 실행할 수 있는 데이타 프로세서에 대해, 분기 지시(수취 또는 비수취) 또는 분기 어드레스(타겟 어드레스 또는 분기 명령 다음의 어드레스)는 결정되기 전에 예측될 수 있다. 나중에, 이들 예측이 틀린 것으로 판정되면, 프로세서는 이전 상태로 백업하고 정확한 분기 스트림의 명령을 실행하는 것을 재개시한다. 그러나, 시장에서 구입 가능한 대부분의 슈퍼스칼라 프로세서는 분기 예측이 정확한지를 사이클당 하나의 분기만을 평가할 수 있다. 그러나, 다수의 예측된 분기가 종종 한 사이클에서 평가되는 것이 가능하다. 따라서, 그렇지 않은 경우에, 실행될 수 있는 분기 평가는 지연될 필요가 있다. 분기 평가를 지연함으로써 프로세서 성능에 상당한 영향을 미친다.
또한, 통상적인 추측 실행 프로세서에서, 트랩이 발생하면, 프로세서는 예측된 분기가 트랩이 실제하고 추측적이지 않음을 확실히 결정할때까지 대기해야 한다. 프로세서가 트랩이 실제임을 확인하는 가장 빠른 방법은 트랩을 수취하기 전에 프로세서를 동기화시키는(즉, 트랩 상태가 발생하기 전에 이슈된 모든 명령을 실행하고 완료하는) 것이다. 그러나, 자주 발생하는 트랩에 대해 상기와 같이 처리하면, 프로세서의 성능이 저하된다. 이는 특히 스필/필 이슈 트랩 및 소프트웨어 트랩(Tcc 명령)이 종종 발생하는 SPARC-V9 아키텍쳐에 있어서 명백하다. 이 문제점은 프로세서의 성능을 향상시키기 위해 해결될 필요가 있다.
본 발명은 추측 비순위 실행 프로세서의 정규 상태를 유지하면서 프로세서 성능을 개선하는 장치, 시스템 및 방법에 관한 것이다.
도 1은 추측 프로세서의 정규 상태를 유지하기 위한 재배열 버퍼를 사용한 통상적인 접근법을 나타낸다.
도 2는 명령을 실행하기 전에 체크포인트의 상태를 기억하고 나중에 기억된 체크포인트 정보로부터의 상태를 복구함으로써 추측 프로세서의 정규 상태를 유지하는 통상적인 접근법을 나타낸다.
도 3은 임의의 특정 머신을 실제 체크포인트 데이타를 나타내는 것이 아닌 설명할 목적으로, 명령 및 통상적인 체크포인트의 예시적인 시퀀스의 구조 및 콘텐트를 개략적인 방식으로 도시한다.
도 4는 중앙 처리 장치를 포함하는 본 발명의 데이타 프로세서의 일실시예의 상위 레벨 기능 블록도이다.
도 5는 몇개의 통상적인 명령 타입의 신규한 명령 파이프라인의 일실시예의 스테이지를 나타내는 도면이다.
도 6은 명령 프리패치와 캐시 유닛 및 인출 유닛을 포함하는 본 발명의 CPU의 예시적인 분기 블록(BRB)을 나타내는 도면이다.
도 7은 이슈 유닛(ISU), 정규 상태 유닛(PSU), 프리리스트 유닛, 및 제어 레지스터 파일을 포함하는 예시적인 이슈 블록(ISB)을 나타내는 도면이다.
도 8은 레지스터 리네임 프리리스트 유닛으로부터 이슈 유닛에 의해 수신되고, 본 발명의 레지스터 리네임 처리를 구현하는데 이용되는 예시적인 신호를 나타내는 도면.
도 9는 정규 상태 유닛(PSU)의 실시예를 나타내는 도면.
도 10은 이슈/커미트/리클레임 유닛(ICRU)의 실시예의 구성 요소의 기능 블록도 및 그 동작과 관련된 입력 및 출력 신호를 나타내는 도면.
도 11은 명령 상태 정보 및, 데이타 구조에 기억된 예시적인 데이타의 제1 세트와 관련된 다양한 포인터를 기억하기 위한 활성 명령 데이타 구조 및 메모리 명령 데이타 구조의 실시예를 개략적으로 나타내는 도면.
도 12는 A-링 비트 세트/클리어 로직의 몇개의 구조적 구성성분을 포함하는 예시적인 상태 제어 로직 유닛을 나타내는 도면.
도 13은 상태를 트래킹하고 정규 상태를 유지하기 위해 명령 태그를 사용하는 본 발명의 방법의 실시예의 플로우 챠트이다.
도 14는 정규 상태를 유지하기 위해 명령 상태를 트래킹하기 위한 본 발명의 방법의 실시예의 개략적인 플로우 챠트이다.
도 15는 정규 상태를 유지하기 위해 명령을 트래킹하기 위한 본 발명의 방법의 실시예에 따라, 활성 명령 링 및 메모리 명령 링에 상태 정보를 기록하기 위한 방법의 플로우 챠트이다.
도 16은 물리적 레지스터를 포함하는 물리적 레지스터 파일을 구비하는, 레지스터 파일 및 리네임 유닛(RFRN)의 실시예를 나타내는 도면이다.
도 17은 레지스터 리네임 처리와 관련된 제어 레지스터 파일의 실시예를 나타내는 도면이다.
도 18은 자원 리클레임 파일(RRF)의 실시예를 나타내는 도면이다.
도 19는 본 발명의 레지스터 리네임 처리 방법을 나타내는 도면이다.
도 20은 명령 이슈, 비활성화, 커미트 및 리타이어먼트를 포함하는 정규 상태를 유지하는 본 발명의 방법의 실시예의 개략적인 플로우 챠트이다.
도 21은 데이타 구조 내에 기억된 예시적인 데이타의 제2 세트와 관련된 명령 상태 정보 및 다양한 포인터를 기억하기 위한 활성 명령 데이타 구조 및 메모리 명령 데이타 구조의 실시예의 개략적인 플로우 챠트이다.
도 22는 CPU의 데이타 전송 블록 내의 로드/기억 유닛(LSU)의 기능 블록도이다.
도 23은 정규 상태를 유지하면서, 로드/기억 명령을 포함하는 긴 대기시간 명령을 능동적으로 스케줄링하기 위한 본 발명의 방법의 실시예의 플로우 챠트이다.
도 24는 체크포인트 유닛의 기능 블록도이다.
도 25는 워치포인트 유닛의 기능 블록도이다.
도 26은 타임아웃 체크포인트를 형성하기 위한 선택적인 체크포인트 처리의 향상을 포함하는 본 발명의 체크포인트 처리 방법의 실시예의 개략적인 플로우 챠트이다.
도 27은 워치포인트 유닛의 실시예 내의 주요 기능 블록의 기능 블록도이다.
도 28은 조건 코드 획득 로직, 평가 로직, 워치포인트 요소 기억장치 및 제어 유닛 및 타겟 RAM의 특정 실시예를 나타내는 워치포인트 유닛의 실시예를 나타내는 도면이다.
도 29는 현행 매칭 로직, 어레이 매칭 로직 및, 평가 준비 및 평가 조건 코드 로직을 포함하는 조건 코드 선택 로직을 구비한 워치포인트의 실시예의 도시적인 부분을 나타내는 도면이다.
도 30은 분기 예측 및 평가와 관련된 예시적인 타이밍 챠트를 나타내는 도면이다.
도 31은 현행 매칭 로직 및 어레이 매칭 로직의 실시예와 관련된 구조적 상세도이다.
도 32는 조건 코드 선택 로직의 실시예와 관련된 구조적 상세도이다.
도 33은 평가 준비 로직의 실시예와 관련된 구조적 상세도이다.
도 34는 평가 진위 로직의 실시예와 관련된 구조적 상세도이다.
도 35는 TARGET-RAM 및 점프-링크 명령 평가 로직의 실시예와 관련된 구조적 상세도이다.
도 36은 다수의 동시발생적 미결정 분기 평가를 위한 본 발명의 워치포인트 방법의 실시예의 개략적인 플로우 챠트이다.
도 37은 부동소수점 예외(FPEXCEP) 데이타 구조의 실시예를 도식적으로 나타낸 도면이다.
도 38은 예시적인 부동소수점 예외 링 데이타 구조로의 신호 인터페이스를 나타내는 도면이다.
도 39는 RD 및 AEXC 로직을 포함하는 부동소수점 예외 유닛을 나타내는 도면이다.
도 40은 백업 및 백스텝 구성요소를 포함하는 백트래킹 유닛의 실시예를 도식적으로 나타낸 도면이다.
도 41은 백업 및 백스텝 절차를 포함하는 임의의 명령 경계에서 정규 상태를 유지하고 복구하기 위한 본 발명의 방법의 실시예의 도식적인 플로우 챠트이다.
도 42는 레지스터 리네임 파일에서 복구되는, 물리적 레지스터에 대한 논리적 레지스터의 맵핑 방식을 나타내는 도면.
도 43은 명령 경계에 대해 2개의 머신 백스텝에 의해 수반되는 체크포인트 경계로의 단일 머신 백업을 포함하는 머신 백트래킹의 예를 나타내는 도면이다.
도 44는 예시적인 우선순위 로직 및 상태 머신(PLSM)을 나타내는 도면이다.
도 45는 예시적인 트랩 스택 유닛을 나타내는 도면이다.
도 46은 트랩 스택의 기억 요소의 리스트를 기억하기 위한 프리리스트 로직의 실시예를 나타내는 도면이다.
도 47은 예시적인 리네임 맵 로직을 나타내는 도면이다.
도 48은 예시적인 트랩-스택 RRF를 나타내는 도면이다.
도 49는 트랩 스택 체크포인트 기억 유닛을 나타내는 도면이다.
도 50은 워치포인트 WP_ACTIVE_VEC 및 WP_MISPRED 로직을 나타내는 도면이다.
도 51은 트랩 스택 백업 예를 나타내는 도면이다.
도 52은 XICC 기록 로직을 나타내는 도면이다.
도 53은 XICC 획득 로직 및 어레이 최근 매칭 로직을 나타내는 도면이다.
도 54는 조건 코드 대기 로직을 나타내는 도면이다.
발명의 개요
종래의 기술에 있어서의 전술의 문제점은 다수의 특정의 프로세서 특징부 및 기능을 제공하는 구조 및 방법을 포함하는 고성능 프로세서에 관한 본 발명에서 처리된다. 이들 구조 및 방법은 (1)정규 상태를 유지하면서 로드/기억 명령을 포함하는 긴 대기시간의 명령을 능동적으로 스케줄링하기 위한 구조 및 방법, (2)임의의 명령 경계에서 정규 상태를 유지하고 기억하기 위한 구조 및 방법, (3)정규 상태를 유지하기 위해 명령 상태를 트래킹하기 위한 구조 및 방법, (4)정규 상태를 유지하기 위해 명령을 체크포인트 처리하기 위한 구조 및 방법, (5)타임아웃 체크포인트를 형성하고 유지하며 이용하기 위한 구조 및 방법, (6)부동소수점 예외를 트래킹하기 위한 구조 및 방법, (7)리네임가능한 트랩-스택을 형성하고 유지하며 이용하기 위한 구조 및 방법, (8) 복수의 동시의 미결정 분기 평가를 위해 워치포인트를 형성하고 유지하며 이용하기 위한 구조 및 방법, (9)정규 상태를 유지하기 위해 명령 상태를 트래킹하기 위한 구조 및 방법, 및 (10) 정규 상태를 유지하면서 프로세서의 작업 처리량을 향상하기 위한 구조 및 방법을 제한적이지 않게 포함한다. 다른 구조적 특징부 및 기능은 차후 첨부된 도면 및 청구의 범위 내에서 설명된다.
상기 문제점은 이슈 시점에서 각각의 명령에 고유의 식별 태그를 할당함으로써 정규 상태를 트래킹하고 유지하며, 이 태그를 제1 활성화된 명령 데이타 구조의 기억 위치에 관련시키고, 이 기억 위치에 기억된 데이타를 각각의 명령에 대해 명령 활성 상태 변화에 응답하여 갱신하고, 명령 활성 상태에 응답하여 이동하는 기억 위치에 대해 다수의 포인터를 유지하기 위해 제공되는, 본 발명의 제1 양태에 따른 방법 및 구조에 의해 해결된다. 상태 정보는 명령이 이슈될때에 세트되고 실행이 에러없이 완료되면 클리어되는 활성-비트(active-bit)를 포함한다. 포인터는 최종적으로 이슈된 명령(이슈된 명령 포인터), 에러없이 완료되고 그 이전의 모든 연속적인 명령이 에러없이 완료된 최종 명령(최종적으로 커미트된 명령 포인터) 및, 프로세서 자원을 위해 할당되는 최종 명령(리클레임된 명령 포인터)에 대한 포인트에서 형성된다. 이들 3개의 포인터는 데이타 구조 및 소정의 법칙에서의 명령중 하나와 관련된 각 위치에 대한 활성-비트의 비교에 기초하여 데이타 구조를 따라 최종적으로 이슈된 명령을 향해 전방으로 이동된다. 임의의 명령에 대한 예외 또는 에러 상태는 활성-비트를 변화시키는 것을 막기 때문에, 포인터의 이동은 이들 상태 하에서 억제되고 금지된다.
상기 문제점은, 외부 메모리와 관련된 명령과 같은 긴 대기시간의 명령을 트래킹하고 능동적으로 스케줄링하고, 다른 명령으로부터 메모리 관련 명령을 식별함으로써 정규 상태를 유지하면서 추측 비순위 실행 프로세서의 짧은 대기시간이 명령 이전에 로드 및 기억 명령을 포함하고, 예측되고 추측 결과를 갖는 명령을 식별하고, 추측 분기 예측 오류 및 실행 예외와 상관없이 실행될 수 있는 실행에 대한 이들 메모리 관련 명령만을 스케줄링하기 위해 제공되는, 본 발명의 다른 양태에 따른 방법 및 구조에 의해 해결된다. 이와 같은 방식으로 스케줄링될 수 있는 명령은 이슈되는 시점에서 각각의 명령에 대한 고유의 식별 태그를 할당하고, 데이타 구조의 기억 위치에 태그를 관련시키고, 데이타 구조의 기억 위치에 기억된 데이타를 각각의 명령에 대한 명령 활성화 상태 변화에 응답하여 갱신하고, 명령 활성화 상태에 응답하여 이동하는 기억 위치에 대한 다수의 포인터를 유지함으로써 트래킹된다. 상태 정보는 명령이 이슈되고 실행이 에러없이 완료될때 클리어되는 시점에서 세트되는 활성 명령 지시자를 포함한다. 포인터는 최종적으로 이슈된 명령, 에러없이 완료되고 그 이전의 모든 연속적인 명령이 에러없이 완료된 최종 명령(최종적으로 커미트된 명령 포인터) 및, 할당된 프로세서 자원이 리클레임된 최종 명령(리클레임된 명령)에 대한 포인트에서 형성된다. 더욱이, 태그를 데이타 구조의 제2 기억 위치에 관련시키고 메모리 관련 명령과 같은 긴 대기시간의 명령 각각에 대한 명령 활성 상태에 응답하여 제2 기억 위치에 기억된 데이타를 갱신하고, 긴 대기시간(메로리 관련) 명령 활성 상태에 응답하여 이동하는 기억 위치에 대한 다수의 포인터를 유지한다. 상태 정보는 긴 대기시간 명령이 이슈될때 클리어되는 긴 대기시간 명령 타입을 포함하며, 다른 명령 타입에 대해서는 세트하며, 명령의 실행이 에러없이 완료되면 클리어된다. 가장 먼저 예측된 분기 명령(예측된 분기 포인터)를 지시하는 제1 포인터는 데이타 구조 내에 형성된다. 모든 이전의 연속적인 명령이 에러없이 완료되고 또한, 활성의 긴 대기시간 명령에 까지 진행되는 제2 포인트가 형성된다. 이슈된, 커미트, 리타이어, 예측된 분기, 및 긴 대기시간 포인터는 각 위치 및 소정의 법칙에 대한, 활성-비트와 메모리 비트의 비교에 기초하여 제1 및 제2 순환 데이타 구조를 따라 최종에 이슈된 명령을 향해 전방으로 이동된다. 임의의 명령에 대한 예외 또는 에러 상태는 활성-비트 및 메모리-비트의 변화를 금지하여, 포인터의 이동은 이들 상태하에서 금지된다. 하나 이상의 데이타 구조가 활성 상태 및 명령-타입 데이타를 기억하기 위해 제공될 수 있으며, 지시자는 데이타 구조에 기억된 세트 또는 클리어된 비트일 수 있다.
상기한 문제점은 명령 타입의 소정의 세트에 대해서만 체크포인트를 발생시킴으로써 추측 비순위 실행 프로세서에서의 임의의 명령 경계에서 정규 머신 상태를 복구하고, 분기 명령 및 프로그램 카운터 불연속을 생성하거나 또는 제어 레지스터 값을 수정하는 사이드 효과를 가질 수 있는 명령을 포함하고, 프로그램 카운터 불연속을 발생시키는 각 명령에 대한 체크포인트를 생성하거나 또는 예외로부터 브로세서를 복구하기 위한 수단 및 방법을 제공하기 위해 상태를 수정할 수 있는 임의의 명령이 순차적으로 실행되도록 프로세스를 동기시키기 위한 방법이 제공되는 본 발명의 방법 및 구조에 의해 해결된다. 에외 상태로부터의 복구는 실행 예외가 발생할때의 명령 일련 번호 또는 하나 이상의 실행 예외가 한 사이클에서 발생할때의 최초의 명령 일련 번호를 결정하여 기억하는 단계, 실행 예외 후에 가장 최근의 이전 체크포인트된 명령으로 프로세서를 백업함으로써 프로세서 상태를 복구하는 단계 및, 현재 이슈된 명령과 잘못된 명령 사이에서 체크포인트가 있을때 체크포인트된 정보로부터 프로세서 상태를 복구하고 레지스터 자원을 갱신하고 체크포인트된 명령으로부터 만약에는, 최초의 오류 명령의 바로 이전의 지점까지의 백스텝 량만큼 프로세서 프로그램 카운터를 디크리먼트함으로써 프로세서를 백스텝하는 단계를 포함한다. 추가적인 개선에 있어서, 통상적인 체크포인트 처리에서 요구되는 상당량의 기억장치는 논리적 레지스터 리네임 맵 및 물리적 레지스터 리네임 맵을 체크포인트함으로써 레지스터 데이타 자신보다 감소된다.
상기한 문제점은 명령이 이슈되어 실행되기 전에 CPU에서 실행될때의 아키텍쳐 상태를 수정할 수 있는 명령을 선식별함으로써 프로세서의 정규 상태를 유지하면서, 체크포인트된 상태를 감소하도록 프로세서에서 명령을 체크포인트하고, 특정 명령의 체크포인트를 위해 요구되는 상태 기억 장치의 량 및 통상적인 명령 스트림에서 명령이 발생하는 빈도를 포함하는 소정의 선택 기준에 근거하여, 실행전에 특정 명령에 대한 아키텍쳐 상태를 체크포인트하지 않고 특정 실행 모드에서 실행하기 위해 식별된 명령중 특정적인 하나를 선선택하기 위한 본 발명의 방법 및 구조에 의해 해결된다. 그런 다음 식별된 명령에 대해서만 체크포인트가 형성되며, 상태를 수정할 수 있는 다른 명령은 체크포인트되지 않지만 특정의 동기화 모드에서 실행되기 때문에 예외가 발생하다면, 예외는 프로세서 상태에 실행 결과를 다시 기록하기 전에 처리될 수 있다. 본 발명의 방법 및 구조의 일실시예에서, 기준은 수정가능한 상태의 타입과, 실행동안 명령에 의해 수정될 수 있는 수정가능한 상태의 량을 포함하며, 소정의 공칭 명령 스트림에서 명령이 발생하는 빈도를 포함할 수 있다. 바람직하게는, 낮은 추정 통계상 빈도를 가지고 체크포인트 기억 장치의 비교적 큰 량을 요구하는 명령은 동기화 모드 실행동안 선택되어 체크포인트되지 않는다. 본 발명의 구조 및 방법의 일실시예에서, 프로세서를 동기화하거나 동기시키는 단계는 실행 전에 명령 스트림에서의 머신 동기화를 요구하는 동기화 명령으로서 명령을 식별하는 단계, 모든 미결정의 이슈된 명령이 커미트되고 리타이어될때까지 동기화 명령의 실행을 지연하여 실행이 에러없이 완료되고 실행 결과가 상태에 다시 기록되는 단계, 머신 동기화를 연속하여 요구하는 각 명령을 실행하는 단계와, 상태를 재기록하기 전에 각 동기화 명령의 실행으로부터 발생하는 예외 상태를 순서대로 식별하는 단계, 동기화 명령의 실행동안, 발생할 수 있는 모든 예외 상태를 처리하는 단계 및; 상기 단계 다음에만 실행 결과를 머신 상태에 기록하여, 정규 상태가 동기화 명령을 체크포인트하지 않고 유지되는 단계를 포함한다.
상기한 문제점은, 디코드된 명령 속성에만 기초한 현행 프로세서 상태를 기억하기 위해 이슈된 명령의 수, 경과된 클록 사이클의 수 및, 체크포인트를 형성하는 것보다 최종 체크포인트가 형성된 후의 간격에 기초한 체크포인트 정보를 제공하는 본 발명의 방법 및 구조에 의해 해결된다. 체크포인트 처리에 기초한 본 발명의 타임아웃 상태는 명령의 최대수를 체크포인트 경계 내에서 제한하며, 그에 따라 예외 상태로부터의 복구 주기를 제한한다. 명령 위도우 사이즈가 체크포인트 경계 내의 명령의 최대수보다 크기만 하면, 프로세서는 예외의 경우 체크포인트 기술에 기초한 명령 디코드보다 빠르게 체크포인트된 상태가 복구되고, 명령 윈도우 사이즈에 따라, 프로세서 상태 복구를 제거한다. 본 발명의 타임아웃 체크포인트 정보는 통상적인 체크포인트를 구현하는 구조 및 방법 또는, 본 발명의 논리적 레지스터 리네임 맵 및 물리적 레지스터 리네임 맵 체크포인트 처리 기술에 사용될 수 있다. 본 발명의 타임아웃 체크포인트 정보 구조 및 방법은 통상적인 프로세서 백업 기술뿐만 아니라 프로세서 백업 및 백스텝 처리를 포함하는 본 발명의 백트래킹 기술과 함께 사용될 수 있다.
상술한 문제점은, 이슈 유닛, 실행 수단, 부동소수점 예외 유닛, 정규 상태 유닛, 부동소수점 상태 레지스터 및 기록 수단을 포함하는 프로그램 제어 비순위 실행 데이타 프로세서를 제공하는 본 발명의 구조 및 방법에 의해 해결된다. 이슈 유닛은 실행에 대한 프로그램 제어 순서로 명령을 이슈한다. 이슈된 명령은 부동소수점 명령 및 고정소수점 명령을 포함한다. 실행 수단은 적어도 부동소수점 명령이 실행 수단에 의해 프로그램 제어 순서와 다른 순서로 실행될 수 있도록, 이슈된 명령을 실행한다. 부동소수점 예외 유닛은 기억 요소를 포함하는 데이타 기억 구조를 포함한다. 각각의 이슈된 명령은 각 기억 요소에 대응한다. 각각의 기억 요소는 부동소수점 명령 식별 필드 및 부동소수점 트랩 타입 필드를 포함한다. 부동소수점 예외 유닛은 또한 대응하는 기억 요소의 부동소수점 명령 식별 필드에 각각의 이슈된 명령에 대해, 데이타를 기록하기 위한 제1 로직을 포함하는데, 이 제1 로직은 대응하는 이슈된 명령이 부동소수점 명령인 지를 표시한다. 이것은 또한 부동소수점 실행 트랩의 다수의 소정의 타입중 하나에 대응하게 되는 하나 이상의 부동소수점 실행 예외를 실행동안 발생시키는 각각의 이슈된 부동소수점 명령에 대해 발생하게될 부동소수점 실행 트랩의 소정의 타입중 하나를 식별하는 대응하는 기억 요소의 부동소수점 타입 필드에 데이타를 기록하기 위한 제2 로직을 포함한다. 정규 상태 수단은 실행동안 실행 예외를 발생시키지 않으며, 프로그램 제어 순서로 그 이전의 이슈된 모든 명령이 리타이어된 각각의 이슈된 명령을 리타이어한다. 소정의 실행 예외중 최초의 것이 이슈된 명령에 의해 발생될때, 실행 수단은 이슈된 명령의 실행을 계속하며, 정규 상태 수단은 리타이어될 수 없는 이슈된 명령과 마주칠때까지 이슈된 명령을 리타이어하는 것을 계속함으로써 실행 트랩을 중단하는 것에 관여한다. 리타이어될 수 없는, 이슈된 명령은 (a)제1 실행 예외를 발생시키는 이슈된 명령, (b)제1 실행 예외를 발생시키는 이슈된 명령보다 이전에 이슈되었지만 제1 실행 예외보다 나중에 발생하는 제2 실행 예외를 발생시키는 이슈된 명령중 하나이다. 부동소수점 상태 레지스터는 부동소수점 트랩 타입 필드를 갖는다. 기록 수단은 데이타를, 리타이어될 수 없는 명령에 대응하는 기억 요소의 부동소수점 식별 필드의 데이타가 리타이어될 수 없는 명령이 부동소수점 명령임을 표시할때 리타이어될 수 없는 명령에 대응하는 기억 요소의 부동소수점 트랩 타입 필드의 데이타에 의해 식별되는 부동소수점 실행 트랩의 타입을 식별하는 부동소수점 상태 레지스터의 부동소수점 트랩 타입 필드에 기록한다.
상기한 문제점은 데이타 프로세서 및, 추측적으로 트랩을 수취하고 그 트랩으로부터 리턴하기 위한 방법을 제공하는 본 발명의 구조 및 방법에 의해 해결된다. 데이타 프로세서는 대응하는 트랩 레벨을 각각 갖는 내포된 트랩을 수취하기 위한, 트랩 레벨의 소정의 수를 유지한다. 데이타 프로세서는 체크포인트를 형성하는 수단, 체크포인트에 백업하기 위한 수단, 트랩을 수취하기 위한 수단, 트랩으로부터 리턴하기 위한 수단 및 트랩 스택 유닛을 포함한다. 레지스터는 트랩이 수취되는 각 시점에서 데이타 프로세서의 상태를 한정하는 콘텐트를 갖는다. 트랩 스택 유닛은 존재하는 트랩 레벨보다 많은 수의 트랩 스택 기억 엔트리를 갖는 트랩 스택 데이타 기억 구조를 포함한다. 이는 또한 하나의 트랩 레벨로 맵핑하는데 현재 이용가능한 트랩 스택 기억 엔트리의 현재의 가용성 리스트를 유지하는 프리리스트(freelist)를 포함한다. 프리리스트 유닛은 트랩이 수취되는 각 시점에서 트랩 레벨중 하나에 대응하여 맵핑하기 위한 현행 이용가능한 트랩 스택 기억 엔트리의 다음 엔트리를 식별한다. 트랩 스택 유닛은 현행 이용가능한 트랩 스택 기억 엔트리의 다음 엔트리에 각 트랩의 수취에 대한 레지스터의 콘텐트를 기록하는 판독/기록 로직을 또한 포함한다. 이는 트랩 스택 기억 엔트리 각각에 대한 각 트랩 레벨의 현행 맵핑을 유지하는 리네임 맵핑 로직을 또한 포함한다. 리네임 맵핑 로직은 트랩이 수취되는 시점마다, 트랩 스택 기억 엔트리 하나에 대해 대응하는 트랩 레벨의 이전 맵핑을 현행 이용가능한 트랩 스택 기억 엔트리의 다음 엔트리에 대한 대응하는 트랩 레벨의 맵핑으로 교체한다. 이 트랩 스택 유닛은 현행의 맵핑에 의해 각 트랩 레벨에 대해 현행 맵핑되지 않았지만 각 트랩 레벨에 대해 맵핑하는데 유용하지 않은, 각 트랩 스택 기억 엔트리의 비가용성을 유지하는 자원 리클레임 유닛을 또한 포함한다. 자원 리클레임 유닛은 비가용성 리스트에, 트랩이 수취되는 시점마다, 이전의 맵핑에 의해 대응하는 트랩 레벨에 대해 맵핑되고 수취된 트랩이 더이상 복구될 수 없는 비가용성 리스트로부터 이동하는 트랩 스택 기억 엔트리, 즉 이전의 맵핑에 의해 대응하는 트랩 레벨에 대해 맵핑된 트랩 스택 기억 엔트리를 부가한다. 최종적으로, 트랩 스택 유닛은 체크포인트 기억 엔트리를 포함하는 체크포인트 기억 유닛을 포함한다. 각각의 형성된 체크포인트는 대응하는 체크포인트 기억 엔트리를 가지기 때문에 체크포인트 기억 유닛은 각각의 형성된 체크포인트에 대해, 리네임 맵핑 로직의 현행 맵핑 및 대응하는 체크포인트 기업 엔트리의 프리리스트 유닛의 현재 가용성 리스트를 기억한다. 체크포인트로의 각 백업에 대해, 리네임 맵핑 로직은 유지하는 현행의 맵핑을 대응하는 체크포인트 기억 엔트리에 기억된 맵핑으로 대체하고, 프리리스트는 유지하는 현재 가용성 리스트를 대응하는 체크포인트 기업 엔트리에 기억된 가용성 리스트로 대체한다.
상기한 문제점은 데이타 프로세서 및 다수의 추측적으로 이슈되고 예측된 다수의 명령의 실행 결과를 동시에 모니터링하기 위한 관련 방법을 제공하는 본 발명에 의해 해결된다. 본 발명의 구조 및 방법은 프로세서 내의 하나 이상의 실행 유닛으로부터의 실행 결과 신호를 수신하도록 결합된 워치포인트 데이타를 기억하기 위한 다수의 워치포인트 레지스터를 갖는 워치포인트 유닛을 제공한다. 추측적으로 이슈되고 예측된 각 명령에 대한 예측된 상태 데이타 결과를 포함하는 워치포인트 데이타를 기억하기 위한 워치포인트 레지스터는 명령이 이슈될때 할당된다. 이 예측된 상태 데이타 결과는 추측적으로 발생된 명령의 제어 흐름 전달 방향이 의존하고 추측적으로 이슈되고 예측된 명령이 추측적으로 이슈되는데 있어서의 근거인 예측된 값을 식별한다. 워치포인트 유닛은 실행 유닛(들)으로부터 데이타 전송 버스 상에서 전송되는 추측적으로 이슈되고 예측된 명령에 대한 실행 결과 신호를 모니터하고, 기억된 워치포인트 데이타 및,실제의 공지된 상태 데이타 결과 신호와 실제 조건 코드가 예측된 조건 코드와 매칭하는 지를 판단하는 소정의 법칙을 포함하는 실행 결과 신호에 기초하여 소정의 이벤트의 발생을 검출한다. 추측적으로 이슈되고 예측된 명령 각각에 대해 워치포인트 레지스터에 기억된 워치포인트 데이타는 신호가 매칭하는지 매칭하지 않는지를 판단하기 위해 추측적으로 이슈된 명령에 속하는 데이타 전송 버스 상에 도달하는 결과 신호와 비교하는데, 매칭는 추측적으로 이슈되고 예측된 명령이 정확하게 예측된 것임을 나타내고, 비매칭은 추측적으로 이슈되고 예측된 명령이 정확하게 예측되지 않은것임을 나타낸다. 예측 오류이 식별되면, 프로세서는 정규 상태로 복구되어 예측 오류에 기초하여 실행된 명령은 복구된다. 본 발명의 양태에 따라, 복수의 실행 유닛 및 복수의 예측된 분기 또는, 점프 및 링크 명령을 포함하는, 복수의 추측적으로 이슈된 명령을 동시에 모니터하는 기능을 포함하는 실행 유닛으로부터 조건 코드 데이타를 동시에 획득하기 위한 구조 및 방법, 예측된 분기 또는 점프 및 링크 명령이 실행 유닛으로부터 데이타 전송 버스를 감시함으로써 대기되는 다수의 조건 코드 데이타 또는 추정된 점프 및링크 어드레스를 획득하기 위한 구조 및 방법, 분기 또는 점프 및 링크 명령의 복수의 예측 오류 신호를 동시에 발생시키기 위한 구조 및 방법, 하나의 분할된 기억 영역에서의 하나씩 거른 분기 어드레스 또는 예측된 점프 및 링크 어드레스를 기억하기 위한 구조 및 방법, 예측 오류이 프로세서 복구의 부분으로서 검출된 후에 명령 인출에 대한 정정 분기 어드레스 또는 점프 및 링크 어드레스를 전송하기 위한 구조 및 방법, 및 조건 코드 태그 비교의 태스크를 분리하고 획득함으로써, 결정적인 경로를 가속화시키기 위한 구조 및 방법을 제공한다. 본 발명의 구조 및 방법의 일실시예에서, 이들 몇개의 양태가 바람직하게 결합되어 프로세서 의 전체 성능을 향상시킨다.
도 4는 데이타 프로세서(50)의 상위 레벨 기능 블록도이다. 데이타 프로세서는 신규한 비순위 추측 실행(슈퍼스칼라) 중앙 처리 유닛(CPU)(51)을 포함한다. 예시적인 CPU는 SPARC-V9에 개시되어 있는 SPARC-V9 명령어 세트를 실행할 수 있다. Englewood Cliffs(1994)에서 D.weaver 및 T. Germond에 의한 The SPARC Architecture Manual 9판이 여기에 참조로 명백하게 통합되어 있다. 그러나, 당업자는 여기에 설명된 신규한 디자인 및 방법이 SPARC-V9 아키텍쳐에 제한되지 않음을 알 수 있다.
실제로, CPU(51)는 모든 데이타 프로세서를 적용할 수 있는 정규 상태를 유지하면서 작업 처리량을 향상시킨 신규한 디자인 및 방법을 채용한다. 특히, 이것은 (1)프로세서 자원 및 상태를 모니터하고 복구하기 위해 명령을 트래킹하기 위한 신규한 디자인 및 방법; (2)로드/기억 명령과같은 긴 대기시간 명령을 능동적으로 스케줄링하기 위한 신규한 디자인 및 방법; (3) 머신 상태를 체크포인트하기 위한 신규한 디자인 및 방법; 및 (4)예외 및 예측 오류의 검출 후에 머신 상태를 기억하기 위한 신규한 디자인 및 방법을 채용한다.
본 명세서의 설명 및 특정 실시예의 개략이 참조 편의성을 위해 이하 제공된다. 이 제목에 관한 서두는 참조 편의성을 위해서만 제공되며, 본 발명의 임의의 특정 범위 또는 실시예에 대한 절에 제공되는 그 설명의 적용가능서을 제한하는 것으로 설명되지는 않는다.
Ⅰ.CPU 동작 개요
Ⅱ.명령의 트래킹
A. 명령 인출
B. 명령 이슈
1.명령 이슈 개요
2.명령 일련 번호 할당 및 명령 상태 기억
a.명령 이슈-커미트-리클레임 유닛(ICRU)
b.명령 이슈 관련 포인터 및 이슈 스테이지 동안의 포인터 유지
3.레지스터 리네임 처리
4.예약 스테이션(reservation station)에 대한 디스패치
C.명령 실행 및 완료
D.명령 실행 스테이지의 PSU 관여
E.명령 커미트먼트
F.명령 리타이어먼트 및 자원 복구
1.RRF에 대한 갱신, 및 명령 커미트먼트 및 리타이어먼트에서의 리네임 맵
2.명령 리타이어먼트에서의 RRF 판독
3.포인터를 이용한 정규 상태 유지
Ⅲ. 긴 대기시간(로드/기억) 명령의 능동적인 스케줄링
A.메모리 명령 상태 정보 기억
B.긴-대기시간 명령을 트래킹하고 스케줄링하기 위한 NMCSN 및 PBSN 포인터
C.NMCSN 진행
D.데이타 흐름 블록내의 로드-기억 유닛(LSU)
1.범위내 메모리 관련(긴 대기시간) 명령의 식별
2.긴 대기시간(로드/기억) 명령의 능동적인 스케줄링을 위한 기본적인 구조 및 방법에 대한 향상
Ⅳ.체크포인트 처리
A.체크포인트 할당 레지스터의 구조
B.체크포인트 할당
C.체크포인트 리타이어먼트
D.머신 백업에서의 체크포인트 유지
E.타임아웃 체크포인트 향상
F.임의의 명령 경계에서의 정규 상태의 유지 및 기억
G.체크포인트 처리된 데이타량을 감소시키기 위해 소정 명령에 대해 머신을 동기화하는 방법
H.체크포인트된 데이타의 량을 감소시키기 위해 레지스터 리네임 맵을 체크포인트하기 위한 방법
Ⅴ.예측 오류 및 예외로부터의 복구
A.다수의 미결정 분기/점프-링크 명령을 동시에 평가하기 위해 워치포인트를 이용한 예측 오류 검출
1.워치포인트 엘리먼트의 동작
2.다수의 데이타 전송 버스로부터 CC 데이타를 적접 획득하는 워치포인트
3.워치포인트 동작예
4.분기 명령의 평가
5.JUMP_LINK(JMPL) 명령의 평가
B.예외 검출
1.이슈 트랩의 검출
2.실행 트랩의 검출
C.이전 상태로 프로세서를 백트래킹하는 것에 의한 복구
1.체크포인트 경계로의 프로세서 백업
2.잘못 예측된 명령, RED 모드 및 실행 트랩에 의해 개시된 백업
3.임의의 명령 경계로의 프로세서 백스텝
D.예외 및 예측 오류 복구 동안의 우선 순위 로직 및 상태 머신 동작
E.트랩 스택을 갖는 트랩의 처리
Ⅰ. CPU 동작 개요
CPU(51)는 레벨 1(L1) 명령 캐시(52)로부터 명령을 인출하고 레벨 1(L1) 데이타 캐시(53)에 데이타를 기억시키고 데이타를 검색한다. L1 명령 및 데이타 캐시는 물리적으로 CPU(51)와 같은 동일한 칩/구조체 상에 배치될 수 있거나, 또는 서로 다른 칩/기판 상에 어셈블리될 수 있다.
CPU는 또한 메모리 관리 제어 유닛(MMU)(54)과 대화하여 데이타 프로세서(50)의 전체 상태를 판단한다. 특히, MMU는 외부 메모리(56)로부터 명령을 검색하고, 외부 메모리(56)에 데이타를 기억시키고 데이타를 검색하며, 외부 I/O 디바이스(57)로부터 데이타를 수신하고 데이타를 출력하고, 외부 진단 프로세서(58), CPU(51) 및 캐시(52,53)에 진단 정보를 제공하고 수신하며, 데이타 어드레스 변환을 실행하고 메모리 상태 정보를 기억하고 트래킹한다.
도 5는 예측된 프로그램 제어 명령, 고정 및 부동소수점 명령 및 로드/기억 명령을 포함하는 몇개의 통상적인 명령 타입을 위한 CPU(51)의 신규한 명령 파이프라인의 스테이지(및 관련 머신 사이클)를 도시한다. 이 파이프라인을 구현하기 위해, CPU(51)는 도 4에 도시된 것과 같이, 분기 블록(BRB)(59), 이슈 블록(ISB)(61), 및 데이타 흐름 블록(DFB)(62)을 포함한다.
도 4 및 도 5를 참조하면, BRB(59)는 인출 스테이지 동안 명령을 인출하고, 이들 명령을 ISB(61)에 제공한다. BRB(59)는 타겟 어드레스를 예측하고 프로그램 제어 명령의 다양한 타입에 대해 분기가 수취될 것인지의 여부를 예측한다. 따라서, 인출 스테이지 동안 추측적으로 명령을 인출할 수 있다.
ISB(61)는 명령이 추측적으로 인출될 수 있기 때문에 이슈 스테이지 동안 예측된 프로그램 카운터(PC) 순서로 인출된 명령을 이슈한다. ISB는 또한, 소정의 간격동안 제공되는 명령과, BRB(59)에 의해 예측되어지는 프로그램 제어 명령을 포함하는 이슈된 명령의 소정의 타입을 위해 발생 스테이지 동안 CPU(51)의 머신 상태의 체크포인트를 형성한다.
BRB(59)는 무작동(nop) 및 예측된 프로그램 제어 명령을 ISB(61)에 의해 이들 명령이 이슈되는 스테이지와 동일한 스테이지에서 실행하고 완료한다. 그러나, DFB(62)는 이슈된 고정 및 부동소수점 명령을 요구되어지는 자원을, 이용가능하게 되는 즉시, 실행하고 완료한다. 더욱이, DFB(62)는 요구되어지는 자원이 이용가능할때 실행을 위해, 발생된 로드/기억 명령을 능동적으로 스케줄링하며, 이러한 방식으로, 실행되고 완료될때 예외(발생 트랩, 실행 트랩 또는 인터럽트) 또는 프로그램 제어 예측 오류인 경우에 복구할 필요가 없다. 따라서, 몇개의 고정소수점, 부동소수점 및 로드/기억 명령이 이전의 이슈 스테이지를 가질수 있더라도, 요구되어지는 자원이 아직 이용가능하지 않기 때문에 나중의 실행 및 완료 스테이지를 갖는다. 더욱이, 이들 명령은 BRB(59)에 의해 이전의 프로그램 제어 예측에 기초하여 BRB(59)에 의해 추측적으로 인출되어지기 때문에 추측적으로 실행되고 완료될 수 있다. 다시 말해, DFB(62)로 이슈된 명령은 예측된 PC 순서와 다르게 실행되고 완료될 수 있다.
명령은 에러(예컨대, 이슈 트랩, 실행 트랩, 또는 예측 오류) 발생없이 완료되면, 비활성 스테이지에서 ISB(61)에 의해 비활성화된다. 명령은 예측된 PC 순서와 다르게 완료될 수 있기 때문에, 또한 예측된 PC 순서와 다르게 비활성화될 수 있다.
비활성화된 명령은 그런 다음 커미트 스테이지 동안 실제 PC 순서로 ISB(61)에 의해 커미트된다. 비활성화된 명령은 모든 이전의 발생된 명령이 커미트되지 않는한 커미트될 수 없다. 따라서, 명령이 커미트되면, 예외 또는 예측 오류의 경우에 복구되어질 수 없다. 이는 이 지점 까지의 실제 PC 순서가 정확하고, 명령이 실제 PC 순서로 커미트된 것을 의미한다. 게다가, 체크포인트가 형성되어지는 명형이 커미트되면, 바로 이전의 체크포인트는 리타이어될 수 있다.
명령이 커미트되면, 명령은 리타이어 스테이지에서 ISB(61)에 의해 실제 PC 순서로 리타이어된다. 명령이 리타이어된 후, 명령에 할당된 자원은 리클레임되며, 이슈되는 다른 명령에 대해 다시 할당될 수 있다.
ISB(61)는 파이프라인 동안, 어떤 점에서 발생하는 예외 또는 프로그램 제어 예측 오류으로부터의 복구를 처리한다. 따라서, 만일 프로그램 제어 예측 오류이 발생하면, ISB(61)는 오류 프로그램 제어 명령이 이슈될때 형성된 체크포인트로 CPU(51)를 백업한다. 유사하게, 만일 예외 트랩이 발생하면, ISB(61)는 오류 명령이 이슈된 후에 가장 먼저 형성된 체크포인트로 CPU(51)를 제1 백업하는데, 이는 이러한 체크포인트가 형성되었으며 또는 오류 명령으로 CPU(51)를 백스텝시킨 경우이다. 체크포인트까지 백업하고 또는 백스텝하는데 있어서, CPU(51)는 오류 명령의 이슈 및 실행의 바로 이전에 존재하는 정확한 머신 상태로 리턴된다.
만일 ISB(61)가 프로그램 제어 예측 오류를 발생시키는 오류 명령으로 백업되었으면, BRB(59)는 정확한 프로그램 카운터값 및 정확한 머신 상태를 갖는 명령을 인출하는 것을 개시한다. 그러나, ISB(61)가 실행 트랩을 발생시키는 명령으로 백업되고 또는 백스텝되었다면, ISB는 BRB(59)에게 적절한 트랩 처리 루틴을 위한 타겟 프로그램 카운터값을 제공한다. 이 트랩 처리 루틴은 그런 다음, 트랩을 처리하고 오류 명령의 프로그램 카운터값 또는 다음 프로그램 카운터값을 다음 명령을 인출하기 위한 BRB(59)로 리턴한다. 오류 명령의 이 프로그램 카운터값은 트랩 처리 루틴에 의해 CPU(51)가 오류 명령을 인출하여 이 명령을 이슈하고 실행하는 것을 재시도하는 경우에 리턴된다. 그러나, 다음 프로그램 카운터값은 트랩 처리 루틴이 CPU(51)가 오류 명령을 이슈하고 실행하는 것을 스킵하기 위해서 오류 명령 후의 다음 명령을 인출하는 경우에 리턴된다.
Ⅱ. 명령의 트래킹
상기 언급한 것과 같이, CPU(51)는 CPU(51)의 명령 파이프라인에서 명령을 트래킹하는 신규한 디자인 및 방법을 채용한다. 이 디자인 및 방법을 구현하기 위해, 파이프라인은 도 5에 도시되고 상기 간략하게 설명된, 인출, 이슈, 실행, 완료, 비활성화, 커미트 및 리타이어 스테이지를 포함한다.
A.명령 인출
도 4를 다시 참조하면, BRB(59)는 인출 스테이지 동안 명령을 인출하고 이들 명령을 ISB(61)에 제공한다. 도 6에 도시된 바와 같이, BRB(59)는 명령 프리패치 및 캐시 유닛(IPCU)(100) 및 인출 유닛(102)을 포함한다.
IPCU(100)는 레벨 1(L1) 명령 캐시(52)로부터 4개의 명령(INSTs)을 동시에 검색할 수 있다. 검색된 명령은 BRB(59), ISB(61) 및 BFB(62)에 의해 사용되는데 있어 더 적합한 포맷으로 IPCU(100)의 명령 레코더(101)에 의해 기록된다. 선택적인 실시예에서, IPCU(100)은 4개의 명령보다 많은 또는 적은 명령을 동시에 검색하도록 구현될 수 있다.
인출 유닛(102)은 인출 프로그램 카운터(FPC) 값, 아키텍쳐 프로그램 카운터(APC) 값, 및 다음 아키텍쳐 프로그램 카운터(NAPC) 값을 계산하기 위한 프로그램 카운터(PC) 로직(106)을 포함한다. 각 머신 사이클에서 계산된 FPC, APC 및 NAPC 값은 PC 로직의 FPC, APC, 및 NAPC 레지스터(112-114)에 각각 기억된다. FPC 레지스터의 현행 FPC 값은 현행 머신 사이클에서 인출되고 있는 명령을 가리키며, APC 및 NAPC 레지스터(113,114)의 현행 APC 및 NAPC값은 현행의 머신 사이클에서 ISB에 의해 이슈되는데 이용가능하고 이전의 머신 사이클에서 인출된 첫번째 및 그 다음 명령을 가리킨다.
FPC 값에 응답하여, 4개의 명령(F_INSTs)이 동시에 IPCU(100)에 의해 인출된다. 선택적인 실시예에서, 4개 이하 또는 이상의 명령을 동시에 인출되도록 구현될 수 있다.
각각의 FPC 값에 대해, 분기 히스토리 테이블(104)은 FPC 값에 의해 인출된 각각의 명령에 대해 분기 예측 필드(BRP)를 포함한다. 따라서, BRP 필드 각각은FPC 값으로 인출된 각 명령에 대응한다. 만일 임의의 인출된 명령이 SPARC-V9 BPcc, Bicc, BPr, FBfcc 및 FBPfcc 명령과 같은 통상적인 분기 명령이면, 그 대응하는 BRP 필드는 분기가 분기 명령의 차후 이슈, 실행 및 완료 스테이지에 있어서 수취되는 또는 수취되지 않을 것으로 예측되는지를 식별한다. 분기 히스토리 테이블(104)은 FPC 값에 응답하여 인출된 명령에 대한 BRP 필드를 출력한다. 그런 다음 BRP 필드는 인출 유닛(102)에 의해, 대응하는 인출된 명령(F_INSTs)에 첨가된다.
인출 레지스터는 동시에 4개의 명령을 유지하기 위한 4개의 래치를 갖는다. 이 래치는 ISU(200)에 의해 발생될 수 있는 다음의 4개의 명령을 예측된 PC 순서로 포함하는 4개의 슬롯(0-3)을 갖는 이슈 윈도우를 형성한다. 그러나, 이전의 머신사이클 동안, 인출 레지스터에 의해 유지된 명령의 몇개는 상기 간단하게 설명된 바와 같은 이슈 제약으로 인해 ISU(200)에 의해 이슈되지 않을 수 있다. 인출된 명령이 예측된 PC 순서로 이슈될 수 있도록 하기 위해, ISU(200)는 인출 레지스터가 최종 머신 사이클에서 적절한 래치로 이슈되지 않은 명령을 배치하도록 제어하는 인출 레지스터 제어(FCH_REG_CNTRL) 신호를 발생시켜, 이들 명령들은 이슈 윈도우에서 예측된 PC 순서를 가지게 되어 ISU(200)에 의해, 예측된 PC 순서로 이슈될 수 있다. 또한, FCH_REG_CNTRL 신호에 응답하여, 인출 레지스터는 다음에 올 방금 인출된 명령들을 남아있는 래치에 예측된 PC 순서로 배치한다.
선택적인 실시예에서, 인출 레지스터는 동시에 4개 이상 또는 이하의 명령을 기억하도록 구현될 수 있다. 더욱이, 예시적인 CPU(51)가 인출 유닛(102)에 위치된 하나의 인출 레지스터와 함께 설명되었어도, 설명된 타입의 인출 레지스터는 디코딩을 수행하는 CPU의 각 블록에 사용될 수 있다. 그리고, 인출 레지스터는 최초의 디코딩이 이슈 스테이지에서 이슈하는 디코딩의 나머지와 함께 인출 레지스터에 기억되는 디코드된 명령 이전에 인출 사이클동안 이슈하도록 이들 블록에 배치될 수 있다.
B. 명령 이슈
1.명령 이슈 개요
ISB(61)는 각 이슈 스테이지동안 인출된 명령을 이슈한다. 도 7에 도시된 바와 같이, ISB(61)는 이슈 유닛(ISU)(200), 정규 상태 유닛(PSU)(300), 프리리스트 유닛(700), 및 제어 레지스터 파일(800)을 포함한다. 각 이슈 스테이지 동안, ISU(200)는 BRB(59)의 인출 레지스터(110)로부터 동시에 4개의 명령(F_INSTs_BRPs)을 수신한다. 그에 따라, ISU(200)는 차후 설명되는 바와 같이, 다양한 이슈 제약에 기초하여 얼마나 많은 명령이 이슈되는 지를 결정하기 위해 이들 명령을 디코드한다.
인출 레지스터(110)는 각 이슈 스테이지 동안, 4개의 명령을 동시에 ISU(200)에 제공하기 때문에, ISU(200)는 각 이슈 스테이지 동안 4개의 명령까지 이슈할 수 있다. 그러나, ISU는 각 이슈 스테이지의 이슈 윈도우에서의 4개의 명령을 예측된 PC 순서로만 이슈할 수 있다. 따라서, 임의의 다른 이슈 제약으로 인해, 현행 이슈 윈도우의 명령이 이슈될 수 없다면, 이 명령 전의 이슈 윈도우 슬롯의 명령만이 현행 이슈 스테이지동안 이슈될 수 있다. 선택적인 실시예에서, 인출 레지스터(110)는 이슈 스테이지당 4개 이상 또는 이하의 명령을 ISU(200)에 제공하도록 구성될 수 있기 때문에, ISU(200)는 이슈 스테이지마다 4개 이상 또는 이하의 명령까지 이슈하도록 구성될 수 있다. 도 8을 참조하면, FPU(600), FXU(601), FXAGU(602) 및 LSU(603)는 이슈된 명령을 위해 이 명령들로 디스패치된 명령 데이타를 기억하기 위한 예약 스테이션(reservation station) 또는 큐를 갖는다. 그러나, 이슈 스테이지동안, 예약 스테이션의 일부는 디스패치된 명령 데이타를 기억하는데 이용가능한 충분한 기억 엘리먼트 또는 엔트리를 가지지 못할 수 있다. 그러므로, FPU(600), FXU(601), FXAGU(602) 및 LSU(603)는 얼마나 많은 엔트리가 디스패치된 명령 데이타를 수신하는데 FPU(600), FXU(601), FXAGU(602) 및 LSU(603)의 예약 스테이션에서 이용가능한지를 각각 표시하는 ENTRIES_AVAIL 신호를 출력한다. 따라서, ISU(200)는 얼마나 많은 엔트리가 ENTRIES_AUAIL 신호에 의해 지시되는 것과 같이 이용가능한 지에 기초하여 부동소수점, 고정소수점 및 로드/기억 명령을 이슈한다.
또한, 예시적인 CUP(51)에서, FXU(601)는 프로그램 제어 명령, 곱셈/나눗셈 명령 및, 고정소수점 데이타 계산과 관련된 제어 레지스터 판독/기록 명령을 실행하는 DFB(62) 내의 실행 유닛이다. 따라서, 이 경우에 ISU(200)는 FXU(601)에 의한 실행을 위해 이들 종류의 명령을 이슈한다. 선택적인 실시예에서, FXAGU(602)는 프로그램 제어 명령, 곱셈/나눗셈 명령 및, 고정소수점 데이타와 관련된 제어 레지스터 판독/기록 명령을 실행하도록 또한 구성될 수 있다. 이 경우, ISU(200)는 또한 FXAGU(602)에 의한 실행을 위해 이들 종류의 명령을 이슈할 수 있다. 더욱이, 실행 유닛(600-603)은 이슈된 명령을 각각 실행하거나 수행할 수 있는 하나 이상의 기능 유닛을 포함할 수 있다. 따라서, 이슈될 수 있는 명령의 수는 각 실행 유닛 내의 기능 유닛의 수에 의존한다.
도 7를 다시 참조하면, PSU(300)는 ISU(200)에 의해 명령이 이슈되는 것에 이슈 제약을 부과할 수 있다. PSU(300)는 만약 그렇다면, 인출 레지스터(110)로부터 수신된 명령이 현행의 이슈 스테이지동안 이슈될 수 없다는 것을 나타내는 ISSUE_KILL 신호를 출력할 수 있다. 차후 더 상세히 설명되는 것과 같이, ISSUE_KILL 신호는 예외가 검출된 후에 또는, 차후 설명되는 동기화 명령의 실행, 완료, 비활성화 및 리타이어먼트 동안, PSU(300)가 오류 명령으로 백업되거나 백스텝될때 어서트된다.
특정 타입의 명령에 대해서, ISU(200)는 CPU(51)가 이들 각 동기화(동기) 명령을 이슈하기 전에, 동기화되는(동기되는) 것을 확실하게 한다. CPU(51)는 특정 명령 전의 모든 명령이 이슈되고, 실행되고 완료되고 비활성화되고 리타이어되면 특정 명령에 대해 동기화된다. 따라서, ISU(200)는 인출 레지스터(110)로부터 수신된 명령 각각이 동기화 명령인 지를 판정할때, 그 명령에 앞서 이슈 윈도우 슬롯의 명령이 이슈될때까지 또는, CPU(51)가 동기화되었는 지를 표시하는 PSU(300)로부터의 MACHINE_SYNC 신호를 수신할때까지 대기한다. 특정 타입의 명령이 발생하면, 이 명령은 최초의 PC값(즉, 슬롯 0)을 갖는 명령을 위해 이슈 윈도우의 슬롯에 존재하며, ISU(200)는 그것을 이슈한다. 예시적인 CPU(51)가 이전에 설명된, 특정 명령 타입에 대한 머신 상태의 동기화 방법을 구현하더라도, 커미트된 명령이 비추측적임이 보증된 이후에, 선택적인 기술이 이전 명령의 커미트 후에 동기화 명령의 이슈을 허용할 수 있다.
ISU(200)는 SPARC-V9 아키텍쳐 매뉴얼에서 설명된 바와 같은, 명령의 이슈을 달성하는 이슈 트랩을 또한 검출한다. ISU(200)는 제어 레지스터 파일(800)로부터 제어 레지스터(CNTRL_REG) 필드를 수신하고, 인출 레지스터(110)로부터 수신된 명령(F_INSTs_BRPs)을 디코드하여 이슈 트랩의 어떤 타입이 이슈 스테이지 동안 이슈되었는지를 검출한다. 이는 SPARC-V9 아키텍쳐에 기초한 실시예에서, SPARC-V9 아키텍쳐 매뉴얼에 따라 이루어진다. 더욱이, 이슈 트랩의 다른 타입이 레지스터 제어를 요구하지 않으며, ISU(200)에 의해 검출된 명령 오피 코드(opcode)에 기초하여 수취되고 검출된다.
최초의 이슈 윈도우 슬롯의 명령에 의해 발생된 이슈 트랩만이 수취된다. 그러므로, 하나 이상의 이슈 트랩이 검출되면, 최초의 슬롯의 명령을 발생시키는 이슈 트랩의 슬롯 이전의, 이슈 윈도우 슬롯의 명령만이 ISU(200)에 의해 이슈될 수 있다. 더욱이, 종종 발생하는 이슈 트랩에 대해, CPU(51)가 상기 설명된 방식으로 동기화되어, 이슈 트랩은 추측적으로 수취되지 않는다. 선택적인 실시예에서, CPU(51)는 로직을 감소시키고 단순화하기 위해 이슈 트랩이 슬롯 0에서만 발생되도록 구성될 수 있다.
각 이슈 스테이지 동안, ISU(200)는 이슈된 각 명령에 대해 일련 번호를 배분(할당)하고 이들 일련 번호(SNs)를 DFB(62)로 디스패치한다. 차후 상세히 설명되는 바와 같이, PSU(300)는 할당된 일련 번호를 사용하여 이슈된 명령을 트래킹한다. 또한, 예시적인 CPU(51)에서, PSU는 이슈된 그러나 아직 리타이어되지 않은 명령의 소정의 번호만을 언제라도 트래킹할 수 있다. 그러나, 이슈된 명령이 리타이어될때, 이들 일련 번호는 이용가능하게 된다. 따라서, PSU(300)는 얼마나 많은 일련 번호가 현행의 이슈 스테이지에 이용가능한지를 나타내는 신호 및 이들 이용가능한 일련 번호를 포함하는 신호를 포함하는 SN_AVAIL 신호를 ISU(200)에 제공한다. 만일 현행의 이슈 스테이지 동안, SN_AVAIL 신호가 현행 이용가능한 일련 번호의 수가 이슈될 수 있는 명령의 수보다 작다고 표시하면, 일련 번호가 할당될 수 있는 최초의 슬롯에서의 명령만이 실제로 이슈된다.
또한 이슈 스테이지 동안, ISU(200)는 CPU(51)의 머신 상태의 체크포인트가 모든 명령에 대해 형성되어야 하는지를 판단한다. 차후 상세히 설명되는 바와 같이, 체크포인트는 명령의 임의의 타입에 대해, 소정의 이슈 스테이지 간격에서 형성된다. 따라서, ISU(200)가 이슈될 임의의 명령이 체크포인트를 필요로 하는지를 결정하고 또는 PSU(300)가 체크포인트가 형성된 최종 이슈 스테이지 이후 이슈 스테이지의 소정의 수가 발생되었다는 것을 TIMEOUT_CHKPT 신호를 가지고 나타낼때, ISU(200)는 DO_CHKPT 신호를 이슈시켜 PSU(300), 제어 레지스터 파일(800), BRB(59) 및 DFB(62)가 CPU(51)의 머신 상태의 체크포인트를 형성하도록 한다.
또한, ISU(200)는 각 명령에 체크포인트 번호를 할당하고 이들 체크포인트 번호(CHKPT_Ns)를 DFB(62)로 디스패치한다. 이렇게 하면, 체크포인트가 형성되어진 각 명령은 새로운 체크포인트 번호를 할당받으며, 체크포인트가 형성되지 않은 명령은 이전 체크포인트의 체크포인트 번호를 할당받는다. PSU(300)는 형성된 체크포인트를 할당된 체크포인트 번호를 이용하여 트래킹할 수 있다.
PSU(300)는 할당된 일련 번호를 이용하여 형성되었지만 아직 리타이어되지 않은 체크포인트의 소정의 번호를 언제라도 트래킹할 수 있을 뿐이다. 그러나, 체크포인트가 리타이어될때 체크포인트 번호는 이용가능하게 되기 때문에, PSU(300)는 ISU(300)에 얼마나 많은 체크포인트 번호가 현행의 이슈 스테이지에 대해 이용가능한지를 나타내는 신호 및 이용가능한 체크포인트 번호를 포함하는 신호를 포함하는 CHKPT_AVAIL 신호를 제공한다. 따라서, CHKPT_AVAIL 신호가 현행 새로운 체크포인트의 수가 새로운 체크포인트가 형성될 것을 요구하는 명령의 수보다 적다고 표시할때 새로운 체크포인트 번호가 할당될 수 있는 최초의 이슈 윈도우 슬롯의 명령만이 실제로 이슈된다.
또한, CPU(51)은 이슈 스테이지당 체크포인트의 소정의 수만을 형성하도록 구성될 수 있다. 따라서, 예컨대, CPU(51)가 이슈 스테이지당 하나의 체크포인트를 형성하고 이슈 윈도우에서 체크포인트가 형성되도록 요구하는 명령이 2개라면, ISU(200)는 현행 이슈 스테이지 동안 최초의 슬롯에 있는 명령만을 이슈하고 다른 이슈 스테이지에서 또하나의 명령을 이슈한다.
차후 설명되는 바와 같이, CPU(51)는 프로세서 작업 처리량을 향상시키도록 레지스터 리네임 처리를 채용한다. 레지스터 리네임 처리를 적절하게 구현하기 위해, ISU(200)는 레지스터 리네임 프리리스트 유닛(FREELIST)으로부터 REGS_AVAIL을 수신한다. 도 8을 참조하면, 이들 신호는 얼마나 많은 고정소수점 레지스터 파일의 물리적 고정소수점 레지스터 및 리네임 유닛(FXRFRN)(604)이 리네임 처리에 이용가능한지, 얼마나 많은 부동소수점 레지스터 파일의 부동소수점 레지스터 및 리네임 유닛(FPRFRN)(605)이 리네임 처리에 이용가능한지, 얼마나 많은 부동소수점 상태 및 조건 코드 레지스터 파일의 물리적 정수 및 부동소수점 조건 코드 레지스터 및, 리네임 유닛(FSR/CCRFRN)(606)이 리네임 처리에 이용가능한지를 나타내는 신호를 포함한다.
상기 이슈 제약은 이슈 결정의 개념을 설명하기 위해 예시적인 CPU(51)에 관련하여 설명되었다. 더욱이, 그 구현은 서로 다른 및 설명된 이상 및 이하의 이슈 제약과 관련될 수 있지만, 여기에서 설명된 바와 같이 이슈 결정의 기본적 개념을 벗어나지 않는다. 따라서, 당업자는 이슈 제약이 그 구현에 따라 좌우되며, 여기에 설명된 본 발명이 설명된 이슈 제약에 의해 제한되지 않음을 이해한다.
2.명령 일련 번호 할당 및 명령 상태 기억
예시적인 CPU(51)는 명령이 실행을 완료하고 최종적으로 리타이어될때까지 명령이 이슈되는 시점에서 명령과 관련된 고유의 식별 태그를 할당한다. 연속적인 일련 번호가 통상적으로 명령 식별 태그로서 사용된다. 일련 번호는 각 스테이지 동안 및 예외가 없는 처리 동안의 실질적으로 모든 블록에 의해 및, 예외 및 예측 오류가 발생할때 CPU(51)의 복구 동안 사용된다. 명령 상태 정보는 CPU(51)에 기억되며, 실행 완료 신호, 실행 에러 신호 및 분기 명령 예측 오류등과 같은, 상태에 있어서의 변화에 응답하여 계속적으로 갱신된다. ISB(61)내에 있는 정규 상태 유닛(PSU)(300)은 명령 일련 번호 태그를 할당하고, 다른 CPU(51) 유닛으로부터, 특히 DFB(62)로부터 수신된 신호에 응답하여 명령 상태를 트래킹하는 기능을 한다.
도 9를 참조하면, 정규 상태 유닛(PSU)(300)은 기능적으로 ISB(61) 내에 있으며, (1)CPU(51)의 명령의 이슈, 실행, 완료 및 리타이어먼트 상태를 트래킹하고, (2)분기 예측 오류 복구를 검출하고 개시하고, (3) 명령 일련 번호, 체크포인트 및 워치포인트를 포함하는 어떤 머신 자원의 이용가능성을 트래킹하고, (4)일반적인 예외를 처리 및 제어하는 기능을 한다. PSU(300) 내의 몇개의 유닛은 도 9에 도시되고 차후 더 상세히 설명되는 바와 같이, 상기 기능을 달성하도록 구현된다.
PSU(300)는 모든 이슈된 명령에 대한 활동 상태 정보를 명령이 리타이어될때까지 유지하는 이슈/커미트/리타이어 유닛(ICRU)(301)을 포함한다. ICRU(301)는 ISU(200)에게, 다음 명령 이슈 사이클에서 ISU(200)에 의한 사용을 위해 4개의 명령 일련 번호(SN's)까지 식별하는 신호(SN_AVAIL)를 공급한다. ISU(200)가 명령을 이슈하는 시점에서, ISU(200)는 상기 설명된 바와 같이, 일련 번호가 할당되고 일련 번호가 각 명령과 관련되는지를 나타내는 ISSUE_VALID 신호의 형태로, ISU에 의해 유효하게 발생되는, 이전 사이클에서 ISU에게 제공되는 4개의 일련 번호까지 ICRU에게 통지한다. 이슈 제약은 명령 윈도우의 모든 명령을 이슈하는 ISU의 능력을 제한한다. ICRU(301)는 상태 정보 및 상태 정보에 대한 어드레스 포인터를 기억하고 유지하여 ISU(200)에 의해 유효하게 이슈되는 모든 명령에 대한 명령 이슈, 실행, 완료, 비활성 및 커미트 및 리타이어먼트 위상 상태를 명령의 타입과 관계없이 트래킹한다. ISU(200)는 어떤 이슈된 명령이 비활성화를 허용하는 무작동 및 임의의 프로그램 제어 명령과 관련있는지를 명령이 이슈된 스테이지와 동일한 스테이지에서 알려준다. ISSUE_NOP는 명령 스트림으로 삽입될 수 있는, 예컨대 정지 또는 지연을 유도하는 것과 같은 특정 무작동 명령에 제한되지 않는다. 로드/기억 명령 및 CPU(51)의 외부에 있는 메모리과 관련된 다른 명령과 같은 긴 대기시간 명령을 능동적으로 스케줄링할때, ISU(200)는 슬롯(0-3)에서의 어떤 명령이 긴 대기시간을 갖는지를 나타내는 ISSUE_MEM 신호의 형태로 ICRU(301)에게 또한 알린다.(긴 대기시간 명령을 능동적으로 스케줄링하는 것은 본 발명의 기본적인 구조 및 방법에 대한 향상으로서 따로 설명된다)
a. 이슈/커미트/리클레임 유닛(ICRU)
이슈/커미트/리클레임 유닛(ICRU)(301)은 기능적으로 PSU(300) 내에 있으며, n-비트의 연속적인 일련 번호와 같은 명령 태그를 할당하며, CPU(51)의 외부에 있는 메모리의 명령 상태 정보를 위한 데이타 기억 영역을 형성하고 유지함으로써 모든 이슈된 명령에 대한 활동 상태 정보를 유지한다. 도 10은 ICRU(301)의 구성요소 및 ICRU 동작과 관련된 입력 및 출력 신호의 기능 블록도를 도시한다. ICRU(301)는 기능적으로 4개의 영역으로 조직된다. 명령 상태 정보 데이타 구조(308)는 명령 상태 정보를 기억하고, 다른 CPU(51) 유닛, 즉 DFB(62)로부터의 신호에 응답하는 신호 데이타 구조 제어 로직(309)에 응답하여 상태를 갱신한다. 포인터 데이타 구조(310)는 CPU(51)에서 이슈되고, 완료되고, 리타이어되는 등과 같은 다양한 명령 스테이지 이정표에 대해 상태 포인터로서 기능하는 다수의 일련 번호를 개별적으로 기억하기 위한 데이타 기억 영역을 포함한다. 이들 일련 번호 포인터는 본 명세서에서 차후 상세히 설명된다. 포인터 제어 로직(311)은 일련 번호 포인터를 갱신한 다음 현행의 CPU(51) 상태에 반영하기 위해, 다른 CPU(51)로부터 수신된 데이타와 함께, 데이타 구조(308)에 기억된 상태 정보를 평가하는 기능을 한다. 포인터 값은 ICRU(301) 및 PSU(300)로부터 CPU(51)의 다른 유닛으로의 글로벌 출력으로서 제공된다.
명령 상태 정보 데이타 구조(308)는 활성 명령 링 레지스터(A-ring)(312)를 포함하며, 메모리 명령 링 레지스터(M-ring)(324)를 선택적으로 포함할 수 있다. 메모리 명령 링 레지스터는 본 명세서의 다른곳에서, 로드/기억 명령의 능동적인 스케줄링과 관련하여 설명된다. 데이타 구조 제어 로직(309)은 A-링 세트/클리어 로직(313)을 포함하며 선택적으로 M-링 세트/클리어 로직(325)을 포함할 수 있다. 포인터 제어 로직(311)은 ISN/NISN 초기화 및 진행 로직(321), 다음 명령 일련 번호 할당 로직(322), 및 CSN/RRP 진행 로직(323)을 포함하며, 선택적으로 NMCSN 진행 로직(326), 머신 동기화 발생 로직(327), 및 백트래킹 모드 포인터 조절 로직(328)을 포함할 수 있다. 선택적인 구성요소는 본 발명의 구조 및 방법의 향상시키며, 이하 더 상세히 설명된다.
명령 이슈 스테이지 동안의 이슈/커미트/리클레임 유닛의 동작이 도 10을 참조하여 지금부터 설명된다. 이슈된 명령에 대한 할당을 위해 ISU(200)에 전송된 일련 번호(SN_AVAIL)는 포인터 데이타 구조(310) 내의 포인터 값에 기초하여 ICRU의 일련 번호 할당 로직에 의해 선택된다. CPU(51)가 초기화되면(파워-업 등) 포인터 데이타 구조(310) 내의 포인터는 또한 ICRU가 최초로 제1 일련 번호를 이슈 윈도우의 명령을 위해 ISU(200)(예컨대, SN's 0-3)에 할당하도록 초기화될 수 있다.
ISU(200)는 ISSUE_VALID 신호를 데이타 구조 제어 로직(306)에 전송하여 어떤 일련 번호(예컨대, 4개의 SN중 어떤 것인지)가 ISU(200)에 의해 유효하게 이슈되는 이전 사이클에 제공되는지와 어떤 명령 슬롯인지를 IRCU에게 알려준다. 세트/클리어 A-링 제어 로직(313)은 이 정보 및 포인터 레지스터(310) 내의 포인터값을 이용하여 명령 상태 정보를 A-링(312)에 기록한다. CPU(51)의 일실시예에서, ISSUE_VALID는 어떤 명령 일련 번호(SN_AVAIL)가 명령이 실제로 이슈된 명령 슬롯을 식별함으로써 ISU(200)에 의해 사용되었는지를 ICRU에게 알려주는 4비트 벡터이다. 그런 다음 ICRU는 어떤 SN이 SN_AVAIL 및 ISSUE_VALID에 기초하여 사용되는지를 판단할 수 있다.
활성 명령 링(312)의 실시예가 도 11의 개략적인 도면을 참조하여 설명된다. 도 11의 데이타 구조는 예시적이며, 당업자는 본 발명의 견지에서, 다양한 데이타 구조가 활성 명령 상태 레지스터를 구현하는데 사용될 수 있음을 이해한다. 도 11은 64비트 데이타 구조로서 구현된 활성 명령 링(A-링)(312)을 도시한다.(메모리 명령 링(M-링)(324)은 또한 개략적으로 도시되며 긴 대기시간 명령의 능동적인 스케줄링에 대한 향상과 관련하여 본 명세서의 다른곳에서 설명된다) A-링(312)의 64개의 어드레셔블 위치는 CPU(51)에서 명령 일련 번호에 해당한다. 각 활성-비트(A-비트)의 세트된(1) 또는 클리어된(0) 상태는 명령이 CPU(51)에서 활성 상태(1) 또는 비활성 상태인지를 나타낸다. 기본적으로, 명령은 이슈된 경우 활성화되고 명령이 에러없이 실행 완료되고 잘못 예측되지 않은 경우 비활성화된다. 단일 머신 사이클에서 이슈되어 유효하게 실행을 완료하는 명령에 대해, A-비트는 명령의 이슈때 클리어된다. A-링(312)의 어드레셔블 위치의 수는 CPU에서 현행 이슈될 수 있는 명령의 수를 제한한다.
예시적인 프로세서에서, A-링(312)은 포인터가 modulo-A-링 레지스터 길이 타입 산술(여기에서 modulo-64 타입 산술)을 이용하여 데이타 구조를 따라 이동하는 원형, 링 또는 주위를 둘러싼 형태의 데이타 구조로서 구현된다. 즉, 포인터가 제1 데이타 기억 위치(어드레셔블 비트 0)에서 인크리먼트적으로 일련의 중간 기억 위치(예컨대, 위치 15, 16,...)를 통해 최종 데이타 기억 위치(어드레셔블 비트 63)로 이동하며, 그런 다음 제1 위치(어드레셔블 비트 0)로 리턴한다. 당업자는 본 발명의 견지에서, 원형의 데이타 구조가 바람직하더라도, 본 발명에 필수적인 것은 아니며, 본 발명의 특징을 구현하는데 다른 데이타 구조가 사용될 수 있음을 이해한다. 또한, 예시적인 A-링이 요구되는 상태 정보를 유지하기 위해 64개의 단일-비트 어스레스가능한 위치를 가지더라도, 다수-비트 어드레셔블 위치가 이들 또는 추가의 상태 지시자를 기억하기 위해 선택적으로 제공될 수 있다. 예컨대, 일실시예에서, 임의의 회전을 갖는 64비트 레지스터가 사용되며, 제2 실시예에서는, 8개의 8-비트 레지스터가 64개의 A-링(312) A-비트를 제공하도록 사용된다. 간단한 디코딩 회로에 의해 차후 설명되는 바와 같이 비트를 기록(세트 및 클리어)할 수 있다.
ISU(200)에 의한 명령 이슈에 의해 명령에 명령 일련 번호가 할당된다. 할당가능한 일련 번호의 번호는 A-링(312)의 어드레셔블 위치(예컨대 비트 위치)에 의해 제한된다. 그러므로 각각의 어드레셔블 A-링 위치는 고유의 일련 번호에 대응한다. 예컨대, 예시적인 64-비트 원형 A-링에 대해, 64개의 명령 일련 번호가 동시에 할당될 수 있다. 64개 이상 또는 이하의 일련 번호가 이상 또는 이하 A-링 위치를 제공함으로써 할당될 수 있다. 만일 모든 일련 번호가 할당되면, 추가의 명령 이슈은 일련 번호 및 A-링 상의 위치가 차후 머신 사이클에서 이용가능할때 까지 ISU(200)에 의해 정지되어야 한다. ISU(200)는 SN이 SN-AVAIL 신호에 의해 이용가능한지의 여부를 통지 받는다. A-링(312)의 각 어드레셔블 위치는 이용가능한 일련 번호 각각에 대응하여, A-링에서의 엔트리는 이슈된 각 명령을 대해 하나씩 이슈된 일련 번호 포인터(ISN)(314)의 진행에 의해 각각의 새롭게 이슈된 명령에 대해 형성된다. 복수의 명령이 단일 머신 사이클동안 이슈되기 때문에, 하나 이상의 A-비트가 각 사이클동안 세트될 수 있으며, 그에 의해 ISN은 각 사이클에서 하나 이상의 A-링 위치만큼 진행될 수 있다.
ISU(200)에 의한 명령 디스패치는 실행을 위한 명령의 활성화(할당된 일련 번호를 가짐) 및 DFB(62)로의 전송이다. 모든 디스패치된 명령은 또한 이슈된 명령이지만, 모든 이슈된 명령이 디스패치되는 것은 아니다. 모든 디스패치된 명령은 명령이 머신 내에서 활성 상태임을 표시하기 위해(1=활성 상태, 0=비활성 상태) 1로 세트된, A-링(312)에서 할당된 일련 번호에 대응하는 비트를 갖는다. 이슈되었지만 디스패치되지 않은 명령은 공지된 분기 또는 무작동-타입 명령에 대응하며, 이들 명령에 대해 A-비트는 이슈때 클리어된다(세트되지 않음). 이들 공지된 분기 및 무작동-타입 명령은 실행 유닛이 작동하는 것을 요구하지 않으며, 단일 스테이지에서 이슈되고, 실행되며, 완료될 수 있다.
b. 명령 이슈 관련 포인터 및 이슈 스테이지 동안의 포인터 유지
도 11은 포인터 기억 메모리 영역(310)에 기억되며 A-링(312) 및 M-링(324) 상의 위치를 가리키는 몇개의 포인터(ISN, NISN, CSN, RRP, NMCSN 및 PBSN)를 도시한다. 각 포인터는 A-링의 각 위치값(0-64)을 기억하는 포인터 기억 유닛(210)의 엘리먼트이다. 포인터의 어떤 조합은 동일한 A-링 또는 M-링 위치를 가리킬 수 있지만, 다른 조합은 그렇게 할 수 없다. 예컨대, NISN은 ISN과 절대로 동일할 수 없지만, 머신에서는 CSN=ISN=RRP로 동기화한다. 이슈된 일련 번호 포인터(ISN)(314) 및 다음 이슈된 일련 번호 포인터(NISN)(315)는 명령 이슈 상태를 유지하고 트래킹하며, 일반적으로 다른 포인터의 장점을 제한한다. 커미트된 일련 번호 포인터(CSN)(316)는 명령의 실행, 완료 및, 포인터가 특히 제공되지 않는 비활성화 다음에 오는 명령 커미트먼트를 트래킹한다. 리타이어 및 리클레임 포인터(RRP)(317)는 명령 리타이어먼트를 트래킹하고 자원 리클레임을 제어한다. 2개의 추가적인 포인터, 즉 최초로 예측된 분기 명령 포인터(PBSN)(318) 및 비메모리 커미트된 일련 번호 포인터(NMCSN)(319)는 예측된 분기 명령 및, 로드/기억 명령과 같은 긴 대기시간 명령을 스케줄링하고 트래킹하는데 사용된다. ICRU(301)은 ISN, NISN, CSN, RRP 및 NMCSN 각각에 대한 현행 값을 CPU(51) 내에 있는 다수의 다른 유닛에 제공한다. ICRU는 차후 설명되는 바와 같이, PSU(300) 내의 워치포인트 유닛(308)으로부터 PBSN(318)의 값을 수신한다. 이들 각 포인터는 예시적인 CPU에서 6-비트 벡터로서 구현된다.
이슈된 일련 번호 포인터(ISN)(314)는 항상 최종적으로 이슈된 명령의 일련 번호를 가리킨다. 명령은 ICRU에 의해 공급되는 각 일련 번호가 ISU(200)에 의해 실제로 할당될때, 이슈되는 것으로 고려된다. ISN 및 NISN은 상기 사이클동안 얼마나 많은 명령이 실제로 이슈되는지를 ICRU에게 알려주는 ISU(200)으로부터의 ISSUE_VALID에 응답하여 인크리먼트된다. ISN 및 NISN이 인크리먼트될때, 포인터는 실제로 A-링(312) 둘레로 진행된다. ISN이 모든 머신 사이클을 진행할 수 있는 위치의 최대수는 머신의 피크 이슈율에 의해 결정되지만, 하드웨어 제어의 다른 소프트웨어에 의해 사이클당 명령의 이보다 적은 소정의 최대수로 제한될 수 있다. 예컨대, 예시적인 CPU에서, ISN 및 NISN의 진행은 머신 사이클당 4개의 명령 일련 번호(A-링 위치)로 제한된다. CPU가 초기화될때 ISN은 0(제로)로 초기화되며, 추가적인 명령이 이슈되면 ISN은 새롭게 이슈된 명령의 수만큼 진행된다.
다음의 이슈된 일련 번호 포인터(NISN)(315)는 항상 ISN+1(modulo A-링 길이)을 가리키기 때문에, 만일 ISN=63 이면, NISN=0이다. A-링(312)은 64개의 엔트리를 포함하며, NISN=ISN+1(modulo 64)이다. 이 다음의 이슈된 일련 번호 포인터는 본질적으로 이슈될 다음 명령의 일련 번호가 된다.(모든 명령은 예측된 PC 순서로 이슈된다). 개별 포인터 NISN을 제공하는 것이 간편하더라도, NISN은 항상 ISN보다 1이 크기 때문에 ISN은 단독으로 몇개의 실시예에 사용될 수 있다. CPU가 초기화되면, NISN은 1로 초기화되며, 추가적인 명령이 이슈되면, NISN은 새롭게 이슈된 명령의 수만큼 진행된다. ISN 및 NISN의 초기화 및 진행은 ISU(200)로부터의 ISSUE_VALID에 응답하여 ISN/NISN 진행 로직 유닛(321)에 의해 구현된다.
ICRU(301)는 이슈될때 명령에 할당될 수 있는 4개의 이용가능한 명령 일련 번호를 ISU(200)에 제공한다. 적절한 4개의 명령 일련 번호의 결정은 ISN(314) 및 NISN(315)의 현행값에 기초하여, 포인터 제어 로직 유닛(311) 내의 다음 명령 일련 번호 할당 로직(322)에서 이루어진다. RRP(317)는 만일 CU가 완전히 채워졌으면, 즉 모든 SN가 할당되었고 리클레임될 수 없다면, SN의 할당을 제한한다. ICRU(301)는 만일 일련 번호가 SN_AVAIL 신호를 ISU(200)로 전송함으로써 이용가능하면 이슈된 명령에 할당되어야 하는 다음 일련의(4개의) 일련 번호를 ISU(200)에게 알려준다.
CPU(51)의 일실시예에서, SN_AVAIL은 이슈 윈도우의 슬롯 0-3에 4개의 명령까지 할당되어지는 일련 번호를 식별하는 4개의 7-비트 신호(SN_SLOT_0, SN_SLOT_1, SN_SLOT_2, SN_SLOT_3)로 구성되어 있다. 만일 이러한 일련 번호에 대한 유효성 비트가 세트되지 않으면, 명령 일련 번호가 CPU(51)에서 아직 활성 상태이며, ISU에 의해 사용되지 않아야 한다. 가용성 비트는, 만일 64 비트 A-링(312)에 의해 지원되는 모든 64개의 명령이 CPU(51)에서 활성 상태에 있으면 세트되지 않을 수 있다. 일련 번호가 사용가능한 경우에만 ISU(200)는 명령을 이슈할 수 있기 때문에, ISU는 추가적인 명령이 이슈되기 전에, 이전에 이슈된 명령이 커미트되고 리타이어될때까지 대기해야 한다. 명령 커미트먼트 및 리타이어먼트는 차후 설명된다.
도 12는 A-링 비트 세트/클리어 로직(ASCL)(313)의 구조를 포함하는, 차후 상세히 설명될 상태 제어 로직 유닛(309)을 도시한다. ASCL(313)은 세트 로직(331) 및 클리어 로직(333)뿐만 아니라 세트 및 클리어 로직 유닛(331,333)과 각각 관련된 어드레스 디코드 로직 유닛(332,334)을 포함한다. 세트 로직 유닛(331)은 ISU(200)로부터의 ISSUE_VALID 신호 및, 어드레스 디코드 로직 유닛(332)으로부터의 NISN 포인터 어드레스를 수신한다. A-링 세트 로직 유닛(331)은 그런 다음, ISU에 의해 이슈된 명령의 번호에 대응하는 A-비트를 A-링 기록 포트(342)를 통해 세트한다. A-비트는 명령이 비활성화되고 또는 CPU가 리셋되면 클리어된다. 기록 포드(342)의 번호는 각 사이클에서 활성화된(비활성화된) 명령의 마커를 지원하도록 선택된다. M-링(342)과 관련되어 도 12에 도시된 다른 구조가 긴 대기시간 명령의 능동적 스케줄링 및 명령 커미트먼트 및 리타이어먼트와 관련하여 차후 설명된다.
일실시예에서, ISSUE_VALID는 위치 비트-i에서의 어서트(assertion)(비트가 1 로 세트되거나 또는 안정 상태의 고신호 레벨)가 i번째 명령 이슈 윈도우 슬롯의 명령이 이슈되었음을 나타내는, ISU(200)로부터 수신된 4비트 벡터이다. ICRU(301)는 어떤 일련 번호가 어떤 슬롯과 관련되는지를 상기 설명된 SN_SOLT_i 신호에 의해 알 수 있다. 명령은 순차적인 프로그램 순서로 이슈되기 때문에, 4개의 명령 이슈 CPU에서 ISSUE_VALID에 대한 단지 5개의 가능한 상태(0,1,11,111 및 111)가 있다. ICRU는 설명된 바와 같이, 또한 명령이 무작동 타입 명령임을 ICRU에게 알려주는 ISU로부터의 무작동 타입 명령 신호(ISSUE_NOP)를 수신한다. CPU(51)의 일실시예에서, ISSUE_NOP는 위치 비트-i에서의 어서트가 슬롯의 i번째 명령이 비작동 부류의 명령임을 가리키는, 4-비트 신호이다. 로드/기억 명령을 능동적으로 스케줄링하는 것을 구현하는데 있어서, ISSUE_MEM은 위치 비트-i에서의 어서트가 슬롯의 i번째 명령이 메모리 관련 명령인, 4-비트 신호이다.
일반적으로, 무작동(nop) 명령은 분기와 같은 제어 전송 명령이거나 ASR 기록, FPRS 기록, 또는 PIL 기록 명령이다. 명령 ASI 기록, FPRS 기록 및 PIL 기록은 DFB(62)에서가 아닌 대응하는 제어 레지스터 유닛(800)에서 실행되며, 그에 따라 NOP-타입 명령으로서 취급된다. 동시에, 그 대응하는 ISSUE_NOP는 '1'로 세트되어, A-비트는 '0'으로 세트된다. Tcc 명령은 CC를 알지 못할때 이슈되지 않는다. Tcc명령은 만일 CC가 공지되고 잘못되었으면, NOP 명령으로서 이슈된다. Tcc 명령은 다른 경우에 있어서, ISSUE_NOP=0에 의해 이슈된다. 이들 명령은 DFB(62) 실행 유닛을 필요로하지 않으며 이슈될때와 동일한 머신 사이클에서 실행되고 일반적으로 완료한다. 대응하는 명령이 분기 명령과 같은 무작동 명령 부류일때, ISSUE_NOP는 1로 세트된다. ISSUE_NOP가 1로 세트되면, 대응하는 A-비트는 '0'으로 세트되는데, 즉 명령은 즉시 비활성화되고 커미트가능하게 된다.(명령 커미트먼트 및 커미트먼트에서의 A-비트의 수정이 차후 설명된다)
A-링의 64개의 활동 비트는 CPU에 공존하는 명령의 활동 상태를 나타낸다. A-비트는 명령이 사용되기 전에 세트되고 클리어되기 때문에 초기화할 필요가 없다. A-비트는 ISSUE_VAVLID, ISSUE_NOP 및 NISN에 따라 세트된다.
분기 명령은 이슈때 클리어된 A-비트를 가지기 때문에, CSN(316)(차후 설명 참조)이 추측적으로 실행된 분기 명령을 지나서 진행하는 것을 방지하기 위해 추가적인 단계가 취해진다. 예시적인 실시예에서, 분기 조건 코드는 분기 명령이 이슈된 시점에서 워치포인트 유닛(304)에 기억된다. 워치포인트 유닛934)는 명령 실행 및, 추측적으로 이슈된 분기 명령이 언제 완료되는지를 모니터하며, 워치포인트는 실행 결과를, 추측적인 이슈을 유효하게하는데 필요한 분기 조건 코드와 비교한다. 조건 코드 비교에 의해 추측적인 실행이 정확하게 예측되었는지를 결정할 수 있다. 만일 추측적인 실행이 잘못된 것이면, CPU(51) 복구 방법(백업 및/또는 백스텝)이 실행을 복구하도록 개시되며, 그에 의해 CSN이 클리어된 A-비트를 무시하고 잘못 예측된 분기를 지나서 진행하지 못하도록 하며, 그렇지 않은 경우에는 복구는 불가능하다. 틀리게 이슈된 명령 시퀀스의 명령 커미트먼트를 방지하도록 충분히 신속하게 머신 복구를 개시하는 것에 특별한 주의가 요구된다. 평가 이전에, 미결정 명령 자신이 잘못 예측된 명령 시퀀스의 커미트먼트를 방지한다. 워치포인트 및 CPU(51) 복구가 본 명세서의 다른 곳에서 더 상세히 설명된다.
명령 상태를 트래킹하기 위해 명령 태그를 사용하는 것과 정규 상태를 유지하는 단계를 포함하는 본 발명의 방법에 대한 실시예가 도 13-도 15의 플로우 챠트에 도시되어 있다. 도 13은 상태를 트래킹하고 정규 상태를 유지하기 위해 명령 태그를 사용하는 방법에 대한 실시예의 개략적인 플로우 챠트이다. 도 14는 정규 상태를 유지하기 위해 명령 상태를 트래킹하기 위한 본 발명의 방법에 대한 실시예의 개략적인 플로우 챠트이다. 도 15는 본 발명의 실시예에 따라, 활성 명령 링 및 메모리 명령 링에 상태 정보를 기록하고 유지하는 방법에 대한 플로우 챠트이다.
3.레지스터 리네임 처리
더 많은 명령이 머신 사이클당 ISU(200)에 의해 이슈될 수 있도록 레지스터 의존성을 제거하기 위해, CPU(51)는 이슈 스테이지동안 레지스터 리네임 처리를 실행한다. 이 처리는 1994년 10월 11일에 Shebanow 등에게 허여된 미국 특허 제5,355,427호 및/또는 상기 참조된 METHOD AND APPARATUS FOR COORDINATING THE USE OF PHYSICAL REGISTERS IN A MICROPROCESSOR 이란 명칭의 미국 특허 출원 제08/388,364호 및/또는 M. Johnson's의 논문Superscalar Microprocessor Design의 48-55쪽에 개시되어 있는 간단한 방법으로 달성될 수 있다.
도 8를 참조하면, 레지스터 리네임 처리를 구현하기 위해, DFB(62)는 FSR/CCRFRN(606)의 FXRFRN(604), FPRFRN(605) 및 CCRFRN(610)을 포함한다. 상기 간단하게 설명된 바와 같이, FXRFRN(604)는 고정소수점 데이타를 기억하기 위한 물리적 고정소수점 레지스터를 포함하며, CCRFRN(610)은 정수 및 부동소수점 조건 코드 데이타를 기억하기 위한 정수(고정소수점) 및 부동소수점 조건 코드 레지스터(XICC 및 FCCs)를 포함한다. FXRFRN(604), FPRFRN(605) 및 CCRFRN(610)은 각각 도 16에 도시된 것과 같이 각각 구성될 수 있다.
도 16에 도시된 바와 같이, 레지스터 파일 및 리네임 유닛(RFRN)(612)은 물리적 레지스터를 포함하는 물리적 레지스터 파일(614)을 포함한다. RFRN은 또한 물리적 레지스터 파일(614)의 물리적 레지스터에 대한 명령에 의해 특정된 논리적 및/또는 아키텍쳐 레지스터를 맵핑하는 리네임 맵핑 로직(613)을 포함한다. 예컨대, SPARC-V9 명령에 의해서, FXRFRN(604)의 리네임 맵핑 로직은 128개의 물리적 고정소수점 레지스터에 대해 32개 아키텍쳐 레지스터에서 80개의 논리적 레지스터로 맵핑을 실행할 수 있으며, 32개의 아키텍쳐 또는 논리적 단일 및 이중의 정도(precision) 부동소수점 레지스터는 64개의 단일의 정도(32-비트) 리네임된 부동소수점 레지스터(홀수 및 짝수)의 2개의 세트로 맵핑되고, 5개의 아키텍쳐된 또는 논리의 조건 코드 레지스터(xicc, fcc0, fcc1, fcc2 및 fcc3)는 32개의 리네임된 조건 코드 레지스터로 맵핑한다. SPARC-V9 고정소수점 명령이 도 17에 도시된 제어 레지스터 파일(800)의 CWP 레지스터에 기억된 현행 윈도우 포인터(CWP)에 따라서 논리적 레지스터로 맵핑하는 아키텍쳐 레지스터를 특정하기 때문에 아키텍쳐 레지스터에서 논리적 레지스터로 맵핑한다.
RFRN의 제어 로직(613)은 각 이슈 스테이지동안, BRB(59)의 인출 레지스터로부터 명령(F_INSTs_BRPs)을 수신한다. 그에 따라, 제어 로직(613)은 명령을 디코드하고, 어느 명령이 이 특정 RFRN의 레지스터 파일(614)로부터 소스 및/또는 목적으로서 물리적 레지스터를 필요로하는지를 결정한다.
리네임 맵핑 로직(615)은 명령에 의해 특정된 각 논리적 또는 아키텍쳐 소스 레지스터를 레지스터 파일의 현행 맵핑된 물리적 레지스터로 제1 맵핑하고, 대응하는 물리적 레지스터 태그를 TAGS_R 신호로 적절한 실행 유닛(FPU(600), FXU(601), FXAGU(602), 또는 LSU(603))의 예약 스테이션에 제공한다. 각각의 물리적 레지스터 태그를 위해서, 리네임 맵핑 로직은 맵핑된 물리적 소스 레지스터의 데이타가 소스로서 아직 이용가능한지를 식별하는 데이타-유효(DV) 비트를 갖는다. DV 비트는 리네임 맵핑 로직(615)에 의해 적절한 실행 유닛의 예약 스테이션에 DV_R 신호로 제공된다. 또한, 데이타는 DV 비트에 의해 나타나는 것과 같이 이용가능하다면, 맵핑된 물리적 소스 레지스터에 의해 DATA_R 신호로 제공된다.
각 RFRN(즉, FXRFRN(604), FPRFRN(605), 및 CCRFRN(610))에 대해, FRELIST 유닛(700)은 RFRN의 레지스터 파일(614)의 모든 프리 물리적 레지스터에 대한 리스트를 포함한다. 프리 또는 이용가능한 레지스터는 리타이어되지 않은 명령에 의해 현행 이용되지 않고 있는 레지스터이다. 이들 이용가능한 물리적 레지스터는 각 사이클에서 FREELIST 유닛(700)으로부터의 FREE_REGS 신호에 의해 식별된다.
따라서, 논리적 또는 아키텍쳐 소스 레지스터가 맵핑된 후에, 리네임 맵핑 로직(615)은, 명령에 의해 특정된 각 논리적 또는 아키텍쳐 목적 레지스터를 FREE_REGS 신호에 의해 식별되는 이용가능한 또는 프리 물리적 레지스터로 맵핑하고, 이 레지스터의 데이타가 아직 이용가능하지 않음을 나타내는 대응 DV 비트를 세트한다. 그런 다음 리네임 맵핑 로직(615)은 새롭게 맵핑된 물리적 레지스터 및 대응 DV 비트를 위한 물리적 레지스터 태그를 TAGS_R 및 DV_R 신호로 적절한 실행 유닛의 예약 스테이션에 제공한다.
더욱이, 리네임 로직(615)은 이전의 물리적 레지스터에 대한 논리적 또는 아키텍쳐 레지스터의 맵핑을 PSU(300)의 리클레임 포맷 유닛(RRF)(302)에 제공한다. 이는 이전에 맵핑된 물리적 목적 레지스터를 위한 논리적 또는 아키텍쳐 레지스터 태그 및 물리적 레지스터 태그를 RRF(302)에 LOG_OPHYS_TAGS 신호로 전송함으로써 가능하다. 각 RFRN(612)으로부터의 LOG_OPHYS_TAGS 신호는 이들 신호가 특정 RFRN으로부터 출력되고 있음을 표시하기 위한 필드를 포함한다.
RRF(302)는 도 18에 상세히 도시되어 있다. RRF는 데이타 기억 구조(366)를 포함한다. 이슈되었지만 아직 리타이어되지 않은 명령이 64개까지 일련 번호를 할당받을 수 있는 예시적인 CPU에서, 데이타 기억 구조(366)는 64개의 어드레셔블 기억 엘리먼트 또는 엔트리를 포함한다. 각 기억 엘리먼트는 각 명령 일련 번호에 대응한다. 더욱이, 데이타 기억 구조(366)의 각 기억 엘리먼트는 이전의 물리적 맵 필드에 대한 FP 또는 FX 논리적 맵 필드 및, 이전의 물리적 맵 필드에 대한 FCC 또는 XICC 논리적 맵 필드를 포함한다. 다양한 구조가 RRF(302)를 구현하기 위해 사용될 수 있다. 일실시예에서, RRF는 64개의 레지스터 x 29-비트의 4-뱅크가 삽입된 RAM으로서 구현되는데, 필드는 RRF 사이클로의 기록동안 패키지되거나 묶여지며, 백스텝 동안, 판독에 근거하여 언패키지되거나 묶인것이 풀려진다.
RRF의 제어 로직(365)은 DFB(62)로부터 LOG_OPHYS_TAGS 신호를 수신하고, FXRFRN(604)로부터의 부동소수점 레지스터 태그, FPRFRN(605)로부터의 고정소수점 레지스터 태그 및 CCRFRN(610)으로부터의 XICC 및 FCC 태그를 포함하는 지를 판정한다. 제어 로직(365)은 또한 PSU(300)의 ICRU(301)로부터 NISN 포인터를 수신하고 ISU(200)으로부터 ISSUE_VALID 신호를 수신한다. NISN 포인터 및 ISSUED_VALID 신호에 응답하여, 제어 로직(365)은 LOG_OPHYS_TAGS 신호로 수신되는, 이슈된 명령의 일련 번호를 결정한다.
예시적인 CPU(51)에서, 명령은 부동소수점 및 FCC 레지스터를 동시에 수정하거나 또는 고정소수점 및 XICC 레지스터를 동시에 수정할 수는 있지만, 고정소수점, 부동소수점, XICC 및 FCC 레지스터를 동시에 수정할 수 없다. 따라서, 고정소수점 또는 부동소수점 논리적 레지스터 태그 및 이전의 물리적 레지스터 태그가 LOG_OPHYS_TAGS 신호로 수신되는 각 명령에 대해서, 제어 로직(365)은 이들 태그(FP_TAGS 또는 FX_TAGS)를, 이슈된 명령의 일련 번호에 대응하는 기억 엘리먼트의 물리적 맵 필드에 대한 FP 또는 FX 논리적 맵 필드에 기록한다. 유사하게, FCC 또는 XICC 논리적 레지스터 태그 및 이전의 물리적 레지스터 태그가 수신되는 각 명령에 대해서, 제어 로직(365)은 이전의 물리적 태그에 대한 FCC 또는 XICC 논리적 태그를 이슈된 명령의 일련 번호에 대응하는 기억 엘리먼트의 물리적 맵 필드에 대한 FCC 논리적 맵 필드에 기록한다. 따라서, 명령이 목적 레지스터로서 부동소수점과 FCC 레지스터, 또는 고정소수점과 XICC 레지스터를 필요로하는 경우, 이 명령에 대한 LOG_OPHYS_TAGS 신호에 의해 포함된 논리적 레지스터 태그 및 이전의 물리적 레지스터 태그는 동일한 기억 엘리먼트에 기록된다. 그러나, 당업자는, RRF(302)가 고정소수점, 부동소수점, XICC 및 FCC 레지스터를 동시에 수정하는 명령을 위해 이전의 물리적 레지스터에 대한 논리적 레지스터의 맵핑을 기억하도록 구성될 수 있음을 이해한다.
따라서, RRF(302)는 순차적인 히스토리의 레저(ledger)로서 기능하여 요구된다면, 이전의 물리적 레지스터에 대한 논리적 레지스터의 맵핑 또는 그 관계가 재구성될 수 있다. 예컨대, 만일 SN=X에 대응하는 명령을 복구하는 것이 필요하게 되면, 논리적 레지스터 태그 및 이전의 물리적 레지스터 태그는 인덱스로서 SN=X를 이용하여 RRF에서 식별된다. 그런 다음, 이들 태그는 적절한 RFRN에게 제공되어, 명령 SN=X의 실행 바로 이전에 존재하는 물리적 레지스터에 대한 논리적 레지스터의 맵핑을 복구하고 새롭게 맵핑된 물리적 레지스터는 프리리스트로 리턴된다. 이는 레지스터 리네임 처리를 효과적으로 되돌리고 명령의 실행 바로 이전에 존재하는 상태로 레지스터 상태를 복구시킨다. 몇개의 명령을 복구하는 것이 필요하다면, 동일한 절차가 ISN에 의해 개시되는 스텝 원리에 의해 SN=X로 다시 디크리먼트함으로써 복구 스텝에 적용된다. 이 처리는 차후 상세히 설명된다.
도 19는 논리적 소스 레지스터(L14,L42) 및 목적 레지스터(L47)에 있어서 덧셈 명령을 위한 레지스터 리네임 처리의 예를 제공한다. 상기한 것에 따라, 논리적 소스 레지스터(L41,L42)는 물리적 레지스터(P50,P52)에 대한 리네임 맵핑 로직(615)에 의해 맵핑된다. 그런 다음, 논리적 목적 레지스터(L47)는 FREELIST 유닛(700)에 의해 제공되는 프리 물리적 레지스터(P99)로 재맵핑되며, 논리적 레지스터(L47)에 대한 논리적 레지스터 태그 및, 이전에 맵핑된(이전의) 물리적 레지스터(P78)에 대한 물리적 레지스터 태그가, 덧셈 명령에 할당된 일련 번호(SN=13)를 가지고 맵핑하기 위해 RRF에 제공된다. 이 예로부터 명백하듯이, 각 물리적 레지스터 태그는 (1)프리리스트(700); (2)FXRFRN(604), FPRFRN(605), 또는 CCRFRN(610)의 리네임 맵핑 로직; 및 (3) RRF(302)의 각각에 또는 그중 하나에 나타난다.
4.예약 스테이션에 대한 디스패치
도 8을 참조하면, 이슈 스테이지동안, FPU(600), FXU(601), FXAGU(602) 및 LSU(603)의 예약 스테이션은 BRB(59)로부터 F_INSTs_BRPs 명령을 수신한다. 그에 따라, 예약 스테이션 각각은 오피 코드 및 이들 명령으로부터의 즉시 데이타를 추출한다.
FPU(600), FXU(601), FXAGU(602) 및 LSU(603)은 또한 이슈 스테이지 동안 이슈된 명령에 할당된 일련 번호 및 체크포인트 번호를 수신한다. 이들은 ISB(62)로부터 수신된 CHKPT_Ns 신호에 의해 제공된다.
부동소수점 데이타와 관련된 산술적인 명령 및 판독/기록 명령을 실행하기 위해, FPU(600)의 예약 스테이션은 FSR(607)의 FPRFRN(605) 및 CCRFRN(610)으로부터 이슈 스테이지 동안 이용가능한 데이타, 데이타 유효 비트, 및 FP 및 CC 물리적 레지스터 태그(FP_DATA_R, FP_DV_R, FP_TAGS_R, CC_DATA_R, CC_DV_R, CC_TAGS_R)를 수신한다. 유사하게, FXU(601)는 이슈 스테이지 동안 고정소수점 데이타와 관련된 산술적, 프로그램 제어 및 판독/기록 명령을 실행하기 위해 ISB2DFB 버스상의 제어 레지스터 파일(800)로부터의 데이타와, FXRFRN(604) 및 CCRFRN(610)로부터의 이용가능한 데이타, 데이타 유효 비트, 및 FX 및 CC 물리적 레지스터 태그(FX_DATA_R, FX_DV_R, FX_TAGS_R, CC_DATA_R, CC_DV_R, CC_TAGS_R)를 수신할 수 있다. 로드/기억 명령 및 고정소수점 비-곱셈/나눗셈 산술적 명령을 위한 어드레스 생성 동작을 실행하기 위해, FXAGU(602)는 FXRFRN(604) 및/또는 CCRFRN(610)으로부터 데이타 및 FX 및 CC 물리적 레지스터 태그(FX_DATA_R, FX_DV_R, FX_TAGS_R, CC_DATA_R, CC_DV_R, CC_TAGS_R)를 수신할 수 있다. 그러나, 상기 설명된 바와 같이, FXAGU(602)는 FXRFRN(604) 및 CCRFRN(610)으로부터 적절한 이용가능한 데이타 및 물리적 레지스터 태그를 수신하는 경우에, 프로그램 제어, 곱셈/나눗셈, 및 제어 레지스터 판독/기록 명령을 실행하도록 FXU(601)와 유사하게 구성될 수 있다. 더욱이, LSU(603)는 로드/기억 명령을 실행하기 위해 이슈 스테이지 동안 FPRFRN(605) 및/또는 FXRFRN(604)으로부터 이용가능한 데이타 및, FP 및 FX 물리적 레지스터 태그(FX_DATA_R, FX_DV_R, FX_TAGS_R, FP_DATA_R, FP_DV_R, FP_TAGS_R)와 FSR/CCRFRN(606)의 FSR 레지스터의 콘텐트를 수신할 수 있다.
그런 다음, RNTRIES_AVAIL 신호에 의해 식별되는 것과 같이, 예약 스테이션의 엔트리가 이용가능한 각각의 이슈된 명령에 대해서, 예약 스테이션은 명령에 대한, 추출된 오피 코드, 일련 번호, 체크포인트 번호, 물리적 목적 및/또는 소스 레지스터 태그 및 이용가능한 데이타를 식별된 엔트리에 배치한다. 또한, 데이타가, 수신된 데이타 유효 비트에 의해 식별되는 것과 같이 이미 사용가능한 각각의 물리적 소스 레지스터 태그에 대해서, 예약 스테이션은 레지스터 태그를 갖는 데이타가 사용가능하다는 것을 나타내도록 예약 스테이션의 다른 데이타 유효 비트를 세트한다. 또한, 만일 명령이 즉시 데이타를 포함하면, 데이타가 즉시 이용가능하고 예약 스테이션 엔트리에 기억되기 때문에 데이타 유효 비트도 세트된다.
C. 명령 실행 및 완료
도 6을 다시 참조하면, 이슈 스테이지 동안, PC 로직(106)은 인출 레지스터(110)로부터 인출된 명령(F_INSTs_BRPs)을 수신하고 이들을 디코드한다. PC 로직은 또한, 디코드되는 명령이 실제 어디에서 이슈되는지를 판정하기 위해 ISU(200)로부터 ISSUE_VALID 신호를 수신한다. 하나의 머신 사이클에서 이슈되어 예측적으로 실행되고 완료될 수 있는 어떤 프로그램 제어 명령에 대해서, PC 로직은 프로그램 흐름을 예측하고, 이 예측에 기초하여 FPC, APC 및 NAPC 값을 계산한다. 모든 다른 명령에 대해서, PC 로직은 현행의 머신 사이클에 대한 FPC값 및, ISSUE_VALID 신호에 의해 지시되는 것과 같이 현행의 머신 사이클동안 얼마나 많은 명령이 이슈되었는지에 기초하여 다음 머신 사이클에 대한 FPC값을 계산한다. 물론 이들 명령에 대해서, PC 로직은 이전 머신 사이클에 대한 APC 및, ISSUE_VALID 신호가 지시하는, 얼마나 많은 명령이 현행의 머신 사이클동안 이슈되었는지에 기초하여 APC 및 NAPC값을 계산한다.
예컨대, 이슈되는 명령 모두가 SPARC-V9 BPcc, Bicc, BPr, FBPfcc 명령과 같은 조건부 분기 명령이라면, PC 로직(106)은 이 분기를 수취할것인지의 여부를 예측하는 것을 결정하기 위해 이들 명령에 대해 대응하는 BRP 필드를 디코드한다. 만일 분기가 수취되는 것으로 예측되면, PC 로직(106)은 이 명령으로부터 대체값을 추출하고, 그것을 다음 머신 사이클을 위해 새로운 FPC, APC 및 NAPC값을 계산하는데 사용한다. 만일 분기가 수취되지 않으면 FPC, APC 및 NAPC 값이 프로그램 흐름에 있어서의 무변화를 위해 통상적으로 계산된다.
그러나, 만일 이슈되는 모든 명령이 SPARC-V9 JMPL[rd=0] 명령과 같은 리턴형(return type) 점프 및 링크 명령이면, PC 로직(106)은 새로운 FPC, APC 및 NAPC값을 형성하기 위해 PC 로직(106)에 의해 사용되는, 예측된 JMPL 타겟 PC(P_JMPL_PC)를 리턴 예측 스택(105)으로부터 팝하기위해 POP 신호를 출력한다. JMP[rd=0] 명령이 서브루틴으로부터 리턴하는데 사용되기 때문에, PC 로직(106)은 SPARC-V9 JMPL[rd=15]과 같은 CALL 또는 콜형 점프 및 링크 명령이 이슈되었는지를 판정하는 언제라도 P_JMPL_PC를 리턴 예측 스택(105) 상으로 푸시하기위해 PUSH 신호를 출력한다. 리턴 예측 스택(105) 상으로 푸시된 P_JMPL_PC는 8만큼 인크리먼트된 명령에 대한 APC 값이다. 또한, P_JMPL_PC가 CALL 또는 JMP[rd=15] 명령이 이슈되는 언제라도 리턴 예측 스택(105) 상으로 푸시되기 때문에, PC 로직(106)은 P_JMPL_PC가 RETURN 명령이 이슈되는 언제라도, 리턴 예측 스택(105)로부터 팝되는 것을 보장해야만 한다.
추가적으로, 이슈된 명령은 SPARC-V9 BPA, BA, FBA 및 FBPA 명령과 같은 무조건부 분기 명령을 포함할 수 있다. 이러한 경우, PC 로직(106)은 이들 명령으로부터 대체값을 추출하고, 그들을 이용해서 FPC, APC 및 NAPC 값을 계산한다.
PC 로직(106)이 조건부 분기, 무조건부 분기, 및 JMPL[rd=0] 명령을 위해 DFB(62)로부터 추가적인 데이타를 기다릴 필요가 없기 때문에, 이러한 타입의 명령은 동일한 스테이지에서 이슈되고, 실행되며 완료될 수 있다. 또한, 이슈된 조건부 분기가 수취될지의 여부가 예측되기 때문에, 이어서 인출된 명령은 추측적으로 인출되며, 그에 따라 추측적으로 실행된다.
또한, 이슈된 명령은 콜(call) 타입의 JMPL[rd=15] 명령과 같은 JMPL[rd=0] 명령보다는 CALL 및 RETURN 명령, 및 JMPL 명령과 같은 다른 종류의 프로그램 제어 명령을 포함할 수 있다. 이 경우에, PC 로직(106)은 DFB(62)가 FPC값을 계산하는 것을 기다리고 그것을 실행 스테이지동안 DFB2BRB 버스 상에 제공한다. 도 8을 참조하면, FPC 값이 고정소수점 데이타이기 때문에, FXU(601)는 FPC 값을 계산한다. 그런 다음 완료 스테이지 동안, PC 로직(106)은 이 값을 수취하고 새로운 FPC, APC 및 NAPC 값을 형성한다.
차후 상세히 설명되는 바와같이, 임의의 이슈된 명령이 SPARC-V9 DONE 또는 RETRY 명령과 같은 트랩 처리 루틴 명령으로부터 리턴될때 PC 로직(106)은 도 7에 도시된 제어 레지스터 파일(800)에 의해 제공되는 RD_TPC_TNPC 신호로부터 트랩 PC(TPC) 값 또는 트랩 NPC(TNPC) 값을 수신한다. 도 17을 참조하면, 제어 레지스터 파일(800)의 트랩 스택(815)은 이들 신호를 ISU(200)가 RETRY 또는 DONE 명령이 이슈되었음을 표시하는 RETRY_DONE_IS 신호를 출력할때 제공한다. 그런 다음, PC 로직(106)은 트랩 스택(814)으로부터 수신된 TPC 또는 TNPC 값을 이용하여 새로운 FPC, APC 및 NAPC 값을 형성한다.
다른 이슈된 명령에 대해, PC 로직(106)은 이슈 스테이지동안 이전 PC 및 NPC 값을 인크리먼트하여, 다음 페이 스테이지를 위한 새로운 PC 및 NPC 값을 발생시킨다.
도 8을 참조하면, 이슈 스테이지동안 이슈된 명령은 필요로하는 데이타가 대응하는 예약 스테이션 엔트리에 배치되어 있을때에만 FPU(600), FXU(601), FXAGU(602) 및 LSU(603)에 의해 실행될 수 있다. 다른 명령보다 최근에 이슈된 명명에 대한 데이타가 금방 이용가능하게 되기 때문에, 이들 명령은 먼저 이슈된 명령에 앞서 실행되고 완료될 수 있다.
상기 설명된 바와 같이, 예약 스테이션은, 물리적 소스 레지스터의 소스 데이타가 물리적 레지스터에 대한 데이타 유효 비트가 이용가능하지 않다고 나타낼때 이용가능하지 않음을 안다. 따라서, 예약 스테이션은 FXRFRN(604), FPRFRN(605), 및 CCRFRN(610)으로부터 전송된 적절한 이용가능한 데이타, 데이타 유효 비트 및 물리적 레지스터 태그(FX_DATA_F, FX_DV_F, FX_TAGS_F, FP_DATA_F, FP_DV_F, FP_TAGS_F, CC_DATA_F, CC_DV_F, CC_TAGS_F)를 수신하고 데이타가 이용가능할때를 결정하기 위해 이들을 모니터한다. 예약 스테이션은 대응하여 전송된 물리적 레지스터 태그가 예약 스테이션의 엔트리에 기억된 물리적 레지스터 태그와 매칭할때 특정 레지스터를 위해 의도된, 전송된 데이타를 획득한다.
전체 데이타 의존성이 명령에 대해 충족될때(즉, 모든 요구되는 데이타가 이용가능하게 될때), 실행 유닛은 특정 명령에 대해 예약 스테이션의 엔트리에 기억된 명령 데이타를 사용하여 명령을 실행한다. 실행 유닛(600-603)에 의해 실행된 명령의 타입은 예약 스테이션의 엔트리를 기억하는 것에 관하여 상기 설명되었다.
실행된 명령은 명령을 위한 엔트리의 예약 스테이션에 기억된 물리적 목적 레지스터 태그에 의해 식별되는 특정 레지스터에 발생된 데이타가 기억될때 완료된다. 완료 동안, 실행 유닛(600-603)은 또한 에러 및 완료 상태 정보를 PSU(300)DP ERR_STAT 신호로 전송한다.
더욱이, 도 7을 참조하면, ISU(200)는 인출 레지스터(100)으로부터 수신한 명령을 디코드하여, 이슈된 명령중 어떤 것이 도 17에 도시된 제어 레지스터(801-804)의 판독/기록 명령인 지를 결정한다. 제어 레지스터(801-814)는 CPU(51)의 전체 제어에 사용되며, 특정, 비특정 및 SPARC-V9 아키텍쳐 매뉴얼에 개시된 타입의 자회사의 상태 레지스터를 포함할 수 있다.
SPARC-V9 RDPR 및 RDASR 명령과 같은 제어 레지스터의 이슈된 판독 명령에 대해, ISU(200)는 레지스터(801-814)중 하나를 식별하고 레지스터가 판독되는지를 나타내는 RD/WR_CNTRL 신호를 출력한다. 그에 따라, 제어 레지스터(800)의 제어 로직(816)은 워치포인트 유닛(304)에 RD/WR_CNTRL 신호에 의해 식별된 제어 레지스터의 콘텐트(RD_CNTRL_REG)를 출력한다.
차후 설명되는 바와 같이 되기 때문에, CPU(51)는 제어 레지스터(801-804)의 판독 명령에 대한 체크포인트 및 대응하는 워치포인트를 형성하며, ISU(200)는 DO_WATCHPT 신호 및 DO_CHKPT 신호를 발생시킨다. DO_CHKPT 신호는 체크포인트가 형성되어야 하는지를 나타내고, 체크포인트를 위한 체크포인트 번호를 포함한다. DO_WATCHPT 신호는 워치포인트가 DO_CHKPT 신호에 의해 제공되는 체크포인트 번호에서 워치포인트 유닛(304)에 의해 형성되어야 하는지를 나타낸다. 워치포인트 유닛(304)은 16개의 각 체크 포인트에 각각 대응하는 어드레셔블 기억 요소를 갖는다. 따라서, 워치포인트 유닛은 DO_WATCHPT 및 DO_CHKPT 신호에 응답하여, DO_CHKPT 신호에 제공되는 체크포인트 번호에 대응하는 기억 요소에서 판독된 제어 레지스터의 콘텐트를 기억한다.
판독 제어 레지스터 명령이 추가적인 실행을 위해 FXU(600)의 예약 스테이션에 또한 제공된다. 따라서, 명령의 체크포인트 번호는 명령을 위한 예약 스테이션 엔트리에 기억된다. 그런 다음, FXU(601)가 판독 제어 레지스터 명령을 실행할때, 워치포인트 유닛(304)의 체크포인트 번호를 출력한다. 그에 따라, 워치포인트 유닛은 제어 레지스터 데이타를 출력한다. 워치포인트 유닛은 FXU(600)에 대해 먼저, 판독된 제어 레지스터 데이타를 출력하고, 그런 다음 FXU는 그 데이타 및 대응하는 물리적 목적 레지스터 태그를 고정소수점 레지스터의 기억 장치를 위해 FXRFRN(604)에 제공한다. 따라서, CPU(51)는 제어 레지스터 판독을 실행하기 위해 동기화되지 않아도 된다.
제어 레지스터(SPARC-V9 WRPR 및 WRASR등)로의 기록을 실행하기 위해, FXU(601)는 예약 스테이션에서의 명령에 대해 기억된 명령 데이타를 실행하고, 그 데이타를 DFB2BRB 버스상에 출력한다. 그런 다음 도 17에 도시된 바와 같이, 데이타는 제어 레지스터 파일(800)에 제공된다. ISU(200)는 제어 레지스터 기록이 이슈되었는지를 그리고 어떤 레지스터에 대해 기록이 발생되었는지를 표시하는 RD/WR CNTRL 신호를 이슈시키기 때문에, RD/WR/UPDATE 로직(816)은 이 데이타를 적절한 제어 레지스터에 기록한다.
상기 설명된 바와 같이, 예시적인 CPU(51)는 고정소수점 레지스터를 위해 레지스터 윈도우를 채용한다. 레지스터 윈도우 동작은 SPARC-V9 아키텍쳐 매뉴얼에 상세히 개시되어 있다. 따라서, ISU(200)는 언제 레지스터 윈도우 제어 명령이 이슈되는지를 또한 결정한다. 이러한 결정에 있어서, ISU는 윈도우 제어 명령이 이슈되었는지를 표시하며, 실행되는 레지스터 윈도우 동작의 특정적인 성질을 식별하는 WIN_CNTRL 신호를 발생시킨다. 도 17에 도시된 바와 같이, 이들 신호는 제어 레지스터 파일(800)에 제공된다. 그에 따라, RD/WR/UPDATE 로직(816)은 WIN_CNTRL 신호에 의해 표시되는 레지스터 윈도우 동작의 갱신을 실행한다.
D. 명령 실행 스테이지의 PSU 관여
명령이 DFB(62) 내의 적절한 실행 유닛에 디스패치되면, ICRU(301)는 명령 완료를 대기하고, 에러 및, 각 명령 일련 번호에 대한 상태 정보를 모니터하여 DFB(62)와 PSU(300) 사이에 있는 실행 데이타 전송 버스 상에 전달한다. 실행 스테이지의 PSU 관여는 실행 상태 정보의 수신으로 제한된다. 명령이 에러없이 완료되고 잘못예측되지 않을때, 명령이 비활성화되지만, 만일 실행 예외가 이슈하거나, 또는 추측적인 실행이 잘못예측되었으면, 명령은 비활성화되지 않거나, 또는 CPU(51)이 복구 절차를 개시한다. A-링 상태 정보는 갱신되어, 정확한 또는 비정확한 추측적인 실행 및, 예외 또는 예외-없는 실행에 반영한다. 명령이 정확하게 예측되고, 실행에 예외가 없을때, ICRU(301)는 명령을 비활성화시키기 위해 일련 번호와 관련된 A-링 비트를 클리어한다.
예시적인 CPU(51)에서, DFB(62)는 부동소수점 기능 유닛(FPU)(600), 고정소수점 기능 유닛(FXU)(601), 고정소수점/어드레스 발생 기능 유닛(FXAGU)(602) 및 로드/기억 기능 유닛(LSU)(603)뿐만 아니라 FPRFRN(605), FXRFRN(604), CCRFRN(608) 및 FSR(607)을 포함한다. 예시적인 CPU에서, 각각의 DFB 기능 유닛은 머신 사이클당 2개의 명령만큼을 처리할 수 있기 때문에, 명령 실행 완료는 머신사이클당 최대 8개의 명령으로(하드웨어 제약에 의해) 제한된다. CPU의 일실시예에서, FPU(600)는 동시에 2개의 명령을 처리할 수 있지만, 1개의 명령 결과만을 출력할 수 있기 때문에, 이 실시예에서 명령 완료는 7개의 명령으로 제한되지만, 2개의 출력이 구현될 수 없는 것에 대한 이유는 없다. 도 8은 DFB(62) 내의 주요 기능 유닛 및 DFB(62)와 ISB(61) 사이를 통과하는 주요 신호에 대한 기능 블록도이다.
디스패치된 명령이 DFB(62)에서 실행을 완료할때, 명령 매칭 에러 및 다른 상태 정보(ERR_STAT)가 실행 데이타 전송 버스 상의 ICRU(301)(다른 유닛)에 포함되는 PSU(300)로 다시 전달된다. 데이타 및 상태는 이슈된 각 명령에 대해 수신되지만, 비순위로 수신된다. 각 명령에 대한 실행 상태 정보 신호는 예컨대, 실행동안 에러가 발생되는지의 여부, 에러 타입, 추측적인 실행이 정확하게 예측된 경우 이슈하는 조건 코드, 일련 번호, 명령 체크포인트(잘못되어 백업이 요구된다면 머신이 백업되는 체크포인트) 및, 명령이 제어 레지스터로의 판독 또는 기록 명령을 포함하는지의 여부를 포함할 수 있다.
브로드캐스트 명령 일련 번호는 도 12에 도시된 어드레스 디코드 로직(334)에 의해 A-링(312)으로 인덱스하는데 사용된다. A-링 상의 A-링 기록 포트(341,342)(및 CSN/RRP 진행 로직(323)용의 판독 포트(343))의 수는 프로세서의 피크 실행 대역폭에 대응하도록 적절하게 선택된다. 만일 특정 명령이 에러를 발생시키면, A-링 클리어 로직(333)은 0을 특정 명령 일련 번호에 대응하는 A-비트에 기록하고, 그런 다음 이 명령은 비활성화되는 것이 고려된다. 그러나, 명령이 에러없이 완료된다면, A-링의 대응하는 활성-비트는 클리어되지 않고, 이 명령은 여전히 활성적으로 고려되며, 다른 프로세서 복구 스텝이 예외 또는 에러 상태로부터 복구하도록 채용된다. CSN은 결과적으로 에러를 이슈시키는 명령 이전의 위치의 하나의 슬롯을 가리키는 ISN에 의해, 따라 잡히게 된다. CSN은 A-비트가 여전히 세트되어 있기 때문에 에러를 발생시키는 명령의 SN을 통과시킬 수 없다. 그런 다음, 실행 트랩이 수취되면, 에러를 발생시키는 명령의 A-비트는 1로 기록되어, CSN 및 RRP가 진행하는 것을 허용한다.
트랩 타입을 식별하는 수취된 트랩(TT) 필드는, 트랩스택으로부터 팝되어, 트랩이 실행 트랩(etrap)인지를 결정하기 위해 디코드된다. 그런 다음 실행 트랩은 DONE 또는 RETRY을 이슈함으로써 처리된다. 만일 실행 트랩이 성공적으로 처리되면, ETRAP_CLEAR 신호가 트랩-처리기(handler)에 의해 어서트되어 A-비트를 클리어한다. 유사한 로직이 M-RING(324)의 M-비트를 클리어하기 위해 제공된다.
데이타 및 상태 신호는 각 명령 이슈 슬롯에 명령의 일련 번호를 제공하며, 또한 PSU(300)에 의해 사용되어 다수의 명령이 오류를 발생시키는 경우 어떤 예외가 시간적으로 먼저인지를 결정하기 위해 명령에 있어서의 예외 우선순위를 결정한다. (예외의 우선순위 매김은 우선순위 로직(Priority Logic) 및 상태 머신(State Machine) PLSM(307)과 관련하여 차후 설명된다.) 예시적인 프로세서에서, 일련 번호는 에러 및 상태 정보보다 한 사이클 먼저 도달하며, 그에 의해 임의의 에러 정보의 도달에 앞서 어드레스 디코드 로직 유닛(334)에 의한 일련 번호 디코드를 허용하여, 비트는 어드레스 디코드 로직에 있어서 추가적인 지연을 초래하지 않고 클리어되거나(에러가 없는 경우) 또는 클리어되지 않을(에러가 있는 경우) 수 있다. 에러 또는 다은 예외가 검출되면, 적절한 스텝이 차후 설명되는 바와 같이 에러 또는 예외를 처리하도록 본 발명에 채용된다.
E. 명령 커미트먼트
여기에 설명되는 구조 및 방법은 A-링(312)의 어드레셔블 위치만큼의 다수의 명령, 즉 예시적인 실시예에서 64개의 명령의 이슈 및 실행을 트래킹하기 이한 구조 및 방법을 제공한다. 그러나, CPU 자원을 복구하기 위한 구조 및 방법이 없는 상태에서, CPU(51)에 의해 예컨대 일련 번호 및 관련 A-비트를 포함하는 명령에 할당된 자원은, 명령이 완료되고 비활성화되었어도 명령에 할당된 채로 유지될 수 있다. A-비트 데이타 구조와 관련된 추가 포인터를 부가하고, CPU(51) 내에서 관련 명령의 상태에 있어서의 변화에 응답하여 포인터를 이동시킴으로써, 특히 비활성, 명령은 커미트될 수 있으며, 자원은 리타이어될 수 있고 다른 명령에 의해 다음 사용되기 위해 리클레임될 수 있다. 이러한 방식으로, 자원은 새롭게 이슈된 명령을 위해 연속적으로 이용된다.
커미트된 일련 번호 포인터(CSN)(316)는 최종적으로 커미트된 명령을 가리킨다. 커미트된 명령은 에러 없이 실행 완료되어 이슈부터 실행까지 진행된 명령으로 정의되며, 복구될 필요가 있을 수 있고 복구되지 않을 수 있는, 임의의 추측적으로 이슈된, 예측된 중심 전이(central transfer)(분기) 명령보다 이전에 이슈된 것이다. 커미트된 명령은 복구될 필요가 전혀 없다. 이러한 정의에 의해, 커미트된 명령 일련 번호(CSN) 포인터(316) 이전의 모든 명령은 에러없이 실행 완료되며 절대 복구될 필요가 없다. CSN이 모든 머신 사이클을 진행한 량은 머신의 최대 명령 커미트먼트률을 설정한다. 완료되고 비활성화된 명령은 CNS가 진행될때까지 또는 A-링(312)에서의 이들 명령에 대한 일련 번호를 초과할때까지 커미트된것으로 간주되지 않는다.
ISN(314)에 대해 상기 설명된 바와 같이, CSN(316)이 모든 머신 사이클을 진행할 수 있는 위치의 최대수는 소프트웨어, 하드웨어 또는 다른 제어에 의해 사이클당 작아진 명령의 최대수로 제한될 수 있다. 예컨대, 머신 사이클당 4개의 명령으로 ISN의 진행을 제한하는, 본 발명의 일실시예에서, CSN은 하드웨어에 의해 부과된 제한에 의해 사이클당 8로 제한된다. 또한 CSN은 ISN과 동일할 수 있지만, 절대 A-링 둘레로 ISN을 초과해서 진행할 수 없다. (A-링 구조로 인해, CSN은 수치적으로 ISN보다 작게, 동일하게 또는 크게 엄격해질 수 있다.) CPU가 초기화될때, CSN은 0으로 초기화되고, 명령 상태에서의 변화 및 차후 설명되는 소정의 CSN 진행 법칙에 따라 진행된다.
활성-비트가 활성 명령 링에서 클리어될때, CSN은 실행 완료된 명령을 커미트(commit)하기 위해, 소정의 법칙에 따라 진행된다. 일반적으로 CSN 포인터는 이미 실행 완료된(즉, 비활성화된) 명령에 뒤따를 수 있다. CSN/RRP 진행 로직 유닛(323)은 CSN 및 RRP 포인터의 위치를 진행시키는 기능을 한다. 각 머신 사이클에서, CSN/RRP 로직 유닛(323)은 ISN을 지나지 않고, 완료되어 비활성화된 명령(A-링의 활성화 비트=0)을 지나 CSN을 진행시키는 것을 시도한다. 지연된 트랩이 이슈할때를 제외하고, CSN은 A-링(312)의 A-비트의 세트 또는 클리어된 상태 및, 로직 유닛(323) 내에서 구현된(예컨대, 소프트웨어, 펌웨어 및/또는 하드웨어) 소정의 법칙에 기초해서만 진행하며, CSN/RRP는 A-링 그 자체의 상태를 의심할 필요가 있으며, ISN을 염두하여 CSN에 대한 적절한 일련 번호 어드레스를 결정한다. 지연된 트랩이 수취되어 성공적으로 처리되면, PLSM(307)은 DEFERRED_TRAP 신호를 CSN이 하나의 SN 위치만큼 진행되도록 하는 CSN/RRP 진행 로직 제어 유닛(323)에 전송하여, CSN 및 나중의 RRP가 예외를 발생시키는 명령을 지나서 진행할 수 있도록 한다. 본 발며의 일실시예에서, CSN의 진행은 CSN 포인터의 이동을 구현하는데 요구되는 하드웨어를 제한하는 요구에 기초하여 선택된 소정의 최대 명령 커미트먼트율(머신 사이클당 8개의 명령)에 의해 제한된다.
이론적으로, CSN은 ISN 까지 진행하여 그와 동일하게 될 수 있다. ISN=CSN이면, CPU는 빈 상태가 되는데, 즉 모든 이슈된 명령이 커미트된다. 실제로, CSN의 최대 진행을[머신 사이클(4개의 명령 이슈 머신)당 8개의 명령으로] 제한하여, 로직이 단순화되고, 요구되는 하드웨어가 감소될 수 있는 것이 바람직할 수 있다. 예컨대, 사이클 CPU당 4개 이슈에 대해, CSN 진행은 사이클당 8개의 SN으로 제한된다. CSN의 진행을 제어하는 법칙은 (1)CSN을 ISN(ISN을 포함하여)까지 진행시키는 것; (2)CSN을 한 사이클에서 8개의 명령 일련 번호보다 더 이상으로 진행시키지 않는 것; (3)아직 커미트될 수 없는 활성 명령에 대응하는 A-링의 첫번째 1(첫번째 1은 제외하고)까지 진행시키는 것으로 요약될 수 있다. 더 엄격하게는, CSN은 일반적으로 다음 관계식 CSN=min(CSN+4,SIN, slot_A)에 따라 진행되는데(차후 어떤 예외에 대한 수정을 참조), 여기에서 A(CSN+1),...,A(slot_A)는 모두 0이고, A(slot_A+1)=1이다. 상기 관계식에서, min은 최소 함수이고, slot_A는 A_링(312)의 A-비트 위치에 속하며, A(slot_A)는 A-비트 위치의 비트-상태(예컨대, 1 또는 0)이다. CSN을 진행시키는 법칙은 지연된 트랩이 제거되고 완료되지 않은 부동소수점 동작 예외 또는 데이타 브레이크포인트 예외가 검출되는 것과 같이 수취될때 수정된다. 완료되지 않은 부동소수점 예외 및 데이타 브레이크포인트 예외는 DFB(62)로부터의 실행 상태 신호(ERR_STAT)에 의해 식별된다. 이들 예외가 이슈하고 트랩이 처리될때 CSN은 1만큼 진행하고 즉, CSN ャ CSN+1가 되어, CSN은 예외를 발생시키는 명령을 지나서 진행한다. PSU(300)는 특히, 완료되지 않은 부동소수점 동작 및 데이타 브레이크포인트에 관련되며, 이 부동소수점 동작 및 데이타 브레이크포인트 모두는 만일 A-비트가 처리된 트랩에 대해 클리어되지 않으면 CPU는 충족되어 정지되기 때문에, 포인터의 특별한 처리를 요구할 수 있다.
CSN 진행을 최대(8, ISN, 다음 A-비트+1)로 제한함으로써, 단순화된 하드웨어 회로가 CSN을 적절한 위치로 이동시키기 위해 구현될 수 있다. 예컨대, A- 링(312)은 8개의 8-비트 레지스터로서 구현된다. 이들 8개의 8-비트 레지스터의 A-링(343)의 A-링 판독 포트(343)에서, 둘러싼 CSN의 레지스터는 판독되고, 이들 판독 레지스터의 콘텐트는 2개의 구별된 8비트 버스로 전송된다. 이들 버스를 단일의 16비트 버스로 결합하고, 0-비트에서 8-비트만큼 버스를 시프트시키면, 이전의 CSN을 진행시키기 위한 목적한(8의 최대 CSN 진행) 8비트 윈도우가 형성된다. 첫번째 1을 찾는 회로는 CSN이 진행하는 량을 산출한다.
ICRU(301)는 또한, 커미트된 일련 번호(CSN) 신호 및 이슈된 일련 번호(ISN)를 체크포인트 유닛(303)에 전송함으로써 새로운 커미트된 일련 번호(CSN)(316)의 체크포인트 유닛(303)에게 알려서 ICRU(301)는 CSN보다 작은 일련 번호를 갖는 어떤 할당된 체크포인트까지 독립적일 수 있다. 이는 엄격한 수학적인 순서보다는 원형 A-링 상의 위치에 관련된다(즉, SN, CSN은 원형의 A-링의 위치와 관련이 있다). 체크포인트는 본 명세서의 다른 곳에서 더 상세히 설명된다. CPU(51)의 일실시예에서, CSN 뿐만 아니라 여기에 설명되는 다른 포인터는 어드레셔블 A-링 비트 위치에 대응하는 명령 일련 번호를 엔코드하는 6-비트 벡터이다.
F.명령 리타이어먼트 및 자원 복구
CPU 할당가능한 자원은 공급자(provider)에 의해 복구된다. 추가적인 포인터가 명령 리타이어먼트 및, 명령이 리타이어될때 이용가능한 자원에 대한 자원 리클레임을 트래킹하고 제어하기 위해 제공된다. 자원 리클레임 포인터(RRP)(317)는 최종적으로 리타이어된 명령을 가리키며, CSN을 수반한다. 리타이어된 명령은 실행 완료되고, 비활성화되며, CPU(51)에 의해 커미트된 명령이며, 그 다음의 명령 이슈동안, 다음의 사용을 위해 리클레임된 모든 관련 머신 자원을 갖는다. 리클레임된 머신 자원은 명령에 할당된, 리네임된 논리적 레지스터 및/또는 리맵핑된 논리적 레지스터, 아키텍쳐 레지스터 및 물리적 레지스터와, 명령 일련 번호(SN), 체크포인트 및, 명령 리타이어먼트때 자유롭게 됨으로써 그 다음 명령 이슈동안 재할당을 위해 이용하능하게 되는 워치포인트를 포함한다. RRP가 모든 머신 사이클을 진행하는 량은 머신의 최대 명령 리타이어먼트율을 결정한다. CPU가 초기화될때 RRP는 0(제로)으로 초기화되며, 명령 상태 및 차후 상세히 설명되는 소정의 RRP 진행 법칙에 있어서의 변화에 따라 진행한다. 체크포인트 및 워치포인트의 할당 및 할당 해제(deallocation)은 차후 상세히 설명된다.
명령이 커미트되면, 자원 리클레임 포인터(RRP)(317)는 CSN(316)의 다음으로 진행하여 명령을 리타이어함으로써, 머신 자원은 재사용을 위해 이용가능하게 되고 리클레임될 수 있다. 각 머신 사이클에서, RRP(317)는 A-링의 A-비트 상태 및 소정의 RRP 진행 법칙에 기초하여 CSN을 지나지 않고 이전에 커미트된 명령을 진행하도록 시도된다. 비커미트된 명령에 할당된 머신 자원은 그 명령이 비활성화되더라도 명령이 복구될 필요가 없다는 것이 확실해질때까지 이용가능하지 않기 때문에 RRP는 CSN을 지나지 못한다. 명령 완료(비활성화)만으로는, 비활성화된 명령은 여전히 추측적이기 때문에, 명령 커미트먼트 또는 리타이어먼트를 위해 충분하지 않다. 커미트된 명령만이 리타이어될 수 있다. RRP(317)는 그 레지스터 자원이 리타이어될 수 있는 다음 명령을 가리킨다. RRP(317)는 A-링(312)의 세트 또는 클리어 비트 상태, CSN(316) 및, CSN/RRP 진행 로직(328)에 의해 구현될 수 있는 소정의 법칙에 기초하여 진행한다.
ISN 및 CSN에 대한 경우에 있어서, RRP가 모든 머신 사이클을 진행할 수 있는 최대 위치수는 다른 소프트웨어, 하드웨어 또는 다른 제어에 의해 사이클당 작아진 최대수로 제한될 수 있다. 본 발명의 일실시예에서, RRP의 진행은 RRP 포인터의 이동을 구현하는데 요구되는 하드웨어를 제한하는 요구에 기초하여 선택되는 소정의 최대 명령 리타이어먼트율에 의해 제한된다. 예컨대, 사이클당 4개의 명령이 이슈되는 예시적인 CPU의 일실시예에서, RRP 진행 및 그에 따른 자원의 복구는 머신 사이클당 최대 4개의 명령으로 제한된다. 이는 예시적인 머신의 최대 명령 이슈율과 동일하기 때문에, CPU(51)의 성능을 제한하지 않는다. RRP는 통상의 이슈율보다 더 느리게 진행하도록 제한되지 않아야 한다. 더 엄격하게, RRP는 다음 관계식: RRPャmin(RRP+4,CSN)에 따라 진행된다. 원칙적으로, 이러한 방식의 자원 복구를 한정하는 것이 필수적이지 않으며, RRP는 CSN까지 진행될 수 있다. 예시적인 CPU(51)에서의 제한은 하드웨어 설계의 균형에 의해 부과된다. 명령의 소정의 수에 대해 CSN을 진행시키는데 요구되는 하드웨어는 명령의 동일한 수에 대해 RRP를 진행시키는데 요구되는 하드웨어보다 더 크다. 그러므로, 하드웨어를 소정의 레벨로 최소화하기 위해, RRP는 CSN보다 조금 더 천천히 진행되며, 성능에 결정적인 영향을 미치지 않는다.
1. RRF에 대한 갱신 및, 명령 커미트먼트 및 리타이어먼트에서의 리네임 맵
도 18을 참조하면, 자원 복구는 명령 일련 번호를 이용가능하게 하여 그 명령 일련 번호를 다시 사용할 수 있게 되고, 결과적으로 또한, 몇개의 레지스터를 이용가능하게 하여 프리리스트 유닛(700) 내의 프리리스트 내로 다시 배치될 수 있다. 명령이 커미트되면, 명령은 ICRU(301)에 의해 발생되는 COMMIT_VAILD 신호에 의해 식별된다. COMMIT_VALID 신호에 응답하여, 커미트된 명령에 대응하는 RRF(302)의 기억 유닛(366)의 엔트리는 재사용을 위해 제어 로직(365)에 의해 이용가능해 진다.
2.명령 리타이어먼트에서의 RRF 판독
RRF는 명령이 리타이어먼트될때(ICRU(300) 설명 참조) 및, 머신 백업시(백트래킹 설명 참조) 판독된다. 명령이 리타이어되면, RRP 포인터에 의해 지시되는 것과 같이, 제어 로직(365)은 FREE_TAG 신호의 형태로 프리리스트 유닛(700)으로 리타이어된 명령에 대응하는 물리적 레지스터 태그를 출력하는 것에 대해 기억 유닛(366)을 제어한다. 그런 다음, 프리리스트 유닛은 물리적 레지스터 태그를 프리 물리적 레지스터 태그의 그 리스트에 배치한다.
3.포인터를 이용한 정규 상태 유지
A-링(312) 및 그 관련 로직은 이슈된 각 명령의 상태에 대한 정확한 머신 사이클의 현행 정보를 제공한다. 포인터 ISN 및 CSN는 이슈되고 활성화된 명령의 상태를 트래킹한다. CSN이 특정 명령으로 진행할 경우에만, CPU(51)는 명령이 커미트될 수 있고, 명령을 실행하는 것과 관련된 자원이 이용가능하다는 것을 확신할 수 있으며, 그에 따라 정규 상태를 보존한다. ISN은 엔트리를 지나칠때 이슈된 명령에 대해 A-링 세팅 A-비트(A=1) 둘레를 이동한다. CSN은 ISN의 뒤를 따라 수반되어 커미트하기 위해 완료된 명령(A=0)을 찾는다. NMCSN은 ISN의 뒤를 따라 수반되어 완료된(비활성화된) 메모리 명령(M=0)을 찾는다. RRP는 CSN의 뒤를 따라 수반되어 A-링(312) 둘레를 이동하고 커미트된 명령의 자원을 리클레임한다. 로드/기억 명령의 능동적인 스케줄링을 설명하자면, 어떻게 NMCSN이 ISN의 뒤를 따라 수반되어 완료된(비활성화된) 메모리 명령(M=9)을 찾는가에 대해서 설명된다.
CSN은 A-비트 세트를 갖는 명령으로 진행하지 않는다.(M-비트는 메모리 관련 명령에 대한 이슈때 클리어되기 때문에 이전의 메모리 관련 명령을 진행한다.) 정규 상태가 유지될 수 있도록 하는 포인터를 이동시키기 위한 다른 법칙은 (1)CSN은 이전의 ISN(ISN_CSN)으로 진행할 수 없는 것, (2)CSN은 이전의 NMCSN(NMCSN_CSN)으로 진행할 수 없는것, (3)CSN은 이전의 PBSN(PBSN_CSN)으로 진행할 수 없는것, (4)NMCSN은 ISN(ISN_NMCSN)으로 진행할 수 없는 것, (5)PBSN은 ISN(ISN_PBSN)으로 진행할 수 없는 것, (6)RRP는 이전의 CSN(CSN_RRP)으로 진행할 수 없는 것, (7)NISN은 항상 ISN+1일 것(추가는 modulo 링 길이이다), 및 (8)ISN은 RRP 또는 CSN(완전한 머신 상태를 지시함)까지 따라갈 수 없는 것이다. 방법의 바람직한 실행에 있어서 선택적으로 구현될 수 있는 다른 법칙은 (9)CSN 및 NMCSN은 한 클록 사이클에서 최고 8까지 진행할 수 있는 것 및,(10)RRP는 한 머신 클록 사이클에서 최대 4까지 진행할 수 있는 것이다. 심볼 _는 그 관계가 엄격한 수학적 균등성 또는 비균등성보다는 둘러싼 형태의 A-링 구조에 관련하여 결정됨을 나타낸다.
ISN, CSN, 및 RRP 포인터와 관련하여 몇가지 사실을 알 수 있다: 먼저, CSN과 ISN 사이에서 일련 번호를 갖는 명령은 머신에서 이슈된 활성화된 명령에 대응한다. 이들 명령은 추측적이며, 복구될 필요가 있을 수 있다. 두번째, CSN과 RRP 사이의 명령은 커미트된, 언리타이어된 명령에 대응하고, RRP에 의한 리타이어먼트를 간단하게 대기한다. 이들 커미트된 명령은 복구될 필요가 절대 없다. 세번째, CSN은 이슈되지 않은 명령의 결과를 커미트하는 것이 불가능하므로 절대 ISN을 통과하지 않는다. 네번째, 머신 동기화(sync)은 CSN=ISN=RRP일때라는 제한에 의해 달성되어, 머신에서 모든 이슈된(ISN) 명령은 커미트되고(CSN) 리타이어된다(RRP). 여섯번째, ISN은 개념적으로 원형의 A-링에서 RRP를 절대 통과할 수 없고, RRP와 ISN 사이의 일련 번호는 명령 이슈에 이용가능하다. ISN=RRP-1(modulo A-링 길이)이면, 모든 명령 일련 번호는 할당되고, 머신은 RRP가 다른 명령이 이슈되기 전에 재사용을 위해 머신 자원을 리클레임할 수 있도록 진행할때까지 정지(대기)해야만 한다. 물론, CPU(51)는 계속적으로, 정지되기 이전에 이슈된 명령을 실행하고, 비활성화하고, 완료하고 커미트한다. 최종적으로, 3개의 포인터 사이의 상대적인 관계는 RRP」, CSN」, ISN 인데, 여기에서 」, 연산자는 원형의 A-링(modulo A-링 길이) 내에서의 순서 매김(ordering)을 나타내며, 엄격한 수학적 관계를 포함하지는 않는다. 도 20은 명령의 이슈, 비활성화, 커미트 및 리타이어먼트를 포함하는 정규 상태를 유지하는 본 발명의 방법의 일실시예의 개략적인 플로우 챠트이다.
Ⅲ.긴 대기시간(로드/기억) 명령의 능동적인 스케줄링
모든 명령 타입에 적합한 명령 커미트먼트 및 리타이어먼트를 트래킹하고 스케줄링하기 위해 다양한 포인터를 이용하는 본 발명의 방법의 설명은 최신의 추측적인 비순위 프로세서에서 많은 장점을 갖는다. 로드 명령 및 기억 명령만이 외부 메모리와 관련되며, 다른 모든 명령 및 동작 관련 레지스터는 프로세서 내에 있는 로드-기억 아키텍쳐로서 많은 최신의 프로세서를 설계된다는 것을 인지함으로써 추가적인 이득이 달성가능하다.
실제로, 로드 및 기억 명령은 완료되기 위해 몇개의 머신 사이클을 요구하는 여기에서 긴 대기시간 명령을 말하는 명령의 더 일반적인 부류에 속하며, 로드 명령 및 기억 명령이 2 타입인 외부 메모리 관련 명령을 포함한다. 내부 레지스터와 관련된 명령은 완료하기 위해 단일 머신 사이클보다 적게 또는 단일 머신 사이클만을 일반적으로 요구한다. 긴 대기시간 명령은 또한 중단없이 다중-머신 사이클을 실행하도록 설계된 명령인 극소의(atomic) 명령을 포함한다.
대기시간은 명령의 이슈과 그 명령의 실행 완료 사이의 경과 시간이다. 로드-기억 아키텍쳐를 위한 명령어 세트는 긴 대기시간 메모리 관련(메모리에 대한 로드-기억 관련등)을, 내부 CPU(51) 레지스터와 관련된 짧은 대기시간 논리적 또는 아키텍쳐 동작(덧셈, 곱셈, 나눗셈, 논리 비교등)으로부터 분리하기 때문에 바람직하다. 또한, 로드-기억 타입 아키텍쳐에 의해 설계된 대부분의 최신의 CPU(51)는 명령 세트의 이러한 형태로부터 이슈되는, 증가된 레지스터 필요조건을 지원할 수 있는 많은 일반적인 용도의 레지스터를 갖는다.
로드 명령 및 기억 명령은 모두 아키텍쳐 상태를 수정한다. 비순위 실행 프로세서에서, 정규 상태를 방해하지 않고 높은 로드/기억 대역폭을 유지하기 위해 로드 및 기억 명령을 효과적으로 스케줄할 수 있는 것이 중요하다. 정규 상태를 유지하면서 긴 대기시간 명령을 능동적으로 스케줄링함으로써 명령 상태를 트래킹하기 위한 기본적인 구조 및 방법에 대한 향상이 제공된다. PSU(300)의 ICRU(301) 내의 구조와 방법은 DFB(62), 특히 로드/기억 유닛(LSU)(603) 내의 구조와 방법과 차후 설명되는 바와 같이 협력하여 향상된 기능을 제공한다.
A.메모리 명령 상태 정보 기억
본 발명의 구조 및 방법은 긴 대기시간 명령 상태 정보 및 이 명령 상태를 트래킹하기 위한 포인터를 기억하는 긴 대기시간 명령 기억 영역을 구분하는 추가 신호를 제공한다. 도 21은 상기 설명된 활성 명령 링(311)과 관련하여, 긴 대기시간 명령 상태 정보, 통상적으로 메모리 관련 명령(예컨대, 로드/기억 명령)을 기억하기 위한 메모리 명령 링(M-링)(324)의 개념적인 도형을 도시한다. M-링(324)은 A-링(311)과 대략 동일한 구조 및 전체 특성을 갖지만, 메모리 상태 비트는 A-링 상태 비트와는 다른 세트 법칙에 따라 세트된다. 특히, M-링(324)은 명령 또는 명령 타입이 이슈될때 활성화(비트는 1로 세트된다) 또는 비활성화(비트는 0으로 클리어된다)에서와 같이 처리되는 것과 관련한 다른 법칙을 구현한다.
도 10에 도시된 바와 같이, ISU(200)는 명령을 이슈할때, 상기 설명된 ISSUE_NOP와 ISSUE_VALID와 함께, 메모리 관련 명령과 비메모리 관련 명령 사이를 구분하는 명령 타입 신호 ISSUE_MEM 을 제공한다. ISSUE_MEM은 또한, 능동적으로 스케줄링되는것으로부터 이익을 가지며, 로드 명령, 기억 명령, 극소의 명령 시퀀스 및 메모리와 관련된 다른 명령을 포함하는 어떤 특정 부류의 긴 대기시간 명령을 시그널링하도록 이슈될 수 있다.
CPU(51)의 일실시예에서, ISSUE_MEM은 4비트 벡터(각 비트는 명령 이슈 윈도우의 이슈가능한 명령중 하나에 대응함)이며, 여기에서 비트 i에서의 어서팅(assertion)은 i번째 명령이 메모리와 관련됨을 표시한다. ISSUE_MEM은 ICRU(301) 내의 M-링 세트 로직(335)에 의해 사용되어 도 12에 도시된 것과 같이 이슈때 M-링(324)의 비트를 세트한다. 어드레스 디코딩 로직(338,336)는 A-링(312) 내에 제공된다. ISSUE_MEM은 이슈된 명령이 메모리 동작과 관련되어 있는 지의 여부를 나타낸다. 만일 ISU(200)으로부터의 ISSUE_MEM이 비트 i에서 어스팅되면, 동일한 명령 슬롯에 대응하는 ISSUE_VALID는 어서트되며, 그런 다음 상기 특정 M-비트는 메모리 명령 링(M-링)(324)에서 세트되지 않는다. 명령이 메모리 관련될때 M-비트를 세트하지 않음으로써, 메모리 관련 명령은 이슈되는 시점에서 효과적으로 비활성화될 수 있기 때문에, 비메모리 커미트된 명령 일련 번호(NMCSN) 포인터(차후 설명됨)는 클리어된 M-비트 이상으로 진행하며, CSN이 클리어된 A-비트 이상으로 진행하는 방식으로, 비메모리 관련 명령만큼 진행하는 것으로부터 방지된다. ISSUE_VALD가 1일때 M-비트는 모든 경우에 0 또는 1로서, 즉 모든 이슈된 명령에 대해 메모리가 관련되는지 또는 관련되지 않는지 기록되어야 한다. 메모리 동작에 대해 M-비트을 세트하지 않음으로써 진행하는 NMCSN을 진행하기 위해 메모리 관련 동작을 무시하는것이 용이해진다.
M-비트는 A-링(312)에 대해 클리어되는 것과 마찬가지로 명령이 에러없이 완료될때 M-링 클리어 로직(337)에 의해 클리어된다. 이슈될때 클리어된 M-비트를 갖는 메모리 관련 명령은 명령이 비활성화된 후 클리어된 상태를 유지한다. M-링 비트는 A-링(312)에 대해서와 동일한 방식으로 실행 트랩에 대해 클리어된다. M-링(324) 상태 정보는 메모리 관련 명령을 트래킹하고 능동적으로 스케줄링하는데 사용된다. 이슈된 상태, 커미트된 상태, 리타이어된 상태를 포함하는, 메모리 관련 명령의 모든 상태는 A-링(311) 및 그 관련 포인터에 의해 유지된다.
설명된 A-링과 M-링 사이의 유사점의 견지에서, 당업자는 A-링과 M-링의 기능이, 링의 각 어드레셔블 위치가 다수의 비트를 포함하는 단일 원형 링과 같은 단일 데이타 구조 내에서 구현될 수 있음을 이해한다. 이러한 다수-비트 링에서, 명령 활동(활성 또는 비활성) 및 명령 타입(메모리, 비메모리, 분기, 무작동 등) 모두는 다수의 비트로 엔코드될 수 있다. 또한, 다른 코딩 설계안이, 각각의 A-링 및 M-링 데이타 구조 내에 현행 제공되는 것과 동일한 정보를 기억하기 위해 제공될 수 있다. 당업자는 이 설명으로부터, 링이 어떻게 세트되고 클리어되는지, 즉 다수-비트 원형 링에 대해 다수-비트 포맷을 지원하고 NMCSN을 조절하기 위해 CSN/RRP 논리이 어떻게 수정되는지를 알 수 있으며, 다른 논리 상태 또는 심볼이 세트에 대해 1 그리고 클리어에 대해 0이 아닌 방식으로, 활성과 비활성 및 메모리 명령과 비메모리 명령을 구별하기 위해 구현될 수 있음을 이해한다.
B.긴-대기시간 명령을 트래킹하고 스케줄링하기 위한 NMCSN 및 PBSN 포인터
지금까지, M-링(324)의 M-비트를 세팅하는 구조 및 방법을 설명하였다. 본 발명의 구조 및 방법에 있어서, 예측된 분기 명령 일련 번호(PBSN)(318) 포인터 및 비메모리 커미트된 일련 번호(NMCSN) 포인터(319)는 M-링(324)과 함께 제공되고 사용됨으로써, CPU(51)는 긴 대기시간 명령, 특히 외부 메모리와 관련된 로드/기억 명령을 효과적이고 능동적으로 스케줄링할 수 있다. NMCSN 및 PBSN 모두는 상기 설명된 바와 같이 ICRU(301) 내의 포인터 레지스터(313)에 기억된다.
NMCSN(319)는 최종적으로 커미트된 명령을 가리키지만(상기 설명된 바와 같이), 메모리 관련 명령에 대한 M-비트가 명령이 이슈되는 시점에서 클리어되기 때문에, 모든 메모리 액세스 명령은 NMCSN을 진행시키기 위해 M-링(324)에서 효과적으로 무시되며, 그에 의해 NMCSN이 더 신속하게 진행한다. 포인터 CSN(316)의 진행만이 실제로 명령을 커미트한다. NMCSN은 차후 설명되는 바와 같이 로드/기억 유닛(603)에 의해서만 사용된다. 명령이 에러없이 완료되고, 이전의 모든 명령이 에러없이 완료되는 경우에 명령은 커미트될 수 있다. NMCSN은 메모리 관련 명령이 여전히 활성화되어 있는 경우에도 이전을 메모리 관련 명령을 진행시킬 수 있다. 이 방법은 또한 메모리와 관련없는 다른 긴 대기시간 명령 타입을 능동적으로 스케줄링하는데 사용될 수 있다. CPU가 초기화되면, NMCSN은 0(제로)으로 초기화된다.
PBSN(318)은 최초의(가장 이전의) 미결정된, 예측된 분기 명령의 일련 번호이다. 본 예시적인 실시예에서, PBSN은 워치포인트 유닛(304)에 의해 결정된다. (워치포인트 유닛(304)은 본 명세서의 다른 곳에서 더 상세히 설명된다.) 미결정된 분기 명령은, 추측적으로 이슈되고, 실행을 시작한 명령( 및 이 명령으로부터 산출된 명령 시퀀스)인데, 이 명령은 명령이 이슈되고 실행되어야 하다는 것을 확실하게 알기 전에 실행 완료되는 것도 가능하다. 다시 말해, 명령의 실행을 승인하도록 하는 조건이, 명령이 발생되는 시점의 처리 흐름에서 아직 이슈하는 않은 것이다. 본 발명의 구조 및 방법에 있어서, 활성화된 미결정의 예측된 분기 명령이 없으면, PBSN은 ISN과 동일해진다. PBSN은 NMCSN 진행에 대한 관문으로서, NMCSN 진행 로직에 사용된다. NMCSN은 포인터 PBSN 또는 ISN의 SN 어드레스를 초과하여 절대 진행하지 않으며, 메모리 명령이 없는 상황에서, 포인터 NMCSN은 CSN과 동일하다. CPU가 초기화되면 PBSN은 0(제로)으로 초기화된다.
C.NMCSN의 진행
NMCSN(319)은 CSN(316)의 메모리 관련 동작 카운터파트이다. CSN을 진행하기 위한 A-링에 대응하여, NMCSN을 진행시키기 위한 M-링이 있다. M-링은 둘러싼 형태의 방식으로 M 비트의 64 비트로 구성되어 있다. 예시적인 64비트 M-링에 대해서, M비트 #63의 다음 비트는 M-비트#0 이다. M-비트=0은, 대응하는 명령이 예컨대, 로드/기억 명령인 메모리 관련 명령과 같은 긴 대기시간 명령이라는 것을 의미한다.
예시적인 CPU에서, NMCSN 포인터의 진행에 관한 법칙은 다음에 나타난 것과 같이, CSN의 경우와 유사하다. (1)NMCSN을 ISN까지(ISN을 포함하여) 진행시킨다; (2)NMCSN을 한 사이클에서, 8개의 명령 일련 번호 이상을 진행시키지 않는다; (3) M-링의 첫번째 1까지(첫번째 1을 제외하고) 진행시킨다.
NMCSN을 진행시키는 법칙은 언플러시된 부동소수점 동작 예외가 부동소수점 유닛(FPU)에서 이슈하거나, 또는 데이타 브레이크포인트 예외가 로드/기억 윤닛(LSU)으로부터 검출될때 수정된다. 이 두경우에서 NMCSN은 상기 설명한 CSN에 대한 경우와 마찬가지로 하나의 일련 번호만큼 진행된다. 즉, 이들 조건하에서, CSN ャ CSN+1, 및 NMCSN ャ NMCSN+1이다. PSU(300)는 완료되지 않은 부동소수점 동작 및 특정 포인터 처리를 요구하는 브레이크 동작에 대해 특히 관련된다.
M-링의 구현은 A-링의 경우와 유사할 수 있다. 실제로, 예시적인 CPU에서, NMCSN은 최대(8, ISN, 다음 M-비트=1)까지만 진행되어질 수 있기 때문에, 간단한 하드웨어 회로가 CSN에서와 같이, NMCSN을 적절한 위치로 이동시키기 위해 구현될 수 있다. (최대(x,y,z)는, 파라미터 또는 표시 x, y 및 z의 값중 최대값의 선택을 의미한다.) M-링(324)는 8개의 8-비트 레지스터로써 구현될 수 있다. 2개의 구별된 8-비트 버스로 판독 명령이 전송되면, 이들 8개의 8-비트 레지스터의 M-링 판독 포드(346)에서, 둘러싼 NMCSN의 레지스터 및 이들 레지스터의 컨텐트가 판독된다.
이들 버스를 16-비트 버스로 결합시킨 다음, 0-비트에서 8-비트까지 버스를 시프트시키면, 이전의 NMCSN을 진행시키기 위한 목적한 8-비트 윈도우가 형성된다. 첫번째 1을 찾는 회로는 NMCSN이 진행할 량을 산출한다.
NMCSN 및 PBSN을 정확하게 유지함으로써, 정규 상태를 방해하지 않고, 실행을 위해 선택될 수 있는 로드/기억 또는 다른 메모리 관련 명령이 간단하게 판단될 수 있다. 정규 상태를 방해하지 않고, 실행을 위해 선택될 수 있는 로드/기억 명령은 실행의 위한 범위 내에 있는 것으로 고려된다. 정규 상태는, (1)예외를 발생시키는 명령이 아키텍쳐 상태를 수정하지 않는 경우, (2)오류를 발생시키는 명령 전의 모든 명령은 아키텍쳐 상태에 관한 수정을 완료한 경우, (3)오류를 발생시키는 명령 후의 모든 명령은 아키텍쳐 상태를 수정하지 않을 경우, 유지된다. LSU(603)는 ICPU(301)로부터 NMCSN(319)를 수신하고 워치포인트 유닛(304)으로부터 PBSN(318)을 수신하여, 긴 대기시간 명령을 스케줄링하는데 사용한다.
D. 데이타 흐름 블록내의 로드-기억 유닛(LSU)
본 발명의 몇개의 특징부의 구현은 일반적인 실행 유닛에 관련되지만, 상태 스케줄링에 있어서 긴 대기시간을 지원하기 위한 특별한 구조가 제공될때, 긴 대기시간 명령을 능동적으로 스케줄링 하는 것이 이익이 된다. 예컨대, 로드/기억 명령 및 다른 메모리 관련 명령을 능동적으로 스케줄링하기 위한 구조가 제공된다. 당업자는 이 설명으로부터, 어떻게 이러한 테스터가 로컬 기억 동작에 소용되지 않는 다른 실행 유닛에서 구현될 수 있는 지를 이해한다.
LSU는 SPARC-V9 아키텍쳐 매뉴얼에 정의되어 있는 릴렉스드(relaxed) 메모리 모델(RMO) 및 토탈 기억 순서 매김(TSO) 모드를 모두 지원한다. LSU는 고정소수점 및 부동소수점 로드/기억 명령을 스케줄링하는 기능을 한다. LSU는 각 사이클에서 2개의 요구까지 캐시로 스케줄링할 수 있다. 정규 상태를 유지하는데 요구되는 명령 순서 매김은 프로세서와 캐시칩 사이의 일련의 프로토콜 신호에 의해 관리된다. LSU는 12-엔트리 예약 스테이션을 포함한다. RMO 모드에서, 로드 명령은 기억 명령을 추측적으로 우회하도록 허용된다. LSU와, 스플리트 트랜잭션을 지원하는 데이타 캐시 사이에 3개의 스테이지 파이프라인이 제공된다. 제1 스테이지에서, 명령의 어드레스, 오피 코드 및 일련 번호는 데이타 캐시로 전송된다. 추측적인 실행을 위해 사용되는 몇개의 제어 비트도 전송된다. 제2 스테이지에서, 기억 명령의 데이타는 LSU로부터 데이타 캐시로 전송된다. 또한 제2 스테이지에서, 데이타 캐시는 다음 사이클에서 완료되어질 명령의 일련 번호 및 유효 비트를 LSU로 다시 전송한다. 제3 스테이지에서, 데이타 캐시는 상태 및 로드 데이타를 리턴한다. 캐시 미스(cache miss)에 의해, 데이타 캐시는 사용되지 않는 파이프라인 슬롯동안 데이타를 리턴하거나, 데이타에 대한 파이프라인 슬롯을 개시하는 신호를 어서트하다.
도 22는 선택 및 실행 제어 로직 유닛(609), 다양한 명령 및 데이타 관련 정보를 기억하기 위한 명령/데이타 큐(IDQ)(610) 및, ISU(200), FPU(600), FXU(601) 및 FXAGU(602)로부터의 신호를 디코딩하는 디코드 및 필드 분리 로직(SSFSL)(620)을 포함하는 로드/기억 유닛(LSU)(603)의 기능 블록도이다. 더 상세하게는, IDQ(610)은 범위내 비트 필드(611), 오피 코드 필드(612), 명령 일련 번호(SN) 필드(613), 체크포인트 번호(614), 유효 비트 필드(615), 속성(ATR) 필드(616), 레지스터 태그(TAGG) 필드(617), 태그 유효(TV) 필드(618), 어드레스 필드(619), 어드레스 유효(AV) 필드(620), 및 캐시 데이타 필드(621)로 구성되어 있다. 데이타 캐시(52)는 IDQ(610)와 함께 어드레스 및 데이타를 전송하고 수신한다.
LSU(603)가 명령을 수신하면, 디코드 및 필드 분리 로직(622)은 그 명령을 디코드하고 어드레스가 명령의 즉시 데이타 필드에 포함되어 있는지를 또는 FXAGU(602)가 어드레스를 계산해야 하는지를 판단한다. 만일 디코드 로직(622)이 어드레스가 FXAGU(602)에 의해 계산되어야 한다고 판단하면, 디코드 로직은 어드레스 유효 비트를 클리어한다. 그러나, 디코드 로직은 명령 내의 즉시 데이타를 의미하는 어스레스가 명령 내에 포함되어 있다고 판정하면, 어드레스 데이타가 명령을 위해 준비되고 이용가능한지를 그리고 명령이 실행될 수 있는지를 표시하는 어드레스 유효 비트를 세트한다. FPU 및 FXU로부터의 태그는 동일한 방식으로 처리되어, 태그 신호는 데이타가 유효한지의 여부를 표시한다. 명령이 예약 스테이션 또는 큐(610)에 기억되게 될때 이슈된 유효 신호, 즉 유효 신호는 이슈된 유효 신호가 실제로 이슈되었다는 것을 표시할때까지 클리어된다(어서트되지 않는다).
LSU(603)가 명령을 실행할때, LSU는 이 명령을 데이타 캐시(52)에 직접 전송한다. 데이타 캐시(52)로부터의 데이타를 검색할때, 이 실행에 있어서의 데이타는 선택 및 실행 제어 로직로 들어가고, 이 선택 및 실행 제어 로직은 태그를 포함하는 신호 및, 데이타가 유효하다는 것을 표시하는 데이타 유효 비트를 출력하며 또한, 도시된 것으로부터 알 수 있는 바와 같이 데이타를 출력하여, 그 결합된 신호가 제공된다. 데이타 유효 비트도 22에는 FP_TAGS_DV_F 신호 및 FP_DATA_F 신호가 있다.
선택 실행 제어 로직(609)는 또한, 액세스 정보를 획득하고, 액세스 정보를 데이타 캐시(52)에 제공한다. 이 정보의 일부분은 트랩 정보, 즉 메모리 동작과 관련된 트랩의 타입이며, 에러 검출에서 PSU(300)에 의해 사용되기 위한 에러 신호(ER_STAT)를 출력한다.
선택 및 실행 제어 로직 유닛(SECLU)(609)은 LSU에서의 실행을 위해 명령을 선택하는 기능을 한다. 이 유닛은 로드, 기억, 극소의 동작등의 순서 매김 제약을 처리한다. 예컨대, 나중에 발생한 어드레스 X로의 로드는 이전에 발생한 어드레스 X로의 기억을 통과할 수 없다. 로드의 이 타입은 기억과 유사하게 속성 어레이에 강한(strong)으로서 마크된다. 이는 기억 명령을 순서대로 개시하며, 기억 명령은 모든 이전의 로드 및 기억이 완료할때까지 개시될 수 없다. 최종적으로, 기억 명령의 일련 번호는 범위 내에 있어야 한다. SECLU(609)는 유효하고, 적합하며(즉, 현행 캐시에 의해 처리되지 않음), 그 모든 종속성이 충족되며, 약한(weak) 동작(예컨대, 로드)이거나 또는 범위내 있으며, 이전의 캐시 미스에 의해 제약받지 않는 명령만을 마스크하는 로직을 포함한다. 그런 다음 마스크된 명령은 마스크 논리 기준을 충족시키는 일련의 명령으로부터 가장 오래된 명령을 선택하는 선행(precedence) 매트릭스(623)에 의해 처리되다.
SECLU(609)는 또한 메모리 액세스를 제어하는 기능을 한다. SECLU는 캐시로 명령은 전송하고 액세스가 완료될때 캐시 상태 정보를 수신한다. SECLU는 또한, 캐시로부터의 로드 데이타에 대한 적절한 목적 레지스터 태그를 출력하며 속성 어레이(616)에서 액세스의 속성을 계속 트래킹한다. 이들 속성은 범위내, 약한/강한(일반적으로 기억 명령 및 극소의 명령은 강하며 로드는 약하다), 추측적인 실행 및 캐시로 전송하는 것에 대한 적합도를 포함한다.
SSFSL(620)은 명령 오피 코드, 명령 일련 번호, 명령 체크포인트 및 레지스터 태그를 포함하는 ISU(200)로부터 명령 패킷을 수신하며, 이 정보를 디코드하고 이 정보를 기억하기 위해 IDQ(610)의 정확한 슬롯을 선택하며, 정보를 적절한 필드로 분리한다. 각 일련 번호 엔트리 및 SN과 관련된 데이타는 큐의 빈 슬롯으로 기억된다.
SECLU는 또한 PSU(300)로부터 포인터값(ISN, NISN, CSN, PBSN 및 NMCSN)을 수신한다. CSN, PBSN, 및 NMCSN은, 명령 일련 번호가 범위 내에 있는지를 판정하는 것에 특히 관련된다. SECLU(609)는 상기 설명된 바와 같이, 액세스가 범위내에 있는지를, 즉 일련 번호가 상기 CSN보다 크고 NMCSN보다 작거나 동일한지를 판정하는 로직을 포함한다. 범위내 정보는 속성 어레이(616)로 전송되고, SECLU의 범위내 파일(611)에 기억된다. SECLU는 또한 소정의 액세스를 위해, IDQ에 기억된 엔트리와, 캐시로부터 상태 및/또는 데이타를 리턴한 데이타와 매칭시키기 위해 로직을 포함한다. IDQ 내의 모든 유효 엔트리는 사이클 및 속성 어레이가 요구되는 것과 같이 갱신되었는지를 알기 위해 모니터된다. 큐의 엔트리가 범위내에 있으며, 큐의 엔트리가 재이용될때까지 범위 내에 유지된다.
체크포인트 필드(614)는 큐 슬라이스로의 액세스에 대응하는 체크포인트 번호를 포함한다. 새로운 체크포인트 번호(들)는 각 사이클에서 ISB(61)로부터 수신된다. 유효 비트 큐(615)는 메모리 액세스 명령이 실제 이슈된다면 세트되는 유효성 비트를 갖고 있다. 이 정보는 명령 이슈 사이클동안, ISB(61)로부터 출력된다. 이 비트는 액세스가 ISB에 의해 소멸되면 리세트될 수 있다. 어드레스 필드(618)는 모든 캐시 액세스를 위한 어드레스를 갖고 있다. 일련 번호는 어드레스가 DFB(62) 어드레스 발생 유닛(FXAGU)(602)으로부터 어드레스 큐에 도달하기 전에 IDQ 어드레스 매칭 로직에 도달한다. 예컨대, 프로그램 순서 비트가 세트되면, 강한 비트는 속성 섹션에서 세트된다.
1.범위내 메모리 관련(긴 대기시간) 명령의 식별
상기 설명된 바와 같이, SECLU(609)는 명령이 ICRU(301)로부터의 CSN 및 NMCSN와, 워치포인트 유닛(304)으로부터의 PBSN에 응답하여 범위내(in-range)에 있는지를 판정하는 로직을 포함한다. 로직은 CSN과 PBSN 사이의 일련 번호를 가지며, 분기 예측오류에 대한 염려없이 실행될 수 있는 제1 윈도우(CAN_first-window_PBSN)의 명령을 식별하는데, 심볼 _는 엄격한 수학적 순서가 아닌, 메모리 명령 링에서의 관련 순서를 표시한다. CSN와 NMCSN 사이의 일련 번호를 갖는 가능한 작은 범위내 명령인 제2 윈도우의 명령은 분기 예측오류 또는 실행 예외에 대한 염려없이 실행을 위해 스케줄링될 수 있다. 범위내에 있는 메모리 관련 명령은 실행의 능동적인 스케줄링을 위해 DFB(62) 내의 LSU(200)로 식별될 수 있다. 도 23은 정규 상태를 유지하면서, 로드/기억 명령을 포함하는 긴 대기시간 명령을 능동적으로 스케줄링하는 본 발명의 방법의 일실시예의 개략적인 흐름도이다.
2.긴 대기시간(로드/기억) 명령의 능동적인 스케줄링을 위한 기본적인 구조 및 방법에 대한 향상
본 발명의 기본적인 방법에 대한 향상에 있어서, NMCSN 은 NMCSN을 진행시키기 위해 비오류 명령으로 공지된 소정의 명령을 무시하고, 로드/기억 명령 및, 메모리와 관련된 다른 명령을 더 능동적으로 스케줄링 하는 것을 허용함으로써 성능을 개선한다.
Ⅳ.체크포인트 처리
체크포인트는 공지된 시점에서의 머신 상태의 스냅샷(snapshot)이다. 체크포인트는 잘못예측된 분기 또는 실행 예외가 이슈한 경우에, 추측적인 명령 시퀀스를 복구하기 위해 이전의 머신 상태를 신속하게 복구시키기위한 방법 및 구조를 제공한다. 본 발명에 따른 예시적인 프로세서에서, 체크포인트는 명령 이슈 사이클동안 형성된다. 본 발명의 방법에서, 체크포인트의 복구에 기초한 머신 상태의 복구는 머신 백업으로서 정의된다.
본 발명에서, 체크포인트는 몇개의 명령 부류: (1)분기와 같은 예측된 프로그램 제어 전이 명령 및 (2)제어 레지스터의 값을 수정하는 부작용을 가질 수 있는 명령을 위해 형성된다.
제어 레지스터 명령(분기 명령등)은 예측되며, 프로그램 카운터(PC) 불연속을 초래할 수 있다. 본 발명의 구조 및 방법을 구현하는 CPU(51)에서, 프로세서는, 만일 프로그램 제어 명령(분기 명령 또는 리턴 타입의 점프 및 링크 명령)이 잘못 예측되면 머신 백업을 신속하게 제공하기 위해 각 예측된 프로그램 제어 명령을 위한 체크포인트를 형성한다. 만일 APC 및 NAPC값이 이러한 환경에서 세이브되지 않으면, 잘못 예측된 프로그램 제어 명령의 재이슈 및 재실행없이 정확한 FPC, APC 및 NAPC값을 재현하는 것이 어렵다. 체크포인트가 이러한 각 프로그램 제어 명령에 대해 형성되기 때문에, 머신 내에서 허용된 체크포인트의 최대수가 예측될 수 있는 현행 미결정 상태의 프로그램 제어 명령의 수를 제한한다. 예측된 프로그램 제어 명령은 상기 설명된 SPARC-V9 BPr, FBcc, FBPcc, Bcc, BPcc 및 JMP[rd=0] 명령이 될 수 있다.
프로그램 흐름 변화를 초래하는 다른 타입의 명령도 체크포인트될 수 있다. 이들 명령은 CALL, JMPL, TCC, RETURN, DONE, 및 RETRY와 같은 SPARC-V9 명령을 포함할 수 있다.
체크포인트는 또한 제어 레지스터 값을 수정하는 부작용을 가질 수 있는 명령을 포함하는, 머신 상태를 수정하는 명령에 대해서도 형성된다. 임의의 제어 레지스터를 체크포인트함으로써, 제어 레지스터는 추측적으로 수정될 수 있다. 이들은 SPARC-V9 WARR 및 WRASR 명령과 같은 제어 레지스터 파일(800)의 제어 레지스터로의 기록을 포함한다. 그러나, 모든 제어 레지스터가 성능을 저하하지 않고 체크포인트된 상태의 량을 감소시키기 위해 체크포인트되지 않는다.
또한, 예시적인 CPU(51)에서, 제어 레지스터 파일(800)의 제어 레지스터의 판독은 상기 설명된 바와 같이, 그 테이타는 워치포인트 유닛(304)에 기억되어, 데이타는 나중의 실행을 위해 FXU(601)에 대해 이용가능하게 될 수 있기 때문에 체크포인트를 요구한다. 이들은 SPARC-V9 RDRR 및 RDASR 명령과 같은 명령일 수 있다.
더욱이, 종종 이슈 트랩을 초래하는 명령은 체크포인트를 요구할 수 있다. 이들은 SPARC-V9 SAVE 및 RESTORE 명령과 같은 윈도우 제어 명령 및 예컨대, SPARC-V9 LDD/LDDA 및 STD/STDA 명령이 될 수 있는 비실행 명령을 포함한다.
트랩은 또한, 추측적으로 입력될 수 있으며 이슈될때 체크포인트된다. 따라서, 체크포인트는 차후 설명되는 방식으로 실행 트랩(etrap) 또는 이슈 트랩을 발생시키는 명령 이전에 이슈된 명령으로부터 형성될 수 있다. 또한, 체크포인트는 트랩 처리 루틴의 첫번째 명령 이전에 형성될 수 있어, 만일 트랩이 추측적으로 수취된다면, 리턴이 형성될 수 있다.
추측적으로 제어될 수 없는 부작용을 갖는 명령 또는, 예외를 거의 발생시키지 않고 대량의 체크포인트 정보를 요구하는 명령에 대해, 그 명령을 체크포인트하지 않는 것이 효율적이라고 결정될 수 있지만, 그 대신 이슈 이전에 머신을 동기화시킨다. 즉, 추측적으로 제어될 수 없는 부작용을 갖는 명령을 이슈하기 이전에 CPU는 머신 동기화 상태에 있어야 하는데, 이는 모든 미결정 명령이 커미트되고 리타이어되었다는 것(ISN=CSN=RRP)을 의미한다.
중요한 성능/설계 균형은 명령이 머신 동기화 명령으로서 설계되는냐 및 명령이 체크포인트되느냐의 선택에 달려있다. 동기화하기 위한 성능 저하는 추가적인 로직 복잡도 및 이러한 명령을 추측적으로 처리하는데 관련된, 체크포인트된 머신 상태를 기억하기 위해 요구되는 칩 영역을 포함하는 프로세서 영역에 대하여 불리하게 작용된다.
명령의 다수의 서로 다른 타입은 레지스터의 데이타 값을 수정한다. 통상적인 체크포인트 처리 방법은 레지스터 상태를 복구하기 위해 레지스터 테이타 값을 체크포인트한다. 비교를 위해, 본 발명의 방법을 구현하는 머신에 있어서, CPU(51)는 실제 레지스터 데이타 값을 체크포인트 처리하지 않고, 그 대신 레지스터 리네임 맵을 체크포인트 처리함으로써 이전의 레지스터 상태를 복구할 수 있다. 레지스터 데이타 값이 아닌 레지스터 리네임 맵을 체크포인트 처리하는 것은 CPU(51)에 기억된 체크포인트된 상태 정보의 량을 상당히 감소시키기 때문에 바람직하다.
예시적인 머신에서, 16개의 체크포인트까지 64개의 동시발생된 명령을 유지하는 것은 임의의 소정의 시간에서 이용가능하다. 예시적인 실시예에서, ISU(200)는 발생 사이클마다 최대 하나의 체크포인트를 할당하도록 제한되지만, 일반적으로 하나 이상의 다수의 체크포인트가 사이클마다 할당될 수 있다. 소정의 법칙이 또한 예시적인 CPU(51)에서 구현되어, 동일한 머신 사이클동안, 이슈될 수 있는 명령의 타입 및 조합을 제한한다. 예컨대, 예시적인 CPU에서, 하나의 제어 전이 명령만이 단일 머신 사이클동안 이슈될 수 있기 때문에, 하나의 체크포인트만이 상기 사이클동안 상태를 세이브하는데 필요하게 된다. 이 체크포인트 제한은 어떤 경우(어떤 명령 타입이 이슈 윈도우에서 대기하느냐에 좌우된다), 명령의 최대수(예컨대, 4)가 상기 사이클동안 이슈될 수 없다는 것을 의미한다. 그 이상 또는 그 이하의 체크포인트가 제공될 수 있으며, 그 수는 머신에서 동시에 이슈될, 체크포인트 처리를 요구하는 명령의 수와 같은 인자에 기초하여 선택된다.
예시적인 실시예에서, 활성 명령 링(312)은 64개의 명령을 동시에 유지한다. 차후 설명되는 바와 같이, 본 발명의 구조 및 방법은 체크포인트될 임의의 명령 타입을 제공하며, 선택적으로 ISU(200)로부터의 TIMEOUT_CHKPNT 신호에 응답하여 어떤 명령 사이클 타임아웃 간격에서 임의의 명령 타입을 체크포인트 처리한다. 그러므로, 유지되는 체크포인트의 수는 활성 명령 링(312)에 의해 유지되는 명령의 수보다 크지 않아야 하며, 그 수는 일반적으로 더 작을 수 있다. 예시적인 CPU에서, 16개의 체크포인트가 할당가능하며, 이들 체크포인트 각각은 체크포인트를 리타이어시키는 명령 다음에 복구될 수 있는 머신 자원이다.
예시적인 CPU(51)에서, 체크포인트 데이타(머신 상태)는 DO_CHKPT에 응답하여 체크포인트 기억 유닛에서 CPU(51)를 통해 국부적으로 세이브되어, 칩 루팅을 감소시키고 성능을 향상시킨다. 그러나, 당업자는 체크포인트된 데이타가 칩 이외에 기억될 수 있음을 이해한다.
체크포인트 기억 유닛 각각은 16개의 어드레셔블 기억 요소 또는 엔트리를 갖는다. 16개의 체크포인트 번호 각각에 대응하는 각 기억 엔트리는 차후 설명된다. 따라서, 도 6을 참조하여, APC 및 NAPC 레지스터(113,114)의 컨텐트(CHKPT_PC 및 CHKPT_NPC)는 DO_CHKPT 신호에 응답하여 PC 로직(106)에 의해 PC 체크포인트 기억 유닛(107)에 기억된다. 유사하게 제어 레지스터 컨텐트(CHKPT_CNTRL_REG)는 도 17에 도시된 바와 같이, 제어 로직(816)에 의해 제어 레지스터 체크포인트 기억 유닛(817)에 기억된다. 또한 도 16에 도시된 바와 같이, FXRFRN(604), CCRFRN(610), 및 FPRFRN(605) 각각의 리네임 맵을 나타내는 데이타(CHKPT_MAP)는 체크포인트 기억 유닛(616)에 기억되고, 프리리스트 로직(701)의 프리리스트를 나타내는 데이타(CHKPT_FREELIST)는 프리리스트 체크포인트 기억 유닛(702)에 기억된다. 그리고, 차후 설명되는 바와 같이, 트랩 스택 유닛(815)의 임의의 컨텐트는 체크포인트된다.
ISU(200)는 언제 체크포인트가 형성되는지를 판정하는 기능을 한다. 이는 체크포인트될 필요가 있는 방금 설명된 타입이 있는지를 결정하기 위해, BRB(59)로부터 수신된 인출된 명령을 디코디함으로써 이루어진다. 차후 설명되는 바와 같이, ISU는 또한, PSU(300)가 체크포인트가 머신 사이클의 소정의 수가 발생한 후에 형성되어야 하다는 것을 TIMEOUT_CHKPT 신호에 의해 가리킬때, 언제 체크포인트가 형성되는지르 결정한다. 따라서, ISU(200)는 체크포인트가 형성되어야 하고, 체크포인트를 위한 체크포인트 번호(차후 상세히 설명됨)를 지정하는 DO_CHKPT 신호를 발생시킨다.
도 24는 PSU(300) 내의 체크포인트 유닛(303)의 기능 블록도이다. ISU(200)에 의한 DO_CHKPNT 신호의 어서트에 의해, 체크포인트(CKPT)(303)는 하나 이상의 명령에 대해 체크포인트를 형성하며, 체크포인트를 요구하는 명령 슬롯 0-3에서 이슈된 명령의 체크포인트를 형성한다. 적어도 하나의 프리 체크포인트가 사용가능하지 않는 이상, 체크포인트는 할당될 수 없기 때문에, CKPT(303)는 CHKPT_AVAIL 신호를 ISU(200)로 전송해야 한다. CHKPT_AVAIL는 적어도 하나의 체크포인트가 할당을 위해 사용가능하다는 것을 ISU에게 알리고, 체크포인트 번호를 ISU에게 알려서, 체크포인트 번호가 각 명령에 할당될 수 있고, ISU(200)에 의해 형성되고 DFB(62)로 전송되는 체크포인트 번호(CHKPTs)로 통합될 수 있다. 이들 신호는 ISU(200)에 의해 이슈된 DO_CHKPNT 신호를 앞서지 않는다. 만일 어떠한 체크포인트도 할당을 위해 이용가능하지 않으면, ISU에 의해 이슈된 명령은 체크포인트 자원이 이용가능하게 될때까지 정지한다. 간단히 말해, 기억된 체크포인트는 실행 예외 또는 예측 오류로부터 복구하기 위해 요구되는 경우에만 사용되며, 그렇지 않으면, 기억된 체크포인트는 할당 해제되고, 재사용을 위해 기억 기억 공간 이용가능하게 된다. (체크포인트를 포함하는 머신 자원의 할당 및 할당 해제는 차후 상세히 설명된다.) 차후 설명되는 기본적인 본 발명의 구조 및 방법에 대한 향상에 있어서, 타임아웃 체크포인트는 머신 사이클의 소정의 수 또는 이슈된 명령의 소정의 교호 수가 체크포인트 형성없이 소멸되는 경우, 디코드된 명령에 상관없이 형성된다.
체크포인트 유닛(303)은 체크포인트를 계속 트래킹하고, ISU(200)에 의한 명령에 의해 체크포인트를 할당하며, 체크포인트가 더이상 필요하지 않을때 체크포인트를 이용가능하도록 한다. 만일 커미트된 일련 번호가 체크포인트 i+1의 일련 번호보다 클때(CSNSN), 체크포인트 i는 본 발명의 방법 및 구조에 따라 임의의 명령 경계에서 머신 상태를 복구하는 것이 허용되기 때문에, 리타이어될 수 있으며, 이는 커미트된 명령보다 순차적으로 이전의 명령으로 머신을 백트래킹하는데 결코 필요하지 않다. PSU(300)는 또한, 시스템이 체크포인트를 할당하거나, 이용가능하게 할때 시스템의 휴지를 지시하여, 이들 시스템 구성성분이 리타이어된 체크포인트를 위해 이용되는 그 국부적 데이타 기억 영역을 재사용할 수 있다. 체크포인트 유닛(303)은 ISU(200)에게, 어떻게 많은 체크포인트가 할당을 위해 이용가능한지를 알린다. 체크포인트의 사용은 차후 설명되는 백업 및 백스텝 유닛에 관련하여 차후 상세히 설명된다.
체크포인트 유닛(303)는 5개의 주요 기능을 갖는다. 먼저, 체크포인트 유닛은, ISU(200)로부터의 DO_CHKPNT 신호에 응답하여, 체크포인트 레지스터 유닛(352)내의 체크포인트 데이타 레지스터 구조(CHKPNT_REG_i)의 리스트의 유지를 통해 ISU(200)에 의해 요구될때 체크포인트의 할당을 제어한다. DO_CHKPNT 신호는 제어 전송 명령이 이슈될때, 형성될 하나 이상의 체크포인트 및 그 각각의 체크포인트 번호 위치(들)(예컨대, 0-15)를 특정한다. 본 발명의 구조 및 방법에 대한 향상에 있어서, TIMEOUT_CHKPT는 체크포인트 유닛(303)에 의해 발생되며, ISU(200)에 전송되어, 기본적인 체크포인트 처리 방법에 대한 향상으로 차후 설명되는 바와 같이 명령 타입에 비교적 상관없이 소정의 타이밍에서 체크포인트를 형성한다. 이 타임아웃 체크포인트는 사이클의 최대수를 설정하고 제한하기 위해 제공되며, 체크포인트가 형성되지 않은 명령의 결과를 복구하기 위해 취한다. (타임아웃 체크포인트 형성은 체크포인트 가능한 명령 타입이 동일한 명령 윈도우에서 이슈될때 지연되거나 무효된다.)
두번째, 체크포인트는 소정의 체크포인트(n) 및 시간적으로 다음 체크포인트(n+1)를 지나는 CSN 진행에 기초하여 체크포인트를 리타이어(클리어)한다. CSN을 결정하는데 사용되는 CSN은 체크포인트 레지스터에 기억된 일련 번호와 CSN의 비교에 의해서 특정 체크포인트 번호를 지난다. 체크포인트 레지스터에 기억된 일련 번호는체크포인트가 형성된 명령 후의 명령의 일련 번호이다. ICRU(301)로부터의 ISN 및 CSN에 응답하여, 예컨대, 체크포인트 n은 CSN이 체크포인트 n 및 n+1을 지나 진행하는 경우에만 리타이어될 수 있다.
세번째, 체크포인트 유닛(303)은 ISU(200)에게, 체크포인트가 할당을 위해 ISU에 의해 이용가능한지와, 체크포인트 위치 번호(들)를 포함하는, ISU(200)에게 전송되는 신호 CHKPT_AVAIL을 통해 할당되어야 하는 다음 체크포인트가 어떤 것인지를 표시한다. 네번째, 체크포인트 유닛(303)은 할당된 체크포인트에 대하는 명령 일련 번호(SN)을 기억하며, 다름 유닛에 의해, 특히 ICRU(300)에 대해 요구될때 체크포인트와 관련된 SN 및 SN+1을 모두 제공한다. 다섯번째, 이슈된 유효 체크포인트가 소멸되는 것을 백트래킹 유닛(305)내의 백업 유닛(402)에 표시하는 명령 소멸 벡터(KILL_VEC)를 발생시킴으로써, 그리고 체크포인트가 머신 백업에 관련하여 리타이어될 수 있음을 신호 CHKPNT_SN 및 CHKPNT_SN_INC에 의해 ICRU(301)에 표시함으로써, 체크포인트 유닛은 실행 머신 백업에 관여한다. (머신 백업은 차후 상세히 설명된다.)
A. 체크포인트 할당 레지스터의 구조
체크포인트 할당 레지스터(325) 구조는 표 1에 도식적으로 나타난다. 첫번째 6비트는 상태비트이다. 비트-V는 는 체크포인트의 유효성(할당)을 표시한다. 비트-CP(체크포인트 지나감)는 CSN이 이 체크포인트의 SN을 지나갔는지를 표시하고, 비트 Q는 CSN 진행의 트래킹을 지속하는 5개의 상태중 한 상태를 나타내며, GT(보다 많음)는 CSN이 할당에서의 체크포인트의 일련 번호보다 큰지를 표시한다. 비트-GT는 CSN이 언제 이 체크포인트를 지났는지를 판정하는데 사용된다. 부팅시, 비트 V 및 CP는 적절한 기능을 위해 비트-V가 1로 세트되고 비트 CP가 0으로 세트되는 체크포인트 위치 0을 제외하고 0으로 세트되어야 한다. NSN 필드는 체크포인트된 일련 번호 다음에 올 다음 체크포인트 번호를 표시한다. 이 실행에 있어서, 체크포인트 번호는 세이브되지 않으며, 오히려 위치 i에 대한 체크포인트 데이타 구조의 V-비트의 세팅은 체크포인트 i가 할당되었음을 나타낸다. 체크포인트 레지스터에 대한 가능한 상태(CHKPNT_REG_i)는 표 2에 설명되어 있다. 예시적인 CPU에서, 비트-Q는 체크포인트 할당동안 '000' 또는 '001'로 리셋된다. 비트-Q는 A-링(312) 둘레로의 CSN 진행에 기초하여 상태를 변화시킨다. 표 3은 Q-비트 상태 및 그 변화를 나타낸다.
B. 체크포인트 할당
예시적인 체크포인트 할당 레지스터의 구조(CHKPNT_REG_i)
i 1-비트 1-비트 3-비트 1-비트 6-비트
0 V CP Q GT NSN
1 V CP Q GT NSN
··· ··· ··· ··· ··· · · ·
14 V CP Q GT NSN
15 V CP Q GT NSN
예시적인 체크포인트 레지스터를 대해 가능한 상태(CHKPNT_REG_i)
V CP GT 설명
0 X X 체크포인트는 할당되지 않았다. CP 및 GT는 유효하지 않다. CP는 체크포인트가 비활성이면 0으로 항상 세트된다.
1 0 0 체크포인트는 할당되지 않았다. CSN은 할당시 체크포인트 일련 번호보다 작으며, CSN은 체크포인트를 지나서 아직 진행하지 않았다.
1 0 1 체크포인트는 할당되지 않았다. CSN은 할당시 체크포인트 일련 번호보다 작으며, CSN은 체크포인트를 지나서 아직 진행하지 않았다.
1 1 X 체크포인트는 할당되지 않았다. CSN은 체크포인트를 통과했다. GT는 유효하지 않다(don't care). 만일 다음 체크포인트가 또한 11X 상태에 있으면, 이 체크포인트는 리타이어될 수 있다.
예시적인 Q-비트 상태 및 변화
Q-상태 상태 설명
0 체크포인트 할당동안 0CSN32이라면, 현행 형성된 체크포인트의 초기 상태
1 체크포인트 할당동안 31CSN64에 대해, 현행 형성된 체크포인트의 초기 상태
10 할당후, CSN이 63/0 경계를 한번 가로질러 진행하는 체크포인트의 상태
11 할당후, CSN이 63/0 경계를 두번 가로질러 진행하는 체크포인트의 상태
1XX 할당후, CSN이 63/0 경계를 두번 가로질러 진행하고, CSN이 현행 32보다 작은 체크포인트의 상태. X는 don't care를 나타낸다.
명령 SN을 위한 체크포인트의 할당에 있어서, 체크포인트 할당 로직 유닛(351)은 신호를 체크포인트 레지스터 및, 체크포인트 i가 유효하며 리타이어되지 않았다는 것을 표시하기 위해 V-비트를 CHKPNT_REG_i의 1에 대해 1로 세트시키고 CP-비트를 0으로 세트시키는 제어 유닛(352)에 전송한다. 할당된 체크포인트는 할당(CHKPT_SN)을 위해 이용가능한 다음 체크포인트 번호(들)를 ISU에게 알리는, ISU(200)에 전송된 CHKPT_AVAIL 신호 및, 체크포인트 형성 인에이블 신호를 포함하고 체크포인트가 형성되어지는(CHK_LOCATION) 명령 일련 번호를 식별하는, ISU로부터의 DO_CHKPNT 신호에 의해 CAL(351)에서 결정된다. 비트-Q는 표 3에 도시된 바와 같이, 체크포인트가 할당될때마다 CSN의 위치를 표시하기 위해 기록된다. 이 정보는 링 둘레로부터의 CSN의 변화(예컨대 위치63으로부터 역으로 위치 0까지의 변화)를 검출하는데 사용된다. 할당되는 체크포인트는, 체크포인트 일련 번호를 식별하고 인에이블 신호로서 기능하는 신호 DO_CHKPNT에 의해 결정된다. 또한, 체크포인트에 대응하는 일련 번호는 체크포인트 할당 로직 유닛(351)에 의해 계산되지만, 1만큼 인크리먼트된 일련 번호(SN=SN+1)만이 레지스터에 기억된다. 일련 번호 NSN은 2개의 다른 조건에서 사용된다. 첫번째로, NSN은 ICRU(301)로의 데이타 버스 상에서 인크리먼트된 체크포인트 일련 번호 신호(CHKPNT_SN_INC)가 된다. 두번째로, NSN은 오류 명령이 체크포인트를 수반하는 명령 슬롯에 놓여 있는지를 결정하는데 사용된다. SN보다 NSN(SN+1)을 레지스터에 세이브함으로써 논리를 세이브하고 체크포인트 다음의 일련 번호를 식별하는 신호의 생성을 빠르게 한다. 선택적으로, SN 그 자체는 레지스터에 기억될 수 있으며, 논리는 인크리먼트된 일련 번호를 발생시키기 위해 제공될 수 있다.
다음 체크포인트 할당 절차는 예시적이다. 만일 체크포인트 형성 신호가 어서트(DO_CHKPNT)되면, V-비트 필드는 1로 세트되며(CHKPNT_REG_i[V_field]=1), CP_비트 필드는 클리어된다(CHKPNT_REG_i[CP_field]=0). 그런 다음, 체크포인트가 형성되어진 명령 일련 번호는 엔코드된 4-비트 체크포인트 위치 벡터로부터 분할되며, 체크포인트 일련 번호 필드(CHKPNT_REG_i[SN_field])에 기억된다. 에컨대, CPU의 실시예에서, '0000'은 체크포인트 위치 NISN를 가리키며; '0001'은 위치 NISN+1을 가리키며; '0011'은 위치 NISN+2을 가리키며; '0111'은 위치 NISN+3을 가리키며; '1111'은 위치 NISN+4를 가리킨다.
C.체크포인트 리타이어먼트
체크포인트는 체크포인트 클리어/리타이어먼트 로직 유닛(353)에서 클리어되거나 리타이어된다. 체크포인트 유닛(303)은 사이클마다 ISU(200)에 의해 요구되는 만큼의 체크포인트만을 요구한다. 체크포인트는 현행의 체크포인트(n) 및 다음 체크포인트(n+1)를 지난 CSN에 응답하여 레지스터(352)의 V-비트 필드를 클리어함으로써 리타이어된다. 체크포인트 할당 로직 유닛(353)은 체크포인트 레지스터(352)에서 리타이어될 체크포인트 이전에 사용되는 소위 OLDEST_ACTIVE_CHECKPOINT를 유지한다. 체크포인트 리타이어먼트 절차는 다음과 같다. 소위 CSN_PASSED 신호는 체크포인트(CKPSN)에 기억된 일련 번호와 커미트된 일련 번호(CSN) 포인터(예컨대, CKPSN_CSN) 사이의 차이를 계산함으로써 리타이어 로직(353)에서 발생된다. CSN은 ICRU(301)에서 유지되며, 각 사이클에서 체크포인트 유닛(303)에 전송된다. 체크포인트는 CSN이 소정의 체크포인트 및 시간적으로 다음 체크포인트(n+1)을 지나 진행하거나, 체크포인트 일련 번호를 지나는 머신 백업이 있는 경우에만 리타이어될 수 있다.
본 발명의 구조 및 방법의 일실시예에 있어서, 체크포인트를 지나는 CSN의 진행은 CSN을 전체 체크포인트 일련 번호와 동시에 비교하는 논리를 제공함으로써 결정된다. 비교를 실행함에 있어서, A-링(312)의 둘러싼 형태로 있는 특성이 고려되어(modulo-링 길이), CSN이 어떤 경우에 체크포인트 일련 번호를 지나는지를 결정하는데 있어서 테스트하는 것보다 간단하다.
D. 머신 백업에서의 체크포인트 유지
백트래킹 유닛(305)로부터 수신한 WILL_BACKUP 및 BACKUP_CHECKPOINT 신호에 응답하여, 다음 머신 사이클의 개시를 위해 KILL_VEC 신호를 준비하도록 체크포인트 유닛(303)에게 알린다. KILL_VEC 신호는 커미트되지 않은 명령을 삭제한다. 삭제되는 이 명령은 체크포인트시 명령의 명령 일련 번호를 특정하는 BACKUP_CHECKPOINT 신호 및 이전에 커미트된 명령을 지시하는 ISN으로부터 유도된다. CSN과 백업 체크포인트 사이의 모든 이러한 명령은 삭제된다.
CPU(51)의 일실시예에서, BACKUP_CHECKPOINT는 백트래킹 유닛(305) 내의 백업 유닛(402)에 의해 이슈된 신호이며, 어떤 체크포인트가 상태를 복구하기 위해 백업하는지를 CPU(51)에게 알려준다. 명령 삭제 벡터 신호(KILL_VEC)는 또한 백트래킹에 의해 발생되어, ISN과 백업 체크포인트 사이의 명령중 어느 명령이 삭제되는지를 표시한다. 예컨대, 명령 삭제 벡터는 삭제되는 명령을 식별하는 핫비트를 갖는 다수-핫비트일 수 있다. 다른 신호 형태가 선택적으로 사용될 수 있다.
체크포인트 유닛(303)은 ICRU(301)에 체크포인트 일련 번호를 식별하는 체크포인트 레지스터 정보(CHKPNT_SN)를 제공하여, 백업동안 ISN을 조절할 수 있다. 체크포인트 유닛(303)은 또한 ICRU(301)에 의해 사용되는 일련 번호를 제공하여, 완료되지 않은 부동소수점 실행 또는 데이타 브레이크포인트 예외가 검출될때(CHKPNT_SN_INC), ISN을 조절한다.
E. 타임아웃 체크포인트 향상
통상적인 체크포인트 처리 기술에 있어서, 체크포인트는 명령의 디코드된 속성에 기초하여 형성된다. 체크포인트는 소정의 명령 속성에 대해서만 형성되어, 연속적인 체크포인트(체크포인트 경계 내의) 사이의 명령의 수가 제한되지 않는다. 명령 실행 예외가 발생하면, CPU(51)는 오류 명령 이전의 CPU(51) 상태를 복구하기 위해 다수의 머신 사이클을 소비해야만 한다. 따라서, CPU(51)가 오류 명령에 이르기 전의 명령을 재실행하거나, 복구하는데 걸리는 시간은 윈도우 사이즈 및 체크포인트 경계 내의 명령의 수에 대한 함수가 된다. 이 명령 윈도우 사이즈는 CPU(51)에서 언제라도 이슈될 수 있는 명령의 최대수를 의미한다(예시적인 CPU(51)에서, 64개의 명령까지 언제라도 머신사이클에서 이슈될 수 있다).
본 발명의 구조 및 방법에 대한 이러한 향상에 있어서, 체크포인트는 디코드된 명령 속성에(만) 기초하지 않고 형성되지만, CPU(51)의 타임아웃 상태에 기인하여(추가로) 형성된다. 이 타임아웃 상태는 체크포인트 형성 없이 지나간 명령 이슈 사이클의 수에 기초한다. 예컨대, 체크포인트가 형성되지 않았다면, 그 이유는 근래 이슈된 명령이 통상적으로 체크포인트되는 타입이 아니기 때문이다. 타임아웃 체크포인트 처리는 체크포인트 경계내의 최대 명령의 수를 제한한다. 명령 윈도우 사이즈가 체크포인트 경계 내의 최대 명령의 수보다 크기만 한다면, 프로세서는 통상적인 명령이 예외의 경우 체크포인트 기술에 기초하여 디코드되는 것보다 빠르게 체크포인트된 상태를 복구할 수 있다. 또한, 본 발명의 체크포인트 처리의 향상에 의해 CPU(51) 상태 복구의 명령 윈도우 사이즈에 대한 의존성을 제거한다.
타임아웃 체크포인트는 통상적인 체크포인트를 구현하는 구조 및 방법 또는, 본 발명의 리네임 맵 체크포인트 처리에서 사용될 수 있다. 더욱이, 타임아웃 체크포인트는 통상적인 프로세서 백업 기술뿐만 아니라 본 발명의 백업 및 백스텝 구조 및 방법과 함께 사용될 수 있다.
타임아웃 카운터(355)는, 적어도 하나의 명령이 머신 사이클 동안 이슈되었음을 표시하는, ISU(200)로부터의 INSTR_ISSUED 신호를 수신하며, 명령 이슈의 수를 카운트한다. 체크포인트(명령 디코드 또는 이전의 타임아웃 체크포인트에 기초한 체크포인트) 형성없이 지나간 명령 이슈 사이클의 수가 소정의 카운트를 초과하면, 타임아웃 카운터는, 타임아웃 상태가 이슈했으며 체크포인트가 형성되어야 한다는 것을 표시하는 TIMEOUT_CHKPNT 신호를 ISU에 전송한다. 그런 다음 ISU(200)는 체크포인트가 형성되어야 한다는 것을 표시하는 DO_CHKPT 신호를 발생시킨다. 상기 설명된 바와 같이, 이 신호는, ISU(200)가 이슈된 명령이 체크포인트를 요구하는 타입의 명령임을 결정할때 또한 발생될 수 있다. 카운터(356)는, 만일 체크포인트가 실제로 형성되었을 경우에만 ISU로부터의 DO_CHKPNT 신호에 의해 리세트된다. 체크포인트 경계내에서 허용되는 명령의 최대수는 최대 명령 이슈율(머신 사이클당 이슈되는 명령의 최대수) 및 카운터의 타임아웃 값에 의해 결정된다.
타임아웃 체크포인트에서의 변화는 바람직할 수 있다. 예컨대, 만일 타임아웃 체크포인트에서와 동일한 사이클에서 이슈될 예정인 명령중 하나가 정당하면, 명령 디코드에 기초한 체크포인트가 우선적으로 형성되며, 타임아웃 카운터를 리세트시키는 기능을 한다. 또한, 만일 체크포인트가 타임아웃 체크포인트가 정당하게 되는 시점에서 할당되면, 타임아웃 체크포인트는 명령 디코드 타입 체크포인트를 위해 정규 상태를 유지하는데 요구될 수 있는 머신을 정지시키기보다는 소정의 법칙에 따라 지연(한사이클 지연)될 수 있다.
F. 임의의 명령 경계에서의 정규 상태의 유지 및 기억
본 발명의 방법은 임의의 명령 경계에서 정규 상태를 유지할 수 있으며, 명령 경계에서 상태를 복구하는데 요구되는 정보의 량을 또한 최소화한다. 여기에서 사용되는 명령 경계(instruction boundary)는 명령이 이슈되기 바로 전의(또는 명령이 이슈된 직후의) 연속하는 일련의 명령에서의 포인트에 해당한다.
통상적인 명령 체크포인트는 프로세서의 체크포인트 경계에서(즉, 체크포인트된 명령에서만) 정규 상태의 유지를 허용하지만, 통상적인 체크포인트 처리는 모든 명령에서 이용되지 못하며, 만일 그렇게 이용되어도, 머신 사이클당 다수의 명령을 이슈하는 머신에 대해, 동일한 다수의 체크포인트가 각 사이클마다 요구될 수 있기 때문에 CPU(51)를 개선시키기보다는 방해가 된다. 본 발명의 다양한 명령 이슈 법칙은, 하나의 명령만이 각 사이클에서 체크포인트되는 것을 요구하도록 구현되며 백스텝 방법 및 구조는 양호한 명령 레벨 복구를 제공한다. 명령 체크포인트는 추측 명령 시퀀스에 의해 부정확하게 수정될 수 있는 명령과 같은, 아키텍쳐(머신) 상태를 유지하고 나중에 복구하는데 사용된다.
체크포인트 경계에서 정규 상태를 유지하는 통상적인 체크포인트 처리는 공지되어 있지만, 통상적인 체크포인팅은 머신 상태를 포획하고 나중에 복구하는 방법으로서만 사용될때, 추측 비순위 실행동안 더 근접하게 유지된 명령 경계에서 정규 상태의 유지를 허용하지 않는다.
G. 체크포인트 처리된 데이타량을 감소시키기 위해 소정 명령에 대해 머신을 동기화하는 방법
체크포인트는 고정 크기를 가지며, 이 크기는 체크포인트를 생성하는 명령 타입이나 오퍼랜드와는 관계 없다. 예를 들어, 200개의 상태 값을 수정할 수 있는 명령을 갖는 머신(CPU)에 있어서, 생성된 모든 체크포인트는 명령 자체가 적어도 8개의 상태 값을 수정한다 하더라도 100개의 상태 값을 기억하여야 한다. 본 발명의 실시예에 있어서, 신규한 구조 및 방법은 각각의 특정 명령에 의해 수정된 상태의 양과 통상적인 처리과정에서 각각의 특정 명령이 발생하는 통계학적 빈도수를 고려함으로써, 모든 체크포인트에서 검사된 데이타량을 감소시키도록 구현된다.
이러한 설계 기술을 이용하여, 최적의 체크포인트 크기가 결정될 수 있으며, 머신내에서 구현될 수 있다. 먼저, 각각의 명령에 의해 수정가능한 상태가 결정된다. 다음으로, 어떤 대표적인 처리과정 작업에 대해 각각의 특정 명령이 발생하는 통계학적 빈도수가 결정된다. 각 명령에 대한 상태 기억 장치 요구가 검사된다. 설계 목적은 거의 이슈되지 않는 명령들을 식별하고, 더욱 빈번히 발생하는 명령보다 상대적으로 대용량인 체크포인트 기억 장치를 요청하는 것이다. 어떤 선형 또는 비선형 최적화 기술은 체크포인트할 명령을 결정하는데 사용될 수 있으며, 어떤 최대 체크포인트 기억 장치에 기초한 비수학적 규칙은 체크포인트 처리된 상태를 감소시키기 위해 사용될 수 있다. 단순화된 예가 이하 기술된다.
체크포인트 처리된 상태 감소의 단순화 예
명령 세트내에서 임의 명령에 의해 수정될 수 있는 상태(mod)
상태1 상태2 상태3 상태4 상태5 상태6 상태7 상태8 상태9 상태10
명령 A에 의해 수정될 수 있는 상태(mod)
mod - - mod - - - - - -
명령 B에 의해 수정될 수 있는 상태(mod)
mod - - - - - - - - -
명령 C에 의해 수정될 수 있는 상태(mod)
- mod mod - mod mod mod - mod mod
명령 D에 의해 수정될 수 있는 상태(mod)
- - - - - - - mod - -
각각의 명령 A, B, C 및 D가 체크포인트 처리된다면, 모든 체크포인트는 상태 1 내지 10 모두를 기억하여야 한다. 그러나, 명령 C가 거의 실행되지 않는다면, CPU(51)는 명령이 거의 발생하지 않는 실행 동안 머신을 동기시키기 위해 속도가 감소되고, 이로써 명령 C를 체크포인트 처리하지 않는다면, 체크포인트 처리된 상태를 10개의 상태에서 3개의 상태, 즉 상태 1, 상태 4 및 상태 8로 감소시키게 된다.
머신 동기화는 머신 동기를 요청하는 임의의 명령의 이슈를 현행 처리중인 명령이 커미티드되고 리타이어될때까지 지연하는 단계와, 동기화를 요구하는 명령을 순차적으로 순서대로 실행하는 단계를 포함한다. 머신이 동기 모드에서 실행되면, 예외 조건이 상태에 대해 재기록되기 전에 식별되기 때문에 명령 체크포인트 처리는 정규 상태를 유지하기 위해 요구되지 않는다.
H. 체크포인트 처리된 데이타량을 감소시키기 위해 레지스터 리네임 맵을 체크포인트 처리하는 방법
게다가, 체크포인트가 발생될 때 머신의 상태 전체가 기억되기 때문에, 종래의 체크포인트는 대용량의 정보를 포함한다. 이로써, 머신 상태는 잘못 예측된 분기, 결함, 실행 에러 또는 다른 처리상의 예외 상황으로부터 복구하도록 복구된다. 변화하는 상태만을 수정시키기 위한 체크포인트 처리방법은 종래에는 시도되지 않았다.
예컨대, 64개의 명령이 동시에 이슈되는 것이 허용되는 CPU(51)에서 종래의 체크포인트 처리방법이 각 명령에 적용된다면, 각 명령당 하나씩, 4-이슈 머신에서 4개의 체크포인트가 머신 사이클당 생성된 수와 같은 수인 64개의 체크포인트까지 유지되어야 할 것이다. 종래의 체크포인트에 기억된 상태의 특정 타입 및 양이 CPU(51) 구조와 명령 세트에 좌우된다고 하지만, 각각의 종래 체크포인트는 임의의 명령에 의해 수정될 수 있는 모든 상태에 대한 상태 정보를 포함한다. 다시 말해서, 종래의 체크포인트는 명령이 상태를 수정할 수 있던 할 수 없던간에 모든 수정가능한 상태에 대한 상태 정보를 포함한다. 종래 체크포인트 처리방법에 있어서, 머신 상태를 복구하기 위해 요청된 모든 머신 상태는 체크포인트에서 체크포인트로 수정되는 상태만이 아니라, 각각의 체크포인트에 대해 재기록된다.
본 발명의 방법에 있어서, 레지스터는 리네임되고, 리네임 맵은 레지스터 리네임 맵에 기억된다. 레지스터 리네임 방법은 여기서 다른 경우가 기술된다. 레지스터 리네임 방법은 아키텍쳐 레지스터를, 처리과정에 이용가능한 아키텍쳐 레지스터의 수를 효율적으로 증가시키는 기능을 하는 더 많은 수의 물리적 레지스터로 맵핑하는 방법이다. 본 발명의 방법에 있어서, 새로운 체크포인트 처리방법에 필요한 기억장소의 양은 체크포인트 자신의 데이타 값이 아닌 리네임된 레지스터를 체크포인트 처리함으로써 감소된다. 기술된 바와 같이, 소정 명령은 머신을 동기화시키는 정확한 상태를 유지하기 위해 대용량의 체크포인트 처리된 상태를 필요로 함으로써, 이전에 이슈된 모든 명령은 실행 및 커미트되고, 리타이어된 자원(ISN=CSN=RRP)을 가지게 된다. 만일 동기화된 명령 결함이 잘못 예측되면, 상태는 수정되지 않고, 이러한 동기화된 명령 결함이 처리될 수 있거나, 명령 실행 결과가 상태를 수정시킬 수 있기 전에 다른 명령 경로가 속행될 수 있다.
제어 레지스터를 수정할 수 있는 명령을 비동기적으로 요청함으로써 수정된 모든 상태가 체크포인트되어, 머신 상태는 신속하게 복구될 수 있다. 상기 명령에 의해 수정된 모든 상태는 체크포인트되고 상기 기술된 바와 같이 CPU(51)내에 국부적으로 기억된다. 게다가, 제어 레지스터를 수정하지 않는 명령의 실행에 대한 상태는 이 명세서에서 다른 곳에 기술된 바와 같이 CPU(51)를 역으로 실행시킴으로써 복구될 수 있다. 도 26은 타임아웃 체크포인트를 형성하기 위한 다른 체크포인트 처리방법에 적용가능한 체크포인트 개선점을 포함한 체크포인트 처리의 본 발명인 방법의 실시예를 나타낸 플로우챠트이다.
V. 예측 오류 및 예외로부터의 복구
상기에서 언급된 바와 같이, 프로그램 제어에 대한 예측 오류 및 예외가 도 5에 도시된 명령 파이프라인에서 때때로 발생한다. 이러한 에러는 예측 오류 또는 예외가 발생된 명령 바로 이전의 상태로 CPU(51)를 되돌리기 위해 검출 및 처리된다.
A. 복수의 미결정 분기/점프-링크 명령을 동시에 평가하기 위해 워치포인트를 이용한 예측 오류 검출
명령을 예측하여 실행할 수 있는 프로세서에 대해, 분기 방향(분기에 관계 없이) 또는 분기 어드레스(목적 어드레스 또는 분기 명령에 대한 다음 어드레스)는 분기가 결정되기 전에 예측될 수 있다. 이후, 이러한 예측이 오류로 판명되면, CPU(51)는 이전 상태로 되돌리고, 정정한 분기 스트림으로 명령의 실행을 개시한다. 종래의 프로세서에 있어서, 복수의 분기 명령은 종종 하나의 사이클내에서 평가할 수 있었다. 그러나, 이러한 종래의 프로세서는 사이클당 단지 하나의 분기 예측을 평가한다. 그러므로, 평가할 준비가된 비선택된 분기 평가는 지연되어야 한다. 분기 평가를 지연시키는 것은 CPU(51) 성능을 떨어뜨리며, 가능한 신속하게 분기를 평가하는 것은 CPU 성능을 크게 개선시킬 수 있다.
본 발명인 워치포인트 구조 및 방법은 종래 기술에 대해 여러 가지 이점을 제공한다. 먼저, 본 발명의 워치포인트 구조 및 방법은 복수의 예측된 분기 또는 점프-링크 명령을 동시에 모니터 또는 워치포인트할 수 있다는 것이다. 또 다른 이점으로는, 복수의 실행 유닛으로부터 버스로 전송되는 데이타를 동시에 모니터 또는 워치포인트함으로써 예측된 분기 또는 점프-링크 명령이 대기하고 있는 복수의 조건-코드 데이타 또는 평가된 점프-링크 어드레스를 취할 수 있다는 것이다. 세 번째 이점은 분기 또는 점프-링크 명령의 복수의 예측 오류 신호를 동시에 발생시킬 수 있다는 것이다. 네 번째 이점은 다른 분기 어드레스 또는 예측된 점프-링크 어드레스를 단일의 공유 영역에 기억할 수 있다는 것이다. 다섯 번째 이점은 예측 오류가 워치포인트에 의해 검출될 때 명령 인출에 대해 정정한 분기 어드레스 또는 점프-링크 어드레스를 전송할 수 있다는 것이다.
도 27에 있어서, 워치포인트(WPT) 유닛(304)은 이슈되고 체크포인트 처리된 각 제어 전송 명령의 실행 및 예측 상태를 모니터링하는 기능을 한다. 그러므로, WPT 유닛(304)은 DO_WTCHPT 신호와 함께 DO_CHKPNT 신호를 수신하는데, DO_WTCHPT 신호는, Br Xcc, 조건부 Br Icc, 조건부 Br Fcc, JMPL rt(I)(rd=0), 제어 레지스터(CCR, FSR 레지스터는 제외)로의 판독/기록 명령에 대한 조건 코드 정보를 포함하는 분기, 분기 취소 및 점프-링크 명령에 대한 조건 코드 정보를 포함한다. 조건 코드 정보는 WPT 유닛(304)에 의해 나중에 사용되는데, 명령 순서가 적절히 예측되었는지 또는 복구될 필요가 있는지를 판정하는데 사용된다. WPT 유닛(304)은 본 명세서의 다른 곳에서 더 상세히 기술된다.
WPT 유닛(304)은 DFB(62)로부터 데이타 전송 버스를 통해 수신되는 실행 완료 신호를 모니터링하거나 워치포인트하여, 예컨대 분기 예측 오류와 같은 소정의 이벤트가 검출되면, 다른 CPU 유닛(51)에게 알리는 기능을 한다. 워치포인트 유닛(304)내에 있는 워치포인트 레지스터(491)는 다양한 기능을 수행한다. 이러한 레지스터는 분기 예측, JMPL 예측을 검사하고, 최초 예측이 부적절할 때 백업 후, 명령을 재인출하기 위해 정확한 분기/JMPL 어드레스를 BRB(59)에 공급하는 기능을 한다. 이들 레지스터는 데이타 전송 분배 버스를 검사하고, 여러 실행 유닛(FXU, FPU, LSU 및 FXAGU)으로부터의 결과를 모니터하기 때문에 워치포인트 레지스터라 불린다. 각 체크포인트당 하나씩 16개의 워치포인트 레지스터가 있다.
워치포인트 유닛(304)은 정수 실행 유닛(FXU), 정수 및 어드레스 발생 실행 유닛(FXAGU), 부동소수점 실행 유닛(FPU)를 갖는 CPU와 관련하여 기술된다. 본 명세서에 있어서, 이 기술분야의 당업자는 더 많이, 더 적게 또는 다른 실행 유닛이 구현될 수 있다는 것을 알 수 있을 것이다. 특히, CPU(51)의 실행 유닛과 결합되도록 부가적인 FXU, FXAGU가 제공될 수 있다.
도 27은 워치포인트 유닛(304)내의 주요 기능 블록을 나타낸 기능 블록도이다. BRB(59)내의 인출 유닛(FETCH)은 명령을 인출하여, 이슈 유닛(200)에 제공하고, 명령의 디코딩에 따른 분기 및 JMPL을 예측한다. 이슈 유닛(200)은 DO_CHKPNT 신호를 워치포인트 유닛(304)와 FSR/CCRFRN 유닛(606)에 전송하고, DO_WTCHPT 신호를 워치포인트 유닛(304)에 전송한다. FSR/CCRFRN 유닛(606)은 조건 코드 리네임(CC-리네임) 기능을 수행한다. DO_CHKPNT 신호는 체크포인트 구성을 개시하는 MAKE_CHKPNT 신호와, 구성될 체크포인트 개수를 식별하는 NEXT_CHKPNT 신호를 포함한다. DO_WTCHPT 신호가 워치포인트 유닛(304)에게 알리는 것은 분기 또는 JMPL 명령이 이슈되었으며, 이슈된 명령의 분기 타입, 이슈된 명령내의 조건부 필드, 조건 코드(CC) 태그, 교번 다음 프로그램 카운터 어드레스/예측 점프-링크 명령 어드레스(ANPC/예측 JMPL 어드레스)를 식별하는 것이다. FETCH 유닛은 또한, DO_WTCHPT 신호내의 WR-ANPC 신호의 형태로, 워치포인트 유닛(304)에 분기/JMPL 어드레스를 전송한다. 분기나 JMPL 또는 다른 제어 전송 명령(분기/JMPL)이 이슈되면, 이슈 유닛(200)은 JMPL 신호를 포함하는 이슈된 각각의 분기 또는 JMPL 예측에 대한 분기/JMPL 명령이 이슈된 신호인 DO_WTCHPT 신호를 전송한다. WP_ANPC 신호는 타겟 RAM에 기록되고, PC 로직(106)에 의해 평가된 목적 FPC를 지시하게 된다. ANPC 신호는 예측된 분기 및 JMPL 명령의 디코딩 과정 동안 판정된다. JMPL 명령에 대해, 워치포인트 유닛에 전송된 DO_WTCHPT 신호내의 WP_ANPC 신호는 예측된 목적 FPC 이다. 분기 예측 명령에 대해, 워치포인트 유닛에 전송된 DO_WTCHPT 신호내의 WP_ANPC 신호는 교번 FPC 즉, 교번 분기 방향에 대한 FPC 이다. 워치포인트 유닛내의 ANPC 출력 로직으로부터 출력된 RD_ANPC 신호는 예측 오류가 발생했을 때 FPC, APC 및 NAPC 를 평가하기 위해 백업 동안 사용된다. 리네임 유닛(600)(FSR/CCRFRN(606)으로 불린다)의 조건 코드(CC) 부분은 CC 레지스터 리네임 동작을 관리하여, 명령이 이슈된 후, CC 리네임 신호를 워치포인트 유닛(304)에 전송한다. CC 리네임 신호는 이하에 정의된 바와 같이, CC_TAG_RENAMED_C, CC_TAG_C, CC_DV_C, 및 CC_DATA_C 신호를 포함한다.
각 실행 유닛(FXU(601), FXAGU(602), FPU(600))은 조건 코드 태그 (CC_TAGS_F)신호, 조건 코드 데이타 유효(CC_DV_F) 신호, 조건 코드 데이타(CC_DATA_F)신호를 데이타 전송 버스를 통해 워치포인트 유닛(304) 및 FSR/CCRFRN 유닛(606)으로 전송한다. FXU 유닛으로부터의 태그, 데이타 유효, XCC 및 ICC 데이타 신호는 FXU_XICC_TAGS_F, FXU_XICC_DV_F, FXU_XCC_DATA_F, FXU_ICC_DATA_F 신호를 포함한다. FXAGU 유닛으로부터의 신호는 FXAGU_XICC_TAGS_F, FXUAG_XICC_DV_F, FXAGU_XCC_DATA_F, FXAGU_ICC_DATA_F 신호를 포함한다. FPU 유닛으로부터의 신호는 FPU_FCC_TAGS_F, FPU_FCC_DV_F, FPU_FCC_DATA_F 신호를 포함한다. XCC, ICC 및 FCC 조건 코드 및 포맷은 예컨대, SPARC-V9 구조 사양에 기술되어 있다.
도 28에 있어서, 워치포인트 유닛(304)은 실행 유닛(FXU, FPU 및 FXAGU) 또는 FSR/CCRFRN(606)으로부터 수신되는 리네임된 CC 신호로부터 CC 데이타 전송 버스에서 직접 조건 코드를 획득하는 CC-획득 로직(1000)을 포함한다. 또한 워치포인트 유닛(304)은 분기 또는 JMPL 명령이 디코딩될 때마다 BRB(59)로부터 수신되는 예측된 조건 코드 데이타를 포함하는 워치포인트 정보를 기억하기 위한 워치포인트 기억 엘리먼트(1002)와 관련 판독/기록 제어 로직을 포함한다. 또한 워치포인트 유닛(304)은 실행 유닛으로부터 수신되는(직접 또는 리네임 유닛을 통해) 평가된 또는 실제 조건 코드와, 각각의 워치포인트 기억 엘리먼트(1002)에 기억된 예측된 조건 코드의 비교를 실행하는 평가 로직(1001)을 포함한다. 타겟 RAM과 이와 관련된 제어 및 비교 로직(1003)은 이하 더욱 상세히 기술된 분기 또는 JMPL 예측 오류로부터 회복하는데 기여한다. CC-획득 로직(1000), 평가 로직(1001), 워치포인트 기억 엘리먼트(1002)는 16개의 분리된 구조로 되어 있으며, 그 하나는 CPU(51)에 할당될 수 있는 16개의 워치포인트 유닛 각각에 해당된다. 단지 하나의 타겟 RAM(1003) 데이타 기억 구조가 제공된다.
다수의 데이타 엘리먼트는 16개의 워치포인트 각각에 기억된다. 각 워치포인트에 기억된 데이타는 워치포인트 동작을 설정하는 워치포인트 유효 비트(WP_VALID[i]=1)와, JMPL 명령(JMPL이 워치포인트를 요구한다는 것을 나타내는 WP_JMPL[i]=1, 워치포인트가 분기예측에 대해 형성되었다는 것을 나타내는 WP_JMPL[i]=0)으로부터 분기 명령을 구별하기 위한 명령 타입 데이타와, 명령내의 조건 필드(WP_COND[i])와, WP_XCC, WP_ICC, WP_FCC에 대한 기억 장소를 포함한다. 일실시예에 있어서, 이러한 데이타 엘리먼트는 래치에 기억된다. CC-태그는 CC_TAG_ARRAY에 기억되며, ANPC(Alternate Next Program Counter address)/예측된 JMPL 어드레스는 타겟 RAM에 기억된다. 유효 비트는 워치포인트 로직에 의해 기록되며, 분기 타입, COND, CC-태그 및 ANPC/JMPL 어드레스는 이슈 유닛(200)으로부터 수신된 DO_WTCHPT 신호로부터 유도된다. DO_WTCHPT에 응답하여, 워치포인트 기억 엘리먼트(491)는 각각의 분기/JMPL 명령에 대해 동작하며, 필드 선택 및 기록 로직은 DO_WTCHPT 신호를 디코딩아여, 분기 타입, COND 필드, CC 태그 및 ANPC/예측 JMPL 어드레스를 워치포인트 유닛에 기록한다.
워치포인트 엔트리는 유효-비트를 1로 설정함으로써 활성될 수 있으며, 1로 설정하지 않으면 모든 체크포인트 엘리먼트는 이미 그 사이클에서 할당되며, 여기서 워치포인트(그리고 체크포인트)를 요구하는 명령의 이슈는 지연된다. 다중 워치포인트 엘리먼트가 활성(유효)될 수 있는 동시에, 유효된(유효 필드가 셋트)모든 워치포인트 엔트리는 평가될 수 있으며, 각 사이클에서 동시에 잘못 예측된 신호를 발생시킨다. 워치포인트 유닛(304)은 데이타 기억 장소에 할당된 칩 영역을 감소시키기 위해, 동일한 기억 장소에 있는 JMPL 명령에 대한 예측된 목적 어드레스 또는 분기 명령에 대한 ANPC 중 하나를 기억할 수 있다. 할당된 다목적 워치포인트 레지스터가 이슈 유닛(200)으로부터의 DO_WTCHPT 신호의 컨텐트에 따라 실제로 사용될 수 있다. 즉, 워치포인트 엔트리가 예측된 JMPL 명령 또는 예측된 분기 명령에 대해 형성될 수 있다. 워치포인트 레지스터는 분기 및 점프 예측 평가으로 자기-할당취소한다.
워치포인트 엘리먼트는 명령이 조건부 분기 명령에 대해 발생할 수 있는 예측 오류가 발생할 때마다 워치포인트 유닛(304)에 의해 할당된다. 모든 워치포인트 엘리먼트는 대응하는 체크포인트 엘리먼트를 갖지만, 그 반대가 항상 참인 것은 아니다. 즉, 모든 체크포인트 엘리먼트가 대응하는 워치포인트 엘리먼트를 항상 갖는 것은 아니다. 체크포인트는 워치포인트 엘리먼트는 예컨대 조건부 분기의 경우에서 명령이 예측 오류로 판명날 때마다 할당되기 때문에, 대응하는 활성 워치포인트 엔트리를 가질 수 있는 것은 아니다. 체크포인트는 예측 오류로 판명될 수 있는 다른 명령에 대해 할당될 수 있기 때문에(기억(SAVE) 명령 또는 주기적 타임아웃 체크포인트가 분기 명령이 아닌 명령에 대해 형성될 때), 모든 체크포인트가 워치포인트를 갖는 것은 아니다. 워치포인트는 워치포인트 유닛(304)내의 복수의 워치포인트 엘리먼트(432)중 하나에 기억된다. 체크포인트 레지스터는 체크포인트 정보를 기억하기 위해 제공되지만, 실제로 체크포인트된 머신 상태는 기술된 바와 같이 CPU(51)를 통해 국부적으로 기억된다. 표 4는 명령 세트에 대한 체크포인트내의 일련 번호에 의해 기억된 정보 타입과 만일 있다면 이에 대응하는 워치포인트를 나타낸다.
조건 코드 획득 로직(492)은 DFB(62)내의 실행 유닛으로부터 데이타 전송 버스상에 나타나는 조건 코드(CC)를 검출하여 획득하고, 이 코드를 평가 로직(493)으로 전달한다. 여기에서, 획득된 조건 코드는 명령이 워치포인트 엘리먼트(491)에서 이슈되고 기억될 때 예측된 조건 코드와 비교된다. 만일 획득된 조건 코드가 예측된 조건 코드와 매칭된다면, 명령은 정확하게 예측된 것이며, 복구될 필요가 없다. 그러나, 만일 조건 코드 획득 유닛에 의해 획득된 조건 코드가 예측된 조건 코드와 매칭되지 않는다면, 명령은 잘못 예측된 것이며, 반드시 복구되어야 한다.
워치포인트 및 체크포인트 기억 장소의 단순화된 예
번호 체크포인트 체크포인트
0 SN=33, BRZ, 머신상태 BRZ,CC레지스터 대기,CC 레지스터 태그
1 SN=41, ADD, 머신상태 -- 체크포인트 필요없음
2 SN=44, JMPL, 머신상태 JMPL,레지스터 태그(jmpl addr.calc.의 결과)
3 SN=47, SAVE, 머신상태 -- 체크포인트 필요없음
4 -- 프리 체크포인트 -- 프리 체크포인트
14 SN=28, FBGE, 머신상태 FBGE, FCC 대기, 레지스터 태그
15 -- 프리 체크포인트 --프리 체크포인트
실행 유닛으로부터 조건 코드를 획득 및 비교하는 것은 다수의 인자에 의해 수행된다. 이러한 인자로서는, 비순서 명령 순차 실행, 각 실행 유닛내의 명령 실행 큐 처리, 상이한 명령 타입의 실행에 필요한 머신 사이클의 가변 수, 실행 자원 또는 명령, 동일 명령 타입에 대해 대기하기 위해 필요한 변이성을 포함한다. 이러한 인자들과 다른 것은 명령 결과와 상태(에러 및 조건 코드 정보 포함)는 실제로 데이타 전송 버스상에 나타날 때 일반적인 불확실성을 나타내게 된다. 그러므로, 본 발명은 명령이 이슈될 때 또는 어떤 사이클 동안 동일 머신 사이클 동안 버스상에 나타날 수 있는 조건 코드 데이타를 획득하는 구조 및 방법에 관한 것이다. 또한, 본 발명은 리네임된 레지스터에 대한 조건 코드를 획득하는 구조 및 방법을 제공한다. 조건 코드 레지스터의 리네임 처리를 포함하는 레지스터 리네임 처리는 레지스터 종속성을 제거하기 위해 CPU(51)에 제공된다. 그러므로, 워치포인트 유닛(304)은 CC 데이타 및 태그를 데이타 전송 버스로부터 나중에는 CCRFRN 유닛에 있는 CC 레지스터가 갱신된 후, FSR/CCRFRN(606)으로부터 직접 수신한다.
도 27에 있어서, DFB(62)내에 있는 2개의 고정소수점 실행 유닛(FXU, FXAGU)과 1개의 부동소수점 실행 유닛(FPU)이 도시되어 있지만, 더 많은 또는 더 적은 실행 유닛이 구현될 수 있으며, 어떤 타입이라도 상관 없다. 각각의 실행 유닛은 CC-데이타 전송 버스(430)에 의해 CCRFRN 유닛(606) 및 워치포인트 유닛(304)에 접속된다. 이 CC-데이타 전송 버스(430)는 실행 유닛(FXU, FXAGU 및 FPU)에 의해 평가된 CC-데이타의 결과를 전달한다. CC-데이타는 CCRFRN을 갱신하는데 사용된다. 워치포인트 유닛(304)은 CC-데이타 전송 버스를 모니터 및 워치하여, 다음 사이클에서 CCRFRN으로부터 CC-데이타를 얻기를 대기하기 보다는 CC-데이타 전송 버스로부터 직접 CC-데이타를 획득한다. 이 경우 CC-데이타를 버스로부터 직접 획득하는 것은 분기 평가를 더욱 빠르게 한다.
분기 예측 오류가 워치포인트 유닛(304)에 의해 검출되면, 워치포인트 유닛(304)은 예측 오류 신호인 WP_MISPRED_VEC를 PSU(300)내의 PLSM(307)로 전달한다. PSU가 워치포인트 유닛으로부터 예측 오류 신호인 WP_MISPRED_VEC를 획득하면, PSU(300)내의 PLSM(307)은 예측 오류 및 실행 예외중 최초의 것을 선택하여, 본 명세서에서 다른 곳에서 기술된 바와 같이, 역행 절차를 개시한다.
도 25는 워치포인트(304)와, DFB, BRB내의 ISB, FSR/CCRFRN, 실행 유닛(FXU, FXAGU, FPU)과의 인터페이스와, PSU(300)내의 PLSM과의 인터페이스를 더 상세히 나타낸 기능 블록도이다. 이러한 각각의 주요 기능 블록은 이하 더 상세히 기술되어 있다.
1. 워치포인트 엘리먼트의 동작
워치포인트 엘리먼트 및 제어 로직(WP-엘리먼트)(1002)은 WP 활성/비활성 제어 로직(2012)과, 한 세트 16개의 워치포인트 엘리먼트(2013)를 포함하는데, 여기서, 각 16개의 XCC, ICC, FCC, COND, JMPL/분기, 유효 지시자와 관련된 정보를 기억한다. 분기/JMPL이 이슈되어 예측되면, DO_WTCHPT 신호는 예측된 분기, 분기 취소, 점프-링크 명령에 대한 조건 코드 정보를 포함하는 ISU(200)에 의해 발생된다. 분기 예측은 분기의 방향을 예측한다(분기되든 안되든)는 것을 의미한다. JMPL 예측은 JMPL 목적 어드레스를 예측한다는 의미이다. 왜냐하면, JMPL은 항상 프로그램의 흐름을 변화(항상 분기)시키기 때문이다. 분기/JMPL 명령을 이슈할 때, CPU(51)는 체크포인트 번호에 의해 식별된 체크포인트를 형성한다. 일단 체크포인트가 형성되면, 체크포인트는 CPU(51)가 체크포인트 위치와 다음 체크포인트 위치 사이에 있는 명령에 대한 모든 명령 실행을 완료할 때까지 활성 상태로 유지된다 프로세서는 동시에 다중의 활성 체크포인트를 가질 수 있다. 체크포인트 형성은 이슈된 분기/JMPL 명령에 한정되지 않고, 예컨대 트랩이 걸리는 것과 같은 다른 상황에서 형성될 수도 있다.
각 워치포인트 엘리먼트(2012)는 체크포인트 엔트리에 대응한다. CPU(51)는 16개의 체크포인트 엔트리를 보유함으로써, 워치포인트 유닛(304)은 16개의 워치포인트 엘리먼트를 갖게 된다. 워치포인트 활성/비활성 로직(WADL)(2012)은 ISU(200)으로부터의 DO_CHKPNT 및 DO_WTCHPNT 신호에 응답하여 워치포인트 엘리먼트를 활성시키는 기능을 한다. DO_CHKPNT 신호는 체크포인트 형성을 개시하는 MAKE_CHKPNT 신호와, 형성될 체크포인트 번호를 식별하는 NEXT_CHKPNT신호를 포함한다. WADL(2012)는 또한, 예측된 분기/JMPL 명령이 무효로되면 워치포인트 엘리먼트를 비활성시킨다. ISU(200)이 분기 명령을 이슈할 때, ISU(200)은 체크포인트가 형성되어야 한다는 것을 나타내는 MAKE_CHKPNT 신호와, NEXT_CHKPNT 신호에 의해 표시되고, PSU(300)에 의해 할당된 체크포인트 번호를 발생시킨다. 도 50에 도시된 바와 같이, 하나의 워치포인트 엘리먼트를 활성화시키기 위해, NEXT_CHKPNT 신호는 디코더(434)에 의해 디코딩되고, ISU(200)으로부터 발생된 DO_WTCHPT로부터 유도된 DO_PREDICT 신호와 함께 AND 게이트(435)에서 AND 로직연산된다. 이 출력은 DO_PREDICT_VEC[i]라 불린다. 이 신호 DO_PREDICT_VEC[i]는 WP_VALID[i]를 셋트시키는데, 여기서 [i]는 16개의 워치포인트 번호중 하나를 가리킨다. 도 50은 워치포인트 출력 로직(2102)의 일부를 포함하여, WP_ACTIVE_VEC 및 WP_MISPRED_VEC 로직과 관련된 워치포인트 유닛의 특정 실시예에 대한 부가적인 구조를 나타낸다.
ISU(200)는 분기/JMPL 명령이 이슈될 때 워치포인트 유닛에 다수의 신호를 보낸다. 이러한 신호는 XCC에 따른 분기로서, ICC에 따른 분기로서, FCC에 따른 분기로서, 점프-링크 명령(JMPL)으로서, 분기의 조건 코드 필드(COND)로서 명령을 식별한다. 이러한 신호는 워치포인트 유닛(304)에 의해 수신되어, DO_CHKPNT의 성분 신호로서 NEXT_CHKPNT에 의해 지시된 워치포인트 엘리먼트에 기억된다. 워치포인트 엘리먼트 I 가 워치포인트 활성 제어 로직(WACL)(2012)에 의해 할당되면, 이러한 신호는 WP_XCC[i], WP_ICC[i], WP_FCC[i], WP_JMPL[I], WP_COND[i] 레지스터 각각에 유지된다. 각각의 워치포인트 엘리먼트는 워치포인트 엘리먼트가 비활성되어 다른 분기/JMPL 명령에 의해 재동작할 때까지 이러한 레지스터 값을 보유하게 된다.
CPU(51)는 각 사이클에서 하나 이상의 체크포인트를 형성하여, 사이클 당 하나 이상의 분기/JMPL 명령을 이슈할 수 있다. 그러므로, 하나 이상의 워치포인트 엘리먼트가 동작할 수 있다. 예컨대, 만일 CPU(51)가 2개의 체크포인트를 형성하여 동일 사이클에서 2개의 분기를 이슈한다면, 2개 세트의 DO_WTCHPT, XCC, ICC, FCC, JMPL, COND, DO_CHKPNT 신호 또는 이 신호와 동등한 정보 컨텐트가 필요하게 된다.
SPARC V9 구조 사양에 제공된 조건 코드 포맷 및 필드 한정 및 JMPL 명령 포맷 및 정의는 본 명세서에서 이미 기록되었다. 부동소수점 조건 코드는 비트 0과 비트 1을 포함하는 2-비트 포맷을 갖는다. 정수 조건 코드는 XCC에 대해 비트 7-4(N,Z,V,C 각각)으로 제공되며, ICC에 대해 비트 3-0(N,Z,V,C 각각)으로 제공된다. 분기가 이슈되고 분기하는 것으로 예측되면, COND 값은 분기 명령의 조건부 필드 데이타와 동일하게 된다. 분기가 이슈되고 분기하지 않는 것으로 예측되면, COND 필드 데이타의 비트-3은 반전되고, 나머지 비트는 변하지 않으며, 이것이 COND 값이 된다.
도 28은 워치포인트 유닛(304)의 내부 구조를 더 상세히 나타낸 것이다. 워치포인트 유닛(304)의 내부에는 CC-획득 로직(1000), 평가 유닛(1001), WP-엘리먼트 기억 및 제어 유닛(1002) 및 타겟 RAM(1003)이 있다. 도 29는 워치포인트 유닛(304)의 일부를 다르게 나타낸 도면이다. 여기에는, 현행 매칭 로직(1005), 어레이 최근 매칭 로직(1004), CC-선택 로직(1006)이 포함되는데, 여기에는 평가 준비(EVAL_READY) 및 평가 조건 코드(EVAL_CC)로직이 포함된다.
도 30은 분기 예측 및 평가의 타이밍챠트를 나타낸다. 워치포인트는 각각이 예측된 분기/JMPL 정보를 유지하며 예측의 정확성을 평가할 수 있는 복수의 워치포인트 엘리먼트를 갖는다. 사이클 1에서는 분기가 이슈된다. 사이클 2에서, 복수의 워치포인트 엘리먼트중 하나(엘리먼트 i 라 가정한다)가 활성된다. 이어서, WP_ACTIVE[i]가 어서트된다. 사이클 5에서, FXU 유닛은 분기를 제어하고 워치포인트 엘리먼트가 대기하고 있는 CC-데이타를 리턴시킨다. 사이클 5에서, 워치포인트 엘리먼트 i 는 CC-데이타를 획득한다. 사이클 6에서, WP_ACTIVE_VEC[i] 신호는 워치포인트 엘리먼트가 CC-데이타를 획득했기 때문에 디어서트되며, EVAL_READY[i] 신호가 어서트된다. EVAL_READY[i] 신호는 CC-평가를 인에이블시킨다. 만일 예측이 옳다면 EVAL_TRUE[i] 신호가 어서트되며, 예측이 옳지 않다면 EVAL_TRUE[i] 신호가 어서트되지 않는다. 이 예에 있어서의 타이밍도는 예측이 옳지 않다고 가정한 것이다. 그러므로, WP_MISPRED_VEC 신호가 어서트되고 PSU(300)내의 PLSM으로 전달된다. PLSM은 모든 워치포인트 엘리먼트(이 실시예에서는 16개의 엘리먼트)로부터의 WP_MISPRED_VEC[i] 신호중에서 우선권을 취하고, 실행 유닛으로부터 트랩 신호를 실행시키며, 최초의 이벤트를 판정한다. 사이클 7에서, PSU(300)는 CPU(51)를 이전 상태로 되돌리는 DO_BACKUP 신호를 어서트한다. 이 DO_BACKUP 신호는 CPU에게 백업을 실행했다는 것을 알리는 MAKE_BACKUP 제어 신호와, 백업이 만들어질 체크포인트 번호를 식별하는 BACKPU_CHKPNT 신호를 포함한다. 도 29는 복수의 워치포인트 엘리먼트중 하나와 관련된 워치포인트 유닛의 특정 실시예에 대한 부가적인 구조를 나타낸다.
2. 데이타 전송 버스로부터 CC 데이타의 직접 획득
CC 획득 로직(1000)은 데이타 전송 버스로부터 조건 코드 데이타 유효 태그와 조건 코드 태그를 수신하는 CC 태그 현행 매칭 로직(2001)을 포함하고, 이들 태그를 현행 머신 사이클 동안 ISB로부터 수신된 조건 코드 태그와 매칭시킨다. 예시적인 로직 회로는 도 31에서 CC 태그 현행 매칭 로직의 실시예로 도시되었다.
FSR/CCRFRN 유닛(606)은 CC_RENAMED, CC_TAG_C, CC_TAG_RENAMED_C, CC_DV_C, CC_DATA 신호들을 워치포인트로 전송한다. CC_RENAMED 신호는 CC가 현행 머신 사이클에서 이슈된 명령에 의해 수정될 때 어서트된다. CC_TAG_C 신호는 현행 머신 사이클에서 발생하는 CC 수정이 배제되는 것을 제외하고 리네임된 CC의 물리적 태그를 식별한다. CC_TAG_RENAMED_C 신호는 리네임된 CC의 물리적 태그를 의미하지만, 현행 사이클에서 발생하는 CC 수정은 포함된다. CC_DV_C 신호는 CC_DATA 신호가 이전 사이클에서는 수정되고 현행 사이클에서는 수정되지 않은 CC 데이타를 가질 때 어서트된다. 그러므로, CC_DV_C=1 이면, 이전 사이클에서 실행된 CC 수정은 CC_DATA 신호내에 반영된다. 게다가, CC_DV_C=0 이면, CC_DATA 값은 갱신되지 않으며, FSR/CCRFRN 유닛은 지금까지의 CC 데이타를 획득하기 전에 이전 사이클에서 이슈된 명령의 완료를 대기한다. FSR/CCFRFN(606)에 의해 워치포인트로 전송된 신호는 표 6에 기술되어 있다.
신호 컨텐트
CC_RENAMED CC가 현행 머신 사이클에서 이슈된 명령에 의해 수정될 때 어서트된다. 조건부 코드 선택 논리 유닛에 의해 사용된다.
CC_TAG_C 리네임된 CC의 물리적 태그를 식별하지만, 현행 사이클에서 발생하는 CC 수정을 배제한다. 현행 매칭용으로 사용된다.
CC_TAG_RENAMED_C 리네임된 CC의 물리적 태그를 식별하지만, 현행 사이클에서 발생하는 CC의 수정을 포함한다. 어레이내에 기록되며 어레이 매칭용으로 사용된다.
CC_DV_C CC_DATA가 이전 사이클에서 수정되고 현행 사이클에서 수정되지 않은 CC 데이타를 포함할 때 어서트된다. 조건부 코드 선택 논리 유닛에 의해 사용된다.
CC_DATA CC_DV_C=1이면, 이전 사이클에서 실행된 모든 CC 수정은 CC_DATA[7:0]에 반영된다. CC_DV_C=0이면, CC_DATA 값은 현행값이 아니며, FSR/CCRFRN은 현행 CC 데이타를 획득하기 전 이전 사이클에서 이슈된 명령이 완료되기를 대기한다. 조건부 코드 선택 논리 유닛에 의해 사용된다.
도 31에 있어서, 비교 회로(2006, 2008, 2010) 각각은 리네임된 CC의 물리적 태그를 식별하지만 현행 머신 사이클에서 발생하는 CC 수정을 배제하는 CC_TAG_C 신호를 수신한다. 각 비교 회로는 또한, 데이타 전송 버스로부터 직접 조건 코드 태그를 수신한다. 즉, FPU로부터 FPU_FCC_TAG_F 신호, FXU로부터 FXU_XICC_TAG_F 신호, FXAGU로부터 FXAGU_XICC_TAG_F 신호를 수신한다. 여기에서, FXAGU_XICC_TAG_F 및 FXU_XICC_TAG_F 신호는 정수 조건 코드의 XCC 및 ICC 부분을 포함한다. 비교 회로의 출력은 AND 게이트(2007, 2009, 2011)로 전송되어, 제어 신호로서의 기능을 하는 데이타 유효 신호(FPU_FCC_DV_F, FXU_XICC_DV_F, 또는 FXAGU_XICC_DV_F)와 AND 로직 연산 처리된다. 데이타 유효 신호가 어서트되어, 비교 회로에 의해 판정된 매칭이 유효하다면, CC 현행 매칭 신호(FPU_CURR_MATCH, FXU_CURR_MATCH 또는 FXAGU_CURR_MATCH)가 어서트된다.
도 31에 도시된 바와 같이, CC 리네임된 태그 어레이 매칭 로직(2002)은 한 셋트로된 16 셋트의 비교 회로(2015)를 포함하며, 각 실행 유닛(FPU, FXU, FXAGU)에 대해 AND 로직연산 기능 블록(2016)을 수행하는 로직 회로를 포함한다. 현행 매칭 로직(2001)이 데이타 전송 버스로부터의 신호와 CC_TAG_C를 비교하는 반면, 이와 동시에 어레이 매칭 로직(2002)은 데이타 전송 버스로부터의 신호 각각과, 리네임된 CC의 물리적 태그를 식별하지만 현행 사이클에서 발생하는 CC 수정을 포함하는 CC_TAG_RENAMED_C 신호를 비교한다. CC_TAG_RENAMED_C 신호는 CC가 현행 머신 사이클에서 이슈된 명령에 의해 수정될 때 어서트된 CC_RENAMED 신호와 DE_PREDICT_VEC 신호를 AND 로직연산 처리함으로써 발생된 기록 인에이블 신호의 제어하에서, 16개의 CC 태그 어레이(2003) 기억 엘리먼트중 하나에 기록된다. 각 사이클에서, CC_TAG_RENAMED_DC의 모든 기억된 값은 FPU로부터의 FPU_FCC_TAG_F 신호, FXU로부터의 FXU_XICC_TAG_F신호, FXAGU로부터의 FXAGU_XICC_TAG_F 신호와 비교되어, 어떤 매칭을 식별할 수 있다. 즉, 16개의 비교 동작은 FPU, FXU 및 FXAGU 각 사이클에서 실행된다. 비교 회로(2016)의 출력은 제어 신호로서의 기능을 하는 데이타 유효 신호(FPU_FCC_DV_F, FXU_XICC_DV_F 또는 FXAGU_XICC_DV_F)와 AND 로직연산 처리된다. 만일 데이타 유효 신호가 어서트되어 비교 회로에 의해 판정된 매칭이 유효하다면, CC 어레이 매칭 신호(FPU_ARRAY_MATCH[i], FXU_ARRAY_MATXH[i], FXAGU_ARRAY_MATCH[I])가 어서트된다. 그러므로, CC 획득 로직은 복수의 해결되지 않은 분기 평가를 동시에 모니터링할 수 있다.
도 31은 CC 획득 로직을 나타낸다. CC_TAG_ARRAY 는 16개의 레지스터를 구비하는데, 각각의 레지스터는 16개의 체크포인트에 각각 대응하며, CC_TAG_C 비트수와 동일한 수의 래치(여기서는 4 비트 래치라 가정한다)를 갖는다. 분기를 이슈하고 예측할 때, CC_TAG_RENAMED_C 신호는 DO_WTCHPT 로부터 유도된 DO_PREDICT_VEC[i]에 의해 선정된 CC_TAG_ARRAY 의 위치로 기록된다. CC_RENAMED는 AND 로직 게이트와 같은 기록 인에이블 및 어드레스 선택 로직(2004)에서의 기록 인에이블 신호로서의 기능을 한다.
프로세서는 2개의 고정소수점 실행 유닛인 FXU 및 FXAGU와, 하나의 부동소수점 실행 유닛을 가지는 것으로 가정되었다. 일실시예에 있어서, FXU 만이 JMPL 명령을 처리한다고 가정한다. 각각의 유닛은 CC 데이타 전송 버스를 갖는다. FXU CC 데이타 전송 버스는 FXU_CC_TAG_VALID, FXU_CC_TAG 및 FXU_CC_DATA를 구비한다. CC를 수정시키는 실행이 FXU에서 완료되면, FXU_CC_TAG_VALID 가 어서트되고, FXU_CC_TAG는 리네임된 CC의 물리적 태그를 가지며, FXU_CC_DATA는 CC의 결과 데이타를 갖게 된다. 동일한 것이 FXAGU 및 FPU에도 적용된다. FSR/CCRFRN 유닛에서의 조건 코드 데이타는 다음 사이클에서 이러한 CC 데이타 전송 버스를 이용하여 갱신된다. 워치포인트는 워치포인트 엘리먼트가 CC 데이타를 대기한다면, 데이타 전송 버스로부터의 CC 데이타를 획득한다. CC_TAG_Cz는 FXU_CC_TAG와 비교되고, 이들의 매칭 신호는 FXU_CC_TAG_VALID와 AND 로직연산 처리되며, 이 출력 신호는 FXU_CC_CURR_MATCH 신호라 불린다. 또한, CC_TAG_ARRAY에 있는 레지스터의 컨텐트는 FXU_CC_TAG와 비교되며, 이들의 매칭 신호는 FXU_CC_TAG_VALID와 AND 로직연산 처리되며, 이 출력 신호는 FXU_CC_ARRAY_MATCH[i]라 불린다. FXAGU 및 FPU에 대하여도 FXU에서와 동일한 매칭 기능이 실행된다. 획득 로직의 동작은 3가지 명령 이슈 순차 예를 참조하여 기술되었다. CPU(51)는 사이클 당 4개의 명령까지 이슈할 수 있다.
CC 획득 로직(1000)은 CC 선택 로직(2005)(각 워치포인트당 하나씩 16개의 층)을 포함하는데, 이 CC 선택 로직은 조건 코드에 기초하여 신호를 발생시키며, 여기서의 분기는 워치포인트 엘리먼트에 의해 제어되고, 분기가 어서트될 때 CC 데이타 신호(예컨대, CC_DATA[7:4])를 선택하고, 다음 사이클에서 평가할 데이타 신호를 래치시킨다. 도 32에는 조건 코드 선택 로직(2005)의 실시예 회로가 도시되어 있다. CC 선택 로직(2005)의 동작은 이하 예와 관련하여 기술되었다.
평가 로직(1001)은 도 25에 도시된 평가 준비 로직(EVAL_READY)(2100)과, 평가 참 로직(EVAL_TRUE)(2101)과, 워치포인트 출력 로직(WP 출력 로직)(2102)을 포함한다. 도 33은 CC 선택 로직(2005)으로부터 한 셋트의 선택 신호(예컨대, SEL_BR_XCC[i] 신호)와, AND 로직 게이트(2106)의 출력으로부터의 인에이블 신호(EVAL_ENABLE 신호)를 수신하는 EVAL_READY 로직(2100)과 관련하여 부가적인 구조를 자세히 도시하었다. EVAL_ENABLE은 WP_ACTIVE_VEX[i], WP_JMPL, FXAGU_JMPL, FXAGU_CHKPT에 기초하여 어서트된다. EVAL_READY 로직(2100)은 평가가 준비되었다는 것을 나타내는 i 번째 워치포인트에 대한 EVAL_READY[i]를 출력한다.
도 34는 CC_EVAL 로직(2105)을 포함하는 EVAL_TRUE 로직(2102)과 관련하여 부가적인 구조를 자세히 도시하였다. EVAL_TRUE 로직은 분기 명령이나 JMPL 명령이 적절하게 예측되었는지를 판정한다. CC_EVAL(2105)은 CC 선택 로직(2005)으로부터의 EVAL_CC[i] 신호와, WP_COND[i], WP_XCC[i], WP_ICC[i], WP_FCC[i] 신호를 수신하고, ISB로부터 수신하고, 워치포인트 엘리먼트(2013)에 기억하고, SPARC-V9 구조 사양에서 기술된 규칙을 이용하여 비교에 기초하여 2개의 신호를 평가한다. 이들 신호가 매칭된다면, 분기 참 신호(BR-TRUE[i] 신호)가 i 번째 워치포인트에 대해 발생된다. EVAL_TRUE 로직(2101)은 JMPL 매칭 로직(2201)(도 35 참조)에 의해 출력된 JMPL_MATCH 신호와 OSB로부터 수신되고 워치포인트 엘리먼트(2013)에 기억된 WP_JMPL[i] 신호를 비교한다. 만일 JMPL_MATCH가 WP_JMPL[i]과 매칭된다면, JMPL은 적절히 예측되었으며, JMPL_TRUE[i] 신호가 어서트된다. BR_TRUE[i] 및 JMPL_TRUE[i] 신호는 OR 로직연산 처리되어, EVAL_TRUE[i] 신호를 형성한다. 워치포인트는 단일 명령에 대해 형성되어, BR_TRUE[i] 및 JMPL_TRUE[i] 신호중 하나만이 어서트될 것이다.
WP출력 로직(2102)은 도 50에 도시되었다. PSU(300)로부터의 EVAL_READY[i], EVAL_TRUE[i]K, WP_VALID[i], KILL_VEC[i] 신호는 WP_ACTIVE_VEC[i] 및 WP_MISPRED_VEC[i] 신호를 출력하는 WP 출력 로직에 입력된다.
도 35는 타겟-RAM 및 JMPL 평가 로직과 관련하여 부가적인 구조를 자세히 나타내었다. JMPL 평가 로직은 rd=0 인 리턴 타입의 JMPL 명령을 평가했다. ANPC 출력 로직(2103)은 예측 오류(MISPRED)가 여기서 기술된 우선순위 결정과 기억된 WP_ANPC의 비교에 기초한 PSU PLSM에 의해 어서트되었는지에 기초한 BRB 인출 유닛에 전송하기 위해 RD_ANPC를 선택하고, FXU_DATA의 값은 정확하게 평가된 값이다.
3. 워치포인트 동작예
a. 워치포인트 유닛 동작 - 예 1: 표 7은 사이클 X, X+1, X+2 에서 실행된 예 1에 대한 명령 리스트이다. 사이클 X에서, 4개의 명령이 이슈되고, 그들 중 하나가(addcc)가 CC 를 수정시킨다. 그리고나서, 리네임된 CC의 물리적 태그 #7이 할당된다. 사이클 X+1에서 다시 4개의 명령이 이슈되고, 이들 모두는 CC를 수정시키지 않으며, addcc 가 실행되고 사이클 X+1에서 CC 데이타를 리턴시킨다. 사이클 X+2에서, addcc에 의해 수정된 CC 데이타는 FSR/CCRFRN내에 있다. 사이클 X+2에서, 4개의 명령이 이슈되고, 분기 전에 CC를 수정시키지 않으며, 분기 명령(br, xcc)이 이슈된다. 이 경우에 있어서, 사이클 X+2에서, CC_RENAMED=0 이 되는 이유는 현행 사이클에서 CC를 수정시키는 이슈된 명령이 없기 때문이다. 게다가, CC_TAG_C = CC_TAG_RENAMED_C = 7 이 되는 이유는 최종 CC 태그가 #7 이고, 사이클 X에 할당되기 때문이다. 마지막으로, CC_DV_C = 1 이 되는 이유는 최종 CC 데이타가 FSR/CCRFRN에 있기 때문이다.
분기가 이슈될 때, FSR/CCRFRN에 있는 분기에 따른 CC_DATA는 유효하다. 그러므로, CC_DV_C는 분기를 이슈하는 동일 사이클에서 어서트된다. 분기가 XCC에 관련된다고 가정하자. 그러면, SED_BR_XCC[i]가 어서트되고(도 32 참조), 신호는 CC_DATA[7:4]를 선택하고, 데이타는 다음 사이클에서 EVAL_CC[i]에 래치된다(신호 CC_DATA[7:4]는 XCC_DATA_C 이거나, ICC_DATA_C 또는 FCC_DATA_C 이다). EVAL_READY[i] 신호는 다음 사이클(도 33 참조) 에서 어서트된다. CC 평가가 준비된다.
b. 워치포인트 유닛 동작 - 예 2: 표 8은 사이클 X, X+1 에서 실행된 예 2에 대한 명령 리스트이다. 사이클 X에서, 4개의 명령이 이슈되고, 그들 중 하나가(addcc)가 CC 를 수정시킨다. 그리고나서, 리네임된 CC의 물리적 태그 #7이 할당된다. 사이클 X+1에서 다시 4개의 명령이 이슈되고, 이들 모두는 분기 전에 CC를 수정시키지 않으며, 이들 중 하나는 분기 명령이다. 이 경우에 있어서, 사이클 X+1에서, CC_RENAMED=0 이 되는 이유는 현행 사이클에서 CC를 수정시키는 이슈된 명령이 없기 때문이다. 또한, CC_TAG_C = CC_TAG_RENAMED_C = 7 이 되는 이유는 최종 CC 태그가 #7 이고, 이전 사이클에서 할당되기 때문이다. 그러나, CC_DV_C = 0 이 되는 이유는 addcc에 의해 수정된 최종 CC 데이타가 FSR/CCRFRN 내의 CC 레지스터내에 기록되기 때문이다.
분기가 이슈될 때(사이클 X+1에서), FSR/CCRFRN에 있는 분기에 따른 CC_DATA가 유효하지 않은(CC_DV_C=0) 이유는 사이클 X에서 이슈된 명령 addcc가 CC를 수정하고 그 결과 데이타가 FSR/CCRFRN내의 CC 레지스터에 기록되지 않기 때문이다. addcc가 사이클 X+1에서 FXU 실행 유닛에 의해 실행되었고, FXU는 사이클 X+1에서 데이타 전송 버스상에 CC 데이타를 리턴시킨다고 가정하자. 그러면, FXU_CC_CURR_MATCH(도 31 참조)가 사이클 X+1에서 어서트된다. SEL_FXU_XCC[i]가 어서트되고, 신호는 FXU_CC_DATA를 선택하고, 데이타는 사이클 X+2에서 EVAL_CC[i]에 래치된다. EVAL_READY[i] 신호는 사이클 X+2 에서(도 33 참조) 에서 어서트된다. CC 평가가 준비된다.
주의할 것은 CC_TAG_RENAMED_C가 아니라, CC_TAG_C가 FXU_CC_CURR_MATCH 비교 처리에 사용된다는 것이다. 만일 CC를 수정하는 어떤 명령이 분기 이슈될 때와 동시에 이슈된다면, CC_TAG_C는 최종 CC의 물리적 태그가 아니다. 그러나, CC_RENAMED는 어서트되고 신호는 FXU_CC_CURR_MATCH(도 32 참조)를 금지시킨다. 이것이 의미하는 것은 FXU_CC_CURR_MATCH가, 분기가 이슈될 때와 동시에 CC를 수정시키는 명령이 없을 때 사용될 수 있다. CC_TAG_C[3:0]를 이용하여, CC_TAG_C는 CC_TAG_RENAMED_C보다 더 빠른 신호이기 때문에 FXU_CC_TAG_CURR_VATCH는 경로 지연을 감소시킬 수 있다.
c. 워치포인트 유닛 동작 - 예 3: 표 9는 사이클 X, X+1에서 실행된 예 3에 대한 명령 리스트이다. 사이클 X에서, 4개의 명령이 이슈되고, 그들 중 하나가(addcc)가 CC 를 수정시킨다. 그리고나서, 리네임된 CC의 물리적 태그 #7이 할당된다. 사이클 X+1에서 다시 4개의 명령이 이슈되고, 이들 중 하나는(subcc)는 분기 전에 CC를 수정시키고, 이들 중 하나는 분기 명령이다. 리네임된 CC의 물리적 태그 #8이 이 명령 subcc에 할당된다. 이 경우에 있어서, 사이클 X+1에서, CC_RENAMED=1 이 되는 이유는 현행 사이클에서 CC를 수정시키는 이슈된 명령이 있기 때문이다. CC_TAG_C= 7이 되는 이유는 이전 사이클에 의해 최종 CC 태그가 #7이 되고, CC_TAG_RENAMED_C= 8이 되는 이유는 CC를 수정하는 명령이 현행 사이클에서 이슈되고, 리네임된 CC의 물리적 태그 #8이 할당되기 때문이다. 또한, CC_DV_C = 0 이 되는 이유는 subcc에 의해 수정된 최종 CC 데이타가 FSR/CCRFRN 내의 CC 레지스터내에 기록되기 때문이다.
분기가 이슈될 때(사이클 X+1에서), FSR/CCRFRN에 있는 분기에 따른 CC_DATA가 유효하지 않은(CC_DV_C=0) 이유는 사이클 X에서 이슈된 명령 addcc가 CC를 수정하고 그 결과 데이타가 FSR/CCRFRN내의 CC 레지스터에 기록되지 않기 때문이다. 게다가, subcc가 사이클 X+1에서 이슈되어서, CC_RENAMED가 어서트된다. subcc는 사이클 X+2에서 FXU 실행 유닛에 의해 실행되었고, FXU는 사이클 X+2에서 데이타 전송 버스상에 CC 데이타를 리턴시킨다고 가정하자. 그러면, FXU_CC_ARRAY_MATCH[i](도 31 참조)가 사이클 X+2에서 어서트된다. SEL_FXU_XCC[i](도 32 참조)가 어서트되고, 신호는 FXU_CC_DATA[7:4]를 선택하고, 데이타는 사이클 X+3에서 EVAL_CC[i]에 래치된다. EVAL_READY[i] 신호는 사이클 X+3 에서(도 33 참조) 에서 어서트된다. CC 평가가 준비된다. 이 예에서는 16개의 워치포인트 엘리먼트가 있으며, 각 엘리먼트는 어떤 사이클에서 각 분기 평가에 대해 평행한 CC를 획득할 수 있다.
예 1에 해당하는 FSR/CCRFRN으로부터의 명령 및 신호
사이클 명령 FSR/CCRFRN 신호
X movemuladdcc --#7div
X+1 movemovemove (#7 실행)move
X+2 mulmovemovebr, xcc CC_RENAMED=0CC_TAG_C=7CC_TAG_RENAMED_C=7CC_DV_C=1
예 2에 해당하는 FSR/CCRFRN으로부터의 명령 및 신호
사이클 명령 FSR/CCRFRN 신호
X movemuladdcc --#7div
X+1 mulmovemove (#7 실행)br, xcc CC_RENAMED=0CC_TAG_C=7CC_TAG_RENAMED_C=7CC_DV_C=0
예 3에 해당하는 FSR/CCRFRN으로부터의 명령 및 신호
사이클 명령 FSR/CCRFRN 신호
X movemuladdcc --#7div
X+1 mulmovesubcc --#8br, xcc CC_RENAMED=1CC_TAG_C=7CC_TAG_RENAMED_C=8CC_DV_C=0
4. 분기 명령의 평가
분기가 이슈되고 1 사이클이 지나면, WP_VALID[i]가 어서트된다. 만일 WP_VALID[i]= 1 이고, EVAL_READY[i]= 0 이며, KILL_VEC[i]=0 이면, WP_ACTIVE_VEC[i]가 어서트된다(도 29 참조). WP_ACTIVE[i]= 1이 의미하는 것은 체크포인트 i 를 사용하는 분기가 이미 이슈되었고 아직 분기하지 않았다는 것을 의미한다. 만일 값이 0으로 되면, 즉 WP_ACTIVE[i]= 0 이면, 분기가 완료되었다는 것을 의미한다. WP_ACTIVE_VEC는 ICRU(301)로 전송되고, 분기/JMPL 명령이 완료되었다는 것을 결정하는데 사용된다.
분기 평가가 준비되면, EVAL_READY[i]가 어서트되고, EVAL_CC[i]은 획득된 CC 값이 된다. 그리고나서, EVAL_CC[i]는 EVAL_TRUE 로직(2101)(도 34 참조)내의 CC_EVAL 로직으로 공급되고, 분기가 평가된다. 만일, 분기가 이슈될 때 형성된 예측이 정확하다면, BR_TRUE[i]가 어서트된다. 만이 예측이 정확하지 않다면, BR_TRUE[i]는 어서트되지 않는다. 분기를 평가할 때, WP_XCC[i], WP_ICC[i], WP_FCC[I] 신호는 또한 분기 타입을 알기 위해 사용된다. BR_TRUE[i]는 JMPL_TRUE[i](후에 설명된다)와 OR 로직연산 처리되고, EVAL_TRUE[i]가 발생된다. WP_VALID[i]= 1 이고, EVAL_READY[i]= 1 이며, EVAL_TRUE[i]= 0 이고, KILL_VEC[i]=0 이면, WP_MISRRED_VEC[i]가 어서트된다(도 29 참조). WP_MISPRED_VEC[i]= 1이 의미하는 것이 전에 형성된 분기 예측이 잘못되었다는 것을 의미한다. PSU는 이 신호와 실행 에러 신호를 수신하고, 최초의 예측 오류 또는 실행 오류 조건을 선택하여, BACKUP 신호를 이전 상태로 되돌려 보낸다.
PSU는 백업이 발생할 때 KILL_VEC[i]를 어서트하고, 벡업 포인트 후 취해진 체크포인트는 삭제될 필요가 있다. KILL_VEC[i]가 어서트되며, 이에 대응하는 워치포인트 엘리먼트는 삭제된다. 삭제(killed)는 WP_ACTIVE_VEC[i] 및 WP_MISPRED_VEC[i] 신호를 금지시키는 것을 의미한다. WP_ACTIVE_VEC 및 WP_MISPRED_VEC 신호는 다중으로 사용될 수 있어서, WQP_MISPRED_VEC[0-16] 신호는 동일한 벡터에서 엔코딩될 수 있다. 이것의 의미는 16개의 워치포인트 엘리먼트(이 실시예에서)까지 동시에 활성될 수 있으며, 동시에 예측 오류를 검출할 수 있다는 것을 의미한다.
분기를 이슈하고 예측할 때, FETCH는 분기-목적 어드레스 또는 분기의 다음 어드레스를 WR_ANPC를 통해 워치포인트로 전송한다. 만일 예측이 받아들여지면, WR_ANPC 는 분기의 다음 어드레스가 된다. 만일 예측이 받아들여지지 않으면, WR_ANPC 는 분기 목적 어드레스가 된다. 만일 예측이 잘못되었다고 판명되면, 워치포인트는 정확한 분기 경로로부터 명령을 재인출하기 위해 RDANPC 를 통해 어드레스를 FETCH로 다시 전송한다. WR_ANPC 값은 타겟-RAM(도 35 참조)에 기억된다. 이 타겟-RAM은 16개의 엔트리를 가지며, 각 엔트리는 각 체크포인트에 대응하며, 하나의 WR_ANPC 어드레스를 기억할 수 있다. 기록 인에이블 신호 및 RAM의 기록 어드레스는 MAKE_CHKPNT 및 NEXT_CHKPNT 이다. MAKE_CHKPNT는 체크포인트를 형성할 때 어서트된다. BACKUP 신호가 어서트되면, BACKUP_CHKPNT 는 CPU(51)가 백업하는 체크포인트를 지명한다. 타겟 RAM의 판독 데이타는 RD_ANPC 를 통해 FETCH로 전송된다.
5. 점프-링크(JMPL) 명령의 평가
JMPL 명령을 이슈하고 예측할 때, FETCH는 예측된 JMPL 목적 어드레스를 WR_ANPC 를 통해 워치포인트로 전송한다. 워치포인트는 어드레스를 보유하고, 이 어드레스와 실행 유닛에 의해 평가된 정확한 어드레스를 비교함으로써 정확도를 평가한다. 만일 예측이 잘못된 것으로 판명되면, 워치포인트는 정확한 어드레스로부터 명령을 재인출하기 위해 RD_ANPC 를 통해 FETCH로 평가된 정확한 어드레스를 전송한다. 예측된 JMPL 목적 어드레스는 분기의 경우와 동일하게 타겟 RAM에 기억된다.
단지 하나의 FXAGU 실행 유닛만이 JMPL 목적 어드레스를 평가한다고 가정한다. FXAGU가 JMPL 명령의 실행을 완료하면, FXAGU_JMPL이 어서트되고, FXAGU_CHKPNT는 JMPL의 체크포인트 번호를 지명하며, FXAGU_DATA는 평가된 정확한 JMPL 목적 어드레스를 보유하게 된다. 이어서, FXAGU_CHKPNT에 의해 인덱싱된 타겟 RAM에 있는 예측된 JMPL 어드레스가 판독되고, 이 판독된 데이타는 FXAGU_DATA와 비교된다. 비교 결과는 래치되고, 래치된 신호는 JMPL_MATCH(도 35 참조)가 된다. JMPL_MATCH가 어서트되는 것은 예측된 어드레스와 평가된 어드레스가 동일할 때이다. JMPL_MATCH는 WP_JMPL[i]과 AND 로직연산 처리되고 출력은 EVAL_TRUE[i](도 34 참조)가 된다. FXAGU_JMPL이 어서트되고 1 사이클 후, EVAL_READY[i]가 어서트된다(도 33 참조).
WP_ACTIVE_VEC[i]와 WP_MISPRED_VEC[i]는 JMPL에 대해 분기명령에서와 동일하게 발생된다. WP_MISPRED_VEC[i]가 어서트되고 1 사이클 후, PSU(300)는 워치포인트 유닛(304)에 2 개의 BACKUP 신호, BACKUP_CHKPNT 및 MISPRED(그러나 백업이 JMPL 예측 오류될 때만)를 전송한다. 만일 MISPRED가 어서트되면, 워치포인트는 정확한 JMPL 어드레스를 갖는 2-타임이 래치된 FXAGU_DATA를 FETCH로 전송한다(도 35 참조). 타겟 RAM은 다음 2가지 목적으로 사용된다. 하나는 분기의 교번 어드레스를 기억하는 것이고, 다른 하나는 예측된 JMPL 목적 어드레스를 기억하는 것이다. 이 2가지 용례는 배타적이므로, 이러한 구현에는 단지 하나의 타겟 RAM으로 충분하다.
본 발명의 구성 및 방법이 제공하는 것은 (1) 복수의 예측된 분기 또는 점프-링크 명령을 동시에 워치하는 것을 개시하는 구성 및 방법. (2) 복수의 조건 코드 데이타 또는 실행 유닛으로부터 데이타 전송 버스를 워치함으로써 대기하는 예측된 분기 또는 점프-링크 명령에 대한 평가된 점프-링크 어드레스를 획득하는 구성 및 방법. (3) 분기 또는 점프-링크 명령을 동시에 또는 한 경우 또는 상기 (2)의 경우와 조합하여 복수의 예측 오류 신호를 발생시킬 수 있는 구성 및 방법. (4) 상기 2가지 경우와 또는 한 경우 또는 상기 (2)의 경우와 조합하여 공듀된 하나의 기억 장소에서 교번 분기 어드레스 또는 예측된 점프-링크 어드레스를 기억하는 구성 및 방법. (5) 한 경우 또는 상기 (4)의 경우와 조합하여, 예측 오류가 발생할 때 명령 인출을 위해 정확한 분기 어드레스 또는 점프-링크 어드레스를 전송하는 구성 및 방법. (6) 중요한 경로의 속도를 향상시키기 위한 구성 및 방법에 관한 것인데, 이것은 2개의 부분으로 분할된 CC 데이타를 획득하기 위해 태그 비교하는 것이고, 2개의 부분으로 분할된 것중 하나는 데이타 전송 버스 태그에 비교된 이전 사이클에서의 CC 태그이며, 다른 하나는 데이타 전송 버스 태그에 비교된 현행 이슈 윈도우에서의 현행 리네임된 CC 태그이다. 후자의 경우에 있어서(한 경우 또는 상기 (2)의 경우와 조합하여), 리네임된 CC 태그의 래치된 신호는 비교 실행에 사용될 수 있으며, 타이밍에 좌우되지 않는다. 도 36은 복수의 완료되지 않은 분기 평가를 동시에 하기 위한 본 발명의 워치포인트 방법의 실시예를 나타낸 플로우챠트이다.
B. 예외 검출
예외는 이슈 또는 실행시에 발생할 수 있다. 그러므로, 예외는 이슈 트랩과 실행 트랩을 포함한다. 이슈 트랩 및 실행 트랩의 검출이 이하에 기술되어 있다.
1. 이슈 트랩의 검출
ISU(200)는 명령의 이슈 처리과정에 영향을 미치는 이슈 트랩을 검출한다. 이러한 이슈 트랩은 동기성 또는 비동기성 이슈 트랩이 될 수 있다. 이 기술분야의 당업자가 알수 있는 바와 같이, 동기성 및 비동기성인 이슈 트랩의 타입은 여러 기준에 따라 선택될 수 있으며, 설계자가 선택가능하다.
예컨대, 비동기성 이슈 트랩은 통상적으로 종종 발생하는 타입의 트랩이며, 상기 기술된 방식에서의 CPU(51)의 동기성은 프로세서의 속도를 감소시킬 것이다. 그러므로, 이러한 타입의 이슈 트랩은 동기성이 아니며, 예측 실행을 하게 된다. 이러한 이슈 트랩은 SPARC-V9 구조 사양에 기술된 fill_normal, filll_other, spill_normal, spill_other, clean_window, trap_instruction(트랩 즉시(TA %g0+simm7) 명령), unimplemented_ldd, unimplemented)std, illegal_instruction과 같은 이슈 트랩을 포함할 수 있다.
비동기성 이슈 트랩은 통상적으로 종종 발생하지는 않는 타입의 트랩이며, CPU(51)의 동기성은 프로세서 속도에 큰 영향을 미치지 않을 것이다. 비동기성 이슈 트랩은 SPARC-9 구조 사양에 기술된 instruction_access_error, instruction_access_exception, privileged_opcode, privileged_action, fp_exception_other, fp_disabled, emulation_trap, trap_instruction(조건부 트랩(Tcc) 명령)과 같은 이슈 트랩을 포함할 수 있다.
어떤 타입의 이슈 트랩이 이슈 단계에서 발생하는지를 검출하기 위해, ISU(200)는 제어 레지스터 파일(800)로부터 제어 레지스터(CNTRL_REG) 필드를 수신한다. 도 17에 도시된 바와 같이, 제어 레지스터 파일(800)은 SPARC-V9 특수 레지스터를 포함하는데, 이러한 레지스터로서는 클린 윈도우(CLENWIN) 레지스터(801)와, 복구가능 윈도우(CANRESTORE) 레지스터(802)와, 기억가능 윈도우(CANSAVE) 레지스터(803)와, 윈도우 상태(WSTATE) 레지스터(804)와, 프로세서 상태(PSTATE) 레지스터(805)가 있다. 또한, 제어 레지스터 파일은 TICK 레지스터(806)와 부동소수점 레지스터 상태(FPRS) 레지스터(807)를 포함하는 SPARC-V9 비특수 레지스터를 갖는다. CNTRL_REG 필드는 SPARC_V9 구조 사양에 기술된 CLEANWIN, CANRESTORE, CANSAVE, WSTATE_NORMAL, WSTATE_OTHER, PSTATE_PEF, PSTATE_PRIV, TICK_NPT, FPRS_FEF필드를 포함하며, CLEANWIN, CANRESTORE, CANSAVE, WSTATE, TICK, FPRS 레지스터(801-807)에 의해 제공된다.
도 7을 다시 참조하여, ISU(200)는 FR_INSTs_BRPs 명령을 디코딩하고 SPARC-V9 구조 사양에 따라 CNTRL_REG 필드를 이용하여, 어떤 SPARC-V9 이슈 트랩이 발생하는 지를 판정할 수 있다. 가장 먼저 이슈 윈도우 슬롯에서의 명령에 의해 야기된 이슈 트랩만이 처리될 것이다. 그러므로, 하나 이상의 이슈 트랩이 검출될 때, 최초의 슬롯에 있는 이슈 트랩 발생 명령의 슬롯에 앞서 이슈 윈도우 슬롯에서의 명령만이 ISU(200)에 의해 이슈될 수 있다. 이슈 트랩 발생 명령의 슬롯 다음의 이슈 트랩 발생 명령 및 FR_INST_BRP_0-3 명령은 이슈되지 않을 것이며, 이슈 트랩이 이슈될 수 있는 TA 또는 Tcc 명령은 제외한다.
이슈 트랩이 발생하면, ISU(200)는 트랩이 발생했다는 것을 지시하고 상기 이슈 트랩이 발생했다는 것을 식별하는 ISSUE_TRAP 신호를 PSU(300)에 출력한다. 비동기성 이슈 트랩이 ISU(200)에 의해 검출되면, ISSUE_TRAP 신호는 이슈 트랩이 검출되는 즉시 ISU(200)에 의해 출력될 것이다. 그러나, 동기성 이슈 트랩이 ISU(200)에 의해 검출되면, ISSUE_TRAP 신호는 이슈 트랩 발생 명령이 슬롯 0에 있을 때까지 ISU(200)에 의해 출력되지 않을 것이며, CPU(51)는 이전 방식과 같이 동기화된다. 비동기성 이슈 트랩을 발생시키는 Tcc 명령의 경우에 있어서, Tcc 명령은 CPU(51)가 동기화될 때만 이슈될 수 있다.
2. 실행 트랩의 검출(Detecting Execution Traps)
도 8을 참조하면, 이슈된 명령을 실행하는 동안 FPU(600), FXU(601), 및 LSU(603)에 의해 검출되는 에러가 발생할 수도 있다. 전술한 바와 같이, FPU(600), FXU(601), 및 LSU(603)는 명령을 실행하는 동안 에러가 발생하였는지의 여부를 표시하는 ERR_STAT 신호를 ISB(61)의 PSU(200)에 출력한다. LSU 및 FXU 로부터의 실행에러는 PSU(300)에 의해 용이하게 처리될 수 있다. 그러나, 부동소수점 예외는 후술되는 바와 같이 특별한 처리를 필요로한다.
도 8 을 참조하면, 상기한 바와 같이, FPU(600)는 자원 가용성(resource availability)에 기초하여 예측된 및/또는 PC 순서와 다르게 부동소수점 명령을 실행한다. 부동소수점 명령을 실행하는 동안 FPU(600)는 실행 트랩(즉, 에러)을 검출할 수 있다. 그러나 FPU(600)는 명령을 예측된 및/또는 PC 순서와 다른 순서로 실행할 수 있기 때문에, 명령 트랩도 예측된 및/또는 PC 순서와 다르게 발생될 수 있다. 만일 실행 트랩이 실질적인 PC 순서로 발생되는 경우 부동소수점 실행 트랩을 적절하게 처리하고 검출하기 위해, PSU(300)은 도 37에 나타낸 것과 같은 부동소수점 예외(FPEXCEP) 링 또는 유닛(306)을 포함한다.
도 38에 나타낸 바와 같이, FPEXCEP 링(306)은 64개의 기억 엘리먼트(storage element) 또는 엔트리를 가지는 데이타 기억 구조(900)를 포함한다. 각각의 기억 엔트리는 64개의 명령 일련 번호중 하나에 대응하며, 명령 식별 필드(FP)와, 부동소수점 타입(FTT) 필드 및 현행 부동소수점 예외 타입(CLEX) 필드를 갖는다. 도 37에 나타낸 바와 같이, 데이타 기억 구조는 FF FP 필드를 기억하기 위한 64개의 어드레셔블 기억 엘리먼트를 갖는 FP 필드 링과, FTT 필드를 기억하기 위한 64개의 어드레셔블 기억 엘리먼트를 갖는 FTT 필드 링과, CEXC 필드를 기억하기 위한 64개의 어드레셔블 기억 엘리먼트를 갖는 CEXC 필드 링을 형성한다. FP, FTT, 및 CEXC 필드 링의 어드레셔블 기억 엘리먼트 각각은 명령 일련 번호에 대응한다.
FP 비트는, 대응하는 명령이 SPARC-V9 부동소수점 타입 명령인지의 여부를 표시하기 위해 1 로 세트되거나 또는 0으로 클리어된다. FP 비트에 의해 부동소수점 명령으로 식별되는 FPEXCEP 링(306)의 명령에 대해, FTT 필드는 발생된 SPARC-V9 부동소수점 트랩의 타입을 식별한다. SPARC-V9 아키텍쳐 매뉴얼에 나타낸 바와 같이, FPEXCEP 링은 트랩, IEEE_754 예외, unimplemented_FPop, unfinished_FPop, sequence_error, hardware error, 및 invalid_fp_register 에러를 포함하지 않는다. 당업자라면 이해하겠지만 CPU(51)는 이러한 타입의 트랩중 일부를 특정화, 검출 및 처리하지 않고 구현될 수도 있으며, 이러한 경우 FPEXCEP 링(306)의 FTT 필드는 최소의 기억 공간을 요구하도록 더 작게 형성될 수 있다. 더욱이, FTT 필드가 발생된 IEEE_754 예외를 나타내는 부동소수점 명령에 대해, CEXC 필드는 IEEE Std 754-1985 및 SPARC-V9 아키텍쳐 매뉴얼에 따라 발생한 하나 이상의 IEEE_754 예외 타입을 식별한다. 따라서, CEXC 필드는, 오퍼랜드가 부적절한지를 나타내는 비트(nvc)와, 오버플로우가 발생하였는지를 나타내는 비트(ofc)와, 언더플로우가 발생하였는지를 나타내는 비트(ufc)와, 제로에 의한 나눗셈이 발생하는지를 나타내는 비트(dzc)와, 부정확한 결과가 발생하는지를 나타내는 비트(nxc)를 포함한다. 부동소수점 트랩 타입의 다른 타입을 발행시키지 않거나 또는 부동소수점 트랩을 발생시키지 않는 부동소수점 명령에 대해, CEXC 필드는 IEEE_754 예외 타입이 발생하지 않았음을 나타낸다.
상술된 도 11의 A-링(312)과 M-링(324)과 같이, FPEXCEP 링(316)은 원형, 링 또는 둘러싼 형태의 데이타 구조로서 구현되고, 이 구조에서 포인터는 modulo-FPEXCEP-ring 레지스터 길이 산술(여기서는 모듈로-64 산술)을 이용하여 도 37 에 도시된 바와 같이 데이타 구조를 따라 이동된다. 당업자는, 원형 데이타 구조가 바람직하더라도 본 발명에 필수적인 구조는 아니며 본 발명의 특징을 구현하는 다른 데이타 구조가 이용될 수도 있음을 알 수 있을 것이다.
도 38을 다시 참조하면, ISU(200)는 각 이슈 스테이지 동안 인출된 FR_INST_BRP_0-3 명령중 어느 것이 이슈되었는지를 표시하는, 상기 설명된 ISSUE_ VALID 신호를 출력한다. 동시에, ISU(200)는 이슈된 명령중 어느 것이 부동소수점 명령인지를 식별하는 FP_ISSUE 신호를 출력한다. 이들 신호는 FP 기록(WR) 로직(901)과 FTT 기록(WR) 로직(902)에 의해 수신된다. 또한, FP WR 로직(901) 및 FTT WR 로직(902)은 ICRU(301)로부터 상술한 NISN 포인터를 수신한다.
FP WR 로직(901) 및 FTT WR 로직(902)은 ISU(200)에 의해 막 이슈된 명령에 대해 FP 비트 및 FTT 필드에 대응하는 FPEXCEP 링의 위치를 어드레스하기 위해 NISN 포인터와 ISSUED_VALID 신호를 사용한다. FP_ISSUE에 의해 부동소수점 명령으로서 식별되는 각각의 명령에 대해, FP WR 로직(901)은 그 명령이 부동소수점 명령임을 표시하기 위해 대응하는 FP 비트를 세트한다. 그리고, 부동소수점 명령이 아닌것으로서 FP_ISSUE에 의해 식별되는, 발행된 명령에 대해서는, FP WR 로직(901)은 대응하는 FP 비트를 클리어하여 이 명령이 부동소수점 명령이 아님을 표시한다.
도 8 을 참조하면, 상기한 바와 같이, FPU(600), FXU(601), FXAGU (602) 및 LSU(603)는 이슈된 명령을 실행시키고, 실행이 완료된 때 ERR_STAT 신호를 출력한다. 도 39에 나타낸 바와 같이, ERR_STAT 신호는, 일련 번호, 체크포인트 번호 및, FPU(600)에 의해 실행되고 완료된 부동소수점 명령에 대한 에러 상태 필드를 포함하는 FP_ERR_STAT 신호를 포함한다. 에러 상태 필드는 실행된 부동소수점 명령에서 기인하는 부동소수점 트랩 타입 또는 그 명령에서 기인하는 것이 아니라면 부동소수점 트랩이 전혀 없음을 나타내고, 부동소수점 명령에 의해 야기된 현행 부동소수점 예외나 야기된 것이 전혀 없다면 현행 부동소수점 예외가 전혀 없음을 나타내게 된다. 즉, 에러 상태 필드는 부동소수점 명령에 대해 FPEXCEP 링(306)에 기록될 FFT 및 CEXC 필드를 나타내는 데이타를 포함한다.
더욱이 도 39를 참조하면, FSR/CCRFRN(606)은 SPARC-V9 부동소수점 상태 레지스터(FSR)를 포함한다. FSR은, 하나 이상의 예외가 마스크될 수 있도록 상술된 각각의 IEEE_754 예외에 대한 마스킹 비트를 포함하는 트랩 인에이블 마스크 필드(TEM)를 포함한다. TEM 필드는 FPU(602)에 제공된다. IEEE_754 예외가 발생하면, FP_ERR_STAT 신호는, 예외가 마스크되어야하는 타입임을 TEM 필드가 나타낸다면 예외가 발생되었다는 것을 PLSM(307)에 표시하지 않는다. 그러나 FP_ERR_STAT 신호는 발생된 IEEE_754 예외(즉 FTT) 및 그 IEEE_754 예외의 타입(즉 CEXC)을 FPEXCEP 유닛에 표시한다.
각각의 완료된 부동소수점 명령에 대해, FTT WR 로직(902)은 FP_ERR_STAT 신호에 제공된 일련 번호를 사용하여, FPEXCEP 링(306)의 대응하는 FTT 필드에 FP_ERR_STAT 신호에 의해 식별된 FTT 데이타를 기록한다. 더욱이, CEXC 기록(WR) 로직(903)은 이러한 일련의 번호를 사용하여 FPEXCEP 링(306)의 대응하는 CEXC 필드에 FP_ERR_STAT 신호에 의해 식별된 CEXC 데이타를 기록한다.
판독 및 발생된 예외 계산(RD 및 AEXC 계산) 로직(904)은 PSU(300)의 ICRU(301)로부터 RRP 포인터와 COMMIT_VALID 신호를 수신한다. RRP 포인터는 이전 머신 사이클에 리타이어된 최종 명령을 가리키고, COMMIT_ VALID 신호는 RRP 포인터가 이전 머신 사이클에서 얼마나 많이 진행하는지를 나타낸다.
각각의 머신 사이클 동안, RD 및 AEXC 계산 로직(904)은 RRP 포인터와 COMMIT_VALID 신호를 이용하여 최종 머신 사이클에서 리타이어된 각 명령에 대해, FPEXCEP 링(306)의 FP 비트와 FTT 및 CEXC 필드를 판독한다. 그런 다음, 부동소수점 명령(FP 비트에 의해 식별되는 것과 같은)인 리타이어된 명령에 대해서, RD 및 AEXC 계산 로직(904)은 그 CEXC 필드를 논리적으로 OR하여 AEXC 필드를 계산한다. 상기 간단하게 설명된 바와 같이, 비마스크(non-masked) IEEE_754 예외를 발생시키는 부동소수점 명령은 리타이어되지 않으며, PLSM(307)에 의해 실행 트랩이 시퀀스되기 때문에 AEXC 필드는, 최종 머신 사이클에서 리타이어된 모든 부동소수점 명령에 의해 발생되는 마스크된 IEEE_754 예외를 식별한다.
더욱이, RD 및 AEXC 계산 로직은 현행 머신 사이클에서 리타이어된 명령중 어느 것이 가장 최근에 리타이어된 부동소수점 명령인지를 FP 비트를 판독하여 판정한다. 하나 이상의 부동소수점 명령이 현행의 머신 사이클에서 리타이어된다면 Rd 및 AEXC 계산 로직(904)은 계산된 AEXC 필드를 내포하는 신호 및, 이 계산된 AEXC 필드가 도 39의 FSR의 fsr.aexc 필드에 기록되어야함을 나타내는 신호를 포함하는 WR_ CEXC_AEXC_FTT 신호를 출력한다. 더욱이, WR_CEXC_AEXC_FTT 신호는 가장 최근에 리타이어된 부동소수점 명령에 대한 FTT 및 CEXC 데이타를 내포하는 신호 및, 이들 데이타가 도 39의 FSR의 fsr.ftt 및 fsr.cexc 필드에 기록되어야함을 나타내는 신호를 또한 포함한다. 이러한 환경에서 FTT 데이타는 몇가지 이유로 부동소수점 트랩 타입을 전혀 표시하지 않는다. 첫번째, 실행 예외를 발생시키지 않는 부동소수점 명령은 리타이어될 수 있고, 부동소수점 트랩 타입을 전혀 표시하지 않는, FPEXCEP 링의 대응하는 FTT 필드를 가진다. 두번째, IEEE_754 예외 트랩을 표시하는 FTT 필드를 가지지만 FSR(607)의 TEM 필드에 의해 마스크되는 하나 이상의 대응하는 IEEE_754 예외를 발생시키는 부동소수점 명령은, 실행 예외중 어느 것이 발생하였는지가 PLSM(307)에 통보되지 않기 때문에 리타이어될 수 있다.
상기한 바와 같이 PLSM(307)은 FP_ERR_STAT 신호도 수신한다. 이들 신호가 실행 트랩이 발생하였음을 표시하면, 실행 트랩 시퀀스 처리는, 트랩을 발생시키는 명령에 이전의 명령에서 CPU(51)가 동기화되도록(즉, RRP=CSN=ISN)하는 PLSM(307)에 의해 개시된다.
PLSM(307)은 CPU(51)가 동기화되면, FPEXCEP_CHK 신호를 발생시킨다. FPEXCEP_CHK 신호에 응답하여, RD 및 AEXC 계산 로직(902)은 RRP + 1에 있는 명령을 위해 FPEXCEP 링(306)의 FP, FTT 및 CEXC 필드를 판독하도록 RRP 포인터를 사용한다.
FTT 판독 필드가 부동소수점 트랩을 표시하지 않는다면, RRP+1에서의 명령은 부동소수점 예외를 발생시키지 않는다. 몇가지 다른 종류의 예외가 이 명령에서 발생할 수 있기 때문에 RD 및 AEXC 로직(904)은 WR_CEXC_AEXC_FTT 신호를 출력하고 이들 신호들은 fsr.ftt, fsr.cexc 및 fsr.aexc 필드에 기록되어야할 것이 아무것도 없음을 나타내는 신호를 포함한다.
그러나 FTT 판독 필드가 부동소수점 트랩이 발생하였다는 것을 표시한다면, RRP+1에서의 명령은 부동소수점 예외를 초래한다. 그런 다음 RD 및 AEXC 로직(904)은 WR_CEXC_AEXC_FTT 신호를 출력하고 따라서 이 신호들은 RRP+1 에서의 명령에 대해 EPEXCEP 링(306)으로부터 판독된 FTT 필드를 포함하는 신호와, 도 39 의 FSR 의 fsr.ftt 에 판독되어야함을 나타내는 신호를 포함한다. 따라서 부동소수점 명령에 의해 발생된 트랩 타입은 FSR 의 fsr.ftt 필드에 포함되고 따라서 부동소수점 실행 트랩 처리 루틴은 트랩을 적절히 처리하도록 FSR (STFSR) 기억 명령에 의해 FSR을 액세스할 수 있다.
더욱이, FTT 판독 필드가 IEEE_754 예외가 발생하였음을 나타낸다면 RD 및 AEXC 로직(904)에 의해 출력된 WR_CEXC_FTT 신호는 RRP+1에서의 명령을 위해 FPEXCEP 링(306)으로부터 판독된 CEXC 필드를 포함하는 신호와, 이 필드가 도 39의 FSR(607)의 fsr.cexc 필드에 기록되어야함을 나타내는 신호를 포함한다. 그 결과 부동소수점 명령에 의해 발생된 현행 예외 타입은 FSR 의 fsr.cexc 필드에 포함되고 따라서 트랩 처리 루틴은 FSR(STFSR) 기억 명령을 이용하여 FSR(607)의 필드를 액세스할 수 있고, 트랩을 적절히 처리할 수 있다.
도 37을 참조하면, 이러한 경우에 부동소수점 명령은 예측된 및/또는 실제 PC 순서와 다르게 FPU(600)에 의해 실행되기 때문에, RRP+1에서의 명령은 PLSM(307)이 실행 트랩 시퀀스 처리를 개시하게 만드는, 결함 명령이 아닐 수 있다. 다시 말해, 부동소수점 명령은 먼저 이슈되었지만 나중에 실행되는 또다른 부동소수점 명령(즉, 초기 일련 번호를 가짐)에 의해 발생된 실행 트랩보다 먼저 검출되는 실행 트랩을 발생시킬 수 있다. 그러나, 나중에 이슈되었지만 먼저 실행되는 명령에 의해, PLSM(307)에 의한 실행 트랩 시퀀스 처리(execution trap sequencing)가 개시되며, 머신 동기화 전의 시퀀스 처리동안, 먼저 실행되는 명령이 예외를 발생시키다면, PLSM(307)은 예외를 처리하도록 전환한다. 따라서, 실행 트랩의 시퀀스 처리에 의해, 나중에 검출된 실행 트랩이 실제 PC 순서로 발생되는 경우 먼저 검출되는 실행 트랩 대신에 실제로 처리된다.
FPEXCEP 유닛이 SPARC-V9 아키텍쳐의 컨텐트으로 설명되어 있다고 하다라도 당업자라면 부동소수점 명령의 추측적인 실행을 포함하는 어떠한 아키텍쳐에 대해서도 구현될 수 있음을 이해할 것이다.
C. 이전 상태로 프로세서를 백트래킹하는 것에 의한 복구
워치포인트(304)가 잘못 예측된 명령을 검출할때 또는 DFB(62)에서 실행 예외가 발생하여 PSU(300)에서 실행 예외(etrap)를 트리거할때 CPU의 백트래킹(backtrack)이 개시된다. 프로세서의 백트래킹(Backtracing)은 프로세서의 백업 및/또는 프로세서의 백스텝을 포함할 수 있으며 이하 상세히 설명된다. 하나 이상의 예측 오류 및 실행 예외가 머신 사이클 동안 발생할 수 있다. 예시적인 CPU(51)에서, 모든 추측적으로 실행된 제어 전송 명령(예컨대 예측된 분기 명령)이 체크포인트된다. 이러한 잘못 예측된 명령은 항상 체크포인트 경계에 있다. 체크포인트된 예측 오류 명령으로부터의 복구는 이슈되는 시점에서 잘못 예측된 명령에 대응하는 체크포인트에 기억된 머신 상태를 복구함으로써 달성될 수 있다. 실행 예외는 예측 오류와는 달리, 모든 명령이 체크되지는 않기 때문에 체크포인트된 명령에 대응하지 않을 수 있다. 일반적으로, 실행 예외를 발생시키는 명령은 임의의 명령 경계(instruction boundary)에 있을 수 있다. 체크포인트 경계는 추측적으로 이슈된 제어 전송명령에 대한 명령 경계에만 대응한다. 추측적으로 이슈된 모든 명령이 체크포인트 형성을 요구하지는 않지만, PC 불연속성을 생성하는 추측 제어 전송 명령은 체크포인트 형성을 요구한다(제어 전송 명령이 머신 동기화 명령으로서 선택되고 이후 설명되는 바와 같이 선택적으로 체크포인트되지 않는 경우). 따라서 CPU(51)가 백트래킹되는 방법은, 복귀를 개시한 조건 및 예측 오류 또는 예외가 체크포인트된 명령에 대응하는지에 좌우된다.
본 명세서에서 사용되는 백업(backup)은 체크포인트에서 이전에 기억된 머신 상태를 복구한 다음, CPU(51) 명령의 이슈 및 실행을 재개시하도록 적절한 동작을 취함으로써 체크포인트 경계에서 머신의 상태를 복구하는 구조와 방법에 관한 것이다. 본 명세서에서 사용되는 바와 같이, 백업은 체크포인트된 명령 이후에 있는 명령을 순차적인 순서로 다시 이슈하고 재실행하는 것과 관련이 있을 수도 또는 없을 수도 있다. 본 명세서에서 사용되는 용어 백스텝(backstep)은 임의의 명령 경계에서 가능하다면 백업과의 합동으로, 머신 상태를 복구한 다음, 적절한 동작을 취함으로써 CPU(51) 명령의 이슈 및 실행을 재개시하는 구조와 방법에 관한 것이다.
실행 트랩(etraps)이 걸리면, 머신은 결함 명령으로 백트래킹하여 머신의 정규 상태를 유지한다. 체크포인트 경계에 놓여지는 예측 오류와는 달리, 실행 트랩은 결함 명령에 도달하기 위해 백스텝, 백업, 또는 이 2개의 조합을 요구할 수도 있다. 백스텝이나 백업 동작의 순서를 지시하는데 있어 동작의 수행에 필요한 이외에는 어떠한 강제도 없다. 머신의 백업과 백스텝을 조합하여 사용하면, 예측 오류 및 실행 예외로부터 효율적으로 복귀하는 방법이 제공되며, 이렇게 하는 것은 예외를 발생시키는 명령의 재실행 또는, 체크포인트된 명령과 결함 명령 사이의 명령의 재실행을 강제하지 않기 때문에, 어떤 환경에서는 유리할 수 있다.
체크포인트는 프로세서 흐름에 변화(예컨대 Bcc,FBcc,jumpl 및 등의 명령)가 있을 때에는 반드시 할당된다. 예시적인 CPU(51)는 할당에 이용가능한 16 개까지의 체크포인트를 가지고 있다. 백업은 머신 상태를 체크포인트 경계로 복구하기 위해 수행된다. 백스텝은 머신 상태를 임의의 명령 경계로 복구하기 위해 수행된다. 예시적인 머신은 이용가능한 하드웨어에 의해 사이클당 4개의 명령까지의 백스텝으로 제한된다. 백업은 머신의 상태를 복구하기 위한, 미세하지 않지만 고속의 백트랙킹 메카니즘을 제공하고, 백스텝은 미세한 명령 경계에서의 머신의 상태를 복구하기 위한 메카니즘을 제공한다. 머신은 백업 또는 백스텝중 어떠한 조합을 통해서도 초기 상태로 백트래킹할 수 있다.
본 발명의 백스텝 절차를 본 발명의 백업 절차와 함께 사용하여 정규 상태의 복구를 실현하기 위하여, 2개의 법칙이 지켜져야 한다. 첫번째, 아키텍쳐 제어 레지스터를 수정할 수 있는 명령이 명령 스트림에 마주칠 때 CPU(51)는 명령의 실행에 앞서 동기화되어야 하거나 또는 머신은 그 명령을 체크포인트해야만한다. 이 첫번째 법칙이 지켜지면, 백스텝핑은 어떠한 아키텍쳐 제어 레지스터의 수정 및 갱신도 요구하지 않는다. 두번째로, 프로그램 카운터의 불연속성을 발생시킬 수 있는 명령 모두는 체크포인트되어야한다. 두번째 규칙이 지켜지면, 백스텝 방법은 백스텝의 수만큼 PC를 디크리먼트시키는 단계와, 초기의 대응하는 프로그램 카운터에서 할당된 머신 자원을 리클레임하고 복구하는 단계를 포함한다.
백트랙킹 유닛(BKTR)(305)은 PSU(300)내에 기능적으로 위치하고, 정확한 CPU(51)의 기능과 복구를 위해 요구되는 바와 같은 머신의 백업과 백스텝의 구현을 책임진다. 도 40에 나타낸 바와 같이 BKTR(305)은 머신의 백업, 하나 이상의 머신의 백스텝 또는, 백업 및 백스텝의 조합이 예측 오류 및 예외로부터 CPU(51)를 복구하는데 적절한지를 판정하는 기능을 하는 백트랙킹 제어 유닛(BTCN)(401)를 포함하고 있다. BTCN(401)은 DFB(62) 내의 각 실행 유닛 및 워치포인트(304)로부터 SN, 에러, 및 상태 정보를 수신한다. 백업 유닛(BKUP)(402)은 머신의 백업을 개시하고 시퀀스하는 기능을 하고, 백스텝 유닛(BKST)(403)은 머신 백스텝을 개시하고 시퀀스하는 기능을 한다. CPU(51)는 명령의 이슈를 중단하고, 예외 또는 예측 오류를 발생시키는 명령에 적절한 백업 및 백스텝을 이용하여 백트랙킹해야 한다. 백스텝을 이용하여 CPU(51)를 백업하고, 머신을 백스텝하는 구조와 방법이 이하 설명된다.
1. 체크포인트 경계로의 프로세서 백업
머신 백업은, (1)PSU(300)내의 PLSM(307)이 RED 모드로의 진입을 시도할 때, 및 (2)워치포인트(304)가 잘못 예측된 명령을 검출할 때 개시된다. 머신의 백업은 (3)결함 명령(실행 예외 또는 실행 트랩)이 DFB(62)로부터 검출될때 개시될 수도 있고 개시되지 않을수도 있다. 백업 절차는, 백업을 개시하는 이유에 따라 백업을 위해 체크포인트된 명령의 선택을 포함하는 면에서 다르다. 백업은 실행 예외를 발생시키는 결함 명령이 체크포인트 경계와 매칭하지 않는다면 백스텝을 수반할 수 있다.
각각의 머신 사이클에서, 백업 유닛(BKUP)(402)은 데이타 전송 버스 상에서 DFB(62)로부터의 명령 실행 상태 정보(ERR_ STAT)와 워치포인트(304)로부터의 잘못 예측된 명령 정보(WP_MISPRED)를 수신한다. 이들 신호는 명령 일련 번호(SN)와, 백업이 필요하다면 머신이 백업되어야하는 명령 체크포인트와, 에러가 발생되었는지의 표시와, 에러 타입 표시(지연, 데이타 브레이크포인트, 부동소수점 동작 등)를 식별한다. FXAGU가 곱셈이나 나눗셈 동작을 처리하지 않는다면 이 실행 유닛으로부터의 ERR_STAT 신호는 에러 정보를 제공하지 않을 수 있지만, FXAGU는 SN 및 체크포인트 번호 정보를 ERR_ STAT 신호에 제공한다. 체크포인트가 이슈되는 모든 명령을 위해 형성되지는 않더라도, 각각의 명령은 이슈되는 시점에서 백업 체크포인트를 할당받는다. 이 체크포인트는 명령의 이슈에 앞서 PSU(300)내의 ICRU (301)에 의해 할당되고, 이슈시 ISU(200)에 의해 명령과 관련되며, 명령 동작 코드(op-code) 및 명령 일련 번호를 이용하여 DFB(300)로 ISU(200)에 의해 전송되고, 실행 유닛의 큐(queue)중 하나에 기억된다(예를들어 도 22에서, 백업 체크포인트는 체크포인트 필드(614)에 기억된다.) 그러므로, 명령이 실행을 완료하면 일련 번호 및 체크포인트 번호는 실행 유닛(즉, FXU, FPU, FXAGU, 또는 LSU)내에서 즉시 이용가능하다.
2. 잘못 예측된 명령, RED 모드 및 실행 트랩에 의해 개시된 백업
백업 사이클은 잘못 예측된 명령이 워치포인트(304)에 의해 검출될 때마다 또는 RED 모드로 진입할 때 BKUP(402)에 의해 개시되며, 실행 예외로부터 복구하기 위해 개시될 수도 있다. 실행 예외로부터의 복구는 백스텝만을 요구할 수도 있고, 백업만을 요구할 수도 있으며, 백업과 하나 이상의 백스텝의 조합을 요구할 수도 있다. BKUP(402)은 각 사이클마다 DFB(62)와 워치포인트(304)로부터 수신된 명령 실행 상태 정보를 평가하고, 만일 있다면 어느 명령이 잘못 예측되었는지 또는 실행 예외를 발생시키는지를 판정하는 체크포인트 벡터 로직 유닛(404)을 포함한다. 예시적인 CPU 에서, 로직 유닛(404)은 DFB(62) 또는 워치포인트(304)로부터 수신된 각 체크포인트에서 OR를 수행한다. 최초의 체크포인트 선택 로직(Select Earliest Checkpoint Logic)(405)은 어느 체크포인트가 최초로 형성되었는지를 판정하여 차후의 잘못된 명령에 대응하는 실행 트랩은 로직(404)에 의해 식별된, 이미 삭제된 체크포인트로의 백업을 개시하지 않는다. BKUP(402)은 어느 체크포인트 번호가 백업을 위해 사용되었는지를 판정하면 예측 오류 및 실행 예외를 고려한다.
머신은 잘못 예측된 명령이 최초의 체크포인트된 명령일때 잘못 예측된 명령 체크포인트로 백업된다. RED 모드에 의해 개시된 백업에 대해, 머신은 커미트된 일련 번호(CSN)에 가깝지만 보다 큰(A-Ring 원형 구조에 있어서) 체크포인트로 백업된다. 실행 예외에 대해 체크포인트의 선택은 보다 복잡하며 예외의 특성에 좌우된다.
실행 예외(etrap)에 의해 개시된 백업은 지연 및 비지연 트랩에 대한 상이한 백업 체크포인트 번호의 계산을 요구할 수 있다. 일반적인 비지연 트랩에 대해, 체크포인트 n에 있는 명령 i가, ISN이 체크포인트 n+1를 초과하여 이동되었을때 결함이 발생한다면, 머신은 ISN으로부터 체크포인트 n+1로, 즉 잘못된 명령 다음의 체크포인트로 백업된다. 체크포인트 n+1이 활성 상태의 또는 유효한 체크포인트가 아니라면, 체크포인트를 요구하는 명령은 전혀 이슈되지 않거나 또는 어떤 타임아웃 체크포인트도 생성되지 않았기 때문에, 백업이 수행되어서는 않된다. 대신에, 잘못된 명령이 체크포인트 바로 다음의 일련 번호 슬롯에 있지 않는한, ISN으로부터 후방으로 결함 명령까지 백스텝만을 이용하는 복구가 적절하다. 예를들어, 체크포인트 m이 할당되고 일련 번호 SN=10을 가지는 경우, 슬롯 SN=11에 있는 명령이 결함이 있다면 체크포인트 m+1으로의 백업 대신에, 체크포인트 m으로의 백업이 개시된다. 즉, 머신은 결함 명령 이전에 체크포인트로 백업된다.
체크포인트된 명령이 추측적인 분기 또는 다른 제어 전송 명령에 대응할 때 프로그램 카운터의 불연속성은 체크포인트된 명령과 그 다음 명령 사이에 존재한다. 예시적인 백스텝 실행은 프로그램 카운터의 불연속성을 가로질러 백스텝하지는 않으며, 단일 프로그램 명령 일련 번호의 차이에도 불구하고 사용될 수 없다. 프로그램 카운터 및 머신 상태는 이러한 상황에서, 백업을 통해 적절히 복구될 수 있다.
지연된 트랩은 비지연 트랩과는 상이한 백업 목적지 계산(different backup destination calculation)을 필요로한다. 예컨대, 체크포인트 m이 할당되고 일련번호 SN=10을 갖는 경우, SN=11에 있는 명령이 결함이 있고 지연된 트랩을 발생시킨다면 머신은, ISN이 트랩을 발생시키는 명령 바로 앞의 명령이 아닌, 트랩을 발생시키는 명령을 가리켜야 하기 때문에 체크포인트 m 대신에 체크포인트 m+1(만약 존재한다면)로 백업되어야 한다. 만일 체크포인트 m+1이 존재하지 않으면 백업은 개시되지 않는다. 대신에, 정규 상태가 머신 백스텝만을 이용하여 기억된다. 표 10에는, 체크포인트 번호 및 잘못된 명령 일련 번호의 몇개의 조건하에서 지연 및 비지연 트랩을 위해 취해진 백업 동작을 요약되어 있다.
백트래킹(305)이, 머신 백업에 의해 영향받는 CPU(51) 유닛에게 백업이 발생되었다는 것을 알리는 제어 신호 및, 이 영향받는 CPU(51) 구성 성분에게 백업에 사용하는 체크포인트 번호를 알려주는 4비트 데이타 신호를 포함하는 신호(DO_BAKUP)를 어서트할때 체크포인트된 명령 일련 번호에서의 프로세서 상태가 복구된다. 체크포인트된 상태가 머신에 국부적으로 기억된 다음, 각각의 CPU(51) 유닛은 DO_BACKUP 신호에 응답하여 상기 영향받은 유닛내의 기억영역으로부터의 상태를 복구하는 기능을 한다.
본 발명의 방법에 대한 실시예에 있어서, 몇개의 체크포인트 및 일련 번호의 조건하에서 지연 및 비지연 트랩에 대해 취해진 백업 동작
트랩이 지연 또는 비지연 되었는가? 트랩을 발생시키는 명령이 체크포인트 SN 직후의 SN을 가졌는가? 체크포인트 n+1 이 유효한가?(체크포인트 n은 유효한 것으로 간주한다) 취해진 백업 동작
비지연 아니오 아니오 백업없음
비지연 아니오 n+1로 백업
비지연 아니오 n으로 백업
비지연 n으로 백업
지연 아니오 아니오 백업없음
지연 아니오 n+1로 백업
지연 아니오 백업없음
지연 n+1로 백업
체크포인트된 상태를 기억하고, 유지하고, 복구하는 기능을 하는 CPU(51) 유닛은 또한, DO_BACKUP 신호를 수신하고 응답하여 백업 동작(특히, PSU(300)내의 유닛)을 시퀀스하는 기능을 한다. RRF(302)는 CPU(51)를 백스텝하고, 백업보다는 스텝 바이 스텝(step-by-step) 방식으로 상태를 복구하기 때문에, DO_BACKSTEP 신호를 수신하지만 DO_BAKUP 신호는 수신하지 않는다.
더 상세하게 도 6을 참조하면, 체크포인트 기억 유닛(106)은 DO_BACKUP 신호에 의해 특정되는 체크포인트 번호에 대응하는 엔트리에 상기 기억 유닛에 의해 기억되는 체크포인트된 APC값 및 NAPC값을 CHKPT_PC 및 CHKPT_NPC 신호의 형태로 출력한다. 그런 다음 이들 값들은 APC 및 NAPC 레지스터(112,113)에 기억된다. 마찬가지로 제어 레지스터 체크포인트 기억 유닛(817)은 DO_BACKUP 신호에 의해 특정된, 체크포인트에 대해 체크포인트된 제어 레지스터의 컨텐트를 CHKPT_CNTRL_REG 신호의 형태로 출력하고, 그런 다음 이 컨텐트는 도 17 에 도시된 바와 같이, 제어 레지스터 파일(800) 내의 대응하는 제어 레지스터내의 RD/WR 갱신 로직에 의해 기억된다. 또한 도 16 을 참조하면, FXRFRN(604), CCRFRN(610), 및 FPRFRN(605) 각각의 체크포인트 기억 유닛(616)은 DO_BACKUP 신호에 의해 특정된, 체크포인트에 대해 체크포인트된 리네임 맵을 CHKPT_MAP 신호의 형태로 출력한다. 체크포인트된 리네임 맵은 제어 로직(613)에 의해 리네임 맵핑 로직(615)에 다시 기억된다. 또한, 프리리스트 유닛(700)의 체크포인트 기억 유닛(702)은 각각의 FXRFRN(604), CCRFRN(610), FPRFRN(605)의 물리적 레지스터의 체크포인트된 프리리스트를 CHKPT_FREELIST 신호의 형태로 출력하며, 그런 다음 이 프리리스트는 프리리스트 로직(701)에 기억된다.
예시적인 CPU(51)에서 백업은 실행 트랩이 여전히 시퀀스되는 경우에도 개시된다. 실행 트랩 예외 처리는 다중 사이클을 요구하기 때문에 머신이 동기화(ISN=CSN=RRP)되기 전에 DFB(62)에 의해 하나 이상의 실행 트랩이 어서트되어 이 트랩을 수취하고 처리할 수 있는 것이 가능하다. 예시적인 CPU(51)의 일실시예에서, 각 슬롯 0과 1에 대한 DFB(62)로부터의 각각의 에러 및 상태 신호(ERR_STAT)는 단일 비트 에러 표시 신호(single bit error indication signals), 6비트 일련 번호 신호(FX_SN, FP_SN, LS_SN 및 FXAG_SN) 및, 각 명령에 대한 적절한 백업 체크포인트를 계산하기 위해 사용될 16비트 원핫(one-hot) 체크포인트 벡터(FXDF_CHKPNT, FPDF_CHKPNT, FXDF_CHKPNT, 및 LSDF_CHKPNT)를 포함한다. 또한, 잘못 예측된 명령 정보 신호 WP_MISPRED는 16비트 원핫 벡터이고, 여기에서 비트-i의 어서트는, i번째 체크포인트가 잘못 예측된 명령에 대응하고 백업을 필요로함을 표시한다. 체크포인트 벡터 로직 유닛(404)은 머신이 트랩 테이블로 벡터화가 가능할 때까지 슬롯 0 과 1 각각으로부터 16비트 원핫 체크포인트 벡터 전부를 점증적으로 OR한다. OR된 체크포인트 벡터는 최초의 체크포인트를 판정하는 초기 체크포인트 선택 로직(405)에 공급된다. 이후의 명령에 대응하는 실행 예외가 발생하는 경우에 조차 이전의 백업을 통해 삭제된 체크포인트에 대한 백업은 개시되지 않는다. 예시적인 CPU(51)에서 워치포인트 예측 오류 신호(WP_MISPRED)는 16 비트 원핫 벡터이고, 여기에서 비트-i의 어서트는 i번째 체크포인트가 잘못 예측된 명령에 대응하고 백업을 필요로함을 표시한다.
3. 임의의 명령 경계로의 프로세서 백스텝
머신 백스텝은 DFB(62)에 있는 결함 명령들로부터 발생된 실행 예외(또는 실행 트랩(etraps))의 결과에 따라 개시된다. 머신 백스텝은 종종 머신 백업과 협력하여 발생되지만 또한, 백업을 개시하지 않고도 개시될 수 있다.
백스텝 유닛(BKST)(403)이 백스텝을 수행하는 기능을 한다. 이 머신 백스텝은 DFB(62)에 있는 결함 명령들로부터 발생된 실행 트랩(etraps)의 결과에 따라 발생한다. 백스텝이 수행되면, 상기 머신에서는 두 가지의 이벤트가 발생한다. 그 첫번째로, 처리중인 명령들이 삭제되면 자원들은 리클레임(ICRU 301 및 RRF 302 에 대한 설명을 참조하라)되며 사용가능하게 된다. 이들 자원들은 일련 번호, 체크포인트, 워치포인트 및 할당된 물리적 및 논리적 레지스터를 포함한다. 두번째로, 상기 백스텝 수행 동안, ISN은 CSN 및 RRP를 넘지 않는 범위내에서 디크리먼트(decrement)된다. 결함 명령은 A-링(312)의 그 활성-비트를 여전히 세트 상태로 유지하며, 그에 의해 CSN 및 RRP의 진행이 억제된다. 이 결함 명령이 에러 없이 성공적으로 실행되었다면 그 명령에 대응하는 상기 A-Ring 비트는 클리어된다. (지연 트랩들을 성공적으로 처리할때를 제외하면, 상기 A-Bit(및 M-Bit)가 클리어되어 CSN(및 NMCSN) 진행 및 자원에 대한 최종적인 복구가 수행될 것이다)
머신 백스텝은 백스텝하는데 이용되고 있는 명령의 일련 번호를 식별하는 PLSM(307)로부터 제공된 백스텝 개시 제어 신호(BACKSTEP_LAUNCH) 및 백스텝 일련 번호 식별 신호(BACKSTEP_TO_SN)에 의해 BKST(403) 장치에서 개시된다. 이 개시에 응답하는 백스텝 통지 신호(D0_BACKSTEP)의 발생에 따라 BKST(403)는 백스텝 절차를 시퀀스하기 시작하고, 이를 ICRU(301) 및 이 외의 CPU(51)에 제공하여 백트래킹(305)은 백스텝 모드로 개시하게 된다. BKST(403)는 백스텝에 대한 다수개의 명령들의 수의 카운트를 식별하는 신호를 발생하기 시작하며, 이는 PLSM(307)에 의해 태스크(task)를 행하도록 초기화할 수 있는 위성 제어기에 의해 계측될 수 있다. BKST(403)는 PLSM의 요구에 대한 상기 태스크를 시작하며, 이 태스크가 실행되는 동안에는 PLSM에 대한 상기 태스크의 종료를 표시하며, 다음 요구를 대기한다.
BKST(403)은 2 가지 타입의 조건에 대하여 백스텝을 처리한다. 그 첫번째 타입은 비지연 실행 트랩이다. 이 비지연 실행 트랩는 지연된 신호가 PLSM(307)에 의해 어서트(assertion)(ISA_DEFERRED_TRAP=0)되지 않을 경우와, 백스텝 개시 제어 신호가 지연 트랩이 아닌 실행 트랩을 나타내도록 어서트(BACKSTEP_LAUNCH=1)될 경우에 신호화 된다. 이 경우에 있어, 백스텝 양은 BKST(403)에서 계산되는데, 이는 다음 이슈된 일련 번호(NISN) 및 BACKSTEP_TO_SN에 대해 백스텝되는 일련 번호 사이의 차이를 결정하여 계산된다. 이슈된 명령 일련 번호(ISN) 보다는 다음 이슈된 일련 번호(NISN)를 이용함으로써 결함 명령 바로 전의 명령로 머신을 백업한다. 이 백업 양은 CPU(51)내의 메모리 기억 영역에 세이브되며, 결함 명령 전의 명령이 도래할때까지 감소된다.
두번째 백스텝 조건은 지연 실행 트랩과 관련이 있다. 이 지연 실행 트랩은 지연 트랩 신호가 PLSM(307)에 의해 어서트(ISA_DEFERRED_TRAP=1)될 경우와, 백스텝 개시 제어 신호가 지연 트랩인 실행 트랩을 나타내도록 어서트(BACKSTEP_LAUNCH=1)될 경우에 신호화 된다. 이 경우에 있어, 백스텝 양은 BKST(403)에서 계산되는데, 이는 이슈 일련 번호(ISN) 및 BACKSTEP_TO_SN에 대해 백스텝되는 일련 번호 사이의 차이를 결정하여 계산한다. 여기서, 상기 머신는 결함 명령 전의 명령이 아닌 결함 명령로 백스텝된다. 이와 같이, 계산된 백스텝 양은 정상적인 비지연 경우보다 적을 것이다.
예시적인 CPU(51)에서 최대 4 개의 명령들은 각 머신 사이클에서 백스텝될 수 있다. 따라서, 각 4개의 명령까지의 복수개의 백스텝 사이클들은 목적 (백스텝)명령에 도달하도록 실행된다. 일반적으로, 단일 사이클에 대하여 백스텝된 명령의 수를 제한할 필요가 없다. 더우기, 예시적인 실시예에 있어서, ISN(또는 NISN)로부터의 PC를 백스텝 양만큼 감소하는 것이 반드시 적절한 상태 복구를 달성하는 것은 아니기 때문에, 백스텝 방법은 프로그램 카운터의 불연속성을 초래하는 명령에 대한 백스텝을 지원하지 않는 제약이 있다.
이 백스텝을 시퀀스하는데 이용하는 2 가지의 상태 즉, IDLE 및 BACKSTEP으로 이루어진 단순한 머신 상태가 있다. 먼저, IDLE 상태 동안, BACKSTEP_LAUNCH의 어서트(assert)는 상태 BACKSTEP으로의 천이를 초래한다. 상태 BACKSTEP 에서 DO_BACKSTEP가 어서트되면, 2 개의 종결 조건들이 평가된다. 이 2 개의 조건들 모두는 BACKSTEP의 종결과 상태 IDLE로의 리턴을 초래한다.
백스텝 동안에 CPU(51) 상태를 복구하는 것은 머신 레지스터 자원을 갱신(update)하는 단계와, 백스텝 양만큼 프로그램 카운터(PC)를 디크리먼트하는 단계를 포함한다. 전술한 바와 같이, 아키텍처 제어 레지스터를 수정할 수 있는 명령들은 머신을 동기화하거나 또는 체크포인트되며, 이에 의해 백스텝 동안에 아키텍처 제어 레지스터를 복구할 필요가 없다. 예시적인 CPU(51)에서는 백스텝 동안 다음의 머신 상태들이 갱신된다. 즉, 프로그램 카운터(PC), 다음 PC, RRF에 기억된 정보, 리네임 맵에 기억된 정보가 갱신된다. 또, 트랩 PC, 트랩 NPC, BRB(59)내의 특권 레지스터를 포함하는 다른 제어 레지스터는 백스텝에 의해 수정되거나 또는 갱신되지 않는다. 머신 자원은 레지스터 리클레임 포멧 파일(RRF)(302)내에 기억된 논리적-이전의 물리적 맵핑과 함께 레지스터 파일로부터 리클레임된다. 백스텝 식별 신호(DO_BACKSTEP)가 어서트되면, 이를 백스텝 모드가 개시되고 있음을 ICRU(301), RRF(302), 및 다른 CPU(51) 유닛에게 알린다. 백스텝에 있어서, 각 백스텝 사이클 동안 리클레임되거나 복구되는 RRF(302) 아이템의 수는 백스텝 카운트 신호(DO_BACKSTEP 신호와 함께)에 의해 표시되는 것과 같이 백스텁된 명령 수와 동일하다.
그러므로, CPU(51) 유닛은 이들 상태를 유지하고 복구하는 기능을 할뿐만 아니라, BRB(59),ISB(61), DFB(62)내의 유닛을 포함하는 CPU(51) 유닛은 백스텝 제어 신호들을 수신하거나 이에 응답하여 백스텝 동작(특히, PSU(300)내의 장치)을 시퀀스한다. RRF(302)는 이 RRF가 CPU(51)를 백스텝하는데 직접 관련되기 때문에 DO_BACKSTEP 신호와 DO_BACKUP 신호들을 수신하며, 또 백업 이외의 상태를 단계별로 복구한다.
상기 DO_BACKSTEP 신호에 있어서 백스텝 카운터에는 백스텝 어서트 신호(DO_BACKSTEP)에 응답하는 레지스터 리클레임 포멧 장치(302)와, 리클레임되거나 복구된 RRF의 항목 수가 매칭한다. 이 RRF 는 논리적 레지스터-이전의 물리적 레지스터 맵핑을 포함하는데, 이 논리적 레지스터-물리적 레지스터로의 할당은 소스 또는 목적 데이타 값을 유지하는 것을 의미한다.
레지스터 맵핑 또는 RRF(302)에 있는 명령에 대하여 할당된 레지스터 자원들은 CSN 또는 RRP 의 진행에 의해 프리리스트(700)로 복귀하는데에 제한이 있으므로, 레지스터내의 실데이타는 교란되지 않는다. RRF는 각 백스텝 명령이 최초로 실행되었을때, 물리 레지스터(구식 물리 레지스터)를 논리적 레지스터에 재결합하게 한다. 단계별로 레지스터 맵핑을 제어함에 따라, 각 명령에 대한 레지스터 상태가 복구된다. 사실상, 머신는 백스텝 동안 레지스터 자원으로부터 역방향으로 진행한다. 도 18은 RRF의 블록도를 나타내고 있다. 도 41은 논리적-물리적 맵핑이 레지스터 리네임 파일 FXFRN, CCFRN, FCCRFN, FPFRN에서 복구되는 방식을 나타내고 있다.
이러한 RRF에 대한 일실시예에 있어서, 수개의 신호들(LOG_OPHYS_TAGS)을 포함하는 논리적 레지스터-이전의 물리 레지스터 정보는 판독/기록 제어 장치(365)와 함께 묶여지며, 기억을 위하여, 데이타 기억 구조 또는 장치(366)에 함께 묶여진다. RRF가 레지스터 리네임 맵내에서 복구를 위해 판독되면, RRF 데이타는 해체되어 원래의 포맷으로 제기억된다. 이 기술 분야에서 통상의 지식을 가진자라면 다양한 기억 포맷 및 묶음/해체 루틴들을 기억 영역이 감소하도 RRF 데이타에 변형하여 적용시킬 수 있다.
구체적으로 언급하면, 백스텝이 발생할 경우에, 판독/기록 로직(365)은 기억 장치(366)를 제어하여 LOG_OPHYS_TAGS_BKST 신호, DO_BACKST 신호에 의해 식별된 명령에 대응하는 논리적-이전의 물리적 레지스터 태그 맵핑의 형태로 출력하게 한다. 이 논리적-이전의 물리적 레지스터 태그 맵핑은 도 8, 16, 18, 39에 도시된 바와 같이 FXRFRN(604), FPRFRN(606), CCRFRN(610)로 복구된다. 도 16을 참조하면, 제어 로직(613)은 DO_BACKST 신호에 응답하여 리네임 맵 로직(615)에 대한 맵핑을 복구한다.
보다 정교한 백스텝 구조는 추가적인 정보를 유지함으로써 구현될 수 있다. 그러나, 본 발명에 따라 프로그램 카운터 값들은 기본 블록내의 명령에 대응하기 때문에, 즉 백스텝될 수 있는 명령 사이에 프로그램 카운터의 불연속이 없기 때문에 본 발명의 백스텝 방법은 단순화될 수 있다. 백스텝 장치(403)가 결함 명령로 도래하도록 백업 없이 백스텝이 이용될 경우에는 그 장치는 체크포인트 명령 일련 번호 또는 전류 ISN 로부터 제공된 복수개의 백스텝들을 신호화한다. 프로그램 불연속이 나타날 경우에, 프로그램 카운터를 디크리먼트하는 것은 적합한 복구를 위해 반드시 필요한 것은 아니다. 하지만, 이 기술분야에서 통상의 지식을 가진자면 프로그램 카운터 불연속을 허용 가능한 보다 정교한 백스텝 기술을 이용하여 실현할 수 있을 것이다.
두개의 백스텝 기구, 즉 머신 백업 및 머신 백스텝은 추측 명령 시퀀스를 원상태로 회복하기 위한 효율적인 방법 및 구조인 정규 상태 유닛(Precise State Unit)를 제공한다. 머신 백업은 정규 상태 유닛(Precise State Unit)를 통해 CPU(51)를 활성 체크포인트 경계에 대응하는 상태가 되는 것을 가능하게 한다. 또, 머신 백스텝은 정규 상태 유닛을 통해 CPU(51)를 체크포인트 경계 사이에 있는 전용 명령 경계로 백트래킹하게 한다. 머신 상태를 재기억하기 위한 백업은 복잡하지만 고속의 방법 및 구조를 제공하며, 머신 상태를 복구하기 위한 백스텝은 정교하지만 저속의 방법 및 구조를 제공한다. 도 41은 임의의 명령 경계에 있는 정규 상태를 복구하고, 유지하기 위한 본 발명의 방법을 예시하는 흐름도이다. 도 42는 논리적 레지스터-물리적 레지스터 맵핑을 레지스터 리네임 파일로 기억하는 방법을 나타내고 있다.
도 43은 두개의 머신 백스텝에 의해 수행된 머신 백업의 일예를 도시한 것이다. 백스텝은 한번에 수개의 명령들을 되돌아오는, 단일 스텝 또는 복수개의 스텝으로 실행될 수 있다. 일례로서, 결함 명령이 검출되면 포인터 ISN에 대응하는 명령을 CPU(51)는 이미 이슈하고 있다. 이 머신은 결함 명령후에 반응하여 그 머신를 가장 근접한 체크포인트으로 백업하도록 한다. 이 가장 근접한 체크포인트와 ISN 사이의 명령은 제거된다. 4개의 명령만큼의 제1 백스텝은 상기한 명령들의 이슈 동안 4개의 명령(제1 백스텝을 참조하라)들로 전용된 모든 자원들을 리클레임함으로써, 상기 머신를 결함 명령에 보다 근접하게 한다. 3개의 명령만큼의 제2 백스텝(최종 백스텝)은 모든 자원을 리클레임하는 결함 명령이 잔존하는 명령들을 전용하기 전에 머신의 오른쪽을 취한다.(제2 백스텝 영역을 참조하라)
체크포인트를 백업하는 것은 빠르지만, 체크포인트 상태를 기억하기 위해서는 많은 머신 자원을 필요로 한다. 모든 예측된 명령들은 체크포인트가 형성되도록 하기 때문에, 상태는 한 스텝에서 예측되지 않은(예측 오류) 명령에 대하여 복구될 수 있다. 백스텝은 백업 보다 저속이지만, 본 발명의 백스텝 절차는 결함 명령 이전의 체크포인트보다는, 머신 상태가 전용 명령의 실행점에 있는 상태로 복구되게 한다. 본 발명의 백스텝 구조 및 방법 때문에, 머신 상태는 종래의 방법 처럼 체크포인트 이전의 체크포인트보다는, 결함 명령 후에 체크포인트로 복구되고, 이후 결함 명령로 백스텝될 수 있다.
D. 예외 및 예측 오류 복구 동안의 우선 순위 선정 로직 및 상태 머신 동작
도 44는 일례로서, CPU(51)내에 동작가능 하게 위치된 이전 로직 및 상태 머신(PLSM)(307)을 나타내고 있다. 이 PLSM(307)은 다수개의 기능을 갖는다. 그 첫째로서, 미결 또는 동시에 발생하는 예외의 그룹내에 있는 최초의 예외를 식별한다. 이 예외의 조건은 RED 모드, 이슈트랩(itrap), 예외 트랩(etrap), 인터럽트, 예측 오류(mispredict)을 포함한다. 두번째로, 현재 처리되고 있는 예외와 처리되도록 대기하고 있는 예외중, 머신 사이클 동안 도착하는 예외 및 예측 오류를 우선한다. 세번째로, 서로 다른 타입의 예외와 예측 오류 사이의 가능한 상태 천이를 결정한다. 네번째로, 백트랙킹(백업 및/또는 백스텝), RED 모드 처리를 개시하도록 제어 신호를 이슈한다.
명령 이슈 또는 예외 동안에 발생할 수 있는 다양한 예외 타입들이 이하에서 설명될 것이며, PLSM(307)에 의한 예외, 예측 오류의 처리, 우선 순위 선정(prioritization)관하여 보다 잘 이해될 것이다. RED 트랩은 다양한 조건에서 발생할 수 있는 비동기 트랩이며, 모든 트랩에 대하여 가장 높은 우선 순위를 갖는다. RED 모드는 SPARC V-9 아키텍처 매뉴얼에 설명되어 있다. 이슈 트랩은 명령 이슈동안 ISU(200)에 의해 발생된 이슈 트랩이다. 이것은 임의의 레지스터 스필/필 (spill/fill)트랩, 임의의 트랩 명령(TA,Tcc), 명령 액세스 에러, 불법 명령, 특권 조작 부호등을 포함한다. 일반적으로, 이슈 트랩은 낮은 처리 우선 순위를 갖는 인터럽트에 비해 높은 우선 순위를 갖는다. 신호화된 모든 다른 트랩(예측 오류, 실행트랩, 레드 트랩)들은 이슈 트랩보다 시간적으로 빠른 명령이 될 것이다.
실행 트랩은 데이타 전송 버스중 하나로부터 신호화된 실행 트랩이다. 실행 트랩은 SN 순서에 기초한 다른 실행 트랩에 대하여 우선 순위가 되어야만 한다. 그 이유는 상기 실행 트랩은 항상 체크포인트 경계에서 발생하지 않으며, 결함 명령을 도달하는데에 백스텝이 요구될 수 있기 때문이다. 만일 머신가 명령에 도달하기 위해 백업을 수행한다면, 임의의 새로운 예외가 초기 명령에 대해 발생될 수 있다. 만일 실행 트랩이 현재 시퀀스되고 있다면, 임의의 예측 오류가 가장 높은 우선 순위가 될 것이다. 그 이유는 예측 오류 명령은 그들에게 이용가능한 체크포인트를 항상 갖고 있기 때문이다. 만일 PSU(300) 임의의 예외를 시퀀스하지 않는다면, 실행 트랩 및 예측 오류는 서로에 대하여 우선 순위가 되어야 한다. 다른 타입의 비동기 트랩으로 인터럽트가 있다. 이 인터럽트는 다른 예외 보다 낮은 우선 순위를 갖는다.
추측적으로 이슈된 제어 전송 명령이 잘못 예측되었음이 검출되면 워치포인트 장치(304)에 의해 예측 오류가 신호화된다. 만일 임의의 non-RED 예외가 시퀀스된다면, 예측 오류는 우선 순위로 선정될 필요가 없다. 그 이유는 그들은 항상 체크포인트 경계에 있으며, 시간으로 초기의 명령에 대해 발생할 수 있기 때문이다. 만일 예외가 시퀀스되지 않고 예측 오류가 인터럽트 및 이슈 트랩 보다 높은 우선 순위를 가지면, 실행 트랩에 한하여 우선 순위 선정이 되어야만 한다.
최초의 일련 번호 선택 로직 장치(ESNSL)(481)는 상태(status) 정보, 실행 정보, 실행 및 예외 형태의 정보 동안에 예외 발생 유무에 관한 정보를 가지고 있었던 명령에 대한 일련 번호를 DFB(62)내에 있는 각 실행 장치로부터 수신하는데, 이때 워치포인트 장치(304)로부터 수신되는 신호 (WP_MISPREDICT)는 사이클 동안에 발생했던 임의의 예측 오류를 나타내며, 전류 ISN 및 ESNSL(481)로부터 수신되는 피이드백 신호는 최종 머신 사이클(CURR_EARLIEST_SN)로부터 수신되는 새로운 예외 정보의 수신 이전에 현행의 머신 사이클에서 처리되고 있는 SN의 예외를 나타낸다. 이때, 상기 실행 장치로부터 수신하는 신호중에는 ERR_STAT를 포함한다. 예를들어, 만일 A-링(312)의 64 위치에서 명령 SN=10 및 SN=56 에 대한 예외가 발생한다면, ISN의 값이 알려지지 않고서는 최초의 예외는 결정될 수 없을 것이다. 만일 ISN=40 이면, 다음의 SN=56은 최초의 예외가 된다. 하지만, 만일 ISN=6이면, 다음의 SN=10이 최초의 예외가 된다.
ESNSLU(481)은 최초의 예외 또는 예측 오류를 우선 순위 및 실행 스위칭 로직(PESL) 유닛(482)에 알림으로써, PESL은 가장 초기의 SN 기준 및 예외 형태에 기초하여 처리된 예외 및 예측 오류를 우선 순위로 선정할 수 있다. 또, PESL은 ISU(200)로부터 이슈 트랩 신호(ISU_ITRAP) 및 인터럽트 신호(ISU_INTERRUPT_PEND)를 수신하고, 백트래킹이 체크포인트 정보의 비교에 기초하여 실행 트랩 보다 초기에 발생된 예측 오류를 결정할 수 있을때 백트래킹 장치(305)로부터의 신호(MISPREDICTED_EARLIER)를 수신한다. 또, PESL 는 상태 머신 및 제어 로직(SMCL)(483)으로부터의 상태 신호를 수신하는데, (SMCL)(483)은 상태 머신(484) 및 예외 제어 신호 발생 로직(484)를 포함하고, 전류 예외 타입(CURR_EXCEPTION_TYPE)과 처리되어 있는 예들들어, 실행 트랩, 이슈 트랩, RED등을 식별한다. 상태 머신(484)에서 예외 상태가 기억된다. 이 입력들을 이용하는 PESL(482)은 전류 및 미결 예외를 우선 순위 선정하여, 현행의 머신 사이클에 대한 새로운 예외 타입(NEW_EXCEPTION_TYPE)을 식별하는 신호를 발생한다.
예외 제어 신호 발생 로직(ECSIG)(484)는 CPU의 상태 CPU(51)내에 있는 다른 장치들에게 알려주는 복수개의 신호를 발생하는 역할을 하며, 소정 거리에 있는 다른 CPU 장치들을 지정하여 상태에 응답하여 다른 실행을 하게 한다. 특히, ECSIG는 트랩이 취출되어야 하는 제어부를 포함하는 트랩 스택 장치에 TAKE_TRAP 신호를 발생하고 전송한다. ECSIG는 ICRU(301)에 지연 트랩이 발생하였는지의 여부를 나타내는 DEFERRED_TRAP_INC를 전송하여 CSN 및 NMCSN은 예외가 진행됨으로써 진행이 되도록 한다. 또, ECSIG는 백트래킹 장치(305)에 복수개의 신호들을 전송하는데, 이 신호들은 BACKSTEP_TO_SN으로서 백스택(305)를 식별하는 신호를 포함한다. 또, 이 신호들은 RED 모드 예외의 존재 및 RED 모드 예외의 경우에 대한 BACKUP_RED를 포함한다. 또, ECSIG(484)는 명령 삭제 신호 KILL_ALL 를 DFB(62)와 ISU(200)으로 발생하여, DFB로써 예외 열에 있어서의 예외 명령을 삭제하도록 명령하며, 각 ISU에서의 이슈 명령을 정지시켜, 머신 사이클 동안에 예외 및 예측 오류가 적절히 처리되게 한다.
PLSM(307)은 5 가지의 타입으로 트랩을 탐지하고 분류한다. 즉, 인터럽트, 레드 트랩, 이슈 트랩, 실행 트랩, 예측 오류로 분류한다. 현재에 있어 예외(exception)가 시퀀스 중일 경우에 검출된 다른 예외들은 보다 높은 우선 순위를 가질 수도 있고, 갖지 못할 수도 있다. 만일, 새로운 예외가 높은 우선 순위를 가질 경우에, PESL(482)는 SMCL(483)에게 알려 현행의 예외를 시퀀스하는 것으로부터 새롭게 높은 우선 순위 예외 또는 예측 오류에 까지 스위치하게 한다. 이러한 상태 머신(484)의 포텐셜 상태 천이는 현행의 예외 타입과, 워치포인트, ISU 또는 임의의 6개의 데이타 전송 전송 버스로부터 제공되었던 새로운 에러의 발생 유무와, 현행의 예외 보다 일시적으로 보다 빠른 새로운 예외의 발생 유무에 기초하게 된다.
상태 천이는 다음과 같이 발생할 수 있다. 즉, RED―다른 트랩 타입은 상태 RED로부터의 천이를 강제할 수 없다. ITRAP―3가지 트랩 타입(예측 오류, 실행 트랩, 레드 경보(red alerts))은 천이를 다른 상태로 강제할 수 있지만, 인터럽트는 천이를 강제할 수 없다. ETRAP―레드 경보 및 예측 오류는 천이를 강제하고, 항상 높은 우선 순위를 가지며, 다른 실행 트랩은 우선 순위 선정을 요구하고 인터럽트는 낮은 우선 순위 선정을 갖지만, 반면에 이슈 트랩은 머신가 백업 또는 머신 동0기를 위해 대기중이면 천이의 강제가 불가능하므로 이슈 트랩을 유발하는 이슈 명령들은 없다. INTERRUPT―모든 트랩 타입은 높은 우선 순위 선정을 가지며, 천이를 강제할 수 있다. MISPREDICT―3가지 트랩 타입(예측 오류, 실행 트랩, 레드 경보)은 높은 우선 순위를 갖지만, 우선 순위 선정을 필요로 하지 않으며, 인터럽트는 낮은 우선 순위를 가지는 반면에, 예측 오류를 처리하는 동안 명령 이슈가 제거되기 때문에 이슈 트랩은 발생하지 않는다. IDLE―레드 트랩은 가장 높은 우선 순위를 가지며, 4 가지의 트랩 타입 중 임의의 하나에 잇따르는데, 동시에 발생하는 예측 오류 및 실행 트랩은 BACKUP으로 천이되어, 체크포인트과의 비교에 의해 예측 오류 또는 실행 트랩이 발생하였는지에 대한 결정이 얻어진다. (백트래킹은 우선 순위를 보다 빠르게 결정 할 수 있으므로 우선 순위에 근거한 체크포인트를 연기하는 것이 바람직하지만, 우선 순위 선정은 PLSM 에서 수행되는 것이 더욱 바람직하다. 결국, 이슈 트랩 및 다음의 인터럽트가 시퀀스될 것이다.)
E. 트랩 스택을 갖는 트랩의 처리
전술한 바와 같이, 트랩은 도 5의 명령 파이프라인내에서 종종 발생하며, 트랩 처리 루틴에 의해 처리되어야 한다. 도 17을 참조하면, PSU(300)이 전술한 방식으로 트랩이 취해질 수 있도록 예외를 검출할 경우에, PLSM(307)은 제어 레지스터 파일(800)로써 트랩을 취하고 이 취해진 트랩의 타입을 식별하도록 명령하는 TAKE_TRAP 신호를 발생한다. 이에 반응하여, RD/WR/UPDATE 로직(816)은 TBA 레지스터(812)로부터의 트랩 벡터 (TRAP_VEC)에 대응하는 신호를 판독한다. 도 6을 참조하면, PC 로직(106)은 상기 TRAP_VEC 신호를 이용하여 새로운 FPC, APC, NAPC를 계산하고, 이에 대응하는 트랩 처리 루틴의 명령을 이슈한다.
이 트랩 처리 루틴에서 발생한 트랩들은 SPARC_V9 아키텍처에 의해 정의된 바와 같이, 내포(nest) 형태(예를들어, 취해진 트랩내에 다시 취해진 트랩)로 처리될 수 있다. 도 17을 참조하면, 제어 레지스터 파일(800)은 트랩 스택 장치(815)를 포함한다. 이 트랩 스택 장치(815)는 도 45에 보다 상세히 도시하였다. 이것은 기억 소자 및 엔트리를 가지는 데이타 기억 구조인 트랩 트랙(820)을 포함한다.
각 기억 엔트리는 트랩 타입(TT), 트랩 상태(TATATE), 트랩 다음 프로그램 카운터(TNPC), 트랩 프로그램 카운터(TPC)필드로서 SPARC-V9 아키텍쳐 매뉴얼에 의해 지정된 4개의 필드를 갖는다. 그중 TPC 및 TNPC 필드는 BRB(59)의 APC 및 NAPC 레지스터(113,114)에서의 APC 및 NAPC 값을 동시에 취한 트랩을 포함한다. SPARC-V9 아키텍쳐 매뉴얼에서 설명한 바와 같이, TSTATE 필드는 도 39에 나타낸 CCRFRN(610)내에 있는 XICC 레지스터의 컨텐트를 취한 트랩을 포함하고, 도 17에 나타낸 ASI, CWP, PSTATE 레지스터(808,809,805)의 컨텐트를 취한다. TT 필드는 취해진 트랩의 타입을 식별한다.
다시, 도 45를 참조하면, 상기한 바와 같이 트랩이 취해지면, 현행의 PC, NPC, TSTATE, TT의 값들은 트랩 스택(820)의 기억 엔트리 중 하나에 대응하는 필드내에 기억된다. 이와 같이 취해진 내포 트랩(nested trap)수를 나타내는 트랩 레벨(TL)은 증가되고, 트랩 처리 루틴은 취해진 트랩을 처리하기 시작한다. 그러나, 이 트랩 처리 루틴 동안에 트랩이 발생할 경우에, 이 제2 의 트랩 시간에 대한 PC, NPC, TSTATE, TT 값들은 트랩 스택(820)의 기억 엔트리 중 다른 하나에 대응하는 필드내에 기억된다. 제2 의 트랩 처리 루틴은 제2 트랩을 처리하는데 요구된다. 제2 트랩 처리 루틴의 종결부분에 있어서, DONE 또는 RETRY 명령이 실행되면 PC, NPC, TSTATE 값들은 기억 엔트리에 기억되어 제2 트랩은 대응하는 레지스터에 기록되고 트랩 레벨은 감소된다. 결국, CPU(51)은 제2 트랩이 취해졌을 때의 상태로 복귀하고, 제1 트랩 처리 루틴은 제1 트랩을 처리하기 시작한다. 이 제1 트랩 처리 루틴의 DONE 또는 RETRY 명령이 실행되면, CPU(51)은 제1 트랩이 취해졌을 때의 원래의 상태로 복귀한다.
SPARC-V9 아키텍처에 의해, 트랩 스택 장치(815)는 복수개의 내포 트랩의 처리를 지지하기 위해 복수개의 트랩 레벨을 포함한다. 하지만, SPARC-V9 아키텍처가 4 개의 트랩 레벨을 지지하기 위하여 4개의 기억 엔트리와 함께 트랩 스택을 지정할 경우에, 트랩 스택(820)은 4개의 요구된 트랩 레벨을 지원하기 위한 8개의 기억 엔트리 0-7를 포함한다. 이 추가된 4 개의 기억 엔트리들이 이용됨으로써, 기억 소자 리네임 또는 레지스터의 컨셉(concept)이 트랩 스택 장치(815)에 대해 전술한 바와 같이 신장될 수 있게 되어, 트랩들은 추측적으로 취해지거나 복귀될 수 있다. 더욱이, 전술했던 바와 같이, 본 발명은 기억 엔트리의 수가 트랩 레벨의 수 보다 클 경우에 한하여, 임의의 트랩 레벨 수와 함께 작용하고 있음에 유의하여야 한다.
트랙 스택 장치(815)는 트랩에 조합된 TPC, TNPC, TSTATE, TT 값을 기억하기 위하여 이용가능한 트랩 스택(820)에 있는 기억 엔트리의 모든 리스트를 기억하기 위한 프리리스트 로직(821)을 포함한다. 도 46을 참조하면, 프리리스트 레지스터(822)는 각 머신 사이클 동안에 현행의 이용가능한 기억 엔트리의 리스트를 8 비트의 프리리스트 벡터 신호의 형태로 기억한다. 프리리스트 신호의 각 비트는 트랩 스택(820)의 기억 엔트리중 하나에 대응하며, 이 기억 엔트리가 현재 이용가능한지의 여부를 식별한다. 프리리스트 벡터에 의해 이용가능한지의 여부가 확인된 제1 기억 엔트리에 있어서, 제1 엔코더(823)는 벡터를 기억 엔트리로서 식별하고, 취한 다음에 트랩에 대한 TPC, TNPC, TSTATE, TT 값을 기록하기 위한 포인터로서의 역할을 하는 WR_ENTRY 신호로 엔코드한다.
또, 프리리스트 로직(821)는 전체-제로-검출기(836)를 포함한다. 프리리스트 로직(821)은 FREELIST 신호가 전체 제로 비트를 포함하면 트랙 스택(820)에서의 기억 엔트리의 가용 가능성이 없음을 결정한다. 이 결정이 발생한 후에, NO_ENTRY_AVAIL 신호를 발생한다.
도 45를 참조하면, PSU(300)가 트랩이 취해지는 것과 동시에 NO_ENTRY_AVAIL 신호가 기억 소자들에 대한 이용가능성이 없음을 나타내는 시점을 결정할 경우에 있어서는, TAKE_TRAP 신호는 NO_ENTRY_AVAIL가 기억 소자가 이용가능한지를 나타낼때까지 트랩을 취하고 있는 지의 여부를 나타내지 않는다. 더우기, PSU(300)은 NO_ENTRY_AVAIL 신호가 기억 엔트리가 이용가능한지를 나타낼 때 까지 ISSUE_KILL 및 FETCH_SHUTDOWN 신호를 어서트하여 ISU(200)에 의한 임의의 명령을 이슈하는 것과 동시에 BRB(59)에 의해 명령을 인출하는 것을 중지시킨다. 이것은 CPU(51)의 동기로서, 체크포인트들은 후퇴하게 되며, 트랩 스택(820)내의 기억 엔트리들은 재이용되거나 이용가능하게 될 것이다.
그러나, NO_ENTRY_AVAIL 신호가 어서트되지 않으면, PSU(300)은 제어 레지스터 파일(800)에 TAKE_TRAP 신호를 출력하고, 트랩이 취해지는 지를 나타내는 신호와 동시에 원래의 트랩의 타입을 식별하는 신호를 출력한다. 제어 레지스터 판독/기록 및 갱신(RD/WR/UPDATE) 로직(816)은 ASI, CWP, PSTATE 레지스터(808,809,805)의 컨텐트를 판독하고, 이를 트랩 스택 장치(815)의 트랩 스택(820)에 제공한다.
이 트랩 스택(820)은 이 트랩 스택(820)의 TPC, TNPC에 기록되는 전류 APC, NAPC를 포함하는 WR_TPC_TNPC 신호를 수신한다. 도 8에 있어서, 트랩 스택(820)은 FSR/CCRFRN(610)에서 XICC 레지스터의 XICC 데이타를 수신한다.
TAKE_TRAP 신호에 응답하여, 트랩 스택 판독/기록 제어(RD/WR)로직(822)은 TAKE_TRAP 신호에 포함된 트랩 타입(TT) 필드를 추출하며, 이를 트랩 스택(820)에 제공한다. RD/WD 로직(822)은 수신된 APC, NAPC, ASI, CWP, PSTATE, TT값을 WR_ENTRY 신호에 의해 포인트된 기억 소자의 적합한 필드에 즉시 기록한다. 더우기, 이하에 자세히 설명하겠지만, XICC 데이타는 로직 XICC 레지스터의 컨텐트가 이용가능할때에 WR_ENTRY_XICC 신호에 응답하는 동일한 기억 소자의 TSTATE 필드에 기록된다.
도 17을 참조하면, 제어 레지스터 RD/WR/UPDATE 로직(816)은 TL 레지스터(811)로부터의 이전의 TL 값을 수신하고 이를 인크리먼트한 후, TL 레지스터(811)로 새로운 TL 값을 기록한다.
도 45에 나타낸 바와 같이, 트랩 스택 리네임 맵(RENAME MAP) 로직(824)은 새로운 TL값과, TAKE_TRAP, WR_ENTRY 신호를 수신한다. 도 47을 참조하면, RENAME MAP 로직(824)는 4 개의 트랩 레벨 중 하나에 대응하고 있는 TL 1-4(트랩 레벨1-4)기록 멀티플렉서(826-829)와 함께 TL1-4레지스터(830-833)를 포함한다. 상기 새로운 TL 값과 TAKE_TRAP 신호에 응답하여, WR_MUX_CNTRL 신호와 동시에 RENAME MAP 로직(824)의 제어 회로(825)는 TL1-4 기록 멀티플렉서(826-829)를 제어함으로써, WR_ENTRY 신호는 새로운 TL 값에 의해 식별된 트랩 레벨에 대응하는 레지스터내에 기억되고, 또 다른 레지스터들은 이전에 머신 사이클에 기억된 값과 동일한 값으로 복구한다.
따라서, 레지스터 중 하나에 기억된 WR_ENTRY 신호에 의해 식별된 기억 엔트리는 RENAME MAP 로직(824)내의 새로운 TL 값에 의해 식별된 현재의 트랩 레벨로 맵핑된다. 게다가, 다른 레지스터에 기억된 신호에 의해 식별된 기억 엔트리들은 이전에 머신 사이클에서 있었던 것과 동일한 방식으로 맵핑된다.
도 46를 다시 참조하면, 프리리스트(812)의 제1(FIRST-ONE) 엔코더(823)는 TAKE_TRAP 신호를 수신한다. TAKE_TRAP 신호는 트랩 수취를 표시하며, 제1 엔코더(823)는 0으로 세트된 WR_ENTRY 신호에 대응하는 비트를 갖는 8비트 신호를 OR 회로(835)에 재송신한다. OR 회로(835)는 또한 RRF 로직(837)(도 45에 도시됨)으로부터 8비트 FREE_ENTRY 신호를 수신하는데, 이들 비트는 최종 머신 사이클에서 재이용되는 트랩 스택(820)의 기억 엔트리 비트와 동일시하며 이용가능하다. 백업이 수행되는 동안, OR 회로(835)는 AND 회로(838)로부터 8비트 BACKUP_FREELIST 신호를 수신하는데 그 8비트 신호는 백업된 체크포인트가 형성될때, 이용가능한 기억 엔트리를 동일시한다. 제1 엔코더(823)로부터 수신된 신호 비트는 논리적으로 FREE_ENTRY 및 BACKUP_FREELIST 신호의 대응하는 비트와 OR 되고, 결과적인 FREELIST 신호는 레지스터(822)에 제공된다. 따라서, 백업을 제외하고, 다음 머신 사이클 안에 있는 FREELIST 신호는 0으로 세트된 WR_ENTRY 신호 비트에 대응하는 기억 엘리먼트가 더 이상 이용가능하지 않음을 나타낸다.
도 7를 다시 참조하면, PSU(300)는 TAKE_TRAP 신호를 발생시키며, 또한 CHKPT_REQ 신호를 이용하여 ISU(200)가 트랩 처리 루틴에 첫번째 이슈된 명령을 위한 체크포인트를 할당하도록 요구한다. 따라서, ISU(200)는 제어 레지스터 파일(800)을 포함하는, CPU(51)내의 다양한 블록 및 유닛에게 DO_CHKPT 신호를 출력한다.
도 47을 다시 참조하면, RENAME_MAP_1-4 신호는 TL1-4 레지스터(830-833)에 의해 출력되고, 그 결과 트랩 레벨 1-4에 각각 대응한다. 게다가, 이들 신호는 TL1-4 레지스터(830-833)에 의해 출력되기 때문에, 트랩 레벨 1-4에 기억 엔트리의 현행의 맵핑이 제공된다.
그러나 전술한 바와 같이, 트랩이 수취되면, RENAME MAP 로직(824)은 새로운 이용가능한 기억 엔트리를 새로운 트랩 레벨(TL)로 맵핑한다. 하지만, 이러한 트랩 레벨에 대한 다른 기억 엔트리의 이전 맵핑은 앞서 기술한 것처럼 백업이 발생하는 경우 반드시 추적될 수 있어야 한다. 따라서, 도 48을 참조하면, RRF 로직(837)은 이전 맵핑이 더 이상 필요하지 않을 때까지, RENAME MAP 로직(824)으로부터 수신된 RENAME_MAP_1-4 신호로부터 이러한 이전 맵핑을 보호한다.
트랩이 걸릴 때, 멀티플렉서(843)는 새로운 트랩에 대한 TL(즉, 1만큼 인크리먼트된 이전 TL)에 대응하는 RENAME_MAP 신호를 출력한다. 다시 말하면, 멀티플렉서는 다음 머신 사이클에서 새로운 맵핑을 반영할 RENAME_MAP 신호만을 선택한다. 이 신호는 디코더(842)에 의해서, 기억 엔트리가 새로운 맵핑에 의해 새로운 트랩 레벨로 대체되고 있다는 것을 나타내는 8비트 신호로 디코드된다. TAKE_TRAP 신호가 트랩이 수취되고 있음을 나타내기 때문에, 디코드된 신호는 AND 회로(841)을 통해 RRF 로직(837)의 RRF 기억 유닛(839)에 제공된다. 그러나, 트랩이 수취되지 않으면, AND 회로(842)는 RRF 기억 유닛(839)에 모든 비트가 0으로 세트된 8비트 신호를 제공한다.
RRF 기억 유닛(839)는 16개의 기억 엘리먼트 및 엔트리를 포함한다. 각 기억 엔트리는 앞서 기술된 16개의 체크포인트 번호중 하나에 대응한다. 따라서, DO_CHKPT 신호가 체크포인트가 형성될 것임을 나타낼 때, RRF 판독/기록(RD/WR) 제어 로직(840)은 AND 회로(841)로부터 수신된 데이타를 DO_CHKPT 신호에 의해 식별된 체크포인트 번호에 대응하는 기억 엔트리로 기록한다.
따라서, RRF(837)는 트랩 스택 유닛(820)의 각 기억 엔트리의 비가용성 리스트를 유지하는데, 이 기억 엔트리는 RENAME MAP 로직(824)의 현행 맵핑에 의해 트랩 레벨중 하나로 현행 맵핑되지 않지만 트랩 레벨중 하나로 맵핑하기 위해 여전히 이용가능하지 않는데, 그 이유는 트랩 레벨의 그 이전 맵핑은 체크포인트로 백업할 경우에 복구될 필요가 있기 때문이다. 이러한 경우에, 기억 엔트리는 체크포인트가 형성되도록 하는 트랩의 트랩 레벨로 맵핑될때 형성된 체크포인트가 리타이어할때까지 비가용성 리스트에 유지된다.
RRF RD/WR 제어 로직(840)은 또한 PSU(300)로부터 16비트 CHKPT_CLR 신호를 수신한다. 각각의 비트는 체크포인트 번호중 하나에 대응하며, 대응하는 체크포인트가 상기 설명된 방식으로 리타이어되었는지의 여부를 나타낸다. 이 신호에 응답하여, RRF RD/WR 로직은 RRF 기억 유닉(839)의 대응하는 기억 엔트리로부터 데이타를 판독한다. CHKPT_CLR 신호는 클리어된 다수의 체크포인트를 식별할 수 있기 때문에, 대응하는 기억 엔트리로부터 판독된 데이타의 비트는 OR 연산되고 결합되어, 도 46에 도시된 FREELIST 로직(821)에 8비트 FREE_ENTRY 신호로서 송신되는 FREE_ENTRY 신호를 형성한다.
체크포인트가 CHKPT_CLR 신호에 의해 식별되는 경우, 트랩이 수취되면, FREE_ENTRY 신호에 의해 식별된 기억 엔트리는 재이용되며, 대응하는 체크포인트가 리타이어되기 때문에 다시 이용가능하다. 그 결과, 이러한 트랩은 더 이상 복구될 수 없다. 따라서, 백업이 발생하지 않는다고 가정하면, 그때 FREE_ENTRY 신호 비트는 제1 엔코더(823)에 의해 제공된 신호의 대응하는 비트와 OR 연산되여 다음 머신 사이클을 위한 FREELIST 신호를 공급한다.
CHKPT_CLR 신호에 의해 식별되는 체크포인트가 형성되지 않은 경우에, 트랩이 수취되면, 대응하는 기억 엘리먼트로부터 판독된 데이타는 모두 0 비트가 되며, 따라서 FREELIST 신호의 발생과 충돌하지 않는다.
도 45에 도시된 바와 같이, 트랩 스택 유닛(815)은 또한 트랩 스택 체크포인트 기억 유닛(845)을 포함한다. 이 기억 유닛(845)은 도 48에서 더 상세히 도시된다. 이 기억 유닛은 16비트 어드레셔블 기억 엘리먼트 또는 5개의 필드를 각각 가진 기억 엔트리를 갖는 데이타 기억 구조를 포함한다.
기억 유닛은 FREELIST 로직(821)으로부터 FREELIST 신호를 수신하고 RENAME MAP 로직(824)으로부터 RENAME_MAP 신호를 수신한다. 그때, DO_CHKPT 신호가 체크포인트가 형성될 것임을 나타내면, 트랩 스택 기억 판독/기록 제어 로직(847)은 FREELIST 및 RENAME_MAP 신호를, DO_CHKPT 신호에 의해 식별된 체크포인트 번호에 대응하는 기억 엔트리의 적절한 필드에 기록한다. 체크포인트가 형성될 때, 현행 FREELIST 및 RENAME_MAP 신호는 기억되기 때문에, 트랩 레벨로의 트랩 스택 기억 엔트리의 현행 맵핑 및, 이용가능한 트랩 스택 기억 엔트리의 현행 리스트는 체크포인트된다.
DO_BACKUP 신호가 체크포인트에 대한 백업이 수행되고 있다는 것을 표시할때, RD/WR 제어 로직(847)은 DO_BACKUP 신호에 의해 식별된 체크포인트 번호에 대응하는 기억 엘리먼트로부터 체크포인트된 FREELIST 및 RENAME_MAP 신호 판독한다. FREELIST 신호는 BACKUP_FREELIST 신호로서 판독되며 RENAME_MAP 신호는 BACKUP_MAP 신호로서 판독된다.
도 46를 참조하면, FREELIST 로직(821)은 BACKUP_FREELIST 및 DO_BACKUP 신호를 수신한다. DO_BACKUP 신호가 백업이 발생하고 있다는 것을 표시하기 때문에, AND 회로(838)는 BACKUP_FREELIST 신호를 OR 회로(835)에 제공한다. 상기 설명된 바와 같이, 제1 엔코더(823)로부터 수신된 신호의 비트는 FREE_ENTRY 및 BACKUP_FREELIST 신호의 대응하는 비트와 논리적으로 OR 연산되어, FREELIST 신호를 생성한다.
도 47을 참조하면, RENAME_MAP 로직(824)은 BACKUP_MAP 및 DO_BACKUP 신호를 수신한다. DO_BACKUP 신호가 백업이 발생하고 있다는 것을 표시하기 때문에, 제어 회로(825)가 발생시킨 WR_MUX_CNTRL 신호는 BACKUP_MAP_1-4 신호를 각각 TL1-4 레지스터(830-833)에 각각 제공한다. 결과적으로, 체크포인트가 형성될때 존재하는 트랩 레벨에 대한 트랩 스택 기억 엘리먼트의 맵핑은 원상태로 복구된다.
전술한 바와 같이, CPU(51)는 추측적으로 명령을 이슈하고 실행한다. 트랩 스택 유닛(815)은 백업의 경우에 이전 트랩 레벨을 복구하도록 메카니즘을 가지기 때문에, CPU(51)가 추측적으로 트랩을 수취하고, 트랩으로부터 리턴할 수 있다.
추측 트랩을 수취하고 트랩으로부터 리턴하는 CPU의 성능은 도 51에 도시된다. 도시된 바와같이, 최초 실행 시퀀스는 트랩 레벨 0에 있으며, 트랩 레벨 1-4는 각각 트랩 스택 기억 엔트리 1-4로 맵핑된다. 제1 트랩이 수취되면, 트랩 레벨은 트랩 레벨 1로 인크리먼트하고, 체크포인트 1이 형성되는 동시에 체크포인트 1에서의 기억 엔트리 맵핑에 대한 트랩 레벨이 체크포인트되며, 기억 엔트리 5에 대한 트랩 레벨 1의 새로운 맵핑이 형성된다. 새로운 체크포인트가 예측된 프로그램 제어 명령과 같은 명령을 위해 형성되고 체크포인트 2에서의 기억 엔트리 맵핑에 대한 트랩 레벨이 체크포인트된다. 그런 다음 제2 트랩이 수취되고, 트랩 레벨이 트랩 레벨 2로 인크리먼트되면, 체크포인트 3이 형성되고, 체크포인트 3에서의 기억 엔트리 맵핑에 대한 트랩 레벨은 체크포인트되며, 기억 엔트리 6에 대한 트랩 레벨 2의 새로운 맵핑이 형성된다. 트랩 레벨 2에서, 트랩용 트랩 처리기의 복구 또는 재시도 명령이 실행될 때, 트랩 레벨은 트랩 레벨 1로 디크리먼트되고, 체크포인트 4가 형성되며, 체크포인트 4에서의 기억 엔트리 맵핑에 대한 트랩 레벨이 체크포인트된다. 트랩 레벨 1에서 트랩용 트랩 처리기로 리턴한 후, 체크포인트가 트랩 처리기의 명령을 위해 체크포인트 5에서 형성되며 체크포인트 5에서의 기억 엔트리 맵핑에 대한 트랩 레벨이 체크포인트된다. 또 하나의 트랩이 수취되면, 트랩 레벨은 트랩 레벨 2로 인크리먼트되고, 체크포인트 6이 형성되며, 체크포인트 6에서의 기억 엔트리 맵핑에 대한 트랩 레벨이 체크포인트되며, 기억 엔트리 7에 대한 트랩 레벨 2의 새로운 맵핑이 형성된다. 다른 또 하나의 트랩이 수취되면, 트랩 레벨은 트랩 레벨 3으로 인크리먼트되고, 체크포인트 7이 형성되며, 체크포인트 7에서의 기억 엔트리 맵핑에 대한 트랩 레벨은 체크포인트되고, 기억 엔트리 0에 대한 트랩 레벨 3의 새로운 맵핑이 형성된다. 트랩 레벨 3에서, 트랩용 트랩 처리기의 복구 또는 재시도 명령이 실행되면 트랩 레벨은 트랩 레벨 2로 디크리먼트되고, 체크포인트 8이 형성되며, 체크포인트 8에서의 기억 엔트리 맵핑에 대한 트랩 레벨이 체크포인트된다. 그때, 만약 체크포인트 2가 형성된 프로그램 제어 명령이 잘못 예측된 것으로 판단되면, 체크포인트 2로의 백업이 발생하며, 체크포인트 2에서의 기억 엔트리 맵핑에 대한 트랩 레벨이 복구된다. 따라서, 체크포인트 3 및 7이 형성되는 트랩은 추측적으로 수취되고 그 트랩으로부터 리턴되며, 체크포인트 6이 형성된 트랩은 추측적으로 수취된다.
전술한 바와 같이, 트랩 스택의 TSTATE 필드는, 트랩이 수취될때 도 8에 도시된 FSR/CCRFRN (606)의 논리적 XICC 레지스터로서 맵핑된 물리적 레지스터의 컨텐트(즉 XICC 데이타)를 유지하는 XICC 필드를 포함한다. 고정소수점 명령은 FXU(601) 및 FXAGU(602)에 의해 PC 순서와 다르게 실행될 수 있기 때문에, 이들 컨텐트는 트랩이 발생하는 시점에서 이용가능하지 않을 수 있다. 따라서, 차후에 정확한 XICC 데이타를 얻기 위한 메카니즘을 사용하지 않고, PSU(300)는 XICC 데이타가 트랩을 수취하는데 이용가능할때까지 대기해야 한다.
그러나, 도 45를 참조하면, 트랩 스택 유닛(815)은 이러한 메카니즘, 즉 XICC 획득 로직(823)을 포함한다. XICC 획득 로직(823)은 FSR/CCRFRN(606)으로부터 CC_TAGS_C, CC_DV_C, CC_TAGS_F 및 CC_DV_F 신호를 수신하며, 트랩 스택(820)은 CC_DATA_C와 CC_DATA_F 신호를 수신한다.
도 52를 참조하면, CC_DATA_C 신호는 XICC_DATA_C 신호를 포함하고, CC_DV_C 신호는 XICC_DV_C 신호를 포함한다. XICC_DATA_C 신호는 트랩이 수취될때의 머신 사이클에서의 XICC 논리 레지스터(즉, 도 39에 도시된 CCRFRN(610)에 의해 논리적 XICC 레지스터로서 맵핑된 물리적 레지스터)의 현행 컨텐트(만약 이용가능하다면)를 포함한다. XICC_DV_C 신호는 XICC_DATA_C 신호의 컨텐트가 유효한지(즉, 논리적 XICC 레지스터로 맵핑된 물리적 레지스터의 컨텐트가 아직 이용가능한지)의 여부를 표시한다.
트랩이 수취되는 시점에서의 논리적 XICC 레지스터로 맵핑된 물리적 레지스터의 컨텐트는 그 시점에서 이미 이용가능할 수 있다. 상기와 같이 이미 이용가능하면, XICC_DV_C 신호는 XICC_DATA_C 신호의 컨텐트가 유효하다는 것을 표시하며, PSU(300)으로부터 수신된 TAKE_TRAP 신호는 트랩이 수취되었음을 표시한다. 따라서, XICC 기록 로직(825)은 WR_ENTRY 신호에 의해 식별된 엔트리에 대응하는 WR1_ENTRY_XICC 신호를 제공한다. 상기와 같이 되면, 트랩 스택 유닛(815)의 RD/WR 제어 로직(822)은 XICC_DATA_C 신호의 컨텐트를 WR1_ENTRY_XICC 신호에 의해 식별된 트랩 스택(820)의 엔트리의 TSTATE 필드의 XICC 필드에 기록한다.
그러나 XICC_DV_C 신호가, XICC_DATA_C 신호의 컨텐트가 트랩이 수취되는 시점에서 유효하지 않다고 표시하면, XICC_DATA_C 신호의 컨텐트는 트랩 스택(820)에 기록되지 않는다. 이러한 경우에, 트랩 스택 유닛(815)은, 논리적 XICC 레지스터로서 맵핑된 물리적 레지스터의 컨텐트가 트랩이 수취되는 시점에서 이용가능하게 될때까지 대기해야 한다. 도 53을 참조하면, 상기와 같이 하기 위해, XICC 획득 로직(823)은 현행 매칭 로직(826)과 최근 어레이 매칭 로직(827)을 포함한다.
도 53을 계속 참조하면, CC_TAG_C 신호는, 트랩이 수취될때 논리적 XICC 레지스터로서 맵핑된 물리적 레지스터의 물리적 레지스터 태그를 포함하는 XICC_TAG_C 신호를 포함한다. 더욱이, CC_TAG_F 신호는, 논리적 XICC 레지스터를 수정하는 고정소수점 명령을 실행할때의 FXU(601) 및 FXAGU(602)에 의해 각각 전송된 FXU_XICC_TAG_F 및 FXAGU_XICC_TAG_F 신호를 포함한다. 이러한 신호는, 이들 실행된 고정소수점 명령을 위한, 논리적 XICC 레지스터로 맵핑된 물리적 레지스터의 물리적 레지스터 태그를 포함하며, CC_DATA_F 신호의 FXU_XICC_DATA_F 신호와 FXAGU_XICC_DATA_F 신호의 컨텐트는 그 레지스터에 기록된다. FXU_XICC_DATA_F와 FXAGU_XICC_DATA_F 신호는 FXU(610) 및 FXAGU(602)에 의해 각각 전송된다.
CC_DV_F 신호는, 논리적 XICC 레지스터를 수정하는 고정 소수점 명령을 실행할때의 FXU(601)와 FXAGU(602)에 의해 각각 전송된 FXU_XICC_TAG_F 및 FXAGU_XICC_TAG_F 신호를 포함한다. 이들 신호는, 실행된 부동 소수점 명령을 위해 논리적 XICC 레지스터로서 맵핑된 물리적 레지스터에 기록된 FXU_XICC_DATA_F와 FXAGU_XICC_DATA_F 신호의 컨텐트가 유효한지(즉, 이용가능한지)의 여부를 표시한다.
전술한 바와 같이, 명령은 실제의 및/또는 예측된 프로그램 순서와 다른 순서로 실행될 수 있기 때문에, 전송된 FXU_XICC_DATA_F 및 FXAGU_XICC_DATA_F 신호는, 트랩이 수취될때 논리적 XICC 레지스터로서 맵핑된 물리적인 레지스터에 기록된 컨텐트를 결국 포함한다. 이는 트랩이 수취되는 사이클(즉, 현행의 머신 사이클)과 동일한 머신 사이클에서 또는 차후 머신 사이클에서 발생할 수 있다.
상기와 같이 동일한 머신 사이클에서 발생하는 경우에 있어서, XICC_TAG_C 신호는 트랩이 수취될때 논리적 XICC 레지스터로서 맵핑된 물리적인 레지스터의 태그를 식별한다. XICC_TAG_C 신호에 의해 식별된 태그는 현행 매칭 로직(826)의 비교 로직(850) 및 비교 로직(851)에 의해 FXU_XICC_DATA_F 및 FXAGU_XICC_DATA_F 신호에 의해 각각 식별된 태그와 비교된다. 만약 매칭하면, 대응하는 FXU_XICC_DV_F 신호 또는 FXAGU_XICC_DV_F 신호는 대응하는 FXU_XICC_DATA_F 신호 또는 FXAGU_XICC_DATA_F 신호의 컨텐트가 유효하다는 것을 표시하며, 현행 매칭 로직(826)은 대응하는 FXU_XICC_CURR_MATCH 신호 또는 FXAGU_XICC_CURR_MATCH 신호를 출력한다. 이 신호는, 트랩이 수취될때 논리적인 XICC 레지스터로서 맵핑된 물리적 레지스터의 컨텐트가 트랩이 수취된 동일한 머신 사이클에서 이용가능하게 되엇었음을 표시한다.
도 52를 참조하면, 이 머신 사이클 동안, TAKE_TRAP 신호는 트랩이 수취되는 것을 계속 표시하며, WR_ENTRY 신호는 여전히 이 트랩의 레벨 트랩로 맵핑된 엔트리를 식별한다. 따라서, FXU_XICC_CURR_MATCH나 혹은 FXAGU_XICC_CURR_MATCH 신호에 응답하여, XICC 기록 로직(825)은 대응하는 WR2_ENTRY_XICC나 혹은 WR3_ENTRY_XICC 신호를 발생시킨다. 이 신호는 WR_ENTRY 신호에 의해 식별된 엔트리에 대응한다. 트랩 스택 유닛(815)의 RD/WR 제어 로직(822)은 FXU_XICC_DATA_F 또는 FXAGU_XICC_DATA_F 신호의 컨텐트를, 대응하는 WR2_ENTRY_XICC 신호 또는 WR3_ENTRY_XICC 신호에 의해 식별된 트랩 스택(820) 엔트리의 TSTATE 필드의 XICC 필드에 기록한다.
도 53을 다시 참조하면, 전술한 바와같이, 트랩이 수취된 머신 사이클 이후의 머신 사이클에서, 전송된 FXU_XICC_DATA_F 및 FXAGU_XICC_DATA_F 신호는 트랩이 수취될때 XICC 레지스터로서 맵핑된 물리적인 레지스터에 기록된 컨텐트를 포함할 수 있다. 이와같이 하기 위해, XICC 획득 로직(823)은 태그 어레이 기억 유닛(854)을 포함하는 최근 어레이 매칭로직(827)을 포함한다.
기억 유닛(854)은 8개의 기억 엔트리를 가진다. 각 엔트리는 트랩 스택(820) 엔트리중 하나에 대응한다. 따라서, TAKE_TRAP 신호가 트랩이 수취되고 있음을 표시할 때마다, RD/WR 로직(855)은 그 시점에서 XICC_TAG_C 신호에 의해 식별된 태그를, WR_ENTRY 신호에 의해 식별된 트랩 스택(820)의 엔트리에 대응하는 기억 유닛(854)의 엔트리에 기록한다.
비교 어레이 로직(852, 853)은 FXU_XICC_TAG_F 및 FXAGU_XICC_TAG_F 신호에 의해 식별된 태그를 기억 유닛(854)에 기억된 각각의 태그와 각각 비교한다. 결과적으로, 임의의 매칭이 발생하고, 대응하는 FXU_XICC_DV_F 또는 FXAGU_XICC_DV_F 신호가, 이 대응하는 FXU_XICC_DATA_F 또는 FXAGU_XICC_DATA_F 신호의 컨텐트가 유효하다는 것을 표시한다면, 대응하는 비교 어레이 로직(852, 853)은 대응하는 FXU_XICC_DATA_F 또는 FXAGU_XICC_DATA_F 신호의 컨텐트가 기록된 트랩 스택(820)의 엔트리를 식별하는, 대응하는 FXU_XICC_LATE_MATCH 또는 FXAGU_XICC_LATE_MATCH 신호를 출력한다.
도 54를 참조하면, XICC 획득 로직은 XICC 대기 로직(828)을 포함한다. 레지스터(856)는 WAIT_FOR_XICC_VEC 벡터 신호를 기억한다. WAIT_FOR_XICC_VEC 벡터 신호의 각 비트는 트랩 스택(820)의 엔트리중 하나에 대응하고, 그 대응하는 엔트리가, 대응하는 트랩이 수취되는 시점에서 논리적 XICC 레지스터로서 맵핑된 물리적 레지스터의 컨텐트가 이용가능하게 될때를 대기할때 어서트된다. WAIT_FOR_XICC_VEC 벡터 신호는, 대응하는 트랩이 수취되는 시점에서 논리적 XICC 레지스터로서 맵핑된 다양한 물리적 레지스터의 컨텐트가 이용가능하게될 때를 현행 대기하는 트랩 스택(820)의 모든 엔트리의 리스트를 제공한다.
트랩이 TAKE_TRAP 신호에 의해 표시되는 것과 같이 수취되는 시점마다, XICC_DV_C 신호가 논리적 XICC 레지스터로서 맵핑된 물리적인 레지스터의 컨텐트가 상기 시점에서 이용가능하지 않다는 것을 표시하고, FXU_XICC_CURR_MATCH 신호 및 FXAGU_XICC_CURR_MATCH 신호 모두가 그러한 것을 표시하면, WR_ENTRY 신호는 이들 컨텐트가 차후 머신 사이클에서 이용가능하게 될때를 대기하고 있는 엔트리를 식별한다. 결과적으로, 이러한 엔트리는 XICC 대기 로직(828)에 의해, 대응하는 트랩이 수취될때 논리적 XICC 레지스터로서 맵핑된 다양한 물리적 레지스터의 컨텐트가 이용가능하게될 때를 현재 대기하고 있는 트랩 스택(820)의 엔트리에 대한 WAIT_FOR_XICC_VEC 벡터 신호에 의해 제공된 리스트에 더해진다.
그러나, 전술한 바와 같이, 트랩이 TAKE_TRAP 신호에 의해 표시되는 것과 같이 수취되면, XICC_DV_C 신호는 논리적 XICC 레지스터로서 맵핑된 물리적인 레지스터의 컨텐트가 이때 이용가능하다는 것을 표시할 수 있으며, 또는 FXU_XICC_CURR_MATCH 신호 또는 FXAGU_XICC_CURR_MATCH 신호가 그러한 것을 표시할 수 있다. 상기와 같이 발생할때마다, WR_ENTRY 신호에 의해 식별된 엔트리는 XICC 대기 로직(828)에 의해, WAIT_FOR_XICC_VEC 벡터 신호에 의해 제공된 리스트에 더해지지 않는다.
또한, 전술한 바와 같이, 대응하는 트랩이 수취되는 시점에서 논리적 XICC 레지스터로 맵핑된 물리적 레지스터의 컨텐트가 차후 머신 사이클에서 유효하게 될 때, FXU_XICC_LATE_MATCH 또는 FXAGU_XICC_LATE_MATCH 신호는 이들 컨텐트가 기록되는 트랩 스택(820)의 엔트리를 식별한다. 도 52를 다시 참조하면, WAIT_FOR_XICC_VEC 벡터 신호는 계속해서 이러한 엔트리를 리스트하기 때문에, XICC 기록 로직(825)은 이러한 엔트리를 식별하는 대응 WR2_ENTRY_XICC 신호 또는 WR3_ENTRY_XICC 신호를 발생시킨다. 트랩 스택 유닛(815)의 RD/WR 제어 로직(822)은 FXU_XICC_DATA_F 또는 FXAGU_XICC_DATA_F 신호의 컨텐트(즉, 대응하는 트랩이 수취되는 시점에서, 논리적 XICC 레지스터로 맵핑된 물리적 레지스터의 컨텐트)를 대응하는 WR2_ENTRY_XICC 또는 WR3_ENTRY_XICC 신호에 의해 식별되는 트랩 스택(820)의 엔트리의 TSTATE 필드의 XICC 필드에 기록한다. 도 54를 다시 참조하면, 이러한 엔트리는 WAIT_FOR_XICC_VEC 벡터 신호에 의해 제공된 리스트로부터 XICC 대기 로직(828)에 의해 제거된다.
따라서, 각 트랩이 수취되고 아직 리턴되지 않은 동안, XICC 획득 로직은 트랩이 수취될때 논리적 XICC 레지스터로서 맵핑된 물리적 레지스터의 컨텐트가 이용가능하게될때 이들 컨텐트가 트랩 스택(820)의 어느 엔트리에 기록되는지를 결정할 수 있다. 결과적으로, 이들 컨텐트가 트랩이 수취될때 임의의 트랩에 대해 여전히 이용가능하지 않을 수 있어도, 내포된 트랩은 수취될 수 있다. 다시 말해, XICC 획득 로직(823)은 모든 대응하는 트랩 상태(TSTATE) 데이타가 이용가능하기 전에 트랩이 수취될 수 있도록 하는 메카니즘이다.
그러나, 트랩이 수취된 상태로부터의 리턴시, 트랩이 수취될때 논리적 XICC 레지스터로서 맵핑되는 물리적 레지스터의 컨텐트는 트랩 스택(820)의 대응하는 엔트리에 기록되어 있어야 한다. 그 이유는 RETRY 또는 DONE 명령이, 이들 컨텐트가 논리적 XICC 레지스터로서 현행 맵핑된 물리적인 레지스터에 다시 기록되는 것을 요구하기 때문이다.
도 54를 참조하면, 이를 확실하게 하기 위해, XICC 대기 로직(828)은 멀티플렉서(857)를 포함한다. 현행 트랩이 수취되는 트랩 레벨로 현행 맵핑된 트랩 스택(820)의 엔트리를 식별하는 RD_ENTRY 신호에 응답하여 멀티플렉서는 WAIT_FOR_XICC 신호와 같이 이러한 엔트리에 대응하는 WAIT_FOR_XICC_VEC 벡터 신호의 비트를 출력한다. 따라서, 이 신호는 현행 트랩이 수취되는 트랩 레벨로 현행 맵핑된 트랩 스택(820)의 엔트리가, 트랩이 수취될때 논리적 XICC 레지스터로서 맵핑된 물리적인 레지스터의 컨텐트를 대기하고 있는지의 여부를 나타낸다.
도 45를 참조하면, XICC 획득 로직(823)은 WAIT_FOR_XICC 신호를 ISU(200)에 출력한다. 만약 이러한 신호가 어서트되면, 신호가 더 이상 어서트되지 않을 때까지, ISU(200)은 RETRY 또는 DONE 명령을 이슈하지 않는다.
ISU(200)가 결국 RETRY 또는 DONE 명령을 어서트하면, DONE 명령이 이슈되었는지의 여부를 표시하는 신호 및, RETRY 명령이 이슈되었는지의 여부를 표시하는 신호를 포함하는 DONE_RETRY_IS 신호를 출력한다.
도 47를 참조하면, 판독 멀티플렉서(835)는 현행 TL 값에 대응하는 RENAME_MAP 신호를 RD_ENTRY 신호로서 출력한다. 그리고 도 45를 참조하면, 트랩 스택 유닛(815)의 RD/WR 제어 로직(822)은, DONE_RETRY_IS 신호가 DONE 또는 RETRY 명령이 이슈되었다고 표시하면, TPC, TNPC, ASI, CWP, PSTATE 및 XICC 값을 RD_ENTRY 신호에 의해 식별된 기억 엔트리로부터 판독한다.
도 17를 참조하면, ASI, CWP 및 PSTATE 값은 DONE_RETRY_IS 신호에 응답하여, 제어 레지스터 파일(800)의 RW/WR/UPDATE 로직(816)에 의해 그 대응하는 레지스터에 기록된다.
또한, 도 45에 도시된 바와같이, TPC 및 TNPC 값은 RD_TPC_TNPC 신호로 BRB(59)에 제공된다. 따라서, BRB(59)는 이 값을 다음 일련의 명령을 인출하기 위해 PC 및 NPC 값을 형성하는데 사용한다.
결국, XICC 값은 RD_XICC 신호로 DFB(62)에 제공된다. 도 8를 참조하면, DONE_RETRY_IS 신호에 응답하여, CCRFRN(610)은 논리적 XICC 레지스터를 물리적 레지스터로 맵핑한다. 따라서, CCRFRN(610)이 트랩 스택 유닛(815)으로부터 XICC 데이타를 수신할 때, 새롭게 맵핑된 물리적 레지스터에 그것을 기억한다.
더욱이, 당업자라면, FXU(601) 및 FXAGU(602)가 논리적 XICC 레지스터를 수정하는 고정소수점 명령을 실행할 수 있는 하나 이상의 실행 유닛을 각각 가질 수 있음을 이해한다. 이러한 경우, XICC 획득 로직(823)은 트랩 스택(820)을 적절하게 갱신하기 위해 이미 설명된 논리적 레지스터에, 트랩이 수취될때 논리적 XICC 레지스터로서 맵핑된 물리적 레지스터의 컨텐트를 복사한다.
또한, 당업자라면 XICC 획득 로직(823)의 개념은, 컨텐트가 트랩이 수취될때 이용가능하지 않을 수 있지만 트랩 스탭에 기록될 필요가 없으며 레지스터 리네임 처리(즉, 물리적 레지스터의 논리적 레지스터로의 맵핑)가 수행되어진 다른 타입의 레지스터로 확대될 수 있음을 이해한다.
본 명세서에서 언급된 모든 문헌 및 특허 출원은 참조로 여기에 그 동일한 범위로 통합되었으며 이 각 개개의 문헌 및 특허 출원은 명확하고 개별적으로 나타내었다.
당업자는 첨부된 청구 범위의 사상이나 그 범위를 벗어나지 않고 많은 수정 및 변형이 만들어 질 수 있음을 이해한다.

Claims (245)

  1. 데이타 기억 장치, 명령 이슈 유닛, 명령 실행 유닛, 및 명령 이슈 및 실행 스케줄러를 구비하며 명령 유닛에 의해 이슈되는 명령을 실행하는 중앙 처리 장치의 프로세서에서 추측 명령 실행을 트래킹하는 방법에 있어서,
    데이타 기억 장치내 데이타 구조를 규정하는 단계와;
    상기 명령 이슈 유닛에 의해 이슈되는 각각의 명령에 식별용 태그를 할당하는 단계와;
    상기 할당된 태그에 기초하여 이슈되는 각각의 명령과 데이타 구조내 기억되어 있는 활동 비트를 관련시키는 단계와;
    상기 명령이 이슈될 때 상기 데이타 구조내 상기 활동 비트를 세팅하는 단계와;
    상기 명령이 에러없이 실행을 완료할때 상기 데이타 구조내 활동 비트를 클리어하는 단계를 포함하는 것을 특징으로 하는 명령 실행 트래킹 방법.
  2. 제1항에 있어서, 상기 데이타 구조는 n-어드레셔블 위치 0, 1, 2, ..., n-2, n-1를 갖는 원형 데이타 구조로 구성되며, 상기 어드레셔블 위치 n-1은 어드레셔블 위치 0에 논리적으로 근접하고, 각각의 이슈된 명령과 상기 데이타 구조내 활동 비트를 관련시키는 상기 단계는 각각의 이슈된 명령과 n-위치들 중 고유 위치내 활동 비트를 관련시키는 단계를 포함하는 것을 특징으로 하는 명령 실행 트래킹 방법.
  3. 제2항에 있어서, 상기 식별용 태그는 숫자로 나타낸 일련 번호이고, 각각의 이슈 명령에 식별용 태그를 할당하는 상기 단계는 각각의 명령이 이슈되는 것과 같이 순차적으로 이슈되는 명령에 단조롭게 증가하는 일련 번호(모듈로-n)를 할당하는 단계를 포함하는 것을 특징으로 하는 명령 실행 트래킹 방법.
  4. 제3항에 있어서, 관련 활동 비트의 상태에 기초하여 이슈되는 각각의 명령 실행 상태를 트랙킹하는 단계와;
    활동 명령과 관련된 최소 일련 번호를 식별하도록 순서를 증가시키는 단조로운 일련 번호로 원형 데이타 구조내 각각의 활동 비트를 평가하여, 최초 이슈되어 계속 활동중인 명령을 판정하는 단계와;
    상기 명령들이 복구되지 않도록 상기 최소 활동 일련 번호와 관련된 일련 번호 보다 더 작은 일련 번호를 갖는 명령을 커미트하는 단계와;
    상기 식별된 최소 일련 번호에 기초하여 상기 커미트된 명령에 할당되는 프로세서 자원을 리클레임하는 단계를 포함하는 것을 특징으로 하는 명령 실행 트래킹 방법.
  5. 제4항에 있어서, 상기 리클레임되는 자원은 리타이어되는 명령과 관련된 데이타 구조내 상기 기억 위치 및 상기 명령 일련 번호를 포함하는 것을 특징으로 하는 명령 실행 트래킹 방법.
  6. 추측 비순위 실행 프로세서에서 명령 상태를 트랙킹하는 방법에 있어서,
    각각 이슈되는 명령에 대한 활동 상태 데이타를 기억하는 다수의 기억 위치를 갖는 상기 프로세서내에 어드레셔블 데이타 구조를 제공하는 단계와;
    각각 이슈된 명령에 식별용 태그를 할당하는 단계와;
    다수의 기억 위치 중 한 위치와 각각 할당된 태그를 관련시키는 단계와;
    특정 명령이 이슈될 때에 활성 상태로 특정 이슈 명령을 식별하는 데이타를 기억하는 단계와;
    상기 특정 명령의 완료를 검출하는 단계와;
    상기 특정 명령이 소정 세트의 실행 조건중 임의의 한 조건의 발생없이 실행을 완료할 때 비활성 상태로 상기 특정 명령을 식별하는 데이타를 기억하는 단계를 포함하는 것을 특징으로 하는 명령 상태 트래킹 방법.
  7. 제6항에 있어서, 상기 소정 세트의 실행 조건이 명령 실행 에러, 예외, 하드웨어 장애, 분기 명령 예측 오류를 포함하고, 에러 조건이 검출되는 것을 특징으로 하는 명령 상태 트래킹 방법.
  8. 명령 이슈 스케줄러 및 명령 이슈 유닛을 갖는 추측 비순위 프로세서에서 이슈된 명령 상태를 트랙킹하는 방법에 있어서,
    명령 활동 상태 데이타를 기억하는 n-위치 데이타 구조를 제공하는 단계와;
    n-위치 데이타 구조에서 각각의 n개 위치에 대한 고유 기억 위치 어드레스를 규정하는 단계와;
    고유 기억 위치 어드레스 중 한 어드레스와 상기 명령 이슈 유닛에 의해 이슈되는 각각의 명령을 관련시키는 단계와;
    상기 명령이 활성 상태임을 나타내는 명령과 관련된 상기 데이타 구조 위치에 데이타 구조내 활동 상태 데이타를 기억하는 단계와;
    명령 실행 완료 및 각각 이슈된 명령에 대한 상기 명령 실행 완료와 관련된 임의의 에러 상태를 검출하는 단계와;
    상기 명령이 에러없이 완료한후에는 지금 비활성 상태인 명령을 나타내는 관련된 기억 위치에서 활동 상태 데이타를 갱신하고, 상기 명령이 에러 있이 완료한후에는 계속 활성 상태인 명령을 나타내는 상기 관련된 기억 위치에 최초 활동 데이타를 보유하는 단계와;
    상기 명령 이슈 스케줄러가 그당시 비활성 상태인 이전에 이슈된 명령의 상태와 상관없이 실행하기 위한 추가 명령을 스케줄링하도록 명령 이슈 스케줄러에 명령 활동 상태 데이타를 전달하는 단계를 포함하는 것을 특징으로 하는 명령 상태 트래킹 방법.
  9. 제8항에 있어서, 프로세서내 에러 조정 유닛에 임의의 한 명령의 실행 완료와 관련된 상기 에러 상태를 전달하는 단계와;
    상기 전달된 에러 상태에 응하여 스케줄링한 명령 이슈 및 실행 시퀀스를 리네임하는 단계를 추가로 포함하는 것을 특징으로 하는 명령 상태 트래킹 방법.
  10. 명령을 이슈하는 명령 이슈 유닛과 프로세서내 데이타를 기억하는 데이타 기억 장치를 구비한 추측 비순위 실행 프로세서에서 정규 프로세서 상태를 트래킹하는 방법에 있어서,
    상기 프로세서의 데이타 기억 장치에서 n개 주소지정 데이타 기억 위치를 갖는 제1 데이타 구조를 규정하는 단계와;
    이슈된 명령에 차후 지정할 다수의 고유 식별용 태그를 할당하는 단계와;
    상기 명령이 이슈될 때 각각의 명령에 상기 고유 식별용 태그중 하나를 지정하는 단계와;
    상기 프로세서내 제1 데이타 구조에서 상기 어드레셔블 기억 위치중 하나와 각각의 태그를 관련시키는 단계와;
    각각의 명령에 대하여 각각의 인스트러션에 대한 명령 활동 상태 변화에 따라 상기 명령과 관련된 기억 위치에 기억된 데이타를 갱신하는 단계와;
    상기 기억 위치에 다수의 포인터를 유지하고 상기 명령 활동 상태 변화에 따라 상기 포인터를 이동시키는 단계를 포함하는 것을 특징으로 하는 프로세서 상태 트래킹 방법.
  11. 제10항에 있어서, 상기 다수의 포인터 유지 단계는,
    상기 어드레셔블 기억 위치에 기억되는 데이타를 평가하여 다수의 이슈된 명령 각각에 대한 명령 상태를 판정하는 단계와;
    상기 어드레셔블 기억 위치에 기억된 데이타에 기초하여 소정의 실행 상태 세트로부터 선택된 특정 실행 상태에 달하는 관련된 식별용 태그로 명령을 식별하는 다수의 상이한 프로세서 조건 지시자를 처리하는 단계와;
    상기 프로세서내 제3 데이타 기억 장치에 포인터로서 상기 프로세서 조건 지시자를 기억하는 단계를 포함하고,
    상기 명령 활동 상태 변화에 따라 상기 포인터를 이동시키는 단계는,
    소정의 시간 동안, 상기 평가 단계, 상이한 프로세서 조건 지시자를 처리하는 상기 단계, 및 상기 기억 단계를 반복 처리하여 상기 프로세서 조건 지시자를 갱신하는 단계를 포함하는 것을 특징으로 하는 프로세서 상태 트래킹 방법.
  12. 제10항에 있어서, 상기 소정의 실행 상태 세트는 최후 이슈된 명령, 최후 커미팅된 명령, 및 최후 리타이어된 명령로 구성되는 것을 특징으로 하는 프로세서 상태 트래킹 방법.
  13. 제10항에 있어서, 상기 소정의 실행 상태 세트는 최후 비메모리 관련 명령 및 최후 분기 명령을 추가로 포함하는 것을 특징으로 하는 프로세서 상태 트래킹 방법.
  14. 제10항에 있어서, 상기 활동 상태 데이타는 상기 명령이 이슈될때 세팅되고 실행이 에러없이 완료할때 클리어되는 활동 비트를 포함하는 것을 특징으로 하는 프로세서 상태 트래킹 방법.
  15. 제14항에 있어서, 상기 다수의 포인터는,
    상기 최후 이슈되는 명령을 가리키는 제1 포인터와,
    에러없이 완료되어온 순차적으로 초기에 이슈되는 명령에 대하여, 에러없이 완료되어온 최후 명령인 최후 커미팅된 명령을 가리키는 제2 포인터를 포함하는 것을 특징으로 프로세서 상태 트래킹 방법.
  16. 제15항에 있어서, 할당된 프로세서 자원을 리클레임하는 최후 명령인 최후 리클레임 명령을 가리키는 제3 포인터를 추가로 포함하는 것을 특징으로 하는 프로세서 상태 트래킹 방법.
  17. 제16항에 있어서, 각각의 상기 식별용 태그는 단조롭게 증가하는 시퀀스의 숫자 일련 번호중 하나이고 상기 제1 데이타 구조의 상기 어드레셔블 기억 위치는 상기 일련 번호에 의해 어드레싱되는 것을 특징으로 하는 프로세서 상태 트래킹 방법.
  18. 제17항에 있어서, n개의 어드레셔블 데이타 기억 위치를 갖는 상기 제1 데이타 구조는 원형 데이타 구조이고, 어드레스 n으로부터의 포인터 증가로 상기 포인터가 어드레스 0에 위치하도록 더 큰 값의 일련 번호에 관한 상기 포인터의 진행은 모듈로-n 산술로 이루어지는 것을 특징으로 하는 프로세서 상태 트래킹 방법.
  19. 제15항에 있어서, 상기 명령 활동 상태 변화에 응하여 상기 포인터를 이동시킴으로써 상기 포인터를 유지하는 단계는,
    모든 이슈된 명령에 대한 하나의 일련 번호만큼 더 큰 명령 일련 번호 앞으로 상기 제1 이슈된 명령 포인터를 진행시키는 단계와;
    각각의 기억 위치 및 제1 소정의 규칙에 적합한 사용 비트 상태에 관한 일련 번호 연속 평가에 기초하여 더 큰 명령 일련 번호(모듈로-n) 앞으로 상기 제2 커미팅된 명령 포인터를 진행시키지만, 상기 제1 포인터 보다 먼저 상기 제2 포인터를 진행시키지 않는 단계를 포함하는 것을 특징으로 하는 프로세서 상태 트래킹 방법.
  20. 제19항에 있어서, 상기 제1 소정의 규칙은,
    모든 소정수의 머신 클럭 사이클 동안, 최저 어드레스 위치의 모든 활동 상태 비트가 비활성 상태 0 인 최고 데이타 기억 위치 어드레스 보다 더 크지않지만 그 머신 사이클에서의 상기 제1 포인터 어드레스 보다는 더 큰 새로운 어드레스 위치 앞으로 상기 제2 포인터를 진행시키지 않는 단계를 포함하는 것을 특징으로 하는 프로세서 상태 트래킹 방법.
  21. 제19항에 있어서, 상기 제2 소정수의 규칙은,
    모든 소정수의 머신 클럭 사이클 동안에 최저 어드레스 위치의 모든 활동 상태 비트가 비활성 상태 0인 최고 데이타 기억 위치 어드레스 보다 더 크지 않지만 그 머신 사이클에서의 상기 제2 포인터 어드레스 보다는 더 큰 새로운 어드레스 위치 앞으로 상기 제3 포인터를 진행하지 않는 단계를 포함하는 것을 특징으로 하는 프로세서 상태 트래킹 방법.
  22. 제19항에 있어서, 명령 이슈, 커미트먼트, 리타이어먼트의 결과로서 상기 포인터가 이동되는 것을 특징으로 하는 프로세서 상태 트래킹 방법.
  23. 제19항에 있어서, 상기 제2 및 제3 포인터는 예외, 분기 명령 예측 오류 및 에러 조건이 검출되는 명령 포인트를 지나지 않는 것을 특징으로 하는 프로세서 상태 트래킹 방법.
  24. 데이타 기억 수단 및 명령 이슈, 디스패치, 실행 및 리타이어먼트를 스케줄링하는 수단을 구비한 추측 비순위 실행 프로세서에서 명령 상태를 트랙킹하는 방법에 있어서,
    상기 프로세서에서 손쉽게 사용하는 명령의 최대수를 규정하는 n개의 고유 명령 일련 번호를 할당하는 단계와;
    상기 프로세서내 상기 데이타 기억 수단에서 n개의 독립 어드레셔블 기억 위치를 갖는 데이타 구조를 규정하는 단계와;
    상기 어드레셔블 기억 위치중 하나와 각각의 상기 할당된 일련 번호를 관련시키는 단계와;
    식별용 태그로서 각각의 상기 이슈된 명령에 상기 일련 번호중 하나를 지정하는 상기 프로세서에 의해 이슈되는 명령에 응하여, 고유 시간 대응이 각각의 이슈된 명령과 유일한 하나의 상기 기억 위치 사이에서 설정되도록 상기 명령이 실행을 완성하고 리타이될 때까지 상기 지정을 유지시키는 단계를 포함하는 것을 특징으로 하는 프로세서 상태 트래킹 방법.
  25. 제24항에 있어서, 상기 명령이 이슈될 때 상기 명령과 관련된 상기 데이타 기억 위치에 활성 상태 지시기를 기억시키는 단계와;
    상기 명령이 에러없이 실행하는 경우 상기 명령과 관련된 상기 데이타 기억 위치에 비활성 상태 지시기를 기억시키는 단계와;
    상기 어드레셔블 기억 위치를 가리키는 다수의 머신 포인터를 규정하는 단계와;
    명령 활동 상태 및 소정의 규칙에 응하여 상기 다수의 머신 포인터를 이동시킴으로써 각각의 명령에 할당된 머신 자원 및 명령을 트래킹하는 단계를 추가로 포함하는 것을 특징으로 하는 프로세서 상태 트래킹 방법.
  26. 제25항에 있어서, 상기 데이타 기억 위치는 다수 비트 레지스터내에 있으며, 상기 활성 상태 지시기는 1-비트이고, 상기 비활성 상태 지시기는 0-비트인 것을 특징으로 하는 프로세서 상태 트래킹 방법.
  27. 제25항에 있어서, 상기 다수의 머신 포인터는,
    최후 이슈된 명령을 가리키는 제1 포인터와,
    에러없이 완료하는 모든 순위 순차적으로 초기 이슈된 명령에 대하여 에러없이 실행하는 최후 명령인 최후 커미팅된 명령을 가리키는 제2 최후 커미팅된 명령 포인터와;
    리클레임되는 상기 프로세서에 의해 명령에 할당되는 모든 머신 자원 및 모든 순위 순차적으로 초기 이슈되는 명령에 대하여 최후 명령을 가리키는 제3 리타이어 및 리클레임 포인터를 포함하는 것을 특징으로 하는 프로세서 상태 트래킹 방법.
  28. 제27항에 있어서, 상기 데이타 구조는 원형 구조이고, 이 원형 구조는 어드레셔블 위치 n-1이 위치 0에 논리적으로 이웃하도록 n-어드레셔블 위치 0, 1, 2, ..., n-2, n-1을 가지며, 상기 일련 번호는 연속적인 정수이고, 상기 어드레셔블 기억 위치중 하나와 상기 일련 번호 각각을 관련시키는 상기 단계는 상기 원형 레지스터내 제1 비트 포지션과 최저 일련 번호를 관련시키고 상기 원형 레지스터내 n번째 비트 포지션과 상기 최고 일련 번호를 관련시키는 단계를 포함하는 것을 특징으로 하는 프로세서 상태 트래킹 방법.
  29. 제28항에 있어서, 상기 다수의 머신 포인터를 이동시킴으로써 상기 명령 상태 및 각각의 명령에 할당된 머신 자원을 트랙킹하는 단계는,
    제1 명령을 이슈하기 이전에 동일 기억 위치 어드레스에 관한 상기 제1, 제2 및 제3 포인터를 초기화하는 단계와;
    이슈된 모든 명령에 대한 하나의 일련 번호만큼 더 큰 명령 일련 번호(모듈러-n) 앞으로 상기 제1 이슈된 명령 포인터를 진행하는 단계와;
    각각의 기억 위치 및 제1 소정의 규칙에 대하여 활성-비트 상태의 일련 번호 연속 평가에 기초하여 더 큰 명령 일련 번호(모듈로-n) 앞으로 상기 제2 커미트된 명령을 진행하지만 상기 제1 포인터를 지나서 상기 제2 포인터를 진행하지 않는 단계와;
    각각의 위치 및 제2 소정의 규칙에 대하여 활성-비트 상태의 일련 번호 연속 평가에 기초하여 더 큰 명령 일련 번호(모듈로-n) 앞으로 상기 제3 리타이어된 포인터를 진행하지만 상기 제2 포인터를 지나서 상기 제3 포인터를 진행하지 않는 단계를 포함하며,
    어드레스 n-1로부터의 포인터 증가로 상기 포인터가 어드레스 n에 위치되고 어드레스 n으로부터의 상기 포인터 증가로 상기 포인터가 어드레스 0에 위치되도록 더 큰 일련 번호에 관한 상기 포인터의 상기 진행 단계는 상기 원형 데이타 구조에서 달성되는 것을 특징으로 하는 프로세서 상태 트래킹 방법.
  30. 제29항에 있어서, 상기 제1 소정의 규칙은,
    모든 소정수의 머신 클럭 사이클 동안에, 비활성 상태 0 인 모든 활동 상태 비트에 대하여 최고 데이타 기억 위치 어드레스 보다 더 크지 않지만 그 머신 사이클에서의 상기 제1 포인터 어드레스 보다 더 크지 않은 새로운 어드레스 위치 앞으로 상기 제2 포인터를 진행하는 단계를 포함하며, 상기 제2 소정의 규칙은,
    모든 소정수의 머신 클럭 사이클 동안, 최저 어드레스 위치에서 비활성 상태인 모든 활동 상태 비트에 대하여 최고 데이타 기억 위치 어드레스 보다 더 크지 않고 그 머신 사이클에서의 상기 제2 포인터 어드레스 보다 더 크지 않은 새로운 어드레스 위치 앞으로 상기 제3 포인터를 진행하는 단계를 포함하는 것을 특징으로 하는 프로세서 상태 트래킹 방법.
  31. 제30항에 있어서, 상기 새로운 어드레스 위치는 상기 상태 활동 비트의 부울 연산에 기초하여 판정되는 것을 특징으로 하는 프로세서 상태 트래킹 방법.
  32. 제30항에 있어서, 상기 제1 소정의 규칙은 상기 제2 포인터가 상기 소정수의 머신 사이클 동안에 진행될 수 있는 어드레스수를 리미트하는 단계를 추가로 포함하고, 상기 제2 소정의 규칙은 상기 소정수의 머신 사이클 동안에 상기 제3 포인터가 상기 제1 어드레스의 최대수 보다 작은 제2 어드레스의 최대수까지 진행될 수 있는 어드레스수를 리미트하는 단계를 추가로 포함하는 것을 특징으로 하는 프로세서 상태 트래킹 방법.
  33. 제30항에 있어서, 상기 제2 및 제3 포인터는 예외, 분기 명령 예 오류 및 에러 조건이 검출되는 인스트럭 포인트를 지나지 않는 것을 특징으로 하는 프로세서 상태 트래킹 방법.
  34. 데이타 기억 수단, 적어도 하나의 명령 실행 유닛 및 명령 이슈 유닛을 구비한 프로세서에서 정규 상태를 유지하는 장치에 있어서,
    각각의 이슈된 명령에 대하여 상기 실행 유닛으로부터 명령 상태를 수신하는 수단과;
    상기 프로세서에서 명령의 이슈, 실행, 완료 및 리타이어먼트 상태에 기초하여 머신 자원의 이용가능한 정보를 트랙킹하여 상기 이용가능한 정보를 상기 명령 이슈 유닛에 전달하는 수단과;
    상기 명령 유닛에서, 상기 자원의 이용가능한 정보에 응하여, 머신 자원이 또다른 명령을 처리할 수 있는 경우 명령 이슈를 계속하고, 처리할 수 없는 경우에는 또다른 명령 이슈를 지정하기 위한 수단을 포함하는 것을 특징으로 하는 정규 상태 유지 장치.
  35. 제34항에 있어서, 머신 자원의 이용가능한 정보를 트랙킹하는 상기 수단은,
    각각의 이슈된 명령에 대하여 이슈, 예외, 완료 및 리타이어먼트 상태 정보를 기억하는 상기 데이타 기억 수단내에 규정되는 데이타 구조와;
    최후 이슈되는 명령을 판정하고, 에러없이 완료되는 순차적으로 초기 이슈되는 모든 명령에 대하여 에러없이 완료되는 최후 명령인 최후 커미티된 명령을 판정하고, 할당된 프로세서 자원이 리클레임되는 최후 명령인 최후 리클레임 명령을 판정하는 논리 수단을 포함하는 것을 특징으로 하는 정규 상태 유지 장치.
  36. 제35항에 있어서, 상기 명령 이슈 유닛에 의해 이슈되는 예측된 분기 명령을 식별하는 수단과;
    잘못예측되어 실행된 예측 분기 명령을 검출하여 상기 잘못예측된 분기로부터의 회복을 초기화하는 수단과;
    명령 실행 예외를 처리하는 수단을 포함하는 것을 특징으로 하는 정규 상태 유지 장치.
  37. 데이타 기억 장치, 명령 이슈 유닛, 명령 실행 유닛 및 명령 이슈 및 실행 스케줄러를 구비한 중앙 처리 장치에서, 상기 프로세서의 추측 명령 실행을 트랙킹하는 장치에 있어서,
    상기 데이타 기억 장치에서 규정되는 데이타 구조와;
    명령 이슈 동작에 응하여 이슈 유닛에 의해 이슈되는 각각의 명령에 식별용 태그를 지정하는 수단과;
    상기 지정된 태그에 기초하여 각각의 상기 이슈된 명령과 관련된 상기 데이타 구조에 기억된 활동 비트를 관련하는 수단과;
    상기 명령이 이슈되는 경우 데이타 구조에서 상기 활동 비트를 세팅하는 수단과;
    상기 명령이 에러없이 실행을 완료하는 경우 상기 데이타 구조내 상기 활동 비트를 클리어하는 수단을 포함하는 것을 특징으로 하는 추측 명령 트래킹 장치.
  38. 내부 데이타 기억 장치와, 명령 디코딩 유닛을 구비하며 외부 메모리와 전달하는 추측 비순위 실행 프로세서에서, 정규 예외 모델을 유지시키는 로딩 및 기억 명령을 포함하는 메모리 관련 명령을 트랙킹하고 동적으로 스케줄링하는 방법에 있어서,
    상기 프로세서에 의한 실행을 위해 다수의 명령을 이슈하는 단계와;
    상기 다수의 이슈된 명령이 추측 이슈되는 명령인 지를 식별하는 단계와;
    상기 내부 데이타 기억 장치내에 각각의 상기 식별된 추측 이슈와 관련된 추측 실행 지시자를 기억시키는 단계와;
    상기 이슈되는 명령이 외부 메모리와 관련되는지를 판정하는 단계와;
    상기 내부 데이타 기억 장치내에 각각의 상기 판정된 메모리 관련 명령과 관련된 메모리 관련 명령 지시자를 기억시키는 단게와;
    상기 명령이 이슈된 후에 상기 다수의 명령 각각에 관한 실행 활동 상태를 모니터링하는 단계와;
    각각의 이슈된 명령 실행 동안에 어떤 에러 조건이 발생했는지를 어서팅하여, 실행 동안에 에러가 있는 각각의 명령에 관한 에러 상태를 나타내는 에러 조건 지시자를 발생시키는 단계와;
    상기 이슈된 명령의 실행 상태를 트래킹하는 단계와;
    실행되지 않는 명령을 제외한 다른 이슈된 명령의 실행 상태에 기초하여 순차적으로 초기 이슈되는 비메모리 관련 명령의 실행 비순위 헤드에 대하여 상기 판정된 메모리 관련 명령 중 특정 명령을 스케줄링하는 단계를 포함하는데, 상기 실행 상태는 추측 이슈된 명령인 비메모리 관련 명령의 식별과, 소정의 실행 완료 상태의 비메모리 관련 명령의 식별을 포함하는 것을 특징으로 하는 명령 트래킹 및 스케줄링 방법.
  39. 제38항에 있어서, 상기 실행 상태를 트래킹하는 단계는,
    명령 일련 번호에 의해 각각의 명령을 식별하는 단계와;
    최후 이슈되는 명령의 일련 번호에 대응하는 포인터값을 상기 레지스터 중 제1 레지스터에 기억시키는 단계와;
    최후 비활성화된 명령의 일련 번호에 대응하는 포인터값을 상기 레지스터 중 제2 레지스터에 기억시키는 단계를 포함하며, 상기 비활성화된 명령은 실행 완료하지만 기록될 상태 결과를 가지는 않는 명령이고;
    최후 커미트된 명령의 일련 번호에 대응하는 포인터값을 상기 레지스터중 제3 레지스터에 기억시키는 단계와;
    최후 리타이어된 명령의 일련 번호에 대응하는 포인터값을 상기 레지스터중 제1 레지스터에 기억시키는 상기 일련 번호에 대응하는 포인터값을 상기 레지스터중 제4 레지스터에 기억시키는 단계와;
    최후 예측된 분기 명령의 일련 번호에 대응하는 포인터값을 상기 레지스터중 제5 레지스터에 기억시키는 단계와;
    최후 비메모리 관련 명령의 일련 번호에 대응하는 포인터값을 상기 레지스터중 제6 레지스터에 기억시키는 단계와;
    상기 제1, 제2, 제3, 제4, 제5 및 제6 포인터값을 평가함으로써 상기 프로세서의 상태를 어서팅하는 단계를 포함하는 것을 특징으로 하는 명령 트래킹 및 스케줄링 방법.
  40. 프로세서 내부에 배치된 레지스터를 포함하는 데이타 기억 수단과, 상기 프로세서 외부에 배치된 메모리, 명령 이슈 유닛 및 명령 실행 유닛을 구비하는 추측 비순위 실행 프로세서에서, 이 프로세서의 정규 아키텍쳐 상태를 유지시키는 동안에 짧은 대기시간 명령의 아키텍쳐 상태 비순위 헤드를 수정하는 긴 대기시간 명령을 동적으로 스케줄링하는 방법에 있어서,
    에러없이 실행을 완료하고 전혀 복구될 필요가 없는 최후 연속 명령을 식별하는 단계와;
    실행이 잘못예측된 경우 실행 복구되어야만 하는 명령에 대하여 가장 최초로 순차적으로 정해진 추측 이슈되는 미결정 예측 제어 전송 명령을 식별하는 단계와;
    에러없이 실행 완료하여 결코 복구될 필요가 없는 상기 식별되는 순차적으로 최후 연속 명령과, 실행이 잘못예측된 경우 복구되어야만 하는 명령에 대하여 상기 식별되는 순차적으로 최초 연속 이슈되는 미결정의 예측된 제어 전송 명령 사이에서 순차적으로 이슈되는 순차적으로 정해진 임의 긴 대기시간 명령을 식별하는 단계를 포함하는데, 상기 긴 대기시간 명령은 미리지정된 소정 세트의 명령과 이슈된 명령을 비교함으로써 식별되며;
    즉각 실행에 대하여 상기 식별된 긴 대기시간 명령을 스케줄링하는 단계를 포함하는데,
    상기 긴 대기시간 명령은 동적으로 이슈되고 정규 상태는 잘못예측되어온 추측 이슈되는 중재 제어 전송 명령과 상관없이 실행을 위해 스케줄링될 수 있도록 상기 긴 대기시간 명령만을 그리고 그렇지않으면 실행 예외를 발생할 수 있는 명령을 실행하기 위하여 스케줄링함으로써 유지되는 것을 특징으로 하는 스케줄링 방법.
  41. 제40항에 있어서, 에러없이 실행 완료하고 결코 복구될 필요가 없는 순차적으로 정해진 연속 최후 명령을 식별하는 상기 단계 이전에,
    n-어드레셔블 위치 0, 1, 2, ..., n-2, n-1을 갖는 원형 모듈로 n-데이타 구조를 규정하는 단계를 포함하며, 상기 어드레셔블 위치 n-1은 상기 데이타 기억 수단에서 어드레셔블 위치 0과 논리적으로 이웃하고;
    각각의 명령이 이슈될때 각각의 차후 이슈되는 명령에 단조롭게 증가하는(모듈로-n) 숫자 일련 번호를 지정하는 단계와;
    상기 태그에 기초하여 각각 이슈된 명령과 상기 데이타 구조내 활동 상태 지시자를 관련시키는 단계와;
    모든 명령에 대하여, 상기 명령이 이슈될때 상기 명령의 이슈를 나타내도록, 각각 이슈되는 명령으로 상기 데이타 구조내 상기 n개의 위치중 고유 위치에 제1 엘리먼트인 상기 활동 상태 지시자를 세팅하는 단계와;
    긴 대기시간 명령에 대하여, 상기 명령이 이슈될때 상기 명령이 긴 대기시간 명령임을 나타내도록 제2 엘리먼트인 상기 활동 상태 지시자를 세팅하는 단계와;
    예측된 결과에 기초하여 추측 이슈되는 명령에 대하여, 상기 명령이 이슈될때 상기 명령이 추측 이슈된 명령임을 나타내도록 엘리먼트인 상기 활동 상태 지시자를 세팅하는 단계와;
    상기 명령이 에러없이 실행할때 에러없이 상기 명령이 완료됨을 나타내도록 상기 데이타 구조내 상기 활동 상태 지시자를 클리어하는 단계와;
    에러없이 실행한 상기 순차적으로 정해진 최후 연속 명령을 포함하는 각각 이슈된 명령에 대하여 실행 상태를 판정하도록 다수의 이슈된 명령에 대하여 상기 활동 상태 지시기를 평가함으로써 이슈된 명령의 실행 상태를 트랙킹하는 단계를 포함하는데, 상기 순위 순차적으로 초기 연속 미결정 예측 명령, 및 상기 긴 대기시간 명령은 상기 식별된 최후 연속 에러없이 완료된 명령과 상기 식별된 최초 미결정 예측된 명령 사이에 순차적으로 정해지는 것을 특징으로 하는 스케줄링 방법.
  42. 제41항에 있어서, 에러없이 실행하고 결코 복구될 필요가 없는 순위 순차적으로 최후 연속 명령을 식별하는 단계는 상기 데이타 구조내 엔트리를 가리키는 제2 포인터를 설정하는 단계를 포함하고, 최후 비활성된 명령을 나타내며, 상기 최후 비활성화된 명령은 에러없이 완료되는 순위 순차적인 명령이고, 모든 이전의 순위 명령 또한 에러없이 완료되는 곳에서 상기 제2 포인터에 의해 식별되는 명령 보다 이른 순위 순차적인 명령은 분기 예측 오류및 예외와 상관없이 실행가능하고;
    복구되어야 하는 실행에 대하여 최초 순위 순차적으로 추측 미결정의 예측 제어 전송 명령을 식별하는 상기 단계는 상기 데이타 구조내 엔트리를 가리키는 제1 포인터(PBSN)을 설정하는 단계를 포함하고, 최초 순위 미결정 분기 명령을 나타내고, 상기 제1 포인터에 의해 식별되는 명령 보다 이른 순위 명령은 분기 예측 오류과 상관없이 실행가능하고;
    상기 식별된 최후 연속 에러없이 완료되는 명령과 상기 식별된 최초 미결정 예측 제어 전송 명령 사이에서 순위 순차적으로 임의의 긴 대기시간 명령을 식별하는 단계는, 실행을 위해 스케줄링되도록 이용할 수 있는 경우에 상기 제2 포인터(CSN)와 상기 제3 포인터(NMCSN) 사이의 임의의 긴 대기시간 명령을 식별하지만, 상기 제2 포인터(NMCSN)와 상기 제1 포인터(PBSN) 사이의 임의의 길지않은 대기시간 명령을 실행을 위해 스케줄링되도록 이용할수 있을 경우에는 식별하지 못하는 단계를 포함하는 것을 특징으로 하는 스케줄링 방법.
  43. 제42항에 있어서, 각각의 상기 식별 단계는 각 머신 사이클동안 상기 상태 지시 엘리먼트들을 논리적으로 비교하는 부울 논리 비교 연산을 실행시킴으로써 그리고 상기 더 큰 숫자 일련 번호 식별용 태그에 대응하는 기억 위치로 각각의 상기 포인터를 진행함으로써 실행되는 것을 특징으로 하는 스케줄링 방법.
  44. 제40항에 있어서, 상기 긴 대기시간 명령은 상기 외부 메모리와 관련된 명령을 포함하는 것을 특징으로 하는 스케줄링 방법.
  45. 제44항에 있어서, 상기 외부 메모리와 관련한 상기 명령은 로딩 명령과 기억 명령을 포함하는 것을 특징으로 하는 스케줄링 방법.
  46. 프로세서의 외부 메모리와 상기 프로세서의 내부 레지스터를 구비한 추측 비순위 실행 프로세서에서, 상기 프로세서에서 정규 상태가 아닌 명령 관련 상기 내부 레지스터만의 아키텍쳐 상태 헤드를 수정하는 메모리 관련 명령을 스케줄링하는 방법에 있어서,
    다수의 명령상의 상태 정보를 기억하는 상기 프로세서내 레지스터의 데이타 구조를 설정하는 단계와;
    상기 데이타 구조내 엔트리를 가리키는 제1 예측 분기 명령 일련 번호(PBSN)를 설정하고, 최초 미결정 분기 명령과 분기 예측 오류와 상관없이 실행가능한 상기 제1 포인터에 의해 식별되는 명령 보다 이른 순위 순차적으로 명령을 나타내는 단계와;
    상기 데이타 구조내 엔트리를 가리키는 제2 포인터(CSN)를 설정하고 최후 비활성화된 명령을 가리키는 단계를 포함하는데, 상기 최후 비활성 명령은 에러없이 실행 완료하는 최후 순위 명령이고 모든 이전의 순위 명령은 또한 에러없이 실행 완료한 곳에서 상기 제2 포인터에 의해 식별되는 명령 보다 이른 순위 명령은 분기 예측 오류 및 예외와 상관없이 실행가능하며;
    상기 데이타 구조의 엔트리를 가리키는 제3 비메모리 커미트된 일련 번호 포인터(NMCSN)를 설정하고 메모리와 관련한 명령 이외의 최후 커미트된 명령을 나타내고 상기 제2 포인터(CSN)을 지나서 진행하고 마치 명령이 또 커미트되는 것처럼 메모리에 관련한 상기 명령 중 하나를 지나 진행하는 단계와;
    실행을 위해 스케줄링되도록 이용하는 경우 상기 제2 포인터(CSN)와 상기 제3 포인터(NMCSN) 사이의 메모리와 관련한 임의의 메모리를 식별하지만 상기 제2 포인터(NMCSN)와 상기 제1 포인터(PBSN) 사이의 메모리와 관련한 임의의 명령 실행을 위해 스케줄링되도록 이용하는 경우에는 식별하지 못하는 단계를 포함하는데,
    긴 대기시간 메모리 관련 명령은 짧은 대기시간 레지스터 관련 명령으로부터 분리되고,
    정규 상태는 분기 예측 오류및 실행 예외와 상관없이 실행을 위해 스케줄링될수 있는 메모리 관련 명령만을 스케줄링함으로써 유지되는 것을 특징으로 하는 스케줄링 방법.
  47. 제46항에 있어서, 상기 데이타 구조내 엔트리를 가리키는 상기 제3 포인터(NMCSN)를 설정하고 메모리 관련 명령 이외의 최후 커미트된 명령을 나타내며, 제2 포인터(DSN)를 지나서 그리고 마치 명령이 또 커미트되는 것처럼 상기 메모리 관련 명령중 임의의 명령을 지나서 진행하고, 활성 상태 또는 비활성 상태 지시자와는 상관없이 에러없는 명령이 되도록 판정된 임의의 명령을 지나 또 진행하는 단계를 추가로 포함하는 것을 특징으로 하는 스케줄링 방법.
  48. 프로세서의 내부 레지스터, 상기 프로세서의 외부 메모리, 명령 이슈 유닛 및 명령 실행 유닛을 구비한 추측 비순위 실행 프로세서에서, 상기 프로세서에서 정규 상태가 아닌 명령 관련 레지스터만의 아키텍쳐 상태 헤드를 수정할 수 있는 메모리 관련 명령 관련 명령을 동적으로 스케줄링하는 방법에 있어서,
    메모리 관련 명령상의 제1 상태 정보 및 비메모리 관련 명령을 기억하는 다수의 어드레셔블 기억 엘리먼트를 포함하는 제1 데이타 구조를 규정하는 단계와;
    메모리 관련 명령상의 제2 상태 정보를 기억하는 다수의 어드레셔블 데이타 기억 엘리먼트를 포함하는 제2 데이타 구조를 규정하는 단계와;
    이슈된 일련 번호 포인터(ISN), 커미트된 일련 번호 포인터(CSN), 최초 미결정의 예측된 제어 전송 명령 일련 번호 포인터(PBSN), 비메모리 관련 명령 커미트된 일련 번호 포인터(NMCSN)을 포함하는 다수의 포인터를 규정하는 단계를 포함하는데, 상기 각각의 포인터는 상기 어드레셔블 엘리먼트중 하나를 가리키며;
    유일하지 않은 포인트에 관한 상기 다수의 포인터 각각을 상기 어드레셔블 데이타 기억 엘리먼트 중 소정의 하나로 초기화하는 단계와;
    상기 명령 이슈 유닛으로부터 적어도 하나의 명령을 이슈하는 단계와;
    상기 이슈된 명령이 메모리와 관련되는지를 판정하는 단계와;
    상기 명령 이슈 유닛으로부터의 명령 이슈 신호에 응답하여 메모리와 관련되지 않은 명령에 대하여 그리고 메모리 관련 명령에 대하여 활성 상태 명령을 나타내도록 상기 제1 지시자를 세팅하는 단계와;
    메모리와 관련되지 않은 명령에 대해서만 활성 상태 명령을 나타내도록 상기 제2 데이타 구조내 상기 제2 지시자를 세팅하고,상기 명령 이슈 유닛으로부터의 명령 이슈 신호에 응답하여, 상기 명령이 메모리 관련 명령에 대하여 비활성 상태임을 나타내도록 상기 제2 지시자를 클리어하는 단계와;
    상기 명령의 완료 여부 및 상기 명령 실행 완료의 에러 유무 여부를 나타내는 상기 실행 유닛으로부터의 명령 완료 신호와, 예측 제어 전송이 정확히 예측되었는지를 나타내는 예측 평가 상태 유닛으로부터의 제어 전송 명령에 대한 예측 평가 상태 신호에 응답하여, 상기 명령의 현행 상태를 활성 상태 또는 비활성 상태로 나타내기 위해 이슈된 각각의 명령으로 상기 제1 및 제2 데이타 구조내 각각의 상기 제1 및 제2 지시자를 변경함으로써 상기 지시자의 상태를 갱신하는 단계와;
    현행 머신 사이클 동안에 이슈되는 명령의 수를 나타내는 상기 명령 이슈 유닛으로부터의 신호에 응답하여 가장 최후에 이슈되는 명령수를 가리키도록 상기 ISN 포인터를 진행하는 단계와;
    상기 CSN 포인터에서 개시하는 일련 번호가 증가하는 순으로 상기 제1 지시자를 순차적으로 평가하고 비활성 상태 명령 지시자를 갖는 가장 최후의 일련 번호를 판정하도록 상기 ISN 포인터쪽 부터 평가하여, 비활성 상태 명령 지시자를 갖는 상기 최후 일련 번호를 가리키도록 상기 CSN 포인터를 진행하는 단계와;
    예측 평가 상태 유닛으로부터의 예측 평가 상태 신호에 응답하여 최초 미결정의 분기 명령의 위치를 가리키도록 상기 PBSN 포인터를 진행하는 단계와;
    상기 최후 커미트된 명령의 위치를 가리키도록 상기 NMCSN 포인터를 진행하고, 또 임의의 커미트되지 않은 활성 상태 메모리 명령을 지나 CSN 헤드를 상기 제2 데이타 구조내 상기 제2 지시자의 평가에 기초하여 상기 PBSN 포인터 위로 진행하는 단계와;
    제어 전송 명령(ⅰ)과, 정규 상태가 실행 예외 발생시 또는 예측된 제어 전송 명령의 예측 오류시 복구할 수 있도록, 제어 전송 명령과 제어 레지스터가 추측으로 수정될 수 있는 제어 레지스터값을 수정하는 부작용 가능성을 갖는 명령(ⅱ) 각각을 실행하기 바로 전에 머신 상태 정보를 기억시키는 단계와;
    제어 레지스터값이 추측으로 수정될 수 없는 제어 레지스터값을 수정하는 부작용 가능성을 갖는 명령을 실행하기 이전에 모든 미결정 명령을 커미트하고 리타이어하도록 상기 머신을 동기화하는 단계를 포함하는데,
    실행하기 위해 비메모리 명령 보다 더 많은 머신 사이클을 리타이어시키는 메모리 관련 명령은 명령 실행 상태가 단지 정규 상태로 구성되지 않고도 가능하다기 보다는 오히려 실행을 위해 스케줄링될 수 있는 것을 특징으로 하는 스케줄링 방법.
  49. 제48항에 있어서, 상기 다수의 규정된 포인터는 상기 어드레셔블 데이타 기억 엘리먼트중 하나를 가리키는 자원 리클레임 포인터(RRP)를 추가로 포함하며, 명령 커미트로부터의 신호에 응답하여, 상기 머신에 의해 리클레임되어온 상기 명령에 할당된 모든 머신 자원에 대하여 커미트된 최후 명령을 가리키도록 상기 RRP 포인터 순위를 진행하는 단계를 추가로 포함하는 것을 특징으로 하는 스케줄링 방법.
  50. 제48항에 있어서, 상기 메모리 관련 명령은 로딩 명령, 기억 명령, 및 극소의 명령으로 구성된 그룹으로부터 선택되는 것을 특징으로 하는 스케줄링 방법.
  51. 제48항에 있어서, 상기 ISN 포인터를 진행하는 단계는 최후 이슈된 명령 일련 번호로 된 이전의 머신 사이클의 일련 번호에 기초하고, 상기 신호는 현행 머신 사이클 동안에 이슈된 명령의 수를 식별하는 것을 특징으로 하는 스케줄링 방법.
  52. 제48항에 있어서, 상기 CSN 포인터를 진행하는 단계는 각각의 머신 사이클상의 소정수의 일련 번호에 의해 상기 CSN 포인터를 진행하는 단계로 규정되는 것을 특징으로 하는 스케줄링 방법.
  53. 제48항에 있어서, 상기 제어 전송 명령은 분기 명령을 포함하는 것을 특징으로 하는 스케줄링 방법.
  54. 외부 메모리와 전달하는 내부 데이타 기억 장치를 구비한 추측 비순위 실행 프로세서에서, 정규 예외 모델을 유지하는 로딩 및 기억 명령을 포함한 메모리 관련 명령을 동적으로 스케줄링하고 트랙킹하는 방법에 있어서,
    상기 프로세서에서 다수의 실행용 명령을 이슈하는 단계와;
    상기 이슈된 명령이 추측 실행을 하는 지의 여부를 식별하여 각각의 상기 추측 명령과 관련된 지시자를 기억하는 단계와;
    상기 이슈된 명령이 외부 메모리와 관련되는 지의 여부를 식별하여 각각의 상기 메모리 관련 명령과 관련된 지시자를 기억하는 단계와;
    에러없는 실행을 완료하는 상기 명령 이슈후 상기 다수의 명령의 실행 상태를 모니터링하여 각각의 명령에 대한 완료 상태를 판정하는 단계와;
    상기 이슈된 명령의 실행 상태를 트래킹하는 단계와;
    추측 명령인 식별된 다른 명령의 상태에 그리고 상기 다수의 명령의 실행 완료 상태에 기초하여, 비메모리 관련 명령의 실행 헤드에 대하여 상기 이슈된 메모리 관련 명령을 스케줄링하는 단계를 포함하는 것을 특징으로 하는 스케줄링 방법.
  55. 프로세서의 내부 레지스터 및 상기 프로세서의 외부 메모리, 명령 이슈 유닛 및 명령 실행 유닛을 포함하는 데이타 기억 수단을 갖는 추측 비순위 실행 프로세서에서, 상기 프로세서에서 정규 아키텍쳐 상태 동안 짧은 대기시간 명령의 비순위 헤드의 아키텍쳐 상태를 수정하는 긴 대기시간 명령을 동적으로 스케줄링하는 장치에 있어서,
    에러없이 실행 완료하고 결코 복구될 필요가 없는 최후 순위의 연속 명령을 식별하는 수단과;
    실행이 잘못 예측되는 경우 복구되어야 하는 실행에 대하여 최초 순위의 추측 이슈된 미결정된 예측 제어 전송 명령을 식별하기 위한 수단과;
    실행이 잘못예측된 경우 복구되어야 하는 실행에 대하여 상기 식별된 최초 순위 순차로 추측 이슈된 미결정 예측된 제어 전송 명령과 에러없이 실행을 완료하고 결코 복구될 필요가 없는 상기 식별된 최후 순위의 연속 명령 사이에서 순위 순차적으로 임의의 긴 대기시간 명령을 식별하는 수단을 포함하는데, 상기 긴 대기시간 명령은 긴 대기시간을 갖는 소정 세트의 미리지정된 명령과 상기 이슈된 명령을 비교함으로써 식별되고;
    즉각 실행에 대하여 상기 식별된 긴 대기시간 명령을 스케줄링하는 수단을 포함하는데, 상기 긴 대기시간 명령은 동적으로 이슈되고 정규 상태는 잘못예측되어온 추측 이슈된 중재 제어 전송 명령과 상관없이 실행을 위해 스케줄링될 수 있는 상기 긴 대기시간 명령만을 그리고 그렇지 않으면 실행 예외를 발생한 명령을 실행하기 위해 스케줄링함으로써 유지되는 것을 특징으로 하는 스케줄링 장치.
  56. 제55항에 있어서, 상기 스케줄링 장치는,
    어드레셔블 n-1이 상기 데이타 기억 수단에서 어드레셔블 위치 0에 논리적으로 이웃하는, n-어드레셔블 위치 0, 1, 2, ..., n-2, n-1을 갖는 원형 모듈로-n 구조와;
    각각의 상기 명령이 이슈될때 각각 이슈되는 명령에 단조롭게 증가하는(모듈로-n) 숫자 일련 번호를 지정하는 수단과;
    상기 태그에 기초하여 각각 이슈되는 명령과 상기 데이타 구조내 활동 상태 지시자를 관련시키는 수단과;
    상기 명령이 이슈될때 상기 명령이 이슈됨을 나타내도록 상기 이슈된 명령중 하나의 명령마다 상기 데이타 구조내 상기 n-위치중 고유 위치에 제1 엘리먼트인 상기 활동 상태 지시자를 세팅하는 수단과;
    상기 명령이 긴 대기시간 명령으로서 식별된 명령에 대해서만 이슈될때 상기 명령이 긴 대기시간 명령임을 나타내도록 제2 엘리먼트인 상기 활동 상태 지시자를 세팅하는 수단과;
    상기 명령이 에측된 결과에 기초하여 추측으로 이슈되는 명령에 대해서만 이슈될때 상기 명령이 추측으로 이슈된 명령임 나타내도록 엘리먼트인 상기 활동 상태 지시자를 세팅하는 수단과;
    상기 명령이 에러없이 완료할때 상기 명령이 에러없이 완료하였음을 나타내도록 상기 데이타 구조내 상기 활동 상태 지시자를 클리어하는 수단과;
    에러없이 완료한 상기 최후 순위의 연속 명령과, 상기 최초 순위 순차적으로 정해진 추측 미결정된 예측 명령을 포함하는 각각 이슈되는 명령에 대한 실행 상태를 판정하도록, 다수의 이슈된 명령에 대한 상기 활동 상태 지시자를 평가함으로써 이슈되는 명령의 실행 상태를 트랙킹하는 수단을 포함하는데, 상기 긴 대기시간 명령은 상기 식별된 에러없이 완료된 최후 연속 명령과 상기 식별된 최초 미결정의 예측 명령 사이에 순차적으로 정해지는 것을 특징으로 하는 스케줄링 장치.
  57. 제56항에 있어서, 에러없이 완료하는 최후로 순차적으로 정해진 연속 명령을 식별하는 상기 수단은 상기 데이타 구조내 엔트리를 가리키는 제2 포인터를 설정하는 수단을 포함하며, 상기 최후 비활성화된 명령은 에러없이 완료하는 최후 순위 순차적인 명령이고 모든 이전의 순위 순차적인 명령이 또한 에러없이 완료하는 곳에서 상기 제2 포인터에 의해 식별되는 명령 보다 이른 순위 순차적인 명령은 분기 예측 오류및 예외와는 상관없이 실행가능하고;
    복구될 필요가 있는 실행에 대하여 최초 순차적으로 정해진 추측 미결정 예측된 제어 전송 명령을 식별하는 상기 수단은 상기 데이타 구조내 엔트리를 가리키고 순차적으로 최초 미결정된 분기 명령을 나타내는 제1 포인터(PBSN)을 설정하는 수단을 포함하며, 상기 제1 포인터에 의해 식별되는 명령 보다 이른 순위 순차적인 명령은 분기 예측 오류와는 상관없이 실행가능하고,
    상기 식별된 최후 연속 에러없이 완료한 명령과 상기 식별된 최초 미결정 예측된 제어 전송 명령 사이에 순차적으로 정해진 임의의 긴 대기시간 명령을 식별하는 상기 수단은, 실행을 위해 스케줄링되도록 이용할 수 있는 상기 제3 포인터(NMCSN)과 상기 제2 포인터(CSN) 사이의 임의의 긴 대기시간 명령을 식별하지만 상기 제2 포인터(NMCSN)와 상기 제1 포인터(PBSN) 사이에 임의의 길지않은 대기시간 명령을 실행하기 위해 스케줄링되도록 식별하지 못하는 수단을 포함하는 것을 특징으로 하는 스케줄링 장치.
  58. 제57항에 있어서, 상기 식별하기 위한 수단은 각각의 머신 사이클 동안 상기 상태 지시자 엘리먼트를 논리적으로 비교하는 부울 논리 회로와, 상기 포인터 각각을 상기 더 큰 숫자 일련 번호 식별용 태그에 대응하는 기억 위치로 진행하는 수단을 포함하는 것을 특징으로 하는 스케줄링 장치.
  59. 제58항에 있어서, 상기 긴 대기시간 명령은 상기 외부 메모리에 관련한 명령을 포함하고, 로딩 명령과 기억 명령을 포함하는 임의의 긴 대기시간 명령을 식별하는 상기 수단은 명령을 디코딩하고 명령 관련 외부 메모리를 식별하는 명령 디코더를 포함하는 것을 특징으로 하는 스케줄링 장치.
  60. 다수의 내부 프로세서 레지스터 및 상기 프로세서의 외부 메모리, 명령 이슈 유닛 및 명령 실행 유닛을 갖는 추측 비순위 실행 프로세서에서, 상기 프로세서에서 정규 상태가 아닌 명령 관련 레지스터만의 아키텍쳐 상태 헤드를 수정하는 메모리 관련 명령을 동적으로 스케줄링하는 장치에 있어서,
    메모리 관련 명령 및 비메모리 관련 명령상의 제1 상태 정보를 기억하는 다수의 어드레셔블 데이타 기억 엘리먼트를 포함하는 제1 데이타 구조와;
    메모리 관련 명령상의 제2 상태 정보를 기억하는 다수의 어드레셔블 데이타 기억 엘리먼트를 포함하는 제2 데이타 구조와;
    상기 내부 프로세서 레지스터내에서 규정되어, 이슈된 일련 번호 포인터(ISN), 커미트된 일련 번호 포인터(CSN), 최초 미결정 예측된 제어 전송 명령 일련 번호 포인터(PBSN), 비메모리 관련 명령 커미트된 일련 번호 포인터(NMCSN)을 포함하는 다수의 포인터값을 기억하는 다수의 포인터 기억 레지스터를 포함하는데, 상기 각각의 포인터는 상기 어드레셔블 데이타 기억 엘리먼트중 하나를 가리키고;
    상기 어드레셔블 데이타 기억 엘리먼트중 소정의 하나를 가리키도록 상기 다수의 포인터 각각을 초기화하는 수단과;
    상기 명령 이슈 유닛으로부터 적어도 하나의 명령을 이슈하는 수단과;
    상기 이슈된 명령 각각이 상기 외부 메모리와 관련하는 지를 판정하는 수단과;
    상기 명령 이슈 유닛으로부터의 명령 이슈 신호에 응답하여 메모리와 관련하지 않은 명령에 대하여 그리고 메모리와 관련한 명령에 대하여 활성 상태 명령을 나타내도록 상기 제1 데이타 구조내 상기 제1 지시자를 세팅하는 수단과;
    메모리와 관련되지 않는 명령에 대해서만 활성 상태 명령을 나타내도록 상기 제2 데이타 구조내 상기 제2 지시자를 세팅하고, 상기 명령 이슈 유닛으로부터의 명령 이슈 신호에 응답하여 상기 명령이 메모리와 관련한 명령에 대하여 비활성 상태임을 나타내도록 상기 제2 지시자를 클리어하는 수단과;
    상기 명령이 완료했는지 그리고 상기 완료의 에러 유무 여부를 나타내는 상기 실행 유닛으로부터의 명령 완료 신호와, 예측된 제어 전송이 정확히 예측되었는지를 나타내는 예측 평가 상태 유닛으로부터의 제어 전송 명령에 대한 예측 평가 상태 신호에 응답하여, 활성 상태 또는 비활성 상태로서 상기 명령의 현행 상태를 나타내도록 이슈된 각각의 명령으로 상기 제1 및 제2 데이타 구조내 각각의 상기 제1 및 제2 지시자를 변경함으로써 상기 지시자의 상태를 갱신하는 수단과;
    현행 머신 사이클 동안에 이슈된 명령의 수를 나타내는 명령 이슈 유닛으로부터의 신호에 응답하여, 최후 이슈된 명령 수를 가리키는 상기 ISN 포인터를 진행하기 위한 수단과;
    상기 CSN 포인터에서 개시하는 일련 번호 증가순으로 상기 제1 지시자를 순차적으로 평가하고 최후 일련 번호를 판정하도록 상기 ISN 포인터쪽부터 평가하여, 비활성 상태 명령 지시자를 갖는 상기 최후 일련 번호를 가리키도록 상기 CSN 포인터를 진행하기 위한 수단과;
    예측 평가 상태 유닛으로부터의 예측 평가 상태 신호에 응답하여 최초 미결정의 분기 명령의 위치를 가리키도록 상기 PBSN 포인터를 진행하는 수단과;
    최후 커미트된 인스트럭셔의 위치를 가리키도록 상기 NMCSN 포인터를 진행하고, 또 상기 제2 데이타 구조내 상기 제2 지시자의 평가에 기초하여 상기 PBSN 포인터 위로 임의의 커미트되지 않은 메모리 명령을 지나 CSN의 헤드를 진행하는 수단과;
    제어 전송 명령(ⅰ)과, 예측된 제어 전송 명령 잘못 오류시 또는 실행 예외 발생시 정규 상태가 복구가능하도록 제어 레지스터가 추측으로 수정될 수 있는 제어 레지스터값을 수정하는 부작용 가능성을 갖는 명령(ⅱ) 각각을 실행하기 바로 전에 머신 상태 정보를 기억하는 수단과;
    제어 레지스터값이 추측으로 수정될 수 있는 제어 레지스터값을 수정하는 부작용 가능성를 갖는 명령을 실행하기 전에 모든 미결정 명령을 커미트하고 리타이어하도록 상기 프로세서를 동기화하는 수단을 포함하는데,
    비메모리 관련 명령 보다 실행하는데 더 많은 머신 사이클을 요구하는 메모리 관련 명령은 명령 실행 상태가 단지 정규 상태로 구성되지 않고도 가능하다기 보다는 실행을 위해 스케줄링될 수 있는 것을 특징으로 하는 스케줄링 장치.
  61. 제60항에 있어서, 상기 다수의 규정된 포인터는 상기 어드레셔블 데이타 기억 엘리먼트중 하나를 가리키는 자원 리클레임 포인터(RRP)를 추가로 포함하며, 상기 머신에 의해 리클레임되는 상기 명령에 할당된 모든 머신 자원에 대하여 커미트되는 최후 명령을 가리키는 명령 커미트 및 리클레임 유닛(ICRU)로부터의 신호에 응답하여, 상기 RRP 순위로 진행하는 수단을 추가로 포함하는 것을 특징으로 하는 스케줄링 장치.
  62. CPU가 정규 아키텍쳐 상태를 유지하는 동안, 체크포인팅되는 상태를 줄이기 위해 중앙 처리 장치(CPU)내 명령을 체크포인팅하는 방법에 있어서,
    상기 명령이 이슈되어 실행되기 전에 상기 CPU에서 실행되는 경우 아키텍쳐 상태를 수정하는 선(先)식별 명령과;
    소정의 선택 기준에 기초하여 실행하기 전에 상기 특정 명령에 대한 아키텍쳐 상태를 체크포인팅하지 않고도 특정 실행 모드로 실행하기 위하여 상기 식별된 명령중 특정 하나를 선(先)선택하는 단계와;
    실행하기 이전에 상기 선선택된 특정 명령 이외의 상기 식별된 명령에 대한 아키텍쳐 상태를 체크포인팅하는 단계와;
    상기 특정 모드로 상기 명령중 상기 특정 하나를 실행하는 단계를 포함하며 상기 식별된 명령을 실행하는 단계를 포함하는 것을 특징으로 하는 체크포인팅 방법.
  63. 제62항에 있어서, 상기 소정의 선택 기준은 실행 동안의 상기 명령에 의해 수정될수 있는 수정가능한 상태의 타입 및 상기 수정가능한 상태의 양을 포함하는 것을 특징으로 하는 체크포인팅 방법.
  64. 제63항에 있어서, 상기 소정의 선택 기준은 상기 명령이 소정의 공칭 명령 유출에서 야기되는 빈도를 추가로 포함하는 것을 특징으로 하는 체크포인팅 방법.
  65. 제64항에 있어서, 상기 소정의 선택 기준은 상기 선택 기준이 상기 CPU에서 특정 타입의 프로세싱 태스크를 최적화하도록 상기 소정의 공칭 명령 유출의 구성을 포함하는 것을 특징으로 하는 체크포인팅 방법.
  66. 제62항에 있어서, 상기 소정의 선택 기준은,
    상기 선식별된 명령중 각각의 특정 명령에 의해 수정가능한 상태와;
    상기 선식별된 명령중 각각의 특정 명령의 수정가능한 상태에 대한 기억 요구와;
    상기 선식별된 명령중 각각의 특정 명령이 일부 소정의 공칭 처리 태스크동안 야기하는 추정 통계 빈도를 포함하는 것을 특징으로 하는 체크포인팅 방법.
  67. 제66항에 있어서, 상기 선선택하는 단계는,
    상기 특정 실행 모드로 실행하기 위하여 소정의 낮은 추정 통계 빈도가 이슈되고 비교적 많은 양의 체크포인트 기억을 요구하는 선식별된 명령을 선택하는 단계와;
    공칭 프로세싱 모드로 실행하기 위하여 소정의 높은 빈도가 이슈되고 비교적 적은 양의 체크포인트 기억을 요구하는 선식별된 명령을 선택하는 단계를 포함하는 것을 특징으로 하는 체크포인팅 방법.
  68. 제67항에 있어서, 상기 특정 실행 모드는 상기 선택된 명령의 실행을 개시하기 전에 상기 CPU를 동기화하는 단계를 포함하는 것을 특징으로 하는 체크포인팅 방법.
  69. 제68항에 있어서, 상기 CPU를 동기화하는 상기 단계는,
    실행 이전에 명령 유출에서 머신 동기화를 요구하는 동기화 명령으로서 명령을 식별하는 단계와;
    실행이 에러없이 완료하고 그 실행 결과가 원상태로 기록되어지도록 모든 미결정 이슈된 명령이 커미트되고 리타이어되기까지 상기 동기 명령의 실행을 지연시키는 단계와;
    순위 순차적으로 머신 동기화를 요구하는 각각의 명령을 실행하는 단계와;
    원상태로 기록되기 전에 각각의 상기 동기화 명령의 실행으로부터 발생하는 예외 조건을 식별하는 단계와;
    상기 동기화 명령 실행 동안에 발생하는 상기 예외 조건중 하나를 처리하는 단계와;
    머신 상태로 복구한 실행 결과를 기록하는 단계를 포함하며;
    상기 정규 상태는 상기 동기화 명령을 체크포인팅하지 않고도 유지되는 것을 특징으로 하는 체크포인팅 방법.
  70. 제68항에 있어서, 동기화 명령으로서 명령을 식별하는 상기 단계는 상기 명령을 이슈하기 전에 동기화 명령으로서 명령을 식별하는 단계를 포함하며, 상기 동기화 명령의 실행을 지연시키는 상기 단계는 모든 미결정의 이슈된 명령이 커미트되어 리타이어될 때까지 상기 동기화 명령의 이슈를 지연시키는 단계를 추가로 포함하는 것을 특징으로 하는 체크포인팅 방법.
  71. 제68항에 있어서, 상기 식별 명령은 예측된 프로그램 제어 전송 명령, 프로그램 흐름을 수정하는 명령, 머신 상태를 수정하는 명령, 및 제어 레지스터값을 수정하는 부작용을 갖는 명령을 포함하는 것을 특징으로 하는 체크포인팅 방법.
  72. 제71항에 있어서, 명령을 포함하는 프로그램 흐름을 수정하는 상기 명령은 BPr, FBcc, Bcc, CALL, JMPL, TCC, RETURN, DONE, RETRY, 및 이들 조합으로 구성된 그룹에서 선택된 SPARC-V9 명령 세트내에서 실행되는 것을 특징으로 하는 체크포인팅 방법.
  73. 머신 상태를 수정하는 상기 명령은 제어 레지스터에 기록하는 명령 및 레지스터 윈도우 제어 명령을 포함하는 것을 특징으로 하는 체트포인팅 방법.
  74. 제71항에 있어서, 머신 상태를 수정하는 상기 명령은 제어 레지스터를 판독한 명령을 포함하는 것을 특징으로 하는 체크포인팅 방법.
  75. 제71항에 있어서, 상기 식별된 명령은 이슈 트랩에서 종종 초래되는 명령을 추가로 포함하는 것을 특징으로 하는 체크포인팅 방법.
  76. 제71항에 있어서, 상기 식별된 명령은 트랩이 추측으로 취해진 경우 리턴되도록 상기 트랩 처리기 루틴내 제1 명령을 추가로 포함하는 것을 특징으로 하는 체크포인팅 방법.
  77. CPU가 정규 아키텍쳐 상태를 유지하는 동안에 체크포이팅된 상태를 줄이기위해 명령을 체크포인팅하는 방법에 있어서,
    상기 명령이 이슈되어 실행되기 전에 상기 CPU에서 실행될때 아키텍쳐 상태를 수정하는 선식별 명령을 제공하는 단계와;
    소정의 선택 기준에 기초하여 실행하기 전에 상기 특정 명령에 대한 아키텍쳐 상태를 체크포인팅하지 않고도 머신 동기 모드로 실행하기 위하여 상기 식별된 명령중 특정 명령을 선선택하는 단계를 포함하는데,
    상기 소정의 선택 기준은,
    상기 소정의 선식별된 명령중 각각의 특정 명령에 의해 수정가능한 상태와;
    상기 선식별된 명령중 각각의 특정 명령의 수정가능한 상태에 대한 기억 요구와;
    상기 선식별된 명령중 각각의 명령이 일부 소정의 공칭 프로세싱 태스크동안 야기하는 평가 통계 빈도를 포함하고,
    상기 선선택 단계는,
    상기 특정 실행 모드로 실행하기 위하여 소정의 낮은 추정 통계 빈도가 이슈되고 비교적 많은 양의 체크포인트 기억을 요구하는 선식별된 명령을 선택하는 단계와;
    공칭 프로세싱 모드로 실행하기 위하여 소정의 높은 빈도가 제공되고 비교적 적은 양의 체크포인트 기억을 요구하는 선식별된 명령을 선택하는 단계와;
    실행 이전에 상기 선선택된 특정 명령 이외의 상기 식별된 명령에 대한 아키텍쳐 상태를 체크포인팅하는 단계와;
    상기 머신 동기화 모드로 상기 명령중 상기 특정 명령을 실행하는 단계를 포함하며, 상기 명령 유출에서 야기하는 상기 식별된 명령을 실행하는 단계를 포함하며,
    상기 머신 동기화 모드는,
    이슈 이전에 명령 유출에서 머신 동기화를 요구하는 동기화 명령으로서 명령을 식별하는 단계와;
    상기 동기화 명령 이외의 명령을 이슈하고, 미결정 이슈된 명령이 에러없이 실행 완료하고 원상태로 기록되는 실행으로부터 초래되는 결과를 가질때까지 상기 동기화 명령의 이슈를 지연시키는 단계와;
    머신 동기화를 순차적으로 그리고 순위적으로 요구하는 각각의 명령을 이슈하는 단계와;
    원상태 기록 이전에 각각의 상기 동기화 명령의 실행으로부터 발생하는 예외 조건을 식별하는 단계와;
    상기 동기화 명령의 실행동안에 발생하는 상기 예외 조건중 임의의 조건을 처리하는 단계와;
    원상태로의 실행 결과를 기록하는 단계를 포함하고,
    상기 정규 상태는 상기 동기화 명령을 체크포인팅하지 않고 유지되는 것을 특징으로 하는 체크포인팅 방법.
  78. 상기 명령 상태에 기초하여 명령 상태를 트래킹하여 체크포인트를 할당 및 할당 해제하는 방법에 있어서,
    CPU의 메모리내 데이타 기억 영역의 데이타 구조를 설정하는 단계와;
    상기 데이타 구조내에서, 싱글 체크포인트에 각각 대응하고 다수의 체크포인트 상태 필드를 갖는 다수의 체크포인트 할당 레지스터를 규정하는 단계와,
    명령 일련 번호 SN을 갖는 명령에 대하여 다음 순차에 이용가능한 체크포인트 할당 레지스터를 할당하고 상기 다수의 상태 필드에 상기 명령에 대한 체크포인트 상태 정보를 기억시키는 단계와;
    커미트된 명령 일련 번호(CSN)가 체크포인트 n과 다음에 기억되는 체크포인트 n+1과 관련된 일련 번호 SN을 통과하는지를 판정하도록 소정의 시간 간격으로 커미트된 일련 번호 포인터(CSN)을 모니터링하는 단계와;
    CPU 백업 신호에 응답하여 상기 CPU에 상기 체크포인트 할당 레지스터내 기억되어 있는 정보를 전달하는 단계와;
    상기 커미트된 명령 일련 번호(CSN)가 체크포인트 n과 다음 체크포인트 n+1과 관련된 명령 일련 번호를 통과하는지의 판정에 따라 이전에 할당된 체크포인트를 할당 해제시키는 단계를 포함하는 것을 특징으로 하는 체크포인트 할당 및 할당 해제 방법.
  79. 제78항에 있어서, 상기 CPU가 형성된 체크포인트에 대하여 상기 체크포인트 일련 번호를 지나 백업하는 것을 나타내는 CPU 백업 신호의 수신에 응답하여 이전에 할당된 체크포인트를 할당 해제하는 단계를 추가로 포함하는 것을 특징으로 하는 체크포인트 할당 및 할당 해제 방법.
  80. 제78항에 있어서, 싱글 체크포인트에 각각 대응하고 다수의 체크포인트를 갖는 다수의 체크포인트 할당 레지스터를 상기 데이타 구조내에 형성하는 상기 단계는,
    각각의 상기 체크포인트 레지스터에 있어서, 체크포인트가 할당되고 그 특정 체크포인트에 기억되어 있는 정보가 유효 체크포인트 정보인지를 나타내는 제1 유효 상태 필드를 규정하는 단계와;
    각각의 상기 체크포인트 레지스터에 있어서, 상기 커미트된 일련 번호 명령 포인터(CSN)가 상기 레지스터내에 기억되어 있는 특정 체크포인트의 명령 일련 번호(SN)를 통과하는지를 나타냄으로써 상기 체크포인트가 통과되었는지를 나타내는 제2 체크포인트 통과 상태 필드를 규정하는 단계와;
    각각의 상기 체크포인트 레지스터에 있어서, 상기 커미트된 명령 일련 번호 포인터(CSN)와 관련된 조건을 나타내는 제3 상태 필드를 형성하는 단계와;
    상기 커미트된 명령 일련 번호 포인터(CSN)가 일련 번호의 체크포인트 보다 크고 상기 커미트된 명령 일련 번호가 이 체크포인트를 가질때를 판정하는데 사용되는지를 나타내는 상태 필드 보다 더 큰 제4 상태 필드를 각각의 상기 체크포인트 레지스터로 형성하는 단계와;
    상기 체크포인트 일련 번호 다음에 오는 일련 번호(NSN)를 나타내는 다음 일련 번호의 제5 상태 필드를 각각의 상기 체크포인트 레지스터로 형성하는 단계를 포함하는 것을 특징으로 하는 체크포인트 할당 및 할당 해제 방법.
  81. 제80항에 있어서, 상기 제1 상태 필드는 1-비트 필드이고, 상기 제2 상태 필드는 1-비트 필드이고, 상기 제3 상태 필드는 3-비트 필드이고, 상기 제4 상태 필드는 6-비트 필드인 것을 특징으로 하는 체크포인트 할당 및 할당 해제 방법.
  82. 제80항에 있어서, 명령 일련 번호 SN을 갖는 명령에 대하여 체크포인트를 할당하는 상기 단계는,
    이용가능한 다음 체크포인트 번호(i)를 식별하여 상기 체크포인트 할당 레지스터(i)로 인덱싱는 단계와;
    상기 체크포인트(i)가 유효하고 리타이어되지 않았음을 나타내도록 상기 할당된 레지스터의 상기 제1 필드에 1을 기록하는 단계와;
    상기 체크포인트(i)가 통과되었음을 나타내도록 상기 제2 필드에 0을 기록하는 단계와;
    원형 활성 상태 명령 상태 링으로부터의 상기 커미트된 명령 일련 번호 포인터(CSN)의 전이가 검출될 수 있도록 상기 체크포인트(i)가 할당될때의 상기 커미트된 일련 번호 포인터(CSN)의 위치를 나타내기위해 상기 제3 필드의 다수의 상태중 하나를 기록하는 단계와;
    일련 번호의 상기 체크포인트와 상기 커미트된 일련 번호(CSN)를 비교하고, 상기 커미트된 일련 번호가 더 큰 경우에는 상기 커미트된 명령 일련 번호가 이 체크포인트를 통과하였음을 나타내도록 상기 제4 상태 필드에 지시자를 기록하는 단계와;
    상기 제5 상태 필드에 형성되는 상기 체크포인트에 대한 상기 명령 일련 번호에 관련된 정보를 기록하는 단계를 포함하는 것을 특징으로 하는 체크포인트 할당 및 할당 해제 방법.
  83. 제80항에 있어서, 상기 명령 일련 번호에 관련된 상기 정보가 형성된 상기 체크포인트에 대한 일련 번호인 것을 특징으로 하는 체크포인트 할당 및 할당 해제 방법.
  84. 제81항에 있어서, 상기 명령 일련 번호에 관련된 상기 정보가 하나의 일련 번호 만큼 증가되어 형성된 체크포인트에 대한 일련 번호인 것을 특징으로 하는 체크포인트 할당 및 할당 해제 방법.
  85. 제82항에 있어서, 상기 커미트된 명령 일련 번호 포인터(CSN)가 체크포인트 n과 다음 체크포인트 n+1과 관련된 명령 일련 번호를 통과하는지의 여부 판정에 따라 이전에 할당된 체크포인트를 할당 해제 하는 상기 단계는,
    상기 체크포인트 레지스터에 기억되어 있는 상기 일련 번호와 상기 커미트된 일련 번호 포인터 사이의 차를 계산함으로써 통과된 신호의 커미트된 일련 번호를 생성하는 단계와;
    상기 생성된 통과된 신호의 커미트된 일련 번호에 따라 상기 제1 상태 필드를 클리어하는 단계를 포함하는 것을 특징으로 하는 체크포인트 할당 및 할당 해제 방법.
  86. 제78항에 있어서, CPU 백업 신호를 검출하는 단계와;
    상기 CPU가 형성된 체크포인트에 대한 상기 백업 지시 신호로 식별되는 상기 체크포인트 일련 번호를 지나 백업하는 지를 판정하는 단계와;
    상기 판정이 백업이 체크포인트를 지난다라고 판정되는 경우에는 상기 체크포인트를 할당 해제하는 단계를 추가로 포함하는 것을 특징으로 하는 체크포인트 할당 및 할당 해제 방법.
  87. 제85항에 있어서, 상기 백업 체크포인트에서 상기 일련 번호의 명령을 식별하는 CPU 백업 지시 신호를 검출하는 단계와;
    형성된 상기 체크포인트에 대한 상기 백업 지시 신호로 식별되는 체크포인트 일련 번호를 지나 백업되는 지를 판정하는 단계와;
    상기 판정이 상기 생성된 통과된 신호의 커미트된 일련 번호에 따라 상기 제1 상태 필드를 클리어함으로써 체크포인트를 지난다라고 식별되는 경우 상기 체크포인트를 할당 해제하는 단계를 추가로 포함하는 것을 특징으로 하는 체크포인트 할당 및 할당 해제 방법.
  88. 제87항에 있어서, 최후 이슈된 명령 일련 번호를 나타내는 이슈된 일련 번호(ISN) 신호를 수신하는 단계와;
    최후 커미트된 명령 일련 번호를 나타내는 커미트된 명령 일련 번호(CSN) 신호를 수신하는 단계와;
    상기 커미트된 일련 번호 포인터(CSN)와 상기 백업 체크포인트 사이에 일련 번호를 갖는 모든 이슈된 명령을 삭제하는 단계와;
    상기 백업 체크포인트와 관련된 다음 일련 번호를 기억하는 상기 제5 상태 필드에 기초하여 상기 백업 동안에 상기 이슈된 명령 일련 번호를 갱신하는 단계와;
    완료되지않은 부동소수점 예외 또는 데이타 브레이크포인트 예외가 검출되는 경우 상기 백업 체크포인트용 체크포인트 레지스터에 기억되어 있는 다음 일련 번호값에 기초하여 상기 이슈된 일련 번호 포인터(ISN)를 갱신하는 단계를 추가로 포함하는 것을 특징으로 하는 체크포인트 할당 및 할당 해제 방법.
  89. 제82항에 있어서, 상기 커미트된 일련 번호 포인터(CSN)을 상기 일련 번호의 체크포인트와 비교하는 상기 단계는 다수의 상기 체크포인트 레지스터에 대하여 동시에 행해지는 것을 특징으로 하는 체크포인트 할당 및 할당 해제 방법.
  90. 제78항에 있어서, 상기 체크포인트는 소정수의 이벤트가 최후 체크포인트가 형성된이래 발생하고 부가적인 체크포인트가 명령형의 특징과는 상관없이 형성된다라는 것을 나타내는 타임아웃 체크포인트 할당 신호에 응답하여 할당되는 것을 특징으로 하는 체크포인트 할당 및 할당 해제 방법.
  91. 상기 명령 실행 이전에 상기 CPU를 동기화함으로써 CPU의 정규 상태를 유지시키는 방법에 있어서,
    실행 이전에 명령 유출에서 머신 동기화를 요구하는 동기화 명령으로서 실행하는 동안 머신 상태를 수정하는 명령을 식별하는 단계와;
    상기 미결정 명령 실행이 에러없이 완료하고 그 실행 결과가 CPU 상태로 복구되어 기록되도록 모든 미결정 이슈된 명령이 커미트되고 리타이어될때까지 상기 동기화 명령 실행을 지연시키는 단계와;
    순위 순차적으로 머신 동기화를 요구하는 각각의 명령을 실행하는 단계와;
    원상태로 복구되어 기록되기전에 각각의 상기 동기화 명령의 실행에서 발생하는 예외 조건을 식별하는 단계와;
    상기 동기화 명령 실행 동안에 발생하는 상기 예외 조건중 임의의 조건을 처리하는 단계와;
    머신 상태로 복구되는 실행 결과를 기록하는 단계를 포함하는데,
    정규 상태는 상기 동기화 명령에 의해 수정가능한 상태를 미리 기억하지 않고도 상기 동기화 명령에 대하여 유지되는 것을 특징으로 하는 CPU 정규 유지 방법.
  92. 제91항에 있어서, 동기화 명령으로서 명령을 식별하는 상기 단계는 상기 명령을 이슈하기 전에 동기화 명령으로서 상기 명령을 식별하는 단계를 포함하고, 상기 동기화 명령 실행을 지연시키는 단계는 모든 미결정의 이슈된 명령이 커미트되어 리타이어될 때까지 상기 동기화 명령의 이슈를 지연시키는 단계를 추가로 포함하는 것을 특징으로 하는 CPU 정규 유지 방법.
  93. CPU에 대한 최적 체크포인트 사이즈를 지정하는 방법에 있어서,
    상기 CPU에 의해 지지되는 명령 세트내 각각의 명령에 의해 수정가능한 머신 상태를 판정하는 단계와;
    일부의 통상적인 공칭 프로세싱 태스크 동안에 각각의 특정 명령이 발생하는때의 통계 빈도를 판정하는 단계와;
    각각의 명령에 대하여 상태 기억 요구를 판정하는 단계와;
    체크포인트 정보에 대하여 최대양의 기억을 선택하는 단계와;
    거의 이슈되지 않고도 더 자주 발생하는 명령 보다 비교적 많은 양의 체크포인트 기억을 요구하는 명령을 선택하기 위한 최적화를 실행하는 단계와;
    상기 할당된 최대 체크포인트 공간내에서 체크포인트될 수 있는 명령만을 체크포인팅하는 단계를 포함하는것을 특징으로하는 최적 체크포인트 사이즈 지정 방법.
  94. 중앙 처리 장치(CPU)이 정규 상태를 유지하는 동안에 체크포인트 데이타의 양을 줄이기 위해 명령을 체크포인팅하는 방법에 있어서,
    상기 중앙 처리 장치의 데이타 기억 장치에 다수의 맵 레지스터 엘리먼트를 갖는 레지스터 리네임 맵 데이타 구조를 형성하는 단계와;
    상기 명령 실행 이전에 명령에 의해 관련된 각각의 논리 소스 및/또는 논리 수신지 레지스터에 대하여 상기 CPU의 이용가능한 물리적 레지스터를 할당하는 단계와;
    고유 논리 레지스터 태그로 각각의 상기 논리 소스 레지스터 및 논리 수신지 레지스터를 식별하는 단계와;
    물리적인 레지스터 태그로 각각의 물리적인 레지스터를 식별하는 단계와;
    상기 고유 논리 레지스터 태그중 하나와 상기 다수의 맵 레지스터 엘리먼트중 각각의 하나를 관련시키는 단계와;
    할당된 상기 물리적인 레지스터에 대하여 고유 논리 레지스터와 관련된 맵 레지스터 엘리먼트에 각각의 상기 할당된 물리적인 레지스터로 식별되는 물리적인 레지스터 태그를 기억시키는 단계를 포함하는데,
    상기 명령의 이슈 결과가 기억되고, CPU 백업이 복구 가능할때 모든 상태가 상기 레지스터로 변환하도록 요구되는 것을 특징으로 하는 체크포인팅 방법.
  95. 제94항에 있어서, 상기 CPU의 할당 해제된 이용가능한 물리적인 레지스터에 대한 물리적인 레지스터 태그를 기억하는 다수의 프리리스트 엘리먼트 각각의 엘리먼트를 갖는 프리 물리적인 레지스터 프리리스트 데이타 구조를 규정하는 단계와;
    논리 레지스터와 관련한 명령이 디스패치되도록 명령 이슈 유닛으로부터의 지시에 응하여, 소스 또는 수신지 레지스터로 논리 레지스터를 대체하는데 사용하기 위하여 프리 물리적인 레지스터를 명령 이슈 유닛에 전달하는 단계와;
    상기 프리 물리적인 레지스터를 상기 명령 이슈 유닛에 전달할때 상기 프리 물리적인 프리리스트 데이타 구조로부터 상기 물리적인 레지스터를 제거하는 단계를 포함하는 것을 특징으로 하는 체크포인팅 방법.
  96. 제95항에 있어서, 논리 레지스터 태그 필드 및 이전의 물리적인 레지스터 태그 필드를 각각 갖는 다수의 리클레임 엘리먼트를 구비하는 자원 리클레임 유닛을 제공하는 단계와;
    고유 이슈된 명령 일련 번호와 상기 리클레임 엘리먼트를 관련시키는 단계와;
    명령 디코딩에 따라 특정 논리 레지스터에 관련하는 명령 일련 번호 SN를 지정하는 단계와;
    만일 명령이 이슈된다면 이전에 디코딩되어 이슈된 명령에 대하여, 상기 다수의 리네임 맵 레지스터중 특정 레지스터가 상기 디코딩된 명령에 관련된 상기 특정 논리 레지스터와 관련되는지를 판정하는 단계와;
    상기 특정 리네임 맵 레지스터 엘리먼트를 판독하여 상기 특정 논리 레지스터와 관련된 특정 물리적인 레지스터 태그를 판정하는 단계와;
    상기 이전의 물리적인 레지스터 태그 필드로 상기 특정 물리적인 레지스터 태그를 기억하고, 상기 이전의 물리적인 레지스터 번호가 이전에 맵핑된 논리 레지스털 태그에 따라 기억되도록 상기 명령 일련 번호 SN과 관련된 리클레임 엘리먼트의 상기 논리 레지스터 태그 필드로 상기 특정 논리 레지스터 태그를 기억하는 단계와;
    상기 특정 리클레임 엘리먼트가 유효 데이타 세트를 포함하고 있음을 나타내도록 상기 명령 일련 번호 SN과 관련된 리클레임 엘리먼트 유효 필드로 지시자를 기록하는 단계와;
    명령 일련 번호를 갖는 상기 명령 실행용 상기 프리리스트로부터 새로운 프리 물리적인 레지스터를 식별하여 상기 프리 물리적인 레지스터에 대응하는 새로운 물리적인 레지스터 태그를 상기 엘리먼트 유효 필드로 기록하는 단계와;
    명령 일련 번호 SN을 갖는 상기 명령에 의해 관련된 상기 특정 논리 레지스터에 대하여 새로운 물리적인 레지스터를 할당하는 단계와;
    각각의 리네임 맵 레지스터 엘리먼트가 특정 논리 레지스터에 동시에 맵핑되는 물리적인 레지스터 태그를 기억하도록, 상기 논리 레지스터에 관련된 명령 일련 번호 SN에 따라 할당되는 상기 새로운 물리적인 레지스터에 대하여, 상기 논리 레지스터 태그와 관련된 리네임 맵 레지스터 엘리먼트에, 상기 새롭게 할당된 물리적인 레지스터에 대응하는 상기 새로운 물리적인 레지스터를 기억하는 단계를 포함하는데,
    상기 자원 리클레임 유닛은 물리적인 맵핑이 필요하다면 논리적으로 초기에 재구성될 수 있는 순차적인 대장(ledger)으로서 제공하는 것을 특징으로 하는 체크포인팅 방법.
  97. 제96항에 있어서, 레지스터 리네임 맵 데이타 구조를 형성하는 상기 단계는 상기 CPU내 다수의 레지스터 타입 각각에 대하여 개별 레지스터 리네임 맵 데이타 구조를 규정하는 단계를 포함하고, 물리적인 프리 레지스터를 규정하는 단계는 상기 CPU에서 다수의 레지스터 타입 각각에 대하여 개별 프리리스트 데이타 구조를 형성하는 단계를 포함하고, 자원 리클레임 유닛을 제공하는 상기 단계는 상기 다수의 개별 레지스터 리네임 데이타 구조 및 개별 프리리스트 데이타 구조중 임의의 구조에 의해 맵핑되는 논리적이고 물리적인 레지스터를 기억하는 싱글 자원 리클레임 유닛을 제공하는 단계를 포함하는 것을 특징으로 하는 체크포인팅 방법.
  98. 제96항에 있어서, 다수의 명령의 백스텝 오버 지시를 포함하는 CPU 백스텝 초기화 신호를 수신하는 단계와;
    최후 이슈된 명령 일련 번호를 나타내는 이슈 명령 일련 번호를 수신하는 단계와;
    상기 수시된 이슈 명령 일련 번호 및 고유 이슈 명령 일련 번호와 각각의 리클레임 엘리먼트의 상기 관련에 기초하여 특정 리클레임 엘리먼트를 식별하는 단계와;
    각각의 리네임 맵 레지스터 엘리먼트가 상기 명령 ISN 이슈 이전에 특정 논리 레지스터에 맵핑되는 물리적인 레지스터 태그를 기억하도록 상기 이슈된 명령 일련 번호(ISN)와 결합된 상기 자원 리클레임 엘리먼트에 기억되어 있는 데이타에 기초하여 명령 일련 번호 ISN에 해당하는 상기 식별된 특정 레지스터 리네임 맵 엘리먼트에 기억되어 있는 물리적인 레지스터 맵핑으로 상기 논리 레지스터를 복구하는 단계와;
    상기 이슈된 명령 일련 번호를 판정하여 특정 리클레임 엘리먼트를 식별하는 상기 단계 및 백업스텝 오버될 각각의 명령에 대하여 식별된 엘리먼트에 기억되어 있는 맵핑을 형성하는 물리적인 레지스터로 상기 논리 레지스터를 복구하는 단계를 반복하는 단계를 추가로 포함하는 것을 특징으로 하는 체크포인팅 방법.
  99. 제98항에 있어서, 각각의 명령 일련 번호에서 맵핑을 형성하는 물리적인 레지스터로 상기 물리적인 레지스터를 복구하는 상기 단계는,
    명령 일련 번호에 의해 상기 자원 리클레임 데이타 구조로 백워드 인덱싱하여 상기 논리 레지스터 태그 필드에 기억되어 있는 논리 레지스터 태그 및 상기 명령 일련 번호와 관련된 상기 이전의 물리적인 레지스터 태그 필드에 기억되어 있는 상기 물리적인 레지스터 태그를 판독하는 단계와;
    상기 논리 레지스터 태그 필드로부터 판독된 상기 논리 레지스터 태그와 관련된 상기 레지스터 리네임 엘리먼트를 식별하는 단계와;
    상기 태그 필드에 기억되어 있는 상기 물리적인 레지스터 태그를 판정하도록 상기 논리 레지스터 태그에 대응하는 리네임 맵 엘리먼트를 판독하는 단계와;
    상기 리네임 맵에 기억되어 있는 상기 판정된 물리적인 레지스터 태그를 상기 물리적인 레지스터 프리리스트에 기록하는 단계와;
    상기 이전의 물리적인 태그 필드에 기억되어 있는 상기 물리적인 레지스터 태그를, 상기 자원 리클레임 유닛 엘리먼트의 상기 논리 레지스터 태그 필드에 기억되어 있는 상기 논리 레지스터 태그에 대응하는 레지스터 리네임 맵 엘리먼트에 기억하여, 상기 레지스터 리네임을 효과적으로 반전하고 상기 명령 실행 바로전의 상태로 레지스터 상태를 복구하는 단계와;
    상기 리클레임 엘리먼트가 유효 데이타 세트를 포함하지 않음을 나타내도록 상기 명령 일련 번호에 해당하는 상기 리클레임 엘리먼트 유효 필드에 지시자를 기록하는 단계를 포함하며,
    상기 물리적인 레지스터 프리리스트 유닛 엘리먼트, 상기 레지스터 리네임 뱁 엘리먼트, 및 상기 레지스터 리클레임 유닛 엘리먼트는 상기 특정 명령의 이슈 바로 이전의 상태로 복구되는 것을 특징으로 하는 체크포인팅 방법.
  100. 제99항에 있어서, 상기 자원 리타이어먼트 포인터(RRP)로서 저장된 상기 명령 일련 번호를 판정하는 단계와;
    상기 자원 리타이어먼트 포인터(RRP)가 기억되어 있는 특정 리클레임 엘리먼트와 관련된 명령 일련 번호(SN) 보다 크거나 같게 진행되는 경우, 명령 일련 번호(SN)에 해당하는 특정 논리 레지스터에 이전에 할당된 물리적인 레지스터의 할당을 해제하는 단계를 포함하는 것을 특징으로 하는 체크포인팅 방법.
  101. 제100항에 있어서, 물리적인 레지스터의 할당을 해제하는 상기 단계는,
    상기 명령 일련 번호에 대응하는 상기 특정 리네임 맵 엘리먼트에 기억되어 있는 상기 물리적인 레지스터 태그를 상기 물리적인 레지스터 프리리스트에 기억하는 단계와;
    상기 리클레임 엘리먼트가 유효 데이타 세트를 포함하지 않음을 나타내도록 상기 명령 일련 번호에 해당하는 상기 리클레임 엘리먼트 유효 필드에 지시자를 기록하는 단계를 포함하는 것을 특징으로 하는 체크포인팅 방법.
  102. 제94항에 있어서, 상기 명령 실행 이전에 물리적인 레지스터를 할당하는 상기 단계는 상기 실행 유닛에 상기 명령을 이슈하기 이전에 상기 물리적인 레지스터를 할당하는 단계를 포함하는 것을 특징으로 하는 체크포인팅 방법.
  103. 제97항에 있어서, 상기 다수의 레지스터 타입은 정수 레지스터형, 부동소수점 레지스터형, 조건 코드 레지스터형, Y-레지스터형, 트랩-스택 레지스터형으로 구성된 그룹에서 선택되는 것을 특징으로 하는 체크포인팅 방법.
  104. 제94항에 있어서, 상기 물리적인 레지스터 수는 논리 레지스터의 수 보다 많고 각각의 상기 논리 레지스터는 다수의 물리적인 레지스터에 맵핑될 수 있는 것을 특징으로 하는 체크포인팅 방법.
  105. 제94항에 있어서, 명령에 의해 관련된 각각의 논리 소스 레지스터는 임의의 논리 수신지 레지스터가 물리적인 레지스터로 맵핑되기 전에 물리적인 레지스터로 맵핑되는 것을 특징으로 하는 체크포인팅 방법.
  106. 명령이 물리적인 레지스터 위치상에 논리적인 레지스터 위치를 맵핑함으로써 이슈되는 경우 사용되는 레지스터에 대한 레지스터 리네임을 실행하는 CPU에서, 정규 상태 동안에 체크포인팅되는 데이타양을 감소시키 위한 방법에 있어서,
    상기 이슈된 명령에 의해 사용되는 논리 소스 레지스터를 식별하는 단계와;
    이용가능한 물리적인 레지스터상에 각각 식별된 논리 소스 레지스터를 맵핑하고 자원 리네임 데이타 구조에 상기 논리적인 맵핑 대 물리적인 맵핑을 기억하는 단계와;
    상기 이슈된 명령에 의해 사용되는 논리 수신지 레지스터를 식별하는 단계와;
    이용가능한 물리적인 레지스터상에 각각 식별된 논리적인 수신지 레지스터를 맵핑하고 자원 리네임 데이타 구조에 상기 논리적인 맵핑 대 물리적인 맵핑을 기억하는 단계와;
    프리 물리적인 레지스터의 리스트를 기억하는 상기 CPU내에 기억되어 있는 제1 데이타 기억 장치를 제공하는 단계와;
    명령 일련 번호(SN)을 갖는 상기 명령에 의해 관련된 논리적인 레지스터에 대하여 명령 일련 번호(SN), 논리적인 레지스터 태그를 기억하는 상기 CPU내 제2 데이타 기억 장치를 제공하는 단계와;
    명령 실행 이전에 명령 이슈하는 동안에, 상기 명령을 실행하기 이전에 이슈된 명령에 영향을 받는 상기 리네임된 소스 및/또는 수신지 레지스터의 상태에 적합한 머신 상태 데이타를 기억함으로써 상기 리네임된 논리 및 물리적인 레지스터를 체크포인팅하는 단계를 포함하는 것을 특징으로 하는 체크포인팅되는 데이타양 감소 방법.
  107. 제106항에 있어서, CPU 백업 초기화 신호 조건의 수신에 따라, 상기 레지스터 리네임 맵을 백업되는 상기 명령을 실행하기 바로 전의 시점의 상태로 복구함으로써 초기 머신 상태를 복구시키는 단계를 포함하는 것을 특징으로 하는 체크포인팅되는 데이타양 감소 방법.
  108. 순위적으로 이슈된 명령의 비순위 추측 실행을 수행하고, 명령을 이슈하기 위한 명령 이슈 유닛 및 명령을 실행하기 위한 실행 유닛을 구비하는 중앙 처리 장치에 있어서,
    상기 CPU내에서 실행되는 경우 아키텍쳐 상태를 수정하고 명령이 실행하기 이전의 프로세서 상태를 저장하도록 체트포인팅되는 제1 세트의 명령 타입의 동치를 미리 기억하기 위한 기억 수단과;
    상기 CPU내에서 실행되는 경우 아키텍쳐 상태를 수정하고 제2 세트의 명령이 실행하기 전에 아키텍쳐 상태를 체크포인트하지 않고 특정 실행 모드로 실행될 제2 세트의 명령 타입의 매칭을 미리 기억하기 위한 기억 수단과;
    상기 제1 및 제2 기억된 명령 타입과 이슈된 명령 타입을 비교하여, 이슈된 명령이 공칭 실행 모드로 실행하기 이전에 체크포인트되거나 또는 체크포인트되지 않고 특정 프로세서 모드로 실행됨을 나타내는 출력 신호를 생성하는 비교기와;
    상기 비교기 출력 신호에 응답하여, 체크포인트 정보를 초기화하여 실행 이전에 상기 제1 타입 명령에 대한 아키텍쳐 상태를 체크포인트하는 체크포인트 수단과;
    상기 특정 실행 모드로 상기 제2 타입의 명령을 실행하는 단계를 포함하는, 상기 명령을 실행하기 위한 명령 실행 수단을 포함하는데, 상기 특정 실행 모드는 상기 제2 타입 명령을 실행하기 전에 상기 프로세서를 동기화하는 수단을 포함하는 것을 특징으로 하는 중앙 처리 장치.
  109. 명령을 이슈하는 명령 이슈 유닛, 데이타 기억용 메모리 및 명령을 실행하는 실행 유닛을 구비하며, 순위적으로 이슈된 명령의 비순위 추측 실행을 수행하는 중앙 처리 장치에 있어서,
    상기 CPU의 메모리내 데이타 기억 영역의 데이타 구조와;
    상기 데이타 구조내에서 대응하는 싱글 체크포인트에 각각 할당되고 다수의 체크포인트 상태 필드를 갖는 다수의 체크포인트 할당 레지스터와;
    명령 일련 번호(SN)를 갖는 명령에 대하여 순차적으로 이용가능한 다음 체크포인트 할당 레지스터 n을 할당하는 수단과;
    상기 다수의 상태 필드에 상기 명령에 대한 체크포인트 상태 정보를 기억하는 수단과;
    소정의 시간 간격동안 커미트된 일련 번호 포인터(CSN)을 모니터링하여 상기 커미트된 명령 일련 번호 포인터(CSN)가 체크포인트 n과 다음 기억되어 있는 체크포인트 n+1과 관련된 명령 일련 번호(SN)를 통과하는 지를 판정하는 수단과;
    CPU 백업 신호에 응답하여 상기 체크포인트 할당 레지스터에 기억되어 있는 정보를 상기 CPU에 전달하기 위한 수단과;
    상기 커미트된 명령 일련 번호 포인터(CSN)가 체크포인트 n과 다음 기억되어 있는 체크포인트 n+1과 관련된 상기 명령 일련 번호를 통과하는지의 여부 판정에 따라 이전에 할당된 체크포인트를 할당 해제하는 단계를 포함하는데, 상기 명령 상태는 트랙킹되고 체크포인트는 명령 상태에 기초하여 할당 및 할당 해제되는 것을 특징으로 하는 중앙 처리 장치.
  110. 명령을 이슈하는 명령 이슈 유닛, 데이타 기억용 메모리 및 명령을 실행하는 실행 유닛을 구비하며, 순위적으로 이슈된 명령의 비순위 추측 실행을 수행하는 중앙 처리 장치에서, 선택된 인스터럭션을 실행하기 전에 상기 CPU를 동기화하는 장치에 있어서,
    실행 이전에 명령 유출에서 머신 동기화를 요구하는 동기화 명령으로서 실행 동안에 머신 상태를 수정하는 명령을 식별하기 위한 수단과;
    상기 미결정 명령의 실행이 에러없이 실행 완료하고 실행 결과가 CPU 상태로 복구 기록되도록 모든 미결정의 이슈 명령이 커미트되어 리타이어될때까지 상기 동기화 명령의 실행을 지연하기 위한 수단과;
    순서적으로 그리고 순위적으로 머신 동기화를 요구하는 각각의 명령을 실행하기 위한 수단과;
    CPU 상태로 복구 기록되기 전에 각각의 상기 동기화 명령의 실행으로부터 발생하는 예외 조건을 식별하기 위한 수단과;
    상기 동기화 명령 실행 동안에 발생하는 상기 예외 조건중 임의의 조건을 처리하는 예외 처리기와;
    머신 상태로 복구되는 실행 결과를 기록하기 위한 수단을 포함하는데, 정규 상태는 상기 동기화 명령에 의해 수정가능한 상태를 미리기억하지않고도 상기 동기화 명령에 대해 유지되는 것을 특징으로 하는 CPU 동기화 장치.
  111. 명령을 이슈하는 명령 이슈 유닛, 데이타 기억용 메모리 및 명령을 실행하기 위한 실행 유닛을 구비하며 순위적으로 이슈되는 명령을 비순위적인 추측 실행을 수행하는 중앙 처리 장치에서, 중앙 처리 장치의 정규 상태 동안에 체크포인트된 데이타의 양을 감소하기 위해 명령을 체크포인팅하는 장치에 있어서,
    상기 중앙 처리 장치내 데이타 기억 장치의 다수의 맵 레지스터 엘리먼트를 가지는 레지스터 리네임 데이타 구조와;
    상기 명령 실행 이전에 명령에 의해 관련된 각각의 논리 소스 및/또는 논리 수신지에 대하여 상기 CPU내 이용가능한 물리적인 레지스터를 할당하는 수단과;
    고유 논리 레지스터 태그에 의해 상기 논리적인 소스 레지스터 및 논리적인 수신지 레지스터 각각을 식별하기 위한 수단과;
    물리적인 레지스터 태그에 의해 할당가능한 물리적인 레지스터 각각을 식별하기 위한 수단과;
    상기 고유의 논리적인 레지스터 태그중 하나와 상기 다수의 맵 레지스터 엘리먼트중 하나를 각각 관련시키기 위한 수단과;
    할당된 물리적인 레지스터에 대하여 고유 논리적인 레지스터 태그와 관련된 맵 레지스터 엘리먼트의 상기 할당된 물리적인 레지스터 각각으로 식별되는 상기 물리적인 레지스터 태그를 기억하기 위한 수단을 포함하는데,
    상기 명령의 이슈 결과가 저장되고 CPU 백업이 복구가능할 경우 상기 레지스터로 변환된 모든 상태를 요구하는 것을 특징으로 하는 체크포인팅 장치.
  112. 명령 이슈 수단, 명령 실행 수단, 및 데이타 기억하기 위한 데이타 기억 장치를 구비한 중앙 처리 장치(CPU)에서 상기 실행 수단에서 발생하는 예외에 대한 예외 처리를 바운딩하는 방법에 있어서,
    타임 아웃 조건을 형성하는 열거된 이벤트 발생수의 소정의 임계값을 설정하여 상기 CPU내 제1 데이타 기억 장치에 상기 소정의 임계값을 기억하는 단계와;
    상기 열거된 이벤트의 발생을 상기 CPU내 카운터에서 카운팅하고 상기 발생수를 카운트로서 상기 CPU내 제2 데이타 기억 장치에 기억하는 단계와;
    상기 임계값과 상기 카운트를 비교하는 단계와;
    상기 카운트가 상기 타임 아웃 조건 보다 크거나 같을 경우 타임 아웃 체크포인트를 형성하는 단계를 포함하는 것을 특징으로 하는 예외 처리 바운딩 방법.
  113. 제112항에 있어서, 제1 명령 실행 이전에 초기값으로 상기 카운트를 초기화하는 단계와;
    상기 타임 아웃 체크포인트가 형성되고 체크포인트가 형성된 후에 상기 초기 상태로 상기 카운트를 리셋하는 단계를 추가로 포함하는 것을 특징으로 하는 예외 처리 바운딩 방법.
  114. 제113항에 있어서, 상기 타임 아웃 체크포인트에 관한 정보가 연속 형성되는 체크포인트 사이에서 상기 소정수의 명령에 이슈되는 명령수를 리미트하도록, 상기 열거된 이벤트는 상기 중앙 처리 장치에 의한 임의의 명령의 이슈인 것을 특징으로 하는 예외 처리 바운딩 방법.
  115. 제114항에 있어서, 상기 명령은 임의 명령 특성을 가지는 것을 특징으로 하는 예외 처리 바운딩 방법.
  116. 제113항에 있어서, 상기 열거된 이벤트는 소정수의 머신 클럭 사이클의 실행인 것을 특징으로 하는 예외 처리 바운딩 방법.
  117. 제113항에 있어서, 상기 열거된 이벤트는 체크포인트를 형성하지 않고 통과하는 명령 이슈 사이클수인 것을 특징으로 하는 예외 처리 바운딩 방법.
  118. 제114항에 있어서, 상기 타임아웃 체크포인트를 형성하는 단계는 상기 CPU내의 모든 레지스터에 대한 상태 정보를 기억하는 단계를 포함하며 상기 CPU의 완료 상태를 특징짓는 상태 정보를 기억하는 단계를 포함하는 것을 특징으로 하는 예외 처리 바운딩 방법.
  119. 제114항에 있어서, 상기 타임아웃 체크포인트를 형성하는 상기 단계는 상기 CPU내에 형성된 최후 타임아웃 체크포인트를 포함하는 최후 체크포인트 이래 변화되는 데이타의 표시만을 기억하는 레지스터 리네임 맵 상태를 특징짓는 상태 정보를 기억하는 단계를 포함하는 것을 특징으로 하는 예외 처리 바운딩 방법.
  120. 제119항에 있어서, 상기 표시는 논리적인 레지스터 대 물리적인 레지스터의 맵핑을 포함하는 것을 특징으로 하는 예외 처리 바운딩 방법.
  121. 제144항에 있어서, 결함 명령에 의해 야기되는 실행 에러로부터 회복하는 상기 단계는,
    상기 결함 명령 전에 순차적으로 체크포인팅된 명령에 대해 형성된 체크포인트로부터 초기 프로세서 상태를 복구하는 단계와;
    상기 결함있는 명령에서 상기 초기 체크포인팅된 명령으로 상기 CPU를 백업하는 단계와;
    상기 체크포인팅된 명령으로부터 앞으로 명령을 재실행하는 단계를 포함하는 것을 특징으로 하는 예외 처리 바운딩 방법.
  122. 제114항에 있어서, 결함 명령에 의해 야기되는 실행 에러로부터 회복하는 상기 단계를 추가로 포함하며,
    상기 결함 명령 보다 순차적으로 후에 체크포인팅되는 명령에 대해 형성된 체크포인트로부터 초기 프로세서 상태를 회복하는 단계와;
    상기 결함 명령에서 순차적으로 후에 체크포인팅되는 명령으로 상기 CPU를 백업하는 단계와;
    상기 후에 체크포인팅되는 명령과 상기 결함있는 명령 사이에 순차적으로 배치되어 있는 각각의 명령에 대하여 프로세서 상태를 회복하는 단계를 포함하며, 상기 결함 명령으로 상기 CPU를 백스텝핑하는 단계를 포함하는 것을 특징으로 하는 예외 처리 바운딩 방법.
  123. 제114항에 있어서, 타임아웃 체크포인트가 처리될때 모든 체크포인트가 할당되는 경우, 명령 디코딩형 체크포인트를 유지하는데 요구될 수 있는 머신을 정지시키기 보다는 오히려 소정의 규칙에 따라 타임아웃 체크포인트의 정보를 지연시키는 단계를 포함하는 것을 특징으로 하는 예외 처리 바운딩 방법.
  124. 제123항에 있어서, 상기 소정의 규칙은 소정수의 사이클 동안에 타임아웃 체크포인트의 정보를 지연시키는 단계를 포함하는 것을 특징으로 하는 예외 처리 바운딩 방법.
  125. 명령을 이슈하는 명령 이슈 유닛을 구비한 중앙 처리 장치(CPU)에서 예외 처리를 바운딩하는 방법에 있어서,
    상기 CPU내 데이타 기억 장치의 소정의 타임 아웃 임계값 카운트를 설정하는 단계와;
    상기 CPU내 데이타 기억 장치에 초기 카운트 번호를 기억하는 단계와;
    명령이 이슈되는 CPU 클럭 사이클 동안에 상기 명령 이슈 유닛으로부터 명령 이슈 신호를 전송하여 최소한 하나의 명령이 상기 CPU 클럭 사이클 동안에 이슈되는 지의 여부를 나타내는 단계와;
    상기 명령 이슈 신호에 응답하여 수신된 상기 명령 이슈 신호의 수를 카운팅하는 타임 아웃 카운터를 제공하는 단계와;
    상기 명령 이슈 신호를 수신하는 단계와;
    각각의 CPU 클럭 사이클 동안에 수신되는 명령 이슈 신호의 수를 카운팅하여 상기 CPU내 데이타 기억 장치에 기억되어 있는 누적된 수에 상기 명령 이슈 신호의 수를 더하는 단계와;
    메이크 타임 아웃 체크포인트 신호(make time-out checkpoint signal)에 응답하여 형성된 체크포인트와 디코딩된 명령 특성에 따라 형성된 체크포인트를 포함하는 체크포인트가 형성될 때마다 초기값으로 상기 카운트수를 리셋하는 단계와;
    각각의 CPU 클럭 사이클 동안에 상기 타임 아웃 임계값 카운트와 상기 누적된 카운트수를 비교하여 상기 누적된 카운트수가 상기 임계값 카운트 보다 크거나 같은지를 판정하는 단계와;
    상기 타임아웃 카운터내에서 상기 누적된 카운트수가 상기 임계값 보다 크거나 같을 경우 메이크 타임아웃 체크포인트 신호를 발생하는 단계와;
    체크포인트 타임아웃 조건이 발생하고 체크포인트가 형성되어야 하는 것을 알리는 상기 명령 이슈 유닛에 상기 메이크 타임아웃 체크포인트 신호를 전달하는 단계와;
    상기 메이크 타임아웃 체크포인트 신호에 응답하여 체크포인트를 형성하고 상기 초기값으로 상기 카운트수를 리셋하는 단계를 포함하는데,
    상기 타임아웃 체크포인트의 정보가 연속 형성된 체크포인트 사이에 이슈되는 명령수를 소정수의 명령으로 리미트하여 예외 조건이 발생하는 경우 복구되어야 하고 재실행되어야 하는 이슈된 명령의 수를 바운딩하는 것을 특징으로 하는 예외 처리 바운딩 방법.
  126. 제125항에 있어서, 상기 타임 아웃 임계 카운트와 상기 누적된 카운트수를 비교하는 상기 단계 이후 그리고 상기 메이크 타임아웃 체크포인트 신호 발생 단계 이전에,
    동일 CPU에서 이슈되어야 하는 명령 이슈 윈도우에서의 명령이 명령 특성에 기초하여 체크포인트를 요구하는 지를 판정하는 단계와;
    상기 메이크 타임아웃 체크포인트 신호의 발생을 지연시키는 단계와;
    상기 디코딩된 명령에 응하여 체크포인트를 형성하는 단계와;
    체크포인트 형성에 기초한 명령 특성에 대한 체크포인트 정보에 응하여 상기 초기값 체크포인트로 상기 누적된 카운트수를 리셋하는 단계를 추가로 포함하는 것을 특징으로 하는 예외 처리 바운딩 방법.
  127. 명령 이슈시 명령 이슈 신호를 발생하는 명령 이슈 유닛, 및 상기 명령 이전의 체크포인트 프로세서 상태 형성시 체크포인트 형성 신호를 발생하는 체크포인트 형성 유닛을 구비한 프로세서의 타임아웃 체크포인트 카운터 장치에 있어서,
    상기 명령 이슈 신호를 수신하기 위한 인에이블 입력 포트 및 상기 체크포인트 형성 신호 및 누적된 카운트 출력 신호를 수신하기 위한 리셋 포트를 가지며, 각각 수신된 명령 이슈 신호에 응답하여 카운터를 증가시키는 카운터 회로와;
    소정의 타임아웃 임계 카운트를 기억하는 데이타 기억 장치와;
    상기 누적된 카운트 출력 신호와 상기 기억된 타임아웃 임계 카운트를 비교하는 비교기를 포함하는데, 상기 카운터 회로는 소정수의 명령 이슈 신호를 카운팅한 후에 타임아웃 리퀘스트 신호를 출력하는 것을 특징으로 하는 타임아웃 체크포인트 카운터 장치.
  128. 명령을 이슈하는 이슈 유닛, 명령을 실행하는 실행 유닛, 상기 중앙 처리 장치내에서 상기 실행 유닛에서 다른 유닛으로 실행 결과를 전달하는 데이타 포워드 분배 버스를 구비한 중앙 처리 장치에서, 추측으로 이슈된 예측 명령의 실행 결과를 동시에 모니터링하는 방법에 있어서,
    상기 프로세서내에서 상기 데이타 포워드 분배에 관하여 상기 실행 유닛으로부터 실행 결과 신호를 수신하도록 관련되어 워치포인트 데이타를 기억하는 다수의 워치포인트 레지스터를 구비한 워치포인트 유닛을 제공하는 단계와;
    상기 추측으로 이슈된 예측 명령 각각에 대하여, 추측으로 이슈된 예측 명령에 기초하여 제어 흐름 전송 방향이 의존하는 조건의 예측된값을 식별하는 예측된 조건 데이타 결과를 내포하는 워치포인트 데이타를 기억하는 워치포인트 레지스터 할당 단계와;
    상기 데이타 포워드 버스상으로 전달되는 상기 추측으로 이슈된 예측 명령에 대한 실행 결과 신호를 모니터링하는 단계와;
    상기 기억된 워치포인트 및 실제 공지된 조건 데이타 결과 신호를 포함하는 실행 결과 신호, 및 소정의 규칙에 기초하여 소정의 이벤트 발생을 검출하는 단계를 포함하는데, 상기 실제 공지된 조건 데이타 결과 신호는 추측으로 이슈된 예측 명령의 제어 흐름 전송 방향이 판정되어야 하는 조건의 실제값을 식별하고;
    상기 추측으로 이슈된 예측 명령중 한 명령에 대한 상기 워치포인트 레지스터에 기억되어 있는 상기 워치포인트 데이타와 상기 추측으로 이슈된 예측 명령에 관계하는 상기 데이타 포워드 버스상으로 도달한 상기 결과 신호를 비교하여, 상기 신호가 상기 추측으로 이슈된 예측 명령이 정확하게 예측되었는지 또는 잘못예측되었는지를 판정하는 단계와;
    상기 비교가 상기 명령이 잘못예측되었음을 나타내는 경우, 상기 잘못예측에 기초하여 실행된 명령이 복구되도록, 초기 중앙 처리 장치으로 상기 중앙 처리 장치를 회복하는 단계를 포함하는 것을 특징으로 하는 모니터링 방법.
  129. 제128항에 있어서, 상기 데이타 포워드 버스상에 나타나는 실행 결과 신호가 상기 소정의 이벤트 발생을 검출할때 더이상 초래하지 않도록 상기 중앙 처리 장치를 회복하는 상기 단계 처리후 상기 워치포인트 엘리먼트를 할당 해제하는 단계를 추가로 포함하는 것을 특징으로 하는 모니터링 방법.
  130. 제128항에 있어서, 상기 중앙 처리 장치를 회복하는 상기 단계는,
    상기 실제 공지된 조건 데이타 결과 신호가 인출되고 예측 오류를 정정하기 위해 이슈될 수 있도록 정확한 명령 유출에 대응하는 상기 이슈 유닛에 새로운 명령 어드레스를 공급하는 단계와;
    상기 예측 오류에 기초하여 실행된 명령이 복구되도록 인스럭션을 재개시하기 바로 이전의 상태로 중앙 처리 장치 상태를 복구하는 단계와;
    상기 인출된 명령에 기초하여 상기 정확한 명령 유출에서의 상기 새로운 명령에 대한 실행을 초기화하는 단계를 포함하는 것을 특징으로 하는 모니터링 방법.
  131. 제130항에 있어서, 상기 모니터링 방법은 상기 추측으로 이슈된 예측 명령 실행 이전의 체크포인트 데이타 기억 장치의 중앙 처리 장치 머신 상태를 기억하는 수단을 추가로 포함하고, 중앙 처리 장치 상태를 복구하는 상기 단계는 상기 새로운 명령에 대하여 실행을 초기화하는 상기 단계 실행 이전의 상기 체크포인트 데이타 기억 장치로부터의 중앙 처리 장치 상태를 복구하는 단계를 포함하는 것을 특징으로 하는 모니터링 방법.
  132. 제131항에 있어서, 상기 중앙 처리 장치를 초기 중앙 처리 장치로 회복하는 단계는 상기 초기 상태로 회복하기 위하여 상기 중앙 처리 장치를 백업하는 단계를 추가로 포함하는 것을 특징으로 하는 모니터링 방법.
  133. 제131항에 있어서, 상기 중앙 처리 장치를 초기 중앙 처리 장치로 복구하는 상기 단계는 백업 단계 및 상기 초기 상태로 복구하도록 상기 중앙 처리 장치를 백스텝핑하는 단계를 추가로 포함하는 것을 특징으로 하는 모니터링 방법.
  134. 제128항에 있어서, 상기 추측으로 이슈된 예측 명령중 한 명령에 대해 상기 워치포인터 레지스터에 기억되어 있는 상기 워치포인트 데이타는 WP_COND 신호를 포함하고, 상기 데이타 포워드 버스상으로 도달하는 상기 결과 신호는 XCC_DATA_C, ICC_DATA_C, 또는 FCC_DATA_C, FXU_XCC_DATA, FXU_ICC_DATA, FXAGU_XCC_DATA, FXU_ICC_DATA 및 FPU_FCC_DATA로 구성된 그룹에서 선택된 실행 유닛 조건 코드 데이타를 포함하는 것을 특징으로 하는 모니터링 방법.
  135. 제128항에 있어서, 상기 명령은 예측된 분기 명령을 포함하는 것을 특징으로 하는 모니터링 방법.
  136. 제128항에 있어서, 상기 명령은 점프 및 링크 명령을 포함하는 것을 특징으로 하는 모니터링 방법.
  137. 제128항에 있어서, 상기 명령은 예측된 분기, 및 점프 및 링크 명령을 포함하는 것을 특징으로 하는 모니터링 방법.
  138. 제128항에 있어서, 상기 새로운 어드레스는 워치포인트 유닛내 데이타 기억 장치에 기억되어 있는 것을 특징으로 하는 모니터링 방법.
  139. 명령을 이슈하는 명령 이슈 유닛, 이슈된 명령을 실행하는 실행 유닛, 및 상기 실행 유닛으로부터 상기 CPU의 다른 구성 소자로 실행 결과를 전달하기위한 다수의 데이타 포워드 버스를 구비하는 중앙 프로세서(CPU)에서, 상기 실행 결과 발생 유닛으로부터 대기하고 있는 소정의 명령에 대하여 실행 결과 데이타를 동시에 획득하는 방법에 있어서,
    상기 결과 데이타가 획득될 수 있는 각각의 실행 결과 소스로부터의 인에이블 제어 신호를 수신하는 단계와;
    상기 실행 결과 소스 유닛의 상기 결과 데이타가 수신될 것이고 상기 결과 데이타가 기대되는 현행 클럭 사이클에 비례하는 시간을 나타내는 소스 선택 신호를 수신하는 단계와;
    상기 인에이블 제어 신호의 수신에 응답하여 데이타 획득 인에이블 신호, 상기 데이타형 신호, 및 선택된 실행 결과 소스 유닛을 형성하도록 소정의 규칙에 따라 상기 선택 소스 신호를 발생하는 단계와;
    상기 실행 결과 소스 유닛으로부터 실행 결과 데이타 신호를 모니터링하는 단계와;
    상기 도달 실행 결과 데이타 및 상기 획득 데이타 인에이블 신호에 응답하여 상기 선택된 실행 결과 소스 유닛으로부터 실행 결과 데이타를 획득하는 단계와;
    상기 중앙 처리 장치내 데이타 기억 장치에 평가를 위한 상기 획득된 실행 결과를 기억하는 단계를 포함하는 것을 특징으로 하는 데이타 획득 방법.
  140. 제139항에 있어서, 최소한 하나의 데이타 획득 인에이블 신호 발생에 응답하여 상기 획득된 실행 결과 데이타의 평가를 초기화하는 단계를 추가로 포함하는 것을 특징으로 하는 데이타 획득 방법.
  141. 제139항에 있어서, 금지 제어 신호를 수신하는 단계와;
    상기 금지 제어 신호가 수신되는 경우 상기 데이타 획득 인에이블 신호를 발생하는 상기 단계를 금지하는 단계를 포함하는 것을 특징으로 하는 데이타 획득 방법.
  142. 제141항에 있어서, 상기 금지 제어 신호는 조건 코드가 현행 머신 사이클에서 이슈되는 명령에 의해 수정된다는 것과, 현행 사이클 동안에 상기 데이타 포워드 버스상에 나타나는 조건 코드가 현행 사이클 동안에 유효하지 않다는 것을 나타내는, 상기 조건 코드 리네임 유닛으로부터의 조건 코드 리네임 신호를 포함하는 것을 특징으로 하는 데이타 획득 방법.
  143. 제139항에 있어서, 상기 실행 결과 데이타는 조건 코드 데이타를 포함하는 것을 특징으로 하는 데이타 획득 방법.
  144. 제139항에 있어서, 상기 실행 결과 데이타는 리네임된 조건 코드 데이타를 포함하는 것을 특징으로 하는 데이타 획득 방법.
  145. 제139항에 있어서, 상기 실행 결과 데이타는 부동소수점 실행 유닛, 정수 실행 유닛, 및 어드레스 발생 유닛으로부터 수신되는 조건 코드 데이타와, 조건 코드 리네임 유닛으로부터 수신되는 리네임 조건 코드 데이타를 포함하고;
    상기 조건 코드 데이타 및 상기 리네임 조건 코드 데이타는 동일 머신 사이클 동안에 수신되는 것을 특징으로 하는 데이타 획득 방법.
  146. 제139항에 있어서, 상기 실행 결과 데이타는 조건 코드 데이타를 포함하고, 상기 소정의 명령은 예측 분기 명령을 포함하는 예측 제어 흐름 전송 명령을 포함하는 것을 특징으로 하는 데이타 획득 방법.
  147. 제139항에 있어서, 상기 실행 결과 데이타는 계산된 점프 및 링크 어드레스를 포함하고 상기 소정의 명령은 점프 및 링크 명령을 포함하는 것을 특징으로 하는 데이타 획득 방법.
  148. 제139항에 있어서, 상기 실행 결과 데이타는 조건 코드 데이타 및 계산된 점프 및 링크 어드레스를 포함하고 상기 소정의 명령은 예측 분기 명령, 및 점프 및 링크 명령을 포함하는 것을 특징으로 하는 데이타 획득 방법.
  149. 제139항에 있어서, 상기 실행 결과 소스는 명령 실행 유닛을 포함하는 것을 특징으로 하는 데이타 획득 방법.
  150. 제139항에 있어서, 상기 실행 결과 소스 유닛은 레지스터 리네임 유닛을 추가로 포함하는 것을 특징으로 하는 데이타 획득 방법.
  151. 제150항에 있어서, 상기 레지스터 리네임 유닛은 조건 코드 레지스터 리네임 유닛을 포함하고 상기 실행 유닛 결과 데이타는 리네임된 조건 코드 데이타를 포함하는 것을 특징으로 하는 데이타 획득 방법.
  152. 제139항에 있어서, 상기 실행 결과 소스 유닛은 정수 실행 유닛, 부동소수점 실행 유닛, 어드레스 발생 유닛, 및 조건 코드 레지스터 리네임 유닛을 포함하는 것을 특징으로 하는 데이타 획득 방법.
  153. 제139항에 있어서, 상기 실행 결과 데이타는 조건 코드 데이타 및 어드레스 데이타를 포함하는 것을 특징으로 하는 데이타 획득 방법.
  154. 제139항에 있어서, 상기 조건 코드형 신호는 상기 명령이 제공될때 발생되는 상기 조건 코드 리네임 유닛으로부터의 조건 코드 신호를 포함하고, 명령 이슈 동안에 초기 발생되어 워치포인트 기억 엘리먼트에 차후 기억되는 것을 특징으로 하는 데이타 획득 방법.
  155. 제154항에 있어서, 상기 조건 코드형 신호는 BR_XCC 신호, BR_ICC 신호, BR_FCC 신호 및 이들 조합으로 구성된 그룹에서 선택되는 것을 특징으로 하는 데이타 획득 방법.
  156. 제154항에 있어서, 상기 조건 코드형 신호는 WP_XCC 신호, WP_ICC 신호, WP_FCC 신호 및 이들 조합으로 구성된 그룹에서 선택되는 것을 특징으로 하는 데이타 획득 방법.
  157. 제139항에 있어서, 상기 인에이블 신호는 DO_PREDICT_VEC 또는 WP_ACTIVE로 구성된 그룹으로부터 선택되고;
    상기 결과 데이타형 신호는 BR_XCC 신호, BR_FCC 신호, BR_FCC 신호, WP_XCC 신호, WP_FCC 신호, WP_FCC로 구성된 그룹에서 선택되고;
    상기 선택 소스 신호는 CC_DV_C, FXU_CC_CURR_MATCH, FXU_CC_ARRAY_MATCH, FXAGU_CC_CURR_MATCH, FXAGU_CC_ARRAY_MATCH, FPU_CC_CURR_MATCH 및 FPU_CC_ARRAY_MATCH로 구성된 그룹으로부터 선택되며;
    XCC_DATA_C, FCU_DATA_C 또는 ICC_DATA_C, FXU_XCC_DATA_F, FXAGU_CC_DATA_F. FXAGU_CC_DATA_F 및 FPU_CC_DATA_F 신호로 구성된 그룹으로부터 선택된 소스 신호를 선택하도록, 상기 발생된 소스 선택 신호는 SEL_BR_XCC, SEL_BR_ICC, SEL_FXU_XCC, SEL_FXU_ICC, SEL_FXAGU_XCC, SEL_FXAGU_ICC, SEL_FPU_FCC로 구성된 그룹으로부터 선택되고;
    상기 획득된 실행 결과 데이타는 XCC_DATA_C, FXU_DATA_C 또는 ICC_DATA_C, FXU_XCC_DATA_F, FXAGU_CC_DATA_F, FXAGU_CC_DATA_F, FPU_CC_DATA_F 데이타 신호로 구성된 그룹으로부터 선택되며;
    평가를 위한 상기 획득된 실행 결과 데이타는 EVAL_CC 신호를 포함하는 것을 특징으로 하는 데이타 획득 방법.
  158. 제139항에 있어서, 상기 데이타 기억 유닛은 래치 유닛인 것을 특징으로 하는 데이타 획득 방법.
  159. 제139항에 있어서, 상기 다수의 실행 결과 소스 유닛은 정수 실행 유닛, 어드레스 발생 유닛, 부동소수점 실행 유닛, 및 조건 코드 리네임 유닛을 구비하는 것을 특징으로 하는 데이타 획득 방법.
  160. 제139항에 있어서, 상기 인에이블 제어 신호는 DO_PREDICT_VEC 신호, WP_ACTIVE 신호를 포함하고, 상기 실행 결과 데이타형 신호는 조건 코드형 신호를 포함하는 것을 특징으로 하는 데이타 획득 방법.
  161. 명령을 이슈하는 명령 이슈 유닛, 명령을 실행하는 명령 실행 유닛, 중앙 처리 장치의 다른 구성 소자에 실행 결과를 전달하는 다수의 데이타 포워드 버스를 구비한 중앙 처리 장치에서, 현행 CPU 클럭 사이클에서 리네임에 의해 수정되지 않는 조건 코드 태그에 대하여 상기 데이타 포워드 버스로부터 조건 코드 태그를 획득하는 방법에 있어서,
    리네임된 조건 코드 물리적인 레지스터 태그를 식별하는 리네임된 조건 코드 물리적인 레지스터 태그 신호를 수신하지만 현행 머신 사이클에서 발생하는 조건 코드 태그 수정을 배제하는 단계와;
    상기 데이타 포워드 버스로부터 직접 다수의 조건 코드 신호를 수신하는 단계와;
    상기 실행 유닛으로부터 도달하는 상기 다수의 조건 코드 태그 신호 각각과 상기 수신된 리네임 조건 코드 태그 신호를 동시에 비교하고 상기 도달 데이타 포워드 버스 조건 코드 태그 신호 각각에 대응하는 비교 신호를 발생하는 단계와;
    현행 CPU 사이클 동안에 상기 데이타 포워드 버스상으로 유효 데이타를 송신하는 각각의 실행 유닛으로부터 데이타 유효 신호를 수신하는 단계와;
    현행 CPU 사이클 동안에 상기 데이타 포워드 버스상으로 유효 데이타를 송신하는 각각의 실행 유닛으로부터 도달하는 다른 데이타 유효 제어 신호와 각각의 상기 비교 신호를 동시에 논리적으로 AND 연산 처리하는 단계와;
    각각의 상기 비교 신호 및 각각의 상기 데이타 유효 신호가 어서팅될때 조건 코드 현행 매칭 신호를 발생하는 단계를 포함하는데,
    상기 조건 코드 현행 매칭 신호는 상기 워치포인트 번호를 식별하고 그것에 의해 현행 CPU 사이클에서 상기 데이타 포워드 버스로부터 획득될수 있는 조건 코드 태그 및 관련된 명령 번호를 식별하고;
    상기 현행 매칭 로직은 다수의 미결정되어 추측으로 이슈되는 명령 을 동시에 모니터링할 수 있고 획득될 수 있는 조건 코드를 식별하고, 이슈된 상기 추측으로 이슈되는 명령에 기초하여 예측 평가할 수 있는 것을 특징으로 하는 조건 코드 태그 획득 방법.
  162. 명령을 이슈하는 명령 이슈 유닛, 논리적 및 물리적으로 리네임하는 레지스터 리네임 유닛, 상기 실행 유닛으로부터 중앙 처리 장치의 다른 구성 소자에 실행 결과는 전달하기 위한 다수의 데이타 포워드 버스를 구비한 중앙 처리 장치에서, 현행 CPU 클럭 사이클에서 리네임함으로써 수정될 수 있는 고전 코드 태그에 대하여 상기 데이타 포워드 버스로부터 조건 코드 태그를 획득하는 방법에 있어서,
    상기 CPU내 데이타를 기억하는 다수의 조건 코드 태그 레지스터 엘리먼트를 갖는 조건 코드 태그 어레이 데이타 기억 장치를 제공하는 단계와;
    현행 머신 사이클동안 발생하는 조건 코드 수정을 포함하는 리네임된 조건 코드 물리적인 레지스터 태그를 식별하는 리네임된 조건 코드 물리적인 레지스터 태그를 수신하는 단계와;
    워치포인트 번호를 식별하는 신호 워치포인트 번호 신호 구성 소자 및 그 CPU 사이클동안에 이슈되는 추측으로 이슈되는 명령 각각에 할당되는 대응하는 조건 코드 캐그 레지스터 엘리먼트를 포함하는 DO_PREDICT 신호를 수신하는 단계와;
    제어 코드가 현행 CPU 사이클 동안 이슈되는 명령에 의해 수정되는 경우 조건 코드 리네임 신호를 수신하여, 상기 DO_PREDICT 신호에 의해 식별되는 조건 코드 태그 레지스터 엘리먼트에 상기 리네임된 조건 코드 물리적인 레지스터 태그 신호를 기록하는 기록 인에이블 신호로서 상기 조건 코드 리네임된 신호를 사용하는 단계와;
    상기 DO_PREDICT 신호와 상기 조건 코드 리네임된 신호의 논리적인 AND 연산 처리에 의해 관련하여, 상기 조건 코드 리네임된 신호와 상기 DO_PREDICT 신호가 어서팅되는 경우에만 상기 태그 어레이로 상기 수신된 리네임된 조건 코드 물리적인 레지스터 태그가 기록되는 어레이 위치, 및 기록을 제어하는 기록 제어 인에이블 신호를 발생하는 단계와;
    상기 기록 인에이블 신호 제어하의 상기 태그 어레이에 있는 상기 다수의 조건 코드 태그 레지스터 엘리먼트중 하나에, 상기 추측으로 이슈된 명령과 관련된 상기 수신된 리네임된 조건 코드 물리적인 레지스터 태그 신호를 기억하는 단계를 포함하는데, 상기 어레이의 특정 엘리먼트는 식별되고 상기 DO_PREDICT 신호의 구성 소자으로서 포함된 워치포인트 번호에 의해 인덱싱되며;
    상기 리네임된 조건 코드 물리적인 레지스터 태그가 상기 데이타 포워드 버스상으로 도달하는 조건 코드 태그를 매칭하는 더이상 필요하지 않을 때까지 상기 조건 코드 태그 레지스터내 각각의 상기 기억된 리네임된 조건 코드 물리적인 레지스터 태그 신호를 유지하는 단계와;
    동일 CPU 사이클 동안에 상기 데이타 포워드 버스로부터 다수의 조건 코드 태그 신호를 동시에 수신하는 단계와;
    상기 기억된 리네임된 조건 코드 물리적인 레지스터 태그 신호 각각과 상기 수신된 데이타 포워드 버스 조건 코드 신호 각각을 동시에 비교하여 다수의 어레이 비교 신호를 발생하는 단계와;
    상기 데이타 유효 신호와 상기 어레이 비교 신호를 논리적으로 AND 연산처리하여 상기 비교 신호 및 상기 데이타 유효 신호가 모두 어서팅되는 경우 조건 코드 어레이 매칭 신호를 발생하는 단계를 포함하는데,
    상기 조건 코드 어레이 매칭 신호는 상기 워치포인트 번호에 의해 식별하여, 상기 현행 사이클 동안 상기 데이타 포워드 버스로부터 획득될 수 있는 조건 코드 및 관련된 명령 번호를 식별하고;
    상기 어레이 레이트(late) 매칭 로직은 다수의 미결정된 추측으로 이슈된 명령을 동시에 모니터링할 수 있고, 획득될 수 있고 상기 추측으로 이슈된 명령에 기초하여 예측 평가에 이용할수 있는 조건 코드를 식별할 수 있는 것을 특징으로 하는 조건 코드 태그 획득 방법.
  163. 제139항에 있어서, 리네임된 조건 코드 물리적인 레지스터 태그를 식별하는 리네임된 조건 코드 물리적인 태그 신호를 수신하지만 현행 머신 사이클에서 발생하는 조건 코드 태그 수정을 배제하는 단계와;
    상기 데이타 포워드 버스로부터 직접 다수의 조건 코드 태그 신호를 수신하는 단계와;
    상기 실행 유닛으로부터 도달하는 상기 다수의 조건 코드 태그 신호 각각과 상기 수신된 리네임된 조건 코드 태그 신호를 동시에 비교하여, 상기 도달한 데이타 포워드 버스 조건 코드 태그 신호 각각에 대응하는 비교 신호를 발생하는 단계와;
    상기 현행 CPU 사이클 동안에 상기 데이타 포워드 버스상으로 유효 데이타를 송신하는 각각의 실행 유닛으로부터 데이타 유효 신호를 수신하는 단계와;
    상기 현행 CPU 사이클 동안에 상기 데이타 포워드 버스상으로 유효 데이타를 송신하는 각각의 실행 유닛으로부터 도달하는 다른 데이타 유효 제어 신호와 각각의 상기 비교 신호를 동시에 논리적으로 AND 연산처리하는 단계와;
    각각의 상기 비교 신호 및 상기 데이타 유효 신호가 어서팅되는 경우 조건 코드 현행 매칭 신호를 발생하는 단계를 포함하는데;
    상기 조건 코드 현행 매칭 신호는 상기 워치포인트에 의해 식별하여, 상기 현행 CPU 사이클동안 상기 데이타 포워드 버스로부터 획득될 수 있는 조건 코드 태그 및 관련된 명령 번호를 식별하고;
    상기 현행 매칭 로직은 다수의 미결정된 추측으로 이슈된 명령을 모니터링할 수 있고, 획득될 수 있고 상기 추측으로 이슈된 명령에 기초하여 예측 평가에 이용할 수 있는 조건 코드를 식별할 수 있는 것을 특징으로 하는 조건 코드 태그 획득 방법.
  164. 제163항에 있어서, 상기 CPU내 데이타를 기억하는 다수의 조건 코드 태그 레지스터 엘리먼트를 갖는 조건 코드 태그 어레이 데이타 기억 장치를 제공하는 단계와;
    상기 현행 머신 사이클 동안에 발생하는 조건 코드 수정을 포함하는 리네임된 조건 코드 물리적인 레지스터 태그를 식별하는 리네임된 조건 코드 물리적인 레지스터 태그 신호를 수신하는 단계와;
    워치포인트 번호를 식별하는 신호 워치포인트 번호 신호 구성 소자과 그 CPU 사이클 동안에 이슈되는 추측으로 이슈된 명령 각각에 할당된 대응하는 조건 코드 태그 레지스터 엘리먼트를 포함하는 DO_PREDICT 신호를 수신하는 단계와;
    조건 코드가 현행 CPU 사이클 동안 이슈된 명령에 의해 식별되는 경우 조건 코드 리네임된 신호를 수신하여, 상기 DO_PREDICT 신호에 의해 식별되는 조건 코드 태그 레지스터 엘리먼트에 상기 리네임된 조건 코드 물리적인 레지스터 태그 신호를 기록하는 기록 인에이블 신호로서 상기 조건 코드 리네임된 신호를 사용하는 단계와;
    상기 DO_PREDICT 신호와 상기 조건 코드 리네임된 신호의 논리적인 AND 연산처리에 의해 관련하여, 상기 조건 코드 리네임된 신호 및 상기 DO_PREDICT 신호가 어서팅되는 경우에만 상기 태그 어레이로 상기 수신된 리네임된 조건 코드 물리적인 레지스터 태그가 기록된 상기 어레이 위치, 및 기록을 제어하는 기록 제어 인에이블 신호를 발생하는 단계와;
    상기 기록 인에이블 신호 제어하의 상기 태그 어레이의 상기 다수의 조건 코드 태그 레지스터 엘리먼트중 하나에, 추측으로 이슈된 상기 명령과 관련된 상기 수신된 리네임된 조건 코드 물리적인 레지스터 태그 신호를 기억하는 단계를 포함하며, 상기 어레이의 특정 엘리먼트는 식별되어 상기 DO_PREDICT 신호로서 포함된 워치포인트 번호에 의해 인덱싱되며;
    상기 리네임된 조건 코드 물리적인 레지스터 태그가 상기 데이타 포워드 버스상으로 도달한 조건 코드 태그를 매칭하는데 더이상 필요하지 않을 때까지 상기 조건 코드 태그 레지스터에 상기 기억된 리네임된 조건 코드 물리적인 레지스터 태그 신호를 유지하는 단계와;
    동일 CPU 사이클 동안에 상기 데이타 포워드 버스로부터 다수의 조건 코드 태그 신호를 동시에 수신하는 단계와;
    상기 기억된 리네임된 조건 코드 물리적인 레지스터 태그 신호 각각과 상기 수신된 데이타 포워드 버스 조건 코드 신호 각각을 동시에 비교하여 다수의 어레이 비교 신호를 발생하는 단계와;
    상기 데이타 유효 신호와 상기 어레이 비교 신호를 논리적으로 AND 연산 처리하여, 상기 비교 신호 및 상기 데이타 유효 신호가 어서팅되는 경우 조건 코드 어레이를 발생하는 단계를 포함하며,
    상기 조건 코드 어레이 매칭 신호는 상기 워치포인트 번호에 의해 식별하고 상기 현행 사이클 동안에 상기 데이타 포워드 버스로부터 획득될 수 있는 조건 코드 태그 및 관련된 명령 번호를 식별하고;
    상기 어레이 레이트 매칭 로직은 다수의 미결정된 추측으로 이슈되는 명령을 동시에 모니터링할 수 있고, 획득될 수 있고 상기 추측으로 이슈된 명령에 기초하여 예측 평가에 이용할 수 있는 조건 코드를 식별할 수 있는 것을 특징으로 하는 조건 코드 태그 획득 방법.
  165. 제164항에 있어서, 비교 시간을 감소시키기 위해 상기 조건 코드 데이타와 상기 데이타 포워드 버스 태그를 비교하는 단계를 추가로 포함하며, 상기 데이타 포워드 버스 태그 비교 단계는,
    현행 이슈 윈도우 신호에서 쉽게 리네임된 조건 코드 태그와 각각의 데이타 포워드 버스 태그를 비교함으로써, 현행 이슈 윈도우 사이클의 쉽게 리네임된 조건 코드 태그와 이전 사이클의 조건 코드 태그 사이의 데이타 포워드 버스 태그 비교를 분리하는 단계와;
    각각의 데이타 포워드 버스 태그와 이전 사이클 조건 코드 태그를 비교하는 단계를 포함하며,
    상기 데이타 포워드 버스 태그와, 이전 사이클의 상기 조건 코드 태그 및 현행 이슈 윈도우에서 쉽게 리네임되는 조건 코드 태그와의 상기 비교는, 상기 비교가 싱글 비분할 동작으로 실행되는 경우 보다 더 빠르게 실행되는 것을 특징으로 하는 조건 코드 태그 획득 방법.
  166. 명령을 이슈하는 명령 이슈 유닛, 명령을 실행하는 명령 실행 유닛, 상기 실행 유닛으로부터의 실행 결과를 중앙 처리 장치내에전달하기 위한 수단을 구비한 중앙 처리 장치(CPU)에서, 다수의 추측으로 이슈된 명령의 실행 결과를 동시에 모니터링 하는 방법에 있어서,
    명령 식별용 태그로 각각 이슈된 명령을 식별하는 단계와;
    추측으로 이슈된 각각 명령에 대하여 명령 이슈 동안에 상기 명령 식별 태그와 관련된 인덱싱된 데이타 기억 장치에 상기 CPU내 예측 데이타를 기억시키고, 상기 추측으로 이슈된 명령과 상기 예측 데이타를 관련시키는 단계를 포함하는데, 상기 예측 데이타는 상기 명령이 추측으로 이슈되는 조건의 예측값을 식별하고;
    실행 결과를 전달하는 상기 수단으로 전달되는 모든 이슈된 명령에 대하여 실행 결과 신호를 동시에 모니터링하는 단계와;
    상기 실행 결과 데이타가 전달하기 위한 상기 수단상에 나타나는 경우 상기 예측 데이타와 반드시 동일하지는 않은 데이타에 대응하는 공지된 데이타를 포함하는 상기 실행 결과 데이타중 선택된 하나를 동시에 획득하는 단계를 포함하며, 상기 공지된 데이타는 상기 명령을 추측으로 이슈할 목적으로 가정한 조건의 실제값을 식별하고;
    상기 공지된 데이타와 상기 예측된 데이타를 비교하여 상기 예측된 데이타가 상기 공지된 데이타과 매칭하지 않을 경우 예측 오류 신호를 발생하는 단계와;
    상기 예측 오류에 기초하여 실행된 명령이 복구되도록 예측 오류 수신에 응답하여 초기 중앙 처리 장치 상태로 상기 중앙 처리 장치를 복구하는 단계를 포함하는 것을 특징으로 하는 모니터링 방법.
  167. 중앙 처리 장치에서 추측으로 이슈된 예측 분기 명령을 포함하는 소정의 추측으로 이슈된 명령에 대하여 다수의 예측 오류 신호를 동시에 발생시키는 방법에 있어서,
    워치포인트가 상기 추측으로 이슈된 명령을 모니터링하기 위해 형성됨을 나타내는 워치포인트 활성 상태 신호를 수신하는 단계와;
    상기 추측으로 이슈된 명령 각각에 대하여 상기 CPU내 형성된 데이타 기억 구조에 워치포인트 레지스터 및 워치포인트 번호를 할당하는 단계와;
    상기 하나의 추측으로 이슈된 명령에 관련된 워치포인트 데이타를 수신하여 상기 할당된 워치포인트 레지스터에 기억하는 상기 워치포인트 데이타를 기억하는 단계와;
    제공된 분기 명령 각각에 대하여 분기 명령에 대한 다수의 예측 오류 신호를 동시에 발생하는 단계를 포함하는데,
    상기 예측 오류 신호 동시 발생 단계는:
    조건 코드 선택 논리 회로로부터 평가 조건 코드 신호를 수신하는 단계와;
    워치포인트 기억 엘리먼트로부터 워치포인트 조건 신호를 수신하는 단계와;
    워치포인트 기억 엘리먼트로부터 조건 코드형 제어 신호를 수신하는 단계와;
    각각의 실행 결과 소스 유닛으로부터 인에이블 제어 신호를 수신하는 단계와;
    상기 실행 결과 소스 유닛 각각에 대하여, 상기 인에이블 제어 신호의 어서팅 상태를 포함하는 소정의 조건 코드 평가 규칙에 따른 상기 워치포인트 조건 신호와 상기 평가 조건 코드 신호를 비교하여 분기 조건이 정확히 예측되었는지를 평가하는 단계와;
    상기 분기 명령이 정확히 예측된 경우에, 분기 참 신호를 어서팅하는 단계를 포함하며;
    상기 분기 참 신호가 어서팅된 것으로 판정된 경우 평가 참 신호를 발생하는 단계와;
    추측으로 이슈된 분기 명령에 대하여 상기 결과 데이타를 획득한 결과로서 적어도 하나의 데이타 획득 인에이블 신호 수신에 따라 평가 준비 신호를 발생하는 단계와;
    상기 평가 준비 신호 및 상기 평가 참 신호의 수신에 따라 명령 예측 오류 신호를 발생하는 단계를 포함하는 것을 특징으로 하는 예측 오류 신호 발생 방법.
  168. 중앙 처리 장치에서 추측으로 이슈된 점프 및 링크 명령을 포함하는 소정의 추측으로 이슈된 명령에 대하여 다수의 예측 오류 신호를 동시에 발생하는 방법에 있어서,
    워치포인트가 상기 추측으로 이슈된 명령을 모니터링하기위해 형성된 것임을 나타내는 워치포인트 활성 상태 신호를 수신하는 단계와;
    상기 추측으로 이슈된 명령 각각에 대하여 상기 CPU내에 형성된 데이타 기억 구조에서의 워치포인트 번호 및 관련된 워치포인트 레지스터를 할당하는 단계와;
    상기 워치포인트가 점프 및 링크 명령임을 나타내는 워치포인트 점프 및 링크 인에이블 신호를 수신하는 단계와;
    상기 추측으로 이슈된 하나의 명령에 관한 워치포인트 데이타를 수신하여 상기 할당된 워치포인트 레지스터에 상기 워치포인트 데이타를 기억시키는 단계와;
    상기 이슈된 점프 및 링크 명령에 대하여 다수의 점프 및 링크 예측 오류 신호를 동시에 발생하는 단계를 포함하는데,
    상기 예측 오류 신호 동시 발생 단계는,
    프로그램 카운터 데이타를 기억하는 다수의 기억 위치를 갖는 타겟 어드레스 데이타 구조를 형성하는 단계와;
    상기 점프 및 링크 명령이 이슈되는 경우 상기 타겟 어드레스 데이타 구조 기억 위치중 한 위치에 대체 다음의 카운터를 기록하고, 대체 다음 프로그램 카운터를 상기 명령에 관련시키는 단계와;
    실행 결과 소스 유닛에서의 상기 점프 및 링크 명령 실행 동안에 계산된 다음 프로그램 카운트를 계산하는 단계와;
    상기 점프 및 링크 명령 실행 완료시 점프 및 링크 명령 실행 완료 신호를 발생하는 단계와;
    상기 실행 유닛 소스 유닛으로부터 상기 계산된 다음 프로그램 카운터를 수신하는 단계와;
    상기 기억 위치로부터 상기 점프 및 링크 명령과 관련된 상기 기억되어 있는 대체 다음 프로그램 카운터를 판독하는 단계와;
    상기 계산된 다음 프로그램 카운터값과 상기 대체 다음 프로그램 카운터값을 비교하는 단계와;
    상기 대체 다음 프로그램 카운터값이 상기 계산된 다음 프로그램 카운터값과 매칭하는 경우 점프 및 링크 신호를 발생하는 단계와;
    상기 점프 및 링크 매칭 신호와 상기 워치포인트 점프 및 링크 인에이블 신호의 어서트에 응하여 점프 및 링크 참 신호를 발생하는 단계를 포함하며;
    상기 점프 및 링크 매칭 신호가 어서팅된 것으로 판정된 경우 평가 참 신호를 발생하는 단계와;
    상기 워치포인트 활성 상태 신호, 상기 명령 워치포인트 번호 신호, 상기 워치포인트 활성 상태 신호, 및 상기 점프 및 링크 명령 실행 완료 신호의 어서트에 따라 점프 및 링크 명령을 발생하는 단계와;
    상기 점프 및 링크 명령 평가 인에이블 신호의 수신에 따라 평가 준비 신호를 발생하는 단계와;
    상기 평가 준비 신호 및 상기 평가 참 신호의 수신에 따라 명령 예측 오류 신호를 발생하는 단계를 포함하는 것을 특징으로 하는 예측 오류 신호 동시 발생 방법.
  169. 중앙 처리 장치에서, 추측으로 이슈된 예측 분기 명령 및 점프 및 링크 명령을 포함하는 소정의 추측으로 이슈된 명령에 대하여 다수의 예측 오류 신호를 동시 발생하는 방법에 있어서,
    워치포인트가 상기 추측으로 이슈된 명령을 모니터링하기 위해 형성됨을 나타내는 워치포인트 활성 상태 신호를 수신하는 단계와;
    상기 추측으로 이슈된 명령 각각에 대하여 상기 CPU내 형성된 데이타 기억 구조에 워치포인트 번호 및 관련 워치포인트 레지스터를 할당하는 단계와;
    상기 워치포인트가 점프 및 링크 명령에 대해 형성됨을 나타내는 워치포인트 점프 및 링크 인에이블 신호를 수신하는 단계와;
    상기 하나의 추측으로 이슈된 명령에 관련한 워치포인트 데이타를 수신하여 상기 할당된 워치포인트 레지스터에 상기 워치포인트 데이타를 기억시키는 단계와;
    이슈된 분기 명령 각각에 대하여, 분기 명령에 대하여 다수의 예측 오류 신호를 동시에 발생하는 단계를 포함하는데,
    상기 예측 오류 신호 동시 발생 단계는,
    조건 코드 선택 논리 회로로부터 평가 조건 코드 신호를 수신하는 단계와;
    워치포인트 기억 엘리먼트로부터 워치포인트 조건 신호를 수신하는 단계와;
    워치포인트 기억 엘리먼트로부터 조건 코드형 제어 신호를 수신하는 단계와;
    각각의 실행 결과 소스 유닛으로부터 인에이블 제어 신호를 수신하는 단계와;
    상기 실행 결과 소스 유닛 각각에 대하여 상기 인에이블 제어 신호의 어서팅 상태를 포함하는 소정의 조건 코드 평가 규칙에 따른 상기 워치포인트 조건 신호와 상기 평가 조건 코드 신호를 비교하여 분기 조건이 정확히 예측되었는지를 평가하는 단계와;
    상기 분기 명령이 정확히 예측된 경우에, 분기 참 신호를 어서팅하는 단계를 포함하며;
    상기 분기 참 신호가 어서팅된 것으로 판정된 경우 평가 참 신호를 발생하는 단계와;
    이슈된 상기 점프 및 링크 명령 각각에 대하여 다수의 점프 및 링크 예측 오류 신호를 동시에 발생하는 단계를 포함하는데,
    상기 예측 오류 신호 동시 발생 단계는:
    프로그램 카운터 데이타를 기억하는 다수의 기억 위치를 갖는 타겟 어드레스 데이타 구조를 형성하는 단계와;
    상기 점프 및 링크 명령이 이슈되는 경우 상기 타겟 어드레스 데이타 구조 기억 위치중 하나에 대체 다음 프로그램 카운터를 기록하고 상기 명령과 상기 기억된 대체 다음 프로그램 카운터를 관련시키는 단계와;
    실행 결과 소스 유닛에서 상기 점프 및 링크 명령 실행 동안에 계산된 다음 프로그램 카운터값을 계산하는 단계와;
    상기 점프 및 링크 명령 실행 완료시 점프 및 링크 명령 실행 완료 신호를 발생하는 단계와;
    상기 실행 결과 소스 유닛으로부터 상기 계산된 다음 프로그램 카운터를 수신하는 단계와;
    상기 기억 위치로부터 상기 점프 및 링크 명령과 관련된 상기 기억된 대체 다음 프로그램 카운터를 판독하는 단계와;
    상기 계산된 다음 프로그램 카운터값과 상기 대체 다음 프로그램 카운터를 비교하는 단계와;
    상기 대체 다음 프로그램 카운터값이 상기 계산된 다음 프로그램 카운터값과 매칭하는 경우 점프 및 링크 매칭 신호를 발생하는 단계와;
    상기 점프 및 링크 매칭 신호와 상기 워치포인트 점프 및 링크 인에이블 신호의 어서트에 따라 점프 및 링크 신호를 발생하는 단계와;
    상기 점프 및 링크 매칭 신호가 어서트된 것으로 판정된 경우 평가 참 신호를 발생하는 단계와;
    상기 워치포인트 신호, 상기 명령 워치포인트 번호 신호, 상기 워치포인트 활성 상태 신호 및 상기 점프 및 링크 실행 완료 신호의 어서트에 따라 점프 및 링크 명령 평가 인에이블 신호를 발생하는 단계를 포함하고;
    추측으로 이슈된 분기 명령에 대한 상기 결과 데이타를 획득하는 결과로서 최소한 하나의 데이타 획득 인에이블 신호의 수신 또는 상기 점프 및 링크 명령의 수신중 어느 한쪽 수신에 따라 평가 준비 신호를 발생하는 단계와;
    상기 평가 준비 신호 및 상기 평가 참 신호의 수신에 따라 명령 예측 오류 신호를 발생하는 단계를 포함하는 것을 특징으로 하는 예측 오류 신호 동시 발생 방법.
  170. 제169항에 있어서, 각각의 실행 결과 소스 유닛으로부터 인에이블 제어 신호를 수신하는 단계와;
    각각의 실행 결과 소스 유닛으로부터 결과 데이타형 신호를 수신하는 단계와;
    상기 실행 결과 소스 유닛의 결과 데이타가 수신될 것이다라는 것을 나타내는 선택 소스 신호와 상기 결과 데이타가 예상되는 현행 클럭 사이클에 비례하는 시간 표시를 수신하는 단계와;
    상기 인에이블 제어 신호, 상기 결과 데이타형 신호, 및 소정 규칙에 따른 상기 선택 소스 신호의 수신에 응하여 소스 선택 신호를 발생하는 단계와;
    상기 실행 결과 소스 유닛으로부터 실행 결과 데이타 신호를 모니터링하는 단계와;
    상기 도달하는 실행 결과 데이타 및 상기 소스 선택 신호에 응답하여 상기 선택된 소스로부터 실행 결과 데이타를 획득하는 단계와;
    상기 프로세서내 데이타 기억 장치에 평가를 위해 상기 획득된 실행 결과 데이타를 기억시키는 단계를 포함하며, 소정의 명령이 대기중인 결과 데이타가 다수의 실행 결과 소스 유닛으로부터 동시에 획득되는 것을 특징으로 하는 예측 오류 신호 동시 발생 방법.
  171. 제169항에 있어서, 상기 실행 결과 소스 유닛이 명령 실행 유닛 및 레지스터 리네임 유닛을 구비하는 것을 특징으로 하는 예측 오류 신호 동시 발생 방법.
  172. 제169항에 있어서, 상기 소정의 추측으로 이슈된 명령은 제어 전송 명령, 분기 명령, 점프 및 링크 명령, 및 이들 조합으로 구성된 그룹으로부터 선택되고;
    상기 조건 코드형 제어 신호가 WP_XCC, WP_ICC, WP_FCC 및 이들 조합으로 구성된 그룹으로부터 선택되며;
    상기 분기 참 신호는 BR_TRUE 신호를 포함하고;
    상기 평가 조건 코드 신호는 EVAC_CC 신호를 포함하며;
    상기 워치포인트 조건 신호는 WP_COND 신호를 포함하고;
    상기 인에이블 신호는 WP_JMPL 신호를 포함하고 상기 제1 상태는 WP_JMPL=0이고 상기 제2 상태는 WP_JMPL=1이며;
    상기 소스 선택 신호는 SEL_BR_XCC, SEL_BR_ICC, SEL_FXU_XCC, SEL_FXU_ICC, SEL_FXAGU_XCC, SEL_FXAGU_ICC, 및 SEL_FPU_FCC 신호로 구성된 그룹으로부터 선택되는 신호를 포함하고;
    상기 점프 및 링크 명령 체크포인트 번호 신호는 FXAU_CHKPNT_DEC 신호를 포함하고;
    상기 점프 및 링크 매칭 신호는 JMPL_MATCH 신호를 포함하고;
    상기 점프 및 링크 참 신호는 JMPL_TRUE 신호를 포함하고;
    상기 워치포인트 점프 및 링크 신호는 WP_JMPL 신호를 포함하고;
    상기 평가 참 신호는 EVAL_TRUE 신호를 포함하고;
    상기 평가 준비 신호는 EVAL_READY 신호를 포함하고;
    상기 평가 인에이블 신호는 EVAL_ENABLE 신호를 포함하고;
    상기 워치포인트 활성 상태 신호는 WP_ACTIVE 신호를 포함하고;
    상기 워치포인트 점프 및 링크 인에이블 신호는 WP_JMPL 신호를 포함하고;
    상기 명령 예측 오류 신호는 WP_MISPRED_VEC 신호를 포함하는 것을 특징으로 하는 예측 오류 신호 동시 발생.
  173. 명령 이슈 유닛 및 다수의 명령 실행 유닛을 구비한 중앙 처리 장치에서, 추측으로 이슈된 예측 분기 명령 및 점프 및 링크 명령을 포함하는 소정의 추측으로 이슈된 명령에 대하여 다수의 예측 오류 신호를 동시에 발생하는 방법에 있어서,
    명령 시퀀스 실행으로부터 초래하는 조건을 예측하는 단계와;
    상기 실행 시퀀스의 실행을 완료하기 이전의 상기 예측된 조건에 기초하여 제어 전송 명령을 추측으로 이슈하는 단계와;
    상기 CPU의 데이타 구조내 워치포인트 기억 레지스터를 할당하고 상기 추측으로 이슈된 명령중 특정 명령과 상기 할당된 레지스터와 관련시키는 단계와;
    정확한 방향의 상기 제어 전송 명령이 의존하는 평가된 조건과의 차후 비교를 위해 상기 할당된 워치포인트 레지스터에 상기 예측된 조건을 기억하는 단계와;
    각각의 추측으로 이슈되는 명령에 대하여
    상기 실행 유닛에 의해 발생되는 실행 결과 데이타를 모니터링하는 단계와;
    상기 예측된 조건 정보가 상기 명령 시퀀스에 해당하는 상기 평가 조건 정보와 매칭하는 경우, 상기 실행 유닛으로부터 수신된 후-실행 평가 조건 정보와 상기 워치포인트 레지스터에 기억되어 있는 상기 전실행 예측 정보를 비교하는 단계와;
    상기 명령에 대한 상기 예측 정보가 상기 명령에 대한 공지 정보와 매칭되지 않는 경우 예측된 조건 정보 결과로서 잘못 이슈된 추측 이슈 명령 각각에 대하여 예측 오류 표시를 발생하는 단계를 포함하는 것을 특징으로 하는 예측 오류 신호 동시 발생 방법.
  174. 명령 이슈 유닛, 명령 실행 유닛, 및 데이타 기억용 메모리 기억 유닛을 구비한 중앙 처리 장치에서, 상기 중앙 처리 장치의 싱글 공유 기억 유닛내 공통 데이타 구조에서 대체 분기 어드레스 및 예측된 점프 및 링크 어드레스를 동시에 기억하는 방법에 있어서,
    이슈될때 이슈되는 각각의 제어 전송 명령에 대하여 이슈 유닛으로부터 제어 전송 명령 이슈 신호를 발생하는 단계를 포함하는데, 분기 명령 또는 점프 및 링크 명령으로서 제어 전송 명령을 식별하도록 워치포인트 명령형 신호를 포함하고;
    예측 분기 및 점프 및 링크 명령의 명령 디코딩 동안에 대체 다음 프로그램 카운터를 판정하는 단계와;
    대체 분기 어드레스를 기억하는 상기 기억 유닛내 레지스터 위치를 식별하는 워치포인트 기록 어드레스 신호 및 워치포인트 기록 인에이블 제어 신호를 발생하는 단계를 포함하는데, 상기 워치포인트 기록 인에이블 신호는 체크포인트 및 워치포인트를 실행할때 어서팅되며;
    상기 워치포인트 기록 어드레스에 의해 표시되는 레지스터 위치에서 상기 기억 유닛에 대체 다음의 프로그램 카운터의 상기 워치포인트를 기록하는 단계와;
    상기 제어 전송 명령이 점프 및 링크 명령인 경우 예측된 타겟 인출 프로그램을 포함하는 대체 다음의 프로그램 카운터의 상기 워치포인트와;
    상기 제어 전송 명령이 예측 분기 명령인 경우 대체 분기 방향에 대하여 인출 프로그램 카운터를 포함하는 대체 다음 프로그램 카운터의 상기 워치포인트와;
    상기 워치포인트 명령형 신호에 기초하여 분리 어드레셔블 기억 우치에 상기 분기 명령 또는 상기 점프 및 링크 명령 각각에 대한 상기 대체 다음 프로그램 카운터를 기억하는 단계를 포함하는 것을 특징으로 하는 어드레스 동시 기억 방법.
  175. 제174항에 있어서, 상기 제어 전송 명령은 분기 명령, 점프 및 링크 명령, 및 이들 조합으로 구성된 그룹으로부터 선택되며,
    상기 제어 전송 명령 이슈 신호는 WP-JMPL을 구성하고 있는 점프 및 링크 신호를 포함하고;
    상기 대체 다음의 프로그램 카운터는 WP_ANPC 신호를 포함하고;
    상기 체크포인트 기록 인에이블 신호는 MAKE_CHKPNT 신호를 포함하고;
    상기 체크포인트 기록 어드레스 신호는 NEXT_CHKPNT 신호를 포함하고;
    상기 데이타 구조내 상기 기억 위치는 TRAGE_RAM내에 위치되고;
    상기 분기 명령에 대한 상기 정보항목은, XCC, ICC, FCC에 따른 분기로서 또는 점프 링크 명령으로서 명령을 지정하는 분기형 필드와, COND 필드, 및 조건 코드 태그 필드를 포함하는 것을 특징으로 하는 어드레스 동시 기억 방법.
  176. 제174항에 있어서, 각각의 실행 결과 소스 유닛으로부터 인에이블 제어 신호를 수신하는 단계와;
    각각의 실행 결과 소스 유닛으로부터 결과 데이타형 신호를 수신하는 단계와;
    상기 실행 결과 소스 유닛의 상기 결과 데이타가 수신되는 것을 나타내는 선택 소스 신호, 및 상기 결과 데이타가 예상되는 현행 클럭 사이클에 비례하는 시간 표시를 수신하는 단계와;
    상기 인에이블 제어 신호, 상기 결과 데이타형 신호, 및 소정의 규칙에 따른 상기 선택 소스 신호의 수신에 응하여 소스 선택 신호를 발생하는 단계와;
    상기 실행 결과 소스 유닛으로부터 실행 결과 데이타 신호를 모니터링하는 단계와;
    상기 도달하는 실행 결과 데이타 및 상기 소스 선택 신호에 응답하여 상기 선택된 소스로부터 실행 결과를 획득하는 단계와;
    상기 프로세서내 데이타 기억 장치에 평가를 위한 상기 획득된 실행 결과 데이타를 기억하는 단계를 포함하는데, 소정의 명령이 대기중인 결과 데이타가 다수의 실행 결과 소스 유닛으로부터 동시 획득되는 것을 특징으로 하는 어드레스 동시 기억 방법.
  177. 추측으로 이슈된 명령에 관한 예측 오류가 발생한후 명령 재인출에 대한 정확한 재인출 명령 어드레스를 송신하는 단계를 추가로 포함하며, 상기 송신 단계는:
    상기 명령 실행 이전의 추측으로 이슈된 명령 각각에 대하여, 대체 실행 경로를 지정하는 대체 경로 명령 어드레스와, 상기 CPU내 메모리 유닛에 형성된 타겟 어드레스 데이타 구조의 워치포인트 엘리먼트에서 상기 예측된 실행이 의존하는 예측 정보를 동시에 기억하는 단계와;
    각각의 상기 예측된 명령의 실행 완료시에, 명령 실행 완료 상태를 나타내고 전실행 대체 경로 및 예측 정보가 기억되는 상기 명령에 대응하는 워치포인트 엘리먼트 번호를 식별하는 신호와, 상기 기억되어 있는 조건값과 비교하기 위한 계산된 정확한 조건 데이타값 및 대체 프로그램 명령 어드레스를 동시에 발생하는 단계와;
    각각의 상기 명령에 대한 상기 발생된 계산 조건 데이타값과 상기 기억되어 있는 전실행 대체 경로 및 예측 정보를 비교하고 상기 예측된 조건 데이타가 임의의 상기 명령에 대하여 상기 계산된 정확한 조건 데이타값과 매칭되는 경우에 매칭 신호를 발생하는 것에 의한 각각의 싱글 명령에 대한 명령과, 분기 명령 또는 점프 및 링크 명령이 정확하게 또는 정확하지 않게 예측되었는지를 평가하고 각각의 잘못에측된 명령에 대한 예측 오류 신호를 발생하는 것에 의한 각각의 싱글 명령에 대한 명령을 동시에 평가하는 단계와;
    상기 예측오류로부터 상기 CPU의 회복에 우선순위를 매기고 소정의 우선순위 규칙에 기초하여 특정 고우선순위의 예측 오류를 선택하는 단계와;
    상기 특정 고우선순위의 잘못예측된 명령과 관련된 체크포인트를 식별하고 상기 특정 잘못예측된 명령으로부터 상기 프로세서를 회복하는 CPU 백업 신호를 발생하는 단계와;
    상기 타겟 어드레스 데이타 구조로부터 상기 특정 잘못예측된 명령에 대하여 대체 다음 프로그램 카운터를 판독하는 단계와;
    상기 재인출되는 명령에 기초하여 상기 CPU의 실행을 개시하는 이슈 유닛에 상기 판독된 대체 다음 프로그램 어드레스를 송신하는 단계를 포함하는 것을 특징으로 하는 어드레스 동시 기억 방법.
  178. 명령 인출 구성부품, 명령 실행 유닛, 및 데이타 기억 유닛을 갖는 명령 이슈 유닛을 구비한 중앙 처리 장치에서, 추측으로 이슈된 명령의 예측 오류가 발생한후 명령 인출에 대한 정확한 인출 어드레스를 송신하는 방법에 있어서,
    상기 명령 실행 이전에 추측으로 이슈된 예측 명령 각각에 대하여, 상기 예측 명령에 대한 대체 실행 경로를 지정하는 대체 경로 프로그램 명령 어드레스와, 상기 CPU내 메모리 유닛에 형성되는 타겟 어드레스 데이타 구조의 워치포인트 엘리먼트에서 상기 예측 실행이 의존하는 예측 정보를 동시에 기억하는 단계와;
    각각의 상기 예측 명령의 실행 완료시, 명령 실행 완료 상태를 나타내고 전실행 대체 경로 정보 및 예측 정보가 기억되어 있는 상기 명령에 대응하는 워치포인트 엘리먼트 번호를 식별하는 신호와, 상기 기억되어 있는 조건값을 비교하기 위한 계산된 조건 데이타값 및 대체 프로그램 명령 어드레스를 동시에 발생하는 단계와;
    각각의 상기 추측으로 이슈된 명령에 대한 상기 발생된 계산 조건 데이타값과 상기 기억된 전실행 대체 경로 및 예측 정보를 비교하고 상기 예측 조건 데이타가 임의의 상기 명령에 대한 상기 계산된 정확한 조건 데이타값과 매칭되는 경우 매칭 신호를 발생하는 것에 의한 각각의 상기 추측으로 이슈된 명령에 대한 상기 기억된 예측 정보와, 분기 명령 또는 점프 및 링크 명령이 정확하게 또는 정확하지 않게 예측되었는지를 평가하고 각각의 잘못예측된 명령에 대하여 잘못예측된 신호를 발생하는 것에 의한 각각의 상기 추측으로 이슈된 명령에 대한 상기 기억된 예측 정보를 동시에 평가하는 단계와;
    모든 잘못예측된 명령으로부터 잘못예측된 명령 하나를 선택하는 단계와;
    상기 선택된 잘못예측된 명령과 관련된 워치포인트를 식별하는 단계와;
    상기 데이타 구조에서 상기 선택된 워치포인트 번호를 인덱싱함으로써 상기 타겟 어드레스 데이타 구조로부터의 상기 선택된 잘못예측된 명령에 대한 대체 다음 프로그램 카운터 어드레스를 판독하는 단계와;
    소망의 명령 시퀀스 경로를 따라 CPU 실행을 초기화하도록 명령 재인출을 위해 상기 명령 이슈 유닛에 상기 판독된 대체 다음 프로그램 카운터 어드레스를 송신하는 단계를 포함하는 것을 특징으로 하는 정확한 인출 어드레스 송신 방법.
  179. 제178항에 있어서, 잘못예측된 명령 하나를 선택하는 상기 단계는 상기 CPU내에서 발생하는 잘못예측에 우선순위를 매기는 단계 및 소정의 우선순위 규칙에 기초하여 고우선순위 예측 오류를 선택하는 단계를 포함하는 것을 특징으로 하는 정확한 인출 어드레스 송신 방법.
  180. 제178항에 있어서, 상기 추측으로 이슈된 명령은 예측 제어 전송 명령, 예측 분기 명령, 점프 및 링크 명령, 및 이들 조합으로 구성된 그룹으로부터 선택되는 것을 특징으로 하는 정확한 인출 어드레스 송신 방법.
  181. 제178항에 있어서, 상기 동시 기억, 동시 발생, 및 동시 평가 단계는 동일 CPU 클럭 사이클내에서 기억, 발생, 및 평가 단계를 각각 포함하는 것을 특징으로 하는 정확한 인출 어드레스 송신 방법.
  182. 명령 인출 구성 소자, 명령 실행 유닛, 데이타 기억 유닛을 구비한 명령 이슈 유닛을 갖는 중앙 처리 장치에서, 추측으로 이슈된 명령의 예측 오류가 발생한후 명령 인출에 대한 정확한 인출 어드레스를 송신하는 방법에 있어서,
    예측 분기 명령에 응답하여, 상기 CPU내 메모리 유닛의 데이타 구조에서 상기 분기 명령과 관련된 워치포인트 엘리먼트의 워치포인트 대체 프로그램 카운터 데이타를 기억하는 단계를 포함하는데, 상기 워치포인트 대체 프로그램 카운터 데이타는 예측이 취해진 경우의 분기 다음 주소이고, 예측이 취해지지않은 경우에는 분기 타겟 어드레스이며;
    예측된 점프 및 링크 명령 이슈에 응답하여, 상기 CPU내 메모리 유닛의 데이타 구조에서 상기 점프 및 링크 명령과 관련된 워치포인트 엘리먼트의 예측된 점프 및 링크 타겟 어드레스를 기억하는 단계와;
    상기 이슈된 명령에 워치포인트 엘리먼트를 할당하도록 이슈되는 각각의 분기 및 점프 및 링크 명령에 대한 워치포인트 유효 신호를 어서팅하는 단계와;
    상기 워치포인트 유효 신호의 상기 어서트에 응답하여, 상기 워치포인트 활성 상태 벡터 신호에서 식별되는 체크포인트 번호를 사용하는 예측된 명령이 이슈되어 아직 미결정되었는지를 나타내도록 워치포인트 활성 상태 벡터 신호를 어서팅하는 단계와;
    각각의 점프 및 링크 명령에 대하여, 정확한 점프 및 링크 타겟 어드레스를 계산하는 단계를 포함하여 상기 점프 및 링크 실행을 완료하고, 상기 어드레스 발생 유닛이 점프 및 링크 명령 실행을 종료하는 경우 어드레스 발생 유닛의 점프 및 링크 명령 완료 신호를 어서팅하고, 상기 점프 및 링크 명령의 체크포인트 번호를 지정하는 어드레스 발생 유닛의 점프 및 링크 체크포인트 식별 신호를 발생하고, 상기 계산된 정확한 점프 및 링크 명령 타겟 어드레스를 지정하는 어드레스 발생 유닛의 점프 및 링크 데이타 신호를 발생하는 단계와;
    각각의 예측 분기 명령에 대하여, 상기 평가 준비 신호의 수신에 응답하여 분기 방향이 의존하는 조건 코드값을 계산하고 평가 조건 코드 신호가 이용가능할때 워치포인트 번호에 대응하는 평가 조건 코드 신호를 획득하여 상기 분기 명령의 실행을 완료하는 단계와;
    평가 논리 유닛의 각각의 싱글 명령에 대한 예측을 평가하는 단계를 포함하는데,
    상기 예측 평가 단계는:
    상기 어드레스 발생 유닛 점프 및 링크 체크포인트 식별 신호에 의해 인덱싱되는 상기 타겟 어드레스 메모리 유닛 기억 위치의 상기 예측된 점프 및 링크를 판독하는 단계와;
    상기 계산된 점프 및 링크 어드레스와 상기 예측된 점프 및 링크 어드레스를 비교하여 비교 결과를 발생하는 단계와;
    상기 예측된 어드레스와 상기 계산된 정확한 어드레스가 동일한 경우 점프 및 링크 매칭 신호를 발생하는 단계와;
    상기 워치포인트 엘리먼트에 기억되어 있는 상기 워치포인트 점프 및 링크 인에이블 신호와 상기 점프 및 링크 매칭 신호를 비교하는 단계와;
    상기 워치포인트가 점프 및 링크 명령용으로 형성됨을 나타내는 상기 신호 매칭 및 그 점프 및 링크 명령이 적절하게 예측된 경우 점프 및 링크 참 출력 신호를 발생하는 단계와;
    상기 단계를 통해 점프 및 링크 명령이 정확하게 예측되었는지를 판정하는 단계와;
    조건 코드 선택 논리 유닛으로부터 조건 코드 평가 신호를 수신하는 단계와;
    상기 명령과 관련된 워치포인트 기억 엘리먼트에 기억되어 있는 워치포인트 조건 신호를 포함하고 있는 워치포인트 레지스터에 기억된 워치포인트 데이타를 판독하는 단계와;
    상기 단계를 통해 분기 명령이 정확하게 예측되었는지를 판정하는 단계와;
    소정의 규칙에 기초한 상기 분기 명령에 대응하는 워치포인트 엘리먼트에 기억되어 있는 상기 워치포인트 조건 데이타와 상기 평가 조건 코드 신호를 비교하여 상기 분기를 이슈할때 상기 예측이 정확한지를 평가하는 단계와;
    상기 조건 코드 평가 신호 및 상기 워치포인트 조건 신호가 참 신호로 어서팅된 경우 상기 특정 워치포인트에 대한 분기 참 신호를 발생하는 단계와;
    상기 분기 참신호와 상기 점프 및 링크 참 신호를 논리적으로 OR 연산처리하고 상기 분기 참신호 또는 점프 및 링크 신호중 하나가 참으로 어서팅되는 경우 평가 참 신호를 발생하는 단계와,
    상기 명령에 또는 점프 및 링크 명령 중 하나에 상기 워치포인트를 할당하지만 동일 워치포인트 엘리먼트에 대한 상기 분기 참 신호 및 상기 점프 및 링크 신호의 동시 어서팅을 리미트하지는 않는 단계와;
    CPU 사이클 동안에 상기 점프 및 링크 명령 완료 신호가 각각의 명령에 대하여 어서팅된후 평가 준비 신호를 발생하는 단계와
    임의 상기 평가 참 신호가 예측 오류검출된 것으로 어서팅되는 경우, 다수의 평가 참 논리 유닛 각각으로부터 발생된 상기 평가 참 신호로부터 예측 오류를 검출하는 명령 워치포인트 잘못예측된 신호를 발생하여 상기 CPU내 정규 상태를 유지하는 정규 상태 유닛에 상기 잘못예측된 신호를 전달하는 단계와;
    발생된 모든 워치포인트 예측 오류 신호에 우선순위를 매기고 소정의 우선순위 규칙에 따라 CPU 회복에 대하여 상기 예측 오류중 하나로 식별하는 단계와;
    상기 정규 상태 유닛에서, 예측 오류 분기 명령 또는 예측 오류 점프 및 링크 명령으로 인한 예측오류로부터 회복하기 위하여 상기 CPU가 백업되는 체크포인트 명령을 식별하는 백업 체크포인트 신호를 발생하는 단계와;
    상기 정규 상태 유닛에서, 상기 백업이 잘못예측된 점프 및 링크 명령에 기인하는 경우에만 점프 및 링크 예측 오류 신호를 발생하는 단계와;
    상기 식별된 예측오류, 예측 오류 타입, 워치포인트/체크포인트 번호를 포함하는 요인에 기초하여 상기 메모리 기억 장치내 위치를 선택하는 단계를 포함하는데,
    상기 선택 단계는;
    워치포인트 예측 오류 신호의 수신에 응답하여 상기 정규 상태 유닛의 프로세서 백업 초기화 신호를 발생하는 단계와;
    대체 프로그램 카운터값으로 상기 프로그램 카운터를 리셋하고, 예측 오류가 CPU에서 발생되어 상기 CPU가 초기 상태로 백업됨을 나타내는 프로세서 백업 초기화 신호를 수신하는 단계와;
    상기 메모리 기억 영역의 체크포인트/워치포인트 번호를 식별하는 인덱스를 제공하는 백업 체크포인트 신호를 수신하여 명령 인출에 대하여 정확한 분기 어드레스 또는 정확한 점프 및 링크 어드레스를 기억하는 위치 컨텐트를 판독하는데 상기 인덱스를 사용하는 단계와;
    워치포인트 및 체크포인트 번호의 타입로 인덱스를 제공하는 어드레스 발생 유닛 체크포인트 신호를 수신하여 대체 다음 프로그램 카운터를 기억하는 위치의 컨텐트를 판독하는데 상기 인덱스를 사용하는 단계와;
    예측 오류검출에 응답하여 CPU 백업이 요구되는 경우 상기 정규 상태 유닛으로부터 메이크-백업 제어 신호를 수신하는 단계와;
    상기 어드레스 발생 유닛이 점프 및 링크 명령 실행을 완료할때 어드레스 발생 유닛 점프 및 링크 명령 완료 신호를 수신하는 단계와;
    상기 정규 상태 유닛 또는 상기 어드레스 발생 유닛 체크포인트 입력 신호로부터 상기 메모리 기억 영역내 특정 워치포인트 엘리먼트를 열거한 판독-어드레스 인덱스로서 하나의 상기 백업 체크포인트를 선택하도록, 멀티플렉서에 제어 선택기 입력 신호로서 상기 점프 및 링크 완료 신호 및 상기 메이크-백업 신호를 가하는 단계와;
    상기 예측 오류명령이 상기 메이크-백업 및 점프 및 링크 제어 신호로 표시된 바와 같은 점프 및 링크 명령의 분기 명령인지의 여부에 기초하여 판독하도록 상기 메모리 기억 위치 어드레스를 선택하는 단계와;
    상기 예측오류로부터 회복하도록 새로운 명령을 인출하는 대체 다음 프로그램 카운터를 선택하는 단계를 포함하며,
    상기 선택 단계는:
    상기 예측 오류가 점프 및 링크 명령 예측 오류인 경우 점프 및 링크 예측 오류 신호를 발생하는 단계와;
    멀티플렉서 선택 제어 신호, 다수의 멀티플렉서 입력 신호, 및 상기 제어 신호에 의해 선택된 하나의 멀티플렉서 출력을 갖는 멀티플렉서에 상기 예측 오류 신호를 가하는 단계와;
    상기 멀티플렉서 선택 제어 신호가 상기 예측 오류가 잘못예측된 분기 명령임을 나타내는 제1 상태를 갖는 경우 상기 멀티플렉서 출력 신호로서 상기 데이타 기억 장치의 상기 데이타 구조내 상기 기억 위치에 기억되어 있는 대체 다음 프로그램 카운터를 내포하는 제1 멀티플렉서 입력 신호를 선택하는 단계와;
    상기 멀티플렉서 선택 제어 신호가 상기 예측 오류가 발생하고 잘못예측된 점프 및 링크 명령임을 나타내는 제2 상태인 경우 멀티플렉서 출력 신호로서 계산된 점프 및 링크 어드레스를 내포하는 제2 멀티플렉서 입력 신호를 선택하는 단계를 포함하며;
    상기 CPU의 실행을 개시하는 단계는:
    점프 및 링크 명령에 대하여 예측된 타겟 인출 프로그램 카운터 또는 예측된 분기 명령에 대하여 판독된 대체 분기 방향용 인출 프로그램 카운터를 발생하는 단계와;
    명령 인출 유닛에 상기 선택된 멀티플렉서 출력의 상기 판독된 대체 프로그램 어드레스 신호를 송신하여 인출 유닛이 상기 정확한 어드레스로부터 명령을 재인출할 수 있게 하는 단계를 포함하는 것을 특징으로 하는 정확한 인출 어드레스 송신 방법.
  183. 제182항에 있어서, 상기 재인출 어드레스는 분기 명령 어드레스 및 점프 및 링크 명령 어드레스로 구성된 그룹으로부터 선택되고,
    상기 점프 및 링크 명령 완료 신호는 FXAGU_JMPL 신호를 포함하고;
    상기 체크포인트 식별 신호는 FXAGU_CHKPNT 신호를 포함하고;
    상기 어드레스 발생 유닛 데이타 신호는 FXAGU_DATA 신호를 포함하고;
    상기 점프 및 링크 매칭 신호는 JMPL_MATCH 신호를 포함하고;
    상기 워치포인트 점프 및 링크 인에이블 신호는 WP_JMPL 신호를 포함하고;
    상기 점프 및 링크 참 신호는 JMPL_TRUE 신호를 포함하고;
    상기 조건 코드 평가 신호는 EVAL_CC 신호를 포함하고;
    상기 워치포인트 데이타는 WP_COND, WP_XCC, WP_ICC, 및 WP_FCC를 포함하고;
    상기 워치포인트 조건 신호는 WP_COND 신호를 포함하고;
    상기 분기 참 신호는 BR_TRUE 신호를 포함하고;
    상기 평가 참 신호는 EVAL_READY 신호를 포함하고;
    상기 워치포인트 활성 상태 신호는 WP_ACTIVE_VEC 신호를 포함하고;
    상기 워치포인트 예측 오류 신호는 WP_MISPRED_VEC 신호를 포함하고;
    상기 백업 체크포인트 신호는 BACKUP_CHKPNT 신호를 포함하고;
    상기 점프 및 링크 예측 오류 신호는 MISPRED 신호를 포함하고;
    상기 프로세서 백업 초기화 신호는 DO_BACKUP 신호를 포함하고;
    상기 백업 체크포인트는 BACKUP_CHKPNT 신호를 포함하고;
    상기 메이크-백업 제어 신호는 MAKE_BACKUP 신호를 포함하고;
    상기 어드레스 발새어 유닛 점프 및 링크 명령 완료 신호는 FXAGU_JMPL 신호를 포함하고;
    상기 선택된 백업 체크포인트 신호는 BACKUP_CHKPNT 신호를 포함하고;
    상기 어드레스 발생 유닛 체크포인트는 FXAGU_CHKPNT 신호를 포함하고;
    상기 점프 및 링크 예측 오류 신호는 MISPRED 신호를 포함하고;
    상기 대체 다음 프로그램 카운터는 WR_ANPC 신호를 포함하고;
    상기 계산된 점프 및 링크 어드레스는 FXAGU_DATA 신호를 포함하고;
    상기 대체 프로그램 카운터 어드레스는 RD_ANPC 신호를 포함하고;
    상기 워치포인트 점프 및 링크 인에이블 신호와 상기 점프 및 링크 매칭 신호를 비교하는 상기 단계는 상기 신호를 논리적으로 부울 AND 연산처리하는 단계를 포함하는 것을 특징으로 하는 정확한 인출 어드레스 송신 방법.
  184. 제182항에 있어서, 백업 포인트에서 명령 발생후 순차적으로 발생하는 명령에 대한 체크포인트를 삭제하도록 상기 예측오류로부터의 회복동안에 예측 오류의 식별에 응답하여 명령 삭제 신호를 어서팅하는 단계와;
    상기 삭제 신호의 상기 어서트에 응답하여, 워치포인트 활성 상태 신호 및 워치포인트 잘못예측된 신호의 발생을 억제함으로써 각각의 삭제된 명령에 대응하는 상기 워치포인트 엘리먼트를 비활성화로 만드는 단계를 추가로 포함하는 것을 특징으로 하는 정확한 인출 어드레스 송신 방법.
  185. 제182항에 있어서, 각각의 워치포인트에 대한 워치포인트 활성 상태 정보가 동시에 기억되어 동일 신호 신호에 전달되도록, 상기 워치포인트 활성 상태 벡터 신호 및 상기 워치포인트 잘못예측된 신호는 상기 CPU내 할당가능한 체크포인트에 대응하는 다수의 벡터 비트 포지션을 각각 갖는 멀티-핫(multi-hot) 벡터로서 각각 개별적으로 인코딩되는 것을 특징으로 하는 정확한 인출 어드레스 송신 방법.
  186. 비교 시간을 감소시키기 위한 조건 코드 데이타와 데이타 포워드 버스 태그를 비교하는 방법에 있어서,
    각각의 데이타 포워드 버스 태그와 현행 이슈 윈도우 신호의 동시 리네임된 조건 코드 태그를 비교하는 단계와;
    각각의 데이타 포워드 버스 태그와 이전의 사이클 조건 코드 태그를 비교하는 단계와;
    상기 단계를 통해 현행 이슈 윈도우 사이클 동안의 동시 리네임된 조건 코드 태그와 이전의 사이클 동안의 조건 코드 태그 사이의 데이타 포워드 버스 태그 비교를 분리하는 단계를 포함하는데, 이전의 사이클 동안의 상기 조건 코드 태그 및 현행 이슈 윈도우에서의 동시 리네임된 조건 코드 태그와, 상기 데이타 포워드 버스 태그와의 상기 비교는, 상기 비교가 싱글 비분할 동작으로 실행되는 경우 보다 더 빨리 실행되는 것을 특징으로 하는 정확한 인출 어드레스 송신 방법.
  187. 제186항에 있어서, 동시에 리네임된 조건 코드의 상기 비교를 실행하기 전에 래치 회로에서 현행 이슈 윈도우 신호의 동시 리네임된 조건 코드 태그를 래칭하는 단계를 추가로 포함하며, 각각의 데이타 포워드 버스 태그와 현행 이슈 윈도우 사이클에서 동시에 리네임된 조건 코드 태그를 비교하는 상기 단계는 타이밍 임계를 제거함으로써 각각의 데이타 포워드 버스 태그와 상기 래칭된 신호와의 비교를 포함하는 것을 특징으로 하는 것을 정확한 인출 어드레스 송신 방법.
  188. 명령 이슈 유닛, 조건 코드 레지스터 리네임 유닛을 포함하며 논리적이고 물리적인 레지스터를 리네임하는 레지스터 리네임 유닛, 다수의 실행 유닛, 및 상기 실행 유닛에서 상기 중앙 처리 장치의 다른 구성 소자로 실행 결과 데이타를 전달하는 데이타 포워드 버스를 구비한 중앙 처리 장치에서, 상기 다수의 실행 유닛 각각으로부터 실행 결과 데이타를 동시에 획득하는 방법에 있어서,
    각각의 상기 실행 유닛에 대하여, 이전의 CPU 클럭 사이클 동안에 리네임되는 조건 코드 레지스터를 식별하지만 현행 사이클 동안에 리네임되는 조건 코드 레지스터를 식별하지 않는 상기 조건 코드 레지스터 리네임 유닛으로부터 수신된 초기 조건 코드 레지스터 태그 신호를, 현행 CPU 클럭 사이클 동안에 상기 실행 유닛으로부터 도달한 조건 코드 레지스터 태그 신호 구성 소자를 포함하는 유효 실행 결과 데이타 신호와 비교하여, 상기 비교 동작이 상기 조건 코드 레지스터 태그 신호와 상기 조건 코드 레지스터 태그 신호 구성 소자를 포함하는 상기 유효 실행 결과 데이타 신호 사이의 매칭을 식별하는 경우 각각의 상기 실행 유닛에 대한 조건 코드 태그 현행-매칭 신호를 발생하는 단계와;
    각각의 상기 실행 유닛에 대하여, 이전 CPU 클럭 사이클 동안 리네임되어온 조건 코드 레지스터를 각각 식별하고 현행 사이클 동안 리네임되어온 조건 코드 레지스터를 식별하는, 이전 사이클 동안 상기 조건 코드 레지스터 리네임 유닛으로부터 수신된 다수의 이후 조건 코드 레지스터 태그 신호를, 현행 CPU 사이클 동안 상기 실행 유닛으로부터 도달한 조건 코드 레지스터 태그 신호를 포함하는 유효 실행 결과 데이타 신호와 비교하여, 상기 비교 동작이 상기 조건 코드 레지스터 태그 신호 중 한 신호와 상기 다수의 조건 코드 레지스터 태그 신호 구성 소자중 하나 사이의 매칭을 식별하는 경우 상기 다수의 조건 코드 레지스터 태그 신호가 매칭되는 지를 식별하는 각각의 상기 실행 유닛에 대한 현행 조건 코드 태그의 어레이-레이트-매칭(array-late-match) 신호를 발생하는 단계를 포함하는 실행 결과 데이타 동시 획득 방법.
  189. 제188항에 있어서, 상기 초기 조건 코드 레지스터 태그 신호는 CC_TAG_C 신호를 포함하고;
    상기 조건 코드 레지스터 리네임 유닛은 FSR/CCRFRN 신호를 포함하고;
    상기 유효 실행 결과 데이타 신호는 FXU_XICC_TAG_F 신호, FXAGU_XICC_TAG_F 신호, 및 FPU_FCC_TAG_F 신호로 구성된 그룹으로부터 선택되고;
    상기 실행 유닛은 고정소수점 실행 유닛, 고정소수점/어드레스 발생 유닛, 및 부동소수점 유닛으로 구성된 그룹으로부터 선택되고;
    상기 조건 코드 태그 현행 매칭 신호는 FXU_CURR_MATCH 신호, FXAGU_CURR_MATCH 신호, 및 FPU_CURR_MATCH 신호로 구성된 그룹으로부터 선택되고;
    상기 다수의 최근 조건 코드 레지스터 태그 신호는 다수의 CC_TAG_RENAMED 신호를 포함하고;
    상기 조건 코드 레지스터 리네임 유닛은 FSR/CCRFRN 유닛을 포함하고;
    상기 현행 조건 코드 태그 어레이 최근 신호는 각각의 상기 실행 유닛에 대하여 FXU_ARRAY_LATE_MATCH 신호, FXAGU_ARRAY_LATE_MATCH 신호, 및 FPU_ARRAY_LATE_MATCH 신호로 구성된 그룹으로부터 선택되는 것을 특징으로 하는 실행 결과 데이타 동시 획득 방법.
  190. 제188항에 있어서, 상기 최근 조건 코드 레지스터 태그를 기억하는 상기 CPU내 다수의 어드레셔블 태그 기억 엘리먼트를 포함하는 초기 조건 코드 레지스터 태그 신호를 제공하는 단계와;
    상기 조건 코드 레지스터 리네임 유닛으로부터 상기 최근 조건 코드 레지스터 태그 신호를 수신하는 단계와;
    상기 조건 코드 레지스터 리네임 유닛으로부터 조건 코드 리네임된 신호를 수신하는 단계와;
    상기 명령 이슈 유닛으로부터 DO-WATCHPOINT 신호로부터 유래된 워치포인트 번호 식별 구성소자 신호를 포함하는 DO-PREDICT 신호를 수신하는 단계와;
    상기 조건 코드 리네임된 신호 및 상기 DO-PREDICT 신호가 어서팅되는 경우 상기 태그 어레이 데이타 기억 장치에 각각 기록되는 상기 조건 코드 레지스터 태그 신호의 어드레스를 제어하기 위한 태그 어레이 기록 인에이블 신호를 발생하는 단계와;
    상기 태그 어레이 기록 인에이블 신호가 어서팅되는 경우 상기 워치포인트 식별 번호에 의해 식별되는 상기 어드레셔블 태그 기억 엘리먼트 중 한 엘리먼트에 상기 수신된 최근 조건 코드 레지스터 태그 신호 구성소자를 기억하는 단계와;
    상기 비교 동작용 상기 실행 유닛 각각에 대하여 각각의 상기 태그 기억 엘리먼트로부터 각각의 상기 기억된 조건 코드 레지스터 태그를 판독하는 단계를 포함하는 것을 특징으로 하는 실행 결과 데이타 동시 획득 방법.
  191. 제190항에 있어서, 상기 조건 코드 리네임된 신호는 CC_RENAMED 신호를 포함하고;
    상기 DO-PREDICT 신호는 DO-PREDICT_VEC 신호를 포함하고 상기 DO-WATCHPOINT 신호는 DO_WTCHPT 신호를 포함하며;
    상기 태그 어레이 기록 인에이블 신호는 ARRAY_WRITE_VEC 신호를 포함하는 것을 특징으로 하는 실행 결과 데이타 동시 획득 방법.
  192. 중앙 처리 장치에서 다수의 명령의 실행 결과를 동시에 모니터링하는 장치에 있어서,
    명령을 이슈하는 이슈 유닛과;
    명령을 실행하는 실행 유닛과;
    상기 실행 유닛에서 상기 중앙 처리 장치내 다른 유닛으로 실행 결과를 전달하는 데이타 포워드 분배 버스와;
    상기 실행 유닛로부터 상기 프로세서내 데이타 포워드 분배 버스상으로 실행 결과를 수신하도록 결합되어 워치포인트 데이타를 기억하는 다수의 워치포인트 레지스터를 갖는 워치포인트 유닛과;
    상기 명령이 이슈될때 추측으로 이슈된 예측 명령 각각에 대하여 워치포인트 데이타를 기억하는 워치포인트 레지스터를 할당하기 위한 수단과;
    상기 워치포인트 유닛내 상기 데이타 포워드 버스상으로 전달되는 실행 결과 신호를 모니터링하기 위한 수단과;
    상기 실행 결과 신호 및 소정의 규칙에 기초하여 소정의 이벤트 발생을 검출하기 위한 수단과;
    추측으로 이슈된 예측 명령에 대하여 소정의 이벤트가 검출되는 경우 다른 CPU 유닛에 알리기 위한 수단과;
    상기 특정 명령이 추측으로 이슈되는 조건이 정확하게 예측되었는지를 평가하도록 상기 특정 명령에 관계하는 상기 데이타 포워드 버스상으로 도달하는 상기 결과 신호와 특정 명령에 대한 상기 워치포인트 레지스터에 기억되어있는 상기 워치포인트 데이타를 비교하기 위한 수단과;
    상기 워치포인트 엘리먼트를 할당 해제하고 상기 평가가 상기 예측이 정확하다라는 것을 나타나는 경우 실행을 계속하는 할당 해제 수단과;
    상기 평가가 상기 예측이 잘못되었다라는 것을 나타나는 경우 예측 오류를 정정하기 위해 공지된 조건에 대응하는 명령이 재인출되고 이슈되도록 상기 이슈 유닛에 새로운 어드레스를 공급하기 위한 수단과;
    상기 예측 오류가 복구될 수 있도록 초기 상태로 상기 처리 유닛을 백업하기 위한 수단과;
    상기 재인출된 명령에 기초하여 정확한 명령 유출중 명령에 대한 실행을 초기화하는 수단과;
    상기 실행이 완료되었을때 상기 워치포인트 엘리먼트를 할당 해제하기 위한 수단을 포함하는 것을 특징으로 하는 모니터링 장치.
  193. 소정의 명령이 중앙 처리 장치(CPU)내 다수의 실행 결과 발생 유닛으로부터 대기중인 결과 데이타를 동시에 획득하는 장치에 있어서,
    각각의 결과 데이타 소스로부터 인에이블 제어 신호를 수신하기 위한 수단과;
    각각의 결과 데이타 소스로부터 결과 데이타형 신호를 수신하기 위한 수단과;
    상기 실행 결과 발생 유닛의 상기 결과 데이타가 수신 예정임을 나타내는 선택 소스 신호와 상기 결과 데이타가 예상되는 현행 클럭 사이클에 비례하는 시간 표시를 수신하기 위한 수단과;
    소정의 규칙에 따라 상기 인에이블 제어 신호, 상기 결과 데이타형 신호, 및 상기 선택 소스 신호의 수신에 응답하여 소스 선택 신호를 발생하기 위한 수단과;
    상기 실행 결과 발생 유닛으로부터 실행 결과 데이타 신호를 모니터링하는 수단과;
    상기 도달한 실행 결과 데이타 및 상기 소스 선택 신호에 응답하여 상기 선택된 소스로부터 실행 결과를 획득하는 수단과;
    상기 프로세서내 데이타 기억 장치에서 평가를 위한 상기 획득된 실행 결과 데이타를 기억하기 위한 수단을 포함하는 것을 특징으로 하는 결과 데이타 획득 장치.
  194. 제193항에 있어서, 결과 데이타를 획득하기 위한 상기 수단은:
    인에이블 제어 신호 입력 포트, 결과 데이타형 신호 입력 포트, 및 선택 소스 신호 입력 포트를 각각 포함하는 제1 다수의 논리 AND 게이트와;
    상기 제1 다수의 논리 AND 게이트 중 하나에 결합되어 동일 결과 데이타형 의존성을 갖는 상기 다수의 논리 AND 게이트로부터 선택된 출력을 관련시키는 제2 다수의 논리 OR 게이트와;
    상기 제1 다수의 논리 AND 게이트 및 상기 논리 OR 게이트중 선택된 하나에 결합되어 선택 조건 코드형 입력 포트 및 결과 데이타 소스 입력 포트를 각각 갖는 제3 다수의 논리 AND 게이트와;
    상기 제3 다수의 논리 OR 게이트의 출력을 각각 수신하기 위한 다수의 입력 포트를 갖는 멀티 비트 논리 OR 게이트와;
    상기 멀티 비트 OR 게이트의 출력 신호를 래칭하는 래치 회로를 포함하며, 상기 출력 신호는 조건 코드 데이타를 포함하는 획득된 실행 결과 데이타를 포함하는 것을 특징으로 하는 결과 데이타 획득 방법.
  195. 중앙 처리 장치에서 분기 명령 및 점프 및 링크 명령을 포함하는 소정의 명령형에 대하여 다수의 예측 오류 신호를 동시 발생하는 장치에 있어서,
    워치포인트가 분기 명령을 모니터링하기 위해 형성되는 것을 나타내는 제1 상태 또는 워치포인트가 점프 및 링크 명령에 대하여 형성되는 것을 나타내는 제2 상태를 갖는 워치포인트 점프 및 링크 인에이블 신호를 수신하기 위한 수단과;
    다수의 이슈된 분기 명령 각각에 대하여 예측 오류 신호를 동시 발생하기 위한 수단과;
    조건 코드 선택 논리 회로로부터 평가 조건 코드 신호를 수신하기 위한 수단과;
    워치포인트 기억 엘리먼트로부터 워치포인트 조건 신호를 수신하기 위한 수단과;
    워치포인트 기억 엘리먼트로부터 조건 코드형 제어 신호를 수신하기 위한 수단과;
    각각의 실행 결과 발생 유닛으로부터 인에이블 제어 신호를 수신하기 위한 수단과;
    각각의 상기 실행 결과 발생 유닛에 대하여 상기 인에이블 제어 신호의 상태를 어서팅하고 소정의 조건 코드 평가 규칙에 따라 상기 워치포인트 조건 신호와 상기 평가 조건 코드 신호를 비교하여 분기용 상기 조건이 정확하게 예측되었는지를 평가하기 위한 수단과;
    상기 분기가 정확히 예측된 경우 분기 참 신호를 발생하기 위한 수단과;
    다수의 이슈된 점프 및 링크 명령 각각에 대하여 점프 및 링크 예측 오류 신호를 동시에 발생하기 위한 수단를 포함하는데,
    상기 발생 수단은:
    프로그램 카운터 데이타를 기억하는 다수의 기억 위치를 갖는 타겟 데이타 구조를 형성하기 위한 수단과;
    상기 점프 및 링크 명령이 이슈되는 경우 상기 기억 위치주어 한 위치에 대체 다음 프로그램 카운터를 기억하고 상기 명령과 상기 기억된 대체 다음 프로그램 카운터를 관련하기 위한 수단과;
    실행 결과 발생 유닛에 계산된 다음 프로그램 카운터값을 계산하기 위한 수단과;
    상기 실행 결과 발생 유닛으로부터 상기 계산된 다음 프로그램 카운터를 수신하기 위한 수단과;
    상기 기억 위치로부터 상기 명령과 관련된 상기 기억된 대체 다음 프로그램 카운터를 판독하기 위한 수단과;
    소정의 프로그램 카운터 비교 규칙에 따라 상기 계산된 다음 프로그램 카운터와 상기 대체 다음 프로그램 카운터를 비교하기 위한 수단과;
    상기 비교가 참으로 평가된 경우 점프 및 링크 매칭 신호를 발생하기 위한 수단과;
    상기 점프 및 링크 매칭 신호와 상기 워치포인트 점프 및 링크 신호의 참 상태에 응답하여 점프 및 링크 신호를 발생하기 위한 수단과:
    상기 점프 및 링크 매칭 신호가 어서팅되거나 또는 상기 분기 참 신호가 어서팅되는 지의 판정에 응답하여 점프 및 링크 참 신호를 발생하기 위한 수단과;
    적어도 하나의 소스 선택 신호 수신 또는 평가 인에이블 신호 수신에 응답하여 평가 준비 신호를 발생하는 단계를 포함하는데, 상기 평가 인에이블 신호는 워치포인트 활성 상태 신호, 워치포인트 점프 및 링크 인에이블 신호, 점프 및 링크 명령 실행 완료 신호, 및 점프 및 링크 명령 체크포인트 번호 신호의 어서트에 응답하여 발생되고;
    상기 평가 준비 신호 및 상기 평가 참 신호에 응답하여 명령 예측 오류 신호를 발생하기 위한 수단을 포함하는 것을 특징으로 하는 예측 오류 신호 동시 발생 장치.
  196. 중앙 처리 장치내 싱글 공유 기억 유닛의 공통 데이타 구조에서 예측된 점프 및 링크 어드레스 및 대체 분기 어드레스를 동시 기억하는 장치에 있어서,
    이슈될때 이슈되는 각각의 제어 전송 명령에 대하여 이슈 유닛으로부터 제어 전송 명령 이슈 신호를 발생하기 위한 수단과;
    상기 제어 전송 명령 이슈 신호내 워치포인트 점프 및 링크 신호를 제공하여 분기 명령 또는 점프 및 링크 명령으로서 명령을 식별하기 위한 수단과;
    프로그램 제어 논리 유닛에 의해 계산된 타겟 인출 프로그램 카운터를 명시하는 대체 다음 프로그램 카운터를 계산하기 위한 수단과;
    상기 데이타 구조내 기억 위치의 대체 분기 어드레스를 기억하기 위한 체크포인트 어드레스 및 체크포인트 기록 인에이블 제어 신호를 발생하기 위한 수단을 포함하는데, 상기 기록 인에이블 제어 신호는 체크포인트를 실행할때 어서팅되고;
    체크포인트 기록 어드레스에서 기억 유닛에 워치포인트 대체 다음 프로그램 카운터를 기록하기 위한 수단과;
    예측 분기 및 점프 및 링크 명령의 실행 디코딩 동안에 대체 프로그램 카운터, 예측된 타겟 인출 프로그램 카운터를 포함하는 점프 및 링크 명령에 대하여 워치포인트 유닛에 송신된 상기 워치포인트 대체 프로그램 카운터, 및 상기 대체 분기 방향으로 인출 프로그램 카운터를 포함하는 예측 분기 명령에 대하여 워치포인트 유닛에 송신된 상기 워치포인트 대체 다음 프로그램 카운터를 판정하기 위한 수단과;
    상기 이슈된 명령이 분기 명령인지 또는 점프 및 링크 명령인지를 판정하는 단계를 포함하며, 상기 신호내 선택된 정보 필드의 컨텐트를 판정하도록 필드 선택 및 기록 논리 유닛의 상기 제어 전송 명령 이슈 신호와, 상기 명령이 점프 및 링크임을 나타내는 상기 JMPL 필드의 제1 소정의 상태 및 상기 명령이 분기 명령임을 나타내는 상기 JMPL 필드에서의 제2 상태를 디코딩하기 위한 수단과;
    상기 제어 전송 명령 이슈 신호에 나타나는 상기 표시에 기초하여 개별 어드레셔블 기억 위치에서 각각의 분기 명령 또는 점프 및 링크 명령에 대한 정보항목을 기억하기 위한 수단을 포함하는데, 상기 명령은 분기 명령이고, 상기 분기 명령에 대한 상기 정보항목은 대체 다음 프로그램 카운터를 포함하고, 상기 점프 및 링크 명령에 대한 상기 정보항목은 예측된 타켓 어드레스를 포함하는 것을 특징으로 하는 동시 기억 장치.
  197. 이슈된 명령의 예측 오류가 발생한후 명령 재인출을 위하여 정확한 재인출 명령 어드레스를 송신하기 위한 장치에 있어서,
    상기 명령 실행 이전의 추측으로 이슈된 예측 명령 각각에 대하여, 상기 CPU내 메모리 유닛에 형성된 타겟 어드레스 데이타 구조의 워치포인트 엘리먼트에서 상기 예측 실행이 의존하는 예측 정보 및 상기 예측 명령에 대한 대체 실행 경로를 지정하는 대체 경로 프로그램 명령 어드레스를 동시에 기억하기 위한 수단과;
    상기 예측된 명령 각각의 실행 완료시, 명령 실행 완료 상태를 나타내고 전실행 대체 경로 및 예측 정보가 기억되어 있는 상기 명령에 대응하는 워치포인트 엘리먼트 번호를 식별하는 신호와, 상기 기억된 조건값을 비교하기 위한 계산된 정확한 조건 데이타값과 대체 프로그램 명령 어드레스를 동시에 발생하기 위한 수단과;
    상기 기억된 전실행 대체 경로를 비교함으로써 발생되는 각각의 싱글 명령에 대한 예측과, 각각의 상기 명령에 대한 상기 발생된 계산 조건 데이타값을 갖는 예측 정보를 동시에 평가하고, 분기 명령 또는 점프 및 링크 명령이 정확하게 예측되었는지의 여부를 평가하여 각각의 잘못예측된 명령에 대하여 잘못예측된 신호를 발생하기 위한 수단과;
    소정의 우선순위 규칙에 기초하여 특정 고우선순위 예측 오류를 선택하도록 상기 예측오류로부터 상기 CPU의 회복에 우선순위를 매기기 위한 수단과;
    상기 특정 고우선순위 예측 오류 명령과 관련된 체크포인트를 식별하고 상기 특정 예측 오류명령으로부터 상기 프로세서를 회복하기 위하여 CPU 백업 신호를 발생하기 위한 수단과;
    상기 타겟 어드레스 데이타 구조로부터 상기 특정 잘못예측된 명령에 대하여 대체 다음 프로그램 카운터를 판독하기 위한 수단과;
    상기 재인출 명령에 기초하여 상기 CPU의 실행을 재개시하는 이슈 유닛에 상기 판독되 대체 다음 프로그램 어드레스를 송신하는 단계를 포함하는 것을 특징으로 하는 어드레스 송신 장치.
  198. 제197항에 있어서, 동시 기억하기 위한 상기 수단은 상기 워치포인트 엘리먼트로부터의 판독 및 그 워치포인트 엘리먼트에의 기록을 제어하는 워치포인트 판독/기록 제어 논리 및 다수의 워치포인트 기억 엘리먼트를 포함하며, 상기 워치포인트 엘리먼트는 명령 이슈 유닛에 결합되어 각각의 예측 명령에 대한 명령 디코딩 정보를 수신하고;
    명령 실행 완료 신호를 동시 발생하기 위한 상기 수단은 데이타 포워드 버스로부터 조건 코드 데이타를 획득하는 다수의 조건 코드 획득 유닛에 결합된 적어도 하나의 명령 유닛을 포함하고;
    동시 평가하기 위한 상기 수단은 상기 예측 명령이 의존하는 실제 조건 및 예측된 조건을 평가하는 다수의 논리 유닛을 포함하고;
    우선순위를 매기기 위한 상기 수단은 실행 상태를 포함하는 명령 상태를 트랙킹하고 다수 예측오류로부터 소정의 규칙에 기초하여 상기 고우선순위 예측 오류및 실행 결함을 선택하는 정규 상태 유닛을 포함하고;
    상기 식별 수단은 타겟 어드레스 랜덤 액세스 메모리 유닛, 상기 타겟 어드레스 랜점 액세스 메모리와 관련된 주변 제어 논리를 포함하고, 멀티플렉서 회로는 체크포인트 입력을 포함하는 다수의 선택가능한 신호 입력 및 제어 입력 신호, 및 분기 명령과 관련된 어드레스 또는 상기 타겟 어드레스 랜덤 액세스 유닛에서 점프 및 링크 명령과 관련된 어드레스중 하나를 게이팅하는 어드레스 발생 유닛 체크포인트 신호를 가지며;
    판독하기 위한 상기 수단은 전실행 조건과 실제 실행 조건 결과를 비교하는 점프 및 링크 매칭 논리를 포함하고;
    상기 송신 수단은 다수의 프로그램 카운터 사이에서 적절한 명령 프로그램 카운터 어드레스를 출력하는 상기 정규 상태 유닛에 결합되어, 타겟 어드레스 랜덤 액세스 메모리 입력 신호 및 실행 결과 데이타 입력 신호 및 제어 신호 입력을 갖는 멀티플렉서 회로를 포함한 대체 프로그램 카운터 출력 논리를 포함하는 것을 특징으로 하는 어드레스 송신 장치.
  199. 비교 시간을 감소시키기 위한 조건 코드 데이타와 데이타 포워드 버스 태그를 비교하는 장치에 있어서,
    현행 이슈 윈도우 신호의 동시 리네임된 조건 코드 태그와 각각의 데이타 포워드 버스 태그를 비교하기 위한 수단과;
    이전 사이클 조건 코드 태그와 각각의 데이타 포워드 버스 태그를 비교하기 위한 수단과;
    상기 수단을 통해, 현행 이슈 윈도우 사이클 동안의 동시 리네임된 조건 코드 태그와 이전 사이클 동안의 조건 코드 태그 사이에서 데이타 포워드 버스 태그 비교를 분리하기 위한 수단을 포함하는데, 이전 사이클 동안의 상기 조건 코드 태그 및 현행 이슈 윈도우 사이클 동안의 동시 리네임된 조건 코드 태그와 상기 데이타 포워드 버스 태그와의 상기 비교는 상기 비교가 싱글 비분할 동작으로 실행되는 경우 보다 더 빠르게 실행되는 것을 특징으로 하는 비교 장치.
  200. 중앙 처리 장치에서 다수의 명령의 실행 결과를 동시에 모니터링하는 장치에 있어서,
    명령을 이슈하는 이슈 유닛과;
    명령을 실행하는 실행 유닛과;
    상기 실행 유닛에서 상기 중앙 처리 장치내 다른 유닛으로 실행 결과를 전달하는 데이타 포워드 분배 버스와;
    상기 실행 유닛으로부터 상기 프로세서내 상기 데이타 포워드 분배 버스상으로 실행 결과 신호를 수신하도록 결합되어 워치포인트 데이타를 기억하는 다수의 워치포인트 레지스터를 갖는 워치포인트 유닛과;
    상기 명령이 이슈될때 추측으로 이슈된 명령 각각에 대한 워치포인트 데이타를 기억하는 워치포인트 레지스터를 할당하기 위한 수단과;
    상기 워치포인트 유닛내 상기 데이타 포워드 버스상으로 전달되는 실행 결과 신호를 모니터링하기 위하 수단과;
    상기 실행 결과 신호 및 소정의 규칙에 기초하여 소정의 이벤트 발생을 검출하기 위한 수단과;
    추측으로 이슈된 예측 명령에 대하여 소정의 이벤트가 검출되는 경우 다른 CPU 유닛을 형성하기 위한 수단과;
    상기 특정 명령에 관련한 상기 데이타 포워드 버스상으로 도달하는 상기 결과를 비교하여, 신호와 특정 명령에 대한 상기 워치포인트 레지스터에 기억되어 있는 상기 워치포인트 데이타를 추측으로 이슈된 상기 특정 명령이 정확하게 예측되는지를 평가하는 수단과;
    상기 평가가 상기 예측이 정확한지를 나타내는 경우 상기 워치포인트 엘리먼트를 할당 해제하고 실행을 계속하는 수단과;
    상기 평가가 상기 예측이 잘못되었음을 나타내는 경우 공지된 조건에 대응하는 명령이 예측 오류를 정정하도록 재인출되고 이슈될 수 있도록 상기 이슈 유닛에 새로운 어드레스를 공급하기 위한 수단과;
    상기 예측 오류가 복구될수 있도록 초기 상태로 상기 중앙 처리 장치를 백업하기 위한 수단과;
    상기 재인출된 명령에 기초하여 정확한 명령 유출내 명령에 대하여 실행을 초기화하기 위한 수단과;
    상기 실행이 완료된 경우 상기 워치포인트 엘리먼트를 할당 해제하기 위한 수단과;
    각각의 결과 데이타 소스로부터 인에이블 제어 신호를 수신하기 위한 수단과;
    각각의 결과 데이타로부터 결과 데이타형 신호를 수신하기 위한 수단과;
    상기 실행 결과 발생 유닛의 상기 결과 데이타가 수신될 것임으로 나타내는 선택 소스 신호, 및 상기 결과 데이타 예상되는 현행 클럭 사이클에 비례하는 시간 표시를 수신하기 위한 수단과;
    소정의 규칙에 따라 상기 인에이블 제어 신호, 상기 결과 데이타형 신호, 상기 선택 소스 신호의 수신에 응답하여 소스 선택 신호를 발생하기 위한 수단과;
    상기 실행 결과 발생 유닛으로부터 실행 결과 데이타 신호를 모니터링하기 위한 수단과;
    상기 소스 선택 신호 및 상기 도달한 실행 결과 데이타에 응답하여 상기 선택된 소스로부터 실행 결과를 획득하기 위한 수단과;
    상기 프로세서내 데이타 기억 장치에서 상기 평가용 획득 실행 결과 데이타를 기억하기 위한 수단과;
    워치포인트가 분기 명령을 모니터링하기 위해 형성됨을 나타내는 제1 상태와, 워치포인트가 점프 및 링크 명령에 대하여 형성됨을 나타내는 제2 상태를 갖는 워치포인트 점프 및 링크 인에이블 신호를 수신하기 위한 수단과;
    다수의 이슈된 분기 명령 각각에 대하여 예측 오류 신호를 동시에 발생하기 위한 수단을 포함하는데,
    상기 발생 수단은:
    조건 코드 선택 논리 회로로부터 평가 조건 코드 신호를 수신하기 위한 수단과;
    워치포인트 기억 엘리먼트로부터 워치포인트 조건 신호를 수신하기 위한 수단과;
    워치포인트 기억 엘리먼트로부터 조건 코드형 제어 신호를 수신하기 위한 수단과;
    각각의 실행 결과 발생 유닛으로부터 인에이블 제어 신호를 수신하기 위한 수단과;
    각각의 상기 실행 결과 발생 유닛에 대하여 상기 인에이블 제어 신호의 어서팅된 상태를 포함하는 소정의 조건 코드 평가 규칙에 따라 상기 워치포인트 조건 신호와 상기 평가 조건 코드 신호를 비교하여, 분기용 상기 조건이 정확하게 예측되었는지를 평가하는 수단과;
    상기 분기가 정확하게 예측된 경우 분기 참 신호를 발생하기 위한 수단과;
    다수의 이슈된 점프 및 링크 명령 각각에 대하여 점프 및 링크 예측 오류 신호를 동시에 발생하기 위한 수단을 포함하며:
    프로그램 카운터 데이타를 기억하는 다수의 기억 위치를 갖는 타겟 데이타 구조를 형성하기 위한 수단과;
    상기 점프 및 링크 명령이 이슈되어 상기 기억되어 있는 대체 다음 프로그램 카운터를 상기 명령에 관련시키기 위한 수단과;
    실행 결과 발생 유닛의 계산된 다음 프로그램 카운터를 계산하기 위한 수단과;
    상기 실행 결과 발생 유닛으로부터 상기 계산된 다음 프로그램 카운터를 수신하기 위한 수단과;
    상기 기억 위치로부터 상기 명령과 관련된 상기 기억된 대체 다음 프로그램 카운터를 판독하기 위한 수단과;
    소정의 프로그램 카운터 비교 규칙에 따라 상기 계산된 프로그램 카운터와 상기 대체 다음 프로그램 카운터를 비교하기 위한 수단과;
    상기 비교가 참으로 평가되는 경우 점프 앤 링트 신호를 발생하기 위한 수단과;
    상기 워치포인트 점프 및 링크 신호 및 상기 점프 및 링크 신호의 참 상태에 응답하여 점프 및 링크 신호를 발생하기 위한 수단과;
    상기 점프 및 링크 매칭 신호가 어서팅되는지 또는 상기 분기 참 신호가 어서팅되는지의 판정에 따라 평가 참 신호를 발생하기 위한 수단과;
    적어도 하나의 소스 선택 신호의 수신 또는 평가 인에이블 신호의 수신에 따라 평가 준비 신호를 발생하기 위한 수단을 포함하는데, 상기 평가 인에이블 신호는 워치포인트 활성 상태 신호, 워치포인트 점프 및 링크 인에이블 신호, 점프 및 링크 명령 실행 완료 신호, 점프 및 링크 명령 체크포인트 번호 신호의 어서트에 따라 발생되고;
    상기 평가 준비 신호 및 상기 평가 참 신호의 수신에 따라 명령 신호를 발생하기 위한 수단과;
    이슈될때 이슈된 각각의 제어 전송 명령에 대하여 이슈 유닛으로부터 제어 전송 명령 이슈 신호를 발생하기 위한 수단과;
    상기 제어 전송 명령 이슈 신호내 워치포인트 점프 및 링크 신호를 제공하여 분기 명령 또는 점프 및 링크 명령으로서 상기 명령을 식별하기 위한 수단과;
    프로그램 제어 논리 유닛에 의해 계산된 타겟 인출 프로그램 카운터를 명시하는 대체 다음 프로그램 카운터를 계산하기 위한 수단과;
    상기 데이타 구조내 기억 위치에 대체 분기 어드레스를 기억하는 체크포인트 기록 어드레스, 및 체크포인트 실행시 어서팅되는 체크포인트 기록 인에이블 제어 신호를 발생하기 위한 수단과;
    체크포인트 기록 어드레스에서 기억 유닛에 워치포인트 대체 다음 프로그램 카운터를 기록하기 위한 수단과;
    예측 분기 및 점프 및 링크 명령 디코딩 동안의 대체 다음 프로그램 카운터를 판정하기 위한 수단을 포함하는데, 상기 워치포인트 다음 프로그램 카운터는 예측된 타겟 인출 프로그램 카운터를 포함하는 점프 및 링크 명령에 대하여 워치포인트 유닛으로 송신되고 상기 워치포인트 대체 다음 프로그램 카운터는 상기 대체 분기 방향으로 상기 인출 프로그램 카운터를 포함하는 예측 분기 명령에 대하여 워치포인트 유닛으로 송신되고;
    상기 이슈된 명령이 분기 명령인지 도는 점프 및 링크 명령인지를 판정하는 단계를 사용하여 상기 신호내 선택된 정보 필드의 컨텐트를 판정하도록 필드 선택 및 기록 논리 유닛의 상기 제어 전송 명령 이슈 신호, 상기 명령이 점프 링크 명령임을 나타내는 상기 JMPL 필드의 제1 소정의 상태, 및 상기 명령이 분기 명령임을 나타내는 상기 JMPL 필드의 제2 상태를 디코딩하기 위한 수단과; 상기 제어 전송 명령 이슈 신호에 나타나는 상기 표시에 기초하여 개별 어드레셔블 기억 위치의 분기 명령 또는 점프 및 링크 명령 각각에 대하여 정보항목을 기억하기 위한 수단을 포함하는데, 상기 명령이 분기 명령인 경우 상기 분기 명령에 대한 상기 정보항목이 대체 다음 프로그램 카운터를 포함하고, 상기 명령이 점프 및 링크 명령인 경우 상기 점프 및 링크 명령에 대한 상기 정보항목은 예측된 타켓 어드레스를 포함하며;
    상기 명령 실행 이전에 추측으로 이슈된 예측 명령 각각에 대하여, 상기 예측 명령에 대하여 대체 실행 경로를 지정하는 대체 경로 프로그램 명령 어드레스와, 상기 CPU내 메모리 유닛에 형성되는 타겟 어드레스 구조의 워치포인트 엘리먼트에서 상기 예측된 실행이 의존하는 예측 정보를 동시에 기억하기 위한 수단과;
    각각의 상기 예측 명령의 실행 완료시, 명령 실행 완료 상태를 나타내고 전실행 대체 경로 및 예측 정보가 기억된 상기 명령에 대응하는 워치포인트 엘리먼트 번호를 식별하는 신호와, 상기 기억된 조건값과 비교하기 위한 계산된 정확한 조건 데이타값, 및 대체 프로그램 명령 어드레스를 동시에 발생하기 위한 수단과;
    임의의 상기 명령에 대하여 상기 예측 조건 데이타가 상기 계산된 정확한 조건 데이타값과 매칭하는 경우 상기 명령 각각에 대하여 상기 발생된 계산 조건 데이타값과 상기 기억된 전실행 대체 경로 및 예측 정보를 동시에 비교하기 위한 수단과;
    분기 명령, 또는 점프 및 링크 명령이 정확하게 예측되었는지의 여부를 평가하고, 각각의 싱글 명령에 대한 예측을 동시에 평가하여, 각각의 잘못예측된 명령에 대하여 잘못예측된 신호를 발생하기 위한 수단과;
    상기 예측 오류로부터 상기 CPU의 회복에 우선순위를 매기어 소정의 우선순위 규칙에 기초하여 특정 고우선순위 예측 오류를 선택하는 수단과;
    상기 특정 고우선순위 잘못예측된 명령과 관련된 체크포인트를 식별하여 상기 특정 잘못예측된 명령으로부터 상기 프로세서를 회복하기 위한 CPU 백업 신호를 발생하기 위한 수단과;
    상기 타겟 어드레스 데이타 구조로부터 상기 특정 잘못예측된 명령에 대하여 대체 다음 프로그램 카운터를 판독하기 위한 수단과;
    상기 재인출된 명령에 기초하여 상기 CPU의 실행을 재개시하는 이슈 유닛에 상기 판독된 대체 다음 프로그램 어드레스를 송신하기 위한 수단과;
    각각의 데이타 포워드 버스 태그와 현행 이슈 윈도우 신호의 동시 리네임된 조건 코드 태그를 비교하기 위한 수단과;
    각각의 데이타 포워드 버스 태그와 이전의 사이클 조건 코드 태그를 비교하기 위한 수단과;
    상기 수단을 통해, 현행 이슈 윈도우 동안의 동시 리네임된 조건 코드 태그와 이전 사이클 동안의 조건 코드 태그 사이의 데이타 포워드 버스 태그 비교를 분리하기 위한 수단을 포함하는데, 상기 데이타 포워드 버스 태그와 이전 사이클 동안의 상기 조건 코드 태그 및 현행 이슈 윈도우 사이클 동안의 동시 리네임된 조건 코드 태그와의 상기 비교는 싱글 비분할 동작으로 실행되는 것을 특징으로 하는 동시 모니터링 장치.
  201. 프로그램 제어 비순위 실행 데이타 프로세서에 있어서,
    프로그램 제어 순서로 실행하기 위해, 부동소수점 명령 및 비부동소수점 명령을 포함하는 명령을 이슈하는 이슈 유닛과;
    이슈된 명령을 실행하는 실행 수단을 포함하는데, 적어도 부동소수점 명령은 프로그램 제어를 비순위로 상기 실행 수단에 의해 실행될 수 있고;
    상기 부동소수점 예외 유닛은,
    기억 엘리먼트, 하나의 기억 엘리먼트에 대응하는 각각의 이슈된 명령, 필드 식별용 부동소수점 명령 및 부동소수점 트랩형 필드를 포함하는 데이타 기억 구조와;
    각각의 이슈된 명령에 대하여, 대응하는 이슈된 명령이 부동소수점 명령인지의 여부를 나타내는 대응하는 기억 엘리먼트의 부동소수점 명령 식별용 필드의 데이타를 기록하는 제1 로직과;
    실행 동안에, 다수의 이전타입의 부동소수점 실행 트랩 중 대응하는 트랩에서 초래하는 하나 이상의 부동소수점 실행 예외를 야기하는 각각의 이슈된 부동소수점 명령에 대하여, 초래되는 이전 타입의 부동소수점 실행 트랩중 하나의 트랩을 식별하는 대응 기억 엘리먼트의 부동소수점 트랩형 필드의 데이타를 기록하는 제2 로직을 포함하며;
    프로그램 제어 순위로 처리하는 모든 이슈된 명령이 리타이어되는 동안에 그리고 실행 동안에 실행 예외를 야기하지 않는 각각의 이슈된 명령을 리타이어하는 정규 상태 수단과;
    미리 정의된 실행 예외가 이슈되는 명령에 의해 야기되는 경우, 리타이어되지 않는 이슈 명령을 만날때까지 이슈된 명령 실행을 계속하는 실행 수단 및 이슈된 명령을 계속 리타이어함으로써 실행 트랩 시퀀싱에 속하는 정규 상태 수단를 포함하는데, 리타이어되지 않는 상기 이슈 명령이 제1 실행 예외가 야기되는 이슈된 명령과, 제1 실행 예외가 야기되는 이슈된 명령 보다 이르게 이슈된 이슈 명령 중 하나이며;
    부동소수점 트랩 필드를 갖는 부동소수점 상태 레지스터와;
    리타이어되지 않는 명령이 부동소수점 명령임을 나타내는 리타이어될 수 없는 명령에 대응하는 기억 엘리먼트의 부동소수점 식별 필드의 데이타에 의해 식별되는 부동소수점 실행 트랩형을 식별하는 부동소수점 상태 레지스터의 부동소수점 트랩형 필드에 데이타를 기록하기 위한 수단을 포함하는 것을 특징으로 하는 실행 데이타 프로세서.
  202. 제201항에 있어서, 상기 데이타 기억 구조의 각각의 기억 엘리먼트는 또한 현행 부동소수점 실행 예외 필드를 가지며;
    미리 정의된 타입의 부동소수점 실행 트랩중 특정 트랩을 초래하는 하나 이상의 다수 특정 부동소수점 실행 예외 실행 동안에 야기되는 각각의 이슈된 부동소수점 명령에 대하여, 상기 부동소수점 예외 유닛은 야기된 하나 이상의 특정 부동소수점 실행 예외를 식별하는 대응 기억 엘리먼트의 현행 부동소수점 실행 예외 필드에 데이타를 기록하기 위한 제3 논리를 추가로 포함하고;
    상기 부동소수점 상태 레지스터는 또한 현행 부동소수점 실행 예외 필드를 갖고;
    리타이어될 수 없는 이슈 명령에 대응하는 기억 엘리먼트의 필드를 식별하는 부동소수점 명령 데이타가, 이슈된 명령이 리타이어될 수 없는 부공 소숫점 명령임을 나타내고, 리타이어될 수 없는 이슈된 명령에 대응하는 기억 엘리먼트의 부동소수점 트랩형 필드 데이타가, 미리 정의된 타입의 부동소수점 실행 트랩 중 특정 트랩을 식별하는 경우, 상기 기록 수단은 또한 리타이될수 없는 이슈된 명령에 대응하는 기억 엘리먼트의 현행 부동소수점 실행 예외 필드에 의해 식별되는 하나 이상의 특정 부동소수점 실행 예외를 식별하는 부동소수점 상태 레지스터의 현행 부동소수점 실행 예외 필드에 데이타를 기록하는 하는 것을 특징으로 하는 실행 데이타 프로세서.
  203. 제202항에 있어서, 상기 제4 로직은, 임의의 특정 부동소수점 실행 예외 동안에 야기하지 않는 각각의 이슈된 부동소수점 명령에 대하여, 임의의 특정 부동소수점 실행 예외도 야기되지 않음을 나타내는 대응 기억 엘리먼트의 현행 부동소수점 실행 예외 필드에 데이타를 또한 기록하며;
    상기 부동소수점 레지스터는 발생된 예외 필드 및 트랩 인에이블 마스크 필드, 특정 부동소수점 실행 예외의 임의 결합의 선택적인 마스킹을 제공하는 트랩 인에이블 마스크 필드를 포함하고;
    상기 정규 상태 유닛은 실행 동안에 프로그램 제어 순위로 처리하는 모든 이슈 명령에 대하여 어떤 다른 부동소수점 실행 예외를 야기하는 각각의 이슈된 부동소수점 명령을 또한 리타이어하며;
    명령이 리타이어되는 각각의 현행 머신 사이클 동안에, 부동소수점 상태 레지스터의 발생된 예외 필드에 데이타를 기록하는 상기 기록 수단은,
    명령이 리타이어되는 각각의 현행 머신 사이클 동안에, 상기 기록 수단은, 대응 기억 엘리먼트의 부동소수점 명령 식별 필드가 나타내는 것에 대하여, 현행 머신 사이클 동안에 리타이어되는 이슈된 명령에 대응하는 기억 엘리먼트의 현행 부동소수점 실행 예외 필드의 데이타에 의해 식별되는 특정 부동소수점 실행 예외와, 부동소수점 상태 레지스터에서 발생된 부동소수점 실행 예외 필드의 현행 데이타에 의해 식별되는 특정 부동소수점 실행 예외 발생을 나타내는 부동소수점 상태 레지스터에서 발생된 예외 필드에 데이타를 기록하고;
    명령이 부동소수점 명령임을 나타내는 대응 기억 엘리먼트의 부동소수점 명령 식별 필드의 데이타에 대하여, 상기 기록 수단은, 대응하는 현행 머신 사이클 동안에 리타이어된 최근 명령에 대응하는 기억 엘리먼트의 현행 부동소수점 실행 예외 필드의 데이타에 의해 식별되는 그 특정 부동소수점 실행 예외를 식별하는 부동소수점 상태 레지스터의 현행 예외 필드에 데이타를 또한 기록하며;
    명령이 리타이어되는 각각의 현행 머신 사이클동안에, 명령이 부동소수점 명령임을 나타내는 대응 기억 엘리먼트의 부동소수점 명령 식별 필드의 데이타에 대하여, 상기 기록 수단은 부동소수점 명령 임의의 미리 정의된 타입의 부동소수점 실행 트랩도 대응하는 현행 머신 사이클 동안에 리타이어된 최근 이슈된 명령을 초래하지 않음을 나타내는 트랩형 필드의 부동소수점 상태 레지스터에 데이타를 추가로 기록하는 것을 특징으로 하는 실행 데이타 프로세서.
  204. 제203항에 있어서, 상기 이슈된 명령은 SPRAC 명령을 포함하고;
    상기 부동소수점 상태 레지스터는 SPRAC 부동소수점 상태 레지스터를 포함하며;
    상기 소정 특정 타입의 부동소수점 실행 트랩은 IEEE_754_예외 트랩을 포함하고;
    상기 특정 부동소수점 실행 예외는 IEEE_754 예외를 포함하는 것을 특징으로 하는 실행 데이타 프로세서.
  205. 프로그램 제어 비순위 실행 데이타 프로세서에서의 부동소수점 예외를 검출하는 방법에 있어서,
    프로그램 제어 순위 실행에서 부동소수점 명령 및 비부동소수점 명령을 포함하는 명령을 이슈하는 단계와;
    적어도 상기 부동소수점 명령이 프로그램 제어 순위로 실행될 수 있도록 상기 이슈된 명령을 실행하는 단계와;
    부동소수점 명령 식별 필드 및 부동소수점 트랩형 필드를 각각 갖는 기억 엘리먼트와, 기억 엘리먼트 중 하나에 대응하는 각각의 이슈된 명령을 포함하는 데이타 기억 구조를 제공하는 단계와;
    각각의 이슈된 명령에 대하여 대응하는 이슈된 명령이 부동소수점 명령인지의 여부를 나타내는 대응 기억 엘리먼트의 부동소수점 명령 식별 필드 데이타를 기록하는 단계와;
    실행 동안에 다수의 소정 타입의 부동소수점 실행 트랩 중 대응하는 트랩에서 초래하는 하나이상의 부동소수점 실행 예외를 야기하는 각각의 이슈된 부동소수점 명령에 대하여, 초래될 소정 타입의 부동소수점 실행 트랩 중 하나를 식별하는 대응하는 기억 엘리먼트의 부동소수점 트랩형 필드의 데이타를 기록하는 단계와;
    리타이어되어온 프로그램 제어 순위로 처리하는 모든 이슈된 명령에 대하여 실행 동안에 실행 예외를 야기하지 않는 각각의 이슈 명령을 리타이어하는 단계와;
    소정의 실행 예외중 제1 하나가 이슈된 명령에 의해 야기되는 경우, 실행 트랩 시퀀싱에 속하고 라타이어될 수 있는 이슈 명령을 만날때까지 이슈된 명령을 계속 리타이어함으로써 이슈된 명령 실행을 계속하는 단계를 포함하는데, 리타이어될 수 없는 상기 이슈된 명령은 상기 제1 실행 예외를 야기하는 하나의 이슈된 명령이고, 상기 제1 실행 예외가 야기되지만 이슈된 명령 보다 이르게 이슈되지만 제1 실행 예외 보다는 늦게 발생하는 제2 실행 예외를 야기하지 않는 이슈된 명령미며;
    부동소수점 트랩형 필드를 갖는 부동소수점 상태 레지스터를 제공하는 단계와;
    리타이어될 수 없는 명령에 대응하는 기억 엘리먼트의 부동소수점 식별 필드의 데이타가 리타이어될 수 없는 명령이 부동소수점 명령임을 나타내는 경우, 리타이어될수 없는 명령에 대응하는 기억 엘리먼트 의 부동소수점 트랩형 필드의 데이타에 의해 식별되는 부동소수점 실행 트랩형을 식별하는 부동소수점 트랩형의 부동소수점 상태 레지스터에 데이타를 기록하는 단계를 포함하는 것을 특징으로 하는 부동소수점 예외 검출 방법.
  206. 제205항에 있어서, 데이타 기억 구조의 각각의 기억 엘리먼트는 또한 현행 부동소수점 실행 예외 필드도 가지며;
    상기 부동소수점 상태 레지스터는 현행 부동소수점 실행 예외 필드를 또한 가지며;
    실행 동안에 소정 타입의 부동소수점 실행 트랩중 특정 트랩에서 초래될 하나 이상의 다수의 특정 부동소수점 실행 예외를 야기하는 이슈된 부동소수점 명령 각각에 대하여, 야기되는 하나이상의 특정 부동소수점 실행 예외를 식별하는 대응 기억 엘리먼트의 현행 부동 소숫정 실행 예외 필드에 데이타를 기록하는 단계와;
    리타이어될 수 업슨 이슈된 명령에 대응하는 기억 엘리먼트의 부동소수점 명령 식별 필드의 데이타가 명령이 부동소수점 명령임을 나타내고, 리타이어될 수 없는 이슈된 명령에 대응하는 기억 엘리먼트의 부동소수점 트랩형 필드의 데이타가 소정 타입의 부동소수점 실행 트랩 중 특정 트랩을 식별하는 경우, 리타이어될 수 없는 이슈된 명령에 대응하는 기억 엘리먼트의 현행 부동소수점 실행 예외의 데이타에 의해 하나 이상의 특정 부동소수점 실행 예외를 식별하는 부동소수점 상탤 레지스터의 현행 부동소수점 실행 예외 필드에 데이타를 기록하는 단계를 추가로 포함하는 것을 특징으로 하는 부동소수점 예외 검출 방법.
  207. 제206항에 있어서, 실행 동안에 임의의 특정 부동소수점 실행 예외를 야기하지 않는 이슈된 부동소수점 명령 각각에 대하여, 어떤 상기 특정 부동소수점 실행 예외도 야기되지 않음을 나타내는 대응 기억 엘리먼트의 현행 부동소수점 실행 예외 필드에 데이타를 기록하는 단계와;
    특정 부동소수점 실행 예외의 임의 결합의 선택적인 마스킹을 제공하는 트랩 인에이블 마스크 필드 및 발생된 예외 필드를 포함하는 부동소수점 상태 레지스터를 제공하는 단계와;
    명령이 리타이어되는 각각의 현행 머신 사이클 동안에, 명령이 부동소수점 명령임을 나타내는 대응 기억 엘리먼트의 부동소수점 명령 식별 필드의 데이타에 대하여, 현행 머신 사이클 동안에 리타이어되는 이슈된 명령에 대응하는 기억 엘리먼트의 현행 부동소수점 실행 예외 필드의 데이타에 의해 식별되는 특정 부동소수점 실행 예외와, 부동소수점 상태 레지스터의 발생된 부동소수점 실행 예외의 현행 데이타에 의해 식별되는 특정 부동소수점 실행 예외 발생을 나타내는 부동소수점 상태 레지스터의 발생된 예외 필드에 데이타를 기록하는 단계와;
    명령이 리타이어되는 각각의 머신 사이클 동안에, 명령이 부동소수점 명령임을 나타내는 대응 기억 엘리먼트의 부동소수점 명령 식별 필드의 데이타에 대하여 대응하는 현행 머신 사이클 동안에 리타이되는 최근 이슈된 명령에 대응하는 기억 엘리먼트의 현행 부동소수점 예외 필드의 데이타에 의해 식별되는 그 특정 부동소수점 실행 예외를 식별하는 부동소수점 상태 레지스터의 현행 예외 필드에 데이타를 기록하는 단계와;
    명령이 리타이어되는 각각의 현행 머신 사이클 동안에, 명령이 부동소수점 명령임으로 나타내는 대응 기억 엘리먼트의 부동소수점 명령 식별 필드의 데이타에 대하여 임의 소정 타입의 부동소수점 실행 트랩이 대응하는 현행 머신 사이클 동안에 리타이되는 최근 이슈된 명령을 초래함을 나타내는 부동소수점 상태 레지스터의 트랩형 필드에 데이타를 기록하는 단계를 포함하는 것을 특징으로 하는 부동소수점 예외 검출 방법.
  208. 제207항에 있어서, 상기 이슈된 명령은 SPRAC 명령을 포함하고;
    상기 부동소수점 상태 레지스터는 SPRAC 상태 레지스터를 포함하고;
    상기 소정의 특정 타입의 부동소수점 트랩은 IEEE_754_실행 트랩을 포함하고;
    상기 특정 부동소수점 실행 예외는 IEEE_754 예외를 포함하는 것을 특징으로 하는 부동소수점 예외 검출 방법.
  209. 대응하는 트랩 레벨을 각각 갖는 내포 트랩을 취하는 소정 다수의 트랩 레벨을 지지하며, 트랩을 취하고 추측으로 리턴하는 데이타 프로세서에 있어서,
    체크포인트를 형성하기 위한 수단과;
    상기 체크포인트를 백업하기 위한 수단과;
    트랩을 취하기 위한 수단과;
    트랩이 취해지는 때마다 상기 데이타 프로세서 상태를 형성하는 컨텐트를 기억하고 있는 레지스터를 포함하는데, 트랩을 취하는 단계는:
    트랩 레벨에 있는 것 보다 다수의 트랩 스택 기억 엔트리를 꽤 많이 갖는 트랩 스택 데이타 기억 구조와;
    트랩이 취해질 때마다 트랩 레벨 중 한 레벨로 맵핑하기 위해 동시에 이용가능한 트랩 스택 기억 엔트리의 현행의 가용성 리스트를 유지시키고 트랩 레벨 중 한 레벨에 대응하는 레벨로 맵핑하기 위해 동시에 이용가능한 트랩 스택 기억 엔트리 중 다음 가용성 리스트를 식별하는 프리리스트 유닛과;
    취해진 각각의 트랩에 대하여 동시에 이용가능한 트랩 스택 기억 엔트리 중 다음 엔트리에 관한 레지스터의 컨텐트를 기록하는 판독/기록 논리와;
    트랩이 취해질 때마다 트랩 스택 기억 엔트리와, 리네임 맵핑 논리 갱신 중 하나에 관한 각각의 트랩 레벨의 현행 맵핑, 및 동시에 이용가능한 트랩 스택 기억 엔트리 중 다음 엔트리에 관하여 대응 트랩 레벨의 현행 맵핑을 갖는 트랩 스택 기억 엔트리 중 하나의 엔트리에 관하여 대응 트랩 레벨의 이전 맵핑을 유지시키는 리네임 매핑 논리와;
    트랩 레벨 중 한 레벨로 매핑하기 위하여 현행 매핑에 의해 트랩 레벨 중 한 레벨로 동시에 맵핑되지 않고 이용가능한 각각의 트랩 스택 기억 엔트리의 비가용성 리스트를 유시시키는 자원 리클레임 유닛을 포함하는데, 상기 자원 리클레임 유닛은 트랩이 취해질때마다 비가용성 리스트에 이전 맵핑에 의해 대응 트랩 레렙로 맵핑되는 트랩 스택 기억 엔트리를 더하고, 상기 자원 리클레임 유닛은 취해진 트랩이 더이상 복구되지 않을 때마다 비가용성 리스트로부터 이전 매핑에 의해 대응하는 트랩 레벨로 맵핑되는 트랩 스택 기억 엔트리를 제거하며;
    상기 비가용성 리스트로부터 제거된 각각의 트랩 스택 기억 엔트리를 현행 가용성 리스트에 가하는 프리리스트와;
    체트포인트 기억 엔트리를 포함하는 체크포인트 기억 유닛을 포함하는데, 각각 형성된 체크포인트는 대응하는 체크포인트 기억 엔트리를 가지며, 상기 체크초인트 유닛은 각각의 형성된 체크포인트에 대하여 대응하는 체크포인트 기억 엔트리에 프리리스트 유닛의 현행 가용성 리스트 및 리네임 맵핑 논리의 현행 맵핑을 기억하고;
    각각의 체크포인트로의 백업에 대하여, 대응하는 체크포인트 기억 엔트리에 기억되어 있는 가용성 리스트에 유지되는 현행 맵핑을 갱신하는 리네임 맵핑 논리 및 대응하는 체크포인트 기억 엔트리에 기억되어 있는 가용성 리스트에 유지되는 현행 가용성 리스트를 갱신하는 프리리스트 유닛을 포함하는 것을 특징으로 하는 데이타 프로세서.
  210. 제209항에서 열거된 트랩 스택 유닛에 있어서, 트랩이 취해지는 매시간에. 특정 레지스터의 컨텐트는 아직 이용가능하지 못하고;
    상기 데이타 프로세서는 특정 레지스터의 컨텐트가 이용가능한 경우 트랩이 취해지는 매시간을 판정하기 위한 획득 논리를 추가로 포함하고;
    상기 획득 논리가 특정 레지스터의 컨텐트가 이용가능하다라고 판정한 경우 트랩이 취해지는 매시간에 이용가능한 트랩 스택 기억 엔트리 중 다음 엔트리에 관한 특정 레지스터의 컨텐트를 기록하는 판독/기록 논리를 포함하는 것을 특징으로 하는 트랩 스택 유닛.
  211. 제210항에 있어서, 상기 획득 로직은 특정 레지스터의 컨텐트가 아직 이용가능한지를 트랩으로부터 리턴하기 위한 수단에 나타내고;
    트랩으로부터 리턴하기 위한 상기 수단은, 상기 획득 논리가 특정 레지스터의 컨텐트가 이용가능하게 됨을 나타낼 때까지 트랩으로부터 리턴하지 못하는 것을 특징으로 하는 트랩 스택 유닛.
  212. 제209항에 열거된 데이타 프로세서에 있어서, 상기 프리리스트 유닛은 상기 트랩 스택 기억 엔트리 중 적어도 하나가 트랩 레벨로 맵핑하는데 동시에 이용가능한지를 트랩을 취하기 위한 수단에 나타내고;
    프리리스트 유닛이 상기 트랩 스택 기억 엔트리중 적어도 하나가 트랩 레벨로 맵핑하는데 이용가능하다라고 나타낼 때까지, 트랩을 취하기 위한 상기 수단은 트랩을 취하지 못하는 것을 특징으로 하는 데이타 프로세서.
  213. 제209항에서 열거된 데이타 프로세서에 있어서,
    형성된 체크포인트를 리타이어하기 위한 수단을 추가로 포함하는데,
    상기 체크포인트 형성 수단은 취해진 각각의 트랩에 대하여 대응하는 체크포인트를 형성하고;
    상기 자원 리클레임 유닛은 자원 리클레임 기억 엔트리, 상기 자원 기억 엔트리 중 하나에 대응하는 각각의 형성된 체크포인트를 포함하며, 상기 자원 리클레임 유닛은 취해진 각각의 트랩에 대하여 대응 트랩에 형성된 체크포인트에 대응하는 자원 리클레임 기억 엔트리내 데이타르 기억하고, 상기 데이타는 이전 맵핑에 의해 대응 트랩 레벨로 맵핑되는 트랩 스택 기억 엔트리를 식별하고, 상기 자원 리클레임 유닛은 취해진 트랩에 형성된 체크포인트가 체크포인트를 리타이어하기 위한 수단에 의해 리타이어되는 매시간에 리타이어된 체크포인트에 대응하는 자원 리클레임 기억 엔트리에 기억되어 있는 데이타에 의해 식별되며;
    상기 프리리스트 유닛은 취해진 트랩에 형성된 체크포인트가 체크포인트를 리타이어하기 위한 수단에 의해 리타이어되는 매시간에 유지하는 현행 가용성 리스트에, 자원 리클레임 유닛에 의해 식별되는 기억 엔트리를 더하는 것을 특징으로 하는 데이타 프로세서.
  214. 대응 트랩 레벨을 각각 갖는 내포된 트랩을 취하는 소정수의 트랩 레벨을 지지하는 데이타 프로세서에서, 추측으로 트랩을 취하고 트랩으로부터 리턴하는 방법에 있어서,
    체크포인트 형성 단계와;
    상기 체크포인트로 백업하는 단계와;
    트랩을 취하는 단계와;
    트랩으로부터 리턴하는 단계와;
    트랩이 취해지는 매시간에 데이타 프로세서의 상태를 판정하는 컨텐트를 갖는 레지스터를 제공하는 단계와;
    트랩 레벨이 있는 곳 보다 많은 수의 트랩 스택 기억 엔트리를 갖는 트랩 스택 데이타 기억 구조를 제공하는 단계와;
    트랩이 취해지는 매시간마다, 트랩 레벨 중 한 레벨로 맵핑하는데 동시에 이용가능한 트랩 스택 기억 엔트리의 이용가능한 현행 리스트와, 트랩 레벨 중 대응하는 트랩 레벨로 맵핑하는 동시에 이용가능한 트랩 스택 기억 엔트리의 다음 가용성 리스트를 유지시키는 단계와,
    취해진 각각의 트랩에 대해, 레지스터의 컨텐트를 동시에 이용가능한 트랩 스택 기억 엔트리의 다음 엔트리에 기록하는 단계와;
    트랩이 취해지는 매시간마다, 트랩 스택 기억 엔트리 중 하나의 엔트리에 대응하는 트랩 레벨의 이전 맵핑을 동시에 이용가능한 트랩 스택 기억 엔트리의 다음 엔트리에 대응하는 트랩 레벨의 현행 맵핑으로 대체함으로써 트랩 스택 기억 엔트리 중 한 엔트리에 각 트랩 레벨의 현행 맵핑을 유지시키는 단계와;
    트랩이 취해지는 매시간마다, 비가용성 리스트에 이전 맵핑에 의해 대응하는 트랩 레벨로 맵핑되는 트랩 스택 기억 엔트리를 더함으로써, 현행 매핑에 의해 트랩 레벨중 한 레벨로 동시에 맵핑되지 않지만 트랩 레벨중 한 레벨로 맵핑하기에 이용불가능한 각각의 트랩 스택 기억 엔트리의 비가용성 리스트를 유지시키고, 트랩이 취해지는 매시간마다 이전 맵핑에 의해 대응하는 트랩 레벨로 맵핑되는 트랩 스택 기억 엔트리의 비가용성 리스트로부터 제거하는 단계와;
    현행 가용성 리스트에 비가용성 리스트로부터 제거되는 트랩 스택 기억 엔트리 각각을 더하는 단계와;
    체크포인트 기억 엔트리를 포함하는 체크포인트 기억 유닛을 제공하는 단계를 포함하는데, 각각의 형성된 체크포인트는 대응 체크포인트 기억 엔트리를 가지며,
    형성된 체크포인트에 대하여 대응 체크포인트 기억 엔트리의 현행 맵핑 및 현행 가용성 리스트를 기억하는 단계와;
    체크포인트로 각각 백업하기 위해, 현행 맵핑을 대응 체크포인트 기억 엔트리에 기억된 맵핑으로 그리고 현행 가용성 리스트를 대응 체크포인트 기억 엔트리에 기억된 가용성 리스트로 대체하는 단계를 포함하는 것을 특징으로 하는 트랩을 취하고 트랩으로부터 리턴하는 방법.
  215. 제214항에 있어서, 트랩이 취해지는 매시간마다 레지스터 중 특정 레지스터의 컨텐트가 아직 이용될 수 없으며;
    레지스터 중 특정 레지스터의 컨텐트가 이용가능해지는 경우 트랩이 취해지는 매시간을 판정하는 단계와;
    판정 단계에서 레지스터 중 특정 레지스터의 컨텐트가 이용가능하다라고 판정되는 경우 이용가능한 트랩 스택 기억 엔트리 중 다음 엔트리에 특정 레지스터의 컨텐트를 기록하는 단계를 추가로 포함하는 것을 특징으로 하는 트랩을 취하고 트랩으로부터 리턴하는 방법.
  216. 제215항에 있어서, 레지스터 중 특정 레지스터의 컨텐트 이용가능 여부를 나타내는 단계와;
    지시 단계에서 레지스터 중 특정 레지스터의 컨텐트가 이용가능하다라고 나타날 때에만 트랩으로부터 리턴하는 단계를 추가로 포함하는 것을 특징으로 하는 트랩을 취하고 트랩으로부터 리턴하는 방법.
  217. 제214항에 있어서, 적어도 하나의 트랩 스택 기억 엔트리가 트랩 레벨로 맵핑하는데 동시 이용가능한 지를 나타내는 단계와;
    상기 이용가능 여부를 나타내는 단계에서 적어도 하나의 트랩 스택 기억 엔트리가 트랩 레벨로 맵핑하는데 이용가능한지가 나타날때에만 트랩을 취하는 단계를 추가로 포함하는 것을 특징으로 하는 트랩을 취하고 트랩으로부터 리턴하는 방법.
  218. 제214항에 있어서, 형성된 체크포인트를 리타이어하는 단계와;
    취해진 각각의 트랩에 대하여 대응하는 체크포인트를 형성하는 단계를 포함하며,
    비가용성 리스트를 유지시키는 단계는:
    자원 리클레임 기억 엔트리 중의 한 엔트리에 대응하여 체크포인트가 각각 형성되는, 자원 리클레임 기억 엔트리를 갖는 자원 리클레임 데이타 기억 구조를 제공하는 단계와;
    취해진 각각의 트랩에 대하여, 대응 트랩에 대해 형성된 체크포인트에 대응하는 자원 리클레임 기억 엔트리내 데이타를 기억하는 단계를 포함하며, 상기 데이타는 이전의 맵핑에 의해 대응하는 트랩 레벨로 맵핑되는 트랩 스택 기억 엔트리를 식별하고;
    취해진 트랩이에 대해 형성된 체크포인트가 체크포인트를 리타이어하는 수단에 의해 리타이어되는 매시간마다, 리타이어된 체크포인트에 대응하는 자원 리클레임 기억 엔트리에 기억되어 있는 데이타에 의해 식별되는 트랩 스택 기억 엔트리를 식별하는 단계를 포함하며;
    취해진 트랩에 대해 형성된 체크포인트가 체크포인트를 리타이어하기 위한 수단에 의해 리타이어되는 매시간마다, 유지되는 가용성 리스트에 자원 리클레임 유닛 프리 엔트리에 의해 식별되는 기억 엔트리를 더하는 단계를 포함하는 것을 특징으로 하는 트랩을 취하고 트랩으로부터 리턴하는 방법.
  219. 명령 이슈 수단, 명령 실행 수단, 및 프로세서내에 데이타를 기억하는 메모리 기억 장치를 갖는 프로세서에서, 프로세서 상태 복구 요구 조건검출시 임의의 명령 경계에서 프로세서의 이전 머신 상태를 복구하는 방법에 있어서,
    각각의 이슈된 명령마다 명령 일련 번호를 할당하는 단계와;
    머신 상태를 변경시키는 제1 소정의 실행가능한 명령 세트에 대해서만 실행 이전에 상기 프로세서에 기억되어 있는 데이타내 체크포인트에 머신 상태 정보를 기억시키는 단계를 포함하는데, 머신 상태를 변경하는 상기 소정 세트의 실행가능한 명령은 상기 프로세서내에서 실행되는 머신 상태를 변경하는 모든 실행가능한 명령 보다 적으며;
    상기 결함을 야기시키는 명령을 식별하고, 다수의 예외 또는 결함이 동시에 발생하는 경우에는 결함 또는 예외를 야기시키는 순위 순차적으로 최초의 명령을 식별하는 단계와;
    상기 최초의 명령이 체크포인트 명령인 경우, 상기 결함 명령의 실행 이전에 기억된 상기 머신 상태 정보를 복구하여 상기 이전의 머신 상태를 복구하도록 상기 결함 명령의 명령 일련 번호에 프로세서 프로그램 카운터를 감소시키는 단계와;
    머신 상태 정보가 기억되어 있는 상기 소정의 실행가능한 명령 중 한 명령이 상기 결함 명령과 최후 이슈된 명령간에 순차적으로 존재하는 경우, (ⅰ) 상기 결함 명령 실행후 순차적으로 상기 결함 명령에 가장 근접한 체크포인트로 상기 프로세서를 백업하고, (ⅱ) 레지스터 자원을 갱신함으로써 상기 결함 명령의 실행 이전의 상태로 프로세서 상태를 복구하도록 상기 프로세서를 백스텝핑하고, (ⅲ) 상기 결함 명령의 명령 일련 번호에 프로세서 프로그램 카운터를 감소시키는 단계를 포함하는 것을 특징으로 하는 이전의 머신 상태 복구 방법.
  220. 제219항에 있어서, 상기 프로세서내 데이타 기억 장치의 상기 머신 상태 정보 기억 단계는 레지스터 데이타값을 기억하기 보다는 레지스터 리네임 맵을 기억하고 추측으로 이슈된 예측 명령에 대해 대체 다음 프로그램 카운터를 기억하는 단계를 포함하는 것을 특징으로 하는 이전의 머신 상태 복구 방법.
  221. 제219항에 있어서, 상기 소정의 제1 실행가능한 명령 세트는,
    예측 분기 명령을 포함하는 예측 프로그램 제어 전송 명령과;
    제어 레지스터값을 수정하는 부작용을 갖는 명령과;
    점프 및 링크 타입 명령을 포함하는 프로그램 흐름 변화를 초래할 수 있는 타입의 명령과;
    제어 레지스터값을 수정하는 부작용을 갖는 명령을 포함하는 프로세서 상태를 수정하는 타입의 선택 명령으로 이루어지지만, 상기 선택 명령은 체크포인트 상태의 양을 감소시키기 위해 이러한 타입의 모든 명령보다 적은 양으로 리미트되고, 이러한 타입의 비체크포인트 명령은 제어 프로세서 동기화를 초래하고;
    소정의 기준에서 자주 발생하여 명령 이슈 트랩이 초래되는 명령과;
    추측 트랩 엔트리를 초기화하는 타입의 명령으로 구성되는 것을 특징으로 하는 이전의 머신 상태 복구 방법.
  222. 제220항에 있어서, 추측 명령 시퀀스를 포함하는 소정의 제2 실행가능한 명령 세트 중 임의의 명령을 실행하기 이전에 상기 프로세서를 동기화하는 단계를 추가로 포함하는 것을 특징으로 하는 이전의 머신 상태 복구 방법.
  223. 제222항에 있어서, 상기 머신 동기화는 실행 이전에 머신 동기화를 요구하는 상기 다른 명령의 이슈/실행을 일시적으로 중지시키는 단계와;
    실행 스테이지에서 모든 미결정 명령이 수용되고 리타이어되도록 대기하는 단계와;
    상기 프로세서가 머신 동기화된후 상기 다른 명령을 이슈/실행하는 단계를 포함하는 것을 특징으로 하는 이전의 머신 상태 복구 방법.
  224. 명령 이슈 수단, 명령 실행 수단, 및 상기 프로세서내에 데이타를 기억하는 메모리 기억 장치를 갖는 프로세서에서, 명령 경계에서 프로세서의 머신 상태를 복구하는 방법에 있어서,
    추측으로 이슈된 소정의 다수 예측 명령의 실행 이전에 상기 프로세서의 상기 데이타 기억 장치의 레지스터에 소정의 머신 상태 파라미터를 기억하는 단계와;
    실행 예외 또는 결함 조건을 검출하기 위해 명령 실행을 모니터링하는 단계와;
    상기 실행 예외 또는 결함 조건을 초래하는 각각의 명령의 명령 식별자를 저장하는 단계와;
    하나 이상의 실행 명령이 실행 예외 또는 결함 조건을 초래하는 경우, 순차적으로 빠른 순서로 발생된 상기 하나 이상의 예외 또는 결함 명령을 판정하는 단계와;
    상기 최초의 예외 또는 결함 명령 식별자를 상기 프로세서의 프로그램 카운터를 백업하기 위한 엔드포인트로서 사용하는 단계와;
    상기 최초의 결함 명령이 체크포인트 명령이면, 상기 체크포인트에 기억된 상기 머신 상태 정보를 상기 결함 명령의 실행 이전에 복구하는 단계와 상기 이전의 머신 상태를 복구하기 위해 상기 결함 명령의 명령 일련 번호에 프로세서 프로그램 카운터를 감소시키는 단계와;
    머신 상태 정보가 저장되어 있는 상기 소정의 실행가능한 명령 중 하나가 상기 결함 명령과 최후 이슈된 명령간에 순차적으로 존재하는 경우, (ⅰ) 상기 결함 명령후 순차적으로 상기 결함 명령에 가장 근접한 체크포인트로 상기 프로세서를 백업하고, (ⅱ) 상기 결함 명령의 실행 이전의 상태로 프로세서 상태를 복구하도록 레지스터 자원을 갱신함으로써 상기 프로세서를 백스텝핑하고 (ⅲ) 상기 결함 명령의 명령 일련 번호에 프로세서 프로그램 카운터를 감소시키는 단계를 포함하는 것을 특징으로 하는 머신 상태 복구 방법.
  225. 명령 경계에서 머신 상태를 복구하는 방법에 있어서,
    아키텍쳐 제어 레지스터를 수정할 수 있는 임의 명령에 대하여, 제어 레지스터값을 수정하는 부작용을 갖을 수 있는 명령을 포함하여, (ⅰ)상기 머신을 동기화하거나, (ⅱ)제어 레지스터 갱신이 필요하지 않도록 상기 명령의 실행 이전의 머신 상태를 유지시키기 위해 상기 프로세서내의 데이타 기억 구조의 명령 체크포인트를 발생시키고 기억하도록 선택하는 단계와;
    임의 추측 명령 시퀀스를 포함하는 프로그램 카운터 불연속을 생성하는 임의 명령에 대하여, 프로그램 카운터값이 명령 순위 순차내에서 명령에 대응하고 정확한 프로그램 카운터는 결함을 야기시키는 명령의 재이슈 및 재실행 없이도 재구성될 수 있도록 상기 명령의 실행 이전의 아키텍쳐 및 머신 상태를 유지하기 위해 상기 프로세서내의 데이타 기억 장치의 명령 체크포인트를 발생하여 기억하는 단계와;
    실행 예외 또는 결함 조건을 검출하기 위한 명령 실행을 모니터하는 단계와;
    상기 실행 예외 또는 결함 조건을 초래하는 각각의 명령의 명령 식별자를 기억하는 단계와;
    하나 이상의 실행 명령이 실행 예외 또는 결함 조건을 초래하는 경우, 순차적으로 초기에 발생된 상기 하나 이상의 예외 또는 결함 명령을 판정하는 단계와;
    상기 최초 예외 또는 결함 명령 식별자를 상기 프로세서의 프로그램 카운터를 백업하기 위한 엔드포인트로서 사용하는 단계와;
    상기 최초의 결함 명령이 체크포인트 명령이 경우, 상기 결함 명령의 실행 이전의 상기 체크포인트에 기억되어 있는 상기 머신 상태 정보를 복구하고, 상기 이전의 머신 상태를 복구하기 위해 상기 결함 명령의 명령 일련 번호까지 프로세서 프로그램 카운터를 감소시키는 단계와;
    머신 상태 정보가 기억되어 있는 상기 소정의 실행가능한 명령 중 하나가 상기 결함 명령과 최후 이슈된 명령 간에 순차적으로 존재하는 경우, 상기 결함 명령후 순차적으로 상기 결함 명령에 가장 근접한 체크포인트로 상기 프로세서를 백업하고, 상기 결함 명령의 실행 직전의 상태로 프로세서 상태를 복구하도록 레지스터 자원을 갱신함으로써 상기 프로세서를 백스텝핑하고, 상기 결함 명령의 명령 일련 번호까지 프로세서 프로그램 카운터를 감소시키는 단계를 포함하는 것을 특징으로 하는 머신 상태 복구 방법.
  226. 제225항에 있어서, 상기 명령 식별자는 상기 명령이 이슈될 때 지정된 상기 명령 일련 번호인 것을 특징으로 하는 머신 상태 복구 방법.
  227. 제226항에 있어서, 상기 각각의 체크포인트는 레지스터 리네임 맵 및 제어부와, 아키텍쳐 제어 레지스터값과, ISN과; 아키텍쳐 프로그램 카운터(PC) 및 다음의 아키텍쳐 프로그램 카운터(PC)와, 대체 다음 프로그램 카운터(PC)를 포함하는 것을 특징으로 하는 머신 상태 복구 방법.
  228. 제225항에 있어서, 상기 체크포인트는 명령 이슈 사이클 동안 발생되고 지정되는 것을 특징으로 하는 머신 상태 복구 방법.
  229. 제225항에 있어서, 상기 머신 동기화 단계는,
    실행 이전에 머신 동기화를 요구하는 상기 다른 명령의 이슈/실행을 일시적으로 중지시키는 단계와;
    실행 스테이지의 모든 미결정의 명령에 대해 커미트되기를 대기하는 단계와;
    상기 프로세서가 머신 동기화된후 상기 다른 명령을 이슈/실행하는 단계를 포함하는 것을 특징으로 하는 머신 상태 복구 방법.
  230. 제225항에 있어서, 실행 이전에 머신 동기화가 요구되는 식별된 상기 다른 명령은 명령의 동기화가 요구되는 성능 저하를 고려한 포함한 성능 지정 트레이드오프(trade-off)와 추측의 정도에 대한 의존성에 기초하여 선택되는 것을 특징으로 하는 머신 상태 복구 방법.
  231. 실행전의 상기 머신의 동기화를 필요로할 때 머신의 어떤 명령이 지정되어질 것인가를 선택하는 방법에 있어서,
    상기 명령에 대한 추측의 정도를 판정하는 단계와;
    모든 명령을 추측으로 처리하는데 요구되어질 요구 로직을 실현하는데 바람직하게 할당되는 최대 회로 영역을 판정하는 것을 포함하여 구현하는데 바람직한 로직 복잡도의 리미트를 판정하는 단계와;
    상기 각각의 상기 트레이드오프 파라미터에 가중 계수를 포함하는 소정의 트레이드오프 파라미터를 설정하는 단계와;
    상기 명령이 상기 판정 및 상기 기준에 기초하여 동기화되어야 하는 명령인지를 판정하는 명령 성능 인덱스를 계산하는 단계를 포함하는 것을 특징으로 하는 명령 선택 방법.
  232. 명령 이슈 수단, 명령 실행 수단, 및 프로세서내에 데이타를 기억하는 메모리 기억 장치를 갖는 프로세서에서, 임의의 명령 경계에서 프로세서의 이전의 머신 상태를 복구하는 장치에 있어서,
    각각의 이슈된 명령마다 명령 일련 번호를 할당하는 수단과;
    머신 상태를 변경시키는 제1 소정의 실행가능한 명령 세트에 대해서만 실행 이전에 상기 프로세서에 기억되어 있는 데이타내 체크포인트에 머신 상태 정보를 기억시키는 단계를 포함하는데, 머신 상태를 변경하는 상기 소정 세트의 실행가능한 명령은 상기 프로세서내에서 실행되는 머신 상태를 변경하는 모든 실행가능한 명령 보다 적으며;
    상기 결함을 야기시키는 명령을 식별하고, 다수의 예외 또는 결함이 동시에 발생하는 경우는 결함 또는 예외를 야기시키는 순위 순차적으로 최초 명령을 식별하는 수단과;
    상기 결함 명령 실행 이전에 기억된 상기 머신 상태 정보를 복구하고, 상기 최초 결함 명령이 체크포인트 명령인 경우 상기 이전의 머신 상태를 복구하도록 상기 결함 명령의 명령 일련 번호로 프로세서 프로그램 카운터를 감소시키는 수단과;
    머신 상태 정보가 기억되어 있는 상기 소정의 실행가능한 명령 중 한 명령이 상기 결함 명령과 최후 이슈된 명령간에 순차적으로 존재하는 경우, 상기 프로세서를 최초 상태로 백트래킹하는 수단과;
    순차적으로 상기 결함 명령 실행후 상기 결함 명령에 가장 근접한 체크포인트로 상기 프로세서를 백업하는 수단을 포함하는 상기 백트래킹 수단과;
    레지스터 자원을 갱신함으로써 상기 결함 명령의 실행 바로 이전의 상태로 프로세서 상태를 복구하도록 상기 프로세서를 백스텝핑하는 수단과;
    상기 결함 명령의 명령 일련 번호에 프로세서 프로그램 카운터를 감소시키는 수단을 포함하는 것을 특징으로 하는 머신 상태 복구 장치.
  233. 제232항에 있어서, 상기 프로세서내의 상기 데이타 기억 장치의 머신 상태 정보를 기억하는 상기 수단은 상기 머신 상태에 대한 레지스터 리네임 맵을 기억하는 수단을 포함하는 것을 특징으로 하는 머신 상태 복구 장치.
  234. 제233항에 있어서, 상기 레지스터 리네임 맵으로부터 상기 상태를 복구함으로써 상기 머신 상태를 복구하는 수단을 추가로 포함하는 것을 특징으로 하는 머신 상태 복구 장치.
  235. 제232항에 있어서, 추측 명령 시퀀스를 포함하는 소정의 제2 실행가능한 명령 세트 중 임의의 명령을 실행하기 전에 상기 프로세서를 동기화하는 수단을 추가로 포함하는 것을 특징으로 하는 이전의 머신 상태 복구 장치.
  236. 제235항에 있어서, 상기 머신을 동기화하는 상기 수단은,
    실행 이전에 머신 동기화를 요구하는 상기 다른 명령의 이슈/실행을 일시적으로 중지시키는 수단과;
    이전에 이슈된 명령이 커미트되고 리타이어될 때까지 실행 스테이지의 모든 미결정의 명령의 이슈를 지연시키는 수단과;
    상기 프로세서가 머신 동기화에 도달한 후에 상기 동기화 타입 명령의 이슈 및 실행을 초기화하는 수단을 추가로 포함하는 것을 특징으로 하는 머신 상태 복구 장치.
  237. 데이타를 기억하는 내부 데이타 기억 장치, 명령을 이슈하는 명령 이슈 유닛 수단, 명령 디코딩 유닛, 명령을 실행하는 명령 실행 유닛 수단, 명령 이슈 및 실행 스케줄러, 및 상기 실행 유닛으로부터 중앙 처리 장치내 다른 유닛에 실행 결과를 전달하는 데이타 포원드 분배 버스를 구비하고, 외부 메모리와 전달하고 대응하는 트랩 레벨을 갖는 내포된 트랩을 취하는 소정수의 트랩 레벨을 지지하며, 명령 이슈 유닛에 의해 이슈된 명령을 실행하는 중앙 처리 장치에서, 명령 실행 효율을 향상시키는 방법에 있어서,
    프로세서의 추측 명령 실행을 트래킹하는 단계와;
    정규 예외 모델을 유지시키는 로드 및 기억 명령을 포함하는 메모리 관련 명령을 트래킹하고 능동적으로 스케줄링하는 단계와;
    정규 아키텍쳐 상태를 유지시키면서 체크포인트 상태를 감소시키도록 상기 처리 유닛의 명령을 체크포인트하는 단계와;
    상기 실행 수단에 발생하는 예외에 대한 예외 처리를 바운딩하는 단계와;
    다수의 추측으로 이슈된 예측 명령의 실행 결과를 동시에 모니터링하는 단계와;
    부동소수점 예외 검출 단계와;
    트랩을 취하고 트랩으로부터 추측으로 리턴하는 단계와;
    프로세서 상태 복구를 요구하는 조건을 검출할 때 임의의 명령 경계에서 프로세서의 이전의 머신 상태를 복구하는 단계를 포함하는 것을 특징으로 하는 명령 실행 효율 향상 방법.
  238. 제237항에 있어서, 상기 프로세서의 추측 명령 실행을 트래킹하는 상기 단계는,
    데이타 기억 장치의 데이타 구조를 규정하는 단계와;
    이슈 유닛에 의해 이슈된 각각의 명령에 식별 태그를 할당하는 단계와;
    할당된 태그에 기초하여 데이타 구조에 기억된 활동 비트를 각각의 이슈 명령에 관련시키는 단계와;
    명령이 이슈될 때에는 데이타 구조의 활동 비트를 세팅하는 단계와;
    명령이 에러없이 실행을 완료한 때에는 데이타 구조의 활동 비트를 클리어하는 단계를 포함하는 것을 특징으로 하는 명령 실행 효율 향상 방법.
  239. 제238항에 있어서, 정규 예외 모델을 유지시키는 로드 및 기억 명령을 포함하는 메모리 관련 명령을 트래킹하고 능동적으로 스케줄링하는 상기 단계는,
    실행을 위한 다수의 명령을 상기 프로세서에 의해 이슈하는 단계와;
    상기 다수의 이슈된 명령이 추측으로 이슈된 명령인지를 식별하는 단계와;
    상기 내부 데이타 기억 장치에 상기 식별된 추측 이슈 명령과 관련된 추측 실행 지시자를 기억하는 단계와;
    상기 이슈된 명령이 외부 메모리와 관련할지를 판정하는 단계와;
    상기 내부 데이타 기억 장치의 각각의 상기 판정된 메모리 관련 명령에 관련한 메모리 관련 명령 지시자를 기억하는 단계와;
    상기 명령이 이슈된 후에 상기 다수의 명령 각각의 명령의 실행 활동 상태를 모니터링하는 단계와;
    임의의 에러 조건이 각각의 이슈된 명령 실행 동안에 발생하는지를 어서팅하여 에러가 발생하는 각각의 명령에 대한 에러 상태를 나타내는 에러 조건 지시자를 발생하는 단계와;
    상기 이슈된 명령의 실행 상태를 트래킹하는 단계와;
    이슈되지만 실행되지 않은 다른 명령의 실행 상태에 기초하여 순차적으로 초기 이슈된 비메모리 관련 명령 이전의 상기 판정된 메모리 관련 명령 중 특정 명령을 실행 비순위로 스케줄링하는 단계를 포함하며, 상기 실행 상태는 추측 이슈된 명령인 비메모리 관련 명령의 식별과 소정의 실행 완료 상태의 비메모리 관련 명령의 식별을 포함하는 것을 특징으로 하는 명령 실행 효율 향상 방법.
  240. 제239항에 있어서, 상기 CPU의 정규 아키텍쳐 상태를 유지시키면서 체크포인트 상태를 감소시키도록 상기 프로세서의 명령을 체크포인트하는 상기 단계는,
    상기 CPU에서 실행된 이전의 상기 명령이 이슈되고 실행될 때, 아키텍쳐 상태를 수정할 수 있는 명령을 선(先)식별하는 단계와;
    특정 실행 모드에서의 실행을 위해 상기 식별된 명령 중 특정 명령을 소정의 선택 기준에 기초하여 실행 이전에 상기 특정 명령에 대해 아키텍쳐 상태를 체크포인트하지 않고도 선선택하는 단계와;
    상기 선선택된 특정 명령보다 상기 식별된 명령에 대하여 아키텍쳐 상태를 실행 이전에 체크포인트하는 단계와;
    상기 특정 모드의 상기 명령 중 상기 특정 명령을 실행하는 것을 포함하는 상기 식별된 명령을 실행하는 단계를 포함하는 것을 특징으로 하는 명령 실행 효율 향상 방법.
  241. 제240항에 있어서, 상기 실행 수단에 발생하는 예외에 대한 예외 처리를 바운딩하는 상기 단계는,
    타임아웃 조건을 규정하는 열거된 이벤트의 발생 수에 대한 소정의 임계값을 설정하여 상기 임계값을 상기 CPU내의 제1 데이타 기억 장치에 기억하는 단계와;
    상기 열거된 이벤트의 발생을 상기 CPU 내의 카운터로 카운트하여 상기 발생 수를 상기 CPU내의 제2 데이타 기억 장치에 카운트로서 기억하는 단계와;
    상기 카운트를 상기 임계값과 비교하는 단계와;
    상기 카운트가 상기 타임아웃 조건과 같거나 크면 타임아웃 체크포인트를 형성하는 단계를 포함하는 것을 특징으로 하는 명령 실행 효율 향상 방법.
  242. 제241항에 있어서, 다수의 추측으로 이슈된 예측 명령의 실행 결과를 동시에 모니터링하는 상기 단계는,
    상기 추측으로 이슈된 예측 명령 각각에 예측 조건 데이타 결과를 포함하는 워치포인트 데이타를 기억하는 워치포인트 레지스터를 할당하는 단계를 포함하며, 상기 예측 조건 데이타 결과는 추측으로 이슈된 예측 명령이 추측으로 이슈되는 것에 기초하여 그리고 제어 흐름 전송 방향이 의존하는 조건의 예측 값을 식별하고;
    상기 데이타 포워드 버스를 통해 전달되는 상기 추측으로 이슈된 예측 명령에 대해 실행 결과 신호를 모니터링하는 단계와;
    상기 기억된 워치포인트 데이타에 기초한 소정의 이벤트 발생 및 실제 공지된 조건 데이타 결과 신호 및 소정의 규칙을 포함하는 실행 결과 신호를 검출하는 단계를 포함하며, 상기 실제 공지된 조건 데이타 결과 신호는 상기 추측으로 이슈된 예측 명령의 제어 흐름 전송 방향이 판정되어야 하는 조건의 실제값을 식별하며;
    상기 추측으로 이슈된 예측 명령에 관계하는 상기 데이타 포워드 버스상으로 도달한 신호와 상기 추측으로 이슈된 예측 명령 중 한 명령에 대한 상기 워치포인트에 기억되어 있는 상기 워치포인트 데이타를 비교하여 상기 신호가 매칭하는지의 여부를 판정하는 단계를 포함하며, 상기 매칭은 상기 추측으로 이슈된 예측 명령이 정확하게 예측된 것을 나타내며, 비매칭은 상기 추측으로 이슈된 예측 명령이 잘못예측된 것을 나타내고;
    상기 비교 단계에서 상기 예측이 예측 오류인 것으로 나타난 경우, 상기 예측 오류에 기초하여 실행되는 명령이 복구되지 않도록 상기 중앙 처리 장치를 초기의 중앙 처리 장치 상태로 회복시키는 단계를 포함하는 것을 특징으로 하는 명령 실행 효율 향상 방법.
  243. 제242항에 있어서, 부동소수점 예외를 검출하는 상기 단계는,
    실행을 위한 프로그램 제어 순위로 부동소수점 명령 및 비부동소수점 명령을 포함하는 이슈된 명령을 이슈하는 단계와;
    프로그램 제어 순위로 실행될 수 있는 최소 부동소수점 명령 등의 이슈된 명령을 실행하는 단계와;
    부동소수점 명령 식별 필드 및 부동소수점 트랩형 필드를 각각 갖는 기억 엘리먼트, 상기 기억 엘리먼트중 하나에 대응하는 각각의 이슈된 명령을 포함하는 데이타 기억 구조를 제공하는 단계와;
    각각의 이슈된 명령에 대하여, 대응하는 이슈된 명령이 부동 소수점인지의 여부를 나타내는 대응 기억 엘리먼트의 부동소수점 명렬 식별 필드의 데이타를 기록하는 단계와;
    다수의 소정 타입의 부동소수점 명령 트랩 중 대응하는 한 트랩에서 초래되는 하나 이상의 부동소수점 실행 예외를 실행하는 동안에 야기하는 각각의 이슈된 부동소수점 명령에 대하여, 초래될 소정 타입의 부동 수숫점 실행 트랩 중 한 트랩을 식별하는 대응 기억 엘리먼트의 부동 수숫점 트랩형 필드의 데이타를 기록하는 단계와;
    프로그램 제어 순위로 처리하는 리타이어되어온 모든 이슈된 명령에 대하여, 실행 동안에 실행 예외를 야기하지 않는 모든 이슈된 명령을 리타이어하는 단계와;
    소정의 실행 예외 중 제1 실행 예외가 이슈된 명령에 의해 야기되는 경우, 리타이될 수 없는 이슈된 명령이 나타나기 전까지 이슈된 명령을 계속 리타이어함으로써 이슈된 명령을 계속 실행시키고 트랩 시퀀스에 관련시키는 단계를 포함하며, 리타이어될 수 없는 상기 이슈된 명령은 제1 실행 예외를 야기하는 이슈된 명령과, 제1 실행 예외를 야기하는 이슈된 명령 보다는 일찍 이슈되지만 제1 실행 예외 보다 이후에 발생하는 제2 실행 예외를 야기하는 이슈된 명령 중 하나이며;
    부동소수점 트랩형 필드를 갖는 부동소수점 상태 레지스터를 제공하는 단계와;
    리타이어될 수 없는 명령을 나타내는 리타이어될 수 없는 명령에 대응하는 기억 소자의 필드를 식별하는 부동소수점의 데이타가 부동소수점 명령일 때, 리타이어될 수 없는 명령에 대응하는 기억 소자의 부동소수점 트랩형 필드의 데이타에 의해 식별되는 부동소수점 트랩 타입을 식별하는 부동소수점 상태 레지스터의 부동소수점 트랩형 필드에 데이타를 기록하는 단계를 포함하는 것을 특징으로 하는 명령 실행 효율 향상 방법.
  244. 제243항에 있어서, 트랩이 취해지고 트랩으로부터 추측으로 리턴하는 상기 단계는,
    체크포인트를 형성하는 단계와;
    상기 체크포인트로 백업하는 단계와;
    트랩을 취하는 단계와;
    트랩으로부터 리턴하는 단계와;
    트랩이 취해지는 매시간마다 데이타 프로세서의 상태를 형성하는 컨텐트를 기억하는 레지스터를 제공하는 단계와;
    트랩 레벨에 있는 것 보다 많은 수의 트랩 스택 기억 엔트리를 갖는 트랩 스택 데이타 기억 구조를 제공하는 단계와;
    트랩이 취해지는 매시간마다 트랩 레벨 중 대응 트랩으로 맵핑하는데 동시 이용가능한 트랩 스택 기억 엔트리의 현행의 유용한 리스트와, 트랩 레벨 중 대응하는 트랩으로 맵핑하는데 동시에 이용가능한 트랩 스택 기억 엔트리의 다음 리스트를 유지시키는 단계와;
    취해진 각각의 트랩에 대해, 레지스터의 컨텐트를 현행 이용가능한 트랩 스택 기억 엔트리의 다음 엔트리에 기록하는 단계와;
    트랩이 취해질 때마다 트랩 스택 기억 엔트리 중 하나의 엔트리에 대응 트랩 레벨의 이전 맵핑을 동시에 이용가능한 트랩 스택 기억 엔트리 중 다음 엔트리에 대응하는 트랩 레벨의 현행 맵핑으로 대체함으로써, 트랩 스택 기억 엔트리 중 하나로 각각의 트랩 레벨의 현행 맵핑을 유지시키는 단계와;
    현행 맵핑에 의해 트랩 레벨 중 하나로 동시에 맵핑되지만 이용불가능한 리스트를 더함으로써 트랩 레벨 중 하나로 매핑하는데 이용불가능한 각각의 트랩 스택 기억 엔트리의 이용불가능한 리스트를 유지시키는 단계를 포함하며, 트랩이 취해지는 매시간마다 이전의 맵핑에 의해 대응하는 트랩 레벨로 맵핑되고 이용불가능한 리스트로부터 제거되는 상기 트랩 스택 기억 엔트리는 더 이상 복구되지 않으며, 상기 트랩 기억 엔트리는 이전의 맵핑에 의해 대응하는 트랩 레벨로 맵핑되고;
    현행 이용가능한리스트에 이용불가능한 리스트로부터 제거된 트랩 스택 기억 엔트리 각각을 가하는 단계와;
    체크포인트 기억 엔트리와 대응하는 체크포인트 기억 엔트리를 형성하는 각각의 체크포인트를 포함하는 체크포인트 기억 유닛을 제공하는 단계와;
    형성된 체크포인트마다 대응 체크포인트 기억 엔트리의 현행 맵핑 및 현행의 이용가능한 리스트를 기억하는 단계를 포함하여;
    체크포인트로 각각 백업하기 위해, 대응 체크포인트 기억 엔트리에 기억된 맵핑으로 현행의 맵핑을 대체하고 대응 체크포인트 기억 엔트리에 기억된 이용가능한 리스트로 현행의 이용가능한 리스트를 대체하는 단계를 포함하는 것을 특징으로 하는 명령 실행 효율 향상 방법.
  245. 제244항에 있어서, 프로세서 상태 복구를 요구하는 조건을 검출할 때, 임의 명령 경계에서 프로세서의 이전의 머신 상태를 복구하는 상기 단계는,
    각각의 이슈된 명령마다 명령 일련 번호를 할당하는 단계와;
    머신 상태를 변경시키는 제1 소정의 실행가능한 명령 세트에 대해서만 실행 이전에 상기 프로세서에 기억되어 있는 데이타내 체크포인트에 머신 상태 정보를 기억시키는 단계를 포함하는데, 머신 상태를 변경하는 상기 소정 세트의 실행가능한 명령은 상기 프로세서내에서 실행되는 머신 상태를 변경하는 모든 실행가능한 명령 보다 적으며;
    상기 결함을 야기시키는 명령을 식별하고, 다수의 예외 또는 결함이 동시에 발생하는 경우는 결함 또는 예외를 야기시키는 순위 순차적으로 최초의 명령을 식별하는 단계와;
    상기 최초의 명령이 체크포인팅되는 명령인 경우, 상기 결함 명령의 실행 이전에 기억된 상기 머신 상태 정보를 복구하고 상기 이전의 머신 상태를 복구하도록 상기 결함 명령의 명령 일련 번호로 프로세서 프로그램 카운터를 감소시키는 단계와;
    머신 상태 정보가 기억되어 있는 상기 소정의 실행가능한 명령 중 하나가 상기 결함 명령과 타임아웃 이슈된 명령간에 순차적으로 기억되어 있는 경우, 상기 결함 명령 실행후 순차적으로 상기 결함 명령에 가장 근접한 체크포인트로 상기 프로세서를 백업하고, 레지스터 자원을 갱신함으로써 상기 결함 명령의 실행 직전의 상태로 프로세서 상태를 복구하도록 상기 프로세서를 백스텝핑하고, 상기 결함 명령의 명령 일련 번호에 프로세서 프로그램 카운터를 감소시키는 단계를 포함하는 것을 특징으로 하는 명령 실행 효율 향상 방법.
KR1019970705598A 1995-02-14 1996-02-13 고성능투기적실행프로세서를위한구조및방법 KR100425805B1 (ko)

Applications Claiming Priority (25)

Application Number Priority Date Filing Date Title
US39088595A 1995-02-14 1995-02-14
US8/380,885 1995-02-14
US08/390,885 1995-02-14
US39829995A 1995-03-03 1995-03-03
US08/398,299 1995-03-03
US8/398,299 1995-03-03
US08/478,025 1995-06-07
US08/473,223 1995-06-07
US08/482,073 1995-06-07
US08/487,801 US5751985A (en) 1995-02-14 1995-06-07 Processor structure and method for tracking instruction status to maintain precise state
US08/472,394 1995-06-07
US08/483,958 US5649136A (en) 1995-02-14 1995-06-07 Processor structure and method for maintaining and restoring precise state at any instruction boundary
US8/484,795 1995-06-07
US08/473,223 US5644742A (en) 1995-02-14 1995-06-07 Processor structure and method for a time-out checkpoint
US8/473,223 1995-06-07
US08/482,075 US5655115A (en) 1995-02-14 1995-06-07 Processor structure and method for watchpoint of plural simultaneous unresolved branch evaluation
US08/476,419 US5659721A (en) 1995-02-14 1995-06-07 Processor structure and method for checkpointing instructions to maintain precise state
US08/476,419 1995-06-07
US08/478,025 US5651124A (en) 1995-02-14 1995-06-07 Processor structure and method for aggressively scheduling long latency instructions including load/store instructions while maintaining precise state
US08/484,795 1995-06-07
US8/478,025 1995-06-07
US08/483,958 1995-06-07
US08/472,394 US5673408A (en) 1995-02-14 1995-06-07 Processor structure and method for renamable trap-stack
US08/484,795 US5673426A (en) 1995-02-14 1995-06-07 Processor structure and method for tracking floating-point exceptions
US8/476,419 1995-06-07

Publications (2)

Publication Number Publication Date
KR19980702203A true KR19980702203A (ko) 1998-07-15
KR100425805B1 KR100425805B1 (ko) 2004-07-27

Family

ID=27013307

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970705598A KR100425805B1 (ko) 1995-02-14 1996-02-13 고성능투기적실행프로세서를위한구조및방법

Country Status (3)

Country Link
US (9) US5649136A (ko)
JP (1) JP5018728B2 (ko)
KR (1) KR100425805B1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100721074B1 (ko) * 2000-03-08 2007-05-23 소니 가부시끼 가이샤 전자 정보 콘텐츠 신호 분배 처리 시스템, 정보 신호 분배장치, 정보 처리 장치 및 전자 정보 콘텐츠 신호 분배처리 방법
US9983932B2 (en) 2010-05-27 2018-05-29 Samsung Electronics Co., Ltd. Pipeline processor and an equal model compensator method and apparatus to store the processing result
KR20190062870A (ko) * 2017-11-29 2019-06-07 연세대학교 산학협력단 실시간 시스템 정보를 이용한 고성능 컴퓨팅 시스템의 체크포인트 빈도 조절 방법 및 장치
KR20210049725A (ko) * 2020-07-20 2021-05-06 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디. 명령 실행방법, 장치, 전자기기, 컴퓨터 판독 가능 저장매체 및 컴퓨터 프로그램

Families Citing this family (308)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2016068C (en) * 1989-05-24 2000-04-04 Robert W. Horst Multiple instruction issue computer architecture
AU2663095A (en) * 1994-06-10 1996-01-05 Sequoia Systems, Inc. Main memory system and checkpointing protocol for fault-tolerant computer system
US5799179A (en) * 1995-01-24 1998-08-25 International Business Machines Corporation Handling of exceptions in speculative instructions
US5649136A (en) * 1995-02-14 1997-07-15 Hal Computer Systems, Inc. Processor structure and method for maintaining and restoring precise state at any instruction boundary
US6446224B1 (en) 1995-03-03 2002-09-03 Fujitsu Limited Method and apparatus for prioritizing and handling errors in a computer system
JP3020833B2 (ja) * 1995-06-19 2000-03-15 株式会社東芝 チェックポイント取得システム
US5864657A (en) * 1995-11-29 1999-01-26 Texas Micro, Inc. Main memory system and checkpointing protocol for fault-tolerant computer system
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
US6233704B1 (en) * 1996-03-13 2001-05-15 Silicon Graphics, Inc. System and method for fault-tolerant transmission of data within a dual ring network
US5968166A (en) * 1996-03-22 1999-10-19 Matsushita Electric Industrial Co., Ltd. Information processing apparatus and method, and scheduling device for reducing inactivity due to wait state
US5875340A (en) * 1996-05-31 1999-02-23 Hewlett-Packard Company Optimized storage system and method for a processor that executes instructions out of order
US5958061A (en) * 1996-07-24 1999-09-28 Transmeta Corporation Host microprocessor with apparatus for temporarily holding target processor state
US6199152B1 (en) * 1996-08-22 2001-03-06 Transmeta Corporation Translated memory protection apparatus for an advanced microprocessor
US5826070A (en) * 1996-08-30 1998-10-20 International Business Machines Corporation Apparatus and method for maintaining status flags and condition codes using a renaming technique in an out of order floating point execution unit
US5835698A (en) * 1996-09-20 1998-11-10 Novell, Inc. Unilaterally-controlled, time-insensitive, data-link recovery apparatus and method
US6094528A (en) * 1996-10-24 2000-07-25 Sun Microsystems, Inc. Method and apparatus for system building with a transactional interpreter
US5909572A (en) * 1996-12-02 1999-06-01 Compaq Computer Corp. System and method for conditionally moving an operand from a source register to a destination register
US5941938A (en) * 1996-12-02 1999-08-24 Compaq Computer Corp. System and method for performing an accumulate operation on one or more operands within a partitioned register
US6009505A (en) * 1996-12-02 1999-12-28 Compaq Computer Corp. System and method for routing one operand to arithmetic logic units from fixed register slots and another operand from any register slot
US6061521A (en) * 1996-12-02 2000-05-09 Compaq Computer Corp. Computer having multimedia operations executable as two distinct sets of operations within a single instruction cycle
US5893145A (en) * 1996-12-02 1999-04-06 Compaq Computer Corp. System and method for routing operands within partitions of a source register to partitions within a destination register
US6035424A (en) * 1996-12-09 2000-03-07 International Business Machines Corporation Method and apparatus for tracking processing of a command
US5764971A (en) * 1996-12-11 1998-06-09 Industrial Technology Research Institute Method and apparatus for implementing precise interrupts in a pipelined data processing system
US5784606A (en) * 1996-12-16 1998-07-21 International Business Machines Corporation Method and system in a superscalar data processing system for the efficient handling of exceptions
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
US20010037268A1 (en) 1997-05-08 2001-11-01 Miller David S. Fully-automated system for tax reporting, payment and refund and system for accessing tax information
US6173432B1 (en) 1997-06-20 2001-01-09 Micron Technology, Inc. Method and apparatus for generating a sequence of clock signals
US6052777A (en) * 1997-06-25 2000-04-18 Sun Microsystems, Inc. Method for delivering precise traps and interrupts in an out-of-order processor
US6049868A (en) * 1997-06-25 2000-04-11 Sun Microsystems, Inc. Apparatus for delivering precise traps and interrupts in an out-of-order processor
US5941977A (en) * 1997-06-25 1999-08-24 Sun Microsystems, Inc. Apparatus for handling register windows in an out-of-order processor
US6263416B1 (en) * 1997-06-27 2001-07-17 Sun Microsystems, Inc. Method for reducing number of register file ports in a wide instruction issue processor
US6139200A (en) * 1997-06-30 2000-10-31 Sun Microsystems, Inc. Register resource allocation feedback
US5987598A (en) * 1997-07-07 1999-11-16 International Business Machines Corporation Method and system for tracking instruction progress within a data processing system
US6070235A (en) * 1997-07-14 2000-05-30 International Business Machines Corporation Data processing system and method for capturing history buffer data
US6317638B1 (en) * 1997-08-22 2001-11-13 Honeywell Inc. Multi-layer state machine for a hybrid real-time control system and method of operation thereof
JPH1196006A (ja) * 1997-09-19 1999-04-09 Hitachi Ltd 情報処理装置
US5961636A (en) * 1997-09-22 1999-10-05 International Business Machines Corporation Checkpoint table for selective instruction flushing in a speculative execution unit
US6061777A (en) * 1997-10-28 2000-05-09 International Business Machines Corporation Apparatus and method for reducing the number of rename registers required in the operation of a processor
US6175814B1 (en) 1997-11-26 2001-01-16 Compaq Computer Corporation Apparatus for determining the instantaneous average number of instructions processed
US6237073B1 (en) 1997-11-26 2001-05-22 Compaq Computer Corporation Method for providing virtual memory to physical memory page mapping in a computer operating system that randomly samples state information
US6549930B1 (en) 1997-11-26 2003-04-15 Compaq Computer Corporation Method for scheduling threads in a multithreaded processor
US6195748B1 (en) 1997-11-26 2001-02-27 Compaq Computer Corporation Apparatus for sampling instruction execution information in a processor pipeline
US6442585B1 (en) 1997-11-26 2002-08-27 Compaq Computer Corporation Method for scheduling contexts based on statistics of memory system interactions in a computer system
US6237059B1 (en) 1997-11-26 2001-05-22 Compaq Computer Corporation Method for estimating statistics of properties of memory system interactions among contexts in a computer system
US6374367B1 (en) 1997-11-26 2002-04-16 Compaq Computer Corporation Apparatus and method for monitoring a computer system to guide optimization
US6332178B1 (en) 1997-11-26 2001-12-18 Compaq Computer Corporation Method for estimating statistics of properties of memory system transactions
US6163840A (en) * 1997-11-26 2000-12-19 Compaq Computer Corporation Method and apparatus for sampling multiple potentially concurrent instructions in a processor pipeline
US5923872A (en) * 1997-11-26 1999-07-13 Digital Equipment Corporation Apparatus for sampling instruction operand or result values in a processor pipeline
US6029225A (en) * 1997-12-16 2000-02-22 Hewlett-Packard Company Cache bank conflict avoidance and cache collision avoidance
US6625756B1 (en) * 1997-12-19 2003-09-23 Intel Corporation Replay mechanism for soft error recovery
US6047370A (en) * 1997-12-19 2000-04-04 Intel Corporation Control of processor pipeline movement through replay queue and pointer backup
US6205542B1 (en) 1997-12-24 2001-03-20 Intel Corporation Processor pipeline including replay
US6076153A (en) * 1997-12-24 2000-06-13 Intel Corporation Processor pipeline including partial replay
US6128722A (en) * 1998-02-13 2000-10-03 International Business Machines Corporation Data processing system having an apparatus for exception tracking during out-of-order operation and method therefor
US6148391A (en) * 1998-03-26 2000-11-14 Sun Microsystems, Inc. System for simultaneously accessing one or more stack elements by multiple functional units using real stack addresses
US5995960A (en) * 1998-04-08 1999-11-30 International Business Machines Corporaiton Method and system for improving efficiency of programs utilizing databases by exeuting scenarios based on recalled processed information
US6164841A (en) * 1998-05-04 2000-12-26 Hewlett-Packard Company Method, apparatus, and product for dynamic software code translation system
US6167504A (en) * 1998-07-24 2000-12-26 Sun Microsystems, Inc. Method, apparatus and computer program product for processing stack related exception traps
US6119223A (en) * 1998-07-31 2000-09-12 Advanced Micro Devices, Inc. Map unit having rapid misprediction recovery
US6237076B1 (en) * 1998-08-19 2001-05-22 International Business Machines Corporation Method for register renaming by copying a 32 bits instruction directly or indirectly to a 64 bits instruction
US6122727A (en) 1998-08-24 2000-09-19 Advanced Micro Devices, Inc. Symmetrical instructions queue for high clock frequency scheduling
US6212623B1 (en) 1998-08-24 2001-04-03 Advanced Micro Devices, Inc. Universal dependency vector/queue entry
US6202095B1 (en) * 1998-10-07 2001-03-13 International Business Machines Corporation Defining characteristics between processing systems
US6393583B1 (en) 1998-10-29 2002-05-21 International Business Machines Corporation Method of performing checkpoint/restart of a parallel program
US6256751B1 (en) 1998-10-29 2001-07-03 International Business Machines Corporation Restoring checkpointed processes without restoring attributes of external data referenced by the processes
US6332200B1 (en) 1998-10-29 2001-12-18 International Business Machines Corporation Capturing and identifying a complete and consistent set of checkpoint files
US6338147B1 (en) 1998-10-29 2002-01-08 International Business Machines Corporation Program products for performing checkpoint/restart of a parallel program
US6332199B1 (en) 1998-10-29 2001-12-18 International Business Machines Corporation Restoring checkpointed processes including adjusting environment variables of the processes
US6401216B1 (en) 1998-10-29 2002-06-04 International Business Machines Corporation System of performing checkpoint/restart of a parallel program
US6807624B1 (en) * 1998-12-17 2004-10-19 Fujitsu Limited Instruction control device and method therefor
US6571363B1 (en) * 1998-12-30 2003-05-27 Texas Instruments Incorporated Single event upset tolerant microprocessor architecture
US6266763B1 (en) * 1999-01-05 2001-07-24 Advanced Micro Devices, Inc. Physical rename register for efficiently storing floating point, integer, condition code, and multimedia values
US6738896B1 (en) * 1999-02-01 2004-05-18 Hewlett-Packard Development Company, L.P. Method and apparatus for determining availability of a queue which allows random insertion
AU763141B2 (en) * 1999-04-19 2003-07-17 Motorola Australia Pty Ltd A method of detecting illegal sequences of code execution
US6898696B1 (en) * 1999-06-14 2005-05-24 International Business Machines Corporation Method and system for efficiently restoring a processor's execution state following an interrupt caused by an interruptible instruction
CN1264087C (zh) * 1999-09-08 2006-07-12 关一 寄存器再命名方法
US6604188B1 (en) 1999-10-20 2003-08-05 Transmeta Corporation Pipeline replay support for multi-cycle operations wherein all VLIW instructions are flushed upon detection of a multi-cycle atom operation in a VLIW instruction
US6728865B1 (en) 1999-10-20 2004-04-27 Transmeta Corporation Pipeline replay support for unaligned memory operations
US6571265B1 (en) * 1999-10-29 2003-05-27 Intel Corporation Mechanism to detect IEEE underflow exceptions on speculative floating-point operations
US6615366B1 (en) * 1999-12-21 2003-09-02 Intel Corporation Microprocessor with dual execution core operable in high reliability mode
EP1244962B1 (en) 2000-01-03 2003-10-08 Advanced Micro Devices, Inc. Scheduler capable of issuing and reissuing dependency chains
US6622235B1 (en) 2000-01-03 2003-09-16 Advanced Micro Devices, Inc. Scheduler which retries load/store hit situations
US6564315B1 (en) 2000-01-03 2003-05-13 Advanced Micro Devices, Inc. Scheduler which discovers non-speculative nature of an instruction after issuing and reissues the instruction
US6542984B1 (en) 2000-01-03 2003-04-01 Advanced Micro Devices, Inc. Scheduler capable of issuing and reissuing dependency chains
US6609190B1 (en) * 2000-01-06 2003-08-19 International Business Machines Corporation Microprocessor with primary and secondary issue queue
US20010049781A1 (en) * 2000-02-29 2001-12-06 Hideo Miyake Computer with high-speed context switching
US6519730B1 (en) * 2000-03-16 2003-02-11 Fujitsu Limited Computer and error recovery method for the same
US6594821B1 (en) 2000-03-30 2003-07-15 Transmeta Corporation Translation consistency checking for modified target instructions by comparing to original copy
US6694427B1 (en) * 2000-04-20 2004-02-17 International Business Machines Corporation Method system and apparatus for instruction tracing with out of order processors
US7188232B1 (en) * 2000-05-03 2007-03-06 Choquette Jack H Pipelined processing with commit speculation staging buffer and load/store centric exception handling
US6968469B1 (en) 2000-06-16 2005-11-22 Transmeta Corporation System and method for preserving internal processor context when the processor is powered down and restoring the internal processor context when processor is restored
GB0015222D0 (en) * 2000-06-21 2000-08-16 Money Controls Plc Bar code system
US6799268B1 (en) * 2000-06-30 2004-09-28 Intel Corporation Branch ordering buffer
US6829701B2 (en) * 2000-12-15 2004-12-07 Intel Corporation Watchpoint engine for a pipelined processor
US6823447B2 (en) * 2001-03-01 2004-11-23 International Business Machines Corporation Software hint to improve the branch target prediction accuracy
US6889316B2 (en) * 2001-03-28 2005-05-03 Intel Corporation Method and apparatus for restoring registers after cancelling a multi-cycle instruction
US7240186B2 (en) * 2001-07-16 2007-07-03 Hewlett-Packard Development Company, L.P. System and method to avoid resource contention in the presence of exceptions
US6976152B2 (en) * 2001-09-24 2005-12-13 Broadcom Corporation Comparing operands of instructions against a replay scoreboard to detect an instruction replay and copying a replay scoreboard to an issue scoreboard
US7203817B2 (en) * 2001-09-24 2007-04-10 Broadcom Corporation Power consumption reduction in a pipeline by stalling instruction issue on a load miss
US7269714B2 (en) 2001-09-24 2007-09-11 Broadcom Corporation Inhibiting of a co-issuing instruction in a processor having different pipeline lengths
US6959435B2 (en) * 2001-09-28 2005-10-25 Intel Corporation Compiler-directed speculative approach to resolve performance-degrading long latency events in an application
US20030088758A1 (en) * 2001-11-08 2003-05-08 Matthew Becker Methods and systems for determining valid microprocessor instructions
US6877085B2 (en) * 2001-11-30 2005-04-05 Broadcom Corporation Mechanism for processing speclative LL and SC instructions in a pipelined processor
JP4130076B2 (ja) * 2001-12-21 2008-08-06 富士通株式会社 データベース管理プログラムおよび記録媒体
US20040186982A9 (en) * 2002-02-06 2004-09-23 Matthew Becker Stalling Instructions in a pipelined microprocessor
US6959377B2 (en) * 2002-03-20 2005-10-25 Sun Microsystems, Inc. Method and system for managing registers
US7058877B2 (en) * 2002-05-14 2006-06-06 Sun Microsystems, Inc. Method and apparatus for providing error correction within a register file of a CPU
KR100459225B1 (ko) * 2002-06-29 2004-12-03 매그나칩 반도체 유한회사 프레임 구조 프로세서
US7143106B2 (en) * 2002-09-24 2006-11-28 International Business Machines Corporation Reclaiming resources in response to forced state transitions
US7130988B2 (en) * 2002-11-15 2006-10-31 Via-Cyrix, Inc. Status register update logic optimization
US7203821B2 (en) * 2003-01-08 2007-04-10 Sun Microsystems, Inc. Method and apparatus to handle window management instructions without post serialization in an out of order multi-issue processor supporting multiple strands
US7337444B2 (en) * 2003-01-09 2008-02-26 International Business Machines Corporation Method and apparatus for thread-safe handlers for checkpoints and restarts
WO2004068337A1 (ja) * 2003-01-30 2004-08-12 Fujitsu Limited 情報処理装置
US7310723B1 (en) 2003-04-02 2007-12-18 Transmeta Corporation Methods and systems employing a flag for deferring exception handling to a commit or rollback point
US7360062B2 (en) * 2003-04-25 2008-04-15 International Business Machines Corporation Method and apparatus for selecting an instruction thread for processing in a multi-thread processor
US7401207B2 (en) * 2003-04-25 2008-07-15 International Business Machines Corporation Apparatus and method for adjusting instruction thread priority in a multi-thread processor
US7401208B2 (en) * 2003-04-25 2008-07-15 International Business Machines Corporation Method and apparatus for randomizing instruction thread interleaving in a multi-thread processor
US7168027B2 (en) 2003-06-12 2007-01-23 Micron Technology, Inc. Dynamic synchronization of data capture on an optical or other high speed communications link
US7321964B2 (en) * 2003-07-08 2008-01-22 Advanced Micro Devices, Inc. Store-to-load forwarding buffer using indexed lookup
US7114060B2 (en) * 2003-10-14 2006-09-26 Sun Microsystems, Inc. Selectively deferring instructions issued in program order utilizing a checkpoint and multiple deferral scheme
US7487335B1 (en) 2003-10-14 2009-02-03 Sun Microsystems, Inc. Method and apparatus for accessing registers during deferred execution
US7269875B1 (en) * 2003-11-19 2007-09-18 David Brian Grimes Cleaning apparatus
US7610226B1 (en) 2004-02-23 2009-10-27 Simplification, Llc System for tax data collection
US8065665B1 (en) * 2004-02-28 2011-11-22 Oracle America, Inc. Method and apparatus for correlating profile data
US20070006195A1 (en) * 2004-03-31 2007-01-04 Christof Braun Method and structure for explicit software control of data speculation
US7711928B2 (en) * 2004-03-31 2010-05-04 Oracle America, Inc. Method and structure for explicit software control using scoreboard status information
US7293160B2 (en) * 2004-06-14 2007-11-06 Sun Microsystems, Inc. Mechanism for eliminating the restart penalty when reissuing deferred instructions
US7555703B2 (en) * 2004-06-17 2009-06-30 Intel Corporation Method and apparatus for reducing false error detection in a microprocessor
US7263631B2 (en) * 2004-08-13 2007-08-28 Seakr Engineering, Incorporated Soft error detection and recovery
US7487337B2 (en) * 2004-09-30 2009-02-03 Intel Corporation Back-end renaming in a continual flow processor pipeline
US7742958B1 (en) 2004-11-08 2010-06-22 Hrb Tax Group, Inc. System and method for preparing a tax return using electronically distributed tax return data
US7496735B2 (en) * 2004-11-22 2009-02-24 Strandera Corporation Method and apparatus for incremental commitment to architectural state in a microprocessor
US7849450B1 (en) * 2005-01-28 2010-12-07 Intel Corporation Devices, methods and computer program products for reverse execution of a simulation
US7200742B2 (en) 2005-02-10 2007-04-03 International Business Machines Corporation System and method for creating precise exceptions
US7478276B2 (en) * 2005-02-10 2009-01-13 International Business Machines Corporation Method for checkpointing instruction groups with out-of-order floating point instructions in a multi-threaded processor
US7467325B2 (en) 2005-02-10 2008-12-16 International Business Machines Corporation Processor instruction retry recovery
US7634641B2 (en) * 2005-03-18 2009-12-15 Sun Microsystems, Inc. Method and apparatus for using multiple threads to spectulatively execute instructions
US7571304B2 (en) * 2005-03-18 2009-08-04 Sun Microsystems, Inc. Generation of multiple checkpoints in a processor that supports speculative execution
US7409535B2 (en) * 2005-04-20 2008-08-05 International Business Machines Corporation Branch target prediction for multi-target branches by identifying a repeated pattern
JP4837305B2 (ja) * 2005-05-10 2011-12-14 ルネサスエレクトロニクス株式会社 マイクロプロセッサ及びマイクロプロセッサの制御方法
US7275223B2 (en) * 2005-05-18 2007-09-25 Texas Instruments Incorporated Facilitating high-level validation of integrated circuits in parallel with development of blocks in a hierarchical design approach
US7900193B1 (en) * 2005-05-25 2011-03-01 Parasoft Corporation System and method for detecting defects in a computer program using data and control flow analysis
US7409589B2 (en) * 2005-05-27 2008-08-05 International Business Machines Corporation Method and apparatus for reducing number of cycles required to checkpoint instructions in a multi-threaded processor
US7882339B2 (en) * 2005-06-23 2011-02-01 Intel Corporation Primitives to enhance thread-level speculation
US8413162B1 (en) 2005-06-28 2013-04-02 Guillermo J. Rozas Multi-threading based on rollback
JP2007034731A (ja) * 2005-07-27 2007-02-08 Toshiba Corp パイプラインプロセッサ
US7373486B2 (en) * 2005-08-29 2008-05-13 P.A. Semi, Inc. Partially decoded register renamer
US20070050610A1 (en) * 2005-08-31 2007-03-01 Texas Instruments Incorporated Centralized resolution of conditional instructions
US7395418B1 (en) * 2005-09-22 2008-07-01 Sun Microsystems, Inc. Using a transactional execution mechanism to free up processor resources used by a busy-waiting thread
US7779307B1 (en) * 2005-09-28 2010-08-17 Oracle America, Inc. Memory ordering queue tightly coupled with a versioning cache circuit
US8032710B1 (en) 2005-09-28 2011-10-04 Oracle America, Inc. System and method for ensuring coherency in trace execution
US8370576B1 (en) 2005-09-28 2013-02-05 Oracle America, Inc. Cache rollback acceleration via a bank based versioning cache ciruit
US7877630B1 (en) 2005-09-28 2011-01-25 Oracle America, Inc. Trace based rollback of a speculatively updated cache
US8024522B1 (en) 2005-09-28 2011-09-20 Oracle America, Inc. Memory ordering queue/versioning cache circuit
US7953933B1 (en) 2005-09-28 2011-05-31 Oracle America, Inc. Instruction cache, decoder circuit, basic block cache circuit and multi-block cache circuit
US8051247B1 (en) 2005-09-28 2011-11-01 Oracle America, Inc. Trace based deallocation of entries in a versioning cache circuit
US8019944B1 (en) 2005-09-28 2011-09-13 Oracle America, Inc. Checking for a memory ordering violation after a speculative cache write
US7587585B1 (en) * 2005-10-26 2009-09-08 Sun Microsystems, Inc. Flag management in processors enabled for speculative execution of micro-operation traces
US7783863B1 (en) 2005-09-28 2010-08-24 Oracle America, Inc. Graceful degradation in a trace-based processor
US7814298B1 (en) 2005-09-28 2010-10-12 Oracle America, Inc. Promoting and appending traces in an instruction processing circuit based upon a bias value
US7966479B1 (en) 2005-09-28 2011-06-21 Oracle America, Inc. Concurrent vs. low power branch prediction
US7676634B1 (en) 2005-09-28 2010-03-09 Sun Microsystems, Inc. Selective trace cache invalidation for self-modifying code via memory aging
US7953961B1 (en) 2005-09-28 2011-05-31 Oracle America, Inc. Trace unit with an op path from a decoder (bypass mode) and from a basic-block builder
US7849292B1 (en) 2005-09-28 2010-12-07 Oracle America, Inc. Flag optimization of a trace
US8037285B1 (en) * 2005-09-28 2011-10-11 Oracle America, Inc. Trace unit
US7987342B1 (en) 2005-09-28 2011-07-26 Oracle America, Inc. Trace unit with a decoder, a basic-block cache, a multi-block cache, and sequencer
US8499293B1 (en) 2005-09-28 2013-07-30 Oracle America, Inc. Symbolic renaming optimization of a trace
US7870369B1 (en) 2005-09-28 2011-01-11 Oracle America, Inc. Abort prioritization in a trace-based processor
US8015359B1 (en) 2005-09-28 2011-09-06 Oracle America, Inc. Method and system for utilizing a common structure for trace verification and maintaining coherency in an instruction processing circuit
US7949854B1 (en) 2005-09-28 2011-05-24 Oracle America, Inc. Trace unit with a trace builder
US7747822B1 (en) 2005-10-31 2010-06-29 Oracle America Inc. Maintaining memory coherency with a trace cache
US7937564B1 (en) 2005-09-28 2011-05-03 Oracle America, Inc. Emit vector optimization of a trace
US7996662B2 (en) * 2005-11-17 2011-08-09 Apple Inc. Floating point status/control register encodings for speculative register field
US7681019B1 (en) 2005-11-18 2010-03-16 Sun Microsystems, Inc. Executing functions determined via a collection of operations from translated instructions
US7797517B1 (en) 2005-11-18 2010-09-14 Oracle America, Inc. Trace optimization via fusing operations of a target architecture operation set
US20070168591A1 (en) * 2005-12-08 2007-07-19 Inter-Tel, Inc. System and method for validating codec software
RU2305313C1 (ru) * 2005-12-27 2007-08-27 Яков Аркадьевич Горбадей Способ я.а. горбадея обеспечения надежной работы программного вычислительного средства
US7725682B2 (en) * 2006-01-10 2010-05-25 International Business Machines Corporation Method and apparatus for sharing storage and execution resources between architectural units in a microprocessor using a polymorphic function unit
US8010774B2 (en) * 2006-03-13 2011-08-30 Arm Limited Breakpointing on register access events or I/O port access events
US20070226471A1 (en) * 2006-03-13 2007-09-27 Arm Limited Data processing apparatus
JP4961781B2 (ja) * 2006-03-14 2012-06-27 ソニー株式会社 情報処理装置、その起動方法およびプログラム
US7904789B1 (en) * 2006-03-31 2011-03-08 Guillermo Rozas Techniques for detecting and correcting errors in a memory device
EP2011018B1 (en) 2006-04-12 2016-07-13 Soft Machines, Inc. Apparatus and method for processing an instruction matrix specifying parallel and dependent operations
US20070294693A1 (en) * 2006-06-16 2007-12-20 Microsoft Corporation Scheduling thread execution among a plurality of processors based on evaluation of memory access data
US8301890B2 (en) * 2006-08-10 2012-10-30 Inside Secure Software execution randomization
US20080077777A1 (en) * 2006-09-25 2008-03-27 Arm Limited Register renaming for instructions having unresolved condition codes
US20080077782A1 (en) * 2006-09-26 2008-03-27 Arm Limited Restoring a register renaming table within a processor following an exception
US8370609B1 (en) 2006-09-27 2013-02-05 Oracle America, Inc. Data cache rollbacks for failed speculative traces with memory operations
US8010745B1 (en) 2006-09-27 2011-08-30 Oracle America, Inc. Rolling back a speculative update of a non-modifiable cache line
US9946547B2 (en) 2006-09-29 2018-04-17 Arm Finance Overseas Limited Load/store unit for a processor, and applications thereof
US7594079B2 (en) * 2006-09-29 2009-09-22 Mips Technologies, Inc. Data cache virtual hint way prediction, and applications thereof
EP2527972A3 (en) 2006-11-14 2014-08-06 Soft Machines, Inc. Apparatus and method for processing complex instruction formats in a multi- threaded architecture supporting various context switch modes and virtualization schemes
US7475224B2 (en) * 2007-01-03 2009-01-06 International Business Machines Corporation Register map unit supporting mapping of multiple register specifier classes
US8341352B2 (en) * 2007-04-17 2012-12-25 International Business Machines Corporation Checkpointed tag prefetcher
US7984273B2 (en) 2007-12-31 2011-07-19 Intel Corporation System and method for using a mask register to track progress of gathering elements from memory
US8447962B2 (en) * 2009-12-22 2013-05-21 Intel Corporation Gathering and scattering multiple data elements
US10387151B2 (en) 2007-12-31 2019-08-20 Intel Corporation Processor and method for tracking progress of gathering/scattering data element pairs in different cache memory banks
JP5166955B2 (ja) * 2008-04-24 2013-03-21 キヤノン株式会社 情報処理装置、情報処理方法、及び、情報処理プログラム
US7921280B2 (en) * 2008-06-27 2011-04-05 Intel Corporation Selectively powered retirement unit using a partitioned allocation array and a partitioned writeback array
US20100064061A1 (en) * 2008-09-05 2010-03-11 Apple Inc. Providing substantially immediate action in response to input event
US20100153776A1 (en) * 2008-12-12 2010-06-17 Sun Microsystems, Inc. Using safepoints to provide precise exception semantics for a virtual machine
US8959277B2 (en) * 2008-12-12 2015-02-17 Oracle America, Inc. Facilitating gated stores without data bypass
CN101727312B (zh) * 2009-01-22 2013-01-09 杭州中天微系统有限公司 一种支持自动纠错功能的返回地址栈实现方法
US9189282B2 (en) * 2009-04-21 2015-11-17 Empire Technology Development Llc Thread-to-core mapping based on thread deadline, thread demand, and hardware characteristics data collected by a performance counter
US8881157B2 (en) * 2009-09-11 2014-11-04 Empire Technology Development Llc Allocating threads to cores based on threads falling behind thread completion target deadline
US20110066830A1 (en) * 2009-09-11 2011-03-17 Andrew Wolfe Cache prefill on thread migration
US9569270B2 (en) * 2009-04-21 2017-02-14 Empire Technology Development Llc Mapping thread phases onto heterogeneous cores based on execution characteristics and cache line eviction counts
US8694974B2 (en) * 2009-04-29 2014-04-08 Hewlett-Packard Development Company, L.P. Load-checking atomic section
US20100332810A1 (en) * 2009-06-30 2010-12-30 Tao Wang Reconfigurable Functional Unit Having Instruction Context Storage Circuitry To Support Speculative Execution of Instructions
US20110047358A1 (en) * 2009-08-19 2011-02-24 International Business Machines Corporation In-Data Path Tracking of Floating Point Exceptions and Store-Based Exception Indication
US8458684B2 (en) * 2009-08-19 2013-06-04 International Business Machines Corporation Insertion of operation-and-indicate instructions for optimized SIMD code
US8832403B2 (en) * 2009-11-13 2014-09-09 International Business Machines Corporation Generation-based memory synchronization in a multiprocessor system with weakly consistent memory accesses
US10175990B2 (en) 2009-12-22 2019-01-08 Intel Corporation Gathering and scattering multiple data elements
US8549267B2 (en) 2009-12-22 2013-10-01 Intel Corporation Methods and apparatus to manage partial-commit checkpoints with fixup support
US8739164B2 (en) * 2010-02-24 2014-05-27 Advanced Micro Devices, Inc. Automatic suspend atomic hardware transactional memory in response to detecting an implicit suspend condition and resume thereof
GB2478733B (en) 2010-03-15 2013-08-14 Advanced Risc Mach Ltd Apparatus and method for handling exception events
US8578355B1 (en) * 2010-03-19 2013-11-05 Google Inc. Scenario based optimization
US20110238962A1 (en) * 2010-03-23 2011-09-29 International Business Machines Corporation Register Checkpointing for Speculative Modes of Execution in Out-of-Order Processors
US8688963B2 (en) * 2010-04-22 2014-04-01 Oracle International Corporation Checkpoint allocation in a speculative processor
US8209769B1 (en) 2010-05-20 2012-07-03 The United States Of America As Represented By The Secretary Of The Navy Hands free bomb suit tool carrier
US8578139B2 (en) 2010-08-05 2013-11-05 Arm Limited Checkpointing long latency instruction as fake branch in branch prediction mechanism
WO2012037491A2 (en) 2010-09-17 2012-03-22 Soft Machines, Inc. Single cycle multi-branch prediction including shadow cache for early far branch prediction
WO2012103209A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Guest instruction to native instruction range based mapping using a conversion look aside buffer of a processor
WO2012103245A2 (en) 2011-01-27 2012-08-02 Soft Machines Inc. Guest instruction block with near branching and far branching sequence construction to native instruction block
WO2012103367A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Guest to native block address mappings and management of native code storage
WO2012103253A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Multilevel conversion table cache for translating guest instructions to native instructions
WO2012103359A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Hardware acceleration components for translating guest instructions to native instructions
TWI533129B (zh) 2011-03-25 2016-05-11 軟體機器公司 使用可分割引擎實體化的虛擬核心執行指令序列程式碼區塊
CN108376097B (zh) 2011-03-25 2022-04-15 英特尔公司 用于通过使用由可分割引擎实例化的虚拟核来支持代码块执行的寄存器文件段
EP2689326B1 (en) 2011-03-25 2022-11-16 Intel Corporation Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines
US9063747B2 (en) 2011-04-28 2015-06-23 Freescale Semiconductor, Inc. Microprocessor systems and methods for a combined register file and checkpoint repair register
TWI666551B (zh) 2011-05-20 2019-07-21 美商英特爾股份有限公司 以複數個引擎作資源與互連結構的分散式分配以支援指令序列的執行
EP2710480B1 (en) 2011-05-20 2018-06-20 Intel Corporation An interconnect structure to support the execution of instruction sequences by a plurality of engines
US8677189B2 (en) * 2011-11-16 2014-03-18 GM Global Technology Operations LLC Recovering from stack corruption faults in embedded software systems
CN104040491B (zh) 2011-11-22 2018-06-12 英特尔公司 微处理器加速的代码优化器
IN2014CN03678A (ko) 2011-11-22 2015-09-25 Soft Machines Inc
US20130173885A1 (en) * 2011-12-30 2013-07-04 Advanced Micro Devices, Inc. Processor and Methods of Adjusting a Branch Misprediction Recovery Mode
US9053227B2 (en) * 2012-03-09 2015-06-09 Microsoft Technology Licensing, Llc Concurrent assertion
US9317285B2 (en) 2012-04-30 2016-04-19 Apple Inc. Instruction set architecture mode dependent sub-size access of register with associated status indication
US8972697B2 (en) 2012-06-02 2015-03-03 Intel Corporation Gather using index array and finite state machine
US9626333B2 (en) 2012-06-02 2017-04-18 Intel Corporation Scatter using index array and finite state machine
US9146739B2 (en) * 2012-06-14 2015-09-29 International Business Machines Corporation Branch prediction preloading
US9262170B2 (en) * 2012-07-26 2016-02-16 International Business Machines Corporation Out-of-order checkpoint reclamation in a checkpoint processing and recovery core microarchitecture
US9672044B2 (en) 2012-08-01 2017-06-06 Nxp Usa, Inc. Space efficient checkpoint facility and technique for processor with integrally indexed register mapping and free-list arrays
US9069701B2 (en) 2012-12-11 2015-06-30 International Business Machines Corporation Virtual machine failover
US9286069B2 (en) * 2012-12-21 2016-03-15 Arm Limited Dynamic write port re-arbitration
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
US9582322B2 (en) * 2013-03-15 2017-02-28 Soft Machines Inc. Method and apparatus to avoid deadlock during instruction scheduling using dynamic port remapping
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
US9627038B2 (en) 2013-03-15 2017-04-18 Intel Corporation Multiport memory cell having improved density area
WO2014151043A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for emulating a guest centralized flag architecture by using a native distributed flag architecture
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
EP2972798B1 (en) 2013-03-15 2020-06-17 Intel Corporation Method and apparatus for guest return address stack emulation supporting speculation
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
US10152327B2 (en) 2013-03-15 2018-12-11 Intel Corporation Apparatus for gating a load operation based on entries of a prediction table
WO2014151652A1 (en) * 2013-03-15 2014-09-25 Soft Machines Inc Method and apparatus to allow early dependency resolution and data forwarding in a microprocessor
US10467010B2 (en) 2013-03-15 2019-11-05 Intel Corporation Method and apparatus for nearest potential store tagging
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
CN105190541A (zh) * 2013-03-15 2015-12-23 索夫特机械公司 利用具有寄存器视图、源视图、指令视图以及多个注册模板的微处理器体系架构执行指令块的方法
WO2014151018A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for executing multithreaded instructions grouped onto blocks
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
US9223714B2 (en) 2013-03-15 2015-12-29 Intel Corporation Instruction boundary prediction for variable length instruction set
US9606935B2 (en) 2013-03-15 2017-03-28 Intel Corporation Method and apparatus for preventing non-temporal entries from polluting small structures using a transient buffer
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
US20140281116A1 (en) 2013-03-15 2014-09-18 Soft Machines, Inc. Method and Apparatus to Speed up the Load Access and Data Return Speed Path Using Early Lower Address Bits
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
US9436476B2 (en) 2013-03-15 2016-09-06 Soft Machines Inc. Method and apparatus for sorting elements in hardware structures
US9535697B2 (en) * 2013-07-01 2017-01-03 Oracle International Corporation Register window performance via lazy register fills
GB2510655B (en) 2013-07-31 2015-02-25 Imagination Tech Ltd Prioritizing instructions based on type
US20150128117A1 (en) * 2013-11-07 2015-05-07 Netronome Systems, Inc. Linker that statically allocates non-memory resources at link time
US9639369B2 (en) 2013-11-11 2017-05-02 Apple Inc. Split register file for operands of different sizes
US10235232B2 (en) 2014-02-10 2019-03-19 Via Alliance Semiconductor Co., Ltd Processor with approximate computing execution unit that includes an approximation control register having an approximation mode flag, an approximation amount, and an error threshold, where the approximation control register is writable by an instruction set instruction
US9588845B2 (en) * 2014-02-10 2017-03-07 Via Alliance Semiconductor Co., Ltd. Processor that recovers from excessive approximate computing error
CN106030518B (zh) * 2014-03-27 2019-03-26 英特尔公司 用于整理和退出存储的处理器、方法、系统和装置
CN106796506B (zh) 2014-05-12 2019-09-27 英特尔公司 用于向自修改代码提供硬件支持的方法和装置
US9870328B2 (en) * 2014-11-14 2018-01-16 Cavium, Inc. Managing buffered communication between cores
US11977891B2 (en) * 2015-09-19 2024-05-07 Microsoft Technology Licensing, Llc Implicit program order
US10678544B2 (en) 2015-09-19 2020-06-09 Microsoft Technology Licensing, Llc Initiating instruction block execution using a register access instruction
US10871967B2 (en) 2015-09-19 2020-12-22 Microsoft Technology Licensing, Llc Register read/write ordering
WO2017048647A1 (en) * 2015-09-19 2017-03-23 Microsoft Technology Licensing, Llc Implicit program order
US11681531B2 (en) 2015-09-19 2023-06-20 Microsoft Technology Licensing, Llc Generation and use of memory access instruction order encodings
US9779028B1 (en) 2016-04-01 2017-10-03 Cavium, Inc. Managing translation invalidation
JP6717026B2 (ja) * 2016-04-19 2020-07-01 オムロン株式会社 制御装置、中継装置、制御装置の制御方法、中継装置の制御方法、制御プログラム、および記録媒体
US11106467B2 (en) 2016-04-28 2021-08-31 Microsoft Technology Licensing, Llc Incremental scheduler for out-of-order block ISA processors
US10127121B2 (en) * 2016-06-03 2018-11-13 International Business Machines Corporation Operation of a multi-slice processor implementing adaptive failure state capture
CN107515866B (zh) * 2016-06-15 2021-01-29 阿里巴巴集团控股有限公司 一种数据操作方法、装置和系统
US20170371660A1 (en) * 2016-06-23 2017-12-28 Microsoft Technology Licensing, Llc Load-store queue for multiple processor cores
US10127074B2 (en) * 2017-01-27 2018-11-13 Futurewei Technologies, Inc. Transaction identification synchronization
US10545766B2 (en) 2017-04-18 2020-01-28 International Business Machines Corporation Register restoration using transactional memory register snapshots
US10963261B2 (en) 2017-04-18 2021-03-30 International Business Machines Corporation Sharing snapshots across save requests
US10740108B2 (en) 2017-04-18 2020-08-11 International Business Machines Corporation Management of store queue based on restoration operation
US10552164B2 (en) 2017-04-18 2020-02-04 International Business Machines Corporation Sharing snapshots between restoration and recovery
US10489382B2 (en) 2017-04-18 2019-11-26 International Business Machines Corporation Register restoration invalidation based on a context switch
US10649785B2 (en) 2017-04-18 2020-05-12 International Business Machines Corporation Tracking changes to memory via check and recovery
US11010192B2 (en) 2017-04-18 2021-05-18 International Business Machines Corporation Register restoration using recovery buffers
US10564977B2 (en) 2017-04-18 2020-02-18 International Business Machines Corporation Selective register allocation
US10782979B2 (en) 2017-04-18 2020-09-22 International Business Machines Corporation Restoring saved architected registers and suppressing verification of registers to be restored
US10572265B2 (en) 2017-04-18 2020-02-25 International Business Machines Corporation Selecting register restoration or register reloading
US10838733B2 (en) * 2017-04-18 2020-11-17 International Business Machines Corporation Register context restoration based on rename register recovery
US10540184B2 (en) 2017-04-18 2020-01-21 International Business Machines Corporation Coalescing store instructions for restoration
US10831626B2 (en) * 2017-10-19 2020-11-10 International Business Machines Corporation Method to sort partially good cores for specific operating system usage
US10915402B2 (en) * 2018-09-12 2021-02-09 Apple Inc. Software fault monitoring
JP7225745B2 (ja) 2018-12-06 2023-02-21 富士通株式会社 演算処理装置および演算処理装置の制御方法
US11068267B2 (en) * 2019-04-24 2021-07-20 International Business Machines Corporation High bandwidth logical register flush recovery
TWI748914B (zh) * 2021-04-15 2021-12-01 瑞昱半導體股份有限公司 阻抗控制電路

Family Cites Families (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4703481A (en) * 1985-08-16 1987-10-27 Hewlett-Packard Company Method and apparatus for fault recovery within a computing system
US4847755A (en) * 1985-10-31 1989-07-11 Mcc Development, Ltd. Parallel processing method and apparatus for increasing processing throughout by parallel processing low level instructions having natural concurrencies
US5021945A (en) * 1985-10-31 1991-06-04 Mcc Development, Ltd. Parallel processor system for processing natural concurrencies and method therefor
DE3735828C2 (de) * 1986-10-24 1994-11-10 Hitachi Ltd Verfahren zur Wiederaufnahme der Ausführung von Anweisungen nach einer Unterbrechung in einer mikroprogrammgesteuerten Datenverarbeitungsvorrichtung
US4956767A (en) * 1988-02-23 1990-09-11 Stellar Computer, Inc. Data processing system with model for status accumulating operation by simulating sequence of arithmetic steps performed by arithmetic processor
US4893233A (en) * 1988-04-18 1990-01-09 Motorola, Inc. Method and apparatus for dynamically controlling each stage of a multi-stage pipelined data unit
US4903264A (en) * 1988-04-18 1990-02-20 Motorola, Inc. Method and apparatus for handling out of order exceptions in a pipelined data unit
US5003462A (en) * 1988-05-31 1991-03-26 International Business Machines Corporation Apparatus and method for implementing precise interrupts on a pipelined processor with multiple functional units with separate address translation interrupt means
US4912707A (en) * 1988-08-23 1990-03-27 International Business Machines Corporation Checkpoint retry mechanism
EP0378415A3 (en) * 1989-01-13 1991-09-25 International Business Machines Corporation Multiple instruction dispatch mechanism
US5127093A (en) * 1989-01-17 1992-06-30 Cray Research Inc. Computer look-ahead instruction issue control
US5226126A (en) * 1989-02-24 1993-07-06 Nexgen Microsystems Processor having plurality of functional units for orderly retiring outstanding operations based upon its associated tags
US5093908A (en) * 1989-04-17 1992-03-03 International Business Machines Corporation Method and apparatus for executing instructions in a single sequential instruction stream in a main processor and a coprocessor
JPH02287858A (ja) * 1989-04-28 1990-11-27 Toshiba Corp 分散処理システムのリスタート方式
US5075844A (en) * 1989-05-24 1991-12-24 Tandem Computers Incorporated Paired instruction processor precise exception handling mechanism
US5150468A (en) * 1989-06-30 1992-09-22 Bull Hn Information Systems Inc. State controlled instruction logic management apparatus included in a pipelined processing unit
US5053987A (en) * 1989-11-02 1991-10-01 Zoran Corporation Arithmetic unit in a vector signal processor using pipelined computational blocks
US5193206A (en) * 1989-12-27 1993-03-09 Motorola, Inc. Reduce instruction set microprocessor
AU629007B2 (en) * 1989-12-29 1992-09-24 Sun Microsystems, Inc. Apparatus for accelerating store operations in a risc computer
US5251306A (en) * 1990-01-16 1993-10-05 Advanced Micro Devices, Inc. Apparatus for controlling execution of a program in a computing device
EP0441087B1 (en) * 1990-02-08 1995-08-16 International Business Machines Corporation Checkpointing mechanism for fault-tolerant systems
US5271013A (en) * 1990-05-09 1993-12-14 Unisys Corporation Fault tolerant computer system
US5261071A (en) * 1991-03-21 1993-11-09 Control Data System, Inc. Dual pipe cache memory with out-of-order issue capability
US5355457A (en) * 1991-05-21 1994-10-11 Motorola, Inc. Data processor for performing simultaneous instruction retirement and backtracking
ATE188786T1 (de) * 1991-07-08 2000-01-15 Seiko Epson Corp Risc-mikroprozessorarchitektur mit schnellem unterbrechungs- und ausnahmemodus
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
US5313647A (en) * 1991-09-20 1994-05-17 Kendall Square Research Corporation Digital data processor with improved checkpointing and forking
JP2634343B2 (ja) * 1991-10-28 1997-07-23 信越化学工業株式会社 半導体ウェーハの保持方法
US5511172A (en) * 1991-11-15 1996-04-23 Matsushita Electric Co. Ind, Ltd. Speculative execution processor
EP0636256B1 (en) * 1992-03-31 1997-06-04 Seiko Epson Corporation Superscalar risc processor instruction scheduling
US5479616A (en) * 1992-04-03 1995-12-26 Cyrix Corporation Exception handling for prefetched instruction bytes using valid bits to identify instructions that will cause an exception
DE69308548T2 (de) * 1992-05-01 1997-06-12 Seiko Epson Corp Vorrichtung und verfahren zum befehlsabschluss in einem superskalaren prozessor.
US5313634A (en) * 1992-07-28 1994-05-17 International Business Machines Corporation Computer system branch prediction of subroutine returns
DE69330889T2 (de) * 1992-12-31 2002-03-28 Seiko Epson Corp System und Verfahren zur Änderung der Namen von Registern
US5694564A (en) * 1993-01-04 1997-12-02 Motorola, Inc. Data processing system a method for performing register renaming having back-up capability
US5421022A (en) * 1993-06-17 1995-05-30 Digital Equipment Corporation Apparatus and method for speculatively executing instructions in a computer system
US5428807A (en) * 1993-06-17 1995-06-27 Digital Equipment Corporation Method and apparatus for propagating exception conditions of a computer system
US5471598A (en) * 1993-10-18 1995-11-28 Cyrix Corporation Data dependency detection and handling in a microprocessor with write buffer
US5463745A (en) * 1993-12-22 1995-10-31 Intel Corporation Methods and apparatus for determining the next instruction pointer in an out-of-order execution computer system
US5649136A (en) * 1995-02-14 1997-07-15 Hal Computer Systems, Inc. Processor structure and method for maintaining and restoring precise state at any instruction boundary

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100721074B1 (ko) * 2000-03-08 2007-05-23 소니 가부시끼 가이샤 전자 정보 콘텐츠 신호 분배 처리 시스템, 정보 신호 분배장치, 정보 처리 장치 및 전자 정보 콘텐츠 신호 분배처리 방법
US9983932B2 (en) 2010-05-27 2018-05-29 Samsung Electronics Co., Ltd. Pipeline processor and an equal model compensator method and apparatus to store the processing result
KR20190062870A (ko) * 2017-11-29 2019-06-07 연세대학교 산학협력단 실시간 시스템 정보를 이용한 고성능 컴퓨팅 시스템의 체크포인트 빈도 조절 방법 및 장치
KR20210049725A (ko) * 2020-07-20 2021-05-06 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디. 명령 실행방법, 장치, 전자기기, 컴퓨터 판독 가능 저장매체 및 컴퓨터 프로그램
US11748108B2 (en) 2020-07-20 2023-09-05 Beijing Baidu Netcom Science And Technology Co., Ltd. Instruction executing method and apparatus, electronic device, and computer-readable storage medium

Also Published As

Publication number Publication date
US5673408A (en) 1997-09-30
US5966530A (en) 1999-10-12
KR100425805B1 (ko) 2004-07-27
US5649136A (en) 1997-07-15
JP5018728B2 (ja) 2012-09-05
US5655115A (en) 1997-08-05
US5751985A (en) 1998-05-12
US5644742A (en) 1997-07-01
US5659721A (en) 1997-08-19
US5673426A (en) 1997-09-30
US5651124A (en) 1997-07-22
JP2009076083A (ja) 2009-04-09

Similar Documents

Publication Publication Date Title
KR100425805B1 (ko) 고성능투기적실행프로세서를위한구조및방법
JP4142690B2 (ja) 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法
US7478276B2 (en) Method for checkpointing instruction groups with out-of-order floating point instructions in a multi-threaded processor
US5463745A (en) Methods and apparatus for determining the next instruction pointer in an out-of-order execution computer system
EP0751458B1 (en) Method and system for tracking resource allocation within a processor
US7409589B2 (en) Method and apparatus for reducing number of cycles required to checkpoint instructions in a multi-threaded processor
US7870369B1 (en) Abort prioritization in a trace-based processor
US6247121B1 (en) Multithreading processor with thread predictor
US5961636A (en) Checkpoint table for selective instruction flushing in a speculative execution unit
US7526583B2 (en) Method and apparatus to launch write queue read data in a microprocessor recovery unit
US20160350115A1 (en) Register renaming
EP0605869A1 (en) Out of order instruction execution using load and store comparison
US5721857A (en) Method and apparatus for saving the effective address of floating point memory operations in an out-of-order microprocessor
US6973563B1 (en) Microprocessor including return prediction unit configured to determine whether a stored return address corresponds to more than one call instruction
US6457119B1 (en) Processor instruction pipeline with error detection scheme
GB2538766A (en) Register renaming
US5875325A (en) Processor having reduced branch history table size through global branch history compression and method of branch prediction utilizing compressed global branch history
US6910120B2 (en) Speculative counting of performance events with rewind counter
US7783863B1 (en) Graceful degradation in a trace-based processor

Legal Events

Date Code Title Description
N231 Notification of change of applicant
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: 20120302

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20130304

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee