AULER, P. A. M. Levantamento nutricional de pomares de laranja ...
Memórias Transacionais Izumi Oniki Chiquito Rafael Auler.
Transcript of Memórias Transacionais Izumi Oniki Chiquito Rafael Auler.
Memórias Transacionais
Izumi Oniki Chiquito
Rafael Auler
Motivação
Redução do período de clock melhora o desempenho, mas também aumenta a dissipação de energia
Surgimento de sistemas multi-core Necessidade de executar trechos de código
simultaneamente (paralelismo)
Motivação
Modelo multi-thread uso de bloqueios (locks)– Difícil composabilidade– Programador pode gerar longos trechos seriais
que prejudicam desempenho paralelo– Instabilidades
Deadlocks Convoying Inversão de prioridade
Motivação
Memória transacional (transactional memory – TM) como alternativa de programação concorrente
Utiliza o conceito de transações Detecta conflitos e verifica necessidade de re-
executar trechos de código Composabilidade Responsabilidade de sincronização é
completamente do sistema
Conceitos Básicos
Transação: uma seqüência de instruções que impõe modificações no sistema baseada no estado atual– Isolamento (seriabilidade)– Atomicidade
– Resultados: Commit ou Abort
Interface programador-sistema de memória transacional
Bloco atômico
exemploAtomic (x, y){ atomic { x = x + y; y = 0; }}
bool mutexX, mutexY;
exemploLock (x, y){ lock(mutexX); lock(mutexY); x = x + y; y = 0; unlock(mutexX); unlock(mutexY);}
Interface programador-sistema de memória transacional
Retry orElse
atomic { if (tamanhoFila > 0) fila.remover(); else retry;}
atomic { { filaPref.atender(); } orElse { filaRegular.atender(); }}
Desafios de Implementação
Versionamento de dados– Versionamento adiantado
undo log
– Versionamento tardio (atrasado) buffer local
Detecção de conflito– Detecção adiantada– Detecção tardia
Desafios de Implementação
Detecção de conflito adiantada– Pessimista– Problema em potencial: livelock
Escreve X
Lê X
T1 T2
T2 aguarda para verificar se T1 irá efetivar ou abortar
Lê X
Lê X
Escreve X
T1 T2
reinicia
efetivação
Desafios de Implementação
Detecção de conflito atrasada– Problema em potencial: starvation
Escreve X
Lê X
T1 T2
efetivação
reinicia
Desafios de Implementação
Aninhamento de transações– Flattening– Aninhamento fechado (closed nesting)
Dados separados para cada transação
– Aninhamento aberto (open nesting)
Modelos de Memória Transacional
Hardware transaction memory (HTM) Software transaction memory (STM) Modelos híbridos
Memória Transacional de Herlihy e Moss (HMTM)
1993 Memória transacional deve ser rápida apoio do hardware Alterar a arquitetura do processador para incluir novas
instruções Cache transacional Transações não são explicitamente definidas Resolução de conflitos adiantada e versionamento tardio Limitações de recursos transacionais e tempo de vida das
transações (trocas de contexto)
Software Transactional Memory (STM)
1997 – Shavit e Toitou Eliminação dos problemas relacionados à
falta de recursos do hardware ou troca de contexto
Possibilidade de melhor explorar a semântica de programação
Portabilidade Exigência cara: transações estáticas
Unbounded Transactional Memory (UTM)
2005 Desempenho do hardware, eliminando
restrições do HMTM Utópico exige muitas modificações na
arquitetura Virtualização do tempo e do espaço Detecção de conflitos adiantada,
versionamento adiantado e flattening
Large Transaction Memory (LTM)
2005 Modelo menos exigente Não virtualiza o tempo Não permite troca de transações entre
processadores Versionamento tardio
Virtual Transaction Memory (VTM)
2005 Abordagem semelhante a UTM Virtualização do espaço e do tempo Versionamento tardio
LogTM
2006 Exemplo de bom desempenho em versionamento
adiantado Ponteiro para log das modificações Escritas diretas na memória comum Software responsável pela recuperação Duas versões
– Flat LogTM– Nested LogTM
Suporte a aninhamento aberto e fechado
Unbounded Page-Based Transactional Memory (PTM)Extended Transactional Memory (XTM)
2006 Alocação de páginas na memória, aproveitando a
memória virtual, quando atingida a limitação do hardware
Desempenho igual ou superior a VTM e modelos mais flexíveis
– Virtualização de aninhamento XTM adota versionamento e detecção de conflitos
tardios PTM adota o oposto ou uma abordagem híbrida
quanto ao versionamento
Memória Transacional Híbrida
Combinam HTM e STM Estratégia geral:
– Executar transações em hardware maior velocidade
– Reiniciar transações em software combate problema da falta de recursos
Resumo
Paralelismo/Programação concorrente Uso de transações Abstração de programação Dificuldades de implementação Modelos de memórias transacionais
Conclusão
Uso de transações para resolver problemas de concorrência é eficiente
A abstração facilita a programação Memórias transacionais prometem ao
software o melhor aproveitamento dos processadores de vários núcleos
Importante área de pesquisa