Um framework para definição e análise de modelos de consistência de memória

A Memória Distribuída Compartilhada (DSM) foi proposta para permitir que o paradigma de programação por memória compartilhada seja utilizado em arquiteturas distribuídas. O comportamento dos sistemas DSM é determinado pelo modelo de consistência da memória. De modo a prover melhor compreensão sobre a semântica dos modelos de consistência da memória, vários pesquisadores propuseram formalismos para defini-los. Mesmo com definições formais, ainda é difícil dizer que tipos de históricos de execução podem ser produzidos em um determinado modelo de consistência. Neste artigo, é proposto um framework que serve como base para a implementação da análise de históricos de execução em diversos modelos de consistência, provendo os algoritmos e estruturas de dados convenientes para tal. O nosso framework é organizado em módulos e permite que o usuário defina novos modelos de consistência de uma maneira simples. Um protótipo foi implementado em C, incluindo também os programas que lidam com históricos em PipelinedRAM e Release Consistency. Quando comparados com suas implementações originais, o uso do framework permitiu uma redução de em torno de 70% no tamanho do código para os dois modelos.