As instruções bloqueadas fornecem uma barreira entre acessos com ordens fracas?
No x86,lock
pré-fixadas, comolock cmpxchg
fornecem semântica de barreira além de sua operação atômica: para acesso normal à memória em regiões de memória de write-back, as leituras e gravações não são reordenadaslock
pré-fixadas, de acordo com a seção 8.2.2 do volume 3 do Intel SDM:
As leituras ou gravações não podem ser reordenadas com instruções de E / S, instruções bloqueadas ou serializadas.
Esta seção se aplica apenas aos tipos de memória de write-back. Na mesma lista, você encontra uma exceção em que observa que lojas com pedidos fracos não são solicitadas:
As leituras não são reordenadas com outras leituras.As gravações não são reordenadas com leituras mais antigas.As gravações na memória não são reordenadas com outras gravações, com as seguintes exceções: -armazenamentos de streaming (gravações) executados com as instruções de movimentação não temporal (MOVNTI, MOVNTQ, MOVNTDQ, MOVNTPS e MOVNTPD); e -
operações de string (consulte a Seção 8.2.4.1).
Observe que não há nenhuma exceção feita para instruções não temporais em outros itens da lista, por exemplo, no item referente às instruções com prefixo de bloqueio.
Em várias outras seções do guia, é mencionado que omfence
e / ousfence
As instruções podem ser usadas para solicitar memória quando são usadas instruções com ordem fraca (não temporal). Essas seções geralmente não mencionamlock
pré-prefixada como alternativa.
Tudo o que me deixa incerto: façalock
pré-fixadas fornecem a mesma barreira completa quemfence
fornece instruções fracamente ordenadas (não temporais) na memória WB? A mesma pergunta se aplica novamente, mas a qualquer tipo de acesso na memória do WC.