Você está na página 1de 16

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:

Tabela 1. Formato das instruções do MIPS

OpCode RS RT RD Desloc Função


R 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits

OpCode RS RD Const
I 6 bits 5 bits 5 bits 16 bits

OpCode Endereço
J 6 bits 26 bits

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, I RD <= RS + Const


Const]

SUBI [RD, RS, I RD <= RS - Const


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, I PC <= Const, se RS = RT


Const]

BNQ [RS, RT, I PC <= Const, se RS != RT


Const]

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.

Você também pode gostar