(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024136382
(43)【公開日】2024-10-04
(54)【発明の名称】演算装置およびプリフェッチ制御方法、プリフェッチ制御プログラム
(51)【国際特許分類】
G06F 12/0862 20160101AFI20240927BHJP
G06F 12/0897 20160101ALI20240927BHJP
【FI】
G06F12/0862 105
G06F12/0897 100
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2023047479
(22)【出願日】2023-03-24
(71)【出願人】
【識別番号】000004260
【氏名又は名称】株式会社デンソー
(71)【出願人】
【識別番号】000003207
【氏名又は名称】トヨタ自動車株式会社
(71)【出願人】
【識別番号】520124752
【氏名又は名称】株式会社ミライズテクノロジーズ
(74)【代理人】
【識別番号】110000028
【氏名又は名称】弁理士法人明成国際特許事務所
(72)【発明者】
【氏名】湊 祥太
(72)【発明者】
【氏名】滝澤 哲郎
【テーマコード(参考)】
5B205
【Fターム(参考)】
5B205JJ13
5B205MM03
5B205NN92
5B205UU32
(57)【要約】
【課題】ランダムアクセスにおいてヒット率を向上できる技術を提供する。
【解決手段】演算装置100は、第2記憶部14と、第2記憶部に格納されたデータの一部のデータが格納され、第2記憶部よりもデータ容量が小さい第1記憶部13と、演算部11と、第1記憶部から演算部が要求した第1データを取得し、第1記憶部に第1データが格納されていない場合に第2記憶部から第1データを取得する制御部12と、制御部が第2記憶部に格納されている各データを取得した直後に取得したデータを示す次データ情報を記録するテーブル15と、制御部が第1データを取得した場合に、テーブルを用いて、前回制御部が第1データを取得した直後に要求したデータである第2データを第1記憶部に予め格納するプリフェッチを実行するプリフェッチ制御部31と、を備える。
【選択図】
図1
【特許請求の範囲】
【請求項1】
演算装置(100)であって、
第2記憶部(14)と、
前記第2記憶部に格納されたデータの一部のデータが格納され、前記第2記憶部よりもデータ容量が小さい第1記憶部(13)と、
演算部(11)と、
前記第1記憶部から前記演算部が要求した第1データを取得し、前記第1記憶部に前記第1データが格納されていない場合に前記第2記憶部から前記第1データを取得する制御部(12)と、
前記制御部が前記第2記憶部に格納されている各データを取得した直後に取得したデータを示す次データ情報を記録するテーブル(15)と、
前記制御部が前記第1データを取得した場合に、前記テーブルを用いて、前回前記制御部が前記第1データを取得した直後に要求したデータである第2データを前記第1記憶部に予め格納するプリフェッチを実行するプリフェッチ制御部(31)と、を備える、演算装置。
【請求項2】
請求項1に記載の演算装置であって、
前記プリフェッチ制御部は、前記テーブルに前記制御部が取得したデータに対応づけられた前記次データ情報が記録されていない場合、前記プリフェッチを実行しない、演算装置。
【請求項3】
請求項1または請求項2に記載の演算装置であって、
前記テーブルは、前記次データ情報の確度が予め定められた閾値以上であるか否かを示す有効情報を格納し、
前記プリフェッチ制御部は、前記第1データに対応づけられた前記有効情報が前記確度が前記閾値以上であることを示す場合に、前記プリフェッチを実行する、演算装置。
【請求項4】
請求項3に記載の演算装置であって、
前記有効情報は、前記第1データが前記第2記憶部に格納されていない場合において、前記演算部が前記第1データを要求した直後に再度前記1データを要求した場合に、前記第1データに対応づけられた前記次データ情報の前記確度が前記閾値以上でないことを示す、演算装置。
【請求項5】
演算装置が実行するプリフェッチ制御方法であって、
第2記憶部にデータを格納する第2格納工程と
前記第2記憶部に格納されたデータの一部のデータが格納され、前記第2記憶部よりもデータ容量が小さい第1記憶部にデータを格納する第1格納工程と、
演算処理を行う演算工程と、
前記第1記憶部から前記演算工程において要求された第1データを取得し、前記第1記憶部に前記第1データが格納されていない場合に前記第2記憶部から前記第1データを取得する取得工程と、
前記取得工程において前記第2記憶部に格納されている各データを取得した直後に取得したデータを示す次データ情報を格納するテーブルを用いて、前回前記取得工程において前記第1データが取得された直後に取得されたデータである第2データを前記第1記憶部に予め格納するプリフェッチ工程と、を含む、プリフェッチ制御方法。
【請求項6】
プリフェッチ制御プログラムであって、
第2記憶部にデータを格納する第2格納機能と
前記第2記憶部に格納されたデータの一部のデータが格納され、前記第2記憶部よりもデータ容量が小さい第1記憶部にデータを格納する第1格納機能と、
演算処理を行う演算機能と、
前記第1記憶部から前記演算機能において要求された第1データを取得し、前記第1記憶部に前記第1データが格納されていない場合に前記第2記憶部から前記第1データを取得する取得機能と、
前記取得機能において前記第2記憶部に格納されている各データを取得した直後に取得したデータを示す次データ情報を格納するテーブルを用いて、前回前記取得機能において前記第1データが取得された直後に取得されたデータである第2データを前記第1記憶部に予め格納するプリフェッチ機能と、をコンピュータに実現させる、プリフェッチ制御プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、演算装置およびプリフェッチ制御方法、プリフェッチ制御プログラムに関する。
【背景技術】
【0002】
メインメモリからキャッシュメモリに予めデータを格納するプリフェッチ技術が知られている。特許文献1には、プロセッサからキャッシュメモリへ要求したデータのアドレスと、過去にプロセッサからキャッシュメモリへ要求したデータのアドレスとの差分を用いて、プリフェッチを行う技術が記載されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、プロセッサが一定のアドレス差で順にアクセス要求をしない場合、すなわち、ランダムなアドレスにアクセス要求をするランダムアクセスを行う場合、特許文献1に記載のプリフェッチ技術では、プロセッサが要求したデータがキャッシュメモリに格納されている割合であるヒット率が向上しない。そのため、ランダムアクセスにおいてヒット率を向上できる技術が望まれていた。
【課題を解決するための手段】
【0005】
本開示の一形態によれば、演算装置(100)が提供される。演算装置は、第2記憶部(14)と、前記第2記憶部に格納されたデータの一部のデータが格納され、前記第2記憶部よりもデータ容量が小さい第1記憶部(13)と、演算部(11)と、前記第1記憶部から前記演算部が要求した第1データを取得し、前記第1記憶部に前記第1データが格納されていない場合に前記第2記憶部から前記第1データを取得する制御部(12)と、前記制御部が前記第2記憶部に格納されている各データを取得した直後に取得したデータを示す次データ情報を記録するテーブル(15)と、前記制御部が前記第1データを取得した場合に、前記テーブルを用いて、前回前記制御部が前記第1データを取得した直後に要求したデータである第2データを前記第1記憶部に予め格納するプリフェッチを実行するプリフェッチ制御部(31)と、を備える。
【0006】
この形態の演算装置によれば、前回演算部が第1データを要求した直後に要求したデータである第2データをプリフェッチするため、2以上のデータにランダムアクセスするデータ要求のパターンを繰り返す場合において、ヒット率を向上することができる。
【図面の簡単な説明】
【0007】
【
図2】プリフェッチ制御処理の一例を示したフローチャートである。
【
図3】テーブル作成工程の詳細の一例を示したフローチャートである。
【
図4】プリフェッチ工程の詳細の一例を示したフローチャートである。
【
図5】ステップS140直後の第1記憶部等の説明図である。
【
図6】ステップS170における第1記憶部等の説明図である。
【
図7】ステップS140直後の第1記憶部等の他の説明図である。
【
図8】ステップS250直後の第1記憶部等の説明図である。
【
図9】ステップS170直後の第1記憶部等の説明図である。
【
図10】プリフェッチ制御処理が終了した直後の第1記憶部等の説明図である。
【
図11】ステップS125直後の第1記憶部等の説明図である。
【
図12】ステップS360直後の第1記憶部等の説明図である。
【発明を実施するための形態】
【0008】
A.第1実施形態:
図1に示すように、演算装置100は、CPU10と、メモリ20と、プリフェッチ制御回路部30とを備える。本実施形態において、演算装置100は、演算処理を行う装置である。演算装置100は、クラウド上に実装されていてもよい。CPU10は、メモリ20にインストールされたプログラムを実行することによって、演算部11や制御部12の機能を実現し、第1記憶部13や第2記憶部14、メモリ20に格納されたデータを用いて演算処理を行う。プリフェッチ制御回路部30は、CPUや、RAM、ROMにより構成されたマイクロコンピュータ等からなり、RAMやROM、メモリに予めインストールされたプログラムをマイクロコンピュータが実行することによって、プリフェッチ制御部31の機能を実現し、第1記憶部13および第2記憶部14、メモリ20の管理を行う。
【0009】
演算部11は、データを用いて、入力された命令に対する演算を実行し、演算結果を出力する演算処理を行う。演算部11は、演算処理に用いるデータを制御部12に要求する。演算処理を「演算工程」ともいう。
【0010】
制御部12は、演算部11から要求されたデータを第1記憶部13や第2記憶部14、メモリ20から取得する。より具体的には、制御部12は、まず、第1記憶部13からデータを取得する。第1記憶部13に演算部11から要求されたデータが格納されていなかった場合、制御部12は、第2記憶部14からデータを取得する。この一連の処理を「取得工程」ともいう。第2記憶部14に演算部11から要求されたデータが格納されていなかった場合、制御部12は、メモリ20からデータを取得する。
【0011】
第1記憶部13および第2記憶部14には、演算部11が演算処理に用いるデータが格納されるキャッシュメモリである。第1記憶部13は、第2記憶部14よりも演算部11からのデータ要求時におけるアクセス時間が短く、第2記憶部14よりもデータ容量が小さい。第1記憶部13は、1次キャッシュメモリやL1キャッシュともいう。第2記憶部14は、2次キャッシュメモリやL2キャッシュともいう。また、第1記憶部13には、第2記憶部14に格納されたデータの一部のデータが格納される。すなわち、第2記憶部14は、第1記憶部13が格納している全データを格納しているインクルージョンキャッシュである。第2記憶部14は、テーブル15を有する。
【0012】
テーブル15は、第2記憶部14に格納されている各データに対応づけられた、次データ情報を記録する。「次データ情報」は、制御部12が各データを取得した直後に取得したデータを示す情報である。すなわち、演算部11が各データを要求した直後に要求したデータを示す情報である。本実施形態において、テーブル15は、次データ情報に対応づけた、各次データ情報の確度が予め定められた閾値以上であるか否かを示す第1有効情報を記録する。次データ情報の確度が閾値以上である場合、第1有効情報として「有効」が記録される。次データ情報の確度が閾値未満である場合、第1有効情報として「無効」が記録される。
【0013】
本実施形態において、第1有効情報は、演算部11が要求したデータである第1データが第2記憶部14に格納されていない場合において、演算部11が第1データを要求した直後に再度第1データを要求した場合に、第1データに対応づけられた次データ情報の確度が閾値未満であることを示すよう記録される。すなわち、第1有効情報として「無効」が記録される。
【0014】
また、本実施形態において、テーブル15は、第2記憶部14において演算部11が要求したデータが格納されているラインのインデックスを示す現インデックスCAIと、第2記憶部14において演算部11が直前に要求したデータが格納されているラインのインデックスを示す前インデックスLAIと、前インデックスLAIが有効であるか否かを示す第2有効情報とを記録する。テーブル15が初期化された場合において、第2情報として「無効」が記録される。
【0015】
プリフェッチ制御部31は、テーブル15を用いてプリフェッチを制御する。プリフェッチ制御部31は、演算部11が要求したデータである第1データが第2記憶部14に格納されている場合において、演算部11からの要求に先立って、前回演算部が第1データを要求した直後に要求したデータである第2データを第1記憶部13に予め格納するプリフェッチを実行する。
【0016】
本実施形態において、プリフェッチ制御部31は、テーブル15に制御部12が取得したデータに対応づけられた次データ情報が記録されていない場合、プリフェッチを実行しない。また、プリフェッチ制御部31は、第1データに対応づけられた有効情報が有効を示す場合に、プリフェッチを実行する。
【0017】
図2に示すプリフェッチ制御処理は、プリフェッチ制御部31の制御に応じて、プリフェッチを実行する処理である。この処理は、演算部11が演算処理を実行し、データを要求する際に繰り返し実行される。
【0018】
演算装置100は、ステップS100において、演算部11が要求したデータである第1データが第1記憶部13に格納されているか否かを判定する。第1データが第1記憶部13に格納されている場合、演算装置100は、ステップS145の処理に進む。一方、第1データが第1記憶部13に格納されていない場合、演算装置100は、ステップS110の処理に進む。
【0019】
演算装置100は、ステップS110において、第1データが第2記憶部14に格納されているか否かを判定する。第1データが第2記憶部14に格納されている場合、演算装置100は、ステップS125の処理に進む。一方、第1データが第2記憶部14に格納されていない場合、演算装置100は、ステップS120の処理に進む。
【0020】
演算装置100は、ステップ120において、メモリ20から取得した第1データを第1記憶部13に格納する。
【0021】
演算装置100は、ステップ130において、メモリ20から取得した第1データを第2記憶部14に格納する。この工程を「第2格納工程」ともいう。なお、ステップS120とステップS130とはこの順に限らず、任意の順序で行うことができ、並行して行ってもよい。
【0022】
演算装置100は、ステップS140において、現インデックスCAIに、ステップS130においてデータを格納した第2記憶部14におけるラインのインデックスを記録する。
【0023】
演算装置100は、ステップS150において、テーブル15を作成する。この工程を「テーブル作成工程」ともいう。テーブル15の作成の詳細については後述する。
【0024】
演算装置100は、ステップS160において、演算部11の演算処理が終了したか否かを判定する。演算部11の演算処理が終了した場合、すなわち、演算部11がデータの要求を行わない場合、プリフェッチ処理を終了する。一方、演算部11の演算処理が終了していない場合、すなわち、演算部11がデータの要求を行う場合、ステップS170において前インデックスLAIを記録し、ステップS100の処理に戻る。つまり、演算装置100は、演算部11の演算処理が終了するまで、ステップS100~S170の処理を繰り返す。
【0025】
演算装置100は、ステップ125において、第2記憶部14から取得した第1データを第1記憶部13に格納する。なお、ステップS120とステップS125とを併せて、「第1格納工程」ともいう。
【0026】
演算装置100は、ステップS145において、現インデックスCAIに、第2記憶部14において演算部11が要求したデータが格納されているラインのインデックスを記録する。
【0027】
演算装置100は、ステップS155において、プリフェッチを実行する。この工程を「プリフェッチ工程」ともいう。プリフェッチの詳細については後述する。演算装置100は、ステップS155の処理の後、ステップS160の処理に進む。
【0028】
図3に示すテーブル作成工程の処理は、
図2に示すステップS150において、演算装置100がテーブル15を作成する一連の処理である。演算装置100は、ステップS200において、第2有効情報が「有効」であり、かつ、次データ情報において現インデックスCAIが記録されているか否かを判定する。第2有効情報が「有効」であり、かつ、次データ情報において現インデックスCAIが記録されている場合、演算装置100は、ステップS210の処理に進む。一方、第2有効情報が「無効」である、または、次データ情報において現インデックスCAIが記録されていない場合、演算装置100は、ステップS220の処理に進む。
【0029】
演算装置100は、ステップS210において、テーブル15における次データ情報において現インデックスCAIが記録されているインデックスの第1有効情報を無効にする。テーブル15における次データ情報において現インデックスCAIが記録されているインデックスを参照インデックスRIともいう。
【0030】
演算装置100は、ステップS220において、次データ情報における現インデックスCAIの第1有効情報に「無効」を記録する。なお、ステップS210とステップS220とはこの順に限らず、任意の順序で行うことができ、並行して行ってもよい。
【0031】
演算装置100は、ステップS230において、第2情報が有効を示しているか否かを判定する。第2有効情報が有効を示している場合、演算装置100は、ステップS240の処理に進む。一方、第2有効情報が無効を示している場合、演算装置100は、テーブル作成処理を終了する。
【0032】
演算装置100は、ステップS240において、テーブル15における前インデックスLAIの次データ情報に記録されたインデックスを取得する。すなわち、第2記憶部14における、演算部11が第1データを要求する直前に要求したデータが格納されているラインのインデックスを取得する。テーブル15における前インデックスLAIの次データ情報に記録されたインデックスを過去インデックスPAIともいう。
【0033】
演算装置100は、ステップS250において、テーブル15におけるステップS240で取得した過去インデックスPAIの次データ情報に現インデックスCAIを記録する。
【0034】
演算装置100は、ステップS260において、テーブル15におけるステップS240で取得した過去インデックスPAIの第1有効情報に「有効」を記録する。なお、ステップS250とステップS260とはこの順に限らず、任意の順序で行うことができ、並行して行ってもよい。
【0035】
図4に示すプリフェッチ工程の処理は、
図2に示すステップS155において、演算装置100がプリフェッチを実行する一連の処理である。
【0036】
演算装置100は、ステップS300において、テーブル15における現インデックスCAIの第1有効情報の確度が閾値以上か否かを判定する。第1有効情報の確度が閾値以上である場合、すなわち第1有効情報が「有効」を示している場合、演算装置100は、ステップS310の処理に進む。一方、第1有効情報の確度が閾値未満である場合、すなわち第1有効情報が「無効」を示している場合、演算装置100は、ステップS330の処理に進む。
【0037】
演算装置100は、ステップS310において、テーブル15における現インデックスCAIの次データ情報に格納されているインデックスを取得する。すなわち、演算部11が前回第1データを要求した直後に要求したデータが格納されているラインのインデックスを取得する。テーブル15における現インデックスCAIの次データ情報に格納されているインデックスを次インデックスNAIともいう。
【0038】
演算装置100は、ステップS320において、第2記憶部14におけるステップS320で取得した次インデックスNAIのラインのデータを第1記憶部13へ格納する。すなわち、プリフェッチを行う。
【0039】
演算装置100は、ステップS330において、現インデックスCAIと前インデックスLAIとが同じか否かを判定する。同じでない場合、すなわち、演算装置100が連続して同じデータを要求していない場合、演算装置100は、ステップS340の処理に進む。一方、同じ場合、すなわち、演算装置100が連続して同じデータを要求した場合、演算装置100は、プリフェッチ処理を終了する。
【0040】
演算装置100は、ステップS340において、テーブル15における前インデックスLAIの次データ情報に記録されたインデックスである過去インデックスPAIを取得する。
【0041】
演算装置100は、ステップS350において、テーブル15におけるステップS340で取得したインデックスの次データ情報に現インデックスCAIを記録する。
【0042】
演算装置100は、ステップS360において、テーブル15におけるステップS340で取得した過去インデックスPAIの第1有効情報に「有効」を記録する。なお、ステップS350とステップS360とはこの順に限らず、任意の順序で行うことができ、並行して行ってもよい。
【0043】
図5~
図12に示す第1記憶部13および第2記憶部14、テーブル15は、プリフェッチ制御処理の各工程におけるの説明図である。本実施形態において、第1記憶部13および第2記憶部14は、演算部11が要求したデータのアドレスから連続する4つのアドレスの各データが一つのラインに格納される。
図5~
図12において、第1記憶部13および第2記憶部14が格納するデータは、各データがメモリ20において格納されているアドレスによって表される。また、本実施形態において、第1記憶部13および第2記憶部14は、FIFO(First In First Out)の方式で、データが格納される。より具体的には、第1記憶部13および第2記憶部14は、新たにデータが格納される場合、各キャッシュ内の最も古いデータ上に新しいデータが上書きされる。
【0044】
以下では、第1記憶部13および第2記憶部14、テーブル15が初期化された状態において、演算部11が要求するデータのアドレスが「0x0000、0x0034、0x0010、0x0066、0x0008、0x000C、0x0028、0x00CC」の順に8個である場合を例として説明する。第1記憶部13および第2記憶部14、テーブル15の初期化は、演算装置100の起動時や、メモリ20を空にする指示がある場合に行われる。また、テーブル15が初期化された場合において、第2有効情報は「無効」である。
【0045】
図5に示す第1記憶部13および第2記憶部14、テーブル15は、ステップS140(
図2参照)直後の状態を示している。第1記憶部13のインデックス「0」のラインには、ステップS120において「0x0000」のデータが格納されている。テーブル15が初期化された状態でプリフェッチ制御処理が実行されたため、テーブル15に「0x0000」に対応づけられた次データ情報が記録されておらず、プリフェッチ制御部31は、プリフェッチを実行していない。第2記憶部14のインデックス「0」のラインには、ステップS130において「0x0000」のデータが格納されている。テーブル15の現インデックスCAIには、ステップS140において、ステップS130において第2記憶部14における「0x0000」のデータが格納されたラインのインデックスである「0」が記録されている。
【0046】
図6に示すように、ステップS170(
図2参照)において、前インデックスLAIに、現インデックスCAIに記録されたインデックスである「0」が記録され、第2有効情報に「有効」が記録される。
【0047】
続いて、演算部11が要求する「0x0034」のアドレスのデータもヒットしないため、演算装置100は、ステップS120の処理に進む。
図7は、ステップS140(
図2参照)直後の第1記憶部13および第2記憶部14、テーブル15を示している。第1記憶部13のインデックス「1」のラインには、ステップS120において「0x0034」のアドレスのデータが格納されている。テーブル15に「0x0034」に対応づけられた次データ情報が記録されておらず、プリフェッチ制御部31は、プリフェッチを実行していない。第2記憶部14のインデックス「1」のラインには、ステップS130において「0x0034」のアドレスのデータが格納されている。テーブル15の現インデックスCAIには、ステップS140において、ステップS130において第2記憶部14における「0x0034」のアドレスのデータが格納されたラインのインデックスである「1」が記録されている。
【0048】
第2有効情報が有効を示しているため、演算装置100は、ステップS240の処理に進む。
図8に示すように、ステップS240(
図3参照)において、テーブル15における前インデックスLAIのインデックスである「0」の次データ情報に現インデックスCAIのインデックスである「1」が記録され、ステップS250において、テーブル15における前インデックスLAIのインデックスである「0」の第1有効情報に「有効」が記録される。
【0049】
図9に示すように、ステップS170(
図2参照)において、前インデックスLAIに、現インデックスCAIに記録されたインデックスである「1」が記録され、第2有効情報に「有効」が記録される。
【0050】
演算部11が演算処理を終了してプリフェッチ制御処理が終了した場合、より具体的には演算部11が「0x001C」のデータを要求し終えた場合、第1記憶部13および第2記憶部14、テーブル15には、
図10に示すように、データが格納される。第2記憶部14には、「0x0000、0x0034、0x0010、0x0066、0x0008、0x000C、0x0028、0x00CC」のデータが順に格納されている。第1記憶部13には、演算部11が要求するデータのアドレスが「0x0008、0x000C、0x0028、0x00CC」のデータが順に格納されている。
【0051】
再び、演算部11が要求するデータのアドレスが「0x0000、0x0034、0x0010、0x0066、0x0008、0x000C、0x0028、0x00CC」である場合、演算部11が要求した「0x0000」のデータは第1記憶部13には格納されていないものの、第2記憶部14には格納されている。そのため、演算装置100は、ステップS125(
図2参照)の処理に進み、第2記憶部14から「0x0000」のデータを取得し、第1記憶部13に格納する。
図11に示すように、第1記憶部13のインデックス「0」のラインに「0x0000、0x0001、0x0002、0x0003」のデータが格納される。
【0052】
演算装置100は、ステップS310(
図4参照)において、テーブル15における現インデックスCAIのインデックスである「0」の次データ情報である「1」を取得し、ステップS320において、第2記憶部14におけるインデックス「1」のデータである「0x0034、0x0035、0x0036、0x0037」をプリフェッチする。
【0053】
図12に示すように、ステップS360直後の第1記憶部13のインデックス「1」のラインには「0x0034、0x0035、0x0036、0x0037」のデータが格納されている。また、テーブル15のインデックス「7」の次データ情報に「0」が記録され、第1有効情報に「有効」が記録されている。
【0054】
演算部11が続いて要求する「0x0034」のデータは、既に第1記憶部13にプリフェッチされている。以降も、演算部11の要求に先立って、「0x0010、0x0066、0x0008、0x000C、0x0028、0x00CC」のデータがプリフェッチされる。
【0055】
以上で説明した本実施形態の演算装置100によれば、プリフェッチ制御部31は、前回演算部が第1データを要求した直後に要求したデータである第2データをプリフェッチする。そのため、2以上のデータにランダムアクセスするデータ要求のパターンを繰り返す場合において、ヒット率を向上することができる。
【0056】
また、プリフェッチ制御部31は、テーブル15に制御部12が取得したデータに対応づけられた次データ情報が記録されていない場合、プリフェッチを実行しない。そのため、不必要にプリフェッチを行うことを抑制できる。
【0057】
また、プリフェッチ制御部31は、次データ情報が有効で有る場合にプリフェッチを行う。より具体的には、プリフェッチ制御部31は、ステップS300において、テーブル15における現インデックスCAIの第1有効情報が有効を示している場合に、ステップS320においてプリフェッチを実行する。そのため、不必要にプリフェッチを行うことを抑制できる。
【0058】
また、第1有効情報は、第2記憶部14に格納されていないデータを、演算部11が連続要求した場合に、そのデータの次データ情報を無効であるとテーブル15に記録する。そのため、不必要にプリフェッチを行うことを抑制できる。
【0059】
B.他の実施形態:
(B1)上述した実施形態において、第1記憶部13は1次キャッシュメモリであり、第2記憶部14は2次キャッシュメモリである。これに限らず、第1記憶部13が第2記憶部14よりも上位の記憶部であればよい。例えば、第1記憶部13が2次キャッシュメモリであり、第2記憶部14が3次キャッシュメモリでもよい。また、第1記憶部13が2次キャッシュメモリであり、第2記憶部14がメインメモリ、すなわちメモリ20でもよい。
【0060】
(B2)上述した実施形態において、テーブル15は、第2記憶部14に記憶されている。これに限らず、テーブル15は、プリフェッチ制御回路部30が有する記憶領域に記憶されていてもよい。
【0061】
(B3)上述した実施形態において、テーブル15は、第1有効情報を格納している。これに限らず、テーブル15は、第1有効情報を省略してもよい。この場合、プリフェッチ制御部31は、第1データが第2記憶部14に格納されている場合において、第1データに対応づけられた第2データを常に第1記憶部13に予め格納する。
【0062】
(B4)上述した実施形態において、プリフェッチ制御部31は、テーブル15に制御部12が取得したデータに対応づけられた次データ情報が記録されていない場合、プリフェッチを実行していない。これに限らず、プリフェッチ制御部31は、テーブル15に制御部12が取得したデータに対応づけられた次データ情報が記録されていない場合であっても、プリフェッチを実行してもよい。例えば、プリフェッチ制御部31は、テーブル15に制御部12が取得したデータに対応づけられた次データ情報が記録されていない場合、周知のプリフェッチ技術を用いて、任意のデータを予め第1記憶部13に格納してもよい。
【0063】
(B5)上述した実施形態において、第1有効情報は、第1データが第2記憶部14に格納されていない場合において、演算部11が第1データを要求した直後に再度第1データを要求した場合に、第1データに対応づけられた次データ情報が無効であることを示すよう記録される。これに限らず、例えば、第2記憶部14へのデータの格納がランダムに行われる場合や、他の演算処理によって、第2記憶部14のデータが書き換えられる場合に、書き換えられたラインのインデックスを次データ情報として記録していた次データ情報に対応づけられた第1有効情報が無効を示すよう記録されてもよい。例えば、制御部12は、第2記憶部14へのデータの格納が、演算部11の実行している演算処理におけるデータ要求により行われたものか否かを判定する。第1有効情報は、この判定結果に応じて、有効か無効かを判定され、記録される。
【0064】
本開示は、上述の実施形態に限られるものではなく、その趣旨を逸脱しない範囲において種々の構成で実現することができる。例えば発明の概要の欄に記載した各形態中の技術的特徴に対応する実施形態中の技術的特徴は、上述した課題を解決するために、あるいは上述の効果の一部又は全部を達成するために、適宜、差し替えや組み合わせを行うことが可能である。また、その技術的特徴が本明細書中に必須なものとして説明されていなければ、適宜削除することが可能である。
【0065】
本開示に記載のプリフェッチ制御回路部30及びその手法は、コンピュータプログラムにより具体化された一つ乃至は複数の機能を実行するようにプログラムされたプロセッサ及びメモリを構成することによって提供された専用コンピュータにより、実現されてもよい。あるいは、本開示に記載のプリフェッチ制御回路部30及びその手法は、一つ以上の専用ハードウエア論理回路によってプロセッサを構成することによって提供された専用コンピュータにより、実現されてもよい。もしくは、本開示に記載のプリフェッチ制御回路部30及びその手法は、一つ乃至は複数の機能を実行するようにプログラムされたプロセッサ及びメモリと一つ以上のハードウエア論理回路によって構成されたプロセッサとの組み合わせにより構成された一つ以上の専用コンピュータにより、実現されてもよい。また、コンピュータプログラムは、コンピュータにより実行されるインストラクションとして、コンピュータ読み取り可能な非遷移有形記録媒体に記憶されていてもよい。
【符号の説明】
【0066】
10…CPU、11…演算部、12…制御部、13…第1記憶部、14…第2記憶部、15…テーブル、20…メモリ、30…プリフェッチ制御回路部、31…プリフェッチ制御部、100…演算装置