Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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);
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