Sobre este projeto
it-programming /
Aberto
Projeto Algoritmo Tomasulo
Data da Entrega: 20/05/2016 – 25 pontos
The devil is in the details - provérbio
Neste projeto você irá utilizar Verilog para implementar o algoritmo Tomasulo de
despacho simples como descrito no livro texto (Seções 3.4 e 3.5).
Descrição
No algoritmo Tomasulo a execução das instruções é dividida em 3 estágios: despacho,
execução e write back. Esses três estágios acessam componentes críticos de hardware:
o CDB, as estações de reserva (nas quais ocorrem as renomeações) e as unidades
funcionais. Você deverá implementar: (1) as estações de reserva, (2) os estágios do
algoritmo, (3) as unidades funcionais de multiplicação/divisão e soma/subtração, (4) o
banco de registradores, (5) as interconexões (barramentos e fios), e (6) a fila das
instruções.
Você deverá testar a sua implementação utilizando um código de exemplo
e submeter o relatório e o seu projeto no Moodle.
Preparação
Você deverá criar todos os blocos básicos. Podem ser utilizados componentes da
LPM. Nesta versão simplificada do Tomasulo, só serão realizadas operações de soma,
subtração, multiplicação, e divisão de inteiros.
Desta forma o banco de registradores
deverá ser inicializado.
As unidades funcionais operam com as seguintes latências: 5 ciclos multiplicação, 10
ciclos divisão, 2 ciclos soma/subtração.
Descrição inicial dos blocos básicos:
cdb arbiter: arbitra qual unidade funcional poderá colocar o dado no cdb e
faz o broadcast do resultado para o resto das unidades funcionais e o banco de
registradores.
CDB: barramento comum de dados que fornece o valor e o rótulo da estação de
reserva que produz o dado.
Estações de reserva: armazenam as instruções. Você poderá criar um
componente separado para armazenar os registradores renomeados (ex, como
uma tabela de renomeações).
Unidades funcionais: realizam as operações Soma/Subtração e
Multiplicação/Divisão.
Fila de instruções: Buffer que contém as instruções.
Banco de registradores: Conjunto de registradores que armazenam os dados.
Esta descrição inicial dos componentes deverá ser refinada e detalhada de acordo
com o projeto de cada grupo.
Por onde começar?
Pense na arquitetura do seu processador em alto nível (projeto top-down): quais
componentes são necessários, como contectar esses componentes, ou seja, quais
sinais são necessários. Em seguida detalhe cada um dos componentes lembrando
de realizar simulações para verificar o correto funcionamento.
Submissão
Crie um pacote contendo TODOS os códigos fontes, formas de onda, e o relatório do
projeto. Cada grupo deverá submeter um pacote no Moodle.
O relatório deverá incluir os seguintes componentes:
1. Uma introdução em alto nível da sua solução para o algoritmo Tomasulo (não
é para copiar a descrição do livro texto).
2. O projeto do seu processador, incluíndo detalhes necessários dos módulos
criados. Faça uma figura mostrando os blocos básicos e interconexões.
3. O código de teste utilizado e as formas de onda com uma explicação que
mostre o correto funcionamento.
4. Dificuldades encontradas.
5. Sugestões de melhorias da prática.
6. Comentários adicionais.
Apresentação em sala
Cada grupo deverá apresentar a estrutura do código e mostrar os testes
realizados (simulações) que comprovem o correto funcionamento da solução proposta.
Isto deverá ser feito até o dia 20/05/2016 no horário da aula. Não é necessário a
apresentação na placa.
Pontuação
Código:
Testes (simulações):
Relatório:
Pontos Extras
Inclusão das instruções de Load/Store e dos demais componentes necessários
para o funcionamento
Apresentação na placa DE2
Despacho duplo das instruções
Tomasulo completo com especulação
Categoria TI e Programação
Isso é um projeto ou uma posição de trabalho? Um projeto
Tenho, atualmente Eu tenho especificações
Disponibilidade requerida Conforme necessário
Experiência nesse tipo de projeto Não (Eu nunca gerenciei esse tipo de projeto)
Prazo de Entrega: Não estabelecido
Habilidades necessárias