JP2012014417A - 命令制御装置、及び命令制御方法 - Google Patents

命令制御装置、及び命令制御方法 Download PDF

Info

Publication number
JP2012014417A
JP2012014417A JP2010150069A JP2010150069A JP2012014417A JP 2012014417 A JP2012014417 A JP 2012014417A JP 2010150069 A JP2010150069 A JP 2010150069A JP 2010150069 A JP2010150069 A JP 2010150069A JP 2012014417 A JP2012014417 A JP 2012014417A
Authority
JP
Japan
Prior art keywords
prefetch
read
instruction
information
distance information
Prior art date
Legal status (The legal status 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 status listed.)
Pending
Application number
JP2010150069A
Other languages
English (en)
Inventor
Ryuji Sakai
隆二 境
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2010150069A priority Critical patent/JP2012014417A/ja
Publication of JP2012014417A publication Critical patent/JP2012014417A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】読み出し遅延を抑止する。
【解決手段】実施形態の命令制御装置は、受付手段と、記憶手段と、算出手段と、プリフェッチ手段と、実行手段と、取得手段と、特定手段と、更新手段と、を備える。受付手段は、プリフェッチ付きの読出命令を受け付ける。記憶手段は、読出命令を識別する識別情報と、距離情報と、を対応づけて記憶する。算出手段は、読出命令の読み出し先のアドレスと、記憶手段と、に基づいて、プリフェッチによる読み出し先のアドレスを算出する。プリフェッチ手段は、算出されたアドレスに対してプリフェッチを実行する。実行手段は、読出命令に従って、プリフェッチされたアドレスに対して読み出しを行う。取得手段は、読み出しの完了までの遅延時間を取得する。特定手段は、遅延時間に基づいて、次以降のプリフェッチで用いる距離情報を特定する。更新手段は、特定された距離情報を、識別情報と対応づけて記憶手段に記録させる更新を行う。
【選択図】図1

Description

本発明の実施形態は、命令制御装置、及び命令制御方法に関する。
従来から、コンピュータ産業では、世代が変わる毎に動作速度が高速化している。CPU等の処理装置の動作速度が向上するに従って、記憶装置に対するアクセス速度も高速化する必要がある。
仮に、記憶装置に対するアクセス速度が、処理装置の動作速度と比べて遅い場合には、記憶待ちが生じ、当該記憶待ちの間、処理装置はアイドル状態になる。これにより処理装置の処理効率は、低減することになる。
このようなアイドル状態を抑止するために、プリフェッチという技術が提案されている。このプリフェッチとは、処理装置が利用するデータを予めキャッシュメモリに読み出しておくことで、データの読み出す際の遅延時間を短縮させる技術である。例えば、キャッシュミスが生じた場合に、当該キャッシュミスが再び生じないようにデータの先取りを最適化する技術が提案されている。
特開平10−91437号公報
しかしながら、従来技術においては、読み出したデータを格納するキャッシュと処理装置との間でデータアクセス時に生じる遅延時間については考慮されておらず、プリフェッチ命令を実行するためのオーバーヘッドが増加してしまい逆に性能が悪化することもあった。
本発明は、上記に鑑みてなされたものであって、プリフェッチを行う際にデータを読み出す際の遅延を抑止する命令制御装置、及び命令制御方法を提供することを目的とする。
実施形態の命令制御装置は、受付手段と、記憶手段と、算出手段と、プリフェッチ手段と、実行手段と、取得手段と、特定手段と、更新手段と、を備える。受付手段は、プリフェッチ付きの読出命令を受け付ける。記憶手段は、プリフェッチ付きの読出命令を識別する識別情報と、当該読出命令による読み出し先のアドレスからプリフェッチ先のアドレスの算出に用いる距離情報と、を対応づけて記憶する。算出手段は、受付手段が受け付けた読出命令の読み出し先のアドレスと、記憶手段に記憶された読出命令の識別情報及び距離情報と、に基づいて、受付手段が受け付けた読出命令に付いていたプリフェッチによる読み出し先のアドレスを算出する。プリフェッチ手段は、この算出されたアドレスに対してプリフェッチを実行する。実行手段は、読出命令に従って、プリフェッチ手段でプリフェッチされたアドレスに対して読み出しを実行する。取得手段は、実行手段による読み出しの完了までの遅延時間を取得する。特定手段は、取得手段が取得した遅延時間に基づいて、次以降のプリフェッチで用いる距離情報を特定する。更新手段は、特定手段により特定された距離情報を、プリフェッチ付きの読出命令を識別する識別情報と対応づけて、記憶手段に記録させる更新を行う。
図1は、実施の形態にかかる情報処理装置における、CPUと周辺の構成を示すブロック図である。 図2は、CPUがプリフェッチを行う際に、データの格納先の違いに基づくCPUコアからの距離の違いを示した図である。 図3は、CPUコアに隣接するキャッシュと、CPUコア内のブロック構成と、を示した図である。 図4は、プリフェッチ情報テーブルのテーブル構造を示した図である。 図5は、本実施の形態の情報処理装置の各CPUコアで行われる、プリフェッチ付き読出命令に対する処理を示した図である。 図6は、本実施の形態にかかるCPUコアにおける、プリフェッチ付き読出命令に関する処理の手順を示すフローチャートである。 図7は、本実施の形態にかかる情報処理装置のCPUコアにおける、プリフェッチ情報テーブルの更新処理の手順を示すフローチャートである。 図8は、変形例にかかる情報処理装置における、CPUと周辺の構成を示すブロック図である。
図1は、実施の形態にかかる情報処理装置100における、CPUと周辺の構成を示すブロック図である。図1に示すように、情報処理装置100は、CPU101_1〜101_Nと、メインメモリ102と、これらを接続するバス103と、を含む構成とする。
メインメモリ102は、RAM(Random Access Memory)であり、CPU101_1〜101_Nが処理に必要なデータを記憶する。メインメモリ102に記憶されたデータの読み出しは、CPU101_1〜101_N内の各キャッシュからの読み出しと比べて遅いため、CPU101_1〜101_Nの処理効率を低減させないためには工夫は必要となる。
CPU101_1は、CPUコア111〜CPUコア114と、1次キャッシュ121〜124と、2次キャッシュ131〜134と、3次キャッシュ141と、を備える。なお、情報処理装置100に格納された他のCPU(例えばCPU101_N)は、CPU101_1と同様の構成を備えるものとして説明を省略する。
3次キャッシュ141は、CPUコア111〜114に共通して利用されるキャッシュである。3次キャッシュ141に記憶されたデータを読み出す速度は、データが格納された位置と、CPUコア111〜114のそれぞれと、の配置関係に応じて、異なる場合がある。
1次キャッシュ121〜124、及び2次キャッシュ131〜134は、CPUコア111〜114毎に割り当てられたキャッシュとする。CPUコア111〜114に近い順に、1次キャッシュ121〜124、2次キャッシュ131〜134が配置されている。
CPUコア111〜114は、CPU101_1内部に備えられたプロセッサである。CPUコア111〜114は、それぞれ異なる処理を行うことで、CPU101_1全体として並列処理を行うことができる。
つまり、各CPU101_1〜101_N内のCPUコアがデータを読み出す場合、通常、メインメモリ102や3次キャッシュ141、142等からシーケンシャルにデータが読み出される。そして、読み出されたデータは、各コアの1次キャッシュ121〜124、2次キャッシュ131〜134内に格納される。1次キャッシュ121〜124、1次キャッシュ121〜124は、3次キャッシュ141と比べて読み書きの速度が高速であるが、キャッシュの容量が少ない。このため、1次キャッシュ121〜124、2次キャッシュ131〜134に格納されたデータの利用効率を向上させるために、読出命令に従って、1次キャッシュ121〜124、2次キャッシュ131〜134から読み出す前の適切なタイミングで、プリフェッチされたデータが格納されるよう調整するのが好ましい。
まず、読み出すデータが、メインメモリ102や3次キャッシュ141、142のどこに格納されているのかに応じて、プリフェッチに要する時間が異なることについて説明する。図2は、CPUコア112がプリフェッチを行う際に、データの格納先の違いによる、CPUコア112からの距離の違いを示した図である。このような読み出し先までの距離の違いと、メインメモリ102及び3次キャッシュ141〜142の読み出し速度の違いと、から、読み出したデータが、データ1次キャッシュ122又は2次キャッシュ132に格納されるまでの時間が異なる。
例えば、3次キャッシュ141内部においても、データ201とデータ202とでは配置が異なるため、CPUコア112からの命令に応じて1次キャッシュ122又は2次キャッシュ132に格納されるまでの時間が異なる。さらに、異なるCPU101_Nの3次キャッシュ142に格納されていたデータ204や、メインメモリ102に格納されたデータ203を読み出して、1次キャッシュ122又は2次キャッシュ132に格納されるまでの時間も、当然に、データ201とデータ202とは異なる。
このように、将来アクセスする予定のどのアドレスに対して、どのタイミングでプリフェッチを行えばよいのかは、状況によって異なる。このため、本実施の形態にかかる情報処理装置100では、読み出し先のアドレスを調節することとした。
ところで、マルチコアプロセッサでは、3次キャッシュからデータを読み出す際に、格納されたデータの配置によって、アクセス遅延が均質でないケースが多い。例えば、8コアより数の多いマルチコアプロセッサでは、3次キャッシュは、コア数分に分割されて管理される傾向にある。このため、各コアに近いローカルな領域へのアクセス速度と、それ以外の領域へのアクセス速度と、では5倍以上の差がある場合もある。また、システムの構成によっては、CPUの外側に接続されているメインメモリへのアクセス速度も、均等でない場合もある。このため、プリフェッチを行う際に、どの程度先のアドレスに対してプリフェッチするのが最適かを、プログラマがプログラム作成時に決めるのは困難であった。当然ながら8コア以下のマルチコアであっても、プログラマがプログラム作成時に決めるのは困難である。そこで、本実施の形態にかかる情報処理装置100では、これらの問題を解消すべく、データの読み出し先のアドレスを調節するための構成を備えることとした。このように、本実施の形態にかかる情報処理装置100で説明する構成は、プロセッサ内部のコア数にかかわらず適応できる。
図3は、CPUコア111に隣接するキャッシュと、CPUコア111内のブロック構成と、を示した図である。図3に示すように、CPUコア111は、プリフェッチ情報テーブル301と、命令シーケンサ302と、算出部303と、プリフェッチ実行部304と、取得部305と、特定部306と、テーブル制御部307と、を備える。
図3では、CPUコア111の場合について説明するが、CPUコア112〜118についても同様の構成を備えるものとして説明を省略する。また、本実施の形態は、プリフェッチ情報テーブルをCPUコア毎に備える例としたが、複数コアで共通するよう、3次キャッシュ等に備えることにしてもよい。
プリフェッチ情報テーブル301は、プリフェッチ付きの読出命令から、プリフェッチするアドレスを算出するための情報を記憶する。図4は、プリフェッチ情報テーブル301のテーブル構造を示した図である。図4に示すようにプリフェッチ情報テーブル301は、タグと、距離情報と、遅延情報と、回数と、向き情報と、を対応付けて記憶する。
タグは、プリフェッチ付きの読出命令を識別するエントリーキーとして用いられる情報とする。本実施の形態では、タグは、命令コードの所定の桁のアドレスとする。
距離情報は、読出命令の読み出し先のアドレスから、プリフェッチ先のアドレスの算出する際に用いる、先読みの距離情報とする。つまり、距離情報は、プリフェッチ付き読出命令を実行するときに同時に実行するプリフェッチのアドレスオフセットとして用いられる。
遅延情報は、プリフェッチしたアドレスへの読み出しが完了するまでの、遅延サイクルを統計した遅延時間とする。
回数は、次に距離情報を算出するまでに、プリフェッチ付きの読出命令を何回実行した後にプリフェッチ情報テーブル301を更新するのかを指定している。例えば、プリフェッチ付きの読出命令が実行される度に回数から‘1’減算され、回数が‘0’となった場合に、距離情報の算出、プリフェッチ情報テーブル301の更新が行われる。
向き情報は、読出命令の読み出し先のアドレスに対する、距離情報の演算の向き、換言すれば正か負かを示した情報とする。向き情報は、3ビットデータであり、距離の増減の履歴データを保持する。例えば向き情報は“110b”として示される。"1"が正の方向であり、"0"が負の方向とする。そして小さい桁ほど新しく追加された向き情報を示している。
そして、プリフェッチ情報テーブル301で保持される各情報は、読み出し結果に応じて更新される。
命令シーケンサ302は、CPUコア111で実行する様々な命令を受け付ける。この命令には、プリフェッチ付きの読出命令も含まれている。プリフェッチ付き読出命令とは、読出命令に基づくデータの読み出しと並列して、データのプリフェッチを行う命令とする。本実施の形態では、当該プリフェッチ付き読出命令において、プリフェッチを行う際の読み出し距離を調整する。
さらに、命令シーケンサ302は、受け付けた命令の実行を行う。例えば、命令シーケンサ302は、プリフェッチされたアドレスに対する、読出命令の実行も行う。換言すれば、命令シーケンサ302は、受付手段及び実行手段として機能する。
算出部303は、命令シーケンサ302が受け付けた読出命令の読み出し先のアドレスと、プリフェッチ情報テーブル301に記憶された読出命令のタグ、距離情報及び向き情報と、に基づいて、命令シーケンサ302が受け付けた読出命令に付いていたプリフェッチによる読み出し先のアドレスを算出する。
本実施の形態にかかる算出部303では、読出命令の読み出し先のアドレスに対して、距離情報を、向き情報に従って加算又は減算を行う。つまり、算出部303では、向き情報が正であれば加算を、向き情報が負であれば減算を行う。これにより、プリフェッチで読み出すアドレスが特定される。
プリフェッチ実行部304は、算出部303で算出された読み出し先のアドレスに対して、プリフェッチを実行する。これにより、読み出されるデータが、1次キャッシュ又は2次キャッシュに格納される。
その後(例えば、メインメモリ102からデータを1次キャッシュ又は2次キャッシュにロードする間の数百サイクル後)、命令シーケンサ302は、当該読み出し先に対する読出命令を受け付けた場合に、当該読出命令に従って、プリフェッチされたアドレスからデータの読み出しを実行する。これにより、1次キャッシュ又は2次キャッシュからデータが読み出されることになる。
取得部305は、命令シーケンサ302による読出命令の完了までの遅延情報(遅延サイクル)を取得する。これにより、プリフェッチされたアドレスのデータが、読出命令が行われる前に、1次キャッシュ又は2次キャッシュに格納されたか否か確認できる。
特定部306は、取得部305が取得した遅延情報に基づいて、次回以降のプリフェッチで用いる距離情報を特定する。本実施の形態にかかる特定部306は、プリフェッチ情報テーブル301に記録された遅延情報と、プリフェッチ情報テーブル301に遅延情報を更新した後に、取得部305が取得した遅延情報と、の差異に基づいて、距離情報を特定する。なお、差異を比較するために用いる遅延情報は、実行する読出命令と一致する、プリフェッチ情報テーブル301に記憶されたタグとの対応付けから特定できる。
なお、特定部306による距離情報の特定は、当該距離情報とプリフェッチ情報テーブル301で対応付けられた回数が“0”になった場合に行う。
テーブル制御部307は、更新部311を備え、プリフェッチ情報テーブル301に対する制御を行う。
更新部311は、プリフェッチ情報テーブル301に格納された各項目について更新する。例えば、本実施の形態にかかる更新部311は、特定部306により特定された距離情報を、プリフェッチ付きの読出命令を識別するタグと対応づけて、プリフェッチ情報テーブル301に記憶させる更新を行う。
本実施の形態では、データのアクセスが、アドレスの小さい方から大きい方へと順次アクセスしていくことが非常に多い場合について説明する。このような状況でメモリアクセスを高速に行うための手法について解説する。
図5は、本実施の形態の情報処理装置100の各CPUコアで行われる、プリフェッチ付き読出命令に対する処理を示した図である。図5に示すように、命令シーケンサ302が命令実行シーケンス501の順に命令を受け付ける。受け付ける命令内に、プリフェッチ付き読出命令が含まれている場合に、算出部303が、当該読出命令の位置を示すプログラムカウンタPCをエントリーキーとして、プリフェッチ情報テーブル301を参照する。そして、算出部303が、プログラムカウンタPCのエントリーキーと、プリフェッチ情報テーブル301内のタグとが一致するか否か確認する。
そして、算出部303は、一致したタグと対応付けられている距離情報を、読出命令で用いられるアドレスに対して、向き情報に従った演算を行う。そして、プリフェッチ実行部304が、演算で求められたアドレスに対して、プリフェッチを実行する。
次に、本実施の形態にかかる情報処理装置100のCPUコア111における、プリフェッチ付き読出命令に関する処理について説明する。図6は、本実施の形態にかかるCPUコア111における上述した処理の手順を示すフローチャートである。
命令シーケンサ302が、プリフェッチ付き読出命令を受け付け、当該プリフェッチ付き読出命令をデコードする(ステップS601)。
そして、命令シーケンサ302が、デコードした読出命令について、オペランドから、当該読出命令での読み出し先となるソースアドレスAを算出する(ステップS602)。
その後、命令シーケンサ302が、算出されたソースアドレスAに対して、読出命令を実行する(ステップS603)。
そして、算出部303が、実行された読出命令を示すプログラムカウンタPAをエントリーキーとして、プリフェッチ情報テーブル301を参照する(ステップS604)。その後、算出部303が、プリフェッチ情報テーブル301内に格納されている全てのタグが、プログラムカウンタPCと異なるか否かを判定する(ステップS605)。異なると判定された場合(ステップS605:Yes)、プリフェッチ情報テーブル301内のエントリ情報を初期化し、当該エントリ情報に対して、当該プログラムカウンタPAと一致するタグを設定する(ステップS606)。初期化では、エントリ情報として、例えば距離情報=128、遅延情報=0、回数=8、向き情報=00bを設定する。
一方、算出部303が、プリフェッチ情報テーブル301内に格納されているタグと、プログラムカウンタPCとが一致すると判定した場合(ステップS605:No)、一致するタグと対応付けられた距離情報Dを取得する(ステップS607)。
次に、算出部303が、ソースアドレスAに対して、距離情報Dを加算し、プリフェッチにおける読出先のアドレスを生成する(ステップS608)。その後、プリフェッチ実行部304が、算出された読出先のアドレスに対して、プリフェッチを実行する(ステップS609)。
一方、CPUコア111は、読出命令が完了したか否か判定する(ステップS610)。完了していないと判定した場合(ステップS610:No)、完了するまで当該判定を繰り返す。
一方、CPUコア111が、読出命令が完了し、データが読み出せたことを確認した場合(ステップS610:Yes)、読み出したデータに基づく処理を行う。
そして、取得部305が、読出命令を実行してから読出処理が終了するまでの、読出命令実行サイクルTを取得する(ステップS611)。読出命令実行サイクルTは、読出命令の実行から、読出命令の完了までの時間を示し、今回の遅延を示す時間となる。
そして、取得部305は、プリフェッチ情報テーブル301から読み出した遅延情報は後の処理で必要となることもあるので、当該遅延情報を、過去の実行サイクルPrevTに格納する(ステップS612)。
その後、取得部305は、今回取得した読出命令実行サイクルTと、読み出した遅延情報とを加算した後、2で割った値を新たな遅延情報として取得する(ステップS613)。その後、取得部305は、プリフェッチ情報テーブル301から読み出した回数を‘1’減算する(ステップS614)。その後、特定部306が、回数が‘0’より大きいか否かを判定する(ステップS615)。‘0’よりも大きいと判定した場合、更新部311は、ステップS613で取得した遅延情報、及びステップS614で取得した回数で、プリフェッチ情報テーブル301を更新する(ステップS617)。
一方、特定部306が、回数が‘0’以下であると判定した場合(ステップS615:No)、特定部306及び更新部311の処理により、プリフェッチ情報テーブル301を更新する(ステップS616)。
なお、図6のステップS604〜S609の処理は、ステップS603の読出命令と、ステップS610による読み出し命令の完了との間に実行することに制限するものではなく、どのタイミングで行っても良い。例えば、S603とステップS610との処理と並行して行っても良い。
次に、本実施の形態にかかる情報処理装置100のCPUコア111における、図6のステップS616で示したプリフェッチ情報テーブル301の更新処理について説明する。図7は、本実施の形態にかかる情報処理装置100のCPUコア111における上述した処理の手順を示すフローチャートである。
まず、特定部306が、図6の処理手順で算出した遅延情報が、オンキャッシュのデータアクセス以下か否かを判定する(ステップS701)。遅延情報がオンキャッシュのデータアクセス以下と判定した場合、換言すればオンキャッシュと同等かそれより読出が早い場合(ステップS701:Yes)、特定部306は、向き情報が“**1b”であるか否かを判定する(ステップS702)。向き情報が“**1b”と判定された場合(ステップS702:Yes)、特定部306は、距離情報を変更する必要がないため、ステップS712の処理に進む。
一方、特定部306が、向き情報が“**1b”ではないと判定した場合(ステップS702:No)、距離情報から、δを減算する(ステップS703)。当該減算処理で、読出命令に近いアドレスをプリフェッチするよう距離情報が調節されたことになる。当該減算は、今回はオンキャッシュのデータアクセスができたため、現在からより近い将来にアクセスするであろうアドレスに対するプリフェッチとしても、キャッシュミスしない可能性が高いと考えられたためである。
ところで、δは、情報処理装置100のシステム設定で、距離情報を調節するために、予め定められた値(例えば16)とする。なお、本実施の形態では、距離情報の調整として、固定値δを用いたが、当該固定値の増減ではなく、特定の比率(たとえば10%)で増減させてもよい。
その後、特定部306は、向き情報を1つ一桁左にシフトさせた後、“111b”とANDをとる。これにより向き情報が“**0b”となる(ステップS704)。その後、特定部306は、ステップS712の処理に進む。
一方、ステップS701において、特定部306が、遅延情報が、オンキャッシュのデータアクセスより大きいと判定した場合(ステップS701:No)、過去の実行サイクルPrevTが、今回算出した遅延情報より大きいか否か判定する(ステップS705)。
特定部306が、過去の実行サイクルPrevTより、今回算出した遅延情報が大きいと判定した場合(ステップS705:No)、向きを逆方向に戻す必要があるので、最後の向きと逆の方向に距離を調整する。つまり、特定部306は、向き情報が“**1b”であるか否か判定する(ステップS706)。そして、特定部306は、向き情報が“**1b”であると判定した場合(ステップS706:Yes)、距離情報から、δを減算し(ステップS703)、向き情報を1つ一桁左にシフトさせた後、“111b”とANDをとる(ステップS704)。
また、ステップS706において、特定部306が、向き情報が“**1b”ではない、つまり“**0b”であると判定した場合(ステップS706:No)、距離情報に対して、δを加算し(ステップS707)、向き情報を1つ一桁左にシフトさせた後、“1”を加算した上で“111b”とANDをとる(ステップS708)。その後、特定部306は、ステップS712の処理に進む。これらの処理で、逆方向に距離が調整されたことになる。
一方、ステップS705において、特定部306が、過去の実行サイクルPrevTが、今回算出した遅延情報より大きいと判定した、つまり前回の遅延よりも今回の遅延の方が小さい場合(ステップS705:Yes)、向き情報が“001b”であるか否かを判定する(ステップS709)。向き情報が“001b”であると判定した場合(ステップS709:Yes)には、ステップS712の処理に進む。
その後、特定部306は、向き情報が“001b”ではないと判定した場合(ステップS709:No)、向き情報が“110b”であるか否かを判定する(ステップS710)。向き情報が“110b”であると判定した場合(ステップS710:Yes)には、ステップS712の処理に進む。
一方、特定部306は、向き情報が“110b”ではないと判定した場合(ステップS710:No)、向き情報が“**1b”であるか否かを判定する(ステップS711)。そして、向き情報が“**1b”であると判定した場合(ステップS711:Yes)、ステップS707の処理に進み、**1b”ではないと判定した場合(ステップS711:No)、ステップS703の処理に進む。
つまり、同一方向で継続して距離の調節を行っている場合には、同一方向の調節を継続させる。そうでない(例えば、向き情報が“110b”又は“001b”となった)場合は、最小値に到達したと判断し、次の変化に備えたアップデートのみを行う。なお、向き情報“001b”及び“110b”は、一回行き過ぎた後、戻したことを示し、最適な距離が設定されたことを示している。
その後、特定部306は、実行サイクルTを遅延情報として設定する(ステップS712)。その後、予め定められた値N(例えば、“8”)を回数に設定する(ステップS713)。
そして、更新部311が上述した処理手順で設定された、距離情報、向き情報、遅延情報及び回数を用いて、プリフェッチ情報テーブル301の該当エントリ情報を記憶させる更新を行う(ステップS714)。
上述した処理手順により、本実施の形態にかかる情報処理装置100の各CPUコアで、距離情報が適切な値になるよう調整が行われることになる。
つまり、本実施の形態にかかる情報処理装置100では、上述した構成により、実行頻度の高い命令に対する更新が最も有効に働くので、全体の性能向上に寄与する部分のプリフェッチ距離のプログラム実行時の最適化を実現できる。
また、本実施の形態は、CPU内に格納されるコアの数を制限するものではなく、4個より多くても良いし、4個より少ない数であっても良い。CPU内のコアの数が多くなるほど、CPUコアに基づいて3次キャッシュの配置が決定される傾向にあるため、本実施の形態で示した処理及び構成がより有効となる。なお、CPU内のコアが1つしかない場合であっても、上述した処理及び構成を適用することができる。
本実施の形態にかかる情報処理装置100では、プログラム実行時に、プリフェッチ情報テーブルの先読み距離を自動調整することで、データをキャッシュから読み出すことによる処理速度を向上できる。さらに、キャッシュにデータを格納されるタイミングが適切なタイミングとなるため、キャッシュの効率的な利用が可能となる。
つまり、本実施の形態にかかる情報処理装置100では、各CPUコアがプリフェッチを行うことによって、データの読み出し命令があった場合に逐次読み出しを行う場合に比べて処理応答速度を大幅に短縮できる。
つまり、本実施の形態にかかる情報処理装置100では、プリフェッチ命令による命令効率の低下を防ぐとともに、どの程度未来にアクセスするデータをプリフェッチするのかをプログラム実行時に、データの所在やアクセス遅延に適応して、自動調整するため、プログラムの実行効率を大幅に向上させることができる。
上述した処理及び構成は、メモリアクセスのレイテンシが一様でないマイクロプロセッサにおいてダイナミックに変化するデータの配置やシステムの状況に応じて、データのプリフェッチを最適なタイミングに自動的に調整できる。これにより、メモリアクセスのレイテンシを大幅に短縮することが可能となる。
本実施の形態にかかる情報処理装置100では、遅延情報の平均を取りながら距離情報等を更新する方式について説明した。しかしながら、このような方式に制限するものではなく、毎回、最新の遅延情報に基づいて距離情報等を更新してもよい。さらには、遅延情報をサイクルオーダーよりも荒い単位で取得して、プリフェッチ情報テーブルのビット幅を節約してもよい。さらには、向き情報の履歴も別の形式で示しても良い。
さらには、本実施の形態では、アドレスが増加方向のデータアクセスパターンの例について説明したが、減少方向へのアクセスパターンに対応する変形例も考えられる。つまり、プログラム実行しているときに、プリフェッチで利用される距離情報を最適化するよう自動的に調整できる技術であればよい。
また、本実施の形態で示した各構成は、CPUコア内のハードウェアで実現しても良いし、CPUコア内で実行されるソフトウェアで実現しても良い。
本実施の形態では、プリフェッチ付きロード命令の例について説明したが、プリフェッチ付きロード命令に制限するものではない。マイクロプロセッサによっては、ロード命令以外の命令をプリフェッチ命令として実装したものも存在する。このようなマイクロプロセッサについても、上述した実施の形態と同様の実装を行うことで、同様の機能を実現できる。
また、上述した各実施の形態に限定されるものではなく、以下に例示するような種々の変形が可能である。
(変形例)
上述した実施の形態では、複数のCPUがメインメモリ102を共通して利用する例について説明した。しかしながら、このような例に制限するものではない。そこで、変形例では、CPU毎に異なるメモリが備えている例について説明する。図8は、本変形例にかかる情報処理装置800における、CPU801〜804と周辺の構成を示すブロック図である。図8に示すように、CPU801〜804は、それぞれ接続されているとともに、実施の形態と同様に、複数のCPUコアを備えている。そして、CPU801〜804には、それぞれメモリ801〜804が接続されている。このような接続状況においては、各CPU811〜814内のCPUコアは、どのメモリ811〜814からデータを読み出すのかに応じて、かかる時間が異なる。
このような構成であっても、実施の形態と同様の処理を行うことで、適切なプリフェッチが行えるよう調整することができる。
このような変形例の構成に限らず、メニイコアのCPUが1つのみ備えた構成や、さらに多くのCPUを備えた構成であっても適用できる。
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、実施形態に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせても良い。
100、800 情報処理装置
101_1〜101_N、801〜804 CPU
102 メインメモリ
103 バス
111〜118 CPUコア
121〜124 1次キャッシュ
131〜134 2次キャッシュ
141、142 3次キャッシュ
301 プリフェッチ情報テーブル
302 命令シーケンサ
303 算出部
304 プリフェッチ実行部
305 取得部
306 特定部
307 テーブル制御部
311 更新部
811〜814 メモリ

Claims (5)

  1. プリフェッチ付きの読出命令を受け付ける受付手段と、
    プリフェッチ付きの読出命令を識別する識別情報と、当該読出命令による読み出し先のアドレスからプリフェッチ先のアドレスの算出に用いる距離情報と、を対応づけて記憶する記憶手段と、
    前記受付手段が受け付けた前記読出命令の読み出し先のアドレスと、前記記憶手段に記憶された前記読出命令の前記識別情報及び前記距離情報と、に基づいて、前記受付手段が受け付けた前記読出命令に付いていたプリフェッチによる読み出し先のアドレスを算出する算出手段と、
    この算出された前記アドレスに対して、プリフェッチを実行するプリフェッチ手段と、
    読出命令に従って、前記プリフェッチ手段でプリフェッチされたアドレスに対して読み出しを実行する実行手段と、
    前記実行手段による読み出しの完了までの遅延時間を取得する取得手段と、
    前記取得手段が取得した前記遅延時間に基づいて、次以降のプリフェッチで用いる距離情報を特定する特定手段と、
    前記特定手段により特定された前記距離情報を、プリフェッチ付きの前記読出命令を識別する識別情報と対応づけて、前記記憶手段に記憶させる更新を行う更新手段と、
    を備えることを特徴とする命令制御装置。
  2. 前記記憶手段は、前記実行手段による実行で前記読出命令の完了までの前記遅延時間を、さらに対応づけて記憶し、
    前記特定手段は、さらに、前記記憶手段に記録された前記遅延時間と、前記記憶手段に前記遅延時間を記録した後に、前記取得手段が取得した前記遅延時間と、の差異に基づいて、前記距離情報を特定すること、
    を特徴とした請求項1に記載の命令制御装置。
  3. 前記記憶手段は、さらに、前記距離情報を特定するまでに前記読み取り命令を受け付ける回数を、対応づけて記憶し、
    前記特定手段は、前記受付手段が前記読み取り命令を、前記記憶手段が記憶した前記回数を受け付けた場合に、前記距離情報を特定すること、
    を特徴とする請求項1又は2に記載の命令制御装置。
  4. 前記記憶手段は、さらに、前記読出命令の読み出し先のアドレスに対する前記距離情報の演算が加算か減算かを示した演算情報を記憶し、
    前記特定手段は、さらに、前記記憶手段に記憶された前記演算情報に従った演算を、前記距離情報と、予め定められた値と、の間で行うこと、
    を特徴とする請求項1乃至3のいずれか1つに記載の命令制御装置。
  5. 命令制御装置で実行される命令制御方法であって、
    命令制御装置は、プリフェッチ付きの読出命令を識別する識別情報と、当該読出命令による読み出し先のアドレスからプリフェッチ先のアドレスの算出に用いる距離情報と、を対応づけて記憶する記憶手段を備え、
    受付手段が、プリフェッチ付きの読出命令を受け付ける受付ステップと、
    算出手段が、前記受付ステップが受け付けた前記読出命令の読み出し先のアドレスと、前記記憶手段に記憶された前記読出命令の前記識別情報及び前記距離情報と、に基づいて、前記受付手段が受け付けた前記読出命令に付いていたプリフェッチによる読み出し先のアドレスを算出する算出ステップと、
    プリフェッチ手段が、算出された前記アドレスに対して、プリフェッチを実行するプリフェッチ実行ステップと、
    実行手段が、読出命令に従って、前記プリフェッチ手段でプリフェッチされたアドレスに対して読み出しを実行する実行ステップと、
    取得手段が、前記実行ステップによる読み出しの完了までの遅延時間を取得する取得ステップと、
    特定手段が、前記取得ステップが取得した前記遅延時間に基づいて、次以降のプリフェッチで用いる距離情報を特定する特定ステップと、
    更新手段が、前記特定ステップにより特定された前記距離情報を、プリフェッチ付きの前記読出命令を識別する識別情報と対応づけて、前記記憶手段に記憶させる更新を行う更新ステップと、
    を含むことを特徴とする命令制御方法。
JP2010150069A 2010-06-30 2010-06-30 命令制御装置、及び命令制御方法 Pending JP2012014417A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010150069A JP2012014417A (ja) 2010-06-30 2010-06-30 命令制御装置、及び命令制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010150069A JP2012014417A (ja) 2010-06-30 2010-06-30 命令制御装置、及び命令制御方法

Publications (1)

Publication Number Publication Date
JP2012014417A true JP2012014417A (ja) 2012-01-19

Family

ID=45600773

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010150069A Pending JP2012014417A (ja) 2010-06-30 2010-06-30 命令制御装置、及び命令制御方法

Country Status (1)

Country Link
JP (1) JP2012014417A (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000250808A (ja) * 1999-02-25 2000-09-14 Nec Corp 構造データをプリフェッチするための処理装置を動作させる方法
JP2004038345A (ja) * 2002-06-28 2004-02-05 Fujitsu Ltd プリフェッチ制御装置、情報処理装置及びプリフェッチ制御方法
JP2009230374A (ja) * 2008-03-21 2009-10-08 Fujitsu Ltd 情報処理装置,プログラム,及び命令列生成方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000250808A (ja) * 1999-02-25 2000-09-14 Nec Corp 構造データをプリフェッチするための処理装置を動作させる方法
JP2004038345A (ja) * 2002-06-28 2004-02-05 Fujitsu Ltd プリフェッチ制御装置、情報処理装置及びプリフェッチ制御方法
JP2009230374A (ja) * 2008-03-21 2009-10-08 Fujitsu Ltd 情報処理装置,プログラム,及び命令列生成方法

Similar Documents

Publication Publication Date Title
US8443171B2 (en) Run-time updating of prediction hint instructions
JP4837305B2 (ja) マイクロプロセッサ及びマイクロプロセッサの制御方法
US9201798B2 (en) Processor instruction based data prefetching
KR20210019584A (ko) 다중 테이블 분기 타겟 버퍼
US6910104B2 (en) Icache-based value prediction mechanism
US10402203B2 (en) Determining a predicted behaviour for processing of instructions
US20090276575A1 (en) Information processing apparatus and compiling method
US6892280B2 (en) Multiprocessor system having distributed shared memory and instruction scheduling method used in the same system
JP3973129B2 (ja) キャッシュメモリ装置及びそれを用いた中央演算処理装置
US11327768B2 (en) Arithmetic processing apparatus and memory apparatus
US9971695B2 (en) Apparatus and method for consolidating memory access prediction information to prefetch cache memory data
US8166252B2 (en) Processor and prefetch support program
US11474946B2 (en) Calculator and calculation method
JP2012014417A (ja) 命令制御装置、及び命令制御方法
JP5251688B2 (ja) コンパイラプログラムおよびコンパイラ装置
JP7152376B2 (ja) 分岐予測回路、プロセッサおよび分岐予測方法
JP5206385B2 (ja) バウンダリ実行制御システム、バウンダリ実行制御方法、及びバウンダリ実行制御プログラム
JP5116275B2 (ja) 演算処理装置、情報処理装置及び演算処理装置の制御方法
US20170147264A1 (en) Image processing apparatus and image processing method
JP2010079612A (ja) チャネルコマンドワード先読み処理プログラム及びチャネルコマンドワード先読み処理装置
JP3795055B1 (ja) 値予測装置、マルチプロセッサシステムおよび値予測方法
JP6260456B2 (ja) 演算処理装置及び演算処理装置の制御方法
US20210124587A1 (en) Methods and apparatus for handling processor load instructions
KR20240067955A (ko) 추측적으로 명령어를 실행하기 위한 약한 캐시 라인 무효화 요청
JP3748191B2 (ja) 計算機とその制御方法

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120131