JP6023765B2 - 無制限トランザクショナルメモリ(utm)システムの最適化 - Google Patents
無制限トランザクショナルメモリ(utm)システムの最適化 Download PDFInfo
- Publication number
- JP6023765B2 JP6023765B2 JP2014177475A JP2014177475A JP6023765B2 JP 6023765 B2 JP6023765 B2 JP 6023765B2 JP 2014177475 A JP2014177475 A JP 2014177475A JP 2014177475 A JP2014177475 A JP 2014177475A JP 6023765 B2 JP6023765 B2 JP 6023765B2
- Authority
- JP
- Japan
- Prior art keywords
- cache
- metadata
- buffered
- read
- block
- 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.)
- Active
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Description
<メタデータ>
図2を参照すると、プロセッサにおいてデータアイテムのメタデータを保持する実施形態を図示している。同図に示すように、データアイテム216のメタデータ217はメモリ215においてローカルに保持されている。メタデータは、データアイテム216に対応付けられている任意の特性または属性、例えば、データアイテム216に関するトランザクション的情報を含む。説明のためにメタデータの例を幾つか後述する。しかし、開示しているメタデータの例は、例示的なものに過ぎず、全てを網羅しているものではない。また、メタデータ位置217は、後述する例と、具体的には説明しないがデータアイテム216の他の属性とを組み合わせて保持するとしてもよい。
バッファ済みキャッシュコヒーレンシ状態に関して上述したように、一実施形態によると、メタデータ217は損失が多く、メモリ215のドメインの外部からの外部要求には提供されないローカル情報である。一実施形態においてメモリ215が共有キャッシュメモリであると仮定すると、メタデータアクセス処理に対するミスは、キャッシュメモリ215のドメインの外部では提供されない。基本的に、損失が多いメタデータ217は、キャッシュドメイン内でローカルにのみ保持されており、メモリサブシステム全体で通用するデータとしては存在しないので、ミスを外部に渡して高位レベルメモリからの要求に答える理由はない。このため、損失の多いメタデータについてのミスは、高速且つ効率的に提供され、メタデータに対する外部要求が生成または提供されるまで待機することなく、プロセッサにおけるメモリが即座に割り当てられるとしてよい。
図示した実施形態で示すように、メタデータ217は、データアイテム216とは別のメモリ位置、つまり、異なるアドレスに保持されており、メタデータには別のメタフィジカルアドレス空間が存在することになる。メタフィジカルアドレス空間は、データアドレス空間と直交する空間で、メタフィジカルアドレス空間に対するメタデータアクセス処理が、物理的データエントリをヒットまたは修正することはない。しかし、メタデータがメモリ215等の同一メモリに保持されている実施形態では、メタフィジカルアドレス空間は、メモリ215における割り当てに関する競合のために、データアドレス空間に影響を及ぼす可能性がある。一例を挙げると、データアイテム216はメモリ215のエントリにキャッシュされており、データ216のメタデータ217はキャッシュの別のエントリに保持されている。この場合、後続のメタデータ処理では、データアイテム216のメモリ位置をエビクションの対象として選択して、別のデータアイテムのメタデータを代わりに保持する可能性がある。このため、メタデータ217のアドレスに対応付けられている処理はデータアイテム216をヒットしないことになり、メモリ215内のデータアイテム216等の物理データの代わりにメタデータ要素のメタデータアドレスが保持される。
メタフィジカルアドレス空間の説明を続けると、データアドレス空間内のデータアドレス、例えば、データアイテム216のアドレスを、メタフィジカルアドレス空間内のメタフィジカルアドレス、例えば、メタデータ217用のメタデータアドレスに変換する場合には任意の方法を利用するとしてよい。一実施形態によると、メタフィジカル変換ロジック210を用いて、データアドレス200等のアドレスをメタデータアドレスに変換する。図示しているように、アドレス200は、データアイテム216に対応付けられているアドレス、または、データアイテム216を参照するアドレスを含む。通常のデータ変換、例えば、物理アドレスまたは線形アドレスと、仮想アドレスとの間での変換を利用して、メモリ215においてデータアイテム216にインデックスを付与するとしてよい。また、メタデータ217とデータアイテム216との対応付けは、データアイテム216を参照するアドレス200から、メタデータ217を参照する別の異なるアドレスへの同様の変換を含むので、アドレス200をデータ変換ロジック205でデータアドレスに変換すること、および、メタフィジカル変換ロジック210で別のメタフィジカルアドレスに変換することは、互いに干渉し合うことのない別々のアクセスとなり、これら2つのアドレス空間が直交することとなる。より詳細に後述するが、データ変換ロジック205またはメタフィジカル変換ロジック210は、一実施形態によると、アドレス200に対するアクセス処理の種類に応じて利用され、データアイテム216にアクセスする通常のデータアクセス処理の場合はデータ変換ロジック205を利用し、メタデータ217にアクセスするメタデータアクセス処理ではメタフィジカル変換ロジック210を利用する。これは、命令/処理のオペレーションコード(オペコード)の一部分で特定され得る。
(2)仮想−物理アドレス変換をデータアドレスに対して実行せず、メタフィジカル値をデータアドレスに追加、付加、または含めて、メタデータアドレスを形成する。
(3)メタフィジカル変換テーブルロジックを用いてデータアドレスを変換後メタデータアドレスに変換する。必ずしも必要ではないが、メタフィジカル値を変換後メタデータアドレスに追加、付加、または含めて、メタデータアドレスを形成する。さらに、上述した変換方法はいずれも、データ対メタデータの圧縮比を組み込み、つまり、当該圧縮比に基づいて行なわれ、圧縮比毎にメタデータを別個に格納する。
図3では、複数のメタフィジカルアドレス空間をサポートする実施形態を図示している。一実施形態によると、処理要素毎に1つのメタフィジカルアドレス空間に対応付けられており、各処理要素は独立したメタデータを維持可能である。4つの処理要素301−304を図示している。上述したように、処理要素は、図1を参照しつつ上述した要素のうちいずれを含むとしてもよい。第1の例を挙げると、複数の処理要素は、1つのプロセッサの複数のコアを含む。しかし、以下に記載する説明のための例から分かるように、処理要素301−304は、1つのプロセッサにおける複数のハードウェアスレッド(スレッド)に関連付けて説明する。各ハードウェアスレッドは、1つのソフトウェアスレッドおよび複数のソフトウェアサブシステムを実行する。
上記では、データ対メタデータを1対1でマッピングする場合、圧縮されていないメタデータを説明した。しかし、データに比べて量が削減されたメタデータを利用すること、メタデータのサイズをデータのサイズよりも小さくするメタデータの圧縮がより効率的である場合もある。尚、図2および図3に示すメタフィジカルアドレス変換ロジック210および310は、アドレスの変換および修正を行なう際には、圧縮を考慮に入れて、圧縮メタデータを参照するようにするとしてよい。図4は、メタデータの圧縮を実現するようにアドレスを修正する実施形態を示す。具体的には、データ対メタデータの圧縮比が8である実施形態を示す。図2および図3のメタフィジカルアドレス変換ロジック210および310等の制御ロジックは、メタデータアクセス処理によって参照されているデータアドレス400を受信する。一例を挙げると、圧縮は、アドレス400においてlog2(N)個のビットをシフト、または、アドレス400からlog2(N)個のビットを削除することを含む。尚、Nは、データ対メタデータの圧縮比を表す。図示している例では、圧縮比が8の場合、メタデータアドレス405について、3ビットを下位シフトさせて削除する。基本的に、64ビットを含み、メモリ内の特定のデータバイトを参照するアドレス400は、3ビットを切り捨てて、バイトの粒度でメモリ内のメタデータを参照するために用いられるメタデータバイトアドレス405を形成する。このうち、メタデータバイトアドレスを形成するためにアドレスから既に削除された3ビットを用いてメタデータの1ビットが選択される。
図5は、データに対応付けられているメタデータにアクセスする方法を説明するためのフローチャートである。図5に示すフローチャートの各ステップは実質的に逐次的に実行されるものとして図示されているが、少なくとも一部のステップを並行して実行するとしてよいし、順序を変更して実行するとしてもよい。
メタデータロードおよび試験命令(MDLT)は、引数を2つ含む。つまり、ソースオペランドとしてメタデータが対応付けられているデータアドレス、および、バイト、ワード、dワード、qワードまたはその他のサイズのビットを含むメタデータが書き込まれるレジスタ(デスティネーションオペランド)である。試験されたメタデータビットの値は、レジスタに書き込まれる。プログラマは、MDLT命令のデスティネーションレジスタに格納されているデータに関する知識について何も仮定すべきではなく、このレジスタを操作すべきではない。このレジスタは、同一アドレスへのメタデータストアおよび設定命令(MDSS)に対するソースオペランドとしてのみ利用される。一実施形態によると、MDLT命令は、試験処理および設定処理を組み合わせるが、試験が成功すれば、設定処理を破棄する。
メタデータストアおよび設定命令(MDSS)は、引数を2つ持つ。メタデータが対応付けられているデータアドレス、および、メモリに格納するべきバイト、ワード、dワード、qワードまたは他のサイズのビットを含むメタデータを格納しているレジスタ(ソースオペランド)である。MDSS命令は、ソースオペランドからの値において正しいビットを設定する。
MDSR命令は、ソース引数を2つ持つ。ソースオペランドとしてメタデータが対応付けられているデータアドレス、および、リセットすべきバイト、ワード、dワード、qワードまたは他のサイズのビットを含むメタデータを格納しているレジスタ(ソースオペランド)である。MDSR命令は、ソースオペランドからの値において正しいビットをリセットする。
以下ではソフトウェアの抽象化の実施形態を説明する。所与のCRは、メタデータの1ビットにマッピングされているデータのビット数を示す2の累乗である。利用する場合はどのCR値を利用するかは実施系で定義されている。CR>1は、圧縮されたメタデータを意味する。CR=1は、圧縮されていないメタデータを意味する。
図6は、強制されたメタデータ値に対するハードウェアサポートを提供する実施形態を説明するための図である。STMは通常、アクセスバリアを用いてメモリアクセス処理間でのコンシステンシを保証する。例えば、データアイテムへのメモリアクセスに先立って、当該データアイテムに対応付けられているメタデータ位置またはロック位置を確認して、当該データアイテムが利用可能であるか否かを判断する。他のバリア処理としては、メタデータ位置またはロック位置にあるデータアイテムに対する読出ロック、書込ロック等のロックを取得する処理、データアイテムのあるバージョンを、トランザクションの読出設定または書込設定に記録/格納する処理、そのポイントへのトランザクションの読出設定が依然として有効か否かを判断する処理、データアイテムの値をバッファリングまたはバックアップする処理、監視部を設定する処理、フィルタリング値を更新する処理、および、任意のその他のトランザクション的処理が含まれ得る。
続いて図8は、トランザクションをコミットする前にデータブロックをバッファされており監視されている状態に効率的に遷移させる方法の実施形態を説明するためのフローチャートである。上述したように、メモリの中の複数のブロック、例えば、データアイテムまたはメタデータを保持しているキャッシュラインは、バッファリングおよび/または監視されることがある。例えば、キャッシュラインのコヒーレンシビットは、バッファされている状態を表し、キャッシュラインの属性ビットは、当該キャッシュラインが、監視されていないか、読出監視されているか、または、書込監視されているかを示す。
図9は、トランザクションステータスレジスタのステータス値に基づいてデスティネーションラベルに損失命令がジャンプするようにサポートしているハードウェアの実施形態を図示している。一実施形態によると、ハードウェアは、トランザクションのコンシステンシを確認する手順を加速する。一例として、ハードウェアは、監視あるいはバッファリングされているデータのキャッシュからの損失、つまり、バッファリングあるいは監視されているラインのエビクションを追跡するメカニズム、または、このようなデータに対する競合アクセスを追跡するメカニズム、つまり、監視されているラインへの所有権読出要求等、競合するスヌープを検出する監視部を提供することによってコンシステンシ確認手順をサポートするとしてよい。
上述したように、ハードウェアでサポートされているトランザクションは、グローバルに可視化することなくキャッシュ内にトランザクション的な書込をバッファリングすることによって、ソフトウェアのバージョン管理を加速するとしてよい。この場合、バッファされている値を全てのプロセッサに対して可視化させる単純なコミット命令を用いるとしてよいが、バッファされているラインの何れかが失われている場合には失敗に終わってしまう。しかし、冗長なバリアを削除/フィルタリングするためのフィルタ等、ソフトウェアが加速化のために利用可能なメタデータをハードウェアが保持することができるので、ハードウェアがコンフリクトを検出すれば、コミット命令が失敗することが望ましい。また、コミットされると、トランザクションのためにハードウェアで保持される情報のさまざまな組み合わせ、例えば、メタデータ、監視部、または、バッファされているラインをクリアすることが望ましい。
第1の例として、Txcomwm命令を説明する。この命令は、書込監視されているデータがいずれも失われていなければ(成功)、トランザクションを終了させて、書込監視されておりバッファリングされている全てのデータをグローバルに可視化する命令である。書込監視されているデータが失われていれば、失敗となる。Txcomwmは、フラグを設定(またはリセット)して、成功(または失敗)を示す。Txcomwmは、成功すると、書込監視されている全てのデータのバッファ済み状態をクリアする。Txcomwmは、読出監視状態または書込監視状態には影響を与えないので、ソフトウェアは読出監視状態または書込監視状態を後続のトランザクションで再利用することができる。また、バッファリングされているが書込監視されていない位置の状態にも影響を与えないので、ソフトウェアはこのような位置に維持されている情報を保持することができる。以下に記載する擬似コードは、擬似コードCと示すが、Txcomwmをアルゴリズム的に説明している。TSR.LOSS_WMが0の場合、書込監視されておりバッファされているBBLKは全て、BF特性がアトミックにクリアされ、このバッファリングされているデータは全て他のエージェントにも可視となる。TCR.IN_TXがクリアされる。バッファリングされているがWMされていないブロックは、影響を受けず、バッファリングされたままとなる。CFフラグは、完了すると設定される。TSR.LOSS_WMが1である場合には、CFフラグはクリアされ、TCR.IN_TXがクリアされる。CFフラグは、処理が成功すると1に設定され、失敗すると0に設定される。OFフラグ、SFフラグ、ZFフラグ、AFフラグおよびPFフラグは0に設定される。
変形例の1つであるtxcomwmrmは、Txcomwm命令を拡張した命令で、読出監視されている位置も失われていれば、失敗となる。この変形例は、読出設定コンフリクトを検出する際にハードウェアのみを利用するトランザクションについて有用である。以下に記載する擬似コードは、擬似コードEとして示すが、Txcomwmrmをアルゴリズム的に説明する。TSR.LOSS_WMおよびTSR.LOSS_RMが0の場合、書込監視されておりバッファされているBBLKは全て、BF特性がアトミックにクリアされ、このバッファリングされているデータは全て他のエージェントにも可視となる。TCR.IN_TXがクリアされる。バッファリングされているがWMされていないブロックは、影響を受けず、バッファリングされたままとなる。CFフラグは、完了すると設定される。TSR.LOSS_WMまたはTSR.LOSS_RMが1である場合には、CFフラグはクリアされ、TCR.IN_TXがクリアされる。CFフラグは、処理が成功すると1に設定され、失敗すると0にクリアされる。OFフラグ、SFフラグ、ZFフラグ、AFフラグおよびPFフラグは0に設定される。
第3の変形例を、以下に擬似コードFとしてアルゴリズムで説明する。TSR.LOSS_WMおよびTSR.LOSS_IRMが0の場合、書込監視されておりバッファされているBBLKは全て、BF特性がアトミックにクリアされ、このバッファリングされているデータは全て他のエージェントにも可視となる。RM、WMおよびIRM、ならびに、TCR.IN_TXがクリアされる。バッファリングされているがWMされていないブロックは、影響を受けず、バッファリングされたままとなる。CFフラグは、完了すると設定される。TSR.LOSS_WMまたはTSR.LOSS_RMが1である場合には、CFフラグはクリアされ、TCR.IN_TXがクリアされる。CFフラグは、処理が成功すると1に設定され、失敗すると0にクリアされる。OFフラグ、SFフラグ、ZFフラグ、AFフラグおよびPFフラグは0に設定される。
上述したように、無制限トランザクショナルメモリ(UTM)のアーキテクチャおよびそのハードウェア実装は、監視、バッファリング、および、メタデータという特性を導入することによって、プロセッサアーキテクチャを拡張したものである。このような構成とすることによって、多岐にわたるトランザクショナルメモリ設計を始めとする、さまざまな高度なアルゴリズムを実装するのに必要な手段がソフトウェアに提供される。それぞれの特性は、キャッシュを実装する際に既存のキャッシュプロトコルを拡張するか、または、独立した新しいハードウェアリソースを割り当てるかによって、ハードウェアで実装されるとしてよい。
本実施形態によれば、以下の各項目もまた開示される。
(項目1)
複数の処理要素と、
メタフィジカルロジックと
を備え、
前記複数の処理要素のうち一の処理要素は、複数のソフトウェアサブシステムと対応付けられ、
前記メタフィジカルロジックは、前記複数のソフトウェアサブシステムのうち一の現行ソフトウェアサブシステムと対応付けられ、且つ、データアドレスを参照するメタデータアクセス処理を、前記現行ソフトウェアサブシステムに対応付けられているメタデータ識別子(MDID)および前記データアドレスに少なくとも基づいて、前記現行ソフトウェアサブシステムに対応付けられているメタフィジカルアドレス空間に対応付ける、装置。
(項目2)
前記現行ソフトウェアサブシステムに対応付けられている前記メタフィジカルアドレス空間は、前記複数のソフトウェアサブシステムのうち第2のソフトウェアサブシステムに対応付けられている少なくとも1つのほかのメタフィジカルアドレス空間、および、前記データアドレスを含むデータアドレス空間に対して直交する項目1に記載の装置。
(項目3)
前記複数のソフトウェアサブシステムはそれぞれ、トランザクショナル・ランタイム・サブシステム、ガベージ・コレクション・ランタイム・サブシステム、メモリ保護サブシステム、ソフトウェア変換サブシステム、ネスト化された一群のトランザクションのうち一の外側トランザクション、および、ネスト化された一群のトランザクションのうち一の内側トランザクションから成る群から選択される項目2に記載の装置。
(項目4)
前記メタデータアクセス処理をデコードするデコードロジックをさらに備え、
前記メタデータアクセス処理は、前記デコードロジック内でサポートされた複数の処理のうちの1つとして認められるオペレーションコード(オペコード)を含む項目1に記載の装置。
(項目5)
前記メタフィジカルロジックは、前記データアドレスを、少なくとも前記MDIDに基づいて、前記現行ソフトウェアサブシステムに対応付けられている前記メタフィジカルアドレス空間内のメタデータアドレスに変換するメタフィジカル変換ロジックを含む項目1に記載の装置。
(項目6)
前記メタフィジカル変換ロジックは、前記データアドレスを、さらに前記処理要素に対応付けられている処理要素識別子(PEID)に基づいて、前記現行ソフトウェアサブシステムに対応付けられている前記メタフィジカルアドレス空間内のメタデータアドレスに変換する項目5に記載の装置。
(項目7)
前記メタフィジカル変換ロジックは、前記データアドレスを、さらにデータ対メタデータの圧縮比に基づいて、前記現行ソフトウェアサブシステムに対応付けられている前記メタフィジカルアドレス空間内のメタデータアドレスに変換する項目6に記載の装置。
(項目8)
前記現行ソフトウェアサブシステムによって修正可能なレジスタをさらに備え、
前記レジスタは、前記現行ソフトウェアサブシステムからの書込みに応じて、前記MDIDを保持して、前記現行ソフトウェアサブシステムが現在前記処理要素で実行されている旨を示し、
前記メタフィジカル変換ロジックが、前記データアドレスを、前記PEIDおよび前記MDIDに基づいて、前記現行ソフトウェアサブシステムに対応付けられている前記メタフィジカルアドレス空間内のメタデータアドレスに変換することは、前記メタフィジカル変換ロジックが、前記データアドレスを表す情報と、前記PEIDおよび前記MDIDとを組み合わせることを含む項目6に記載の装置。
(項目9)
前記メタフィジカル変換ロジックは、前記データアドレスを表す情報と前記PEIDおよび前記MDIDとを組み合わせる場合に、前記PEIDおよび前記MDIDを前記データアドレスに追加して前記メタデータアドレスを形成するアルゴリズム、通常のデータ変換テーブルを用いて前記データアドレスを変換後データアドレスに変換して、前記PEIDおよび前記MDIDを前記変換後データアドレスに追加して前記メタデータアドレスを形成するアルゴリズム、および、通常のデータ変換テーブルとは別のメタフィジカル変換テーブルを用いて前記データアドレスを変換後メタデータアドレスに変換して、前記PEIDおよび前記MDIDを前記変換後メタデータアドレスに追加して前記メタデータアドレスを形成するアルゴリズムから成る群から選択される組み合わせアルゴリズムに基づいて行う項目8に記載の装置。
(項目10)
データアドレス空間内にあるデータアドレスであって、キャッシュメモリのデータエントリに保持されているデータアイテムに対応付けられているデータアドレスを参照するメタデータ処理を発見する段階と、
前記データアドレス空間とは別個のメタフィジカルアドレス空間内のメタデータアドレスを、前記データアドレス、前記メタデータ処理に対応付けられている処理要素の処理要素識別子(PEID)、および、前記処理要素に対応付けられているソフトウェアサブシステムのメタデータ識別子(MDID)に基づいて決定する段階と、
前記メタデータアドレスに基づいて、前記キャッシュメモリのメタデータエントリにアクセスする段階と
を備える方法。
(項目11)
前記メタフィジカルアドレス空間は、同様に前記処理要素に対応付けられている追加ソフトウェアサブシステムに対応付けられている追加メタフィジカルアドレス空間からも別個である項目10に記載の方法。
(項目12)
前記ソフトウェアサブシステムは、トランザクショナル・ランタイム・サブシステム、ガベージ・コレクション・ランタイム・サブシステム、メモリ保護サブシステム、ソフトウェア変換サブシステム、ネスト化された一群のトランザクションのうち一の外側トランザクション、および、ネスト化された一群のトランザクションのうち一の内側トランザクションから成る群から選択される項目10に記載の方法。
(項目13)
前記処理要素で現在実行されている前記ソフトウェアサブシステムに応答した、前記ソフトウェアサブシステムからの、前記処理要素に対応付けられている制御レジスタへの書込み処理を発見することに応じて、前記制御レジスタに前記MDIDを書き込む段階と、
前記制御レジスタに基づき前記MDIDを決定する段階と
をさらに備える項目10に記載の方法。
(項目14)
前記メタデータ処理のオペコードの一部分に基づき前記PEIDを決定する段階をさらに備える項目13に記載の方法。
(項目15)
前記メタデータアドレスを前記データアドレス、前記PEID、および、前記MDIDから決定する段階は、前記PEIDおよび前記MDIDを前記データアドレスに追加して前記メタデータアドレスを形成するアルゴリズム、通常のデータ変換テーブルを用いて前記データアドレスを変換後データアドレスに変換して、前記PEIDおよび前記MDIDを前記変換後データアドレスに追加して前記メタデータアドレスを形成するアルゴリズム、および、通常のデータ変換テーブルとは別のメタフィジカル変換テーブルを用いて前記データアドレスを変換後メタデータアドレスに変換して、前記PEIDおよび前記MDIDを前記変換後メタデータアドレスに追加して前記メタデータアドレスを形成するアルゴリズムから成る群から選択されたアルゴリズムと、前記データアドレス、前記PEIDおよび前記MDIDとを組み合わせる段階を有する項目13に記載の方法。
(項目16)
データアイテムのデータアドレスを参照するメタデータアクセス命令をデコードするデコードロジックと、
前記データアドレスをソフトウェアに対してトランスペアレントに別個のメタデータアドレスに変換し、前記デコードロジックが前記メタデータアクセス命令をデコードすることに応じて前記別個のメタデータアドレスによって参照されているメタデータにアクセスするメタデータロジックと
を備え、
前記メタデータアクセス命令は、前記デコードロジックが適切にデコード可能な命令群の一部として認識可能なオペコードを含む、装置。
(項目17)
前記メタデータアクセス命令は、メタデータ・ビット試験および設定(MDLT)命令、メタデータストアおよび設定(MSS)命令、および、メタデータストアおよびリセット命令(MDSR)から成る命令群から選択される項目16に記載の装置。
(項目18)
前記メタデータアクセス命令は、圧縮メタデータ試験(CMDT)命令、圧縮メタデータストア(CMS)命令、および、圧縮メタデータクリア(CMDCLR)命令から成る命令群から選択される項目16に記載の装置。
(項目19)
前記メタデータロジックが前記データアドレスをソフトウェアに対してトランスペアレントに別個のメタデータアドレスに変換することは、前記メタデータアクセス命令に対応付けられている、ソフトウェアサブシステムによって制御レジスタにおいて特定されているメタデータ識別子(MDID)に少なくとも基づいて前記データアドレスを変換することを含む項目16に記載の装置。
(項目20)
前記メタデータアクセス命令はさらに、デスティネーションレジスタへの参照を含み、
前記メタデータロジックが前記別個のメタデータアドレスによって参照されているメタデータにアクセスすることは、前記メタデータロジックが、参照されている前記別個のメタデータアドレスにおける前記メタデータを前記デスティネーションレジスタにロードすることを含む項目16に記載の装置。
(項目21)
前記オペコードは、前記メタデータアクセス命令を発行したスレッドを特定するスレッド識別子フィールドを含む項目20に記載の装置。
(項目22)
前記メタデータロジックが前記別個のメタデータアドレスによって参照されているメタデータにアクセスすることは、前記メタデータロジックが、前記デスティネーションレジスタにロードされた前記メタデータが未設定値であることに応じて、参照されている前記別個のメタデータアドレスにおける前記メタデータを設定値に設定することをさらに含む項目20に記載の装置。
(項目23)
前記設定値および前記未設定値は、前記メタデータアクセス命令で定められている項目22に記載の装置。
(項目24)
プログラムコードを保持する機械可読媒体であって、前記プログラムコードが機械によって実行されると、前記機械は、
データアドレスを参照するデータアクセス処理に応じて、前記データアクセス処理において前記データアドレスを参照するメタデータアクセス処理を生成して、
前記メタデータアクセス処理が前記機械によって実行されると、前記機械は、
前記データアドレスを、前記データアドレスとは別個のメタデータアドレスに変換して、
前記メタデータアドレスに基づき、前記データアドレスにおけるデータアイテムのメタデータにアクセスする機械可読媒体。
(項目25)
前記メタデータアクセス処理は、メタデータ・ビット試験および設定(MDLT)命令、メタデータストアおよび設定(MSS)命令、および、メタデータストアおよびリセット命令(MDSR)から成る命令群から選択される項目24に記載の機械可読媒体。
(項目26)
前記メタデータアクセス処理は、圧縮メタデータ試験(CMDT)命令、圧縮メタデータストア(CMS)命令、および、圧縮メタデータクリア(CMDCLR)命令から成る圧縮命令群から選択される項目24に記載の機械可読媒体。
(項目27)
前記メタデータアクセス処理が前記機械によって実行されると、前記機械が前記データアドレスをメタデータアドレスへと変換することは、前記メタデータアクセス処理が前記機械によって実行されると、前記機械が、データ対メタデータの圧縮比に基づき、前記データアドレスと、前記メタデータアクセス処理に対応付けられている処理要素識別子(PEID)、および、前記メタデータアクセス処理に対応付けられているメタデータデータ識別子(MDID)とを組み合わせることを含む項目26に記載の機械可読媒体。
(項目28)
前記データアドレスは、前記データアイテムを参照するべく、前記機械が有する仮想−物理アドレス変換ロジックによっても変換可能である項目27に記載の機械可読媒体。
(項目29)
前記メタデータアクセス処理はさらに、オペランドレジスタを参照し、
前記メタデータアクセス処理が前記機械によって実行されると前記機械が前記データアイテムのメタデータにアクセスすることは、前記メタデータアクセス処理が前記機械によって実行されると、前記機械は前記オペランドレジスタに保持されている値で前記データアイテムの前記メタデータを更新することを含む項目24に記載の機械可読媒体。
(項目30)
前記プログラムコードはコンパイラコードを含み、
前記コンパイラコードは、前記データアクセス処理を含むアプリケーションコードをコンパイルし、
前記データアクセス処理において前記メタデータアクセス処理を生成することは、前記アプリケーションコードのコンパイル後のバージョンにおいて前記メタデータアクセス処理を生成することを含む項目24に記載の機械可読媒体。
(項目31)
プログラムコードを保持する機械可読媒体であって、前記プログラムコードが機械で実行されると、前記機械は、
前記プログラムコードに含まれるメタデータアクセス命令によって参照されるデータアドレスを、前記メタデータアクセス命令に対応付けられている処理要素において現在アクティブであるソフトウェアサブシステムと対応付けられているメタデータ識別子(MDID)に基づいて、メタデータアドレスに変換し、
前記メタデータアドレスに基づいてメタデータにアクセスする機械可読媒体。
(項目32)
前記メタデータアクセス命令は、前記メタデータをロードするメタデータロード命令、前記メタデータにストアするメタデータストア命令、および、前記メタデータをリセットするメタデータクリア命令から成る命令群から選択される項目31に記載の機械可読媒体。
(項目33)
前記ソフトウェアサブシステムは、トランザクショナル・ランタイム・サブシステム、ガベージ・コレクション・ランタイム・サブシステム、メモリ保護サブシステム、ソフトウェア変換サブシステム、ネスト化された一群のトランザクションのうち一の外側トランザクション、および、ネスト化された一群のトランザクションのうち一の内側トランザクションから成る群から選択される項目31に記載の機械可読媒体。
(項目34)
前記プログラムコードに含まれるメタデータアクセス命令によって参照されるデータアドレスを、前記メタデータアクセス命令に対応付けられている処理要素において現在アクティブであるソフトウェアサブシステムと対応付けられているメタデータ識別子(MDID)に基づいて、メタデータアドレスに変換することは、前記MDIDを前記データアドレスに追加して前記メタデータアドレスを形成するアルゴリズム、通常のデータトランザクションテーブルを用いて前記データアドレスを変換後データアドレスに変換して、前記MDIDを前記変換後アドレスに追加して前記メタデータアドレスを形成するアルゴリズム、および、通常のデータ変換テーブルとは別のメタフィジカル変換テーブルを用いて前記データアドレスを変換後メタデータアドレスに変換して、前記MDIDを前記変換後メタデータアドレスに追加して前記メタデータアドレスを形成するアルゴリズムから成る群から選択される組み合わせアルゴリズムに基づき、前記MDIDと前記データアドレスとを組み合わせることを含む項目31に記載の機械可読媒体。
(項目35)
前記MDIDを追加することは、前記MDIDをMSB位置に付加するアルゴリズム、前記MDIDをLSB位置に付加するアルゴリズム、アドレスビットを前記MDIDで置換するアルゴリズムから成る群から選択される前記MDIDを追加するアルゴリズムを含む項目34に記載の機械可読媒体。
(項目36)
前記プログラムコードを前記機械で実行すると、前記機械はさらに、前記処理要素で現在アクティブである現行ソフトウェアサブシステムを示す、前記処理要素のための制御レジスタに基づき前記MDIDを決定する項目34に記載の機械可読媒体。
(項目37)
データアイテムに対応付けられているデータメモリアドレスを参照するメタデータアクセス命令を含むプログラムコードを保持するメモリと、
前記メモリに対応付けられているプロセッサと
を備え、
前記プロセッサは、
前記メタデータアクセス命令の実行に対応付けられる複数の処理要素のうちの一の処理要素と、
前記メモリから前記メタデータアクセス命令をフェッチするフェッチロジックと、
前記メタデータアクセス命令を少なくとも一のメタデータアクセス処理にデコードするデコードロジックと、
前記処理要素におけるアクティブコンテクストに対応付けられているメタデータ識別子(MDID)を保持する制御レジスタと、
前記データアイテムを保持するためのデータエントリを含むデータキャッシュメモリと、
前記メタデータアクセス処理を実行する実行ロジックと
を有し、
前記実行ロジックが前記メタデータアクセス処理を実行することは、前記プロセッサが有するメタフィジカルアドレス変換ロジックが、前記制御レジスタに保持されている前記MDIDに基づいて、前記データメモリアドレスをメタデータメモリアドレスに変換することを含み、前記データキャッシュメモリに結合されているキャッシュ制御ロジックが、前記メタデータメモリアドレスに基づいて、前記データキャッシュメモリの別のエントリに対して前記メタデータアクセス処理を実行することを含むシステム。
(項目38)
前記メタデータアクセス命令は、前記メタデータをロードするメタデータロード命令、前記メタデータにストアするメタデータストア命令、および、前記メタデータをリセットするメタデータクリア命令から成る命令群から選択される項目37に記載のシステム。
(項目39)
前記アクティブコンテクストは、トランザクショナル・ランタイム・サブシステム、ガベージ・コレクション・ランタイム・サブシステム、メモリ保護サブシステム、ソフトウェア変換サブシステム、ネスト化された一群のトランザクションのうち一の外側トランザクション、および、ネスト化された一群のトランザクションのうち一の内側トランザクションから成る群から選択される項目37に記載のシステム。
(項目40)
前記プロセッサが有する前記メタフィジカルアドレス変換ロジックが前記データメモリアドレスをメタデータメモリアドレスに変換することはさらに、前記処理要素のための処理要素識別子(PEID)に基づいて行われ、
前記プロセッサが有する前記メタフィジカルアドレス変換ロジックが、前記PEIDおよび前記制御レジスタに保持されている前記MDIDに基づいて、前記データメモリアドレスをメタデータメモリアドレスに変換することは、前記PEIDおよび前記MDIDを前記データメモリアドレスに追加して前記メタデータメモリアドレスを形成するアルゴリズム、通常のデータトランザクションテーブルを用いて前記データメモリアドレスを変換後データメモリアドレスに変換して、前記PEIDおよび前記MDIDを前記変換後データメモリアドレスに追加して前記メタデータメモリアドレスを形成するアルゴリズム、および、通常のデータ変換テーブルとは別のメタフィジカル変換テーブルを用いて前記データメモリアドレスを変換後メタデータメモリアドレスに変換して、前記PEIDおよび前記MDIDを前記変換後メタデータメモリアドレスに追加して前記メタデータメモリアドレスを形成するアルゴリズムから成る群から選択される組み合わせアルゴリズムに基づいて、前記PEIDおよび前記MDIDと前記データメモリアドレスとを組み合わせることを含む項目37に記載のシステム。
(項目41)
プロセッサであって、
アドレスを参照するメタデータロード処理を実行する実行モジュールと、
前記メタデータロード処理に応じて、前記プロセッサが第1のモードで動作している場合にはアドレスに対応付けられているメタデータ値を提供し、前記プロセッサが第2のモードで動作している場合には固定値を提供する強制モジュールと
を備えるプロセッサ。
(項目42)
前記第1のモードは強アトミック性モードを含み、前記第2のモードは弱アトミック性モードを含む項目41に記載のプロセッサ。
(項目43)
前記固定値を保持する第1のレジスタをさらに備える項目42に記載のプロセッサ。
(項目44)
モード値を保持する第2のレジスタをさらに備え、
前記モード値は、前記プロセッサが前記強アトミック性モードで動作している旨を示す場合には第1の値を表し、
前記モード値は、前記プロセッサが前記弱アトミック性モードで動作している旨を示す場合には第2の値を表す項目43に記載のプロセッサ。
(項目45)
前記第1のレジスタおよび前記第2のレジスタは、同じメタデータ制御レジスタである項目44に記載のプロセッサ。
(項目46)
前記強制モジュールが、前記プロセッサが前記強アトミック性モードで動作している場合にはアドレスに対応付けられているメタデータ値を提供し、前記プロセッサが前記弱アトミック性モードで動作している場合には固定値を提供することは、前記強制モジュールが、前記第2のレジスタに保持される前記モード値が前記プロセッサが前記強アトミック性モードで動作している旨を示す前記第1の値を表している場合には、前記メタデータロード処理が定めるデスティネーションレジスタに前記メタデータ値をロードして、前記第2のレジスタに保持される前記モード値が前記プロセッサが前記弱アトミック性モードで動作している旨を示す前記第2の値を表す場合には、前記第1のレジスタから前記デスティネーションレジスタへと前記固定値をロードすることを含む項目44に記載のプロセッサ。
(項目47)
アドレスを参照するメタデータアクセス処理を発見する段階と、
プロセッサの実行モードを判断する段階と、
前記プロセッサの実行モードが第1の実行モードであると判断されると、前記メタデータアクセス処理に対して、前記アドレスに対応付けられているメタデータ値を提供する段階と、
前記プロセッサの実行モードが第2の実行モードであると判断されると、前記メタデータアクセス処理に対して、レジスタから固定値を提供する段階と
を備える方法。
(項目48)
前記プロセッサの実行モードを判断する段階は、第1の制御レジスタからモードフラグを読み出す段階を有し、
前記モードフラグは、前記プロセッサの実行モードが第1の実行モードである旨を示す第1の値を保持し、前記プロセッサの実行モードが第2の実行モードである旨を示す第2の値を保持する項目47に記載の方法。
(項目49)
前記メタデータアクセス処理に対して、前記アドレスに対応付けられているメタデータ値を提供する段階は、前記アドレスに対応付けられているメモリ位置から、前記メタデータアクセス処理が参照しているデスティネーションレジスタへと、前記メタデータ値をロードする段階を有する項目47に記載の方法。
(項目50)
前記メタデータアクセス処理に対して、レジスタから固定値を提供する段階は、前記レジスタから前記デスティネーションレジスタへと前記固定値をロードする段階を有する項目49に記載の方法。
(項目51)
アドレスおよびデスティネーションレジスタを参照するメタデータロード処理を保持するメモリと、
前記メモリに対応付けられているプロセッサと
を備え、
前記プロセッサは、
前記メタデータロード処理を実行する実行ロジックと、
強制値を保持するメタデータレジスタと、
前記アドレスに対応付けられているメタデータ値を保持するキャッシュメモリと、
前記実行ロジックが前記メタデータロード処理を実行すると、前記プロセッサが第1のモードで動作する場合には前記メタデータ値を前記デスティネーションレジスタに提供し、前記プロセッサが第2のモードで動作している場合に前記メタデータレジスタから前記デスティネーションレジスタへと前記強制値を提供する強制ロジックと
を有するシステム。
(項目52)
前記強制ロジックはさらに、前記プロセッサが前記第1のモードまたは前記第2のモードのいずれで動作しているかを判断する項目51に記載のシステム。
(項目53)
前記第1のモードは、強アトミック性モードを含み、前記第2のモードは、弱アトミック性モードを含む項目52に記載のシステム。
(項目54)
前記メタデータレジスタはさらに、モード値を保持し、
前記モード値は、前記プロセッサが前記第1のモードで動作している場合に第1の値を示し、前記プロセッサが前記第2のモードで動作している場合に第2の値を示し、
前記強制ロジックがさらに前記プロセッサが前記第1のモードまたは前記第2のモードのいずれで動作しているかを判断することは、前記強制ロジックが前記メタデータレジスタの前記モード値を解釈することを含む項目52に記載のシステム。
(項目55)
モード値を保持する制御レジスタをさらに備え、
前記モード値は、前記プロセッサが前記第1のモードで動作している場合に第1の値を示し、前記プロセッサが前記第2のモードで動作している場合に第2の値を示し、
前記強制ロジックがさらに前記プロセッサが前記第1のモードまたは前記第2のモードのいずれで動作しているかを判断することは、前記強制ロジックが前記制御レジスタの前記モード値を解釈することを含む項目52に記載のシステム。
(項目56)
前記メモリは、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、および、不揮発性メモリから成る群から選択される項目51に記載のシステム。
(項目57)
キャッシュエントリを保持するデータキャッシュアレイと、
前記データキャッシュアレイに結合されているキャッシュ制御ロジックと
を備え、
前記キャッシュ制御ロジックは、
前記キャッシュエントリに対するバッファ済み更新に応じて、前記キャッシュエントリを、監視されていない状態からバッファ済みコヒーレンシ状態および読出監視状態へと遷移させて、
その後に、前記バッファ済み更新をコミットするために前記キャッシュエントリを修正済み状態に遷移させる前に、前記キャッシュエントリを、バッファ済みコヒーレンシ状態および書込監視状態に遷移させる、装置。
(項目58)
前記キャッシュエントリに対する前記バッファ済み更新は、前記キャッシュエントリに保持されるデータアイテムのデータアドレスに対するトランザクショナルメモリアクセス、前記キャッシュエントリに保持されるメタデータに対応付けられているデータアドレスへのメタデータアクセス、および、前記キャッシュエントリへのローカル更新から成る群から選択される更新を含む項目57に記載の装置。
(項目59)
前記キャッシュ制御ロジックが、前記キャッシュエントリを、監視されてない状態からバッファ済みコヒーレンシ状態および読出監視状態へと遷移させることは、前記キャッシュ制御ロジックが前記キャッシュエントリに対応付けられているコヒーレンシビットをバッファ済み値に更新して前記バッファ済みコヒーレンシ状態を表し、前記キャッシュエントリに対応付けられている読出監視属性ビットを読出監視値に更新して前記読出監視状態を表すことを含む項目57に記載の装置。
(項目60)
前記キャッシュ制御ロジックが、前記バッファ済み更新をコミットするために前記キャッシュエントリを修正済み状態に遷移させる前に、前記キャッシュエントリを、バッファ済みコヒーレンシ状態および書込監視状態に遷移させることは、前記キャッシュ制御ロジックが、前記キャッシュエントリに対応付けられている前記コヒーレンシビットの前記バッファ済み値を維持して前記バッファ済みコヒーレンシ状態を表し、前記キャッシュエントリに対応付けられている書込監視属性ビットを書込監視値に更新して前記書込監視状態を表すことを含む項目59に記載の装置。
(項目61)
前記キャッシュ制御ロジックが前記キャッシュエントリを前記修正済み状態に遷移させることは、前記キャッシュ制御ロジックが、前記キャッシュエントリに対応付けられている前記コヒーレンシビットを修正済み値に更新して前記修正済みコヒーレンシ状態を表すことを含む項目60に記載の装置。
(項目62)
前記バッファ済み更新を実行した後にコミット処理を実行する実行ロジックをさらに備え、
前記キャッシュ制御ロジックが、前記バッファ済み更新をコミットするために前記キャッシュエントリを修正済み状態に遷移させる前に、前記キャッシュエントリをバッファ済みコヒーレンシ状態および書込監視状態に遷移させることは、前記実行ロジックが前記コミット処理を実行することに応じて行なう項目57に記載の装置。
(項目63)
キャッシュメモリのブロックに対するバッファ済み更新を発見する段階と、
前記キャッシュメモリの前記ブロックに対する前記バッファ済み更新を発見すると、前記ブロックに対して読出監視を適用する段階と、
前記読出監視を適用する段階の後に、前記ブロックをコミットする前に、前記ブロックに書込監視を適用する段階と
を備える方法。
(項目64)
前記キャッシュメモリの前記ブロックに対する前記バッファ済み更新は、前記キャッシュメモリの前記ブロックに対するトランザクション的書込を含む項目63に記載の方法。
(項目65)
前記読出監視を適用する段階と同時に前記キャッシュメモリの前記ブロックに対して前記バッファ済み更新を実行する段階をさらに備え、
前記ブロックは、前記バッファ済み更新を実行した後は、バッファ済みコヒーレンシ状態で保持される項目63に記載の方法。
(項目66)
前記読出監視を適用する段階の後に前記キャッシュメモリの前記ブロックに対して前記バッファ済み更新を実行する段階をさらに備え、
前記ブロックは、前記バッファ済み更新を実行した後は、バッファ済みコヒーレンシ状態で保持される項目63に記載の方法。
(項目67)
前記キャッシュメモリの前記ブロックに対する前記バッファ済み更新を発見すると、前記ブロックに対して読出監視を適用する段階は、
前記キャッシュメモリのキャッシュドメインの外部の複数の処理要素に対して、前記ブロックに対する読出要求を生成する段階と、
前記ブロックに対する前記読出要求に応じて前記キャッシュドメインの外部の前記複数の処理要素からコンフリクトがないことを検出すると、前記キャッシュメモリの前記ブロックに対応付けられている読出監視属性を読出監視値に更新して前記ブロックに読出監視を適用する段階と
を有する項目63に記載の方法。
(項目68)
前記読出監視を適用する段階の後に、前記ブロックをコミットする前に、前記ブロックに書込監視を適用する段階は、
前記キャッシュメモリの前記キャッシュドメインの外部の前記複数の処理要素に対して、前記ブロックについての所有権読出要求を生成する段階と、
前記ブロックについての前記所有権読出要求に応じて前記キャッシュドメインの外部の前記複数の処理要素からコンフリクトがないと検出することに応じて、前記キャッシュメモリの前記ブロックに対応付けられている書込監視属性を書込監視値に更新して、前記ブロックに書込監視を適用する段階と
を有する項目67に記載の方法。
(項目69)
前記ブロックをコミットすることは、前記ブロックのキャッシュコヒーレンシ状態を、バッファ済みコヒーレンシ状態から修正済みコヒーレンシ状態へと遷移させることを含む項目68に記載の方法。
(項目70)
プログラムコードを保持する機械アクセス可能媒体であって、
前記プログラムコードを機械が実行すると、前記機械は、
キャッシュメモリのブロックへのバッファ済み書込があると、前記ブロックに読出監視を適用し、
前記ブロックに対して前記バッファ済み書込を実行し、
前記読出監視を適用した後、且つ、前記ブロックをコミットする前に、前記ブロックに書込監視を適用する機械アクセス可能媒体。
(項目71)
前記キャッシュメモリの前記ブロックへの前記バッファ済み書込があると、前記ブロックに読出監視を適用することは、
前記キャッシュメモリのキャッシュドメインの外部の複数の処理要素に対して前記ブロックについての読出要求を生成することと、
前記ブロックについての前記読出要求に応じて前記キャッシュドメインの外部の前記複数の処理要素からコンフリクトがないことを検出することに応じて、前記キャッシュメモリの前記ブロックに対応付けられている読出監視属性を読出監視値に更新して前記ブロックに対して読出監視を適用することと
を含む
項目70に記載の機械アクセス可能媒体。
(項目72)
前記読出監視を適用した後、且つ、前記ブロックをコミットする前に、前記ブロックに書込監視を適用することは、
前記キャッシュメモリの前記キャッシュドメインの外部の前記複数の処理要素に対して前記ブロックについての所有権読出要求を生成することと、
前記ブロックについての前記所有権読出要求に応じて前記キャッシュドメインの外部の前記複数の処理要素からコンフリクトがないと検出することに応じて、前記キャッシュメモリの前記ブロックに対応付けられている書込監視属性を書込監視値に更新して前記ブロックに書込監視を適用することと
を含む項目71に記載の機械アクセス可能媒体。
(項目73)
コミット処理を発見することに応じて、前記読出監視を適用した後、且つ、前記ブロックをコミットする前に、前記ブロックに書込監視を適用する項目70に記載の機械アクセス可能媒体。
(項目74)
前記ブロックをコミットすることは、前記ブロックのキャッシュコヒーレンシ状態を修正済みコヒーレンシ状態に遷移させることを含む項目70に記載の機械アクセス可能媒体。
(項目75)
メモリアドレスを参照するトランザクション的書込、および、コミット処理を保持するシステムメモリと、
キャッシュメモリを有し、前記システムメモリに対応付けられているプロセッサと
を備え、
前記プロセッサが有する前記キャッシュメモリは、
前記トランザクション的書込を受信することに応じて前記メモリアドレスに対応付けられているキャッシュラインについての読出要求を生成し、
前記読出要求に基づきコンフリクトが検出されないことに応じて、バッファされており読出監視されている状態に前記キャッシュラインを遷移させ、
前記コミット処理を受信することに応じて所有権読出要求を生成し、前記所有権読出要求に基づきコンフリクトが検出されないことに応じて、バッファされており書込監視されている状態に前記キャッシュラインを遷移させ、
前記バッファされており書込監視されている状態に前記キャッシュラインを遷移させることに応じて、修正済み状態に前記キャッシュラインを遷移させる、システム。
(項目76)
前記キャッシュメモリが、バッファされており読出監視されている状態に前記キャッシュラインを遷移させることは、前記キャッシュメモリが、前記キャッシュラインに対応付けられているコヒーレンシビットをバッファ済み値に更新して、前記バッファされており読出監視されている状態のうちバッファされている状態の部分を表し、前記キャッシュラインに対応付けられている読出監視属性ビットを読出監視値に更新して、前記バッファされており読出監視されている状態のうち読出監視されている状態の部分を表すことを含む項目75に記載のシステム。
(項目77)
前記キャッシュメモリが、バッファされており書込監視されている状態に前記キャッシュラインを遷移させることは、前記キャッシュメモリが、前記キャッシュラインに対応付けられている前記コヒーレンシビットの前記バッファ済み値を維持して、前記バッファされており書込監視されている状態のうちバッファされている状態の部分を表し、前記キャッシュラインに対応付けられている書込監視属性ビットを書込監視値に更新して、前記バッファされており書込監視されている状態のうち書込監視されている状態部分を表すことを含む項目76に記載のシステム。
(項目78)
前記キャッシュメモリが、前記キャッシュラインを前記バッファされており書込監視されている状態に遷移させることに応じて、前記キャッシュラインを修正済み状態に遷移させることは、前記コヒーレンシビットを修正済み値に更新して前記修正済み状態を表すことを含む項目77に記載のシステム。
(項目79)
前記メモリは、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、および、不揮発性メモリから成る群から選択される項目75に記載のシステム。
(項目80)
損失命令をデコードしてデコード済み要素を提供するデコードロジックと、
損失イベントが検出された旨を示す損失値を保持する損失フィールドを有するステータス格納要素と、
前記ステータス格納要素に結合されているジャンプロジックと
を備え、
前記損失命令は、ラベルを参照しており、オペレーションコード(オペコード)を含み、前記デコードロジックによって認識可能な命令群の一部となり、
前記ジャンプロジックは、前記デコード済み要素、および、前記損失イベントが検出された旨を示す前記損失値に基づいて前記ラベルに制御を渡す、装置。
(項目81)
前記ラベルはジャンプ先アドレスを含み、
損失イベントは、読出監視されているキャッシュラインへの書込みが発生した旨を示す読出監視コンフリクト、書込監視されているキャッシュラインへのアクセスが発生した旨を示す書込監視コンフリクト、および、バッファされているキャッシュラインの損失から成る群から選択される項目80に記載の装置。
(項目82)
前記ステータス格納要素はレジスタを有し、
前記損失値を保持する前記損失フィールドは、読出監視コンフリクトが検出されると設定される第1のビットと、書込監視コンフリクトが検出されると設定される第2のビットと、バッファされている物理データの損失が検出されると設定される第3のビットと、バッファされているメタデータの損失が検出されると設定される第4のビットとを含む項目80に記載の装置。
(項目83)
前記損失命令は読出監視損失命令を含み、前記オペコードは読出監視損失イベント型を規定し、
前記ジャンプロジックが、前記デコード済み要素、および、前記損失イベントが検出された旨を示す前記損失値に基づいて前記ラベルに制御を渡すことは、前記ジャンプロジックが、発生した前記損失イベントの種類が、前記読出監視損失命令の前記オペコードによって規定されている前記読出監視損失イベント型である旨を示す前記損失値を前記損失フィールドが保持していることに応じて、前記ラベルに実行をジャンプさせることを含む項目80に記載の装置。
(項目84)
前記損失命令は書込監視損失命令を含み、前記オペコードは書込監視損失イベント型を規定し、
前記ジャンプロジックが、前記デコード済み要素、および、前記損失イベントが検出された旨を示す前記損失値を保持する前記損失フィールドに基づいて前記ラベルに制御を渡すことは、前記ジャンプロジックが、発生した前記損失イベントの種類が、前記書込監視損失命令の前記オペコードによって規定されている前記書込監視損失イベント型である旨を示す前記損失値を前記損失フィールドが保持していることに応じて、前記ラベルに実行をジャンプさせることを含む項目80に記載の装置。
(項目85)
前記損失命令はバッファ済み損失命令を含み、前記オペコードはバッファ済み損失イベント型を規定し、
前記ジャンプロジックが、前記デコード済み要素、および、前記損失イベントが検出された旨を示す前記損失値を保持する前記損失フィールドに基づいて前記ラベルに制御を渡すことは、前記ジャンプロジックが、発生した前記損失イベントの種類が、前記バッファ済み損失命令の前記オペコードによって規定されている前記バッファ済み損失イベント型である旨を示す前記損失値を前記損失フィールドが保持していることに応じて、前記ラベルに実行をジャンプさせることを含む項目80に記載の装置。
(項目86)
プログラムコードを保持する機械アクセス可能媒体であって、
前記プログラムコードを機械が実行すると、前記機械は、
損失命令に応じて、
前記損失命令によって規定されており、前記機械に設けられているトランザクションステータスレジスタに保持されているトランザクションのステータスを判断して、
前記損失命令に対応付けられている損失イベントが検出された旨を前記トランザクションの前記ステータスが示していることに応じて、前記損失命令によって規定されているラベルに実行を誘導する機械アクセス可能媒体。
(項目87)
前記ラベルはジャンプ先アドレスを含み、
損失イベントは、読出監視されているキャッシュラインへの書込みが発生した旨を示す読出監視コンフリクト、書込監視されているキャッシュラインへのアクセスが発生した旨を示す書込監視コンフリクト、および、バッファされているキャッシュラインの損失から成る群から選択される項目86に記載の機械アクセス可能媒体。
(項目88)
前記損失命令は、前記損失イベントを読出監視コンフリクトと規定する読出監視ジャンプ損失(JLOSS)命令を含み、
前記トランザクションステータスレジスタに保持されているトランザクションのステータスを判断することは、前記トランザクションステータスレジスタに保持されている読出監視コンフリクトビットのステータスを判断することを含み、
前記損失命令に対応付けられている損失イベントが検出された旨を前記トランザクションの前記ステータスが示していることに応じて、前記損失命令によって規定されているラベルに実行を誘導することは、読出監視コンフリクトが検出された旨を、前記トランザクションステータスレジスタに保持されている前記読出監視コンフリクトビットの前記ステータスが示していることに応じて、前記損失命令によって規定されているラベルに実行を誘導することを含む項目86に記載の機械アクセス可能媒体。
(項目89)
前記損失命令は、前記損失イベントを書込監視コンフリクトと規定する書込監視ジャンプ損失(JLOSS)命令を含み、
前記トランザクションステータスレジスタに保持されているトランザクションのステータスを判断することは、前記トランザクションステータスレジスタに保持されている書込監視コンフリクトビットのステータスを判断することを含み、
前記損失命令に対応付けられている損失イベントが検出された旨を前記トランザクションの前記ステータスが示していることに応じて、前記損失命令によって規定されているラベルに実行を誘導することは、書込監視コンフリクトが検出された旨を、前記トランザクションステータスレジスタに保持されている前記書込監視コンフリクトビットの前記ステータスが示していることに応じて、前記損失命令によって規定されているラベルに実行を誘導することを含む項目86に記載の機械アクセス可能媒体。
(項目90)
前記損失命令は、前記損失イベントをバッファ済み監視コンフリクトと規定するバッファ済み監視ジャンプ損失(JLOSS)命令を含み、
前記トランザクションステータスレジスタに保持されているトランザクションのステータスを判断することは、前記トランザクションステータスレジスタに保持されているバッファ済み監視コンフリクトビットのステータスを判断することを含み、
前記損失命令に対応付けられている損失イベントが検出された旨を前記トランザクションの前記ステータスが示していることに応じて、前記損失命令によって規定されているラベルに実行を誘導することは、バッファ済み監視コンフリクトが検出された旨を、前記トランザクションステータスレジスタに保持されている前記バッファ済み監視コンフリクトビットの前記ステータスが示していることに応じて、前記損失命令によって規定されているラベルに実行を誘導することを含む項目86に記載の機械アクセス可能媒体。
(項目91)
プロセッサにおいて損失命令を発見する段階と、
前記損失命令を発見する段階に応じて、前記プロセッサにおいて前記損失命令に対応付けられている損失イベントが検出されたか否かを判断する段階と、
前記損失命令を発見する段階に応じて前記損失命令が参照しているラベルに分岐して、前記損失命令に対応付けられている前記損失イベントが前記プロセッサにおいて検出されたと判断する段階と
を備える方法。
(項目92)
前記ラベルはジャンプアドレスを含む項目91に記載の方法。
(項目93)
前記損失命令は読出監視損失命令を含み、
前記読出監視損失命令に対応付けられている前記損失イベントは、読出監視されているキャッシュラインへの書込を含む項目91に記載の方法。
(項目94)
前記損失命令は書込監視損失命令を含み、
前記書込監視損失命令に対応付けられている前記損失イベントは、書込監視されているキャッシュラインへのアクセスを含む項目91に記載の方法。
(項目95)
前記損失命令はバッファ済み損失命令を含み、
前記バッファ済み損失命令に対応付けられている前記損失イベントは、バッファされているキャッシュラインのエビクションを含む項目91に記載の方法。
(項目96)
前記プロセッサにおいてバッファされているキャッシュラインのエビクションが検出されたか否かを判断することは、トランザクションステータスレジスタのバッファ済み損失ステータスビットを確認して、前記バッファ済み損失ステータスビットが損失値に設定されていることに応じて、バッファされているキャッシュラインのエビクションが検出されたと判断することを含む項目95に記載の方法。
(項目97)
トランザクションのコミット命令をデコードしてデコード済み要素を提供するデコードロジックと、
前記デコード済み要素に応じて、前記コミット命令が規定するコミット条件が前記トランザクションについて満たされるか否かを判断するコミットロジックと
を備え、
前記コミット命令は、前記コミット条件を規定しており、オペレーションコード(オペコード)を含み、前記デコードロジックによって認識可能な命令群の一部となる、装置。
(項目98)
前記コミット条件は、読出監視データの損失無し、書込監視データの損失無し、バッファデータの損失無し、および、メタデータの損失無しのうち任意の規定された組み合わせを含み、
前記コミットロジックが前記コミット条件が満たされていると判断することは、読出監視データの損失無し、書込監視データの損失無し、バッファデータの損失無し、および、メタデータの損失無しのうち前記規定された組み合わせが発生したと判断することを含む項目97に記載の装置。
(項目99)
前記コミット条件を規定する前記コミット命令は、4ビットを保持する前記コミット命令を含み、前記4ビットのうち、第1のビットは、設定されると、読出監視データの損失がコミットすべき条件であることを示し、第2のビットは、設定されると、書込監視データの損失がコミットすべき条件であることを示し、第3のビットは、設定されると、バッファデータの損失がコミットすべき条件であることを示し、第4のビットは、設定されると、メタデータの損失がコミットすべき条件であることを示す項目97に記載の装置。
(項目100)
前記4ビットは、前記オペコードに含まれる項目99に記載の装置。
(項目101)
前記コミットロジックが前記コミット命令が規定する前記コミット条件が前記トランザクションについて満たされているか否か判断することは、前記コミットロジックが、前記コミット命令で設定される前記4ビットの各ビットについてトランザクションステータスレジスタの対応ステータスビットを確認して、確認した前記トランザクションステータスレジスタの前記対応ステータスビットのいずれも対応する損失を示すべく設定されていない場合に、前記コミット条件が満たされていると判断することを含む 項目99に記載の装置。
(項目102)
前記コミット命令はさらに、読出監視データ、書込監視データ、バッファ済みデータ、および、メタデータのうちコミット時にクリアすべき組み合わせを示すクリア制御を規定しており、
前記コミットロジックは、前記コミット命令で規定する前記コミット条件が前記トランザクションについて満たされていると判断することに応じて前記トランザクションをコミットした後で、読出監視データ、書込監視データ、バッファデータ、および、メタデータのうち規定された前記組み合わせをクリアする項目97に記載の装置。
(項目103)
プログラムコードを保持する機械可読媒体であって、
前記プログラムコードを機械が実行すると、前記機械は、
前記プログラムコードに含まれるトランザクションについて、少なくとも1つのコミット失敗条件を規定しているコミット命令を発見し、
前記トランザクションの実行中に、前記コミット命令が規定する前記少なくとも1つのコミット失敗条件が検出されたか否かを判断し、
前記トランザクションの実行中に、前記コミット命令が規定する前記少なくとも1つのコミット失敗条件が検出されたと判断したことに応じて、前記トランザクションの実行中に、前記コミット命令が規定する前記少なくとも1つのコミット失敗条件が検出されたことを示す値を提供する
機械可読媒体。
(項目104)
前記少なくとも1つのコミット失敗条件は、読出監視データの損失、書込監視データの損失、バッファデータの損失、および、メタデータの損失から成る群から選択される項目103に記載の機械可読媒体。
(項目105)
前記トランザクションの実行中に、前記コミット命令が規定する前記少なくとも1つのコミット失敗条件が検出されたことを示す値を提供することは、前記トランザクションの実行中に、前記コミット命令が規定する前記少なくとも1つのコミット失敗条件が検出されたことを示す値をデスティネーションレジスタにロードすることを含む項目103に記載の機械可読媒体。
(項目106)
前記トランザクションの実行中に、前記コミット命令が規定する前記少なくとも1つのコミット失敗条件が検出されたか否かを判断することは、
前記少なくとも1つのコミット失敗条件に対応付けられているトランザクションステータスレジスタのステータスビットを確認することと、
前記少なくとも1つのコミット失敗条件に対応付けられている前記ステータスビットが、前記トランザクションの実行中に前記少なくとも1つのコミット失敗条件が検出された旨を示すように設定されていることに応じて、前記トランザクションの実行中に、前記コミット命令が規定する前記少なくとも1つのコミット失敗条件が検出されたと判断することと、
前記少なくとも1つのコミット失敗条件に対応付けられている前記ステータスビットが、前記トランザクションの実行中に前記少なくとも1つのコミット失敗条件が検出されなかった旨を示すようにリセットされていることに応じて、前記トランザクションの実行中に、前記コミット命令が規定する前記少なくとも1つのコミット失敗条件が検出されなかったと判断することと
を含む項目103に記載の機械可読媒体。
(項目107)
前記トランザクションの実行中に前記コミット命令が規定する前記少なくとも1つのコミット失敗条件が検出されなかったと判断することに応じて、前記トランザクションをコミットすることをさらに含む項目106に記載の機械可読媒体。
(項目108)
トランザクションにおいて、前記トランザクションについての複数のコミット失敗条件を規定しているオペレーションコード(オペコード)を含むコミット命令を発見する段階と、
前記トランザクションの実行中に前記コミット命令の前記オペコードにおいて規定されている前記トランザクションについての前記複数のコミット失敗条件がいずれも検出されなかったと判断する段階と、
前記トランザクションの実行中に前記コミット命令の前記オペコードにおいて規定されている前記トランザクションについての前記複数のコミット失敗条件がいずれも検出されなかったと判断することに応じて、前記トランザクションをコミットする段階と
を備える方法。
(項目109)
前記トランザクションについての前記複数のコミット失敗条件を規定している前記オペコードは、設定されると読出監視データの損失がコミット失敗条件であると規定する前記オペコードの第1のビットと、設定されると書込監視データの損失がコミット失敗条件であると規定する前記オペコードの第2のビットと、設定されるとバッファデータの損失がコミット失敗条件であると規定する前記オペコードの第3のビットと、設定されるとメタデータの損失がコミット失敗条件であると規定する前記オペコードの第4のビットとを含む項目108に記載の方法。
(項目110)
前記トランザクションの実行中に前記コミット命令の前記オペコードにおいて規定されている前記トランザクションについての前記複数のコミット失敗条件がいずれも検出されなかったと判断する段階は、
前記オペコードの前記第1のビットが設定されていることに応じて、トランザクションステータスレジスタの読出監視ビットが設定されておらず読出監視データの損失無しを示していると判断する段階と、
前記オペコードの前記第2のビットが設定されていることに応じて、前記トランザクションステータスレジスタの書込監視ビットが設定されておらず書込監視データの損失無しを示していると判断する段階と、
前記オペコードの前記第3のビットが設定されていることに応じて、前記トランザクションステータスレジスタのバッファ済みビットが設定されておらずバッファデータの損失無しを示していると判断する段階と、
前記オペコードの前記第4のビットが設定されていることに応じて、前記トランザクションステータスレジスタのメタデータビットが設定されておらずメタデータの損失無しを示していると判断する段階と
を有する項目109に記載の方法。
(項目111)
前記オペコードはさらに、クリア制御を規定しており、
前記クリア制御を規定している前記オペコードは、設定されると読出監視データをコミット時にクリアすることを規定している前記オペコードの第5のビットと、設定されると書込監視データをコミット時にクリアすることを規定している前記オペコードの第6のビットと、設定されるとバッファデータをコミット時にクリアすることを規定している前記オペコードの第7のビットと、設定されるとメタデータをコミット時にクリアすることを規定している前記オペコードの第8のビットとを含む項目109に記載の方法。
(項目112)
前記トランザクションをコミットする段階は、前記第5のビットが設定されている場合に読出監視データをクリアする段階と、前記第6のビットが設定されている場合に書込監視データをクリアする段階と、前記第7のビットが設定されている場合にバッファデータをクリアする段階と、前記第8のビットが設定されている場合にメタデータをクリアする段階を含む項目111に記載の方法。
(項目113)
トランザクションのためのコミット命令であって、クリア制御情報および前記トランザクションについての複数のコミット失敗条件を規定するオペレーションコード(オペコード)を含むコミット命令を含むプログラムコードを保持するメモリと、
前記コミット命令の前記オペコードをデコードするデコードロジック、および、コミットロジックを有するプロセッサと
を備え、
前記コミットロジックは、前記オペコードで規定される前記複数のコミット失敗条件のいずれも前記トランザクションの実行中に検出されなかったか否かを判断し、前記コミットロジックが前記トランザクションの実行中に前記複数のコミット失敗条件のいずれも検出されなかったと判断することに応じて、前記トランザクションをコミットし、
前記コミットロジックが前記トランザクションをコミットすることは、前記コミットロジックが、前記コミット命令の前記オペコードで規定される前記クリア制御情報に基づいてトランザクション情報をクリアすることを含む、システム。
(項目114)
前記コミット失敗条件は、読出監視データの損失、書込監視データの損失、バッファデータの損失、および、メタデータの損失を組み合わせて決まる項目113に記載のシステム。
(項目115)
前記コミット失敗条件は、書込監視データの損失、読出監視データの損失または書込監視データの損失、書込監視データの損失またはバッファデータの損失、書込監視データの損失またはメタデータの損失、および、書込監視データの損失、読出監視データの損失、バッファデータの損失またはメタデータの損失から成る群から選択される項目114に記載のシステム。
(項目116)
前記オペコードが前記クリア制御情報を規定することは、読出監視、書込監視、バッファ済みコヒーレンシおよびメタデータのうちどれがコミット時にクリアされるかを前記オペコードが規定していることを含み、
前記コミットロジックが前記コミット命令の前記オペコードに規定される前記クリア制御情報に基づいてトランザクション情報をクリアすることは、前記コミットロジックが前記読出監視、前記書込監視、前記バッファ済みコヒーレンシ、および、前記メタデータのうち前記オペコードでクリアされるべきことが規定されているものをクリアすることを含む項目113に記載のシステム。
(項目117)
トランザクションイネーブルフィールド(TEF)を有する格納要素と、
リングレベル遷移イベントに応じて少なくとも前記TEFの状態を格納構造に保存し、リターンイベントに応じて少なくとも前記TEFの状態を前記格納構造から前記格納要素へと戻すロジックと
を備え、
前記TEFは、アクティブ値を保持している場合には対応付けられているトランザクションがアクティブでイネーブルされている旨を示し、非アクティブ値を保持している場合には対応付けられているトランザクションが一時停止している旨を示す、装置。
(項目118)
前記リングレベル遷移イベントは、割り込み、例外、システム呼び出し、仮想マシン開始、仮想マシン終了から成る群から選択されるイベントを含む項目117に記載の装置。
(項目119)
前記リターンイベントは、割り込みリターン(IRET)、システムリターン(SYSRET)、仮想マシン(VM)開始、および、仮想マシン(VM)終了から成る群から選択されるイベントを含む項目117に記載の装置。
(項目120)
前記格納要素はフラグレジスタを含み、
前記TEFはトランザクションイネーブルフラグを含む項目117に記載の装置。
(項目121)
前記格納構造はスタックを含み、前記ロジックが前記スタックに少なくとも前記TEFの状態を保存することは、プッシュロジックが少なくとも前記TEFの状態を前記スタックにプッシュすることを含み、前記ロジックが前記スタックから前記格納要素に少なくとも前記TEFの状態を戻すことは、ポップロジックが少なくとも前記TEFの状態を前記スタックからポップして前記TEFを前記格納要素に戻すことを含む項目117に記載の装置。
(項目122)
実行されるとリングレベル遷移イベントを発生させるコードを保持するメモリと、
レジスタおよびスタックロジックを有するプロセッサと
を備え、
前記レジスタは、対応付けられているトランザクションがアクティブである旨を示すアクティブ値を保持するためのトランザクションイネーブルフィールド(TEF)を含み、
前記スタックロジックは、前記リングレベル遷移イベントに応じて前記レジスタの以前の状態をスタックにプッシュして、前記TEFを非アクティブ値にクリアして前記対応付けられているトランザクションが一時停止している旨を示し、リターンイベントに応じて、前記スタックから前記レジスタに前記レジスタの前記以前の状態を戻すシステム。
(項目123)
前記リングレベル遷移イベントは、割り込み、例外、システム呼び出し、仮想マシン開始、および、仮想マシン終了から成る群から選択されるイベントを含む項目122に記載のシステム。
(項目124)
前記リターンイベントは、割り込みリターン(IRET)、システムリターン(SYSRET)、仮想マシン(VM)開始、および、仮想マシン(VM)終了から成る群から選択されるイベントを含む項目122に記載のシステム。
(項目125)
前記レジスタはフラグレジスタを含み、前記TEFはトランザクションイネーブルフラグを含み、前記アクティブ値は前記トランザクションイネーブルフラグの論理High値を含み、前記非アクティブ値は前記トランザクションイネーブルフラグの論理Low値を含む項目122に記載のシステム。
(項目126)
現在のリングレベルからのリングレベル遷移イベントを検出する段階と、
トランザクションイネーブルフィールドを含むレジスタの以前の状態を格納構造に保存する段階と、
前記トランザクションイネーブルフィールドをクリアして対応付けられているトランザクションが一時停止している旨を示す段階と、
前記現在のリングレベルへのリターンイベントを検出する段階と、
前記現在のリングレベルへの前記リターンイベントを検出する段階に応じて、前記格納構造から前記レジスタの前記以前の状態を戻す段階と
を備える方法。
(項目127)
前記格納構造はカーネルスタックを含み、前記レジスタの前記以前の状態を前記カーネルスタックに保存する段階は、前記レジスタの前記以前の状態を前記カーネルスタックにプッシュする段階を有し、前記カーネルスタックから前記レジスタの前記以前の状態を戻す段階は、前記カーネルスタックから前記レジスタの前記以前の状態をポップして、前記以前の状態を前記レジスタに戻す段階を有する項目126に記載の方法。
(項目128)
前記現在のリングレベルは、ユーザリングレベルを含む項目126に記載の方法。
(項目129)
前記リングレベル遷移イベントは、割り込み、例外、システム呼び出し、および、仮想マシン開始から成る群から選択されるイベントを含む項目128に記載の方法。
(項目130)
前記現在の特権レベルへの前記リターンイベントは、割り込みリターン(IRET)、システムリターン(SYSRET)、および、仮想マシン(VM)終了から成る群から選択されるイベントを含む項目129に記載の方法。
Claims (23)
- キャッシュエントリを保持するデータキャッシュアレイと、
前記データキャッシュアレイに結合されているキャッシュ制御ロジックと
を備え、
前記キャッシュ制御ロジックは、
前記キャッシュエントリに対するバッファ済み更新に応じて、前記キャッシュエントリを、監視されていない状態からバッファ済みコヒーレンシ状態および読出監視状態へと遷移させて、
その後に、前記バッファ済み更新をコミットするために前記キャッシュエントリを修正済み状態に遷移させる前に、前記キャッシュエントリを、バッファ済みコヒーレンシ状態および書込監視状態に遷移させる、装置。 - 前記キャッシュエントリに対する前記バッファ済み更新は、前記キャッシュエントリに保持されるデータアイテムのデータアドレスに対するトランザクショナルメモリアクセス、前記キャッシュエントリに保持されるメタデータに対応付けられているデータアドレスへのメタデータアクセス、および、前記キャッシュエントリへのローカル更新から成る群から選択される更新を含む請求項1に記載の装置。
- 前記キャッシュ制御ロジックが、前記キャッシュエントリを、監視されてない状態からバッファ済みコヒーレンシ状態および読出監視状態へと遷移させることは、前記キャッシュ制御ロジックが前記キャッシュエントリに対応付けられているコヒーレンシビットをバッファ済み値に更新して前記バッファ済みコヒーレンシ状態を表し、前記キャッシュエントリに対応付けられている読出監視属性ビットを読出監視値に更新して前記読出監視状態を表すことを含む請求項1に記載の装置。
- 前記キャッシュ制御ロジックが、前記バッファ済み更新をコミットするために前記キャッシュエントリを修正済み状態に遷移させる前に、前記キャッシュエントリを、バッファ済みコヒーレンシ状態および書込監視状態に遷移させることは、前記キャッシュ制御ロジックが、前記キャッシュエントリに対応付けられている前記コヒーレンシビットの前記バッファ済み値を維持して前記バッファ済みコヒーレンシ状態を表し、前記キャッシュエントリに対応付けられている書込監視属性ビットを書込監視値に更新して前記書込監視状態を表すことを含む請求項3に記載の装置。
- 前記キャッシュ制御ロジックが前記キャッシュエントリを前記修正済み状態に遷移させることは、前記キャッシュ制御ロジックが、前記キャッシュエントリに対応付けられている前記コヒーレンシビットを更新して前記修正済みコヒーレンシ状態を表すことを含む請求項4に記載の装置。
- 前記バッファ済み更新を実行した後にコミット処理を実行する実行ロジックをさらに備え、
前記キャッシュ制御ロジックが、前記バッファ済み更新をコミットするために前記キャッシュエントリを修正済み状態に遷移させる前に、前記キャッシュエントリをバッファ済みコヒーレンシ状態および書込監視状態に遷移させることは、前記実行ロジックが前記コミット処理を実行することに応じて行なう請求項1に記載の装置。 - キャッシュメモリのブロックに対するバッファ済み更新を発見する段階と、
前記キャッシュメモリの前記ブロックに対する前記バッファ済み更新を発見すると、前記ブロックに対して読出監視を適用する段階と、
前記読出監視を適用する段階の後に、前記ブロックをコミットする前に、前記ブロックに書込監視を適用する段階と
を備える方法。 - 前記キャッシュメモリの前記ブロックに対する前記バッファ済み更新は、前記キャッシュメモリの前記ブロックに対するトランザクション的書込を含む請求項7に記載の方法。
- 前記読出監視を適用する段階と同時に前記キャッシュメモリの前記ブロックに対して前記バッファ済み更新を実行する段階をさらに備え、
前記ブロックは、前記バッファ済み更新を実行した後は、バッファ済みコヒーレンシ状態で保持される請求項7に記載の方法。 - 前記読出監視を適用する段階の後に前記キャッシュメモリの前記ブロックに対して前記バッファ済み更新を実行する段階をさらに備え、
前記ブロックは、前記バッファ済み更新を実行した後は、バッファ済みコヒーレンシ状態で保持される請求項7に記載の方法。 - 前記キャッシュメモリの前記ブロックに対する前記バッファ済み更新を発見すると、前記ブロックに対して読出監視を適用する段階は、
前記キャッシュメモリのキャッシュドメインの外部の複数の処理要素に対して、前記ブロックに対する読出要求を生成する段階と、
前記ブロックについての前記読出要求に応じて前記キャッシュドメインの外部の前記複数の処理要素からコンフリクトがないと検出することに応じて、前記キャッシュメモリの前記ブロックに対応付けられている読出監視属性を読出監視値に更新して前記ブロックに読出監視を適用する段階と
を有する請求項7に記載の方法。 - 前記読出監視を適用する段階の後に、前記ブロックをコミットする前に、前記ブロックに書込監視を適用する段階は、
前記キャッシュメモリの前記キャッシュドメインの外部の前記複数の処理要素に対して、前記ブロックについての所有権読出要求を生成する段階と、
前記キャッシュメモリの前記ブロックに対応付けられている書込監視属性を書込監視値に更新して、前記ブロックに書込監視を適用する段階と
を有する請求項11に記載の方法。 - 前記ブロックをコミットすることは、前記ブロックのキャッシュコヒーレンシ状態を、バッファ済みコヒーレンシ状態から修正済みコヒーレンシ状態へと遷移させることを含む請求項12に記載の方法。
- プログラムコードを保持する機械アクセス可能媒体であって、
前記プログラムコードを機械が実行すると、前記機械は、
キャッシュメモリのブロックへのバッファ済み書込があると、前記ブロックに読出監視を適用し、
前記ブロックに対して前記バッファ済み書込を実行し、
前記読出監視を適用した後、且つ、前記ブロックをコミットする前に、前記ブロックに書込監視を適用する機械アクセス可能媒体。 - 前記キャッシュメモリの前記ブロックへの前記バッファ済み書込があると、前記ブロックに読出監視を適用することは、
前記キャッシュメモリのキャッシュドメインの外部の複数の処理要素に対して前記ブロックについての読出要求を生成することと、
前記ブロックについての前記読出要求に応じて前記キャッシュドメインの外部の前記複数の処理要素からコンフリクトがないことを検出することに応じて、前記キャッシュメモリの前記ブロックに対応付けられている読出監視属性を読出監視値に更新して前記ブロックに対して読出監視を適用することと
を含む
請求項14に記載の機械アクセス可能媒体。 - 前記読出監視を適用した後、且つ、前記ブロックをコミットする前に、前記ブロックに書込監視を適用することは、
前記キャッシュメモリの前記キャッシュドメインの外部の前記複数の処理要素に対して前記ブロックについての所有権読出要求を生成することと、
前記キャッシュメモリの前記ブロックに対応付けられている書込監視属性を書込監視値に更新して前記ブロックに書込監視を適用することと
を含む請求項15に記載の機械アクセス可能媒体。 - コミット処理を発見することに応じて、前記読出監視を適用した後、且つ、前記ブロックをコミットする前に、前記ブロックに書込監視を適用する請求項14に記載の機械アクセス可能媒体。
- 前記ブロックをコミットすることは、前記ブロックのキャッシュコヒーレンシ状態を修正済みコヒーレンシ状態に遷移させることを含む請求項14に記載の機械アクセス可能媒体。
- メモリアドレスを参照するトランザクション的書込、および、コミット処理を保持するシステムメモリと、
キャッシュメモリを有し、前記システムメモリに対応付けられているプロセッサと
を備え、
前記プロセッサが有する前記キャッシュメモリは、
前記トランザクション的書込を受信することに応じて前記メモリアドレスに対応付けられているキャッシュラインについての読出要求を生成し、
前記読出要求に基づきコンフリクトが検出されないことに応じて、バッファされており読出監視されている状態に前記キャッシュラインを遷移させ、
前記コミット処理を受信することに応じて所有権読出要求を生成し、バッファされており書込監視されている状態に前記キャッシュラインを遷移させ、
前記バッファされており書込監視されている状態に前記キャッシュラインを遷移させることに応じて、修正済み状態に前記キャッシュラインを遷移させる、システム。 - 前記キャッシュメモリが、バッファされており読出監視されている状態に前記キャッシュラインを遷移させることは、前記キャッシュメモリが、前記キャッシュラインに対応付けられているコヒーレンシビットをバッファ済み値に更新して、前記バッファされており読出監視されている状態のうちバッファされている状態の部分を表し、前記キャッシュラインに対応付けられている読出監視属性ビットを読出監視値に更新して、前記バッファされており読出監視されている状態のうち読出監視されている状態の部分を表すことを含む請求項19に記載のシステム。
- 前記キャッシュメモリが、バッファされており書込監視されている状態に前記キャッシュラインを遷移させることは、前記キャッシュメモリが、前記キャッシュラインに対応付けられている前記コヒーレンシビットの前記バッファ済み値を維持して、前記バッファされており書込監視されている状態のうちバッファされている状態の部分を表し、前記キャッシュラインに対応付けられている書込監視属性ビットを書込監視値に更新して、前記バッファされており書込監視されている状態のうち書込監視されている状態部分を表すことを含む請求項20に記載のシステム。
- 前記キャッシュメモリが、前記キャッシュラインを前記バッファされており書込監視されている状態に遷移させることに応じて、前記キャッシュラインを修正済み状態に遷移させることは、前記コヒーレンシビットを更新して前記修正済み状態を表すことを含む請求項21に記載のシステム。
- 前記メモリは、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、および、不揮発性メモリから成る群から選択される請求項19に記載のシステム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014177475A JP6023765B2 (ja) | 2014-09-01 | 2014-09-01 | 無制限トランザクショナルメモリ(utm)システムの最適化 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014177475A JP6023765B2 (ja) | 2014-09-01 | 2014-09-01 | 無制限トランザクショナルメモリ(utm)システムの最適化 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012516043A Division JP5608738B2 (ja) | 2009-06-26 | 2009-06-26 | 無制限トランザクショナルメモリ(utm)システムの最適化 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016199567A Division JP6318440B2 (ja) | 2016-10-07 | 2016-10-07 | 無制限トランザクショナルメモリ(utm)システムの最適化 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2015008008A JP2015008008A (ja) | 2015-01-15 |
JP6023765B2 true JP6023765B2 (ja) | 2016-11-09 |
Family
ID=52338182
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014177475A Active JP6023765B2 (ja) | 2014-09-01 | 2014-09-01 | 無制限トランザクショナルメモリ(utm)システムの最適化 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6023765B2 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017004570A (ja) * | 2016-10-07 | 2017-01-05 | インテル・コーポレーション | 無制限トランザクショナルメモリ(utm)システムの最適化 |
KR102142093B1 (ko) * | 2016-04-29 | 2020-08-06 | 두산중공업 주식회사 | 틸팅 패드 스러스트 베어링 및 틸팅 패드 스러스트 베어링 조립체 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2571350B (en) * | 2018-02-27 | 2020-10-21 | Advanced Risc Mach Ltd | A method of accessing metadata when debugging a program to be executed on processing circuitry |
CN110007966A (zh) * | 2019-04-10 | 2019-07-12 | 龚伟峰 | 一种降低内存读取乱序的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7856537B2 (en) * | 2004-09-30 | 2010-12-21 | Intel Corporation | Hybrid hardware and software implementation of transactional memory access |
-
2014
- 2014-09-01 JP JP2014177475A patent/JP6023765B2/ja active Active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102142093B1 (ko) * | 2016-04-29 | 2020-08-06 | 두산중공업 주식회사 | 틸팅 패드 스러스트 베어링 및 틸팅 패드 스러스트 베어링 조립체 |
JP2017004570A (ja) * | 2016-10-07 | 2017-01-05 | インテル・コーポレーション | 無制限トランザクショナルメモリ(utm)システムの最適化 |
Also Published As
Publication number | Publication date |
---|---|
JP2015008008A (ja) | 2015-01-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5608738B2 (ja) | 無制限トランザクショナルメモリ(utm)システムの最適化 | |
JP5944417B2 (ja) | トランザクショナル・メモリ・イベントの処理のためのハードウェアにおけるユーザハンドラの登録 | |
JP6342970B2 (ja) | トランザクショナルメモリ(tm)システムにおける読み出し及び書き込み監視属性 | |
JP5860450B2 (ja) | ローカルにバッファリングされたデータをサポートするためのキャッシュコヒーレンスプロトコルの拡張 | |
JP5416223B2 (ja) | トランザクショナルメモリシステム内でのハードウェア属性のメモリモデル | |
US8612950B2 (en) | Dynamic optimization for removal of strong atomicity barriers | |
US9280397B2 (en) | Using buffered stores or monitoring to filter redundant transactional accesses and mechanisms for mapping data to buffered metadata | |
RU2501071C2 (ru) | Механизм запроса поздней блокировки для пропуска аппаратной блокировки (hle) | |
US8719514B2 (en) | Software filtering in a transactional memory system | |
US20100122073A1 (en) | Handling exceptions in software transactional memory systems | |
JP6023765B2 (ja) | 無制限トランザクショナルメモリ(utm)システムの最適化 | |
JP6318440B2 (ja) | 無制限トランザクショナルメモリ(utm)システムの最適化 | |
GB2519877A (en) | Optimizations for an unbounded transactional memory (UTM) system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20150825 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20150915 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20151215 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20160114 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20160215 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20160315 |
|
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: 20160809 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20160907 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20161007 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6023765 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |