Seberapa lazimkah prosesor x64 lama yang tidak memiliki instruksi cmpxchg16b?

8

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?

Christopher Barber
sumber
12
Pelanggan terpenting Anda tentu memiliki salah satu dari mereka di salah satu server produksi kritis mereka yang hanya digunakan untuk tugas-tugas penting yang dijalankan pada Malam Natal, tetapi di tempat lain, dan sama sekali tidak di lingkungan pengujian ...
7
Saya tidak berpikir pertanyaan ini seharusnya dimigrasikan ke superuser. Itu hanya memastikan bahwa lebih sedikit orang yang tahu jawabannya akan pernah melihat pertanyaan ini.
Christopher Barber

Jawaban:

6

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.

Yuhong Bao
sumber
4

Saya tidak punya data mengenai prevalensi jenis CPU tertentu, jadi saya tidak bisa langsung menjawab pertanyaan Anda. Namun, Anda dapat mengetahui apakah dukungan CPU CMPXCHG16Bdengan memeriksa apakah CPUID.01h.ECX.bit13ini 1(tersedia) atau 0(tidak tersedia).

Perhatikan juga bahwa manual Intel menyarankan agar instruksi ini dilakukan secara atomis, Anda harus menggabungkannya dengan LOCKawalan.


sumber
Ya, saya tahu cara memeriksa hasil cpuid. Masalahnya adalah apa yang harus dilakukan jika tidak didukung. Saya lebih suka tidak membuang waktu mengerjakan instruksi yang hilang jika saya tidak akan pernah melihat kasus itu dalam praktik.
Christopher Barber
@Christopher Barber - CPUID telah didukung sejak 486 prosesor, yang juga menyiratkan bahwa setiap prosesor x86 64-bit yang mampu akan mendukung CPUID.
2
@PhiS: Saya cukup yakin Christopher berbicara tentang kurangnya dukungan untuk cmpxchg16b. Apa yang harus dilakukan jika itu tidak ada
Bahbar
3

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.

Mendesis
sumber