La instrucción cmpxchg16b para realizar intercambios de memoria atómica de 128 bits no es compatible con las versiones antiguas del procesador x64, pero parece que esto ha sido compatible con las versiones más nuevas del procesador desde hace varios años. ¿Qué posibilidades hay de que encuentre una máquina de 64 bits con un procesador antiguo que carece de estas instrucciones?
8
Respuestas:
Está viendo los primeros procesadores AMD de 64 bits, antes de Rev F (que es cuando se trasladaron a la memoria DDR2). Creo que hay algunos pasos iniciales de Intel Noconas que no lo soportaron, creo, pero estos son más raros.
fuente
No tengo datos sobre la prevalencia de ciertos tipos de CPU, por lo que no puedo responder directamente a su pregunta. Sin embargo, puede averiguar si la CPU es compatible
CMPXCHG16B
comprobando siCPUID.01h.ECX.bit13
está1
(disponible) o0
(no disponible).También tenga en cuenta que los manuales de Intel sugieren que para que esta instrucción se realice atómicamente, debe combinarla con el
LOCK
prefijo.fuente
El soporte en la CPU puede no ser suficiente, ya que algunos usuarios de Core 2 se enteraron del lanzamiento de Windows 8.1 , particularmente aquellos que tienen una placa base Intel DP35DP.
Todavía no estoy seguro de qué en la placa base podría evitar que CMPXCHG16B funcione. Probablemente, los BIOS pueden deshabilitar los bits de detección de funciones.Para resumir lo que dice el blog de Yuhong Bao sobre esto, hubo una errata de procesador en los primeros chips Core 2 (pasos E0 / R0 del Core 2 de 45 nm) que causó que sus características se informaran erróneamente a través de CPUID. Fue posible solucionar esto a través de la actualización del BIOS / microcódigo, por lo que puedo decir.fuente