(57)【要約】【課題】ロード命令とストア命令が競合した場合に、データの整合性を保つことができ、かつ、処理レイテンシを低減することができるキャッシュ制御装置及びキャッシュ制御方法を提供すること。【解決手段】本発明にかかるキャッシュ制御装置５は、メモリ２に格納されるデータを、メモリ２と上位装置との間でキャッシュするキャッシュ制御装置５である。データが格納されるデータ格納部５１と、データ格納部５１に対してリフィルを実行中に、上位装置からデータ格納部５１にデータがストアされたか否かを示すストア情報が格納されるストア情報格納部５２と、リフィルによるデータがメモリ２から出力されたときに、ストア情報格納部５２に格納されたストア情報がデータがストアされたことを示す場合、メモリ２から出力されたデータを、上位装置に直接出力するリプライ制御部５３と、を備える。【選択図】図１
2012014318.tif 000002
【特許請求の範囲】
【請求項１】
メモリに格納されるデータを、当該メモリと上位装置との間でキャッシュするキャッシュ制御装置であって、
前記データが格納されるデータ格納部と、
前記データ格納部に対してリフィルを実行中に、前記上位装置から前記データ格納部にデータがストアされたか否かを示すストア情報が格納されるストア情報格納部と、
前記リフィルによるデータが前記メモリから出力されたときに、前記ストア情報格納部に格納されたストア情報が前記データがストアされたことを示す場合、前記メモリから出力されたデータを、前記上位装置に直接出力するリプライ制御部と、
を備えたキャッシュ制御装置。
【請求項２】
前記キャッシュ制御装置は、
前記データ格納部と、当該データ格納部に格納されるデータのメモリアドレスを示すアドレス情報が格納されるアドレス情報格納部と、前記ストア情報格納部と、を含む複数のキャッシュ・エントリと、
前記上位装置がデータをロードするときに、当該データのメモリアドレスを示すアドレス情報が格納されたアドレス情報記憶部がいずれのキャッシュ・エントリにもない場合、いずれかのキャッシュ・エントリに含まれるデータ格納部に対してリフィルの実行を開始するミス判定制御部と、
前記リフィルを実行中のデータ格納部に対して、前記上位装置からデータがストアされた場合に、当該データ格納部に対応するストア情報格納部に、前記データがストアされたことを示すストア情報を格納するリフィル・マッチ判定制御部と、
をさらに備えた請求項１に記載のキャッシュ制御装置。
【請求項３】
前記キャッシュ・エントリは、前記データ格納部に対してリフィルを実行中か否かを示すリフィル情報を格納するリフィル情報格納部をさらに含み、
前記ミス判定制御部は、前記データ格納部に対してリフィルの実行を開始する場合に、当該データ格納部に対応するリフィル情報格納部に、前記リフィルを実行中であることを示すリフィル情報を格納し、
前記リフィル・マッチ判定制御部は、前記リフィル情報格納部に格納されるリフィル情報に基づいて、当該リフィル情報格納部に対応するデータ格納部に対してリフィルを実行中か否かを判定する請求項２に記載のキャッシュ制御装置。
【請求項４】
前記キャッシュ・エントリは、前記データ格納部に有効なデータが格納されているか否かを示す有効情報を格納する有効情報格納部さらに含み、
前記キャッシュ制御装置は、前記上位装置がデータをロードするときに、当該データのメモリアドレスを示すアドレス情報を格納したアドレス情報記憶部と、前記有効なデータが格納されていることを示す有効情報が格納された有効情報格納部を含むキャッシュ・エントリがある場合、当該キャッシュ・エントリに含まれるデータ格納部に格納されたデータを出力するヒット判定制御部をさらに備え、
前記リプライ制御部は、前記ヒット判定制御部から出力されたデータを前記上位装置に出力する請求項３に記載のキャッシュ制御装置。
【請求項５】
前記リプライ制御部は、前記リフィルによるデータが前記メモリから出力されたときに、当該リフィルを実行中のデータ格納部に対応する前記ストア情報格納部に格納されたストア情報が前記データがストアされたことを示していない場合、前記メモリから出力されたデータを当該データ格納部に格納するとともに、当該データ格納部に対応する有効情報格納部に前記有効なデータが格納されていることを示す有効情報を格納する請求項４に記載のキャッシュ制御装置。
【請求項６】
前記キャッシュ制御装置は、前記ストア情報格納部、前記リフィル情報格納部及び前記有効無効情報格納部を含むビット情報格納部を有し、
前記ビット情報格納部は、前記ストア情報、前記ストア情報、前記リフィル情報及び前記有効情報がとり得るパターンを、前記リフィル情報及び前記有効情報のそれぞれをビットフラグによって示した場合よりも少ないビット数のビットパターンによって示すビットパターン情報を格納する請求項４又は５に記載のキャッシュ制御装置。
【請求項７】
メモリに格納されるデータを、当該メモリと上位装置との間でキャッシュするキャッシュ制御方法であって、
前記データが格納されるデータ格納部に対してリフィルを実行中に、前記上位装置から前記データ格納部にデータがストアされた場合、前記データがストアされたことを示すストア情報を格納するステップと、
前記リフィルによるデータが前記メモリから出力されたときに、前記ストア情報が前記データがストアされたことを示す場合、前記メモリから出力されたデータを、前記上位装置に直接出力するステップと、
を備えたキャッシュ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュ制御装置及びキャッシュ制御方法に関する。
【背景技術】
【０００２】
特許文献１には、ロード命令とストア命令が競合した場合に、キャッシュメモリのデータと外部メモリのデータとの整合性を保証することができるロード／ストア命令制御回路が開示されている。ロード／ストア命令制御回路は、ロード命令がキャッシュミスを起こし、後続するストア命令が先行するロード命令と同じキャッシュラインを対象として、キャッシュミスを起こしたことを検出すると、後続するストア命令によるストア・データを一時的に格納する一時的格納手段に格納する。ロード／ストア命令制御回路は、先行するロード命令によるキャッシュラインへのリフィル処理が終了した後、一時的格納手段に格納されているストア・データを、対応するキャッシュラインにストアする。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００１−２２２４６８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上述したようなロード命令とストア命令が競合する問題を解決するために、本願発明者が検討したキャッシュ制御装置について、図５を参照して説明する。図５は、ロード命令とストア命令が競合した場合に、キャッシュメモリのデータと外部メモリのデータとの整合性を保証することができるキャッシュ制御装置９を示す。
【０００５】
キャッシュ制御装置９は、キャッシュ部９０、キャッシュ制御部９１、リフィル管理部バッファ９２、ロード／ストア命令受信部９３及びマルチプレクサ９４を有する。キャッシュ制御装置９は、メモリ２と接続されている。また、キャッシュ制御装置１は、上位装置(図示せず)と接続される。キャッシュ制御装置９は、上位装置と、メモリ２との間でデータをキャッシュする。
【０００６】
キャッシュ部９０は、複数のキャッシュ・エントリを有する。キャッシュ・エントリは、フラグＶ、ライン・アドレスＡＡ及びデータＤＡのそれぞれが格納される領域を含む。フラグＶは、キャッシュ・エントリに有効なデータが格納されているか否かを示す。ライン・アドレスＡＡは、キャッシュ・エントリに格納されるデータＤＡのライン・アドレスを示す。データＤＡは、キャッシュ・エントリにキャッシュされたデータである。なお、図５では、２つ目以降のキャッシュ・エントリの図示は省略している。ここで、ライン・アドレスとは、キャッシュ・エントリにデータＤＡとして格納されるデータサイズ毎のメモリ２におけるアドレスのことである。
【０００７】
キャッシュ制御部９１は、ヒット判定部９１１、ヒット制御部９１２、ミス判定部９１３、ミス制御部９１４を含む。
リフィル管理部バッファ９２は、リフィルを実行中のロード命令を格納することによって、リフィルの実行中というキャッシュ・エントリの過渡状態を管理する。つまり、リフィル管理部バッファ９２は、ロード命令が格納される領域を含む複数のエントリを有する。
【０００８】
ロード／ストア命令受信部９３は、上位装置から受信したロード命令及びストア命令を、キャッシュ部９０、リフィル管理部バッファ９２及びヒット判定部９１１及びミス判定部９１３に出力する。ロード命令は、上位装置がロードするデータのメモリ２上におけるライン・アドレスを示す情報が含まれる。ストア命令は、上位装置がストアするストア・データと、ストア・データのメモリ２上におけるライン・アドレスと、を示す情報が含まれる。
マルチプレクサ９４は、キャッシュ部９０から出力されたデータ又はメモリ２から出力されたデータのいずれかを、ヒット制御部９１２からの制御に応じて、選択的に上位装置に出力する。
【０００９】
ヒット判定部９１１は、ロード／ストア命令受信部９３から出力されたロード／ストア命令が、有効なデータが格納されたキャッシュ・エントリにヒットしたか否かを判定する。
ヒット制御部９１２は、ヒット判定部９１１によってロード命令がヒットしたと判定された場合に、ヒットしたキャッシュ・エントリに格納されたデータＤＡを、上位装置に出力するようにキャッシュ部９０及びマルチプレクサ９４を制御する。このように、ロード命令がヒットした場合は、ヒットしたキャッシュ・エントリに格納されたデータＤＡが、ロード命令に対してリプライするリプライ・データとして上位装置に出力される。
【００１０】
ミス判定部９１３は、ロード／ストア命令受信部９３から出力されたロード／ストア命令が、キャッシュミスしたか否かを判定する。
ミス制御部９１４は、ミス判定部９１３によってロード命令がキャッシュミスしたと判定された場合、任意のキャッシュ・エントリに対してリフィルの実行を開始するようにキャッシュ部９０及びメモリ２を制御する。
【００１１】
続いて、キャッシュ制御装置９の動作例について説明する。
ロード／ストア命令受信部９３は、上位装置からロード命令を受信する。ロード／ストア命令受信部９３は、受信したロード命令を、キャッシュ部９０、リフィル管理部バッファ９２及びヒット判定部９１１及びミス判定部９１３に出力する。
【００１２】
ミス判定部９１３は、ロード／ストア命令受信部９３から出力されたロード命令に応じて、ロード命令がキャッシュミスしたか否かを判定する。ミス制御部９１４は、ミス判定部９１３によってロード命令がキャッシュミスしたと判定された場合、任意のキャッシュ・エントリに対してリフィルの実行を開始する。具体的には、ミス判定部９１３は、ロード命令に含まれるライン・アドレスのデータのリプライを要求する信号をメモリ２に送信する。リフィル管理部バッファ９２は、ミス制御部９１４によってリフィルが開始された場合に、ロード／ストア命令受信部９３から出力されたロード命令を自身に格納する。これによって、リフィルを実行中のロード命令がリフィル管理部バッファ９２に格納される。
【００１３】
次に、ロード／ストア命令受信部９３は、上位装置からストア命令を受信する。ロード／ストア命令受信部９３は、受信したストア命令を、キャッシュ部９０、リフィル管理部バッファ９２及びヒット判定部９１１及びミス判定部９１３に出力する。
リフィル管理部バッファ９２は、ロード／ストア命令受信部９３から出力されたストア命令が、自身に格納されているロード命令のいずれかと同一のライン・アドレスに対するものである場合、キャッシュ部９０にストア・データのストアをキャンセルさせる。つまり、リフィル管理部バッファ９２は、リフィルを実行中の先のロード命令と同一のライン・アドレスに対してストア命令があった場合、ストア・データのストアをキャンセルする。言い換えると、リフィル管理部バッファ９２は、ストア命令がロード命令と競合した場合に、ストア・データのストアをキャンセルするようにしている。
【００１４】
逆に、ストア・データのストアをキャンセルしない場合、ストア・データをデータＤＡとして格納した後に、リプライの要求に応じてメモリ２から出力されたリプライ・データが、ストア・データが格納されたキャッシュ・エントリにデータＤＡとして格納されて、上位装置に出力される。これによって、上位装置からストアされたデータＤＡがストア前の古いデータによって上書きされてしまい、データの整合性を保てなくなってしまう。
【００１５】
そのため、キャッシュ制御装置９は、ストア命令がロード命令と競合した場合に、ストア・データのストアをキャンセルすることで、上位装置からストアされたデータＤＡがストア前の古いデータによって上書きされないようにしている。これによって、上位装置における処理の整合性を保つことができる。
【００１６】
しかし、上位装置は、キャッシュ制御装置９においてストア・データのストアがキャンセルされた場合、その後に実行される処理の整合性を保つため、ストア・データがストアされるまでは、処理を停止する必要がある。そのため、キャッシュ制御装置９は、ストア・データのストアをキャンセルしたことを示すキャンセル通知を上位装置に送信する。上位装置は、キャッシュ制御装置９から送信されたキャンセル通知に応じて、処理を停止する。この場合、先のロード命令によるリフィルの実行が終了したときに、キャンセルしたストア命令による処理を再実行する必要がある。
【００１７】
しかし、キャッシュ制御装置９は、先のロード命令に対するリプライのタイミングが判断できない場合には、キャンセルされたストア命令の再発行を上位装置に要求するための適切なタイミングを特定することができないという問題がある。ここで、先のロード命令に対するリプライが保障される十分な待ち時間が経過した後に、ストア命令の再発行を上位装置に要求することもできる。しかし、その場合は、待ち時間によって、上位装置において処理レイテンシが発生してしまうという課題がある。
【００１８】
また、キャッシュ制御装置９は、先のロード命令に対するリプライのタイミングが判断できた場合であっても、リプライによってリフィルの実行を終了した時点から、キャンセルされたストア命令の再発行を上位装置に要求することになる。そのため、上位装置においてリフィルの実行が終了するまでの処理レイテンシが発生してしまうという課題がある。また、特許文献１に開示の技術においても、リフィル処理が終了した後に、ストア・データをキャッシュラインにストアするようにしている。そのため、特許文献１に開示の技術も、処理レイテンシが発生してしまうという同様の問題がある。
【００１９】
また、キャッシュ制御装置９は、全てのキャッシュ・エントリに対して、データの整合性を保つためには、リフィル管理部バッファ９２に全てのキャッシュ・エントリに対応してロード命令を格納するエントリが必要となってしまう。しかし、そのためには、膨大な記憶容量が必要となってしまう。そのため、現実的には、リフィル管理部バッファ９２におけるエントリ数を制限せざるを得ない。したがって、キャッシュ制御装置９は、リフィル管理部バッファ９２におけるエントリ数が制限されてしまうため、リフィルの実行数が制限されてしまうという課題もある。
【００２０】
本発明の目的は、ロード命令とストア命令が競合した場合に、データの整合性を保つことができ、かつ、処理レイテンシを低減することができるキャッシュ制御装置及びキャッシュ制御方法を提供することにある。
【課題を解決するための手段】
【００２１】
本発明の第１の態様にかかるキャッシュ制御装置は、メモリに格納されるデータを、当該メモリと上位装置との間でキャッシュするキャッシュ制御装置であって、前記データが格納されるデータ格納部と、前記データ格納部に対してリフィルを実行中に、前記上位装置から前記データ格納部にデータがストアされたか否かを示すストア情報が格納されるストア情報格納部と、前記リフィルによるデータが前記メモリから出力されたときに、前記ストア情報格納部に格納されたストア情報が前記データがストアされたことを示す場合、前記メモリから出力されたデータを、前記上位装置に直接出力するリプライ制御部と、を備えたものである。
【００２２】
本発明の第２の態様にかかるキャッシュ制御方法は、メモリに格納されるデータを、当該メモリと上位装置との間でキャッシュするキャッシュ制御方法であって、前記データが格納されるデータ格納部に対してリフィルを実行中に、前記上位装置から前記データ格納部にデータがストアされた場合、前記データがストアされたことを示すストア情報を格納するステップと、前記リフィルによるデータが前記メモリから出力されたときに、前記ストア情報が前記データがストアされたことを示す場合、前記メモリから出力されたデータを、前記上位装置に直接出力するステップと、を備えたものである。
【発明の効果】
【００２３】
上述した本発明の各態様によれば、ロード命令とストア命令が競合した場合に、データの整合性を保つことができ、かつ、処理レイテンシを低減することができるキャッシュ制御装置及びキャッシュ制御方法を提供することができる。
【図面の簡単な説明】
【００２４】
【図１】本発明の実施の形態にかかるキャッシュ制御装置の概要を示す図である。
【図２】本発明の実施の形態にかかるキャッシュ制御装置の構成図である。
【図３】本発明の実施の形態にかかるキャッシュ制御装置のフローチャートである。
【図４】本発明の他の実施の形態にかかるキャッシュ制御装置の構成図である。
【図５】背景技術に基づいたキャッシュ制御装置の構成図である。
【発明を実施するための形態】
【００２５】
本発明の実施の形態．
まず、図１を参照して、本発明の実施の形態にかかるキャッシュ制御装置の概要について説明する。図１は、本発明の実施の形態にかかるキャッシュ制御装置の概要を示す図である。
【００２６】
キャッシュ制御装置５は、データ格納部５１、ストア情報格納部５２及びリプライ制御部５３を有する。キャッシュ制御装置５は、メモリ２に格納されるデータを、メモリ２と上位装置(図示せず)との間でキャッシュする。
データ格納部５１は、データが格納される。
ストア情報格納部５２は、データ格納部５１に対してリフィルを実行中に、上位装置からデータ格納部５１にデータがストアされたか否かを示すストア情報が格納される。
リプライ制御部５３は、リフィルによるデータがメモリ２から出力されたときに、ストア情報格納部５２に格納されたストア情報がデータがストアされたことを示す場合、メモリ２から出力されたデータを、上位装置に直接出力する。
【００２７】
続いて、本発明の実施の形態にかかるキャッシュ制御装置５の動作について説明する。
キャッシュ制御装置５は、データが格納されるデータ格納部５１に対してリフィルを実行中に、上位装置からデータ格納部５１にデータがストアされた場合、データがストアされたことを示すストア情報をストア情報格納部５２に格納する。
リプライ制御部５３は、リフィルによるデータがメモリ２から出力されたときに、ストア情報格納部５２に格納されたストア情報がデータがストアされたことを示す場合、メモリ２から出力されたデータを、上位装置に直接出力する。
【００２８】
続いて、図２を参照して、本発明の実施の形態にかかるキャッシュ制御装置について説明する。図２は、本発明の実施の形態にかかるキャッシュ制御装置の構成図である。
【００２９】
キャッシュ制御装置１は、キャッシュ部１０、キャッシュ制御部１１、リプライ部１２及びロード／ストア命令受信部１３を有する。キャッシュ制御装置１は、メモリ２と接続されている。また、キャッシュ制御装置１は、上位装置(図示せず)と接続される。キャッシュ制御装置１は、上位装置と、メモリ２との間でデータをキャッシュする。キャッシュ制御装置１は、例えば、キャッシュメモリである。上位装置は、上位のＣＰＵ(Central Processing Unit)やキャッシュメモリ等である。
【００３０】
キャッシュ部１０は、複数のキャッシュ・エントリを有する。キャッシュ・エントリは、フラグＶ、フラグＭ、フラグＳ、ライン・アドレスＡＡ及びデータＤＡのそれぞれが格納される領域を含む。フラグＶは、キャッシュ・エントリに有効なデータが格納されているか否かを示す。フラグＭは、キャッシュ・エントリがリフィルを実行中であるか否かを示す。フラグＳは、リフィルを実行中のキャッシュ・エントリに対してストア命令があったか否かを示す。ライン・アドレスＡＡは、キャッシュ・エントリに格納されるデータＤＡのライン・アドレスを示す。データＤＡは、キャッシュ・エントリにキャッシュされたデータである。なお、図２では、２つ目以降のキャッシュ・エントリの図示は省略している。
【００３１】
ここで、リフィルを実行中のキャッシュ・エントリに対してストア命令があることを「リフィル・マッチ」と言う。つまり、ロード命令とストア命令が競合していることを、リフィル・マッチと言う。よって、フラグＳは、リフィル・マッチしたか否かを示すフラグとも言える。データＤＡが格納される領域は、データ格納部５１に対応する。フラグＳが格納される領域は、ストア情報格納部５２に対応する。
【００３２】
フラグＶは、例えば、キャッシュ・エントリが有効なデータを格納している場合、アクティブな値となり、そうでない場合、インアクティブな値となるビットフラグである。フラグＭは、例えば、キャッシュ・エントリがリフィルを実行中である場合、アクティブな値となり、そうでない場合、インアクティブな値となるビットフラグである。フラグＳは、例えば、リフィル・マッチした場合、アクティブな値となり、そうでない場合、インアクティブな値となるビットフラグである。本実施の形態では、アクティブな値が"１"であり、インアクティブな値が"０"の場合について例示する。
【００３３】
キャッシュ制御部１１は、ヒット判定部１１１、ヒット制御部１１２、ミス判定部１１３、ミス制御部１１４、リフィル・マッチ判定部１１５及びリフィル・マッチ制御部１１６を有する。
リプライ部１２は、リプライ受信制御部１２１、リプライ出力制御部１２２及びマルチプレクサ１２３を有する。リプライ部１２は、リプライ制御部５３として機能する。
【００３４】
ロード／ストア命令受信部１３は、上位装置から出力されたロード／ストア命令を受信する。ロード／ストア命令受信部１３は、受信したロード／ストア命令をキャッシュ部１０、ヒット判定部１１１、ミス判定部１１３及びリフィル・マッチ判定部１１５に出力する。ここで、ロード命令は、上位装置がメモリ２又はキャッシュ制御装置１からのデータのロードを要求する命令である。ロード命令は、上位装置がロードするデータのメモリ２上におけるライン・アドレスを示す情報が含まれる。ストア命令は、上位装置がキャッシュ制御装置１及びメモリ２に対してデータのストアを要求する命令である。ストア命令は、上位装置がストアするストア・データと、ストア・データのメモリ２上におけるライン・アドレスと、を示す情報が含まれる。
【００３５】
ヒット判定部１１１は、ロード／ストア命令受信部１３から出力されたロード／ストア命令が、有効なデータが格納されたキャッシュ・エントリにヒットしたか否かを判定する。
ヒット制御部１１２は、ヒット判定部１１１における判定結果に基づいて、キャッシュ部１０及びリプライ部１２を制御する。ヒット制御部１１２は、ヒット判定部１１１によってロード命令がヒットしたと判定された場合、ヒットしたキャッシュ・エントリに格納されたデータＤＡを、上位装置に出力するように制御する。ヒット制御部１１２は、ヒット判定部１１１によってストア命令がヒットしたと判定された場合、ヒットしたキャッシュ・エントリに、ストア命令に含まれるストア・データを格納するように制御する。
【００３６】
ミス判定部１１３は、ロード／ストア命令受信部１３から出力されたロード／ストア命令が、キャッシュミスしたか否かを判定する。
ミス制御部１１４は、ミス判定部１１３における判定結果に基づいて、キャッシュ部１０及びメモリ２を制御する。ミス制御部１１４は、ミス判定部１１３によってロード命令がキャッシュミスしたと判定された場合、任意のキャッシュ・エントリに対してリフィルの実行を開始するように制御する。また、ミス制御部１１４は、ミス判定部１１３によってストア命令がキャッシュミスしたと判定された場合、任意のキャッシュ・エントリに、ストア命令に含まれるストアするデータを格納するように制御する。
【００３７】
リフィル・マッチ判定部１１５は、ロード／ストア命令受信部１３から出力されたストア命令が、リフィル・マッチしたか否かを判定する。
リフィル・マッチ制御部１１６は、リフィル・マッチ判定部１１５における判定結果に基づいて、キャッシュ部１０を制御する。リフィル・マッチ制御部１１６は、リフィル・マッチ判定部１１５によってリフィル・マッチしたと判定された場合、キャッシュ部１０のリフィル・マッチしたキャッシュ・エントリに、ストア命令に含まれるストア・データ、及び、リフィル・マッチしたことを示すフラグＳを格納するように制御する。
【００３８】
また、リプライ受信制御部１２１は、メモリ２から送信されたリプライ・データを受信する。リプライ受信制御部１２１は、受信したリプライ・データを格納するキャッシュ・エントリがリフィル・マッチしたか否かを、このキャッシュ・エントリに格納されるフラグＳに基づいて判定する。リプライ受信制御部１２１は、リプライ・データを格納するキャッシュ・エントリがリフィル・マッチした場合、キャッシュ・エントリにリプライ・データを格納せずに、リプライ・データをマルチプレクサ１２３に出力する。リプライ受信制御部１２１は、リプライ・データを格納するキャッシュ・エントリがリフィル・マッチしていない場合、キャッシュ・エントリにリプライ・データを格納するとともに、リプライ・データをマルチプレクサ１２３に出力する。また、リプライ受信制御部１２１は、リプライ受信制御部１２１から出力したリプライ・データを上位装置に出力するようにリプライ出力制御部１２２を制御する。
【００３９】
リプライ出力制御部１２２は、ヒット制御部１１２及びリプライ受信制御部１２１からの制御に応じて、マルチプレクサ１２３を制御する。リプライ出力制御部１２２は、キャッシュ部１０又はリプライ受信制御部１２１のいずれかから出力されたリプライ・データを選択的に上位装置に出力するようにマルチプレクサ１２３を制御する。
マルチプレクサ１２３は、リプライ出力制御部１２２からの制御に応じて、キャッシュ部１０又はリプライ受信制御部１２１のいずれかから出力されたリプライ・データを選択的に上位装置に出力する
【００４０】
本実施の形態にかかるキャッシュ制御装置１は、上述したように、キャッシュ・エントリがリフィル・マッチした場合に、そのキャッシュ・エントリにリフィル・マッチしたことを示すフラグＳを格納するようにしている。キャッシュ制御装置１は、メモリ２からリプライ・データを受信したときに、このフラグＳに基づいて、リプライ・データを格納するキャッシ・エントリがリフィル・マッチしたか否かを判定する。そして、キャッシュ制御装置１は、リプライ・データを格納するキャッシ・エントリがリフィル・マッチしていた場合、リプライ・データをキャッシュ・エントリに格納せずに、上位装置に直接出力するようにしている。これによって、ロード命令の後のストア命令による新しいデータをキャッシュ制御装置１にストアしても、ロード命令によってメモリ２から出力された古いデータを上書きしないようにすることができる。
【００４１】
続いて、図３を参照して、本発明の実施の形態にかかるキャッシュ制御装置の動作について説明する。図３は、本発明の実施の形態にかかるキャッシュ制御装置の動作を示すフローチャートである。
【００４２】
まず、上位装置からストア命令が出力されたときの動作について説明する。
ロード／ストア命令受信部１３は、上位装置からストア命令を受信する。ロード／ストア命令受信部１３は、受信したストア命令をキャッシュ部１０、ヒット判定部１１１、ミス判定部１１３及リフィル・マッチ判定部１１５に出力する(Ｓ１００)。
【００４３】
ヒット判定部１１１は、ロード／ストア命令受信部１３から出力されたストア命令が、有効なデータが格納されたキャッシュ・エントリにヒットしたか否かを判定する(Ｓ１０１)。具体的には、ヒット判定部１１１は、キャッシュ部１０が有する複数のキャッシュ・エントリに格納されるフラグＶ、ライン・アドレスＡＡを読み出す。そして、ヒット判定部１１１は、"１"を示すフラグＶと、ストア命令に含まれるライン・アドレスと一致するライン・アドレスＡＡと、を含むキャッシュ・エントリがあるか否かを判定する。つまり、"１"を示すフラグＶと、ストア命令に含まれるライン・アドレスと一致するライン・アドレスＡＡと、を含むキャッシュ・エントリがある場合、そのキャッシュ・エントリにストア命令がヒットしたことになる。ヒット判定部１１１は、ストア命令がヒットしたか否かを示す判定結果情報を、ヒット制御部１１２に出力する。
【００４４】
ヒット制御部１１２は、ヒット判定部１１１から出力された判定結果情報がヒットしたことを示す場合、指示信号をキャッシュ部１０に出力する。この指示信号は、ロード／ストア命令受信部１３から出力されたストア命令に含まれるストア・データを、ヒットしたキャッシュ・エントリにストアするように指示する信号である。キャッシュ部１０は、ヒット制御部１１２から出力された指示信号に応じて、ヒットしたキャッシュ・エントリに、ストア命令に含まれるストア・データをデータＤＡとして格納する(Ｓ１０２)。ヒット制御部１１２は、例えば、ヒット判定部１１１からヒットしたキャッシュ・エントリを示す情報を取得する。そして、ヒット制御部１１２は、取得した情報を指示信号に含めることによって、キャッシュ部１０が指示信号からヒットしたキャッシュ・エントリを特定可能とする。
【００４５】
また、ミス判定部１１３は、ロード／ストア命令受信部１３から出力されたストア命令が、キャッシュミスしたか否かを判定する(Ｓ１０１)。具体的には、ミス判定部１１３は、キャッシュ部１０が有する複数のキャッシュ・エントリに格納されるフラグＶ、ライン・アドレスＡＡを取得する。そして、ミス判定部１１３は、"１"を示すフラグＶと、ストア命令に含まれるライン・アドレスと一致するライン・アドレスＡＡと、を含むキャッシュ・エントリがないか否かを判定する。つまり、"１"を示すフラグＶと、ストア命令に含まれるライン・アドレスと一致するライン・アドレスＡＡと、を含むキャッシュ・エントリがない場合、ストア命令がキャッシュミスしたことになる。ミス判定部１１３は、ストア命令がキャッシュミスしたか否かを示す判定結果情報を、ミス制御部１１４に出力する。
【００４６】
ミス制御部１１４は、ミス判定部１１３から出力された判定結果情報がミスしたことを示す場合、指示信号をキャッシュ部１０に出力する。この指示信号は、ロード／ストア命令受信部１３から出力されたストア命令に含まれるストア・データを、任意のキャッシュ・エントリにストアするように指示する信号である。キャッシュ部１０は、ミス制御部１１４から出力された指示信号に応じて、任意のキャッシュ・エントリに、"１"としたフラグＶを格納する。また、キャッシュ部１０は、そのキャッシュ・エントリに、ストア命令に含まれるストア・データのライン・アドレスをライン・アドレスＡＡとして格納する。また、キャッシュ部１０は、そのキャッシュ・エントリに、ストア命令に含まれるストア・データをデータＤＡとして格納する(Ｓ１０２)。ここで、キャッシュ部１０は、任意のキャッシュ・エントリを決定する場合、どのような方式によって決定してもよい。例えば、ラウンドロビン、ＬＲＵ(Least Recently Used)又はランダム等の任意の方式によって決定する。
【００４７】
また、リフィル・マッチ判定部１１５は、ロード／ストア命令受信部１３から出力されたストア命令が、リフィル・マッチしたか否かを判定する(Ｓ１０１)。具体的には、リフィル・マッチ判定部１１５は、キャッシュ部１０が有する複数のキャッシュ・エントリに格納されるフラグＭ、ライン・アドレスＡＡを取得する。そして、リフィル・マッチ判定部１１５は、"１"を示すフラグＭと、ストア命令に含まれるライン・アドレスと一致するライン・アドレスＡＡと、を含むキャッシュ・エントリがなるか否かを判定する。つまり、"１"を示すフラグＭと、ストア命令に含まれるライン・アドレスと一致するライン・アドレスＡＡと、を含むキャッシュ・エントリがなる場合、そのキャッシュ・エントリにストア命令がリフィル・マッチしたことになる。リフィル・マッチ判定部１１５は、リフィル・マッチしたか否かを示す判定結果情報を、リフィル・マッチ制御部１１６に出力する。
【００４８】
リフィル・マッチ制御部１１６は、リフィル・マッチ判定部１１５から出力された判定結果情報がリフィル・マッチしたことを示す場合、指示信号をキャッシュ部１０に出力する。この指示信号は、ロード／ストア命令受信部１３から出力されたストア命令に含まれるストア・データを、リフィル・マッチしたキャッシュ・エントリにストアするように指示する信号である。キャッシュ部１０は、リフィル・マッチ制御部１１６から出力された指示信号に応じて、リフィル・マッチしたキャッシュ・エントリに、"１"としたフラグＶを格納する。また、キャッシュ部１０は、そのキャッシュ・エントリに、"１"としたフラグＳを格納する。また、キャッシュ部１０は、そのキャッシュ・エントリに、ストア命令に含まれるストア・データをデータＤＡとして格納する(Ｓ１０３)。
【００４９】
リフィル・マッチ制御部１１６は、例えば、リフィル・マッチ判定部１１５からリフィル・マッチしたキャッシュ・エントリを示す情報を取得する。そして、リフィル・マッチ制御部１１６は、取得した情報を指示信号に含めることによって、キャッシュ部１０がリフィル・マッチしたキャッシュ・エントリを特定可能とする。また、キャッシュ部１０は、リフィル・マッチ制御部１１６から指示信号が出力された場合、ミス制御部１１４から出力された指示信号に応じて、任意のキャッシュ・エントリにフラグＶ、ライン・アドレスＡＡ及びデータＤＡを格納しないようにする。このようにすることで、ストア・データが複数のキャッシュ・エントリに重複してストアされることを防ぐ。
【００５０】
続いて、上位装置からロード命令が出力されたときの動作について説明する。
ロード／ストア命令受信部１３は、上位装置からロード命令を受信する。ロード／ストア命令受信部１３は、受信したストア命令をキャッシュ部１０、ヒット判定部１１１、ミス判定部１１３及リフィル・マッチ判定部１１５に出力する(Ｓ２００)。
【００５１】
ヒット判定部１１１は、ロード／ストア命令受信部１３から出力されたロード命令が、有効なデータが格納されたキャッシュ・エントリにヒットしたか否かを判定する(Ｓ２０１)。ヒット判定部１１１は、ロード命令がヒットしたか否かを示す判定結果情報を、ヒット制御部１１２に出力する。
【００５２】
ヒット制御部１１２は、ヒット判定部１１１から出力された判定結果情報がヒットしたことを示す場合、指示信号をキャッシュ部１０に出力する。この指示信号は、ヒットしたキャッシュ・エントリに格納されたデータＤＡを、マルチプレクサ１２３に出力するように指示する信号である。また、ヒット制御部１１２は、指示信号をリプライ出力制御部１２２に出力する。この指示信号は、キャッシュ部１０から出力されたデータＤＡをリプライ・データとして上位装置に出力するように指示する信号である。
【００５３】
キャッシュ部１０は、ヒット制御部１１２から出力された指示信号に応じて、ヒットしたキャッシュ・エントリに格納されたデータＤＡを、マルチプレクサ１２３に出力する(Ｓ２０２)。ヒット制御部１１２は、例えば、ヒット判定部１１１からヒットしたキャッシュ・エントリを示す情報を取得する。ヒット制御部１１２は、取得した情報を指示信号に含めることによって、キャッシュ部１０が指示信号からヒットしたキャッシュ・エントリを特定可能とする。リプライ出力制御部１２２は、ヒット制御部１１２から出力された指示信号に応じて、キャッシュ部１０から出力されたデータＤＡをリプライ・データとして上位装置に出力する(Ｓ２０８)。
【００５４】
また、ミス判定部１１３は、ロード／ストア命令受信部１３から出力されたロード命令が、キャッシュミスしたか否かを判定する(Ｓ２０１)。ミス判定部１１３は、ストア命令がキャッシュミスしたか否かを示す判定結果情報を、ミス制御部１１４に出力する。
ミス制御部１１４は、ミス判定部１１３から出力された判定結果情報がミスしたことを示す場合、任意のキャッシュ・エントリに対して、リフィルの実行を開始する。具体的には、ミス制御部１１４は、指示信号をキャッシュ部１０に出力する。この指示信号は、任意のキャッシュ・エントリに対するリフィルの実行を指示する信号である。キャッシュ部１０は、ミス制御部１１４から出力された指示信号に応じて、任意のキャッシュ・エントリに、"０"としたフラグＶを格納する。また、キャッシュ部１０は、そのキャッシュ・エントリに、"１"としたフラグＭを格納する。また、キャッシュ部１０は、そのキャッシュ・エントリに、ロード命令に含まれるライン・アドレスをライン・アドレスＡＡとして格納する。
【００５５】
また、ミス制御部１１４は、ロード命令に含まれるライン・アドレスのデータのリプライを要求する信号をメモリ２に送信する(Ｓ２０３)。ヒット制御部１１２は、例えば、ミス判定部１１３からロード命令に含まれるライン・アドレスを取得して、取得したライン・アドレスのデータのリプライを要求する。
【００５６】
リプライ受信制御部１２１は、メモリ２からリプライ・データが送信された場合(Ｓ２０４)、リプライ・データの格納対象となっているキャッシュ・エントリのフラグＳが、"０"か"１"か、を判定する(Ｓ２０５)。
【００５７】
フラグＳが"０"である場合、リプライ受信制御部１２１は、そのキャッシュ・エントリに、"１"としたフラグＶを格納する。また、リプライ受信制御部１２１は、そのキャッシュ・エントリに、"０"としたフラグＭを格納する。また、リプライ受信制御部１２１は、そのキャッシュ・エントリに、メモリ２から送信されたリプライ・データをデータＤＡとして格納する(Ｓ２０６)。メモリ２は、例えば、リプライ・データと共に、リプライ・データのライン・アドレスをリプライ受信制御部１２１に送信する。リプライ受信制御部１２１は、メモリ２から送信されたライン・アドレスと一致するライン・アドレスＡＡが格納されるキャッシュ・エントリを、リプライ・データの格納対象のキャッシュ・エントリとして特定する。
【００５８】
そして、リプライ受信制御部１２１は、メモリ２から送信されたリプライ・データをマルチプレクサ１２３に出力する。リプライ受信制御部１２１は、リプライ受信制御部１２１から出力されたリプライ・データを上位装置に出力するように指示する指示信号をリプライ出力制御部１２２に出力する。リプライ出力制御部１２２は、リプライ受信制御部１２１から出力された指示信号に応じて、選択信号をマルチプレクサ１２３に出力する。マルチプレクサ１２３は、リプライ出力制御部１２２から出力された選択信号に応じて、リプライ受信制御部１２１から出力されたリプライ・データを上位装置に送信する(Ｓ２０８)。
【００５９】
フラグＳが"１"である場合、リプライ・データの格納対象となっているキャッシュ・エントリで、リフィル・マッチが発生したことになる。つまり、ステップＳ２０３〜Ｓ２０４までに、ステップＳ１０４が実行されたことになる。その場合、リプライ受信制御部１２１は、そのキャッシュ・エントリに、"０"としたフラグＭを格納する。また、リプライ受信制御部１２１は、そのキャッシュ・エントリに、"０"としたフラグＳを格納する(Ｓ２０７)。リプライ受信制御部１２１は、フラグＳが"１"となっていたため、そのキャッシュ・エントリに、メモリ２から送信されたリプライ・データは格納しない。そして、リプライ受信制御部１２１は、上述と同様に、メモリ２から送信されたリプライ・データを上位装置に送信する(Ｓ２０８)。
【００６０】
本発明の他の実施の形態．
図４は、本発明の他の実施の形態にかかるキャッシュ制御装置の構成図である。
ここで、上述した実施の形態では、フラグＶ、Ｍ、Ｓがとり得るパターンが、以下の４つのパターンとなっている。
【００６１】
１．フラグＶ＝"０"、フラグＭ＝"０"、フラグＳ＝"０"：キャッシュ・エントリが無効である場合
２．フラグＶ＝"０"、フラグＭ＝"１"、フラグＳ＝"０"：キャッシュ・エントリが無効、かつ、リフィル実行中である場合
３．フラグＶ＝"１"、フラグＭ＝"０"、フラグＳ＝"０"：キャッシュ・エントリが有効、かつ、ストア及びリフィル・マッチなしの場合
４．フラグＶ＝"１"、フラグＭ＝"１"、フラグＳ＝"１"：キャッシュ・エントリが有効、かつ、ストア及びリフィル・マッチありの場合
【００６２】
したがって、図４に示すように、それぞれの４つのパターンを、３ビットのフラグＶ、Ｍ、Ｓに代えて、２ビットのフラグＦＡ(Flag Array)によって示すようにしてもよい。具体的には、上述した４つのパターンを、"００"、"０１"、"１０"、"１１"として表すようにしてもよい。つまり、フラグＶ、Ｍ、Ｓのとり得るパターンを、フラグＶ、Ｍ、Ｓによって表した場合よりも少ないビット数のビットパターンによって示す情報によって表すようにしてもよい。
【００６３】
これによれば、キャッシュ・エントリの状態を管理する情報を格納するための記憶容量を低減することができるため、さらに小量のハードウェアによって本実施の形態における機能を実装することが可能となる。
【００６４】
以上に説明したように、本実施の形態では、キャッシュ・エントリに対してリフィルを実行中に、上位装置からキャッシュ・エントリにデータがストアされたか否かを示すフラグＳを備えるようにしている。そして、リプライ部１２は、リフィルによるデータがメモリ２から出力されたときに、フラグＳがデータがストアされたことを示す場合、メモリ２から出力されたデータを、上位装置に直接出力するようにしている。
【００６５】
そのため、ロード命令とストア命令が競合して、リフィルを実行中に上位装置からキャッシュ・エントリにデータがストアされた場合に、リフィルによるデータをストアしたデータに上書きせずに、メモリ２に直接出力するようにすることができる。また、上位装置がリフィルを実行中であっても待たされることなく、データをストアすることができる。したがって、ロード命令とストア命令が競合した場合に、データの整合性を保つことができ、かつ、処理レイテンシを低減することができる。
【００６６】
また、本実施の形態によれば、上位装置がリフィルを実行中であっても待たされることなく、データをストアすることができるため、上位装置がキャッシュを使用することのできる期間を長期化することができる。
【００６７】
また、本実施の形態によれば、全てのキャッシュ・エントリに対して小量のフラグを追加することによって、本実施の形態にかかる機能を実装することが可能である。これによれば、全てのキャッシュ・エントリに対応してロード命令を格納するエントリを実装する場合と比較して、小量のハードウェアを追加することによって、データの整合性を保つことができ、かつ、処理レイテンシを低減することができる。
【００６８】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【符号の説明】
【００６９】
１、５、９        キャッシュ制御装置
２            メモリ
１０、９０        キャッシュ部
１１、９１        キャッシュ制御部
１２            リプライ部
１３、９３        ロード／ストア命令受信部
５１            データ格納部
５２            ストア情報格納部
５３            リプライ制御部
９２            リフィル管理部バッファ
９４、１２３        マルチプレクサ
１１１、９１１        ヒット判定部
１１２、９１２        ヒット制御部
１１３、９１３        ミス判定部
１１４、９１４        ミス制御部
１１５            リフィル・マッチ判定部
１１６            リフィル・マッチ制御部
１２１            リプライ受信制御部
１２２            リプライ出力制御部
Ｖ、Ｍ、Ｓ、ＦＡ    フラグ
ＡＡ            ライン・アドレス
ＤＡ            データ
【図１】
2012014318.tif 000003
【図２】
2012014318.tif 000004
【図３】
2012014318.tif 000005
【図４】
2012014318.tif 000006
【図５】
2012014318.tif 000007