Está en la página 1de 38

MIPSSegmentado|TcnicasAvanzadasdeDiseodeSistemasDigitales|IngenieradeSistemas

MIPSSEGMENTADO
porEmmanuelLujn

Autor:EmmanuelLujn

MIPSSegmentado|TcnicasAvanzadasdeDiseodeSistemasDigitales|IngenieradeSistemas

Fecha:

Diciembredel2008

Tema:
Materia:

MIPSSegmentado

TcnicasAvanzadasdeDiseode
SistemasDigitales

Universidad:

UniversidadNacionaldelCentrode
laProvinciadeBuenosAires,Argentina.

Docente:
Autor:

Dr.EliasTodorivich

EmmanuelLujn

Correoelectrnico:

info@emmanuellujan.com.ar

Sitioweb:

www.emmanuellujan.com.ar

Autor:EmmanuelLujn

MIPSSegmentado|TcnicasAvanzadasdeDiseodeSistemasDigitales|IngenieradeSistemas

LEGALES

MIPSSegmentado,porEmmanuelLujnislicensedundera
CreativeCommonsReconocimiento2.5ArgentinaLicense.
Basedonaworkatwww.emmanuellujan.com.ar/downloads/mips_segmentado.tar.gz.

OBJETIVOS
Objetivosprincipales:
MIPSSegmentado: ElobjetivoesimplementarunmicroprocesadorMIPSenVHDL.En
concreto,sevaarealizarlaversinsegmentadadelmicroprocesador.Elresultadodebeserun
microcapazderealizarenelcasoideal(sinriesgos)unainstruccinporciclodereloj.Parael
ejerciciobsico,noesnecesarioqueelmodelosoporteriesgos(salvoelestructuraldeacceso
amemoriasseparadasdeinstruccionesydatos).
Nosepidequeelmicroprocesadorsoportetodoeljuegodeinstruccionescompleto,sino
lassiguientesinstrucciones:add,sub,and,or,lw,sw,slt,luiybeq.Encualquiercaso,la
instruccinbeq,queimplicariesgosdecontrolporserunsalto,funcionaranmalamente
en la versin bsica del ejercicio obligatorio. Todos los registros deben resetearse
asncronamenteyfuncionarporflancodesubidadelreloj.
Calidaddelcdigo: Sedebernusardiversastcnicasquedemuestrenlacalidaddelcdigo
vhdlysedeberpresentarunaenumeracindeellas.
Objetivossecundarios:
Traductor: Con fin de lograr mayor dinamicidad a la hora de hacer pruebas sobre el
procesadorsepidelaconstruccindeuntraductorbsico.Elmismodebepasarelcdigo
assemblerdelasinstruccionesplanteadasaunarchivovhdlquepuedasintetizarsecomouna
memoriarom.Particularmentedichamemoriaseusarcomomemoriadeinstruccindel
MIPS.
Algoritmo de prueba: Con motivo de probar la funcionalidad del procesador se pide
implementarconeljuegodeinstrucciones planteadoelalgoritmodedivisinRestoring.
Dichocdigodebepodersertraducidoconlaaplicacindelincisoanterior.

Autor:EmmanuelLujn

MIPSSegmentado|TcnicasAvanzadasdeDiseodeSistemasDigitales|IngenieradeSistemas

NDICEDECONTENIDO
1.INTRODUCCIN..................................................................................................................1
1.1.SEGMENTACIN...................................................................................................1
1.2.ACERCADELOSMIPS.........................................................................................4
1.3.MIPSSEGMENTADO............................................................................................5
2.IMPLEMENTACINVHDL.................................................................................................6
2.1.DISEOGENERAL................................................................................................6
2.2.ANLISISPORETAPA.........................................................................................8
2.2.1.Instructionfetching(bsquedadeinstruccin).........................................8
2.2.2.Instructiondecoding(decodificacindeinstruccin)..............................10
2.2.3.Execution(decodificacindeinstruccin)...............................................14
2.2.4.MemoryAccess(acccesoamemoria)......................................................20
2.2.4.Writeback(postescritura).......................................................................21
2.2.5.Registrosdesincronizacin.....................................................................22
2.2.6.AgregadodelainstruccinLUI..............................................................22
2.3.CALIDADDELCDIGO.....................................................................................25
2.4.HERRAMIENTASUSADAS.................................................................................27
2.4.1.GHDL......................................................................................................27
2.4.2.GTKWave.................................................................................................27
3.TRADUCTOR.......................................................................................................................28
3.1.Funcionalidad.............................................................................................28
3.2.Tratamientodeerrores.................................................................................29
4.ALGORITMODEPRUEBA.................................................................................................30
4.1.Restoring.....................................................................................................30
BIBLIOGRAFA.........................................................................................................................33

Autor:EmmanuelLujn

MIPSSegmentado|TcnicasAvanzadasdeDiseodeSistemasDigitales|IngenieradeSistemas

NDICEDEFIGURAS
Figura1.1Conceptodesegmentacin.....................................................................................1
Figura1.2Etapasdelasegmentacin......................................................................................2
Figura1.3MipsSegmentado...................................................................................................5
Figura1.4EntidadTestbench...................................................................................................6
Figura1.5EntidadSegmentedMips.........................................................................................6
Figura1.6Entidaddeunaetapageneral..................................................................................7
Figura2.1Instructionfetching..................................................................................................8
Figura2.2Tiposdeinstrucciones............................................................................................10
Figura2.3Instructiondecoding...............................................................................................11
Figura2.4UnidaddeControl..................................................................................................12
Figura2.5SalidasdelaUnidaddeControl.............................................................................13
Figura2.6Execution................................................................................................................14
Figura2.7ControldelaALU................................................................................................15
Figura2.8EntradasySalidasdelControldelaALU.............................................................16
Figura2.9ALUde1bit...........................................................................................................16
Figura2.10ALU.......................................................................................................................18
Figura2.11Memoryaccess..................................................................................................20
Figura2.12Writeback...........................................................................................................21
Figura2.13ModificacinenControldelaALUparaLUI.........................................................23
Figura2.14ModificacinenlaUnidaddeControlparaLUI...................................................24
Figura2.15GTKWave..............................................................................................................27
Figura3.1FormatobinariodeinstruccionesTipoR...............................................................28
Figura3.2FormatobinariodeinstruccionesTipoI..............................................................28

Autor:EmmanuelLujn

MIPSSegmentado|TcnicasAvanzadasdeDiseodeSistemasDigitales|IngenieradeSistemas

INTRODUCCIN
1.1.SEGMENTACIN
Existen dos maneras de acelerar un circuito combinacional: Paralelismo espacial
(replicacindehardware)yPipelines(Caeras).Nosconcentraremosenestaltima.
Comenzaremosconunadefinicinmuygeneral:laimplementacindeunpipeline aun
circuitocombinacionalocurrealsegmentarodividirdichocircuitoenNetapasdeprocesamiento.
Dndelosresultadosprocesadosporunaetapasonlaentradadelasiguiente.Losresultadosfinales
debernserlosmismosqueenelcircuitooriginal,perostossearrojarnaunamayorvelocidad.
Lavelocidaddeprocesamiento,V=cantidaddedatosprocesadosporunidaddetiempo
(*otrosnombres:Throghput,Anchodebanda,Produccin.)
Enbaseaestodefiniremos: Perododeuncircuito,P=1/V

LavelocidadFigura1.1Conceptodesegmentacin
Analicemosunpocodndeseencuentralamejoradelasegmentacin:elcircuitoCtardaun
tiempoTenprocesarundato:
V(C) =1dato/T

1
Autor:EmmanuelLujn

MIPSSegmentado|TcnicasAvanzadasdeDiseodeSistemasDigitales|IngenieradeSistemas
DadosMdatos,
eltiempototaldeprocesamientodeC,Tp(C)=M*T
Ahorabien,lasegmentacindeberproveeruntiempomsbajoparamejoraresto.
Debidoaquecadaetapadelcircuitosegmentadoesunsubconjuntodelcircuitooriginal
(mslgicaadicionalpotencialmente)cadaunatardauntiempoTi<Tenprocesarundato.
Entrminosgenerales,cuandounadatoingresaalaprimeretapasteesprocesadoporla
misma.Luego,dichodatoahorapreprocesadoporlaprimeretapa,pasaalasegunda.Peromientras
que el primer dato esta siendo procesado por la segunda etapa, el segundo dato esta siendo
procesadoporlaprimera.Estasituacinserepitehastaquetodoslosdatossonprocesadosporla
ltimaetapa.

Figura1.2Etapasdelasegmentacin
La situacin anterior plantea un problema. Debido a que los Ti no son necesariamente
iguales,lasetapasestndesincrinozadas.Veamosunejemplodemalfuncionamiento,silaetapaC0
tardauntiempoT0ylaetapaC1tardauntiempoT1yT0<T1,siguiendoloexpuestoenelprrafo
anteriorelsegundodatoestarlistoparaserprocesadoporlasegundaetapaantesdequesehaya
terminadodeprocesarelprimerdatoenestasegundaetapa.Lasegundaetapadejaradecalcularel
primerdatoycomenzaraacalcularelsegundo.Obviamenteestoesunaefectoindeseableyaqueel
primerdatonuncasecalculara.Parasolucionarestetipodeinconvenientesseharquelasetapas
que tardan menos esperen a las que tardan ms, de hecho toda etapa tardar, mediante la
incorporacinretrasos,untiempoigualalaetapamslenta,oseaalTimximo.Enotraspalabras
sesincronizarelcircuito.
2
Autor:EmmanuelLujn

MIPSSegmentado|TcnicasAvanzadasdeDiseodeSistemasDigitales|IngenieradeSistemas
Ahora estamos en condiciones de replantearnos este problema. El primer dato ser
procesado por la ltima etapa luego de un tiempo igual a N veces la duracin de una etapa
sincronizada:
Tiempodeprocesamientodeunaetapasincronizada,Te=max(Ti)
Tiempodellenadodelpipe,Tl=N*Te
Esosignificaqueinmediatamentedespusdetranscurridoeltiempo Tl seobtieneenla
salidaelprimerdatocompletamenteprocesado.Yluego,inmediatamentedespusdeltiempoTl+Te
se obtiene en la salida el segundo dato completamente procesado. El tercero se obtendr
inmediatamentedespusdeTl+2*Te.Enunsentidomsgenerallavelocidaddeprocesamientodel
circuitosegmentadoluegodeltiempodellenadoes:
V(Cseg)=1dato/Te
*notamosqueV(Cseg)>V(C).
Luego,dadosMdatos
eltiempototaldeprocesamientodelcircuitosegmentado,Tp(Cseg)=Tl+Te*(M1)
yaqueTlesloquetardaelprimerdato,yconunavelocidadde1datocadauntiempoTeluegodel
priemero,losM1datosrestantestardarnTe*(M1).
Comparemosconeltiempodeprocesamientodelcircuitooriginal:
Sabiendoque,
N>1,deotromodocarecedesentidosegmentar.
M>0,deotromodocarecedesentidoprocesardatos.
Mesmuygrande.
Ti,Te,T>0porsertiempos
Ti<T comoseexplicanteriormente
=>max(Ti)<T=>Te<T

3
Autor:EmmanuelLujn

MIPSSegmentado|TcnicasAvanzadasdeDiseodeSistemasDigitales|IngenieradeSistemas
Entonces,

Te<T
=>1<T/Te
=>0<T/Te1
Yaque,lim(N/M+1/M)cuandoM>inf=0
paraMsuficientementegrande(debidoaqueelvolumendedatosesmuygrande):
N/M+1/M<T/Te1
=>(N+1)/M<(TTe)/Te
=>Te(N+1)<M(TTe)
=>0<M(TTe)Te(N+1)
=>0<M(TTe)Te*N+Te
=>0<T*MTe*NTe*M+Te
=>0<T*MTe*(N+M1)
=>Te*(N+M1)<T*M
=>Te*N+Te*(M1)<T*M
=>Tl+Te*(M1)<T*M
=>

T(Cseg)<T(C)

1.2.ACERCADELOSMIPS
ConelnombredeMIPS(siglasdeMicroprocessorwithoutInterlockedPipelineStages)se
conoce a toda una familia de microprocesadores de arquitectura RISC desarrollados por MIPS
Technologies.
Los diseos del MIPS son utilizados en la lnea de productos informticos de SGI; en
muchos sistemas integrados; endispositivos para Windows CE; routers Cisco; y videoconsolas
comolaNintendo64olasSonyPlayStation,PlayStation2yPlayStationPortable.
Las primeras arquitecturas MIPS fueron implementadas en 32 bits, si bien versiones
posterioresfueronimplementadasen64bits.Existencincorevisionescompatibleshaciaatrsdel
conjuntodeinstrucciones delMIPS,llamadas MIPS I, MIPS II, MIPS III, MIPS IV y
MIPS 32/64. Asimismo estn disponibles varias "extensiones", tales como la MIPS-3D
consistenteenunsimpleconjuntodeinstruccionesSIMDenpuntoflotantededicadasatareas3D
comunes, la MDMX(MaDMaX) compuesta porunconjuntoms extensode instrucciones SIMD
enterasqueutilizanlosregistrosdepuntoflotantede64bits,laMIPS16queaadecompresinal
flujodeinstruccionesparahacerquelosprogramasocupenmenosespacio(presuntamentecomo
respuestaalatecnologadecompresinThumbdelaarquitecturaARM)olarecienteMIPS MT
que aade funcionalidades multithreading similares a la tecnologa HyperThreading de los
procesadoresIntelPentium4.
4
Autor:EmmanuelLujn

MIPSSegmentado|TcnicasAvanzadasdeDiseodeSistemasDigitales|IngenieradeSistemas
Debidoaquelosdiseadorescrearonunconjuntodeinstruccionestanclaro,loscursos
sobrearquitecturadecomputadoresenuniversidadesyescuelastcnicasamenudosebasanenla
arquitecturaMIPS.EldiseodelafamiliadeCPU'sMIPSinfluirademaneraimportanteenotras
arquitecturasRISCposteriorescomolosDECAlpha.
1.2.MIPSSEGMENTADO
La versin de MIPS que se dar tratamiento en este informe corresponde al MIPS
Segmentado.Sudiseoesexpuestoenlasiguientefigura:

Figura1.3MIPSSegmentado

5
Autor:EmmanuelLujn

MIPSSegmentado|TcnicasAvanzadasdeDiseodeSistemasDigitales|IngenieradeSistemas

IMPLEMENTACINVHDL
2.1.DISEOGENERAL
Seescogeunavisintopdownparaexplicareldiseoenvhdl.Laentidadtoplevelfueel
testbench,quienusasloalaentidadSEGMENTED_MIPSestimulandosusdosnicassealesde
entrada:ClockyReset.Eltestbenchnotieneentradas.

Figura1.4EntidadTestbench
LaentidadSegmentedMIPS,haceusodecincoentidades:InstructionFetching,Instruction
Decoding,Execution,MemoryAccessyWriteBack;conectandosusentradasysussalidassegnel
diseopreestablecidodelprocesadorMIPS. Noseagregalgicaadicional,slolasconexiones
entrelasetapasylasconexionesdecadaetapaconelResetyelClock.

Figura1.5EntidadSegmentedMips
6
Autor:EmmanuelLujn

MIPSSegmentado|TcnicasAvanzadasdeDiseodeSistemasDigitales|IngenieradeSistemas
Cadaetapasecomponedeloscomponentesnecesariosparasufuncionamiento,queson:
otrasentidades,lgicaadicionalysusregistrosdesincronizacin.

Figura1.6Entidaddeunaetapageneral
Esta etapa genrica contempla todos los casos de diseo de las etapas. Las mismas
generalmentesonmsrestrictivas

Lostrescomponentesusanlasentradasdelaetapa.Losregistrodesincronizacinsloel
ClockyelReset,ylasdemspuedenusartodaslasentradas.
Lalgicaadicional,encasodequeexistiere:
Se relaciona con las otras entidades, realizando algn clculo para proveer una
entradaalasmismas(porejemploelshiftaizquierdadelaetapadeexecution).
Serelacionaconlosregistrosdesincronizacin,realizandoalgnclculoenbasea
las entradas de la etapa y proveyendo entradas para los mismos (por ejemplo la
extensindesignodeinstructiondecoding).
OtroscasossonposiblesperonosedanenelMIPStratado.
Lasotrasentidades,existenentodaslasetapas,y:
Se relacionan con los registros, generando entradas a los mismos en base a las
entradasdelaetapa,
Serelacionanconlalgicaadicionaldelamaneraantesexpuesta.
Losregistrosdesincronizacinexistenentodaslasetapasexceptolaltima.
Serelacionanconlosdemscomponentesdelamaneraantesexpuesta.

7
Autor:EmmanuelLujn

MIPSSegmentado|TcnicasAvanzadasdeDiseodeSistemasDigitales|IngenieradeSistemas
2.2.ANLISISPORETAPA
Acontinuacinsemencionarelunadescripcingeneraldelfuncionamientodecadaetapa
ylaimplementacindesuscomponentes.Antesdecomenzardebemosnotarquetodaslas
entidadesdesincronizacindedatosrespondenalamismaformadediseo,porloquese
evaluarnalfinalizarlosanlisisparanoredundarenexplicaciones.
Otroaspectoencomnesqueelprocesamientodetodaslasetapasseproduceantesdel
prximoflancoascendentedereloj.
2.2.1.InstructionFetching(BsquedadeInstruccin)

Descripcingeneral:allevantarseelflancodereloj(risingedge)PCdejarsalirladireccindela
instruccin actual. Por un lado la misma ser la entrada de la Memoria de Instruccin, quien
emitircomosalidalaprximainstruccin.
Por otro lado dicha direccin ser la entrada de un
sumador, el cual arrojar como salida esa direccin ms
cuatro. Esta es la potencial (debido a que puede haber un
salto) direccindelasiguienteinstruccin.Secuentadea
cuatro debido a la forma en que est implementada la
MemoriadeInstruccin,cadainstruccinocupacuatrobytes
ylamemoriaproveeaccesodeaunbyte.
Luegolapotencialprximadireccinesfiltradapor
unmuxenconjuntoconunaentradaasincrnicayenbasea
unselector,PCSrc,quetambinesunaentradaasincrnica.
Laotradireccinesunadireccindesalto,yelselectores
unaordendelaunidaddecontrolfrentealeventodesaltar.Si
elselectorestadesactivadoquienpasaporelmuxyentraa
PCesladireccincalculadaporelsumador.Siestaactivado,
hubounsalto,yquienpasaelladireccindesalto.
LasalidadelsumadorydelaMemoriadeInstruccin
pasanalaetapasiguiente.

Figura2.1Instructionfetching
Descripcindecomponentes:
Lgicaadicional:
Muxconvencional.Implementacinvhdl:

8
Autor:EmmanuelLujn

MIPSSegmentado|TcnicasAvanzadasdeDiseodeSistemasDigitales|IngenieradeSistemas
MUX_PC:process(PCSrc_IN,PC_ADDR_AUX2,NEW_PC_ADDR_IN)
begin
if(PCSrc_IN='0')then
PC_ADDR_AUX3<=PC_ADDR_AUX2(N1downto0);
else
PC_ADDR_AUX3<=NEW_PC_ADDR_IN;
endif;
endprocessMUX_PC;

Otrasentidades:
Sumador:sumadorde32bitsconstruidoenbaseafulladder'sconvencionales.
Implementacinvhdl:enbaseageneratedefulladders.
BEGIN_FA:FULL_ADDERportmap(
X
=>X(0),
Y
=>Y(0),
CIN
=>CIN,
COUT =>CAUX(0),
R
=>R(0)
);
GEN_ADDER: foriin1toN1generate
NEXT_FA:FULL_ADDERportmap(
X
=>X(i),
Y
=>Y(i),
CIN
=>CAUX(i1),
COUT =>CAUX(i),
R
=>R(i)
);
endgenerate;
COUT<=CAUX(N1);

PC. Implementacin vhdl: registro genrico instanciado a 32 bits con reset


asincrnico.
REG:

process(CLK_IN,RESET_IN,DATA_IN)
begin
if(RESET_IN='1')then
DATA_OUT<=(others=>'0');
elsifrising_edge(CLK_IN)then
DATA_OUT<=DATA_IN;
endif;
endprocess;

MemoriadeInstruccin(odePrograma):Memoriaromconelcontenidodelas
instruccionesqueejecutarelprocesador.Eltraductorexplicadoposteriormentese
encargadepasarcdigoassembleracdigovhdl.Dichocdigovhdlesanexadoala
romaquexpuesta.

SegneldiseodelMIPStieneuntamaode232 instruccionesde32bits
cadauna.Debidoalimitacionesdeimplementacinrelacionadasconlaherramienta
usadaserestringealamemoriaa1024instruccionesde32bitscadauna.
9
Autor:EmmanuelLujn

MIPSSegmentado|TcnicasAvanzadasdeDiseodeSistemasDigitales|IngenieradeSistemas
Implementacinvhdl,seimplementauncasedentrodeunproceso:
caseREAD_ADDRis
when"00000000000000000000000000000000"=>
INST<="00000001010000000010000000100000";
when"00000000000000000000000000000100"=>
INST<="00000000000000000000000000100010";
when"00000000000000000000000000001000"=>
INST<="00000000000000000000000000100010";
when"00000000000000000000000000001100"=>
...
whenothers=>
INST<="11111111111111111111111111111111";
endcase;

2.2.2.InstructionDecoding(DecodificacindeInstruccin)

Descripcingeneral:alproducirseunflancoascendentelosregistrosdesincronizacindelaetapa
anterioractualizanlassealesaserprocesadas.Laprximainstruccin(lasalidadelsumador)pasa
directamentealosregistrosdesincronizacin.Estaserprocesadaporotraetapaencasodeque
hayaunsalto.
Lainstruccinpropiamentedicha(lasalidadelaMemoriadeInstruccin)esseparadaen
suscampos.Lostiposdeinstruccionesaloscualesdaremostratamientoson:

Figura2.2Tiposdeinstrucciones

Dichoscampossonlasentradasdetrespartesdeprocesamientodentrodelaetapa.
10
Autor:EmmanuelLujn

MIPSSegmentado|TcnicasAvanzadasdeDiseodeSistemasDigitales|IngenieradeSistemas

ElprimeroeslaUnidaddeControl,quienseencargardecalcularlasrdenesalascuales
responderlaRutadedatos(DataPath)paraejecutarla
instruccin.
El segundo es el Banco de Registros. Rs y Rt,
quienessondireccionesderegistros,seconectanaRead
Register1y2respectivamente.Encasodeproducirseuna
lectura,cuandoRegWriteestadesactivado,ReadData1y
2actualizansussalidasconelcontenidodelosregistros
direccionados por Rs y Rt. En caso de una escritura,
hechoqueocurreenlaetapaWB,cuandoRegWriteesta
activado,lasdosentradasasincrnicasdelaetapadicen
dndesevaaguardarelnuevodato,WriteRegister,y
cualeseldatoguardarse,WriteData.
Porltimosehaceunaextensindesignoparael
campoOffset(Instruccin[150]).
LassalidasdelaUnidaddeControl,laprxima
instruccin,lassalidasdelBancodeRegistros,elOffset
extendido y los componentes de la instruccin Rt
(Instruccin[2016]) y Rd (Instruccin[1511]) son
enviadosalosregistrosdesincronizacin.

Figura2.3Instructiondecoding

Descripcindecomponentes:
Lgicaadicional:
Extensindesigno.Sedebetenerencuentasielnmeroespositivoonegativopara
hacerlaextensin.Yqueelnmeroestarepresentadoencomplementoados,por
tantoelbitdemsaltopesoesindicadordelsignoaextender.
OFFSET_AUX

<=ZERO16b&OFFSET_A
whenOFFSET_A(15)='0'
elseONE16b&OFFSET_A;

Nota:sehaceusodeconstantesyalias.
Otrasentidades:
Unidad de Control: controla los componentes en cada etapa para ejecutar la
instruccionescorrectamente.Sussealesdecontrolestnsincronizadas,oseaquea
medidaqueunainstruccinseejecutaetapaaetapa,dichassealesacompaanala
instruccincontrolandoaloscomponentesdelaetapa.Espuramentecombinacional.
11
Autor:EmmanuelLujn

MIPSSegmentado|TcnicasAvanzadasdeDiseodeSistemasDigitales|IngenieradeSistemas
LaUnidaddeControltomacomoentradaelcampoOp(Instruccin[3126])=
(Op5,Op4,Op3,Op2,Op1,Op0)

Figura2.4UnidaddeControl
ElcdigoVHDLesunmapeodirectoyresultatrivial:
R_TYPE

<=

notOP(5)andnotOP(4)andnotOP(3)and
notOP(2)andnotOP(1)andnotOP(0);

<=

OP(5)andnotOP(4)andnotOP(3)and
notOP(2)andOP(1)andOP(0);

<=

OP(5)andnotOP(4)andOP(3)and
notOP(2)andOP(1)andOP(0);

BEQ

<=

notOP(5)andnotOP(4)andnotOP(3)and
OP(2)andnotOP(1)andnotOP(0);

RegWrite
MemtoReg
Brach
MemRead
MemWrite
RegDst
ALUSrc
ALUOp0
ALUOp1

<=
<=
<=
<=
<=
<=
<=
<=
<=

R_TYPEorLW;
LW;

BEQ;
LW;
SW;
R_TYPE;
LWorSW;
BEQ;
R_TYPE;

LW
SW

12
Autor:EmmanuelLujn

MIPSSegmentado|TcnicasAvanzadasdeDiseodeSistemasDigitales|IngenieradeSistemas
Lasiguientetablamuestralosvaloresdelassealesdecontroldependiendola
instruccinqueseejecuta.

Figura2.5SalidasdelaUnidaddeControl
Enposdeagruparlassealesdecontroldecadaetapasehaceusodelossiguientes
registros:

typeWB_CTRL_REGis
record
RegWrite
:
MemtoReg
:
endrecord;
typeMEM_CTRL_REGis
record

Branch
:
MemRead
:
MemWrite
:
endrecord;
typeALU_OP_INPUTis
record
Op0
:
Op1
:
endrecord;
typeEX_CTRL_REGis
record
RegDst
:
ALUOp
:
ALUSrc
:
endrecord;

STD_LOGIC;
STD_LOGIC;

STD_LOGIC;
STD_LOGIC;
STD_LOGIC;

STD_LOGIC;
STD_LOGIC;

STD_LOGIC;
ALU_OP_INPUT;
STD_LOGIC;

BancodeRegistros:elfuncionamientofueexplicadoenladescripcingeneral.
Estdefinidodeacuerdoalsiguientetipo:
typeREGS_Tisarray(NUM_REG1downto0)ofSTD_LOGIC_VECTOR(INST_SIZE1downto0);

13
Autor:EmmanuelLujn

MIPSSegmentado|TcnicasAvanzadasdeDiseodeSistemasDigitales|IngenieradeSistemas
Poseeunresetasincrnicoimplementadoconelproceso:
REG_ASIG:
process(CLK,RESET,RW,WRITE_DATA,RD_ADDR)
begin
ifRESET='1'then
foriin0toNUM_REG1loop
REGISTROS(i)<=(others=>'0');
endloop;
elsifrising_edge(CLK)then
ifRW='1'then
REGISTROS(to_integer(unsigned(RD_ADDR)))
<=WRITE_DATA;
endif;
endif;
endprocessREG_ASIG;

Ysulgicarespondealsiguientecodigo:
RS<=(others=>'0')whenRS_ADDR="00000"
elseREGISTROS(to_integer(unsigned(RS_ADDR)));
RT<=(others=>'0')whenRT_ADDR="00000"
elseREGISTROS(to_integer(unsigned(RT_ADDR)));

2.2.3.Execution(ejecucin)
Descripcin general: al producirse una flanco de subida los
registrosdesincronizacindelaetapaanterioractualizarnlas
sealesdeentradalaetapaactual.Algunassealesdecontrol,
WB y M, se postergarn hacia etapas siguientes, yendo
directamentealosregistrosdesincronizacin.
El Offset extendido de la etapa anterior es multiplicado por
cuatro(coneldobleshiftaizquierda)ysumadoaladireccinde
la prxima instruccin (calculada en IF). Recordemos que la
multiplicacin por cuatro se debe a la implementacin de la
MemoriadeInstruccin.Elresultadoesunapotencialdireccin
desalto,efectoquesedecidirenlaetapasiguiente.
PorsupartelasealdecontrolALUOpyelcampoFunc
de la instruccin sern las entradas del ALU Control, quien
procesarestosdatosyemitircomosalidalaaccinquedebe
tomarlaALU(ADD,SUB,AND,ORoSLT).
LaALUrealizarentonceslaoperacincomandadapor
ALUControlenbasealosparmetrosdeentradaRsyRtobien,
enbaseaRsyelOffsetextendido.Estadecisinestomadapor
unmuxgobernadoporALUSrc,ydependedesiloquesequiere
haceresunADD,SUB,AND,OR,SLToBEQobienunLWo
Figura2.6Execution
14
Autor:EmmanuelLujn

MIPSSegmentado|TcnicasAvanzadasdeDiseodeSistemasDigitales|IngenieradeSistemas
SW,yaqueestosltimoshacenlasumadeBase+Offset.

PorltimoexisteunmuxcontroladoporRegDstquefiltraaRtyRd.Estesedebequedos
registros destino dependiendo de la instruccin. El registro destino de la mayora de las
instruccionesesRd,peroparaelLWelregistrodestinoesRt.
Descripcindecomponentes:
Lgicaadicional:
Muxconvencionales.
DobleShiftaizquierda:
OFFSET_SHIFT2<=OFFSET(29downto0)&"00";

Otrasentidades:
Sumador.ComponentereusadodelaetapadeIF.
ControldelaALU.Respondealsiguientediagrama:

Figura2.7ControldelaALU
NuevamenteelcdigoVHDLresultaunmapeodirecto:
ALU_IN.Op0<=ALU_OP_IN.Op1and(FUNCT(0)orFUNCT(3));
ALU_IN.Op1<=(notALU_OP_IN.Op1)or(notFUNCT(2));
ALU_IN.Op2<=ALU_OP_IN.Op0or(ALU_OP_IN.Op1andFUNCT(1));

Elresultadoobtenido,ALUINPUT,esalmacenadoenunregistro:

typeALU_INPUTis
record
Op0
:
Op1
:
Op2
:
endrecord;

STD_LOGIC;
STD_LOGIC;
STD_LOGIC;

15
Autor:EmmanuelLujn

MIPSSegmentado|TcnicasAvanzadasdeDiseodeSistemasDigitales|IngenieradeSistemas
LasiguientetablamuestralosvaloresdelassealesdecontroldelaALU
dependiendolainstruccinqueseejecuta:

Figura2.8EntradasySalidasdelControldelaALU

UnidadAritmticoLgica(ALU).
ALUdeunbit.EstecircuitoeslaclulabsicadelaALU,yrealizaunADD,
SUB, AND, OR o SLT dependiendo de tres entradas : OpCode2(bit
invert),OpCode1yOpcode0,talcomoseveenlacolumnaALUInputdela
figura anterior. BitInvert cambia la operacin de ADD a SUB con un
inversor,debidoaquelosnmerosestnrepresentadosencomplementoa
dos.Cinslointervieneenlasuma.LessySetintervienenenelSLT,sern
explicadosluego.OpCode1yOpCode0sonlosselectoresdelmuxqueelige
elresultadodesalida.

Figura2.9ALUde1bit
16
Autor:EmmanuelLujn

MIPSSegmentado|TcnicasAvanzadasdeDiseodeSistemasDigitales|IngenieradeSistemas
DichodiseollevadoacdigoVHDL:
MUX_BINV:process(BINVERT,Y)is

begin

ifBINVERT='0'then

NEW_Y<=Y;

else

NEW_Y<=notY;

endif;

endprocessMUX_BINV;

R0<=XandNEW_Y;
R1<=XorNEW_Y;

FULLADDER_ALU:FULL_ADDERportmap(
X
=>X,
Y
=>NEW_Y,
CIN
=>CIN,
COUT =>COUT,
R
=>R2
);
R3<=LESS;
MUX_RES_ALU:process(OP1,OP0,RES_AUX,R0,R1,R2,R3)is

begin

if(OP1='0'andOP0='0')then

RES_AUX<=R0;

elsif(OP1='0'andOP0='1')then

RES_AUX<=R1;

elsif(OP1='1'andOP0='0')then

RES_AUX<=R2;

elsif(OP1='1'andOP0='1')then

RES_AUX<=R3;

endif;

endprocessMUX_OP;
RES<=RES_AUX;
SET<=R2;

ALU:paraimplementarlaALUde32bitsseharusodeunaconcatenacin
deALUde1bit.Laprimerallevarcarrynulo.Todasserncontroladaspor
losOpCode2,1y0.
ParaimplementarelSLTtodoslosLessexceptoelprimerosernceroy
todos los Set excepto el ltimo tambin sern cero. El ltimo Set estar
conectadoalprimerLess,deesamanerasilarestadinegativa(AB<0=>
A<B),elltimoSetser1(porcomplementoados)yportantoelprimer
Less ser tabin uno. O sea que el resultado final ser
0000000000000000000000000000000000000001,
que son todos los
Less=0exceptoelprimeroqueesuno.
17
Autor:EmmanuelLujn

MIPSSegmentado|TcnicasAvanzadasdeDiseodeSistemasDigitales|IngenieradeSistemas
ElsiguientediagramamuestraeldiseodelaALU:

Figura2.10ALU
ParaelclculodelasFlagsseutilizaelsiguienteregistro:
typeALU_FLAGSis
record
Carry
Overflow
Zero
Negative
endrecord;

:
:
:
:

STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;

Recordemosqueparacalcularlasflags:
Carry=Cn1
Overflow=Cn1xorCn2
Zero=not(Rn1or....orR0)
Negative=SETn1=Rn1
18
Autor:EmmanuelLujn

MIPSSegmentado|TcnicasAvanzadasdeDiseodeSistemasDigitales|IngenieradeSistemas
ElsiguientecdigoVHDLmuestralaimplementacindelaALU:
BEGIN_ALU1B:ALU_1BITportmap(
X
=>X(0),
Y
=>Y(0),
LESS =>LESS_AUX,
BINVERT=>ALU_IN.Op2,
CIN
=>ALU_IN.Op2,
OP1
=>ALU_IN.Op1,
OP0
=>ALU_IN.Op0,

);

RES
=>R_AUX(0),
COUT =>COUT_AUX(0)

GEN_ALU:foriin1toN2generate
NEXT_ALU1B:ALU_1BITportmap(
X
=>X(i),
Y
=>Y(i),
LESS =>'0',
BINVERT=>ALU_IN.Op2,
CIN
=>COUT_AUX(i1),
OP1
=>ALU_IN.Op1,
OP0
=>ALU_IN.Op0,
RES
=>R_AUX(i),
COUT =>COUT_AUX(i)
);
endgenerate;
LAST_ALU1B:ALU_1BITportmap(
X
=>X(N1),
Y
=>Y(N1),
LESS =>'0',
BINVERT=>ALU_IN.Op2,
CIN
=>COUT_AUX(N2),
OP1
=>ALU_IN.Op1,
OP0
=>ALU_IN.Op0,
RES
=>R_AUX(N1),
COUT =>COUT_AUX(N1),
SET
=>LESS_AUX
);

FLAGS.Carry<=COUT_AUX(N1);
FLAGS.Overflow<=COUT_AUX(N1)xorCOUT_AUX(N2);
FLAGS.Negative<='1'whenR_AUX(N1)='1'else'0';
FLAGS.Zero<='1'
whenR_AUX=ZERO32belse'0';
R<=R_AUX;

19
Autor:EmmanuelLujn

MIPSSegmentado|TcnicasAvanzadasdeDiseodeSistemasDigitales|IngenieradeSistemas
2.2.4.Memoryaccess(accesoamemoria)
Descripcingeneral:alproducirseunaflancodesubidalosregistrosdesincronizacindelaetapa
anterior actualizarn las seales de entrada la etapa actual. Las seales de control WB se
postergarnhacialasiguienteetapa,yendodirectamentealosregistrosdesincronizacin.
Dentrodelassealesdecontroldelaetapaactualsetienela
sealBranch.PararealizarlainstruccinBEQ(saltoporigual)se
debencuplirdoscondiciones,quesedeseehacerunsalto(Branch=1)
yquelarestaentrelosdosregistrosdadosenlainstruccinseacero,
oseaquelosregistrosseaniguales.EsporesoqueserealizaunAND
entreBranchyelflagZerodelaALU.Elresultadoesuncontrol
asincrnicohacialaetapaIFllamadoPCSrc.Porotroladoenlaetapa
anteriossecalculolapotencialdireccindesalto(Direccin+Offset
extendido por cuatro), dicha direccin ser la entrada al mux
controladoporPCSrc.
PorsupartelaMemoriadeDatosescontroladaporlasseales
MemReadyMemWrite.Silainstruccinqueseestaejecutandoesun
LWslolasealMemReadestaractivada,portantoenbaseala
direccincalculadaporlaALU,enelcampoAddressseemitircomo
salidaelcontenidodedichadireccinenReaddata.Silainstruccin
que se esta ejecutando es un SW slo la seal MemWrite estar
activada,estoproducirqueenladireccindelcampoAddressse
grabeelcontenidodeWritedata.EsteltimoeselcampoRt,yfue
provistoporlaetapaanterior.
Por ltimo, la direccin calculada por la ALU, el campo
Addressseredirigealosregistrosdesincronizacinparalasiguiente
etapa,ascomotambinladireccindelmuxcontroladoporRegDst
delaetapaanterior.
Figura2.11Memoryaccess
Descripcindecomponentes:
Lgicaadicional:
ANDconvencional.
Memoria de Datos: la implementacin VHDL resulta bastante sencilla. Es una
entidadgenrica,dondeMeslacantidaddedatosdelamemoriayNeseltamaode
undatoenbits.Sedefineelsiguientetipo:
typeMEM_Tisarray(NUM_REG1downto0)ofSTD_LOGIC_VECTOR(INST_SIZE1downto0);
signalMEM:MEM_T;

20
Autor:EmmanuelLujn

MIPSSegmentado|TcnicasAvanzadasdeDiseodeSistemasDigitales|IngenieradeSistemas
Poseeunresetasincrnico.
MEM_PROC:
process(RESET,MemWrite,MemRead,WRITE_DATA,MEM,ADDR)
begin
if(RESET='1')thenResetAsincrnico
foriin0toM1loop
MEM(i)<=(others=>'1');
endloop;
Ejecutolasordenesdelaunidaddecontrol:
elsifMemWrite='1'thenObienescriboenlamemoria
MEM(to_integer(unsigned(ADDR(9downto0))))<=WRITE_DATA;
elsifMemRead='1'thenObienleodeella

READ_DATA<=MEM(to_integer(unsigned(ADDR(9downto0))));
endif;
endprocessMEM_PROC;

2.2.4.Writeback(postescritura)

Descripcingeneral:alproducirseunaflancodesubidalosregistrosdesincronizacinde
laetapaanterioractualizarnlassealesdeentradala
etapaactual. Elobjetivodeestaetapaes actualizarel
BancodeResgistrosdelaetapaID.Lasealdecontrol
RegWriteestaractivaencasodequesedebahacerla
escritura. Dicha escritura slo es vlida para las
instrucciones de TipoR, por ejemplo un ADD que
necesitaqueseguardeelresultadoenelregistroRd.O
bienparalainstruccinLW,yaqueestatraeundatode
laMemoriadeDatosyloguardaenunregistro.
Write register es la direccin del registro a
guardarypuedeserRdsiesunaTipoRoRtsiesun
LW(recordemosqueestosedecidienlaetapadeEX
con el mux controlado por RegDst). Y finalmente
MemToRegdecidirqueesloqueseguardarenWrite
data.SiestaactivadoloquesequierehaceresunLWy
losdatossernlosextraidosdelaMemoriadeDatosen
laetapaanterior.Sinoloest,esunaTipoRyeldato
ser el resultado procesado por la ALU que se viene
trayendodesdelaetapadeEX.
Figura2.12Writeback

21
Autor:EmmanuelLujn

MIPSSegmentado|TcnicasAvanzadasdeDiseodeSistemasDigitales|IngenieradeSistemas
Descripcindecomponentes:
Lgicaadicional:
Muxconvencional
Otroscomponentes:
BancodeRegistros.Explicadoenseccin2.2.2
2.2.5.Registrosdesincronizacin
EstosregistrosseencuentranentodaslasetapasexceptoWB.Yseencarganderetrasarel
procesamientodecadaetapaaldelaetapamslenta,demaneradesincronizartodoelprocesador
(verintroduccin).
Se implementan de manera muy sencilla en VHDL. Como ilustracin se muestra la
implementacindelosregistrosdelaetapaIF:
IF_ID_REGS: process(CLK,RESET)
begin
ifRESET='1'then
NEW_PC_ADDR_OUT
<=ZERO32b;
INST_REG_OUT
<="ZERO32b;
elsifrising_edge(CLK)then
NEW_PC_ADDR_OUT <=NEW_PC_ADDR_IN;
INST_REG_OUT<=INST_REG_IN;
endif;
endprocess;

2.2.6.AgregadodelainstruccinLUI
Enlasdescripcionesquehemoshechohastaahoranosehaconsideradolaimplementacin
delainstruccinLUI.Paraellodeberemosmodificarparcialmentealgunasentidades.
LUI(LoadUpperImmediate)esunainstruccintipoI,quetienecomopropsitolacarga
altadeunregistro(R[31..16]).Laideaeslasiguiente,elprocesamientodeLUIesmuysimilaral
LW,yaqueamboscarganunvaloraunregistrodelBancodeRegistros.
LW
LUI

Rt,Offset(Base)
Rt,immediate

LadiferenciaradicaenlaALU.MientrasqueenLWsesumalaBase(Rs)conelOffset,en
LUIsedesprecialaBaseysehaceunshiftaderechade16bitsconImmediate(Offset),yaqueel
objetivoescargarlapartealta.Dichoresultado,osealasalidadelaALU,seguardaenRtenambos
casos.
22
Autor:EmmanuelLujn

MIPSSegmentado|TcnicasAvanzadasdeDiseodeSistemasDigitales|IngenieradeSistemas
ParalograrestoprimerosedeberhacerunamodificacinalaALU.Seleagregaruna
sealdecontrolms,queindiquecuandosedebehacerelshiftyquedichoresultadodebeasignarse
alasalidaenvezdelcalculadohabitualmente(R_AUX).
ALU_RES:process(ALU_IN.Op3,R_AUX)
begin
ifALU_IN.Op3='1'then
R<=Y(((N/2)1)downto0)&&ZERO16b;
else
R<=R_AUX;
endif;
endprocess;

EstecambiosepropagaalControldelaALU,debidoalanuevasealdecontrol.

Figura2.13ModificacinenControldelaALUparaLUI
De aqusedesprendenms propagaciones decambios.Enlos registrosALU_INPUT y
ALU_OP_INPUT,yporsupuestoenlaUnidaddeControl.
Cambiosenlosregistros:

23
Autor:EmmanuelLujn

MIPSSegmentado|TcnicasAvanzadasdeDiseodeSistemasDigitales|IngenieradeSistemas
CambiosenlaUnidaddeControl:

Figura2.14ModificacinenlaUnidaddeControlparaLUI
ComovemosnosloseagregaALUOp2,sinoquetambinseconservanlosvaloresdelas
sealesigualqueenLW,exceptoenMemToReg,lacualdebeserceroparaqueenlaetapadeWB
paseelresultadodelaALUynolasalidadelaMemoriadeDatoscomocontenidoaescribirseen
elregistroRt.

24
Autor:EmmanuelLujn

MIPSSegmentado|TcnicasAvanzadasdeDiseodeSistemasDigitales|IngenieradeSistemas
2.3.CALIDADDELCDIGO
Convencindenombres:
Usodeletrasminsculasparatodoslosnombresdelasseales,nombresdevariables(nose
usaronenesteproyecto)ypuertos.Ymaysculasparalosnombresdelasconstantesylos
tipos.
Usodenombressignificativos.
Usodeunnombreconsistenteparaelclockyelreset:clkyreset.
Usoconsistentedelordendelosbusesmultibit:(Xdownto0)
Usodenombressimilaresenlospuertosylassealesqueselesconectan.
Losnuevostipos(tiposcreadosporelusuario)finalizanen_T
Encabezadosycomentarios:

Descripcingeneral.Ej:MemoriadedatosdelprocesadorMIPSSegmentado

Licencia:Copyright2008EmmanuelLujn

Thisprogramisfreesoftware;youcanredistributeitand/or

modifyitunderthetermsoftheGNUGeneralPublicLicenseas

publishedbytheFreeSoftwareFoundation;eitherversion2of

theLicense,or(atyouroption)anylaterversion.Thisprogram

isdistributedinthehopethatitwillbeuseful,butWITHOUT

ANYWARRANTY;withouteventheimpliedwarrantyofMERCHANTABILITY

orFITNESSFORAPARTICULARPURPOSE.SeetheGNUGeneralPublic

Licenseformoredetails.Youshouldhavereceivedacopyofthe

GNUGeneralPublicLicensealongwiththisprogram;ifnot,write

totheFreeSoftwareFoundation,Inc.,51FranklinSt,FifthFloor,

Boston,MA021101301USA.

Autor:
EmmanuelLujn
Email:
info@emmanuellujan.com.ar
Versin:
1.0

EstilodeEscritura:
Usodeuntab(envezdedosespacios)deidentacinparamejorarlalegibilidad.
Lneasconmenosde72caracteresexceptoenloscomentariosdelasentidades,quedeotra
formaalarganmuchoelcdigo.
Puertosygenricos:
Usodecomentariosparadescribirpuertos.
Usodemapeosexplcitosparapuertosygenricos,envezdemapeoposicional.

UsodeArraysyLoops
25
Autor:EmmanuelLujn

MIPSSegmentado|TcnicasAvanzadasdeDiseodeSistemasDigitales|IngenieradeSistemas
Desaciertosensimulacinysntesis:
Especificacindelistasdesensibilidadcompletas.
Enunciadosderetardoremovidos.SloseusanenelTestBench.
Portabilidaddelcdigo:
UsodelaslibrerasSTDeIEEE.
Usoconservativoenlacantidaddesubtipos.Sloseusandostiposcreadoporelusuarioen
todoelproyecto.
UsosolamentedeSTD_LOGICySTD_LOGIC_VECTORparaseales.
Usodeconstantesenvezdevaloresnumricosfijos(hardcoded).Lasconstantesse
encuentranenunarchivoseparadoqueesincluidoporlaslasentidadesquelasusan.
Reloj:

Activadosloporflancodesubida.
Noseusanrelojesinternos,elrelojesnico.

Usodeentidadesgenricas:
EnelregistrousadoparaimplementarelPC,enIF.
EnelsumadorusadoenIFyEX.
EnlaALUdeEX.
EnlaMemoriadeDatosdeMEM
Usodegeneratesiterativos:
ParalageneracindelaALUenbasealasALU'sde1bit.
Paralageneracindelsumadorenbasealossumadorescompletos.
UsodeAlias:
Constantes
Aliaspropiamentedichos,enID,paraclarificarlasdistintaspartesdelainstruccinqueesta
siendodecodificada.
UsodeRegistros:Paraaunarlassealesdecontroldecadaetapa

26
Autor:EmmanuelLujn

MIPSSegmentado|TcnicasAvanzadasdeDiseodeSistemasDigitales|IngenieradeSistemas
2.4.HERRAMIENTASUSADAS
2.3.1.GHDL
GHDLesunsimuladordeVHDL,basadoenGCC.
ImplementaallenguajeVHDLsegnelestndar IEEE10761987oIEEE10761993.
CompilaarchivosVHDLycreaunbinarioquesimula(oejecuta)nuestrodiseo.
Nohacesntesis:nopuedetraducirnuestrodiseoaunanetlist.
GHDLesSoftwareLibre.
2.3.2.GTKWAVE
Cuandosedeseadebuguearundiseoesmuytilmirarsosondasdigitales.GHDLpuede
generarunarchivodeformadeonda,quesoportadosformatos.
ElprimerformatoVCD(ValueChangeDump),esunformatoabiertodefinidoparaVerilog.
LaespecificacindelformatoestadefinidaporVerilogLRM.VDCesunformatoACII,asquelos
archivosdeestetipocrecenrpidamente.Lamayora(otodos) delosvisoresdeondasdigitales
soportanVCD.
El segundo es el formato de formas de inda de GHDL. Es un formato binario, y sus
especificacionesnoestnancompletamenteterminadas.

VersionesrecientesdeGTKWavepuedenleeresteformato.

Figura2.15GTKWave
27
Autor:EmmanuelLujn

MIPSSegmentado|TcnicasAvanzadasdeDiseodeSistemasDigitales|IngenieradeSistemas

TRADUCTOR
3.1.Funcionalidad
Como se mencion en los objetivos, se necesita un traductor bsico para poder probar
ejemplos en el procesador con mayordinamicidad. Este traductor es un objetivosecundario al
proyecto,porloquesuimplementacinserealizasinmayorprofundidad.

Figura3.1FormatobinariodeinstruccionesTipoR

Figura3.2FormatobinariodeinstruccionesTipoI
28
Autor:EmmanuelLujn

MIPSSegmentado|TcnicasAvanzadasdeDiseodeSistemasDigitales|IngenieradeSistemas
Enlasfigurasanteriorespodemosverelformatodelasinstruccionesimplementadasysu
representacinenbinario.
Losregistrosserepresentanconunsigno$,yelnmeroqueloidentifica.
Porejemplo:ADD$1,$2,$3.
Las b representan los bits que codifican a Rs, Rt, Rd y Offset. Dicha codificacin
representa el nmero que codifica al registro. Tomando como base el ejemplo anterior su
codificacinsera:
00000000010000110000100000100000
*Nota:lacodificacinrealseescribesinespacios.
Eltraductor:
Permitecomentariosdeltipo:
ADD$10,$10,$1//Incrementodelavariable10en1
Noescasesensitive

3.2.Tratamientodeerrores

Deteccindecaracteresinvlidosdentrodeloperador
Eliminacindecaracteresinvlidosdentrodeloperador
Deteccindeoperadorvlido
Deteccindecaracteresinvlidosdentrodeunregistro
Eliminacindecaracteresinvlidosdentrodeunregistro
DeteccindecaracteresinvlidosdentrodelOffset
EliminacindecaracteresinvlidosdentrodelOffset

29
Autor:EmmanuelLujn

MIPSSegmentado|TcnicasAvanzadasdeDiseodeSistemasDigitales|IngenieradeSistemas

ALGORITMODEPRUEBA
4.1.Restoring
SeimplementarelalgoritmodedivisinporelmtododeRestoring.
LadivisinentreelnmeroXeYdacomococienteQyrestoR.
Condiciones:
XeYdebenestarrepresentadosenbinario.
XeYdebensernmerosnaturales.Paralograrlosepuedeusarnormalizacin.
X<Y.Nuevamentesepuedeusarnormalizacin.
Dichoalgoritmorespondealsiguientepseudocdigo:
R0:=X
fori=1toMloop
R(i):=2*RiiY
ifRi>=0then
Qi=1
else
Qi=0
Ri:=2*Ri1
endif
endfor

Parapasardichoprogramaalassembleracotadoporlasinstruccionesdisponiblessesehace
usodelassiguientestcnicas:

Elshiftaderechalohacemossumandodosveceselmismonmero.
shr$1=add$1,$1,$1

ElmayoriguallloimplementamosconSLT:
slt$8,$4,$0
sub$0,$0,$0
sub$0,$0,$0
sub$0,$0,$0
sub$0,$0,$0
beq$8,$1,7

//if(r(i)<0)thenaux:=1elseaux:=0
//nop
//nop
//nop
//nop
//if(aux=1)thengotoPC+7(dndesequierasaltar)
//elsegotoPC(continuarconlaejecucin)

Losnopssonparaevitarproblemasdedependencias.

ParasetearelQiusamosunamscarayluegohagounshiftaderecha:
30
Autor:EmmanuelLujn

MIPSSegmentado|TcnicasAvanzadasdeDiseodeSistemasDigitales|IngenieradeSistemas
ldi$5,1
...
or$12,$12,$5
...
add$5,$5,$5

//orMask=1=00000000000000000000000000000001
//QororMask=>q(i)=1
//orMask:=shifRight(orMask)

EJ:con4bits:0001=>0010

Debidoaqueelalgoritmoesiterativonecesitamosalgunainstruccinquepermitavolver
haciaatrs,paraellousaremosBEQconunOffsetnegativo.Elcompiladorentenderque
debepasarelmismoacomplementoados.Deesamaneraconseguirqueseresteenvezde
sumarenlaetapaEX,porqueloseobtendrunsaltohaciaatrs.
Beq$8,$1,41

//ltimainstruccindelalgoritmo,retornaalprincipiodelloop.

Luegoelcdigoresultantees:
add$4,$10,$0
sub$0,$0,$0
sub$0,$0,$0
sub$0,$0,$0
sub$0,$0,$0
add$3,$4,$0
sub$0,$0,$0
sub$0,$0,$0
sub$0,$0,$0
sub$0,$0,$0
add$4,$3,$3
sub$0,$0,$0
sub$0,$0,$0
sub$0,$0,$0
sub$0,$0,$0
sub$4,$4,$11
sub$0,$0,$0
sub$0,$0,$0
sub$0,$0,$0
sub$0,$0,$0
slt$8,$4,$0
sub$0,$0,$0
sub$0,$0,$0
sub$0,$0,$0
sub$0,$0,$0
beq$8,$1,8
sub$0,$0,$0
sub$0,$0,$0
sub$0,$0,$0
or$12,$12,$5
beq$0,$0,4
sub$0,$0,$0
sub$0,$0,$0

//r(0):=X
//nop
//nop
//nop
//nop
//Rant_aux:=r(i1)
//nop
//nop
//nop
//nop
//r(i):=r(i1)+r(i1)=2*r(i1)=shifRight(r(i1))
//nop
//nop
//nop
//nop
//r(i):=r(i)Y=shifRight(r(i1))Y
//nop
//nop
//nop
//nop
//if(r(i)<0)thenaux:=1elseaux:=0
//nop
//nop
//nop
//nop
//if(aux=1)thengotoNEW_PC+7(gotoelse)
//elsegotoNEW_PC(continuewiththeexecution)
//nop
//nop
//nop
//QororMask=>q(i)=1
//gotoNEW_PC+3(gototheendoftheloop)
//nop
//nop

31
Autor:EmmanuelLujn

MIPSSegmentado|TcnicasAvanzadasdeDiseodeSistemasDigitales|IngenieradeSistemas
sub$0,$0,$0
add$4,$3,$3
add$6,$6,$1
add$5,$5,$5
sub$0,$0,$0
sub$0,$0,$0
sub$0,$0,$0
slt$8,$6,$7
sub$0,$0,$0
sub$0,$0,$0
sub$0,$0,$0
sub$0,$0,$0
beq$8,$1,41

//nop
//r(i):=shifRight(r(i1));q(i)=0becauseitwasinitializatedallinzero.
//i++
//orMask:=shifRight(orMask)e.g.with4bits:0001=>0010
//nop
//nop
//nop
//if(i<N)thenaux:=1elseaux:=0
//nop
//nop
//nop
//nop
//if(aux=1)thengotobegining_of_the_loop
//elsegotoNEW_PC(end)

32
Autor:EmmanuelLujn

MIPSSegmentado|TcnicasAvanzadasdeDiseodeSistemasDigitales|IngenieradeSistemas

BIBLIOGRAFA
Apuntestericos:

ArquitecturadeComputadorasI,
UniversidadNacionaldelCentrodelaProvinciadeBuenosAires.
http://www.exa.unicen.edu.ar/catedras/arqui1/

ArquitecturadeComputadorasyTcnicasDigitales,
UniversidadNacionaldelCentrodelaProvinciadeBuenosAires.
http://www.exa.unicen.edu.ar/catedras/arqui2/

LenguajededescripcindehardwareVHDL,
Ing.MartnVazquez.
UniversidadNacionaldelCentrodelaProvinciadeBuenosAires.
http://www.exa.unicen.edu.ar/catedras/arqui1/

VHDLAvanzado,
Dr.EliasTodorivich.
UniversidadAutnomadeMadrid,Espaa.

NewYorkUniversity,ComputerScience.
http://www.cs.nyu.edu/courses/fall99/V22.0436001/classnotes.html

Herramientas:

FPGALibre
http://fpgalibre.sourceforge.net/

GHDL
http://ghdl.free.fr/

GTKWave
http://home.nc.rr.com/gtkwave/

33
Autor:EmmanuelLujn

También podría gustarte