(57)【要約】【課題】プロセッサが、キャッシュヒット判定が完了する前に、一時記憶装置に記憶されたデータをレジスタへ書き込む処理を開始することにより、プロセッサからの一時記憶装置へのデータアクセス時間を小さくできる。【解決手段】本発明のローカルメモリの制御プログラム１０ａは、アクセスデータを指定するタグアドレスと、アクセスデータを指定するライン番号と対応する一時記憶装置の記憶領域上のデータのタグアドレス２０ｂと、が一致するか否かを判定する判定機能と、判定処理が完了する前に、一時記憶装置上のその記憶領域に記憶されているデータ２０ａをレジスタに複製する処理を開始する複製機能と、判定機能で一致すると判定された場合にレジスタからデータを読み出す読出機能とをプロセッサ１０に実現させることを特徴とする。【選択図】  図５
2008262390.tif 000002
【特許請求の範囲】
【請求項１】
一時記憶装置に複数ある記憶領域を識別するためのライン番号と前記記憶領域に複数記憶されるデータを識別するためのタグアドレスとを有するメインメモリアドレスによりアクセスするデータを指定し、メインメモリに記憶されるデータの一部をキャッシュ記憶する前記一時記憶装置にアクセスし、前記一時記憶装置に記憶されるデータをレジスタに複製して当該データを演算処理に用いるプロセッサに、
前記プロセッサがアクセスするデータのメインメモリアドレスを取得する取得機能と、
前記取得機能で取得した前記メインメモリアドレスのライン番号で指定される前記一時記憶装置のｎ個（ｎは２以上の整数）の記憶領域に記憶されているデータのタグアドレスのそれぞれと、前記取得機能で取得した前記メインメモリアドレスのタグアドレスとが一致するか否かを判定する判定機能と、
前記一時記憶装置のｎ個の記憶領域のうち、ｍ個（ｍは１以上ｎ以下の整数）の記憶領域に記憶されているデータをそれぞれ前記レジスタに複製する複製機能と、
前記判定機能で行われる判定処理を完了する前に前記複製機能で行われる複製処理を開始する開始機能と、
前記判定機能で前記メインメモリアドレスのタグアドレスと前記一時記憶装置のｎ個の記憶領域に記憶されている前記データのタグアドレスのいずれかとが一致すると判定され、かつ、その一致すると判定されたデータが前記複製機能で前記レジスタに複製されていた場合に、前記複製機能によって当該データが複製された前記レジスタから、当該データを読み出す読出機能とを実現させることを特徴とするプログラム。
【請求項２】
一時記憶装置に複数ある記憶領域を識別するためのライン番号と前記記憶領域に複数記憶されるデータを識別するためのタグアドレスとを有するメインメモリアドレスによりアクセスするデータを指定し、メインメモリに記憶されるデータの一部をキャッシュ記憶する前記一時記憶装置にアクセスし、前記一時記憶装置に記憶されるデータをレジスタに複製して当該データを演算処理に用いるプロセッサに、
前記プロセッサがアクセスするデータのメインメモリアドレスを取得する取得機能と、
前記取得機能で取得した前記メインメモリアドレスのライン番号で指定される前記一時記憶装置の記憶領域に記憶されているデータのタグアドレスと、前記取得機能で取得した前記メインメモリアドレスのタグアドレスとが一致するか否かを判定する判定機能と、
前記一時記憶装置の記憶領域に記憶されているデータを前記レジスタに複製する複製機能と、
前記判定機能で行われる判定処理を完了する前に前記複製機能で行われる複製処理を開始する開始機能と、
前記判定機能で前記メインメモリアドレスの前記タグアドレスと前記一時記憶装置の記憶領域に記憶されている前記データの前記タグアドレスとが一致すると判定された場合に、前記複製機能によって当該データが複製された前記レジスタから、当該データを読み出す読出機能とを実現させることを特徴とするプログラム。
【請求項３】
前記開始機能で、前記プロセッサに、
前記判定機能で行われる判定処理を開始する前に前記複製機能で行われる複製処理を開始させることを特徴とする請求項１または請求項２に記載のプログラム。
【請求項４】
前記開始機能で、前記プロセッサに、
前記判定機能で行われる判定処理を完了する前に前記複製機能で行われる複製処理を完了させることを特徴とする請求項１または請求項２に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムに関するものである。
【背景技術】
【０００２】
近年の計算機システムでは、プロセッサのデータ処理速度とメインメモリのデータ供給速度との差を埋めるために、メインメモリよりも容量が小さく、データ供給速度が速い、キャッシュメモリやローカルメモリなどの一時記憶装置が広く使用されている。このような計算機システムでは、一時記憶装置にメインメモリ上の一部のデータを一時的に記憶させることで、メインメモリ上のデータの実効的な供給速度を高め、プロセッサのデータ処理速度を活かすことができる。
【０００３】
しかし、一時記憶装置には、メインメモリ上のすべてのデータを記憶することができないため、プロセッサが一時記憶装置上のデータにアクセスする前に、アクセスするデータが一時記憶装置に記憶されているか否かの判定、即ちキャッシュヒット判定が行われる。ここで、特に、ソフトウェアでキャッシュヒット判定を行う場合、キャッシュヒット判定に要する時間が大きく、一時記憶装置へのデータアクセスに要する時間が長くなるという問題点がある。
【０００４】
そこで、以前に行ったキャッシュヒット判定の結果から一時記憶装置に記憶されているデータを予測し、キャッシュヒット判定を行う前にそのデータを一時記憶装置から出力する手法が報告されている（例えば、特許文献１参照。）。
【０００５】
しかしながら、上記の特許文献１に記載される発明では、キャッシュヒット判定を行う前にデータが一時記憶装置から出力されるものの、キャッシュヒット判定が完了した後にその出力データがプロセッサに内蔵されるレジスタに記憶され、演算処理に用いられる。そのため、プロセッサからの一時記憶装置へのデータアクセス時間を十分に小さくできなかった。
【特許文献１】特開平５−１２０１３５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上述したように、特許文献１に開示されている手法では、キャッシュヒット判定が完了した後に、一時記憶装置からの出力データをレジスタに記憶していたため、一時記憶装置へのデータアクセス時間を十分に小さくできないという問題があった。
【０００７】
本発明は、上記従来技術の問題点を解決するためになされたものであって、プロセッサからの一時記憶装置へのデータアクセス時間を小さくできるプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、本発明の実施形態に係るプログラムは、一時記憶装置に複数ある記憶領域を識別するためのライン番号と前記記憶領域に複数記憶されるデータを識別するためのタグアドレスとを有するメインメモリアドレスによりアクセスするデータを指定し、メインメモリに記憶されるデータの一部をキャッシュ記憶する前記一時記憶装置にアクセスし、前記一時記憶装置に記憶されるデータをレジスタに複製して当該データを演算処理に用いるプロセッサに、前記プロセッサがアクセスするデータのメインメモリアドレスを取得する取得機能と、前記取得機能で取得した前記メインメモリアドレスのライン番号で指定される前記一時記憶装置のｎ個（ｎは２以上の整数）の記憶領域に記憶されているデータのタグアドレスのそれぞれと、前記取得機能で取得した前記メインメモリアドレスのタグアドレスとが一致するか否かを判定する判定機能と、前記一時記憶装置のｎ個の記憶領域のうち、ｍ個（ｍは１以上ｎ以下の整数）の記憶領域に記憶されているデータをそれぞれ前記レジスタに複製する複製機能と、前記判定機能で行われる判定処理を完了する前に前記複製機能で行われる複製処理を開始する開始機能と、前記判定機能で前記メインメモリアドレスのタグアドレスと前記一時記憶装置のｎ個の記憶領域に記憶されている前記データのタグアドレスのいずれかとが一致すると判定され、かつ、その一致すると判定されたデータが前記複製機能で前記レジスタに複製されていた場合に、前記複製機能によって当該データが複製された前記レジスタから、当該データを読み出す読出機能とを実現させることを特徴とする。
【発明の効果】
【０００９】
本発明によれば、プロセッサからの一時記憶装置へのデータアクセス時間を小さくできる。
【発明を実施するための最良の形態】
【００１０】
以下、本発明の実施形態について説明する。
【００１１】
（第１の実施形態）
図１は、本発明の第１の実施形態に係る情報処理装置１００を示すブロック図である。
この第１の実施形態に係る情報処理装置１００は、メインメモリ５０に記憶されたデータを用いて演算処理を行うプロセッサ１０と、プロセッサ１０により実行されるプログラムが記憶されるプログラムメモリ３０と、メインメモリ５０に記憶されるデータの一部が記憶されるローカルメモリ２０と、プロセッサ１０からの要求に応じてメインメモリ５０とローカルメモリ２０との間のデータ転送を行うデータ転送装置４０と、データ転送装置４０を介してローカルメモリ２０にデータを供給するメインメモリ５０とを備える。
【００１２】
プロセッサ１０は、演算処理に使用するデータを記憶するレジスタファイル１１を内蔵する。レジスタファイル１１は、複数のレジスタ（図示せず）から構成される。それぞれのレジスタの記憶容量、および、ローカルメモリ２０とレジスタファイル１１との間でプロセッサ１０によってデータ転送される際のデータ単位を、例えば、３２ビットとする。
【００１３】
なお、プロセッサ１０、ローカルメモリ２０、およびプログラムメモリ３０は、内部バス６０により接続される。また、データ転送装置４０およびメインメモリ５０は、外部バス７０により接続される。
【００１４】
プロセッサ１０は、プログラムメモリ３０あるいはローカルメモリ２０に記憶されたプログラムを実行する。なお、プロセッサ１０が実行するプログラムは、メインメモリ５０に記憶されたデータを使用するものであれば良く、ファームウェア、ミドルウェア、オペレーティングシステムであっても良い。
【００１５】
データ転送装置４０は、例えば、ダイレクトメモリアクセスコントローラ（ＤＭＡコントローラ）などにより実現され、プロセッサ１０からの要求に応じて、指定されるデータをローカルメモリ２０からメインメモリ５０へ、あるいは、メインメモリ５０からローカルメモリ２０へ転送する。
【００１６】
プログラムメモリ３０は、プロセッサ１０により実行されるプログラムを記憶する。プログラムメモリ３０は、ＲＡＭ（Ｒａｎｄａｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）あるいはＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）により構成される。ローカルメモリ２０はＲＡＭにより構成され、メインメモリ５０のデータを一時的に記憶（キャッシュ）する。
【００１７】
図２に、プロセッサ１０が出力するメインメモリアドレスの構成を示す。  
メインメモリアドレスのビット幅を、例えば、３２ビットとし、各メインメモリアドレスがメインメモリ５０に記憶された１バイトのデータを指定するものとする。このとき、メインメモリアドレスは、メインメモリ上の４ＧＢのデータを指定することができる。
【００１８】
メインメモリアドレスは、１６ビット幅のタグアドレス、８ビット幅のライン番号、８ビット幅のオフセットで構成される。ここで、図２に示すとおり、タグアドレスは「０ｘ１２３４」、ライン番号は「０ｘ５６」、オフセットは「０ｘ７８」となる。なお、タグアドレス、ライン番号、およびオフセットについては後述する。
【００１９】
図３に、第１の実施形態に係るローカルメモリ２０の構成を示す。なお、図３では、データアレイのキャッシュラインとタグアレイのタグ（管理情報）を、「キャッシュライン（ウェイ番号）−（ライン番号）」、「タグ（ウェイ番号）−（ライン番号）」と記載している。例えば、「キャッシュライン３−２５５」は、ウェイ番号「３」、ライン番号「２５５（０ｘＦＦ）」のキャッシュラインを示す。
【００２０】
ローカルメモリ２０は、メインメモリ５０上のデータをキャッシュライン（キャッシュラインの容量は２５６バイト）ごとに一時的に記憶するデータアレイ２０ａと、データアレイ２０ａに記憶されるデータのタグ（管理情報）をキャッシュラインごとに記憶するタグアレイ２０ｂと、を記憶する。このローカルメモリ２０には、「０ｘ００００００」から「０ｘＦＦＦＦＦＦ」までのローカルメモリアドレスがふられている。ここで、例えば、ローカルメモリ２０の容量を１６ＭＢとし、各ローカルメモリアドレスによってローカルメモリ２０に記憶された１バイトのデータが指定されるものとする。
【００２１】
なお、メインメモリアドレスのライン番号は、データアレイ２０ａのキャッシュラインを識別するために用いられる。メインメモリアドレスのタグアドレスは、データアレイ２０ａのキャッシュラインに記憶されたデータを識別するために用いられる。オフセットは、データアレイ２０ａのキャッシュラインに記憶されたデータ（２５６バイト）のうちの何バイト目のデータかを識別するために用いられる。
【００２２】
また、例えば、データアレイ２０ａとタグアレイ２０ｂを４ウェイとする。即ち、１つのライン番号（例えば、ライン番号「０ｘ０１」）により、４つのキャッシュライン（キャッシュライン１−１、２−１、３−１、４−１）、および、キャッシュラインごとに付された管理情報（タグ１−１、２−１、３−１、４−１）が指定されるものとする。なお、データアレイ２０ａが有するキャッシュラインの数と、タグアレイ２０ｂが有するタグの数は同一である。
【００２３】
図２に示すメインメモリアドレスのライン番号は８ビット幅であり、「０から２５５まで」のライン番号を指定することができる。そのため、データアレイ２０ａが保持するキャッシュライン、およびタグアレイ２０ｂが保持するキャッシュラインごとに付されたタグの数は、ライン番号の指定できる数「２５６」とウェイの数「４」を積算した「１０２４」となる。
【００２４】
なお、データアレイ２０ａのウェイ１の先頭アドレスはローカルメモリアドレス「０ｘＡ１００００」である。データアレイ２０ａのウェイ２の先頭アドレスはローカルメモリアドレス「０ｘＡ２００００」である。データアレイ２０ａのウェイ３の先頭アドレスはローカルメモリアドレス「０ｘＡ３００００」である。データアレイ２０ａのウェイ４の先頭アドレスはローカルメモリアドレス「０ｘＡ４００００」である。
【００２５】
図４に、ウェイ１のタグアレイ２０ｂが記憶するキャッシュラインごとに付された管理情報（タグ）の例を示す。
【００２６】
タグアレイ２０ｂは、ウェイ１において、「タグ１−０」から「タグ１−２５５」までの２５６個のタグを有する。各タグは、１６ビット幅のタグアドレスと、１ビット幅の有効フラグと、１ビット幅のダーティフラグとにより構成される。
【００２７】
タグアドレスは、対応するデータアレイ２０ａのキャッシュラインに記憶されているデータのタグアドレスを示すものである。有効フラグは、対応するデータアレイ２０ａのキャッシュラインに記憶されているデータが有効“１”か、無効“０”を示す。有効フラグが“１”であって、ダーティフラグが“１”の場合、対応するデータアレイ２０ａのキャッシュラインに記憶されているデータに対して書き込みが行われたことを示す。なお、各タグのタグアドレス、有効フラグ、およびダーティフラグは、プロセッサ１０がローカルメモリ２０へデータ書込みを行う際などに、設定される。
【００２８】
図４では、「タグ１−０」が記憶する内容は、「キャッシュライン１−０」に記憶されているデータが有効（有効フラグ“１”）であって、かつ、そのデータに上書きが行われており（ダーティフラグ“１”）、そのタグアドレスが「０ｘ１０Ｆ０」であることを示す。以下同様に、「タグ１−１」は、「キャッシュライン１−１」に記憶されているデータが無効（有効フラグ“０”）であることを示す。また、「タグ１−２」は、「キャッシュライン１−２」に記憶されているデータが有効（有効フラグ“１”）であり、そのタグアドレスが「０ｘ３０Ｆ０」であることを示す。さらにまた、「タグ１−３」は、「キャッシュライン１−３」に記憶されているデータが有効（有効フラグ“１”）であり、そのタグアドレスが「０ｘ４Ｆ００」であることを示す。
【００２９】
図５は、本発明の第１の実施形態に係るプロセッサ１０がキャッシュデータ制御プログラム１０ａを実行する際に用いるデータの入出力関係を示す図である。ローカルメモリ２０のデータアレイ２０ａとタグアレイ２０ｂは、キャッシュデータ制御プログラム１０ａを実行するプロセッサ１０によりアクセスされる。キャッシュデータ制御プログラム１０ａを実行するプロセッサ１０は、ローカルメモリ２０のデータアレイ２０ａに記憶されているデータを、レジスタファイル１１を構成するレジスタに複製（記憶）する。
【００３０】
図６、図７は、本発明の第１の実施形態に係る情報処理装置１００の動作を示すフローチャートである。  
以下に、図６に示す、プロセッサ１０が、ローカルメモリ２０上のデータへアクセスし、そのデータを用いて演算処理を行う際の動作を説明する。
【００３１】
プログラムを実行するプロセッサ１０は、演算処理に用いるデータへアクセスする処理を開始する。まず、プロセッサ１０は、キャッシュデータ制御プログラム１０ａに従い、演算処理に用いるデータをローカルメモリ２０からレジスタへ複製する（ステップＳ１０１）。ここで、プロセッサ１０は、ローカルメモリ２０にアクセスするデータが既に記憶されているか否かの判定処理（キャッシュヒット判定処理）と、キャッシュヒット判定処理が完了する前にローカルメモリ２０に記憶されているデータをレジスタに複製する処理（先行ロード処理）とを、並列に実行することにより、データアクセス処理の高速化を行う。なお、プロセッサ１０が、アクセスするデータをローカルメモリ２０からレジスタへ複製する際に行う処理の詳細については後述する。
【００３２】
次に、プロセッサ１０は、ローカルメモリ２０からレジスタへ複製したデータを用いて演算処理を行い、演算結果をレジスタに記憶する（ステップＳ１０２）。
【００３３】
次に、プロセッサ１０は、レジスタに記憶した演算結果を、ローカルメモリ２０に書き込む（ステップＳ１０３）。
【００３４】
以上のように、プロセッサ１０は、ローカルメモリ２０に記憶されるデータへアクセスし、実行するプログラムに応じた演算処理を行う。
【００３５】
次に、図７に示す、プロセッサ１０が、キャッシュデータ制御プログラム１０ａに従い、先行ロード処理とキャッシュヒット判定処理を並列に行い、アクセスするデータをローカルメモリ２０からレジスタへ複製する際の動作（ステップＳ１０１）を説明する。  
まず、プロセッサ１０は、アクセスするデータのメインメモリアドレス、およびそのメインメモリアドレスに対応するローカルメモリアドレスを計算する。ここで、ローカルメモリ２０は４ウェイであるので、メインメモリアドレス（例えば、０ｘＦＦＦＦ００００）で指定されるデータは、そのメインメモリアドレスのライン番号（０ｘ００）で指定されるローカルメモリ２０上の４つのキャッシュライン（キャッシュライン１−０「０ｘＡ１００００」、キャッシュライン２−０「０ｘＡ２００００」、キャッシュライン３−０「０ｘＡ３００００」、キャッシュライン４−０「０ｘＡ４００００」）のいずれかにキャッシュ記憶される。よって、メインメモリアドレス（０ｘＦＦＦＦ００００）に対応するローカルメモリアドレスは、「０ｘＡ１００００」、「０ｘＡ２００００」、「０ｘＡ３００００」、「０ｘＡ４００００」である。
【００３６】
次に、プロセッサ１０は、取得したメインメモリアドレスのライン番号（０ｘ００）に指定される４つのキャッシュライン（キャッシュライン１−０，２−０，３−０，４−０）に記憶されたデータのうち、２つのキャッシュライン（例えば、キャッシュライン１−０，２−０）上のデータをローカルメモリ２０からレジスタへ複製する処理を、キャッシュライン判定処理に先行して開始する（先行ロード処理、ステップＳ２０１）。
【００３７】
即ち、ローカルメモリ２０とレジスタ間では３２ビット単位でデータの転送処理が行われるため、プロセッサ１０は、ローカルメモリアドレス（「０ｘＡ１００００」乃至「０ｘＡ１０００３」）に指定されるデータ（３２ビット）と、ローカルメモリアドレス（「０ｘＡ２００００」乃至「０ｘＡ２０００３」）に指定されるデータ（３２ビット）と、を２つのレジスタに複製する処理を開始する。
【００３８】
なお、プロセッサ１０は、先行ロード処理を行う際に、取得したメインメモリアドレスのライン番号に指定される４つのキャッシュラインのそれぞれに記憶された４つのデータのうち、先行ロード処理を行うデータの個数を１つ乃至４つのいずれとしてもよい。
【００３９】
次に、先行ロード処理（ステップＳ２０１）の完了を待つことなく、即座に、プロセッサ１０はキャッシュヒット判定処理を開始する。即ち、プロセッサ１０は、取得したメインメモリアドレスのタグアドレス（０ｘＦＦＦＦ）と、取得したメインメモリアドレスと対応するローカルメモリアドレスに指定される４つのデータのタグアドレス（タグ１−０のタグアドレス「０ｘ１０Ｆ０」、タグ２−０のタグアドレス「０ｘＦＦＦＦ」、タグ３−０のタグアドレス「０ｘ２０２０」、タグ４−０のタグアドレス「０ｘ３Ｆ３０」）のいずれかと、が一致するか否かを判定する（ステップＳ２０２）。
【００４０】
（ヒット判定）
取得したメインメモリアドレスのタグアドレスと、そのメインメモリアドレスと対応するローカルメモリアドレスに指定される４つのデータのタグアドレスのいずれかとが一致した場合（ヒット判定、ステップＳ２０２のはい）、プロセッサ１０によりアクセスされるデータは、ローカルメモリ２０に記憶されている。
【００４１】
ここで、取得したメインメモリアドレスのタグアドレス（０ｘＦＦＦＦ）と、先行ロード処理を行っている２つのデータ（キャッシュライン１−０，２−０）のタグアドレス（タグ１−０のタグアドレス「０ｘ１０Ｆ０」，タグ２−０のタグアドレス「０ｘＦＦＦＦ」）のいずれかとが一致する場合（ステップＳ２０３のはい）、プロセッサ１０は、アクセスするデータの先行ロード処理を行っている。
【００４２】
そのため、プロセッサ１０は、先行ロード処理が完了し次第、ローカルメモリ２０上のデータを複製した２つのレジスタのうち、取得したメインメモリアドレスのタグアドレス（０ｘＦＦＦＦ）と同一のタグアドレスを有するデータが記憶されたレジスタを選択し、そのレジスタからデータを読み出して演算処理に用いる。
【００４３】
即ち、プロセッサ１０は、タグアドレスが「０ｘＦＦＦＦ」であるローカルメモリ２０のキャッシュライン２−０に記憶されていたデータであって、ローカルメモリアドレス（「０ｘＡ２００００」乃至「０ｘＡ２０００３」）に記憶されていたデータ（３２ビット）を、レジスタから読み込む。そして、プロセッサ１０は、そのデータを用いた演算処理を行う。
【００４４】
一方、取得したメインメモリアドレスのタグアドレスと、ローカルメモリ２０からレジスタへ先行して複製処理を行っている２つのデータのタグアドレスのいずれともが一致しない場合（ステップＳ２０３のいいえ）、取得したメインメモリアドレスのライン番号に指定されるローカルメモリ２０の４つのキャッシュライン上にアクセスするデータはあるものの、プロセッサ１０はそのデータの先行ロード処理を行っていない。
【００４５】
そこで、プロセッサ１０は、キャッシュヒット判定処理でヒット判定とされたデータ、即ち、メインメモリアドレスのタグアドレスと同一のタグアドレスを持つデータを、レジスタへ複製する処理（ロード処理）をあらためて行う（ステップＳ２０５）。このロード処理が完了し次第、プロセッサ１０は、レジスタに複製したデータを用いて、演算処理を行う。
【００４６】
（ミス判定）
取得したメインメモリアドレスのタグアドレスと、そのメインメモリアドレスと対応するローカルメモリアドレスに指定される４つのデータのタグアドレスのいずれともが一致しなかった場合（ミス判定、ステップＳ２０２のいいえ）、プロセッサ１０によりアクセスされるデータは、ローカルメモリ２０に記憶されていない。
【００４７】
そこで、プロセッサ１０は、データ転送装置４０を制御し、メインメモリアドレスに指定されるデータをメインメモリ５０からローカルメモリ２０へ転送し、そのデータのメインメモリアドレスのライン番号と対応するローカルメモリ２０上のキャッシュラインのいずれかに複製する（ステップＳ２０４）。
【００４８】
プロセッサ１０が、「メインメモリ５０上のデータを複製するキャッシュライン」を選択する方法を以下に示す。  
まず、プロセッサ１０は、有効フラグが“０”であるキャッシュラインを、「メインメモリ５０上のデータを複製するキャッシュライン」と選択する。次に、メインメモリアドレスのライン番号と対応する４つのキャッシュラインのすべての有効フラグが“１”である場合には、プロセッサ１０は、ダーティフラグが“０”のキャッシュラインを選択し、「メインメモリ５０上のデータを複製するキャッシュライン」とする。
【００４９】
さらに、メインメモリアドレスのライン番号に指定される４つのキャッシュラインのすべての有効フラグが“１”、ダーティフラグが“１”である場合には、プロセッサ１０は、いずれかの１つのキャッシュラインに記憶されているデータをメインメモリ５０に書込み、「メインメモリ５０上のデータを複製するキャッシュライン」と選択する。
【００５０】
即ち、プロセッサ１０は、データ転送装置４０を制御して、選択したキャッシュラインに記憶されているデータをメインメモリ５０へ転送し、そのキャッシュラインの有効フラグ“０”、ダーティフラグ“０”を設定する。ここで、プロセッサ１０は、選択したキャッシュラインに記憶されているデータのメインメモリアドレスを、そのライン番号と、対応するタグに記憶されたタグアドレスと、オフセット（０ｘ００）とを用いて復元する。そして、プロセッサ１０は、選択したキャッシュラインに記憶されているデータを、復元したメインメモリアドレスに指定されるメインメモリ５０上の領域に書き込む。そして、プロセッサ１０は、その選択したキャッシュラインを、「メインメモリ５０上のデータを複製するキャッシュライン」とする。
【００５１】
次に、取得したメインメモリアドレスに指定されるデータをメインメモリ５０からローカルメモリ２０へ複製した後に、プロセッサ１０は、そのローカルメモリ２０に複製したデータを、さらにレジスタへ複製する処理（ロード処理）を行う（ステップＳ２０５）。このロード処理が完了し次第、プロセッサ１０は、レジスタに複製したデータを用いて、演算処理を行う。
【００５２】
以上のように、プロセッサ１０は、キャッシュデータ制御プログラム１０ａに従い、先行ロード処理とキャッシュヒット判定処理を並列に行い、アクセスするデータをローカルメモリ２０からレジスタへ複製する。
【００５３】
プロセッサ１０は、ローカルメモリ２０に記憶されるデータへアクセスする際に、先行ロード処理（ステップＳ２０１）を開始し、先行ロード処理の完了を待たずに、キャッシュヒット判定処理（ステップＳ２０２）を開始する。即ち、プロセッサ１０は、先行ロード処理（ステップＳ２０１）とキャッシュヒット判定処理（ステップＳ２０２）とを並列に実行する。
【００５４】
キャッシュヒット判定処理でヒット判定であり（ステップＳ２０２の一致する）、かつ、先行ロード処理を行ったデータへプロセッサ１０がアクセスする場合（ステップＳ２０３のはい）、プロセッサ１０は、先行ロード処理とキャッシュヒット判定処理を並列実行し、そのキャッシュヒット判定処理の判定結果に基づいて、先行ロード処理でレジスタに複製していたデータへアクセスする。
【００５５】
上記のように先行ロード処理とキャッシュヒット判定処理を並列に実行するため、プロセッサ１０がローカルメモリ２０上のデータへアクセスするのに要する時間（データアクセス時間）は、キャッシュヒット判定処理後に通常のロード処理を行ってデータアクセスする場合と比較して、削減される。
【００５６】
即ち、キャッシュヒット判定処理後に通常のロード処理を行う場合と比較して、先行ロード処理に要する時間あるいはキャッシュヒット判定処理に要する時間のうち、処理時間の短い一方の処理時間を、データアクセス時間から削減することができる。
【００５７】
なお、キャッシュヒット判定処理が完了する前に先行ロード処理を開始することにより、先行ロード処理とキャッシュヒット判定処理を並列実行でき、データアクセス時間の短縮化を実現できる。
【００５８】
また、キャッシュヒット判定処理が完了する前に先行ロード処理を完了していれば、キャッシュヒット判定処理の判定結果が決定した直後に、プロセッサ１０は、先行ロード処理でレジスタに複製したデータへアクセスすることができる。
【００５９】
一方、キャッシュヒット判定処理でミス判定であった場合（ステップＳ２０２の一致しない）、あるいは、キャッシュヒット判定処理でヒット判定であったものの、キャッシュヒット判定に先行してロード処理を行ったデータへプロセッサ１０がアクセスしない場合（ステップＳ２０３のいいえ）、プロセッサ１０は、ミス判定時の通常処理、あるいは、ヒット判定時の通常処理を行う。このときのプロセッサ１０のデータアクセス時間は、ミス判定時あるいはヒット判定時の通常のデータアクセス時間に、先行ロード処理を開始するのに要する時間が加算されるだけであり、キャッシュヒット判定処理に先行してロード処理を行うことによるオーバーヘッドは小さい。
【００６０】
このように、第１の実施形態に係る情報処理装置１００によれば、キャッシュヒット判定処理が完了する前に、ローカルメモリ２０に記憶されたデータをレジスタへ複製する処理を開始することにより、プロセッサ１０からのローカルメモリ２０へのデータアクセス時間を小さくできる。
【００６１】
なお、プロセッサ１０は、メインメモリアドレスのライン番号に指定される４つのキャッシュラインに記憶されたすべてのデータを、レジスタに先行ロード処理しても良い。また、ローカルメモリ２０のデータアレイとタグアレイを１ウェイとし、プロセッサ１０は、メインメモリアドレスのライン番号に指定される１つのキャッシュラインに記憶された１つのデータを、レジスタに先行ロード処理しても良い。
【００６２】
上記２つの場合では、プロセッサ１０は、メインメモリアドレスのライン番号に指定されるキャッシュラインに記憶されたすべてのデータを、ローカルメモリ２０に先行ロード処理する。そのため、キャッシュヒット判定処理でヒット判定とされた場合、プロセッサ１０によりアクセスされるデータは、必ずレジスタに先行ロード処理されることになる。
【００６３】
そのため、キャッシュヒット判定処理を行った後に、プロセッサ１０によりアクセスされるデータが先行ロード処理されたか否かに応じて、プロセッサ１０が行う処理を変更する必要がなくなり、処理の制御を簡便にすることができる。
【００６４】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。
【図面の簡単な説明】
【００６５】
【図１】本発明の第１の実施形態に係る情報処理装置の構成を示すブロック図。
【図２】本発明の第１の実施形態に係るプロセッサが出力するメインメモリアドレスの構成を示す図。
【図３】本発明の第１の実施形態に係るローカルメモリの構成を示す図。
【図４】本発明の第１の実施形態に係るローカルメモリに記憶されるタグアレイの構成を示す図。
【図５】本発明の第１の実施形態に係るプロセッサで実行されるキャッシュデータ制御プログラムが用いるデータの入出力関係を示すブロック図。
【図６】本発明の第１の実施形態に係る情報処理装置の動作を示すフローチャート。
【図７】本発明の第１の実施形態に係る情報処理装置の動作を示すフローチャート。
【符号の説明】
【００６６】
１０・・・プロセッサ
１０ａ・・キャッシュデータ制御プログラム
２０・・・ローカルメモリ
２０ａ・・データアレイ
２０ｂ・・タグアレイ
３０・・・プログラムメモリ
４０・・・データ転送装置
５０・・・メインメモリ
６０・・・内部バス
７０・・・外部バス
１００・・・情報処理装置
【図１】
2008262390.tif 000003
【図２】
2008262390.tif 000004
【図３】
2008262390.tif 000005
【図４】
2008262390.tif 000006
【図５】
2008262390.tif 000007
【図６】
2008262390.tif 000008
【図７】
2008262390.tif 000009