Upload
internet
View
114
Download
1
Embed Size (px)
Citation preview
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