(57)【特許請求の範囲】
【請求項１】
メインメモリとのデータの一貫性を要求するデータを格納可能なデータ格納部を備えたキャッシュメモリにおいて、
前記データ格納部のうちプログラマにより指定されたデータ領域に、前記メインメモリとのデータの一貫性を要求しないデータを格納する制御を行う格納制御部を備え、
前記メインメモリ及び前記キャッシュメモリが共通のシステムバスに接続されるルック・アサイド（Ｌｏｏｋ−Ａｓｉｄｅ）型接続方式で、かつＣＰＵが前記メインメモリ及び前記キャッシュメモリに同時にデータを書き込むライト・スルー（Ｗｒｉｔｅ−ｔｈｒｏｕｇｈ）書き込み方式を採用することを特徴とするキャッシュメモリ。
【請求項２】
メインメモリと、メインメモリとのデータの一貫性を要求するデータを格納可能なデータ格納部を備えたキャッシュメモリとが共通のシステムバスに接続されるルック・アサイド（Ｌｏｏｋ−Ａｓｉｄｅ）型接続方式で、かつ前記メインメモリ及び前記キャッシュメモリに同時にデータを書き込むライト・スルー（Ｗｒｉｔｅ−ｔｈｒｏｕｇｈ）書き込み方式を採用するプロセッサであって、
前記キャッシュメモリは、
前記データ格納部のうち、プログラマにより指定されたデータ領域に、前記メインメモリとのデータの一貫性を要求しないデータを格納する制御を行う格納制御部を備えることを特徴とするプロセッサ。
【請求項３】
メインメモリと、メインメモリとのデータの一貫性を要求するデータを格納可能なデータ格納部を備えたキャッシュメモリとが共通のシステムバスに接続されるルック・アサイド（Ｌｏｏｋ−Ａｓｉｄｅ）型接続方式で、かつ前記メインメモリ及び前記キャッシュメモリに同時にデータを書き込むライト・スルー（Ｗｒｉｔｅ−ｔｈｒｏｕｇｈ）書き込み方式を採用するキャッシュ制御方法であって、
前記データ格納部のうち、プログラマにより指定されたデータ領域に、前記メインメモリとのデータの一貫性を要求しないデータを格納する制御を行うことを特徴とするキャッシュ制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、キャッシュメモリと、このキャッシュメモリを内蔵するプロセッサと、キャッシュメモリのキャッシュ制御方法とに関する。
【０００２】
【従来の技術】
ＣＰＵの動作速度は、年々高くなる傾向にあるが、メモリはＣＰＵほどには高速動作できないため、両者の速度差を埋めるために、キャッシュメモリを設けるのが一般的である。
【０００３】
キャッシュメモリには、原則として、メインメモリに格納された、あるいは格納されるべきデータの一部が格納され、キャッシュメモリ内のデータは、メインメモリ内のデータと一貫性が維持される。したがって、キャッシュメモリに格納されたデータで、まだメインメモリに格納していないデータは、キャッシュメモリを更新する前に、メインメモリへの書き戻しを行わなければならない。
【０００４】
【発明が解決しようとする課題】
通常のキャッシュメモリは、複数のインデックスを持つウェイを複数並列に並べて構成されている。
【０００５】
キャッシュメモリは、メインメモリよりも高速のメモリであるが、ＣＰＵが実行するプログラムによっては、キャッシュミスが起こる確率が非常に高くなる。特に、ウェイの数よりも多くの異なるアドレスに対して連続的にアクセスする場合、キャッシュミスが連続的に起こることになり、メモリアクセスに余計な時間がかかってしまう。
【０００６】
このように、プログラムによっては、キャッシュメモリの高速性能が生かされないおそれがある。
【０００７】
本発明は、このような点に鑑みてなされたものであり、その目的は、メインメモリとのデータの一貫性を維持するという目的以外の目的でも利用可能なキャッシュメモリ、この種のキャッシュメモリを内蔵するプロセッサ及びキャッシュ制御方法を提供することにある。
【０００８】
【課題を解決するための手段】
本発明の一態様によれば、メインメモリとのデータの一貫性を要求するデータを格納可能なデータ格納部を備えたキャッシュメモリにおいて、前記データ格納部のうちプログラマにより指定されたデータ領域に、前記メインメモリとのデータの一貫性を要求しないデータを格納する制御を行う格納制御部を備え、前記メインメモリ及び前記キャッシュメモリが共通のシステムバスに接続されるルック・アサイド（Ｌｏｏｋ−Ａｓｉｄｅ）型接続方式で、かつＣＰＵが前記メインメモリ及び前記キャッシュメモリに同時にデータを書き込むライト・スルー（Ｗｒｉｔｅ−ｔｈｒｏｕｇｈ）書き込み方式を採用することを特徴とするキャッシュメモリが提供される。
【０００９】
【発明の実施の形態】
以下、本発明に係るキャッシュメモリ、プロセッサ及びキャッシュ制御方法について、図面を参照しながら具体的に説明する。
【００１０】
図１は本発明に係るキャッシュメモリ２１の一実施形態の内部構成を示すブロック図である。図１のキャッシュメモリ２１は、アドレスの中位ビット列（インデックス）でキャッシュラインの置き換え候補が一意に決まる図２のようなダイレクトマップキャッシュを複数並列に並べ、複数（ｎ個のウェイ数分）の置き換え候補を有する図３のようなn-Wayセット・アソシアティブ・キャッシュである。
【００１１】
図２及び図３の升目の一つ一つがキャッシュラインに相当し、あるアドレスが指定されると、そのアドレスの中位ビット列（インデックス）に対応するｎ個のウェイそれぞれのキャッシュラインがアクセスの候補となる。キャッシュメモリ２１は、インデックスを単位としてアクセスされる。
【００１２】
本実施形態のキャッシュメモリ２１のデータ容量は、キャッシュラインのサイズ×インデックス数×ウェイ数で表される。
【００１３】
図１のキャッシュメモリ２１は、大きく分けて、データを格納するデータメモリ1と、各データのアドレス情報を格納するタグメモリ２と、キャッシュメモリ２１にヒットしたか否かを判定するキャッシュ制御部３とを備えている。
【００１４】
タグメモリ２は、各ウェイごとに設けられて対応するPFNをそれぞれ格納する複数のPFN部４と、キャッシュメモリ２１のリフィル情報を格納するリフィル情報格納部５とを有する。リフィル情報格納部５は、例えば各インデックスごとに設けられる。
【００１５】
ここで、リフィル情報とは、過去にどのような順番で各ウェイのリフィルが発生したかを示す情報である。例えば、２つのウェイが存在する場合、最近リフィルされたウェイが０であれば、リフィル情報格納部５に０を格納し、最近リフィルされたウェイが１であれば、リフィル情報格納部５に１を格納するものとする（ただし、これは一例にすぎない）。
【００１６】
この状態で、あるインデックスによるキャッシュアクセスがミスして、リフィルが発生したとし、そのインデックスに対応するリフィル情報格納部５が０であったとする。この場合、次のリフィル時には、ウェイ１を置き換えるとともに、リフィル情報格納部５に１を格納する。
【００１７】
このようにすれば、その後に、同じインデックスについてのリフィルが発生したときに、リフィル情報格納部５に１が格納されているので、リフィルを行ってからの経過時間が長いウェイ０を置き換えることになる。
【００１８】
なお、リフィル情報格納部５は、インデックスごとに設けてもよいし、PFN部４ごとに設けてもよい。
【００１９】
複数のPFN部４のそれぞれはインデックスで指定される複数の領域を有し、これら各領域には、アドレスの上位アドレス（PFN）が格納される。
【００２０】
タグメモリ２は、図１に示した構成以外に、キャッシュラインが有効であることを示すValidビットなどの種々のフラグを有するが、本実施形態の動作に直接関係しないため、説明を省略する。
【００２１】
また、図１では、データメモリ1の内部構成を省略しているが、データメモリ1も、タグメモリ２と同様に、複数のインデックスからなるウェイを複数並列に並べて構成されている。
【００２２】
キャッシュ制御部３は、ヒット検出器＆エンコーダ６と、固定アドレスメモリ指定部７と、リフィル対象生成器８とを有する。
【００２３】
ヒット検出器＆エンコーダ６は、指定されたアドレスのPFNが、同アドレスのインデックスに対応する各PFN部４内のPFNと一致するか否かを判定し、一致（ヒット）したPFN部４を特定する。固定アドレスメモリ指定部７は、キャッシュメモリ２１の一部を、メインメモリとのデータの一貫性を要求しない固定アドレスメモリとして使用する場合に、固定アドレスメモリとして使用するアドレス（以下、固定アドレスと呼ぶ）を指定するとともに、外部から指定されたアドレスが固定アドレスと一致するか否かを判定する。
【００２４】
固定アドレスメモリ指定部７は、より詳細には、固定アドレスを格納する固定アドレス格納部９と、固定アドレスを格納したか否かを示すフラグ情報を格納する固定アドレスフラグ格納部１０と、PFN部４に格納されたPFNと固定アドレスとのいずれか一方を選択するマルチプレクサ１１とを、各ウェイごとに有する。
【００２５】
固定アドレス格納部９と固定アドレスフラグ格納部１０は、後述するように、プログラムに記述されたストア命令で指定された値を格納する。したがって、固定アドレス格納部９と固定アドレスフラグ格納部１０に格納される値は、プログラマが任意に指定可能である。
【００２６】
固定アドレスメモリは、メインメモリやＩ／Ｏデバイス用に現実に割り当てられているアドレス範囲とは別個のアドレス範囲に割り当てられる。このように割り当てられたアドレス範囲内の任意のアドレスをプログラマは指定できる。
【００２７】
リフィル対象生成器８は、リフィル情報格納部５に格納されているリフィル情報と固定アドレスフラグ格納部１０に格納されているフラグ情報とをパラメータとする関数f(R,C)に従って、キャッシュすべきウェイを選択する。関数f(R,C)の具体的な形式は特に問わないが、例えば、最後にリフィルを行ってからの経過時間が最も長いウェイを選択するようにしてもよい。
【００２８】
キャッシュメモリ２１の接続方式として、Look-Aside型とLook-through型がある。Look-Aside型は、図４に示すように、キャッシュメモリ２１とメインメモリ１２がともに直接システムバスに接続されている方式である。一方、Look-through型は、図５に示すように、ＣＰＵ１３−キャッシュメモリ２１間、及びキャッシュメモリ２１−メインメモリ１２間がそれぞれ専用のバスを持つ方式である。
【００２９】
また、キャッシュメモリ２１の書き込み方式として、Write-through書き込み方式とWrite-back書き込み方式とがある。Write-through書き込み方式は、キャッシュメモリ２１に対してデータを書き込む際に、同時にメインメモリ１２にもデータを書き込む方式である。一方、Write-back書き込み方式は、メインメモリ１２よりも先にキャッシュメモリ２１にデータを書き込み、データを書き込んだキャッシュラインを書き換えるときにメインメモリ１２への書き戻しを行う方式である。
【００３０】
本実施形態は、Look-Aside型の接続方式とWrite-through書き込み方式とを組み合わせたキャッシュメモリ２１を用いる。これにより、メインメモリ１２とキャッシュメモリ２１との間でデータの一貫性を維持でき、キャッシュメモリ２１内の一部のウェイを固定アドレスメモリとして利用しても、データの一貫性が崩れるおそれはない。
【００３１】
図６は本実施形態のキャッシュメモリ２１の一部を固定アドレスメモリとして使用するプログラムの一例を示す図である。図６の例では、ラインサイズが６４バイトで、ウェイ数が４で、インデックス数が1024の例を示している。図示された特定のメモリアドレスR0〜R3はそれぞれ対応するウェイの固定アドレス格納部９と固定アドレスフラグ格納部１０にデータを設定するために用いられる。例えば、メモリアドレスR0に0x20000001を設定すると、上位16ビット「2000」が固定アドレス格納部９に格納され、最下位ビット「１」が固定アドレスフラグ格納部１０に設定される。
【００３２】
まず、ステップＳ１では、0x60000001をレジスタrAにロードする。次に、ステップＳ２では、メモリアドレスR0にレジスタrAの内容をストアする。このメモリアドレスR0にデータを格納することにより、図１のウェイ０の固定アドレス格納部９と固定アドレスフラグ格納部１０にそれぞれ対応する値が格納される。したがって、ステップＳ２を実行した時点で、固定アドレス格納部９には、0x60000001のPFNである6000が格納され、固定アドレスフラグ格納部１０には、最下位ビット「１」が格納される。
【００３３】
これらステップＳ１，Ｓ２の処理を実行することにより、0x60000000以降が固定アドレスメモリとして利用されることが指定される。
【００３４】
固定アドレスメモリとして利用する場合、まず、該当アドレスの初期化が行われる。まず、ステップＳ３では、レジスタrAに0x60000000をロードする。次に、ステップＳ４では、レジスタrAが示すアドレスに、レジスタr0が示す初期値をストアする。
【００３５】
次に、ステップＳ５では、レジスタrAの値を４バイト分インクリメントする。次に、ステップＳ６では、繰返し数をカウントするレジスタRcの値を１だけデクリメントする。次に、ステップＳ７では、レジスタRcが示す値がゼロになるまで、ステップＳ４〜Ｓ７の処理を繰り返す。
【００３６】
上記のステップＳ３〜Ｓ７の処理により、固定アドレスメモリとして使用する範囲を初期化することができる。
【００３７】
このように、本実施形態では、プログラマの任意の指定により、キャッシュメモリ２１をウェイ単位で固定アドレスメモリとして使用できるようにしたため、キャッシュメモリ２１の一部を、メインメモリとのデータの一貫性を要求しない高速メモリとして利用できる。
【００３８】
また、本実施形態では、Look-Aside型の接続方式とWrite-through書き込み方式とを組み合わせたキャッシュメモリ２１を用いるため、キャッシュメモリ２１の一部を固定アドレスメモリとして用いても、メインメモリとのデータの一貫性が損なわれるおそれはない。
【００３９】
上述したキャッシュメモリ２１は、プロセッサに内蔵されてもよいし、プロセッサとは別個に設けてもよいし、キャッシュメモリ２１の一部（例えば、タグメモリ２とキャッシュ制御部３）のみをプロセッサに内蔵してもよい。
【００４０】
また、図６に示した命令列は一例であり、本発明は、RISC型やCISC型等の種々のプロセッサに適用可能である。
【００４１】
また、図１に示したキャッシュ制御部３は、ソフトウェアにより実現してもよい。
【００４２】
【発明の効果】
以上詳細に説明したように、本発明によれば、データ格納部のうちプログラマにより指定されたデータ領域に、メインメモリとのデータの一貫性を要求しないデータを格納できるようにしたため、キャッシュヒット／ミスにかかわらず、常に高速アクセス可能なメモリとしてキャッシュメモリを利用できる。
【図面の簡単な説明】
【図１】本発明に係るキャッシュメモリ２１の一実施形態の内部構成を示すブロック図。
【図２】ダイレクトマップキャッシュを説明する図。
【図３】  n-Wayセット・アソシアティブ・キャッシュを説明する図。
【図４】キャッシュメモリの接続方式を説明する図。
【図５】キャッシュメモリの書き込み方式を説明する図。
【図６】本実施形態のキャッシュメモリ２１の一部を固定アドレスメモリとして使用するプログラムの一例を示す図。
【符号の説明】
１  データメモリ
２  タグメモリ
３  キャッシュ制御部
４  PFN部
５  リフィル情報格納部
６  ヒット検出器＆エンコーダ
７  固定アドレスメモリ指定部
８  リフィル対象生成器
９  固定アドレス格納部
１０  固定アドレスフラグ格納部
１１  マルチプレクサ
２１  キャッシュメモリ
【図１】
0003929872.tif 000002
【図２】
0003929872.tif 000003
【図３】
0003929872.tif 000004
【図４】
0003929872.tif 000005
【図５】
0003929872.tif 000006
【図６】
0003929872.tif 000007