説明

キャッシュ・ディレクトリ内の実ページ番号ビットのテスト方法、装置、およびコンピュータ記録可能な媒体

【課題】キャッシュ・ディレクトリ内の実ページ番号ビットのテストを提供する。
【解決手段】テスト対象のキャッシュに関連付けられたキャッシュ・ディレクトリの実ページ番号ビットをテストするために、当該キャッシュの仕様が検索される。キャッシュ・ディレクトリの実ページ番号アドレス内のある範囲が、キャッシュの仕様を使用してページ割り当てを行うために特定される。テスト対象の実ページ番号ビットの部分を特定するランダム値xが生成される。テスト対象のキャッシュの部分内の合同クラスのセットから第1の合同クラスを特定する第1のランダム値yが生成される。第1の合同クラスが所定の回数割り当てられなかったことに応じて、第1の合同クラスについてのメモリの1ページ分のサイズが割り当てられ、第1の割り当て値が1の値で増分される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般的には、改良されたデータ処理装置および方法に関し、より特定的には、キャッシュ・ディレクトリ内の実ページ番号ビットをテストするための装置および方法に関する。
【背景技術】
【0002】
従来のコンピュータ・システムは、1つ以上の処理ユニットを有し得、当該処理ユニットは、入力/出力(I/O)デバイス(表示モニタ、キーボード、または常設の記憶デバイスなど)、処理ユニットがプログラム命令を実行するのに使用されるメモリ・デバイス(ランダム・アクセス・メモリ、すなわちRAM)、およびコンピュータに最初に電源が投入される度に周辺機器のうちの1つ(通常は常設のメモリ・デバイス)からオペレーティング・システムをシークしてロードするのが主要な目的であるファームウェアを含む様々な周辺デバイスに接続されている。処理ユニットは、汎用の相互接続またはバスを含む様々な手段によって周辺デバイスと通信する。また、従来のコンピュータ・システムは、例えばモデムまたはプリンタに接続するためのシリアル・ポートおよびパラレル・ポートなどの数多くのさらなる構成要素を含み得る。従来のコンピューティング・システムにおいて使用され得る構成要素は他にもあって、例えば、ビデオ・ディスプレイ・モニタを制御するためにディスプレイ・アダプタが使用されることもあるし、メモリにアクセスするためにメモリ・コントローラが使用されることもあることを、当業者はさらに理解するだろう。入出力(I/O)デバイスを直接バスに接続する代わりに、I/Oデバイスは、バスへのI/Oブリッジにさらに接続されている2次(I/O)バスに接続されてもよい。また、コンピュータは、2つより多くの処理ユニットを有してもよい。
【0003】
対称マルチプロセッサ(symmetric multi−processor:SMP)コンピュータにおいて、処理ユニットのすべては、一般的には同一であり、すなわち、それらすべては命令およびプロトコルの一般的なセットまたはサブセットを使用して動作し、一般的には同一のアーキテクチャを有する。そのようなSMPコンピュータは、プロセッサ・コアを含む処理ユニットを含むことがあり、当該プロセッサ・コアは、コンピュータを動作させるためにプログラム命令を実行する複数のレジスタおよび実行ユニットを有する。また、処理ユニットは、命令キャッシュおよびデータ・キャッシュなどの1つ以上のキャッシュを有し得、当該キャッシュは、高速メモリデバイスを使用して実施される。命令およびデータは、オペランドが命令対データである動作を処理ユニットが要求しているかどうかを示す信号を検査することによって各キャッシュに向けて送り出されてもよい。キャッシュは、メモリから値をロードするという時間がかかるステップを回避することによって処理を高速化するために、プロセッサによって繰り返しアクセスされ得るような値を一時的に記憶するために通常使用される。これらのキャッシュは、プロセッサ・コアと共に単一の集積チップ上に一体化してパッケージされる場合には「オン・ボード(on−board)」と称される。各キャッシュは、一般的には、プロセッサ・コアとキャッシュ・メモリとの間のデータの転送を管理するキャッシュ・コントローラに関連付けられている。
【0004】
処理ユニットは、オン・ボードの第1レベル・キャッシュをサポートする第2レベル(L2)キャッシュなどのさらなるキャッシュを含んでもよい。言い換えれば、L2キャッシュは、メモリとオン・ボードのキャッシュとの間の媒介物として作用し、オン・ボードのキャッシュよりも遥かに多くの情報量(命令およびデータ)を記憶することができるが、アクセスには時間がかかるのが不利益な点である。例えば、L2キャッシュは、256または512キロバイトの記憶容量を有するチップであってもよいが、プロセッサは、全ストレージが64キロバイトであるオン・ボード・キャッシュを有するIBMPowerPC(IBM社の登録商標)604シリーズのプロセッサであってもよい。L2キャッシュは、一般的にはバスに接続され、メモリからプロセッサ・コアへの情報の全ローディングは、L2キャッシュを通じて行われなければならない。加えて、コンピューティング・システムは、シリアルに接続されたキャッシュのレベルが数多くあるマルチ・レベルのキャッシュ階層を含んでもよい。
【0005】
キャッシュは、様々な命令およびデータ値を個別に記憶する数多くの「ブロック」を有する。任意のキャッシュ内のブロックについて、「セット」と称されるブロックの群に分割される。セットは、所与のメモリ・ブロックが存在し得るキャッシュ・ブロックの集まりである。任意の所与のメモリ・ブロックには、予め設定されたマッピング機能に従って当該ブロックがマップされ得る固有のセットがキャッシュ内にある。1セット内のブロック数は、当該キャッシュの連想度(associativity)と称され、例えば、2ウェイ(way)セット・アソシアティブは、任意の所与のメモリ・ブロックについて、当該メモリ・ブロックがマッピングされ得るブロックがキャッシュ内に2つあるが、メイン・メモリ内にあるいくつかの異なるブロックは任意の所与のセットにマッピングされ得ることを意味する。1ウェイ・セット・アソシアティブ・キャッシュは、直接マッピングされる。すなわち、特定のメモリ・ブロックを包含し得るキャッシュ・ブロックは1つだけである。メモリ・ブロックが任意のキャッシュ・ブロックを占有し得る場合には、キャッシュは、完全にアソシアティブであるといえ、すなわち、セットは1つであり、アドレス・タグは、メモリ・ブロックのフル・アドレスである。
【0006】
キャッシュ・ライン(ブロック)の一例は、アドレス・タグ・フィールドと、状態ビット・フィールドと、包括ビット・フィールドと、実命令またはデータを記憶するための値フィールドとを含む。状態ビット・フィールドおよび包括ビット・フィールドは、マルチプロセッサ・コンピュータ・システムにおけるキャッシュの一貫性を維持するために使用される。アドレス・タグは、対応するメモリ・ブロックのフル・アドレスのサブセットである。入力有効アドレスと、アドレス・タグ・フィールド内のタグのうちの1つとの比較一致は、キャッシュ「ヒット」を示す。キャッシュ内のすべてのアドレス・タグ(および時には状態ビット・フィールドおよび包括ビット・フィールド)の集まりは、ディレクトリと称され、すべての値フィールドの集まりは、キャッシュ・エントリ・アレイである。
【0007】
所与のキャッシュについてのセット内のすべてのブロックがフルであって、フル・セットへマッピングするメモリ位置に対する「読み出し」または「書き出し」という要求を当該キャッシュが受信すると、キャッシュは、セット内に現在あるブロックのうちの1つを「エビクト(evict)」しなければならない。キャッシュは、エビクトすべきブロックを、当業者に周知の複数の手段(最長時間未使用法(least recently used:LRU)、ランダム、擬似LRUなど)のうちの1つによって選択する。選択されたブロック内のデータが修正される場合には、当該データは、メモリ階層のうちで最下位から2番目に低いレベルに書き込まれ、このレベルは、他のキャッシュ(L1またはオン・ボードのキャッシュの場合)またはメイン・メモリ(L2キャッシュの場合)であってもよい。包含の原理により、階層の最下層は、書き込まれた修正済みのデータを保持するために利用可能なブロックを既に有することになる。しかしながら、選択されたブロック内のデータが修正されない場合には、ブロックはそのまま破棄され、階層内の再開から2番目に低いレベルに書き込まれない。階層の1つのレベルからブロックを除去するというこの処理は、「エビクション(eviction)」として知られている。この処理の終わりでは、キャッシュは、もはや、エビクトされたブロックのコピーを有さない。
【発明の概要】
【発明が解決しようとする課題】
【0008】
プロセッサ上で実行する手順(プログラム)の中には、限られた数のセット(合同(congruence)クラス)を繰り返し使用するのでキャッシュが効率的でなくなるという予期せぬ効果を有するものがある。言い換えると、ある手順が少数の合同クラス要素内で多数のエビクションを生じさせる一方で多数の他の要素を使用しない場合には、メモリ・レイテンシ遅延が増加する。この効果はストライド(stride)と称され、合同マッピング機能と、特定の手順がメイン・メモリ・デバイス内にメモリ・ブロックを割り当てている手法とに関連する。
【0009】
一般的には、データ処理システム内のキャッシュのテストは、L2キャッシュ量の2倍の割り当てを要する。単一の指標に指標付けするページが既存のエントリを除去またはエビクトさせる場合には、このL2キャッシュ量を使用することによって、キャッシュの中には、ローリングまたは置換を要するものもあり、よって、より多くのストレスおよびキャッシュ・ラインのテストを生じさせることがある。キャッシュの同一のストレスを達成するためにキャッシュのメモリ量を増加させる場合があるが、メモリを追加するのは最善策ではない。キャッシュ・ディレクトリ内の実ページ番号(real page numbers:RPN)ビットをテストするために、テスト・プログラムは、典型的には、大量のメモリを経由する。製造およびシミュレーション・テストにおいても、時間は重要な要素である。カードの製造、モジュールの製造、およびウェハの製造において利用可能な総テスト時間量は、典型的には秒単位である。しかしながら、シミュレーションにおいても、周期が正確なモデルでシミュレートするために時間の制約があるのは明白である。
【課題を解決するための手段】
【0010】
例示の一実施形態において、データ処理システムにおいて、キャッシュ・ディレクトリ内の実ページ番号ビットをテストするための方法が提供される。例示の実施形態は、テスト対象のキャッシュに関連付けられたキャッシュ・ディレクトリの実ページ番号ビットをテストするために、当該キャッシュの仕様が検索(retrieve)される。例示の実施形態は、キャッシュの仕様を使用してページ割り当てを行うためにキャッシュ・ディレクトリの実ページ番号アドレス内の範囲を特定する。例示の実施形態は、テスト対象の実ページ番号ビットの部分を特定するランダム値xを生成する。例示の実施形態は、テスト対象のキャッシュの部分内の合同クラスのセットから第1の合同クラスを特定する第1のランダム値yを生成する。例示の実施形態は、第1のランダム値yに関連付けられた第1の合同クラスが所定の回数割り当てられたかどうかを判断する。例示の実施形態は、第1のランダム値yに関連付けられた第1の合同クラスについて、メモリの1ページ分のサイズを割り当て、第1の合同クラスに関連付けられた第1の割り当て値を1の値で増分する。
【0011】
例示の他の実施形態において、コンピュータ読み出し可能なプログラムを有するコンピュータ使用可能または読み出し可能な媒体を備えるコンピュータ・プログラム製品が提供される。当該コンピュータ読み出し可能なプログラムは、コンピューティング・デバイス上で実行されると、方法の例示の実施形態に関して先に概説した様々な動作およびその組み合わせを当該コンピューティング・デバイスに行わせる。
【0012】
さらに他の例示の実施形態において、システム/装置が提供される。当該システム/装置は、1つ以上のプロセッサと、当該1つ以上のプロセッサに結合されたメモリとを備えてもよい。当該メモリは、当該1つ以上のプロセッサによって実行されると、方法の例示の実施形態に関して先に概説した様々な動作およびその組み合わせを当該1つ以上のプロセッサに行わせる命令を備えてもよい。
【0013】
本発明のこれらおよび他の特徴および利点は、本発明の実施形態例の以下の詳細な説明において説明されるか、または当該詳細な説明を考慮すれば当業者にとって明らかになるだろう。
【図面の簡単な説明】
【0014】
【図1】例示の実施形態の局面が実施され得る分散型データ処理システム例の実体表現を示す。
【図2】例示の実施形態の局面が実施され得るデータ処理システム例のブロック図を示す。
【図3】例示の一実施形態に係る、キャッシュ・ディレクトリ内の実ページ番号(RPN)アドレス・ビットをテストするためのキャッシュ・テスト・アプリケーションの機能ブロック図を示す。
【図4】例示の一実施形態に係る、L2キャッシュ例についてCONGSETSIZEが16の場合のテストを表すアレイ例を示す。
【図5】例示の一実施形態に係る、キャッシュ・ディレクトリ内の実ページ番号(RPN)アドレス・ビットをテストするためのキャッシュ・テスト・アプリケーションの動作例を示す。
【図6】例示の一実施形態に係る、キャッシュ・ディレクトリ内の実ページ番号(RPN)アドレス・ビットをテストするためのキャッシュ・テスト・アプリケーションの動作例を示す。
【発明を実施するための形態】
【0015】
本発明ならびに好ましい使用態様およびさらにその目的および利点は、添付の図面と共に解釈される場合に例示の実施形態の以下の詳細な説明を参照することによって、最もよく理解されるだろう。
【0016】
当業者によって理解されるように、本発明は、システム、方法、またはコンピュータ・プログラム製品によって具体化されてもよい。したがって、本発明は、完全にハードウェアによる実施形態、完全にソフトウェアによる実施形態(ファームウェア、常駐ソフトウェア、マイクロ・コードなどを含む)、またはすべてが一般的に本明細書において「回路」、「モジュール」、または「システム」と称され得るソフトウェアの局面とハードウェアの局面とを組みあわせる実施形態の形式を取ってもよい。さらに、本発明は、媒体において具体化されたコンピュータ使用可能なプログラム・コードを有する有形の媒体表現に具体化されたコンピュータ・プログラム製品の形式を取ってもよい。
【0017】
1つ以上のコンピュータ使用可能またはコンピュータ読み出し可能な媒体の任意の組み合わせが使用されてもよい。コンピュータ使用可能またはコンピュータ読み出し可能な媒体は、例えば、電子、磁気、光学、電磁、赤外線、または半導体のシステム、装置、デバイス、または伝搬媒体であってもよいが、これらに限定されない。コンピュータ読み出し可能な媒体のより特定的な例(非網羅的リスト)は、以下のものを含むことになろう。1つ以上の電線を有する電気接続、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(Random Access Memory:RAM)、読み出し専用メモリ(read−only memory:ROM)、消去可能プログラム可能読み出し専用メモリ(erasable programmable read−only memory:EPROM、またはフラッシュ・メモリ)、光ファイバ、携帯型コンピュータ・ディスク読み出し専用メモリ(compact disc read−only memory:CDROM)、光学記憶デバイス、インターネットまたはイントラネットをサポートするなどの送信媒体、または磁気記憶デバイスである。なお、コンピュータ使用可能またはコンピュータ読み出し可能な媒体は、プログラムが印刷されている用紙または他の適切な媒体でさえあり得る。というのは、当該プログラムは、例えば当該用紙または他の媒体の光学スキャニングを介して電子的に取り入れられ、その後、コンパイルされ、解釈され、または必要があれば別の適切な手法で処理され、その後コンピュータ・メモリに記憶され得るからである。本明細書の場合においては、コンピュータ使用可能またはコンピュータ読み出し可能な媒体は、命令実行システム、装置またはデバイスによってまたはそれとともに使用されるプログラムを包含、記憶、通信、伝搬、または転送できる任意の媒体であってもよい。コンピュータ使用可能な媒体は、ベースバンドでまたは搬送波の一部としてのいずれかで、共に具体化されたコンピュータ使用可能なプログラム・コードを伴う伝搬データ信号を含んでもよい。コンピュータ使用可能なプログラム・コードは、無線、有線ライン、光ファイバ・ケーブル、無線周波数(radio frequency:RF)などの任意の適切な媒体を使用して送信されてもよい。
【0018】
本発明の動作を実行するためのコンピュータ・プログラム・コードは、Java(商標)、Smalltalk(商標)、またはC++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語などの従来の手続きプログラミング言語を含む1つ以上のプログラミング言語の任意の組み合わせで書き込まれてもよい。プログラム・コードは、ユーザのコンピュータ上で全面的に、ユーザのコンピュータ上で部分的に、独立型のソフトウェア・パッケージとして、ユーザのコンピュータ上で部分的にかつリモート・コンピュータ上で部分的に、またはリモート・コンピュータまたはサーバ上で全面的に実行してもよい。後者の場合において、リモート・コンピュータは、ローカル・エリア・ネットワーク(local area network:LAN)またはワイド・エリア・ネットワーク(wide area network:WAN)を含む任意の種類のネットワークを通じてユーザのコンピュータに接続されてもよく、または、当該接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを通じて)外部コンピュータに対してなされてもよい。
【0019】
本発明の例示の実施形態に係る方法、装置(システム)およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して、例示の実施形態を以下に説明する。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方におけるブロックの組み合わせは、コンピュータ・プログラム命令によって実施され得ることが理解されるだろう。これらのコンピュータ・プログラム命令は、汎用コンピュータ、専用コンピュータ、または他のプログラム可能データ処理装置のプロセッサに対して提供されて、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行する命令が、フローチャートまたはブロック図あるいはその両方における1つまたは複数のブロックにおいて指定される機能/動作を実施するための手段を作成するようにマシンを生じさせてもよい。
【0020】
これらのコンピュータ・プログラム命令は、コンピュータ読み出し可能な媒体に記憶されてもよく、当該コンピュータ読み出し可能な媒体は、コンピュータ読み出し可能な媒体に記憶された命令がフローチャートまたはブロック図あるいはその両方における1つまたは複数のブロックにおいて指定される機能/動作を実施する命令手段を含む製品を生じさせるような特定な手法で、コンピュータまたは他のプログラム可能なデータ処理装置を機能させることができる。
【0021】
コンピュータ・プログラム命令は、コンピュータまたは他のプログラム可能なデータ処理装置にロードされて、一連の動作ステップが当該コンピュータまたは他のプログラム可能な装置上で実施されて、当該コンピュータまたは他のプログラム可能な装置上で実行する命令がフローチャートまたはブロック図あるいはその両方における1つまたは複数のブロックにおいて指定される機能/動作を実施するための処理を提供するように、コンピュータによって実施された処理を生じさせるようにしてもよい。
【0022】
図面におけるフローチャートおよびブロック図は、本発明の様々な実施形態に係るシステム、方法、およびコンピュータ・プログラム製品の実現可能な実施のアーキテクチャ、機能、および動作を示す。これに関して、フローチャートまたはブロック図における各ブロックは、指定された(複数の)論理機能を実施するための1つ以上の実行可能な命令を備えるモジュール、セグメント、またはコードの一部を表してもよい。また、ある代替実施においては、ブロックに記された機能は、図に記された順序とは異なるように生じてもよいことに注意すべきである。例えば、連続して示された2つのブロックは、実際には、実質的に並列的に実行されてもよく、または、関与する機能によっては、ブロックはときには逆順で実行されてもよい。また、ブロック図またはフローチャート図あるいはその両方における各ブロックおよびブロック図またはフローチャート図あるいはその両方におけるブロックの組み合わせは、指定された機能または動作あるいは専用ハードウェアとコンピュータ命令との組み合わせを行う、専用ハードウェア・ベースのシステムによって実施され得ることに注意されたい。
【0023】
例示の実施形態は、キャッシュ・ディレクトリ内の実ページ番号ビットをテストするための機構を提供する。よって、例示の実施形態は、分散型データ処理環境または単一のデータ処理デバイスなどを含む数多くの異なる種類のデータ処理環境において利用されてもよい。例示の実施形態の特定の要素および機能を説明するための状況を提供するために、例示の実施形態の局面が実施され得る環境例として図1および図2が以下に提供される。図1および図2に続く説明では、主に、キャッシュ・ディレクトリ内の実ページ番号ビットをテストするための機構を単一のデータ処理デバイスによって実施することに主に主眼が置かれることになるが、これは一例に過ぎず、本発明の特徴に対する制限を何ら表明するものでも示唆するものでもない。逆に、例示の実施形態は、キャッシュ・ディレクトリ内の実ページ番号ビットがテストされ得る分散型データ処理環境および実施形態を含むことが意図されている。図示の環境に対する数多くの変更が、本発明の精神および範囲から逸脱することなく行われてもよい。
【0024】
今度は図面を参照すると、図1は、例示の実施形態の局面が実施され得る分散型データ処理システム例の実体表現を示す。分散型データ処理システム100は、例示の実施形態の局面が実施され得るコンピュータのネットワークを含んでもよい。分散型データ処理システム100は、少なくとも1つのネットワーク102を包含し、当該ネットワーク102は、分散型データ処理システム100内で共に接続された様々なデバイスおよびコンピュータ間の通信リンクを提供するために使用される媒体である。ネットワーク102は、有線、無線通信リンクまたは光ファイバ・ケーブルなどの接続を含んでもよい。
【0025】
図示の例において、サーバ104およびサーバ106は、記憶ユニット108と共にネットワーク102に接続される。加えて、クライアント110,112,および114もネットワーク102に接続される。これらのクライアント110,112,および114は、例えば、パーソナル・コンピュータまたはネットワーク・コンピュータなどであってもよい。図示の例において、サーバ104は、ブート・ファイル、オペレーティング・システムの画像、およびアプリケーションなどのデータをクライアント110,112,および114へ提供する。クライアント110,112,および114は、図示の例におけるサーバ104に対するクライアントである。分散型データ処理システム100は、さらなるサーバ、クライアント、および図示しない他のデバイスを含んでもよい。
【0026】
図示の例において、分散型データ処理システム100は、伝送制御プロトコル/インターネット・プロトコル(Transmission Control Protocol/Internet Protocol:TCP/IP)というプロトコルのスイート(suite)を使用して互いに通信するネットワークおよびゲートウェイの世界的な集まりを表すネットワーク102を伴うインターネットである。インターネットの中心には、主要ノードまたはホスト・コンピュータ間の高速データ通信回線のバックボーンがあり、データおよびメッセージを経路設置する数千の商用、政府、教育、およびその他のコンピュータ・システムからなる。当然ながら、分散型データ処理システム100は、例えばイントラネット、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)などの複数の異なる種類のネットワークを含んで実施されてもよい。上述のように、図1は一例であって、本発明の異なる実施形態に対してアーキテクチャの制限を加えるものではないので、図1の特定の要素が本発明の例示の実施形態が実施され得る環境に関する制限とみなされるべきではない。
【0027】
図2を参照すると、例示の実施形態の局面が実施され得るデータ処理システム例のブロック図が示されている。データ処理システム200は、図1のクライアント110などのコンピュータの一例であって、本発明の例示の実施形態のための処理を実施するコンピュータ使用可能なコードまたは命令が位置し得るものである。
【0028】
図示の例において、データ処理システム200は、ノース・ブリッジおよびメモリ・コントローラ・ハブ(north bridge and memory controller hub:NB/MCH)202と、サウス・ブリッジおよび入出力コントローラ・ハブ(south bridge and input/output(I/O) controller hub:SB/ICH)204とを含むハブ・アーキテクチャを用いる。処理ユニット206、メイン・メモリ208、およびグラフィックス・プロセッサ210がNB/MCH202に接続される。グラフィックス・プロセッサ210は、アクセラレィティッド・グラフィックス・ポート(accelerated graphics port:AGP)を通じてNB/MCH202と接続されてもよい。
【0029】
図示の例において、ローカル・エリア・ネットワーク(LAN)アダプタ212がSB/ICH204に接続する。音声アダプタ216、キーボードおよびマウス・アダプタ220、モデム222、読み出し専用メモリ(ROM)224、ハード・ディスク・ドライブ(hard disk drive:HDD)226、CD−ROMドライブ230、ユニバーサル・シリアル・バス(universal serial bus:USB)ポートおよび他の通信ポート232、ならびにPCI/PCIeデバイス234がバス238およびバス240を通じてSB/ICH204に接続する。PCI/PCIeデバイスは、例えばイーサネット(R)アダプタ、アドイン・カード、およびノートブック・コンピュータ用のPCカードを含んでもよい。PCIはカード・バス・コントローラを使用するが、PCIeは使用しない。ROM224は、例えばフラッシュ基本入出力システム(basic input/output system:BIOS)であってもよい。
【0030】
HDD226およびCD−ROMドライブ230は、バス240を通じてSB/ICH204に接続する。HDD226およびCD−ROMドライブ230は、例えば、統合ドライブ・エレクトロニクス(integrated drive electronics:IDE)またはシリアル・アドバンスト・テクノロジー・アタッチメント(serial advanced technology attachment:SATA)インターフェースを使用してもよい。スーパーI/O(SIO)ドライブ236がSB/ICH204に接続されてもよい。
【0031】
オペレーティング・システムが処理ユニット206上で実行される。オペレーティング・システムは、図2におけるデータ処理システム200内の様々な構成要素の制御を調和させて提供する。クライアントとして、オペレーティング・システムは、マイクロソフト(Microsoft)(R)ウィンドウズ(Windows)(R)XP(マイクロソフトおよびウィンドウズは、米国および他の諸国またはその両方におけるマイクロソフト社の商標である)などの市販のオペレーティング・システムであってもよい。Java(商標)プログラミング・システムなどのオブジェクト指向プログラミング・システムがオペレーティング・システムと共に実行されてもよく、データ処理システム200上で実行するJava(商標)プログラムまたはアプリケーションからのオペレーティング・システムに対する呼び出しを提供する(Javaは、米国および他の諸国またはその両方におけるサン・マイクロシステムズ社の商標である)。
【0032】
サーバとして、データ処理システム200は、例えばIBM(IBM社の登録商標)eServer(商標)System p(IBM社の登録商標)コンピュータ・システムであってもよく、アドバンスト・インタラクティブ・エグゼキュティブ(Advanced Interactive Exectuive:AIX)(IBM社の登録商標)オペレーティング・システムまたはリナックス(LINUX)(R)オペレーティング・システム(eServer、System p、およびAIXは、米国および他の諸国またはその両方におけるIBM社の商標であり、LINUXは、米国および他の諸国またはその両方におけるリーナス・トーバルズ(Linus Torvalds)の商標である)。データ処理システム200は、処理ユニット206に複数のプロセッサを含む対称マルチプロセッサ(symmetric multiprocessor:SMP)システムであってもよい。代わりに、単一のプロセッサ・システムが用いられてもよい。
【0033】
オペレーティング・システム、オブジェクト指向プログラミング・システム、ならびにアプリケーションまたはプログラムに関する命令は、HDD226などの記憶デバイス上にあり、処理ユニット206によって実行するためにメイン・メモリ208にロードされてもよい。本発明の例示の実施形態についての処理は、処理ユニット206がコンピュータ使用可能なプログラム・コードを使用して行われてもよく、コンピュータ使用可能なプログラム・コードは、例えばメイン・メモリ208、ROM224、または例えば1つ以上の周辺デバイス226および230にあってもよい。
【0034】
図2に示すようなバス238またはバス240などのバス・システムは、1つ以上のバスからなってもよい。当然ながら、バス・システムは、任意の種類の通信組織またはアーキテクチャを使用して実施されてもよく、当該通信組織またはアーキテクチャは、それらに付属する異なる構成要素またはデバイス間のデータ転送を提供するものである。図2のモデム222またはネットワーク・アダプタ212などの通信ユニットは、データを送受信するために使用される1つ以上のデバイスを含んでもよい。メモリは、例えば、図2のメイン・メモリ208、ROM224、またはNB/MCH202に見受けられるようなキャッシュであってもよい。
【0035】
図1〜図2におけるハードウェアは実施によって異なってもよいことを当業者は理解するだろう。フラッシュ・メモリ、同等の不揮発性メモリ、または光ディスク・ドライブなどの他の内部ハードウェアまたは周辺機器が、図1〜図2に示すハードウェアに加えてまたはその代わりに使用されてもよい。また、例示の実施形態の処理は、本発明の精神および範囲を逸脱せずに上述のSMPシステム以外のマルチプロセッサ・データ処理システムに適用されてもよい。
【0036】
さらに、データ処理システム200は、クライアント・コンピューティング・デバイス、サーバ・コンピューティング・デバイス、タブレット・コンピュータ、ラップトップ・コンピュータ、電話または他の通信デバイス、携帯情報端末(personal digital assisitant:PDA)などを含む任意の複数の異なるデータ処理システムの形態を取ってもよい。例示のある例においては、データ処理システム200は、例えばオペレーティング・システム・ファイルまたはユーザが生成したデータあるいはその両方を記憶するための不揮発性メモリを提供するためにフラッシュ・メモリを伴って構成された携帯型コンピューティング・デバイスであってもよい。本質的には、データ処理システム200は、アーキテクチャ上の制限なく、任意の周知または後に開発されたデータ処理システムであってもよい。
【0037】
特定のアドレスから開始して2倍のL2に等しい連続メモリを割り当てることによって、キャッシュ内のすべてのキャッシュ・ラインを完全にテストしてもよい。しかしながら、そのような場合において、実ページ番号(RPN)ビットの小さな部分のみがテストされるようにしてもよい。例示の実施形態は、RPNビットをα、β、およびγビットと称される3つの部分に分割する。割り当てられたメモリは、γ−RPNビットに依存して特定のキャッシュ・ラインに存在する。α−RPNビットは、利用可能なメモリに依存して割り当て可能なメモリアドレスの境界を規定する。例示の実施形態における考え方は、α−RPNおよびγ−RPNビットを別個に考慮してアドレスを生成して割り当てることによって、各RPNビットについてメモリの1ページのサイズを割り当てるというものである。提示された考え方は、α−RPNおよびγ−RPNビットと、α−RPNおよびγ−RPNビットの組み合わせを知的に選択して、メモリの1ページ分のサイズ割り当てのためのアドレスを取得して、RPNビットと共に合同クラス毎に異なるキャッシュ・ラインを同時にテストすることになるというものである。このような割り当てによって、例示の実施形態は、全キャッシュ内の合同クラスのすべてと共にキャッシュ・ディレクトリ内にあり得るすべてのRPNビットを確実に対象とするものである。
【0038】
図3は、例示の一実施形態に係る、キャッシュ・ディレクトリ内の実ページ番号(RPN)アドレス・ビットをテストするためのキャッシュ・テスト・アプリケーションの機能ブロック図を示す。キャッシュ・ディレクトリ内のRPNアドレス・ビットのテストは、チップ認証においてより多くの対象範囲を提供するものであり、RPNの実施において任意の(複数の)バグをよりよく特定できるものである。キャッシュ・テスト・アプリケーション302は、既存のキャッシュ・ライン・テストと共に、キャッシュ・ディレクトリ304内のRPNアドレス・ビットについて、最適な対象範囲および最小限の時間で最大のストレスを与えることになるメモリの割り当てを決定するための最適なアルゴリズムを用いる。キャッシュ・テスト・アプリケーション302がキャッシュ・ディレクトリ304内のRPNアドレス・ビットを最適化するために、仕様検索モジュール305がキャッシュ仕様データ構造306からキャッシュの仕様を検索する。キャッシュ仕様データ構造306は、図2のメイン・メモリ208などのデータ構造であってもよい。キャッシュ仕様は、キャッシュのサイズ、キャッシュの連想度、キャッシュ内のページのサイズ、キャッシュ内のキャッシュ・ラインのサイズなどを含んでもよい。例示の本実施形態においては、キャッシュのサイズはバイト単位で2によって表されてもよく、連想度は2によって表されてもよく、ページのサイズはバイト単位で2によって表されてもよく、キャッシュ・ラインのサイズもバイト単位で2で表されてもよい。キャッシュは、サイズがアーキテクチャに依存するキャッシュ・ラインからなる。よって、キャッシュのキャッシュ・ラインの総数は、キャッシュのサイズをキャッシュのキャッシュ・ラインのサイズで除することによって決定されてもよく、これは2p−cで表されてもよい。
【0039】
連想度によっては、メイン・メモリ内の位置は、キャッシュ内におけるキャッシュ・ライン数と同数にキャッシュされてもよい。連想度が2である場合、メイン・メモリ内の各位置は、2分のキャッシュ・ラインにキャッシュされてもよい。この2分のキャッシュ・ラインの群は、特定のメモリ位置をキャッシュする限りにおいてそれらは互い位置合同しているので、合同クラスと称されてもよい。合同クラスの総数は、キャッシュ・ライン数を連想度で除することによって決定されてもよく、2p−c−kで表されてもよい。
【0040】
例示の実施形態において、ページ割り当てモジュール308がメモリの1ページ分のサイズを1回割り当てる場合には、キャッシュ・テスト・アプリケーション302は、複数の合同クラスを1回テストすることができてもよい。1ページ内の合同クラスの数は、ページのサイズをキャッシュ・ラインのサイズで除することによって計算されてもよく、2o−cで表されてもよい。よって、各合同クラスを1回テストするために必要なページの総数は、CONGSETSIZEと称されてもよく、これは、合同クラスの総数を1ページ内の合同クラスの数で除することによって決定されてもよく、2p−c−k−(o−c)で表されてもよい。例示の実施形態において、各合同クラスをテストするのに必要なページの総数は、γ−RPN312で表されるようなRPNアドレス310内の最も右側にあるビットとして特定される。RPNアドレス310のサイズは一例に過ぎず、例示の実施形態は、RPNアドレス310は他の構成を有してもよいことを認めるものである。
【0041】
キャッシュ・テスト・アプリケーション302が動作するキャッシュのサイズは、通常大きくない。例示の実施形態は、テストされる利用可能なメモリ上の上限および下限があってもよいことを認めるものである。よって、例示の実施形態は、キャッシュ・テスト・アプリケーション302が動作し得る利用可能なメモリ領域を、下限はLOで、上限はHIでそれぞれ示す。割り当てが行われ得る範囲を規定するようなRPNアドレス310内の対応ビットが特定されてもよく、それぞれhビット314およびlビット316で表される。限界特定モジュール318がhビット314を計算するためには、限界特定モジュール318は、2キロバイト<HIであって2h+1キロバイト>HIであるようにRPNアドレス310内のhビット314を特定する。同様に、限界特定モジュール318がlビット316を特定するためには、限界特定モジュール318は、2キロバイト>LOであって2l−1キロバイト<LOであるようにRPNアドレス310内のlビット316を特定する。
【0042】
lビット316を下回りかつhビット314を上回るRPNアドレス310内のメモリは割り当てられなくてもよい。lビット316の場合には、ビット複製モジュール322がこれらのビットを、αビットで表されるlビット316より大きなあるビットと組み合わせて複製してもよく、よって、領域320はα−RPN320として示されてもよい。ビットは、メモリの制限によって複製されてもよい。例示の実施形態は領域(α−RPN320)から少なくとも1ビットを選択するという制約があってもよいので、lビット316を下回りかつhビット314を上回る位置領域320は、選択的にではなく制約によって複製されてもよい。例示の実施形態は、α−RPN320を、オペレーティング・システムが常駐する領域にメモリが割り当てられていないか、または利用可能なメモリよりも高いところにある領域にメモリが割り当てられていないことを保証するために設定される必要があるビットとして規定する。hビット314の左側にある領域324内のビットは、テストされなくてもよい。hビット314の左側にある領域324内の任意のビットに対応するアドレスは、物理的なメモリのHI限界よりも大きなアドレスに対応することになろう。
【0043】
よって、RPNアドレス310内のビットは、説明を簡略にするために、3つの部分に
分割されてもよい。
1.第1の部分は、RPNアドレス310のビットhビット314からビットlビット316までであって、α−RPN320として規定される。
2.第2の部分は、ビットl+1から51−(p−k−o+1)であって、β−RPN326として規定される。
3.第3の部分は、ビットp−k−o−1から51−oであって、γ−RPN312として規定される。
【0044】
限界特定モジュール318がRPNアドレス310内のhビット314およびlビット316を特定すると、ランダムx値生成器モジュール328が、xがRandrange(l,h)と等しくなるように、hビット314とlビット316との間のランダム値xを生成する。ランダムx値生成器モジュール328によるランダム値xの生成は、α−RPN320からビットを選択する。x番目のビットのみを「オン」に設定することによって与えられたアドレスは、addr=1<<xによって与えられ、チェック・アドレス・モジュール330が、addr<=HIかつaddr>=LOを保証するようにチェックを行う。アドレスが確認されると、ランダムy値生成器モジュール332が、yがRandrange(0,CONGSETSIZE−1)に等しくなるように、0からCONGESETSIZE−1の間の値yをランダムに生成する。ランダムy値生成器モジュール332によるランダム値yの生成は、γ−RPN312から値を選択する。y値は、CONGSET番号(キャッシュ内の合同クラスの特定のセット)または指標と称されてもよい。
【0045】
y番目のCONGSETがページにこれまで何回割り当てられたかを判断するために、CONGSET特定モジュール334が、yというCONGSET値をチェックする。yが2または場合によっては2*2であると判断された場合には、y番目のCONGSETは飽和していると判断される。すなわち、y番目のCONGSETは許容される所定の最大回数割り当てられている。よって、現在のy値とは異なる不飽和の合同クラスの異なるセットが割り当てられる必要がある。ランダムy値生成器モジュール332が飽和していると判断された値yをランダムに生成したとCONGSET特定モジュール334が特定した場合には、CONGSET特定モジュール334は、フェール・カウントを1だけ増分する。
【0046】
ランダムy値生成器モジュール332が飽和していると判断された値yを所定の回数連続してランダムに生成しているとCONGSET特定モジュール334が判断した場合には、ランダムy値生成器モジュール332は値yをランダムに生成して、スキャニング・モジュール336がRPNアドレス310をスキャンして、ランダムなy値の右から連続して開始する不飽和の第1の指標を決定する。ランダムに生成されたy値の右へ向かうすべての指標が飽和している場合には、スキャニング・モジュール336は、指標0から開始してランダムに生成されたy値−1の指標が到達するまでスキャンする。スキャニング・モジュール336が不飽和のy値を特定すると、ページ割り当てモジュール308は、特定されたy値または1<<x+yのアドレスにページを割り当てて、関連付けられたCONGSET値を1だけ増分して、フェール(fail)カウントを0に等しく設定する。このページ割り当て処理は、対象とする必要があるかまたはすべてのキャッシュを飽和させる必要があるページすべてが割り当てられるまで継続する。
【0047】
キャッシュ・ディレクトリ304内のRPNアドレス・ビットをテストするキャッシュ・テスト・アプリケーション302の一例は以下の通りである。キャッシュ・テスト・アプリケーション302がキャッシュ・ディレクトリ304内のRPNアドレス・ビットを最適化するために、仕様検索モジュール305は、キャッシュ仕様データ構造306からキャッシュの仕様を検索する。本例において、レベル2(level two:L2)のサイズは、512KB=2KB=219バイトであってもよいので、2で表され得るバイト単位のキャッシュのサイズは、本例においてはp=19についての値を与える。加えて、本例においては、L2キャッシュの連想度は8ウェイ=2であってもよい、2で表され得るキャッシュの連想度は、本例においてはk=3についての値を与える。さらに、本例においては、L2キャッシュ内のページのサイズは、4KB=2KB=212バイトであってもよいので、2で表され得るバイト単位のページのサイズは、本例においてはo=12についての値を与える。最後に、本例においては、L2キャッシュ内のキャッシュ・ラインのサイズは128バイト=2バイトなので、2で表され得るバイト単位のキャッシュ・ラインのサイズは、本例においてはc=7についての値を与える。
【0048】
よって、本例について、キャッシュのキャッシュ・ラインの総数は、キャッシュのサイズをキャッシュのキャッシュ・ラインのサイズで除することによって決定され、2p−c=219−7=212で表され得る。連想度によっては、キャッシュ内にあるキャッシュ・ラインの数だけ、メイン・メモリ内の位置がキャッシュされてもよい。本例においては、連想度は2であるので、メイン・メモリ内の各位置は、8つのキャッシュ・ラインにキャッシュされてもよい。本例において、8つのキャッシュ・ラインの群が合同クラスであって、キャッシュ・ライン数を連想度で除することによって決定される合同クラスの総数は、2p−c−k=219−7−3=2=512個の合同クラスで表され得る。
【0049】
本例において、ページ内の合同クラスの数は、ページのサイズをキャッシュ・ラインのサイズで除することによって計算されてもよく、ページ内の2o−c=212−7=2=32個の合同クラスで表されてもよい。加えて、各合同クラスを1回テストするために必要ページの総数(CONGSETSIZE)は、合同クラスの総数をページ内の合同クラスの数で除することによって決定され、2p−c−k(o−c)=219−7−3−(12−7)=2=16個の各合同クラスをテストするために必要なページの総数で表されてもよい。
【0050】
図4は、例示の一実施形態に係る、L2キャッシュ例についてCONGSETSIZEが16の場合のテストを表すアレイ例を示す。最初に、アレイ402内のCONGSETSIZEについてのすべてのCONGSET値が0に初期化される。HI,LO,h、およびlについての値が見つかった後に、上述のようなやり方で、ランダム値xおよびランダム値yが取得される。yが4ということになると仮定すると、ページ割り当てモジュールは、CONGSET4内の32個のCONGCLASS(97−128)をすべて対象とするために、y値または(1<<x)+yのアドレスにあるページを割り当てる。アレイ404は、4であるy値に関連付けられたCONGSET値を0から1へ更新または増分することを示す。
【0051】
次の反復手順においてランダム値yが0ということになると仮定すると、同様にCONGCLASS(0〜32)が1回割り当てられ、アレイ406に示すように、対応するCONGSET値0が1に更新または増分される。今度は、次の7回目の反復手順において、生成された値yが4だけということになったと仮定する。ページ割り当てモジュールは、反復手順毎に同一の4番目のCONGSETであるCONGCLASS(97〜128)でページを割り当て、関連付けられたCONGSET値を1だけ増分する。このCONGSETは、このように7回以上も対象とされている。y値である4に対応するCONGSET値は、アレイ408に示すように、これら7回の割り当て後に8に更新される。
【0052】
次の反復手順において、ランダム値yが再び4ということになると、ページ割り当てモジュールによるページ割り当ては、このアドレスについては行われるべきでない(1<<x+yであって、hとlと間のランダム値xが各反復手順毎に生成されることに留意)。なぜならば、本例では許可されていない、CONGCLASS(97〜128)の9回の割り当てを意味することになるからである。よって、4というy値は飽和しているか、または所定の最大回数割り当てられており、アレイは以前と同じ状態のままである。その後、ランダムy値生成器は、y値を再びランダムに生成し、yが不飽和でない値になった場合に、上述と同様に割り当てが行われることになる。このランダムに生成されたy値が再び飽和する場合には、ランダムy値生成器は、もう1回y値をランダムに生成する。y値が不飽和である場合には、上述と同様に割り当てが行われることになる。所定の連続試行数の後にランダムy値生成器がy値をランダムに生成して飽和することになると、スキャニング・モジュールがRPNアドレスをスキャンして、ランダムに生成されたy値の右側へ連続して開始する不飽和の第1のy値を決定する。本例において、ランダムに生成されたy値の右側へ連続して開始する不飽和の第1のy値である4は8になり、その後、当該y値は9というy値であることになろう。アレイ410は、9であるy値の0から1への更新を示す。
【0053】
ランダムに生成されたy値の右側へ連続したy値のすべてが飽和した場合には、スキャニング・モジュールが0というy値から開始して、−1というランダムに生成されたy値に到達するまでスキャンする。アレイ412は、ランダムに生成されたy値が13であって、14および15というy値が飽和している場合を示す。本例と同様に、スキャニング・モジュールは、0というy値からスキャニングを戻し、本例においては、0というy値が不飽和であるとわかる。その後、上述と同様に割り当てが行われることになるので、0というy値に対応して割り当てられたページが増分される。このように、8*16回の割り当てが行われた最後の反復手順において、CONGSET内のすべてのY値は、アレイ414に示すように、8というCONGSET値を有することになる。
【0054】
図5および図6は、例示の一実施形態に係る、キャッシュ・ディレクトリ内の実ページ番号(RPN)アドレス・ビットをテストするためのキャッシュ・テスト・アプリケーションの動作例を示す。動作が開始されると、キャッシュ・テスト・アプリケーションは、仕様検索モジュールを使用して、キャッシュ仕様データ構造からキャッシュの仕様を検索する(ステップ502)。キャッシュ仕様は、キャッシュのサイズ、キャッシュの連想度、ページのサイズ、キャッシュ・ラインのサイズなどを含んでもよい。キャッシュの仕様を使用して、キャッシュ・テスト・アプリケーションは、バイト単位でのキャッシュのサイズ、キャッシュの連想度、バイト単位でのキャッシュ内のページのサイズ、またはバイト単位でのキャッシュ・ラインのサイズあるいはそれらすべてを特定する(ステップ504)。これらの変数を使用して、キャッシュ・テスト・アプリケーションは、キャッシュのキャッシュ・ラインの総数、キャッシュ内の合同クラスの総数、1ページ内の合同クラスの数、または、CONGESTSIZEと称される、各合同クラスを1回テストするために必要なページの総数あるいはそれらすべてを決定する(ステップ506)。
【0055】
RPNアドレスを使用して、限界特定モジュールが、キャッシュ・テスト・アプリケーションが動作し得る使用可能なメモリ領域を決定し、これは、下限はLOで、上限はHIでそれぞれ特定される(ステップ508)。その後、限界特定モジュールは、ページ割り当てがページ割り当てモジュールによって行われ得る範囲を特定し、これはhおよびlによって表されてもよい(ステップ510)。
【0056】
図3における限界特定モジュール318がRPNアドレス内でビットhとビットlとを特定すると、ランダムx値生成器モジュールが、xがRandrange(l,h)と等しくなるように、ビットhとビットlとの間のランダム値xを生成する(ステップ512)。ランダムx値生成器モジュールによるランダム値xの生成は、RPNアドレスのα−RPNからビットを選択する。その後、ランダムy値生成器モジュールが、RPNアドレスのγ−RPNから値を選択することによって、ランダム値yを生成する(ステップ514)。ランダムy値生成器によるランダム値yの生成は、テスト対象のキャッシュの部分に関連付けられた合同クラスから合同クラスを選択する。
【0057】
y番目のCONGSETがページ内に既に何回割り当てられたかを判断するために、CONGSET特定モジュールが、特定されたy値に関連付けられたCONGSET値をチェックして、特定されたy値が飽和したか、所定の最大回数割り当てられたかを判断する(ステップ516)。ステップ516においてCONGSET値が飽和していない場合には、ページ割り当てモジュールは、y値または1<<x+yに関連付けられたアドレスにページを割り当て、関連付けられたCONGSET値を1だけ増分して、フェール・カウントを0に等しく設定する(ステップ518)。その後、ページ割り当てモジュールは、キャッシュ全体を対象とするのに必要な全ページが割り当てられたかを判断する(ステップ520)。ステップ520においてすべてのページが割り当てられた場合には、動作は終了する。ステップ520においてページがすべて割り当てられているわけではない場合には、動作はステップ512へ戻る。
【0058】
ステップ516に戻って、ランダムに生成されたy値が飽和していると、CONGSET特定モジュールは、フェール・カウントを1だけ増分し(ステップ522)、フェール・カウントが所定の値に等しいかどうかが判断される(ステップ524)。ステップ524においてフェール・カウントが所定の値と等しくない場合には、動作はステップ514へ戻る。ステップ524においてフェール・カウントが所定の値と等しい場合には、ランダムy値生成器は、y値をランダムに生成する(ステップ526)。スキャニング・モジュールが、RPNアドレスをスキャンして、ランダムy値から右側へ連続して開始してCONGSETSIZEの最大値まで、不飽和の第1のy値を特定する(ステップ528)。その後、スキャニング・モジュールは、不飽和のy値がCONGSETSIZEの最大値に到達する前に不飽和のy値が特定されたかどうかを判断する(ステップ530)。ステップ530においてCONGSETSIZEの最大値に到達する前にスキャニング・モジュールが不飽和のy値を特定した場合には、スキャニング・モジュールは、決定されたCONGSETのy値をランダムに生成されたy値に割り当て(ステップ532)、動作はステップ518へ進む。
【0059】
ステップ530においてスキャニング・モジュールが最大のCONGSETSIZEに到達し、不飽和のy値を特定できなかった場合には、スキャニング・モジュールは、0というy値から開始して、ランダムに生成された−1というy値に到達するまでスキャンする(ステップ534)。その後、スキャニング・モジュールは、0というy値から開始してランダムに生成された−1というy値まで、不飽和のy値が特定可能かどうかを判断する。ステップ536においてスキャニング・モジュールが不飽和のyを0というy値からの範囲内で識別してランダムに生成された−1というy値までスキャンした場合には、スキャニング・モジュールは、決定されたCONGSETのy値をランダムに生成されたy値に割り当て(ステップ532)、動作はステップ518へ進む。ステップ536においてスキャニング・モジュールが0というy値から開始してランダムに生成された−1というy値まで不飽和のy値を特定できなかった場合には、キャッシュ・テスト・アプリケーションは、すべてのページが割り当てられていると特定し、動作は終了する。
【0060】
よって、例示の実施形態は、キャッシュ・ディレクトリ内の実ページ番号ビットをテストするための機構を提供する。例示の実施形態は、RPNビットをα、β、およびγビットと称される3つの部分に分割する。割り当てられたメモリは、γ−RPNビットに依存して特定のキャッシュ・ラインに存在する。α−RPNビットは、利用可能なメモリに依存して割り当て可能なメモリアドレスの境界を規定する。例示の実施形態における考え方は、α−RPNおよびγ−RPNビットを別個に考慮してメモリを割り当てることによって、割り当て用のアドレスを生成するというものである。提示された考え方は、α−RPNおよびγ−RPNビットと、α−RPNおよびγ−RPNビットの組み合わせとを知的に選択して、割り当てのためのアドレスを取得して、合同クラス毎に異なるキャッシュ・ラインと共にRPNビットを同時にテストすることになるというものである。このような割り当てによって、完全なキャッシュのほか、すべての可能なRPNビットが確実に対象となる。
【0061】
上述のように、当然のことながら、例示の実施形態は、完全にハードウェアによる実施形態、完全にソフトウェアによる実施形態、または、ハードウェアおよびソフトウェア要素の両方を包含する実施形態の形式を取ってもよい。一実施形態例において、例示の実施形態の機構は、ソフトウェアまたはプログラム・コードで実施され、これにはファームウェア、常駐ソフトウェア、マイクロ・コードなどが含まれるが、これらに限定されない。
【0062】
プログラム・コードを記憶または実行あるいはその両方を行うのに適したデータ処理システムは、システムバスを通じてメモリ要素に直接または間接的に結合された少なくとも1つのプロセッサを含むことになる。メモリ要素は、プログラム・コードの実際の実行中に用いられるローカル・メモリ、大容量ストレージ、および、実行中に大容量ストレージからコードを検索しなければならない回数を減らすために少なくともいくつかのプログラム・コードの一次的な記憶を提供するキャッシュ・メモリを含むことができる。
【0063】
入出力すなわちI/Oデバイス(キーボード、ディスプレイ、ポインティング・デバイスなどを含むが、それらに限定されない)は、直接か、または介在するI/Oコントローラを通じるかのいずれかで、システムと結合され得る。ネットワーク・アダプタもシステムと結合されて、介在する私設または公衆ネットワークを通じて他のデータ処理システムまたはリモート・プリンタまたは記憶デバイスと結合されるようになってもよい。モデム、ケーブル・モデム、およびイーサネット(R)カードは、現在利用可能なネットワーク・アダプタの種類のうちのいくつかに過ぎない。
【0064】
本発明の説明は、例示および説明の目的で提示されてきており、網羅的であることも、または開示された形式の本発明に制限されるものでもない。数多くの変更および変形が当業者にとって明らかであろう。実施形態は、本発明の原則および実際の応用を最もよく説明するために、かつ、予期される特定の使用に適するような様々な修正を伴う様々な実施形態について本発明を当業者が理解できるようにするために選択および記載されたものである。
【符号の説明】
【0065】
302 キャッシュ・テスト・アプリケーション
304 キャッシュ・ディレクトリ
305 仕様検索モジュール
306 キャッシュ仕様
308 ページ割り当てモジュール
318 限界特定モジュール
322 ビット複製モジュール
328 ランダムx値生成器モジュール
330 チェック・アドレス・モジュール
332 ランダムy値生成器モジュール
334 CONGSET特定モジュール
336 スキャニング・モジュール

【特許請求の範囲】
【請求項1】
データ処理システムにおいて、キャッシュ・ディレクトリ内の実ページ番号ビットをテストするための方法であって、
テスト対象のキャッシュに関連付けられた前記キャッシュ・ディレクトリの前記実ページ番号ビットをテストするために、前記キャッシュの仕様を検索するステップと、
前記キャッシュの前記仕様を使用してページ割り当てを行うために、前記キャッシュ・ディレクトリの実ページ番号アドレス内の範囲を特定するステップと、
テスト対象の前記実ページ番号ビットの部分を特定するランダム値xを生成するステップと、
テスト対象の前記キャッシュの前記部分内の合同クラスのセットから第1の合同クラスを特定する第1のランダム値yを生成するステップと、
前記第1のランダム値yに関連付けられた前記第1の合同クラスが所定の回数割り当てられたかどうかを判断するステップと、
前記第1のランダム値yに関連付けられた前記第1の合同クラスが前記所定の回数割り当てられなかったことに応じて、前記第1のランダム値yに関連付けられた前記第1の合同クラスについて、メモリの1ページ分のサイズを割り当てるステップと、
前記第1の合同クラスに関連付けられた第1の割り当て値を1の値で増分するステップ
とを含む、方法。
【請求項2】
前記第1のランダム値yに関連付けられた前記第1の合同クラスが前記所定の回数割り当てられたことに応じて、フェール・カウンタを1の値で増分するステップと、
前記フェール・カウンタが所定の値に等しいかどうかを判断するステップと、
前記フェール・カウンタが前記所定の値に等しくないことに応じて、テスト対象の前記キャッシュの前記部分内の合同クラスの前記セットから第2の合同クラスを特定する第2のランダム値yを生成するステップと、
前記第2のランダム値yに関連付けられた前記第2の合同クラスが前記所定の回数割り当てられたかどうかを判断するステップと、
前記第2のランダム値yに関連付けられた前記第2の合同クラスが前記所定の回数割り当てられなかったことに応じて、前記第2のランダム値yに関連付けられた前記第2の合同クラスについてメモリの1ページ分のサイズを割り当てるステップと、
前記第2の合同クラスに関連付けられた第2の割り当て値を1の前記値で増分するステップ
とをさらに含む、請求項1に記載の方法。
【請求項3】
前記フェール・カウンタが前記所定の値に等しいことに応じて、第3のランダム値yを生成するステップと、
前記所定の回数割り当てられなかった次の合同クラスを特定するステップと、
前記次の合同クラスに関連付けられた次の値yを特定するステップと、
前記関連付けられた次の値yを使用して、前記次の合同クラスが前記所定の回数割り当てられたかどうかを判断するステップと、
前記次の合同クラスが前記所定の回数割り当てられなかったことに応じて、前記第3のランダム値yに関連付けられた前記次の合同クラスについてメモリの1ページ分のサイズを割り当てるステップと、
前記次の合同クラスに関連付けられた次の割り当て値を1の前記値で増分するステップ
とをさらに含む、請求項2に記載の方法。
【請求項4】
前記所定の回数割り当てられなかった前記次の合同クラスを特定する前記ステップは、
前記第3のランダム値yに関連付けられた第3の合同クラスから合同クラスの前記セットの最大合同セット・サイズまで順に、合同クラスの前記セット内の各合同クラスをスキャンするステップと、
前記第3のランダム値yに関連付けられた前記第3の合同クラスから合同クラスの前記セットの前記最大合同セット・サイズまで順に、前記所定の回数割り当てられなかった合同クラスを特定するステップ
とを含む、請求項3に記載の方法。
【請求項5】
前記第3のランダム値yに関連付けられた前記第3の合同クラスから合同クラスの前記セットの前記最大合同セット・サイズまで順に前記所定の回数割り当てられなかった前記合同クラスを特定できなかったことに応じて、合同クラスの前記セット内の最初の合同クラスから前記第3の合同クラスまでだが前記第3の合同クラスは含まないところを、前記所定回数割り当てられなかった前記合同クラスを特定するためにスキャンするステップをさらに含む、請求項4に記載の方法。
【請求項6】
合同クラスの前記セット内のすべての合同クラスについて、ランダム値yの前記生成ステップと、前記判断ステップと、前記割り当てステップと、前記増分ステップとを、前記合同クラスのすべてが前記所定の回数割り当てられるまで繰り返すステップをさらに含む、請求項1に記載の方法。
【請求項7】
ページ割り当てを行うために前記キャッシュ・ディレクトリの前記実ページ番号アドレス内の前記範囲を特定する前記ステップは、
前記キャッシュ・ディレクトリ内の実ページ番号ビットと共に前記メモリの領域のテストが行われることになる、前記キャッシュ内の利用可能なメモリ領域を判断するステップ
を含む、請求項1に記載の方法。
【請求項8】
キャッシュ・ディレクトリ内の実ページ番号ビットと共にメモリ領域のテストが行われることになる、前記キャッシュ内の前記利用可能なメモリ領域を判断する前記ステップは、
前記キャッシュのサイズを特定するために必要な、バイト単位での1つ以上の変数と、前記キャッシュの連想度と、前記キャッシュ内のページのバイト単位でのサイズと、キャッシュ・ラインのバイト単位でのサイズとを判断するステップと、
前記キャッシュ・ディレクトリに関連付けられた前記キャッシュのキャッシュ・ラインの総数と、前記キャッシュ内の合同クラスの総数と、前記キャッシュの1ページ内の合同クラスの数と、各合同クラスを1回テストするために必要なページの総数とを判断するステップ
とを含む、請求項7に記載の方法。
【請求項9】
コンピュータ読み出し可能なプログラムが記録されたコンピュータ記録可能な媒体であって、前記コンピュータ読み出し可能なプログラムは、コンピューティング・デバイス上で実行されると、前記コンピューティング・デバイスに、
テスト対象のキャッシュに関連付けられたキャッシュ・ディレクトリの実ページ番号ビットをテストするために、前記キャッシュの仕様を検索することと、
前記キャッシュの前記仕様を使用してページ割り当てを行うために、前記キャッシュ・ディレクトリの実ページ番号アドレス内の範囲を特定することと、
テスト対象の前記実ページ番号ビットの部分を特定するランダム値xを生成することと、
テスト対象の前記キャッシュの前記部分内の合同クラスのセットから第1の合同クラスを特定する第1のランダム値yを生成することと、
前記第1のランダム値yに関連付けられた前記第1の合同クラスが所定の回数割り当てられたかどうかを判断することと、
前記第1のランダム値yに関連付けられた前記第1の合同クラスが前記所定の回数割り当てられなかったことに応じて、前記第1のランダム値yに関連付けられた前記第1の合同クラスについて、メモリの1ページ分のサイズを割り当てることと、
前記第1の合同クラスに関連付けられた第1の割り当て値を1の値で増分すること
とを行わせる、コンピュータ記録可能な媒体。
【請求項10】
前記コンピュータ読み出し可能なプログラムは、前記コンピューティング・デバイスに、
前記第1のランダム値yに関連付けられた前記第1の合同クラスが前記所定の回数割り当てられたことに応じて、フェール・カウンタを1の値で増分することと、
前記フェール・カウンタが所定の値に等しいかどうかを判断することと、
前記フェール・カウンタが前記所定の値に等しくないことに応じて、テスト対象の前記キャッシュの前記部分内の合同クラスの前記セットから第2の合同クラスを特定する第2のランダム値yを生成することと、
前記第2のランダム値yに関連付けられた前記第2の合同クラスが前記所定の回数割り当てられたかどうかを判断することと、
前記第2のランダム値yに関連付けられた前記第2の合同クラスが前記所定の回数割り当てられなかったことに応じて、前記第2のランダム値yに関連付けられた前記第2の合同クラスについてメモリの1ページ分のサイズを割り当てることと、
前記第2の合同クラスに関連付けられた第2の割り当て値を1の前記値で増分すること
とをさらに行わせる、請求項9に記載のコンピュータ記録可能な媒体。
【請求項11】
前記コンピュータ読み出し可能なプログラムは、前記コンピューティング・デバイスに、
前記フェール・カウンタが前記所定の値に等しいことに応じて、第3のランダム値yを生成することと、
前記所定の回数割り当てられなかった次の合同クラスを特定することと、
前記次の合同クラスに関連付けられた次の値yを特定することと、
前記関連付けられた次の値yを使用して、前記次の合同クラスが前記所定の回数割り当てられたかどうかを判断することと、
前記次の合同クラスが前記所定の回数割り当てられなかったことに応じて、前記第3のランダム値yに関連付けられた前記次の合同クラスについてメモリの1ページ分のサイズを割り当てることと、
前記次の合同クラスに関連付けられた次の割り当て値を1の前記値で増分すること
とをさらに行わせる、請求項10に記載のコンピュータ記録可能な媒体。
【請求項12】
前記所定の回数割り当てられなかった前記次の合同クラスを特定するために、前記コンピュータ読み出し可能なプログラムは、前記コンピューティング・デバイスに、
前記第3のランダム値yに関連付けられた第3の合同クラスから合同クラスの前記セットの最大合同セット・サイズまで順に、合同クラスの前記セット内の各合同クラスをスキャンすることと、
前記第3のランダム値yに関連付けられた前記第3の合同クラスから合同クラスの前記セットの前記最大合同セット・サイズまで順に、前記所定の回数割り当てられなかった合同クラスを特定すること
とをさらに行わせる、請求項11に記載のコンピュータ記録可能な媒体。
【請求項13】
前記コンピュータ読み出し可能なプログラムは、前記コンピューティング・デバイスに、
前記第3のランダム値yに関連付けられた前記第3の合同クラスから合同クラスの前記セットの前記最大合同セット・サイズまで順に前記所定の回数割り当てられなかった前記合同クラスを特定できなかったことに応じて、合同クラスの前記セット内の最初の合同クラスから前記第3の合同クラスまでだが前記第3の合同クラスは含まないところを、前記所定回数割り当てられなかった前記合同クラスを特定するためにスキャンすることをさらに行わせる、請求項12に記載のコンピュータ記録可能な媒体。
【請求項14】
前記コンピュータ読み出し可能なプログラムは、前記コンピューティング・デバイスに、
合同クラスの前記セット内のすべての合同クラスについて、ランダム値yを生成し、判断し、割り当て、増分するために、前記合同クラスのすべてが前記所定の回数割り当てられるまで前記コンピュータ読み出し可能なプログラムを繰り返すことをさらに行わせる、請求項9に記載のコンピュータ記録可能な媒体。
【請求項15】
プロセッサと、
前記プロセッサに結合されたメモリとを備える装置であって、前記メモリは、前記プロセッサによって実行されると、前記プロセッサに、
テスト対象のキャッシュに関連付けられたキャッシュ・ディレクトリの実ページ番号ビットをテストするために、前記キャッシュの仕様を検索することと、
前記キャッシュの前記仕様を使用してページ割り当てを行うために、前記キャッシュ・ディレクトリの実ページ番号アドレス内の範囲を特定することと、
テスト対象の前記実ページ番号ビットの部分を特定するランダム値xを生成することと、
テスト対象の前記キャッシュの前記部分内の合同クラスのセットから、第1の合同クラスを特定する第1のランダム値yを生成することと、
前記第1のランダム値yに関連付けられた前記第1の合同クラスが所定の回数割り当てられたかどうかを判断することと、
前記第1のランダム値yに関連付けられた前記第1の合同クラスが前記所定の回数割り当てられなかったことに応じて、前記第1のランダム値yに関連付けられた前記第1の合同クラスについて、メモリの1ページ分のサイズを割り当てることと、
前記第1の合同クラスに関連付けられた第1の割り当て値を1の値で増分すること
とを行わせる命令を備える、装置。
【請求項16】
前記命令は、前記プロセッサに、
前記第1のランダム値yに関連付けられた前記第1の合同クラスが前記所定の回数割り当てられたことに応じて、フェール・カウンタを1の値で増分することと、
前記フェール・カウンタが所定の値に等しいかどうかを判断することと、
前記フェール・カウンタが前記所定の値に等しくないことに応じて、テスト対象の前記キャッシュの前記部分内の合同クラスの前記セットから第2の合同クラスを特定する第2のランダム値yを生成することと、
前記第2のランダム値yに関連付けられた前記第2の合同クラスが前記所定の回数割り当てられたかどうかを判断することと、
前記第2のランダム値yに関連付けられた前記第2の合同クラスが前記所定の回数割り当てられなかったことに応じて、前記第2のランダム値yに関連付けられた前記第2の合同クラスについてメモリの1ページ分のサイズを割り当てることと、
前記第2の合同クラスに関連付けられた第2の割り当て値を1の前記値で増分すること
とをさらに行わせる、請求項15に記載の装置。
【請求項17】
前記命令は、前記プロセッサに、
前記フェール・カウンタが前記所定の値に等しいことに応じて、第3のランダム値yを生成することと、
前記所定の回数割り当てられなかった次の合同クラスを特定することと、
前記次の合同クラスに関連付けられた次の値yを特定することと、
前記関連付けられた次の値yを使用して、前記次の合同クラスが前記所定の回数割り当てられたかどうかを判断することと、
前記次の合同クラスが前記所定の回数割り当てられなかったことに応じて、前記第3のランダム値yに関連付けられた前記次の合同クラスについてメモリの1ページ分のサイズを割り当てることと、
前記次の合同クラスに関連付けられた次の割り当て値を1の前記値で増分すること
とをさらに行わせる、請求項16に記載の装置。
【請求項18】
前記所定の回数割り当てられなかった前記次の合同クラスを特定するために、前記命令は、前記プロセッサに、
前記第3のランダム値yに関連付けられた第3の合同クラスから合同クラスの前記セットの最大合同セット・サイズまで順に、合同クラスの前記セット内の各合同クラスをスキャンすることと、
前記第3のランダム値yに関連付けられた前記第3の合同クラスから合同クラスの前記セットの前記最大合同セット・サイズまで順に、前記所定の回数割り当てられなかった合同クラスを特定すること
とをさらに行わせる、請求項17に記載の装置。
【請求項19】
前記命令は、前記プロセッサに、
前記第3のランダム値yに関連付けられた前記第3の合同クラスから合同クラスの前記セットの前記最大合同セット・サイズまで順に前記所定の回数割り当てられなかった前記合同クラスを特定できなかったことに応じて、合同クラスの前記セット内の最初の合同クラスから前記第3の合同クラスまでだが前記第3の合同クラスは含まないところを、前記所定回数割り当てられなかった前記合同クラスを特定するためにスキャンすることをさらに行わせる、請求項18に記載の装置。
【請求項20】
前記命令は、前記プロセッサに、
合同クラスの前記セット内のすべての合同クラスについて、ランダム値yを生成し、判断し、割り当て、増分するために、前記合同クラスのすべてが前記所定の回数割り当てられるまで前記命令を繰り返すことをさらに行わせる、請求項15に記載の装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公開番号】特開2010−33564(P2010−33564A)
【公開日】平成22年2月12日(2010.2.12)
【国際特許分類】
【出願番号】特願2009−153899(P2009−153899)
【出願日】平成21年6月29日(2009.6.29)
【出願人】(390009531)インターナショナル・ビジネス・マシーンズ・コーポレーション (4,084)
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MASCHINES CORPORATION
【Fターム(参考)】