curso de engenharia de computação …lyceumonline.usf.edu.br/salavirtual/documentos/1071.pdf · 1...

35
Curso de Engenharia de Computação DESENVOLVIMENTO DE UM PROCESSADOR RISC EM VHDL José Carlos Pereira Itatiba – São Paulo – Brasil Dezembro de 2006

Upload: lamhanh

Post on 15-Feb-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

Curso de Engenharia de Computação

DESENVOLVIMENTO DE UM PROCESSADOR RISC EM VHDL

José Carlos Pereira

Itatiba – São Paulo – Brasil

Dezembro de 2006

ii

Curso de Engenharia de Computação

DESENVOLVIMENTO DE UM PROCESSADOR RISC EM VHDL

José Carlos Pereira

Monografia apresentada à disciplina Trabalho de Conclusão de Curso, do Curso de Engenharia de Computação da Universidade São Francisco, sob a orientação do Prof. Dr. Thales Coelho Borges Lima, como exigência parcial para conclusão do curso de graduação. Orientador: Prof. Dr. Thales Coelho Borges Lima

Itatiba – São Paulo – Brasil

Dezembro de 2006

iii

DESENVOLVIMENTO DE UM PROCESSADOR RISC EM VHDL

José Carlos Pereira

Monografia defendida e aprovada em 11 de Dezembro de 2006 pela Banca

Examinadora assim constituída:

Prof Dr Thales Coelho Borges Lima (Orientador)

USF – Universidade São Francisco – Itatiba – SP.

Prof Ms Claudio Maximiliano Zaina (Membro Interno)

USF – Universidade São Francisco – Itatiba – SP.

Prof Ms Ana Paula da Costa Cardoso (Membro Interno)

USF – Universidade São Francisco – Itatiba – SP.

iv

A meus pais José e Maria, sem os quais não

chegaria até aqui.

v

.Agradecimentos

Agradeço primeiramente ao Professor Thales C. B. Lima, meu orientador, que acreditou em

mim e incentivou-me para a conclusão deste trabalho, face aos inúmeros percalços do trajeto.

Agradeço também ao Professor Alencar de Melo Júnior, coordenador do curso, que sempre

me ajudou nas inúmeras questões acadêmicas.

Agradeço também todos os professores que me possibilitaram ter um crescimento acadêmico,

profissional e pessoal.

Eu agradeço fraternalmente a todos.

vi

Sumário

Lista de Siglas .........................................................................................................................vii

Lista de Figuras .....................................................................................................................viii

Lista de Tabelas ....................................................................................................................... ix

Resumo ...................................................................................................................................... x

Abstract ..................................................................................................................................... x

1 Introdução .......................................................................................................................... 1

2 Objetivo............................................................................................................................... 3

3 arquitetura risc e os processadores atuais....................................................................... 4 3.1 A arquitetura RISC........................................................................................................ 4 3.2 Os processadores atuais................................................................................................. 5

4 metodologia......................................................................................................................... 6 4.1 Estudo da linguagem VHDL......................................................................................... 6 4.2 A ferramenta de desenvolvimento Quartus II ............................................................... 7 4.3 Estudo sobre o processador MIPS................................................................................. 9

5 Desenvolvimento do processador MIPS em linguagem VHDL................................... 13 5.1 Módulos do processador MIPS ................................................................................... 13

5.1.1 Módulo unidade de controle.................................................................................13 5.1.2 Módulo busca da instrução...................................................................................14 5.1.3 Módulo decodificação ..........................................................................................15 5.1.4 Módulo de execução.............................................................................................15 5.1.5 Módulo memória de dados ...................................................................................16 5.1.6 Módulo integrador ................................................................................................17

6 testes .................................................................................................................................. 18 6.1 Teste de compilação.................................................................................................... 18 6.2 Simulação .................................................................................................................... 19

6.2.1 Definindo as instruções ........................................................................................19 6.2.2 Inicialização das memórias...................................................................................21

7 CONCLUSÕES................................................................................................................ 24 7.1 Contribuições .............................................................................................................. 24 7.2 Extensões..................................................................................................................... 24

Referências Bibliográficas ..................................................................................................... 25

vii

Lista de Siglas

CISC Complex Instruction Set Computer

CPU Central Processing Unit

CPLD Complex Programmable Logic Device

FPGA Field Programmable Gate Array

IEEE Institute of Electrical and Electronics Engineers

MIF Memory Initialization File

MIPS Microprocessor without interlocking pipe stages

PC Program Counter

PC Personal Computer

RISC Reduced Instruction Set Computer

ULA Unidade Lógica e Aritmética

VHDL Very-High-Speed Integrated Circuit Hardware Description

Language

viii

Lista de Figuras

Figura 4.2-1 - Tela principal da ferramenta Quartus II .................................................. 7

Figura 4.2-2 - Tela para seleção do arquivo de projeto .................................................... 8

Figura 4.2-3 - Desenvolvendo o projeto em VHDL no editor de texto ............................ 8

Figura 4.3-1 - Diagrama de blocos do processador MIPS com pipeline ........................ 12

Figura 5.1-1 - Arquivo para inicialização da memória de instrução ............................. 14

Figura 5.1-2 - Arquivo para inicialização da memória de dados ................................... 16

Figura 5.1-3 - Interligação com todos os módulos do processador MIPS ..................... 17

Figura 6.1-1 - Ferramenta de compilação do QuartusII ................................................ 18

Figura 6.2.2-1 - Inicialização da memória de dados ........................................................ 22

Figura 6.2.2-2 - Inicialização da memória de instruções ................................................. 23

ix

Lista de Tabelas

Tabela 4.3-1 - Formato das instruções do MIPS de 32 bits ......................................... 9

Tabela 4.3-2 - Conjunto de intsruções do MIPS 32 bits ............................................. 10

Tabela 6.2.1-1 – Conversão da instrução Lw $2, 00 .................................................... 20

Tabela 6.2.1-2 – Conversão da instrução Lw $3, 01 .................................................... 20

Tabela 6.2.1-3 – Conversão da instrução Add $1, $2, $3 ............................................. 21

Tabela 6.2.1-4 – Conversão da instrução Sw $1, 03 ...................................................... 21

x

Resumo

Esta monografia tem como objetivo o aprendizado, o desenvolvimento e prototipação de

processadores utilizando dispositivos lógicos programáveis, para a implementação de um

processador RISC (Reduced Instruction Set Computer), utilizando a linguagem VHDL (Very-

High-Speed Integrated Circuit Hardware Description Language). O estudo envolve o

conhecimento da arquitetura RISC e da linguagem VHDL para o desenvolvimento do

processador.

PALAVRAS-CHAVE: PROCESSADOR, RISC, VHDL

Abstract

This monograph has as objective the learning, the development and prototyping of processors

using programmable logical devices, for the implementation of a processor RISC (Reduced

Instruction Set Computer), using language VHDL (Very-High-Speed Integrated Circuit

Hardware Description Language). The study it involves the knowledge of architecture RISC

and language VHDL for the development of the processor.

KEY WORDS: PROCESSOR, VHDL, RISC

1

1 INTRODUÇÃO

O processador é a unidade principal de um sistema computacional, sendo responsável

pelo controle do fluxo dos programas, execução das operações lógicas e aritméticas, acesso à

memória e requisição aos dispositivos periféricos. Também é conhecido como CPU, (Central

Processing Unit).

A idéia original do projeto RISC, de produzir máquinas com um conjunto reduzido de

instruções é, em última análise, uma volta ao início da computação, pois os primeiros

computadores digitais tinham poucas instruções.

A característica de um processador RISC é ter um conjunto reduzido e simples de

instruções, o que simplifica o processamento; utilizam registradores para armazenar dados

temporariamente, que serão utilizados nas operações realizadas pelo processador; as

instruções são basicamente do tipo Load e Store, de desvio e de operações lógicas e

aritméticas e por fim, o emprego de pipelining, um dos fatores que permite aos processadores

RISC atingir seu objetivo de completar a execução de uma instrução a cada ciclo de relógio.

O projeto de um processador resume-se em:

• Definir o conjunto de instruções, ou seja, o formato e o tamanho das intruções.

• Implementar os componentes do processador em função das instruções já

definidas, como por exemplo, a unidade de controle, unidade lógica e aritmética e

os registradores.

A partir dessas premissas, é possível utilizar a linguagem VHDL, para simular o

funcionamento de um processador RISC.

Este trabalho encontra-se organizado da seguinte forma: no capítulo 2 são apresentados

os objetivos relacionados a esta dissertação. No capítulo 3 são apresentadas as características

da arquitetura RISC e dos processadores utilizados atualmente. O capítulo 4 aborda toda a

metodologia utilizada no desenvolvimento do processador RISC, os estudos sobre a

linguagem VHDL, a ferramenta Quartus® II utilizada no projeto e os estudos sobre o

2

processador MIPS1. No capítulo 5 são apresentadas as funcionalidades de cada módulo que

constitui o processador MIPS. Todos os módulos foram desenvolvidos utilizando a linguagem

VHDL. No capítulo 6 são apresentados os testes realizados e finalmente no capítulo 7 são

apresentadas as conclusões deste trabalho.

1 MIPS é um procesador RISC desenvolvido pela companhia MIPS Computer Systems [2].

3

2 OBJETIVO

A presente dissertação tem como objetivo realizar uma pesquisa para implementar um

processador RISC utilizando a linguagem VHDL (Very-High-Speed Integrated Circuit

Hardware Description Language).

Para o desenvolvimento do processador em linguagem VHDL foi utilizado a ferramenta

Quartus II®, da Altera2.

Este projeto foi baseado no MIPS (Microprocessor without interlocking pipe stages), que

é uma arquitetura de processadores RISC [2].

2 Altera, de Altera Corporation é um fabricante de dispositivos lógicos programáveis, desenvolvedor da

ferramenta de síntese e simulação denominada Quartus II.

4

3 ARQUITETURA RISC E OS PROCESSADORES ATUAIS

Este capítulo tem como objetivo apresentar as características da arquitetura RISC e dos

processadores utilizados atualmente.

3.1 A arquitetura RISC

A arquitetura RISC é constituída por um conjunto reduzido de instruções simples que

são executadas diretamente pelo hardware, sem a intervenção de um microcódigo, ou seja, as

instruções são executadas em apenas uma microinstrução [1].

Existe um conjunto de características que permite uma definição da arquitetura básica

RISC:

• O centro de todo computador é o datapath (ULA (Unidade Lógica e Aritmética),

registradores e os barramentos que fazem sua conexão). Uma das maiores

características das máquinas RISC é utilizar apenas uma instrução por ciclo de relógio;

• Projeto carrega/armazena, ou seja, as referências à memória são feitas por instruções

especiais de load e store;

• Inexistência de microcódigo, já que as instruções são executadas diretamente no

hardware;

• Instruções de formato fixo, facilitando a decodificação;

• Conjunto reduzido de instruções, facilitando a organização da unidade de controle e

tornando o processamento das instruções mais simples e rápido;

• Utilização de pipeline, uma técnica de dividir a execução de uma instrução em

estágios, permitindo a execução simultânea de múltiplas instruções. A medida que um

estágio é concluído, a instrução segue para o próximo e a instrução seguinte vai para

aquele estágio. Como as instruções RISC são de tamanho fixo, elas levam um ciclo

para completar cada estágio de pipeline. Por exemplo, se uma instrução puder ser

dividida em 4 fases, 4 instruções podem ser executadas simultaneamente;

5

• Utilização de conjuntos de registradores, para o armazenamento temporário de dados,

que serão utilizados em operações.

O principal objetivo de uma máquina RISC é executar uma instrução por ciclo de clock.

Como o acesso à memória utiliza mais ciclos, a solução foi criar um grande número de

registradores. Este número de registradores tem grande impacto na performance das máquinas

RISC, que só são possíveis devido sua simplicidade de projeto e a inexistência de

microcódigo, conforme [1] e [2].

3.2 Os processadores atuais

Atualmente, existem processadores híbridos que são essencialmente processadores

CISC, mas incorporam muitos recursos encontrados nos processadores RISC e vice-versa.

Não existe praticamente nenhum processador atualmente que siga estritamente uma das duas

arquiteturas. Tanto processadores da família x863, quanto processadores supostamente RISC,

misturam características das duas arquiteturas, por simples questão de performance [1].

A vantagem de uma arquitetura CISC (Complex Instruction Set Computer) é que nesta

já existem muitas das instruções armazenadas no próprio processador, o que facilita o trabalho

de programação, que já dispõe de praticamente todas as instruções que serão usadas em seus

programas. No caso de um chip estritamente RISC, a programação seria um pouco mais

complexa, pois como disporia apenas de instruções simples, teria sempre que combinar várias

instruções sempre que precisasse executar alguma tarefa mais complexa [2].

Os processadores atuais são uma combinação das duas arquiteturas. Internamente, o

processador processa apenas instruções simples. Estas instruções internas variam de

processador para processador, que se adapta ao projeto do chip. Sobre estas instruções

internas, tem-se um circuito decodificador, que converte as instruções complexas utilizadas

pelos programas em várias instruções simples, que podem ser entendidas pelo processador.

Estas instruções complexas, são iguais em todos os processadores usados em micros PC

(Personal Computer) [8].

3 x86 é uma arquitetura de processadores baseados na série x86 da Intel, como por exemplo, CPU 286, 386 e o

486.

6

4 METODOLOGIA

Este capítulo tem como objetivo detalhar toda a metodologia envolvida no projeto, os

estudos sobre a linguagem VHDL, os estudos sobre o processador MIPS e a ferramenta

utilizada na implementação do processador MIPS.

4.1 Estudo da linguagem VHDL

De acordo com [3] e [4], VHDL é uma linguagem padronizada pelo IEEE (Institute of

Electrical and Electronics Engineers) para descrever componentes digitais, permitindo a

transferência de projetos para qualquer tecnologia em construção de hardware existente ou

que ainda será desenvolvida.

A linguagem VHDL oferece uma variedade de construções que permitem modelar o

hardware em um elevado nível de abstração. É uma linguagem concorrente, ou seja, os

comandos envolvidos na ocorrência de um evento são executados simultaneamente, assim

como os elementos de um sistema digital executam as suas tarefas em conjunto [4].

A importância da utilização de linguagens de descrição de hardware se faz necessária em

diversos aspectos do projeto:

• Documentação do sistema: a própria descrição do sistema já é uma forma de

documentação para os projetistas em VHDL;

• Simulação em diversos níveis: desde a sua especificação funcional e temporal o

circuito pode ser simulado para verificar seu correto funcionamento;

• Simplifica a migração tecnológica: o sistema pode ser facilmente sintetizado em outras

tecnologias, desde que se disponha das ferramentas de baixo nível correspondentes;

• Reutilização de recursos: a construção de módulos, permite reutilizar parte de projetos

já realizados.

7

4.2 A ferramenta de desenvolvimento Quartus II

Conforme [5], a ferramenta Quartus® II version 6, desenvolvida pela Altera®, é um

ambiente para o desenvolvimento e síntese de projetos de FPGA (Field Programmable Gate

Array) e de CPLD (Complex Programmable Logic Device). O Quartus II permite o

desenvolvimento de sistemas digitais utilizando a interface gráfica ou o editor de texto, que

possibilita o uso da linguagem VHDL.

A figura 4.2-1 apresenta a tela principal do Quartus II.

Figura 4.2-1 - Tela principal da ferramenta Quartus II.

8

Após inicializar o Quartus II e visualizar a tela principal, conforme mostrado na figura

4.2-1, é possível selecionar uma das opções apresentadas na ferramenta, para o início do

desenvolvimento do projeto. Foi utilizada a opção VHDL File, conforme apresentada na

figura 4.2-2, que é o editor de texto utilizado no desenvolvimento do processador MIPS.

Figura 4.2-2 - Tela para seleção do arquivo de projeto.

A figura 4.2-3 apresenta o VHDL File, editor de texto usado no desenvolvimento do

projeto.

Figura 4.2-3 - Desenvolvendo o projeto em VHDL no editor de texto.

9

4.3 Estudo sobre o processador MIPS

MIPS é um exemplo de um moderno computador com conjunto reduzido de instruções

desenvolvido na década de 80. Estes processadores trabalham com um comprimento fixo de

instrução de 32 bits e possuem 32 registradores de 32 bits. O tamanho da palavra de memória

é de 32 bits [6].

Os processadores MIPS trabalham com três formatos de instruções, conforme [6]:

• Instruções I-Format: somente para LOAD e STORE, ou seja, para instruções

referentes aos operandos na memória;

• Instruções R-Format: executa instruções como ADD, AND, OR e operações

realizadas com os dados nos registradores. Estes requerem dois registradores de

operandos, Rs e Rt. Os resultados das operações são armazenados em um terceiro

registrador, Rd, mostrado na tabela 4.3-1;

• Instruções J-Format incluem instruções de desvio.

A tabela 4.3-1, apresenta o formato das instruções de um processador MIPS de 32 bits,

conforme [6] e [7]

Tabela 4.3-1 - Formato das instruções do MIPS de 32 bits.

Tamanho do campo 6 bits 5 bits 5 bits 5 bits 5 bits 6 bitsFormato R código de operação Rs Rt Rd deslocamento funçãoFormato I código de operação Rs RtFormato J código de operação

endereço / imediatoendereço-alvo

10

A tabela 4.3-2 apresenta o conjunto de instruções do processador MIPS, como descrito

em [6] e [7].

Tabela 4.3-2 – Conjunto de instruções do MIPS 32 bits.

O processador MIPS busca, decodifica e executa uma instrução em um ciclo de clock.

A partir do formato das instruções, como mostrado na tabela 4.3-1, o PC (Program Counter) é

utilizado para manter atualizado o endereço de memória da próxima instrução a ser executada.

A memória tem a função de armazenar os dados e as instruções. Esta consiste em uma coleção

de registradores numerados consecutivamente, onde cada um armazena um byte, quatro são

necessários para armazenar 32 bits ou 4 bytes [6].

O código de operação das instruções é enviado para a unidade de controle e o código

da função é enviado para a unidade lógica e aritmética. A unidade de controle é responsável

pelo controle de todas as operações dos componentes de um computador, fornecendo sinais de

temporização e sinais de controle, que são necessários para a execução das instruções.

Na ULA são realizadas as operações aritméticas e lógicas com os dados. O tipo de

operação a ser executado é determinado por sinais vindos da unidade de controle. Os dados a

serem operados poderão vir da memória ou dos dispositivos de entrada. Os resultados obtidos

poderão ser enviados para a memória ou para dispositivos de saída de dados [6].

Mnemônico Formato Campo código de operação

Campo função Instrução

Add R 0 32 Soma (com overflow)Addi I 8 - Soma imediata (com overflow)Addu R 0 33 Soma (sem overflow)Sub R 0 34 Subtração (com overflow)Subu R 0 35 Subtração (sem overflow)And R 0 36 Lógica ANDOr R 0 37 Lógica ORSll R 0 0 Deslocamento Lógico a EsquerdaSrl R 0 2 Deslocamento Lógico a DireitaSlt R 0 42 Setar se menor queLui I 15 - Carga imediata da parte superiorLw I 35 - Carga de palavraSw I 43 - Armazenamento de palavraBeq I 4 - Desvio se igualBne I 5 - Desvio se diferente

J J 2 - Desvio incondicionalJal J 3 - Desvio incondicional com ligaçãoJr R 0 8 Desvio incondicional para conteúdo de um registrador

11

Os registradores de instruções são campos de endereços, utilizados para endereçar os

dois barramentos do arquivo de registradores. As entradas do arquivo de registradores

permitem executar duas leituras independentes e uma escrita em um ciclo de clock. Este

implementa a decodificação da operação [7].

No processador MIPS há duas saídas do arquivo de registradores que alimentam com

dados as entradas da ULA. A unidade de controle gera sinais que são enviados a ULA, para a

execução das operações. Em seguida, instruções Load e Store são executadas para a leitura ou

escrita de dados na memória. Instruções R-format desviam dados da memória usando um

multiplexador. Por último, instruções R-format e Load escrevem de volta um novo valor no

arquivo de registradores.

O multiplexador é requerido para operações condicionais. Após todas as saídas

estarem estabilizadas, o próximo clock armazenará o novo valor no PC e o processo se

repetirá para a próxima instrução.

As instruções RISC são executadas mais rapidamente com a implementação de

pipeline. Com pipeline, a busca, decodificação, execução, memória de dados e arquivo de

registradores, realizam todo o trabalho em paralelo. Em um simples ciclo de clock, diferentes

instruções estão presentes no pipeline [6].

12

A figura 4.3-1 mostra o diagrama de blocos do processador MIPS com a

implementação de pipeline.

Figura 4.3-1 - Diagrama de blocos do processador MIPS com pipeline. Retirada de HENNESSY, John L.; PATTERSON, David A. Organização e Projeto de

Computadores: A interface Hardware/Software.

13

5 DESENVOLVIMENTO DO PROCESSADOR MIPS EM LINGUAGEM VHDL

Este capítulo apresenta todos os módulos que constituem o processador MIPS e a

descrição funcional de cada módulo, com base em [7]. Estes módulos são:

• Módulo unidade de controle;

• Módulo busca da instrução;

• Módulo decodificação;

• Módulo de execução;

• Módulo memória de dados;

• Módulo integrador.

Inicialmente, todos os módulos foram implementados separadamente utilizando a

linguagem VHDL. Em seguida, foram integrados com o objetivo de simular o funcionamento

de um processador MIPS4. O recurso requerido para esta implementação foi o editor de texto

da ferramenta Quartus II®, da Altera.

5.1 Módulos do processador MIPS

Nesta etapa é apresentada a descrição funcional de cada módulo do processador MIPS,

implementado em VHDL.

5.1.1 Módulo unidade de controle

Verifica o código de operação da instrução e gera os sinais de controle que serão

utilizados pelos outros módulos do processador.

4 Neste projeto não foi desenvolvido o módulo responsável pela simulação de pipeline, devido a

complexidade e as grandes alterações a serem feitas para o seu funcionamento.

14

5.1.2 Módulo busca da instrução

É constituído pela memória de instruções, pelo registrador PC e o hardware necessário

para computar o endereço da próxima instrução a ser executada.

A memória de instrução é inicializada utilizando um arquivo MIF (Memory

Initialization File). Este arquivo foi criado utilizando a ferramenta Quartus II sendo

responsável por armazenar as instruções que serão executadas. Sem esta inicialização, não é

possível simular o funcionamento do processador MIPS.

Conforme apresentado na figura 5.1-1, cada linha do arquivo representa os endereços

de memória, onde as instruções são armazenadas.

Figura 5.1-1 - Arquivo para inicialização da memória de instrução.

15

5.1.3 Módulo decodificação

Contém o arquivo de registradores. O processador MIPS, contém 32 registradores de

32 bits. Porém, para uma simulação mais rápida, o arquivo de registradores foi reduzido para

8 registradores de 8 bits. Os registradores são inicializados durante o reset. Uma estrutura em

VHDL é utilizada para inicializar os registradores durante o reset.

5.1.4 Módulo de execução

Responsável por simular os dados que serão manipulados pela ULA, a ULA

propriamente dita é um somador, responsável por incrementar o registrador PC e calcular o

endereço para operações de desvio.

Multiplexadores foram implementados para simular a seleção de diferentes dados que

serão enviados para a ULA. Para uma simulação mais rápida, a largura do barramento de

dados da ULA foi limitada em 8 bits.

16

5.1.5 Módulo memória de dados

Módulo responsável por simular a memória de dados. A memória de dados também

foi limitada a 256 posições de memória de 8 bits para facilitar a simulação.

A memória de dados é inicializada utilizando um arquivo MIF. Este arquivo é o

responsável por armazenar valores que serão manipulados durante a execução das instruções

contidas na memória de instruções.

Conforme mostrado na figura 5.1-2, cada linha do arquivo representa os endereços da

memória de dados, onde os dados são armazenados.

Figura 5.1-1 - Arquivo para inicialização da memória de dados.

17

5.1.6 Módulo integrador

Consiste em uma estrutura em VHDL, responsável pela integração dos outros cinco

módulos do processador MIPS. Este módulo foi estruturado de forma a realizar uma

interligação com os outros módulos e permitir a simulação do processador MIPS. Os módulos

foram interligados na seguinte seqüência:

1- Módulo busca da instrução;

2- Módulo decodificação;

3- Módulo unidade de controle;

4- Módulo de execução;

5- Módulo memória de dados.

A figura 5.1-3 apresenta o módulo integrador com as interligações com os demais

módulos.

Figura 5.1-3 - Interligação com todos os módulos do processador MIPS.

18

6 TESTES

Nesta etapa foram realizados os testes dos módulos desenvolvidos em linguagem VHDL.

Todos os testes foram realizados utilizando a ferramenta Quartus II®, da Altera.

Esses testes consistiram na compilação do código fonte de cada módulo do processador

MIPS.

6.1 Teste de compilação

Foram realizados inicialmente, os testes de cada módulo separadamente. O módulo

integrador foi o último a ser testado, pois este depende do funcionamento dos outros módulos.

Na figura 6.1-1, é mostrada a ferramenta de compilação do QuartusII.

Figura 6.1-1 - Ferramenta de compilação do QuartusII.

A ferramenta de compilação mostrada na figura 6.1-1 foi a mesma utilizada para os

testes de todos os módulos desenvolvidos.

19

6.2 Simulação

Para a simulação, foi necessário inicialmente, definir quais as instruções seriam

executadas pelo processador, carregar a memória de dados com os valores a serem

manipulados pelas instruções e em seguida inicializar a memória de instruções.

6.2.1 Definindo as instruções

Inicialmente, foram definidas as instruções que seriam executadas pelo processador.

Como exemplo, foram realizadas simulações com as seguintes instruções:

• Lw $2, 00 – carrega o conteúdo do endereço 00 da memória de dados no registrador

$2.

• Lw $3, 01 – carrega o conteúdo do endereço 01 da memória de dados no registrador

$3.

• Add $1, $2, $3 – realiza a soma do conteúdo dos registradores $2 e $3 e o resultado é

armazenado no regitrador $1.

• Sw $1, 03 – armazena no endereço 03 da memória de dados, o conteúdo do registrador

$1.

Para inserir as instruções mencionadas acima na memória de instruções, foi realizada,

inicialmente, a conversão das mesmas para o sistema binário. Foram utilizadas as informações

das tabelas 4.3-1 e 4.3-2 para as conversões. Em seguida para uma melhor visualização, foi

realizada utilizando a ferramenta Quartus II, a conversão para o sistema hexadecimal.

A instrução Lw $2, 00 é do formato I, conforme mostrado nas tabelas 4.3-1 e 4.3-2.

Na tabela 6.2.1-1 é apresentado o formato da instrução e a conversão para binário.

20

Tabela 6.2.1-1 – Conversão da instrução Lw $2, 00.

Código de operação Registrador rs Registrador rt Endereço/imediato

6 bits 5 bits 5 bits 16 bits

Lw $2 não utilizado 00

100011 00010 00000 0000000000000000

O numeral em binário, da tabela 6.2.1-1, foi inserido na memória de instrução para

posterior simulação. Todo esse procedimento foi o mesmo para as demais instruções.

A instrução Lw $3, 01 mostrada na tabela 6.2.1-2, apresenta o formato da instrução e a

conversão para binário.

Tabela 6.2.1-2 – Conversão da instrução Lw $3, 01.

Código de operação Registrador rs Registrador rt Endereço/imediato

6 bits 5 bits 5 bits 16 bits

Lw $3 não utilizado 00

100011 00011 00000 0000000000000001

A instrução Add $1, $2, $3 é do formato R, conforme apresentado nas tabelas 4.3-1 e

4.3-2. A tabela 6.2.1-3, apresenta o formato da instrução e a conversão para binário.

21

Tabela 6.2.1-3 – Conversão da instrução Add $1, $2, $3.

Código de operação Registrador

rs

Registrador

rt

Registrador

rd

Deslocamento Função

6 bits 5 bits 5 bits 5 bits 5 bits 6 bits

Add $1 $2 $3 não utilizado 32

000000 00001 00010 00011 00000 100000

A instrução Sw $1, 03 é do formato I, conforme apresentado nas tabelas 4.3-1 e 4.3-2.

A tabela 6.2.1-4, apresenta o formato da instrução e a conversão para binário.

Tabela 6.2.1-4 – Conversão da instrução Sw $1, 03.

Código de operação Registrador rs Registrador rt Endereço/imediato

6 bits 5 bits 5 bits 16 bits

Sw $1 não utilizado 03

101011 00001 00000 0000000000000011

Concluído o processo de conversão, as instruções em binário foram inseridas na

memória de instruções. Estas instruções utilizam os valores armazenados na memória de

dados para realizar as operações.

6.2.2 Inicialização das memórias

Para a simulação do processador, foi criado através da ferramenta Quartus II, um

arquivo MIF, que simulou a memória de dados, onde foram inseridos os dados utilizados pela

memória de instrução, para a inicialização do processamento. A figura 6.2.2-1, apresenta a

inicialização da memória de dados.

22

Figura 6.2.2-1 - Inicialização da memória de dados.

Os dados foram inseridos no sistema binário, nos endereços 00 e 01. Em seguida foram

convertidos para o sistema hexadecimal através da própria ferramenta. A figura 6.2.2-1

apresenta os dados no sistema hexadecimal.

Com os dados inseridos na memória de dados, foi criado um arquivo MIF para simular

a memória de instrução, onde foram inseridas as instruções, para a inicialização do

processamento. A figura 6.2.2-2 apresenta a inicialização da memória de instruções.

23

Figura 6.2.2-2 - Inicialização da memória de instruções.

As instruções foram inseridas no sistema binário nos endereços 00 até 03 e em seguida

convertidas para o sistema hexadecimal. A figura 6.2.2-2 mostra as instruções no sistema

hexadecimal. As instruções utilizam os dados da memória, realizam as operações e finalmente

os resultados são armazenados novamente na memória de dados.

24

7 CONCLUSÕES

A pesquisa desenvolvida ao longo deste trabalho buscou demonstrar, de uma maneira

sucinta, as características da arquitetura RISC, como por exemplo, o conjunto de instruções, o

ciclo de busca, a decoficação e execução das instruções.

Neste trabalho de conclusão de curso também foram apresentadas as características do

processador MIPS e os estudos relacionados a linguagem VHDL.

O principal objetivo neste trabalho foi implementar, utilizando a linguagem VHDL, o

processador MIPS. A partir da implementação, foi possível simular o funcionamento deste

processador, o que contribuiu para um melhor entendimento da arquitetura de computadores.

7.1 Contribuições

Resumidamente, as principais contribuições gerais deste estudo, são o entendimento do

processador MIPS e conseqüentemente da arquitetura RISC, o conhecimento da linguagem

VHDL e a sua utilização para o desenvolvimento e simulação do processador MIPS.

7.2 Extensões

Este trabalho pode ser continuado através da implementação do módulo pipeline, já que

o pipeline é um dos principais fatores que permite aos processadores MIPS atingir seu

objetivo de completar a execução de uma instrução a cada ciclo de clock.

25

Referências Bibliográficas

[1] MONTEIRO, Mario Antonio. Introdução a Organização de Computadores. 3 ed. Rio de Janeiro: LTC, 1996. [2] TANENBAUM, Andrew S. Organização Estruturada de Computadores. 3 ed. Rio de Janeiro: Prentice-Hall, 1992. [3] D´AMORE, Roberto. VHDL: Descrição e Síntese de Circuitos Digitais. Rio de Janeiro:LTC, 2005. [4] ORDONES, E. D. M. et al. Projeto, Desempenho e Aplicações de Sistemas Digitais em Circuitos Programáveis (FPGAs). São Paulo: Bless Gráfica e Editora , 1999. [5] ALTERA Corporation. Quartus II Version 6.0 Handbook, Volumes 1 through 5. URL: http://www.altera.com/literature/hb/qts/quartusii_handbook.pdf. Recuperado em 12/04/2006. [6] HAMBLEN, James O.; FURNAN, Michael D. Rapid Prototyping of Digital Systems: A Tutorial Approach. 2nd ed. Massachusetts: Kluwer Academic Publishers, 2002.

[7] HENNESSY, John L.; PATTERSON, David A. Organização e Projeto de Computadores: A interface Hardware/Software. 2 ed. Rio de Janeiro: LTC, 2000. [8] TANENBAUM, Andrew S. Organização Estruturada de Computadores. 4 ed. Rio de Janeiro: LTC, 2001.