Baixe o app para aproveitar ainda mais
Prévia do material em texto
UNIVERSIDADE FEDERAL DE LAVRAS Departamento de Ciência da Computação Bacharelado em Ciência da Computação Engenharia de Controle e Automação Disciplina: Arquitetura de Computadores I � GCC117 1 o Semestre de 2013. Professor: Luiz Henrique A. Correia TRABALHO PRÁTICO No 2 (Trabalho em grupo) Valor: 15 pontos � Data de entrega com apresentação: de 03 a 12/09/2013 Este trabalho prático tem como objetivo estudar o funcionamento de um processador MIPSmonociclo. O desenvolvimento deste trabalho é a base para uma implementação de um simulador funcional de um processador, e contribui para o apreendizado dos conceitos empregados na operação de um processador. Um dos requisitos fundamentais para se entender como implementar o simulador fun- cional do processador monociclo é a compreensão do termo �funcional�. Uma descrição funcional divide o processador nos blocos que existirão em uma implementação real. Por- tanto, o processador deverá conter cinco rotinas principais, uma para cada estágio a ser executado para cada instrução. É necessário que seja criada uma unidade de controle para a interação das unidades funcionais. Note que a única forma de comunicação entre essas cinco rotinas em um processador real é via registradores, que no caso do simulador serão implementados por estruturas de dados no programa do simulador. As cinco unidades funcionais (estágios) consideradas neste trabalho são denominados: IF, ID,EX,MEM e WR. O trabalho prático deve considerar as seguintes características: 1. Um barramento de dados de 32 bits e um barramento de endereço de 16 bits; 2. Contém 32 registradores de uso geral de 32 bits de largura; 3. A memória é endereçada à palavra, ou seja, cada endereço de memória deve se referir a quatro bytes. No total, o processador deverá possuir 64k (216) endereços. Então, a memória total do processador será de: 256KB (64K endereços x 4 bytes). 4. O programa deve receber como entrada um arquivo binário com linhas de 32 bits que representam a codificação das instruções do MIPS. Para tal é necessário o de- senvolvimento de um Interpretador de Instruções no qual dado um conjunto de instruções em linguagem de montagem do MIPS, este seja convertido para linguagem de máquina, em binário. Cada instrução em binário deve ser decodificada e apresentada em uma interface de saída, por exemplo: Entrada: add $16, $5, $15 Saída: 00000000101011111000000000100000 5. As 20 instruções consideradas no trabalho são dos tipos R, J e I. O conjuntomínimo de instruções que devem ser usadas no trabalho são: • Aritméticas e Lógicas: add, sub, addi, and, or, nor, mult, sll, slr, mul, div. • Transferência de dados: lw, sw. • Desvio Condicional: beq, bne, bge, slt. • Desvio Incondicional: jump, jal, jr. Em caso de dúvidas de como usar as instruções consulte o livro e o manual do MARS, inclusive verifique as variações de cada instrução (mul e div podem ser usadas em operações entre registradores e entre registradores e constantes). 6. O caminho de dados a ser considerado para a implementação monociclo deve ser o monstrado na Figura 1. 7. Esta implementação deve ser orientada por máquina de estado a ser apresentada, por meio de uma figura, na documentação do trabalho para todas as 20 instruções. 8. A interface de saída DEVE também apresentar para cada um dos cinco estágios os valores correspondentes para: a) IF: O valor do PC atual da instrução (PC). b) ID: os valores dos sinais para as linhas de controle em cada estágio, são eles: • Registrador de Destino (RegDst). • Escrita em registrador (RegWrite). • Segundo operando fonte da UAL (ALUSrc). • Leitura da Memória (MemRead). • Escrita em Memória (MemWrite). • Seleção da saída da memória ou dado da ALU (Mem2Reg). • Sinal de desvio incondicional (Jump). • Sinal de desvio condicional (Branch). • Código de operação da ALU (ALUOp). • Valor do endereço de desvio (PCinconditional). c) EX: todos os flags da ALU e cálculo do endereço de desvio. • Valor do Flag de Zero (Zero). • Valor do Sinal de Overflow (Ovfl). • Valor do cálculo do endereço de desvio (Desvio). d) MEM: valores dos sinais de Leitura e Escrita. • Caso exista a operação de leitura, o valor de MemRead e do endereço de Memória. 2 • Caso exista a operação de escrita, o valor de MemWrite e do endereço de Memória. e) WR: valores da saída da memória para registrador, registrador de destino e do dado. • Valor do sinal de memória para registrador (Mem2Reg). • Endereço do registrador de destino (RegDst). • Valor do dado a ser escrito no registrador (Dado). 9. Os programas rodando neste simulador devem considerar os exemplos do livro (seção 2.7) ExemploFolha, Fact e Strcpy. Outros exemplos também DEVEM ser de- senvolvidos pelo grupo. 10. O código deve seguir os estágios definidos pela máquina de estados concebida e ser desenvolvido segundo as regras da boa programação. A linguagem usada no desenvolvimento do trabalho pode ser qualquer uma, mas pref- erencialmente usa C, C++ ou Java. O trabalho DEVE apresentar documentação científica possuindo pelo menos tópicos como: • Introdução; • Implementação; • Dificuldades encontradas; • Como usar o software; • Exemplos de testes; • Conclusões; • Referências bibliográficas. Utilize boas práticas de apresentação de um trabalho científico. O trabalho deverá ser apresentado ao professor nas datas de 03 a 12/09/2013, para tal marque com antecedência, por e-mail ou pessoalmente o horário da apresentação. References [1] DAVID A. Patterson E JOHN L. Henessy. Organização e projeto de computadores: A interface Hardware Software. Morgan Kaufmann, 3 a edição, 2005. 3 Figure 1: Caminho de dados Monociclo. 4
Compartilhar