CPUの命令は順序の問題のうち、実行します

オーダーのうち1問題

あろう命令の実行中にCPU命令実行の効率を向上させるために、同時に、但し、別の命令を実行する(例えば、メモリへのリードデータ(100倍遅い)など)という2つの命令の依存関係

https://www.cnblogs.com/liushaodong/p/4777308.html

書き込み操作を組み合わせることもできます

https://www.cnblogs.com/liushaodong/p/4777308.html

特定のケースが故障していないことを確認する方法2

X86ハードウェアのメモリバリア

SFENCE:ストア| SFENCE命令がSFENCE命令の前に書き込む前に、書き込み動作が完了しなければならないとき。LFENCE:ロード|運転時にLFENCE前に指示を読んでLFENCE命令の後に、読み取り動作の前に完了しなければなりません。MFENCE:ミックス/修正|読み込みおよび書き込み操作がMFENCE命令の前に、読み取りおよび書き込み操作のMFENCE命令の前に完了しなければならないとき。

以下のようなアトミック命令、「ロック...」完全バリアであっても、複数のCPU間で、注文の履行を確保するために、メモリ・サブシステムを実行するときに、x86命令に、ロックします。ソフトウェアのロックは、通常の原子またはメモリバリア命令は、可視性と可変配列を維持するための手順を実装します

どのようにJVMレベルの仕様(JSR133)

LoadLoadバリア:な文の場合LOAD1; LoadLoad、LOAD2、

LOAD2以降のデータを読み出すべき読み取り操作がアクセスされる前に、LOAD1を読み取ることが保証されたデータは、読み取りが完了しています。

StoreStoreバリア:

そのような文の場合Store1; StoreStore; Store2、

書き込み動作が行われ、その後のStore2は、他のプロセッサに対して可視Store1書き込み動作を確実にする前に。

LoadStoreバリア:

こうした記述についてはLOAD1; LoadStore; Store2、

前とその後の書き込み動作は、データが読み出しがLOAD1が完了読まれることをことを保証するために、Store2ブラシです。

StoreLoadバリア:な文の場合Store1; StoreLoad、LOAD2、

LOAD2と後続のすべての読み出し動作前Store1は、すべてのプロセッサに対して可視の書き込みを保証するために行わ。

揮発性の実装の詳細

  1. バイトコードレベルACC_VOLATILE

  2. JVMレベルの揮発性リード - ライトメモリ領域バリアを追加されます

    StoreStoreBarrier

    揮発書き込み操作

    大きな負荷バリア

    LoadLoadBarrier

    揮発性の読み取り

    LoadStoreBarrier

  3. OSとハードウェアレベル  https://blog.csdn.net/qq_26222859/article/details/52235930  達成するために、ホットスポットディスアセンブラのWindows Lockコマンド- hsdis

同期実装の詳細

  1. レベルバイトコードACC_SYNCHRONIZED monitorenter monitorexit
  2. JVMレベルC C ++はオペレーティングシステムによって提供される同期機構を呼び出し
  3. OSとハードウェアレベルX86:ロックCMPXCHG / XXX  https://blog.csdn.net/21aspnet/article/details/88571740
公開された48元の記事 ウォンの賞賛1 ビュー2807

おすすめ

転載: blog.csdn.net/Forest24/article/details/103215520