Làm thế nào phổ biến là bộ xử lý x64 cũ thiếu hướng dẫn cmpxchg16b?


8

Hướng dẫn cmpxchg16b để thực hiện trao đổi bộ nhớ 128 bit nguyên tử không được hỗ trợ trên các phiên bản cũ của bộ xử lý x64 nhưng có vẻ như điều này đã được hỗ trợ bởi các phiên bản mới hơn của bộ xử lý trong vài năm nay. Tôi có khả năng gặp phải máy 64 bit có bộ xử lý cũ thiếu hướng dẫn này như thế nào?


12
Khách hàng quan trọng nhất của bạn chắc chắn có một trong những máy chủ sản xuất quan trọng của họ chỉ được sử dụng cho các nhiệm vụ quan trọng chạy vào đêm Giáng sinh, nhưng không ở đâu khác, và hoàn toàn không có trong môi trường thử nghiệm ...

7
Tôi không nghĩ câu hỏi này nên được chuyển sang superuser. Nó chỉ đảm bảo rằng ít người biết câu trả lời sẽ nhìn thấy câu hỏi này.
Christopher Barber

Câu trả lời:


6

Bạn đang xem các bộ xử lý AMD 64 bit đầu tiên, trước Rev F (đó là khi chúng chuyển sang bộ nhớ DDR2). Có một số bước đầu D Intel Noconas cũng không hỗ trợ nó, tôi nghĩ, nhưng những thứ này hiếm hơn.


4

Tôi không có dữ liệu về mức độ phổ biến của một số loại CPU nhất định, vì vậy tôi không thể trả lời trực tiếp câu hỏi của bạn. Tuy nhiên, bạn có thể tìm hiểu xem CPU có hỗ trợ hay không CMPXCHG16Bbằng cách kiểm tra xem CPUID.01h.ECX.bit131(có sẵn) hay 0(không khả dụng).

Cũng lưu ý rằng các hướng dẫn của Intel đề nghị rằng để hướng dẫn này được thực hiện nguyên tử, bạn cần kết hợp nó với LOCKtiền tố.


Có, tôi biết cách kiểm tra kết quả cpuid. Vấn đề là phải làm gì nếu nó không được hỗ trợ. Tôi thà không lãng phí thời gian để làm việc xung quanh một hướng dẫn còn thiếu nếu tôi sẽ không bao giờ thấy trường hợp đó trong thực tế.
Christopher Barber

@Christopher Thợ cắt tóc - CPUID đã được hỗ trợ kể từ bộ xử lý 486 muộn, điều này cũng ngụ ý rằng mọi bộ xử lý x86 có khả năng 64 bit sẽ hỗ trợ CPUID.

2
@PhiS: Tôi khá chắc chắn Christopher đã nói về việc thiếu hỗ trợ cho cmpxchg16b. Phải làm gì nếu điều đó bị thiếu
Bahbar

3

Hỗ trợ trong CPU có thể không thực sự đủ vì một số người dùng Core 2 đã phát hiện ra sự ra mắt của Windows 8.1 , đặc biệt là những người có bo mạch chủ Intel DP35DP. Tôi vẫn chưa chắc những gì trong bo mạch chủ có thể ngăn CMPXCHG16B hoạt động. Có lẽ các bit phát hiện tính năng có thể bị vô hiệu hóa bởi BIOS. Để tóm tắt những gì blog của Yuhong Bao nói về điều này, đã có một lỗi bộ xử lý trong các chip Core 2 đầu tiên (các bước E0 / R0 của Core 2 45nm) khiến các tính năng của chúng bị đánh giá sai qua CPUID. Có thể giải quyết vấn đề này thông qua cập nhật BIOS / microcode, theo như tôi có thể nói.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.