JP5451776B2 - ハードウェアフィールドにロッシーなメタデータを保持するためのメタフィジカルアドレス空間 - Google Patents

ハードウェアフィールドにロッシーなメタデータを保持するためのメタフィジカルアドレス空間 Download PDF

Info

Publication number
JP5451776B2
JP5451776B2 JP2011542320A JP2011542320A JP5451776B2 JP 5451776 B2 JP5451776 B2 JP 5451776B2 JP 2011542320 A JP2011542320 A JP 2011542320A JP 2011542320 A JP2011542320 A JP 2011542320A JP 5451776 B2 JP5451776 B2 JP 5451776B2
Authority
JP
Japan
Prior art keywords
metadata
address
data
entry
metaphysical
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2011542320A
Other languages
English (en)
Other versions
JP2012512491A (ja
Inventor
シャェファー、ガッド
ライキン、シュロモ
バシン、ヴァディム
サデ、ラアナン
コーヘン、エフド
マーグリス、オレグ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of JP2012512491A publication Critical patent/JP2012512491A/ja
Application granted granted Critical
Publication of JP5451776B2 publication Critical patent/JP5451776B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address space extension
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • G06F9/467Transactional memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Advance Control (AREA)

Description

本発明は、プロセッサの実行に関し、特に、命令グループの実行に関する。
[関連出願]
本願は、以下に示す特許出願に関連する。2008年12月30日出願、代理人整理番号P29129、米国出願番号12/346,518号明細書、発明者Gad Sheaffer他"Registering a User-Handler in Hardware for Transactional Memory Event Handling(トランザクショナルメモリイベント取り扱いのための、ユーザーハンドラのハードウェアへの登録)"、2008年12月30日出願、代理人整理番号P29131、米国出願番号12/346,539号明細書、発明者Gad Sheaffer他"Memory Model for Hardware Attributes Within a Transactional Memory System(トランザクショナルメモリシステム内における、ハードウェア属性のためのメモリモデル)"、2009年12月30日出願、代理人整理番号P29130、米国出願番号12/346,530号明細書、発明者Gad Sheaffer他"Read and Write Monitoring Attributes in Transactional Memory (TM) Systems(トランザクショナルメモリ(TM)システムにおける読み出し及び書き込み監視属性)"、2008年12月30日出願、代理人整理番号P29132、米国出願番号12/346,543号明細書、発明者Gad Sheaffer他"Extending Cache Coherency Protocols to Support Locally Buffered Data(ローカルにバッファされたデータをサポートするための、拡張キャッシュコヒーレンシプロトコル)"。
半導体プロセス及びロジック設計の技術の発展に伴い、より多くの数のロジックを集積回路(IC)デバイスに組み込むことができるようになってきた。その結果、コンピュータシステム構成は、1つのシステムに1つのIC又は複数のICが設けられていた構成から、複数のコア及び複数の論理プロセッサが個々のICに搭載される構成へと進化を遂げた。典型的なプロセッサ又はICは、1つのプロセッサダイを含み、プロセッサダイは、1つ以上のコア又は論理プロセッサを含む。
コア及び論理プロセッサが数多くICに設けられるようになり、より多くのソフトウェアスレッドを並行に処理できるようになった。しかしながら、同時に実行されるソフトウェアスレッドの数が増加すると、複数のソフトウェアスレッド間で共有されるデータの同期の問題が発生する。複数のコア又は複数の論理プロセッサシステムにおいて、共有データにアクセスするためのよく知られた解決策としては、共有データに対する複数のアクセスに対して、相互排除(排他制御)を保証するロックの使用がある。しかしながら、複数のソフトウェアスレッドを実行する能力が高まり、偽り競合及び実行の直列化につながる可能性が高くなっている。
例えば、共有データを保持するハッシュテーブルを考えてみる。ロックシステムの場合、プログラマーは、ハッシュテーブル全体をロックし、1つのスレッドが全ハッシュテーブルにアクセスできるようにする。しかしながらこの構成では、他のスレッドは、ロックが解除されるまでハッシュテーブルのいかなるエントリにもアクセスできなくなることから、他のスレッドのスループット及び性能には、悪影響となる可能性がある。別の構成として、ハッシュテーブルのエントリそれぞれをロックすることが考えられる。しかしながら、この単純な例から、大きな規模のプログラムの場合について推定すると、ロック競合、直列化、細分化された同期化及びデッドロック回避の複雑性は、プログロマにとって非常に煩雑な仕事となる。
最近のデータ同期技術の別の例として、トランザクショナルメモリ(TM)の使用が含まれる。トランザクションの実行は、複数のマイクロオペレーション、処理又は命令のグループを実行することを含む。上記の例では、2つのスレッドが共にハッシュテーブル内で実行され、これらのメモリアクセスが、監視/追跡される。2つのスレッドが共に、同じエントリにアクセス又は同じエントリを変更する場合には、データの有効性を確保するために、競合解消が行われる。ある種のトランザクション実行は、ソフトウェア・トランザクショナル・メモリ(STM)を含み、この場合、メモリアクセス、競合解消、停止(abort)タスク、及びその他のトランザクションタスクが、多くの場合、ハードウェアのサポート無しで、ソフトウェアで実行される。
別の種類のトランザクション実行は、ハードウェア・トランザクショナル・メモリ(HTM)を含み、この場合、アクセス追跡、競合解消及びその他のトランザクションタスクをサポートするのにハードウェアが含まれる。実際のメモリアレイは、読み出し、書き込み及びバッファリングを追跡するためのハードウェア属性のような情報を保有する更なる複数のビットで拡張され、その結果、データは、プロセッサからメモリへと伝達される。この情報は、持続性のある情報として参照される、すなわち、この情報は、メモリ階層全体に渡ってデータと共に移動することから、キャッシュ追い出し(cache eviction)の際にも失われない。しかしながら、この持続性によって、メモリ階層システム全体に渡って多くのオーバーヘッドを課している。
同様の情報を格納する従来の別の試みとしては、ロッシー(lossy)な(損失率が高い)情報、すなわち、情報がデータと共にメモリ階層の全体を移動しないことから追い出しに伴って失われてしまうような情報を保持するデータアレイと、別個の更なる構造の拡張又は追加によって実装されている。しかしながら、データを保持する付加構造は、高価である場合がある。
本発明は、以下、例示のために記載されており、添付の図面によって限定されることを意図していない。
複数のソフトウェアスレッドを並行に実行可能な複数の処理要素を含むプロセッサの一実施形態を示した図である。 データに対するメタデータを保持するためのメタフィジカルアドレス空間の一実施形態を示した図である。 データに対するメタデータを保持するためのメタフィジカルアドレス空間の別の実施形態を示した図である。 メタフィジカルアドレス空間へのアクセスをサポートする構造の一実施形態を示した図である。 メタフィジカルアドレス空間へのアクセスをサポートする構造の別の実施形態を示した図である。 メタデータへのデータ圧縮の一実施形態を示した図である。 メタデータへのデータ圧縮の別の実施形態を示した図である。 データに対するメタデータにアクセスする方法のフローチャートである。
以下、トランザクション実行のための特定のハードウェア構成例、アクセス監視の特定の種類及び実装、特定の種類のキャッシュコヒーレンシモデル、特定のデータ粒度、特定の種類のメモリアクセス及びロケーション等の様々な特定の詳細事項が記載されるが、これらは、本発明の深い理解を提供するためのものである。しかしながら、これらの特定の詳細事項を採用しなくとも、本発明を実行可能であることは、当業者にとって明らかである。また、ソフトウェアにおけるトランザクションのコーディング、トランザクションの境界設定、特定の及び代替のマルチコア及びマルチスレッドプロセッサ構成、特定のコンパイラ方法/実装、及びマイクロプロセッサの特定のオペレーション詳細等の、よく知られている要素又は方法については、本発明を不明瞭にすることを防ぐため、記載を省略する。
本明細書に記載する方法及び装置は、ロッシーな(損失可能性の高い)メタデータを保持するメタフィジカルアドレス空間のサポートに関する。特に、メタデータに対するメタフィジカルアドレス空間について、最初に、トランザクショナルメモリシステムのサポートを参照して説明する。しかしながら、メタデータを保持するメタフィジカルアドレス空間のサポートのための方法及び装置は、これらに限定されず、関連するデータ項目に対するメタデータを保持するメモリアーキテクチャに実装してもよい。
図1には、複数のスレッドを並列して実行可能なプロセッサの一実施形態が示されている。プロセッサ100は、ハードウェアトランザクション実行のためのハードウェアサポートを含んでもよい。ハードウェアトランザクション実行と関連して、又は別に、プロセッサ100は、ソフトウェア・トランザクショナル・メモリ(STM)のハードウェア加速、STMの個別実行、又はこれらの組み合わせに対するハードウェアサポートを提供してもよく、例えば、ハイブリッド・トランザクショナル・メモリ(TM)システムを提供してもよい。プロセッサ100は、マイクロプロセッサ、埋め込みプロセッサ、デジタル信号プロセッサ(DSP)、ネットワークプロセッサ、又はコードを実行する他のデバイスのようなあらゆるプロセッサを含む。図に示すように、プロセッサ100は、複数の処理要素を含む。
ある実施形態では、処理要素とは、スレッドユニット、プロセスユニット、コンテキスト、論理プロセッサ、ハードウェアスレッド、コア、及び/若しくは実行状態又はアーキテクチャ状態のようなプロセッサの状態を保持可能な他の要素のことを指す。すなわち、ある実施形態では、処理要素は、ソフトウェアスレッドのようなコード、OS、アプリケーション又はその他のコードに独立して関連付けることが可能なあらゆるハードウェア指す。物理的プロセッサとは、典型的には、コア又はハードウェアスレッド等の他の処理要素を1以上含む集積回路(IC)のことを指す。
コアとは、多くの場合、少なくとも幾つかの専用実行リソースと関連付けられたアーキテクチャの状態がそれぞれ独立して保持される独立アーキテクチャ状態を保持可能なICに位置する論理を指す。一方コアに対して、ハードウェアスレッドとは、典型的には、独立して保持されている複数のアーキテクチャ状態が実行リソースへのアクセスを共有する独立アーキテクチャ状態を保持可能なICに位置する論理を指す。このように、あるリソースは共有され、他のリソースは1つのアーキテクチャ状態に占有されている場合には、ハードウェアスレッド及びコアという命名の境界線が重複することとなる。しかしながら、やはりコアとハードウェアとは、OSから見れば個別の論理プロセッサであり、OSは、各論理プロセッサに対して独立してオペレーションをスケジュールすることができる。
図1に示すように、物理プロセッサ100は、高レベルキャッシュ110へのアクセスを共有する2つのコア、すなわち、コア101及びコア102を含む。プロセッサ100は、非対称なコア、すなわち、異なる構成、機能ユニット及び/又はロジックを持ったコアを含んでもよいし、例示したような対称なコアを含んでもよい。コア102は、コア101と同様な構成を持つため、説明の重複を避け、以下にはその構成を詳細に記載しない。コア101は、2つのハードウェアスレッド101a及び101bを含み、コア102は、2つのハードウェアスレッド102a及び102bを含む。したがって、OSのようなソフトウェア実体は、プロセッサ100を4つの別個のプロセッサとして見なすこともでき、すなわち、4つのソフトウェアスレッドを並列に実行可能な4つのプロセッサ又は処理要素として見なすことができる。
第1のスレッドは、複数のアーキテクチャ状態レジスタ101aと関連付けられており、第2のスレッドは、複数のアーキテクチャ状態レジスタ101bと関連付けられており、第3のスレッドは、複数のアーキテクチャ状態レジスタ102aと関連付けられており、第4のスレッドは、複数のアーキテクチャ状態レジスタ102bと関連付けられている。図に示すように、複数のアーキテクチャ状態レジスタ101aは、複数のアーキテクチャ状態101bに複製されており、個々のアーキテクチャ状態/コンテキストは、論理プロセッサ101a及び論理プロセッサ101bに格納可能である。命令ポインタ及びリネーム割り当てロジック130におけるリネーム論理のようなその他の小さなリソースも、スレッド101a及びスレッド101bに対して複製されていてもよい。並べ替え(re‐order)/リタイアメントユニット135における並び換えバッファ、ILTB120、ロード/ストアバッファ及びキューのようなリソースは、領域割り当てを通じて共有されていてもよい。汎用内部レジスタ、ページ‐テーブルベースレジスタ、下位層データキャッシュ及びデータ‐TLB115、1以上の実行ユニット140、及びアウト・オブ・オーダーユニット135の部分のような他のリソースについては、完全に共有されていてもよい。
プロセッサ100は、多くの場合、完全に共有されている、領域割り当てを通じて共有されている、若しくは処理要素について占有の又は占有されている複数の他のリソースを含む。図1には、1つのプロセッサの例示的な複数の機能ユニット/リソースを持つプロセッサの純粋な例が示されている。プロセッサは、例示されている複数の機能ユニットのうち、幾つかを含んでもよいし、又は省略してもよく、図示しない他の既知の機能ユニット、論理又はファームウェアを含んでもよい。
図示するように、プロセッサ100は、プロセッサ100の外部のデバイス、例えば、システムメモリ175、チップセット、ノースブリッジ、又はその他のICとの間で通信を行うためのバスインターフェースモジュール105を含む。メモリ175は、プロセッサ100専用としてもよいし、システム内の他のデバイスと共有するとしてもよい。上位層に位置する又はより離れたところに位置するキャッシュ110は、上位層キャッシュ110から最近フェッチされた要素をキャッシュする。ここで、上位層又はより離れた位置とは、キャッシュレベルがより高い又は実行ユニットからより離れていることを指す。一実施形態では、上位層キャッシュ110は、第2レベルデータキャッシュである。上位層キャッシュ110はこれに限定されず、命令キャッシュに関連付けられてもよいし、命令キャッシュを含んでもよい。命令キャッシュの一種であるトレースキャッシュを、替わりに、デコーダ125の後に連結して、最近デコードされたトレースを記憶してもよい。モジュール120は、実行される/選択される分岐先を予測する分岐先バッファ(Branch Target Buffer:BTB)及び命令についてのアドレス変換エントリを記憶する命令変換バッファ(I‐TLB)を含む。
デコードモジュール125は、フェッチユニット120と連結され、フェッチされた要素をデコードする。ある実施形態では、プロセッサ100は、プロセッサ100で実行可能な命令を規定/特定する命令セットアーキテクチャ(ISA)と関連付けられている。ISAによって認識される機械コード命令は、一般的に、実行すべき命令又はオペレーションを参照する/特定するオペコード(opcode)と呼ばれる命令の一部を含む。
1つの例では、割り当て及びリネームブロック130は、命令処理結果を記憶するレジスタファイルのようなリソースをリザーブする割り当て部を含む。スレッド101a及び101bは、アウト・オブ・オーダー実行を行う能力を備え、割り当て及びリネームブロック130は、命令結果を追跡する記録バッファのように、他のリソースをリザーブする。ユニット130は、プログラム/命令参照レジスタを、プロセッサ100の他の内部レジスタにリネームするレジスタリネーマーを含んでもよい。並べ替え/リタイアメントユニット135は、アウト・オブ・オーダー実行及びアウト・オブ・オーダーで実行される順番が最後の方の命令のリタイアメントをサポートするために、上述のような並び換えバッファ、ロードバッファ、及び記憶バッファのような要素を含んでもよい。
ある実施形態では、スケジューラ及び実行ユニットブロック140は、実行ユニットに対して命令/オペレーションをスケジューリングするスケジューラユニットを含むとしてよい。例えば、浮動小数点命令は、利用可能な浮動小数点実行ユニットを持つ実行ユニットの一部にスケジュールされる。また、情報命令処理結果を記憶するために、実行ユニットに関連付けられたレジスタファイルが含まれている。実行ユニットの例としては、浮動小数点実行ユニット、整数実行ユニット、ジャンプ実行ユニット、ロード実行ユニット、記憶実行ユニット、及びその他の既知の実行ユニットが挙げられる。
下位層データキャッシュ及びデータ変換バッファ(D‐TLB)150は、実行ユニット140に接続されている。データキャッシュは、メモリコヒーレンシ状態で保持されているデータオペランドのような最近利用/処理されたものを、要素に記憶する。D‐TLBは、最近の仮想/線形アドレスから物理アドレスへの変換を記憶する。特別な例として、プロセッサは、物理メモリを複数の仮想ページに分割するためのページテーブル構造を持つとしてよい。
一実施形態において、プロセッサ100は、ハードウェアトランザクション実行、ソフトウェアトランザクション実行、又はこれらの組み合わせ、又はこれらの混合を実行可能である。トランザクション、すなわち、コードのクリティカルな又は不可分な部分は、不可分グループとして実効される命令、オペレーション又はマイクロオペレーションのグループ化を含む。例えば、命令又はオペレーションは、トランザクション又はクリティカル部分の境界を定めるのに使用されてもよい。以下に詳細に記載する一実施形態において、これらの命令は、上述のデコーダのようなプロセッサ100のハードウェアによって認識可能な、例えば命令セットアーキテクチャ(ISA)のような命令セットの一部である。しばしば、高水準(ハイレベル)言語からハードウェアが認識可能なアセンブリ言語へと一旦コンパイルされた命令は、デコード段階においてデコードが認識するオペレーションコード(オペコード)又は命令の別の部分を含む。
一般的には、トランザクションが実行されている間は、メモリへのアップデートは、トランザクションがコミットされるまでは、グローバルに可視化されない。一例として、あるロケーションへのトランザクションの書き込みが、別のスレッドからの読み出しに応答して、ローカルスレッドに対して可視化されたとしても、トランザクションの書き込みを含むトランザクションがコミットされるまでは、書き込みデータは転送されない。トランザクションが処理中である間、メモリ内に書き込まれた又はメモリからロードされたデータ項目/要素が追跡され、これについては以下に詳細に記載する。トランザクションがコミット点に到達し、そのトランザクションについて競合が検出されなかった場合には、トランザクションがコミットされ、トランザクションがグローバルに可視化される間に更新が行われる。
しかしながら、トランザクションが処理中に無効とされた場合には、トランザクションは中止され、更新をグローバルに可視化することなく、リスタートされる可能性がある。したがって、トランザクションの未決の状態という言葉は、本明細書では、実行が始まって、コミットされていない又は中止されていない、すなわち未決の状態であるトランザクションを指す。
ソフトウェア・トランザクショナル・メモリ(STM)システムは、多くの場合、アクセス追跡、競合解消、又は少なくとも一部がソフトウェアにおけるトランザクショナルメモリタスクの実行を参照する。一実施形態において、プロセッサ100は、トランザクション実行をサポートするプログラムコードをコンパイルするコンパイラを実行可能である。ここで、コンパイラは、オペレーション、呼び出し、関数及びトランザクションを実行可能とするその他のコードを挿入してもよい。
コンパイラは、多くの場合、プログラム又はプログラムのセットを含み、ソーステキスト/コードを、目的のテキスト/コードへと変換する。通常、プログラム/アプリケーションコードをコンパイラを使用してコンパイルする場合には、高水準プログラム言語コードを、低水準機械言語コード又はアセンブリ言語への変換する複数の段階又はパスに分けて実行される。しかしながら、簡単なコンパイルには、単一パスのコンパイラを使用することもできる。コンパイラは、既知のコンパイル技術を利用して、字句解析、前処理、構文解析、意味解析、コード生成、コード変換及びコード最適化のような、既知のコンパイルオペレーションを実行してもよい。
大きなコンパイラは、多くの場合、複数の段階を含み、これらの複数の段階は、主に大きく分けて2つの段階に含まれる。(1)フロントエンド、すなわち、通常、構文処理、意味処理及び幾つかの変換/最適化が実行される段階、(2)バックエンド、すなわち、通常、解析、変換、最適化及びコード生成が実行される段階の2つである。コンパイラの中には、ミドルエンドと呼ばれるものも存在し、これは、フロントエンドとバックエンドのコンパイラとの間の境界を曖昧にした例である。挿入、関連付け、生成又はその他のコンパイラのオペレーションの参照は、上述の段階又はパス、及びその他のコンパイラの段階又はパスのいずれかにおいて実行される。一例として、コンパイラは、1以上のコンパイルの段階に、トランザクションオペレーション、呼び出し、関数等を挿入してもよく、例えば、呼び出し/オペレーションを、コンパイルのフロントエンド段階に挿入し、トランザクショナルメモリ変換段階の間に、呼び出し/オペレーションを低水準コードへと変換してもよい。
実行環境及びコンパイラの動的又は静的性質に関わらず、一実施形態において、コンパイラは、プログラムコードをコンパイルし、トランザクション実行を可能にする。このように、一実施形態において、プログラムコードの実行は、(1)メインプログラムコードをコンパイルして、トランザクション構造を維持する又はオペレーションに関連する他のトランザクションを実行するべく、動的又は静的にコンパイラプログラムを実行すること、(2)トランザクションオペレーション/呼び出しを含むメインプログラムコードを実行すること、(3)ライブラリのようなメインプログラムコードと関連付けられた他のプログラムコードの実行、(4)及びこれらの組み合わせ、を指す。
一実施形態において、プロセッサ100は、ハードウェア/ロジックを利用した、すなわち、ハードウェア・トランザクショナル・メモリ(HTM)システム内で、トランザクションの実行が可能である。HTMの実装に関しては、アーキテクチャ及びマイクロアーキテクチャの両側面において、数多くの特定の実装形態の詳細が存在するが、ここでは、本発明を不必要に曖昧にしてしまうのを回避するために、これらについて説明しない。一部の構造及び実装形態については、例示を目的として開示されている。これらの構造及び実装形態は、必ずしも必要とされず、異なる実装詳細を有する別の構造に拡張及び/又は置き換えられてもよい。
ローカル処理要素、及び別の処理要素の両方により、アクセス及び要求は、データ項目に対して生成される。トランザクショナルメモリシステム内の安全機構を設けずに、これらのアクセスの一部を実行すると、無効データ及び無効な実行となってしまう場合がある、すなわち、読み出しを無効にするデータへの書き込み、又は無効データの読み出しとなってしまう場合がある。したがって、プロセッサ100は、競合の可能性を特定するために、データ項目からの及びデータ項目へのメモリアクセスを追跡又は監視するロジックを含んでもよい。
データ項目又はデータ要素は、ハードウェア、ソフトウェア又はこれらの組み合わせによって規定されるように、あらゆる粒度レベルでのデータを含んでもよい。データ、データ要素、データ項目又はこれらを参照するものの例には、メモリアドレス、データオブジェクト、クラス、動的言語コードの種類フィールド、動的言語コードの種類、変数、オペランド、データ構造、及びメモリアドレスの間接的参照が含まれる。データの既知のグループは、データ要素又はデータ項目と呼ばれる場合がある。上記の例のうち、動的言語コードの種類フィールド、動的言語コードの種類といった2、3の要素が、動的言語コードのデータ構造を参照する。例えば、サンマイクロシステム社のJava(登録商標)のような動的言語コードは、強く定型化された言語である。各変数は、コンパイル時に理解される種類を有する。種類は、2つのカテゴリに分類され、1つは、プリミティブ型(例えば、int、floatのような論理式や数値)であり、もう1つは、参照型(クラス、インターフェース及びアレイ)である。参照型の値は、オブジェクトを参照する。Java(登録商標)では、複数フィールドから構成されるオブジェクトは、クラスインスタンス又はアレイである。クラスAのオブジェクトaの場合、タイプAのxのフィールドを指すのにA::xという表記が、クラスAのオブジェクトaのフィールドxを指すのにa.xという表記が慣例的に使用される。例えば、式は、a.x=a.y+a.zと表すことができ、これは、フィールドyとフィールドzがロードされて加算され、その結果が、フィールドxとして記載されることを意味する。
データ項目へのメモリアクセスの監視及びバッファリングは、あらゆるレベルの粒度のデータで実行される。例えば、一実施形態では、データへのメモリアクセスは、タイプレベルで監視される。ここで、フィールドA::xへのトランザクション的書き込み、及びフィールドA::yの非トランザクション的ロードは、同じデータ項目、すなわちタイプA、へのアクセスとして監視される。別の実施形態においては、メモリアクセス監視/バッファリングは、フィールドレベルの粒度で実行される。ここで、A::xへのトランザクション的書き込み、及びフィールドA::yの非トランザクション的ロードは、別々のフィールドへの参照であるので、同じデータ項目へのアクセスとして監視されない。データ項目へのメモリアクセスを追跡するのに、別のデータ構造又はプログラミング技術を考えてもよい。例えば、クラスBのオブジェクトを指し示す、クラスAのオブジェクトのフィールドx及びy、すなわち、A::x及びA::yを仮定すると、これらは、新たに割り当てられたオブジェクトに対して初期化され、初期化された後は、二度と書き込まれることがない。一実施形態において、A::xによって示されるオブジェクトのフィールドB::zへのトランザクション的書き込みは、A::yによって示されるオブジェクトのフィールドB::zの非トランザクション的ロードに対して、同じデータ項目へのメモリアクセスとしては監視されない。これらの例から推測するに、監視装置は、あらゆるデータ粒度レベルでの監視/バッファリングを実行可能であると判断できる。
一実施形態において、監視装置は、それぞれ監視すべきと判断されたロード(読み込み)及びストア(格納)を追跡する読み出し監視部、及び書き込み監視部を含む。例えば、ハードウェア読み出し監視部及び書き込み監視部は、下層のストレージ構造の粒度に関わらず、データ項目の粒度で、データ項目を監視する。一実施形態において、データ項目には、関連付けられた追跡メカニズムにより、ストレージ構造の粒度で境界が設定され、少なくともデータ項目全体が適切に監視されるのを確かにする。データ項目を監視するための読み込み監視部及び属性の利用の例については、同時係属中の出願、代理人整理番号D71720、発明者Gad Sheaffer他の"Read and Write Monitoring Attributes in Transactional Memory (TM) Systems(トランザクショナルメモリ(TM)システムにおける読み出し及び書き込み監視属性)"に記載されている。監視部、属性、アノテーション、又はその他の追跡メカニズムを利用して、あらゆる粒度のデータ又はデータを保持する構造を利用したトランザクション実行と関連する競合を検出してもよい。
属性の読み出し又は書き込みは、データ項目と関連付けられた状態を保持するための、あらゆるロジック、ファームウェア又は構造を含む。例えば、データ項目に対する属性は、ビットベクトルを含み、ビットベクトルにおける各ビットは、データ項目の属性を表す。データ項目の属性としては、例えば、トランザクション的にロードされた、トランザクション的書き込まれた、非トランザクション的にロードされた、非トランザクション的に書き込まれた、トランザクション的にロードされなかった、トランザクション的に書き込みされなかった、非トランザクション的にロードされなかった、非トランザクション的に書き込みされなかった、アクセス競合が検出された、アクセス競合が検出無し、読み出し要求、読み出し要求無し、書き込み要求、書き込み要求無し、オーナーシップ要求、オーナーシップ要求無し、又は、データ項目に関連付けられたその他の属性又は状態、又はデータ項目を保持するメモリロケーションが含まれる。別の例として、データ項目に対する属性には、エンコードされた値が含まれる。例えば、状態としては、次のような4つの状態が挙げられる。(1)トランザクション的書き込み、(2)トランザクション的読み出し、(3)トランザクション的に書き込まれない、(4)トランザクション的に読み出されない。これら4つの状態は、2つの属性ビット、すなわち、00、01、11及び10の4つの2進値を利用してエンコードされる。
この設計に基づくと、キャッシュコヒーレンシ要求、及びキャッシュラインの監視されるコヒーレンシ状態の様々な組み合わせにおいて、競合が発生する可能性があり、例えば、データ項目を保持するキャッシュラインが、共有読み込み状態にあり、スヌープがこのデータ項目に対する書き込み要求を示している場合などがある。反対に、バッファされた書き込み状態にあるデータ項目を保持するキャッシュラインと、そのデータ項目の読み出し要求を示している外部のスヌープとは、競合する可能性があると考えられる。一実施形態において、このようなアクセス要求と属性状態との組み合わせを検出するために、スヌープロジックを、監視部及び/又は競合検出/報告のためのロジックのような競合検出/報告ロジックと連結する。
一実施形態において、データに対する属性又は特性のようなメタデータは、メモリにローカルに保持される。一例として、データは、キャッシュメモリのエントリにキャッシュされ、このデータに対するメタデータは、同じキャッシュの別のエントリに保持される。この例において、キャッシュメモリのスペースについて、メタデータはデータと競合する可能性があるが、そうであったとしても、データアレイに対する追加の拡張又は別途設けられる追加のストレージ構造無しで、メタデータをローカルに保持できる能力は、メモリ階層全体に持続可能なメタデータを行き渡らせるのにかかるコスト、及び更なるストレージ構造を増設するコストを考えると、メタデータに対する十分なサポートとなると考えられる。
一実施形態において、ハードウェアにおけるメタデータ対データの物理的マッピングは、ソフトウェアからは直接的見ることができない。したがって、この例においては、メタデータアクセスオペレーションは、データアドレスを参照し、適切にメタデータにアクセスするには、ハードウェアが正しい変換、すなわち、マッピングを実行することが必要となる。一実施形態において、1以上のメタフィジカルアドレス空間が、メタデータにアクセスするための物理アドレス空間にオーバーレイされる。基本的に、メモリに保持されたデータを参照するデータアドレスは、メタデータアドレスを取得するべく、変換/操作される。メタデータアドレスは、同じメモリ内の変換された異なるロケーションに位置するメタデータにアクセスするのに、使用される。
例示するため、メタフィジカル値がデータアドレスに付加されることにより、メタデータアドレスが生成されているとする。第1アドレスを、第2アドレスに変換(変換)するのに、あらゆる方法を使用してもよい。データアドレスのメタデータアドレスへの変換の例として、物理アドレス又は仮想アドレスに、メタフィジカル値を付加することにより、データアドレスとメタデータアドレスとを区別してもよい。別の例として、データアドレスを、別個に設けられた変換テーブル/ロジックを利用して、明確に区別可能なメタデータアドレスへと変換してもよい。
したがって、メモリは、ソフトウェアに関して透過的な態様で、データ項目に対するメタデータを保有してもよい。ハードウェアが、明示的なオペレーションコード(命令のオペコード)又は命令のメタデータアクセスマイクロオペレーションへのデコードを通じて、メタデータに対するアクセスオペレーションを検出すると、ハードウェアは、メタデータへのアクセスオペレーションによって参照されるデータアドレスの必要な変換を実行する。ここで、メタデータは、ロッシー(損失可能性の高い)なデータである場合がある、すなわち、メタデータは、メタデータを保持するエントリの追い出しのために行われる選択において、失われてしまう場合がある。しかしながら、監視属性の競合又は損失を扱うのと同様な方法で、損失したメタデータを保持することができ、これについては、代理人整理番号P29129、発明者Gad Sheaffer他の出願明細書、名称"Registering a User-Handler in Hardware for Transactional Memory Event Handling(トランザクションメモリイベント取り扱いのための、ユーザーハンドラのハードウェアへの登録)"に記載されている。
最初に図1を参照して上記で説明したように、プロセッサ100は、説明のために純粋に例示することだけを目的として示されている。同様に、メタデータを参照するためのデータアドレスの変換の具体的な例も、単なる例に過ぎず、データとメタデータとを同じメモリの異なるエントリに関連付けるあらゆる方法を使用することができる。
図2aには、データと関連付けられたメタデータを保持するためのメタフィジカルアドレス空間の一実施形態が示されている。制御ロジック250、タグアレイ205及びデータアレイ207といったキャッシュメモリの部分が示されており、説明を簡易にするために、制御回路の具体的な部分、例えば、キャッシュルックアップ、ヒット及びミス回路、及びその他の大きな構成については記載していない。キャッシュの最も一般的な例は、図1に示すように一次キャッシュ又は二次キャッシュのようなデータキャッシュを含む。しかしながら、キャッシュは、それ以外にも、命令キャッシュ、トレースキャッシュ又はその他の周知のキャッシュを含んでもよい。
説明を不必要に不明瞭にしない目的から、キャッシュアーキテクチャについて詳述しないが、キャッシュは、数多くの態様で編成される。例えば、キャッシュは、完全に関連付けられていてもよい、すなわち、メモリアドレスはキャッシュのいずれかの場所に保持され、メモリアドレスの特定の範囲はキャッシュの特定のセットに限定される、又は複数のアドレスがキャッシュ内のそれぞれ1つのロケーションに保持されるように直接マッピングされる。本明細書に記載される方法及び装置は、いかなるキャッシュ構成を使用して実装されてもよい。
例示されるように、キャッシュは、データキャッシュメモリ又はデータアレイとも称されるデータ部分207、データアレイ207と関連付けられたタグアレイ205、並びに、タグアレイ205及びタグアレイ207と関連付けられた制御ロジック230を含む。データ部分207は、要素 210、215、 220及び225を含む。本明細書で使用されているキャッシュ要素とは、キャッシュライン、キャッシュエントリ、キャッシュロケーション又はキャッシュセットといった、キャッシュのあらゆる粒度の構造的要素を意味する。例えば、要素210は、複数ラインのうちの1ラインのような複数エントリのうちの1エントリを、セット内に含む。
図示されるように、メタデータ209及びデータ項目208は、データアレイ207の別々のエントリに保持される。しかしながら、メタデータ209は、データ項目208の属性又は特性表すという点で、データ項目208と関連付けられ、データ項目208に対するデータアドレスは、エントリ210と関連付けられて、エントリ215内のメタデータ209を参照するためのメタデータアドレスとして利用される又はメタデータアドレスに変換される。一実施形態において、このような態様でメタデータ209を保持するのは、ロッシーである、すなわち損失可能性が高いと考えられる。すなわち、メタデータ209は、ロッシーなメタデータであると見なされる。基本的には、メモリ階層中でデータ項目208を追跡する持続可能なデータとは異なり、メタデータ209は、ローカルに構成されるデータである。
例えば、制御ロジック250が、追い出しのためにエントリ215を選択すると、メタデータ209は追い出されてしまう(エビクトされる)。この場合、メタデータデータ209は、データアドレスロケーションに存在しないことから、情報は維持されない、又は高次のメモリに書き戻される、すなわち、メタデータ209は失われることになる。ここで、キャッシュ制御ロジック250は、ライン215の、例えば、無効状態のようなキャッシュコヒーレンシ状態、又は、エントリ215がメタデータ209を保持していることを示すメタデータ値を保持する拡張フィールド217によっては、書き戻しを実行しなくてもよい。これについては、以下に詳述する。
上記のように、メタデータ209は、データ項目208に関連付けられたあらゆる属性、特性、又は情報を含む。トランザクショナルメモリシステム内では、メタデータ209は、幾つかの有用な方法で利用されてもよい。1つ目の例として、メタデータ209は、データ項目208についての、読み出し属性、書き込み属性及び/又はバッファリング属性のような属性を含む。データ項目208がトランザクション的に読み出される時、データ項目208が読み出し監視されている、すなわち、データ項目208に対する外からの書き込みは競合と見なされることを示すようにメタデータ209が更新される、この実装形態において、スヌープロジックは、エントリ215内でメタデータ209のスヌープ、すなわち、エントリ215内のメタデータのテストを実行するように、修正されてもよい。
別の例としては、データ項目208がトランザクション内で前にアクセスされた及び/又はバックアップされた場合、データ項目208が取り消し不能な/堅固なトランザクションと関連付けられている場合、又はデータ項目209が失われてしまった場合には、トランザクション的に書き込まれたデータ項目208のバックアップロケーションのような、その他のトランザクション関連情報、又はトランザクション関連のその他の記述的情報が、メタデータに含まれる。さらに、上述したように、メタデータの使用は、トランザクション情報に限定されない。当然の結果して、メタデータ209は、データ項目208と関連付けられた情報、特性、属性又は状態を含んでもよい。例示されるように、タグアレイ205は、データアレイ207のデータエントリ210、215、220、225にそれぞれ対応するタグエントリ211、216、221及び226を含む。エントリ211のような典型的なタグエントリは、エントリ210に保持されるデータ項目208と関連付けれられたアドレスの一部を保持する。キャッシュがアクセスされると、タグ値を利用して、アドレスオペレーションアドレスから、正確に対応するエントリのインデックスへと、タグアレイ205が検索/参照される。一実施形態において、アドレス201のようなアドレスは、タグアレイ205のタグ拡張フィールド212、217、222及び227に保持されるように、拡張ビットを使用して拡張される。ここで、拡張フィールドは、対応するデータエントリがデータ又はメタデータを有するかを示す値を保持する。例えば、拡張フィールド212は、データ項目208のようなデータがデータエントリ210に保持されていることを示すデータ値を有し、拡張フィールド217は、データエントリ215がメタデータ209のようなメタデータを保有することを示すメタフィジカル値を保有する。
拡張フィールド217のような拡張フィールドに保持されるメタフィジカル値は、対応するメタデータを保持するエントリを表すあらゆる値を含んでもよい。さらに、制御レジスタのようなハードウェア、命令パラメータによって提供されたキャッシュ制御ロジック250内の初期設定、又はこれらの組み合わせによって、メタフィジカル値が提供されてもよい。
一実施形態において、拡張フィールド217は、タグエントリ216の最上位ビット(MSB)のような1つのビットを保持する。ここで、エントリ215がメタデータを保持すると、エントリ217は、論理的高値(H)のような第1の論理値を保持する。反対に、拡張フィールド212は、論理的高値(L)のような第2の論理値を保持して、エントリ210がデータを保持していることを示す。例示するため、データアドレスとメタデータアドレスとの間の最も基本的な変換に照らし合わせて、簡潔な例を記載する。すなわち、データ項目208及び209に対して、タグエントリ211及び216が同じになり、拡張フィールドのみが異なる場合である。ここで、物理アドレス部分のような、アドレス201の一部は、タグアレイ205のタグエントリに保持される。
データ項目208に対するデータアドレスを参照するアクセスオペレーションが受信されたとする。制御ロジック208は、タグアレイ205の検索を実行して、データアドレスに対してタグの一致が存在するかを判断する。ここで、アクセスオペレーションが、データ項目208にアクセスする通常のデータアクセスオペレーションである場合、データ値は、データアドレスに関連付けられ、検索の結果は、エントリ211及び拡張フィールド212の一致となる。このとき、エントリ216との間では一致が存在せず、拡張フィールド217は、メタフィジカル値、すなわち、この例の場合では論理値の1を含む。反対に、アクセスオペレーションが、メタデータアクセスオペレーションを含む場合には、メタフィジカル値の論理値1がデータアドレスに添付され、検索結果は、拡張フィールド217に、エントリ216のヒットとなる。同様に、拡張フィールド212がデータ値を保持しているため、エントリ211に対してはヒットしない。
この例に示されるように、プログラムは、データアクセスオペレーション又はメタデータアクセスオペレーションのような別個の複数のオペレーションを含み、これらのオペレーションは、データ項目208のようなデータ項目の同じアドレスを参照する。そして、ハードウェアは、これらのアクセスを、物理アドレス空間及びメタフィジカルアドレス空間のような異なるアドレス空間へとマップする。データ及びメタデータに対するタグエントリにおいて、それぞれに個別の値が使用される場合には、アドレス空間は直交となる、すなわち、データ項目を保持する対応するデータエントリのための拡張フィールドが、メタデータアクセスオペレーションのルックアップ拡張値と一致しないことから、メタデータアクセスオペレーションは、データエントリにヒットしない又はデータエントリを変更しない。しかしながら、メタデータ及びデータアドレス空間は、キャッシュにおける空間に対して競合し、競合を通じて互いに影響を与える場合もある。
加えて、ロッシーなメタデータの一実施形態において、メタデータアクセスオペレーションに対するタグアレイ205のミスは、キャッシュメモリドメインの外側でミスを補修しない。基本的には、ロッシーなメタデータ209は、キャッシュドメイン内にローカルに保持されることから、要求に応えてミスを外部に転送する理由がない。したがって、ロッシーなメタデータに対するミスは、迅速で効率的な態様で補修される場合がある。例えば、メタデータに対してキャッシュブロックが割り当てられ、外部の応答を待つことなく、所定の初期値へと初期化される。
上記の例に加えて、一実施形態では、タグアレイ205の拡張フィールドは、複数のビットを含む。第1の例では、タグアレイ205における複数のビットは、データアドレス空間に重ねあわされた複数の別個のメタフィジカルアドレス空間を含んでもよい。この場合、各ビット又は複数ビットのグループは、別個のメタデータ、同じ又は異なるメタデータと関連付けられた別個の処理要素、同じ又は異なるメタデータを有するプログラムの様々な部分、同じ又は異なるメタデータを有する様々なサブシステム、又はアドレス空間と関連付けられたその他の既知の要素に対するメタフィジカルアドレス空間に対応する。
例えば、2つのコアのような2つの処理要素を仮定すると、これらはキャッシュへのアクセスを共有する。拡張フィールド217の第1のビットは、第1の処理要素と関連付けられた第1のメタフィジカルアドレス空間に対応し、拡張フィールド218の第2のビットは、第2の処理要素と関連付けられた第2のメタフィジカルアドレス空間に対応している。上記の例の場合、データアドレス201へのメタデータアクセスが第1処理要素で発生すると、タグアレイ205の検索が実行され、メタフィジカル論理値に第1のビットが設定されるので、第2の処理要素においてメタフィジカルアドレス空間に対するヒットが発生しないようになっている。
ある例では、処理要素が異なるメタフィジカルアドレス空間へアクセスするのが望ましい場合が存在し、例えば、第2の処理要素によって属性が第2のメタフィジカルアドレス空間に設定されたか否かを、第1の処理要素がチェックする場合が考えられる。一実施形態において、拡張フィールドは、その他の情報を含む。例えば、複数処理要素に対する複数ビットの代わりに、コンテキストIDのような処理要素識別子を複数ビットで表してもよい。さらに、制御レジスタ値、命令パラメータ値、又はその他の値を使用して、拡張フィールドの複数ビットを満たしてもよい。
メタデータアクセスオペレーションは、アクセスデータに対して明示的な命令/オペレーションを含んでもよい。プロセッサのデコーダは、命令セットアーキテクチャのオペレーションコード(オペコード)によって、メタデータアクセスオペレーションを認識してもよい。加えて、より大きく複雑な命令がデコードされる場合には、命令は、メタデータアクセスマイクロオペレーションを含んでもよい。例えば、データ項目208をバックアップする命令が、データ項目208の前のバージョンの書き込みをバックアップロケーションに対して実行する第1マイクロオペレーション、及びバックアップロケーションのアドレスを保持するメタデータ209を更新する第2マイクロオペレーションにデコードされる。
上述したように、一実施形態において、メタデータ209は、ハードウェアにおいてデータ項目208と関連付けられる。記載したように、データ項目208及びメタデータ209は、圧縮されていない、すなわち、メタデータとデータとの間は1対1の関係が成り立つ。すなわち、メタデータ209のサイズは、データ項目208のサイズと同じである。メタデータ圧縮について、以下に詳細に記載する。一実施形態において、ハードウェアにおけるメタデータ209とデータ項目208との関連付けは、データ項目208に対するエントリ210へと指標付けするデータアドレスを、データ項目209に対するエントリ215へと指標付けするメタデータアドレスへと変換するロジックを含む。変換例には、更なるメタフィジカル値を付加しない変換、更なるメタフィジカル値を付加する通常のデータアドレス変換、及びメタフィジカル変換ロジックを使用する別の変換が含まれる。メタデータからデータへの変換の例を列挙した不完全であるリストは、図3a−3bを参照して以下に詳述する。
図2bを参照して、データと関連付けられたメタデータを保持するためのメタフィジカルアドレス空間の別の実施形態を示す。上述したように、メタデータが、データと同じアレイに保持される場合には、メタデータは、キャッシュ空間を、データと争ってもよい。したがって、一実施形態では、図2bに示されるように、メタデータは、並列キャッシュメモリ260に保持される。この場合、データアドレスからメタデータアドレスの取得のような、上述した方法及び装置を、同じ態様で実行してもよい。しかしながら、メタデータアドレスに対するエントリデータアレイ207を選択する替わりに、並列メタデータアレイ260内のエントリが選択される。一例として、アドレス拡張230に保持されたメタフィジカル値のような、メタフィジカル識別子値に基づく、アレイ、セット、ウェイ、ブロックとの間の選択に、マルチプレクサを使用してもよい。したがって、上記の説明と同様に、メタデータアドレスは、所与のデータ項目のデータアドレスから取得してもよい。しかしながら、この例では、データアレイ207内ではなく、選択が、並列アレイエントリ260において行われる。同様にメタデータ209がデータ項目208と関連付けられるが、異なる物理ストレージ構造に保持される。
図3aには、メタフィジカルアドレス空間に対するアクセスをサポートする構造の実施形態が示されている。アドレス生成ユニット(AGU)320は、上述したように、アクセスオペレーションに応答して、アドレスを生成する。仮想アドレス変換を使用したプロセッサを参照して、アドレス指定及び変換を以下に説明する。すなわち、参照された仮想アドレスを物理アドレスへと変換するプロセッサにおいて規定されたページテーブルを使用する物理的メモリの仮想ビューを使用したアドレス指定及び変換を説明する。しかしながら、アドレス指定は、数多くの態様で実装されてもよく、本明細書に記載する方法及び装置を、いかなるアドレス指定方法を使用して実装してもよい。
一実施形態において、データアドレス301のメタデータアドレスへの変換を通じて、データ項目は、メタデータアドレスと関連付けられる。第1の例として、変換は、典型的な仮想アドレスの物理アドレスへの変換を伴わない、データアドレス301の拡張を含む。基本的に、データアドレスの仮想アドレスは、メタデータアドレスに対して使用される。反対に、メタデータアドレスは、変換構造を通じて、同様な態様で、データアドレスへと変換されてもよい。
図示されるように、トランスレーション・ルックアサイド・バッファ(TLB)325は、仮想アドレス201のような仮想アドレスを、物理アドレスへと変換する。幾つかのプロセッサアーキテクチャでは、仮想アドレス及び物理アドレスは、アドレスの一部を共有し、例えば、4Kバイトページのアドレス201に対してはビット0‐11を共有する。第1の例として、メタデータアドレスは、データアドレスと同じであるとする。すると、アレイ305におけるキャッシュタグは、データ及び関連付けられたメタデータに対して同じとなるが、データエントリとメタデータエントリとの間を区別する拡張フィールドは異なっている。
次に、図2aをもう一度参照する。メタデータエントリ215に対応するタグエントリ216は、データエントリ210に対応するタグエントリ211と同じである。しかしながら、拡張フィールド212は、エントリ210がデータを保持していることを示すデータ値を有し、拡張フィールド217は、エントリ215がメタデータを保持していることを示すメタデータ値を有する。したがって、データエントリ215からのメタデータ209の読みだしに対するキャッシュルックアップが発生すると、メタデータ値が、タグ値に付加され、エントリ215に対応するタグエントリ217をヒットする。同様に、メタデータ209の格納オペレーションでは、レジスタに保持された命令パラメータ又は値のいずれかに基づいて、拡張フィールド217に読み込まれたメタフィジカル値と共に、エントリ215が、データアレイ207に割り当てられる。
上記の説明から、メタデータアクセスは、同じデータアドレスにアクセスしても、メタデータエントリをヒットするのみであって、拡張タグエントリに保持されているデータ値は、添付された/拡張されたメタデータ値とは一致しないことに留意すべきである。データタグ値が、拡張フィールド以外は変更されないというシナリオでは、メタデータのデータに対する局所性は、有益である可能性がある。この例では、データアレイ207内のセットを選択するアドレスの部分が同じであることから、エントリ210及び215は、群連想キャッシュ(セット・アソシアティブ・キャッシュ)の同じセットに存在する。
図3bには、メタフィジカルアドレス空間へのアクセスをサポートする構造の別の実施形態が示されている。ここでも、TLB325は、仮想アドレス301を、物理アドレスへと変換する。TLB325は、最近の変換を保持するルックアップテーブルと同様な態様で動作する。加えて、最近の変換が見つからない場合は、通常、TLBと関連付けられた処理要素のレジスタにおいて規定されたページテーブルに基づいて、仮想アドレスが変換される。一実施形態において、メタフィジカルアドレス変換(MAT)バッファ350は、データアドレスを、メタデータアクセスのためのメタデータアドレスへと変換する。例えば、MATバッファ350は、TLB325と同様な態様で動作する。一実施形態において、MATバッファ350は、レジスタに定義されたメタフィジカルページテーブル又はその他の情報に基づいて、データアドレス301を、メタデータアドレスへと変換する。
変換ロジック350と連結されたキャッシュルックアップロジックは、メタデータアドレスのタグ部分が、タグアレイに含まれたタグエントリに保持されたタグ値に一致した場合に、タグエントリへのヒットを判断する。メタデータ値は、別々に変換されたとしても、アドレスに添付されてもよく、メタフィジカルアドレス空間と、物理アドレス空間との分離を助ける。このようにして、本例では、メタデータアクセスオペレーションによって参照されるデータアドレスに対するヒットは、メタフィジカル変換ロジック350を介したアドレス301のメタデータアドレスへの変換、及びメタデータアドレスと、タグアレイ305におけるキャッシュタグとの照合を含む。以下に説明するように、メタフィジカルアドレス変換ロジック350は、圧縮比に応じて、データアドレスをメタデータアドレスに変換する。
変換方法に関わらず、すなわち、一実施形態において、別々の複数のテーブルを通じた変更又は変換が存在せず、メタデータ対データは、圧縮される。すなわち、圧縮比は、メタデータの量と比較したデータの量である。例えば、圧縮比が8、すなわち、8:1の場合、データ8ビットに対してメタデータは1ビットであり、データが8バイト(クワッドワード:quadword)に対して、メタデータは1バイトとなる。
図4は、データ対メタデータの圧縮比が8の場合の実施形態を示したものである。制御ロジックは、メタデータアクセスオペレーションによって参照されるデータアドレス401を受信する。圧縮のため、log(N)の数のビットがシフト及び/又は取り除かれる。ここでNは、メタデータに対するデータの圧縮比である。例示した例では、圧縮比が8であり、3ビットがシフトダウンされて、メタデータアドレス402から取り除かれる。基本的に、アドレス401は、メモリにおける特定のデータバイトを参照する64ビットを含み、このアドレスの3ビットが切り捨てられて、バイト粒度でメモリにおけるメタデータを参照するのに使用されるメタデータバイトアドレス402が形成される。そして、メタデータバイトアドレスを形成するのにアドレスから取り除かれた3ビットを使用して、メタデータの1つのビットが選択される。
一実施形態において、シフトされた/取り除かれたビットは、別のビットで置き換えられる。図示されるように、アドレス401がシフトされた後に、高位のビットは、ゼロビットで置き換えられる。しかしながら、シフトされた/取り除かれたビットは、メタデータアクセスオペレーションと関連付けられたコンテキスト識別子(ID)のような、別のデータ又は情報で置き換えられてもよい。この例では、最も下位に位置する複数のビットが取り除かれたが、キャッシュ組織、キャッシュ回路タイミング、データとメタデータとの間の競合の最小化等のあらゆる因子に基づいて、いかなる位置のビットを取り除き、置き換えてもよい。
例えば、データアドレスは、log(N)だけシフトしなくてもよく、アドレスビット0:2がゼロにされてもよい。この場合、同一である物理アドレス及び仮想アドレスのビットは、上記の例のようにはシフトされず、セットの事前選択、及び無修正ビット、例えば、ビット11:3のバンクが可能となる。ここでは、取り除かれたビット0:2を使用したビット選択の替わりに、1バイトからの1ビットの選択は、高位の3ビットのような異なる3つのビットを使用して行われる。この実装形態は、タイミングに好適であると考えられるが、高位のタグ値は異なることから、メタデータがデータと隣接していない、すなわちデータのメタデータに対する局所性が存在しない場合がある。
一実施形態では、アドレス401のビットがシフトされた、取り除かれた又は置き換えられた、の何れの処理が行われたかに関わらず、メタフィジカル値を含むアドレス拡張タグは、メタデータアドレス402に添付される。例示した場合では、メタフィジカル値は、論理値1を含み、アドレス402がメタデータアドレスであることを示す。上述のように、メタフィジカル値は、制御レジスタ又は命令パラメータのような、ハードウェア、ファームウェア、ソフトウェア又はこれらの組み合わせによって定義されるいかなる固定値を含んでもよい。また、上述したように、一実施形態において、ビット63‐65、又は図4に示されていないメタフィジカル値を含む拡張フィールド内の付加ビットのような、シフトされた又はゼロ化されたビットは、その他の情報によって増加されてもよい。例えば、コア、コンテキスト、又はスレッドIDのような処理要素IDを、拡張部としてアドレス402に付加してもよい。
適切な拡張ビットが付加されると、ビット64を有する拡張フィールドを含むメタデータアドレス402のタグ部分を使用して、タグアレイ405が検索される。メタデータロード/テストオペレーション又は書き込みオペレーションの場合、タグアレイ405がタグ値の照合のために検索される、すなわち、拡張ビット及びタグに含まれる仮想アドレスの一部が、メタデータアドレス402と、拡張フィールド417を含むタグエントリ416のようなタグアレイ405内のタグエントリとの間で一致する。
書き込みメタデータオペレーションが、タグアレイ405に対してミスであった場合、すなわち、メタデータがまだ生成されていなかった場合、エントリは、通常の態様で、キャッシュメモリのメタデータに対して割り当てられる。例えば、メタデータアドレス402及びラスト・リーセントリ・ユースド(LRU)アルゴリズムのようなキャッシュ置き換えアルゴリズムに基づいて、エントリ415のようなエントリが、選択され、割り当てられ、メタデータ初期値へと初期化される。そして、メタデータと通常のデータとの間で、空間に対する競合が発生する可能性がある。
図5は、データのメタデータへの圧縮、及び拡張フィールドの使用した別の実施形態を示す図である。ここでは、メタデータのビットは、64バイトで表される、すなわち、比は、512:1である。上記の例と同様に、データアドレス501は、変換/変更されて、データアドレス501を、log(512)ビット、すなわち、9ビット分シフトダウンすることにより、メタデータアドレス502を生成する。ここで、ビット0:2の替わりに、ビット6:8が使用されてビットが選択され、512ビットの粒度での選択を通じて圧縮が効果的に行われる。そして、シフトされた仮想アドレスの残りの部分、すなわち、ビット63:21は、メタデータアドレス502のタグ値503の部分として利用される。
アドレス502が9ビット分シフトされたので、アドレス502の高位の部分には、9ビット分の情報保持ロケーションが空くことになる。一実施形態において、この9ビットは、コンテキストID及び/又はスレッドIDのような拡張子を保持する。加えて、メタフィジカル空間値は、これらのビットに保持されてもよいし、アドレスは、メタフィジカル空間ビットによって拡張されてもよい。上記で説明した検索及び置き換えと同様な態様で、タグアレイ505が、メタデータタグ503で検索される。ここで、識別子とアドレス空間が一致しない場合には、ヒットが検出されない、すなわち、ミスと判断される。その結果、この例は、スレッドID及びコンテキストID粒度のメタデータを提供する能力を提供できる可能性がある。しかしながら、幾つかの実装形態では、複数のIDに渡るアクセスは有用である。例えば、別のスレッドに対するメタデータの監視が、関連付けられたデータ項目が別のスレッドによって監視されているかを判断するスレッドによってチェックされる場合などが考えられる。このシナリオでは、マスクを、タグ比較値に適用して、1つのスレッドが、別のスレッドのメタデータにヒットするようにしてもよい。
一実施形態において、メタデータのためのシフトされたアドレスは、通常のデータアクセスと多重化される。この場合、メタフィジカル空間値は、通常データキャッシュアクセスとメタデータキャッシュアクセスとの間の選択を行う多重化入力として利用されてもよい。また、上記の実装形態におけるストア転送の実行と同様な方法で、メタデータ情報のストアをメタデータロードに転送してもよい。一実施形態において、追加の制約を、メタデータアドレスに対して課してもよく、例えば、圧縮比に渡る転送を防ぐような制約を行ってもよい。
一実施形態において、複数の並行圧縮比を、ハードウェアによってサポートしてもよい。圧縮比の表現は、拡張タグビットに保持される。そして、タグアレイの検索の間に、圧縮比が考慮される。さらに、メタデータストアがメタデータロードに転送されるべきか判断するために、圧縮比をテストしてもよい。
一実施形態において、キャッシュハードウェアは、1つの圧縮比を使用して実装されるが、複数の圧縮比をソフトウェアに対して提示すハードウェアサポートを含む。例えば、図4に示されるように、キャッシュハードウェアが、8:1の圧縮比を利用して実装されるとする。様々な粒度でメタデータにアクセスするメタデータアクセスオペレーションは、メタデータの初期量を読み込むマイクロオペレーション、及び読み込まれるメタデータの適切な部分をテストするテストマイクロオペレーションを含むようにデコードされる。例えば、読み込まれるメタデータの初期値は、32ビットである。しかしながら、8:1テストの様々な粒度/圧縮に対するテストオペレーションは、読み込まれるメタデータの32ビットの正しいビットをテストし、テストは、メタデータアドレス及び/又はコンテキストIDの複数のLSBのような、アドレスの特定の複数ビットに基づいて行われてもよい。
例示するように、アラインされていないデータに対するメタデータを、データ1バイトにつきメタデータ1ビットでサポートするスキームにおいては、メタデータアドレスの最下位(LSB)3ビットに基づいて、メタデータの32読み込みビットの最下位8ビットから1つのビットが選択される。データのワードの場合、読み込まれるメタデータの32ビットの最下位16ビットから、アドレスの最下位3ビットに基づいて、連続したメタデータの2ビットが選択されて、同じように、128ビットのメタデータサイズに対して16ビットが選択される。
一実施形態において、上述のスキームの場合、受け渡されるメタデータアドレスのビットに基づく、左シフトオペレーションにより、マスクが生成される。左シフトオペレーションを生成するマスクの例としては、以下のようなものが含まれる。
Figure 0005451776
このマスクは、ロード(load)/リード(read)マイクロペレーションによって読まれたメタデータの32ビットでビット的論理ORされ、その結果の32ビットが、更に一緒に、論理ANDされて、メタデータをテストする又はフラグをセットする。
別の実装例では、所与のデータサイズに対して1つのビットが利用される、すなわち、非アラインデータサポートが不可能とされる。このスキームでは、受け渡されたメタデータアドレスビットのサブセット及び処理要素IDビットに基づいた、シフトレフトオペレーションにより、マスクが生成される。したがって、1バイトにつき1ビットで圧縮されたメタデータについては、全てのメタデータビットが、各バイトに対して使用される。1ワードにつき1ビットで圧縮されたメタデータについては、2番目のビットのみがそれぞれ使用される等、読まれた32メタデータビットのうち1ビットのみが32バイトのデータオペランドに対して使用される。大きなデータサイズ(高い圧縮率)に対してメタデータストレージが疎になると、余ったスペースに、複数コンテキストに対するメタデータを隣り合わせで格納できる機会が生じる。つまり、アドレスLSBビット及びコンテキストID(CID)の組み合わせに基づいて、読み出された32メタデータビットから、正しいメタデータビットを選択できることを意味する。
シフトレフトオペレーションを生成するマスクの例としては、以下に示すようなものが含まれる。
Figure 0005451776
マスクは、第1マイクロペレーションによって読み出されたメタデータの32ビットでビット的論理ANDされ、その結果の32ビットが、さらに一緒に、論理ORされて、メタデータをテストする又はフラグをセットする。
図6は、データに対するメタデータにアクセスする方法を示したフローチャートである。図6のフローは、ほぼ順次的に記載されているが、少なくとも部分的に並行して、又は異なる順番で、フローを実行してもよい。フロー620では、所定のデータ項目に対するデータアドレスを参照するメタデータオペレーションが発生する。メタデータオペレーションの例には、ロード/テスト及びストア/ライト(書き込み)/クリア(消去)オペレーション、又はマイクロオペレーションが含まれる。メタデータアクセスオペレーションは、メタデータにアクセスする明示的なソフトウェ命令/オペレーションであってもよく、また、例えば、関連付けられたメタデータの更新を明示的に要求するデータ項目へのアクセスのような、より大きく複雑な命令の一部としてデコードされた明示的マイクロオペレーションであってもよい。また、実行形態は、保護リング遷移、異なるプロセッサ動作モードへの遷移、又はメモリページの再マッピングのような特定のシステムイベントに基づく所定のコンテキスト、スレッド又はプロセッサに対する全てのメタデータをバルク(一括)で消去することを選択してもよい。
メタデータアドレスは、参照されたデータアドレスから決定される。メタデータアドレスの決定方法の例には、以下のようなものが含まれる。(i)データアドレスを、物理アドレス変換に対して仮想的な通常のデータを利用した別のデータアドレスへ変換する。(ii)メタフィジカル拡張を、仮想データアドレスに付加し、メタデータアドレスを生成する。(iii)メタフィジカル変換テーブルを利用して、データアドレスから物理メタデータアドレスへと変換し、メタフィジカル拡張を、物理メタデータアドレスに添付して、メタデータアドレスを生成する。
さらに、変換は、メタデータに対するデータの圧縮比を組み込んでもよい、すなわち、この圧縮比に基づいてもよく、各圧縮比に対して、メタデータを別々に格納してもよい。
フロー630では、キャッシュメモリのメタデータエントリが、メタデータアドレスに基づいて決定される。例えば、メタデータアドレスのタグ部分は、タグアレイを検索するのに使用される。メタフィジカル値を含むタグ部分が、タグエントリに一致しない場合には、ミスが発生する。一実施形態において、キャッシュミスを補修するスヌープ要求を発行する替わりに、メタデータは、キャッシュメモリにのみ保持されるロッシーな(損失可能性の高い)メタデータであることから、キャッシュドメインの外側に要求を行うことなく、ミスをローカルで補修する。そして、エントリに適切なメタデータタグが保持される通常のキャッシュ割り当てに従って、エントリが割り当てられ、データストレージ要素が、メタデータ値の初期値で初期化される。これにより、関連付けられたデータ項目に関して、メタデータの局所性及びタイミングが、改善される可能性がある。一方、ヒットが発生した場合は、メタデータエントリは、直接決定される。
エントリの決定は、ヒット又はミス、及びエントリの割り当てを通じて判断されるか否かに関わらず、メタデータは適切にアクセスされる。例えば、ロード又はテストオペレーションの場合、メタデータが読み出される。一方、格納オペレーションの場合には、メタデータは、対応するメタデータエントリに更新される。したがって、キャッシュメモリのデータアレイに対するビットのアノテーション又は高価な追加のストレージ構造を使用することなく、メタデータは、ローカルキャッシュメモリ内にロッシーな態様で保持されてもよい。また、メタデータは、圧縮された形で、すなわち、メタデータに対するデータの圧縮比を有する形で保持されてもよい。ハードウェアは、1つの圧縮比又は複数の圧縮比を実装してもよく、別の場合には、ハードウェアが、複数の圧縮比をソフトウェアに提示してもよい。
本明細書で用いられたモジュールとは、任意のハードウェア、ソフトウェア、ファームウェア又はこれらの組み合わせを意味する。別個のものとして図示されているモジュールの境界は、通常変わることが多く、重複する可能性もある。例えば、第1のモジュール及び第2のモジュールは、ハードウェア、ソフトウェア、ファームウェア又はこれらの組み合わせを共有しているとしてもよいし、独立したハードウェア、ソフトウェア又はファームウェアを持つとしてもよい。一実施形態では、ロジックという用語は、例えば、トランジスタ、レジスタのようなハードウェア、又はプログラム可能な論理デバイスのようなその他のハードウェアを含む。しかしながら、別の実施形態では、ロジックはまた、ハードウェアと一体化されたソフトウェア又はコード、例えば、ファームウェア又はマイクロコードを含む。
また、本明細書で使用されている"値"という言葉は、数、状態、論理状態又は2値論理状態のあらゆる既知の表現を含む。また、明細書で使用されている論理レベル、論理値、又は論理的値は、1又は0といった単純に2値論理状態を意味している場合もある。例えば、1は高い論理レベルを指し、0は低い論理レベルを指す。一実施形態では、トランジスタ又はフラッシュセルのような記憶セルは、1つの論理値又は複数の論理値を保持可能であってもよい。しかしながら、コンピュータシステムにおける値の他の表現が使用されてきている。例えば、10進数の10は、2進値表示では、1010と表され、16進数表示ではAと表される。したがって、ある1つの値は、コンピュータシステムに保持される情報のあらゆる表示形式を含む。
さらに、状態は、値又は値の一部によって表されていてもよい。例えば、論理値の1のような第1の値が、デフォルト状態又は最初の状態を表していてもよく、論理値の0のような第2の値が、非デフォルト状態を表していてもよい。加えて、リセット及びセットという言葉はそれぞれ、ある実施形態では、デフォルト値又は状態及び更新された値又は状態を指す。例えば、デフォルト値は、高い論理値、すなわち、リセットを含んでもよく、更新値は、低い論理値、すなわち、セットを含んでもよい。値のどのような組み合わせを、あらゆる数の状態を表すのに利用してもよい。
上記の方法、ハードウェア、ソフトウェア、ファームウェア、コードの実施形態を、機械アクセス可能な又は機械可読な媒体に記憶され、プロセッシング素子によって実効可能な命令又はコードを使用して実装してもよい。機械アクセス可能/機械可読な媒体としては、コンピュータ又は電子システムのような機械によって読み出し可能な形式の情報を提供する(すなわち、記憶及び/又は送信する)あらゆるメカニズムを含む。例えば、機械アクセス可能媒体は、スタティックRAM(SRAM)若しくはダイナミックRAM(DRAM)のようなランダム・アクセス・メモリ(RAM)、ROM,磁気的又は光学的記憶媒体、フラッシュメモリデバイス、電気記憶デバイス、光学記憶デバイス、音響的記憶デバイス、又は他の形態の伝播信号(例えば、搬送波、赤外線信号、デジタル信号)記憶デバイス等が含まれる。例えば、機械は、搬送波のような伝播信号を、搬送波信号によって送信可能な情報を保持可能な媒体から、受信することにより、記憶デバイスにアクセスしてもよい。
また、本明細書における「一実施形態」又は「ある実施形態」という言葉は、実施形態に関連する特定の特徴、構造及び特性が、少なくとも本発明の実施形態の一つに含まれていることを意味する。したがって、本明細書中の様々な箇所で使用されている「一実施形態において」又は「ある実施形態において」という表現は、必ずしも同一の実施形態を示していない。また、1以上の実施形態において、特定の構成、構造又は特徴を、適切な形で組み合わせてもよい。
明細書の上記において、特定の例示された実施形態を参照して、詳細な説明がなされた。しかしながら、添付の特許請求の範囲に記載される本発明の範囲内において、様々な変形及び変更を加えることが可能であることは、明らかである。したがって、明細書及び添付の図面は、発明を制限するものではなく、発明を例示するものであると見なされるべきである。また、上記の実施形態及び他の例で使用された言葉は、同じ実施形態又は同じ例を必ずしも指している必要はなく、異なる及び別の実施形態を指している場合もあるし、同じ実施形態を指している場合もある。

Claims (34)

  1. キャッシュされたデータ項目と関連付けられ、前記データ項目の属性または特性を含み、キャッシュ追い出しによって失われうるロッシーなメタデータを保持する第1データエントリと、メモリからの前記データ項目をキャッシュする第2データエントリとを含むデータキャッシュメモリと、
    前記第2データエントリ内の前記データ項目と関連付けられたアドレスを、前記第1データエントリ内の前記ロッシーなメタデータに関連付けられたメタデータアドレスに変換する変換ロジックと、
    を備え装置。
  2. 前記第1データエントリと関連付けられ、前記第1データエントリがメタデータを保持していることを示すメタデータ値を有する第1拡張フィールドと、
    前記第2データエントリと関連付けられ、前記第2データエントリがデータを保持していることを示すデータ値を有する第2拡張フィールドとを更に備える請求項1に記載の装置。
  3. 前記第1拡張フィールドは、前記ロッシーなメタデータと関連付けられた処理要素を示す処理要素識別子(ID)を更に有する請求項2に記載の装置。
  4. 前記データ項目と関連付けられた前記ロッシーなメタデータは、前記データ項目の属性を含み、前記属性は、読み出し監視属性、書き込み監視属性及びバッファリング属性からなる群から選択される請求項1から3のいずれか一項に記載の装置。
  5. 前記第1拡張フィールドは、前記第1データエントリに対応する第1タグエントリに保持され、前記第2拡張フィールドは、前記第2データエントリに対応する第2タグエントリに保持される請求項2に記載の装置。
  6. 前記ロッシーなメタデータにアクセスするメタデータアクセスオペレーションが、前記データ項目と関連付けられたアドレスを、前記メタデータ値を保持する前記第1拡張フィールドを含む前記第1タグエントリの値に基づいて参照する場合に、前記第1タグエントリ及び前記第2タグエントリを含むタグアレイを検索して、前記第1データエントリに対応する前記第1タグエントリの位置を特定するキャッシュ制御ロジックを更に備える請求項5に記載の装置。
  7. 前記第1タグエントリは、前記ロッシーなメタデータと関連付けられた処理要素識別子(ID)及び前記データ項目と関連付けられたアドレスの一部を更に保持する請求項5に記載の装置。
  8. 前記データ項目に対するアドレスを参照して、前記ロッシーなメタデータにアクセスするメタデータアクセスオペレーションを受信するキャッシュ制御ロジックを更に備え、
    前記キャッシュ制御ロジックは、圧縮比に基づいて、前記アドレスを複数ビット分シフトして、前記アドレスに前記処理要素IDを付加し、前記メタデータ値を前記アドレスに付加してメタデータアドレスを生成し、
    前記キャッシュ制御ロジックは更に、前記メタデータアドレスのタグ部分を使用して前記第1タグエントリ及び前記第2タグエントリを含むタグアレイを検索して、前記第1タグエントリの位置を特定する請求項7に記載の装置。
  9. 追い出しのための前記第1データエントリを選択し、前記第1データエントリと関連付けられた前記第1拡張フィールドが、前記第1データエントリがメタデータを保持していることを示す前記メタデータ値を保持している場合に、上位層メモリに対する前記ロッシーなメタデータのライトバックを開始しないキャッシュ制御ロジックを更に備える請求項2に記載の装置。
  10. 第1データエントリ及び第2データエントリを含むキャッシュメモリのデータアレイと、
    前記第2データエントリがデータを保持していることを示す値を有する、前記第2データエントリと関連付けられた第2タグエントリ、及び、前記第1データエントリが、前記データアレイの前記第2データエントリに保持されているデータ項目の属性または特性を含むメタデータを保持することを示すを有する前記第1データエントリと関連付けられた第1タグエントリを含む前記キャッシュメモリのタグアレイと
    前記第2データエントリ内の前記データ項目と関連付けられたアドレスを、前記第1データエントリ内の前記メタデータに関連付けられたメタデータアドレスに変換する変換ロジックと、
    を備える装置。
  11. 前記タグアレイと連結されて、メタデータタイプを有するアクセスオペレーションによって参照されるアドレスを受信し、前記アクセスが前記メタデータタイプを有する場合に、前記メタデータを保持することを示す値を前記アドレスに付加してメタデータアドレスを生成し、前記メタデータを保持することを示す値を含む前記メタデータアドレスのタグ部分が、前記タグエントリに保持されたタグ値と一致する場合に、前記第1データエントリに対するヒットと判断する制御ロジックを更に備える請求項10に記載の装置。
  12. 前記第2データエントリがメタデータを保持することを示すを有する第1タグエントリは、前記第1データエントリがメタデータを保持することを示す第1論理値に設定されるアドレス拡張ビットを有する前記第1タグ含み、
    前記メタデータを保持することを示す値を前記アドレスに付加してメタデータアドレスを生成する前記制御ロジックは、第1論理値を前記アドレスに付加して前記メタデータアドレスを生成する請求項11に記載の装置。
  13. 前記変換ロジックは、前記データ項目と関連付けられたアドレスを参照するメタデータタイプのアクセスオペレーションを受信し、前記アドレスをメタデータアドレスに変換
    前記変換ロジックと連結され、前記メタデータアドレスのタグ部分が、前記タグアレイに含まれた前記タグエントリに保持されるタグ値と一致する場合に、前記タグエントリに対するヒットと判断するキャッシュルックアップロジックと、
    前記キャッシュルックアップロジックと連結され、前記キャッシュルックアップロジックが、前記第1データエントリと関連付けられた前記タグエントリに対する前記ヒットを判断した場合に、前記第1データエントリに対する前記アクセスオペレーションを実行する制御ロジックとを更に備える請求項10に記載の装置。
  14. 前記アドレスを前記メタデータアドレスに変換する前記変換ロジックは、圧縮比Nに基づき、Nは、メタデータの量に対するデータの量である請求項13に記載の装置。
  15. 圧縮比Nに基づいて前記アドレスを前記メタデータアドレスに変換する前記変換ロジックは、前記アドレスを、log(N)ビット分シフトさせて、前記メタデータを保持することを示す値を前記アドレスに付加して、前記メタデータアドレスを生成する請求項14に記載の装置。
  16. 前記アクセスオペレーションと関連付けられた処理要素に対する処理要素識別子(ID)を保持する制御レジスタを更に備え、
    圧縮比Nに基づいて前記アドレスを前記メタデータアドレスに変換する前記変換ロジックは、前記アドレスから、log(N)の数のビットを取り除き、前記取り除かれたlog(N)の数のビットの少なくとも一部を、前記処理要素IDで置き換えることを含む請求項15に記載の装置。
  17. メタフィジカルページテーブルを定義するレジスタを更に備え、
    前記アドレスを前記メタデータに変換する前記変換ロジックは、レジスタにおいて定義されたメタフィジカルページテーブルに基づいて、前記アドレスを前記メタデータアドレスへと変換するメタフィジカル変換ルックアサイドバッファ(MTLB)を含む請求項13に記載の装置。
  18. キャッシュメモリと、
    前記キャッシュメモリに連結されたロジックと
    を備え、
    前記ロジックは、
    データ項目を参照するためのアドレスの少なくとも一部を受信し、
    前記アドレスの前記一部を、前記データ項目の属性または特性を含むメタデータを参照するために前記アドレスに対して使用されるべきメタフィジカル識別ビットおよび複数の処理要素識別ビットを含むメタフィジカル拡張と関連付け、
    前記アドレス及び前記メタフィジカル拡張に基づいて、前記キャッシュメモリのデータ項目エントリに保持されたデータ項目と関連付けられたメタデータにアクセスするべく、キャッシュメモリのメタデータエントリを決定するプロセッサ。
  19. 前記ロジックは、制御ロジックが前記アドレスを参照するメタデータアクセスオペレーションを受信する場合に、前記データ項目を参照するための前記アドレスの少なくとも一部を受信す請求項18に記載のプロセッサ。
  20. 前記アドレスの前記一部を前記メタフィジカル拡張と関連付ける前記ロジックは、前記アドレスの前記一部の最上位ビット(MSB)に、前記メタフィジカル拡張を付加する請求項18または19に記載のプロセッサ。
  21. 前記メタフィジカル拡張は、1つのメタフィジカル拡張ビットを含む請求項18から20のいずれか一項に記載のプロセッサ。
  22. 前記メタフィジカル拡張は、複数のメタフィジカル拡張ビットを含む請求項18から20のいずれか一項に記載のプロセッサ。
  23. 前記複数のメタフィジカル拡張ビットはそれぞれ、別のメタフィジカルアドレス空間に対応している請求項22に記載のプロセッサ。
  24. 前記データ項目と関連付けれられたメタデータが、前記メタデータエントリが前記キャッシュメモリから追い出しを受けるのに伴って失われ、前記メタデータが、前記データ項目に対する属性を含む請求項18から23のいずれか一項に記載のプロセッサ。
  25. キャッシュメモリのデータアレイと、
    前記データアレイのデータエントリにキャッシュされたデータ項目と関連付けられたデータアドレスを、前記データ項目の属性または特性を含むメタデータに対するデータの圧縮比に基づいて、前記キャッシュメモリにおいて前記データアレイのメタデータエントリと関連付けられたメタデータアドレスに変換するアドレス変換ロジックと、
    前記アドレス変換ロジック及び前記データアレイに連結され、前記データアドレスを参照するメタデータアクセスオペレーションを受信し、前記アドレス変換ロジックが前記データアドレスを変換した場合に、前記データアレイの前記メタデータエントリにアクセスする制御ロジックと
    を備えるシステム。
  26. 前記アドレス変換ロジックは、メタフィジカルページテーブルを定義するストレージと、前記圧縮比に基づいて前記メタフィジカルページテーブルを利用して前記データアドレスを前記メタデータアドレスに変換するメタフィジカル変換バッファとを有する請求項2に記載のシステム。
  27. メタデータに対するデータの前記圧縮比に基づいて、前記データアドレスを前記メタデータアドレスに変換する前記アドレス変換ロジックは、
    前記データアドレスを、2を底とする前記圧縮比の対数のビット分シフトダウンして、シフトされたアドレスを生成することと、
    前記シフトされたアドレスを、メタフィジカル拡張値と関連付けて、前記メタデータアドレスを生成することを含む請求項25または26に記載のシステム。
  28. メタデータに対するデータの前記圧縮比に基づいて、前記データアドレスを前記メタデータアドレスに変換する前記アドレス変換ロジックは、
    前記シフトされたアドレスを、メタフィジカル拡張値と関連付けて前記メタデータアドレスを生成する前に、処理要素識別子を前記シフトされたアドレスと関連付けることを更に含む請求項27に記載のシステム。
  29. キャッシュメモリのデータエントリに保持されるデータ項目に対するデータアドレスを参照するメタデータオペレーションを発生する段階と、
    前記データアドレスから、前記データアドレスを仮想−物理アドレス変換により変換し、前記データ項目に対するバックアップデータの位置を含むメタデータを参照するために前記データアドレスに対して付加されるべきメタフィジカル拡張を付加してメタデータアドレスを決定する段階と、
    前記メタデータアドレスに基づいて、前記キャッシュメモリのメタデータエントリを決定する段階と、
    前記メタデータエントリが決定された場合に、前記メタデータエントリのメタデータにアクセスする段階と
    を備える方法。
  30. 前記データアドレスから前記メタデータアドレスを決定する段階は、メタフィジカル変換テーブルロジックを使用して、前記データアドレスを物理メタデータアドレスへと変換し、前記物理メタデータアドレスにメタフィジカル拡張を付加して、前記メタデータアドレスを生成することを含む請求項29に記載の方法。
  31. 前記メタフィジカル変換テーブルロジックを使用して、前記データアドレスを物理メタデータアドレスへと変換することは、メタデータに対するデータの圧縮比に基づいて行われる請求項30に記載の方法。
  32. 前記データアドレスは、仮想データアドレスを含み、
    前記データアドレスから前記メタデータアドレスを決定する段階は、前記仮想データアドレスにメタフィジカル拡張を付加して、前記メタデータアドレスを生成することを含む請求項29に記載の方法。
  33. 前記メタデータオペレーションは、新たなデータを格納する格納メタデータオペレーションを含み、
    前記メタデータエントリのメタデータにアクセスする段階は、前記新たなメタデータを前記メタデータエントリに格納することを含む請求項29から32のいずれか一項に記載の方法。
  34. 前記メタデータオペレーションは、前記メタデータをロードする、ロードメタデータオペレーションを含み、
    前記メタデータエントリのメタデータにアクセスする段階は、前記メタデータエントリから前記メタデータをロードすることを含む請求項29から33のいずれか一項に記載の方法。
JP2011542320A 2008-12-30 2009-12-15 ハードウェアフィールドにロッシーなメタデータを保持するためのメタフィジカルアドレス空間 Expired - Fee Related JP5451776B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/346,500 US8806101B2 (en) 2008-12-30 2008-12-30 Metaphysical address space for holding lossy metadata in hardware
US12/346,500 2008-12-30
PCT/US2009/067983 WO2010077842A2 (en) 2008-12-30 2009-12-15 Metaphysical address space for holding lossy metadata in hardware

Publications (2)

Publication Number Publication Date
JP2012512491A JP2012512491A (ja) 2012-05-31
JP5451776B2 true JP5451776B2 (ja) 2014-03-26

Family

ID=42286183

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011542320A Expired - Fee Related JP5451776B2 (ja) 2008-12-30 2009-12-15 ハードウェアフィールドにロッシーなメタデータを保持するためのメタフィジカルアドレス空間

Country Status (6)

Country Link
US (1) US8806101B2 (ja)
JP (1) JP5451776B2 (ja)
KR (1) KR101299317B1 (ja)
CN (1) CN101770429B (ja)
TW (1) TWI446261B (ja)
WO (1) WO2010077842A2 (ja)

Families Citing this family (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9652210B2 (en) * 2007-08-28 2017-05-16 Red Hat, Inc. Provisioning a device with multiple bit-size versions of a software component
US9785462B2 (en) 2008-12-30 2017-10-10 Intel Corporation Registering a user-handler in hardware for transactional memory event handling
US8806101B2 (en) 2008-12-30 2014-08-12 Intel Corporation Metaphysical address space for holding lossy metadata in hardware
US8370577B2 (en) 2009-06-26 2013-02-05 Microsoft Corporation Metaphysically addressed cache metadata
US8250331B2 (en) * 2009-06-26 2012-08-21 Microsoft Corporation Operating system virtual memory management for hardware transactional memory
US8356166B2 (en) * 2009-06-26 2013-01-15 Microsoft Corporation Minimizing code duplication in an unbounded transactional memory system by using mode agnostic transactional read and write barriers
US8812796B2 (en) 2009-06-26 2014-08-19 Microsoft Corporation Private memory regions and coherence optimizations
US20100332768A1 (en) * 2009-06-26 2010-12-30 Microsoft Corporation Flexible read- and write-monitored and buffered memory blocks
US8489864B2 (en) * 2009-06-26 2013-07-16 Microsoft Corporation Performing escape actions in transactions
US8229907B2 (en) * 2009-06-30 2012-07-24 Microsoft Corporation Hardware accelerated transactional memory system with open nested transactions
US8825936B2 (en) * 2009-08-03 2014-09-02 Quantum Corporation Systems and methods for increasing data volume sparseness
US8539465B2 (en) * 2009-12-15 2013-09-17 Microsoft Corporation Accelerating unbounded memory transactions using nested cache resident transactions
US9092253B2 (en) * 2009-12-15 2015-07-28 Microsoft Technology Licensing, Llc Instrumentation of hardware assisted transactional memory system
US8402218B2 (en) * 2009-12-15 2013-03-19 Microsoft Corporation Efficient garbage collection and exception handling in a hardware accelerated transactional memory system
US8533440B2 (en) 2009-12-15 2013-09-10 Microsoft Corporation Accelerating parallel transactions using cache resident transactions
US10223204B2 (en) 2011-12-22 2019-03-05 Intel Corporation Apparatus and method for detecting and recovering from data fetch errors
US8886883B1 (en) * 2012-03-31 2014-11-11 Emc Corporation System and method for improving cache performance
CN103207844B (zh) * 2013-04-18 2017-06-06 上海云间半导体科技有限公司 缓存系统及缓存访问方法
US9411745B2 (en) * 2013-10-04 2016-08-09 Qualcomm Incorporated Multi-core heterogeneous system translation lookaside buffer coherency
US9418018B2 (en) * 2013-12-31 2016-08-16 Samsung Electronics Co., Ltd. Efficient fill-buffer data forwarding supporting high frequencies
US10235338B2 (en) 2014-09-04 2019-03-19 Nvidia Corporation Short stack traversal of tree data structures
US9514061B1 (en) * 2015-05-20 2016-12-06 Qualcomm Incorporated Method and apparatus for cache tag compression
US9507628B1 (en) 2015-09-28 2016-11-29 International Business Machines Corporation Memory access request for a memory protocol
KR20180078253A (ko) * 2015-11-04 2018-07-09 삼성전자주식회사 다중 프로세서 시스템에서 코히어런트 메모리를 구현하기 위한 시스템 및 방법
US10936713B2 (en) 2015-12-17 2021-03-02 The Charles Stark Draper Laboratory, Inc. Techniques for metadata processing
US10235176B2 (en) * 2015-12-17 2019-03-19 The Charles Stark Draper Laboratory, Inc. Techniques for metadata processing
US10607665B2 (en) * 2016-04-07 2020-03-31 Micron Technology, Inc. Span mask generation
US10191791B2 (en) * 2016-07-02 2019-01-29 Intel Corporation Enhanced address space layout randomization
US20180088829A1 (en) * 2016-09-29 2018-03-29 Qualcomm Incorporated Area efficient architecture for multi way read on highly associative content addressable memory (cam) arrays
US10324857B2 (en) * 2017-01-26 2019-06-18 Intel Corporation Linear memory address transformation and management
US10061698B2 (en) 2017-01-31 2018-08-28 Qualcomm Incorporated Reducing or avoiding buffering of evicted cache data from an uncompressed cache memory in a compression memory system when stalled write operations occur
TWI661300B (zh) * 2017-09-15 2019-06-01 旺宏電子股份有限公司 記憶體的資料管理方法及記憶體裝置
GB2568059B (en) * 2017-11-02 2020-04-08 Advanced Risc Mach Ltd Method for locating metadata
US11150910B2 (en) 2018-02-02 2021-10-19 The Charles Stark Draper Laboratory, Inc. Systems and methods for policy execution processing
US20210042100A1 (en) 2018-02-02 2021-02-11 Dover Microsystems, Inc. System and method for translating mapping policy into code
WO2019213061A1 (en) 2018-04-30 2019-11-07 Dover Microsystems, Inc. Systems and methods for checking safety properties
US11656775B2 (en) 2018-08-07 2023-05-23 Marvell Asia Pte, Ltd. Virtualizing isolation areas of solid-state storage media
US11372580B2 (en) * 2018-08-07 2022-06-28 Marvell Asia Pte, Ltd. Enabling virtual functions on storage media
CN115576867A (zh) * 2018-08-28 2023-01-06 上海忆芯实业有限公司 存储设备的扩展地址空间
US11010314B2 (en) 2018-10-30 2021-05-18 Marvell Asia Pte. Ltd. Artificial intelligence-enabled management of storage media access
TW202022678A (zh) 2018-11-06 2020-06-16 美商多佛微系統公司 用於停滯主處理器的系統和方法
US20220012329A1 (en) * 2018-11-12 2022-01-13 Dover Microsystems, Inc. Systems and methods for metadata encoding
US11841956B2 (en) 2018-12-18 2023-12-12 Dover Microsystems, Inc. Systems and methods for data lifecycle protection
US11481118B2 (en) 2019-01-11 2022-10-25 Marvell Asia Pte, Ltd. Storage media programming with adaptive write buffer release
CN113168293A (zh) * 2019-01-31 2021-07-23 华为技术有限公司 用于访问集群存储系统中的缓存的方法和装置
US11656995B2 (en) * 2019-11-26 2023-05-23 Micron Technology, Inc. Dynamic access granularity in a cache media
US11366774B2 (en) * 2020-09-24 2022-06-21 Adesto Technologies Corporation Memory latency reduction in XIP mode
US20230029331A1 (en) * 2021-07-26 2023-01-26 Microsoft Technology Licensing, Llc Dynamically allocatable physically addressed metadata storage

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB8728494D0 (en) * 1987-12-05 1988-01-13 Int Computers Ltd Multi-cache data storage system
JP2651037B2 (ja) 1990-04-23 1997-09-10 株式会社日立製作所 アドレスバス制御装置
US6549996B1 (en) 1999-07-02 2003-04-15 Oracle Corporation Scalable multiple address space server
EP1111511B1 (en) * 1999-12-06 2017-09-27 Texas Instruments France Cache with multiple fill modes
US7035963B2 (en) 2000-12-27 2006-04-25 Intel Corporation Method for resolving address space conflicts between a virtual machine monitor and a guest operating system
US20030005219A1 (en) * 2001-06-29 2003-01-02 Royer Robert J. Partitioning cache metadata state
US7032125B2 (en) * 2002-04-25 2006-04-18 Lsi Logic Corporation Method for loosely coupling metadata and data in a storage array
US6990557B2 (en) * 2002-06-04 2006-01-24 Sandbridge Technologies, Inc. Method and apparatus for multithreaded cache with cache eviction based on thread identifier
US6868485B1 (en) * 2002-09-27 2005-03-15 Advanced Micro Devices, Inc. Computer system with integrated directory and processor cache
US7010645B2 (en) * 2002-12-27 2006-03-07 International Business Machines Corporation System and method for sequentially staging received data to a write cache in advance of storing the received data
US7047390B2 (en) * 2003-06-17 2006-05-16 International Business Machines Corporation Method, system, and program for managing a relationship between one target volume and one source volume
FR2859307A1 (fr) * 2003-08-27 2005-03-04 St Microelectronics Sa Memoire cache a lecture asynchrone et dispositif de controle de l'acces a une memoire de donnees comprenant une telle memoire cache
US7644239B2 (en) * 2004-05-03 2010-01-05 Microsoft Corporation Non-volatile memory cache performance improvement
JP4753549B2 (ja) * 2004-05-31 2011-08-24 パナソニック株式会社 キャッシュメモリおよびシステム
CN100553209C (zh) * 2004-08-19 2009-10-21 诺基亚公司 为控制网络上多媒体数据的部署而对目录服务器数据进行高速缓存
KR100704037B1 (ko) * 2005-04-15 2007-04-04 삼성전자주식회사 이종의 비휘발성 메모리를 가지는 데이터 저장장치와 그의구동 방법
US7533215B2 (en) * 2005-09-15 2009-05-12 Intel Corporation Distributed and packed metadata structure for disk cache
US8225297B2 (en) * 2005-12-07 2012-07-17 Microsoft Corporation Cache metadata identifiers for isolation and sharing
US8001538B2 (en) * 2005-12-07 2011-08-16 Microsoft Corporation Software accessible cache metadata
US7991965B2 (en) * 2006-02-07 2011-08-02 Intel Corporation Technique for using memory attributes
US8195832B2 (en) 2007-12-12 2012-06-05 Alcatel Lucent Facilitating management of layer 2 hardware address table based on packet priority information
JP2008305424A (ja) * 2008-07-28 2008-12-18 Hitachi Ltd ディスクシステムとそのキャッシュ制御方法
US8806101B2 (en) 2008-12-30 2014-08-12 Intel Corporation Metaphysical address space for holding lossy metadata in hardware
US8370577B2 (en) * 2009-06-26 2013-02-05 Microsoft Corporation Metaphysically addressed cache metadata

Also Published As

Publication number Publication date
TWI446261B (zh) 2014-07-21
CN101770429A (zh) 2010-07-07
KR20110050719A (ko) 2011-05-16
TW201030609A (en) 2010-08-16
US8806101B2 (en) 2014-08-12
KR101299317B1 (ko) 2013-08-26
CN101770429B (zh) 2014-09-10
WO2010077842A3 (en) 2010-09-23
US20100169382A1 (en) 2010-07-01
JP2012512491A (ja) 2012-05-31
WO2010077842A2 (en) 2010-07-08

Similar Documents

Publication Publication Date Title
JP5451776B2 (ja) ハードウェアフィールドにロッシーなメタデータを保持するためのメタフィジカルアドレス空間
JP6342970B2 (ja) トランザクショナルメモリ(tm)システムにおける読み出し及び書き込み監視属性
JP5860450B2 (ja) ローカルにバッファリングされたデータをサポートするためのキャッシュコヒーレンスプロトコルの拡張
US10387324B2 (en) Method, apparatus, and system for efficiently handling multiple virtual address mappings during transactional execution canceling the transactional execution upon conflict between physical addresses of transactional accesses within the transactional execution
JP5608738B2 (ja) 無制限トランザクショナルメモリ(utm)システムの最適化
KR101025354B1 (ko) 가상 트랜잭션 메모리를 위한 글로벌 오버플로우 방법
US8769212B2 (en) Memory model for hardware attributes within a transactional memory system
US8868837B2 (en) Cache directory lookup reader set encoding for partial cache line speculation support
US9280397B2 (en) Using buffered stores or monitoring to filter redundant transactional accesses and mechanisms for mapping data to buffered metadata
JP2012509529A (ja) トランザクショナル・メモリ・イベントの処理のためのハードウェアにおけるユーザハンドラの登録
JP6023765B2 (ja) 無制限トランザクショナルメモリ(utm)システムの最適化
JP6318440B2 (ja) 無制限トランザクショナルメモリ(utm)システムの最適化

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121213

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130108

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130405

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130412

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130412

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20131105

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20131204

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20131210

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131226

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees