(57)【要約】【課題】メモリ装置を共有する複数プロセッサからなるシステムで、プリフェッチ命令によるキャッシュ機構の効果が、メモリ装置への競合アクセスに起因して無効となることを、簡単な回路構成で防止すること。【解決手段】通常必要とするキャッシュ２２以外に、メモリ装置から返却されたリプライデータを一定期間保持するためのプリキャッシュ２３をキャッシュ２２の前段に設け、Snoop命令は、既成の情報処理装置と同じく、キャッシュ２２に対してのみ実行可能とし、プリキャッシュ２３は該命令の実行対象外とする。キャッシュのエントリフルによるSwap-out処理も、キャッシュ２２からのみ実行されるものとする。プロセッサ２のCore２１から発行される命令に対しては、プリキャッシュ２３もキャッシュ２２の一部としてリード及びライトを可能とする。プリキャッシュ２３内に保存したデータは、一定期間保持した後、キャッシュ２２に移動させる。【選択図】図２
2011076345.tif 000002
【特許請求の範囲】
【請求項１】
他の情報処理装置と共有される主記憶装置の動作速度を改善するためのデータキャッシュ機構として、
前記主記憶装置から返却されるリプライデータを保持するキャッシュ機構と、
前記キャッシュ機構の前段で前記主記憶装置から返却されるリプライデータを保持するプリキャッシュ機構とを備え、さらに、
前記主記憶装置から返却された前記リプライデータを、前記プリキャッシュ機構に、所定の一定期間だけ保持する手段と、
演算処理装置から発行される命令に対しては、前記プリキャッシュ機構も、前記キャッシュ機構の一部として、リード及びライトを可能にする手段と、
前記主記憶装置から受け付けるSnoop （監視）命令については、前記キャッシュ機構のみを対象として実行し、前記プリキャッシュ機構に対しては、該Snoop 命令の実行対象外とする手段と、
を備えたことを特徴とする情報処理装置。
【請求項２】
前記プリキャッシュ機構に保持されたデータは、前記所定の一定時間の経過後に、前記キャッシュ機構に移動されることを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記主記憶装置は、他の情報処理装置と共有されている記憶装置であることを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記プリキャッシュ機構は、前記リプライデータ分のエントリに加えて、前記所定の一定時間内にさらに前記主記憶装置から返却されるリプライデータを保持できるエントリを備えていることを特徴とする請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
主記憶装置を他の情報処理装置と共有する構成の情報処理装置の、データキャッシュ機構を制御するための情報処理装置のデータキャッシング方法であって、
他の情報処理装置と共有される前記主記憶装置の動作速度を改善するためのデータキャッシュ機構の一部として、
前記主記憶装置から返却されるリプライデータを保持するキャッシュ機構と、
前記キャッシュ機構の前段で前記主記憶装置から返却されるリプライデータを保持するプリキャッシュ機構と、を設けると共に、
前記主記憶装置から返却される前記リプライデータを、前記プリキャッシュ機構に、所定の一定期間だけ保持するステップと、
演算処理装置から発行される命令に対しては、前記プリキャッシュ機構も、前記キャッシュ機構の一部として、リード及びライトを可能にするステップと、
前記主記憶装置から受け付けるSnoop （監視）命令については、前記キャッシュ機構に対してのみ実行可能とし、前記プリキャッシュ機構については該Snoop 命令の実行対象外とするステップと、
を有することを特徴とする情報処理装置のデータキャッシング方法。
【請求項６】
請求項１乃至４に記載の情報処理装置を構成要素に含むマルチプロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理装置及び情報処理装置のデータキャッシング方法並びにマルチプロセッサシステムに係り、特に、メモリ装置が共有される場合に、プリフェッチ命令による性能向上機能を維持させる情報処理装置及び情報処理装置のデータキャッシング方法並びにマルチプロセッサシステムに関する。
【背景技術】
【０００２】
通常、情報処理装置（以下、「プロセッサ」と称する）においては、メモリ装置（主記憶装置）のアクセス速度を高めるために、前記メモリ装置以外の装置として、ＣＰＵに高速の記憶装置を備えたキャッシュ機構（以下、単に「キャッシュ」と略称することもある）を設置し、データのキャッシングを行っている。
このようなデータのキャッシングを行うキャッシュ機構にあっては、高速の記憶装置上でのヒット率を高めて、アクセス速度を向上させることが意図されるが、その他に、前記メモリ装置間のデータの一貫性（coherence）が配慮され、前記メモリ装置でデータの不一致が生じたり、前記メモリ装置への不要な格納処理や更新処理がなされないように工夫される。
また、このようなデータのキャッシングを行うキャッシュ機構を備えた複数のＣＰＵが、メモリ装置を（主記憶装置）共有する構成となっている場合もある。
【０００３】
複数のＣＰＵが主記憶装置を共有する構成の場合、例えば、２つの異なるＣＰＵと、該主記憶装置との３者間で、前述のデータの一貫性がとれなくなることがある。
例えば、キャッシュと主記憶装置との間がバスで接続されている場合、主記憶装置にデータを書き込む際には、該書き込みの要求は該バスに接続された全構成要素にブロードキャスト（発信）され、各ＣＰＵのキャッシュは、該ブロードキャストされた要求をsnoop（監視）命令で監視し、書き込みデータのアドレス（一意名）が自分のキャッシュに有るものと同一である場合には、当該キャッシュ上のデータが乗っているラインを無効化する（無効化する理由は、該アドレスが示す当該キャッシュ上のデータは、一般に、前記書き込みデータとは異なるものとなるから）。
これにより、次回のアクセス時（より具体的には読み出し時）には当該キャッシュではミス・ヒットとなるので、主記憶装置の方から最新のデータを取得することができることになり、結果としてキャッシュの一貫性を維持することができることになる。ちなみに、このような機能を有するキャッシュを「snoop cache」と称している。
【０００４】
他方、プロセッサは、自装置が使用する予定のあるデータをプリフェッチ命令により、先行してプロセッサ内のキャッシュに読み出しておく処理を行っている。しかしながら、このプリフェッチ機能は、例えば前述のsnoop（監視）命令の実行により、その期待された効果が無効となる場合があり、この点の解決が課題となっている。
このプリフェッチ命令が出されるタイミングは、全体的な処理の流れから見て、本来ならば読み取り命令が出されても良い正当なタイミングであるが、もしもプロセッサ内のキャッシュに、該当するデータが存在しない場合には、主記憶装置から、該データを読み出すことになるので、アクセス時間が多大に掛かるため、このプリフェッチ命令を先行して発行することにより、まずは、先付け処理として、プロセッサ内のキャッシュに該データを読み出しておくものである。このプリフェッチ命令を発行した時点から以降、該データが本当に必要になるまでの間、または該データが読み出されるまでの間は、該プロセッサは、他のタスクを実行することができる。
なお、このプリフェッチ命令は、リード命令の結果が直ぐに欲しい場合に、該リード命令に先行して発行しておくことも有効な使用法である。
【０００５】
プリフェッチ処理機能を有してデータのキャッシングを行う既成のプロセッサとしては、例えば図３に示すようなものがある。
以下、周知の技術として、プリフェッチしたデータを一定期間キャッシュ内に保持して性能改善を図る方法を説明する。
図３は、プリフェッチしたデータを一定期間キャッシュ内に保持して性能改善を図る周知の方法が適用されるプロセッサの内部構成を示す構成図である。
同図に示すプロセッサ３は、リードやライト等の命令を発行するCore（演算処理装置）３１と、プロセッサから発行したリード命令によりメモリ装置から読み出して持ってきたデータを保持するキャッシュ３２と、アドレスバッファ３４とSnoop命令のアドレスとが一致したことによりキャッシュにSnoop命令の実行抑止指示を出すSnoop抑止回路３３と、リプライデータ（以下、「Reply Data」と書くこともある）の返却時に返却されたデータのアドレスを一定期間保持するアドレスバッファ３４と、アドレスバッファ内のアドレスとSnoop命令やSwap-out対象のキャッシュ内データのアドレスとを比較するコンパレータ３５と、を備える。
【０００６】
但し、図３に示すプロセッサ３の構成は当業者にとってよく知られており、これ以外に他の機能に対応した構成要素も存在するが、本発明とは直接関係しない構成要素であるので、ここでは省略している。
以下、図１及び図３を参照して、既成のプロセッサであるプロセッサ３の動作を説明する。
まず、メモリ装置１３からReply Data（ｃ２）（図１参照）を受信すると、プロセッサ３は、キャッシュ３２にデータを登録すると共に、Reply Data（ｃ２）のデータのアドレスをアドレスバッファ３４に登録する。アドレスバッファ３４内にはキャッシュ内に対象データを保持しておきたい時間だけ登録しておく。アドレスバッファ３４内にアドレスが登録されている間に、メモリ装置１３からのSnoop命令（以下、単に「Snoop」と略称する）（ｃ４）を受信すると、キャッシュ３２でSnoop（ｃ４）を実行する前に、コンパレータ３５によりアドレスバッファ３４内のアドレスとSnoop（ｃ４）のアドレスとを比較する。
【０００７】
この比較の結果、アドレスバッファ３４内に一致するアドレスが登録されていると、Snoop抑止回路３３に報告され、Snoop 抑止回路３３は、キャッシュ３２におけるSnoop （ｃ４）の実行を抑止する。この場合のSnoop（ｃ４）の抑止処理は、メモリ装置１３に一度リトライ指示を返却して、メモリ装置１３からSnoop（ｃ４）を再発行したり、プロセッサ３内において保持したりと、システムによって一貫性維持のための処理形態が異なるため、ここでは詳細には説明しない。
また、Swap-out処理においても、吐き出す対象のエントリにおいて、コンパレータ３５によりアドレスバッファ３４内のアドレスとSwap-out対象のエントリ内の全データのアドレスとを比較して、該比較した結果をキャッシュ３２に戻すことで、アドレスバッファ３４内のアドレスと一致したデータについてはSwap-out対象外としてSwap-outするデータを決定する処理が行われる。この場合、キャッシュ３２の構成がＮウェイセットアソシアティブである場合は、コンパレータ３５の比較回路もＮ個必要となる。
【０００８】
これらの対策により、アドレスバッファ３４内にアドレスが格納されている間は、キャッシュ３２から対象データは吐き出されないことになるため、Core３１からプリフェッチにより先読みを行った（例えばコンペア＆スワップ命令）が実行されれば、確実にキャッシュヒットすることになるので、プリフェッチ（ｃ１）で先行して読み出した効果により、処理が速くなり、よって性能改善となる。その後、アドレスバッファ３４からアドレスが削除されると、Snoop（ｃ４）に対する抑止処理が解除され、実行されることになったり、Swap-out可能となることでメモリ装置１３に書き戻されたりすることになる。
【０００９】
本発明の分野に関する公知技術としては、例えば、特許文献１には、キャッシュユニットをSnoopする技術が開示されている。
また、例えば、特許文献２には、「スヌープ・キャッシュ」なる用語が見られ、特許文献１と同様の技術が開示されている。
また、例えば、特許文献３には、メモリのプリフェッチ性能を改善する技術が開示されている。
さらに、例えば、特許文献４には、複数のキャッシュを使用する技術が開示されている。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００６−２１６０７５号公報
【特許文献２】特開平３−１８９８４５号公報
【特許文献３】特開平１１−３２８０１８号公報
【特許文献４】特許第３２８６２５８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
ところで、上記背景技術で述べた従来の情報処理装置及び情報処理装置のデータキャッシング方法にあっては、プリフェッチしたデータを一定期間キャッシュ内に保持して性能改善を図る方法が適用される構成の場合、先行リードしたデータを使用する前にキャッシュから吐き出されてしまわないように、保持しておきたいデータのアドレスを比較回路付きバッファ内に保持しておき、このバッファ内のデータアドレスとキャッシュ内のデータアドレスとが一致する場合はキャッシュからの吐き出しの対象外としている。このため、キャッシュにおけるSnoop動作やSwap-out動作に抑止機能が追加となったり、アドレスを保持するバッファに比較回路が多数必要になったりと、キャッシュ及びその周りの論理及び動作が複雑化するという問題点があった。
【００１２】
以上の問題点をさらに具体的に纏めると、
第１の問題点は、比較回路付きのアドレスバッファを設けるなど、複雑な回路の追加が必要となってしまうことである。
第２の課題は、キャッシュに対して、Snoop命令のデータアドレスがアドレスバッファ（前述の比較回路付きバッファ）内のアドレスと一致した場合に、該Snoop命令の実行を抑止する機能が必要になるなど、複雑な論理回路の追加や、回路の変更が必要となってしまうことである。  
第３の課題は、キャッシュに対して、Swap-outするエントリ内のデータに対して、そのアドレスが、アドレスバッファ内のアドレスと一致したデータについては該Swap-outの対象外とする機能を必要とするなど、複雑な論理回路の追加や、回路の変更が必要となってしまうことである。
【００１３】
なお、本発明は、
（ａ）  通常のキャッシュ機構に加えて、該キャッシュ機構の前段にプリキャッシュ機構を設けること、
（ｂ）  外部のメモリ装置に格納されている指定データを、プリキャッシュ機構に取り入れさせる効果を有する周知のプリフェッチ命令を使用すること、
（ｃ）  メモリ装置から受け付けるSnoop命令については、通常のキャッシュ機構に対してのみ実行可能とし、プリキャッシュ機構については実行対象外とすること、
（ｄ）  外部のメモリ装置から返却されたリプライデータをプリキャッシュ機構に一定期間保持した後、プリキャッシュ機構からキャッシュ機構にデータを移動すること、
を骨子としている。
しかしながら、前述の特許文献１〜４には、前記の（ａ）項記載の技術と同様の技術は開示されているが、前記の（ｂ）項、（ｃ）項、及び（ｄ）項記載の技術は開示されていない。
【００１４】
本発明は、上記従来の問題点に鑑みてなされたものであって、メモリ装置を共有する複数プロセッサからなるシステムで、プリフェッチ命令によるキャッシュ機構の効果が、メモリ装置の競合アクセスに起因して無効となることを、簡単な回路構成で防止することができる情報処理装置のキャッシュ機構及び情報処理装置のデータキャッシング方法並びにマルチプロセッサシステムを提供することを目的としている。
【課題を解決するための手段】
【００１５】
上記課題を解決するために、本発明に係る情報処理装置は、他の情報処理装置と共有される主記憶装置の動作速度を改善するためのデータキャッシュ機構として、前記主記憶装置から返却されるリプライデータを保持するキャッシュ機構と、前記キャッシュ機構の前段で前記主記憶装置から返却されるリプライデータを保持するプリキャッシュ機構とを備え、さらに、前記主記憶装置から返却された前記リプライデータを、前記プリキャッシュ機構に、所定の一定期間だけ保持する手段と、演算処理装置から発行される命令に対しては、前記プリキャッシュ機構も、前記キャッシュ機構の一部として、リード及びライトを可能にする手段と、前記主記憶装置から受け付けるSnoop（監視）命令については、前記キャッシュ機構のみを対象として実行し、前記プリキャッシュ機構に対しては、該Snoop命令の実行対象外とする手段と、を備えたことを特徴とする。
【００１６】
また、本発明に係る情報処理装置のデータキャッシング方法は、主記憶装置を他の情報処理装置と共有する情報処理装置のデータキャッシュ機構を制御するための情報処理装置のデータキャッシング方法であって、他の情報処理装置と共有される前記主記憶装置の動作速度を改善するためのデータキャッシュ機構の一部として、前記主記憶装置から返却されるリプライデータを保持するキャッシュ機構と、前記キャッシュ機構の前段で前記主記憶装置から返却されるリプライデータを保持するプリキャッシュ機構と、を設けると共に、前記主記憶装置から返却される前記リプライデータを、前記プリキャッシュ機構に、所定の一定期間だけ保持するステップと、演算処理装置から発行される命令に対しては、前記プリキャッシュ機構も、前記キャッシュ機構の一部として、リード及びライトを可能にするステップと、前記主記憶装置から受け付けるSnoop（監視）命令については、前記キャッシュ機構に対してのみ実行可能とし、前記プリキャッシュ機構については該Snoop命令の実行対象外とするステップと、を有することを特徴とする。
【００１７】
また、本発明に係るマルチプロセッサとして、前記の情報処理装置を構成要素に含むマルチプロセッサシステムを提供するものである。
【発明の効果】
【００１８】
以上説明したように、本発明の情報処理装置によれば、主記憶装置を共有する複数プロセッサからなるシステム等で、プリフェッチ命令の場合のキャッシュ機構の効果が、該主記憶装置の競合アクセスに起因して無効となることを、通常のキャッシュ機構に加えて、通常のキャッシュ機構と同様にリプライデータを保持するためのプリキャッシュ機構を追加しただけという、極めて簡単な構成でもって防止することができる効果が有る。
【図面の簡単な説明】
【００１９】
【図１】本発明の実施形態に係る情報処理装置を含むマルチプロセッサシステムの全体構成を示す構成図である。
【図２】本発明の実施形態に係る情報処理装置の主要な構成を示す構成図である。
【図３】プリフェッチしたデータを一定期間キャッシュ内に保持して性能改善を図る周知の方法が適用されるプロセッサの内部構成を示す構成図である。
【発明を実施するための形態】
【００２０】
本発明の情報処理装置及び情報処理装置のデータキャッシング方法は、プリフェッチ命令による本来の性能向上効果が低下することを防止するものであり、複数プロセッサからなるシステムの競合動作において、プロセッサが使用する予定のあるデータをプリフェッチ命令により、先行してプロセッサ内のキャッシュに読み出しておくための動作に対して、プロセッサが先行リードしたデータを使用する前にキャッシュから吐き出されてしまうことによる性能低下問題を、キャッシュの前段にプリキャッシュを追加することだけで、容易に解決するものである。
【００２１】
このため、プロセッサ内に、通常必要とするキャッシュ以外に、メモリ装置（主記憶装置）から返却されたリプライデータを一定期間保持するためのプリキャッシュを新たに設け、プリキャッシュ内に一定期間保持した後、プリキャッシュからキャッシュにデータを移動する。
メモリ装置から受け付けるSnoop命令は、既成の情報処理装置と同じく、キャッシュに対してのみ実行可能として、プリキャッシュはSnoop命令実行の対象外とする。また、キャッシュのエントリフルによるSwap-out処理も、キャッシュからのみ実行されるものとして、プリキャッシュからはSwap-out処理を実行できないようにする。
また、プロセッサ内のCore部から発行される命令に対しては、プリキャッシュもキャッシュの一部としてリード及びライトを可能とする。これにより、プリキャッシュにおいて一定期間リプライデータを保持していることで、既成の情報処理装置による吐き出し抑止の方法と同様に、保持しておきたいデータは、Core部（演算処理装置）から見ると、キャッシュ内に一定期間は保持されていることになり、本来の性能向上効果が発揮される効果が得られる。
【００２２】
以下、本発明の情報処理装置及び情報処理装置のデータキャッシング方法並びにマルチプロセッサシステムの実施形態について、図面を参照して詳細に説明する。
図１は、本発明の実施形態に係る情報処理装置を含むマルチプロセッサシステムの全体構成を示す構成図である。
同図において、本実施形態の情報処理装置は、プロセッサＡ（１１）と、プロセッサＢ（１２）である。プロセッサＡ（１１）と、プロセッサＢ（１２）は、メモリ装置１３（主記憶装置）を共有する。
即ち、図１に示す情報処理システムは、マルチプロセッサシステムであり、プロセッサＡ（１１）と、プロセッサＢ（１２）と、メモリ装置１３と、を備える。
プロセッサＡ（１１）とメモリ装置１３との間、及びプロセッサＢ（１２）とメモリ装置１３との間はインタフェースで接続される。メモリ装置１３内には、複数のプロセッサ間のデータの一貫性（coherence）を制御するディレクトリ１４が実装され、メモリ装置１３上のデータをプロセッサがリードすると、ディレクトリ１４内にデータを持っていったプロセッサのＩＤ（識別名）等の情報を設定する。
【００２３】
図２は、本発明の実施形態に係る情報処理装置の主要な構成を示す構成図である。
図２において、本発明の実施形態に係る情報処理装置はプロセッサ２であり、図１に示すプロセッサＡ（１１）、及びプロセッサＢ（１２）の主要な構成も、図２に示すプロセッサ２の構成と同じである。
図２に示すプロセッサ２は、リードやライト等の命令を発行するCore２１（演算処理装置）と、プロセッサから発行したリード命令により、メモリ装置１３（図１参照）から読み出して持ってきたデータを保持するキャッシュ２２と、キャッシュ２２の前段に置かれ、本発明の特徴的な処理として、メモリ装置１３から読み出したリプライデータを一定期間保持するプリキャッシュ２３と、を備えて構成される。
【００２４】
図２に示す回路配線により、Core２１（演算処理装置）から発行される命令に対しては、キャッシュ２２、及びプリキャッシュ２３の両方に対してリード及びライト可能とする。また、メモリ装置１３（図１）から受け付けるSnoop命令に対しては、キャッシュ２２に対してのみ実行可能として、プリキャッシュ２３には実行不可とする。
また、Core２１から発行される命令として、メモリ装置１３に格納されているデータをプリキャッシュ２３に取り入れさせる効果を有する命令、即ち周知のプリフェッチ命令を含める。
【００２５】
図１に示すメモリ装置１３の詳細機能、及び図２に示すプロセッサ２の他の機能については、当業者にとってよく知られており、また本発明とは直接関係しないので、その詳細な構成の記載及び説明は省略する。
また、本実施形態では、図１に示すメモリ装置１３に接続されるプロセッサの台数をプロセッサＡ（１１）とプロセッサＢ（１２）との、計２台としているが、一般に、本発明では、メモリ装置１３を共有するマルチプロセッサシステムとして配備可能なプロセッサの台数は任意の複数であってもよい。
【００２６】
以下、図１を参照しながら、本実施形態に係る情報処理装置（ここでは、図２に示すプロセッサ２）のキャッシユ機構の動作を説明する。
まず、図１に示す情報処理システムの構成要素である情報処理装置（ここでは、図２に示すプロセッサ２）において、今、仮に、プリキャッシュ２３が設置されておらず、また、Reply Data（ｃ２）も、プリキャッシュ２２に取り入れられる構成となっている場合に生じる問題点について総括的に述べる。
一般に、情報処理装置が前記構成のプロセッサＡ（１１）であり、かつCore２１からの命令処理において、該命令が完了しないと次の命令に進まないような処理が含まれている場合、このような命令の実行時間は該情報処理装置の性能に大きく影響する。
【００２７】
このような命令の１例として、例えば、コンペア＆スワップ命令がある。このコンペア＆スワップ命令は、比較結果により、その後の処理が変わるため、命令サイクル内の処理の完了を待ち合わせる必要がある。この命令の動作手順としては、まずデータのリードを行い、読み出したデータを期待値と比較して、両者の一致がとれた場合は、このデータに対し、スワップ処理としてライトを行い、一致しなかった場合には何も実行しない。
【００２８】
このようなコンペア＆スワップ命令を一連の処理サイクルの中で実行する場合、前記の構成のプロセッサ内のキャッシュ２２にデータが格納されていると、処理を速く完了させることが可能となる。このため、コンペア＆スワップ命令の実行に先行してプリフェッチ命令（ｃ１）を発行することで、メモリ装置１３内の対象データを、Reply Data（ｃ２）として、前記のプロセッサＡ（１１）内のキャッシュ２２に返却して保持させる。この時、プリフェッチ命令（ｃ１）がアクセスするアドレスと同一のアドレスに対して、プロセッサＢ（１２）から、Load命令（ｃ３）が発行され、メモリ装置１３で競合が発生するが、ここでは、プロセッサＡ（１１）からのプリフェッチ命令（ｃ１）が先に処理されたとする。
【００２９】
メモリ装置１３においてはプリフェッチ命令（ｃ１）を処理したことにより、Reply Data（ｃ２）を返却すると共に、ディレクトリ１４に対して、プロセッサＡ（１１）が対象データを持っていったことを、プロセッサＡ（１１）の識別名と対応させて記録する。
メモリ装置１３においては、競合したプロセッサＢ（１２）からのLoad命令（ｃ３）を続いて処理するが、ディレクトリ１４にプロセッサＡ（１１）が対象データを持っていったことが記録されているため、メモリ装置１３からプロセッサＡ（１１）に対してReply Data（ｃ２）を追いかけるように、Snoop命令（ｃ４）が発行される。
【００３０】
他方、プロセッサＡ（１１）においては、Reply Data（ｃ２）を受信すると、キャッシュ２２に登録し、Core２１からのコンペア＆スワップ命令の実行を待つ。しかしながら、もしもコンペア＆スワップ命令を実行する前に、Reply Data（ｃ２）を追いかけてきたSnoop命令（ｃ４）を受け付けて処理してしまうと、プロセッサＡ（１１）のキャッシュ２２から対象データが読み出されてしまう結果となり、Snoop命令（ｃ４）に対するReply Data（ｃ５）により、メモリ装置１３経由でプロセッサＢ（１２）に対象データが持っていかれる結果となる。
【００３１】
また、同様の問題点として、前記構成のプロセッサＡ（１１）のキャッシュ２２にあっては、エントリ（図示は省略）がフルになると、データの一部をSwap-outすることがあり、この時、前記と同様の処理対象データがSwap-out対象として選ばれると、キャッシュから吐き出されてメモリ装置１３に書き戻されてしまう。
これらの各ケースにおいて、キャッシュ２２からデータを吐き出した後にCore２１からのコンペア＆スワップ命令が発行されると、キャッシュには既にプリフェッチ命令（ｃ１）による対象データが無いため、再度リードを発行して、メモリ装置１３またはプロセッサＢ（１２）から対象データを読み出す必要が発生してしまい、プリフェッチ命令（ｃ１）による先行リードの効果が無効になってしまう。
【００３２】
次に、上記の各問題点を解決するための本実施形態の性能改善手段について述べる。
本実施形態では、上記の各問題点を解決する性能改善手段として、図２に示すとおり、キャッシュ２２に加えて、キャッシュ２２と並べて配置されたキャッシュ２３を設けると共に、Reply Data（ｃ２）は、最初にキャッシュ２３の方に取り入れる構成とする。
このような構成において、プリフェッチ命令（ｃ１）により先行して読み出した対象データを有効活用するために、プロセッサＡ（１１）のキャッシュ２３においては、Reply Data（ｃ２）を受け付けてキャッシュに登録した時点から一定期間は、該キャッシュ２３から対象データを吐き出さないように抑止を行う。これにより、Core２１から発行されるコンペア＆スワップ命令などの命令に対してキャッシュヒットさせることができるため、速度の速い処理が可能となり、プリフェッチ命令の効果が有効に維持される。
【００３３】
本実施形態は、上記の性能改善手段を基本機能とし、Reply Data（ｃ２）を受け付けてキャッシュ２３に登録した時点からの一定期間内はキャッシュ２３からの吐き出しを抑止する機能を簡単な構成で実現している。
以下、図１，２を参照しながら、本実施形態に係る情報処理装置の動作を、上記の性能改善手段を中心にして説明する。
ここでは、キャッシュ２２（図２）において、図１に示すSnoop 命令（ｃ４）、及びSwap-out命令によるキャッシュ２２からの吐き出しを、Reply Data（ｃ２）が返却された後の一定期間抑止する動作について説明する。
【００３４】
対象データが、Reply Data（ｃ２）としてメモリ装置１３からプロセッサＡ（１１）に返却されると、プロセッサＡ（１１）内ではキャッシュ２２ではなく、図２の回路配線に示すように、プリキャッシュ２３の方に該対象データを登録する。プリキャッシュ２３に登録された該対象データは、Core２１からの命令に対してはキャッシュ２２と同様にリードやライトが可能であるため、アクセス速度の観点からは、プリキャッシュ２３に格納された時点で、Core２１に対しては対象データを自プロセッサのキャッシュ２２に持ってきたことと等価になる。よって、プリキャッシュ２３内に対象データが存在する間であっても、Core21からの後続のコンペア＆スワップ命令は速く処理することが可能となる。
【００３５】
また、プリキャッシュ２３は、図２の回路配線に示すように、メモリ装置１３からのSnoop命令（ｃ４）（図１）による命令処理の対象外の構成要素となるように構成しているため、プリキャッシュ２３内に対象データが存在する間にSnoop命令（ｃ４）を受信した場合には、キャッシュ２２においてはReply Data（ｃ２）はメモリ装置１３から未返却（即ち、未だプリキャッシュ２３から受け取っていない）の状態と判断され、Snoop処理は実行されない。
この場合の、Reply Data（ｃ２）未返却時のSnoop命令（ｃ４）の処理は、メモリ装置１３に一度リトライ指示を返却してメモリ装置１３からSnoop 命令（ｃ４）を再発行したり、プロセッサＡ（１１）内においてReply Data（ｃ２）が返却されるまでの間はSnoop命令（ｃ４）を保持したりと、システムによって一貫性（coherence）を維持するための処理形態が異なるため、ここでは詳細な説明を省略する。
【００３６】
また、プリキャッシュ２３の構成を、最初のリプライデータ分のエントリに加えて、一定期間内にさらに返却されるデータの個数に対応可能なエントリを備える構成とするならば、Swap-out処理は不要となる。例えば、２Ｔが経過する毎に１回の割合で、Reply Data（ｃ２）が返却されるとして、プリキャッシュ２３内で３２Ｔが経過するまでの期間は保持する必要があるとする場合は、プリキャッシュは、最初のリプライデータ分のエントリに加えて、最低でも１６エントリを用意すればよい。
【００３７】
このように構成することにより、プリキャッシュ２３内に格納されている対象データについては、Snoop命令（ｃ４）による吐き出しも起こらず、エントリフルによるSwap-outの吐き出しも起こらないことになるため、この間にCore２１からのコンペア＆スワップ命令が実行されれば、確実にキャッシュヒットすることになるので、プリフェッチ命令（ｃ１）で先行して対象データを読み出していた効果により、処理速度が速くなり、速度性能の改善効果が得られる。その後は、プリキャッシュ２３においては、各エントリのタイマにより、データを格納してから一定期間経過後に、該データをキャッシュ２２に移動させるように構成する。これにより、キャッシュ２２への格納後にSnoop 命令（ｃ４）による処理を実行させたり、図示しないSwap-out命令によりメモリ装置１３に書き戻させたりすることができる（即ち、データの一貫性（coherence）維持の処理等がなされる）。
【００３８】
本実施形態に係る情報処理装置及び情報処理装置のデータキャッシング方法並びにマルチプロセッサシステムによれば、プロセッサにプリキャッシュ２３を追加しただけという簡単な構成変更により、プリフェッチ命令によるアクセス速度の改善効果を最大限に活かす性能改善方法をサポートできる効果がある。
また、キャッシュ２２においては、プリキャッシュ２３からReply Dataを受け取るようにすること以外の機能変更は不要であり、よって、複雑な論理回路の追加や、回路変更無しで、プリフェッチ命令によるアクセス速度の改善効果を最大限に活かした性能改善方法をサポートできる効果がある。
【産業上の利用可能性】
【００３９】
本発明は、主記憶装置が他の情報処理装置と共有される構成の情報処理装置の構築に適用可能であり、特に、そのデータキャッシング機構の構築に好適である。
【符号の説明】
【００４０】
１１  プロセッサＡ
１２  プロセッサＢ
１３  メモリ装置（主記憶装置）
１４  ディレクトリ
２１  Ｃｏｒｅ（演算処理装置）
２２  キャッシュ（キャッシュ機構）
２３  プリキャッシュ
ｃ１  プリフェッチ命令
ｃ２，ｃ５  Reply Data
ｃ３  Load命令
ｃ４  Snoop命令
【図１】
2011076345.tif 000003
【図２】
2011076345.tif 000004
【図３】
2011076345.tif 000005