KR100431168B1 - 단일 클럭 사이클 내에 불연속 명령을 페치하기 위한 방법 및 시스템 - Google Patents

단일 클럭 사이클 내에 불연속 명령을 페치하기 위한 방법 및 시스템 Download PDF

Info

Publication number
KR100431168B1
KR100431168B1 KR10-1999-0013604A KR19990013604A KR100431168B1 KR 100431168 B1 KR100431168 B1 KR 100431168B1 KR 19990013604 A KR19990013604 A KR 19990013604A KR 100431168 B1 KR100431168 B1 KR 100431168B1
Authority
KR
South Korea
Prior art keywords
instructions
cache
branch
instruction
address
Prior art date
Application number
KR10-1999-0013604A
Other languages
English (en)
Other versions
KR19990087940A (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 KR19990087940A publication Critical patent/KR19990087940A/ko
Application granted granted Critical
Publication of KR100431168B1 publication Critical patent/KR100431168B1/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
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • 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
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

Landscapes

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

Abstract

데이타 처리 시스템에서 불연속 명령 블럭들을 획득하기 위한 방법 및 시스템이 개시된다. 제1 양태에 따르면, 데이타 처리 시스템에서 불연속 명령 블럭을 페치하기 위한 시스템이 개시된다. 이 시스템은 제1의 복수의 명령을 제공하기 위한 명령 캐시 수단 및 상기 제1의 복수의 명령을 수신하여 이 제1의 복수의 명령에 대한 분기 히스토리 정보를 제공하기 위한 분기 논리 수단을 포함한다. 이 시스템은 상기 분기 히스토리 정보에 기초하여 제2의 복수의 명령을 수신하기 위한 보조 캐시 수단도 포함한다. 보조 캐시 수단은 제1의 복수의 명령에 분기가 있고 이 분기가 제2의 복수의 명령을 향하고 있는 경우에 제2의 복수의 명령중 적어도 하나를 오버레이(overlay)한다. 제2 양태에 따르면, 불연속 명령 블럭을 획득하기 위한 방법은 제1 캐시에 제1의 복수의 명령을 저장하고 제1의 복수의 명령과 제2 캐시 내의 제2의 복수의 명령을 병렬 페치한다. 본 발명에 따르면, 제2의 복수의 명령의 수는 제1의 복수의 명령의 수보다 많다. 이 제2 양태는 데이타 처리 시스템의 분기 히스토리 정보에 기초하여 제2의 복수의 명령중 일부를 제1의 복수의 명령중 적어도 하나로 교체한다. 상술한 본 발명은 프로세서가 분기 히스토리 정보와 보조 캐시를 사용하여 단일 사이클 내에 복수의 불연속 명령 그룹을 페치하게 한다. 또한, 이 기술은 복수 레벨의 네스트된 분기 예측 논리가 평가될 필요 없이 단일사이클 내에 불연속 페치가 수행될 수 있게 한다.

Description

단일 클럭 사이클 내에 불연속 명령을 페치하기 위한 방법 및 시스템{A METHOD AND SYSTEM FOR FETCHING NONCONTIGUOUS INSTRUCTIONS IN A SINGLE CLOCK CYCLE}
본 발명은 일반적으로 슈퍼스칼라 프로세서(superscalar processor)에 관한 것으로, 특히 이와 같은 프로세서에서 불연속 명령(noncontiguous instructions)을 페치(fetch)하기 위한 시스템 및 방법에 관한 것이다.
이러한 구성을 갖는 프로세서들은 명령-레벨 병렬 처리(instruction-level parallelism)를 위해 적극적인 기술을 채택한다. 광폭 디스패치(wide dispatch) 및 송출 경로(issue path)는 최대 명령 처리량(peak instruction throughput)에 대한 상한을 정한다. 큰 송출 버퍼가 병렬 처리를 검출하는 데 필요한 명령의 윈도우를 유지하는 데 사용되고, 큰 물리 레지스터 풀이 윈도우로부터 송출된 인-플라이트(in-flight) 명령 모두에 목적지(destination)를 제공한다. 명령들의 동시 실행을 가능하게 하기 위해, 실행 엔진은 많은 병렬 기능부로 구성된다. 페치 엔진은 지나간 다중 분기를 추측하여 연속 명령 스트림을 윈도우에 공급한다.
슈퍼스칼라 디자인의 경향은 더 광폭의 디스패치/송출(dispatch/issue), 더 큰 윈도우, 더 많은 물리 레지스터, 더 많은 기능부, 및 더 깊은 추측(deeper speculation)과 같은 기술을 스케일하는 것이다. 이러한 경향을 유지하기 위해, 프로세서의 모든 부분들의 균형을 맞추는 것이 중요한데, 어느 병목 현상도 적극적인 기술의 혜택을 저감시킨다.
명령 페치 성능은 몇가지 요인에 의존한다. 명령 캐시 히트율 및 분기 예측 정확도는 페치 성능에 있어서 매우 중요한 문제로서 인식되고 널리 연구되고 있는 분야이다.
분기 및 점프 때문에, 소정의 사이클 동안 페치될 명령은 연속 캐시 위치에 있지 않을 수 있다. 따라서, 불연속 기본 블럭을 페치 및 정렬하여 이들을 파이프라인으로 전송할 수 있는 적당한 경로 및 논리가 있어야 한다. 즉, 명령이 캐시 내에 존재하기에 충분하지 않고, 이들을 병렬 억세스하는 것 또한 가능해야 한다.
현대의 마이크로프로세서는 지나간 분기 명령을 효율적으로 페치하는 능력을 향상시키기 위해 통상적으로 분기 히스토리 표 및 분기 타겟 어드레스 캐시를 사용한다. 분기 히스토리 표 및 다른 예측 매카니즘은 분기의 결과가 알려지기 전에 프로세서가 분기 명령을 지나서 페치할 수 있도록 한다. 분기 타겟 어드레스 캐시는 분기의 타겟 어드레스가 계산되기 전에 프로세서가 분기를 지나서 페치할 수 있도록 한다. 이 기술 둘다는 실행 시간 히스토리(run-time history)를 이용하여 어떤 명령이 페치되어야하는지를 예측하고 통상 낭비될 수 있는 "데드(dead)" 사이클을 제거한다. 이러한 기술들을 이용한다 해도, 현재의 마이크로프로세서들은 단일 클럭 사이클 동안 연속 명령만을 페치하는 것에 제한된다.
슈퍼스칼라 프로세서가 보다 적극적이 되고 사이클당 더 많은 명령을 실행하려는 시도를 함에 따라, 슈퍼스칼라 프로세서는 또한 사이클당 더 많은 명령을 페치할 수 있어야 한다. 빈번한 분기 명령은 프로세서의 유효 페치 대역폭을 크게 제한할 수 있다. 통계적으로, 네개의 명령중 하나는 분기 명령이고 이 분기 명령들 중의 절반 이상이 취해진다. 넓은 페치 대역폭, 즉, 사이클당 8개의 연속 명령을 갖는 프로세서는 시간의 절반만큼 페치한 명령의 절반을 낭비하는 것을 중단할 수 있다.
고성능 슈퍼스칼라 프로세서의 구성은 본래 명령 페치 매카니즘 및 명령 실행 매카니즘으로 분할된다. 페치 및 실행 매카니즘은 명령 송출 버퍼(들), 예를 들면, 큐(queue), 예약 스테이션 등에 의해 분리된다. 개념적으로, 명령 페치 메카니즘은 명령을 페치하고, 디코드하며 버퍼에 배치하는 "생산자(producer)"로서 역할을 한다. 명령 실행 엔진은 버퍼로부터 명령을 이동시켜서 실행하는 "소비자(consumer)"이고 데이타에 종속되며 자원이 제한된다. 제어 종속(분기 및 점프)은 생산자와 소비자 간에 피드백 메카니즘을 제공한다.
종래의 디자인은 스태틱 형태의 프로그램을 포함하는 종래의 명령 캐시를 사용하여 작업을 한다. 매 사이클마다, 불연속 위치로부터의 명령이 명령 캐시로부터 페치되어 예측된 다이나믹 시퀀스로 어셈블리되어야만 한다. 이러한 접근 방법에는 문제가 있다.
불연속 명령 블럭 모두로의 포인터는 페치가 시작될 수 있기 전에 발생되어야 한다. 이는 특정 형태의 분기 타겟 표 (분기 타겟 버퍼, 분기 어드레스 캐시 등)를 통해서, 명령 캐시 전의 추가 파이프라인 단에 트랜스레이트되는(translate) 간접 레벨을 의미한다.
명령 캐시는 다중 불연속 캐시 라인으로의 동시 억세스를 지원해야 한다. 이는 캐시가 멀티포트(multiport)되게 하는데, 인터리빙을 통해 멀티포팅이 수행되면, 뱅크 충돌(bank conflict)을 겪게 된다.
캐시로부터 불연속 명령을 페치한 후에, 이 명령들은 다이나믹 시퀀스로 어셈블리되어야 한다. 명령은 쉬프트되고 정렬되어 디코더에는 연속한 것으로 보이게 된다. 이는 명령 캐시 다음의 추가 캐시 단으로 이동되기 쉽다.
트레이스 캐시 접근은 디코더를 위해 준비된 다이나믹 시퀀스를 캐시함으로써 이러한 문제들을 피한다. 예측된 다이나믹 시퀀스가 트레이스 캐시 내에 존재하면, 명령 캐시의 스테틱 표시로부터 즉석에서(on the fly)로 재생성될 필요가 없다. 특히, 불연속 명령을 페치하기 위해 명령 캐시의 전후에 추가의 단이 요구되지 않는다. 단이 존재하나 페치 유닛의 임계 경로가 아닌 트레이스 캐시의 필(fill) 측 상에 존재한다. 이러한 접근 방법은 용장(redundant) 명령 저장 장치, 즉 동일한 명령이 1차 캐시 및 트레이스 캐시 둘 다에 상주해야 하고, 심지어는 트레이스 캐시 내의 라인들 간에 있어서도 용장이 존재할 수 있는 대가를 치뤄야 한다. 따라서, 트레이스 캐시 접근 방법을 이용하여 수 개의 명령이 가장 가능성 있는 경로에 근거하여 그룹화된다. 그 다음 이들은 트레이스 캐시 내에 함께 저장된다. 이 시스템은 명령 세그먼트를 팩킹(pack)하고 캐시(cache)하기 위해 복잡한 매카니즘을 필요로 한다.
따라서, 슈퍼스칼라 프로세서의 전체 처리량을 개선시키기 위한 방법 및 시스템이 요구된다. 특히, 이와 같은 프로세서에서 불연속 명령을 효율적으로 페치하기 위한 시스템 및 방법이 요구된다. 본 발명은 이와 같은 요구에 역점을 두고 있다.
데이타 처리 시스템에서 불연속 명령 블럭을 획득하기 위한 방법 및 시스템이 개시된다. 제1 양태에 따르면, 데이타 처리 시스템에서 불연속 명령 블럭을 페치하기 위한 시스템이 개시된다. 이 시스템은 제1의 복수의 명령을 제공하기 위한 명령 캐시 수단 및 제1의 복수의 명령을 수신하여 이 제1의 복수의 명령에 대한 분기 히스토리 정보를 제공하기 위한 분기 논리 수단을 포함한다. 이 시스템은 분기 히스토리 정보에 기초하여 제2의 복수의 명령을 수신하기 위한 보조 캐시 수단을 더 포함한다. 보조 캐시 수단은 제1의 복수의 명령에 분기가 있고 이 분기가 제2의 복수의 명령을 향하고 있는 경우에 제2의 복수의 명령중 적어도 하나를 오버레이한다.
제2 양태에 따르면, 불연속 명령 블럭을 획득하기 위한 방법은 제1의 복수의 명령을 제1 캐시 내에 저장하는 단계와, 제1의 복수의 명령을 페치함과 동시에 제2 캐시 내의 제2의 복수의 명령을 페치하는 단계를 포함한다. 본 발명에 따르면,제2의 복수의 명령의 수는 제1의 복수의 명령의 수보다 크다. 이 제2 양태는 데이타 처리 시스템의 분기 히스토리 정보에 기초하여 제2 복수의 명령중 일부를 제1의 복수의 명령중 적어도 하나로 교체한다.
상술한 본 발명은 프로세서가 분기 히스토리 정보와 보조 캐시를 사용하여 단일 사이클 내에 복수의 불연속 명령 그룹을 페치할 수 있게 한다. 또한, 이 기술은 복수 레벨의 네스트(nest)된 분기 예측 논리가 평가될 필요 없이 단일 사이클 내에 불연속 페치가 수행될 수 있게 한다.
도 1은 슈퍼스칼라(superscalar) 프로세서의 블럭도.
도 2a는 불연속 명령을 페치하기 위한 프로세서 내의 종래의 매카니즘의 블럭도.
도 2b는 명령 캐시 및 BTAC 엔트리(entry)의 블럭도.
도 3은 도 2a에 도시된 종래의 매카니즘의 분기 예측(branch prediction) 알고리즘의 플로우 챠트.
도 4는 본 발명에 따라 단일 사이클 내에 불연속 명령을 페치하기 위한 프로세서 내의 매카니즘의 블럭도.
도 5는 도 4의 불연속 명령 페치 매카니즘의 분기 예측 알고리즘의 플로우 챠트.
도 6은 도 5의 분기 예측 알고리즘을 이용할 때의 명령의 흐름을 설명하는 표.
<도면의 주요 부분에 대한 부호의 설명>
12 : 버스 인터페이스 유닛
14 : 명령 캐시
16 : 데이타 캐시
18 : 명령 버퍼
20 : 분기 유닛
22 : 고정 소수점 유닛 A
24 : 고정 소수점 유닛 B
30 : 부동 소수점 유닛
34 : 리네임 버퍼
42 : 캐리 비트 레지스터
본 발명은 일반적으로 슈퍼스칼라 프로세서에 관한 것으로, 특히 이와 같은 프로세서에서 불연속 명령을 페치하기 위한 시스템 및 방법에 관한 것이다. 다음의 설명은 당 기술의 숙련된 자가 본 발명을 실시하기 위해 제공된 것이며 특허 출원 및 그 요구 조건에 관련하여 제공된다. 당업자에게는 양호한 실시예에 대하여 다양한 변형이 있을 수 있다는 것이 자명할 것이며 여기에 있는 일반적인 원리는 다른 실시예에도 적용될 수 있다. 따라서, 본 발명은 도시된 실시예에만 국한되는 것이 아니고 여기서 설명하는 원리와 특징에 부합하는 가장 광범위한 범주에 따르는 것이다.
도 1은 슈퍼스칼라 프로세서(10)의 블럭도이다. 도시된 바와 같이, 슈퍼스칼라 프로세서(10)는 통상, 버스 인터페이스 유닛("BIU"; 12)에 접속된 시스템 버스(11)를 포함한다. BIU(12)는 프로세서(10)와 시스템 버스(11) 간의 정보 전송을 제어한다. BIU(12)는 프로세서(10)의 명령 캐시(14) 및 데이타 캐시(16)에 접속된다. 명령 캐시(14)는 명령을 시퀀서 유닛(18)에 출력한다. 명령 캐시(14)로부터의 이와 같은 명령에 응답하여, 시퀀서 유닛(18)은 명령을 프로세서(10)의 다른 실행 회로에 선택적으로 출력한다.
실행 유닛으로서 디스패치 유닛(46) 및 완료 유닛(48)을 포함하는 시퀀서 유닛(18) 외에도, 양호한 실시예에서는, 프로세서(10)의 실행 회로는 다수의 실행 유닛, 즉 분기 유닛(20), 고정 소수점 유닛 A("FXUA"; 22), 고정 소수점 유닛 B("FXUB"; 24), 복소 고정 소수점 유닛("CFXU"; 26), 로드/저장 유닛("LSU"; 28) 및 부동 소수점 유닛("FPU"; 30)을 포함한다. FXUA(22), FXUB(24), CFXU(26) 및 LSU(28)는 범용 아키텍처의 레지스터("GPR"; 32) 및 고정 소수점 리네임 버퍼(34)로부터의 그들의 소스 오퍼랜드 정보를 입력한다. 또한, FXUA(22) 및 FXUB(24)는 캐리 비트("CA") 레지스터(42)로부터의 "캐리 비트(carry bit)"를 입력한다. FXUA(22), FXUB(24), CFXU(26) 및 LSU(28)는 그들의 연산 결과 (목적지 오퍼랜드 정보)를, 저장을 위해 고정 소수점리네임 버퍼(34) 내의 선택된 엔트리에 출력한다. 또한, CFXU(26)는 소스 오퍼랜드 정보 및 목적지 오퍼랜드 정보를 특수용 레지스터("SPR"; 40)에 입력하고 또 이 특수용 레지스터로부터 출력한다.
FPU(30)는 부동 소수점 아키텍처의 레지스터("FRP"; 36) 및 부동 소수점 리네임 버퍼(38)로부터의 자신의 소스 오퍼랜드 정보를 입력한다. FPU(30)는 자신의 연산 결과 (목적지 오퍼랜드 정보)를, 저장을 위해 부동 소수점 리네임 버퍼(38) 내의 선택된 엔트리에 출력한다.
프로세스
프로세서(10)는 통상 비교적 독립적인 프로세스를 제어하는 많은 수의 상태 머신(state machine)으로 구현된다. 다중 병렬 처리 프로세스를 수반하는 복잡한 병렬 처리 알고리즘으로 생각할 수 있다.
명령 페치
이 프로세스는 명령 캐시로부터 연속 명령 스트림을 제공하고 페치 예측 매카니즘으로서 분기 타겟 어드레스 캐시(BTAC)를 이용한다.
분기 예측
이 프로세스는 분기를 식별하고 예측하며, 적절한 명령이 페치되었는지를 확인하고 정보를 갱신하며 추측 분기에 대한 정보를 분기 큐(Branch Queue) 내에 배치한다.
분기 분석
이 프로세스는 예측이 실제의 분기 결과와 일치하는지를 점검하고 예측이 잘못되었을 경우에는 이를 바로잡는다.
분기 완료
이 프로세스는 완료된 분기에 대한 정보를 BHT에 기록하고 분기 큐로부터 엔트리를 제거한다.
본 발명은 일반적으로 페치 사이클 및 불연속 명령을 페치하는 능력에 관한 것이다. 도 2a는 명령 그룹을 페치하기 위한 종래 기술의 하드웨어 매카니즘의 시스템(100)을 도시한다. 이 실시예에서는, 8개의 명령이 한 번에 페치된 것으로 도시된다. 또한, 본 발명은 명령이 4 바이트 길이로 되어 있다는 것을 참조로 하여설명된다. 그러나, 당 기술에 있어서 통상의 지식을 가진 자는 한번에 임의의 수의 명령이 페치될 수 있고 명령이 임의의 길이로 될 수 있으며 그 개수와 길이는 본 발명의 사상과 범주 내에 있다는 것을 쉽게 알 수 있을 것이다.
다시 도 2a를 참조하면, 분기 히스토리 표(BHT; 104), 명령 캐시(106), 분기 타겟 어드레스 캐시(BTAC; 108), 명령 캐시의 디렉토리(INST Dir; 110), +32 카운터(111)에 제공되는 페치 어드레스 신호(102)가 있는 것을 볼 수 있다. 상기 매카니즘의 동작, 특히 명령 캐시(106)와 관련하여 매카니즘의 동작의 보다 나은 이해를 제공하기 위해, 종래의 명령 캐시 엔트리를 후술한다.
도 2b는 명령 페처가 요구하는 명령의 명령 캐시 및 BTAC 엔트리(200)의 단순한 구성을 도시한다 (엔트리는 이번 논의에서는 중요하지 않은 다른 정보를 포함할 수도 있다). 도 2b는 샘플 어드레스 태그(202), 석세서 인덱스(successor index; 204), 및 분기 블럭 인덱스 엔트리(206)의 코드 시퀀스를 포함하는 페치 정보(201)를 도시하는데, 이 페치 정보는 64kbyte이고 직접 맵핑된 캐시이며 표시된 명령 어드레스인 것으로 가정한다. 예를 들면, 이 캐시 엔트리는 네 개의 명령 208, 210, 212 및 214를 보유한다. 엔트리는 또한 명령 페치 정보를 포함한다. 페치 정보는 또한 명령 페처에 의해 사용되는 두 개의 추가 필드 (도시되지 않음)를 포함한다.
석세서 인덱스 필드(204)는 다음에 페치될 것으로 예측된 캐시 블럭과 이 다음에 실행될 것으로 예측된 블럭 내의 제1의 명령 둘 다를 표시한다. 석세서 인덱스 필드(204)는 완전한 명령 어드레스(full instruction address)를 특정하지는 않으나 캐시 내의 임의의 명령을 선택하기에 충분한 크기이다. 예를 들면, 64kbyte의 직접 맵핑된 캐시는 모든 명령이 32 비트의 길이를 갖는 경우 14 비트의 석세서 인덱스를 필요로 한다 (블럭 크기가 4개의 워드로 되어 있으면 12 비트는 캐시 블럭을 어드레스하는 것에 대한 것이고 2 비트는 블럭 내의 명령을 어드레스하는 것에 대한 것이다).
양호한 실시예에서, 분기 블럭 인덱스 필드(206)는 대응하는 명령 블럭 내의 분기점의 위치를 표시한다. 분기점을 지난 명령은 실행되지 않는 것으로 예측된다.
다시 도 2a를 참조하면, BHT(104)는 또한 BHT 갱신 신호를 수신하고 판독 신호를 출력한다. BHT(104)로부터의 판독 신호는 분기 논리(116)에 제공된다. 명령 캐시(106)는 L2 캐시와 같은 외부 소스로부터 기록 신호를 수신한다. 명령 캐시(106)는 8개의 명령 (명령 그룹 0)을 분기 논리(116)에 출력한다. 어드레스 0 신호는 분기 논리(116)에 직접 제공된다. 분기 논리(116)는 오버라이드(override) 어드레스 신호를 멀티플렉서(120)에 제공한다. 멀티플렉서(120)는 또한 신호(32), 카운터(111) 및 BTAC(102)의 출력을 수신한다. 어드레스 1 신호는 BTAC(108)로부터 분기 논리(116)에 제공된다. 명령 디렉토리(110)는 히트 신호를 분기 논리(116)에 제공한다. 분기 논리(116)는 또한 분기 결과 신호를 수신하여 분기 정보를 분기 큐(126)에 제공하고, BTAC 어드레스(128)를 출력하며 유효 명령(124)을 제공한다. 이러한 종류의 메카니즘은 사이클당 8개의 연속 명령을 페치할 수 있으나, 그룹 내에서 첫 번째로 예측되어 채택된 분기까지의 명령만을 사용할 수 있다. 보다 상세하게 설명하기 위해 첨부된 도면과 함께 설명한다.
전술한 바와 같이, 명령 그룹을 페치함에 있어서 관련된 몇가지 프로세스가 있다. 본 발명은 분기 예측 알고리즘의 향상 및 도 2a의 종래의 페치 매카니즘에 대한 관련 변형에 관한 것이다.
도 2a의 종래의 매카니즘에 대하여 도 3을 참조하여 불연속 명령을 페치하는 것과 관련된 문제를 더 설명한다.
도 3은 도 2a의 종래의 매카니즘의 분기 예측 알고리즘의 플로우 챠트이다. 도 2a 및 도 3을 함께 참조하면, 먼저 단계 302에서 명령 캐시 내에서 유효 명령이 발견되었는지를 결정한다. 명령 캐시 내에서 유효 명령이 발견되지 않았다면, 단계 304에서 모든 페치된 명령은 무효한 것으로 되고 오류 처리(miss handler)가 개시된다. 그러나, 명령 캐시 내에서 유효 명령이 발견되었다면, 단계 306에서 분기가 식별되고, 타겟 어드레스가 산출되며 분기 논리(116) 및 분기 히스토리표(104)에 기초하여 예측이 취해지거나 취해지지 않는다. 그 다음, 단계 308에서 명령 그룹 0 (제1의 명령 그룹) 내에 예측된 분기가 있는지를 결정한다. 예측된 분기가 있으면, 단계 310에서 모든 후속 명령들은 무효한 것이 된다. 그 다음, 단계 312에서 BTAC(108)로부터의 어드레스 1 (제2의 명령 그룹의 어드레스)이 명령 디렉토리의 타겟 0과 동일한지를 결정한다. 대답이 "예"이면, 단계 314에서 분기 어드레스는 저장되고 모든 분기들에 대한 예측 정보가 분기 큐(126)에 제공된다. 한편, 단계 316에서 어드레스 1이 타겟 0과 동일하지 않으면, 다음 사이클 내에서 페치된 명령은 무효한 것이 되고 오버라이드 어드레스는 타겟 0과 동일하다. 다음으로,단계 318에서 BTAC 어드레스는 타겟 0과 동일하게 갱신된 다음, 단계 314에서 분기 어드레스 및 예측 정보가 분기 큐에 저장된다. 한편, 단계 308에서 그룹 0 내에 예측된 분기가 없으면, 어드레스 1이 어드레스 0 플러스 32와 동일한지를 결정한다. 대답이 "예"이면, 단계 314로 돌아간다. 한편, 대답이 "아니오"이면, 단계 322에서 다음 사이클 동안 페치된 모든 명령 그룹들은 무효한 것이 되고 오버라이드 어드레스는 0 + 32와 동일하게 된다. 다음으로, 단계 324에서 BTAC 어드레스는 무효한 것과 동일하게 갱신되고 단계 314로 돌아간다.
도 3의 알고리즘은 단일 사이클 내에서 불연속 명령의 페치를 허용하지 않는다. 예측 알고리즘은 항상 분기 명령에 직면했을 때 그 분기까지의 명령만을 이용할 수 있는 것을 요구한다. 전술한 바와 같이, 단일 사이클 내에서 불연속 명령을 검색하는 매카니즘, 즉, 트레이스 캐시 등이 있으나 이들은 복잡하고 시스템에 손해가 된다.
본 발명은 보조 캐시 및 보조 캐시를 이용하여 단일 사이클 내에서 불연속 명령을 페치하는 오버레이(overlaying) 기술을 제공하여 이러한 문제를 극복한다.
세 개의 주요 하드웨어 매카니즘이 이 기술에 요구된다.
(1) 표준 명령 캐시 (또는 다른 메모리 소스),
(2) 분기 타겟 어드레스 캐시, 및
(3) 보조 캐시
표준 명령 캐시 및 분기 타겟 어드레스 캐시는 대부분의 마이크로프로세서에 공통적으로 사용되고 이 기술을 변형할 필요가 없이 사용될 수 있다. 보조 캐시는 하나 이상의 명령 및 관련 어드레스를 갖는 복수의 엔트리를 포함하는 새로운 하드웨어 매카니즘이다. 보조 캐시는 주 명령 캐시에 비해 매우 밀접하게 관련이 있고 비교적 작을 수 있다.
본 발명은 일반적으로 다음과 같은 방식으로 동작한다.
1. (분기 히스토리 또는 다른 정보에 근거하여) 제1의 명령 그룹 내에 분기 명령이 있는 것으로 간주되고 보조 캐시로부터 명령이 제공되지 않았으면, 페치 인덱스를 사용하여 분기의 타겟 어드레스 및 그 어드레스의 하나 이상의 명령을 보조 캐시에 추가한다. 또한, 적당한 순번 어드레스 (예컨대 분기 타겟 + 16 바이트)가 필요에 따라 BTAC에 제공된다.
2. 제2의 명령 그룹 내에 분기 명령이 있는 것으로 간주되면, 페치 인덱스를 이용하여 BTAC에 분기의 타겟 어드레스를 추가한다.
3. 명령 그룹에 분기 명령이 없는 것으로 간주되면, 페치 인덱스를 이용하여 BTAC를 클리어하고 적당한 순번 어드레스로 디폴트(default)된다.
본 발명의 특징 및 동작을 보다 상세하게 설명하기 위해, 첨부된 도면과 관련하여 설명한다.
도 4는 본 발명에 따라 단일 사이클 내에서 불연속 명령을 페치하기 위한 프로세서 내의 매카니즘(400)의 블럭도이다. 매카니즘(400)의 구성 요소는 매카니즘(100)에 제공된 많은 구성 요소와 유사하다. 유사한 구성 요소에 대해서는 유사한 참조 번호를 부여하였다. 전술한 바와 같이, 다른 중요한 구성 요소는 보조 캐시(415) 및 그 디렉토리(417)를 추가하였다는 것이다.
또한, 도시되어 있는 바와 같이, 명령 그룹 0 및 1이 있으며, BHT(104') 및 분기 논리(116')로부터 도출된 분기 히스토리 정보에 기초하여 명령 캐시(106')로부터의 명령 그룹 1 내에서 보조 캐시(415)로부터의 명령의 오버레이를 허용하는 4개의 멀티플렉서(425)가 있다. 유사하게, 보조 디렉토리는 또한 분기 히스토리 정보에 기초하여 +16 카운터(421)의 어드레스 1 신호에 자신의 어드레스를 오버레이한다. 또한, BTAC(414)는 또한 도 2a의 BTAC(108')에 의해 제공되는 어드레스 1 신호가 아닌 어드레스 2 신호를 제공한다. 따라서, 전술한 바와 같이, 보조 캐시(415)를 추가하여 사용하고 보조 디렉토리(417)를 사용함에 따라서, 이제는 정보를 축적하여 불연속 명령을 페치하는 것이 가능하다. 이러한 특징을 보다 상세하게 설명하기 위해, 도 5를 참조한다.
도 5는 도 4의 불연속 명령 페치 매카니즘의 분기 예측 알고리즘의 플로우 챠트이다. 도 4 및 도 5를 함께 참조하면, 먼저 단계 502에서 명령 캐시(106') 내에 유효 명령이 저장되어 있는지를 결정한다. 명령 캐시(106') 내에서 유효 명령이 발견되지 않았으면, 단계 504에서 모든 명령들은 무효한 것으로 되고 오류 처리가 개시된다. 한편, 명령 캐시(106') 내에 유효 명령이 있으면, 단계 506에서 보조 캐시(417) 내에서 유효 명령이 발견되었는지를 결정한다. 보조 캐시(417) 내에서 유효 명령이 발견되었으면, 단계 508에서 보조 캐시(417)로부터의 명령은 명령 캐시(106')로부터의 명령 그룹 상에 오버레이된다. 한편, 보조 캐시 내에서 유효 명령이 발견되지 않았으면, 단계 510에서 명령 캐시로부터의 모든 명령은 보류된다.
단계 508 또는 510으로부터, 다음 분기가 식별되고, 타겟 어드레스가 산출되며 종래의 방식으로 동작하는 분기 논리(106') 및 BHT(104')에 기초하여 단계 512에서 분기가 예측이 취해지거나 취해지지 않는다. 그 다음, 단계 514에서 명령 그룹 0 내에 예측된 분기가 있는지를 결정한다. 명령 그룹 0 내에 예측된 분기가 있으면, 단계 516에서 후속 명령은 무효가 된다.
다음으로, 단계 518에서 어드레스 1이 분기의 타겟 어드레스 0과 동일한 지를 결정한다. 대답이 "예"이면, 단계 520에서 그룹 1 또는 다음의 명령 그룹 내에 예측된 분기가 있는지를 결정한다. 대답이 "예"이면, 단계 522에서 명령 그룹 1 내의 후속 명령들은 무효한 것이 된다. 그 다음, 단계 524에서 어드레스 2가 분기의 타겟 1과 동일한지를 결정한다. 대답이 "예"이면, 단계 526에서 분기 큐는 모든 분기에 대한 분기 어드레스 및 예측 정보를 저장한다. 대답이 "아니오"이면, 단계 528에서 다음 사이클 그룹은 무효한 것이 되고 오버라이드 어드레스는 타겟 1과 동일하게 된다. 그 다음, 단계 530에서 BTAC 어드레스는 타겟 1과 동일하게 갱신되고 단계 526으로 돌아간다.
단계 518에서 어드레스 1이 타겟 0과 동일하지 않으면, 단계 521에서 그룹 1 및 다음 사이클 그룹 내의 모든 명령들은 무효하게 되고 오버라이드 어드레스는 타겟 0과 동일하게 되며 보조 캐시 내의 다음 그룹을 절약하도록 준비된다. 그 다음, 단계 523에서 보조 어드레스가 타겟 0과 동일하게 갱신되고 BTAC 어드레스는 타겟 0+16과 동일하게 된다.
한편, 단계 520에서 그룹 1 내에 예측된 분기가 없으면, 단계 532에서 어드레스 2가 어드레스 1 + 16과 동일한지 결정한다. 대답이 "예"이면, 단계 526으로 돌아간다. 대답이 "아니오"이면, 단계 534에서 모든 다음 사이클 그룹은 무효한 것이 되고 오버라이드 어드레스는 어드레스 1 + 16과 동일하게 설정된다. 그 다음, 단계 536에서 BTAC 어드레스는 어드레스 1 + 16과 동일하게 갱신되고 단계 526으로 돌아간다.
단계 514로 돌아가서, 그룹 0 내에 예측된 분기가 없으면, 어드레스 1이 어드레스 0 + 16과 동일한지를 결정한다. 어드레스 1이 어드레스 0 + 16과 동일하면, 단계 520으로 돌아가고 결정 체인에 근거하여 단계를 진행한다. 한편, 대답이 "아니오"이고, 단계 540에서 그 어드레스 1이 어드레스 0 + 16과 동일하지 않으면, 그룹 1 및 다음 사이클 그룹 내의 모든 명령들은 무효한 것이 되고 오버라이드 어드레스는 어드레스 0 + 16과 동일하게 된다. 그 다음, 단계 542에서 보조 어드레스는 무효한 것과 동일하게 갱신되고 BTAC 어드레스는 무효한 것으로 갱신된다. 그 다음 단계 526으로 돌아간다. 따라서, 이 분기 예측 프로세스를 통해, 시스템은 불연속 명령을 효율적으로 페치하기 위해 보조 캐시의 오버레이 명령을 허용하는 방식으로 분기 히스토리 정보를 축적할 수 있다. 특정 예와 관련하여 동작을 보다 명백하게 설명하기 위해 도 6을 참조한다.
도 6은 도 5의 분기 예측 알고리즘을 이용할 때의 명령 흐름을 설명하는 예 600이다. 도 6에 도시된 예(600)는 프로그램 세그먼트(604)에 대한 본 발명에 따른 연속 사이클로 수행된 페치 시퀀스(602)를 나타낸다. 모든 어드레스들은 16진 포맷(기본 16)을 이용하여 설명된다는 것에 주의한다. 예(600)에서 별표(asterisks)는 명령 스트림으로부터 무효화된 페치 명령을 나타낸다.
도시된 바와 같이, 프로그램 세그먼트는 복수의 기본 블럭(606, 608, 610 및 612)을 포함한다. 각각의 기본 블럭(606 내지 612)은 로드 명령으로 시작하여 분기 명령으로 끝난다. 기본 블럭은 본 발명과 관련하여 불연속 명령이 단일 사이클 내에서 획득되도록 사용된다.
도 4의 하드웨어 매카니즘과 관련하여 도 5의 분기 예측 알고리즘으로부터 누적 분기 히스토리 정보를 통해, 도 6의 불연속 명령이 단일 사이클 내에 획득될 수 있다.
단일 사이클 내에 명령을 획득하는 방법을 설명하기 위해, 도 4, 5, 및 6을 참조한다. 표시된 바와 같이, 사이클 000에 8개의 명령이 제공된다. 보조 캐시(417)가 초기에 명령을 포함하지 않아서, 이때 정보 캐시 내에 무효 명령이 발견되며(단계 502), 보조 캐시 내에 유효 명령이 발견되는 지를 결정하고(단계 506), 대답은 "아니오"라고 가정한다. 이 경우, 명령 캐시로부터의 모든 명령은 보류된다. 이 때, 단계 512에서 분기가 식별되고, 타겟 어드레스가 산출되며, 예측이 취해지거나 취해지지 않는다. 제1의 명령 셋트 내의 분기에 대한 타겟은 0x100에 있다. 그룹 0 내에 예측된 분기가 있는지를 결정하고 대답은 "예"이다. 어드레스 000에 있는 것은 제3 명령이다. 분기 예측 프로세스를 통해, 어드레스 100에 있는 명령은 보조 캐시에 제공되고 어드레스는 보조 디렉토리에 저장된다. 또한, 단계 530에서 분기 예측 프로세스를 통해 어드레스 110은 BTAC(108)에 저장된다.
다음 기본 블럭(608)은 사이클 003에서 타겟 어드레스 0x100의 명령을 로드하는데 사용된다. 기본 블럭(608)의 마지막 명령은 어드레스 200에 대한 분기이다. 어드레스 100은, 상술한 바와 같이, 페치되고 유사한 정보가 보조 캐시, 보조 디렉토리 및 BTAC에 누적된다. 따라서, 정보는, 사이클 008에서 볼 수 있는 바와 같이 두 개의 불연속 명령(0X000 및 0X100)이 단일 사이클 내에 검색될 때까지 사이클 003-007에서 누적된다.
이 분기 예측 프로세스는 기본 블럭 610 및 612를 통해서 다시 반복되고, 여기서 불연속 명령은 020에서 024까지 페치된다. 따라서, 예에서 볼 수 있는 바와 같이, 분기 히스토리 정보가 적당한 방법으로 누적된 다음 불연속 명령이 단일 사이클 내에서 획득될 수 있다. 이러한 프로세스는 명령이 되풀이되는 경우에 특히 반복될 수 있어서, 대다수의 불연속 명령들은 단일 사이클 내에서 검색될 수 있다. 이는 본 발명에 따른 분기 예측 프로세스를 이용하면서 보조 캐시와 잡다한 분기 논리를 분기 히스토리 표와 함께 사용함으로써 성취된다.
프로세서가 단일 사이클 내에서 불연속 명령을 페치하도록 트레이스 캐싱 및 다중 분기 예측자와 같은 몇 가지 다른 기술들이 제안되었다. 본 발명에 따라 기술된 보조 캐시 및 명령 오버레이 기술은 다른 기술보다 더 단순하면서도 효과적이다.
본 발명이 도시된 실시예에 따라 기술되었지만, 당 기술에 통상의 지식을 가진 자는 실시예에 변형이 있을 수 있고 이러한 변형들은 본 발명의 사상과 범주 내에서 벗어나지 않는 것임을 쉽게 알 수 있을 것이다. 따라서, 당 기술에 숙련된자는 첨부된 청구 범위의 사상과 범주로부터 벗어남이 없이 많은 변형이 있을 수 있다.

Claims (15)

  1. 데이타 처리 시스템에서 불연속 명령 블럭들을 페치(fetch)하기 위한 시스템에 있어서,
    제1의 복수의 명령을 제공하기 위한 명령 캐시 수단;
    상기 제1의 복수의 명령을 수신하고, 상기 제1의 복수의 명령에 대한 분기 히스토리 정보를 제공하기 위한 분기 논리 수단;
    상기 분기 논리 수단에 결합된 분기 타겟 어드레스 캐시; 및
    보조 캐시 및 보조 디렉토리를 포함하며, 복수의 명령들중 하나 및 연관된 어드레스를 포함하는 다수의 엔트리를 구비하며, 상기 분기 히스토리 정보에 기초하여 제2의 복수의 명령을 수신하며, 단일 사이클에서 불연속 명령들을 페치하기 위한 보조 캐시 수단 -상기 보조 캐시 수단은 상기 제1의 복수의 명령에 분기가 있고 이 분기가 상기 제2의 복수의 명령을 향하고 있는 경우에 상기 제2의 복수의 명령 중 적어도 하나를 오버레이(overlay)함-
    을 포함하는 시스템.
  2. 제1항에 있어서, 상기 보조 캐시 수단은 보조 캐시 및 보조 디렉토리를 포함하는 시스템.
  3. 제1항에 있어서, 상기 제1의 복수의 명령은 두 개의 명령 블럭을 포함하는 시스템.
  4. 제1항에 있어서, 상기 제2의 복수의 명령은 하나의 명령 블럭을 포함하는 시스템.
  5. 제1항에 있어서, 상기 분리 논리 수단에 결합된 분기 어드레스 타겟 캐시를 더 포함하는 시스템.
  6. 데이타 처리 시스템에서 불연속 명령 블럭들을 획득하기 위한 방법에 있어서,
    (a) 제1 캐시에 제1의 복수의 명령을 저장하는 단계;
    (b) 단일 사이클에서 불연속 명령들을 페치하기 위하여 보조 캐시 수단을 활용하는 단계 -상기 보조 캐시 수단은 보조 캐시 및 보조 디렉토리를 포함하며, 복수의 명령들중 하나 및 연관된 어드레스를 포함하는 다수의 엔트리를 구비함 -;
    (c) 상기 제1의 복수의 명령과 제2 캐시 내의 제2의 복수의 명령을 병렬 페치하는 단계 -상기 제2의 복수의 명령의 수는 상기 제1의 복수의 명령의 수보다 많음-; 및
    (d) 상기 데이타 처리 시스템의 분기 히스토리 정보에 기초하여 상기 제2의 복수의 명령중 일부를 상기 제1의 복수의 명령중 적어도 하나로 교체하는 단계
    를 포함하는 방법.
  7. 삭제
  8. 삭제
  9. 삭제
  10. 삭제
  11. 데이타 처리 시스템에서 불연속 명령 블럭들을 획득하기 위한 시스템에 있어서,
    제1 캐시에 제1의 복수의 명령을 저장하기 위한 수단;
    보조 캐시 수단을 활용하기 위한 수단 - 상기 보조 캐시 수단은 단일 사이클에서 불연속 명령들을 페치하며, 보조 캐시 및 보조 디렉토리를 포함하고, 복수의 명령들중 하나 및 연관된 어드레스를 포함하는 다수의 엔트리를 구비함 -;
    상기 제1의 복수의 명령과 제2 캐시 내의 제2의 복수의 명령을 병렬 페치하기 위한 수단 -상기 제2의 복수의 명령의 수는 상기 제1의 복수의 명령의 수보다 많음-; 및
    상기 데이타 처리 시스템의 분기 히스토리 정보에 기초하여 상기 제2의 복수의 명령중 일부를 상기 제1의 복수의 명령중 적어도 하나로 교체하기 위한 수단
    을 포함하는 시스템.
  12. 제11항에 있어서, 상기 제1 캐시는 보조 캐시를 포함하고, 상기 제2 캐시는 명령 캐시를 포함하는 시스템.
  13. 제12항에 있어서, 상기 보조 캐시는 보조 디렉토리를 포함하는 시스템.
  14. 제11항에 있어서, 상기 제2의 복수의 명령은 두 개의 명령 블럭을 포함하는 시스템.
  15. 제11항에 있어서, 상기 제1의 복수의 명령은 하나의 명령 블럭을 포함하는 시스템.
KR10-1999-0013604A 1998-05-12 1999-04-14 단일 클럭 사이클 내에 불연속 명령을 페치하기 위한 방법 및 시스템 KR100431168B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US9/076,593 1998-05-12
US09/076,593 US6256727B1 (en) 1998-05-12 1998-05-12 Method and system for fetching noncontiguous instructions in a single clock cycle
US09/076,593 1998-05-12

Publications (2)

Publication Number Publication Date
KR19990087940A KR19990087940A (ko) 1999-12-27
KR100431168B1 true KR100431168B1 (ko) 2004-05-12

Family

ID=22133020

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-1999-0013604A KR100431168B1 (ko) 1998-05-12 1999-04-14 단일 클럭 사이클 내에 불연속 명령을 페치하기 위한 방법 및 시스템

Country Status (5)

Country Link
US (1) US6256727B1 (ko)
EP (1) EP0957428B1 (ko)
JP (1) JP3182740B2 (ko)
KR (1) KR100431168B1 (ko)
DE (1) DE69929936T2 (ko)

Families Citing this family (78)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6609177B1 (en) * 1999-11-12 2003-08-19 Maxtor Corporation Method and apparatus for extending cache history
US6622236B1 (en) * 2000-02-17 2003-09-16 International Business Machines Corporation Microprocessor instruction fetch unit for processing instruction groups having multiple branch instructions
US6647462B1 (en) * 2000-06-29 2003-11-11 Motorola, Inc. Apparatus and a method for providing decoded information
US20020194461A1 (en) * 2001-05-04 2002-12-19 Ip First Llc Speculative branch target address cache
US7200740B2 (en) * 2001-05-04 2007-04-03 Ip-First, Llc Apparatus and method for speculatively performing a return instruction in a microprocessor
US7165168B2 (en) * 2003-01-14 2007-01-16 Ip-First, Llc Microprocessor with branch target address cache update queue
US6886093B2 (en) * 2001-05-04 2005-04-26 Ip-First, Llc Speculative hybrid branch direction predictor
US7165169B2 (en) * 2001-05-04 2007-01-16 Ip-First, Llc Speculative branch target address cache with selective override by secondary predictor based on branch instruction type
US6895498B2 (en) * 2001-05-04 2005-05-17 Ip-First, Llc Apparatus and method for target address replacement in speculative branch target address cache
US7707397B2 (en) * 2001-05-04 2010-04-27 Via Technologies, Inc. Variable group associativity branch target address cache delivering multiple target addresses per cache line
US7134005B2 (en) * 2001-05-04 2006-11-07 Ip-First, Llc Microprocessor that detects erroneous speculative prediction of branch instruction opcode byte
US6823444B1 (en) * 2001-07-03 2004-11-23 Ip-First, Llc Apparatus and method for selectively accessing disparate instruction buffer stages based on branch target address cache hit and instruction stage wrap
US7203824B2 (en) * 2001-07-03 2007-04-10 Ip-First, Llc Apparatus and method for handling BTAC branches that wrap across instruction cache lines
US7234045B2 (en) * 2001-07-03 2007-06-19 Ip-First, Llc Apparatus and method for handling BTAC branches that wrap across instruction cache lines
US7162619B2 (en) * 2001-07-03 2007-01-09 Ip-First, Llc Apparatus and method for densely packing a branch instruction predicted by a branch target address cache and associated target instructions into a byte-wide instruction buffer
US7159097B2 (en) * 2002-04-26 2007-01-02 Ip-First, Llc Apparatus and method for buffering instructions and late-generated related information using history of previous load/shifts
US7152154B2 (en) * 2003-01-16 2006-12-19 Ip-First, Llc. Apparatus and method for invalidation of redundant branch target address cache entries
US7185186B2 (en) * 2003-01-14 2007-02-27 Ip-First, Llc Apparatus and method for resolving deadlock fetch conditions involving branch target address cache
US7143269B2 (en) * 2003-01-14 2006-11-28 Ip-First, Llc Apparatus and method for killing an instruction after loading the instruction into an instruction queue in a pipelined microprocessor
US7178010B2 (en) * 2003-01-16 2007-02-13 Ip-First, Llc Method and apparatus for correcting an internal call/return stack in a microprocessor that detects from multiple pipeline stages incorrect speculative update of the call/return stack
US7237098B2 (en) * 2003-09-08 2007-06-26 Ip-First, Llc Apparatus and method for selectively overriding return stack prediction in response to detection of non-standard return sequence
US7133969B2 (en) * 2003-10-01 2006-11-07 Advanced Micro Devices, Inc. System and method for handling exceptional instructions in a trace cache based processor
US7555633B1 (en) 2003-11-03 2009-06-30 Advanced Micro Devices, Inc. Instruction cache prefetch based on trace cache eviction
US8069336B2 (en) 2003-12-03 2011-11-29 Globalfoundries Inc. Transitioning from instruction cache to trace cache on label boundaries
US7213126B1 (en) 2004-01-12 2007-05-01 Advanced Micro Devices, Inc. Method and processor including logic for storing traces within a trace cache
US7197630B1 (en) 2004-04-12 2007-03-27 Advanced Micro Devices, Inc. Method and system for changing the executable status of an operation following a branch misprediction without refetching the operation
US7365007B2 (en) * 2004-06-30 2008-04-29 Intel Corporation Interconnects with direct metalization and conductive polymer
US8295484B2 (en) * 2004-12-21 2012-10-23 Broadcom Corporation System and method for securing data from a remote input device
US20070186050A1 (en) * 2006-02-03 2007-08-09 International Business Machines Corporation Self prefetching L2 cache mechanism for data lines
EP2011018B1 (en) 2006-04-12 2016-07-13 Soft Machines, Inc. Apparatus and method for processing an instruction matrix specifying parallel and dependent operations
US20080215804A1 (en) * 2006-09-25 2008-09-04 Davis Gordon T Structure for register renaming in a microprocessor
US20080077778A1 (en) * 2006-09-25 2008-03-27 Davis Gordon T Method and Apparatus for Register Renaming in a Microprocessor
US8386712B2 (en) * 2006-10-04 2013-02-26 International Business Machines Corporation Structure for supporting simultaneous storage of trace and standard cache lines
US7610449B2 (en) * 2006-10-04 2009-10-27 International Business Machines Corporation Apparatus and method for saving power in a trace cache
US7644233B2 (en) * 2006-10-04 2010-01-05 International Business Machines Corporation Apparatus and method for supporting simultaneous storage of trace and standard cache lines
US7934081B2 (en) * 2006-10-05 2011-04-26 International Business Machines Corporation Apparatus and method for using branch prediction heuristics for determination of trace formation readiness
US20080250206A1 (en) * 2006-10-05 2008-10-09 Davis Gordon T Structure for using branch prediction heuristics for determination of trace formation readiness
EP2122461A4 (en) 2006-11-14 2010-03-24 Soft Machines Inc DEVICE AND METHOD FOR PROCESSING COMMUNICATIONS IN A MULTITHREAD ARCHITECTURE WITH CONTEXT CHANGES
US20080114964A1 (en) * 2006-11-14 2008-05-15 Davis Gordon T Apparatus and Method for Cache Maintenance
US20080250207A1 (en) * 2006-11-14 2008-10-09 Davis Gordon T Design structure for cache maintenance
US20080235500A1 (en) * 2006-11-21 2008-09-25 Davis Gordon T Structure for instruction cache trace formation
US20080120468A1 (en) * 2006-11-21 2008-05-22 Davis Gordon T Instruction Cache Trace Formation
US8756404B2 (en) 2006-12-11 2014-06-17 International Business Machines Corporation Cascaded delayed float/vector execution pipeline
US7783870B2 (en) * 2007-08-13 2010-08-24 International Business Machines Corporation Branch target address cache
EP2616928B1 (en) * 2010-09-17 2016-11-02 Soft Machines, Inc. Single cycle multi-branch prediction including shadow cache for early far branch prediction
CN107092467B (zh) 2010-10-12 2021-10-29 英特尔公司 用于增强分支预测效率的指令序列缓冲器
EP3306466B1 (en) 2010-10-12 2020-05-13 INTEL Corporation An instruction sequence buffer to store branches having reliably predictable instruction sequences
KR101638225B1 (ko) 2011-03-25 2016-07-08 소프트 머신즈, 인크. 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 명령어 시퀀스 코드 블록의 실행
CN103562866B (zh) 2011-03-25 2018-03-30 英特尔公司 用于通过使用由可分割引擎实例化的虚拟核来支持代码块执行的寄存器文件段
EP2689326B1 (en) 2011-03-25 2022-11-16 Intel Corporation Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines
TWI666551B (zh) 2011-05-20 2019-07-21 美商英特爾股份有限公司 以複數個引擎作資源與互連結構的分散式分配以支援指令序列的執行
WO2012162189A1 (en) 2011-05-20 2012-11-29 Soft Machines, Inc. An interconnect structure to support the execution of instruction sequences by a plurality of engines
WO2013077876A1 (en) 2011-11-22 2013-05-30 Soft Machines, Inc. A microprocessor accelerated code optimizer
KR101703401B1 (ko) 2011-11-22 2017-02-06 소프트 머신즈, 인크. 다중 엔진 마이크로프로세서용 가속 코드 최적화기
US8935574B2 (en) 2011-12-16 2015-01-13 Advanced Micro Devices, Inc. Correlating traces in a computing system
US10331891B2 (en) * 2012-02-06 2019-06-25 Microsoft Technology Licensing, Llc Branch target computation in secure start-up using an integrity datum and an adjustment datum
US8930674B2 (en) 2012-03-07 2015-01-06 Soft Machines, Inc. Systems and methods for accessing a unified translation lookaside buffer
US9916253B2 (en) 2012-07-30 2018-03-13 Intel Corporation Method and apparatus for supporting a plurality of load accesses of a cache in a single cycle to maintain throughput
US9710399B2 (en) 2012-07-30 2017-07-18 Intel Corporation Systems and methods for flushing a cache with modified data
US9229873B2 (en) 2012-07-30 2016-01-05 Soft Machines, Inc. Systems and methods for supporting a plurality of load and store accesses of a cache
US9740612B2 (en) 2012-07-30 2017-08-22 Intel Corporation Systems and methods for maintaining the coherency of a store coalescing cache and a load cache
US8832500B2 (en) 2012-08-10 2014-09-09 Advanced Micro Devices, Inc. Multiple clock domain tracing
US8959398B2 (en) 2012-08-16 2015-02-17 Advanced Micro Devices, Inc. Multiple clock domain debug capability
US9678882B2 (en) 2012-10-11 2017-06-13 Intel Corporation Systems and methods for non-blocking implementation of cache flush instructions
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
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
CN105247484B (zh) 2013-03-15 2021-02-23 英特尔公司 利用本地分布式标志体系架构来仿真访客集中式标志体系架构的方法
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
CN105210040B (zh) 2013-03-15 2019-04-02 英特尔公司 用于执行分组成块的多线程指令的方法
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
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction 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
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
US9934041B2 (en) * 2015-07-01 2018-04-03 International Business Machines Corporation Pattern based branch prediction
US10241796B2 (en) * 2017-02-13 2019-03-26 Yong-Kyu Jung Compiler-assisted lookahead (CAL) memory system apparatus for microprocessors

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4719570A (en) * 1980-02-29 1988-01-12 Hitachi, Ltd. Apparatus for prefetching instructions
US4755935A (en) * 1986-01-27 1988-07-05 Schlumberger Technology Corporation Prefetch memory system having next-instruction buffer which stores target tracks of jumps prior to CPU access of instruction

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU529675B2 (en) * 1977-12-07 1983-06-16 Honeywell Information Systems Incorp. Cache memory unit
JPS54100082A (en) 1977-12-24 1979-08-07 Yaichi Watanabe Amphibious bicycle
US4313158A (en) 1978-12-11 1982-01-26 Honeywell Information Systems Inc. Cache apparatus for enabling overlap of instruction fetch operations
JPS63189943A (ja) 1987-02-02 1988-08-05 Mitsubishi Electric Corp 分岐予測制御方式
WO1991004536A1 (en) 1989-09-20 1991-04-04 Dolphin Server Technology A/S Instruction cache architecture for parallel issuing of multiple instructions
US5307477A (en) * 1989-12-01 1994-04-26 Mips Computer Systems, Inc. Two-level cache memory system
US5163140A (en) * 1990-02-26 1992-11-10 Nexgen Microsystems Two-level branch prediction cache
EP0459232B1 (en) 1990-05-29 1998-12-09 National Semiconductor Corporation Partially decoded instruction cache and method therefor
EP0529303A3 (en) 1991-08-29 1993-09-22 International Business Machines Corporation Checkpoint synchronization with instruction overlap enabled
US5544342A (en) * 1993-06-30 1996-08-06 International Business Machines Corporation System and method for prefetching information in a processing system
JP2596712B2 (ja) 1993-07-01 1997-04-02 インターナショナル・ビジネス・マシーンズ・コーポレイション 近接した分岐命令を含む命令の実行を管理するシステム及び方法
US5689680A (en) * 1993-07-15 1997-11-18 Unisys Corp. Cache memory system and method for accessing a coincident cache with a bit-sliced architecture
US5574883A (en) 1993-11-30 1996-11-12 Unisys Corporation Single chip processing unit providing immediate availability of frequently used microcode instruction words
US5913925A (en) * 1996-12-16 1999-06-22 International Business Machines Corporation Method and system for constructing a program including out-of-order threads and processor and method for executing threads out-of-order
US5889986A (en) 1997-01-28 1999-03-30 Samsung Electronics Co., Ltd. Instruction fetch unit including instruction buffer and secondary or branch target buffer that transfers prefetched instructions to the instruction buffer
US5935238A (en) * 1997-06-19 1999-08-10 Sun Microsystems, Inc. Selection from multiple fetch addresses generated concurrently including predicted and actual target by control-flow instructions in current and previous instruction bundles
US5890008A (en) * 1997-06-25 1999-03-30 Sun Microsystems, Inc. Method for dynamically reconfiguring a processor
US5918062A (en) * 1997-10-23 1999-06-29 Advanced Micro Devices, Inc. Microprocessor including an efficient implemention of an accumulate instruction

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4719570A (en) * 1980-02-29 1988-01-12 Hitachi, Ltd. Apparatus for prefetching instructions
US4755935A (en) * 1986-01-27 1988-07-05 Schlumberger Technology Corporation Prefetch memory system having next-instruction buffer which stores target tracks of jumps prior to CPU access of instruction

Also Published As

Publication number Publication date
DE69929936T2 (de) 2006-08-24
DE69929936D1 (de) 2006-04-27
JP3182740B2 (ja) 2001-07-03
JP2000029701A (ja) 2000-01-28
EP0957428A2 (en) 1999-11-17
EP0957428A3 (en) 2000-03-08
US6256727B1 (en) 2001-07-03
EP0957428B1 (en) 2006-02-22
KR19990087940A (ko) 1999-12-27

Similar Documents

Publication Publication Date Title
KR100431168B1 (ko) 단일 클럭 사이클 내에 불연속 명령을 페치하기 위한 방법 및 시스템
JP3542021B2 (ja) セット予測によりセット連想キャッシュの遅延を少なくする方法及び装置
KR100586058B1 (ko) 재명명 태그들을 교환함으로써 이동이 이루어지는 레지스터 재명명
US5136697A (en) System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache
KR100577445B1 (ko) 분기 예측들을 신속하게 특정하기 위해 명령 캐시 내의 바이트 범위들과 관련되는 분기 선택자들
US8069336B2 (en) Transitioning from instruction cache to trace cache on label boundaries
KR100880686B1 (ko) 2개 레벨의 분기 예측 캐시를 갖는 분기 예측
US5559975A (en) Program counter update mechanism
KR100305310B1 (ko) 멀티스레드프로세서의명령어및연관된인출요청의백그라운드완료
US5606682A (en) Data processor with branch target address cache and subroutine return address cache and method of operation
KR100240591B1 (ko) 분기명령어의 효율적인 처리를 위한 브랜치 타겟 버퍼 및 그를 이용한 분기 예측방법
US5592634A (en) Zero-cycle multi-state branch cache prediction data processing system and method thereof
US6279105B1 (en) Pipelined two-cycle branch target address cache
US6289442B1 (en) Circuit and method for tagging and invalidating speculatively executed instructions
US20010047468A1 (en) Branch and return on blocked load or store
US5774710A (en) Cache line branch prediction scheme that shares among sets of a set associative cache
GB2363873A (en) Processor and Method including a Cache having Confirmation Bits for Improving Address-Predictable Branch Instruction Target Predictions
US5935238A (en) Selection from multiple fetch addresses generated concurrently including predicted and actual target by control-flow instructions in current and previous instruction bundles
US20070033385A1 (en) Call return stack way prediction repair
US5964869A (en) Instruction fetch mechanism with simultaneous prediction of control-flow instructions
US5740393A (en) Instruction pointer limits in processor that performs speculative out-of-order instruction execution
JP2001297001A (ja) 命令履歴情報を持つ基本キャッシュ・ブロック・マイクロプロセッサ
KR100603067B1 (ko) 분기 예측의 타입을 분류하기 위해 복귀 선택 비트들을 이용하는 분기 예측
US6405303B1 (en) Massively parallel decoding and execution of variable-length instructions
US20070174592A1 (en) Early conditional selection of an operand

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
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 20020530

Effective date: 20040331

S901 Examination by remand of revocation
GRNO Decision to grant (after opposition)
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20070402

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee