Professional Documents
Culture Documents
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
comienzan a sofisticarse?
EJECUCION DE
ALU
LA INSTRUCCION
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
Segmentación RISC: carga/almacenamiento
HP en cinco etapas
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.
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).
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).
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
Segmentación > Riesgos
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
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
Segmentación > Riesgos > 3. De control
Segmentación > Riesgos > 3. De control
Segmentación > Riesgos > 3. De control
Segmentación > Riesgos > 3. De control
Resumen
RIESGOS ESTRUCTURALES
(conflicto de recursos)
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.