KR102615010B1 - 쉽게 가용한 프리페처 정밀도에 의해서 동적으로 제어되는 명령 프리페처 - Google Patents

쉽게 가용한 프리페처 정밀도에 의해서 동적으로 제어되는 명령 프리페처 Download PDF

Info

Publication number
KR102615010B1
KR102615010B1 KR1020160121580A KR20160121580A KR102615010B1 KR 102615010 B1 KR102615010 B1 KR 102615010B1 KR 1020160121580 A KR1020160121580 A KR 1020160121580A KR 20160121580 A KR20160121580 A KR 20160121580A KR 102615010 B1 KR102615010 B1 KR 102615010B1
Authority
KR
South Korea
Prior art keywords
instruction
predicted
branch prediction
instructions
prefetcher
Prior art date
Application number
KR1020160121580A
Other languages
English (en)
Other versions
KR20170082965A (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 KR20170082965A publication Critical patent/KR20170082965A/ko
Application granted granted Critical
Publication of KR102615010B1 publication Critical patent/KR102615010B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • 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
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions

Landscapes

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

Abstract

하나의 일반적인 측면에 따라, 장치는 분기 예측 유닛, 페치 유닛, 프리페처 회로 또는 유닛을 포함할 수 있다. 상기 분기 예측 유닛은 예측 명령을 출력한다. 상기 페치 유닛은 캐쉬 메모리로부터 다음 명령을 페치할 수 있다. 상기 프리페처 회로는 상기 예측된 명령 및 상기 다음 명령의 사이의 관련성에 근거하여 사전 예측된 명령을 캐쉬 메모리에 프리페치할 수 있다.

Description

쉽게 가용한 프리페처 정밀도에 의해서 동적으로 제어되는 명령 프리페처 {Instruction Prefetcher Dynamically Controlled By Readily Available Prefetcher Accuracy}
본 발명은 프리페칭 데이터에 관련된 것으로, 좀 더 상세하게는 명령들의 프리페칭을 제어하는 것에 관련된 것이다.
컴퓨터 구조에서, 명령 프리페칭은 대기 상태를 감소시킴으로써, 프로그램의 실행 속도를 높이는데 사용되는 기술이다. 프리페칭은 프로세서 또는 프로세서의 하위 유닛(예를 들어 프리 페치 유닛)이, 명령 또는 데이터 블록이 실제로 필요하기 전에, 메인 메모리로부터 명령 또는 데이터 블록을 요구하는 경우, 일반적으로 발생된다. 명령/데이터 블록이 메인 또는 시스템 메모리로부터 전달되면, 명령/데이터 블록은 일반적으로 캐쉬에 배치된다. 캐쉬로부터 명령/데이터 블록 액세스에 대한 요청이 행해지는 경우, 요청이 메인 또는 시스템 메모리로부터 인가되는 경우보다, 명령/데이터 블록은 더 빨리 액세스될 수 있다. 그러므로, 프리페칭은 메모리 엑세스 지연(latency)을 막는다.
일반적으로 프로그램들은 순차적으로 실행되기 때문에, 명령들이 프로그램 순서대로 프리페치되는 경우에 성능이 최상이 될 수 있다. 대안적으로, 프리페치는 복잡한 분기 예측 알고리즘의 일부분이 될 수 있고, 이 알고리즘에서 프로세서는 연산의 결과를 예측하고 사전에 올바른 명령을 페치하는 것을 시도한다.
컴퓨터 구조에서, 분기 예측기 또는 분기 예측 유닛은 결과가 실제로 연산되고 알려지기 전에 분기(즉 조건 판단(if-then-else) 구조, 점프 명령)가 어떤 방향으로 진행할 지에 대한 예측을 시도하는 디지털 회로이다. 분기 예측기의 목적은 일반적으로 명령 파이프라인에서 플로우를 개선시킨다. 분기 예측기들은 많은 현대의 파이프라인 방식의 마이크로프로세서 구조들에서 고효율의 퍼포먼스를 달성하는데 결정적인 역할을 한다.
양방향 분기는 보통 조건적인 점프 명령과 함께 구현된다. 조건적인 점프는, 비고려(“not taken”)이여서 조건적인 점프 후에 즉시 따라오는 코드의 첫번째 분기와 함께 실행을 계속하거나, 혹은 고려(“taken”)이여서 코드의 두번째 분기가 저장되어 있는 프로그램 메모리에 다른 단계로 점프할 수 있다. 조건이 연산 완료되고, 조건적인 점프가 명령 파이프라인에서 실행 단계를 통과할 때까지 조건적인 점프가 고려될 것인지 안될 것인지에 대한 확신은 종종 알려진 사항이 아니다.
분기 예측없이는, 파이프라인에서 다음 명령이 페치 단계에 인가되기 전 조건적인 점프 명령이 실행 단계를 통과할 때까지, 일반적으로 프로세서는 대기해야만 한다. 분기 예측기는 조건적인 점프가 최대한으로 고려될지 안될지에 대한 예측을 시도함으로써, 낭비되는 시간을 줄일 수 있도록 한다. 그러면 가장 가능성 있는 것으로 예상되는 분기는 페치되고, 추정적으로 실행된다. 분기 예측기가 예상되는 분기가 잘못되었다고 판단하는 경우에는, 추정적으로 실행되거나 부분적으로 실행된 명령들은 대부분 폐기되고, 파이프라인은 올바른 분기와 함께 시작되고, 지연을 초래하게 된다.
본 발명은 프리페칭 데이터에 관련된 것으로, 좀 더 상세하게는 명령들의 프리페칭을 제어하는 것에 관련된 것이다.
하나의 일반적인 측면에 따라, 장치는 분기 예측 유닛, 페치 유닛, 프리페처 회로 또는 유닛을 포함할 수 있다. 상기 분기 예측 유닛은 예측 명령을 출력한다. 상기 페치 유닛은 캐쉬 메모리로부터 다음 명령을 페치할 수 있다. 상기 프리페처 회로는 상기 예측된 명령 및 상기 다음 명령의 사이의 관련성에 근거하여 사전 예측된 명령을 캐쉬 메모리에 프리페치할 수 있다.
또다른 일반적인 측면에 따라, 방법은 예측 회로에 의해서 예측 명령이 프로세서에 의해서 실행될 것인지를 예측하는 단계를 포함할 수 있다. 상기 방법은 페칭 회로에 의해서 다음 명령을 캐쉬 메모리에 페치하는 단계를 포함할 수 있다. 상기 방법은 또한 상기 예측된 명령 및 상기 다음 명령 사이의 관련성이 하나 이상의 소정의 기준 세트를 만족하는지 여부를 결정하는 단계를 포함할 수 있다. 상기 방법은 하나 이상의 소정의 상기 기준 세트를 반족하는 경우, 상기 예측된 명령을 상기 캐쉬 메모리에 프리페칭하는 단계를 포함할 수 있다.
또다른 일반적인 측면에 따라 장치는 프로세서, 캐쉬 메모리, 분기 예측 유닛, 페치 유닛, 그리고 프리페처 회로 또는 유닛을 포함할 수 있다. 프로세서는 명령들을 실행할 수 있다. 캐쉬 메모리는 일시적으로 명령들을 저장할 수 있다. 분기 예측 유닛은 예측된 명령을 출력할 수 있고, 상기 예측된 명령은 추정적으로 예측되어 프로세서에 의해서 실행되고, 상기 분기 예측 유닛은 페치 유닛으로부터 분리된다. 페치 유닛은 캐쉬 메모리로부터 다음 명령을 페치할 수 있다. 프리페처 회로는 상기 예측된 명령 및 상기 다음 명ㄹ여의 관련성이 하나 이상의 소정의 기준을 만족시키는지에 응답하여 사전 예측된 명령을 상기 캐쉬 메모리에 프리페치할 수 있다.
하나 이상의 구현되는 실시예들에 대한 상세한 내용은 첨부 도면 및 아래의 설명에서 설명된다. 다른 특징들은 상세한 설명, 도면, 및 청구항들로부터 명백하게 파악될 것이다.
데이터 프리패칭을 위한 시스템 및/또는 방법, 그리고 더욱 상세하게는 프리패치 명령어들을 제어하는 것은 실질적으로 적어도 하나의 도면들과 연관하여 보여지고 및/또는 설명되며, 그리고 청구범위들에서 더욱 완전하게 설명된다.
본 발명의 일 실시예에 따른 프로세서는 명령 프리페처 유닛을 포함한다. 명령 프리페처 유닛은 명령들을 L1 명령 캐쉬로 프리페치한다. 이는 명령 페치 유닛이 실제 페칭 동작을 수행하기 전에 이루어지므로, 명령 페치 유닛에 의해서 유발되는 임의의 캐쉬 미스들의 발생 빈도를 감소시킨다.
도 1은 본 발명의 일 실시예에 따른 시스템의 블록도이다.
도 2는 본 발명의 일 실시예에 따른 장치의 블록도이다.
도 3은 본 발명의 일 실시예에 따른 장치의 블록도이다.
도 4는 본 발명의 일 실시예에 따라 형성된 장치들을 포함하는 정보 프로세싱 시스템의 개략적인 블록도이다.
다양한 도면들의 참조 번호와 같이 요소들을 지시한다.
다양한 실시예들에서 일부 실시예들은 첨부된 도면을 참조하여 상세히 설명된다. 그러나, 본 명세서에 논의되는 주제들은 많은 다른 형태들로 구현될 수 있으며, 본 명세서에서 설명하는 실시예들에 한정되는 것으로 해석되어서는 안된다. 오히려 상기 실시예들은 본 명세서가 철저하고 완전할 수 있도록 제공되며, 상기 실시예들은 본 명세서에서 논의되는 주제들의 범위를 당업자에게 완전하게 전달할 수 있다. 도면들에서, 층들 및 영역들의 크기 및 상대적 그기는 명료성을 위해서 과장될 수 있다.
요소 또는 층이 또 다른 요소 또는 층 “상에” “과 연결되는” 또는 “과 연결되는 것으로 언급되는 경우, 다른 요소 또는 층에 연결되거나, 결합되거나, 또는 요소들 또는 층들 사이에 개재되는 것을 나타낼 수 있는 것은 자명할 것ㅇ디ㅏ.
대조적으로, 요소가 다른 요소 또는 층 “상에 직접” “과 직접 연결되는” 또는 “직접 결합되는” 경우, 사이에 개재되는 요소들 또는 층이 없다는 것을 나타낸다. 참조 번호들은 동일한 요소들을 지칭한다. 본 명세서에서 용어 “및/또는”은 관련된 열거 항목들의 하나 이상의 모든 임의의 조합을 포함한다.
제1, 제2, 제3 등의 용어가 본 명세서에서 다양한 요소들, 구성들, 영역들, 층들, 및/또는 부분들을 설명하기 위해서 사용됨에도 불구하고, 상기 요소들, 구성들, 영역들, 층들, 및/또는 부분을 상기 용어들에 한정되지 않아야할 것이다. 상기 용어들은 하나의 요소, 구성, 영역, 층, 또는 또다른 영역, 층, 또는 부분으로부터의 부분을 구별하기 위해서 단지 사용된다. 그러므로, 이하 논의될 제1 요소, 구성, 영역, 층 또는 부분은 본 명세서에서 논의되는 주제의 암시로부터 벗어남이 없이 제2 요소, 구성, 영역, 층 또는 부분으로 명명될 수 있다.
“아래” “낮은” “위에” “상측”과 같은 공간적으로 상대적인 용어들은 도면에서 설명되는 바와 같이 하나의 요소 또는 특징과 또다른 요소(들) 또는 특징(들)과의 관계를 설명하는 명세서의 편의를 위해서 사용된다. 공간적으로 상대적인 용어들은 도면들에서 도시되는 방향에 추가하여, 사용 또는 동작하는 장치의 서로 다른 방향들을 망라하기 위해서 의도되는 것은 자명할 것이다. 예를 들어, 도면의 장지가 뒤집힌 경우, 그 땐 다른 요소들 또는 특징들 “아래”로 설명되는 요소들은 다른 요소들 또는 특징들 “상”에 있는 것으로 설명될 것이다. 그러므로, “아래”와 같은 예시적인 용어는 “위” 및 “아래”의 방향으로 모두 포함할 수 있다. 그렇지 않은 경우에 장치는 다른 방향(90도 회전 또는 다른 방향)으로 배치될 수 있고, 본 명세서에서 사용되는 공간적으로 상대적인 설명들은 이에 따라서 해석된다.
본 명세서에서 사용되는 용어는 단지 특정 실시예를 설명하기 위한 목적이고, 본 명세서에서 논의되는 주제를 한정할 의도로 사용되지 않는다. 본 명세서에서는 문헌에서 특별히 지시하지 않는 경우에도 단수 형태들은 복수 형태들을 포함할 수 있다. 본 명세서의 상세한 설명에서 사용되는 경우 용어 “포함하다”는 언급된 특징들, 숫자들, 단계들, 동작들, 요소들, 및/또는 구성들의 존재를 나타내지만, 하나 이상의 특징들, 숫자들, 단계들, 동작들, 요소들, 및/또는 그룹들의 존재 또는 부가를 배제하지 않는다.
본 명세서에서 실시예들은 이상화 된 실시예들(및 중간 구조체들)의 개략적인 도면인 단면도를 참조하여 설명된다. 따라서, 예를 들어, 제조 기술 및/또는 허용 오차의 결과로써 도면의 형태는 다양하게 예측된다. 그러므로, 실시예들은 본 명세서에서 도시되는 영역들의 특정 형태에 제한하여 해석되어선 안되고, 예를 들어 제조함에 따라 초래되는 형상의 편차를 포함하여야 한다. 예를 들어, 직사각형으로 도시된 주입 영역은 주입 영역에서 주입되지 않은 영역으로의 바이너리(binary)한 변화보다 오히려 전형적으로 둥근 또는 커브드된 특징들 및/또는 가장자리에 주입 농도 그라데이션을 가질 것이다. 이와 같이, 주입에 의해서 형성된 매립 영역은 상기 매립 영역과 상기 주입이 발생되는 표면 사이의 영역에서 일부 주입을 결과를 가져올 수 있다. 그러므로, 도면들에서 설명되는 영역들은 자연의 개략도이고, 그들의 형상들은 장치의 영역의 실제 형상을 설명하기 위한 것이 아니고, 본 명세서에서 논의되는 주제의 범위를 한정하기 위한 것이 아니다.
다르게 정의되지 않는 한, 본 명세서에서 사용되는 모든 용어들은 본 명세서의 기술 분야에 속한 당업자에게 일반적으로 이해하는 것과 같이 동일한 의미를 가진다. 일반적으로 사용되는 사전들에서 정의되는 용어들은 관련 문헌에서의 의미와 일치하는 의미로써 해석되어야 하고, 본 명세서에 명백하게 정의하지 않는 경우에 이상적으로 또는 과도하게 형식적인 의미로써 해석되지 않을 것이다.
본 명세서에서 실시예들은 첨부된 도면들을 참조하여 상세히 설명될 것이다.
도 1은 본 발명의 일 실시예에 따른 시스템(100)의 블록도이다.
다양한 실시예에서, 시스템(100)은 컴퓨터, 다수 개의 개별 직접 회로들, 또는 SoC(system-on-a-chip)를 포함할 수 있다. 후술할 바와 같이 시스템(100)은 다수 개의 다른 구성 요소들을 포함할 수 있고, 상기 다수 개의 다른 구성 요소들은 본 명세서에서 논의될 주제를 모호하게 하지 않게 하기 위해서 본 도면에서 도시되지 않는다.
도시된 실시예에서, 시스템(100)은 시스템 또는 메인 메모리(104)를 포함한다. 다양한 실시예에서, 시스템 메모리(104)는 DRAM(dynamic random access memory)으로 구성될 수 있다. 그럼에도 불구하고, 전술한 내용은 단지 본 명세서에 따른 하나의 예시이고, 이에 한정되지 않는다. 상기 실시에에서, 시스템 메모리(104)는 모듈(즉, DIMMS(dual in-line memory modules)) 상의 메모리를 포함할 수 있고, 시스템(100)과 고정적으로 솔더링 혹은 고정되게 통합된 통합칩이거나, 시스템(100)을 포함하는 통합 칩(즉 SoC)의 일부분으로 결합될 수 있다. 전술한 내용은 단지 본 명세서에 따른 몇가지 예시이며, 이에 한정되지 않는다.
도시된 실시예에서, 시스템 메모리(104)는 정보 또는 데이터의 조각들을 저장할 수 있다. 데이터의 상기 조각들은 프로세서(102)가 다양한 동작을 수행하도록 하는 명령들을 포함할 수 있다. 일반적으로 시스템 메모리(104)는 다 수 개의 캐쉬들을 포함하는 더 큰 메모리 계층(memory hierarchy)의 일부분일 수 있다. 다양한 실시예들에서, 본 명세서에서 설명되는 동작들은 기억 계층의 또 다른 층 또는 단계(즉 레벨 2(L2) 캐쉬)에 의해서 수행될 수 있다. 본 명세서에서 개시하고 있는 시스템 메모리(104)를 참조하여 설명되는 동작들은 도시된 실시예에 한정되지 않는다는 것은 자명하다.
도시된 실시예에서, 시스템(100)은 또한 프로세서(102)를 포함한다. 프로세서(102)는 다양한 명령들에 따른 복수의 동작들을 수행할 수 있다. 상기 명령들은 다양한 실행 유닛들(대부분 도시되지 않음)에 의해서 실행될 수 있다. 상기 다양한 실행 유닛들은 ALUs(arithmetic logic units), FPUs(floating point units), LSUs(load/store units), IFU(116, instruction fetch unit) 등일 수 있다. 하나의 유닛은 프로세서(102)의 기능들의 일 부분을 수행하는 함께 그룹핑된 단순한 전기적 회로들의 집합들인 것은 자명하다. 전형적으로, 하나의 유닛은 프로세서(102)의 파이프라인 구조에서 하나 이상의 동작을 수행한다.
도시된 실시예에서, 프로세서(102)는 분기 예측 유닛(BPU) 또는 회로(112)를 포함할 수 있다. 전술한 바와 같이 프로세서(102)는 명령들의 스트림을 실행함에 따라, 하나 이상의 명령들은 분기 명령일 수 있다. 분기 명령은 명령들의 스트림을 두 개 경로중의 하나 혹은 더 많은 경로들 중 하나 사이를 분기하도록 한다. 분기 명령의 일반적인 예는 if-then 구조이다. if-then 구조에서 특정 조건이 만족하는 경우에(즉, 사용자가 ok 버튼을 클릭하는 경우) 명령들의 제1 집합은 수행될 것이고, 만약 특정 조건이 만족되지 않는 경우(즉 사용자가 “취소” 버튼을 클릭하는 경우) 명령들의 제2 집합이 수행될 것이다. 전술한 바와 같이 이는 파이프라인 프로세서 구조들의 문제이다. 왜냐하면 분기, 점프 또는 if-then 구조의 결과가 알려지기 전에(분기 명령이 해결된 파이프라인 단계는 파이프 라인에서 깊은 단계에 있으므로) 새로운 명령은 반드시 프로세서(102)의 파이프라인에 인가되어야 하기 때문이다. 그러므로, 분기 명령이 해결될 때까지 새로운 명령들이 파이프라인에 인가되는 것이 금지되어야 하거나(따라서, 파이프라인 구조의 중요 장점을 무효화 시킴), 프로세서(102)는 어느 방향으로 명령들의 스트림이 분기되고, 추정적으로 상기 명령들을 파이파라인 내에 인가시킬지에 관해서 예측하여야 한다. BPU(112)는 어떻게 명령들의 스트림이 분기될 것인지 예측할 수 있다. 도시된 실시예에서, BPU(112)는 예측된 명령(172)을 출력하거나, 좀 더 정확하게, 예측된 명령(172)이 저장된 메모리 주소를 출력할 수 있다.
도시된 실시예에서, 프로세서(102)는 BPAQ(114, branch prediction address queue)를 포함한다. BPAQ(114)는 예측된 명령들(172)을 위해서 복수의 주소들을 저장하는 메모리 구조를 포함할 수 있다. 상기 예측된 명령들(172)들은 BPU(112)에 의해 예측된다. BPAQ(114)는 상기 예측된 명령들(172)의 주소들을 FIFO(first-in-first-out) 순서로 저장할 수 있고, 그렇게 함으로써, 명령 주소들은 BPU(112)가 상기 명령들을 예측한 순서와 동일하게 BPAQ(114)로부터 출력될 수 있다.
도시된 실시예에서, 프로세서(102)는 메모리 계층으로부터의 명령들을 페치하고, 명령들을 프로세서(102)의 파이프라인에 할당하는 명령 페치 유닛(116, IFU)을 포함한다. 상기 실시예에서, IFU(116)은 가장 덜 최신 명령 또는 가장 오래된 명령(즉 다음 명령(174))과 연관된 메모리 주소를 BPAQ(114)로부터 취해서, 메모리 계층으로부터 실제 명령(174)을 요청한다. 이상적으로 실제 명령(174)은 메모리 계층으로부터 신속하게 제공될 것이고, 프로세서(102)의 파이프 라인에 할당될 것이다.
도시된 실시예에서, BPAQ(114)는 BPU(112)를 IFU(116)로부터 분리시킨다. 상기 실시예에서, BPU(112)는 IFU(116)가 명령들을 소모하는 레이트(rate)와는 상이한 레이트(즉, 더 빠르게)로 명령들을 예측한다. 결합되거나, 또는 버퍼되지 않는 구조 또는 실시예에서, IFU(116)는 예측된 명령들을 BPU(112)가 명령들을 예측하는 것만큼 신속하게 페치할 것이 요구된다. 도시된 실시예에서, BPU(112)에 의해서 생성된 예측된 명령들(172)의 임의의 추가적인 주소가 BPAQ(114)에 단순히 저장되기 때문에 IFU(116)는 지연(즉 캐쉬 미스, 파이프라인 멈춤/지연(stall) 등)을 겪을 수 있고, BPU(112)에 영향을 주지 않을 수 있다. IFU(116)가 새로운 명령들(174)의 주소들의 소모를 속개할 수 있을 때까지 새로운 명령들(174)은 BPAQ(114)에서 대기하고 있을 것이다.
IFU(116)의 페칭 메커니즘으로 돌아와서, 이상적으로 명령(174)은 레벨 1의 명령 캐쉬(118)로부터 페치될 수 있다.(메모리 엑세스(178)를 통해서) 상기 실시예에서, 메모리 계층의 탑 또는 더 높은 단계로써 L1 명령 캐쉬(118)는 상대적으로 신속하고, 파이프라인에서 적은 지연 유발하거나, 지연을 유발하지 않는다. 그러나 경우에 따라, L1 명령 캐쉬(118)는 원하는 명령(174)을 포함하지 않을 수 있다. 이는 캐쉬 미스의 결과를 가져올 것이고, 명령은 메모리 계층의 더 낮고, 느린 단계(즉 시스템 메모리(104))로부터 페치 되어야 하거나, 로드 되어야할 것이다. 명령들은 하나의 사전 주기(pre cycle)의 레이트(또는 프로세서의 구조에서의 어떠한 최대 레이트)로 파이프라인에 입력되지 않을 것이기 때문에 상기 캐쉬 미스는 프로세서(102)의 파이프라인에서 지연을 유발할 수 있다.
도시된 실시예에서, 프로세서(102)는 명령 프리페처 유닛(IPFU, 120)을 포함한다. IPFU(120)는 명령들을 L1 명령 캐쉬(118)로 프리페치한다. 이는 IFU(116)가 실제 페칭 동작을 수행하기 전에 이루어진다. 그러므로, IPFU(120)는 IFU(116)에 의해서 겪게되는 임의의 캐쉬 미스들의 발생 빈도를 감소시킨다. IPFE(120)는 프리페치 동작을 예측된 명령들(172)을 L1 명령 캐쉬(118)로부터 요청함으로써 수행할 수 있고, 이는 IFU(116)가 상기 동작을 하기 전에 이루어진다. 상기 실시예에서, 캐쉬 미스가 발생하는 경우에는, L1 명령 캐쉬(118)는 시스템 메모리(104)로부터 미스된 명령들을 요청하는 프로세스를 시작할 것이다. 상기 실시예에서, IFU(116)가 명령을 요청을 할 때 까지는 명령은 수신되고 L1 명령 캐쉬(118)에 저장될 수 있다.
다양한 실시예에서, IPFU(120)의 목적들 중 하나는 L1 명령 캐쉬(118)가 임의의 원하는 명령들과 함께 사전 로드되었는지를 확인하고, 실제로 명령들 자체를 이용하는 것이 아니기 때문에, IPFU(120)는 임의의 돌아오는 명령들(172)을 폐기하거나, 실제로 명령(172)을 수신하는 구조들을 포함하지 않을 수 있다. 예를 들어, IPFU(120)와 캐쉬 메모리(118) 사이의 신호들(177)은 메모리 엑세스들을 요청하는 데 필요한 제어 신호들을 포함할 수 있고, 상기 요청들(즉 캐쉬 미스가 있었는지 없었는지, 요청사항이 이행되었는지 않았지)에 관하여 임의의 상태 업데이트들을 수신할 수 있으나, 메모리 엑세스들에 의해서 요청되는 실제 데이터(즉 명령들(172) 그 자체들을 구성하는 값들)를 전송하는 데이터 라인들 또는 신호들은 포함하지 않을 수 있다. 전술한 내용은 단지 본 명세서에 대한 하나의 도시된 실시예이고, 이에 한정되지 않는다.
도시된 실시예에서, 예측된 명령(172, BPU(112)에 의해서 생성된 명령) 및 다음 명령(174, IFU(116)에 의해서 페치된) 사이에 어떤 특정한 관련성이 존재하는 경우, IPFU(120)는 예측된 명령(172)을 단지 프리페치할 수 있다. 다양한 실시예들에서, 두개의 명령들(172, 174) 사이에 관련성은 BPU(112)에 의해서 어떻게 추정적으로(speculatively) 예측되는지의 척도일 수 있다. 예를 들어, BPU(112)가 예측의 정확성을 보장하지 않는 경우, IPFU(120)은 예측된 명령(172)을 프리페치 하지 않을 수 있다.
다양한 실시예들에서, 부정확하게 예측된 정보(172)를 프리페칭하는 것은 바람직한 효과를 가지지 않을 수 있다. 예를 들어, 부정확하게 예측된 명령(172)이 페치되고, 파이프라인에 인가되는 경우, 나중에 그 명령은 플러쉬되어야 할 것이고, 임의의 연산된 결과들은 완료되지 않아야 할 것이고, 이는 프로세서(102)의 구동에 많은 비용이 드는 원인이 된다. 추가적으로 L1 캐쉬(118)에 로드는 되지만, 전혀 페치되지 혹은 사용되지 않는 명령들은 캐쉬 오염(cache pollution)을 유발시킬 수 있다. 사용되지 않거나 원하지 않는 데이터가 캐쉬의 한정된 공간을 채우고 있는 경우, 일반적으로 캐쉬 오염은 원하거나 사용될 수 있는 데이터를 내보낸다. 전술한 내용은 단지 본 명세서의 수개의 도시된 실시예들에 대한 내용이고 이에 한정되지 않는다.
일부 실시예들에서, BPU(112)는 IPFU(120)에게 예측된 정보(172)가 얼마나 추정적인지를 지시할 수 있다. 그러나, 도시된 실시예에서, 추정적인 정도는 BPAQ(114)내에서 발견되는 쉽게 이용할수 있는 정보(신호(176)에 의해서 도시된)로부터 유추될 수 있다. 상기 실시예에서, 예측된 명령(172) 및 다음 명령(174) 간의 관련성은 BPAQ(114)에서 상기 명령들 각각의 주소에 관련된 그들 서로간의 거리 또는 BPAQ(114)의 현재 깊이(current depth)일 수 있다. 상기 실시예에서, IFU(116)가 더 후단에 있을수록, 예측된 명령들(172)은 더 추정적이게 된다. 다양한 실시예들에서 거리가 소정의 임계값을 초과하는 경우(이에 대해서 도 2에 논의함), IPFU(120)는 임의의 프리페치 활동들을 제지 또는 제한할 수 있다. 반면에, 만약 깊이가 임계값 아래인 경우, IPEU(120)은 예측된 명령(172)을 프리페치할 수 있다. 전술한 내용은 단지 본 명세서의 하나의 도시된 실시예에 대한 내용이고 이에 한정되지 않는다.
하나의 실시예에서, IPFU(120)가 프리페칭을 제지하고나서, 후에 제지를 해제하고 프리페칭을 속개한다면, IPFU(120)은 제지가 시작될 때 이전에 임의의 모든 명령들이 예측 되었던 시점에서 프리페칭을 속개할 수 있고, 모든 명령들(명령들이 BPAQ(114)내에 있는 한)은 프리페치된다. 또다른 실시에에서, IPFU(120)는 제지 기간동안 BPU(112)에 의해서 생성되었던 임의의 예측된 명령들(172)을 단순하게 프리페치하지 않을 수 있고, 대신에 BPU(112)에 의해서 출력되는 예측된 명령들(172)의 새로운 주소로써, 프리페치를 시작하거나 속개할 수 있다. 상기 실시예에서, 상기 명령들이 심지어 프리 페치되지 않았음에도 불구하고, 미스된 명령들을 페치하는 것은 IFU(116)의 역할일 수 있다. 전술한 내용은 단지 본 명세서의 수개의 도시된 실시예들에 대한 내용이고 이에 한정되지 않는다.
도 2는 본 발명의 일 실시예에 따른 장치(200)의 블록도이다. 다양한 실시예들에서, 장치(200)는 전술한 바와 같이 프로세서의 일부일 수 있다. 일부 일시예들에서, 장치(200)는 기존보다 크거나 통합된 명령 페치 및 프리 페치 유닛의 일부일 수 있다. 상기 명령 페치 및 프리 페치 유닛은 프로세서에 의한 실행을 위한 명령들을 예측하고, 프리페치하고 궁극적으로 페치할 수 있다. 또다른 실시예에서, 전술한 구성들은 개별적일 수 있다. 전술한 내용은 본 명세서의 수개의 도시된 실시예들에 대한 내용이고 이에 한정되지 않는다.
도시된 실시예에서, 장치(200)는 분기 예측 유닛(BPU, 212)를 포함한다. 도시된 실시예에서, 장치(200)는 명령 페치 유닛(IFU, 216)을 포함한다. 장치(200)는 명령 프리페치 유닛(IPFU, 220) 및 분기 예측 주소 큐(BPAQ, 214)를 더 포함한다.
도시된 실시예에서, BPAQ(214)의 내부블록들이 강조되었고, 명백하게 도시되었다. 특히 6개의 대기 항목들 또는 필드들이 도시되었다. 전술한 내용은 단지 본 명세서의 도시된 하나의 실시예들에 대한 내용이고 이에 한정되지 않음은 자명하다. BPU(212)은 예측된 명령들 또는 더 상세하게는 예측된 명령들의 메모리 주소들을 출력하기 때문에, 상기 명령들은 FIFO 방법으로 BPAQ(214) 내에 인큐(enqueu)될 수 있다. 도시된 실시예에서, BPAQ(214) 내에는 인큐된 4개의 명령 주소들이 있다. 예측된 명령들의 주소들은 254b, 254a, 254, 그리고 다음 명령의 주소는 252이다. 가장 오래 전에 예측된 명령은 IFU(216)에 의해서 처리될 다음 명령이므로 다음 명령(252)으로 칭해진다.(파이프라인 플러쉬와 같은 비정상적인 경우는 없다고 가정한다.)
도시된 실시에에서, BPAQ(214)는 유효한 명령 카운트 값(VIC, 256)을 유지한다. 상기 실시예에서, VIC(256)는 단순하게 BPAQ(214)에 의해서 현재 저장되어 있는 예측된 명령들의 주소들의 개수의 총수(도시된 예에서는 4개)일 수 있다. 일부 실시예들에서, VIC(256)는 명령 주소들의 배열에 입력된 가장 최신의 엔트리(예측된 명령(254b))의 인덱스일 수 있다. 또다른 실시예에서, VIC(256)는 다음 명령(252)의 주소 및 가장 최근에 예측된 명령(254b)의 주소의 인덱스 간의 차이일 수 있다. 전술한 내용은 본 명세서의 수개의 도시된 실시예들에 대한 내용이고 이에 한정되지 않는다.
상기 실시예에서, VIC(256)는 IPFU(220)에 제공된다. IPFU(220)는 가장 최근에 예측된 명령(254b)에 연관된 추정수준 또는 신뢰수준의 지시자로써 VIC(256)를 수신한다. 도시된 실시예에서, IPFU(220)는 VIC(256)를 임계값(266, IPFU(220)에 저장된)과 비교한다. 만약 VIC(256)이 임계값(266)보다 낮은 경우, IPFU(220)는 가장 최근에 예측된 명령(254b)을 프리페치할 수 있다. 만약 VIC(256)가 임계값(266)보다 크거나 같을 경우, IPFU(220)는 가장 최근에 예측된 명령(254b)을 제지, 그렇지 않는 경우에는 제한할 수 있다. 상기 실시예에서, 가장 최근에 예측된 명령(254b)의 추정수준이 매우 높은 경우 또는 신뢰수준이 매우 낮은 경우에 IPFU(220)는 임의의 프리페칭을 중단시킬 수 있다. 전술한 내용은 단지 본 명세서의 하나의 도시된 실시예에 대한 내용이고 이에 한정되지 않는다. 그리고 다른 실시예에서의 명령 제지는 VIC(256)가 임계값 보다 낮은지 또는 슬라이딩 비교(sliding comparison)와 같은 임의의 다른 비교 메커니즘에 근거 할 수 있다. 전술한 내용은 본 명세서의 수개의 도시된 실시예들에 대한 내용이고 이에 한정되지 않는다.
다양한 실시예들에서, 임계값(266)은 동적으로 조정될 수 있다. 그러나, 도시된 실시예에서, 임계값(266)은 고정될 수 있고, 기정의된 값일 수 있다. 일 실시예에서, 임계값(266)은 2일 수 있다. 전술한 내용은 본 명세서의 도시된 하나의 실시예들에 대한 내용이고 이에 한정되지 않는다.
도 3은 본 발명의 일 실시예에 따른 장치(300)의 블록도이다. 다양한 실시예들에서, 장치(300)는 전술한 바와 같이 프로세서의 일부일 수 있다. 일부 일시예들에서, 장치(300)는 더 크거나 통합된 명령 페치 및 프리 페치 유닛의 일부일 수 있다. 상기 명령 페치 및 프리 페치 유닛은 프로세서에 의한 실행을 위한 명령들을 예측하고, 프리페치하고 궁극적으로 페치할 수 있다. 또다른 실시예에서, 전술한 구성들은 개별적일 수 있다. 전술한 내용은 본 명세서의 수개의 도시된 실시예들에 대한 내용이고 이에 한정되지 않는다
도시된 실시예에서, 장치(300)는 분기 예측 유닛(BPU, 312)를 포함한다. 도시된 실시예에서, 장치(300)는 명령 페치 유닛(IFU, 216), 명령 프리페치 유닛(IPFU, 320) 및 분기 예측 주소 큐(BPAQ, 314)를 더 포함한다.
BPAQ(314)는 6개의 큐 엔트리 또는 필드들을 도시하고 있다. 그럼에도 불구하고, 전술한 내용은 단지 본 명세서의 도시된 하나의 실시예들에 대한 내용이고 이에 한정되지 않음은 자명하다. BPU(312)는 예측된 명령들 또는 더 상세하게는 예측된 명령들의 메모리 주소들을 출력하기 때문에, 상기 명령들은 FIFO 방법으로 BPAQ(314) 내에 인큐될 수 있다. 도시된 실시예에서, BPAQ(314) 내에는 인큐된 4개의 명령 주소들이 있다. 예측된 명령들의 주소들은 254b, 254a, 254, 그리고 다음 명령의 주소는 252이다.
도시된 실시예에서, BPU(312)는 신뢰수준들 354b, 354a, 354, 및 352를 출력하고, 상기 신뢰수준들은 각각 예측된 명령들 254b, 254a, 254, 그리고 다음 명령 252의 주소들에 연관된다. 신뢰수준들 354b, 354a, 354, 및 352는 예측된 명령이 프로세서에 의해서 실제로 실행될 BPU(320)의 신뢰수준 또는 추정수준을 지시할 수 있다.
일부 실시예들에서, 신뢰수준들 354b, 354a, 354, 및 352는 바이너리(binary)일 수 있고, 예측에서 임의의 추정이 있는지 여부를 나타낸다. 예를 들어, 해결되지 않은 분기 명령이 명령들의 스트림에서 발견되지 않는 경우에는 스트림의 모든 명령들이 분명히 고려될 것이다.(0으로 나누어서 에러가 발생하는 것과 같은 뜻밖의 오류는 제외하고) 그러므로, 예측된 명령들 254b, 254a, 254, 그리고 다음 명령 252은 절대적인 신뢰를 갖고 예측될 수 있고, 예측된 명령들은 항상 프리페치가 필요한것으로 가정될 수 있다. 역으로, 해결되지 않는 분기 명령이 발견되는 경우, 예측된 명령들 254b, 254a, 254, 그리고 다음 명령 252은 모두 특성상 추정적일 수 있고, IPFU(320)는 이에 따라서 후술할 바와 같이 동작한다.
또다른 실시예에서, 신뢰 수준 354b, 354a, 354, 및 352는 명령들의 스트림에서 해결되지 않았던 분기 명령들의 수를 지시한다. 예를 들어, 해결되지 않은 명령들이 발견되지 않는 경우, 생성된 예측된 명령(254)은 0의 신뢰수준(354, 즉 낮은 값은 높은 신뢰수준을 지시한다.)과 관련될 수 있다. 첫번째 해결되지 않은 분기 명령이 발견되자마자, 신뢰 수준(354)은 1로 증가될 수 있다. 첫번째 해결되지 않은 분기 명령 및 두번째 해결되지 않은 분기 명령 사이에서 예측 되어진 예측된 명령(254)은 또한 신뢰수준 1과 연관될 수 있다. 이는 명령 스트림의 분기점 또는 분기를 시작한 첫번째 분기 명령에 대한 것이기 때문에 상기 예측된 명령들에 관해서 BPU(312)는 더 이상 옳거나 틀리지 않을 것이다. 그러나, 두번째 해결되지 않은 분기 명령이 발견되는 경우, 신뢰수준(354)는 2로 증가하고, 모든 후속 명령들(세번?? 해결되지 않는 분기 명령이 발견되지 않는 경우에)은 2로 책정될 수 있다. 2는 상기 명령들은 두배로 추정적이고, 두 레벨의 추축에 근거하는 것을 나타낸다.
그러나 또다른 실시예에서, 신뢰수준(즉 신뢰수준(354))은 BPU(312)의 상태 머신 또는 카운터의 내부 상태를 나타낸다. 다양한 실시예에서, BPU(312)는 내부 상태 머신(미도시)의 예측을 기반으로 한다. 일부 실시예들에서, 4개의 상태 머신이 채택된다. 예를 들어 4개의 상태는 강하게 고려되지 않는(strongly not-taken), 약하게 고려되지 않는(weakly not-taken), 약하게 고려되는(weakly taken), 및 강하게 고려되는(strongly taken) 것이다. 상기 실시예에서, 상태에 대한 정보(즉 강한 측면인지 약한 측면인지)는 신뢰수준(즉 신뢰수준(354))에 포함될 수 있다. 전술한 내용은 본 명세서의 수개의 도시된 실시예들에 대한 내용이고 이에 한정되지 않는다
도시된 실시예에서, 각각의 신뢰수준 354b, 354a, 354, 및 352는 각각의 예측된 명령들 254b, 254a, 254, 그리고 다음 명령 252과 함께 BPAQ(314)에 저장될 수 있다. 도시된 실시예에서, 다음 명령(252)은 신뢰수준(352)과 관련되고, 예측된 명령(254)은 신뢰수준(354)과 관련되고, 예측된 명령(254a)는 신뢰수준(352a)과 관련되고, 예측된 명령(254b)는 신뢰수준(352b)과 관련된다. 그러나 다른 실시예들에서, BPAQ(314)는 신뢰수준 354b, 354a, 354, 및 352을 저장하지 않을 수 있고, IPFU(320)는 가장 최근에 예측된 명령에 관련된 신뢰 수준(즉 예측된 명령(254b)와 관련된 신뢰수준(354b))만을 사용할 수 있다.
상기 실시예에서, IPFU(320)는 예측된 명령 주소와 함께 신뢰수준(354)을 수신한다(즉 예측된 명령(254)과 관련된 신뢰수준(354)). 도시된 실시예에서, 예측된 명령(254b)을 프리페치하는 것을 결정하거나 또는 임의의 프리페칭을 제지하는 경우, IPFU(320)는 신뢰수준(354b)을 고려할 수 있다. 도시된 실시예에서, IPFU(320)는 신뢰수준 임계값(366)을 포함하거나 저장할 수 있다. 상기 실시예에서, 신뢰수준(354b, 예측된 명령(254b)의 경우)이 신뢰수준 임계값(366)보다 큰 경우, 프리페칭은 정지되거나 제지될 수 있다. 반면에 신뢰수준(354b)이 신뢰수준 임계값(366)보다 낮은 경우, 예측된 명령(254b)은 프리페치될 수 있다.
일부 실시예들에서, IPFU(320)는 다음 명령(252)의 신뢰수준(352) 대 가장 최근에 예측된 명령(245b)의 신뢰수준(354b)의 차이를 근거로 하여, 프리페칭을 결정할 수 있다. 상기 실시예에서, 임계값(366)은 상대적인 신뢰수준에서 비교될 수 있고, 절대적인 값은 아니다. 즉, 다음 명령(252) 및 예측된 명령(254b) 사이에서의 신뢰수준 관계 또는 차분값은 프리페칭 결정의 요인이 될 수 있다. 전술한 내용은 본 명세서의 도시된 하나의 실시예들에 대한 내용이고 이에 한정되지 않는다.
그러나 또다른 실시예에서, IPFU(320)는 또한 전술한 VIC(256)를 채택할 수 있다. 예를 들어, BPU(312)는 매우 높은 신뢰수준과 관련된 큰 숫자의 예측된 명령들(254)을 발생시키는 데 반해, IFU(216)는 작은 숫자의 다음 명령(252)을 페치하는 경우에는 BPAQ(314)의 깊이는 상대적으로 커지게 된다. 결과적으로 전적으로 신뢰수준(354)에 근거하여 프리페칭 결정을 하는 IPFU(320)의 실시예는 매우 많은 예측된 명령들(254)을 프리페치하여, 캐쉬 메모리가 가득차게 하거나 오염되게 한다. 마침내 IFU(216)가 다음 명령(252)를 페치하게 되었을 때, 캐쉬 메모리는 이후 예측 명령(즉, 예측된 명령(254b))을 위하여, 다음 명령(252)를 이미 내보내었을 수 있고, 따라서 바라는 프리페치의 이익들은 무력화된다.
상기 실시예에서, 다기준 IPFU(320)가 채택될 수 있다. IPFU(320)는 신뢰수준(354)을 고려할 뿐만 아니라 VIC(256)도 고려할 수 있다. 신뢰수준(354) 또는 VIC(256)의 값 중 어느 하나가 각각의 임계값(366, 266)을 초과하는 경우, IPFU(320)는 프리페치 동작을 제지할 수 있다. 상기 실시예에서, IPFU(320)는 매우 추정적이라고 볼 수 없는 예측된 명령들(254)을 프리페치할 수 있고, 또한 IFU(216)에 의해서 아직 요청되지 않은 명령들(254)로 캐쉬를 가득차지 않게 할 수 있다. 전술한 내용은 본 명세서의 수개의 도시된 실시예들에 대한 내용이고 이에 한정되지 않는다
전술한 내용은 본 명세서의 수개의 도시된 실시예들에 대한 내용이고 이에 한정되지 않는다. 다른 실시예들에서, 다양한 다른 개략도들이, 예측된 명령이 프리페치되어야 하는지 여부를 결정하는 실시예의 IFPU에 의해서 채택될 수 있다. 본 명세서에서 논의되는 주제는 도 2 및 도 3과 관련하여 논의된 실시예들에 한정되지 않는다.
도 4는 본 발명의 일 실시예에 따라 형성된 반도체 장치를 포함하는 정보 프로세싱 시스템(400)의 개략적인 블록도이다.
도 4를 참조하면, 정보 프로세싱 시스템(400) 본 발명의 일 실시예에 따라 설치된 하나 이상의 장치들을 포함할 수 있다. 또다른 실시예에서, 정보 프로세싱 시스템(400)은 본 발명의 일 실시예에 따른 하나 이상의 기술들을 채택 또는 실행할 수 있다.
다양한 실시예들에서, 정보 프로세싱 시스템(400)은 랩탑, 데스크탑, 워크스테이션, 서버, 브레이드 서버, 개인 휴대 정보 단말기, 스마트폰, 태블릿, 및 다른 적합한 컴퓨터들 등 또는 가상 기기 또는 가상 연산 장치와 같은 연산 장치를 포함할 수 있다. 다양한 실시예에서, 정보 프로세싱 시스템(400)은 사용자(미도시)에 의해서 사용될 수 있다.
본 발명의 일 실시예에 따른 정보 프로세싱 시스템(400)은 CPU(central processing unit), 로직, 또는 프로세서(410)을 더 포함할 수 있다. 일부 실시예들에서, 프로세서(410)는 하나 이상의 FUBs(functional unit blocks), 또는 CLBs(415, combinational logic blocks)을 포함할 수 있다. 상기 실시예에서 CLB는 다양한 대수 로직 연산들(즉 NAND, NOR, NOT, XOR, 등) 안정화된 로직 장치들(즉, 플립플롭들, 래치들, 등), 다른 로직 장치, 또는 이들의 조합을 포함할 수 있다. 상기 조합 로직 동작들은 단순하거나 복잡한 방식으로 입력 신호를 프로세싱하여 바라는 결과를 달성할 수 있다. 동기화된 조합 로직 연산들의 수개의 도시된 실시예들이 설명되지만, 본 명세서는 이에 한정되지 않고, 비동기 동작들 또는 이들의 조합을 포함할 수 있는 것은 자명하다. 하나의 실시예에서, 조합 로직 연산들은 복수개의 CMOS() 트랜지스터들을 포함할 수 있다. 다양한 실시예들에서, 상기 CMOS 트랜지스터들은 논리적 동작을 수행하는 게이트들로 구성될 수 있다. 그럼에도 불구하고, 다른 기술들이 사용될 수 있고, 본 명세서의 범위 내에 있다는 것은 자명하다.
본 발명의 일 실시예에 따른 정보 프로세싱 시스템(400)은 휘발성 메모리(420, 즉 RAM(Random Access Memory) 등)을 더 포함할 수 있다. 본 발명의 일 실시예에 따른 정보 프로세싱 시스템(400)은 비휘발성 메모리(430, 즉 하드 드라이브, 광학 메모리, NAND 또는 플래쉬 메모리 등)을 더 포함할 수 있다. 일부 실시예들에서, 휘발성 메모리(420), 비휘발성 메모리(430) 또는 이들의 조합 또는 부분 중 어느 하나는 “저장 매체”로 지시될 수 있다. 다양한 실시예에서, 휘발성 메모리(420) 및/또는 비휘발성 메모리(430)은 반영구적 또는 실질적으로 영구적인 형태로 데이터를 저장할 수 있다.
다양한 실시예들에서, 정보 프로세싱 시스템(400)은 하나 이상의 네트워크 인터페이스들(440)을 포함할 수 있다. 상기 하나 이상의 네트워크 인터페이스들(440)은 정보 프로세싱 시스템(400)이 통신 네트워크을 통해 일부가 되거나 통신을 하도록 한다. 와이파이의 실시예들은 프로토콜은 IEEE() 802.11g, IEEE 802.11n 등을 포함할 수 있지만 이에 한정되지 않는다. 셀룰러 프로토콜의 실시예는 IEEE 802.16m(a.k.a 무선-MAN(Metropolitan Area Network) 어브밴스드), LTE(Long Term Evolution) 어드밴스드, EDGE(GSM(Global System for Mobile Communications)), 진화된 HSPA+(High-Speed Packet Access), 등을 포함하지만 이에 한정되지 않는다. 무선 프로토콜의 실시예는 IEEE 802.3(a.k.a 이더넷), 파이버 채널, 전력 라인 통신(즉 홈플러그, IEEE 1901, 등)을 포함하지만 이에 한정되지 않는다. 전술한 내용은 본 명세서의 수개의 도시된 실시예들에 대한 내용이고 이에 한정되지 않는다.
본 발명의 일 실시예에 따른 정보 프로세싱 시스템(400) 사용자 인터페이스 유닛(450, 즉 디스플레이 어답터, 햅틱 인터페이스, 사용자 인터페이스 장치, 등)을 더 포함할 수 있다. 다양한 실시예들에서, 상기 사용자 인터페이스 유닛(450)은 사용자로부터 입력을 수신하거나, 사용자에게 출력을 제공한다. 다른 종류의 장치들은 또한 사용되어 사용자와의 상호작용을 제공할 수 있다. 예를 들어, 사용자에게 제공되는 피드백은 감각 피드백일 수 있다. 즉, 시각 피드백, 청각 피드백 또는 초각 피드백일 수 있고, 사용자로부터의 입력은 음향, 대화, 또는 촉각 입력을 포함하는 임의의 형태로 수신될 수 있다.
다양한 실시예들에서, 정보 프로세싱 시스템(400)은 하나 이상의 다른 장치들 또는 하드웨어 요소들(460, 즉 디스플레이 또는 모니터, 키보드, 마우스, 카메라, 지문 리더기, 비디오 프로세서 등)을 포함할 수 있따.
본 발명의 특정 실시예들이 본 발명의 상세한 설명에서 설명되고 있지만, 본 발명은 본 발명의 범위를 벗어나지 않고 다양한 형태들로 수정될 수 있다. 그러므로 본 발명의 범위는 설명된 실시예들에만 한정되지 않으나, 첨부된 청구항들 및 균등물들에 근거하여 결정된다. 전술한 내용은 본 명세서의 수개의 도시된 실시예들에 대한 내용이고 이에 한정되지 않는다.
본 발명의 일 실시예에 따른 정보 프로세싱 시스템(400)은 하나 이상의 시스템 버스들(405)를 포함할 수 있다. 상기 실시예에서, 시스템 버스(405)는 통신으로 프로세서(410), 휘발성 메모리(420), 비휘발성 메모리(430), 네트워크 인터페이스(440), 사용자 인터페이스 유닛(450) 및 하나 이상의 하드웨어 요소들(460)에 결합할 수 있다. 프로세서(410)에 의해서 프로세싱 된 데이터 또는 비휘발성 메모리(430)의 외부로부터 입력된 데이터들은 비휘발성 메모리(430) 또는 휘발성 메모리(420)에 저장될 수 있다.
다양한 실시예들에서, 정보 프로세싱 시스템(400)은 하나 이상의 소프트웨어 요소들(470)을 포함하거나 실행할 수 있다. 일부 실시예들에서, 소프트웨어 요소들(470)은 OS 및/또는 어플리케이션을 포함할 수 있다. 일부 실시예들에서, OS는 하나 이상의 서비스들을 어플리케이션에 제공할 수 있고, 어플리케이션 및 다양한 하드웨어 요소들(즉 프로세서(410), 네트워크 인터페이스(440) 등) 사시에서의 중개매체로써 관리하거나 기능할 수 있다. 상기 실시에에서, 정보 프로세싱 시스템(400)은 하나 이상의 네이티브 어플리케이션들을 포함할 수 있다. 상기 하나 이상의 네이티브 어플리케이션들은 국부적으로(즉 비휘발성 메모리(430) 등 내에) 설치될 수 있고, 프로세서(410)에 의해서 직접적으로 실행될 수 있고, OS와 직접적으로 상호 작용할 수 있다. 상기 실시예에서, 네이티브 어플리케이션들은 미리 컴파일된 기계 실행 코드를 포함할 수 있다. 일부 실시예들에서 네이티브 어플리케이션들은 스크립트 해독기(즉 C 셸(csh)), AppleScript, AutoHotkey 등) 또는 소스 또는 오브젝트 코드를 프로세서(410)에 의해서 실행되는 실행 코드로 변환하는 가상 실행 기기(VM, 즉 the Java Virtual Machine, the Microsoft Common Language Runtime 등)를 포함할 수 있다.
전술한 반도체 장치는 다양한 패키징 기술들을 이용하여 캡슐화될 수 있다. 예를 들어, 본 발명의 일 실시예에 따라 설치된 반도체 장치는 POP(package on package), BGAs(technique, a ball grid arrays) 기술, CSPs(chip scale packages) 기술, PLCC(plastic leaded chip carrier) 기술, PDIP(plastic dual in-line package) 기술, 와플팩 다이 기술, 웨이퍼 폼 다이 기술, COB(chip on board) 기술, CERDIP(ceramic dual in-line package) 기술, PMQFP(plastic metric quad flat package) 기술, PQFP(plastic quad flat package) 기술, SOIC(small outline package) 기술, SSOP(shrink small outline package) 기술, TSOP(thin small outline package) 기술, TQFP(thin quad flat package) 기술, SIP(system in package) 기술, MCP(multi-chip package) 기술, WFP(wafer-level fabricated package) 기술, WSP(wafer-level processed stack package) 기술 또는 당업자에게 알려진 다른 기술 중 하나의 임의의 기술을 이용하여 캡슐화될 수 있다.
방법적 단계들은 하나 이상의 프로그램 프로세서들에 의해서 수행될 수 있다. 상기 프로그램 프로세서들은 컴퓨터 프로그램을 실행하여 입력 데이터를 구동시키고, 출력을 생성함으로써, 기능들을 수행한다. FPGA(field programmable gate array) 또는 ASIC(application-specific integrated circuit)와 같은 특별한 목적 로직 회로로써 구현된 장치에 의해서 방법적 단계들은 또한 수행될 수 있다.
다양한 실시예들에서, 컴퓨터 판독 가능 매체가 실행되는 경우, 컴퓨터 판독 가능 매체는 장치가 적어도 방법적 단계들 중 일부분을 수행하도록 하는 명령들을 포함할 수 있다. 일부 실시예들에서, 컴퓨터 판독 가능 매체는 자성 매체, 광학 매체, 다른 매체 또는 이들의 조합(즉 CDROM, 하드 드라이브, 판독 전용 기억 장치, 프래쉬 드라이브 등)에 포함될 수 있다. 상기 실시예에서, 컴퓨터 판독 가능 매체는 명백히 그리고 비일시적으로 제조물품(article of manufacture)일 수 있다.
실시예를 참조하여 본 명세서의 원리들이 설명되었지만, 다양한 변형 및 수정들이 본 발명의 개념의 범위를 벗어나지 않고 이루어질 수 있다는 것은 당업자에게 명백할 것이다. 그러므로, 전술된 실시예들은 이에 한정되지 않고 단시 예시일 뿐이다. 그러므로, 본 명세서에 개시된 개념들의 범위는 후술할 청구항들 및 그들의 균들물의 넓게 허용되는 해석 원리(broadest permissible interpretation)에 의해서 결정될 것이고, 전술한 설명에 의해서 제한되거나 한정되지 않는다. 그러므로, 첨부된 청구항들은 모든 상기 수정사항 및 변형 사항을 커버할 수 있도록 의도될 것이라는 것은 자명하다.

Claims (20)

  1. 분기 예측 큐 및 프리페처 회로에게 예측된 명령을 출력하는 분기 예측 유닛;
    상기 예측된 명령을 저장하고, 그리고 페치 유닛으로부터 상기 분기 예측 유닛을 분리하는 상기 분기 예측 큐;
    상기 분기 예측 큐로부터 제공된 다음 명령을 캐쉬 메모리로부터 페치하는 상기 페치 유닛; 및
    상기 분기 예측 큐로부터 제공된 상기 예측된 명령 및 상기 다음 명령 사이의 관련성에 근거하여, 사전 예측된 명령을 상기 캐쉬 메모리에 프리페치하는 상기 프리페처 회로를 포함하는 장치.
  2. 제1 항에 있어서,
    상기 프리페처 회로는 상기 예측된 명령 및 상기 다음 명령 사이의 상기 관련성이 소정의 기준을 만족하지 못하는 경우에 프리페치를 제지하는 장치.
  3. 삭제
  4. 제1 항에 있어서,
    상기 분기 예측 큐는 유효한 명령 카운트를 상기 프리페처 회로에 출력하고, 상기 유효한 명령 카운트는 상기 예측된 명령 및 상기 다음 명령 사이의 상기 관련성을 지시하는 장치.
  5. 제1 항에 있어서,
    상기 프리페처 회로는 상기 예측된 명령 및 상기 다음 명령 사이의 예측된 명령들의 수가 임계값을 초과하지 않는 경우 상기 사전 예측된 명령을 프리페치하는 장치.
  6. 제1 항에 있어서,
    상기 예측된 명령 및 상기 다음 명령 사이의 상기 관련성은 상기 분기 예측 유닛에 의해서 채택되는 추정수준을 지시하는 장치.
  7. 제1 항에 있어서, 상기 분기 예측 유닛은 상기 예측된 명령의 메모리 주소가 구비된 상기 프리페처 회로를 제공하는 장치.
  8. 제1 항에 있어서,
    상기 분기 예측 유닛은 상기 예측된 명령과 연관된 신뢰수준을 출력하고, 상기 예측된 명령은 상기 장치에 의해서 실행될 것이고,
    상기 프리페처 회로는 상기 신뢰수준이 임계값보다 크거나 같은 경우에 상기 예측된 명령을 프리페치하고, 상기 신뢰수준이 상기 임계값보다 작은 경우에 상기 예측된 명령을 프리페치하는 것을 제한하는 장치.
  9. 예측 회로를 통해, 프로세서에 의해서 예측된 명령이 실행될 것을 예측하는 단계;
    상기 예측된 명령을 큐에 인큐잉(enqueuing)하는 단계로서, 상기 큐는 페칭 회로로부터 상기 예측 회로를 분리하는 것;
    상기 페칭 회로를 통해, 상기 큐로부터 제공된 다음 명령을 캐쉬 메모리로부터 페칭하는 단계;
    상기 예측된 명령 및 상기 다음 명령 사이의 관련성이 하나 이상의 소정의 기준 세트를 만족하는 지를 결정하는 단계; 및
    상기 하나 이상의 소정의 기준 세트를 만족하는 경우, 프리페처 회로를 통해, 상기 예측된 명령을 캐쉬 메모리에 프리페치하는 단계를 포함하는 방법.
  10. 제9 항에 있어서,
    상기 예측된 명령 및 상기 다음 명령 사이의 상기 관련성이 상기 하나 이상의 소정의 기준 세트를 만족하지 않는 경우, 상기 프리페처 회로를 통해, 명령들을 캐쉬 메모리에 프리페치하는 것을 제지하는 단계를 더 포함하는 방법.
  11. 삭제
  12. 제9 항에 있어서,
    상기 관련성을 결정하는 단계는,
    상기 프리페처 회로를 통해 상기 큐로부터 유효한 명령 카운트를 수신하는 단계를 포함하고, 상기 유효한 명령 카운트는 상기 예측된 명령 및 상기 다음 명령 사이의 인큐잉된 명령들의 수를 지시하는 방법.
  13. 제9 항에 있어서,
    상기 관련성을 결정하는 단계는,
    상기 예측된 명령 및 상기 다음 명령 사이의 예측된 명령들의 수가 임계값을 초과하는지를 결정하는 단계를 포함하는 방법.
  14. 제9 항에 있어서,
    상기 관련성을 결정하는 단계는,
    상기 예측된 명령을 예측할 때 연관된 추정수준을 결정하는 단계를 포함하는 방법.
  15. 제9 항에 있어서,
    상기 예측된 명령을 프리페치하는 단계는,
    상기 예측 회로로부터 상기 예측된 명령의 메모리 주소를 수신하는 단계를 포함하는 방법.
  16. 명령들을 실행하는 프로세서;
    일시적으로 명령들을 저장하는 캐쉬 메모리;
    분기 예측 큐 및 프리페처 회로에게 예측된 명령을 출력하는 분기 예측 유닛;
    상기 예측된 명령을 저장하고, 그리고 페치 유닛으로부터 상기 분기 예측 유닛을 분리하는 상기 분기 예측 큐;
    상기 분기 예측 큐로부터 제공된 다음 명령을 상기 캐쉬 메모리로부터 페치하는 상기 페치 유닛; 및
    상기 예측된 명령 및 상기 다음 명령 사이의 관련성이 하나 이상의 소정의 기준을 만족하는지 여부에 응답하여 사전 예측된 명령을 상기 캐쉬 메모리에 프리페치하는 상기 프리페처 회로를 포함하고,
    상기 예측된 명령은 상기 프로세서에 의해서 실행될 수 있도록 추정적으로 예측되고, 상기 분기 예측 유닛은 상기 페치 유닛으로부터 분리되는 장치.
  17. 제16 항에 있어서,
    하나 이상의 상기 예측된 명령들을 저장하고, 상기 페치 유닛으로부터 상기 분기 예측 유닛을 분리시키는 분기 예측 큐를 더 포함하는 장치.
  18. 제17 항에 있어서,
    상기 분기 예측 큐는 유효한 명령 카운트를 상기 프리페처 회로에 출력하고,
    상기 프리페처 회로는 상기 유효한 명령 카운트가 임계값을 초과하지 않는 경우 상기 사전 예측된 명령을 프리페치하고, 상기 유효한 명령 카운트가 상기 임계값을 초과하는 경우, 상기 사전 예측된 명령을 프리페치하는 것을 제한하는 장치.
  19. 제16 항에 있어서,
    상기 예측된 명령 및 상기 다음 명령 사이의 상기 관련성은 상기 분기 예측 유닛에 의해서 채택된 추정수준을 지시하는 장치.
  20. 제16 항에 있어서,
    상기 분기 예측 유닛은 상기 예측된 명령의 메모리 주소를 상기 프리페처 회로에 제공하는 장치.
KR1020160121580A 2016-01-07 2016-09-22 쉽게 가용한 프리페처 정밀도에 의해서 동적으로 제어되는 명령 프리페처 KR102615010B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201662276067P 2016-01-07 2016-01-07
US62/276,067 2016-01-07
US15/132,230 US10296463B2 (en) 2016-01-07 2016-04-18 Instruction prefetcher dynamically controlled by readily available prefetcher accuracy
US15/132,230 2016-04-18

Publications (2)

Publication Number Publication Date
KR20170082965A KR20170082965A (ko) 2017-07-17
KR102615010B1 true KR102615010B1 (ko) 2023-12-19

Family

ID=59275777

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160121580A KR102615010B1 (ko) 2016-01-07 2016-09-22 쉽게 가용한 프리페처 정밀도에 의해서 동적으로 제어되는 명령 프리페처

Country Status (4)

Country Link
US (1) US10296463B2 (ko)
KR (1) KR102615010B1 (ko)
CN (1) CN106951217B (ko)
TW (1) TWI723072B (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10606599B2 (en) * 2016-12-09 2020-03-31 Advanced Micro Devices, Inc. Operation cache
CN107943518B (zh) * 2017-11-24 2021-07-16 中国航空工业集团公司西安航空计算技术研究所 一种局部跳转指令取指电路
US11106466B2 (en) 2018-06-18 2021-08-31 International Business Machines Corporation Decoupling of conditional branches
CN110825442B (zh) * 2019-04-30 2021-08-06 成都海光微电子技术有限公司 一种指令预取方法及处理器
US11461101B2 (en) * 2019-09-27 2022-10-04 Arm Technology (China) Co. LTD Circuitry and method for selectively controlling prefetching of program instructions
US11567776B2 (en) * 2020-11-03 2023-01-31 Centaur Technology, Inc. Branch density detection for prefetcher

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011209905A (ja) * 2010-03-29 2011-10-20 Sony Corp 命令フェッチ装置、プロセッサ、および、プログラムカウンタ加算制御方法

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IE940855A1 (en) * 1993-12-20 1995-06-28 Motorola Inc Data processor with speculative instruction fetching and¹method of operation
US5774685A (en) * 1995-04-21 1998-06-30 International Business Machines Corporation Method and apparatus for biasing cache LRU for prefetched instructions/data based upon evaluation of speculative conditions
US5721864A (en) * 1995-09-18 1998-02-24 International Business Machines Corporation Prefetching instructions between caches
US6012134A (en) * 1998-04-09 2000-01-04 Institute For The Development Of Emerging Architectures, L.L.C. High-performance processor with streaming buffer that facilitates prefetching of instructions
US6233645B1 (en) * 1998-11-02 2001-05-15 Compaq Computer Corporation Dynamically disabling speculative prefetch when high priority demand fetch opportunity use is high
JP3573980B2 (ja) * 1998-11-13 2004-10-06 富士通株式会社 情報処理装置及び情報処理システム
US6418525B1 (en) * 1999-01-29 2002-07-09 International Business Machines Corporation Method and apparatus for reducing latency in set-associative caches using set prediction
US6560693B1 (en) * 1999-12-10 2003-05-06 International Business Machines Corporation Branch history guided instruction/data prefetching
US7441110B1 (en) * 1999-12-10 2008-10-21 International Business Machines Corporation Prefetching using future branch path information derived from branch prediction
US6732260B1 (en) * 2000-03-06 2004-05-04 Intel Corporation Presbyopic branch target prefetch method and apparatus
US6766441B2 (en) * 2001-01-19 2004-07-20 International Business Machines Corporation Prefetching instructions in mis-predicted path for low confidence branches
US7085916B1 (en) * 2001-10-26 2006-08-01 Lsi Logic Corporation Efficient instruction prefetch mechanism employing selective validity of cached instructions for digital signal processor and method of operation thereof
US7076640B2 (en) 2002-02-05 2006-07-11 Sun Microsystems, Inc. Processor that eliminates mis-steering instruction fetch resulting from incorrect resolution of mis-speculated branch instructions
JP3683248B2 (ja) * 2002-10-22 2005-08-17 富士通株式会社 情報処理装置及び情報処理方法
JP3811140B2 (ja) * 2003-05-12 2006-08-16 株式会社日立製作所 情報処理装置
US7587580B2 (en) * 2005-02-03 2009-09-08 Qualcomm Corporated Power efficient instruction prefetch mechanism
US7461237B2 (en) * 2005-04-20 2008-12-02 Sun Microsystems, Inc. Method and apparatus for suppressing duplicative prefetches for branch target cache lines
US8516226B1 (en) 2006-01-23 2013-08-20 Hewlett-Packard Development Company, L.P. Executing a prefetching policy responsive to entry into an execution phase of an application
US7917731B2 (en) * 2006-08-02 2011-03-29 Qualcomm Incorporated Method and apparatus for prefetching non-sequential instruction addresses
US7627742B2 (en) * 2007-04-10 2009-12-01 International Business Machines Corporation Method and apparatus for conserving power by throttling instruction fetching when a processor encounters low confidence branches in an information handling system
US7962724B1 (en) * 2007-09-28 2011-06-14 Oracle America, Inc. Branch loop performance enhancement
US9021240B2 (en) * 2008-02-22 2015-04-28 International Business Machines Corporation System and method for Controlling restarting of instruction fetching using speculative address computations
US8443176B2 (en) * 2008-02-25 2013-05-14 International Business Machines Corporation Method, system, and computer program product for reducing cache memory pollution
US8176297B2 (en) * 2008-12-31 2012-05-08 Texas Instruments Incorporated Adaptive fetch advance control for a low power processor
CN101819523B (zh) * 2009-03-04 2014-04-02 威盛电子股份有限公司 微处理器以及相关指令执行的方法
US9836304B2 (en) * 2010-11-15 2017-12-05 Advanced Micro Devices, Inc. Cumulative confidence fetch throttling
CN104220980B (zh) * 2011-12-29 2018-01-19 英特尔公司 经管理的指令缓存预取
US9182991B2 (en) * 2012-02-06 2015-11-10 International Business Machines Corporation Multi-threaded processor instruction balancing through instruction uncertainty
US9058278B2 (en) 2012-12-19 2015-06-16 Advanced Micro Devices, Inc. Tracking prefetcher accuracy and coverage
US9405544B2 (en) 2013-05-14 2016-08-02 Apple Inc. Next fetch predictor return address stack
GB2515076B (en) * 2013-06-13 2020-07-15 Advanced Risc Mach Ltd A data processing apparatus and method for handling retrieval of instructions from an instruction cache
US9244827B2 (en) 2013-09-25 2016-01-26 Intel Corporation Store address prediction for memory disambiguation in a processing device
US9823925B2 (en) 2014-03-28 2017-11-21 Intel Corporation Instruction and logic for a logical move in an out-of-order processor
US9569212B2 (en) 2014-03-28 2017-02-14 Intel Corporation Instruction and logic for a memory ordering buffer
US20150277925A1 (en) 2014-04-01 2015-10-01 The Regents Of The University Of Michigan Data processing apparatus and method for executing a stream of instructions out of order with respect to original program order
JP6457836B2 (ja) * 2015-02-26 2019-01-23 ルネサスエレクトロニクス株式会社 プロセッサおよび命令コード生成装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011209905A (ja) * 2010-03-29 2011-10-20 Sony Corp 命令フェッチ装置、プロセッサ、および、プログラムカウンタ加算制御方法

Also Published As

Publication number Publication date
TWI723072B (zh) 2021-04-01
CN106951217B (zh) 2022-05-03
KR20170082965A (ko) 2017-07-17
CN106951217A (zh) 2017-07-14
US10296463B2 (en) 2019-05-21
US20170199739A1 (en) 2017-07-13
TW201725508A (zh) 2017-07-16

Similar Documents

Publication Publication Date Title
KR102615010B1 (ko) 쉽게 가용한 프리페처 정밀도에 의해서 동적으로 제어되는 명령 프리페처
JP5520779B2 (ja) 分岐誤予測バッファを用いるためのシステム及び方法
US9665491B2 (en) Adaptive mechanism to tune the degree of pre-fetches streams
US10782977B2 (en) Fault detecting and fault tolerant multi-threaded processors
CN108829615B (zh) 具有可编程预取器的处理器
US20150268961A1 (en) Decoupling l2 btb from l2 cache to accelerate search for miss after miss
US10387320B2 (en) Integrated confirmation queues
US9274970B2 (en) Method and apparatus for handling processor read-after-write hazards with cache misses
US11182166B2 (en) Branch prediction throughput by skipping over cachelines without branches
KR20210000263A (ko) 계층적인 분기 예측기 결과의 효과에 기초한 계층적인 분기 예측기의 사용을 제어하는 방법 및 장치
KR20210110598A (ko) 추론적 실행을 위한 보안 예측기
KR20210000271A (ko) 낮은 수준의 독점적 캐시 계층 구조에서의 프리페치
KR20190092245A (ko) 엣지 특성이 검증된 마이크로 분기 타깃 버퍼를 이용하여 컴퓨터 프로세서의 전력 소모를 감소시키는 시스템 및 방법
US20190102197A1 (en) System and method for merging divide and multiply-subtract operations
US20040225866A1 (en) Branch prediction in a data processing system
US20200257623A1 (en) Using Predictions of Outcomes of Cache Memory Access Requests for Contolling Whether A Request Generator Sends Memory Access Requests To A Memory In Parallel With Cache Memory Access Requests
US10372453B2 (en) Fetching instructions in an instruction fetch unit
CN111984325A (zh) 提高分支预测吞吐量的装置及系统
US10235173B2 (en) Program code optimization for reducing branch mispredictions
US10740102B2 (en) Hardware mechanism to mitigate stalling of a processor core
CN112130905A (zh) 计算装置和计算系统
US7343481B2 (en) Branch prediction in a data processing system utilizing a cache of previous static predictions

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