2015-09-18 7 views
5

cpuid, kıyaslama yaparken ooo yürütmeyi önlemek için serileştirme talimatı olarak kullanılır; çünkü, tek başına kullanıldığında, karşılaştırmalı talimatların uygulanması, rdtsc'dan önce yeniden sıralanabilir. Sorum şu rdtsccpuid ve rdtsc arasında yeniden düzenlenmiş aşağıdaki yönergeler için hala mümkün olup olmadığıdır? rdtsc serileştirme talimatı olmadığından, talimatlar etrafından serbestçe yeniden düzenlenebilir mi?cpuid + rdtsc ve sipariş dışı yürütme

cevap

1

RDTSC, herhangi bir girdiye bağlı olmadığı için (hiçbir argüman gerektirmez) prensipte, OOO boru hattı bunu mümkün olan en kısa sürede çalıştıracaktır. Önceden bir serileştirme talimatı eklemenizin nedeni, RDTSC'nin daha önce çalıştırılmasına izin vermemek.

John McCalpin here'dan bir yanıt var, yararlı bulabilirsin. Bunun yerine kullanmayı tercih edebileceğiniz RDTSCP komutunun (RDTSC'den farklı davranan) OOO yeniden düzenlenmesini açıklar.