Defesa de Doutorado de Juan Jesús Salamanca Guillén

Título do Trabalho
Thread-Level Speculation on Hardware Transactional Memory Architectures
Candidato(a)
Juan Jesús Salamanca Guillén
Nível
Doutorado
Data
Add to Calender 2016-12-21 00:00:00 2016-12-21 00:00:00 Defesa de Doutorado de Juan Jesús Salamanca Guillén Thread-Level Speculation on Hardware Transactional Memory Architectures Auditório do IC 2 - Sala 85 INSTITUTO DE COMPUTAÇÃO mauroesc@ic.unicamp.br America/Sao_Paulo public
Horário
14:30
Local
Auditório do IC 2 - Sala 85
Orientador(a)
Guido Costa Souza de Araújo
Banca Examinadora

Titulares:
Guido Costa Souza de Araújo (IC/UNICAMP)
Alexandro José Baldassin (IGCE/UNESP)
Márcio Bastos Castro (DIE/UFSC)
Sandro Rigo (IC/UNICAMP)
Emilio de Camargo Francesquini (IC/UNICAMP)
Suplentes:
Rodolfo Jardim de Azevedo (IC/UNICAMP)
Marcio Machado Pereira (IC/UNICAMP)
Paulo Sérgio Lopes de Souza (ICMC/USP)

Resumo

Especulação no nível de threads (TLS) é uma técnica em hardware/software que possibilita a execução paralela de múltiplas iterações de um laço, inclusive na presença de algumas dependências loop-carried. TLS exige mecanismos em hardware para suportar detecção de conflitos, armazenamento especulativo, commits das transações em ordem, e roll-back das transações. Trabalhos anteriores exploraram enfoques para implementar TLS, tanto em hardware dedicado como puramente em software, e tentaram predizer o desempenho de futuras implementações de TLS em hardware. Contudo, não existe nenhum processador comercial que forneça suporte direto para TLS. Entretanto, execução especulativa é suportada na forma de Memória Transacional em Hardware (HTM) — disponível em processadores modernos como Intel Core e IBM POWER8. HTM implementa três características essenciais para TLS: detecção de conflitos, armazenamento especulativo, e roll-back de transações. Antes de aplicar TLS a um laço quente, é necessário determinar se o laço tem potencial para ser especulado. Um laço pode ser adequado para TLS se a probabilidade de dependências loop-carried em tempo de execução for baixa; para estimar esta probabilidade um perfilamento de dependências do laço deve ser usado. Este trabalho apresenta um verificador das dependências loop-carried integrado como uma nova extensão de OpenMP, a diretiva parallel for check, a qual pode ser usada para ajudar desenvolvedores a identificarem a existência destas dependências em construções parallel for. Este trabalho também apresenta uma análise detalhada da aplicação de HTM para a paralelização de laços com TLS e descreve uma avaliação cuidadosa da implementação de TLS usando HTMs disponíveis em processadores modernos. Como resultado, esta tese proporciona evidências para validar várias afirmações importantes sobre o desempenho de TLS nestas arquiteturas. Os resultados experimentais mostram que TLS usando HTM produz speedups de até 3.8× para alguns laços. Finalmente, este trabalho descreve uma nova técnica de especulação para a otimização, e execução simultânea, de múltiplos traços de regiões de código quente. Esta técnica, chamada Speculative Trace Optimization (STO), enumera, otimiza, e executa especulativamente traços de laços quentes. Isto requer o suporte em hardware disponível em sistemas HTM. Este trabalho discute as características necessárias para suportar STO: multi-versão, resolução de conflitos tardia, detecção de conflitos prematura, e sincronização das transações. Uma revisão das arquiteturas HTM existentes — Intel TSX, IBM BG/Q, e IBM POWER8 — mostra que nenhuma delas tem todas as características requeridas para implementar STO. Entretanto, este trabalho mostra que STO pode ser implementado nas arquiteturas HTM existentes através da adição de privatização e código para esperar/retomar.