(57)【特許請求の範囲】
【請求項１】
キャッシュエントリ内にキャッシュデータを保持するデータ部と、前記キャッシュデータに対応した状態を管理するためのタグ情報を、１つの前記キャッシュエントリに格納されるデータのサイズよりも小さいキャッシュデータの管理単位毎に保持するタグ部とを備えるキャッシュメモリと、
前記キャッシュメモリに含まれるキャッシュデータにアクセスを行うプロセッサと、
キャッシュミスヒットが発生した場合に主記憶にアクセスする主記憶アクセス部と、
キャッシュミスヒットが発生した場合にミスヒットしたキャッシュデータを含む前記管理単位の状態をアクセス中とするように、対応する前記タグ情報を書き換える状態管理手段と、
を含む情報処理装置であって、
前記プロセッサが前記データ部へ書き込もうとするデータのサイズが、前記管理単位より小さく、かつ、書き込み先のキャッシュデータを含む管理単位の状態が前記アクセス中であることを判定する判定手段を有し、
前記状態管理手段は、前記判定が肯定である場合に、書き込もうとする前記データを書き込まずに、書き込み先のキャッシュデータを含む前記管理単位の状態を無効とするように、対応する前記タグ情報を書き換えることを特徴とする情報処理装置。
【請求項２】
キャッシュエントリ内にキャッシュデータを保持するデータ部と、前記キャッシュデータの状態を管理するためのタグ情報を、１つの前記キャッシュエントリに格納されるデータのサイズよりも小さいキャッシュデータの管理単位毎に保持するタグ部とを含むキャッシュメモリと、
前記キャッシュメモリに含まれるキャッシュデータにアクセスを行うプロセッサと、
キャッシュミスヒットが発生した場合に主記憶にアクセスする主記憶アクセス部と、
キャッシュミスヒットが発生した場合にミスヒットしたキャッシュデータを含む前記管理単位の状態をアクセス中とするように、対応する前記タグ情報を書き換える状態管理手段とを含む情報処理装置であって、
前記プロセッサが前記データ部へ書き込もうとするデータのサイズが、前記管理単位より小さく、かつ、書き込み先のキャッシュデータを含む管理単位の状態がアクセス中であることを判定する判定手段と、
前記判定が肯定である場合に、主記憶へのアクセスが完了するまで、書き込もうとするキャッシュデータの書き込みを遅延させる遅延手段とを有することを特徴とする情報処理装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
キャッシュミスヒットに伴う外部アクセス中に、後続のキャッシュアクセスを受け付け、高性能化を図ったキャッシュメモリに関するものである。
【０００２】
【従来の技術】
従来のキャッシュメモリの例としては、キャッシュ・バイパス・バッファがある。この方式については、富田眞治、村上和彰 共著、「計算機システム工学」、昭晃堂、９７〜９８頁に詳細が述べられている。この従来のキャッシュの動作例を示すタイミングチャートを図３に示す。
【０００３】
ミスヒット時（第１クロック（Ｔ１）で発生）には、データのリードのための最初の外部アクセスの完了（Ｔ５）まで、後続のキャッシュアクセス（ｎｅｘｔ）は遅延されていた。
【０００４】
【発明が解決しようとする課題】
しかしながら、より高い性能を目指すには、ミスヒットに伴う外部アクセス中に、後続のキャッシュアクセスを受け付ける必要がある。この場合、外部アクセス中のキャッシュエントリに対するアクセスの扱いが重要となる。後続のキャッシュアクセスがリード動作時は、必要なデータがアクセス中であり、遅延させる必要があるが、ライト動作時は、基本的に、キャッシュ内にデータを書き込むことによって、完了させることができる。
【０００５】
しかし、時間的には、先行する命令によって起動された外部アクセスに伴って読み込まれたデータのキャッシュメモリへの書き込みより、後続の命令によるキャッシュメモリへのライト動作が先行して行なわれ、古いデータによる新しいデータの破壊が生じるという課題を有していた。
【０００６】
本発明は上記課題に鑑み、データの破壊を伴うことなく、外部アクセス中のデータに対し、後続のライト動作を完了できる、高性能化を図ったキャッシュメモリの提供を目的とする。
【０００８】
本発明は上記課題を解決するために、キャッシュエントリ内にキャッシュデータを保持するデータ部と、前記キャッシュデータに対応した状態を管理するためのタグ情報を、１つの前記キャッシュエントリに格納されるデータのサイズよりも小さいキャッシュデータの管理単位毎に保持するタグ部とを備えるキャッシュメモリと、キャッシュミスヒットが発生した場合に主記憶にアクセスする主記憶アクセス部と、キャッシュミスヒットが発生した場合にミスヒットしたキャッシュデータを含む前記管理単位の状態をアクセス中とするように、対応する前記タグ情報を書き換える状態管理手段と、前記キャッシュメモリに含まれるキャッシュデータにアクセスを行うプロセッサとを含む情報処理装置であって、前記プロセッサが前記データ部へ書き込もうとするデータのサイズが、前記管理単位より小さく、かつ、書き込み先のキャッシュデータを含む管理単位の状態が前記アクセス中であることを判定する判定手段を有し、前記状態管理手段は、前記判定が肯定である場合に、書き込もうとする前記データを書き込まずに、書き込み先のキャッシュデータを含む前記管理単位の状態を無効とするように、対応する前記タグ情報を書き換えることを特徴とする情報処理装置に関する。
【０００９】
【課題を解決するための手段】
さらに、キャッシュエントリ内にキャッシュデータを保持するデータ部と、前記キャッシュデータの状態を管理するためのタグ情報を、１つの前記キャッシュエントリに格納されるデータのサイズよりも小さいキャッシュデータの管理単位毎に保持するタグ部とを含むキャッシュメモリと、前記キャッシュメモリに含まれるキャッシュデータにアクセスを行うプロセッサと、キャッシュミスヒットが発生した場合に主記憶にアクセスする主記憶アクセス部と、キャッシュミスヒットが発生した場合にミスヒットしたキャッシュデータを含む前記管理単位の状態をアクセス中とするように、対応する前記タグ情報を書き換える状態管理手段とを含む情報処理装置であって、前記プロセッサが前記データ部へ書き込もうとするデータのサイズが、前記管理単位より小さく、かつ、書き込み先のキャッシュデータを含む管理単位の状態がアクセス中であることを判定する判定手段と、前記判定が肯定である場合に、主記憶へのアクセスが完了するまで、書き込もうとするキャッシュデータの書き込みを遅延させる遅延手段とを有することを特徴とする情報処理装置に関する。
【００１２】
【作用】
本発明に係わるキャッシュメモリは、外部アクセス中のデータには、タグ部にエントリを確保すると共に、状態をアクセス中と設定し、ライト動作時に、対応するデータの状態がアクセス中の場合、データ部への書き込みを行なうと共に、対応するデータの状態を、アクセス中の状態から、有効状態に変更し、外部アクセス終了時には、更新されるべき部分の状態を検査し、アクセス中の状態の部分に対してだけ、データの書き込みを行なうと共に、状態を、アクセス中の状態から、有効状態に変更することによって、データの破壊を伴わず、外部アクセス中に、後続のライト動作を完了でき、さらに、外部アクセス中のアドレスに対する、データの管理単位より小さいデータサイズでのライト動作時に、キャッシュへの書き込みを行なわず、同時に、対応する部分の状態を無効状態とすることにより、外部アクセス終了時に、対応した部分への古いデータの書き込みを抑止することによって、データの一貫性を維持できる。
【００１３】
さらに、本発明に係わるキャッシュメモリにおいては、外部アクセス中のアドレスに対する、データの管理単位より小さいデータサイズでのライト動作時に、外部アクセス終了まで、データの書き込みを遅延させることにより、データの一貫性を維持できる。
【００１５】
【実施例】
図１は本発明の第１の実施例におけるキャッシュの構成図を示すものである。図１において、１はデータ部、２はタグ部、３は入力アドレス、４はヒット判定装置、７はデータ読み出し装置、９は入力データ、１０はデータ書き込み制御装置、１３はタグ書き込み制御装置、１４はアクセス中検出装置を示す。
【００１６】
以上のように構成された本実施例のキャッシュメモリの請求項１〜４の発明について、以下その動作を説明する。
【００１７】
リード動作時、入力されたアドレス３により検索されたタグ部１の出力は、ヒット判定装置４に入力され、対応したデータが保持されているか否か、判定される。
【００１８】
有効なデータが保持されている場合（ヒット時）は、ヒット判定装置４は、第１の制御信号５を出力すると共に、制御線６を介して、データ読み出し装置７に、選択情報を送付し、データ読み出し装置７は、データ部２からの出力から目的としたデータを選択して、第１のデータ８として出力する。
【００１９】
リード動作時、有効なデータが保持されていない場合（ミスヒット時）は、ヒット判定装置４は、外部アクセスを要求するため、第２の制御信号を出力すると共に、タグ書き込み装置１３に通知し、タグ部１に、対応するエントリを確保する。この時、外部アクセスに伴って読み込まれるデータに対応した部分の状態は、アクセス中（０１）に設定する。この後は、後続のキャッシュアクセスを受け付ける。
【００２０】
以下に、タグ部１で用いられる状態の一覧表の一例を示す。
【００２１】
【表１】
0003733604.tif 000002
【００２２】
ライト動作時、有効なデータが保持されている場合（ヒット時）は、ヒット判定装置４は、制御線６を介して、データ書き込み装置１０に、選択情報を送付し、データ書き込み装置１０は、データ部２の目的としたデータ部分を選択して、第３のデータ９を書き込む。
【００２３】
ライト動作時、アクセス中検出装置１４で、目的とするデータ部分が、アクセス中であることを検出した場合、タグ書き込み装置１３は、目的としたデータ部分の状態を、アクセス中（０１）から、有効（１１）に変更すると共に、データ書き込み装置１０は、データ部２の目的としたデータ部分を選択して、第３のデータ９を書き込む。
【００２４】
ミスヒットに伴う外部アクセス終了後、読み込まれた第２のデータ１２をデータ部２に書き込む時、アクセス中検出装置１４は、対応したデータ部の状態を検査し、状態がアクセス中（０１）の場合だけ、タグ書き込み制御装置１３は、状態をアクセス中（０１）から有効状態へ変更し、同時に、データ書き込み制御装置１０は、データ部２の対応した部分に、第２のデータ１２の対応した部分を書き込む。
【００２５】
図２は、第１の実施例の動作例を示すタイミングチャートである。第１クロック（Ｔ１）での、リード動作（ｎ）時、ミスヒットが発生し、第２の制御信号１１が出力される。この時のリード動作を、１２８番地へのアクセスとする。第２クロック（Ｔ２）では、第２の制御信号によって外部アクセスが起動されると共に、タグ書き込み装置１３に通知し、タグ部１に対応するエントリを確保する。この時、外部アクセスに伴って読み込まれるデータに対応した部分の状態は、アクセス中に設定する。
【００２６】
ミスヒットに伴う外部アクセスでは、４ワード分を一度に読み込むとすると、今回の外部アクセスでは、１２８番地から１４３番地までのデータを読み込む。この後は、後続のキャッシュアクセスを受け付ける。第３クロック（Ｔ３）では、後続のキャッシュアクセスであるリード動作（ｎ＋１）が実行される。この場合は、ヒット時を示している。
【００２７】
第４クロック（Ｔ４）では、後続のキャッシュアクセスであるライト動作（ｎ＋２）が実行される。この場合は、第１クロックでの秘すヒットに伴う外部アクセス中のアドレスに対するデータ書き込みを想定している。このため、アクセス中検出装置１４から、一致信号１５が送出されている。これによって、タグ書き込み装置１３は、目的としたデータ部分の状態を、アクセス中から、有効に変更すると共に、データ書き込み装置１０は、データ部２の目的としたデータ部分を選択して、データを書き込み、ライト動作を完了する。
【００２８】
このため、後続のキャッシュアクセスを受け付けることができる。このライト動作は、１３２番地へのワードデータの書き込みとする。第５クロック（Ｔ５）では、後続のキャッシュアクセスであるリード動作（ｎ＋３）が実行される。この場合も、ヒット時を示している。以降、同様にキャッシュアクセスが継続される。
【００２９】
第８クロック（Ｔ８）で外部アクセスが終了すると、読み出された４ワードのデータは、第９クロック（Ｔ９）で、データ部２に、書き込まれる。この時、１３２番地のワードデータは、既に、Ｔ４クロックで有効なデータが書き込まれていて、状態は有効状態に変更されているので、１２８番地、１３６番地、１４０番地にだけ、外部アクセスにより読み込まれたデータが書き込まれると共に、対応する部分の状態が、有効状態に変更される。
【００３０】
第４クロック（Ｔ４）におけるライト動作が、１３２番地へのバイトデータの書き込みで、タグ部での状態の管理単位がワードの場合は、キャッシュへの書き込みを行なわず、同時に、対応する部分の状態（１３２番地のワードデータ）を無効状態とする。この時、このライト動作は、外部（メモリ、買いレベルのキャッシュメモリなど）に対しては要求されることはいうまでもない。しかし、このライト動作は、実行中のリード動作によって読み込まれるデータには反映されていない。
【００３１】
このため、第９クロック（Ｔ９）でのデータ書き込み時には、１３２番地の状態がアクセス中でなく、無効状態であり、対応した部分への古いデータの書き込みを抑止され、データの一貫性を維持できる。また、同様の場合に、外部アクセス終了まで、データの書き込みを遅延させることによっても、データの一貫性を維持できる。
【００３２】
外部アクセスの終了時、アクセスしたデータの無効化要求が発生していた、または、した場合は、第９クロック（Ｔ９）でのデータの更新を行なわず、対応するデータの状態を検査し、外部アクセス中を示す状態の部分のみを、無効状態とする。これによって、バスエラーなどの要因による、無効なデータのキャッシュへの格納、また、Ｉ／Ｏなどのキャッシュへ格納できないデータへの対応を実現でき、高性能化を実現できる。
【００３３】
なお、目的のデータが、ライトスルー方式で制御されている場合は、対応する全てのデータの状態を、無効状態とすることができる。
【００３４】
続いて、本実施例のキャッシュメモリの請求項５の発明について以下その動作を説明する。ライト動作に伴いミスヒットが発生し、このデータをキャッシュに新規に割り付ける時（ライトデータのエントリーをキャッシュ内に新たに設けること）、そのワードデータ以外のラインを埋める（フィル）方法とそうでない方法がある。
【００３５】
例えば、４ワードからなるラインにワード単位でライトする場合、ライトミスに伴い新たなラインに割り付けるが、書き込むワード以外にラインには３ワード分の領域が存在する。そこは有効なものを書き込んでいないので、無効状態のままである。その時に、ロード動作を起動し、それ以外の３ワード分を埋める方法と、ワード毎に有効無効を示す状態を持たせ、有効なワードだけ有効状態に変更し、無効のところはそのままにしておく方法がある。
【００３６】
本実施例ではラインを埋める方法を選択することにする。ストア動作時、入力されたアドレス３により検索されたタグ部１の出力は、ヒット判定装置４に入力され、対応したデータが保持されているか否か、判定される。ライト動作時、有効なデータが保持されている場合（ヒット時）は、ヒット判定装置４は、制御線６を介して、データ書き込み装置１０に、選択情報を送付し、データ書き込み装置１０は、データ部２の目的としたデータ部分を選択して、第３のデータ９を書き込む。
【００３７】
ライト動作時、有効なデータが保持されていない場合（ミスヒット時）は、ヒット判定装置４は、タグ書き込み装置１３に通知し、タグ部１に、対応するエントリを確保する。その後、データ書き込み装置１０は、データ部２の目的としたデータ部分を選択して、第３のデータ９を書き込む。
【００３８】
同時に、ライン内のその他のワード部分に書き込むデータを用意する必要があり、外部アクセスを要求するため、第２の制御信号を出力する。この時、外部アクセスに伴って読み込まれるデータに対応する部分の状態は、アクセス中（０１）に設定する。この後は、後続のキャッシュアクセスを受け付ける。この後にライトが発生する場合の手続きは、上記請求項１〜４に対する実施例と同じであるので、省略する。
【００３９】
これによって、ライトキャッシュミス時にそのワードデータ以外のラインを埋める（フィル）方法の場合でも、キャッシュアクセスのノンブロッキング化を実現でき、高性能化を図れる。
【００４０】
続いて、本実施例のキャッシュメモリの請求項６、７の発明について以下その動作を説明する。前提としては、バスモニタリング機構を備えており、アドレス３を介して外部バスのアドレスをモニタリングすることができる。モニタリング機構は、内部キャッシュに含まれているデータと同じアドレスが外部バスに存在するかどうかを監視する機構で、外部主記憶が本プロセッサ以外によって書き換えられる場合には、内部キャッシュの同じエントリを無効化することにより、外部メモリと内部キャッシュの整合性（コヒーレント）を保証することができる。
【００４１】
上記構成において、リード動作時にキャッシュミスを発生し、後続するライト動作時に、アクセス中検出装置１４で、目的とするデータ部分が、アクセス中であることが検出され（ここまでは上記請求項１〜４に対する実施例と同じ）、その後、そのアドレスに対し、スヌープ機構によって外部メモリで変更されたアドレスと同じであることが判明した場合には、状態を有効状態（１１）からアクセス中状態（０１）に変更する。
【００４２】
これ以降は、上記請求項１〜４に対する実施例と同じように、リード結果の反映を行なう。また、上記構成において、リード動作時にキャッシュミスを発生し、その後、そのアドレスに対し、スヌープ機構によって外部メモリで変更されたアドレスと同じであることが判明した場合には、状態を変更せずに、アクセス中状態（０１）のままにしておく。これ以降は、上記請求項１〜４に対する実施例と同じである。
【００４３】
これによって、スヌープ機構を持つ場合にも、キャッシュのノンブロッキング化を実現でき高性能化を図れる。なお、タブ部とデータ部は、同一クロックで動作するとしているが、パイプライン化してもよい。また、タグ部やデータ部を、シングルポートとしているが、全体、もしくは、一部だけ（例えば、タグ部の状態を示す部分だけ）をマルチポート化することによって、性能向上を図ることができる。
【００４４】
【発明の効果】
以上説明したように、本発明のキャッシュメモリは、
（１）外部アクセス中のアドレスを検出するための比較装置の追加による回路規模の増大を招くことなく、データの破壊を伴わず、外部アクセス中に、後続のライト動作を完了でき、高性能化を実現できる。同時に、複数の外部アクセスが並行して処理されている場合や、それらのアクセスの終了の順序が要求された順序と違うような場合にも、回路規模の増大を伴わずに対応できる。
（２）外部アクセス中のアドレスに対する、データの管理単位より小さいデータサイズでのライト動作時に、キャッシュへの書き込みを行なわず、データの一貫性を維持できる。
（３）外部アクセス中のアドレスに対する、データの管理単位より小さいデータサイズでのライト動作時に、データの書き込みを遅延させることにより、データの一貫性を維持できる。
（４）外部アクセスの終了時、アクセスしたデータの無効化要求が発生していた、または、発生した場合は、データの更新を行なわず、バスエラーなどの要因による、無効なデータのキャッシュへの格納、また、Ｉ／Ｏなどのキャッシュへ格納できないデータへの対応を実現できる。
（５）ライトキャッシュミス時にそのワードデータ以外のラインを埋める（フィル）方法を採用の場合でも、回路規模の増大を招くことなくかつデータの破壊を伴わずに、外部アクセス中に、後続のライト動作を完了でき、高性能化を実現できる。
（６）スヌープ機構を実現し外部メモリとの整合性を保つ場合にも、後続のライト動作を完了でき、高性能化を図れる。
などの多くのことが実現でき、その実用的効果は大きい。
【図面の簡単な説明】
【図１】本発明の一実施例におけるキャッシュメモリの構成図
【図２】図１に示された一実施例の動作例を示すタイミングチャート
【図３】従来のキャッシュメモリの動作例を示すタイミングチャート
【符号の説明】
１  データ部
２  タグ部
４  ヒット判定装置
７  データ読み出し装置
１０  データ書き込み制御装置
１３  タグ書き込み制御装置
１４  アクセス中検出装置
【図１】
0003733604.tif 000003
【図２】
0003733604.tif 000004
【図３】
0003733604.tif 000005