KR100404257B1 - 파이프라인 프로세서 아키텍처, 모든 인라인 및 분기인스트럭션을 정확한 구조적인 시퀀스로 프로세서파이프라인에 제공하는 시스템, 및 분기 처리 유닛 - Google Patents

파이프라인 프로세서 아키텍처, 모든 인라인 및 분기인스트럭션을 정확한 구조적인 시퀀스로 프로세서파이프라인에 제공하는 시스템, 및 분기 처리 유닛 Download PDF

Info

Publication number
KR100404257B1
KR100404257B1 KR10-2001-0004490A KR20010004490A KR100404257B1 KR 100404257 B1 KR100404257 B1 KR 100404257B1 KR 20010004490 A KR20010004490 A KR 20010004490A KR 100404257 B1 KR100404257 B1 KR 100404257B1
Authority
KR
South Korea
Prior art keywords
instruction
address
processor
structural
pipeline
Prior art date
Application number
KR10-2001-0004490A
Other languages
English (en)
Other versions
KR20010078183A (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 KR20010078183A publication Critical patent/KR20010078183A/ko
Application granted granted Critical
Publication of KR100404257B1 publication Critical patent/KR100404257B1/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/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/28Error detection; Error correction; Monitoring by checking the correct order of processing
    • 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
    • G06F9/3865Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본원 발명은 파이프라인 중단의 발생을 감소시키기 위해 프로세서 파이프라인에서 인스트럭션 완료가 승인되기 전에 페치된 인스트럭션들의 정확한 구조적인 시퀀싱을 가능하게 하는 방법 및 장치를 개시한다. 인스트럭션 페치 유닛(IFU)에 의해 파이프라인 내로 페치된 모든 인스트럭션들(가령, 인라인(in-line) 및 분기 인스트럭션들)의 어드레스에 대한 시퀀스 체크를 수행하도록 분기 처리 유닛(BPU)이 설계되었다. 제 1 인스트럭션이 페치된다. 구조적인 시퀀스에서의 다음 인스트럭션의 어드레스가 계산되어 BPU에 저장된다. 후속 인스트럭션이 페치되고 그 어드레스는 BPU에 저장되어 있는 다음 인스트럭션 어드레스와 비교되어 그것이 정확한 어드레스인지를 판정된다. 상기 후속 인스트럭션 어드레스가 구조적인 시퀀스의 어드레스와 정합하면, 그 인스트럭션은 라이브성이 있는 것으로 승인된다(즉, 인스트럭션의 실행이 지속된다). 그 어드레스가 정합하지 않는다면, 그 인스트럭션은 킬링(killing)되고(즉, 인스트럭션 실행이 승인되지 않으며), 새로운 인스트럭션이 IFU에 의해 페치된다.

Description

파이프라인 프로세서 아키텍처, 모든 인라인 및 분기 인스트럭션을 정확한 구조적인 시퀀스로 프로세서 파이프라인에 제공하는 시스템, 및 분기 처리 유닛{METHOD AND APPARATUS FOR VERIFYING THAT INSTRUCTIONS ARE PIPELINED IN CORRECT ARCHITECTURAL SEQUENCE}
본 발명은 전반적으로 데이터 처리 시스템에 관한 것으로, 특히 데이터 처리 시스템 내의 페치된 인스트럭션의 시퀀싱을 체크하기 위한 방법 및 장치에 관한 것이다. 보다 구체적으로, 본 발명은 프로세서 파이프라인 내에 위치한 인스트럭션들의 정확한 구조적인 시퀀싱(architectural sequencing)을 가능하게 하는 방법 및 장치에 관한 것이다.
기존의 프로세서는 로딩될 인스트럭션을 요구하기 위한 인스트럭션 페치 유닛(IFU), 인스트럭션을 저장하기 위한 인스트럭션 캐시, 실행을 위해 인스트럭션 캐시로부터 페치된 인스트럭션들을 일시적으로 저장하기 위한 인스트럭션 버퍼, 순차적인 인스트럭션들을 실행하기 위한 다수의 실행 유닛, 분기 인스트럭션들을 실행하기 위한 분기 처리 유닛(BPU), 인스트럭션 버퍼로부터의 순차적인 인스트럭션들을 특정 실행 유닛으로 디스패칭하기 위한 디스패치 유닛, 및 실행을 종료하였지만 완성되지 않은 인스트럭션들을 일시적으로 저장하기 위한 완료 버퍼(completion buffer)를 포함할 수 있다.
이러한 기존의 프로세서들에서, 분기 인스트럭션들 및 순차적 인스트럭션들은 상이하게 처리된다. 어드레스 분석(address resolution), 혹은 어드레스가 정확하거나 관련된 인스트럭션과 정합한다는 것을 보장하는 프로세스는 통상적으로 BPU에 의해 분기 인스트럭션에 대해서 행해진다. BPU는 분기 인스트럭션에 대해 공급된 타깃 어드레스 및 분기 방향을 계산된 구조적인 다음 어드레스(architectural next address)와 비교한다. 다른 모든 인스트럭션들(가령, 인라인 인스트럭션(inline instructions))은 프로세서 파이프라인 내에 위치할 경우 정확한 구조적인 시퀀스를 따르도록 가정한다. 이러한 가정이 부정확한 것으로 판명될 경우(즉, 인스트럭션이 비순차적으로 될 경우), 데이터 종속성이 지켜지지 않는 동안, 프로세서에서 인스트럭션의 정규 처리를 지속시킬 수 없는 하드웨어 결함, 캐시 라인에서의 정보 교차, 동기식 예외 및 인스트럭션 시퀀싱 오류 등(이는 프로세서에 의해 유용한 정보가 처리되지 않는 파이프라인 중단으로 지칭됨)을 발생시키며, 이는 궁극적으로 프로세서의 효율을 감소시킨다.
따라서, 본 발명은 프로세서에 의해 파이프라인 내로 페치된 모든 인스트럭션들이 정확한 구조적인 시퀀싱을 따른다는 것을 보장하기 위한 시스템 혹은 장치를 갖는 것이 보다 바람직하고 유익할 것이라는 것을 인식하고 있다. 모든 인스트럭션들을 정확한 시퀀스로 제공하기 위해 인스트럭션 어드레스 분석(instruction address resolution)을 지원하는 시스템은 커다란 개선점이 될 것이다. 따라서, 본 발명은 상기 시스템이 부정확한 순서의 인스트럭션이 존재하여 그 파이프라인으로부터 제거될 경우에 인스트럭션의 시퀀싱을 효율적으로 재개함으로써 한층 더 개선될 것이라는 것을 인식할 수 있다.
전술한 것들 외에도 기타 모든 이점들은 본 명세서에 제시되고 있다.
본원 발명은 파이프라인의 중단 발생을 감소시키기 위해 프로세서 파이프라인에서의 인스트럭션 실행을 승인하기 이전에 페치된 인스트럭션들의 정확한 구조적인 시퀀싱을 가능하게 하는 방법 및 장치를 개시한다. 인스트럭션 페치 유닛(IFU)에 의해 파이프라인 내로 페치된 모든 인스트럭션들(가령, 인라인(in-line) 및 분기 인스트럭션들)의 어드레스에 대한 시퀀스 체크를 수행하도록 분기 처리 유닛(BPU)이 설계되었다. 제 1 인스트럭션이 페치된다. 구조적인 시퀀스에서의 다음 인스트럭션의 어드레스가 계산되어 BPU에 저장된다. 후속 인스트럭션이 페치되고 그 어드레스는 BPU에 저장되어 있는 상기 다음 인스트럭션 어드레스와 비교되어 그것이 정확한 어드레스인지 판정된다. 상기 후속 인스트럭션 어드레스가 구조적인 시퀀스의 어드레스와 정합하면, 그 인스트럭션은 라이브성이 있는 것으로 승인된다(즉, 인스트럭션 실행을 지속한다). 그 어드레스가 정합하지 않는다면, 그 인스트럭션은 킬링되고(즉, 인스트럭션 실행이 승인되지 않으며), 새로운 인스트럭션이 IFU에 의해 페치된다.
바람직한 실시예에서, 인스트럭션들은 파이프라인의 임의의 스테이지에서 킬링될 수 있다(killed). 인스트럭션이 킬링되면, 그 인스트럭션의 라이브 신호는 표명 해제되고(de-asserted), 프로그램 카운터를 증가시키지 않는 무 연산(non operation;nop) 인스트럭션인 것처럼 파이프라인의 나머지 부분을 통과하게 된다. 분기 유닛 내의 레지스터는 구조적인 시퀀스 어드레스를 보유한다. 부정확한 어드레스로부터의 라이브 인스트럭션이 BPU를 통과할려고 한다면, BPU는 인스트럭션을 킬링시킨다. 그러한 인스트럭션이 킬링될 때, 구조적으로 정확한 인스트럭션 어드레스는 IFU로 로딩되어 IFU는 최종적으로 정확한 인스트럭션이 페치되었던 포인트로부터 인스트럭션의 페치를 지속할 수가 있다. 따라서, 거의 동시적인 인스트럭션 페칭 재개가 행해지고, 이는 실질적으로 나중의 파이프라인 스테이지들에서의 파이프라인 중단의 발생을 감소시킨다.
본원 발명의 전술한 목적, 특징, 및 이점들 뿐만 아니라 추가적인 것들은 후술하는 상세한 설명에서 보다 명확해 질 것이다.
도 1은 본 발명의 일 실시예에서 사용되는 데이터 처리 시스템의 블럭도,
도 2는 본 발명의 방법 및 시스템을 이용하는 프로세서의 일실시예의 블럭도,
도 3a는 본 발명의 구현예에 따른 인스트럭션 처리시의 여러 스테이지를 도시한 블럭도,
도 3b는 본 발명의 바람직한 구현예에 따른 소정의 파이프라인 스테이지의 상위 레벨의 블럭도,
도 4는 본 발명의 바람직한 실시예에 따른 인스트럭션 라이브 로직 블럭도.
도면의 주요 부분에 대한 부호의 설명
10 : 프로세서 100 : 데이터 처리 시스템
114 : 입/출력 장치 118 : 일시 메모리 장치
120 : 버스 122 : 직접 채널
도 1을 참조하면, 본 발명의 바람직한 실시예에 이용되는 데이터 처리 시스템(100)의 기본적인 구성의 블럭도가 개시되고 있다. 데이터 처리 시스템(100)은, 사용자 인터페이스를 위한 입/출력 장치(114)(가령, 디스플레이 모니터, 키보드, 및 그래픽 포인팅 장치), 데이터 처리 시스템의 운영 체제 및 애플리케이션을 저장하기 위한 영구 메모리 장치(116)(가령, 하드 디스크), 현재의 프로그램 인스트럭션의 실행시 프로세서(10)에 의해 이용되는 일시 메모리 장치(118)(가령, 랜덤 액세스 메모리, 즉 RAM)를 포함하는 수개의 주변 장치에 접속된 적어도 하나의 프로세서(10)를 구비하고 있다. 프로세서(10)는 버스 인터페이스 유닛(도시안됨)에 의해 제어되는 버스(120) 혹은 직접 채널(122)(버스 브리지를 이용함으로써 하나 이상의 버스(120)가 제공될 수도 있음)을 포함하는 다양한 수단에 의해 주변 장치와 통신을 행한다.
본 기술 분야의 당업자는 또한 도 1의 블럭도에 도시된 것과 연계하여 다른 구성요소들이 사용될 수 있음을 이해할 것이다. 즉, 프로세서(10)에 접속된 디스플레이 어댑터가 비디오 디스플레이 모니터를 제어하는데 사용될 수도 있으며, 메모리 제어기가 일시 메모리 장치(118)와 프로세서(10) 사이의 인터페이스로서 사용될 수도 있다. 데이터 처리 시스템(100)은 또한 데이터 처리 시스템(100)이 전원을 인가받을 때마다 주변 장치들 중의 하나(통상적으로 영구 메모리 장치(116))로부터 운영 체제를 탐색하여 로딩하는 것을 주 목적으로 하는 펌웨어(124)를 포함하기도 한다. 바람직한 실시예에서, 데이터 처리 시스템(100)의 프로세서(10)는 고주파수의 쇼트 파이프라인형 프로세서(short-pipelined processor)이다.
도 2는 본 발명의 바람직한 실시예에 따른 프로세서(10)의 상위 레벨의 블럭도이다. 프로세서(10)는 도 1에 도시된 바와 같이 데이터 처리 시스템(100) 내에 위치할 수도 있다. 바람직한 실시예에서, 프로세서(10)는 단일 집적 회로인 고주파 프로세서이다. 따라서, 프로세서(10)는 후술하는 바와 같이, 모두 집적 회로로 형성되는 다양한 실행 유닛, 레지스터, 버퍼, 메모리, 및 기타 기능 유닛을 포함한다. 프로세서(10)는 버스 인터페이스 유닛(BIU)(12)을 통해 시스템 버스(120)에 접속된다. BIU(12)는 프로세서(10)와 메인 메모리와 같은 시스템 버스(120)에 접속된 기타 장치 간의 정보 전달을 제어한다.
BIU는 프로세서(10) 내의 인스트럭션 캐시(14)와 데이터 캐시(16)에 접속된다. 인스트럭션 캐시(14) 및 데이터 캐시(16)와 같은 고속의 캐시로 인해 프로세서(10)는 메인 메모리로부터 인스트럭션 캐시(14) 및 데이터 캐시(16)로 이전에 전달된 인스트럭션이나 데이터의 세트로의 비교적 고속 액세스 시간을 달성할 수 있어서, 데이터 처리 시스템의 동작 속도를 향상시킬 수 있다.
인스트럭션 캐시(14)는 또한 인스트럭션 페치 유닛(IFU)(17)에 접속된다. 실시예에서, 프로세서(10)의 실행 회로는 분기 처리 유닛(BPU)(18), 고정 포인트 유닛(FXU)(22), 로딩/저장 유닛(LSU)(28), 및 플로팅 포인트 유닛(FPU)(30)을 포함하는 다수의 실행 유닛을 포함한다. 본 기술 분야에서 잘 알려진 바와 같이, 실행 유닛 FXU(22), LSU(28), 및 FPU(30)의 각각은 각 처리 사이클 동안 특정 클래스의 순차 인스트럭션 내의 하나 이상의 인스트럭션을 실행한다. 가령, FXU(22)는 지정된 범용 레지스터(GPR)(32)로부터 수신된 소스 오퍼랜드(source operand)를 사용하여 가산, 감산, ANDing, ORing, 및 XORing과 같은 고정 포인트 산술 연산을 수행한다. 고정 포인트 인스트럭션의 실행 후에는, FXU(22)는 인스트럭션들의 데이터 결과를 하나 이상의 GPR(32)에 출력한다. 이와는 반대로, FPU(30)는 플로팅 포인트 레지스터(FPR)(36)로부터 수신된 소스 오퍼랜드에 대해 플로팅 포인트 곱셈 및 나눗셈과 같은 플로팅 포인트 연산을 수행한다. FPU(30)는 플로팅 포인트 인스트럭션의 실행으로부터 발생하는 데이터를 선택된 FPR(36)로 출력한다. 그 이름으로부터 암시되듯이, LSU(28)는 메모리(가령, 데이터 캐시(16) 혹은 메인 메모리)로부터 선택된 GPR(32) 혹은 FPR(36)로 데이터를 로딩하거나 혹은 선택된 GPR(32) 혹은 FPR(36)로부터 메모리로 데이터를 저장하는 플로팅 포인트 및 고정 포인트 인스트럭션을 실행한다.
바람직한 실시예에서, IFU(17)는 순차 및 분기 인스트럭션의 결과를 BPU(18)로 출력한다. 분기 예측은 임의의 종래 방법이나 새롭게 개발된 방법을 사용하여 완료될 수도 있다. 가령, 분기 예측은 IFU(17) 내에서 완료될 수도 있다. BPU(18)는 분기 인스트럭션을 실행하여 분기가 취해지는지의 여부를 계산하며, 분기가 취해지면 타깃 어드레스가 실행된다. BPU(18)는 또한 분기 예측 오류를 검출하기 위해 불확실한 분기 스트림을 체크한다. 또한, 바람직한 실시예에서, BPU(18)는 후술하는 바와 같이 본 발명의 구조적인 시퀀싱 특징을 수행하기 위해 설계된다. BPU(18)는 IFU(17)로부터 모든 페치 인스트럭션과 대응하는 어드레스들을 수신한다. BPU(18)는 또한 조건 세트 레지스터(condition set register)(20)로부터 정보를 수신하며, 상기 조건 세트 레지스터는 카운트 레지스터(CTR)(21), 링크 레지스터(LR)(23), 및 조건 레지스터(CR)(25)를 포함한다. 조건 세트 레지스터(20)는 처리시 FXU(22)에 의해 세트된다. 최종적으로, BPU(18)는 FXU(22), LSU(28), 및 FPU(30)로부터의 예외 조건(가령, 실행 회로 내에서 오류의 인스트럭션 실행에 기초하여 파이프라인을 중단시킬 수도 있는 임의의 예외 조건)을 수신한다. BPU(18)는 FIFO(15)를 포함하는 인스트럭션 시퀀서(19)를 포함하고 있다. FIFO(15)는 아래의 도 4와 관련하여 논의되는 바와 같이 실행 회로 내에서 처리되는 인스트럭션을 킬링할 것이지 아닌지의 여부를 결정하는 로직 블럭이다. BPU(18)는 따라서 분기 예측 오류 지연의 지연량을 최소화 하면서 인라인 인스트럭션의 정확한 구조적인 시퀀싱을 보장하도록 동작한다.
인스트럭션들은 파이프라인 스테이지들의 시퀀스에서 각각의 FXU(22), LSU(28), FPU(30), 및 BPU(18)에 의해 처리된다. 도 3a는 본 발명의프로세서(10) 내에서 인스트럭션을 처리하기 위한 파이프라인 스테이지들을 도시하고 있다. 이러한 스테이지들은 인스트럭션 페치 요구(I), 인스트럭션 페치(F), 디코딩/디스패칭(D), 실행(X), 체크(C), 기록(W), 롤 백(roll back)(R) 및 제 2 롤 백(S)을 포함한다. 본 발명은 기본적으로는 후술될 D, X, C, 및 W에 관한 것이다.
도 2를 참조하면, 본 발명은, 인스트럭션 어드레스들의 구조적인 시퀀싱을 계산하고, 정확한 시퀀스가 프로세서 파이프라인을 따르고 있는지를 확인하고, 부정확한 인스트럭션이 완료되기 전에 부정확한 인스트럭션들이 종료되도록 하며, 그리고 정확한 어드레스에서 인스트럭션 페칭을 재개하도록 BPU(18)를 사용한다.
BPU(18)는 바람직하게도 수개의 범용의, 커스텀 다이나믹 매크로, 소형의 래치 라이브러리, 자동 발생 프로그래머블 로직 어레이(PLA) 및 단일 스테이지의 통합 로직을 사용하여 구현된다. 바람직한 실시예에서, BPU(18)는 네 개의 비교 유닛(CU), 단일의 오퍼랜드 비교 유닛(CU_LT), 세 개의 가산기, 및 13 개의 PLA를 사용하여 설계된다. 상기 다이나믹 매크로의 출력은 다음에 단일 로직 스테이지 내에서 다른 출력들과 통합될 수 있다. 단일의 로직은 정적인 2-입력의 NAND 게이트, 정적인 2-입력의 NOR 게이트, 혹은 도미노(domino) 3A30 게이트로 구성된다. 이러한 신호들은 다음에 증폭되거나 반전되고 배분되는데, 이들은 래치 혹은 멀티플렉서-래치(Mux-Latch) 셀렉트로의 입력이 된다. 바람직한 실시예에서, BPU 설계시의 모든 레지스터들은 6-입력의 멀티플렉서-래치가 된다.
도 3b는 프로세서 파이프라인 도면이다. 그것은 구조적인 시퀀스의 인스트럭션의 처리가 발생하는 중간 스테이지를 포함하는 BPU 파이프라인을 도시하고 있다. 모든 인라인 인스트럭션 페칭과 분기 인스트럭션들은 BPU(18) 내에서 처리된다.
파이프라인의 페치 스테이지는 IFU에 의해 제어된다. 페치 스테이지 동안, IFU(17)는 인스트럭션 캐시(14)로부터 하나 이상의 메모리 어드레스와 관련한 하나 이상의 인스트럭션을 검색한다. 인스트럭션 캐시(14)로부터 페칭되는 인스트럭션들은 IFU(17)에 의해 처리를 위해 직접 BPU(18)로 전달된다.
F 스테이지의 종료시, BPU(18)는 (1) 인스트럭션 버퍼(IB), (2) 유효한 인스트럭션 페치 어드레스(IFA), (3) BPU(18)에게 IFU가 다양한 스테이지에서의 인스트럭션들이 완료가 승인되지 않을 것을 요구하는지를 통지하는 표시값(indicator value)을 포함하는 수개의 입력을 IFU로부터 수신한다.
디코딩(D) 스테이지
디코딩 스테이지 동안, IFU(17)는 하나 이상의 인스트럭션들을 디코딩하여 실행 유닛들 BPU(18), FXU(22), LSU(28) 및 FPU(30) 중의 적절한 것들로 디스패칭한다. 디코딩에는 그 인스트럭션의 특성을 포함하는 인스트럭션의 타입과 그 인스트럭션이 디스패칭될 실행 유닛을 결정하는 것이 포함된다. 그 디코딩에는 또한 그 인스트럭션이 불확실한지의 여부를 결정하는 것이 포함된다.
분기가 BPU의 디코딩 사이클(D)에 있는 동안, 분기 텍스트는 인스트럭션 버퍼들(301) 중 제 1 인스트럭션 버퍼(IBO) 내에 위치하며 분기 인스트럭션의 어드레스는 IFA 레지스터(303) 내에 위치하게 된다. 부호 확장기(305)는 분기 텍스트로부터 16 및 26 비트 이미디어트(immediates)를 추출하여 부호 확장하며, 상기 비트 이미디어트들 중의 하나는 PCAbs 레지스터(309)에 래치된다. 가산기(306)는 IFA(303)를 증가시켜 다음의 인라인(NextInlx) 레지스터(311)로 전달한다. 분기 인스트럭션 그 자체는 OP1(307) 내로 그리고 IFA(303)는 OP1A 레지스터(308) 내로 전달된다.
바람직한 실시예에서, 특정 인스트럭션에 대해 BPU(18)는, 인스트럭션 프레데서(instruction predecessor)가 정확한 인스트럭션 시퀀스에 속하며, 인스트럭션 어드레스에 기초하여 구조적인 시퀀스 내의 다음 인스트럭션의 어드레스를 계산한다고 가정한다. BPU(18)는 그 시퀀스 내의 다음 인스트럭션의 어드레스를 정수 파이프라인의 체크(C) 스테이지의 종료시에 RealPC 레지스터(327)에 저장한다.
실행(X) 스테이지
실행(X) 스테이지 동안, 분기 이미디어트(PcAbs)는 (OPIA 내의) 페치 어드레스에 가산된다(블럭 314). OP1 래치(307)내의 오피코드(opcode)는 분기 타깃(BrTgt) 및 UVec 디코더를 제공하며, 이는 BrTgt 및 UVec 레지스터(313)에 저장되어 있다. UVec 디코더는 사용가능한 마이크로코드 엔트리 어드레스를 마련하지만, BrTgt 디코더는 NextTgt 래치(317) 내의 적절한 분기 타깃을 선택하기 위해 멀티플렉서 셀렉트를 마련하고 있다. 인스트럭션은 OP1 레지스터(307)로부터 OP2 레지스터(315)로 전달된다. 또한, 인스트럭션 어드레스는 OP1A 레지스터(308)로부터 IAdrC 레지스터(321) 내로 전달된다.
분기의 실행 스테이지(X)는 또한 사용가능한 선행 조건 코드 세팅 인스트럭션의 체크 스테이지(C)가 된다. BPU(18)는 또한 실행(X) 스테이지 동안 분기 타깃 어드레스를 발생시켜 그 분기를 디코딩한다. 타깃 어드레스는 수 개의 방식, 즉 절대 이미디어트(absolute immediate), 상대적인 대체(relative displacement), 에뮬레이션 루팅 벡터(emulation routine vector), 혹은 여러 레지스터들 중의 한 레지스터를 통해 생성될 수 있다. 가산기(314)는 분기 어드레스(308)와 이미디어트(309)를 합산한다. OP1에 의해 구동된 두개의 PLA는 그 분기를 디코딩한다. 하나의 PLA는 에뮬레이션 벡터를 생성하지만, 나머지 하나는 타깃 멀티플렉서를 구동시키는 셀렉트 신호와, 다음 스테이지에서 처리를 위해 래치된 두개의 신호, 즉 항상 분기(branch_always) 및 분기없슴(branch_never) 신호를 생성한다.
체크(C) 스테이지
체크(C) 스테이지에서, IFU(17)는 구조적인 프로그램 카운터(RealPC)(327)가 어떻게 갱신되며 인스트럭션 추측기(instruction speculator)가 정확한 인스트럭션 스트림을 전달하였는지의 여부를 결정한다. 다음의 RealPC 어드레스는 (1) 분기가 취해지면 NextTgt(317)이거나, (2) 분기가 취해지지 않으면 NextInl(319)이거나, 혹은 (3) 적합한 예외 어드레스일 수 있다. 그러나, 만약 프로세서가 진행할 수 없다면, 재페칭(re-fetch)이 요구될 경우 현재의 RealPC(327)가 사용된다.
인스트럭션이 체크(C) 사이클로 진입할 경우, 타깃 어드레스, 인라인 어드레스 및 조건 코드 레지스터(CR)(316)가 모두 계산된다. NextTgt 레지스터(317)로부터의 출력은 RetRegs 레지스터(325) 및 RealPC 레지스터(327)로 전달된다. 인스트럭션 어드레스는 또한 IAdrC 레지스터로부터 IAdrW 레지스터(331)로 전달된다. 이러한 정보는 래치에서 사용가능하게 만들어지며, 분기 제어(323)는 다음 인스트럭션 타입이 무엇인지를 결정한다.
상기 다음 인스트럭션과 관련하여 네 개의 사용가능한 인스트럭션 타입이 존재한다. 즉, (1)예외가 존재해야만 하는 타입과, (2)인스트럭션이 킬링(kill)되어야만 하는 타입과, (3)인스트럭션이 취해진 분기이어야만 하는 타입과, 혹은 (4)그 인스트럭션이 취해진 분기 이외의 다른 것이어야만 하는 타입이 존재한다. 따라서, 기록 스테이지에서 RealPC 래치(327)는 특정 타입의 인스트럭션에 대응하는 수개의 사용가능한 값들 중의 하나와 함께 로딩된다. 그것은 (1)이전의 사이클로부터 유지되는 예외 벡터, (2)타깃 어드레스, 혹은 (3)C 사이클의 종료시의 인라인 어드레스와 함께 로딩될 수 있다.
분기 제어(323)는 RealPC(327)에 대한 셀렉트를 생성한다. 동시에, RealPC 래치에 로딩될 어드레스가 파이프라인의 X 스테이지에서 인스트럭션의 어드레스와 정합하는지를 결정하기 위해 세 개의 비교가 완료된다. 비교 유닛(320)은 동등성을 위해 두 개의 오퍼랜드(즉, 구조적인 어드레스와 후속 인스트럭션 어드레스)를 비교하는데 사용된다. 인스트럭션 오케이(instruction okay(iok)(329) 신호는 또한 C 스테이지의 종료시에 래치된다. 따라서, BPU는 C 스테이지에서의 인스트럭션이 정확하게 시퀀싱된다고 가정하고, X 스테이지에 있어야만 될 인스트럭션의 어드레스를 계산하고, 정확한 인스트럭션이 실제로 파이프라인의 X 스테이지에 존재함을 확인한다.
기록 스테이지
X 스테이지에서의 인스트럭션이 정확하지 않다면, RealPC 래치(327)는 유지되고 X 및 D 스테이지에서의 인스트럭션들은 킬링되며, IFU는 RealPC 어드레스에서 재페칭이 요구된다는 것을 통지했다.
BPU(18)는 따라서 공급될 인스트럭션과 공급될 인스트럭션 어드레스 간의 정합을 필요로 한다. 또한 재페칭 요구 이후에 재페칭 요구의 어드레스에서 개시하는 적어도 하나의 인스트럭션이 제공된다.
도 4는 본 발명에 따른 로직 블럭(400)의 바람직한 실시예를 도시하고 있다. 라이브 로직 블럭(live logic block)(400)은 BPU(18) 내의 제어 로직을 나타낸다. 도 2에 따르면, 라이브 로직 블럭(400)에 대한 입력은 인스트럭션 처리 동안 프로세서 파이프라인 내의 구성요소(즉, IFU(17) 및 실행 회로, FXU(22), LSU(28), 및 FPU(30))로부터 수신된다. BPU(18)로부터의 출력은 라이브 로직 블럭(400)의 출력에 의해 제어된다. 특히, BPU(18)는 실행 회로, GPR(32) 및 FPR(36)에 라이브성 신호(liveliness signal)를 송신한다. 이러한 출력들은 여러 파이프라인 스테이지에서의 인스트럭션들의 라이브성을 나타낸다. 동시에, BPU(18)는 라이브 로직 블럭(400)으로부터의 출력이 특정 파이프라인 스테이지 내의 인스트럭션이 킬링될 것이라는 것을 나타낼 때마다 IFU(17)에 IBAD 및 RealPC를 송신한다.
다시 도 4를 참조하면, 라이브 로직 블럭(400)은 4-비트의 선입 선출(FIFO) 레지스터(401)에 인스트럭션 라이브 비트들을 유지하고 있다. FIFO(401)는 프로세서의 상태의 트랙을 유지한다. 4 비트는 상기 다음 인스트럭션의 구조적인 시퀀스 및/또는 라이브성이 체크될 수 있는 파이프라인 스테이지에 대응한다. 각각의 스테이지는 따라서 각각의 상태에 의해 BPU(18)에 파이프라인의 스테이지에서의 인스트럭션이 라이브인지의 여부의 제어 상태를 알리는 대응하는 라이브 비트를 갖는다. 인스트럭션은 라이브 비트의 값에 따라 라이브(1) 혹은 데드(dead)(0)일 수 있다. 만약 인스트럭션이 라이브라면, 그것은 그 현재의 스테이지를 완료하도록 승인받지만, 파이프라인의 중단을 일으키는 데드 인스트럭션은 그 현재의 스테이지를 완료하도록 하는 승인을 받지 못한다. 데드 인스트럭션은 예외 조건, 가령 캐시 미스, 오버플로우 조건, 오류의 해석 어드레스 등의 결과일 수 있다.
라이브 로직 블럭(400)은 인버터(407)를 통해 전송되어 게이트(409)에 의해 FIFO 레지스터(401)의 컨텐츠들과 조합되는 입력 세트(403A)를 수신하여, FIFO 레지스터(401)를 갱신하고 관련된 출력(405)을 생성한다. 입력(403A)은 BPU 내의 비교 유닛들의 결과일 수 있거나 실행 유닛으로부터 수신되는 예외 조건일 수 있다. 이 입력은 FIFO 레지스터(401)의 컨텐츠와 조합되어 그 스테이지에서의 라이브 비트의 값을 결정한다. 가령, FIFO 레지스터(401)의 실행(X) 비트에 대한 입력은 선행 스테이지에서 비교 유닛으로부터의 입력의 반전값과 AND 연산된 선행 스테이지(즉, 디코딩 스테이지(D)로부터의 값이다. 이러한 두 개의 값들이 함께 AND 연산될 경우, 인스트럭션은 만약 라이브 비트가 그 스테이지에 대해 제로로 리세트됨으로 인해 0으로 된다면 킬링된다. 인스트럭션은 FIFO 레지스터(401) 내의 임의의 스테이지에서 라이브에서 데드로 전이될 수 있다. 이러한 인스트럭션 데드는 데이터 종속성, 하드웨어 결함, 동기식 예외, 및 인스트럭션 시퀀싱 오류 등의원인일 수 있다.
바람직한 실시예에서, 인라인 및 분기 인스트럭션은 모두 BPU에 의해 마치 분기인 것처럼 해석된다. 즉, BPU는 구조적인 시퀀스에 따라서 파이프라인 내의 다음의 정확한 인스트럭션에 대한 어드레스를 결정한다. 어드레스들을 프로세서(특히 분기 유닛)의 리셋으로 전달하기 위한 데이터 경로가 이미 존재하기 때문에, 본 발명을 구현하기 위한 여분의 글로벌 버스들이 부가되지는 않는다. 이러한 구현예의 한 이점은, 인스트럭션 어드레스가 분기 유닛에 의해 계산된 바와 같이 예상된 (구조적인) 다음 인스트럭션 어드레스와 일치하지 않도록 하는 모든 이벤트들은 동일한 메카니즘에 의해 커버되고 프로세서의 정확성에 영향을 끼치지 않는다는 것이다. 이러한 이벤트들은 또한 별도로 검출되어 프로세서의 리셋으로 전달될 필요는 없다.
정확한 인스트럭션 시퀀싱을 제공하기 위해 BPU를 사용하게 되면 매우 높은 주파수의 프로세서를 얻을 수 있으며, 또한 높은 확률성으로 추측을 가능케하는 파이프라인형 순차 머신을 제공할 수가 있다(통상적으로 추측 실행은 슈퍼스칼라 비순차 머신용으로만 도입됨). BPU의 설계에는 여러 개의 고유한 특징들이 제공된다. 특히, 프로세서가 슈퍼스칼라이고, 파이프라인을 통한 인스트럭션이 (인스트럭션들이 파이프의 상이한 스테이지들로부터의 파일을 레지스터에 기록하여 순차적으로 완료하지 않는다하더라도) 순서를 벗어나지 않기 때문에, 인스트럭션 어드레스와 같은 다양한 정보와 라이브 비트들은 인스트럭션 태그와 함께 액세스되는 테이블보다는 시프트 레지스터에 유지될 수 있다.
본 발명은 특히 바람직한 실시예를 참조하여 기술되고 있지만, 본 기술 분야의 당업자라면 본 발명의 사상 및 영역 내에서 다양한 변형이 가해질 수 있음을 이해할 수 있을 것이다. 특히, 본 발명의 방법은 각각의 인스트럭션 패킷을 처리하는 BPU(18)을 구비함으로써 슈퍼스칼라 설계에 이용될 수 있다. 전술한 문맥에서 인스트럭션 패킷은 하나의 단위로서 완료할 수 있는 순차적인 인스트럭션의 그룹이다. 이러한 경우, BPU(18)는 다음의 순차적인 인스트럭션 어드레스를 인스트럭션 패킷 길이의 함수로서 계산해야만 한다.
본원 발명에 따르면 프로세서 파이프라인에서 인스트럭션 완료가 승인되기 전에 페치된 인스트럭션들의 정확한 구조적인 시퀀싱을 가능하게 하여 파이프라인 중단의 발생을 감소시키는 이점이 있다.

Claims (19)

  1. 캐시 버퍼로부터의 페치된 인스트럭션을 수신하여 선택된 인스트럭션을 실행 유닛으로 전달하기에 적합한 파이프라인 프로세서에 있어서,
    ① 분기 처리 유닛(BPU)과,
    ② 명령 페치 유닛(IFU)과,
    ③ 분기 인스트럭션들 및 인라인 인스트럭션을 포함하는 각각의 페치된 인스트럭션의 어드레스를 어드레스 분석을 위해 상기 BPU에 전달하는 수단 -상기 BPU는 현재 실행중인 인스트럭션에 후속하는 다음 인스트럭션(a next instruction)에 대한 정확한 구조적인 어드레스(correct architectural address)를 결정함- 과,
    ④ 어드레스들의 정확한 구조적인 시퀀스에 따라서 현재의 인스트럭션에 후속하는 상기 다음 인스트럭션(next instruction)의 구조적인 어드레스를 상기 프로세서의 실행 유닛들에 제공하는 수단 -상기 실행 유닛들 내에서 상기 현재의 인스트럭션 뒤에 위치하는 후속 인스트럭션(a following instruction)은 그 대응하는 어드레스가 상기 구조적인 어드레스와 정합할 때에만 실행을 완료하도록 승인됨- 을 포함하는
    파이프라인 프로세서.
  2. 제 1 항에 있어서,
    상기 정확한 구조적인 어드레스를 계산하는 수단과,
    상기 정확한 구조적인 어드레스를 상기 후속 인스트럭션(following instruction)의 어드레스와 비교하는 수단과,
    상기 후속 인스트럭션(following instruction)이 상기 정확한 구조적인 시퀀스에 따른 다음 인스트럭션(next instruction)이 아니라는 판정에 응답하여, 상기 프로세서의 실행 유닛 내의 상기 후속 인스트럭션(following instruction)을 선택적으로 킬링(killing)하는 수단을 더 포함하고,
    상기 선택적으로 킬링하는 수단은
    인스트럭션 파이프라인의 여러 스테이지에 대응하는 인스트럭션 라이브(live) 비트의 4-비트 선입선출(FIFO) 레지스터와,
    인스트럭션 처리시 상기 인스트럭션 라이브 비트의 값을 설정하는 수단을 포함하며,
    인스트럭션 라이브 비트의 제 1 값은 대응하는 파이프라인 스테이지에서의 인스트럭션이 완료되도록 하며, 제 2 값은 상기 인스트럭션이 완료되지 않도록 하는 파이프라인 프로세서.
  3. 제 2 항에 있어서,
    상기 선택적으로 킬링하는 수단에 응답하여, 상기 후속 인스트럭션(following instruction)의 어드레스가 상기 정확한 구조적인 시퀀스에 따라 결정된 상기 구조적인 어드레스와 정합하지 않을 경우 상기 후속 인스트럭션(following instruction)을 완료하지 않도록 상기 프로세서 파이프라인 내의 프로세서 구성요소에 신호를 보내는 수단을 더 포함하는 파이프라인 프로세서.
  4. 제 3 항에 있어서,
    상기 구조적인 어드레스와 정합하는 어드레스를 갖는 캐시로부터 상기 다음 인스트럭션(next instruction)의 상기 IFU에 의한 페치를 개시하는 수단을 더 포함하고,
    상기 개시 수단은, 상기 구조적인 어드레스(said architectural address) 및 인스트럭션 배드 신호(an instruction bad signal)를 상기 IFU에 제공하여 상기 후속 인스트럭션(following instruction)이 정확한 인스트럭션이 아니라는 것을 나타내고 어느 인스트럭션을 페치할 것인지를 지시하는 수단을 더 포함하는 파이프라인 프로세서.
  5. 제 1 항에 있어서,
    상기 프로세서는 슈퍼 스칼라 프로세서이며, 상기 인스트럭션들은 인스트럭션 패킷으로 상기 프로세서 파이프라인에 제공되며,
    상기 파이프라인 프로세서는,
    인스트럭션 페치 유닛(IFU)으로부터 제 1 인스트럭션 패킷과 인스트럭션 패킷 어드레스를 수신하기 위한 수단과,
    정확한 구조적인 시퀀스에 따라 다음 인스트럭션 패킷의 구조적인 어드레스를 계산하기 위한 수단과,
    인스트럭션 페치 유닛으로부터 제 2 인스트럭션 패킷 및 대응하는 인스트럭션 패킷 어드레스를 수신하기 위한 수단과,
    상기 대응하는 인스트럭션 패킷 어드레스와 상기 구조적인 어드레스를 비교하기 위한 수단 -상기 제 2 인스트럭션 패킷은 상기 대응하는 어드레스가 상기 구조적인 어드레스와 정합할 경우에만 완료되도록 승인됨- 과,
    상기 대응하는 어드레스가 상기 구조적인 어드레스와 정합하지 않는 경우에 상기 구조적인 어드레스를 갖는 다음 패킷의 페치를 개시하기 위한 수단을 더 포함하는 파이프라인 프로세서.
  6. 모든 인라인 및 분기 인스트럭션(all in-line and branch instruction)을 정확한 구조적인 시퀀스로 프로세서 파이프라인에 제공하기 위한 시스템에 있어서,
    ① 인스트럭션 페치 유닛(IFU)으로부터 제 1 인스트럭션과 인스트럭션 어드레스를 수신하기 위한 수단과,
    ② 상기 정확한 구조적인 시퀀스에 따라 다음 인스트럭션(a next instruction)의 구조적인 어드레스를 상기 프로세서의 분기 처리 유닛(BPU)에서 계산하기 위한 수단과,
    ③ 상기 인스트럭션 페치 유닛으로부터 제 2의 인라인 인스트럭션 및 대응하는 인스트럭션 어드레스를 수신하기 위한 수단과,
    ④ 상기 대응하는 인스트럭션 어드레스와 상기 구조적인 어드레스를 상기 분기 처리 유닛(BPU)에서 비교하기 위한 수단을 포함하며,
    상기 제 2 인스트럭션은 상기 대응하는 어드레스가 상기 구조적인 어드레스와 정합할 경우에만 완료되도록 승인되는
    모든 인라인 및 분기 인스트럭션을 정확한 구조적인 시퀀스로 프로세서 파이프라인에 제공하는 시스템.
  7. 제 6 항에 있어서,
    상기 분기 처리 유닛 내에서 상기 프로세서 파이프라인의 소정 스테이지에서의 후속 인스트럭션(a following instruction)이 부정확할 때를 결정하는 수단과,
    상기 프로세서 파이프라인의 상기 스테이지를 실행하는 프로세서 구성요소에 상기 인스트럭션을 완료하지 않도록 신호를 보내는 수단을 더 포함하는
    모든 인라인 및 분기 인스트럭션을 정확한 구조적인 시퀀스로 프로세서 파이프라인에 제공하는 시스템.
  8. 제 7 항에 있어서,
    상기 결정 수단은,
    상기 인스트럭션 파이프라인의 여러 스테이지에 대응하는 인스트럭션 라이브 비트의 4-비트 선입선출(FIFO) 레지스터와,
    인스트럭션 처리시 상기 인스트럭션 라이브 비트의 값을 설정하는 수단을 포함하며,
    인스트럭션 라이브 비트의 제 1 값은 대응하는 파이프라인 스테이지에서의 인스트럭션이 완료되도록 하며, 제 2 값은 상기 인스트럭션이 완료되지 않도록 하는
    모든 인라인 및 분기 인스트럭션을 정확한 구조적인 시퀀스로 프로세서 파이프라인에 제공하는 시스템.
  9. 제 6 항에 있어서,
    상기 비교 수단에 응답하여, 상기 어드레스가 정합하지 않을 경우 상기 제 2 인스트럭션을 완료하지 않도록 상기 프로세서 파이프라인 내의 프로세서 구성요소에 신호를 보내는 수단과,
    상기 IFU에 의해 상기 정확한 구조적인 어드레스를 갖는 다음 인스트럭션(next instruction)의 페치를 개시하는 수단을 더 포함하는
    모든 인라인 및 분기 인스트럭션을 정확한 구조적인 시퀀스로 프로세서 파이프라인에 제공하는 시스템.
  10. 제 9 항에 있어서,
    상기 개시 수단은,
    상기 구조적인 어드레스(said architectural address) 및 인스트럭션 배드 신호(an instruction bad signal)를 상기 IFU에 제공하여 상기 제 2 인스트럭션이 정확한 인스트럭션이 아니라는 것을 나타내고 어느 인스트럭션을 페치할 것인지를 지시하는 수단을 더 포함하는
    모든 인라인 및 분기 인스트럭션을 정확한 구조적인 시퀀스로 프로세서 파이프라인에 제공하는 시스템.
  11. 제 6 항에 있어서,
    상기 프로세서는 슈퍼 스칼라 프로세서이며, 상기 인스트럭션들은 인스트럭션 패킷 내의 상기 프로세서 파이프라인에 제공되며,
    상기 시스템은,
    인스트럭션 페치 유닛(IFU)으로부터 제 1 인스트럭션 패킷과 인스트럭션 패킷 어드레스를 수신하기 위한 수단과,
    상기 정확한 구조적인 시퀀스에 따라 다음 인스트럭션 패킷의 구조적인 어드레스를 계산하기 위한 수단과,
    상기 인스트럭션 페치 유닛으로부터 제 2 인스트럭션 패킷 및 대응하는 인스트럭션 패킷 어드레스를 수신하기 위한 수단과,
    상기 대응하는 인스트럭션 패킷 어드레스와 상기 구조적인 어드레스를 비교하기 위한 수단 -상기 제 2 인스트럭션 패킷은 상기 대응하는 어드레스가 상기 구조적인 어드레스와 정합할 경우에만 완료되도록 승인됨- 과,
    상기 대응하는 어드레스가 상기 구조적인 어드레스와 정합하지 않는 경우에 상기 구조적인 어드레스를 갖는 다음 패킷의 페치를 개시하기 위한 수단을 더 포함하는
    모든 인라인 및 분기 인스트럭션을 정확한 구조적인 시퀀스로 프로세서 파이프라인에 제공하는 시스템.
  12. 프로세서 내의 분기 처리 유닛에 있어서,
    ① 선행 인스트럭션의 인스트럭션 어드레스에 기초하여, 인스트럭션 어드레스의 정확한 구조적인 시퀀스와 상관된 구조적인 어드레스를 계산하기 위한 수단과,
    ② 상기 구조적인 어드레스를 유지하기 위한 레지스터와,
    ③ 각각의 다음 인스트럭션 어드레스를 선행 인스트럭션의 계산된 구조적인 어드레스와 비교함으로써, 상기 정확한 구조적인 시퀀스에 따라 인스트럭션들이 프로세서 파이프라인을 통해 흐른다는 것을 확인하는 수단과,
    ④ 상기 정확한 구조적인 시퀀스 내에 있지 않는 인스트럭션을 종료시키기 위한 수단과,
    ⑤ 인스트럭션 종료에 응답하여, 프로세서 시간의 손실이 실질적으로 거의 발생하지 않고 파이프라인의 중단이 실질적으로 감소되도록 상기 정확한 구조적인 시퀀스와 상관되는 어드레스에서의 인스트럭션 페칭을 재개시키기 위한 수단을 포함하는
    분기 처리 유닛.
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 제 1 항에 있어서,
    상기 구조적인 어드레스를 보유하는 레지스터를 더 포함하는 파이프라인 프로세서.
  19. 제 1 항에 있어서,
    상기 BPU는 상기 IFU로부터 수신된 분기 인스트럭션에 대한 분기 예측 동작을 실시하는 수단과,
    인라인 인스트럭션의 정확한 구조적 시퀀싱을 보장하는 수단을 더 포함하는 파이프라인 프로세서.
KR10-2001-0004490A 2000-02-04 2001-01-31 파이프라인 프로세서 아키텍처, 모든 인라인 및 분기인스트럭션을 정확한 구조적인 시퀀스로 프로세서파이프라인에 제공하는 시스템, 및 분기 처리 유닛 KR100404257B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/498,931 US6728872B1 (en) 2000-02-04 2000-02-04 Method and apparatus for verifying that instructions are pipelined in correct architectural sequence
US09/498,931 2000-02-04

Publications (2)

Publication Number Publication Date
KR20010078183A KR20010078183A (ko) 2001-08-20
KR100404257B1 true KR100404257B1 (ko) 2003-11-03

Family

ID=29712381

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2001-0004490A KR100404257B1 (ko) 2000-02-04 2001-01-31 파이프라인 프로세서 아키텍처, 모든 인라인 및 분기인스트럭션을 정확한 구조적인 시퀀스로 프로세서파이프라인에 제공하는 시스템, 및 분기 처리 유닛

Country Status (3)

Country Link
US (1) US6728872B1 (ko)
KR (1) KR100404257B1 (ko)
TW (1) TW544626B (ko)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007143278A2 (en) 2006-04-12 2007-12-13 Soft Machines, Inc. Apparatus and method for processing an instruction matrix specifying parallel and dependent operations
EP2122461A4 (en) 2006-11-14 2010-03-24 Soft Machines Inc DEVICE AND METHOD FOR PROCESSING COMMUNICATIONS IN A MULTITHREAD ARCHITECTURE WITH CONTEXT CHANGES
US20080177990A1 (en) * 2007-01-19 2008-07-24 Mips Technologies, Inc. Synthesized assertions in a self-correcting processor and applications thereof
EP2616928B1 (en) 2010-09-17 2016-11-02 Soft Machines, Inc. Single cycle multi-branch prediction including shadow cache for early far branch prediction
WO2012135041A2 (en) 2011-03-25 2012-10-04 Soft Machines, Inc. Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines
EP2689327B1 (en) 2011-03-25 2021-07-28 Intel Corporation Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines
US9274793B2 (en) 2011-03-25 2016-03-01 Soft Machines, Inc. Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines
TWI548994B (zh) 2011-05-20 2016-09-11 軟體機器公司 以複數個引擎支援指令序列的執行之互連結構
KR101639853B1 (ko) 2011-05-20 2016-07-14 소프트 머신즈, 인크. 복수의 엔진에 의해 명령어 시퀀스들의 실행을 지원하기 위한 자원들 및 상호접속 구조들의 비집중 할당
KR101842550B1 (ko) 2011-11-22 2018-03-28 소프트 머신즈, 인크. 다중 엔진 마이크로프로세서용 가속 코드 최적화기
EP2783281B1 (en) 2011-11-22 2020-05-13 Intel Corporation A microprocessor accelerated code optimizer
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
CN105247484B (zh) 2013-03-15 2021-02-23 英特尔公司 利用本地分布式标志体系架构来仿真访客集中式标志体系架构的方法
EP2972845B1 (en) 2013-03-15 2021-07-07 Intel Corporation A method for executing multithreaded instructions grouped onto blocks
US9632825B2 (en) 2013-03-15 2017-04-25 Intel Corporation Method and apparatus for efficient scheduling for asymmetrical execution units
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
US9417941B2 (en) * 2014-05-21 2016-08-16 Freescale Semiconductor, Inc. Processing device and method of executing an instruction sequence

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19980083442A (ko) * 1997-05-15 1998-12-05 문정환 분기예측회로
KR19990007479A (ko) * 1997-06-30 1999-01-25 모리시다 요이치 분기 해저드의 저감을 적을 회로로 실현한 파이프라인 프로세서

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4991080A (en) * 1986-03-13 1991-02-05 International Business Machines Corporation Pipeline processing apparatus for executing instructions in three streams, including branch stream pre-execution processor for pre-executing conditional branch instructions
US5222240A (en) * 1990-02-14 1993-06-22 Intel Corporation Method and apparatus for delaying writing back the results of instructions to a processor
US5542109A (en) * 1994-08-31 1996-07-30 Exponential Technology, Inc. Address tracking and branch resolution in a processor with multiple execution pipelines and instruction stream discontinuities
US5799167A (en) * 1996-05-15 1998-08-25 Hewlett-Packard Company Instruction nullification system and method for a processor that executes instructions out of order
US5954814A (en) * 1997-12-19 1999-09-21 Intel Corporation System for using a branch prediction unit to achieve serialization by forcing a branch misprediction to flush a pipeline
US6279100B1 (en) * 1998-12-03 2001-08-21 Sun Microsystems, Inc. Local stall control method and structure in a microprocessor

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19980083442A (ko) * 1997-05-15 1998-12-05 문정환 분기예측회로
KR19990007479A (ko) * 1997-06-30 1999-01-25 모리시다 요이치 분기 해저드의 저감을 적을 회로로 실현한 파이프라인 프로세서

Also Published As

Publication number Publication date
US6728872B1 (en) 2004-04-27
TW544626B (en) 2003-08-01
KR20010078183A (ko) 2001-08-20

Similar Documents

Publication Publication Date Title
KR100404257B1 (ko) 파이프라인 프로세서 아키텍처, 모든 인라인 및 분기인스트럭션을 정확한 구조적인 시퀀스로 프로세서파이프라인에 제공하는 시스템, 및 분기 처리 유닛
US6185676B1 (en) Method and apparatus for performing early branch prediction in a microprocessor
KR100244842B1 (ko) 인스트럭션 루프를 사변적으로 실행하는 프로세서및 그 방법
US5404467A (en) CPU having pipelined instruction unit and effective address calculation unit with retained virtual address capability
JP3182740B2 (ja) 単一クロック・サイクルに非連続命令を取り出すための方法およびシステム。
KR100234648B1 (ko) 프로세서내 인스트럭션 실행 방법 및 시스템과 데이타 처리 시스템
US7437543B2 (en) Reducing the fetch time of target instructions of a predicted taken branch instruction
US6279105B1 (en) Pipelined two-cycle branch target address cache
US20080077776A1 (en) Load Lookahead Prefetch for Microprocessors
EP1296229A2 (en) Scoreboarding mechanism in a pipeline that includes replays and redirects
JPH0334024A (ja) 分岐予測の方法とそのための装置
US5898864A (en) Method and system for executing a context-altering instruction without performing a context-synchronization operation within high-performance processors
US6647490B2 (en) Training line predictor for branch targets
US7185182B2 (en) Pipelined microprocessor, apparatus, and method for generating early instruction results
US5875325A (en) Processor having reduced branch history table size through global branch history compression and method of branch prediction utilizing compressed global branch history
EP0649086A1 (en) Microprocessor with speculative execution
US6708267B1 (en) System and method in a pipelined processor for generating a single cycle pipeline stall
US11403110B2 (en) Storing a result of a first instruction of an execute packet in a holding register prior to completion of a second instruction of the execute packet
US6604191B1 (en) Method and apparatus for accelerating instruction fetching for a processor
US6237085B1 (en) Processor and method for generating less than (LT), Greater than (GT), and equal to (EQ) condition code bits concurrent with a logical or complex operation
US6381622B1 (en) System and method of expediting bit scan instructions
KR100307980B1 (ko) 산술 또는 논리 연산의 수행과 동시에 조건 코드 비트를 발생하는 방법 및 시스템
US6546478B1 (en) Line predictor entry with location pointers and control information for corresponding instructions in a cache line
US6473850B1 (en) System and method for handling instructions occurring after an ISYNC instruction
EP1296228B1 (en) Instruction Issue and retirement in processor having mismatched pipeline depths

Legal Events

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

Payment date: 20071004

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee