KR20210109014A - 명령어 밀접 결합된 메모리 및 명령어 캐시 액세스 예측 - Google Patents
명령어 밀접 결합된 메모리 및 명령어 캐시 액세스 예측 Download PDFInfo
- Publication number
- KR20210109014A KR20210109014A KR1020217024102A KR20217024102A KR20210109014A KR 20210109014 A KR20210109014 A KR 20210109014A KR 1020217024102 A KR1020217024102 A KR 1020217024102A KR 20217024102 A KR20217024102 A KR 20217024102A KR 20210109014 A KR20210109014 A KR 20210109014A
- Authority
- KR
- South Korea
- Prior art keywords
- icache
- itim
- instruction
- program counter
- logic
- Prior art date
Links
- 238000000034 method Methods 0.000 claims abstract description 66
- 230000004913 activation Effects 0.000 claims description 3
- 230000014759 maintenance of location Effects 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 22
- 238000004590 computer program Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 8
- 230000008569 process Effects 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing 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
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/321—Program or instruction counter, e.g. incrementing
-
- 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/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/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- 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/3816—Instruction alignment, e.g. cache line crossing
-
- 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/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6028—Prefetching based on hints or prefetch instructions
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Debugging And Monitoring (AREA)
Abstract
본 명세서에는 명령어 밀접 결합된 메모리(iTIM) 및 명령어 캐시(iCache) 액세스 예측을 위한 시스템 및 방법이 개시되어 있다. 프로세서는 위치 상태 및 프로그램 카운터 값에 기초하여 iTIM 또는 iCache 및 특정 방식(메모리 구조체)에 대한 액세스를 가능하게 하기 위해 예측기를 사용할 수 있다. 예측기는 인에이블된 메모리 구조체에 머무를지, 다른 메모리 구조체로 이동하여 이를 인에이블할 지, 또는 두 메모리 구조체로 이동하여 이를 인에이블할 지 여부를 결정할 수 있다. 머무름 및 이동 예측은, 순차 명령어 프로세싱, 분기 또는 점프 명령어 프로세싱, 분기 해상도, 및 캐시 미스 프로세싱으로 인해 메모리 구조체 경계 교차가 발생했는지 여부에 기초할 수 있다. 프로그램 카운터 및 위치 상태 표시기는, 피드백을 사용할 수 있고, 어떤 메모리 구조체(들)를 다음 명령어 페치를 위해 인에이블시켜야 하는지를 결정하기 위해 명령어 페치 사이클마다 업데이트될 수 있다.
Description
관련 출원에 대한 상호 참조
본 출원은, 2018년 12월 28일에 출원된 미국 가출원 제62/785,947호의 우선권과 이익을 주장하는, 2019년 8월 28일에 출원된 미국 특허 출원 제16/553,839호의 우선권과 이익을 주장하며, 이의 전체 개시 내용은 여기에 참조로 포함된다.
기술 분야
본 개시 내용은 명령어를 페치(fetch)하기 위하여 명령어 밀접 결합된 메모리와 명령 캐시 사이의 액세스 예측에 관한 것이다.
프로세서와 오프-칩 메모리 시스템 또는 메인 메모리 사이의 명령 페치 시간은 일반적으로 프로세서 실행 시간보다 훨씬 느리다. 따라서, 프로세서는 시스템 성능을 향상시키기 위해 명령어 캐시와 명령어 밀접 결합된 메모리를 사용한다. 두 유형의 메모리는 오프-칩 메모리 액세스를 감소시킴으로써 대기 시간을 개선하고 전력 소비를 감소시킨다. 그러나, 프로세서는 각 명령어 페치에 대해 명령어 캐시와 명령어 밀접 결합된 메모리 모두를 검색해야 하므로 상당한 전력을 사용한다. 또한, 이는 대기 시간을 증가시키고 시스템 성능을 감소시킬 수 있다.
본 개시 내용은 첨부 도면과 함께 읽혀질 때 다음의 상세한 설명으로부터 가장 잘 이해된다. 일반적인 관행에 따르면, 도면의 다양한 피처가 동일한 축척으로 그려지지 않는다는 것이 강조된다. 반대로, 다양한 피처의 치수는 명확성을 위해 임의로 확장 또는 감소된다.
도 1은 본 개시 내용의 실시예에 따라 명령어 캐시(iCache) 또는 명령어 밀접 결합된 메모리(iTIM) 중 하나를 인에이블시키기 위한 액세스 예측 로직을 포함하는 프로세서의 예의 블록도이다.
도 2는 본 개시 내용의 실시예에 따른 프로세서의 예시적인 코어 파이프라인의 다이어그램이다.
도 3은 본 개시 내용의 실시예에 따른 예시적인 흐름 및 예측기의 다이어그램이다.
도 4는 본 개시 내용의 실시예에 따른 도 3에 도시된 iTIM과 iCache 간의 액세스 예측을 위한 예시적인 기법의 다이어그램이다.
도 5는 본 개시 내용의 실시예에 따른 예시적인 흐름 및 예측기의 다이어그램이다.
도 6은 본 개시 내용의 실시예에 따른 예시적인 흐름 및 분기(branch) 예측기의 다이어그램이다.
도 7은 본 개시 내용의 실시예에 따라 도 5에 도시된 iTIM과 iCache 간의 액세스 예측을 위한 예시적인 기술의 다이어그램이다.
도 1은 본 개시 내용의 실시예에 따라 명령어 캐시(iCache) 또는 명령어 밀접 결합된 메모리(iTIM) 중 하나를 인에이블시키기 위한 액세스 예측 로직을 포함하는 프로세서의 예의 블록도이다.
도 2는 본 개시 내용의 실시예에 따른 프로세서의 예시적인 코어 파이프라인의 다이어그램이다.
도 3은 본 개시 내용의 실시예에 따른 예시적인 흐름 및 예측기의 다이어그램이다.
도 4는 본 개시 내용의 실시예에 따른 도 3에 도시된 iTIM과 iCache 간의 액세스 예측을 위한 예시적인 기법의 다이어그램이다.
도 5는 본 개시 내용의 실시예에 따른 예시적인 흐름 및 예측기의 다이어그램이다.
도 6은 본 개시 내용의 실시예에 따른 예시적인 흐름 및 분기(branch) 예측기의 다이어그램이다.
도 7은 본 개시 내용의 실시예에 따라 도 5에 도시된 iTIM과 iCache 간의 액세스 예측을 위한 예시적인 기술의 다이어그램이다.
본 명세서에서는 명령어 밀접 결합된 메모리(iTIM) 및 명령어 캐시(iCache) 액세스 예측을 위한 시스템 및 방법이 개시된다. 본 명세서에서 설명된 구현예는, 명령어를 페치할 때 iTIM과 iCache 모두에 액세스할 필요성을 제거하거나 완화시키는데 사용될 수 있다.
프로세서는 명령어를 페치할 때 시스템 성능을 향상시키기 위해 iTIM 및 N개의 방식 세트-연관 iCache를 사용할 수 있다. 명령어 페치 대기 시간을 최소화하기 위해, iTIM 또는 N개의 방식 세트-연관 iCache가 원하는 명령어를 포함하는지 알기 전에, iTIM 및 iCache의 N개의 방식이 병렬로 액세스될 수 있다. 명령어 페치 동안에 위치 상태 피드백을 사용함으로써 전력 소비를 감소시킬 수 있다. 피드백을 사용하는 것은, iTIM 및 N개의 방식 iCache 모두에 액세스하는 것과는 반대로 iTIM 또는 iCache 중 하나(및 특정 방식)에 액세스하여 프로세서가 더 높은 성능 및/또는 더 낮은 전력 소비를 달성할 수 있게 한다.
프로세서는 액세스 예측 로직 또는 예측기를 사용하여, 위치 상태 및 프로그램 카운터 값에 기초하여 iTIM 또는 iCache 및 특정 방식에 액세스하기 위한 인에이블 신호를 전송할 수 있다. 액세스 예측 로직은, 인에이블된 메모리 구조체에 머무를지, 다른 메모리 구조체로 이동하여 이를 인에이블하거나, 또는 양쪽 메모리 구조체로 이동하여 이를 인에이블할 지 여부를 결정할 수 있다. 머무름 및 이동 예측은, 순차 명령 처리, 분기 또는 점프 명령어 처리, 분기 해상도 및 캐시 미스(cache miss) 프로세싱으로 인해 메모리 구조체 경계 교차가 발생했는지 여부에 기초할 수 있으며, 여기서 메모리 구조체는 iTIM 또는 iCache 중 하나 그리고 특정 방식이다. 프로그램 카운터 및 위치 상태 표시기는, 피드백을 사용할 수 있으며 다음 명령어 페치에 대해 인에이블되어야 하는 어떤 메모리 구조체(들)를 결정하기 위해 각 명령어 페치 사이클마다 업데이트될 수 있다.
본 개시 내용의 이들 및 다른 양태들은 다음의 상세한 설명, 첨부된 청구 범위, 및 첨부 도면에서 개시된다.
본 명세서에서 사용되는 바와 같이, 용어 "프로세서"는 하나 이상의 특수 목적 프로세서, 하나 이상의 디지털 신호 프로세서, 하나 이상의 마이크로 프로세서, 하나 이상의 컨트롤러, 하나 이상의 마이크로 컨트롤러, 하나 이상의 애플리케이션 프로세서, 하나 이상의 중앙 처리 장치(CPU), 하나 이상의 그래픽 처리 장치(GPU), 하나 이상의 디지털 신호 프로세서(DSP), 하나 이상의 애플리케이션 특정 집적 회로(ASIC), 하나 이상의 애플리케이션 특정 표준 제품, 하나 이상의 필드 프로그래밍 가능한 게이트 어레이, 집적 회로의 임의의 다른 유형 또는 조합, 하나 이상의 상태 머신, 또는 이들의 임의의 조합과 같은 하나 이상의 프로세서를 나타낸다.
용어 "회로"는 하나 이상의 기능을 구현하도록 구성된 전자 컴포넌트(예를 들어, 트랜지스터, 저항, 커패시터 및/또는 인덕터)의 배열을 지칭한다. 예를 들어, 회로는 논리적 기능을 집합적으로 구현하는 로직 게이트를 형성하기 위해 상호 연결된 하나 이상의 트랜지스터를 포함할 수 있다.
본 명세서에 사용된 바와 같이, 용어 "결정하다" 및 "식별하다" 또는 그 임의의 변형은, 본 명세서에 도시되고 설명된 하나 이상의 디바이스 및 방법을 사용하는 임의의 방식으로, 선택, 확인, 계산, 조회, 수신, 결정, 설정, 획득 또는 기타 방식으로 식별 또는 결정하는 것을 포함한다.
본 명세서에서 사용되는 바와 같이, 용어 "예", "실시예", "구현예", "양태", "피처" 또는 "요소"는 예, 인스턴스 또는 예시로서의 역할을 나타낸다. 명시 적으로 지시되지 않는 한,
임의의 예, 실시예, 구현예, 양태, 피처 또는 요소는, 각각의 다른 예, 실시예, 구현예, 양태, 피처 또는 요소와 독립적이며, 임의의 다른 예, 실시예, 구현예, 양태, 피처 또는 요소와 조합하여 사용될 수 있다.
본 명세서에 사용된 바와 같이, 용어 “또는" 은 배타적인 "또는"이 아니라 포괄적인 "또는"을 의미하는 것으로 의도된다. 즉, 달리 명시되지 않거나 문맥에서 명확하지 않은 경우, "X는 A 또는 B를 포함한다"는 자연적인 포함 순열 중 임의의 것을 나타내도록 의도된다. 즉, X가 A를 포함하고; X가 B를 포함하고; 또는 X가 A와 B를 모두 포함하는 경우, "X는 A 또는 B를 포함한다"가 전술한 경우 중 임의의 것에 따라 충족된다. 또한, 본 출원 및 첨부된 청구 범위에서 사용된 바와 같은 관사 “a” 및 “an”은 달리 명시되지 않거나 문맥상 단수 형태로 지시되는 것이 명백하지 않는 한, 일반적으로 “하나 이상”을 의미하는 것으로 해석되어야 한다.
또한, 설명의 단순화를 위해, 본 명세서의 도면 및 설명은 시퀀스 또는 일련의 단계 또는 스테이지를 포함할 수 있지만, 본 명세서에 개시된 방법들의 요소는 다양한 순서로 또는 동시에 발생할 수 있다. 추가로, 본 명세서에 개시된 방법의 요소는 본 명세서에 명시적으로 제시 및 설명되지 않은 다른 요소와 함께 발생할 수 있다. 또한, 본 명세서에 설명된 방법의 모든 요소가 본 개시 내용에 따른 방법을 구현하는데 필요한 것은 아니다. 양태, 피처 및 요소가 본 명세서에서 특정 조합으로 설명되지만, 각각의 양태, 피처 또는 요소는, 독립적으로 또는 다른 양태, 피처 및 요소와 함께 또는 이들 없이 다양한 조합으로 사용될 수 있다.
실시예의 도면 및 설명은 명확한 이해를 위해 관련된 요소를 예시하기 위해 단순화되었으며, 명료함을 위해 일반적인 프로세서에서 발견되는 많은 다른 요소를 제거했음을 이해해야 한다. 당업자는 다른 요소 및/또는 단계가 본 개시 내용을 구현하는데 바람직하고/하거나 본 개시 내용을 구현하는데 요구된다는 것을 인식할 수 있다. 그러나, 그러한 요소 및 단계는 본 개시 내용의 더 나은 이해를 용이하게 하지 않기 때문에, 그러한 요소 및 단계에 대한 논의는 본 명세서에서 제공되지 않는다.
도 1은 본 개시 내용의 실시예에 따라 명령어 캐시(iCache)(1015) 또는 명령어가 타이트하게 연결된 메모리(iTIM)(1020)[적절한 경우 메모리 구조체 또는 메모리 구조체들로 지칭될 수 있음] 중 하나에 액세스하기 위한 액세스 예측 로직 또는 액세스 예측기(1010)를 포함하는 코어(1005)를 갖는 프로세서(1000)의 예의 블록도이다. 구현예에서, iTIM(1020)은 코어(1005)의 일부일 수 있다. 예를 들어, 프로세서(1000)는 컴퓨팅 디바이스, 마이크로 프로세서, 마이크로 컨트롤러, 또는 IP 코어일 수 있다. 프로세서(1000)는 집적 회로로서 구현될 수 있다. 프로세서(1000)는 하나 이상의 코어를 포함할 수 있고, 각 코어는 복수의 iTIM 및 iCache를 포함할 수 있다. 구현예에서, iTIM(1020)은 코어(1005)의 일부일 수 있다. 본 명세서에 설명된 액세스 예측 로직(1010)은 코어, iTIM 및 iCache의 상이한 조합을 설명하기 위해 개시 내용, 청구항 또는 도면의 범위를 벗어나지 않고, 적절하게 구현 또는 수정될 수 있다. 프로세서(1000)는 명령어 세트 아키텍처(ISA)(예를 들어, RISC-V 명령어 세트)의 명령어를 디코딩하고 실행하도록 구성될 수 있다. 프로세서(1000)는 파이프 라인 아키텍처를 구현할 수 있다. 구현예에서, iTIM(1020)은 규정된 크기를 갖고 메모리 어드레스 범위를 갖도록 구성된 저지연, 전용 RAM일 수 있다. 구현예에서, iCache(1015)는 고정된 캐시 라인 길이를 갖는 N개의 방식 세트 연관 캐시일 수 있고, 각각의 캐시 방식은 규정된 크기를 가질 수 있다. iCache(1015)는 규정된 크기를 가질 수 있으며, 메모리 어드레스 범위를 갖도록 구성될 수 있다.
프로세서(1000)는 파이프라인 아키텍처에서의 실행을 위한 명령어를 페치할 때 전력 소비를 개선하기 위해 액세스 예측 로직(1010)을 포함할 수 있다. 액세스 예측 로직(1010)은 인에이블할 어떤 메모리 구조체(들)을 결정하기 위해 명령어-페치 사이클 마다 업데이트될 수 있다. 구현예에서, 액세스 예측 로직(1010)은 이전 명령어-페치 사이클로부터의 피드백을 사용하여, iTIM, iCache 플러스 어느 방식, 또는 양쪽 메모리 구조체 모두가 인에이블되어야 하는지 표시할 수 있다. 액세스 예측 로직(1010)은 위치 상태 및 프로그램 카운터 값을 처리하고, 인에이블 신호를 출력하여 iTIM, iCache 플러스 어느 방식 또는 양쪽 방식 모두를 인에이블할 수 있다. 구현예에서, 액세스 예측 로직(1010)은 메모리 구조체 경계 교차를 설명할 수 있다. 구현예에서, 액세스 예측 로직(1010)은 순차적 명령어 프로세싱을 설명하기 위해 순차적 명령어 프로세싱 로직을 포함할 수 있다. 예를 들어, 순차적 명령어 프로세싱 로직은 위치 상태에 의해 인에이블된 현재 메모리 구조체와 관련하여 경계 조건을 교차하는 결과를 처리할 수 있다. 예를 들어, 경계 조건은 현재 메모리 구조체의 메모리 어드레스 범위를 넘어서는 타겟 메모리 주소를 포함할 수 있다. 구현예에서, 경계 교차 조건이 발생하고 현재 메모리 구조체가 iTIM이면, 위치 상태 표시기는 iTIM과 iCache 모두를 활성화하도록 표시할 수 있다. 구현예에서, 경계 교차 조건이 발생하고 현재 메모리 구조체 iCache이면, 위치 상태를 결정하고 업데이트하기 위해 캐시 예측 알고리즘이 사용될 수 있다. 구현예에서, 액세스 예측 로직(1010)은, 위치 상태 및 프로그램 카운터 값에 영향을 줄 수 있는 분기 또는 점프 조건 또는 시나리오를 설명하기 위해 분기 예측기, 분기 히스토리 테이블, 분기 타겟 버퍼, 및/또는 리턴 어드레스 스택 예측기를 포함할 수 있다. 구현예에서, 액세스 예측 로직(1010)은 위치 상태 및 프로그램 카운터 값에 영향을 줄 수 있는 분기 예측 실패를 고려할 수 있다. 예를 들어, 예측 실패로 인해 위치 상태를 현재 알 수 없고, 위치 상태 표시기가 모든 방법으로 또는 iTIM과 iCache 양자를 사용하여 iCache를 활성화하도록 설정될 수 있다.
도 2는 본 개시 내용의 실시예들에 따른, 도 1의 프로세서(1000), 도 3의 프로세서(3000), 및 도 5의 프로세서(5000)와 같은 프로세서의 예시적인 코어 파이프라인(2000)의 다이어그램이다. 코어 파이프라인(2000)은, 명령어 페치 스테이지(2005), 명령어 디코드 스테이지(2010), 실행 명령어 스테이지(2015), 메모리 판독/기록 스테이지(2020), 및 답장(writeback) 스테이지(2025)를 포함하여 명령어 실행을 위한 5개의 파이프라인 스테이지를 가질 수 있다. 일부 구현예에서, 코어 파이프라인(2000)은 본 명세서에서 설명된 개시 내용, 청구범위 또는 도면의 범위를 벗어나지 않고 더 적거나 더 많은 파이프라인 스테이지를 포함할 수 있다. 본 명세서에서 사용되는 용어 “명령어-페치 사이클”은 페치 단계 또는 명령어 실행의 스테이지의 1회 반복을 지칭한다.
명령어 페치 스테이지(2005)에서, 명령어는 iTIM, iCache 또는 메모리로부터 적절하게 페치된다. 본 명세서에서 설명된 액세스 예측 로직, 예를 들어 도 1의 액세스 예측 로직(1010), 도 3의 액세스 예측 로직(3010) 또는 도 5의 액세스 예측 로직(5010)은 명령어 페치 스테이지(2005) 동안에 부분적으로 수행, 실행 또는 프로세싱될 수 있다. 예를 들어, 프로그램 카운터는 명령어 유형 프로세싱에 기초하여 증분 또는 업데이트될 수 있고, 위치 상태는 명령어 캐시에 대한 명령어 유형 프로세싱 및 히트/미스 조건에 기초하여 업데이트될 수 있다.
그 후, 페치된 명령어는 명령어 디코드 스테이지(2010)에서 디코딩되고 실행 단계(2015)에서 실행될 수 있다. 본 명세서에서 설명된 액세스 예측 로직, 예를 들어 도 1의 액세스 예측 로직(1010), 도 3의 액세스 예측 로직(3010), 또는 도 5의 액세스 예측 로직(5010)은, 부분적으로, 분기 해상도를 위해 실행 스테이지(2015) 동안 업데이트될 수 있다. 예를 들어, 분기 예측 실패의 경우, 액세스 예측 로직은 분기 예측 실패 이벤트, 새로운 프로그램 카운터 값 및 새로운 위치 상태로 업데이트될 수 있다. 액세스 예측 로직은 이 업데이트된 정보를 사용하여 어떤 메모리 구조체가 인에이블되어야 하는지를 설정할 수 있다. 메모리 어드레스에 대한 판독 또는 기록은 명령어 유형에 따라 메모리 판독/기록 스테이지(2020) 중에 발생할 수 있으며, 결과는 답장 스테이지(2025) 동안에 레지스터에 기록될 수 있다.
도 3은 본 개시 내용의 실시예들에 따른 예시적인 흐름 및 액세스 예측 로직(3010)의 다이어그램이다. 도 3은 본 개시 내용의 실시예들에 따른 명령어 캐시(iCache)(3015) 또는 명령어 밀접 결합된 메모리(iTIM)(3020) 중 하나에 액세스하기 위한 액세스 예측 로직 또는 액세스 예측기(3010)를 포함하는, 코어(3005)를 갖는 프로세서(3000)를 도시하며, 본 명세서에서 설명된 바와 같이 구현 및 구성될 수 있다. 구현예에서, iTIM(3020)은 코어(3005)의 일부일 수 있다. 예를 들어, 프로세서(3000)는 컴퓨팅 디바이스, 마이크로 프로세서, 마이크로 컨트롤러, 또는 IP 코어일 수 있다. 프로세서(3000)는 집적 회로로서 구현될 수 있다. 프로세서(3000)는 하나 이상의 코어를 포함할 수 있고, 각각의 코어는 본 명세서에서 설명된 바와 같이 복수의 iTIM 및 iCache를 포함할 수 있다. 본 명세서에서 설명된 액세스 예측 로직(3010)은 개시 내용, 청구 범위 또는 도면의 범위를 벗어나지 않고 모든 조합에 대해 적절하게 구현 또는 수정될 수 있다. 프로세서(3000)는 명령어 세트 아키텍처(ISA)(예를 들어, RISC-V 명령어 세트)의 명령어를 디코딩 및 실행하도록 구성될 수 있다. 프로세서(3000)는 예를 들어 도 2에 도시된 바와 같이 파이프라인 아키텍처를 구현할 수 있다. 프로세서(3000)는 파이프라인 아키텍처에서의 실행을 위한 명령어를 페치할 때, 전력 소비를 감소시키기 위해 액세스 예측 로직(3010)을 포함할 수 있다.
액세스 예측 로직(3010)은 프로그램 카운터(3025), 위치 상태 표시기(3030) 및 인에이블 로직(3035)을 포함할 수 있다. 위치 상태 표시기(3030)는, 위치 상태가 알려지지 않은 경우(본 명세서에서 알려지지 않은 상태로 지칭됨) iTIM, (iCache + 특정 방식), (iCache + 모든 방식)을 활성화하거나 또는 위치 상태가 알려지지 않은 경우 iTIM 및 iCache 양자를 활성화하도록, 위치 상태를 설정할 수 있다. 위치 상태 표시기(3030)는 위치 상태를 인에이블 로직(3035)으로 전송할 수 있다. 구현예에서, 위치 상태 표시기(3030)는 위치 상태를 설정하기 위해 이전 명령어-페치 사이클로부터의 피드백을 사용할 수 있다. 구현예에서, 위치 상태는, 순차 명령어 로직 프로세싱으로부터의 경계 교차로 인해, 분기 또는 점프 명령어 유형 프로세싱으로 인해, 분기 예측 실패로 인해 또는 캐시 미스로 인해, 초기화시, 알려지지 않은 상태로 설정될 수 있다. 구현예에서, 위치 상태 표시기(3030)는 위치 상태를 설정하거나 업데이트하기 위해 분기 해상도 정보를 사용할 수 있다. 예를 들어, 분기 분해능 정보는 분기 예측 실패 이벤트, 새로운 프로그램 카운터 값 및 새로운 위치 상태를 포함할 수 있다. 구현예에서, 위치 상태 표시기(3030)는 분기 예측 로직을 사용하여 위치 상태를 업데이트할 수 있다. 구현예에서, 위치 상태 표시기(3030)는 위치 상태를 업데이트하기 위해 캐시 히트/미스를 사용할 수 있다. 구현예에서, 위치 상태 표시기(3030)는 명령어 페치 사이클마다 업데이트될 수 있다.
프로그램 카운터(3025)는 명령어가 메모리로부터 페치되어 실행될 때 명령어의 메모리 어드레스를 보유(retain)할 수 있다(프로그램 카운터 값으로도 지칭됨). 프로그램 카운터(3025)는 증분기, 선택기 및 레지스터를 포함할 수 있다. 페치된 명령어를 디코딩할 때, 증분기를 사용하여 현재 프로그램 카운터 값에 현재 명령어의 바이트 길이를 더하고, 이 다음 순차 명령어를 레지스터에 배치함으로써 형성된다. 분기가 수행되는 경우, 타겟 명령어의 어드레스는, 증분된 값 대신에 선택기에 의해 선택되고, 이 타겟 어드레스가 레지스터에 배치된다. 예를 들어, 프로그램 카운터(3025)는 분기 해상도 정보로 또는 분기 예측 로직으로부터 업데이트될 수 있다. 프로그램 카운터(3025)는 프로그램 카운터 값을 인에이블 로직(3010)으로 전송할 수 있다. 구현예에서, 프로그램 카운터(3025)는 각각의 명령어 페치 사이클을 업데이트할 수 있다.
인에이블 로직(3035)은, 프로그램 카운터(3025) 및 위치 상태 표시기(3030)로부터의 입력을 프로세싱하고, 알려지지 않은 상태의 경우에는 iTIM 또는 iCache 및 적절한 방식 또는 둘 다를 인에이블시킨다. 구현예에서, 액세스 예측 로직(3010)은 본 명세서에 설명된 바와 같은 순차 명령어 프로세싱 로직 및 분기 예측 프로세싱을 포함할 수 있다. 예를 들어, 액세스 예측 로직(3010)은, 위치 상태 표시기(3030) 및 프로그램 카운터(3025)에 영향을 줄 수 있는 분기 또는 점프 조건 또는 시나리오를 설명하기 위해 분기 예측기, 분기 히스토리 테이블, 분기 타겟 버퍼, 및/또는 리턴 어드레스 스택 예측기를 포함할 수 있다. 구현예에서, 액세스 예측 로직(3010)은 위치 상태 표시기(3030) 및 프로그램 카운터(3025)에 영향을 줄 수 있는 분기 예측 실패를 설명할 수 있다.
구현예에서, 활성화된 iTIM(3020), 또는 iCache(3015) 및 적절한 방식은, 도 2에 도시된 바와 같이 디코딩 명령어 스테이지에서 디코딩을 위한 명령어를 리턴시킬 수 있고, 위치 상태 표시기(3030)는 적절하게 업데이트될 수 있다. 이 구현예에서, 캐시 미스의 경우에, 명령어는 예를 들어 메인 메모리로부터 획득될 수 있고, 위치 상태 표시기(3030)는 적절하게 업데이트될 수 있다. 구현예에서, 위치 상태 표시기(3030)는 위치 상태를 알 수 없음으로 설정할 수 있으며, 즉 iTIM(3020) 및 iCache(3015) 양자는 활성화를 위해 설정될 수 있다.
구현예에서, 인에이블 로직(3035)은 알려지지 않은 상태가 표시될 때 양쪽 메모리 구조체를 활성화할 수 있고, 적절한 메모리 구조체는 도 2에 도시된 바와 같이 디코딩 명령어 스테이지에서 디코딩하기 위한 명령어를 리턴시킬 수 있다. 구현예에서, 위치 상태 표시기(3030)는 적절하게 업데이트될 수 있다. 이 구현예에서, 캐시 미스의 경우에, 명령어는 예를 들어 메인 메모리로부터 획득될 수 있고, 위치 상태 표시기(3030)는 적절하게 업데이트될 수 있다.
도 4는 본 개시 내용의 실시예들에 따라 도 3에 도시된 바와 같이 iTIM과 iCache 간의 액세스 예측을 위한 예시적인 기법(4000)의 다이어그램이다. 이 기법은, 현재 명령어 사이클에 대한 위치 상태를 제공하는 단계(4005); 프로그램 카운터 값을 제공하는 단계(4010); 위치 상태 및 프로그램 카운터 값의 프로세싱에 기초하여 메모리 구조체(들)를 인에이블하는 단계(4015); 명령어를 리턴시키는 단계(4020); 및 위치 상태 및 프로그램 카운터 값을 업데이트하는 단계(4025)를 포함한다. 기법(4000)은, 도 1의 프로세서(1000), 도 3의 프로세서(3000) 또는 도 5의 프로세서(5000)를 사용하여 구현될 수 있다.
기법(4000)은 현재 명령어 사이클에 대한 위치 상태를 제공하는 단계(4005)를 포함한다. 구현예에서, 위치 상태는 알려지거나 알려지지 않을 수 있다. 구현예에서, 위치 상태가 알려진 경우, 위치 상태 표시기는 iTIM 또는 iCache 중 어느 하나 및 특정 방식을 표시할 수 있다. 구현예에서, 위치 상태가 알려지지 않은 경우, 위치 상태 표시기는 iCache 및 모든 방식, 또는 iTIM 및 iCache 양자 및 모든 방식을 표시할 수 있다. iTIM은 예를 들어 도 1, 도 3, 또는 도 5에 도시된 iTIM일 수 있다. iCache는 예를 들어 도 1, 도 3, 또는 도 5에 도시된 iCache일 수 있다.
기법(4000)은 프로그램 카운터 값을 제공하는 단계(4010)를 포함한다.
기법(4000)은 위치 상태 및 프로그램 카운터 값을 프로세싱하는 것에 기초하여 메모리 구조체(들)를 인에이블링하는 것(4015)을 포함한다. 구현예에서, 인에이블된 메모리 구조체는 iTIM일 수 있다. 구현예에서, 인에이블된 메모리 구조체는 iCache 및 특정 방식일 수 있다. 구현예에서, 위치 상태를 알 수 없는 경우, 인에이블된 메모리 구조체는 모든 방식이 인에이블된 iCache를 포함할 수 있다. 구현예에서, 위치 상태를 알 수 없는 경우, 인에이블된 메모리 구조체는 모든 방식이 인에이블된 iTIM 및 iCache를 포함할 수 있다.
기법(4000)은 명령어를 리턴하는 것(4020)을 포함한다. 구현예에서, 명령어는 인에이블되고 알려진 메모리 구조체로부터 리턴될 수 있다. 예를 들어, 위치 상태가 알려진 경우, iCache의 특정 방식 또는 iTIM으로부터 명령어가 리턴될 수 있다. 구현예에서, 명령어는 인에이블되고 알려진 메모리 구조체로부터 리턴되지 못할 수 있으며, 예를 들어 메인 메모리 또는 일부 다른 메모리 계층으로부터 리턴될 수 있다. 이 경우에, 인에이블되고 알려진 메모리 구조체는 iCache일 수 있으며, 캐시 미스가 있었다. 구현예에서, 명령어는 인에이블된 메모리 구조체로부터 리턴될 수 있다. 예를 들어, 위치 상태를 알 수 없고 iTIM 및 iCache 양자에 대해 모든 방식이 인에이블된 경우, iTIM 중 하나 또는 iCache의 방식으로부터 명령어가 리턴될 수 있다. 구현예에서, 명령어는 iTIM 및 iCache를 포함하지 않는 메모리, 예를 들어 메인 메모리 또는 일부 다른 메모리 계층으로부터 리턴될 수 있다.
기법(4000)은 위치 상태 표시기 및 프로그램 카운터를 업데이트하는 것(4025)을 포함한다. 구현예에서, 위치 상태 표시기 및 프로그램 카운터는, 명령어 페치 사이클마다, 적절하게 위치 상태 및 프로그램 카운터 값에 관한 피드백으로 업데이트될 수 있다. 구현예에서, 위치 상태 표시기 및 프로그램 카운터는 본 명세서에 설명된 바와 같이 순차 명령어 프로세싱에 기초하여 업데이트될 수 있다. 구현예에서, 위치 상태 표시기 및 프로그램 카운터는 본 명세서에 설명된 바와 같이 분기 프로세싱에 기초하여 업데이트될 수 있다. 구현예에서, 위치 상태 표시 기 및 프로그램 카운터는 본 명세서에 설명된 바와 같이 분기 해상도에 기초하여 업데이트될 수 있다. 구현예에서, 위치 상태 표시기 및 프로그램 카운터는 본 명세서에 설명된 바와 같이 캐시 히트/미스 프로세싱에 기초하여 업데이트될 수 있다.
도 5는 본 개시 내용의 실시예들에 따른 예시적인 흐름 및 액세스 예측 로직(5010)의 다이어그램이다. 도 5는 본 개시 내용의 실시예들에 따른 명령어 캐시(iCache)(5015) 또는 명령어 밀접 결합된 메모리(iTIM)(5020) 중 하나에 액세스하기 위한 액세스 예측 로직 또는 액세스 예측기(5010)를 포함하는, 코어(5005)를 갖는 프로세서(5000)를 도시하며, 본 명세서에 설명된 바와 같이 구현 및 구성될 수 있다. 구현예에서, iTIM(5020)은 코어(5005)의 일부일 수 있다. 예를 들어, 프로세서(5000)는 컴퓨터 디바이스, 마이크로 프로세서, 마이크로 컨트롤러, 또는 IP 코어일 수 있다. 프로세서(5000)는 집적 회로로서 구현될 수 있다. 프로세서(5000)는 하나 이상의 코어를 포함할 수 있고, 각 코어는 복수의 iTIM 및 iCache를 포함할 수 있다. 본 명세서에 설명된 액세스 예측 로직(5010)은 개시 내용, 청구범위 또는 도면의 범위를 벗어나지 않고 모든 조합에 대해 적절하게 구현되거나 수정될 수 있다. 프로세서(5000)는 명령어 세트 아키텍처(ISA)(예를 들어, RISC-V 명령어 세트)의 명령어를 디코딩하고 실행하도록 구성될 수 있다. 프로세서(5000)는 예를 들어 도 2에 도시된 바와 같이 파이프라인 아키텍처를 구현할 수 있다. 프로세서(5000)는 파이프라인 아키텍처에서 실행을 위한 명령어를 페치할 때 전력 소비를 감소시키기 위해 액세스 예측 로직(5010)을 포함할 수 있다.
액세스 예측 로직(5010)은, 프로그램 카운터(5025), 다음 프로그램 카운터 로직(5027), 위치 상태 표시기(5030), 다음 위치 상태 로직(5033) 및 인에이블 로직(5035)을 포함할 수 있다. 프로그램 카운터(5025)는 다음 프로그램 카운터 로직(5027), 다음 위치 상태 로직(5033), 인에이블 로직(5035), iTIM(5020) 및 iCache(5015)에 대한 입력일 수 있다. 다음 프로그램 카운터 로직(5027)은 프로그램 카운터(5025)에 대한 입력일 수 있다. 위치 상태 표시자(5030)는 인에이블 로직(5035) 및 다음 위치 상태 로직(5033)에 대한 입력일 수 있다. 다음 위치 상태 로직(5033)은 위치 상태 표시자(5030)에 대한 입력일 수 있다. 인에이블 로직(5035)은 특정 방식을 포함하는 iTIM(5020) 및 iCache(5015)에 대한 입력일 수 있다.
위치 상태 표시기(5030)는 2개의 알려진 상태, iTIM 상태 및 iCache 상태, 그리고 알려지지 않은 상태를 표시할 수 있다. 위치 상태 표시기(5030)는 위치 상태를 인에이블 로직(5035)으로 전송할 수 있다. 구현예에서, 위치 상태 표시기(5030)는 다음 위치 상태 로직(5033)에 의해 업데이트될 수 있다.
다음 위치 상태 로직 또는 회로(5033)는 iTIM 위치 상태, iCache 위치 상태 및 알려지지 상태를 포함하는 3개의 위치 상태 사이의 전환을 실현하기 위해 상태 머신으로서 기능하거나 동작할 수 있다. 구현예에서, 다음 위치 상태 로직(5033)은, 순차 명령어 로직 프로세싱으로부터의 경계 교차(crossing)로 인해, 분기 또는 점프 명령어 유형 프로세싱으로 인해, 분기 예측 실패으로 인해, 또는 캐시 미스로 인해, 초기화시에 알 수 없는 상태에 있을 수 있다. 구현예서, 상태 전환은 위치 상태 표시기(5030), 분기 해상도, 분기 예측 로직, 순차 명령어 로직 프로세싱 및 캐시 히트/미스 프로세싱으로부터의 입력에 기초하여 발생할 수 있다. 예를 들어, 다음 위치 상태 로직(5033)은 위치 상태를 업데이트하기 위해 이전 명령어 페치 사이클로부터 위치 상태 표시기(5030)로부터의 피드백을 사용할 수 있다.
구현예에서, 다음 위치 상태 로직(5033)은 위치 상태를 업데이트하기 위해 분기 해상도 정보를 사용할 수 있다. 예를 들어, 분기 해상도 정보는 분기 예측 실패 이벤트, 새로운 프로그램 카운터 값 및 도 2에 도시된 바와 같이 실행 명령어 스테이지 동안에 생성되었을 수 있는 새로운 위치 상태를 포함할 수 있다. 구현예에서, 도 6과 관련하여 본 명세서에 설명된 바와 같이, 다음 위치 상태 로직(5033)은 분기 예측 로직을 사용하여 위치 상태를 업데이트할 수 있다.
구현예에서, 다음 위치 상태 로직(5033)은 위치 상태를 업데이트하기 위한 순차 명령어 프로세싱 로직을 포함할 수 있다. 예를 들어, 순차 명령어 프로세싱 로직은, 프로그램 카운터 값이 현재 메모리 구조체의 어드레스 범위를 벗어났는지 여부를 결정할 수 있다.
도 6은 본 개시 내용의 실시예들에 따른 예시적인 흐름 및 분기 예측 로직, 회로 또는 예측기(6000)의 도면이다. 구현예에서, 분기 예측 로직(6000)은 도 5에 도시된 바와 같이 다음 위치 상태 로직(5033)의 일부일 수 있다. 프로그램 카운터(6003)는 분기 예측 로직(6000)에 대한 입력이다. 분기 예측 로직(6000)은 분기 히스토리 테이블(6005), 분기 타겟 버퍼(6010), 리턴 어드레스 스택(6015) 및 멀티플렉서/선택기(6020)를 포함할 수 있다. 분기 히스토리 테이블(6005)은, 분기 명령어 마다, 분기가 최근에 취해졌는지 여부를 나타내는 비트를 저장할 수 있다. 분기 타겟 버퍼(6010)는, 소스 어드레스, 취득된 예측 분기의 타겟 어드레스 및 타겟 어드레스의 위치 상태를 저장할 수 있다. 리턴 어드레스 스택(6015)은, 프로시저 호출 명령어가 실행될 수 있는 경우, 타겟 어드레스 및 타겟 어드레스의 위치 상태를 저장할 수 있다. 호출 명령어의 리턴 어드레스는, 스택에 푸시될 수 있으며 프로시저 호출이 완료될 때, 프로시저 호출은 프로시저 호출 명령어의 타겟 어드레스로 리턴된다. 리턴 명령어가 실행될 때, 리턴 스택의 어드레스가 팝핑되고(popped), 리턴 명령어가 팝핑된 어드레스로 리턴할 것이라는 예측이 이루어진다. 분기 예측 로직(6000)은 위치 상태를 포함하는 종래의 분기 예측기로서 동작하고 구현될 수 있다. 예를 들어, 멀티플렉서/선택기(6020)는, 분기 히스토리 테이블(6005), 분기 타겟 버퍼(6010) 및 리턴 어드레스 스택(6015)으로부터 입력을 수신하고, 예측된 프로그램 카운터 값, 취득된 예측 분기 및 타겟 위치 상태를 포함하는 분기 예측 정보를 선택적으로 출력한다. 구현예에서, 분기 예측 로직(6000)의 출력은, 위치 상태 및 프로그램 카운터 값을 적절하게 업데이트하기 위해, 다음 위치 상태 로직(5033) 및 다음 프로그램 카운터 로직(5027)에 의해 사용될 수 있다.
이제 도 5를 더 참조하면, 프로그램 카운터(5025)는 명령어가 메모리로부터 페치되어 실행될 때 명령어의 메모리 주소를 유지할 수 있다. 프로그램 카운터(5025)는 증분기, 선택기 및 레지스터를 포함할 수 있다. 페치된 명령어의 디코딩시에, 증분기를 사용하여 현재 명령어의 바이트 길이를 현재 프로그램 카운터 값에 더하고 이 다음 순차 명령어를 레지스터에 배치함으로써, 다음 순차 명령어의 어드레스가 형성된다. 분기가 수행되는 경우, 타겟 명령어의 어드레스는 증분된 값 대신에 선택기에 의해 선택되고, 이 타겟 어드레스는 레지스터에 배치된다. 프로그램 카운터(5025)는 다음 프로그램 카운터 로직(5027)에 의해 업데이트될 수 있다.
다음 프로그램 카운터 로직(5027)은, 프로그램 카운터(5025), 도 6에 도시된 분기 예측 로직(6000)로부터의 정보, 그리고 상기 프로그램 카운터(5025)를 선택적으로 업데이트하기 위한 분기 해상도 정보를 사용할 수 있다. 구현예에서, 다음 프로그램 카운터 로직(5027)은, 업데이트된 정보를 사용하여 프로그램 카운터(5025)를 업데이트할 수 있다.
구현예에서, 다음 프로그램 카운터 로직(5027)은 프로그램 카운터 값을 업데이트하기 위해 분기 해상도 정보를 사용할 수 있다. 예를 들어, 분기 분해능 정보는, 도 2에 도시된 바와 같이 실행 명령어 스테이지 동안에 생성되었을 수 있는 새로운 위치 상태, 새로운 프로그램 카운터 값, 분기 예측 실패 이벤트를 포함할 수 있다. 구현예에서, 다음 프로그램 카운터 로직(5027)은, 분기 예측 로직을 사용하여, 도 6과 관련하여 본 명세서에 설명된 바와 같이 프로그램 카운터 값을 업데이트할 수 있다.
인에이블 로직(5035)은, 프로그램 카운터(5025) 및 위치 상태 표시기(5030)로부터의 입력을 프로세싱하고, iTIM 상태에 대한 iTIM, iCache 상태에 대한 iCache 및 그에 대한 적절한 방식, 알려지지 않은 상태에 대한 iCache 및 그에 대한 모든 방식, 또는 알려지지 않은 상태의 경우에 iTIM 및 iCache 양쪽을 인에이블시킬 수 있다. 구현예에서, 활성화된 iTIM(5020), 또는 iCache(5015) 및 적절한 방식은, 도 2에 도시된 바와 같이 디코딩 명령어 스테이지에서 디코딩을 위한 명령어를 리턴시킬 수 있다. 구현예에서, 캐시 미스의 경우에, 명령어는 예를 들어 메인 메모리로부터 획득될 수 있고, 다음 위치 상태 로직(5033)은 적절하게 업데이트될 수 있다. 구현예에서, 다음 위치 상태 로직(5033)은 알 수 없음으로 설정될 수 있다.
구현예에서, 인에이블 로직(5035)은, 알 수 없는 상태가 표시될 때 양쪽 메모리 구조체를 활성화할 수 있고, 적절한 메모리 구조체가 도 2에 도시된 바와 같이 디코딩 명령어 스테이지에서 디코딩을 위한 명령어를 리턴시킬 수 있다. 구현예에서, 다음 위치 상태 로직(5033)은 적절하게 업데이트될 수 있다. 이 구현예에서, 캐시 미스의 경우에, 명령어는 예를 들어 메인 메모리로부터 획득될 수 있고, 다음 위치 상태 로직(5033)은 적절하게 업데이트될 수 있다.
도 7은 도 5 및 도 6에 도시된 바와 같이 그리고 본 개시 내용의 실시예에 따라 iTIM과 iCache 간의 액세스 예측을 위한 예시적인 기법(7000)의 다이어그램이다. 이 기법은 현재 명령 사이클에 대한 위치 상태를 제공하는 단계(7005); 프로그램 카운터 값을 제공하는 단계(7010); 위치 상태 및 프로그램 카운터 값의 프로세싱에 기초하여 메모리 구조체(들)를 인에이블시키는 단계(7015); 명령어를 리턴시키는 단계(7020); 위치 상태를 결정하는 단계(7025); 및 프로그램 카운터 값을 결정하는 단계(7030)를 포함한다. 기법(7000)은 도 1의 프로세서(1000), 도 3의 프로세서(3000) 또는 도 5의 프로세서(5000)를 사용하여 구현될 수 있다.
기법(7000)은 현재 명령어 페치 사이클에 대한 위치 상태를 제공하는 단계(7005)를 포함한다. 구현예에서, 위치 상태는 알 수 있거나 알 수 없을 수 있다. 구현예에서, 위치 상태가 알려진 경우, 위치 상태는 iTIM 또는 iCache 중 어느 하나 및 특정 방식을 나타낼 수 있다. 구현예에서, 위치 상태가 알려지지 않은 경우, 위치 상태는 iCache 및 모든 방식, 또는 iTIM 및 iCache 양쪽 및 모든 방식을 나타낼 수 있다. iTIM은 예를 들어 도 1, 도 3, 또는 도 5에 도시된 iTIM일 수 있다. iCache는 예를 들어 도 1, 도 3, 또는 도 5에 도시된 iCache일 수 있다.
기법(7000)은 프로그램 카운터 값을 제공하는 단계(7010)를 포함한다.
기법(7000)은 위치 상태 및 프로그램 카운터 값의 프로세싱에 기초하여 메모리 구조체(들)를 인에이블하는 단계(7015)를 포함한다. 구현예에서, 인에이블된 메모리 구조체는 iTIM일 수 있다. 구현예에서, 인에이블된 메모리 구조체는 iCache 및 특정 방식일 수 있다. 위치 상태가 알려지지 않은 구현예에서, 인에이블된 메모리 구조체는, 모든 방식이 인에이블된 iCache를 포함할 수 있다. 위치 상태가 알려지지 않은 구현예에서, 인에이블된 메모리 구조체는, 모든 방식이 인에이블된 iTIM 및 iCache를 포함할 수 있다.
기법(7000)은 명령어를 리턴시키는 단계(7020)를 포함한다. 구현예에서, 명령어는 인에이블되고 알려진 메모리 구조체로부터 리턴될 수 있다. 예를 들어, 위치 상태가 알려진 경우, 명령어는 iCache의 특정 방식 또는 iTIM으로부터 리턴될 수 있다. 구현예에서, 명령어는 인에이블되고 알려진 메모리 구조체로부터 리턴되지 못할 수 있으며, 예를 들어 메인 메모리 또는 일부 다른 메모리 계층으로부터 리턴될 수 있다. 이 경우에, 인에이블되고 알려진 메모리 구조체는 iCache일 수 있으며, 캐시 누락이 있었다. 구현예에서, 명령어는 인에이블된 메모리 구조체로부터 리턴될 수 있다. 예를 들어, 위치 상태가 알려지지 않은 경우, iTIM 중 하나 또는 iCache의 방식으로부터 명령어가 리턴될 수 있다. 구현예에서, 명령어는 iTIM 및 iCache를 포함하지 않는 메모리, 예를 들어 메인 메모리 또는 일부 다른 메모리 계층으로부터 리턴될 수 있다.
기법(7000)은 다음 위치 상태를 결정하는 단계(7025)를 포함한다. 구현에서, 위치 상태는 위치 상태에 관한 피드백으로 각 명령어 페치 사이클마다 업데이트될 수 있다. 구현예에서, 위치 상태는 본 명세서에 설명된 바와 같은 순차 명령어 프로세싱에 기초하여 업데이트될 수 있다. 구현예에서, 위치 상태는 본 명세서에서 설명된 분기 프로세싱에 기초하여 업데이트될 수 있다. 구현예에서, 위치 상태는 본 명세서에서 설명된 분기 해상도에 기초하여 업데이트될 수 있다. 구현예에서, 위치 상태는 본 명세서에 설명된 캐시 히트/미스 프로세싱에 기초하여 업데이트될 수 있다. 제공된 업데이트에 기초하여 다음 위치 상태가 결정될 수 있고, 위치 상태가 업데이트될 수 있다.
기법(7000)은 다음 프로그램 카운터를 결정하는 단계(7030)를 포함한다. 구현예에서, 프로그램 카운터 값은 명령어 페치 사이클마다 업데이트될 수 있다. 구현예에서, 프로그램 카운터 값은 본 명세서에 설명된 분기 프로세싱에 기초하여 업데이트될 수 있다. 구현예에서, 프로그램 카운터 값은 본 명세서에 설명된 분기 해상도에 기초하여 업데이트될 수 있다. 다음 프로그램 카운터 값은, 제공된 업데이트에 기초하여 결정될 수 있고, 프로그램 카운터 값은 그에 따라 업데이트될 수 있다.
일반적으로, 프로세서는 명령어 밀접 결합된 메모리(iTIM), N개의 방식을 갖는 명령어 캐시(iCache) - 여기서 N은 적어도 하나임 - 및 액세스 예측 로직을 포함한다. 액세스 예측 로직은, 명령어를 페치하기 위하여 특정 방식 및 iTIM 또는 iCache 중 어느 하나를 예측하고, 위치 상태 및 프로그램 카운터 값에 기초하여 예측된 iTIM 또는 iCache 및 특정 방식을 인에이블시키고, 다음 명령어에 대한 다음 위치 상태를 예측하도록 위치 상태 및 프로그램 카운터 값을 피드백하도록 구성되며, 상기 프로세서는 인에이블된 iTIM 또는 iCache 및 특정 방식을 통해 명령어를 페치하도록 구성된다. 구현예에서, 액세스 예측 로직은 또한, 적어도 프로그램 카운터 값에 기초하여 위치 상태를 iTIM 또는 iCache 중 적어도 하나 및 특정 방식으로 설정하도록 구성된다. 구현예에서, 액세스 예측 로직은 또한, 다음 프로그램 카운터 값이 인에이블된 iTIM 또는 iCache 및 특정 방식의 어드레스 범위 내에 있을 때, 현재 인에이블된 iTIM 또는 iCache 및 다음 명령어를 위한 특정 방식에 대한 위치 상태를 설정하도록 구성된다. 구현예에서, 액세스 예측 로직은 또한, 다음 프로그램 카운터가 현재 인에이블된 iTIM 또는 iCache 및 특정 방식의 어드레스 범위에 의해 규정된 경계와 교차할 때, 적절한 iTIM 또는 iCache 및 다음 명령어를 위한 특정 방식에 대한 위치 상태를 설정하도록 구성된다. 구현예에서, 액세스 예측 로직은 다음 프로그램 카운터가 현재 인에이블된 iTIM 또는 iCache 및 특정 방식의 어드레스 범위에 의해 규정된 경계와 교차할 때, 다음 명령어에 대해 적절한 iTIM 및 iCache 및 모든 N개의 방식에 대한 위치 상태를 설정하도록 구성된다. 구현예에서, 액세스 예측 로직은 또한, 캐시 미스의 경우에 다음 명령어에 대해 iCache 및 다른 방식에 대한 위치 상태를 설정하도록 구성된다. 구현예에서, 액세스 예측 로직은 또한, 캐시 미스의 경우에 다음 명령어에 대해 iTIM 및 iCache 및 모든 N개의 방식에 대한 위치 상태를 설정하도록 구성된다. 구현예에서, 액세스 예측 로직은 또한, 분기 예측 실패의 경우의 다음 명령어에 대해, iCache 및 모든 N개의 방식, 또는 iTIM 및 iCache 양자 모두 및 모든 N개의 방식에 대한 위치 상태를 설정하도록 구성된다. 구현예에서, 액세스 예측 로직은 적어도 분기 해상도 프로세싱, 분기 예측 프로세싱, 순차 명령어 로직 프로세싱, 캐시 히트/미스 프로세싱, 이전 프로그램 카운터 값 및 이전 위치 상태에 기초하여 위치 상태를 예측한다.
일반적으로, 메모리 구조체 간의 예측을 위한 방법은, 위치 상태를 제공하는 단계, 프로그램 카운터 값을 제공하는 단계, 명령어를 페치하기 위해 N개의 방식의 특정 방식을 사용하여 iTIM(instruction tightly-coupled memory) 또는 명령어 캐시(iCache) 중 어느 하나를 예측하는 단계, 위치 상태 및 프로그램 카운터 값에 기초하여 예측된 iTIM 또는 iCache 및 특정 방식의 활성화를 인에이블하는 단계, 다음 명령어에 대한 다음 위치 상태를 예측하도록 위치 상태 및 프로그램 카운터 값을 피드백하는 단계 및 명령어를 리턴시키는 단계를 포함한다. 구현예에서, 방법은 적어도 프로그램 카운터 값에 기초하여 iTIM 또는 iCache 중 적어도 하나 및 특정 방식에 대한 위치 상태를 설정하는 단계를 더 포함한다. 구현예에서, 방법은 다음 프로그램 카운터 값이 인에이블된 iTIM 또는 iCache 및 특정 방식의 어드레스 범위 내에 있을 때, 다음 명령어에 대해 현재 인에이블된 iTIM 또는 iCache 및 특정 방식에 대한 위치 상태를 설정하는 단계를 더 포함한다. 구현예에서, 방법은 다음 프로그램 카운터가 현재 인에이블된 iTIM 또는 iCache 및 특정 방식의 어드레스 범위에 의해 규정된 경계와 교차할 때, 다음 명령에 대해 적절한 iTIM 또는 iCache 및 특정 방식에 대한 위치 상태를 설정하는 단계를 더 포함한다. 구현예에서, 방법은 다음 프로그램 카운터가 현재 인에이블된 iTIM 또는 iCache 및 특정 방식의 어드레스 범위에 의해 규정된 경계와 교차할 때, 다음 명령어에 대해 적절한 iTIM 및 iCache 및 모든 N개의 방식에 대한 위치 상태를 설정하는 단계를 더 포함한다. 구현예에서, 방법은 캐시 미스의 경우에 다음 명령어에 대해 iTIM 및 iCache 및 모든 N개의 방식에 대한 위치 상태를 설정하는 단계를 더 포함한다. 구현예에서, 방법은 분기 예측 실패의 경우에 다음 명령어에 대해, iCache 및 모든 N개의 방식 또는 iTIM 및 iCache 양자 모두 및 모든 N개의 방식에 대한 위치 상태를 설정하는 단계를 더 포함한다. 구현예에서, 예측은 적어도 분기 해상도 프로세싱, 분기 예측 프로세싱, 순차 명령어 로직 프로세싱, 캐시 히트/미스 프로세싱, 이전 프로그램 카운터 값 및 이전 위치 상태에 기초한다.
일반적으로, 프로세서에는 명령어 밀접 결합된 메모리(iTIM), N개의 방식을 가진 명령어 캐시(iCache) - 여기서 N은 적어도 하나임 -, 프로그램 카운터 값을 저장하도록 구성된 프로그램 카운터, 위치 상태를 저장하도록 구성된 위치 상태 표시기, 및 상기 위치 상태 및 상기 프로그램 카운터 값에 기초하여 iTIM 또는 iCache 중 하나 및 특정 방식을 인에이블시키도록 구성된 인에이블 회로를 포함하며, 상기 프로세서는 상기 인에이블된 iTIM 또는 iCache 및 특정 방식을 통해 명령어를 페치하도록 구성된다. 구현예에서, 위치 상태를, 적어도 분기 해상도 프로세싱, 분기 예측 프로세싱, 순차 명령어 로직 프로세싱, 캐시 히트/미스 프로세싱, 이전 프로그램 카운터 값 및 이전 위치 상태에 기초하여 iTIM 또는 iCache 중 적어도 하나 및 특정 방식으로 설정하도록 구성된 다음 위치 상태 로직을 더 포함한다.
본 명세서의 일부 실시예는 방법에 관한 것이지만, 그 실시예는 시스템 또는 컴퓨터 프로그램 제품으로 구현될 수도 있다는 것이 당업자에 의해 인식될 것이다. 따라서, 본 발명의 양태는, 전체 하드웨어 실시예, 전체 소프트웨어 실시예(펌웨어, 상주 소프트웨어, 마이크로-코드 등을 포함함) 또는 일반적으로 모두 본 명세서에서 "프로세서", "디바이스", 또는 "시스템"으로 지칭될 수 있는 소프트웨어 및 하드웨어 양태를 결합한 실시예의 형태를 취할 수 있다. 또한, 본 발명의 양태는 컴퓨터 판독가능 프로그램 코드가 구현된 하나 이상의 컴퓨터 판독가능 매체에 구현된 컴퓨터 프로그램 제품의 형태를 취할 수 있다. 하나 이상의 컴퓨터 판독가능 매체의 임의의 조합이 이용될 수 있다. 컴퓨터가 판독 가능한 매체는, 컴퓨터가 판독 가능한 신호 매체 또는 컴퓨터가 판독 가능한 저장 매체일 수 있다. 컴퓨터 판독 가능한 저장 매체는, 예를 들어 전자, 자기, 광학, 전자기, 적외선, 또는 반도체 시스템, 장치 또는 디바이스, 또는 전술한 것의 임의의 적절한 조합일 수 있지만, 이에 제한되지는 않는다. 컴퓨터 판독 가능한 저장 매체의 보다 구체적인 예(비제한적 목록)는, 하나 이상의 와이어를 갖는 전기적 연결, 휴대용 컴퓨터 디스켓, 하드 디스크, RAM(Random Access Memory), 판독 전용 메모리(ROM), 소거가능한 프로그래밍 가능한 판독 전용 메모리(EPROM 또는 플래시 메모리), 광섬유, 휴대용 컴팩트 디스크 판독 전용 메모리(CD-ROM), 광학 저장 디바이스, 자기 저장 디바이스, 또는 전술한 것의 임의의 적절한 조합을 포함한다. 이 문서의 맥락에서, 컴퓨터 판독 가능한 저장 매체는, 명령어 실행 시스템, 장치, 또는 디바이스에 의해 또는 이와 관련하여 사용하기 위한 프로그램을 포함하거나 저장할 수 있는 임의의 유형의 매체일 수 있다.
컴퓨터 판독 가능한 신호 매체는, 예를 들어 기저대역에서 또는 반송파의 일부로서, 내부에 구현된 컴퓨터 판독 가능한 프로그램 코드를 갖는 전파된 데이터 신호를 포함할 수 있다. 이러한 전파된 신호는, 전자기, 광학, 또는 이들의 임의의 적절한 조합을 포함하지만 이에 제한되지 않는 다양한 형태 중 임의의 것을 취할 수 있다. 컴퓨터 판독 가능한 신호 매체는, 컴퓨터 판독 가능한 저장 매체가 아니라 명령어 실행 시스템, 장치 또는 디바이스에 의해 또는 이와 관련하여 사용하기 위한 프로그램을 통신, 전파, 또는 전송할 수 있는 임의의 컴퓨터 판독 가능한 매체일 수 있다.
컴퓨터 판독 가능한 매체에 구현된 프로그램 코드는, CD, DVD, 무선, 유선, 광섬유 케이블, RF 등, 또는 이들의 임의의 적절한 조합을 포함하지만 이에 제한되지 않는 임의의 적절한 매체를 사용하여 송신될 수 있다.
본 발명의 양태에 대한 동작을 수행하기 위한 컴퓨터 프로그램 코드는, Java, Smalltalk, C++ 등과 같은 객체 지향 프로그래밍 언어 그리고 "C" 프로그래밍 언어 또는 이와 유사한 프로그래밍 언어와 같은 기존의 절차적 프로그래밍 언어를 포함하여 하나 이상의 프로그래밍 언어의 임의의 조합으로 작성될 수 있다. 프로그램 코드는, 사용자의 컴퓨터에서 전체적으로 사용자의 컴퓨터에서 독립형 소프트웨어 패키지로서 부분적으로, 사용자의 컴퓨터에서 부분적으로, 원격 컴퓨터에서 부분적으로 또는 전체적으로 원격 컴퓨터 또는 서버에서 실행될 수 있다. 후자의 시나리오에서, 원격 컴퓨터는 LAN(local area network) 또는 WAN(wide area network)을 포함한 임의의 유형의 네트워크를 통해 사용자의 컴퓨터에 연결되거나 외부 컴퓨터에 연결될 수 있다(예를 들어, 인터넷 서비스 공급자를 사용하여 인터넷을 통해 연결됨).
본 발명의 양태는, 본 발명의 실시예에 따른 방법, 장치(시스템) 및 컴퓨터 프로그램 제품의 흐름도 예시 및/또는 블록도를 참조하여 아래에서 설명된다. 흐름도 예시 및/또는 블록도의 각 블록, 및 흐름도 예시 및/또는 블록도의 블록 조합은, 컴퓨터 프로그램 명령어에 의해 구현될 수 있음이 이해될 것이다.
이러한 컴퓨터 프로그램 명령어는 범용 컴퓨터, 특수 목적 컴퓨터, 또는 다른 프로그래밍 가능한 데이터 프로세싱 장치의 프로세서에 제공되어 머신을 생성할 수 있으며, 이러한 명령어는 컴퓨터의 프로세서 또는 다른 프로그램 가능한 데이터 프로세싱 장치, 흐름도 및/또는 블록도 블록 또는 블록들에 명시된 기능/동작을 구현하기 위한 생성 수단을 통해 실행된다. 이러한 컴퓨터 프로그램 명령어는 또한 컴퓨터, 다른 프로그래밍 가능한 데이터 프로세싱 장치, 또는 다른 디바이스가 특정 방식으로 기능하도록 지시할 수 있는 컴퓨터 판독 가능한 매체에 저장될 수 있어, 컴퓨터 판독 가능한 매체에 저장된 명령어는 흐름도 및/또는 블록도 블록 또는 블록들에 명시된 기능/동작을 구현하는 명령어를 포함하는 제조 물품을 생성한다.
컴퓨터 프로그램 명령어는 또한 컴퓨터, 다른 프로그래밍 가능한 데이터 프로세싱 장치, 또는 다른 디바이스에 로드되어 일련의 동작 단계가 컴퓨터, 다른 프로그래밍 가능한 장치 또는 다른 디바이스에서 수행되어 컴퓨터 구현된 프로세스를 생성할 수 있어, 컴퓨터 또는 다른 프로그래밍 가능한 장치에서 실행되는 명령어가 흐름도 및/또는 블록도 블록 또는 블록들에 명시된 기능/동작을 구현하기 위한 프로세스를 제공한다.
도면의 흐름도 및 블록도는, 본 발명의 다양한 실시예에 따른 시스템, 방법 및 컴퓨터 프로그램 제품의 가능한 구현의 아키텍처, 기능, 및 동작을 예시한다. 이와 관련하여, 흐름도 또는 블록도의 각 블록은 모듈, 세그먼트, 또는 코드의 일부를 나타낼 수 있으며, 이는 지정된 논리 기능(들)을 구현하기 위한 하나 이상의 실행 가능한 명령어를 포함한다. 또한, 일부 대안적 구현예에서, 블록에 언급된 기능은 도면에 언급된 순서와 다르게 발생할 수 있다는 점에 유의해야 한다.
본 개시 내용은 특정 실시예와 관련하여 설명되었지만, 본 개시 내용은 개시된 실시예로 제한되지 않고, 이와 반대로, 법률에 따라 허용되는 모든 수정 및 동등한 구조를 포함하기 위하여 가장 광범위한 해석이 부여되는 첨부된 청구범위의 범위 내에 포함되는 다양한 수정, 조합, 및 등가 배열을 커버하도록 의도된다는 것이 이해되어야 한다.
Claims (20)
- 프로세서에 있어서,
명령어 밀접 결합된(instruction tightly-coupled) 메모리(iTIM);
N개의 방식(N-ways)을 갖는 명령어 캐시(iCache) - N은 적어도 하나임 -; 및
액세스 예측 로직
을 포함하며,
상기 액세스 예측 로직은,
명령어를 페치(fetch)하기 위해 상기 iTIM 또는 상기 iCache 중 어느 하나 및 특정 방식을 예측하고,
위치 상태 및 프로그램 카운터 값에 기초하여 상기 예측된 iTIM 또는iCache 및 특정 방식을 인에이블시키고,
다음 명령어에 대한 다음 위치 상태를 예측하도록 상기 위치 상태 및 상기 프로그램 카운터 값을 피드백하도록 구성되고,
상기 프로세서는 상기 인에이블된 iTIM 또는 iCache 및 특정 방식을 통해 상기 명령어를 페치하도록 구성되는 것인 프로세서. - 제1항에 있어서, 상기 액세스 예측 로직은 또한, 적어도 상기 프로그램 카운터 값에 기초하여 상기 iTIM 또는 상기 iCache 중 적어도 하나 및 상기 특정 방식에 대한 위치 상태를 설정하도록 구성되는 것인 프로세서.
- 제1항에 있어서, 상기 액세스 예측 로직은 또한, 다음 프로그램 카운터 값이 상기 인에이블된 iTIM 또는 iCache 및 특정 방식의 어드레스 범위 내에 있을 때, 다음 명령어에 대해 현재 인에이블된 iTIM 또는 iCache 및 특정 방식에 대한 위치 상태를 설정하도록 구성되는 것인 프로세서.
- 제1항에 있어서, 상기 액세스 예측 로직은 또한, 다음 프로그램 카운터가 현재 인에이블된 iTIM 또는 iCache 및 특정 방식의 어드레스 범위에 의해 규정된 규정된 경계와 교차할 때, 다음 명령어에 대해 적절한 iTIM 또는 iCache 및 특정 방식에 대한 위치 상태를 설정하도록 구성되는 것인 프로세서.
- 제1항에 있어서, 상기 액세스 예측 로직은 또한, 다음 프로그램 카운터가 현재 인에이블된 iTIM 또는 iCache 및 특정 방식의 어드레스 범위에 의해 규정된 경계와 교차할 때, 다음 명령어에 대해 적절한 iTIM 및 iCache 및 모든 N개의 방식에 대한 위치 상태를 설정하도록 구성되는 것인 프로세서.
- 제1항에 있어서, 상기 액세스 예측 로직은 또한, 캐시 미스(cache miss)의 경우에 다음 명령어에 대해 상기 iCache 및 다른 방식에 대한 위치 상태를 설정하도록 구성되는 것인 프로세서.
- 제1항에 있어서, 상기 액세스 예측 로직은 또한, 캐시 미스의 경우에 다음 명령어에 대해 상기 iTIM 및 상기 iCache 및 모든 N개의 방식에 대한 위치 상태를 설정하도록 구성되는 것인 프로세서.
- 제1항에 있어서, 상기 액세스 예측 로직은 또한, 분기 예측 실패의 경우에 다음 명령어에 대해, 상기 iCache 및 모든 N개의 방식, 또는 상기 iTIM 및 상기 iCache 양쪽 모두 및 모든 N개의 방식에 대한 위치 상태를 설정하도록 구성되는 것인 프로세서.
- 제1항에 있어서, 상기 액세스 예측 로직은, 적어도 분기 해상도 프로세싱, 분기 예측 프로세싱, 순차 명령어 로직 프로세싱, 캐시 히트/미스 프로세싱, 이전 프로그램 카운터 값 및 이전 위치 상태에 기초하여 상기 위치 상태를 예측하는 것인 프로세서.
- 메모리 구조체 간의 예측을 위한 방법에 있어서,
위치 상태를 제공하는 단계;
프로그램 카운터 값을 제공하는 단계;
명령어를 페치하기 위하여 N개의 방식 중 특정 방식을 사용하여 명령어 밀접 결합된 메모리(iTIM) 또는 명령어 캐시(iCache) 중 어느 하나를 예측하는 단계;
상기 위치 상태 및 상기 프로그램 카운터 값에 기초하여 상기 예측된 iTIM 또는 iCache 및 특정 방식의 활성화를 인에이블시키는 단계;
다음 명령어에 대한 다음 위치 상태를 예측하기 위해 상기 위치 상태 및 상기 프로그램 카운터 값을 피드백하는 단계; 및
명령어를 리턴시키는 단계
를 포함하는 메모리 구조체 간의 예측을 위한 방법. - 제10항에 있어서,
적어도 상기 프로그램 카운터 값에 기초하여 상기 iTIM 또는 상기 iCache 중 적어도 하나 그리고 상기 특정 방식에 대한 위치 상태를 설정하는 단계를 더 포함하는 메모리 구조체 간의 예측을 위한 방법. - 제10항에 있어서,
다음 프로그램 카운터 값이 상기 인에이블된 iTIM 또는 iCache 및 특정 방식의 어드레스 범위 내에 있을 때, 상기 다음 명령어에 대해 현재 인에이블된 iTIM 또는 iCache 및 특정 방식에 대한 위치 상태를 설정하는 단계를 더 포함하는 메모리 구조체 간의 예측을 위한 방법. - 제10항에 있어서
다음 프로그램 카운터가 현재 인에이블된 iTIM 또는 iCache 및 특정 방식의 어드레스 범위에 의해 규정된 경계와 교차할 때, 상기 다음 명령어에 대해 적절한 iTIM 또는 iCache 및 특정 방식에 대한 위치 상태를 설정하는 단계를 더 포함하는 메모리 구조체 간의 예측을 위한 방법. - 제10항에 있어서,
다음 프로그램 카운터가 현재 인에이블된 iTIM 또는 iCache 및 특정 방식의 어드레스 범위에 의해 규정된 경계와 교차할 때, 상기 다음 명령어에 대해 적절한 iTIM 및 iCache 및 모든 N개의 방식에 대한 위치 상태를 설정하는 단계를 더 포함하는 메모리 구조체 간의 예측을 위한 방법. - 제10항에 있어서,
캐시 미스의 경우에 상기 다음 명령어에 대해 상기 iCache 및 다른 방식에 대한 위치 상태를 설정하는 단계를 더 포함하는 메모리 구조체 간의 예측을 위한 방법. - 제10항에 있어서,
캐시 미스의 경우에 상기 다음 명령어에 대해 상기 iTIM 및 상기 iCache 및 모든 N개의 방식에 대한 위치 상태를 설정하는 단계를 더 포함하는 메모리 구조체 간의 예측을 위한 방법. - 제10항에 있어서,
분기 예측 실패의 경우에 상기 다음 명령어에 대해, 상기 iCache 및 모든 N개의 방식 또는 상기 iTIM 및 상기 iCache 양자 모두 및 모든 N개의 방식에 대한 위치 상태를 설정하는 단계를 더 포함하는 메모리 구조체 간의 예측을 위한 방법. - 제10항에 있어서, 상기 예측은, 적어도 분기 해상도 프로세싱, 분기 예측 프로세싱, 순차 명령어 로직 프로세싱, 캐시 히트/미스 프로세싱, 이전 프로그램 카운터 값 및 이전 위치 상태에 기초하는 것인 메모리 구조체 간의 예측을 위한 방법.
- 프로세서에 있어서,
명령어 밀접 결합된 메모리(iTIM);
N개의 방식을 갖는 명령어 캐시(iCache) - 상기 N은 적어도 하나임 -;
프로그램 카운터 값을 저장하도록 구성된 프로그램 카운터;
위치 상태를 저장하도록 구성된 위치 상태 표시기; 및
상기 위치 상태 및 상기 프로그램 카운터 값에 기초하여 상기 iTIM 또는 상기 iCache 중 하나 및 특정 방식을 인에이블하도록 구성된 인에이블 회로
를 포함하고,
상기 프로세서는 상기 인에이블된 iTIM 또는 iCache 및 특정 방식을 통해 상기 명령어를 페치하도록 구성되는 것인 프로세서. - 제19항에 있어서,
적어도 분기 해상도 프로세싱, 분기 예측 프로세싱, 순차 명령어 로직 프로세싱, 캐시 히트/미스 프로세싱, 이전 프로그램 카운터 값 및 이전 위치 상태에 기초하여 상기 iTIM 또는 상기 iCache 중 적어도 하나 및 상기 특정 방식에 대한 위치 상태를 설정하도록 구성된 다음 위치 상태 로직을 더 포함하는 프로세서.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862785947P | 2018-12-28 | 2018-12-28 | |
US62/785,947 | 2018-12-28 | ||
US16/553,839 | 2019-08-28 | ||
US16/553,839 US11048515B2 (en) | 2018-12-28 | 2019-08-28 | Way predictor and enable logic for instruction tightly-coupled memory and instruction cache |
PCT/US2019/065849 WO2020139564A1 (en) | 2018-12-28 | 2019-12-12 | Instruction tightly-coupled memory and instruction cache access prediction |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20210109014A true KR20210109014A (ko) | 2021-09-03 |
Family
ID=71122803
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020217024102A KR20210109014A (ko) | 2018-12-28 | 2019-12-12 | 명령어 밀접 결합된 메모리 및 명령어 캐시 액세스 예측 |
Country Status (5)
Country | Link |
---|---|
US (2) | US11048515B2 (ko) |
EP (1) | EP3903187A4 (ko) |
KR (1) | KR20210109014A (ko) |
CN (1) | CN113227970A (ko) |
WO (1) | WO2020139564A1 (ko) |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5276882A (en) | 1990-07-27 | 1994-01-04 | International Business Machines Corp. | Subroutine return through branch history table |
US5781752A (en) | 1996-12-26 | 1998-07-14 | Wisconsin Alumni Research Foundation | Table based data speculation circuit for parallel processing computer |
US6199154B1 (en) | 1997-11-17 | 2001-03-06 | Advanced Micro Devices, Inc. | Selecting cache to fetch in multi-level cache system based on fetch address source and pre-fetching additional data to the cache for future access |
US6026479A (en) * | 1998-04-22 | 2000-02-15 | Hewlett-Packard Company | Apparatus and method for efficient switching of CPU mode between regions of high instruction level parallism and low instruction level parallism in computer programs |
US7941647B2 (en) | 1999-01-28 | 2011-05-10 | Ati Technologies Ulc | Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination |
US20060248319A1 (en) | 2002-02-05 | 2006-11-02 | Sun Microsystems, Inc. | Validating branch resolution to avoid mis-steering instruction fetch |
US7406569B2 (en) * | 2002-08-12 | 2008-07-29 | Nxp B.V. | Instruction cache way prediction for jump targets |
KR100955284B1 (ko) | 2002-11-18 | 2010-04-30 | 에이알엠 리미티드 | 보안 모드와 비보안 모드 사이의 프로세서 전환하는 데이터 처리장치, 데이터 처리방법 및 컴퓨터 판독가능한 기록매체 |
US7836288B2 (en) | 2004-09-14 | 2010-11-16 | Arm Limited | Branch prediction mechanism including a branch prediction memory and a branch prediction cache |
KR100688503B1 (ko) | 2004-11-02 | 2007-03-02 | 삼성전자주식회사 | 브랜치 목적 어드레스를 이용하여 캐쉬 웨이를 예측하는프로세서 및 그 방법 |
US7562191B2 (en) * | 2005-11-15 | 2009-07-14 | Mips Technologies, Inc. | Microprocessor having a power-saving instruction cache way predictor and instruction replacement scheme |
US7900019B2 (en) | 2006-05-01 | 2011-03-01 | Arm Limited | Data access target predictions in a data processing system |
US8225046B2 (en) * | 2006-09-29 | 2012-07-17 | Intel Corporation | Method and apparatus for saving power by efficiently disabling ways for a set-associative cache |
US8117403B2 (en) | 2007-05-14 | 2012-02-14 | International Business Machines Corporation | Transactional memory system which employs thread assists using address history tables |
US9779367B2 (en) | 2007-08-30 | 2017-10-03 | Software Ag Usa, Inc. | System, method and computer program product for generating key performance indicators in a business process monitor |
US8392651B2 (en) * | 2008-08-20 | 2013-03-05 | Mips Technologies, Inc. | Data cache way prediction |
US7814299B2 (en) | 2008-11-20 | 2010-10-12 | International Business Machines Corporation | Designating operands with fewer bits in instruction code by indexing into destination register history table for each thread |
US8745362B2 (en) | 2010-06-25 | 2014-06-03 | International Business Machines Corporation | Operating system aware branch predictor using a dynamically reconfigurable branch history table |
US9122873B2 (en) | 2012-09-14 | 2015-09-01 | The Research Foundation For The State University Of New York | Continuous run-time validation of program execution: a practical approach |
US9311098B2 (en) * | 2013-05-07 | 2016-04-12 | Apple Inc. | Mechanism for reducing cache power consumption using cache way prediction |
US9465616B2 (en) * | 2013-10-06 | 2016-10-11 | Synopsys, Inc. | Instruction cache with way prediction |
GB2537357A (en) * | 2015-04-09 | 2016-10-19 | Imagination Tech Ltd | Cache operation in a multi-threaded processor |
US9870339B2 (en) | 2015-06-26 | 2018-01-16 | Intel Corporation | Hardware processors and methods for tightly-coupled heterogeneous computing |
-
2019
- 2019-08-28 US US16/553,839 patent/US11048515B2/en active Active
- 2019-12-12 US US17/418,933 patent/US11687342B2/en active Active
- 2019-12-12 CN CN201980085798.5A patent/CN113227970A/zh active Pending
- 2019-12-12 EP EP19904132.8A patent/EP3903187A4/en active Pending
- 2019-12-12 KR KR1020217024102A patent/KR20210109014A/ko not_active Application Discontinuation
- 2019-12-12 WO PCT/US2019/065849 patent/WO2020139564A1/en unknown
Also Published As
Publication number | Publication date |
---|---|
US11048515B2 (en) | 2021-06-29 |
EP3903187A4 (en) | 2022-10-05 |
US20220083340A1 (en) | 2022-03-17 |
CN113227970A (zh) | 2021-08-06 |
WO2020139564A1 (en) | 2020-07-02 |
US11687342B2 (en) | 2023-06-27 |
EP3903187A1 (en) | 2021-11-03 |
US20200210189A1 (en) | 2020-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10248570B2 (en) | Methods, systems and apparatus for predicting the way of a set associative cache | |
US10664280B2 (en) | Fetch ahead branch target buffer | |
US8578141B2 (en) | Loop predictor and method for instruction fetching using a loop predictor | |
KR20180039537A (ko) | 조건부 분기 예측기 인덱스를 생성하기 위해 명령어 블록 인출 어드레스 및 분기 패턴의 해싱에서 다수의 바이트 오프셋을 사용하는 분기 예측기 | |
TW201423584A (zh) | 提取寬度預測器 | |
JP5231403B2 (ja) | スライドウィンドウブロックベースの分岐ターゲットアドレスキャッシュ | |
US10642619B2 (en) | Branch prediction using multi-way pattern history table (PHT) and global path vector (GPV) | |
JP2018528532A (ja) | 命令符号化に基づくプリフェッチ命令の決定 | |
JP2009536770A (ja) | ブロックに基づく分岐先アドレスキャッシュ | |
JP2016536665A (ja) | 推論的ベクトル演算の実行を制御するためのデータ処理装置及び方法 | |
US8909907B2 (en) | Reducing branch prediction latency using a branch target buffer with a most recently used column prediction | |
US9395985B2 (en) | Efficient central processing unit (CPU) return address and instruction cache | |
US20200285477A1 (en) | Branch predictor | |
TW201905683A (zh) | 多標籤分支預測表 | |
CN112740175A (zh) | 基于加载路径历史的分支预测 | |
US9135011B2 (en) | Next branch table for use with a branch predictor | |
US11687342B2 (en) | Way predictor and enable logic for instruction tightly-coupled memory and instruction cache | |
JP2018200545A (ja) | プロセッサ装置 | |
KR20220154821A (ko) | 프로세서 파이프라인에서 간접 점프의 페치 스테이지 처리 | |
US11151054B2 (en) | Speculative address translation requests pertaining to instruction cache misses | |
CN111124494B (zh) | 一种cpu中加速无条件跳转的方法及电路 | |
JP4002288B2 (ja) | 情報処理装置 | |
JP2007317083A (ja) | マイクロプロセッサおよびパイプライン制御方法 | |
US20060112262A1 (en) | Branch prediction of unconditionally executed branch instructions | |
WO2022187012A1 (en) | Processor branch prediction circuit employing back-invalidation of prediction cache entries based on decoded branch instructions and related methods |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal |