(57)【特許請求の範囲】
【請求項１】
上位からアクセスされるメモリのデータをキャッシュするキャッシュ制御装置であって、
前記上位からのロード・リクエストに対して、キャッシュ・ヒットもリフィル・マッチもしないようなミスが発生したならば、該ミスをしたメモリ・アドレスを含む複数のメモリ・アドレスのデータをキャッシュ・ライン分のデータとして前記メモリに対して要求し、前記ミスをしたメモリ・アドレスの記録である第１種の記録をする手段と、
前記要求に係るキャッシュ・ラインに対応する前記複数のメモリ・アドレスのうちの何れかのメモリ・アドレスに対するロード・リクエストを前記上位から受けたならば、リフィル・マッチが発生したと判断して、前記何れかのメモリ・アドレスの記録である第２種の記録をする手段と、
前記メモリから前記要求に対する応答を受信したならば、該応答に含まれるキャッシュ・ライン分のデータを当該キャッシュ装置にリフィルし、更に、前記キャッシュ・ライン分のデータのうちの前記第１種又は前記第２種の記録がされているそれぞれのメモリ・アドレスのデータを、その記録に係るロード・リクエストに対応した応答に含めて前記上位に送信する手段と、
を備えることを特徴とするキャッシュ制御装置。
【請求項２】
請求項１に記載のキャッシュ制御装置であって、
前記リフィル・マッチが発生した前記ロード・リクエストに対応して前記上位に送るべき前記応答に前記リフィル・マッチが発生した時にリプライ識別情報を付与し、該リプライ識別情報を、前記リフィル・マッチに係る前記メモリ・アドレスと共に記録し、前記メモリから前記応答を受信したならば、前記リフィル・マッチが発生したロード・リクエストに対応した前記応答を識別するために利用する手段を更に備えること特徴とするキャッシュ制御装置。
【請求項３】
請求項１又は２に記載のキャッシュ制御装置であって、
前記上位からのロード・リクエストに対してヒットが発生したならば、リフィル済みのデータを前記上位装置に送信する手段を更に備えることを特徴とするキャッシュ制御装置。
【請求項４】
上位からアクセスされるメモリのデータをキャッシュするキャッシュ制御方法であって、
前記上位からのロード・リクエストに対して、キャッシュ・ヒットもリフィル・マッチもしないようなミスが発生したならば、該ミスをしたメモリ・アドレスを含む複数のメモリ・アドレスのデータをキャッシュ・ライン分のデータとして前記メモリに対して要求し、前記ミスをしたメモリ・アドレスの記録である第１種の記録をするステップと、
前記要求に係るキャッシュ・ラインに対応する前記複数のメモリ・アドレスのうちの何れかのメモリ・アドレスに対するロード・リクエストを前記上位から受けたならば、リフィル・マッチが発生したと判断して、前記何れかのメモリ・アドレスの記録である第２種の記録をするステップと、
前記メモリから前記要求に対する応答を受信したならば、該応答に含まれるキャッシュ・ライン分のデータをキャッシュ装置にリフィルし、更に、前記キャッシュ・ライン分のデータのうちの前記第１種又は前記第２種の記録がされているそれぞれのメモリ・アドレスのデータを、その記録に係るロード・リクエストに対応した応答に含めて前記上位に送信するステップと、
を有することを特徴とするキャッシュ制御方法。
【請求項５】
請求項４に記載のキャッシュ制御方法であって、
前記リフィル・マッチが発生した前記ロード・リクエストに対応して前記上位に送るべき前記応答に前記リフィル・マッチが発生した時にリプライ識別情報を付与し、該リプライ識別情報を、前記リフィル・マッチに係る前記メモリ・アドレスと共に記録し、前記メモリから前記応答を受信したならば、前記リフィル・マッチが発生したロード・リクエストに対応した前記応答を識別するために利用するステップを更に有すること特徴とするキャッシュ制御方法。
【請求項６】
請求項４又は５に記載のキャッシュ制御方法であって、
前記上位からのロード・リクエストに対してヒットが発生したならば、リフィル済みのデータを前記上位装置に送信するステップを更に有することを特徴とするキャッシュ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータなどに含まれるキャッシュメモリを制御するためのキャッシュ制御装置及びそのキャッシュ制御装置で行われるキャッシュ制御方法に関する。
【背景技術】
【０００２】
従来のキャッシュ制御装置を、図１を参照して説明する。
【０００３】
図１において、リフィル管理バッファ９０１は、リフィル実行中のロード命令を格納することでキャッシュ・ステータスの過渡状態を管理する。具体的な動作の例としては、リフィル管理バッファ９０１に格納されているロード命令と同一アドレスの後続ロード命令を受信した際には、上位に対してキャンセル通知などを行い、先行のロード命令の過渡状態が解消されてから再度ロード命令の処理を行う。
【特許文献１】特開２００４−０２１８９６号公報
【特許文献２】特開２００７−２２６６４１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来のキャッシュ制御装置においては、次のような課題がある。
【０００５】
第１の課題は、キャッシュの１エントリに格納できるデータの量が、ロード命令の転送長に限定されるため、キャッシュ部９０２の制御ハードウェアに対するデータ量が相対的にすくなくなってしまうということである。
【０００６】
第２の課題は、リフィル実行中のロード命令を管理するためにリフィル管理バッファ９０１を使用し、全エントリに対して後続のロード命令とのアドレス比較を行うため、仕掛かることの出来るリフィル数が多くすることができないということである。
【０００７】
第３の課題は、上位にキャンセル通知を行うが、先行のリフィル一致したロード命令に対するリプライの発生有無が判断できないため、キャンセルされたロード命令に対する再発行を指示するための適切な時期が特定できないということである。
【０００８】
特許文献１には、キャッシュラインをブロックに分割し、ブロック単位のファイルチェックビットを設けることが記載されているが、これは、１ラインをフィルするためのフィル動作を４つのブロックに分割して行い、それぞれのブロックのフィルが完了したかをチェックするためのものである。この発明からは、フィル動作中にアクセスのあったブロックを保持することに想到することはできない。
【０００９】
また、特許文献２に記載の発明では、ラインサイズを大きくすることができない。
【００１０】
本発明の目的は、キャッシュの１エントリあたりに格納できるデータ量を、ライン・アドレス分まで増やすことで、キャッシュ部の制御ハードウェア量に対するデータ量を増やすことである。
【００１１】
また、本発明の別の目的は、上記の目的が達成された場合のデメリットとして、後続の同一ライン・アドレスのロードがキャッシュのリフィル実行中にマッチする可能性が高まることがあるが、その対策として、リフィル実行中のロード命令と同一ライン・アドレスの後続ロード命令をメモリ・インタフェース上に発行することなく、先行のロード命令に対するリプライを受信する時に後続のロード命令に対するリプライを増殖して（追加して）転送するキャッシュ制御装置及びキャッシュ制御方法を提供することにある。
【課題を解決するための手段】
【００１２】
本発明によれば、上位からアクセスされるメモリのデータをキャッシュするキャッシュ制御装置であって、前記上位からのロード・リクエストに対して、キャッシュ・ヒットもリフィル・マッチもしないようなミスが発生したならば、該ミスをしたメモリ・アドレスを含む複数のメモリ・アドレスのデータをキャッシュ・ライン分のデータとして前記メモリに対して要求し、前記ミスをしたメモリ・アドレスの記録である第１種の記録をする手段と、前記要求に係るキャッシュ・ラインに対応する前記複数のメモリ・アドレスのうちの何れかのメモリ・アドレスに対するロード・リクエストを前記上位から受けたならば、リフィル・マッチが発生したと判断して、前記何れかのメモリ・アドレスの記録である第２種の記録をする手段と、前記メモリから前記要求に対する応答を受信したならば、該応答に含まれるキャッシュ・ライン分のデータを当該キャッシュ装置にリフィルし、更に、前記キャッシュ・ライン分のデータのうちの前記第１種又は前記第２種の記録がされているそれぞれのメモリ・アドレスのデータを、その記録に係るロード・リクエストに対応した応答に含めて前記上位に送信する手段と、を備えることを特徴とするキャッシュ制御装置が提供される。
【００１３】
また、本発明によれば、上位からアクセスされるメモリのデータをキャッシュするキャッシュ制御方法であって、前記上位からのロード・リクエストに対して、キャッシュ・ヒットもリフィル・マッチもしないようなミスが発生したならば、該ミスをしたメモリ・アドレスを含む複数のメモリ・アドレスのデータをキャッシュ・ライン分のデータとして前記メモリに対して要求し、前記ミスをしたメモリ・アドレスの記録である第１種の記録をするステップと、前記要求に係るキャッシュ・ラインに対応する前記複数のメモリ・アドレスのうちの何れかのメモリ・アドレスに対するロード・リクエストを前記上位から受けたならば、リフィル・マッチが発生したと判断して、前記何れかのメモリ・アドレスの記録である第２種の記録をするステップと、前記メモリから前記要求に対する応答を受信したならば、該応答に含まれるキャッシュ・ライン分のデータをキャッシュ装置にリフィルし、更に、前記キャッシュ・ライン分のデータのうちの前記第１種又は前記第２種の記録がされているそれぞれのメモリ・アドレスのデータを、その記録に係るロード・リクエストに対応した応答に含めて前記上位に送信するステップと、を有することを特徴とするキャッシュ制御方法が提供される。
【発明の効果】
【００１４】
本発明によれば、キャッシュメモリのデータエリアの１ラインに格納することのできるデータ量を増やすことができる。
【発明を実施するための最良の形態】
【００１５】
以下、図面を参照して本発明を実施するための最良の形態について詳細に説明する。
【００１６】
本発明は、キャッシュを有する制御装置において、小量の制御ハードウェアを追加することにより、１キャッシュ・エントリあたりのデータ量を増やすことを可能とし、またキャッシュ・ミスによるリフィル実行中のキャッシュ・ステータス過渡状態に発行された後続の同一ライン・アドレスのロード命令のレイテンシを隠蔽することと、メモリ・インタフェースの占有率を縮小することを特徴としている。
【００１７】
図２において、リフィル・マッチ判定部１０１−１は、現在のロード命令のライン・アドレスと現在リフィルを行っているライン・アドレスが同一か否かを判定し、同一であることを判断するとリフィル・マッチ制御部１０１−３にその旨を通知し、リフィル・マッチ制御部１０１−３からキャッシュ部１０５のＦフラグ１０５−５とＺＮフラグ１０５−７をセットするとともに、ＤＡ(Data Area;データエリア)（データ又はリプライ情報）１０５−１１にリプライ情報（どのロードリクエストに対するリプライであるのかを識別する情報）を格納する。リプライ受信時には、リプライ増殖部１０７−１にてキャッシュ部１０５のＦフラグ１０５−５とＺＮフラグ１０５−７を読み出し、Ｆフラグ１０５−５の読み出し結果が１以上である際にはＺＮフラグ１０５−７で指示されたデータ位置のデータを選択してリプライを増殖する旨をリプライ制御部１０７−３に通知する。
【００１８】
このようにして、本発明では、小量の制御ハードウェアを追加することで、１キャッシュ・エントリあたりのデータ量を増やすことが可能となる。また、キャッシュ・エントリあたりのデータ量を増やすことのデメリットとして、後続の同一ライン・アドレスのロードがキャッシュのリフィル実行中にマッチする可能性が高まることがあるが、その対策として、通常は無効なデータが格納されているリフィル実行中のＤＡ１０５−１１を活用しリプライ情報の格納を行い、後続の同一ライン・アドレスのロード命令をメモリ・インタフェース上に発行することなく、先行のロード命令に対するリプライ受信時に後続のロード命令に対するリプライを増殖して（追加して）上位に転送することを可能とする。その結果として、後続の同一ライン・アドレスのロード命令のレイテンシを隠蔽することと、メモリ・インタフェースの占有率を縮小することができる。
【００１９】
図２を参照すると、本発明の一実施形態としてのキャッシュ制御装置が示されている。
【００２０】
キャッシュ部１０５には、キャッシュ・エントリが有効なデータを格納していることを示すＶフラグ１０５−１と、キャッシュ・エントリがリフィル実行中であることを示すＭフラグ１０５−３と、キャッシュ・エントリに対してリフィル実行中と同一ライン・アドレスのロード命令があった回数を示すＦフラグ１０５−５と、有効なデータ転送位置を示すＺＮフラグ１０５−７と、キャッシュ・エントリの各データのライン・アドレスを格納するＡＡ(Address Area；アドレスエリア)１０５−９と、キャッシュ・エントリのデータまたはリフィル・マッチしたロード命令のリプライ情報を格納するＤＡ１０５−１１とを有する。
【００２１】
キャッシュ制御部１０１は、
ロード命令が有効なキャッシュ・エントリにヒットしたか否かを判定するヒット判定部１０１−５と、ヒット判定部１０１−５にてヒットした旨が通知されキャッシュ部１０５からリプライ・データを読み出す制御を行うヒット制御部１０１−７と、
ロード命令がキャッシュにミスしたか否かを判定するミス判定部１０１−９と、ミス判定部１０１−９にてミスした旨が通知されキャッシュ部１０５にリフィル実行中であることを書き込む制御を行うミス制御部１０１−１１と、リフィルのためのメモリ・ロードをキャッシュ・ライン・サイズまで拡張する転送長拡張部１０１−１３と、
ロード命令がリフィル実行中のキャッシュ・エントリに対するものか否か（すなわち、リフィル・マッチするか否か）を判定するリフィル・マッチ判定部１０１−１と、リフィル・マッチ判定部１０１−１にてリフィル・マッチした旨が通知されキャッシュ部１０５にリフィル・マッチした回数およびリプライ情報を書き込む制御を行うリフィル・マッチ制御部１０１−３とを有する。
【００２２】
リプライ部１０７は、メモリ１０９からのリプライ受信時にキャッシュ部１０５の読み出しを行い、リフィル・マッチの発生有無を判断し、リフィル・マッチの発生時には再度キャッシュ部１０５への読出し動作を行うことによりリプライ情報を取得することでリプライの増殖を行うリプライ増殖部１０７−１と、ＺＮフラグ１０５−７で指示された位置のデータを選択する転送データ選択部１０７−５と、３種類のリプライ（キャッシュ・エントリにヒットしたリプライまたはメモリからのリプライまたはリフィル・マッチにより増殖されたリプライ）のうちの何れかを選択するスイッチ１０７−７を制御するリプライ制御部１０７−３とを有する。
【００２３】
以上詳細に実施形態の構成を述べたが、図２のメモリ１０９は、当業者にとってよく知られており、また本発明とは直接関係しないので、その詳細な構成は省略する。
【００２４】
次に図２のキャッシュ制御装置の動作を図３に示すフローチャートを使用して説明する。
【００２５】
図３において、ロード命令を受信すると（２０１）、本キャッシュ制御装置は、ロード命令のライン・アドレスとＡＡ１０５−９とが一致するキャッシュ・エントリの、Ｖフラグ１０５−１と、Ｍフラグ１０５−３と、Ｆフラグ１０５−５と、を読み出し、ロード命令に対するキャッシュのヒット、ミス、リフィル・マッチを判定する（２０３）。
【００２６】
ロード命令のライン・アドレスとＡＡ１０１−９とが一致するキャッシュ・エントリのＶフラグ１０５−１が有効である場合、ヒットと判定し、引き続きＤＡを読出し（２０５）、リプライを上位に転送する（２０７）。
【００２７】
ロード命令のライン・アドレスとＡＡ１０１−９とが一致するキャッシュ・エントリが存在しない場合、ミスと判定し、キャッシュ・リプレース動作として、Ｖフラグ１０５−１の無効化、Ｍフラグの有効化１０５−３、ＺＮフラグ１０５−７の更新、ＡＡ１０５−９の更新、を行い（２０９）、転送長拡張部１０１−１３にてライン・サイズまでロード命令のアドレスとコマンドを拡張してからメモリ１０９にリフィルのリクエストを発行する。
【００２８】
ロード命令のライン・アドレスとＡＡ１０１−９とが一致するキャッシュ・エントリのＭフラグ１０５−３が有効である場合、リフィル・マッチ動作として、Ｖフラグ１０５−１の無効化、Ｆフラグ１０５−５に＋１値の書込み、ＺＮフラグの更新１０５−７（２１１）、ＤＡ１０５−１１にリプライ情報の書込み（２１３）、を行う。
【００２９】
メモリ１０９からリプライを受信した際には（２１５）、該当するキャッシュ・エントリのＦフラグ１０５−５とＺＮフラグ１０５−７の読出しを行い、Ｆ＝０の場合は、メモリ１０９からのライン・サイズのリプライ・データをＺＮフラグ１０５−７で指示された位置のデータに転送データ選択部１０７−５にて選択して上位に転送すると共に（２１７）、Ｖフラグの有効化、Ｍフラグの無効化、ＤＡにリプライ・データの書込み（２１９）、を行う。Ｆ＝ｎ（ｎは１以上）の場合は、さらに、ＤＡの読出しを行い（２２１）、ＤＡ１０５−１１に格納されたリプライ情報を付与し、リフィル・マッチ分のリプライのためにリプライをｎ回に増殖し、ＺＮフラグ１０５−７で指示された位置のデータに転送データ選択部１０７−５にて選択して上位に転送し（２２６）、さらにＶフラグ１０５−１の有効化、Ｍフラグ１０５−３の無効化、Ｆフラグ１０５−５の無効化、ＤＡ１０５−１１にリプライ・データの書込み（２２３）、を行う。
【００３０】
以上説明したように、本実施形態においては、以下に記載するような効果を奏する。
【００３１】
第１の効果は、キャッシュの１エントリに格納できるデータ量を、ライン・アドレス分まで増やすことが可能となり、キャッシュ部の制御ハードウェア量に対するデータ量を増やすことが可能となる。
【００３２】
第２の効果は、先行のロード命令のリプライを受信した時に、後続の同一ライン・アドレスのロード命令のリプライを増殖して上位に転送しているので、後続のロード命令のレイテンシを短縮することができることである。
【００３３】
第３の効果は、先行のロード命令と同一ライン・アドレスの後続のロード命令をメモリ・インタフェース上に発行していないので、メモリ・インタフェースの占有率を低減することができることである。
【００３４】
本発明の他の実施形態として、その基本的構成は上記の通りであるが、リフィル・マッチ回数とデータ転送位置の保持方法についてさらに工夫している。その構成を図４に示す。図４において、リフィル・マッチ回数とデータ転送位置はＦフラグとＺＮフラグにより保持するのではなく、リフィル・マッチ時のＤＡ１０５−１５内にリフィル・マッチ回数３０１と、データ転送位置を保持するエリア３０３と、リプライ情報を保持するエリア３０５と分けて定義する。
【００３５】
このように、本実施例では、Ｆフラグ１０５−１３を１ｂｉｔとすることが可能となりさらに小量のハードウェアにて実現することが可能となる。
【図面の簡単な説明】
【００３６】
【図１】従来例によるキャッシュ制御装置の構成を示すブロック図である。
【図２】本発明の実施形態によるキャッシュ制御装置の構成を示すブロック図である。
【図３】図２に示すキャッシュ制御装置の動作を示すフローチャートである。
【図４】本発明の他の実施形態によるキャッシュ制御装置の構成を示すブロック図である。
【符号の説明】
【００３７】
１０１  キャッシュ制御部
１０１−１  リフィルマッチ判定部
１０１−３  リフィルマッチ制御部
１０１−５  ヒット判定部
１０１−７  ヒット制御部
１０１−９  ミス判定部
１０１−１１  ミス制御部
１０１−１３  転送長拡張部
１０５  キャッシュ部
１０５−１  Ｖフラグ
１０５−３  Ｍフラグ
１０５−５  Ｆフラグ
１０５−７  ＺＮフラグ
１０５−９  ＡＡ（アドレスエリア）
１０５−１１  ＤＡ（データエリア）
１０７  リプライ部
１０７−１  リプライ増殖部
１０７−３  リプライ制御部
１０７−５  転送データ選択部
１０７−７  スイッチ
【図１】
0005317006.tif 000002
【図３】
0005317006.tif 000003
【図２】
0005317006.tif 000004
【図４】
0005317006.tif 000005