(57)【特許請求の範囲】
【請求項１】
キャッシュ・メモリに対する直接アクセスのための方法であって、
キャッシュ・メモリのためのキャッシュ・コントローラに結合される直接アクセス・マネージャによって、前記キャッシュ・メモリ上で実行される領域範囲ゼロ・非コヒーレンシ動作を記述する領域範囲ゼロ・非コヒーレンシ・コマンドを受信するステップと、
前記領域範囲ゼロ・非コヒーレンシ・コマンドの受信に応答して、
前記直接アクセス・マネージャによって、キャッシュ・ディレクトリにおいて所望のキャッシュ・ラインのルックアップを実行するステップであって、前記所望のキャッシュ・ラインは前記領域範囲ゼロ・非コヒーレンシ・コマンドに対応する、前記実行するステップと、
前記キャッシュ・ラインが前記キャッシュ・ディレクトリ内に見つかった場合には、前記直接アクセス・マネージャによって、前記キャッシュ・ディレクトリに、前記キャッシュ・ラインを無効化するよう命令するステップと、
前記キャッシュ・ラインが前記キャッシュ・ディレクトリ内に見つからなかった場合には、前記直接アクセス・マネージャによって、バス・コマンドを作成することなしに、前記キャッシュ・メモリに前記所望のキャッシュ・ラインを確立しゼロにするステップと
を含む、前記方法。
【請求項２】
前記コマンドがソフトウェアのモジュールから受信される、請求項１に記載の方法。
【請求項３】
前記コマンドが、プロセッサのためのレベル１キャッシュを管理する前記プロセッサのメモリ管理ユニットから受信される、請求項１に記載の方法。
【請求項４】
直接メモリ・アクセス・コマンドを生成するステップをさらに含み、当該直接メモリ・アクセス・コマンドを生成するステップが、複数のマイクロ・オペレーションを発生するステップを含み、前記複数のマイクロ・オペレーションの各々が、オペレーション・コードと、前記マイクロ・オペレーションが実行される前記キャッシュ・メモリの物理アドレスの識別とを含む、請求項１に記載の方法。
【請求項５】
複数のマイクロ・オペレーションを前記キャッシュ・コントローラに送信するステップを含む、請求項３に記載の方法。
【請求項６】
前記直接アクセス・マネージャが、前記直接アクセス・マネージャのステータスの識別を記憶するためのステータス・レジスタを含む、請求項１に記載の方法。
【請求項７】
前記ステータスが、前記直接アクセス・マネージャがビジーであるか否か、前記直接アクセス・マネージャによって受信された最新のコマンド、および前記最新のコマンドを送信したプロセッサから成る群から選択される、請求項６に記載の方法。
【請求項８】
前記直接アクセス・マネージャによって、前記キャッシュ・メモリ内のハードウェアを監視するステップと、
前記直接アクセス・マネージャによって、ローカル・プロセッサが低電力状態に入る準備ができたことを検出するステップと、
前記ローカル・プロセッサが前記低電力状態に入る準備ができたことの検出に応答して、前記直接アクセス・マネージャによって、前記キャッシュ・コントローラに前記キャッシュ・メモリをフラッシュするよう自動的に命令するステップと
をさらに含む、請求項１に記載の方法。
【請求項９】
キャッシュ・メモリに対する直接アクセスのための装置であって、
前記キャッシュ・メモリと、
前記キャッシュ・メモリのためのキャッシュ・コントローラに結合された直接アクセス・マネージャであって、
前記キャッシュ・メモリ上で実行される領域範囲ゼロ動作を記述した領域範囲ゼロ・非コヒーレンシ・コマンドを受信し、
前記領域範囲ゼロ・非コヒーレンシ・コマンドの受信に応答して、
前記直接アクセス・マネージャによって、キャッシュ・ディレクトリにおいて所望のキャッシュ・ラインのルックアップを実行し、ここで、前記所望のキャッシュ・ラインは前記領域範囲ゼロ・非コヒーレンシ・コマンドに対応し、
前記キャッシュ・ラインが前記キャッシュ・ディレクトリ内に見つかった場合には、前記直接アクセス・マネージャによって、前記キャッシュ・ディレクトリに、前記キャッシュ・ラインを無効化するよう命令し、
前記キャッシュ・ラインが前記キャッシュ・ディレクトリ内に見つからなかった場合には、前記直接アクセス・マネージャによって、バス・コマンドを作成することなしに、前記キャッシュ・メモリに前記所望のキャッシュ・ラインを確立しゼロにする
ように構成されている、前記直接アクセス・マネージャと
を備えている、前記装置。
【請求項１０】
前記コマンドがソフトウェアのモジュールから受信される、請求項９に記載の装置。
【請求項１１】
前記コマンドが、プロセッサのためのレベル１キャッシュを管理する前記プロセッサのメモリ管理ユニットから受信される、請求項９に記載の装置。
【請求項１２】
前記装置が、直接メモリ・アクセス・コマンドを生成するように構成されており、当該直接メモリ・アクセス・コマンドを生成することが、複数のマイクロ・オペレーションを発生することを含み、前記複数のマイクロ・オペレーションの各々が、オペレーション・コードと、前記マイクロ・オペレーションが実行される前記キャッシュ・メモリの物理アドレスの識別とを含む、請求項９に記載の装置。
【請求項１３】
前記装置が、複数のマイクロ・オペレーションを前記キャッシュ・コントローラに送信するように構成されている、請求項１１に記載の装置。
【請求項１４】
前記直接アクセス・マネージャが、前記直接アクセス・マネージャのステータスの識別を記憶するためのステータス・レジスタを含む、請求項９に記載の装置。
【請求項１５】
前記ステータスが、前記直接アクセス・マネージャがビジーであるか否か、前記直接アクセス・マネージャによって受信された最新のコマンド、および前記最新のコマンドを送信したプロセッサから成る群から選択される、請求項１４に記載の装置。
【請求項１６】
前記直接アクセス・マネージャが、
前記キャッシュ・メモリ内のハードウェアを監視し、
ローカル・プロセッサが低電力状態に入る準備ができたことを検出し、
前記ローカル・プロセッサが前記低電力状態に入る準備ができたことの検出に応答して、前記キャッシュ・コントローラに前記キャッシュ・メモリをフラッシュするよう自動的に命令する
ように構成されたハードウェアを含む、請求項９に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の分野はデータ処理であり、更に具体的には、キャッシュ・メモリに対する直接アクセスのための方法および装置である。
【背景技術】
【０００２】
キャッシュ・メモリは、コンピュータのメイン・メモリからのデータを記憶するために用いることができる。典型的には、キャッシュ・コントローラを用いてキャッシュ・メモリに対するアクセスを管理し制御する。キャッシュ・コントローラが受信したコマンドによって、メイン・メモリのメモリ・アドレスを特定することができる。コマンドの受信に応答して、キャッシュ・コントローラは、キャッシュ・ディレクトリを用いて、キャッシュ・メモリ内にメモリ・ブロックがあるか否かを判定することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
すなわち、キャッシュ・コントローラにコマンドを提供しているソフトウェアは、キャッシュ・メモリ内にメモリ・ブロックがあるか否かを知らない。ソフトウェアがキャッシュ・メモリをフラッシュまたは無効化させたい場合、ソフトウェアからキャッシュ・コントローラへの命令は非効率的である場合がある。なぜなら、ソフトウェアは、いずれかの特定の時点でキャッシュ内のどのメモリ・ブロックがアクティブであるかを確実には知らないからである。
【課題を解決するための手段】
【０００４】
キャッシュ・メモリに対する直接アクセスのための方法および装置を開示する。実施形態は、キャッシュ・メモリのためのキャッシュ・コントローラに結合された直接アクセス・マネージャによって、キャッシュ・メモリに対して実行される領域範囲ゼロ動作を記述した領域範囲ゼロ・コマンドを受信することと、領域範囲ゼロ・コマンドの受信に応答して、直接アクセス・マネージャによって直接メモリ・アクセス領域範囲ゼロ・コマンドを発生することであって、この直接メモリ・アクセス領域範囲ゼロ・コマンドは、オペレーション・コードと、動作が実行されるキャッシュ・メモリのアドレスの識別と、を有することと、直接アクセス・マネージャによって、直接メモリ・アクセス領域範囲ゼロ・コマンドをキャッシュ・メモリのためのキャッシュ・コントローラに送信することと、キャッシュ・コントローラによって、オペレーション・コードと直接メモリ・アクセス領域範囲ゼロ動作が実行されるキャッシュ・メモリの物理アドレスの識別とに応じた直接メモリ・アクセス領域範囲ゼロ動作を実行することと、を含む。
【０００５】
本発明の前述およびその他の目的、特徴、および利点は、添付図面に図示されたような、以下に述べる本発明の例示的な実施形態の更に詳細な説明から明らかとなろう。図面において、同様の参照番号は概して本発明の例示的な実施形態の同様の部分を表す。
【図面の簡単な説明】
【０００６】
【図１】本発明の実施形態に従った、キャッシュ・メモリに対する直接アクセスを実施するコンピュータの一例の機能ブロック図を示す。
【図２】本発明の実施形態に従った、キャッシュ・メモリに対する直接アクセスのための方法の一例を示すフローチャートを図示する。
【図３】本発明の実施形態に従った、キャッシュ・メモリに対する直接アクセスのための方法の別の例を示すフローチャートを図示する。
【図４】本発明の実施形態に従った、キャッシュ・メモリに対する直接アクセスのための方法の別の例を示すフローチャートを図示する。
【発明を実施するための形態】
【０００７】
本発明の実施形態に従った、キャッシュ・メモリに対する直接アクセスのための例示的な方法および装置について、図１から始まる添付図面を参照して説明する。図１は、本発明の実施形態に従った、キャッシュ・メモリに対する直接アクセスを実施するコンピュータ（１００）の一例の機能ブロック図を示す。
【０００８】
図１における例示的なコンピュータ（１００）は、いくつかのコンピュータ・プロセッサ（１０２）を含む。各プロセッサ（１０２）は、コンピュータ・コア（１０４）を含み、これはメモリ動作のためにメモリ管理ユニット（「ＭＭＵ」）（１０６）を介して共有キャッシュ・レベル（１０８）およびメイン・メモリ（１１４）に結合されている。第１の共有キャッシュ・レベル（１０８）は、キャッシュ・ディレクトリ（１１２）、キャッシュ・コントローラ（１１０）、Ｌ２キャッシュ（１８１）、および直接アクセス・マネージャ（１９７）を含む。
【０００９】
図１のプロセッサ（１０２）の各々はＬ１メモリを含む。Ｌ１は、比較的小さく高速のキャッシュであり、同一チップ上でプロセッサ自体の内部に作られている。ＭＭＵ（１０６）は、アドレス変換論理、変換ルックアサイド・バッファ、オンプロセッサ・キャッシュＬ１のための制御装置等を含む。
【００１０】
メイン・メモリ（１１４）は、コンピュータ（１００）上でデータ処理するためのプログラム・データおよびプログラム命令の主要なランダム・アクセス記憶装置である。メイン・メモリ（１１４）の特徴は、メモリ待ち時間、すなわちメイン・メモリに対する読み取りまたは書き込みといったメモリ・アクセスに必要な時間である。メイン・メモリ（１１４）は、プロセッサ（１０２）間で共有される物理アドレス空間のシングル・エクステントを実現する。
【００１１】
キャッシュ・メモリＬ１およびＬ２（１８１）は、メモリ・アクセス待ち時間を短縮するためにプロセッサ（１０２）によって用いられる専用のメモリ・セグメントである。各キャッシュ・メモリは、メイン・メモリよりも小型かつ高速であり、頻繁に用いられるメイン・メモリ位置からのデータのコピーを記憶する。プロセッサ（１０２）が、メイン・メモリ（１１４）内のある位置に対する読み出しまたは書き込みを必要とする場合、そのデータのコピーすなわち「キャッシュ・ライン」がキャッシュ・メモリ（１８１）内に存在するか否かを最初にチェックする。存在する場合、プロセッサは直ちにキャッシュ・メモリ（１８１）に対する読み取りまたは書き込みを行う。これは、メイン・メモリ（１１４）に対する読み取りまたは書き込みよりも著しく高速である。ほとんどのメモリ・アクセスがキャッシュされたメモリ位置である限り、メモリ・アクセスの平均待ち時間はメイン・メモリの待ち時間よりもキャッシュ待ち時間に近くなる。前述したように、メイン・メモリ（１１４）はあらゆるキャッシュ・メモリよりも著しく低速であり、キャッシュ・ミスはメモリ・アクセス待ち時間において大きな損害を引き起こす。
【００１２】
キャッシュ・メモリは、「キャッシュ・ライン」と称するデータ・ブロックに構成されている。異なる設計の各キャッシュ・ラインは、８から５１２バイト以上のサイズ範囲に及ぶことがある。典型的な１キャッシュ・ラインのサイズは、１から１６バイトの範囲であるＣＰＵ命令によって要求される通常のアクセスのサイズよりも大きい。現在の３２ビットおよび６４ビット・アーキテクチャによって典型的に処理される最大のアドレスおよびデータは、長さ１２８ビットすなわち１６バイトである。各キャッシュ・ラインを特徴付けるのは、キャッシュ・ラインの内容がメイン・メモリに記憶される開始アドレスの最上位ビットから成る「タグ」である。
【００１３】
図１の例では、プロセッサ（１０２）は、Ｌ１キャッシュおよびＬ２キャッシュ（１８１）によって表す２つのレベルを有するマルチレベル・キャッシュを利用する。マルチレベル・キャッシュは、キャッシュ待ち時間とヒット・レートとの間のトレードオフに対処する。キャッシュが大型化するとヒット・レートは向上するが待ち時間が長くなる。このトレードオフに対処するため、多くのコンピュータはマルチレベル・キャッシュを用いて、小さい高速キャッシュをもっと大きい低速キャッシュによって補強する。概して、マルチレベル・キャッシュが動作する際は、最小のレベル１（Ｌ１）キャッシュを最初にチェックし、これがヒットすればプロセッサは高速で進行する。小さい方のキャッシュがミスした場合は次に大きいキャッシュ（Ｌ２）をチェックする等とし、その後でメイン・メモリをチェックする。図１の例示的なコンピュータは２つのキャッシュ・レベルを実施するが、これは単に説明の便宜のためであって、限定ではない。多くのコンピュータは、３または４キャッシュ・レベルのような更に多いキャッシュ・レベルを実施する。いくつかのプロセッサでは３レベルのオンチップ・キャッシュを実施する。例えば、Ａｌｐｈａ  ２１１６４（ＴＭ）は９６ＫＢのオンダイＬ３キャッシュを有し、ＩＢＭ  ＰＯＷＥＲ４（ＴＭ）は２５６ＭＢのＬ３キャッシュ・オフチップを有し、いくつかのプロセッサ間で共有する。
【００１４】
キャッシュ・コントローラ（１１０）は、キャッシュ・メモリ内のキャッシュ・ラインに関する情報のレポジトリであるキャッシュ・ディレクトリ（１１２）を含む。ディレクトリは、コンピュータ内の全キャッシュ・メモリにおける各キャッシュ・ラインごとに、キャッシュ・ラインのアイデンティティすなわちキャッシュ・ラインの「タグ」、キャッシュ・ラインの状態すなわち「変更済み」、「共有」、「無効」等、および、低レベル共有キャッシュのキャッシュ・ラインのコピーがもっと高いキャッシュ・レベルに記憶されているか否かを各プロセッサごとに特定するビット・ベクトルを記録する。ＭＭＵ（１０６）およびキャッシュ・コントローラ（１１０）は、コンピュータ・ノード上の全てのキャッシュ動作について、キャッシュ・ディレクトリ（１１２）内の情報を調べて更新する。キャッシュ・コントローラ（１１０）は、Ｌ２キャッシュ（１８１）に直接接続されているがＬ１キャッシュには直接接続されておらず、Ｌ１キャッシュのキャッシュ・ラインに関する情報をキャッシュ・ディレクトリ（１１２）から取得する。
【００１５】
キャッシュ・コントローラ（１１０）は、キャッシュ・メモリを管理する論理回路であり、プロセッサ（１０２）、キャッシュ・メモリ（Ｌ１、Ｌ２）、およびメイン・メモリ（１１４）間のインタフェースを提供する。ここではキャッシュ・コントローラ（１１０）をプロセッサ（１０２）の外部に図示するが、最近のコンピュータ上のキャッシュ・コントローラはプロセッサまたはＭＭＵに直接組み込まれていることが多い。実際、この例においてＭＭＵ（１０６）はＬ１キャッシュのためのキャッシュ制御論理を含む。
【００１６】
直接アクセス・マネージャ（１９７）は、本発明に従ってキャッシュ・メモリ（１８１）に対する直接アクセスを実施する論理回路である。図１の直接アクセス・マネージャ（１９７）は、キャッシュ・メモリ（１８１）に対して実行される動作を記述したコマンドを受信し、このコマンド受信に応答して直接メモリ・アクセス・コマンドを発生し、この直接メモリ・アクセス・コマンドをキャッシュ・メモリ（１８１）のためのキャッシュ・コントローラ（１１０）に送信するように構成されている。直接メモリ・アクセス・コマンドは、オペレーション・コードおよび動作が実行されるキャッシュ・メモリ（１８１）の物理アドレスの識別を有する。直接メモリ・アクセス・コマンドの受信に応答して、キャッシュ・コントローラ（１１０）は、オペレーション・コードおよび動作が実行されるキャッシュ・メモリ（１８１）の物理アドレスの識別に応じた動作を実行するように構成されている。
【００１７】
図１の直接アクセス・マネージャ（１９７）は、直接アクセス・マネージャ（１９７）のステータスの識別を記憶するためのステータス・レジスタ（１４１）を含む。ステータスは、直接アクセス・マネージャ（１９７）に関連付けられてキャッシュ・メモリ（１８１）に直接アクセスするいずれかの数のパラメータを含むことができる。例えば、ステータスは、直接アクセス・マネージャがビジーであるか否か、直接アクセス・マネージャが受信した最新のコマンド、この最新のコマンドを送信したプロセッサ等を示すことができる。また、図１の直接アクセス・マネージャ（１９７）は、コマンドを記憶するためのコマンド・レジスタ（１４２）も含む。例えば、マルチプロセッシング・コンピュータ（１００）内のランダム・アクセス・メモリ（１９５）内のソフトウェア（１９６）は、実行されるとプロセッサ（１０２）のいずれか１つにコマンド・レジスタ（１４２）に対してコマンドを書き込ませる命令を含むことができる。また、コマンド（１４２）はプロセッサ（１０２）内のＭＭＵ（１０６）から発生する場合もある。
【００１８】
更に説明すると、図２は、本発明の実施形態に従った、キャッシュ・メモリに対する直接アクセスのための方法の一例を示すフローチャートを図示する。図２の方法は、キャッシュ・メモリ（１８１）のためのキャッシュ・コントローラ（１１０）に結合された直接アクセス・マネージャ（１９７）が、キャッシュ・メモリ（１８１）に実行される領域範囲ゼロ動作を記述した領域範囲ゼロ・コマンド（２３０）を受信すること（２０２）を含む。キャッシュ・メモリ（１８１）に実行される領域範囲ゼロ動作を記述した領域範囲ゼロ・コマンド（２３０）の受信（２０２）は、直接アクセス・マネージャ（１９７）のコマンド・レジスタ（１４２）に対する書き込みを検出することによって実施可能である。例えば、プロセッサ（１０２）のいずれか１つが、領域範囲ゼロ・コマンド（２３０）をコマンド・レジスタ（１４２）に書き込むことができる。
【００１９】
また、図２の方法は、領域範囲ゼロ・コマンド（２３０）の受信に応答して、直接アクセス・マネージャ（１９７）が、直接メモリ・アクセス・コマンド領域範囲ゼロ（２４０）を発生すること（２０４）を含む。直接メモリ・アクセス領域範囲ゼロ・コマンド（２４０）は、オペレーション・コード（２４２）および動作が実行されるキャッシュ・メモリ（１８１）の物理アドレスの識別（２４４）を有する。領域範囲ゼロ・コマンド（２３０）の受信に応答した直接メモリ・アクセス・コマンド（２４０）の発生（２０４）は、受信コマンド（２３０）を調べてこの受信コマンド（２３０）に関連付けられた動作タイプを判定することによって実施可能である。例えば、直接アクセス・マネージャ（１９７）は、「キャッシュ範囲」（ＣＳ）コマンドを用いて全キャッシュ・メモリに対して、「領域範囲」（ＲＳ）コマンドを用いてキャッシュ・メモリ（１８１）の一部に対して、更に「ライン範囲」（ＬＳ）コマンドを用いてキャッシュ・メモリ（１８１）の単一ラインに対して、動作を実行するように構成することができる。各コマンド・タイプを用いて直接アクセス・メモリ（１９７）がキャッシュ・メモリ（１８１）の物理アドレスを提供することで、キャッシュ・コントローラ（１１０）がルックアップを行わずに動作を実行することを可能とする。
【００２０】
直接アクセス・マネージャ（１９７）は、バス・コマンドを受信することなくキャッシュの全内容を無効化するキャッシュ範囲無効化（ＣＳＩ）コマンドを実行するように構成することができる。ＣＳＩコマンドを用いて、直接アクセス・マネージャ（１９７）は、キャッシュ・メモリ（１８１）内の各ラインごとに「Ｌ２キャッシュ・ブロック無効化」動作を発生する。
【００２１】
直接アクセス・マネージャ（１９７）は、キャッシュ・メモリ（１８１）の全内容をフラッシュするキャッシュ範囲フラッシュ（ＣＳＦ）・コマンドを実行するように構成することができる。直接アクセス・マネージャ（１９７）は、キャッシュ・メモリ（１８１）の各ラインごとに「Ｌ２キャッシュ・フラッシュ」コマンドを発生する。例えば、第１のフラッシュ・コマンドは、キャッシュ・メモリ（１８１）の合同クラス（ｃｇｃ）０の「ウェイ−０」をターゲットとする。実アドレスを用いてルックアップを実行するのではなく、キャッシュ・メモリはキャッシュ・メモリ（１８１）の物理アドレスを用いてキャッシュ・ディレクトリの内容を読み出す。ラインがローカルで変更されている場合、キャッシュ・メモリ（１８１）は、ターゲット・アドレスを生成するためにキャッシュ・ディレクトリに記憶されているタグを用いてメイン・メモリ（１１４）にキャッシュ・ラインを書き込む。直接アドレス・マネージャ（１９７）は、次の共有キャッシュ・メモリ（図示せず）へと増分し、そのキャッシュ・メモリ内のｃｇｃ−０、ウェイ−０にフラッシュ・コマンドを送信することができる。
【００２２】
直接アクセス・マネージャ（１９７）は、領域範囲ゼロ・コヒーレンシ・コマンド（ＲＳＺＣ）を実行するように構成することができる。これは、直接アクセス・マネージャ（１９７）がキャッシュ・ディレクトリ（１１２）において所望のメモリ実アドレスのルックアップを実行すること、キャッシュ・ディレクトリ（１１２）内にキャッシュ・ラインが見つかった場合には、直接アクセス・マネージャ（１９７）がキャッシュ・ディレクトリ（１１２）にその現在の位置からキャッシュ・ラインを無効化してＲＳＺＣコマンドによって特定されるキャッシュ位置においてラインを確立しゼロにするよう命令すること、および、キャッシュ・ラインが見つからなかった場合には、直接アクセス・マネージャ（１９７）がキャッシュ・メモリ（１８１）にキャッシュ・ラインを確立しゼロにするよう命令することを含む。ＲＳＺＣ動作において、キャッシュ内にキャッシュ・ラインが存在しない場合または共有状態である場合、システム内の他のキャッシュとのコヒーレンシを維持するためにバス動作を実行することができる。シングル・キャッシュ・システムではコヒーレンシは問題でないが、キャッシュ・ラインの古いコピーはやはり無効化される。
【００２３】
直接アクセス・マネージャ（１９７）は、領域範囲ゼロ非コヒーレンシ・コマンド（ＲＳＺＮＣ）を実行するように構成することができる。これは、直接アクセス・マネージャ（１９７）がキャッシュ・ディレクトリ（１１２）において所望のキャッシュ位置のルックアップを実行すること、および、キャッシュ・ディレクトリ（１１２）内にキャッシュ・ラインが見つかった場合には直接アクセス・マネージャ（１９７）がキャッシュ・ディレクトリ（１１２）にキャッシュ・ラインを無効化するよう命令することを含む。ＲＳＺＮＣ動作は、パワーオン・リセット（ＰＯＲ）・シーケンスの間に直接アクセス・マネージャ（１９７）によって実行することができ、ＰＯＲシーケンスの間にファームウェア命令はキャッシュ・メモリ（１８１）にコピーされる。ＲＳＺＮＣ動作においては、バス・コマンドを生成することなくキャッシュにキャッシュ・ラインが確立される（およびゼロとされる）。これは、ＰＯＲシーケンスの間にメモリ・コントローラの前にキャッシュをイネーブルするために特に有用である。この場合、ファームウェアはいっそう高速に動作することができ、ブート中に中間結果を記憶するためキャッシュ内に高速スクラッチ・パッドが確立される。いかなる時点でも、ＲＳＺＮＣ動作を用いてキャッシュ内のメモリ・ブロックをスクラッチ・パッドとして迅速に確立することができる。この場合、ハードウェアはコヒーレンシを維持しておらず、システムにコヒーレントなキャッシュがある場合にキャッシュをいつ使用可能であるかはソフトウェアが把握する責任がある。
【００２４】
直接アクセス・マネージャ（１９７）は、ライン範囲読み取りディレクトリ（ＬＳＲＤ）・コマンドを実行するように構成することができる。これは、キャッシュ・ラインのタグ、コヒーレンシ状態、および他の制御ビットを判定するためにディレクトリ・エントリを読み取る。ＬＳＲＤコマンドに応答して、単一キャッシュ・ラインのディレクトリ・エントリが読み取られる。
【００２５】
直接アクセス・マネージャ（１９７）は、ライン範囲書き込みディレクトリ（ＬＳＷＤ）・コマンドを実行するように構成することができる。これは、デバッグ・セッションの開始時にキャッシュ・メモリの状態をリストアするためにディレクトリ・エントリを書き込む。また、ＬＳＷＤコマンドは、ハードウェア検証においてまたはデバッグ中に特定のキャッシュ状況を生成するために有用である場合がある。
【００２６】
直接アクセス・マネージャ（１９７）は、キャッシュ・メモリ（１８１）からデータを読み取るためのライン範囲読み取りキャッシュ・ライン・データ（ＬＳＲＣ）・コマンドを実行するように構成することができる。直接アクセス・マネージャ（１９７）は、キャッシュ・メモリ（１８１）からデータを書き込むためのライン範囲書き込みキャッシュ・ライン・データ（ＬＳＷＣ）・コマンドを実行するように構成することができる。
【００２７】
直接アクセス・マネージャ（１９７）は、キャッシュ・メモリ（１８１）内のタグをルックアップするためのライン範囲ルックアップ（ＬＳＬＫ）・コマンドを実行するように構成することができる。ソフトウェアのデバッグ／開発を行う場合に、ディレクトリ全体をダンプすることなくキャッシュ・メモリ（１８１）内に特定のキャッシュ・ラインが存在するか否かを知ると有用である場合がある。ＬＳＬＫコマンドを用いて、対象ラインについてキャッシュ・ディレクトリでルックアップを実行し、見つかった場合にはコマンドによってディレクトリ・エントリの内容（タグ、コヒーレンシ状態等）をソフトウェア・アクセス可能レジスタにダンプし、見つからない場合には同一のソフトウェア・アクセス可能レジスタにミス情報を記録する。
【００２８】
図２の方法は、直接アクセス・マネージャ（１９７）が、直接メモリ・アクセス領域範囲ゼロ・コマンド（２４０）を、キャッシュ・メモリ（１８１）のためのキャッシュ・コントローラ（１１０）に送信すること（２０６）を含む。直接メモリ・アクセス領域範囲ゼロ・コマンド（２４０）をキャッシュ・メモリ（１８１）のためのキャッシュ・コントローラ（１１０）に送信すること（２０６）は、キャッシュ・コントローラ（１１０）にデータを送信することで実施可能である。このデータは、キャッシュ・コントローラ（１１０）に、領域範囲ゼロ・コマンド（２３０）に関連付けられた動作を実行するよう命令するものである。
【００２９】
また、図２の方法は、キャッシュ・コントローラ（１１０）が、オペレーション・コード（２４２）および動作が実行されるキャッシュ・メモリ（１８１）の物理アドレスの識別（２４４）に応じた動作を実行すること（２０８）を含む。オペレーション・コード（２４２）および動作が実行されるキャッシュ・メモリ（１８１）の物理アドレスの識別（２４４）に応じた動作を実行すること（２０８）は、キャッシュ・コントローラ（１１０）に動作の実行を命令する際にキャッシュ・メモリ（１８１）の物理アドレスを用いることによって実施可能である。メイン・メモリ（１１４）のメモリ・アドレスでなくキャッシュの物理アドレスを用いることによって、キャッシュ・コントローラ（１１０）はルックアップの実行を回避することができ、キャッシュ・メモリ（１８１）に対する制御を向上させ得る。
【００３０】
更に説明すると、図３は、本発明の実施形態に従った、キャッシュ・メモリに対する直接アクセスのための方法の別の例を示すフローチャートを図示する。図３の方法は、図２の方法の以下の要素を含む。すなわち、キャッシュ・メモリ（１８１）のためのキャッシュ・コントローラ（１１０）に結合された直接アクセス・マネージャ（１９７）が、キャッシュ・メモリ（１８１）に実行される動作を記述したコマンド（２３０）を受信すること（２０２）、領域範囲ゼロ・コマンド（２３０）の受信に応答して直接アクセス・マネージャ（１９７）が直接メモリ・アクセス・コマンド（２４０）を発生すること（２０４）、この直接メモリ・アクセス領域範囲ゼロ・コマンド（２４０）はオペレーション・コード（２４２）および動作が実行されるキャッシュ・メモリ（１８１）の物理アドレスの識別（２４４）を有すること、直接アクセス・マネージャ（１９７）が、直接メモリ・アクセス領域範囲ゼロ・コマンド（２４０）をキャッシュ・メモリ（１８１）のためのキャッシュ・コントローラ（１１０）に送信すること（２０６）、である。
【００３１】
図２の方法と異なる図３の要素を図３に点線で示す。更に具体的には、それらの要素は、オペレーション・コード（３５２、３６２）およびマイクロ・オペレーションが実行されるキャッシュ・メモリ（１８１）の物理アドレスの識別（３５４、３６４）を各々が含む複数のマイクロ・オペレーション（３４０）を発生すること（３０２）、および、複数のマイクロ・オペレーション（３４０）をキャッシュ・コントローラ（１１０）に送信すること（３０４）を含む。
【００３２】
図３の方法において、直接メモリ・アクセス・コマンド（２４０）の発生（２０４）は、オペレーション・コード（３５２、３６２）およびマイクロ・オペレーションが実行されるキャッシュ・メモリ（１８１）の物理アドレスの識別（３５４、３６４）を各々が含む複数のマイクロ・オペレーション（３４０）を発生すること（３０２）を含む。オペレーション・コード（３５２、３６２）およびマイクロ・オペレーションが実行されるキャッシュ・メモリ（１８１）の物理アドレスの識別（３５４、３６４）を各々が含む複数のマイクロ・オペレーション（３４０）を発生すること（３０２）は、直接アクセス・マネージャ（１９７）がキャッシュ・メモリ（１８１）における所望のキャッシュ位置のルックアップを実行すること、および、キャッシュ・メモリ（１８１）内にキャッシュ・ラインが見つかった場合に直接アクセス・マネージャ（１９７）がキャッシュ・メモリ（１８１）にキャッシュ・ラインを無効化するよう命令することによって実行される。
【００３３】
図３の方法において、直接メモリ・アクセス領域範囲ゼロ・コマンド（２４０）をキャッシュ・メモリ（１８１）のためのキャッシュ・コントローラ（１１０）に送信すること（２０６）は、複数のマイクロ・オペレーション（３４０）をキャッシュ・コントローラ（１１０）に送信すること（３０４）を含む。複数のマイクロ・オペレーション（３４０）をキャッシュ・コントローラ（１１０）に送信すること（３０４）は、前のマイクロ・オペレーションに対して各マイクロ・オペレーションのアドレスを増分することによって実施可能である。マイクロ・オペレーションのフォーマットでは、キャッシュ・コントローラ（１１０）がプロセッサ（１０２）のいずれか１つの命令セット・アーキテクチャ（ＩＳＡ）の拡張として各マイクロ・オペレーションを扱うようになっている。
【００３４】
更に説明すると、図４は、本発明の実施形態に従った、キャッシュ・メモリに対する直接アクセスのための別の例を示すフローチャートを図示する。図４の方法は、図２の方法の以下の要素を含む。すなわち、キャッシュ・メモリ（１８１）のためのキャッシュ・コントローラ（１１０）に結合された直接アクセス・マネージャ（１９７）が、キャッシュ・メモリ（１８１）に実行される動作を記述したコマンド（２３０）を受信すること（２０２）、領域範囲ゼロ・コマンド（２３０）の受信に応答して、直接アクセス・マネージャ（１９７）が直接メモリ・アクセス・コマンド（２４０）を発生すること（２０４）、この直接メモリ・アクセス領域範囲ゼロ・コマンド（２４０）はオペレーション・コード（２４２）および動作が実行されるキャッシュ・メモリ（１８１）の物理アドレスの識別（２４４）を有すること、直接アクセス・マネージャ（１９７）が直接メモリ・アクセス領域範囲ゼロ・コマンド（２４０）をキャッシュ・メモリ（１８１）のためのキャッシュ・コントローラ（１１０）に送信すること（２０６）、である。
【００３５】
図２の方法と異なる図４の要素を図４に点線で示す。更に具体的には、それらの要素は、直接アクセス・マネージャ（１９７）がキャッシュ・メモリ（１８１）内のハードウェアを監視すること（４０２）、直接アクセス・マネージャ（１９７）が、ローカル・プロセッサが低電力状態に入る準備ができたことを検出すること（４０４）、ローカル・プロセッサが低電力状態に入る準備ができたことの検出に応答して、直接アクセス・マネージャ（１９７）がキャッシュ・コントローラ（１１０）にキャッシュ・メモリ（１８１）をフラッシュするよう自動的に命令すること（４０６）を含む。
【００３６】
図４の方法は、直接アクセス・マネージャ（１９７）がキャッシュ・メモリ（１８１）内のハードウェアを監視すること（４０２）を含む。キャッシュ・メモリ（１８１）内のハードウェアを監視すること（４０２）は、コンピュータ（１００）のコンポーネントに関連付けられたハードウェア・イベントを検出することによって実施可能である。例えば、ハードウェア・イベントは、コンポーネントが低電力状態等の節電状態に入る準備ができたことを示すものである場合がある。
【００３７】
図４の方法は、直接アクセス・マネージャ（１９７）によってローカル・プロセッサが低電力状態に入る準備ができたことを検出すること（４０４）を含む。ローカル・プロセッサが低電力状態に入る準備ができたことの検出（４０４）は、プロセッサ（１０２）のいずれか１つが低電力状態に入る準備ができたことを示す信号を、バスを介して受信することによって実施可能である。
【００３８】
図４の方法は、ローカル・プロセッサが低電力状態に入る準備ができたことの検出に応答して、直接アクセス・マネージャ（１９７）がキャッシュ・コントローラ（１１０）にキャッシュ・メモリ（１８１）をフラッシュするよう自動的に命令すること（４０６）を含む。ローカル・プロセッサが低電力状態に入る準備ができたことの検出に応答して、キャッシュ・コントローラ（１１０）にキャッシュ・メモリ（１８１）をフラッシュするよう自動的に命令すること（４０６）は、キャッシュ・メモリ（１８１）の全内容をフラッシュするキャッシュ範囲フラッシュ（ＣＳＦ）・コマンドを実行することによって実施可能である。
【００３９】
当業者には認められるであろうが、本発明の態様は、システム、方法、またはコンピュータ・プログラムとして具現化することができる。従って、本発明の態様は、従って、本開示の態様は、全体的にハードウェアの実施形態、全体的にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコード等を含む）、または、ソフトウェアおよびハードウェアの態様を組み合わせた実施形態という形態を取ることができ、それらは全て本明細書において、「回路」、「モジュール」、または「システム」と一般的に称することができる。更に、本発明の態様は、具現化されたコンピュータ読み取り可能プログラム・コードを有する１つ以上のコンピュータ読み取り可能媒体において具現化されるコンピュータ・プログラムの形態を取ることも可能である。
【００４０】
１つ以上のコンピュータ読み取り可能媒体のあらゆる組み合わせを利用することができる。コンピュータ読み取り可能媒体は、コンピュータ読み取り可能信号媒体またはコンピュータ読み取り可能記憶媒体とすることができる。コンピュータ読み取り可能記憶媒体は例えば、限定ではないが、電子、磁気、光、電磁、赤外線、または半導体のシステム、装置、デバイス、または前述のもののいずれかの適切な組み合わせとすることができる。コンピュータ読み取り可能記憶媒体の更に具体的な例（非網羅的な列挙）は、以下を含む。すなわち、１本以上のワイヤを含む電気的接続、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、電気的プログラマブル読み取り専用メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、光ファイバ、携帯型コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、光記憶デバイス、磁気記憶デバイス、または前述のもののいずれかの適切な組み合わせである。この文書の文脈において、コンピュータ読み取り可能記憶媒体は、命令実行システム、装置、またはデバイスによってまたはそれと接続して用いるためにプログラムを含有または記憶することが可能ないずれかのタンジブルな媒体とすることができる。
【００４１】
コンピュータ読み取り可能信号媒体は、例えばベースバンドにおいてまたは搬送波の一部として、具現化されたコンピュータ読み取り可能プログラム・コードを有する伝播データ信号を含むことができる。かかる伝播信号は様々な形態のいずれかを取ることができ、それらは限定ではないが、電磁、光、またはそれらのいずれかの適切な組み合わせを含む。コンピュータ読み取り可能信号媒体は、コンピュータ読み取り可能記憶媒体でないが、命令実行システム、装置、またはデバイスによってまたはそれと接続して用いるためにプログラムを伝達、伝播、または転送することが可能ないずれかのコンピュータ読み取り可能媒体とすることができる。
【００４２】
コンピュータ読み取り可能媒体上で具現化されるプログラム・コードは、限定ではないが、無線、有線、光ファイバ・ケーブル、ＲＦ等、または前述のもののいずれかの適切な組み合わせを含むいずれかの適切な媒体を用いて伝送することができる。
【００４３】
本開示の態様の動作を実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ（Ｒ）、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋等のオブジェクト指向プログラミング言語、および、「Ｃ」プログラミング言語または同様のプログラミング言語等の従来の手順プログラミング言語を含む１つ以上のプログラミング言語のいずれかの組み合わせにおいて記述することができる。プログラム・コードは、全体的にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロンのソフトウェア・パッケージとして、部分的にユーザのコンピュータ上でおよび部分的に遠隔コンピュータ上で、または全体的に遠隔コンピュータもしくはサーバ上で、実行することができる。後者の場合、遠隔コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）またはワイド・エリア・ネットワーク（ＷＡＮ）を含むいずれかのタイプのネットワークを介してユーザのコンピュータに接続することができ、または、接続は、（例えばインターネット・サービス・プロバイダを用いてインターネットを介して）外部コンピュータに対して行うことができる。
【００４４】
本開示の実施形態に従った方法、装置（システム）、およびコンピュータ・プログラムのフローチャート図またはブロック図あるいはその両方を参照して、本開示の態様について記載している。フローチャート図またはブロック図あるいはその両方の各ブロックならびにフローチャート図またはブロック図あるいはその両方におけるブロックの組み合わせは、コンピュータ・プログラム命令によって実施可能であることは理解されよう。これらのコンピュータ・プログラム命令は、汎用コンピュータ、特殊目的コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されて機械を生成することができ、これによって、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサによって実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックまたは複数のブロックに規定された機能／行為を実施するための手段を生成するようになっている。
【００４５】
また、これらのコンピュータ・プログラム命令はコンピュータ読み取り可能媒体に記憶することができ、これによって、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスに特定の方法で機能するように指示することができ、これにより、コンピュータ読み取り可能媒体に記憶された命令が、フローチャートまたはブロック図あるいはその両方のブロックまたは複数のブロックに規定された機能／行為を実施する命令を含む製造品を生成するようになっている。
【００４６】
また、コンピュータ・プログラム命令を、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードして、そのコンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実行させてコンピュータ実施プロセスを生成することができ、これによって、コンピュータまたは他のプログラマブル装置上で実行する命令が、フローチャートまたはブロック図あるいはその両方のブロックまたは複数のブロックに規定された機能／行為を実施するためのプロセスを提供するようになっている。
【００４７】
上述した図面におけるフローチャートおよびブロック図は、本開示の様々な実施形態に従ったシステム、方法、およびコンピュータ・プログラムにおいて可能な実施のアーキテクチャ、機能性、および動作を示す。この点で、フローチャートまたはブロック図における各ブロックは、規定された論理機能（複数の機能）を実施するための１つ以上の実行可能命令を含むコードのモジュール、セグメント、または一部を表すことができる。また、いくつかの代替的な実施において、ブロックに明記した機能は、図面に明記した順序どおりでなく発生する場合があることに留意すべきである。例えば、関与する機能性に応じて、連続して示した２つのブロックは実際には実質的に同時に実行されることがあり、またはブロックは時に逆の順序で実行される場合がある。また、ブロック図またはフローチャートあるいはその両方の各ブロック、およびブロック図またはフローチャートあるいはその両方におけるブロックの組み合わせは、規定された機能もしくは行為を実行する特殊目的ハードウェア・ベースのシステム、または特殊目的ハードウェアおよびコンピュータ命令の組み合わせによって実施可能であることに留意すべきである。
【００４８】
前述の記載から、本発明の真の精神から逸脱することなくその様々な実施形態において変形および変更を実行可能であることは理解されよう。本明細書における記載は例示の目的のためだけのものであり、限定の意味で解釈されるべきではない。本発明の範囲は、以下の特許請求の範囲の文言によってのみ限定される。
【符号の説明】
【００４９】
１００  マルチプロセッシング・コンピュータ
１０２  プロセッサ
１０４  コア
１０６  ＭＭＵ
１０８  共有キャッシュ・レベル
１１０  キャッシュ・コントローラ
１１２  キャッシュ・ディレクトリ
１１４  メイン・メモリ
１４１  ステータス・レジスタ
１４２  コマンド・レジスタ
１８１  Ｌ２キャッシュ・メモリ
１９７  直接アクセス・マネージャ
【図１】
0005623370.tif 000002
【図２】
0005623370.tif 000003
【図３】
0005623370.tif 000004
【図４】
0005623370.tif 000005