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