KR20090112645A - 정보 처리 시스템에서 프로세서가 낮은 신뢰의 분기를 만나게 되는 경우 명령 페칭을 조절함으로써 전력을 보존하는 방법 및 장치 - Google Patents

정보 처리 시스템에서 프로세서가 낮은 신뢰의 분기를 만나게 되는 경우 명령 페칭을 조절함으로써 전력을 보존하는 방법 및 장치 Download PDF

Info

Publication number
KR20090112645A
KR20090112645A KR1020097013957A KR20097013957A KR20090112645A KR 20090112645 A KR20090112645 A KR 20090112645A KR 1020097013957 A KR1020097013957 A KR 1020097013957A KR 20097013957 A KR20097013957 A KR 20097013957A KR 20090112645 A KR20090112645 A KR 20090112645A
Authority
KR
South Korea
Prior art keywords
branch
instruction
processor
fetched
instructions
Prior art date
Application number
KR1020097013957A
Other languages
English (en)
Other versions
KR101159407B1 (ko
Inventor
레이몬드 청 영
마이클 칼 그쉬윈드
프라딥 보세
앨퍼 부역토수노글루
첸-용 처
래비 네어
로버트 알랜 필로워
사우어 볼프람
Original Assignee
인터내셔널 비지네스 머신즈 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 인터내셔널 비지네스 머신즈 코포레이션
Publication of KR20090112645A publication Critical patent/KR20090112645A/ko
Application granted granted Critical
Publication of KR101159407B1 publication Critical patent/KR101159407B1/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
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer

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)

Abstract

정보 처리 시스템은 분기 명령 큐에 저장된 분기 명령에 대한 분기 예측에 대한 신뢰의 부정확성 또는 부족이 부정확성 또는 에러에 대한 사전결정된 임계 신뢰 레벨을 초과할 때마다, 명령 페처를 조정하는 프로세서를 포함한다. 이러한 식으로, 프로세서가 분기 명령의 출력을 잘못 예측할 것 같은 경우, 페처 동작의 속도는 감소되어 전력을 보존한다. 프로세서가 분기 명령의 결과를 정확히 예측할 것 같은 경우 페치 동작의 속도는 다시 최고 속도로 되돌아 간다.

Description

프로세서, 프로세서 운영 방법 및 정보 처리 시스템{METHOD AND APPARATUS FOR CONSERVING POWER BY THROTTLING INSTRUCTION FETCHING WHEN A PROCESSOR ENCOUNTERS LOW CONFIDENCE BRANCHES IN AN INFORMATION HANDLING SYSTEM}
본 발명은 일반적으로 프로세서에 관한 것으로, 특히 정보 처리 시스템에서 전력 보존 방법론을 채용하는 프로세서에 관한 것이다.
현대의 정보 처리 시스템은 종종 상당한 발열량을 방출하는 프로세서를 사용한다. 이 프로세서의 온도를 감지하는 열 조절 기법(thermal throttling techniques)이 존재한다. 프로세서의 온도가 사전결정된 임계 온도를 초과하는 경우, 시스템은 프로세서의 클록 레이트를 조절 또는 감소시켜 프로세서의 온도를 감소시킨다. 이러한 방식으로, 시스템은 원하지 않는 과열을 방지한다. 이와 달리, 시스템은 클록 게이팅을 이용하여, 즉 소정의 기간 동안 프로세서의 클록을 중단하여 프로세서의 온도를 감소시킬 수 있다.
전력 소모는 현대 프로세서의 최대 동작 주파수에 상당히 기여하는 인자이다. 프로세서가 소모하는 전력의 양을 감지하는 전력 조절 기법이 이용가능하다. 소비되는 전력이 사전결정된 임계 전압 레벨을 초과하는 경우, 전력 조절 시스템은 프로세서의 동작 주파수를 감소시켜 프로세서가 전력을 덜 소모하도록 한다.
정보 처리 시스템에서 프로세서에 의한 전력 소비를 더 감소시킬 수 있는 장치 및 방법이 필요하다.
따라서, 일 실시예에 따르면, 프로세서를 운영하는 방법이 개시된다. 이 방법은 페치된 분기 명령(fetched branch instructions)을 포함하는 명령 스트림을 제공하는 명령 소스로부터 페처(fetcher)를 통해 페칭하는 단계를 포함한다. 이 방법은 또한 명령 스트림으로부터 다수의 페치된 분기 명령을 분기 명령 큐를 통해 저장하는 단계를 포함한다. 이 방법은 분기 실행 유닛이 페치된 분기 명령을 분기 예측 정보를 사용하여 추론적으로(speculatively) 실행하고 각 페치된 분기 명령의 분기가 선택되는지 여부를 결정함으로써 실행되는 분기 명령을 제공하는 단계를 포함한다. 이 방법은 또한 분기 명령 큐에 저장된 페치된 분기 명령에 대한 분기 예측 정보의 신뢰 정도를 나타내는 신뢰 정보를 신뢰(confidence) 저장 메모리에 저장하는 단계를 더 포함한다. 이 방법은 또한 신뢰 정보가 사전결정된 신뢰 임계값보다 낮은 신뢰를 나타나는 경우 조절 회로를 통해 명령 소스로부터의 명령 페칭을 조절하는 단계를 포함하되, 상기 조절을 통해 프로세서에 의한 전력 소모는 감소된다.
또 다른 실시예에서, 프로세서를 운영하는 방법이 개시된다. 이 방법은 페치된 분기 명령을 포함하는 명령 스트림을 제공하기 위해 페처가 명령 소스로부터 명령을 페칭하는 단계를 포함한다. 이 방법은 또한 분기 명령 큐를 통해 명령 스트림으로부터 다수의 페치된 분기 명령을 저장하는 단계를 포함한다. 이 방법은 분기 실행 유닛이 분기 예측 정보를 사용하여 페치된 분기 명령을 추론적으로 실행하고 각각의 페치된 분기 명령의 분기가 선택되는지 여부를 결정함으로써 실행되는 분기 명령을 제공하는 단계를 포함한다. 이 방법은 또한 분기 명령 큐 내의 각각의 페치된 분기 명령의 분기 예측 정보의 부정확성을 나타내는 다수의 신뢰 값을 신뢰 저장 메모리에 저장하는 단계를 더 포함한다. 이 방법은 또한 신뢰 값의 합이 사전결정된 임계값을 초과하는 경우 페처에 의한 명령 소스로부터의 명령 페칭을 조절 회로를 통해 조절하는 단계를 포함하되, 상기 조절을 통해 프로세서에 의한 전력 소모는 감소된다.
또 다른 실시예에서, 명령을 저장하는 명령 소스를 포함하는 프로세서가 개시된다. 프로세서는 또한 페처를 포함하는데, 이 페처는 명령 소스에 결합되어 이 명령 소스로부터 명령을 페칭하여 페치된 분기 명령을 포함하는 명령 스트림을 제공한다. 프로세서는 페처에 결합된 분기 실행 유닛을 더 포함하되, 이 분기 실행 유닛은 페치된 분기 명령을 예측 정보를 사용하여 추론적으로 실행하고 각 분기 명령의 분기가 선택되는지 여부를 결정하여 실행되는 분기 명령을 제공한다. 프로세서는 또한 페처에 결합된 조절 제어기(throttle controller)를 포함한다. 조절 제어기는 페처에 의한 명령의 페칭을 조절할 수 있다. 조절 제어기는 다수의 페치된 분기 명령을 저장하는 분기 명령 큐를 포함한다. 조절 제어기는 또한 분기 명령 큐 내의 페치된 분기 명령에 대한 제각기의 신뢰 값을 저장하는 신뢰 저장 메모리를 포함한다. 신뢰 값은 분기 명령 큐 내의 제각기의 페치된 분기 명령에 대한 분기 예측 정보의 신뢰 부족을 나타낸다. 조절 제어기는 신뢰 저장 메모리 내의 신뢰 값의 합이 사전결정된 임계값을 초과하는 경우 명령 소스로부터의 명령 페칭을 조절하여, 프로세서에 의한 전력 소모를 감소시킨다.
첨부한 도면은 단지 본 발명의 예시적인 실시예를 나타낼 뿐이며, 따라서, 본 발명의 개념이 사실상 등가의 다른 실시예에도 적용될 수 있기 때문에, 첨부한 도면은 본 발명의 범주를 제한하지는 않는다.
도 1은 개시되어 있는 프로세서의 일 실시예에 대한 블록도,
도 2는 개시되어 있는 프로세서가 채용하는 대표적인 조절 제어기에 대한 블록도,
도 3은 개시되어 있는 프로세서가 채용하는 또 다른 조절 제어기에 대한 블록도,
도 4는 개시되어 있는 프로세서가 페치 조절 동작을 수행하는 과정의 프로세스 흐름을 나타내는 흐름도,
도 5는 도 1의 개시되어 있는 프로세서를 채용하는 정보 처리 시스템(HIS)의 블록도.
다수의 현대 프로세서는 프로세싱 효율을 증가시키기 위해 분기 예측을 사용하는 추론적 실행 기법을 채택한다. 프로세서 내의 명령 페처는 분기 명령을 포함하는 명령 스트림을 페칭한다. 프로세서는 분기 예측에 응답하여 분기 명령 이후에 명령을 추론적으로 실행할 수 있다. 보다 자세히, 명령 디코더가 명령 스트림의 페치된 분기 명령을 디코딩한 이후, 분기 예측 회로는 분기 명령이 제공하는 분기가 선택되는지 여부를 예측한다. 분기는 "선택" 또는 "미선택"된다. 분기 예측 회로는 분기 이력 정보, 즉 프로세서가 과거에 이 특정 분기 명령을 만나게 되었을 때의 분기 결과를 사용하여 분기를 선택할지 여부를 예측한다. 분기 예측 회로가 분기를 정확히 예측한 경우, 프로세서는 분기 이후 명령의 결과를 유지한다. 그러나, 분기 예측이 부정확한 경우, 프로세서는 분기 이후 명령의 결과를 폐기한다.
프로세서에 의한 명령의 추론적 실행은 전력을 소비한다. 추론적 실행이 소비하는 전력을, 프로세서 성능에 사실상 영향을 주지 않으면서 감소시키는 것이 바람직하다. 일 실시예에서, 개시된 프로세서는 프로세서가 분기 명령의 결과의 예측에 대해 낮은 신뢰를 가지게 되는 분기 명령을 상기 프로세서가 만나게 되는 경우 프로세싱 활동을 조절함으로써 전력 소비를 감소시킨다. 프로세서는 각 저장된 분기 명령에 대한 신뢰 정보와 함께 명령 스트림의 분기 명령을 저장하는 분기 명령 큐(BIQ)를 포함한다. 신뢰 정보는 프로세서가 BIQ 내의 각 분기 예측의 정확성을 나타내는 신뢰 레벨을 나타낸다. 일 실시예에서, 프로세서는 BIQ 내의 낮은 신뢰 분기의 개수를 합산한다. 낮은 레벨 분기의 개수의 합이 사전결정된 프로그램 가능한 임계값보다 큰 경우, 프로세서는 명령 페치 조절을 수행하여 전력 소비를 감소시킨다. 이 방법은 프로세서 성능에 미치는 부정적인 영향을 작게 하는데, 그 이유는 프로세서는 낮은 신뢰의 분기 경로에 대해 명령 페치 조절을 수행하나 높은 신뢰의 분기 경로에 대해서는 조절을 수행하지 않기 때문이다. 다시 말해, 프로세서는 높은 신뢰의 분기 경로에서는 조절없이 최대 속도로 명령을 계속적으로 실행한다.
도 1은 프로세서가 소비하는 전력을 감소시키기 위해 낮은 신뢰의 분기에 대해 조절을 수행하는 프로세서(100)의 일 실시예를 나타낸다. 프로세서(100)는 프로세서(100)가 실행하는 명령 스트림을 포함하는 로컬 캐시 메모리와 같은 메모리(105)를 포함한다. 따라서, 메모리(105)는 명령 소스로서 역할을 한다. 실제에 있어서, 메모리(105)는 프로세서가 실행하는 명령 스트림 또는 프로그램을 포함하는 보다 큰 외부 시스템 메모리(미도시)에 부착된다. 페처(110)는 메모리(105)에 결합되어 메모리(105)로부터 실행을 위한 명령을 페칭한다. 페처(110)는 명령 어드레스 입력(110A)을 포함한다. 디코더 회로(115)는 페처(110)에 결합되어 이 페처(110)로부터 수신한 페치된 명령을 디코딩한다. 페치된 명령 스트림은 조작부호 및 피연산자와 함께 명령을 포함한다. 명령 스트림 중 일부 명령은 분기 명령이다. 시퀀서 회로(117)는 디코더(115)에 결합된다. 시퀀서 회로(117)는 실행을 위한 특정 디코딩된 명령을 수신해야 하는 적절한 실행 유닛을 결정한다. 시퀀서 회로(117)는 후속하는 실행 유닛, 즉 고정점 실행 유닛(FXU)(120), 부동 소수점 실행(FPU) 유닛(125), 부하 저장 유닛(LSU)(130) 및 분기 실행 유닛(BUR)(135)에 결 합된다. 고정점 실행 유닛(FXU)(120)은 레지스터 파일(120A)을 포함한다. 부동 소수점 실행 유닛(125)은 레지스터 파일(125A)을 포함한다.
실행 유닛은 디코딩된 분기 명령 이후 명령 스트림 내의 명령을 추론적으로 실행한다. 분기 이력 테이블(BHT)(140)은 페처(110)의 명령 어드레스 입력(110A)과 분기 실행 유닛(BRU)(135) 사이에 결합된다. 분기 이력 테이블(140)은 이전에 실행된 분기 명령의 이력 결과를 추적한다. 분기 유닛(BRU)(135)은 이 이력 분기 실행 정보를 사용하여 현재 수신하고 있는 분기 명령에 대한 분기 예측을 수행한다. 완료 유닛(145)은 각각의 실행 유닛, 즉 FXU(120), FPU(125), LSU(130) 및 BRU(135)에 결합된다. 보다 구체적으로, 완료 유닛(145)은 FXU 레지스터 파일(120A) 및 FPU 레지스터 파일(125A)에 결합된다. 완료 유닛(145)은 추론적으로 실행된 명령이 완료되어야 하는지 여부를 결정한다. 분기 유닛(BRU)(135)이 분기를 정확히 예측한 경우, 분기에 후속하는 명령은 완료되어야 한다. 예를 들어, 분기 유닛(135)이 분기를 정확히 예측한 경우, 이 분기에 후속하는 고정점 또는 정수 명령은 완료되어야 한다. 이 경우, 완료 유닛(145)은 분기의 고정점 결과가 고정점 레지스터 파일(120A)에 기록되는 것을 제어한다. 정확히 예측된 분기에 후속하는 명령이 부동 소수점 명령인 경우, 완료 유닛(145)은 이 부동 소수점 명령의 결과가 부동 소수점 레지스터 파일(125A)에 기록되는 것을 제어한다. 명령이 완료되는 경우, 이들 명령은 더 이상 추론적이지 않다. 분기 실행 유닛(BRU)(135)은 완료 유닛(145) 및 BHT(140)와 연계하여 특정 분기 명령이 선택되어야 하는지 여부를 결정한다.
보다 구체적으로, 분기 이력 테이블(BHT)(140)은 이전에 실행된 분기 명령의 이력을 포함한다. BHT(140) 내의 각 엔트리는 방향 비트 및 신뢰 비트를 포함한다. 특정 분기 명령에 있어서, BHT 내의 그의 엔트리는 "분기 선택" 또는 "분기 미선택"을 나타내는 방향 비트를 포함한다. 일 실시예에서, 분기가 마지막에 선택되지 않았다면 방향 비트는 0일수 있고 또는 분기가 마지막에 선택되었다면 방향 비트는 1일 수 있다. 일 실시예에서, 특정 분기 명령에 있어서, 방향 비트는 프로세서가 분기 명령을 만나게 되는 다음 번에 그 분기를 프로세서가 선택해야 하는지 여부를 나타낸다. 방향 비트는 프로세서가 분기 명령을 만난 이전 번의 분기의 방향을 반드시 나타낼 필요는 없다. 그러나, 대부분의 경우, 방향 비트는 프로세서가 분기 명령을 만난 마지막의 분기의 방향을 나타낸다. 특정 분기 명령에 있어서, 선택된 분기 또는 미선택된 분기에 대한 예측의 신뢰가 낮은 경우 신뢰 비트는 1일 수 있다. 선택된 분기 또는 미선택된 분기에 대한 예측의 신뢰가 높은 경우 신뢰 비트는 0일 수 있다. 특정 분기 예측이 낮은 신뢰를 나타내는 하나의 이유는, 프로세서가 특정 분기 명령을 실행한 마지막 두 번에서, 프로세서는 한가지 경우에서만 분기를 선택했기 때문이다. 특정 분기 예측이 높은 신뢰를 나타내는 이유는 프로세서가 특정 분기 명령을 실행한 마지막 두 번에서, 프로세서는 두 번 모두 분기를 선택하였거나 또는 두 번 모두 분기를 선택하지 않았기 때문이다.
프로세서(100)는 분기 명령 큐(BIQ)(205)를 구비한 조절 제어 회로 또는 조절 제어기(200)를 포함한다. 이 특정 실시예에서, 분기 명령 큐(BIQ)(205)는 페처가 페칭했으나 프로세서가 아직 완료하지 않은 명령 스트림 내의 16개의 엔트리, 즉 최대 16개의 분기 명령을 포함한다. BIQ(205)는 특정 애플리케이션에 따라 16개의 엔트리보다 많은 또는 그보다 적은 엔트리를 포함할 수 있다. 조절 제어기(200)는 또한 BIQ(205)와 연관된 신뢰 추적 큐 또는 신뢰 큐(CQ)(210)를 포함한다. CQ(210)는 신뢰 정보를 저장하는 신뢰 정보 저장 메모리로서 동작한다. BIQ(205)의 각 분기 명령에 대해, CQ(210)는 제각기의 신뢰 비트를 포함한다. 이 특정 실시예에서, CQ는 16개의 엔트리, 즉 낮은 신뢰 비트를 포함한다. BIQ(205) 내의 특정 분기 명령 엔트리에 대해, CQ(210) 내의 제각기의 CQ 신뢰 비트 엔트리가 논리 1을 나타내는 경우, 이것은 이 특정 분기 명령에 대한 분기 예측의 낮은 신뢰를 나타낸다. 그러나, BIQ(205) 내의 특정 분기 명령 엔트리에 대해, CQ(210) 내의 제각기의 CQ 신뢰 비트 엔트리가 논리 0을 나타내는 경우, 이것은 이 특정 분기 명령에 대한 분기 예측의 높은 신뢰를 나타낸다. 조절 제어기(200)는 CQ(210) 내에 신뢰 비트를 위치시키기 위해 분기 이력 테이블(140)을 액세스한다. 예를 들어, 일 실시예에서, BIQ(205)가 저장하는 특정 분기 명령에 대해, 대응하는 제각기의 신뢰 비트를 CQ(210)에 위치시키기 위해, 프로세서가 분기 명령을 실행한 마지막에 BRU(135) 및 BHT(140)가 분기 명령을 잘못 예측한 경우 조정 제어기(200)는 1의 신뢰 비트를 CQ 엔트리에 저장한다. 그러나, 프로세서가 분기 명령을 실행한 마지막에 BUR(135) 및 BHT(140)가 분기 명령을 정확히 예측한 경우, 조절 제어기(200)는 0의 신뢰 비트와 함께 그 분기에 대한 제각기의 엔트리를 CQ에 위치시킨다. 일 실시예에서, BHT(140)는 제각기의 분기 명령의 신뢰 비트 또는 신뢰 값을 유지 또는 저장하고 BHT(140)는 분기 명령이 실행되는 경우 그 자신을 업데이트한 다. 페처(110)가 특정 분기 명령을 페칭하는 경우, CQ(210)는 BHT(140)를 액세스하고 특정 분기 명령에 대응하는 신뢰 비트를 판독 및 저장한다.
분기 명령 큐(BIQ)(205)는 도 1의 실시예에서 순환식 큐이다. BIQ(205)는 헤드 포인터(215)로서 개념적으로 도시된 헤드 포인터와, 테일 포인터(220)로서 개념적으로 도시된 테일 포인터를 포함한다. 헤드 포인터(215)는 BIQ(205) 내에서 가장 새로운 분기 명령을 가리키고, 테일 포인터(220)는 BIQ(205) 내에서 가장 오래된 분기 명령을 가리킨다. BIQ(205)가 페처(110)로부터 분기 명령을 수신함에 따라, 헤드 및 테일 포인터는 한번에 하나의 분기 명령을 이동시켜 헤드 포인터(215)는 항상 BIQ(205)에 입력되는 가장 새로운 분기 명령을 가리키고 테일 포인터는 항상 BIQ(205)에서 가장 오래된 분기 명령을 가리킨다.
조절 제어기(200)는 또한 헤드 포인터(215), 테일 포인터(220) 및 신뢰 큐(CQ)(210)에 결합되는 제어 논리(225)를 포함한다. 따라서, 제어 논리(225)는 현재의 헤드 포인터, 현재의 테일 포인터 및 CQ(210)의 모든 신뢰 비트를 수신한다. 헤드 포인터는 또 다른 분기 명령이 BIQ(205)에 입력될 때마다 변경된다. 테일 포인터는 분기 명령이 완료될 때마다 변경된다. 신뢰 큐(CQ)(210)는 BIQ(205)의 각 분기 명령 엔트리에 대한 제각기의 신뢰 비트를 저정한다. 다시 말해, BIQ(205)의 각 분기 명령 엔트리는 CQ(210)내의 연관된 대응 신뢰 비트를 갖는다. 제어 논리(225)는 신뢰 비트 합계를 얻기 위해 CQ(210)의 모든 신뢰 비트를 합산 또는 더한다. 이 특정 실시예에서, CQ(210)는 낮은 신뢰 비트를 저장하기 때문에, 제어 논리(225)는 낮은 신뢰 비트 합계를 결정한다. 제어 논리(225)는 현재의 낮 은 신뢰 비트 합계가 사전결정된 임계값의 낮은 신뢰 레벨보다 큰지 여부를 판정하는 테스트를 수행한다. 현재의 낮은 신뢰 비트 합계가 실제로 사전결정된 임계값의 낮은 신뢰 레벨보다 높은 것으로 제어 논리(225)가 결정하는 경우, 조절 제어기(200)는 페처(110)로 하여금 페치 조절을 개시하도록 하여 프로세서 전력 소비를 감소시킨다. 정확한 분기 예측이 되지 않을 것 같은 명령의 추론적 실행 동안 이와 같이 페치를 조절함으로써, 프로세서(100)는 전력 소모를 감소시킨다. 그러나, 현재의 낮은 신뢰 비트 합계가 사전결정된 임계값의 신뢰 레벨보다 높지 않은 경우, 분기 예측은 정확할 수 있고 제어 논리(225)는 명령의 페칭 및 추론적 실행을 조절 없이 최고 속도로 허용한다.
도 2는 도 1의 조절 제어기(200)에 대한 보다 자세한 블록도이다. 도 2는 도 1을 참조하여 위에서 이미 설명한 분기 명령 큐(BIQ)(205), 신뢰 큐(CQ)(210), 제어 논리(225) 및 페치 조절 상태 머신(230)을 나타낸다. BIQ(205)는 도 2에 도시되어 있는 바와 같이 16개의 분기 명령 엔트리(BI-0,BI-1,...BI-15)를 포함한다. 신뢰 큐(CQ)는 0 내지 15로 표기된 16개의 신뢰 비트 엔트리를 포함한다. 도 2에서, 헤드 포인터(215) 및 테일 포인터(220)는 분기 명령(BI-0,BI-2)을 가리키고 있지만, 새로운 분기 명령이 페치된 명령 스트림으로부터 BIQ(205)로 입력되는 경우 헤드 및 테일 포인터는 이동한다. 프로세서가 명령 스트림 내의 분기 명령을 페치, 실행 및 완료함에 따라, BIQ(205)가 저장하는 특정 분기 명령은 일정한 흐름으로 처리된다. BIQ(205)는 페치된 명령 스트림으로부터 가장 최근에 페치된 16개의 분기 명령을 저장한다. 따라서, 하나의 시점에서, BIQ(205) 내의 제각기의 분기 명령과 연관된 신뢰 비트는 전체적으로 조절 제어기가 이들 분기 명령에 대한 예측 정확성에 있어서 낮은 신뢰를 가진다는 것을 나타낼 수 있다. 이 경우, 조절 제어기(200)는 페치 조절을 개시하여 전력 소비를 감소시킨다. 그러나, 또 다른 시점에서, 분기 명령의 또 다른 그룹이 BIQ에 위치한다. 이 경우, BIQ(205)의 제각기의 분기 명령과 연관된 신뢰 비트는 전체적으로 조절 제어기(200)가 이들 분기 명령에 대한 예측 정확성에 있어서 높은 신뢰를 가진다는 것을 나타낼 수 있다. 따라서, 조절 제어기(200)는 전력 소모를 줄이기 위한 페치 조절을 개시하지 않지만, 대신 페처(110)로 하여금 최고 속도로 페치를 수행하도록 명령한다.
제어 논리(225)는 16 라인 입력(235A) 및 16 라인 입력(235B)을 구비한 AND 회로(235)를 포함한다. AND 회로 입력(235A)은 CQ(210) 내의 16 슬롯 또는 저장 위치에 결합되어 AND 회로(235)는 CQ(210)로부터 16 신뢰 비트를 수신한다. 헤드 포인터(215) 및 테일 포인터(220)는 유효 벡터 생성 회로(240)에 결합된다. 유효 벡터 생성 회로(240)는 헤드 및 테일 포인터 정보를 사용하여 16 비트 벡터를 생성하고, 벡터의 각 비트는 BIQ(205)의 상이한 엔트리에 대응한다. 16 비트 벡터의 각 비트는 BIQ(205) 내의 대응하는 분기 명령 엔트리가 유효한지 여부를 나타낸다. 16 비트 벡터의 특정 비트가 논리 1을 나타내는 경우, BIQ(205)의 대응하는 분기 명령 엔트리는 유효하다. 즉, 분기 명령은 여전히 프로세스 중에 있다. 그러나, 16 비트 벡터의 특정 비트가 논리 0을 나타내는 경우, BIQ(205)의 대응하는 분기 명령 엔트리는 유효하지 않다. 유효한 BIQ(205)의 엔트리는 테일 포인터에서 시작되고 헤드 포인터로 이어진다. 예를 들어, 헤드 포인터가 엔트리(BI-3)에 있고 테 일 포인터가 엔트(BI-7)에 있는 경우, 16 비트 유효 벡터는 0001111100000000이다. 이것은 엔트리(BI-3,BI-4,BI-5,BI-6,BI-7)는 유효하지만, 나머지 엔트리는 유효하지 않다는 것을 의미한다. 헤드 포인터가 테일 포인터 위에 있는 경우, 유효 벡터는 랩 어라운드(wraps around)되고 불연속적이다. 예를 들어, 헤드 포인터가 엔트리(BI-14)에 있고 테일 포인터가 엔트(BI-2)에 있는 경우, 유효 벡터는 1110000000000011이다. 이것은 엔트리(BI-0,BI-1,BI-2,BI-14,BI-15)는 유효하지만, 나머지 엔트리는 유효하지 않다는 것을 의미한다. 도 2에서, 유효 벡터 박스(245)는 유효 벡터(245)의 16 비트를 나타낸다.
따라서, 입력(235A)에서, AND 회로(235)는 CQ(210)로부터 16 낮은 신뢰 비트를 수신하는 한편, 입력(235B)에서, AND 회로(235)는 유효 벡터의 16 비트를 수신한다. AND 회로(235)가 16 낮은 신뢰 비트를 16개의 제각기의 유효 벡터 비트와 논리적 AND 연산을 수행하는 경우, 유효 벡터는 AND 회로(235)의 출력에서 16 비트 결과로부터 임의의 무효의 낮은 신뢰 비트를 사실상 제거하는 마스크로서 동작한다. 따라서, 이 특정 실시예에서 AND 게이트(235)의 출력에서의 16 비트 결과는 유효한 낮은 신뢰 비트만을 포함한다. 다시 말해, AND 회로(235)의 출력에서의 16 낮은 신뢰 비트는 BIQ(235) 내의 제각기의 유효 분기 명령에 대한 낮은 신뢰 비트에 대응한다. AND 회로(235)의 출력에 가산기(250)가 결합된다. 가산기(250)는 AND 회로(235)로부터 수신하는 유효한 낮은 신뢰 비트를 합산하여 낮은 신뢰 분기 합계, 즉 거주 카운트(POPCOUNT)를 가산기(250)의 출력에서 제공한다. 따라서, POPCOUNT는 특정한 시점에서 BIQ(205) 내의 유효한 낮은 신뢰 분기의 총 개수를 나 타낸다. 비교기(255)는 낮은 신뢰 분기 합계, POPCOUNT를 수신하기 위해 가산기(250)에 결합되는 하나의 입력을 포함한다. 비교기(255)의 나머지 입력은 프로그램가능 신뢰 임계값을 비교기(255)에 제공하는 프로그램가능 임계 유닛(260)에 결합된다. 설계자 또는 다른 실체는 낮은 신뢰 레벨을 나타내는 신뢰 임계값을 선택하는데, 이 임계값을 초과한다는 것은 BIQ 내의 분기에 대한 예측의 신뢰가 매우 낮아 페치 조절 및 전력 보존이 개시되어야 함을 나타낸다.
비교기(255)의 출력은 페치 조절 상태 머신(230)에 결합된다. 낮은 신뢰 분기의 총 개수, POPCOUNT가 사전결정된 프로그램가능 임계값을 초과하는 경우, 비교기(255)는 논리 1을 페치 조절 상태 머신(230)에 출력한다. 이에 응답하여, 페치 조절 상태 머신(230)은 THROTTLE 신호를 페처 입력(110B)에 전송하여 페처(110)가 명령 페칭의 속도를 줄이도록 한다. 명령 페칭의 속도를 줄이게 되면, 선택될 것 같지 않은 분기, 즉 낮은 신뢰의 분기를 프로세서(100)가 실행하는데 소비하는 전력의 양이 감소된다. 그러나, 낮은 신뢰 분기의 총 개수, POPCOUNT가 사전결정된 프로그램가능 임계값을 초과하지 않은 경우, 비교기(255)는 논리 0을 페치 조절 상태 머신(230)에 출력한다. 이에 응답하여, 페치 조절 상태 머신(230)은 THROTTLE 신호를 페처 입력(110B)에 전송하여 페처(110)가 명령의 페칭을 최고 속도로 수행하도록 한다. 이 경우, 프로세서는 BIQ(205)의 분기 명령에 대한 예측의 높은 신뢰를 나타낸다. 따라서, 분기 명령의 추론적 실행은 페처 조절 및 전력 감소 없이 최고 속도로 실행된다.
도 3은 제어기(300)로서의 조절 제어기를 간단히 나타낸다. 도 3의 조절 제 어기(300)는 도 2의 조절 제어기(200)와 유사하며 유사한 요소는 유사한 참조번호가 주어진다. 조절 제어기(300)에서, 제어기는 BIQ(205) 내의 분기 명령의 유효성을 체크하기 위한 유효 벡터 생성을 채용하지 않는다. 따라서, 조절 제어기(300)는 유효 벡터 생성기(240) 및 AND 회로(235)를 채용하지 않는다. 도 3의 제어 논리(255')는 도 2의 제어 논리(225)와 유사하나, 예외적으로 제어 논리(225')는 AND 회로(235)를 사용하지 않는다. 그러나, BIQ(205) 내의 분기 명령의 유효성을 체크하는 유효 벡터 생성을 제거함으로써, 가산기(250)가 CQ(210)로부터 수신하는 낮은 신뢰 비트는 불량한 또는 유용하지 않은 정보를 포함할 수 있다. 유효 벡터 체킹 기능을 제거함으로써, 조절 제어기는 조절이 필요하지 않는 경우에도 페처를 조절할 수 있다. 이러한 문제를 해결하기 위해, 조절 제어기(300)는 프로세서(100)가 플러시(flush) 또는 분기 예측오류를 만날때마다 CQ(210)의 모든 신뢰 비트를 소거한다. 다시 말해, 프로세서(100)가 플러시 또는 분기 예측오류를 만날때마다, 제어기(300)는 REST 신호를 CQ(210)의 RESET 입력에 인가하여 모든 CQ 신뢰 비트를 0으로 리셋한다. 실제에 있어서, 완료 유닛(145)은 RESET 신호를 CQ(210)의 RESET 입력에 전송한다(접속관계는 미도시). 프로세서는 처리를 제외한 기간 동안 이러한 플러시 동작을 만날 수 있다.
도 4는 BIQ(205) 내의 분기 명령이 낮은 신뢰를 나타내는 경우 전력을 보존하기 위한 페치 조절 동작을 수행하는 경우에 프로세서(100) 내의 프로세스 흐름을 나타내는 흐름도이다. 이러한 흐름도를 위해, 도 1의 프로세서(100)는 조절 제어기로서 도 2의 조절 제어기(200)를 이용한다. 프로세스 흐름은 블록(405)에 따라 프로세서(100)의 초기화로 시작된다. 프로그래머, 설계자 또는 다른 실체는 블록(410)에 따라 페치 조절 상태 머신(230)을 통해 페치 조절의 인에이블링 또는 페치 조절의 디스에이블링을 선택할 수 있다. 예를 들어, 프로세서는 프로그래머가 프로세서의 초기화시 페치 조절의 인에이블링 또는 디스에이블링을 설정할 수 있는 래치(미도시)를 포함할 수 있다. 조절 제어기(200)는 설명 블록(415)에 따라 페치 조절 상태 머신(230)이 인에이블링된 상태를 나타내는지 또는 디스에이블링된 상태를 나타내는 지를 결정하는 테스트를 수행한다. 페치 조절 상태 머신(230)이 인에이블링되지 않은 경우, 블록(420)에서, 모든 후속 페치 동작은 페치 조절 상태 머신(230)에 의한 페치 조절없이 정상 최고 속도로 계속된다. 다시 말해, 프로세서(100)는 개시되어 있는 전력 보존 특징을 이용하지 않고 명령의 실행을 계속한다. 그러나, 결정 블록(415)에서, 페치 조절 상태 머신(230)이 인에이블링된 상태를 나타내는 경우, 블록(425)에서와 같이, 페처(110)는 분기 명령을 포함하는 명령의 명령 스트림으로부터 명령을 페칭하기 시작한다. 이 시점에서, 분기 유닛(BRU)(135)은 분기 이력 테이블(BHT)(140)를 판독하여 분기 명령의 결과와 관련된 예측을 획득한다. 초기화시, BHT(140)는 엔트리를 포함하고 있지 않는다. 그러나, 시간이 지남에 따라, BHT(140)은 명령 스트림 내의 이전 분기 명령의 출력에 대한 이력을 누적한다. BHT(140)는 또한 BHT(140)가 분기의 명령을 예측한 마지막에 각 분기 명령을 정확히 예측했는지 여부를 나타내는 신뢰 정보를 포함한다. 프로세서(100)가 명령 스트림의 명령을 계속 실행함에 따라, 블록(430)에서와 같이, 분기 명령 큐(BIQ(205))는 분기 명령으로 충진된다. BIQ(205)의 각 분기 명령에 대해, CQ(210)는 제각기의 신뢰 비트로 충진된다.
블록(435)에서와 같이, 제어 논리(225)는 유효 벡터 생성기(240)로부터의 유효 벡터(245)를 CQ(210)의 신뢰 비트와 AND 연산을 수행함으로써 유효한 CQ(210) 내의 신뢰 비트를 검증한다. 블록(440)에서와 같이, 가산기(250)는 CQ(210)로부터의 모든 유효 신뢰 비트를 더하여 합계, POPCOUNT를 결정한다. POPCOUNT의 값은 낮은 신뢰 분기 명령 합계를 나타낸다. 블록(445)에서, 제어 논리(225)는 낮은 신뢰 분기 명령 합계, POPCOUNT가 사전결정된 낮은 신뢰 임계값, THRESH보다 큰지를 결정하는 테스트를 수행한다. 결정 블록(445)이 현재의 낮은 신뢰 분기 명령 합계, POPCOUNT가 사전결정된 낮은 신뢰 임계값, THRESH보다 큰 것으로 결정하는 경우, BIQ 내의 분기 명령에 대한 분기 예측의 정확성에 대한 신뢰는 낮으며 그에 따라 페치 조절 상태 머신(230)은 페치 조절을 개시한다. 이러한 동작은 낮은 신뢰 분기 명령 및 이 분기 명령으로부터 연장되는 분기의 명령의 추론적 실행 동안 전력 소비를 감소시킨다.
보다 구체적으로, 페치 조절 상태 머신(230)은 1 비트 신호, THROTTLE를 생성하는 프로그램가능 상태 머신이며, 0은 "페치 차단"을 나타내고 1은 "페치 허용"을 나타낸다. 상태 머신(230)의 출력은 페처(110)에 결합되어 페처(110)에 조절 신호를 제공한다. 조절 신호가 0인 경우, 이 신호는 페처가 페칭을 수행하지 않도록 지시한다. 위에서 설명한 바와 같이, 페치 조절 상태 머신(230)은 프로그래머, 설계자 또는 다른 실체에 의한 선택에 따라, 인에이블링된 상태 또는 인에이블링되지 않은 상태를 나타낼 수 있다. 페치 조절 상태 머신(230)이 인에이블링되지 않 은 상태를 나타내는 경우, 블록(420)에서와 같이, 그것은 값 1을 갖는 조절 신호를 출력하며, 그에 따라 페처(110)는 조절없이 명령을 최고 속도로 페칭한다. 그러나, 페치 조절 상태 머신(230)이 인에이블링된 상태를 나타내는 경우, 프로세스 흐르은 위에서 설명한 블록(425,430,435,440)을 계속한다.
낮은 신뢰 분기 명령 합계, POPCOUNT를 결정한 이후에는, 비교기(255)는 현재의 낮은 신뢰 분기 명령 합계, POPCOUNT가 낮은 신뢰 임계 레벨, THRESH보다 큰지 여부를 결정하는 비교 테스트를 수행한다. 현재의 낮은 신뢰 분기 명령 합계, POPCOUNT가 낮은 신뢰 임계값, THRESH보다 크지 않은 경우, 블록(450)에서와 같이, 비교기(255)는 페치 조절 상태 머신(230)으로 하여금 조절을 수행하지 않도록 지시한다. 그에 응답하여, 페치 조절 상태 머신(230)은 조절 신호, THROTTLE를 페처(110)에 전송하며, 조절 신호는 페처(110)로 하여금 조절을 수행하지 않도록 지시하는 일련의 1이다. 다시 말해, 조절 신호의 일련의 1, 즉 연속적인 논리 1 값은 페처(110)로 하여금 명령을 최고 속도로 페칭하도록 지시한다.
그러나, 현재의 낮은 신뢰 분기 명령 합계, POPCOUNT가 낮은 신뢰 임계값, THRESH보다 큰 경우, 블록(455)에서와 같이, 비교기(255)는 페치 조절 상태 머신(230)으로 하여금 페처(110)의 조절을 개시하도록 지시한다. 예를 들어, 페치 조절을 수행하기 위해, 상태 머신(230)은 페처(110)가 이용하는 조절의 양을 결정하는 디지털 패턴을 나타내는 조절 신호, THROTTLE를 생성한다. 일 실시예에서, 조절 신호는 조절 동작의 기간 동안 반복되는 디지털 패턴(1000)을 나타낸다. 패턴 내의 1은 페처로 하여금 대응하는 머신 싸이클 동안 페칭하도록 지시한다. 패 턴 내의 0000은 페처로 하여금 다음 3개의 머신 싸이클 동안에는 페칭하지 않도록 지시한다. 따라서, 디지털 조절 패턴(1000)은 페처(110)로 하여금 네 개의 머신 싸이클마다 한번만 명령을 페칭하도록 지시한다. 이것은 75% 조절에 대응한다. 디지털 패턴(1010)은 1000 디지털 패턴보다 적은 조절, 즉 프로세서의 머신 싸이클의 50%에 대한 조절을 제공한다. 특정 애플리케이션에 필요한 조절의 양에 따라 조절 신호로서 다른 디지털 패턴이 상태 머신(230)에 의해 사용될 수 있다. 일 실시예에서, 디지털 조절 패턴은 필요로 하는 조절 및 전력 보존의 정도에 따라 프로그램가능하다.
도 5는 프로세서(100)를 채용하는 정보 처리 시스템(IHS)(500)을 도시한다. IHS는 정보를 디지털 형태, 아날로그 형태 또는 그 밖의 다른 형태로 처리, 전달, 통신, 수정, 저장 또는 그 밖의 다른 방식으로 처리하는 시스템이다. IHS(500)는 프로세서(100)를 메모리 제어기(520)를 통해 시스템 메모리(510)에 결합하는 버스(505)를 포함함다. 비디오 그래픽 제어기(525)는 디스플레이(530)를 버스(505)에 결합한다. 하드 디스크 드라이브, CD 드라이브, DVD 드라이브, 또는 다른 비휘발성 저장소와 같은 비휘발성 저장소(535)는 버스(505)에 결합되어 IHS(500)에 영구적인 정보 저장을 제공한다. 운영 시스템(540)은 메모리(510)에 로딩되어 IHS(500)의 동작을 제어한다. I/O 장치(545), 예를 들어 키보다 및 마우스 포인팅 장치는 I/O 제어기(550) 및 I/O 버스(555)를 통해 버스(505)에 결합된다. 하나 이상의 확장 버스(560), 예를 들어 USB, IEEE 1394 버스, ATA, SATA, PCI, PCIE 및 다른 버스는 버스(505)에 결합되어 IHS(500)로의 주변장치 및 장치의 접속을 용이 하게 한다. 네트워크 어댑터(565)는 버스(505)에 결합되어 IHS(500)가 네트워크 및 다른 정보 처리 시스템에 유선 또는 무선으로 결합될 수 있도록 한다. 도 5는 프로세서(100)를 이용하는 하나의 IHS를 도시하고 있지만, IHS는 다수의 형태를 취할 수 있다. 예를 들어, IHS(500)는 데스크탑, 서버, 휴대용기기, 랩탑, 노트북, 또는 다른 형태의 컴퓨터 또는 데이터 프로세싱 시스템의 형태를 취할 수 있다. IHS(500)는 게이밍 장치, 개인 보조 단말기(PDA), 휴대용 전화 장치, 통신 장치 또는 프로세서 및 메모리를 포함하는 다른 장치와 같은 다른 형태를 취할 수 있다.
위에서 설명한 실시예에서, CQ(210)는 예측에 대한 낮은 신뢰와 관련하여 BIQ(205) 내의 분기 명령에 대한 분기 예측의 신뢰를 나타내는 신뢰 비트를 저장하지만, 등가의 방법 및 장치는 프로세서의 논리를 역전시킬 수 있으며 여전히 개시된 방법을 실시할 수 있다. 예를 들어, 프로세서(100)는 도 1의 실시예의 분기 예측에 대한 낮은 신뢰의 정도와는 대조적으로, BIQ(205) 내의 분기 명령에 대한 분기 예측의 높은 신뢰 정도를 나타내는 신뢰 정보를 CQ(210) 내에 이용할 수 있다. 이와 같은 실시예에서, CQ(210) 내의 신뢰 비트는 BIQ(205)가 저장하는 분기 명령에 대한 분기 예측의 정확성의 신뢰를 나타낸다. 가산기(250)는 여전히 위에서 설명한 바와 같이 신뢰 비트를 함께 합산하여 POPCOUNT 값을 결정한다. 그러나, 비교기(255)는 BIQ 분기 명령에 대한 분기 예측의 정확성의 신뢰 레벨을 나타내는 POPCOUNT 값이 사전결정된 신뢰 임계 레벨보다 큰지 여부를 결정하는 테스트를 수행한다. POPCOUNT에 의해 표현되는 신뢰가 사전결정된 신뢰 임계 레벨을 초과하는 경우, 상태 머신(230)으로부터의 THROTTLE 신호는 페처(110)로 하여금 조절을 수행 하지 않도록 지시한다. BIQ 분기 명령에 대한 분기 예측의 정확성의 신뢰가 높기 때문에, 페치된 명령의 추론적 실행은 페치 조절없이 또한 전력 소비없이 최고 속도로 계속된다. 그러나, POPCOUNT가 사전결정된 신뢰 임계 레벨을 초과하지 않는 경우, 상태 머신(230)으로부터의 THROTTLE 신호는 페처(110)로 하여금 조절을 수행하도록 지시한다. 다시 말해, BIQ 분기 명령에 대한 분기 예측의 정확성의 신뢰가 매우 낮기 때문에, 페처(110)는 페치 조절을 개시하여 페치된 명령의 추론적 실행이 감소된 속도로 계속되어 전력을 보존한다. 또 다른 실시예에서, 각 BIQ 분기 명령 엔트리에 대해, BIQ(205)가 제각기의 신뢰 비트를 저장하고 있는 한, 신뢰 큐(CQ)(210)는 분기 명령 큐(BIQ)(205) 내에 존재한다.
당업자에게는 본 발명에 대한 전술한 설명으로부터 본 발명의 수정 및 변형 실시예가 자명할 것이다. 따라서, 본 설명은 본 발명을 수행하는 방식을 당업자에게 제공하며 단지 예시적인 것으로 간주된다. 도시되고 설명되어 있는 본 발명의 형태는 본 발명의 실시예를 구성한다. 당업자라면 부분들의 형상, 크기 및 배열에 대해 다양한 변경을 수행할 수 있다. 예를 들어, 당업자라면 본 명세서에서 기술되고 설명된 요소를 등가의 요소로 대체할 수 있다. 또한, 본 발명의 상세한 설명을 이해한 당업자라면 본 발명의 범주를 벗어나지 않고, 본 발명의 소정의 특징들을 다른 특징과는 무관하게 사용할 수 있다.

Claims (10)

  1. 프로세서를 운영하는 방법에 있어서,
    분기 명령을 포함하는 명령 스트림을 제공하기 위해 명령 소스로부터 명령을 페처(fetcher)에 의해 페칭하는 단계와,
    상기 명령 스트림으로부터의 다수의 페치된 분기 명령을 분기 명령 큐를 통해 저장하는 단계와,
    분기 실행 유닛이 페치된 분기 명령을 분기 예측 정보를 사용하여 추론적으로(speculatively) 실행하고 각 페치된 분기 명령의 분기가 선택되는지 여부를 결정하여, 실행된 분기 명령을 제공하는 단계와,
    상기 분기 명령 큐 내의 페치된 분기 명령 각각의 분기 예측 정보에 대한 신뢰를 각각 나타내는 하나 이상의 신뢰 값을 신뢰 저장 메모리를 통해 저장하는 단계와,
    상기 신뢰 값의 합이 사전결정된 임계값 아래인 경우 상기 페처에 의한 상기 명령 소스로부터의 명령의 페칭을 조절 회로(throttle circuit)를 통해 조절하는 단계를 포함하되, 상기 조절은 상기 프로세서에 의한 전력 소모를 감소시키는
    프로세서 운영 방법.
  2. 제 1 항에 있어서,
    상기 신뢰 저장 메모리를 통한 상기 저장 단계는 상기 분기 명령 큐에 저장된 페치된 분기 명령 각각에 대한 제각기의 신뢰 값을 상기 신뢰 저장 메모리에 저장하는 단계를 포함하는
    프로세서 운영 방법.
  3. 제 1 항 또는 제 2 항에 있어서,
    상기 분기 명령 큐에 저장된 유효한 페치된 분기 명령을 식별하는 유효 벡터를 유효 벡터 생성 회로를 통해 생성하는 단계를 더 포함하는
    프로세서 운영 방법.
  4. 프로세서에 있어서,
    명령을 저장하는 명령 소스와,
    상기 명령 소스에 결합되어, 상기 명령 소스로부터 명령을 페치하여 페치된 분기 명령을 포함하는 명령 스트림을 제공하는, 페처와,
    상기 페처에 결합되어, 페치된 분기 명령을 분기 예측 정보를 사용하여 추론적으로 실행하고 각 페치된 분기 명령의 분기가 선택되지는 여부를 결정하여, 실행된 분기 명령을 제공하는 분기 실행 유닛과,
    상기 페처에 결합되어, 상기 페처에 의한 명령의 페칭을 조절할 수 있는, 조 절 제어기를 포함하되,
    상기 조절 제어기는,
    다수의 페치된 분기 명령을 저장하는 분기 명령 큐와,
    상기 분기 명령 큐 내의 페치된 분기 명령에 대한 제각기의 신뢰 값을 저장하는 신뢰 저장 메모리- 상기 신뢰 값은 상기 분기 명령 큐 내의 제각기의 페치된 분기 명령에 대한 상기 분기 예측 정보의 신뢰 부족을 나타냄 -를 포함하고,
    상기 조절 제어기는 상기 신뢰 저장 메모리 내의 상기 신뢰 값의 합이 사전결정된 임계값을 초과하는 경우, 상기 명령 소스로부터의 명령의 페칭을 조절하고, 상기 조절은 상기 프로세서에 의한 전력 소모를 감소시키는
    프로세서.
  5. 제 4 항에 있어서,
    상기 분기 명령 큐 내에 저장된 유효한 페치된 분기 명령을 식별하는 유효 벡터를 생성하는 유효 벡터 생성 회로를 더 포함하는
    프로세서.
  6. 제 5 항에 있어서,
    상기 신뢰 저장 메모리 및 상기 유효 벡터 생성 회로에 결합되어, 상기 유효 벡터와 상기 신뢰 값을 논리적으로 AND 연산하여 유효 신뢰 값을 획득하는, AND 회로를 더 포함하는
    프로세서.
  7. 제 6 항에 있어서,
    상기 AND 회로에 결합되어, 상기 유효 신뢰 값들을 더하여 상기 신뢰 저장 메모리 내에 저장된 상기 유효 신뢰 값의 합계를 획득하는 가산기 회로를 더 포함하는
    프로세서.
  8. 제 7 항에 있어서,
    상기 가산기 회로 및 임계 회로에 결합되어, 상기 유효 신뢰 값의 합계와 상기 임계 회로가 제공하는 상기 사전결정된 임계값을 비교하는 비교기를 더 포함하는
    프로세서.
  9. 제 8 항에 있어서,
    상기 비교기 및 상기 페처에 결합된 페치 조절 상태 머신을 더 포함하되, 상기 유효 신뢰 값의 합계가 상기 사전결정된 임계값을 초과하는 것으로 상기 비교기가 판정한 경우 상기 페치 조절 상태 머신은 상기 명령 소스로부터 상기 페처에 의한 명령 페칭의 속도를 감소시키고, 그렇지 않은 경우, 상기 페치 조절 상태 머신은 상기 명령 소스로부터 상기 페처에 의한 명령의 페칭을 최고 속도로 허용하는
    프로세서.
  10. 정보 처리 시스템(IHS)에 있어서,
    메모리와,
    상기 메모리에 결합된 프로세서를 포함하되,
    상기 프로세서는,
    상기 메모리에 결합되며, 명령을 저장하는 명령 소스와,
    상기 명령 소스에 결합되어 상기 명령 소스로부터 명령을 페치하여 페치된 분기 명령을 포함하는 명령 스트림을 제공하는 페처와,
    상기 페처에 결합되어, 페치된 분기 명령을 분기 예측 정보를 사용하여 추론적으로 실행하고 페치된 분기 명령 각각의 분기가 선택되지는 여부를 결정하여, 실행된 분기 명령을 제공하는 분기 실행 유닛과,
    상기 페처에 결합되어, 상기 페처에 의한 명령의 페칭을 조절할 수 있는 조절 제어기를 포함하되,
    상기 조절 제어기는,
    다수의 페치된 분기 명령을 저장하는 분기 명령 큐와,
    상기 분기 명령 큐 내의 페치된 분기 명령에 대한 제각기의 신뢰 값을 저장하는 신뢰 저장 메모리- 상기 신뢰 값은 상기 분기 명령 큐 내의 제각기의 페치된 분기 명령에 대한 상기 분기 예측 정보의 신뢰 부족을 나타냄 -를 포함하고,
    상기 조절 제어기는 상기 신뢰 저장 메모리 내의 신뢰 값의 합이 사전결정된 임계값을 초과하는 경우, 상기 명령 소스로부터의 명령의 페칭을 조절하고, 상기 조절은 상기 프로세서에 의한 전력 소모를 감소시키는
    정보 처리 시스템.
KR1020097013957A 2007-04-10 2008-04-10 정보 처리 시스템에서 프로세서가 낮은 신뢰의 분기를 만나게 되는 경우 명령 페칭을 조절함으로써 전력을 보존하는 방법 및 장치 KR101159407B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/733,589 2007-04-10
US11/733,589 US7627742B2 (en) 2007-04-10 2007-04-10 Method and apparatus for conserving power by throttling instruction fetching when a processor encounters low confidence branches in an information handling system
PCT/EP2008/054335 WO2008122662A1 (en) 2007-04-10 2008-04-10 Method and apparatus for conserving power by throttling instruction fetching when a processor encounters low confidence branches in an information handling system

Publications (2)

Publication Number Publication Date
KR20090112645A true KR20090112645A (ko) 2009-10-28
KR101159407B1 KR101159407B1 (ko) 2012-06-28

Family

ID=39591449

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097013957A KR101159407B1 (ko) 2007-04-10 2008-04-10 정보 처리 시스템에서 프로세서가 낮은 신뢰의 분기를 만나게 되는 경우 명령 페칭을 조절함으로써 전력을 보존하는 방법 및 장치

Country Status (5)

Country Link
US (1) US7627742B2 (ko)
JP (1) JP5172942B2 (ko)
KR (1) KR101159407B1 (ko)
CN (1) CN101652739B (ko)
WO (1) WO2008122662A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014105192A1 (en) * 2012-12-28 2014-07-03 Intel Corporation System and method for causing reduced power consumption associated with thermal remediation
KR20170082965A (ko) * 2016-01-07 2017-07-17 삼성전자주식회사 쉽게 가용한 프리페처 정밀도에 의해서 동적으로 제어되는 명령 프리페처

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8566568B2 (en) * 2006-08-16 2013-10-22 Qualcomm Incorporated Method and apparatus for executing processor instructions based on a dynamically alterable delay
WO2008097710A2 (en) * 2007-02-02 2008-08-14 Tarari, Inc. Systems and methods for processing access control lists (acls) in network switches using regular expression matching logic
US8006070B2 (en) * 2007-12-05 2011-08-23 International Business Machines Corporation Method and apparatus for inhibiting fetch throttling when a processor encounters a low confidence branch instruction in an information handling system
US7925853B2 (en) * 2008-01-04 2011-04-12 International Business Machines Corporation Method and apparatus for controlling memory array gating when a processor executes a low confidence branch instruction in an information handling system
US8255669B2 (en) * 2008-01-30 2012-08-28 International Business Machines Corporation Method and apparatus for thread priority control in a multi-threaded processor based upon branch issue information including branch confidence information
US20090193240A1 (en) * 2008-01-30 2009-07-30 Ibm Corporation Method and apparatus for increasing thread priority in response to flush information in a multi-threaded processor of an information handling system
JP5387819B2 (ja) * 2008-12-26 2014-01-15 日本電気株式会社 分岐予測の信頼度見積もり回路及びその方法
US9836304B2 (en) * 2010-11-15 2017-12-05 Advanced Micro Devices, Inc. Cumulative confidence fetch throttling
US9182991B2 (en) 2012-02-06 2015-11-10 International Business Machines Corporation Multi-threaded processor instruction balancing through instruction uncertainty
US9442732B2 (en) * 2012-03-19 2016-09-13 Via Technologies, Inc. Running state power saving via reduced instructions per clock operation
US9389860B2 (en) 2012-04-02 2016-07-12 Apple Inc. Prediction optimizations for Macroscalar vector partitioning loops
US9116686B2 (en) * 2012-04-02 2015-08-25 Apple Inc. Selective suppression of branch prediction in vector partitioning loops until dependency vector is available for predicate generating instruction
US9201490B2 (en) 2013-03-15 2015-12-01 International Business Machines Corporation Power management for a computer system
US9348589B2 (en) 2013-03-19 2016-05-24 Apple Inc. Enhanced predicate registers having predicates corresponding to element widths
US9817663B2 (en) 2013-03-19 2017-11-14 Apple Inc. Enhanced Macroscalar predicate operations
US10001998B2 (en) 2014-04-18 2018-06-19 Oracle International Corporation Dynamically enabled branch prediction
US9658961B2 (en) 2014-06-27 2017-05-23 International Business Machines Corporation Speculation control for improving transaction success rate, and instruction therefor
US11755484B2 (en) * 2015-06-26 2023-09-12 Microsoft Technology Licensing, Llc Instruction block allocation
US20170046159A1 (en) * 2015-08-14 2017-02-16 Qualcomm Incorporated Power efficient fetch adaptation
US10915446B2 (en) 2015-11-23 2021-02-09 International Business Machines Corporation Prefetch confidence and phase prediction for improving prefetch performance in bandwidth constrained scenarios
US10474462B2 (en) * 2016-02-29 2019-11-12 Qualcomm Incorporated Dynamic pipeline throttling using confidence-based weighting of in-flight branch instructions
US10599577B2 (en) 2016-05-09 2020-03-24 Cavium, Llc Admission control for memory access requests
US10013357B2 (en) 2016-05-09 2018-07-03 Cavium, Inc. Managing memory access requests with prefetch for streams
US10191845B2 (en) 2017-05-26 2019-01-29 International Business Machines Corporation Prefetch performance
US10776122B2 (en) * 2018-06-14 2020-09-15 International Business Machines Corporation Prioritization protocols of conditional branch instructions
US11507380B2 (en) * 2018-08-29 2022-11-22 Advanced Micro Devices, Inc. Branch confidence throttle
US11099852B2 (en) * 2018-10-25 2021-08-24 Arm Limitied Apparatus and method for maintaining prediction performance metrics for prediction components for each of a plurality of execution regions and implementing a prediction adjustment action based thereon
US10929062B2 (en) * 2018-11-07 2021-02-23 International Business Machines Corporation Gradually throttling memory due to dynamic thermal conditions
US11379372B1 (en) 2019-07-19 2022-07-05 Marvell Asia Pte, Ltd. Managing prefetch lookahead distance based on memory access latency
US11442864B2 (en) 2020-06-29 2022-09-13 Marvell Asia Pte, Ltd. Managing prefetch requests based on stream information for previously recognized streams

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IE940855A1 (en) * 1993-12-20 1995-06-28 Motorola Inc Data processor with speculative instruction fetching and¹method of operation
US6282663B1 (en) 1997-01-22 2001-08-28 Intel Corporation Method and apparatus for performing power management by suppressing the speculative execution of instructions within a pipelined microprocessor
US6411156B1 (en) 1997-06-20 2002-06-25 Intel Corporation Employing transistor body bias in controlling chip parameters
US6438682B1 (en) * 1998-10-12 2002-08-20 Intel Corporation Method and apparatus for predicting loop exit branches
US6415388B1 (en) 1998-10-30 2002-07-02 Intel Corporation Method and apparatus for power throttling in a microprocessor using a closed loop feedback system
TW451132B (en) * 1998-12-15 2001-08-21 Nippon Electric Co System and method for cache processing
US6272666B1 (en) 1998-12-30 2001-08-07 Intel Corporation Transistor group mismatch detection and reduction
US6484265B2 (en) 1998-12-30 2002-11-19 Intel Corporation Software control of transistor body bias in controlling chip parameters
US6393374B1 (en) 1999-03-30 2002-05-21 Intel Corporation Programmable thermal management of an integrated circuit die
US6363490B1 (en) 1999-03-30 2002-03-26 Intel Corporation Method and apparatus for monitoring the temperature of a processor
US6330660B1 (en) * 1999-10-25 2001-12-11 Vxtel, Inc. Method and apparatus for saturated multiplication and accumulation in an application specific signal processor
US6625744B1 (en) 1999-11-19 2003-09-23 Intel Corporation Controlling population size of confidence assignments
US6564328B1 (en) 1999-12-23 2003-05-13 Intel Corporation Microprocessor with digital power throttle
US6766441B2 (en) * 2001-01-19 2004-07-20 International Business Machines Corporation Prefetching instructions in mis-predicted path for low confidence branches
US6608528B2 (en) 2001-10-22 2003-08-19 Intel Corporation Adaptive variable frequency clock system for high performance low power microprocessors
US7032116B2 (en) 2001-12-21 2006-04-18 Intel Corporation Thermal management for computer systems running legacy or thermal management operating systems
US7281140B2 (en) 2001-12-28 2007-10-09 Intel Corporation Digital throttle for multiple operating points
US6931559B2 (en) 2001-12-28 2005-08-16 Intel Corporation Multiple mode power throttle mechanism
TW567408B (en) 2002-03-29 2003-12-21 Uniwill Comp Corp Apparatus and method for controlling power and clock speed of electronic system
TWI262380B (en) 2002-04-25 2006-09-21 Quanta Comp Inc Dynamic adjustment method for power consumption of computer system
US6762629B2 (en) 2002-07-26 2004-07-13 Intel Corporation VCC adaptive dynamically variable frequency clock system for high performance low power microprocessors
US6908227B2 (en) 2002-08-23 2005-06-21 Intel Corporation Apparatus for thermal management of multiple core microprocessors
US7076672B2 (en) 2002-10-14 2006-07-11 Intel Corporation Method and apparatus for performance effective power throttling
US7143269B2 (en) * 2003-01-14 2006-11-28 Ip-First, Llc Apparatus and method for killing an instruction after loading the instruction into an instruction queue in a pipelined microprocessor
US7085945B2 (en) 2003-01-24 2006-08-01 Intel Corporation Using multiple thermal points to enable component level power and thermal management
US7124321B2 (en) 2003-02-10 2006-10-17 Sun Microsystems, Inc. Adaptive throttling
US7496776B2 (en) 2003-08-21 2009-02-24 International Business Machines Corporation Power throttling method and apparatus
US7240225B2 (en) 2003-11-10 2007-07-03 Dell Products L.P. System and method for throttling power in one or more information handling systems
US7363517B2 (en) 2003-12-19 2008-04-22 Intel Corporation Methods and apparatus to manage system power and performance
US7194641B2 (en) 2004-01-22 2007-03-20 International Business Machines Corporation Method and apparatus for managing power and thermal alerts transparently to an operating system in a data processing system with increased granularity in reducing power usage and thermal generation
US7334143B2 (en) * 2004-04-19 2008-02-19 Hewlett-Packard Development Company, L.P. Computer power conservation apparatus and method that enables less speculative execution during light processor load based on a branch confidence threshold value
US7418608B2 (en) 2004-06-17 2008-08-26 Intel Corporation Method and an apparatus for managing power consumption of a server
US7330988B2 (en) 2004-06-30 2008-02-12 Sun Microsystems, Inc. Method and apparatus for power throttling in a multi-thread processor
US7587580B2 (en) 2005-02-03 2009-09-08 Qualcomm Corporated Power efficient instruction prefetch mechanism

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014105192A1 (en) * 2012-12-28 2014-07-03 Intel Corporation System and method for causing reduced power consumption associated with thermal remediation
US9354679B2 (en) 2012-12-28 2016-05-31 Intel Corporation System and method for causing reduced power consumption associated with thermal remediation
KR20170082965A (ko) * 2016-01-07 2017-07-17 삼성전자주식회사 쉽게 가용한 프리페처 정밀도에 의해서 동적으로 제어되는 명령 프리페처

Also Published As

Publication number Publication date
JP2010524107A (ja) 2010-07-15
KR101159407B1 (ko) 2012-06-28
CN101652739A (zh) 2010-02-17
US7627742B2 (en) 2009-12-01
WO2008122662A1 (en) 2008-10-16
JP5172942B2 (ja) 2013-03-27
US20080256345A1 (en) 2008-10-16
CN101652739B (zh) 2011-10-12

Similar Documents

Publication Publication Date Title
KR101159407B1 (ko) 정보 처리 시스템에서 프로세서가 낮은 신뢰의 분기를 만나게 되는 경우 명령 페칭을 조절함으로써 전력을 보존하는 방법 및 장치
JP5285408B2 (ja) プロセッサ、プロセッサを動作させる方法、および情報処理システム
US5719800A (en) Performance throttling to reduce IC power consumption
TWI436273B (zh) 預測條件非分支指令之不執行之方法及裝置
JP5059623B2 (ja) プロセッサ及び命令プリフェッチ方法
US6282663B1 (en) Method and apparatus for performing power management by suppressing the speculative execution of instructions within a pipelined microprocessor
US7925853B2 (en) Method and apparatus for controlling memory array gating when a processor executes a low confidence branch instruction in an information handling system
US8667257B2 (en) Detecting branch direction and target address pattern and supplying fetch address by replay unit instead of branch prediction unit
US10713054B2 (en) Multiple-table branch target buffer
EP3039532B1 (en) A data processing apparatus and method for controlling performance of speculative vector operations
US9201658B2 (en) Branch predictor for wide issue, arbitrarily aligned fetch that can cross cache line boundaries
US10289514B2 (en) Apparatus and method for a user configurable reliability control loop
US9996127B2 (en) Method and apparatus for proactive throttling for improved power transitions in a processor core
EP4020167A1 (en) Accessing a branch target buffer based on branch instruction information
EP4020187A1 (en) Segmented branch target buffer based on branch instruction type
JP5247037B2 (ja) 半導体集積回路及びその制御方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20150527

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160527

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170526

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180528

Year of fee payment: 7