memórias transacionais izumi oniki chiquito rafael auler

Post on 17-Apr-2015

114 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related