ScholarGate
Assistente

Modelos de Consistência de Memória

Um modelo de consistência de memória especifica quais valores as leituras podem observar quando threads concorrentes acessam memória compartilhada, definindo as garantias de ordenação nas quais os programadores podem confiar.

Encontrar tema com PaperMindEm breveFind papers & topics
Tools & resources
Baixar slides
Learn & explore
VídeoEm breve

Definition

Um modelo de consistência de memória é uma especificação formal dos valores que as operações de leitura podem retornar em uma execução concorrente, fixando as ordenações de acessos à memória que a linguagem, o compilador e o hardware devem respeitar.

Scope

Este tópico abrange o espectro de modelos de consistência, desde a consistência sequencial até modelos relaxados e fracos, a relação happens-before e garantias livres de corrida de dados, ordenações de memória de hardware (como ordem total de armazenamento), e modelos de memória em nível de linguagem para C++ e Java. Ele aborda por que modelos relaxados existem, como cercas (fences) e atômicos restauram a ordenação, e como raciocinar de forma sólida sobre memória concorrente.

Core questions

  • Quais ordenações de operações de memória um programa pode observar legalmente?
  • Por que existem modelos de memória relaxados e o que eles permitem?
  • Como a garantia livre de corrida de dados simplifica o raciocínio?
  • Como as cercas (fences) e operações atômicas impõem a ordenação?

Key theories

Consistência sequencial
Lamport definiu a consistência sequencial, na qual uma execução multiprocessador deve parecer como algum único entrelaçamento de operações que respeita a ordem do programa de cada processador, o modelo de linha de base intuitivo mais forte.
Consistência relaxada e a garantia SC-for-DRF
Adve e Gharachorloo explicam modelos relaxados e o princípio de que programas livres de corrida de dados se comportam como se fossem sequencialmente consistentes, conciliando desempenho com programabilidade.
Modelos de memória em nível de linguagem
Manson, Pugh e Adve formalizaram o modelo de memória Java usando uma relação happens-before, definindo quais otimizações são legais e quais garantias até mesmo programas com corrida de dados recebem.

Clinical relevance

Como processadores multicore e compiladores otimizadores reordenam operações de memória, os modelos de memória de linguagem são essenciais para escrever código concorrente correto e portátil. Eles informam aos programadores quando a sincronização é necessária e definem as garantias que bibliotecas e runtimes podem oferecer.

History

Lamport formalizou a consistência sequencial em 1979. À medida que o hardware adotava ordenações relaxadas para desempenho, o tutorial de Adve e Gharachorloo de 1996 codificou o panorama dos modelos de consistência e a estrutura livre de corrida de dados. Os projetistas de linguagem então incorporaram modelos de memória nas especificações, com o modelo de memória Java (2005) e o modelo de memória C++11 estabelecendo a abordagem moderna.

Debates

Semântica de programas com corrida de dados
Uma questão difícil é quais garantias, se houver, dar a programas que contêm corridas de dados; os modelos de linguagem devem prevenir valores 'do nada' (out-of-thin-air) enquanto ainda permitem otimizações agressivas de compilador e hardware.

Key figures

  • Leslie Lamport
  • Sarita Adve
  • Kourosh Gharachorloo
  • William Pugh
  • Jeremy Manson

Related topics

Seminal works

  • lamport1979
  • adve1996
  • manson2005

Frequently asked questions

Por que nem todos os sistemas usam apenas consistência sequencial?
A consistência sequencial proíbe muitas otimizações de compilador e hardware que melhoram o desempenho, então a maioria dos sistemas reais adota modelos relaxados e fornece primitivas de sincronização para recuperar uma ordenação mais forte apenas onde necessário.
O que é a garantia livre de corrida de dados?
Sob muitos modelos de memória de linguagem, um programa que não contém corridas de dados (todos os acessos conflitantes são devidamente sincronizados) tem a garantia de se comportar como se a memória fosse sequencialmente consistente.

Methods for this concept

Related concepts