2

hereおよびhereを含む関連する質問を見てきましたが、シリアル化についてこれまでに言及された唯一の命令rdtsccpuid.

残念ながら、cpuid私のシステムでは約1000サイクルかかるので、より安価な(サイクルが少なく、メモリへの読み取りまたは書き込みがない)シリアル化命令を誰かが知っているかどうか疑問に思っていますか?

を見ましたiretが、それは制御フローを変更するようで、これも望ましくありません。

についてのアレックスの回答にリンクされているホワイトペーパーを実際に見ましたが、次のrstscpように書かれています。

RDTSCP 命令は、カウンターを読み取る前に、前のすべての命令が実行されるまで待機します。ただし、後続の命令は、読み取り操作が実行される前に実行を開始する場合があります。

その2番目のポイントは、理想的ではないことです。

4

3 に答える 3

7

案内を見ましたrdtscpか?これは、 のシリアル化された読み取りバージョンですrdtsc

ベンチマークについては、このホワイトペーパーを読むことをお勧めします。これは、クロック ティックを測定するためのいくつかのベスト プラクティスを提供します。

アレックス(インテル)

于 2014-04-25T11:24:56.567 に答える
1

答えは明らかにそうではありません。Intel マニュアル、ボリューム 3aには、3 つの非特権シリアル化命令 ( cpuidiret、およびrsm) のみがリストされており、後者の 2 つは制御フローの副作用があるようです。

于 2014-04-24T22:46:02.123 に答える
0

うーん、これは参考になると思います: lfence .Ref this 《64-ia-32-architectures-software-developer-manual》 Vol.2B 4-301

于 2014-09-06T01:58:59.813 に答える