KR100523706B1 - 단일 사이클 파이프라인 스톨을 발생하기 위한 파이프라인 프로세서 시스템 및 방법 - Google Patents

단일 사이클 파이프라인 스톨을 발생하기 위한 파이프라인 프로세서 시스템 및 방법 Download PDF

Info

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
Application number
KR10-2001-0002598A
Other languages
English (en)
Other versions
KR20010077997A (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 KR20010077997A publication Critical patent/KR20010077997A/ko
Application granted granted Critical
Publication of KR100523706B1 publication Critical patent/KR100523706B1/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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • 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
    • 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
    • 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/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3867Concurrent 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

단일 사이클 파이프라인 스톨을 발생하기 위한 파이프라인 프로세서 시스템 및 방법{SYSTEM AND METHOD IN A PIPELINED PROCESSOR FOR GENERATING A SINGLE CYCLE PIPELINE STALL}
본 발명은 일반적으로 파이프라인 프로세서에 관한 것으로, 특히, 단일 사이클 파이프라인 스톨을 발생하기 위한 파이프라인 프로세서에 관한 것이다. 보다 더 구체적으로 말하면, 본 발명은 종속성 검출에 응답해서 단일 사이클 파이프라인 스톨을 발생하기 위해 명령어들을 처리하는 파이프라인 프로세서에 관한 것이다.
파이프라인 데이터 처리 시스템은 클록 사이클당 다수의 명령어들을 실행할 수 있는 마이크로프로세서 구조를 포함하는 데이터 처리 시스템이다. 사이클당 다수의 명령어들을 실행하기 위해, 동시에 실행할 수 있는 다수의 독립적인 기능 유닛들이 필요하다. 순차 처리(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. 삭제
  2. 순차적 처리를 위하여 설계된 추론적 검출 회로를 포함하고, 다수의 명령어들을 순서대로 처리하는 파이프라인 프로세서에서의 방법에 있어서,
    추론적 명령어 버퍼에 결합되어 추론적 종속성이 존재하는지를 결정하는 제 1 종속성 해저드 검출 회로를 설정하는 단계;
    다수의 클록 사이클을 이용하여, 순서대로 디스패치되고 실행되는 명령어들 사이에 종속성이 존재하는지를 추론적으로 결정하는 단계;
    상기 추론적 종속성(speculative dependency)이 존재한다는 결정에 응답해서 추론적 해저드 신호를 발생(asserting)하는 단계;
    상기 추론적 종속성이 존재한다는 결정에 응답해서 상기 추론적 검출 회로를 통해 단일-클록-사이클 파이프라인 스톨(single-clock-cycle pipeline stall)만을 발생시키는 단계;
    상기 추론적 해저드 신호의 발생에 응답해서 단일-클록-사이클 파이프라인 스톨을 삽입하는 단계;
    상기 추론적 명령어 버퍼에 결합되어 실제 종속성이 존재하는지를 결정하는 제 2 종속성 해저드 검출 회로를 설정하는 단계;
    상기 실제 종속성이 존재한다는 결정에 응답해서 주요(primary) 해저드 신호를 발생하는 단계; 및
    상기 추론적 해저드 신호가 발생되지 않을 때 상기 주요 해저드 신호의 발생에 응답해서 다수-클록-사이클 파이프라인 스톨을 삽입하는 단계
    를 포함하는 방법.
  3. 삭제
  4. 삭제
  5. 삭제
  6. 삭제
  7. 삭제
  8. 삭제
  9. 다수의 명령어들을 순서대로 디스패치하고 실행하는 단일 파이프라인 프로세서에 있어서,
    다수의 클록 사이클을 사용하여 명령어 버퍼 제어를 구현하고, 추론적 종속성 검출에 응답해서 단일-클록-사이클 파이프라인 스톨을 삽입하기 위해 추론적 디코드 회로, 추론적 이전 명령어 정보 저장부, 및 추론적 해저드 검출 회로를 포함하는 추론적 검출 회로; 및
    다수의 클록 사이클을 사용하여 명령어 버퍼 제어를 구현하고, 실제 종속성 검출에 응답해서 다수의-클록-사이클 파이프라인 스톨을 삽입하기 위해 주요 디코드 회로, 주요 이전 명령어 정보 저장부, 및 주요 해저드 검출 회로를 포함하고, 상기 추론적 검출 회로와 동시에 동작하는 주요 검출 회로
    를 포함하는 파이프라인 프로세서.
  10. 제9항에 있어서,
    상기 추론적 검출 회로는 추론적 해저드가 존재한다는 결정에 응답해서 추론적 해저드 신호를 발생하는 파이프라인 프로세서.
  11. 제9항에 있어서,
    상기 추론적 이전 명령어 정보 저장부는 현재 진행중인 명령어들에 의해 사용되는 리소스들 및 명령어 디스패치 버퍼에 저장된 명령어를 저장하고,
    상기 추론적 해저드 검출 회로는 상기 추론적 이전 명령어 정보 저장부에서 사용중인 추론적 명령어 리소스들에 필요한 리소스들을 비교하고,
    상기 추론적 명령어는 상기 디스패치 버퍼에 저장된 명령어 이후에 순차적으로 다음에 페치된 명령어인 파이프라인 프로세서.
  12. 제11항에 있어서,
    상기 추론적 검출 회로는 추론적 해저드 검출에 응답해서 추론적 해저드 신호를 발생하는 파이프라인 프로세서.
  13. 제11항에 있어서,
    상기 주요 검출 회로는 실제 해저드의 검출에 응답해서 주요 해저드 신호를 발생하는 파이프라인 프로세서.
  14. 제13항에 있어서,
    상기 추론적 검출 회로는 상기 추론적 명령어가 상기 디스패치 버퍼에 저장되어 상기 추론적 해저드를 야기하기 전에 상기 추론적 해저드 신호를 발생하는 파이프라인 프로세서.
  15. 제9항에 있어서,
    상기 주요 검출 회로 및 상기 추론적 검출 회로 중 적어도 하나로부터 신호를 입력받고, 상기 수신된 입력들에 기초하여, 파이프라인 스톨 없음, 단일-클록-사이클 파이프라인 스톨, 및 다수의-클록-사이클 파이프라인 스톨 중에서 파이프라인 스톨 결과를 언제 발생(assert)할 것인지 결정하는 논리를 포함하는 상태 머신을 더 포함하고,
    상기 상태 머신은 상기 파이프라인 스톨 결과를 알리고 상기 파이프라인 스톨 결과의 구현을 달성하는 출력 수단을 포함하는 파이프라인 프로세서.
  16. 제15항에 있어서,
    상기 추론적 검출 회로 및 상기 주요 검출 회로 모두 상기 상태 머신으로 전송되는 출력 신호를 더 포함하는 파이프라인 프로세서.
  17. 제16항에 있어서, 상기 추론적 검출 회로는 상기 상태 머신에 제1 입력 신호를 제공하고, 상기 주요 검출 회로는 상기 상태 머신에 제2 입력 신호를 제공하는 파이프라인 프로세서.
  18. 제9항에 있어서,
    상기 추론적 검출 회로는 상기 주요 검출 회로보다 적어도 하나 더 많은 명령어 버퍼링 스테이지에서 명령어들을 버퍼링하는 파이프라인 프로세서.
KR10-2001-0002598A 2000-02-04 2001-01-17 단일 사이클 파이프라인 스톨을 발생하기 위한 파이프라인 프로세서 시스템 및 방법 KR100523706B1 (ko)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (2)

* Cited by examiner, † Cited by third party
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