KR100440805B1 - 소규모의 하드웨어로 높은 적중률의 분기 예측을 하는 정보 처리 장치 - Google Patents
소규모의 하드웨어로 높은 적중률의 분기 예측을 하는 정보 처리 장치 Download PDFInfo
- Publication number
- KR100440805B1 KR100440805B1 KR1019970067053A KR19970067053A KR100440805B1 KR 100440805 B1 KR100440805 B1 KR 100440805B1 KR 1019970067053 A KR1019970067053 A KR 1019970067053A KR 19970067053 A KR19970067053 A KR 19970067053A KR 100440805 B1 KR100440805 B1 KR 100440805B1
- Authority
- KR
- South Korea
- Prior art keywords
- branch
- quot
- instruction
- history information
- prediction information
- Prior art date
Links
- 230000010365 information processing Effects 0.000 title claims abstract description 58
- 238000000034 method Methods 0.000 claims description 24
- 230000008859 change Effects 0.000 claims description 18
- 238000012545 processing Methods 0.000 claims description 7
- 230000015572 biosynthetic process Effects 0.000 claims description 4
- 230000007704 transition Effects 0.000 description 21
- 238000010586 diagram Methods 0.000 description 19
- 230000004048 modification Effects 0.000 description 14
- 238000012986 modification Methods 0.000 description 14
- 230000006870 function Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
본 발명은 마이크로 프로세서 등의 정보 처리 장치에 관한 것으로, 분기 명령 자체에 분기 예측정보(13b)와 분기 이력정보(13c)가 포함된다. 분기 예측정보(13b)는 다음에 실행된 경우에 예측되는 분기 성립 여부를 나타내는 1비트이며, 분기 이력정보(13c)는 과거에 분기가 성립된 빈도가「매우 많음」, 「많음」, 「적음」, 「매우 적음」 중 어느 하나를 나타내는 2비트이다. 명령 페치기(12)는 분기 예측정보(13b)에 따라서 캐시 메모리(1la)로부터 명령을 선취한다. 명령 실행기(15)가 분기 명령의 실행을 끝내면 그 실행 결과와 직전의 분기 이력정보(13c)에 따라서, 분기 이력정보 생성기(16)는 새로운 분기 이력정보를 생성하고, 분기 예측정보 생성기(17)는 새로운 분기 예측정보를 생성한다. 분기 명령 갱신기(18)는 생성된 분기 이력정보와 분기 예측정보를 캐시 메모리(11a) 상의 원래의 분기 명령의 해당 장소에 기입한다.
Description
본 발명은 마이크로프로세서 등의 정보 처리 장치에 관한 것으로, 특히 분기 예측의 개량 기술에 관한 것이다.
파이프라인 구조를 채용하는 마이크로프로세서 등의 정보 처리 장치에 있어서, 분기 명령의 실행에 의해서 제어의 흐름이 분기한 경우에 생기는 파이프라인의 혼란을 억제하는 방법의 하나로 분기 예측이 있다. 높은 적중률의 분기 예측을 행하려면 분기 명령 마다 분기의 성립 여부를 예측할 필요가 있다. 그를 위한 방법으로서 프로그램 중의 각 분기 명령에 대응하는 분기 예측정보를 모은 분기 예측표를 설치하는 것이 생각된다.
그런데, 정보 처리 장치의 내부에 분기 예측표를 갖게 한 것에서는 하드웨어의 증대를 초래한다.
그래서, 분기 예측정보를 정보 처리 장치의 내부에 고정적으로 보유하는 것은 아니고, 분기 명령 자체에 구비함으로써 정보 처리 장치에 필요하게 되는 하드웨어를 최소한으로 억제하는 분기 예측 방법이 제안되어 있다(예컨대, 일본국 특개소 63-75934에 개시된 정보 처리 장치).
도 1은 상기 종래의 정보 처리 장치용 분기 명령의 포맷을 도시한다.
이 종래의 정보 처리 장치에서는 분기 명령(40)에 1비트의 분기 예측정보(40b)를 갖게 하고, 분기 명령(40)의 해독시에는 그 분기 예측정보(40b)에 따라서 다음에 실행해야 할 명령을 메모리로부터 선취한다. 그리고, 분기 명령(40)의 실행이 종료되면, 실행 결과와 분기 예측정보(40b)를 조합하고, 실패한 경우에는 메모리에 저장된 그 분기 명령(40)의 분기 예측정보(40b)를 갱신한다는 것이다.
이것에 의해 정보 처리 장치의 내부에 분기 예측표를 설치하는 것을 피하고 있다.
그러나, 상기 종래의 정보 처리 장치는 정보 처리 장치에 필요한 하드웨어 규모를 억제하고 있지만, 분기 예측의 적중률이 낮기 때문에 분기 예측의 실패에 따르는 패널티가 빈번히 생긴다는 문제점이 있다.
즉, 상기 종래의 정보 처리 장치는 직전의 실행 결과를 나타내는 1비트의 분기 예측정보(40b)에 따라 다음 명령을 선취하기 위해서, 예컨대, 분기의 성립과 불성립이 번갈아 반복되는 경우에는 모든 예측이 벗어난다. 그 때문에, 이러한 분기 명령을 실행할 때마다 선취하고 있는 명령을 무효화하지 않으면 안되고, 정보 처리 장치 실행의 고속화가 방해받게 된다.
본 발명은, 상기 문제점을 감안하여 이루어진 것으로, 본 발명의 제 1 목적은 소규모의 하드웨어로 실현할 수 있고, 또한 높은 적중률의 분기 예측을 하는 정보 처리 장치를 제공하기 위한 것이다.
또한, 본 발명의 제 2 목적은 상기 정보 처리 장치를 소프트웨어로 실현하기 위한 프로그램이나 상기 정보 처리 장치를 위한 특유의 분기 명령을 포함하는 명령군이 기록된 기록 매체를 제공하기 위한 것이다.
도 1은 종래의 분기 명령의 포맷을 도시한 도면
도 2는 본 발명에 따른 정보 처리 장치의 구성을 도시한 블록도
도 3은 본 발명에 따른 분기 명령의 포맷을 도시한 도면
도 4는 본 발명에 따른 정보 처리 장치의 분기 이력정보 생성기(16) 및 분기 예측정보 생성기(17)의 입출력 관계를 도시한 진리값표
도 5는 본 발명에 따른 분기 이력정보 생성기(16)의 상세한 회로도
도 6은 본 발명에 따른 분기 예측정보 생성기(17)의 상세한 회로도
도 7은 본 발명에 따른 분기 명령의 분기 이력정보 및 분기 예측정보의 갱신 알고리즘을 도시한 상태 천이도
도 8은 본 발명에 따른 정보 처리 장치의 분기 명령 갱신기(18)의 상세한 구성을 도시한 블록도
도 9는 본 발명에 따른 분기 명령의 분기 예측정보, 분기 이력정보 및 분기 결과의 관계를 도시한 그래프
도 10은 본 발명에 따른 정보 처리 장치에서의 파이프라인 처리의 흐름을 도시한 도면
도 11은 본 발명에 따른 정보 처리 장치의 변형예 1에 관한 분기 명령의 분기 이력정보 및 분기 예측정보의 갱신 알고리즘을 도시한 상태천이도
도 12는 본 발명에 따른 정보 처리 장치의 변형예 2에 관한 분기 명령의 분기 이력정보 및 분기 예측정보의 갱신 알고리즘을 도시한 상태천이도
도 13은 본 발명에 따른 정보 처리 장치의 변형예 3에 관한 분기 명령의 분기 이력정보 및 분기 예측정보의 갱신 알고리즘을 도시한 진리값표
도 14는 본 발명에 따른 정보 처리 장치의 변형예 3에 관한 분기 명령의 분기 이력정보 및 분기 예측정보의 갱신 알고리즘을 도시한 상태천이도
* 도면의 주요 부분에 대한 부호의 설명 *
10 : 프로그램 카운터군 11 : 캐시 유니트
12 : 명령 페치군 13 : 명령 레지스터
14 : 명령 해독기 15 : 명령 실행기
16 : 분기 이력정보 생성기 17 : 분기 예측정보 생성기
18 : 분기 명령 갱신기 19 : 어드레스 생성기
20 : 분기 명령 100 : 정보 처리 장치
상기 목적을 달성하기 위한 본 발명의 정보 처리 장치는 명령을 차례로 실행하는 정보 처리 장치에 있어서, 분기의 성립 여부를 예측하는 분기 예측정보와 과거의 분기 결과에 대한 정보를 나타내는 분기 이력정보를 갖는 분기 명령을 포함하는 명령군을 미리 기억하는 기억수단과, 상기 기억수단으로부터 다음에 실행해야 할 명령을 판독하는 명령 페치 수단과, 판독된 명령이 상기 분기 명령인지의 여부를 해독하는 명령 해독 수단과, 상기 명령이 분기 명령이라고 해독된 경우에, 그 분기 명령의 분기 예측정보에 따라서 다음에 실행해야 할 명령을 판독하도록 상기 명령 페치 수단을 제어하는 명령페치 제어수단과, 해독된 상기 분기 명령을 실행하는 실행수단과, 상기 분기 명령이 실행되었을 때의 분기 결과와 그 분기 명령에 포함되어 있는 분기 이력정보에 따라서 새로운 분기 예측정보를 생성하는 분기 예측정보 생성수단과, 상기 분기 명령이 실행되었을 때의 분기 결과와 그 분기 명령에 포함되어 있는 분기 이력정보에 따라서 새로운 분기 이력정보를 생성하는 분기 이력정보 생성수단과, 상기 기억수단에 저장된 상기 분기 명령의 분기 예측정보와 분기 이력정보를 상기 분기 예측정보 생성수단에 의해 생성된 분기 예측정보와 상기 분기 이력정보 생성수단에 의해 생성된 분기 이력정보로 갱신하는 분기 명령 갱신수단을 구비하는 것을 특징으로 한다.
즉, 본 발명에 따른 정보 처리 장치에서는 분기 명령 중에 분기 예측정보 뿐만아니라 과거의 분기 결과를 나타내는 분기 이력정보도 포함되어 있다. 그리고, 분기 명령이 실행된 경우에는 그 실행 결과 뿐만아니라, 당해 분기 명령에 포함되어 있는 분기 이력정보도 고려되어 대응 분기 명령의 분기 예측정보 및 분기 이력정보가 갱신된다.
따라서, 직전의 1회의 실행 결과 뿐만아니라, 보다 전의 실행 결과에 근거하는 명령의 선취가 행하여지기 때문에 종래보다 높은 적중률의 분기 예측이 실현된다.
또한, 이들 분기 예측정보 및 분기 이력정보는 분기 예측표로서 정보 처리 장치의 내부에 고정적으로 위치되는 것은 아니고, 기억수단에 저장된 분기 명령 자체에 위치되므로 이 분기 예측을 실현하기 위해서 정보 처리 장치에 필요하게 되는 하드웨어 규모는 작아진다.
여기서, 상기 분기 이력정보는 그 분기 이력정보를 갖는 분기 명령에 대한 과거의 복수의 분기 결과에 관한 요약이라고 할 수도 있다.
이에 따라 분기 이력정보는 적은 비트수로 과거의 분기 결과를 반영시키는 것이 가능하게 되는 동시에 직전의 예외적인 분기 결과의 영향에 의한 분기 예측의 혼란(적중률의 저하)이 방지되고, 보다 과거의 분기 결과를 고려한 대국적인 분기 예측이 행하여진다.
예컨대, 상기 분기 이력정보는 상기 분기 명령에 대하여 과거에 분기가 성립된 빈도가「매우 많음」, 「많음」, 「적음」, 「매우 적음」중 어느 하나를 나타내고, 상기 분기 이력정보 생성수단은 상기 분기 명령에 포함되어 있는 분기 이력정보가「매우 적음」, 「적음」, 「많음」중 어느 하나를 나타내며, 또한, 상기 분기 결과가「성립」인 경우에는, 각각「적음」, 「많음」, 「매우 많음」을 나타내는 새로운 분기 이력정보를 생성하고, 상기 분기 명령에 포함되어 있는 분기 이력정보가「매우 많음」, 「많음」, 「적음」중 어느 하나를 나타내며, 또한, 상기 분기 결과가「불성립」인 경우에는, 각각「많음」, 「적음」, 「매우 적음」을 나타내는 새로운 분기 이력정보를 생성한다고 할 수도 있다.
이에 따라, 예컨대, 2비트만의 분기 이력정보에 의해 3회 이상의 분기 결과에 관한 통계적 요약을 나타낼 수도 있다.
또한, 상기 예측정보 갱신수단은 상기 분기 이력정보가「많음」을 나타내고 , 또한, 상기 분기 결과가「성립」인 경우에만 「성립」을 나타내는 새로운 분기 예측정보를 생성하며, 상기 분기 이력정보가「적음」을 나타내고, 또한, 상기 분기 결과가「불성립」인 경우에만「불성립」을 나타내는 새로운 분기 예측정보를 생성한다고 할 수도 있다.
이에 따라, 분기 결과의 이력과 분기 예측정보의 관계에서 히스테리시스를 갖는 분기 예측이 행하여지기 때문에 1비트의 분기 예측정보에만 근거하는 분기 예측의 경우에 비해 예측 적중률이 높아질 뿐만 아니라 분기의 성립과 불성립을 짧은 주기로 반복하는 것에 따른 분기 예측의 혼란이 방지된다.
또, 상기 분기 명령 갱신수단은 상기 분기 예측정보 생성수단에 의해서 생성된 분기 예측정보와 분기 이력정보 생성수단에 의해 생성된 분기 이력정보를 포함하는 새로운 분기 명령을 생성하여 그 분기 명령을 상기 기억수단의 해당 장소에 덧쓰기하는 것이며, 상기 해당 장소란 상기 새로운 분기 명령이 생성되는 기원이 되는 분기 명령이 기억되어 있던 위치라고 할 수도 있다.
이에 따라 분기 명령의 분기 예측정보나 분기 이력정보는 그 분기 명령마다(그들 분기 예측정보 및 분기 이력정보를 제외하는 분기 명령의 다른 비트와 같이) 갱신되기 때문에, 대상이 되는 분기 명령을 기억수단으로부터 판독하여 변경한 후에 다시 쓰는 순서에 비해 짧은 순서로 분기 예측정보 및 분기 이력정보가 갱신된다.
또한, 상기 기억수단은 상기 명령군을 저장하는 주기억부와, 상기 주기억부에 저장된 명령군의 일부에 대한 복사를 기억하는 캐시 기억부와, 상기 캐시 기억부의 내용이 재기록된 경우에, 그 변경을 상기 주기억부의 내용에도 반영시키는 캐시 제어수단을 포함하여, 상기 명령 페치수단은 상기 캐시 기억부에서 상기 명령을 판독하고, 상기 분기 명령 갱신수단은 상기 캐시 기억부에 기억된 분기 명령의 분기 예측정보 및 분기 이력정보를 갱신할 수도 있다.
이에 따라 본 발명에 관한 정보 처리 장치는 고속으로 액세스 할 수 있는 캐시 메모리 상의 분기 명령을 갱신하는 것 만으로 되므로 실행속도가 빨라진다.
또한, 상기 예측정보 갱신수단은 상기 분기 이력정보가「매우 많음」을 나타내고, 또 상기 분기 결과가「성립」인 경우에만 「성립」을 나타내는 새로운 분기 예측정보를 생성하고, 상기 분기 이력정보가「매우 적음」을 나타내고, 또한, 상기 분기 결과가「불성립」인 경우에만「불성립」을 나타내는 새로운 분기 예측정보를 생성한다고 할 수도 있다.
이에 따라 상기 히스테리시스의 정도가 보다 강하게 되기 때문에 분기 예측의 혼란을 강하게 억제하고 싶은 시스템의 프로그램에 적합한 정보 처리 장치가 실현된다.
또한, 상기 분기 이력정보는 상기 분기 명령에 관해서 과거에 분기가 성립된 빈도가 「많음」또는「적음」을 나타내거나,
상기 분기 이력정보 생성수단은 상기 분기 명령에 포함되어 있는 분기 이력정보가「적음」을 나타내고, 또 상기 분기 결과가「성립」인 경우에만 「많음」을 나타내는 새로운 분기 이력정보를 생성하고, 상기 분기 명령에 포함되어 있는 분기 이력정보가「많음」을 나타내고, 또한, 상기 분기 결과가「불성립」인 경우에만「적음」을 나타내는 새로운 분기 이력정보를 생성한다고 하거나,
상기 예측정보 갱신수단은 상기 분기 이력정보가「많음」을 나타내고, 또한, 상기 분기 결과가「성립」인 경우에만 「성립」을 나타내는 새로운 분기 예측정보를 생성하고 상기 분기 이력정보가「적음」을 나타내고, 또한, 상기 분기 결과가「불성립」인 경우에만「불성립」을 나타내는 새로운 분기 예측정보를 생성한다고 할 수도 있다.
이에 따라, 상기 히스테리시스의 정도가 보다 약해지기 때문에 프로그램의 실행 결과에 민감한 분기 예측, 즉, 동적인 분기 예측이 가능하게 되는 동시에, 분기 이력정보는 적은 비트수로 되기 때문에, 명령세트를 정의하는 경우의 자유도가 증가한다.
또한, 상기 분기 이력정보는 그 분기 이력정보를 갖는 분기 명령에 관한 과거의 분기마다의 분기 결과를 나타낸다고 할 수도 있다.
예컨대, 상기 분기 이력정보는 직전 및 2회 전의 분기 결과를 나타내는 2비트이며, 상기 분기 이력정보 생성수단은 상기 분기 명령이 실행되었을 때의 분기 결과를 이용하여 새로운 분기 이력정보를 생성한다고 할 수도 있다.
이에 따라, 과거의 복수의 분기 결과의 요약이 아니라, 최신의 연속하는 개개의 분기 결과에 근거하는 분기 예측이 행하여지기 때문에 예외적인 분기 결과를 고려한 치밀한 분기 예측을 하는 정보 처리 장치가 실현된다.
또, 본 발명은 하드웨어에 의해서 실현되는 것 뿐만아니라, 소프트웨어에 의해서도 실현된다.
즉, 분기 예측하여 명령을 먼저 판독하는 마이크로프로세서의 동작을 시뮬레이션하는 프로그램이 기록된 기록 매체로서, 상기 프로그램은 분기의 성립 여부를 예측하는 분기 예측정보와 과거의 분기 결과에 대한 정보를 나타내는 분기 이력정보를 갖는 분기 명령을 포함하는 명령군을 미리 기억하는 기억수단으로부터, 다음에 실행해야 할 명령을 판독하는 명령 페치 단계와, 판독된 명령이 상기 분기 명령인지의 여부를 해독하는 명령 해독 단계와, 상기 명령이 분기 명령이라고 해독된 경우에 그 분기 명령의 분기 예측정보에 따라 다음에 실행해야 할 명령을 판독하는 분기 예측 단계와, 해독된 상기 분기 명령을 실행하는 실행 단계와, 상기 분기 명령이 실행되었을 때의 분기 결과와 그 분기 명령에 포함되어 있는 분기 이력정보에 따라 새로운 분기 예측정보를 생성하는 분기 예측정보 생성단계와, 상기 분기 명령이 실행되었을 때의 분기 결과와 그 분기 명령에 포함되어 있는 분기 이력정보에 따라 새로운 분기 이력정보를 생성하는 분기 이력정보 생성단계와, 상기 기억수단에 저장된 상기 분기 명령의 분기 예측정보와 분기 이력정보를 상기 분기 예측정보 생성단계에 의해 생성된 분기 예측정보와 상기 분기 이력정보 생성단계에 의해서 생성된 분기 이력정보와 갱신할 분기 명령 갱신단계를 컴퓨터에 실행시키는 것을 특징으로 하는 기록 매체로 할 수도 있다.
또, 컴퓨터에 의해 실행되는 명령군이 기록된 기록 매체로서, 상기 명령군에는, 분기의 성립 여부를 예측하는 분기 예측정보와 과거의 분기 결과에 관한 정보를 나타내는 분기 이력정보를 갖는 분기 명령이 포함되고, 상기 분기 예측정보는 그 분기 예측정보를 갖는 분기 명령이 상기 컴퓨터에 의해 최후에 실행되었을 때의 분기 결과와 분기 이력정보에 따라 생성된 값이며, 상기 분기 이력정보는 그 분기 이력정보를 갖는 분기 명령이 상기 컴퓨터에 의해서 최후로 실행되었을 때의 분기 결과와 분기 이력정보에 따라 생성된 값이며, 그 분기 명령에 관한 과거의 복수의 분기 결과에 관한 요약인 것을 특징으로 하는 기록 매체로 하거나,
컴퓨터에 의해 실행되는 명령군이 기록된 기록 매체로서, 상기 명령군에는 분기의 성립 여부를 예측하는 분기 예측정보와 과거의 분기 결과에 관한 정보를 나타내는 분기 이력정보를 갖는 분기 명령이 포함되고, 상기 분기 예측정보는 그 분기 예측정보를 갖는 분기 명령이 상기 컴퓨터에 의해 최후로 실행되었을 때의 분기 결과와 분기 이력정보에 따라 생성된 값이며, 분기 이력정보는 그 분기 이력정보를 갖는 분기 명령이 상기 컴퓨터에 의해 최후에 실행되었을 때의 분기 결과와 분기 이력정보에 따라 생성된 값이며, 그 분기 명령에 관한 과거의 분기마다의 분기 결과를 나타내는 것을 특징으로 하는 기록 매체로 할 수도 있다.
이에 따라 상기 제 2 목적이 달성된다.
이상과 같이 본 발명에 의해, 소규모 하드웨어 또는 소프트웨어로 실현되고, 또, 높은 적중률의 분기 예측을 하는 고기능인 마이크로프로세서나 가상 머신 등이 실현되고, 그 실용적 효과는 크다.
상술한 목적 및 기타의 목적과 본 발명의 특징 및 이점은 첨부 도면과 관련한 다음의 상세한 설명을 통해 보다 분명해 질 것이다.
이하, 본 발명에 의한 정보 처리 장치의 실시예에 대하여 도면을 참조하여 설명하기로 한다.
(정보 처리 장치의 구성)
도 2는 본 발명에 따른 정보 처리 장치(100)의 구성을 도시한 블록도이다.
본 장치(100)는 미리 준비된 32비트 고정길이의 명령을 차례대로 페치·해독·실행하는 프로세서 시스템이며, 메인 메모리(9), 캐시 유니트(11), 명령 페치기(12), 명령 레지스터(13), 명령 해독기(14), 명령 실행기(15), 어드레스 제어기(8), 프로그램 카운터군(10), 어드레스 생성기(19), 분기 이력정보 생성기(16), 분기 예측정보 생성기(17) 및 분기 명령 갱신기(18)로 구성된다.
이들 각 구성요소(8∼19)는 도시되어 있지 않은 클록 신호에 동기하여 동작한다.
또한, 구성요소(12∼18)는 4단의 파이프라인을 구성하고 있다. 즉, 명령 페치기(12)는 파이프라인의 페치(IF) 스테이지를 구성하고, 명령 레지스터(13)와 명령 해독기(14)는 파이프라인의 해독(DEC) 스테이지를 구성하고, 명령 실행기(15), 분기 이력정보 생성기(16), 분기 예측정보 생성기(17) 및 분기 명령 갱신기(18)는 파이프라인의 실행(EX) 스테이지를 구성하고, 또 명령 실행기(15) 및 분기 명령 갱신기(18)는 파이프라인의 메모리 액세스(MEM) 스테이지를 구성하며, 각 스테이지에서의 처리는 1클록 사이클 내에서 독립적으로 또한 병렬로 행하여진다.
메인 메모리(9)는 DRAM 등이며, 본 장치(100)의 실행 대상이 되는 명령열(프로그램)을 저장하고 있다. 이 프로그램에는 본 장치(100)에 특유의 분기 명령이 포함되어 있다.
도 3은 그 분기 명령의 포맷을 도시한 도면이다.
분기 명령(20)은 13비트의 오퍼레이션 코드(20a), 1비트의 분기 예측정보(20b), 2비트의 분기 이력정보(20c) 및 16비트의 분기장소 어드레스(20d)로 이루어진다.
오퍼레이션 코드(20a)는 이 명령을 식별하기 위한 오퍼레이션 코드나 분기 조건 등을 나타낸다.
분기 예측정보(20b)는 다음에 이 분기 명령이 실행된 경우의 분기 성립 여부를 예측하는 것이다. 구체적으로는, 이 분기 예측정보(20b)와 예측 내용의 관계는 다음과 같다.
분기 예측정보(20b)가「0」인 경우는 분기가 불성립,
분기 예측정보(20b)가「1」인 경우는 분기가 성립인 것으로 예측한다.
분기 이력정보(20c)는 이 분기 명령의 과거의 복수의 분기 결과를 요약한 정보(통계적으로 정리한 정보)에 상당한다. 구체적으로는 이 분기 이력정보(20c)와 과거에 분기가 성립된 빈도(불성립의 경우와 비교한 빈도)의 관계는 다음과 같다.
분기 이력정보(20c)가 「00」인 경우는「매우 적음」,
분기 이력정보(20c)가 「01」 인 경우는「적음」,
분기 이력정보(20c)가 「10」인 경우는「많음」,
분기 이력정보(20c)가 「11」인 경우는「매우 많음」을 나타낸다.
분기장소 어드레스(20d)는 분기가 성립된 경우에 분기해야 할 어드레스, 즉 다음에 실행해야 할 명령이 위치되어 있는 메인 메모리(9) 상의 어드레스를 나타낸다. 또, 분기가 성립되지 않은 경우에는, 다음에 실행해야 할 명령은 이 분기 명령의 직후에 위치된 명령이다.
캐시 유니트(11)는 명령 페치기(12)에 의한 메인 메모리(9)로의 액세스를 고속화하는 것이고, 캐시 메모리(11a), 태그 메모리(1lb) 및 캐시 컨트롤러(11c)로 구성된다.
캐시 메모리(11a)는 SRAM 등이고, 메인 메모리(9)에 위치된 프로그램의 일부를 캐시 블록이라 불리는 단위로 저장하는 고속 메모리이다. 태그 메모리(11b)는 그 캐시 블록의 어드레스 등으로 이루어지는 태그 디렉토리를 기억한다.
캐시 컨트롤러(1lc)는 명령 페치기(12)로부터 출력할 수 있는 어드레스와 태그 메모리(1lb)의 내용을 비교함으로써 캐시 히트의 유무를 검출하고, 히트한 경우에는 명령 페치기(12)에 의한 캐시 메모리(1la)로의 액세스를 유효화 한다. 한편, 미스 히트의 경우에는 LRU(Least Recently Used) 알고리즘에 의해 캐시 블록을 치환한다. 또한, 캐시 블록이 치환된 경우에는 라이트 백 방식에 의해 그 캐시 블록을 메인 메모리(9)에 기입함으로써 캐시 메모리(1la)와 메인 메모리(9)의 내용의 일관성을 유지하고 있다.
명령 페치기(12)는 다음에 해독하고 실행해야 할 명령을 선취하는 것이며, 페치용 명령 카운터(1Oa)에서 보내 온 페치 어드레스를 캐시 유니트(11)에 출력하고, 그 어드레스에 대응하는 명령을 캐시 메모리(1la)(또는 메인 메모리(9))로부터 판독하여 내부의 명령 버퍼(12a)에 일시적으로 보유한다. 명령 버퍼(12a)는 선취한 1개의 명령을 보유하는 레지스터이다.
명령 레지스터(13)는 해독의 대상이 되는 1개의 명령을 보유하는 레지스터이고, 명령 버퍼(12a)에 선취된 명령을 다음 클록 사이클로 판독하고 해독기간 중 그 명령을 보유한다. 도 2에서는 명령 레지스터(13)에 분기 명령이 보유된 경우의 저장 내용이 도시되어 있다.
명령 해독기(14)는 마이크로프로그램을 저장한 ROM 등으로부터 명령 레지스터(13)에 보유된 명령의 오퍼레이션 코드(13a)를 해독하고, 그 결과를 제어신호(141)로서 명령 실행기(15)에 출력한다. 또한, 해독 대상이 분기 명령인 경우에는 그 분기 명령의 분기 예측정보(13b)를 신호선(142)을 통해 명령 실행기(15)와 어드레스 제어기(8)에 통지한다.
어드레스 제어기(8)는 명령 해독기(14)나 명령 실행기(15)로부터의 통지에 따라 어드레스 생성기(19) 및 프로그램 카운터군(10)을 제어함으로써, 프로그램 카운터군(10)을 구성하는 3가지의 카운터(페치용 명령 카운터(10a), 해독용 명령 카운터(10b), 실행용 명령 카운터(10c))의 값을 갱신한다.
그 결과, 페치용 명령 카운터(10a)에는 명령 버퍼(12a)에 저장되어 있는 명령이 위치되어 있던 메인 메모리(9) 상의 어드레스(페치 어드레스), 해독용 명령 카운터(10b)에는 명령 레지스터(13)에 보유되어 있는 명령이 위치되어 있던 메인 메모리(9)상의 어드레스(해독 어드레스), 실행용 명령 카운터(10c)에는 명령 실행기(15)에서 실행되어 있는 명령이 위치된 메인 메모리(9) 상의 어드레스(실행어드레스)가 보유된다.
어드레스 생성기(19)는 ALU나 셀렉터 등으로 이루어지고, 어드레스 제어기(8)에 의한 제어 하에서, 프로그램 카운터군(1O)의 각 카운터(1Oa∼1Oc)에 대하여 증가하거나, 분기장소 어드레스(13d)를 페치용 명령 카운터(10a)에 기입하거나 무효화한다.
명령 실행기(15)는 명령 해독기(14)로부터의 제어 신호(141)에 따라 내부에 갖는 범용 레지스터나 연산기 등을 포함하는 각 구성요소를 제어함으로써 각 명령에 대응한 연산이나 데이터 전송 등을 실행한다.
또한, 명령 실행기(15)는 실행한 명령이 분기 명령이던 경우에는, 그 실행 결과(분기의 성립 여부)를 신호선(151)을 통해 분기 이력정보 생성기(16) 및 분기 예측정보 생성기(17)에 통지하는 동시에, 분기 예측이 벗어난 경우의 패널티 처리(명령 레지스터(13)에 전송된 명령의 무효화 및 실행 결과에 근거하는 원래의 분기장소 명령의 페치)를 위해 그 실행 결과와 분기 예측정보(13b)를 비교하여 그 결과(예측의 적중 / 벗어남)를 신호선(152)을 통해 명령 해독기(14) 및 어드레스제어기(8)로 통지한다.
분기 이력정보 생성기(16)는 분기 명령이 명령 실행기(15)에 의해 실행된 경우에 그 분기 명령에 포함되어 있는 분기 이력정보(13c)와 그 실행 결과(분기의 성립 여부)에 따라 그 분기 이력정보를 변경할 것인지의 여부를 판단하고, 변경해야 할 경우에는 새로운 분기 이력정보를 생성하고, 그 판단 결과(「그대로 보유할」것인지 「갱신하였」는지)와 새로운 분기 예측정보를 분기 명령 갱신기(18)에 출력한다.
분기 예측정보 생성기(17)는 분기 명령이 명령 실행기(15)에 의해 실행된 경우에, 그 분기 명령에 포함되어 있는 분기 이력정보(13c)와 그 실행 결과(분기의 성립 여부)에 따라서, 그 분기 예측정보를 변경할 것인지의 여부를 판단하고, 변경해야 할 경우에는 새로운 분기 예측정보를 생성하고, 그 판단 결과(「그대로 보유할」것인지 「갱신하였」는지)와 새로운 분기 예측정보를 분기 명령 갱신기(18)로 출력한다.
도 4는 분기 이력정보 생성기(16) 및 분기 예측정보 생성기(17)의 출력 관계를 도시한 진리값표이다. 즉, 입력측의 란은 분기 이력정보 생성기(16) 및 분기 예측정보 생성기(17) 각각에 입력되는 분기 이력정보(HlH0) 및 실행결과(X)의 모든 조합을 나타내며 출력값의 분기 이력정보(NlN0)란은, 좌측란의 각 입력값의 조합에 대하여 분기 이력정보 생성기(16)가 출력하는 새로운 분기 이력정보를 나타내고 출력값의 분기 예측정보(F) 란은, 좌측란의 각 입력값의 조합에 대하여 분기 예측정보 생성기(17)가 출력하는 새로운 분기 예측정보를 나타낸다. 또, 도면중의 기호 「-」는 그 값이 의미를 가지지 않는 것 즉, 분기 이력정보 생성기(16)(또는 분기 예측정보 생성기(17))가 분기 이력정보(또는 분기 예측정보)를「그대로 보유한다」는 뜻을 다른 신호선을 이용하여 분기 명령 갱신기(18)에 통지하는 것을 나타낸다.
도 5는 분기 이력정보 생성기(16)의 상세한 회로를 도시한다.
분기 이력정보 생성기(16)는 3비트의 입력신호(분기 이력정보(HlH0) 및 실행결과(X))에 대하여, 3비트의 신호(분기 이력정보(NlN0) 및「그대로 유지한다」는 의미를 나타내는 정보(M1)를 분기 명령 갱신기(18)로 출력하는 조합 논리회로로서 실현되어 있다.
도 6은 분기 예측정보 생성기(17)의 상세한 회로를 도시한다.
분기 예측정보 생성기(17)는 3비트의 입력신호(분기 이력정보(HlH0) 및 실행결과(X))에 대하여, 2비트의 신호(분기 예측정보(F) 및 그 정보를「그대로 유지한다」는 뜻을 나타내는 정보(M0))를 분기 명령 갱신기(18)로 출력하는 조합 논리회로로서 실현되어 있다. 또, 상기 정보(M1 및 M0)는 상기 각 정보를 「그대로 유지한다」는 경우에 논리값「1」로 된다.
도 7은 분기 이력정보(20c)의 값을 상태로 하는 분기 명령(20)의 상태 천이도이며, 동시에 도 4에 도시된 분기 이력정보 및 분기 예측정보의 갱신 알고리즘을 도시한 도면이다.
도면중의 4개의 타원은 2비트의 분기 이력정보가 취할 수 있는 값(상태)에 상당하고, 실선의 천이 화살표선은 실행 결과가 분기 성립「1」의 경우, 점선의 천이 화살표선은 실행 결과가 분기 불성립인「0」인 경우의 천이 방향을 나타낸다. 또한, 분기 예측정보가 명시적으로 출력(변경)되는 경우가, 천이 화살표선(30a, 30b)의 옆에 첨부 기재되어 있다.
예컨대, 실행전의 분기 이력정보가 「1O」(과거에 분기가 성립된 빈도가「많음」)이고, 그 분기 명령의 실행 결과가 성립「1」이던 경우에는 분기 이력정보 생성기(16)는 새로운 분기 이력정보「11」(과거에 분기가 성립된 빈도가「매우 많음」)을 분기 명령 갱신기(18)에 출력하는 동시에, 분기 예측정보 생성기(17)는 새로운 분기 예측정보「1」(성립)을 분기 명령 갱신기(18)에 출력한다.
분기 명령 갱신기(18)는 분기 이력정보 생성기(16)로부터의 신호(N1, N0, M1), 분기 예측정보 생성기(17)로부터의 신호(F, M0) 및 실행용 명령카운터(10c)의 값에 기초하여 그 실행용 명령 카운터(1Oc)의 값이 나타내는 캐시 메모리(11a) (또는 메인 메모리(9)) 상의 어드레스에 위치된 분기 명령의 상위 16비트(오퍼레이션 코드(20a), 분기 예측정보(20b) 및 분기 이력정보(20c)를 갱신한다. 단지 분기 이력정보 생성기(16)및 분기 예측정보 생성기(17)의 양쪽으로부터 각 정보를 「그대로 유지한다」는 뜻의 통지를 받은 경우 및 명령 실행기(15)에 의해서 실행된 명령이 분기 명령이 아니라는 뜻의 통지를 받은 경우에는, 분기 명령 갱신기(18)는 상기 메인 메모리(9)(또는 캐시 메모리(11a))에 대하여 어떤 조치도 일으키지 않는다.
도 8은 분기 명령 갱신기(18)의 상세한 구성을 도시하는 블록도이다.
분기 명령 갱신기(18)는 또 분기 명령 기억부(18a), 갱신 판단부(18b), 명령 생성부(18c) 및 어드레스 게이트부(18d)로 구성된다.
분기 명령 기억부(18a)는 명령 레지스터(13)에 새로운 명령이 저장될 때마다 그 명령의 상위 16비트(그 명령이 분기 명령의 경우라면 오퍼레이션 코드(13a), 분기 예측정보(13b) 및 분기 이력정보(13c)로 이루어지는 16비트)를 취득하여 기억하는 큐 버퍼이며, 해독 스테이지 및 실행 스테이지에 있는 2개의 명령의 각 상위16비트를 보유한다.
갱신 판단부(18b)는 분기 이력정보 생성기(16)로부터 분기 이력정보의 갱신 유무에 관한 신호(M1)를, 분기 예측정보 생성기(17)로부터 분기 예측정보의 갱신 유무에 관한 신호(M0)를 취득하고, 각각의 신호에 따라 명령생성부(18c)에서의 새로운 분기 명령의 생성을 제어하거나 어드레스 게이트부(18d)에 의한 어드레스의 출력 허가여부를 제어한다.
명령 생성부(18c)는 분기 명령 기억부(18a)에 기억된 2개의 16비트 명령 중 먼저 저장된 것(이것은, 직전에 실행된 분기 명령의 상위 16비트 부분에 상당함)에 대하여 분기 이력정보 생성기(16) 및 분기 예측정보 생성기(17)로부터 출력되는 새로운 분기 이력정보(NlN0) 및 분기 예측정보(F)를 덧쓰기함으로써 캐시 유니트(11)(또는 메인 메모리(9))상의 갱신할 분기 명령의 상위 16비트 부분을 생성한다. 단지 갱신 판단부(18b)에서 「그대로 유지한다」는 뜻의 신호(M1 및 M0)를 수신하는 경우에는, 그 신호에 대응하는 분기 이력정보 및(또는) 분기 예측정보는 갱신하지 않는다.
어드레스 게이트부(18d)는 갱신 판단부(18b)에 입력된 2개의 신호(M1, M0)의 적어도 하나가「갱신하였다」는 뜻을 나타내는 경우에 실행용 명령 카운터(10c)의 값을 캐시 유니트(11)로 출력한다.
이와 같이 분기 명령 갱신기(18)는 명령 실행기(15)에 의해 실행된 분기 명령의 분기 예측정보(20b) 및 분기 이력정보(20c)의 적어도 한쪽을 변경할 필요가 있는 경우에는, 캐시 메모리(11a)(또는 메인 메모리(9))에 위치된 당해 분기 명령의 상위 16비트 부분에 새로운 16비트를 덧쓰기함으로써 분기 명령(20) 자체를 갱신한다.
여기서, 상기 분기 이력정보 생성기(16)는 분기 예측정보 생성기(17) 및 분기 명령 갱신기(18)에 의한 분기 이력정보 및 분기 예측정보가 구체적인 변화에 대하여 도 7의 상태 천이도에 따라서, 이하에 예시한다.
지금, 분기 이력정보(20c)가 「00」이고 분기 예측정보(20b)가 「0」인 분기 명령(20)이 반복 실행된다고 하자. 그러면,
제 1회째의 실행 결과가 분기 성립이던 경우에는, 분기 이력정보(20c)는 「 01」로 갱신되고, 분기 예측정보(20b)는 변화하지 않는다.
제 2회째의 실행 결과가 분기 성립이던 경우에는, 분기 이력정보(20c)는 「10」으로 갱신되고, 분기 예측정보(20b)는 변화하지 않는다.
제 3회째의 실행 결과가 분기 성립이던 경우에는, 분기 이력정보(20c)는 「11」로 갱신되고, 분기 예측정보(20b)는「1」로 갱신된다.
제 4회째의 실행 결과가 분기 불성립이던 경우에는, 분기 이력정보(20c)는 「10」으로 갱신되고, 분기 예측정보(20b)는 변화하지 않는다.
제 5회째의 실행 결과가 분기 불성립이던 경우에는, 분기 이력정보(20c)는「01」로 갱신되고, 분기 예측정보(20b)는 변화하지 않는다.
제 6회째의 실행 결과가 분기 불성립이던 경우에는, 분기 이력정보(20c)는 「00」으로 갱신되고, 분기 예측정보(20b)는 「0」으로 갱신된다.
이상의 예시를 분기 예측정보(20b)의 값을 종축에 취하고, 분기 이력정보(20c)의 값을 횡축에 취한 좌표계에 플롯하면 도 9에 도시된 그래프가 된다.
이 그래프에서 알 수 있는 바와 같이 분기 성립이 연속한 경우에 분기 예측정보(20b)가 「0」에서「1」로 변화하는 경우의 분기 이력정보(20c)의 천이 장소와, 분기의 불성립이 연속한 경우에 분기 예측정보(20b)가 「1」에서 「0」으로 변화하는 경우의 분기 이력정보(20c)의 천이 장소와는 다르다. 즉, 분기 이력정보(20c)가 변화하는 방향에 의해 분기 예측정보(20b)가 반전하는 임계값이 다르다. 이것은, 분기 결과의 이력을 입력으로 하여 분기 예측정보(20b)를 결정하는 사상에 있어서 히스테리시스가 존재한다고 할 수 있다. 즉, 과거에 분기가 성립된 빈도와 불성립이었던 빈도에서 현저한 차가 없는 한, 그때까지의 분기 예측을 존중(유지)하는 것을 의미한다.
이 히스테리시스에 의해서, 예외적으로 발생하는 분기에 의해 분기 예측정보(20b)가 혼란을 일으킨다는 문제점이나 분기 성립과 불성립을 반복하는 경우의 분기 예측이 모두 어긋난다는 문제점 등을 피할 수 있고, 특히, 제어계의 프로그램에 있어서의 분기 예측 적중률이 높아진다.
(정보 처리 장치(100)의 동작)
다음으로, 이상과 같이 구성된 정보 처리 장치(100)의 동작에 대하여 구체적인 분기 명령이 실행되는 경우를 예로 들어 설명하기로 한다.
도 10은 정보 처리 장치(100)에서의 파이프라인 처리의 흐름을 도시한 도면이다.
지금, 메인 메모리(9)에 위치된 분기 명령의 분기 예측정보(20b) 및 분기 이력정보(20c)의 초기값이 각각「0」 및 「01」이라고 하자. 또, 이들 초기값은 소스 프로그램이 정적인 해석에 의해 컴파일러가 생성된 것이다. 그리고, 그 분기 명령을 포함하는 캐시 블록이 메인 메모리(9)로부터 판독되어 캐시 메모리(1la)에 위치되어 있다고 하자.
(1) IF 스테이지
그 분기 명령은 명령 페치기(12)에 의해, 클록 사이클 1의 후반(1b)에서 캐시 메모리(l1a)로부터 판독되고 명령 버퍼(12a)에 저장된다.
(2) DEC 스테이지
다음 클록 사이클 2의 전반(2a)에 있어서, 명령 버퍼(12a)에 먼저 판독되어 있던 분기 명령은 명령 레지스터(13)에 전송되고, 명령 해독기(14)에 의해 해독된다.
구체적으로는, 명령 해독기(14)는 명령 레지스터(13)에 보유된 오퍼레이션 코드(13a)를 해독함으로써 해독 대상이 분기 명령이라고 판단하고, 분기 조건의 판단을 행하게 하게 하기 위한 제어신호를 명령 실행기(15)에 출력하는 동시에, 명령 레지스터(13)에 보유된 분기 예측정보(13b)를 어드레스 제어기(8)에 통지한다.
어드레스 제어기(8)는 통지된 분기 예측정보(13b)가「0」이므로 이 명령의 실행 결과는 분기 불성립으로 예측하고, 어드레스 생성기(19)를 제어함으로써 페치용 명령 카운터(1Oa)의 값을 증가시킨다. 그 값(페치 어드레스)은 명령 페치기(12)를 거쳐서 캐시 유니트(11)에 출력된다.
그 결과, 이 클록 사이클 2의 후반(2b)에서의 IF 스테이지에 있어서는, 이 분기 명령에 후속하는 명령이 명령 페치기(12)에 의해 판독되고 명령 버퍼(12a)에 저장된다. 이와 같이 분기 명령이 실행되기 전임에도 불구하고, 분기 명령이 갖는 분기 예측정보에 근거하는 다음 명령의 먼저읽기가 행하여진다.
(3) EX 스테이지
계속되는 클록 사이클 3의 전반(3a)에 있어서, 명령 실행기(15)는 명령 해독기(14)로부터의 제어신호에 따라서, 이 분기 명령의 조건 판단을 행하고, 그 실행 결과(분기의 성립 여부)를 분기 이력정보 생성기(16) 및 분기 예측정보 생성기(17)에 통지하는 동시에, 그 예측 결과(적중의 정당여부)를 명령해독기(14) 및 어드레스 제어기(8)에 통지한다.
그리고, 이 클록 사이클 3의 후반(3b)에 있어서, 분기 이력정보 생성기(16) 및 분기 예측정보 생성기(17)는 상기 통지를 받는 동시에 명령 레지스터(13)에 저장되어 있던 분기 이력정보(13c)를 획득하고, 도 7에 도시된 천이에 따라 각각 새로운 분기 이력정보 및 분기 예측정보를 생성(또는 그대로)하고, 그 결과를 분기 명령 갱신기(18)에 통지한다. 새로운 분기 이력정보 및(또는) 분기 예측정보의 통지를 받은 분기 명령 갱신기(18)는 그들 정보를 갖는 새로운 분기 명령의 상위 16비트를 생성한다.
또, 상기 예측이 적중하지 않은 경우에는, 이 클록 사이클 3의 후반(3a)에 있어서, 명령 실행기(15) 및 명령 페치기(12)에 의한 페널티 처리(명령 레지스터(13)에 전송된 명령의 무효화 및 실행 결과에 근거하는 원래의 분기장소 명령의 페치)가 행하여진다.
(4) MEM 스테이지
클록 사이클 4에 있어서, 분기 명령 갱신기(18)는 분기 이력정보 생성기(16) 및 분기 예측정보 생성기(17)로부터 분기 예측정보(20b) 및 분기 이력정보(20c)의 적어도 하나를「갱신하였다」는 뜻의 통지를 수신한 경우에는 직전의 클록 사이클(3b)에서 생성된 분기 명령(의 상위 16비트 부분)을 실행용 명령 카운터(1Oc)에 저장되어 있는 실행 어드레스가 나타나는 캐시 메모리(1la)(또는 메인 메모리(9))상의 분기 명령에 덧쓰기한다.
이렇게 하여 갱신된 캐시 메모리(11a) 상의 분기 명령을 포함하는 캐시 블록은 캐시 메모리(11a)로부터 소거되기 전에, 캐시 컨트롤러(11c)에 의해 대응하는 메인 메모리(9) 상의 위치에 기입된다. 이에 따라 다시 이 분기 명령이 메인 메모리(9)로부터 판독되어 실행되는 경우라도 이 분기 명령에 포함된 분기 예측정보(20b)와 분기 이력정보(20c)는 과거의 분기 결과에 근거하는 유효한 정보인 것이 보증된다.
이상과 같이 본 장치(100)에서는 분기 명령마다의 분기 이력정보와 분기 예측정보는 전용의 기억표가 아니라, 그 분기 명령 자체에 보유된다. 따라서, 복수의 분기 명령에 관한 분기 이력정보나 분기 예측정보를 정보 처리 장치(100)의 내부에 고정적으로 구비하는 경우에 비해 정보 처리 장치(100)에 필요한 하드웨어의 규모는 적어진다.
또한, 본 장치(100)에서는, 분기 명령은 1비트의 분기 예측정보뿐만 아니라, 복수회의 분기 결과에 관한 요약을 나타내는 2비트의 분기 이력정보를 갖고, 이 분기 이력정보와 직전의 분기 결과에 기초하여 히스테리시스를 갖는 분기 예측이 행하여진다. 따라서, 1비트의 분기 예측정보에만 근거하는 분기 예측의 경우에 비해, 단순히 예측 적중률이 높아지는 것 뿐만이 아니라, 예외적으로 발생하는 분기에 의한 악영향을 받기 어려운 확실한 분기 예측이 행하여진다.
또, 본 실시예에서는 메인 메모리(9)는 DRAM 등이고 캐시 메모리(11a)는 SRAM 등으로 이루어진다고 하였지만, 본 발명은 이들에 한정되는 것이 아니다.
예컨대, 메인 메모리(9)는 하드디스크 등의 비휘발성의 기억 장치라도 된다. 이에 따라 장치의 전원이 절단된 경우라도 그때까지의 실행결과에 근거하는 분기 예측정보(20b) 및 분기 이력정보(20c)는 하드디스크 등에 보존되어 있기 때문에 다음 재실행시에는 벌써 분기 이력정보를 축적하지 않고 유효한 분기 예측이 시작된다.
( 변형예 1 )
다음으로, 상기 실시예의 정보 처리 장치(100)의 변형예를 나타낸다.
상기 실시예에서는, 도 7에 도시된 바와 같이 분기 예측정보는 분기 이력정보가「많음」으로부터「매우 많음」로으 천이한 경우에만「성립」으로 설정되고, 분기 이력정보가「적음」으로부터「매우 적음」으로 천이한 경우에만「불성립」으로 설정되었다.
이것을 도 11의 상태 천이도에 있어서의 천이 화살표선(31a, 31b)에 첨부하여 기재되어 있는 바와 같이 분기 예측정보는 분기 이력정보가「매우 많음」에 체류하게 된 경우(즉, 분기 이력정보가「매우 많음」인 분기 명령의 실행 결과가「성립」이라고 된 경우)에만 「성립」으로 설정되고, 분기 이력정보가「매우 적음」에 체류하게 된 경우(즉, 분기 이력정보가「매우 적음」인 분기 명령의 실행 결과가「불성립」이라고 된 경우)에만 「불성립」으로 설정되고, 다른 천이의 경우에는 변화하지 않는다는 갱신 알고리즘으로 변형할 수 있다. 이것은, 분기 예측정보 생성기(17)를 구성하는 조합 논리회로에서의 결선을 변경하는 것으로 용이하게 실현할 수 있다.
이 변형예 1은 도 7과 도 11을 비교하여 알 수 있는 바와 같이, 상술한 히스테리시스의 정도를 상기 실시예의 경우보다 강하게 한 경우에 상당한다. 즉, 실제로 생기는 분기 결과의 성립 여부의 혼란에 대하여 분기 예측정보가 변화하기 어렵게 되어 있다.
이에 따라 분기 예측정보의 혼란을 강하게 억제하고 싶은 시스템이나, 분기 예측정보의 변화를 좋아하지 않은 시스템, 예컨대, 실행시의 동적인 사상보다도 정적인 정보에 의해서 결정되는 초기값을 될 수 있는 한 보유하고 싶은 시스템에 적합한 정보 처리 장치가 실현된다.
( 변형예 2 )
또한, 상기 실시예에서는 분기 이력정보는 2비트이지만, 이것을 1비트로 변형하는 것도 용이하다.
도 12는 분기 이력정보를 1비트로 한 경우의 분기 이력정보의 갱신 알고리즘을 도시하는 상태 천이도이다. 분기 이력정보는「많음」과 「적음」의 어느 한 가지 상태에 속하고, 각 상태는 이 분기 명령의 직전의 실행 결과가 각각「성립」, 「불성립」인 것을 나타낸다. 분기 예측정보는 천이 화살표선(32a)에 첨부하여 기재되어 있는 바와 같이 분기 이력정보가「많음」에 체류하게 된 경우(즉, 분기 이력정보가「많음」인 분기 명령의 실행 결과가 성립으로 된 경우)에만 「성립」으로 설정되고, 또한, 천이 화살표선(32b)에 첨부하여 기재되어 있는 바와 같이 분기 이력정보가 「적음」에 체류하게 된 경우(즉, 분기 이력정보가「적음」인 분기 명령의 실행 결과가 불성립으로 된 경우)에만「불성립」으로 설정되고, 다른 천이의 경우에는 변화하지 않는다. 따라서, 분기 예측정보는 분기 명령의 실행 결과가 성립과 불성립을 반복하고 있는 경우에는 변화하지 않지만, 동일 결과가 연속된 경우에는 그 결과에 대응하는 값으로 설정된다.
이러한 변형예 2는 실시예의 분기 이력정보 생성기(16) 및 분기 예측정보 생성기(17)에서의 논리회로를 삭감하고, 결선을 변경함으로써 용이하게 실현할 수 있음은 물론이다.
이 변형예 2는 도 7과 도 12를 비교하여 알 수 있는 바와 같이 상술한 히스테리시스의 정도를 약하게 한 경우에 상당한다. 즉, 상기 실시예의 경우에 비해 분기 예측정보의 변화는 분기 이력정보의 변화에 민감하여 진다. 이에 의해서, 상기 실시예의 정보 처리 장치(100)에 비하여 프로그램의 실행 결과에 민감한, 즉, 예외 처리가 다발하는 실시간성이 강한 시스템에 적합한 정보 처리 장치가 실현된다.
또한, 이 변형예 2에서는, 분기 이력정보는 1비트로 되므로 코드 크기가 축소화되거나 명령 세트를 정의(오퍼레이션 코드의 매핑)하는 경우의 자유도가 증가한다.
( 변형예 3 )
상기 실시예 및 2개의 변형예는 과거의 분기 결과에 관한 통계적 요약인 분기 이력정보를 갖는 분기 명령을 실행하는 정보 처리 장치였으나, 이것을 과거의 분기마다 대응하는 비트의 집합으로 이루어지는 분기 이력정보를 갖는 분기 명령을 실행하는 정보 처리 장치로 변형하는 것도 용이하다.
요컨대, 상기 실시예의 정보 처리 장치(100)에서의 분기 이력정보 생성기(16) 및 분기 예측정보 생성기(17)의 기능(입출력 변환 알고리즘)을 변경함으로써, 당해 분기 명령의 과거의 복수회의 실행 결과를 그대로 나타내는 비트의 집합을 분기 이력정보로서 보유하는 분기 명령을 실행하는 정보 처리 장치가 실현된다.
도 13은 변형예 3에 관한 정보 처리 장치의 분기 이력정보 생성기 및 분기 예측정보 생성기에 의한 갱신 알고리즘을 나타내는 진리값표이며, 상기 실시예에서의 도 4에 대응한다.
이 변형예 3에서는 상기 실시예와 달리 분기 명령이 갖는 2비트의 분기 이력정보(20c)는 하위 비트(H0)가 대응 분기 명령의 직전의 실행 결과를 나타내고(「1」은 「성립」, 「0」은「불성립」을 나타냄), 상위 비트(H1)가 대응 분기 명령의 2회 전의 실행 결과를 나타낸다.
이 변형예 3의 분기 이력정보 생성기는 2비트의 큐 버퍼이고, 명령 실행기(15)로부터 새로운 실행 결과(X)가 통지되면 그때까지 보유하고 있던 2비트(H1H0)를 상위 방향으로 시프트시키면서, 그 새로운 실행 결과(X)를 하위 비트(N0)로 입력함으로써 새로운 분기 이력정보(NlN0)를 생성한다.
또한, 변형예 3의 분기 예측정보 생성기는 원칙적으로 분기 명령이 실행되는 직전의 2비트의 분기 이력정보(HlH0)와 명령 실행기(15)로부터 통지되는 실행 결과(X)를 합친 합계 3비트의 값 중 많은 논리값(예컨대, HlH0=01이고 X=1의 경우에는「1」)을 새로운 분기 예측정보(F)로서 생성하고, 예외로서 그들 3비트(H1H0X)가 번갈아 반전하는 논리값을 취하는 경우에만 그 반전이 계속되는 논리값(HlH0X= 010의 경우에는「1」, HlH0X=101의 경우에는 「0」)을 새로운 분기 예측정보(F)로서 생성한다. 이것은, 원칙적으로 과거 3회의 실행 결과에서 많은 쪽의 결과(「성립」또는「불성립」)를 다음 분기 예측으로서 채용하지만, 과거 3회의 실행 결과가「성립」과「불성립」을 번갈아 반복하고 있는 경우에 한하여, 예외로서 그 반복이 계속되는 것으로 하여 분기 예측한다는 것을 의미한다.
도 14는 변형예 3에서의 분기 이력정보 및 분기 예측정보의 갱신 알고리즘을 나타내는 상태 천이도이다. 본 도면은, 상기 실시예에서의 도 7에 대응하지만, 천이 화살표선에 첨부 기재되어 있는 수치는 그 천이를 야기하는 원인(즉, 그 분기 명령의 실행 결과(X)의 값)과 그 천이에 따라 분기 예측정보 생성기로부터 출력되는 새로운 분기 예측정보의 값을 나타낸다.
예컨대, 지금 분기 이력정보(20c)가 「00」이고 분기 예측정보(20b)가 「0」인 분기 명령(20)이 반복 실행된다고 하자. 그러면,
제 1회째의 실행 결과가 분기 성립인(적중하지 않은) 경우에는, 분기 이력정보(20c)는 「01」로 갱신되고, 분기 예측정보(20b)는 「0」으로 설정된다(변화하지 않는다).
제 2회째의 실행 결과가 분기 불성립인(적중한) 경우에는, 분기 이력정보(20c)는 「10」으로 갱신되고, 분기 예측정보(20b)는「1」로 변경된다.
제 3회째의 실행 결과가 분기 성립인(적중한) 경우에는, 분기 이력정보(20c)는 「01」로 갱신되고, 분기 예측정보(20b)는 「0」으로 변경된다.
제 4회째의 실행 결과가 분기 불성립인(적중한) 경우에는, 분기 이력정보(20c)는 「10」으로 갱신되고, 분기 예측정보(20b)는「1」로 변경된다.
이와 같이 변형예 3에 의한 정보 처리 장치에 의하면, 원칙적으로는 과거의 분기 결과에 따라 분기 예측이 행하여지지만, 분기의 성립과 불성립이 번갈아 반복되는 경우에는 상기 실시예와 달리 그 토글 현상이 반복되는 것으로서 분기 예측이 행해지므로 그와 같은 특수한 프로그램의 흐름으로도 분기 예측이 적중한다.
이상, 본 발명에 따른 정보 처리 장치에 대하여 1개의 실시예와 3가지의 변형예를 나타냈으나 본 발명은 이들에 한정되는 것이 아니다.
분기 예측정보를 결정하기 위한 조건(분기 이력정보의 값과 분기 결과의 조합), 분기 이력정보를 갱신할 알고리즘, 분기 이력정보의 비트수 등에 대하여 취할 수 있는 값을 조합함으로써 다른 변형예도 용이하게 할 수 있음은 물론이다.
예컨대, 분기 이력정보로서, 더욱 깊은 분기 이력의 요약을 8단계로 나타내는 3비트를 할당할 수도 있다. 이에 따라 적중률이 더 높고 세밀한 분기 예측을 행할 수 있게 된다.
단, 1개의 분기 명령에 차지하는 분기 예측을 위한 비트수를 많게 한 경우에는, 명령 세트를 정의하는 경우의 자유도 등에 있어서 희생을 치를 필요가 있기 때문에 이들의 비트수는 예측 적중률과 구비해야 할 명령의 종류의 트레이드 오프로부터 결정해야 한다.
또한, 상기 실시예 및 변형예의 구성요소는 모두 논리회로로 실현되는 것을 전제로 설명하였지만, 본 발명은 하드웨어에 의해서만 실현되는 것은 아니고 소프트웨어에 의해서도 실현되는 것은 물론이다.
구체적으로는, 상기 실시예의 정보 처리 장치(100)의 구성요소 중, 명령이나 수치를 저장하는 기억수단(9, 11a, 11b, 12a, 13, 10a∼10c) 등을 변수나 데이터 영역에 할당하고, 남는 제어수단(8, 11c, 12, 14∼19) 등의 기능을 프로그래밍 언어를 이용하여 기술하면 된다. 이것에 따라 본 발명에 관한 정보 처리 장치는 범용의 컴퓨터 시스템으로 실행되는 시뮬레이션 프로그램이나 가상 머신으로서 실현된다. 그와 같은 본 발명에 따른 정보 처리 장치를 실현하기 위한 프로그램은 CD-ROM 등의 기록 매체에 저장하여 배포, 유통될 수 있다.
또, 상기 실시예나 변형예에서의 분기 명령은, 도 1에 도시된 종래의 명령 포맷과 달리, 예를 들면 도 3에 도시된 명령 포맷과 같이, 분기 이력정보라는 본 발명에 고유의 정보를 갖고 있다. 이러한 특징적인 구조를 갖는 분기 명령은 본 발명의 고유한 것이며, 또한, 그와 같은 분기 명령을 포함하는 명령군(프로그램)은 상기 프로그램과 같이, 플로피 디스크 등의 기록 매체나 통신 회선 등을 통해 배포, 유통될 수 있음은 물론이다.
상술한 바와 같이 본 발명의 정보 처리 장치에 의하면, 소규모의 하드웨어로 높은 적중률의 분기 예측을 실현할 수 있으며, 또한 정보 처리 장치를 소프트 웨어로 실현하기 위한 프로그램이나 상기 정보 처리 장치를 위한 특유의 분기 명령을 포함하는 명령군이 기록된 기록 매체를 제공할 수 있다.
상술한 본 발명의 바람직한 실시예들은 예시의 목적을 위해 개시된 것이며, 당업자라면 첨부된 특허청구의 범위에 개시된 본 발명의 사상과 범위를 통해 각종 수정, 변경, 대체 및 부가가 가능할 것이다.
Claims (23)
- 명령을 차례로 실행하는 정보 처리 장치에 있어서,분기의 성립 여부를 예측하는 분기 예측정보와 과거의 분기 결과에 대한 정보를 나타내는 분기 이력정보를 갖는 분기 명령을 포함하는 명령군을 미리 기억하는 기억수단과,상기 기억수단으로부터 다음에 실행해야 할 명령을 판독하는 명령 페치수단과,판독된 명령이 상기 분기 명령인지의 여부를 해독하는 명령 해독수단과,상기 명령이 분기 명령이라고 해독된 경우에, 그 분기 명령의 분기 예측정보에 따라 다음에 실행해야 할 명령을 판독하도록 상기 명령 페치수단을 제어하는 명령페치 제어수단과,해독된 상기 분기 명령을 실행하는 실행수단과,상기 분기 명령이 실행되었을 때의 분기 결과와 그 분기 명령에 포함되어 있는 분기 이력정보에 기초하여 새로운 분기 예측정보를 생성하는 분기 예측정보 생성수단과,상기 분기 명령이 실행되었을 때의 분기 결과와 그 분기 명령에 포함되어 있는 분기 이력정보에 기초하여 새로운 분기 이력정보를 생성하는 분기 이력정보 생성수단과,상기 기억수단에 저장된 상기 분기 명령의 분기 예측정보와 분기 이력정보를 상기 분기 예측정보 생성수단에 의해서 생성된 분기 예측정보와 상기 분기 이력정보 생성수단에 의해서 생성된 분기 이력정보로 갱신하는 분기 명령 갱신수단을 포함하는 것을 특징으로 하는 정보 처리 장치.
- 제 1 항에 있어서,상기 분기 이력정보는 그 분기 이력정보를 갖는 분기 명령에 대한 과거의 복수의 분기 결과에 관한 요약인 것을 특징으로 하는 정보 처리 장치.
- 제 2 항에 있어서,상기 분기 이력정보는 상기 분기 명령에 대하여 과거에 분기가 성립된 빈도가 「매우 많음」, 「많음」, 「적음」, 「매우 적음」중 어느 하나를 나타내는 것을 특징으로 하는 정보 처리 장치.
- 제 3 항에 있어서,상기 분기 이력정보 생성수단은,상기 분기 명령에 포함된 분기 이력정보가 「매우 적음」,「적음」,「많음」중 어느 하나를 나타내며, 또 상기 분기 결과가「성립」인 경우에는 각각「적음」, 「많음」, 「매우 많음」을 나타내는 새로운 분기 이력정보를 생성하고,상기 분기 명령에 포함된 분기 이력정보가「매우 많음」, 「많음」, 「적음」중 어느 하나를 나타내며, 또 상기 분기 결과가「불성립」인 경우에는 각각「많음」, 「적음」, 「매우 적음」을 나타내는 새로운 분기 이력정보를 생성하는 것을 특징으로 하는 정보 처리 장치.
- 제 4 항에 있어서,상기 예측정보 갱신수단은,상기 분기 이력정보가 「많음」을 나타내고, 또 상기 분기 결과가「성립」인 경우에만「성립」을 나타내는 새로운 분기 예측정보를 생성하고,상기 분기 이력정보가「적음」을 나타내고, 또 상기 분기 결과가「불성립」인 경우에만 「불성립」을 나타내는 새로운 분기 예측정보를 생성하는 것을 특징으로 하는 정보 처리 장치.
- 제 5 항에 있어서,상기 분기 명령 갱신수단은 상기 분기 예측정보 생성수단에 의해 생성된 분기 예측정보와 상기 분기 이력정보 생성수단에 의해 생성된 분기 이력정보를 포함하는 새로운 분기 명령을 생성하고, 그 분기 명령을 상기 기억수단의 해당 장소에 덧쓰기하고,상기 해당 장소는 상기 새로운 분기 명령이 생성되는 기원이 되는 분기 명령이 기억되어 있던 위치인 것을 특징으로 하는 정보 처리 장치.
- 제 6 항에 있어서,상기 기억수단은,상기 명령군을 저장하는 주기억부와,상기 주기억부에 저장된 명령군의 일부에 대한 복사를 기억하는 캐시 기억부와,상기 캐시 기억부의 내용이 재기록된 경우에, 그 변경을 상기 주기억부의 내용에도 반영시키는 캐시 제어수단을 포함하며,상기 명령 페치수단은 상기 캐시 기억부에서 상기 명령을 판독하고,상기 분기 명령 갱신수단은 상기 캐시 기억부에 기억된 분기 명령의 분기 예측정보 및 분기 이력정보를 갱신하는 것을 특징으로 하는 정보 처리 장치.
- 제 4 항에 있어서,상기 예측정보 갱신수단은,상기 분기 이력정보가「매우 많음」을 나타내고, 또한 상기 분기 결과가「성립」인 경우에만 「성립」을 나타내는 새로운 분기 예측정보를 생성하며,상기 분기 이력정보가「매우 적음」을 나타내고, 또한, 상기 분기 결과가「불성립」인 경우에만「불성립」을 나타내는 새로운 분기 예측정보를 생성하는 것을 특징으로 하는 정보 처리 장치.
- 제 8 항에 있어서,상기 분기 명령 갱신수단은 상기 분기 예측정보 생성수단에 의해 생성된 분기 예측정보와 상기 분기 이력정보 생성수단에 의해 생성된 분기 이력정보를 포함하는 새로운 분기 명령을 생성하고, 그 분기 명령을 상기 기억수단의 해당 장소에 덧쓰기하며,상기 해당 장소는 상기 새로운 분기 명령이 생성되는 기원이 되는 분기 명령이 기억된 위치인 것을 특징으로 하는 정보 처리 장치.
- 제 9 항에 있어서,상기 기억수단은,상기 명령군을 저장하는 주기억부와,상기 주기억부에 저장된 명령군의 일부에 대한 복사를 기억하는 캐시 기억부와,상기 캐시 기억부의 내용이 재기록된 경우에, 그 변경을 상기 주기억부의 내용에도 반영시키는 캐시 제어수단을 포함하며,상기 명령 페치수단은 상기 캐시 기억부에서 상기 명령을 판독하고,상기 분기 명령 갱신수단은 상기 캐시 기억부에 기억된 분기 명령의 분기 예측정보 및 분기 이력정보를 갱신하는 것을 특징으로 하는 정보 처리 장치.
- 제 2 항에 있어서,상기 분기 이력정보는 상기 분기 명령에 대하여 과거에 분기가 성립된 빈도가「많음」또는「적음」을 나타내는 것을 특징으로 하는 정보 처리 장치.
- 제 11 항에 있어서,상기 분기 이력정보 생성수단은,상기 분기 명령이 포함되어 있는 분기 이력정보가「적음」을 나타내고, 또 상기 분기 결과가「성립」인 경우에만 「많음」을 나타내는 새로운 분기 이력정보를 생성하며,상기 분기 명령에 포함되어 있는 분기 이력정보가「많음」을 나타내고, 또 상기 분기 결과가「불성립」인 경우에만 「적음」을 나타내는 새로운 분기 이력정보를 생성하는 것을 특징으로 하는 정보 처리 장치.
- 제 12 항에 있어서,상기 예측정보 갱신수단은,상기 분기 이력정보가「많음」을 나타내고, 또 상기 분기 결과가「성립」인 경우에만 「성립」을 나타내는 새로운 분기 예측정보를 생성하며,상기 분기 이력정보가「적음」을 나타내고, 또 상기 분기 결과가「불성립」인 경우에만「불성립」을 나타내는 새로운 분기 예측정보를 생성하는 것을 특징으로 하는 정보 처리 장치.
- 제 13 항에 있어서,상기 분기 명령 갱신수단은 상기 분기 예측정보 생성수단에 의해 생성된 분기 예측정보와 상기 분기 이력정보 생성수단에 의해 생성된 분기 이력정보를 포함하는 새로운 분기 명령을 생성하고, 그 분기 명령을 상기 기억수단의 해당 장소에 덧쓰기하고,상기 해당 장소는 상기 새로운 분기 명령이 생성되는 기원이 되는 분기 명령이 기억된 위치인 것을 특징으로 하는 정보 처리 장치.
- 제 14 항에 있어서,상기 기억수단은,상기 명령군을 저장하는 주기억부와,상기 주기억부에 저장된 명령군의 일부에 대한 복사를 기억하는 캐시 기억부와,상기 캐시 기억부의 내용이 재기록된 경우에, 그 변경을 상기 주기억부의 내용에도 반영시키는 캐시 제어수단을 포함하며,상기 명령 페치수단은 상기 캐시 기억부에서 상기 명령을 판독하고,상기 분기 명령 갱신수단은 상기 캐시 기억부에 기억된 분기 명령의 분기 예측정보 및 분기 이력정보를 갱신하는 것을 특징으로 하는 정보 처리 장치.
- 제 1 항에 있어서,상기 분기 이력정보는 그 분기 이력정보를 갖는 분기 명령에 대한 과거의 분기마다의 분기 결과를 나타내는 것을 특징으로 하는 정보 처리 장치.
- 제 16 항에 있어서,상기 분기 이력정보는 직전 및 2회 전의 분기 결과를 나타내는 2비트이며,상기 분기 이력정보 생성수단은 상기 분기 명령이 실행되었을 때의 분기 결과를 이용하여 새로운 분기 이력정보를 생성하는 것을 특징으로 하는 정보 처리 장치.
- 제 17 항에 있어서,상기 예측정보 갱신수단은 상기 분기 명령이 실행되었을 때의 분기 결과와, 그 분기 명령에 포함되어 있는 직전 및 2회 전의 분기 결과가, 각각 「성립」, 「불성립」, 「성립」인 경우에는「불성립」을 나타내는 새로운 분기 예측정보를 생성하고, 「불성립」, 「성립」, 「불성립」인 경우에는「성립」을 나타내는 새로운 분기 예측정보를 생성하는 것을 특징으로 하는 정보 처리 장치.
- 제 18 항에 있어서,상기 분기 명령 갱신수단은 상기 분기 예측정보 생성수단에 의해 생성된 분기 예측정보와 상기 분기 이력정보 생성수단에 의해 생성된 분기 이력정보를 포함하는 새로운 분기 명령을 생성하고, 그 분기 명령을 상기 기억수단의 해당 장소에 덧쓰기하고,상기 해당 장소는 상기 새로운 분기 명령이 생성되는 기원이 되는 분기 명령이 기억된 위치인 것을 특징으로 하는 정보 처리 장치.
- 제 19 항에 있어서,상기 기억수단은,상기 명령군을 저장하는 주기억부와,상기 주기억부에 저장된 명령군의 일부에 대한 복사를 기억하는 캐시 기억부와,상기 캐시 기억부의 내용이 재기록된 경우에, 그 변경을 상기 주기억부의 내용에도 반영시키는 캐시 제어수단을 포함하며,상기 명령 페치수단은 상기 캐시 기억부에서 상기 명령을 판독하고,상기 분기 명령 갱신수단은 상기 캐시 기억부에 기억된 분기 명령의 분기 예측정보 및 분기 이력정보를 갱신하는 것을 특징으로 하는 정보 처리 장치.
- 분기 예측하여 명령을 먼저 판독하는 마이크로프로세서의 동작을 시뮬레이션하는 프로그램이 기록된 기록 매체에 있어서,상기 프로그램은,분기의 성립 여부를 예측하는 분기 예측정보와 과거의 분기 결과에 대한 정보를 나타내는 분기 이력정보를 갖는 분기 명령을 포함하는 명령군을 미리 기억하는 기억수단으로부터 다음에 실행해야 할 명령을 판독하는 명령 페치단계와,판독된 명령이 상기 분기 명령인지의 여부를 해독하는 명령 해독단계와,상기 명령이 분기 명령이라고 해독된 경우에, 그 분기 명령의 분기 예측정보에 따라 다음에 실행해야 할 명령을 판독하는 분기 예측단계와,해독된 상기 분기 명령을 실행하는 실행단계와,상기 분기 명령이 실행되었을 때의 분기 결과와 그 분기 명령에 포함되어 있는 분기 이력정보에 기초하여 새로운 분기 예측정보를 생성하는 분기 예측정보 생성단계와,상기 분기 명령이 실행되었을 때의 분기 결과와 그 분기 명령에 포함되어 있는 분기 이력정보에 기초하여 새로운 분기 이력정보를 생성하는 분기 이력정보 생성단계와,상기 기억수단에 저장된 상기 분기 명령의 분기 예측정보와 분기 이력정보를 상기 분기 예측정보 생성단계에 의해 생성된 분기 예측정보와 상기 분기 이력정보 생성단계에 의해 생성된 분기 이력정보로 갱신하는 분기 명령 갱신단계를 포함하는 것을 특징으로 하는 기록 매체.
- 컴퓨터에 의해 실행되는 명령군이 기록된 기록 매체에 있어서,상기 명령군에는 분기의 성립 여부를 예측하는 분기 예측정보와 과거의 분기 결과에 대한 정보를 나타내는 분기 이력정보를 갖는 분기 명령이 포함되고,상기 분기 예측정보는 그 분기 예측정보를 갖는 분기 명령이 상기 컴퓨터에 의해 최후로 실행되었을 때의 분기 결과와 분기 이력정보에 기초하여 생성된 값이며,상기 분기 이력정보는 그 분기 이력정보를 갖는 분기 명령이 상기 컴퓨터에 의해서 최후로 실행되었을 때의 분기 결과와 분기 이력정보에 기초하여 생성된 값이며, 그 분기 명령에 대한 과거의 복수의 분기 결과에 관한 요약인 것을 특징으로 하는 기록 매체.
- 컴퓨터 의해서 실행되는 명령군이 기록된 기록 매체에 있어서,상기 명령군에는 분기의 성립 여부를 예측하는 분기 예측정보와 과거의 분기 결과에 대한 정보를 나타내는 분기 이력정보를 갖는 분기 명령이 포함되고,상기 분기 예측정보는 그 분기 예측정보를 갖는 분기 명령이 상기 컴퓨터에 의해서 최후로 실행되었을 때의 분기 결과와 분기 이력정보에 기초하여 생성된 값이며,상기 분기 이력정보는 그 분기 이력정보를 갖는 분기 명령이 상기 컴퓨터에 의해서 최후로 실행되었을 때의 분기 결과와 분기 이력정보에 기초하여 생성된 값이며, 그 분기 명령에 대한 과거의 분기마다의 분기 결과를 나타내는 것을 특징으로 하는 기록 매체.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP32845796 | 1996-12-09 | ||
JP?8-328457 | 1996-12-09 | ||
JP???8-328457 | 1996-12-09 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR19980063936A KR19980063936A (ko) | 1998-10-07 |
KR100440805B1 true KR100440805B1 (ko) | 2004-09-18 |
Family
ID=18210488
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019970067053A KR100440805B1 (ko) | 1996-12-09 | 1997-12-09 | 소규모의 하드웨어로 높은 적중률의 분기 예측을 하는 정보 처리 장치 |
Country Status (7)
Country | Link |
---|---|
US (1) | US5928358A (ko) |
EP (1) | EP0847004B1 (ko) |
JP (1) | JP3760041B2 (ko) |
KR (1) | KR100440805B1 (ko) |
CN (1) | CN1153133C (ko) |
DE (1) | DE69736164T2 (ko) |
TW (1) | TW380238B (ko) |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6170053B1 (en) * | 1996-06-27 | 2001-01-02 | Texas Instruments Incorporated | Microprocessor with circuits, systems and methods for responding to branch instructions based on history of prediction accuracy |
US6029228A (en) * | 1996-12-31 | 2000-02-22 | Texas Instruments Incorporated | Data prefetching of a load target buffer for post-branch instructions based on past prediction accuracy's of branch predictions |
TW373149B (en) * | 1997-07-02 | 1999-11-01 | Matsushita Electric Ind Co Ltd | Program control method |
US6151672A (en) * | 1998-02-23 | 2000-11-21 | Hewlett-Packard Company | Methods and apparatus for reducing interference in a branch history table of a microprocessor |
US6189091B1 (en) | 1998-12-02 | 2001-02-13 | Ip First, L.L.C. | Apparatus and method for speculatively updating global history and restoring same on branch misprediction detection |
US6341348B1 (en) * | 1998-12-03 | 2002-01-22 | Sun Microsystems, Inc. | Software branch prediction filtering for a microprocessor |
US6499101B1 (en) * | 1999-03-18 | 2002-12-24 | I.P. First L.L.C. | Static branch prediction mechanism for conditional branch instructions |
WO2001016702A1 (en) | 1999-09-01 | 2001-03-08 | Intel Corporation | Register set used in multithreaded parallel processor architecture |
DE19945940C2 (de) * | 1999-09-24 | 2002-01-17 | Infineon Technologies Ag | Verfahren und Vorrichtung zur Bearbeitung bedingter Sprungbefehle in einem Prozessor mit PIPELINE-Rechnerarchitektur |
US6546481B1 (en) | 1999-11-05 | 2003-04-08 | Ip - First Llc | Split history tables for branch prediction |
US7681018B2 (en) | 2000-08-31 | 2010-03-16 | Intel Corporation | Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set |
DE602004030575D1 (de) * | 2003-07-09 | 2011-01-27 | Nxp Bv | Verfahren und system zur zweigprädiktion |
JP4009248B2 (ja) | 2003-12-05 | 2007-11-14 | 富士通株式会社 | 分岐予測装置および分岐予測方法 |
DE602005027338D1 (de) * | 2004-04-21 | 2011-05-19 | Fujitsu Ltd | Abzweigungsvorhersageeinrichtung, verfahren dafür und prozessor |
US8443171B2 (en) | 2004-07-30 | 2013-05-14 | Hewlett-Packard Development Company, L.P. | Run-time updating of prediction hint instructions |
US20070186049A1 (en) * | 2006-02-03 | 2007-08-09 | International Business Machines Corporation | Self prefetching L2 cache mechanism for instruction lines |
US8904155B2 (en) * | 2006-03-17 | 2014-12-02 | Qualcomm Incorporated | Representing loop branches in a branch history register with multiple bits |
US7647486B2 (en) | 2006-05-02 | 2010-01-12 | Atmel Corporation | Method and system having instructions with different execution times in different modes, including a selected execution time different from default execution times in a first mode and a random execution time in a second mode |
JP2008165589A (ja) * | 2006-12-28 | 2008-07-17 | Fujitsu Ltd | 情報処理装置 |
JP5012084B2 (ja) * | 2007-02-22 | 2012-08-29 | 富士通セミコンダクター株式会社 | 情報処理装置 |
KR20120064446A (ko) | 2010-12-09 | 2012-06-19 | 삼성전자주식회사 | 컴퓨팅 시스템 상의 바이트코드의 분기 처리 장치 및 방법 |
JP5552042B2 (ja) * | 2010-12-27 | 2014-07-16 | インターナショナル・ビジネス・マシーンズ・コーポレーション | プログラム解析の方法、システムおよびプログラム |
US8959320B2 (en) * | 2011-12-07 | 2015-02-17 | Apple Inc. | Preventing update training of first predictor with mismatching second predictor for branch instructions with alternating pattern hysteresis |
CN104156196B (zh) * | 2014-06-12 | 2017-10-27 | 龚伟峰 | 重命名预处理方法 |
US10747539B1 (en) | 2016-11-14 | 2020-08-18 | Apple Inc. | Scan-on-fill next fetch target prediction |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4435756A (en) * | 1981-12-03 | 1984-03-06 | Burroughs Corporation | Branch predicting computer |
JPS6375934A (ja) * | 1986-09-19 | 1988-04-06 | Nec Corp | 情報処理装置 |
JPH0650465B2 (ja) * | 1989-10-16 | 1994-06-29 | 株式会社東芝 | 分岐制御回路 |
US5564118A (en) * | 1992-11-12 | 1996-10-08 | Digital Equipment Corporation | Past-history filtered branch prediction |
JP3599409B2 (ja) * | 1994-06-14 | 2004-12-08 | 株式会社ルネサステクノロジ | 分岐予測装置 |
US5864697A (en) * | 1996-06-28 | 1999-01-26 | Texas Instruments Incorporated | Microprocessor using combined actual and speculative branch history prediction |
US5822575A (en) * | 1996-09-12 | 1998-10-13 | Advanced Micro Devices, Inc. | Branch prediction storage for storing branch prediction information such that a corresponding tag may be routed with the branch instruction |
US5817699A (en) * | 1997-05-30 | 1998-10-06 | Flores; John A. | Process for the preparation of ketamine ointment |
-
1997
- 1997-12-08 CN CNB971085900A patent/CN1153133C/zh not_active Expired - Fee Related
- 1997-12-08 TW TW086118444A patent/TW380238B/zh not_active IP Right Cessation
- 1997-12-08 JP JP33708997A patent/JP3760041B2/ja not_active Expired - Lifetime
- 1997-12-09 US US08/987,260 patent/US5928358A/en not_active Expired - Lifetime
- 1997-12-09 EP EP97309925A patent/EP0847004B1/en not_active Expired - Lifetime
- 1997-12-09 KR KR1019970067053A patent/KR100440805B1/ko not_active IP Right Cessation
- 1997-12-09 DE DE69736164T patent/DE69736164T2/de not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP3760041B2 (ja) | 2006-03-29 |
JPH10228377A (ja) | 1998-08-25 |
CN1153133C (zh) | 2004-06-09 |
EP0847004B1 (en) | 2006-06-21 |
US5928358A (en) | 1999-07-27 |
TW380238B (en) | 2000-01-21 |
DE69736164T2 (de) | 2006-11-09 |
DE69736164D1 (de) | 2006-08-03 |
KR19980063936A (ko) | 1998-10-07 |
CN1186981A (zh) | 1998-07-08 |
EP0847004A1 (en) | 1998-06-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100440805B1 (ko) | 소규모의 하드웨어로 높은 적중률의 분기 예측을 하는 정보 처리 장치 | |
EP0084114B1 (en) | Instruction prefetching data processing apparatus including a conditional branch instruction predictor | |
US4725947A (en) | Data processor with a branch target instruction storage | |
US4086629A (en) | Hierarchical data store with look-ahead action | |
KR100395763B1 (ko) | 멀티프로세싱 마이크로프로세서에 적합한 분기 예측기 | |
US20150186293A1 (en) | High-performance cache system and method | |
US5423048A (en) | Branch target tagging | |
JPH08194615A (ja) | 情報処理装置 | |
JPH10232827A (ja) | 先取りキャッシュ書戻しの方法と装置 | |
JPH06510611A (ja) | コンピュータシステムにおいてデータ処理速度を向上させる方法 | |
US7743238B2 (en) | Accessing items of architectural state from a register cache in a data processing apparatus when performing branch prediction operations for an indirect branch instruction | |
JP2001236266A (ja) | 高レベルキャッシュの効率改善方法 | |
JPH09120372A (ja) | プリフェッチ命令を用いるハーバードアーキテクチャキャッシュメモリの調和したソフトウェア制御 | |
JPH07253927A (ja) | 物理的にアドレス指定されたデータ記憶構造からの迅速なデータリトリーブ方法及び装置 | |
JP3590427B2 (ja) | 先行読出機能付命令キャッシュメモリ | |
KR20200107997A (ko) | 다중 가드 태그 설정 명령어 | |
JP2001195304A (ja) | キャッシュ記憶装置 | |
US6678638B2 (en) | Processor having execution result prediction function for instruction | |
US8484446B2 (en) | Microprocessor saving data stored in register and register saving method | |
JP2943772B2 (ja) | 分岐予測方式 | |
US20080016292A1 (en) | Access controller and access control method | |
KR920001102B1 (ko) | 정보 처리 장치 | |
JP2000194602A (ja) | 情報処理装置、マイクロプロセッサ及び外部キャッシュメモリの制御方法 | |
JPH02236651A (ja) | メモリバッファ | |
JPH11328030A (ja) | 記憶システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20090623 Year of fee payment: 6 |
|
LAPS | Lapse due to unpaid annual fee |