MO601/MC973 - Projeto 2

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).