Quão prevalentes são os antigos processadores x64 que não possuem a instrução cmpxchg16b?

8

A instrução cmpxchg16b para fazer trocas de memória atômica de 128 bits não é suportada em versões antigas do processador x64, mas parece que isso tem sido suportado por versões mais recentes do processador há vários anos. Qual é a probabilidade de encontrar uma máquina de 64 bits com um processador antigo sem essa instrução?

    
por Christopher Barber 09.09.2010 / 21:45

3 respostas

5

Você está analisando os primeiros processadores AMD de 64 bits, antes do Rev F (que é quando eles mudaram para a memória DDR2). Há alguns passos iniciais da Intel Noconas também que não suportam isso, eu acho, mas estes são mais raros.

    
por 19.11.2010 / 04:37
3

Não tenho dados sobre a prevalência de determinados tipos de CPUs, por isso não posso responder diretamente à sua pergunta. No entanto, você pode descobrir se a CPU suporta CMPXCHG16B verificando se CPUID.01h.ECX.bit13 é 1 (disponível) ou 0 (não disponível).

Observe também que os manuais da Intel sugerem que, para que esta instrução seja executada atomicamente, você precisa combiná-la com o prefixo LOCK .

    
por 09.09.2010 / 22:04
3

O suporte na CPU pode não ser suficiente, já que alguns Usuários do Core 2 descobriram sobre o lançamento do Windows 8.1 , especialmente aqueles que têm uma placa-mãe Intel DP35DP. Ainda não tenho certeza do que na placa-mãe poderia impedir o funcionamento do CMPXCHG16B. Provavelmente, os bits de detecção de recursos podem ser desabilitados pelo BIOS. Para resumir o que o blog de Yuhong Bao diz sobre isso, houve uma errata de processador nos primeiros chips Core 2 (passos E0 / R0 do Core 2 de 45nm) que causaram seus recursos ser reportado incorretamente via CPUID. Foi possível contornar isso através da atualização do BIOS / microcódigo, até onde eu sei.

    
por 02.02.2015 / 22:48

Tags