(57)【特許請求の範囲】
【請求項１】
キャッシュされたデータ項目と関連付けられ、前記データ項目の属性または特性を含み、キャッシュ追い出しによって失われうるロッシーなメタデータを保持する第１データエントリと、メモリからの前記データ項目をキャッシュする第２データエントリとを含むデータキャッシュメモリと、
前記第２データエントリ内の前記データ項目と関連付けられたアドレスを、前記第１データエントリ内の前記ロッシーなメタデータに関連付けられたメタデータアドレスに変換する変換ロジックと、
を備える装置。
【請求項２】
前記第１データエントリと関連付けられ、前記第１データエントリがメタデータを保持していることを示すメタデータ値を有する第１拡張フィールドと、
前記第２データエントリと関連付けられ、前記第２データエントリがデータを保持していることを示すデータ値を有する第２拡張フィールドとを更に備える請求項１に記載の装置。
【請求項３】
前記第１拡張フィールドは、前記ロッシーなメタデータと関連付けられた処理要素を示す処理要素識別子（ＩＤ）を更に有する請求項２に記載の装置。
【請求項４】
前記データ項目と関連付けられた前記ロッシーなメタデータは、前記データ項目の属性を含み、前記属性は、読み出し監視属性、書き込み監視属性及びバッファリング属性からなる群から選択される請求項１から３のいずれか一項に記載の装置。
【請求項５】
前記第１拡張フィールドは、前記第１データエントリに対応する第１タグエントリに保持され、前記第２拡張フィールドは、前記第２データエントリに対応する第２タグエントリに保持される請求項２に記載の装置。
【請求項６】
前記ロッシーなメタデータにアクセスするメタデータアクセスオペレーションが、前記データ項目と関連付けられたアドレスを、前記メタデータ値を保持する前記第１拡張フィールドを含む前記第１タグエントリの値に基づいて参照する場合に、前記第１タグエントリ及び前記第２タグエントリを含むタグアレイを検索して、前記第１データエントリに対応する前記第１タグエントリの位置を特定するキャッシュ制御ロジックを更に備える請求項５に記載の装置。
【請求項７】
前記第１タグエントリは、前記ロッシーなメタデータと関連付けられた処理要素識別子（ＩＤ）及び前記データ項目と関連付けられたアドレスの一部を更に保持する請求項５に記載の装置。
【請求項８】
前記データ項目に対するアドレスを参照して、前記ロッシーなメタデータにアクセスするメタデータアクセスオペレーションを受信するキャッシュ制御ロジックを更に備え、
前記キャッシュ制御ロジックは、圧縮比に基づいて、前記アドレスを複数ビット分シフトして、前記アドレスに前記処理要素ＩＤを付加し、前記メタデータ値を前記アドレスに付加してメタデータアドレスを生成し、
前記キャッシュ制御ロジックは更に、前記メタデータアドレスのタグ部分を使用して前記第１タグエントリ及び前記第２タグエントリを含むタグアレイを検索して、前記第１タグエントリの位置を特定する請求項７に記載の装置。
【請求項９】
追い出しのための前記第１データエントリを選択し、前記第１データエントリと関連付けられた前記第１拡張フィールドが、前記第１データエントリがメタデータを保持していることを示す前記メタデータ値を保持している場合に、上位層メモリに対する前記ロッシーなメタデータのライトバックを開始しないキャッシュ制御ロジックを更に備える請求項２に記載の装置。
【請求項１０】
第１データエントリ及び第２データエントリを含むキャッシュメモリのデータアレイと、
前記第２データエントリがデータを保持していることを示す値を有する、前記第２データエントリと関連付けられた第２タグエントリ、及び、前記第１データエントリが、前記データアレイの前記第２データエントリに保持されているデータ項目の属性または特性を含むメタデータを保持することを示す値を有する、前記第１データエントリと関連付けられた第１タグエントリを含む前記キャッシュメモリのタグアレイと、
前記第２データエントリ内の前記データ項目と関連付けられたアドレスを、前記第１データエントリ内の前記メタデータに関連付けられたメタデータアドレスに変換する変換ロジックと、
を備える装置。
【請求項１１】
前記タグアレイと連結されて、メタデータタイプを有するアクセスオペレーションによって参照されるアドレスを受信し、前記アクセスが前記メタデータタイプを有する場合に、前記メタデータを保持することを示す値を前記アドレスに付加してメタデータアドレスを生成し、前記メタデータを保持することを示す値を含む前記メタデータアドレスのタグ部分が、前記タグエントリに保持されたタグ値と一致する場合に、前記第１データエントリに対するヒットと判断する制御ロジックを更に備える請求項１０に記載の装置。
【請求項１２】
前記第２データエントリがメタデータを保持することを示す値を有する第１タグエントリは、前記第１データエントリがメタデータを保持することを示す第１論理値に設定されるアドレス拡張ビットを有する前記第１タグを含み、
前記メタデータを保持することを示す値を前記アドレスに付加してメタデータアドレスを生成する前記制御ロジックは、第１論理値を前記アドレスに付加して前記メタデータアドレスを生成する請求項１１に記載の装置。
【請求項１３】
前記変換ロジックは、前記データ項目と関連付けられたアドレスを参照するメタデータタイプのアクセスオペレーションを受信し、前記アドレスをメタデータアドレスに変換し、
前記変換ロジックと連結され、前記メタデータアドレスのタグ部分が、前記タグアレイに含まれた前記タグエントリに保持されるタグ値と一致する場合に、前記タグエントリに対するヒットと判断するキャッシュルックアップロジックと、
前記キャッシュルックアップロジックと連結され、前記キャッシュルックアップロジックが、前記第１データエントリと関連付けられた前記タグエントリに対する前記ヒットを判断した場合に、前記第１データエントリに対する前記アクセスオペレーションを実行する制御ロジックとを更に備える請求項１０に記載の装置。
【請求項１４】
前記アドレスを前記メタデータアドレスに変換する前記変換ロジックは、圧縮比Ｎに基づき、Ｎは、メタデータの量に対するデータの量である請求項１３に記載の装置。
【請求項１５】
圧縮比Ｎに基づいて前記アドレスを前記メタデータアドレスに変換する前記変換ロジックは、前記アドレスを、ｌｏｇ２（Ｎ）ビット分シフトさせて、前記メタデータを保持することを示す値を前記アドレスに付加して、前記メタデータアドレスを生成する請求項１４に記載の装置。
【請求項１６】
前記アクセスオペレーションと関連付けられた処理要素に対する処理要素識別子（ＩＤ）を保持する制御レジスタを更に備え、
圧縮比Ｎに基づいて前記アドレスを前記メタデータアドレスに変換する前記変換ロジックは、前記アドレスから、ｌｏｇ２（Ｎ）の数のビットを取り除き、前記取り除かれたｌｏｇ２（Ｎ）の数のビットの少なくとも一部を、前記処理要素ＩＤで置き換えることを含む請求項１５に記載の装置。
【請求項１７】
メタフィジカルページテーブルを定義するレジスタを更に備え、
前記アドレスを前記メタデータに変換する前記変換ロジックは、レジスタにおいて定義されたメタフィジカルページテーブルに基づいて、前記アドレスを前記メタデータアドレスへと変換するメタフィジカル変換ルックアサイドバッファ（ＭＴＬＢ）を含む請求項１３に記載の装置。
【請求項１８】
キャッシュメモリと、
前記キャッシュメモリに連結されたロジックと
を備え、
前記ロジックは、
データ項目を参照するためのアドレスの少なくとも一部を受信し、
前記アドレスの前記一部を、前記データ項目の属性または特性を含むメタデータを参照するために前記アドレスに対して使用されるべきメタフィジカル識別ビットおよび複数の処理要素識別ビットを含むメタフィジカル拡張と関連付け、
前記アドレス及び前記メタフィジカル拡張に基づいて、前記キャッシュメモリのデータ項目エントリに保持されたデータ項目と関連付けられたメタデータにアクセスするべく、キャッシュメモリのメタデータエントリを決定するプロセッサ。
【請求項１９】
前記ロジックは、制御ロジックが前記アドレスを参照するメタデータアクセスオペレーションを受信する場合に、前記データ項目を参照するための前記アドレスの少なくとも一部を受信する請求項１８に記載のプロセッサ。
【請求項２０】
前記アドレスの前記一部を前記メタフィジカル拡張と関連付ける前記ロジックは、前記アドレスの前記一部の最上位ビット（ＭＳＢ）に、前記メタフィジカル拡張を付加する請求項１８または１９に記載のプロセッサ。
【請求項２１】
前記メタフィジカル拡張は、１つのメタフィジカル拡張ビットを含む請求項１８から２０のいずれか一項に記載のプロセッサ。
【請求項２２】
前記メタフィジカル拡張は、複数のメタフィジカル拡張ビットを含む請求項１８から２０のいずれか一項に記載のプロセッサ。
【請求項２３】
前記複数のメタフィジカル拡張ビットはそれぞれ、別のメタフィジカルアドレス空間に対応している請求項２２に記載のプロセッサ。
【請求項２４】
前記データ項目と関連付けれられたメタデータが、前記メタデータエントリが前記キャッシュメモリから追い出しを受けるのに伴って失われ、前記メタデータが、前記データ項目に対する属性を含む請求項１８から２３のいずれか一項に記載のプロセッサ。
【請求項２５】
キャッシュメモリのデータアレイと、
前記データアレイのデータエントリにキャッシュされたデータ項目と関連付けられたデータアドレスを、前記データ項目の属性または特性を含むメタデータに対するデータの圧縮比に基づいて、前記キャッシュメモリにおいて前記データアレイのメタデータエントリと関連付けられたメタデータアドレスに変換するアドレス変換ロジックと、
前記アドレス変換ロジック及び前記データアレイに連結され、前記データアドレスを参照するメタデータアクセスオペレーションを受信し、前記アドレス変換ロジックが前記データアドレスを変換した場合に、前記データアレイの前記メタデータエントリにアクセスする制御ロジックと
を備えるシステム。
【請求項２６】
前記アドレス変換ロジックは、メタフィジカルページテーブルを定義するストレージと、前記圧縮比に基づいて前記メタフィジカルページテーブルを利用して前記データアドレスを前記メタデータアドレスに変換するメタフィジカル変換バッファとを有する請求項２５に記載のシステム。
【請求項２７】
メタデータに対するデータの前記圧縮比に基づいて、前記データアドレスを前記メタデータアドレスに変換する前記アドレス変換ロジックは、
前記データアドレスを、２を底とする前記圧縮比の対数のビット分シフトダウンして、シフトされたアドレスを生成することと、
前記シフトされたアドレスを、メタフィジカル拡張値と関連付けて、前記メタデータアドレスを生成することを含む請求項２５または２６に記載のシステム。
【請求項２８】
メタデータに対するデータの前記圧縮比に基づいて、前記データアドレスを前記メタデータアドレスに変換する前記アドレス変換ロジックは、
前記シフトされたアドレスを、メタフィジカル拡張値と関連付けて前記メタデータアドレスを生成する前に、処理要素識別子を前記シフトされたアドレスと関連付けることを更に含む請求項２７に記載のシステム。
【請求項２９】
キャッシュメモリのデータエントリに保持されるデータ項目に対するデータアドレスを参照するメタデータオペレーションを発生する段階と、
前記データアドレスから、前記データアドレスを仮想−物理アドレス変換により変換し、前記データ項目に対するバックアップデータの位置を含むメタデータを参照するために前記データアドレスに対して付加されるべきメタフィジカル拡張を付加してメタデータアドレスを決定する段階と、
前記メタデータアドレスに基づいて、前記キャッシュメモリのメタデータエントリを決定する段階と、
前記メタデータエントリが決定された場合に、前記メタデータエントリのメタデータにアクセスする段階と
を備える方法。
【請求項３０】
前記データアドレスから前記メタデータアドレスを決定する段階は、メタフィジカル変換テーブルロジックを使用して、前記データアドレスを物理メタデータアドレスへと変換し、前記物理メタデータアドレスにメタフィジカル拡張を付加して、前記メタデータアドレスを生成することを含む請求項２９に記載の方法。
【請求項３１】
前記メタフィジカル変換テーブルロジックを使用して、前記データアドレスを物理メタデータアドレスへと変換することは、メタデータに対するデータの圧縮比に基づいて行われる請求項３０に記載の方法。
【請求項３２】
前記データアドレスは、仮想データアドレスを含み、
前記データアドレスから前記メタデータアドレスを決定する段階は、前記仮想データアドレスにメタフィジカル拡張を付加して、前記メタデータアドレスを生成することを含む請求項２９に記載の方法。
【請求項３３】
前記メタデータオペレーションは、新たなデータを格納する格納メタデータオペレーションを含み、
前記メタデータエントリのメタデータにアクセスする段階は、前記新たなメタデータを前記メタデータエントリに格納することを含む請求項２９から３２のいずれか一項に記載の方法。
【請求項３４】
前記メタデータオペレーションは、前記メタデータをロードする、ロードメタデータオペレーションを含み、
前記メタデータエントリのメタデータにアクセスする段階は、前記メタデータエントリから前記メタデータをロードすることを含む請求項２９から３３のいずれか一項に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサの実行に関し、特に、命令グループの実行に関する。
【０００２】
［関連出願］
本願は、以下に示す特許出願に関連する。２００８年１２月３０日出願、代理人整理番号Ｐ２９１２９、米国出願番号１２／３４６，５１８号明細書、発明者Gad Sheaffer他"Registering a User-Handler in Hardware for Transactional Memory Event Handling（トランザクショナルメモリイベント取り扱いのための、ユーザーハンドラのハードウェアへの登録）"、２００８年１２月３０日出願、代理人整理番号Ｐ２９１３１、米国出願番号１２／３４６，５３９号明細書、発明者Gad Sheaffer他"Memory Model for Hardware Attributes Within a Transactional Memory System（トランザクショナルメモリシステム内における、ハードウェア属性のためのメモリモデル）"、２００９年１２月３０日出願、代理人整理番号Ｐ２９１３０、米国出願番号１２／３４６，５３０号明細書、発明者Gad Sheaffer他"Read and Write Monitoring Attributes in Transactional Memory (TM) Systems（トランザクショナルメモリ（ＴＭ）システムにおける読み出し及び書き込み監視属性）"、２００８年１２月３０日出願、代理人整理番号Ｐ２９１３２、米国出願番号１２／３４６，５４３号明細書、発明者Gad Sheaffer他"Extending Cache Coherency Protocols to Support Locally Buffered Data（ローカルにバッファされたデータをサポートするための、拡張キャッシュコヒーレンシプロトコル）"。
【背景技術】
【０００３】
半導体プロセス及びロジック設計の技術の発展に伴い、より多くの数のロジックを集積回路（ＩＣ）デバイスに組み込むことができるようになってきた。その結果、コンピュータシステム構成は、１つのシステムに１つのＩＣ又は複数のＩＣが設けられていた構成から、複数のコア及び複数の論理プロセッサが個々のＩＣに搭載される構成へと進化を遂げた。典型的なプロセッサ又はＩＣは、１つのプロセッサダイを含み、プロセッサダイは、１つ以上のコア又は論理プロセッサを含む。
【０００４】
コア及び論理プロセッサが数多くＩＣに設けられるようになり、より多くのソフトウェアスレッドを並行に処理できるようになった。しかしながら、同時に実行されるソフトウェアスレッドの数が増加すると、複数のソフトウェアスレッド間で共有されるデータの同期の問題が発生する。複数のコア又は複数の論理プロセッサシステムにおいて、共有データにアクセスするためのよく知られた解決策としては、共有データに対する複数のアクセスに対して、相互排除（排他制御）を保証するロックの使用がある。しかしながら、複数のソフトウェアスレッドを実行する能力が高まり、偽り競合及び実行の直列化につながる可能性が高くなっている。
【０００５】
例えば、共有データを保持するハッシュテーブルを考えてみる。ロックシステムの場合、プログラマーは、ハッシュテーブル全体をロックし、１つのスレッドが全ハッシュテーブルにアクセスできるようにする。しかしながらこの構成では、他のスレッドは、ロックが解除されるまでハッシュテーブルのいかなるエントリにもアクセスできなくなることから、他のスレッドのスループット及び性能には、悪影響となる可能性がある。別の構成として、ハッシュテーブルのエントリそれぞれをロックすることが考えられる。しかしながら、この単純な例から、大きな規模のプログラムの場合について推定すると、ロック競合、直列化、細分化された同期化及びデッドロック回避の複雑性は、プログロマにとって非常に煩雑な仕事となる。
【０００６】
最近のデータ同期技術の別の例として、トランザクショナルメモリ（ＴＭ）の使用が含まれる。トランザクションの実行は、複数のマイクロオペレーション、処理又は命令のグループを実行することを含む。上記の例では、２つのスレッドが共にハッシュテーブル内で実行され、これらのメモリアクセスが、監視／追跡される。２つのスレッドが共に、同じエントリにアクセス又は同じエントリを変更する場合には、データの有効性を確保するために、競合解消が行われる。ある種のトランザクション実行は、ソフトウェア・トランザクショナル・メモリ（ＳＴＭ）を含み、この場合、メモリアクセス、競合解消、停止（ａｂｏｒｔ）タスク、及びその他のトランザクションタスクが、多くの場合、ハードウェアのサポート無しで、ソフトウェアで実行される。
【０００７】
別の種類のトランザクション実行は、ハードウェア・トランザクショナル・メモリ（ＨＴＭ）を含み、この場合、アクセス追跡、競合解消及びその他のトランザクションタスクをサポートするのにハードウェアが含まれる。実際のメモリアレイは、読み出し、書き込み及びバッファリングを追跡するためのハードウェア属性のような情報を保有する更なる複数のビットで拡張され、その結果、データは、プロセッサからメモリへと伝達される。この情報は、持続性のある情報として参照される、すなわち、この情報は、メモリ階層全体に渡ってデータと共に移動することから、キャッシュ追い出し（ｃａｃｈｅ  ｅｖｉｃｔｉｏｎ）の際にも失われない。しかしながら、この持続性によって、メモリ階層システム全体に渡って多くのオーバーヘッドを課している。
【０００８】
同様の情報を格納する従来の別の試みとしては、ロッシー（ｌｏｓｓｙ）な（損失率が高い）情報、すなわち、情報がデータと共にメモリ階層の全体を移動しないことから追い出しに伴って失われてしまうような情報を保持するデータアレイと、別個の更なる構造の拡張又は追加によって実装されている。しかしながら、データを保持する付加構造は、高価である場合がある。
【０００９】
本発明は、以下、例示のために記載されており、添付の図面によって限定されることを意図していない。
【図面の簡単な説明】
【００１０】
【図１】複数のソフトウェアスレッドを並行に実行可能な複数の処理要素を含むプロセッサの一実施形態を示した図である。
【図２ａ】データに対するメタデータを保持するためのメタフィジカルアドレス空間の一実施形態を示した図である。
【図２ｂ】データに対するメタデータを保持するためのメタフィジカルアドレス空間の別の実施形態を示した図である。
【図３ａ】メタフィジカルアドレス空間へのアクセスをサポートする構造の一実施形態を示した図である。
【図３ｂ】メタフィジカルアドレス空間へのアクセスをサポートする構造の別の実施形態を示した図である。
【図４】メタデータへのデータ圧縮の一実施形態を示した図である。
【図５】メタデータへのデータ圧縮の別の実施形態を示した図である。
【図６】データに対するメタデータにアクセスする方法のフローチャートである。
【発明を実施するための形態】
【００１１】
以下、トランザクション実行のための特定のハードウェア構成例、アクセス監視の特定の種類及び実装、特定の種類のキャッシュコヒーレンシモデル、特定のデータ粒度、特定の種類のメモリアクセス及びロケーション等の様々な特定の詳細事項が記載されるが、これらは、本発明の深い理解を提供するためのものである。しかしながら、これらの特定の詳細事項を採用しなくとも、本発明を実行可能であることは、当業者にとって明らかである。また、ソフトウェアにおけるトランザクションのコーディング、トランザクションの境界設定、特定の及び代替のマルチコア及びマルチスレッドプロセッサ構成、特定のコンパイラ方法／実装、及びマイクロプロセッサの特定のオペレーション詳細等の、よく知られている要素又は方法については、本発明を不明瞭にすることを防ぐため、記載を省略する。
【００１２】
本明細書に記載する方法及び装置は、ロッシーな（損失可能性の高い）メタデータを保持するメタフィジカルアドレス空間のサポートに関する。特に、メタデータに対するメタフィジカルアドレス空間について、最初に、トランザクショナルメモリシステムのサポートを参照して説明する。しかしながら、メタデータを保持するメタフィジカルアドレス空間のサポートのための方法及び装置は、これらに限定されず、関連するデータ項目に対するメタデータを保持するメモリアーキテクチャに実装してもよい。
【００１３】
図１には、複数のスレッドを並列して実行可能なプロセッサの一実施形態が示されている。プロセッサ１００は、ハードウェアトランザクション実行のためのハードウェアサポートを含んでもよい。ハードウェアトランザクション実行と関連して、又は別に、プロセッサ１００は、ソフトウェア・トランザクショナル・メモリ（ＳＴＭ）のハードウェア加速、ＳＴＭの個別実行、又はこれらの組み合わせに対するハードウェアサポートを提供してもよく、例えば、ハイブリッド・トランザクショナル・メモリ（ＴＭ）システムを提供してもよい。プロセッサ１００は、マイクロプロセッサ、埋め込みプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、ネットワークプロセッサ、又はコードを実行する他のデバイスのようなあらゆるプロセッサを含む。図に示すように、プロセッサ１００は、複数の処理要素を含む。
【００１４】
ある実施形態では、処理要素とは、スレッドユニット、プロセスユニット、コンテキスト、論理プロセッサ、ハードウェアスレッド、コア、及び／若しくは実行状態又はアーキテクチャ状態のようなプロセッサの状態を保持可能な他の要素のことを指す。すなわち、ある実施形態では、処理要素は、ソフトウェアスレッドのようなコード、ＯＳ、アプリケーション又はその他のコードに独立して関連付けることが可能なあらゆるハードウェア指す。物理的プロセッサとは、典型的には、コア又はハードウェアスレッド等の他の処理要素を１以上含む集積回路（ＩＣ）のことを指す。
【００１５】
コアとは、多くの場合、少なくとも幾つかの専用実行リソースと関連付けられたアーキテクチャの状態がそれぞれ独立して保持される独立アーキテクチャ状態を保持可能なＩＣに位置する論理を指す。一方コアに対して、ハードウェアスレッドとは、典型的には、独立して保持されている複数のアーキテクチャ状態が実行リソースへのアクセスを共有する独立アーキテクチャ状態を保持可能なＩＣに位置する論理を指す。このように、あるリソースは共有され、他のリソースは１つのアーキテクチャ状態に占有されている場合には、ハードウェアスレッド及びコアという命名の境界線が重複することとなる。しかしながら、やはりコアとハードウェアとは、ＯＳから見れば個別の論理プロセッサであり、ＯＳは、各論理プロセッサに対して独立してオペレーションをスケジュールすることができる。
【００１６】
図１に示すように、物理プロセッサ１００は、高レベルキャッシュ１１０へのアクセスを共有する２つのコア、すなわち、コア１０１及びコア１０２を含む。プロセッサ１００は、非対称なコア、すなわち、異なる構成、機能ユニット及び／又はロジックを持ったコアを含んでもよいし、例示したような対称なコアを含んでもよい。コア１０２は、コア１０１と同様な構成を持つため、説明の重複を避け、以下にはその構成を詳細に記載しない。コア１０１は、２つのハードウェアスレッド１０１ａ及び１０１ｂを含み、コア１０２は、２つのハードウェアスレッド１０２ａ及び１０２ｂを含む。したがって、ＯＳのようなソフトウェア実体は、プロセッサ１００を４つの別個のプロセッサとして見なすこともでき、すなわち、４つのソフトウェアスレッドを並列に実行可能な４つのプロセッサ又は処理要素として見なすことができる。
【００１７】
第１のスレッドは、複数のアーキテクチャ状態レジスタ１０１ａと関連付けられており、第２のスレッドは、複数のアーキテクチャ状態レジスタ１０１ｂと関連付けられており、第３のスレッドは、複数のアーキテクチャ状態レジスタ１０２ａと関連付けられており、第４のスレッドは、複数のアーキテクチャ状態レジスタ１０２ｂと関連付けられている。図に示すように、複数のアーキテクチャ状態レジスタ１０１ａは、複数のアーキテクチャ状態１０１ｂに複製されており、個々のアーキテクチャ状態／コンテキストは、論理プロセッサ１０１ａ及び論理プロセッサ１０１ｂに格納可能である。命令ポインタ及びリネーム割り当てロジック１３０におけるリネーム論理のようなその他の小さなリソースも、スレッド１０１ａ及びスレッド１０１ｂに対して複製されていてもよい。並べ替え（ｒｅ‐ｏｒｄｅｒ）／リタイアメントユニット１３５における並び換えバッファ、ＩＬＴＢ１２０、ロード／ストアバッファ及びキューのようなリソースは、領域割り当てを通じて共有されていてもよい。汎用内部レジスタ、ページ‐テーブルベースレジスタ、下位層データキャッシュ及びデータ‐ＴＬＢ１１５、１以上の実行ユニット１４０、及びアウト・オブ・オーダーユニット１３５の部分のような他のリソースについては、完全に共有されていてもよい。
【００１８】
プロセッサ１００は、多くの場合、完全に共有されている、領域割り当てを通じて共有されている、若しくは処理要素について占有の又は占有されている複数の他のリソースを含む。図１には、１つのプロセッサの例示的な複数の機能ユニット／リソースを持つプロセッサの純粋な例が示されている。プロセッサは、例示されている複数の機能ユニットのうち、幾つかを含んでもよいし、又は省略してもよく、図示しない他の既知の機能ユニット、論理又はファームウェアを含んでもよい。
【００１９】
図示するように、プロセッサ１００は、プロセッサ１００の外部のデバイス、例えば、システムメモリ１７５、チップセット、ノースブリッジ、又はその他のＩＣとの間で通信を行うためのバスインターフェースモジュール１０５を含む。メモリ１７５は、プロセッサ１００専用としてもよいし、システム内の他のデバイスと共有するとしてもよい。上位層に位置する又はより離れたところに位置するキャッシュ１１０は、上位層キャッシュ１１０から最近フェッチされた要素をキャッシュする。ここで、上位層又はより離れた位置とは、キャッシュレベルがより高い又は実行ユニットからより離れていることを指す。一実施形態では、上位層キャッシュ１１０は、第２レベルデータキャッシュである。上位層キャッシュ１１０はこれに限定されず、命令キャッシュに関連付けられてもよいし、命令キャッシュを含んでもよい。命令キャッシュの一種であるトレースキャッシュを、替わりに、デコーダ１２５の後に連結して、最近デコードされたトレースを記憶してもよい。モジュール１２０は、実行される／選択される分岐先を予測する分岐先バッファ（Ｂｒａｎｃｈ  Ｔａｒｇｅｔ  Ｂｕｆｆｅｒ：ＢＴＢ）及び命令についてのアドレス変換エントリを記憶する命令変換バッファ（Ｉ‐ＴＬＢ）を含む。
【００２０】
デコードモジュール１２５は、フェッチユニット１２０と連結され、フェッチされた要素をデコードする。ある実施形態では、プロセッサ１００は、プロセッサ１００で実行可能な命令を規定／特定する命令セットアーキテクチャ（ＩＳＡ）と関連付けられている。ＩＳＡによって認識される機械コード命令は、一般的に、実行すべき命令又はオペレーションを参照する／特定するオペコード（ｏｐｃｏｄｅ）と呼ばれる命令の一部を含む。
【００２１】
１つの例では、割り当て及びリネームブロック１３０は、命令処理結果を記憶するレジスタファイルのようなリソースをリザーブする割り当て部を含む。スレッド１０１ａ及び１０１ｂは、アウト・オブ・オーダー実行を行う能力を備え、割り当て及びリネームブロック１３０は、命令結果を追跡する記録バッファのように、他のリソースをリザーブする。ユニット１３０は、プログラム／命令参照レジスタを、プロセッサ１００の他の内部レジスタにリネームするレジスタリネーマーを含んでもよい。並べ替え／リタイアメントユニット１３５は、アウト・オブ・オーダー実行及びアウト・オブ・オーダーで実行される順番が最後の方の命令のリタイアメントをサポートするために、上述のような並び換えバッファ、ロードバッファ、及び記憶バッファのような要素を含んでもよい。
【００２２】
ある実施形態では、スケジューラ及び実行ユニットブロック１４０は、実行ユニットに対して命令／オペレーションをスケジューリングするスケジューラユニットを含むとしてよい。例えば、浮動小数点命令は、利用可能な浮動小数点実行ユニットを持つ実行ユニットの一部にスケジュールされる。また、情報命令処理結果を記憶するために、実行ユニットに関連付けられたレジスタファイルが含まれている。実行ユニットの例としては、浮動小数点実行ユニット、整数実行ユニット、ジャンプ実行ユニット、ロード実行ユニット、記憶実行ユニット、及びその他の既知の実行ユニットが挙げられる。
【００２３】
下位層データキャッシュ及びデータ変換バッファ（Ｄ‐ＴＬＢ）１５０は、実行ユニット１４０に接続されている。データキャッシュは、メモリコヒーレンシ状態で保持されているデータオペランドのような最近利用／処理されたものを、要素に記憶する。Ｄ‐ＴＬＢは、最近の仮想／線形アドレスから物理アドレスへの変換を記憶する。特別な例として、プロセッサは、物理メモリを複数の仮想ページに分割するためのページテーブル構造を持つとしてよい。
【００２４】
一実施形態において、プロセッサ１００は、ハードウェアトランザクション実行、ソフトウェアトランザクション実行、又はこれらの組み合わせ、又はこれらの混合を実行可能である。トランザクション、すなわち、コードのクリティカルな又は不可分な部分は、不可分グループとして実効される命令、オペレーション又はマイクロオペレーションのグループ化を含む。例えば、命令又はオペレーションは、トランザクション又はクリティカル部分の境界を定めるのに使用されてもよい。以下に詳細に記載する一実施形態において、これらの命令は、上述のデコーダのようなプロセッサ１００のハードウェアによって認識可能な、例えば命令セットアーキテクチャ（ＩＳＡ）のような命令セットの一部である。しばしば、高水準（ハイレベル）言語からハードウェアが認識可能なアセンブリ言語へと一旦コンパイルされた命令は、デコード段階においてデコードが認識するオペレーションコード（オペコード）又は命令の別の部分を含む。
【００２５】
一般的には、トランザクションが実行されている間は、メモリへのアップデートは、トランザクションがコミットされるまでは、グローバルに可視化されない。一例として、あるロケーションへのトランザクションの書き込みが、別のスレッドからの読み出しに応答して、ローカルスレッドに対して可視化されたとしても、トランザクションの書き込みを含むトランザクションがコミットされるまでは、書き込みデータは転送されない。トランザクションが処理中である間、メモリ内に書き込まれた又はメモリからロードされたデータ項目／要素が追跡され、これについては以下に詳細に記載する。トランザクションがコミット点に到達し、そのトランザクションについて競合が検出されなかった場合には、トランザクションがコミットされ、トランザクションがグローバルに可視化される間に更新が行われる。
【００２６】
しかしながら、トランザクションが処理中に無効とされた場合には、トランザクションは中止され、更新をグローバルに可視化することなく、リスタートされる可能性がある。したがって、トランザクションの未決の状態という言葉は、本明細書では、実行が始まって、コミットされていない又は中止されていない、すなわち未決の状態であるトランザクションを指す。
【００２７】
ソフトウェア・トランザクショナル・メモリ（ＳＴＭ）システムは、多くの場合、アクセス追跡、競合解消、又は少なくとも一部がソフトウェアにおけるトランザクショナルメモリタスクの実行を参照する。一実施形態において、プロセッサ１００は、トランザクション実行をサポートするプログラムコードをコンパイルするコンパイラを実行可能である。ここで、コンパイラは、オペレーション、呼び出し、関数及びトランザクションを実行可能とするその他のコードを挿入してもよい。
【００２８】
コンパイラは、多くの場合、プログラム又はプログラムのセットを含み、ソーステキスト／コードを、目的のテキスト／コードへと変換する。通常、プログラム／アプリケーションコードをコンパイラを使用してコンパイルする場合には、高水準プログラム言語コードを、低水準機械言語コード又はアセンブリ言語への変換する複数の段階又はパスに分けて実行される。しかしながら、簡単なコンパイルには、単一パスのコンパイラを使用することもできる。コンパイラは、既知のコンパイル技術を利用して、字句解析、前処理、構文解析、意味解析、コード生成、コード変換及びコード最適化のような、既知のコンパイルオペレーションを実行してもよい。
【００２９】
大きなコンパイラは、多くの場合、複数の段階を含み、これらの複数の段階は、主に大きく分けて２つの段階に含まれる。（１）フロントエンド、すなわち、通常、構文処理、意味処理及び幾つかの変換／最適化が実行される段階、（２）バックエンド、すなわち、通常、解析、変換、最適化及びコード生成が実行される段階の２つである。コンパイラの中には、ミドルエンドと呼ばれるものも存在し、これは、フロントエンドとバックエンドのコンパイラとの間の境界を曖昧にした例である。挿入、関連付け、生成又はその他のコンパイラのオペレーションの参照は、上述の段階又はパス、及びその他のコンパイラの段階又はパスのいずれかにおいて実行される。一例として、コンパイラは、１以上のコンパイルの段階に、トランザクションオペレーション、呼び出し、関数等を挿入してもよく、例えば、呼び出し／オペレーションを、コンパイルのフロントエンド段階に挿入し、トランザクショナルメモリ変換段階の間に、呼び出し／オペレーションを低水準コードへと変換してもよい。
【００３０】
実行環境及びコンパイラの動的又は静的性質に関わらず、一実施形態において、コンパイラは、プログラムコードをコンパイルし、トランザクション実行を可能にする。このように、一実施形態において、プログラムコードの実行は、（１）メインプログラムコードをコンパイルして、トランザクション構造を維持する又はオペレーションに関連する他のトランザクションを実行するべく、動的又は静的にコンパイラプログラムを実行すること、（２）トランザクションオペレーション／呼び出しを含むメインプログラムコードを実行すること、（３）ライブラリのようなメインプログラムコードと関連付けられた他のプログラムコードの実行、（４）及びこれらの組み合わせ、を指す。
【００３１】
一実施形態において、プロセッサ１００は、ハードウェア／ロジックを利用した、すなわち、ハードウェア・トランザクショナル・メモリ（ＨＴＭ）システム内で、トランザクションの実行が可能である。ＨＴＭの実装に関しては、アーキテクチャ及びマイクロアーキテクチャの両側面において、数多くの特定の実装形態の詳細が存在するが、ここでは、本発明を不必要に曖昧にしてしまうのを回避するために、これらについて説明しない。一部の構造及び実装形態については、例示を目的として開示されている。これらの構造及び実装形態は、必ずしも必要とされず、異なる実装詳細を有する別の構造に拡張及び／又は置き換えられてもよい。
【００３２】
ローカル処理要素、及び別の処理要素の両方により、アクセス及び要求は、データ項目に対して生成される。トランザクショナルメモリシステム内の安全機構を設けずに、これらのアクセスの一部を実行すると、無効データ及び無効な実行となってしまう場合がある、すなわち、読み出しを無効にするデータへの書き込み、又は無効データの読み出しとなってしまう場合がある。したがって、プロセッサ１００は、競合の可能性を特定するために、データ項目からの及びデータ項目へのメモリアクセスを追跡又は監視するロジックを含んでもよい。
【００３３】
データ項目又はデータ要素は、ハードウェア、ソフトウェア又はこれらの組み合わせによって規定されるように、あらゆる粒度レベルでのデータを含んでもよい。データ、データ要素、データ項目又はこれらを参照するものの例には、メモリアドレス、データオブジェクト、クラス、動的言語コードの種類フィールド、動的言語コードの種類、変数、オペランド、データ構造、及びメモリアドレスの間接的参照が含まれる。データの既知のグループは、データ要素又はデータ項目と呼ばれる場合がある。上記の例のうち、動的言語コードの種類フィールド、動的言語コードの種類といった２、３の要素が、動的言語コードのデータ構造を参照する。例えば、サンマイクロシステム社のＪａｖａ（登録商標）のような動的言語コードは、強く定型化された言語である。各変数は、コンパイル時に理解される種類を有する。種類は、２つのカテゴリに分類され、１つは、プリミティブ型（例えば、ｉｎｔ、ｆｌｏａｔのような論理式や数値）であり、もう１つは、参照型（クラス、インターフェース及びアレイ）である。参照型の値は、オブジェクトを参照する。Ｊａｖａ（登録商標）では、複数フィールドから構成されるオブジェクトは、クラスインスタンス又はアレイである。クラスＡのオブジェクトａの場合、タイプＡのｘのフィールドを指すのにＡ：：ｘという表記が、クラスＡのオブジェクトａのフィールドｘを指すのにａ．ｘという表記が慣例的に使用される。例えば、式は、ａ．ｘ＝ａ．ｙ＋ａ．ｚと表すことができ、これは、フィールドｙとフィールドｚがロードされて加算され、その結果が、フィールドｘとして記載されることを意味する。
【００３４】
データ項目へのメモリアクセスの監視及びバッファリングは、あらゆるレベルの粒度のデータで実行される。例えば、一実施形態では、データへのメモリアクセスは、タイプレベルで監視される。ここで、フィールドＡ：：ｘへのトランザクション的書き込み、及びフィールドＡ：：ｙの非トランザクション的ロードは、同じデータ項目、すなわちタイプＡ、へのアクセスとして監視される。別の実施形態においては、メモリアクセス監視／バッファリングは、フィールドレベルの粒度で実行される。ここで、Ａ：：ｘへのトランザクション的書き込み、及びフィールドＡ：：ｙの非トランザクション的ロードは、別々のフィールドへの参照であるので、同じデータ項目へのアクセスとして監視されない。データ項目へのメモリアクセスを追跡するのに、別のデータ構造又はプログラミング技術を考えてもよい。例えば、クラスＢのオブジェクトを指し示す、クラスＡのオブジェクトのフィールドｘ及びｙ、すなわち、Ａ：：ｘ及びＡ：：ｙを仮定すると、これらは、新たに割り当てられたオブジェクトに対して初期化され、初期化された後は、二度と書き込まれることがない。一実施形態において、Ａ：：ｘによって示されるオブジェクトのフィールドＢ：：ｚへのトランザクション的書き込みは、Ａ：：ｙによって示されるオブジェクトのフィールドＢ：：ｚの非トランザクション的ロードに対して、同じデータ項目へのメモリアクセスとしては監視されない。これらの例から推測するに、監視装置は、あらゆるデータ粒度レベルでの監視／バッファリングを実行可能であると判断できる。
【００３５】
一実施形態において、監視装置は、それぞれ監視すべきと判断されたロード（読み込み）及びストア（格納）を追跡する読み出し監視部、及び書き込み監視部を含む。例えば、ハードウェア読み出し監視部及び書き込み監視部は、下層のストレージ構造の粒度に関わらず、データ項目の粒度で、データ項目を監視する。一実施形態において、データ項目には、関連付けられた追跡メカニズムにより、ストレージ構造の粒度で境界が設定され、少なくともデータ項目全体が適切に監視されるのを確かにする。データ項目を監視するための読み込み監視部及び属性の利用の例については、同時係属中の出願、代理人整理番号Ｄ７１７２０、発明者Gad Sheaffer他の"Read and Write Monitoring Attributes in Transactional Memory (TM) Systems（トランザクショナルメモリ（ＴＭ）システムにおける読み出し及び書き込み監視属性）"に記載されている。監視部、属性、アノテーション、又はその他の追跡メカニズムを利用して、あらゆる粒度のデータ又はデータを保持する構造を利用したトランザクション実行と関連する競合を検出してもよい。
【００３６】
属性の読み出し又は書き込みは、データ項目と関連付けられた状態を保持するための、あらゆるロジック、ファームウェア又は構造を含む。例えば、データ項目に対する属性は、ビットベクトルを含み、ビットベクトルにおける各ビットは、データ項目の属性を表す。データ項目の属性としては、例えば、トランザクション的にロードされた、トランザクション的書き込まれた、非トランザクション的にロードされた、非トランザクション的に書き込まれた、トランザクション的にロードされなかった、トランザクション的に書き込みされなかった、非トランザクション的にロードされなかった、非トランザクション的に書き込みされなかった、アクセス競合が検出された、アクセス競合が検出無し、読み出し要求、読み出し要求無し、書き込み要求、書き込み要求無し、オーナーシップ要求、オーナーシップ要求無し、又は、データ項目に関連付けられたその他の属性又は状態、又はデータ項目を保持するメモリロケーションが含まれる。別の例として、データ項目に対する属性には、エンコードされた値が含まれる。例えば、状態としては、次のような４つの状態が挙げられる。（１）トランザクション的書き込み、（２）トランザクション的読み出し、（３）トランザクション的に書き込まれない、（４）トランザクション的に読み出されない。これら４つの状態は、２つの属性ビット、すなわち、００、０１、１１及び１０の４つの２進値を利用してエンコードされる。
【００３７】
この設計に基づくと、キャッシュコヒーレンシ要求、及びキャッシュラインの監視されるコヒーレンシ状態の様々な組み合わせにおいて、競合が発生する可能性があり、例えば、データ項目を保持するキャッシュラインが、共有読み込み状態にあり、スヌープがこのデータ項目に対する書き込み要求を示している場合などがある。反対に、バッファされた書き込み状態にあるデータ項目を保持するキャッシュラインと、そのデータ項目の読み出し要求を示している外部のスヌープとは、競合する可能性があると考えられる。一実施形態において、このようなアクセス要求と属性状態との組み合わせを検出するために、スヌープロジックを、監視部及び／又は競合検出／報告のためのロジックのような競合検出／報告ロジックと連結する。
【００３８】
一実施形態において、データに対する属性又は特性のようなメタデータは、メモリにローカルに保持される。一例として、データは、キャッシュメモリのエントリにキャッシュされ、このデータに対するメタデータは、同じキャッシュの別のエントリに保持される。この例において、キャッシュメモリのスペースについて、メタデータはデータと競合する可能性があるが、そうであったとしても、データアレイに対する追加の拡張又は別途設けられる追加のストレージ構造無しで、メタデータをローカルに保持できる能力は、メモリ階層全体に持続可能なメタデータを行き渡らせるのにかかるコスト、及び更なるストレージ構造を増設するコストを考えると、メタデータに対する十分なサポートとなると考えられる。
【００３９】
一実施形態において、ハードウェアにおけるメタデータ対データの物理的マッピングは、ソフトウェアからは直接的見ることができない。したがって、この例においては、メタデータアクセスオペレーションは、データアドレスを参照し、適切にメタデータにアクセスするには、ハードウェアが正しい変換、すなわち、マッピングを実行することが必要となる。一実施形態において、１以上のメタフィジカルアドレス空間が、メタデータにアクセスするための物理アドレス空間にオーバーレイされる。基本的に、メモリに保持されたデータを参照するデータアドレスは、メタデータアドレスを取得するべく、変換／操作される。メタデータアドレスは、同じメモリ内の変換された異なるロケーションに位置するメタデータにアクセスするのに、使用される。
【００４０】
例示するため、メタフィジカル値がデータアドレスに付加されることにより、メタデータアドレスが生成されているとする。第１アドレスを、第２アドレスに変換（変換）するのに、あらゆる方法を使用してもよい。データアドレスのメタデータアドレスへの変換の例として、物理アドレス又は仮想アドレスに、メタフィジカル値を付加することにより、データアドレスとメタデータアドレスとを区別してもよい。別の例として、データアドレスを、別個に設けられた変換テーブル／ロジックを利用して、明確に区別可能なメタデータアドレスへと変換してもよい。
【００４１】
したがって、メモリは、ソフトウェアに関して透過的な態様で、データ項目に対するメタデータを保有してもよい。ハードウェアが、明示的なオペレーションコード（命令のオペコード）又は命令のメタデータアクセスマイクロオペレーションへのデコードを通じて、メタデータに対するアクセスオペレーションを検出すると、ハードウェアは、メタデータへのアクセスオペレーションによって参照されるデータアドレスの必要な変換を実行する。ここで、メタデータは、ロッシー（損失可能性の高い）なデータである場合がある、すなわち、メタデータは、メタデータを保持するエントリの追い出しのために行われる選択において、失われてしまう場合がある。しかしながら、監視属性の競合又は損失を扱うのと同様な方法で、損失したメタデータを保持することができ、これについては、代理人整理番号Ｐ２９１２９、発明者Gad Sheaffer他の出願明細書、名称"Registering a User-Handler in Hardware for Transactional Memory Event Handling（トランザクションメモリイベント取り扱いのための、ユーザーハンドラのハードウェアへの登録）"に記載されている。
【００４２】
最初に図１を参照して上記で説明したように、プロセッサ１００は、説明のために純粋に例示することだけを目的として示されている。同様に、メタデータを参照するためのデータアドレスの変換の具体的な例も、単なる例に過ぎず、データとメタデータとを同じメモリの異なるエントリに関連付けるあらゆる方法を使用することができる。
【００４３】
図２ａには、データと関連付けられたメタデータを保持するためのメタフィジカルアドレス空間の一実施形態が示されている。制御ロジック２５０、タグアレイ２０５及びデータアレイ２０７といったキャッシュメモリの部分が示されており、説明を簡易にするために、制御回路の具体的な部分、例えば、キャッシュルックアップ、ヒット及びミス回路、及びその他の大きな構成については記載していない。キャッシュの最も一般的な例は、図１に示すように一次キャッシュ又は二次キャッシュのようなデータキャッシュを含む。しかしながら、キャッシュは、それ以外にも、命令キャッシュ、トレースキャッシュ又はその他の周知のキャッシュを含んでもよい。
【００４４】
説明を不必要に不明瞭にしない目的から、キャッシュアーキテクチャについて詳述しないが、キャッシュは、数多くの態様で編成される。例えば、キャッシュは、完全に関連付けられていてもよい、すなわち、メモリアドレスはキャッシュのいずれかの場所に保持され、メモリアドレスの特定の範囲はキャッシュの特定のセットに限定される、又は複数のアドレスがキャッシュ内のそれぞれ１つのロケーションに保持されるように直接マッピングされる。本明細書に記載される方法及び装置は、いかなるキャッシュ構成を使用して実装されてもよい。
【００４５】
例示されるように、キャッシュは、データキャッシュメモリ又はデータアレイとも称されるデータ部分２０７、データアレイ２０７と関連付けられたタグアレイ２０５、並びに、タグアレイ２０５及びタグアレイ２０７と関連付けられた制御ロジック２３０を含む。データ部分２０７は、要素 ２１０、２１５、 ２２０及び２２５を含む。本明細書で使用されているキャッシュ要素とは、キャッシュライン、キャッシュエントリ、キャッシュロケーション又はキャッシュセットといった、キャッシュのあらゆる粒度の構造的要素を意味する。例えば、要素２１０は、複数ラインのうちの１ラインのような複数エントリのうちの１エントリを、セット内に含む。
【００４６】
図示されるように、メタデータ２０９及びデータ項目２０８は、データアレイ２０７の別々のエントリに保持される。しかしながら、メタデータ２０９は、データ項目２０８の属性又は特性表すという点で、データ項目２０８と関連付けられ、データ項目２０８に対するデータアドレスは、エントリ２１０と関連付けられて、エントリ２１５内のメタデータ２０９を参照するためのメタデータアドレスとして利用される又はメタデータアドレスに変換される。一実施形態において、このような態様でメタデータ２０９を保持するのは、ロッシーである、すなわち損失可能性が高いと考えられる。すなわち、メタデータ２０９は、ロッシーなメタデータであると見なされる。基本的には、メモリ階層中でデータ項目２０８を追跡する持続可能なデータとは異なり、メタデータ２０９は、ローカルに構成されるデータである。
【００４７】
例えば、制御ロジック２５０が、追い出しのためにエントリ２１５を選択すると、メタデータ２０９は追い出されてしまう（エビクトされる）。この場合、メタデータデータ２０９は、データアドレスロケーションに存在しないことから、情報は維持されない、又は高次のメモリに書き戻される、すなわち、メタデータ２０９は失われることになる。ここで、キャッシュ制御ロジック２５０は、ライン２１５の、例えば、無効状態のようなキャッシュコヒーレンシ状態、又は、エントリ２１５がメタデータ２０９を保持していることを示すメタデータ値を保持する拡張フィールド２１７によっては、書き戻しを実行しなくてもよい。これについては、以下に詳述する。
【００４８】
上記のように、メタデータ２０９は、データ項目２０８に関連付けられたあらゆる属性、特性、又は情報を含む。トランザクショナルメモリシステム内では、メタデータ２０９は、幾つかの有用な方法で利用されてもよい。１つ目の例として、メタデータ２０９は、データ項目２０８についての、読み出し属性、書き込み属性及び／又はバッファリング属性のような属性を含む。データ項目２０８がトランザクション的に読み出される時、データ項目２０８が読み出し監視されている、すなわち、データ項目２０８に対する外からの書き込みは競合と見なされることを示すようにメタデータ２０９が更新される、この実装形態において、スヌープロジックは、エントリ２１５内でメタデータ２０９のスヌープ、すなわち、エントリ２１５内のメタデータのテストを実行するように、修正されてもよい。
【００４９】
別の例としては、データ項目２０８がトランザクション内で前にアクセスされた及び／又はバックアップされた場合、データ項目２０８が取り消し不能な／堅固なトランザクションと関連付けられている場合、又はデータ項目２０９が失われてしまった場合には、トランザクション的に書き込まれたデータ項目２０８のバックアップロケーションのような、その他のトランザクション関連情報、又はトランザクション関連のその他の記述的情報が、メタデータに含まれる。さらに、上述したように、メタデータの使用は、トランザクション情報に限定されない。当然の結果して、メタデータ２０９は、データ項目２０８と関連付けられた情報、特性、属性又は状態を含んでもよい。例示されるように、タグアレイ２０５は、データアレイ２０７のデータエントリ２１０、２１５、２２０、２２５にそれぞれ対応するタグエントリ２１１、２１６、２２１及び２２６を含む。エントリ２１１のような典型的なタグエントリは、エントリ２１０に保持されるデータ項目２０８と関連付けれられたアドレスの一部を保持する。キャッシュがアクセスされると、タグ値を利用して、アドレスオペレーションアドレスから、正確に対応するエントリのインデックスへと、タグアレイ２０５が検索／参照される。一実施形態において、アドレス２０１のようなアドレスは、タグアレイ２０５のタグ拡張フィールド２１２、２１７、２２２及び２２７に保持されるように、拡張ビットを使用して拡張される。ここで、拡張フィールドは、対応するデータエントリがデータ又はメタデータを有するかを示す値を保持する。例えば、拡張フィールド２１２は、データ項目２０８のようなデータがデータエントリ２１０に保持されていることを示すデータ値を有し、拡張フィールド２１７は、データエントリ２１５がメタデータ２０９のようなメタデータを保有することを示すメタフィジカル値を保有する。
【００５０】
拡張フィールド２１７のような拡張フィールドに保持されるメタフィジカル値は、対応するメタデータを保持するエントリを表すあらゆる値を含んでもよい。さらに、制御レジスタのようなハードウェア、命令パラメータによって提供されたキャッシュ制御ロジック２５０内の初期設定、又はこれらの組み合わせによって、メタフィジカル値が提供されてもよい。
【００５１】
一実施形態において、拡張フィールド２１７は、タグエントリ２１６の最上位ビット（ＭＳＢ）のような１つのビットを保持する。ここで、エントリ２１５がメタデータを保持すると、エントリ２１７は、論理的高値（Ｈ）のような第１の論理値を保持する。反対に、拡張フィールド２１２は、論理的高値（Ｌ）のような第２の論理値を保持して、エントリ２１０がデータを保持していることを示す。例示するため、データアドレスとメタデータアドレスとの間の最も基本的な変換に照らし合わせて、簡潔な例を記載する。すなわち、データ項目２０８及び２０９に対して、タグエントリ２１１及び２１６が同じになり、拡張フィールドのみが異なる場合である。ここで、物理アドレス部分のような、アドレス２０１の一部は、タグアレイ２０５のタグエントリに保持される。
【００５２】
データ項目２０８に対するデータアドレスを参照するアクセスオペレーションが受信されたとする。制御ロジック２０８は、タグアレイ２０５の検索を実行して、データアドレスに対してタグの一致が存在するかを判断する。ここで、アクセスオペレーションが、データ項目２０８にアクセスする通常のデータアクセスオペレーションである場合、データ値は、データアドレスに関連付けられ、検索の結果は、エントリ２１１及び拡張フィールド２１２の一致となる。このとき、エントリ２１６との間では一致が存在せず、拡張フィールド２１７は、メタフィジカル値、すなわち、この例の場合では論理値の１を含む。反対に、アクセスオペレーションが、メタデータアクセスオペレーションを含む場合には、メタフィジカル値の論理値１がデータアドレスに添付され、検索結果は、拡張フィールド２１７に、エントリ２１６のヒットとなる。同様に、拡張フィールド２１２がデータ値を保持しているため、エントリ２１１に対してはヒットしない。
【００５３】
この例に示されるように、プログラムは、データアクセスオペレーション又はメタデータアクセスオペレーションのような別個の複数のオペレーションを含み、これらのオペレーションは、データ項目２０８のようなデータ項目の同じアドレスを参照する。そして、ハードウェアは、これらのアクセスを、物理アドレス空間及びメタフィジカルアドレス空間のような異なるアドレス空間へとマップする。データ及びメタデータに対するタグエントリにおいて、それぞれに個別の値が使用される場合には、アドレス空間は直交となる、すなわち、データ項目を保持する対応するデータエントリのための拡張フィールドが、メタデータアクセスオペレーションのルックアップ拡張値と一致しないことから、メタデータアクセスオペレーションは、データエントリにヒットしない又はデータエントリを変更しない。しかしながら、メタデータ及びデータアドレス空間は、キャッシュにおける空間に対して競合し、競合を通じて互いに影響を与える場合もある。
【００５４】
加えて、ロッシーなメタデータの一実施形態において、メタデータアクセスオペレーションに対するタグアレイ２０５のミスは、キャッシュメモリドメインの外側でミスを補修しない。基本的には、ロッシーなメタデータ２０９は、キャッシュドメイン内にローカルに保持されることから、要求に応えてミスを外部に転送する理由がない。したがって、ロッシーなメタデータに対するミスは、迅速で効率的な態様で補修される場合がある。例えば、メタデータに対してキャッシュブロックが割り当てられ、外部の応答を待つことなく、所定の初期値へと初期化される。
【００５５】
上記の例に加えて、一実施形態では、タグアレイ２０５の拡張フィールドは、複数のビットを含む。第１の例では、タグアレイ２０５における複数のビットは、データアドレス空間に重ねあわされた複数の別個のメタフィジカルアドレス空間を含んでもよい。この場合、各ビット又は複数ビットのグループは、別個のメタデータ、同じ又は異なるメタデータと関連付けられた別個の処理要素、同じ又は異なるメタデータを有するプログラムの様々な部分、同じ又は異なるメタデータを有する様々なサブシステム、又はアドレス空間と関連付けられたその他の既知の要素に対するメタフィジカルアドレス空間に対応する。
【００５６】
例えば、２つのコアのような２つの処理要素を仮定すると、これらはキャッシュへのアクセスを共有する。拡張フィールド２１７の第１のビットは、第１の処理要素と関連付けられた第１のメタフィジカルアドレス空間に対応し、拡張フィールド２１８の第２のビットは、第２の処理要素と関連付けられた第２のメタフィジカルアドレス空間に対応している。上記の例の場合、データアドレス２０１へのメタデータアクセスが第１処理要素で発生すると、タグアレイ２０５の検索が実行され、メタフィジカル論理値に第１のビットが設定されるので、第２の処理要素においてメタフィジカルアドレス空間に対するヒットが発生しないようになっている。
【００５７】
ある例では、処理要素が異なるメタフィジカルアドレス空間へアクセスするのが望ましい場合が存在し、例えば、第２の処理要素によって属性が第２のメタフィジカルアドレス空間に設定されたか否かを、第１の処理要素がチェックする場合が考えられる。一実施形態において、拡張フィールドは、その他の情報を含む。例えば、複数処理要素に対する複数ビットの代わりに、コンテキストＩＤのような処理要素識別子を複数ビットで表してもよい。さらに、制御レジスタ値、命令パラメータ値、又はその他の値を使用して、拡張フィールドの複数ビットを満たしてもよい。
【００５８】
メタデータアクセスオペレーションは、アクセスデータに対して明示的な命令／オペレーションを含んでもよい。プロセッサのデコーダは、命令セットアーキテクチャのオペレーションコード（オペコード）によって、メタデータアクセスオペレーションを認識してもよい。加えて、より大きく複雑な命令がデコードされる場合には、命令は、メタデータアクセスマイクロオペレーションを含んでもよい。例えば、データ項目２０８をバックアップする命令が、データ項目２０８の前のバージョンの書き込みをバックアップロケーションに対して実行する第１マイクロオペレーション、及びバックアップロケーションのアドレスを保持するメタデータ２０９を更新する第２マイクロオペレーションにデコードされる。
【００５９】
上述したように、一実施形態において、メタデータ２０９は、ハードウェアにおいてデータ項目２０８と関連付けられる。記載したように、データ項目２０８及びメタデータ２０９は、圧縮されていない、すなわち、メタデータとデータとの間は１対１の関係が成り立つ。すなわち、メタデータ２０９のサイズは、データ項目２０８のサイズと同じである。メタデータ圧縮について、以下に詳細に記載する。一実施形態において、ハードウェアにおけるメタデータ２０９とデータ項目２０８との関連付けは、データ項目２０８に対するエントリ２１０へと指標付けするデータアドレスを、データ項目２０９に対するエントリ２１５へと指標付けするメタデータアドレスへと変換するロジックを含む。変換例には、更なるメタフィジカル値を付加しない変換、更なるメタフィジカル値を付加する通常のデータアドレス変換、及びメタフィジカル変換ロジックを使用する別の変換が含まれる。メタデータからデータへの変換の例を列挙した不完全であるリストは、図３ａ−３ｂを参照して以下に詳述する。
【００６０】
図２ｂを参照して、データと関連付けられたメタデータを保持するためのメタフィジカルアドレス空間の別の実施形態を示す。上述したように、メタデータが、データと同じアレイに保持される場合には、メタデータは、キャッシュ空間を、データと争ってもよい。したがって、一実施形態では、図２ｂに示されるように、メタデータは、並列キャッシュメモリ２６０に保持される。この場合、データアドレスからメタデータアドレスの取得のような、上述した方法及び装置を、同じ態様で実行してもよい。しかしながら、メタデータアドレスに対するエントリデータアレイ２０７を選択する替わりに、並列メタデータアレイ２６０内のエントリが選択される。一例として、アドレス拡張２３０に保持されたメタフィジカル値のような、メタフィジカル識別子値に基づく、アレイ、セット、ウェイ、ブロックとの間の選択に、マルチプレクサを使用してもよい。したがって、上記の説明と同様に、メタデータアドレスは、所与のデータ項目のデータアドレスから取得してもよい。しかしながら、この例では、データアレイ２０７内ではなく、選択が、並列アレイエントリ２６０において行われる。同様にメタデータ２０９がデータ項目２０８と関連付けられるが、異なる物理ストレージ構造に保持される。
【００６１】
図３ａには、メタフィジカルアドレス空間に対するアクセスをサポートする構造の実施形態が示されている。アドレス生成ユニット（ＡＧＵ）３２０は、上述したように、アクセスオペレーションに応答して、アドレスを生成する。仮想アドレス変換を使用したプロセッサを参照して、アドレス指定及び変換を以下に説明する。すなわち、参照された仮想アドレスを物理アドレスへと変換するプロセッサにおいて規定されたページテーブルを使用する物理的メモリの仮想ビューを使用したアドレス指定及び変換を説明する。しかしながら、アドレス指定は、数多くの態様で実装されてもよく、本明細書に記載する方法及び装置を、いかなるアドレス指定方法を使用して実装してもよい。
【００６２】
一実施形態において、データアドレス３０１のメタデータアドレスへの変換を通じて、データ項目は、メタデータアドレスと関連付けられる。第１の例として、変換は、典型的な仮想アドレスの物理アドレスへの変換を伴わない、データアドレス３０１の拡張を含む。基本的に、データアドレスの仮想アドレスは、メタデータアドレスに対して使用される。反対に、メタデータアドレスは、変換構造を通じて、同様な態様で、データアドレスへと変換されてもよい。
【００６３】
図示されるように、トランスレーション・ルックアサイド・バッファ（ＴＬＢ）３２５は、仮想アドレス２０１のような仮想アドレスを、物理アドレスへと変換する。幾つかのプロセッサアーキテクチャでは、仮想アドレス及び物理アドレスは、アドレスの一部を共有し、例えば、４Ｋバイトページのアドレス２０１に対してはビット０‐１１を共有する。第１の例として、メタデータアドレスは、データアドレスと同じであるとする。すると、アレイ３０５におけるキャッシュタグは、データ及び関連付けられたメタデータに対して同じとなるが、データエントリとメタデータエントリとの間を区別する拡張フィールドは異なっている。
【００６４】
次に、図２ａをもう一度参照する。メタデータエントリ２１５に対応するタグエントリ２１６は、データエントリ２１０に対応するタグエントリ２１１と同じである。しかしながら、拡張フィールド２１２は、エントリ２１０がデータを保持していることを示すデータ値を有し、拡張フィールド２１７は、エントリ２１５がメタデータを保持していることを示すメタデータ値を有する。したがって、データエントリ２１５からのメタデータ２０９の読みだしに対するキャッシュルックアップが発生すると、メタデータ値が、タグ値に付加され、エントリ２１５に対応するタグエントリ２１７をヒットする。同様に、メタデータ２０９の格納オペレーションでは、レジスタに保持された命令パラメータ又は値のいずれかに基づいて、拡張フィールド２１７に読み込まれたメタフィジカル値と共に、エントリ２１５が、データアレイ２０７に割り当てられる。
【００６５】
上記の説明から、メタデータアクセスは、同じデータアドレスにアクセスしても、メタデータエントリをヒットするのみであって、拡張タグエントリに保持されているデータ値は、添付された／拡張されたメタデータ値とは一致しないことに留意すべきである。データタグ値が、拡張フィールド以外は変更されないというシナリオでは、メタデータのデータに対する局所性は、有益である可能性がある。この例では、データアレイ２０７内のセットを選択するアドレスの部分が同じであることから、エントリ２１０及び２１５は、群連想キャッシュ（セット・アソシアティブ・キャッシュ）の同じセットに存在する。
【００６６】
図３ｂには、メタフィジカルアドレス空間へのアクセスをサポートする構造の別の実施形態が示されている。ここでも、ＴＬＢ３２５は、仮想アドレス３０１を、物理アドレスへと変換する。ＴＬＢ３２５は、最近の変換を保持するルックアップテーブルと同様な態様で動作する。加えて、最近の変換が見つからない場合は、通常、ＴＬＢと関連付けられた処理要素のレジスタにおいて規定されたページテーブルに基づいて、仮想アドレスが変換される。一実施形態において、メタフィジカルアドレス変換（ＭＡＴ）バッファ３５０は、データアドレスを、メタデータアクセスのためのメタデータアドレスへと変換する。例えば、ＭＡＴバッファ３５０は、ＴＬＢ３２５と同様な態様で動作する。一実施形態において、ＭＡＴバッファ３５０は、レジスタに定義されたメタフィジカルページテーブル又はその他の情報に基づいて、データアドレス３０１を、メタデータアドレスへと変換する。
【００６７】
変換ロジック３５０と連結されたキャッシュルックアップロジックは、メタデータアドレスのタグ部分が、タグアレイに含まれたタグエントリに保持されたタグ値に一致した場合に、タグエントリへのヒットを判断する。メタデータ値は、別々に変換されたとしても、アドレスに添付されてもよく、メタフィジカルアドレス空間と、物理アドレス空間との分離を助ける。このようにして、本例では、メタデータアクセスオペレーションによって参照されるデータアドレスに対するヒットは、メタフィジカル変換ロジック３５０を介したアドレス３０１のメタデータアドレスへの変換、及びメタデータアドレスと、タグアレイ３０５におけるキャッシュタグとの照合を含む。以下に説明するように、メタフィジカルアドレス変換ロジック３５０は、圧縮比に応じて、データアドレスをメタデータアドレスに変換する。
【００６８】
変換方法に関わらず、すなわち、一実施形態において、別々の複数のテーブルを通じた変更又は変換が存在せず、メタデータ対データは、圧縮される。すなわち、圧縮比は、メタデータの量と比較したデータの量である。例えば、圧縮比が８、すなわち、８：１の場合、データ８ビットに対してメタデータは１ビットであり、データが８バイト（クワッドワード：ｑｕａｄｗｏｒｄ）に対して、メタデータは１バイトとなる。
【００６９】
図４は、データ対メタデータの圧縮比が８の場合の実施形態を示したものである。制御ロジックは、メタデータアクセスオペレーションによって参照されるデータアドレス４０１を受信する。圧縮のため、ｌｏｇ２（Ｎ）の数のビットがシフト及び／又は取り除かれる。ここでＮは、メタデータに対するデータの圧縮比である。例示した例では、圧縮比が８であり、３ビットがシフトダウンされて、メタデータアドレス４０２から取り除かれる。基本的に、アドレス４０１は、メモリにおける特定のデータバイトを参照する６４ビットを含み、このアドレスの３ビットが切り捨てられて、バイト粒度でメモリにおけるメタデータを参照するのに使用されるメタデータバイトアドレス４０２が形成される。そして、メタデータバイトアドレスを形成するのにアドレスから取り除かれた３ビットを使用して、メタデータの１つのビットが選択される。
【００７０】
一実施形態において、シフトされた／取り除かれたビットは、別のビットで置き換えられる。図示されるように、アドレス４０１がシフトされた後に、高位のビットは、ゼロビットで置き換えられる。しかしながら、シフトされた／取り除かれたビットは、メタデータアクセスオペレーションと関連付けられたコンテキスト識別子（ＩＤ）のような、別のデータ又は情報で置き換えられてもよい。この例では、最も下位に位置する複数のビットが取り除かれたが、キャッシュ組織、キャッシュ回路タイミング、データとメタデータとの間の競合の最小化等のあらゆる因子に基づいて、いかなる位置のビットを取り除き、置き換えてもよい。
【００７１】
例えば、データアドレスは、ｌｏｇ２（Ｎ）だけシフトしなくてもよく、アドレスビット０：２がゼロにされてもよい。この場合、同一である物理アドレス及び仮想アドレスのビットは、上記の例のようにはシフトされず、セットの事前選択、及び無修正ビット、例えば、ビット１１：３のバンクが可能となる。ここでは、取り除かれたビット０：２を使用したビット選択の替わりに、１バイトからの１ビットの選択は、高位の３ビットのような異なる３つのビットを使用して行われる。この実装形態は、タイミングに好適であると考えられるが、高位のタグ値は異なることから、メタデータがデータと隣接していない、すなわちデータのメタデータに対する局所性が存在しない場合がある。
【００７２】
一実施形態では、アドレス４０１のビットがシフトされた、取り除かれた又は置き換えられた、の何れの処理が行われたかに関わらず、メタフィジカル値を含むアドレス拡張タグは、メタデータアドレス４０２に添付される。例示した場合では、メタフィジカル値は、論理値１を含み、アドレス４０２がメタデータアドレスであることを示す。上述のように、メタフィジカル値は、制御レジスタ又は命令パラメータのような、ハードウェア、ファームウェア、ソフトウェア又はこれらの組み合わせによって定義されるいかなる固定値を含んでもよい。また、上述したように、一実施形態において、ビット６３‐６５、又は図４に示されていないメタフィジカル値を含む拡張フィールド内の付加ビットのような、シフトされた又はゼロ化されたビットは、その他の情報によって増加されてもよい。例えば、コア、コンテキスト、又はスレッドＩＤのような処理要素ＩＤを、拡張部としてアドレス４０２に付加してもよい。
【００７３】
適切な拡張ビットが付加されると、ビット６４を有する拡張フィールドを含むメタデータアドレス４０２のタグ部分を使用して、タグアレイ４０５が検索される。メタデータロード／テストオペレーション又は書き込みオペレーションの場合、タグアレイ４０５がタグ値の照合のために検索される、すなわち、拡張ビット及びタグに含まれる仮想アドレスの一部が、メタデータアドレス４０２と、拡張フィールド４１７を含むタグエントリ４１６のようなタグアレイ４０５内のタグエントリとの間で一致する。
【００７４】
書き込みメタデータオペレーションが、タグアレイ４０５に対してミスであった場合、すなわち、メタデータがまだ生成されていなかった場合、エントリは、通常の態様で、キャッシュメモリのメタデータに対して割り当てられる。例えば、メタデータアドレス４０２及びラスト・リーセントリ・ユースド（ＬＲＵ）アルゴリズムのようなキャッシュ置き換えアルゴリズムに基づいて、エントリ４１５のようなエントリが、選択され、割り当てられ、メタデータ初期値へと初期化される。そして、メタデータと通常のデータとの間で、空間に対する競合が発生する可能性がある。
【００７５】
図５は、データのメタデータへの圧縮、及び拡張フィールドの使用した別の実施形態を示す図である。ここでは、メタデータのビットは、６４バイトで表される、すなわち、比は、５１２：１である。上記の例と同様に、データアドレス５０１は、変換／変更されて、データアドレス５０１を、ｌｏｇ２（５１２）ビット、すなわち、９ビット分シフトダウンすることにより、メタデータアドレス５０２を生成する。ここで、ビット０：２の替わりに、ビット６：８が使用されてビットが選択され、５１２ビットの粒度での選択を通じて圧縮が効果的に行われる。そして、シフトされた仮想アドレスの残りの部分、すなわち、ビット６３：２１は、メタデータアドレス５０２のタグ値５０３の部分として利用される。
【００７６】
アドレス５０２が９ビット分シフトされたので、アドレス５０２の高位の部分には、９ビット分の情報保持ロケーションが空くことになる。一実施形態において、この９ビットは、コンテキストＩＤ及び／又はスレッドＩＤのような拡張子を保持する。加えて、メタフィジカル空間値は、これらのビットに保持されてもよいし、アドレスは、メタフィジカル空間ビットによって拡張されてもよい。上記で説明した検索及び置き換えと同様な態様で、タグアレイ５０５が、メタデータタグ５０３で検索される。ここで、識別子とアドレス空間が一致しない場合には、ヒットが検出されない、すなわち、ミスと判断される。その結果、この例は、スレッドＩＤ及びコンテキストＩＤ粒度のメタデータを提供する能力を提供できる可能性がある。しかしながら、幾つかの実装形態では、複数のＩＤに渡るアクセスは有用である。例えば、別のスレッドに対するメタデータの監視が、関連付けられたデータ項目が別のスレッドによって監視されているかを判断するスレッドによってチェックされる場合などが考えられる。このシナリオでは、マスクを、タグ比較値に適用して、１つのスレッドが、別のスレッドのメタデータにヒットするようにしてもよい。
【００７７】
一実施形態において、メタデータのためのシフトされたアドレスは、通常のデータアクセスと多重化される。この場合、メタフィジカル空間値は、通常データキャッシュアクセスとメタデータキャッシュアクセスとの間の選択を行う多重化入力として利用されてもよい。また、上記の実装形態におけるストア転送の実行と同様な方法で、メタデータ情報のストアをメタデータロードに転送してもよい。一実施形態において、追加の制約を、メタデータアドレスに対して課してもよく、例えば、圧縮比に渡る転送を防ぐような制約を行ってもよい。
【００７８】
一実施形態において、複数の並行圧縮比を、ハードウェアによってサポートしてもよい。圧縮比の表現は、拡張タグビットに保持される。そして、タグアレイの検索の間に、圧縮比が考慮される。さらに、メタデータストアがメタデータロードに転送されるべきか判断するために、圧縮比をテストしてもよい。
【００７９】
一実施形態において、キャッシュハードウェアは、１つの圧縮比を使用して実装されるが、複数の圧縮比をソフトウェアに対して提示すハードウェアサポートを含む。例えば、図４に示されるように、キャッシュハードウェアが、８：１の圧縮比を利用して実装されるとする。様々な粒度でメタデータにアクセスするメタデータアクセスオペレーションは、メタデータの初期量を読み込むマイクロオペレーション、及び読み込まれるメタデータの適切な部分をテストするテストマイクロオペレーションを含むようにデコードされる。例えば、読み込まれるメタデータの初期値は、３２ビットである。しかしながら、８：１テストの様々な粒度／圧縮に対するテストオペレーションは、読み込まれるメタデータの３２ビットの正しいビットをテストし、テストは、メタデータアドレス及び／又はコンテキストＩＤの複数のＬＳＢのような、アドレスの特定の複数ビットに基づいて行われてもよい。
【００８０】
例示するように、アラインされていないデータに対するメタデータを、データ１バイトにつきメタデータ１ビットでサポートするスキームにおいては、メタデータアドレスの最下位（ＬＳＢ）３ビットに基づいて、メタデータの３２読み込みビットの最下位８ビットから１つのビットが選択される。データのワードの場合、読み込まれるメタデータの３２ビットの最下位１６ビットから、アドレスの最下位３ビットに基づいて、連続したメタデータの２ビットが選択されて、同じように、１２８ビットのメタデータサイズに対して１６ビットが選択される。
【００８１】
一実施形態において、上述のスキームの場合、受け渡されるメタデータアドレスのビットに基づく、左シフトオペレーションにより、マスクが生成される。左シフトオペレーションを生成するマスクの例としては、以下のようなものが含まれる。
【数１】
0005451776.tif 000002
【００８２】
このマスクは、ロード（ｌｏａｄ）／リード（ｒｅａｄ）マイクロペレーションによって読まれたメタデータの３２ビットでビット的論理ＯＲされ、その結果の３２ビットが、更に一緒に、論理ＡＮＤされて、メタデータをテストする又はフラグをセットする。
【００８３】
別の実装例では、所与のデータサイズに対して１つのビットが利用される、すなわち、非アラインデータサポートが不可能とされる。このスキームでは、受け渡されたメタデータアドレスビットのサブセット及び処理要素ＩＤビットに基づいた、シフトレフトオペレーションにより、マスクが生成される。したがって、１バイトにつき１ビットで圧縮されたメタデータについては、全てのメタデータビットが、各バイトに対して使用される。１ワードにつき１ビットで圧縮されたメタデータについては、２番目のビットのみがそれぞれ使用される等、読まれた３２メタデータビットのうち１ビットのみが３２バイトのデータオペランドに対して使用される。大きなデータサイズ（高い圧縮率）に対してメタデータストレージが疎になると、余ったスペースに、複数コンテキストに対するメタデータを隣り合わせで格納できる機会が生じる。つまり、アドレスＬＳＢビット及びコンテキストＩＤ（ＣＩＤ）の組み合わせに基づいて、読み出された３２メタデータビットから、正しいメタデータビットを選択できることを意味する。
【００８４】
シフトレフトオペレーションを生成するマスクの例としては、以下に示すようなものが含まれる。
【数２】
0005451776.tif 000003
【００８５】
マスクは、第１マイクロペレーションによって読み出されたメタデータの３２ビットでビット的論理ＡＮＤされ、その結果の３２ビットが、さらに一緒に、論理ＯＲされて、メタデータをテストする又はフラグをセットする。
【００８６】
図６は、データに対するメタデータにアクセスする方法を示したフローチャートである。図６のフローは、ほぼ順次的に記載されているが、少なくとも部分的に並行して、又は異なる順番で、フローを実行してもよい。フロー６２０では、所定のデータ項目に対するデータアドレスを参照するメタデータオペレーションが発生する。メタデータオペレーションの例には、ロード／テスト及びストア／ライト（書き込み）／クリア（消去）オペレーション、又はマイクロオペレーションが含まれる。メタデータアクセスオペレーションは、メタデータにアクセスする明示的なソフトウェ命令／オペレーションであってもよく、また、例えば、関連付けられたメタデータの更新を明示的に要求するデータ項目へのアクセスのような、より大きく複雑な命令の一部としてデコードされた明示的マイクロオペレーションであってもよい。また、実行形態は、保護リング遷移、異なるプロセッサ動作モードへの遷移、又はメモリページの再マッピングのような特定のシステムイベントに基づく所定のコンテキスト、スレッド又はプロセッサに対する全てのメタデータをバルク（一括）で消去することを選択してもよい。
【００８７】
メタデータアドレスは、参照されたデータアドレスから決定される。メタデータアドレスの決定方法の例には、以下のようなものが含まれる。（ｉ）データアドレスを、物理アドレス変換に対して仮想的な通常のデータを利用した別のデータアドレスへ変換する。（ｉｉ）メタフィジカル拡張を、仮想データアドレスに付加し、メタデータアドレスを生成する。（ｉｉｉ）メタフィジカル変換テーブルを利用して、データアドレスから物理メタデータアドレスへと変換し、メタフィジカル拡張を、物理メタデータアドレスに添付して、メタデータアドレスを生成する。
【００８８】
さらに、変換は、メタデータに対するデータの圧縮比を組み込んでもよい、すなわち、この圧縮比に基づいてもよく、各圧縮比に対して、メタデータを別々に格納してもよい。
【００８９】
フロー６３０では、キャッシュメモリのメタデータエントリが、メタデータアドレスに基づいて決定される。例えば、メタデータアドレスのタグ部分は、タグアレイを検索するのに使用される。メタフィジカル値を含むタグ部分が、タグエントリに一致しない場合には、ミスが発生する。一実施形態において、キャッシュミスを補修するスヌープ要求を発行する替わりに、メタデータは、キャッシュメモリにのみ保持されるロッシーな（損失可能性の高い）メタデータであることから、キャッシュドメインの外側に要求を行うことなく、ミスをローカルで補修する。そして、エントリに適切なメタデータタグが保持される通常のキャッシュ割り当てに従って、エントリが割り当てられ、データストレージ要素が、メタデータ値の初期値で初期化される。これにより、関連付けられたデータ項目に関して、メタデータの局所性及びタイミングが、改善される可能性がある。一方、ヒットが発生した場合は、メタデータエントリは、直接決定される。
【００９０】
エントリの決定は、ヒット又はミス、及びエントリの割り当てを通じて判断されるか否かに関わらず、メタデータは適切にアクセスされる。例えば、ロード又はテストオペレーションの場合、メタデータが読み出される。一方、格納オペレーションの場合には、メタデータは、対応するメタデータエントリに更新される。したがって、キャッシュメモリのデータアレイに対するビットのアノテーション又は高価な追加のストレージ構造を使用することなく、メタデータは、ローカルキャッシュメモリ内にロッシーな態様で保持されてもよい。また、メタデータは、圧縮された形で、すなわち、メタデータに対するデータの圧縮比を有する形で保持されてもよい。ハードウェアは、１つの圧縮比又は複数の圧縮比を実装してもよく、別の場合には、ハードウェアが、複数の圧縮比をソフトウェアに提示してもよい。
【００９１】
本明細書で用いられたモジュールとは、任意のハードウェア、ソフトウェア、ファームウェア又はこれらの組み合わせを意味する。別個のものとして図示されているモジュールの境界は、通常変わることが多く、重複する可能性もある。例えば、第１のモジュール及び第２のモジュールは、ハードウェア、ソフトウェア、ファームウェア又はこれらの組み合わせを共有しているとしてもよいし、独立したハードウェア、ソフトウェア又はファームウェアを持つとしてもよい。一実施形態では、ロジックという用語は、例えば、トランジスタ、レジスタのようなハードウェア、又はプログラム可能な論理デバイスのようなその他のハードウェアを含む。しかしながら、別の実施形態では、ロジックはまた、ハードウェアと一体化されたソフトウェア又はコード、例えば、ファームウェア又はマイクロコードを含む。
【００９２】
また、本明細書で使用されている"値"という言葉は、数、状態、論理状態又は２値論理状態のあらゆる既知の表現を含む。また、明細書で使用されている論理レベル、論理値、又は論理的値は、１又は０といった単純に２値論理状態を意味している場合もある。例えば、１は高い論理レベルを指し、０は低い論理レベルを指す。一実施形態では、トランジスタ又はフラッシュセルのような記憶セルは、１つの論理値又は複数の論理値を保持可能であってもよい。しかしながら、コンピュータシステムにおける値の他の表現が使用されてきている。例えば、１０進数の１０は、２進値表示では、１０１０と表され、１６進数表示ではＡと表される。したがって、ある１つの値は、コンピュータシステムに保持される情報のあらゆる表示形式を含む。
【００９３】
さらに、状態は、値又は値の一部によって表されていてもよい。例えば、論理値の１のような第１の値が、デフォルト状態又は最初の状態を表していてもよく、論理値の０のような第２の値が、非デフォルト状態を表していてもよい。加えて、リセット及びセットという言葉はそれぞれ、ある実施形態では、デフォルト値又は状態及び更新された値又は状態を指す。例えば、デフォルト値は、高い論理値、すなわち、リセットを含んでもよく、更新値は、低い論理値、すなわち、セットを含んでもよい。値のどのような組み合わせを、あらゆる数の状態を表すのに利用してもよい。
【００９４】
上記の方法、ハードウェア、ソフトウェア、ファームウェア、コードの実施形態を、機械アクセス可能な又は機械可読な媒体に記憶され、プロセッシング素子によって実効可能な命令又はコードを使用して実装してもよい。機械アクセス可能／機械可読な媒体としては、コンピュータ又は電子システムのような機械によって読み出し可能な形式の情報を提供する（すなわち、記憶及び／又は送信する）あらゆるメカニズムを含む。例えば、機械アクセス可能媒体は、スタティックＲＡＭ（ＳＲＡＭ）若しくはダイナミックＲＡＭ（ＤＲＡＭ）のようなランダム・アクセス・メモリ（ＲＡＭ）、ＲＯＭ，磁気的又は光学的記憶媒体、フラッシュメモリデバイス、電気記憶デバイス、光学記憶デバイス、音響的記憶デバイス、又は他の形態の伝播信号（例えば、搬送波、赤外線信号、デジタル信号）記憶デバイス等が含まれる。例えば、機械は、搬送波のような伝播信号を、搬送波信号によって送信可能な情報を保持可能な媒体から、受信することにより、記憶デバイスにアクセスしてもよい。
【００９５】
また、本明細書における「一実施形態」又は「ある実施形態」という言葉は、実施形態に関連する特定の特徴、構造及び特性が、少なくとも本発明の実施形態の一つに含まれていることを意味する。したがって、本明細書中の様々な箇所で使用されている「一実施形態において」又は「ある実施形態において」という表現は、必ずしも同一の実施形態を示していない。また、１以上の実施形態において、特定の構成、構造又は特徴を、適切な形で組み合わせてもよい。
【００９６】
明細書の上記において、特定の例示された実施形態を参照して、詳細な説明がなされた。しかしながら、添付の特許請求の範囲に記載される本発明の範囲内において、様々な変形及び変更を加えることが可能であることは、明らかである。したがって、明細書及び添付の図面は、発明を制限するものではなく、発明を例示するものであると見なされるべきである。また、上記の実施形態及び他の例で使用された言葉は、同じ実施形態又は同じ例を必ずしも指している必要はなく、異なる及び別の実施形態を指している場合もあるし、同じ実施形態を指している場合もある。
【図１】
0005451776.tif 000004
【図２ａ】
0005451776.tif 000005
【図２ｂ】
0005451776.tif 000006
【図３ａ】
0005451776.tif 000007
【図３ｂ】
0005451776.tif 000008
【図４】
0005451776.tif 000009
【図５】
0005451776.tif 000010
【図６】
0005451776.tif 000011