KR20130051999A - 인스트럭션 페치 유닛을 전원 차단하여 프로세서에서의 전력 소모를 저감하는 방법 및 장치 - Google Patents

인스트럭션 페치 유닛을 전원 차단하여 프로세서에서의 전력 소모를 저감하는 방법 및 장치 Download PDF

Info

Publication number
KR20130051999A
KR20130051999A KR1020137007391A KR20137007391A KR20130051999A KR 20130051999 A KR20130051999 A KR 20130051999A KR 1020137007391 A KR1020137007391 A KR 1020137007391A KR 20137007391 A KR20137007391 A KR 20137007391A KR 20130051999 A KR20130051999 A KR 20130051999A
Authority
KR
South Korea
Prior art keywords
instruction
processor
branch
power consumption
instructions
Prior art date
Application number
KR1020137007391A
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 KR20130051999A publication Critical patent/KR20130051999A/ko

Links

Images

Classifications

    • 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
    • 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
    • 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
    • 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
    • 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
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
    • 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, 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
    • 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, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • 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
    • 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
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Abstract

인스트럭션 페치 유닛을 전원 차단하여 프로세서에서의 전력 소모를 저감하는 장치 및 방법을 설명한다. 예를 들어, 방법의 일 실시예는, 분기를 검출하되, 상기 분기는 거기에 연관된 어드레싱 정보를 구비하는 단계와, 상기 어드레싱 정보를 인스트럭션 사전페치 버퍼 내의 엔트리와 비교하여, 상기 사전페치 버퍼 내에 실행가능한 인스트럭션 루프가 존재하는지 여부를 판정하는 단계와, 상기 비교 결과로서 만일 인스트럭션 루프가 검출되면, 인스트럭션 페치 유닛 및/또는 그 구성 요소의 전원을 차단하는 단계와, 청산 조건이 검출될 때까지 상기 사전페치 버퍼로부터 직접 인스트럭션을 스트리밍하는 단계를 포함한다.

Description

인스트럭션 페치 유닛을 전원 차단하여 프로세서에서의 전력 소모를 저감하는 방법 및 장치{METHOD AND APPARATUS FOR REDUCING POWER CONSUMPTION IN A PROCESSOR BY POWERING DOWN AN INSTRUCTION FETCH UNIT}
본 발명은 일반적으로 컴퓨터 프로세서에 관한 것이다. 특히, 본 발명은 버퍼 내의 인스트럭션 루프와 다른 인스트럭션 그룹을 검출하고, 그에 따라 페치 유닛을 전원 차단하는 장치 및 방법에 관한 것이다.
여러 현대 마이크로프로세서는 고속 동작을 가능하게 하는 대형 인스트럭션 파이프라인을 구비한다. "페치된" 프로그램 인스트럭션이 파이프라인에 들어가고, 디코딩 및 파이프 라인의 중간 단계에서의 실행이 이루어지고, 파이프 라인의 끝에서 "종료(retired)"된다. 파이프라인이 각 클록 사이클에서 유효 인스트럭션을 수신하면, 파이프라인은 가득찬 채 남아있어 성능이 우수하다. 유효 인스트럭션이 각 사이클에서 수신되지 않으면, 파이프라인이 가득차지 않아 성능이 악화될 수 있다. 예를 들어, 성능 문제는 프로그램 코드 내의 분기 인스트럭션(branch instructions)에 기인할 수 있다. 프로그램에서 분기 인스트럭션을 만나고, 목표 어드레스로 분기가 처리되는 경우, 인스트럭션 파이프라인의 일부는 유출되어야 할 수 있고, 그것은 성능 저하를 초래한다.
분기 목표 버퍼(BTB : Branch Target Buffer)는 파이프라인 효율에 대한 분기 인스트럭션의 영향을 줄이기 위해 창안되었다. BTB에 대한 논의는 데이비트 에이 페터슨(David A.Patterson)과 존 엘 헤네씨(John L. Hennessy)의 "Computer Architecture A Quantitative Approach 271-275(2d ed. 1990)"에서 발견할 수 있다. 또한, 전형적인 BTB 애플리케이션이 도 1에 도시되어 있으며, 인스트럭션 포인터(IP : instruction pointer)(118) 및 프로세서 파이프라인(120)과 연결된 BTB(110)가 도시된다. 캐시(130) 및 페치 버퍼(132)도 도 1에 포함된다. 페치될 다음 인스트럭션의 위치가 IP(118)에 의해 명시된다. 프로그램 내에서 순차적으로 실행이 진행됨에 따라, IP(118)는 각 사이클을 증가시킨다. IP(118)의 출력은 캐시(130)의 포트(134)를 구동하고 다음 인스트럭션이 페치될 어드레스를 명시한다. 캐시(130)는 페치 버퍼(132)에 인스트럭션을 제공하여, 결국 프로세서 파이프라인(120)에 인스트럭션을 제공한다.
파이프라인(120)에 의해 인스트럭션이 수신되면, 그것들은 페치 단계(122), 디코딩 단계(124), 중간 단계(126)(예를 들어, 인스트럭션 실행 단계), 및 은퇴 단계로 도시된 몇몇 단계를 통해 진행된다. 분기 인스트럭션이 행해진 분기를 야기하는지의 여부에 대한 정보는 때때로 은퇴 단계(128)와 같이 후속 파이프라인 단계까지 유효하지 않다. BTB(110)가 존재하지 않고 분기가 행해질 때, 분기 인스트럭션이 후속하는 페치 버퍼(132) 및 인스트럭션 파이프라인(120)의 일부는 잘못된 실행 경로로부터 인스트럭션을 유지할 수 있다. 프로세서 파이프라인(120) 및 페치 버퍼(132) 내의 무효 인스트럭션이 유출되고, IP(118)는 분기 목표 어드레스로 기입된다. 어느 정도는 페치 버퍼(132)와 인스트럭션 파이프라인(120)이 분기 목표 어드레스에서 개시되는 인스트럭션으로 채워지기 때문에 성능 저하가 발생한다.
BTB는 행해진 분기의 성능 영향을 줄인다. BTB(110)는 각기 분기 어드레스(BA : branch address) 필드(112) 및 목표 어드레스(TA : target address)를 구비하는 레코드(111)를 포함한다. TA 필드(114)는 해당하는 BA 필드(112)에 의해 지정된 어드레스에 위치하는 분기 인스트럭션에 대한 분기 목표 어드레스를 유지한다. 프로세서 파이프라인(120)에 의해 분기 인스트럭션을 만나면, 레코드(111)의 BA 필드(112)는 분기 인스트럭션의 어드레스에 부합하는 레코드를 탐색한다. 발견되면, IP(118)는 발견된 BA 필드(112)에 해당하는 TA 필드(114)값으로 변경한다. 그 결과, 분기 목표 먼지에서 개시되는 인스트럭션이 다음에 페치된다.
프로세서 파이프라인에서 전원 절약은 중요하고, 배터리 전원으로 실행되는 랩탑 및 기타 휴대용 장치에 대해서는 특히 중요하다. 그와 같이, 반복되는 인스트럭션의 그룹(예를 들어, 내포 루프(nested loops))이 페치 버퍼 내에 위치할 때, 인스트럭션 페치 회로 및 인스트럭션 캐시와 같은 프로세서 파이프라인의 소정 부분에서 전원을 차단하는 것은 유용할 것이다. 따라서, 페치 회로 또는 그 일부의 전원이 차단될 수 있는 조건을 검출하는 새로운 기법은 유용할 것이다.
다음 도면과 관련한 하기의 상세한 설명으로부터 본 발명을 더욱 잘 이해할 수 있다.
도 1은 분기 목표 사전페치를 수행하는 분기 목표 버퍼를 채용하는 종래의 프로세서 파이프라인을 도시한 도면,
도 2는 사전페치 버퍼로부터 인스트럭션을 스트리밍하고, 그에 따라 프로세서 파이프라인의 일부를 전원 차단하는 루프 스트림 검출기를 포함하는 프로세서 아키텍처의 일 실시예를 도시한 도면,
도 3은 반복적인 인스트럭션의 그룹을 검출하고, 그에 따라 프로세서 파이프라인의 일부를 전원 차단하는 방법의 일 실시예를 도시한 도면,
도 4는 루프 스트림 검출기가 참여되고 있는 일 실시예를 도시한 파이프라인도,
도 5는 루프 스트림 검출기를 참여시키는 데 이용되는 사전페치 버퍼의 일 실시예에 채용되는 필드를 도시한 도면,
도 6은 루프 스트림 검출기를 참여시키는 데 이용되는 사전페치 버퍼의 다른 실시예에 채용되는 필드를 도시한 도면,
도 7은 내포 인스트럭션 시퀀스(nested instruction sequence)를 포함하는 바람직한 프로그램 코드를 도시한 도면.
이하의 설명에서, 후술하는 본 발명의 실시예를 완전히 이해하도록 하기 위해서 여러 특정한 세부 사항을 설정한 것은 설명을 위한 것이다. 그러나, 당업자에게 이들 특정한 세부 사항의 일부가 없이도 본 발명의 실시예가 실시될 수 있다는 점은 분명할 것이다. 다른 예에서, 본 발명의 실시예의 근본 원리를 애매하게 하지 않기 위해서 주지된 구조 및 장치는 블록도로 도시하였다.
본 발명의 일 실시예는, 내포 루프 및/또는 내포 분기와 같은 반복적인 인스트럭션 그룹을 실행할 때 CPU코어의 동적 전원을 감소시킨다. 예를 들어, 분기 예측기에 의해 예측된 인스트럭션 그룹이 사전페치 버퍼 내에서 검출되면, 본 발명의 일 실시예는 페치 유닛 및 연관된 인스트럭션 페치 회로(또는 그 일부)의 전원을 차단하여 전력을 절약한다. 인스트럭션 페치 유닛의 전원이 들어올 때 추가 인스트럭션이 필요할 때까지 사전페치 버퍼로부터 직접 스트리밍된다. 본 발명의 실시예는 단일 쓰레드(thread) 환경 또는 다중 쓰레드 환경 둘 다에서 운용할 수 있다. 일 실시예에 있어서, 단일 쓰레드 환경에서는 사전페치 버퍼 엔트리 전체가 단일 쓰레드에 할당되는 반면 다중 쓰레드 환경에서는 사전 버퍼 엔트리가 다수의 쓰레드 사이에 균일하게 분리된다.
특정한 일 실시예는 반복적인 인스트럭션 그룹을 검출하는 사전패치 버퍼를 갖는 루프 스트림 검출기(LSD : loop stream detector)를 구비한다. 루프 스트림 검출기 사전페치 버퍼는 다중 쓰레드 모드에서 6 엔트리 깊이(쓰레드 0에 대한 3개 및 쓰레드 1에 대한 3개)이고, 단일 쓰레드 모드에서 3 엔트리 깊이일 수 있다. 대신에, 6개의 엔트리 모두 단일 쓰레드 모드에서 단일 쓰레드에 대해 이용될 수 있다. 일 실시예에 있어서, 단일 쓰레드 모드에서 엔트리의 수는 사전페치 버퍼에 3개 또는 6개로 구성될 수 있다.
일 실시예에 있어서, 루프 스트림 검출기 사전페치 버퍼는 현재 선형 인스트럭션 포인터(CLIP : current linear instruction pointer), 오프셋, 및 사전페치 버퍼에 기입되는 분기가 예측되는 각 분기 목표 버퍼(BTB)에 대한 사전페치 버퍼의 분기 폭표 어드레스 판독 포인터와 같은 분기 정보를 저장한다. BTB가 분기를 예측하면, 분기의 CLIP 및 오프셋을 사전페치 버퍼에서의 엔트리와 대조하여, 이 분기가 이미 사전페치 버퍼에 있는지를 판정한다. 만일 부합되는 것이 있으면, 페치 유닛 또는 인스트럭션 캐시와 같은 그 일부가 청산 조건(clearing condition)을 만날때까지(예를 들어, 오예측 분기) 사전페치 버퍼로부터 스트리밍되는 인스트럭션이 정지된다. 사전페치 버퍼에서의 인스트럭션 루프 내에 BTB 예측된 분기가 있는 경우, 이들도 사전페치 버퍼로부터 스트리밍된다. 일 실시예에 있어서, 루프 스트림 검출기는 직접적인 분기 및 조건부 분기에 대해서 활성화되고 삽입된 흐름, 및 복귀/호출 인스트럭션에 대해서는 활성화되지 않는다.
사전페치 버퍼 내의 내포 루프, 분기 및 기타 반복적인 인스트럭션 그룹의 검출시 페치 유닛(및/또는 기타 회로)을 전원 차단하는 프로세서 아키텍처의 일 실시예가 도 2에 도시된다. 도시된 바와 같이, 본 실시예는 본 명세서에서 설명된 다양한 기능을 수행하는 루프 스트림 검출 유닛(200)을 포함한다. 특히, 루프 스트림 검출기(200)는 BTB(branch target buffer)에 의해 예측된 분기를 페치 버퍼(201) 내의 엔트리와 비교하는 비교 회로(202)를 포함한다. 미리 언급한 바와 같이, 본 발명의 일 실시예에 있어서, 사전페치 버퍼 내에서 부합되는 것이 검출되면(도 2에서 온/오프 라인에 의해 지시되는 바와 같이), 그에 응답하여 루프 스트림 검출기(200)는 인스트럭션 페치 유닛(210)(또는 그 일부)을 전원 차단한다.
분기 예측 유닛(211), 다음 인스트럭션 포인터(212), 인스트럭션 변환 색인 버퍼(ITLB : instruction translation lookaside buffer), 인스트럭션 캐시(214) 및/또는 사전 디코딩 캐시(215)를 포함하는 루프 스트림 검출기로부터의 신호에 응답하여, 인스트럭션 페치 유닛(210)의 여러 주지된 구성 요소가 차단될 수 있고, 그럼으로써 사전페치 버퍼 내에서 반복적인 인스트럭션 그룹이 검출되는 경우 다량의 전력을 절약할 수 있다. 그래서, 사전페치 버퍼로부터 디코딩 단계(220) 및 실행 단계(230)(예로서 이것으로 제한되는 것은 아님)를 포함하는 인스트럭션 파이프라인의 잔여 단계까지 직접 인스트럭션이 스트리밍된다.
도 3은 인스트럭션 버퍼 내의 인스트럭션 그룹(예를 들어, 내포 루프)의 검출에 응답하여 페치 유닛(또는 그 일부)의 전원을 차단하는 방법의 일 실시예를 도시한 도면이다. 본 방법은 도 2에 도시된 프로세서 아키텍처 또는 다른 프로세서 아키텍처를 이용하여 구현될 수 있다.
301에서 분기 인스트럭션이 예측되고 현재 선형 인스트럭션 포인터(CLIP : current linear instruction pointer), 분기 오프셋, 및/또는 분기의 분기 목표 어드레스가 판정된다. 302에서, CLIP, 분기 오프셋 및/또는 분기 목표 어드레스를 사전페치 버퍼의 엔트리와 비교한다. 일 실시예에 있어서, 비교의 목적은 내포 루프가 사전페치 버퍼 내에 저장되는지 판정하는 것이다. 303의 판정에서 부합되는 것이 발견된 경우, 304에서 인스트럭션 페치 유닛(및/또는 그 개별 구성)은 정지되고, 305에서 사전페치 버퍼로부터 인스트럭션이 직접 스트리밍된다. 306에서 청산 조건이 발생될 때까지(예를 들어, 오예측 분기) 계속해서 사전페치 버퍼로부터 인스트럭션이 스트리밍된다.
도 4는 본 발명의 일 실시예에 따라 루프 스트림 검출기가 어떻게 참여되는지를 도시한다. 특히, 도 4에서, 분기는 인스트럭션 파이프라인 내의 IF2_L 단계(BT Clear)에서 예측기에 의해 예측되고, 다음 인스트럭션 포인터(IP : instruction pointer) 다중화 단계는 버블(bubble)에 의해 예측된 분기 목표 어드레스로 전향된다. 단계 ID1에서, CLIP, 분기 오프셋, 및 목표 판독 포인터(분기 목표를 지시하는 포인터)는 사전페치 버퍼 내에 기록된다. CLIP, 분기 오프셋, 및/또는 목표 판독 포인터의 부합을 검출하는 데 응답하여, 루프 스트림 검출기가 참여하고, 일 실시예에서 페치 유닛이 불능 상태가 된다. 이것은 비교되는 CLIP 및 분기 오프셋가 도시된 도 4의 하단에 도시되고, 루프 스트림 검출기는 락(lock)으로 설정된다(그럼으로써 페치 유닛 및/또는 그 일부의 전원이 차단됨).
도 5는 루프 스트림 검출기를 참여시키는 데 이용되는 상이한 필드를 갖는 루프 스트림 검출기 사전페치 버퍼의 일 실시예의 구조를 도시하고, 도 7은 도 5의 루프 스트림 검출기의 예를 위한 바람직한 인스트럭션 시퀀스를 도시한다. 편의상, 바람직한 인스트럭션 시퀀스도 하기에 제공한다. LSD 사전페치 버퍼 내에서 이용되는 필드는 사전페치 버퍼 엔트리 번호(501)(본 특정 예에서, 0~5까지 번호가 부여된 6개의 PFB 엔트리가 있음), 현재 선형 인스트럭션 포인터(CLIP)(502), 분기 오프셋 필드(503), 목표 판독 포인터 필드(504), 및 엔트리 유효 필드(505)를 포함한다.
도시된 바와 같이, CLIP 0×120h에서 분기를 갖는 루프가 페치 유닛에 의해 펼쳐지며 사전페치 버퍼에 기입되면, 유입 CLIP 및 분기 오프셋은 PFB 엔트리 각각의 유효 CLIP 및 분기 오프셋 필드와 비교된다. 비교에 따라, 유효 비트는 도시된 바와 같이 PFB 엔트리 3에서 설정된다. 또한, PFB 엔트리 3은 PFB로부터 인스트럭션을 스트리밍할 수 있게 하는 전향 PFB 판독 포인터를 기록한다. 일 실시예에 있어서, 이후의 동작이 수행된다.
(1) 분기가 예측된다.
(2) CLIP 및 오프셋이 PFB에 엔트리가 존재하는지 비교된다.
(3) PFB(도시된 예에서 이것은 엔트리 0임)의 LSD 구조에서 엔트리 중 하나에 대해 부합되는 것이 있다면, 엔트리 0의 PFB 목표 판독 포인터 필드는 LSD 구조의 엔트리 3으로 복사되고, 엔트리 유효 비트는 PFB 엔트리의 기록 시간으로 설정된다. 일 실시예에 있어서, PFB 엔트리는 16 바이트의 데이터 캐시 라인과 매크로 인스트럭션의 종료를 가리키는 바이트당 1 사전디코딩 비트를 포함한다.
(4) PFB 판독 포인터가 엔트리 3에 도달하면, PFB 목표 판독 포인터 및 유효 비트를 포함하는 엔트리 3으로부터의 모든 정보를 판독하는 데 이용한다.
(5) 유효 비트에 근거하여, 다음 순차 PFB 엔트리 4를 판독하는 대신에 목표 판독 포인터를 이용하여 엔트리 1로 전향한다.
(6) 현재 PFB 엔트리는 엔트리 1, 엔트리 2, 엔트리 3으로부터 순차적으로 판독된다.
(7) 엔트리 3에서 PFB 유효 비트가 판독되고, PFB는 다음 PFB 엔트리를 판독하는 데 목표 판독 포인터를 이용한다.
(8) 단계 6 및 7이 반복된다.
Figure pct00001

일 실시예에 있어서, 각 PFB 엔트리는 PFB로부터 스트리밍될 인스트럭션이 들어있는 완전한 16바이트 캐시 라인을 포함한다. 캐시 라인 원(raw) 데이터를 따라, 사전디코딩 비트, 및 분기 인스트럭션의 최종 바이트를 나타내는 BTB 마커도 PFB 내에 저장된다. 사전디코딩 비트는 사전디코딩 캐시(215)에 저장된다. 사전디코딩 캐시에서 캐시 라인의 바이트당 1비트가 있다. 이 비트는 매크로 인스트럭션의 종료를 가리킨다. BTB 마커도 분기 바이트당 1비트이며, 인스트럭션의 최종 바이트를 가리킨다. PFB 엔트리에 기입되는 16바이트 캐시라인 내에 16개의 인스트럭션까지 있을 수 있다. BTB 사전예측 분기 인스트럭션에 관하여, 분기 목표의 인스트럭션을 가진 캐시 라인은 항상 PFB의 다음 순차 엔트리에 기입된다. 일 실시예에 있어서, 그 출력이 PFB 엔트리를 판독하는 데 이용되는 4:1 MUX가 있다. MUX로의 입력은 (1) PFB 엔트리로부터 인스트럭션을 정상적으로 스트리밍하고, 모든 인스트럭션이 엔트리로부터 스트리밍되었을 때 전진(advance)하는 PFB 포인터, (2) 분기 인스트럭션이 PFB 엔트리로부터 스트리밍될 때 분기 목표 PFB 판독 포인터 (3) 오예측 분기와 같은 청산 조건후의 PFB 판독 포인터로서 이것은 항상 제 1 PFB 엔트리를 가리킴 및 (4) LSD의 참여로 인한 PFB 목표 판독 포인터이다.
LSD 필드에 대한 엔트리의 수가 PFB 엔트리의 수보다 작아 전력/면적을 감소시키는 PFB LSD의 다른 실시예가 도 6에 도시된다. 특히, 이 예에서, LSD 필드에 대한 4개의 엔트리(LSD 엔트리 번호 0-3을 가짐) 및 PFB 필드에 대한 6개의 엔트리(0-5로 번호가 부여됨)가 있다. 각 PFB 엔트리 내의 헤드 포인터 값은 페치 유닛 내의 예측기에 의해서 예측된 분기 인스트럭션과 연관된 LSD 엔트리를 가리키는 데 이용된다. 예를 들어, 헤드 포인터 0001은 LSD 엔트리 번호 0을 가리키고, 헤드 포인터 0010은 LSD 엔트리 번호 1을 가리키고, 헤드 포인터 0100은 LSD 엔트리 번호 2를 가리키고, 헤드 포인터 1000은 LSD 엔트리 번호 3을 가리킨다. 0000의 헤드 포인터값은 PFB 엔트리가 LSD 엔트리를 가리키는 BTB 예측된 분기를 갖지 않는다는 것을 가리킨다. 따라서, (1) 부합되는 CLIP 및 분기 오프셋이 검출되는 경우, (2) 부합하는 LSD 엔트리가 임의의 PFB 엔트리로부터 그것을 가리키는 해당 유효 헤드 포인터를 갖는 경우, 사전페치에서 부합하는 것이 검출된다. 일 실시예에 있어서, PFB 엔트리로부터의 헤드 포인터의 비트[0]은 논리합되고(OR'ed) 부합되는 것으로 한정될 수 있다. (3) 일 실시예에 있어서, PFB의 LSD 구조에서 엔트리 중 하나에 대해 부합되는 것이 있는 경우에, 부합하는 엔트리의 PFB 목표 판독 포인터 필드는 BTB 예측을 갖는 해당 캐시 라인이 기입되는 PFB의 엔트리로 복사된다. 또한, LSD 유효 비트는 BTB 예측된 분기 인스트럭션을 갖는 현재 기입되는 PFB 엔트리에 대해 설정된다. (4) PFB 판독 포인터가 LSD 유효 비트 설정을 갖는 엔트리에 도달하면, 그것은 PFB 목표 판독 포인터 및 LSD 유효 비트를 포함하는 엔트리로부터의 모든 정보를 판독하는 데 이용된다. (5) LSD 유효 비트에 근거하여, 다음 순차 PFB 엔트리를 판독하는 대신 목표 판독 포인터를 이용하는 엔트리로 전향된다. (6) PFB 유효 비트를 갖는 엔트리가 판독될 때까지 PFB 엔트리가 순차적으로 판독되고, PFB는 목표 판독 포인터를 이용하여 다음 PFB 엔트리를 판독한다. (7) 상술한 동작 (5) 및 (6)을 반복한다.
본 발명의 일 실시예에 있어서, 본 발명의 실시예가 구현되는 프로세서에는 인텔사(상표)에 의해 설계된 아톰(Atom)(상표) 프로세서와 같은 저전력 프로세서가 포함된다. 그러나, 본 발명의 근본 원리는 임의의 특정 프로세서 아키텍처로 제한되지 않는다. 예를 들어, 본 발명의 근본 원리는 인텔에 의해 설계된 코어 i3, i5 및/또는 i7 프로세서, 스마트폰에 사용되는 다양한 저전력 SoC(System on a Chip) 아키텍처 및/또는 기타 휴대용 연산 장치를 포함하는 여러 상이한 프로세서 아키텍처 상에서 구현될 수 있다.
도 8에는 본 발명의 실시예가 구현될 수 있는 바람직한 컴퓨터 시스템(800)이 도시된다. 컴퓨터 시스템(800)은 정보를 통신하는 시스템 버스(820)와, 버스(820)에 연결되어 정보를 처리하는 프로세서(810)를 구비한다. 컴퓨터 시스템(800)은 버스(820)에 연결되어 프로세서(810)에 의해 실행될 정보 및 인스트럭션을 저장하는 RAM(random access memory) 또는 기타 동적 저장 장치(825)(본 명세서에서 주 메모리라 칭함)를 더 구비한다. 주 메모리(825)도 프로세서(810)에 의한 인스트럭션의 실행 중에 임시 변수 또는 기타 매개 정보를 저장하는 데 이용될 수 있다. 컴퓨터 시스템(800)은 버스(820)에 연결되어 프로세서(810)에 의해 이용되는 정정 정보 및 인스트럭션을 저장하는 ROM(read only memory) 및/또는 기타 정적 저장 장치(826)도 포함할 수 있다.
자기 디스크 또는 광학 디스크 및 그에 해당하는 드라이브와 같은 데이터 저장 장치(827)는 정보 및 인스트럭션을 저장하는 컴퓨터 시스템(800)에 연결될 수도 있다. 컴퓨터 시스템(800)은 I/O 인터페이스(830)를 통해 제 2 I/O 버스(850)에 연결될 수도 있다. 표시 장치(843), 입력 장치(예를 들어, 영숫자 입력 장치(842) 및/또는 커서 제어 장치(841)를 포함하는 복수의 I/O 장치가 I/O 버스(850)에 연결될 수 있다.
통신 장치(240)는 네트워크를 통해 다른 컴퓨터(서버 또는 클라이언트)를 액세스하고, 다양한 유형의 데이터를 업로딩/다운로딩하는 데 이용될 수 있다. 통신 장치(240)는 모뎀, 네트워크 인터페이스 카드, 또는 이더넷, 토큰 링 또는 기타 유형의 네트워크에 연결하는 데 이용되는 것들과 같은 기타 주지된 인터페이스 장치를 구비할 수 있다.
도 9는 본 발명의 몇몇 실시예에서 이용될 수 있는 다른 바람직한 데이터 처리 시스템을 도시하는 블록도이다. 예를 들어, 데이터 처리 시스템(900)은 휴대형 컴퓨터, PDA(personal digital assistant), 휴대 전화, 휴대형 게임기, 휴대형 미디어 플레이어, 타블렛, 또는 휴대 전화, 미디어 플레이어 및/또는 게임기를 포함할 수 있는 휴대형 연산 장치일 수 있다. 다른 예로서, 데이터 처리 시스템(900)은 네트워크 컴퓨터 또는 다른 장치 내의 내장형 처리 장치일 수 있다.
본 발명의 일 실시예에 따라, 데이터 처리 시스템(900)의 바람직한 아키텍처는 상술한 휴대 장치에 이용될 수 있다. 데이터 처리 시스템(900)은 하나 이상의 마이크로프로세서 및/또는 집적 회로 상의 시스템을 포함할 수 있는 처리 시스템(920)을 포함한다. 처리 시스템(920)은 메모리(910), 전원 공급기(925)(하나 이상의 배터리를 포함함), 음성 입력/출력 장치(940), 표시 제어기 및 표시 장치(960), 선택적인 입력/출력 장치(950), 입력 장치(970) 및 무선 트랜스시버(930)와 연결된다. 도 9에 도시되지 않은 부가 구성 요소도 본 발명의 몇몇 실시예에서 데이터 처리 시스템(900)의 일부일 수도 있고, 본 발명의 몇몇 실시예에서 도 9에 도시된 것보다 적은 수의 구성 요소가 이용될 수 있다는 것을 알 것이다. 또한, 도 9에 도시되지 않은 하나 이상의 버스가 주지된 다양한 구성 요소를 상호 연결하는 데 이용될 수 있다는 것을 알 것이다.
메모리(910)는 데이터 처리 시스템(900)에 의해 실행되는 데이터 및/또는 프로그램을 저장할 수 있다. 음성 입력/출력 장치(940)는, 예를 들어, 음악 재생 및/또는 스피커 및 마이크를 통한 전화 통화 기능을 제공하는 마이크 및/또는 스피커를 포함할 수 있다. 표시 제어기 및 표시 장치(960)는 GUI(graphical user interface)를 포함할 수 있다. 무선(예를 들어, RF) 트랜스시버(930)(예를 들어, 와이파이 트랜스시버, 적외선 트랜스시버, 블루투스 트랜스시버, 무선 휴대 전화 트랜스시버 등)는 다른 데이터 처리 시스템과 통신하는 데 이용될 수 있다. 하나 이상의 입력 장치(970)는 사용자가 시스템에 입력을 제공하게 할 수 있다. 입력 장치는 키패드, 키보드, 터치 패널, 다중 터치 패널 등일 수 있다. 선택적인 다른 입력/출력 장치(950)는 도크용 커넥터일 수 있다.
본 발명의 다른 실시예는 휴대 전화 및 호출기(예를 들어, 소프트웨어가 마이크로칩에 내장됨), 휴대 연산 장치(예를 들어, PDA, 스마트폰), 및/또는 버튼식 전화기 상에서 구현될 수 있다. 그러나, 본 발명의 근본 원리는 통신 장치 또는 통신 매체의 임의의 특정 유형으로 제한되지 않는다는 점에 유의해야 한다.
본 발명의 실시예는 상술한 다양한 단계를 포함할 수 있다. 그 단계는 범용 또는 전용 프로세서가 단계를 수행하게 하는 데 이용될 수 있는 기계 실행 가능한 인스트럭션로 구현될 수 있다. 그 대신에, 이들 단계는 그 단계를 수행하는 유선 로직을 포함하는 특정한 하드웨어 구성 요소에 의해, 또는 프로그래밍된 컴퓨터 구성 요소와 전통의 하드웨어 구성 요소의 임의 조합에 의해 수행될 수 있다.
본 발명의 구성 요소는 처리를 수행하는 컴퓨터(또는 다른 전기 장치)를 프로그래밍하는 데 이용될 수 있는 인스트럭션이 그 위에 저장되는 기계 판독 가능 매체를 포함할 수 있는 컴퓨터 프로그램 제품으로서 제공될 수도 있다. 기계 판독 가능한 매체는 플로피 디스켓, 광학 디스크, CD-ROM 및 MO(magneto-optical) 디스크, ROM, RAM, EPROM, EEPROM, 자기 또는 광학 카드, 전파 매체 또는 전기적 인스트럭션을 저장하는 데 적합한 기타 유형의 매체/기계 판독 가능한 매체를 포함할 수 있지만, 그것으로 제한되는 것은 아니다. 예를 들어, 본 발명은 컴퓨터 프로그램 제품으로서 다운로드될 수 있고, 그 프로그램은 통신 링크(예를 들어, 모뎀 또는 네트워크 접속)를 통해 반송파 또는 기타 전파 매체로 구현된 데이터 신호로, 원격 컴퓨터(예를 들어, 서버)로부터 요청 컴퓨터(예를 들어, 클라이언트)로 전송될 수 있다.
본 상세한 설명 전반에 걸쳐, 설명을 목적으로, 본 발명을 확실히 이해하도록 여러 특정한 세부 사항이 설정되었다. 그러나, 이들 특정한 세부 사항의 일부가 없어도 본 발명이 실행될 수 있다는 점이 당업자에게 명확할 것이다. 어떤 예에 있어서, 본 발명의 주제를 애매하게 하는 것을 피하기 위해서 주지된 구조 및 기능은 상세한 세부 사항에서 설명하지 않았다. 따라서, 본 발명의 사상 및 범주는 이하의 청구범위에 대해서 판단되어야 한다.
102 : 메모리 110 : 분기 목표 버퍼(BTB)
111 : 레코드 112 : 분기 어드레스 필드
114 : 목표 어드레스 필드 118 : 인스트럭션 포인터
120 : 프로세서 파이프라인 122 : 페치 단계
124 : 디코딩 단계 126 : 중간 단계
128 : 은퇴 단계 130 : 캐시
132 : 페치 버퍼 134 : 포트
190 : 프로세서 200 : 루프 스트림 검출기
201 : 사전페치 버퍼 202 : 비교 회로
205 : BTB 210 : 인스트럭션 페치 유닛
211 : 분기 예측 유닛 212 : 다음 인스트럭션 포인터
213 : 인스트럭션 변환 색인 버퍼(ITLB)
214 : 인스트럭션 캐시 215 : 사전 디코딩 캐시
220 : 디코딩 단계 230 : 실행 단계
240 : 통신 장치 800 : 컴퓨터 시스템
810 : 프로세서 820 : 시스템 버스
825 : 주 메모리 826 : ROM
827 : 데이터 저장 장치 830 : I/O 인터페이스
841 : 커서 제어 장치 842 : 영숫자 입력 장치
843 : 표시 장치 850 : 제 2 I/O 버스
900 : 데이터 처리 시스템 910 : 메모리
920 : 처리 시스템 925 : 전원 공급기
930 : 무선 트랜스시버 940 : 음성 입력/출력 장치
950 : 선택적인 입력/출력 장치
960 : 표시 제어기 및 표시 장치
970 : 입력 장치

Claims (21)

  1. 인스트럭션 페치 유닛(an instruction fetch unit) 및 사전페치 버퍼(a prefetch buffer)를 구비하는 프로세서의 전력 소모 저감 방법에 있어서,
    연관된 어드레싱 정보를 구비하는 분기를 검출하는 단계와,
    상기 어드레싱 정보를 인스트럭션 사전페치 버퍼 내의 엔트리와 비교하여, 상기 사전페치 버퍼 내에 실행가능한 인스트럭션 루프가 존재하는지 여부를 판정하는 단계와,
    상기 비교 결과, 인스트럭션 루프가 검출되면, 인스트럭션 페치 유닛과 그 구성 요소 중 적어도 하나의 전원을 차단하는 단계와,
    청산 조건(a clearing condition)이 검출될 때까지 상기 사전페치 버퍼로부터 인스트럭션을 직접 스트리밍하는 단계를 포함하는
    프로세서의 전력 소모 저감 방법.
  2. 제 1 항에 있어서,
    상기 어드레싱 정보는 현재 선형 인스트럭션 포인터(CLIP : current linear instruction pointer), 분기 오프셋 및/또는 분기 목표 어드레스를 포함하는
    프로세서의 전력 소모 저감 방법.
  3. 제 1 항에 있어서,
    상기 청산 조건은, 오예측 분기(a mis-predicted branch)를 포함하는
    프로세서의 전력 소모 저감 방법.
  4. 제 1 항에 있어서,
    상기 인스트럭션 루프는, 내포 인스트럭션 루프(nested instruction loop)를 포함하는
    프로세서의 전력 소모 저감 방법.
  5. 제 1 항에 있어서,
    상기 인스트럭션 페치 유닛의 전원을 차단하는 단계는, 인스트럭션 캐시와 인스트럭션 디코딩 캐시 중 적어도 하나의 전원을 차단하는 것을 포함하는
    프로세서의 전력 소모 저감 방법.
  6. 제 5 항에 있어서,
    상기 인스트럭션 페치 유닛의 전원을 차단하는 단계는, 분기 예측 유닛, 다음 인스트럭션 포인터, 및/또는 인스트럭션 변환 색인 버퍼(ITLB : instruction translation lookaside buffer)의 전원을 차단하는 것을 포함하는
    프로세서의 전력 소모 저감 방법.
  7. 제 1 항에 있어서,
    상기 인스트럭션을 스트리밍하는 단계는, 상기 인스트럭션 사전페치 버퍼로부터 상기 인스트럭션을 판독하여, 상기 인스트럭션을 프로세서 파이프라인의 디코딩 스테이지에 제공하는 것을 포함하는
    프로세서의 전력 소모 저감 방법.
  8. 연관된 어드레싱 정보를 구비하는 분기를 예측하는 인스트럭션 페치 유닛과,
    상기 어드레싱 정보를 인스트럭션 사전페치 버퍼 내의 엔트리와 비교하여, 실행 가능한 인스트럭션 루프가 상기 사전페치 버퍼 내에 존재하는지 여부를 판정하되, 상기 비교 결과, 인스트럭션 루프가 검출되면, 인스트럭션 페치 유닛과 그 구성 요소 중 적어도 하나의 전원을 차단하며, 청산 조건이 검출될 때까지 상기 사전페치 버퍼로부터 인스트럭션을 직접 스트리밍하는 루프 스트림 검출기 유닛을 구비하는
    프로세서의 전력 소모 저감 장치.
  9. 제 8 항에 있어서,
    상기 어드레싱 정보는, CLIP, 분기 오프셋 및/또는 분기 목표 어드레스를 포함하는
    프로세서의 전력 소모 저감 장치.
  10. 제 8 항에 있어서,
    상기 청산 조건은, 오예측 분기를 포함하는
    프로세서의 전력 소모 저감 장치.
  11. 제 8 항에 있어서,
    상기 인스트럭션 루프는, 내포 인스트럭션 루프(nested instruction loop)를 포함하는
    프로세서의 전력 소모 저감 장치.
  12. 제 8 항에 있어서,
    상기 인스트럭션 페치 유닛의 전원을 차단하는 것은, 인스트럭션 캐시와 인스트럭션 디코딩 캐시 중 적어도 하나의 전원을 차단하는 것을 포함하는
    프로세서의 전력 소모 저감 장치.
  13. 제 12 항에 있어서,
    상기 인스트럭션 페치 유닛의 전원을 차단하는 것은, 분기 예측 유닛, 다음 인스트럭션 포인터, 및/또는 인스트럭션 변환 색인 버퍼(ITLB)의 전원을 차단하는 것을 포함하는
    프로세서의 전력 소모 저감 장치.
  14. 제 8 항에 있어서,
    상기 인스트럭션을 스트리밍하는 것은, 상기 인스트럭션 사전페치 버퍼로부터 상기 인스트럭션을 판독하여, 상기 인스트럭션을 프로세서 파이프라인의 디코딩 스테이지에 제공하는 것을 포함하는
    프로세서의 전력 소모 저감 장치.
  15. 표시장치와,
    인스트럭션을 저장하는 메모리와,
    연관된 어드레싱 정보를 구비하는 분기를 예측하는 인스트럭션 페치 유닛과,
    상기 어드레싱 정보를 인스트럭션 사전페치 버퍼 내의 엔트리와 비교하여, 실행 가능한 인스트럭션 루프가 상기 사전페치 버퍼 내에 존재하는지 여부를 판정하되, 상기 비교 결과, 인스트럭션 루프가 검출되면, 인스트럭션 페치 유닛과 그 구성 요소 중 적어도 하나의 전원을 차단하며, 청산 조건이 검출될 때까지 상기 사전페치 버퍼로부터 인스트럭션을 직접 스트리밍하는 루프 스트림 검출기 유닛
    을 포함하는, 인스트럭션을 처리하는 프로세서를 구비하는
    컴퓨터 시스템.
  16. 제 15 항에 있어서,
    상기 어드레싱 정보는, CLIP, 분기 오프셋 및/또는 분기 목표 어드레스를 포함하는 컴퓨터 시스템.
  17. 제 15 항에 있어서,
    상기 청산 조건은 오예측 분기를 포함하는
    컴퓨터 시스템.
  18. 제 15 항에 있어서,
    상기 인스트럭션 루프는 내포 인스트럭션 루프를 포함하는
    컴퓨터 시스템.
  19. 제 15 항에 있어서,
    상기 인스트럭션 페치 유닛의 전원을 차단하는 것은, 인스트럭션 캐시와 인스트럭션 디코딩 캐시 중 적어도 하나의 전원을 차단하는 것을 포함하는
    컴퓨터 시스템.
  20. 제 19 항에 있어서,
    상기 인스트럭션 페치 유닛의 전원을 차단하는 것은, 분기 예측 유닛, 다음 인스트럭션 포인터, 및/또는 인스트럭션 변환 색인 버퍼(ITLB)의 전원을 차단하는 것을 포함하는
    컴퓨터 시스템.
  21. 제 15 항에 있어서,
    상기 인스트럭션을 스트리밍하는 것은, 상기 인스트럭션 사전페치 버퍼로부터 상기 인스트럭션을 판독하여, 상기 인스트럭션을 프로세서 파이프라인의 디코딩 스테이지에 제공하는 것을 포함하는
    컴퓨터 시스템.
KR1020137007391A 2010-09-24 2011-09-23 인스트럭션 페치 유닛을 전원 차단하여 프로세서에서의 전력 소모를 저감하는 방법 및 장치 KR20130051999A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/890,561 US20120079303A1 (en) 2010-09-24 2010-09-24 Method and apparatus for reducing power consumption in a processor by powering down an instruction fetch unit
US12/890,561 2010-09-24
PCT/US2011/053152 WO2012040664A2 (en) 2010-09-24 2011-09-23 Method and apparatus for reducing power consumption in a processor by powering down an instruction fetch unit

Publications (1)

Publication Number Publication Date
KR20130051999A true KR20130051999A (ko) 2013-05-21

Family

ID=45871908

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137007391A KR20130051999A (ko) 2010-09-24 2011-09-23 인스트럭션 페치 유닛을 전원 차단하여 프로세서에서의 전력 소모를 저감하는 방법 및 장치

Country Status (8)

Country Link
US (1) US20120079303A1 (ko)
JP (1) JP2013541758A (ko)
KR (1) KR20130051999A (ko)
CN (1) CN103119537B (ko)
DE (1) DE112011103212B4 (ko)
GB (1) GB2497470A (ko)
TW (1) TWI574205B (ko)
WO (1) WO2012040664A2 (ko)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9396117B2 (en) 2012-01-09 2016-07-19 Nvidia Corporation Instruction cache power reduction
US9176571B2 (en) * 2012-03-02 2015-11-03 Semiconductor Energy Laboratories Co., Ltd. Microprocessor and method for driving microprocessor
US9552032B2 (en) 2012-04-27 2017-01-24 Nvidia Corporation Branch prediction power reduction
US9547358B2 (en) * 2012-04-27 2017-01-17 Nvidia Corporation Branch prediction power reduction
US9557999B2 (en) * 2012-06-15 2017-01-31 Apple Inc. Loop buffer learning
US9753733B2 (en) 2012-06-15 2017-09-05 Apple Inc. Methods, apparatus, and processors for packing multiple iterations of loop in a loop buffer
US9710276B2 (en) * 2012-11-09 2017-07-18 Advanced Micro Devices, Inc. Execution of instruction loops using an instruction buffer
US9645934B2 (en) * 2013-09-13 2017-05-09 Samsung Electronics Co., Ltd. System-on-chip and address translation method thereof using a translation lookaside buffer and a prefetch buffer
US9569220B2 (en) * 2013-10-06 2017-02-14 Synopsys, Inc. Processor branch cache with secondary branches
US9632791B2 (en) * 2014-01-21 2017-04-25 Apple Inc. Cache for patterns of instructions with multiple forward control transfers
US9471322B2 (en) 2014-02-12 2016-10-18 Apple Inc. Early loop buffer mode entry upon number of mispredictions of exit condition exceeding threshold
US20150254078A1 (en) * 2014-03-07 2015-09-10 Analog Devices, Inc. Pre-fetch unit for microprocessors using wide, slow memory
US9524011B2 (en) 2014-04-11 2016-12-20 Apple Inc. Instruction loop buffer with tiered power savings
CN104391563B (zh) * 2014-10-23 2017-05-31 中国科学院声学研究所 一种寄存器堆的循环缓冲电路及其方法,处理器装置
US10203959B1 (en) * 2016-01-12 2019-02-12 Apple Inc. Subroutine power optimiztion
US10223123B1 (en) * 2016-04-20 2019-03-05 Apple Inc. Methods for partially saving a branch predictor state
GB2580316B (en) 2018-12-27 2021-02-24 Graphcore Ltd Instruction cache in a multi-threaded processor
CN111723920A (zh) * 2019-03-22 2020-09-29 中科寒武纪科技股份有限公司 人工智能计算装置及相关产品
WO2020192587A1 (zh) * 2019-03-22 2020-10-01 中科寒武纪科技股份有限公司 人工智能计算装置及相关产品
US20210200550A1 (en) * 2019-12-28 2021-07-01 Intel Corporation Loop exit predictor

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3273240A (en) * 1964-05-11 1966-09-20 Steuart R Florian Cutting tool
JPH05241827A (ja) * 1992-02-27 1993-09-21 Nec Ibaraki Ltd 命令バッファ制御装置
JP2694799B2 (ja) * 1993-09-07 1997-12-24 日本電気株式会社 情報処理装置
US5623615A (en) * 1994-08-04 1997-04-22 International Business Machines Corporation Circuit and method for reducing prefetch cycles on microprocessors
US5860106A (en) * 1995-07-13 1999-01-12 Intel Corporation Method and apparatus for dynamically adjusting power/performance characteristics of a memory subsystem
JPH0991136A (ja) * 1995-09-25 1997-04-04 Toshiba Corp 信号処理装置
US6622236B1 (en) * 2000-02-17 2003-09-16 International Business Machines Corporation Microprocessor instruction fetch unit for processing instruction groups having multiple branch instructions
US6678815B1 (en) * 2000-06-27 2004-01-13 Intel Corporation Apparatus and method for reducing power consumption due to cache and TLB accesses in a processor front-end
US7337306B2 (en) * 2000-12-29 2008-02-26 Stmicroelectronics, Inc. Executing conditional branch instructions in a data processor having a clustered architecture
US6993668B2 (en) * 2002-06-27 2006-01-31 International Business Machines Corporation Method and system for reducing power consumption in a computing device when the computing device executes instructions in a tight loop
US20040181654A1 (en) * 2003-03-11 2004-09-16 Chung-Hui Chen Low power branch prediction target buffer
US7028197B2 (en) * 2003-04-22 2006-04-11 Lsi Logic Corporation System and method for electrical power management in a data processing system using registers to reflect current operating conditions
US7444457B2 (en) * 2003-12-23 2008-10-28 Intel Corporation Retrieving data blocks with reduced linear addresses
US7475231B2 (en) * 2005-11-14 2009-01-06 Texas Instruments Incorporated Loop detection and capture in the instruction queue
US7496771B2 (en) * 2005-11-15 2009-02-24 Mips Technologies, Inc. Processor accessing a scratch pad on-demand to reduce power consumption
DE102007031145A1 (de) * 2007-06-27 2009-01-08 Gardena Manufacturing Gmbh Handbetätigbare Schere
JP5043560B2 (ja) * 2007-08-24 2012-10-10 パナソニック株式会社 プログラム実行制御装置
US9772851B2 (en) * 2007-10-25 2017-09-26 International Business Machines Corporation Retrieving instructions of a single branch, backwards short loop from a local loop buffer or virtual loop buffer
US20090217017A1 (en) * 2008-02-26 2009-08-27 International Business Machines Corporation Method, system and computer program product for minimizing branch prediction latency
JP2010066892A (ja) * 2008-09-09 2010-03-25 Renesas Technology Corp データプロセッサ及びデータ処理システム
CN105468334A (zh) * 2008-12-25 2016-04-06 世意法(北京)半导体研发有限责任公司 对非控制流指令减少分支检验
US9170816B2 (en) * 2009-01-15 2015-10-27 Altair Semiconductor Ltd. Enhancing processing efficiency in large instruction width processors
DE102009019989A1 (de) * 2009-05-05 2010-11-11 Gardena Manufacturing Gmbh Handbetätigte Schere
JP5423156B2 (ja) * 2009-06-01 2014-02-19 富士通株式会社 情報処理装置及び分岐予測方法
US8370671B2 (en) * 2009-12-02 2013-02-05 International Business Machines Corporation Saving power by powering down an instruction fetch array based on capacity history of instruction buffer
US8578141B2 (en) * 2010-11-16 2013-11-05 Advanced Micro Devices, Inc. Loop predictor and method for instruction fetching using a loop predictor

Also Published As

Publication number Publication date
CN103119537A (zh) 2013-05-22
DE112011103212T5 (de) 2013-07-18
CN103119537B (zh) 2017-07-11
US20120079303A1 (en) 2012-03-29
TW201224920A (en) 2012-06-16
GB2497470A (en) 2013-06-12
WO2012040664A3 (en) 2012-06-07
WO2012040664A2 (en) 2012-03-29
JP2013541758A (ja) 2013-11-14
DE112011103212B4 (de) 2020-09-10
TWI574205B (zh) 2017-03-11
GB201305036D0 (en) 2013-05-01

Similar Documents

Publication Publication Date Title
KR20130051999A (ko) 인스트럭션 페치 유닛을 전원 차단하여 프로세서에서의 전력 소모를 저감하는 방법 및 장치
US10268480B2 (en) Energy-focused compiler-assisted branch prediction
KR101302611B1 (ko) 분기 예측에 이용하기 위한 다중-모드 레지스터 파일
US7752426B2 (en) Processes, circuits, devices, and systems for branch prediction and other processor improvements
US9367471B2 (en) Fetch width predictor
US10402200B2 (en) High performance zero bubble conditional branch prediction using micro branch target buffer
US7328332B2 (en) Branch prediction and other processor improvements using FIFO for bypassing certain processor pipeline stages
US9557999B2 (en) Loop buffer learning
KR101496009B1 (ko) 루프 버퍼 패킹
US8806181B1 (en) Dynamic pipeline reconfiguration including changing a number of stages
US20170090936A1 (en) Method and apparatus for dynamically tuning speculative optimizations based on instruction signature
US6938126B2 (en) Cache-line reuse-buffer
US20190004803A1 (en) Statistical correction for branch prediction mechanisms
JP2013545194A (ja) 分岐命令の中に符号化されたバイモーダル分岐予測子
KR20180039077A (ko) 전력 효율적 페치 적응
KR20170001602A (ko) 마이크로 프로세서의 프론트 엔드 및 이를 이용한 컴퓨터 구현 방법
US20200089504A1 (en) Branch prediction based on load-path history
KR20070118705A (ko) 레지스터 파일에 액세스하기 위해 프리디케이트 값을이용하는 시스템 및 방법
JP2006031697A (ja) 分岐ターゲットバッファと使用方法
US11663126B1 (en) Return address table branch predictor

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application