2015-10-23 15 views

答えて

4

はい、それが許されています。あなたはまたそれを試してみることもできました。または、命令セットリファレンスを参照してください。

LOCKプレフィックスの完全性は、メモリフィールド の配置の影響を受けません。メモリロックは、任意に のフィールドがずれていることが確認されています。

しかし参照:

例外

#AC(0)アライメント・チェックがイネーブルにされ、現在の特権レベルが3

あるがアラインされていないメモリ参照が行われた場合に

通常、アライメントチェックは有効ではありません。

4

ロックはキャッシュ内で維持できない可能性があり、完全なバスロック(完全なシステムストール)にダウングレードする可能性があるため、パフォーマンスは大幅に低下する可能性があります。

たとえば - https://software.intel.com/en-us/articles/implementing-scalable-atomic-locks-for-multi-core-intel-em64t-and-ia32-architectures:インテル486プロセッサ、パフォーマンスに大きなヒットと一緒にバスに ロックを主張するために使用されるロックの接頭辞の日で

。 Intel Pentium Proアーキテクチャの から、バスロックは キャッシュロックに変換されます。ロックがキャッシュ不可能なメモリに存在する場合、またはロックがキャッシュライン境界分割キャッシュラインを越えて拡張されている場合は、最新のアーキテクチャではほとんどの アーキテクチャのバス上にロックがアサートされます。 これらのシナリオはどちらもありそうにないので、ほとんどのロックプレフィックスは、より安価なキャッシュロックに変換される になります。

プロセッサの仕様によって異なる場合がありますが、クロスライン境界はページ境界を越えることも意味します。これは、維持するのがさらに難しい(したがってダウングレードする可能性がさらに高くなります)。

関連する問題