Especificação
Incrementar o simulador utilizado no mês passado com informações de temporização de forma a estimar o tempo de execução de um programa.
As seguintes funcionalidades básicas são necessárias:
- Todas as unidades funcionais executam em um único ciclo.
- Seu processador deve ser superescalar com largura máxima de 4 instruções nas unidades que precisam desse parâmetro (fetch, decode, ...)
- Seu processador possui apenas 3 ALUs, 1 AGU e uma BRU
- Seu processador possui branch prediction (gshare)
- Ao final da execução, você deve imprimir uma linha com o número de ciclos até a última instrução concluir o estágio de commit.
- Para definir a temporização das caches, você pode utilizar um simulador externo, como o Dinero, por exemplo. Simule ao menos 2 níveis de cache.
- Você deve executar programas que tenham da ordem de 100.000 a 1.000.000 de instruções. Exemplo: Dhrystone, adpcm (calibre o tamanho da entrada).
Entrega
A entrega deverá ser feita através da atividade no Google Classroom, onde você fornecerá um link para o seu repositório git.
É importante ter um arquivo README.md que indique como compilar e executar todos os programas.
Você também deverá entregar um diagrama simplificado do seu pipeline indicando os demais parâmetros necessários para sua simulação (número de estágios em cada parte e temporização deles).