IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社デンソーの特許一覧 ▶ トヨタ自動車株式会社の特許一覧 ▶ 株式会社ミライズテクノロジーズの特許一覧

<>
  • 特開-分岐予測器 図1
  • 特開-分岐予測器 図2
  • 特開-分岐予測器 図3
  • 特開-分岐予測器 図4
  • 特開-分岐予測器 図5
  • 特開-分岐予測器 図6
  • 特開-分岐予測器 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024030013
(43)【公開日】2024-03-07
(54)【発明の名称】分岐予測器
(51)【国際特許分類】
   G06F 9/38 20180101AFI20240229BHJP
【FI】
G06F9/38 330B
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2022132535
(22)【出願日】2022-08-23
(71)【出願人】
【識別番号】000004260
【氏名又は名称】株式会社デンソー
(71)【出願人】
【識別番号】000003207
【氏名又は名称】トヨタ自動車株式会社
(71)【出願人】
【識別番号】520124752
【氏名又は名称】株式会社ミライズテクノロジーズ
(74)【代理人】
【識別番号】110000028
【氏名又は名称】弁理士法人明成国際特許事務所
(72)【発明者】
【氏名】岩城 隆雄
【テーマコード(参考)】
5B013
【Fターム(参考)】
5B013BB02
(57)【要約】
【課題】パーセプトロン分岐予測器において、予測精度の低下を抑制しながら、積和演算の回数を少なくする。
【解決手段】パーセプトロン分岐予測器100は、過去における分岐命令の分岐結果を記憶する分岐結果記憶部1と、分岐結果のそれぞれに対応する重みを記憶する重み記憶部2と、分岐結果記憶部に記憶された分岐結果のうちの一部の複数の分岐結果である部分分岐結果と、部分分岐結果を構成する複数の分岐結果のそれぞれに対応する重みと、を積和演算することで、分岐命令の分岐方向を予測する分岐予測部3と、分岐結果を元に、重みを更新する重み更新部4と、を備える。
【選択図】図1
【特許請求の範囲】
【請求項1】
過去における分岐命令の分岐結果が時系列に記録された分岐履歴を用いて、分岐命令の分岐方向を予測するパーセプトロン分岐予測器(100)であって、
前記過去における分岐命令の分岐結果を記憶する分岐結果記憶部(1)と、
前記分岐結果のそれぞれに対応する重みを記憶する重み記憶部(2)と、
前記分岐結果記憶部に記憶された分岐結果のうちの一部の複数の分岐結果である部分分岐結果と、前記部分分岐結果を構成する複数の分岐結果のそれぞれに対応する前記重みと、を積和演算することで、前記分岐命令の前記分岐方向を予測する分岐予測部(3)と、
前記分岐結果を元に、前記重みを更新する重み更新部(4)と、
を備える、分岐予測器。
【請求項2】
請求項1に記載の分岐予測器であって、
前記分岐結果記憶部には、時系列に沿って新しい分岐結果から古い分岐結果への順に、分岐結果X,X,…,X(nは自然数である項番号)が記憶され、
前記分岐結果は、分岐が成立した場合に+1が、分岐が不成立の場合-1が、それぞれ設定され、
前記重み記憶部には、時系列に沿って新しい分岐結果に対応する重みから古い分岐結果に対応する重みへの順に、重みW,W,…,W(nは自然数である項番号)が記憶され、
前記部分分岐結果は、
【数3】
(kは0以上の自然数)であり、
前記部分分岐結果に対応する重みは、
【数4】
(kは0以上の自然数)であり、
前記分岐予測部は、
【数5】
前記式(4)を演算し、算出されたYが0以上のとき前記分岐命令は分岐成立すると予測し、算出されたYが0未満のとき前記分岐命令は分岐不成立であると予測し、
前記式(4)において、lは自然数であり、1≦2≦nであり、
前記重み更新部は、前記分岐予測部による前記分岐方向の予測後に、
n=Wn-1+tXn-1…(5)
前記式(5)を演算し、前記重みを更新し、
前記式(5)において、nは自然数であり、前記分岐が成立のときt=+1、前記分岐が不成立のときt=-1である、
分岐予測器。
【請求項3】
請求項1に記載の分岐予測器であって、
前記分岐結果記憶部に記憶される複数の前記分岐結果は、連続する複数の項番号の前記分岐結果からなる複数の分岐結果グループと、前記複数の分岐結果グループに含まれない連続する複数の項番号の前記分岐結果からなる1つ以上の除外グループであって、それぞれが2つの前記分岐結果グループに挟まれる1つ以上の除外グループと、に分けられ、
前記複数の分岐結果グループのそれぞれに含まれる前記分岐結果の項数は、前記分岐結果グループに含まれる最小項番号が大きくなるほど多くなり、
前記1つ以上の除外グループのそれぞれに含まれる前記分岐結果の数は、前記除外グループに含まれる最小項番号が大きくなるほど多くなり、
前記部分分岐結果は、前記複数の分岐結果グループに含まれる前記分岐結果である、
分岐予測器。
【請求項4】
請求項3に記載の分岐予測器であって、前記分岐結果グループのそれぞれに含まれる前記分岐結果の項数は、前記分岐結果グループに含まれる前記最小項番号の順序で並べると等比数列となる、分岐予測器。
【請求項5】
請求項3に記載の分岐予測器であって、前記除外グループのそれぞれに含まれる前記分岐結果の項数は、前記除外グループに含まれる前記最小項番号の順序で並べると、等比数列となる、分岐予測器。
【請求項6】
請求項3に記載の分岐予測器であって、
前記分岐結果グループのそれぞれに含まれる前記分岐結果の項数は、前記分岐結果グループに含まれる前記最小項番号の順序で並べると等比数列となり、かつ
前記除外グループのそれぞれに含まれる前記分岐結果の項数は、前記除外グループに含まれる前記最小項番号の順序で並べると、等比数列となる、分岐予測器。
【請求項7】
請求項1~6のいずれか1項に記載の分岐予測器であって、前記部分分岐結果に含まれる前記分岐結果のうちで最大の項番号は、前記分岐命令を含むアルゴリズムにおける最大の繰り返し分岐命令数より大きい数である、分岐予測器。
【請求項8】
請求項1~6のいずれか1項に記載の分岐予測器であって、前記部分分岐結果に含まれる前記分岐結果のうちで最大の項番号は、前記分岐命令を含むアルゴリズムにおける最大の繰り返し分岐命令数と一致した数である、分岐予測器。
【請求項9】
請求項1~6のいずれか1項に記載の分岐予測器であって、前記部分分岐結果に含まれる前記分岐結果のうちで最大の項番号は、前記分岐命令を含むアルゴリズムにおける繰り返し分岐命令数のうちで、最も頻度の高い繰り返し分岐命令数より大きい数である、分岐予測器。
【請求項10】
請求項1~6のいずれか1項に記載の分岐予測器であって、前記部分分岐結果に含まれる前記分岐結果のうちで最大の項番号は、前記分岐命令を含むアルゴリズムにおける繰り返し分岐命令数のうちで、最も頻度の高い繰り返し分岐命令数と一致した数である、分岐予測器。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、分岐予測器に関する。
【背景技術】
【0002】
パイプライン処理を実行可能なプロセッサには、分岐命令の分岐方向、即ち分岐が成立するか否かを予測する分岐予測器が搭載されている。例えば非特許文献1には、ニューラルネットワークを応用したパーセプトロン分岐予測器が開示されている。パーセプトロン分岐予測器は、過去における分岐命令の分岐結果と、分岐結果のそれぞれに対応する重みと、を積和演算し、積和演算の結果が負である場合は分岐が不成立であると予測し、積和演算の結果が非負である場合は分岐が成立すると予測する。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】Daniel A. Jimenez and Calvin Lin, “Dynamic Branch Prediction with Perceptrons”, Proceedings HPCA Seventh International Symposium on High-Performance Computer Architecture, 2001.
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかし、パーセプトロン分岐予測器において、予測精度を向上させるために記憶する分岐結果数を大きくし分岐履歴長を長くすると、分岐結果と重みとの積和演算の回数が増加する。積和演算の回数が増加すると、演算に要する時間が増加するだけでなく、プロセッサの消費電力も増加する。そこで、予測精度の低下を抑制しながら、積和演算の回数を減らすことができるパーセプトロン分岐予測器が求められている。
【課題を解決するための手段】
【0005】
本開示は、以下の形態として実現することが可能である。
【0006】
本開示の一形態によれば、過去における分岐命令の分岐結果が時系列に記録された分岐履歴を用いて、分岐命令の分岐方向を予測するパーセプトロン分岐予測器(100)が提供される。この分岐予測器は、前記過去における分岐命令の分岐結果を記憶する分岐結果記憶部(1)と、前記分岐結果のそれぞれに対応する重みを記憶する重み記憶部(2)と、前記分岐結果記憶部に記憶された分岐結果のうちの一部の複数の分岐結果である部分分岐結果と、前記部分分岐結果を構成する複数の分岐結果のそれぞれに対応する前記重みと、を積和演算することで、前記分岐命令の前記分岐方向を予測する分岐予測部(3)と、分岐結果を元に、前記重みを更新する重み更新部(4)と、を備える。
【0007】
この形態の分岐予測器によれば、分岐予測部が、分岐結果記憶部に記憶されている分岐結果の全てではなく、分岐結果の一部である部分分岐結果を用いて分岐予測を行うので、予測精度の低下を抑制しながら、分岐予測に要する積和演算の回数を減らすことができる。
【図面の簡単な説明】
【0008】
図1】本開示の一実施形態としての分岐予測器の構成を模式的に示すブロック図である。
図2】式(2)を展開した説明図である。
図3】分岐予測の処理の一例を示すフローチャートである。
図4】比較例および実施例の分岐予測器によるシミュレーションの結果を示すグラフである。
図5】第2実施形態にかかる分岐結果のグループ分けを説明する図である。
図6】第3実施形態にかかる分岐結果のグループ分けを説明する図である。
図7】第4実施形態にかかる分岐結果のグループ分けを説明する図である。
【発明を実施するための形態】
【0009】
A.第1実施形態:
A1.装置構成:
図1に示す分岐予測器100は、バイプライン処理を実行可能なプロセッサに搭載されて用いられる。プロセッサは、例えばCPU(Central Processing Unit)またはGPU(Graphics Processing Unit)である。プロセッサにおいて、一つの命令に対する実行処理は、複数のステージにより構成される。具体的には、実行処理は、命令を読み出すフェッチステージ、フェッチされた命令をデコードするデコードステージ、数値の演算等を実行する実行ステージ、演算結果をメモリに戻すライトバックステージ等で構成される。分岐予測器100は、フェッチステージにおいて、時系列順に並べられた過去の分岐命令の分岐結果と、分岐結果のそれぞれと対応する重みとを積和演算することで、分岐が成立するか否かを予測する。プロセッサは、分岐予測器100の分岐予測に従って、命令をフェッチする。
【0010】
分岐予測器100は、分岐結果記憶部1と、重み記憶部2と、分岐予測部3と、重み更新部4と、を備える。
【0011】
分岐結果記憶部1は、過去の分岐命令の分岐結果を時系列順に記憶する。記憶される分岐結果は、直近の分岐結果から順番に分岐結果X,X,…Xである。ここで、nは自然数である。本開示において、分岐結果のそれぞれを項と呼び、下付きの数字を「項番号」と呼ぶ。新しい分岐結果ほど小さい項番号で表され、古い分岐結果ほど大きい項番号で表される。即ち分岐結果Xは、分岐結果記憶部1に記憶されている分岐結果のうちで最新の分岐結果であり、分岐結果Xは、分岐結果記憶部1に記憶されている分岐結果のうちで最も古い分岐結果である。分岐結果X,X,…Xのそれぞれは、分岐が成立した場合+1であり、分岐が不成立であった場合-1である。本開示において、分岐結果記憶部1が記憶している分岐結果の項の総数のことを「分岐履歴長L」と呼ぶ。以下、分岐履歴長Lが16である例について説明するが、本開示はこれに制限されない。
【0012】
重み記憶部2は、後述する分岐予測の積和演算に用いられる重みを記憶する。記憶されている重みは、分岐結果記憶部1に記憶されている分岐結果X,X,…Xのそれぞれに対応しており、直近の分岐結果に対応する重みから順番に重みW,W,…Wである。なお、nは上述の通り自然数である。また、重み記憶部2は、バイアスとしてWを記憶している。バイアスは、後述する分岐予測部3における分岐予測の演算に用いられる。本開示において、バイアスWは、+1である。
【0013】
分岐予測部3は、分岐結果記憶部1に記憶された過去の分岐命令の分岐結果と、重み記憶部2に記憶された重みと、を用いて分岐命令の分岐方向の予測を行う。最初に、従来知られているパーセプトロン分岐予測器における分岐予測について説明する。従来のパーセプトロン分岐予測器は、記憶されている分岐結果全てについて重みとの積和演算を実行し、演算結果が負のときは分岐が不成立と予測し、演算結果が非負のときは分岐が成立と予測する。具体的には、従来のパーセプトロン分岐予測器は、下記式(1)の演算を実行し、Yが負のときは分岐不成立と予測し、Yが非負のときは分岐成立と予測する。
【0014】
【数1】
【0015】
他方で、本開示における分岐予測部3は、分岐結果記憶部1に記憶されている一部の分岐結果のみを用いて分岐予測を行う。本開示において、分岐結果記憶部1に記憶されている分岐結果のうちで、分岐予測に用いる分岐結果のことを「部分分岐結果」と呼ぶ。本実施形態における部分分岐結果は、初項1公比2の等比数列で表される項番号の複数の分岐結果である。したがって、分岐予測部3は、分岐履歴長Lが16の場合において、分岐結果記憶部1に記憶されている分岐結果のうちで、分岐結果X,X,X,X,X16の項番号の分岐結果を用いて分岐予測を行う。具体的には、分岐予測部3は、下記式(2)の演算を実行する。
【0016】
【数2】
【0017】
図2に示すように、上記式(2)を展開すると、Yは、バイアスと、重みおよび分岐結果の積和演算と、の和であることがわかる。分岐予測部3は、上記式(2)の演算を実行した結果、Yが負のときは分岐不成立と予測し、Yが非負のときは分岐成立と予測する。
【0018】
重み更新部4は、分岐予測部3による分岐予測の後に、重みの更新を行う。重みの更新は、分岐結果を元に、行われる。具体的には、重み更新部4は、下記式(3)の演算を実行し、重み記憶部2に記憶されている重みの更新を行う。
=Wi-1+tXi-1…(3)
(ここで、i=2,3,…,nであり、分岐成立のときt=+1、分岐不成立のときt=-1である。)
【0019】
A2.分岐予測処理:
図3に示す分岐予測処理は、プロセッサにおける分岐命令の分岐が成立するか否かを予測するために実行される。プロセッサにおいて分岐命令を含む命令がフェッチされると、分岐予測処理が実行される。
【0020】
分岐予測部3は、重みを取得する(ステップS105)。分岐予測部3は、プロセッサが分岐を含む命令をフェッチすると、かかる命令のアドレスのハッシュ値によって、重み記憶部2に記憶されている重みを参照し、取得する。本開示において、取得される重みは、重みW,W,W,W,およびW16である。
【0021】
分岐予測部3は、部分分岐結果を取得する(ステップS110)。本開示において、分岐結果記憶部1は、過去16回における分岐結果、即ち分岐結果X,X,…,X16を記憶している。分岐予測部3は、部分分岐結果である分岐結果X,X,X,X,およびX16を分岐結果記憶部1から取得する。
【0022】
分岐予測部3は、部分分岐結果と重みとを用いて積和演算を実行する(ステップS115)。分岐予測部3は、ステップS105で取得した重みと、ステップS110で取得した分岐結果とを用いて、上述した式(2)の演算を実行する。
【0023】
分岐予測部3は、積和演算の演算結果Yが非負であるか否かを判定する(ステップS120)。分岐予測部3は、非負であると判定した場合、即ちY≧0と判定した場合(ステップS120:YES)、分岐が成立すると予測する(ステップS125)。
【0024】
分岐予測部3は、非負ではない、即ちY<0と判定した場合(ステップS120:NO)、分岐が不成立と予測する(ステップS130)。
【0025】
重み更新部4は、分岐結果を元に、重みを更新する(ステップS135)。重み更新部4は、上述した式(3)を演算し、重みの更新を行う。更新された重みは、重み記憶部2に記憶される。
【0026】
図4に示すように、23種類のテストパターンを準備し、従来のパーセプトロン分岐予測器と本開示の分岐予測器100とを用いた分岐予測のシミュレーションを実行した。実施例に用いた分岐予測器100の分岐履歴長Lは、16である。実施例では、部分分岐結果として初項1公比2の等比数列で表される項番号の分岐結果と、部分分岐結果に対応する重みと、を用いて分岐予測を実行した。比較例として、分岐履歴長Lが2,4,8,および16のパーセプトロン分岐予測器を用いてシミュレーションを行った。比較例では、記憶されている分岐結果全てを用いて分岐予測を行った。シミュレーションは、各テストパターンについて120回連続で分岐予測を行った。テストパターンは、分岐が成立(T)と不成立(N)とを様々な順序で並べたものである。図4に示すテストパターンのTとNに続く数字は、TまたはNが何回連続するかを示すものである。例えば、図4に示すN4T1のテストパターンは、不成立(N)が連続して4回、次いで成立(T)が1回のテストパターンであることを意味する。分岐予測部3は、テストパターンを一巡すると、再度そのテストパターンの最初から分岐予測を実行する。即ち、N4T1のテストパターンの場合、分岐予測部3は、N,N,N,N,T,N,N,N,N,T…のように1種類のテストパターンについて繰り返し分岐予測を実行する。
【0027】
図4に示すグラフの縦軸は、予測120回目における累積予測成功率を示す。予測回数は、1つの分岐に対する予測を1回とする。具体的には、N4T1のテストパターンの場合、分岐予測部3は、テストパターンを一巡する間に5回の分岐予測を実行する。累積予測成功率は、予測成功回数を予測回数で除した値の百分率である。具体的には、予測回数120回における累積予測成功率は、120回の予測回数のうちで実際の分岐方向と分岐予測の結果とが一致した回数を120で除して、100倍することで求められる。
【0028】
下記表1は、各比較例および実施例について、23種類のテストパターンについての予測120回目における累積予測成功率の平均値を示す。
【0029】
【表1】
【0030】
表1の「積和演算回数」は、1回の分岐予測で行われる積和演算回数を示している。各比較例において、記憶された分岐結果全てを用いて分岐予測が実行されているため、分岐履歴長Lと積和演算回数が一致している。他方、実施例において、分岐履歴長Lは16であるが、分岐予測部3は、記憶されている分岐結果の一部、即ち部分分岐結果のみを用いて積和演算を行うので、積和演算回数は5である。
【0031】
表1の「累積予測成功率の平均値」は、23種類のテストパターンについて分岐予測を120回行ったときの累積予測成功率の平均値を示している。具体的には、図4に示す23種類のテストパターンそれぞれについて120回の分岐予測を行い、累積予測成功率を算出した後、それらの総和を23で除して求めた値である。各比較例の成功率が示すように、分岐履歴長Lが増加し積和演算の回数が増加するほど、予測成功率も増加する。他方、実施例の予測成功率は、積和演算の回数が僅か5回にも関わらず、良好な結果を示している。
【0032】
以上説明した第1実施形態の分岐予測器100によれば、分岐予測部3が、分岐結果記憶部1に記憶された分岐結果のうちの一部の複数の分岐結果である部分分岐結果と、部分分岐結果を構成する複数の分岐結果のそれぞれに対応する重みと、を積和演算することで分岐予測を実行するので、分岐結果記憶部1に記憶された分岐結果を全て用いて分岐予測する構成と比較して、予測精度の低下を抑制しながら、積和演算の回数を減らすことができる。
【0033】
B.第2実施形態:
第1実施形態において、部分分岐結果として初項1公比2の等比数列で表される項番号の分岐結果を用いる例について説明したが、本開示はこれに制限されない。第2実施形態にかかる分岐予測器100では、分岐結果記憶部1に記憶される複数の分岐結果が、複数の分岐結果グループと、1つ以上の除外グループと、に分けられ、分岐予測部3は、複数の分岐結果グループを構成する分岐結果を部分分岐結果として分岐予測に用いる。具体的には、分岐結果グループのそれぞれは、連続する項番号の分岐結果からなる。各分岐結果グループに含まれる分岐結果の項数は、各分岐結果グループに含まれる最小項番号が大きくなるほど多くなる。また、除外グループは、連続する複数の項番号の分岐結果からなる。各除外グループに含まれる分岐結果の項数は、各除外グループに含まれる最小項番号が大きくなるほど多くなる。例えば、図5に示すように、分岐結果グループに含まれる最小項番号の小さい方から順番に、第1分岐結果グループ、第2分岐結果グループ…とすると、分岐結果グループに含まれる項数は、1、3、5…と、分岐結果グループに含まれる最小項番号の増加とともに多くなる。また、除外グループは、2つの分岐結果グループに挟まれている。除外グループに含まれる最小項番号の小さい方から順番に、第1除外グループ、第2除外グループ…とすると、除外グループに含まれる項数は、1、2、3…と、除外グループに含まれる最小項番号の増加とともに多くなる。なお、第2実施形態の分岐予測器100のその他の構成は、第1実施形態の分岐予測器100と同じであるので、その詳細な説明を省略する。
【0034】
分岐予測部3は、上述のように2つのグループに分けられた分岐結果のうちで、分岐結果グループに含まれる分岐結果だけを用いて分岐予測を実行する。分岐予測に用いられる重みは、分岐結果の項番号に対応する重みが使用される。
【0035】
以上説明した第2実施形態の分岐予測器100によれば、分岐結果を分岐結果グループと除外グループとに分け、分岐結果グループに含まれる分岐結果だけを用いて分岐予測を行うので、分岐結果記憶部1に記憶された分岐結果数が多い場合、即ち分岐履歴長Lが長い場合であっても、記憶された分岐結果を効率的に分岐予測に利用することができる。具体的には、分岐履歴長Lが128の場合、分岐予測に用いる部分分岐結果として初項1公比2の等比数列で表される項番号の分岐結果を用いると、分岐結果X,X,X,X,X16,X32,X64,およびX128が、分岐予測に用いられる。ここで、大きい項番号間、例えばX64とX128の間では分岐履歴に利用されない分岐結果の項が多い。そこで、第2実施形態では、各分岐結果グループに含まれる最小項番号が大きくなるほど各分岐結果グループに含まれる項数が多くすることで、分岐履歴長Lが長い場合であっても、分岐結果を効率的に利用することができる。第2実施形態にかかる分岐予測器100によっても、分岐結果記憶部1に記憶された分岐結果の全てではなく一部を用いて分岐予測を行うので、予測精度の低下を抑制しながら、積和演算の回数を減らすことができる。
【0036】
C.第3実施形態:
第2実施形態で説明した分岐予測器100において、複数の分岐結果グループのそれぞれに含まれる分岐結果の項数は、分岐結果グループに含まれる最小項番号の順序で並べると等比数列となっていてもよい。例えば、図6に示すように、複数の分岐結果グループのそれぞれに含まれる分岐結果の項数が、分岐結果グループに含まれる最小項番号の順序で並べると公比2の等比数列になっていてもよい。具体的には、分岐結果グループに含まれる最小項番号の小さい方から順番に、第1分岐結果グループ、第2分岐結果グループ…とすると、各分岐結果グループに含まれる分岐結果の項数は、1,2,4,…となっていてもよい。なお、第3実施形態の分岐予測器100のその他の構成は、第1実施形態の分岐予測器100と同じであるので、その詳細な説明を省略する。
【0037】
以上説明した第3実施形態の分岐予測器100によれば、第2実施形態の分岐予測器100と同様の効果を得ることができる。なお、公比は2に限らず、任意の3以上の自然数であってもよい。
【0038】
D.第4実施形態:
第2実施形態で説明した分岐予測器100において、1つ以上の除外グループのそれぞれに含まれる分岐結果の項数は、除外グループに含まれる最小項番号の順序で並べると等比数列となっていてもよい。例えば、図7に示すように、複数の除外グループのそれぞれに含まれる分岐結果の項数が、除外グループに含まれる最小項番号の順序で並べると公比2の等比数列になっていてもよい。具体的には、除外グループに含まれる最小項番号の小さい方から順番に、第1除外グループ、第2除外グループ…とすると、各除外グループに含まれる分岐結果の項数は、1,2,4,…となっていてもよい。なお、第4実施形態の分岐予測器100のその他の構成は、第1実施形態の分岐予測器100と同じであるので、その詳細な説明を省略する。
【0039】
以上説明した第4実施形態の分岐予測器100によれば、第2実施形態の分岐予測器100と同様の効果を得ることができる。なお、公比は2に限らず、任意の3以上の自然数であってもよい。また、本実施形態で説明した分岐予測器100は、上述した第3実施形態の分岐予測器100と組み合わせて用いてもよい。即ち、複数の分岐結果グループのそれぞれに含まれる分岐結果の項数は、分岐結果グループに含まれる最小項番号の順序で並べると等比数列となっており、かつ、1つ以上の除外グループのそれぞれに含まれる分岐結果の項数は、除外グループに含まれる最小項番号の順序で並べると等比数列となっていてもよい。
【0040】
E.第5実施形態:
第5実施形態の分岐予測器100は、部分分岐結果に含まれる分岐結果のうちで最大の項番号が、分岐命令を含むアルゴリズムにおける最大の繰り返し分岐命令数を超えているまたは一致している点において、第1実施形態の分岐予測器100と異なる。第5実施形態の分岐予測器100のその他の構成は、第1実施形態の分岐予測器100と同じであるので、その詳細な説明を省略する。本開示において、繰り返し分岐命令数とは、分岐命令が繰り返し実行される数をいう。具体的には、if文等の分岐命令を含むwhile文、for文等により、繰り返し実行される分岐命令の数をいう。プロセッサは、アルゴリズム中に出現する複数の繰り返し分岐命令数によって演算時間の大部分が占められている。従って、これらの繰り返し分岐命令を全てカバーできるように最大の項番号を設定することが好ましい。そこで、部分分岐結果に含まれる最大の項番号が、アルゴリズム中の最大の繰り返し分岐命令数を上回るまたは一致するように、最大の項番号を設定することで、効率的に予測演算を実行することができる。具体的には、例えばアルゴリズム中の最大繰り返し分岐命令数が7の場合、部分分岐結果のうちで最大の項番号を7以上とすることで、繰り返し分岐命令の周期性を利用して予測演算を実行できる。即ち、繰り返し分岐命令のうちで最後の分岐命令の分岐結果は、部分分岐結果として必ず分岐予測に用いられる。これにより、予測精度の低下を抑制できる。特に、最大の繰り返し分岐命令数と最大の項番号とを一致させるのが最も効率的であるため、好ましい。他方、最大の繰り返し分岐命令数が7の場合に、部分分岐結果のうちで最大の項番号として5等の最大の繰り返し分岐命令数より小さい数の項番号を設定してしまうと、繰り返し分岐命令の周期性を利用できない。
【0041】
以上説明した第5実施形態の分岐予測器100によれば、部分分岐結果に含まれる分岐結果の最大の項番号が、プロセッサにより実行されるアルゴリズム中に出現する分岐命令を含む繰り返し分岐命令数のうちで最大の繰り返し分岐命令数を、上回るまたは一致しているので、分岐予測器100の予測精度の低下を抑制しながら積和演算回数を減らすことができる。
【0042】
F.第6実施形態:
第6実施形態の分岐予測器100は、部分分岐結果に含まれる分岐結果のうちで最大の項番号が、分岐命令を含むアルゴリズムにおける繰り返し分岐命令数のうちで、最も頻度の高い繰り返し分岐命令数と一致している点で、第1実施形態の分岐予測器100と異なる。第6実施形態の分岐予測器100のその他の構成は、第1実施形態の分岐予測器100と同じであるので、その詳細な説明を省略する。第5実施形態で説明したように、部分分岐結果に含まれる分岐結果の最大の項番号が、アルゴリズム中の分岐を含む繰り返し分岐命令数を上回るまたは一致するように最大の項番号を設定することで、かかる処理の分岐予測の予測精度の低下を抑制しながら、積和演算回数を減らすことができる。そこで、本実施形態の分岐予測器100のように、部分分岐結果に含まれる分岐結果の最大の項番号が、アルゴリズム中に出現する複数の繰り返し分岐命令数のうちで、最も出現する頻度の高い繰り返し分岐命令数を、上回るまたは一致するように最大の項番号を設定することで、アルゴリズム全体における予測精度の低下を抑制することができる。特に、最も頻度の高い繰り返し分岐命令数と最大の項番号とを一致させるのが最も効率的であるため、好ましい。なお、本実施形態の分岐予測器100は、第5実施形態の分岐予測器100と比べて、最大の項番号が小さくなることが多い点でより効率的である。一方で、本実施形態の分岐予測器100は、全ての繰り返し分岐命令をカバーできていない場合が多い。しかし、本実施形態の分岐予測器100は、最も頻度の高い繰り返し分岐命令数をカバーできているので、第5実施形態の分岐予測器100からの分岐予測精度の劣化はあったとしてもごくわずかなものとなる。
【0043】
以上説明した第6実施形態の分岐予測器100によれば、部分分岐結果に含まれる分岐結果の最大の項番号が、プロセッサにより実行されるアルゴリズム中に出現する分岐命令を含む繰り返し分岐命令数のうちで最も頻度の高い繰り返し分岐命令数を上回るまたは一致しているので、分岐予測器100の予測精度の低下を抑制しながら積和演算回数を減らすことができる。
【0044】
G.他の実施形態:
(G1)上記第1実施形態において、部分分岐結果として初項1公比2の等比数列で表される項番号の分岐結果を用いたが、本開示はこれに制限されない。部分分岐結果として、例えば奇数の項番号の分岐結果、偶数の項番号の分岐結果、任意の3以上の自然数mを公比とする等比数列で表される項番号の分岐結果等を用いてもよい。
【0045】
(G2)各実施形態において、分岐予測部3は、式の演算を実行した結果、Yが負のときは分岐不成立と予測し、Yが非負のときは分岐成立と予測していたが、この構成に代えて、分岐予測部3は、Yが正のときは分岐成立と予測し、Yが非正のときは分岐不成立と予測してもよい。
【0046】
本開示に記載の制御部及びその手法は、コンピュータプログラムにより具体化された一つ乃至は複数の機能を実行するようにプログラムされたプロセッサ及びメモリを構成することによって提供された専用コンピュータにより、実現されてもよい。あるいは、本開示に記載の制御部及びその手法は、一つ以上の専用ハードウエア論理回路によってプロセッサを構成することによって提供された専用コンピュータにより、実現されてもよい。もしくは、本開示に記載の制御部及びその手法は、一つ乃至は複数の機能を実行するようにプログラムされたプロセッサ及びメモリと一つ以上のハードウエア論理回路によって構成されたプロセッサとの組み合わせにより構成された一つ以上の専用コンピュータにより、実現されてもよい。また、コンピュータプログラムは、コンピュータにより実行されるインストラクションとして、コンピュータ読み取り可能な非遷移有形記録媒体に記憶されていてもよい。
【0047】
本開示は、上述の各実施形態に限られるものではなく、その趣旨を逸脱しない範囲において種々の構成で実現することができる。例えば、発明の概要の欄に記載した形態中の技術的特徴に対応する各実施形態中の技術的特徴は、上述の課題の一部又は全部を解決するために、あるいは、上述の効果の一部又は全部を達成するために、適宜、差し替えや、組み合わせを行うことが可能である。また、その技術的特徴が本明細書中に必須なものとして説明されていなければ、適宜、削除することが可能である。
【符号の説明】
【0048】
1…分岐結果記憶部、2…重み記憶部、3…分岐予測部、4…重み更新部、100…分岐予測器
図1
図2
図3
図4
図5
図6
図7