Projeto e Implementação do Decodificador PBIW em Hardware Felipe de Oliveira de Araújo Felipe Yonehara
A técnica de codificação PBIW A técnica PBIW ( Pattern Based Instruction Word) é composta por um algoritmo baseado em fatoração de operando e por um mecanismo decodificador. O mecanismo decodificador é composto por uma simples cache (P-cache) e um circuito de decodificação. O algoritmo fatora as operações de um programa em instruções (conjunto de operações) codificadas e padrões.
A técnica de codificação PBIW Os padrões fatorados são armazenados em uma cache que recebe o nome de P-cache (Pattern Cache). As instruções codificadas são armazenadas na memória de instruções. Podemos dizer que o principal objetivo da técnica é representar as instruções de forma bastante compacta em memória sem a necessidade de hardware complexo para recompor a instrução executável no interior do processador.
Motivação Diversas propostas foram desenvolvidas na tentativa de minimizar o problema de Memory Wall. Enquanto algumas propostas focaram em novos esquemas de codificação outras buscavam técnicas eficientes de compressão. Todas com um único objetivo: reduzir a quantidade de dados armazenados na memória principal.
Motivação Trabalhos vem mostrando ainda que é possível obter redução no tamanho do código e no consumo de energia através de uma compressão de código eficiente e um descompressor bastante simples. No entanto, boa parte das propostas que tentam reduzir os programas causam uma queda no desempenho do processador devido ao overhead da descompressão.
Motivação A técnica PBIW utiliza conceitos e técnicas da área de compressão de código, e utiliza um abordagem diferente. Podemos fazer um simples comparação entre as duas figuras a seguir que ilustram a diferença entre o Fluxo convencional de compressão e o Fluxo da Codificação PBIW.
(a) Fluxo convencional de compressão (b) Fluxo da codificação PBIW
Decodificador PBIW
Resultados Nessa primeira versão de nosso projeto objetivamos provar a funcionalidade, e que não houve um impacto significativo na área do processador para o uso da nossa técnica. Os experimentos que utilizamos foram dois programas carregados diretamente na memória de instrução (i_men.vhdl) antes da síntese.
Resultados O primeiro programa calcula o número 45 da seqüência de Fibonacci e o segundo programa calcula o Fatorial do número 10. Nos experimentos apresentados a seguir primeiramente buscamos provar a funcionalidade da técnica. Para assim investigar o impacto em termos estáticos ( tamanho total do código) e dinâmico ( tamanho do código executado) dos 2 programas sob estudo.
Funcionalidade Figura 6: Resultado da simulação do código do cálculo do número de Fibonacci 45.
Funcionalidade Figura 7: Resultado da simulação para o código do cálculo do fatorial do número 10
Avaliação do Desempenho da Técnica O esquema de codificação PBIW apresentado anteriormente propõe a redução no tamanho do programa em memória. Como após a decodificação da instrução PBIW, o número de bits total utilizado pela instrução codificada e seu respectivo padrão ( 96 + 64 = 160 bits) é maior do que o número de bits utilizado por instrução VEX (128 bits) equivalente, em alguns casos pode causar um aumento do tamanho do programa.
Avaliação do Desempenho da Técnica Porém o diferencial da técnica está no fato de que a instrução de 64 bits é duas vezes menor que a instrução VEX original e o reuso dos padrões grande o suficiente para reduzir o tamanho dos programas e, conseqüentemente, aumentar o desempenho do processador.
Avaliação do Desempenho da Técnica Os experimentos realizados nesta seção foram baseados na codificação dos programas do cálculo de Fibonacci e Fatorial. Foram realizados dois tipos de experimentos: Estático e Dinâmico.
Avaliação Estática Neste caso, duas medidas merecem destaque: Taxa de Reuso e Taxa de Compressão. A taxa de reuso indica a quantidade média de instruções codificadas que utilizam um mesmo padrão. O valor da Taxa de Reuso pode ser calculado de acordo com a seguinte Equação: Taxa de Reuso = Número de Instruções Codificadas Número de Padrões
Avaliação Estática O fator de redução informa de quanto foi a redução no tamanho do código do programa obtido com o uso da codificação PBIW. Deve-se observar que quanto maior o reuso e o fator de redução mais eficiente é a técnica de codificação. O valor da Taxa de Compressão pode ser calculado fazendo: Taxa de Compressão = 1 - α β α= tamanho do código codificado Β= tamanho do código não codificado
Programa Tamanho do código ρ-vex original ( Bytes) Avaliação Estática Tamanho do código ρ-vex+ Decodificador ( Bytes) Taxa de Compressão (%) Taxa de Reuso Fibonacci 64 168-162 1,13 Fatorial 240 332-38,3 2,3 Fibonacci + Fatorial 304 452-48,7 2,3 Tabela 1: Avaliação Estática dos programas implementados na memória de instrução
Avaliação Dinâmica Visa medir o impacto da técnica de codificação no desempenho do processador durante a execução. Neste experimento, considera-se que a latência de busca de bytes na memória é a mesma para ambas as implementações. Logo, um programa que busca menos bytes na memória vai gerar menor latência de busca de instrução.
Avaliação Dinâmica A diminuição da latência de busca de instrução implica num aumento de desempenho, uma vez que todas as operações possuem a mesma latência e, principalmente, o número de operações é o mesmo para ambos os programas.
Avaliação Dinâmica Programa ρ-vex (Bytes) ρ-vex + Decodificador (Bytes) Taxa de Compressão (%) Instruções VEX Fibonacci 1520 1400 8 94 175 Fatorial 448 360 20 28 45 Fibonacci + Fatorial 1952 1760 10 122 220 Instruções PBIW Tabela 2: Avaliação Dinâmica dos programas implementados na Memória de instrução.
Conclusão Este trabalho projetou e implementou um mecanismo de decodificação PBIW sobre o processador ρ-vex em hardware. Os resultados obtidos conseguiram demonstrar a factibilidade da implementação. E mesmo sem objetivarmos, conseguimos obter um aumento no desempenho do processador.
Conclusão Cabe ressaltar que com uma implementação otimizada da cache de padrões, com um codificador eficiente para a técnica além de uma revisão aprofundada das decisões de projeto poderíamos aumentar significativamente os resultados obtidos neste trabalho.
FIM Questões?