(57)【要約】  キャッシュ・ストレージを備える装置と、そのようなキャッシュ・ストレージを動作させる方法とが提供される。キャッシュ・ストレージ内のデータ・ブロックは、データ・ブロックが能力を指定するかデータ値を指定するかを識別することに関連して記憶された能力メタデータを有する。少なくとも１つのタイプの能力は、有界ポインタである。キャッシュ・ストレージ内のデータ・ブロックへの書き込みに応答して、能力メタデータ修正マーカーは、データ・ブロックに関連して設定され、データ・ブロックに関連する能力メタデータが、データ・ブロックがキャッシュ・ストレージに記憶された以後に、変わったかどうかを示す。これは、データ値から能力へのデータ・ブロックの使用の修正が、意図されない限り、起こり得ないように、システムのセキュリティをサポートする。能力メタデータがメモリ内の他のデータとは別個に記憶されるとき、メモリに対して行われるアクセスは少なくなり得るので、効率性もまた生じ得る。
2020519991.tif 000002
【特許請求の範囲】
【請求項１】
データ・ブロックを記憶するためのキャッシュ・ストレージであって、各データ・ブロックが、前記各データ・ブロックが能力を指定するかデータ値を指定するかを識別することに関連して記憶された能力メタデータを有し、少なくとも１つのタイプの能力が有界ポインタである、キャッシュ・ストレージと、
前記キャッシュ・ストレージに記憶されたデータ・ブロックへの書き込みに応答して、前記データ・ブロックに関連して能力メタデータ修正マーカーを設定する、キャッシュ制御回路であって、能力メタデータ修正マーカーの値が、前記データ・ブロックに関連する前記能力メタデータが、前記データ・ブロックが前記キャッシュ・ストレージに記憶された以後に、変わったかどうかを示す、キャッシュ制御回路と、を備える、装置。
【請求項２】
前記データ・ブロックに関連して設定された前記能力メタデータ修正マーカーが、前記データ・ブロックを含む複数のデータ・ブロックに対応する、請求項１に記載の装置。
【請求項３】
前記データ・ブロックに関連して設定された前記能力メタデータ修正マーカーが、前記キャッシュ・ストレージ内の各キャッシュ・ラインのための単一のビットである、請求項２に記載の装置。
【請求項４】
前記データ・ブロックに関連して設定された前記能力メタデータ修正マーカーが、前記データ・ブロックとの１対１の対応を有する、請求項１に記載の装置。
【請求項５】
前記能力メタデータ修正マーカーの前記値が、指定されたデータ・ブロックが前記キャッシュ・ストレージに記憶された以後に前記能力メタデータは変わっていないことを示すときに、前記キャッシュ・ストレージからさらなるストレージ・レベルへの前記指定されたデータ・ブロック及び関連能力メタデータについての受信された書き込みトランザクションに応答して、前記関連能力メタデータ及び前記さらなるストレージ・レベルに関する書き込みトランザクションを抑制する、メモリ・コントローラをさらに備える、請求項１から４までのいずれか一項に記載の装置。
【請求項６】
前記さらなるストレージ・レベルが、メモリ・ストレージである、請求項５に記載の装置。
【請求項７】
前記さらなるストレージ・レベルが、さらなるキャッシュ・ストレージ・レベルである、請求項５に記載の装置。
【請求項８】
前記書き込みトランザクションが、前記メモリ・ストレージ内の前記関連能力メタデータに関する読み取り−修正−書き込みトランザクションである、請求項６に記載の装置。
【請求項９】
前記キャッシュ・ストレージより高いメモリ階層レベルにおいて能力メタデータを記憶するために能力メタデータ・キャッシュ・ストレージをさらに備え、前記メモリ・コントローラは、少なくとも１つのデータ・ブロックについてのメモリ・アクセス・トランザクションに応答して、前記少なくとも１つのデータ・ブロックに関連する必要な能力メタデータを返し、
前記メモリ・コントローラが、前記必要な能力メタデータが前記能力メタデータ・キャッシュ・ストレージに記憶されていないときに、前記少なくとも１つのデータ・ブロックについての前記メモリ・アクセス・トランザクションに応答して、前記少なくとも１つのデータ・ブロックに関連する前記能力メタデータ修正マーカーの前記値が、前記必要な能力メタデータは、前記少なくとも１つのデータ・ブロックが前記キャッシュ・ストレージに記憶された以後に、変わらなかったことを示さない限り、現在記憶されている能力メタデータの前記能力メタデータ・キャッシュ・ストレージからの削除及び前記能力メタデータ・キャッシュ・ストレージ内への前記必要な能力メタデータの取得を開始する、請求項５から８までのいずれか一項に記載の装置。
【請求項１０】
前記能力メタデータ・キャッシュ・ストレージに記憶された各ビットが、能力メタデータの複数のビットのいずれかが設定されているか否かを示す、請求項９に記載の装置。
【請求項１１】
前記能力メタデータ・キャッシュ・ストレージが、少なくとも２つの階層レベルのストレージを備え、より高い階層レベルに記憶された各ビットが、次にあるより低い階層レベル内の複数のビットのいずれかが設定されているか否かを示す、請求項１０に記載の装置。
【請求項１２】
前記キャッシュ・ストレージが、キャッシュ・ラインに前記データ・ブロックを記憶することができ、前記データ・ブロックに関連して前記キャッシュ制御回路によって設定された前記能力メタデータ修正マーカーが、前記キャッシュ・ストレージ内の各キャッシュ・ラインの複数のビットのうちの１つであり、各キャッシュ・ラインの前記複数のビットのうちの各ビットが、前記キャッシュ・ラインのそれぞれの部分の前記能力メタデータが、前記キャッシュ・ラインの前記それぞれの部分が前記キャッシュ・ストレージに記憶された以後に、変わったかどうか、を示す、請求項１から１１までのいずれか一項に記載の装置。
【請求項１３】
前記キャッシュ制御回路が、前記キャッシュ・ストレージに記憶された前記データ・ブロックへの前記書き込みに応答して、データ・ブロック部分に関連してデータ修正マーカーを記憶し、前記データ修正マーカーの値は、前記データ・ブロック部分が、前記データ・ブロックが前記キャッシュ・ストレージに記憶された以後に、書き込まれたかどうか、を示し、
前記能力メタデータ修正マーカーに対応する前記キャッシュ・ラインのそれぞれの部分は、前記データ・ブロック部分と少なくとも同じ大きさである、請求項１２に記載の装置。
【請求項１４】
指定されたデータ・ブロックに関連して記憶された能力メタデータは、それがデータ値であることを示し、前記能力メタデータ修正マーカーの前記値は、前記指定されたデータ・ブロックに関連して記憶された前記能力メタデータが、前記指定されたデータ・ブロックが前記キャッシュ・ストレージに記憶された以後に、変わらなかったことを示すとき、前記キャッシュ・ストレージからさらなるストレージ・レベルへ前記指定されたデータ・ブロック及び関連能力メタデータについての受信された書き込みトランザクションに応答して、前記指定されたデータ・ブロックがデータ値であることを示すようにメモリに記憶された前記能力メタデータがアクティブに設定されるようにさせるためのメモリ書き込みトランザクションを発行する、メモリ・コントローラをさらに備える、請求項１から４までのいずれか一項に記載の装置。
【請求項１５】
指定されたデータ・ブロックに関連して記憶された前記能力メタデータが、それがデータ値であることを示すとき、並びに、別のエージェントが、前記指定されたデータ・ブロックが前記キャッシュ・ストレージに記憶された以後に、前記指定されたデータ・ブロック及びメモリ内の関連能力メタデータのうちの少なくとも１つに対する書き込みアクションを実行したことを示す信号を前記メモリ・コントローラが受信したときに、前記キャッシュ・ストレージからさらなるストレージ・レベルへの前記指定されたデータ・ブロック及び前記関連能力メタデータについての受信された書き込みトランザクションに応答して、前記指定されたデータ・ブロックがデータ値であることを示すようにメモリに記憶された前記能力メタデータが設定されるようにさせるためのメモリ書き込みトランザクションを発行する、メモリ・コントローラをさらに備える、請求項１から４までのいずれか一項に記載の装置。
【請求項１６】
前記キャッシュ・ストレージ内へ又は前記キャッシュ・ストレージ外への前記データ・ブロックの転送に応答し、前記能力メタデータ修正マーカーの前記値が、前記データ・ブロックに関連する前記能力メタデータが変わったことを示すときに、修正されたものとして前記データ・ブロックが扱われるようにさせる、請求項１から１５までのいずれか一項に記載の装置。
【請求項１７】
前記キャッシュ・ストレージ内へ又は前記キャッシュ・ストレージ外への前記データ・ブロックの転送に応答し、データ修正マーカーが転送されないときに、
前記転送がより低いキャッシュ層へである場合には前記データ・ブロック及び能力メタデータ修正マーカーがクリーンとして扱われるようにさせ、
前記転送がより低いキャッシュ層へではない場合には前記データ・ブロック及び能力メタデータ修正マーカーが修正されたものとして扱われるようにさせる、請求項１から１６までのいずれか一項に記載の装置。
【請求項１８】
前記キャッシュ・ストレージ内へ又は前記キャッシュ・ストレージ外への前記データ・ブロックの転送に応答し、前記能力メタデータ修正マーカーが転送されないときに、
前記能力メタデータ修正マーカーの前記値がデータ修正マーカーから推論されるようにさせる、請求項１から１７までのいずれか一項に記載の装置。
【請求項１９】
前記キャッシュ・ストレージ内へ又は前記キャッシュ・ストレージ外への前記データ・ブロックの転送に応答して、
前記能力メタデータが転送されないときに、
データ修正マーカー及び前記能力メタデータ修正マーカーが両方とも修正されていないことを示す場合は、データ値を指定するものとして前記データ・ブロックを識別するものとして前記能力メタデータを前記転送の目標に扱わせ、
前記データ修正マーカー及び前記能力メタデータ修正マーカーが両方とも修正されていることを示す場合は、データ値を指定するものとして前記データ・ブロックを識別するものとして前記能力メタデータを前記転送の前記目標に扱わせ、
前記データ修正マーカーは修正されたことを示し、前記能力メタデータ修正マーカーは修正されていないことを示す場合は、前記転送の前記目標に前記能力メタデータ修正マーカーのローカル・コピーを有効として扱わせる、請求項１から１８までのいずれか一項に記載の装置。
【請求項２０】
前記キャッシュ・ストレージ内へ又は前記キャッシュ・ストレージ外への前記データ・ブロックの転送に応答して、
前記能力メタデータが転送されたときに、
前記データ修正マーカー及び前記能力メタデータ修正マーカーが両方とも修正されていないことを示す場合又は前記データ修正マーカー及び前記能力メタデータ修正マーカーが両方とも修正されていることを示す場合に、前記転送の目標に前記能力メタデータを有効として扱わせ、
前記データ修正マーカーが修正されたことを示し、前記能力メタデータ修正マーカーが修正されていないことを示す場合に、前記転送の前記目標に
前記能力メタデータの前記ローカル・コピーを修正しないこと、
前記能力メタデータの前記ローカル・コピーを更新すること、又は、
前記能力メタデータの前記ローカル・コピーが前記転送された能力メタデータとは異なるときにはエラーを報告すること
のうちの１つを実行させること、
を行う、請求項１から１９までのいずれか一項に記載の装置。
【請求項２１】
請求項１から２０までのいずれか一項に記載の装置に対応する命令実行環境を提供するようにホスト・データ処理装置を制御するためのプログラム命令を含む、仮想マシン・コンピュータ・プログラム。
【請求項２２】
請求項２１に記載の前記仮想マシン・コンピュータ・プログラムを記憶するコンピュータ可読記憶媒体。
【請求項２３】
キャッシュ・ストレージを動作させる方法であって、
前記キャッシュ・ストレージにデータ・ブロックを記憶するステップと、
各データ・ブロックが能力を指定するかデータ値を指定するかを識別する前記各データ・ブロックに関連して能力メタデータを記憶するステップであって、少なくとも１つのタイプの能力が有界ポインタである、ステップと、
前記キャッシュ・ストレージに記憶されたデータ・ブロックへの書き込みに応答して、前記データ・ブロックに関連して能力メタデータ修正マーカーを設定するステップであって、前記データ・ブロックに関連する前記能力メタデータが、前記データ・ブロックが前記キャッシュ・ストレージに記憶された以後に、変わったかどうかを前記能力メタデータ修正マーカーの値が示す、ステップと、を含む、方法。
【請求項２４】
データ・ブロックをキャッシュするための手段と、
各データ・ブロックが能力を指定するかデータ値を指定するかを識別する前記各データ・ブロックに関連して能力メタデータを記憶するための手段であって、少なくとも１つのタイプの能力が有界ポインタである、手段と、
データ・ブロックへの書き込みに応答して、前記データ・ブロックをキャッシュするための手段に記憶されたデータ・ブロックに関連して能力メタデータ修正マーカーを設定するための手段であって、前記能力メタデータ修正マーカーの値が、前記データ・ブロックに関連する前記能力メタデータは、前記データ・ブロックをキャッシュするための手段に前記データ・ブロックが記憶された以後に、変わったかどうかを示す、手段と、を備える、装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、能力メタデータを管理するための装置及び方法に関する。
【背景技術】
【０００２】
能力ベースのアーキテクチャでは、ある種の能力が所与のプロセスのために定義され、定義された能力外の動作を実行しようとする試みが存在する場合、エラーがトリガされ得る。能力は、様々な形を取ることができるが、１つのタイプの能力は、有界ポインタ（「太いポインタ」とも呼ばれる）である。有界ポインタでは、ポインタ値は、たとえば、アクセスされることになるデータ値のアドレス又は実行されることになる命令を識別することができる、或いはこれを決定するために使用することができる。しかしながら、ポインタ値はまた、ポインタ値を使用するときのアドレスの許容範囲を示す関連範囲情報を有し得る。これは、ポインタから決定されたアドレスが、セキュリティ又はビヘイビアの機能的正確性を維持するために、ある特定の境界内に留まることを確実にするのに有用になり得る。加えて、ある特定の許可／制約情報が、有界ポインタのポインタ値に関連して指定され得る。有界ポインタの範囲情報及び任意の許可／制約情報は、能力情報と呼ばれることもあり、有界ポインタ（その関連能力情報を含む）などの能力ベースのアーキテクチャにおいて、能力と呼ばれることもある。能力メタデータは、装置の記憶素子に記憶されたデータに関連して記憶され得る。能力メタデータは、関連データ・ブロックが能力を指定するか又は能力を表さないデータ（本明細書では汎用データとも呼ばれる）を代わりに含むかを識別するために使用することができる。能力メタデータはまた、ある種の追加の情報を指定することができる。指定されたデータにアクセスするとき、関連能力メタデータが、データ・ブロックが能力又は汎用データを表すかどうかを判定するために、参照され得る。能力ベースのアーキテクチャを用いるシステムの記憶素子内の能力メタデータを管理するための改良された機構を実現する必要性がそこには残っている。
【発明の概要】
【課題を解決するための手段】
【０００３】
本明細書に記載の１つの実例では、データ・ブロックを記憶するためのキャッシュ・ストレージを備えた装置が提供され、各データ・ブロックは、前記各データ・ブロックが能力を指定するかデータ値を指定するかを識別することに関連して記憶された能力メタデータを有し、少なくとも１つのタイプの能力は、データ・ブロックに関連して能力メタデータ修正マーカーを設定するためのキャッシュ・ストレージに記憶されたデータ・ブロックへの書き込みに応答する有界ポインタ及びキャッシュ制御回路であり、その能力メタデータ修正マーカーの値は、データ・ブロックに関連する能力メタデータが、データ・ブロックがキャッシュ・ストレージに記憶された以後に、変わったかどうか、を示す。
【０００４】
本明細書に記載の１つの実例では、キャッシュ・ストレージにデータ・ブロックを記憶するステップ、少なくとも１つのタイプの能力が有界ポインタである、各データ・ブロックが能力を指定するかデータ値を指定するかを識別する前記各データ・ブロックに関連して能力メタデータを記憶するステップ、能力メタデータ修正マーカーの値が、データ・ブロックに関連する能力メタデータは、データ・ブロックがキャッシュ・ストレージに記憶された以後に、変わったかどうかを示す、キャッシュ・ストレージに記憶されたデータ・ブロックへの書き込みに応答して、データ・ブロックに関連して能力メタデータ修正マーカーを設定するステップ、を含む、キャッシュ・ストレージを動作させる方法が提供される。
【０００５】
本明細書に記載の１つの実例では、データ・ブロックをキャッシュするための手段、少なくとも１つのタイプの能力が有界ポインタである、各データ・ブロックが能力を指定するかデータ値を指定するかを識別する前記各データ・ブロックに関連して能力メタデータを記憶するための手段、能力メタデータ修正マーカーの値は、データ・ブロックに関連する能力メタデータが、データ・ブロックがデータ・ブロックをキャッシュするための手段に記憶された以後に、変わったかどうかを示す、データ・ブロックへの書き込みに応答して、データ・ブロックをキャッシュするための手段に記憶されたデータ・ブロックに関連して能力メタデータ修正マーカーを設定するための手段を備えた装置が提供される。
【０００６】
単に例として、以下のような添付の図面に示すような実施例を参照して、本発明についてさらに説明する。
【図面の簡単な説明】
【０００７】
【図１】１つの実施例による装置を概略的に示す図である。
【図２】有界ポインタ記憶素子のセット内のポインタ値を設定する又はこれにアクセスする試みが存在する場合にエラーがトリガされ得る命令のタイプの実例を示し、そのポインタ値は、関連範囲情報によって指示される範囲外のアドレスを指定するために使用される、図である。
【図３】１つの実施例による、有界ポインタに関連する能力タグ・ビットの使用を示す図である。
【図４】１つの実施例による、関連能力メタデータ情報とともに、有界ポインタの形をとる能力内で提供される様々なフィールドを概略的に示す図である。
【図５Ａ】１つの実施例による、２つの値が関連能力メタデータ及び能力タグ・ダーティ・ビットとともに記憶される例示的キャッシュ・ラインを示す図である。
【図５Ｂ】１つの実施例による、キャッシュ・ライン内の各能力タグの関連能力メタデータ及び能力タグ・ダーティ・ビットを有する２つの値を記憶する例示的キャッシュ・ラインを示す図である。
【図５Ｃ】１つの実施例による、キャッシュ・ラインに記憶された値が書き込み動作によって更新されるときにキャッシュ・ライン内の能力タグ・ダーティ・ビットを更新するために使用される回路を概略的に示す図である。
【図６】１つの実施例による、２つのレベルのキャッシュ・ストレージ、メモリ・コントローラ、能力テーブル・キャッシュ、及びメモリを備えた１つの実施例における装置を概略的に示す図である。
【図７Ａ】データ書き込みトランザクションが能力メタデータを含むべきかどうかを決定するために１つの実施例において施されるステップのシーケンスを示す図である。
【図７Ｂ】能力タグ・ダーティ・ビットの値に基づいてデータ書き込みトランザクションにおける能力メタデータの包含を抑制するための回路の実例を示す図である。
【図８】１つの実施例による、メモリからの能力タグ・テーブルのラインを記憶するための一時的な能力タグ・テーブル・キャッシュの使用と、削除及びロードによるそれらの更新とを示す図である。
【図９】１つの実施例による、キャッシュ・ラインに記憶された値に関連する能力タグが更新されるときに、能力タグ・ダーティ・ビットを更新するためにキャッシュにおいて施されるステップのシーケンスを示す図である。
【図１０】１つの実施例による、能力タグ・ダーティ・ビット情報及び能力タグ・テーブル・キャッシュに記憶された能力タグ・ビットに基づいて、メモリ・アクセスが受け付けられるときにメモリ・コントローラによって施されるステップのシーケンスを示す図である。
【図１１】１つの実施例による、データ及び能力タグ・クリーン／ダーティ状態を判定するために、これらが、転送されたデータに関連して、完全に提供される、部分的に提供される、又は提供されないときに、データがキャッシュ内に又はキャッシュ外に転送されるときに施されるステップのシーケンスを示す図である。
【図１２】１つの実施例による、データ及び能力タグ・クリーン／ダーティ状態を判定するために、これらが、転送されたデータに関連して、完全に提供される、部分的に提供される、又は提供されないときに、データがキャッシュ内に又はキャッシュ外に転送されるときに施されるステップのシーケンスを示す図である。
【図１３】１つの実施例による、データ及び能力タグ・クリーン／ダーティ状態を判定するために、これらが、転送されたデータに関連して、完全に提供される、部分的に提供される、又は提供されないときに、データがキャッシュ内に又はキャッシュ外に転送されるときに施されるステップのシーケンスを示す図である。
【図１４】図１１から１３において参照された状態の組合せを部分的に要約するテーブルを示す図である。
【図１５】使用され得る仮想マシン環境を示す図である。
【発明を実施するための形態】
【０００８】
そこに示された特定の実施例を説明するために図を参照する前に、実施例の説明を以下に提供する。
【０００９】
前述のように、能力ベースのアーキテクチャにおいて、ある種の能力が所与のプロセスのために定義され、定義された能力外の動作を実行しようとする試みが存在する場合に、エラーがトリガされ得る。様々なタイプの能力が定義され得るが、１つのタイプの能力は有界ポインタである（１つの実施例では、ポインタ値と関連範囲情報及び許可情報との両方を組み込む）。そのような能力ベースのアーキテクチャを適用する装置は、一般に、値が能力を表すか又はそうではなく汎用データを表すかを識別するために、メモリに記憶された値並びに記憶された各値に関連して提供される能力メタデータにアクセスすることになる。したがって、「値」という用語は、一般的に能力又はデータ値のいずれかを参照するために本明細書において使用され、区別が必要とされる場合に「能力」又は「データ値」という用語が使用されることが理解されよう。さらに、異なる実施例では、「データ・ブロック」は異なる情報の粒度に対応し得ることも理解されたい。たとえば、ある極端な場合には、データ・ブロックは、アーキテクチャにおいて参照することができるビットの最小グループが能力を表すか又はそうではなく汎用データを表すかを示す能力メタデータの関連項目を有し、そのグループに対応し得る。反対に、他の実施例では、データ・ブロックは、そのグループが能力を表すか又はそうではなく汎用データを表すかを示す能力メタデータの関連項目を有し、ビットの任意に定義された大きなグループに対応し得る。ある種の命令が、それの能力メタデータを用いて能力として記憶及びラベル付けされた値を参照するために、並びにその能力に依存する動作を実行するために、使用され得る。たとえば、有界ポインタを考えると、そのような命令の実行は、境界ポインタを取得させることができ、そこにあるポインタ値が、次いで、命令の実行中に必要とされるメモリ内のアドレスを導出するために使用される。ポインタ値は、メモリ・アドレスを識別するために直接使用することができ、又は、たとえばポインタ値へのオフセットの追加によって、メモリ・アドレスを導出するために使用することができる。動作は、そのメモリ・アドレスが範囲情報によって指定された範囲内にあり、許可情報において指定された任意の許可が満たされることを条件として、続行することを許されることになる。
【００１０】
具体的には、１つの実施例において、キャッシュ・ストレージを備える装置が提供され、ここで、キャッシュ・ストレージに関連するキャッシュ制御回路は、キャッシュ・ストレージに記憶されたデータ・ブロックに関連して能力メタデータ修正マーカーを管理し、能力メタデータ修正マーカーは、データ・ブロックがキャッシュ・ストレージに記憶された以後に能力メタデータ（すなわち、データ・ブロックが能力を指定するかデータ値を指定するかを指示する）が修正されたかどうかを示すために使用される。そのデータ項目はキャッシュされた以後に修正されたかどうかを示すためにキャッシュされたデータ項目に関連して記憶され得るデータ「ダーティ」ビットに対する類似性によって、能力メタデータ修正マーカーは、本明細書において、能力タグ「ダーティ」ビットとも称される。能力を指定するデータ・ブロックとデータ値を指定するデータ・ブロックとの機能の有意差により、これらの２つのタイプのデータ・ブロックの慎重な区別が、一般に、装置において、因ってそのようなデータ・ブロックがキャッシュされるときにもまた、必要とされる。能力メタデータ修正マーカーの提供は、具体的には、たとえば問題のデータ値にアクセスするために使用される能力から継承された許可を用いて、１つのタイプから他のタイプへの修正が意図されずに起こり得ないように、これをサポートするが、関連付けられた能力メタデータを有するそのようなデータ・ブロックの記憶に関して効率性が得られ得ることもさらに実現する。この後者の特徴の１つの実例は、ストレージに対する別個のアクセスをたとえば必要とし得る、データ・ブロック及びそれらの関連能力メタデータが別個に記憶される場合に、生じ得る。所与のストレージ・ブロックに関連する能力メタデータが、データ・ブロックがキャッシュ・ストレージに記憶された以降、変化したかどうかを知ることは、たとえば、ストレージに対して行われるアクセスを少なくすることができる。
【００１１】
データ項目がキャッシュされた以後に修正されたかどうかを指示するためにキャッシュされたデータ項目に関連して記憶され得るデータ「ダーティ」ビットを再び参照すると、実際には、データ項目に対する書き込みが起こったかどうかを単に追跡することが、そのようなキャッシュ・ダーティ・ビットの実装形態に共通であることに留意されたい。言い換えれば、この手法は、データ項目が前に有した値を書き直すデータ項目に対する書き込みと、データ項目が前に有した値に異なる値を書き込むデータ項目に対する書き込みとを区別しない。これは、実際の変更が起きたかどうかを確かめるためにすべてのデータ・ビットをチェックすることは、通常、コストがかかり過ぎる（またその価値がない）ためである。しかしながら、本技法によれば、比較的少ない能力メタデータ・ビットが通常存在することになることが期待され、したがって、それらのビットが実際に変わったかどうかをチェックすることは遥かに実行可能である。さらにまた、メモリのデータ・ブロックは長期間に亘りその現在の使用（データ又は能力）を通常は保持することになることが期待される。それにも関わらず、能力メタデータ修正マーカーの値が、データ・ブロックがキャッシュ・ストレージに記憶された以後にこのデータ・ブロックに関連する能力メタデータが書き込まれたかどうかを示す（データ・ブロックが実際に変化したかどうかは検査せずに）実施例も提案されている。
【００１２】
能力メタデータ修正マーカーとデータ・ブロックとの対応は、システム要件に応じて、様々に構成され得る。一部の実施例では、１つの能力メタデータ修正マーカーは、前記データ・ブロックを含む複数のデータ・ブロックに対応する。キャッシュに記憶されたデータに関する様々な粒度のレベルが意図されているが、一部の実施例では、データ・ブロックに関連してキャッシュ制御回路によって設定される能力メタデータ修正マーカーは、キャッシュ・ストレージ内の各キャッシュ・ラインのための単一のビットである。他の実施例は、能力メタデータ修正マーカーの異なる粒度を有することができ、すなわち、各々が少数のデータ・ブロックのみに対応する、又は各々が多数のデータ・ブロックに対応する。一部の実施例では、データ・ブロックに関連して設定された能力メタデータ修正マーカーが前記データ・ブロックとの１対１の対応を有するような、各データ・ブロックの能力メタデータ修正マーカーが存在する。
【００１３】
能力メタデータ修正マーカーによって提供された情報は、様々な形で使用され得るが、一部の実施例では、装置は、能力メタデータ修正マーカーの値が、指定されたデータ・ブロックがキャッシュ・ストレージに記憶された以後に能力メタデータは変わっていないことを示すとき、キャッシュ・ストレージからさらなるストレージ・レベルへの指定されたデータ・ブロック及び関連能力メタデータについての受信された書き込みトランザクションに応答して関連能力メタデータ及びさらなるストレージ・レベルに関する書き込みトランザクションを抑制するメモリ・コントローラをさらに備える。したがって、指定されたデータ・ブロックのそのような書き込みトランザクションを処理するときに、メモリ・コントローラは、能力メタデータが変わらなかったことが知られた場合、書き込みトランザクションの目標であるストレージにおいてそれの関連能力メタデータが更新される必要がないことを識別することができる。言い換えれば、能力がキャッシュに記憶され、修正された可能性があるが、能力のままである場合、或いは反対に、データ値がキャッシュ・ストレージに記憶されてあり、修正されたが、データ値のままである場合、「値」自体のみが、目標ストレージへの書き込みトランザクションによる更新を必要とし、関連能力メタデータは必要としない。
【００１４】
トランザクションの目標であるさらなるストレージは、様々な形をとり得るが、一部の実施例では、メモリ・ストレージである。他の実施例では、それは、さらなるキャッシュ・ストレージ・レベルでもよい。さらなるストレージがメモリ・ストレージである場合、書き込みトランザクションは、メモリ・ストレージ内の関連能力メタデータに関する読み取り−修正−書き込みトランザクションでもよい。したがって、そのような読み取り−修正−書き込みトランザクションが、目標能力メタデータが修正されなかったことを知ることによって、回避され得る場合、関連能力メタデータ・ストレージの記憶に対する２つの別個の読み取り及び書き込みトランザクションが回避され得る。
【００１５】
一部の実施例では、特に能力メタデータのためのキャッシュ・ストレージがさらに提供され得、これはキャッシュ・ストレージより高いメモリ階層レベル（すなわち、キャッシュ・ストレージとメモリとの間）において提供されて、メモリ内の能力メタデータへのアクセスに関連するレイテンシの回避をさらにサポートする。そのような実施例では、メモリ・コントローラは、能力メタデータ・キャッシュ・ストレージ内にキャッシュされた能力メタデータを参照してメモリへのアクセスが必要かどうかを判定し、具体的には、必要な能力メタデータは、少なくとも１つのデータ・ブロックがキャッシュ・ストレージに記憶された以後に、変わらなかったことを能力メタデータ修正マーカーが示すときに、そのようなアクセスを回避することができる。したがって、一部の実施例では、装置は、キャッシュ・ストレージより高いメモリ階層レベルにおいて能力メタデータを記憶するための能力メタデータ・キャッシュ・ストレージをさらに備え、メモリ・コントローラは、少なくとも１つのデータ・ブロックについてのメモリ・アクセス・トランザクションに応答して、少なくとも１つのデータ・ブロックに関連する必要な能力メタデータを返し、メモリ・コントローラは、必要な能力メタデータが能力メタデータ・キャッシュ・ストレージに記憶されていないときに、少なくとも１つのデータ・ブロックについてのメモリ・アクセス・トランザクションに応答して、少なくとも１つのデータ・ブロックに関連する能力メタデータ修正マーカーの値が、必要な能力メタデータは、少なくとも１つのデータ・ブロックがキャッシュ・ストレージに記憶された以後に、変わらなかったことを示さない限り、能力メタデータ・キャッシュ・ストレージからの現在記憶されている能力メタデータの削除及び能力メタデータ・キャッシュ・ストレージ内への必要な能力メタデータの取得を開始する。
【００１６】
能力メタデータは、能力メタデータ・キャッシュ・ストレージに様々な形で記憶され得るが、能力メタデータ・キャッシュ・ストレージに記憶された１ビットが、能力メタデータの複数のビットのいずれかが設定されているか否かを示し得る、コンパクトなストレージ・フォーマットが実現され得る。したがって、これが事実であるメモリの有意の隣接チャンクが存在し得ることが期待されて以後、ストレージに対する単一のアクセスのみがメモリ・アクセス・トランザクションを実装するために必要とされ得る能力メタデータ・キャッシュ・ストレージ内の情報を用いて、すなわち、少なくとも１つのデータ・ブロックにアクセスすること及び対応する能力メタデータにアクセスする必要性を省くことのみによって、そのようなセクションを識別したとき、これは、実際のメモリに記憶された対応するデータがデータ値のみを含む（能力は含まない）かどうかをそれにより迅速に識別することができる機構を提供する。
【００１７】
実際には、能力メタデータ・キャッシュ・ストレージに記憶される情報は、階層的に記憶され得る、たとえば、そこでは、能力メタデータのテーブルが、様々な粒度でメモリに記憶され、能力メタデータ・キャッシュ・ストレージは、通常ライン・ベースのキャッシング構造においてテーブルのラインを保持することができる。そのとき、これらのテーブルのうちの１つのテーブル内の各ビットは、たとえば、より低いレベルのテーブル内ではビットの隣接するセットのいずれかが設定され、最も低いレベルのテーブル内では各ビットが個々の能力メタデータ・タグを表すことができるかどうかを表すことができる。したがって、そのような能力メタデータ・キャッシュ・ストレージが存在するとき、能力メタデータ修正マーカーは、能力メタデータの適切なラインが能力メタデータ・キャッシュ内にあることを確実にする（能力メタデータ情報の高速の読み取り又は書き込みを可能にする）必要性をメモリ・コントローラが回避することを可能にする。ラインが存在しなかった場合、能力メタデータ・ビットを含むライン、そしてまた（この情報の前述の階層レベルのキャッシュ・ストレージが能力メタデータ・キャッシュ・ストレージにおいて使用される場合に）より粗い粒度の能力メタデータテーブル情報を表すさらなるラインがその後に続く、メモリに対する可能な書き戻しで能力メタデータ・キャッシュから既存のラインを削除すること、次に、キャッシュから有用な情報を削除し、場合により書き戻しすることを必要とすることになろう。しかしながら、能力メタデータ修正情報が入手可能である場合、そのとき、能力メタデータはメモリからの読み取り以降に変わらなかったという指示は、次いで、能力メタデータ・キャッシュ・コンテンツに対する変更を必要としないことになる。
【００１８】
しかしながら、所与のキャッシュ・ライン内に、より細かい粒度の情報が存在してもよく、能力メタデータ修正マーカーは、キャッシュ・ラインのそれぞれの部分のために提供され得る。したがって、一部の実施例では、キャッシュ・ストレージは、キャッシュ・ラインにデータ・ブロックを記憶する能力を有し、データ・ブロックに関連してキャッシュ制御回路によって設定された能力メタデータ修正マーカーは、キャッシュ・ストレージ内の各キャッシュ・ラインの複数のビットのうちの１つであり、各キャッシュ・ラインの複数のビットのうちの各ビットは、前記キャッシュ・ラインのそれぞれの部分の能力メタデータが、前記キャッシュ・ラインのそれぞれの部分がキャッシュ・ストレージに記憶された以後に、変わったかどうか、を示す。それぞれがラインの部分を表す、キャッシュ・ラインごとに提供されているそのような複数の能力タグ・ダーティ・ビットは、キャッシュ・ラインのそれぞれの部分について提供される同粒度のデータ・ダーティ・ビットまで提供され得る。したがって、一部の実施例では、キャッシュ制御回路は、データ・ブロック部分に関連してデータ修正マーカーを記憶するために、キャッシュ・ストレージに記憶されたデータ・ブロックへの書き込みに応答し、データ修正マーカーの値は、データ・ブロックがキャッシュ・ストレージに記憶された以後に、データ・ブロック部分が書き込まれたかどうか、を示し、能力メタデータ修正マーカーに対応する前記キャッシュ・ラインのそれぞれの部分は、データ・ブロック部分と少なくとも同じ大きさである。前述の解説に従って、実際に変化が起きたかどうかを確かめるためにすべてのデータ・ビットをチェックするのは、通常、コストがかかり過ぎる（そして、その価値がない）ため、このデータ・ブロック部分が書き込まれたかがモニターされる（そして、データ・ブロック部分が実際に変更された場合はモニターされない）ことに留意されたい。
【００１９】
前述のように、装置内に用意されたメモリ・コントローラは、メモリに対するある種のアクセスを回避するために、指定されたデータ・ブロックに関連して記憶された能力メタデータが、その指定されたデータ・ブロックがキャッシュ・ストレージに（メモリから）記憶された以後に、変わらなかったことを示す能力メタデータ修正マーカーの値を活用することができる。しかしながら、本技法はさらに、能力メタデータの正しい管理に関してさらなるレベルのセキュリティを提供するために、及び具体的には、偽の能力が、同じメモリ空間に関して動作する複数のエージェントによって「偽造」され得ないことを確実にするために、一部の実施例において、複数のエージェントが、これが起き得ないことを確実にするために、同じメモリ空間にアクセスすることができる、ステップが施され得ることを提案する。
【００２０】
したがって、一部の実施例では、装置はさらに、指定されたデータ・ブロックに関連して記憶された能力メタデータは、それがデータ値であることを示し、そして、能力メタデータ修正マーカーの値は、指定されたデータ・ブロックに関連して記憶された能力メタデータが、その指定されたデータ・ブロックがキャッシュ・ストレージに記憶された以後に、変わらなかったことを示すときに、キャッシュ・ストレージからさらなるストレージ・レベルへの指定されたデータ・ブロック及び関連能力メタデータについての受信された書き込みトランザクションに応答してメモリ書き込みトランザクションを発行し、メモリに記憶された能力メタデータを、指定されたデータ・ブロックがデータ値であることを示すように、アクティブに設定される、メモリ・コントローラを備える。したがって、たとえ、能力は変わらなかったことが（能力メタデータ修正マーカーの値のおかげで）知られても、それでもなお、指定されたデータ・ブロックがデータ値である（本明細書に記載の実施例では、値が０であるときだが、これは任意の実装形態選択として認識されることになる）ことを示すそれの値に能力メタデータを明示的にセット（又は、そうではなくリセット）するように選択されてもよく、その結果、指定されたデータ・ブロックがデータ値を保持すべき場合、それが、不注意で又は悪意を持って能力を偽造するために、同じ記憶場所（しかし、異なるエージェント）との複数の相互作用によって更新され得ないことを確実にする。たとえば、エージェントＡが、（能力ではなくデータを示す）設定されていない関連能力タグを有するメモリからのデータを読み取り、エージェントＢが、次に、同じ場所に能力を書き込み、まだ設定されていない能力タグを有する（そして、修正されていないとしてマークを付けられた能力タグを有する）エージェントＡからのデータの削除がこれに続く場合、次いで、エージェントＡからの書き込み上のタグを消去しないことをメモリ・コントローラが選択しようとした場合、これは、Ａデータ及びＢタグから能力が偽造されることを可能にすることになろう。表示データにおいて能力メタデータを明示的にリセットすることは、これを回避することができることを示す。
【００２１】
これに対する別の手法が、一部の実施例で提供され、そこでは、指定されたデータ・ブロックに関連して記憶された能力メタデータがそれはデータ値であることを示すときに、並びに、別のエージェントが、指定されたデータ・ブロックがキャッシュ・ストレージに記憶された以後に、指定されたデータ・ブロック及びメモリ内の関連能力メタデータのうちの少なくとも１つに対する書き込みアクションを実行したことを示す信号をメモリ・コントローラが受信したときに、キャッシュ・ストレージからさらなるストレージ・レベルへの指定されたデータ・ブロック及び関連能力メタデータについての受信された書き込みトランザクションに応答して、指定されたデータ・ブロックはデータ値であることを示すようにメモリに記憶された能力メタデータをアクティブに設定させるためのメモリ書き込みトランザクションを発行する、メモリ・コントローラを、装置はさらに備える。したがって、別のエージェントが同じ記憶場所に書き込みアクションを実行したことが明示的に知られた場合、それが、指定されたデータ・ブロックがデータ値であることを示すようにリセットされることを確実にするための能力メタデータの明示的リセットが、そのような能力偽造の可能性を回避するために、実行され得る。他の手法は、エージェントＡ及びエージェントＢが同じ記憶場所にアクセスすることを禁止することを含み得る。
【００２２】
本技法はさらに、データ・ブロックがキャッシュ・ストレージ内に又は外に転送されるとき、いくつかの実施例では能力メタデータ修正マーカー及び／又はデータ修正マーカーも転送しなくてもよいことを意図している。言い換えれば、キャッシュにおいてデータ・ブロックに関連して記憶され得る能力タグ・ダーティ・ビット及び／又はデータ・ダーティ・ビットは、それが転送される（キャッシュ内へ又はキャッシュ外へのいずれでも）とき、データ・ブロックと移動しなくてもよい。この状況において、ある種の制約が、能力メタデータ修正マーカー及び／又はデータ修正マーカー（能力タグ・ダーティ・ビット及び／又はデータ・ダーティ・ビット）がそうであると仮定されるものに関して転送の目標に課され得る。
【００２３】
一部の実施例では、装置は、キャッシュ・ストレージ内へ又はキャッシュ・ストレージ外へのデータ・ブロックの転送に応答し、データ・ブロックに関連する能力メタデータが変わったことを能力メタデータ修正マーカーの値が示すときに、修正されたものとしてデータ・ブロックが扱われるようにさせる。
【００２４】
一部の実施例では、装置は、キャッシュ・ストレージ内へ又はキャッシュ・ストレージ外へのデータ・ブロックの転送に応答し、データ修正マーカーが転送されないときに、転送がより低いキャッシュ層へである場合にはデータ・ブロック及び能力メタデータ修正マーカーがクリーンとして扱われるようにさせ、転送がより低いキャッシュ層へではない場合にはデータ・ブロック及び能力メタデータ修正マーカーが修正されたものとして扱われるようにさせる。
【００２５】
一部の実施例では、装置は、キャッシュ・ストレージ内へ又はキャッシュ・ストレージ外へのデータ・ブロックの転送に応答し、能力メタデータ修正マーカーが転送されないときには、能力メタデータ修正マーカーの値がデータ修正マーカーから推論されるようにさせる。
【００２６】
一部の実施例では、装置は、キャッシュ・ストレージ内へ又はキャッシュ・ストレージ外へのデータ・ブロックの転送に応答し、能力メタデータが転送されないときに、データ修正マーカー及び能力メタデータ修正マーカーが両方とも修正されていないことを示す場合は、データ値を指定するものとしてデータ・ブロックを識別するものとして能力メタデータを転送の目標に扱わせ、データ修正マーカー及び能力メタデータ修正マーカーが両方とも修正されていることを示す場合は、データ値を指定するものとしてデータ・ブロックを識別するものとして能力メタデータを転送の目標に扱わせ、データ修正マーカーは修正されたことを示し、能力メタデータ修正マーカーは修正されていないことを示す場合は、転送の目標に能力メタデータ修正マーカーのローカル・コピーを有効として扱わせる。
【００２７】
一部の実施例では、装置は、キャッシュ・ストレージ内へ又はキャッシュ・ストレージ外へのデータ・ブロックの転送に応答して、能力メタデータが転送されるときに、データ修正マーカー及び能力メタデータ修正マーカーが両方とも修正されていないことを示す場合又はデータ修正マーカー及び能力メタデータ修正マーカーが両方とも修正されていることを示す場合には、転送の目標に能力メタデータを有効として扱わせ、データ修正マーカーが修正されたことを示し、能力メタデータ修正マーカーが修正されていないことを示す場合に、転送の目標に次のうちの１つを実行させる：能力メタデータのローカル・コピーを修正しないこと、能力メタデータのローカル・コピーを更新すること、又は、能力メタデータのローカル・コピーが転送された能力メタデータとは異なるときにはエラーを報告すること。
【００２８】
一部の実施例では、以下のステップを含むキャッシュ・ストレージを動作させる方法が提供される：キャッシュ・ストレージにデータ・ブロックを記憶するステップと、各データ・ブロックが能力を指定するかデータ値を指定するかを識別する前記各データ・ブロックに関連して能力メタデータを記憶するステップであって、少なくとも１つのタイプの能力は有界ポインタである、ステップと、キャッシュ・ストレージに記憶されたデータ・ブロックへの書き込みに応答して、データ・ブロックに関連して能力メタデータ修正マーカーを設定するステップであって、データ・ブロックに関連する能力メタデータが、データ・ブロックがキャッシュ・ストレージに記憶された以後に、変わったかどうかを能力メタデータ修正マーカーの値が示す、ステップ。
【００２９】
一部の実施例では、以下を備える装置が提供される：データ・ブロックをキャッシュするための手段と、各データ・ブロックが能力を指定するかデータ値を指定するかを識別する前記各データ・ブロックに関連して能力メタデータを記憶するための手段であって、少なくとも１つのタイプの能力が有界ポインタである、手段と、データ・ブロックへの書き込みに応答して、データ・ブロックをキャッシュするための手段に記憶されたデータ・ブロックに関連して能力メタデータ修正マーカーを設定するための手段であって、データ・ブロックに関連する能力メタデータが、データ・ブロックをキャッシュするための手段にデータ・ブロックが記憶された以後に、変わったかどうかを能力メタデータ修正マーカーの値が示す、手段。
【００３０】
ここで、図を参照して、いくつかの具体的な実施例について説明する。
【００３１】
図１は、命令を処理するための処理パイプライン４を備えたデータ処理装置２の実例を概略的に示す。この実例では、処理パイプライン４は、フェッチ・ステージ６、デコード・ステージ８、発行ステージ１０、実行ステージ１２、及び書き戻しステージ１４を含む、いくつかのパイプライン・ステージを含むが、他のタイプのステージ又はステージの組合せが提供され得ることが理解されよう。たとえば、レジスタ名前変更を実行するための名前変更ステージが、一部の実施例では、含まれ得る。処理されることになる命令は、ステージからステージに移動し、ある命令が１つのステージで保留中の間に、別の命令がパイプライン４の異なるステージにおいて保留になり得る。
【００３２】
フェッチ・ステージ６は、レベル１（Ｌ１）命令キャッシュ２０から命令をフェッチする。フェッチ・ステージ６は、通常、連続的命令アドレスから連続して命令をフェッチすることができる。しかしながら、フェッチ・ステージはまた、分岐命令の結果を予測するための分岐予測能力（明示的に図示されていない）も有し、フェッチ・ステージ６は、分岐が取られると予測された場合には（不連続の）分岐目標アドレスから、或いは分岐が取られないと予測された場合には次の連続的アドレスから、命令をフェッチすることができる。フェッチされた命令は、デコードされた命令を生成するために、命令をデコードするデコード・ステージ８に渡される。デコードされた命令は、適切な処理動作を実行するように実行ステージ１２を制御するための制御情報を含み得る。キャッシュ２０からフェッチされたいくつかのより複雑な命令について、デコード・ステージ８は、それらの命令を、マイクロオペレーション（μｏｐｓ又はｕｏｐｓ）として知られ得る複数のデコードされた命令にマップすることができる。故に、Ｌ１命令キャッシュ２０からフェッチされた命令とパイプラインのその後のステージによって見られるような命令との間に１対１の関係は存在しなくてもよい。一般に、本出願における「命令」の参照は、マイクロオペレーションを含むものとして解釈されるべきである。
【００３３】
デコードされた命令は、命令の実行のために必要とされるオペランドが使用可能であるかどうかを判定する、及びオペランドが使用可能であるときに実行するための命令を発行する、発行ステージ１０に渡される。いくつかの実施例は、命令がＬ１命令キャッシュ２０からフェッチされるプログラム順序に対応する順序で実行するために命令が発行されるように、順序正しい処理をサポートすることができる。他の実施例は、プログラム順序とは異なる順序で実行ステージ１２に対して命令が発行され得るように、順不同の実行をサポートすることができる。順不同の処理は、オペランドを待っている間に前の命令が停滞させられている間に、オペランドが使用可能なプログラム順序における後の命令を最初に実行することができるので、パフォーマンスの改善に有用になり得る。
【００３４】
発行ステージ１０は、様々なデータ処理動作を実行するために命令が実行される実行ステージ１２に対して命令を発行する。たとえば、実行ステージは、整数値に算術又は論理演算を実行するための算術／論理ユニット（ＡＬＵ：Ａｒｉｔｈｍｅｔｉｃ／Ｌｏｇｉｃ  Ｕｎｉｔ）３０と、浮動小数点形式で表された値に演算を実行するための浮動小数点演算（ＦＰ：Ｆｌｏａｔｉｎｇ−Ｐｏｉｎｔ）ユニット３２と、レベル１（Ｌ１）データ・キャッシュ３６からレジスタ４０にデータ値をロードするためのロード動作又はレジスタ４０からＬ１データ・キャッシュ３６にデータ値を記憶するための記憶動作を実行するためのロード／記憶ユニット３４とを含む、いくつかの実行ユニット３０、３２、３４を含み得る。これらは、提供することができる実行ユニットのタイプのほんの一部の実例であり、多数の他の種類もまた提供され得ることが、理解されよう。処理動作を実行するために、実行ステージ１２は、１セットのレジスタ４０からデータ値を読み取ることができる。実行された命令の結果は、次いで、書き戻しステージ１４によってレジスタ４０に書き戻すことができる。
【００３５】
Ｌ１命令キャッシュ２０及びＬ１データ・キャッシュ３６は、複数のレベルのキャッシュを含むキャッシュ階層の一部でもよい。たとえば、レベル２（Ｌ２）キャッシュ４４もまた提供され得、任意選択で、さらなるレベルのキャッシュが提供可能である。この実例では、Ｌ２キャッシュ４４は、Ｌ１命令キャッシュ２０とＬ１データ・キャッシュ３６との間で共用されるが、他の実例は、別個のＬ２命令及びデータ・キャッシュを有し得る。フェッチされることになる命令がＬ１命令キャッシュ２０内にないとき、その場合、命令はＬ２キャッシュ４４からフェッチすることができ、同様に、命令がＬ２キャッシュ４４内にない場合、そのとき、命令はメイン・メモリ５０からフェッチすることができる。同様に、必要に応じて、データがＬ１データ・キャッシュ３６内になく、メモリ５０からフェッチされる場合、ロード命令に応答して、データはＬ２キャッシュ４４からフェッチすることができる。任意の知られている方式が、キャッシュ階層の管理に使用され得る。Ｌ１データ・キャッシュ３６及びＬ２キャッシュ４４はまた、さらなる図を参照してさらに詳しく後述される、制御（ＣＴＲＬ）回路を備えるように示されている。
【００３６】
プログラム命令及びデータ値を参照するためにパイプライン４によって使用されるアドレスは仮想アドレスでもよいが、少なくともメイン・メモリ５０、及び任意選択で少なくともいくつかのレベルのキャッシュ階層もまた、物理的にアドレス指定され得る。変換索引バッファ（ＴＬＢ：Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋａｓｉｄｅ  Ｂｕｆｆｅｒ）（明示的に示されてはいない）は、パイプライン４によって使用される仮想アドレスをキャッシュ又はメモリにアクセスするために使用される物理アドレスに変換するために提供され得る。
【００３７】
図１に示すように、装置２は、１セットの有界ポインタ・レジスタ６０を有し得る。有界ポインタ・レジスタのセットは、汎用データ・レジスタ４０のセットとは物理的に別個なものとして図１には示されているが、１つの実施例では、同じ物理ストレージが、汎用データ・レジスタと有界ポインタ・レジスタとの両方を提供するために使用され得る。
【００３８】
各有界ポインタ・レジスタ６０は、アクセスされることになるデータ値のアドレスを決定するために使用され得るポインタ値６２と、対応するポインタ６２を使用するときにアドレスの許容範囲を指定する範囲情報６４とを含む。有界ポインタ・レジスタ６０はまた、ポインタの使用時の１つ又は複数の制約／許可を定義することができる制約情報６６（本明細書で許可情報とも呼ばれる）を含み得る。たとえば、制約６６は、ポインタ６２を使用することができる命令のタイプ、又はポインタを使用することができるパイプライン４のモードを制約するために使用することができる。これ故に、範囲情報６４及び制約情報６６は、その中でポインタ６２を使用することが許される能力を定義すると考えてもよい。定義された能力外でポインタ６２を使用する試みがなされたとき、エラーがトリガされ得る。範囲情報６４は、たとえば、ある種の知られている境界内にポインタが残り、機密又は安全情報を含み得るメモリ・アドレス空間の他のエリアに外れないことを確実にするために有用になり得る。一実施例において、同じ物理ストレージが、汎用データ・レジスタと有界ポインタ・レジスタとの両方に使用される場合、そのとき、１つの実施例において、ポインタ値６２は、たとえば、対応する汎用レジスタのために使用されるのと同じ記憶場所内に記憶され得る。
【００３９】
図２は、データ又は命令への不正アクセスから保護するために許容範囲が使用される命令のタイプの実例を示す。図２の最上部に示すように、特定の有界ポインタ・レジスタＰＲ１は、所与のポインタ値６２及び範囲情報６４を含み、範囲情報６４は、この実例では、許容範囲の下縁を定義する下縁アドレス６８及び許容範囲の上縁を定義する上縁アドレス６９を使用して指定される。たとえば、境界６８、６９は、アドレスの範囲８００００から８１０００を定義するように設定される。ある種の命令が有界ポインタ・レジスタＰＲ１を参照し、ポインタ６２から判定されたアドレスがこの範囲外であるとき、エラーがトリガされ得る。
【００４０】
たとえば、図２の部分Ａに示すように、いくつかのシステムでは、範囲情報６４によって指定された範囲外にある値にポインタ・レジスタ６０内のポインタ６２の値を設定しようとする試み（ここでは、ポインタはアドレスを直接指定すると仮定されている）がある場合に、エラーがトリガされ得る。これは、ポインタを使用する任意のアクセスが、許可された範囲内に安全に位置することが確保され得るように、指定された範囲外のいずれかの値をポインタ６２が取ることを回避させる。別法として、図２の部分Ｂに示すように、アドレスが指定された範囲外にあるときに、命令がポインタ６２のそのアドレスによって識別される場所にアクセスしようと試みるとき、エラーがトリガされ得る。これ故に、指定された範囲外の値にポインタ６２を設定することはまだ許容可能になり得るが、ポインタ・アドレス（又はポインタから導出されたアドレス）におけるデータアクセスが試みられると、次いで、アドレスが許可された範囲外にある場合、エラーがトリガされ得る。他のシステムは、図２の部分Ａ及びＢに示された両方のタイプの命令に応答して、エラーをトリガし得る。
【００４１】
範囲情報６４は、異なるやり方で設定することができる。たとえば、安全なコード、又はオペレーティング・システム若しくはハイパーバイザは、所与のポインタに許可された範囲を指定することができる。たとえば、命令セット・アーキテクチャは、所与のポインタ６２の範囲情報６４を設定又は修正するためのいくつかの命令を含むことができ、これらの命令の実行は、プロセッサ４のある種のソフトウェア又はある種のモード若しくは例外状況に制約され得る。範囲情報６４を設定又は修正するための任意の知られている技法を使用することができる。
【００４２】
ポインタを参照するある種の命令を実行するときに実行ステージ１２において使用され得る有界ポインタ記憶素子６０のセットに加えて、プログラム・カウンタ能力（ＰＣＣ：Ｐｒｏｇｒａｍ  Ｃｏｕｎｔｅｒ  Ｃａｐａｂｉｌｉｔｙ）レジスタ８０もまた、命令がレベル１命令キャッシュ２０からフェッチされているときにフェッチ・ステージ６において類似の機能を提供するために使用され得る。具体的には、プログラム・カウンタ・ポインタは、有界ポインタ記憶素子のセット６０においてそれぞれのポインタで与えられる範囲及び制約情報と類似の、範囲情報８４及び任意の適切な制約情報８６も提供するＰＣＣ８０で、フィールド８２に記憶され得る。
【００４３】
図３は、それらのデータ・ブロックが能力（すなわち、有界ポインタ及び関連する制約情報）を表すか又は通常のデータを表すかを識別するために、個々のデータ・ブロックに関連してタグ・ビットがどのように使用されるかを概略的に示す。具体的には、メモリ・アドレス空間１１０は、一連のデータ・ブロック１１５を記憶することになり、これは指定されたサイズを通常は有することになる。純粋に説明を目的として、この実例では、各データ・ブロックは１２８ビットを含むと仮定する。各データ・ブロック１１５に関連して、１つの実施例では、関連データ・ブロックが能力を表すことを識別するために設定され、関連データ・ブロックが通常のデータを表すことを示すために消去される、タグ・ビットと呼ばれる単一のビット・フィールドであり、故に能力として扱うことはできない、タグ・フィールド１２０が提供される。セット又は消去する状態に関連する実際の値は具体的実施例に応じて変化することができるが、純粋に例として、１つの実施例では、タグ・ビットが１の値を有する場合、それは、関連データ・ブロックが能力であることを示し、そして、それが０の値を有する場合、それは、関連データ・ブロックが通常のデータを含むことを示す、ことが理解されよう。
【００４４】
能力が、図３に示す能力レジスタ１００などの有界ポインタ・レジスタ６０（本明細書で能力レジスタとも呼ばれる）のうちの１つにロードされるとき、次いで、タグ・ビットは、能力情報と移動する。したがって、能力レジスタ１００に能力がロードされるとき、ポインタ１０２、範囲情報１０４及び制約情報１０６（以下、許可情報と称する）は、能力レジスタにロードされることになる。加えて、その能力レジスタに関連して、又はその中の特定のビット・フィールドとして、タグ・ビット１０８は、コンテンツが能力を表すことを識別するように設定されることになる。同様に、能力がメモリに記憶し戻されるとき、関係するタグ・ビット１２０は、能力が記憶されるデータ・ブロックに関連して設定されることになる。そのような手法によって、能力と通常のデータとを区別することが可能であり、これ故に、通常のデータが能力として使用され得ないことを確実にする。
【００４５】
図３では、タグ・ビットを含むタグ・フィールドが参照されてあるが、より一般的な実施例では、タグ・ビットは、各能力に関連付けられ得る能力メタデータの実例である。これ故に、図４に示すように、システムの記憶素子（それが能力レジスタ６０のうちの１つでも又はメモリ・アドレス空間１１０内の記憶場所でも）に記憶された能力１５０は、それと関連する能力メタデータ１５５を有し得る。能力メタデータは、関連データ・ブロック１５０が実際に能力を表すか、又はそうではなく汎用データとして解釈されるべきかを識別することになり、１つの実施例において、その情報は能力メタデータ１５５内にタグ・ビットとしてエンコードされることになる。能力メタデータは、１つの実施例において、タグ・ビットを単に含み得るが、代替実施例では、必要に応じて追加の情報を含み得る。たとえば、データのタイプは、たとえば、特定の特権レベルによる所有権、粒度の細かい許可、たとえば読み取り専用、などを示す能力メタデータでさらに細分化することができる。
【００４６】
能力は様々な形をとることができるが、図４に示す実施例では、能力は有界ポインタである。図示するように、有界ポインタは、ポインタ値１６０、範囲情報１６５及び許可属性１７０で構成される。範囲情報及び許可属性は、有界ポインタの属性と総称され得る。
【００４７】
図５Ａは、一部の実施例で記憶され得る例示的キャッシュ・ライン２００を示す。図示されているように、キャッシュ・ライン２００は、タグ・アドレス２０１、有効性ビット２０２、ダーティ・ビット２０３、能力タグ・ダーティ・ビット２０４、能力タグ２０５及び２０６、並びにデータ値２０７及び２０８を含む。能力タグ及びデータ値のラベリングが示すように、各データ値に能力タグが与えられている。対照的に、このキャッシュ・ライン内には１つのみの能力タグ・ダーティ・ビット２０４が与えられ、能力タグ２０５又は２０６のいずれかがこのキャッシュ・ラインの有効期間中に修正されるかどうかを追跡するために使用される、ことに留意されたい。図５Ｂは、図５Ａに示されたそれと類似した、一部の実施例において記憶され得る別のキャッシュ・ライン２１０を示す。図示するように、キャッシュ・ライン２１０は、タグ・アドレス２０１、有効性ビット２１２、ダーティ・ビット２１３、２つの能力タグ・ダーティ・ビット２１４及び２１５、能力タグ２１６及び２１７、並びにデータ値２１８及び２１８を含む。図５Ａ及び図５Ｂの例示的キャッシュ・ラインの唯一の差は、図５Ｂの実例では、２つの能力タグ・ダーティ・ビット２１４及び２１５が提供され、能力タグ２１６及び２１７のぞれぞれのために１つ存在する、ということである。
【００４８】
図５Ｃは、データ値の書き込みが起こるときにそのデータ値に関連して記憶された能力タグ・ダーティ・ビットを更新するために１つの実施例において使用される回路を概略的に示す。この回路は、書き込みトランザクションの対象となるデータ値２３０及びその関連能力タグ２３２を、これらを記憶されたデータ値２３４及び能力タグ２３６として記憶させる（たとえば、キャッシュ・ラインに）前に、バッファするように構成される。この回路はさらに、書き込みトランザクションの一部として提供される能力タグ２３２及び能力タグ２３６（以前に記憶されたものとしての）をその入力として取る比較論理２３８を含む。これらが異なるとき、記憶されたデータ値２３４に関連して記憶される能力タグ・ダーティ・ビット２３８は、能力タグが変わったことを示すように設定される。より単純な変形形態もまたここで提案され（明示的に示されてはいないが）、そこでは、能力タグ・ダーティ・ビット２３８が、データ値２３４に更新が行われるときにはいつでも設定され（たとえこれが能力タグを実際には修正しなくても）、これは、能力タグ値の完全ビット単位の比較を必要としないという利点を有する、ことに留意されたい。しかしながら、能力タグ値が比較的小さいことが予期されると仮定すると、そのような構成によって得られる優位性は、比較的限られ得る。
【００４９】
図６は、１つの実施例におけるデータ処理システム２５０を概略的に示す。本システムは、中央処理装置（ＣＰＵ：Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２５２、レベル１データ・キャッシュ２５４（ローカル・キャッシュ制御装置２５６を有する）、レベル２（統一された）キャッシュ２５８（ローカル・キャッシュ制御装置２６０を有する）、メモリ・コントローラ２６２、能力テーブル・キャッシュ２６４、及びメイン・メモリ２６６を備える。これらの構成要素は、当業者には馴染みのあるキャッシュ階層の形で配置され、そこでは、より小さい、より高速のキャッシュ・ストレージは、ＣＰＵ２５２により近くより低いキャッシュ・レベルで提供され、より低速の、より大きなキャッシュ能力は、メモリ２６６により近くより高いキャッシュ・レベルで提供される。図６に示すように、さらなるキャッシュ・レベル２６８もまた、メモリ・コントローラ２６２とメイン・メモリ２６６との間に提供され得る。図６に示された構成要素のうちのいくつかの特定の構成について、次の図を参照してさらに詳しく論じる。
【００５０】
図７Ａは、データ書き込みトランザクションが能力メタデータ含むべきかどうかを判定するために１つの実施例において施されるステップのシーケンスを示す。たとえば、これらのステップは、図６に示すようなメモリ・コントローラ２６２によって実行され得る。ステップ２８０では、キャッシュ／メモリ階層内の次のレベルを対象とする書き込みトランザクションが実行されることになるまで、流れはループする。これに該当する場合、流れはステップ２８２に進み、そこでは、書き込みトランザクションの対象であるデータ値の能力タグ・ダーティ・ビット（ＣＴＤ：Ｃａｐａｂｉｌｉｔｙ  Ｔａｇ  Ｄｉｒｔｙ  ｂｉｔ）が０であるか、すなわち、書き込みトランザクションの対象である１つ又は複数のデータ値に関連する能力タグ・ビットが修正されなかったことを示すか、が判定される。これに該当しない場合、すなわち、それらが修正されてあった場合、次いで、流れはステップ２８４に進み、書き込みトランザクションは、能力タグ・ビットを含んで継続する。言い換えれば、これらの能力タグのローカルに保持された値はまた、キャッシュ／メモリ階層内の次のレベルに書き出される。図７Ａにおいて参照された書き込みトランザクションは、実際には、読み取り−修正−書き込みトランザクションでもよいことに留意すべきであり、したがって、ステップ２８４における（ステップ２８８において下で同様に）書き込みトランザクションを進めることは、能力タグに関して（又は制御の流れに依存せず）初期読み取りトランザクションを含むこともまた理解されるべきである。しかしながら、ステップ２８２では、能力タグ・ダーティ・ビットは、設定されておらず（０）、能力タグ・ビットの修正が起こらなかったことを示していると判定された場合、次いで、流れはステップ２８６へと進む。ステップ２８６では、能力タグがデータ（能力に対立するものとしての）を示すかどうか、及び「アクティブ能力タグ（ＣＴ：Ｃａｐａｂｉｌｉｔｙ  Ｔａｇ）設定」が現在有効にされているかどうかが判定される。これは、たとえば、複数のエージェントが同じ記憶場所に書き込む状況において有用になり得る、能力タグに関して追加のレベルのセキュリティを提供するための技法である。この「アクティブ能力タグ（ＣＴ）設定」が、一般に設定され得る、又は、たとえば、他のコアから受信された書き込みアクティビティ情報（図６のメモリ・コントローラ２６２に対する入力を参照）に基づいて設定され得る。これらの条件の両方が当てはまる場合、次いで、流れはステップ２８４に進み、書き込みトランザクションは、能力タグを含んで進む。これは、能力タグが変わっていないように見えても、それらが、作成されるべきではない能力の偽造（不注意によるか悪意があるかにかかわらず）に対するさらなるレベルの保護を提供するために、明示的にリセットされてデータ値（能力に対立するものとしての）を示すことを実現する。そうでない場合には、ステップ２８６から、流れはステップ２８８に進み、そこで、書き込みトランザクションは能力タグ・ビットなしで進む。言い換えれば、更新された値のみが、次のメモリレベルに書き出される。
【００５１】
図７Ｂは、この機能性を実装するために使用され得る回路の１つの実例を提供し、ここでは、値２９０及びその関連能力タグ２９２が、バッファ２９４及び２９６に一時的に記憶され、バッファ２９６は、値２９０に関連して記憶された能力タグ・ダーティ・ビット２９８から得られた追加の有効化（ＥＮ：Ｅｎａｂｌｅ）入力を有する。したがって、これは、能力タグ２９２が次のストレージ・レベルへのアクセスの一部を形成することになることを能力タグ・ダーティ（ＣＴＤ）ビット２９８の設定が意味することを意図する。
【００５２】
図８は、１つの実施例における図６の項目２６４として示されるものなどの能力タグ・キャッシュを概略的に示す。この能力タグ・キャッシュは、たとえば、メモリ・コントローラ２６２の一部を形成してもよく、又は別個に提供されてもよい。使用中、キャッシュ・メモリ階層内の次のレベルに（メモリ２６６にでもよく又はさらなるキャッシュ・レベル２６８にでもよい）渡されることになる書き込みトランザクションの処理中の、メモリ・コントローラは、この能力タグ・キャッシュを参照する。たとえば、これは、ダーティ・キャッシュ・ラインを削除した、さらに低いキャッシュ・レベル（ＣＰＵ２５２により近い）によって開始された書き戻しトランザクションをメモリ・コントローラ２６２が処理しているときに、起こり得る。メモリ・コントローラがこのトランザクションをキャッシュ・メモリ内の次のレベルに渡す場合、これは、１つのキャッシュ・レベルから、包括的キャッシング配置に加わっている別のキャッシュ・レベルに、ダーティ・データを書き戻すことでもよい。
【００５３】
図８で２８２のラベルを付された能力タグ・キャッシュは、メモリの一部分から取得された（図６を参照）、いくつかのキャッシュ・ラインに能力タグ・テーブル情報を記憶する。キャッシュ・ラインにおける能力タグ・テーブル情報の記憶は、書き込みトランザクションの対象である値の対応するタグ・アドレスに基づく。そのように必要とされる場合、変換回路２８０が、タグ・アドレスを能力タグ・キャッシュのインデックスに変換するために提供される。一般に、能力タグ・キャッシュの動作は、従来のキャッシュ動作手順に従って実行され、キャッシュは一般に完全に占有されて、キャッシュ・ミスが生じるとき、必要とされるキャッシュ・ラインがメモリから取得され、置換されることになるビクティム・キャッシュ・ラインが選択される。
【００５４】
図８に示された能力タグ・キャッシュ２８２内のキャッシュ・ラインは、図の下方部に示された能力タグ・テーブル情報の階層的配置の能力タグ・テーブル情報を記憶する。構造の最も高いレベルのテーブル２８６（この実例では、８ビットを有する）の各ビットは、次にあるより低レベルのテーブル内のビットのいずれかが設定されたかどうかを表す。これ故に、図示された実例では、テーブル２９０のビットが設定されない場合、テーブル２８６内の「サマリ」ビットは設定されない。反対に、テーブル２８８の２つのビットが設定された場合、テーブル２８６内の「サマリ」ビットが設定される。同じ原理が、テーブル２８８／２９０と、それらが次にあるより低いレベルにおいて要約するテーブル（２９２、２９４、２９６、及び２９８のラベルを付されたもの）との間の関係に適用される。
【００５５】
単純なメモリシステムにおいて、メモリ・コントローラは関連データから物理メモリの別個の領域に能力タグを記憶することができると考えられるとき、能力タグ・キャッシュ２８２の提供の利益は理解することができる。これが当てはまる場合、次いで、能力タグ・ダーティ情報が存在しなかった場合、次いで、たとえば、最後のレベルのキャッシュからメモリへの書き込み時に、メモリ・コントローラは、実際に、２つの書き込みトランザクションを実行する必要があることになる：データを保持するメモリへの第１の書き込みと、能力タグ情報を含むメモリでの第２の読み取り−修正−書き込み。しかしながら、能力タグは変わっていないことを示す能力タグ・ダーティ情報の入手可能性とともに、この追加の読み取り−修正−書き込み動作は必要ないことになる。
【００５６】
これに関連して、能力タグを付けられたメモリに必要とされる余分な検索のコストを軽減するために、能力タグ・キャッシュ（図８の２８２など）が、メモリへのこれらの追加のアクセスのうちのいくらかを減らすために、提供され得る。しかしながら、そのような能力タグ・キャッシュが存在することになるが、本明細書で提案される能力タグ・ダーティ情報がない場合、次いで、メモリ・コントローラは、タグ情報の高速の読み取り又は書き込みを可能にするために、能力タグ情報の適切なラインがタグ・キャッシュ内にあったことを確実にする必要があることになる。ラインが存在しなかった場合、メモリに対する可能な書き戻しを有して、タグ・キャッシュからの既存のラインの削除、これに続く、タグ・ビットを含むライン、及び、恐らくは、より粗い粒度のタグ・テーブル情報を表すさらなるラインのロード、次に、タグ・キャッシュから有用な情報を削除すること及び場合により書き戻すことを必要とすることになろう。これに対応して、図８における「ロード」及び「削除」を示す矢印は、１つ以上のキャッシュ・ラインがロードされ得ることと、１つ以上のキャッシュ・ラインが、能力タグ・キャッシュのそのようなそれぞれの更新のために、削除され得ることと、を（破線の矢印の延長を用いて）示すことに留意されたい。反対に、能力タグ・ダーティ情報の入手可能性を用いて、タグは、メモリからの読み取り以後、変化していないという指示は、次いで、能力タグ・キャッシュ・コンテンツへの変更を必要としないことになる。たとえば、階層の最も高いレベル２８６において設定されていない１つのビット（「０」）は、メモリの全セクションはデータ値のみを含み能力を含まないことを指示し得るので、能力タグ情報のストレージの階層的性質はさらに、このローカルに記憶された能力タグ情報の参照を加速することができる。
【００５７】
図９は、本明細書で提案されるようなキャッシュにおいて能力タグ・ダーティ・ビットを管理するときに、１つの実施例において施されるステップのシーケンスを示す。流れは、ステップ３００で開始するように示されており、そこでは、値は、その値とアトミックに記憶された能力タグ情報を有するキャッシュのキャッシュ・ラインに記憶されていると仮定される。流れは、次いで、ステップ３０２に進み、そこで、このキャッシュ・ラインへの書き込みが作動させられるべきかが決定される。これが当てはまらないとき、流れはステップ３０８に進み、そこで、このキャッシュ・ラインの削除が作動させられるべきかが決定され、これが当てはまる場合、このキャッシュ・ラインの（現在の）有効期間が終わり、流れはステップ３１０で終了する。しかしながら、このキャッシュ・ラインへの書き込みが作動させられることになるとステップ３０２で決定されたとき、次いで、ステップ３０４で、書き込みの対象である値の能力タグが修正されたかが判定される。たとえば、ビット単位の比較が、能力タグの現在記憶されている値と、書き込みの対象である値とともに提供されている能力タグの値との間で行われ得る。能力タグが修正されたことが発見された場合、次いで、流れはステップ３０６に進み、そこで、対応する能力タグ・ダーティ・ビットが設定され、この修正を示す。パスは、次のステップ３０８で合流し、そこでは、（前述のように）このキャッシュ・ラインの削除が作動させられるべきかが決定され、これが当てはまる場合、このキャッシュ・ラインの（現在の）有効期間が終わり、流れはステップ３１０で終了する。そうでない場合には、このキャッシュ・ラインはキャッシュ内に残り、流れはステップ３０２に戻る。
【００５８】
図１０は、本明細書で提案されるように能力タグ・キャッシュにアクセスするときに１つの実施例において施されるステップのシーケンスを示す。たとえば、これらは、２６４（図６を参照）などの能力タグ・キャッシュにアクセスするときに２６２などのメモリ・コントローラによって実行されるステップでもよい。流れは、３２０において開始すると考えることができ、そこで、プロセスは、メモリ・アクセスが受け付けられるのを待つ。たとえば、これは、（図６の実例における）メモリ２６６を対象とする書き込みトランザクションでもよい。作動させられようとするメモリ・アクセスが受け付けられると、流れはステップ３２２に進み、そこで、対応する能力タグ・ダーティ（ＣＴＤ）ビットが利用可能であるかが判定される。次のステップが３２４である場合、そこでは、ＣＴＤビットが設定されたかがチェックされる。設定されていない場合、能力タグが修正されなかったことを示し、次いで、流れはステップ３３４に進み、そこで、能力タグ・アクセスの完了が信号伝達され、メモリ・アクセスの能力タグ部分は省略され得る。しかしながら、ＣＴＤビットが設定されている場合、又は対応するＣＴＤ情報が入手可能でない場合、次いで、流れはステップ３２６に進み、そこで、メモリ・コントローラは、メモリ・アクセスのタグ・アドレス情報に基づく検索を実行し、能力タグ・テーブル・キャッシュにアクセスする。ステップ３２８において、対応する能力タグ情報が、能力タグ・テーブル・キャッシュ内に見つからない（すなわち、「ミス」が存在する）場合、次いで、流れは、１つ又は複数の能力タグ・テーブル・ラインの削除並びにメモリから取得された１つ又は複数の能力タグ・テーブル・ラインの新たな割り当てによる置換のためにステップ３３０を介して進む。ステップ３２８の後（又は「ヒット」から直接）、ステップ３３２で、必要とされる能力タグ・テーブル・ラインがアクセスされ、最後に、ステップ３３４で、能力タグ・アクセスの完了が信号伝達される。ステップ３３４に続いて、流れはステップ３２０に戻る。
【００５９】
図１１、１２、及び１３は、システムが能力メタデータ修正マーカー（能力タグ・ダーティ（ＣＴＤ）ビット）及び／又はデータ修正マーカー（データ・ダーティ・ビット）を転送するようにも配置されるかどうかに応じて、データがキャッシュ・ストレージ内に又は外に転送されるときの状況のいくつかの実施例でシステムに課されるいくつかのルールを示す。言い換えれば、キャッシュにおいてデータ・ブロックに関連して記憶され得る能力タグ・ダーティ・ビット及び／又はデータ・ダーティ・ビットは、それが転送される（キャッシュ内へ又はキャッシュ外へにかかわらず）時にデータ・ブロックと移動しなくてもよい。これらのルールは、能力タグ・ダーティ・ビット及び／又はデータ・ダーティ・ビットが何であると仮定されるかに関して転送の目標にある種の制約を適用する。
【００６０】
図１１のステップ４００で（キャッシュ・ストレージ内への又は外へのデータの転送時に）開始し、（ステップ４０２）能力タグ・ダーティ・ビットの値が、データ・ブロックに関連付けられた能力タグが変わったことを示す場合、次いで、（ステップ４０４）データは、修正されたものとして扱われなければならない。ステップ４０６で、データ・ダーティ・ビットもまた転送されなかった場合、及び転送がより低いキャッシュ・レベルに対して（ＣＰＵに向けて）であった場合（ステップ４０８）、次いで、（ステップ４１０）データ及び能力タグ・ダーティ・ビットはクリーンとして扱われなければならない。そうでない場合（ステップ４１２）、データ及び能力タグ・ダーティ・ビットはダーティとして扱われなければならない。
【００６１】
能力タグ・ダーティ・ビットもまた転送されるとき（ステップ４１４）、次いで、（ステップ４１６）データ・ダーティ・ビット及び能力タグ・ダーティ・ビットは、提供されたものとして使用することができる。それらが転送されず（ステップ４１８に進む）、能力タグ・ダーティ・ビットもまた転送されない場合、次いで、能力タグ・ダーティ状態は、データ・ダーティ状態から推論される必要がある。これ故に、能力タグ・ビットが転送されない場合（ステップ４１８、ステップ４２０に進む）、次いで：（ステップ４２０）データ及び能力タグがともにダーティではないものとしてマークを付けられた場合、次いで、能力タグは、設定されていないものとして扱われ（すなわち、データを示す）、（図１２のステップ４２４）データ及び能力タグがともにダーティとしてマークを付けられた場合、次いで、（ステップ４２６）能力タグは設定されていないものとして扱われ（すなわち、データを示す）、そして、（ステップ４２８）データはダーティとしてマークを付けられ、能力タグはダーティではないとしてマークを付けられた場合。
【００６２】
ステップ４１８から、能力タグ・ビットが転送された場合（単に読みやすくするためにステップ４３４で繰り返される）、次いで、流れはステップ４３６に進む。ここから、（ステップ４３６）データ及び能力タグがダーティではないとしてマークをともに付けられた場合、又は（ステップ４３８）データ及び能力タグがダーティとしてマークをともに付けられた場合、次いで、（ステップ４４０）転送された能力タグが、目標によって使用されなければならない。そうではなく、（図１３のステップ４４２）データはダーティとしてマークを付けられ、能力タグはダーティではないとしてマークを付けられた場合、次いで、目標は、次のうちの１つを選択しなければならない（ステップ４４６）：能力タグのそれのコピーを変更しないことと、能力タグのそれのコピーを更新することと、能力タグのそれのコピーが、提供された能力タグとは異なる場合に、エラーを報告すること。そうでない場合、転送されたデータと転送された能力タグとの両方がクリーンである（ステップ４４４）。
【００６３】
図１４は、転送されたデータに加えて（又はそうではなく）トランザクション内に存在し得る情報の可能な１６の組合せの意味を提示する。本技法の異なる実施例は、トランザクションがそれらの組合せをどのように表すかを選択することができる、すなわち、能力タグ及び／又はタグ・ダーティ状態がトランザクション内に存在するかどうかは実装形態に委ねられている。ＴＤＰ＝０はＴＤ＝ＤＤであることをただ暗示するので、ＴＤＰは、トランザクションが何を意味するかを解明することを目的として、ほとんどは無視され得ることに留意されたい。ＤＤは、多くは、トランザクションが読み取りであるか書き込みであるかを伝えるが、キャッシュ・ラインがダーティ・データと内部に移動することができる実施例もまた意図されており、そのとき、ＴＤ／ＴＰは、この（少し変わった）状況がどのように対処されるべきかを示す。
【００６４】
図１５は、使用することができる仮想マシン実装形態を示す。前述の実施例は、関係する技法をサポートする特定の処理ハードウェアを動作させる装置及び方法に関して本発明を実装するが、ハードウェア・デバイスのいわゆる仮想マシン実装形態を提供することもまた可能である。これらの仮想マシン実装形態は、仮想マシン（ＶＭ：Ｖｉｒｔｕａｌ Ｍａｃｈｉｎｅ）プログラム５１０をサポートするホスト・オペレーティング・システム（ＯＳ：Ｏｐｅｒａｔｉｎｇ Ｓｙｓｔｅｍ）５２０を実行するホスト・プロセッサ（ハードウェア）５３０で実行する。通常は、大きな強力なプロセッサが、合理的な速度で実行する仮想マシン実装形態を実現するために必要とされるが、そのような手法は、互換性又は再使用を理由に別のプロセッサに固有のコードを実行するという要望があるときなど、ある種の状況において正当化され得る。仮想マシン・プログラム５１０は、コンピュータ可読記憶媒体（非一時的媒体でもよい）に記憶されてもよく、仮想マシン・プログラム５１０によってモデル化されているデバイスである実際のハードウェアによって提供されることになるアプリケーション・プログラムインターフェースと同じであるアプリケーション・プログラム５００にアプリケーション・プログラム・インターフェース（命令実行環境）を提供する。したがって、キャッシュ・ストレージのモデル及び前述のキャッシュ・ストレージを動作させる方法のサポートは、そのような物理キャッシュ・ストレージを有するハードウェア・デバイスと同じ形で機能する環境をアプリケーション５００に提供するために、仮想マシン・プログラム５１０において提供され得る。
【００６５】
簡潔な総合的要約において、キャッシュ・ストレージを備えた装置及びそのようなキャッシュ・ストレージを動作させる方法が提供される。キャッシュ・ストレージ内のデータ・ブロックは、データ・ブロックが能力を指定するかデータ値を指定するかを識別することに関連して記憶された能力メタデータを有する。少なくとも１つのタイプの能力は有界ポインタである。キャッシュ・ストレージ内のデータ・ブロックへの書き込みに応答して、能力メタデータ修正マーカーが、データ・ブロックに関連して設定され、データ・ブロックに関連する能力メタデータは、データ・ブロックがキャッシュ・ストレージに記憶された以後に、変わったかどうかを示す。これは、データ値から能力へのデータ・ブロックの使用の修正が、意図されない限り、起こり得ないように、システムのセキュリティをサポートする。能力メタデータがメモリ内の他のデータとは別個に記憶されるとき、メモリに対して行われるアクセスは少なくなり得るので、効率性もまた生じ得る。
【００６６】
本出願では、「…ように構成された」又は「ように配置された」という言葉は、定義された動作を実行することができる構成を装置の要素が有することを意味するために使用される。これに関連して、「構成」は、ハードウェア又はソフトウェアの配置又は相互接続の形を意味する。たとえば、装置が、定義された動作を行う専用ハードウェアを有してもよく、或いは、プロセッサ又は他の処理デバイスが、その機能を実行するようにプログラムされてもよい。「ように構成された」又は「ように配置された」は、装置要素が、定義された動作を行うために、何らかの形で変更される必要がある、ということを暗示しない。
【００６７】
説明のための実施例が、添付の図面を参照して詳細に本明細書において説明されているが、本発明はそれらの正確な実施例には限定されないことと、様々な変更、追加及び修正が、添付の特許請求の範囲によって定義されるものとしての本発明の範囲を逸脱せずに、当業者によってもたらされ得ることと、を理解されたい。たとえば、従属請求の特徴の様々な組合せが、本発明の範囲を逸脱せずに、独立請求の特徴を有して、行われ得る。
【図１】
2020519991.tif 000003
【図２】
2020519991.tif 000004
【図３】
2020519991.tif 000005
【図４】
2020519991.tif 000006
【図５Ａ】
2020519991.tif 000007
【図５Ｂ】
2020519991.tif 000008
【図５Ｃ】
2020519991.tif 000009
【図６】
2020519991.tif 000010
【図７Ａ】
2020519991.tif 000011
【図７Ｂ】
2020519991.tif 000012
【図８】
2020519991.tif 000013
【図９】
2020519991.tif 000014
【図１０】
2020519991.tif 000015
【図１１】
2020519991.tif 000016
【図１２】
2020519991.tif 000017
【図１３】
2020519991.tif 000018
【図１４】
2020519991.tif 000019
【図１５】
2020519991.tif 000020
【国際調査報告】
2020519991.tif 000021
2020519991.tif 000022
2020519991.tif 000023