(57)【要約】【課題】意図したデータを意図した期間、演算器の近傍に置き、メモリデータのアクセス要求発生時に、低コストで意図したデータにアクセスできるキャッシュ装置を提供する。【解決手段】多段構造のキャッシュにおいて、演算器１０の近傍に置かれた小容量で高速のStatic RAM(スタテックRAM)などで構成され、通常１次キャッシュ２０と呼ばれるRAMの、一部をキャッシュ領域２１に、他をローカルメモリ領域２２とに分割して使用可能としたものである。そして分割使用可能とされたローカルメモリのRAS機能を担保するため、ローカルメモリ領域２２を２分割しそれぞれのメモリ領域に同じデータを記憶させてデータを二重化する。さらにローカルメモリ領域２２では、使われないキャッシュタグの機構をエラー管理に流用し、二重化したデータから、常に正しい情報が得られるように制御する。【選択図】図１
2008234074.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュへアクセスするアドレスの内の数ビットを命令の種別によって定まる値に置き換える手段を有し、キャッシュをプログラムから操作可能なレジスタ領域とプログラムから操作不可能な通常のメモリアクセス領域とに分割し、キャッシュ上にローカルメモリとキャッシュとを併存させたことを特徴とするキャッシュ装置。
【請求項２】
前記キャッシュ上にローカルメモリとキャッシュとを併存させた状態を解消させるために、前記命令の種別によって定まる値に置き換える手段を制御して、キャッシュ全領域のデータについて、メモリコヒーレンシを保ちつつキャッシュを無効化し、その後にキャッシュ上にローカルメモリとキャッシュが併存しない状態に切り換えることを特徴とする請求項１に記載のキャッシュ装置。
【請求項３】
前記命令の種別によって定まる値に置き換える手段を制御して、キャッシュ全領域のデータについて、メモリコヒーレンシを保ちつつキャッシュを無効化し、その後にキャッシュ上にローカルメモリとキャッシュを併存させた状態に切り換えることを特徴とする請求項１に記載のキャッシュ装置。
【請求項４】
前記キャッシュを複数ウェイ単位で前記ローカルメモリとして割り当て且つ前記ローカルメモリを多重化して使用するとともに前記ローカルメモリに故障が発生したときは、故障領域に対応するキャッシュタグに故障情報を表示することを特徴とする請求項１に記載のキャッシュ装置。
【請求項５】
キャッシュ装置において、タグメモリのライン単位に各ウェイエントリに関するキャッシュリプレースロック情報及び該キャッシュリプレースロック情報を制御する制御回路を備え、ソフトウェアがメモリリクエストを発行する際にキャッシュラインのロックを明示的に指示することができる命令セットを指定して要求した場合には、当該エントリのキャッシュリプレースロックをソフトウェアから制御可能としたことを特徴とするキャッシュ装置。
【請求項６】
キャッシュ装置において、キャッシュラインのどのウェイを使用するかを明示的に指示することができる命令セットの指定により制御される制御回路を備え、ソフトウェアがメモリリクエストを発行する際にキャッシュラインのどのウェイを使用するかを明示的に指示する命令セットを指定して要求した場合にはリプレースウェイをソフトウェアから制御可能としたことを特徴とするキャッシュ装置。
【請求項７】
キャッシュ装置において、データを登録するウェイを登録対象のデータのアドレスとともに指示してキャッシュウェイにプリフェッチを行う命令セットの指定により制御される制御回路を備え、ソフトウェアが前記アドレスと前記プリフェッチを行う命令セットとを指定して要求した場合には、再利用性の高いデータ領域をキャッシュに留める一方、再利用性のないデータをリプレース対象とするようキャッシュウェイをソフトウェアから制御可能としたことを特徴とするキャッシュ装置。
【請求項８】
前記ソフトウェアが前記アドレスと前記プリフェッチを行う命令セットとを指定して要求した場合には、前記制御回路は、前記キャッシュ上に残しておきたいデータを指示されたウェイにプリフェッチして登録するとともに、その後にこれと同一のアソシアティビティのアドレスのデータに対して前記ソフトウェアがそのウェイを指定したプリフェッチ命令を出さないようにしたことを特徴とする請求項６または７に記載のキャッシュ装置。
【請求項９】
前記プリフェッチ命令の外に、通常のロード・ストア命令に対しデータを登録するウェ
イを指示する命令を定義し、前記プリフェッチ命令の代わりに前記通常のロード・ストア命令を使用してデータを登録するウェイを指示することを特徴とする請求項７または８に記載のキャッシュ装置。
【請求項１０】
キャッシュ装置において、ハードウェアがリプレース候補として選択するウェイの対象とするウェイと選択してはいけないウェイとを指定する命令を定義し、その命令により設定される設定レジスタと、前記命令セットの指定によりリプレース候補のウェイを制御する制御回路とを備え、リプレースウェイをソフトウェアから制御可能としたキャッシュ装置。
【請求項１１】
リプレース候補として選択してはいけないウェイを前記命令により指定して前記設定レジスタに設定し、前記制御回路が、前記命令セットの指定により前記リプレースしてはいけないウェイに対してキャッシュラインを登録することで、ソフトウェアから明示的にリプレース動作を制御可能としたことを特徴とする請求項１０に記載のキャッシュ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フルアソシアティブまたはセットアソシアティブのキャッシュを有し、メモリデータのロード処理・ストア処理を実施する命令セット装置をサポートするキャッシュ装置に関する。
【背景技術】
【０００２】
ＨＰＣ（一般にハイパフォーマンスコンピューティング(High Performance Computing)と呼ばれ、高性能数値演算機能を有する情報処理装置を指す）を含む情報処理システムの世代間において、メモリが相対的に遠くなる、いわゆるメモリウォール問題は、メモリアクセスコストという形で現れ、並列度確保を疎外する要因として広く認識されている。その課題解決の一方策としてキャッシュ機構が存在し、アクセスレイテンシの短縮に役立っている。しかし一方、キャッシュ装置は情報処理装置が発する命令系から基本的に不可視なため、データのキャッシュ上のライフタイムを、ソフトウェアから制御できない。結果として、近い将来再利用されるデータがキャッシュから追い出される状況も発生する。
【０００３】
アプリケーションによっては、規則的に動作する処理が多くみられ、静的情報に基づく解析で、近い将来再利用されるデータを把握できるケースが比較的多くなる。これは、コンパイラがデータを特定し、そのデータの再利用の期間を決定して、上位のメモリ階層上にデータを置き続ける操作指示を出せることを意味している。意図したデータを意図した期間、プロセッサの近傍に置くことで、従来に比べてデータアクセスコストの低減が狙える。
【０００４】
現在は、このような制御をソフトウェアに許しておらず、一旦はキャッシュに置かれたデータであっても、後続命令によりアクセス要求が発生したときにキャッシュに存在しない場合があり、データ参照に余分なコストが掛かる(非特許文献１及び２参照)。
【０００５】
また従来、プロセッサコア近傍に、専用のメモリバッファを置く方式が採られることもある(特許文献１参照)。これはハード資源を固定的に利用する方式である。
【非特許文献１】SPARC Joint Programming Specification(JPS1):Commonalityhttp://www.fujitsu.com/downloads/PRMPWR/JPS1-R1.0.4-Common-pub.pdf
【非特許文献２】SPARC JPS1 Implementation Supplement:Fujitsu SPARC64Vhttp://www.fujitsu.com/downloads/PRMPWR/JPS1-R1.0-SPARC64V-pub.pdf
【特許文献１】特開平０５−２２５１４７号公報（図１）
【発明の開示】
【発明が解決しようとする課題】
【０００６】
専用のメモリバッファを置く従来方式では、キャッシュとは独立したハードウェア資源であるため、ハードウェア資源を柔軟的に活用できないという課題がある。
また専用のメモリバッファを置く従来方式では、意図的にデータの入れ替えを実施する分、キャッシュに比べ制御が複雑で命令数も増えるため、メモリバッファの利用に適した特徴を持たないアプリケーションでは、かえって性能が低下するという課題がある。
【０００７】
さらにアプリケーションの特徴によって、メモリバッファの利用に適したものとそうでないものとがあり、メモリバッファとキャッシュのいずれかを主に使う場合、利用頻度の低いハード資源が冗長になり情報処理資源を有効利用できないという問題がある。
【０００８】
キャッシュ装置特にＨＰＣ用キャッシュ装置への要求として対象とするデータに応じて適切に対応できるものが求められている。つまり短期的に再利用されるデータを本来のキャッシュとして利用できる上に、例えば、長期的に再利用されるデータであって、ソフトウェアが希望する期間、キャッシュに保持できるようになっていること、またレジスタスピルやループ分割に伴う一時域としてキャッシュをローカルメモリ的に利用できること、また、再利用性の無いデータが、再利用性のあるデータを追い出さないこと、などである。
【０００９】
このような課題に鑑みて本発明のキャッシュ装置の目的は、意図したデータを意図した期間、演算器の近傍に置き、メモリデータのアクセス要求発生時に、低コストで意図したデータにアクセスできることにある。キャッシュ装置特にＨＰＣ用キャッシュ装置に求められている要求、例えば、短期的に再利用されるデータを本来のキャッシュとして利用でき、また長期的に再利用されるデータであって、ソフトウェアが希望する期間、キャッシュに保持でき、またレジスタスピルやループ分割に伴う一時域としてローカルメモリ的にキャッシュを利用でき、また再利用性の無いデータが、再利用性のあるデータを追い出さないこと、のいずれにも対応できるＨＰＣ用キャッシュ装置を提供することである。
【課題を解決するための手段】
【００１０】
本発明の一態様は、キャッシュへアクセスするアドレスの内の数ビットを命令の種別によって定まる値に置き換える手段を有し、キャッシュをプログラムから操作可能なレジスタ領域とプログラムから操作不可能な通常のメモリアクセス領域とに分割し、キャッシュ上にローカルメモリとキャッシュとを併存させたことを特徴とする。
【００１１】
また本発明の一態様は、キャッシュ装置において、タグメモリのライン単位に各ウェイエントリに関するキャッシュリプレースロック情報及び該キャッシュリプレースロック情報を制御する制御回路を備え、ソフトウェアがメモリリクエストを発行する際にキャッシュラインのロックを明示的に指示することができる命令セットを指定して要求した場合には、当該エントリのキャッシュリプレースロックをソフトウェアから制御可能としたことを特徴とする。
【００１２】
また本発明の一態様は、キャッシュ装置において、キャッシュラインのどのウェイを使用するかを明示的に指示することができる命令セットの指定により制御される制御回路を備え、ソフトウェアがメモリリクエストを発行する際にキャッシュラインのどのウェイを使用するかを明示的に指示する命令セットを指定して要求した場合にはリプレースウェイをソフトウェアから制御可能としたことを特徴とする。
【００１３】
また本発明の一態様は、キャッシュ装置において、ハードウェアがリプレース候補として選択するウェイの対象とするウェイと選択してはいけないウェイとを指定する命令セットを定義し、その命令により設定される設定レジスタと、前記命令セットの指定によりリプレース候補のウェイを制御する制御回路とを備え、リプレースウェイをソフトウェアから制御可能としたことを特徴とする。
【発明の効果】
【００１４】
本発明によれば、意図したデータを意図した期間、演算器の近傍に置き、メモリデータのアクセス要求発生時に、低コストで意図したデータにアクセスすることができる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の実施の形態を、図面を参照しながら説明する。
［実施形態１］
図１は、本発明の第１の実施形態に係るＨＰＣ用キャッシュ装置の構成概要を示すブロック図である。図１において本発明の第１の実施形態に係るＨＰＣ用キャッシュ装置は、上記非特許文献１、２にも示されているような多段構造のキャッシュにおいて、演算器１０の近傍に置かれた小容量で高速のStatic RAM(スタテックRAM)などで構成され、通常１次キャッシュ２０と呼ばれるRAMの、一部をキャッシュ領域２１に、他をローカルメモリ領域２２とに分割して使用可能としたものである。動作モードの切り替えについては図３および図４を用いて後ほど詳細に説明する。このように本発明の第１の実施形態に係るＨＰＣ用キャッシュ装置では、１次キャッシュ２０において１次キャッシュ領域２１とローカルメモリ領域２２とを併存させることを可能としたものである。
【００１６】
図１では、主記憶装置４０、６MBの２次キャッシュ３０とともに16KB容量の２ウェイの１次キャッシュ２０を持つとして例示しており、その場合、１次キャッシュ２０の半分をキャッシュ領域２１に割り当てると、キャッシュ領域２１は８KBとなり、あとの半分をローカルメモリ領域２２に割り当てることとなるので、ローカルメモリ領域２２は８KBとなる。なお、割り当てられたローカルメモリ領域２２に対してRAS(Reliability Availability Serviceability)機能を付与するために多重化(これについては後述する)、例えば二重化、を実施すると、ローカルメモリとして使用可能なローカルメモリ領域２２は最終的に４KBとなり、８バイトレジスタ512個分に相当するものとなる。通常、演算器１０からメモリデータのアクセス要求がなされると、キャッシュハードウェアが所望する命令やデータが１次キャッシュ２０のウェイにあるかを１次キャッシュタグ２３により確認してウェイ選択２４を行い、選択されたウェイからデータ選択２５して演算器１０にデータを出力することになる。
【００１７】
図２は、本発明の第１の実施形態に係るＨＰＣ用キャッシュ装置において分割された１次キャッシュのいずれの領域を選択するかを説明する図である。図２において割り当てられたローカルメモリ領域２２をローカルメモリとして使用するには、キャッシュの検索に用いるアドレスの最上位ビットでキャッシュ領域２１とローカルメモリ領域２２のいずれかを選択し、最上位ビットがローカルメモリ領域２２を参照するよう設定されていた場合にはローカルメモリ領域２２がアクセスされることになる。
【００１８】
このように本発明の第１の実施形態に係るＨＰＣ用キャッシュ装置は、キャッシュメモリとローカルメモリの併存を可能としたもので、キャッシュメモリだけの構成と、キャッシュメモリとローカルメモリ併存構成のいずれにも対応できるものであり、キャッシュメモリのウェイ数を減らすことなくローカルメモリを併存することを可能としている。いずれのモードで動作させるかは動作モードレジスタを設け、動作モードレジスタにモードを設定して動作制御する。この場合、動作モードの切り替えは、システムの動作中に可能である。
【００１９】
図３は、本発明の第１の実施形態に係るＨＰＣ用キャッシュ装置における動作モードの切り替え構成を説明する機能ブロック図である。図３はプロセッサコア(Core)０〜７を持つＨＰＣシステムにおいて、全プロセッサコアの間で同期処理を行い、同期が取れた時点で１つのコア以外はスリープ状態に入り停止する。同期処理には、記憶域を用いた同期方式やハードウェアバリア機構を用いた同期方式など、任意の同期処理を用いることができる。図３ではバリア機構３１を用いた同期方式を用いた例を示す。同期が取れたあと動作を継続するコアでは、SX-FLUSH命令(上記非特許文献２の『SPARC JS1 Implementation Supplement:Fujitsu SPARC64 V』記載のASI=0x6Aを指示する命令)を発行し、二次キャッシュメモリ３０の内容を主記憶装置４０に書き出すことで、全１次キャッシュメモリ２０の内容もすべて吐き出して、全１次キャッシュメモリが空の状態を作り出す。別の実施形態として、全１次キャッシュメモリ２０の内容をすべて２次キャッシュメモリ３０に吐き出す命令を新規に定義し実行することで、全１次キャッシュメモリ２０が空の状態を作り出すことも可能である。
【００２０】
図４は本発明の実施形態に係るASI-L2-CNTLレジスタの定義内容を説明する図で、図４(ａ)は本発明に係るASI-L2-CNTLレジスタの定義内容であり、図４(ｂ)は従来のASI-L2-CNTLレジスタの定義内容である。図４(ａ)に示すように本発明では、SX-FLUSH命令を受け取るASI-L2-CNTLレジスタの定義を拡張し、一次キャッシュメモリ２０をキャッシュメモリとして占有する(D1-LOCAL=0)かローカルメモリと共存して使用する(D1-LOCAL=1)かを指示するビットを追加する。なお図４(ｂ)に示す従来のASI-L2-CNTLレジスタの定義では、上記D1-LOCALに相当するビットは“Reserved”となっていてdon’t-careである。D1-LOCALビットは、図４(ａ)に示すU2-FLUSH制御部３２のSX-FLUSH命令実行中の状態を表すU2-FLUSHEXEC状態表示部３３がオンのときは、U2-FLUSHビットがオンとなっているSX-FLUSH命令実行前の値が有効な値として使用され、つまり、Previous L1-LOCALレジスタ３４が示す値を有効値であるとして選択部３５により使用し、U2-FLUSHビットがオンとなっているSX-FLUSH命令完了後はSX-FLUSH命令発行時に指示された値が選択部３５により新たに有効になる。こうすることで、キャッシュメモリをクリア（空に）し、クリア完了後一次キャッシュの状態の切り替えを実現する。一次キャッシュメモリの動作モード(D1-LOCAL=0または1)の切り替えが完了したら、同期機構を用いて全コアの動作を再開する。
【００２１】
このように本発明の第１の実施形態に係るＨＰＣ用キャッシュ装置においては、システムの動作中に動作モード切り替え命令が発行されたら、命令の実行を一時中断し、キャッシュコヒーレンシを保ちつつキャッシュの内容をすべて無効化して、１次キャッシュが空の状態を作る。空の状態にした後で、動作モードレジスタ(上記したASI-L2-CNTLレジスタ)の値を書き換えることで、動作モードの切り替えを完了する。つまり、キャッシュメモリだけの構成かまたはキャッシュメモリとローカルメモリ併存構成のいずれかにする。その後、中断していた命令の実行を再開する。これにより、ローカルメモリ併存の有無をシステムのリブート無しで実現することができる。１つのプロセッサには複数のコアが搭載されるが、切り替えの単位は、コア単位ではなくプロセッサ単位とする。こうすることで、複数コアが共有するキャッシュメモリと各コアとの通信において、キャッシュコヒレーレンシ制御に使用するアドレスを統一することができ、２次キャッシュ側からの１次キャッシュの管理が容易になる。動作モードレジスタ(上記したASI-L2-CNTLレジスタ)によってキャッシュメモリとローカルメモリ併存構成が設定されている場合、ローカルメモリ領域へは新規のロード・ストア命令でアクセスするものとする。本発明で設定されたローカルメモリの具体的使用例には、ローカルメモリと浮動小数点レジスタとの間のデータ転送が含まれる。
【００２２】
次に本発明の第１の実施形態に係るＨＰＣ用キャッシュ装置におけるローカルメモリのRAS機能について説明する。本発明の第１の実施形態に係るローカルメモリは、下位のメモリ階層にデータコピーを残す構成としていないため、RAMの１ビット故障(エラー)の訂正を独自に行わなければならない。そこで、本発明の第１の実施形態では、図１に示すようにローカルメモリ領域をウェイ単位で２分割しそれぞれのメモリ領域に同じデータを記憶させてデータを二重化する。
【００２３】
また本発明の第１の実施形態に係るローカルメモリでは、使われないキャッシュタグの機構をエラー管理に流用し、二重化したデータから、常に正しい情報が得られるように制御する。通常、キャッシュタグは、キャッシュメモリの主記憶装置上のアドレスとキャッシュデータの有効性を示すビットを備えている。そこで本発明の第１の実施形態に係るローカルメモリでは、キャッシュデータの有効性を示すビットを使用し、このビットがオンになっているとき、ローカルメモリは正しい値を格納しているものとみなす。ローカルメモリに故障(エラー)が発生したときは、この有効ビットをオフにし、以降のローカルメモリへのアクセスで有効ビットがオフのタグに対応するローカルメモリのデータを選択しないことで、故障したローカルメモリのデータを使用しないよう制御する。キャッシュメモリのウェイ数が３ウェイであれば、ローカルメモリを三重化して使用することも可能である。
【００２４】
図５は、本発明の第１の実施形態に係るＨＰＣ用キャッシュ装置におけるローカルメモリのRAS機能を説明する構成図である。図５において、ウェイ０および１のキャッシュタグ５１,５２には、キャッシュラインの状態を示すステータスビットが数ビットとキャッシュラインの主記憶上での格納位置を示すアドレス情報を格納する場所が用意されている。ステータスビットには、そのキャッシュラインが有効であることを示す有効ビット５３,５４があり、ローカルメモリではこの有効ビットのみを有効な情報とみなしてキャッシュタグの検索を行う。
【００２５】
ウェイ０および１のローカルメモリ５５,５６への書き込みが発生したとき、有効ビット５３,５４をオンにしてウェイ０および１のキャッシュタグ５１,５２を更新する。このとき、ウェイ０および１の両方のキャッシュタグ５１,５２の有効ビット５３,５４をオンにするとともに、ウェイ０および１のローカルメモリ５５,５６に対して同じ値を書き込む。
【００２６】
ウェイ０および１のローカルメモリ５５,５６を読み出すときは、キャッシュタグ５１,５２を検索し、有効ビット５３,５４がオンになっているウェイの情報(読み出しデータ５７,５８)を選択部５９により選択する。通常は両方の有効ビット５３,５４がオンになっているので、両ウェイのデータ５７,５８が選択されるが、内容は同じものなので、選択部５９では複数選択が発生するが、選択された内容は選択前の内容と同じものが正しく選択される。別の制御方式(図示せず)では、両方選択されているときには一方のウェイが選択されるように制御することも可能である。
【００２７】
ローカルメモリ５５,５６を読み出したデータの故障検出機構６０,６１はウェイ選択される前のデータに対して備わる。ローカルメモリ５５,５６を読み出して故障検出機構６０,６１がデータ故障を検出したときは、対応するウェイの有効ビットがオンになっていれば、故障チェック機構６２,６３を介して読み出し処理中断制御部６４が読み出し処理を中断して、故障を検出したウェイのキャッシュタグ５１,５２の有効ビット５３,５４をオフの状態に書き換える。その後、中断した処理を初めから再度やりなおす。すると、故障したウェイのデータ(５７/５８)はキャッシュタグ(５１/５２)の有効ビット(５３/５４)がオフになっていることから、故障検出対象から外れるとともに、ローカルメモリ(５５/５６)からの取り出し時に選択対象外となる。こうすることで、故障したローカルメモリの内容を無視して、故障していないローカルメモリの内容を使用することが可能となり、ローカルメモリの故障時にも動作を継続することが可能となる。
【００２８】
［実施形態２］
本発明の第２の実施形態に係るＨＰＣ用キャッシュ装置は、セットアソシアティブ方式(Set Associative)で構成したキャッシュのキャッシュラインリプレース制御(キャッシュラインロック)を特別なオーバヘッドを伴わずに実行可能としたものである。通常、セットアソシアティブ方式で構成したキャッシュでは、新規データ登録のときに、該当するエントリの全てのウェイ数がすでに使われているケースがある。この場合、登録する場所を空けるために、既存のキャッシュラインを追い出す(これを“キャッシュラインリプレース”という)。リプレース対象のキャッシュラインを選択する一般的なアルゴリズムは、LRU(Least Recently Used)方式かラウンドロビン方式かのいずれかである。LRU方式の実装では、キャッシュのライン単位にLRU情報が設けられており、該当ラインへのアクセスの都度、LRU情報を更新する。キャッシュラインリプレースのときは、もっとも長い間アクセスされていないキャッシュラインがリプレースの対象となる。
【００２９】
本発明の第２の実施形態に係るＨＰＣ用キャッシュ装置は、以下の(ａ),(ｂ)に示すキャッシュラインリプレース制御を実行するために新設されたメモリアクセス命令(命令セット)によって制御される。
(ａ)該当するキャッシュラインを、リプレース対象から外す(キャッシュライン・ロック命令)
(ｂ)該当するキャッシュラインを、リプレース可能な状態に戻す(キャッシュライン・アンロック命令)
【００３０】
上記(ａ),(ｂ)に示す命令によるロック/アンロックの状態を保持するテーブル(図６に示すキャッシュ・リプレースロックテーブル７８参照)を設ける。キャッシュ・リプレースロックテーブル７８は、キャッシュの全エントリの個々のウェイのロック/アンロック情報を保持する。
【００３１】
図６は、本発明の第２の実施形態に係るＨＰＣ用キャッシュ装置におけるキャッシュリプレース制御部の構成概要を示すブロック図である。図６において、メモリデータのアクセス要求の発生時に、該当データのアドレス７１から、インデックス情報７３を生成して、インデックス情報７３をもとにキャッシュ・タグテーブル７４、キャッシュ・LRUテーブル７７、キャッシュ・リプレースロックテーブル７８の各テーブルにアクセスし、該当エントリの情報を読み出す。キャッシュ・タグテーブル７４から読み出した情報とアドレス７１のタグ部７２の情報とのアドレス比較７５により、キャッシュのヒット/ミス７６を判定する。ミス判定の場合は、新しいデータを格納するために該当エントリのウェイの空きを確認する。空いた場所がなければ、既存のキャッシュラインをリプレースする要求をリプレース候補判定回路７９に出す。リプレース候補判定回路７９はキャッシュ・LRUテーブル７７とキャッシュ・リプレースロックテーブル７８から読み出した情報を使い、“リプレースロックがオフ”でかつ、“使われていない時間が最も長い”キャッシュラインを選択し、これをリプレースの対象とする。
【００３２】
図７は、本発明の第２の実施形態に係るＨＰＣ用キャッシュ装置におけるキャッシュリプレース制御部の動作を説明するフローチャートである。図７のステップS11において、まずメモリアクセスの種類を判定する。
【００３３】
ステップS11における判定の結果、メモリアクセスがロック付きアクセス８１であった場合、ステップS12においてキャッシュヒットかを判定する。上記(ａ)に記述したキャッシュライン・ロック付きのメモリアクセス命令が実行された結果、その命令がキャッシュミスを起こした場合、ステップS13において上記リプレース候補選択動作によって選択されたウェイに新しいキャッシュラインを登録するとともに、ステップS14においてそのキャッシュラインのリプレースロックをオンの状態にする。キャッシュヒットした場合、ステップS14においてキャッシュヒットしたラインのリプレースロックをオンの状態にする。
【００３４】
またステップS11における判定の結果、メモリアクセスがロック解除付きアクセス８２であった場合、ステップS15においてキャッシュヒットかを判定する。上記(ｂ)に記述したキャッシュライン・ロック解除付きのメモリアクセス命令が実行された結果、その命令がキャッシュミスを起こした場合、ステップS16において上記リプレース候補選択動作によって選択されたウェイに新しいキャッシュラインを登録するとともに、ステップS17においてそのキャッシュラインのリプレースロックをオフの状態にする。キャッシュヒットした場合は、ステップS18においてLRUの優先順位をもっとも古い順にアクセスされた状態として登録し、ステップS17においてキャッシュヒットしたラインのリプレースロックをオフの状態にする。LRUの優先順位の変更に当たっては、もっとも最近アクセスされた状態として登録する機能も備える。その切り替えは、ハードウェアが固定的に行ってもよい
し、ソフトウェアによっていずれかの状態を指示できるようにしてもよい。
【００３５】
またステップS11における判定の結果、メモリアクセスがロック付きアクセス８１又はロック解除付きアクセス８２以外のアクセス８３であった場合、ステップS19においてキャッシュヒットかを判定する。上記(ａ)に記述したキャッシュライン・ロック付きメモリアクセス命令、上記(ｂ)に記述したキャッシュライン・ロック解除付きのメモリアクセス命令のいずれでもない通常のメモリアクセス命令が実行された結果、その命令がキャッシュミスを起こした場合、ステップS20において上記リプレース候補選択動作によって選択されたウェイに新しいキャッシュラインを登録するとともに、ステップS21においてLRUの優先順位をもっとも最近アクセスされた状態として登録し、ステップS22においてそのキャッシュラインのリプレースロックをオフの状態にする。キャッシュヒットした場合は、ステップS23においてリプレースロックがオフであればLRUの優先順位をもっとも最近にアクセスされた状態として登録し、ステップS24においてキャッシュヒットしたラインのリプレースロックをアクセス前と同じ状態にする。ただし、アクセス前のリプレースロックの状態がオンであった場合はLRUの優先順位をアクセス前と同じ状態として登録してもよい。
【００３６】
このように本発明の第２の実施形態に係るＨＰＣ用キャッシュ装置は、キャッシュライン・ロック命令及びキャッシュライン・アンロック命令を新設してキャッシュのリプレース制御を行うようにしたが、このキャッシュのリプレース制御においてはキャッシュ・LRUテーブルとキャッシュ・リプレースロックテーブルから読み出した情報に基づいて特別なオーバヘッドを伴わず、LRUアルゴリズムを従来と同様に行うことができる。特に本方式の実装は、データパスの変更を伴わないため、実装上の負担はほとんど無い。
【００３７】
［実施形態３］
ソフトウェアからキャッシュの挙動を予測し、意図したとおりに利用することを困難にしているのは、ハードウェアがデータを登録するウェイを決めるからである(もちろんメモリをアクセスするパタンを特定できないビジネスアプリケーションでは、ハードウェアがLRUアルゴリズムによってリプレース対象を確定する方法は、キャッシュの利用効率の点で最善策といえる)。
【００３８】
しかし、データの再利用性がコンパイル時点で静的に判別可能な場合には、LRUアルゴリズムが最適とは言えない。すなわち、LRUアルゴリズムではコンパイル時に判別可能な再利用性が考慮されていないため、再利用性のないデータがキャッシュに残り、本来キャッシュに留めておきたい、近い将来に再利用される蓋然性が高いキャッシュラインがリプレース対象となる場合が起こり得る。
【００３９】
これを避け、再利用性の高いデータ領域をキャッシュに留める一方、再利用性のないデータをリプレース対象とする手段として、本発明の第３の実施形態に係るＨＰＣ用キャッシュ装置では新規キャッシュラインの登録に使用するキャッシュウェイをソフトウェアから指定する手段を設ける。また、データを登録するウェイを登録対象のデータのアドレスとともに指定してキャッシュウェイにプリフェッチを行う命令を新規に定義する。プリフェッチ命令の外に、通常のロード・ストア命令に対しても同様に、データを登録するウェイを指定する命令を新規に定義することもできる。
【００４０】
そして例えば、複数あるウェイのうちあらかじめいずれかのウェイは優先的にリプレースされるキャッシュウェイとして扱うようにソフトウェアが決め、上記プリフェッチ命令にて再利用性のないデータを指定されたウェイに登録する。つまり、ロード・ストア命令の発行時にキャッシュに登録されるウェイを指示する。これは、命令セットにウェイを指示する機能を持たせることで実現できる。そしてキャッシュミスを起こしたら、通常なら
LRU情報に基づいてリプレース制御するところ、LRU情報を無視して、命令で指示されたウェイにキャッシュラインを登録する。これによって、再利用性のないデータが、意図せずに他のウェイに登録されている再利用性のあるデータを追い出す動作を避けることができる。
【００４１】
また一方、キャッシュ上に残しておきたいデータを指定されたウェイにプリフェッチして登録し、その後にこれと同一のアソシアティビティのアドレスのデータに対して、そのウェイを指定したプリフェッチを出さないようにすれば、いったん登録されたデータがキャッシュ上に残存することを保障できる。
【００４２】
いずれにせよ、本発明の第３の実施形態に係るＨＰＣ用キャッシュ装置は、キャッシュのウェイを明示的に指定(名前付きキャッシュ)できることによって、ソフトウェアから見たキャッシュの制御を可能にして、擬似的なローカルメモリを実現することができる。
【００４３】
［実施形態４］
本発明の第４の実施形態に係るＨＰＣ用キャッシュ装置は、上記本発明の第３の実施形態に係るＨＰＣ用キャッシュ装置を変形し、上記本発明の第３の実施形態に係るＨＰＣ用キャッシュ装置とは異なるソフトウェアからキャッシュのリプレースを制御する手段を備えるようにしたものである。すなわち本発明の第４の実施形態に係るＨＰＣ用キャッシュ装置は、リプレース禁止ウェイを指定するレジスタを備え、ソフトウェアからそのレジスタを設定することにより、通常のロード・ストア命令およびプリフェッチ命令が使用してよいウェイを限定(キャッシュウェイロック)する。通常のロード・ストア命令およびプリフェッチ命令が使用しないウェイへのキャッシュラインの登録は、上述したように、新規キャッシュラインの登録に使用するキャッシュウェイをソフトウェアから指示する手段によって行う。こうすることで、新規キャッシュラインの登録に使用するキャッシュウェイをソフトウェアから指示されない通常のロード・ストア命令およびプリフェッチ命令がキャッシュミスを起こしたとき、ソフトウェアがロックすることを意図しているデータをリプレースによってキャッシュから追い出されることを回避することができる。
【００４４】
そのため、上記本発明の第３の実施形態に係るＨＰＣ用キャッシュ装置を用いてキャッシュ上に残しておきたいデータを残存させておこうとした場合、すべてのキャッシュミスをソフトウェアが制御しなければならなかったが、すべてのキャッシュミスをソフトウェアが制御しなくても済むようにできる。また、オペランドに対するキャッシュミスの外、命令列に対するキャッシュミスに対しても、キャッシュライン・ロック機能を正しく作用させることができるようになる。
【００４５】
上記の説明ではもっぱらセットアソシアティブ方式のキャッシュを例にして説明したが、本発明のＨＰＣ用キャッシュ装置は、フルアソシアティブ方式(Fully Associative)のキャッシュにおいても実現可能である。フルアソシアティブ方式のキャッシュは、セットアソシアティブ方式の特殊な場合であると位置付けられ、エントリアドレスによる振り分けが無く、全てのラインが検索対象となる構造であって、連想度がライン数分となるものである。
【００４６】
以上に説明したことを概括すれば本発明は以下の構成を備えるものである。
（付記１）  キャッシュへアクセスするアドレスの内の数ビットを命令の種別によって定まる値に置き換える手段を有し、キャッシュをプログラムから操作可能なレジスタ領域とプログラムから操作不可能な通常のメモリアクセス領域とに分割し、キャッシュ上にローカルメモリとキャッシュとを併存させたことを特徴とするキャッシュ装置。
【００４７】
（付記２）  前記キャッシュへアクセスするアドレスの最上位ビットを操作して前記分
割され併存されたローカルメモリとキャッシュとを識別するよう構成したことを特徴とする付記１に記載のキャッシュ装置。
【００４８】
（付記３）  前記キャッシュ上にローカルメモリとキャッシュとを併存させた状態を解消させるために、前記命令の種別によって定まる値に置き換える手段を制御して、キャッシュ全領域のデータについて、メモリコヒーレンシを保ちつつキャッシュを無効化し、その後にキャッシュ上にローカルメモリとキャッシュが併存しない状態に切り換えることを特徴とする付記１に記載のキャッシュ装置。
【００４９】
（付記４）  前記命令の種別によって定まる値に置き換える手段を制御して、キャッシュ全領域のデータについて、メモリコヒーレンシを保ちつつキャッシュを無効化し、その後にキャッシュ上にローカルメモリとキャッシュを併存させた状態に切り換えることを特徴とする付記３に記載のキャッシュ装置。
【００５０】
（付記５）  前記キャッシュを複数ウェイ単位で前記ローカルメモリとして割り当て且つ前記ローカルメモリを多重化して使用するとともに前記ローカルメモリに故障が発生したときは、故障領域に対応するキャッシュタグに故障情報を表示することを特徴とする付記１に記載のキャッシュ装置。
【００５１】
（付記６）  キャッシュ装置において、タグメモリのライン単位に各ウェイエントリに関するキャッシュリプレースロック情報及び該キャッシュリプレースロック情報を制御する制御回路を備え、ソフトウェアがメモリリクエストを発行する際にキャッシュラインのロックを明示的に指示することができる命令セットを指定して要求した場合には、当該エントリのキャッシュリプレースロックをソフトウェアから制御可能としたことを特徴とするキャッシュ装置。
【００５２】
（付記７）  前記各ウェイエントリに関するキャッシュリプレースロック情報及び該キャッシュリプレースロック情報を制御する制御回路は、テーブルに保持されたキャッシュリプレースロックの要否に基づいて制御するものであることを特徴とする付記６に記載のキャッシュ装置。
【００５３】
（付記８）  フルアソシアティブまたは複数ウェイをセットアソシアティブに制御するキャッシュ装置であることを特徴とする付記６または７に記載のキャッシュ装置。
（付記９）  キャッシュ装置において、キャッシュラインのどのウェイを使用するかを明示的に指示することができる命令セットの指定により制御される制御回路を備え、ソフトウェアがメモリリクエストを発行する際にキャッシュラインのどのウェイを使用するかを明示的に指示する命令セットを指定して要求した場合にはリプレースウェイをソフトウェアから制御可能としたことを特徴とするキャッシュ装置。
【００５４】
（付記１０）  キャッシュ装置において、データを登録するウェイを登録対象のデータのアドレスとともに指示してキャッシュウェイにプリフェッチを行う命令セットの指定により制御される制御回路を備え、ソフトウェアが前記アドレスと前記プリフェッチを行う命令セットとを指定して要求した場合には、再利用性の高いデータ領域をキャッシュに留める一方、再利用性のないデータをリプレース対象とするようキャッシュウェイをソフトウェアから制御可能としたことを特徴とするキャッシュ装置。
【００５５】
（付記１１）  前記ソフトウェアが前記アドレスと前記プリフェッチを行う命令セットとを指示して要求した場合には、前記制御回路は、前記キャッシュ上に残しておきたいデータを指定されたウェイにプリフェッチして登録するとともに、その後にこれと同一のアソシアティビティのアドレスのデータに対して前記ソフトウェアがそのウェイを指定したプリフェッチ命令を出さないようにしたことを特徴とする付記９または１０に記載のキャッシュ装置。
【００５６】
（付記１２）  前記プリフェッチ命令の外に、通常のロード・ストア命令に対しデータを登録するウェイを指示する命令を定義し、前記プリフェッチ命令の代わりに前記通常のロード・ストア命令を使用してデータを登録するウェイを指示することを特徴とする付記１０または１１に記載のキャッシュ装置。
【００５７】
（付記１３）  フルアソシアティブまたは複数ウェイをセットアソシアティブに制御するキャッシュ装置であることを特徴とする付記９ないし１２のいずれかに記載のキャッシュ装置。
【００５８】
（付記１４）  キャッシュ装置において、ハードウェアがリプレース候補として選択するウェイの対象とするウェイと選択してはいけないウェイとを指示する命令を定義し、その命令により設定される設定レジスタと、前記命令セットの指定によりリプレース候補のウェイを制御する制御回路とを備え、リプレースウェイをソフトウェアから制御可能としたキャッシュ装置。
【００５９】
（付記１５）  リプレース候補として選択してはいけないウェイを前記命令により定義して前記設定レジスタに設定し、前記制御回路が、前記命令セットの指定により前記リプレースしてはいけないウェイに対してキャッシュラインを登録することで、ソフトウェアから明示的にリプレース動作を制御可能としたことを特徴とする付記１４に記載のキャッシュ装置。
【００６０】
（付記１６）  フルアソシアティブまたは複数ウェイをセットアソシアティブに制御するキャッシュ装置であることを特徴とする付記１４または１５に記載のキャッシュ装置。
【産業上の利用可能性】
【００６１】
本発明のキャッシュ装置は、ＨＰＣ用キャッシュ装置に求められている要求、例えば、短期的に再利用されるデータを本来のキャッシュとして利用でき、また長期的に再利用されるデータであって、ソフトウェアが希望する期間、キャッシュに保持でき、またレジスタスピルやループ分割に伴う一時域としてローカルメモリ的にキャッシュを利用でき、また再利用性の無いデータが、再利用性のあるデータを追い出さないこと、のいずれにも対応できるので、ＨＰＣプロセッサを効率的かつ高性能で実現するうえで将来性が期待される。
【図面の簡単な説明】
【００６２】
【図１】本発明の第１の実施形態に係るＨＰＣ用キャッシュ装置の構成概要を示すブロック図である。
【図２】本発明の第１の実施形態に係るＨＰＣ用キャッシュ装置において分割された１次キャッシュのいずれの領域を選択するかを説明する図である。
【図３】本発明の第１の実施形態に係るＨＰＣ用キャッシュ装置における動作モードの切り替え構成を説明する機能ブロック図である。
【図４】本発明の実施形態に係るASI-L2-CNTLレジスタの定義内容を説明する図である。
【図５】本発明の第１の実施形態に係るＨＰＣ用キャッシュ装置におけるローカルメモリのRAS機能を説明する構成図である。
【図６】本発明の第２の実施形態に係るＨＰＣ用キャッシュ装置におけるキャッシュリプレース制御部の構成概要を示すブロック図である。
【図７】本発明の第２の実施形態に係るＨＰＣ用キャッシュ装置におけるキャッシュリプレース制御部の動作を説明するフローチャートである。
【符号の説明】
【００６３】
１０  演算器
２０  １次キャッシュ
２１  １次キャッシュ領域
２２  ローカルメモリ領域/１次キャッシュ領域
２３  １次キャッシュタグ
２４  ウェイ選択部
２５  データ選択部
３０  ２次キャッシュ
３１  バリア同期機構
３２  U2-FLUSH制御部
３３  U2-FLUSHEXEC状態表示部
３４  Previous L1-LOCALレジスタ
３５  選択部
４０  主記憶装置
５１  ウェイ0キャッシュタグ
５２  ウェイ1キャッシュタグ
５５  ウェイ0ローカルメモリ
５６  ウェイ1ローカルメモリ
５９  選択部
６０  ウェイ0故障検出器
６１  ウェイ1故障検出器
６２  ウェイ0故障チェック部
６３  ウェイ1故障チェック部
６４  読み出し処理中断制御部
７４  キャッシュ・タグテーブル
７７  キャッシュ・LRUテーブル
７８  キャッシュ・リプレースロックテーブル
【図１】
2008234074.tif 000003
【図２】
2008234074.tif 000004
【図３】
2008234074.tif 000005
【図４】
2008234074.tif 000006
【図５】
2008234074.tif 000007
【図６】
2008234074.tif 000008
【図７】
2008234074.tif 000009