Está en la página 1de 37

EscuelaPolitcnicaSuperiordelaU.A.M.

ArquitecturaeIngenieradeComputadores
ndice
SEGMENTACINENLAEJECUCINDEINSTRUCCIONES
2.1.Fundamentosdediseodeunprocesador
2.1.1.Elrepertoriodeinstrucciones
2.1.2.Ciclonicoymulticiclo
2.1.3.Rutadedatosycontrol
2.2.Latcnicadelasegmentacin
2.2.1.Funcionamientoideal.
2.2.2.Conceptosasociados:latenciayrendimiento(throughput)
2.3.Diseodeunprocesadorsegmentado(pipeline)
2.4.Limitacionesdelcaucedeinstruccionessegmentado
2.4.1.Causasqueproducenprdidasderendimientopordetencindelpipeline
2.4.1.1.Conflictosporlimitacionesestructurales
2.4.1.2.Conflictosporriesgosdecontrol
2.4.1.3.Conflictospordependenciadedatos
2.4.2.Tcnicasparaevitardetenciones
2.4.2.1.Adelantamientodedatos
2.4.2.2.Prediccindesaltos
ArquitecturaeIngenieradeComputadores
Introduccin

Paraelestudiodeprocesadoressegmentadosse
partedeunsencilloprocesadorRISC
denominadoMIPS(Microprocessorwithout
InterlockedPipelineStages)

Procesadorde32bits(datos,memoria)

32registrosdepropsitogeneral

Memoriadedatosycdigoseparadas
ArquitecturaeIngenieradeComputadores
CaractersticasdelasarquitecturasRISC

Juegodeinstruccionesreducido.

Accesoamemorialimitadoainstruccionesde
carga/almacenamiento.

Muchosregistrosdepropsitogeneral.

Pocosmodosdedireccionamiento(inmediato,
directo,indexado).

Formatodeinstruccinhomogneo(misma
longitudydistribucindecampos).

Todaslasinstruccionesseejecutanenunciclode
reloj.
ArquitecturaeIngenieradeComputadores
Eljuegodeinstrucciones

Losdiseadoresdecomputadorastienencomo
objetivoencontrarunjuegodeinstruccionestal
que

Seasencilloconstruirelhardwareque
materialiceesejuegodeinstruccionesy

Elcompiladorseasencilloyeficiente,

Maximizandoelrendimientodela
computadoray

Minimizandosuconsumodeenerga.
ArquitecturaeIngenieradeComputadores
ProcesadoresMIPS

LosprocesadoresMIPStienenunjuegode
instruccioneselegantedesarrolladodesdela
dcadade1980.

Otroejemplodejuegodeinstruccioneseselde
losprocesadoresARM.

SimilaralasinstruccionesMIPS.

Vendimsde3.000millonesdechipspara
aplicacionesembebidasen2008.

UnjuegodeinstruccionesdiferenteeselIntelx86.

Sevendieron330millonesdePCsIntelen
2008.
ArquitecturaeIngenieradeComputadores
ProcesadoresMIPS

En1981,unequipolideradoporJohnL.
HennessyenlaUniv.deStanfordcomenza
trabajarenelprimerprocesadorMIPS.

Aprincipiosdelos'90MIPSTechnologies
comenzaotorgarlicenciasdesusdiseosa
terceros,deahprocedenmsdelamitadde
losingresosdeMIPSactualmente.

LosprocesadoresMIPSseutilizanporejemplo
endispositivosparaWindowsCE;routers
Cisco;yvideoconsolascomolaNintendo64o
lasSonyPlayStation,PlayStation2,etc.

Debidoaquesuconjuntodeinstruccionestan
claro,loscursossobrearquitecturade
computadoresenuniversidadesamenudose
basanenlaarquitecturaMIPS.
R10000(Toshiba
TC86R10000200,1996)
ArquitecturaeIngenieradeComputadores
ProcesadorMIPS

32registrosdeusogeneral:$0..$31(excepto$0
siempreiguala0).

2
30
palabrasdememoria(32bitsc/u).

Instruccionesde1palabra(32bits)delongitud.

Accesoamemorialimitadoa2tiposde
instrucciones:

LOAD (cargaunapalabradememoriaen
registro)

STORE (almacenaunregistroenmemoria)
ArquitecturaeIngenieradeComputadores

ConjuntodeinstruccionesMIPS(32bits).Tresformatosdeinstrucciones:
op Direccindestino(TargetAddress)
0 26 31
6bits 26bits
op rs rt rd shamt funct
0 6 11 16 21 26 31
6bits 6bits 5bits 5bits 5bits 5bits
op rs rt
inmediato
0 16 21 26 31
6bits 16bits 5bits 5bits

TipoR

TipoI

TipoJ
Elrepertoriodeinstrucciones:caractersticasytipos

Camposdecadainstruccin:

op:Cdigodeoperacindelainstruccin

rs,rt,rd:identificadordelosregistrosfuenteydestino

shamt:desplazamientodeseado

funct:seleccindelavariantedefuncinasociada

inmediato:datoinmediatoen16bits

Direccindestino
ArquitecturaeIngenieradeComputadores
ConvencinparaelbancoderegistrosMIPS
Nombre Nmero Uso Sepreservaen
call?
$zero 0 Constantecero
$at 1 Reservadoassembler No
$v0$v1 23 Resultadosdeexpresiones No
$a0$a3 47 Argumentos No
$t0$t7 815 Temporarios No
$s0$s7 1623 Saved Si
$t8$t9 2425 Temporarios No
$k0$k1 2627 ReservadosSO No
$gp 28 Punteroglobal Si
$sp 29 Punteropila Si
$fp 30 Punteroframe Si
$ra 31 Dirretornosubrutina Si
ArquitecturaeIngenieradeComputadores
Elrepertoriodeinstrucciones:TipoR
Ejemplos:ADDySUB
addrd,rs,rt#rd=rs+rt
subrd,rs,rt#rd=rsrt
op rs rt rd shamt funct
0 6 11 16 21 26 31
6bits 6bits 5bits 5bits 5bits 5bits
Ejemplos:CdigoC
f=(g+h)(i+j);
Silasvariablesf,g,h,i,jestnenlosregistros
$s0a$s4elcompiladorpuedegenerar:
add$t0,$s1,$s2
add$t1,$s3,$s4
sub$s0,$t0,$t1
ArquitecturaeIngenieradeComputadores
Elrepertoriodeinstrucciones:TipoI
ADDinmediato
addirt,rs,inm#rt=rs+inm
LOADySTOREword
lwrt,rs,inm#rt=mem[rs+inm]
swrt,rs,inm#mem[rs+inm]=rt
SALTOS
beqrs,rt,inm#sirs=rt,
#entoncesPC=PC+4+inm*4
#ellenguajeensambladoradmiteetiquetasycalculainm
0
op rs rt inmediato
16 21 26 31
6bits 16bits 5bits 5bits
ArquitecturaeIngenieradeComputadores
Elrepertoriodeinstrucciones:Ejemplo
Ejemplos:CdigoC
if(i==j)f=(g+h);elsef=gh;
Silasvariablesf,g,h,i,jestnenlosregistros$s0a$s4elcompiladorpuede
generar:
bne$s3,$s4,CasoElse
add$s0,$s1,$s2 #sii==j
jExit #saltoincondicional
CasoElse:sub$s0,$s1,$s2
Exit:
ArquitecturaeIngenieradeComputadores
Elrepertoriodeinstrucciones:Ejemplo
Ejemplos:CdigoC
while(save[i]==k)i+=1;
Silasvariablesiykestnenlosregistros$s3y$s5yelregistrobasedel
arreglosaveestaen$s6,elcompiladorpuedegenerar:
Loop:sll$t1,$s3,2 #sllcon2equivaleamultipx4
add$t1,$t1,$s6 #calculadirdesave[i]
lw$t0,0($t1) #cargasave[i]
bne$t0,$s5,Exit
addi$s3,$s3,1 #i+=1
jLoop #saltoincondicional
Exit:
ArquitecturaeIngenieradeComputadores
ModosdedireccionamientoMIPS
1. Eloperandoesunactedentro
delainstruccin:
lui$s0,61
2. Eloperandoesunregistro:
ejemplos1,3y4.
3. Ladirdeloperandoesla
sumadeunregyunacteen
lainstrucin:
lw$t0,8($t1)
4. Ladirdesaltoeslasumadel
PCmasunacte.enlainstr.:
beq$s0,$s1,L1
Ladirdesaltoeslaconcat.
delos4bitsmsaltosdelPC
conlactede26bitsenla
instruccin:jalprintf
ArquitecturaeIngenieradeComputadores
DescripcinRTL(RegisterTransferLevel)delasinstrucciones
a.Faseinicial:cargadesdeMemoria(Fetch)
IR<=MEM[PC];IR=op&rs&rt&rd&shamt&funct
;IR=op&rs&rt&Imm16
;IR=op&Inm26
b.TransferenciaentreRegistros(ejemplos:Instruccytransfentreregistros)
ADD R[rd]<=R[rs]+R[rt]; PC<=PC+4
ADDI R[rt]<=R[rs]+Ext_signo(Inm); PC<=PC+4
LOAD R[rt]<=MEM[R[rs]+Ext_signo(Inm)]; PC<=PC+4
STORE MEM[R[rs]+Ext_signo(Inm)]<=R[rt]; PC<=PC+4
BEQif(R[rs]==R[rt])thenPC<=PC+4+(Ext_signo(Inm)&00)
elsePC<=PC+4
DescripcinRTLdelprocesadorMIPS
ArquitecturaeIngenieradeComputadores
Instruccin addrd,rs,rt
Descripcindelaejecucin(RTL)
IRMem[PC] Cargadelainstruccindesdememoria
R[rd]R[rs]+R[rt] Realizalaoperacin(SUMAR)
PCPC+4 Calculaladireccindelasiguiente
instruccin
op rs rt rd shamt funct
0 6 11 16 21 26 31
6bits 6bits 5bits 5bits 5bits 5bits
EjemploejecucinRTLdeunainstruccin
ArquitecturaeIngenieradeComputadores
1.Analizarelconjuntodeinstrucciones=>requisitosparalarutadedatos
(datapath).

Elsignificadodecadainstruccinvienedadoporsufuncionamientoa
niveldetransferenciaderegistros(RTL).

Eldatapathdebeincluirelementosdealmacenamientoparalos
registrosaccesiblesenelmodelodeprogramacindelprocesador.

Eldatapathdebesoportartodaslastransferenciasentreregistros
definidasenelconjuntodeinstrucciones.
2.Seleccindeloscomponentesydelametodologadereloj.
3.Implementacindeldatapathcumpliendolosrequisitos.
4.Anlisisdecadainstruccinparadeterminarelmecanismodecontrolque
efectelatransferenciaentreregistros.
5.Implementacindelalgicadecontrol.
Generalidadesparaeldiseodeunprocesador
ArquitecturaeIngenieradeComputadores

Unidadesfuncionalesnecesariasparalasinstrucciones
Paraqusonnecesarias?
Memoriadeinstrucciones
emora de
Instruccones
Dreccn
de ectura
nstruccion
Memoriadedatos
Mem Rea d
Mem W ri t e
emora de
Datos
Dreccn
Dato
Entra
da
Dato Salida
Contador
dePrograma
Sumador
PC
S
u
m
a
d
o
r
ALU
A LUop.
3
Cero
Resultado
ALU
Oper 1
Oper 2
ExtensindeSigno
16
32
Exten.
Signo
BancodeRegistros
Dato Entrada
Reg. destno
Reg. fuente 1
Regstros
Reg. fuente 2
Dato Salida 1
Dato Salida 2
Nmero
De
Regstro
Datos
Datos
5
5
5
x4
Diseodelprocesador:elementosbsicos
ArquitecturaeIngenieradeComputadores

Lametodologadesincronizacinindicacundopuedenleerseyescribirselas
diferentesseales.Esimportantedefinirelinstanteexactoenqueseactualiza

Enesteprocesador(MIPS)losciclosderelojcomienzanenflancodesubida
Diseodelprocesador:sincronizacin
Elemento
dememoria
Elemento
dememoria
Elemento
Combinacional
Flancodesubida
(Risingedge)
Flancodebajada
(Fallingedge)
Periododelreloj(Clockperiod)
ArquitecturaeIngenieradeComputadores
Conexionesenlarutadedatos(Datapath)
Operacionesentreregistros,TipoR(ADD,SUB,OR,AND,etc)
Conexindeloselementos:

Usodemultiplexores.

Sealesdecontrol.

Capturadelasiguienteinstruc.
IncrementodePC.

InstruccionesdelaALUentre
registros.
Dato Entrada
Reg. destno
Reg. fuente 1
16
32
4
A LU op.
3
RegW rit e
Mem Rea d
Mem W ri te
PCSrc
AL USrc
Mem 2 Reg
Cero
emora de
Instruccones
Dreccn
de ectura
nstruccion
PC
Regstros
Reg. fuente 2
Dato Salida 1
Dato Salida 2
M
u
x
M
u
x
emora de
Datos
Dreccn
Dato Entrada
Dato Salida
M
u
x
Exten.
Signo
Despl.
<< 2
S
u
m
a
d
o
r
Sumador
Resultado
Resultado
ALU
ArquitecturaeIngenieradeComputadores
Dato Entrada
Reg. destno
Reg. fuente 1
Conexindeloselementos:

Usodemultiplexores.

Sealesdecontrol.

Capturadelasiguienteinstruc.
IncrementodePC.

InstruccionesLOAD/STORE.
16
32
4
A LU op.
3
RegW rit e
Mem Rea d
Mem W ri te
PCSrc
AL USrc
Mem 2 Reg
Cero
emora de
Instruccones
Dreccn
de ectura
nstruccion
PC
Regstros
Reg. fuente 2
Dato Salida 1
Dato Salida 2
M
u
x
M
u
x
emora de
Datos
Dreccn
Dato Entrada
Dato Salida
M
u
x
Exten.
Signo
Despl.
<< 2
S
u
m
a
d
o
r
Sumador
Resultado
Resultado
ALU
Conexionesenlarutadedatos(Datapath)
Operacionesdecargayalmacenamiento,TipoI(Load/Store)
ArquitecturaeIngenieradeComputadores
Exten.
Signo
Dato Entrada
Reg. destno
Reg. fuente 1
Conexionesenlarutadedatos(Datapath)
Operacionesdesaltocondicional(Beq)
Conexindeloselementos:

Usodemultiplexores.

Sealesdecontrol.

Capturadelasiguiente
instruccinodeldestinode
salto=>IncrementodePC.

InstruccionesdeSalto.
16
32
4
A LU op.
3
RegW rit e
Mem Rea d
Mem W ri te
PCSrc
AL USrc
Mem 2 Reg
Cero
emora de
Instruccones
Dreccn
de ectura
nstruccion
PC
Regstros
Reg. fuente 2
Dato Salida 1
Dato Salida 2
M
u
x
M
u
x
emora de
Datos
Dreccn
Dato Entrada
Dato Salida
M
u
x
Despl.
<< 2
S
u
m
a
d
o
r
Sumador
Resultado
Resultado
ALU
ArquitecturaeIngenieradeComputadores
RutadeDatoscon
ControlUniciclo
Instruccin RegDest
FuenteALU
MemaReg EscrReg LeerMem EscrMen SaltoCond
ALUOp1 ALUOp0
RegaReg 1 0 0 1 0 0 0 1 0
LOAD
0 1 1 1 1 0 0 0 0
STORE
X 1 X 0 0 1 0 0 0
BEQ
X 0 X 0 0 0 1 0 1
Control:
Bloquecombinacionalque
con6bitsdela
instruccin(bits31:26)
generalas9sealesde
control
ArquitecturaeIngenieradeComputadores
DiagramadetiempodeoperacinReg
Reg
32
Resultado
Clk
busW
32
32
busA
32
busB
Rw Ra Rb
32Reg.
de32bit
A
L
U
ALUctr
RegWr
5 5 5
Rs Rt Rd
Clk
PC
Rs,Rt,Rd,
Op,Func
ClktoQ
ALUctr
TiempodeaccesoalaMemoriadeInstrucciones
OldValue NewValue
RegWr OldValue NewValue
Retardodebidoalalgicadecontrol
BusA,B
TiempodeaccesoaRegistros
Old
Value
NewValue
busW
RetardodeALU
OldValue NewValue
OldValue NewValue
NewValue
OldValue
Escrituraen
elregistro
ArquitecturaeIngenieradeComputadores
Desventajasdeldiseouniciclo(CPI=1)

Tiempodeciclomuylargo(elpeordetodos).

Casitodaslasinstruccionesutilizan,sinnecesidad,tanto
tiempocomolainstruccinmslenta.
PC InstMemory mux ALU DataMem mux
PC RegFile InstMemory mux ALU mux
PC InstMemory mux ALU DataMem
PC InstMemory cmp mux
RegFile
RegFile
RegFile
Arithmetic&Logical
Load
Store
Branch
Caminocrtico
setup
setup
ArquitecturaeIngenieradeComputadores
Desventajaenlaejecucinuniciclo:ejemplo

Tiemposhipotticosparaejecutarcadainstruccin

Seaunprogramaqueutiliza24%decargas,12%dealmacenamientos,
44%deoperacionesentreregistrosenlaALU,18%desaltos
condicionalesy2%desaltosincondicionales

Sifuesesimple(NOLOES)tenerunrelojvariable

Culestiempomediodeciclo?

Culseralaaceleracinrespectodeunaejecucinuniciclo?
Clasede
Instruccin
Mem
instr.
Lectde
Reg
Operac.
ALU
Memde
datos
Escrit
enReg
Total
FormatoR 2 1 2 0 1 6ns
Load(LW) 2 1 2 2 1 8ns
Store(SW) 2 1 2 2 7ns
Salto(BEQ) 2 1 2 5ns
Jump 2 2ns
ArquitecturaeIngenieradeComputadores

Lasinstruccionespuedentardardiferentenmerodeciclos.

Undatapathconligerasmodificaciones:

Dividirlasinstruccionesenpasos,cadapasotardaunciclo.

Balancearlacantidaddetrabajoarealizarenunpaso.

Encadaciclosloseutilizaunaunidadfuncional(sereduce
elnmerodeU.F.)

Alfinaldelciclo

Almacenarlosvaloresparasuusoenposteriorespasos.

Aadirregistrosinternosadicionales.
Ejecucinmulticiclo
ArquitecturaeIngenieradeComputadores
Cambiosparaunaaproximacinmulticiclo
ArquitecturaeIngenieradeComputadores
Ejecucinencincopasos(5ciclos)
1. Cargalainstruccin(todasigual)
LaALUactualizaelcontadordeprograma:

Todas: IR=Memoria[PC];
PC=PC+4;

Decodificacinylecturadeoperandos(todasigual)
Todavasesigueelmismocauceparacualquierinstruccinporqueseestn
decodificando.

Leeregistrosrsyrtporsisonnecesarios

CalculaladireccinenlaALUdesaltoporsifueranecesaria

Todas: A=Reg[IR[2521];
B=Reg[IR[2016];
SalidaALU=PC+(extension_signo(IR[150]<<2);
ArquitecturaeIngenieradeComputadores
Ejecucinencincopasos(5ciclos)

Ejecucin.Calculodeladireccindememoria.Finalizacindel
salto.
LaALU,dependiendodeltipodeinstruccin,realizaunaoperacinuotra.

Referenciaamemoria: SalidaALU=A+extension_signo(IR[150]);

Operacinentreregistros: SalidaALU=AopB;

Saltos: if(A==B)PC=SalidaALU;

AccesoamemoriaofinalinstruccintipoR.
AccesoamemoriaenLoadsyStores.

Load: MDR=Memoria[SalidaALU];

Store: Memoria[SalidaALU]=B;
Escrituradelregistrodestinoeninstruccionesentreregistros.

Operacinentreregistros: Reg[IR[1511]]=SalidaALU;
(Laescrituratienelugarenelflancoalfinaldelciclo)
ArquitecturaeIngenieradeComputadores
1. Escrituradelvalorledodememoriaenelregistrodestino
(Writeback).

Load: Reg[IR[2016]]=MDR
Ejecucinencincopasos(5ciclos)
UNAINSTRUCCINTARDADE3A5CICLOS
ArquitecturaeIngenieradeComputadores
Controlmulticiclo:resumendeetapas
Nombredela
etapa
TipoR accesoamemoria Saltos
condicionales
Saltos
incondic(jump)
CargaInstrucciones
IR=Memoria[PC]
PC=PC+4
Decodificdeinstrucc/
cargaReg
A=Reg[IR[2521]]
B=Reg[IR[2016]]
SalidaALU=PC+(extensionsigno(IR[150]<<2)
Ejecucin,clculode
direccyfindesaltos
condicionales
SalidaAlu=AopB
SalidaALU=A+
(extensionsigno(IR[150])
si(A=B)entonces
PC=SalidaALU
PC=PC[3128]||
(IR[250]<<2)
Acc.aMEMyFinde
instrucctipoR
Reg[IR[1511]]=
SalidaALU
Load:MDR=
Memoria[SalidaALU] Store:
Memoria[SalidaALU] =B
FinlecturaMEM Load:Reg[IR[2016]]=MDR
ArquitecturaeIngenieradeComputadores
ControlMulticiclo
FSMdecontrol
Paracontrolmulticiclo

I n s t r u c t i o n d e c o d e /
r e g i s t e r f e t c h
l e t io n
n c h
e t i o n x e c u t i o n
M e m o
a c c e s
M e m o r y
a c c e s s
R t y p e c o
W r i t e
4
7 5 3
S t a r t
CAPTURAINSTRUCCION
ACCESOA
MEMORIA
DECODIFICAINSTRUCCIN
CAPTURADEOPERANDOS
ESCRIBEENREGISTRO
FININSTR.
JUMP
FININSTR.BEQ
EJECUCION
M e m o r y a d d r e s s
c o m p u t a t i o n
CALCULO
DIRECCIONEFECTIVA
ACCESOA
MEMORIA
ESCRIBEENREGISTRO
LeerMen
SelALUA=0
IoD=0
EscrIR
SelALUB=01
ALUOp=00
EscrPC
FuentePC=00
SelALUA=0
SelALUB=11
ALUOp=00
SelALUA=1
SelALUB=10
ALUOp=00
SelALUA=1
SelALUB=00
ALUOp=10
SelALUA=1
SelALUB=00
ALUOp=01
EscrPCCond
FuentePC=01
EscrPC
FuentePC=10
LeerMen
IoD=1
EscrMenn
IoD=1
RegDest=1
EscrReg
MenaReg=0
RegDest=0
EscrReg
MenaReg=1
(
O
p

B
E
Q

)
(O
p
=
L
W
)o
(O
p
=
S
W
)
(O
p
=
tip
o
R
)
(
O
p

)
(
O
p

S
W

)
(
O
p

L
W

)
2 6
9
8
1
0
ArquitecturaeIngenieradeComputadores
Segmentacin:PerspectivaGeneral
Tcnicautilizadaparaoptimizareltiempodeejecucindeprocesosquese
realizanmediantelarepeticindeunasecuenciadepasosbsicos.
Permitelaejecucindeprocesosconcurrentemente.

Fundamento:Separarelprocesoenetapasyejecutarcadaetapaenun
recursoindependiente.

Objetivo:Mejorarlaproductividad,aumentandoelnmerodeprocesos
ejecutadosporunidaddetiempo.

Funcionamiento:Cuandounaetapadelprocesotermina,elrecurso
liberadopuedeempezaraejecutarlamismaetapadelsiguienteproceso.

Seconsiguelaejecucindevariosprocesosenparalelocadauno
enunaetapadiferente.

Lasetapassonejecutadassecuencialmente.
ArquitecturaeIngenieradeComputadores
Segmentacin:PerspectivaGeneral(unejemplo)
O
r
d
e
n

d
e

T
a
r
e
a
FUNCIONAMIENTOSECUENCIAL

Realizar4tareas

Lavado30MIN

Secado40MIN

Planchado20MIN
Tiempoempleado:6horas
Ejemplode
HennesyPatterson
ArquitecturaeIngenieradeComputadores
Segmentacin:PerspectivaGeneral(unejemplo)
O
r
d
e
n

d
e

T
a
r
e
a
FUNCIONAMIENTOSEGMENTADO

Realizar4tareas

Lavado30MIN

Secado40MIN

Planchado20MIN
Tiempoempleado:3,5horas
CadaTarea:1,5horas
ArquitecturaeIngenieradeComputadores
Segmentacin:FuncionamientoIdeal
T
p
T
s
T
p
T
s
SECUENCIALMENTE(1unidaddeprocesoparatodaslasetapas)
T
p
eseltiempodeejecucindeunproceso.
Sepuededescomponerens(s=3)etapasdeduracinT
s
(T
p
=sT
s
)
T
t
=NT
p
=NsT
s
ConSEGMENTACIN(unidadesindependientesparacadaetapa)
SiN>>sT
t
NT
s
T
t
=T
p
+(N1)T
s
=sT
s
+(N1)T
s
=(N+s1)T
s

s=3
EjecutarNprocesos
ArquitecturaeIngenieradeComputadores
Segmentacin:FuncionamientoIdeal
ProcesosegmentadovsProcesosecuencial

Lasegmentacin,aunquenomejoralalatenciadeunsoloproceso,
mejoraelrendimientooproductividad(throughput)deunatareacon
muchosprocesos.

Variosprocesosseejecutanenparalelo.
VENTAJAS
RESTRICCIONES

Larazndesegmentacinestlimitadaporlaetapamslenta.

Laaceleracinmximaposible=Nmerodeetapasdesegmentacin.

EtapasdesegmentacindesequilibradasReduccindeproductividad.
ArquitecturaeIngenieradeComputadores
Segmentacin:FuncionamientoIdeal

Unprocesadorsegmentadoperfectoconsigueejecutaruna
instruccinporciclo.

Lasegmentacinmsevidenteconstadetresetapas:

Obtenerinstruccin(Fetch)

Decodificarinstruccin(Decode)

Ejecutarinstruccin(Execute)

Lafrecuenciadefuncionamientoesmayorsielnmerodeetapasde
segmentacinseincrementa.Aunque:

Lasegmentacinfinaesmuydifcil

Cadanuevaetapaaadeelretardodeunregistro

Laindependenciaentreetapasesmsdifcildeconseguir
ArquitecturaeIngenieradeComputadores
Segmentacin:Segmentacindeinstrucciones.

EJEMPLO:Segmentacindeinstruccionescon5etapas(MIPS)
EtapaIF EtapaID EtapaEX EtapaMEM EtapaWB
IMem Reg ALU DMem Reg

Obtenerinstruccin

Accesoalamemoria
deinstrucciones

Decodificarinstruccin

Lecturadeoperandos,
cargaderegistros

Ejecutarinstruccin
obien

Calculardireccin
efectivamemoria.

AccesoaMemoria
obien

EscribirenPCla
direccindesalto.

Escribirenun
registroelresultado
delaoperacin.
Ejemploparatresinstruccionestipo
LoadRx,100(Ry)
ArquitecturaeIngenieradeComputadores
Segmentacin:LoadvsOperacinentreregistros
Lascuatroetapasenoperacionesentreregistros
Ifetch Reg/Dec Exec Mem Wr 1
er
load
Ifetch Reg/Dec Exec Mem Wr 2load
Ifetch Reg/Dec Exec Mem Wr 3
er
load
LascincoetapasdeLoad
Ciclo1 Ciclo2 Ciclo3 Ciclo4 Ciclo5 Ciclo6 Ciclo7
Clock
Ifetch Reg/Dec Exec Wr Rtype
Ifetch Reg/Dec Exec Wr Rtype
Ifetch Reg/Dec Exec Wr Rtype
Ciclo1 Ciclo2 Ciclo3 Ciclo4 Ciclo5 Ciclo6
Clock
ArquitecturaeIngenieradeComputadores

Existenconflictosestructurales

Haydosinstruccionesqueintentanaccederamemoriaal
tiempo.

Haydosinstruccionesqueintentanescribirenelbancode
registrosalmismotiempoysloexisteunpuertodeescritura.
Aparecenproblemas
Segmentacin:LoadvsOperacinentreregistros
Ifetch Reg/Dec Exec Wr Rtype
Ifetch Reg/Dec Exec Wr Rtype
Ifetch Reg/Dec Exec Mem Wr Load
Ifetch Reg/Dec Exec Wr Rtype
Ifetch Reg/Dec Exec Wr Rtype
Ciclo1 Ciclo2 Ciclo3 Ciclo4 Ciclo5 Ciclo6 Ciclo7
Clock
Ciclo8
ArquitecturaeIngenieradeComputadores
Segmentacin:Consideracionesdediseo

Cadaunidadfuncionalpuedausarseslounavezporinstruccin.Deben
aparecerdosunidadesdememoria.

Cadaunidadfuncionalseutilizaenlamismaetapaparatodaslas
instrucciones:

LoadusaelpuertodeescrituraenRegistrosdurantesu5etapa.

LasoperacionesentreRegistrosusanelpuertodeescrituraenRegistros
durantesu4etapa
Ifetch Reg/Dec Exec Mem Wr Load
1 2 3 4 5
Ifetch Reg/Dec Exec Wr Rtype
1 2 3 4
Solucionesposibles:paradasentreetapas,retrasodelaescrituraen
registro,...
ArquitecturaeIngenieradeComputadores
Segmentacin:Consideracionesdediseo

Solucin1:Pararelcaucedeinstrucciones(Pipelinebubble)

Solucin2:Retrasarlaescrituraenregistro
Ifetch Reg/Dec Mem Wr Rtype
Ifetch Reg/Dec Exec Mem Wr Load
Ifetch Reg/Dec Mem Wr Rtype
Ifetch Reg/Dec Mem Wr Rtype
Exec
Exec
Exec
Ifetch Reg/Dec Mem Wr Rtype Exec
Clock
Ciclo1 Ciclo2 Ciclo3 Ciclo4 Ciclo5 Ciclo6 Ciclo7 Ciclo8 Ciclo9
Ifetch Reg/Dec Exec Wr Rtype
Ifetch Reg/Dec Exec
Ifetch Reg/Dec Exec Mem Wr Load
Ifetch Reg/Dec Exec Wr
Rtype
Ifetch Reg/Dec Exec Wr
Rtype
Pipeline
Bubble
Ifetch Reg/Dec Exec Wr
Clock
Ciclo1 Ciclo2 Ciclo3 Ciclo4 Ciclo5 Ciclo6 Ciclo7 Ciclo8 Ciclo9
Rtype
Esloutilizado
enlaprctica
ArquitecturaeIngenieradeComputadores
Resumen:Ciclonicovsmulticiclovssegmentacin
Clk
Ciclo1
Multiciclo
Ifetch Reg Exec Mem Wr
Ciclo2 Ciclo3 Ciclo4 Ciclo5 Ciclo6 Ciclo7 Ciclo8 Ciclo9Ciclo10
Ifetch Reg Exec Mem
Load Store
Ifetch
Rtype
Load
Ifetch Reg Exec Mem Wr
Segmentacin
Ifetch Reg Exec Mem Wr
Store
Ifetch Reg Exec Mem Wr
Rtype
Clk
Ciclonico
Load
Store Sinuso
Ciclo1
Ciclo2
ArquitecturaeIngenieradeComputadores
Segmentacin:Undiseocon5etapas

Labaseeselcaminodedatosdeunciclo.

Seaadenregistrosentreetapas.

Hayqueanalizarsitodaslasinstruccionesfuncionan.
Problema:ADDR1,R2,R3
Instruction
memory
Address
4
32
0
Add
Add
result
Shift
left2
I
n
s
t
r
u
c
t
i
o
n
IF/ID EX/MEM MEM/WB
M
u
x
0
1
Add
PC
0
Write
data
M
u
x
1
Registers
Read
data1
Read
data2
Read
register1
Read
register2
16
Sign
extend
Write
register
Write
data
Read
data
1
ALU
result
M
u
x
ALU
Zero
ID/EX
Data
memory
Address
ArquitecturaeIngenieradeComputadores
Segmentacin:Modificacindeldatapath
Parasolucionarelproblemadelaejecucindelasinstruccionesque
escribensuresultadoenunregistro,comoporejemplo:
ADDR3,R2,R1
LoadR3,R5,#1100
Instruction
memory
Address
4
32
0
Add
Add
result
Shift
left2
I
n
s
t
r
u
c
t
i
o
n
IF/ID EX/MEM MEM/WB
M
u
x
0
1
Add
PC
0
Address
Write
data
M
u
x
1
Registers
Read
data1
Read
data2
Read
register1
Read
register2
16
Sign
extend
Write
register
Write
data
Read
data
Data
memory
1
ALU
result
M
u
x
ALU
Zero
ID/EX
Lainformacindel
registrode
escrituraavanza
conlainstruccin
ArquitecturaeIngenieradeComputadores
Segmentacin:Aadirelcontrol
PC
Instruction
memory
I
n
s
t
r
u
c
t
io
n
Add
Instruction
[2016]
M
e
m
t
o
R
e
g
ALUOp
Branch
RegDst
ALUSrc
4
16 32
Instruction
[150]
0
0
M
u
x
0
1
Add
Add
result
Registers
Write
register
Write
data
Read
data1
Read
data2
Read
register1
Read
register2
Sign
extend
M
u
x
1
ALU
result
Zero
Write
data
Read
data
M
u
x
1
ALU
control
Shift
left2
R
e
g
W
r
i
t
e
MemRead
Control
ALU
Instruction
[1511]
6
EX
M
WB
M
WB
WB
IF/ID
PCSrc
ID/EX
EX/MEM
MEM/WB
M
u
x
0
1
M
e
m
W
r
i
t
e
Address
Data
memory
Address
Tambinsedeben
retrasarlas
sealesdecontrol
paraquelainfode
controlavancecon
lainstruccin
ArquitecturaeIngenieradeComputadores
Segmentacin:Aadirelcontrol
Control
EX
M
WB
M
WB
WB
IF/ID ID/EX EX/MEM MEM/WB
Instruction

Todaslasinstruccionestardanlosmismosciclosdereloj.

Lasecuenciacindelainstruccinestimplcitaenlaestructuradelpipeline.

Nohayuncontrolespecialparaladuracindelainstruccin(nohayFSM).

Todalainformacindecontrolsecalculaduranteladecodificacin,yseenva
haciadelanteatravsdelosregistrosdesegmentacin.

Losvaloresdelaslneasdecontrolsonlosmismosqueloscalculadosenel
controluniciclo.
ArquitecturaeIngenieradeComputadores

Lascausasquepuedenreducirelrendimientoenunprocesador
segmentadodeinstruccionessontres:

Riesgosestructurales Riesgosestructurales: :

Seintentausarelmismorecursodedosmanerasdiferentesalmismotiempo.

Elhardwareimpideunaciertacombinacindeoperaciones.

Riesgospordependenciadedatos Riesgospordependenciadedatos:

Seintentausarundatoantesdequeestdisponible.

Eloperandodeunainstruccindependedelresultadodeotrainstruccin
precedentequetodavanosehaobtenido.

Riesgosdecontrol Riesgosdecontrol: :

Seintentatomarunadecisinantesdeevaluarselacondicin.

Sisesalta,lasinstruccionesposterioresnodebenejecutarse(oalmenos,
nodebenfinalizar).
Segmentacin:Conflictosenfuncionamientoreal
ArquitecturaeIngenieradeComputadores

Cuandosedetectaunriesgo,lasolucinmssimpleespararlaunidadde
segmentacin(stallthepipeline)hastaquedesaparezcaelriesgo.

Lasinstruccionesqueprecedenalacausantedelriesgopuedencontinuar.

Lainstruccinquecausaelriesgoysiguientesnocontinanhastaque
desapareceelriesgo.
Todosestosriesgossepuedensolucionar?.....S
Cmo?...................................................Esperando

Senecesitaqueelcontroldelaunidaddesegmentacin(pipeline)sea
capazde:

Detectarlascausasderiesgo.

Decidiraccionesqueresuelvanelriesgo(porejemplo,esperar).
Segmentacin:Conflictosenfuncionamientoreal
ArquitecturaeIngenieradeComputadores

Casosquesepuedenpresentar.Accesossimultneosa:

Memoria(siesVonNeuman,nicaparadatoseinstrucciones).

Unidadesfuncionales.

Registrosinternos.
Tiempo(ciclosdereloj)
O
r
d
e
n

d
e

i
n
s
t
r
u
c
c
i

n
Segmentacin:Riesgosestructurales
Mem
Load
Instr1
Instr2
Instr3
Instr4
A
L
U Mem Reg
Mem
Reg
A
L
U
Mem Reg Mem Reg
A
L
U
Mem Reg Mem Reg
A
L
U
Reg Mem Reg
A
L
U
Mem Reg Mem Reg
(Lamitadizquierdacoloreadaindicaescrituraylamitadderechalectura)
Conflictodelectura
enmemoria
ArquitecturaeIngenieradeComputadores

Soluciones:

Introduciresperas.

Duplicarrecursososepararmemoriadedatosdelamemoriadeinstrucciones
(HarvardenlugardeVonNeuman).
Tiempo(ciclosdereloj)
O
r
d
e
n

d
e

i
n
s
t
r
u
c
c
i

n
Segmentacin:Riesgosestructurales
ArquitecturaeIngenieradeComputadores

Dependenciasquesepresentanpara2instruccionesiyj,coni
ejecutndoseantesquej.

RAW(ReadAfterWrite):lainstruccinposteriorjintentaleerunafuenteantes
dequelainstruccinanteriorilahayamodificado.

WAR(WriteAfterRead):lainstruccinjintentamodificarundestinoantesde
quelainstruccinilohayaledocomofuente.

WAW(WriteAfterWrite):lainstruccinjintentamodificarundestinoantesde
quelainstruccinilohayahecho(semodificaelordennormaldeescritura).

Ejemplos: RAW WAR WAW


ADDr1,r2,r3 ADDr1,r2,r3 DIVr1,r2,r3
SUBr5,r1,r6 OR r3,r4,r5 ANDr1,r4,r5
ANDr6,r5,r1
ADDr4,r1,r3
SWr10,100(r1)
Segmentacin:Riesgospordependenciadedatos
Enmicrossegmentadosconejecucin
enordenslosonproblemalosRAW
ArquitecturaeIngenieradeComputadores
Segmentacin:Riesgospordependenciadedatos

Aparecenproblemasalpoderempezarlasiguienteinstruccinantesde
quelaprimerahayaterminado.
Dependencias
problemticasson
aquellasquenecesitan
datosquehayque
buscarhaciaatrsen
elesquemadetiempos.
IM Reg
IM Reg
Ciclo1
IM
Reg
DM Reg
IM DM Reg
IM DM Reg
10 1020
DM
Reg
Reg
Reg
Reg
DM
TIEMPO(CICLOS)
Ciclo2 Ciclo3 Ciclo4 Ciclo5 Ciclo6 Ciclo7 Ciclo8 Ciclo9
Valorder1
PROGRAMA
addr1,r2,r3
subr5,r1,r6
andr16,r5,r1
addr4,r1,r3
swr10,100(r1)
10 10 10 20 20 20 20

Ejemplo(RAW):
ArquitecturaeIngenieradeComputadores

Soluciones:

Adelantar(forward)elresultadodeunaetapaalassiguientes.

DefiniradecuadamentelasecuenciaRead/Write(lainstruccinaddr4,r1,r3funciona
correctamentesienlaetapaWB,Writeserealizaenla1mitaddelcicloyReadenla2).
Segmentacin:Riesgospordependenciadedatos
IM Reg
IM Reg
IM
Reg
DM Reg
IM DM Reg
IM DM Reg
DM
Reg
Reg
Reg
Reg
DM
PROGRAMA
addr1,r2,r3
subr5,r1,r6
andr16,r5,r1
addr4,r1,r3
swr10,100(r1)
ArquitecturaeIngenieradeComputadores

Necesidadeshardwareparaadelantarresultados:

Multiplexoresadicionalesdondesevayaarecibireldato(p.ej.enlasentradas
dedatosdelaALU).

Busesextraentreregistrosinternosymultiplexores.

Comparadoresentrelosoperandosdeunainstruccinylosoperandosdestino
deinstruccionesprevias.
Segmentacin:Riesgospordependenciadedatos
M
u
x
M
u
x
M
u
x
ALU
Data
memory
M
u
x
EX/MEM.RegisterRd
ID/EX EX/MEM MEM/WB
ArquitecturaeIngenieradeComputadores

Losriesgospuedenpersistirinclusoconadelantamientodedatos

Ej:traslainstruccinLOADsepuedenevitarlosriesgosenANDyenORcon
adelantamientodedatos,peronodeSUB(nopuedeadelantarresultadosaetapasqueson
detiemposanteriores)
Tiempo(ciclosdereloj)
O
r
d
e
n

d
e

i
n
s
t
r
u
c
c
i
o
n
e
s
Segmentacin:Riesgospordependenciadedatos
ArquitecturaeIngenieradeComputadores

Soluciones:

Insertarunciclodeespera(stall)enelciclo3,paralainstruccinSUBysiguientes

InsertarunaoperacinNOPdetrsdelLOAD(eslomsutilizado,lopuedeautomatizarel
compiladorsinnecesidaddemshardware)
Tiempo(ciclosdereloj)
O
r
d
e
n

d
e

i
n
s
t
r
u
c
c
i
o
n
e
s
Segmentacin:Riesgospordependenciadedatos
ArquitecturaeIngenieradeComputadores
PC
Instruction
memory
Registers
M
u
x
M
u
x
M
u
x
Control
ALU
EX
M
WB
M
WB
WB
ID/EX
EX/MEM
MEM/WB
Data
memory
M
u
x
Hazard
detection
unit
Forwarding
unit
0
M
u
x
IF/ID
I
n
s
t
r
u
c
t
i
o
n
ID/EX.MemRead
I
F
/
I
D
W
r
i
t
e
P
C
W
r
i
t
e
ID/EX.RegisterRt
IF/ID.RegisterRd
IF/ID.RegisterRt
IF/ID.RegisterRt
IF/ID.RegisterRs
Rt
Rs
Rd
Rt
EX/MEM.RegisterRd
MEM/WB.RegisterRd
Segmentacin:Rutadedatosconcontrolparaadelantamiento
dedatosydeteccinderiesgos
ArquitecturaeIngenieradeComputadores
Segmentacin:Controlparaadelantamientodedatos

Unidaddeadelantamientodedatos(forwarding)

Sedebedetectarelriesgoyluegoanticiparelvalorasudestino

Seagregaunbloquecombinacionalparadetectarelriesgoy
multiplexoresparaadelantarlosdatosoportunamente
Registers
M
u
x
M
u
x
M
u
x
ALU
Data
memory
M
u
x
Forwarding
unit
EX/MEM.RegisterRd
MEM/WB.RegisterRd
IF/IDRegisterRs
Rt
Rd
Rs
Rt
IF/IDRegisterRt
IF/IDRegisterRt
IF/IDRegisterRd
ID/EX EX/MEM MEM/WB
AnticiparA
AnticiparB
ArquitecturaeIngenieradeComputadores
Segmentacin:Controlparaadelantamientodedatos

Unidaddeadelantamientodedatos(forwarding)

SedebedetectarelriesgoyluegoanticiparelvaloralaALU

Existen4riesgospotenciales:
1a.EX/MEM.Registro.Rd=ID/EX.Registro.Rs
1b.EX/MEM.Registro.Rd=ID/EX.Registro.Rt
2a.MEM/WB.Registro.Rd=ID/EX.Registro.Rs
2b.MEM/WB.Registro.Rd=ID/EX.Registro.Rt
Analizarporejemplocon:
Addr1,r2,r3
Subr5,r1,r6
Andr6,r5,r1
Addr4,r1,r3
Registers
M
u
x
M
u
x
M
u
x
ALU
Data
memory
M
u
x
Forwarding
unit
EX/MEM.RegisterRd
MEM/WB.RegisterRd
IF/IDRegisterRs
Rt
Rd
Rs
Rt
IF/IDRegisterRt
IF/IDRegisterRt
IF/IDRegisterRd
ID/EX EX/MEM MEM/WB
AnticiparA
AnticiparB
ArquitecturaeIngenieradeComputadores
Segmentacin:Controlparaadelantamientodedatos

Unidaddeadelantamientodedatos(forwarding)

Pseudocdigodelfuncionamiento:
(RiesgosenEX)
if(EX/MEM.EscrRegand
EX/MEM.RegistroRd0and
EX/MEM.Registro.Rd=ID/EX.Registro.Rs)

thenAnticiparA=10
elseAnticiparA=00
if(EX/MEM.EscrRegand
EX/MEM.RegistroRd0and
EX/MEM.Registro.Rd=ID/EX.Registro.Rt)
ThenAnticiparB=10
elseAnticiparB=00
M
u
x
M
u
x
M
u
x
ALU
Data
memory
M
u
x
Forwarding
unit
EX/MEM.RegisterRd
MEM/WB.RegisterRd
Rt
Rd
Rs
Rt
ID/EX EX/MEM MEM/WB
AnticiparA
AnticiparB
ArquitecturaeIngenieradeComputadores
Segmentacin:Controlparaadelantamientodedatos

Unidaddeadelantamientodedatos(forwarding)

Pseudocdigodelfuncionamiento:
M
u
x
M
u
x
M
u
x
ALU
Data
memory
M
u
x
Forwarding
unit
EX/MEM.RegisterRd
MEM/WB.RegisterRd
Rt
Rd
Rs
Rt
ID/EX EX/MEM MEM/WB
AnticiparA
AnticiparB
(RiesgosenMEM)
if(MEM/WB.EscrRegand
MEM/WB.RegistroRd0and
EX/MEM.Registro.RdID/EX.RegistroRsand
MEM/WB.Registro.Rd=ID/EX.RegistroRs)
thenAnticiparA=01
elseAnticiparA=00
if(MEM/WB.EscrRegand
MEM/WB.RegistroRd0and
EX/MEM.Registro.RdID/EX.RegistroRtand
MEM/WB.Registro.Rd=ID/EX.Registro.Rt)
thenAnticiparB=01
elseAnticiparB=00
ArquitecturaeIngenieradeComputadores
Segmentacin:Deteccinderiesgosinsalvables

Unidaddedeteccinderiesgos(hazarddetectionunit)

Paracuandoeladelantamientonoresuelvelosriesgos(casodeloady
usodelregistrodestinoenlasiguienteinstruccin)
Pseudocdigodelfuncionamiento:
If(ID/EX.LeerMemand
((ID/EX.Registro.Rt=IF/ID.Registro.Rs)or
(ID/EX.Registro.Rt=IF/ID.Registro.Rt)))
thenBloquearelpipeline
Bloquearelpipeline:

PCWrite=0

IF/IDWrite=0

MuxNOP=1
Todoestonoesnecesariosiel
compilador/ensambladoraadeun
NOPdespusdelLOADconriesgo
ArquitecturaeIngenieradeComputadores

Lasinstruccionesdesaltopuedensuponerunaalteracindelorden
secuencialdeejecucin.

Nosesabesielsaltoesefectivohastalaetapadeejecucinynose
actualizaladireccindestino(casodequeseaefectivo)hastalacuarta
etapa=>Prdidade3ciclos

Mejora:Adelantarelclculodeldestino(target)PC+Inmediatoyadelantarla
resolucindelacondicin(yactualizarelPC)ala2etapa.
Riesgosdecontrol(instruccionesdesalto)
EtapaIF EtapaID EtapaEX EtapaMEM EtapaWB

Obtenerinstruccin

Accesoalamemoria
deinstrucciones

Decodificarinstruccin.

Lecturadeoperandos,
cargaderegistros

Ejecutarinstruccin

Calcularladireccin
efectivasalto(PC+Inm.)

AccesoaMemoria
obien

Resolverlacondicin
yescribirenPCla
direccindesalto.

Escribirenun
registroelresultado
delaoperacin
ArquitecturaeIngenieradeComputadores
Cuandosedecidesaltaraunainstruccindistintadelasiguiente,yaseestnejecutando
otrasinstruccionesenelcaucesegmentado=>Senecesitaincluirhardwarepara
vaciar(flushing)elpipeline
Riesgosdecontrol(instruccionesdesalto)
Paradescartaruna
instruccincambiaa0
elcampodeinstruccin
(opcode)delregistro
desegmentacinIF/ID
NOP
PC
Instruction
memory
4
Registers
M
u
x
M
u
x
M
u
x
ALU
EX
M
WB
M
WB
WB
ID/EX
0
EX/MEM
MEM/WB
Data
memory
M
u
x
Hazard
detection
unit
Forwarding
unit
IF.Flush
IF/ID
Sign
extend
Control
M
u
x
=
Shift
left2
M
u
x
ArquitecturaeIngenieradeComputadores
QUHACERCONLASSIGUIENTESINSTRUCCIONESALADESALTO
CONDICIONAL?
1. Esperarhastaqueladireccinycondicindelsaltoestndefinidas.

Convieneconocerladireccindesaltoylacondicintanprontocomoseaposible.
2. Saltoretardado,la(s)instruccin(es)posterior(es)siempreseejecuta(n).

Elcompiladorrellenaconinstruccionesvlidasloshuecosderetardo.
3. Predecirsisevaasaltarono.

Seejecutaespeculativamente,encasodeerrorsedebevaciarelprocesador.
4. Anticiparladireccinmsprobableparaelsalto(BTB).

Seejecutaespeculativamente,sealmacenaenunacachladireccindelltimosalto.
5. Ejecutartodosloscaminos.

Implicaladuplicacindelhardware.
6. Ejecucinconpredicados.
RiesgosdeControl(Instruccionesdesalto)
ArquitecturaeIngenieradeComputadores
RiesgosdeControl.Saltoretardado
addr1,r2,r3
bnzr2,L1
nop
subr6,r7,r6
mulr2,r3,r8
.................
L1:andr2,r3,r2
andir5,r6,inm
Lasiguienteinstruccinalsaltosiempreseterminadeejecutar,sesalteono.
Elcompiladorutilizatresestrategiasparabuscaruna/variasinstruccionesderelleno:
...........
bnzr2,L1
addr1,r2,r3
subr6,r7,r6
mulr2,r3,r8
.................
L1:andr2,r3,r2
andir5,r6,inm
addr1,r2,r3
bnzr2,L1
andr2,r3,r2
subr6,r7,r6
mulr2,r3,r8
.................
L1:andir5,r6,inm
............
addr1,r2,r3
bnzr2,L1
subr6,r7,r6
.................
mulr2,r3,r8
.................
L1:andr2,r3,r2
andir5,r6,inm

DELBLOQUEBSICO

SISALTOPROBABLE,
DELBLOQUEDESTINO

SISALTONOPROBABLE,
DELBLOQUESECUENCIAL

Operacinvlidasila
instruccinnoafectaala
condicindelsalto.Siempre
serealizatrabajotil.

Operacinvlidasiempre
siemprequer2noseutilice
comofuenteyseamodificada
comodestinoenelenbloque
secuencial.(CORRECTO)

Operacinvlidasiempre
quer6noseutilicecomo
fuenteyseamodificada
comodestinoenelenbloque
destino.(INCORRECTO)
ArquitecturaeIngenieradeComputadores
RiesgosdeControl.Predecirelsalto

Prediccinesttica:siempreprediceelmismosentidodelsalto.

Ejecutaespeculativohastaqueseresuelvelacondicin(normalmente,ciclo34)

Encasodeerrordebeeliminarlosresultadosespeculativos

Prediccinefectiva(E),elsaltoserealiza

Prediccinnoefectiva(NE),elsaltonoserealiza

PrediccinNEsielsaltoesadelanteyEsieshaciaatrs

Prediccindinmica:cambialaprediccinenfuncindelahistoriadelsalto.

Utilizaunapequeamemoriaasociadaacadadireccindesalto(BHT,Branch
HistoryTable)
F
PC
DireccinInstruccinSalto
BHT
E NE
A
A
F
F
PREDICCINDE1BIT PREDICCINDE2BITS
Ef Ed A
F
A
NEd NEf A
A
F
F
ArquitecturaeIngenieradeComputadores

Utilizalatcnicadeprediccinhistricaanterior

Utilizaunatablaasociativa(tipocach)queincorpora,paracadainstruccinde
salto,ladireccindedestinodelaprediccinanterior.

AlatablaselaconocecomobufferdedestinodesaltosoBTB(BranchTarget
Buffer).
Direccin
Instruccin
Direccin
Destino
Bitsde
historia
Tabladelookup
completamenteasociativa
ContadordePrograma
Fetc Fetc
h h
Decod. Decod.
Cargardirec.destino
Direccin
Instruccin
SEGMENTACINDEINSTRUCCIONES
Direc.destinoencontrada
RiesgosdeControl.Anticiparladireccinmsprobable
ArquitecturaeIngenieradeComputadores
Segmentacin:Tratamientodeexcepcionesymejoras

Cmoafectaalasegmentacineltratamientode
excepciones(interrupciones,desbordamientosaritmticos,peticionesde
E/S,serviciosdelsistemaoperativo,usodeinstruccionesnodefinidas,mal
funcionamientodelacircuitera,etc)?

Bsicamentedetectarloyvaciarelpipelineparadarelcontrola
algunarutinadetratamientodeexcepciones

Cmomejoraranmslasegmentacin?

Supersegmentacin(implicasegmentacinenoperacionesaritmticas)

Superescalares(replicarrutasdedatos)

Planificacindinmicadelpipeline