As instruções bloqueadas fornecem uma barreira entre acessos com ordens fracas?

No x86,lockpré-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 reordenadaslockpré-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 mencionamlockpré-prefixada como alternativa.

Tudo o que me deixa incerto: façalockpré-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.

questionAnswers(1)

yourAnswerToTheQuestion