Instruksi cmpxchg16b untuk melakukan pertukaran memori atom 128 bit tidak didukung pada versi lama dari prosesor x64 tetapi sepertinya ini telah didukung oleh versi prosesor yang lebih baru selama beberapa tahun sekarang. Seberapa besar kemungkinan saya menemukan mesin 64-bit dengan prosesor lama yang tidak memiliki instruksi ini?
8
Jawaban:
Anda melihat prosesor AMD 64-bit awal, sebelum Rev F (yang ketika mereka pindah ke memori DDR2). Ada beberapa langkah awal D Intel Noconas juga yang tidak mendukungnya, saya pikir, tetapi ini lebih jarang.
sumber
Saya tidak punya data mengenai prevalensi jenis CPU tertentu, jadi saya tidak bisa langsung menjawab pertanyaan Anda. Namun, Anda dapat mengetahui apakah dukungan CPU
CMPXCHG16B
dengan memeriksa apakahCPUID.01h.ECX.bit13
ini1
(tersedia) atau0
(tidak tersedia).Perhatikan juga bahwa manual Intel menyarankan agar instruksi ini dilakukan secara atomis, Anda harus menggabungkannya dengan
LOCK
awalan.sumber
Dukungan dalam CPU mungkin sebenarnya tidak cukup karena beberapa pengguna Core 2 menemukan pada peluncuran Windows 8.1 , terutama mereka yang memiliki motherboard Intel DP35DP.
Saya belum yakin apa yang ada di motherboard dapat mencegah CMPXCHG16B bekerja. Mungkin bit deteksi fitur dapat dinonaktifkan oleh BIOS.Untuk meringkas apa yang dikatakan blog Yuhong Bao tentang ini, ada kesalahan prosesor pada chip Core 2 awal (E0 / R0 stepping dari 45nm Core 2) yang menyebabkan fitur-fitur mereka salah dilaporkan melalui CPUID. Itu mungkin untuk mengatasi ini melalui pembaruan BIOS / mikrokode, sejauh yang saya tahu.sumber