relatório - processador - dener brandão, guilherme passos e irving martins

13
UNIVERSIDADE FEDERAL DE MINAS GERAIS ESCOLA DE ENGENHARIA - DEPARTAMENTO DE ELETRÔNICA (DELT) DENER AUGUSTO DE LISBOA BRANDÃO GUILHERME JUNIO SILVA PASSOS IRVING MARTINS COURA PROCESSADOR µMIPS: Projeto, Construção e Análise Projeto de um processador µMIPS Disciplina: Sistemas Processadores e Periféricos/Turma PA4E Professor Orientador: Júlio Cézar David de Melo Data de Apresentação: 22 de Dezembro de 2015 Belo Horizonte Dezembro 2015

Upload: irving-martins

Post on 07-Jul-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Relatório - Processador - Dener Brandão, Guilherme Passos e Irving Martins

8/19/2019 Relatório - Processador - Dener Brandão, Guilherme Passos e Irving Martins

http://slidepdf.com/reader/full/relatorio-processador-dener-brandao-guilherme-passos-e-irving-martins 1/13

UNIVERSIDADE FEDERAL DE MINAS GERAISESCOLA DE ENGENHARIA - DEPARTAMENTO DE ELETRÔNICA

(DELT)

DENER AUGUSTO DE LISBOA BRANDÃO

GUILHERME JUNIO SILVA PASSOSIRVING MARTINS COURA

PROCESSADOR µMIPS:Projeto, Construção e Análise

Projeto de um processador µMIPSDisciplina: Sistemas Processadores e Periféricos/Turma PA4E

Professor Orientador: Júlio Cézar David de MeloData de Apresentação: 22 de Dezembro de 2015

Belo Horizonte

Dezembro 2015

Page 2: Relatório - Processador - Dener Brandão, Guilherme Passos e Irving Martins

8/19/2019 Relatório - Processador - Dener Brandão, Guilherme Passos e Irving Martins

http://slidepdf.com/reader/full/relatorio-processador-dener-brandao-guilherme-passos-e-irving-martins 2/13

Sumário Rápido:

Introdução

Descrição do ProjetoULA - Unidade Lógico Aritmética

DescriçãoFormas de Onda

Banco de RegistradoresDescriçãoFormas de Onda

MEMI - Memória de Instruções e MEMD - Memória de DadosDescriçãoFormas de Onda

Via de DadosDescriçãoFormas de Onda

ControladoraDescriçãoFormas de Onda

ProcessadorDescriçãoFormas de Onda

ResultadosResulados obtidos no MARS

Código AssemblyResultado da Simulação

Resultado da Compilação do Projeto no Quartus IINúmero de recursos utilizados da FPGAFrequência Máxima de Operação do Processador

Formas de Onda do Programa do ProblemaConclusões

Page 3: Relatório - Processador - Dener Brandão, Guilherme Passos e Irving Martins

8/19/2019 Relatório - Processador - Dener Brandão, Guilherme Passos e Irving Martins

http://slidepdf.com/reader/full/relatorio-processador-dener-brandao-guilherme-passos-e-irving-martins 3/13

1. Introdução

 Atualmente, imaginar o mundo sem computadores é praticamente impossível. Nesse 

cenário, a competição entre empresas de tecnologia a fim de melhorar e evoluir seus 

computadores tem sido extremamente forte. Dentre os itens que podem ser melhorados, 

estão os processadores.

O processador é o componente no qual são usadas as tecnologias de fabricação 

mais recentes, o que o torna frequentemente o mais complexo e mais caro também. 

Fazendo uma analogia com o corpo humano, o processador seria semelhante ao cérebro. 

Sozinho ele não possui tanta utilidade, mas quando acoplado aos periféricos como 

memória, placas de rede, vídeo, som, ele é capaz de processar as informações desses periféricos e coordenar o sistema como um todo e em harmonia.

Neste trabalho, será desenvolvido um processador conhecido como MIPS 

(Microprocessor without Interlocked Pipeline Stages), que possui arquitetura de mesmo 

nome. O processador MIPS está incluído na categoria de modelo de computação RISC 

(Reduced Instruction Set Computing ), que são processadores que possuem um conjunto 

simples e pequeno de instruções que levam aproximadamente a mesma quantidade de 

tempo para serem executadas. Muitos processadores modernos utilizam tal modelo de 

computação.

Para desenvolvimento do processador serão criados os blocos individuais que 

compõem o processador. Dentre esses blocos estão, na Via de Dados, a ULA (Unidade 

Lógico-Aritmética), o Banco de Registradores e a MEMI (Memória de Instruções). Para esse 

trabalho, a MEMD (Memória de Dados) será alocada ao projeto para leitura e salvamento 

de dados. Ao final, a Controladora se unirá a Via de Dados para a criação do processador.

 As ferramentas utilizadas serão o   software   Quartus II, utilizado na criação dos 

programas em VHDL do processador, o ModelSim e Qsim, ferramentas de simulação, o kit 

DE2 com FPGA EP2C35F672C6N, todos da Altera Corporation e o   software   MARS, uma 

IDE para MIPS em linguagem Assembly.

Page 4: Relatório - Processador - Dener Brandão, Guilherme Passos e Irving Martins

8/19/2019 Relatório - Processador - Dener Brandão, Guilherme Passos e Irving Martins

http://slidepdf.com/reader/full/relatorio-processador-dener-brandao-guilherme-passos-e-irving-martins 4/13

2. Descrição do Projeto

2.1. ULA - Unidade Lógico Aritmética

2.1.1. Descrição

 A Unidade Lógica-Aritmética (ULA) de um processador é o módulo responsável pela 

realização de todas as operações lógicas e aritméticas definidas pelo seu conjunto de 

instruções. Entre as operações lógicas estão AND, OR, XOR e NOT, além daquelas 

relativas ao deslocamento à esquerda ou à direita do conteúdo de um registrador. As três 

primeiras são binárias (operam sobre dois registradores) e as de deslocamento e o NOT 

são unárias (operam sobre um único registrador).

Entre as operações aritméticas, a adição e a subtração estão presentes em todos os 

processadores, sendo as operações de multiplicação e divisão restritas aos processadores 

de maior desempenho. Outras operações incluem a comparação, realizada através da 

subtração sem atualização de registradores mas refletindo o resultado em sinalizadores.

 A ULA deste projeto possui as seguintes operações: AND, OR, ADD, ADDU, SUBU, 

SLTU, SUB, SLT, LUI, NOR e XOR.

2.1.2. Formas de Onda

 Abaixo pode-se ver a simulação da ULA gerada pelo software QSim:

Figura 1: Forma de Onda da Simulação da ULA

Podemos ver as diversas operações que a ULA realiza representadas em 

hexadecimal no campo F. Como exemplo, observa-se que, quando F = 6, o resultado Y = 9, 

ou seja, é uma operação de SUB (A - B), enquanto F = 1, tem-se Y = B, ou seja, é uma 

operação de ADD (A + B).

Page 5: Relatório - Processador - Dener Brandão, Guilherme Passos e Irving Martins

8/19/2019 Relatório - Processador - Dener Brandão, Guilherme Passos e Irving Martins

http://slidepdf.com/reader/full/relatorio-processador-dener-brandao-guilherme-passos-e-irving-martins 5/13

2.2. Banco de Registradores

2.2.1. Descrição

 A arquitetura MIPS é do tipo RISC e para dar suporte ao processamento de dados, 

ela possui 32 registradores de 32 bits cada, alguns de uso geral e outros de uso específico. 

Todas as operações lógicas e aritméticas envolvem um ou dois registradores como fonte de 

dados e um registrador como destino. Num mesmo ciclo, o banco de registradores deve 

prover o conteúdo de dois registradores e receber um dado a ser atribuído a um terceiro 

registrador. Eles são identificados através dos campos rs, rt e rd do opcode de cada 

instrução, cada um com cinco bits, podendo ser arbitrariamente definidos. Há também um 

registrador especial, o de número zero, que armazena a constante 0 definida por hardware.

2.2.2. Formas de Onda

 Abaixo, pode-se ver o funcionamento do Banco de Dados através da forma de onda 

gerada pelo programa QSim:

Figura 2: Forma de Onda do Banco de Registradores

O funcionamento está dentro do esperado. É possível perceber, no centro da 

imagem, a escrita no registrador 1A com vários F’s e, conseguinte, a leitura desses dados.

2.3. MEMI - Memória de Instruções e MEMD - Memória deDados

2.3.1. Descrição

O processador MIPS interage com dois tipos de memória: de instruções e de dados. 

 A primeira é do tipo não-volátil, tipicamente implementada nos dias de hoje em tecnologia 

FLASH, que permite a atualização remota quando necessário. Ela armazena um programa 

que vai ser executado pelo processador, bem como constantes e parâmetros de programas 

Page 6: Relatório - Processador - Dener Brandão, Guilherme Passos e Irving Martins

8/19/2019 Relatório - Processador - Dener Brandão, Guilherme Passos e Irving Martins

http://slidepdf.com/reader/full/relatorio-processador-dener-brandao-guilherme-passos-e-irving-martins 6/13

e do sistema operacional. A segunda é volátil e é implementada em tecnologia SRAM 

(memória estática, baseada em flip-flops) ou DRAM (memória dinâmica, baseada no 

armazenamento de carga em um capacitor por célula) em suas várias acepções: SDRAM, 

DDRAM, DDR2/3/4 e outras mais exóticas (FRAM, MRAM, etc.). Nela são armazenados 

dados que serão manipulados pelo processador ao longo da execução de um programa.

No kit DE2, elas existem na forma de memória FLASH de 4MB e memória SRAM de 

512KB e SDRAM de 8MB. Embora disponíveis, elas apresentam um problema que as torna 

inadequadas para o projeto: o barramento de dados é de 8 bits (FLASH) ou de 16 bits 

(SRAM e SDRAM), o que exigiria a criação de um controlador de barramento que fizesse a 

transposição dos barramentos de 32 bits do MIPS para estes dois formatos. Para evitar este 

problema (e criar outro mais simples de se resolver), adotou-se a implementação das duas 

memórias através dos bancos de memória disponíveis na própria FPGA, implementados no que a Altera denomina “M4K memory blocks”. Estes são blocos de memória de 4096 bits 

(4Kb) que podem ser utilizados nas duas formas (volátil e não-volátil) e que podem ser  

organizados em diferentes combinações de número de palavras versus largura das palavras 

e mesmo combinados para gerar memórias com maior número de bits por palavra ou 

número de palavras. No caso da família Cyclone II, as formas permitidas são as dadas na 

tabela abaixo e para o dispositivo EP2C35F672C6N, há 105 blocos M4K e 483,840 bits no 

total.

O projeto com este tipo de memória, entretanto, segue um fluxo diferente do 

tradicional: ao invés de se codificar as memórias diretamente em VHDL, é mais fácil, seguro 

e prático fazer uso de uma ferramenta do Quartus II, o “MegaWizard Plug-In Manager”. 

 Através da definição de parâmetros como o tipo de memória (RAM ou ROM), o número de 

palavras e sua largura e em qual linguagem se deseja o código final, este gerenciador cria 

um arquivo com a funcionalidade desejada, podendo ser adicionado a um projeto como um 

componente qualquer.

2.3.2. Formas de Onda

 Abaixo, pode-se ver a forma de onda da Memória de Dados gerada pelo 

software 

Qsim.

Page 7: Relatório - Processador - Dener Brandão, Guilherme Passos e Irving Martins

8/19/2019 Relatório - Processador - Dener Brandão, Guilherme Passos e Irving Martins

http://slidepdf.com/reader/full/relatorio-processador-dener-brandao-guilherme-passos-e-irving-martins 7/13

Figura 3: Forma de Onda da Simulação da Memória de Dados

Como pode-se observar, os dados estão sendo salvos nos mais diversos endereços. 

Quando a entrada ‘wren’ está ativa, o dado é gravado e pode ser visto na saída ‘q’. Quando 

a entrada ‘wren’ não está ativa, a mudança de endereços mostrará o que foi salvo em cada 

um deles.

 Assim como a Memória de Dados, a Memória de Instrução também foi simulada, 

como pode-se ver abaixo.

Figura 4: Forma de Onda da Simulação da Memória de Instruções

Em cada endereço da memória de instruções fica armazenado uma instrução. A 

sequência de instruções que está na simulação em ‘q’ é para gerar a sequência de 

Fibonacci.

2.4. Via de Dados

2.4.1. Descrição

 A via de dados de qualquer processador é responsável pela manipulação de dados, 

realizando operações aritméticas e lógicas entre dados que estão em registradores e 

movendo-os entre estes e a memória. O desempenho de um processador é diretamente 

relacionado ao desempenho da via de dados: quanto mais rápida a via de dados, tanto 

maior será o desempenho do processador.

No caso do processador MIPS, baseado em conceitos de arquitetura RISC, a via de 

dados consiste do banco de registradores (armazenam os dados a serem manipulados) e 

da unidade lógico-aritmética (realiza as operações). Nessa atividade, as memórias externas 

de dados (armazenam dados salvos para posterior manipulação) e de instruções 

(armazenam a sequência de instruções de um programa) serão associadas à via de dados 

e lógica adicional para permitir a realização de uma instrução completa num ciclo de relógio:

Page 8: Relatório - Processador - Dener Brandão, Guilherme Passos e Irving Martins

8/19/2019 Relatório - Processador - Dener Brandão, Guilherme Passos e Irving Martins

http://slidepdf.com/reader/full/relatorio-processador-dener-brandao-guilherme-passos-e-irving-martins 8/13

● uma lógica para endereçar a memória de instruções através de um contador de 

programa (PC) e que inclua o incremento automático de quatro unidades para 

apontar para a próxima instrução

● uma lógica para permitir a realização de saltos relativos ao valor do PC (branch) 

(saltos absolutos, providos pela instrução jump, serão objeto da próxima atividade)

2.4.2. Formas de Onda

Como a Via de Dados necessita de um controlador, realizar a simulação dela se 

torna bastante complicado. Portanto, a Via de Dados será testada diretamente no 

Processador, quando ela será anexada a Controladora.

2.5. Controladora

2.5.1. Descrição

 A via de dados do processador uMIPS é responsável apenas pela manipulação de 

dados, sendo necessário que um módulo externo produza os sinais que irão controlar as 

suas operações. Este módulo externo é a unidade de controle, que deve decodificar os 32 

bits de uma instrução e gerar os valores apropriados para todos os sinais de controle. Ela 

deve também extrair os campos adequados da instrução para uso em endereçamento de registradores e outras operações. Com a inclusão da unidade de controle, o processador  

estará concluído, faltando adicionar as operações e funções para transformá-lo numa 

versão reduzida do processador MIPS.

2.5.2. Formas de Onda

Como a Controladora necessita de algo para controlar, no caso, a Via de Dados, 

realizar a simulação dela se torna bastante complicado. Portanto, a Controladora será testada diretamente no Processador, quando ela será anexada a Via de Dados.

2.6. Processador

2.6.1. Descrição

Com a união da Via de Dados com a Controladora tem-se o processador. Um 

processador possui gravado na Memória de Instruções um programa que ele executa e que 

independe de ações externas do usuário, ou seja, o usuário não precisa inserir valores em 

Page 9: Relatório - Processador - Dener Brandão, Guilherme Passos e Irving Martins

8/19/2019 Relatório - Processador - Dener Brandão, Guilherme Passos e Irving Martins

http://slidepdf.com/reader/full/relatorio-processador-dener-brandao-guilherme-passos-e-irving-martins 9/13

entradas, por exemplo. As únicas entradas do Processador são o   clock   e o   reset . O primeiro 

pode ser gerado por um oscilador de cristal e o segundo é uma interrupção feita para algum 

tipo de manutenção ou para reinicialização do programa operando no processador.

Para testar o processador, foi utilizado o   software   MARS MIPS Simulator para gerar  

o arquivo binário das instruções que foi carregado na memória de instruções e o QSim. 

 Abaixo, a simulação utilizando o programa do problema da seção 3.1.1. Observa-se que o 

resultado foi sempre FFFF pois nessa simulação o valor que deveria ser encontrado não 

estava no vetor.

2.6.2. Formas de Onda

Figura 5: Forma de Onda de Teste do Processador

3. Resultados

3.1. Resulados obtidos no MARS

3.1.1. Código Assembly

 Abaixo, tem-se o código Assembly do problema escolhido: a função busca linear, se 

verifica se um valor inteiro está dentro de um vetor. Tal vetor foi gravado diretamente na 

memória RAM junto com seu tamanho e o elemento a ser procurado.

1. .data

2. elementos:  .word  

1, 

2, 

3, 

4, 

,6 

,7 

,8 

9  # 

vetor no qual será realizada a

busca

3. length:   .word  10  # comprimento do vetor

4. elemsearch:  .word  

# elemento a ser procurado

5.  

6.   .text

Page 10: Relatório - Processador - Dener Brandão, Guilherme Passos e Irving Martins

8/19/2019 Relatório - Processador - Dener Brandão, Guilherme Passos e Irving Martins

http://slidepdf.com/reader/full/relatorio-processador-dener-brandao-guilherme-passos-e-irving-martins 10/13

7. main:

8.   nop

9.   addiu $t9, $0, 10 # 

carrega na memoria o comprimento do vetor

10.   addiu $t8, $t9, 1

11.  

12.   lw $s0, ($t9 )  #   carrega o elemento a ser procurado

13.   la $s1, elementos # carrega o endereço do primeiro elemento

14.   lw $s2, ($t8 )  #  carrega o comprimento do vetor

15.   addi $s3, $zero, 0  # indice

16.  

17. comparacao:

18.   nop

19.   lw $t0, 0(  $s1)  #  carrega o elemento que ser achado

20.   beq 

$s0, $t0, sucesso # caso o elemento seja igual, encerra o

loop

21.   nop

22.   addi $s3, $s3, 1  # Caso não seja igual, aumenta- se em 1  o

indice

23.   slt $t1, $s3, $s2 # verifica se o índice em questão excedeu o

limite do tamanho do vetor

24.   beq 

$t1, $zero, semsucesso # caso o indice seja igual, encerra o

loop

25.   nop

26.   addi $s1, $s1, 1  #  senão, armazena o endereço do proximo elemento

27.   j comparacao # recomeça o loop com o próximo elemento

28.   nop

29.  

30. sucesso:

31.   nop

32.   addi $s7, $s3, 0  # armazena o indice do elemento encontrado

33.   j fim #   pula para o final do programa

34.   nop

Page 11: Relatório - Processador - Dener Brandão, Guilherme Passos e Irving Martins

8/19/2019 Relatório - Processador - Dener Brandão, Guilherme Passos e Irving Martins

http://slidepdf.com/reader/full/relatorio-processador-dener-brandao-guilherme-passos-e-irving-martins 11/13

35.  

36. semsucesso:

37.   nop

38.   addi $s7, $zero, -1  # armazena - 1 no resultado, indicando uma

falha ( 

saida = 

FFFF...)

39.   j fim #   pula para o final do programa

40.   nop

41.  

42. fim:

43.   nop

44.   addi $s7, $s7, 0  # exibe o resultado na saída da ULA

45.   j fim # 

loop infinito para exibição

46.   nop 

3.1.2. Resultado da Simulação

 Abaixo, pode-se ver o resultado da simulação no MARS.

Figura 6: Resultado da Simulação no MARS do programa

3.2. Resultado da Compilação do Projeto no Quartus II

3.2.1. Número de recursos utilizados da FPGA

Como podemos ver na figura abaixo, o número de pinos foi de 99 (21% do total), o 

total de elementos lógicos foi de 2121 (6% do total disponível) e o tamanho da memória foi 

de 49152 (totalizando 10% do total disponível).

10 

Page 12: Relatório - Processador - Dener Brandão, Guilherme Passos e Irving Martins

8/19/2019 Relatório - Processador - Dener Brandão, Guilherme Passos e Irving Martins

http://slidepdf.com/reader/full/relatorio-processador-dener-brandao-guilherme-passos-e-irving-martins 12/13

 

Figura 7: Recursos utilizados da FPGA

3.2.2. Frequência Máxima de Operação do Processador

Segundo o TimeQuest Timing Analyzer do Quartus II, a frequência máxima de 

operação do processador criado é de 48.21 MHz, como pode-se ver na figura abaixo.

Figura 8: Frequência Máxima de Operação do Processador

3.3. Formas de Onda do Programa do Problema

Para testar o programa do problema, em comparação com o teste do processador, 

modificamos o valor a ser encontrado de 10 (que não estava no vetor de 0 a 9) para o valor  

3, como podemos ver na figura abaixo no campo resultado, que mostra o valor 3 

seguidamente num loop e depois para o valor 5.

Figura 9: Forma de Onda da Simulação do Programa (procurando valor 3)

11 

Page 13: Relatório - Processador - Dener Brandão, Guilherme Passos e Irving Martins

8/19/2019 Relatório - Processador - Dener Brandão, Guilherme Passos e Irving Martins

http://slidepdf.com/reader/full/relatorio-processador-dener-brandao-guilherme-passos-e-irving-martins 13/13

 

Figura 10: Forma de Onda da Simulação do Programa (procurando valor 5)

4. Conclusões

 Após todos os experimentos realizados tanto com simulações quanto na prática, 

utilizando o Kit DE2 da Altera com a FPGA EP2C35F672C6N, pode-se dizer que o trabalho 

foi um sucesso.

Neste projeto do processador, teve-se a oportunidade de se utilizar ferramentas de 

projeto, diagnóstico e testes muito importantes que envolvam processadores. O   software 

MARS MIPS Simulator possui excelentes ferramentas de criação de códigos em linguagem 

de montagem, de análise dos códigos e de resposta. Além disso, o fato de gerar o arquivo 

para a memória de instruções retira a carga complicada da gravação do programa de 

execução no processador, facilitando a vida do programador.

Tão importante quanto o MARS, o Quartus II possui ferramentas de criação e 

análise de códigos em VHDL, inclusive em sintonia com a FPGA. Agregou-se ao grupo a 

oportunidade de analisar os elementos utilizados da FPGA e a frequência máxima de 

operação do processador. O conhecimento maior das ferramentas de análise do Quartus II 

foi fundamental na evolução acadêmica do grupo.

Portanto, pode-se dizer que tal projeto é soma-se muito na formação acadêmica de 

um engenheiro eletricista, principalmente com a atual migração de grandes sistemas de 

automação e controle para sistema computacionais e de cada vez mais ferramentas em software para simulações, inclusive, de grandes plantas elétricas.

12