KR100242403B1 - 데이타 처리 시스템의 조건 레지스터 데이타 임시 저장 방법 및 시스템 - Google Patents

데이타 처리 시스템의 조건 레지스터 데이타 임시 저장 방법 및 시스템 Download PDF

Info

Publication number
KR100242403B1
KR100242403B1 KR1019960017176A KR19960017176A KR100242403B1 KR 100242403 B1 KR100242403 B1 KR 100242403B1 KR 1019960017176 A KR1019960017176 A KR 1019960017176A KR 19960017176 A KR19960017176 A KR 19960017176A KR 100242403 B1 KR100242403 B1 KR 100242403B1
Authority
KR
South Korea
Prior art keywords
condition register
data
instruction
condition
execution
Prior art date
Application number
KR1019960017176A
Other languages
English (en)
Other versions
KR970002599A (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 KR970002599A publication Critical patent/KR970002599A/ko
Application granted granted Critical
Publication of KR100242403B1 publication Critical patent/KR100242403B1/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/30094Condition code generation, e.g. Carry, Zero flag
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Abstract

조건 레지스터 변경 인스트럭션이 실행 유닛으로 디스패치되는 것에 응답하여, 조건 레지스터 재명명 버퍼는 이 조건 레지스터 변경 인스트럭션과 연관된다. 그리고나서 인스트럭션은 실행 유닛에서 실행된다. 조건 레지스터 변경 인스트럭션 실행 이후에, 조건 레지스터 데이타는 인스트럭션 실행 결과를 반영하기 위해 조건 레지스터 재명명 버퍼내에 세트된다. 또한, 표시기는 조건 레지스터 데이타가 유효한 것임을 나타내기 위해 세트된다. 조건 레지스터 변경 인스트럭션이 완료되면, 조건 레지스터 데이타는 조건 레지스터 재명명 버퍼로 부터 아키텍처 조건 레지스터로 전송되며, 이로써 조건 레지스터가 각각의 조건 레지스터 변경 인스트럭션을 완료하는 데 사용될 수 있기 전에 조건 레지스터 변경 인스트럭션은 디스패치되고, 실행되고 그리고 종료될 수 있다.

Description

데이타 처리 시스템의 조건 레지스터 데이타 임시 저장 방법 및 시스템
제1도는 본 발명의 바람직한 실시예에 따른 수퍼스칼라 데이타 처리 시스템을 도시한 도면.
제2도는 본 발명의 방법 및 시스템에 따른 조건 레지스터 처리 유닛의 고레벨의 블럭도.
제3도는 조건 레지스터 데이타를 저장하기 위한 조건 레지스터 필드가 구비된 종래 기술의 조건 레지스터를 도시한 도면.
제4도는 본 발명의 방법 및 시스템에 따라 실행될 수 있는 추측 인스트럭션 경로의 레밸을 도시한 흐름도.
제5도는 본 발명의 방법 및 시스템에 따라 조건 레지스터 재명명 테이블의 조건 레지스터 재명명 버퍼내에 데이터를 입력하는 프로세스를 도시한 고레벨의 흐름도.
제6도는 본 발명의 방법 및 시스템에 따라 조건 레지스터 재명명 버퍼내에 조건 코드 데이터를 입력하는 프로세스를 도시한 고레벨의 흐름도.
제7도는 본 발명의 방법 및 시스템에 따라 조건 레지스터 변경 인스트럭션을 완료하는 프로세스를 도시한 고레벨의 흐름도.
제8도는 본 발명의 방법 및 시스템에 따라, 잘못 예측된 인스트럭션 경로에서 추측 실행된 인스트럭션과 연관된 조건 레지스터 재명명 버퍼를 일소하거나 혹은 무효화하는 프로세스를 도시한 고레벨의 흐름도.
제9도는 본 발명의 방법 및 시스템에 따라, 조건 레지스터 재명명 테이블에 저장된 조건 레지스터 데이타를 사용하는 프로세스를 도시한 고레벨의 흐름도.
〈도면의 주요부분에 대한 부호의 설명〉
100 : 수퍼스칼라 데이타 처리 시스템 102 : 분기 처리 유닛
104 : 로드/저장 유닛 106 : 정수 유닛
107 : 범용 레지스터 화일 108 : 부동 소수점 유닛
109 : 부동 소수점 레지스터 화일 110 : 인스트럭션 유닛
112 : 순차 인출기 114 : 인스트럭션 큐
116 : 디스패치 유닛 117 : 조건 레지스터 처리 유닛
118 : 인스트럭션 캐쉬 120 : 버스 인터페이스 유닛
126 : 데이터 캐쉬 128 : 인스트럭션 메모리 관리 유닛
130 : 데이타 메모리 관리 유닛 132 : 완료 유닛
150 : 조건 레지스터 152 : 조건 레지스터 필드
170 : 조건 레지스터 재명명 테이블 174 : 멀티플렉서 제어 유닛
176 : 조건 코드 배정 로직 178 : 조건 코드 상태 제어기
184 : 조건 레지스터 재명명 버퍼
본 발명은 개선된 데이타 처리 시스템에 관한 것으로, 특히 데이타 처리 시스템내의 조건 레지스터 데이타(condition register data)를 임시 저장하는 방법 및 시스템에 관한 것이다. 특히, 본 발명은, 데이타 처리 시스템내에서 무순서 추측 인스트럭션(out-of-order and speculative instruction)을 용이하게 처리하도록 하기 위한, 다수의 조건 레지스터 재명명 버퍼(a plurality of condition register rename buffers)를 구비한 조건 레지스터 재명명 데이블(condition register renaming table)내에 조건 레지스터 데이터를 임시 저장하는 방법 및 시스템에 관한 것이다.
데이타 처리 시스템의 성능 개선이 요구됨에 따라, 중앙처리유닛(CPU)의 설계자들은 병렬로 실행되는 다수의 독립적인 인스트럭션(multiple independent instructions)을 다수의 실행 파이프라인(multiple execution piplines)에 제공할 수 있도록 하는 수퍼스칼라 데이타 처리 시스템(superscaler data processing systems)을 구현하였다. 이러한 수퍼스칼라 데이타 처리 시스템의 일예로는, "IBM Microelectronics and Motorola Semiconductor"에 의해 "PowerPC"라는 등록상 표명으로 시판되는 수퍼스칼라 마이크로프로세서가 있다. "PowerPC" 구조는 1994년 저작권 "IBM Part No. MPR603UMU-01"이 기재된 "PowerPC 603-RISC MICROPROCESSOR USER'S MANUAL"을 비롯한 여러 사용자 메뉴얼에 보다 상세히 개시되어 있다.
수퍼스칼라 마이프로프로세서내의 인스트럭션은 인스트럭션 캐쉬(instruction cache)로부터 인출(fetch)되어, 다수의 실행 유닛중의 하나에 프로그램 순서로 디스패치(dispatch)되며, 이러한 인스트럭션은 특정 유형의 인스트럭션에 적합한 실행 유닛에 의해 실행된다. 예를 들어, 부동 소수점 인스트럭션(floating-point instructions)은 하나 이상의 부동 소수점 실행 유닛으로 디스패치되고, 고정 소수점 인스트럭션(fixed-point instructions)은 하나 이상의 정수 유닛으로 디스패치된다. 인스트럭션이 프로그램 순서로 디스패치되는 반면에, 인스트럭션은 데이터 처리 시스템의 실행 유닛 및 다른 자원의 이용가능성에 따라 무순서로(순서없이) 실행될 수 있다.
수퍼스칼라 프로세서에서, 인스트럭션은 이전에 디스패치된 다른 인스트럭션 보다 먼저 디스패치되고, 실행되고, 그리고 종료될 수 있다. 무순서 인스트럭션 실행(out-of-order and instruction execution)에 의해 데이터가 잘못된 시간에 아키텍처 레지스터(archetected register)에 적재되는 것을 막기 위해, 인스트럭션의 실행은 완료 유닛(completion units)에 의해 프로그램 순서에 따라 완료된다. 따라서, 후속 디스패치 인스트럭션은 이전의 디스패치 인스트럭션이 종료(finish)되기 전에 종료될 수는 있지만, 이전 디스패치 인스트럭션이 완료(complete)되기 전에는 완료될 수 없다.
본 기술 분야에 잘 알려진 바와 같이, "PowerPC"는 이동, 정수 및 부동 소수점 비교, 산술 연산 및 논리 연산(logical operations)과 같은 소정의 오퍼레이션의 결과를 반영하기 위해 세트(set)되거나 혹은 리셋(reset)되는 비트 필드(bit fields)를 갖는 조건 레지스터(CR)을 포함하고, 테스트 및 분기(branch) 메카니즘을 제공하다. 그러나, 조건 레지스터내의 데이타를 변경하는 이전 인스트럭션의 무선서 실행에 이어, 조건 레지스터 데이타 종속 인스트럭션(condition register data dependent instruction)(즉, 조건 레지스터내의 현재 데이타(current data)에 종속하는 인스트럭션)이 실행되면, 여러가지 문제가 발생된다.
종래의 기술에서는, 동일한 조건 레지스터를 변경하는 인스트럭션이 너무 많으면 이들 인스트럭션을 동일한 사이클로 디스패치할 수 없기 때문에, 조건 레지스터 변경 인스트럭션(condition register modifying instruction)의 디스패치가 지연될 수 있다.
다수의 조건 레지스터 변경 인스트럭션을 하나의 사이클로 디스패치하는 문제와 더불어, 조건 레지스터의 데이타에 종속하는 분기 인스트럭션(예를 들어, 조건부 분기 인스트럭션)도 지연될 수 있는데, 그 이유는 조건 레지스터 변경 인스트럭션의 디스패치에 있어서의 지연 때문이다. 이러한 조건부 분기 인스트럭션의 결정(resolution)이 지연되면, 프로세싱이 더욱 지연될 수 있는데, 그 이유는 조건부 분기 인스트럭션이 결정되고 나서 인스트럭션 메모리로부터 새로운 경로내의 인스트럭션을 인출하는데 필요한 시간 때문이다.
무순서 실행과 더불어, 수퍼스칼라 데이타 처리 시스템은 조건부 분기가 결정되지 않으면 조건부 분기 이후의 인스트럭션을 추측적으로(speculatively) 실행할 수 있다. 이와 같은 추측 실행은, 조건부 분기가 추측적으로 결정되어 인스트럭션을 수행하였는데 이것이 나중에 잘못된 인스트럭션 경로인 것으로 판정된 때, 여러 문제를 야기할 수 있다. 조건부 분기를 잘못 예측하면, 레지스터는 조건부 분기를 잘못 예측하기 전의 상태로 복원(restore)되어야 한다. 예를 들어, 조건 코드 레지스터는, 잘못 예측된 분기로 조건 레지스터 변경 인스트럭션이 실행되기 전의 상태로 복원되어야 한다.
전술한 설명을 참조하면, 본 기술 분야에 통상의 지식을 가진자라면, 다수의 조건 레지스터 변경 인스트럭션을 동일한 사이클로 디스패치하고, 조건 레지스터 데이타 종속 인스트럭션을 조기에 결정하고, 조건 레지스터 변경 인스트럭션의 잘못 추측 실행으로 인해 발생하는 조건 레지스터 데이타를 효율적으로 제거하는 방법 및 시스템이 요구됨을 명확하게 이해할 것이다.
따라서, 본 발명의 목적은 개선된 데이타 처리 시스템을 제공하는데 있다.
본 발명의 다른 목적은 데이타 처리 시스템내의 조건 레지스터 데이타를 임시 저장하는 방법 및 시스템을 제공하는데 있다.
본 발명의 또다른 목적은 다수의 조건 레지스터 재명명 버퍼를 구비한 조건 레지스터 재명명 테이블에 조건 레지스터 데이터를 임시 저장하여, 데이타 처리 시스템내의 무순서 추측 인스트럭션을 용이하게 처리하도록 하는 방법 및 시스템을 제공하는 데 있다.
전술한 목적들은 이하 개시된 바와 같은 방안에 의해 달성된다. 조건 레지스터 변경 인스트럭션이 실행 유닛으로 디스패칭되는 것에 응답하여, 조건 레지스터 재명명 버퍼는 그러한 조건 레지스터 변경 인스트럭션과 연관된다. 다음에, 그 인스트럭션은 그 실행 유닛에서 실행된다. 조건 레지스터 변경 인스트럭션의 실행 이후에, 조건 레지스터 데이타는 이 인스트럭션 실행의 결과를 반영하기 위해 조건 레지스터 재명명 버퍼내에 세트된다. 또한, 조건 레지스터 데이타가 유효하다는 것을 표시하는 표시기(indicator)가 세트된다. 조건 레지스터 변경 인스트럭션이 완료되면, 조건 레지스터 데이타는 조건 레지스터 재명명 버퍼로부터 아키텍처 조건 레지스터로 전송되며, 이로써 조건 레지스터 변경 인스트럭션은, 조건 레지스터가 각각의 조건 레지스터 변경 인스트럭션을 완료하는데 이용가능하게 되기 전에 디스패치, 실행 및 종료될 수 있다.
본 발명의 상기 목적 뿐만 아니라 다른 목적 및 특징과 장점들은 이하 개시된 설명을 참조하면 명확해질 것이다.
본 발명의 신규한 특징은 첨부된 특허청구범위로부터 개시된다. 그러나, 본 발명은 바람직한 실시예, 다른 목적 및 장점들은 첨부된 도면과 함께 이하의 예시적인 실시예의 상세한 설명을 참조하면 명확하게 이해될 것이다.
제 1 도를 참조하면, 본 발명의 방법 및 시스템에 따른 수퍼스칼라 데이타 처리 시스템이 도시되어 있다. 수퍼스칼라 프로세서는 다수의 독립 인스트럭션을 다수의 실행 파이프라인으로 제공하여, 다수의 인스트럭션이 병렬로 실행되도록 한다. 제 1 도에 도시된 바와 같이, 수퍼스칼라 데이타 처리 시스템(100)은 적어도 5개의 독립적인 실행 유닛 및 2개의 레지스터 화일을 포함한다. 독립적인 실행 유닛은 분기 처리 유닛(branch processing unit: BPU)(102), 로드/저장 유닛(104) 및 정수 유닛(106) 및 부동 소수점 유닛(108)를 포함할 수 있다. 수퍼스칼라 데이타 처리 시스템의 레지스터 화일은 정수 오퍼랜드(integer poerands)용 범용 레지스터 화일(general purpose register file: GPR)(107)과 단정도 또는 배정도 부동 소수점 오퍼랜드(single or double precision floating-point operands)용 부동 소수점 레지스터 화일(floating-point register file: FPR)(109)을 포함한다. 또한, GPR(107) 및 FPR(109)은 제각기 한 세트의 재명명 레지스터를 포함할 수 있다. 재명명 레지스터는 인스트럭션 결과가 완료 유닛에 의해 아키텍쳐 레지스터에 저장되기 전에 그 인스트럭션 결과를 저장하는 데 사용된다.
인스트럭션 유닛(110)은 순차 인출기(sequential fetcher)(112), 인스트럭션 큐(instruction queue)(114), 디스패치 유닛(116), 조건 레지스터 처리 유닛(117) 및 분기 처리 유닛(102)을 포함한다. 인스트럭션 유닛(110)은 순차 인출기(112) 및 분기 처리 유닛(102)으로부터 제공되는 정보를 기초하여 인스트럭션 캐쉬(instruction cache)(118)로부터 인출될 후속 인스트럭션의 어드레스를 결정한다.
순차 인출기(112)는 인스트럭션 캐쉬(118)로 부터 인스트럭션을 인출하고, 인출된 인스트럭션을 인스트럭션 큐(114)로 적재한다. 분기 인스트럭션은 순차 인출기(112)에 의해 식별되고, 인스트럭션 큐(114)를 바이패싱하여 분기 처리 유닛(102)으로 직접 제공된다. 분기 인스트럭션은 분기가 무조건적이거나 또는 요구된 조건이 이용가능한 경우이거나, 혹은 분기가 예측되는 경우에 실행 및 결정된다. 분기가 예측되면, 그 예측 이후의 인스트럭션은 추측적으로 실행되는 인스트럭션(speculaticely executed instructions)으로 일컬어진다.
비분기 인스트럭션(nonbranch instructions)은 실행 유닛의 비지 상태(busy status)에 따른 디스패치 율과, 재명명 및 완료 버퍼의 가용도와, 소정 인스트럭션의 직렬 특성(serializing behavior)에 따라, 인스트럭션 큐(114)로부터 발행된다. 인스트럭션 디스패치(instruction dispatch)는 프로그램 순서로 수행된다. BPU(102)는 미결정 조건부 분기 상에서 정적 분기 예측을 사용하여, 조건부 분기가 평가되는 동안 인스트럭션 유닛(110)이 예측된 타겟 인스트럭션 스트림으로부터 인스트럭션을 인출할 수 있게 해준다. 분기 처리 유닛(102)은 실행 파이프라인에서 실행중인 인스트럭션에 영향을 받지 않는 무조건 분기 또는 조건부 분기에 대한 분기 인스트럭션을 폴드 아웃(fold out)시킨다.
인스트럭션 큐(114)는 순차 인출기(112)에 의해 로드된 여러 인스트럭션을 보관한다. 순차 인출기(112)는 인스트럭션 큐(114)의 이용가능한 공간을 채우기 위해 인스트럭션을 연속적으로 로드한다. 인스트럭션은 디스패치 유닛(116)로 부터 제각기의 실행 유닛으로 디스패치된다. 조건이 허용되면, 전형적으로, 디스패치 유닛(116)는 사이클당 하나를 초과하는 인스트럭션을 디스패치하도록 설계된다. 동작시, 인스트럭션은 인스트럭션 캐쉬(118)로부터 인출되어, 인스트럭션 큐(114) 또는 분기 처리 유닛(102)에 배치된다. 인스트럭션 큐(114)에 입력되는 인스트럭션은 인스트럭션 큐(114)로부터 여러 실행 유닛으로 제공된다. 인스트럭션 큐(114)는 수퍼스칼라 데이타 처리 시스템(100)의 마스터 파이프라인의 핵심적인 큐이며, 예를 들어 6개의 엔트리 큐를 포함할 수 있다. 인스트럭션 큐(114)를 채우는 동안, 순차 인출기(112)로 부터의 요구가 인스트럭션 캐쉬(118)내에서 미스(miss)이면, 메모리 액세스에 대한 중재(arbitration)가 개시될 것이다.
데이타 캐쉬(126)는 로드/저장 유닛(104)용 캐쉬 메모리를 제공한다. 인스트럭션 메모리 관리 유닛(128) 및 데이타 메모리 관리 유닛(130)는 제각기 인스트럭션 및 데이타용 가상 메모리 및 물리 메모리에 대한 액세스를 제공한다. 메모리 관리 유닛(128, 130)은 어드레스를 변환하고, 캐쉬 "히트(hit)" 또는 "미스(miss)"가 발생되는지를 판정한다. 버스 인터페이스 유닛(120)은 버스 중재에 참여하여, 외부 어드레스 버스(122) 및 외부 데이타 버스(124)로의 액세스를 제어한다.
완료 유닛(132)은 디스패치에서 실행까지의 인스트러션을 추적한 다음, 이 인스트럭션을 프로그램 순서로 종료(retire) 또는 완료하는 메카니즘을 제공한다. 인스트럭션의 완료는 인스트럭션 실해 결과를 아키텍처 레지스터로 저장하는 것을 의미한다. 수퍼스칼라 데이타 프로세서가 잘못 예측된 분기 혹은, 임의의 다른 예외 또는 인터럽트로부터 복원되어야 할 경우, 순서적 완료(in-order completion)는 정확한 아키텍처 상태를 보장할 수 있다.
제 2 도를 참조하면, 본 발명의 방법 및 시스템에 따른 조건 레지스터 처리 유닛의 고레벨 블럭도가 도시되어 있다. 제 2 도에 도시된 바와 같이, 조건 레지스터 처리 유닛(117)은 다수의 조건 레지스터 필드(152)가 구비된 조건 레지스터(150)를 포함한다. 이 실시예에서, 조건 레지스터(150)는 제 3 도에 더욱 상세히 도시된 8개의 조건 레지스터 필드(152)를 포함한다. 본 발명의 실시예에 따르면, 각각의 조건 레지스터 필드(152)는 4비트를 포함하며, 이들 비트는 오퍼레이션의 결과가 네거티브(negative)일 때 세트되는 네거티브 비트(154)와, 오퍼레이션의 결과가 포지티브(positive)이고 0이 아닐 때 세트되는 포지티브 비트(156)와, 오퍼레이션의 결과가 0일 때 세트되는 제로 비트(158)와, XER 전용 레지스터내의 요약 오버플로우 비트(summary overflow bit)에 따라 세트되는 요약 오버플로우 비트(160)이다.
다시 제 2 도를 참조하면, 조건 레지스터 처리 유닛(117)은 조건 레지스터 재명명 테이블(170)을 포함한다. 조건 레지스터 재명명 테이블(170)은 멀티플렉스(172)를 거쳐 조건 레지스터(150)와 접속된다. 멀티플렉서(172)는 멀티플렉서 제어기(174)에 의해 제어되며, 이 멀티플렉서 제어기(174)는 조건 재명명 테이블(170)과 또한 접속된다.
조건 재명명 테이블(170)의 정보 저장은 조건 코드 배정 로직(condition code assignment logic)(176) 및 조건 코드 상태 제어기(178)에 의해 부분적으로 제어된다. 조건 레지스터 처리 유닛(117)에 도시된 조건 레지스터 재명명 테이블(170)내의 정보는 디스패치 유닛(116) 및 실행 유닛(182)에 의해 제어되고 이용된다. 실행 유닛(182)은 제 1 도에 도시된 바와 같이, 분기 처리 유닛(102), 정수 유닛(106) 및 부동 소수점 실행 유닛(108)과 같은 실행 유닛을 나타낸다.
조건 레지스터 재명명 테이블(170)은 조건 레지스터 재명명 버퍼(184)로 구성된다. 제 2 도를 참조하면, 4개의 조건 레지스터 재명명 버퍼(184)는 조건 레지스터 재명명 테이블(170)내에 도시되어 있다. 각각의 조건 레지스터 재명명 버퍼(184)는 인스트럭션 ID 필드(186), 종착지 필드(destination field)(188), 조건 레지스터 데이타 필드(190), 현재 비트(192), 사용 비트(194), 종료 비트(196), Ca 비트(198), Cb 비트(200), Ua 비트(202) 및 Ub 비트(204)가 구비된 다수의 필드를 포함한다.
제 2 도에 도시된 실시예에서, 인스트럭션 ID 필드(186)는 인스트럭션 식별자를 저장하기 위해 4개의 필드를 가지며, 인스트럭션 식별자는 데이타 처리 시스템내에서 실행하는 모든 다른 인스트럭션에 관해 연관된 인스트럭션만을 식별한다. 인스트럭션이 디스패치 유닛(116)에 의해 디스패치되면, 인스트럭션 ID가 그 인스트럭션에 배정된다. 인스트럭션 ID는 디스패치로 부터 실행까지 인스트럭션을 추적하는데 사용되고, 인스트럭션을 프로그램 순서로 완료하는데 사용된다.
제 2 도의 실시예에서 종착지 필드(188)는 인스트럭션 ID 필드(186)에 저장된 인스트럭션 ID에 의해 식별되는 조건 레지스터 변경 인스트럭션에 의해 영향을 받게 될 조건 레지스터 필드들(152)중 하나를 식별하는 3-비트 데이타 워드를 저장하는 데 사용된다.
조건 레지스터 데이타 필드(190)는 제 2 도에 4비트 데이타 워드로서 도시되어 있으며, 인스트럭션 ID 필드(186)내에 저장된 인스트럭션에 의해 식별되는 조건 레지스터 변경 인스트럭션의 결과를 반영하는 조건 레지스터 데이타를 저장한다. 이하 개시된 실시예에서, 조건 레지스터 데이타는 제 3 도에 도시된 4개의 데이타 비트 즉, 네거티브 비트(154), 포지티브 비트(156), 제로 비트(158) 및 요약 오버플로우 비트(160)를 포함한다.
현재 비트(C 비트)(192)는 인스트럭션 ID 필드(186)의 인스트럭션 ID에 의해 식별되는 인스트럭션이 가장 최근에 디스패치된 인스트럭션임을 나타내는데 사용되는 단일 비트 데이타이며, 이 가장 최근에 디스패치된 인스트럭션은 종착지 필드(188)내의 종착지 데이타(destination data)에 의해 식별된 조건 레지스터 필드(150)의 조건 코드를 변경한다. 예를 들어, 동일한 조건 레지스터 필드(150)를 변경하는 2개의 조건 레지스터 변경 인스트럭션이 조건 레지스터 재명명 테이블(170)내의 2개의 조건 레지스터 재명명 버퍼(184)에 배정되었으면, 최종 디스패치된 조건 레지스터 변경 인스트럭션과 연관된 조건 레지스터 재명명 버퍼만이 세트된 현재 비트(192)를 가질 것이다.
사용 비트(194)는 조건 레지스터 재명명 버퍼가 아직 완료되지 않은 디스패치된 조건 레지스터 변경 인스트럭션에 배정되었음을 나타내기 위해 세트된다. 즉, 조건 레지스터 재명명 버퍼는 현재 일부 실행 단계에 있는 인스트럭션에 대해 현재 사용되고 있다.
종료 비트(finish bit)(196)는 결과적인 조건 레지스터 데이타가 조건 레지스터 데이타 필드(190)로 로드되었음을 나타내는데 사용된다. 종료 비트(196)가 세트되었으면, 조건 레지스터 데이타 필드(190)의 조건 레지스터 데이타는 조건 레지스터 데이타 종속 인스트럭션을 실행하여 데이타 종속성(data dependency)을 결정하는 실행 유닛에 의해 사용될 수 있다. 조건 레지스터 데이타 종속 인스트럭션은 이전의 실행 인스트럭션으로부터의 유효 조건 레지스터 데이타에 종속하는 인스트럭션이다.
조건 레지스터 재명명 버퍼(184)의 Ca 비트(198) 및 Cb 비트(200)는 C 비트(192)와 유사한 방식으로 사용된다. C 비트(192)와 마찬가지로, Ca 비트(198) 및 Cb 비트(200)는, 연관된 조건 레지스터 변경 인스트럭션이 종착지 필드(188)내의 데이타에 의해 지정된 조건 레지스터 필드를 변경시키는 가장 최근에 디스패치된 인스트럭션임을 나타낸다. 그러나, Ca 비트(198)는 연관된 인스트럭션이 추측 분기 인스트럭션에 이어서 디스패치될 때 세트되고, Cb 비트(200)는 최초 분기 이후의 인스트럭션이 완료되지 않았을 경우, 다른 추측 분기 이후에 디스패치된 인스트럭션에 대해 세트된다.
예를 들어, 제 4 도를 참조하면, 인스트럭션 경로(210)는 추측 분기-a(212)에 접근한다. 데이타 처리 시스템이 인스트럭션 경로(214)를 따르기로 추측 판정하면, 분기-a의 인스트럭션이 실행될 것이다. 분기-a(214)의 인스트럭션이 추측 실행된 것으로 판정되면, 경로(210)의 소정의 인스트럭션에 대한 C 비트(192)는 각각의 조건 레지스터 재명명 버퍼(184)의 Ca 비트(198)로 제각기 복사된다. 이 단계는 분기-a(214)내의 추측 인스트럭션이 실행되기 전에 C 비트(192)의 복사 혹은 기록을보존한다. 제 1 추측 분기-a(214)에서 분기-a(214)의 인스트럭션이 완료되기 전에 제 2 추측 분기-b(222)의 인스트럭션이 추측 실행될 것으로 판정되면, 분기-a(214)의 인스트럭션에 대한 C 비트(192)는 각각의 조건 레지스터 재명명 버퍼(184)내의 Cb 비트(200)로 복사된다. 이것은 분기-b(222)의 인스트럭션이 수행되기 전에 C-비트(192)의 복사 혹은 기록을 보존한다.
추측 분기-a(212)가 결정되고, 분기-a(214)의 인스트럭션이 잘못 실행된 것으로 판정되면, Ca 비트(198)가 세트되어 있는 조건 레지스터 재명명 버퍼(184)는 Ca 비트(198)를 다시 C 비트(192)로 복사되도록 하여, 조건 레지스터 재명명 테이블(170)이 즉각적으로 이전 분기a(212) 상태로 복원되도록 한다. 이때, 분기-b(제 2 분기)가 선택되어지면, 분기-b(222)의 인스트럭션에 대해 사용되는 조건 레지스터 재명명 버퍼(184)는 무효화(invalidate)될 것이다. 경로(210)의 모든 인스트럭션과 연관된 조건 레지스터 재명명 버퍼(184)가 완료되면, 분기-b(222)의 추측 분기에 응답하여, 분기-b(222)의 인스트럭션과 연관된 조건 레지스터 재명명 버퍼(184)내의 C 비트(192)를 기록하는데 사용되도록 Ca 비트(198)는 프리(free)상태가 됨에 유의하여야 한다.
유사한 방식으로, 추측 실행이 분기-a(214) 또는 분기-b(222)의 추측 인스트럭션 경로에서 개시되는 사이클 동안, Ua 비트(202) 및 Ub(204)는 현재의 U 비트(194)를 모두 저장하는데 사용된다. 나중에 분기-a 또는 분기-b가 잘못 실행된 것으로 판정되면, Ua 비트(202) 또는 Ub(204)로 부터의 비트는 U 비트(194)로 다시 복사된다. 이로 인해, 테이블은 소정의 인스트럭션이 추측 실행되기 전의 상태로 다시 회귀된다. 또한, 인스트럭션이 비추측 경로(non-speculative path)에서 완료되었으면, 이 인스트럭션과 연관된 조건 레지스터 재명명 버퍼(184)는 복원되지 않는데, 그 이유는 완료시 Ua 비트(202) 또는 Ub(204)내에 리셋된 "0"은 U 비트(194)로 다시 복사될 것이고, U 비트(194)의 "0"은 조건 레지스터 재명명 버퍼(184)가 사용가능함을 나타내기 때문이다.
제 5 도를 참조하면, 본 발명의 방법 및 시스템에 따라 데이타를 조건 레지스터 재명명 테이블의 조건 레지스터 재명명 버퍼내에 입력하는 프로세스를 도시한 고레벨의 흐름도가 도시되어 있다. 제 5 도에 도시된 바와 같이, 프로세스는 블럭(300)에서 개시한 후에 블럭(302)으로 진행한다. 수퍼스칼라 데이타 처리 시스템(100)(제 1 도를 참조)내의 인스트럭션이 디스패치되면, 블럭(302)에 도시된 바와 같이, 디스패치 유닛(116)는 인스트럭션 ID(IID)를 각 디스패치된 인스트럭션에 배정한다. 그후, 블럭(304)에 도시된 바와 같이, 프로세스는 디스패치된 인스트럭션이 조건 레지스터 변경 인스트럭션(CR 변경 인스트럭션으로 칭함)인지의 여부를 판정한다. 디스패치된 인스트럭션이 CR 변경 인스트럭션이 아니면, 블럭(306)에 도시된 바와 같이, 프로세스는 디스패치된 인스트럭션이 추측 실행될지의 여부를 판정한다. 인스트럭션이 추측 실행되지 않으면, 블럭(306)으로 부터 부정 분기로 나타난 바와 같이 프로세스는 블럭(302)로 진행한다. 인스트럭션이 추측 실행되면, 블럭(308)에 도시된 바와 같이, 프로세스는 모든 현재의 U 비트(194)(즉, 아직 완료되지 않은 인스트럭션과 현재 연관되는 조건 레지스터 재명명 버퍼의 모든 U 비트)를 Ua 비트(202)(제 2 도를 참조)로 저장한다. 그후, 블럭(302)에 도시된 바와 같이, 프로세스는 다른 인스트럭션을 디스패치한다.
다시, 블럭(304)을 참조하면, 디스패치된 인스트럭션이 CR 변경 인스트럭션이면, 블럭(310)에 도시된 바와 같이, 프로세스는 현재의 버퍼 포인터(current buffer pointer)를 사용하여, 선택된 조건 레지스터 재명명 버퍼가 디스패치된 인스트럭션으로 배정되도록 한다. 현재의 버퍼 포인터는 조건 코드 배정 로직에 저장될 수 있다(제 2 도를 참조). 본 명세서에 개시된 실시예에서, 현재의 버퍼 포인터는 차후 이용가능한 조건 레지스터 재명명 버퍼를 가리킨다. 또한, 조건 코드 배정 로직(176)은 이용가능한 조건 레지스터 재명명 버퍼의 수에 관한 정보를 디스패치 유닛(116)에 특정 사이클로 제공하여, 단일 사이클로 디스패치될 수 있는 CR 변경 인스트럭션의 갯수가 디스패치 유닛(116)에 의해 판정될 수 있도록 한다.
그후, 프로세스는 디스패치된 인스트럭션의 인스트럭션 ID 및 조건 레지스터(CR)의 종착지 데이타를 제각기 인스트럭션 ID 필드(186) 및 종착지 필드(188)에 저장한다(제 2 도를 참조). 또한, 프로세스는 블럭(312)에 도시된 바와 같이, U 비트(194) 및 현재 비트(192)를 세트한다. U 비트(194)는 조건 레지스터 재명명 버퍼가 아직 "완료"되지 않은 조건 레지스터 변경 인스트럭션과 현재 연관되고 있음을 나타낸다. C 비트(192)는 이와 연관된 조건 레지스터 변경 인스트럭션이 특정 조건 레지스터 필드(150)를 변경하는 최종 CR 변경 인스트럭션임을 나타낸다. 마지막으로, 프로세스는 조건 레지스터 데이타 필드(190)의 데이타가 아직 유효하지 않으며, 이와 연관된 CR 변경 인스트럭션의 "종료" 결과를 반영할 수 없는 것임을 나타내기 위해 종료 비트(F 비트)(196)를 리셋한다.
그후, 블럭(314)에 도시된 바와 같이, 프로세스는 디스패치된 인스트럭션이 추측 실행되는지의 여부를 판정한다. 인스트럭션이 추측 실행되지 않으면, 블럭(316)에 도시된 바와 같이, 프로세스는 동일한 조건 레지스터 필드를 변경하는 하나를 초과하는 CR 변경 인스트럭션이 조건 레지스터 재명명 테이블(170)내에 2개의 상이한 조건 레지스터 재명명 버퍼(184)에 배정되었는지의 여부를 판정한다. 동일한 조건 레지스터 필드를 변경하는 하나를 초과하는 CR 변경 인스트럭션이 상이한 조건 레지스터 재명명 버퍼에 배정되면, 블럭(318)에 도시된 바와 같이, 프로세스는 구(older) 인스트럭션 ID를 갖는 조건 레지스터 재명명 버퍼의 C 비트(192)(제 2 도를 참조)를 클리어(clear)시킨다. 그후, 블럭(320)에 도시된 바와 같이, 프로세스는 신(newer) 인스트럭션 ID를 갖는 새로이 디스패치된 조건 레지스터 재명명 버퍼의 C 비트(192)를 세트시킨다. 그러면, 프로세스는 데이타를 단일 비추측 인스트럭셔의 디스패치 결과로서, 조건 레지스터 재명명 테이블(170)내에 입력한다. 하나를 초과하는 인스트럭션이 단일 사이클(즉, 한번에)에 디스패치되면, 마치 데이타는 인스트럭션이 한번에 하나씩(one at a time) 디스패치되고, 제 5 도와 연관하여 개시된 프로세스가 수행된 것처럼, 테이블에 입력된다. 데이타가 조건 레지스터 재명명 테이블(170)에 입력되면, 프로세스는 블럭(302)으로 복귀하여, 후속 인스트럭션을 디스패치한다.
블럭(316)을 참조하면, 조건 레지스터 재명명 테이블(170)의 동일한 조건 레지스터 필드를 변경하는 하나를 초과하는 CR 변경 인스트럭션이 단지 하나만 존재하면, 블럭(316)으로 부터 부정 분기로 도시된 바와 같이, 프로세스는 블럭(302)로 복귀하여 후속 인스트럭션을 디스패치한다.
블럭(314)을 다시 참조하면, 인스트럭션이 추측 실행되면, 프로세스는 구 CR 변경 인스트럭션과 연관된 버퍼의 모든 U 비트를 각각의 Ua 비트 장소(202)에 저장하고, 프로세스는 U 비트(194)를 새로이 디스패치된 인스트럭셔에 대한 버퍼에 세트시킨다. 그러면, 프로세스는 데이타를 테이블에 입력하면서 제 4 도의 분기-a(214)와 같은 추측으로 예상된 분기가 올바른 인스트럭션 분기일 것으로 추정한다. 올바른 인스트럭션 분기가 아닌 것으로 판정되면, Ua 비트(202)로 이전에 복사된 U 비트(194)는 제 4 도의 추측 분기-a(212)와 같은 추측 분기가 결정되는 경우에 복원될 것이다.
그후, 블럭(324)에 도시된 바와 같이, 프로세스는 동일한 조건레지스터 필드를 변경하는 하나를 초과하는 CR 변경 인스트럭션이 조건 재명명 테이블(170)내의 2개의 상이한 조건 레지스터 재명명 버퍼와 연관되었는지의 여부를 판정한다. 특정 조건 레지스터 필드를 변경하는 하나의 CR 변경 인스트럭션만이 테이블(170)의 버퍼와 연관되면, 프로세스는 블럭(324)으로 부터 부정 분기를 거쳐 블럭(302)로 복귀하여, 다른 인스트럭션을 디스패치한다. 그러나, 하나를 초과하는 CR 변경 인스트럭션이 동일한 조건 레지스터 필드(150)를 변경하면, 블럭(326)에 도시된 바와 같이, 프로세스는 구 인스트럭션 ID를 포함하는 버퍼와 연관된 C 비트(192)를 클리어시킨다. 그후, 블럭(328)에 도시된 바와 같이, 프로세스는 구 인스트럭션과 연관된 Ca 비트(198)를 세트시킨다. 그러면, 블럭(320)에 도시된 바와 같이, 프로세스는 C 비트(192)를 신 인스트럭션 ID를 포함하는 버퍼에 세트시킨다. 이에 의해, 추측 실행된 인스트럭션이 디스패치될 때 CR 재명명 테이블 엔트리 절차가 완료된다.
제 6 도를 참조하면, 본 발명의 방법 및 시스템에 따라 조건 코드 데이타를 조건 레지스터 재명명 버퍼에 입력하는 프로세스를 도시하는 고레벨의 흐름도가 도시되어 있다. 제 6 도에 도시된 바와 같이, 프로세스는 블럭(340)에서 개시되어 블럭(342)으로 진행한다. 블럭(342)에서, 프로세스는 CR 변경 인스트럭션의 실행이 CR 변경 인스트럭션을 실행하는 실행 유닛들중 하나의 실행 유닛에서 종료되었는지의 여부를 판정한다. CR 변경 인스트럭션이 종료되지 않았으면, 블럭(342)로부터 부정 분기로 도시된 바와 같이, 프로세스는 새로운 조건 코드 데이타를 계속 대기한다. CR 변경 인스트럭션의 실행이 종료되었으면, 프로세스는 CR 변경 인스트럭션을 종료한 실행 유닛으로 부터 수신된 조건 코드 비트를 저장한다. 제 2 도에 도시된 바와 같이, 조건 코드 비트는 조건 레지스터 데이타 필드(190)에 저장될 수 있다. 제 3 도를 참조하여 전술한 바와 같이, 이러한 조건 코드 비트 또는 조건 레지스터 데이타는 CR 변경 인스트럭션 실행 결과를 반영한다.
그후, 블럭(346)에 도시된 바와 같이, 프로세스는 종료 비트(F 비트)(196)(제 2 도를 참조)를 세트하여, 조건 레지스터 데이타 필드(190)의 조건 레지스터 데이타가 유효하고, 추측 분기 또는 다른 실행 유닛의 다른 조건 레지스터 데이타 종속 인스트럭션을 결정할 수 있음을 나타낸다. 이에 의해, 조건 레지스터 재명명 테이블(170)내의 조건 레지스터 데이터를 저장하는 프로세스가 완료된다.
제 7 도를 참조하면, 본 발명의 방법 및 시스템에 따라 조건 레지스터 변경 인스트럭션을 완료하는 프로세스를 도시한 고레벨의 흐름도가 도시되어 있다. 제 7 도에 도시된 바와 같이, 프로세스는 블럭(350)에서 개시되어 블럭(352)으로 진행한다. 블럭(352)에 도시된 바와 같이, 프로세스는 CR 변경 인스트럭션이 완료에 대해 스케쥴링(scheduling)되는지의 여부를 판정한다. CR 변경 인스트럭션이 완료에 대해 스케쥴링되지 않으면, 프로세스는 블럭(352)으로부터 부정 분기로 도시된 바와 같이 대기한다. CR 변경 인스트럭션이 완료에 대해 스케쥴링되면, 블럭(354)에 도시된 바와 같이, 프로세스는 동일한 조건 레지스터 필드를 변경하는 하나를 초과하는 CR 변경 인스트럭션이 동일한 사이클에 완료되도록 스케쥴링되는지의 여부를 판정한다.
조건 레지스터 필드를 변경하는 하나를 초과하는 인스트럭션이 완료에 대해 스케쥴링되면, 블럭(356)에 도시된 바와 같이, 프로세스는 세트된 C 비트(192)를 갖는 조건 레지스터 재명명 버퍼로 부터 조건 코드 데이타를 선택한다. 이 단계에서, 프로세스는 조건 레지스터 재명명 테이블(170)에 표시된 특정 조건 레지스터 필드의 가장 최근의 조건 레지스터 데이타를 선택한다. 그후, 블럭(358)에 도시된 바와 같이, 프로세스는 선택된 조건 코드 데이타를 종착지 필드(188)내의 데이타에 의해 지정된 조건 레지스터(150)내의 필드(152)에 저장한다. 이 단계 동안, 조건 레지스터 재명명 버퍼(184)로 부터의 조건 레지스터 데이타는 조건 레지스터(150)의 지정 필드(152)로 전송된다.
블럭(354)을 다시 참조하면, 동일한 조건 레지스터 필드(152)를 변경하는 하나를 초과하는 인스트럭션이 동일 사이클에 완료되도록 스케쥴링되지 않으면, 블럭(360)에 도시된 바와 같이, 프로세스는 조건 레지스터 데이타 필드(190)로 부터 조건 코드 데이타를 종착지 필드(188)내의 데이타에 의해 지정된 조건 레지스터 필드(152)에 저장하거나 혹은 전송한다. 이러한 조건 레지스터 데이타의 전송은 멀티플렉서(172)를 제어하는 신호를 발생하여 조건 레지스터 데이타가 지정된 조건 레지스터 필드(152)로 라우팅(route)되도록 하는 MUX 제어기(174)(제 2 도를 참조)를 사용함으로써 달성될 수 있다.
마지막으로, 블럭(362)에 도시된 바와 같이, 프로세스는 조건 레지스터 데이타를 조건 레지스터 필드(152)로 전송한 각 조건 레지스터 재명명 버퍼(184)의 U 비트(194), C 비트(192) 및 F 비트(196)를 리셋한다. 그후, 프로세스는 블럭(352)으로 복귀하여, 부가적인 CR 변경 인스트럭션의 완료에 대한 스케쥴링을 대기한다.
제 8 도를 참조하면, 본 발명의 방법 및 시스템에 따라 잘못 예측된 인스트럭션 경로에서 추측 실행된 인스트럭션과 연관된 조건 레지스터 재명명 버퍼를 일소(purge)하거나 혹은 무효화하는 프로세스를 도시한 고레벨의 흐름도가 도시되어 있다. 제 8 도에 도시된 바와 같이, 프로세스는 블럭(370)에서 개시하여 블럭(372)으로 진행한다. 그후, 블럭(372)에서 프로세스는 추측 실행 경로가 결정되었는지의 여부를 판정한다. 추측 실행 경로가 결정되지 않았으면, 프로세스는 블럭(372)으로 부터 부정 분기로 도시된 바와 같이 대기한다. 추측 실행 경로가 결정되면, 블럭(374)에 도시된 바와 같이 프로세스는 실행 경로가 올바른 경로인지의 여부를 판정한다. 올바른 인스트럭션 경로가 실행되면, 블럭(374)으로 부터 긍정 분기로 도시된 바와 같이, 프로세스는 블럭(372)으로 복귀하여 후속 추측 실행 경로가 결정되기를 기다린다.
추측 실행 경로가 올바르게 실행되지 않으면, 블럭(376)에 도시된 바와 같이, 프로세스는 이와 연관된 CR 변경 인스트럭션이 잘못 예측된 추측 실행 경로 동안에 디스패치되었음을 나타내도록 U 비트(194) 또는 Ua 비트(202) 또는 Ub(204)를 갖는 모든 조건 레지스터 재명명 버퍼를 검출, 일소 또는 무효화한다. 본 명세서에 개시된 실시예에서, Ca 비트(189), Cb 비트(200), Ua 비트(202) 및 Ub 비트(204)는 제 4 도에 도시된 바와 같이, 2개의 잘못 예측된 인스트럭션 분기에 대한 복원을 지원한다. 예를 들어 분기-a가 잘못 예측되었으면, 프로세스는 세트된 Ua 비트(202)를 갖지 않는 모든 조건 레지스터 버퍼를 클리어시키는데, 그 이유는 다른 조건 레지스터 재명명 버퍼 모두가 잘못 예측된 인스트럭션 분기-a 동안 디스패치된 인스트럭션과 연관되기 때문이다. 유사하게, 분기-b가 잘못 예측되었으면, 잘못 예측된 분기-b 동안에 디스패치된 조건 레지스터 변경 인스트럭션과 연관된 조건 레지스터 재명명 버퍼는 클리어될 것이다. 분기-a 및 분기-b 모두 잘못 예측되면, 조건 레지스터 재명명 테이블은 분기-a 또는 분기-b의 인스트럭션이 디스패치되기 전의 상태로 복원된다.
마지막으로, 제 9 도를 참조하면, 본 발명의 방법 및 시스템에 따른 조건 레지스터 재명명 테이블내에 저장된 조건 레지스터 데이타를 사용하는 프로세스를 예시한 고레벨의 흐름도가 도시되어 있다. 제 9 도에 도시된 바와 같이, 프로세스는 블럭(390)에서 개시되어 블럭(392)으로 진행한다. 블럭(392)에서 프로세스는 조건 레지스터 재명명 버퍼(184)내에 저장된 조건 레지스터 데이타에 종속하는 인스트럭션이 실행되는지의 여부를 판정한다. 이러한 인스트럭션은 "조건 레지스터 데이타 종속 인스트럭션"으로 일컬어질 수 있다. 조건 레지스터 데이타 종속 인스트럭션이 실행되지 않으면, 프로세스는 블럭(392)로 부터 부정 분기로 도시된 바와 같이 대기한다.
조건 레지스터 데이타 종속 인스트럭션이 실행중이면, 블럭(394)에 도시된 바와 같이, CR 처리 유닛(117)(제 1 도를 참조)은 조건 레지스터 재명명 테이블의 종착지 데이타와 특정 인스트럭션 실행 유닛으로 부터 원하는 조건 레지스터 데이타에 관한 요구에 대한 응답 사이의 매칭을 탐색한다. 그후, 블럭(396)에 도시된 바와 같이, 프로세스는 조건 재명명 테이블(170)의 종착지 필드(188)내에서 바람직한 종착지 데이타가 검출되는지를 판정한다. 테이블내에서 원하는 종착지 데이타가 검출되지 않으면, 블럭(396)으로 부터 부정 분기로 도시된 바와 같이 프로세스는 CR 재명명 테이블(170)을 계속해서 탐색한다. 적절한 종착지 데이타가 매칭되면, 블럭(398)에 도시된 바와 같이, 프로세스는, 조건 레지스터 데이타가 지정된 조건 레지스터 필드에 대해 가장 최근의 데이타임을 나타내는 C 비트(192)가 버퍼내에서 세트되는지의 여부를 판정한다. C 비트(192)가 세트되어 있지 않으면, 즉 특정 종착지에 대한 조건 레지스터 데이타가 가장 최근의 데이타가 아닌 것으로 나타나면, 블럭(398)으로 부터 부정 분기로 도시된 바와 같이, 프로세스는 조건 레지스터 재명명 테이블(170)을 계속해서 탐색한다.
조건 레지스터 데이타가 지정된 종착지 필드에 대해 가장 최근의 데이타인 것으로 C 비트가 나타내면, 블럭(400)에 도시된 바와 같이, 프로세스는, 조건 레지스터 필드(190)의 데이타가 "종료된" CR 변경 인스트럭션의 결과를 반영한다는 점에서 유효함을 나타내는 F 비트(196)가 세트되는지의 여부를 판정한다. F 비트(196)가 조건 레지스터 데이타가 유효하지 않은 것으로 나타내면, 블럭(402)에 도시된 바와 같이, 조건 레지스터 재명명 테이블(170)은 유효 조건 코드 비트를 요구하는 실행 유닛으로 제공하지 못한다. 그러나, F 비트(196)가 조건 코드 데이타가 유효한 것으로 나타내면, 블럭(404)에 도시된 바와 같이, 조건 레지스터 재명명 테이블(170)은 유효 조건부 데이타를 요구하는 실행 유닛으로 제공한다. 이러한 조건 코드 데이타는 분기 처리 유닛(102)(제 1 도를 참조)과 같은 실행 유닛으로 제공되어 조건부 분기 인스트럭션이 결정(resolve)되도록 하거나, 혹은 일부 다른 실행 유닛으로 제공되어 조건 레지스터 데이타 종속 인스트럭션이 종료되도록 할 수 있다.
전술한 본 발명의 바람직한 실시예는 예시 목적으로 제공되었지만, 본 발명을 개시된 형태로만 사용되거나 혹은 한정하고자 의도된 것은 아니며, 전술한 바와 같이 여러가지로 변형 또는 변경될 수도 있음을 이해하여야 한다. 본 실시예는 본 발명의 원리 및 실제 응용을 최적의 예로 제공하기 위해 선택되고 기술된 것으로, 본 발명은 본 기술 분야에 통상의 지식을 가진 자에 의해 여러가지 실시예로 사용가능하고, 특정 사용 분야에 적합하게 여러가지로 변경될 수 있다. 이러한 다양한 변경 및 변형은 첨부된 특허청구범위에 의해 정의된 본 발명의 영역내에서 이루어진다.

Claims (10)

  1. 복수의 조건 레지스터 변경 인스트럭션의 실행에 응답하여 수퍼스칼라 데이터 처리 시스템내에 조건 레지스터 데이터를 임시적으로 저장하는 방법(a method of temporarily buffering)으로서, 상기 데이터 처리 시스템은, 조건 레지스터 데이터를 저장하는 조건 레지스터와 복수의 조건 레지스터 재명명 버퍼 - 여기서, 상기 조건 레지스터 재명명 버퍼 각각은 인스트럭션 ID 필드와 조건 레지스터 데이터 필드와 현재 비트 필드를 포함함 - 를 구비한 조건 레지스터 재명명 테이블을 포함하는 조건 레지스터 처리 유닛과, 상기 조건 레지스터 처리 유닛에 접속된 복수의 실행 유닛과, 상기 조건 레지스터 처리 유닛에 접속된 분기 처리 유닛과, 상기 조건 레지스터 처리 유닛에 접속되어 인스트럭션 ID를 각각의 조건 레지스터 변경 인스트럭션과 연관시키고 상기 복수의 조건 레지스터 변경 인스트럭션을 상기 복수의 실행 유닛에 동시에 디스패칭하는 인스트럭션 디스패쳐를 포함하는, 상기 조건 레지스터 데이타를 임시 저장하는 방법에 있어서, 상기 복수의 조건 레지스터 변경 인스트럭션을 상기 복수의 실행 유닛으로 동시에 디스패칭하는 것에 응답하여, 조건 레지스터 재명명 버퍼(a condition register rename buffer)를 상기 복수의 조건 레지스터 변경 인스트럭션 각각과 연관시키고, 각각의 조건 레지스터 변경 인스트럭션과 연관된 상기 인스트럭션 ID를 상기 연관된 조건 레지스터 재명명 버퍼의 상기 인스트럭션 ID 필드내에 저장하는 단계와, 상기 복수의 조건 레지스터 변경 인스트럭션 각각을 상기 복수의 실행 유닛 내에서 실행하는 단계와, 상기 복수의 조건 레지스터 변경 인스트럭션 각각의 실행에 응답하여, 상기 실행된 조건 레지스터 변경 인스트럭션의 결과를 반영하도록, 상기 연관된 조건 레지스터 재명명 버퍼내에 조건 레지스터 데이터를 세트하고, 상기 연관된 조건 레지스터 재명명 버퍼의 상기 현재 비트 필드내의 현재 비트를 세트하며, 상기 연관된 조건 레지스터 재명명 버퍼내의 상기 조건 레지스터 데이터가 유효함을 표시하는 단계와, 상기 복수의 조건 레지스터 변경 인스트럭션의 완료에 응답하여, 상기 분기 처리 유닛에 의한 사용을 위해, 상기 현재 비트 필드의 상태 및 상기 인스트럭션 ID 필드에 기초하여, 상기 조건 레지스터 재명명 버퍼 중의 선택된 하나의 버퍼로 부터의 상기 조건 레지스터 데이터를 상기 조건 레지스터로 전송하는 단계를 포함하는 수퍼스칼라 데이터 처리 시스템에서의 조건 레지스터 데이터 임시 저장 방법.
  2. 제1항에 있어서, 상기 조건 레지스터 재명명 테이블은 상기 복수의 조건 레지스터 필드 중 하나를 지정하는 종착지 데이터를 저장하는 종착지 필드를 포함하고, 상기 조건 레지스터 재명명 버퍼를 상기 복수의 조건 레지스터 변경 인스트럭션 각각과 연관시키는 상기 단계는 상기 연관된 조건 레지스터 재명명 버퍼의 상기 종착지 필드내에 상기 종착지 데이터를 저장하는 단계를 포함하는 수퍼스칼라 데이터 처리 시스템에서의 조건 레지스터 데이터 임시 저장 방법.
  3. 제1항에 있어서, 상기 조건 레지스터 데이터를 상기 조건 레지스터 재명명 버퍼들 중에 선택된 하나로부터 상기 조건 레지스터로 전송하는 상기 단계는, 상기 조건 레지스터 데이터를 상기 조건 레지스터 재명명 버퍼들 중 상기 선택된 하나로부터 상기 조건 레지스터 재명명 버퍼들 중의 상기 선택된 하나의 상기 종착지 필드내의 상기 종착지 데이터에 의해 지정된 상기 조건 레지스터내의 상기 복수의 필드들 중 하나로 전송하는 단계를 포함하는 수퍼스칼라 데이터 처리 시스템에서의 조건 레지스터 데이터 임시 저장 방법.
  4. 제1항에 있어서, 상기 조건 레지스터 재명명 테이블은 종료 비트(a finish bit)를 포함하고, 상기 조건 레지스터 데이터가 유효함을 표시하는 상기 단계는 상기 종료 비트를 세트하는 단계를 포함하는 수퍼스칼라 데이터 처리 시스템에서의 조건 레지스터 데이터 임시 저장 방법.
  5. 제1항에 있어서, 상기 복수의 실행 유닛내에서 상기 복수의 조건 레지스터 변경 인스트럭션을 실행하는 상기 단계는 부동 소수점 실행 유닛내에서 부동 소수점 가산 인스트럭션을 실행하는 단계를 포함하는 수퍼스칼라 데이타 처리 시스템의 조건 레지스터 데이타 임시 저장 방법.
  6. 제1항에 있어서, 상기 복수의 실행 유닛내에서 상기 복수의 조건 레지스터 변경 인스트럭션을 실행하는 상기 단계는 고정 소수점 실행 유닛내에서 정수 승산 인스트럭션을 실행하는 단계를 포함하는 수퍼스칼라 데이타 처리 시스템의 조건 레지스터 데이타 임시 저장 방법.
  7. 제1항에 있어서, 조건 레지스터 변경 인스트럭션의 실행 결과를 반영하는 선택된 조건 레지스터 재명명 버퍼내의 상기 조건 레지스터 데이터에 종속성을 갖는 조건 레지스터 데이터 종속 인스트럭션의 실행에 응답하여, 상기 조건 레지스터 변경 인스트럭션의 실행 결과를 반영하는 조건 레지스터 데이터를 위해 상기 조건 레지스터 재명명 테이블을 탐색하는 단계와, 상기 조건 레지스터 데이터가 상기 특정 조건 레지스터 재명명 버퍼내에 위치하는 경우, 상기 특정 조건 레지스터 재명명 버퍼내에 저장된 상기 조건 레지스터 데이터를 이용하여 상기 종속성을 결정하고 상기 조건 레지스터 데이터 종속 인스트럭션의 실행을 종료하는 단계를 더 포함하는 수퍼스칼라 데이터 처리 시스템에서의 조건 레지스터 데이터 임시 저장 방법.
  8. 제1항에 있어서, 상기 조건 레지스터 재명명 버퍼 각각은 상기 연관된 조건 레지스터 변경 인스트럭션이 추측적으로(speculatively) 실행됨을 표시하는 추측 실행 비트를 포함하고, 상기 조건 레지스터 데이터가 잘못 예측된 인스트럭션 경로내의 추측 실행된 인스트럭션의 실행 결과를 반영하고 있음을 표시하는 상기 추측 실행 비트를 구비한 상기 조건 레지스터 재명명 버퍼내의 상기 조건 레지스터 데이터를 무효화시키는 단계를 더 포함하는 수퍼스칼라 데이타 처리 시스템에서의 조건 레지스터 데이타 임시 저장 방법.
  9. 제7항에 있어서, 상기 조건 레지스터 재명명 버퍼 각각은, 상기 조건 레지스터 재명명 버퍼가 유효한 버퍼임을 표시하는 사용 비트(a used bit)를 포함하고, 상기 조건 레지스터 데이터가 잘못 예측된 인스트럭션 경로내의 추측 실행된 인스트럭션의 실행 결과를 반영하고 있음을 표시하는 상기 추측 실행 비트를 구비한 상기 조건 레지스터 재명명 버퍼내의 상기 조건 레지스터 데이터를 무효화시키는 상기 단계는, 상기 조건 레지스터 재명명 버퍼내의 상기 사용 비트를 세트하여, 상기 조건 레지스터 데이터가 잘못 예측된 인스트럭션 경로내의 추측 실행된 인스트럭션의 실행 결과를 반연하고 있음을 표시하도록 하는 단계를 포함하는 수퍼스칼라 데이타 처리 시스템에서의 조건 레지스터 데이타 임시 저장 방법.
  10. 복수의 조건 레지스터 변경 인스트럭션의 실행에 응답하여 수퍼스칼라 데이터 처리 시스템내에 조건 레지스터 데이터를 임시적으로 저장하는 시스템으로서, 상기 데이터 처리 시스템은, 조건 레지스터 데이터를 저장하는 조건 레지스터와 복수의 조건 레지스터 재명명 버퍼 - 여기서, 상기 조건 레지스터 재명명 버퍼 각각은 인스트럭션 ID 필드와 조건 레지스터 데이터 필드와 현재 비트 필드를 포함함 - 를 구비한 조건 레지스터 재명명 테이블을 포함하는 조건 레지스터 처리 유닛과, 상기 조건 레지스터 처리 유닛에 접속된 복수의 실행 유닛과, 상기 조건 레지스터 처리 유닛에 접속된 분기 처리 유닛과, 상기 조건 레지스터 처리 유닛에 접속되어 인스트럭션 ID를 각각의 조건 레지스터 변경 인스트럭션과 연관시키고 상기 복수의 조건 레지스터 변경 인스트럭션을 상기 복수의 실행 유닛에 동시에 디스패칭하는 인스트럭션 디스패쳐를 포함하는, 상기 조건 레지스터 데이타를 임시 저장하는 시스템에 있어서, 상기 복수의 조건 레지스터 변경 인스트럭션을 상기 복수의 실행 유닛으로 동시에 디스패칭하는 것에 응답하여, 조건 레지스터 재명명 버퍼(a condition register rename buffer)를 상기 복수의 조건 레지스터 변경 인스트럭션 각각과 연관시키고, 각각의 조건 레지스터 변경 인스트럭션과 연관된 상기 인스트럭션 ID를 상기 연관된 조건 레지스터 재명명 버퍼의 상기 인스트럭션 ID 필드내에 저장하는 수단과, 상기 복수의 조건 레지스터 변경 인스트럭션 각각을 상기 복수의 실행 유닛 내에서 실행하는 수단과, 상기 복수의 조건 레지스터 변경 인스트럭션 각각의 실행에 응답하여, 상기 실행된 조건 레지스터 변경 인스트럭션의 결과를 반영하도록, 상기 연관된 조건 레지스터 재명명 버퍼내에 조건 레지스터 데이터를 세트하는 수단과, 상기 연관된 조건 레지스터 재명명 버퍼의 상기 현재 비트 필드내의 현재 비트를 세트하는 수단과, 상기 연관된 조건 레지스터 재명명 버퍼내의 상기 조건 레지스터 데이터가 유효함을 표시하는 수단과, 상기 복수의 조건 레지스터 변경 인스트럭션의 완료에 응답하여, 상기 분기 처리 유닛에 의한 사용을 위해, 상기 현재 비트 필드의 상태 및 상기 인스트럭션 ID 필드에 기초하여, 상기 조건 레지스터 재명명 버퍼 중의 선택된 하나의 버퍼로 부터의 상기 조건 레지스터 데이터를 상기 조건 레지스터로 전송하는 수단을 포함하는 수퍼스칼라 데이터 처리 시스템에서의 조건 레지스터 데이터 임시 저장 시스템.
KR1019960017176A 1995-06-07 1996-05-21 데이타 처리 시스템의 조건 레지스터 데이타 임시 저장 방법 및 시스템 KR100242403B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US8/480,999 1995-06-07
US08/480,999 US5974240A (en) 1995-06-07 1995-06-07 Method and system for buffering condition code data in a data processing system having out-of-order and speculative instruction execution
US08/480,999 1995-06-07

Publications (2)

Publication Number Publication Date
KR970002599A KR970002599A (ko) 1997-01-28
KR100242403B1 true KR100242403B1 (ko) 2000-08-01

Family

ID=23910180

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019960017176A KR100242403B1 (ko) 1995-06-07 1996-05-21 데이타 처리 시스템의 조건 레지스터 데이타 임시 저장 방법 및 시스템

Country Status (3)

Country Link
US (1) US5974240A (ko)
JP (1) JP3154660B2 (ko)
KR (1) KR100242403B1 (ko)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6356918B1 (en) * 1995-07-26 2002-03-12 International Business Machines Corporation Method and system for managing registers in a data processing system supports out-of-order and speculative instruction execution
US6061785A (en) * 1998-02-17 2000-05-09 International Business Machines Corporation Data processing system having an apparatus for out-of-order register operations and method therefor
US6085337A (en) * 1998-09-21 2000-07-04 Infineon Technologies North America Corp. Method and system for reliably indicating test results during a self-check operation
US6449713B1 (en) * 1998-11-18 2002-09-10 Compaq Information Technologies Group, L.P. Implementation of a conditional move instruction in an out-of-order processor
JP3830683B2 (ja) * 1998-12-28 2006-10-04 富士通株式会社 Vliwプロセッサ
GB2352536A (en) * 1999-07-21 2001-01-31 Element 14 Ltd Conditional instruction execution
GB2352308B (en) * 1999-07-21 2004-06-30 Element 14 Ltd Accessing a test condition
KR100319517B1 (ko) * 1999-07-22 2002-01-05 이승남 원심분리기
JP2001092657A (ja) * 1999-09-22 2001-04-06 Toshiba Corp 中央演算装置、コンパイル方法、及びコンパイルプログラムを記録した記録媒体
US6484251B1 (en) * 1999-10-14 2002-11-19 International Business Machines Corporation Updating condition status register based on instruction specific modification information in set/clear pair upon instruction commit in out-of-order processor
US6959377B2 (en) * 2002-03-20 2005-10-25 Sun Microsystems, Inc. Method and system for managing registers
JP3816845B2 (ja) * 2002-07-05 2006-08-30 富士通株式会社 プロセッサ及び命令制御方法
JP3854200B2 (ja) 2002-07-05 2006-12-06 富士通株式会社 プロセッサ及び命令制御方法
US7406587B1 (en) * 2002-07-31 2008-07-29 Silicon Graphics, Inc. Method and system for renaming registers in a microprocessor
US7299343B2 (en) * 2002-09-27 2007-11-20 Verisilicon Holdings (Cayman Islands) Co. Ltd. System and method for cooperative execution of multiple branching instructions in a processor
US7698539B1 (en) * 2003-07-16 2010-04-13 Banning John P System and method of instruction modification
FR2867872A1 (fr) * 2004-03-18 2005-09-23 St Microelectronics Sa Dispositif et procede de gestion d'un etat d'attente d'un microprocesseur
FR2867873A1 (fr) * 2004-03-18 2005-09-23 St Microelectronics Sa Dispositif et procede de gestion d'un etat d'attente d'un microprocesseur
US20080077777A1 (en) * 2006-09-25 2008-03-27 Arm Limited Register renaming for instructions having unresolved condition codes
CN101794214B (zh) 2009-02-04 2013-11-20 世意法(北京)半导体研发有限责任公司 使用多块物理寄存器映射表的寄存器重命名系统及其方法
US9329870B2 (en) * 2013-02-13 2016-05-03 International Business Machines Corporation Extensible execution unit interface architecture with multiple decode logic and multiple execution units

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5371862A (en) * 1991-02-27 1994-12-06 Kabushiki Kaisha Toshiba Program execution control system

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5134561A (en) * 1987-07-20 1992-07-28 International Business Machines Corporation Computer system with logic for writing instruction identifying data into array control lists for precise post-branch recoveries
US4901233A (en) * 1987-07-20 1990-02-13 International Business Machines Corporation Computer system with logic for writing instruction identifying data into array control lists for precise post-branch recoveries
US5261071A (en) * 1991-03-21 1993-11-09 Control Data System, Inc. Dual pipe cache memory with out-of-order issue capability
US5313634A (en) * 1992-07-28 1994-05-17 International Business Machines Corporation Computer system branch prediction of subroutine returns
US5481683A (en) * 1992-10-30 1996-01-02 International Business Machines Corporation Super scalar computer architecture using remand and recycled general purpose register to manage out-of-order execution of instructions
KR0122528B1 (ko) * 1993-01-08 1997-11-20 윌리엄 티.엘리스 슈퍼스칼라 프로세서 시스템에서 중간 기억 버퍼의 할당을 인덱스하기 위한 방법 및 시스템
TW242673B (ko) * 1993-08-18 1995-03-11 Ibm
US5500943A (en) * 1993-11-02 1996-03-19 Motorola, Inc. Data processor with rename buffer and FIFO buffer for in-order instruction completion
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
US5452426A (en) * 1994-01-04 1995-09-19 Intel Corporation Coordinating speculative and committed state register source data and immediate source data in a processor
US5524263A (en) * 1994-02-25 1996-06-04 Intel Corporation Method and apparatus for partial and full stall handling in allocation
US5564056A (en) * 1994-03-01 1996-10-08 Intel Corporation Method and apparatus for zero extension and bit shifting to preserve register parameters in a microprocessor utilizing register renaming
US5517657A (en) * 1994-03-30 1996-05-14 Intel Corporation Segment register file read and write pipeline
DE69506623T2 (de) * 1994-06-03 1999-07-22 Motorola, Inc., Schaumburg, Ill. Datenprozessor mit einer Ausführungseinheit zur Durchführung von Ladebefehlen und Verfahren zu seinem Betrieb
US5535346A (en) * 1994-07-05 1996-07-09 Motorola, Inc. Data processor with future file with parallel update and method of operation

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5371862A (en) * 1991-02-27 1994-12-06 Kabushiki Kaisha Toshiba Program execution control system

Also Published As

Publication number Publication date
JPH096611A (ja) 1997-01-10
KR970002599A (ko) 1997-01-28
US5974240A (en) 1999-10-26
JP3154660B2 (ja) 2001-04-09

Similar Documents

Publication Publication Date Title
KR100242403B1 (ko) 데이타 처리 시스템의 조건 레지스터 데이타 임시 저장 방법 및 시스템
US6356918B1 (en) Method and system for managing registers in a data processing system supports out-of-order and speculative instruction execution
KR100225244B1 (ko) 프로세서내에서 자원 할당을 추적하는 방법 및 장치,수퍼스칼라프로세서및데이타프로세싱시스템
US5887161A (en) Issuing instructions in a processor supporting out-of-order execution
US6098167A (en) Apparatus and method for fast unified interrupt recovery and branch recovery in processors supporting out-of-order execution
US6553480B1 (en) System and method for managing the execution of instruction groups having multiple executable instructions
KR100234648B1 (ko) 프로세서내 인스트럭션 실행 방법 및 시스템과 데이타 처리 시스템
US7711929B2 (en) Method and system for tracking instruction dependency in an out-of-order processor
KR100270003B1 (ko) 향상된 분기 예측 기법을 사용하는 프로세서 및그 실행 방법
US6880073B2 (en) Speculative execution of instructions and processes before completion of preceding barrier operations
US5797025A (en) Processor architecture supporting speculative, out of order execution of instructions including multiple speculative branching
EP0605872B1 (en) Method and system for supporting speculative execution of instructions
US5913048A (en) Dispatching instructions in a processor supporting out-of-order execution
EP1145110B1 (en) Circuit and method for tagging and invalidating speculatively executed instructions
US5257354A (en) System for monitoring and undoing execution of instructions beyond a serialization point upon occurrence of in-correct results
US7660971B2 (en) Method and system for dependency tracking and flush recovery for an out-of-order microprocessor
US20070234011A1 (en) Method and system for on-demand scratch register renaming
JP3142813B2 (ja) レジスタの名前変更を管理するための情報処理システムおよび方法
US5764970A (en) Method and apparatus for supporting speculative branch and link/branch on count instructions
US6134645A (en) Instruction completion logic distributed among execution units for improving completion efficiency
US5841999A (en) Information handling system having a register remap structure using a content addressable table
US5784606A (en) Method and system in a superscalar data processing system for the efficient handling of exceptions
EP1050805B1 (en) Transfer of guard values in a computer system
EP1150203A2 (en) System and method for handling register dependency in a stack-based pipelined processor
JPH10283178A (ja) 命令を発行するための方法及びシステム

Legal Events

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