説明

キャッシュ・メモリに対する直接アクセスのための装置および方法

【課題】キャッシュ・メモリに対する直接アクセスのための方法および装置を提供する。
【解決手段】キャッシュ・コントローラ110に結合された直接アクセス・マネージャ197によって、キャッシュ・メモリ181に対して実行される領域範囲ゼロ動作を記述した領域範囲ゼロ・コマンドを受信することと、領域範囲ゼロ・コマンドの受信に応答して直接メモリ・アクセス領域範囲ゼロ・コマンドを発生することであって、直接メモリ・アクセス領域範囲ゼロ・コマンドは、オペレーション・コードと、動作が実行されるキャッシュ・メモリのアドレスの識別と、を有することと、直接メモリ・アクセス領域範囲ゼロ・コマンドをキャッシュ・コントローラ110に送信することと、キャッシュ・コントローラ110によって、オペレーション・コードとキャッシュ・メモリ181の物理アドレスの識別とに応じた直接メモリ・アクセス領域範囲ゼロ動作を実行することと、を含む。

【発明の詳細な説明】
【技術分野】
【0001】
本発明の分野はデータ処理であり、更に具体的には、キャッシュ・メモリに対する直接アクセスのための方法および装置である。
【背景技術】
【0002】
キャッシュ・メモリは、コンピュータのメイン・メモリからのデータを記憶するために用いることができる。典型的には、キャッシュ・コントローラを用いてキャッシュ・メモリに対するアクセスを管理し制御する。キャッシュ・コントローラが受信したコマンドによって、メイン・メモリのメモリ・アドレスを特定することができる。コマンドの受信に応答して、キャッシュ・コントローラは、キャッシュ・ディレクトリを用いて、キャッシュ・メモリ内にメモリ・ブロックがあるか否かを判定することができる。
【発明の概要】
【発明が解決しようとする課題】
【0003】
すなわち、キャッシュ・コントローラにコマンドを提供しているソフトウェアは、キャッシュ・メモリ内にメモリ・ブロックがあるか否かを知らない。ソフトウェアがキャッシュ・メモリをフラッシュまたは無効化させたい場合、ソフトウェアからキャッシュ・コントローラへの命令は非効率的である場合がある。なぜなら、ソフトウェアは、いずれかの特定の時点でキャッシュ内のどのメモリ・ブロックがアクティブであるかを確実には知らないからである。
【課題を解決するための手段】
【0004】
キャッシュ・メモリに対する直接アクセスのための方法および装置を開示する。実施形態は、キャッシュ・メモリのためのキャッシュ・コントローラに結合された直接アクセス・マネージャによって、キャッシュ・メモリに対して実行される領域範囲ゼロ動作を記述した領域範囲ゼロ・コマンドを受信することと、領域範囲ゼロ・コマンドの受信に応答して、直接アクセス・マネージャによって直接メモリ・アクセス領域範囲ゼロ・コマンドを発生することであって、この直接メモリ・アクセス領域範囲ゼロ・コマンドは、オペレーション・コードと、動作が実行されるキャッシュ・メモリのアドレスの識別と、を有することと、直接アクセス・マネージャによって、直接メモリ・アクセス領域範囲ゼロ・コマンドをキャッシュ・メモリのためのキャッシュ・コントローラに送信することと、キャッシュ・コントローラによって、オペレーション・コードと直接メモリ・アクセス領域範囲ゼロ動作が実行されるキャッシュ・メモリの物理アドレスの識別とに応じた直接メモリ・アクセス領域範囲ゼロ動作を実行することと、を含む。
【0005】
本発明の前述およびその他の目的、特徴、および利点は、添付図面に図示されたような、以下に述べる本発明の例示的な実施形態の更に詳細な説明から明らかとなろう。図面において、同様の参照番号は概して本発明の例示的な実施形態の同様の部分を表す。
【図面の簡単な説明】
【0006】
【図1】本発明の実施形態に従った、キャッシュ・メモリに対する直接アクセスを実施するコンピュータの一例の機能ブロック図を示す。
【図2】本発明の実施形態に従った、キャッシュ・メモリに対する直接アクセスのための方法の一例を示すフローチャートを図示する。
【図3】本発明の実施形態に従った、キャッシュ・メモリに対する直接アクセスのための方法の別の例を示すフローチャートを図示する。
【図4】本発明の実施形態に従った、キャッシュ・メモリに対する直接アクセスのための方法の別の例を示すフローチャートを図示する。
【発明を実施するための形態】
【0007】
本発明の実施形態に従った、キャッシュ・メモリに対する直接アクセスのための例示的な方法および装置について、図1から始まる添付図面を参照して説明する。図1は、本発明の実施形態に従った、キャッシュ・メモリに対する直接アクセスを実施するコンピュータ(100)の一例の機能ブロック図を示す。
【0008】
図1における例示的なコンピュータ(100)は、いくつかのコンピュータ・プロセッサ(102)を含む。各プロセッサ(102)は、コンピュータ・コア(104)を含み、これはメモリ動作のためにメモリ管理ユニット(「MMU」)(106)を介して共有キャッシュ・レベル(108)およびメイン・メモリ(114)に結合されている。第1の共有キャッシュ・レベル(108)は、キャッシュ・ディレクトリ(112)、キャッシュ・コントローラ(110)、L2キャッシュ(181)、および直接アクセス・マネージャ(197)を含む。
【0009】
図1のプロセッサ(102)の各々はL1メモリを含む。L1は、比較的小さく高速のキャッシュであり、同一チップ上でプロセッサ自体の内部に作られている。MMU(106)は、アドレス変換論理、変換ルックアサイド・バッファ、オンプロセッサ・キャッシュL1のための制御装置等を含む。
【0010】
メイン・メモリ(114)は、コンピュータ(100)上でデータ処理するためのプログラム・データおよびプログラム命令の主要なランダム・アクセス記憶装置である。メイン・メモリ(114)の特徴は、メモリ待ち時間、すなわちメイン・メモリに対する読み取りまたは書き込みといったメモリ・アクセスに必要な時間である。メイン・メモリ(114)は、プロセッサ(102)間で共有される物理アドレス空間のシングル・エクステントを実現する。
【0011】
キャッシュ・メモリL1およびL2(181)は、メモリ・アクセス待ち時間を短縮するためにプロセッサ(102)によって用いられる専用のメモリ・セグメントである。各キャッシュ・メモリは、メイン・メモリよりも小型かつ高速であり、頻繁に用いられるメイン・メモリ位置からのデータのコピーを記憶する。プロセッサ(102)が、メイン・メモリ(114)内のある位置に対する読み出しまたは書き込みを必要とする場合、そのデータのコピーすなわち「キャッシュ・ライン」がキャッシュ・メモリ(181)内に存在するか否かを最初にチェックする。存在する場合、プロセッサは直ちにキャッシュ・メモリ(181)に対する読み取りまたは書き込みを行う。これは、メイン・メモリ(114)に対する読み取りまたは書き込みよりも著しく高速である。ほとんどのメモリ・アクセスがキャッシュされたメモリ位置である限り、メモリ・アクセスの平均待ち時間はメイン・メモリの待ち時間よりもキャッシュ待ち時間に近くなる。前述したように、メイン・メモリ(114)はあらゆるキャッシュ・メモリよりも著しく低速であり、キャッシュ・ミスはメモリ・アクセス待ち時間において大きな損害を引き起こす。
【0012】
キャッシュ・メモリは、「キャッシュ・ライン」と称するデータ・ブロックに構成されている。異なる設計の各キャッシュ・ラインは、8から512バイト以上のサイズ範囲に及ぶことがある。典型的な1キャッシュ・ラインのサイズは、1から16バイトの範囲であるCPU命令によって要求される通常のアクセスのサイズよりも大きい。現在の32ビットおよび64ビット・アーキテクチャによって典型的に処理される最大のアドレスおよびデータは、長さ128ビットすなわち16バイトである。各キャッシュ・ラインを特徴付けるのは、キャッシュ・ラインの内容がメイン・メモリに記憶される開始アドレスの最上位ビットから成る「タグ」である。
【0013】
図1の例では、プロセッサ(102)は、L1キャッシュおよびL2キャッシュ(181)によって表す2つのレベルを有するマルチレベル・キャッシュを利用する。マルチレベル・キャッシュは、キャッシュ待ち時間とヒット・レートとの間のトレードオフに対処する。キャッシュが大型化するとヒット・レートは向上するが待ち時間が長くなる。このトレードオフに対処するため、多くのコンピュータはマルチレベル・キャッシュを用いて、小さい高速キャッシュをもっと大きい低速キャッシュによって補強する。概して、マルチレベル・キャッシュが動作する際は、最小のレベル1(L1)キャッシュを最初にチェックし、これがヒットすればプロセッサは高速で進行する。小さい方のキャッシュがミスした場合は次に大きいキャッシュ(L2)をチェックする等とし、その後でメイン・メモリをチェックする。図1の例示的なコンピュータは2つのキャッシュ・レベルを実施するが、これは単に説明の便宜のためであって、限定ではない。多くのコンピュータは、3または4キャッシュ・レベルのような更に多いキャッシュ・レベルを実施する。いくつかのプロセッサでは3レベルのオンチップ・キャッシュを実施する。例えば、Alpha 21164(TM)は96KBのオンダイL3キャッシュを有し、IBM POWER4(TM)は256MBのL3キャッシュ・オフチップを有し、いくつかのプロセッサ間で共有する。
【0014】
キャッシュ・コントローラ(110)は、キャッシュ・メモリ内のキャッシュ・ラインに関する情報のレポジトリであるキャッシュ・ディレクトリ(112)を含む。ディレクトリは、コンピュータ内の全キャッシュ・メモリにおける各キャッシュ・ラインごとに、キャッシュ・ラインのアイデンティティすなわちキャッシュ・ラインの「タグ」、キャッシュ・ラインの状態すなわち「変更済み」、「共有」、「無効」等、および、低レベル共有キャッシュのキャッシュ・ラインのコピーがもっと高いキャッシュ・レベルに記憶されているか否かを各プロセッサごとに特定するビット・ベクトルを記録する。MMU(106)およびキャッシュ・コントローラ(110)は、コンピュータ・ノード上の全てのキャッシュ動作について、キャッシュ・ディレクトリ(112)内の情報を調べて更新する。キャッシュ・コントローラ(110)は、L2キャッシュ(181)に直接接続されているがL1キャッシュには直接接続されておらず、L1キャッシュのキャッシュ・ラインに関する情報をキャッシュ・ディレクトリ(112)から取得する。
【0015】
キャッシュ・コントローラ(110)は、キャッシュ・メモリを管理する論理回路であり、プロセッサ(102)、キャッシュ・メモリ(L1、L2)、およびメイン・メモリ(114)間のインタフェースを提供する。ここではキャッシュ・コントローラ(110)をプロセッサ(102)の外部に図示するが、最近のコンピュータ上のキャッシュ・コントローラはプロセッサまたはMMUに直接組み込まれていることが多い。実際、この例においてMMU(106)はL1キャッシュのためのキャッシュ制御論理を含む。
【0016】
直接アクセス・マネージャ(197)は、本発明に従ってキャッシュ・メモリ(181)に対する直接アクセスを実施する論理回路である。図1の直接アクセス・マネージャ(197)は、キャッシュ・メモリ(181)に対して実行される動作を記述したコマンドを受信し、このコマンド受信に応答して直接メモリ・アクセス・コマンドを発生し、この直接メモリ・アクセス・コマンドをキャッシュ・メモリ(181)のためのキャッシュ・コントローラ(110)に送信するように構成されている。直接メモリ・アクセス・コマンドは、オペレーション・コードおよび動作が実行されるキャッシュ・メモリ(181)の物理アドレスの識別を有する。直接メモリ・アクセス・コマンドの受信に応答して、キャッシュ・コントローラ(110)は、オペレーション・コードおよび動作が実行されるキャッシュ・メモリ(181)の物理アドレスの識別に応じた動作を実行するように構成されている。
【0017】
図1の直接アクセス・マネージャ(197)は、直接アクセス・マネージャ(197)のステータスの識別を記憶するためのステータス・レジスタ(141)を含む。ステータスは、直接アクセス・マネージャ(197)に関連付けられてキャッシュ・メモリ(181)に直接アクセスするいずれかの数のパラメータを含むことができる。例えば、ステータスは、直接アクセス・マネージャがビジーであるか否か、直接アクセス・マネージャが受信した最新のコマンド、この最新のコマンドを送信したプロセッサ等を示すことができる。また、図1の直接アクセス・マネージャ(197)は、コマンドを記憶するためのコマンド・レジスタ(142)も含む。例えば、マルチプロセッシング・コンピュータ(100)内のランダム・アクセス・メモリ(195)内のソフトウェア(196)は、実行されるとプロセッサ(102)のいずれか1つにコマンド・レジスタ(142)に対してコマンドを書き込ませる命令を含むことができる。また、コマンド(142)はプロセッサ(102)内のMMU(106)から発生する場合もある。
【0018】
更に説明すると、図2は、本発明の実施形態に従った、キャッシュ・メモリに対する直接アクセスのための方法の一例を示すフローチャートを図示する。図2の方法は、キャッシュ・メモリ(181)のためのキャッシュ・コントローラ(110)に結合された直接アクセス・マネージャ(197)が、キャッシュ・メモリ(181)に実行される領域範囲ゼロ動作を記述した領域範囲ゼロ・コマンド(230)を受信すること(202)を含む。キャッシュ・メモリ(181)に実行される領域範囲ゼロ動作を記述した領域範囲ゼロ・コマンド(230)の受信(202)は、直接アクセス・マネージャ(197)のコマンド・レジスタ(142)に対する書き込みを検出することによって実施可能である。例えば、プロセッサ(102)のいずれか1つが、領域範囲ゼロ・コマンド(230)をコマンド・レジスタ(142)に書き込むことができる。
【0019】
また、図2の方法は、領域範囲ゼロ・コマンド(230)の受信に応答して、直接アクセス・マネージャ(197)が、直接メモリ・アクセス・コマンド領域範囲ゼロ(240)を発生すること(204)を含む。直接メモリ・アクセス領域範囲ゼロ・コマンド(240)は、オペレーション・コード(242)および動作が実行されるキャッシュ・メモリ(181)の物理アドレスの識別(244)を有する。領域範囲ゼロ・コマンド(230)の受信に応答した直接メモリ・アクセス・コマンド(240)の発生(204)は、受信コマンド(230)を調べてこの受信コマンド(230)に関連付けられた動作タイプを判定することによって実施可能である。例えば、直接アクセス・マネージャ(197)は、「キャッシュ範囲」(CS)コマンドを用いて全キャッシュ・メモリに対して、「領域範囲」(RS)コマンドを用いてキャッシュ・メモリ(181)の一部に対して、更に「ライン範囲」(LS)コマンドを用いてキャッシュ・メモリ(181)の単一ラインに対して、動作を実行するように構成することができる。各コマンド・タイプを用いて直接アクセス・メモリ(197)がキャッシュ・メモリ(181)の物理アドレスを提供することで、キャッシュ・コントローラ(110)がルックアップを行わずに動作を実行することを可能とする。
【0020】
直接アクセス・マネージャ(197)は、バス・コマンドを受信することなくキャッシュの全内容を無効化するキャッシュ範囲無効化(CSI)コマンドを実行するように構成することができる。CSIコマンドを用いて、直接アクセス・マネージャ(197)は、キャッシュ・メモリ(181)内の各ラインごとに「L2キャッシュ・ブロック無効化」動作を発生する。
【0021】
直接アクセス・マネージャ(197)は、キャッシュ・メモリ(181)の全内容をフラッシュするキャッシュ範囲フラッシュ(CSF)・コマンドを実行するように構成することができる。直接アクセス・マネージャ(197)は、キャッシュ・メモリ(181)の各ラインごとに「L2キャッシュ・フラッシュ」コマンドを発生する。例えば、第1のフラッシュ・コマンドは、キャッシュ・メモリ(181)の合同クラス(cgc)0の「ウェイ−0」をターゲットとする。実アドレスを用いてルックアップを実行するのではなく、キャッシュ・メモリはキャッシュ・メモリ(181)の物理アドレスを用いてキャッシュ・ディレクトリの内容を読み出す。ラインがローカルで変更されている場合、キャッシュ・メモリ(181)は、ターゲット・アドレスを生成するためにキャッシュ・ディレクトリに記憶されているタグを用いてメイン・メモリ(114)にキャッシュ・ラインを書き込む。直接アドレス・マネージャ(197)は、次の共有キャッシュ・メモリ(図示せず)へと増分し、そのキャッシュ・メモリ内のcgc−0、ウェイ−0にフラッシュ・コマンドを送信することができる。
【0022】
直接アクセス・マネージャ(197)は、領域範囲ゼロ・コヒーレンシ・コマンド(RSZC)を実行するように構成することができる。これは、直接アクセス・マネージャ(197)がキャッシュ・ディレクトリ(112)において所望のメモリ実アドレスのルックアップを実行すること、キャッシュ・ディレクトリ(112)内にキャッシュ・ラインが見つかった場合には、直接アクセス・マネージャ(197)がキャッシュ・ディレクトリ(112)にその現在の位置からキャッシュ・ラインを無効化してRSZCコマンドによって特定されるキャッシュ位置においてラインを確立しゼロにするよう命令すること、および、キャッシュ・ラインが見つからなかった場合には、直接アクセス・マネージャ(197)がキャッシュ・メモリ(181)にキャッシュ・ラインを確立しゼロにするよう命令することを含む。RSZC動作において、キャッシュ内にキャッシュ・ラインが存在しない場合または共有状態である場合、システム内の他のキャッシュとのコヒーレンシを維持するためにバス動作を実行することができる。シングル・キャッシュ・システムではコヒーレンシは問題でないが、キャッシュ・ラインの古いコピーはやはり無効化される。
【0023】
直接アクセス・マネージャ(197)は、領域範囲ゼロ非コヒーレンシ・コマンド(RSZNC)を実行するように構成することができる。これは、直接アクセス・マネージャ(197)がキャッシュ・ディレクトリ(112)において所望のキャッシュ位置のルックアップを実行すること、および、キャッシュ・ディレクトリ(112)内にキャッシュ・ラインが見つかった場合には直接アクセス・マネージャ(197)がキャッシュ・ディレクトリ(112)にキャッシュ・ラインを無効化するよう命令することを含む。RSZNC動作は、パワーオン・リセット(POR)・シーケンスの間に直接アクセス・マネージャ(197)によって実行することができ、PORシーケンスの間にファームウェア命令はキャッシュ・メモリ(181)にコピーされる。RSZNC動作においては、バス・コマンドを生成することなくキャッシュにキャッシュ・ラインが確立される(およびゼロとされる)。これは、PORシーケンスの間にメモリ・コントローラの前にキャッシュをイネーブルするために特に有用である。この場合、ファームウェアはいっそう高速に動作することができ、ブート中に中間結果を記憶するためキャッシュ内に高速スクラッチ・パッドが確立される。いかなる時点でも、RSZNC動作を用いてキャッシュ内のメモリ・ブロックをスクラッチ・パッドとして迅速に確立することができる。この場合、ハードウェアはコヒーレンシを維持しておらず、システムにコヒーレントなキャッシュがある場合にキャッシュをいつ使用可能であるかはソフトウェアが把握する責任がある。
【0024】
直接アクセス・マネージャ(197)は、ライン範囲読み取りディレクトリ(LSRD)・コマンドを実行するように構成することができる。これは、キャッシュ・ラインのタグ、コヒーレンシ状態、および他の制御ビットを判定するためにディレクトリ・エントリを読み取る。LSRDコマンドに応答して、単一キャッシュ・ラインのディレクトリ・エントリが読み取られる。
【0025】
直接アクセス・マネージャ(197)は、ライン範囲書き込みディレクトリ(LSWD)・コマンドを実行するように構成することができる。これは、デバッグ・セッションの開始時にキャッシュ・メモリの状態をリストアするためにディレクトリ・エントリを書き込む。また、LSWDコマンドは、ハードウェア検証においてまたはデバッグ中に特定のキャッシュ状況を生成するために有用である場合がある。
【0026】
直接アクセス・マネージャ(197)は、キャッシュ・メモリ(181)からデータを読み取るためのライン範囲読み取りキャッシュ・ライン・データ(LSRC)・コマンドを実行するように構成することができる。直接アクセス・マネージャ(197)は、キャッシュ・メモリ(181)からデータを書き込むためのライン範囲書き込みキャッシュ・ライン・データ(LSWC)・コマンドを実行するように構成することができる。
【0027】
直接アクセス・マネージャ(197)は、キャッシュ・メモリ(181)内のタグをルックアップするためのライン範囲ルックアップ(LSLK)・コマンドを実行するように構成することができる。ソフトウェアのデバッグ/開発を行う場合に、ディレクトリ全体をダンプすることなくキャッシュ・メモリ(181)内に特定のキャッシュ・ラインが存在するか否かを知ると有用である場合がある。LSLKコマンドを用いて、対象ラインについてキャッシュ・ディレクトリでルックアップを実行し、見つかった場合にはコマンドによってディレクトリ・エントリの内容(タグ、コヒーレンシ状態等)をソフトウェア・アクセス可能レジスタにダンプし、見つからない場合には同一のソフトウェア・アクセス可能レジスタにミス情報を記録する。
【0028】
図2の方法は、直接アクセス・マネージャ(197)が、直接メモリ・アクセス領域範囲ゼロ・コマンド(240)を、キャッシュ・メモリ(181)のためのキャッシュ・コントローラ(110)に送信すること(206)を含む。直接メモリ・アクセス領域範囲ゼロ・コマンド(240)をキャッシュ・メモリ(181)のためのキャッシュ・コントローラ(110)に送信すること(206)は、キャッシュ・コントローラ(110)にデータを送信することで実施可能である。このデータは、キャッシュ・コントローラ(110)に、領域範囲ゼロ・コマンド(230)に関連付けられた動作を実行するよう命令するものである。
【0029】
また、図2の方法は、キャッシュ・コントローラ(110)が、オペレーション・コード(242)および動作が実行されるキャッシュ・メモリ(181)の物理アドレスの識別(244)に応じた動作を実行すること(208)を含む。オペレーション・コード(242)および動作が実行されるキャッシュ・メモリ(181)の物理アドレスの識別(244)に応じた動作を実行すること(208)は、キャッシュ・コントローラ(110)に動作の実行を命令する際にキャッシュ・メモリ(181)の物理アドレスを用いることによって実施可能である。メイン・メモリ(114)のメモリ・アドレスでなくキャッシュの物理アドレスを用いることによって、キャッシュ・コントローラ(110)はルックアップの実行を回避することができ、キャッシュ・メモリ(181)に対する制御を向上させ得る。
【0030】
更に説明すると、図3は、本発明の実施形態に従った、キャッシュ・メモリに対する直接アクセスのための方法の別の例を示すフローチャートを図示する。図3の方法は、図2の方法の以下の要素を含む。すなわち、キャッシュ・メモリ(181)のためのキャッシュ・コントローラ(110)に結合された直接アクセス・マネージャ(197)が、キャッシュ・メモリ(181)に実行される動作を記述したコマンド(230)を受信すること(202)、領域範囲ゼロ・コマンド(230)の受信に応答して直接アクセス・マネージャ(197)が直接メモリ・アクセス・コマンド(240)を発生すること(204)、この直接メモリ・アクセス領域範囲ゼロ・コマンド(240)はオペレーション・コード(242)および動作が実行されるキャッシュ・メモリ(181)の物理アドレスの識別(244)を有すること、直接アクセス・マネージャ(197)が、直接メモリ・アクセス領域範囲ゼロ・コマンド(240)をキャッシュ・メモリ(181)のためのキャッシュ・コントローラ(110)に送信すること(206)、である。
【0031】
図2の方法と異なる図3の要素を図3に点線で示す。更に具体的には、それらの要素は、オペレーション・コード(352、362)およびマイクロ・オペレーションが実行されるキャッシュ・メモリ(181)の物理アドレスの識別(354、364)を各々が含む複数のマイクロ・オペレーション(340)を発生すること(302)、および、複数のマイクロ・オペレーション(340)をキャッシュ・コントローラ(110)に送信すること(304)を含む。
【0032】
図3の方法において、直接メモリ・アクセス・コマンド(240)の発生(204)は、オペレーション・コード(352、362)およびマイクロ・オペレーションが実行されるキャッシュ・メモリ(181)の物理アドレスの識別(354、364)を各々が含む複数のマイクロ・オペレーション(340)を発生すること(302)を含む。オペレーション・コード(352、362)およびマイクロ・オペレーションが実行されるキャッシュ・メモリ(181)の物理アドレスの識別(354、364)を各々が含む複数のマイクロ・オペレーション(340)を発生すること(302)は、直接アクセス・マネージャ(197)がキャッシュ・メモリ(181)における所望のキャッシュ位置のルックアップを実行すること、および、キャッシュ・メモリ(181)内にキャッシュ・ラインが見つかった場合に直接アクセス・マネージャ(197)がキャッシュ・メモリ(181)にキャッシュ・ラインを無効化するよう命令することによって実行される。
【0033】
図3の方法において、直接メモリ・アクセス領域範囲ゼロ・コマンド(240)をキャッシュ・メモリ(181)のためのキャッシュ・コントローラ(110)に送信すること(206)は、複数のマイクロ・オペレーション(340)をキャッシュ・コントローラ(110)に送信すること(304)を含む。複数のマイクロ・オペレーション(340)をキャッシュ・コントローラ(110)に送信すること(304)は、前のマイクロ・オペレーションに対して各マイクロ・オペレーションのアドレスを増分することによって実施可能である。マイクロ・オペレーションのフォーマットでは、キャッシュ・コントローラ(110)がプロセッサ(102)のいずれか1つの命令セット・アーキテクチャ(ISA)の拡張として各マイクロ・オペレーションを扱うようになっている。
【0034】
更に説明すると、図4は、本発明の実施形態に従った、キャッシュ・メモリに対する直接アクセスのための別の例を示すフローチャートを図示する。図4の方法は、図2の方法の以下の要素を含む。すなわち、キャッシュ・メモリ(181)のためのキャッシュ・コントローラ(110)に結合された直接アクセス・マネージャ(197)が、キャッシュ・メモリ(181)に実行される動作を記述したコマンド(230)を受信すること(202)、領域範囲ゼロ・コマンド(230)の受信に応答して、直接アクセス・マネージャ(197)が直接メモリ・アクセス・コマンド(240)を発生すること(204)、この直接メモリ・アクセス領域範囲ゼロ・コマンド(240)はオペレーション・コード(242)および動作が実行されるキャッシュ・メモリ(181)の物理アドレスの識別(244)を有すること、直接アクセス・マネージャ(197)が直接メモリ・アクセス領域範囲ゼロ・コマンド(240)をキャッシュ・メモリ(181)のためのキャッシュ・コントローラ(110)に送信すること(206)、である。
【0035】
図2の方法と異なる図4の要素を図4に点線で示す。更に具体的には、それらの要素は、直接アクセス・マネージャ(197)がキャッシュ・メモリ(181)内のハードウェアを監視すること(402)、直接アクセス・マネージャ(197)が、ローカル・プロセッサが低電力状態に入る準備ができたことを検出すること(404)、ローカル・プロセッサが低電力状態に入る準備ができたことの検出に応答して、直接アクセス・マネージャ(197)がキャッシュ・コントローラ(110)にキャッシュ・メモリ(181)をフラッシュするよう自動的に命令すること(406)を含む。
【0036】
図4の方法は、直接アクセス・マネージャ(197)がキャッシュ・メモリ(181)内のハードウェアを監視すること(402)を含む。キャッシュ・メモリ(181)内のハードウェアを監視すること(402)は、コンピュータ(100)のコンポーネントに関連付けられたハードウェア・イベントを検出することによって実施可能である。例えば、ハードウェア・イベントは、コンポーネントが低電力状態等の節電状態に入る準備ができたことを示すものである場合がある。
【0037】
図4の方法は、直接アクセス・マネージャ(197)によってローカル・プロセッサが低電力状態に入る準備ができたことを検出すること(404)を含む。ローカル・プロセッサが低電力状態に入る準備ができたことの検出(404)は、プロセッサ(102)のいずれか1つが低電力状態に入る準備ができたことを示す信号を、バスを介して受信することによって実施可能である。
【0038】
図4の方法は、ローカル・プロセッサが低電力状態に入る準備ができたことの検出に応答して、直接アクセス・マネージャ(197)がキャッシュ・コントローラ(110)にキャッシュ・メモリ(181)をフラッシュするよう自動的に命令すること(406)を含む。ローカル・プロセッサが低電力状態に入る準備ができたことの検出に応答して、キャッシュ・コントローラ(110)にキャッシュ・メモリ(181)をフラッシュするよう自動的に命令すること(406)は、キャッシュ・メモリ(181)の全内容をフラッシュするキャッシュ範囲フラッシュ(CSF)・コマンドを実行することによって実施可能である。
【0039】
当業者には認められるであろうが、本発明の態様は、システム、方法、またはコンピュータ・プログラムとして具現化することができる。従って、本発明の態様は、従って、本開示の態様は、全体的にハードウェアの実施形態、全体的にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコード等を含む)、または、ソフトウェアおよびハードウェアの態様を組み合わせた実施形態という形態を取ることができ、それらは全て本明細書において、「回路」、「モジュール」、または「システム」と一般的に称することができる。更に、本発明の態様は、具現化されたコンピュータ読み取り可能プログラム・コードを有する1つ以上のコンピュータ読み取り可能媒体において具現化されるコンピュータ・プログラムの形態を取ることも可能である。
【0040】
1つ以上のコンピュータ読み取り可能媒体のあらゆる組み合わせを利用することができる。コンピュータ読み取り可能媒体は、コンピュータ読み取り可能信号媒体またはコンピュータ読み取り可能記憶媒体とすることができる。コンピュータ読み取り可能記憶媒体は例えば、限定ではないが、電子、磁気、光、電磁、赤外線、または半導体のシステム、装置、デバイス、または前述のもののいずれかの適切な組み合わせとすることができる。コンピュータ読み取り可能記憶媒体の更に具体的な例(非網羅的な列挙)は、以下を含む。すなわち、1本以上のワイヤを含む電気的接続、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、電気的プログラマブル読み取り専用メモリ(EPROMまたはフラッシュ・メモリ)、光ファイバ、携帯型コンパクト・ディスク読み取り専用メモリ(CD−ROM)、光記憶デバイス、磁気記憶デバイス、または前述のもののいずれかの適切な組み合わせである。この文書の文脈において、コンピュータ読み取り可能記憶媒体は、命令実行システム、装置、またはデバイスによってまたはそれと接続して用いるためにプログラムを含有または記憶することが可能ないずれかのタンジブルな媒体とすることができる。
【0041】
コンピュータ読み取り可能信号媒体は、例えばベースバンドにおいてまたは搬送波の一部として、具現化されたコンピュータ読み取り可能プログラム・コードを有する伝播データ信号を含むことができる。かかる伝播信号は様々な形態のいずれかを取ることができ、それらは限定ではないが、電磁、光、またはそれらのいずれかの適切な組み合わせを含む。コンピュータ読み取り可能信号媒体は、コンピュータ読み取り可能記憶媒体でないが、命令実行システム、装置、またはデバイスによってまたはそれと接続して用いるためにプログラムを伝達、伝播、または転送することが可能ないずれかのコンピュータ読み取り可能媒体とすることができる。
【0042】
コンピュータ読み取り可能媒体上で具現化されるプログラム・コードは、限定ではないが、無線、有線、光ファイバ・ケーブル、RF等、または前述のもののいずれかの適切な組み合わせを含むいずれかの適切な媒体を用いて伝送することができる。
【0043】
本開示の態様の動作を実行するためのコンピュータ・プログラム・コードは、Java(R)、Smalltalk(R)、C++等のオブジェクト指向プログラミング言語、および、「C」プログラミング言語または同様のプログラミング言語等の従来の手順プログラミング言語を含む1つ以上のプログラミング言語のいずれかの組み合わせにおいて記述することができる。プログラム・コードは、全体的にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロンのソフトウェア・パッケージとして、部分的にユーザのコンピュータ上でおよび部分的に遠隔コンピュータ上で、または全体的に遠隔コンピュータもしくはサーバ上で、実行することができる。後者の場合、遠隔コンピュータは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含むいずれかのタイプのネットワークを介してユーザのコンピュータに接続することができ、または、接続は、(例えばインターネット・サービス・プロバイダを用いてインターネットを介して)外部コンピュータに対して行うことができる。
【0044】
本開示の実施形態に従った方法、装置(システム)、およびコンピュータ・プログラムのフローチャート図またはブロック図あるいはその両方を参照して、本開示の態様について記載している。フローチャート図またはブロック図あるいはその両方の各ブロックならびにフローチャート図またはブロック図あるいはその両方におけるブロックの組み合わせは、コンピュータ・プログラム命令によって実施可能であることは理解されよう。これらのコンピュータ・プログラム命令は、汎用コンピュータ、特殊目的コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されて機械を生成することができ、これによって、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサによって実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックまたは複数のブロックに規定された機能/行為を実施するための手段を生成するようになっている。
【0045】
また、これらのコンピュータ・プログラム命令はコンピュータ読み取り可能媒体に記憶することができ、これによって、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスに特定の方法で機能するように指示することができ、これにより、コンピュータ読み取り可能媒体に記憶された命令が、フローチャートまたはブロック図あるいはその両方のブロックまたは複数のブロックに規定された機能/行為を実施する命令を含む製造品を生成するようになっている。
【0046】
また、コンピュータ・プログラム命令を、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードして、そのコンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実行させてコンピュータ実施プロセスを生成することができ、これによって、コンピュータまたは他のプログラマブル装置上で実行する命令が、フローチャートまたはブロック図あるいはその両方のブロックまたは複数のブロックに規定された機能/行為を実施するためのプロセスを提供するようになっている。
【0047】
上述した図面におけるフローチャートおよびブロック図は、本開示の様々な実施形態に従ったシステム、方法、およびコンピュータ・プログラムにおいて可能な実施のアーキテクチャ、機能性、および動作を示す。この点で、フローチャートまたはブロック図における各ブロックは、規定された論理機能(複数の機能)を実施するための1つ以上の実行可能命令を含むコードのモジュール、セグメント、または一部を表すことができる。また、いくつかの代替的な実施において、ブロックに明記した機能は、図面に明記した順序どおりでなく発生する場合があることに留意すべきである。例えば、関与する機能性に応じて、連続して示した2つのブロックは実際には実質的に同時に実行されることがあり、またはブロックは時に逆の順序で実行される場合がある。また、ブロック図またはフローチャートあるいはその両方の各ブロック、およびブロック図またはフローチャートあるいはその両方におけるブロックの組み合わせは、規定された機能もしくは行為を実行する特殊目的ハードウェア・ベースのシステム、または特殊目的ハードウェアおよびコンピュータ命令の組み合わせによって実施可能であることに留意すべきである。
【0048】
前述の記載から、本発明の真の精神から逸脱することなくその様々な実施形態において変形および変更を実行可能であることは理解されよう。本明細書における記載は例示の目的のためだけのものであり、限定の意味で解釈されるべきではない。本発明の範囲は、以下の特許請求の範囲の文言によってのみ限定される。
【符号の説明】
【0049】
100 マルチプロセッシング・コンピュータ
102 プロセッサ
104 コア
106 MMU
108 共有キャッシュ・レベル
110 キャッシュ・コントローラ
112 キャッシュ・ディレクトリ
114 メイン・メモリ
141 ステータス・レジスタ
142 コマンド・レジスタ
181 L2キャッシュ・メモリ
197 直接アクセス・マネージャ

【特許請求の範囲】
【請求項1】
キャッシュ・メモリに対する直接アクセスのための方法であって、
キャッシュ・メモリのためのキャッシュ・コントローラに結合された直接アクセス・マネージャによって、前記キャッシュ・メモリに対して実行される領域範囲ゼロ動作を記述した領域範囲ゼロ・コマンドを受信することと、
前記領域範囲ゼロ・コマンドの受信に応答して、前記直接アクセス・マネージャによって直接メモリ・アクセス領域範囲ゼロ・コマンドを発生することであって、前記直接メモリ・アクセス領域範囲ゼロ・コマンドは、オペレーション・コードと、前記動作が実行される前記キャッシュ・メモリの物理アドレスの識別と、を有することと、
前記直接アクセス・マネージャによって、前記直接メモリ・アクセス領域範囲ゼロ・コマンドを前記キャッシュ・メモリのための前記キャッシュ・コントローラに送信することと、
前記キャッシュ・コントローラによって、前記オペレーション・コードと前記直接メモリ・アクセス領域範囲ゼロ動作が実行される前記キャッシュ・メモリの前記物理アドレスの前記識別とに応じた前記直接メモリ・アクセス領域範囲ゼロ動作を実行することと、
を含む、方法。
【請求項2】
前記直接アクセス・マネージャが、前記領域範囲ゼロ・コマンドの受信に応答して、キャッシュ・ディレクトリにおいて所望のメモリ実アドレスのルックアップを実行し、前記キャッシュ・ディレクトリ内にキャッシュ・ラインが見つかった場合には、前記直接アクセス・マネージャが前記キャッシュ・ディレクトリに、現在の位置から前記キャッシュ・ラインを無効化して、前記領域範囲ゼロ・コマンドによって特定されるキャッシュ位置において前記キャッシュ・ラインを確立しゼロにするよう命令する、請求項1に記載の方法。
【請求項3】
前記キャッシュ・ラインが見つからなかった場合には、前記直接アクセス・マネージャが前記キャッシュ・メモリに前記キャッシュ・ラインを確立しゼロにするよう命令する、請求項2に記載の方法。
【請求項4】
前記コマンドがソフトウェアのモジュールから受信される、請求項1乃至3のいずれかに記載の方法。
【請求項5】
前記コマンドが、プロセッサのためのレベル1キャッシュを管理する前記プロセッサのメモリ管理ユニットから受信される、請求項1乃至3のいずれかに記載の方法。
【請求項6】
前記直接アクセス・マネージャによって直接メモリ・アクセス・コマンドを発生することが、複数のマイクロ・オペレーションを発生することを更に含み、前記複数のマイクロ・オペレーションの各々が、オペレーション・コードと、前記マイクロ・オペレーションが実行される前記キャッシュ・メモリの前記物理アドレスの識別と、を含む、請求項1乃至5のいずれかに記載の方法。
【請求項7】
前記直接メモリ・アクセス・コマンドを前記キャッシュ・コントローラに送信することが、前記複数のマイクロ・オペレーションを前記キャッシュ・コントローラに送信することを含む、請求項6に記載の方法。
【請求項8】
前記直接アクセス・マネージャが、前記直接アクセス・マネージャのステータスの識別を記憶するためのステータス・レジスタを含む、請求項1乃至7のいずれかに記載の方法。
【請求項9】
前記ステータスが、前記直接アクセス・マネージャがビジーであるか否か、前記直接アクセス・マネージャが受信した最新のコマンド、および前記最新のコマンドを送信したプロセッサから成る群から選択される、請求項8に記載の方法。
【請求項10】
前記直接アクセス・マネージャによって前記キャッシュ・メモリ内のハードウェアを監視することと、
前記直接アクセス・マネージャによって、ローカル・プロセッサが低電力状態に入る準備ができたことを検出することと、
前記ローカル・プロセッサが前記低電力状態に入る準備ができたことの検出に応答して、前記直接アクセス・マネージャによって前記キャッシュ・コントローラに前記キャッシュ・メモリをフラッシュするよう自動的に命令することと、
を更に含む、請求項1乃至9のいずれかに記載の方法。
【請求項11】
キャッシュ・メモリに対する直接アクセスのための装置であって、
前記キャッシュ・メモリと、
前記キャッシュ・メモリのためのキャッシュ・コントローラに結合された直接アクセス・マネージャであって、
前記キャッシュ・メモリに対して実行される領域範囲ゼロ動作を記述した領域範囲ゼロ・コマンドを受信し、
前記領域範囲ゼロ・コマンドの受信に応答して、直接メモリ・アクセス領域範囲ゼロ・コマンドを発生し、前記直接メモリ・アクセス領域範囲ゼロ・コマンドは、オペレーション・コードと、前記動作が実行される前記キャッシュ・メモリの物理アドレスの識別と、を有し、
前記直接メモリ・アクセス領域範囲ゼロ・コマンドを前記キャッシュ・メモリのための前記キャッシュ・コントローラに送信する、
ように構成されたハードウェアを含む直接アクセス・マネージャと、
前記キャッシュ・コントローラであって、
前記オペレーション・コードと前記直接メモリ・アクセス領域範囲ゼロ動作が実行される前記キャッシュ・メモリの前記物理アドレスの前記識別とに応じた前記直接メモリ・アクセス領域範囲ゼロ動作を実行する、
ように構成された前記キャッシュ・コントローラと、
を含む、装置。
【請求項12】
前記オペレーション・コードと前記動作が実行される前記キャッシュ・メモリの前記物理アドレスの前記識別とに応じた前記直接メモリ・アクセス領域範囲ゼロ動作を実行するように構成された前記ハードウェアが、
前記領域範囲ゼロ・コマンドの受信に応答して、前記直接アクセス・マネージャによって、キャッシュ・ディレクトリにおいて所望のメモリ実アドレスのルックアップを実行し、
前記キャッシュ・ディレクトリ内にキャッシュ・ラインが見つかった場合には、前記直接アクセス・マネージャによって前記キャッシュ・ディレクトリに、現在の位置から前記キャッシュ・ラインを無効化して、前記領域範囲ゼロ・コマンドによって特定されるキャッシュ位置において前記キャッシュ・ラインを確立しゼロにするよう命令する、
ように構成されたハードウェアを含む、請求項11に記載の装置。
【請求項13】
前記キャッシュ・ラインが見つからなかった場合には、前記直接アクセス・マネージャによって前記キャッシュ・メモリに前記キャッシュ・ラインを確立しゼロにするよう命令するように構成されたハードウェアを更に含む、請求項12に記載の装置。
【請求項14】
前記コマンドがソフトウェアのモジュールから受信される、請求項11乃至13のいずれかに記載の装置。
【請求項15】
前記コマンドが、プロセッサのためのレベル1キャッシュを管理する前記プロセッサのメモリ管理ユニットから受信される、請求項11乃至13のいずれかに記載の装置。
【請求項16】
直接メモリ・アクセス・コマンドを発生するように構成された前記ハードウェアが、複数のマイクロ・オペレーションを発生するように構成されたハードウェアを更に含み、前記複数のマイクロ・オペレーションの各々が、オペレーション・コードと、前記マイクロ・オペレーションが実行される前記キャッシュ・メモリの前記物理アドレスの識別と、を含む、請求項11乃至15のいずれかに記載の装置。
【請求項17】
前記直接メモリ・アクセス・コマンドを前記キャッシュ・コントローラに送信するように構成された前記ハードウェアが、前記複数のマイクロ・オペレーションを前記キャッシュ・コントローラに送信するように構成されたハードウェアを含む、請求項16に記載の装置。
【請求項18】
前記直接アクセス・マネージャが、前記直接アクセス・マネージャのステータスの識別を記憶するためのステータス・レジスタを含む、請求項11乃至17のいずれかに記載の装置。
【請求項19】
前記ステータスが、前記直接アクセス・マネージャがビジーであるか否か、前記直接アクセス・マネージャが受信した最新のコマンド、および前記最新のコマンドを送信したプロセッサから成る群から選択される、請求項18に記載の装置。
【請求項20】
前記直接アクセス・マネージャが、
前記キャッシュ・メモリ内のハードウェアを監視し、
ローカル・プロセッサが低電力状態に入る準備ができたことを検出し、
前記ローカル・プロセッサが前記低電力状態に入る準備ができたことの検出に応答して、前記キャッシュ・コントローラに前記キャッシュ・メモリをフラッシュするよう自動的に命令する、
ように構成されたハードウェアを含む、請求項11乃至19のいずれかに記載の装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate


【公開番号】特開2012−128842(P2012−128842A)
【公開日】平成24年7月5日(2012.7.5)
【国際特許分類】
【出願番号】特願2011−254852(P2011−254852)
【出願日】平成23年11月22日(2011.11.22)
【出願人】(390009531)インターナショナル・ビジネス・マシーンズ・コーポレーション (4,084)
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MASCHINES CORPORATION
【Fターム(参考)】