memórias transacionais izumi oniki chiquito rafael auler

22
Memórias Transacionais Izumi Oniki Chiquito Rafael Auler

Upload: internet

Post on 17-Apr-2015

114 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Memórias Transacionais Izumi Oniki Chiquito Rafael Auler

Memórias Transacionais

Izumi Oniki Chiquito

Rafael Auler

Page 2: 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)

Page 3: Memórias Transacionais Izumi Oniki Chiquito Rafael Auler

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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