Aumentando os benefícios SIMD por meio de uma detecção de DLP em tempo de execução e energeticamente eficiente
Abstract
Aplicações multimídia estão amplamente presentes em dispositivos embarcados. Devido
à sua natureza intrínseca, este nicho de aplicação é beneficiado pelo Paralelismo a Nível de
Dados (DLP). Para melhorar a relação performance-energia, os processadores atuais habilitam
o DLP pelo acoplamento de engines SIMD (Single Instruction Multiple Data), como Intel AVX,
ARM NEON and IBM Altivec. Bibliotecas e compiladores especiais são usados para suportar
a execução de DLP nesses mecanismos. No entanto, a sobrecarga de tempo aplicada a vetorização
através de programação manual é inevitável, uma vez que a maioria dos desenvolvedores
de software não tem habilidade para extrair o DLP usando bibliotecas desconhecidas. Considerando
a auto-vetorização através do uso de compilador, apesar de melhorar a produtividade
de software, tal método quebra compatibilidade de software. Além disso, ambos os métodos
estão limitados à análise de código estático, o que compromete os ganhos de desempenho.
Nesta dissertação, propomos uma detecção de DLP em tempo de execução chamada
Dynamic SIMD Assembler (DSA), que identifica de forma transparente as regiões de código
que podem ser vetorizadas para serem executadas no mecanismo ARM NEON. Devido à sua
forma dinâmica, a DSA mantém compatibilidade de software e evita a sobrecarga de tempo
no processo de desenvolvimento de software. Os resultados mostram que a DSA supera a
auto-vetorização através do uso do compilador ARM NEON em 32%, pois aplica a vetorização
parcial de loops e abrange mais regiões vetorizáveis, como Loops de Tamanho Dinâmico, Loops
Sentinela e Loops Condicionais. Além disso, a DSA supera a programação manual através do
uso da biblioteca ARM em 26% reduzindo 45% do consumo de energia sem penalidades em
relação ao tempo de desenvolvimento do software.
Collections
The following license files are associated with this item: