KR20190092245A - 엣지 특성이 검증된 마이크로 분기 타깃 버퍼를 이용하여 컴퓨터 프로세서의 전력 소모를 감소시키는 시스템 및 방법 - Google Patents

엣지 특성이 검증된 마이크로 분기 타깃 버퍼를 이용하여 컴퓨터 프로세서의 전력 소모를 감소시키는 시스템 및 방법 Download PDF

Info

Publication number
KR20190092245A
KR20190092245A KR1020180156412A KR20180156412A KR20190092245A KR 20190092245 A KR20190092245 A KR 20190092245A KR 1020180156412 A KR1020180156412 A KR 1020180156412A KR 20180156412 A KR20180156412 A KR 20180156412A KR 20190092245 A KR20190092245 A KR 20190092245A
Authority
KR
South Korea
Prior art keywords
branch
target buffer
micro
instruction
branch target
Prior art date
Application number
KR1020180156412A
Other languages
English (en)
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 KR20190092245A publication Critical patent/KR20190092245A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • 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
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3293Power saving characterised by the action undertaken by switching to a less power-consuming processor, e.g. sub-CPU
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3246Power saving characterised by the action undertaken by software initiated power-off
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • G06F9/381Loop buffering
    • 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/0864Addressing 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
    • 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/1024Latency reduction
    • 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/1028Power efficiency
    • 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/608Details relating to cache mapping
    • G06F2212/6082Way prediction in set-associative cache
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management
    • Y02D10/122

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

하나의 일반적인 측면에 따라, 장치는 주 분기 타깃 버퍼를 포함하는 프론트 엔드 로직 섹션을 포함할 수 있다. 장치는 또한 주 분기 타깃 버퍼와 분리되고, 그리고 분기 명령어와 관련된 예측 정보를 생성하고 그리고 하나 이상의 조건들이 만족되면 검증된 것으로 예측 정보를 표시하도록 구성되는 마이크로 분기 타깃 버퍼를 포함할 수 있다. 프론트 엔드 로직 섹션은 예측 정보가 이전에 검증된 것으로 표시되는 것을 야기하는 마이크로 분기 타깃 버퍼에 의해 데이터가 저장되면 적어도 부분적으로 파워 다운되도록 구성된다.

Description

엣지 특성이 검증된 마이크로 분기 타깃 버퍼를 이용하여 컴퓨터 프로세서의 전력 소모를 감소시키는 시스템 및 방법{SYSTEM AND METHOD OF REDUCING COMPUTER PROCESSOR POWER CONSUMPTION USING MICRO-BTB VERIFIED EDGE FEATURE}
본 설명은 컴퓨터 구조에 관한 것으로, 좀 더 구체적으로, 엣지 특성이 검증된 마이크로 분기 타깃 버퍼를 이용하여 컴퓨터 프로세서의 전력 소모를 감소시키는 시스템 및 방법에 관한 것이다.
CPU(central processing unit)들은 성능을 향상시키기(boosting) 위해 프로세싱 파이프라인(pipeline)에서 초기에 분기 명령어들의 방향과 타깃(target; 목적지)을 일반적으로 예측한다. 분기 명령어의 유형, 위치, 및 타깃에 관한 정보는, 명령어 페치 주소(instruction fetch address)를 이용하여 접근되고, 그리고 CAM(content addressable memory)을 이용하여 분기 타깃 버퍼(branch target buffer; BTB)가 현재 페치 윈도우(fetch window)로 매핑(mapping; 또는 연결)하는 분기를 포함하는지를 검출하는 분기 타깃 버퍼 내에 일반적으로 캐시(cache)된다. 분기 타깃 버퍼는 또한 집합 연관(set associative) 구조를 이용하여 분기 타깃 버퍼가 현재 페치 윈도우로 매핑하는 분기를 포함하는지를 검출할 수 있다. 종래의 분기 타깃 버퍼는 일반적으로 큰 구조이고, 그리고 분기 방향 예측기와 결합될 때, 예측되고 취해진(predicted-taken; 예측되고 테이큰된 또는 예측되고 분기된으로도 지칭될 수 있음) 분기에 대한 적어도 하나의 싸이클 패널티(cycle penalty; 즉, 버블(bubble))를 야기한다. 경우에 따라서, 종래의 분기 타깃 버퍼는 심지어 예측되고 취해지지 않은(predicted not-taken; 예측되고 낫 테이큰된 또는 예측되고 분기되지 않은으로도 지칭될 수 있음) 분기에 대한 패널티를 초래할 수 있다.
예측되고 분기된 분기의 버블을 숨기기 위해 루프 버퍼(loop buffer) 또는 유사한 구조를 이용하여 패널티를 다루기 위한 일부 시도들이 있었으나, 이러한 접근법들은 제한이 있다. 루프 버퍼들은 단지 분기 명령어들이 아닌, 루프 내 명령어들 전부가 루프 버퍼에 들어 맞는 것을 요구한다. 조건부 분기 예측기를 포함하지 않는 작고 간단한 분기 타깃 버퍼들은 동적 결과들을 갖는 분기들을 정확하게 예측할 수 없고 그리고 성능 및 에너지 낭비를 야기할 것이다. 또한, 링크(link)들을 사용하지 않는 작고 간단한 분기 타깃 버퍼들은 CAM 동작들 상에서 에너지를 낭비할 것이다.
본 발명은 상술한 기술적 과제를 해결하기 위한 것으로, 본 발명은 엣지 특성이 검증된 마이크로 분기 타깃 버퍼를 이용하여 컴퓨터 프로세서의 전력 소모를 감소시키는 시스템 및 방법을 제공할 수 있다.
하나의 일반적인 측면에 따라, 장치는 주 분기 타깃 버퍼를 포함하는 프론트 엔드 로직 섹션을 포함할 수 있다. 장치는 또한 주 분기 타깃 버퍼와 분리되고, 그리고 분기 명령어와 관련된 예측 정보를 생성하고 그리고 하나 이상의 조건들이 만족되면 검증된 것으로 예측 정보를 표시하도록 구성되는 마이크로 분기 타깃 버퍼를 포함할 수 있다. 프론트 엔드 로직 섹션은 예측 정보가 이전에 검증된 것으로 표시되는 것을 야기하는 마이크로 분기 타깃 버퍼에 의해 데이터가 저장되면 적어도 부분적으로 파워 다운되도록 구성된다.
하나의 다른 일반적인 측면에 따라, 장치는 주 분기 타깃 버퍼를 포함하는 프론트 엔드 로직 섹션을 포함할 수 있다. 장치는 또한 주 분기 타깃 버퍼와 분리되고, 그리고 서브루틴 콜 명령어와 관련된 예측 정보를 생성하고 그리고 하나 이상의 조건들이 만족되면 검증된 것으로 예측 정보를 표시하도록 구성되는 마이크로 분기 타깃 버퍼를 포함할 수 있다. 프론트 엔드 로직 섹션은 예측 정보가 이전에 검증된 것으로 표시되는 것을 야기하는 마이크로 분기 타깃 버퍼에 의해 데이터가 저장되면 적어도 부분적으로 파워 다운되도록 구성된다.
하나 이상의 구현들의 세부 사항은 첨부 도면들 및 이하의 설명에서 제공된다. 다른 특징들은 상세한 설명 및 도면들, 및 청구 범위로부터 명백 할 것이다.
청구 범위에서 더 완전하게 제공되는 바와 같이, 도면들 중 적어도 하나와 관련하여 설명되고 그리고/또는 도시되는 것과 같이, 시스템 및/또는 컴퓨터 구조에 대한 방법, 좀 더 구체적으로, 마이크로 분기 타깃 버퍼를 이용하여 컴퓨터 프로세서의 전력 소모를 줄이기 위한 시스템 및 방법.
본 발명의 실시 예에 따르면, 프론트 엔드 로직 섹션의 전력 소모가 감소할 수 있다.
도 1은 게시된 주제에 따른 시스템의 예시적인 실시 예의 블록도이다.
도 2는 게시된 주제에 따른 시스템의 예시적인 실시 예의 블록도이다.
도 3은 게시된 주제에 따른 시스템의 예시적인 실시 예의 블록도이다.
도 4a는 게시된 주제에 따른 기술의 예시적인 실시 예의 순서도이다.
도 4b는 게시된 주제에 따른 기술의 예시적인 실시 예의 순서도이다.
도 5는 게시된 주제의 원리들에 다라 형성되는 장치들을 포함할 수 있는 정보 처리 시스템의 도식적인 블록도이다.
다양한 도면들에서 유사한 참조 번호들은 유사한 구성 요소들을 나타낸다.
본 출원은 2016년 2월 18일 출원된 미국공개특허공보 제2017/0068539호(제목: HIGH PERFORMANCE ZERO BUBBLE CONDITIONAL BRANCH PREDICTION USING MICRO BRANCH TARGET BUFFER)의 내용을 참조로서 포함한다.
일부 예시적인 실시 예들이 도시된 이하 첨부된 도면들을 참조하여 예시적인 다양한 실시 예들이 상세하게 설명될 것이다. 그러나, 본 게시된 주제는 많은 다른 형태들로 구체화될 수 있고 본문에 제시된 예시적인 실시 예들에 한정되는 것으로는 해석되어서는 안 된다. 오히려, 이러한 예시적인 실시 예들은 본 게시가 철저하고 완전해질 수 있도록 제공되고, 그리고 본 게시된 주제의 범위를 당업자에게 완전히 전달할 것이다. 도면들에서, 층들 및 영역들의 크기들 및 상대적인 크기들은 명료함을 위해 과장될 수 있다.
구성 요소 또는 층이 다른 구성 요소 또는 층의 “위에”, “연결된”, 또는 “결합된” 것으로 언급되면, 다른 구성 요소 또는 층,에 직접적으로 위에, 연결된, 또는 결합된 것일 수 있거나 또는 중간 구성 요소들 또는 층들이 존재할 수 있는 것으로 이해될 것이다. 대조적으로, 구성 요소가 다른 구성 요소 또는 층의 “직접적으로 위에”, “직접적으로 연결된”, 또는 “직접적으로 결합된” 것으로서 언급되면, 중간 구성 요소들 또는 층들이 존재하지 않는다. 유사한 참조 번호들은 유사한 구성 요소들을 지칭한다. 본문에서 사용된 바와 같이, “및/또는” 용어는 하나 이상의 관련되어 열거된 아이템들의 임의의 모든 조합들을 포함한다.
제 1, 제 2, 제 3 등의 용어들이 구성 요소들, 부품들, 영역들, 층들, 및/또는 섹션들을 설명하는데 본문에서 사용될 것이나, 이들 구성 요소들, 부품들, 영역들, 층들, 및/또는 섹션들은 이러한 용어들에 의해 한정되지 않는 것으로 이해될 것이다. 이들 용어들은 단지 하나의 구성 요소, 부품, 영역, 층, 또는 섹션을 다른 다른 영역, 층, 또는 섹션과 구별하는데 사용된다. 따라서, 이하에서 논의되는 제 1 구성 요소, 부품, 영역, 층, 또는 섹션은 본 게시된 주제의 교시들을 벗어나지 않고 제 2 구성 요소, 부품, 영역, 층, 또는 섹션으로 지칭될 수 있다.
”아래”, “아래의”, “하부”, “상부”, “위의” 등과 같은 공간적으로 상대적인 용어들은, 도면들에서 도시된 것과 같이 다른 구성 요소(들) 또는 특징(들)에 대한 하나의 구성 요소 또는 특징의 관계를 쉽게 설명하기 위해 본문에서 사용될 수 있다. 공간적으로 상대적인 용어들은 도면들에서 도시된 방향에 부가되어 사용 또는 동작 시 장치의 다른 방향들을 포함하도록 의도된 것으로 이해될 것이다. 예를 들어, 도면들의 장치가 뒤집히면, 다른 구성 요소들 또는 특징들의 “아래” 또는 “아래의”로서 설명된 구성 요소들은 다른 구성 요소들 또는 특징들의 “위에”를 배향될 것이다. 따라서, “아래”의 예시적인 용어는 위 및 아래의 방향 모두를 포함할 수 있다. 장치는 다른 방식으로 배향될 수 있고(90도 또는 다른 배향으로 회전될 수 있음) 그리고 본문에서 사용된 공간적으로 상대적인 기술어들은 그에 따라 해석될 수 있다.
유사하게, “하이(high)”, “로우(low)”, “풀 업(pull up)”, “풀 다운(pull down)”, “1”, “0” 등과 같은 전기적 용어들은 도면들에서 도시된 것과 같이 다른 전압 레벨들 또는 다른 구성 요소(들) 또는 특징(들)에 관한 전압 레벨 또는 전류를 쉽게 설명하기 위해 본문에서 사용될 수 있다. 전기적 상대적인 용어들은 도면들에 도시된 전압들 또는 전류들에 더해 사용 또는 동작 시 장치의 다른 레퍼런스(reference) 전압들을 포함하도록 의도된 것으로 이해될 것이다. 예를 들어, 도면들에서 장치 또는 신호들이 반전되거나 또는 레퍼런스 전압들, 전류들, 또는 전하들을 사용하면, “하이” 또는 “풀 업”으로서 설명된 구성 요소들은 새로운 레퍼런스 전압 또는 전류와 비교하여 “로우” 또는 “풀 다운”일 수 있다. 따라서, 예시적인 용어 “하이”는 상대적으로 낮거나 높은 전압 또는 전류 모두를 포함할 수 있다. 장치는 다른 레퍼런스의 전기 프레임들에 기초할 수 있고, 그리고 본문에서 사용된 전기적 상대적인 기술어는 그에 따라 해석되어야 한다..
본문에서 사용된 용어는 단지 특정한 예시적인 실시 예들을 설명하기 위한 것이고 본 게시된 주제를 한정하려 의도된 것은 아니다. 본문에서 사용된 단수 형태들은 문맥 상 명백히 다르게 나타내지 않는 한 복수 형태들을 포함하는 것으로 의도된다. 본 명세서에서 사용되는 용어들 "포함" 및/또는 "포함하는"은 언급된 특징들, 정수들, 단계들, 동작들, 구성 요소들 및/또는 부품들의 존재를 나타내지만, 하나 이상의 다른 특징들, 정수들, 단계들, 동작들, 구성 요소들, 부품들 및/또는 그것들의 그룹들의 존재 또는 추가를 제외하지 않는 것으로 이해될 것이다.
예시적인 실시 예들은 이상적인 예시적인 실시 예들의 개략도들(그리고 중간 구조)인 단면도들을 참조하여 본문에서 설명된다. 이와 같이, 예를 들어, 제조 기술들 및/또는 허용 오차들과 같은 결과로서 도시들의 형상들로부터의 변형들이 예측된다. 따라서, 예시적인 실시 예들은 본문에서 도시된 영역들의 특정한 형태들로 한정되는 것으로 해석되어서는 안되며 예를 들어 제조로부터 야기되는 형태들의 편차들을 포함해야 한다. 예를 들어, 직사각형으로서 도시된 주입된 영역은 전형적으로 주입된 영역에서부터 주입되지 않은 영역으로의 이진 변화라기 보다는 둥근 또는 곡선의 특징들 및/또는 모서리들에의 주입 농도의 기울기를 가질 것이다. 유사하게, 주입에 의하여 형성된 매립된 영역은 매립된 영역과 주입이 발생한 표면 사이의 일부 주입을 야기할 수 있다. 따라서, 도면들에 도시된 영역들은 본질적으로 개략적이고 그것들의 형상들은 장치의 영역의 실제 형상을 설명하기 위한 것이 아니며 본 게시된 주제의 범위를 한정하려는 것이 아니다.
달리 정의되지 않는 한, 본문에서 사용된 (기술적 및 과학적 용어들을 포함하는) 모든 용어들은 당업자에 의해 일반적으로 이해되는 것과 동일한 의미를 갖는다. 또한, 사전에서 정의된 일반적으로 사용되는 것과 같은 용어들은 관련 기술의 맥락에서 그것의 의미와 일치하는 의미를 갖는 것으로 해석되어야 하고, 본문에서 명시적으로 정의되지 않는 한 이상적인 또는 지나치게 형식적인 의미로 해석되지 않을 것이다.
이하, 예시적인 실시 예들이 첨부 도면들을 참조하여 상세하게 설명될 것이다.
도 1은 게시된 주제에 따른 시스템(100)의 예시적인 실시 예의 블록도이다. 다양한 실시 예들에서, 시스템(100)은 예를 들어, 프로세서, SoC(system-on-a-chip), 랩탑(laptop), 데스트탑(desktop), 워크스테이션(workstation), PDA(personal digital assistant), 스마트폰, 태블릿(tablet), 및 다른 적절한 컴퓨터들 또는 가상 머신(virtual machine) 또는 그것의 가상 컴퓨팅(computing) 장치와 같은 컴퓨팅 장치를 포함할 수 있다. 다양한 실시 예들에서, 시스템(100)은 다양한 파이프라인(pipeline) 스테이지(stage)들을 포함하는 파이프라인 구조를 이용할 수 있다.
이러한 실시 예에 있어서, 파이프라인의 일부는 시스템(100)에 의해 차례로 처리되는 명령어들을 페치(fetch)하도록 구성되는 페치 로직 회로(fetch logic circuit; 102)를 포함할 수 있다. 현재 (적어도 그것의 파이프 스테이지에 대한) 명령어는 프로그램 카운터(program counter; PC, 112) 내에서 유지(hold)되거나 참조될 수 있다. 일반적으로, 명령어들이, 하나 이후에 다른 하나가, 순차적으로 페치되면, 프로그램 카운터(112)는 증가한다. 그러나, 때때로, 프로그램은 순차적으로 진행되지 않고 새로운 위치로 점프하거나 분기한다. 일반적으로, 일반적인 유형들의 분기 명령어들은 IF 문들, 루프(Loop)들, 서브루틴(subroutine)들 콜(call)들 또는 리턴(return)들 등을 포함한다. 본질적으로 프로그램은 실행 경로의 분기점(fork)에 도달하고 그리고 어느 경로로 분기해야 하는지를 결정해야 한다.
시스템(100)의 파이프라인 특성으로 인하여 이것은 매우 큰 비용이 소요될 수 있다. 프로그램이 루프를 계속해야 하는지 또는 그것에서 벗어나야 하는지? IF 문이 참인지 거짓인지? 이러한 선택들은 일반적으로 취해진(Taken) 또는 취해지지 않은(Not taken) 분기로서 지칭된다. 시스템(100)은 분기 명령어가 해결될 때까지 모든 실행을 중단할 수 있다. 그러나, 시스템(100)이 분기 명령어가 어떻게 해결될지를 예측하고 그 다음 투기적으로(speculatively) 예측된 경로를 실행하는 것이 더 유리하다. 예측이 정확하면, 그러면 시스템(100)은 항상 낭비하지 않는다. 예측이 정확하지 않으면, 시스템(100)은 그것의 투기적인 작업 모두를 무효화하고, 부정확하게 예측된 분기 명령어에 대한 머신(machine)을 되감고(rewind) 그리고 다른 실행 경로를 진행해야 한다. 결과적으로, 예측의 정확도를 증가시키는 것이 매우 필요하다.
이것을 하기 위한 하나의 기술은 분기 타깃 버퍼(branch target buffer; BTB)이다. 분기 타깃 버퍼는 명령어 주소(일반적으로 현재 프로그램 카운터(112))에 의해 주소 지정이 가능한 메모리이고 분기 명령어가 (취해진/취해지지 않음으로서, 또는 분기의 타깃 어드레스로서) 마지막으로 마주쳤을 때 분기 명령어가 해결된 방법을 설명한다. 이렇게 하여 프론트 엔드 논리 섹션(front end logic section; 108, 또는 프론트 엔드 논리 회로들)은 분기 명령어의 해결 및 진행을 빠르게 예측할 수 있다.
도시된 실시 예에 있어서, 시스템(100)은 상대적으로 큰 개수의 가능한 주소들(분기 명령어들) 수용하도록 크기가 일반적으로 조정되고 그리고 상대적으로 빠른 기간에 원하는 예측을 여전히 리턴할 수 있는 주 분기 타깃 버퍼(104; mBTB)를 포함할 수 있다. 다양한 실시 예들에 있어서, 크기는 상이할 수 있으나, 속도와 크기 간의 일반적인 트레이드오프(tradeoff; 혹은 균형)가 이해된다. 전술한대로, 주 분기 타깃 버퍼(104)는 분기 명령어의 주소, 타깃 명령어의 주소, 및 유효 비트 또는 플래그(flag)를 포함하는 표 또는 데이터 구조를 포함할 수 있다. 이러한 실시 예에 있어서, 유효 비트 또는 플래그는 데이터가 분명하게(explicitly) 주 분기 타깃 버퍼(104)에 쓰여진 것을 나타낼 수 있고 그리고 그것은 사용 가능한 것으로서 취급되어야 한다. 유효 비트는 (의미가 없는 것으로 가정된, 예를 들어, 이전 프로그램의 실행, 시스템 개시(start-up)로부터 리셋되지 않은 랜덤(random) 비트들로부터의) 무효 데이터와 (의미를 갖는 것으로 신뢰될 수 있는) 유효 데이터를 구별한다.
페치 로직(102)은 주 분기 타깃 버퍼(104)에 의해 표시된 타깃 명령어를 페치하거나 회수할 수 있다. 다양한 실시 예들에 있어서, 이것은 명령어들을 저장하도록 구성되는, L1(level-1) 명령어 캐시(아이캐시(i-cache 또는 iCache); 120)와 같은 캐시로부터 타깃 명령어를 요청하는 것을 포함할 수 있다. 이러한 실시 예에 있어서, L1 아이캐시는 일련의 태그들(124)을 포함할 수 있고 L1 변환 색인 버퍼(translation look-aside buffer; TLB, 122)와 관련될 수 있다. 다양한 실시 예들에서, 다른 또는 다수의 캐시 레벨들이 사용될 수 있다. 전술한 내용은 게시된 주제를 한정하지 않는 단지 하나의 실례가 되는 예시인 것으로 이해된다.
예측된 타깃 명령어가 시스템(100)의 파이프라인을 통해 진행됨에 따라, 비교 로직(106)은 예측이 정확했었는지를 판단하도록 구성될 수 있다. CPU들(computer processing units, 예를 들어, 시스템(100))은 명령어 변환 색인 버퍼들(예를 들어, L1 TLB(122)) 및 L1 명령어 캐시 태그들(124)을 일반적으로 이용하여 적절한 명령어들이 프론트 엔드에서 코어로 제공되고 있는 것을 검증한다. 분기 명령어가 주 분기 타깃 버퍼(104)에 의해 예측된 경로를 취하는가? 대답에 기초하여, 주 분기 타깃 버퍼 내의 타깃 주소가 업데이트될 수 있다.
또한, 도시된 실시 예에 있어서, 시스템(100)은 서브루틴 콜을 포함하는 분기 명령어들을 위한 리턴 주소 스택(return address stack; RAS, 107)을 포함할 수 있다. 서브루틴 콜이 발생할 때 서브루틴의 리턴 주소는 스택(107)으로 푸쉬(push; 또는 삽입)될 수 있다. 서브루틴이 완료되고 (다른 분기 명령어를 통해) 리턴하면 그 리턴 주소는 스택에서 나올 수 있고 타깃 주소로 사용될 수 있다.
불행하게도, 프론트 엔드 로직 섹션(108)의 구성 요소들은 전력을 소모한다. It 가능한 자주, 가능한 많이 프론트 엔드 로직 섹션(108)이 전력을 줄이고(de-power), 파워 다운(power down)하고, 또는 턴 오프하는 것이 바람직할 것이다.
이를 위한 일반적인 방법들은: (1) 명령어 페치가 변환 색인 버퍼(122)에서 히트(hit)인 마지막 페이지에 갇힌 동안은 명령어 변환 색인 버퍼(122)를 파워 업(powering up)하지 않는 것; (2) 루프 버퍼 내 작은 루프들을 캡처하고(capturing) 그리고 루프 버퍼, 변환 색인 버퍼(122), 및 L1 명령어 태그 어레이들(124)에서 히트인 모든 명령어들과 함께 루프를 처음 통과한 후에 파워 다운되는 변환 색인 버퍼(122) 및 L1 명령어 태그들(124)과 함께 버퍼에서 나오는 명령어들을 페치하는 것; 그리고 (3) L1 명령어 캐시(120)에서 가장 최근에 사용된 N(개) 라인들이 N-엔트리 L0 명령어 캐시에서 저장될 수 있는 것을 포함한다.
반대로, 도시된 실시 예에 있어서, 마이크로 분기 타깃 버퍼(114; uBTB 또는 μBTB)가 상술한 것에 대신하여, 또는 상술한 것 또는 다른 기술들에 더해 사용될 수 있다. 아래에서 보여진 바와 같이 마이크로 분기 타깃 버퍼(114)의 사용은 통상적인 기술들과 상이할 수 있다: 명령어 변환 색인 버퍼(122) 및 L1 명령어 캐시(120)에 의해 다뤄지는(cover) 임의의 큰 개수의 L1 명령어 캐시(120) 라인들 및 변환 색인 버퍼(122) 엔트리(entry)들로 매핑하는 마이크로 분기 타깃 버퍼(114)에 의해 개별 기본 블록 또는 블록들의 그룹이 다뤄지더라도, 기본 주소 블록들은 검증된 것으로서 표시(mark)될 수 있다; 전술한 선택 #2(방법 (2))와 달리, 게시된 주제는 작은 루프 버퍼에서 캡처될 수 있는 루프들로 한정되지 않는다; 그리고 전술한 선택 #3(방법 (3))과 달리, 게시된 주제는 L0 명령어 캐시에서 캡처될 수 있는 작은 개수의 L1 명령어 캐시(120) 라인들로 한정되지 않는다. 다양한 실시 예들에 있어서, 게시된 주제는 마이크로 분기 타깃 버퍼(114)에 의해 다뤄지는 기본 블록들이 충분히 크면 L1 명령어 캐시(120, 예를 들어 64 kilobytes)를 다룰 수 있다.
이러한 실시 예에 있어서, 마이크로 분기 타깃 버퍼(114)는 주 분기 타깃 버퍼(104)보다 작은 분기 타깃 버퍼를 포함할 수 있고, 그러므로 더 빠르고 전력을 덜 소비할 수 있다. 마이크로 분기 타깃 버퍼(114)의 구조 내부의 상세한 사항은 도 2와 관련하여 논의된다. 도시된 실시 예에 있어서, 마이크로 분기 타깃 버퍼(114)는 시스템(100)의 프론트 엔드 로직 섹션(108)에 의해 수신될 수 있는 예측 정보를 제공할 수 있다. 마이크로 분기 타깃 버퍼(114) 내의 정보(특히 예측 정보)가 정확한 것으로 검증될 때, 프론트 엔드 로직 섹션(108)의 일부는 파워 다운될 수 있고, 그리고 마이크로 분기 타깃 버퍼(114)는 타깃 명령어들을 예측하는데 신뢰할 수 있다. 다양한 실시 예들에 있어서, 파워 다운될 수 있는 (프론트 엔드 로직 섹션(108)의) 일부는 변환 색인 버퍼(122), L1 명령어 캐시 풀-태그(full-tag) 또는 마이크로-태그 어레이들(micro-tag arrays; 124), 또는 태그 비교 로직 또는 분기 타깃 주소 검증 로직(106)을 포함할 수 있다. 다른 실시 예에 있어서, 웨이 예측 로직에 의해 예측된 L1 명령어 캐시 웨이만 파워 업될 수 있다. 전술한 내용은 게시된 주제를 한정하지 않는 단지 몇 가지 실례가 되는 예시들인 것으로 이해된다.
이와 관련하여, “유효(Valid)” 및 “검증된(Verified)” 용어들은 분리된 그리고 별개의 용어들로서 사용되는 것을 유의해야 한다. 이와 관련하여, “유효”는 저장된 데이터가 의도적으로 쓰여지고 추가 처리에 사용될 수 있는 데이터를 포함하는 것을 의미한다. 예를 들어, 타깃 명령어가 예측되고 분기 타깃 버퍼에 쓰여지면, 그것은 유효한 것으로 간주된다. 타깃은 궁극적으로 잘못될 수 있으나, 이것은 실제 예측이 이뤄졌고 그리고 데이터를 페치하는데 사용되어야 한다. 이것은 시스템(100)이 파워 업되거나, 또는 더 이상 관련이 없는 이전 프로그램 싸이클로부터의 단지 랜덤 비트들일 수 있는 무효 데이터와 대비된다. 반대로, 이와 관련하여 “검증된”은 데이터(예를 들어, 예측된 타깃)가 의도적으로 쓰여지지 않았으나, 그것이 단지 유효하지는 않지만, 정확할 가능성이 매우 높은 체킹(checking) 및 확인(confirmation)의 수준을 겪은 것을 의미한다.
좀 더 구체적으로, 일부 실시 예들에 있어서, 검증된 것으로 표시된 (명령어 바이트들로부터 계산된) 직접 분기 타깃들은 정확해야 하는데 이는 그들이 검증된 것으로 표시되면 직접 분기 주소 확인 로직이 비활성화(disable)되기(예를 들어, 전력 절감하기 위해) 때문이다. 직접 분기 타깃이 검증된 것으로 표시되고 그것이 정확하지 않으면 프로세서는 부정확한 타깃을 검출하지 않을 것이므로 프로세서는 기능상으로 고장난다. 간접 분기 타깃들(간접 점프들, 간접 서브루틴 콜들 및 서브루틴 리턴들 모두를 포함하는, 레지스터 또는 메모리 값으로부터 계산된 타깃)은 그들의 실제 타깃과 비교되어야 하고 정확한 것으로 검증되어야 하나, 그러나 레지스터들 또는 메모리의 내용이 변경되면 간접 분기 타깃들은 변경될 수 있다. 이러한 실시 예에 있어서, 간접 분기들이 검증된 것으로 표시되고 주소가 검증된 타깃으로부터 변경되면 프론트 엔드를 전용(redirect)함에도 불구하고, 프로세서의 벡 엔드(back-end)가 예측된 타깃을 간접 분기들에 대한 실제 타깃과 비교할 것이므로 이는 수용될 수 있다.
도시된 실시 예에 있어서, 새로운 분기 명령어를 만났을 때, 마이크로 분기 타깃 버퍼(114) 또는 주 분기 타깃 버퍼(104)는 예측된 타깃 주소를 출력한다. 분기 명령어/타깃 명령어 조합을 만난 것은 처음이므로, 예측(또는 좀 더 정확하게 첫 번째 분기 명령어와 그것의 그 다음의 하위(child; 자식) 분기 명령어 간의 링크(link))은 검증된 것으로 간주되지 않는다. 프론트 엔드 로직 섹션(108)은 파워 다운되지 않는다. 대신에 프론트 엔드 로직 섹션(108)은 전술한 모든 체킹 및 보호(safe-guarding)를 수행한다.
체킹 및 보호의 부분으로서, 프론트 엔드 로직 섹션(108)은 예측이 정확하고 경로의 수행이 순조롭게 실행됐는지를 판단한다. 구체적으로, 프론트 엔드 로직 섹션(108)은 하나 이상의 다음의 사항들이 발생하는지를 판단할 수 있다:
● 분기 명령어(상위(parent; 부모) 명령어로도 알려진)가 정확하게 예측되었는지,
● 모든 순차적인 L1 명령어 캐시(120) 접근들이 웨이 예측되고 순차적인 웨이 예측기에 의해 정확하게 예측됐는지,
● 예측되고 취해지지 않은 분기들이어도 마이크로 분기 타깃 버퍼(114) 분기 위치들, 유효성, 및 타깃들 모두가 주 분기 타깃 버퍼(104) 및 분기 타깃 주소 및 분기 위치 검증 로직과 모두 일치하는지(다양한 실시 예들에 있어서, 분기 위치 검증 로직은 마이크로 분기 타깃 버퍼에 의해 예측되지 않았던 직접 분기들을 또한 체크할 수 있다),
● 모든 예측되고 취해진 분기 타깃 L1 명령어 캐시 웨이들이 마이크로 분기 타깃 버퍼(114)에 의해 예측됐는지 그리고 정확하게 예측됐는지; 다양한 실시 예들에 있어서, 타깃 웨이 예측들은 마이크로 분기 타깃 버퍼로부터(예를 들어, 분기에 대한 마이크로 분기 타깃 버퍼 엔트리로부터 또는 분기가 서브루틴 콜이면 분기 타깃 버퍼의 리턴 주소 스택으로부터) 올 수 있다,
● 모든 L1 명령어 캐시(120) 접근들이 마이크로 태그에서 히트인지, 마이크로 태그 히트 웨이(micro-tag hitting way)가 풀(full) 주소 L1 명령어 캐시 태그들(124)과 일치됨,
● 다음 또는 하위 분기 명령어가 정확하게 예측될 때까지 접근된 모든 페이지들에 대한 정확한 승인들로 변환 색인 버퍼(122)가 히트인지; 그리고
● 모든 전술한 체크들이 다음 또는 하위 분기 명령에 대하여도 정확한지 (상위부터(취해진 상위 타깃 및 순차적인 페치들로부터 하위 분기를 포함하는 것까지 또는 취해지지 않은 상위 및 순차적인 페치들로부터 하위 분기를 포함하는 것까지 순차적으로) 하위까지의 모든 페치들이 체크들을 통과하면 상위의 엣지(edge)는 검증되는 것. 상위의 유효성은 하위에 대한 정확한 타깃에 의존하지 않고, 그것은 단지 하위의 페치를 포함하여 모든 체크들을 (그러나 하위의 타깃 또는 타깃 웨이는 아님) 통과할 필요가 있다.
다양한 실시 예들에 있어서, 모든 요구되는 체크들이 충족되면, 마이크로 분기 타깃 버퍼(114)는 그 예측을 검증된 것으로 표시할 수 있다. 이것은 다음의 도면들과 관련하여 좀 더 상세하게 설명되나, 지금은 전반적인 개요가 주어진다.
도시된 실시 예에 있어서, 분기 명령어가 두 번째로 만나면(예를 들어, 루프의 두 번째 반복) 마이크로 분기 타깃 버퍼(114)는 예측을 발행할 수 있고 그 예측은 검증된 것으로 표시되어 있음에 유의한다. 이러한 실시 예에 있어서, 프론트 엔드 로직 섹션(108, 또는 단지 그것의 일부)은 파워 다운될 수 있다. 따라서 상당한 전력 절감이 달성될 수 있다. 예를 들어, 하나의 실시 예에 있어서, 다양한 파워가 필요한 어플리케이션들을 실행할 때, 전체 파워 할당량의 2-2.5%가 절약될 수 있다.
유사하게, 새로운, 검증되지 않은 분기 명령어를 만났을 때, 예측은 잘못될 수 있거나(예를 들어, 루프는 더 이상 반복되지 않으나 중단점(break point)에 도달), 또는 사전에 결정된 마이크로 구조적 이벤트들의 집합 중 하나가 발생하면, 프론트 엔드 로직 섹션(108)은 깨어나거나 파워 업될 수 있다. 다시, 상위/하위 분기 명령어 링크들의 재검증의 과정이 다시 발생할 수 있다.
하나의 특정한 실시 예에 있어서, 마이크로 분기 타깃 버퍼(114)는 128개 엔트리들을 포함할 수 있다. 이러한 실시 예에 있어서, 게시된 주제는, 마이크로 분기 타깃 버퍼(114)에 의해 다뤄지는 기본 블록들이 충분히 크고, 그리고 마이크로 분기 타깃 버퍼(114)가 프로그램 커널 내 모든 분기들을 정확하게 예측 가능하면, 전체 64 KB(kilobyte) 명령어 캐시를 채우는 프로그램 커널(kernel)들을 다룰 수 있다. 이러한 실시 예에 있어서, 이것은 아래에 설명된 대로, 정교한 분기 패턴들, 동적 간접 분기들, 및 서브루틴 콜들 및 리턴들을 갖는 프로그램 커널들을 포함할 수 있다.
도 2는 게시된 주제에 따른 시스템(200)의 예시적인 실시 예의 블록도이다. 다양한 실시 예들에 있어서, 시스템(200)은 마이크로 분기 타깃 버퍼(200)를 포함할 수 있다. 시스템(200)은 전술한대로, 분기 명령어가 취할 적절한 프로그램에 따른 경로를 적어도 부분적으로 예측하도록 구성될 수 있다.
도시된 실시 예에 있어서, 마이크로 분기 타깃 버퍼(200)는 그래프(graph; 204)를 포함할 수 있다. 다양한 실시 예들에 있어서, 그래프(204)는 주어진 프로그램의 가능한 경로들의 구조를 나타내는 데이터 구조일 수 있다. 그래프(204)는 다수의 엔트리들(예를 들어, 64개 엔트리들, 128개 엔트리들)을 포함할 수 있다. 그래프(204)는 두 개 (이상의) 분기 명령어들(예를 들어, 도 3에서 도시된 것과 같이, 상위 분기 명령어(222) 및 그것의 (다양한) 하위 분기 명령어(들)(224)) 간의 경로들, 엣지들, 또는 링크들을 매핑할 수 있다. 이들 두 명령어들(222, 224) 간의 관계는 링크들 또는 엣지들로서 지칭될 수 있다. 링크들 또는 엣지들 각각은 검증된 비트 또는 플래그(226)로 표시될 수 있다. 다양한 실시 예들에 있어서, 검증된 비트 또는 플래그(226)는 링크가 검증되지 않은 것을 또한 나타낼 수 있다.
마이크로 분기 타깃 버퍼(200)는 서브루틴들 콜들에 관한 정보를 저장하도록 구성된 리턴 주소 스택(RAS; 206)을 포함할 수 있다. 다양한 실시 예들에 있어서, 리턴 주소 스택(206)은 메모리 또는 데이터 구조를 포함할 수 있다. 도 4b와 관련하여 좀 더 구체적으로 설명된 대로, 리턴 주소 스택(206)은, 리턴 주소 스택(206) 내 엔트리 당, 그래프(204) 내 상위 명령어 데이터(232)에 대한 포인터 그리고 상위와 관련된 검증된 비트 또는 플래그(236; PARENT_VALID)를 포함할 수 있다. 리턴 주소 스택(206)은 아래에서 설명된 대로 추가 데이터를 포함할 수 있다.
도 3은 게시된 주제에 따른 시스템의 예시적인 실시 예의 블록도이다. 다양한 실시 예들에 있어서, 시스템은 전술한대로, 그래프(300)를 포함할 수 있다. 다양한 실시 예들에 있어서, 그래프(300)는 데이터 구조(예를 들어, 링크된 리스트, 표)로서 저장될 수 있다.
다양한 실시 예들은 각 그래프 엔트리(302)가 하나의 분기 명령어를 나타내는 프로그램 내의 분기들 또는 분기 명령어들의 그래프로 된 또는 표현을 포함할 수 있다. 각 분기(302)는 그래프(300) 내 다음 엔트리 또는 분기를 가리키는, 하나 이상의 그래프 엣지들 또는 링크들(예를 들어, T_LINK(336) 및 N_LINK(337)와 같은 링크들)과 관련될 수 있다.
각 링크는 마이크로 분기 타깃 버퍼의 그래프(300) 내 다른 엔트리 또는 분기(302)로의 포인터(예를 들어, 그래프가 64개 엔트리들을 포함하면 6비트)가 되는 것으로 표현될 수 있다. 이러한 실시 예에 있어서, 링크들은 적은 로직 게이트(logic gate)들, 낮은 레이턴시(latency), 및 감소된 전력 소모와 같은 CAM들에 비해 확실한 이점들을 가질 수 있다. 일반적인 분기들은 그것과 관련된 2개 링크들을 가질 수 있다: 취해진 것(T_LINK) 그리고 취해지지 않은 것(N_LINK). 전술한 내용은 게시된 주제를 한정하지 않는 단지 하나의 실례가 되는 예시인 것으로 이해된다.
각 링크는 검증된 비트 또는 플래그(306)와 관련될 수 있다. 전술한대로, 각 검증된 플래그(306)는 2개 분기 명령어들(302) 간의 경로 또는 엣지가 체크되었는지 또는 증명(certify)되었는지를 나타낼 수 있다.
실례가 되는 예시와 같이, 분기 명령어(332)는 상위 분기 명령어일 수 있다. 이것은 링크들(336, 337)과 관련될 수 있다. 링크(337)는 취해질 수 있고(T_LINK) 분기 명령어(332)로 되돌아간다. 반대로, 링크(336)는 취해지지 않을(N_LINK) 가능성을 나타낼 수 있고 다음 분기 명령어(334)으로 이어질 수 있다(다수의 비분기(non-branch) 명령어들이 개입할 수 있으나, 이들은 그래프(300)에 표시되지 않음). 이 예시에서, 링크(336, N_LINK)에 대해, 분기 명령어(334)은 상위 분기 명령어(332)의 하위 분기 명령어로 간주된다. 유사하게, 링크(337, T_LINK)에 대해, 분기 명령어(332)는 그 자신의 상위 및 하위 모두이다. 전술한 내용은 게시된 주제를 한정하지 않는 단지 하나의 실례가 되는 예시인 것으로 이해된다.
링크들(336, 337) 각각은 그들 자신의 각각의 검증된 플래그들(306)과 관련될 수 있다. 이러한 실시 예에 있어서, 링크(336)는 검증될 수 있고(그리고, 예측되면, 프론트 엔드 로직 섹션의 파워 다운을 야기한다), 그리고 링크(337)는 검증되지 않을 수 있다(그리고, 예측되면, 프론트 엔드 로직 섹션이 파워 업이 유지되거나 파워 업되도록 리턴되는 것을 야기할 수 있다). 다른 실시 예에 있어서, 링크들(336, 337) 모두는 모두 검증될 수 있거나 또는 모두 검증되지 않을 수 있다. 전술한 내용은 게시된 주제를 한정하지 않는 단지 몇 가지 실례가 되는 예시들인 것으로 이해된다.
도 4a는 게시된 주제에 따른 기술(400)의 예시적인 실시 예의 순서도이다. 다양한 실시 예들에 있어서, 기술(400)은 도 1, 도 2, 도 3, 또는 도 5에서와 같은 시스템들에 의해 사용될 수 있거나 만들어질 수 있다. 하지만, 전술한 내용은 게시된 주제를 한정하지 않는 단지 몇 가지 실례가 되는 예시들인 것으로 이해된다. 게시된 주제는 기술(400)에 의해 도시된 동작들의 순서 또는 개수로 한정되지 않는 것으로 이해된다.
블록(402)은 하나의 실시 예에 있어서, 마이크로 분기 타깃 버퍼가 하위 분기 명령어의 타깃 주소를 예측하도록 구성될 수 있는 것을 도시한다.
블록(404)은 하나의 실시 예에 있어서, 마이크로 분기 타깃 버퍼가 이전 상위 분기 명령어를 식별하거나 기억하도록 구성될 수 있는 것을 도시한다. 이러한 실시 예에 있어서, 현재 하위 분기 명령어의 상위가 식별될 수 있다.
블록(406)은 하나의 실시 예에 있어서, 마이크로 분기 타깃 버퍼가, 하위 분기 명령어의 타깃을 예측할 때 그것의 의무를 이행하는 것의 일부로서, 하위 분기 명령어의 예측과 함께, 프론트 엔드 로직 섹션으로, 파이프라인 아래로의 상위 분기 명령어의 표현을 이동하게 하거나, 보내거나, 또는 전송하도록 구성될 수 있는 것을 도시한다. 다양한 실시 예들에 있어서, 상위의 이 표현은 상위 분기 명령어의 그래프 엔트리에 대한 포인터를 포함할 수 있다.
블록들(408, 414, 416)은 하나의 실시 예에 있어서, 프론트 엔드 로직 섹션(또는 그것의 일부)이 상위 분기 명령어가 그것의 타깃을 포함하여 정확하게 예측되었고, 모든 원하는 캐시 관련된 접근들이 매끄럽게 발생했고, 그리고 상위와 하위 간에 마이크로 구조 이벤트들을 정리(clear)하는 것(전술한대로, 마이크로 구조 이벤트를 정리하는 것은 모든 검증된 비트들을 정리하는 것이다)이 발생되지 않았다는 것을 확실히 하도록 구성될 수 있는 것을 도시한다.
블록(408)은 하나의 실시 예에 있어서, 프론트 엔드 로직 섹션(또는 그것의 일부)이 상위 및 하위 분기 명령어들 간에 마이크로 구조 이벤트들을 정리하는 것이 발생되었는지를 판단하도록 구성될 수 있는 것을 도시한다. 다양한 실시 예들에 있어서, 마이크로 구조 이벤트들을 정리하는 것의 리스트(list) 또는 집합은 사전에 결정될 수 있다. 일부 실시 예들에 있어서, 마이크로 구조 이벤트들을 정리하는 것은 하나 이상의 다음의 사항들을 포함할 수 있다:
● 마이크로 분기 타깃 버퍼 내용(contents)을 재설정(resetting);
● 마이크로 분기 타깃 버퍼의 특징이 토글(toggle)되는 것이 가능하거나, 또는 마이크로 분기 타깃 버퍼가 턴 온/오프;
● 마이크로 분기 타깃 버퍼의 검증된 엣지 특징이 토글되는 것이 가능
● 새로운 분기 또는 FAR 분기(즉, 다른 메모리 부분(segment)에 위치하는 서브루틴 콜)의 확장이 마이크로 분기 타깃 버퍼의 그래프 엔트리에 쓰여짐;
● 마이크로 분기 타깃 버퍼의 그래프 엔트리가 다른 엔트리로 이동하거나 무효화;
● 마이크로 분기 타깃 버퍼의 그래프 엔트리가 다른 마이크로 분기 타깃 버퍼의 엔트리로 연결되거나 또는 그것의 타깃 필드가 수정;
● 마이크로 분기 타깃 버퍼의 그래프 엔트리는 FAR 분기 확장이 다른 마이크로 분기 타깃 버퍼의 엔트리로 이동되거나 또는 그것의 타깃 필드가 수정된 것을 나타냄;
● 가능한 프론트 엔드 로직 섹션을 파워 업하여(이것은 분기 타깃 및 위치 검증 로직으로 인한 전용들을 포함), 마이크로 분기 타깃 버퍼의 잘못 예측한(mis-predicting) 분기 또는 임의의 파이프라인을 분기 예측이 잘못된 것을 나타내는 파이프라인 아래로 더 멀리 플러시(flush)함;
● 마이크로 분기 타깃 버퍼의 분기 타깃이 주 분기 타깃 버퍼의 분기 타깃과 맞지 않으면, 분기가 예측되고 취해지지 않더라도;
● 마이크로 분기 타깃 버퍼의 분기 위치가 주 분기 타깃 버퍼의 분기 위치 또는 유효성과 맞지 않으면, 분기가 예측되고 취해지지 않더라도;
● 명령어 변환 색인 버퍼 또는 명령어 캐시 미스가 분기 파이프 라인을 플러시하면;
● 명령어 변환 색인 버퍼의 쓰기 또는 무효화가 발생하거나 또는 해결되지 않으면(outstanding);
● 명령어 캐시 라인의 스누프(snoop)가 해결되지 않거나, 라인이 스누프되거나, 또는 라인이 무효화되면;
● 명령어 캐시 또는 태그의 쓰기가 발생하면; 그리고
● 명령어 캐시 미스 버퍼가 유휴 상태가 아니면.
전술한 내용은 게시된 주제를 한정하지 않는 단지 몇 가지 실례가 되는 예시들인 것으로 이해된다.
블록(410)은 하나의 실시 예에 있어서, 사전에 정의된 또는 사전에 결정된 마이크로 구조 이벤트들의 집합 중 어느 것이 발생하면, 마이크로 분기 타깃 버퍼가 그래프 내의 모든 검증된 비트들 또는 플래그들을 정리하도록 구성될 수 있는 것을 도시한다. 이러한 실시 예에 있어서, 리턴 주소 스택 내의 검증된 비트들 또는 플래그들 그리고 상위 유효 플래그들은 또한 재설정되거나 정리될 수 있다. 또한, 일부 실시 예들에 있어서, 마이크로 분기 타깃 버퍼의 유효 비트들 또는 플래그들의 적어도 일부도 정리될 수 있다. 이러한 실시 예에 있어서, 상위 분기 명령어들과 관련된 유효 비트들 또는 플래그들은 정리되거나 또는 무효인 것으로 설정될 수 있다. 심지어 더욱, 또 다른 실시 예에 있어서, 프론트 엔드의 파이프라인에 이미 있는 임의의 지연중인 검증된 링크 또는 상위 유효 플래그들이 이미 정리될 수 있다. 다양한 실시 예들에 있어서, 이것은 원하는 플래그들을 그들의 디폴트(default) 상태들로 되돌리도록 설정하는 것을 포함할 수 있다. 전술한 내용은 게시된 주제를 한정하지 않는 단지 몇 가지 실례가 되는 예시들인 것으로 이해된다.
블록(412)은 하나의 실시 예에 있어서, 도시된 이벤트들(예를 들어, 블록들(408, 414, 416)이 발생하면, 상위 및 하위 분기 명령어들 간의 링크는 검증된 것으로 표시되지 않을 수 있는 것을 도시한다.
블록(414)은 하나의 실시 예에 있어서, 마이크로 구조 이벤트를 정리하는 것이 발생하지 않으면 상위 분기 명령어 및 하위 분기 명령어 간의 캐시가 활성화(activate)되고 그들이 성공적으로 발생했는지를 판단할 수 있도록 체크될 수 있는 것을 도시한다. 다양한 실시 예들에 있어서, 이것은 프론트 엔드 로직 섹션에 의해 이뤄질 수 있다. 하나의 실시 예에 있어서, 이것은 하나 이상의 다음의 체크들을 포함할 수 있다: 상위 분기 명령어가 적절하게 예측되었는가?; 모든 명령어 캐시 접근들이 정확하게 예측된 순차적인 라인 또는 타깃 웨이 예측자들과 함께 수행되었는가?; 모든 명령어 캐시 접근들이 마이크로 태그 내에서 히트인가?; 웨이를 히트하는 마이크로 태그가 풀 주소 명령어 캐시 태그들과 일치하는가?; 그리고 접근되는 모든 페이지들에 대한 변환 색인 버퍼 히트들이 있는가. 이들 체크들은 상위 분기 명령어 및 하위 분기 명령어의 발생 사이에서 각 명령어에 대해 수행될 수 있다. 전술한 내용은 게시된 주제를 한정하지 않는 단지 몇 가지 실례가 되는 예시들인 것으로 이해된다.
블록(416)은 하나의 실시 예에 있어서, 이들 체크들이 성공적으로 완료되면, 상위 분기 명령어가 유효한 것으로 간주되는지 또는 아닌지에 대한 마지막 체크가 이뤄질 수 있는 것을 도시한다. 블록들(414, 416)의 체크들 중 어느 하나가 성공적이지 않으면, 블록(412)에 의해 도시된 대로, 상위 및 하위 간의 링크는 검증된 것으로 표시되지 않을 수 있다. 그 결과, 프론트 엔드 로직 섹션(또는 그것의 부분들)은 이 링크의 다음 발생에 따라 파워 다운되지 않을 것이다.
블록(418)은 하나의 실시 예에 있어서, 블록들(408, 414, 416)의 일부로서 수행된 체크들이 성공적이면, 상위 및 하위 사이의 링크가 검증된 것으로 표시될 수 있음을 도시한다 그 결과, 프론트 엔드 로직 섹션(또는 그것의 부분들)은 이 링크의 다음 발생에 따라 파워 다운될 수 있다.
도 4b는 게시된 주제에 따른 기술(450)의 예시적인 실시 예의 순서도이다. 다양한 실시 예들에 있어서, 기술(450)은 도 1, 도 2, 도 3, 또는 도 5에서와 같은 시스템들에 의해 사용될 수 있거나 만들어질 수 있다. 하지만, 전술한 내용은 게시된 주제를 한정하지 않는 단지 몇 가지 실례가 되는 예시들인 것으로 이해된다. 게시된 주제는 기술(450)에 의해 도시된 동작들의 순서 또는 개수로 한정되지 않는 것으로 이해된다.
다양한 실시 예들에 있어서, 서브루틴들 콜들(그리고 리턴들)은 전술한 더 많은 일반적인 분기 명령어들과 상이하게(그러나 유사하게) 다뤄질 수 있는 특별한 형태의 분기 명령어들을 나타낼 수 있다. 서브루틴 콜들은 추가 복잡도를 야기할 수 있다. 하나의 실시 예에 있어서, 콜의 타깃에서 또는 이후에 콜 서브루틴에서 첫 번째 분기로 취해진 엣지는 도 4a의 순서도를 이용하여 검증된 것으로 표시된다. 이 엣지는 콜의 타깃에서 또는 이후에 취해진 콜의 타깃에서 첫 번째 분기로의 프론트 엔드를 파워 업하는데 영향을 미친다. 콜의 N(또는 순차적) 엣지는 도 4b에 따라 검증된 것으로 표시된다. 콜의 N 검증된 엣지는 콜(상위)에 의해 리턴 주소 스택으로 푸쉬되고 그리고 리턴의 타깃에서 또는 이후에 해당 서브루틴 리턴의 타깃에서 첫 번째 분기(하위)로 모든 페치들을 파워 다운하는데 사용된다(리턴이 예측되고 취해졌을 때 리턴 주소 스택의 맨 위의 스택 엔트리 상에서 검증된 것으로 표시되면). 다시 말해서, 리턴의 취해지고 검증된 엣지의 상태는 (그것이 콜에 의해 그곳으로 푸쉬되는 것과 같이) 리턴 주소 스택의 맨 위로부터 얻어진다.
블록(452)은 하나의 실시 예에 있어서, 선택이 취해진 서브루틴의 콜이 마이크로 분기 타깃 버퍼에 의해 예측될 수 있는 것을 도시한다. 블록(454)은 하나의 실시 예에 있어서, 마이크로 분기 타깃 버퍼가 서브루틴 콜에 대한 그래프 엔트리 포인터를 마이크로 분기 타깃 버퍼의 리턴 주소 스택에 푸쉬하도록 구성될 수 있는 것을 도시한다. 다양한 실시 예들에 있어서, 이것은 PARENT_VALID (상위 유효) 비트를 설정하는 것을 포함할 수 있다. 다양한 실시 예들에 있어서, 마이크로 분기 타깃 버퍼가 취해진 것으로서 콜을 예측하면, 콜은 자신에 대한 포인터를 리턴 주소 스택에 푸쉬할 수 있다. 콜에 대한 그 포인터는 해당 리턴의 타깃에서 또는 이후에 마이크로 분기 타깃 버퍼에 의해 예측된 첫 번째 분기의 상위(콜의 하위)이다. 콜은 그것의 하위를 리턴 주소 스택에 푸쉬하지 않고, 그것은 자신에 대한 포인터를 푸쉬한다. 하위는 상위 포인터를 사용하여 검증된(또는 그렇지 않은) 것으로 콜의 N 엣지를 표시한다.
블록(456)은 하나의 실시 예에 있어서, 그 다음의 서브루틴 리턴 (분기) 명령어가 도달되고 예측될 때, 마이크로 분기 타깃 버퍼가 상위의 또는 콜의 그래프 포인터 및 PARENT_VALID 비트를 리턴으로부터의 예측 또는 하위 예측과 함께 프론트 엔드 파이프라인 아래로 이동하게 할 수 있는 것을 도시한다. 다양한 실시 예들에 있어서 이것은 블록(406)을 참조하여 전술한 것과 유사할 수 있다.
블록(458)은 하나의 실시 예에 있어서, 마이크로 구조 이벤트들을 정리하는 것이 발생하는지를 프론트 엔드가 판단할 수 있는 것을 도시한다. 다양한 실시 예들에 있어서, 이것은 블록(408)을 참조하여 전술한 것과 유사할 수 있다. 다양한 실시 예들에 있어서, 마이크로 구조 이벤트들의 집합은 전술한 것과 동일하거나, 유사하거나, 또는 상이할 수 있다.
블록(464)은 하나의 실시 예에 있어서, 전술한 모든 파이프라인 체크들이 통과하는지(예를 들어, 예측된 타깃들이 정확한지, 모든 명령어 캐시 접근들이 정확하게 예측된 순차적인 라인 또는 타깃 웨이 예측기들과 함께 수행되는지, 모든 명령어 캐시 접근들이 마이크로 태그 내에서 히트인지, 마이크로 태그 히트 웨이가 풀 주소 명령 캐시 태그들과 일치하는지, 접근되는 모든 페이지들에 대한 변환 색인 버퍼 히트)를 프론트 엔드가 판단할 수 있는 것을 도시한다. 다양한 실시 예들에 있어서, 이것은 블록(414)을 참조하여 전술한 것과 유사할 수 있다. 또한, 콜 유효 비트는 리턴에 의해 리턴 주소 스택의 맨 위에서 나오는 자신의 (콜)에 대한 상위의 (콜) 포인터가 유효한지 나타내는 상위 유효 비트이다.
블록(466)은 하나의 실시 예에 있어서, 프론트가 콜 유효 비트 또는 플래그가 설정되었는지4 판단할 수 있는 것을 도시한다. 다양한 실시 예들에 있어서, 이것은 블록(416)을 참조하여 전술한 것과 유사할 수 있다.
블록(460)은 하나의 실시 예에 있어서, 마이크로 구조 이벤트를 정리하는 것이 발생하면, 블록(410)을 참조하여 전술한 것과 유사하게, 마이크로 분기 타깃 버퍼 내의 모든 검증된 그리고 유효 비트들이 정리될 수 있는 것을 도시한다. 유사하게, 블록(462)은 하나의 실시 예에 있어서, 블록(412)을 참조하여 전술한 것과 유사하게, 리턴 명령어는 검증된 것으로 표시되지 않을 수 있는 것을 도시한다. 반대로, 블록(468)은 하나의 실시 예에 있어서, 블록(418)을 참조하여 전술한 것과 유사하게, 체크들이 성공이면, 콜 및 리턴의 하위 간의 링크가 검증된 것으로 표시(콜의 N 링크)될 수 있는 것을 도시한다. 특히, 리턴의 타깃에서 또는 이후에, 취해진 리턴의 타깃에서 첫 번째 분기까지의 모든 페치들이 체크들을 통과하면 콜의 N (또는 순차적) 링크는 검증된 것으로 표시될 수 있다. 리턴 그 자체는 검증된 것으로 표시되지 않는다. 콜의 N 링크의 표시는 리턴의 타깃에서 또는 이후에 취해진 리턴에서 첫 번째 분기까지의 모든 페치들이 체크들을 통과한 것을 나타내기 위해 행해진다.
다양한 실시 예들에 있어서, 검증된 링크가 서브루틴 콜에 의해 마이크로 분기 타깃 버퍼의 리턴 어드레스 스택에 한 번 푸쉬되면, 해당 서브루틴 리턴이 마이크로 분기 타깃 버퍼의 리턴 주소 스택의 엔트리를 팝(pop)할 때까지 그것은 스택 엔트리의 맨 위인 동안 그것은 마이크로 분기 타깃 버퍼에 의해 이뤄진 모든 그 다음의 분기 예측들의 검증된 링크의 상태로 자격을 얻을 수 있다(qualified). 이러한 실시 예에 있어서, 이것은 해당 서브루틴 콜 및 서브루틴 리턴 간의 마이크로 분기 타깃 버퍼에 의해 예측되는 임의의 비검증된(non-Verified) 링크들로 하여금 해당 서브루틴 리턴이 그것의 엣지가 검증된 것임을 나타내는 것을 방지하게 할 수 있다.
일부 실시 예들에 있어서, 리턴이 예측되고 취해질 때 해당 리턴 주소 스택의 엔트리 상의 검증된 링크가 여전히 설정되면, 리턴은 그것의 취해진 엣지가 검증된 것을 나타낼 수 있고, 그리고 명령어 캐시 마이크로 태그 및 풀 태그 어레이들 및 명령어 변환 색인 버퍼는 파워 업되지 않을 것이고 그리고 단지 L1 명령어 캐시의 웨이 예측된 웨이가 리턴의 타깃에서 다음 분기(하위)까지의 모든 페치들에 접근될 것이다.
일부 실시 예들에 있어서, 마지막 유효 엔트리가 팝되는 것으로 인하여 리턴 주소 스택이 정렬되지 않거나(mis-aligned) 언더플로(underflow)이면 서브루틴 리턴이 엔트리를 팝하여 검증된 엣지 표시가 상이한 서브루틴 리턴에 의해 재사용되는 것을 방지할 때 마이크로 분기 타깃 버퍼의 리턴 주소 스택 내의 검증된 링크 비트 또는 플래그 비트는 정리될 수 있다. 전술한 내용은 게시된 주제를 한정하지 않는 단지 하나의 실례가 되는 예시인 것으로 이해된다.
도 5는 게시된 주제의 원리들에 따라 형성되는 반도체 장치들을 포함할 수 있는 정보 처리 시스템(500)의 도식적인 블록도이다.
도 5를 참조하면, 정보 처리 시스템(500)은 게시된 주제의 원리들에 따라 구성되는 하나 이상의 장치들을 포함할 수 있다. 다른 실시 예에 있어서, 정보 처리 시스템(500)은 게시된 주제의 원리들에 따른 하나 이상의 기술들을 이용하거나 실행할 수 있다.
다양한 실시 예들에 있어서, 정보 처리 시스템(500)은 예를 들어, 랩탑, 데스트탑, 워크스테이션, 서버, 블레이드(blade) 서버, PDA, 스마트폰, 태블릿, 및 다른 적절한 컴퓨터들 또는 가상 머신 또는 그것의 가상 컴퓨팅 장치와 같은 컴퓨팅 장치를 포함할 수 있다. 다양한 실시 예들에 있어서, 정보 처리 시스템(500)은 유저(미도시)에 의해 사용될 수 있다.
게시된 주제에 따른 정보 처리 시스템(500)은 CPU(central processing unit), 로직, 또는 프로세서(510)를 더 포함할 수 있다. 일부 실시 예들에 있어서, 프로세서(510)는 하나 이상의 FUB(functional unit block)들 또는 CLB(combinational logic block, 515)들을 포함할 수 있다. 이러한 실시 예에 있어서, CLB는 다양한 불 논리 연산들(Boolean logic operations, 예를 들어, NAND, NOR, NOT, XOR), 안정화 로직 장치들(예를 들어, 플립 플롭(flip-flop)들, 래치(latch)들), 다른 로직 장치들, 또는 그것들의 조합을 포함할 수 있다. 조합 논리 연산들은 간단하거나 복잡한 방식으로 원하는 결과를 얻기 위해 입력 신호들을 처리하도록 구성될 수 있다. 동기식 조합 로직 연산들의 몇 가지 실례가 되는 예시들이 설명되었으나, 게시된 주제는 이에 한정되지 않고 비동기식 연산들, 또는 그것들의 조합을 포함할 수 있음이 이해된다. 하나의 실시 예에 있어서, 조합 로직 연산들은 복수의 CMOS(complementary metal oxide semiconductor) 트랜지스터들을 포함할 수 있다. 다양한 실시 예들에 있어서, CMOS 트랜지스터들은 로직 연산들을 수행하는 게이트들로 배열될 수 있다; 그러나 다른 기술들이 사용될 수 있고 게시된 주제의 범위 내인 것이 이해될 수 있다.
게시된 주제에 따른 정보 처리 시스템(500)은 휘발성 메모리(520, 예를 들어, RAM(random access memory))를 더 포함할 수 있다. 게시된 주제에 따른 정보 처리 시스템(500)은 불휘발성 메모리(530, 예를 들어, 하드 드라이브(hard drive), 광 메모리, 낸드(NAND) 또는 플래시(flash) 메모리)를 더 포함할 수 있다. 일부 실시 예들에 있어서, 휘발성 메모리(520), 불휘발성 메모리(530), 또는 그것들의 조합 또는 일부들은 “저장 매체”로서 지칭될 수 있다. 다양한 실시 예들에 있어서, 휘발성 메모리(520) 및/또는 불휘발성 메모리(530)는 반영구적 또는 실질적으로 영구적인 형태로 데이터를 저장하도록 구성될 수 있다.
다양한 실시 예들에 있어서, 정보 처리 시스템(500)은 정보 처리 시스템(500)이 통신 네트워크의 일부가 되고 통신 네트워크를 통해 통신하게 하도록 구성되는 하나 이상의 네트워크 인터페이스들(540)을 포함할 수 있다. Wi-Fi 프로토콜의 예시들은 IEEE(Institute of Electrical and Electronics Engineers) 802.11g, IEEE 802.11n을 포함할 수 있으나, 이에 한정되지 않는다. 무선 프로토콜의 예시들은 IEEE 802.16m(Wireless-MAN (Metropolitan Area Network) Advanced로도 알려짐), LTE(Long Term Evolution) Advanced, EDGE(Enhanced Data rates for GSM (Global System for Mobile Communications) Evolution), HSPA+(Evolved High-Speed Packet Access)를 포함할 수 있으나, 이에 한정되지 않는다. 유선 프로토콜의 예시들은 IEEE 802.3(Ethernet으로도 알려짐), 파이버 채널(Fibre channel), PLC(Power Line communication; 예를 들어, HomePlug, IEEE 1901)를 포함할 수 있으나, 이에 한정되지 않는다. 전술한 내용은 게시된 주제를 한정하지 않는 단지 몇 가지 실례가 되는 예시들인 것으로 이해된다.
게시된 주제에 따른 정보 처리 시스템(500)은 유저 인터페이스 유닛(550; 예를 들어, 디스플레이 어댑터(adapter), 감각(haptic) 인터페이스, 인간(human) 인터페이스 장치)을 더 포함할 수 있다. 다양한 실시 예들에 있어서, 유저 인터페이스 유닛(550)은 유저로부터 입력을 수신하거나 그리고/또는 유저에게 출력을 제공하도록 구성될 수 있다. 다른 종류들의 장치들도 유저와의 상호작용을 제공하는데 사용될 수 있다; 예를 들어, 유저로 제공되는 피드백은 임의의 형태의 감각 피드백일 수 있고, 예를 들어, 시각 피드백, 청각 피드백, 또는 촉각 피드백; 그리고 유저로부터의 입력은 음향, 스피치(speech), 또는 촉각 입력을 포함하는 임의의 형태로 수신될 수 있다.
다양한 실시 예들에 있어서, 정보 처리 시스템(500)은 하나 이상의 다른 장치들 또는 하드웨어 구성 요소들(560; 예를 들어, 디스플레이 또는 모니터, 키보드, 마우스, 카메라, 지문 판독기, 비디오 프로세서)을 포함할 수 있다. 전술한 내용은 게시된 주제를 한정하지 않는 단지 몇 가지 실례가 되는 예시들인 것으로 이해된다.
게시된 주제에 따른 정보 처리 시스템(500)은 하나 이상의 시스템 버스들(505)을 더 포함할 수 있다. 이러한 실시 예에 있어서, 시스템 버스(505)는 프로세서(510), 휘발성 메모리(520), 불휘발성 메모리(530), 네트워크 인터페이스(540), 유저 인터페이스 유닛(550), 및 하나 이상의 하드웨어 구성 요소들(560)을 통신적으로 연결하도록 구성될 수 있다. 프로세서(510)에 의해 처리되는 데이터 또는 불휘발성 메모리(530)의 외부로부터 입력되는 데이터는 불휘발성 메모리(530) 또는 휘발성 메모리(520)에 저장될 수 있다.
다양한 실시 예들에 있어서, 정보 처리 시스템(500)은 하나 이상의 소프트웨어 구성 요소들(570)을 포함하거나 실행할 수 있다. 일부 실시 예들에 있어서, 소프트웨어 구성 요소들(570)은 운영체제(OS) 및/또는 어플리케이션을 포함할 수 있다. 일부 실시 예들에 있어서, 운영체제는 어플리케이션에 하나 이상의 서비스들을 제공하고 어플리케이션 및 정보 처리 시스템(500)의 다양한 하드웨어 구성 요소들(예를 들어, 프로세서(510), 네트워크 인터페이스(540)) 사이의 중재자로서 관리 또는 행동하도록 구성될 수 있다. 이러한 실시 예에 있어서, 정보 처리 시스템(500)은 국부적으로 설치될 수 있고(예를 들어, 불휘발성 메모리(530) 내에) 프로세서에 의해 직접 실행되고 운영체제와 직접 상호 작용하도록 구성될 수 있는 하나 이상의 어플리케이션들을 포함할 수 있다. 이러한 실시 예에 있어서, 본래의 어플리케이션들은 사전에 컴파일된 머신 실행 가능한 코드를 포함할 수 있다. 일부 실시 예들에 있어서, 본래의 어플리케이션들은 소스 또는 객체 코드(목적 코드)를 프로세서(510)에 의해 실행되는 실행 가능한 코드로 변환하도록 구성되는 스크립트 해석 프로그램(예를 들어, csh(C shell), AppleScript, AutoHotkey) 또는 VM(virtual execution machine; 예를 들어, Java Virtual Machine, the Microsoft Common Language Runtime)을 포함할 수 있다.
전술한 반도체 장치들은 다양한 패키징 기술들을 이용하여 캡슐화(encapsulate)될 수 있다. 예를 들어, 게시된 주제의 원리들에 따라 구성되는 반도체 장치들은 POP(package on package) 기술, BGAs(ball grid arrays) 기술, CSPs(chip scale packages) 기술, PLCC(plastic leaded chip carrier) 기술, PDIP(plastic dual in-line package) 기술, Die in Waffle Pack 기술, Die in Wafer Form 기술, 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)에 의해 수행될 수 있고 장치는 특별한 목적의 로직 회로, 예를 들어, FPGA 또는 ASIC으로서 구현될 수 있다.
다양한 실시 예들에 있어서, 컴퓨터 읽기 가능 매체는 실행되었을 때 장치가 방법 단계들의 적어도 일부를 수행하도록 야기하는 명령어들을 포함할 수 있다. 일부 실시 예들에 있어서, 컴퓨터 읽기 가능 매체는 자기 매체, 광 매체, 다른 매체, 또는 그것들의 조합(예를 들어, CD-ROM, 하드 드라이브, ROM(read-only memory), 플래시 드라이브)에 포함될 수 있다. 이러한 실시 예에 있어서, 컴퓨터 읽기 가능 매체는 실질적일 수 있고 비일시적으로 구현된 제품일 수 있다.
게시된 주제의 원리들이 예시적인 실시 예들을 참조하여 설명되었지만, 당업자에게 게시된 개념들의 사상 및 범위를 벗어나지 않으면서 다양한 변경들 및 수정들이 이뤄질 수 있는 것은 명백할 것이다. 그러므로, 전술한 예시들은 한정적인 것이 아니라 단지 예시적인 것임을 이해해야 한다. 따라서, 게시된 개념들의 범위는 다음의 청구 범위 및 그 균등물의 가장 넓은 허용 가능한 해석에 의해 결정되어야 하고, 전술한 설명에 의해 제한되거나 한정되지 않아야 한다. 그러므로, 첨부된 청구 범위는 실시 예들의 범위 내에 있는 그러한 수정들 및 변경들 모두를 포함하도록 의도된 것으로 이해되어야 한다.

Claims (10)

  1. 주 분기 타깃 버퍼를 포함하는 프론트 엔드 로직 섹션(front end logic section); 및
    상기 주 분기 타깃 버퍼와 분리되고, 하나 이상의 조건들이 만족되면 분기 명령어와 관련된 예측 정보를 생성하고 그리고 예측 정보를 검증된 것으로서 표시하도록 구성되는 마이크로 분기 타깃 버퍼를 포함하되,
    상기 프론트 엔드 로직 섹션은 상기 예측 정보가 이전에 검증된 것으로 표시되는 것을 야기하는 상기 마이크로 분기 타깃 버퍼에 의해 데이터가 저장되면 적어도 부분적으로 파워 다운(power down)되도록 구성되는 장치.
  2. 제 1 항에 있어서,
    상기 프론트 엔드 로직 섹션은 새로운 분기 명령어를 만나거나 상기 예측 정보가 검증되지 않은 것으로 표시되면 적어도 부분적으로 파워 업(power up)되고, 그리고
    상기 프론트 엔드 로직 섹션은 검증되지 않은 예측 정보를 검증하려고(또는 그렇지 않도록) 시도하도록 구성되는 장치.
  3. 제 2 항에 있어서,
    상기 마이크로 분기 타깃 버퍼는 더 이상 검증되지 않는 것으로 표시되는 분기 예측 정보의 일부를 야기하는 이벤트들의 사전에 결정된 집합 중 어느 하나가 발생하면 검증되지 않은 것으로서 모든 저장된 분기 예측 정보를 표시하도록 구성되는 장치.
  4. 제 1 항에 있어서,
    상기 마이크로 분기 타깃 버퍼는 하나 이상의 엔트리들을 포함하는 그래프를 포함하고, 그리고
    상기 그래프는 적어도 하나의 상위 분기 명령어 및 각각의 하위 분기 명령어(들) 간의 링크들을 포함하는 장치.
  5. 제 1 항에 있어서,
    상기 마이크로 분기 타깃 버퍼는 상기 예측 정보를 상기 프론트 엔드 로직 섹션으로 이동하게 하도록 구성되고, 그리고
    상기 예측 정보는 상위 분기 명령과 관련되는 상위 포인터, 상기 상위 포인터와 관련되는 유효 플래그, 및 상기 분기 명령어 이후에 예측된 다음 명령어를 포함하는 장치.
  6. 제 5 항에 있어서,
    상기 프론트 엔드 로직 섹션은 상기 상위 분기 명령어 및 상기 분기 명령어 간의 링크가 검증되는지를 판단하도록 구성되는 장치.
  7. 제 6 항에 있어서,
    상기 프론트 엔드 로직 섹션은, 적어도, 상기 상위 분기 명령어 및 상기 분기 명령어의 발생 간의 모든 순차적인 명령어 캐시 접근들이 명령어 캐시에서 히트되고, 웨이 예측되고 정확하게 예측되고, 그리고 상기 유효 플래그가 설정되면, 상기 링크가 검증된 것으로 판단하도록 구성되는 장치.
  8. 제 6 항에 있어서,
    상기 마이크로 분기 타깃 버퍼는 상기 상위 분기 명령어 및 상기 분기 명령어의 발생 사이에서 마이크로 구조 이벤트들의 사전에 결정된 집합의 적어도 하나가 발생하면 적어도 하나의 검증된 플래그(들)을 정리하도록 구성되는 장치.
  9. 제 1 항에 있어서,
    상기 분기 명렁어는 서브루틴으로의 콜 또는 서브루틴으로부터의 리턴을 포함하는 장치.
  10. 주 분기 타깃 버퍼를 포함하는 프론트 엔드 로직 섹션(front end logic section); 및
    상기 주 분기 타깃 버퍼와 분리되고, 하나 이상의 조건들이 만족되면 서브루틴 콜과 관련된 예측 정보를 생성하고 그리고 예측 정보를 검증된 것으로서 표시하도록 구성되는 마이크로 분기 타깃 버퍼를 포함하되,
    상기 프론트 엔드 로직 섹션은 상기 예측 정보가 이전에 검증된 것으로 표시되는 것을 야기하는 상기 마이크로 분기 타깃 버퍼에 의해 데이터가 저장되면 적어도 부분적으로 파워 다운(power down)되도록 구성되는 장치.
KR1020180156412A 2018-01-30 2018-12-06 엣지 특성이 검증된 마이크로 분기 타깃 버퍼를 이용하여 컴퓨터 프로세서의 전력 소모를 감소시키는 시스템 및 방법 KR20190092245A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862624108P 2018-01-30 2018-01-30
US62/624,108 2018-01-30
US16/019,502 US20190235873A1 (en) 2018-01-30 2018-06-26 System and method of reducing computer processor power consumption using micro-btb verified edge feature
US16/019,502 2018-06-26

Publications (1)

Publication Number Publication Date
KR20190092245A true KR20190092245A (ko) 2019-08-07

Family

ID=67392181

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180156412A KR20190092245A (ko) 2018-01-30 2018-12-06 엣지 특성이 검증된 마이크로 분기 타깃 버퍼를 이용하여 컴퓨터 프로세서의 전력 소모를 감소시키는 시스템 및 방법

Country Status (3)

Country Link
US (1) US20190235873A1 (ko)
KR (1) KR20190092245A (ko)
CN (1) CN110096129A (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11055098B2 (en) * 2018-07-24 2021-07-06 Advanced Micro Devices, Inc. Branch target buffer with early return prediction
US11392382B2 (en) * 2019-05-21 2022-07-19 Samsung Electronics Co., Ltd. Using a graph based micro-BTB and inverted basic block queue to efficiently identify program kernels that will fit in a micro-op cache
CN112596792B (zh) * 2020-12-17 2022-10-28 海光信息技术股份有限公司 分支预测方法、装置、介质及设备

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5623614A (en) * 1993-09-17 1997-04-22 Advanced Micro Devices, Inc. Branch prediction cache with multiple entries for returns having multiple callers
US5764946A (en) * 1995-04-12 1998-06-09 Advanced Micro Devices Superscalar microprocessor employing a way prediction unit to predict the way of an instruction fetch address and to concurrently provide a branch prediction address corresponding to the fetch address
US20050216714A1 (en) * 2004-03-25 2005-09-29 Intel Corporation Method and apparatus for predicting confidence and value
KR102635965B1 (ko) * 2015-06-26 2024-02-13 삼성전자주식회사 마이크로 프로세서의 프론트 엔드 및 이를 이용한 컴퓨터 구현 방법
US10402200B2 (en) * 2015-06-26 2019-09-03 Samsung Electronics Co., Ltd. High performance zero bubble conditional branch prediction using micro branch target buffer

Also Published As

Publication number Publication date
CN110096129A (zh) 2019-08-06
US20190235873A1 (en) 2019-08-01

Similar Documents

Publication Publication Date Title
US10540181B2 (en) Managing branch prediction information for different contexts
US7437537B2 (en) Methods and apparatus for predicting unaligned memory access
US10782977B2 (en) Fault detecting and fault tolerant multi-threaded processors
US10296463B2 (en) Instruction prefetcher dynamically controlled by readily available prefetcher accuracy
WO2017172256A1 (en) Processors, methods, and systems to allocate load and store buffers based on instruction type
TWI810450B (zh) 經由跳過無分歧的快取線改善分歧預測通量的設備及系統
US10599437B2 (en) Managing obscured branch prediction information
US9274970B2 (en) Method and apparatus for handling processor read-after-write hazards with cache misses
US9367314B2 (en) Converting conditional short forward branches to computationally equivalent predicated instructions
US11113063B2 (en) Method and apparatus to control the use of hierarchical branch predictors based on the effectiveness of their results
KR101806279B1 (ko) 명령어 순서 강제 명령어들의 쌍들, 프로세서들, 방법들, 및 시스템들
KR20190092245A (ko) 엣지 특성이 검증된 마이크로 분기 타깃 버퍼를 이용하여 컴퓨터 프로세서의 전력 소모를 감소시키는 시스템 및 방법
US20150268961A1 (en) Decoupling l2 btb from l2 cache to accelerate search for miss after miss
TWI807371B (zh) 利用預測器模式標籤的Spectre修復方法和微處理器
TWI783582B (zh) 利用間接有效表的Spectre修復的方法和微處理器
US20180253547A1 (en) Control flow integrity
CN111984325A (zh) 提高分支预测吞吐量的装置及系统
US8151093B2 (en) Software programmable hardware state machines
US9904549B2 (en) Method and apparatus for loop-invariant instruction detection and elimination
CN112130905A (zh) 计算装置和计算系统
CN115576607A (zh) 用于微架构返回预测器安全性的计数到空