Baixe o app para aproveitar ainda mais
Prévia do material em texto
UNIVERSIDADE FEDERAL DO ESTADO DE SÃO PAULO BRUNO HIDEKI AMADEU OGATA Determinação do Conjunto de Instruções e Arquitetura Base São José dos Campos 2021 BRUNO HIDEKI AMADEU OGATA RA: 140884 Determinação do Conjunto de Instruções e Arquitetura Base Relatório apresentado ao curso: Laboratório de Sistemas Computacionais: Arquitetura e Organização de Computadores. São José dos Campos 2021 RESUMO Aqui serão apresentadas as primeiras etapas no processo de implementação de um sistema digital composto por processador, memória e interface de comunicação, que são a definição do conjunto de instruções e da arquitetura base. Este projeto será desenvolvido com base na arquitetura MIPS (Microprocessor without interlocked pipeline stages). Palavras-chaves: instruções, MIPS, caminho de dados, LISTA DE ILUSTRAÇÕES Figura 1: Caminho de dados no MIPS 11 LISTA DE TABELAS Tabela 1. Formato das instruções do MIPS 10 Tabela 2. Conjunto de instruções 12 Tabela 3. Opcode usado para cada instrução 13 SUMÁRIO 1 Introdução 7 2 Objetivos 8 2.1 Geral 8 2.2 Específicos 8 3 Fundamentação Teórica 9 3.1 Verilog 9 3.2 FPGAs 9 3.3 Arquitetura MIPS 9 3.4 Caminho de Dados 10 4 Desenvolvimento 12 4.1 Conjunto de Instruções 12 4.2 Mapeamento das Instruções 13 5 Considerações Finais 15 Referências 16 1 Introdução Atualmente, máquinas como computadores e celulares são muito comuns ao redor do mundo todo. Essas máquinas citadas possuem diversos componentes internos, sendo um deles o processador. Para podermos observar mais de perto o funcionamento de um processador, a disciplina Laboratório de Sistemas Computacionais: Arquitetura e Organização de Computadores é essencial, pois aqui projetaremos um processador do zero, na linguagem de descrição de hardware Verilog, baseado na arquitetura MIPS. 2 Objetivos 2.1 Geral Implementar um sistema computacional em Verilog, composto por processador, memória e interface de comunicação. 2.2 Específicos · Definir o conjunto de instruções; · Fazer o mapeamento das instruções; · Determinar o caminho de dados. 3 Fundamentação Teórica 3.1 Verilog Verilog é uma linguagem de descrição de hardware, criada por Prabhu Goel e Phil Moorby, para a empresa Automated Integrated Design Systems. É usada para implementar projetos a nível de circuito e além disso fornece maior rapidez e facilidade em sua implementação em relação à projetos em esquemático. É possível descarregar os códigos feitos em Verilog em FPGAs, por meio de suas placas de desenvolvimento com base em circuitos integrados. 3.2 FPGAs Um FPGA (field-programmable gate array) é um dispositivo lógico que suporta a implementação de circuitos digitais e é configurado de acordo com seu usuário. Suas duas principais fabricantes, atualmente, são a Altera e a Xilinx. No caso desse projeto será utilizado o kit FPGA DE2-115. 3.3 Arquitetura MIPS A arquitetura MIPS (Microprocessor Without Interlocked PipelineStages) foi desenvolvida por uma empresa chamada MIPS Technologies. Essa arquitetura utiliza apenas registradores na execução de suas instruções, o que facilita sua manipulação. A arquitetura MIPS possui o tamanho das instruções fixos, outra característica que facilita em seu uso. Nesse projeto serão usadas instruções com tamanho fixo de 32 bits. O MIPS possui três formatos de instruções, sendo eles instruções do tipo R, I e J, os quais são apresentados abaixo: R OpCode RS RT RD Desloc Função 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits I OpCode RS RD Const 6 bits 5 bits 5 bits 16 bits J OpCode Endereço 6 bits 26 bits Tabela 1. Formato das instruções do MIPS Fonte: Autor. Nas instruções do tipo R os registradores RS e RT são reservados para os operandos fontes da instrução e o registrador RD é reservado para armazenar o resultado da instrução. O campo OpCode diferencia qual instrução será realizada e o campo Função será definido como 0, pois nesse projeto, por enquanto, há um número reduzido de instruções. Para instruções do tipo I há um campo de 16 bits para um valor imediato e para as do tipo J há um campo de 26 bits reservado para o endereço. 3.4 Caminho de Dados O caminho dos dados é o caminho que uma instrução percorre até o termino de sua execução. O caminho de dados numa arquitetura MIPS será descrito abaixo: Figura 1. Caminho de dados no MIPS Fonte: Referência (1) O PC (Program Counter) armazena e envia a instrução, ele é responsável por enviar a instrução para a memória de instruções e para o cálculo da próxima instrução. Na Memória de Instruções é feita a decodificação da instrução, isto é, ela determina qual instrução será executada e a manda para as próximas unidades funcionais. Em seguida, temos o campo dos Registradores, que é onde é feita a identificação dos registradores fontes, isto é, aqueles que terão seus dados lidos e o registrador destino, após isso, vamos para a ULA (Unidade Lógica e Aritmética), que é onde as operações indicas pela instrução são de fato realizadas. Temos também o campo do Sinal Estendido, que é responsável por transformar o imediato de 16 bits num sinal de 32 bits, para o caso das instruções do tipo I. A unidade funcional Memória de Dados é armazenado o resultado da ULA em casos de instruções SW (StoreWord), do tipo I. Para as demais instruções, os resultados são armazenados no campo dos Registradores. 4 Desenvolvimento 4.1 Conjunto de Instruções O conjunto de instruções é definido de acordo com a tabela a seguir: Tabela 2. Conjunto de instruções Instrução Formato Operação realizada Operações aritméticas ADD [RD, RS, RT] R RD <= RS + RT SUB [RD, RS, RT] R RD <= RS - RT ADDI [RD, RS, Const] I RD <= RS + Const SUBI [RD, RS, Const] I RD <= RS - Const MULT [RS, RT] R LO <= ((RS * RT) <<32 ) >>32; HI <= (RS * RT) >>32 DIV [RS, RT] R LO <= RS / RT; HI = RS % RT Operações lógicas OR [RD, RS, RT] R RD <= RS or RT AND [RD, RS, RT] R RD <= RS and RT NOT [RD, RS] I RD <= not (RS) Transferência de dados LW [RD, END] I RD <= Mem_dados[END] SW [RD, END] I Mem_dados[END] <= RD Salto condicional BEQ [RS, RT, Const] I PC <= Const, se RS = RT BNQ [RS, RT, Const] I PC <= Const, se RS != RT Salto incondicional J [RS] J PC <= RS JI [Const] J PC <= Const Fonte: Autor. Por enquanto o projeto possui um número bem reduzido de instruções, mas isso pode ser alterado no decorrer do tempo. 4.2 Mapeamento das Instruções Após definir o conjunto de instruções foi feito o mapeamento das mesmas, de modo a definir um OpCode diferente para a cada uma, para que elas sejam diferenciadas na Memória de Instruções. O mapeamento é descrito na tabela abaixo: Tabela 3. Opcode usado para cada instrução OpCode Instrução OpCode Instrução 000000 ADD 001000 NOT 000001 SUB 001001 LW 000010 ADDI 001010 SW 000011 SUBI 001011 BEQ 000100 MULT 001100 BNQ 000101 DIV 001101 J 000110 OR 001111 JI 000111 AND Fonte: Autor. 5 Considerações Finais Ao determinar o conjunto de instruções e fazer seu mapeamento minha intenção é de facilitar a futura implementação do projeto, porém podem ocorrer imprevistos e pode ser necessárias algumas mudanças, seja no conjunto de instruções ou no caminho do dados. A implementação seguirá a ordem descrita na seção do caminho de dados, focando inicialmente na execução das instruções do tipo R, depois nas do tipo I e, por fim as do tipo J, de modo que as primeiras unidades funcionais a serem implementadas serão o PC, a Memória de Instruções, os Registradores e a ULA, nessa ordem. Referências 1. < https://stackoverflow.com/questions/33334521/extending-mips-datapath-to-implement-sll-and-srl> Fonte da Figura 1; 2. <https://www.embarcados.com.br/primeira-instrucao-mips/>; 3. <https://www.embarcados.com.br/arquitetura-de-conjunto-de-instrucoes-mips/>;4. Trabalho de conclusão de curso do aluno Helder Celso Romero dos Santos disponibilizado no Moodle da disciplina.
Compartilhar