(57)【特許請求の範囲】
【請求項１】
〔Ａ〕プロセッサコアが所定の命令を実行したときに転送される転送データをグループ分けし、キャッシュ中に常にキャッシングさせておきたい転送データに対しては、該転送データのロード・ストア命令中にデータグループを指示し、一つ目の命令を実行したときに転送される一つ目の転送データと、二つ目の命令を実行したときに転送される二つ目の転送データとが同じデータグループに属する場合には、前記一つ目の転送データと前記二つ目の転送データに対して同一のデータグループを定めることと、
〔Ｂ〕ｎを複数とし、ｎ個のウェイを有するｎウェイセットアソシアティブ方式のキャッシュメモリにおけるウェイのうち、リプレースアルゴリズムによりハードウェアがデータを記憶するのに最適と判断したウェイを最適なウェイとし、前記最適なウェイの一つに、一つ目のデータグループを割り当て、データグループ毎に、同じデータグループであったなら同じウェイに登録するために、登録したウェイとデータグループの対応を記憶し、一度、データグループと対応が取られたウェイについては、以降のロード・ストア命令で該データグループが指示されない限り、該ウェイを使用しないことと、
〔Ｃ〕前記一つ目のデータグループと同じデータグループに属する転送データを前記キャッシュメモリに登録するときには、ハードウェアがリプレースアルゴリズムに基づいて、前記一つ目のデータグループが割り当てられた前記最適なウェイの一つに登録することと
を備える
登録先ウェイの固定方法。
【請求項２】
前記〔Ｃ〕は、
前記一つ目のデータグループとは異なる二つ目のデータグループに属する転送データを前記キャッシュメモリに登録するときには、前記最適なウェイの一つとは異なるいずれかのウェイに登録すること
を備える
請求項１記載の登録先ウェイの固定方法。
【請求項３】
前記いずれかのウェイに登録することは、
前記最適なウェイの一つを登録先対象のウェイから除外することと、
前記最適なウェイの一つを除くｎ−１個のウェイの中から、所定のリプレースアルゴリズムに従って、登録先ウェイを選択することと
を備える
請求項２記載の登録先ウェイの固定方法。
【請求項４】
前記登録先ウェイを選択することは、
ＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）アルゴリズムを用いて、前記ｎ−１個のウェイの中から、最も古く使われたウェイを選択すること
を備える
請求項３記載の登録先ウェイの固定方法。
【請求項５】
前記除外することは、
前記最適なウェイの一つが最も新しく使用されたように、前記ＬＲＵアルゴリズムのアクセス履歴を変更すること
を備え、
前記登録先ウェイを選択することは、
前記ｎ−１個のウェイに、アクセス履歴が変更された前記最適なウェイの一つを加えたｎ個のウェイの中から、前記ＬＲＵアルゴリズムを用いて、最も古く使われたウェイを選択すること
を更に備える
請求項４記載の登録先ウェイの固定方法。
【請求項６】
〔Ｄ〕前記最適なウェイの一つに対応付けられた一つ目のレジスタを設けること
を更に備え、
前記〔Ｂ〕は、
前記一つ目のレジスタに前記一つ目のデータグループを記憶することによって、前記最適なウェイの一つに前記一つ目のデータグループを割り当てること
を備える
請求項３〜５いずれか１項に記載の登録先ウェイの固定方法。
【請求項７】
前記〔Ｄ〕は、
前記一つ目のレジスタが前記一つ目のデータグループを記憶済みであることを示す一つ目のバリッドデータを記憶する一つ目のバリッドメモリを設けること
を備え、
前記〔Ｂ〕は、
前記一つ目のレジスタに前記一つ目のデータグループを記憶するときに、前記一つ目のバリッドメモリに前記一つ目のバリッドデータを記憶すること
を更に備え、
前記除外することは、
前記一つ目のバリッドデータを参照することによって、前記最適なウェイの一つを登録先対象のウェイから除外すること
を備える
請求項６記載の登録先ウェイの固定方法。
【請求項８】
前記〔Ｂ〕は、
前記最適なウェイの一つと同じウェイに、前記一つ目のデータグループとは異なる三つ目のデータグループを割り当てること
を更に備え、
前記〔Ｃ〕は、
前記三つ目のデータグループと同じデータグループに属する転送データを前記キャッシュメモリに登録するときには、前記三つ目のデータグループが割り当てられた前記最適なウェイの一つに登録すること
を更に備える
請求項７記載の登録先ウェイの固定方法。
【請求項９】
前記〔Ｄ〕は、
前記最適なウェイの一つに対応付けられた二つ目のレジスタを設けること
を更に備え、
前記〔Ｂ〕は、
前記二つ目のレジスタに前記三つ目のデータグループを記憶することによって、前記最適なウェイの一つと同じウェイに前記三つ目のデータグループを割り当てること
を更に備える
請求項８記載の登録先ウェイの固定方法。
【請求項１０】
前記〔Ｄ〕は、
前記二つ目のレジスタが前記三つ目のデータグループを記憶済みであることを示す二つ目のバリッドデータを記憶する二つ目のバリッドメモリを設けること
を更に備え、
前記〔Ｂ〕は、
前記二つ目のレジスタに前記三つ目のデータグループを記憶するときに、前記二つ目のバリッドメモリに前記二つ目のバリッドデータを記憶すること
を更に備え、
前記除外することは、
前記最適なウェイの一つに対応付けられたレジスタが、前記一つ目のレジスタと前記二つ目のレジスタ以外に無い場合に、前記一つ目のバリッドデータと前記二つ目のバリッドデータと
を参照することによって、前記最適なウェイの一つを登録先対象のウェイから除外すること
を更に備える
請求項９記載の登録先ウェイの固定方法。
【請求項１１】
〔Ｅ〕ｎ個のウェイのそれぞれに対応付けて、ｎ個のレジスタを設けること
を更に備え、
前記〔Ｂ〕は、
前記最適なウェイの一つに対応付けられた一つ目のレジスタに前記一つ目のデータグループを記憶することによって、前記最適なウェイの一つに前記一つ目のデータグループを割り当てること
を備え、
前記〔Ｃ〕は、
前記一つ目のレジスタが占有されていること
を確認することと、
前記一つ目のレジスタを除くｎ−１個のレジスタの中で空いているものが有ること
を確認することと、
前記二つ目のデータグループに属する前記転送データを前記キャッシュメモリに登録するときには、前記最適なウェイの一つとは異なるいずれかのウェイであって、空いているレジスタに対応付けられた二つ目のウェイに登録することと
を更に備える
請求項２〜５いずれか１項に記載の登録先ウェイの固定方法。
【請求項１２】
前記〔Ｂ〕は、
前記二つ目のウェイに対応付けられた二つ目のレジスタに前記二つ目のデータグループを記憶することによって、前記二つ目のウェイに前記二つ目のデータグループを割り当てること
を更に備える
請求項１１記載の登録先ウェイの固定方法。
【請求項１３】
〔Ｆ〕ｎ個のウェイのいずれかに対応付けられたレジスタの集まりを設けること
を更に備え、
前記〔Ｂ〕は、
前記最適なウェイの一つに対応付けられた一つ目のレジスタに前記一つ目のデータグループを記憶することによって、前記最適なウェイの一つに前記一つ目のデータグループを割り当てること
を備え、
前記〔Ｃ〕は、
前記一つ目のデータグループとは異なる二つ目のデータグループに属する転送データを前記キャッシュメモリに登録するときには、
前記一つ目のレジスタが占有されていること
を確認することと、
前記一つ目のレジスタを除くレジスタの中で空いているものが有ること
を確認することと、
空いているレジスタのいずれかに対応付けられた二つ目のウェイに登録することと
を備える
請求項１記載の登録先ウェイの固定方法。
【請求項１４】
前記二つ目のウェイに登録することは、
ｎ個のウェイ毎に、空いているレジスタの数を計数することと、
空いているレジスタの数が最も多いウェイを前記二つ目のウェイとすること
を備える
請求項１３記載の登録先ウェイの固定方法。
【請求項１５】
前記〔Ｂ〕は、
前記二つ目のウェイに対応付けられた二つ目のレジスタに前記二つ目のデータグループを記憶することによって、前記二つ目のウェイに前記二つ目のデータグループを割り当てること
を更に備える
請求項１３又は１４記載の登録先ウェイの固定方法。
【請求項１６】
前記〔Ａ〕は、
前記所定の命令の命令仕様にデータグループを定義し、命令の一部にデータグループを含めることによって、前記一つ目の転送データと前記二つ目の転送データに対して同一のデータグループを定めること
を備える
請求項１〜１５いずれか１項に記載の登録先ウェイの固定方法。
【請求項１７】
所定の命令を実行するプロセッサコアと、
前記プロセッサコアが前記所定の命令を実行したときに転送される転送データを一時的に保持するキャッシュメモリと
を具備し、
前記プロセッサコアは、
キャッシュ中に常にキャッシングさせておきたい転送データに対しては、該転送データのロード・ストア命令中にデータグループを指示し、一つ目の命令を実行したときに転送される一つ目の転送データと、二つ目の命令を実行したときに転送される二つ目の転送データとが同じデータグループに属する場合には、前記一つ目の転送データと前記二つ目の転送データに対して同一のデータグループを定め、
前記キャッシュメモリは、
ｎを複数とし、ｎ個のウェイを有するｎウェイセットアソシアティブ方式であり、
リプレースアルゴリズムによりハードウェアがデータを記憶するのに最適と判断したウェイを最適なウェイとし、前記最適なウェイの一つに、一つ目のデータグループを割り当て、データグループ毎に、同じデータグループであったなら同じウェイに登録するために、登録したウェイとデータグループの対応を記憶し、一度、データグループと対応が取られたウェイについては、以降のロード・ストア命令で該データグループが指示されない限り、該ウェイを使用せず、
前記一つ目のデータグループと同じデータグループに属する転送データを登録するときには、ハードウェアがリプレースアルゴリズムに基づいて、前記一つ目のデータグループが割り当てられた前記最適なウェイの一つに登録する
プロセッサ。
【請求項１８】
前記キャッシュメモリは、
前記一つ目のデータグループとは異なる二つ目のデータグループに属する転送データを前記キャッシュメモリに登録するときには、前記最適なウェイの一つとは異なるいずれかのウェイに登録する
請求項１７記載のプロセッサ。
【請求項１９】
前記キャッシュメモリは、
前記最適なウェイの一つを登録先対象のウェイから除外し、
前記最適なウェイの一つを除くｎ−１個のウェイの中から、所定のリプレースアルゴリズムに従って、登録先ウェイを選択する
請求項１８記載のプロセッサ。
【請求項２０】
前記キャッシュメモリは、
前記登録先ウェイを選択するときに、ＬＲＵアルゴリズムを用いて、前記ｎ−１個のウェイの中から、最も古く使われたウェイを選択する
請求項１９記載のプロセッサ。
【請求項２１】
前記キャッシュメモリは、
前記除外するときに、前記最適なウェイの一つが最も新しく使用されたように、前記ＬＲＵアルゴリズムのアクセス履歴を変更し、
前記登録先ウェイを選択するときに、前記ｎ−１個のウェイに、アクセス履歴が変更された前記最適なウェイの一つを加えたｎ個のウェイの中から、前記ＬＲＵアルゴリズムを用いて、最も古く使われたウェイを選択する
請求項２０記載のプロセッサ。
【請求項２２】
前記キャッシュメモリは、
前記最適なウェイの一つに対応付けられた一つ目のレジスタを有し、
前記一つ目のレジスタに前記一つ目のデータグループを記憶することによって、前記最適なウェイの一つに前記一つ目のデータグループを割り当てる
請求項１９〜２１いずれか１項に記載のプロセッサ。
【請求項２３】
前記キャッシュメモリは、
前記一つ目のレジスタが前記一つ目のデータグループを記憶済みであることを示す一つ目のバリッドデータを記憶する一つ目のバリッドメモリを更に有し、
前記一つ目のレジスタに前記一つ目のデータグループを記憶するときに、前記一つ目のバリッドメモリに前記一つ目のバリッドデータを記憶し、
前記除外するときに、前記一つ目のバリッドデータを参照することによって、前記最適なウェイの一つを登録先対象のウェイから除外する
請求項２２記載のプロセッサ。
【請求項２４】
前記キャッシュメモリは、
前記最適なウェイの一つと同じウェイに、前記一つ目のデータグループとは異なる三つ目のデータグループを割り当て、
前記三つ目のデータグループと同じデータグループに属する転送データを前記キャッシュメモリに登録するときには、前記三つ目のデータグループが割り当てられた前記最適なウェイの一つに登録する
請求項２３記載のプロセッサ。
【請求項２５】
前記キャッシュメモリは、
前記最適なウェイの一つに対応付けられた二つ目のレジスタを更に有し、
前記二つ目のレジスタに前記三つ目のデータグループを記憶することによって、前記最適なウェイの一つと同じウェイに前記三つ目のデータグループを割り当てる
請求項２４記載のプロセッサ。
【請求項２６】
前記キャッシュメモリは、
前記二つ目のレジスタが前記三つ目のデータグループを記憶済みであることを示す二つ目のバリッドデータを記憶する二つ目のバリッドメモリを更に有し、
前記二つ目のレジスタに前記三つ目のデータグループを記憶するときに、前記二つ目のバリッドメモリに前記二つ目のバリッドデータを記憶し、
前記除外するときには、前記最適なウェイの一つに対応付けられたレジスタが、前記一つ目のレジスタと前記二つ目のレジスタ以外に無い場合に、前記一つ目のバリッドデータと前記二つ目のバリッドデータとを参照することによって、前記最適なウェイの一つを登録先対象のウェイから除外する
請求項２５記載のプロセッサ。
【請求項２７】
前記キャッシュメモリは、
ｎ個のウェイのそれぞれに対応付けて、ｎ個のレジスタを有し、
前記最適なウェイの一つに対応付けられた一つ目のレジスタに前記一つ目のデータグループを記憶することによって、前記最適なウェイの一つに前記一つ目のデータグループを割り当て、
前記一つ目のレジスタが占有されていることを確認し、
前記一つ目のレジスタを除くｎ−１個のレジスタの中で空いているものが有ることを確認し、
前記二つ目のデータグループに属する前記転送データを登録するときには、前記最適なウェイの一つとは異なるいずれかのウェイであって、空いているレジスタに対応付けられた二つ目のウェイに登録する
請求項１８〜２１いずれか１項に記載のプロセッサ。
【請求項２８】
前記キャッシュメモリは、
ｎ個のウェイのいずれかに対応付けられたレジスタの集まりを有し、
前記最適なウェイの一つに対応付けられた一つ目のレジスタに前記一つ目のデータグループを記憶することによって、前記最適なウェイの一つに前記一つ目のデータグループを割り当て、
前記一つ目のデータグループとは異なる二つ目のデータグループに属する転送データを前記キャッシュメモリに登録するときには、
前記一つ目のレジスタが占有されていることを確認し、
前記一つ目のレジスタを除くレジスタの中で空いているものが有ることを確認し、
空いているレジスタのいずれかに対応付けられた二つ目のウェイに登録し、
前記二つ目のウェイに登録するときには、
ｎ個のウェイ毎に、空いているレジスタの数を計数し、
空いているレジスタの数が最も多いウェイを前記二つ目のウェイとする
請求項１７記載のプロセッサ。
【請求項２９】
前記プロセッサコアは、
前記所定の命令であって、命令仕様にデータグループが定義され、命令の一部にデータグループを含むものを実行することによって、前記一つ目の転送データと前記二つ目の転送データに対して同一のデータグループを定める
請求項１７〜２８いずれか１項に記載のプロセッサ。
【請求項３０】
請求項１７〜２９いずれか１項に記載のプロセッサを具備する情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、登録先ウェイの固定方法、プロセッサ、及び情報処理装置に関する。
【背景技術】
【０００２】
プロセッサの高速化に比し、主記憶装置に使用するダイナミックＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）は、大容量化は進んだものの、高速化はあまり進んでいない。プロセッサと主記憶装置の速度差を埋めるものとして、キャッシュメモリが使用されてきた。キャッシュメモリは、データの時間的・空間的局所性を利用したものであり、そのリプレースアルゴリズムは、時間的局所性に基づいている。ＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）も、時間的局所性に基づいたリプレースアルゴリズムの一つである。
【０００３】
キャッシュメモリが有効に働かない状況が知られている。一つ目の例は、プロセッサが、映像データ、音声データのようなストリームデータを再生する場合である。ストリームデータは再利用性が低く、時間的局所性が小さいので、キャッシュメモリが有効に働かない。二つ目の例は、ＨＰＣ（Ｈｉｇｈ  Ｐｅｒｆｏｒｍａｎｃｅ  Ｃｏｍｐｕｔｉｎｇ）分野で、プログラムが大きなデータセットを扱う場合である。プログラムが大きなデータセットを扱う場合、キャッシュメモリに記憶された種々のデータが、キャッシュメモリの容量の制限のために、大きなデータセットによって書き換えられてしまう。そのため、再利用性の高いデータがリプレースされてしまい、次に使用しようとするときには、キャッシュメモリ中に存在しなくなるいという状況が生じる。
【０００４】
図１は、ＨＰＣ分野で利用されるプログラムの例を示している。図１において、配列Ａ、Ｂが、キャッシュメモリの１ウェイに登録可能な容量のデータセットであり、配列Ｃが大データセットであったとする。この場合、ループＡにより配列Ａ、Ｂがキャッシングされた後、ループＢを処理している間に、大データセットである配列Ｃにより配列Ａ、Ｂの大部分はキャッシュアウトされてしまう。キャッシュメモリが、配列Ａ、Ｂのデータを保持し続けることができれば、配列Ａ、Ｂのデータを主記憶装置から転送しなくても済む。このとき、主記憶装置から転送されるデータは配列Ｃのデータだけになるため、キャッシュヒット率が向上し、プロセッサの処理性能が向上する。また、主記憶装置にアクセスする回数が減るために、低消費電力化を実現できる。
【０００５】
特開２０００−１２２９６８号公報（特許文献１参照）には、ウェイを単位として、特定の入出力装置に係るデータのみを保持することを特徴とする入出力キャッシュメモリの発明が記載されている。この特許文献１においては、ある入出力装置が何れのウェイを使用するかを明示的に指示するため、登録先ウェイを固定化する場合には、ウェイ番号を直接指定しなければならないという問題があった。
【０００６】
特開２００２−１４０２３４号公報（特許文献２参照）には、キャッシュ装置の発明が記載されている。このキャッシュ装置は、プロセッサと主記憶の間に位置し、該主記憶中のデータ群単位で主記憶のデータを一時的に登録するものである。キャッシュメモリと、定義設定手段と、グループ判定手段と、登録ポリシー指定手段と、読み出す手段と、リプレース決定手段と、登録手段とを備える。
【０００７】
キャッシュメモリは、保持された各データ群についての制御情報をそのデータ群と対応付けて登録する。定義設定手段は、管理すべきデータ群の属性の定義を設定する。グループ判定手段は、該プロセッサが該主記憶からデータ群をフェッチする際に発行した命令の情報から、該設定された定義に従って、フェッチされるべきデータ群の属性を判定する。登録ポリシー指定手段は、データ群の属性に従って、該キャッシュメモリへの登録の仕方を定めた登録ポリシーを設定する。読み出す手段は、該プロセッサからのリードの対象とするデータ群が該キャッシュメモリに登録されているかどうか判定し、ミスヒットの場合には、そのデータ群を該主記憶から読み出す。リプレース決定手段は、該データ群の属性と該キャッシュメモリの制御情報内の属性情報と該登録ポリシーとに従がって、該キャッシュメモリへのリプレースを決定する。登録手段は、リプレース決定手段により登録されるべきと決定されたデータ群を該キャッシュメモリに登録するとともに、その属性を対応する制御情報として登録する。
【０００８】
特許文献２図５を参照すると、この関連発明では、コマンドにグループ識別子を定義している。このグループ識別子を用いることによって、リプレースラインが決定される。また、特許文献２図７を参照すると、登録ポリシーの登録パターンが一つのみになる例が説明されている。この特許文献２においては、登録ポリシーを変更した際、逸脱が生じてしまうため、逸脱時においては、メモリバンクと、グループ集合との対応関係が乱れるという問題があった。
【０００９】
特開２００４−１１０２４０号公報（特許文献３参照）には、キャッシュメモリ装置の発明が記載されている。このキャッシュメモリ装置において、キャッシュメモリは、プロセッサの指示に基づいてメインメモリからのデータを一時記憶するデータメモリ領域と、該一時記憶したデータのアドレスを記憶するタグメモリ領域とを持つ。キャッシュメモリは、プロセス情報管理テーブルを備える。プロセス情報管理テーブルは、プログラムの一連の実行を表すプロセス毎に識別番号とキャッシュ常駐優先を含む属性を付与してテーブルとして記憶する。キャッシュメモリ装置は、上記タグメモリ領域内に上記プロセス対応の識別番号を指定する欄を設けて、該プロセスの実行時には上記識別番号に基づく指定属性の処理に従ってキャッシュを使用する。
【００１０】
この特許文献３においては、プロセス単位にキャッシュを使用するため、一つのプロセスの中で、大データセットを扱う処理と小データセットを扱う処理とが混在した場合には、大データセットによって小データセットがキャッシュアウトされてしまうという問題があった。
【００１１】
【特許文献１】特開２０００−１２２９６８号公報
【特許文献２】特開２００２−１４０２３４号公報
【特許文献３】特開２００４−１１０２４０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
本発明の課題は、転送データをデータグループごとにグループ分けすると共に、ｎウェイセットアソシアティブ方式のキャッシュメモリに、同一のデータグループに属する転送データを登録するときに、登録先のウェイを固定することである。本発明の他の課題は、ウェイ番号を直接指示することなく、登録先のウェイを固定することである。
【課題を解決するための手段】
【００１３】
本発明の一つのアスペクトによる登録先ウェイの固定方法は、〔Ａ〕定めることと、〔Ｂ〕割り当てることと、〔Ｃ〕登録することとを具備する。〔Ａ〕定めることにおいては、プロセッサコアが所定の命令を実行したときに転送される転送データをグループ分けし、一つ目の命令を実行したときに転送される一つ目の転送データと、二つ目の命令を実行したときに転送される二つ目の転送データとが同じグループに属する場合には、一つ目の転送データと二つ目の転送データに対して同一のデータグループを定める。〔Ｂ〕割り当てることにおいては、ｎを複数とし、ｎ個のウェイを有するｎウェイセットアソシアティブ方式のキャッシュメモリにおける最適なウェイの一つに、一つ目のデータグループを割り当てる。〔Ｃ〕登録することにおいては、一つ目のデータグループと同じデータグループに属する転送データをキャッシュメモリに登録するときには、一つ目のデータグループが割り当てられた上記最適なウェイの一つに登録する。
【００１４】
本発明の別のアスペクトによるプロセッサは、所定の命令を実行するプロセッサコアと、プロセッサコアが所定の命令を実行したときに転送される転送データを一時的に保持するキャッシュメモリとを具備する。プロセッサコアは、一つ目の命令を実行したときに転送される一つ目の転送データと、二つ目の命令を実行したときに転送される二つ目の転送データとが同じグループに属する場合には、一つ目の転送データと二つ目の転送データに対して同一のデータグループを定める。キャッシュメモリは、ｎを複数とし、ｎ個のウェイを有するｎウェイセットアソシアティブ方式であり、最適なウェイの一つに、一つ目のデータグループを割り当て、一つ目のデータグループと同じデータグループに属する転送データを登録するときには、一つ目のデータグループが割り当てられた上記最適なウェイの一つに登録する。
【００１５】
本発明のさらに別のアスペクトによる情報処理装置は、前段落に記載したプロセッサを具備する。
【発明の効果】
【００１６】
本発明によれば、転送データをデータグループごとにグループ分けすると共に、ｎウェイセットアソシアティブ方式のキャッシュメモリに、同一のデータグループに属する転送データを登録するときに、登録先のウェイを固定することができる。また、ウェイ番号を直接指示することなく、登録先のウェイを固定することができる。
【発明を実施するための最良の形態】
【００１７】
本発明は、特定のデータをｎウェイセットアソシアティブ方式のキャッシュメモリに残しておきたい旨の指示を、プログラムから行うことを可能にしている。以下、説明の便宜上、ｎ＝４とし、４ウェイセットアソシアティブ方式のキャッシュメモリの場合における実施例について詳述する。
【実施例１】
【００１８】
プロセッサコアが主記憶装置にアクセスするための命令として、例えば、ロード命令及びストア命令が用意される。図２は、実施例１におけるロード命令及びストア命令の命令仕様を示す図である。図示するように、命令仕様１００は、オペコードと、データグループ番号と、アドレス／データ部とを定義している。オペコードは、ロード命令又はストア命令に割り当てられたコードを格納する欄である。データグループ番号は、ロード命令又はストア命令によって転送されるデータのグループ番号を格納する欄である。アドレス／データ部は、データの保存場所又はデータを格納する欄である。
【００１９】
データグループ番号は、セットアソシアティブ方式のキャッシュメモリにおいて、同一のウェイにキャッシングする同一のグループに属する一のデータと他のデータについて、同一の番号が与えられるものである。データグループ番号は、所定のアルリゴリズムに従ってソースコードをコンパイルするコンパイラが、大データセットを検出したときなどに、特定のデータに関して与えることができる。また、プログラマーが、プログラムのソースコードに記述することによって与えることができる。なお、不要な場合には、付与しないとすることができる。図２に示すように、実施例１では、データグループ番号が命令の一部として定義されている。プロセッサコアが、データグループ番号を有するロード命令又はストア命令を実行すると、キャッシュメモリに対して、データグループ番号が指示される。
【００２０】
図３は、実行ファイルの命令列を例示する図である。図２の命令仕様にしたがって、図３の命令１０１〜１０４は、ロード命令又はストア命令のオペコードと、データグループ番号と、アドレス又はデータとを有している。命令１０１、１０２のデータグループ番号は０なので、プロセッサコアがこれらの命令１０１、１０２を実行すると、いずれの場合も、キャッシュメモリは、０のデータグループ番号を指示される。キャッシュメモリは、命令１０１、１０２によって転送されるデータを同一のウェイにキャッシングしようとする。また、命令１０３、１０４のデータグループ番号は１なので、プロセッサコアがこれらの命令１０３、１０４を実行すると、いずれの場合も、キャッシュメモリは、１のデータグループ番号を指示される。キャッシュメモリは、命令１０３、１０４によって転送されるデータを同一のウェイにキャッシングしようとする。
【００２１】
図４は、実施例１における情報処理装置のブロック説明図である。図示するように、情報処理装置１０６は、プロセッサ１０７を具備している。プロセッサ１０７は、主記憶装置１０８からデータを読み出し、また、主記憶装置１０８へデータを書き込む。図５は、実施例１におけるプロセッサ１０７のブロック説明図である。図示するように、プロセッサ１０７は、命令を実行するプロセッサコア１０９と、転送データを一時的に保持するキャッシュメモリ１１０とを有している。実施例１のキャッシュメモリ１１０は、上述したとおり、４ウェイセットアソシアティブ方式である。
【００２２】
図６は、キャッシュメモリ１１０のブロック説明図である。図６において、キャッシュメモリ１１０は、外部メモリ・アドレスレジスタ１０と、デコーダ１４と、アドレスアレイ部２０と、データアレイ部２１と、比較器２２〜２５と、セレクタ２６と、受信レジスタ１１１と、リプレース論理回路１１２とを有している。外部メモリ・アドレスレジスタ１０は、タグ１１と、セット番号１２と、オフセット１３とを含む外部メモリ・アドレスを保持する。デコーダ１４は、セット番号をデコードして、一つのセット行を求める。アドレスアレイ部２０と、データアレイ部２１とは、４つのウェイを有している。比較器２２〜２５は、タグと、セット行のアドレスとを比較する。セレクタ２６は、比較器２２〜２５のいずれかがオンのときに、その比較器に対応するウェイを選択する。受信レジスタ１１１は、データグループ番号を保持する。リプレース論理回路１１２は、キャッシュミスヒットが生じたときに、リプレースするウェイを選択するウェイ選択信号を出力する。
【００２３】
図７は、キャッシュミスヒットが生じた場合におけるキャッシュメモリ１１０の動作を説明する図である。キャッシュミスヒットが生じると、リプレース論理回路１１２が、４つのウェイの中から最もリプレースするのに相応しいウェイを選択する。ウェイ０を選択する場合、リプレース論理回路１１２は、”１０００”のウェイ選択信号を出力する。このとき、デコードされたセット行のウェイ０がリプレースされる。アドレスアレイ部のウェイ０は、タグの内容にリプレースされ、データアレイ部のウェイ０は、転送されるデータにリプレースされる。また、ウェイ１を選択する場合、リプレース論理回路１１２は、”０１００”のウェイ選択信号を出力する。このとき、セット行のウェイ１がリプレースされる。アドレスアレイ部のウェイ１は、タグの内容にリプレースされ、データアレイ部のウェイ１は、転送されるデータにリプレースされる。ウェイ２を選択する場合、リプレース論理回路１１２は、”００１０”のウェイ選択信号を出力し、ウェイ３を選択する場合、リプレース論理回路１１２は、”０００１”のウェイ選択信号を出力する。一方、キャッシュミスヒットが生じてもリプレースを行わないこととする場合には、リプレース論理回路１１２は、”００００”のウェイ選択信号を出力する。
【００２４】
図８は、リプレース論理回路１１２のブロック説明図である。図８において、リプレース論理回路１１２は、設定レジスタ１２０と、固定化レジスタ部１２２と、記憶済み確認部１２４と、切替部１２６と、リプレースアルゴリズム部１２８とを有している。設定レジスタ１２０は、プロセッサコア１０９がロード命令又はストア命令を実行したときに、データグループ番号の指示があった場合に、そのデータグループ番号を保持する。固定化レジスタ１２２部は、ウェイに対応付けられた少なくとも一つの固定化レジスタを有する。記憶済み確認部１２４は、設定レジスタ１２０が保持するデータグループ番号と、固定化レジスタが記憶するデータグループ番号とが一致するか否かを確認する。リプレースアルゴリズム部１２８は、所定のリプレースアルゴリズムに従っていずれかのウェイを選択する。切替部１２４は、記憶済み確認部１２４が出力する記憶済み信号に応じて、記憶済み確認部１２４の出力と、リプレースアルゴリズム部１２８の出力とを切り替える。
【００２５】
図９は、固定化レジスタ部の構成例を示すブロック図である。図９において、固定化レジスタ部１１２ａは、４つの固定化レジスタＲ０〜Ｒ３を有している。固定化レジスタＲ０〜Ｒ３は、データグループ番号を記憶することができる。バリッドメモリＶ０〜Ｖ３は、対応する固定化レジスタＲ０〜Ｒ３が、データグループ番号を記憶しているか否かを示すバリッドデータを保持する。固定化レジスタＲ０〜Ｒ３及びバリッドメモリＶ０〜Ｖ３は、キャッシュメモリのウェイ０〜３に、それぞれ対応づけられている。固定化レジスタ部１１２ａは、１つのウェイに対して、それぞれ１つのデータグループを保持する場合の構成を有している。
【００２６】
図１０は、記憶済み確認部の構成例を示すブロック図である。図１０において、記憶済み確認部１２４ａは、比較器１３０〜１３３と、オア回路１３４とを有している。比較器１３０は、設定レジスタ１２０が保持するデータグループ番号と、固定化レジスタＲ０が記憶するデータグループ番号とを比較して、一致する場合には、オンの一致信号Ｃ０を出力する。比較器１３１は、設定レジスタ１２０が保持するデータグループ番号と、固定化レジスタＲ１が記憶するデータグループ番号とを比較して、一致する場合には、オンの一致信号Ｃ１を出力する。比較器１３２は、設定レジスタ１２０が保持するデータグループ番号と、固定化レジスタＲ２が記憶するデータグループ番号とを比較して、一致する場合には、オンの一致信号Ｃ２を出力する。比較器１３３は、設定レジスタ１２０が保持するデータグループ番号と、固定化レジスタＲ３が記憶するデータグループ番号とを比較して、一致する場合には、オンの一致信号Ｃ３を出力する。オア回路１３４は、一致信号Ｃ０〜Ｃ３のいずれかがオンのときに、オンの記憶済み信号を出力し、一致信号Ｃ０〜Ｃ３の全てがオフのときに、オフの記憶済み信号を出力する。
【００２７】
図１１は、切替部１２６の構成例を示すブロック図である。図１１において、切替部１２６は、４つのセレクタ１３５〜１３８を用いて、一致信号Ｃ０〜Ｃ３と、リプレースアルゴリズム部１２８の出力とを切り替えている。切替部１２６は、記憶済み確認信号がオンのとき、一致信号Ｃ０〜Ｃ３をウェイ選択信号として出力する。記憶済み確認信号がオフのとき、切替部１２６は、リプレースアルゴリズム部１２８の出力信号をウェイ選択信号として出力する。
【００２８】
図１２は、リプレースアルゴリズム部の構成例を示すブロック図である。図１２において、リプレースアルゴリズム部１２８ａは、除外部１３９を有している。除外部１３９は、バリッドメモリＶ０〜Ｖ３を参照して、バリッドデータが有効となっているバリッドメモリに対応するウェイを選択対象から除外する。例えば、バリッドメモリＶ０のバリッドデータのみが有効となっているとき、リプレースアルゴリズム部１２８ａは、ウェイ０を選択対象から除外し、ウェイ１〜３を対象としてウェイの選択を行う。また、バリッドメモリＶ０〜Ｖ３のバリッドデータが全て有効となっているとき、リプレースアルゴリズム部１２８ａは、ウェイ０〜３を選択対象から除外し、ウェイの選択を行わない。
【００２９】
図１３は、リプレースアルゴリズム部１２８ａの具体例を示すブロック図である。図１３において、リプレースアルゴリズム部１２８ａは、アクセス履歴設定部１４０と、アクセス履歴変更部１３５ａと、選択信号出力部１４１と、制御線１４２とを有している。アクセス履歴設定部１４０は、ＬＲＵアルゴリズムに従ってセット及びリセットされる６つのフリップフロップ回路１４３〜１４８を有している。ＬＲＵを実現するためには幾つかの方式があるが、図１３では、４つのウェイの各々に対して、２組ずつ、どちらのアクセスが古いかを示す情報を記憶し、最も古いアクセスのウェイに最も高いリプレース順位を与える。フリップフロップ回路１４３は、ウェイ０がウェイ１よりも古いときにセットされる。フリップフロップ回路１４４は、ウェイ０がウェイ２よりも古いときにセットされる。フリップフロップ回路１４５は、ウェイ０がウェイ３よりも古いときにセットされる。フリップフロップ回路１４６は、ウェイ１がウェイ２よりも古いときにセットされる。フリップフロップ回路１４７は、ウェイ１がウェイ３よりも古いときにセットされる。フリップフロップ回路１４８は、ウェイ２がウェイ３よりも古いときにセットされる。
【００３０】
図１３において、アクセス履歴変更部１３５ａは、バリッドメモリＶ０〜Ｖ３のバリッドデータを参照し、その内容に応じて、フリップフロップ回路１４３〜１４８から出力された信号を反転する。具体的には、バリッドメモリＶ１のバリッドデータが有効になっていたとき、ウェイ１には、最も新しいアクセスがあったこととなるようにアクセス履歴を変更する。例えば、フリップフロップ回路１４３の出力が、ウェイ１のアクセスはウェイ０のアクセスよりも古いことを示していた場合には、強制的にフリップフロップ回路１４３から出力された信号を反転し、ウェイ１のアクセスはウェイ０のアクセスよりも新しいという意味に置き換える。選択信号出力部１４１は、アクセス履歴変更部１３５ａから出力される６ビットのデータに基づいて、最も古くアクセスされたウェイを選択する信号を出力する。制御線１４２は、バリッドメモリＶ０〜Ｖ３のバリッドデータが全て有効になっていたときに、いずれのウェイも選択しないことを通知する非選択信号を、アクセス履歴変更部１３５ａから選択信号出力部１４１へ伝える。このとき、選択信号出力部１４１は、４つのウェイのいずれも選択しないように、強制的に”００００”を出力する。
【００３１】
図１４は、ウェイがリプレースされたときの固定化レジスタ部１２２ａの動作を説明する図である。図１４において、記憶済み信号がオフの場合に、設定レジスタ１２０から固定化レジスタ部１２２ａへ、データグループ番号が転送される。固定化レジスタ部１２２ａでは、リプレース論理回路１１２ａが出力するウェイ選択信号に基づいて、リプレースが行われたウェイに対応する固定化レジスタに、転送されたデータグループ番号を記憶する。このとき、対応するバリッドメモリのバリッドデータを無効から有効に書き換える。
【００３２】
図１５は、図３に示した命令列が実行された後の固定化レジスタ部１２２ａの状態を示す図である。ただし、図３に示した最初の命令１０１が実行される前は、キャッシングされたデータは無く、全ての固定化レジスタＲ０〜Ｒ３が空いていて、かつ、リプレースアルゴリズム部１２８ａは、リプレース順位が高い順に、ウェイ１、ウェイ２、ウェイ３、ウェイ０を設定していたとする。
【００３３】
最初の命令１０１が実行されたとき、データグループ０はどの固定化レジスタＲ０〜Ｒ３にも記憶されていないため、リプレースアルゴリズム部１２８ａにより、ウェイ１が選択されリプレースされる。このとき、固定化レジスタＲ１にデータグループ番号０が記憶され、バリッドメモリＶ１のバリッドデータが有効になる。次の命令１０２が実行されたとき、データグループ０は固定化レジスタＲ１に記憶されているため、一致信号Ｃ０〜Ｃ３により、ウェイ１が選択されリプレースされる。このとき、固定化レジスタＲ１への記憶は行われない。次の命令１０３が実行されたとき、データグループ１はどの固定化レジスタＲ０〜Ｒ３にも記憶されていないため、リプレースアルゴリズム部１２８ａにより、ウェイ２が選択されリプレースされる。このとき、固定化レジスタＲ２にデータグループ番号１が記憶され、バリッドメモリＶ２のバリッドデータが有効になる。次の命令１０４が実行されたとき、データグループ１は固定化レジスタＲ２に記憶されているため、一致信号Ｃ０〜Ｃ３により、ウェイ２が選択されリプレースされる。このとき、固定化レジスタＲ２への記憶は行われない。
【００３４】
図１６は、図１５で説明したように図３に示した命令列が実行された後のアドレスアレイ部２０の状態を示す図である。図示するように、同じデータグループ番号０を指示した命令１０１、１０２によって転送されたデータのアドレスが、ウェイ１に登録されている。また、同じデータグループ番号１を指示した命令１０３、１０４によって転送されたデータのアドレスが、ウェイ２に登録されている。なお、データアレイ部２１でも同様に、同じデータグループ番号０を指示した命令１０１、１０２によって転送されたデータが、ウェイ１に登録され、同じデータグループ番号１を指示した命令１０３、１０４によって転送されたデータが、ウェイ２に登録されている。
【００３５】
図１７は、更に後続する命令が実行された後のアドレスアレイ部２０の状態を示す図である。図１７において、データグループ１のデータは大データセットで再利用性が薄く、データグループ０のデータは小データセットで、再利用性が高いとする。図示するように、データグループ１の大データセットがウェイ２内でリプレースされ、ウェイ２を占有している。一方、データグループ０に属する再利用性の高いデータのアドレスは、データグループ１の大データセットによってリプレースされることなく、ウェイ１にキャッシングされたままとなっている。なお、データアレイ部２１も同様の状態になっている。
【００３６】
図１８及び１９は、リプレース論理回路１１２が使用しているウェイ選択方法を説明する流れ図である。図１８は、プロセッサコア１０９がロード命令又はストア命令を実行したときに、データグループ番号の指示があり、かつ、キャッシュメモリ１１０でキャッシュミスヒットが生じた場合に、そのデータグループ番号を記憶する動作を説明している。図１８において、まず、ロード命令又はストア命令が実行されたときに、プログラムから指示されたデータグループ番号を参照する（ＯＰ１０）。このデータグループ番号が、未だ固定化レジスタに記憶されていないデータグループ番号か否かを確認する（ＯＰ１１）。既に記憶済みであった場合には（ＯＰ１２：ノー）、データグループ番号を記憶しない。未記憶であった場合には（ＯＰ１２：イエス）、空いている固定化レジスタがあるか否かを確認する（ＯＰ１３）。空きが無い場合には（ＯＰ１４：ノー）、データグループ番号を記憶しない。空きがある場合には（ＯＰ１４：イエス）、空いている固定化レジスタのいずれかを選択する（ＯＰ１５）。そして、選択した固定化レジスタに対応するウェイを、リプレースするウェイとして選択すると共に、選択した固定化レジスタにデータグループ番号を記憶する（ＯＰ１６）。
【００３７】
図１９は、プロセッサコア１０９がロード命令又はストア命令を実行したときに、データグループ番号の指示があり、かつ、キャッシュメモリ１１０でキャッシュミスヒットが生じた場合に、ウェイを選択する動作を説明している。図１８に示す記憶が行われることによって、図１９に示すウェイの選択が可能になる。図１９において、まず、ロード命令又はストア命令が実行されたときに、プログラムから指示されたデータグループ番号を参照する（ＯＰ２０）。このデータグループ番号が、いずれかの固定化レジスタに記憶されたデータグループ番号と一致するか否かを確認する（ＯＰ２１）。一致しない場合には（ＯＰ２２：ノー）、ウェイの選択を、他のリプレースアルゴリズムに委ねる。一致する場合には（ＯＰ２２：イエス）、一致する固定化レジスタに対応するウェイを選択する（ＯＰ２３）。
【実施例２】
【００３８】
実施例１においては、ウェイに固定化できるデータグループ数は、４（ｎ＝４）グループを超えることができない。実施例２では、プログラムの都合でさらにグループ数を増やしたいという要求がある場合に、この要求を満たすために、ウェイ毎に複数のデータグループ番号を登録可能にしている。図２０〜２２を参照して、ウェイ毎に２つのデータグループ番号を登録可能にする例について詳述する。実施例２では、図８に示したリプレース論理回路１１２における固定化レジスタ部１２２と、記憶済み確認部１２４と、リプレースアルゴリズム部１２８とが、実施例１のものと置き換わる。
【００３９】
図２０は、固定化レジスタ部の構成例を示すブロック図である。図２０において、固定化レジスタ部１２２ｂは、８つの固定化レジスタＲ００、Ｒ０１、Ｒ１０、Ｒ１１、Ｒ２０、Ｒ２１、Ｒ３０、Ｒ３１を有している。これらの固定化レジスタＲ００、Ｒ０１、Ｒ１０、Ｒ１１、Ｒ２０、Ｒ２１、Ｒ３０、Ｒ３１は、データグループ番号を記憶することができる。バリッドメモリＶ００、Ｖ０１、Ｖ１０、Ｖ１１、Ｖ２０、Ｖ２１、Ｖ３０、Ｖ３１は、対応する固定化レジスタＲ００、Ｒ０１、Ｒ１０、Ｒ１１、Ｒ２０、Ｒ２１、Ｒ３０、Ｒ３１が、データグループ番号を記憶しているか否かを示すバリッドデータを保持する。固定化レジスタＲ００、Ｒ０１及びバリッドメモリＶ００、Ｖ０１は、キャッシュメモリのウェイ０に対応づけられている。固定化レジスタＲ１０、Ｒ１１及びバリッドメモリＶ１０、Ｖ１１は、キャッシュメモリのウェイ１に対応づけられている。固定化レジスタＲ２０、Ｒ２１及びバリッドメモリＶ２０、Ｖ２１は、キャッシュメモリのウェイ２に対応づけられている。固定化レジスタＲ３０、Ｒ３１及びバリッドメモリＶ３０、Ｖ３１は、キャッシュメモリのウェイ３に対応づけられている。
【００４０】
図２１は、記憶済み確認部の構成例を示すブロック図である。図２１において、記憶済み確認部１２４ｂは、比較器１５０〜１５７と、オア回路１６０〜１６４とを有している。比較器１５０は、設定レジスタ１２０が保持するデータグループ番号と、固定化レジスタＲ００が記憶するデータグループ番号とを比較して、一致する場合には、オンを出力する。比較器１５１は、設定レジスタ１２０が保持するデータグループ番号と、固定化レジスタＲ０１が記憶するデータグループ番号とを比較して、一致する場合には、オンを出力する。オア回路１６０は、ウェイ０に対応する２つの比較器１５０、１５１のいずれかの出力がオンのときに、オンの一致信号Ｃ０を出力し、２つの比較器１５０、１５１のいずれの出力もオフのときに、オフの一致信号Ｃ０を出力する。
【００４１】
比較器１５２は、設定レジスタ１２０が保持するデータグループ番号と、固定化レジスタＲ１０が記憶するデータグループ番号とを比較して、一致する場合には、オンを出力する。比較器１５３は、設定レジスタ１２０が保持するデータグループ番号と、固定化レジスタＲ１１が記憶するデータグループ番号とを比較して、一致する場合には、オンを出力する。オア回路１６１は、ウェイ１に対応する２つの比較器１５２、１５３のいずれかの出力がオンのときに、オンの一致信号Ｃ１を出力し、２つの比較器１５２、１５３のいずれの出力もオフのときに、オフの一致信号Ｃ１を出力する。
【００４２】
比較器１５４は、設定レジスタ１２０が保持するデータグループ番号と、固定化レジスタＲ２０が記憶するデータグループ番号とを比較して、一致する場合には、オンを出力する。比較器１５５は、設定レジスタ１２０が保持するデータグループ番号と、固定化レジスタＲ２１が記憶するデータグループ番号とを比較して、一致する場合には、オンを出力する。オア回路１６２は、ウェイ２に対応する２つの比較器１５４、１５５のいずれかの出力がオンのときに、オンの一致信号Ｃ２を出力し、２つの比較器１５４、１５５のいずれの出力もオフのときに、オフの一致信号Ｃ２を出力する。
【００４３】
比較器１５６は、設定レジスタ１２０が保持するデータグループ番号と、固定化レジスタＲ３０が記憶するデータグループ番号とを比較して、一致する場合には、オンを出力する。比較器１５７は、設定レジスタ１２０が保持するデータグループ番号と、固定化レジスタＲ３１が記憶するデータグループ番号とを比較して、一致する場合には、オンを出力する。オア回路１６３は、ウェイ３に対応する２つの比較器１５６、１５７のいずれかの出力がオンのときに、オンの一致信号Ｃ３を出力し、２つの比較器１５６、１５７のいずれの出力もオフのときに、オフの一致信号Ｃ３を出力する。
【００４４】
オア回路１６４は、一致信号Ｃ０〜Ｃ３のいずれかがオンのときに、オンの記憶済み信号を出力し、一致信号Ｃ０〜Ｃ３の全てがオフのときに、オフの記憶済み信号を出力する。
【００４５】
図２２は、リプレースアルゴリズム部の構成例を示すブロック図である。図２２におけるリプレースアルゴリズム部１２８ｂは、図１３に示したリプレースアルゴリズム部１２８ａにおけるアクセス履歴変更部１３５ａが、アクセス履歴変更部１３５ｂに置き換わった構成になっている。図２２おいて、リプレースアルゴリズム部１２８ｂは、アクセス履歴設定部１４０と、アクセス履歴変更部１３９ｂと、選択信号出力部１４１と、制御線１４２とを有している。
【００４６】
図２２において、アクセス履歴変更部１３９ｂは、バリッドメモリＶ００、Ｖ０１、Ｖ１０、Ｖ１１、Ｖ２０、Ｖ２１、Ｖ３０、Ｖ３１のバリッドデータを参照し、その内容に応じて、アクセス履歴設定部１４０から出力される信号を強制的に反転する。図２２のアクセス履歴変更部１３９ｂは、４つのウェイ０〜３にそれぞれ対応した４つのカウンタ１７０〜１７３を有している。
【００４７】
カウンタ１７０は、ウェイ０に対応する２つのバリッドメモリＶ００、Ｖ０１のバリッドデータを参照して、ウェイ０に対応した２つの固定化レジスタＲ００、Ｒ０１の中で、バリッドデータが無効になっているものの数を計数する。カウンタ１７１は、ウェイ１に対応する２つのバリッドメモリＶ１０、Ｖ１１のバリッドデータを参照して、ウェイ１に対応した２つの固定化レジスタＲ１０、Ｒ１１の中で、バリッドデータが無効になっているものの数を計数する。カウンタ１７２は、ウェイ２に対応する２つのバリッドメモリＶ２０、Ｖ２１のバリッドデータを参照して、ウェイ２に対応した２つの固定化レジスタＲ２０、Ｒ２１の中で、バリッドデータが無効になっているものの数を計数する。カウンタ１７３は、ウェイ３に対応する２つのバリッドメモリＶ３０、Ｖ３１のバリッドデータを参照して、ウェイ３に対応した２つの固定化レジスタＲ３０、Ｒ３１の中で、バリッドデータが無効になっているものの数を計数する。
【００４８】
アクセス履歴変更部１３９ｂは、最も大きい値を示しているカウンタに対応するウェイのリプレース順位が最も高くなるように、アクセス履歴を変更する。最も大きい値を示しているカウンタが複数あった場合には、これらのカウンタに対応するウェイの中で、最も古くアクセスされたもののリプレース順位が最も高くなるように、アクセス履歴を変更する。ただし、全てのカウンタ１７０〜１７３がゼロを計数していた場合には、制御線１４２を介して、選択信号出力部１４１へ、いずれのウェイも選択しないことを通知する非選択信号を出力する。このとき、選択信号出力部１４１は、４つのウェイのいずれも選択しないように、強制的に”００００”を出力する。
【実施例３】
【００４９】
実施例３は、実施例２における固定化レジスタ部１２２ｂを、図２３に示す固定化レジスタ部１２２ｃに置き換えた例である。実施例３によれば、例えば、４ウェイセットアソシアティブ方式のキャッシュメモリにおいて、２ウェイのみをデータグループ指示対応ウェイにし、４データグループまでを登録可能にすることができる。
【００５０】
図２３は、固定化レジスタ部の構成例を示すブロック図である。図２３において、固定化レジスタ部１２２ｃは、８つの固定化レジスタＲ００、Ｒ０１、Ｒ１０、Ｒ１１、Ｒ２０、Ｒ２１、Ｒ３０、Ｒ３１を有している。さらに、固定化レジスタ部１２２ｃは、４つのウェイにそれぞれ対応した４つの使用禁止メモリＰ０〜Ｐ３を有している。４つの使用禁止メモリＰ０〜Ｐ３は、それぞれ使用禁止データを保持する。
【００５１】
使用禁止メモリＰ０の使用禁止データが使用禁止を示していたとき、ウェイ０に対応する固定化レジスタＲ００、Ｒ０１の使用が禁止される。このとき、ウェイ０にデータを固定することは行われない。使用禁止メモリＰ１の使用禁止データが使用禁止を示していたとき、ウェイ１に対応する固定化レジスタＲ１０、Ｒ１１の使用が禁止される。このとき、ウェイ１にデータを固定することは行われない。使用禁止メモリＰ２の使用禁止データが使用禁止を示していたとき、ウェイ２に対応する固定化レジスタＲ２０、Ｒ２１の使用が禁止される。使用禁止メモリＰ３の使用禁止データが使用禁止を示していたとき、ウェイ３に対応する固定化レジスタＲ３０、Ｒ３１の使用が禁止される。
【００５２】
ロード命令及びストア命令の命令仕様を更に変更するなどすれば、使用禁止メモリＰ０〜Ｐ３の制御は、プログラムから行うことができる。
【００５３】
実施例１〜３では、プロセッサが、主記憶装置にアクセスする場合を想定して説明を行ったが、本発明は、プロセッサが、主記憶装置以外の外部メモリにアクセスする場合にも適用できる。例えば、補助記憶装置からデータを読み込む場合及びデータを書き込む場合についても適用できる。また、プロセッサが外部メモリにアクセスするための命令として、ロード命令及びストア命令を例示して説明を行ったが、本発明は、ロード命令及びストア命令以外の外部メモリ・アクセス命令によってデータグループ番号を指示されるものであってもよい。
【００５４】
それから、リプレース論理回路１１２は、一般的にはハードウェアで作られているが、プログラムによって動作するものであってもよい。
【図面の簡単な説明】
【００５５】
【図１】図１は、ＨＰＣ分野で利用されるプログラムの例を示す図である。
【図２】図２は、ロード命令及びストア命令の命令仕様を示す図である。
【図３】図３は、実行ファイルの命令列を例示する図である。
【図４】図４は、実施例１における情報処理装置のブロック説明図である。
【図５】図５は、実施例１におけるプロセッサのブロック説明図である。
【図６】図６は、キャッシュメモリ１１０のブロック説明図である。
【図７】図７は、キャッシュミスヒットが生じた場合におけるキャッシュメモリ１１０の動作を説明する図である。
【図８】図８は、リプレース論理回路１１２のブロック説明図である。
【図９】図９は、固定化レジスタ部の構成例を示すブロック図である。
【図１０】図１０は、記憶済み確認部の構成例を示すブロック図である。
【図１１】図１１は、切替部１２６の構成例を示すブロック図である。
【図１２】図１２は、リプレースアルゴリズム部の構成例を示すブロック図である。
【図１３】図１３は、リプレースアルゴリズム部の具体例を示すブロック図である。
【図１４】図１４は、ウェイがリプレースされたときの固定化レジスタ部１２２ａの動作を説明する図である。
【図１５】図１５は、命令列が実行された後の固定化レジスタ部１２２ａの状態を示す図である。
【図１６】図１６は、命令列が実行された後のアドレスアレイ部２０の状態を示す図である。
【図１７】図１７は、更に後続する命令が実行された後のアドレスアレイ部２０の状態を示す図である。
【図１８】図１８は、ウェイ選択方法の前段を説明する流れ図である。
【図１９】図１９は、ウェイ選択方法の後段を説明する流れ図である。
【図２０】図２０は、固定化レジスタ部の構成例を示すブロック図である。
【図２１】図２１は、記憶済み確認部の構成例を示すブロック図である。
【図２２】図２２は、リプレースアルゴリズム部の構成例を示すブロック図である。
【図２３】図２３は、固定化レジスタ部の構成例を示すブロック図である。
【符号の説明】
【００５６】
１０  外部メモリ・アドレスレジスタ
１１  タグ
１２  セット番号
１３  オフセット
１４  デコーダ
２０  アドレスアレイ部
２１  データアレイ部
２２〜２５、１３０〜１３３、１５０〜１５７  比較器
２６、１３５〜１３８  セレクタ
１００  命令仕様
１０１〜１０４  命令
１０６  情報処理装置
１０７  プロセッサ
１０８  主記憶装置
１０９  プロセッサコア
１１０  キャッシュメモリ
１１１  受信レジスタ
１１２、１１２ａ  リプレース論理回路
１２０  設定レジスタ
１２２、１２２ａ、１２２ｂ、１２２ｃ  固定化レジスタ部
１２４、１２４ａ、１２４ｂ  記憶済み確認部
１２６  切替部
１２８、１２８ａ、１２８ｂ  リプレースアルゴリズム部
１３４、１６０〜１６４  オア回路
１３９  除外部
１３９ａ、１３９ｂ  アクセス履歴変更部
１４０  アクセス履歴設定部
１４１  選択信号出力部
１４２  制御線
１４３〜１４８  フリップフロップ回路
１７０〜１７３  カウンタ
【図１】
0005245349.tif 000002
【図２】
0005245349.tif 000003
【図３】
0005245349.tif 000004
【図４】
0005245349.tif 000005
【図５】
0005245349.tif 000006
【図６】
0005245349.tif 000007
【図７】
0005245349.tif 000008
【図８】
0005245349.tif 000009
【図９】
0005245349.tif 000010
【図１０】
0005245349.tif 000011
【図１１】
0005245349.tif 000012
【図１２】
0005245349.tif 000013
【図１３】
0005245349.tif 000014
【図１４】
0005245349.tif 000015
【図１５】
0005245349.tif 000016
【図１６】
0005245349.tif 000017
【図１７】
0005245349.tif 000018
【図１８】
0005245349.tif 000019
【図１９】
0005245349.tif 000020
【図２０】
0005245349.tif 000021
【図２１】
0005245349.tif 000022
【図２２】
0005245349.tif 000023
【図２３】
0005245349.tif 000024