A Simulação de Arquitetura
Por: laura7778 • 26/8/2020 • Trabalho acadêmico • 935 Palavras (4 Páginas) • 197 Visualizações
Simulação de benchmarks para análise de desempenho de arquiteturas usando a ferramenta Simple Scalar
Resumo: A ferramenta Simple Scalar permite configurar parâmetros para análise de desempenho de arquiteturas. Neste trabalho foram realizadas simulações cujas consideravam dimensionamento de largura de pipeline, quantidade de unidades funcionais e algoritmos de previsão de desvio.
- Introdução
As simulações realizadas complementam os tópicos abordados em sala de aula, ratificando as discussões sobre dimensionamento de arquiteturas, tais como limites de vantagem a partir da análise de custo energético versus desempenho.
- Simulações considerando largura do Pipeline
Simulação com largura de pipeline variando para dois Benchmarks Para esta simulação foram utilizados os benchmarks LI_3 E GCC_4. Para realizar os testes a ferramenta permite que sejam configurados os seguintes parâmetros: fech: ifqsize, decode: width, ruu: size, commit: width, res: ialu, res: imult, res: fpalu, res: fpmulti.
Foram realizadas 6 simulações diferentes: Considerando 3 larguras de pipeline: 1, 4 e 8; além disso para cada largura fora também simulada com 2 versões: instruções executando em ordem e fora de ordem. A partir dessa entrada observou-se a resposta do desempenho a partir do número de ciclos necessários para conclusão do teste e também a medida de Ciclos por instrução. Os resultados obtidos seguem na Tabela 1.
Pipeline com largura 1 | Pipeline com largura 4 | Pipeline com largura 8 | ||||
In-order | Out-of-order | In-order | Out-of-order | In-order | Out-of-order | |
Ciclos | 291529247 | 281793992 | 240656053 | 135095884 | 243573788 | 10942760 |
CPI | 1.5904 | 1.5370 | 1.3129 | 0.7370 | 1.3288 | 0.5969 |
Tabela 1. Valores encontrados na primeira simulação.
- Discussão dos resultados
Uma arquitetura que execute mais instruções por ciclos tem melhor desempenho, pois podemos concluir que a mesma possui melhor ILP (Instruction level Parallelism), ou seja, ele executa mais operações solicitando menos ciclos, o que resulta no ganho de tempo e consequentemente de desempenho. Uma arquitetura que tem baixo CPI (Ciclos por instrução) é mais eficiente em relação a uma de CPI maior.
Observando os valores obtidos para a mesma largura de Pipeline, com largura em ordem e fora de ordem, pode-se concluir que existe ganho tanto em CPI quanto em número de ciclos, o que é bastante intuitivo, pois se o processamento consegue executar mais instruções por ciclos o impacto reflete de modo diretamente proporcional no número de ciclos necessários para executar todo o conjunto.
O Pipeline possui a fragilidade de conflitos, e com isso a execução em ordem pode exigir que sejam realizadas paradas até que as unidades funcionais entreguem os valores atualizados para os registradores. Quando ocorre a parada, perde-se, pelo menos, um ciclo aguardando a atualização dos valores para que a próxima instrução seja executada (caso exista uma dependência entre as instruções); com a execução fora de ordem é permitido que as instruções que não possuem dependências comecem a ser executadas antes, gerando como resposta a redução de paradas do Pipeline.
Os resultados também demonstram que quanto maior a largura do Pipeline, maior o ganho de desempenho na execução fora de ordem.
- Simulações considerando Desvios para conflitos de controle
Os benchmarks foram simulados com 4 previsores diferentes, taken, not taken, bimodal e perfect. Os resultados obtidos estão na tabela a seguir:
NOT TAKEN | TAKEN | BIMODAL | |
CPI | +0,60091 | +0.5624 | -0.9825 |
Tabela 2. Ganhos de CPI em relação ao previsor perfeito.
[pic 1]
Gráfico 1. Relação do CPI com os previsores de desvio empregados.
O previsor bimodal funciona com dois bits, com um contador que vai de 0 a 3. Caso esteja maior ou igual a dois o desvio é predito tomado, se menor é predito como não tomado.
...