KR101126001B1 - 정보 처리 장치 및 분기 예측 방법 - Google Patents

정보 처리 장치 및 분기 예측 방법 Download PDF

Info

Publication number
KR101126001B1
KR101126001B1 KR1020100049822A KR20100049822A KR101126001B1 KR 101126001 B1 KR101126001 B1 KR 101126001B1 KR 1020100049822 A KR1020100049822 A KR 1020100049822A KR 20100049822 A KR20100049822 A KR 20100049822A KR 101126001 B1 KR101126001 B1 KR 101126001B1
Authority
KR
South Korea
Prior art keywords
branch
instruction
address
correspondence information
branch prediction
Prior art date
Application number
KR1020100049822A
Other languages
English (en)
Other versions
KR20100129692A (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 KR20100129692A publication Critical patent/KR20100129692A/ko
Application granted granted Critical
Publication of KR101126001B1 publication Critical patent/KR101126001B1/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/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
    • 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/3237Power saving characterised by the action undertaken by disabling clock generation or distribution
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Advance Control (AREA)
  • Power Sources (AREA)

Abstract

본 발명은, 분기 예측 처리시에 있어서의 소비전력을 저감할 수 있는 정보 처리 장치를 제공하는 것을 목적으로 한다.
싱글 루프 엔트리(13)는, 분기가 성립된 최신 분기 명령에 대해서, 그 명령 어드레스와 분기 목적지 어드레스의 대응 정보인 제1 대응 정보를 저장한다. 브랜치 히스토리 테이블(14)은, 분기가 성립된 최신을 포함하는 과거의 복수의 분기 명령의 각각에 대해서, 그 명령 어드레스와 분기 목적지 어드레스의 대응 정보인 제2 대응 정보를 저장한다. 분기 예측 장치(1)는, 연산기(7)로 연산되는 명령열이 루프하고 있는지 여부를 판단하고, 명령열이 루프하고 있는 경우에는, 브랜치 히스토리 테이블(14)로의 클록 공급을 정지하며, 싱글 루프 엔트리(13)의 제1 대응 정보를 검색한 결과에 기초하여 분기 예측을 행한다.

Description

정보 처리 장치 및 분기 예측 방법{INFORMATION PROCESSING APPARATUS AND BRANCH PREDICTION METHOD}
본 발명은, 분기 예측을 행하는 정보 처리 장치 및 분기 예측 방법에 관한 것이다.
파이프라인 제어 방식을 실행하는 프로세서는, 메모리로부터 명령 실행부로의 명령열의 판독(명령 페치)을 효율적으로 행하기 위해서, 분기를 예측하는 기구인 분기 예측 기구를 구비한다. 특히, 아웃 오브 오더(out-of-order) 제어를 실행하는 프로세서에 있어서는, 명령 실행에 크게 선행하여 명령 페치가 행해지는 경우가 있기 때문에, 분기 예측 기구의 중요성이 높다.
예컨대, 브랜치 히스토리(branch history)의 엔트리를, 명령 어드레스에 대응시켜 명령 페치 길이와 명령어 최소 단위 길이로 규정되는 개수의 블록으로 구성하는 명령 실행 처리 장치가 제안되어 있다.
[특허문헌 1] 일본 특허 공개 평성 제6-089173호 공보 [특허문헌 2] 일본 특허 공개 제2004-38337호 공보
분기 예측 기구에 있어서는, 분기 예측 처리시에 소비되는 소비전력을 될 수 있는 한 작게 할 필요가 있다.
본 발명은, 분기 예측 처리시에 있어서의 소비전력을 저감할 수 있는 정보 처리 장치의 제공을 목적으로 한다.
개시되는 정보 처리 장치는, 제1 분기 이력 기억부와, 제2 분기 이력 기억부와, 분기 예측 제어부를 포함하는 분기 예측 기구를 구비한다. 제1 분기 이력 기억부는, 명령열에 포함되는 명령으로서, 분기가 성립된 최신 분기 명령에 대해서, 그 명령 어드레스와 분기 목적지 어드레스의 대응 정보인 제1 대응 정보를 저장한다. 제2 분기 이력 기억부는, 명령열에 포함되는 명령으로서, 분기가 성립된 최신을 포함하는 과거의 복수의 분기 명령의 각각에 대해서, 그 명령 어드레스와 분기 목적지 어드레스의 대응 정보인 제2 대응 정보를 저장한다. 분기 예측 제어부는, 명령열에 포함되는, 페치되는 명령의 명령 어드레스를 이용하여 제1 분기 이력 기억부의 제1 대응 정보 또는 제2 분기 이력 기억부의 제2 대응 정보를 검색한 결과에 기초하여 분기 예측을 행한다. 특히, 분기 예측 제어부는, 명령열이 루프(loop)하고 있는 경우에는, 제2 분기 이력 기억부로의 클록 공급을 정지하고, 제1 분기 이력 기억부의 제1 대응 정보를 검색한 결과에 기초하여 분기 예측을 행한다.
개시되는 정보 처리 장치에 따르면, 분기 예측 처리에 있어서, 연산되는 명령열이 루프하는 경우에는, 소비전력을 저감할 수 있다.
도 1은 정보 처리 장치의 구성예를 나타낸 도면이다.
도 2는 분기 예측 장치가 통상 동작 모드에서 행하는 처리를 설명한 도면이다.
도 3은 분기 예측 장치에 있어서의, 통상 동작 모드로부터 저소비전력 모드로의 전환 처리를 설명한 도면이다.
도 4는 분기 제어 장치의 처리를 설명한 도면이다.
도 5는 분기 예측의 성공 또는 실패에 따른 분기 예측 처리 동작 상태의 천이를 설명한 도면이다.
프로세서의 소비전력을 저감하기 위한 방법으로서, 일정 시간 명령 실행에 사용되지 않는 연산 자원에 대하여, 명령을 실행하지 않는 시간대에 대해서, 클록의 공급을 정지하는 것을 생각할 수 있다.
본 발명자는, 브랜치 히스토리(이하, 브랜치 히스토리 테이블이라 함)의 엔트리를 검색함으로써 페치한 명령이 분기 명령인지 여부를 예측하는 분기 예측 기구에 대해서 검토하였다. 이 분기 예측 기구는, 엔트리의 개수가 많을수록 예측의 정밀도가 증가한다. 이 때문에, 브랜치 히스토리 테이블로서는, 대용량의 데이터를 유지할 수 있는 RAM(Random Access Memory)을 이용하는 것을 생각할 수 있다. 그리고, 대용량의 RAM과 같은 연산 자원으로의 클록을 정지하면, 소비전력을 크게 저감할 수 있다.
그러나, 분기 예측 기구에 있어서, 브랜치 히스토리 테이블은, 명령을 페치할 때마다 참조된다. 명령 페치는 명령의 실행에 선행하여 빈번히 행해진다. 따라서, 브랜치 히스토리 테이블이 사용되지 않는 시간은 거의 존재하지 않는다. 환언하면, 브랜치 히스토리 테이블은, 데이터의 갱신시뿐만 아니라, 데이터의 참조시에도 참조되기 때문에, 클록의 공급을 정지하기는 어렵다.
한편, 프로그램 내에서 빈번히 출현하는 구조로서, 복수의 명령으로 하나의 명령열을 구성하고, 이 명령열 또는 그 일부를 반복 실행하는 구조가 있다. 이 명세서에서는, 명령열 또는 그 일부가 반복 실행되는 것을 「명령이 루프하고 있다」 또는 「명령이 루프로 들어간다」라고 하고, 반복 실행되는 복수의 명령을 「루프」라고 한다. 또한, 일단 루프한 명령열이 반복 실행되지 않게 되는 것을 「루프로부터 벗어난다」라고 한다.
본 발명자는, 루프에 포함되는 분기 명령을 검출하여 저장한 복수의 명령 버퍼를 이용하여 그 루프에 포함되는 복수의 명령을 반복 실행함으로써, 명령 버퍼로부터 직접 명령을 공급하여 실행할 수 있도록 한 명령 페치 제어 장치에 대해서 검토하였다. 이 검토 대상인 명령 페치 제어 장치에 있어서는, 명령 버퍼에는 이미 명령이 저장되어 있다. 따라서, 새롭게 메모리로부터 명령 페치를 할 필요가 없다. 이 결과, 명령 버퍼에 저장된 명령을 직접 실행할 수 있다. 이에 따라, 이 검토 대상인 명령 페치 제어 장치에 있어서는, 브랜치 히스토리 테이블을 참조할 필요가 없게 된다. 따라서, 명령 버퍼를 이용하고 있는 기간은, 브랜치 히스토리 테이블로의 클록 공급을 정지할 수 있다고 생각할 수 있다.
그러나, 이 검토 대상인 명령 페치 장치에 따르면, 루프에 포함되는 명령의 개수가 미리 준비된 복수의 명령 버퍼의 개수를 초과하면, 명령 버퍼만을 이용하여 루프를 실현할 수 없다. 환언하면, 브랜치 히스토리 테이블로의 클록 공급을 정지할 수 있는 것은, 미리 준비된 복수의 명령 버퍼에 저장할 수 있는 길이의 루프에 대해서 뿐이다. 이 때문에, 전력 삭감의 기회가 한정된다.
이하에 개시되는 도 1의 정보 처리 장치에 따르면, 분기 예측 처리시에 있어서의 소비전력을, 명령열에 있어서의 루프의 길이와는 무관하게 저감할 수 있다.
도 1은 정보 처리 장치의 구성의 일례를 나타낸 도면이다.
도 1의 정보 처리 장치는, 분기 예측 장치(1), 메모리(2), 명령 취득 제어 장치(3), 명령 해석 장치(4), 명령 발행 제어 장치(5), 명령 완료 제어 장치(6), 연산기(7), 분기 제어 장치(8)를 구비한다. 도 1의 정보 처리 장치는, 예컨대, 수퍼 스칼라 방식이고 또한 아웃 오브 오더 제어 방식에 의해 연산을 실행하는 컴퓨터이다. 이 때문에, 도 1의 정보 처리 장치는, 분기 예측 기구를 구비한다. 분기 예측 기구는, 분기 예측 장치(1)와 명령 취득 제어 장치(3)와 분기 제어 장치(8)를 구비한다.
분기 예측 장치(1)는 분기 예측 처리를 실행한다. 분기 예측 처리는, 명령 취득 제어 장치(3)가 메모리(2)로부터 페치하는 명령이 분기되는지 여부를 예측하는 처리이다. 분기 예측 장치(1)는, 분기 예측부(11), 관리부(12), 싱글 루프 엔트리(13), 브랜치 히스토리 테이블(14), 카운터(15)를 구비한다. 분기 예측부(11)는, 싱글 루프 엔트리(13) 또는 브랜치 히스토리 테이블(14)을 이용하여 분기 예측 처리를 실행하고, 분기 예측 처리의 결과를 분기 제어 장치(8)에 대하여 송신한다. 구체적으로는, 분기 예측부(11)는, 명령 취득 제어 장치(3)로부터, 명령 페치 어드레스를 취득하고, 취득한 명령 페치 어드레스로 싱글 루프 엔트리(13) 또는 브랜치 히스토리 테이블(14)을 검색하여 분기 예측 처리를 실행한다. 구체적으로는, 분기 예측부(11)는, 메모리(2)로부터 페치하는 명령의 명령 어드레스를 이용하여 싱글 루프 엔트리(13)의 제1 대응 정보 또는 브랜치 히스토리 테이블(14)의 제2 대응 정보를 검색한 결과에 기초하여 분기 예측을 행한다. 명령 페치 어드레스는, 명령 취득 제어 장치(3)가 메모리로부터 페치하는 명령의 어드레스이다.
싱글 루프 엔트리(13)는, 1개의 제1 대응 정보를 저장하는 분기 이력 기억부이다. 제1 대응 정보는, 분기가 성립된 최신 분기 명령에 대해서, 그 명령 어드레스와 분기 목적지 어드레스의 대응을 나타내는 대응 정보이다.
싱글 루프 엔트리(13)에는 분기 명령의 명령 어드레스와 분기 목적지 어드레스의 대응 정보가 1개만 저장된다. 환언하면, 1개의 엔트리만이 싱글 루프 엔트리(13)에 존재한다.
싱글 루프 엔트리(13)로서는, 예컨대 플립플롭 회로가 이용된다. 구체적으로는, 1개의 엔트리의 비트 폭과 같은 개수의 플립플롭 회로가 준비된다. 싱글 루프 엔트리(13)는, 엔트리가 1개이기 때문에, 어드레스 디코더 등의 주변 회로를 갖지 않는다. 따라서, 싱글 루프 엔트리(13)는, 엔트리가 복수이며 주변 회로를 구비하는 브랜치 히스토리 테이블(14)에 비하여 소비전력이 매우 작다.
브랜치 히스토리 테이블(14)은, 복수의 제2 대응 정보를 저장하는 분기 이력 기억부이다. 제2 대응 정보는, 과거에 분기가 성립된 복수의 분기 명령의 각각에 대해서, 그 명령 어드레스와 분기 목적지 어드레스의 대응을 나타내는 대응 정보이다.
브랜치 히스토리 테이블(14)에는, 분기가 성립된 분기 명령의 명령 어드레스와 분기 목적지 어드레스 대응 정보의 복수의 이력을 저장한다. 환언하면, 싱글 루프 엔트리(13)에 저장하는 제1 대응 정보를 포함하는 복수의 엔트리가 브랜치 히스토리 테이블(14)에 존재한다.
브랜치 히스토리 테이블(14)로서는, 예컨대 SRAM(Static Random Access Memory)가 이용된다. 따라서, 브랜치 히스토리 테이블(14)은, 복수의 엔트리를 저장하기 때문에, 엔트리가 1개인 싱글 루프 엔트리(13)보다도 회로 규모가 크다. 또한, 브랜치 히스토리 테이블(14)은, 기록 회로, 판독 회로, 어드레스 디코더 등의 주변 회로를 구비한다. 이 때문에, 브랜치 히스토리 테이블(14)의 소비전력은, 엔트리 수에 의존하지만, 싱글 루프 엔트리(13)의 소비전력보다도, 예컨대 수백~수만배 크다.
통상 동작 모드에 있어서는, 분기 예측부(11)는, 브랜치 히스토리 테이블(14)을 검색한다. 통상 동작 모드는, 브랜치 히스토리 테이블(14)에 클록이 공급되어 있는 상태에 있어서의 분기 예측 기구의 동작 모드이다. 분기 예측부(11)는, 관리부(12)로부터, 동작 모드가 저소비전력 모드에서 통상 동작 모드로 전환된 것을 나타내는 통지를 수신하여, 통상 동작 모드에 있어서의 처리를 실행한다.
저소비전력 모드에 있어서는, 분기 예측부(11)는, 싱글 루프 엔트리(13)를 검색한다. 저소비전력 모드는, 브랜치 히스토리 테이블(14)에 클록이 공급되어 있지 않은 상태에 있어서의 분기 예측 기구의 동작 모드이다. 따라서, 저소비전력 모드에 있어서, 브랜치 히스토리 테이블(14)은 정지 상태에 있다. 분기 예측부(11)는, 관리부(12)로부터, 동작 모드가 통상 동작 모드에서 저소비전력 모드로 전환된 것을 나타내는 통지를 수신하여 저소비전력 모드에 있어서의 처리를 실행한다.
구체적으로는, 통상 동작 모드에서는, 분기 예측부(11)는, 명령 취득 제어 장치(3)로부터 취득한 명령 페치 어드레스와 브랜치 히스토리 테이블(14)의 제2 대응 정보에 포함되는 분기 명령 어드레스를 비교하여, 양자가 일치하는 엔트리가 존재하는지 여부를 판단한다.
이 후, 명령 페치 어드레스와 제2 대응 정보에 포함되는 분기 명령 어드레스가 일치하는 엔트리가 존재하는 경우, 분기 예측부(11)는, 명령 페치 어드레스로부터 판독되는 명령이 분기 명령이며, 또한, 이 분기 명령에 대해서 분기가 성립된다고 예측한다. 분기 예측부(11)는, 분기가 성립된다고 예측한 경우, 어드레스가 일치한 엔트리의 제2 대응 정보에 포함되는, 분기 명령 어드레스와 대응된 분기 목적지 어드레스를 특정한다. 환언하면, 분기 예측부(11)는, 브랜치 히스토리 테이블(14)로부터 대응하는 분기 목적지 어드레스를 판독한다.
이 후, 분기 예측부(11)는, 분기가 성립된다고 하는 예측과, 특정한 분기 목적지 어드레스를, 분기 예측 처리의 결과로서 분기 제어 장치(8)에 대하여 송신한다. 또한, 분기 예측부(11)는, 미리 정해진 제어 신호와, 특정한 분기 목적지 어드레스를, 분기 예측 처리의 결과로서 명령 취득 제어 장치(3)에 대하여 송신한다. 명령 취득 제어 장치(3)는, 분기 예측부(11)로부터 송신된 분기 목적지 어드레스를 수신하고, 수신한 분기 목적지 어드레스를 다음에 페치할 명령 어드레스로 한다.
명령 페치 어드레스가 제2 대응 정보에 포함되는 분기 명령 어드레스와 일치하는 엔트리가 존재하지 않는 경우, 분기 예측부(11)는, 명령 페치 어드레스로부터 판독되는 명령이 분기 명령인지 여부, 또는, 명령 페치 어드레스로부터 판독되는 명령이 분기 명령이지만, 이 분기 명령이 분기 성립되지 않는다고 예측한다. 분기 예측부(11)는, 이 예측을, 분기 예측 처리의 결과로서 분기 제어 장치(8)에 대하여 송신한다.
저소비전력 모드에서는, 분기 예측부(11)는, 명령 페치 어드레스와 싱글 루프 엔트리(13)의 제1 대응 정보에 포함되는 분기 명령 어드레스를 비교하여, 양자가 일치하는지 여부를 판단한다.
이 후, 명령 페치 어드레스와 제1 대응 정보에 포함되는 분기 명령 어드레스가 일치하는 경우, 분기 예측부(11)는 분기가 성립된다고 예측한다. 분기 예측부(11)는, 분기가 성립된다고 예측한 경우, 제1 대응 정보에 포함되는, 이 분기 명령 어드레스와 대응된 분기 목적지 어드레스를 특정한다. 환언하면, 분기 예측부(11)는 싱글 루프 엔트리(13)로부터 분기 목적지 어드레스를 판독한다.
이 후, 분기 예측부(11)는, 분기가 성립된다고 하는 예측과, 특정한 분기 목적지 어드레스를, 분기 예측 처리의 결과로서 분기 제어 장치(8)에 대하여 송신한다. 또한, 분기 예측부(11)는, 미리 정해진 제어 신호와, 특정한 분기 목적지 어드레스를, 분기 예측 처리의 결과로서 명령 취득 제어 장치(3)에 대하여 송신한다. 명령 취득 제어 장치(3)는, 분기 예측부(11)로부터 송신된 분기 목적지 어드레스를 수신하고, 수신한 분기 목적지 어드레스를 다음에 페치할 명령 어드레스로 한다.
명령 페치 어드레스가 제1 대응 정보에 포함되는 분기 명령 어드레스와 일치하지 않는 경우, 분기 예측부(11)는, 명령 페치 어드레스로부터 판독되는 명령이 분기 명령이 아니거나, 또는 명령 페치 어드레스로부터 판독되는 명령이 분기 명령이지만 분기가 성립되지 않는다고 예측한다. 분기 예측부(11)는, 이 예측을, 분기 예측 처리의 결과로서 분기 제어 장치(8)에 대하여 송신한다.
관리부(12)는, 통상 동작 모드에 있어서는, 브랜치 히스토리 테이블(14)에 대하여 클록을 공급하고, 또한, 싱글 루프 엔트리(13)에 대하여 클록을 공급한다. 브랜치 히스토리 테이블(14) 및 싱글 루프 엔트리(13)에 있어서, 공급된 클록은 동작 클록으로서 이용된다.
관리부(12)는, 저소비전력 모드에 있어서는, 싱글 루프 엔트리(13)에 대하여 클록을 공급하고, 브랜치 히스토리 테이블(14)에 대해서는 클록의 공급을 정지한다. 저소비전력 모드에 있어서는, 싱글 루프 엔트리(13)가 클록이 공급되어 동작하고, 제1 대응 정보가 반복 이용될 뿐이다. 따라서, 브랜치 히스토리 테이블(14)은 참조되지 않고, 또한, 브랜치 히스토리 테이블(14)에 대한 제2 대응 정보의 추가는 불필요하다. 따라서, 브랜치 히스토리 테이블(14)에 대한 클록의 공급을 정지하여도, 분기 예측 처리에는 전혀 지장은 없다.
또한, 관리부(12)는 카운터(15)를 구비하고, 그 카운트값의 등록 처리 및 갱신 처리를 행한다. 구체적으로는, 관리부(12)는, 연산기(7)에 의한 연산이 완료된 분기 명령의 명령 어드레스와, 싱글 루프 엔트리(13)의 제1 대응 정보에 포함되는 분기 명령 어드레스를 비교한다. 이에 따라, 관리부(12)는, 연산이 완료된 분기 명령의 명령 어드레스와 제1 대응 정보에 포함되는 분기 명령 어드레스가 일치할 때마다 카운터(15)의 카운트값을 인크리먼트한다.
이 후, 관리부(12)는, 카운터(15)의 카운트값이 임계값을 초과하는지 여부를 판단한다. 임계값은, 미리 설정되며, 예컨대 경험적으로 정해진다. 이에 따라, 분기 예측 기구의 동작 모드를 통상 동작 모드에서 저소비전력 모드로 전환하는 타이밍을 정할 수 있다.
카운터(15)의 카운트값이 임계값을 초과한 경우, 관리부(12)는, 명령열이 루프하고 있다고 판단한다. 연산되는 명령열이 임계값을 초과하는 횟수로 루프하고 있는 경우, 관리부(12)는, 브랜치 히스토리 테이블(14)로의 클록 공급을 정지한다. 이에 따라, 분기 예측 기구의 동작 모드가 통상 동작 모드에서 저소비전력 모드로 전환된다. 관리부(12)는, 동작 모드가 통상 동작 모드에서 저소비전력 모드로 전환된 것을 분기 예측부(11)에 통지한다.
또한, 명령열이 임계값을 초과하는 횟수로 루프하고 있지 않으면, 브랜치 히스토리 테이블(14)로의 클록 공급은 정지되지 않는다. 환언하면, 명령열이 임계값을 초과하는 횟수로 루프하고 있는 경우만, 브랜치 히스토리 테이블(14)로의 클록 공급이라는 관점에서 보아 명령열이 루프하고 있다고 판단된다.
동작 모드가 통상 동작 모드에서 저소비전력 모드로 전환된 경우, 분기 예측부(11)는, 브랜치 히스토리 테이블(14)의 제2 대응 정보를 검색하지 않고서, 싱글 루프 엔트리(13)의 제1 대응 정보의 검색 결과에 기초하여 분기 예측을 행한다. 환언하면, 관리부(12) 및 분기 예측부(11)는, 분기 예측을 행하는 제어부이다.
또한, 관리부(12)는, 저소비전력 모드의 경우, 환언하면, 브랜치 히스토리 테이블(14)로의 클록 공급이 정지되어 있는 경우에 있어서, 연산이 완료된 분기 명령의 명령 어드레스와, 싱글 루프 엔트리(13)의 제1 대응 정보에 포함되는 분기 명령 어드레스를 비교한다. 어드레스가 일치하지 않는 경우, 연산되는 명령열이 루프로부터 벗어났다고 판단한다. 관리부(12)는, 명령열이 루프로부터 벗어난 경우에는, 브랜치 히스토리 테이블(14)로의 클록 공급 정지를 해제한다. 이에 따라, 분기 예측 기구의 동작 모드가, 저소비전력 모드에서 통상 동작 모드로 전환된다. 관리부(12)는, 명령열이 루프로부터 벗어난 경우에는, 싱글 루프 엔트리(13)의 제1 대응 정보를 갱신하고, 카운터(15)의 카운터값을 클리어한다. 관리부(12)는, 동작 모드가 저소비전력 모드에서 통상 동작 모드로 전환된 것을 분기 예측부(11)에 통지한다.
또한, 1개의 명령열이 복수 회 루프하는 경우가 있다. 이 경우, 예컨대, 명령열이 최초의 루프로부터 벗어난 시점에서 싱글 루프 엔트리(13)의 제1 대응 정보가 갱신되고(무효가 되고), 카운터(15)의 카운터값이 클리어된다. 이 후, 명령열이 다음 루프를 시작하면, 싱글 루프 엔트리(13)의 제1 대응 정보가 참조되고, 카운터(15)의 카운터값이 인크리먼트된다.
또한, 관리부(12)는, 분기 제어 장치(8)로부터, 분기 예측이 성공했는지 실패했는지를 나타내는 정보와, 분기가 성립되었는지 여부에 대한 판단 결과를 수신한다. 구체적으로는, 관리부(12)는, 분기 제어 장치(8)로부터, 분기가 성공한 것을 나타내는 정보로서, 연산이 완료된 분기 명령 어드레스와, 연산이 완료된 분기 목적지 어드레스를 수신한다. 관리부(12)는, 수신한 분기 명령 어드레스와 분기 목적지 어드레스를 대응시킨 후에, 싱글 루프 엔트리(13)의 제1 대응 정보로서 저장하고, 또한, 브랜치 히스토리 테이블(14)의 제2 대응 정보로서 저장한다. 또한, 관리부(12)는, 분기 예측이 성공했는지 실패했는지를 나타내는 정보와, 분기가 성립되었는지 여부에 대한 판단 결과에 기초하여, 싱글 루프 엔트리(13)의 제1 대응 정보 또는 브랜치 히스토리 테이블(14)의 제2 대응 정보의 갱신 처리를 행한다.
또한, 관리부(12)는, 분기가 실패한 경우에는, 명령열이 루프하지 않는다고 판단하도록 하여도 좋다. 또한, 관리부(12)가, 분기가 성공하고, 또한,싱글 루프 엔트리(13)의 제1 대응 정보에 포함되는 분기 목적지 어드레스가 연산이 완료된 분기 명령의 분기 목적지 어드레스와 일치하지 않는 경우에는, 명령열이 루프하지 않는다고 판단하도록 하여도 좋다. 관리부(12)는, 명령열이 루프하지 않는다고 판단한 경우에는, 카운터(15)의 카운터값을 클리어한다.
카운터(15)는, 연산이 완료된 명령의 명령 어드레스와 싱글 루프 엔트리(13)의 제1 대응 정보에 포함되는 분기 명령 어드레스가 일치한 횟수를 카운트한다. 싱글 루프 엔트리(13)에 저장되는 제1 대응 정보는, 카운터(15)의 카운트값이 인크리먼트되고 있는 동안, 환언하면, 연산기(7)로 연산이 실행되는 명령열이 루프하고 있는 동안은 갱신되지 않는다. 따라서, 싱글 루프 엔트리(13)에 저장되는 제1 대응 정보는, 명령열의 루프의 길이에 관계없이 1개이다.
명령 취득 제어 장치(3)는, 메모리(2)로부터 명령을 페치한다. 메모리(2)는, 명령 및 명령 실행에 필요한 데이터가 저장되는 기억부이다. 페치되는 명령은, 연산기(7)로 연산되는 명령열에 포함되는 복수의 명령 중 어느 하나의 명령이다.
명령 취득 제어 장치(3)는, 명령 버퍼(31)와, 어드레스 형성부(32)와, 셀렉터(33)를 구비한다. 명령 버퍼(31)는 페치된 명령을 저장한다. 명령 취득 제어 장치(3)는, 페치하는 명령의 어드레스를 분기 예측 장치(1)와 분기 제어 장치(8)에 대하여 송신한다. 어드레스 형성부(32)는 현재의 명령 페치 어드레스에 연속되는 명령 어드레스를 형성한다. 셀렉터(33)는, 분기 예측 장치(1)의 분기 예측부(11)로부터 분기 목적지 어드레스를 취득한다. 셀렉터(33)는, 분기 예측이 분기 성립이었던 경우는 분기 예측부(11)로부터 취득한 분기 목적지 어드레스를 선택하고, 분기 예측이 분기 불성립이었던 경우는 어드레스 형성부(32)가 형성한 명령 어드레스를 선택한다. 명령 취득 제어 장치(3)는, 셀렉터(33)가 선택한 어드레스를, 다음에 메모리(2)로부터 페치할 명령 어드레스로 한다.
또한, 도 4를 참조하여 후술하는 바와 같이, 분기 제어 장치(8)에 있어서, 연산기(7)에 의한 분기 명령 연산 결과, 명령 페치시의 분기 예측이 올바른지 여부의 판단이 행해진다. 분기 예측이 실패한 경우는, 예측에 기초하여 처리하던 명령열은 오류였던 것을 의미하기 때문에, 올바른 명령열을 재차 메모리(2)로부터 페치하여 처리를 다시 할 필요가 있다.
어드레스 형성부(32)는, 분기 예측이 실패한 경우의 재명령 페치 어드레스로서, 분기 예측이 실패한 분기 명령 연산기(7)에 의한 연산이 완료된 명령 어드레스의 다음 명령의 어드레스에 연속되는 명령 어드레스를 형성한다. 셀렉터(33)는, 분기 불성립의 분기 예측이 실패하여 연산 결과가 분기 성립이었던 경우에는 명령 연산기(7)의 연산 결과 얻어진 분기 목적지 어드레스를 선택하고, 분기 성립의 분기 예측이 실패하여 연산 결과가 분기 불성립이었던 경우에는 어드레스 형성부(32)에 의해 형성된 명령 어드레스를 선택한다.
명령 해석 장치(4)는, 명령 취득 제어 장치(3)의 명령 버퍼(31)로부터 명령을 판독하고, 판독한 명령을 해석(디코드)한다. 명령의 해석 결과는, 그 명령이 분기 명령인지 여부를 나타내는 정보를 포함한다. 명령 해석 장치(4)는, 명령의 해석 결과와 해석한 명령을 명령 발행 제어 장치(5)에 송신한다.
명령 발행 제어 장치(5)는, 해석된 명령을 연산기(7)에 대하여 발행하고(즉, 송신하고), 명령의 해석 결과를 연산기(7)에 대하여 송신한다. 또한, 명령 발행 제어 장치(5)는, 연산기(7)에 대하여 발행된 명령을 식별하는 정보를, 명령 완료 제어 장치(6)에 대하여 송신한다. 또한, 명령 발행 제어 장치(5)는, 해석된 명령이 분기 명령인 경우에는, 분기 제어 장치(8)를 기동하는 제어 신호를, 분기 제어 장치(8)에 대하여 송신한다. 이 제어 신호를 수신한 분기 제어 장치(8)는, 동작을 시작한다.
명령 발행 제어 장치(5)는, 연산기(7)에 대하여 발행하는 명령의 상한수를 관리한다. 이 때문에, 명령 발행 제어 장치(5)는, 연산기(7)에 대하여 명령을 발행할 때마다 연산기(7)에 대하여 발행한 명령의 수(발행수)를 +1만큼 인크리먼트한다. 명령 발행 제어 장치(5)는, 연산기(7)로의 명령의 발행수가 상한수를 초과하는 경우, 이 연산기(7)로의 명령을 발행하지 않는다. 이에 따라, 명령 발행 제어 장치(5)는, 연산기(7)로의 명령의 발행수가 상한수를 초과하지 않도록 할 수 있다.
명령 발행 제어 장치(5)는, 후술하는 명령 완료 제어 장치(6)로부터, 명령의 실행이 완료된 것을 나타내는 통지를 수신하면, 연산기(7)로의 명령의 발행수를 -1만큼 디크리먼트한다. 이 결과, 연산기(7)가 명령 발행 제어 장치(5)로부터 명령의 발행을 수신할 수 있는 상태가 된다.
명령 완료 제어 장치(6)는, 연산기(7)로부터 연산 완료 통지를 수신하면, 명령 발행 제어 장치(5)로부터 송신된, 명령을 식별하는 정보에 기초하여 이 명령의 연산이 완료되었는지 여부를 판단한다. 명령 완료 제어 장치(6)는, 명령의 실행이 완료된 경우, 이 명령의 실행이 완료된 것을 명령 발행 제어 장치(5)로 통지한다.
연산기(7)는, 복수의 명령을 포함하는 명령열에 대해서, 미리 정해진 연산을 실행한다. 예컨대, 연산기(7)는, 명령 발행 제어 장치(5)가 발행한 명령을 수신하고, 수신한 명령의 연산의 실행에 필요한 데이터를 메모리(2)로부터 판독한다. 연산기(7)는, 수신한 명령과 메모리(2)로부터 판독한 데이터에 기초하여 미리 정해진 연산을 실행한다. 연산기(7)는, 명령 해석 장치(4)에 의한 해석 결과, 이 명령이 분기 명령인 것을 나타내는 경우, 그 분기 조건과 분기 목적지 어드레스를 연산하고, 연산 결과를 분기 제어 장치(8)에 송신한다.
분기 제어 장치(8)는, 연산기(7)로부터 연산 결과를 수신하여 연산이 완료된 분기 명령 어드레스와, 연산이 완료된 분기 목적지 어드레스를, 분기 예측 장치(1)의 관리부(12)에 대하여 송신한다. 또한, 분기 제어 장치(8)는, 연산기(7)로부터 연산 결과를 수신하고, 연산 결과와 분기 예측 장치(1)로부터 수신한 분기 예측 처리의 결과에 기초하여, 분기 예측 장치(1)의 분기 예측 처리 결과가 올바른지 여부, 즉, 분기 예측이 성공했는지 실패했는지를 판단한다. 분기 제어 장치(8)는, 분기 예측이 성공했는지 실패했는지를 나타내는 정보를 분기 예측 장치(1)의 관리부(12)에 대하여 송신한다.
또한, 분기 제어 장치(8)는, 분기 예측이 실패한 경우에는, 명령 취득 제어 장치(3)에 대하여, 재명령 페치 요구를 송신한다.
도 1의 정보 처리 장치 및 정보 처리 장치가 구비하는 각 처리부의 기능은, CPU와 그 위에서 실행되는 프로그램에 의해 실현된다. 상기 프로그램은, 컴퓨터가 판독 가능한 기록 매체, 예컨대 반도체 메모리, 하드디스크, CD-ROM, DVD 등에 저장할 수 있고, 이들 기록 매체에 기록하여 제공되거나 또는 통신 인터페이스를 통해 네트워크를 이용한 송수신에 의해 제공된다.
도 2는, 도 1에 도시된 분기 예측 장치가 통상 동작 모드에 있어서 행하는 처리를 설명한 도면이다.
분기 예측 장치(1)의 관리부(12)가, 분기 제어 장치(8)로부터, 연산기(7)에 의한 연산이 완료된 분기 명령의 명령 어드레스(a21)와 분기 목적지 어드레스(a22)를 수신하고, 수신한 분기 명령 어드레스(a21)와 분기 목적지 어드레스(a22)를, 제2 대응 정보로서 브랜치 히스토리 테이블(14)에 등록한다(#21). 관리부(12)는, 분기 제어 장치(8)로부터 분기 명령 어드레스(a21)와 분기 목적지 어드레스(a22)를 수신할 때마다, 수신한 분기 명령 어드레스(a21)와 분기 목적지 어드레스(a22)를 새로운 제2 대응 정보로서 브랜치 히스토리 테이블(14)에 추가한다. 또한, 분기 예측 장치(1)의 관리부(12)는, 도 4를 참조하여 후술하는 바와 같이, 미리 정해진 조건 하에서 브랜치 히스토리 테이블(14)의 제2 대응 정보를 갱신한다.
또한, 분기 예측 장치(1)의 분기 예측부(11)가, 명령 취득 제어 장치(3)로부터 명령 페치 어드레스(a25)를 취득하고, 취득한 명령 페치 어드레스(a25)를 키로 하여 브랜치 히스토리 테이블(14)을 검색한다(#22).
명령 페치 어드레스(a25)와 브랜치 히스토리 테이블(14)의 제2 대응 정보에 포함되는 분기 명령 어드레스가 일치하는 경우, 분기 예측부(11)는, 명령 페치 어드레스(a25)로부터 판독되는 명령이 분기 명령이며, 또한, 그 분기 명령에 대해서는 분기가 성립된다고 예측한다. 분기 예측부(11)가, 제2 대응 정보에 있어서 명령 페치 어드레스(a25)와 일치하는 분기 명령 어드레스와 대응된 분기 목적지 어드레스를 취득하고, 취득한 분기 목적지 어드레스를, 예측한 분기 목적지 어드레스(a23)로서 명령 취득 제어 장치(3)에 대하여 송신한다(#23).
분기 예측부(11)에 의해 분기 성립으로 예측된 경우, 셀렉터(33)가, 분기 예측 장치(1)로부터 예측한 분기 목적지 어드레스(a23)를 수신하고, 예측한 분기 목적지 어드레스(a23)를 다음 명령 페치 어드레스로서 선택한다. 명령 취득 제어 장치(3)는, 셀렉터(33)가 선택한 명령 페치 어드레스에 기초하여 메모리(2)로부터 명령을 페치하고, 페치한 명령을 명령 버퍼(31)에 저장한다(#24).
브랜치 히스토리 테이블(14)을 검색한 결과, 명령 페치 어드레스(a25)가 제2 대응 정보에 포함되는 분기 명령 어드레스와 일치하지 않는 경우에는, 분기 예측부(11)는, 명령 페치 어드레스(a25)로부터 판독되는 명령이 분기 명령이 아니거나, 또는 분기 명령이지만 그 분기 명령에 대한 분기가 불성립이라고 예측한다. 분기 예측부(11)는, 현재의 명령 페치 어드레스(a25)와 연속되는 어드레스를 다음 명령 페치 어드레스로 하도록 명령 취득 제어 장치(3)의 어드레스 형성부(32)에 대하여 지시한다(#25). 따라서, 분기 예측부(11)로부터 출력된 예측 결과는, 명령 페치 어드레스의 선택에 사용된다.
이 지시를 수신한 어드레스 형성부(32)가, 현재의 명령 페치 어드레스(a25)와 연속되는 어드레스(a24)를 형성하여 셀렉터(33)에 대하여 출력한다.
분기 예측부(11)에 의해 분기 불성립으로 예측된 경우, 셀렉터(33)가, 어드레스 형성부(32)가 형성한 어드레스(a24)를, 다음 명령 페치 어드레스로서 선택한다.
도 3은, 도 1에 도시된 분기 예측 장치에 있어서의, 통상 동작 모드에서 저소비전력 모드로의 전환 처리를 설명한 도면이다.
도 1의 분기 예측 장치(1)의 관리부(12)는, 비교부(16), 갱신 신호 형성부(17), 비교부(18)를 구비한다. 또한, 분기 예측 장치(1)의 분기 예측부(11)는 셀렉터(19)를 구비한다.
분기 예측 장치(1)의 관리부(12)가, 분기 제어 장치(8)로부터, 연산기(7)에 의한 연산이 완료된 분기 명령 어드레스(a31)와 연산이 완료된 분기 목적지 어드레스(a32)를 수신하고, 수신한 분기 명령 어드레스(a31)와 분기 목적지 어드레스(a32)를, 제1 대응 정보로서 싱글 루프 엔트리(13)에 등록한다(#31). 또한, 분기 명령 어드레스(a31) 및 분기 목적지 어드레스(a32)는, 처리 #21에 있어서의 분기 명령 어드레스(a21) 및 분기 목적지 어드레스(a22)와 동일한 어드레스이다.
분기 예측 장치(1)의 비교부(18)가, 카운터(15)의 카운트값과 임계값을 비교하고, 카운트값이 임계값을 초과하고 있는지 여부를 판단한다. 비교부(18)에서 카운트값이 임계값을 초과하고 있는 경우에는, 관리부(12)가, 연산기(7)로 연산되는 명령열이 루프하고 있다고 판단한다.
연산기(7)로 연산되는 명령열이 루프하고 있는 경우, 관리부(12)가, 브랜치 히스토리 테이블(14)로의 클록 공급을 정지하고(#32), 이에 따라, 분기 예측 기구의 동작 모드를 통상 동작 모드에서 저소비전력 모드로 전환한다. 분기 예측 기구의 동작 모드가 저소비전력 모드로 전환된 경우, 관리부(12)가, 셀렉터(19)에 대하여 싱글 루프 엔트리(13)의 검색 결과 출력되는 분기 목적지 어드레스(a33)를 선택하도록 지시한다(#33).
비교부(18)가, 카운트값이 임계값을 초과하지 않는 경우에는, 관리부(12)가, 연산기(7)로 연산되는 명령열이 루프하지 않는다고 판단하여, 통상 동작 모드를 속행한다. 즉, 관리부(12)가, 셀렉터(19)에 대하여, 브랜치 히스토리 테이블(14)의 검색 결과 출력되는 분기 목적지 어드레스를 선택하도록 지시한다(#33).
셀렉터(19)가, 관리부(12)로부터 지시된 분기 목적지 어드레스를 선택한다. 분기 예측부(11)가, 선택된 분기 목적지 어드레스를, 예측한 분기 목적지 어드레스(a34)로서 명령 취득 제어 장치(3)에 대하여 송신한다(#39).
또한, 관리부(12)가, 분기 제어 장치(8)로부터 연산이 완료된 분기 명령 어드레스(a31)를 수신한 경우, 비교부(16)가, 수신된 분기 명령 어드레스(a31)와 싱글 루프 엔트리(13)의 제1 대응 정보에 있어서의 분기 명령 어드레스(α1)를 비교한다(#34).
수신한 분기 명령 어드레스(a31)와 제1 대응 정보에 있어서의 분기 명령 어드레스(α1)가 일치하는 경우에는, 비교부(16)가, 비교 결과 일치 신호(S31)를 출력한다. 비교 결과 일치 신호(S31)는, 분기 명령 어드레스(a31)와 분기 명령 어드레스(α1)가 일치하는 것을 나타내는 신호이다. 관리부(12)가, 비교 결과 일치 신호(S31)에 기초하여 카운터(15)의 카운트값을 인크리먼트한다(#35).
분기 명령 어드레스(a31)와 분기 명령 어드레스(α1)가 상이한 경우에는, 갱신 신호 형성부(17)가, 비교 결과 일치 신호(S31)를 반전시켜 갱신 신호(S32)를 형성한다. 갱신 신호(S32)는, 싱글 루프 엔트리(13)의 제1 대응 정보를 갱신할 것을 지시하고, 카운터(15)를 클리어할 것을 지시하는 신호이다.
관리부(12)가, 갱신 신호 형성부(17)가 형성한 갱신 신호(S32)에 기초하여 분기 명령 어드레스(a31)와 분기 목적지 어드레스(a32)를 이용하여, 싱글 루프 엔트리(13)의 제1 대응 정보를 갱신한다(#36). 또한, 관리부(12)가, 갱신 신호(S32)에 기초하여 카운터(15)를 클리어한다(#37).
분기 예측 장치(1)의 분기 예측부(11)는, 분기 예측 기구의 동작 모드가 저소비전력 모드로 전환된 경우, 이하에 나타내는 분기 예측 처리를 실행한다.
분기 예측부(11)는, 명령 취득 제어 장치(3)로부터 명령 페치 어드레스를 취득하고, 취득한 명령 페치 어드레스를 키로 하여 싱글 루프 엔트리(13)를 검색한다. 분기 예측부(11)가, 명령 페치 어드레스와 싱글 루프 엔트리(13)에 저장되어 있는 제1 대응 정보가 나타내는 분기 명령 어드레스(α1)가 일치하는 경우에는, 분기 예측부(11)는, 명령 페치 어드레스(α1)로부터 판독되는 명령이 분기 명령이며, 또한, 그 분기 명령에 대해서는 분기가 성립된다고 예측한다. 분기 예측부(11)가, 일치한 분기 명령 어드레스(α1)에 대응하는 분기 목적지 어드레스(β1)를 예측한 분기 목적지 어드레스(a33)로 하여, 셀렉터(19)에 대하여 출력한다(#38).
전술한 바와 같이, 저소비전력 모드에 있어서는, 셀렉터(19)가, 관리부(12)의 지시에 따라, 분기 목적지 어드레스(a33)를 선택한다. 그리고, 분기 예측부(11)가, 선택된 분기 목적지 어드레스를 예측한 분기 목적지 어드레스(a34)로 하여, 명령 취득 제어 장치(3)에 대하여 송신한다(#39).
도 3에 도시된 처리에 있어서는, 연산기(7)로 연산되는 명령열이 루프하고 있는 경우에는, 싱글 루프 엔트리(13)를 이용하여 예측된 분기 목적지 어드레스가 선택된다. 한편, 명령열이 루프하지 않는 경우에는, 브랜치 히스토리 테이블(14)을 이용하여 예측된 분기 목적지 어드레스가 선택된다. 이상의 처리에 의해, 선택된 분기 목적지 어드레스가, 명령 취득 제어 장치(3)에 의한 명령 페치에 사용된다. 이에 따라, 명령열의 루프의 실행 중에는 분기 예측 기구의 소비전력을 저감할 수 있다.
도 4는 분기 제어 장치의 처리를 설명하는 도면이다.
연산기(7)가, 명령 페치 어드레스(a44)로부터 판독되는 명령이 분기 명령인 경우에는, 그 분기 명령의 분기 조건과 분기 목적지 어드레스를 연산하고, 연산 결과를 분기 제어 장치(8)에 대하여 송신한다. 예컨대, 명령 발행 제어 장치(5)가 발행한 분기 명령에 대해서, 분기 성립 조건이, 레지스터 A의 값과 레지스터 B의 값이 같은 것인 경우, 연산기(7)가 구비하는 비교부(71)가, 레지스터 A의 값과 레지스터 B의 값을 비교하고(#41), 비교 결과를 분기 제어 장치(8)에 대하여 송신한다.
분기 제어 장치(8)가, 연산기(7)로부터 수신한 연산 결과와 분기 성립 조건을 비교하여 양자가 일치하는지 여부를 판단한다. 분기 제어 장치(8)가, 연산기(7)로부터 수신한 연산 결과와 분기 성립 조건이 일치하는 경우, 분기 제어 장치(8)는, 분기 명령에 대해서 분기가 성립된다고 판단한다(#42).
분기 제어 장치(8)가, 연산기(7)로부터 수신한 연산 결과와 분기 성립 조건이 일치하지 않는 경우, 분기 제어 장치(8)는, 분기 명령에 대해서 분기 성립되지 않는다고 판단한다. 구체적으로는, 분기 제어 장치(8)는, 분기 명령에 대해서 분기가 성립된다고 하는 판단 결과를 AND 회로(84)에 입력한다(#43). 또한, 도 4의 예에 있어서, AND 회로(84)는 반전 신호를 입력으로 하는 논리의 회로이다.
분기 제어 장치(8)는, 분기 명령에 대해서 분기가 성립되는지 여부에 대한 판단 결과를, 분기 예측 장치(1)의 관리부(12)에 대하여 송신한다. 구체적으로는, 분기 제어 장치(8)는, 분기 명령에 대해서 분기가 성립된다고 하는 판단 결과를, 분기 예측 장치(1)에 대하여 송신하여 분기 예측 장치(1)의 AND 회로(121)에 입력한다(#44).
또한, 분기 제어 장치(8)는, 분기 예측 장치(1)로부터 분기 예측 처리의 결과를 수신한다. 구체적으로는, 분기 제어 장치(8)는, 분기 예측 장치(1)의 분기 예측부(11)로부터, 분기가 성립되는지 여부에 대해서, 예측과, 분기 예측부(11)가 예측한 분기 목적지 어드레스(a42)를 수신한다. 분기 제어 장치(8)는, 도 4에 도시된 비교부(81), AND 회로(82), AND 회로(84), OR 회로(83), 인버터 회로(85)를 이용하여 분기 명령에 대해서 분기가 성립되는지 여부를 판단한다. 이 판단 처리는, 연산기(7)로부터 수신한 연산 결과와 분기 예측 장치(1)로부터 수신한 분기 예측 처리의 결과에 기초하여 실행된다. 이 판단 처리는, 이하의 제1 경우 내지 제3 경우와 같이, 실행된다.
제1 경우는, 분기 예측 장치(1)에 있어서 분기가 성립된다고 예측되고(#45),분기 제어 장치(8)에 있어서 분기 명령이 분기 성립이라고 판단되며(#42), 비교부(81)에 있어서, 연산 완료된 분기 목적지 어드레스(a41)와 분기 예측 장치(1)가 예측한 분기 목적지 어드레스(a42)가 일치하는 경우(#46)이다. 이 경우, 분기 제어 장치(8)가, 분기 예측이 성공했다고 판단한다(#47). 구체적으로는, 분기 예측 장치(1)의 분기가 성립된다고 하는 예측 결과와, 분기 제어 장치(8)의 분기 명령이 분기 성립이라고 하는 판단 결과와, 비교부(81)의 판단 결과가 AND 회로(82)에 입력된다. 이것에 따라, OR 회로(83)가, 분기 예측이 성공한 것을 나타내는 정보를 출력한다. 분기 제어 장치(8)는, OR 회로(83)가 출력한 정보에 기초하여 분기 예측이 성공했다고 판단한다.
제2 경우는, 분기 예측 장치(1)에 있어서 분기가 불성립으로 예측된(#48) 분기 명령에 대해서, 분기 제어 장치(8)에 있어서 분기가 성립되지 않는다고 판단된 경우(#43)이다. 이 경우, 분기 제어 장치(8)는, 분기 예측이 성공했다고 판단한다(#47). 구체적으로는, 분기 예측 장치(1)에 의한 분기가 성립된다고 하는 예측 결과의 반전 신호(환언하면, 분기 불성립의 예측)와, 분기 제어 장치(8)에 의한 분기 명령이 분기 성립된다고 하는 판단 결과의 반전 신호(환언하면, 분기 불성립의 판단)가, AND 회로(84)에 입력된다. 이것에 따라, OR 회로(83)가, 분기 예측이 성공한 것을 나타내는 정보를 출력한다. 분기 제어 장치(8)는, OR 회로(83)가 출력한 정보에 기초하여 분기 예측이 성공했다고 판단한다.
제3 경우는, 제1 경우(1) 또는 제2 경우(2) 이외의 경우이다. 이 경우, 인버터 회로(85)가, OR 회로(83)의 출력을 반전시켜 분기 예측이 실패한 것을 나타내는 정보를 출력한다. 이것에 따라, 분기 제어 장치(8)가, 인버터 회로(85)가 출력한 정보에 기초하여 분기 예측이 실패했다고 판단한다(#49).
분기 제어 장치(8)에 있어서, 분기 예측이 성공한 경우에는, 선행하여 실행한 명령열이 올바른 것을 의미한다. 따라서, 이 경우에는, 명령 취득 제어 장치(3)는, 그대로 처리를 속행한다. 한편, 분기 제어 장치(8)에 있어서, 분기 예측이 실패한 경우에는, 선행하여 실행한 명령열이 잘못된 것을 의미한다. 따라서, 이 경우에는, 분기 제어 장치(8)는, 명령 취득 제어 장치(3)에 대하여, 재명령 페치 요구를 송신한다(#410). 명령 취득 제어 장치(3)는, 분기 제어 장치(8)로부터 재명령 페치 요구를 수신한 경우, 선행하여 페치한 명령의 실행을 전부 캔슬하고, 올바른 명령 어드레스의 명령을, 메모리(2)로부터 재차 페치한다.
명령 취득 제어 장치(3)가 구비하는 셀렉터(33)는, 분기 제어 장치(8)에 있어서, 분기 예측이 실패하고(#49), 또한, 분기가 성립된 경우에는(#42), 연산기(7)의 연산 결과 얻어진 분기 목적지 어드레스(a41)를, 재명령 페치의 어드레스(a43)로서 선택한다(#411).
셀렉터(33)는, 분기 제어 장치(8)에 있어서, 분기 예측이 실패하고(#49), 또한, 분기가 불성립인 경우에는, 연산이 완료된 분기 명령의 명령 어드레스(a44)의 다음 명령 어드레스를, 재명령 페치의 어드레스(a43)로서 선택한다(#411). 구체적으로는, 명령 취득 제어 장치(3)가 구비하는 어드레스 형성부(32)가, 연산이 완료된 분기 명령의 명령 어드레스(a44)에, 예컨대 미리 정해진 값(α)을 더함으로써, 연산이 완료된 분기 명령의 명령 어드레스(a44)의 다음 명령 어드레스를 형성한다. 그리고, 셀렉터(33)가, 어드레스 형성부(32)에 의해 형성된 명령 어드레스를, 재명령 페치의 어드레스(a43)로서 선택한다(#411).
다음에, 분기 예측 장치(1)에 있어서의 브랜치 히스토리 테이블(14) 또는 싱글 루프 엔트리(13)로의 대응 정보의 등록 또는 갱신에 대해서 설명한다.
분기 예측 장치(1)가 구비하는 관리부(12)는, AND 회로(121), AND 회로(122), 비교부(123)를 구비한다. 분기 예측 장치(1)는, AND 회로(121), AND 회로(122), 비교부(123)를 이용하여 브랜치 히스토리 테이블(14) 또는 싱글 루프 엔트리(13)에 대응 정보를 등록하거나 또는 등록된 대응 정보를 갱신한다.
분기 제어 장치(8)에 있어서, 분기 예측이 실패하고(#49), 또한, 분기가 성립되는 경우(#42), 분기 예측이 실패했다고 하는 판단 결과와, 분기가 성립된다고 하는 판단 결과가 AND 회로(121)에 입력된다(#412, #44). AND 회로(121)가 브랜치 히스토리 테이블 등록 신호(S41)를 출력한다. 브랜치 히스토리 테이블 등록 신호(S41)는 브랜치 히스토리 테이블(14)로의 대응 정보의 등록을 지시하는 제어 신호이다. 분기 예측 장치(1)의 관리부(12)가, 브랜치 히스토리 테이블 등록 신호(S41)에 기초하여, 브랜치 히스토리 테이블(14)에, 분기가 성립된다고 판단된 명령의 분기 목적지 어드레스를 포함하는 대응 정보를 새롭게 등록한다.
분기 제어 장치(8)에 있어서, 분기 예측이 실패하고, 또한, 분기가 불성립인 경우에는, 분기 예측 장치(1)의 관리부(12)는, 브랜치 히스토리 테이블(14)의 엔트리의 갱신 또는 삭제를 행하기 위한 미리 정해진 조건이 만족되고 있는지 여부를 판단한다. 미리 정해진 조건은, 예컨대 그 엔트리에 대해서 분기 예측이 실패한 횟수가 미리 정해진 횟수 이상일 것이라고 여겨진다. 관리부(12)는, 브랜치 히스토리 테이블(14)의 엔트리의 갱신이나 삭제를 행하기 위한 미리 정해진 조건이 만족되고 있는 경우에는, 브랜치 히스토리 테이블(14)의 엔트리의 갱신, 삭제를 행한다.
또한, 분기 제어 장치(8)에서 분기가 성립된다고 판단한 경우(#42), 이 판단결과가 AND 회로(122)에 입력된다(#44). 비교부(123)가, 연산이 완료된 분기 명령의 명령 어드레스(a44)와, 싱글 루프 엔트리(13)의 제1 대응 정보가 나타내는 분기 명령 어드레스를 비교한다(#413). 비교부(123)가, 명령 페치 어드레스(a44)와 제1 대응 정보가 나타내는 분기 명령 어드레스가 일치하지 않는 것을 나타내는 정보를, AND 회로(122)에 대하여 출력한다. AND 회로(122)가, 분기 제어 장치(8)에 의한 분기가 성립된다고 하는 판단 결과와, 비교부(123)의 출력 결과에 기초하여 싱글 루프 엔트리 갱신 신호(S42)를 출력한다. 싱글 루프 엔트리 갱신 신호(S42)는, 싱글 루프 엔트리(13)의 제1 대응 정보를 갱신할 것을 지시하는 제어 신호이다. 관리부(12)는, 싱글 루프 엔트리 갱신 신호(S42)에 기초하여 싱글 루프 엔트리(13)의 제1 대응 정보를, 연산이 완료된 분기 명령의 명령 어드레스와, 이 명령 어드레스에 대응하는 분기 목적지 어드레스를 이용하여 갱신한다.
도 5는 분기 예측의 성공 또는 실패에 따른 분기 예측 처리 동작의 상태의 천이를 설명한 도면이다.
연산기(7)가 분기 명령의 연산을 완료한다(#51). 분기 제어 장치(8)가, 분기 예측이 성공하고(#52), 또한, 분기 성립이라고 판단한 경우(#53), 분기 예측 장치(1)의 관리부(12)가, 분기가 성립된 분기 명령 어드레스와, 싱글 루프 엔트리(13)에 등록된 분기 명령 어드레스를 비교하여, 양자가 일치하는지 여부를 판단한다(#54).
분기가 성립된 분기 명령 어드레스와 싱글 루프 엔트리(13)에 등록된 분기 명령 어드레스가 일치하지 않는 경우에는(#54 No), 관리부(12)는, 분기가 성립된 분기 명령 어드레스로 싱글 루프 엔트리(13)의 제1 대응 정보를 갱신하고, 카운터(15)를 클리어한다(#515). 이것은, 분기가 성립된 분기 명령 어드레스와 싱글 루프 엔트리(13)에 등록된 분기 명령 어드레스가 일치하지 않는 것은, 연산기(7)로 연산되는 명령열이, 싱글 루프 엔트리(13)에 등록되어 있는 분기 명령에 의한 루프로부터 벗어나, 예컨대, 새로운 분기 명령에 의한 루프로 들어간 것을 의미하기 때문이다.
분기가 성립된 명령 어드레스와, 싱글 루프 엔트리(13)에 등록된 분기 명령 어드레스가 일치하는 경우에는(#54 Yes), 관리부(12)가, 카운터(15)의 카운트값을 인크리먼트한다(#55).
분기 예측 장치(1)의 관리부(12)가, 카운터(15)의 카운트값이 임계값을 초과하였는지 여부를 판단한다(#56). 카운터(15)의 카운트값이 임계값을 초과하지 않은 경우에는(#56 No), 관리부(12)는, 현재의 동작 모드를 계속한다(#510). 카운터(15)의 카운트값이 임계값을 초과한 경우에는(#56 Yes), 관리부(12)가, 분기 예측 기구의 동작 모드가 통상 동작 모드인지 여부를 판단한다(#57). 분기 예측 기구의 동작 모드가 통상 동작 모드가 아닌 경우(#57 No), 즉 저소비전력 모드인 경우에는, 관리부(12)는 현재의 동작 모드를 계속한다(#510).
분기 예측 기구의 동작 모드가 통상 동작 모드인 경우(#57 Yes), 관리부(12)가, 브랜치 히스토리 테이블(14)에 공급되어 있는 클록을 정지한다(#58). 이에 따라, 분기 예측 기구의 동작 모드가 통상 동작 모드에서 저소비전력 모드로 전환되고, 분기 예측 장치(1)의 분기 예측부(11)가, 브랜치 히스토리 테이블(14)이 아니라, 싱글 루프 엔트리(13)를 이용하여 분기 예측 처리를 행한다(#59).
분기 제어 장치(8)가, 분기 예측이 성공하고(#52), 또한, 분기가 불성립이라고 판단한 경우(#511), 관리부(12)는, 현재의 동작 모드를 계속한다(#512).
분기 제어 장치(8)가, 분기 예측이 실패했다고 판단한 경우에는, 분기 예측 장치(1)의 관리부(12)가, 이하에 설명하는 바와 같이, 카운터(15)를 클리어한다. 이것은, 분기 예측이 실패한 것은, 연산기(7)로 연산되는 명령열이, 싱글 루프 엔트리(13)에 등록되어 있는 분기 명령에 의한 루프로부터 벗어나, 예컨대, 새로운 분기 명령에 의한 루프로 들어간 것을 의미하기 때문이다.
구체적으로는, 분기 제어 장치(8)가, 분기 예측이 실패하고(#513), 또한, 분기 성립이라고 판단한 경우(#514), 관리부(12)가, 분기가 성립된 분기 명령 어드레스로 싱글 루프 엔트리(13)의 제1 대응 정보를 갱신하여 카운터(15)를 클리어하고(#515), 후술하는 #516의 처리를 실행한다. 분기 제어 장치(8)가, 분기 예측이 실패하고(#513), 또한, 분기가 불성립이라고 판단한 경우(#517), 관리부(12)가, 카운터(15)를 클리어한다(#518).
이 후, 관리부(12)가, 현재의 동작 모드가 통상 동작 모드인지 여부를 판단한다(#516). 현재의 동작 모드가 통상 동작 모드인 경우(#516 Yes), 관리부(12)는, 현재의 동작 모드를 계속한다(#510). 현재의 동작 모드가 통상 동작 모드가 아닌 경우(#516 No), 즉 저소비 전력 모드인 경우에는, 관리부(12)는, 브랜치 히스토리 테이블(14)로의 클록 공급 정지를 해제한다(#519). 이에 따라, 분기 예측 기구의 동작 모드가 저소비전력 모드에서 통상 동작 모드로 전환되고, 분기 예측 장치(1)의 분기 예측부(11)가, 브랜치 히스토리 테이블(14)을 이용하여 분기 예측 처리를 행한다(#520).
1 : 분기 예측 장치 2 : 메모리
3 : 명령 취득 제어 장치 4 : 명령 해석 장치
5 : 명령 발행 제어 장치 6 : 명령 완료 제어 장치
7 : 연산기 8 : 분기 제어 장치
11 : 분기 예측부 12 : 관리부
13 : 싱글 루프 엔트리 14 : 브랜치 히스토리 테이블
15 : 카운터

Claims (6)

  1. 연산의 실행이 완료된 명령으로서, 분기가 성립된 최신 분기 명령에 대해서, 그 명령 어드레스와 분기 목적지 어드레스의 대응 정보인 제1 대응 정보를 저장하는 제1 분기 이력 기억부와,
    상기 연산의 실행이 완료된 명령으로서, 분기가 성립된 최신을 포함하는 미리 결정된 개수의 과거의 복수의 분기 명령의 각각에 대해서, 그 명령 어드레스와 분기 목적지 어드레스의 대응 정보인 제2 대응 정보를 저장하는 제2 분기 이력 기억부와,
    메모리로부터 페치하는 명령의 명령 어드레스를 이용하여, 상기 제1 분기 이력 기억부의 제1 대응 정보 또는 상기 제2 분기 이력 기억부의 제2 대응 정보를 검색한 결과에 기초하여 분기 예측을 행하는 분기 예측 제어부로서, 명령열이 루프하고 있는 경우에는, 상기 제2 분기 이력 기억부로의 클록 공급을 정지하고, 상기 제1 분기 이력 기억부의 상기 제1 대응 정보를 검색한 결과에 기초하여 분기 예측을 행하는 분기 예측 제어부
    를 포함하는 것을 특징으로 하는 정보 처리 장치.
  2. 제1항에 있어서,
    상기 분기 예측 제어부는, 상기 연산의 실행이 완료된 분기 명령의 명령 어드레스가 상기 제1 대응 정보에 포함되는 명령 어드레스와 일치하는 횟수를 카운트값으로서 카운트하고, 상기 카운트한 카운트값이 임계값을 초과하는 경우에는, 연산을 실행중인 명령열이 루프하고 있다고 판단하는 것을 특징으로 하는 정보 처리 장치.
  3. 제1항에 있어서,
    상기 분기 예측 제어부는, 상기 제2 분기 이력 기억부로의 클록 공급이 정지되어 있는 경우에 있어서, 연산을 실행중인 명령열이 루프하고 있는지 여부를 판단하고, 상기 연산을 실행중인 명령열이 루프하지 않는 경우에는, 상기 제2 분기 이력 기억부로의 클록 공급 정지를 해제하는 것을 특징으로 하는 정보 처리 장치.
  4. 제3항에 있어서,
    상기 분기 예측 제어부는, 상기 분기 예측이 실패한 경우에는, 상기 연산을 실행중인 명령열이 루프하고 있지 않다고 판단하는 것을 특징으로 하는 정보 처리 장치.
  5. 제3항에 있어서,
    상기 분기 예측 제어부는, 상기 분기 예측이 성공하고, 또한, 상기 제1 대응 정보에 포함되는 분기 목적지 어드레스가 연산의 실행이 완료된 분기 명령의 분기 목적지 어드레스와 일치하지 않는 경우에는, 상기 연산을 실행중인 명령열이 루프하고 있지 않다고 판단하는 것을 특징으로 하는 정보 처리 장치.
  6. 연산의 실행이 완료된 명령으로서, 분기가 성립된 최신 분기 명령에 대해서, 그 명령 어드레스와 분기 목적지 어드레스의 대응 정보인 제1 대응 정보를, 제1 분기 이력 기억부에 저장하고,
    상기 연산의 실행이 완료된 명령으로서, 분기가 성립된 최신을 포함하는 미리 결정된 개수의 과거의 복수의 분기 명령의 각각에 대해서, 그 명령 어드레스와 분기 목적지 어드레스의 대응 정보인 제2 대응 정보를, 제2 분기 이력 기억부에 저장하며,
    메모리로부터 페치하는 명령의 명령 어드레스를 이용하여, 상기 제1 분기 이력 기억부의 제1 대응 정보 또는 상기 제2 분기 이력 기억부의 제2 대응 정보를 검색한 결과에 기초하여 분기 예측을 행하는 분기 예측 제어부가, 상기 연산을 실행중인 명령열이 루프하고 있는지 여부를 판단하고,
    상기 분기 예측 제어부는, 상기 연산을 실행중인 명령열이 루프하고 있는 경우에는, 상기 제2 분기 이력 기억부로의 클록 공급을 정지하고, 상기 제1 분기 이력 기억부의 상기 제1 대응 정보를 검색한 결과에 기초하여 분기 예측을 행하는 것을 특징으로 하는 분기 예측 방법.
KR1020100049822A 2009-06-01 2010-05-27 정보 처리 장치 및 분기 예측 방법 KR101126001B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JPJP-P-2009-132297 2009-06-01
JP2009132297A JP5423156B2 (ja) 2009-06-01 2009-06-01 情報処理装置及び分岐予測方法

Publications (2)

Publication Number Publication Date
KR20100129692A KR20100129692A (ko) 2010-12-09
KR101126001B1 true KR101126001B1 (ko) 2012-03-20

Family

ID=42829478

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100049822A KR101126001B1 (ko) 2009-06-01 2010-05-27 정보 처리 장치 및 분기 예측 방법

Country Status (5)

Country Link
US (1) US8595474B2 (ko)
EP (1) EP2261797B1 (ko)
JP (1) JP5423156B2 (ko)
KR (1) KR101126001B1 (ko)
CN (1) CN101901133B (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120079303A1 (en) * 2010-09-24 2012-03-29 Madduri Venkateswara R Method and apparatus for reducing power consumption in a processor by powering down an instruction fetch unit
KR20120036210A (ko) * 2010-10-07 2012-04-17 삼성전자주식회사 파이프라인 제어 위험 감소를 위한 처리장치 및 컴파일 장치와, 파이프라인 제어 위험 감소를 위한 동적 조건 분기 처리 방법
US9268569B2 (en) * 2012-02-24 2016-02-23 Apple Inc. Branch misprediction behavior suppression on zero predicate branch mispredict
GB2539041B (en) * 2015-06-05 2019-10-02 Advanced Risc Mach Ltd Mode switching in dependence upon a number of active threads
JP2018005488A (ja) * 2016-06-30 2018-01-11 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US10395033B2 (en) * 2016-09-30 2019-08-27 Intel Corporation System, apparatus and method for performing on-demand binary analysis for detecting code reuse attacks
US20180349144A1 (en) * 2017-06-06 2018-12-06 Intel Corporation Method and apparatus for branch prediction utilizing primary and secondary branch predictors
US20190004806A1 (en) * 2017-06-30 2019-01-03 Qualcomm Incorporated Branch prediction for fixed direction branch instructions
CN114116010B (zh) * 2022-01-27 2022-05-03 广东省新一代通信与网络创新研究院 一种针对处理器循环体的体系结构优化方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080082843A1 (en) * 2006-09-28 2008-04-03 Sergio Schuler Dynamic branch prediction predictor
JP2009053861A (ja) * 2007-08-24 2009-03-12 Panasonic Corp プログラム実行制御装置

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US82843A (en) * 1868-10-06 Charles f
US5175827A (en) * 1987-01-22 1992-12-29 Nec Corporation Branch history table write control system to prevent looping branch instructions from writing more than once into a branch history table
JP3335379B2 (ja) 1992-09-09 2002-10-15 富士通株式会社 ブランチ・ヒストリーを持つ命令実行処理装置
GB2285154B (en) * 1993-12-24 1998-04-01 Advanced Risc Mach Ltd Branch cache
US5937203A (en) * 1996-09-16 1999-08-10 Advanced Micro Devices, Inc. Port for fine tuning a central processing unit
US6085315A (en) * 1997-09-12 2000-07-04 Siemens Aktiengesellschaft Data processing device with loop pipeline
US6757817B1 (en) * 2000-05-19 2004-06-29 Intel Corporation Apparatus having a cache and a loop buffer
JP3804941B2 (ja) * 2002-06-28 2006-08-02 富士通株式会社 命令フェッチ制御装置
JP3798998B2 (ja) * 2002-06-28 2006-07-19 富士通株式会社 分岐予測装置および分岐予測方法
US7159103B2 (en) * 2003-03-24 2007-01-02 Infineon Technologies Ag Zero-overhead loop operation in microprocessor having instruction buffer
JP3893463B2 (ja) * 2003-04-23 2007-03-14 国立大学法人九州工業大学 キャッシュメモリ、及びキャッシュメモリの電力削減方法
KR100528479B1 (ko) * 2003-09-24 2005-11-15 삼성전자주식회사 전력 소모를 감소시키기 위한 분기 예측기 및 구현방법
US8719837B2 (en) * 2004-05-19 2014-05-06 Synopsys, Inc. Microprocessor architecture having extendible logic
TWI285841B (en) 2004-07-16 2007-08-21 Samsung Electronics Co Ltd Branch target buffer, branch target buffer memory array, branch prediction unit and processor with a function of branch instruction predictions
KR100591769B1 (ko) * 2004-07-16 2006-06-26 삼성전자주식회사 분기 예측 정보를 가지는 분기 타겟 버퍼
US20060190710A1 (en) * 2005-02-24 2006-08-24 Bohuslav Rychlik Suppressing update of a branch history register by loop-ending branches
US7475231B2 (en) * 2005-11-14 2009-01-06 Texas Instruments Incorporated Loop detection and capture in the instruction queue
US7873820B2 (en) * 2005-11-15 2011-01-18 Mips Technologies, Inc. Processor utilizing a loop buffer to reduce power consumption
JP2008090339A (ja) 2006-09-29 2008-04-17 Fujitsu Ltd サブシステムの電源制御回路及びサブシステム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080082843A1 (en) * 2006-09-28 2008-04-03 Sergio Schuler Dynamic branch prediction predictor
JP2009053861A (ja) * 2007-08-24 2009-03-12 Panasonic Corp プログラム実行制御装置

Also Published As

Publication number Publication date
CN101901133B (zh) 2013-05-22
EP2261797A1 (en) 2010-12-15
KR20100129692A (ko) 2010-12-09
US20100306516A1 (en) 2010-12-02
EP2261797B1 (en) 2012-07-04
JP5423156B2 (ja) 2014-02-19
US8595474B2 (en) 2013-11-26
CN101901133A (zh) 2010-12-01
JP2010277529A (ja) 2010-12-09

Similar Documents

Publication Publication Date Title
KR101126001B1 (ko) 정보 처리 장치 및 분기 예측 방법
JP3502592B2 (ja) 分岐予測装置
US7188234B2 (en) Run-ahead program execution with value prediction
US20100325395A1 (en) Dependence prediction in a memory system
JP2003005956A (ja) 分岐予測装置、プロセッサ、及び分岐予測方法
JP6205966B2 (ja) 演算処理装置及び演算処理装置の制御方法
US9250912B2 (en) Fast index tree for accelerated branch prediction
CN109643237B (zh) 分支目标缓冲器压缩
US10831499B2 (en) Apparatus and method for performing branch prediction
JP4009248B2 (ja) 分岐予測装置および分岐予測方法
US20220283811A1 (en) Loop buffering employing loop characteristic prediction in a processor for optimizing loop buffer performance
US20140229719A1 (en) Method and Apparatus for Branch Prediction
US10379858B2 (en) Method and apparatus for executing conditional instruction predicated on execution result of predicate instruction
US11249762B2 (en) Apparatus and method for handling incorrect branch direction predictions
US10620962B2 (en) Appratus and method for using predicted result values
JP2001060152A (ja) 分岐予測を抑止する情報処理装置および方法
US11403105B2 (en) Detecting misprediction when an additional branch direction prediction determined using value prediction is considered more accurate than an initial branch direction prediction
US20110083030A1 (en) Cache memory control device, cache memory device, processor, and controlling method for storage device
KR20230084140A (ko) 제어 독립성 기술을 채용한 프로세서에서 처리되는 명령어에 대한 추론성 예측을 행하는 데 사용된 추론성 이력의 복원
US10620960B2 (en) Apparatus and method for performing branch prediction
JP2004038338A (ja) 分岐予測機構を有する情報処理装置
JP4728877B2 (ja) マイクロプロセッサおよびパイプライン制御方法
JP5099133B2 (ja) 処理装置
CN115454693B (zh) 写后读异常的检测方法、装置、控制器、处理器及介质
KR20080000944A (ko) 파이프라인 구조를 갖는 프로세서 및 그 제어방법

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee