(57)【要約】【課題】キャッシュヒット率を向上させ、リード速度を向上させることを課題とする。【解決手段】演算処理装置は、演算サイクル区間毎に、演算のためにリードする各アドレスのリード回数を集計し、リード回数に応じて、演算サイクル区間毎にキャッシュロックするアドレスを決定するロックアドレス決定部（１３１）と、演算サイクル区間毎のリード要求のアドレスが演算サイクル区間毎のキャッシュロックするアドレスである場合には、リード要求のアドレスのデータをキャッシュメモリ（１４２）のロック領域に格納し、演算サイクル区間毎のリード要求のアドレスが演算サイクル区間毎のキャッシュロックするアドレスでない場合には、リード要求のアドレスのデータをキャッシュメモリの非ロック領域に格納するキャッシュメモリ制御部（１３４，１３５）と、リード要求に応じて、キャッシュメモリに格納されたデータを基に演算を行う演算部（１２４）を有する。【選択図】図１
2019114013.tif 000002
【特許請求の範囲】
【請求項１】
ロック領域と非ロック領域を含むキャッシュメモリと、
演算サイクル区間毎に、演算のためにリードする各アドレスのリード回数を集計し、前記リード回数に応じて、前記演算サイクル区間毎にキャッシュロックするアドレスを決定するロックアドレス決定部と、
前記演算サイクル区間毎のリード要求のアドレスが前記演算サイクル区間毎のキャッシュロックするアドレスである場合には、前記リード要求のアドレスのデータを前記キャッシュメモリのロック領域に格納し、前記演算サイクル区間毎のリード要求のアドレスが前記演算サイクル区間毎のキャッシュロックするアドレスでない場合には、前記リード要求のアドレスのデータを前記キャッシュメモリの非ロック領域に格納し、前記キャッシュメモリからの追い出しを行う場合には、前記キャッシュメモリのロック領域からの追い出しを行わず、前記キャッシュメモリの非ロック領域からの追い出しを行うキャッシュメモリ制御部と、
前記リード要求に応じて、前記キャッシュメモリに格納されたデータを基に演算を行う演算部と
を有することを特徴とする演算処理装置。
【請求項２】
前記ロックアドレス決定部は、前記演算サイクル区間毎に、前記リード回数が多いランキングのアドレスのうちの上位の所定数のアドレスを前記キャッシュロックするアドレスとして決定することを特徴とする請求項１に記載の演算処理装置。
【請求項３】
前記ロックアドレス決定部は、前記演算サイクル区間毎に、前記リード回数が第１の閾値より多いアドレスの数が、第２の閾値より少ない場合、前記リード回数が多いランキングのアドレスのうちの上位の所定数のアドレスを前記キャッシュロックするアドレスとして決定することを特徴とする請求項２に記載の演算処理装置。
【請求項４】
前記ロックアドレス決定部は、前記演算サイクル区間の途中で、前記リード回数が多いランキングのアドレスのうちの上位の所定数のアドレスが変化する場合には、前記演算サイクル区間のキャッシュロック機能を無効にし、前記演算サイクル区間の途中で、前記リード回数が多いランキングのアドレスのうちの上位の所定数のアドレスが変化しない場合には、前記演算サイクル区間のキャッシュロック機能を有効にし、
前記キャッシュメモリ制御部は、前記キャッシュロック機能が有効である演算サイクル区間では、前記リード要求のアドレスに応じて前記キャッシュメモリのロック領域又は非ロック領域にデータを格納し、前記キャッシュロック機能が無効である演算サイクル区間では、前記ロック領域も非ロック領域として利用され、前記キャッシュメモリの非ロック領域にデータを格納することを特徴とする請求項２又は３に記載の演算処理装置。
【請求項５】
前記演算部は、連立方程式の解を算出することを特徴とする請求項１〜４のいずれか１項に記載の演算処理装置。
【請求項６】
前記演算部は、行列の積を演算することを特徴とする請求項１〜５のいずれか１項に記載の演算処理装置。
【請求項７】
前記演算部は、第１の行列と第２の行列の積が第３の行列である場合に、前記第１の行列と前記第３の行列を基に前記第２の行列の解を算出することを特徴とする請求項１〜６のいずれか１項に記載の演算処理装置。
【請求項８】
前記第１の行列は、疎行列であることを特徴とする請求項７に記載の演算処理装置。
【請求項９】
前記第１の行列は、対称正方行列であることを特徴とする請求項８に記載の演算処理装置。
【請求項１０】
前記ロックアドレス決定部は、前記第１の行列の中の０でない要素の列番号を基に、演算サイクル区間毎の演算のためにリードするアドレスを得ることを特徴とする請求項８又は９に記載の演算処理装置。
【請求項１１】
演算サイクル区間毎に、演算のためにリードする各アドレスのリード回数を集計し、前記リード回数に応じて、前記演算サイクル区間毎にキャッシュロックするアドレスを決定し、
前記演算サイクル区間毎のリード要求のアドレスが前記演算サイクル区間毎のキャッシュロックするアドレスである場合には、前記リード要求のアドレスのデータをキャッシュメモリのロック領域に格納し、
前記演算サイクル区間毎のリード要求のアドレスが前記演算サイクル区間毎のキャッシュロックするアドレスでない場合には、前記リード要求のアドレスのデータを前記キャッシュメモリの非ロック領域に格納し、
前記キャッシュメモリからの追い出しを行う場合には、前記キャッシュメモリのロック領域からの追い出しを行わず、前記キャッシュメモリの非ロック領域からの追い出しを行い、
前記リード要求に応じて、前記キャッシュメモリに格納されたデータを基に演算を行うことを特徴とする演算処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置及び演算処理装置の制御方法に関する。
【背景技術】
【０００２】
計算機システムに備えられた複数の処理手段から記憶装置へのアクセス要求に応じて、キャッシュメモリを制御するキャッシュ制御装置が知られている（特許文献１参照）。配分手段は、複数の処理手段のそれぞれに対応する複数の占有領域及び複数の処理手段が共有して利用する共有領域に、キャッシュメモリの記憶領域を配分する。検索手段は、複数の処理手段のそれぞれから入力されるアクセス要求に応じて、対応する占有領域と共有領域とに対して該当するデータの検索処理を行う。第１の順位操作手段は、検索結果に応じて、該当する占有領域と共有領域とからなる領域に格納されたデータの置き換え優先順位を操作する。置き換え手段は、該当するデータが存在しない旨の検索結果の入力に応じて、該当する占有領域と共有領域とからなる連続した領域における置き換え優先順位に従ってデータの置き換え処理を行う。
【０００３】
また、主記憶に記憶され、複数のデータアドレスの組み合わせで特定されるデータの処理に適したキャッシュメモリシステムが知られている（特許文献２参照）。第１のキャッシュメモリバンクは、複数のデータアドレスの組み合わせの第１の部分からなるブロックアドレスでそれぞれが特定され残りの第２の部分からなるブロック内アドレスでそれぞれを構成するデータが特定されるデータブロックのコピーをそれぞれ記憶するための複数の記憶領域を有する。第２のキャッシュメモリバンクは、複数のデータアドレスの組み合わせの第１の部分からなるブロックアドレスでそれぞれが特定され残りの第２の部分からなるブロック内アドレスでそれぞれを構成するデータが特定されるデータブロックのコピーをそれぞれ記憶するための複数の記憶領域を有する。予測アドレス生成回路は、特定のデータアドレスの組み合わせに対応する現ブロックアドレスから予め定められた規則に従って予測ブロックアドレスを決定する。キャッシュコンパレータは、現ブロックアドレス、及び予測アドレス生成回路が決定した予測ブロックアドレスが第１及び第２のキャッシュメモリバンクにヒットしたかミスヒットしたかを決定する。制御ブロックは、キャッシュコンパレータの判定結果に従って、主記憶及び第１及び第２のキャッシュメモリバンクを制御する。
【０００４】
また、メインメモリから読み出されたデータを一時的に保管するキャッシュメモリが知られている（特許文献３参照）。アドレス記憶手段は、複数の記憶領域を有し、各記憶領域にメインメモリのアクセスに使用されるアドレス情報の少なくとも一部を記憶する。データ記憶手段は、アドレス記憶手段の複数の記憶領域に対応する複数の記憶領域を有し、各記憶領域にアドレス情報に対応するデータを記憶する。判別手段は、アドレス情報が与えられたとき、そのアドレス情報に基づいてアドレス記憶手段の記憶内容を参照することにより、そのアドレス情報に対応するデータがデータ記憶手段に記憶されているか否かを判別する。読み出し手段は、データ記憶手段に対応のデータが記憶されていることを判別手段が判別したことに応答して、その対応のデータをデータ記憶手段から読み出して外部へ導出する。書き換え手段は、データ記憶手段に対応のデータが存在していないことを判別手段が判別したことに応答して、アドレス記憶手段及びデータ記憶手段の書き換えを行う。選択手段は、アドレス記憶手段の複数の記憶領域のいずれか及びデータ記憶手段の対応する記憶領域を選択する。書き込み手段は、選択手段により選択されたアドレス記憶手段の記憶領域及びデータ記憶手段の記憶領域に、それぞれアドレス情報及びデータを書き込む。設定手段は、選択手段により選択されたアドレス記憶手段の記憶領域及びデータ記憶手段の記憶領域に対して、書き換え手段による書き換えから解除されることを示す解除情報を設定する。制御手段は、設定手段により設定された解除情報に従って書き換え手段に作用し、アドレス記憶手段及びデータ記憶手段において解除情報が設定されている記憶領域を書き換え手段による書き換えの対象から除外するように制御する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平８−１４７２１８号公報
【特許文献２】特開平９−５０３９９号公報
【特許文献３】特開平２−８９１４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
キャッシュメモリでは、キャッシュメモリにデータが記憶されている場合には、キャッシュヒットし、リード速度が向上する。しかし、キャッシュメモリにデータが記憶されていない場合には、キャッシュミスし、リード速度が向上しない。演算の種類によっては、キャッシュヒット率が低くなり、リード速度の向上が妨げられる。
【０００７】
１つの側面では、本発明の目的は、キャッシュヒット率を向上させ、リード速度を向上させることができる演算処理装置及び演算処理装置の制御方法を提供することである。
【課題を解決するための手段】
【０００８】
演算処理装置は、ロック領域と非ロック領域を含むキャッシュメモリと、演算サイクル区間毎に、演算のためにリードする各アドレスのリード回数を集計し、前記リード回数に応じて、前記演算サイクル区間毎にキャッシュロックするアドレスを決定するロックアドレス決定部と、前記演算サイクル区間毎のリード要求のアドレスが前記演算サイクル区間毎のキャッシュロックするアドレスである場合には、前記リード要求のアドレスのデータを前記キャッシュメモリのロック領域に格納し、前記演算サイクル区間毎のリード要求のアドレスが前記演算サイクル区間毎のキャッシュロックするアドレスでない場合には、前記リード要求のアドレスのデータを前記キャッシュメモリの非ロック領域に格納し、前記キャッシュメモリからの追い出しを行う場合には、前記キャッシュメモリのロック領域からの追い出しを行わず、前記キャッシュメモリの非ロック領域からの追い出しを行うキャッシュメモリ制御部と、前記リード要求に応じて、前記キャッシュメモリに格納されたデータを基に演算を行う演算部とを有する。
【発明の効果】
【０００９】
１つの側面では、キャッシュヒット率を向上させ、リード速度を向上させることができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、本実施形態による情報処理装置の構成例を示すブロック図である。
【図２】図２（Ａ）は情報処理装置の演算対象の行列を示す図であり、図２（Ｂ）は行列の例を示す図である。
【図３】図３（Ａ）は行列の具体例を示す図であり、図３（Ｂ）は外部メモリに格納されるデータを示す図である。
【図４】図４は、演算処理装置が演算する演算サイクルと演算処理装置がリードする結果格納領域のアドレスとの関係を示すグラフである。
【図５】図５は、演算処理装置が演算する演算サイクルと演算処理装置がリードする結果格納領域のアドレスとの他の関係を示すグラフである。
【図６】図６は、演算処理装置が演算する演算サイクルと演算処理装置がリードする結果格納領域のアドレスとの他の関係を示すグラフである。
【図７】図７は、情報処理装置の制御方法を示すフローチャートである。
【発明を実施するための形態】
【００１１】
図１は、本実施形態による情報処理装置１００の構成例を示すブロック図である。情報処理装置１００は、アプリケーション処理部１０１と、外部メモリ１０２と、演算処理装置１０３とを有する。アプリケーション処理部１０１は、例えば、中央演算処理装置（ＣＰＵ）である。外部メモリ１０２は、例えば、メインメモリである。演算処理装置１０３は、例えば、ＦＰＧＡ（field-programmable gate array）等のアクセラレータである。外部メモリ１０２は、インデック情報格納領域１１１と、演算データ格納領域１１２と、結果格納領域１１３とを有する。
【００１２】
演算処理装置１０３は、制御部１２１と、内蔵メモリ１２２と、演算処理部１２３と、演算器アレイ１２４とを有する。制御部１２１は、キャッシュロック情報生成処理部１３１と、有効／無効情報生成処理部１３２と、有効／無効切替処理部１３３と、リード処理部１３４と、ライト処理部１３５とを有する。内蔵メモリ１２２は、キャッシュロック情報格納領域１４１と、キャッシュデータ格納領域１４２とを有する。キャッシュロック情報格納領域１４１は、キャッシュロック情報１５１と、有効／無効情報１５２とを格納する。キャッシュデータ格納領域１４２は、ロック領域１６１と、非ロック領域１６２とを有する。
【００１３】
例えば、外部メモリ１０２は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）であり、内蔵メモリ１２２は、スタティックランダムアクセスメモリ（ＳＲＡＭ）である。内蔵メモリ１２２は、外部メモリ１０２に対して、アクセス速度が速い。キャッシュデータ格納領域１４２は、外部メモリ１０２に記憶されているデータのうちの一部のデータを格納することにより、データのリード速度を向上させることができる。演算処理部１２３は、スケジューラである。
【００１４】
図２（Ａ）は、情報処理装置１００の演算対象の行列を示す図である。行列Ａは、例えば、ｎ行ｎ列の正方行列である。行列ｘは、例えば、ｎ行１列の行列である。行列ｂは、例えば、ｎ行１列の行列である。行列ｂは、行列Ａと行列ｘとの積を示す行列である。行列ｂの要素ｂ1〜ｂnは、次式で表される。
【００１５】
ｂ1＝Ａ11×ｘ1＋Ａ12×ｘ2＋Ａ13×ｘ3＋・・・＋Ａ1n×ｘn
ｂ2＝Ａ21×ｘ1＋Ａ22×ｘ2＋Ａ23×ｘ3＋・・・＋Ａ2n×ｘn
ｂ3＝Ａ31×ｘ1＋Ａ32×ｘ2＋Ａ33×ｘ3＋・・・＋Ａ3n×ｘn
・・・
ｂn＝Ａn1×ｘ1＋Ａn2×ｘ2＋Ａn3×ｘ3＋・・・＋Ａnn×ｘn
【００１６】
ここで、行列Ａと行列ｂが既知の行列である。情報処理装置１００は、例えば、共役勾配法（ＣＧ法）により、行列Ａと行列ｂを基に行列ｘの解を算出する。具体的には、まず、情報処理装置１００は、行列ｘに初期解を代入する。次に、情報処理装置１００は、行列Ａと行列ｘとの積を演算する。次に、情報処理装置１００は、その演算結果の行列と行列ｂとの差が小さくなるように、行列ｘの各要素を更新し、行列Ａと行列ｘとの積を演算する。情報処理装置１００は、行列ｘの各要素が収束するまで、上記の行列の積の演算サイクルを繰り返す。ｎは膨大な数であるため、繰り返す演算サイクル数も膨大な数となる。この繰り返し演算により、情報処理装置１００は、行列ｘの解を算出することができる。このように、情報処理装置１００は、連立方程式の解を算出することができる。
【００１７】
図２（Ｂ）は、行列Ａと行列ｘと行列ｂの例を示す図である。説明の簡単のため、ｎが８の場合の行列Ａと行列ｘと行列ｂを示す。行列Ａは、対称正方行列であり、かつ疎行列である。疎行列は、要素のほとんどが０である行列である。外部メモリ１０２は、行列Ａの要素のうちの０でない要素を列番号と共に記憶する。演算処理装置１０３は、次式のように、行列Ａの要素のうちの０でない要素と行列ｘの要素を用いて、行列Ａと行列ｘとの積の演算を行う。
【００１８】
ｂ1＝Ａ11×ｘ1＋Ａ14×ｘ4
ｂ2＝Ａ23×ｘ3＋Ａ28×ｘ8
ｂ3＝Ａ32×ｘ2＋Ａ35×ｘ5
・・・
ｂ8＝Ａ82×ｘ2＋Ａ87×ｘ7
【００１９】
外部メモリ１０２は、行列ｘの全要素を記憶している。したがって、演算処理装置１０３は、上記の演算を行う場合、外部メモリ１０２に対して、行列ｘの要素をシーケンシャルアクセスによるリードではなく、ランダムアクセスによるリードを行うことになる。その結果、演算処理装置１０３は、通常のキャッシュメモリを用いた場合、キャッシュヒット率が低いものとなる。そこで、演算処理装置１０３は、キャッシュメモリとして、ロック領域１６１と非ロック領域１６２を設けることにより、キャッシュヒット率を向上させ、リード速度を向上させる。
【００２０】
図３（Ａ）は行列Ａと行列ｂの具体例を示す図であり、図３（Ｂ）は外部メモリ１０２に格納されるデータＤ１〜Ｄ４を示す図である。行列Ａは、対称正方行列、かつ疎行列である。なお、行列Ａは、対称行列でなくてもよい。行列Ａの要素と行列ｂの要素の値は、既知の値である。演算処理装置１０３は、行列Ａと行列ｂを基に行列ｘの解を算出する。外部メモリ１０２は、データＤ１〜Ｄ４を記憶する。行列ｂは、データＤ４により表される。データＤ４は、行列ｂの各要素の値｛０．０，１．９，２．５，−６．３｝である。
【００２１】
行列Ａは、例えば、ＣＲＳ形式のデータＤ１〜Ｄ３により表される。行列Ａは、対称行列であるので、左下の三角形と右上の三角形に分割した場合、左下の三角形内の要素値と右上の三角形内の要素値が対象になっている。そこで、外部メモリ１０２は、左下の三角形内の要素値のうちの０でない要素値（矩形で囲んだ要素値）を記憶する。
【００２２】
データＤ３は、その左下の三角形内の要素値のうちの０でない要素値を、ラスタスキャンの順番で並べた要素値を示す。ラスタスキャンは、まず、第１行の左から右に向けてスキャンし、次に、第２行の左から右に向けてスキャンし、同様に、行番号を順次増やしながら、各行のスキャンを繰り返す。
【００２３】
データＤ２は、データＤ３の各要素値の列番号（０から始まる列番号）を並べたものである。例えば、データＤ３の要素値「１．２」は、データＤ２の列番号「０」に対応する。データＤ３の要素値「１．１５」は、データＤ２の列番号「１」に対応する。
【００２４】
データＤ１は、行列Ａの各行において、０でない要素値のうちの先頭の要素値の列番号（０から始まる列番号）を並べたものである。例えば、第１行において、０でない要素値のうちの先頭の要素値「１．２」の列番号は０である。第２行において、０でない要素値のうちの先頭の要素値「１．１５」の列番号は１である。
【００２５】
図１のインデックス情報格納領域１１１は、データＤ１及びＤ２を格納する。図１の演算データ格納領域１１２は、データＤ３及びＤ４を格納する。図１の結果格納領域１１３は、行列ｘの要素値を格納する。
【００２６】
図４は、演算処理装置１０３が演算する演算サイクルと演算処理装置１０３がリードする結果格納領域１１３のアドレスとの関係を示すグラフである。演算処理装置１０３は、行列ｘの解を求めるための行列演算を行い、全演算サイクルが終了すると、行列ｘの解が確定する。上記のように、行列Ａが疎行列である場合には、演算処理装置１０３は、結果格納領域１１３に格納されている行列ｘの要素をランダムにリードする。そのため、行列Ａ及び行列ｂの要素のキャッシュヒット率は比較的高いが、行列ｘの要素のキャッシュヒット率は比較的低い。
【００２７】
複数の演算サイクル区間Ｔは、全演算サイクルを演算サイクル区間Ｔ毎に分割した区間である。キャッシュロック情報生成処理部１３１は、ロックアドレス決定部であり、演算サイクル区間Ｔ毎に、演算のためにリードする各アドレスのリード回数を集計し、そのリード回数に応じて、演算サイクル区間Ｔ毎にキャッシュロックするアドレスを決定する。この際、キャッシュロック情報生成処理部１３１は、インデック情報格納領域１１１に格納されているデータＤ１及びＤ２を基に、演算サイクル区間Ｔ毎の演算のためにリードするアドレスを得る。具体的には、キャッシュロック情報生成処理部１３１は、演算サイクル区間Ｔ毎に、リード回数が多いランキングのアドレスのうちの上位の所定数のアドレス４０１をキャッシュロックするアドレスとして決定する。上位の所定数のアドレス４０１は、その演算サイクル区間Ｔではリード回数が多いので、キャッシュデータ格納領域１４２から追い出さないことが好ましい。キャッシュロック情報生成処理部１３１は、演算サイクル区間Ｔ毎に、キャッシュロックするアドレス４０１をキャッシュロック情報１５１として、キャッシュロック情報格納領域１４１にライトする。
【００２８】
キャッシュデータ格納領域１４２は、キャッシュメモリであり、ロック領域１６１と非ロック領域１６２を含む。ロック領域１６１には、演算サイクル区間Ｔ毎に、キャッシュロックするアドレス４０１のデータが格納される。非ロック領域１６２には、演算サイクル区間Ｔ毎に、キャッシュロックするアドレス４０１以外のアドレスのデータが格納される。ロック領域１６１は、キャッシュの追い出しが許可されていない領域である。非ロック領域１６２は、キャッシュの追い出しが許可されている領域である。リード処理部１３４は、キャッシュメモリ制御部であり、キャッシュデータ格納領域１４２の制御を行う。
【００２９】
演算処理部１２３は、スケジューラであり、演算サイクルの制御を行う。演算処理部１２３は、キャッシュデータ格納領域１４２にリード要求（アドレスを含む）を発行し、リード要求のアドレスに対応するデータがキャッシュデータ格納領域１４２に格納されている場合には、リード要求のアドレスに対応するデータをキャッシュデータ格納領域１４２からリードする。
【００３０】
リード要求のアドレスに対応するデータがキャッシュデータ格納領域１４２に格納されていない場合、演算処理部１２３は、リード処理部１３４に対して、リード要求を発行する。リード処理部１３４は、キャッシュロック情報１５１を参照し、リード要求のアドレスが演算サイクル区間Ｔ毎のキャッシュロックするアドレスである場合には、リード要求のアドレスのデータを外部メモリ１０２からリードし、そのリードしたデータをロック領域１６１に格納する。また、リード処理部１３４は、キャッシュロック情報１５１を参照し、リード要求のアドレスが演算サイクル区間Ｔ毎のキャッシュロックするアドレスでない場合には、リード要求のアドレスのデータを外部メモリ１０２からリードし、そのリードしたデータを非ロック領域１６２に格納する。その後、演算処理部１２３は、リード要求のアドレスのデータをロック領域１６１又は非ロック領域１６２からリードする。
【００３１】
演算処理部１２３は、演算器アレイ１２４に対して、そのリードしたデータを用いた演算を指示する。演算器アレイ１２４は、行列Ａと行列ｘと行列ｂのデータを用いて、演算を行い、更新後の行列ｘのデータを出力する。演算処理部１２３は、その更新後の行列ｘのデータをキャッシュデータ格納領域１４２に書き戻す。
【００３２】
上記の処理が、１演算サイクルである。演算処理部１２３は、全演算サイクルが終了するまで、更新後の行列ｘのデータを用いて、上記の演算サイクルを繰り返す。リード処理部１３４は、外部メモリ１０２からデータをリードし、そのリードしたデータをキャッシュデータ格納領域１４２にライトする。この際、キャッシュデータ格納領域１４２が満杯である場合、リード処理部１３４は、キャッシュデータ格納領域１４２からのキャッシュの追い出しを行う。リード処理部１３４は、キャッシュデータ格納領域１４２からの追い出しを行う場合には、ロック領域１６１からの追い出しを行わず、非ロック領域１６２からの追い出しを行う。キャッシュロックするアドレス４０１のデータは、その演算サイクル区間Ｔにおいてリード回数が多く、ロック領域１６１に格納されているので、追い出しが行われない。これにより、キャッシュヒット率が向上し、リード速度を向上させることができる。
【００３３】
全演算サイクルの演算が終了すると、行列ｘの解が確定する。ライト処理部１３５は、キャッシュデータ格納領域１４２に格納されている行列ｘの要素を外部メモリ１０２の結果格納領域１１３に書き戻す。その後、アプリケーション処理部１０１は、結果格納領域１１３から行列ｘの要素をリードする。
【００３４】
図５は、演算処理装置１０３が演算する演算サイクルと演算処理装置１０３がリードする結果格納領域１１３のアドレスとの他の関係を示すグラフである。領域５０１は、演算サイクル区間Ｔ毎に、リード回数が多いアドレスに偏向がなく、リード回数が多いアドレスが多すぎる。領域５０１では、キャッシュロックするアドレス４０１が多くなりすぎ、ロック領域１６１が溢れてしまい、キャッシュロック機能のメリットを活かすことができない。そこで、キャッシュロック情報生成処理部１３１は、領域５０１のように、演算サイクル区間Ｔ毎に、リード回数が第１の閾値より多いアドレスの数が、第２の閾値より多い場合、そのアドレスをキャッシュロックするアドレスにはしない。
【００３５】
これに対し、領域５０２は、演算サイクル区間Ｔ毎に、リード回数が多いアドレスに偏向があり、リード回数が多いアドレスが少ない。領域５０２では、キャッシュロックするアドレス４０１が少ないので、キャッシュロック機能のメリットを活かすことができる。そこで、キャッシュロック情報生成処理部１３１は、領域５０２のように、演算サイクル区間Ｔ毎に、リード回数が第１の閾値より多いアドレスの数が、第２の閾値より少ない場合、上記のように、リード回数が多いランキングのアドレスのうちの上位の所定数のアドレス４０１をキャッシュロックするアドレスとして決定する。
【００３６】
図６は、演算処理装置１０３が演算する演算サイクルと演算処理装置１０３がリードする結果格納領域１１３のアドレスとの他の関係を示すグラフである。期間６０１は、複数の演算サイクル区間Ｔを含み、リード回数が多いランキングのアドレスのうちの上位の所定数のアドレスが変化しない期間である。期間Ｔ２は、１個の演算サイクル区間Ｔであり、演算サイクル区間Ｔの途中で、リード回数が多いランキングのアドレスのうちの上位の所定数のアドレスが変化する期間である。期間６０３は、複数の演算サイクル区間Ｔを含み、リード回数が多いランキングのアドレスのうちの上位の所定数のアドレスが変化しない期間である。
【００３７】
有効／無効情報生成処理部１３２は、ロックアドレス決定部であり、キャッシュロック機能の有効／無効を決定する。有効／無効情報生成処理部１３２は、期間６０２のように、演算サイクル区間Ｔの途中で、リード回数が多いランキングのアドレスのうちの上位の所定数のアドレスが変化する場合には、その演算サイクル区間Ｔのキャッシュロック機能を無効にする有効／無効情報１５２を生成する。また、有効／無効情報生成処理部１３２は、期間６０１及び６０３のように、演算サイクル区間Ｔの途中で、リード回数が多いランキングのアドレスのうちの上位の所定数のアドレスが変化しない場合には、その演算サイクル区間Ｔのキャッシュロック機能を有効にする有効／無効情報１５２を生成する。そして、有効／無効情報生成処理部１３２は、その演算サイクル区間Ｔ毎のキャッシュロック機能の有効／無効情報１５２をキャッシュロック情報格納領域１４１にライトする。
【００３８】
有効／無効切替処理部１３３は、有効／無効情報１５２を参照し、リード処理部１３４に対して、キャッシュロック機能の有効又は無効を切り替える。リード処理部１３４は、キャッシュロック機能が有効である演算サイクル区間Ｔでは、リード要求のアドレスに応じてロック領域１６１又は非ロック領域１６２にデータを格納する。また、リード処理部１３４は、キャッシュロック機能が無効である演算サイクル区間Ｔでは、非ロック領域１６２にデータを格納する。
【００３９】
有効／無効切替処理部１３３は、期間６０２では、キャッシュロック機能を無効にすることにより、不要なキャッシュロックを防止することができる。
【００４０】
図７は、情報処理装置１００の制御方法を示すフローチャートである。ステップＳ７０１では、アプリケーション処理部１０１は、制御部１２１を介して、データＤ１及びＤ２をインデックス情報格納領域１１１にライトし、データＤ３及びＤ４を演算データ格納領域１１２にライトする。次に、アプリケーション処理部１０１は、制御部１２１に対して、行列ｘの解を算出するための演算開始を指示する。すると、制御部１２１は、行列ｘの初期解を生成し、その生成した行列ｘの初期解を結果格納領域１１３にライトする。
【００４１】
次に、ステップＳ７０２では、キャッシュロック情報生成処理部１３１は、インデックス情報格納領域１１１に格納されているデータＤ１及びＤ２を基に、演算サイクル区間Ｔ毎の演算のためにリードするアドレスを得る。次に、キャッシュロック情報生成処理部１３１は、演算サイクル区間Ｔ毎に、演算のためにリードする各アドレスのリード回数を集計し、リード回数に応じて、演算サイクル区間Ｔ毎にキャッシュロックするアドレスを決定する。具体的には、キャッシュロック情報生成処理部１３１は、図４のように、演算サイクル区間Ｔ毎に、リード回数が多いランキングのアドレスのうちの上位の所定数のアドレス４０１をキャッシュロックするアドレスとして決定する。また、キャッシュロック情報生成処理部１３１は、図５のように、演算サイクル区間Ｔ毎に、リード回数が第１の閾値より多いアドレスの数が、第２の閾値より少ない場合、リード回数が多いランキングのアドレスのうちの上位の所定数のアドレスをキャッシュロックするアドレスとして決定する。キャッシュロックするアドレスの対象は、例えば、行列ｘの要素のアドレスであるが、この限りではない。次に、キャッシュロック情報生成処理部１３１は、その決定した演算サイクル区間Ｔ毎のキャッシュロックするアドレスを、キャッシュロック情報１５１としてキャッシュロック情報格納領域１４１にライトする。
【００４２】
次に、ステップＳ７０３では、有効／無効情報生成処理部１３２は、図６の期間６０２ように、演算サイクル区間Ｔの途中で、リード回数が多いランキングのアドレスのうちの上位の所定数のアドレスが変化する場合には、その演算サイクル区間Ｔのキャッシュロック機能を無効にする有効／無効情報１５２を生成する。また、有効／無効情報生成処理部１３２は、図６の期間６０１及び６０３のように、演算サイクル区間Ｔの途中で、リード回数が多いランキングのアドレスのうちの上位の所定数のアドレスが変化しない場合には、その演算サイクル区間Ｔのキャッシュロック機能を有効にする有効／無効情報１５２を生成する。次に、有効／無効情報生成処理部１３２は、その生成した演算サイクル区間Ｔ毎の有効／無効情報１５２をキャッシュロック情報格納領域１４１にライトする。
【００４３】
次に、ステップＳ７０４では、制御部１２１は、演算処理部１２３を起動する。演算処理部１２３は、行列Ａ及び行列ｂを基に行列ｘの解を算出するための演算制御を開始する。演算処理部１２３は、ステップＳ７０５〜Ｓ７１１を１演算サイクルとして、所定回数の演算サイクルの処理を繰り返す。
【００４４】
ステップＳ７０５は、演算処理部１２３は、当該演算サイクルに必要なデータのリード要求（アドレスを含む）をキャッシュデータ格納領域１４２に発行し、リード要求のアドレスに対応するデータがキャッシュデータ格納領域１４２に格納されている場合には、リード要求のアドレスに対応するデータをキャッシュデータ格納領域１４２からリードする。
【００４５】
リード要求のアドレスに対応するデータがキャッシュデータ格納領域１４２に格納されていない場合、演算処理部１２３は、リード処理部１３４に対して、リード要求を発行する。有効／無効切替処理部１３３は、キャッシュロック情報格納領域１４１に格納されている演算サイクル区間Ｔ毎の有効／無効情報１５２を参照し、演算サイクル区間Ｔ毎のキャッシュロック機能の有効又は無効を指示する。
【００４６】
次に、ステップＳ７０６では、リード処理部１３４は、キャッシュロック機能が有効である場合には、ステップＳ７０７に進み、キャッシュロック機能が無効である場合には、ステップＳ７０９に進む。
【００４７】
ステップＳ７０７では、リード処理部１３４は、キャッシュロック情報格納領域１４１に格納されている演算サイクル区間Ｔ毎のキャッシュロック情報１５１を参照し、リード要求のアドレスが当該演算サイクル区間Ｔのキャッシュロックするアドレスであるか否かを判定する。リード処理部１３４は、リード要求のアドレスがキャッシュロックするアドレスである場合には、ステップＳ７０８に進み、リード要求のアドレスがキャッシュロックするアドレスでない場合には、ステップＳ７０９に進む。
【００４８】
ステップＳ７０８では、リード処理部１３４は、リード要求のアドレスのデータを外部メモリ１０２からリードし、そのリードしたデータをロック領域１６１に格納する。演算処理部１２３は、リード要求のアドレスのデータをロック領域１６１からリードし、ステップＳ７１０に進む。ロック領域１６１には、当該演算サイクル区間Ｔにおいて使用頻度が高い行列ｘの要素が格納される。
【００４９】
ステップＳ７０９では、リード処理部１３４は、リード要求のアドレスのデータを外部メモリ１０２からリードし、そのリードしたデータを非ロック領域１６２に格納する。なお、キャッシュロック機能が無効である場合には、ロック領域１６１も非ロック領域１６２として利用される。演算処理部１２３は、リード要求のアドレスのデータを非ロック領域１６２からリードし、ステップＳ７１０に進む。非ロック領域１６１には、行列ｘ、行列Ａ又は行列ｂの要素が格納される。
【００５０】
ステップＳ７１０では、演算処理部１２３は、演算器アレイ１２４に対して、そのリードしたデータと、そのデータを用いた演算命令を出力する。演算器アレイ１２４は、行列Ａと行列ｘと行列ｂのデータを用いて、演算を行い、更新後の行列ｘのデータを出力する。
【００５１】
次に、ステップＳ７１１では、演算処理部１２３は、その更新後の行列ｘのデータをキャッシュデータ格納領域１４２にライトする。又は、演算処理部１２３は、ライト処理部１３５を介して、その更新後の行列ｘのデータを結果格納領域１１３にライトする。
【００５２】
次に、ステップＳ７１２では、演算処理部１２３は、全演算サイクルの演算が終了したか否かを判定する。演算処理部１２３は、全演算サイクルの処理が終了していない場合には、ステップＳ７０５に戻り、次の演算サイクルの処理を繰り返す。また、演算処理部１２３は、全演算サイクルの処理が終了した場合には、ステップＳ７１３に進む。
【００５３】
ステップＳ７１３では、キャッシュデータ格納領域１４２は、行列ｘの解を格納している。ライト処理部１３５は、演算処理部１２３の指示により、キャッシュデータ格納領域１４２に格納されている行列ｘの解をリードし、その行列ｘの解を結果格納領域１１３にライトする。
【００５４】
次に、ステップＳ７１４では、アプリケーション処理部１０１は、結果格納領域１１３に格納されている行列ｘの解を読み出し、行列ｘの解を取得する。
【００５５】
以上のように、演算処理装置１０３は、ロック領域１６１及び非ロック領域１６２を用いることにより、キャッシュヒット率を向上させ、リード速度を向上させることができる。
【００５６】
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【００５７】
１００  情報処理装置
１０１  アプリケーション処理部
１０２  外部メモリ
１０３  演算処理装置
１１１  インデック情報格納領域
１１２  演算データ格納領域
１１３  結果格納領域
１２１  制御部
１２２  内蔵メモリ
１２３  演算処理部
１２４  演算器アレイ
１３１  キャッシュロック情報生成処理部
１３２  有効／無効情報生成処理部
１３３  有効／無効切替処理部
１３４  リード処理部
１３５  ライト処理部
１４１  キャッシュロック情報格納領域
１４２  キャッシュデータ格納領域
１５１  キャッシュロック情報
１５２  有効／無効情報
１６１  ロック領域
１６２  非ロック領域
【図１】
2019114013.tif 000003
【図２】
2019114013.tif 000004
【図３】
2019114013.tif 000005
【図４】
2019114013.tif 000006
【図５】
2019114013.tif 000007
【図６】
2019114013.tif 000008
【図７】
2019114013.tif 000009