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