(57)【要約】  ＣＰＵ（２０）は、メモリ（１２）に接続されている。また、ＣＰＵ（２０）は、複数のキャッシュラインを有し、データを複数のキャッシュライン毎に保持するＬ２データ記憶部４２を有する。また、ＣＰＵ（２０）は、複数のタグを有し、複数のキャッシュライン毎に保持されたデータの状態情報をキャッシュラインに対応するタグ毎に保持するＬ２タグ記憶部４１を有する。このようなＣＰＵ（２０）は、メモリ（１２）へのメモリビジー率を監視する。また、ＣＰＵ（２０）は、Ｌ２データ記憶部４２へのキャッシュビジー率を監視する。そして、ＣＰＵ（２０）は、メモリビジー率、キャッシュビジー率およびタグの各々に保持された状態情報に基づいて、キャッシュラインの各々に保持されたデータをキャッシュ制御部（３０）にメモリ（１２）へ保持させるスワップ処理を実行する。
2012127631.tif 000002
【特許請求の範囲】
【請求項１】
主記憶装置に接続される演算処理装置において、
データを保持する複数のキャッシュラインを有するキャッシュメモリ部と、
それぞれがいずれかのキャッシュラインに対応し、対応するキャッシュラインが保持するデータの状態情報を保持する複数のタグを有するタグメモリ部と、
前記主記憶装置へのアクセスを行う主記憶制御部と、
前記キャッシュメモリ部へのアクセスを行うキャッシュ制御部と、
前記主記憶制御部による前記主記憶装置へのアクセス頻度を示す第１のアクセス頻度を監視する主記憶アクセス監視部と、
前記キャッシュ制御部による前記キャッシュメモリ部へのアクセス頻度を示す第２のアクセス頻度を監視するキャッシュアクセス監視部と、
前記主記憶アクセス監視部が監視した第１のアクセス頻度、前記キャッシュアクセス監視部が監視した第２のアクセス頻度、及び、前記タグのに保持された状態情報に基づき、前記キャッシュメモリ部が有するキャッシュラインに保持されたデータの前記主記憶装置への保持を前記キャッシュ制御部に実行させるスワップ制御部とを有することを特徴とする演算処理装置。
【請求項２】
前記演算処理装置において、
前記スワップ制御部は、
前記主記憶アクセス監視部が監視した第１のアクセス頻度が第１の閾値よりも低く、且つ、前記キャッシュアクセス監視部が監視した第２のアクセス頻度が第２の閾値よりも低い場合に前記タグメモリ部の検索を前記キャッシュ制御部に開始させ、
前記タグメモリ部から、対応するデータが、前記キャッシュメモリ部のみに保持され、前記演算処理装置により更新された旨を示す状態情報を検索したとき、検索された状態情報に対応するデータの前記主記憶装置への保持を前記キャッシュ制御部に実行させることを特徴とする請求項１記載の演算処理装置。
【請求項３】
前記演算処理装置において、
前記スワップ制御部はさらに、
前記タグメモリ部の検索を開始した後、前記キャッシュメモリ部のみに保持された対応するデータが前記演算処理装置により更新された旨を表す状態情報を検索したとき、前記キャッシュ制御部に、検索した状態情報に対応するデータを前記主記憶装置へ保持させるとともに、検索した状態情報を、対応するデータが前記キャッシュメモリ部のみに保持され前記主記憶の対応するアドレスのデータと等しい旨を示す状態情報に変更することを特徴とする請求項２記載の演算処理装置。
【請求項４】
前記演算処理装置はさらに、
前記主記憶装置へのアクセスを行うコマンドを保持する複数の第１のエントリを有する主記憶アクセスコマンド保持部を有し、
前記主記憶アクセス監視部は、
前記主記憶アクセスコマンド保持部の第１のエントリに保持されたコマンドの数に基づいて、前記第１のアクセス頻度を監視することを特徴とする請求項１〜３のいずれか１項記載の演算処理装置。
【請求項５】
前記演算処理装置はさらに、
前記キャッシュメモリ部へのアクセスを行うコマンドを保持する複数の第２を有するキャッシュアクセスコマンド保持部を有し、
前記キャッシュアクセス監視部は、
前記キャッシュアクセスコマンド保持部の第２のエントリに保持されたコマンドの数に基づいて、前記第２のアクセス頻度を監視することを特徴とする請求項１〜３のいずれか１項記載の演算処理装置。
【請求項６】
主記憶装置と、前記主記憶装置に接続される演算処理装置とを有する情報処理装置において、
前記演算処理装置は、
それぞれがデータを保持する複数のキャッシュラインを有するキャッシュメモリ部と、
いずれかのキャッシュラインに対応し、対応するキャッシュラインが保持するデータの状態情報を保持する複数のタグを有するタグメモリ部と、
前記主記憶装置へのアクセスを行う主記憶制御部と、
前記キャッシュメモリ部へのアクセスを行うキャッシュ制御部と、
前記主記憶制御部による前記主記憶装置へのアクセス頻度を示す第１のアクセス頻度を監視する主記憶アクセス監視部と、
前記キャッシュ制御部による前記キャッシュメモリ部へのアクセス頻度を示す第２のアクセス頻度を監視するキャッシュアクセス監視部と、
前記主記憶アクセス監視部が監視した第１のアクセス頻度、前記キャッシュアクセス監視部が監視した第２のアクセス頻度、及び、前記タグに保持された状態情報に基づき、前記キャッシュラインに保持されたデータの前記主記憶装置への保持を前記キャッシュ制御部に実行させるスワップ制御部を有することを特徴とする情報処理装置。
【請求項７】
前記情報処理装置において、
前記スワップ制御部は、
前記主記憶アクセス監視部が監視した第１のアクセス頻度が第１の閾値よりも低く、且つ、前記キャッシュアクセス監視部が監視した第２のアクセス頻度が第２の閾値よりも低い場合、前記タグメモリ部の検索を前記キャッシュ制御部に開始させるとともに、対応するデータが前記キャッシュメモリ部のみに保持された後に前記演算処理装置により更新された旨を示す状態情報を検索したとき、検索した状態情報に対応するデータの前記主記憶装置への保持を前記キャッシュ制御部に実行させることを特徴とする請求項６記載の情報処理装置。
【請求項８】
前記情報処理装置において、
前記スワップ制御部はさらに、
前記タグメモリ部の検索を開始した後、対応するデータが前記キャッシュメモリ部のみに保持された対応するデータが前記演算処理装置により更新された旨を表す状態情報を検索したとき、前記キャッシュ制御部に、検索した状態情報に対応するデータを前記主記憶装置へ保持させるとともに、検索した状態情報を、対応するデータが前記キャッシュメモリ部のみに保持され、対応するデータが前記キャッシュメモリ部のみに保持され前記主記憶装置の対応するアドレスのデータと等しい旨を示す状態情報に変更することを特徴とする請求項７記載の情報処理装置。
【請求項９】
前記情報処理装置において、
前記演算処理装置はさらに、
複数の第１のエントリを有し、前記主記憶装置へのアクセスを行うコマンドを保持する複数の第１のエントリを有する主記憶アクセスコマンド保持部を有し、
前記主記憶アクセス監視部は、
前記主記憶アクセスコマンド保持部の第１のエントリに保持されたコマンドの数に基づいて、前記第１のアクセス頻度を監視することを特徴とする請求項６〜８のいずれか１項記載の情報処理装置。
【請求項１０】
前記情報処理装置において、
前記演算処理装置はさらに、
前記キャッシュメモリ部へのアクセスを行うコマンドを保持する複数の第２のエントリを有するキャッシュアクセスコマンド保持部を有し、
前記キャッシュアクセス監視部は、
前記キャッシュアクセスコマンド保持部の前記複数の第２のエントリに保持されたコマンドの数に基づいて、前記キャッシュ制御部による前記キャッシュメモリ部への第２のアクセス頻度を監視することを特徴とする請求項６〜８のいずれか１項記載の情報処理装置。
【請求項１１】
主記憶装置に接続される演算処理装置の制御方法において、
前記演算処理装置の有する主記憶アクセス監視部が、前記主記憶制御部による前記主記憶装置へのアクセス頻度である第１のアクセス頻度を監視するステップと、
前記演算処理装置が有するキャッシュアクセス監視部が、それぞれがデータを保持するキャッシュラインを複数有するキャッシュメモリ部への前記キャッシュ制御部によるアクセス頻度である第２のアクセス頻度を監視するステップと、
前記演算処理装置が有するスワップ制御部が、前記主記憶アクセス監視部が監視した第１のアクセス頻度、前記キャッシュアクセス監視部が監視した第２のアクセス頻度、及び、対応するキャッシュラインによるデータの状態情報を保持する複数のタグを有するタグメモリ部のタグが保持する状態情報に基づき、前記キャッシュ制御部に、前記キャッシュメモリ部が有する前記キャッシュラインに保持されたデータを前記主記憶装置へ保持させるステップを有することを特徴とする演算処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置、情報処理装置および演算処理装置の制御方法に関する。
【背景技術】
【０００２】
従来、メモリコントローラとキャッシュメモリとを有する演算処理装置が知られている。このような演算処理装置の一例として、新たなデータを自装置のキャッシュメモリにキャッシュする際に、新たなデータと既にキャッシュされたデータとを入れ換えるスワップ処理を実行するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）が知られている。【０００３】
図１６は、従来のＣＰＵを説明するための図である。図１６に示す例では、ＣＰＵ６０は、命令実行部６１、Ｌ１（レベル１）キャッシュ制御部６２、Ｌ２（レベル２）キャッシュ制御部６５、メモリ制御部６８、ＬＳＩ間通信制御部６９を有する。また、ＣＰＵ６０は、メインメモリであるメモリ７０、他のＣＰＵ７１〜７３およびクロスバスイッチ（ＸＢ）７４と接続されている。【０００４】
ここで、Ｌ１キャッシュ制御部６２は、キャッシュデータの状態を示すタグデータをキャッシュエントリごとに記憶するＬ１タグ記憶部６３と、キャッシュデータをキャッシュエントリごとに記憶するＬ１データ記憶部６４とを有する。同様に、Ｌ２キャッシュ制御部６５は、キャッシュデータの状態を示すタグデータをキャッシュエントリごとに記憶するＬ２タグ記憶部６６とキャッシュデータをキャッシュエントリごとに記憶するＬ２データ記憶部６７とを有する。【０００５】
このようなＣＰＵ６０は、ＬＳＩ間通信制御部６９を介して、主記憶装置としてのメモリ７０に格納されたデータを取得するだけでなく、各ＣＰＵ７１〜７３に接続されたメモリ、およびＸＢ７４に接続された他のＣＰＵに接続されたメモリ等からデータを取得する。また、ＣＰＵ６０は、ＬＳＩ間通信制御部６９を介して、各ＣＰＵ７１〜７３や、ＸＢ７４に接続された他のＣＰＵからデータのリード要求を受信した場合には、自身がキャッシュしているデータのうち、リード要求の対象となるデータを送信する。【０００６】
以下、ＣＰＵ６０が有するＬ２キャッシュ制御部６５がメモリ７０からデータを取得する例について説明する。例えば、Ｌ２キャッシュ制御部６５は、命令実行部６１によって要求されたデータがＬ２データ記憶部６７に記憶されていない場合には、メモリ７０から要求対象のデータを取得する。そして、Ｌ２キャッシュ制御部６５は、新たにデータを登録することができるキャッシュエントリを検索する。【０００７】
ここで、Ｌ２キャッシュ制御部６５は、新たにデータを登録できるキャッシュエントリが存在しないと判別した場合には、ＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）等のアルゴリズムを用いて、データを格納するキャッシュエントリを選択する。その後、Ｌ２キャッシュ制御部６５は、選択したキャッシュエントリのデータと取得したデータとを入れ換えるスワップ処理を実行する。なお、例示したＬＲＵアルゴリズムとは、最も長い期間アクセスされなかったキャッシュエントリをリプレースするアルゴリズムである。【０００８】
以下、Ｌ２キャッシュ制御部６５が実行するスワップ処理の流れについて説明する。図１７は、キャッシュエントリのデータのステータスと実行する処理とを説明するための図である。図１７に示す例では、各キャッシュエントリのタグデータには、同じキャッシュエントリのキャッシュデータの状態を示す情報として、ＭＥＳＩプロトコル（イリノイプロトコル）における「Ｍｏｄｉｆｉｅｄ」、「Ｅｘｃｌｕｓｉｖｅ」、「Ｓｈａｒｅｄ」、「Ｉｎｖａｌｉｄ」のいずれかが含まれている。【０００９】
「Ｉｎｖａｌｉｄ」とは、キャッシュエントリのデータが無効なデータであることを示す。このため、Ｌ２キャッシュ制御部６５は、選択したキャッシュエントリのタグデータに「Ｉｎｖａｉｌｄ」が含まれていた場合には、メモリ７０から取得したデータを選択したキャッシュエントリのデータとしてＬ２データ記憶部６７に記憶させる。【００１０】
また、「Ｓｈａｒｅｄ」とは、キャッシュエントリのデータがＣＰＵ６０と他のＣＰＵによって共有され、かつ、キャッシュ元のメモリのデータと同値であることを示す。また、「Ｅｘｃｌｕｓｉｖｅ」とは、データがＣＰＵ６０のみで用いられるキャッシュデータであり、キャッシュ元のメモリのデータと同値であることを示す。【００１１】
このため、Ｌ２キャッシュ制御部６５は、選択したキャッシュエントリのタグデータが「Ｓｈａｒｅｄ」または「Ｅｘｃｌｕｓｉｖｅ」を示している場合には、選択したキャッシュエントリに登録されていたキャッシュデータを破棄する。そして、Ｌ２キャッシュ制御部６５は、メモリ７０から取得したデータを選択したキャッシュエントリのデータとしてＬ２データ記憶部６７に記憶させる。【００１２】
一方、「Ｍｏｄｉｆｉｅｄ」とは、ＣＰＵ６０のみで用いられるデータであり、ＣＰＵ６０が当該データを更新したことにより、メインメモリ上のデータとは同一ではないことを示す。このため、Ｌ２キャッシュ制御部６５は、選択したキャッシュエントリのタグデータに「Ｍｏｄｉｆｉｅｄ」が含まれていた場合には、コヒーレンシを保持するため、キャッシュエントリに登録されていたデータをメモリ７０に書込むライトバック処理を行う。その後、Ｌ２キャッシュ制御部６５は、メモリ７０から取得したデータを選択したキャッシュエントリのデータとしてＬ２データ記憶部６７に記憶させる。【００１３】
ここで、図１８は、ライトバック処理を行わないスワップ処理の流れを説明するための図である。図１８に示す例では、Ｌ２キャッシュ制御部６５は、リード要求されたデータをＬ２データ記憶部６７から検索する。そして、Ｌ２キャッシュ制御部６５は、要求されたデータがＬ２データ記憶部６７に記憶されていない場合には、メモリ制御部６８にリード要求のみを発行する。このような場合には、メモリ制御部６８は、メモリ７０からリード要求の対象となるデータを取得し、取得したデータをＬ２キャッシュ制御部６５に応答として送信する。【００１４】
一方、図１９は、ライトバック処理を行うスワップ処理の流れを説明するための図である。図１９に示す例では、Ｌ２キャッシュ制御部６５は、要求されたデータがＬ２データ記憶部６７に記憶されていない場合には、データのリード要求とともに、ライトバック処理としてキャッシュデータをメモリに書き込むライト要求を発行する。このような場合には、メモリ制御部６８は、リード要求の対象となるデータをメモリ７０から取得し、取得したデータをＬ２キャッシュ制御部６５に応答として送信する。その後、Ｌ２キャッシュ制御部６５は、ライト要求の対象となるデータをメモリ７０に書込む処理を実行する。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】特開平０６−３０９２３１号公報
【特許文献２】特開昭５９−０８７６８４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１６】
しかしながら、上述したスワップ処理を実行する技術では、新たにキャッシュデータを登録できるキャッシュエントリが存在しないと判別した場合にスワップ処理を実行する。このため、ライトバック処理を行うスワップ処理が連続して発生した場合には、リード要求とライト要求との組を連続して発行するので、メインメモリ及びＣＰＵとメモリを接続するメモリバスのビジー率を上昇させてしまう。結果として、上述したスワップ処理を実行する技術では、効率良くデータにアクセスすることができないという問題があった。【００１７】
図２０は、ライトバック処理を行わないスワップ処理が連続して発生した場合の処理を説明するための図である。図２０に示す例では、Ｌ２キャッシュ制御部６５は、ライトバック処理を行わないスワップ処理が連続して発生した場合には、複数のリード要求ＲＤ１〜３を順次メモリ制御部６８に発行する。このため、メモリ制御部６８は、メモリ７０から各リード要求ＲＤ１〜３の対象となるデータを順番に取得し、取得したデータをＬ２キャッシュ制御部６５に応答として送信する。【００１８】
一方、図２１は、ライトバック処理を行うスワップ処理が連続して発生した場合の処理を説明するための図である。図２１に示すように、Ｌ２キャッシュ制御部６５は、ライトバック処理を行うスワップ処理が連続して発生した場合には、各リード要求ＲＤ１〜３とライトバック処理に関わるライト要求ＷＴ１〜３とを交互に発行する。つまり、Ｌ２キャッシュ制御部６５は、ライトバック処理を行うスワップ処理が連続して発生した場合には、リード要求とライト要求との組を連続してメモリ制御部６８に発行する。このため、メモリ制御部６８がデータの読み込みと書込みを交互に実行する結果、後続のリード要求に対する応答が遅くなるので、効率良くデータにアクセスできない。【００１９】
本願に開示の技術は、上述した問題に鑑みてなされたものであって、ＣＰＵに対するメモリのデータ応答の性能を改善する。
【課題を解決するための手段】
【００２０】
一つの側面では、主記憶装置に接続される演算処理装置である。また、演算処理装置は、複数のキャッシュラインを有し、データを複数のキャッシュライン毎に保持するキャッシュメモリ部を有する。また、演算処理装置は、複数のタグを有し、複数のキャッシュライン毎に保持されたデータの状態情報をキャッシュラインに対応するタグ毎に保持するタグメモリ部を有する。また、演算処理装置は、主記憶装置へのアクセスを行う主記憶制御部を有する。また、演算処理装置は、キャッシュメモリ部へのアクセスを行うキャッシュ制御部を有する。また、演算処理装置は、主記憶制御部による主記憶装置への第１のアクセス頻度を監視する主記憶アクセス監視部を有する。また、演算処理装置は、キャッシュ制御部によるキャッシュメモリ部への第２のアクセス頻度を監視するキャッシュアクセス監視部を有する。そして、演算処理装置は、第１のアクセス頻度、第２のアクセス頻度、及び、複数のタグの各々に保持された状態情報に基づき、キャッシュラインの各々に保持されたデータを、キャッシュ制御部に主記憶装置へ保持させるスワップ制御部を有する。
【発明の効果】
【００２１】
本願に開示の技術は、一つの態様によれば、データ応答の性能を改善する。
【図面の簡単な説明】
【００２２】
【図１】図１は、実施例１に係るサーバを説明するための図である。
【図２】図２は、実施例１に係るシステムボードを説明するための図である。
【図３】図３は、実施例１に係るＣＰＵを説明するための図である。
【図４】図４は、実施例１に係るメモリ制御部を説明するための図である。
【図５】図５は、メモリビジー率監視部が先行スワップ起動部に通知するビジー率を説明するための図である。
【図６】図６は、実施例１に係るＬ２キャッシュ制御部を説明するための図である。
【図７】図７は、先行スワップ起動部を説明するための図である。
【図８】図８は、先行スワップ処理の起動条件の一例を説明するための図である。
【図９】図９は、先行スワップ処理の対象となるエントリを検索する処理を説明するための図である。
【図１０】図１０は、先行スワップ処理の対象を説明するための図である。
【図１１】図１１は、先行スワップ処理の流れを説明するための図である。
【図１２】図１２は、先行スワップの対象となるエントリを検索する処理を説明するためのフローチャートである。
【図１３】図１３は、先行スワップ起動条件判定処理の流れを説明するためのフローチャートである。
【図１４】図１４は、エントリを検索する処理について詳しく説明するためのフローチャートである。
【図１５】図１５は、ＳＭＰ方式が適用された各ＣＰＵが有するキャッシュ状態の遷移の一例を説明するための図である。
【図１６】図１６は、従来のＣＰＵを説明するための図である。
【図１７】図１７は、キャッシュエントリのデータのステータスと実行する処理とを説明するための図である。
【図１８】図１８は、ライトバック処理を行わないスワップ処理の流れを説明するための図である。
【図１９】図１９は、ライトバック処理を行うスワップ処理の流れを説明するための図である。
【図２０】図２０は、ライトバック処理を行わないスワップ処理が連続して発生した場合の処理を説明するための図である。
【図２１】図２１は、ライトバック処理を行うスワップ処理が連続して発生した場合の処理を説明するための図である。
【発明を実施するための形態】
【００２３】
以下に添付図面を参照して演算処理装置、情報処理装置および演算処理装置の制御方法の実施形態について説明する。
【実施例１】
【００２４】
以下の実施例１では、図１を用いて、複数の演算処理装置としてのＣＰＵ（Central  Processing  Unit）を有する情報処理装置としてのサーバの一例を説明する。図１は、実施例１に係るサーバを説明するための図である。図１に示すように、サーバ１は、クロスバスイッチ（以下、単にＸＢとする。）２およびＸＢ３などを有する。また、ＸＢ２には、複数のシステムボード（以下、単にＳＢとする。）４〜７などが接続されている。また、ＸＢ３には、ＳＢ８〜１１などが接続されている。なお、図１に示すクロスバスイッチおよびシステムボードの数はあくまで例示であり、これに限定されるものではない。【００２５】
各ＸＢ２、ＸＢ３は、各ＳＢ４〜１１間でやり取りされるデータの経路を動的に選択するスイッチである。また、各ＸＢ２、ＸＢ３に接続されるＳＢ４〜１１は、ＣＰＵとメモリを搭載する処理装置であり、同様の構成を有するので、以下の説明では、ＳＢ４についてのみ説明する。【００２６】
図２は、実施例１に係るシステムボードを説明するための図である。図２に示す例では、ＳＢ４は、複数のメモリ１２〜１５、および、複数のＣＰＵ２０〜２３を有する。各ＣＰＵ２０〜２３は、相互に接続されており、本実施の形態で開示する演算処理装置である。また、ＣＰＵ２０〜２３は、それぞれメモリ１２〜１５と接続される。なお、ＣＰＵ２１〜２３は、ＣＰＵ２０と同様の構成を有するので、以下の説明では、ＣＰＵ２０についてのみ説明する。【００２７】
ＣＰＵ２０は、メインメモリであるメモリ１２に格納されたデータを取得することができ、また、他のＣＰＵ２１〜２３を介して、各メモリ１３〜１５に格納されたデータを取得することができる。また、各ＣＰＵ２０〜２３は、ＸＢ２と接続されており、ＸＢ２に接続されたＸＢ３（図２には不図示）と接続されたＳＢ８〜９が有するメモリに格納されたデータを取得することができる。【００２８】
図３は、実施例１に係るＣＰＵを説明するための図である。図３に示す例では、ＣＰＵ２０は、命令実行部２４、Ｌ１（レベル１）キャッシュ制御部２５、ＬＳＩ間通信制御部２８、メモリ制御部３０、Ｌ２（レベル２）キャッシュ制御部４０を有する。【００２９】
Ｌ１キャッシュ制御部２５は、タグデータを記憶するＬ１タグ記憶部２６とキャッシュデータを記憶するＬ１データ記憶部２７とを有する。メモリ制御部３０は、コマンドキュー記憶部３１、ライトデータバッファ３２、応答データバッファ３３、メモリアクセス実行部３４、メモリビジー率監視部３５を有する。【００３０】
また、Ｌ２キャッシュ制御部４０は、タグデータを記憶するＬ２タグ記憶部４１とキャッシュデータを記憶するＬ２データ記憶部４２とを有する。また、Ｌ２キャッシュ制御部４０は、コマンドキュー記憶部４３、ライトデータバッファ４４、応答データバッファ４５、キャッシュビジー率監視部４６、先行スワップ起動部４７、キャッシュアクセス実行部４８を有する。【００３１】
以下、ＣＰＵ２０が有する各部が実行する処理について説明する。命令実行部２４は、Ｌ１キャッシュ制御部２５が有するキャッシュデータを用いて、処理を実行するＣＰＵ２０のプロセッサコアである。例えば、命令実行部２４は、Ｌ１キャッシュ制御部２５に対して、メモリ１２の仮想アドレスを送信し、送信した仮想アドレスに格納されていたデータをＬ１キャッシュ制御部２５から取得する。【００３２】
Ｌ１キャッシュ制御部２５は、命令実行部２４が利用するＬ１キャッシュメモリを制御する。具体的には、Ｌ１キャッシュ制御部２５は、キャッシュデータの状態を示す情報をキャッシュラインごとに保持するＬ１タグ記憶部２６と、キャッシュラインごとにキャッシュデータを保持するＬ１データ記憶部２７とを有するとともに、Ｌ１タグ記憶部２６７とＬ１データ記憶部を制御する。Ｌ１キャッシュ制御部２５は、命令実行部２４からデータの要求を取得した場合には、命令実行部２４によって要求されたキャッシュデータをＬ１データ記憶部２７から検索する。【００３３】
そして、Ｌ１キャッシュ制御部２５は、検索の結果、要求されたキャッシュデータがＬ１データ記憶部２７に記憶されていた場合には、要求されたキャッシュデータをＬ１データ記憶部２７から読み出し、命令実行部２４へ送信する。また、Ｌ１キャッシュ制御部２５は、検索の結果、要求されたキャッシュデータがＬ１データ記憶部２７に含まれていない場合には、要求されたキャッシュデータの送信を要求するリードコマンドをＬ２キャッシュ制御部４０に送信する。【００３４】
ＬＳＩ間通信制御部２８は、ＣＰＵ２０と他のＣＰＵ２１〜２３およびＸＢ２との間の通信を制御する。例えば、ＬＳＩ間通信制御部２８は、ＣＰＵ２１からメモリ１２に格納されたデータに対するリード要求を受信する。このような場合には、ＬＳＩ間通信制御部２８は、Ｌ２キャッシュ制御部４０にリード要求の対象となるデータを要求する。【００３５】
ここで、ＬＳＩ間通信制御部２８からメモリ１２に格納されたデータを要求されたＬ２キャッシュ制御部４０は、メモリ１２からデータを取得し、取得したデータをＬＳＩ間通信制御部２８へ送信する。その後、ＬＳＩ間通信制御部２８は、Ｌ２キャッシュ制御部４０から取得したデータをＣＰＵ２１へ送信する。【００３６】
なお、以下の説明では、ＣＰＵ２０がメモリ１２に格納されたデータをキャッシュする処理、および、ＣＰＵ２０がメモリ１２からキャッシュされたデータをスワップ処理の対象とする例について説明する。【００３７】
メモリ制御部３０は、メモリ１２に対してアクセスを行う。以下、図４を用いて、メモリ制御部３０が有する各部について説明する。図４は、実施例１に係るメモリ制御部を説明するための図である。【００３８】
コマンドキュー記憶部３１は、Ｌ２キャッシュ制御部４０が有するキャッシュアクセス実行部４８からデータのリードを要求するリードコマンド、又は、データの書込みを要求するライトコマンドを受信した場合には、受信したコマンドを保持する。そして、コマンドキュー記憶部３１は、保持した各コマンドをキャッシュアクセス実行部４８から受信した順番でメモリアクセス実行部３４に投入する。【００３９】
ライトデータバッファ３２は、Ｌ２キャッシュ制御部４０が有するライトデータバッファ４４からライト要求の対象となるライトデータを受信した場合には、受信したライトデータを保持するバッファである。【００４０】
例えば、ライトデータバッファ３２には、キャッシュアクセス実行部４８からコマンドキュー記憶部３１にライトコマンドが発行されると同時に、Ｌ２キャッシュ制御部４０のライトデータバッファ４４からライトデータを受信する。このような場合には、ライトデータバッファ３２は、受信したライトデータを保持する。また、ライトデータバッファ３２は、メモリアクセス実行部３４からライトデータの要求があった場合には、保持するライトデータのうち、最も先に受信したライトデータをメモリアクセス実行部３４に送信する。【００４１】
応答データバッファ３３は、リード要求の対象となるデータをメモリ１２から受信した場合には、受信したリードデータを保持する。そして、応答データバッファ３３は、リード要求に対するデータ応答として、保持したリードデータをメモリ１２から受信した順番でＬ２キャッシュ制御部４０の応答データバッファ４５へ送信する。【００４２】
メモリアクセス実行部３４は、メモリ１２にアクセスし、メモリ１２からデータの取得、および、メモリ１２へのデータの書込みを行う。具体的には、メモリアクセス実行部３４は、コマンドキュー記憶部３１からコマンドの投入を受け付けた場合には、受け付けたコマンドがリードコマンドであるかライトコマンドであるかを判別する。【００４３】
そして、メモリアクセス実行部３４は、受け付けたコマンドがリードコマンドであると判別した場合には、メモリ１２に格納されたデータのうち、リードコマンドが示すアドレスに格納されたデータを要求するメモリアクセスコマンドをメモリ１２に発行する。【００４４】
また、メモリアクセス実行部３４は、受け付けたコマンドがライトコマンドであると判別した場合には、ライトデータバッファ３２に、受付けたライトコマンドに付随するライトデータを保持する。その後、メモリアクセス実行部３４は、ライトデータバッファ３２からライトデータを取得した場合には、ライトコマンドが示すアドレスにデータの書込みを要求するメモリアクセスコマンドをメモリ１２に発行する。また、メモリアクセス実行部３４は、ライトデータバッファ３２から取得したライトデータをメモリライトデータとしてメモリ１２に送信する。【００４５】
メモリビジー率監視部３５は、メモリ制御部３０によるメモリ１２へのアクセス頻度を監視する。具体的には、メモリビジー率監視部３５は、コマンドキュー記憶部３１が保持するコマンドの数を計数する。そして、メモリビジー率監視部３５は、計数したコマンドの数に基づいて、メモリ１２への第１のアクセス頻度、つまりメモリ１２のビジー率を監視する。その後、メモリビジー率監視部３５は、監視したビジー率をＬ２キャッシュ制御部４０が有する先行スワップ起動部４７に通知する。【００４６】
図５は、メモリビジー率監視部が先行スワップ起動部に通知するビジー率を説明するための図である。例えば、図５に示す例では、メモリビジー率監視部３５は、コマンドキュー記憶部３１が保持するコマンドの数を計数する。そして、メモリビジー率監視部３５は、コマンドキュー記憶部３１がコマンドを保持していない場合には、ビジー率が「小」であると判別する。このような場合には、メモリビジー率監視部３５は、先行スワップ起動部４７に対して、メモリ１２のビジー率が「小」であることを通知する。【００４７】
また、メモリビジー率監視部３５は、コマンドキュー記憶部３１が保持するコマンドの数が「１〜４」エントリの範囲内である場合には、メモリ１２のビジー率が「中」であると判別する。このような場合には、メモリビジー率監視部３５は、先行スワップ起動部４７に対して、メモリ１２のビジー率が「中」であることを通知する。【００４８】
また、メモリビジー率監視部３５は、コマンドキュー記憶部３１が保持するコマンドの数が「５」エントリ以上である場合には、メモリ１２のビジー率が「大」であると判別する。このような場合には、メモリビジー率監視部３５は、先行スワップ起動部４７に対して、メモリ１２のビジー率が「大」であることを通知する。なお、図５に例示した判別基準は、あくまで一例であり、ビジー率を判別するコマンドの数は、他の設定であっても良い。例えば、単位時間当たりの計数されたコマンドの数を、メモリ１２のビジー率として算出してもよい。【００４９】
このように、メモリ制御部３０は、メモリ１２のビジー率を監視するメモリビジー率監視部３５を有し、監視したメモリビジー率をＬ２キャッシュ制御部４０の先行スワップ起動部４７に通知する。後述するように、先行スワップ起動部４７は、メモリビジー率監視部３５から通知されたビジー率に応じて、ライトバック処理を先行して実行する。【００５０】
例えば、先行スワップ起動部４７は、メモリビジー率監視部３５が監視したビジー率が「小」である場合には、ライトバック処理を先行して実行する。このため、ＣＰＵ２０は、通常のメモリアクセスに係るデータ応答の性能を落とすことなく、ライトバック処理を先行して実行することができる。【００５１】
図３に戻って、Ｌ２キャッシュ制御部４０は、Ｌ２データ記憶部４２へのアクセスを行う。以下、図６を用いて、Ｌ２キャッシュ制御部４０が有する各部４１〜４８について説明する。図６は、実施例１に係るＬ２キャッシュ制御部を説明するための図である。【００５２】
Ｌ２タグ記憶部４１は、複数のタグデータを有し、後述するＬ２データ記憶部４２がキャッシュラインごとに保持する各キャッシュデータの状態を示すタグデータをキャッシュラインごとに保持する。具体的には、Ｌ２タグ記憶部４１は、Ｌ２データ記憶部４２が保持する各キャッシュデータの状態が「Ｉｎｖａｌｉｄ」、「Ｓｈａｒｅｄ」、「Ｅｘｃｌｕｓｉｖｅ」、「Ｍｏｄｉｆｉｅｄ」のいずれかを示すタグデータを保持する。【００５３】
Ｌ２データ記憶部４２は、複数のキャッシュラインを有し、キャッシュデータをキャッシュラインごとに保持する。また、Ｌ２データ記憶部４２は、キャッシュアクセス実行部４８からリード指示を受け付けた場合には、後述する応答データバッファ４５が応答データとしてメモリ制御部３０から受信したデータ、つまり、新たにメモリ１２から読み出されたデータを取得する。そして、Ｌ２データ記憶部４２は、取得したデータを新たなキャッシュデータとして、受け付けたリード指示が示すアドレスに対応するキャッシュラインアドレスに保持する。【００５４】
また、Ｌ２データ記憶部４２は、キャッシュアクセス実行部４８からＬ１キャッシュ制御部２５に対するデータ応答の指示を取得した場合には、データ応答の指示が示すキャッシュラインアドレスに格納されたキャッシュデータを応答データバッファ４５に送信する。また、Ｌ２データ記憶部４２は、キャッシュアクセス実行部４８からライト指示を取得した場合には、取得したライト指示が示すキャッシュラインアドレスに格納されたキャッシュデータをライトデータバッファ４４に送信する。【００５５】
コマンドキュー記憶部４３は、Ｌ１キャッシュ制御部２５からリードコマンドを受信した場合には、受信したリードコマンドを保持する。そして、コマンドキュー記憶部４３は、保持したリードコマンドをＬ１キャッシュ制御部２５から受信した順番でキャッシュアクセス実行部４８に投入する。【００５６】
ライトデータバッファ４４は、Ｌ２データ記憶部４２からキャッシュデータ、つまり、メモリ１２に書込まれるメモリライトデータを受信した場合には、受信したメモリライトデータを保持する。その後、ライトデータバッファ４４は、受信したメモリライトデータをメモリ制御部３０のライトデータバッファ３２へ送信する。【００５７】
応答データバッファ４５は、メモリ制御部３０が有する応答データバッファ３３から応答データ、つまり新たにメモリ１２から読み出されたデータを受信した場合には、受信したデータを保持する。また、応答データバッファ４５は、Ｌ２データ記憶部４２からキャッシュデータ、つまり、Ｌ２データ記憶部４２にキャッシュされていたデータを受信した場合には、受信したデータを保持する。そして、応答データバッファ４５は、保持した各データを、応答データバッファ３３又はＬ２データ記憶部４２から受信した順番で、Ｌ１キャッシュ制御部２５へ送信する。【００５８】
キャッシュビジー率監視部４６は、キャッシュアクセス実行部４８によるＬ２データ記憶部４２へのアクセス頻度を監視する。具体的には、キャッシュビジー率監視部４６は、コマンドキュー記憶部４３が保持するコマンドの数を計数する。そして、キャッシュビジー率監視部４６は、計数したコマンドの数に基づいて、Ｌ２データ記憶部４２へのアクセス頻度、つまりＬ２データ記憶部４２のビジー率を監視する。その後、キャッシュビジー率監視部４６は、監視したビジー率を先行スワップ起動部４７に通知する。【００５９】
ここで、コマンドキュー記憶部４３が保持するコマンドの数は、後にＬ２データ記憶部４２に対してキャッシュアクセス実行部４８がこれからアクセスを行う回数である。つまり、キャッシュビジー率監視部４６が監視するビジー率とは、Ｌ２データ記憶部４２のビジー率である。【００６０】
また、後述するように、キャッシュアクセス実行部４８は、コマンドが示すキャッシュデータがＬ２データ記憶部４２に格納されていなかった場合には、メモリ１２に格納されたデータのリードを要求するメモリアクセスコマンドをメモリ制御部３０に発行する。このため、キャッシュビジー率監視部４６は、コマンドキュー記憶部４３が保持するコマンドの数を計数することによって、メモリ１２における将来のメモリビジー率を予測することができる。【００６１】
後述するように、先行スワップ起動部４７は、メモリ制御部３０のメモリビジー率監視部３５から通知されたメモリビジー率とＬ２キャッシュ制御部４０のキャッシュビジー率監視部４６から通知されたキャッシュビジー率を取得する。そして、先行スワップ起動部４７は、取得したメモリビジー率とキャッシュビジー率とに基づいて、スワップ処理を実行するタイミングを決定する。【００６２】
このため、先行スワップ起動部４７は、現在のメモリビジー率が一定量よりも低く、かつ、予測される将来のメモリビジー率が一定量よりも低いタイミングで、スワップ処理を先行して行うことができる。【００６３】
例えば、キャッシュビジー率監視部４６は、メモリビジー率監視部３５と同様に、コマンドキュー記憶部４３がコマンドを保持していない場合には、キャッシュビジー率が「小」であると判別する。また、キャッシュビジー率監視部４６は、コマンドキュー記憶部４３が保持するコマンドの数が「１〜４」の範囲内である場合には、キャッシュビジー率が「中」であると判別する。【００６４】
また、例えば、キャッシュビジー率監視部４６は、コマンドキュー記憶部４３が保持するコマンドの数が「５」以上である場合には、キャッシュビジー率が「大」であると判別する。その後、キャッシュビジー率監視部４６は、判別したキャッシュビジー率を先行スワップ起動部４７に通知する。【００６５】
先行スワップ起動部４７は、メモリビジー率監視部３５が監視したメモリビジー率とキャッシュビジー率監視部４６が監視したキャッシュビジー率とを取得する。そして、先行スワップ起動部４７は、取得したメモリビジー率とキャッシュビジー率に基づいて、キャッシュアクセス実行部４８にスワップ処理を行わせるか否かを判別する。【００６６】
その後、先行スワップ起動部４７は、先行スワップを行わせると判別した場合には、スワップ処理の実行を示す先行スワップコマンドとともに、スワップ処理の対象となるキャッシュラインアドレスをキャッシュアクセス実行部４８に投入する。【００６７】
具体的には、先行スワップ起動部４７は、メモリビジー率監視部３５が監視したメモリビジー率が第１の閾値よりも低く、且つ、キャッシュビジー率監視部４６が監視したキャッシュビジー率が第２の閾値よりも低い、先行スワップ条件を満たすか否かを判別する。そして、先行スワップ起動部４７は、メモリビジー率が第１の閾値よりも低く、かつ、キャッシュビジー率が第２の閾値よりも低いと判別した場合、即ち先行スワップ条件を満たすと判断した場合には、キャッシュアクセス実行部４８に先行スワップ処理を開始させる。【００６８】
以下、図を用いて、先行スワップ起動部４７について詳しく説明する。図７は、先行スワップ起動部を説明するための図である。図７に示す例では、先行スワップ起動部４７は、先行スワップ起動条件判定部４９、ラインアドレスレジスタ５０、先行スワップ命令発行部５１を有する。【００６９】
先行スワップ起動条件判定部４９は、キャッシュビジー率の通知とメモリビジー率の通知とを受け付ける。そして、先行スワップ起動条件判定部４９は、取得したキャッシュビジー率とメモリビジー率とが起動条件を満たすか否かを判別する。【００７０】
その後、先行スワップ起動条件判定部４９は、取得したキャッシュビジー率とメモリビジー率とが先行スワップの起動条件を満たすと判別した場合には、先行スワップコマンドの発行指示を先行スワップ命令発行部５１に送信する。また、先行スワップ起動条件判定部４９は、取得したキャッシュビジー率とメモリビジー率とが先行スワップの起動条件を満たすと判別した場合には、ラインアドレスレジスタ５０に更新指示を送信する。【００７１】
一方、先行スワップ起動条件判定部４９は、取得したキャッシュビジー率とメモリビジー率とが先行スワップの起動条件を満たさないと判別した場合には、処理を終了し、新たなキャッシュビジー率の通知およびメモリビジー率の通知を待つ。【００７２】
ここで、図８は、先行スワップ処理の起動条件の一例を説明するための図である。例えば、先行スワップ起動条件判定部４９は、設定例１として、キャッシュビジー率が「小」であり、かつ、メモリビジー率が「小」である先行スワップの起動条件を記憶する。また、先行スワップ起動条件判定部４９は、設定例２として、キャッシュビジー率が「中」であり、かつ、メモリビジー率が「小」である先行スワップの起動条件を記憶する。【００７３】
また、先行スワップ起動条件判定部４９は、設定例３として、キャッシュビジー率が「中」であり、かつ、メモリビジー率が「中」である先行スワップの起動条件を記憶する。また、先行スワップ起動条件判定部４９は、設定例４として、キャッシュビジー率が「小」である先行スワップの起動条件を記憶する。【００７４】
例えば、先行スワップ起動条件判定部４９は、起動条件として設定例「１」が設定されていた際に、取得したキャッシュビジー率およびメモリビジー率が共に「小」である場合には、先行スワップコマンドの発行指示を先行スワップ命令発行部５１に送信する。また、例えば、先行スワップ起動条件判定部４９は、起動条件として設定例「３」が設定されていた際に、取得したキャッシュビジー率およびメモリビジー率が共に「中」もしくは「小」である場合には、先行スワップコマンドの発行指示を送信する。【００７５】
なお、先行スワップ起動条件判定部４９は、設定例１〜４として設定される先行スワップの起動条件を任意のタイミングで変更することができる。そして、先行スワップ起動条件判定部４９は、取得したキャッシュビジー率とメモリビジー率とが設定された先行スワップの起動条件を満たすか否かを判別する。ここで、図８に示す起動条件はあくまで一例であり、適切なタイミングで先行スワップコマンドを投入することができるのであれば、他の先行スワップの起動条件を設定してもよい。また、設定例の数も、図８に示す数に限定するものではない。【００７６】
ラインアドレスレジスタ５０は、先行スワップ処理の対象となるキャッシュラインアドレスを記憶するレジスタである。具体的には、ラインアドレスレジスタ５０には、キャッシュラインアドレスの値の初期値として「０」を記憶する。そして、ラインアドレスレジスタ５０は、先行スワップ起動条件判定部４９から更新指示を受信した場合には、記憶するキャッシュラインアドレスの値をインクリメントする。【００７７】
つまり、ラインアドレスレジスタ５０は、更新指示を受信するたびに、記憶するキャッシュラインアドレスの値を一つずつ加算する。そして、ラインアドレスレジスタ５０は、記憶するキャッシュラインアドレスの値が、Ｌ２データ記憶部４２のキャッシュラインアドレスの最大ライン数に到達した際に、再度更新指示を受信した場合には、キャッシュラインアドレスの値を「０」にラップアラウンド（wraparound）させる。【００７８】
先行スワップ命令発行部５１は、先行スワップ起動条件判定部４９から発行指示を受信した場合には、ラインアドレスレジスタ５０が記憶するキャッシュラインアドレスを読み出す。そして、先行スワップ命令発行部５１は、読み出したキャッシュラインアドレスに格納されたデータに対するスワップ処理の実行要求である先行スワップコマンドを生成する。その後、先行スワップ命令発行部５１は、コマンドキュー記憶部４３からのコマンド投入がない空きサイクルに、生成した先行スワップコマンドをキャッシュアクセス実行部４８に投入する。【００７９】
図６に戻って、キャッシュアクセス実行部４８は、先行スワップコマンドが投入された場合には、Ｌ２タグ記憶部４１が有するタグデータに基づいて、Ｌ２データ記憶部４２が有するキャッシュデータをメモリ１２に記憶させるスワップ処理を実行する。【００８０】
以下、キャッシュアクセス実行部４８が実行する処理について詳しく説明する。キャッシュアクセス実行部４８は、コマンドキュー記憶部４３からリードコマンドが投入された場合には、リードコマンドが示すキャッシュデータがＬ２データ記憶部４２に格納されているか否かを判別する。【００８１】
そして、キャッシュアクセス実行部４８は、リードコマンドが示すキャッシュデータがＬ２データ記憶部４２に格納されていると判別した場合には、Ｌ１キャッシュ制御部２５にデータ応答の指示をＬ２データ記憶部４２に送信する。なお、データ応答の指示は、投入されたリードコマンドと同じキャッシュアドレスが含まれる。【００８２】
一方、キャッシュアクセス実行部４８は、リードコマンドが示すキャッシュデータがＬ２データ記憶部４２に格納されていないと判別した場合には、メモリ制御部３０に対して、メモリ１２に格納されたデータの読み取りを示すメモリアクセスコマンドを発行する。また、キャッシュアクセス実行部４８は、Ｌ２データ記憶部４２に対して、メモリ制御部３０から応答データバッファ４５に送信される応答データの取得を示すリード指示を発行する。【００８３】
また、キャッシュアクセス実行部４８は、先行スワップ起動部４７から先行スワップコマンドが投入された場合には、投入された先行スワップコマンドが示すキャッシュラインアドレスのタグデータをＬ２タグ記憶部４１から検索する。【００８４】
ここで、図９は、先行スワップ処理の対象となるエントリを検索する処理を説明するための図である。なお、図９に示す例では、キャッシュアクセス実行部４８は、図中αのキャッシュラインを示すキャッシュラインアドレスを示す先行スワップコマンドを取得したものとする。また、図９に示す例では、一つのキャッシュラインに複数のキャッシュウェイＷＡＹ０〜ＷＡＹｎに複数のエントリが格納されているものとする。【００８５】
キャッシュアクセス実行部４８は、図９中αのキャッシュラインに含まれるタグデータから、メモリ１２から読み出されたキャッシュデータであり、かつ、登録ステータスが「Ｍｏｄｉｆｉｅｄ」であるエントリを検索する。【００８６】
そして、キャッシュアクセス実行部４８は、メモリ１２から読み出されたキャッシュデータであり、かつ、登録ステータスが「Ｍｏｄｉｆｉｅｄ」であるキャッシュデータを登録するエントリが存在する場合には、条件を満たすエントリを選択する。また、キャッシュアクセス実行部４８は、条件を満たすエントリが複数存在する場合には、公知のＷＡＹ選択アルゴリズムと同様に、ＷＡＹ間ＬＲＵ（Least  Recently  Used）情報を用いて、条件を満たすエントリのうち最も長い期間アクセスされなかったエントリを選択する。【００８７】
そして、キャッシュアクセス実行部４８は、選択したエントリの登録ステータスである「Ｍｏｄｉｆｉｅｄ」を「Ｅｘｃｌｕｓｉｖｅ」に更新する。また、キャッシュアクセス実行部４８は、選択したエントリのキャッシュデータをメモリ１２に書込むよう指示するライトコマンドをメモリ制御部３０に対して発行し、選択したエントリのキャッシュデータを示すライト指示をＬ２データ記憶部４２に送信する。【００８８】
また、キャッシュアクセス実行部４８は、メモリ１２から読み出されたキャッシュデータであり、かつ、登録ステータスが「Ｍｏｄｉｆｉｅｄ」であるエントリが存在しないと判別した場合には、先行スワップ処理を中断する。【００８９】
ここで、図１０は、先行スワップ処理の対象を説明するための図である。上述したように、キャッシュアクセス実行部４８は、先行スワップ起動部４７によってキャッシュビジー率およびメモリビジー率が所定の閾値よりも低いと判別された場合に、先行スワップ処理を開始する。そして、キャッシュアクセス実行部４８は、図１０に示すように、登録ステータスが「Ｉｎｖａｌｉｄ」、「Ｓｈａｒｅｄ」、「Ｅｘｃｌｕｓｉｖｅ」であるエントリのデータに対しては、先行スワップ処理を実行せず、タグデータが示す登録ステータスの遷移もおこなわない。【００９０】
一方、キャッシュアクセス実行部４８は、登録ステータスが「Ｍｏｄｉｆｉｅｄ」であるエントリのキャッシュデータについて先行スワップ処理を実行し、登録ステータスを「Ｅｘｃｌｕｓｉｖｅ」に遷移させる。つまり、キャッシュアクセス実行部４８は、登録ステータスが「Ｍｏｄｉｆｉｅｄ」であるエントリのキャッシュデータをメモリ１２に反映させるライトバック処理を先行して行う。このため、キャッシュアクセス実行部４８は、ライトバック処理を行うスワップ処理の発生を抑え、メモリ１２におけるビジー率を低下させる結果、メモリ１２からのデータ応答の性能を改善する。【００９１】
図１１は、先行スワップ処理の流れを説明するための図である。図１１に示す例では、Ｌ２キャッシュ制御部４０は、メモリビジー率が第１の閾値よりも低く、かつ、キャッシュビジー率が第２の閾値よりも低い場合に、先行スワップ処理を開始する。まず、Ｌ２キャッシュ制御部４０は、先行スワップ処理の対象となるエントリを検索する。そして、Ｌ２キャッシュ制御部４０は、先行スワップ処理の対象となるエントリが存在した場合には、先行スワップ処理の対象となるエントリのキャッシュデータをメモリ１２に書込むライト要求をメモリ制御部３０に発行する。【００９２】
メモリ制御部３０は、Ｌ２キャッシュ制御部４０からライト要求を取得した場合には、メモリ１２に対して先行スワップ処理の対象となるエントリのキャッシュデータを書込むライト要求を発行する。そして、メモリ制御部３０は、メモリ１２から、ライト要求に対する応答を受信する。その後、メモリ制御部３０およびＬ２キャッシュ制御部４０は、先行スワップ処理を終了する。【００９３】
例えば、命令実行部２４、メモリアクセス実行部３４、メモリビジー率監視部３５、キャッシュビジー率監視部４６、先行スワップ起動部４７、キャッシュアクセス実行部４８、先行スワップ起動条件判定部４９、先行スワップ命令発行部５１とは、演算処理装置に含まれる制御回路である。ここで、演算処理装置の例として、ＣＰＵ（Central  Processing  Unit）、ＭＰＵ（Micro  Processing  Unit）、ＧＰＵ（Graphics  Processing  Unit）、ＤＳＰ（Digital  Signal  Processor）等があり、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ  （Field  Programmable  Gate  Array）等により実現されるマイクロコントローラ等も含む。【００９４】
また、Ｌ１タグ記憶部２６、Ｌ１データ記憶部２７、Ｌ２タグ記憶部４１、Ｌ２データ記憶部４２とは、記憶装置である。ここで、記憶装置の例として、ＲＡＭ（Random  Access  Memory）、ＲＯＭ（Read  Only  Memory）などの半導体メモリ素子が適用される。また、コマンドキュー記憶部３１、ライトデータバッファ３２、応答データバッファ３３、コマンドキュー記憶部４３、ライトデータバッファ４４、応答データバッファ４５とは、取得したデータを保持するバッファである。【００９５】
［先行スワップ処理の流れ］
次に、図１２を用いて、Ｌ２キャッシュ制御部４０が実行する先行スワップ処理の流れについて説明する。図１２は、先行スワップの対象となるエントリを検索する処理を説明するためのフローチャートである。図１２に示す例では、電源が入力されたこと、又は先行スワップを行なうモードが設定レジスタに設定されたこと等をトリガとして、処理を開始する。【００９６】
まず、Ｌ２キャッシュ制御部４０は、後述する先行スワップ起動条件判定処理を実行する（ステップＳ１０１）。そして、Ｌ２キャッシュ制御部４０は、先行スワップ起動条件判定処理によって、先行スワップを行うか否かを判別する（ステップＳ１０２）。【００９７】
次に、Ｌ２キャッシュ制御部４０は、先行スワップを行うと判別した場合には（ステップＳ１０２肯定）、先行スワップコマンドを発行する（ステップＳ１０３）。次に、Ｌ２キャッシュ制御部４０は、先行スワップコマンドが示すキャッシュラインから、タグデータを用いて、先行スワップの対象となるエントリを検索する（ステップＳ１０４）。【００９８】
ここで、Ｌ２キャッシュ制御部４０は、タグデータの登録ステータスが「Ｍｏｄｉｆｉｅｄ」であり、かつ、自装置に接続されたメモリ１２のデータが登録されたエントリであるか否かを判別する（ステップＳ１０５）。その後、Ｌ２キャッシュ制御部４０は、登録ステータスが「Ｍｏｄｉｆｉｅｄ」であり、かつ、メモリ１２からキャッシュされたデータが登録されたエントリであると判別した場合には（ステップＳ１０５肯定）、このエントリのキャッシュデータを読み出す（ステップＳ１０６）。【００９９】
次に、Ｌ２キャッシュ制御部４０は、読み出したキャッシュデータのライトバック要求をメモリ制御部３０に発行する（ステップＳ１０７）。また、Ｌ２キャッシュ制御部４０は、対象エントリの登録ステータスを「Ｍｏｄｉｆｉｅｄ」から「Ｅｘｃｌｕｓｉｖｅ」に変更する（ステップＳ１０８）。次に、Ｌ２キャッシュ制御部４０は、システムが停止するか否かを判別し（ステップＳ１０９）、システムが停止すると判別した場合には（ステップＳ１０９肯定）、処理を終了する。【０１００】
一方、Ｌ２キャッシュ制御部４０は、システムが停止しないと判別した場合には（ステップＳ１０９否定）、ラインアドレスレジスタ５０が記憶するキャッシュラインアドレスに「１」を加算する（ステップＳ１１０）。その後、Ｌ２キャッシュ制御部４０は、再度、先行スワップ起動条件判定処理を行う（ステップＳ１０１）。【０１０１】
また、Ｌ２キャッシュ制御部４０は、先行スワップを行わないと判別した場合には（ステップＳ１０２否定）、再度先行スワップ起動条件判定処理を行う（ステップＳ１０１）。また、Ｌ２キャッシュ制御部４０は、登録ステータスが「Ｍｏｄｉｆｉｅｄ」であり、メモリ１２のデータがキャッシュされていないと判別した場合には（ステップＳ１０５否定）、再度先行スワップ起動条件判定処理を行う（ステップＳ１０１）。【０１０２】
次に、図１３を用いて、図１２中ステップＳ１０１に示した先行スワップ起動条件判定処理の詳しい流れについて説明する。図１３は、先行スワップ起動条件判定処理の流れを説明するためのフローチャートである。先行スワップ起動条件判定処理は、Ｌ２キャッシュ制御部４０が有する先行スワップ起動部４７によって実行させる処理である。【０１０３】
まず、先行スワップ起動部４７は、キャッシュビジー率とメモリビジー率とを取得したか否かを判別する（ステップＳ２０１）。次に、先行スワップ起動部４７は、キャッシュビジー率とメモリビジー率とを取得した場合には（ステップＳ２０１肯定）、キャッシュビジー率が設定された所定の閾値よりも低いか否かを判別する（ステップＳ２０２）。そして、先行スワップ起動部４７は、キャッシュビジー率が設定された処理の閾値よりも低いと判別した場合には（ステップＳ２０２肯定）、さらにメモリビジー率が所定の閾値よりも低いか否かを判別する（ステップＳ２０３）。【０１０４】
その後、先行スワップ起動部４７は、メモリビジー率が所定の閾値よりも低いと判別した場合には（ステップＳ２０３肯定）、先行スワップ処理を起動する（ステップＳ２０４）。つまり、Ｌ２キャッシュ制御部４０は、先行スワップ処理を実行すると判別する。【０１０５】
一方、先行スワップ起動部４７は、キャッシュビジー率とメモリビジー率とを取得していないと判別した場合には（ステップＳ２０１否定）、キャッシュビジー率とメモリビジー率とを取得するまで待機する。【０１０６】
また、先行スワップ起動部４７は、キャッシュメモリのビジー率が設定された処理の閾値よりも高いと判別した場合には（ステップＳ２０２否定）、先行スワップ処理を起動しない（ステップＳ２０５）。また、先行スワップ起動部４７は、メモリビジー率が設定された所定の閾値よりも高いと判別した場合には（ステップＳ２０３否定）、先行スワップ処理を起動しない（ステップＳ２０５）。つまり、Ｌ２キャッシュ制御部４０は、先行スワップ処理を実行しないと判別する。その後、先行スワップ起動部４７は、新たなキャッシュビジー率とメモリビジー率とを取得したか否かを判別する（ステップＳ２０１）。【０１０７】
次に、図１４を用いて、図１２中ステップＳ１０４において説明した先行スワップの対象となるエントリを検索する処理について詳しく説明する。図１４は、エントリを検索する処理について詳しく説明するためのフローチャートである。なお、図１４に示す各ステップＳ３０１〜３０７は、図１２中のステップＳ１０４〜ステップＳ１０５と対応する。【０１０８】
まず、Ｌ２キャッシュ制御部４０は、先行スワップコマンドを発行した場合には（図１２中ステップＳ１０３）、先行スワップが示すキャッシュラインアドレスに含まれる全てのＷＡＹのタグデータを読み出す（ステップＳ３０１）。次に、Ｌ２キャッシュ制御部４０は、読み出したタグデータから、登録ステータスが「Ｍｏｄｉｆｉｅｄ」であって、自装置に接続されたメモリのデータが登録されたＷＡＹが存在するか否かを判別する（ステップＳ３０２、図１２中ステップＳ１０５と対応）。【０１０９】
そして、Ｌ２キャッシュ制御部４０は、登録ステータスが「Ｍｏｄｉｆｉｅｄ」であって、メモリ１２のデータが登録されたＷＡＹが存在する場合には（ステップＳ３０２）、この条件に合致するエントリが複数存在するか否かを判別する（ステップＳ３０３）。そして、Ｌ２キャッシュ制御部４０は、条件に合致するエントリが複数存在すると判別した場合には（ステップＳ３０３肯定）、ＬＲＵ情報を用いて、最も使用時期の古いエントリを選択する（ステップＳ３０４）。【０１１０】
次に、Ｌ２キャッシュ制御部４０は、選択したエントリを対象とする先行スワップ処理を実行する（ステップＳ３０５）。また、Ｌ２キャッシュ制御部４０は、条件に合致するエントリが１つだけ存在している場合には（ステップＳ３０３否定）、このエントリを選択する（ステップＳ３０６）。その後、Ｌ２キャッシュ制御部４０は、選択したエントリを対象とする先行スワップ処理を実行する（ステップＳ３０５）。【０１１１】
一方、Ｌ２キャッシュ制御部４０は、登録ステータスが「Ｍｏｄｉｆｉｅｄ」で、自装置に接続されたメモリ１２のデータをキャッシュするＷＡＹが存在しない場合には（ステップＳ３０２否定）、スワップ処理を実行せず（ステップＳ３０７）、処理を終了する。【０１１２】
［実施例１の効果］
上述したように、ＣＰＵ２０は、メモリ１２へのアクセス頻度、つまりメモリビジー率を監視するメモリビジー率監視部３５と、Ｌ２データ記憶部４２へのアクセス頻度、つまりキャッシュビジー率を監視するキャッシュビジー率監視部４６とを有する。そして、ＣＰＵ２０は、監視されたメモリビジー率とキャッシュビジー率に基づいて、先行スワップ処理を実行する。【０１１３】
このためＣＰＵ２０は、ＣＰＵ２０のメインメモリであるメモリ１２へのアクセスが所定の量よりも少ない間にあらかじめキャッシュメモリのスワップ処理を実行し、メモリ１２へのライトバック処理を完了させることができる。結果として、ＣＰＵ２０は、メモリ１２から新たなデータをキャッシュする処理が連続して発生した場合にも、ライトバック処理を行わずにすむので、リード要求に対する遅延を抑え、プロセッサコアである命令実行部２４に対するデータ応答の性能を改善することができる。【０１１４】
また、ＣＰＵ２０は、メモリにアクセスするメモリ制御部３０を内包するので、メモリビジー率を直接監視することができる。また、ＣＰＵ２０は、キャッシュメモリを有するＬ２キャッシュ制御部４０を内包するので、キャッシュビジー率を直接監視することができる。このため、ＣＰＵ２０は、現在のメモリビジー率および予測される将来のメモリビジー率に応じて、適切なタイミングで先行スワップ処理を行う事ができる。【０１１５】
また、ＣＰＵ２０は、メモリビジー率が設定された所定の閾値よりも低く、かつ、キャッシュビジー率が設定された所定の閾値よりも低い場合には、先行スワップ処理を開始する。このため、ＣＰＵ２０は、適切なタイミングで先行スワップ処理を実行することができる。【０１１６】
つまり、ＣＰＵ２０は、キャッシュビジー率を用いて、将来のメモリビジー率を予測する。そして、ＣＰＵ２０は、現在のメモリビジー率が所定の閾値よりも低く、将来のメモリビジー率が所定の閾値よりも少ないと判別した場合には、先行スワップ処理を実行する。このため、ＣＰＵ２０は、メモリ１２のアクセスが少ないタイミングで先行スワップ処理を実行することができる。結果として、ＣＰＵ２０は、通常のメモリアクセスに対するデータ応答の性能を落とすことなく、適切なタイミングで、先行スワップ処理を実行することができる。【０１１７】
また、ＣＰＵ２０は、キャッシュラインに含まれる各タグデータから、登録ステータスが「Ｍｏｄｉｆｉｅｄ」であるエントリを検索し、登録ステータスが「Ｍｏｄｉｆｉｅｄ」であるエントリのキャッシュデータを先行スワップ処理の対象とする。このため、ＣＰＵ２０は、ライトバック処理が必要なエントリのキャッシュデータのみを先行スワップの対象とするので、効率的に先行スワップ処理を行うことができる。【０１１８】
また、ＣＰＵ２０は、先行スワップ処理の対象となるエントリのタグデータに含まれる登録ステータスを「Ｍｏｄｉｆｉｅｄ」から「Ｅｘｃｌｕｓｉｖｅ」に変更する。このため、ＣＰＵ２０は、キャッシュデータの書換や消去等の処理を行わなくとも、先行スワップ処理の対象となったキャッシュデータを適切に使用しつづけることができる。【０１１９】
また、ＣＰＵ２０は、メモリ制御部３０が有するコマンドキュー記憶部３１が保持するコマンドの数に応じて、メモリビジー率を算出する。このため、ＣＰＵ２０は、容易かつ適切にメモリビジー率を算出することができる。【０１２０】
また、ＣＰＵ２０は、コマンドキュー記憶部４３が保持するコマンドの数に応じて、キャッシュビジー率を算出する。このため、ＣＰＵ２０は、容易かつ適切にキャッシュビジー率を算出することができる。
【実施例２】
【０１２１】
これまで本発明の実施例について説明したが、上述した実施例以外にも様々な異なる形態にて実施されてよいものである。そこで、以下では実施例２として本発明に含まれる他の実施例を説明する。【０１２２】
（１）先行スワップ処理の対象について
実施例１では、Ｌ２キャッシュ制御部４０がメモリ１２からキャッシュしたキャッシュデータについて先行スワップ処理を実行するものとした。しかし、Ｌ２キャッシュ制御部４０は、他のＣＰＵ２１〜２３等に接続されたメモリ１３〜１５からキャッシュしたキャッシュデータについて先行スワップを実行してもよい。つまり、Ｌ２キャッシュ制御部４０には、ＬＳＩ間通信制御部２８を介して、他のＣＰＵ２１〜２３等とメモリ１２を共有するＳＭＰ（Symmetric  Multiprocessing）方式が適用されてもよい。【０１２３】
図１５は、ＳＭＰ方式が適用された各ＣＰＵが有するキャッシュ状態の遷移の一例を説明するための図である。なお、図１５中の「Ｉ」は「Ｉｎｖａｌｉｄ」、「Ｅ」は「Ｅｘｃｌｕｓｉｖｅ」、「Ｓ」は「Ｓｈａｒｅｄ」、「Ｍ」は「Ｍｏｄｉｆｉｅｄ」を示す。以下の説明では、メモリ１２〜１５が有するデータのうち、「Ａ」番地に格納されたデータをＣＰＵ２０〜２３が共用する例について説明する。【０１２４】
まず、初期状態として、各ＣＰＵ２０〜２３がデータを登録するエントリの登録ステータスは「Ｉｎｖａｌｉｄ」である。ここで、ＣＰＵ２０が「Ａ」番地に格納されたデータをロードすると、ＣＰＵ２０がロードしたデータを登録するエントリの登録ステータスは「Ｅｘｃｌｕｓｉｖｅ」に遷移する。【０１２５】
次に、ＣＰＵ２１が「Ａ」番地に格納されたデータをロードすると、ＣＰＵ２１がロードしたデータを登録するエントリの登録ステータスは「Ｓｈａｒｅｄ」に遷移する。また、ＣＰＵ２０がロードしたデータを登録するエントリの登録ステータスも「Ｓｈａｒｅｄ」に遷移する。次に、ＣＰＵ２２が「Ａ」番地に格納されたデータをロードすると、ＣＰＵ２２がロードしたデータを登録するエントリの登録ステータスは「Ｓｈａｒｅｄ」に遷移する。同様に、ＣＰＵ２３が「Ａ」番地に格納されたデータをロードすると、ＣＰＵ２３がロードしたデータを登録するエントリの登録ステータスは「Ｓｈａｒｅｄ」に遷移する。【０１２６】
ここで、ＣＰＵ２０は、ロードしたデータのストアを行う場合には、コヒーレンスを保持するため、実行権を取得する。すると、図１５に示すように、ＣＰＵ２０が「Ａ」番地のデータを登録したエントリの登録ステータスが「Ｅｘｃｌｕｓｉｖｅ」に遷移し、各ＣＰＵ２１〜２３が「Ａ」番地のデータを登録したエントリの登録ステータスが「Ｉｎｖａｌｉｄ」に遷移する。【０１２７】
その後、ＣＰＵ２０は、ロードしたデータのストアを実行する。すると、ＣＰＵ２０が有する「Ａ」番地のキャッシュデータとメモリ上の「Ａ」番地に格納されたデータとの同一性が破れるので、ＣＰＵ２０が「Ａ」番地のデータを登録したエントリの登録ステータスが「Ｍｏｄｉｆｉｅｄ」に遷移する。【０１２８】
このようなＳＭＰ方式が適用されたＣＰＵであっても、上述した先行スワップ処理を実行することによって、登録ステータスが「Ｍｏｄｉｆｉｅｄ」のキャッシュデータのライトバック処理を先行して実行することができる。【０１２９】
例えば、各ＣＰＵ２０〜２３は、自装置のメモリビジー率を他のＣＰＵに通知する。そして、各ＣＰＵ２０〜２３は、先行スワップ処理を行う場合には、各ＣＰＵから通知された各メモリビジー率のうち、所定の閾値よりも低いビジー率を通知したＣＰＵを選択する。その後、各ＣＰＵ２０〜２３は、選択したＣＰＵと接続されたメモリから取得したキャッシュデータを先行スワップの対象としてもよい。【０１３０】
また、各ＣＰＵ２０〜２３は、自装置のキャッシュビジー率を他のＣＰＵに通知する。そして、各ＣＰＵ２０〜２３は、各ＣＰＵから通知されたキャッシュビジー率のうち所定の閾値よりも低いキャッシュビジー率を通知したＣＰＵに接続されたメモリから取得したキャッシュデータを先行スワップの対象としても良い。さらに、各ＣＰＵ２０〜２３は、各ＣＰＵから通知されたキャッシュビジー率およびメモリビジー率に基づいて、先行スワップの対象となるキャッシュデータを選択することとしてもよい。【０１３１】
（２）閾値について
上述したメモリビジー率監視部３５およびキャッシュビジー率監視部４６は、同様の閾値を用いて、メモリビジー率およびキャッシュビジー率を判別した。しかし、実施例はこれに限定されるものではなく、例えば、メモリビジー率監視部３５とキャッシュビジー率監視部４６は、それぞれ異なる閾値を用いて、メモリビジー率およびキャッシュビジー率を判別してもよい。【０１３２】
また、上述した先行スワップ起動部４７は、図８に例示したように、任意のタイミングで変更可能な複数の設定を有していた。しかし、実施例はこれに限定されるものではなく、例えば、先行スワップ起動部４７は、先行スワップ処理を実行するか否かの起動条件を一つだけ有するものとしてもよい。【０１３３】
また、実施例１では、メモリビジー率およびキャッシュビジー率を示す値として「小」、「中」、「大」を用いたが、実施例はこれに限定されるものではなく、計数されたコマンド数等の数値でもよい。また、メモリビジー率およびキャッシュビジー率は、それぞれコマンドキュー記憶部３１およびコマンドキュー記憶部４３が記憶するコマンドの数であってもよい。【０１３４】
また、実施例１では、メモリビジー率およびキャッシュビジー率を両方用いて、先行スワップ処理を実行するタイミングを判別していた。しかし、実施例はこれに限定されるものではなく、例えば、メモリビジー率又はキャッシュビジー率のみを用いて、先行スワップ処理を実行するタイミングを判別することとしてもよい。【０１３５】
（３）キャッシュの階層について
実施例１では、ＣＰＵ２０は、Ｌ２キャッシュ制御部４０が有するＬ２データ記憶部４２に対するキャッシュビジー率に基づくタイミングで先行スワップ処理を実行していた。しかし、実施例は、これに限定されるものではなく、例えば、Ｌ１キャッシュやＬ３キャッシュ等のキャッシュビジー率を加味したタイミングで先行スワップ処理を実行してもよい。【０１３６】
（４）登録ステータスについて
上述したＬ２タグ記憶部４１では、いわゆるＭＥＳＩプロトコル（イリノイプロトコル）が適用された登録ステータスを記憶していた。しかし、実施例はこれに限定されるものではなく、キャッシュデータをメインメモリに書込むライトバック処理を実行するＣＰＵであれば、任意のプロトコルを用いて、キャッシュデータの状態を示してもよい。
【符号の説明】
【０１３７】
１  サーバ
２、３  ＸＢ（クロスバスイッチ）
４〜１１  ＳＢ（システムボード）
１２〜１５  メモリ
２０〜２３  ＣＰＵ
２４  命令実行部
２５  Ｌ１キャッシュ制御部
２６  Ｌ１タグ記憶部
２７  Ｌ１データ記憶部
２８  ＬＳＩ間通信制御部
３０  メモリ制御部
３１  コマンドキュー記憶部
３２  ライトデータバッファ
３３  応答データバッファ
３４  メモリアクセス実行部
３５  メモリビジー率監視部
４０  Ｌ２キャッシュ制御部
４１  Ｌ２タグ記憶部
４２  Ｌ２データ記憶部
４３  コマンドキュー記憶部
４４  ライトデータバッファ
４５  応答データバッファ
４６  キャッシュビジー率監視部
４７  先行スワップ起動部
４８  キャッシュアクセス実行部
４９  先行スワップ起動条件判定部
５０  ラインアドレスレジスタ
５１  先行スワップ命令発行部
【図１】
2012127631.tif 000003
【図２】
2012127631.tif 000004
【図３】
2012127631.tif 000005
【図４】
2012127631.tif 000006
【図５】
2012127631.tif 000007
【図６】
2012127631.tif 000008
【図７】
2012127631.tif 000009
【図８】
2012127631.tif 000010
【図９】
2012127631.tif 000011
【図１０】
2012127631.tif 000012
【図１１】
2012127631.tif 000013
【図１２】
2012127631.tif 000014
【図１３】
2012127631.tif 000015
【図１４】
2012127631.tif 000016
【図１５】
2012127631.tif 000017
【図１６】
2012127631.tif 000018
【図１７】
2012127631.tif 000019
【図１８】
2012127631.tif 000020
【図１９】
2012127631.tif 000021
【図２０】
2012127631.tif 000022
【図２１】
2012127631.tif 000023
【手続補正書】
【提出日】平成26年2月25日(2014.2.25)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
主記憶装置に接続される演算処理装置において、
データを保持する複数のキャッシュラインを有するキャッシュメモリ部と、
それぞれがいずれかのキャッシュラインに対応し、対応するキャッシュラインが保持するデータの状態情報を保持する複数のタグを有するタグメモリ部と、
前記主記憶装置へのアクセスを行う主記憶制御部と、
前記キャッシュメモリ部へのアクセスを行うキャッシュ制御部と、
前記主記憶制御部による前記主記憶装置へのアクセス頻度を示す第１のアクセス頻度を監視する主記憶アクセス監視部と、
前記キャッシュ制御部による前記キャッシュメモリ部へのアクセス頻度を示す第２のアクセス頻度を監視するキャッシュアクセス監視部と、
前記主記憶アクセス監視部が監視した第１のアクセス頻度、前記キャッシュアクセス監視部が監視した第２のアクセス頻度、及び、前記タグのに保持された状態情報に基づき、前記キャッシュメモリ部が有するキャッシュラインに保持されたデータの前記主記憶装置への保持を前記キャッシュ制御部に実行させるスワップ制御部とを有することを特徴とする演算処理装置。
【請求項２】
前記演算処理装置において、
前記スワップ制御部は、
前記主記憶アクセス監視部が監視した第１のアクセス頻度が第１の閾値よりも低く、且つ、前記キャッシュアクセス監視部が監視した第２のアクセス頻度が第２の閾値よりも低い場合に前記タグメモリ部の検索を前記キャッシュ制御部に開始させ、
前記タグメモリ部から、対応するデータが、前記キャッシュメモリ部のみに保持され、前記演算処理装置により更新された旨を示す状態情報を検索したとき、検索された状態情報に対応するデータの前記主記憶装置への保持を前記キャッシュ制御部に実行させることを特徴とする請求項１記載の演算処理装置。
【請求項３】
前記演算処理装置において、
前記スワップ制御部はさらに、
前記タグメモリ部の検索を開始した後、前記キャッシュメモリ部のみに保持された対応するデータが前記演算処理装置により更新された旨を表す状態情報を検索したとき、前記キャッシュ制御部に、検索した状態情報に対応するデータを前記主記憶装置へ保持させるとともに、検索した状態情報を、対応するデータが前記キャッシュメモリ部のみに保持され前記主記憶の対応するアドレスのデータと等しい旨を示す状態情報に変更することを特徴とする請求項２記載の演算処理装置。
【請求項４】
前記演算処理装置はさらに、
前記主記憶装置へのアクセスを行うコマンドを保持する複数の第１のエントリを有する主記憶アクセスコマンド保持部を有し、
前記主記憶アクセス監視部は、
前記主記憶アクセスコマンド保持部の第１のエントリに保持されたコマンドの数に基づいて、前記第１のアクセス頻度を監視することを特徴とする請求項１〜３のいずれか１項記載の演算処理装置。
【請求項５】
前記演算処理装置はさらに、
前記キャッシュメモリ部へのアクセスを行うコマンドを保持する複数の第２のエントリを有するキャッシュアクセスコマンド保持部を有し、
前記キャッシュアクセス監視部は、
前記キャッシュアクセスコマンド保持部の第２のエントリに保持されたコマンドの数に基づいて、前記第２のアクセス頻度を監視することを特徴とする請求項１〜３のいずれか１項記載の演算処理装置。
【請求項６】
主記憶装置と、前記主記憶装置に接続される演算処理装置とを有する情報処理装置において、
前記演算処理装置は、
それぞれがデータを保持する複数のキャッシュラインを有するキャッシュメモリ部と、
いずれかのキャッシュラインに対応し、対応するキャッシュラインが保持するデータの状態情報を保持する複数のタグを有するタグメモリ部と、
前記主記憶装置へのアクセスを行う主記憶制御部と、
前記キャッシュメモリ部へのアクセスを行うキャッシュ制御部と、
前記主記憶制御部による前記主記憶装置へのアクセス頻度を示す第１のアクセス頻度を監視する主記憶アクセス監視部と、
前記キャッシュ制御部による前記キャッシュメモリ部へのアクセス頻度を示す第２のアクセス頻度を監視するキャッシュアクセス監視部と、
前記主記憶アクセス監視部が監視した第１のアクセス頻度、前記キャッシュアクセス監視部が監視した第２のアクセス頻度、及び、前記タグに保持された状態情報に基づき、前記キャッシュラインに保持されたデータの前記主記憶装置への保持を前記キャッシュ制御部に実行させるスワップ制御部を有することを特徴とする情報処理装置。
【請求項７】
前記情報処理装置において、
前記スワップ制御部は、
前記主記憶アクセス監視部が監視した第１のアクセス頻度が第１の閾値よりも低く、且つ、前記キャッシュアクセス監視部が監視した第２のアクセス頻度が第２の閾値よりも低い場合、前記タグメモリ部の検索を前記キャッシュ制御部に開始させるとともに、対応するデータが前記キャッシュメモリ部のみに保持された後に前記演算処理装置により更新された旨を示す状態情報を検索したとき、検索した状態情報に対応するデータの前記主記憶装置への保持を前記キャッシュ制御部に実行させることを特徴とする請求項６記載の情報処理装置。
【請求項８】
前記情報処理装置において、
前記スワップ制御部はさらに、
前記タグメモリ部の検索を開始した後、対応するデータが前記キャッシュメモリ部のみに保持された対応するデータが前記演算処理装置により更新された旨を表す状態情報を検索したとき、前記キャッシュ制御部に、検索した状態情報に対応するデータを前記主記憶装置へ保持させるとともに、検索した状態情報を、対応するデータが前記キャッシュメモリ部のみに保持され、対応するデータが前記キャッシュメモリ部のみに保持され前記主記憶装置の対応するアドレスのデータと等しい旨を示す状態情報に変更することを特徴とする請求項７記載の情報処理装置。
【請求項９】
前記情報処理装置において、
前記演算処理装置はさらに、
複数の第１のエントリを有し、前記主記憶装置へのアクセスを行うコマンドを保持する複数の第１のエントリを有する主記憶アクセスコマンド保持部を有し、
前記主記憶アクセス監視部は、
前記主記憶アクセスコマンド保持部の第１のエントリに保持されたコマンドの数に基づいて、前記第１のアクセス頻度を監視することを特徴とする請求項６〜８のいずれか１項記載の情報処理装置。
【請求項１０】
前記情報処理装置において、
前記演算処理装置はさらに、
前記キャッシュメモリ部へのアクセスを行うコマンドを保持する複数の第２のエントリを有するキャッシュアクセスコマンド保持部を有し、
前記キャッシュアクセス監視部は、
前記キャッシュアクセスコマンド保持部の前記複数の第２のエントリに保持されたコマンドの数に基づいて、前記キャッシュ制御部による前記キャッシュメモリ部への第２のアクセス頻度を監視することを特徴とする請求項６〜８のいずれか１項記載の情報処理装置。
【請求項１１】
主記憶装置に接続される演算処理装置の制御方法において、
前記演算処理装置の有する主記憶アクセス監視部が、前記主記憶装置へのアクセスを行う主記憶制御部による前記主記憶装置へのアクセス頻度である第１のアクセス頻度を監視するステップと、
前記演算処理装置が有するキャッシュアクセス監視部が、それぞれがデータを保持するキャッシュラインを複数有するキャッシュメモリ部へのアクセスを行うキャッシュ制御部による前記キャッシュメモリ部へのアクセス頻度である第２のアクセス頻度を監視するステップと、
前記演算処理装置が有するスワップ制御部が、前記主記憶アクセス監視部が監視した第１のアクセス頻度、前記キャッシュアクセス監視部が監視した第２のアクセス頻度、及び、対応するキャッシュラインによるデータの状態情報を保持する複数のタグを有するタグメモリ部のタグが保持する状態情報に基づき、前記キャッシュ制御部に、前記キャッシュメモリ部が有する前記キャッシュラインに保持されたデータを前記主記憶装置へ保持させるステップを有することを特徴とする演算処理装置の制御方法。
【国際調査報告】
2012127631.tif 000024
2012127631.tif 000025
2012127631.tif 000026
2012127631.tif 000027