You are on page 1of 35

Segmentación

William Stallings, Organización y Arquitectura de


Computadores, Capítulo 11: Estructura y función de la CPU.
John Hennessy – David Patterson, Arquitectura de
Computadores – Un enfoque cuantitativo 1a Edición
Capítulo 6: Segmentación
(4a Edición, Apéndice A)

   
   
Segmentación

El ciclo de instrucción

Fundamento: Sólo una parte del hardware es utilizado en cada etapa del
ciclo de instrucción.

Definición: Técnica de implementación (invisible al programador) que
superpone, en el tiempo, las diferentes etapas del ciclo de instrucción.
Explotación del paralelismo entre partes de las instrucciones.

Ejemplo de la línea de montaje (PIPELINE, tubería?). Aumenta
productividad, pero desmejora la latencia (la sincronización entre etapas es
costosa).

Es imposible realizar una instrucción en un ciclo de reloj. El óptimo
esperable sería realizar cada etapa del pipeline en un ciclo de reloj,
alcanzando una productividad de una instrucción por ciclo.

   
Segmentación

El ciclo de instrucción MEM CAPTACION DE


LA INSTRUCCION

Modelo muy simple. ¿Qué


sucede cuando las instrucciones UC DECODIFICACION

comienzan a sofisticarse?
EJECUCION DE
ALU
LA INSTRUCCION

i FETCH DECODE EXECUTE


Instrucción

i+1 FETCH DECODE EXECUTE

i+2 FETCH DECODE EXECUTE

n n+1 n+2 n+3 n+4

Ciclo
   
Segmentación

El ciclo de instrucción
CAPTACION DE
STALLINGS MEMORIA
LA INSTRUCCION
FI
(programa)

UC DECODIFICACION DI

CALCULO DIR
ALU
DEL OPERANDO
CO

CAPTACION DEL FO
MEMORIA
OPERANDO
(datos)

EJECUCION DE
ALU
LA INSTRUCCION EI

CISC: operando en memoria MEMORIA ESCRITURA DEL


OPERANDO WO
(datos)
   
Segmentación

Stallings seis etapas

   
Segmentación RISC: carga/almacenamiento
HP en cinco etapas

4c < CPI < 5c

1. FI: Captar la instrucción e incrementar PC


2. ID: Decodificar instrucción y captar registros – (Terminan saltos: 2c)
3. EX: Tres opciones: calcular dirección efectiva, ALU R-R o ALU R-Inmediato
4. MEM: Acceso a memoria (solo carga o almacenamiento) – (Termina store: 4c)
   
5. WB: Escribir registro de salida – (Termina el resto: 5c)
Segmentación

HP en cinco etapas

   
Segmentación

HP en cinco etapas

   
Segmentación

HP en cinco etapas

   
Segmentación

Condiciones

Las instrucciones deben poder ser descompuestas en
k etapas de menor duración.
 Las entradas de cada etapa ki deben estar
determinadas únicamente por las salidas de la etapa
anterior ki-1.

 Las duraciones de las diferentes etapas ti deben ser


comparables. El clock del pipeline estará
determinado por la etapa más lenta (t=max{ti}).

Latencia de todas las instrucciones = k.t


Productividad máxima = 1/t

   
Segmentación

Aceleración

Luego de k-1 ciclos las k etapas del pipeline estarán trabajando.

Teóricamente en ese momento el pipeline tiene la máxima
productividad (k instrucciones simultáneas) hasta que se altere la
secuencia (salto o interrupción).

Si aumento el número de etapas, aumenta la productividad, hasta
cierto punto (ver luego).

Si el pipeline tiene k etapas de duración t (duración de la etapa
más larga), al ejecutarse un conjunto de n instrucciones, la
aceleración obtenida con esta técnica puede expresarse como:
T nkt nk
S= = = k
T P t  k−1  +nt k+n−1
OBJETIVOS DEL DISEÑADOR: Equilibrar las etapas (igual duración),
hacerlas independientes (que no compartan recursos) y mantenerlas
   
ocupadas (atenuar los efectos de los saltos y la dependencia de datos)
   
Segmentación

Límites en la implementación


Retardo adicional al tener que presentar la
información entre etapas en registros intermedios
(control de la segmentación).

La única opción es implementar las etapas de igual
duración y todas las instrucciones deben respetarlas.

Aumenta la complejidad de la CPU.

Difícil mantener el cauce completo debido a los
riesgos de la segmentación (a continuación).

MAXIMO 6-9 ETAPAS

   
Segmentación

Ejemplos

80486 y Pentium: cinco etapas para instrucciones con enteros (FI,
D1, D2, EX, WB) y ocho para instrucciones de punto flotante.

PowerPC: cuatro etapas para instrucciones con enteros y seis para
instrucciones de punto flotante.

H-P (DLX): cinco etapas (IF, ID, EX, MEM, WB).

PowerPC: Es una arquitectura de computadoras de tipo RISC introducida en


1990 por la Alianza AIM, un consorcio de empresas compuesto por Apple,
IBM y Motorola, de cuyas primeras letras, surgió la sigla. Los procesadores
de esta familia son producidos por IBM y Freescale Semiconductor que es
la division de semiconductores y microprocesadores de Motorola, siendo
utilizados principalmente en ordenadores o computadores Macintosh de
Apple Computer. Mas información en el sitio de IBM, Arquitecturas Power.
Práctica de repaso: comparación con Pentium en Stallings, capítulos 1, 4 y
11.
   
Segmentación

Riesgos de implementación
HAZARDS: Situaciones que impiden la ejecución de la
próxima instrucción de la secuencia durante su
correspondiente ciclo (el procesador queda detenido,
suspendido, stalled, durante uno o más ciclos). Todas las
instrucciones posteriores son también suspendidas y no se
realiza una nueva captación mientras dure la suspensión.
Clasificación:

Riesgos estructurales
Riesgos por dependencia de datos
Riesgos de control

   
Segmentación > Riesgos

1. Riesgos estructurales
Sucede cuando un recurso (memoria, alu) debe ser utilizado por varias
instrucciones simultáneamente.
Ejemplo: una instrucción de carga desde memoria impide el acceso
durante un ciclo. El fetch de la instrucción i+3 debe ser suspendido.

  Penalidad: 1 ciclo  
Segmentación > Riesgos > 1. Estructurales

Ejemplo

   
Segmentación > Riesgos > 1. Estructurales

Ejemplo (cont)

   
Segmentación > Riesgos > 1. Estructurales

Reducción de los efectos



Duplicación de recursos, por ejemplo en el caso de
la ALU.

Cache de datos e instrucciones independientes,
para evitar los conflictos de memoria.

Un solo acceso a memoria de datos por instrucción
(RISC).

Lectura y escritura simultánea del banco de
registros (RISC).

Las unidades funcionales de PF pueden ser a la vez
segmentadas para soportar varias instrucciones
simultáneas (ver ejercicio en la práctica).

   
Segmentación > Riesgos

2. Riesgos por dependencia de


datos
Sucede principalmente cuando una instrucción requiere un
dato generado por la ejecución de una instrucción anterior
que aún no ha finalizado.

Ejemplo:

  Penalidad: 2 ciclos  
Segmentación > Riesgos > 2. Dependencia de datos

Clasificación
Para dos instrucciones consecutivas los riesgos pueden clasificarse
en tres categorías, siendo la primera la más usual.


RAW (read after write): la segunda instrucción lee un dato antes
que la primera lo genere. Lee el dato antiguo.

WAR (write after read): la segunda escribe un destino antes que
sea leído por la primera. La primera toma el valor incorrecto
(nuevo).

WAW (write after write): la segunda escribe un operando antes
de que sea escrito por la primera. Escrituras en orden
incorrecto. Queda lo escrito por la primera.

   
Segmentación > Riesgos > 2. Dependencia de datos

Reducción de los efectos


ADELANTAMIENTO (forwarding,
bypassing)
Camino adicional de HW.
El resultado de la ALU es realimentado
a su entrada, evitando el ciclo de
escritura WO.

Penalidad: 1 ciclo (antes 2)


   
Segmentación > Riesgos > 2. Dependencia de datos

Forwarding

   
Segmentación > Riesgos > 2. Dependencia de datos

Forwarding (cont)

   
Segmentación > Riesgos Efecto de las
INTERRUPCIONES
3. Riesgos de control
Producidos por las instrucciones de salto.
Ejemplo salto incondicional: no se conoce la dirección de la
próxima instrucción hasta después del FO. Se realiza el fetch
de la instrucción siguiente y luego se descarta.

Penalidad: 3 ciclos
   
Segmentación > Riesgos > 3. De control

Ejemplo
Salto condicional que SALTA: no se conoce la dirección de la
próxima instrucción hasta después del EI.

Penalidad: 3 ciclos

   
Segmentación > Riesgos > 3. De control

Ejemplo (cont)
Ejemplo salto condicional que NO SALTA: no se conoce la
condición hasta después del EI, cuando la siguiente
instrucción puede continuar.

Penalidad: 2 ciclos
Existe penalidad aunque no salte!
   
Segmentación > Riesgos > 3. De control

Estadísticas

Las operaciones de control (condicionales o incondicionales)


son muy frecuentes en los programas reales, por lo que
pueden reducir drásticamente la performance del pipeline.
Estadísticas:

20-35% de las operaciones son saltos.

~65% de dichas operaciones toman el salto.

Hay casi el doble de saltos condicionales que de saltos
incondicionales.

   
Segmentación > Riesgos > 3. De control

Reducción de los efectos



Instruction fetch units y colas de instrucciones (hardware
adicional)

Buffer de bucles (pequeña cache de instrucciones consecutivas)
[CRAY-1]
Útiles solo en el caso de saltos incondicionales.

   
Segmentación > Riesgos > 3. De control

Reducción de los efectos (cont)


Flujos múltiples:
Se siguen los dos caminos posibles, duplicando las partes
iniciales del hardware.
Puede entrar en el cauce una nueva bifurcación.
[IBM 370/168]
Salto retardado:
Reordenamiento por compilador.
Luego de cada instrucción de salto hay un branch delay slot: la
instrucción siguiente se ejecuta.
60-80% efectivo, si no NOP.
[RISC]

   
Segmentación > Riesgos > 3. De control

Reducción de los efectos (cont)


Predicción de saltos:

Estática

Siempre salta o nunca salta [Motorola 68020]

Depende de la direccion [PowerPC 601]

Dinámica

Uno o dos bits (HW) asociados a cada instrucción de salto
[IBM 3090/400]

Tabla de historia de saltos (memoria cache: tabla con
dirección de la instrucción de bifurcación + bits de historia
+ destino) [AMD 29000]

NOTA: Ejecución especulativa (no solo fetch, comienzo a ejecutar)

   
Segmentación > Riesgos > 3. De control

Reducción de los efectos (cont)

Esquema típico de predicción dinámica con dos bits: cambiar la


predicción solo si suceden dos predicciones incorrectas
  consecutivas (ver variantes).  
Segmentación > Riesgos

Resumen

RIESGOS ESTRUCTURALES
(conflicto de recursos)

RIESGOS POR DEPENDENCIA DE DATOS


(RAW-WAR-WAW)

RIESGOS DE CONTROL
(saltos - interrupciones)

   
Segmentación

Sumario

Las instrucciones son ejecutadas por la CPU como una secuencia de pasos.
La ejecución de instrucciones puede acelerarse sustancialmente utilizando
segmentación (pipelining)

Un pipeline se organiza como una secuencia de k etapas. En un cierto
instante puede haber k instrucciones activas en el pipeline. Ejemplo línea
de montaje.

Aumentar el número de etapas aumenta la productividad, hasta cierto
punto.

Los riesgos (hazards) impiden mantener la máxima tasa. Los riesgos
estructurales se deben a conflictos en la utilización de recursos. También
existen riesgos por dependencia de datos y riesgos de control debidos a las
instrucciones de salto.

Las instrucciones de salto pueden deteriorar significativamente la
performance del pipeline, por lo que deben aplicarse técnicas que reduzcan
sus efectos.

   

You might also like