説明

キャッシュメモリ、キャッシュメモリシステム

【課題】よりキャッシュヒット率を向上させたキャッシュメモリを提供する。
【解決手段】キャッシュメモリ6は、4つのワード(Word0,Word1,Word2,Word3)を含むラインを有するデータ格納部16と、各ラインを識別するタグを格納するタグ格納部14を備える。タグ格納部は、ラインがリフィル中であるか否かを示すリフィルビット(R)と、ワード毎にワードにおけるデータがダーティであるか否かを示すダーティビット(D0,D1,D2,D3)と、ラインに格納されたデータの主記憶におけるアドレスを示すタグビット(Tag)を格納している。ヒット判定器20は、リードアクセス対象のタグアドレス(AD[31:16])とタグビット(Tag)に示されるアドレスとが一致し、リードアクセス対象に係るラインに対応するリフィルビット(R)がリフィル中を示し、かつ、当該ラインに含まれリードアクセス対象に係るワードに対応するダーティビットがダーティを示していれば、リードヒットと判定する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ライトバック方式のキャッシュメモリに関する。
【背景技術】
【0002】
ライトバック方式とは、キャッシュメモリへのデータ書き込み時に、基本的にキャッシュメモリに対してのみ書き込み、主記憶へは同時には書き込まずに、後で適宜書き戻す方式である。
ライトバック方式では、キャッシュメモリと主記憶とへの書き込みタイミングにズレが生じるので、両者が保持しているデータの整合性を管理するためのDirty/Cleanフラグが設けられている。Dirty(ダーティ)は、キャッシュメモリに保持されているデータが更新されるなどして、主記憶上のデータとの一致が保証できない場合を示し、Clean(クリーン)は、その逆を示す。Dirty/Cleanフラグにより、対象のデータがDirtyかCleanかを判断することができる。Dirtyなデータは、適当なタイミングで主記憶に書き戻し、その整合性をとる必要がある。
【0003】
このようなDirty/Cleanフラグは、ライン(数ワードから構成される)単位で管理することが一般的である。もっとも、ライン単位であると、ラインに含まれる数ワードのうちの、どのワードがDirtyかまでは不明なので無用な書き戻しが行われることがある。
そこで、特許文献1では、ラインより細かい単位(例えば、ワード単位)でDirty/Cleanの別を管理することで、必要なデータのみの書き戻しを可能にし、不要なバス・トランザクションの低減が図れるとしている。なお、他に特許文献2〜4の技術が知られている。
【特許文献1】特開2003-108439号公報
【特許文献2】特開2006-91995号公報
【特許文献3】特開平8-16467号公報
【特許文献4】特開平8-221270号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
低速な主記憶へアクセスする代わりに、高速なキャッシュメモリ上の対応するデータにアクセスすることで、一般にキャッシュヒット率が向上する。キャッシュヒット率が向上することで、計算機システム全体の性能を向上することができる。
キャッシュメモリにおいては、キャッシュミス時などには、ラインのデータを入れ換えるリフィルという処理を行う。このリフィルの最中であっても、キャッシュヒット扱いしてアクセスを許可しても問題がない場合も潜在している。しかしながら、前記従来の技術では、リフィルの最中においては、リフィル中のラインへのアクセスはキャッシュミスと扱っており、主記憶へアクセスをする必要があるという課題を有している。
【0005】
このような背景のもとで、本発明は、よりキャッシュヒット率を向上させたキャッシュメモリを提供することを目的としている。
【課題を解決するための手段】
【0006】
本発明に係るキャッシュメモリは、それぞれ複数のワードを含む複数のラインと、前記ラインに格納されたデータの主記憶におけるアドレスを示すタグと、前記ライン毎にラインがリフィル中であるか否かを示すリフィルビットと、前記ワード毎にワードにおけるデータがダーティであるか否かを示すダーティビットとを格納するタグ格納部と、リードアクセス対象のタグアドレスと、前記タグに示されるアドレスとが一致し、リードアクセス対象に係るラインに対応するリフィルビットがリフィル中を示し、かつ、当該ラインに含まれリードアクセス対象に係るワードに対応するダーティビットがダーティを示していれば、リードヒットと判定するヒット判定手段とを備えることを特徴としている。
【0007】
また、前記ヒット判定手段は、ライトアクセス対象に係るラインのアドレスと、前記タグに示されるアドレスが一致するラインであって、当該ラインに対応するリフィルビットがリフィル中であることを示す場合には、ライトヒットと判定するとしても構わない。
また、前記ヒット判定手段は、当該ワードに対応するダーティビットがダーティを示していなければ、リードミスヒットと判定するとしても構わない。
【0008】
また、本発明に係るキャッシュメモリは、それぞれ複数のワードを含む複数のラインと、前記ラインに格納されたデータの主記憶におけるアドレスを示すタグと、前記ライン毎にラインがリフィル中であるか否かを示すリフィルビットと、前記ワード毎にワードにおけるデータがダーティであるか否かを示すダーティビットとを格納するタグ格納部と、ライトアクセス対象のタグアドレスと、前記タグに示されるアドレスとが一致し、当該ラインに対応するリフィルビットがリフィル中であることを示す場合には、ライトヒットと判定するヒット判定手段とを備えることを特徴とする。
【0009】
さらに、前記ヒット判定手段によりライトヒットと判定された場合に、前記ライトアクセスに係るワードへの書き込みがあると、当該ワードに対応するダーティビットをアサートし、ラインのリフィルに際して、ダーティビットがダーティであることを示さないワードに対してはデータの上書きを許可し、前記アサートによりダーティであることを示すワードに対してはデータの上書きを禁止する制御手段を備えるとしても構わない。
【0010】
また、本発明に係るキャッシュメモリシステムは、中央処理装置と、前記キャッシュメモリと、前記中央処理装置と前記キャッシュメモリと記憶階層において間の階層に位置し、前記中央処理装置が前記キャッシュメモリへとライトすべきデータを保持する第1ライトバッファと、前記キャッシュメモリとライトバック対象となるメモリと記憶階層において間の階層に位置し、前記キャッシュメモリから前記ライトバック対象となるメモリへとライトバックすべきデータを保持する第2ライトバッファと、前記キャッシュメモリと前記ライトバック対象となるメモリと記憶階層において間の階層に位置し、前記キャッシュメモリがリードすべきデータを保持するリードバッファとを備えることを特徴とする。
【発明の効果】
【0011】
本発明に係るキャッシュメモリは、従来はリフィル中であるとリードミスヒットと判定していたのに対して、ラインがリフィル中という状況下においても、ヒット判定手段は、そのラインに含まれるワードに対応するダーティビットがダーティを示していれば、リードヒットと判定する。
この構成によれば、リードアクセス対象に係るラインがリフィル中という状況下においても、ヒット判定手段は、リードヒットと判定するので、キャッシュリードミスを減らし、キャッシュリードヒット率を向上できる。これにより、キャッシュリードミスに起因する計算機のオーバーヘッドを軽減することができる。
【0012】
また、本発明に係るキャッシュメモリは、それぞれ複数のワードを含む複数のラインと、前記ラインに格納されたデータの主記憶におけるアドレスを示すタグと、前記ライン毎にラインがリフィル中であるか否かを示すリフィルビットと、前記ワード毎にワードにおけるデータがダーティであるか否かを示すダーティビットとを格納するタグ格納部と、ライトアクセス対象のタグアドレスと、前記タグに示されるアドレスとが一致し、当該ラインに対応するリフィルビットがリフィル中であることを示す場合には、ライトヒットと判定するヒット判定手段とを備えることを特徴とするとしている。
【0013】
この構成によれば、ライトアクセス対象に係るラインがリフィル中という状況下においても、ヒット判定手段は、ライトヒットと判定するので、キャッシュライトヒット率を向上できる。
【発明を実施するための最良の形態】
【0014】
以下、図面を用いて本発明の実施の形態について説明する。また、本実施の形態におけるライトバック方式のキャッシュメモリは、ダイレクトマップ方式を採用しており、キャッシュのライトミス時には、ライトアロケート方式(先に新しいラインをキャッシュメモリに書き込み、その後で書き込みヒット時の動作を行う方式である。)で処理を行うとして説明する。
【0015】
図1は、キャッシュメモリシステム1の構成図である。
キャッシュメモリシステム1は、CPU2、主記憶4、キャッシュメモリ6、ライトバッファ8,10、リードバッファ12を含んで構成している。
CPU2は、各種演算処理を行う中央処理装置である。
主記憶4は、DRAMなどデータを一時記憶する揮発性メモリから構成される。
【0016】
キャッシュメモリ6は、主記憶4に格納すべきデータを一時的に格納する。主記憶4よりアクセス速度が速く、記憶階層の構造上、上位のCPU2と下位の主記憶4との間に介在している。キャッシュメモリ6はライトバック方式であり、キャッシュミス発生時などを契機として保持しているデータを主記憶4へと書き戻す。
キャッシュメモリ6は、制御部6a、格納部6b、ヒット判定部6c、調停部6dを備える。
【0017】
制御部(キャッシュメモリ制御部)6aは、各機能ブロックを制御し、例えば格納部6bに格納されたデータの読み書きやタグの更新を行う。また、ヒット判定部6cのヒット判定結果に応じてCPU2にデータを出力する。
格納部6bは、データを格納するデータ格納部と、格納されたデータを識別する情報としてのタグを含むタグ格納部とから構成される。
【0018】
ヒット判定部6cは、CPU2からのアクセス対象となったデータが、格納部6bに格納されているかどうかのヒット判定を行う。詳しくは後述する。
調停部6dは、格納部6b内のデータ格納部へのデータへのアクセスが競合する場合などに調停する。
図2は、キャッシュメモリ6の構成を示す図である。
【0019】
図2上部のアドレス22は、CPU2がキャッシュメモリ6へとアクセスを試みる際に、CPU2からリード/ライト要求とともに出力されるアドレスを示している。
アドレス(AD[31:0])22は、32ビットであり、上位16ビット(AD[31:16])をタグアドレスとして、ビット4からビット15の12ビット(AD[15:4])をインデックスアドレスとして、ビット2からビット3の2ビット(AD[3:2])をラインに含まれるワードを特定するワードアドレスとして利用する。なお、インデックスアドレスは12ビットであるので、4096(=2^12)本のラインを指定することができる。このインデックスアドレスによりアクセス対象のラインが一意に特定されることとなる。
【0020】
キャッシュメモリ6は、タグ格納部14、データ格納部16、セレクタ18、ヒット判定器20を含む。
タグ格納部14は、データ格納部16における4096本のラインに対応して設けられており、ラインに格納されたデータなどの識別情報を格納している。
具体的には、タグ格納部14は、ラインのデータが有効であるか否かを示すバリッドビット(V)、ラインがリフィル中であるか否かを示すリフィルビット(R)、ラインに格納されたデータの主記憶におけるアドレスを示すタグビット(Tag)を有する。
【0021】
これに加えて、タグ格納部14は、ラインに含まれる4つのワード(Word0,Word1,Word2,Word3)に対応してそれぞれ設けられた4つのダーティビット(D0,D1,D2,D3)を含んでいる。ダーティビットがダーティならば、対応するワードは、更新されたが主記憶には未だ書き戻されていない状態であることを意味しているので、適宜、主記憶に書き戻す必要がある。
【0022】
データ格納部16は、4つのワードを1ラインとした4096本のラインを保持している。データ格納部16は、タグ格納部14とは別個のメモリとしてSRAMなどにより構成される。なお、1ワードあたりのサイズは、CPU2からのアクセスのビット幅に対応して32ビットであり、データ格納部16の入出力ポートのビット幅も32ビット(1ワード分)である。
【0023】
セレクタ18は、アドレス22の2ビット(AD[3:2])に基づいて、4つのワードのうちの1つのワードを選択する。
ヒット判定器20には、リードかライトを示す信号(Read or Write)、タグアドレス(AD[31:16])、インデックスアドレス(AD[15:4])により特定されたラインのバリッドビット(V)、リフィルビット(R)、4つのワード毎のダーティビット(D0,D1,D2,D3)、上記ラインに格納されたデータのアドレスを示すタグビット(Tag)、4つのワードのうちの1つを特定するワードアドレス(AD[3:2])、の10個の入力に基づいてヒットかミスヒットかを判定する。
【0024】
ヒット判定器20の回路構成例を図3に示す。
ヒット判定器20は、2入力1出力のAND回路23,24,26,28,30、3入力1出力のOR回路32、NOT回路34,36、4入力1出力のセレクタ38、コンパレータ40を備える。
セレクタ38は、2ビット(AD[3:2])の入力に基づいて、D0,D1,D2,D3の4つのうちの1つを選択して出力する。すなわち、ラインに含まれるアクセス対象のワードを特定する入力(AD[3:2])に基づいて、そのワードに対応するダーティビットを出力することとなる。
【0025】
コンパレータ40は、タグビット(Tag)と、タグアドレス(AD[31:16])とを比較し一致した場合にHIGH出力となる。
図4は、図3のヒット判定器20が入力に応じて出力する判定結果を示す表50である。
入力される値の組み合わせに応じて(a)から(h)までの8つの場合がある。各場合について順に説明する。なお、リフィル中でない(a)、(b)、(d)、(e)、(f)、(h)の場合のヒット判定は基本的には従来と同様である。リフィル中の(c)、(g)の場合が特徴的である。
【0026】
(a)の場合・・・ライトアクセス対象のデータのアドレス22に含まれるタグアドレス(AD[31:16])とタグビット(Tag)とが一致し、リフィル中で無く(R=0)、バリッドビットが有効(V=1)な場合であり、ライトヒットとなる。そして、キャッシュメモリ6は、ワードアドレス(AD[3:2])に示されるワードに書き込み、同時に書き込んだワードに対応するダーティビットをアサートする。
【0027】
(b)の場合・・・バリッドビットが無効(V=0)であるところだけが(a)と異なる場合であり、V=0でデータが無効であるので、ライトミスとなる。
ここで、ライトミスヒットしたデータは、一旦ライトバッファ8に保持し、リフィルの完了を待ってキャッシュメモリ6へと書き込むこととなる。特に本実施の形態では、ライトミスヒットしたデータはキャッシュメモリ6にライトしておく。ライト時には、ライトしたワード毎のダーティビットをダーティに更新し、タグビット(Tag)をライトミスヒットしたアクセスのアドレスに更新する。これに先立って、ライトアクセス対象のラインをリフィルするために、主記憶4へのバスにデータリード要求とアドレスとを出力する。なお、このとき、リードバッファ12に空きが無い場合には、空くまでリード要求の出力を待つか、リードデータが主記憶4から返ってくるよりも以前にリードバッファ12が空くことが確定できるまでリード要求の出力を待つ。
【0028】
(c)の場合・・・ライトアクセス対象のデータのタグビット(Tag)とタグアドレス(AD[31:16])とが一致し、リフィル中(R=1)の場合であり、ライトヒットとなる。そして、キャッシュメモリ6は、ワードアドレス(AD[3:2])に示されるワードに書き込み、書き込んだワードに対応するダーティビットをアサートする。
(d)の場合・・・リードアクセス対象のデータのタグビット(Tag)とタグアドレス(AD[31:16])とが一致し、リフィル中で無く(R=0)、バリッドビットが有効(V=1)な場合であり、リードヒットとなる。CPU2はワードアドレス(AD[3:2])に示されるワードのデータを読み出すこととなる。
【0029】
(e)の場合・・・バリッドビットは無効(V=0)であるところだけが(d)と異なる場合であり、V=0でデータが無効であるので、リードミスとなる。
(f)の場合・・・リードアクセス対象のデータのタグビット(Tag)とタグアドレス(AD[31:16])とが一致し、リフィル中(R=1)であり、ワードアドレス(AD[3:2])に示されるワード(図4ではW0)に対応するダーティビット(図4ではD0)がダーティではない(クリーンである)場合である。この場合は、ミスヒットとなり、キャッシュメモリ6の制御部6aは、リフィル中である旨をCPU2に通知する。CPU2は通知がリフィル中で無くなるまで待機(リフィル完了まで待機)し、リフィル完了後にリードヒットとしてリードヒット時の動作(リフィル済のリードアクセス対象のデータを読み出す)をするか、このミスヒットしたリードアクセスが完了しなくとも進められる後続の処理に移ることとなる。
【0030】
(g)の場合・・・リードアクセス対象のデータのタグビット(Tag)とタグアドレス(AD[31:16])とが一致し、リフィル中(R=1)であり、ワードアドレス(AD[3:2])に示されるワード(図4ではW2)に対応するダーティビット(図4ではD2)がダーティな場合である。この場合は、リードヒットとなり、CPU2は、ワードアドレス(AD[3:2])に示されるワードのデータを読み出す。
【0031】
(h)の場合・・・タグビット(Tag)とタグアドレス(AD[31:16])とが一致していない場合である。これは、アクセス対象のデータのアドレスとデータ格納部に実際に格納されているデータのアドレスとが異なることを意味するので、他の条件を判断するまでもなく、ライト・リードに関わらずミスヒットとなる。
以上説明したように、ヒット判定器20は、(g)の場合のように、リフィル中であったとしても、リードアクセス対象のワードに対応するダーティビットがダーティであればリードヒットとして判定するので、従来よりリードヒット率を向上させることができる。
【0032】
また、ヒット判定器20は、(c)の場合のように、リフィル中であったとしても、ライトヒットとして判定するので、従来よりライトヒット率を向上させることができる。
次に、CPU2、キャッシュメモリ6、主記憶4の処理の流れについて、ライトアクセス時とリードアクセス時を分けて順に説明する。
図5は、ライトアクセス時におけるCPU2、キャッシュメモリ6、主記憶4のシーケンス図である。なお、初期状態において、ライトアクセス要求の対象となるラインはリフィル中でない(R=0)として説明する。
【0033】
CPU2がライトアクセス要求するデータは、一旦ライトバッファ8で保持する。そして、ライトバッファ8は、キャッシュメモリへのライトアクセス要求とともに、データとこのデータのアドレス(AD[31:0])22とをキャッシュメモリ6へと送る(S0)。
ライトアクセス要求を受けたキャッシュメモリ6のヒット判定器20は、前述のようにライトバッファ8から送られたデータのアドレス(AD[31:0])22のタグアドレス(AD[31:16])とライトアクセス要求の対象となったデータのラインのタグビット(Tag)との比較や、ラインのリフィルビット(R)などに基づいて、ヒット判定を行う。
【0034】
ライトヒットと判定すれば(S1:Yes)、ライトアクセス要求の対象となるラインのワードにデータを書き込み、必要に応じてそのワードに対応するダーティビットをアサートする(S11)。
ライトミスと判定すれば(S1:No)、キャッシュメモリ6は、ラインのリフィルビットをアサートし(S2:R=1)、ライトバック処理(S3-S8)に移行する。この時、ライトミスしたライトアクセス要求のタグアドレス(AD[31:16])で、タグビット(Tag)を更新する。
【0035】
ライトバック処理(S3-S8)では、バリッドビットが無効であれば(S3:No,V=0)、ラインが無効であり書き戻すべきデータが無いので処理を終える。
バリッドビットが有効であれば(S3:Yes,V=1)、ライン中のワードにおいて、ワードに対応するダーティビットがダーティ(D=1)なワードだけをライトバッファ10に書き戻す(S4,S5)。書き戻しを終えたワードに対応するダーティビットはクリーン(D=0)にネゲートする(S6)。
【0036】
なお、ライトバッファ10に書き戻されたデータは、バスが空いているときなど適当なタイミングで主記憶4へとさらにライトバックされることとなる。
ラインに含まれる4つのワードについてS4からS6までの処理を終えると(S7:Yes)、ラインのバリッドビットを無効化(S8:V=0)する。
ライトバック処理(S3-S8)を終えると、キャッシュメモリ6は、リフィル・タグ更新を行う(S9)。具体的には、リードバッファ12が主記憶4から読み出し済みのライトアクセス対象のラインのデータを、キャッシュメモリ6のラインに上書きする。
【0037】
このリフィルでは、D=0のワードのみ上書きし、書き戻しされていないワードの上書きを回避する。
キャッシュメモリ6は、リードバッファ12からの読み込みを完了すると(S9)、ラインを有効化し(S10:V=1)、リフィルビットをネゲート(S10:R=0)して一連のリフィルを終了する。
【0038】
なお、図5のフローでは、まず先にライトバック処理(S3-S8)を行い、その後でリフィルの処理を行う(S9)として説明したが、両処理はこれに限らず並行して行っても構わない。
図6は、リードアクセス時におけるCPU2、キャッシュメモリ6、主記憶4のシーケンス図である。なお、初期状態において、リードアクセス要求の対象となるラインはリフィル中でない(R=0)として説明する。
【0039】
CPU2がキャッシュメモリ6にリードアクセスを要求すると(S20)、要求を受けたキャッシュメモリ6はヒット判定器20において前述のヒット判定を行う。
リードヒットと判定すれば(S21:Yes)、CPU2は、リードアクセス要求の対象となるラインのワードからデータを読み出す。
リードミスヒットと判定すれば(S21:No)、S2からS10までのリフィル処理に移行する。この処理は図5を用いて既に説明したものと同様であるので説明を省略する。
【0040】
次に、キャッシュメモリ6のあるラインがリフィル中の場合に、このライン中のワードへのライト/リードアクセスがあったときの例について説明する。
図7は、あるラインのワード(W0,W1,W2,W3)のリフィルを時系列上で説明する図である。(a)を用いてライトアクセス時の処理について説明し、(b)を用いてリードアクセス時の処理について説明する。
【0041】
ライトアクセス時は、図7(a)に示すように、キャッシュメモリ6は、t0→t1→t2→t3→t4の間に、それぞれW0→W1→W2→W3の順番でリフィルが完了するものとする。また、リフィル開始時にはリフィルビットをアサートし、リフィルすべき新しいラインのアドレスにラインのタグビット(Tag)を更新する。
本実施の形態においては、リフィル途中にも関わらずライトアクセス要求を受けてデータの上書きを許容するので、ラインのタグビット(Tag)が、現実に上書きしたデータのタグと不一致にならないように、図7(a)に示すように、リフィル開始時にタグを更新する。
【0042】
まず、t0からt2までの間にワードW2へのライトアクセス要求があった場合には、ヒット判定器20は前述のようにライトヒットと判定し、ワードW2へのライトアクセスを受けて対応するダーティビット(D2)をアサートする。その後、t2からt3の間は、ワードW2のダーティビット(D2)がアサートされているので、キャッシュメモリ6は、ワードW2への上書きを行わない。
【0043】
なお、上書きを行わない方法としては、例えば、ライトアクセスは行うが、ワードへの書き込みをマスクする信号を利用することが考えられる。また、ワードへのライトアクセス自体を行わずに処理をスキップしてもよい。
次に、t2からt3までの間にワードW2へのライトアクセス要求があった場合には、ライトヒットと判定し、ワードW2へのライトアクセスを受けて対応するダーティビット(D2)をアサートする。この場合、ライトアクセス要求時には、ワードW2は既にリフィル中であるので、キャッシュメモリ6はライト制御を調停して両者の競合を防ぐ。
【0044】
そして、t3からt4までの間にワードW2へのライトアクセス要求があった場合には、ライトヒットと判定し、ワードW2へのライトアクセスを受けて対応するダーティビット(D2)をアサートする。
リードアクセス時は、図7(b)に示すように、図7(a)同様に、キャッシュメモリ6は、t0→t1→t2→t3→t4の間に、それぞれW0→W1→W2→W3の順番でリフィルが完了するものとする。
【0045】
まず、t0からt4までの間にワードW2へのリードアクセス要求があった場合、ワードW2に対応するダーティビットが有効であるならば、ヒット判定器20は前述のようにリードヒットと判定し、ワードW2へのリードアクセスを受け付ける。
これに対して、t0からt4までの間にワードW2へのリードアクセス要求があった場合で、ワードW2に対応するダーティビットが無効ならば、ヒット判定器20は前述のようにリードミスヒットと判定する。CPU2は、リフィル完了まで待つこととなる。
【0046】
<補足>
以上、本発明の実施の形態について説明したが、本発明は上記の内容に限定されず、本発明の目的とそれに関連または付随する目的を達成するための各種形態においても実施可能であり、例えば、以下であってもよい。
(1)実施の形態では、ダイレクトマップ方式のキャッシュメモリを例に挙げて説明したが、この方式に限らずフルアソシアティブ方式やセットアソシアティブ方式を採用したキャッシュメモリを用いても構わない。これらの方式の場合には、ライトミスヒット時のリフィル対象のラインがダイレクトマップ方式のように一意のラインに決まるのではなく、LRU(Least Recently Used)方式やラウンドロビン方式などのアルゴリズムなどに基づいて行われる点が異なってくる。
【0047】
また、共有バスを介して複数のキャッシュメモリが下位層の単一のメモリを共有するような共有メモリ型のキャッシュメモリシステムにおいても、ライトバックキャッシュメモリを構成、制御する方法として本発明を適用することができる。
(2)実施の形態では、対応するダーティビットがダーティなワードのみをライトバックする例について説明したが、ダーティワードを含む数ワード、もしくはラインに含まれるワードすべてをライトバックするとしてもよい。また書き戻しの際には、周知の技術のように、ライトバッファ10に積まれたデータが主記憶4に書き戻されるよりも以前に、書き戻されるアドレスのデータが主記憶4から読み出されることが無いようにシステム全体は制御することができる。
【0048】
(3)実施の形態では、図1に示すように、キャッシュメモリ6の入出力につながるパスにライトバッファ8,10とリードバッファ12を配することで、中央処理装置からキャッシュメモリへのライトアクセス、キャッシュメモリから主記憶へのライトアクセス、主記憶からキャッシュメモリへのライトアクセスが緩衝され、より柔軟なキャッシュメモリ制御が可能となる。
【0049】
(4)実施の形態では、特に詳細を述べなかったが、システム全体へのオーバーヘッドを軽減する別のアプローチとして、ライトバッファを配置して制御系に工夫を施すことも考えられる。具体的には、ライトミスへの対応として、上位層メモリとキャッシュメモリとの間に多機能なライトバッファを配置し、リフィル中のラインへのライトは、上記ライトバッファにあるデータに対して上書き更新し、リフィル中のラインのリードは、上記ライトバッファから読み出すという制御を行うというものである。しかし、この制御は非常に複雑なものとなる。
【0050】
これに対して、実施の形態では、ヒット判定器20のヒット判定という簡単な制御を通してシステム全体へのオーバーヘッドを軽減することが可能となる。
(5)階層メモリシステムとして、中央処理装置、キャッシュメモリ、主記憶の構成を例示したが、さらに深い階層構成のメモリシステムのキャッシュメモリとしてもよい。例えば、キャッシュメモリが、1次キャッシュメモリと2次キャッシュメモリとから構成される場合がある。この場合、本実施の形態を、1次キャッシュメモリに適用してもよいし、2次キャッシュメモリに適用してもよい。
【産業上の利用可能性】
【0051】
本発明のキャッシュメモリは、一般的な半導体回路内部に存在するキャッシュメモリとして利用でき、キャッシュヒット率を向上できるので有用である。
【図面の簡単な説明】
【0052】
【図1】キャッシュメモリシステム1の構成図
【図2】キャッシュメモリ6の構成を示す図
【図3】ヒット判定器20の回路構成例
【図4】図3のヒット判定器20が入力に応じて出力する判定結果を示す表50の図
【図5】ライトアクセス時におけるCPU2、キャッシュメモリ6、主記憶4のシーケンス図
【図6】リードアクセス時におけるCPU2、キャッシュメモリ6、主記憶4のシーケンス図
【図7】あるラインのワード(W0,W1,W2,W3)のリフィルを時系列上で説明する図
【符号の説明】
【0053】
1 キャッシュメモリシステム
2 CPU
4 主記憶
6 キャッシュメモリ
8 ライトバッファ
10 ライトバッファ
12 リードバッファ
14 タグ格納部
20 ヒット判定器
22 アドレス

【特許請求の範囲】
【請求項1】
それぞれ複数のワードを含む複数のラインと、
前記ラインに格納されたデータの主記憶におけるアドレスを示すタグと、前記ライン毎にラインがリフィル中であるか否かを示すリフィルビットと、前記ワード毎にワードにおけるデータがダーティであるか否かを示すダーティビットとを格納するタグ格納部と、
リードアクセス対象のタグアドレスと、前記タグに示されるアドレスとが一致し、
リードアクセス対象に係るラインに対応するリフィルビットがリフィル中を示し、
かつ、当該ラインに含まれリードアクセス対象に係るワードに対応するダーティビットがダーティを示していれば、
リードヒットと判定するヒット判定手段と
を備えることを特徴とするキャッシュメモリ。
【請求項2】
前記ヒット判定手段は、ライトアクセス対象に係るラインのアドレスと、前記タグに示されるアドレスが一致するラインであって、当該ラインに対応するリフィルビットがリフィル中であることを示す場合には、ライトヒットと判定する
ことを特徴とする請求項1に記載のキャッシュメモリ。
【請求項3】
前記ヒット判定手段は、当該ワードに対応するダーティビットがダーティを示していなければ、リードミスヒットと判定する
ことを特徴とする請求項1に記載のキャッシュメモリ。
【請求項4】
それぞれ複数のワードを含む複数のラインと、
前記ラインに格納されたデータの主記憶におけるアドレスを示すタグと、前記ライン毎にラインがリフィル中であるか否かを示すリフィルビットと、前記ワード毎にワードにおけるデータがダーティであるか否かを示すダーティビットとを格納するタグ格納部と、
ライトアクセス対象のタグアドレスと、前記タグに示されるアドレスとが一致し、
当該ラインに対応するリフィルビットがリフィル中であることを示す場合には、
ライトヒットと判定するヒット判定手段と
を備えることを特徴とするキャッシュメモリ。
【請求項5】
さらに、前記ヒット判定手段によりライトヒットと判定された場合に、前記ライトアクセスに係るワードへの書き込みがあると、当該ワードに対応するダーティビットをアサートし、
ラインのリフィルに際して、ダーティビットがダーティであることを示さないワードに対してはデータの上書きを許可し、前記アサートによりダーティであることを示すワードに対してはデータの上書きを禁止する制御手段を備える
ことを特徴とする請求項4に記載のキャッシュメモリ。
【請求項6】
中央処理装置と、
請求項1または4に記載のキャッシュメモリと、
前記中央処理装置と前記キャッシュメモリと記憶階層において間の階層に位置し、前記中央処理装置が前記キャッシュメモリへとライトすべきデータを保持する第1ライトバッファと、
前記キャッシュメモリとライトバック対象となるメモリと記憶階層において間の階層に位置し、前記キャッシュメモリから前記ライトバック対象となるメモリへとライトバックすべきデータを保持する第2ライトバッファと、
前記キャッシュメモリと前記ライトバック対象となるメモリと記憶階層において間の階層に位置し、前記キャッシュメモリがリードすべきデータを保持するリードバッファと
を備えることを特徴とするキャッシュメモリシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate