relatório - processador - dener brandão, guilherme passos e irving martins
Post on 07-Jul-2018
216 Views
Preview:
TRANSCRIPT
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
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
1
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.
2
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).
3
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
4
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.
5
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:
6
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
7
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
0
,
1,
2,
3,
4,
5
,6
,7
,8
,
9 #
vetor no qual será realizada a
busca
3. length: .word 10 # comprimento do vetor
4. elemsearch: .word
3
# elemento a ser procurado
5.
6. .text
8
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
9
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
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
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
top related