KR20010077997A - 단일 사이클 파이프라인 기능 정지를 발생하기 위한파이프라인 프로세서 시스템 및 방법 - Google Patents

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

Info

Publication number
KR20010077997A
KR20010077997A KR1020010002598A KR20010002598A KR20010077997A KR 20010077997 A KR20010077997 A KR 20010077997A KR 1020010002598 A KR1020010002598 A KR 1020010002598A KR 20010002598 A KR20010002598 A KR 20010002598A KR 20010077997 A KR20010077997 A KR 20010077997A
Authority
KR
South Korea
Prior art keywords
hazard
speculative
instruction
inference
dependency
Prior art date
Application number
KR1020010002598A
Other languages
English (en)
Other versions
KR100523706B1 (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 or 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 or 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 or 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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or 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) 파이프라인 프로세서에서, 상기 다수의 명령들은 고유 시퀀스로 실행된다.
일부 명령들은 단일 클록 사이클에서 프로세싱을 완료하는 단일 사이클 명령들이다. 다른 명령들은 프로세싱을 완료하는데 하나 초과의 클록 사이클을 필요로 한다.
명령 프로세싱 중에 종종 종속성이 발생한다. 한가지 타입의 종속성은 하나의 레지스터가 다른 후행(later) 명령에 의해 판독되어야만 하는 레지스터에 값을 기록할 때 발생한다. 레지스터에 값을 기록하는 명령이 실행되기 위해 하나 초과의 사이클이 필요할 때, 레지스터에 기억된 값을 판독하는 후행 명령은 선행 명령이 실행을 완료할 때까지 기능 정지되어야만 한다. 따라서, 파이프라인 기능 정지는 명령들을 적합하게 실행하기 위해 명령 스트림으로 발생되어야만 한다.
공지된 시스템들에서, 단일-사이클 기능 정지가 발생되려면, 종속성으로 인해 파이프라인 기능 정지를 실행할 지의 여부에 대한 결정이 단일 사이클에 이루어져야만 한다. 명령이 디스패치될 수 있거나 기능 정지되어야만 하는지의 여부를 결정하기 위해 다수의 사이클들을 사용하는 메카니즘들은 멀티플-사이클 기능 정지들을 야기한다. 기능 정지 조건들을 결정하는데 다수의 사이클들이 필요한 것은 개선된 프로세서 주파수를 위해서는 유익하지만, 멀티플 기능 정지 사이클들은 CPI(cycles per instruction)로 측정된 프로세서 성능을 위해서는 불리하다.
따라서, 종속성 검출에 응답해서 단일 사이클 파이프라인 기능 정지를 발생하기 위해 명령들을 처리하는 파이프라인 프로세서가 필요한데, 여기서 검출 메카니즘은 명령 디스패치를 제어하는데 다수의 사이클들을 필요로 한다.
본 발명의 목적은 종속성을 추론적으로 결정하기 위한 파이프라인 프로세서 및 방법을 제공하는데 있다. 본 프로세서는 다수의 명령들을 순서대로 처리한다. 추론 검출 회로는 다수의 클록 사이클들을 사용하여 종속성이 존재하는지를 결정한다. 추론 검출 회로는 추론적 종속성이 존재한다는 결정에만 응답해서 단일-사이클 파이프라인 기능 정지를 실행한다.
본 발명의 여타 목적들, 기능들, 및 장점들은 이하의 상세한 설명을 통해 명백해질 것이다.
도 1은 본 발명의 방법 및 시스템에 따른 순서(in-order) 디스패치의 파이프라인 프로세서를 그림으로 도시한 도면.
도 2는 본 발명의 방법 및 시스템에 따른 도 1의 시퀀서 유닛에 포함된 기능 정지 발생 회로를 더 자세히 그림으로 도시한 도면.
도 3은 본 발명의 방법 및 시스템에 따른 컴퓨터 시스템의 제1 레지스터 어드레스 큐 및 추론 레지스터 어드레스 큐를 도시한 도면.
도 4는 본 발명의 방법 및 시스템에 따른 프로세서의 동작을 설명하는 상태 전이표.
<도면의 주요 부분에 대한 부호의 설명>
10 : 프로세서
11 : 시스템 버스
12 : 버스 인터페이스 유닛
14 : 명령 캐시
16 : 데이터 캐시
18 : 시퀀서 유닛
20 : 브랜치 유닛
28 : 로드/기억 유닛
30 : 부동 소수점 유닛
본 발명의 양호한 실시예 및 장점들은 도 1 내지 도 4를 참조하여 보다 양호하게 설명되고, 첨부된 도면의 유사한 참조 부호들은 유사한 부품들을 나타낸다.
본 명세서에는 종속성을 추론적으로 결정하기 위한 파이프라인 프로세서 및 방법이 기술되어 있다. 종속성은 데이터 종속성 및 구조적 종속성을 포함한다. 프로세서는 다수의 명령들을 순서대로 처리할 수 있다. 추론적 결정은 종속성이 존재하는지의 여부에 대한 것이다. 단일-사이클 파이프라인 기능 정지는 추론적 종속성이 존재한다는 결정에만 응답해서 발생된다.
제1 해저드 검출 회로 및 제1 레지스터 어드레스 큐는 실제 종속성 해저드가 존재하는지를 결정하기 위해 제공된다. 또한, 추론 해저드 검출 회로 및 추론 레지스터 어드레스 큐는 추론적 종속성 해저드가 존재하는지를 결정하기 위해 제공된다. 추론 해저드가 존재하면, 파이프는 단일 NOP 명령을 파이프에 삽입함으로써 하나의 사이클 동안만 기능 정지된다.
본 발명은 종속성 검출이 추론 방식으로 완료되기 때문에 단일-사이클동안만 기능 정지를 실행할 수 있다. 따라서, 종속성 해저드가 명령 전에 검출되어 해저드가 디스패치되게 한다.
도 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)는 범용 구조 레지스터들("GRPs")로부터 소스 오퍼랜드 정보를 입력한다. 양호한 실시예에서, 범용 레지스터는 다른 실행 유닛들로부터의 결과들을 레지스터에 먼저 기억시키지 않고 "발송"(또는 "통과")시킬 수 있다. 또한, FXUA(22) 및 FXUB(24)는 캐리 비트("CA") 레지스터(42)로부터 "캐리 비트"를 입력한다. FXUA(22), FXUB(24), CFXU(26) 및 LSU(28)는 GRP들(32)에게 기억될 동작 결과들(행선 오퍼랜드 정보)을 출력한다. 또한, CFXU(26)는 특정 목적의 레지스터들("SPRs"; 40)과 소스 오퍼랜드 정보 및 행선 오퍼랜드 정보를 입출력한다.
FPU(30)는 부동 소수점 구조 레지스터들("FRPs"; 36)로부터의 소스 오퍼랜드 정보를 입력한다. 양호한 실시예에서, 부동 소수점 구조 레지스터들은 다른 실행 유닛들로부터의 결과들을 레지스터에 먼지 기억시키지 않고 "발송"(또는 "통과")시킬 수 있다. FPU(30)는 FPR(36)에게 기억될 동작 결과들(행선 오퍼랜드 정보)을 출력한다.
로드 명령에 응답해서, 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개의 스테이지들, 즉, 페치, 디스패치, 실행, 회신(writeback), 및 완료로서 처리된다.
페치 스테이지에서, 시퀀서 유닛(18)은 브랜치 유닛(20) 및 시퀀서 유닛(18)과 연관하여 상술된 명령 시퀀스를 기억하고 있는 하나 이상의 메모리 어드레스들로부터의 하나 이상의 명령들을 (명령 캐시(14)로부터) 선택적으로 입력한다.
디스패치/디코드/발행(issue) 스테이지에서, 시퀀서 유닛(18)은 실행 유닛들(20, 22, 24, 26, 28, 30)의 제1 명령을 디코드하고 디스패치한다. 디스패치 스테이지에서, 오퍼랜드 정보가 디스패치 명령들을 위해 선택된 실행 유닛들에게 제공된다. 프로세서(10)는 프로그램된 시퀀스 순서대로 명령들을 디스패치한다.
실행 스테이지에서, 실행 유닛들은 디스패치된 명령들을 실행하고 GPR들(32), FPR들(36), SPR들(40), 및 캐리 비트 레지스터(42)에 기억될 연산 결과들(행선 오퍼랜드 정보)을 출력한다.
회신 스테이지에서, 상이한 유닛들로부터의 출력 결과들은 적합한 레지스터들에게 기록된다. 상이한 명령들이 결과들을 산출하는데 상이한 수의 사이클들을 필요로할 수 있기 때문에, 회신은 프로그램된 명령 시퀀스에 대하여 "순서 없이(out of order)" 발생할 수 있다.
시퀀서 유닛(18)은 다수의 실행 유닛들로부터의 정보를 누적하고 명령들이 예외 조건 없이 종료되었는지를 결정한다. 현재의 명령을 포함해서 모든 이전 명령들이 예외 조건 없이 "종료(finished)"되었으면, 현재의 명령에 의해 겹쳐쓰여진 레지스터의 이전 구조 값들은 더 이상 히스토리 파일에 기억될 필요가 없고, 명령은 "완료(completed)"되었다. 따라서, 프로세서(10)는 프로그램된 시퀀스 순서대로 명령들을 "완료"한다. 예외 조건이 발생하면, 시퀀싱 유닛은 GPR들에게 예외를 야기하는 명령 전의 구조 값들을 복원하게 한다. 시퀀싱 유닛은 다음 유효 명령 어드레스로부터의 명령들을 "리페치(refetch)"한다.
도 2는 본 발명의 방법 및 시스템에 따른 도 1의 시퀀서 유닛에 포함된 기능 정지 발생 회로를 더 자세히 그림으로 도시한 것이다. 기능 정지 발생 회로(200)는 제1 해저드 검출 회로(202)와 제1 레지스터 어드레스 큐(204)를 포함하는 제1 검출 회로(203), 및 추론 해저드 검출 회로(206)와 추론 레지스터 어드레스 큐(208)를 포함하는 추론 검출 회로(205)를 포함한다. 제1 해저드 검출 회로(202)와 제1 레지스터 어드레스 큐(204)는 종속성으로 인한 실제 해저드가 존재할 때 제1 해저드 신호를 생성하는데 이용된다. 검출된 종속성은 데이터 또는 구조적 리소스 종속성일 수 있다. 추론 해저드 검출 회로(206)와 추론 레지스터 어드레스 큐(208)는 종속성으로 인한 추론 해저드가 존재할 때 추론 해저드 신호를 생성하는데 이용된다. 역시, 검출된 종속성은 데이터 또는 구조적 종속성일 수 있다.
명령 버퍼들(210, 212, 214, 216, 218)은 명령들을 기억하기 위해 포함된다. 버퍼(212)는 디스패치될/발행될 다음 명령을 기억하는데 사용된 디스패치 버퍼이다. 버퍼들(214, 216, 218)은 추론 명령들을 기억한다. 상기 버퍼들에 기억된 명령들은 캐시 라인으로부터의 버퍼(212)의 명령과 함께 시퀀스 순서로 명령 페치 유닛(220)에 의해 페치된 명령들이다. 가장 최근에 디스패치된 명령을 포함하는 명령 버퍼(210)가 포함된다.
명령들은 명령 버퍼(212)로부터 펑션 유닛으로 발행된다. 명령 버퍼들(214, 216, 218)은 버퍼(212)의 명령 다음의 다음 시퀀스 명령들을 나타낸다. 매 사이클에서, 상태 머신(222)은 다음 시퀀스 명령 세트를 로드하기 위해 도면의 위쪽으로 시프트하거나, 명령 캐시(도시되지 않음)로부터의 새로운 명령 세트를 로드하거나, 발행 큐를 홀드하도록 명령 버퍼들을 제어한다. 명령 버퍼(212)의 명령과 이전에 발행되었지만 종료되지 않았고 여전히 머신의 리소스들을 차지하고 있는 명령들 간에 리소스 충돌이 있는 한 발행 큐는 홀드되어야만 한다.
종속성 검출 회로(200)는 디코드 회로(201), 이전 명령 정보 기억부(204) 및 해저드 검출 회로(202)를 포함한다. 디코드 회로(201)는 상태 머신(222)으로부터의 "발행 유효" 신호 뿐만 아니라 명령 디스패치 버퍼(21)로부터 발행된 현재 명령을 수신한다. 디코드 회로(201)는 이전 명령 정보 기억부(204)와 해저드 검출 회로(202)에게 타깃 레지스터 어드레스들과 같이 명령이 사용하는 리소스들과 펑션 유닛들 또는 버스들과 같은 구조적 리소스들을 나타내는 디코드된 정보를 제공한다. 디코드 회로(201)는 또한 리소스들이 요구된 명령 파이프라인 스테이지들을 나타내는 정보를 제공한다.
이전 명령 정보 기억부(204)는 디코드 회로(201)로부터 새롭게 발행된 명령, 상태 머신(222)으로부터의 "발행 유효" 신호, 및 펑션 유닛들로부터의 명령 진행 신호들에 관한 정보에 응답해서 이전 명령들에 의해 리소스들이 사용중인 정보를 갱신한다. 파이프라인 홀드 없는 순서 파이프라인 머신에서, 이전 명령 정보 기억부(204)는 레지스터들 또는 구조적 리소스들이 사용되고 있는 파이프라인 스테이지들을 나타내는 "원-핫(one-hot)" 정보를 유지하기 위해 시프트 레지스터들과, 타깃 어드레스 레지스터들을 위한 큐 시리즈로서 효율적으로 구현될 수 있다.
해저드 검출 회로(202)는 명령 버퍼(212)의 명령과 진행중인(in flight) 명령(그 리소스들이 기억부(204)에 의해 유지됨) 간에 리소스 충돌이 있는지를 결정한다. 회로(202)는 명령 버퍼(212)로부터의 소스 오퍼랜드 레지스터 어드레스들과 진행중인 명령들의 타깃들을 비교하기 위해 비교기 어레이를 포함한다. 또한, 회로(202)는 진행중인 명령들과 버퍼(212)의 명령 모두에 의해 사용되거나 사용될 구조적 리소스들 중 임의의 리소스들이 한 사이클에서 요구되는지를 결정하기 위한 논리를 포함한다.
오퍼랜드 종속성 해저드 또는 구조 해저드가 존재하면, 해저드 신호가 표명되고, 상태 머신(222)은 "발행 유효" 신호를 표명 해제(de-assert)하여야만 하고, 이전 명령 정보 기억부(204)가 명령 진행을 나타내는 펑션 유닛들로부터의 "사이클 정보" 신호들에 응답해서 갱신되는 동안 명령 버퍼들의 명령을 홀드해야만 한다.
각각의 사이클에서, 명령들은 하나의 버퍼로부터 다음 버퍼로 시프트된다. 예를 들어, 이전 명령들이 시퀀스 순서로 계속 실행되는 한, 현재 버퍼(218)에 위치한 명령은 다음 클록 사이클 동안 버퍼(216)로 시프트된다. 예외가 발생하거나 브랜치 명령이 실행되면, 명령 페치(220)는 상기 명령 버퍼들에게 기억될 새로운 명령들을 페치하게 된다.
2개의 입력들로서 제1 해저드 신호와 추론 해저드 신호를 수신하는 상태 머신(222)이 포함된다. 상태 머신(222)은 명령들의 디스패치와 하나의 명령 버퍼로부터 다음 버퍼로의 명령들의 시프팅을 제어하는데 사용된다.
추론적 이전 명령 정보 기억부(208)는 명령 버퍼(212)에 기억된 명령을 포함해서 현재 진행 중인 명령들을 위한 타깃 레지스터들의 어드레스들을 포함한다. 제1 이전 명령 정보 기억부(204)는 현재 진행중인 명령들을 위한 타깃 레지스터들의 어드레스들을 포함한다. 진행중인 명령들은 디스패치되었지만 아직 완료 단계에 도달하지 않은 명령들이다.
제3 검출 회로(241)가 또한 포함된다. 제3 검출 회로(241)는 해저드 검출 회로(240)와 이전 명령 정보 기억부(242)를 포함한다. 제3 검출 회로(241)는 명령 버퍼(212)에 결합되고 검출 회로(203)가 수신하는 신호들과 동일한 신호들을 수신한다. 제3 검출 회로(241)는 회로(203)가 동작하는 디스패치 스테이지(D 스테이지) 대신에 실행 스테이지(X 스테이지)에서 회로(241)가 동작한다는 점을 제외하고는 제1 검출 회로(203)와 유사한 방식으로 동작한다. 따라서, 이전 명령 정보 기억부(242)는 파이프의 C 및 W 스테이지들에서의 명령들을 위한 타깃들을 포함한다. 제3 검출 회로는 종속성이 검출될 때 제2 레벨의 제1 해저드 신호를 생성한다.
도 3은 본 발명의 방법 및 시스템에 따른 컴퓨터 시스템의 제1 레지스터 어드레스 큐 및 추론 레지스터 어드레스 큐를 도시한 것이다. 추론 레지스터 어드레스 큐는 현재 진행중인 명령들을 위한 타깃들과 현재 디스패치되고 있는 명령을 위한 타깃들을 홀드한다. 따라서, 추론 레지스터 어드레스 큐(208)는 현재 버퍼(212)에 있는 명령인 D 스테이지, 즉, 디스패치 스테이지에 있는 명령, D 스테이지 다음이고, 실행 스테이지의 제1 파트인 X 스테이지, X 스테이지 다음이고 실행 스테이지의 제2 파트인 C 스테이지, 및 C 스테이지 다음이고 회신 스테이지인 W 스테이지의 명령을 위한 타깃들을 홀드한다. 제1 레지스터 어드레스 큐(204)는 현재 X 스테이지, C 스테이지, 및 W 스테이지에 있는 명령을 위한 타깃들을 홀드한다.
본 기술 분야에 숙련된 자들은 레지스터 어드레스 큐들이 리소스들을 여전히 차지하거나 결과들을 산출할 수 있는 현재 진행중인 모든 명령들을 홀드할만큼 충분히 깊어야만 함을 알 것이다.
명령들이 하나의 명령 버퍼로부터 다음 버퍼로 시프트되기 때문에, 각각의 레지스터 어드레스 큐의 입구들도 또한 시프트된다.
해저드 검출 회로들(202, 206)은 해저드가 존재하는지를 결정하기 위해 관련 레지스터 어드레스 큐들과 함께 사이클 정보 신호를 사용한다. 해저드 검출 회로가 해저드 검출 회로와 관련된 명령 버퍼의 타깃들이 관련 레지스터 어드레스 큐의 타깃들 중 한 타깃과 일치한다고 결정할 때, 해저드가 존재하는데, 상기 명령은 제 시간에 실행을 완료하지 않게 된다. 해저드 검출 회로는 관련 명령 버퍼의 명령을 위한 유효 값들을 홀드하는 레지스터들에 대해 진행중인 명령들이 제시간에 실행을 완료할지의 여부를 결정하기 위해 사이클 정보 신호를 사용한다.
도 4는 본 발명의 방법 및 시스템에 따른 프로세서의 동작을 설명하는 상태 전이표를 도시한 것이다. 상태 전이표는 다수의 해저드 신호들이 현재 표명되는지의 여부에 응답하는 프로세서의 동작을 설명한다.
본 발명은 종속성 검출이 추론 방식으로 완료되기 때문에 단일-사이클동안만 기능 정지를 실행할 수 있다. 따라서, 종속성 해저드가 명령 전에 검출되어 해저드가 디스패치되게 한다.
구체적으로 말하면, 상기 메카니즘은 스칼라 프로세서의 명령 발행에 관해서 기술되었지만, 상기 메카니즘은 슈퍼스칼라 마이크로프로세서의 다수의 펑션 유닛들과 관련된 발행 큐로부터 명령들을 발행하는데도 사용될 수 있다.
양호한 실시예가 특정하게 도시되고 기술되었지만, 본 기술 분야에 숙련된 자들은 다수의 변형들이 본 발명의 원리 및 범위 내에서 이루어질 수 있음을 알 것이다.

Claims (14)

  1. 적어도 하나의 실행 유닛을 포함하며, 다수의 명령들을 순서대로 처리하는 파이프라인 프로세서에서의 방법에 있어서,
    종속성(dependency)이 존재하는지를 추론적으로 결정하는 단계; 및
    종속성이 존재한다는 추론 결정에 응답해서 상기 적어도 하나의 실행 유닛에 상기 종속성을 야기하는 명령을 디스페치하기 전에 단일-클록-사이클 파이프라인 기능 정지(single-clock-cycle pipeline stall)만을 발생하는 단계
    를 포함하는 방법.
  2. 다수의 명령들을 순서대로 처리하는 파이프라인 프로세서에서의 방법에 있어서,
    다수의 클록 사이클들을 사용하여 종속성이 존재하는지를 추론적으로 결정하는 단계; 및
    추론적 종속성이 존재한다는 결정에 응답해서 단일-클록-사이클 파이프라인 기능 정지만을 발생하는 단계
    를 포함하는 방법.
  3. 제 2항에 있어서,
    상기 추론적 종속성이 존재하는지를 결정하기 위해 추론 명령 버퍼에 결합된제1 종속성 해저드 검출 회로를 설정하는 단계를 더 포함하는 방법.
  4. 제 3항에 있어서,
    상기 추론 해저드가 존재한다는 결정에 응답해서 추론 해저드 신호를 표명하는 단계를 더 포함하는 방법.
  5. 제 4항에 있어서,
    상기 추론 해저드 신호의 표명에 응답해서 단일-클록-사이클 파이프라인 기능 정지를 실행하는 단계를 더 포함하는 방법.
  6. 제 5항에 있어서,
    실제 종속성이 존재하는지를 결정하기 위해 추론 명령 버퍼에 결합된 제2 종속성 해저드 검출 회로를 설정하는 단계를 더 포함하는 방법.
  7. 제 6항에 있어서,
    상기 실제 해저드가 존재한다는 결정에 응답해서 제1 해저드 신호를 표명하는 단계를 더 포함하는 방법.
  8. 제 7항에 있어서,
    상기 추론 해저드 신호가 표명되지 않을 때 상기 제1 해저드 신호의 표명에응답해서 멀티플-클록-사이클 파이프라인 기능 정지를 실행하는 단계를 더 포함하는 방법.
  9. 다수의 명령들을 순서대로 처리하는 파이프라인 프로세서에 있어서,
    추론적 종속성 검출에 응답해서 단일-클록-사이클 파이프라인 기능 정지를 실행하기 위해 추론 디코드 회로, 추론적 이전 명령 정보 기억부, 및 추론 해저드 검출 회로를 포함하며, 명령 버퍼 제어를 구현하는데 다수의 클록 사이클들을 필요로 하는 추론 검출 회로; 및
    실제 종속성 검출에 응답해서 멀티플-클록-사이클 파이프라인 기능 정지를 실행하기 위해 제1 디코드 회로, 제1 이전 명령 정보 기억부, 및 제1 해저드 검출 회로를 포함하며, 명령 버퍼 제어를 구현하는데 다수의 클록 사이클들을 필요로 하는 제1 검출 회로
    를 포함하는 파이프라인 프로세서.
  10. 제 9항에 있어서,
    추론 해저드가 존재한다는 결정에 응답해서 추론 해저드 신호를 생성하는 상기 추론 검출 회로를 더 포함하는 파이프라인 프로세서.
  11. 제 9항에 있어서,
    현재 진행중인 명령들에 의해 사용되는 리소스들을 기억하고 명령 디스패치버퍼에 기억된 명령을 위한 상기 추론적 이전 명령 정보 기억부; 및
    상기 추론적 이전 명령 정보 기억부에서 사용중인 추론 명령 리소스들을 위해 필요한 리소스들을 비교하기 위한 상기 추론 해저드 검출 회로를 더 포함하는데, 상기 추론 명령이 상기 디스패치 버퍼에 기억된 상기 명령 후 시퀀스 순서로 다음에 페치된 명령인 파이프라인 프로세서.
  12. 제 11항에 있어서,
    추론 해저드 검출에 응답해서 추론 해저드 신호를 표명하는 상기 추론 검출 회로를 더 포함하는 파이프라인 프로세서.
  13. 제 11항에 있어서,
    실제 해저드의 검출에 응답해서 제1 해저드 신호를 표명하는 상기 제1 검출 회로를 더 포함하는 파이프라인 프로세서.
  14. 제 13항에 있어서,
    상기 디스패치 버퍼에 기억된 상기 추론 해저드를 야기하는 상기 추론 명령 이전에 상기 추론 해저드 신호를 표명하는 상기 추론 검출 회로를 더 포함하는 파이프라인 프로세서.
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 true KR20010077997A (ko) 2001-08-20
KR100523706B1 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)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9983932B2 (en) 2010-05-27 2018-05-29 Samsung Electronics Co., Ltd. Pipeline processor and an equal model compensator method and apparatus to store the processing result

Families Citing this family (11)

* 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
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 上海兆芯集成电路有限公司 指令执行方法及指令执行装置

Family Cites Families (8)

* 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 演算処理装置
KR100309566B1 (ko) 1992-04-29 2001-12-15 리패치 파이프라인프로세서에서다중명령어를무리짓고,그룹화된명령어를동시에발행하고,그룹화된명령어를실행시키는방법및장치
EP0717359A3 (en) * 1994-12-15 1997-02-05 Sun Microsystems Inc Register cache memory for a computer processor
US5699536A (en) 1995-04-13 1997-12-16 International Business Machines Corporation Computer processing system employing dynamic instruction formatting
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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9983932B2 (en) 2010-05-27 2018-05-29 Samsung Electronics Co., Ltd. Pipeline processor and an equal model compensator method and apparatus to store the processing result

Also Published As

Publication number Publication date
EP1152328A3 (en) 2008-04-16
EP1152328A2 (en) 2001-11-07
KR100523706B1 (ko) 2005-10-26
JP2001243071A (ja) 2001-09-07
US6708267B1 (en) 2004-03-16
JP3611304B2 (ja) 2005-01-19

Similar Documents

Publication Publication Date Title
KR100237985B1 (ko) 추론적 로드 명령을 실행하는 프로세서, 그 방법 및 데이터 처리 시스템
KR100270003B1 (ko) 향상된 분기 예측 기법을 사용하는 프로세서 및그 실행 방법
EP1296230B1 (en) Instruction issuing in the presence of load misses
US7877580B2 (en) Branch lookahead prefetch for microprocessors
US6728866B1 (en) Partitioned issue queue and allocation strategy
US5694565A (en) Method and device for early deallocation of resources during load/store multiple operations to allow simultaneous dispatch/execution of subsequent instructions
EP0751458B1 (en) Method and system for tracking resource allocation within a processor
EP1296229B1 (en) Scoreboarding mechanism in a pipeline that includes replays and redirects
US6728872B1 (en) Method and apparatus for verifying that instructions are pipelined in correct architectural sequence
US5901307A (en) Processor having a selectively configurable branch prediction unit that can access a branch prediction utilizing bits derived from a plurality of sources
US6463524B1 (en) Superscalar processor and method for incrementally issuing store instructions
US6338133B1 (en) Measured, allocation of speculative branch instructions to processor execution units
US5898864A (en) Method and system for executing a context-altering instruction without performing a context-synchronization operation within high-performance processors
US7194603B2 (en) SMT flush arbitration
US7254693B2 (en) Selectively prohibiting speculative execution of conditional branch type based on instruction bit
US20080209177A1 (en) Mechanism in a Multi-Threaded Microprocessor to Maintain Best Case Demand Instruction Redispatch
KR100523706B1 (ko) 단일 사이클 파이프라인 스톨을 발생하기 위한 파이프라인 프로세서 시스템 및 방법
JP3736866B2 (ja) スーパーパイプライン式スーパースカラーマイクロプロセッサ用のマイクロコントロールユニット
KR100305487B1 (ko) 특정유형의인스트럭션을동시에처리할수있는방법및데이터프로세싱시스템
EP1296228B1 (en) Instruction Issue and retirement in processor having mismatched pipeline depths
US5850563A (en) Processor and method for out-of-order completion of floating-point operations during load/store multiple operations
US6871275B1 (en) Microprocessor having a branch predictor using speculative branch registers
US6298436B1 (en) Method and system for performing atomic memory accesses in a processor system
JP3721002B2 (ja) メモリ要求を形成するために並列に生成される複数の取出アドレスのうちの1つを選択する、プロセッサおよび命令取出方法
KR100237989B1 (ko) 슈퍼스칼라 프로세서에서 리네임 버퍼를 효율적으로 사용하기 위한 방법 및 시스템

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