KR19990087940A - 단일클럭사이클내에불연속명령을페치하기위한방법및시스템 - Google Patents
단일클럭사이클내에불연속명령을페치하기위한방법및시스템 Download PDFInfo
- Publication number
- KR19990087940A KR19990087940A KR1019990013604A KR19990013604A KR19990087940A KR 19990087940 A KR19990087940 A KR 19990087940A KR 1019990013604 A KR1019990013604 A KR 1019990013604A KR 19990013604 A KR19990013604 A KR 19990013604A KR 19990087940 A KR19990087940 A KR 19990087940A
- Authority
- KR
- South Korea
- Prior art keywords
- instructions
- cache
- branch
- instruction
- address
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 40
- 238000012545 processing Methods 0.000 claims abstract description 15
- 238000000926 separation method Methods 0.000 claims 1
- 230000007246 mechanism Effects 0.000 description 23
- 230000008569 process Effects 0.000 description 14
- 239000000872 buffer Substances 0.000 description 11
- 238000010586 diagram Methods 0.000 description 6
- 238000013459 approach Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001186 cumulative effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result 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
본 발명은 일반적으로 슈퍼스칼라 프로세서(superscalar processor)에 관한 것으로, 특히 이와 같은 프로세서에서 불연속 명령(noncontiguous instructions)을 페치(fetch)하기 위한 시스템 및 방법에 관한 것이다.
이러한 구성을 갖는 프로세서들은 명령-레벨 병행 처리(instruction-level parallelism)를 위해 적극적인 기술을 사용한다. 광범위한 디스패치(wide dispatch) 및 송출 경로(issue path)는 최대 명령 처리량(peak instruction throughput)에 대한 상한을 정한다. 큰 송출 버퍼가 병행 처리를 검출하는 데 필요한 명령의 윈도우를 유지하는 데 사용되고, 큰 물리 레지스터 풀이 윈도우로부터 송출된 인-플라이트(in-flight) 명령 모두에 목적지(destination)를 제공한다. 명령들의 동시 실행을 가능하게 하기 위해, 실행 엔진은 많은 병행 기능부로 구성된다. 페치 엔진은 지나간 다중 분기를 추측하여 연속 명령 스트림을 윈도우에 공급한다.
슈퍼스칼라 디자인의 경향은 더 광범위한 디스패치/송출(wider/dispatch/issue), 더 큰 윈도우, 더 많은 물리 레지스터, 더 많은 기능부, 및 더 깊은 추측과 같은 기술을 스케일하는 것이다. 이러한 경향을 유지하기 위해, 프로세서의 모든 부분들의 균형을 맞추는 것이 중요한데, 어느 병목 현상도 적극적인 기술의 혜택을 저감시킨다.
명령 페치 성능은 많은 팩터수에 의존한다. 명령 캐시 히트율 및 분기 예측 정확도는 페치 성능에 있어서 매우 중요한 문제로서 인식되고 널리 연구되고 있는 분야이다.
분기 및 점프 때문에, 주어진 사이클 동안 페치될 명령은 연속 캐시 위치에 있지 않을 수 있다. 따라서, 불연속 기본 블럭을 페치 및 얼라인하여 이들을 파이프라인으로 전송할 수 있는 적당한 경로 및 논리가 있어야 한다. 즉, 명령이 캐시 내에 존재하기에 충분하지 않고, 이들을 병행 억세스하는 것 또한 가능해야 한다.
현대의 마이크로프로세서는 지나간 분기 명령을 효율적으로 페치하는 능력을 향상시키기 위해 통상적으로 분기 히스토리 표 및 분기 타겟 어드레스 캐시를 사용한다. 분기 히스토리 표 및 다른 예측 매카니즘은 프로세서가 분기 명령을 지나서 분기의 결과가 알려지기 전에 페치할 수 있도록 한다. 분기 타겟 어드레스 캐시는 프로세서가 분기를 지나서 분기의 타겟 어드레스가 계산되기 전에 페치할 수 있도록 한다. 이 기술 둘다는 실행 시간 히스토리(run-time history)를 이용하여 어떤 명령이 페치되어야하는지를 예측하고 통상 낭비될 수 있는 "데드(dead)" 사이클을 제거한다. 이러한 기술들을 이용한다 해도, 현재의 마이크로프로세서들은 단일 클럭 사이클 동안 연속 명령만을 페치하는 것에 제한된다.
슈퍼스칼라 프로세서가 보다 적극적이 되고 사이클당 더 많은 명령을 실행하려는 시도를 함에 따라, 슈퍼스칼라 프로세서는 또한 사이클당 더 많은 명령을 페치할 수 있어야 한다. 빈번한 분기 명령은 프로세서의 유효 페치 대역폭을 크게 제한할 수 있다. 통계적으로, 네개의 명령중 하나는 분기 명령이고 이 분기 명령들 중의 절반 이상이 취해진다. 넓은 페치 대역폭, 즉, 사이클당 8개의 연속 명령을 갖는 프로세서는 시간의 절반만큼 프로세서가 페치한 명령의 절반을 낭비하는 것을 중단할 수 있다.
고성능 슈퍼스칼라 프로세서의 구성은 본래 명령 페치 매카니즘 및 명령 실행 매카니즘으로 분할된다. 페치 및 실행 매카니즘은 명령 송출 버퍼(들), 예를 들면, 큐(queue), 예약 스테이션 등에 의해 분리된다. 개념적으로, 명령 페치 장치는 명령을 페치하고, 디코드하며 버퍼에 배치하는 "생산자(producer)"로서 역할을 한다. 명령 실행 엔진은 버퍼로부터 명령을 이동시켜서 실행하고 데이타에 종속되며 자원이 제한되는 "소비자(consumer)"이다. 제어 종속(분기 및 점프)은 생산자와 소비자 간에 피드백 장치를 제공한다.
종래의 디자인은 작업을 하기 위해 스테틱 형태의 프로그램을 포함하는 종래의 명령 캐시를 사용한다. 매 사이클마다, 불연속 배치로부터의 명령은 명령 캐시로부터 페치되고 예측된 다이나믹 시퀀스로 어셈블리되어야 한다. 이러한 접근 방법에는 문제가 있다.
불연속 명령 블럭 모두로의 포인터는 페치가 시작되기 전에 발생되어야 한다. 이는 특정 형태의 분기 타겟 표 (분기 타겟 버퍼, 분기 어드레스 캐스 등)를 통해서, 명령 캐시 전의 추가의 파이프라인 단에 이동되는 간접 레벨을 의미한다.
명령 캐시는 다중 불연속 캐시 라인으로의 동시 억세스를 지원해야 한다. 이는 캐시가 멀티포트(multiport)되게 하는데, 인터리빙을 통해 멀티포팅이 수행되면, 뱅크 충돌(bank conflict)을 겪게 된다.
캐시로부터 불연속 명령을 페치한 후에, 이 명령들은 다이나믹 시퀀스로 어셈블리되어야 한다. 명령은 쉬프트되고 얼라인되어 디코더에는 연속한 것으로 보이게 된다. 이는 명령 캐시 다음의 추가의 캐시 단으로 이동되기 쉽다.
트레이스 캐시 접근은 디코더를 위해 준비된 다이나믹 시퀀스를 캐시함으로써 이러한 문제들을 피한다. 예측된 동적 시퀀스가 트레이스 캐시 내에 존재하면, 명령 캐시의 스테틱 표시로부터 온더 플라이 방식으로 재생성될 필요가 없다. 특히, 불연속 명령을 페치하기 위해 명령 캐시의 전후에 추가의 단이 요구되지 않는다. 단이 존재하나 페치 유닛의 임계 경로보다는 트레이스 캐시의 필(fill) 측 상에 존재한다. 이러한 접근 방법은 용장 명령 저장, 즉 동일한 명령이 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 : 캐리 비트 레지스터
본 발명은 일반적으로 슈퍼스칼라 프로세서(superscalar processor)에 관한 것으로, 특히 이와 같은 프로세서에서 불연속 명령을 페치하기 위한 시스템 및 방법에 관한 것이다. 다음의 설명은 당 기술의 숙련된 자가 본 발명을 만들어 사용할 수 있도록 하기 위해 제공된 것이며 특허 출원 및 그 요구 조건에 관련하여 제공된다. 당업자에게는 양호한 실시예에 대하여 다양한 변형이 있을 수 있다는 것이 자명할 것이며 여기에 있는 일반적인 원리는 다른 실시예에도 적용될 수 있다. 따라서, 본 발명은 도시된 실시예에만 국한되는 것이 아니고 여기서 설명하는 원리와 특징에 부합하는 가장 광범위한 범주에 따르는 것이다.
도 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") 및 고정 소수점 리네임 버퍼(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 캐시와 같은 외부 소스로부터 기록 신호를 수신한다. 명령 캐시는 8개의 명령 (명령 그룹 0)을 분기 논리(116)에 출력한다. 어드레스 0 신호는 분기 논리(116)에 직접 제공된다. 분기 논리(116)는 오버라이드(override) 어드레스 신호를 멀티플렉서(120)에 제공한다. 멀티플렉서(120)는 또한 신호(32), 카운터(111) 및 BTAC(102)의 출력을 수신한다. 어드레스 1 신호는 BTAC(108)로부터 분기 논리(116)에 제공된다. 명령 디렉토리(110)는 히트 신호를 분기 논리(116)에 제공한다. 분기 논리(116)는 또한 분기 결과 신호를 수신하여 분기 정보를 분기 큐 1(216)에 제공하고, BTAC 어드레스(128)를 출력하며 유효 명령(124)을 제공한다. 이러한 종류의 장치는 사이클당 8개의 연속 명령을 페치할 수 있으나, 그룹 내에서 제1의 예측되어 채택된 분기까지의 명령만을 사용할 수 있다. 보다 상세하게 설명하기 위해 첨부된 도면과 함께 설명한다.
전술한 바와 같이, 명령 그룹을 페치함에 있어서 관련된 몇가지 프로세스가 있다. 본 발명은 분기 예측 알고리즘의 향상 및 도 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의 알고리즘은 단일 사이클 내에서 불연속 명령의 페치를 허용하지 않는다. 예측 알고리즘은 항상 분기 명령에 직면했을 때 그 분기까지의 명령만을 이용할 수 있는 것을 요구한다. 전술한 바와 같이, 단일 사이클 내에서 불연속 명령을 검색하는 매카니즘, 즉, 트레이스 캐시 등이 있으나 이들은 복잡하고 시스템에 손해가 된다.
본 발명은 보조 캐시 및 보조 캐시를 이용하여 단일 사이클 내에서 불연속 명령을 페치하는 오버레이 기술을 제공하여 이러한 문제를 극복한다.
세 개의 주요 하드웨어 매카니즘이 이 기술에 요구된다.
(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 내에서 보조 캐시(417)로부터의 명령의 오버레이를 허용하는 4개의 멀티플렉서(425)가 있다. 유사하게, 보조 디렉토리는 또한 분기 히스토리 정보에 기초하여 +16 카운터(421)의 어드레스 1 신호에 자신의 어드레스를 오버레이한다. 또한, FTAC(419)는 또한 도 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에서 FTAC 어드레스는 타겟 1과 동일하게 갱신되고 단계 526으로 돌아간다.
단계 518에서 어드레스 1이 타겟 0과 동일하지 않으면, 단계 521에서 그룹 1 및 다음 사이클 그룹 내의 모든 명령들은 무효하게 되고 오버라이드 어드레스는 타겟 0과 동일하게 되며 보조 캐시 내의 다음 그룹을 절약하도록 준비된다. 그 다음, 단계 523에서 보조 어드레스는 타겟 0과 동일하게 갱신되고 FTAC 어드레스는 타겟 0+16과 동일하게 된다.
한편, 단계 520에서 그룹 1 내에 예측된 분기가 없으면, 단계 532에서 어드레스 2가 어드레스 1 + 16과 동일한지 결정한다. 대답이 "예"이면, 단계 526으로 돌아간다. 대답이 "아니오"이면, 단계 534에서 모든 다음 사이클 그룹은 무효한 것이 되고 오버라이드 어드레스는 어드레스 1 + 16과 동일하게 설정된다. 그 다음, 단계 536에서 FTAC 어드레스는 어드레스 1 + 16과 동일하게 갱신되고 단계 526으로 돌아간다.
단계 514로 돌아가서, 그룹 0 내에 예측된 분기가 없으면, 어드레스 1이 어드레스 0 + 16과 동일한지를 결정한다. 어드레스 1이 어드레스 0 + 16과 동일하면, 단계 520으로 돌아가고 결정 체인에 근거하여 단계를 진행한다. 한편, 대답이 "아니오"이면, 단계 540에서 그 어드레스 1은 어드레스 0 + 16과 동일하지 않고, 그룹 1 및 다음 사이클 그룹 내의 모든 명령들은 무효한 것이 되고 오버라이드 어드레스는 어드레스 0 + 16과 동일하게 된다. 그 다음, 단계 542에서 보조 어드레스는 무효한 것과 동일하게 갱신되고 FTAC 어드레스는 무효한 것으로 갱신된다. 그 다음 단계 526으로 돌아간다. 따라서, 이 분기 예측 프로세스를 통해, 시스템은 불연속 명령을 효율적으로 페치하기 위해 보조 캐시의 오버레이 명령을 허용하는 방식으로 분기 히스토리 정보를 축적할 수 있다. 특정 예와 관련하여 동작을 보다 명백하게 설명하기 위해 도 6을 참조한다.
도 6은 도 5의 분기 예측 알고리즘을 이용할 때의 명령 흐름을 설명하는 예 600이다. 도 6에 도시된 예 600은 프로그램 세그먼트(604)에 대한 본 발명에 따른 연속 사이클에서 수행된 페치 시퀀스(602)를 나타낸다. 모든 어드레스들은 16진 포맷(기본 16)을 이용하여 설명된다는 것에 주의한다. 예 600의 애스터리스크는 명령 스트림으로부터 무효화된 페치 명령을 나타낸다.
도시된 바와 같이, 프로그램 세그먼트는 복수의 블럭(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에서 볼 수 있는 바와 같이 사이클 003-007에서 두 개의 불연속 명령(0X000 및 0X100)이 단일 사이클 내에 검색될 때까지 누적된다.
이 분기 예측 프로세스는 기본 블럭 610 및 612를 통해서 다시 반복되고, 여기서 불연속 명령은 020에서 024까지 페치된다. 따라서, 예에서 볼 수 있는 바와 같이, 분기 히스토리 정보가 적당한 방법으로 누적된 다음 불연속 명령이 단일 사이클 내에서 획득될 수 있다. 이러한 프로세스는 명령이 되풀이되는 경우에 특히 반복될 수 있어서, 대다수의 불연속 명령들은 단일 사이클 내에서 검색될 수 있다. 이는 본 발명에 따른 분기 예측 프로세스를 이용하면서 보조 캐시와 잡다한 분기 논리를 분기 히스토리 표와 함께 사용함으로써 성취된다.
프로세서가 단일 사이클 내에서 불연속 명령을 페치하도록 트레이스 캐싱 및 다중 분기 예측자와 같은 몇 가지 다른 기술들이 제안되었다. 본 발명에 따라 기술된 보조 캐시 및 명령 오버레이 기술은 다른 기술보다 더 단순하면서도 효과적이다.
본 발명이 도시된 실시예에 따라 기술되었지만, 당 기술에 통상의 지식을 가진 자는 실시예에 변형이 있을 수 있고 이러한 변형들은 본 발명의 사상과 범주 내에서 벗어나지 않는 것임을 쉽게 알 수 있을 것이다. 따라서, 당 기술에 숙련된 자는 첨부된 청구 범위의 사상과 범주로부터 벗어남이 없이 많은 변형이 있을 수 있다.
Claims (15)
- 데이타 처리 시스템에서 불연속 명령 블럭들을 페치(fetch)하기 위한 시스템에 있어서,제1의 복수의 명령을 제공하기 위한 명령 캐시 수단;상기 제1의 복수의 명령을 수신하여 상기 제1의 복수의 명령에 대한 분기 히스토리 정보를 제공하기 위한 분기 논리 수단; 및상기 분기 히스토리 정보에 기초하여 제2의 복수의 명령을 수신하기 위한 보조 캐시 수단 -상기 보조 캐시 수단은 상기 제1의 복수의 명령에 분기가 있고 상기 분기가 상기 제2의 복수의 명령을 향하고 있는 경우에 상기 제2의 복수의 명령 중 적어도 하나를 오버레이(overlay)함-을 포함하는 시스템.
- 제1항에 있어서, 상기 보조 캐시 수단은 보조 캐시 및 보조 디렉토리를 포함하는 시스템.
- 제1항에 있어서, 상기 제1의 복수의 명령은 두 개의 명령 블럭을 포함하는 시스템.
- 제1항에 있어서, 상기 제2의 복수의 명령은 하나의 명령 블럭을 포함하는 시스템.
- 제1항에 있어서, 상기 분리 논리 수단에 결합된 분기 어드레스 타겟 캐시를 더 포함하는 시스템.
- 데이타 처리 시스템에서 불연속 명령 블럭들을 획득하기 위한 방법에 있어서,(a) 제1 캐시에 제1의 복수의 명령을 저장하는 단계;(b) 상기 제1의 복수의 명령과 제2 캐시 내의 제2의 복수의 명령을 병렬 페치하는 단계 -상기 제2의 복수의 명령의 수는 상기 제1의 복수의 명령의 수보다 많음-; 및(c) 상기 데이타 처리 시스템의 분기 히스토리 정보에 기초하여 상기 제2의 복수의 명령중 일부를 상기 제1의 복수의 명령 중 적어도 하나로 교체하는 단계를 포함하는 방법.
- 제6항에 있어서, 상기 제1 캐시는 보조 캐시를 포함하고, 상기 제2 캐시는 명령 캐시를 포함하는 방법.
- 제7항에 있어서, 상기 보조 캐시는 보조 디렉토리를 포함하는 방법.
- 제6항에 있어서, 상기 제2의 복수의 명령은 두 개의 명령 블럭을 포함하는 방법.
- 제6항에 있어서, 상기 제1의 복수의 명령은 하나의 명령 블럭을 포함하는 방법.
- 데이타 처리 시스템에서 불연속 명령 블럭들을 획득하기 위한 시스템에 있어서,제1 캐시에 제1의 복수의 명령을 저장하기 위한 수단;상기 제1의 복수의 명령과 제2 캐시 내의 제2의 복수의 명령을 병렬 페치하기 위한 수단 -상기 제2의 복수의 명령의 수는 상기 제1의 복수의 명령의 수보다 많음-; 및상기 데이타 처리 시스템의 분기 히스토리 정보에 기초하여 상기 제2의 복수의 명령중 일부를 상기 제1의 복수의 명령중 적어도 하나로 교체하기 위한 수단을 포함하는 시스템.
- 제11항에 있어서, 상기 제1 캐시는 보조 캐시를 포함하고, 상기 제2 캐시는 명령 캐시를 포함하는 시스템.
- 제12항에 있어서, 상기 보조 캐시는 보조 디렉토리를 포함하는 시스템.
- 제11항에 있어서, 상기 제2의 복수의 명령은 두 개의 명령 블럭을 포함하는 시스템.
- 제11항에 있어서, 상기 제1의 복수의 명령은 하나의 명령 블럭을 포함하는 시스템.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/076,593 US6256727B1 (en) | 1998-05-12 | 1998-05-12 | Method and system for fetching noncontiguous instructions in a single clock cycle |
US9/076,593 | 1998-05-12 | ||
US09/076,593 | 1998-05-12 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR19990087940A true KR19990087940A (ko) | 1999-12-27 |
KR100431168B1 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)
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 |
US7165168B2 (en) * | 2003-01-14 | 2007-01-16 | Ip-First, Llc | Microprocessor with branch target address cache update queue |
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 |
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 |
US6895498B2 (en) * | 2001-05-04 | 2005-05-17 | Ip-First, Llc | Apparatus and method for target address replacement in 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 |
US6886093B2 (en) * | 2001-05-04 | 2005-04-26 | Ip-First, Llc | Speculative hybrid branch direction predictor |
US7134005B2 (en) * | 2001-05-04 | 2006-11-07 | Ip-First, Llc | Microprocessor that detects erroneous speculative prediction of branch instruction opcode byte |
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 |
US7234045B2 (en) * | 2001-07-03 | 2007-06-19 | Ip-First, Llc | Apparatus and method for handling BTAC branches that wrap across instruction cache lines |
US7203824B2 (en) * | 2001-07-03 | 2007-04-10 | Ip-First, Llc | Apparatus and method for handling BTAC branches that wrap across instruction cache lines |
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 |
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 |
US8327115B2 (en) | 2006-04-12 | 2012-12-04 | Soft Machines, Inc. | Plural matrices of execution units for processing matrices of row dependent instructions in single clock cycle in super or separate mode |
US20080077778A1 (en) * | 2006-09-25 | 2008-03-27 | Davis Gordon T | Method and Apparatus for Register Renaming in a Microprocessor |
US20080215804A1 (en) * | 2006-09-25 | 2008-09-04 | Davis Gordon T | Structure 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 |
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 |
US7610449B2 (en) * | 2006-10-04 | 2009-10-27 | International Business Machines Corporation | Apparatus and method for saving power in a trace cache |
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 |
US20080250207A1 (en) * | 2006-11-14 | 2008-10-09 | Davis Gordon T | Design structure for cache maintenance |
US20080114964A1 (en) * | 2006-11-14 | 2008-05-15 | Davis Gordon T | Apparatus and Method for Cache Maintenance |
EP2527972A3 (en) | 2006-11-14 | 2014-08-06 | Soft Machines, Inc. | Apparatus and method for processing complex instruction formats in a multi- threaded architecture supporting various context switch modes and virtualization schemes |
US20080120468A1 (en) * | 2006-11-21 | 2008-05-22 | Davis Gordon T | Instruction Cache Trace Formation |
US20080235500A1 (en) * | 2006-11-21 | 2008-09-25 | Davis Gordon T | Structure for 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 |
KR101685247B1 (ko) | 2010-09-17 | 2016-12-09 | 소프트 머신즈, 인크. | 조기 원거리 분기 예측을 위한 섀도우 캐시를 포함하는 단일 사이클 다중 분기 예측 |
US9733944B2 (en) | 2010-10-12 | 2017-08-15 | Intel Corporation | Instruction sequence buffer to store branches having reliably predictable instruction sequences |
US9678755B2 (en) | 2010-10-12 | 2017-06-13 | Intel Corporation | Instruction sequence buffer to enhance branch prediction efficiency |
CN103547993B (zh) | 2011-03-25 | 2018-06-26 | 英特尔公司 | 通过使用由可分割引擎实例化的虚拟核来执行指令序列代码块 |
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 |
CN108376097B (zh) | 2011-03-25 | 2022-04-15 | 英特尔公司 | 用于通过使用由可分割引擎实例化的虚拟核来支持代码块执行的寄存器文件段 |
TWI603198B (zh) | 2011-05-20 | 2017-10-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 |
EP2783280B1 (en) | 2011-11-22 | 2019-09-11 | Intel Corporation | An accelerated code optimizer for a multiengine microprocessor |
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 |
US9710399B2 (en) | 2012-07-30 | 2017-07-18 | Intel Corporation | Systems and methods for flushing a cache with modified data |
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 |
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 |
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 |
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 |
US9811342B2 (en) | 2013-03-15 | 2017-11-07 | Intel Corporation | Method for performing dual dispatch of blocks and half blocks |
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 |
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 |
US9891924B2 (en) | 2013-03-15 | 2018-02-13 | Intel Corporation | Method for implementing a reduced size register view data structure in a microprocessor |
US9569216B2 (en) | 2013-03-15 | 2017-02-14 | Soft Machines, Inc. | Method for populating a source view data structure by using register template snapshots |
US9904625B2 (en) | 2013-03-15 | 2018-02-27 | Intel Corporation | Methods, systems and apparatus for predicting the way of a set associative cache |
US9886279B2 (en) | 2013-03-15 | 2018-02-06 | Intel Corporation | Method for populating and instruction view data structure by using register template snapshots |
EP2972845B1 (en) | 2013-03-15 | 2021-07-07 | Intel Corporation | A method for executing multithreaded instructions grouped onto blocks |
WO2014150971A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for dependency broadcasting through a block organized source view data structure |
CN105247484B (zh) | 2013-03-15 | 2021-02-23 | 英特尔公司 | 利用本地分布式标志体系架构来仿真访客集中式标志体系架构的方法 |
WO2014150806A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for populating register view data structure by using register template snapshots |
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 |
Family Cites Families (20)
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 |
JPS5927935B2 (ja) | 1980-02-29 | 1984-07-09 | 株式会社日立製作所 | 情報処理装置 |
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 |
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 |
DE69130588T2 (de) | 1990-05-29 | 1999-05-27 | National Semiconductor Corp., Santa Clara, Calif. | Cache-Speicher von partiell decodierten Befehlen und Verfahren hierfür |
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 |
-
1998
- 1998-05-12 US US09/076,593 patent/US6256727B1/en not_active Expired - Fee Related
-
1999
- 1999-04-14 KR KR10-1999-0013604A patent/KR100431168B1/ko not_active IP Right Cessation
- 1999-04-19 EP EP99302988A patent/EP0957428B1/en not_active Expired - Lifetime
- 1999-04-19 DE DE69929936T patent/DE69929936T2/de not_active Expired - Lifetime
- 1999-04-27 JP JP11990699A patent/JP3182740B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP3182740B2 (ja) | 2001-07-03 |
DE69929936D1 (de) | 2006-04-27 |
EP0957428A3 (en) | 2000-03-08 |
EP0957428A2 (en) | 1999-11-17 |
KR100431168B1 (ko) | 2004-05-12 |
US6256727B1 (en) | 2001-07-03 |
JP2000029701A (ja) | 2000-01-28 |
EP0957428B1 (en) | 2006-02-22 |
DE69929936T2 (de) | 2006-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100431168B1 (ko) | 단일 클럭 사이클 내에 불연속 명령을 페치하기 위한 방법 및 시스템 | |
JP3542021B2 (ja) | セット予測によりセット連想キャッシュの遅延を少なくする方法及び装置 | |
US6892293B2 (en) | VLIW processor and method therefor | |
EP0652510B1 (en) | Software scheduled superscalar computer architecture | |
KR100880686B1 (ko) | 2개 레벨의 분기 예측 캐시를 갖는 분기 예측 | |
US6088788A (en) | Background completion of instruction and associated fetch request in a multithread processor | |
KR100577445B1 (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 | |
US6298423B1 (en) | High performance load/store functional unit and data cache | |
US7836287B2 (en) | Reducing the fetch time of target instructions of a predicted taken branch instruction | |
KR100586058B1 (ko) | 재명명 태그들을 교환함으로써 이동이 이루어지는 레지스터 재명명 | |
JP3599409B2 (ja) | 分岐予測装置 | |
US6289442B1 (en) | Circuit and method for tagging and invalidating speculatively executed instructions | |
US6279105B1 (en) | Pipelined two-cycle branch target address cache | |
KR100240591B1 (ko) | 분기명령어의 효율적인 처리를 위한 브랜치 타겟 버퍼 및 그를 이용한 분기 예측방법 | |
US5903740A (en) | Apparatus and method for retiring instructions in excess of the number of accessible write ports | |
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 | |
US5935238A (en) | Selection from multiple fetch addresses generated concurrently including predicted and actual target by control-flow instructions in current and previous instruction bundles | |
GB2363873A (en) | Processor and Method including a Cache having Confirmation Bits for Improving Address-Predictable Branch Instruction Target Predictions | |
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 | |
KR100603067B1 (ko) | 분기 예측의 타입을 분류하기 위해 복귀 선택 비트들을 이용하는 분기 예측 | |
JP2002527798A (ja) | ストアアドレス生成およびユニバーサルな依存性ベクトルに基づくロードブロックのためのメカニズム |
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 |