KR100305487B1 - 특정유형의인스트럭션을동시에처리할수있는방법및데이터프로세싱시스템 - Google Patents

특정유형의인스트럭션을동시에처리할수있는방법및데이터프로세싱시스템 Download PDF

Info

Publication number
KR100305487B1
KR100305487B1 KR1019980014099A KR19980014099A KR100305487B1 KR 100305487 B1 KR100305487 B1 KR 100305487B1 KR 1019980014099 A KR1019980014099 A KR 1019980014099A KR 19980014099 A KR19980014099 A KR 19980014099A KR 100305487 B1 KR100305487 B1 KR 100305487B1
Authority
KR
South Korea
Prior art keywords
instruction
register
instructions
processing system
entry
Prior art date
Application number
KR1019980014099A
Other languages
English (en)
Other versions
KR19980086627A (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 KR19980086627A publication Critical patent/KR19980086627A/ko
Application granted granted Critical
Publication of KR100305487B1 publication Critical patent/KR100305487B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/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/30098Register arrangements
    • G06F9/30101Special purpose 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, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/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, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units

Abstract

데이터 프로세싱 시스템에서 특정 유형의 다수의 인스트럭션을 동시에 처리할 수 있는 방법 및 시스템이 개시된다. 이 데이터 프로세싱 시스템은 단일 클럭 사이클내에 처리될 다수의 인스트럭션, 다수의 논리적 레지스터 명칭, 다수의 물리적 레지스터를 포함한다. 다수의 인스트럭션은 특정 유형의 다수의 인스트럭션을 포함한다. 다수의 인스트럭션의 각각은 논리적 레지스터 명칭중의 하나 및 물리적 레지스터중의 하나와 연관된다. 다수의 엔트리 필드를 포함하는 어레이가 설정된다. 다수의 인스트럭션의 각각은 엔트리 필드의 각각의 하나와 연관된다. 다수의 인스트럭션중 제 1 및 제 2 인스트럭션을 처리하기 바로 전에, 다수의 인스트럭션중 제 1 및 제 2 인스트럭션에 대한 물리적 레지스터의 상태 표시를 포함하는 엔트리가 생성된다. 다수의 인스트럭션중 제 1 및 제 2 인스트럭션에 대해, 인스트럭션과 연관된 엔트리 필드에 엔트리가 저장된다.

Description

특정 유형의 인스트럭션을 동시에 처리할 수 있는 방법 및 데이터 프로세싱 시스템{METHOD AND SYSTEM IN A DATA PROCESSING SYSTEM OF PERMITTING CONCURRENT PROCESSING OF INSTRUCTIONS OF A PARTICULAR TYPE}
본 발명은 수퍼스칼라 데이터 프로세싱 시스템에 관한 것으로, 특히 특정 유형의 인스트럭션을 동시에 처리할 수 있는 수퍼스칼라 데이터 프로세싱 시스템에 관한 것이다. 보다 상세하게는 본 발명은, 단일 클럭 사이클 동안 다수의 물리적 레지스터의 다수의 상태가 저장되는 어레이를 설정함으로써 특정 유형의 다수의 인스트럭션을 동시에 처리할 수 있도록 하는 것에 관한 것이다.
수퍼스칼라 데이터 프로세싱 시스템은 클럭 사이클 당 다수의 인스트럭션을 실행할 수 있는 마이크로프로세서 아키텍처를 포함하는 데이터 프로세싱 시스템이다. 클럭 사이클 당 다수의 인스트럭션을 실행하기 위해서는, 동시에 실행될 수 있는 다수의 독립적인 기능 유닛(function unit)이 요구된다.
한 인스트럭션을 인출하고 디코딩하는 것과 다른 하나의 인스트럭션을 실행하는 것을 중첩(overlap)시키는 것을 파이프라이닝(pipelining)이라 한다. 파이프라이닝된 수퍼스칼라 데이터 프로세싱 시스템에서는, 단일 사이클내에 다수의 인스트럭션이 인출되고 디코딩되며 실행될 경우의 의존성(dependencies)을 방지하기 위해 주의를 기울여야 한다.
데이터 의존성의 형태는 세가지가 있다. 기록 후 판독(read after write)의 위험은 인스트럭션이 근원지(source)에 기록하기 전에 후속 인스트럭션이 근원지를 판독하려고 하는 경우에 발생한다. 판독 후 기록(write after read)의 위험은 인스트럭션이 목적지(destination)를 판독하기 전에 후속 인스트럭션이 목적지에 기록하려고 하는 경우에 발생한다. 기록 후 기록(write after write)의 위험은 인스트럭션이 목적지에 기록하기 전에 후속 인스트럭션이 목적지에 기록하려고 하는 경우에 발생한다.
의존성의 문제점을 해결하는 하나의 해결책은 인스트럭션과 연관된 논리적 레지스터를 재명명(rename)하는 것이다. 논리적 레지스터를 재명명함으로써, 해당 사이클내에 각각의 인스트럭션이 동시에, 그리고 올바르게 실행될 수 있다. 그러나, 인스트럭션이 조건 분기 인스트럭션인 경우에 문제가 발생한다. 레지스터 재명명은 순서와 상관없이(out-of-order) 인스트럭션을 실행하는 프로세서에서 이러한 의존성을 다루는 메카니즘이다. 각각의 인스트럭션과 연관된 타겟 레지스터는 고유한 물리적인 레지스터로 재명명된다. 이에 따라, 인스트럭션은 적절히 동시에, 그리고 순서와 상관없이 실행될 수 있다.
조건 분기 인스트럭션은 조건 분기 및 이것이 이루어지기 위해 충족되어야 하는 조건을 지정하는 인스트럭션이다. 각각의 조건 분기에 대해, 인스트럭션의 실행을 더욱 빠르게 하기 위해, 분기가 이루어지는 조건이 발생할 지에 관해 예측(prediction)을 하게 된다. 이러한 예측은 각각의 조건 분기의 실행을 완료하기 이전에, 조건 분기가 디코딩되는 사이클 동안 행해진다. 조건 분기가 올바르지 않게 예측된 경우, 조건 분기에 의해 영향을 받은 모든 레지스터의 상태는 조건 분기를 만나기 바로 전에 존재했던 상태로 복원되어야 한다. 인스트럭션의 실행 완료(completion)시에, 조건 분기가 올바르게 예측된 경우, 저장된 레지스터 값은 버려진다.
따라서 수퍼스칼라 데이터 프로세싱 시스템에서 특정 유형의 다수의 인스트럭션을 단일 클럭 사이클내에 동시에 처리할 수 있는 방법 및 시스템이 필요하게 된다.
따라서 본 발명의 목적은 향상된 수퍼스칼라 데이터 프로세싱 시스템을 제공하는 것이다.
본 발명의 다른 목적은 수퍼스칼라 데이터 프로세싱 시스템에서 특정 유형의 인스트럭션을 동시에 처리할 수 있는 방법 및 시스템을 제공하는 것이다.
본 발명의 또다른 목적은 단일 클럭 사이클 동안 다수의 물리적 레지스터의 다수의 상태가 저장되는 어레이를 설정함으로써, 특정 유형의 다수의 인스트럭션을 동시에 처리할 수 있도록 하는 방법 및 시스템을 제공하는 것이다.
전술한 목적은 이하 기술되는 바와 같이 성취된다. 데이터 프로세싱 시스템에서 특정 유형의 다수의 인스트럭션을 동시에 처리할 수 있도록 하는 방법 및 시스템이 개시된다. 수퍼스칼라 데이터 프로세싱 시스템은 단일 클럭 사이클내에 처리될 다수의 인스트럭션, 다수의 논리적 레지스터 명칭, 다수의 물리적 레지스터를 포함한다. 다수의 인스트럭션은 특정 유형의 다수의 인스트럭션을 포함한다. 다수의 인스트럭션의 각각은 논리적 레지스터 명칭중의 하나 및 물리적 레지스터중의 하나와 연관된다. 다수의 엔트리 필드를 포함하는 어레이가 설정된다. 다수의 인스트럭션의 각각은 엔트리 필드의 각각의 하나와 연관된다. 다수의 인스트럭션중 제 1 및 제 2 인스트럭션을 처리하기 바로 전에, 다수의 인스트럭션중 제 1 및 제 2 인스트럭션에 대한 물리적 레지스터의 상태 표시를 포함하는 엔트리가 생성된다. 다수의 인스트럭션중 제 1 및 제 2 인스트럭션에 대해, 인스트럭션과 연관된 엔트리 필드에 엔트리가 저장된다.
상기한 내용 및 본 실시예의 부가적인 목적, 특성 및 장점은 이후의 상세하는 설명으로부터 명백해질 것이다.
도 1은 예시적인 실시예의 방법 및 시스템을 구현하는데 사용될 수 있는 수퍼스칼라 데이터 프로세싱 시스템(10)의 고수준 블록도.
도 2a 내지 2d는 예시적인 실시예의 방법 및 시스템에 따른 수퍼스칼라 데이터 프로세싱 시스템(10)내에 포함된 조건 레지스터 재명명 어레이를 도시하는 도면.
도 3은 예시적인 실시예의 방법 및 시스템에 따른 수퍼스칼라 데이터 프로세싱 시스템(10)내에 포함된 스냅샷 어레이를 도시하는 도면.
도 4는 예시적인 실시예의 방법 및 시스템에 따른 수퍼스칼라 데이터 프로세싱 시스템(10)내에 포함된 물리적 레지스터의 상태를 생성하는 로직 다이어그램.
도 5는 예시적인 실시예의 방법 및 시스템에 따른 수퍼스칼라 데이터 프로세싱 시스템(10)내에 포함된 도 2의 조건 레지스터 재명명 어레이에 물리적 레지스터의 상태를 저장하고 복원하는 회로를 도시하는 도면.
도 6a 내지 도 6d는 예시적인 실시예의 방법 및 시스템에 따라 특정 유형의다수의 인스트럭션을 동시에 처리할 수 있도록 하기 위해 스냅샷 어레이를 설정하고 이 스냅샷 어레이에 다수의 물리적 레지스터의 상태를 저장하는 것을 도시하는 고수준 흐름도.
도면의 주요 부분에 대한 부호의 설명
10 : 프로세서 11 : 시스템 버퍼
12 : 버스 인터페이스 유닛 14 : 인스트럭션 캐쉬
16 : 데이터 캐쉬 18 : 시퀀서 유닛
20 : 분기 유닛 21 : 분기 타겟 어드레스 캐쉬
22, 24 : 고정 소수점 유닛 26 : 복합 고정 소수점 유닛
28 : 로드/저장 유닛 30 : 부동 소수점 유닛
32 : 범용 아키텍처 레지스터 34 : 고정 소수점 재명명 버퍼
35 : 특수 목적 레지스터 36 : 부동점 아키텍처 레지스터
37 : 캐리 비트 레지스터 38 : 부동점 재명명 버퍼
39 : 시스템 메모리
본 발명의 예시적인 실시예 및 그의 장점은 도 1 내지 도 6d를 참조하므로써 가장 잘 이해될 것이며, 도면중의 유사하거나 대응하는 부분을 나타내는 데에는 유사한 참조 부호를 사용한다.
도 1은 바람직한 실시예에 따라 정보를 처리하는 프로세서(10) 시스템의 블록도이다. 바람직한 실시예에서, 프로세서(10)는 단일 집적 회로 수퍼스칼라 마이크로프로세서이다. 따라서, 이하 더 기술되는 바와 같이, 프로세서(10)는 각종 유닛, 레지스터, 버퍼, 메모리, 다른 섹션을 포함하며, 이들 모두는 집적 회로로 형성된다. 또한, 바람직한 실시예에서, 프로세서(10)는 RISC(Reduced instruction set computer) 기법에 따라 동작한다. 도 1에 도시된 바와 같이, 프로세서(10)의 버스 인터페이스 유닛("BIU")(12)에 시스템 버스(11)가 접속된다. BIU(12)는 프로세서(10) 및 시스템 버스(11) 사이의 정보 전송을 제어한다.
BIU(12)는 프로세서(10)의 인스트럭션 캐쉬(14) 및 데이터 캐쉬(16)에 접속된다. 인스트럭션 캐쉬(14)는 인스트럭션을 시퀀서 유닛(18)에 출력한다. 인스트럭션 캐쉬로부터의 이러한 인스트럭션에 응답하여, 시퀀서 유닛(18)은 프로세서(10)의 다른 실행 회로에 인스트럭션을 선택적으로 출력한다.
바람직한 실시예에서, 프로세서(10)의 실행 회로는 시퀀서 유닛(18) 외에,다수의 실행 유닛, 즉 분기 유닛(20), 분기 타겟 어드레스 캐쉬, 고정 소수점 유닛 A("FXUA")(22), 고정 소수점 유닛 B("FXUB")(24), 복합 고정 소수점 유닛("CFXU")(26), 로드/저장 유닛("LSU")(28), 부동 소수점 유닛("FPU")(30)을 포함한다. FXUA(22), FXUB(24), CFXU(26), LSU(28)는 범용 아키텍처 레지스터("GPR")(32) 및 고정 소수점 재명명 버퍼(34)로부터 이들의 근원지 오퍼랜드(source operand) 정보를 입력으로 받는다. 또한, FXUA(22) 및 FXUB(24)는 캐리 비트(carry bit)("CA") 레지스터(37)로부터 "캐리 비트"를 입력으로 받는다. FXUA(22), FXUB(24), CFXU(26), LSU(28)는 고정 소수점 재명명 버퍼(34)내 선택된 엔트리에 저장하기 위해 자신들의 연산 결과(목적지 오퍼랜드 정보)를 출력한다. 또한, CFXU(26)는 근원지 오퍼랜드 정보 및 목적지 오퍼랜드 정보를 특수 목적 레지스터("SPR")(35)로부터 입력받거나 특수 목적 레지스터("SPR")(35)에 출력한다.
FPU(30)는 부동 소수점 아키텍처 레지스터("FPR")(36) 및 부동 소수점 재명명 버퍼(38)로부터 그의 근원지 오퍼랜드 정보를 입력받는다. FPU(30)는 부동 소수점 재명명 버퍼(38)내 선택된 엔트리에 저장하기 위해 자신의 연산 결과(목적지 오퍼랜드 정보)를 출력한다.
로드 인스트럭션에 응답하여, LSU(28)는 데이터 캐쉬(16)로부터 정보를 입력으로 받아서 이러한 정보를 재명명 버퍼(34, 38)중 선택된 하나에 복사한다. 이러한 정보가 데이터 캐쉬(16)에 저장되어 있지 않으면, 데이터 캐쉬(16)는 시스템 버스(11)에 접속된 시스템 메모리(39)로부터 이러한 정보를 (BIU(12) 및 시스템 버스(11)를 통해) 입력받을 수 있다. 또한, 데이터 캐쉬(16)는 데이터 캐쉬(16)로부터의 정보를 시스템 버스(11)에 접속된 시스템 메모리(39)에 (BIU(12) 및 시스템 버스(11)를 통해) 출력할 수 있다. 저장 인스트럭션에 응답하여, LSU(28)는 GPR(32) 및 FPR(36)중 선택된 하나로부터 정보를 입력받고 이러한 정보를 데이터 캐쉬(16)에 복사한다.
시퀀서 유닛(18)은 GPR(32) 및 FPR(36)로부터 정보를 입력받거나 GPR(32) 및 FPR(36)에 정보를 출력한다. 시퀀서 유닛(18)으로부터, 분기 유닛(20)은 프로세서(10)의 현재 상태를 표시하는 신호 및 인스트럭션을 입력받는다. 이러한 인스트럭션 및 신호에 응답하여, 분기 유닛(20)은 프로세서(10)가 실행하기 위한 일련의 인스트럭션을 저장하고 있는 적절한 메모리 어드레스를 표시하는 신호를 (시퀀서 유닛(18)에) 출력한다. 분기 유닛(20)으로부터의 이러한 신호에 응답하여, 시퀀서 유닛(18)은 인스트럭션 캐쉬(14)로부터 일련의 표시된 인스트럭션을 입력받는다. 일련의 인스트럭션중 하나 이상이 인스트럭션 캐쉬(14)에 저장되어 있지 않은 경우, 인스트럭션 캐쉬(14)는 시스템 버스(11)에 접속된 시스템 메모리(39)로부터 이러한 인스트럭션을 (BIU(12) 및 시스템 버스(11)를 통해) 입력받는다.
인스트럭션 캐쉬(14)로부터의 인스트럭션 입력에 응답하여, 시퀀서 유닛(18)은 실행 유닛(20, 22, 24, 26, 28, 30)중 선택된 하나에 인스트럭션을 선택적으로 디스패치한다. 각각의 실행 유닛은 특정 부류의 인스트럭션중 하나 이상의 인스트럭션을 실행한다. 예를 들면, FXUA(22) 및 FXUB(24)는 가산, 감산, AND 연산, OR 연산, XOR 연산과 같은, 근원지 오퍼랜드에 대한 제 1 부류의 고정 소수점 수학적 연산을 실행한다. CFXU(26)는 고정 소수점 승산 및 제산과 같은, 근원지 오퍼랜드에 대한 제 2 부류의 고정 소수점 연산을 실행한다. FPU(30)는 부동 소수점 승산 및 제산과 같은, 근원지 오퍼랜드에 대한 부동 소수점 연산을 실행한다.
재명명 버퍼(34)중 선택된 하나에 정보가 저장될 때, 이러한 정보는 선택된 재명명 버퍼가 할당될 인스트럭션에 의해 지정된 바에 따라, 저장 위치(예를 들면, GPR(32) 또는 레지스터(42)중 하나)와 연관된다. 시퀀서 유닛(18)으로부터의 신호에 응답하여, 재명명 버퍼(34)중 선택된 하나에 저장된 정보가 GPR(32)(또는 CA 레지스터중 연관된 하나에 복사된다. 시퀀서 유닛(18)은 정보를 생성한 인스트럭션의 "완료(completion)"에 응답하여, 재명명 버퍼(34)중 선택된 하나에 저장된 이러한 정보의 복사를 지시한다. 이러한 복사는 "라이트백(write back)"으로 불리운다.
재명명 버퍼(38)중 선택된 하나에 정보가 저장될 때, 이러한 정보는 FPR(36)중 하나와 연관된다. 시퀀서 유닛(18)으로부터의 신호에 응답하여, 재명명 버퍼(38)중 선택된 하나에 저장된 정보가 FPR(36)중 그 연관된 하나에 복사된다. 시퀀서 유닛(18)은 이 정보를 생성한 인스트럭션의 "완료"에 응답하여, 재명명 버퍼(38)중 선택된 하나에 저장된 이러한 정보의 복사를 지시한다.
프로세서(10)는 실행 유닛(20, 22, 24, 26, 28, 30)의 각각의 유닛에서 다수의 인스트럭션을 동시에 처리함으로써 고성능을 얻는다. 따라서, 각각의 인스트럭션은 일련의 스테이지(stage)로서 처리되고, 각각의 단계는 다른 인스트럭션의 스테이지와 병렬로 실행될 수 있다. 이러한 기법은 "파이프라이닝"으로 불리운다. 예시적인 실시예의 중요한 측면으로서, 하나의 인스트럭션은 통상 6개의 스테이지,즉 인출, 디코드, 디스패치, 실행, 완료, 라이트백으로서 처리된다.
인출 스테이지에서, 시퀀서 유닛(18)은 일련의 인스트럭션을 저장하는 하나 이상의 메모리 어드레스로부터 하나 이상의 인스트럭션을 (인스트럭션 캐쉬(14)로부터) 선택적으로 입력받으며, 여기에 대해서는 분기 유닛(20), 시퀀서 유닛(18), 분기 타겟 어드레스 캐쉬와 연관하여 후술한다.
디코드 스테이지에서, 시퀀서 유닛(18)은 인출된 인스트럭션을 네개까지 디코딩한다.
디스패치 스테이지에서, 시퀀서 유닛(18)은 디스패치된 인스트럭션의 결과(목적지 오퍼랜드 정보)를 위해 재명명 버퍼 엔트리를 예약(reserve)한 후, (디코드 스테이지에서의 디코딩에 응답하여) 실행 유닛(20, 22, 24, 26, 28, 30)중 선택된 하나에 디코딩된 인스트럭션을 4개까지 선택적으로 디스패치한다. 디스패치 스테이지에서, 디스패치된 인스트럭션을 위해 선택된 실행 유닛에 오퍼랜드 정보가 공급된다. 프로세서(10)는 이들의 프로그램된 시퀀스의 순서로 인스트럭션을 디스패치한다.
실행 스테이지에서, 실행 유닛은 자신들에게 디스패치된 인스트럭션을 실행하고 재명명 버퍼(34) 및 재명명 버퍼(38)내 선택된 엔트리에의 저장을 위해 이들의 연산 결과(목적지 오퍼랜드 정보)를 출력하며, 여기에 대해서는 이하 후술한다. 이러한 방식으로, 프로세서(10)는 이들의 프로그래밍된 시퀀스에 대해 순서와 상관없이(out-of-order) 인스트럭션을 실행할 수 있다.
완료 스테이지에서, 시퀀서 유닛(18)은 인스트럭션이 "완료"된 것을 표시한다. 프로세서(10)는 이들의 프로그래밍된 시퀀스의 순서로 인스트럭션을 "완료"한다.
라이트백 스테이지에서, 시퀀서(18)는 재명명 버퍼(34, 38)로부터 각각 GPR(32) 및 FPR(36)로 정보를 복사하도록 지시한다. 시퀀서 유닛(18)은 선택된 재명명 버퍼에 저장된 이러한 정보의 복사를 지시한다. 마찬가지로, 특정 인스트럭션의 라이트백 스테이지에서, 프로세서(10)는 특정 인스트럭션에 응답하여, 그 아키텍처 상태(architectural states)를 갱신한다. 프로세서(10)는 이들의 프로그래밍된 시퀀스의 순서로 인스트럭션의 각각의 "라이트백" 스테이지를 처리한다. 프로세서(10)는 유익하게, 지정된 상황에서 인스트럭션의 완료 스테이지 및 라이트백 스테이지를 합친다.
예시적인 실시예에서, 각각의 인스트럭션은 각각의 스테이지의 인스트럭션 처리를 완료하는 데 하나의 머신 사이클을 필요로 한다. 그러나, 몇몇 인스트럭션(예를 들면, CFXU(26)에 의해 실행되는 복합 고정 소수점 인스트럭션)은 둘 이상의 사이클을 필요로 할 수도 있다. 따라서, 선행 인스트럭션이 완료되는 데 필요한 시간상의 차이에 따라, 특정 인스트럭션의 실행 및 완료 스테이지 사이에는 가변적인 지연이 발생할 수도 있다.
레지스터 재명명 처리 동안 재명명 버퍼(34), 또는 물리적 레지스터가 사용된다. 특정 인스트럭션에 대해 물리적 레지스터(34)중 하나가 선택되어 논리적 레지스터 명칭과 연관된다. 따라서, 특정 인스트럭션에 대해, 논리적 레지스터 명칭은 연관된 물리적 레지스터로 재명명되었다.
수퍼스칼라 데이터 프로세싱 시스템(10)은 클럭 사이클 당 다수의 인스트럭션을 동시에 처리할 수 있다. 보다 특정지어 말하면, 수퍼스칼라 데이터 프로세싱 시스템(10)은 클럭 사이클 당 4개까지 인스트럭션을 처리할 수 있다. 당 분야에서 통상의 지식을 가진 자라면, 수퍼스칼라 데이터 프로세싱 시스템(10)은 클럭 사이클 당 인스트럭션을 몇개까지라도 처리할 수 있음을 이해할 것이다. 다수의 인스트럭션은 적어도 특정한 두 가지 유형의 인스트럭션을 포함할 수 있다. 제 1 특정 유형의 인스트럭션은 조건 레지스터 세팅 인스트럭션이다. 제 2 특정 유형의 인스트럭션은 조건 레지스터 판독 인스트럭션이다. 조건 레지스터는 조건 분기의 조건을 평가하는데 사용될 수 있는 한 방법이다. 조건 레지스터 판독 인스트럭션은 조건 레지스터 세팅 인스트럭션에 의해 조건 레지스터에 저장된 데이터를 판독하고 이에 의존해야 하는 조건 분기 인스트럭션이다. 분기 인스트럭션의 처리에 사용될 수 있는 분기 유닛(20)이 제공된다.
조건 레지스터 세팅 인스트럭션과 조건 레지스터 판독 인스트럭션의 조합이 한 클럭 사이클내에 수신되어 동시에 디코딩되고 실행될 수도 있다. 이들 인스트럭션의 이러한 특정의 조합은 조건 레지스터의 동일한 비트를 모두 사용할 수 있다. 인스트럭션의 일부는 조건 레지스터의 한 비트에 데이터를 기록하는 반면, 다른 인스트럭션은 이 비트에 저장된 데이터를 판독해야 한다. 따라서, 적절한 시스템 동작을 위해서는 각각의 조건 레지스터 판독 인스트럭션에 의해 올바른 조건 레지스터 데이터가 사용될 것이 필수적이다. 이들 인스트럭션을 동시에 처리할 수 있도록 하기 위해, 다수의 인스트럭션의 각각은 선택된 물리적 레지스터로 재명명되는 연관된 논리적 레지스터 명칭을 갖는다.
조건 분기 인스트럭션, 또는 조건 레지스터 판독 인스트럭션에 대해, 다수의 인스트럭션이 디코딩되는 경우 각각의 조건 분기 결과에 대한 예측이 이루어진다. 일단 조건 세팅 인스트럭션이 실행을 완료하면, 예측 및 실제 결과간에 비교가 행해진다. 예측이 올바른 경우, 조건 레지스터에 대한 변경이 행해질 필요가 없다. 그러나, 조건 분기 인스트럭션이 올바르지 않게 예측된 경우, 조건 레지스터는 조건 분기 인스트럭션의 실행 이전의 조건 레지스터의 상태를 반영하도록 변경되어야 한다. 조건 분기 인스트럭션을 실행하기 바로 전의 조건 레지스터의 "스냅샷(snapshot)"이 취해져야 한다. 일단 조건 레지스터의 상태가 저장되면, 조건 분기 인스트럭션은 실행을 완료할 수 있다. 사이클 당 조건 레지스터의 단지 하나의 스냅샷을 저장할 수 있는 시스템의 경우, 조건 분기 인스트럭션이 실행을 완료하는 동안, 다른 인스트럭션의 처리는 중지되어야 한다. 조건 분기 인스트럭션이 실행을 완료했을 때, 예측이 올바른 경우에는, 다른 인스트럭션의 처리가 계속될 수도 있다. 예측이 올바르지 않았던 경우, 조건 레지스터가 복원되며 다른 인스트럭션의 처리가 계속될 수도 있다.
수퍼스칼라 데이터 프로세싱 시스템에 대해, 다수의 조건 분기 인스트럭션이 동시에 처리될 필요가 있다. 한 사이클내에 조건 분기 인스트럭션을 동시에 처리할 수 있도록 하기 위해서는 조건 레지스터의 다수의 "스냅샷"이 저장되어야 한다. 조건 레지스터의 상태는 각각의 조건 분기 인스트럭션의 실행 바로 전에 저장되어야 한다. 예시적인 실시예는, 조건 레지스터의 다수의 복사본을 생성하고 유지함으로써, 단일 클럭 사이클내에 디코딩된 임의의 다수의 조건 분기가 올바르지 않게 예측된 경우, 올바르지 않게 예측된 조건 분기를 포함하는 인스트럭션을 처리하기 바로 전의 조건 레지스터의 올바른 상태가 복원될 수 있도록 하는 방법 및 시스템을 기술한다.
도 2a 내지 도 2d는 예시적인 실시예의 방법 및 시스템에 따른 수퍼스칼라 데이터 프로세싱 시스템(10)내에 포함된 조건 레지스터 재명명 어레이를 도시하는 도면이다. 다수의 인스트럭션의 각각은 연관된 논리적 레지스터 명칭을 갖는다. 다수의 인스트럭션중 몇몇은 동일한 논리적 레지스터 명칭과 연관될 수 있다. 따라서, 이들 인스트럭션을 동시에 처리할 수 있도록 하기 위해, 이들 인스트럭션 각각의 논리적 레지스터 명칭이 물리적 레지스터로 재명명되어야 한다. 단일 클럭 사이클동안 처리될 조건 세팅 인스트럭션이 디스패치된 후에 조건 레지스터 재명명 어레이(40)가 갱신될 것이며, 이 어레이에는 인스트럭션과 연관된 논리적 레지스터 명칭, 논리적 레지스터 명칭이 재명명된 물리적 레지스터, 결과가 사용가능한 경우의 조건 데이터, 조건 데이터가 유효한지의 여부를 나타내는 유효 비트, 및 이러한 물리적 레지스터가 이 인스트럭션과 연관된 논리적 레지스터 명칭과 연관된 가장 최근에 할당된 물리적 레지스터인지의 여부를 나타내는 상태 비트가 포함될 것이다.
다음의 예는 예시적인 실시예의 방법 및 시스템을 예시하는데 사용될 것이다. 먼저 인스트럭션 1이 수신되는데, 이 인스트럭션은 조건 레지스터 0에 데이터를 기록하는 조건 레지스터 세팅 인스트럭션이다. 다음으로 인스트럭션 2가 수신되는데, 이 인스트럭션도 또한 조건 레지스터 0에 데이터를 기록하는 조건 레지스터 세팅 인스트럭션이다. 세번째로 인스트럭션 3이 수신되는데, 이 인스트럭션은 조건 레지스터 0을 판독하고 이에 의존하는 조건 레지스터 판독 인스트럭션이다. 네번째로 인스트럭션 4가 수신되는데, 이 인스트럭션도 또한 조건 레지스터 0을 판독하고 이에 의존하는 조건 레지스터 판독 인스트럭션이다. 인스트럭션 1-4는 논리적 레지스터 명칭과 각각 연관된다. 이 예에서, 인스트럭션 1-4는 논리적 레지스터 명칭인 "조건 레지스터 0"과 각각 연관된다.
인스트럭션 1의 수신시에, 인스트럭션 1과 연관된 논리적 레지스터 명칭은 물리적 레지스터 7로 재명명되었다. 따라서, 인스트럭션 1은 "조건 레지스터 0"의 논리적 레지스터 명칭 및 "7"의 물리적 레지스터와 연관된다. 인스트럭션 2의 수신시에, 인스트럭션 2와 연관된 논리적 레지스터 명칭은 물리적 레지스터 8로 재명명되었다. 그러면 인스트럭션 2는 논리적 레지스터 명칭 "조건 레지스터 0" 및 물리적 레지스터 "8"과 연관된다. 인스트럭션 3은 조건 레지스터 0 및 물리적 레지스터 8과 연관된다. 인스트럭션 4는 "조건 레지스터 0"의 논리적 레지스터 명칭 및 "8"의 물리적 레지스터와 연관된다.
도 2a는 엔트리 필드(42, 44)와 같은 다수의 엔트리 필드를 갖는 조건 레지스터 재명명 어레이(40)를 도시한다. 각각의 엔트리 필드는 물리적 레지스터 필드, 논리적 레지스터 명칭 필드, 데이터 필드, 유효 필드, 상태 필드를 포함한다. 예를 들면, 엔트리(42)는 물리적 레지스터 필드(46), 논리적 레지스터 명칭 필드(48), 데이터 필드(50), 유효 필드(52), 상태 필드(54)를 포함한다. 마찬가지로, 엔트리(44)는 물리적 레지스터 필드(56), 논리적 레지스터 명칭 필드(58), 데이터 필드(60), 유효 필드(62), 상태 필드(64)를 포함한다. 도 2a는 인스트럭션 1의 처리를 개시한 다음 인스트럭션 2-4의 처리를 개시하기 이전의 조건 레지스터 재명명 어레이(40)의 상태를 도시한다. 따라서, 도 2a는 인스트럭션 1을 처리한 다음 인스트럭션 2-4의 처리를 개시하기 이전의 각각의 물리적 레지스터의 상태 표시를 포함하는 어레이를 예시한다.
엔트리 필드(42)는 인스트럭션 1과 연관된다. 인스트럭션 1이 재명명되고, 이제 물리적 레지스터 7과 연관되기 때문에 물리적 레지스터 필드(46)에 "7"이 포함된다. 인스트럭션 1은 논리적 레지스터 명칭인 조건 레지스터 "0" 또는 "CR0"과 연관되므로, 논리적 레지스터 명칭 필드(48)에 "CR0"가 포함된다. 데이터 필드(50)에는 조건 데이터가 포함된다. 유효 필드(52)에는 "0"이 포함되어, 데이터 필드(50)내의 데이터가 아직까지 유효하지 않음을 나타낸다. 인스트럭션 1이 처리를 완료한 때, 데이터 필드(50)는 유효 필드(52)에 "1"을 포함시키도록 갱신되어 이것을 나타낼 것이다. 물리적 레지스터 7이 조건 레지스터 0(CR0)과 연관된 가장 최근에 할당된 물리적 레지스터이기 때문에 상태 필드(54)는 "1"을 포함한다.
도 2b는 인스트럭션 2의 처리를 개시한 다음 인스트럭션 3-4의 처리를 개시하기 이전의 조건 레지스터 재명명 어레이(40)의 상태를 도시한다. 엔트리 필드(42)는 인스트럭션 1과 연관된다. 인스트럭션 1이 물리적 레지스터 7로 재명명되고 이제 물리적 레지스터 7과 연관되기 때문에, 물리적 레지스터 필드(46)에 "7"이 포함된다. 인스트럭션 1이 논리적 레지스터 명칭 "조건 레지스터 0" 또는"CR0"과 연관되므로, 논리적 레지스터 명칭 필드(48)에 "CR0"가 포함된다. 데이터 필드(50)에는 데이터가 포함된다. 유효 필드(52)에는 "0"이 포함되어, 데이터 필드(50)내의 데이터가 아직까지 유효하지 않음을 나타낸다. 물리적 레지스터 7이 더이상 조건 레지스터 0(CR0)과 연관된 가장 최근에 할당된 물리적 레지스터가 아니기 때문에, 상태 필드(54)는 "0"을 포함한다.
엔트리 필드(44)는 인스트럭션 2와 연관된다. 인스트럭션 2가 물리적 레지스터 8로 재명명되어 물리적 레지스터 8과 연관되기 때문에, 물리적 레지스터 필드(56)에 "8"이 포함된다. 인스트럭션 2는 논리적 레지스터 명칭인 "조건 레지스터 0" 또는 "CR0"과 연관되므로, 논리적 레지스터 명칭 필드(58)에 "CR0"가 포함된다. 데이터 필드(60)에는 데이터가 포함된다. 유효 필드(62)에는 "0"이 포함되어, 데이터 필드(60)내의 데이터가 아직까지 유효하지 않음을 나타낸다. 물리적 레지스터 8이 조건 레지스터 0(CR0)과 연관된 가장 최근에 할당된 물리적 레지스터이기 때문에, 상태 필드(64)는 "1"을 포함한다.
도 2c는 인스트럭션 3의 처리를 개시한 다음 인스트럭션 4의 처리를 개시하기 이전의 조건 레지스터 재명명 어레이(40)의 상태를 도시한다. 도 2d는 인스트럭션 4의 처리를 개시한 후에 조건 레지스터 재명명 어레이(40)의 상태를 도시한다. 인스트럭션 3 및 4는 조건 분기 인스트럭션으로서 조건 레지스터를 세트하지 않기 때문에, 조건 레지스터 재명명 어레이(40)의 상태는 인스트럭션 3 또는 4의 처리를 개시한 후에 변화하지 않을 것이다. 인스트럭션 3 및 4는 조건 레지스터 재명명 어레이의 엔트리 필드에 저장된 엔트리를 판독한다.
도 3은 예시적인 실시예의 방법 및 시스템에 따라 수퍼스칼라 데이터 프로세싱 시스템(10)내에 포함된 어레이(70)를 도시하는 도면이다. 조건 레지스터의 상태는 각각의 조건 분기 인스트럭션의 실행 바로 전에 저장되어야 한다. 인스트럭션 3을 실행하기 바로 전에, 각각의 물리적 레지스터와 연관된 상태 필드가 저장되어야 한다. 또한, 인스트럭션 4도 또한 조건 분기이므로, 인스트럭션 4를 실행하기 바로 전에, 각각의 물리적 레지스터와 연관된 상태 필드가 또한 저장되어야 한다.
단일 클럭 사이클내에 실행될 각각의 조건 분기 인스트럭션과 연관된 상태 필드가 어레이(70)에 저장된다. 어레이(70)는 엔트리 필드(82, 84, 86, 88, 90, 92, 94, 96)와 같은 다수의 엔트리 필드를 포함한다. 엔트리 필드는 임의의 조건 분기 인스트럭션 이전에 존재하므로 이 엔트리 필드는 어레이(40)의 상태 필드와 연관된다. 주어진 예에서, 엔트리 필드(82)는 인스트럭션 3 이전의 상태와 연관되고, 엔트리 필드(84)는 인스트럭션 4 이전의 상태와 연관된다.
어레이(70)는 또한 다수의 행을 포함한다. 다수의 행의 각각은 물리적 레지스터의 상이한 하나와 연관된다. 예시적인 실시예에서, 16개의 물리적 레지스터가 존재한다. 따라서, 어레이(70)내에 포함된 16개의 행이 존재한다. 예를 들면, 어레이(70)는 행(118) 및 행(120)을 포함하며, 행(118)은 물리적 레지스터 7과 연관되고, 행(120)은 물리적 레지스터 8과 연관된다.
행(118)은 도 2b의 상태 필드(54)로부터의 상태가 저장되는 엘리먼트(134)와, 도 2c의 상태 필드(54)로부터의 상태가 저장되는 엘리먼트(138)를 포함한다.행(120)은 도 2b의 상태 필드(64)로부터의 상태 표시가 저장되는 엘리먼트(136)와, 도 2c의 상태 필드(64)로부터의 상태가 저장되는 엘리먼트(140)를 포함한다. 4개의 인스트럭션이 디스패칭되어 어레이(70)에 모두 입력되는 경우, 도 2a, 2b, 2c, 2d의 상태 필드(54, 64)가 모두 병렬로 생성된다. 이하 기술되는 열 인에이블 신호는 어레이(70)의 엔트리 필드에 저장할 조건 분기 이전의 상태 스냅샷만을 선택한다.
도 4는 예시적인 실시예의 방법 및 시스템에 따른 수퍼스칼라 데이터 프로세싱 시스템(10)내에 포함된 단일 물리적 레지스터의 상태 표시를 생성하는 블록 다이어그램(160)이다. 당 분야에서 통상의 지식을 가진 자라면 수퍼스칼라 데이터 프로세싱 시스템(10)내에 포함된 각각의 물리적 레지스터에 대해 다이어그램(160)과 같은 로직 다이어그램이 포함되어야 한다는 것을 인지할 것이다. 예시적인 실시예는 16개의 물리적 레지스터를 포함하므로, 모든 물리적 레지스터에 대한 상태 표시를 생성하도록 16개의 로직으로 된 로직 다이어그램(160)이 구현되어야 한다.
블록(162)은 신호(164, 166)를 입력으로서 수신한다. 블록(162)은 신호(164, 166)가 동일하지 않으면, 논리 "1"을 생성한다. 블록(162)은 신호(164, 166)가 동일하면, 논리 "0"을 생성한다. 블록(162)의 출력은 AND 게이트(168)에 입력으로서 수신된다. AND 게이트(168)는 신호(170)를 입력으로서 또한 수신한다. AND 게이트의 출력은 OR 게이트(172)에 입력된다. 블록(174)은 신호(176, 166)를 입력으로서 또한 수신한다. 블록(174)은 신호(176, 166)가 동일하지 않으면, 논리 "1"을 생성한다. 블록(174)은 신호(176, 166)가 동일하면, 논리 "0"을 생성한다.블록(174)의 출력은 AND 게이트(178)에 입력으로서 수신된다. AND 게이트(178)는 신호(170) 및 블록(162)의 출력을 입력으로서 또한 수신한다. AND 게이트(178)의 출력은 OR 게이트(180)에 입력된다. 블록(182)은 신호(184, 166)를 입력으로서 또한 수신한다. 블록(182)은 신호(184, 166)가 동일하지 않으면, 논리 "1"을 생성한다. 블록(182)은 신호(184, 166)가 동일하면, 논리 "0"을 생성한다. 블록(182)의 출력은 AND 게이트(186)에 입력으로서 수신된다. AND 게이트(186)는 신호(170), 블록(174)의 출력, 블록(162)의 출력을 입력으로서 또한 수신한다. AND 게이트(186)의 출력은 OR 게이트(188)에 입력된다. 블록(190)은 신호(192, 166)를 입력으로서 수신한다. 블록(190)은 신호(192, 166)가 동일하지 않으면, 논리 "1"을 생성한다. 블록(190)은 신호(192, 166)가 동일하면, 논리 "0"을 생성한다. 블록(190)의 출력은 AND 게이트(194)에 입력으로서 수신된다. AND 게이트(194)는 신호(170), 블록(182)의 출력, 블록(174)의 출력, 블록(162)의 출력을 입력으로서 또한 수신한다. AND 게이트(194)의 출력은 OR 게이트(196)에 입력된다.
OR 게이트(172)는 출력(198)을 생성한다. OR 게이트(180)는 출력(200)을 생성한다. OR 게이트(188)는 출력(202)을 생성한다. OR 게이트(196)는 출력(204)을 생성한다. 출력(198)은 인스트럭션 1의 수신 후에, 조건 레지스터 재명명 어레이(40)의 상태 필드에 저장될 다이어그램(160)의 물리적 레지스터의 상태이다. 예를 들면, 다이어그램(160)의 물리적 레지스터가 물리적 레지스터 7인 경우, 출력 신호(198)는 도 2a의 조건 레지스터 재명명 어레이(40)의 필드(54)에 입력될 것이다. 위의 예에서, 출력 신호(198)의 값은 논리 "1"이다. 출력(200)은 인스트럭션2 이후의 조건 레지스터 재명명 어레이(40)의 상태 필드에 저장될 다이어그램(160)의 물리적 레지스터의 상태이다. 예를 들면, 다이어그램(160)의 물리적 레지스터가 물리적 레지스터 7인 경우, 출력 신호(198)는 도 2b의 조건 레지스터 재명명 어레이(40)의 필드(54)에 입력될 것이다. 위의 예에서, 출력 신호(198)의 값은 논리 "0"이다. 출력(202)은 인스트럭션 3의 수신 이후의 조건 레지스터 재명명 어레이(40)의 상태 필드에 저장될 다이어그램(160)의 물리적 레지스터의 상태이다. 다이어그램(160)의 물리적 레지스터가 물리적 레지스터 7인 경우, 출력 신호(202)는 도 2c의 조건 레지스터 재명명 어레이(40)의 필드(54)에 입력될 것이다. 위의 예에서, 출력 신호(202)의 값은 논리 "0"이다. 출력(204)은 인스트럭션 4 이후에 조건 레지스터 재명명 어레이(40)의 상태 필드에 저장될 다이어그램(160)의 물리적 레지스터의 상태이다. 예를 들면, 다이어그램(160)의 물리적 레지스터가 물리적 레지스터 7인 경우, 출력 신호(204)는 도 2d의 조건 레지스터 재명명 어레이(40)의 필드(54)에 입력될 것이다. 위의 예에서, 출력 신호(204)의 값은 논리 "0"이다.
신호(170)는 다이어그램(160)의 물리적 레지스터 상태의 이진값이다. 예를 들면, 물리적 레지스터 7에 대한 다이어그램(160)의 경우, 신호(170)는 물리적 레지스터 7의 상태 값이 될 것이다. 물리적 레지스터 8에 대한 다어어그램(160)의 경우, 신호(170)는 물리적 레지스터 8의 상태 값이 될 것이다.
신호(164)는 인스트럭션 1과 연관된 논리적 레지스터 명칭이다. 신호(176)는 인스트럭션 2와 연관된 논리적 레지스터 명칭이다. 신호(184)는 인스트럭션 3과 연관된 논리적 레지스터 명칭이다. 신호(192)는 인스트럭션 4와 연관된 논리적레지스터 명칭이다. 신호(166)는 인스트럭션 1의 수신 바로 전에 필드(48)에 저장된 논리적 레지스터 명칭이다.
AND 게이트(206)는 신호(208, 210)를 입력으로서 수신한다. 신호(208)는 AND 게이트(216, 222, 228)에 의해 입력으로서 또한 수신된다. AND 게이트(206)의 출력은 OR 게이트(172)에 입력으로서 수신된다. OR 게이트(212)는 신호(210, 214)를 입력으로서 수신하고, AND 게이트(216)에 의해 수신되는 출력을 생성한다. AND 게이트의 출력은 OR 게이트(200)에 입력으로서 수신된다. OR 게이트(218)는 신호(210, 214, 220)를 입력으로서 수신하고, AND 게이트(222)에 의해 수신되는 출력을 생성한다. AND 게이트(222)는 OR 게이트(202)에 의해 수신되는 출력을 생성한다. OR 게이트(224)는 신호(210, 214, 220, 226)를 입력으로서 수신하고, AND 게이트(228)에 의해 수신되는 신호를 생성한다. AND 게이트(228)는 OR 게이트(204)에 의해 입력으로서 수신되는 출력을 생성한다. 인버터(230)는 신호(232)를 입력으로서 수신하고, AND 게이트(216, 222, 228)에 의해 수신되는 출력을 생성한다. NOR 게이트(234)는 신호(236, 238)를 입력으로서 수신하고, AND 게이트(222, 228)에 의해 수신되는 출력을 생성한다. NOR 게이트(240)는 신호(242, 244, 246)를 입력으로서 수신하고, AND 게이트(228)에 의해 수신되는 출력을 생성한다.
신호(210)는 인스트럭션 1에 대한 기록 인에이블 신호이다. 인스트럭션 1이 조건 레지스터 기록 인스트럭션이면, 신호(210)는 논리 "1"이다. 인스트럭션 1이 조건 레지스터 기록 인스트럭션이 아니면, 신호(210)는 논리 "0"이다. 신호(214)는 인스트럭션 2에 대한 기록 인에이블 신호이다. 인스트럭션 2가 조건 레지스터 기록 인스트럭션이면, 신호(214)는 논리 "1"이다. 인스트럭션 2가 조건 레지스터 기록 인스트럭션이 아니면, 신호(214)는 논리 "0"이다. 신호(220)는 인스트럭션 3에 대한 기록 인에이블 신호이다. 인스트럭션 3이 조건 레지스터 기록 인스트럭션이면, 신호(220)는 논리 "1"이다. 인스트럭션 3이 조건 레지스터 기록 인스트럭션이 아니면, 신호(220)는 논리 "0"이다. 신호(226)는 인스트럭션 4에 대한 기록 인에이블 신호이다. 인스트럭션 4가 조건 레지스터 기록 인스트럭션이면, 신호(226)는 논리 "1"이다. 인스트럭션 4가 조건 레지스터 기록 인스트럭션이 아니면, 신호(226)는 논리 "0"이다. 인스트럭션 1이 재명명될 로직 다이어그램(160)과 연관된 물리적 레지스터를 선택한 경우, 신호(208)는 논리 "1"인 할당 신호이다. 예를 들면, 로직 다이어그램(160)이 물리적 레지스터 7에 대한 다이어그램인 경우, 인스트럭션 1이 물리적 레지스터 7과 연관되어 있으면, 신호(208)는 논리 "1"이 될 것이다. 그렇지 않으면, 신호(208)는 논리 "0"이 될 것이다. 다른 예로서, 로직 다이어그램(160)이 물리적 레지스터 3에 대한 다이어그램인 경우, 인스트럭션 1이 물리적 레지스터 3과 연관되어 있으면, 신호(208)는 논리 "1"이 될 것이다. 그렇지 않으면, 신호(208)는 논리 "0"이 될 것이다.
신호(232, 236, 238, 242, 244, 246)는 충돌 신호(collision signal)이다. 인스트럭션 2와 연관된 논리적 레지스터 명칭이 인스트럭션 1과 연관된 논리적 레지스터 명칭과 동일한 경우, 신호(232)는 논리 "1"이다. 동일하지 않으면, 신호(232)는 논리 "0"이다. 인스트럭션 3과 연관된 논리적 레지스터 명칭이 인스트럭션 1과 연관된 논리적 레지스터 명칭과 동일한 경우, 신호(236)는 논리 "1"이다. 동일하지 않으면, 신호(236)는 논리 "0"이다. 인스트럭션 4와 연관된 논리적 레지스터 명칭이 인스트럭션 1과 연관된 논리적 레지스터 명칭과 동일한 경우, 신호(238)는 논리 "1"이다. 동일하지 않으면, 신호(238)는 논리 "0"이다. 인스트럭션 3과 연관된 논리적 레지스터 명칭이 인스트럭션 2와 연관된 논리적 레지스터 명칭과 동일한 경우, 신호(242)는 논리 "1"이다. 동일하지 않으면, 신호(242)는 논리 "0"이다. 인스트럭션 4와 연관된 논리적 레지스터 명칭이 인스트럭션 2와 연관된 논리적 레지스터 명칭과 동일한 경우, 신호(244)는 논리 "1"이다. 동일하지 않으면, 신호(244)는 논리 "0"이다. 인스트럭션 4와 연관된 논리적 레지스터 명칭이 인스트럭션 3과 연관된 논리적 레지스터 명칭과 동일한 경우, 신호(246)는 논리 "1"이다. 동일하지 않으면, 신호(246)는 논리 "0"이다.
AND 게이트(248)는 신호(210, 214)를 입력으로서 수신하고 AND 게이트(250)에 의해 수신된 출력을 생성한다. AND 게이트(250)의 출력은 OR 게이트(180)에 의해 수신된다. AND 게이트(250)는 신호(252)를 입력으로서 또한 수신한다. 신호(252)는 AND 게이트(258, 266)에 의해 입력으로서 또한 수신된다.
인스트럭션 2가 재명명될 로직 다이어그램(160)과 연관된 물리적 레지스터를 선택한 경우, 신호(252)는 논리 "1"인 할당 신호이다. 예를 들면, 로직 다이어그램(160)이 물리적 레지스터 7에 대한 다이어그램인 경우, 인스트럭션 2가 물리적 레지스터 7과 연관되어 있으면, 신호(252)는 논리 "1"이 될 것이다. 그렇지 않으면, 신호(252)는 논리 "0"이 될 것이다.
AND 게이트(248)의 출력은 OR 게이트(254)에 의해 입력으로서 또한 수신된다. OR 게이트(254)는 AND 게이트(258) 및 OR 게이트(264)에 의해 입력으로서 수신된다. AND 게이트(256)는 신호(210, 220)를 입력으로서 수신하고, OR 게이트(254)에 의해 수신되는 출력을 생성한다. AND 게이트(260)는 신호(214, 220)를 입력으로서 수신하고, OR 게이트(254)에 의해 입력으로서 수신되는 출력을 생성한다. AND 게이트(262)는 신호(210, 226)를 입력으로서 수신하고, OR 게이트(264)에 의해 입력으로서 수신되는 출력을 생성한다. OR 게이트(264)는 AND 게이트(266)에 의해 입력으로서 수신되는 출력을 생성한다. AND 게이트(268)는 신호(214, 226)를 입력으로서 수신하고, OR 게이트(264)에 의해 입력으로서 수신되는 출력을 생성한다. AND 게이트(270)는 신호(220, 226)를 입력으로서 수신하고, OR 게이트(264)에 의해 입력으로서 수신되는 출력을 생성한다.
AND 게이트(272)는 신호(210, 214, 226)를 입력으로서 수신하고, AND 게이트(274)에 의해 입력으로서 수신되는 출력을 생성한다. AND 게이트(274)는 OR 게이트(202)에 의해 입력으로서 수신되는 출력을 생성한다. AND 게이트(274)는 신호(276)를 입력으로서 또한 수신한다. 인스트럭션 3이 로직 다이어그램(160)과 연관된 물리적 레지스터를 재명명될 것으로 선택한 경우, 신호(276)는 논리 "1"인 할당 신호이다. 예를 들면, 로직 다이어그램(160)이 물리적 레지스터 7에 대한 다이어그램인 경우, 인스트럭션 3이 물리적 레지스터 7과 연관되어 있으면, 신호(276)가 논리 "1"이 될 것이다. 그렇지 않으면, 신호(276)는 논리 "0"이 될 것이다.
AND 게이트(278)는 신호(210, 214, 226)를 입력으로서 수신하고, OR게이트(280)에 의해 입력으로서 수신되는 출력을 생성한다. OR 게이트(280)는 AND 게이트(272, 278, 284, 286, 288)의 출력을 입력으로서 수신하고, AND 게이트(282)에 의해 수신되는 출력을 생성한다. AND 게이트(284)는 신호(210, 220, 226)를 입력으로서 수신하고, OR 게이트(280)에 의해 수신되는 출력을 생성한다. AND 게이트(286)는 신호(214, 220, 226)를 입력으로서 수신하고, OR 게이트(280)에 의해 수신되는 출력을 생성한다. AND 게이트(288)는 신호(210, 214, 220, 226)를 입력으로서 수신하고, AND 게이트(290)에 의해 입력으로서 수신되는 출력을 생성한다. AND 게이트(290)는 신호(294)를 입력으로서 또한 수신한다. 인스트럭션 4가 로직 다이어그램(160)과 연관된 물리적 레지스터를 재명명될 것으로 선택한 경우, 신호(294)는 논리 "1"인 할당 신호이다. 예를 들면, 로직 다이어그램(160)이 물리적 레지스터 7에 대한 다이어그램인 경우, 인스트럭션 4가 물리적 레지스터 7과 연관되어 있으면, 신호(276)는 논리 "1"이 될 것이다. 그렇지 않으면, 신호(294)는 논리 "0"이 될 것이다.
NAND 게이트(292)는 신호(232, 236, 238)를 입력으로서 수신하고, AND 게이트(282)에 의해 수신되는 출력을 생성한다. AND 게이트(282)는 NAND 게이트(292)의 출력, OR 게이트(280)의 출력 및 신호(276)를 수신한다. AND 게이트(282)는 OR 게이트(196)에 의해 수신되는 출력을 생성한다.
NAND 게이트(296)는 신호(232, 236)를 입력으로서 수신하고, AND 게이트(258, 266)에 의해 입력으로서 수신되는 출력을 생성한다. NAND 게이트(298)는 신호(232, 238)를 입력으로서 수신하고, AND 게이트(266)에 의해 입력으로서 수신되는 출력을 생성한다. NAND 게이트(300)는 신호(242, 244)를 입력으로서 수신하고, AND 게이트(266)에 의해 입력으로서 수신되는 출력을 생성한다. NAND 게이트(302)는 신호(236, 238)를 입력으로서 수신하고, AND 게이트(266)에 의해 입력으로서 수신되는 출력을 생성한다.
도 5는 어레이(70)의 하나의 엘리먼트를 저장하고 복원하는 회로(320)를 도시한다. 당 분야에서 통상의 지식을 가진 자라면 어레이(70)의 각각의 엘리먼트가 회로(320)와 유사한 회로에 의해 저장될 것이라는 것을 이해할 것이다. 출력(198)은 N형 채널 트랜지스터(322)의 드레인에 접속된다. 트랜지스터(322)의 게이트는 AND 게이트(324)의 출력에 접속된다. AND 게이트(324)는 신호(326, 328)를 입력으로서 수신한다. 신호(326)는 기록 인에이블 신호이다. 회로(320)로 나타내어지는 엘리먼트와 연관된 물리적 레지스터의 상태 표시가 어레이(70)에 저장되는 경우 신호(326)는 논리 "1"이다. AND 게이트(330)는 신호(332, 326)를 입력으로서 수신한다. AND 게이트(334)는 신호(336, 326)를 입력으로서 수신한다. AND 게이트(338)는 신호(340, 326)를 입력으로서 수신한다. AND 게이트(330)의 출력은 트랜지스터(342)의 게이트에 접속된다. AND 게이트(334)의 출력은 트랜지스터(344)의 게이트에 접속된다. AND 게이트(338)의 출력은 트랜지스터(346)의 게이트에 접속된다.
트랜지스터(322)의 소스는 SRAM 셀(348)에 접속된다. 트랜지스터(342)의 드레인은 신호(200)에 접속된다. 트랜지스터(342)의 소스는 SRAM 셀(348)에 접속된다. 트랜지스터(344)의 드레인은 신호(202)에 접속된다. 트랜지스터(344)의 소스는 SRAM 셀(348)에 접속된다. 트랜지스터(346)의 드레인은 신호(204)에 접속된다. 트랜지스터(346)의 소스는 SRAM 셀(348)에 접속된다. SRAM 셀(348)은 인에이블된 신호의 값을 저장한다.
신호(328, 332, 336, 340)는 열 인에이블 신호(column enable signal)이다. SRAM 셀(348)에 신호(198)가 저장되면 신호(328)는 논리 "1"이다. SRAM 셀(348)에 신호(200)가 저장되면 신호(322)는 논리 "1"이다. SRAM 셀(348)에 신호(202)가 저장되면 신호(336)는 논리 "1"이다. SRAM 셀(348)에 신호(204)가 저장되면 신호(340)는 논리 "1"이다.
엔트리 필드(82)가 인스트럭션 3에서의 조건 분기 이전의 상태와 연관되었기 때문에, 신호(332)는 논리 "1"이 되는 반면, 신호(328, 336, 340)는 논리 "0"이 될 것이다. 로직 다이어그램(160)이 물리적 레지스터 7과 연관되는 경우, 신호(200)의 값은 엘리먼트(134)로 표시된 바와 같이 셀(348)에 저장될 것이다. 따라서, 어레이(70)의 엘리먼트(134)는 인스트럭션 1 및 2의 처리를 개시한 이후 인스트럭션 3의 처리를 개시하기 이전에 물리적 레지스터 7의 상태 표시를 포함할 것이다. 유사한 방식으로, 각각의 다른 물리적 레지스터에 대해, 신호(332)는 상태 표시가 엔트리 필드(82)에 저장되도록 할 것이다.
당 분야에서 통상의 지식을 가진 자라면 어레이(70)의 각각의 엘리먼트에 대해, 유사한 신호 세트(198, 200, 202, 204, 328, 332, 336, 340)가 제공되어야 한다는 것을 인지할 것이다. 예를 들면, 물리적 레지스터 8에 대해 도 3에 도시된 신호(100, 102, 104, 106)를 생성하는 유사한 로직 다이어그램(160)이 포함되어야하고, 이는 물리적 레지스터 7에 대해 사용된 신호(198, 200, 202, 204)와 유사하다.
다른 예로서, 인스트럭션 3 이후 인스트럭션 4에서의 다음 조건 분기 이전에 엔트리 필드(84)가 각각의 물리적 레지스터의 상태 표시를 포함하도록 하기 위해, 신호 세트(108, 110, 112, 114)가 포함되어야 하는데 이는 각각 신호(328, 332, 336, 340)와 유사하다. 이러한 방식으로, 신호(332)는 물리적 레지스터 7에 대해 신호(200)의 값이 또한 엔트리 필드(134)에 저장되도록 한다. 신호(332)는 또한 물리적 레지스터 8에 대해 신호(102)의 값이 엔트리 필드(136)에 저장되도록 한다. 엔트리 필드(84)가 인스트럭션 4에서의 제 2 조건 분기와 연관되기 때문에, 인스트럭션 3과 연관된 신호(112)는 논리 "1"이 되는 반면, 신호(108, 110, 114)는 논리 "0"이 될 것이다. 신호(112)는 신호(202)의 값이 엘리먼트(138)에 저장되도록 하고, 신호(104)의 값은 엘리먼트(140)에 저장되도록 한다.
SRAM 셀(348)에 저장된 상태 값이 어레이(40)에 복원되는 경우, 복원된 상태 값을 포함하는 엘리먼트에 대한 복원 선택 신호(350)는 논리 "1"이 될 것이다. 트랜지스터(352)의 드레인은 SRAM 셀(348)에 접속된다. 트랜지스터(352)의 게이트는 신호(350)를 수신한다. 신호(354)는 트랜지스터(352)의 소스에 의해 생성된다. 따라서, 신호(354)는 어레이(40)의 적절한 상태 필드에 포함될 복원 상태가 될 것이다. 엔트리 필드(82)에 대해, 신호(350)가 논리 "1"인 경우, 모든 물리적 레지스터의 상태 표시는 엔트리 필드(82)로부터 어레이(40)의 상태 필드로 복사될 것이다. 예를 들면, 인스트럭션 2 이후에 저장된 상태 표시가 조건 레지스터 재명명어레이(40)에 복원되는 경우, 신호(350)는 논리 "1"이 되고 이로 인해 엘리먼트(134)에 저장된 값이 상태 필드(54)에 복사되고 엘리먼트(136)에 저장된 값이 상태 필드(64)에 복사된다.
도 6a 내지 6d는 예시적인 실시예의 방법 및 시스템에 따라 특정 유형의 다수의 인스트럭션을 동시에 처리할 수 있도록 하기 위해 어레이를 설정하고 이 어레이에 다수의 물리적 레지스터의 상태 표시를 저장하는 것을 도시하는 고수준의 흐름도이다.
도시된 바와 같이 프로세스는 블록(400)에서 개시하며, 이후 블록(402)으로 진행하는데, 여기에서 조건 레지스터 재명명 어레이를 설정한다. 다음에 블록(404)에서, 조건 레지스터 재명명 어레이내에 다수의 엔트리 필드를 설정한다. 각각의 엔트리 필드는 물리적 레지스터 필드, 논리적 레지스터 명칭 필드, 상태 필드, 유효 필드, 데이터 필드를 포함한다. 블록(406)에서, 다수의 물리적 레지스터를 결정한다. 이후 블록(408)에서, 상이한 물리적 레지스터와 조건 레지스터 재명명 어레이내 각각의 엔트리 필드를 연관시킨다. 블록(410)에서, 스냅샷 어레이를 설정한다. 다음에 블록(412)에서, 스냅샷 어레이내에 다수의 엔트리 필드를 설정한다. 블록(414)에서, 인스트럭션의 인출 및 디코딩을 행한다. 다음에 블록(418)에서, 인스트럭션과 연관된 논리적 레지스터 명칭을 결정한다. 다음에 블록(420)에서, 인스트럭션과 연관된 물리적 레지스터를 결정한다.
블록(422)에서, 이 인스트럭션이 조건 레지스터 세팅 인스트럭션인지의 여부를 판정한다. 이것이 조건 레지스터 세팅 인스트럭션이라고 판정이 이루어지면,프로세스는 블록(424)으로 진행하며, 여기에서 이 인스트럭션에 대해 결정된 물리적 레지스터와 연관된 조건 레지스터 재명명 어레이의 엔트리 필드를 결정한다. 블록(426)에서, 조건 레지스터 재명명 어레이의 블록(424)에서 결정한 엔트리 필드의 논리적 명칭 필드에 논리적 레지스터 명칭을 저장한다. 다음에 블록(428)에서, 조건 레지스터 재명명 어레이의 이러한 엔트리 필드인 상태 필드에 논리 "1"을 저장한다. 이후 블록(430)에서, 조건 레지스터 재명명 어레이의 이 엔트리 필드의 유효 필드에 논리 "0"을 저장한다. 그 다음에 프로세스는 블록(432)으로 진행하며, 여기에서 조건 레지스터 재명명 어레이의 다른 모든 엔트리 필드에 저장된 논리적 레지스터 명칭과, 이 인스트럭션과 연관된 논리적 레지스터 명칭을 비교한다. 그리고 나서 블록(434)에서, 임의의 다른 엔트리 필드가 논리적 레지스터 명칭을 포함하는지의 여부를 판정한다. 다른 엔트리 필드가 논리적 레지스터 명칭을 포함하는 것으로 판정이 행해지면, 프로세스는 블록(436)으로 진행하고, 여기에서 해당 엔트리 필드의 논리적 레지스터 명칭 필드에 저장된 논리적 레지스터 명칭을 포함하는 다른 모든 엔트리 필드의 상태 필드에 논리 "0"을 저장한다. 그 다음에 프로세스는 블록(438)으로 진행한다. 다시 블록(434)으로 돌아와서, 다른 엔트리 필드가 논리적 레지스터 명칭을 포함하지 않는 것으로 판정이 이루어지면, 프로세스는 블록(438)으로 진행한다.
블록(438)에서, 조건 레지스터 큐에 인스트럭션을 전송한다. 블록(440)에서는, 이 인스트럭션이 이 사이클 동안 디스패치될 최종 인스트럭션인지의 여부를 판정한다. 이 인스트럭션이 디스패치될 최종 인스트럭션이 아닌 것으로 판정이 이루어지면, 프로세스는 도시된 바와 같이 접속부 F를 통해 블록(414)으로 진행한다. 다시 블록(440)으로 돌아와서, 이 인스트럭션이 디스패치될 최종 인스트럭션인 것으로 판정이 이루어지면, 프로세스는 도시된 바와 같이 접속부 B를 통해 블록(450)으로 진행한다.
블록(450)에서, 분기 큐가 비어있는지의 여부를 판정한다. 분기 큐가 비어있지 않은 것으로 판정이 이루어지면, 프로세스는 블록(452)으로 진행하며, 여기에서 분기 큐내의 첫번째 인스트럭션을 검사한다. 다음에 블록(454)에서, 조건 레지스터 데이터가 이 인스트럭션에 대해 사용가능한지의 여부를 판정한다. 이 인스트럭션에 대해 조건 레지스터 데이터가 사용불가능한 것으로 판정이 이루어지면, 프로세스는 블록(456)으로 진행한다. 블록(456)에서, 분기 큐에 더 이상의 분기 인스트럭션이 존재하는지의 여부를 판정한다. 분기 큐에 더 이상의 분기 인스트럭션이 존재하지 않는 것으로 판정이 이루어지면, 프로세스는 도시된 바와 같이 접속부 E를 통해 블록(458)로 진행한다. 다시 블록(456)으로 돌아와서, 분기 큐에 부가적인 분기 인스트럭션이 존재하는 것으로 판정이 이루어지면, 프로세스는 블록(460)으로 진행하며, 여기에서 분기 큐에 포함된 다음의 분기 인스트럭션을 검사한다. 그리고 나서 프로세스는 블록(454)으로 다시 진행한다.
다시 블록(454)으로 돌아와서, 이 인스트럭션에 대해 조건 레지스터 데이터가 사용가능한 것으로 판정이 이루어지면, 프로세스는 블록(462)으로 진행하며, 여기에서 분기 인스트럭션이 올바르게 예측되었는지의 여부를 판정한다. 분기 인스트럭션이 올바르게 예측된 것으로 판정이 이루어지면, 프로세스는 블록(464)으로진행하며, 여기에서 이 인스트럭션과 연관된 스냅샷 어레이 엔트리 필드를 사용가능하게 한다. 그 다음에 프로세스는 블록(456)으로 다시 진행한다. 다시 블록(462)으로 돌아와서, 분기 인스트럭션이 올바르게 예측되지 않은 것으로 판정이 이루어지면, 프로세스는 블록(466)으로 진행하며, 여기에서 프로세스를 플러쉬(flush)하고 이 인스트럭션과 연관된 스냅샷 엔트리의 엔트리 필드로부터 물리적 레지스터의 상태 표시를 복원한다. 그리고 나서 프로세스는 블록(456)으로 다시 진행한다.
다시 블록(450)으로 돌아와서, 분기 큐가 비어 있는 것으로 판정이 이루어지면, 프로세스는 도시된 바와 같이 접속부 E를 통해 블록(458)으로 진행한다. 블록(458)에서, 조건 레지스터 큐가 비어있는지의 여부를 판정한다. 조건 레지스터 큐가 비어있는 것으로 판정이 이루어지면, 프로세스는 도시된 바와 같이 접속부 F를 통해 블록(414)으로 다시 진행한다. 블록(458)으로 다시 돌아와서, 조건 레지스터가 비어있지 않은 것으로 판정이 이루어지면, 프로세스는 블록(470)으로 진행하며, 여기에서 조건 레지스터 큐의 첫번째 인스트럭션을 검사한다. 다음에 블록(472)에서, 인스트럭션이 실행될 수 있는지의 여부를 판정한다. 인스트럭션이 실행될 수 있는 것으로 판정이 이루어지면, 프로세스는 블록(478)으로 진행한다. 블록(478)에서, 인스트럭션을 실행하고 인스트럭션의 데이터 결과를 사용가능하게 한다. 그리고 나서 프로세스는 블록(474)으로 진행한다.
블록(472)으로 다시 돌아와서, 인스트럭션이 실행될 수 없는 것으로 판정되면, 프로세스는 블록(474)으로 진행하며, 여기에서 더 이상의 인스트럭션이 존재하는지의 여부를 판정한다. 더 이상의 인스트럭션이 존재하지 않는 것으로 판정이 이루어지면, 프로세스는 도시된 바와 같이 접속부 F를 통해 블록(414)으로 진행한다. 블록(474)으로 다시 돌아와서, 더 이상의 인스트럭션이 존재하는 것으로 판정이 이루어지면, 프로세스는 블록(476)으로 진행하며, 여기에서 조건 레지스터 큐내의 다음 인스트럭션을 검사한다.
다시 블록(422)으로 진행하여, 이것이 조건 레지스터 세팅 인스트럭션이 아닌 것으로 판정이 이루어지면, 프로세스는 도시된 바와 같이 접속부 A를 통해 블록(480)으로 진행한다. 블록(480)에서는, 이것이 조건 레지스터 판독 인스트럭션, 즉 조건 분기 인스트럭션인지의 여부를 판정한다. 이것이 조건 분기 인스트럭션이 아닌 것으로 판정이 이루어지면, 프로세스는 도시된 바와 같이 블록(440)으로 진행한다. 블록(480)으로 다시 돌아와서, 이 인스트럭션이 조건 분기 인스트럭션인 것으로 판정이 이루어지면, 프로세스는 블록(482)으로 진행하며, 여기에서 이 조건 분기의 결과를 예측한다. 다음에 블록(484)에서, 조건 레지스터 재명명 어레이의 첫번째 엔트리 필드에 저장된 논리적 레지스터 명칭과, 현재의 인스트럭션과 연관된 논리적 레지스터 명칭을 비교한다. 다음에 블록(486)에서, 논리적 레지스터 명칭이 동일한지의 여부를 판정한다. 논리적 레지스터 명칭이 동일한 것으로 판정이 이루어지면, 프로세스는 블록(488)으로 진행하며, 여기에서 이 엔트리에 대해 상태 필드에 저장된 상태 표시가 논리 "1"인지의 여부를 판정한다. 표시가 "1"이 아닌 것으로 판정이 이루어지면, 프로세스는 블록(490)으로 진행한다.
다시 블록(486)으로 돌아와서, 논리적 레지스터 명칭이 동일하지 않은 것으로 판정이 이루어지면, 프로세스는 블록(490)으로 진행한다. 블록(490)에서, 이것이 조건 레지스터 재명명 어레이에 포함된 최종 어레이인지의 여부를 판정한다. 이것이 재명명 어레이내의 최종 엔트리가 아닌 것으로 판정이 이루어지면, 프로세스는 블록(492)으로 진행하며, 여기에서 다음 엔트리의 논리적 레지스터 명칭과, 이 인스트럭션의 논리적 레지스터 명칭을 비교한다. 그리고 나서 프로세스는 블록(486)으로 다시 진행한다.
블록(488)으로 다시 돌아와서, 이러한 엔트리에 저장된 상태 식별부가 "1"인 것으로 판정이 이루어지면, 프로세스는 블록(494)으로 진행하며, 여기에서 인스트럭션과 이 엔트리를 연관시킨다. 그 다음에 프로세스는 블록(496)으로 진행한다. 블록(490)으로 다시 진행하여, 이것이 재명명 어레이내에 포함된 최종 엔트리인 것으로 판정이 이루어지면, 프로세스는 블록(498)으로 진행하며, 여기에서 이 인스트럭션과 아키텍처 레지스터를 연관시킨다. 재명명된 레지스터는 이 인스트럭션과 연관되지 않는다. 이후, 프로세스는 블록(496)으로 진행한다.
블록(496)에서, 결정된 엔트리 필드에 저장된 엔트리를 판독한다. 블록(500)에서, 스냅샷 어레이내에서 사용가능한 엔트리 필드를 결정한다. 다음에 블록(502)에서, 스냅샷 어레이 엔트리를 생성하고 이 인스트럭션과 이 엔트리를 연관시킨다. 스냅샷 엔트리는 재명명 어레이의 각각의 엔트리 필드로부터의 모든 상태를 포함한다. 이후 블록(504)에서, 엔트리 필드에 스냅샷 엔트리를 저장한다. 엔트리 필드는 이 인스트럭션과 연관되어 있다. 블록(506)에서, 분기 큐에 인스트럭션을 전송한다.
예시적인 실시예가 특히 도시되고 기술되었으나, 당 분야에서 통상의 지식을 가진 자라면 예시적인 실시예의 정신 및 범위로부터 벗어나지 않고 형태 및 세부사항에 있어서 각종 변경이 이루어질 수 있음이 이해될 것이다.
상기한 바와 같은 본 발명에 따르면, 수퍼스칼라 데이터 프로세싱 시스템에서, 단일 클럭 사이클 동안 다수의 물리적 레지스터의 다수의 상태가 저장되는 어레이를 설정함으로써, 특정 유형의 다수의 인스트럭션을 동시에 처리할 수 있게 된다.

Claims (9)

  1. 프로세싱 시스템을 동작시키는 방법에 있어서,
    상기 프로세싱 시스템 내에 조건 레지스터(a condition register)를 설정하는 단계와,
    상기 프로세싱 시스템의 단일 사이클(a single cycle) 동안 제 1 조건 분기 인스트럭션을 디스패치하는 단계와,
    상기 제 1 조건 분기 인스트럭션을 예측적으로(speculatively) 실행하기 이전에, 상기 조건 레지스터의 제 1 복사본(a first copy)을 저장하는 단계와,
    상기 프로세싱 시스템의 상기 단일 사이클 동안 제 2 조건 분기 인스트럭션을 디스패치하는 단계와,
    상기 제 2 조건 분기 인스트럭션을 예측적으로 실행하기 이전에, 상기 조건 레지스터의 제 2 복사본을 저장하는 단계를 포함하며,
    상기 조건 레지스터의 복수의 복사본(multiple copies)들은 상기 제 1 및 2 조건 분기 인스트럭션들이 상기 프로세싱 시스템의 단일 사이클 동안 병행적으로(concurrently) 처리될 수 있도록 병행적으로 유지되는
    프로세싱 시스템 동작 방법.
  2. 제 1 항에 있어서,
    상기 단일 사이클 동안, 제 3 인스트럭션을 디스패치하는 단계를 더 포함하는
    프로세싱 시스템 동작 방법.
  3. 제 2 항에 있어서,
    상기 제 3 인스트럭션을 디스패치한 후에 상기 제 3 인스트럭션을 예측적으로(speculatively) 실행하는 단계를 더 포함하는
    프로세싱 시스템 동작 방법.
  4. 제 1 항에 있어서,
    상기 제 1 및 제 2 인스트럭션을 디스패치하는 것에 응답하여, 제 3 인스트럭션을 디스패치하는 단계를 더 포함하는
    프로세싱 시스템 동작 방법.
  5. 제 4 항에 있어서,
    상기 제 3 인스트럭션을 디스패치한 후에 상기 제 3 인스트럭션을 예측적으로 실행하는 단계를 더 포함하는
    프로세싱 시스템 동작 방법.
  6. 제 5 항에 있어서,
    상기 디스패치된 분기 인스트럭션들 중 하나의 분기 인스트럭션의 오예측(misprediction)으로부터, 상기 모든 다른 디스패치된 인스트럭션들이 처리되고 있는 동안, 복원하는 단계를 더 포함하며,
    상기 프로세싱 시스템은 상기 복원 단계 동안 상기 모든 다른 디스패치된 인스트럭션들의 상기 처리를 계속하는
    프로세싱 시스템 동작 방법.
  7. 제 6 항에 있어서,
    상기 제 1 및 제 2 조건 분기 인스트럭션은 상기 조건 레지스터와 연관되어 있으며,
    상기 제 1 조건 분기 인스트럭션을 복수의 물리 레지스터 중 제 1 물리 레지스터와 연관시키는 단계 - 상기 조건 레지스터는 상기 제 1 조건 분기 인스트럭션에 대한 상기 복수의 물리 레지스터중 상기 제 1 물리 레지스터로 재명명됨 - 와,
    상기 제 2 조건 분기 인스트럭션을 상기 복수의 물리 레지스터 중 제 2 물리 레지스터와 연관시키는 단계 - 상기 조건 레지스터는 상기 제 2 조건 분기 인스트럭션에 대한 상기 복수의 물리 레지스터 중 상기 제 2 물리 레지스터로 재명명됨 - 와,
    상기 조건 레지스터의 복수의 복사본을 저장하기 위한 복수의 엔트리 필드를 구비한 스냅샷 어레이(a snapshot array)를 설정하는 단계와,
    상기 제 1 조건 분기 인스트럭션을 상기 스냅샷 어레이의 상기 복수의 엔트리 필드 중 제 1 엔트리 필드와 연관시키고, 상기 제 2 조건 분기 인스트럭션을 상기 스냅샷 어레이의 상기 복수의 엔트리 필드 중 제 2 엔트리 필드와 연관시키는 단계와,
    상기 제 1 조건 분기 인스트럭션을 처리하기 바로 직전에, 상기 복수의 물리 레지스터 중 상기 제 1 물리 레지스터의 상태를 나타내는 표시(a indication)를 포함하는 제 1 엔트리를 생성하는 단계 - 상기 상태는 상기 복수의 물리 레지스터 중 상기 제 1 물리 레지스터가 상기 복수의 물리 레지스터 중 상기 조건 레지스터와 연관된 가장 최근에 할당된 것인 지의 여부를 나타냄 - 와,
    상기 제 2 조건 분기 인스트럭션을 처리하기 바로 직전에, 상기 복수의 물리 레지스터 중 상기 제 2 물리 레지스터의 상태를 나타내는 표시를 포함하는 제 2 엔트리를 생성하는 단계 - 상기 상태는 상기 복수의 물리 레지스터 중 상기 제 2 물리 레지스터가 상기 복수의 물리 레지스터 중 상기 조건 레지스터와 연관된 가장 최근에 할당된 것인 지의 여부를 나타냄 - 와,
    상기 제 1 및 2 엔트리의 생성에 응답하여, 상기 복수의 엔트리 필드 중 상기 제 1 엔트리 필드 내에 상기 제 1 엔트리를 저장하고, 상기 복수의 엔트리 필드중 상기 제 2 엔트리 필드 내에 상기 제 2 엔트리를 저장하는 단계를 더 포함하는
    프로세싱 시스템 동작 방법.
  8. 프로세싱 시스템에 있어서,
    상기 프로세싱 시스템 내에 포함된 조건 레지스터와,
    상기 프로세싱 시스템의 단일 사이클 동안 제 1 조건 분기 인스트럭션을 디스패치하는 회로와,
    상기 제 1 조건 분기 인스트럭션을 예측적으로 실행하기 이전에, 상기 조건 레지스터의 제 1 복사본을 저장하는 회로와,
    상기 프로세싱 시스템의 상기 단일 사이클 동안 제 2 조건 분기 인스트럭션을 디스패치하는 회로와,
    상기 제 2 조건 분기 인스트럭션을 예측적으로 실행하기 이전에, 상기 조건 레지스터의 제 2 복사본을 저장하는 회로를 포함하며,
    상기 조건 레지스터의 복수의 복사본은, 상기 제 1 및 제 2 조건 분기 인스트럭션이 상기 프로세싱 시스템의 단일 사이클 동안 병행적으로 처리될 수 있도록 병행적으로 유지되는
    프로세싱 시스템.
  9. 제 7 항에 있어서,
    복수의 엔트리 필드를 구비한 조건 레지스터 재명명 어레이를 설정하는 단계 - 상기 복수의 엔트리 필드 각각은 상기 복수의 물리 레지스터들 중 하나의 물리 레지스터의 상태를 나타내는 표시를 저장하기 위한 상태 필드를 구비함 - 와,
    상기 복수의 엔트리 필드 각각을 상기 복수의 물리 레지스터들 중 각기 별개의 하나의 물리 레지스터와 연관시키는 단계와,
    상기 조건 레지스터를 세팅하는 조건 세팅 인스트럭션을 상기 복수의 물리 레지스터들 중 하나의 물리 레지스터와 연관시키는 단계 - 상기 조건 레지스터는 상기 조건 세팅 인스트럭션에 대해 상기 복수의 물리 레지스터들 중 상기 하나의 물리 레지스터로 재명명됨 - 와,
    상기 복수의 물리 레지스터 중 상기 하나의 물리 레지스터와 연관된 상기 복수의 엔트리 필드 중 하나의 엔트리 필드에 대한 엔트리를 생성하는 단계 - 상기 엔트리는 상기 복수의 물리 레지스터 중 상기 하나의 물리 레지스터의 상태를 포함함 - 와,
    상기 복수의 엔트리 필드 중 상기 하나의 엔트리 필드 내에 상기 엔트리를 저장하는 단계를 더 포함하는
    프로세싱 시스템 동작 방법.
KR1019980014099A 1997-05-09 1998-04-20 특정유형의인스트럭션을동시에처리할수있는방법및데이터프로세싱시스템 KR100305487B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US8/853,009 1997-05-09
US08/853,009 1997-05-09
US08/853,009 US5974535A (en) 1997-05-09 1997-05-09 Method and system in data processing system of permitting concurrent processing of instructions of a particular type

Publications (2)

Publication Number Publication Date
KR19980086627A KR19980086627A (ko) 1998-12-05
KR100305487B1 true KR100305487B1 (ko) 2001-10-29

Family

ID=25314788

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980014099A KR100305487B1 (ko) 1997-05-09 1998-04-20 특정유형의인스트럭션을동시에처리할수있는방법및데이터프로세싱시스템

Country Status (2)

Country Link
US (1) US5974535A (ko)
KR (1) KR100305487B1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6367000B1 (en) * 1998-09-30 2002-04-02 Intel Corporation Fast conversion of encoded tag bits
US7428631B2 (en) * 2003-07-31 2008-09-23 Intel Corporation Apparatus and method using different size rename registers for partial-bit and bulk-bit writes
US20070204139A1 (en) 2006-02-28 2007-08-30 Mips Technologies, Inc. Compact linked-list-based multi-threaded instruction graduation buffer
US7370178B1 (en) * 2006-07-14 2008-05-06 Mips Technologies, Inc. Method for latest producer tracking in an out-of-order processor, and applications thereof
US20080016326A1 (en) * 2006-07-14 2008-01-17 Mips Technologies, Inc. Latest producer tracking in an out-of-order processor, and applications thereof
US9201801B2 (en) * 2010-09-15 2015-12-01 International Business Machines Corporation Computing device with asynchronous auxiliary execution unit
GB2524126B (en) 2014-08-28 2016-07-27 Imagination Tech Ltd Combining paths
US20190294443A1 (en) * 2018-03-20 2019-09-26 Qualcomm Incorporated Providing early pipeline optimization of conditional instructions in processor-based systems

Citations (1)

* 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

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
EP0651321B1 (en) * 1993-10-29 2001-11-14 Advanced Micro Devices, Inc. Superscalar microprocessors
GB2287111B (en) * 1994-03-01 1998-08-05 Intel Corp Method for pipeline processing of instructions by controlling access to a reorder buffer using a register file outside the reorder buffer

Patent Citations (1)

* 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

Also Published As

Publication number Publication date
KR19980086627A (ko) 1998-12-05
US5974535A (en) 1999-10-26

Similar Documents

Publication Publication Date Title
US5758112A (en) Pipeline processor with enhanced method and apparatus for restoring register-renaming information in the event of a branch misprediction
US5611063A (en) Method for executing speculative load instructions in high-performance processors
US5634103A (en) Method and system for minimizing branch misprediction penalties within a processor
US5628024A (en) Computer architecture capable of concurrent issuance and execution of general purpose multiple instructions
US6526502B1 (en) Apparatus and method for speculatively updating global branch history with branch prediction prior to resolution of branch outcome
EP0679988B1 (en) Range finding circuits
US5535346A (en) Data processor with future file with parallel update and method of operation
US7526583B2 (en) Method and apparatus to launch write queue read data in a microprocessor recovery unit
US5619664A (en) Processor with architecture for improved pipelining of arithmetic instructions by forwarding redundant intermediate data forms
JPH0334024A (ja) 分岐予測の方法とそのための装置
WO1993022722A1 (en) A system and method for retiring instructions in a superscalar microprocessor
JPH10133873A (ja) 複数の分岐予測方式のうちの選択された1つを使用して条件分岐命令を投機的に実行するためのプロセッサおよび方法
US5644779A (en) Processing system and method of operation for concurrent processing of branch instructions with cancelling of processing of a branch instruction
US5524224A (en) System for speculatively executing instructions wherein mispredicted instruction is executed prior to completion of branch processing
US5875325A (en) Processor having reduced branch history table size through global branch history compression and method of branch prediction utilizing compressed global branch history
KR100523706B1 (ko) 단일 사이클 파이프라인 스톨을 발생하기 위한 파이프라인 프로세서 시스템 및 방법
KR100305487B1 (ko) 특정유형의인스트럭션을동시에처리할수있는방법및데이터프로세싱시스템
US6587941B1 (en) Processor with improved history file mechanism for restoring processor state after an exception
US6237085B1 (en) Processor and method for generating less than (LT), Greater than (GT), and equal to (EQ) condition code bits concurrent with a logical or complex operation
US6484256B1 (en) Apparatus and method of branch prediction utilizing a comparison of a branch history table to an aliasing table
KR100307980B1 (ko) 산술 또는 논리 연산의 수행과 동시에 조건 코드 비트를 발생하는 방법 및 시스템
US5745780A (en) Method and apparatus for source lookup within a central processing unit
US6442678B1 (en) Method and apparatus for providing data to a processor pipeline
US6871275B1 (en) Microprocessor having a branch predictor using speculative branch registers
US5784606A (en) Method and system in a superscalar data processing system for the efficient handling of exceptions

Legal Events

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

Payment date: 20040510

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee