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