KR100523706B1 - 단일 사이클 파이프라인 스톨을 발생하기 위한 파이프라인 프로세서 시스템 및 방법 - Google Patents
단일 사이클 파이프라인 스톨을 발생하기 위한 파이프라인 프로세서 시스템 및 방법 Download PDFInfo
- Publication number
- KR100523706B1 KR100523706B1 KR10-2001-0002598A KR20010002598A KR100523706B1 KR 100523706 B1 KR100523706 B1 KR 100523706B1 KR 20010002598 A KR20010002598 A KR 20010002598A KR 100523706 B1 KR100523706 B1 KR 100523706B1
- Authority
- KR
- South Korea
- Prior art keywords
- speculative
- hazard
- detection circuit
- instructions
- instruction
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 28
- 238000001514 detection method Methods 0.000 claims abstract description 66
- 230000004044 response Effects 0.000 claims abstract description 24
- 230000008569 process Effects 0.000 claims abstract description 6
- 239000000872 buffer Substances 0.000 claims description 44
- 230000003139 buffering effect Effects 0.000 claims 1
- 230000015654 memory Effects 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 4
- 230000007704 transition Effects 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000002198 surface plasmon resonance spectroscopy Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
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
본 발명은 종속성을 추론적으로 결정(speculatively determining dependencies)하기 위한 파이프라인 프로세서 및 방법에 관한 것이다. 프로세서는 다수의 명령어들을 순서대로 처리한다. 추론적 검출 회로는 다수의 클록 사이클들을 사용하여 종속성이 존재하는지를 결정한다. 추론적 검출 회로는 추론적 종속성이 존재한다는 결정에만 응답해서 단일-사이클 파이프라인 스톨(stall)를 실행한다.
Description
본 발명은 일반적으로 파이프라인 프로세서에 관한 것으로, 특히, 단일 사이클 파이프라인 스톨을 발생하기 위한 파이프라인 프로세서에 관한 것이다. 보다 더 구체적으로 말하면, 본 발명은 종속성 검출에 응답해서 단일 사이클 파이프라인 스톨을 발생하기 위해 명령어들을 처리하는 파이프라인 프로세서에 관한 것이다.
파이프라인 데이터 처리 시스템은 클록 사이클당 다수의 명령어들을 실행할 수 있는 마이크로프로세서 구조를 포함하는 데이터 처리 시스템이다. 사이클당 다수의 명령어들을 실행하기 위해, 동시에 실행할 수 있는 다수의 독립적인 기능 유닛들이 필요하다. 순차 처리(in-order) 파이프라인 프로세서에서, 상기 다수의 명령어들은 원래의 순서대로 실행된다.
일부 명령어들은 단일 클록 사이클에 처리를 완료하는 단일 사이클 명령어들이다. 다른 명령어들은 처리를 완료하는데 2 이상의 클록 사이클을 필요로 한다.
명령어 처리 중에 종종 종속성이 발생한다. 한가지 타입의 종속성은 하나의 레지스터가 다른 뒤의 명령어에 의해 판독되어야만 하는 레지스터에 값을 기록할 때 발생한다. 레지스터에 값을 기록하는 명령어가 실행되기 위해 2 이상의 사이클이 걸릴 때, 그 레지스터에 저장된 값을 판독하는 뒤의 명령어는 앞의 명령어가 실행을 완료할 때까지 스톨되어야만 한다. 따라서, 명령어들을 적합하게 실행하기 위해 파이프라인 스톨이 명령어 스트림 내로 삽입되어야만 한다.
공지된 시스템들에서, 단일-사이클 스톨이 발생되려면, 종속성으로 인해 파이프라인 스톨을 삽입할 것인지의 여부에 대한 결정이 단일 사이클에 이루어져야만 한다. 명령어가 디스패치될 수 있는지 또는 중지되어야만 하는지를 결정하기 위해 다수의 사이클들을 사용하는 메카니즘들은 다수-사이클 스톨(multiple-cycle stall)을 야기한다. 스톨 조건들을 결정하는데 다수의 사이클들이 필요한 것은 프로세서 주파수를 개선하기 위해서는 유익하지만, 다수의 스톨 사이클들은 CPI(cycles per instruction)로 측정되는 프로세서 성능을 위해서는 불리하다.
따라서, 명령어들을 순서대로 처리하는 파이프라인 프로세서의 경우, 명령어 디스패치를 제어하는데 검출 메카니즘이 다수의 사이클들을 필요로 할 때, 종속성 검출에 응답해서 단일 사이클 파이프라인 스톨을 발생시킬 필요가 존재한다.
본 발명의 목적은 종속성을 추론적으로 결정하기 위한 파이프라인 프로세서 및 방법을 제공하는데 있다. 본 프로세서는 다수의 명령어들을 순서대로 처리한다. 추론적 검출 회로는 다수의 클록 사이클들을 사용하여 종속성이 존재하는지를 결정한다. 추론적 검출 회로는 추론적 종속성이 존재한다는 결정에만 응답해서 단일-사이클 파이프라인 스톨을 삽입한다.
본 발명의 여타 목적들, 기능들, 및 장점들은 이하의 상세한 설명을 통해 명백해질 것이다.
본 발명의 양호한 실시예 및 장점들은 도 1 내지 도 4를 참조하여 보다 양호하게 설명되고, 첨부된 도면의 유사한 참조 부호들은 유사한 구성 요소들을 나타낸다.
본 명세서에는 종속성을 추론적으로 결정하기 위한 파이프라인 프로세서 및 방법이 기술되어 있다. 종속성은 데이터 종속성 및 구조적 종속성을 포함한다. 프로세서는 다수의 명령어들을 순서대로 처리할 수 있다. 종속성이 존재하는지의 여부에 대한 추론적 결정이 이루어진다. 단일-사이클 파이프라인 스톨은 추론적 종속성이 존재한다는 결정에 응답해서만 발생된다.
주요 해저드 검출 회로(primary hazard detection circuit) 및 주요 레지스터 어드레스 큐(primary register address queue)가 실제 종속성 해저드가 존재하는지를 결정하기 위해 포함된다. 또한, 추론적 해저드 검출 회로(sepculative hazard detection circuit) 및 추론적 레지스터 어드레스 큐(sepculative register address queue)는 추론적 종속성 해저드가 존재하는지를 결정하기 위해 포함된다. 추론적 해저드가 존재하면, 파이프는 단일 NOP 명령어를 파이프에 삽입함으로써 하나의 사이클 동안만 중지(stall)된다.
본 발명은 종속성 검출이 추론적인 방식으로 완료되기 때문에 단일-사이클 스톨만을 삽입할 수 있다. 따라서, 해저드를 초래하는 명령어가 디스패치되기 이전에, 종속성 해저드가 검출된다.
도 1은 양호한 실시예에 따른 정보 처리용 프로세서(10) 시스템의 블록도이다. 양호한 실시예에서, 프로세서(10)는 단일 집적 회로 마이크로프로세서이다. 따라서, 이하에 더 기술된 바와 같이, 프로세서(10)는 다수의 유닛들, 레지스터들, 버퍼들, 메모리들, 및 다른 섹션들을 포함하는데, 모두 집적 회로로 형성된다. 또한, 양호한 실시예에서, 프로세서(10)는 "RISC(reduced instruction set computing)" 기술들에 따라 동작한다. 도 1에 도시된 바와 같이, 시스템 버스(11)는 프로세서(10)의 버스 인터페이스 유닛("BIU"; 12)에 접속된다. BIU(12)는 프로세서(10)와 시스템 버스(11) 간의 정보 전달을 제어한다.
BIU(12)는 프로세서(10)의 명령어 캐시(14)와 데이터 캐시(16)에 접속된다. 명령어 캐시(14)는 명령어들을 시퀀서 유닛(18)에 출력한다. 명령어 캐시(14)로부터의 명령어들에 응답해서, 시퀀서 유닛(18)은 프로세서(10)의 다른 실행 회로에 명령어들을 선택적으로 출력한다.
시퀀서 유닛(18) 외에, 양호한 실시예에서, 프로세서(10)의 다른 실행 회로는 다수의 실행 유닛들, 즉, 브랜치 유닛(20), 고정 소수점 유닛 A("FXUA"; 22), 고정 소수점 유닛 B("FXUB"; 24), 복합 고정 소수점 유닛("CFXU"; 26), 로드/저장 유닛("LSU"; 28) 및 부동 소수점 유닛("FPU"; 30)을 포함한다. FXUA(22), FXUB(24), CFXU(26) 및 LSU(28)는 범용 구조 레지스터들("GPR")로부터 소스 오퍼랜드 정보를 입력받는다. 양호한 실시예에서, 범용 레지스터는 다른 실행 유닛들로부터의 결과들을 레지스터에 먼저 저장시키지 않고 "전달"(또는 "통과")시킬 수 있다. 또한, FXUA(22) 및 FXUB(24)는 캐리 비트("CA") 레지스터(42)로부터 "캐리 비트"를 입력받는다. FXUA(22), FXUB(24), CFXU(26) 및 LSU(28)는 GPR(32)에게 저장하기 위하여, 연산의 결과(목적지 오퍼랜드 정보)를 출력한다. 또한, CFXU(26)는 특정 목적의 레지스터들("SPR"; 40)과 소스 오퍼랜드 정보 및 목적지 오퍼랜드 정보를 입출력한다.
FPU(30)는 부동 소수점 구조 레지스터들("FPR"; 36)로부터의 소스 오퍼랜드 정보를 입력받는다. 양호한 실시예에서, 부동 소수점 구조 레지스터들은 다른 실행 유닛들로부터의 결과들을 레지스터에 먼저 저장시키지 않고 "전달"(또는 "통과")시킬 수 있다. FPU(30)는 FPR(36)에게 저장하기 위하여, 연산의 결과(목적지 오퍼랜드 정보)를 출력한다.
로드(Load) 명령어에 응답해서, LSU(28)는 데이터 캐시(16)로부터 정보를 입력하고 상기 정보를 GPR(32)에 복사한다. 상기 정보가 데이터 캐시(16)에 저장되어 있지 않으면, 데이터 캐시(16)는 시스템 버스(11)에 접속된 시스템 메모리(39)로부터 상기 정보를 (BIU(12) 및 시스템 버스(11)를 통해) 입력받는다. 또한, 데이터 캐시(16)는 시스템 버스(11)에 접속된 시스템 메모리(39)로 데이터 캐시(16)로부터의 정보를 (BIU(12) 및 시스템 버스(11)를 통해) 출력할 수 있다. 저장 명령어에 응답해서, LSU(28)는 GPR들(32)과 FPR들(36) 중 선택된 레지스터로부터 정보를 입력하고 상기 정보를 데이터 캐시(16)에 복사한다.
시퀀서 유닛(18)은 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)는 소스 오퍼랜드들에 대하여 부동 소수점 곱셈 및 나눗셈과 같은 부동 소수점 연산들을 실행한다.
프로세서(10)는 다수의 실행 유닛들(20, 22, 24, 26, 28, 30)에서 다수의 명령어들을 동시에 처리함으로써 고 성능을 달성한다. 따라서, 각각의 명령어는 일련의 스테이지로서 처리되는데, 각각은 다른 명령어의 스테이지와 병렬적으로 실행될 수 있다. 상기 기술을 "파이프라이닝(pipelining)"이라고 한다. 양호한 실시예의 중요한 측면에서, 명령어는 일반적으로 5개의 스테이지들, 즉, 페치(fetch), 디스패치(dispatch), 실행(execution), 기록(writeback), 및 완료(completion)로서 처리된다.
페치 스테이지에서, 시퀀서 유닛(18)은 브랜치 유닛(20) 및 시퀀서 유닛(18)과 연관하여 상술된 일련의 명령어들을 저장하고 있는 하나 이상의 메모리 어드레스들로부터 하나 이상의 명령어들을 (명령어 캐시(14)로부터) 선택적으로 입력받는다.
디스패치/디코딩/발행(issue) 스테이지에서, 시퀀서 유닛(18)은 제1 명령어를 디코딩하여 실행 유닛들(20, 22, 24, 26, 28, 30) 중 하나로 디스패치한다. 디스패치 스테이지에서, 오퍼랜드 정보가 디스패치된 명령어들을 위해 선택된 실행 유닛들에게 제공된다. 프로세서(10)는 프로그램된 순서대로 명령어들을 디스패치한다.
실행 스테이지에서, 실행 유닛들은 디스패치된 명령어들을 실행하고 GPR들(32), FPR들(36), SPR들(40), 및 캐리 비트 레지스터(42)에 저장하기 위하여, 연산 결과들(목적지 오퍼랜드 정보)을 출력한다.
기록 스테이지에서, 상이한 유닛들로부터의 출력 결과들은 적합한 레지스터들에게 기록된다. 상이한 명령어들이 결과들을 산출하는데 상이한 수의 사이클들을 필요로 할 수 있기 때문에, 프로그램된 명령어 시퀀스에 대하여 기록이 "순서 없이(out of order)" 발생할 수 있다.
시퀀서 유닛(18)은 다수의 실행 유닛들로부터의 정보를 축적하고 명령어들이 예외 조건 없이 종료되었는지를 결정한다. 현재의 명령어를 포함해서 모든 이전 명령어들이 예외 조건 없이 "종료(finished)"되었으면, 현재의 명령어에 의해 겹쳐쓰여진 레지스터의 이전 구조 값들은 더 이상 히스토리 파일에 저장될 필요가 없고, 명령어는 "완료(completed)"되었다. 따라서, 프로세서(10)는 프로그램된 순서대로 명령어들을 "완료"한다. 예외 조건이 발생하면, 시퀀서 유닛은 GPR들에게 예외를 야기하는 명령어 전의 구조 값들을 복원하게 한다. 시퀀서 유닛은 다음의 유효한 명령어 어드레스로부터 명령어들을 "다시 페치(refetch)"한다.
도 2는 본 발명의 방법 및 시스템에 따른 도 1의 시퀀서 유닛에 포함된 스톨 발생 회로를 더 자세히 그림으로 도시한 것이다. 스톨 발생 회로(200)는 주요 해저드 검출 회로(202)와 주요 레지스터 어드레스 큐(204)를 포함하는 주요 검출 회로(203), 및 추론적 해저드 검출 회로(206)와 추론적 레지스터 어드레스 큐(208)를 포함하는 추론적 검출 회로(205)를 포함한다. 주요 해저드 검출 회로(202)와 주요 레지스터 어드레스 큐(204)는 종속성으로 인한 실제 해저드가 존재할 때 주요 해저드 신호를 발생하는데 이용된다. 검출된 종속성은 데이터 종속성 아니면 구조적 리소스 종속성일 수 있다. 추론적 해저드 검출 회로(206)와 추론적 레지스터 어드레스 큐(208)는 종속성으로 인한 추론적 해저드가 존재할 때 추론적 해저드 신호를 발생하는데 이용된다. 역시, 검출된 종속성은 데이터 종속성 아니면 구조적 종속성일 수 있다.
명령어 버퍼들(210, 212, 214, 216, 218)이 명령어들을 저장하기 위해 포함된다. 버퍼(212)는 디스패치될/발행될 다음의 명령어를 저장하는데 사용된 디스패치 버퍼이다. 버퍼들(214, 216, 218)은 추론적인 명령어들을 저장한다. 상기 버퍼들에 저장된 명령어들은 캐시 라인으로부터의 버퍼(212)의 명령어과 함께 연속적인 순서로 명령어 페치 유닛(220)에 의해 페치되었던 명령어들이다. 가장 최근에 디스패치된 명령어를 포함하는 명령어 버퍼(210)가 포함된다.
명령어들은 명령어 버퍼(212)로부터 기능 유닛으로 보내진다. 명령어 버퍼들(214, 216, 218)은 버퍼(212)에 있는 명령어에 뒤따르는 다음의 연속적인 명령어들을 나타낸다. 매 사이클에서, 상태 머신(222)은 명령어 버퍼들을 제어하여, 다음의 연속적인 집합의 명령어들을 로드하거나, 명령어 캐시(도시되어 있지 않음)로부터 새로운 집합의 명령어들을 로드하도록, 도면에서 위쪽으로 쉬프트하거나, 아니면, 이슈(issue) 큐를 홀드한다. 명령어 버퍼(212)내의 명령어와, 이전에 이슈되었지만 아직 종료되지 않았고 여전히 머신의 리소스들을 차지하고 있는 명령어들 간에 리소스 충돌이 있다면, 이슈 큐는 홀드되어야만 한다.
종속성 검출 회로(200)는 디코드 회로(201), 이전 명령어 정보 저장부(204) 및 해저드 검출 회로(202)를 포함한다. 디코드 회로(201)는 상태 머신(222)으로부터의 "이슈 유효(issue valid)" 신호 뿐만 아니라 명령어 디스패치 버퍼(212)로부터 현재 이슈되고 있는 명령어를 수신한다. "이슈 유효" 신호란 상태 머신(222)이 보내는 신호로서, 현재 실행중인 명령어의 다음 명령어를 언제 이슈/디스패치하는 것이 좋은지 프로세서에게 알리는 신호이다. 디코드 회로(201)는 이전 명령어 정보 저장부(204)와 주요 해저드 검출 회로(202)에게, 목적지 레지스터 어드레스 및 기능 유닛들 또는 버스들과 같은 구조적 리소스들과 같이, 명령어가 어느 리소스를 사용하는지 나타내는 디코딩된 정보를 제공한다. 디코드 회로(201)는 또한 리소스들이 요구되는 명령어 파이프라인 스테이지들을 나타내는 정보를 제공한다.
이전 명령어 정보 저장부(204)는 디코드 회로(201)로부터 새롭게 이슈된 명령어, 상태 머신(222)으로부터의 "이슈 유효" 신호, 및 기능 유닛들로부터의 명령어 진행(progress) 신호들에 관한 정보에 응답해서, 이전 명령어들에 의해 어느 리소스들이 사용중인지에 대한 정보를 갱신한다. 파이프라인 홀드가 없는 순차 처리 파이프라인 머신에서, 이전 명령어 정보 저장부(204)는 레지스터들 또는 구조적 리소스들이 사용되고 있는 파이프라인 스테이지들을 나타내는 "원-핫(one-hot)" 정보를 유지하기 위한, 시프트 레지스터들과 목적지 어드레스 레지스터들을 위한 일련의 큐로서 효율적으로 구현될 수 있다.
주요 해저드 검출 회로(202)는 명령어 버퍼(212)의 명령어과 진행중인(in flight) 명령어(그 리소스들이 이전 명령어 정보 저장부(204)에 의해 유지됨) 간에 리소스 충돌이 있는지를 결정한다. 주요 해저드 검출 회로(202)는 명령어 버퍼(212)로부터의 소스 오퍼랜드 레지스터 어드레스들과 진행중인 명령어들의 목적지들을 비교하기 위해 비교기 어레이를 포함한다. 또한, 주요 해저드 검출 회로(202)는 진행중인 명령어들과 버퍼(212)의 명령어 모두에 의해 구조적 리소스들이 사용되거나 사용될 사이클 동안, 구조적 리소스들 중 요구되는 것이 있는지를 결정하기 위한 논리를 포함한다.
오퍼랜드 종속성 해저드 또는 구조적 해저드가 존재하면, 해저드 신호가 발생되고, 상태 머신(222)은 "이슈 유효" 신호를 발생 해제(de-assert)하여야만 하고, 이전 명령어 정보 저장부(204)가 명령어 진행을 나타내는 기능 유닛들로부터의 "사이클 정보" 신호들에 응답해서 갱신되는 동안 명령어 버퍼들의 명령어를 홀드해야만 한다.
각각의 사이클에서, 명령어들은 하나의 버퍼로부터 다음 버퍼로 시프트된다. 예를 들어, 이전 명령어들이 연속적인 순서로 계속 실행되는 한, 버퍼(218)에 현재 위치한 명령어는 다음 클록 사이클 동안 버퍼(216)로 시프트된다. 예외가 발생하거나 브랜치 명령어가 실행되면, 명령어 페치부(220)는 상기 명령어 버퍼들에 저장될 새로운 명령어들을 페치하게 된다.
2개의 입력들로서 주요 해저드 신호와 추론적 해저드 신호를 수신하는 상태 머신(222)이 포함된다. 상태 머신(222)은 명령어들을 디스패치하는 것과 하나의 명령어 버퍼로부터 다음 버퍼로 명령어들을 쉬프트하는 것을 제어하는데 사용된다.
추론적 이전 명령어 정보 저장부(208)는 명령어 버퍼(212)에 저장된 명령어에 대한 목적지 레지스터 어드레스를 포함하고 현재 진행 중인 명령어들에 대한 목적지 레지스터들의 어드레스들을 포함한다. 주요 이전 명령어 정보 저장부(204)는 현재 진행중인 명령어들을 위한 목적지 레지스터들의 어드레스들을 포함한다. 진행중인(in flight) 명령어들이란 디스패치되었지만 아직 완료 스테이지에 도달하지 않은 명령어들을 말한다.
제3 검출 회로(241)가 또한 포함된다. 제3 검출 회로(241)는 해저드 검출 회로(240)와 이전 명령어 정보 저장부(242)를 포함한다. 제3 검출 회로(241)는 명령어 버퍼(212)에 결합되고 검출 회로(203)가 수신하는 신호들과 동일한 신호들을 수신한다. 제3 검출 회로(241)는 주요 검출 회로(203)가 동작하는 디스패치 스테이지(D 스테이지) 대신에 실행 스테이지(X 스테이지)에서 제3 검출 회로(241)가 동작한다는 점을 제외하고는 주요 검출 회로(203)와 유사한 방식으로 동작한다. 따라서, 이전 명령어 정보 저장부(242)는 파이프의 C 및 W 스테이지들에서의 명령어들을 위한 목적지들을 포함한다. 제3 검출 회로는 종속성이 검출될 때 제2 레벨의 주요 해저드 신호를 발생한다.
도 3은 본 발명의 방법 및 시스템에 따른 컴퓨터 시스템의 주요 레지스터 어드레스 큐 및 추론적 레지스터 어드레스 큐를 도시한 것이다. 추론적 레지스터 어드레스 큐는 현재 진행중인 명령어들의 목적지들과 현재 디스패치되고 있는 명령어의 목적지들을 저장한다. 따라서, 추론적 레지스터 어드레스 큐(208)는 D 스테이지, 즉, 버퍼(212)의 현재 명령어가 있는 디스패치 스테이지, D 스테이지의 다음에 오고 실행 스테이지의 제1 부분인 X 스테이지, X 스테이지의 다음에 오고 실행 스테이지의 제2 부분인 C 스테이지, 및 C 스테이지의 다음에 오고 기록 스테이지인 W 스테이지에 현재 있는 명령어의 목적지들을 홀드한다. 주요 레지스터 어드레스 큐(204)는 현재 X 스테이지, C 스테이지, 및 W 스테이지에 있는 명령어에 대한 목적지들을 저장한다.
본 기술 분야에 숙련된 자들은 레지스터 어드레스 큐들이 리소스들을 여전히 차지하거나 결과들을 산출할 수 있는 현재 진행중인 모든 명령어들을 저장할 만큼 충분히 깊어야만 함을 알 것이다.
명령어들이 하나의 명령어 버퍼로부터 다음 버퍼로 시프트되기 때문에, 각각의 레지스터 어드레스 큐의 항목들도 또한 시프트된다.
주요 해저드 검출 회로(202)와 추론적 해저드 검출 회로(206)는 해저드가 존재하는지를 결정하기 위해 관련 레지스터 어드레스 큐들과 함께 사이클 정보 신호를 사용한다. 해저드 검출 회로가 해저드 검출 회로와 관련된 명령어 버퍼의 목적지들이 관련 레지스터 어드레스 큐의 목적지들 중 한 목적지과 일치한다고 결정할 때, 해저드가 존재하는데, 상기 명령어는 제 시간에 실행을 완료하지 않게 된다. 해저드 검출 회로는 레지스터들이 관련 명령어 버퍼의 명령어에 대한 유효한 값들을 저장하는 시간 동안, 진행중인 명령어들이 제시간에 실행을 완료할지의 여부를 결정하기 위해 사이클 정보 신호를 사용한다.
도 4는 본 발명의 방법 및 시스템에 따른 프로세서의 동작을 설명하는 상태 전이표를 도시한 것이다. 상태 전이표는 새로운 명령어가 디스패치되도록 예정되어 있을 때 실제 해저드 신호의 상태와 추론적 해저드 신호의 상태가 어떻게 프로세서의 동작에 영향을 미치는지 나타낸다. 상태 전이표의 제1 칼럼과 제5 칼럼은 각각 실제 해저드와 추론적 해저드 중 어느 하나(또는 둘다)의 신호가 발생되기 전에 또는 발생된 이후에 프로세서의 동작 상태를 나타낸다. 프로세서는 "실행(run)"(실행을 계속하는) 상태, 또는 적어도 1 사이클 동안 명령어 버퍼가 명령어들을 전달(forward)하는 것이 금지되는 홀드(hold) 상태 중 어느 한 상태에 있다. 제2 칼럼은 주요(실제) 해저드의 존재/검출을 나타내고, 제3 칼럼은 추론적 해저드의 존재/검출을 나타낸다. 제2 레벨 주요 해저드 신호는 대부분 본 논의와는 관련이 없고, 추론적 해저드 신호와 유사한 응답을 제공한다. "1"은 해저드가 트리거/검출되었다는 것을 나타내고, "0"은 해저드가 없다는 것을 나타내고, "X"는 해저드가 프로세서에게 관심의 대상이 아니라는 것을 나타낸다. 만일 프로세서가 "실행"에 있고 해저드가 검출되지 않는다면, 명령어는 실행 버퍼로 계속 진행한다(제2 행). 만일 주요 해저드가 검출되면, 디스패치 단계와 실행 단계는 제거되고(killed) 버퍼가 백업된다(즉, 명령어간에 다수의 클록 사이클을 삽입한다)(제3 행). 만일 추론적 해저드가 검출된다면(주요 해저드는 없음), 디스패치 단계만이 제거되고, 명령어 버퍼는 한 사이클 동안 홀드된다(제4 행).버퍼가 홀드되어 있고, 주요 해저드가 검출되지 않을 때, 프로세서는 1 사이클 후에 명령어의 처리/디스패치(시행)를 재개한다(제5 행). 만일 제2 레벨 주요 해저드만이 검출된다면, 디스패치 단계가 제거되고, 버퍼는 1 사이클 동안 또 한번 홀드된다(제6 행). 만일 주요 해저드가 검출된다면, 디스패치 단계와 실행 단계는 다시 제거되고, 명령어 버퍼는 이전과 같이 백업된다(제7 행).
본 발명은 종속성 검출이 추론적인 방식으로 완료되기 때문에 단일-사이클 스톨을 삽입할 수 있다. 따라서, 해저드를 일으키는 명령어가 디스패치되기 전에 종속성 해저드가 검출된다.
구체적으로 말하면, 상기 메카니즘은 스칼라 프로세서의 명령어 이슈에 관해서 기술되었지만, 상기 메카니즘은 슈퍼스칼라 마이크로프로세서의 다수의 기능 유닛들과 관련된 이슈 큐로부터 명령어들을 이슈하는데도 사용될 수 있다.
양호한 실시예가 특정하게 도시되고 기술되었지만, 본 기술 분야에 숙련된 자들은 다수의 변형들이 본 발명의 원리 및 범위 내에서 이루어질 수 있음을 알 것이다.
도 1은 본 발명의 방법 및 시스템에 따른 순서(in-order) 디스패치의 파이프라인 프로세서를 그림으로 도시한 도면.
도 2는 본 발명의 방법 및 시스템에 따른 도 1의 시퀀서 유닛에 포함된 스톨 발생 회로를 더 자세히 그림으로 도시한 도면.
도 3은 본 발명의 방법 및 시스템에 따른 컴퓨터 시스템의 주요 레지스터 어드레스 큐 및 추론적 레지스터 어드레스 큐를 도시한 도면.
도 4는 본 발명의 방법 및 시스템에 따른 프로세서의 동작을 설명하는 상태 전이표.
<도면의 주요 부분에 대한 부호의 설명>
10 : 프로세서
11 : 시스템 버스
12 : 버스 인터페이스 유닛
14 : 명령어 캐시
16 : 데이터 캐시
18 : 시퀀서 유닛
20 : 브랜치 유닛
28 : 로드/저장 유닛
30 : 부동 소수점 유닛
Claims (18)
- 삭제
- 순차적 처리를 위하여 설계된 추론적 검출 회로를 포함하고, 다수의 명령어들을 순서대로 처리하는 파이프라인 프로세서에서의 방법에 있어서,추론적 명령어 버퍼에 결합되어 추론적 종속성이 존재하는지를 결정하는 제 1 종속성 해저드 검출 회로를 설정하는 단계;다수의 클록 사이클을 이용하여, 순서대로 디스패치되고 실행되는 명령어들 사이에 종속성이 존재하는지를 추론적으로 결정하는 단계;상기 추론적 종속성(speculative dependency)이 존재한다는 결정에 응답해서 추론적 해저드 신호를 발생(asserting)하는 단계;상기 추론적 종속성이 존재한다는 결정에 응답해서 상기 추론적 검출 회로를 통해 단일-클록-사이클 파이프라인 스톨(single-clock-cycle pipeline stall)만을 발생시키는 단계;상기 추론적 해저드 신호의 발생에 응답해서 단일-클록-사이클 파이프라인 스톨을 삽입하는 단계;상기 추론적 명령어 버퍼에 결합되어 실제 종속성이 존재하는지를 결정하는 제 2 종속성 해저드 검출 회로를 설정하는 단계;상기 실제 종속성이 존재한다는 결정에 응답해서 주요(primary) 해저드 신호를 발생하는 단계; 및상기 추론적 해저드 신호가 발생되지 않을 때 상기 주요 해저드 신호의 발생에 응답해서 다수-클록-사이클 파이프라인 스톨을 삽입하는 단계를 포함하는 방법.
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 다수의 명령어들을 순서대로 디스패치하고 실행하는 단일 파이프라인 프로세서에 있어서,다수의 클록 사이클을 사용하여 명령어 버퍼 제어를 구현하고, 추론적 종속성 검출에 응답해서 단일-클록-사이클 파이프라인 스톨을 삽입하기 위해 추론적 디코드 회로, 추론적 이전 명령어 정보 저장부, 및 추론적 해저드 검출 회로를 포함하는 추론적 검출 회로; 및다수의 클록 사이클을 사용하여 명령어 버퍼 제어를 구현하고, 실제 종속성 검출에 응답해서 다수의-클록-사이클 파이프라인 스톨을 삽입하기 위해 주요 디코드 회로, 주요 이전 명령어 정보 저장부, 및 주요 해저드 검출 회로를 포함하고, 상기 추론적 검출 회로와 동시에 동작하는 주요 검출 회로를 포함하는 파이프라인 프로세서.
- 제9항에 있어서,상기 추론적 검출 회로는 추론적 해저드가 존재한다는 결정에 응답해서 추론적 해저드 신호를 발생하는 파이프라인 프로세서.
- 제9항에 있어서,상기 추론적 이전 명령어 정보 저장부는 현재 진행중인 명령어들에 의해 사용되는 리소스들 및 명령어 디스패치 버퍼에 저장된 명령어를 저장하고,상기 추론적 해저드 검출 회로는 상기 추론적 이전 명령어 정보 저장부에서 사용중인 추론적 명령어 리소스들에 필요한 리소스들을 비교하고,상기 추론적 명령어는 상기 디스패치 버퍼에 저장된 명령어 이후에 순차적으로 다음에 페치된 명령어인 파이프라인 프로세서.
- 제11항에 있어서,상기 추론적 검출 회로는 추론적 해저드 검출에 응답해서 추론적 해저드 신호를 발생하는 파이프라인 프로세서.
- 제11항에 있어서,상기 주요 검출 회로는 실제 해저드의 검출에 응답해서 주요 해저드 신호를 발생하는 파이프라인 프로세서.
- 제13항에 있어서,상기 추론적 검출 회로는 상기 추론적 명령어가 상기 디스패치 버퍼에 저장되어 상기 추론적 해저드를 야기하기 전에 상기 추론적 해저드 신호를 발생하는 파이프라인 프로세서.
- 제9항에 있어서,상기 주요 검출 회로 및 상기 추론적 검출 회로 중 적어도 하나로부터 신호를 입력받고, 상기 수신된 입력들에 기초하여, 파이프라인 스톨 없음, 단일-클록-사이클 파이프라인 스톨, 및 다수의-클록-사이클 파이프라인 스톨 중에서 파이프라인 스톨 결과를 언제 발생(assert)할 것인지 결정하는 논리를 포함하는 상태 머신을 더 포함하고,상기 상태 머신은 상기 파이프라인 스톨 결과를 알리고 상기 파이프라인 스톨 결과의 구현을 달성하는 출력 수단을 포함하는 파이프라인 프로세서.
- 제15항에 있어서,상기 추론적 검출 회로 및 상기 주요 검출 회로 모두 상기 상태 머신으로 전송되는 출력 신호를 더 포함하는 파이프라인 프로세서.
- 제16항에 있어서, 상기 추론적 검출 회로는 상기 상태 머신에 제1 입력 신호를 제공하고, 상기 주요 검출 회로는 상기 상태 머신에 제2 입력 신호를 제공하는 파이프라인 프로세서.
- 제9항에 있어서,상기 추론적 검출 회로는 상기 주요 검출 회로보다 적어도 하나 더 많은 명령어 버퍼링 스테이지에서 명령어들을 버퍼링하는 파이프라인 프로세서.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/498,088 US6708267B1 (en) | 2000-02-04 | 2000-02-04 | System and method in a pipelined processor for generating a single cycle pipeline stall |
US09/498,088 | 2000-02-04 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20010077997A KR20010077997A (ko) | 2001-08-20 |
KR100523706B1 true KR100523706B1 (ko) | 2005-10-26 |
Family
ID=23979556
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR10-2001-0002598A KR100523706B1 (ko) | 2000-02-04 | 2001-01-17 | 단일 사이클 파이프라인 스톨을 발생하기 위한 파이프라인 프로세서 시스템 및 방법 |
Country Status (4)
Country | Link |
---|---|
US (1) | US6708267B1 (ko) |
EP (1) | EP1152328A3 (ko) |
JP (1) | JP3611304B2 (ko) |
KR (1) | KR100523706B1 (ko) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7401205B1 (en) * | 1999-08-13 | 2008-07-15 | Mips Technologies, Inc. | High performance RISC instruction set digital signal processor having circular buffer and looping controls |
US7363467B2 (en) * | 2002-01-03 | 2008-04-22 | Intel Corporation | Dependence-chain processing using trace descriptors having dependency descriptors |
JP3816845B2 (ja) * | 2002-07-05 | 2006-08-30 | 富士通株式会社 | プロセッサ及び命令制御方法 |
US7185182B2 (en) * | 2003-02-04 | 2007-02-27 | Via Technologies, Inc. | Pipelined microprocessor, apparatus, and method for generating early instruction results |
US20040158694A1 (en) * | 2003-02-10 | 2004-08-12 | Tomazin Thomas J. | Method and apparatus for hazard detection and management in a pipelined digital processor |
US8966230B2 (en) * | 2009-09-30 | 2015-02-24 | Intel Corporation | Dynamic selection of execution stage |
KR101669989B1 (ko) | 2010-05-27 | 2016-10-28 | 삼성전자주식회사 | 파이프라인 프로세서 및 이퀄 모델 보존 방법 |
US10282205B2 (en) * | 2015-10-14 | 2019-05-07 | International Business Machines Corporation | Method and apparatus for execution of threads on processing slices using a history buffer for restoring architected register data via issued instructions |
US10289415B2 (en) | 2015-10-14 | 2019-05-14 | International Business Machines Corporation | Method and apparatus for execution of threads on processing slices using a history buffer for recording architected register data |
US10740269B2 (en) * | 2018-07-17 | 2020-08-11 | Arm Limited | Arbitration circuitry |
US10824468B2 (en) * | 2019-02-12 | 2020-11-03 | Arm Limited | Control of instruction execution in a data processor |
CN110209426B (zh) * | 2019-06-19 | 2021-05-28 | 上海兆芯集成电路有限公司 | 指令执行方法及指令执行装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5509130A (en) * | 1992-04-29 | 1996-04-16 | Sun Microsystems, Inc. | Method and apparatus for grouping multiple instructions, issuing grouped instructions simultaneously, and executing grouped instructions in a pipelined processor |
KR100230552B1 (ko) * | 1995-04-13 | 1999-11-15 | 포만 제프리 엘 | 동적 명령어 포맷팅을 이용한 컴퓨터 처리 시스템 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1985000453A1 (en) * | 1983-07-11 | 1985-01-31 | Prime Computer, Inc. | Data processing system |
JPH04275628A (ja) * | 1991-03-01 | 1992-10-01 | Mitsubishi Electric Corp | 演算処理装置 |
EP0717359A3 (en) * | 1994-12-15 | 1997-02-05 | Sun Microsystems Inc | Register cache memory for a computer processor |
US5812812A (en) * | 1996-11-04 | 1998-09-22 | International Business Machines Corporation | Method and system of implementing an early data dependency resolution mechanism in a high-performance data processing system utilizing out-of-order instruction issue |
US5870580A (en) * | 1996-12-13 | 1999-02-09 | Advanced Micro Devices, Inc. | Decoupled forwarding reorder buffer configured to allocate storage in chunks for instructions having unresolved dependencies |
US5781752A (en) * | 1996-12-26 | 1998-07-14 | Wisconsin Alumni Research Foundation | Table based data speculation circuit for parallel processing computer |
-
2000
- 2000-02-04 US US09/498,088 patent/US6708267B1/en not_active Expired - Fee Related
-
2001
- 2001-01-17 KR KR10-2001-0002598A patent/KR100523706B1/ko not_active IP Right Cessation
- 2001-01-22 EP EP01101336A patent/EP1152328A3/en not_active Withdrawn
- 2001-02-01 JP JP2001025765A patent/JP3611304B2/ja not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5509130A (en) * | 1992-04-29 | 1996-04-16 | Sun Microsystems, Inc. | Method and apparatus for grouping multiple instructions, issuing grouped instructions simultaneously, and executing grouped instructions in a pipelined processor |
KR100230552B1 (ko) * | 1995-04-13 | 1999-11-15 | 포만 제프리 엘 | 동적 명령어 포맷팅을 이용한 컴퓨터 처리 시스템 |
Also Published As
Publication number | Publication date |
---|---|
EP1152328A3 (en) | 2008-04-16 |
EP1152328A2 (en) | 2001-11-07 |
JP2001243071A (ja) | 2001-09-07 |
JP3611304B2 (ja) | 2005-01-19 |
US6708267B1 (en) | 2004-03-16 |
KR20010077997A (ko) | 2001-08-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5611063A (en) | Method for executing speculative load instructions in high-performance processors | |
US5958041A (en) | Latency prediction in a pipelined microarchitecture | |
US5752014A (en) | Automatic selection of branch prediction methodology for subsequent branch instruction based on outcome of previous branch prediction | |
US5442756A (en) | Branch prediction and resolution apparatus for a superscalar computer processor | |
US5546597A (en) | Ready selection of data dependent instructions using multi-cycle cams in a processor performing out-of-order instruction execution | |
US7793079B2 (en) | Method and system for expanding a conditional instruction into a unconditional instruction and a select instruction | |
EP1296230B1 (en) | Instruction issuing in the presence of load misses | |
US5694565A (en) | Method and device for early deallocation of resources during load/store multiple operations to allow simultaneous dispatch/execution of subsequent instructions | |
US5535346A (en) | Data processor with future file with parallel update and method of operation | |
US6442679B1 (en) | Apparatus and method for guard outcome prediction | |
US20050149698A1 (en) | Scoreboarding mechanism in a pipeline that includes replays and redirects | |
US6463524B1 (en) | Superscalar processor and method for incrementally issuing store instructions | |
US7194603B2 (en) | SMT flush arbitration | |
US6192461B1 (en) | Method and apparatus for facilitating multiple storage instruction completions in a superscalar processor during a single clock cycle | |
KR100523706B1 (ko) | 단일 사이클 파이프라인 스톨을 발생하기 위한 파이프라인 프로세서 시스템 및 방법 | |
CZ9602771A3 (cs) | Způsob operace systému zpracování | |
US5727177A (en) | Reorder buffer circuit accommodating special instructions operating on odd-width results | |
US6587941B1 (en) | Processor with improved history file mechanism for restoring processor state after an exception | |
KR100305487B1 (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 | |
EP1296228B1 (en) | Instruction Issue and retirement in processor having mismatched pipeline depths | |
US5664120A (en) | Method for executing instructions and execution unit instruction reservation table within an in-order completion processor | |
US5850563A (en) | Processor and method for out-of-order completion of floating-point operations during load/store multiple operations | |
EP0753173B1 (en) | Processing system and method of operation | |
JP3721002B2 (ja) | メモリ要求を形成するために並列に生成される複数の取出アドレスのうちの1つを選択する、プロセッサおよび命令取出方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
AMND | Amendment | ||
E601 | Decision to refuse application | ||
J201 | Request for trial against refusal decision | ||
AMND | Amendment | ||
B601 | Maintenance of original decision after re-examination before a trial | ||
J301 | Trial decision |
Free format text: TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE REFUSAL REQUESTED 20040114 Effective date: 20050830 |
|
S901 | Examination by remand of revocation | ||
GRNO | Decision to grant (after opposition) | ||
GRNT | Written decision to grant | ||
LAPS | Lapse due to unpaid annual fee |