トップ :: G 物理学 :: G06 計算;計数




【発明の名称】 命令キャッシュとデ―タ・キャッシュ間のコヒ―レンシを維持する方法および装置
【発明者】 【氏名】ラヴィ・クマリ・アリミッリ

【氏名】ジョン・スチーブン・ドッドソン

【氏名】ジェリー・ドン・ルイス

【要約】 【課題】命令キャッシュとデータ・キャッシュ間のコヒーレンシを維持する。

【解決手段】命令モードに応じて、データ・キャッシュ・ブロック・ストア(dcbst)命令が、異なる形で扱われる。コヒーレンシ維持モードでは、この命令がデータ・キャッシュと命令キャッシュの間のコヒーレンシの維持に使用され、システム・メモリへの変更済みデータのプッシュと、命令キャッシュ内のキャッシュ・エントリの無効化の両方が行われる。またシステム・バス上での新規のシステム・バス動作の開始をもたらし、データ・キャッシュおよび命令キャッシュを有する他の装置が、少なくとも命令/データ・キャッシュ・コヒーレンシの点でそのデータ・キャッシュ内の指定されたキャッシュ・エントリをクリーンし、その命令キャッシュの指定されたキャッシュ・エントリを無効化するように指示される。
【特許請求の範囲】
【請求項1】目標キャッシュ・アドレスと、上記目標キャッシュ・アドレスに対応するデータ・キャッシュ位置に変更済みデータがある場合に、上記データ・キャッシュ位置を含む記憶階層内の命令/データ・キャッシュ・コヒーレンシの点まで、上記データ・キャッシュ位置の上記変更済みデータを書き込む信号と、上記目標キャッシュ・アドレスに対応する命令キャッシュ位置を無効化する信号とを含む動作であって、遠隔装置によって開始されたバス上の上記動作を検出するステップと、上記動作の検出に応答して、上記動作を検出した装置が、上記目標キャッシュ・アドレスに対応する上記データ・キャッシュ位置に変更済みデータを含むデータ・キャッシュを含むかどうかを判定するステップと、上記データ・キャッシュが上記目標キャッシュ・アドレスに対応する上記データ・キャッシュ位置に変更済みデータを含むとの判定に応答して、命令/データ・キャッシュ・コヒーレンシの上記点まで変更済みデータを書き込むステップとを含む、分離された命令キャッシュとデータ・キャッシュとの間のコヒーレンシを維持する方法。
【請求項2】上記動作を検出した装置が、上記目標キャッシュ・アドレスに対応する上記データ・キャッシュ位置に変更済みデータを含むデータ・キャッシュを含むかどうかを判定する上記ステップが、さらに、上記装置が一体化された命令/データ・キャッシュを含むかどうかを判定するステップを含む、請求項1の方法。
【請求項3】上記動作を検出した装置が、上記目標キャッシュ・アドレスに対応する上記データ・キャッシュ位置に変更済みデータを含むデータ・キャッシュを含むかどうかを判定する上記ステップが、さらに、上記装置内で命令キャッシュから分離されたデータ・キャッシュが変更済みデータを含むかどうかを判定するステップと、上記記憶階層内で上記動作を検出した上記装置と局所プロセッサとの間の上位レベル装置が、上記目標キャッシュ・アドレスに対応する上記データ・キャッシュ位置に変更済みデータを含むデータ・キャッシュを含むかどうかを判定するステップとを含む、請求項1の方法。
【請求項4】上記上位レベル装置が上記目標キャッシュ・アドレスに対応する上記データ・キャッシュ位置に変更済みデータを含むとの判定に応答して、上記装置を上記上位レベル装置に接続するバス上で上記動作を開始するステップをさらに含む、請求項3の方法。
【請求項5】上記上位レベル装置が上記目標キャッシュ・アドレスに対応する上記データ・キャッシュ位置に変更済みデータを含まないとの判定に応答して、命令/データ・キャッシュ・コヒーレンシの上記点まで上記変更済みデータを書き込むステップをさらに含む、請求項3の方法。
【請求項6】上記記憶階層内で上記装置を上位レベル装置に接続するバス上で命令キャッシュ・ブロック無効化動作を開始するステップをさらに含む、請求項5の方法。
【請求項7】上記データ・キャッシュが、上記目標キャッシュ・アドレスに対応する上記データ・キャッシュ位置に変更済みデータを含まないとの判定に応答して、上記記憶階層内で上記装置を上位レベル装置に接続するバス上で命令キャッシュ・ブロック無効化動作を開始するステップをさらに含む、請求項1の方法。
【請求項8】分離された命令キャッシュおよびデータ・キャッシュを含む記憶装置と、上記キャッシュを遠隔装置に接続するバスと、上記遠隔装置によって開始された上記バス上の動作を監視するスヌープ論理と、目標キャッシュ・アドレスと、上記目標キャッシュ・アドレスに対応するデータ・キャッシュ位置に変更済みデータがある場合に、上記データ・キャッシュ位置を含む記憶階層内の命令/データ・キャッシュ・コヒーレンシの点まで上記データキャッシュ位置の上記変更済みデータを書き込む信号と、上記目標キャッシュ・アドレスに対応する命令キャッシュ位置を無効化する信号とを含む動作をサポートする上記記憶装置のための制御論理と、上記バス上の上記動作の検出と、上記データ・キャッシュが上記目標キャッシュ・アドレスに対応する上記データ・キャッシュ位置に変更済みデータを含むとの判定に応答して、命令/データ・キャッシュ・コヒーレンシの上記点まで上記変更済みデータを書き込む手段とを含む、分離された命令キャッシュおよびデータ・キャッシュの間のコヒーレンシを維持するための装置。
【請求項9】上記データ・キャッシュが上記目標キャッシュ・アドレスに対応する上記データ・キャッシュ位置に変更済みデータを含むかどうかを判定する手段をさらに含む、請求項8の装置。
【請求項10】上記記憶階層内で上記記憶装置と局所プロセッサとの間の上位レベル記憶装置が、上記目標キャッシュ・アドレスに対応する上記データ・キャッシュ位置に変更済みデータを含むデータ・キャッシュを含むかどうかを判定する手段をさらに含む、請求項8の装置。
【請求項11】上記上位レベル記憶装置が、上記目標キャッシュ・アドレスに対応する上記データ・キャッシュ位置に変更済みデータを含むとの判定に応答して、上記装置を上記上位レベル記憶装置に接続するバス上で上記動作を開始する手段をさらに含む、請求項10の装置。
【請求項12】上記上位レベル記憶装置が、上記目標キャッシュ・アドレスに対応する上記データ・キャッシュ位置に変更済みデータを含まないとの判定に応答して、上記変更済みデータを命令/データ・キャッシュ・コヒーレンシの上記点まで書き込む手段をさらに含む、請求項10の装置。
【請求項13】上記記憶階層内で上記装置を上記上位レベル記憶装置に接続するバス上で命令キャッシュ・ブロック無効化動作を開始する手段をさらに含む、請求項12の装置。
【請求項14】上記データ・キャッシュが、上記目標キャッシュ・アドレスに対応する上記データ・キャッシュ位置に変更済みデータを含まないとの判定に応答して、上記記憶階層内で上記装置を上位レベル装置に接続するバス上で命令キャッシュ・ブロック無効化動作を開始する手段をさらに含む、請求項8の装置。
【請求項15】組み合わされたデータ・キャッシュ・ブロック・ストアおよび命令キャッシュ・ブロック無効化命令を第1装置に対して発行するプロセッサと、上記プロセッサによって発行される上記命令の受け取りに応答して、バス上で上記命令に対応するバス動作を開始する上記第1装置に接続された上記バスと、上記第1装置によって開始された上記バス動作に応答して、アドレスを有するデータ・キャッシュ位置から第3装置へデータを書き込み、上記アドレスを有する命令キャッシュ位置を無効化する、上記第1装置に接続され、データ・キャッシュおよび命令キャッシュを含む第2装置とを含む、データ処理システム。
【請求項16】上記第2装置が、キャッシュである、請求項15のデータ処理システム。
【請求項17】上記第2装置が、プロセッサである、請求項15のデータ処理システム。
【請求項18】上記第3装置が、下位レベル・キャッシュである、請求項15のデータ処理システム。
【請求項19】上記第3装置が、システム・メモリである、請求項15のデータ処理システム。
【請求項20】データ・キャッシュおよび命令キャッシュを含む上位レベル装置が、上記アドレスを有するデータ・キャッシュ位置に変更済みデータを含むことの判定に応答して、上記第2装置が、上記第2装置を上記上位レベル装置に接続するバス上で上記命令に対応する上記バス動作を開始する、請求項15のデータ処理システム。
【発明の詳細な説明】【0001】
【発明の属する技術分野】本発明は、全般的には分離されたデータ・キャッシュおよび命令キャッシュのコヒーレンシに関し、具体的には、分離されたデータ・キャッシュおよび命令キャッシュのコヒーレンシを維持する命令に関する。さらに具体的に言うと、本発明は、対象キャッシュ・エントリの複数のコピーを有するマルチプロセッサ・システムのデータ・キャッシュと命令キャッシュの間のコヒーレンシを維持するための命令およびシステム・バス・トランザクションに関する。
【0002】
【従来の技術】スーパースカラ縮小命令セット(RISC)プロセッサには、通常は、少なくとも記憶階層のレベル1(L1)層に、分離されたデータ・キャッシュおよび命令キャッシュが含まれる。分離されたデータ・キャッシュおよび命令キャッシュは、現在のスーパースカラ・プロセッサに必要な帯域幅に起因して必要になる。現在のスーパースカラ・プロセッサでは、命令の取り出しとデータ参照が、簡単に1プロセッサ・サイクルあたり1キャッシュ・アクセスを超える可能性がある。したがって、通常はプロセッサ・ハードウェアに組み込まれ、1プロセッサ以下の待ち時間を有するように設計されるL1キャッシュは、通常は分離式にされ、その結果、命令とデータの参照を、同一のプロセッサ・サイクル中に別々のキャッシュに対して発行できるようになる。
【0003】データ・キャッシュと命令キャッシュを分離することによって、コヒーレントなメモリ階層の維持という問題に追加の態様すなわち、すべてのプロセッサに単一のメモリの内容を見せることが追加される。たとえば、プロセッサは、実際には後に実行される命令であるデータ・キャッシュ内のデータを変更する場合がある。これは、たとえば、ローダ・プログラムがコードをメモリにロードした後にコード・リンケージを解決する時に発生する。もう1つの例として、メモリ内容のページをコピーするプロセッサは、命令とデータを区別せず、同一のページ内容を命令キャッシュとデータ・キャッシュの両方にコピーする可能性がある。その後、コピーされたページの一部を含むキャッシュ位置を解放するために、命令キャッシュ・ブロック無効化動作とクリーン動作の両方が必要になる。
【0004】現在市販されているスーパースカラ・プロセッサのほとんどには、分離されたレベル1キャッシュのコヒーレンシを維持するための機構が含まれない。すなわち、あるL1キャッシュの変更は、他のプロセッサ内であれ同一プロセッサ内であれ、他のL1キャッシュに自動的には反映されない。ほとんどのスーパースカラ・プロセッサでは、分離されたデータ・キャッシュと命令キャッシュの間のコヒーレンシの維持は、ソフトウェアに委ねられている。ソフトウェアは、通常は、元々は命令が含まれていた変更済みデータ・キャッシュ・エントリをフラッシュし、同一のキャッシュ・エントリが命令キャッシュ内に常駐する場合にはこれを無効化することによって、分離されたキャッシュの間のコヒーレンシ維持の問題を処理する。これらの処置は、実行可能プログラムが格納され、変更されたキャッシュ・ラインのすべてに対して、一度に1ページずつ行われる。
【0005】すべてのスーパースカラ・プロセッサが、レベル1キャッシュからシステム・メモリへ変更済みデータを書き込む命令をサポートしている。プログラマは、このような命令を使用して、変更済みキャッシュ・ラインを即座にプロセッサの外部から可視にすることができる。これは、グラフィックス・アプリケーションにおいて、メモリ・マップ式のグラフィックス・アダプタまたは表示バッファに表示情報を書き込むのに有用である。しかし、これまでのところ、そのような命令の最も一般的な用途は、分離されたデータ・キャッシュと命令キャッシュのコヒーレンシのソフトウェア管理である。そのような目的に使用される時には、変更済みデータをメモリに書き込む命令に、命令キャッシュ内の同一のキャッシュ位置を無効化する命令が続く場合がある。たとえば、PowerPC(商標)系列のデバイスでは、変更済みデータをシステム・メモリに書き込む命令は、データ・キャッシュ・ブロック・ストア(dcbst)命令であり、命令キャッシュ内のキャッシュ位置を無効化する命令は、命令キャッシュ・ブロック無効化(icbi)命令である。
【0006】dcbst命令が実行される時には、有効アドレスが計算され、変換され、保護違反について検査される。そのアドレスによって参照されるキャッシュ位置に変更済みデータが格納されていない場合、キャッシュ・ブロックは変更されず(命令は無演算として扱われる)、システム・バスに対するクリーン動作が開始される。しかし、キャッシュ・ブロックに変更済み(ダーティ)データが含まれる場合、そのデータが、データ・キャッシュからシステム・バスにプッシュ・アウトされる。キャッシュ・ブロック内のすべてのバイトがシステム・メモリに書き込まれ、キャッシュ・ブロックのコヒーレンシ状態に排他(E)がセットされ、キャッシュ・ブロックに、システム・メモリ内の対応する位置との一貫性を有し、記憶階層のそのレベルのすべてのキャッシュのうちで対象のキャッシュだけにある有効なデータが含まれることが示される。その後、システム・バスに対する書込動作が開始される。
【0007】icbi命令が実行される時には、やはり有効アドレスが計算され、変換され、保護違反について検査される。アドレス指定されたキャッシュ・ブロックが命令キャッシュ内にある場合、命令キャッシュ・ブロックに無効のマークが付けられ、キャッシュ・エントリ(アドレス・タグと内容の両方)が有効でなく、システム・メモリおよび記憶階層の同一レベルの他のキャッシュのどちらに対しても一貫性を有しないことが示される。キャッシュ・ブロックの内容と状況の両方が、すべてのプロセッサのデータ・キャッシュ内で無変更のままになる。icbi動作またはikill動作が、記憶階層全体を通じて他の命令キャッシュのすべての適当なキャッシュ・ラインを無効化するために、システム・バス上で無条件に開始される。
【0008】上で述べた2つの命令は、通常のプログラム・ソース・コードの実行中に定期的に実行されることはない。しかし、元々命令を含んでいた変更済みデータ・キャッシュ・エントリのフラッシュと命令キャッシュ内のキャッシュ・ブロックの無効化に使用される時には、メモリのページ全体が、一度に1キャッシュ・ブロックずつフラッシュされる。したがって、大量のdcbst/icbi命令対が、比較的短い期間の間に実行される。
【0009】マルチプロセッサ・システムで定期的に発生する別の必要は、以前に命令が格納されていた別のキャッシュ位置へキャッシュ・エントリを書き込み、新規に変更されたキャッシュ・エントリをシステム・メモリとコヒーレントにし、新しいキャッシュ位置をすべての命令キャッシュ内で無効化することである。すなわち、キャッシュ・エントリxの内容をキャッシュ・エントリyに書き込み、キャッシュ・エントリyに対応するシステム・メモリを更新し、システムのすべての命令キャッシュのキャッシュ・エントリyを無効化することが望ましい。現在のシステムでは、この結果を達成するために複数の命令を実行する必要がある。すなわち、キャッシュ内部でキャッシュ・エントリxの内容をキャッシュ・エントリyに書き込み、キャッシュ・エントリyに対してdcbst命令を実行し、キャッシュ・エントリyに対してicbi命令を実行し、最後に同期(sync)命令を実行して、すべての命令が確実に完了するようにする。
【0010】したがって、元々は命令が格納されていたキャッシュ・ブロック内の変更済みデータをシステム・メモリにフラッシュし、命令キャッシュ内のキャッシュ・ブロックを無効化するための改良された機構を提供することが望ましい。その機構を、単一の命令およびシステム・バス動作で実施することがさらに有利である。
【0011】
【発明が解決しようとする課題】したがって、本発明の目的は、分離されたデータ・キャッシュおよび命令キャッシュのコヒーレンシを維持するための改良された機構を提供することである。
【0012】本発明のもう1つの目的は、分離されたデータ・キャッシュおよび命令キャッシュのコヒーレンシを維持するための改良された命令を提供することである。
【0013】本発明のもう1つの目的は、対象キャッシュ・エントリの複数のコピーを有するマルチプロセッサ・システムでデータ・キャッシュと命令キャッシュの間のコヒーレンシを維持するための、改良された命令およびシステム・バス・トランザクションを提供することである。
【0014】
【課題を解決するための手段】前述の目的は、これから説明する形で達成される。プロセッサまたは命令モードに応じて、データ・キャッシュ・ブロック・ストア(dcbst)または同等の命令が、異なる形で扱われる。命令のコヒーレンシ維持モードでは、この命令が分離されたデータ・キャッシュと命令キャッシュの間のコヒーレンシの維持に使用されるが、このコヒーレンシ維持モードには、プロセッサ・レジスタのビットをセットするか、命令内のヒント・ビットをセットすることによって入ることができる。コヒーレンシ維持モードでは、この命令によって、システム・メモリへの変更済みデータのプッシュと、命令キャッシュ内のキャッシュ・エントリの無効化の両方が行われる。後続の、同一のキャッシュ位置を目標とする命令キャッシュ・ブロック無効化(icbi)または同等の命令は、データ・キャッシュ・ブロック・ストアまたは同等の命令がコヒーレンシ維持モードで実行された後にプロセッサによって発行される時には、無演算として扱われる。コヒーレンシ維持モードでのデータ・キャッシュ・ブロック・ストア命令の実行は、システム・バス上での新規のシステム・バス動作の開始をもたらす。このバス動作では、分離されたデータ・キャッシュおよび命令キャッシュを有する他の装置が、少なくとも命令/データ・キャッシュ・コヒーレンシの点でそのデータ・キャッシュ内の指定されたキャッシュ・エントリをクリーンし、その命令キャッシュの指定されたキャッシュ・エントリを無効化するように指示される。データの1つまたは複数のページをシステム・メモリに書き込むために次々に繰り返して使用される時には、コヒーレンシを維持するための機構は、プロセッサ・サイクルを節約し、アドレスとデータの両方のバス・トラフィックを減らす。
【0015】
【発明の実施の形態】図面、具体的には図1を参照すると、本発明の好ましい実施例によるマルチプロセッサ・データ処理システムが示されている。データ処理システム100は、米国ニューヨーク州アーモンクのInternational Business Machines社から入手できるPowerPC(商標)系列のプロセッサのうちの1つを含む複数のプロセッサ102ないし116を含む対称型マルチプロセッサ(SMP)システムである。この実施例では8つのプロセッサが図示されているが、当業者であれば、本発明によるマルチプロセッサ・データ処理システムでこれと異なる個数のプロセッサを使用できることを諒解するであろう。
【0016】各プロセッサ102ないし116には、レベル1(L1)データ・キャッシュ118ないし132と、L1命令キャッシュ134ないし148が含まれる。この実施例では分離された命令キャッシュおよびデータ・キャッシュとして図示されているが、当業者であれば、プロセッサ102ないし116のどれにでも単一の一体化されたL1キャッシュを実施できることを諒解するであろう。しかし、本発明は、記憶階層の少なくとも1つのレベルで命令キャッシュとデータ・キャッシュが分離されているシステムでの応用に特に有用である。
【0017】データ・アクセス待ち時間を最小にするために、レベル2(L2)、レベル3(L3)またはそれ以上のレベルのキャッシュ・メモリなど、1つまたは複数の追加レベルのキャッシュ・メモリをデータ処理システム100内で実施することができる。本発明の長所および特徴を完全に説明するために選択されたこの実施例では、L2キャッシュ・コントローラ150ないし156が、分離されたL2データ・キャッシュ158ないし164およびL2命令キャッシュ166ないし172と共に図示されている。L3キャッシュ・コントローラ174および176は、一体化された命令/データ(I/D)キャッシュであるL3キャッシュ178および180を操作する。システム・メモリ182で、図示の実施例の記憶階層が完了する。
【0018】下位のキャッシュ・レベル(L2およびL3)は、L1キャッシュへのデータのステージングに使用され、通常は、徐々に記憶容量が大きくなるが、アクセス待ち時間は長くなる。たとえば、L1データ・キャッシュ118ないし132およびL1命令キャッシュ134ないし148は、それぞれ32KBの記憶容量と、約1ないし2プロセッサ・サイクルのアクセス待ち時間を有する可能性がある。L2データ・キャッシュ158ないし164およびL2命令キャッシュ166ないし172は、それぞれ512KBの記憶容量と5プロセッサ・サイクルのアクセス待ち時間を有する可能性があり、L3キャッシュ178および180は、4MBの記憶容量と15プロセッサ・サイクルを超えるアクセス待ち時間を有する可能性がある。したがって、L2データ・キャッシュ158ないし164およびL2命令キャッシュ166ないし172とL3キャッシュ178および180は、プロセッサ102ないし116とシステム・メモリ182の間の中間記憶として働き、システム・メモリ182は、通常ははるかに大きい記憶容量を有するが、50プロセッサ・サイクルを超えるアクセス待ち時間を有する可能性がある。
【0019】データ処理システム100で使用されるキャッシュ階層のレベル数とキャッシュ階層構成の両方が、変更可能である。図示の例のL2データ・キャッシュ158ないし164、L2命令キャッシュ166ないし172およびL3キャッシュ178および180は、システム・バス184を介してそれぞれのプロセッサ102ないし116とシステム・メモリ182の間に接続される私有専用キャッシュである。しかし、上位キャッシュ・レベルと並列に動作する共用キャッシュおよびルックアサイド・キャッシュも、本発明と共に使用することができる。当業者であれば、図示のレベルおよび構成のさまざまな組合せを実施できることを諒解するであろう。さらに、本発明の理解に必要な完全なデータ処理システムだけが図示されている。当業者であれば、既知の技法によってデータ処理システム100に追加装置を組み込めることを諒解するであろう。このような変更および変形は、本発明の趣旨および範囲に含まれる。
【0020】図2を参照すると、本発明の好ましい実施例による、分離されたデータ・キャッシュと命令キャッシュの間でコヒーレンシを維持するための機構の論理ブロック図が示されている。本発明のデータ/命令キャッシュ・コヒーレンシ機構を説明するために、図1に示された、プロセッサ102および104、それぞれのL1データ・キャッシュ118および120、L1命令キャッシュ134および136、システム・メモリ182およびシステム・バス184を使用する。しかし、当業者であれば、図1に示されたL2データ・キャッシュ158ないし164、L2命令キャッシュ166ないし172、L3キャッシュ178および180などの他の装置も、本発明の機構によって影響を受ける可能性があることを理解するであろう。
【0021】図2に示されたL1キャッシュのそれぞれには、プロセッサ102のL1データ・キャッシュ118に関連して図示されているキャッシュ・メモリ202とキャッシュ・ディレクトリ204が含まれる。各L1キャッシュは、たとえば32ビット・アドレスを使用する、nウェイ・セット・アソシアティブ・キャッシュである。したがって、キャッシュ・メモリ202には、それぞれがn個のキャッシュ・ラインを格納するのに十分なメモリを含む複数の合同クラスまたは合同行が含まれる。キャッシュ・ラインは、キャッシュ・ブロックとも称するが、コヒーレンシ状態が表すキャッシュ・メモリの単位である。一般に、キャッシュ・ラインは、現在のデータ処理システムでは32B、64Bまたは128Bの長さである。
【0022】キャッシュ・ディレクトリ204には、それぞれがn個のディレクトリ・エントリを含む複数の行も含まれ、各ディレクトリ・エントリは、キャッシュ・メモリ202の同等の行の対応するキャッシュ・ラインに関連する。各ディレクトリ・エントリには、少なくとも、タグ・フィールド206と、コヒーレンシ状態フィールド208と、LRU(least recently used)フィールド210が含まれる。タグ・フィールド206は、関連するキャッシュ・ラインに格納されたデータのシステム・メモリ・アドレスのタグ・フィールド(たとえばビット[0−19])の格納に使用される。コヒーレンシ状態フィールド208では、定義済みのビットの組合せを介して、関連するキャッシュ・ラインに格納されたデータのコヒーレンシ状態が定義される。LRUフィールド210では、合同クラス内の他のキャッシュ・ラインに対して関連キャッシュ・ラインが相対的にどれほど最近にアクセスされたかが示され、したがって、キャッシュ・ラインの置換の必要が生じた時に、合同クラスのどのキャッシュ・ラインをキャスト・アウトするかが示される。
【0023】プロセッサ102および104のそれぞれには、そのプロセッサがdcbst命令を扱う方法を制御するのに使用できるモード・ビット212および214が含まれる(本発明の説明で使用する場合、dcbst、icbiまたは他のPowerPC(商標)アーキテクチャに固有の命令名の参照は、命令の名前に無関係に、他のプロセッサの同様の命令を含む)。モード・ビット212および214には、当技術分野で既知のとおり、専用レジスタ(SPR)との間の移動命令(mtspr、mfspr)を介してユーザ・レベル・ソフトウェアによってアクセス可能なSPRを含めることができる。特定のプロセッサのモード・ビット214が第1状態(たとえばセットされていない)の場合、dcbst命令は、この命令を使用する現在のプロセッサと同一の効果を有する。すなわち、目標キャッシュ・ブロックのコヒーレンシ状態フィールド208が変更済み状態の場合、目標キャッシュ・ブロック216のデータが、システム・メモリ182内の対応する位置220にプッシュされる(218)。しかし、モード・ビット214が第2状態(たとえばセットされている)の場合、dcbst命令は、dcbst命令とicbi命令の組合せとして扱われる。この「コヒーレンシ維持」モードでは、この命令が複数の結果を達成する。すなわち、コヒーレンシ状態フィールド208が変更済みの場合、目標キャッシュ・ブロック216のデータがシステム・メモリ182内の対応する位置220にプッシュされ(218)、コヒーレンシ状態フィールド208に無関係に、新規のシステム・バス動作222が開始される。システム・バス動作222は、下位レベル・キャッシュ(たとえばL2キャッシュまたはL3キャッシュ)がプロセッサ104とシステム・バス184の間に存在するかどうかに応じて、「clean w/ ikill」または「write w/ clean w/ ikill」になる。システム・バス動作222の「write」部分は、論理的にインラインのキャッシュに、目標キャッシュ位置にある変更済みデータをシステム・メモリ182に書き込むように指示する。システム・バス動作222の「clean w/ ikill」部分は、プロセッサ102に、L1データ・キャッシュ118の対象キャッシュ位置をクリーンし(データ・キャッシュ・エントリを有効に保ちながら変更済みデータをシステム・メモリにプッシュする)、L1命令キャッシュ134内の対象キャッシュ位置を無効化するように指示する。
【0024】dcbst命令に2つの特性を与えることは、上記ではプロセッサ・レジスタのモード・ビットの設定によって達成されているが、他の機構を介して実施することができる。たとえば、dcbst命令に関連する「ヒント」ビットを、既知の技術に従ってセットすることができる。他の命令と同様に、dcbst命令には、オペコード・フィールドと2つのオペランド・フィールドが含まれ、オペランド・フィールドの一方は未使用である。この未使用のオペランド・フィールドのビット(いわゆる「ヒント」ビット)を、そのようなヒント・ビットの使用をサポートするように設計されたプロセッサによる検出のために実行可能コード内でセットすることができる。この形で、新しい世代のプロセッサは、2つの特性を有するdcbst命令をサポートでき、そのようなサポートを提供しない古い世代のプロセッサでも、同一の実行可能コードを実行できる。ヒント・ビットは、下で詳細に説明する目的のために、後続の命令キャッシュ・ブロック無効化命令または同等の命令でセットすることもできる。
【0025】変更済みデータをシステム・メモリ182まで書き込むのではなく、コヒーレンシ維持モードのdcbst命令は、変更済みデータをI/Dコヒーレンシのレベルまでだけに書き込むことができる。変更済みデータをシステム・メモリまで書き込むと、重大な性能ペナルティをこうむる。したがって、変更済みデータは、特定の命令/データ・キャッシュ・コヒーレンシのレベルまですなわち、記憶階層内で一体化されたキャッシュが使用されている最上位のレベルまでだけに書き込むことが好ましい。これは、図1に示された例ではL3キャッシュ178および180までになる。
【0026】分離されたデータ・キャッシュと命令キャッシュの間のコヒーレンシを維持するための本発明の機構では、モード・ビット214またはヒント・ビットをセットすることからもたらされるdcbst/icbi命令の組合せが、さまざまな形で使用される。この組み合わされた命令を、メモリのページ224全体またはメモリの複数のページに含まれるキャッシュ・ブロックのそれぞれに対して繰り返して順番に実行して、グラフィックス装置や表示バッファを更新することができる。モード・ビット214がセットされている時には、別個のicbi命令の必要がなくなり、局所プロセッサからのicbiは無演算として扱われる。異種システムでは、スヌープされたicbiは、モード・ビット214がセットされている時でもicbiとして扱うことができる。その代わりに、キャッシュ位置xの内容がキャッシュ内の別の位置yにコピーされており、変更済みデータ(y’)が位置yに書き込まれる場合に、dcbst/icbi命令の組合せを使用して、水平キャッシュ内の対応するキャッシュ位置を無効化することができる。
【0027】図3ないし図5を参照すると、本発明の好ましい実施例による、分離されたデータ・キャッシュと命令キャッシュの間のコヒーレンシを維持するための機構を実施する命令および動作を実行する処理の高水準流れ図が示されている。図3は、局所プロセッサによって発行されるdcbst命令の処理を示す図である。この処理は、ステップ302で開始され、dcbstまたは同等の命令を受け取る。その後、処理はステップ304に進み、その命令をコヒーレンシ維持モードで受け取ったかどうかを判定する。この判定は、たとえば、モード・ビットまたはヒント・ビットがセットされているかどうかを判定することによって行える。命令をコヒーレンシ維持モードで受け取らなかった場合、この処理はステップ306に進み、その命令の目標キャッシュ・エントリが変更済みであるかどうかを判定する。そうでない場合、この処理はステップ308に進み、下位レベルのバスでのクリーン動作を開始し、下で説明するステップ312に進む。
【0028】ステップ306に戻って、dcbst命令または同等の命令の目標キャッシュ・エントリに変更済みデータが含まれる場合、処理はステップ310に進み、writew/ cleanバス動作を使用して、変更済みデータを下位レベル・バスにプッシュする。その後、処理はステップ312に進み、dcbstまたは同等の命令を発行したプロセッサとシステム・メモリの間の記憶階層の最下位レベルのキャッシュを検査したかどうかを判定する。そうでない場合、処理はステップ314に進み、記憶階層で次の下位レベル・キャッシュに進み、ステップ306に戻って、ステップ306ないしステップ314について説明した処理を、次の下位キャッシュ・レベルに関して繰り返す。したがって、この処理は、記憶階層内のすべてのキャッシュ・レベルを通じて反復しながら進行する。ステップ312に戻って、最下位レベルのキャッシュに到達し、処理したならば、処理はステップ316に進み、次のdcbstまたは同等の命令を受け取るまで、この処理は遊休状態になる。
【0029】ステップ304に戻って、dcbstまたは同等の命令がコヒーレンシ維持モードで受け取られた場合、処理はステップ318に進み、検査されるキャッシュ・レベルがI/Dコヒーレントであるかどうかを判定する。この判定は、たとえば、そのキャッシュが一体化されたキャッシュと分離されたI/Dキャッシュのどちらとして実施されているかを判定することによって行える。検査されるキャッシュが記憶階層内のI/Dコヒーレンシの点にある場合、処理はステップ320に進み、最下位レベル・バスに対してikillバス動作を開始する。その後、処理は、上で説明したステップ316に進む。
【0030】ステップ318に戻って、検査されるキャッシュ・レベルが記憶階層内のI/Dコヒーレンシの点にない場合、処理はステップ322に進み、dcbstまたは同等の命令の目標キャッシュ・エントリが変更済みであるかどうかを判定する。そうでない場合には、処理はステップ324に進み、下位レベル・バスに対するクリーン動作を開始し、上で説明したステップ316に進む。
【0031】ステップ322に戻って、dcbstまたは同等の命令の目標キャッシュ・エントリに変更済みデータが含まれる場合、処理はステップ326に進み、write w/ cleanバス動作を使用して下位レベル・バスに変更済みデータをプッシュする。その後、処理はステップ330に進み、記憶階層の最下位レベルのキャッシュを調べたかどうかを判定する。そうでない場合には、処理はステップ332に進み、記憶階層内の次の下位レベル・キャッシュに進み、ステップ318に戻って、次の下位キャッシュ・レベルに対してステップ318ないしステップ332で示した処理を繰り返す。したがって、この処理は、記憶階層のすべてのキャッシュ・レベルを通じて反復しながら進行する。ステップ332に戻って、最下位レベルのキャッシュに到達し、これを処理したならば、処理はステップ316に進み、次のdcbstまたは同等の命令を受け取るまで遊休状態になる。
【0032】図4は、局所プロセッサによって発行されるicbi命令を処理する処理を示す図である。この処理は、ステップ334で開始され、ここでicbi命令を受け取る。その後、処理はステップ336に進み、dcbst/icbi組合せ命令の扱いを制御するビット(たとえば、プロセッサ・モード・ビットまたはdcbstおよびicbi命令のヒント・ビット)がセットされているかどうかを判定する。そうである場合、処理はステップ338に進み、icbi命令を無演算として扱う。しかし、ビットがセットされていない(命令がコヒーレンシ維持モードで受け取られなかった)場合には、処理はステップ340に進み、命令キャッシュ内の目標キャッシュ・エントリを無効化し、次に、ステップ342で、システム・バスに対するikill動作を開始する。ステップ338またはステップ342から、処理はステップ344に進み、後続のicbi命令を受け取るまで、処理は遊休状態になる。
【0033】図5は、システム・バスからスヌープされるclean w/ ikillバス動作を処理する処理を示す図である。この処理は、ステップ346で開始され、ここで、システム・バス上のclean w/ ikill動作が検出される。処理は、次にステップ348に進み、その動作をスヌープしたキャッシュ・レベルがI/Dコヒーレンシの点である(たとえば、キャッシュが一体化されたキャッシュである)かどうかを判定する。そうである場合には、処理は下で説明するステップ354に進む。しかし、そうでない場合には、処理はステップ350に進み、スヌープされたcleanw/ ikill動作の目標キャッシュ・エントリが変更済みであるかどうかを判定する。そうでない場合、処理は下で説明するステップ358に進む。しかし、変更済みの場合には、処理はステップ352に進み、スヌープされた動作の目標キャッシュ・エントリが上位レベル・キャッシュ内で変更済みであるかどうかを判定する。
【0034】スヌープされた動作の目標キャッシュ・エントリが上位レベル・キャッシュ内で変更済みである場合、処理はステップ354に進み、上位レベル・キャッシュに対してclean w/ ikill動作を開始する。しかし、そうでない場合には、処理はステップ356に進み、次の下位レベル・キャッシュに対してwrite w/ clean動作を開始し、その後、ステップ358に進んで、上位レベル・キャッシュに対してikill動作を開始する。ステップ354またはステップ358からは、処理はステップ360に進み、別のclean w/ ikill動作がスヌープされるまで、処理は遊休状態になる。
【0035】本発明を用いると、分離されたデータ・キャッシュと命令キャッシュの間のコヒーレンシを維持するために、dcbst命令を効率的に利用できる。本発明の機構を使用する時には、2命令ではなく1命令だけが発行されるので、プロセッサ・サイクルが節約される。システム性能の向上が達成されるのは、命令キャッシュ・ブロック無効化命令とクリーン動作が、直列ではなく並列に発生するからである。新規のシステム・バス動作は、本発明の組み合わされたdcbst/icbi機構を実行した結果として開始される。このシステム・バス動作中のアドレス・バス・トラフィックは、2つではなく1つのバス動作だけが開始されるので、減少する。データ・バス・トラフィックも、特に本発明の機構がI/Dコヒーレンシの点までのみ変更済みデータを書き込むように実施される時に、同様に減少する。すべての命令が記憶階層の上位レベルから受け取られ、処理される記憶階層内で実施されるものとして説明し、図示してきたが、本発明の機構は、アーキテクチャ上の動作が並列処理のためにシステム・バスからパス・スルーされ、自己スヌープされるアーキテクチャに関連して使用することもできる。
【0036】本発明を、完全に機能するデータ処理システムに関して説明してきたが、当業者であれば、本発明の機構をさまざまな形態の命令のコンピュータ可読媒体の形で配布でき、本発明が、実際の配布に使用される信号担持媒体の具体的な種類に無関係に同等に適用されることを理解するであろうことに留意することが重要である。具体的に言うと、プログラム命令の組には、dcbst命令が扱われる方法を変更するモード・ビットをセットする命令と、それに続く1つまたは複数のdcbst命令を含めることができる。コンピュータ可読媒体の例には、フロッピ・ディスクやCD−ROMなどの記録可能型媒体と、ディジタル通信リンクやアナログ通信リンクなどの伝送型媒体が含まれる。
【0037】まとめとして、本発明の構成に関して以下の事項を開示する。
【0038】(1)目標キャッシュ・アドレスと、上記目標キャッシュ・アドレスに対応するデータ・キャッシュ位置に変更済みデータがある場合に、上記データ・キャッシュ位置を含む記憶階層内の命令/データ・キャッシュ・コヒーレンシの点まで、上記データ・キャッシュ位置の上記変更済みデータを書き込む信号と、上記目標キャッシュ・アドレスに対応する命令キャッシュ位置を無効化する信号とを含む動作であって、遠隔装置によって開始されたバス上の上記動作を検出するステップと、上記動作の検出に応答して、上記動作を検出した装置が、上記目標キャッシュ・アドレスに対応する上記データ・キャッシュ位置に変更済みデータを含むデータ・キャッシュを含むかどうかを判定するステップと、上記データ・キャッシュが上記目標キャッシュ・アドレスに対応する上記データ・キャッシュ位置に変更済みデータを含むとの判定に応答して、命令/データ・キャッシュ・コヒーレンシの上記点まで変更済みデータを書き込むステップとを含む、分離された命令キャッシュとデータ・キャッシュとの間のコヒーレンシを維持する方法。
(2)上記動作を検出した装置が、上記目標キャッシュ・アドレスに対応する上記データ・キャッシュ位置に変更済みデータを含むデータ・キャッシュを含むかどうかを判定する上記ステップが、さらに、上記装置が一体化された命令/データ・キャッシュを含むかどうかを判定するステップを含む、上記(1)の方法。
(3)上記動作を検出した装置が、上記目標キャッシュ・アドレスに対応する上記データ・キャッシュ位置に変更済みデータを含むデータ・キャッシュを含むかどうかを判定する上記ステップが、さらに、上記装置内で命令キャッシュから分離されたデータ・キャッシュが変更済みデータを含むかどうかを判定するステップと、上記記憶階層内で上記動作を検出した上記装置と局所プロセッサとの間の上位レベル装置が、上記目標キャッシュ・アドレスに対応する上記データ・キャッシュ位置に変更済みデータを含むデータ・キャッシュを含むかどうかを判定するステップとを含む、上記(1)の方法。
(4)上記上位レベル装置が上記目標キャッシュ・アドレスに対応する上記データ・キャッシュ位置に変更済みデータを含むとの判定に応答して、上記装置を上記上位レベル装置に接続するバス上で上記動作を開始するステップをさらに含む、上記(3)の方法。
(5)上記上位レベル装置が上記目標キャッシュ・アドレスに対応する上記データ・キャッシュ位置に変更済みデータを含まないとの判定に応答して、命令/データ・キャッシュ・コヒーレンシの上記点まで上記変更済みデータを書き込むステップをさらに含む、上記(3)の方法。
(6)上記記憶階層内で上記装置を上位レベル装置に接続するバス上で命令キャッシュ・ブロック無効化動作を開始するステップをさらに含む、上記(5)の方法。
(7)上記データ・キャッシュが、上記目標キャッシュ・アドレスに対応する上記データ・キャッシュ位置に変更済みデータを含まないとの判定に応答して、上記記憶階層内で上記装置を上位レベル装置に接続するバス上で命令キャッシュ・ブロック無効化動作を開始するステップをさらに含む、上記(1)の方法。
(8)分離された命令キャッシュおよびデータ・キャッシュを含む記憶装置と、上記キャッシュを遠隔装置に接続するバスと、上記遠隔装置によって開始された上記バス上の動作を監視するスヌープ論理と、目標キャッシュ・アドレスと、上記目標キャッシュ・アドレスに対応するデータ・キャッシュ位置に変更済みデータがある場合に、上記データ・キャッシュ位置を含む記憶階層内の命令/データ・キャッシュ・コヒーレンシの点まで上記データキャッシュ位置の上記変更済みデータを書き込む信号と、上記目標キャッシュ・アドレスに対応する命令キャッシュ位置を無効化する信号とを含む動作をサポートする上記記憶装置のための制御論理と、上記バス上の上記動作の検出と、上記データ・キャッシュが上記目標キャッシュ・アドレスに対応する上記データ・キャッシュ位置に変更済みデータを含むとの判定に応答して、命令/データ・キャッシュ・コヒーレンシの上記点まで上記変更済みデータを書き込む手段とを含む、分離された命令キャッシュおよびデータ・キャッシュの間のコヒーレンシを維持するための装置。
(9)上記データ・キャッシュが上記目標キャッシュ・アドレスに対応する上記データ・キャッシュ位置に変更済みデータを含むかどうかを判定する手段をさらに含む、上記(8)の装置。
(10)上記記憶階層内で上記記憶装置と局所プロセッサとの間の上位レベル記憶装置が、上記目標キャッシュ・アドレスに対応する上記データ・キャッシュ位置に変更済みデータを含むデータ・キャッシュを含むかどうかを判定する手段をさらに含む、上記(8)の装置。
(11)上記上位レベル記憶装置が、上記目標キャッシュ・アドレスに対応する上記データ・キャッシュ位置に変更済みデータを含むとの判定に応答して、上記装置を上記上位レベル記憶装置に接続するバス上で上記動作を開始する手段をさらに含む、上記(10)の装置。
(12)上記上位レベル記憶装置が、上記目標キャッシュ・アドレスに対応する上記データ・キャッシュ位置に変更済みデータを含まないとの判定に応答して、上記変更済みデータを命令/データ・キャッシュ・コヒーレンシの上記点まで書き込む手段をさらに含む、上記(10)の装置。
(13)上記記憶階層内で上記装置を上記上位レベル記憶装置に接続するバス上で命令キャッシュ・ブロック無効化動作を開始する手段をさらに含む、上記(12)の装置。
(14)上記データ・キャッシュが、上記目標キャッシュ・アドレスに対応する上記データ・キャッシュ位置に変更済みデータを含まないとの判定に応答して、上記記憶階層内で上記装置を上位レベル装置に接続するバス上で命令キャッシュ・ブロック無効化動作を開始する手段をさらに含む、上記(8)の装置。
(15)組み合わされたデータ・キャッシュ・ブロック・ストアおよび命令キャッシュ・ブロック無効化命令を第1装置に対して発行するプロセッサと、上記プロセッサによって発行される上記命令の受け取りに応答して、バス上で上記命令に対応するバス動作を開始する上記第1装置に接続された上記バスと、上記第1装置によって開始された上記バス動作に応答して、アドレスを有するデータ・キャッシュ位置から第3装置へデータを書き込み、上記アドレスを有する命令キャッシュ位置を無効化する、上記第1装置に接続され、データ・キャッシュおよび命令キャッシュを含む第2装置とを含む、データ処理システム。
(16)上記第2装置が、キャッシュである、上記(15)のデータ処理システム。
(17)上記第2装置が、プロセッサである、上記(15)のデータ処理システム。
(18)上記第3装置が、下位レベル・キャッシュである、上記(15)のデータ処理システム。
(19)上記第3装置が、システム・メモリである、上記(15)のデータ処理システム。
(20)データ・キャッシュおよび命令キャッシュを含む上位レベル装置が、上記アドレスを有するデータ・キャッシュ位置に変更済みデータを含むことの判定に応答して、上記第2装置が、上記第2装置を上記上位レベル装置に接続するバス上で上記命令に対応する上記バス動作を開始する、上記(15)のデータ処理システム。
【出願人】 【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレイション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MASCHINES CORPORATION
【出願日】 平成11年(1999)2月9日
【代理人】 【弁理士】
【氏名又は名称】坂口 博 (外1名)
【公開番号】 特開平11−328016
【公開日】 平成11年(1999)11月30日
【出願番号】 特願平11−31535