Memórias Transacionais Izumi Oniki Chiquito Rafael Auler.
Transcript of Memórias Transacionais Izumi Oniki Chiquito Rafael Auler.
![Page 1: Memórias Transacionais Izumi Oniki Chiquito Rafael Auler.](https://reader035.fdocuments.net/reader035/viewer/2022062512/552fc10b497959413d8c117a/html5/thumbnails/1.jpg)
Memórias Transacionais
Izumi Oniki Chiquito
Rafael Auler
![Page 2: Memórias Transacionais Izumi Oniki Chiquito Rafael Auler.](https://reader035.fdocuments.net/reader035/viewer/2022062512/552fc10b497959413d8c117a/html5/thumbnails/2.jpg)
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)
![Page 3: Memórias Transacionais Izumi Oniki Chiquito Rafael Auler.](https://reader035.fdocuments.net/reader035/viewer/2022062512/552fc10b497959413d8c117a/html5/thumbnails/3.jpg)
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
![Page 4: Memórias Transacionais Izumi Oniki Chiquito Rafael Auler.](https://reader035.fdocuments.net/reader035/viewer/2022062512/552fc10b497959413d8c117a/html5/thumbnails/4.jpg)
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
![Page 5: Memórias Transacionais Izumi Oniki Chiquito Rafael Auler.](https://reader035.fdocuments.net/reader035/viewer/2022062512/552fc10b497959413d8c117a/html5/thumbnails/5.jpg)
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
![Page 6: Memórias Transacionais Izumi Oniki Chiquito Rafael Auler.](https://reader035.fdocuments.net/reader035/viewer/2022062512/552fc10b497959413d8c117a/html5/thumbnails/6.jpg)
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);}
![Page 7: Memórias Transacionais Izumi Oniki Chiquito Rafael Auler.](https://reader035.fdocuments.net/reader035/viewer/2022062512/552fc10b497959413d8c117a/html5/thumbnails/7.jpg)
Interface programador-sistema de memória transacional
Retry orElse
atomic { if (tamanhoFila > 0) fila.remover(); else retry;}
atomic { { filaPref.atender(); } orElse { filaRegular.atender(); }}
![Page 8: Memórias Transacionais Izumi Oniki Chiquito Rafael Auler.](https://reader035.fdocuments.net/reader035/viewer/2022062512/552fc10b497959413d8c117a/html5/thumbnails/8.jpg)
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
![Page 9: Memórias Transacionais Izumi Oniki Chiquito Rafael Auler.](https://reader035.fdocuments.net/reader035/viewer/2022062512/552fc10b497959413d8c117a/html5/thumbnails/9.jpg)
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
![Page 10: Memórias Transacionais Izumi Oniki Chiquito Rafael Auler.](https://reader035.fdocuments.net/reader035/viewer/2022062512/552fc10b497959413d8c117a/html5/thumbnails/10.jpg)
Desafios de Implementação
Detecção de conflito atrasada– Problema em potencial: starvation
Escreve X
Lê X
T1 T2
efetivação
reinicia
![Page 11: Memórias Transacionais Izumi Oniki Chiquito Rafael Auler.](https://reader035.fdocuments.net/reader035/viewer/2022062512/552fc10b497959413d8c117a/html5/thumbnails/11.jpg)
Desafios de Implementação
Aninhamento de transações– Flattening– Aninhamento fechado (closed nesting)
Dados separados para cada transação
– Aninhamento aberto (open nesting)
![Page 12: Memórias Transacionais Izumi Oniki Chiquito Rafael Auler.](https://reader035.fdocuments.net/reader035/viewer/2022062512/552fc10b497959413d8c117a/html5/thumbnails/12.jpg)
Modelos de Memória Transacional
Hardware transaction memory (HTM) Software transaction memory (STM) Modelos híbridos
![Page 13: Memórias Transacionais Izumi Oniki Chiquito Rafael Auler.](https://reader035.fdocuments.net/reader035/viewer/2022062512/552fc10b497959413d8c117a/html5/thumbnails/13.jpg)
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)
![Page 14: Memórias Transacionais Izumi Oniki Chiquito Rafael Auler.](https://reader035.fdocuments.net/reader035/viewer/2022062512/552fc10b497959413d8c117a/html5/thumbnails/14.jpg)
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
![Page 15: Memórias Transacionais Izumi Oniki Chiquito Rafael Auler.](https://reader035.fdocuments.net/reader035/viewer/2022062512/552fc10b497959413d8c117a/html5/thumbnails/15.jpg)
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
![Page 16: Memórias Transacionais Izumi Oniki Chiquito Rafael Auler.](https://reader035.fdocuments.net/reader035/viewer/2022062512/552fc10b497959413d8c117a/html5/thumbnails/16.jpg)
Large Transaction Memory (LTM)
2005 Modelo menos exigente Não virtualiza o tempo Não permite troca de transações entre
processadores Versionamento tardio
![Page 17: Memórias Transacionais Izumi Oniki Chiquito Rafael Auler.](https://reader035.fdocuments.net/reader035/viewer/2022062512/552fc10b497959413d8c117a/html5/thumbnails/17.jpg)
Virtual Transaction Memory (VTM)
2005 Abordagem semelhante a UTM Virtualização do espaço e do tempo Versionamento tardio
![Page 18: Memórias Transacionais Izumi Oniki Chiquito Rafael Auler.](https://reader035.fdocuments.net/reader035/viewer/2022062512/552fc10b497959413d8c117a/html5/thumbnails/18.jpg)
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
![Page 19: Memórias Transacionais Izumi Oniki Chiquito Rafael Auler.](https://reader035.fdocuments.net/reader035/viewer/2022062512/552fc10b497959413d8c117a/html5/thumbnails/19.jpg)
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
![Page 20: Memórias Transacionais Izumi Oniki Chiquito Rafael Auler.](https://reader035.fdocuments.net/reader035/viewer/2022062512/552fc10b497959413d8c117a/html5/thumbnails/20.jpg)
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
![Page 21: Memórias Transacionais Izumi Oniki Chiquito Rafael Auler.](https://reader035.fdocuments.net/reader035/viewer/2022062512/552fc10b497959413d8c117a/html5/thumbnails/21.jpg)
Resumo
Paralelismo/Programação concorrente Uso de transações Abstração de programação Dificuldades de implementação Modelos de memórias transacionais
![Page 22: Memórias Transacionais Izumi Oniki Chiquito Rafael Auler.](https://reader035.fdocuments.net/reader035/viewer/2022062512/552fc10b497959413d8c117a/html5/thumbnails/22.jpg)
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