Unidad 2: Segmentación
description
Transcript of Unidad 2: Segmentación
EJECUCIÓN SEGMENTADA DE INSTRUCCIONES
Unidad 2: Segmentación
Ejecución Secuencial
ASPA: Programador Programa EjecuciónInicia una nueva instrucción hasta que
concluye la anterior.Ciclo de instrucción secuencial estricto
Rendimiento secuencial
Rendimiento limitado:
t = t * N * CPI Período: depende de la tecnología N de Instrucciones: no da buenos resultados CPI: máximo = 1.
Puede implicar t mayor.
Nuevo enfoque: Segmentación
Técnica que permite agilizar la ejecución: Ejecución solapada de
varias instrucciones en el tiempo.
Paralelismo temporal. Similar a una cadena de
producción.
Principios de Segmentación
Se divide la tarea en subtareas: T = {T1, T2, ...., Tk}
Orden de ejecución Al finalizar las subtareas tarea concluida
Se divide el ejecutor (Procesador) en subejecutores o segmentos .
Cada segmento ejecuta una subtarea en el orden establecido.
Ejecución de múltiples tareas por etapas
Ejecución secuencial de Instrucciones
Ejecución solapada de instrucciones
Representaciones
Diagrama de Instrucciones Muestra el solapamiento en el tiempo. Línea perpendicular
muestra lo que se ejecuta en ese instante.Diagrama Espacio-Tiempo
Muestra el uso del cauce por las instrucciones en el tiempo: superíndice Instrucción, Subíndice etapa.
. . .
. . .. . .
. . .
S1
S2
S3
S4
1 5432 6 7 8Tiempo(ciclos)
Espacio
T1
4T2
4T3
4T4
4T5
4
T1
3T2
3T3
3T4
3T5
3
T1
2T2
2T3
2T4
2T5
2
T1
1T2
1T3
1T4
1T5
1
inst i
inst i+1
inst i+2
inst i+3
inst i+4
Diagrama de Instrucciones Diagrama Espacio/tiempo
Procesador Segmentado
Segmentos lógicos o etapas con hardware exclusivo (llamaremos k al número de etapas).
Cada segmento realiza una etapa del ciclo de instrucción.
Todos deben proceder a la vez: Necesario sincronizar las etapas Selección del período
S1 S2 S3 S4 S5
Clock
Input Output
Rendimiento del Segmentado
Período de reloj
1 2 3 4 5r
S1 S2 S3 S4 S5
Clock
Input Output
= Max { i }k
1+ r = max + r
Rendimiento del Segmentado
Tiempo de ejecución secuencial:
t = t * N * CPI t1 = t * N * k
¡ No ocurre así en el segmentado! tk = ¿?
tk = k * t + (N – 1) *t
- Note que CPI = k, así que, podemos reescribir como:
- Subíndice 1 indica monolítico, secuencial.
Rendimiento del Segmentado
Ganancia: Procesador segmentado respecto a secuencial
equivalente.
Ganancia máxima: Límite de G cuando N ∞
k[Aplicando teorema de l’Hopital]
Rendimiento del Segmentado
Eficiencia Medida de la utilización del cauce
= 1
Area de Tramos utilizados:
B * h = N * t * k
Area Total de Tramos:
B * h = (t * k + t * (N – 1)) * k = = k * t * ( k + N – 1)
=
Rendimiento del Segmentado
Productividad Cantidad de tareas por unidad de tiempo.
Productividad máxima: Cuando la eficiencia es máxima
máx = f
¿𝑁
𝝉∗(𝑘+𝑁−1)
Tipos de Segmentación
Definida por la relación de orden de las subtareas: Relación de precedencia lineal : Segmentación lineal Relación de precedencia no lineal: Segmentación no
lineal
T1 T2T3 T4
T1 T3T2 T4
out
in
1 2 3in out
Grafo de Precedencia Lineal Grafo de Precedencia No lineal
13
2 4
Tipos de Segmentados
Por Niveles de procesamiento (Händler): Cauce de Instrucciones.
Ejemplo del DLX Cauce Aritmético.
Ejemplo del sumador de PF Encauzamiento de Procesadores.
Dependiendo de las configuraciones y estrategias de
control: Unifunción – Multifunción Estático – Dinámico Escalares – Vectoriales
Procesador DLX
Modelo didáctico que emplearemos para ayudarnos a entender mejor cómo funciona la Segmentación.
Diseñado por John Hennessy y David Patterson como ejemplo base en su libro: “Arquitectura de Computadoras – Un enfoque cuantitativo”
Basado en las arquitecturas de diferentes procesadores reales con características exitosas en su implementación.
Procesador DLX
Nombre: Proviene del promedio (en números romanos) de los números de modelo de los diferentes procesadores cuyas arquitecturas inspiraron su diseño.
Procesador RISC:
Arquitectura de 3 direcciones Máquina LOAD-STORE o R-R Arquitectura de 32 bits 32 registros de 32 bits Registro r0 es read-only y siempre su valor es 0.
Comparación RISC vs CISC
RISC CISC Pocos formatos de instrucciones y sencillos permiten decodificador rápido y control cableado.
Muchos formatos muy complejos que normalmente requieren unidad de control microprogramada.
Las operaciones de cálculo son registro-registro. Instrucciones específicas de carga y almacenamiento.
Las operaciones permiten operandos en memoria.
Usan la mínima cantidad de modos de direccionamiento.
Buscan permitir la máxima cantidad de modos de direccionamiento.
Programas largos pero sencillos.
Programas cortos pero complejos.
Más fácil de segmentar por su sencillez.
Más difícil de segmentar y controlar.
Mayor rapidez de ejecución. Ejecución más lenta (complejidad + UC mProg)
Repertorio del DLX
Cálculo
OP R1, R2, R3 ; R1 = R2 OP R3
Acceso a Memoria
LOAD R1, d(R2)
; R1 = M( R2 + d )
STORE d(R2), R1
; M( R2 + d ) = R1
Saltos BRx R1, d
; If ( R1 cond 0) then PC = PC + d
Nota: x puede ser: E ( cond es = ) NE ( cond es # ) LT ( cond es < ) LE ( cond es <= ) GT ( cond es > ) GE ( cond es >= )
Primera aproximación Organización DLX
ALU
mdr
pc
mar
ir M
buff
A B
BR
Rd Write
Rf2 RRf1 R
A B
DataBus
@Bus4
Segmentando el DLX
¿Cómo podemos segmentar el DLX para que ejecute instrucciones solapadamente? Definir etapas o segmentos del Procesador:BUS o IF Etapa de búsqueda o fetch de la intrucción e incremento del
pc
DL o ID Decodificación/Carga de operandos (registros) en ALU.
ALU o EX
Ejecución de operaciones y cálculo de direcciones efectivas de datos en memoria.
MEM
Accesso a memoria para lectura (M R) o para escritura (RM).
ESC o WB
Escritura de resultados en los registros.
Tabla de ReservaInstrucción BUS D/L ALU MEM ESC
rd = rf1 op rf2
OP
mar = pc mdr = M(mar) ir = mdr pc = pc + 4
decodificar A = rf1 B = rf2
buff = A op B
- rd = buff
rd = M(rf1+d)
LOAD
mar = pc mdr = M(mar) ir = mdr pc = pc + 4
decodificar A = rf1 B = d
mar = A + B
mdr = M(mar) rd = mdr
M(rf1+d) = rf2
STORE
mar = pc mdr = M(mar) ir = mdr pc = pc + 4
decodificar A = rf1 B = d mdr = rf2
mar = A + B M(mar) = mdr -
if (cond)
pc = pc + d
BRx
mar = pc mdr = M(mar) ir = mdr pc = pc + 4
decodificar A = pc B = d A’ = rf1
buff = A + B cond = (A’ cmp 0)
if (cond)pc = buff
-
Dificultades de la segmentación
¿ Basta con definir las etapas ? Requerimientos de la Segmentación …
Riesgos por dependencias Riesgos por dependencias estructurales. Riesgos por dependencias de datos. Riesgos por dependencias de control.
Otras dificultades: Excepciones
Riesgos por dependencias estructurales
Se pueden dar en varios entornos del sistema: Sistema de memoria: Varias etapas intentan acceder a
la memoria a la vez. Unidad de ejecución: Varias etapas intentan usar la
ALU u otros órganos de cálculo y los RPG a la vez. Latches o registros de desacoplo entre etapas: Solo
una etapa debe escribir en el latch. A veces también podemos perder datos si no tenemos latches que lleven los datos entre etapas.
Riesgos por dependencias estructurales
Sistema de Memoria: Memorias principales no diseñadas para atender
varias operaciones concurrentes. Solo una etapa debe acceder a la memoria.
Identificación de dependencias: Revisar en la tabla de reserva si más de una etapa
accede a memoria.
Tabla de ReservaInstrucción BUS D/L ALU MEM ESC
rd = rf1 op rf2
OP
mar = pc mdr = M(mar) ir = mdr pc = pc + 4
decodificar A = rf1 B = rf2
buff = A op B
- rd = buff
rd = M(rf1+d)
LOAD
mar = pc mdr = M(mar) ir = mdr pc = pc + 4
decodificar A = rf1 B = d
mar = A + B
mdr = M(mar) rd = mdr
M(rf1+d) = rf2
STORE
mar = pc mdr = M(mar) ir = mdr pc = pc + 4
decodificar A = rf1 B = d mdr = rf2
mar = A + B M(mar) = mdr -
if (cond)
pc = pc + d
BRx
mar = pc mdr = M(mar) ir = mdr pc = pc + 4
decodificar A = pc B = d A’ = rf1
buff = A + B cond = (A’ cmp 0)
if (cond)pc = buff
-
MEM y BUS acceden a memoria: MEM para leer instrucciones y MEM para
leer o escribir datos.
Riesgos por dependencias estructurales
Sistema de Memoria >> Existen dependencias: Dos etapas (BUS y MEM) compitiendo por la memoria.
Solución: Emplear Jerarquía de Memoria: Cachés tan
rápidas como los registros (no espera). Arquitectura Harvard: Sistema con dos caches,
una para datos y la otra para instrucciones.
Riesgos por dependencias estructurales
Unidad de Ejecución: Órganos de cálculo diseñados para realizar una sola operación a
la vez. Solo una etapa debe usarlos a la vez.
Registros de propósito general permiten múltiples lecturas concurrentes si tienen múltiples buses de acceso: Organización en Banco de Registros lo permite.
Registros solo permiten una escritura a la vez.
Identificación: Revisar en la tabla de reserva si varias etapas usan la ALU y si
alguna etapa la quiere usar para más de una operación a la vez.
Tabla de ReservaInstrucción BUS D/L ALU MEM ESC
rd = rf1 op rf2
OP
ir = Mi(pc) pc = pc + 4
decodificar A = rf1 B = rf2
buff = A op B
- rd = buff
rd = M(rf1+d)
LOAD
ir = Mi(pc) pc = pc + 4
decodificar A = rf1 B = d
mar = A + B
mdr = M(mar) rd = mdr
M(rf1+d) = rf2
STORE
ir = Mi(pc) pc = pc + 4
decodificar A = rf1 B = d mdr = rf2
mar = A + B M(mar) = mdr -
if (cond)
pc = pc + d
BRx
ir = Mi(pc) pc = pc + 4
decodificar A = pc B = d A’ = rf1
buff = A + B cond = (A’ cmp 0)
if (cond)pc = buff
-
BUS y ALU intentan usar la ALU a la vez: BUS para incrementar el PC y
ALU para ejecutar las operaciones pero
además para comparar A’ con 0
Riesgos por dependencias estructurales
Recursos de cálculo>> Existen dependencias: ALU requerida por la etapa BUS (incremento del PC) y por etapa
ALU (operación). Instrucción BRx requiere comparar rf1 con 0 en la etapa ALU y
realizar pc + d.Registros de Propósito General:
RPG: Requeridas dos lecturas y una escritura simultáneamente.
Solución: Sumador en BUS (incremento), ALU en ALU (operación) y
Comparador en ALU. Diseñar un BR capaz de dos lecturas y una escritura.
Riesgos por dependencias estructurales
Latches o registros de retención: Necesidad de retención de datos entre etapas para
que la segmentación funcione. Lectura al principio del período y escritura al final Sólo una etapa puede escribir en un latch a la vez. Datos sólo deben permanecer en latches durante un
período porque de lo contrario, una instrucción posterior puede sobreescribirlo y se perdería. Latches deben ir llevando los datos de una etapa a la
otra, como los corredores de relevos llevan las estafetas.
Riesgos por dependencias estructurales
Identificación de dependencias: Sobreescrituras de datos:
Revisar cada instrucción en la tabla de reserva observando si alguna escribe en un registro un dato que luego no lee en la etapa siguiente.
Colisiones: Revisar en la tabla de reserva si más de una etapa
intenta escribir en un mismo registro.
Riesgos por dependencias estructurales
Identificación de dependencias: Sobreescrituras de datos:
Revisar cada instrucción en la tabla de reserva observando si alguna escribe en un registro un dato que luego no lee en la etapa siguiente.
Colisiones: Revisar en la tabla de reserva si más de una etapa
intenta escribir en un mismo registro.
Tabla de ReservaInstrucción BUS D/L ALU MEM ESC
rd = rf1 op rf2
OP
ir = Mi(pc) pc = pc + 4
decodificar A = rf1 B = rf2
buff = A op B
- rd = buff
rd = M(rf1+d)
LOAD
ir = Mi(pc) pc = pc + 4
decodificar A = rf1 B = d
mar = A + B
mdr = M(mar) rd = mdr
M(rf1+d) = rf2
STORE
ir = Mi(pc) pc = pc + 4
decodificar A = rf1 B = d mdr = rf2
mar = A + B M(mar) = mdr -
if (cond)
pc = pc + d
BRx
ir = Mi(pc) pc = pc + 4
decodificar A = pc B = d A’ = rf1
buff = A + B cond = (A’ cmp 0)
if (cond)pc = buff
-
OP: escribe en buff en ALU y lo lee hasta en
ESC
STORE: escribe en mdr en D/L y lo lee hasta en
MEM
TODAS: ¡Se
escribe en ir en
BUS y no se lee luego,
perdiendo su
valor!
Riesgos por dependencias estructurales
Identificación de dependencias: Sobreescrituras de datos:
Revisar cada instrucción en la tabla de reserva observando si alguna escribe en un registro un dato que luego no lee en la etapa siguiente.
Colisiones: Revisar en la tabla de reserva si más de una etapa
intenta escribir en un mismo registro.
Tabla de ReservaInstrucción BUS D/L ALU MEM ESC
rd = rf1 op rf2
OP
ir = Mi(pc) pc = pc + 4
decodificar A = rf1 B = rf2
buff = A op B
- rd = buff
rd = M(rf1+d)
LOAD
ir = Mi(pc) pc = pc + 4
decodificar A = rf1 B = d
mar = A + B
mdr = M(mar) rd = mdr
M(rf1+d) = rf2
STORE
ir = Mi(pc) pc = pc + 4
decodificar A = rf1 B = d mdr = rf2
mar = A + B M(mar) = mdr -
if (cond)
pc = pc + d
BRx
ir = Mi(pc) pc = pc + 4
decodificar A = pc B = d A’ = rf1
buff = A + B cond = (A’ cmp 0)
if (cond)pc = buff
-
D/L y MEM : intentan escribir en mdr
BUS y MEM: intentan escribir
en pc
Riesgos por dependencias estructurales
Latches >> Existen dependencias: Sobreescrituras:
Buff en OP; mdr en STORE; ir en TODAS Colisiones.
D/L y MEM en mdr; BUS y MEM en pc
Solución: Adicionar a mdr, un mdrin y mdrout: uno por función. Buff eliminado, mar queda a la salida de la ALU. PC no se replica, se multiplexa cuando BRx y se toma el salto IR debe replicarse para no perder las instrucciones en el cauce
Tabla de Reserva con dependencias resueltas
Instrucción BUS D/L ALU MEM ESC
rd = rf1 op rf2
OP
ir = Mi(pc) pc = pc + 4
decodificar A = rf1 B = rf2 ir2 = ir
mar = A op B Ir3 = ir2
mdrin = mar ir4 = ir3
rd = mdrin
rd = M(rf1+d)
LOAD
ir = Mi(pc) pc = pc + 4
decodificar A = rf1 B = dir2 = ir
mar = A + BIr3 = ir2
mdrin = Md(mar) ir4 = ir3
rd = mdrin
M(rf1+d) = rf2
STORE
ir = Mi(pc) pc = pc + 4
decodificar A = rf1 B = d
mdr = rf2ir2 = ir
mar = A + B
mdrout = mdrIr3 = ir2
M(mar) = mdrout ir4 = ir3
-
if (cond)
pc = pc + d
BRx
ir = Mi(pc) pc = pc + 4
decodificar A = pc B = d
A’ = rf1ir2 = ir
mar = A + B
cond = (A’ cmp 0)
Ir3 = ir2
if (cond) pc = mar
ir4 = ir3
-
Estructura DLX sin dependencias estructurales
ALU
M DR
PC
M AR
IR
iCache
M DRIN
BR
Rf2 RRf1 R
A B
Inst
@ Inst
A'
Com p
0
S4
M DROUT
BR
Rd W rite
IR2
IR3
IR4
(o ffse t d)
Cond
DLX Datapath - Dependencias estructurales resueltas
dCache
BUS
D/L
ALU
MEM
ESC
R /W
R elo j
R elo j
R elo j
R elo jR elo j
R elo j R elo jR elo j
@ datos
datos_out
datos_ in
R elo j R elo jR elo j
R /W
IC ache:R /W
BR :@ R f1(C O , R 1), R eadBR :@ R f2(C O , R 2), R eadM uxA(C O )M uxB(C O )
ALU sel(C O )
dC ache:R /W (C O )
BR :@ R d(C O , R d|R 2)
S eñ a le s d e C o n tro lS istem a d e M em o r iaR elo j