(57)【要約】  ＰＦポート（１００）の要求記憶部（１１０）に展開要求を記憶し、ＰＦポートエントリ選択部（１４０）が展開要求から展開される２つのプリフェッチ要求が連続してＬ２−パイプ（２３）に投入されるよう制御する。また、ＰＦポートエントリ選択部（１４０）が、展開された２つのプリフェッチ要求の一方だけがアボートした場合に、アボートしたプリフェッチ要求が最優先でＬ２−パイプ（２３）に投入されるよう制御する。また、ＰＦポートエントリ選択部（１４０）が資源管理部（３０１）から利用可能な資源数を受け取り、利用可能な資源数に基づいてパイプ投入部（２００）に投入するプリフェッチ要求を選択する。
2012127628.tif 000002
【特許請求の範囲】
【請求項１】
主記憶装置に接続される演算処理装置において、
データをそれぞれ保持する複数のキャッシュラインを有するキャッシュメモリと、
前記キャッシュメモリの連続する複数のキャッシュラインに対する複数のアクセス要求を互いに関連付けて保持する要求保持部と、
前記関連付けられた複数のアクセス要求を、前記主記憶装置に対して連続して発行する制御部と、
前記連続して発行された複数のアクセス要求に対する前記主記憶装置からの複数の応答データを、前記キャッシュメモリの連続するキャッシュラインに登録する処理部を有することを特徴とする演算処理装置。
【請求項２】
前記演算処理装置において、
前記対応付けられたアクセス要求は、前記キャッシュラインのアドレス範囲を指示することを特徴とする請求項１記載の演算処理装置。
【請求項３】
前記演算処理装置はさらに、
前記キャッシュメモリの複数のキャッシュラインのタグ情報を保持するタグ保持部を有し、
前記制御部は、前記アクセス要求に含まれたアドレスから前記タグ保持部に保持されたタグ情報を検索し、前記タグ情報を検索した結果に基づき、前記関連付けられた複数のアクセス要求を前記主記憶装置に対して連続して発行することを特徴とする請求項１又は２記載の演算処理装置。
【請求項４】
前記演算処理装置において、
前記制御部は、前記要求保持部が関連付けて保持する複数のアクセス要求に前記処理部が中断した要求が含まれる場合、前記中断の原因が解消されたとき、前記中断したアクセス要求に対するタグ情報の再検索を、他のアクセス要求よりも優先して行うことを特徴とする請求項３記載の演算処理装置。
【請求項５】
前記演算処理装置において、
前記処理部は、連続して発行された複数のアクセス要求に対する前記主記憶装置からの複数の応答データを保持するデータ保持部を有し、
前記制御部は、前記要求保持部が関連付けて保持する複数のアクセス要求に対応するデータを前記処理部のデータ保持部に全て保持できる場合にのみ、前記関連付けられた複数のアクセス要求を、前記主記憶装置に対して連続して発行することを特徴とする請求項１記載の演算処理装置。
【請求項６】
前記演算処理装置において、
前記要求保持部が関連付けて保持するアクセス要求は、複数のキャッシュラインをプリフェッチする１つの命令から生成されることを特徴とする請求項１記載の前記演算処理装置。
【請求項７】
前記演算処理装置において、
前記要求保持部が関連付けて保持する複数のアクセス要求の対象である複数のキャッシュラインは、同一のメモリバンクに含まれることを特徴とする請求項１記載の演算処理装置。
【請求項８】
主記憶装置と前記主記憶装置に接続される演算処理装置を有する情報処理装置において、
前記演算処理装置は、
データをそれぞれ保持する複数のキャッシュラインを有するキャッシュメモリと、
前記複数のキャッシュラインのうち連続するキャッシュラインに対する複数のアクセス要求を関連付けて保持する要求保持部と、
前記関連付けられた複数のアクセス要求を、前記主記憶装置に対して連続して発行する制御部と、
前記連続して発行された複数のアクセス要求に対する前記主記憶装置からの複数の応答データを、前記キャッシュメモリの連続するキャッシュラインに登録する処理部を有することを特徴とする情報処理装置。
【請求項９】
主記憶装置に接続される演算処理装置の制御方法において、
データをそれぞれ保持する複数のキャッシュラインを有するキャッシュメモリと、
前記演算処理装置が有する要求保持部に保持された、複数のキャッシュラインを有するキャッシュメモリの連続するキャッシュラインに対する複数のアクセス要求を、前記演算処理装置の有する制御部が前記主記憶装置に対して連続して発行するステップと、
前記演算処理装置が有する処理部が、前記連続して発行された複数のアクセス要求に対する前記主記憶装置からの複数の応答データを、前記キャッシュメモリの連続するキャッシュラインに登録するステップを有することを特徴とする演算処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置、情報処理装置及び演算処理装置の制御方法に関する。
【背景技術】
【０００２】
主記憶装置と接続されたキャッシュメモリを有する演算処理装置を備えた情報処理装置において、主記憶装置が連続したキャッシュラインを連続的に処理することにより、記憶装置とキャッシュメモリ間の転送スループットを向上させる場合がある。例えば、ＤＤＲ３（Double  Data  Rate3）−ＳＤＲＡＭ（Synchronous  Dynamic  Random  Access  Memory）では、同一ロウの隣接したカラムへのアクセスを連続する場合、主記憶装置がデータを記憶する単位であるページを閉じずに連続してアクセスを行うことが可能であり、１アクセスごとにページを閉じる場合よりも主記憶装置とキャッシュメモリ間の転送スループットが向上する。【０００３】
しかしながら、従来のキャッシュメモリの制御では、ソフトウエアがキャッシュメモリのキャッシュラインのサイズであるラインサイズより大きな連続したアドレスの領域を必要とする場合でも、主記憶装置ではキャッシュメモリのようにキャッシュライン単位でデータを管理しておらず、データ毎に処理が行われる。【０００４】
図８は、従来のキャッシュメモリ制御装置の制御例を示す図である。図８において、「ＰＦ−ＰＩＰＥ（ＣＯＲＥ−ｎ）」は、ＣＰＵ（Central  Processing  Unit：中央処理装置）コアユニットｎからのプリフェッチ要求を処理するプリフェッチのパイプライン処理を示す。また、「ＰＦパイプライン（ＣＯＲＥ-ｎ，ＰＡ＝ｘｘｘｘｘｘ）、タグミス」は、ＣＰＵコアユニットｎからの物理アドレスｘｘｘｘｘｘのプリフェッチ命令に対してパイプライン処理によりキャッシュメモリのタグ検索が行われ、タグにヒットせずにタグミスが発生したことを示す。【０００５】
すなわち、図８では、ＣＰＵコアユニット０、１、２、３、０、１からのプリフェッチ命令が順にパイプライン処理され、タグミスが順番に発生する。その結果、メモリすなわち主記憶装置へのフェッチ要求が１６進表記による物理アドレス「００００００」、「０１００００」、「０２００００」、「０３００００」、「００００８０」、「０００１８０」に対して発行される。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平１−２６１７８０号公報
【特許文献２】特開平５−１４３４４８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
図８において、一例として、キャッシュラインサイズを１２８バイトとし、主記憶装置は２キャッシュライン分の２５６バイトのデータを連続的に処理することにより主記憶装置とキャッシュメモリ間の転送スループットを向上させる機能を有するものとする。このとき、ＣＰＵコアユニット０からの物理アドレス「００００００」及び「００００８０」への２つのフェッチ要求を主記憶装置に連続して発行することができれば、主記憶装置とキャッシュメモリ間の転送スループットを向上させることができる。【０００８】
しかしながら、従来のキャッシュメモリ制御では、複数のＣＰＵコアユニットからのプリフェッチ命令がそれぞれ順番に処理される。したがって、従来のキャッシュメモリ制御装置には、ＣＰＵコアユニット０からの物理アドレス「００００００」及び「００００８０」へのフェッチ要求を主記憶装置に連続して発行することができないという問題があった。すなわち、従来のキャッシュメモリ制御装置には、連続するキャッシュラインのフェッチ要求を主記憶装置に連続して発行することができないという問題があった。【０００９】
開示の技術は、一側面において、主記憶装置の転送スループットを向上することができる演算処理装置、情報処理装置及び演算処理装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本願の開示する演算処理装置は、一つの態様において、データをそれぞれ保持する複数のキャッシュラインを有するキャッシュメモリを有する。また、本願の開示する演算処理装置は、キャッシュメモリの連続する複数のキャッシュラインに対する複数のアクセス要求を互いに関連付けて保持する要求保持部と、関連付けられた複数のアクセス要求を、主記憶装置に対して連続して発行する制御部とを有する。また、本願の開示する演算処理装置は、連続して発行された複数のアクセス要求に対する主記憶装置からの複数の応答データを、キャッシュメモリの連続するキャッシュラインに登録する処理部を有する。
【発明の効果】
【００１１】
本願の開示する演算処理装置の一つの態様によれば、主記憶装置の転送スループットを向上することができるという効果を奏する。
【図面の簡単な説明】
【００１２】
【図１】図１は、本実施例に係るキャッシュメモリ制御装置の制御例を示す図である。
【図２】図２は、本実施例に係るＣＰＵの構成を示す図である。
【図３】図３は、図２に示したＰＦポートの構成を示す図である。
【図４】図４は、エントリ有効信号設定部の構成を示す図である。
【図５】図５は、ＰＦポートエントリ選択部の処理手順を示すフローチャートである。
【図６】図６は、本実施例に係るキャッシュメモリ制御装置の他の制御例を示す図である。
【図７】図７は、ＳＴＲＥＡＭ計算のプログラム例を示す図である。
【図８】図８は、従来のキャッシュメモリ制御装置の制御例を示す図である。
【発明を実施するための形態】
【００１３】
以下に、本願の開示する演算処理装置、情報処理装置及び演算処理装置の制御方法の実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。
【実施例】
【００１４】
まず、本実施例に係るキャッシュメモリ制御装置の制御例について説明する。図１は、本実施例に係るキャッシュメモリ制御装置の制御例を示す図である。なお、図１においても図８と同様に、一例として、キャッシュラインサイズを１２８バイトとし、主記憶装置は連続する２キャッシュライン分の２５６バイトのデータを連続的に処理することにより、主記憶装置とキャッシュメモリ間の転送スループットを向上させる機能を有するものとする。【００１５】
図１に示すように、本実施例に係るキャッシュメモリ制御装置は、各ＣＰＵコアユニットからの１６進数で表した物理アドレス「ｘｘｘｘ００」及び「ｘｘｘｘ８０」へのプリフェッチ要求を連続して処理する。ここで、物理アドレスの「ｘｘｘｘ」の部分は、図１の例では、ＣＰＵコアユニット０の場合は「００００」であり、ＣＰＵコアユニット１の場合は「０１００」であり、ＣＰＵコアユニット２の場合は「０２００」であり、ＣＰＵコアユニット３の場合は「０３００」である。【００１６】
このように、本実施例に係るキャッシュメモリ制御装置は、各ＣＰＵコアユニットからの物理アドレス「ｘｘｘｘ００」及び「ｘｘｘｘ８０」へのプリフェッチ要求を連続して処理する。したがって、本実施例に係るキャッシュメモリ制御装置は、物理アドレス「ｘｘｘｘ００」及び「ｘｘｘｘ８０」へのフェッチ要求を主記憶装置に連続して発行することができる。その結果、主記憶装置が物理アドレス「ｘｘｘｘ００」及び「ｘｘｘｘ８０」の２キャッシュライン分の連続した領域を連続的に処理することにより、主記憶装置とキャッシュメモリ間の転送スループットを向上させる場合、主記憶装置の転送スループットを向上させることができる。【００１７】
次に、本実施例に係るＣＰＵの構成について説明する。図２は、本実施例に係るＣＰＵの構成を示す図である。図２に示すように、ＣＰＵ１は、４つのＣＰＵコアユニット１０と、４つのＣＰＵコアユニット１０が共有される共用Ｌ２キャッシュユニット２０とを有する。なお、ここでは、一例として、ＣＰＵ１が４つのＣＰＵコアユニット１０を有する場合について説明するが、ＣＰＵ１は４つ以外のＣＰＵコアユニット１０を有することもできる。【００１８】
ＣＰＵコアユニット１０は、ＣＰＵ１のコアとなる部分であり、Ｌ１命令キャッシュメモリ１１と、命令デコード／発行部１２と、Ｌ１データキャッシュメモリ１３と、ＡＬＵ(Arithmetic  Logic  Unit：算術論理ユニット)１４と、ＭＭＵ(Memory  Management  Unit：メモリ管理ユニット)１５とを有する。また、ＣＰＵコアユニット１０は、Ｌ１−ＭＩＢ(Level-1  Move  In  Buffer：１次ムーブインバッファ)１６と、ＰＦＱ(Pre-Fetch  Queue：プリフェッチキュー)１７と、ＭＯＢ(Move  Out  Buffer：ムーブアウトバッファ)１８と、命令フェッチパイプ１９ａと、ロード／ストアパイプ１９ｂと、実行パイプ１９ｃとを有する。【００１９】
Ｌ１命令キャッシュメモリ１１は、命令を記憶する１次キャッシュメモリであり、命令デコード／発行部１２は、Ｌ１命令キャッシュメモリ１１が記憶する命令をデコードして発行する。Ｌ１データキャッシュメモリ１３は、データを記憶する１次キャッシュメモリであり、ＡＬＵ１４は、命令デコード／発行部１２が発行した命令に基づいて算術演算及び論理演算を行う。【００２０】
ＭＭＵ１５は、仮想アドレスから物理アドレスへの変換を行い、Ｌ１−ＭＩＢ１６は、共用Ｌ２キャッシュユニット２０へのＤＭ（demand：デマンド）要求を記憶するバッファである。ここで、ＤＭ要求とは、Ｌｏａｄ命令、Ｓｔｏｒｅ命令の１次キャッシュミスによる２次キャッシュメモリ又は主記憶装置に対するデータ読み込み要求である。【００２１】
ＰＦＱ１７は、共用Ｌ２キャッシュユニット（Level-2  Cache  Memory  Unit）２０へのプリフェッチ要求を記憶するキューであり、ＭＯＢ１８は、共用Ｌ２キャッシュユニット２０へのデータ書き出し要求（ムーブアウト要求）を記憶するバッファである。【００２２】
命令フェッチパイプ１９ａは、Ｌ１命令キャッシュメモリ１１からの命令の読み出し処理を行うパイプラインであり、ロード／ストアパイプ１９ｂは、データのロード処理及びストア処理を行うパイプラインである。実行パイプ１９ｃは、命令の実行処理を行うパイプラインである。【００２３】
共用Ｌ２キャッシュユニット２０は、４つのＣＰＵコアユニット１０で共用される２次キャッシュメモリ装置であり、４つのＭＯポート(Move  Out  Port：ムーブアウトポート)２１と、４つのＭＩポート(Move  In  Port：ムーブインポート)２２と、４つのＰＦ（Prefetch  Port）ポート１００と、パイプ投入部２００とを有する。また、共用Ｌ２キャッシュユニット２０は、Ｌ２−データ記憶部２４と、Ｌ２−タグ記憶部２５と、Ｌ２−パイプライン制御部３００と、Ｌ２−ＭＩＢ２６と、ＭＡＣ(Memory  Access  Controller)２７とを有する。また、共用Ｌ２キャッシュユニット２０は、Ｍｏｖｅ−ｉｎデータパスバッファ／制御部２８と、Ｍｏｖｅ−ｏｕｔデータパスバッファ／制御部２９とを有する。ここで、共用Ｌ２キャッシュユニット２０からＬ２−データ記憶部２４を除いた部分は、２次キャッシュメモリ装置を制御するＬ２−キャッシュメモリ制御部として動作する。【００２４】
ＭＯポート２１は、ＣＰＵコアユニット１０からのデータ書き出し要求を受け付け、受付けたデータ書き出し要求を古い順に選択してパイプ投入部２００に発行する。４つのＭＯポート２１は４つのＣＰＵコアユニット１０とそれぞれ対応する。【００２５】
ＭＩポート２２は、ＣＰＵコアユニット１０からのＤＭ要求を受け付け、受付けたＤＭ要求を古い順に選択してパイプ投入部２００に発行する。４つのＭＩポート２２は４つのＣＰＵコアユニット１０とそれぞれ対応する。【００２６】
ＰＦポート１００は、ＣＰＵコアユニット１０からのプリフェッチ要求を受け付け、受付けたプリフェッチ要求を古い順に選択してパイプ投入部２００に発行する。４つのＰＦポート１００は４つのＣＰＵコアユニット１０とそれぞれ対応する。【００２７】
パイプ投入部２００は、４つのＰＦポート１００が発行する要求からＬＲＵ（Least  Recently  Used）又はラウンドロビンにより、できるだけＣＰＵコアユニット１０間で均等に要求を選択する。パイプ投入部２００は、４つのＭＯポート２１、ＭＩポート２２が発行する要求についてもそれぞれＣＰＵコアユニット１０間で均等に要求を選択する。【００２８】
また、パイプ投入部２００は、４つのＰＦポート１００間、ＭＯポート２１間、ＭＩポート２２間でそれぞれ選択された要求及びＬ２−ＭＩＢ２６により発行された要求から優先度に基づいて要求を選択し、選択した要求をＬ２−パイプ２３に投入する。ここで、Ｌ２−パイプ２３は、Ｌ２−パイプライン制御部３００により制御されるパイプラインである。【００２９】
Ｌ２−データ記憶部２４は、２次キャッシュデータを記憶する。Ｌ２−タグ記憶部２５は、Ｌ２−データ記憶部２４が記憶するデータのタグを記憶する。Ｌ２−パイプ２３は、投入された要求に含まれる物理アドレスに対応するタグをＬ２−タグ記憶部２５から検索し、検索結果に応じた処理を行う。【００３０】
すなわち、タグがＬ２−タグ記憶部２５から検索された場合には、Ｌ２−パイプ２３は、Ｌ２−データ記憶部２４へアクセスするよう制御する。これに対して、タグがＬ２−タグ記憶部２５から検索されなかった場合には、Ｌ２−パイプ２３は、ＤＭ要求又はプリフェッチ要求であれば、要求をＬ２−ＭＩＢ２６に格納する。一方、データ書き出し要求であれば、Ｌ２−パイプ２３は、Ｌ２−データ記憶部２４及び主記憶装置へのデータ書き込みが行われるように制御する。【００３１】
また、Ｌ２−パイプ２３は、各要求に対する処理が正常に終了した場合には、完了をＭＩポート２２及びＰＦポート１００に通知し、各要求に対する処理がアボートした場合には、アボートをＭＩポート２２及びＰＦポート１００に通知する。【００３２】
Ｌ２−ＭＩＢ(Level-2  Move  In  Buffer：２次ムーブインバッファ)２６は、主記憶装置へのデータ読み込み要求（ムーブイン要求）を記憶するバッファである。また、Ｌ２−ＭＩＢ２６に記憶されたデータ読み込み要求は、データが主記憶装置から読み出されるとパイプ投入部２００によってＬ２−パイプ２３に再投入される。再投入されたデータ読み込み要求により、Ｌ２−データ記憶部２４へのデータの書き込み、Ｌ２−タグ記憶部２５へのタグの登録が行われる。【００３３】
ＭＡＣ２７は、主記憶装置として動作するＤＩＭＭ(Dual  Inline  Memory  Module)２へのアクセスを制御する。Ｍｏｖｅ−ｉｎデータパスバッファ／制御部２８は、主記憶装置から読み込まれたデータのＬ２−データ記憶部２４への書き込み、ＣＰＵコアユニット１０への転送などを行う。Ｍｏｖｅ−ｏｕｔデータパスバッファ／制御部２９は、ＣＰＵコアユニット１０から出力されたデータのＬ２−データ記憶部２４への書き込み、ＭＡＣ２７への転送などを行う。なお、ＣＰＵ１及びＤＩＭＭ２は、情報処理装置の一部として動作する。【００３４】
次に、図２に示したＰＦポート１００の構成について説明する。図３は、図２に示したＰＦポート１００の構成を示す図である。図３に示すように、ＰＦポート１００は、要求記憶部１１０と、設定エントリ選択部１２０と、空エントリ選択部１３０と、ＰＦポートエントリ選択部１４０と、エントリ有効信号設定部１５０とを有する。【００３５】
要求記憶部１１０は、例えば８つのエントリを有し、各エントリにプリフェッチ要求を記憶する。ここで、要求記憶部１１０は例えば、１つのエントリとして、連続する２つのキャッシュラインへの要求として２つの要求に展開される展開要求を記憶することができる。なお、展開要求は３つ以上のキャッシュラインへの要求である３つ以上の要求に展開されても良い。【００３６】
各エントリは、図３に示すように、ＶＡＬ［１：０］、ＨＬＤ［１：０］、ＥＸＰ、ＰＡ［３９：８］、ＰＦ＿ＣＯＤＥの各フィールドを有する。ここで、ＰＡ(Physical  Address)はプリフェッチするキャッシュラインの物理アドレスであり、［ｌ：ｍ］はビットｍからビットｌまでのｌ−ｍ＋１ビットを示す。また、以下で［ｎ］はビットｎを示す。【００３７】
ＶＡＬ(Valid)［１：０］は、エントリが有効であるか否かを示し、ＶＡＬ［１］、ＶＡＬ［０］がそれぞれＰＡ［７］＝１、ＰＡ［７］＝０に対応する連続する２つのキャッシュラインのプリフェッチ要求の有効性を示す。ＶＡＬ［１：０］は、値が“１”である場合に対応するエントリが有効であることを示す。ＥＸＰ(Expand)は、エントリが展開要求であるか単独要求であるかを示すフラグである。ＥＸＰが“１”の場合、エントリが展開要求であることを示す。ＣＰＵコアユニット１０からのプリフェッチ要求が展開要求である場合には、ＶＡＬ［１：０］＝１１、ＥＸＰ＝１がセットされる。一方、ＣＰＵコアユニット１０からのプリフェッチ要求が展開されない単独要求である場合には、ＰＡ［７］に対応するＶＡＬのみがセットされ、ＥＸＰ＝０がセットされる。ＨＬＤ［１：０］は、プリフェッチ要求がＬ２−パイプ２３によって処理中であるか否かを示し、ＨＬＤ［１］、ＨＬＤ［０］がそれぞれＰＡ「７」＝１、ＰＡ「７」＝０に対応する連続する２つのプリフェッチ要求が処理中であるか否かを示す。ＰＦ＿ＣＯＤＥは、排他などに関する要求の種別を示す。ＨＬＤ［１：０］は、値が“１”である場合に、プリフェッチ要求が処理中であることを示す。【００３８】
設定エントリ選択部１２０は、ＣＰＵコアユニット１０からのプリフェッチ要求を要求記憶部１１０に格納する。空エントリ選択部１３０は、要求記憶部１１０の空エントリをＶＡＬ［１：０］を用いて選択し、設定エントリ選択部１２０は、空エントリ選択部１３０により選択された空エントリにＣＰＵコアユニット１０からのプリフェッチ要求を格納する。なお、空エントリとは、ＶＡＬ［１：０］＝００のエントリである。【００３９】
ＰＦポートエントリ選択部１４０は、要求記憶部１１０が記憶する有効なエントリから要求時点が古い順に要求を選択してパイプ投入部２００に発行する。ここで、有効なエントリとは、ＶＡＬ［１］又はＶＡＬ［０］の値が１であるエントリである。また、ＰＦポートエントリ選択部１４０は、要求が展開要求である場合には、展開要求から展開された２つの要求を連続してパイプ投入部２００に発行し、パイプ投入部２００が２つの要求を連続してＬ２−パイプ２３に投入するように優先度を用いて制御する。【００４０】
このように、ＰＦポートエントリ選択部１４０が、要求が展開要求である場合に、展開要求から展開された２つの要求を連続してパイプ投入部２００に発行することによって、主記憶装置は連続する２キャッシュラインを連続的に処理することができる。【００４１】
エントリ有効信号設定部１５０は、各エントリのＶＡＬ［１：０］を設定する。図４は、エントリ有効信号設定部１５０の構成を示す図である。図４に示すように、ＣＰＵコアユニット１０からのプリフェッチ要求信号Ｃｘ＿ＰＦ＿ＲＥＱ＿ＶＡＬ［１：０］をＯＲ回路１５１が入力して各エントリのＶＡＬ［１：０］を設定する。【００４２】
また、エントリ有効信号設定部１５０は、Ｌ２−パイプ２３によるパイプライン処理の結果に基づいて各エントリのＶＡＬ［１：０］を更新する。Ｌ２−パイプ２３によるパイプライン処理の結果としては、処理が有効である場合の完了と、処理が中止される場合のアボートがある。Ｌ２−パイプ２３は、パイプライン処理の結果をエントリ番号ｎとともにＰＦポート１００に通知する。【００４３】
パイプライン処理の結果が完了であった場合には、Ｌ２−パイプ２３からの完了を示す信号ＰＩＰＥ＿ＣＰＬＴ［１：０］の否定がＡＮＤ回路１５２に入力され、エントリ有効信号設定部１５０は、ＯＲ回路１５１を介してＶＡＬ［１：０］の該当するビットを０に更新する。プリフェッチ要求が展開要求である場合には、展開された２つの要求の処理が完了すると、ＶＡＬ［１：０］＝００となり、エントリが開放される。開放されたエントリは空エントリ選択部１３０の選択対象となる。【００４４】
一方、パイプライン処理の結果がアボートであった場合には、ＶＡＬ［１：０］の該当するビットは更新されない。展開要求の場合、展開された２つの要求は時間的に連続してパイプライン処理されるが、それぞれのパイプライン処理自体は独立したものであり、一方のパイプライン処理が完了で、他方のパイプライン処理がアボートという場合もある。その場合、ＰＦポートエントリ選択部１４０は、アボートした要求を他の要求よりも優先して選択し、パイプ投入部２００にアボートした要求を再発行する。【００４５】
このように、ＰＦポートエントリ選択部１４０が、展開された２つの要求の一方だけがアボートした場合に、アボートした要求を最優先で選択することによって、主記憶装置は連続する２つのキャッシュラインを連続して処理することができる。【００４６】
なお、連続して処理する必要のある２つの要求の一方だけがアボートするのを回避するために、アボート条件が解消するまでパイプラインをストールさせることが考えられる。しかしながら、パイプラインをストールさせる場合には、パイプラインの制御回路等の構成に大きな変更が必要となる。したがって、パイプラインの制御回路の構成が主記憶装置の特性に大きく依存することとなり、接続される主記憶装置ごとにキャッシュパイプライン制御を大きく変更する必要がある。【００４７】
一方、本実施例のように、展開された２つの要求の一方だけがアボートした場合に、アボートした要求を他の要求よりも優先して処理することによって、パイプラインの制御回路の構成が主記憶装置の特性による影響を受けないようにすることができる。【００４８】
また、アボートの原因としては、ＭＩＢ(Move-In  Buffer：ムーブインバッファ)などの資源の枯渇がある。キャッシュのパイプラインは主記憶装置に比べて処理スループットが高いため、主記憶装置からの転送が最大限の性能で動作していたとしても、ＭＩＢリソースなどの資源の枯渇が発生しやすい。【００４９】
このため、Ｌ２−パイプライン制御部３００は、ＭＩＢなどの資源を管理する資源管理部３０１を備える。ＰＦポートエントリ選択部１４０は、資源管理部３０１からＭＩＢなどの資源がどれだけ利用可能かを示すレベル信号ＲＥＳＯＵＲＣＥ＿ＡＶＡＩＬを受信し、このレベル信号に基づいてパイプ投入部２００に投入する要求を選択する。【００５０】
すなわち、ＰＦポートエントリ選択部１４０は、ＲＥＳＯＵＲＣＥ＿ＡＶＡＩＬ≧２の場合には、全ての有効なエントリのプリフェッチ要求のいずれかを選択する。また、ＰＦポートエントリ選択部１４０は、ＲＥＳＯＵＲＣＥ＿ＡＶＡＩＬ＝１の場合には、ＶＡＬ［１：０］＝０１又は１０であるエントリのプリフェッチ要求のいずれかを選択する。特に、ＥＸＰ＝１であるようなプリフェッチ要求をＥＸＰ＝０であるプリフェッチ要求よりも優先して選択する。また、ＰＦポートエントリ選択部１４０は、ＲＥＳＯＵＲＣＥ＿ＡＶＡＩＬ＝０の場合には、パイプ投入部２００に投入するプリフェッチ要求を抑止する。【００５１】
このように、ＰＦポートエントリ選択部１４０が利用可能なＭＩＢの資源に基づいてプリフェッチ要求を選択することによって、Ｌ２−パイプ２３に投入されたプリフェッチ要求がアボートしないように制御することができる。また、展開要求の一方の要求だけが資源枯渇でアボートした場合にも、ＲＥＳＯＵＲＣＥ＿ＡＶＡＩＬが０から１に変化したところでアボートしたプリフェッチ要求が、他のプリフェッチ要求よりも優先的に選択されるように制御することができる。【００５２】
次に、ＰＦポートエントリ選択部１４０の処理手順について説明する。図５は、ＰＦポートエントリ選択部１４０の処理手順を示すフローチャートである。図５に示すように、ＰＦポートエントリ選択部１４０は、「（ＶＡＬ［１：０］＝０１又は１０）かつＥＸＰ＝１」なエントリ（Ａ−０）があるか否かを判定する（ステップＳ１）。すなわち、ＰＦポートエントリ選択部１４０は、展開要求でありながら、展開要求に含まれるいずれかのプリフェッチ要求がアボートして取り残されてしまったエントリ（Ａ−０）があるか否かを判定する。【００５３】
その結果、エントリ（Ａ−０）がある場合には、ＰＦポートエントリ選択部１４０は、エントリ（Ａ−０）のうち「（ＶＡＬ［１］＝１又はＶＡＬ［０］＝１）かつ（ＨＬＤ［１］＝０かつＨＬＤ［０］＝０）」の条件を満たすエントリ（Ａ−１）があるか否かを判定する（ステップＳ２）。すなわち、ＰＦポートエントリ選択部１４０は、エントリ（Ａ−０）のうちＬ２−パイプ２３に投入中ではないエントリ（Ａ−１）があるか否かを判定する。【００５４】
その結果、エントリ（Ａ−０）のうちＬ２−パイプ２３に投入中ではないエントリ（Ａ−１）がある場合には、ＰＦポートエントリ選択部１４０は、エントリ（Ａ−０）のうち最も古い要求（Ａ−２）について、その要求を受け入れられるだけの資源であるＭＩＢの空があるか否かを判定する（ステップＳ３）。【００５５】
その結果、ＰＦポートエントリ選択部１４０は、資源であるＭＩＢの空がある場合には、要求（Ａ−２）を選択してパイプ投入部２００へ要求し（ステップＳ４）、資源の空がない場合には、パイプ要求すなわちＬ２−パイプ２３による処理要求を行わない（ステップＳ６）。また、ＰＦポートエントリ選択部１４０は、エントリ（Ａ−１）がない場合にも、パイプ要求を行わない（ステップＳ５）。【００５６】
一方、エントリ（Ａ−０）がない場合には、ＰＦポートエントリ選択部１４０は、「（ＶＡＬ［１］＝０又はＶＡＬ［０］＝０）かつ（ＨＬＤ［１］＝０かつＨＬＤ［０］＝０）」を満たすエントリ（Ｂ−０）があるか否かを判定する（ステップＳ７）。すなわち、ＰＦポートエントリ選択部１４０は、Ｌ２−パイプ２３に投入中ではない有効なエントリ（Ｂ−０）があるか否かを判定する。【００５７】
その結果、ＰＦポートエントリ選択部１４０は、Ｌ２−パイプ２３に投入中ではない有効なエントリ（Ｂ−０）がある場合には、ＰＦポートエントリ選択部１４０は、エントリ（Ｂ−０）のうち最も古い要求（Ｂ−１）を受け入れられるだけのＭＩＢに空きがあるか否かを判定する（ステップＳ８）。【００５８】
その結果、ＭＩＢに空きがある場合には、ＰＦポートエントリ選択部１４０は、要求（Ｂ−１）を選択してパイプ投入部２００へ要求し（ステップＳ９）、ＭＩＢ空きがない場合には、パイプ要求を行わない（ステップＳ１１）。また、ＰＦポートエントリ選択部１４０は、エントリ（Ｂ−０）がない場合にも、パイプ要求を行わない（ステップＳ１０）。【００５９】
このように、ＰＦポートエントリ選択部１４０が、パイプ投入部２００へ発行する要求を各エントリが有するＶＡＬ［１：０］、ＨＬＤ［１：０］、ＲＥＳＯＵＲＣＥ＿ＡＶＡＩＬの値を用いて選択することによって、キャッシュメモリと主記憶装置間の転送スループットを向上させることができる。【００６０】
次に、本実施例に係るキャッシュメモリ制御装置の他の制御例について説明する。図６は、本実施例に係るキャッシュメモリ制御装置の他の制御例を示す図である。図６に示す例は、ＣＰＵコアユニット１０からの展開要求の２つ目のプリフェッチ要求がＭＩＢの枯渇によりアボートした場合を示している。【００６１】
このような場合、本実施例に係るキャッシュメモリ制御装置は、複数のエントリを有するＭＩＢに１つ空きのエントリができると、アボートしたプリフェッチ要求を他のプリフェッチ要求に優先してＬ２−パイプ２３に再投入する。したがって、本実施例に係るキャッシュメモリ制御装置は、プリフェッチ要求がアボートした場合であっても、ＣＰＵコアユニット１０からの展開要求から展開された２つのプリフェッチ要求を連続して主記憶装置に発行することができる。【００６２】
また、図６に示す例は、ＣＰＵコアユニット１０からの展開要求が展開された２つのプリフェッチ要求がＭＩＢの枯渇により全てアボートした場合も示している。このような場合、本実施例に係るキャッシュメモリ制御装置は、複数のエントリを有するＭＩＢに２つの空きができてから、アボートしたプリフェッチ要求をＬ２−パイプ２３に再投入する。したがって、本実施例に係るキャッシュメモリ制御装置は、プリフェッチ要求がアボートした場合であっても、ＣＰＵコアユニット２からの展開要求から展開された２つのプリフェッチ要求を連続して主記憶装置に発行することができる。【００６３】
次に、主記憶装置の転送能力を最大限に発揮させることができる例として、ＨＰＣ（High  Performance  Computing）におけるＳＴＲＥＡＭ計算について説明する。ＳＴＲＥＡＭ計算では、演算に使用する参照データを主記憶装置の連続した領域から転送し、別の連続した領域に演算結果を格納する処理を行う。ここで、主記憶装置からのデータ読み込みは実際にはプリフェッチにより予め読み出してキャッシュメモリに格納し、キャッシュメモリからデータをロードして演算し、演算結果を主記憶装置の別の領域に格納する。【００６４】
図７は、ＳＴＲＥＡＭ計算のプログラム例を示す図である。このプログラムでは、ループ処理において、Ｍ周先にＬｏａｄ（及びＳｔｏｒｅ）されるアドレスをプリフェッチする。ここで、Ｍとしては、Ｍ＊｛ループ処理を１周実行するのにかかる時間（クロックサイクル数）｝＞｛プリフェッチ発行から共用Ｌ２キャッシュユニット２０にデータが格納されるまでの時間(クロックサイクル数)}の条件を満たす十分大きな値を選択する。すると、このプログラムでは、プリフェッチによる主記憶装置へのアクセス時間がループ処理にかかる時間により隠蔽され、プリフェッチを利用することが性能面で有効となる。【００６５】
このプログラムでは、Ｌｏａｄ命令又はＳｔｏｒｅ命令が１次キャッシュミスするとＤＭ要求が共用Ｌ２キャッシュユニット２０へ発行され、ＤＭ要求されたデータをＭＩポート２２が受信する。Ｌｏａｄ命令及びＳｔｏｒｅ命令は例えばキャッシュミスした８バイト分のアドレスを指示するが、共用Ｌ２キャッシュユニット２０へのＤＭ要求はそのキャッシュミスした８バイト分のデータを含むキャッシュライン（ここでは１２８バイト分のデータ）全体に対するＤＭ要求となる。【００６６】
ＣＰＵコアユニット１０からのＤＭ要求を受信した共用Ｌ２キャッシュユニット２０は、パイプライン処理を行い、タグヒットならばそのヒットしたデータをＣＰＵコアユニット１０に応答する。一方、タグミスならば、共用Ｌ２キャッシュユニット２０は、主記憶装置へフェッチ要求を発行し、データ応答後にＣＰＵコアユニット１０へのデータ応答及びＬ２−タグ記憶部２５、Ｌ２−データ記憶部２４への登録を行う。共用Ｌ２キャッシュユニット２０からの応答データを受信したＣＰＵコアユニット１０はその応答データを待っているＡＬＵ１４へデータを供給するとともに１次キャッシュメモリ装置のタグの登録、Ｌ１データキャッシュメモリ１３へのデータの登録を行う。【００６７】
なお、共用Ｌ２キャッシュユニット２０へのＤＭ要求の応答を待っている間に別のＬｏａｄ命令又はＳｔｏｒｅ命令が同じキャッシュラインの異なる８バイトのアドレスを指示する場合がある。別のＬｏａｄ命令又はＳｔｏｒｅ命令が同じキャッシュラインの異なる８バイトのアドレスを指示した場合は、共用Ｌ２キャッシュユニット２０からの応答、１次キャッシュメモリ装置のタグの登録、Ｌ１データキャッシュメモリ１３へのデータの登録後に登録したデータに対して１次キャッシュヒットする順序で処理が行われる。このように、プリフェッチを利用せずに、Ｌｏａｄ命令又はＳｔｏｒｅ命令がキャッシュミスする場合には、主記憶装置の転送帯域を最大限に利用する必要性は少ないため、別のＬｏａｄ命令又はＳｔｏｒｅ命令が同じキャッシュラインの異なる８バイトのアドレスを指示しても問題とはならない。【００６８】
一方、プリフェッチ命令が１次キャッシュミスするとプリフェッチ要求が共用Ｌ２キャッシュユニット２０へ発行され、ＰＦポート１００が受信する。プリフェッチ命令は、例えば８バイトのアドレスを指示するが、共用Ｌ２キャッシュユニット２０への要求はその８バイト分のデータを含むキャッシュライン(ここでは１２８バイト分のデータ)全体に対する要求となる。ＣＰＵコアユニット１０からのプリフェッチ要求を受信した共用Ｌ２キャッシュユニット２０は、パイプライン処理を行い、タグヒットならばタグのＬＲＵをそのキャッシュラインが「最新」の状態になるように更新する。一方、タグミスならば主記憶装置へフェッチ要求発行を行い、データ応答後にＬ２−タグ記憶部２５、Ｌ２−データ記憶部２４への登録を行う。ここで、タグヒット時、タグミス時ともＣＰＵコアユニット１０へのデータ応答は行わないところがＤＭ要求との主要な違いである。【００６９】
このプログラム例で用いられるプリフェッチ命令は、従来のように１つの１２８バイトのキャッシュラインに対してプリフェッチを要求するのではなく、複数の２キャッシュラインをまとめてプリフェッチを要求する。このプリフェッチ命令は、２キャッシュライン分の連続する２５６バイト分をまとめてプリフェッチするようなプリフェッチ命令の種類を命令コード定義に拡大することによって実現される。【００７０】
このように２キャッシュラインをまとめてプリフェッチするように拡張したプリフェッチ命令を、ここでは「展開プリフェッチ命令」と呼ぶことにする。ＣＰＵコアユニット１０は、展開プリフェチ命令が１次キャッシュミスならば共用Ｌ２キャッシュユニット２０へ展開プリフェッチ命令であるという属性とともにプリフェッチ要求を発行する。その結果、共用Ｌ２キャッシュユニット２０は本実施例に示すような展開要求の制御を実現することができる。【００７１】
このプログラム例のように連続するデータ領域を隙間なく使用することがわかっている場合には、従来の１キャッシュラインに対するプリフェッチ命令を展開プリフェッチ命令で単純に置き換えることにより主記憶転送帯域を最大限に使用することが可能となる。その場合、余分に(重複して)同じキャッシュラインに対するプリフェッチ要求が発行されるが、余分な要求はパイプライン処理の際にＭＩＢとのアドレスマッチにより完了されるので問題はない。【００７２】
なお、２キャッシュラインをまとめてプリフェッチする要求は、命令実行部や１次キャッシュパイプラインなどで隣接したアドレスに対する要求をハードウエアで検出して結合するという方法が考えられる。しかしながら、そのような方法には、動作の条件によっては確実に要求を結合できるとは限らないなどの制約がある。【００７３】
一般に、展開プリフェチ命令のような新規の命令を定義することは動作仕様の変更を意味し、過去の機種との互換性などを考慮して慎重でなければならないが、２次キャッシュメモリ装置のプリフェッチ命令であればその影響を少なくすることができる。すなわち、展開プリフェッチ命令の追加については、２次キャッシュメモリ装置のパイプライン処理を変更することなく、パイプラインへの要求投入を変更するだけで実現することができる。【００７４】
なお、メモリ転送効率や、キャッシュ転送効率を向上させる方法として、キャッシュ制御パイプライン及びＭＡＣが複数のメモリバンクに分割される構成が採られ場合がある。このような場合、メモリバンクを分割するアドレスの単位は、各メモリバンク間のビジー率が均等になるようになるべくアドレスの下位ビットが選択される。例えば、キャッシュラインサイズ１２８バイトの装置において、４バンクに分割する場合、ＰＡ［８：７］のアドレス２ビットで分割することが一般的である。【００７５】
しかしながら、ソフトウエアで複数の隣接するキャッシュラインをプリフェッチする展開プリフェッチ命令を定義した場合、ＰＡ［８：７］のアドレス２ビットでバンク分けを行うとソフトウエアから見て隣接したアドレスが各バンクに分断されてしまう。そこで、主記憶装置が連続処理する単位とソフトウエアがプリフェッチを連続で発行する単位が同一のバンクに固まるようなバンク構成とすべきである。例えば、連続する２キャッシュライン分の２５６バイトを要求することを前提とするのであれば、ＰＡ［７］はバンク分けの対象とせず、同一バンクとし、ＰＡ［９：８］でバンク分けすべきである。【００７６】
上述してきたように、本実施例では、ＰＦポート１００の要求記憶部１１０に展開要求を記憶し、ＰＦポートエントリ選択部１４０が展開要求から展開される２つのプリフェッチ要求が連続してＬ２−パイプ２３に投入されるよう制御する。したがって、ＭＡＣ２７は、連続する２つのキャッシュラインの読み込み要求を連続して主記憶装置に発行することができ、主記憶装置は連続する２キャッシュラインを連続的に処理することにより転送スループットを向上させることができる。【００７７】
また、本実施例では、ＰＦポートエントリ選択部１４０が、展開された２つのプリフェッチ要求の一方だけがアボートした場合に、アボートしたプリフェッチ要求が最優先でＬ２−パイプ２３に投入されるよう制御する。したがって、展開された２つのプリフェッチ要求の一方がアボートした場合にも、Ｌ２−パイプ２３の制御構成を変更することなく、２つのプリフェッチ要求を連続してＬ２−パイプ２３に投入することができる。【００７８】
また、本実施例では、ＰＦポートエントリ選択部１４０が資源管理部３０１から利用可能な資源数を受け取り、利用可能な資源数に基づいてパイプ投入部２００に投入するプリフェッチ要求を選択する。したがって、Ｌ２−パイプ２３で資源枯渇に起因するアボートが発生しないようにすることができる。【００７９】
なお、本実施例では、ＰＦポート１００に１エントリあたり２個の要求を保持する場合について説明したが、本発明はこれに限定されるものではなく、ＰＦポート１００に１エントリあたり他の個数の要求を保持する場合にも同様に適用することができる。例えば、主記憶装置が有する構成に基づいて、４個のキャッシュラインサイズ単位を一括して処理することにより転送スループットを向上させる機能を有する場合には、ＰＦポート１００に１エントリあたり４個の要求を保持するようにすることができる。【００８０】
また、本実施例では、ＰＦポート１００に１エントリあたり２個のプリフェッチ要求を保持する場合について説明したが、本発明はこれに限定されるものではなく、ＭＩポート２３など他のポートに１エントリあたり複数のキャッシュラインの要求を保持する場合にも同様に適用することができる。【００８１】
また、本実施例では、Ｌ２−パイプ２３でタグの検索をパイプライン処理する場合について説明したが、本発明はこれに限定されるものではなく、タグの検索をパイプライン処理以外の処理によって行う場合にも同様に適用することができる。【００８２】
また、本実施例では、主記憶装置が連続した複数のキャッシュラインを連続的に処理することにより、キャッシュメモリと主記憶装置間の転送スループットを向上させる機能を有する場合について説明した。しかしながら、本発明はこれに限定されるものではなく、主記憶装置の構成により、所定の条件を満たす複数のキャッシュラインの要求を連続的に処理することにより転送スループットを向上させる機能を有する場合にも同様に適用することができる。この場合、展開要求は、所定の条件を満たす複数のキャッシュラインへの要求に展開される。【００８３】
また、本実施例では、２次キャッシュメモリ装置について説明したが、本発明はこれに限定されるものではなく、他の階層レベルのキャッシュメモリ装置にも同様に適用することができる。
【符号の説明】
【００８４】
１    ＣＰＵ
２    ＤＩＭＭ
１０    ＣＰＵコアユニット
１１    Ｌ１命令キャッシュメモリ
１２    命令デコード／発行部
１３    Ｌ１データキャッシュメモリ
１４    ＡＬＵ
１５    ＭＭＵ
１６    Ｌ１−ＭＩＢ
１７    ＰＦＱ
１８    ＭＯＢ
１９ａ  命令フェッチパイプ
１９ｂ  ロード／ストアパイプ
１９ｃ  実行パイプ
２０    共用Ｌ２キャッシュユニット
２１    ＭＯポート
２２    ＭＩポート
２３    Ｌ２−パイプ
２４    Ｌ２−データ記憶部
２５    Ｌ２−タグ記憶部
２６    Ｌ２−ＭＩＢ
２７    ＭＡＣ
２８    Ｍｏｖｅ−ｉｎデータパスバッファ／制御部
２９    Ｍｏｖｅ−ｏｕｔデータパスバッファ／制御部
１００    ＰＦポート
１１０    要求記憶部
１２０    設定エントリ選択部
１３０    空エントリ選択部
１４０    ＰＦポートエントリ選択部
１５０    エントリ有効信号
１５１    ＯＲ回路
１５２    ＡＮＤ回路
２００    パイプ投入部
３００    Ｌ２−パイプライン制御部
３０１    資源管理部
【図１】
2012127628.tif 000003
【図２】
2012127628.tif 000004
【図３】
2012127628.tif 000005
【図４】
2012127628.tif 000006
【図５】
2012127628.tif 000007
【図６】
2012127628.tif 000008
【図７】
2012127628.tif 000009
【図８】
2012127628.tif 000010
【国際調査報告】
2012127628.tif 000011
2012127628.tif 000012
2012127628.tif 000013
2012127628.tif 000014