KR100237989B1 - 슈퍼스칼라 프로세서에서 리네임 버퍼를 효율적으로 사용하기 위한 방법 및 시스템 - Google Patents

슈퍼스칼라 프로세서에서 리네임 버퍼를 효율적으로 사용하기 위한 방법 및 시스템 Download PDF

Info

Publication number
KR100237989B1
KR100237989B1 KR1019960044509A KR19960044509A KR100237989B1 KR 100237989 B1 KR100237989 B1 KR 100237989B1 KR 1019960044509 A KR1019960044509 A KR 1019960044509A KR 19960044509 A KR19960044509 A KR 19960044509A KR 100237989 B1 KR100237989 B1 KR 100237989B1
Authority
KR
South Korea
Prior art keywords
rename
instruction
rename buffer
buffer
virtual
Prior art date
Application number
KR1019960044509A
Other languages
English (en)
Other versions
KR970049491A (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 KR970049491A publication Critical patent/KR970049491A/ko
Application granted granted Critical
Publication of KR100237989B1 publication Critical patent/KR100237989B1/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/22Microcontrol or microprogram arrangements
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

Landscapes

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

Abstract

디스패치 유니트(dispatch unit)에 의해 디스패치된 인스트럭션(instrucction)에 대한 실제의 리네임 버퍼(real rename buffer)의 할당(allocation) 및 할당 해제(deallocation)을 추적하는 단계를 포함하는 디스패치 스톨(dispatch stall) 감소 방법이 개시된다. 상기 방법은 최소한 하나의 기상 리네임 버퍼(virtual rename buffer)에 할당된 인스트럭션에 리네임 버퍼 비지 신호(busy signal)을 태깅(tagging)하는 단계를 더 포함하는데, 상기 리네임 버퍼 비지 신호는 인스트럭션이 완료될 수 없음을 실행부(execution unit)에 통지한다. 슈퍼스칼라 프로세서(superscalar processor)내에서 리네임 버퍼를 사용하기 위한 효율적인 시스템은 다수의 리네임 버퍼, 상기 다수의 리네임 버퍼에 결합된 디스패치 유니트, 및 상기 디스패치 유니트 및 상기 다수의 리네임 버퍼에 결합된 할당/할당 해제 테이블을 포함한다. 또한, 상기 테이블은 다수의 실제 리네임 버퍼 슬롯(slot) 및 최소한 하나의 가상 리네임 버퍼 슬롯을 포함한다. 또한, 리네임 비지 신호가 상기 최소한 하나의 가상 리네임 버퍼 슬롯에 할당된 인스트럭션에 대해 제공된다.

Description

슈퍼스칼라 프로세서에서 리네임 버퍼를 효율적으로 사용하기 위한 방법 및 시스템
본 발명은 슈퍼스칼라 프로세서에 관한 것으로, 특히 슈퍼스칼라 프로세서내에서 리네임 버퍼의 증가된 효율적인 사용에 관한 것이다.
더 빠르고 또 더 강력한 컴퓨터 시스템의 계속적인 개발 과정에서, 축소 인스트럭션 세터 컴퓨터(Reduced Instruction Set Computer: RISC) 프로세서로서 알려진 대형 컴퓨터가 사용되어 왔다. RISC 프로세서 분야에서의 증가된 진보는 슈퍼스칼라 프로세서의 개발을 가져왔다. 그 명칭이 의미하는 바와 같이 슈퍼스칼라 프로세서는 전통적인 스칼라 마이크로프로세서에서 흔히 찾을 수 없는 기능 (function)들을 수행한다. 이러한 기능에는 프로그램 순서에 따르지 않고 비순서로 인스트럭션을 수행할 수 있는 능력이 포함된다. 비록, 인스트럭션들이 순서에 따르지 않고 발생된다 하더라도, 그 실행 결과는 프로그램 순서에 따라 발생된 것으로 나타나며, 따라서 적절한 데이터 코히어런시(data coherency)가 유지될 수 있게 된다.
비순서 실행을 지원하기 위해 슈퍼스칼라 프로세서에 포함되는 전형적인 구성소자는 리네임 버퍼이다. 그 명칭이 의미하는 바와 같이, 리네임 버퍼는 고정 소수점 유니트(fixed point unit) 등의 실행부가 결과를 가입할 수 없는 범용 목적 레지스터(general purpose register)와 같은 위치가 연산수(operand)/결과용 리네임값에 할당될 수 있도록 메모리 버퍼를 리네임하는 것을 디스패치 유니트에 허용한다. 불행하게도, 프로세서 시스템은 포함할 수 있는 리네임 버퍼의 수가 제한된다. 따라서, 시스템의 모든 실행부들은 비지 상태가 아니지만 리네임 버퍼가 비지 상태인 때에는 성능이 떨어지는 결과가 될 수 있다. 상기와 같은 상황에서는 어떠한 리네임 버퍼도 사용 가능하지 않기 때문에 실행부가 인스트럭션에 대한 기능 동작을 적절히 수행할 수 있는 경우에도 디스패치 유니트는 인스트럭션을 디스패치하지 않게되는데, 이는 즉 디스패치 유니트가 스톨 상태(stall state)로 된다는 것을 의미한다.
따라서, 상기와 같은 문제를 효율적이고 효과적으로 극복하고 또 전체 프로세서 성능을 개선시키도록 리네임 버퍼 부족에 기인하여 발생되는 디스패치 유니트의 스톨 상태의 수를 감소시키는 시스템이 요구된다.
따라서, 본 발명은 상기 요구를 만족시키며, 슈퍼스칼라 프로세서 내에서 리네임 버퍼를 효율적으로 사용하고 또 디스패치 스톨을 감소시키는 방법 및 시스템을 제공한다. 본 방법의 특징으로, 디스패치 스톨을 감소시키는 방법은 디스패치 유니트에 의해 디스패치된 인스트럭션에 대한 실제의 리네임 버퍼의 할당 및 할당 해제를 추적하는 단계를 포함하며, 실제의 리네임 버퍼가 이미 할당된 때에는 인스트럭션의 할당을 위해 최소한 하나의 가상 리네임 버퍼를 제공하는 단계를 포함한다. 또한, 상기 방법은 최소한 하나의 가상 리네임 버퍼에 할당된 인스트럭션을 리네임 버퍼 비지 신호로 태깅하는 단계를 더 포함하는데, 리네임 버퍼 비지 신호는 인스트럭션이 완료될 수 없다는 사실을 프로세서의 실행부에 통지한다.
본 시스템의 특징으로, 슈퍼스칼라 프로세서 내에서의 리네임 버퍼의 효율적 사용을 위해 본 시스템은 다수의 리네임 버퍼, 다수의 리네임 버퍼에 결합된 디스패치 유니트, 및 디스패치 유니트 및 다수의 리네임 버퍼에 결합된 할당/할당 해제 테이블을 포함한다. 또한, 테이블은 다수의 실제의 리네임 버퍼 슬롯 및 최소한 하나의 가상 리네임 버퍼 슬롯을 포함한다. 또한, 리네임 비지 신호가 테이블을 통하여 최소한 하나의 가상 리네임 버퍼 슬롯에 할당된 인스트럭션에 대해 제공된다.
본 발명은 슈퍼스칼라 프로세서의 성능을 개선시키기 위한 간단하고 효율적인 시스템을 제공한다. 상기와 같은 효율성은 실제의 리네임 버퍼와 관련하여 가상 리네임 버퍼의 사용을 효율적으로 제어한 결과이다. 본 발명에 따른 적절한 사용을 통하여, 가상 리네임 버퍼는 모든 실제 리네임 버퍼가 이미 할당된 후에도 실행부가 계속 디스패치하는 것을 허용한다. 따라서, 실제의 리네임 버퍼의 부족한 기이한 디스패치 유니트 내에서의 스톨 상태의 수를 줄임으로써 프로세서 성능이 개선된다.
제1도는 본 발명에 따른 컴퓨터 시스템의 블록도.
제2도는 종래 기술의 할당/할당 해제 테이블의 예.
제3도 내지 제5도는 본 발명에 따라 가상 리네임 버퍼를 포함하는 할당/할당 해제 테이블의 도시도.
제6도는 본 발명에 따라 가상 리네임 버퍼를 포함하는 할당/할당 해제의 블록 흐름도의 도시도.
* 도면의 주요부분에 대한 부호의 설명
10 : 프로세서 11 : 시스템 버스
12 : 버스 인터페이스 유니트 14 : 인스트럭션 캐쉬
16 : 데이터 캐쉬 18 : 시퀀스 유니트
20 : 분기 유니트 22 : 고정 소수점 유니트 A,“FXUA”
24 : 고정 소수점 유니트 B,“FXUB”
26 : 복잡한 고정 소수점 유니트,“CFXU”
28 : 로드/저장 유니트,“LSU” 30 : 부동 소수점 유니트,“FPU”
32 : 범용 목적 아키텍쳐 레지스터 34 : 고정 소수점 리네임 버퍼
36 : 부동 소수점 아키텍쳐 레지스터 38 : 부동 소수점 리네임 버퍼
40 : 특정 목적 레지스터 42 : 캐리 비트 레지스터
본 발명의 상기 및 다른 특징적 장점들이 다음의 상세한 설명과 첨부된 도면을 참조하면 보다 명확하게 이해될 것이다.
본 발명은 디스패치 스톨을 감소시키기 위하여 슈퍼스칼라 프로세서 내에서 가상 리네임 버퍼를 사용하는 방법에 관한 것이다. 다음의 설명은 당해 기술 분야의 통상의 숙련자들이 본 발명을 이해 및 사용할 수 있도록 하기 위하여 제시되며, 특허 출원 및 그에 요구되는 사항으로서 제공된다. 양호한 실시예 및 포괄 원리(generic principle)에 대한 다양한 변형과 본 명세서에서 설명되는 다양한 특징이 당해 기술 분야의 숙련자들에게는 쉽게 이해될 것이다.
제1도는 본 발명에 따라 정보를 프로세싱하기 위한 프로세서 시스템(10)의 블록도이다. 양호한 실시예에서 프로세서(10)은 텍사스주 오스틴의 IBM 코포레이션에 의해 제공되는 POWER PCTM프로세서와 같은 단일 집적 회로 슈퍼스칼라 마이크로프로세서이다. 따라서, 본 명세서에서 다음에 더 검토되는 바와 같이, 프로세서(10)은 다양한 유니트, 레지스터, 버퍼, 메모리 및 다른 부분들을 포함하는데, 이들 모두는 직접 회로로 형성된다. 또한, 양호한 실시예에서는 프로세서(10)이 축소 인스트럭션 세트 컴퓨팅(“RISC”) 기법에 따라 작동한다. 제1도에 도시된 바와 같이, 시스템 버스(11)은 프로세서(10)의 버스 인터페이스 유니트(“BIU”,12)에 접속된다. BIU(12)는 프로세서(10)과 시스템 버스(11) 사이의 정보 전송을 제어한다.
BIU(12)는 프로세서(10)의 인스트럭션 캐쉬(instruction cache, 14) 및 데이터캐쉬(16)에 접속된다. 인스트럭션 캐쉬(14)는 시퀀서 유니트(sequencer unit, 18)에 인스트럭션을 출력한다. 인스트럭션 캐쉬(14)로부터의 상기와 같은 인스트럭션에 응하여, 시퀀서 유니트(18)은 프로세서(10)의 다른 실행 회로에 인스트럭션을 선택적으로 출력한다.
디스패치 유니트(46) 및 종료 유니트(completion unit, 48)의 실행부를 포함하는 시퀀서 유니트(18)에 덧붙여, 양호한 실시예에서의 프로세서(10)의 실행 회로는 이른바 분기 유니트(branch unit, 20), 고정 소수점 유니트 A(“FXUA”, 22), 고정 소수점 유니트 B(“FXUB”, 24), 복잡한 고정 소수점 유니트(Complex FiXed point Unit: “CFXU”, 26), 로드/저장 유니트(load/store unit: “LSU”, 28) 및 부동 소수점 유니트(Floating Point Unit: “FPU”, 30)과 같은 다수의 실행부를 포함한다. FXUA(22) 및 FXUB(24),CFXU(26) 및 LSU(28)들은 자신의 소스 연산자 정보(source operand information)를 범용 목적 아키텍쳐 레지스터(General Purposearchitectural Registers: “GPRs”, 32) 및 고정 소수점 리네임 버퍼(34)로부터 입력한다. 또한, FXUA(22) 및 FXUB(24)에는 “캐리비트(carry bit)”가 캐리 비트(“CA”) 레지스터(42)로부터 입력된다. FXUA(22), FXUB(24), CFXU(26) 및 LSU(28)들은 그들 연산의 결과[목적 연산수 정보(destination operand information)]를 저장을 위해 고정 소수점 리네임 버퍼(34) 내의 선택된 엔트리(entry)에 출력한다. 또한, CFXU(26)은 특정 목적 레지스터(Special Purpose Registers: “SPRs”, 40)로부터 소스 연산수 정보를 입력하고 또 상기 레지스터에 목적 연산수 정보를 출력한다.
FPU(30)은 자신의 소스 연산수 정보를 부동 소수점 아키텍처 레지스터(Floating Point architectural Register: “FPRs”, 36) 및 부동 소수점 리네임 버퍼(38)로부터 입력한다. FPU(30)은 자신의 연산 결과(목적 연산수 정보)를 부동 소수점 리네임 버퍼(38)의 선택된 엔트리에 저장하기 위해 출력한다.
시퀀서 유니트(18)은 GPRs(32) 및 FPRs(36)에/으로부터 정보를 출력 및 입력한다. 분기 유니트(20)에는 인스트럭션 및 프로세서(10)의 현재 상태를 나타내는 신호가 시퀀서 유니트(18)로부터 입력된다. 상기와 같은 인스트럭션 및 신호에 응하여, 분기 유니트(20)은 프로세서(10)에 의한 실행용 인스트럭션 시퀀스를 저장하는 적절한 메모리 어드레스를 나타내는 신호를 [시퀀서 유니트(18)에] 출력한다. 분기 유니트(20)으로부터의 상기와 같은 신호에 응하여, 시퀀서 유니트(18)은 표시된 인스트럭션 시퀀스를 인스트럭션 캐쉬(14)로부터 입력한다. 만일 하나 이상의 인스트럭션 시퀀스가 인스트럭션 캐쉬(14)에 저장되지 않았다면, 인스트럭션 캐쉬(14)는 시스템 버스(11)에 접속된 시스템 메모리(39)로부터 상기 인스트럭션을 [BIU(12) 및 시스템 버스(11)을 통하여] 입력한다.
인스트럭션 캐쉬(14)로부터 입력된 인스트럭션에 응하여, 시퀀서 유니트(18)은 디스패치 유니트(46)을 통하여 실행부(20, 22, 24, 26, 28 및 30) 가운데 선택된 실행부에 인스트럭션을 선택적으로 디스패치 한다. 각각의 실행부는 인스트럭션들 가운데 하나 이상의 특정 클래스 인스트럭션(particular class instruction)을 실행한다. 예를 들어, FXUA(22) 및 FXUB(24)는 가산, 감산, ANDing, ORing 및 XORing과 같은 소스 연산수(source operand)에 대한 제1 클래스 고정 소수점 수학적 연산(mathematical operation)을 실행한다. CFXU(26)은 고정 소수점 승산(multiplication) 및 제산(division)과 같은 소스 연산수에 대한 제2 클래스 고정 소수점 연산을 실행한다. FPU(30)은 부동 소수점 승산 및 제산과 같은 소스 연산수에 대한 부동 소수점 연산을 실행한다.
프로세서(10)은 다양한 실행부(20, 22, 24, 26, 28 및 30)들에서 동시에 다수의 인스트럭션을 프로세싱함으로써 고성능을 이룰 수 있다. 따라서, 각각의 인스트럭션은 각각의 다른 인스트럭션의 실행 단계와 병렬로 실행될 수 있는 단계적 시퀀스(sequence of stage)로서 프로세싱 된다. 상기와 같은 기법은 “파이프라이닝(pipelining)”이라고 불린다. 양호한 실시예의 중요한 특징으로, 인스트럭션은 페치(fetch), 디코드, 디스패치, 실행, 완료 및 재기입(writeback)이라 불리는 6 단계로서 통상 프로세싱 된다.
양호한 실시예에서, 인스트럭션 프로세싱의 각 단계를 종료시키기 위해 각각의 인스트럭션은 하나의 머신 싸이클(machine cycle)를 요구한다. 그럼에도 불구하고, 몇몇 인스트럭션[예를 들어, CFXU(26)에 의해 실행되는 복잡한 고정 소수점 인스트럭션]들은 하나 이상의 싸이클을 요구할 수 있다. 따라서, 특정 인스트럭션의 실행과 선행 인스트럭션의 종료에 요구되는 가변 시간에 응하는 종료 단계 사이에 가변 지연(variable delay)이 발생할 수 있다.
로드 인스트럭션(Load instruction)에 응하여, LSU(28)은 데이터 캐쉬(16)으로부터 정보를 입력하여 상기 정보를 리네임 버퍼(34 및 38) 가운데 선택된 리네임 버퍼에 복사한다. 만일 상기 정보가 데이터 캐쉬(16)에 저장되지 않았다면, 데이터캐쉬(16)은 시스템 버스(11)에 접속된 시스템 메모리(39)로부터 상기 정보를[BIU(12) 및 시스템 버스(11)을 통하여] 입력한다. 또한, 데이터 캐쉬(16)은 [BIU(12) 및 시스템 버스(11)을 통하여] 정보를 자신으로부터 시스템 버스(11)에 접속된 시스템 메모리(39)에 출력할 수 있다. 저장 인스트럭션(Store instruction)에 응하여, LSU(28)은 GPRs(32) 및 FPRs(36) 가운데 선택된 하나로부터 정보를 입력하여 상기 정보를 데이터 캐쉬(16) 또는 메모리에 복사한다.
실행부, 예를 들어 FXUA(22), FXUB(24), 리네임 버퍼(34) 및 디스패치 유니트(46)들 사이의 상호작용의 예로서, 인스트럭션 “가산c, a, b(add c, a, b)”가 디스패치 유니트(46)으로부터 FXUA(22)에 디스패치 된다. 디스패치 유니트(46)은 본 기술 분야의 숙련된자들이 잘 이해하고 있는 바와 같이 FXUA(22)에 연산수용 데이터를 복구하는 장소를 알려주기 위하여 FXUA(22)에 연산수 및 “b”에 대한 택(tag)을 제공한다. 예를 들어, 6개의 리네임 버퍼를 갖는 시스템에서 디스패치 유니트(46)은 리네임 버퍼 1에 위치된 “a”에 대한 연산수를 6비트 택 100000으로 적절히 태깅할 수 있다. 그 다음으로, 010000인 택이 연산수 “b”가 리네임 버퍼 2 내에 있다는 것을 나타내도록 적절히 사용될 수 있다. FXUA(22)가 GPRs(32)에 기입하지 않기 때문에, 디스패치 유니트(46)은 인스트럭션의 결과가 리네임 버퍼 3 내에 위치하도록 001000과 같은 연산 타겟(target)을 위한 리네임 버퍼 택을 사용하여야만 한다.
디스패치 유니트(46)이 연산수와 연산 결과의 위치를 구별하기 위하여 리네임 버퍼(34 및 38)을 적절히 사용하기 때문에, 할당/할당 해제 테이블이 어떠한 버퍼라 리네임되었는지를 추적하기 위하여 양호하게 사용된다. 예를 들어, 제2도는 대표적으로 6개의 리네임 버퍼를 갖는 슈퍼스칼라 프로세서 시스템에 대해 프로세서 내에 저장되는 적절한 할당/할당 해제 테이블을 도시한다. 예로서, 테이블(70)은 인스트럭션 식별자(instruction identifier: IDN), GPR 식별자(GPR), 리네임 레지스터 식별자(리네임) 및 유효 필드(valid fiend: 유효)를 위한 필드를 각각 포함하며 각각의 리네임 버퍼에 대해 하나씩인 6개의 슬롯을 포함한다. 리네임 버퍼 테이블(70)을 사용함으로써, 디스패치 유니트(46)은 어떠한 리네임 버퍼가 사용되었고 또 어떠한 리네임 버퍼가 사용 가능한가에 대해 정확하게 추적할 수 있다. 또한, 리네임 버퍼들을 갖는 GPR들 사이의 관계가 어떠한 레지스터 또는 리네임 버퍼가 후속 인스트럭션에 대한 적절한 데이터를 갖고 있는가를 식별하기 위하여 유지된다.
전형적으로, 디스패치 유니트(46)은 일단 모든 리네임 버퍼(34)들이 할당되었다면 리네임 버퍼(34)를 할당하는 것을 중단한다. 불행하게도, 실행부는 모든 리네임 버퍼(34)들이 꽉 찬 동안에는 아이들 상태(idle)일 수 있다. 따라서, 아이들 실행부에 의해 실행이 가능한 인스트럭션들은 디스패치 유니트(46)에 의한 디스패칭 결여에 기인하여 지연된다.
따라서, 본 발명은 시스템의 모든 리네임 버퍼들이 사용중인 때에도 실행부에 인스트럭션을 디스패칭하는 것을 허용하는 방법 및 시스템을 제공한다. 제3도에 도시된 바와 같이, 가상 리네임 버퍼용 추가 슬롯(extra slot)들이 할당/할당 해제 테이블(70′)을 형성하도록 부가된다. 할당/할당 해제 테이블(70′) 내의 상기 슬롯에 대해 데이터를 부가함으로써, 사용 가능한 리네임 버퍼의 부족에 기인한 디스패치의 스톨이 크게 줄어든다.
예로서, 제4도 및 제5도는 테이블(70′)이 본 발명에 따라 어떻게 사용되었는가를 도시한다. 제4도에 도시된 바와 같이, 만일 테이블의 실제 리네임 버퍼 내에 사용 가능한 빈 슬롯이 있다면, 각각의 디스패치된 인스트럭션들이 실제의 리네임 버퍼에 로딩된다. 예를 들어, 식별자 0(IDN 0)을 갖는 인스트럭션이 lwzx G18, OP1, OP2[목표 레지스터 GPR(18)의 위치 내로 메모리로부터 워드를 로딩하기 위한 효과 어드레스를 발생하기 위하여 연산수 OP1 및 OP2를 가산하는 제로 인덱싱된 것(zero indexed) 및 로드 워드(load word)]를 포함한다고 가정하자. 테이블이 초기에 비어있고 또 어떠한 다른 실제의 리네임 버퍼도 할당되어 있지 않기 때문에, G 18이 리네임 버퍼 0, R0으로 리네임 된다. 따라서, 인스트럭션에 대한 타겟 택은 100000 비트 시퀀스에 의해 적절히 표현된다. 그러나, 본 발명에 따르면, 추가 비트, 리네임 비지 비트들이 역시 타겟 택에 포함될 것이다.
제4도에 도시된 데이터를 사용함으로써, 일단 실제의 리네임 버퍼들이 모두 할당되었다며, 다음 인스트럭션, 즉 인스트럭션 6(IDN 6)이 가상의 리네임 버퍼 슬롯, 예를 들어 가상 리네임 버퍼 6, R6에 할당될 것이다. 양호한 실시예에서, 가상 리네임 버퍼는 실제로 존재하지는 않으나, 만일 어떠한 연산수 충돌(operand conflict)도 존재하지 않는다면 인스트럭션이 적절한 실행부에 디스패치 될 수 있도록 가상 리네임 버퍼가 인스트럭션에 할당된다. 인스트럭션이 가상 리네임 버퍼에 할당되었기 때문에, 인스트럭션에 대한 리네임 비지 비트가 세팅된다. 따라서, IDN 6에 대한 비트 택 시퀀스의 적절한 표현은 1100000을 포함하는데, 최상의 비트가 세팅된 리네임 비지 비트를 나타낸다. 따라서 실행부는 리네임 비지 비트용 세팅된 값을 인식하여 인스트럭션이 즉시 실행될 수 있으나 리네임 비지 비트가 리셋될 때 까지는 종료될 수 없다고 판정한다.
제5도는 인스트럭션에 대한 리네임 비지 비트가 어떻게 리셋되는가를 도시한다. 도시된 바와 같이, 일단 인스트럭션, 즉 인스트럭션 0이 종료되면, 상기 인스트럭션은 테이블(70′)으로부터 할당 해제된다. 이러한 시점에서, 실제의 리네임 버퍼, R0이 테이블의 가상 리네임 버퍼 부분 내의 제1 인스트럭션 엔트리, 즉 IDN 6에 의해 사용 가능해 진다. 그 다음으로, 인스트럭션 IDN 6이 테이블의 실제 리네임 버퍼 부분 내로 위치된다. 이와 동시에, 리네임 사용가능 신호(rename available signal)가 적절한 실행부에 대해 인스트럭션에 대한 리네임 버퍼가 이제는 실제 리네임 버퍼임을 알리도록 신호된다. 실행부 사이에서 적절한 IDN, 예를 들어 IDN 6을 탐색하는 것은 적절한 실행부에 대해 리네임 사용가능 신호를 제공한다.
제6도는 본 발명에 따른 가상 리네임 버퍼를 포함하는 리네임 버퍼의 할당/할당 해제를 도시하는 흐름도를 나타낸다. 인스트럭션이 단계(100)에서 수신된 때, 어떠한 실제의 리네임 버퍼가 인스트럭션의 할당을 위해 사용 가능한가의 여부에 대한 판정이 단계(102)를 통하여 행해진다. 만일 실제의 리네임 버퍼가 사용 가능한다면, 인스트럭션은 단계(104)를 통하여 실제의 리네임 버퍼에 할당된다. 만일 어떠한 실제의 리네임 버퍼도 사용 가능하지 않는 경우, 즉 테이블(70′)의 실제 리네임 버퍼 부분이 꽉 찬 상태라면, 가상 리네임 버퍼가 사용 가능한가의 여부에 대한 결정의 단계(106)을 통하여 행해진다. 만일 어떠한 가상 리네임 버퍼도 사용 가능하지 않다며, 가상 리네임 버퍼가 사용 가능할 때까지 디스패치 유니트는 단계(108)을 통하여 스톨 상태로 된다. 가상 리네임 버퍼가 사용 가능한 때, 가상 리네임 버퍼에는 인스트럭션이 할당되며, 또 인스트럭션에 대한 리네임 비지 신호가 단계(110)을 통하여 세팅된다.
그 다음으로 할당/할당 해제 테이블(70′)의 실제 리네임 버퍼 부분의 현제 인스트럭션이 종료되었는가의 여부에 대한 판정이 단계(112)를 통하여 행해진다. 종료한 때, 현재의 인스트럭션은 테이블(70′)의 실제 리네임 버퍼 부분으로부터 단계(114)를 통하여 할당 해제된다. 그 다음으로, 실제 리네임 버퍼 부분에 할당된 다음 인스트럭션이 존재하는가의 여부에 대한 판정이 단계(116)을 통하여 행해진다. 만일 존재한다면, 다음 인스트럭션이 단계(118)을 통하여 현재의 인스트럭션이 된다. 프로세스는 가상 리네임 버퍼 내의 인스트럭션이 존재하는가의 여부에 대한 판정을 단계(120)에서 행함으로써 계속된다.
가상 리네임 버퍼에 할당된 인스트럭션이 존재하는 때, 즉 단계(120)이 포지티브(positive, “예”)인 때, 인스트럭션은 가상 리네임 부분으로부터 할당 해제되어 단계(122)를 통하여 실제의 리네임 버퍼에 할당되는데, 상기 실제의 리네임 버퍼는 단계(114)에서 종료된 현재 인스트럭션으로부터 할당 해제된 것이다. 또한, 인스트럭션이 실제 리네임 버퍼 부분에 할당된 때에는 리네임 사용가능 신호가 단계(122)를 통하여 적절한 실행부에 역시 전송되며, 또 프로세스는 단계(122)를 통하여 계속된다. 만일 단계(120)이 네가티브(negative, “아니오”)라면, 어떠한 인스트럭션도 가상의 리네임 버퍼 부분 내에 있지 않으며, 프로세스는 단계(112)로 복귀한다. 어떠한 다음 인스트럭션도 존재하지 않는 때에는 단계(116)을 통하여 결정된 바와 같이 프로세스가 종료된다.
따라서, 테이블(70′)을 사용하는 전체 동작은 다음과 같이 요약될 수 있다. 만일 비어 있는 슬롯이 사용 가능하다면, 인스트럭션들은 테이블(70′)의 실제의 리네임 버퍼 부분 내로 로딩된다. 각각의 인스트럭션은 실제의 리네임 버퍼로부터 종료된다. 모든 실제의 리네임 버퍼 슬롯들이 꽉 찬 때에는 인스트럭션이 가상의 리네임 버퍼 부분 내로 로딩된다. 가상의 리네임 버퍼 부분이 역시 꽉 찬 때에는 디스패치 스톨링(dispatch stalling) 문제가 발생하나, 테이블의 가상 리네임 버퍼 부분의 슬롯 수는 비교적 비용이 적게 들면서 상기 문제를 해결하도록 증가될 수 있다. 리네임 비지 비트는 가상의 리네임 버퍼 부분 내의 각각의 유효 인스트럭션에 대해 세팅된다. 가상의 리네임 버퍼 부분 내의 각각의 인스트럭션은 실제의 리네임 버퍼 부분 내의 인스트럭션의 종료시 실세의 리네임 버퍼 부분 내로 로딩된다. 일단 실제의 리네임 버퍼 부분 내로 로딩되면, 실제의 리네임 버퍼가 이제는 인스트럭션을 위해 유효하다는 사실을 특정 실행부에 알려주기 위하여 리네임 사용가능 신호가 신호값을 갖게 되며, 자신의 타겟 연산수에 대한 실제의 리네임 버퍼를 할당하였기 때문에 인스트럭션이 종료될 수 있다.
비록 본 발명이 도시된 실시예에 따라 설명되었지만, 본 기술 분야의 통상의 숙련자는 상기 실시예를 변형할 수 있으며, 그와 같은 변형들은 본 발명의 교시 및 범위에 속할 것이라는 사실을 알 수 있을 것이다. 예를 들어, 비록 리네임 비지 비트가 1 비트로서 구별되었지만, 원한다면 다수의 비트들이 본 발명으로부터 벗어나지 않고 사용될 수 있다. 또한, 비록 상기 실시예들은 특정 수의 리네임 버퍼 및 가상 리네임 버퍼를 사용하였지만, 선택된 수는 단지 설명의 편의상 사용되었으며, 이러한 사실이 본 발명을 제한하려는 의도는 아니다. 따라서, 통상의 숙련자에 의해 많은 변형들이 본 발명의 교시 및 범위로부터 벗어나지 않고서 행해질 수 있는데, 이러한 범위는 다음의 특허 청구 범위에 의해 정해진다.

Claims (10)

  1. 디스패치 유니트(dispatch unit)에 결합된 다수의 리네임 버퍼(rename buffer)를 더 포함하는 슈퍼스칼라 프로세서(superscalar processor)의 상기 디스패치 유니트의 스톨(stall)을 감소시키기 위한 방법에 있어서, 상기 디스패치 유니트에 의해 디스패치된 인스트럭션(instruction)에 대한 실제 리네임 버퍼(real rename buffer)의 할당(allocation)/할당 해제(deallocation)를 추적(tracking)하는 단계; 상기 실제 리네임 버퍼가 할당된 때에 인스트럭션의 할당을 위해 최소한 하나의 가상 리네임 버퍼(virtual rename buffer)를 제공하는 단계; 및 리네임 버퍼 비지 신호(busy signal)로 상기 최소한 하나의 가상 리네임 버퍼에 할당된 인스트럭션을 태깅(tagging)하는 단계-상기 리네임 버퍼 비지 신호는 상기 인스트럭션이 종료될 수 없음을 상기 프로세서의 실행부(execution unit)에 가리켜줌-을 포함하는 디스패치 유니트의 스톨 감소 방법.
  2. 제1항에 있어서, 인스트럭션이 종료되어 상기 실제 리네임 버퍼로부터 할당 해제된 때에 상기 최소한 하나의 가상 리네임 버퍼 내의 상기 인스트럭션이 하나의 실제 리네임 버퍼에 할당되는 디스패치 유니트의 스톨 감소 방법.
  3. 제2항에 있어서, 상기 할당된 실제 리네임 버퍼는 상기 종료된 인스트럭션으로부터 할당 해제된 상기 실제 리네임 버퍼인 디스패치 유니트의 스톨 감소 방법.
  4. 제2항에 있어서, 상기 최소한 하나의 가상 리네임 버퍼 내의 상기 인스트럭션이 상기 실제 리네임 버퍼에 할당되는 때에 리네임 사용가능 신호(rename available signal)를 상기 실행부에 제공하는 단계를 더 포함하는 디스패치 유니트의 스톨 감소 방법.
  5. 제4항에 있어서, 상기 리네임 사용가능 신호가 수신된 때에 상기 인스트럭션이 종료될 수 있는 디스패치 유니트의 스톨 감소 방법.
  6. 슈퍼스칼라 프로세서 내에서 리네임 버퍼를 효율적으로 사용하기 위한 시스템에 있어서, 다수의 리네임 버퍼; 상기 다수의 리네임 버퍼에 결합된 디스패치 유니트; 및 상기 디스패치 유니트 및 상기 다수의 리네임 버퍼에 결합되며, 다수의 실제 리네임 버퍼 슬롯(real rename buffer slot) 및 최소한 하나의 가상 리네임 버퍼 슬롯을 포함하고, 또 상기 최소한 하나의 가상 리네임 버퍼 슬롯에 할당된 인스트럭션에 대해 리네임 비지 신호를 지공하는 할당/할당 해제 테이블을 포함하는 리네임 버퍼 사용 시스템.
  7. 제6항에 있어서, 상기 시스템이 상기 최소한 하나의 가상 리네임 버퍼슬로에 인스트럭션을 할당하는 때에 상기 디스패치 유니트는 상기 인스트럭션을 실행부에 디스패치하는 리네임 버퍼 사용 시스템.
  8. 제7항에 있어서, 상기 실행부는 상기 인스트럭션에 대해 동작하는 리네임 버퍼 사용 시스템.
  9. 제8항에 있어서, 상기 테이블이 상기 인스트럭션을 실제 리네임 버퍼에 할당하는 때에 상기 시스템은 상기 실행부에 리네임 사용가능 신호를 신호하는 리네임 버퍼 사용 시스템.
  10. 제9항에 있어서, 일단 상기 리네임 사용가능 신호가 수신되면, 상기 실행부는 상기 인스트럭션을 종료하는 리네임 버퍼 사용 시스템.
KR1019960044509A 1995-12-14 1996-10-08 슈퍼스칼라 프로세서에서 리네임 버퍼를 효율적으로 사용하기 위한 방법 및 시스템 KR100237989B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/572,458 US5758117A (en) 1995-12-14 1995-12-14 Method and system for efficiently utilizing rename buffers to reduce dispatch unit stalls in a superscalar processor
US08/572,458 1995-12-14
US8/572,458 1995-12-14

Publications (2)

Publication Number Publication Date
KR970049491A KR970049491A (ko) 1997-07-29
KR100237989B1 true KR100237989B1 (ko) 2000-01-15

Family

ID=24287889

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019960044509A KR100237989B1 (ko) 1995-12-14 1996-10-08 슈퍼스칼라 프로세서에서 리네임 버퍼를 효율적으로 사용하기 위한 방법 및 시스템

Country Status (3)

Country Link
US (1) US5758117A (ko)
JP (1) JP3045964B2 (ko)
KR (1) KR100237989B1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6134645A (en) * 1998-06-01 2000-10-17 International Business Machines Corporation Instruction completion logic distributed among execution units for improving completion efficiency
US6311267B1 (en) * 1998-11-20 2001-10-30 International Business Machines Corporation Just-in-time register renaming technique
US6446194B1 (en) 1999-07-08 2002-09-03 International Business Machines Corporation Virtual register renamed instruction issue for execution upon virtual/physical rename buffer wrap around detection signaling available physical register
US7669039B2 (en) * 2007-01-24 2010-02-23 Qualcomm Incorporated Use of register renaming system for forwarding intermediate results between constituent instructions of an expanded instruction
JP4830164B2 (ja) * 2009-07-07 2011-12-07 エヌイーシーコンピュータテクノ株式会社 情報処理装置及びベクトル型情報処理装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4574349A (en) * 1981-03-30 1986-03-04 International Business Machines Corp. Apparatus for addressing a larger number of instruction addressable central processor registers than can be identified by a program instruction
JPS593642A (ja) * 1982-06-30 1984-01-10 Fujitsu Ltd 制御レジスタ処理方式
JPH03150637A (ja) * 1989-11-08 1991-06-27 Oki Electric Ind Co Ltd パイプライン対応のレジスタ割付け方式
US5303358A (en) * 1990-01-26 1994-04-12 Apple Computer, Inc. Prefix instruction for modification of a subsequent instruction
US5280615A (en) * 1990-03-23 1994-01-18 Unisys Corporation Out of order job processing method and apparatus
US5293631A (en) * 1991-08-06 1994-03-08 Hewlett-Packard Company Analysis and optimization of array variables in compiler for instruction level parallel processor
US5386562A (en) * 1992-05-13 1995-01-31 Mips Computer Systems, Inc. Circular scheduling method and apparatus for executing computer programs by moving independent instructions out of a loop
DE69320991T2 (de) * 1992-12-31 1999-01-28 Seiko Epson Corp System und verfahren zur änderung der namen von registern
US5546554A (en) * 1994-02-02 1996-08-13 Sun Microsystems, Inc. Apparatus for dynamic register management in a floating point unit
EP0676691A3 (en) * 1994-04-06 1996-12-11 Hewlett Packard Co Device for saving and restoring registers in a digital computer.

Also Published As

Publication number Publication date
JPH09179737A (ja) 1997-07-11
US5758117A (en) 1998-05-26
KR970049491A (ko) 1997-07-29
JP3045964B2 (ja) 2000-05-29

Similar Documents

Publication Publication Date Title
US5611063A (en) Method for executing speculative load instructions in high-performance processors
EP0762270B1 (en) Microprocessor with load/store operation to/from multiple registers
US5809268A (en) Method and system for tracking resource allocation within a processor
US6728866B1 (en) Partitioned issue queue and allocation strategy
KR100188502B1 (ko) 처리 시스템 및 그의 동작 방법
US5559976A (en) System for instruction completion independent of result write-back responsive to both exception free completion of execution and completion of all logically prior instructions
RU2142157C1 (ru) Способ функционирования системы обработки
US5898864A (en) Method and system for executing a context-altering instruction without performing a context-synchronization operation within high-performance processors
US5872948A (en) Processor and method for out-of-order execution of instructions based upon an instruction parameter
JP3207124B2 (ja) カウント/リンク・レジスタ変更命令の投機実行をサポートする方法及び装置
US5802340A (en) Method and system of executing speculative store instructions in a parallel processing computer system
US6708267B1 (en) System and method in a pipelined processor for generating a single cycle pipeline stall
US5678016A (en) Processor and method for managing execution of an instruction which determine subsequent to dispatch if an instruction is subject to serialization
US5812812A (en) Method and system of implementing an early data dependency resolution mechanism in a high-performance data processing system utilizing out-of-order instruction issue
KR100237989B1 (ko) 슈퍼스칼라 프로세서에서 리네임 버퍼를 효율적으로 사용하기 위한 방법 및 시스템
US5765017A (en) Method and system in a data processing system for efficient management of an indication of a status of each of multiple registers
US6041167A (en) Method and system for reordering instructions after dispatch in a processing system
US5850563A (en) Processor and method for out-of-order completion of floating-point operations during load/store multiple operations
US5664120A (en) Method for executing instructions and execution unit instruction reservation table within an in-order completion processor
US5805916A (en) Method and apparatus for dynamic allocation of registers for intermediate floating-point results
US5765215A (en) Method and system for efficient rename buffer deallocation within a processor
US5784606A (en) Method and system in a superscalar data processing system for the efficient handling of exceptions
US5809323A (en) Method and apparatus for executing fixed-point instructions within idle execution units of a superscalar processor
US6266761B1 (en) Method and system in an information processing system for efficient maintenance of copies of values stored within registers
KR19990013416A (ko) 프로세싱 시스템

Legal Events

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

Payment date: 20050915

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee