Como uma operação atômica garante a consistência de uma perspectiva de hardware?

5
  1. Até onde eu sei, uma instrução atômica garante que, quando executada, nenhum outro encadeamento possa modificar esses dados (assim como uma seção crítica). Estou correto?
  2. Como isso é implementado em hardware?
  3. Como o hardware garante isso? (O hardware gera três microinstruções internamente: desbloqueia, modifica e bloqueia?)
  4. Qual é a diferença entre usar apenas um mutex versus uma instrução atômica? A única diferença é o número de instruções (1 instrução para atômica, múltiplas instruções para um mutex normal)?
  5. A diferença de número de instruções (1 vs. muitos) garante correção (como usar um mutex) e consistência?
por Mike Wang 14.03.2012 / 21:00

2 respostas

4

Os detalhes são complexos; em um único processador, é simples o suficiente para implementar algum equivalente de "bloquear, modificar, desbloquear" no nível do microcódigo - ou outras técnicas.

Depois de ter vários processadores, o assunto fica complexo, especialmente em vista dos efeitos de cache. Protocolos como MSI e derivados MESI , MOSI , MOESI , de volta isso em processadores Intel modernos.

A WikiPedia tem um bom resumo em Coerência de cache também.

Quanto a um mutex vs uma instrução atômica: um mutex é, mais ou menos, um acordo de que um bit de memória será usado para atomicamente permitir que uma e apenas uma pessoa o configure para um estado específico. Isso significa que ele pode usar operações atômicas para proteger operações não-atômicas - um protocolo que é concordado por ambos os lados, para fingir que você pode ser atômico em uma escala maior do que você realmente pode.

    
por 14.03.2012 / 22:21
3

Na maioria das CPUs modernas, uma operação atômica funciona bloqueando o endereço da memória afetada no cache da CPU. A CPU adquire o endereço de memória exclusivamente em seu cache e não permite que qualquer outra CPU adquira ou compartilhe esse endereço até que a operação seja concluída.

    
por 14.03.2012 / 22:49