問題タブ [intel-tsx]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
5 に答える
2288 参照

x86 - CLR や JVM などのランタイムは、Haswell TSX 命令を使用できますか?

'Haswell TSX' (トランザクション メモリ バリア) に関する Anandtech を読んだ後、CLR/JVM がこれらを C#/Java/Scala/F# で高度な並列アプリケーション (C# Rx/TPL/TFD) で利用できるかどうかすぐに疑問に思いました。

0 投票する
1 に答える
722 参照

assembly - Intel TSX 命令のエミュレート

チップが利用可能になる前に、新しい Intel TSX 命令を試してみたいと思います。インテルはエミュレーターを利用できるようにしていますか、それとも広く使用されている他の手法はありますか?

0 投票する
0 に答える
718 参照

x86 - ハードウェア ロックの省略を無効にする

ハードウェア トランザクション メモリ [TSX] の利益を小さなアプリケーションで可視化しようとしています。コンパイラは自動的にミューテックスに Hardware Lock Elision [HLE] を使用しますが、これはその時点で私が望んでいるものではありません。icc を使用して、Haswell プロセッサで自動ハードウェア ロックの省略を無効にする方法はありますか?

Google と Intel のドキュメントは、これまでのところ役に立ちませんでした。

0 投票する
1 に答える
547 参照

c++ - Intel TSX ハードウェア トランザクション メモリ 非トランザクション スレッドは何を認識しますか?

2 つのスレッドがあり、1 つが TSX トランザクションを作成し、データ構造を変更するとします。もう一方のスレッドは、いかなる種類の同期も行わず、同じデータ構造を読み取ります。トランザクションはアトミックですか?トランザクションによって変更されたキャッシュラインを読み取ろうとすると、ブロックまたは再起動する方法がないため、実際にはそれが真実であるとは想像できません。

トランザクションがアトミックでない場合でも、x86 の書き込み順序規則は尊重されますか? 書き込み #2 を認識した場合、前の書き込み #1 を認識できなければならないことが保証されます。これは、トランザクションの一部として発生する書き込みにも当てはまりますか?

これらの質問に対する答えはどこにも見つかりませんでした.SOの誰もが知っているとは思えませんが、少なくとも誰かがこれが答えを出すのにGoogleフレンドリーな場所であることを知ったとき.

0 投票する
1 に答える
237 参照

compiler-construction - 現在、Haswell トランザクショナル メモリをサポートしているコンパイラはどれですか?

どのコンパイラ (2014 年 5 月現在) がトランザクショナル メモリ機能を使用するコードを生成できますか?

0 投票する
2 に答える
137 参照

x86 - Haswell トランザクション メモリの読み取りセットと書き込みセットの情報

最近、Intel はトランザクション同期拡張機能 (TSX) と呼ばれるハードウェア トランザクション メモリをサポートする haswell マシンをリリースしました。

Intel のマニュアルによると、投機的なメモリ操作である書き込みセットと読み取りセットは、L1 キャッシュと L2 キャッシュにそれぞれバッファリングされます。(ではない正確に)

次に、トランザクショナル メモリ操作を追跡して、アドレスや読み取り/書き込みセットの値などの情報を取得できますか?

0 投票する
1 に答える
853 参照

c++ - haswell tsx を使用した不思議な rtm の中止

私は haswell の tsx 拡張機能を試しています。既存の中規模 (数千行) のコードベースを、粗粒度のロックの代わりに GCC トランザクション メモリ拡張機能 (このマシンでは間接的に haswell tsx を使用しています) を使用するように適応させています。私は GCC の transactional_memory 拡張機能を使用しており、独自の _xbegin / _xend を直接記述していません。ITM_DEFAULT_METHOD=htm を使用しています

不可解な理由でハードウェア トランザクションが異常終了する率が高いため、十分な速度で動作させるのに問題があります。以下に示すように、これらの中止は競合や容量制限によるものではありません。

以下は、失敗率と根本的な原因を定量化するために使用した perf コマンドです。

したがって、プログラムはトランザクションを含むコードを 3000 万回実行します。各リクエストには、1 つのトランザクション gcc__transaction_atomicブロックが含まれます。この実行には 1 つのスレッドしかありません。

この特定のコマンドは、 Intel ソフトウェア開発者マニュアル vol 3perfに記載されている関連する tsx パフォーマンス イベントのほとんどをキャプチャします。

からの出力perf statは次のとおりです。

出力からわかるように:

  • rtm_retired_startカウントは 3000 万 (プログラムへの入力と一致)
  • カウントはほぼ同じです(rtm_retired_abortコミットはまったくありません)
  • abort_conflictとのabort_capacityカウントは 0 であるため、これらは理由ではありません。また、実行中のスレッドは 1 つだけであることを思い出してください。競合はめったに発生しないはずです。
  • ここでの唯一の実際のリードは と の高い値でtx_exec_misc1ありrtm_retired_aborted_misc3、説明が多少似ています。

Intel のマニュアル (第 3 巻) では、rtm_retired_aborted_misc3カウンターを次のように定義しています。

コード:C9H 20H

ニーモニック: RTM_RETIRED.ABORTED_MISC3

説明: HLE に適していない命令が原因で RTM 実行が中止された回数。

の定義にtx_exec_misc1は、似たような言葉がいくつかあります。

コード: 5DH 01H

ニーモニック: TX_EXEC.MISC1

説明: トランザクションのアボートを引き起こす可能性のあるクラスの命令が実行された回数をカウントします。これは実行回数であるため、必ずしもトランザクションのアボートが発生するとは限りません。

の高精度 (PEBS) サポートを使用したパフォーマンス レコード/パフォーマンス レポートを使用して、アボートのアセンブリの場所を確認しましたrtm_retired_aborted。場所には、movレジスタからレジスタへの命令があります。変な命令名は近くにありません。

アップデート:

それ以来、私が試した2つのことは次のとおりです。

1) ここで見られる tx_exec_misc1 および rtm_retired_aborted_misc3 署名は、たとえば、次の形式のダミー ブロックによって取得できます。

またはいずれかの形式

どちらの場合も、パフォーマンス カウンターは私が見たものと似ています。ただし、どちらの場合も、perf reportfor-e cpu/tx-abort/ は直観的に正しいアセンブリ ラインを指しています。xabort最初の例の命令とsyscall2 番目の例の命令です。実際のコードベースでは、perf レポートは、関数の開始時にスタック プッシュが行われたことを示しています。

Intel ソフトウェア開発エミュレーターでも同じコマンドを実行しました。その場合、問題はなくなることがわかりました。アプリケーションに関する限り、アボートは発生しません。

0 投票する
1 に答える
167 参照

delphi - Intel TSX と Delphi

Intel TSXDelphi で同期拡張機能を使用したいと考えています。しかし、AFAIK Delphi は過去の拡張アセンブリをサポートしていないSSE 4.2ので、別の方法で実行できますか? また、そのような機能を検出するにはどうすればよいでしょうか。

この機能は、2012 年以降、Haswell プロセッサでサポートされています。

0 投票する
1 に答える
145 参照

cloud - インテル TSX を試す

Intel のトランザクショナル メモリ機能を試してみたいと思っていますが、そのために新しいサーバーを購入する必要はありません。TSX をサポートする CPU を備えたクラウド サービスはありますか?