Вы находитесь на странице: 1из 13

UNIVERSIDADEFEDERALDEMINASGERAIS

ESCOLADEENGENHARIADEPARTAMENTODEELETRNICA
(DELT)

DENERAUGUSTODELISBOABRANDO
GUILHERMEJUNIOSILVAPASSOS
IRVINGMARTINSCOURA

PROCESSADORMIPS:
Projeto,ConstruoeAnlise

ProjetodeumprocessadorMIPS
Disciplina:SistemasProcessadoresePerifricos/TurmaPA4E
ProfessorOrientador:JlioCzarDaviddeMelo
DatadeApresentao:22deDezembrode2015

BeloHorizonte
Dezembro2015

SumrioRpido:

Introduo
DescriodoProjeto
ULAUnidadeLgicoAritmtica
Descrio
FormasdeOnda
BancodeRegistradores
Descrio
FormasdeOnda
MEMIMemriadeInstrueseMEMDMemriadeDados
Descrio
FormasdeOnda
ViadeDados
Descrio
FormasdeOnda
Controladora
Descrio
FormasdeOnda
Processador
Descrio
FormasdeOnda
Resultados
ResuladosobtidosnoMARS
CdigoAssembly
ResultadodaSimulao
ResultadodaCompilaodoProjetonoQuartusII
NmeroderecursosutilizadosdaFPGA
FrequnciaMximadeOperaodoProcessador
FormasdeOndadoProgramadoProblema
Concluses

1.

Introduo

Atualmente, imaginaromundosemcomputadorespraticamenteimpossvel.Nesse
cenrio, a competio entre empresas de tecnologia a fim de melhorar e evoluir seus
computadores tem sido extremamente forte. Dentre os itens que podem ser melhorados,
estoosprocessadores.
O processador o componente no qual so usadas as tecnologias de fabricao
mais recentes, o que o torna frequentemente o mais complexo e mais caro tambm.
Fazendo uma analogia com o corpo humano, o processador seria semelhante ao crebro.
Sozinho ele no possui tanta utilidade, mas quando acoplado aos perifricos como
memria, placas de rede, vdeo, som, ele capaz de processar as informaes desses
perifricosecoordenarosistemacomoumtodoeemharmonia.
Neste trabalho, ser desenvolvido um processador conhecido como MIPS
(
Microprocessor without Interlocked Pipeline Stages
), que possui arquitetura de mesmo
nome. O processador MIPS est includo na categoria de modelo de computao RISC
(
Reduced Instruction Set Computing
), que so processadores que possuem um conjunto
simples e pequeno de instrues que levam aproximadamente a mesma quantidade de
tempo para serem executadas. Muitos processadores modernos utilizam tal modelo de
computao.
Para desenvolvimento do processador sero criados os blocos individuais que
compem o processador. Dentre esses blocos esto, na Via de Dados, a ULA (Unidade
LgicoAritmtica), o BancodeRegistradoreseaMEMI(MemriadeInstrues).Paraesse
trabalho, a MEMD (Memria de Dados) ser alocada ao projeto para leitura e salvamento
dedados.Aofinal,aControladoraseuniraViadeDadosparaacriaodoprocessador.
As ferramentas utilizadas sero o
software
Quartus II, utilizado na criao dos
programas em VHDL do processador, o ModelSim e Qsim, ferramentas de simulao,okit
DE2 com FPGA EP2C35F672C6N, todos da Altera Corporation e o
software
MARS, uma
IDEparaMIPSemlinguagemAssembly.

2.

DescriodoProjeto
2.1.

ULAUnidadeLgicoAritmtica
2.1.1.

Descrio

A Unidade LgicaAritmtica (ULA) deum processadoromdulo responsvelpela


realizao de todas as operaes lgicas e aritmticas definidas pelo seu conjunto de
instrues. Entre as operaes lgicas esto AND, OR, XOR e NOT, alm daquelas
relativas ao deslocamento esquerda ou direita do contedo de um registrador. As trs
primeiras so binrias (operam sobre dois registradores) e as de deslocamento e o NOT
sounrias(operamsobreumnicoregistrador).
Entre as operaesaritmticas,aadioea subtraoestopresentesemtodosos
processadores, sendo as operaes de multiplicao e diviso restritas aos processadores
de maior desempenho. Outras operaes incluem a comparao, realizada atravs da
subtraosematualizaoderegistradoresmasrefletindooresultadoemsinalizadores.
A ULA deste projeto possui as seguintes operaes:AND,OR,ADD,ADDU,SUBU,
SLTU,SUB,SLT,LUI,NOReXOR.

2.1.2.

FormasdeOnda

AbaixopodeseverasimulaodaULAgeradapelo
software
QSim:

Figura1:FormadeOndadaSimulaodaULA

Podemos ver as diversas operaes que a ULA realiza representadas em


hexadecimal no campo F.Comoexemplo,observaseque,quandoF=6,oresultadoY=9,
ou seja, uma operao de SUB (A B), enquanto F = 1, temse Y = B, ou seja, uma
operaodeADD(A+B).

2.2.

BancodeRegistradores
2.2.1.

Descrio

A arquitetura MIPS do tipo RISC e para dar suporte ao processamento dedados,


ela possui 32 registradores de 32 bitscada,algunsde usogeraleoutrosdeuso especfico.
Todas as operaeslgicasearitmticasenvolvemumoudoisregistradorescomofonte de
dados e um registrador como destino. Num mesmo ciclo, o banco de registradores deve
prover o contedo de dois registradores e receber um dado a ser atribudo a um terceiro
registrador. Eles so identificados atravs dos campos rs, rt e rd do opcode de cada
instruo, cada um com cinco bits, podendo ser arbitrariamente definidos. H tambm um
registradorespecial,odenmerozero,quearmazenaaconstante0definidaporhardware.

2.2.2.

FormasdeOnda

Abaixo, podese ver o funcionamento do BancodeDadosatravsdaformadeonda


geradapeloprogramaQSim:

Figura2:FormadeOndadoBancodeRegistradores

O funcionamento est dentro do esperado. possvel perceber, no centro da


imagem,aescritanoregistrador1AcomvriosFse,conseguinte,aleituradessesdados.

2.3.

MEMIMemriadeInstrueseMEMDMemriade
Dados
2.3.1.

Descrio

O processador MIPS interage com doistiposdememria:deinstruesededados.


A primeira do tipo novoltil, tipicamente implementada nos dias de hoje em tecnologia
FLASH, que permite a atualizao remota quando necessrio. Ela armazena um programa
que vai ser executado pelo processador,bemcomoconstanteseparmetrosdeprogramas

e do sistema operacional. A segunda voltil e implementada em tecnologia SRAM


(memria esttica, baseada em flipflops) ou DRAM (memria dinmica, baseada no
armazenamento de carga em um capacitor por clula) em suas vrias acepes: SDRAM,
DDRAM, DDR2/3/4 e outras mais exticas (FRAM, MRAM, etc.). Nela so armazenados
dadosqueseromanipuladospeloprocessadoraolongodaexecuodeumprograma.
No kit DE2, elas existemnaformadememriaFLASHde4MBememriaSRAMde
512KB e SDRAM de 8MB. Emboradisponveis,elasapresentamumproblemaque astorna
inadequadas para o projeto: o barramento de dados de 8 bits (FLASH) ou de 16 bits
(SRAM e SDRAM), o que exigiria a criao de umcontroladordebarramentoquefizessea
transposio dosbarramentosde32bitsdoMIPS paraestesdoisformatos.Paraevitareste
problema (e criar outro mais simples de se resolver), adotouse a implementaodasduas
memrias atravs dos bancos de memriadisponveisnaprpriaFPGA,implementadosno
que a Altera denomina M4K memory blocks. Estes so blocos de memria de 4096 bits
(4Kb) que podem ser utilizados nas duas formas (voltil e novoltil) e que podem ser
organizadosemdiferentescombinaesdenmerodepalavrasversuslarguradaspalavras
e mesmo combinados para gerar memrias com maior nmero de bits por palavra ou
nmero de palavras. No caso da famlia Cyclone II, as formas permitidas so as dadas na
tabela abaixo e para o dispositivo EP2C35F672C6N, h 105 blocos M4K e 483,840bitsno
total.
O projeto com este tipo de memria, entretanto, segue um fluxo diferente do
tradicional: ao invsdesecodificarasmemriasdiretamenteemVHDL,maisfcil,seguro
e prtico fazer uso de uma ferramenta do Quartus II, o MegaWizard PlugIn Manager.
Atravs da definio de parmetros como o tipo de memria (RAM ou ROM), onmerode
palavras e sua largura e em qual linguagem se deseja o cdigo final, este gerenciadorcria
um arquivo com a funcionalidade desejada, podendo ser adicionadoaumprojetocomoum
componentequalquer.

2.3.2.

FormasdeOnda

Abaixo, podese ver a forma de onda da Memria de Dados gerada pelo


software
Qsim.

Figura3:FormadeOndadaSimulaodaMemriadeDados

Como podeseobservar,osdadosestosendosalvosnos maisdiversosendereos.


Quando a entrada wren est ativa,odadogravadoepodeservistonasadaq.Quando
a entrada wren no est ativa, a mudanadeendereos mostraroquefoisalvoemcada
umdeles.
Assim como a Memria de Dados, a Memria de Instruo tambm foi simulada,
comopodeseverabaixo.

Figura4:FormadeOndadaSimulaodaMemriadeInstrues

Em cada endereo da memria de instrues fica armazenado uma instruo. A


sequncia de instrues que est na simulao em q para gerar a sequncia de
Fibonacci.

2.4.

ViadeDados
2.4.1.

Descrio

A via de dados de qualquer processador responsvelpelamanipulaodedados,


realizando operaes aritmticas e lgicas entre dados que esto em registradores e
movendoos entre estes e a memria. O desempenho de um processador diretamente
relacionado ao desempenho da via de dados: quanto mais rpida a via de dados, tanto
maiorserodesempenhodoprocessador.
No caso do processador MIPS, baseado em conceitosdearquiteturaRISC, aviade
dados consiste do banco de registradores (armazenam os dados a serem manipulados) e
da unidade lgicoaritmtica (realiza asoperaes).Nessaatividade,asmemriasexternas
de dados (armazenam dados salvos para posterior manipulao) e de instrues
(armazenam a sequncia de instrues de um programa) sero associadas viadedados
elgicaadicionalparapermitirarealizaodeumainstruocompletanumcicloderelgio:

uma lgica para enderear a memria de instrues atravs de um contador de


programa (PC) e que inclua o incremento automtico de quatro unidades para
apontarparaaprximainstruo

uma lgica para permitir a realizao de saltos relativos ao valor do PC (branch)


(saltosabsolutos,providospelainstruojump,seroobjetodaprximaatividade)

2.4.2.

FormasdeOnda

Como a Via de Dados necessita de um controlador, realizar a simulao dela se


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

2.5.

Controladora
2.5.1.

Descrio

A via de dados do processador uMIPS responsvel apenas pela manipulao de


dados, sendo necessrio que um mdulo externo produza os sinais que iro controlar as
suas operaes. Este mdulo externo a unidade de controle, que deve decodificar os 32
bits de uma instruo e gerar os valores apropriados para todos os sinais de controle. Ela
deve tambm extrair os campos adequados da instruo para uso em endereamento de
registradores e outras operaes. Com a incluso da unidade de controle, o processador
estar concludo, faltando adicionar as operaes e funes para transformlo numa
versoreduzidadoprocessadorMIPS.

2.5.2.

FormasdeOnda

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


realizar a simulao dela se torna bastante complicado. Portanto, a Controladora ser
testadadiretamentenoProcessador,quandoelaseranexadaaViadeDados.

2.6.

Processador
2.6.1.

Descrio

Com a unio da Via de Dados com a Controladora temse o processador. Um


processador possui gravado na MemriadeInstruesumprogramaqueeleexecutaeque
independe de aes externas do usurio, ou seja, o usurio no precisa inserir valoresem

entradas, porexemplo.AsnicasentradasdoProcessadorsoo
clock
eo
reset
.Oprimeiro
pode ser gerado porumosciladordecristale osegundoumainterrupofeitaparaalgum
tipodemanutenoouparareinicializaodoprogramaoperandonoprocessador.
Para testar o processador,foiutilizadoo
softwareMARSMIPSSimulatorparagerar
o arquivo binrio das instrues que foi carregado na memria de instrues e o QSim.
Abaixo, a simulao utilizando o programa do problema da seo 3.1.1. Observase que o
resultado foi sempre FFFF pois nessa simulao o valor que deveria ser encontrado no
estavanovetor.

2.6.2.

FormasdeOnda

Figura5:FormadeOndadeTestedoProcessador

3.

Resultados
3.1.

ResuladosobtidosnoMARS
3.1.1.

CdigoAssembly

Abaixo, temse o cdigo Assembly do problemaescolhido:afunobuscalinear,se


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

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

4. elemsearch:

.word

#comprimento do vetor

#elemento a ser procurado

5.
6.

.text

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
)

13.

la

$s1, elementos

14.

lw

$s2,
(
$t8
)

15.

addi

#carrega o elemento a ser procurado

#carrega o endereo do primeiro elemento

#carrega o comprimento do vetor

$s3, $zero,
0

#indice

16.
17.comparacao:
18.

nop

19.

lw

$t0,
0
(
$s1
)

20.

beq

$s0, $t0, sucesso

#carrega o elemento que ser achado

#caso o elemento seja igual, encerra o

loop
21.

nop

22.

addi

$s3, $s3,
1

#Caso no seja igual, aumenta

-
se em
1o

indice
23.

slt

#verifica se o ndice em questo excedeu o

$t1, $s3, $s2

limite do tamanho do vetor


24.

beq

$t1, $zero, semsucesso

#caso o indice seja igual, encerra o

loop
25.

nop

26.

addi

27.

28.

nop

$s1, $s1,
1
comparacao

#seno, armazena o endereo do proximo elemento

#recomea o loop com o prximo elemento

29.
30.sucesso:
31.

nop

32.

addi

33.

34.

nop

$s7, $s3,
0
fim

#armazena o indice do elemento encontrado

#pula para o final do programa

35.
36.semsucesso:
37.

nop

38.

addi

$s7, $zero,
-
1

#armazena

-
1no resultado, indicando uma

falha
(
saida
=FFFF...
)
39.

40.

nop

#pula para o final do programa

fim

41.
42.fim:
43.

nop

44.

addi

45.

46.

nop

$s7, $s7,
0
fim

3.1.2.

#exibe o resultado na sada da ULA

#loop infinito para exibio

ResultadodaSimulao

Abaixo,podeseveroresultadodasimulaonoMARS.

Figura6:ResultadodaSimulaonoMARSdoprograma

3.2.

ResultadodaCompilaodoProjetonoQuartusII
3.2.1.

NmeroderecursosutilizadosdaFPGA

Como podemos ver na figura abaixo, o nmero de pinos foi de 99 (21% do total),o
total de elementos lgicos foi de 2121 (6% do total disponvel) eotamanhodamemriafoi
de49152(totalizando10%dototaldisponvel).

10


Figura7:RecursosutilizadosdaFPGA

3.2.2.

FrequnciaMximadeOperaodoProcessador

Segundo o TimeQuest Timing Analyzer do Quartus II, a frequncia mxima de


operaodoprocessadorcriadode48.21MHz,comopodesevernafiguraabaixo.

Figura8:FrequnciaMximadeOperaodoProcessador

3.3.

FormasdeOndadoProgramadoProblema

Para testar o programa do problema, em comparao com o teste do processador,


modificamos o valor a ser encontrado de10(quenoestavanovetorde0a9)paraovalor
3, como podemos ver na figura abaixo no campo resultado, que mostra o valor 3
seguidamentenumloopedepoisparaovalor5.

Figura9:FormadeOndadaSimulaodoPrograma(procurandovalor3)

11


Figura10:FormadeOndadaSimulaodoPrograma(procurandovalor5)

4.

Concluses

Aps todos os experimentos realizados tanto com simulaes quanto na prtica,


utilizando o Kit DE2 da Altera comaFPGAEP2C35F672C6N,podesedizerqueotrabalho
foiumsucesso.
Neste projeto do processador, tevese a oportunidade de se utilizar ferramentas de
projeto, diagnstico e testes muito importantes que envolvam processadores. O
software
MARS MIPS Simulator possui excelentes ferramentas de criaodecdigosemlinguagem
de montagem, de anlise dos cdigos e de resposta. Alm disso, o fato de geraroarquivo
para a memria de instrues retira a carga complicada da gravao do programa de
execuonoprocessador,facilitandoavidadoprogramador.
To importante quanto o MARS, o Quartus II possui ferramentas de criao e
anlise de cdigos em VHDL, inclusive em sintonia com a FPGA. Agregouse ao grupo a
oportunidade de analisar os elementos utilizados da FPGA e a frequncia mxima de
operao do processador. O conhecimento maior das ferramentas de anlise doQuartusII
foifundamentalnaevoluoacadmicadogrupo.
Portanto, podese dizer que tal projeto somase muito na formao acadmicade
um engenheiro eletricista, principalmente com a atual migrao de grandes sistemas de
automao e controle para sistema computacionais e de cada vez mais ferramentas em
software
parasimulaes,inclusive,degrandesplantaseltricas.

12