説明

キャッシュ制御装置及びキャッシュ制御方法

【課題】ロード命令とストア命令が競合した場合に、データの整合性を保つことができ、かつ、処理レイテンシを低減することができるキャッシュ制御装置及びキャッシュ制御方法を提供すること。
【解決手段】本発明にかかるキャッシュ制御装置5は、メモリ2に格納されるデータを、メモリ2と上位装置との間でキャッシュするキャッシュ制御装置5である。データが格納されるデータ格納部51と、データ格納部51に対してリフィルを実行中に、上位装置からデータ格納部51にデータがストアされたか否かを示すストア情報が格納されるストア情報格納部52と、リフィルによるデータがメモリ2から出力されたときに、ストア情報格納部52に格納されたストア情報がデータがストアされたことを示す場合、メモリ2から出力されたデータを、上位装置に直接出力するリプライ制御部53と、を備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、キャッシュ制御装置及びキャッシュ制御方法に関する。
【背景技術】
【0002】
特許文献1には、ロード命令とストア命令が競合した場合に、キャッシュメモリのデータと外部メモリのデータとの整合性を保証することができるロード/ストア命令制御回路が開示されている。ロード/ストア命令制御回路は、ロード命令がキャッシュミスを起こし、後続するストア命令が先行するロード命令と同じキャッシュラインを対象として、キャッシュミスを起こしたことを検出すると、後続するストア命令によるストア・データを一時的に格納する一時的格納手段に格納する。ロード/ストア命令制御回路は、先行するロード命令によるキャッシュラインへのリフィル処理が終了した後、一時的格納手段に格納されているストア・データを、対応するキャッシュラインにストアする。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2001−222468号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
上述したようなロード命令とストア命令が競合する問題を解決するために、本願発明者が検討したキャッシュ制御装置について、図5を参照して説明する。図5は、ロード命令とストア命令が競合した場合に、キャッシュメモリのデータと外部メモリのデータとの整合性を保証することができるキャッシュ制御装置9を示す。
【0005】
キャッシュ制御装置9は、キャッシュ部90、キャッシュ制御部91、リフィル管理部バッファ92、ロード/ストア命令受信部93及びマルチプレクサ94を有する。キャッシュ制御装置9は、メモリ2と接続されている。また、キャッシュ制御装置1は、上位装置(図示せず)と接続される。キャッシュ制御装置9は、上位装置と、メモリ2との間でデータをキャッシュする。
【0006】
キャッシュ部90は、複数のキャッシュ・エントリを有する。キャッシュ・エントリは、フラグV、ライン・アドレスAA及びデータDAのそれぞれが格納される領域を含む。フラグVは、キャッシュ・エントリに有効なデータが格納されているか否かを示す。ライン・アドレスAAは、キャッシュ・エントリに格納されるデータDAのライン・アドレスを示す。データDAは、キャッシュ・エントリにキャッシュされたデータである。なお、図5では、2つ目以降のキャッシュ・エントリの図示は省略している。ここで、ライン・アドレスとは、キャッシュ・エントリにデータDAとして格納されるデータサイズ毎のメモリ2におけるアドレスのことである。
【0007】
キャッシュ制御部91は、ヒット判定部911、ヒット制御部912、ミス判定部913、ミス制御部914を含む。
リフィル管理部バッファ92は、リフィルを実行中のロード命令を格納することによって、リフィルの実行中というキャッシュ・エントリの過渡状態を管理する。つまり、リフィル管理部バッファ92は、ロード命令が格納される領域を含む複数のエントリを有する。
【0008】
ロード/ストア命令受信部93は、上位装置から受信したロード命令及びストア命令を、キャッシュ部90、リフィル管理部バッファ92及びヒット判定部911及びミス判定部913に出力する。ロード命令は、上位装置がロードするデータのメモリ2上におけるライン・アドレスを示す情報が含まれる。ストア命令は、上位装置がストアするストア・データと、ストア・データのメモリ2上におけるライン・アドレスと、を示す情報が含まれる。
マルチプレクサ94は、キャッシュ部90から出力されたデータ又はメモリ2から出力されたデータのいずれかを、ヒット制御部912からの制御に応じて、選択的に上位装置に出力する。
【0009】
ヒット判定部911は、ロード/ストア命令受信部93から出力されたロード/ストア命令が、有効なデータが格納されたキャッシュ・エントリにヒットしたか否かを判定する。
ヒット制御部912は、ヒット判定部911によってロード命令がヒットしたと判定された場合に、ヒットしたキャッシュ・エントリに格納されたデータDAを、上位装置に出力するようにキャッシュ部90及びマルチプレクサ94を制御する。このように、ロード命令がヒットした場合は、ヒットしたキャッシュ・エントリに格納されたデータDAが、ロード命令に対してリプライするリプライ・データとして上位装置に出力される。
【0010】
ミス判定部913は、ロード/ストア命令受信部93から出力されたロード/ストア命令が、キャッシュミスしたか否かを判定する。
ミス制御部914は、ミス判定部913によってロード命令がキャッシュミスしたと判定された場合、任意のキャッシュ・エントリに対してリフィルの実行を開始するようにキャッシュ部90及びメモリ2を制御する。
【0011】
続いて、キャッシュ制御装置9の動作例について説明する。
ロード/ストア命令受信部93は、上位装置からロード命令を受信する。ロード/ストア命令受信部93は、受信したロード命令を、キャッシュ部90、リフィル管理部バッファ92及びヒット判定部911及びミス判定部913に出力する。
【0012】
ミス判定部913は、ロード/ストア命令受信部93から出力されたロード命令に応じて、ロード命令がキャッシュミスしたか否かを判定する。ミス制御部914は、ミス判定部913によってロード命令がキャッシュミスしたと判定された場合、任意のキャッシュ・エントリに対してリフィルの実行を開始する。具体的には、ミス判定部913は、ロード命令に含まれるライン・アドレスのデータのリプライを要求する信号をメモリ2に送信する。リフィル管理部バッファ92は、ミス制御部914によってリフィルが開始された場合に、ロード/ストア命令受信部93から出力されたロード命令を自身に格納する。これによって、リフィルを実行中のロード命令がリフィル管理部バッファ92に格納される。
【0013】
次に、ロード/ストア命令受信部93は、上位装置からストア命令を受信する。ロード/ストア命令受信部93は、受信したストア命令を、キャッシュ部90、リフィル管理部バッファ92及びヒット判定部911及びミス判定部913に出力する。
リフィル管理部バッファ92は、ロード/ストア命令受信部93から出力されたストア命令が、自身に格納されているロード命令のいずれかと同一のライン・アドレスに対するものである場合、キャッシュ部90にストア・データのストアをキャンセルさせる。つまり、リフィル管理部バッファ92は、リフィルを実行中の先のロード命令と同一のライン・アドレスに対してストア命令があった場合、ストア・データのストアをキャンセルする。言い換えると、リフィル管理部バッファ92は、ストア命令がロード命令と競合した場合に、ストア・データのストアをキャンセルするようにしている。
【0014】
逆に、ストア・データのストアをキャンセルしない場合、ストア・データをデータDAとして格納した後に、リプライの要求に応じてメモリ2から出力されたリプライ・データが、ストア・データが格納されたキャッシュ・エントリにデータDAとして格納されて、上位装置に出力される。これによって、上位装置からストアされたデータDAがストア前の古いデータによって上書きされてしまい、データの整合性を保てなくなってしまう。
【0015】
そのため、キャッシュ制御装置9は、ストア命令がロード命令と競合した場合に、ストア・データのストアをキャンセルすることで、上位装置からストアされたデータDAがストア前の古いデータによって上書きされないようにしている。これによって、上位装置における処理の整合性を保つことができる。
【0016】
しかし、上位装置は、キャッシュ制御装置9においてストア・データのストアがキャンセルされた場合、その後に実行される処理の整合性を保つため、ストア・データがストアされるまでは、処理を停止する必要がある。そのため、キャッシュ制御装置9は、ストア・データのストアをキャンセルしたことを示すキャンセル通知を上位装置に送信する。上位装置は、キャッシュ制御装置9から送信されたキャンセル通知に応じて、処理を停止する。この場合、先のロード命令によるリフィルの実行が終了したときに、キャンセルしたストア命令による処理を再実行する必要がある。
【0017】
しかし、キャッシュ制御装置9は、先のロード命令に対するリプライのタイミングが判断できない場合には、キャンセルされたストア命令の再発行を上位装置に要求するための適切なタイミングを特定することができないという問題がある。ここで、先のロード命令に対するリプライが保障される十分な待ち時間が経過した後に、ストア命令の再発行を上位装置に要求することもできる。しかし、その場合は、待ち時間によって、上位装置において処理レイテンシが発生してしまうという課題がある。
【0018】
また、キャッシュ制御装置9は、先のロード命令に対するリプライのタイミングが判断できた場合であっても、リプライによってリフィルの実行を終了した時点から、キャンセルされたストア命令の再発行を上位装置に要求することになる。そのため、上位装置においてリフィルの実行が終了するまでの処理レイテンシが発生してしまうという課題がある。また、特許文献1に開示の技術においても、リフィル処理が終了した後に、ストア・データをキャッシュラインにストアするようにしている。そのため、特許文献1に開示の技術も、処理レイテンシが発生してしまうという同様の問題がある。
【0019】
また、キャッシュ制御装置9は、全てのキャッシュ・エントリに対して、データの整合性を保つためには、リフィル管理部バッファ92に全てのキャッシュ・エントリに対応してロード命令を格納するエントリが必要となってしまう。しかし、そのためには、膨大な記憶容量が必要となってしまう。そのため、現実的には、リフィル管理部バッファ92におけるエントリ数を制限せざるを得ない。したがって、キャッシュ制御装置9は、リフィル管理部バッファ92におけるエントリ数が制限されてしまうため、リフィルの実行数が制限されてしまうという課題もある。
【0020】
本発明の目的は、ロード命令とストア命令が競合した場合に、データの整合性を保つことができ、かつ、処理レイテンシを低減することができるキャッシュ制御装置及びキャッシュ制御方法を提供することにある。
【課題を解決するための手段】
【0021】
本発明の第1の態様にかかるキャッシュ制御装置は、メモリに格納されるデータを、当該メモリと上位装置との間でキャッシュするキャッシュ制御装置であって、前記データが格納されるデータ格納部と、前記データ格納部に対してリフィルを実行中に、前記上位装置から前記データ格納部にデータがストアされたか否かを示すストア情報が格納されるストア情報格納部と、前記リフィルによるデータが前記メモリから出力されたときに、前記ストア情報格納部に格納されたストア情報が前記データがストアされたことを示す場合、前記メモリから出力されたデータを、前記上位装置に直接出力するリプライ制御部と、を備えたものである。
【0022】
本発明の第2の態様にかかるキャッシュ制御方法は、メモリに格納されるデータを、当該メモリと上位装置との間でキャッシュするキャッシュ制御方法であって、前記データが格納されるデータ格納部に対してリフィルを実行中に、前記上位装置から前記データ格納部にデータがストアされた場合、前記データがストアされたことを示すストア情報を格納するステップと、前記リフィルによるデータが前記メモリから出力されたときに、前記ストア情報が前記データがストアされたことを示す場合、前記メモリから出力されたデータを、前記上位装置に直接出力するステップと、を備えたものである。
【発明の効果】
【0023】
上述した本発明の各態様によれば、ロード命令とストア命令が競合した場合に、データの整合性を保つことができ、かつ、処理レイテンシを低減することができるキャッシュ制御装置及びキャッシュ制御方法を提供することができる。
【図面の簡単な説明】
【0024】
【図1】本発明の実施の形態にかかるキャッシュ制御装置の概要を示す図である。
【図2】本発明の実施の形態にかかるキャッシュ制御装置の構成図である。
【図3】本発明の実施の形態にかかるキャッシュ制御装置のフローチャートである。
【図4】本発明の他の実施の形態にかかるキャッシュ制御装置の構成図である。
【図5】背景技術に基づいたキャッシュ制御装置の構成図である。
【発明を実施するための形態】
【0025】
本発明の実施の形態.
まず、図1を参照して、本発明の実施の形態にかかるキャッシュ制御装置の概要について説明する。図1は、本発明の実施の形態にかかるキャッシュ制御装置の概要を示す図である。
【0026】
キャッシュ制御装置5は、データ格納部51、ストア情報格納部52及びリプライ制御部53を有する。キャッシュ制御装置5は、メモリ2に格納されるデータを、メモリ2と上位装置(図示せず)との間でキャッシュする。
データ格納部51は、データが格納される。
ストア情報格納部52は、データ格納部51に対してリフィルを実行中に、上位装置からデータ格納部51にデータがストアされたか否かを示すストア情報が格納される。
リプライ制御部53は、リフィルによるデータがメモリ2から出力されたときに、ストア情報格納部52に格納されたストア情報がデータがストアされたことを示す場合、メモリ2から出力されたデータを、上位装置に直接出力する。
【0027】
続いて、本発明の実施の形態にかかるキャッシュ制御装置5の動作について説明する。
キャッシュ制御装置5は、データが格納されるデータ格納部51に対してリフィルを実行中に、上位装置からデータ格納部51にデータがストアされた場合、データがストアされたことを示すストア情報をストア情報格納部52に格納する。
リプライ制御部53は、リフィルによるデータがメモリ2から出力されたときに、ストア情報格納部52に格納されたストア情報がデータがストアされたことを示す場合、メモリ2から出力されたデータを、上位装置に直接出力する。
【0028】
続いて、図2を参照して、本発明の実施の形態にかかるキャッシュ制御装置について説明する。図2は、本発明の実施の形態にかかるキャッシュ制御装置の構成図である。
【0029】
キャッシュ制御装置1は、キャッシュ部10、キャッシュ制御部11、リプライ部12及びロード/ストア命令受信部13を有する。キャッシュ制御装置1は、メモリ2と接続されている。また、キャッシュ制御装置1は、上位装置(図示せず)と接続される。キャッシュ制御装置1は、上位装置と、メモリ2との間でデータをキャッシュする。キャッシュ制御装置1は、例えば、キャッシュメモリである。上位装置は、上位のCPU(Central Processing Unit)やキャッシュメモリ等である。
【0030】
キャッシュ部10は、複数のキャッシュ・エントリを有する。キャッシュ・エントリは、フラグV、フラグM、フラグS、ライン・アドレスAA及びデータDAのそれぞれが格納される領域を含む。フラグVは、キャッシュ・エントリに有効なデータが格納されているか否かを示す。フラグMは、キャッシュ・エントリがリフィルを実行中であるか否かを示す。フラグSは、リフィルを実行中のキャッシュ・エントリに対してストア命令があったか否かを示す。ライン・アドレスAAは、キャッシュ・エントリに格納されるデータDAのライン・アドレスを示す。データDAは、キャッシュ・エントリにキャッシュされたデータである。なお、図2では、2つ目以降のキャッシュ・エントリの図示は省略している。
【0031】
ここで、リフィルを実行中のキャッシュ・エントリに対してストア命令があることを「リフィル・マッチ」と言う。つまり、ロード命令とストア命令が競合していることを、リフィル・マッチと言う。よって、フラグSは、リフィル・マッチしたか否かを示すフラグとも言える。データDAが格納される領域は、データ格納部51に対応する。フラグSが格納される領域は、ストア情報格納部52に対応する。
【0032】
フラグVは、例えば、キャッシュ・エントリが有効なデータを格納している場合、アクティブな値となり、そうでない場合、インアクティブな値となるビットフラグである。フラグMは、例えば、キャッシュ・エントリがリフィルを実行中である場合、アクティブな値となり、そうでない場合、インアクティブな値となるビットフラグである。フラグSは、例えば、リフィル・マッチした場合、アクティブな値となり、そうでない場合、インアクティブな値となるビットフラグである。本実施の形態では、アクティブな値が"1"であり、インアクティブな値が"0"の場合について例示する。
【0033】
キャッシュ制御部11は、ヒット判定部111、ヒット制御部112、ミス判定部113、ミス制御部114、リフィル・マッチ判定部115及びリフィル・マッチ制御部116を有する。
リプライ部12は、リプライ受信制御部121、リプライ出力制御部122及びマルチプレクサ123を有する。リプライ部12は、リプライ制御部53として機能する。
【0034】
ロード/ストア命令受信部13は、上位装置から出力されたロード/ストア命令を受信する。ロード/ストア命令受信部13は、受信したロード/ストア命令をキャッシュ部10、ヒット判定部111、ミス判定部113及びリフィル・マッチ判定部115に出力する。ここで、ロード命令は、上位装置がメモリ2又はキャッシュ制御装置1からのデータのロードを要求する命令である。ロード命令は、上位装置がロードするデータのメモリ2上におけるライン・アドレスを示す情報が含まれる。ストア命令は、上位装置がキャッシュ制御装置1及びメモリ2に対してデータのストアを要求する命令である。ストア命令は、上位装置がストアするストア・データと、ストア・データのメモリ2上におけるライン・アドレスと、を示す情報が含まれる。
【0035】
ヒット判定部111は、ロード/ストア命令受信部13から出力されたロード/ストア命令が、有効なデータが格納されたキャッシュ・エントリにヒットしたか否かを判定する。
ヒット制御部112は、ヒット判定部111における判定結果に基づいて、キャッシュ部10及びリプライ部12を制御する。ヒット制御部112は、ヒット判定部111によってロード命令がヒットしたと判定された場合、ヒットしたキャッシュ・エントリに格納されたデータDAを、上位装置に出力するように制御する。ヒット制御部112は、ヒット判定部111によってストア命令がヒットしたと判定された場合、ヒットしたキャッシュ・エントリに、ストア命令に含まれるストア・データを格納するように制御する。
【0036】
ミス判定部113は、ロード/ストア命令受信部13から出力されたロード/ストア命令が、キャッシュミスしたか否かを判定する。
ミス制御部114は、ミス判定部113における判定結果に基づいて、キャッシュ部10及びメモリ2を制御する。ミス制御部114は、ミス判定部113によってロード命令がキャッシュミスしたと判定された場合、任意のキャッシュ・エントリに対してリフィルの実行を開始するように制御する。また、ミス制御部114は、ミス判定部113によってストア命令がキャッシュミスしたと判定された場合、任意のキャッシュ・エントリに、ストア命令に含まれるストアするデータを格納するように制御する。
【0037】
リフィル・マッチ判定部115は、ロード/ストア命令受信部13から出力されたストア命令が、リフィル・マッチしたか否かを判定する。
リフィル・マッチ制御部116は、リフィル・マッチ判定部115における判定結果に基づいて、キャッシュ部10を制御する。リフィル・マッチ制御部116は、リフィル・マッチ判定部115によってリフィル・マッチしたと判定された場合、キャッシュ部10のリフィル・マッチしたキャッシュ・エントリに、ストア命令に含まれるストア・データ、及び、リフィル・マッチしたことを示すフラグSを格納するように制御する。
【0038】
また、リプライ受信制御部121は、メモリ2から送信されたリプライ・データを受信する。リプライ受信制御部121は、受信したリプライ・データを格納するキャッシュ・エントリがリフィル・マッチしたか否かを、このキャッシュ・エントリに格納されるフラグSに基づいて判定する。リプライ受信制御部121は、リプライ・データを格納するキャッシュ・エントリがリフィル・マッチした場合、キャッシュ・エントリにリプライ・データを格納せずに、リプライ・データをマルチプレクサ123に出力する。リプライ受信制御部121は、リプライ・データを格納するキャッシュ・エントリがリフィル・マッチしていない場合、キャッシュ・エントリにリプライ・データを格納するとともに、リプライ・データをマルチプレクサ123に出力する。また、リプライ受信制御部121は、リプライ受信制御部121から出力したリプライ・データを上位装置に出力するようにリプライ出力制御部122を制御する。
【0039】
リプライ出力制御部122は、ヒット制御部112及びリプライ受信制御部121からの制御に応じて、マルチプレクサ123を制御する。リプライ出力制御部122は、キャッシュ部10又はリプライ受信制御部121のいずれかから出力されたリプライ・データを選択的に上位装置に出力するようにマルチプレクサ123を制御する。
マルチプレクサ123は、リプライ出力制御部122からの制御に応じて、キャッシュ部10又はリプライ受信制御部121のいずれかから出力されたリプライ・データを選択的に上位装置に出力する
【0040】
本実施の形態にかかるキャッシュ制御装置1は、上述したように、キャッシュ・エントリがリフィル・マッチした場合に、そのキャッシュ・エントリにリフィル・マッチしたことを示すフラグSを格納するようにしている。キャッシュ制御装置1は、メモリ2からリプライ・データを受信したときに、このフラグSに基づいて、リプライ・データを格納するキャッシ・エントリがリフィル・マッチしたか否かを判定する。そして、キャッシュ制御装置1は、リプライ・データを格納するキャッシ・エントリがリフィル・マッチしていた場合、リプライ・データをキャッシュ・エントリに格納せずに、上位装置に直接出力するようにしている。これによって、ロード命令の後のストア命令による新しいデータをキャッシュ制御装置1にストアしても、ロード命令によってメモリ2から出力された古いデータを上書きしないようにすることができる。
【0041】
続いて、図3を参照して、本発明の実施の形態にかかるキャッシュ制御装置の動作について説明する。図3は、本発明の実施の形態にかかるキャッシュ制御装置の動作を示すフローチャートである。
【0042】
まず、上位装置からストア命令が出力されたときの動作について説明する。
ロード/ストア命令受信部13は、上位装置からストア命令を受信する。ロード/ストア命令受信部13は、受信したストア命令をキャッシュ部10、ヒット判定部111、ミス判定部113及リフィル・マッチ判定部115に出力する(S100)。
【0043】
ヒット判定部111は、ロード/ストア命令受信部13から出力されたストア命令が、有効なデータが格納されたキャッシュ・エントリにヒットしたか否かを判定する(S101)。具体的には、ヒット判定部111は、キャッシュ部10が有する複数のキャッシュ・エントリに格納されるフラグV、ライン・アドレスAAを読み出す。そして、ヒット判定部111は、"1"を示すフラグVと、ストア命令に含まれるライン・アドレスと一致するライン・アドレスAAと、を含むキャッシュ・エントリがあるか否かを判定する。つまり、"1"を示すフラグVと、ストア命令に含まれるライン・アドレスと一致するライン・アドレスAAと、を含むキャッシュ・エントリがある場合、そのキャッシュ・エントリにストア命令がヒットしたことになる。ヒット判定部111は、ストア命令がヒットしたか否かを示す判定結果情報を、ヒット制御部112に出力する。
【0044】
ヒット制御部112は、ヒット判定部111から出力された判定結果情報がヒットしたことを示す場合、指示信号をキャッシュ部10に出力する。この指示信号は、ロード/ストア命令受信部13から出力されたストア命令に含まれるストア・データを、ヒットしたキャッシュ・エントリにストアするように指示する信号である。キャッシュ部10は、ヒット制御部112から出力された指示信号に応じて、ヒットしたキャッシュ・エントリに、ストア命令に含まれるストア・データをデータDAとして格納する(S102)。ヒット制御部112は、例えば、ヒット判定部111からヒットしたキャッシュ・エントリを示す情報を取得する。そして、ヒット制御部112は、取得した情報を指示信号に含めることによって、キャッシュ部10が指示信号からヒットしたキャッシュ・エントリを特定可能とする。
【0045】
また、ミス判定部113は、ロード/ストア命令受信部13から出力されたストア命令が、キャッシュミスしたか否かを判定する(S101)。具体的には、ミス判定部113は、キャッシュ部10が有する複数のキャッシュ・エントリに格納されるフラグV、ライン・アドレスAAを取得する。そして、ミス判定部113は、"1"を示すフラグVと、ストア命令に含まれるライン・アドレスと一致するライン・アドレスAAと、を含むキャッシュ・エントリがないか否かを判定する。つまり、"1"を示すフラグVと、ストア命令に含まれるライン・アドレスと一致するライン・アドレスAAと、を含むキャッシュ・エントリがない場合、ストア命令がキャッシュミスしたことになる。ミス判定部113は、ストア命令がキャッシュミスしたか否かを示す判定結果情報を、ミス制御部114に出力する。
【0046】
ミス制御部114は、ミス判定部113から出力された判定結果情報がミスしたことを示す場合、指示信号をキャッシュ部10に出力する。この指示信号は、ロード/ストア命令受信部13から出力されたストア命令に含まれるストア・データを、任意のキャッシュ・エントリにストアするように指示する信号である。キャッシュ部10は、ミス制御部114から出力された指示信号に応じて、任意のキャッシュ・エントリに、"1"としたフラグVを格納する。また、キャッシュ部10は、そのキャッシュ・エントリに、ストア命令に含まれるストア・データのライン・アドレスをライン・アドレスAAとして格納する。また、キャッシュ部10は、そのキャッシュ・エントリに、ストア命令に含まれるストア・データをデータDAとして格納する(S102)。ここで、キャッシュ部10は、任意のキャッシュ・エントリを決定する場合、どのような方式によって決定してもよい。例えば、ラウンドロビン、LRU(Least Recently Used)又はランダム等の任意の方式によって決定する。
【0047】
また、リフィル・マッチ判定部115は、ロード/ストア命令受信部13から出力されたストア命令が、リフィル・マッチしたか否かを判定する(S101)。具体的には、リフィル・マッチ判定部115は、キャッシュ部10が有する複数のキャッシュ・エントリに格納されるフラグM、ライン・アドレスAAを取得する。そして、リフィル・マッチ判定部115は、"1"を示すフラグMと、ストア命令に含まれるライン・アドレスと一致するライン・アドレスAAと、を含むキャッシュ・エントリがなるか否かを判定する。つまり、"1"を示すフラグMと、ストア命令に含まれるライン・アドレスと一致するライン・アドレスAAと、を含むキャッシュ・エントリがなる場合、そのキャッシュ・エントリにストア命令がリフィル・マッチしたことになる。リフィル・マッチ判定部115は、リフィル・マッチしたか否かを示す判定結果情報を、リフィル・マッチ制御部116に出力する。
【0048】
リフィル・マッチ制御部116は、リフィル・マッチ判定部115から出力された判定結果情報がリフィル・マッチしたことを示す場合、指示信号をキャッシュ部10に出力する。この指示信号は、ロード/ストア命令受信部13から出力されたストア命令に含まれるストア・データを、リフィル・マッチしたキャッシュ・エントリにストアするように指示する信号である。キャッシュ部10は、リフィル・マッチ制御部116から出力された指示信号に応じて、リフィル・マッチしたキャッシュ・エントリに、"1"としたフラグVを格納する。また、キャッシュ部10は、そのキャッシュ・エントリに、"1"としたフラグSを格納する。また、キャッシュ部10は、そのキャッシュ・エントリに、ストア命令に含まれるストア・データをデータDAとして格納する(S103)。
【0049】
リフィル・マッチ制御部116は、例えば、リフィル・マッチ判定部115からリフィル・マッチしたキャッシュ・エントリを示す情報を取得する。そして、リフィル・マッチ制御部116は、取得した情報を指示信号に含めることによって、キャッシュ部10がリフィル・マッチしたキャッシュ・エントリを特定可能とする。また、キャッシュ部10は、リフィル・マッチ制御部116から指示信号が出力された場合、ミス制御部114から出力された指示信号に応じて、任意のキャッシュ・エントリにフラグV、ライン・アドレスAA及びデータDAを格納しないようにする。このようにすることで、ストア・データが複数のキャッシュ・エントリに重複してストアされることを防ぐ。
【0050】
続いて、上位装置からロード命令が出力されたときの動作について説明する。
ロード/ストア命令受信部13は、上位装置からロード命令を受信する。ロード/ストア命令受信部13は、受信したストア命令をキャッシュ部10、ヒット判定部111、ミス判定部113及リフィル・マッチ判定部115に出力する(S200)。
【0051】
ヒット判定部111は、ロード/ストア命令受信部13から出力されたロード命令が、有効なデータが格納されたキャッシュ・エントリにヒットしたか否かを判定する(S201)。ヒット判定部111は、ロード命令がヒットしたか否かを示す判定結果情報を、ヒット制御部112に出力する。
【0052】
ヒット制御部112は、ヒット判定部111から出力された判定結果情報がヒットしたことを示す場合、指示信号をキャッシュ部10に出力する。この指示信号は、ヒットしたキャッシュ・エントリに格納されたデータDAを、マルチプレクサ123に出力するように指示する信号である。また、ヒット制御部112は、指示信号をリプライ出力制御部122に出力する。この指示信号は、キャッシュ部10から出力されたデータDAをリプライ・データとして上位装置に出力するように指示する信号である。
【0053】
キャッシュ部10は、ヒット制御部112から出力された指示信号に応じて、ヒットしたキャッシュ・エントリに格納されたデータDAを、マルチプレクサ123に出力する(S202)。ヒット制御部112は、例えば、ヒット判定部111からヒットしたキャッシュ・エントリを示す情報を取得する。ヒット制御部112は、取得した情報を指示信号に含めることによって、キャッシュ部10が指示信号からヒットしたキャッシュ・エントリを特定可能とする。リプライ出力制御部122は、ヒット制御部112から出力された指示信号に応じて、キャッシュ部10から出力されたデータDAをリプライ・データとして上位装置に出力する(S208)。
【0054】
また、ミス判定部113は、ロード/ストア命令受信部13から出力されたロード命令が、キャッシュミスしたか否かを判定する(S201)。ミス判定部113は、ストア命令がキャッシュミスしたか否かを示す判定結果情報を、ミス制御部114に出力する。
ミス制御部114は、ミス判定部113から出力された判定結果情報がミスしたことを示す場合、任意のキャッシュ・エントリに対して、リフィルの実行を開始する。具体的には、ミス制御部114は、指示信号をキャッシュ部10に出力する。この指示信号は、任意のキャッシュ・エントリに対するリフィルの実行を指示する信号である。キャッシュ部10は、ミス制御部114から出力された指示信号に応じて、任意のキャッシュ・エントリに、"0"としたフラグVを格納する。また、キャッシュ部10は、そのキャッシュ・エントリに、"1"としたフラグMを格納する。また、キャッシュ部10は、そのキャッシュ・エントリに、ロード命令に含まれるライン・アドレスをライン・アドレスAAとして格納する。
【0055】
また、ミス制御部114は、ロード命令に含まれるライン・アドレスのデータのリプライを要求する信号をメモリ2に送信する(S203)。ヒット制御部112は、例えば、ミス判定部113からロード命令に含まれるライン・アドレスを取得して、取得したライン・アドレスのデータのリプライを要求する。
【0056】
リプライ受信制御部121は、メモリ2からリプライ・データが送信された場合(S204)、リプライ・データの格納対象となっているキャッシュ・エントリのフラグSが、"0"か"1"か、を判定する(S205)。
【0057】
フラグSが"0"である場合、リプライ受信制御部121は、そのキャッシュ・エントリに、"1"としたフラグVを格納する。また、リプライ受信制御部121は、そのキャッシュ・エントリに、"0"としたフラグMを格納する。また、リプライ受信制御部121は、そのキャッシュ・エントリに、メモリ2から送信されたリプライ・データをデータDAとして格納する(S206)。メモリ2は、例えば、リプライ・データと共に、リプライ・データのライン・アドレスをリプライ受信制御部121に送信する。リプライ受信制御部121は、メモリ2から送信されたライン・アドレスと一致するライン・アドレスAAが格納されるキャッシュ・エントリを、リプライ・データの格納対象のキャッシュ・エントリとして特定する。
【0058】
そして、リプライ受信制御部121は、メモリ2から送信されたリプライ・データをマルチプレクサ123に出力する。リプライ受信制御部121は、リプライ受信制御部121から出力されたリプライ・データを上位装置に出力するように指示する指示信号をリプライ出力制御部122に出力する。リプライ出力制御部122は、リプライ受信制御部121から出力された指示信号に応じて、選択信号をマルチプレクサ123に出力する。マルチプレクサ123は、リプライ出力制御部122から出力された選択信号に応じて、リプライ受信制御部121から出力されたリプライ・データを上位装置に送信する(S208)。
【0059】
フラグSが"1"である場合、リプライ・データの格納対象となっているキャッシュ・エントリで、リフィル・マッチが発生したことになる。つまり、ステップS203〜S204までに、ステップS104が実行されたことになる。その場合、リプライ受信制御部121は、そのキャッシュ・エントリに、"0"としたフラグMを格納する。また、リプライ受信制御部121は、そのキャッシュ・エントリに、"0"としたフラグSを格納する(S207)。リプライ受信制御部121は、フラグSが"1"となっていたため、そのキャッシュ・エントリに、メモリ2から送信されたリプライ・データは格納しない。そして、リプライ受信制御部121は、上述と同様に、メモリ2から送信されたリプライ・データを上位装置に送信する(S208)。
【0060】
本発明の他の実施の形態.
図4は、本発明の他の実施の形態にかかるキャッシュ制御装置の構成図である。
ここで、上述した実施の形態では、フラグV、M、Sがとり得るパターンが、以下の4つのパターンとなっている。
【0061】
1.フラグV="0"、フラグM="0"、フラグS="0":キャッシュ・エントリが無効である場合
2.フラグV="0"、フラグM="1"、フラグS="0":キャッシュ・エントリが無効、かつ、リフィル実行中である場合
3.フラグV="1"、フラグM="0"、フラグS="0":キャッシュ・エントリが有効、かつ、ストア及びリフィル・マッチなしの場合
4.フラグV="1"、フラグM="1"、フラグS="1":キャッシュ・エントリが有効、かつ、ストア及びリフィル・マッチありの場合
【0062】
したがって、図4に示すように、それぞれの4つのパターンを、3ビットのフラグV、M、Sに代えて、2ビットのフラグFA(Flag Array)によって示すようにしてもよい。具体的には、上述した4つのパターンを、"00"、"01"、"10"、"11"として表すようにしてもよい。つまり、フラグV、M、Sのとり得るパターンを、フラグV、M、Sによって表した場合よりも少ないビット数のビットパターンによって示す情報によって表すようにしてもよい。
【0063】
これによれば、キャッシュ・エントリの状態を管理する情報を格納するための記憶容量を低減することができるため、さらに小量のハードウェアによって本実施の形態における機能を実装することが可能となる。
【0064】
以上に説明したように、本実施の形態では、キャッシュ・エントリに対してリフィルを実行中に、上位装置からキャッシュ・エントリにデータがストアされたか否かを示すフラグSを備えるようにしている。そして、リプライ部12は、リフィルによるデータがメモリ2から出力されたときに、フラグSがデータがストアされたことを示す場合、メモリ2から出力されたデータを、上位装置に直接出力するようにしている。
【0065】
そのため、ロード命令とストア命令が競合して、リフィルを実行中に上位装置からキャッシュ・エントリにデータがストアされた場合に、リフィルによるデータをストアしたデータに上書きせずに、メモリ2に直接出力するようにすることができる。また、上位装置がリフィルを実行中であっても待たされることなく、データをストアすることができる。したがって、ロード命令とストア命令が競合した場合に、データの整合性を保つことができ、かつ、処理レイテンシを低減することができる。
【0066】
また、本実施の形態によれば、上位装置がリフィルを実行中であっても待たされることなく、データをストアすることができるため、上位装置がキャッシュを使用することのできる期間を長期化することができる。
【0067】
また、本実施の形態によれば、全てのキャッシュ・エントリに対して小量のフラグを追加することによって、本実施の形態にかかる機能を実装することが可能である。これによれば、全てのキャッシュ・エントリに対応してロード命令を格納するエントリを実装する場合と比較して、小量のハードウェアを追加することによって、データの整合性を保つことができ、かつ、処理レイテンシを低減することができる。
【0068】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【符号の説明】
【0069】
1、5、9 キャッシュ制御装置
2 メモリ
10、90 キャッシュ部
11、91 キャッシュ制御部
12 リプライ部
13、93 ロード/ストア命令受信部
51 データ格納部
52 ストア情報格納部
53 リプライ制御部
92 リフィル管理部バッファ
94、123 マルチプレクサ
111、911 ヒット判定部
112、912 ヒット制御部
113、913 ミス判定部
114、914 ミス制御部
115 リフィル・マッチ判定部
116 リフィル・マッチ制御部
121 リプライ受信制御部
122 リプライ出力制御部
V、M、S、FA フラグ
AA ライン・アドレス
DA データ

【特許請求の範囲】
【請求項1】
メモリに格納されるデータを、当該メモリと上位装置との間でキャッシュするキャッシュ制御装置であって、
前記データが格納されるデータ格納部と、
前記データ格納部に対してリフィルを実行中に、前記上位装置から前記データ格納部にデータがストアされたか否かを示すストア情報が格納されるストア情報格納部と、
前記リフィルによるデータが前記メモリから出力されたときに、前記ストア情報格納部に格納されたストア情報が前記データがストアされたことを示す場合、前記メモリから出力されたデータを、前記上位装置に直接出力するリプライ制御部と、
を備えたキャッシュ制御装置。
【請求項2】
前記キャッシュ制御装置は、
前記データ格納部と、当該データ格納部に格納されるデータのメモリアドレスを示すアドレス情報が格納されるアドレス情報格納部と、前記ストア情報格納部と、を含む複数のキャッシュ・エントリと、
前記上位装置がデータをロードするときに、当該データのメモリアドレスを示すアドレス情報が格納されたアドレス情報記憶部がいずれのキャッシュ・エントリにもない場合、いずれかのキャッシュ・エントリに含まれるデータ格納部に対してリフィルの実行を開始するミス判定制御部と、
前記リフィルを実行中のデータ格納部に対して、前記上位装置からデータがストアされた場合に、当該データ格納部に対応するストア情報格納部に、前記データがストアされたことを示すストア情報を格納するリフィル・マッチ判定制御部と、
をさらに備えた請求項1に記載のキャッシュ制御装置。
【請求項3】
前記キャッシュ・エントリは、前記データ格納部に対してリフィルを実行中か否かを示すリフィル情報を格納するリフィル情報格納部をさらに含み、
前記ミス判定制御部は、前記データ格納部に対してリフィルの実行を開始する場合に、当該データ格納部に対応するリフィル情報格納部に、前記リフィルを実行中であることを示すリフィル情報を格納し、
前記リフィル・マッチ判定制御部は、前記リフィル情報格納部に格納されるリフィル情報に基づいて、当該リフィル情報格納部に対応するデータ格納部に対してリフィルを実行中か否かを判定する請求項2に記載のキャッシュ制御装置。
【請求項4】
前記キャッシュ・エントリは、前記データ格納部に有効なデータが格納されているか否かを示す有効情報を格納する有効情報格納部さらに含み、
前記キャッシュ制御装置は、前記上位装置がデータをロードするときに、当該データのメモリアドレスを示すアドレス情報を格納したアドレス情報記憶部と、前記有効なデータが格納されていることを示す有効情報が格納された有効情報格納部を含むキャッシュ・エントリがある場合、当該キャッシュ・エントリに含まれるデータ格納部に格納されたデータを出力するヒット判定制御部をさらに備え、
前記リプライ制御部は、前記ヒット判定制御部から出力されたデータを前記上位装置に出力する請求項3に記載のキャッシュ制御装置。
【請求項5】
前記リプライ制御部は、前記リフィルによるデータが前記メモリから出力されたときに、当該リフィルを実行中のデータ格納部に対応する前記ストア情報格納部に格納されたストア情報が前記データがストアされたことを示していない場合、前記メモリから出力されたデータを当該データ格納部に格納するとともに、当該データ格納部に対応する有効情報格納部に前記有効なデータが格納されていることを示す有効情報を格納する請求項4に記載のキャッシュ制御装置。
【請求項6】
前記キャッシュ制御装置は、前記ストア情報格納部、前記リフィル情報格納部及び前記有効無効情報格納部を含むビット情報格納部を有し、
前記ビット情報格納部は、前記ストア情報、前記ストア情報、前記リフィル情報及び前記有効情報がとり得るパターンを、前記リフィル情報及び前記有効情報のそれぞれをビットフラグによって示した場合よりも少ないビット数のビットパターンによって示すビットパターン情報を格納する請求項4又は5に記載のキャッシュ制御装置。
【請求項7】
メモリに格納されるデータを、当該メモリと上位装置との間でキャッシュするキャッシュ制御方法であって、
前記データが格納されるデータ格納部に対してリフィルを実行中に、前記上位装置から前記データ格納部にデータがストアされた場合、前記データがストアされたことを示すストア情報を格納するステップと、
前記リフィルによるデータが前記メモリから出力されたときに、前記ストア情報が前記データがストアされたことを示す場合、前記メモリから出力されたデータを、前記上位装置に直接出力するステップと、
を備えたキャッシュ制御方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate


【公開番号】特開2012−14318(P2012−14318A)
【公開日】平成24年1月19日(2012.1.19)
【国際特許分類】
【出願番号】特願2010−148626(P2010−148626)
【出願日】平成22年6月30日(2010.6.30)
【出願人】(000004237)日本電気株式会社 (19,353)
【Fターム(参考)】