01 fev 2023
14:00 Defesa de Doutorado Sala 351 do IC 3,5
Tema
Improving Compiler-Generated Transactional Code Performance and Programmability via Language-Level Constructs
Aluno
Bruno Chinelato Honorio
Orientador / Docente
Guido Costa Souza de Araújo
Breve resumo
Com fabricantes de chips como Intel, IBM e ARM oferecendo suporte nativo para memória
transacional (TM) em suas arquiteturas de conjunto de instruções, as transações em
memória estão se tornando cada vez mais populares na indústria e como um tópico de
pesquisa. Apesar deste recente aumento de popularidade no lado do hardware da memória
transacional (HTM), suporte de software para memória transacional (STM) ainda é escasso.
O único compilador com suporte transacional atualmente disponível, o GNU Compiler
Collection (GCC), não gera código que atinja o desempenho desejável e não é fácil de usar,
fazendo com que o programador tenha que levar em consideração como as funções são
usadas e anotá-las adequadamente, o que está longe da abstração ideal da TM.
Abordagens modernas procuram combinar HTM e STM para melhor explorar o
desempenho. Em particular, os sistemas de TM em fases (PhTMs) executam transações
em fases, não permitindo que as transações de hardware e software sejam executadas
simultaneamente para evitar sobrecargas de coordenação. Uma de suas principais questões
é projetar uma boa heurística de modo de transição que explore o HTM tanto quanto
possível, considerando os problemas de desempenho do lado STM.
Esta Tese faz 3 contribuições principais para a pesquisa de memória transacional:
Em primeiro lugar, propõe um novo mecanismo de anotação (TMFree) que elimina
seletivamente barreiras desnecessárias de leitura/gravação de memória transacional do
código gerado pelo compilador. Ele faz isso anotando variáveis que não precisam ser
instrumentadas usando um qualificador de tipo, foram mostrados aumentos de velocidade
de até 7x e uma redução de 95% nas barreiras. Em segundo lugar, propõe uma construção de
nível de linguagem (TMFree) que facilita a programação do código transacional gerado pelo
compilador. Neste caso, o TMFree funciona como um casting de estilo C em funções que
não precisam ser instrumentadas. Este trabalho automatiza muito do que o programador
tinha que fazer manualmente, diminuindo significativamente o trabalho que o programador
tem que fazer. Os resultados mostram que o programador só precisa inserir manualmente
5 deste TMFree casting para que os aplicativos funcionem sem perda de desempenho, em
comparação com as 358 anotações que foram necessárias para os mesmos resultados. E,
finalmente, propõe um mecanismo de modo de transição (CTM) para explorar melhor
os dois modos de memória transacional das fases. Ele faz isso usando uma abordagem
diferente no PhTM: o uso de taxa de transferência de confirmação e simulação de cache
para imitar o comportamento das restrições de armazenamento HTM no modo STM. Os
resultados experimentais mostraram que até 5x de aumento de velocidade foram alcançados
ao usar essa nova abordagem.
Esta tese, então, defende que a memória transacional é um forte concorrente para
técnicas de programação paralela, com muitos dos resultados apresentados sendo o estado
da arte para pesquisa de memória transacional.
Banca examinadora
Titulares:
Guido Costa Souza de Araújo | IC/UNICAMP |
Márcio Bastos Castro | INE/UFSC |
André Rauber Du Bois | CDTEC/UFPEL |
Márcio Machado Pereira | FUNCAMP |
Luiz Eduardo Busato | IC/UNICAMP |
Suplentes:
Lucas Francisco Wanner | IC/UNICAMP |
Alexandro José Baldassin | IGCE/UNESP |
Nahri Balesdent Moreano | FACOM/UFMS |