Está en la página 1de 39

Segmentacin del ciclo de instruccin

William Stallings, Organizacin y Arquitectura de Computadores, Captulo 11: Estructura y funcin de la CPU. John Hennessy David Patterson, Arquitectura de Computadores Un enfoque cuantitativo 1a Edicin Captulos 5 y 6
(4a Edicin, Apndice A)

Segmentacin

El ciclo de instruccin

Fundamento: Slo una parte del hardware es utilizado en cada etapa del ciclo de instruccin. Definicin: Tcnica de implementacin (invisible al programador) que superpone, en el tiempo, las diferentes etapas del ciclo de instruccin. Explotacin del paralelismo entre partes de las instrucciones. Ejemplo de la lnea de montaje (PIPELINE, tubera?). Aumenta productividad, pero desmejora la latencia (la sincronizacin entre etapas es costosa). Es imposible realizar una instruccin en un ciclo de reloj. El ptimo esperable sera realizar cada etapa del pipeline en un ciclo de reloj, alcanzando una productividad de una instruccin por ciclo.

Segmentacin

El ciclo de instruccin
Modelo muy simple. Qu sucede cuando las instrucciones comienzan a sofisticarse?

MEM

CAPTACION DE LA INSTRUCCION

UC

DECODIFICACION

ALU

EJECUCION DE LA INSTRUCCION

Instruccin

i i+1 i+2

FETCH

DECODE

EXECUTE

FETCH

DECODE

EXECUTE

FETCH

DECODE

EXECUTE

n+1

n+2 Ciclo

n+3

n+4

Segmentacin

El ciclo de instruccin
STALLINGS
MEMORIA (programa) CAPTACION DE LA INSTRUCCION

FI

UC

DECODIFICACION

DI

ALU

CALCULO DIR DEL OPERANDO

CO

MEMORIA (datos)

CAPTACION DEL OPERANDO

FO

ALU

EJECUCION DE LA INSTRUCCION

EI

CISC: operando en memoria


MEMORIA (datos)

ESCRITURA DEL OPERANDO

WO

Segmentacin

Stallings seis etapas

Segmentacin

HP en cinco etapas

RISC: carga/almacenamiento

DATAPATH

4c < CPI < 5c

1. 2. 3. 4. 5.

FI: Captar la instruccin e incrementar PC ID: Decodificar instruccin y captar registros EX: Tres opciones: calcular direccin efectiva, ALU o salto MEM: Acceso a memoria (solo carga o almacenamiento) (Terminan store y saltos: 4c) WB: Escribir registro de salida (Termina el resto: 5c)

1. Captacin (fetch) IF
La instruccin es transferida al registro de instruccin. En dos pasos porque el PC no tiene conexin directa a memoria.

MARPC;IRM[MAR]
2. Decodificacin (decode) ID
Decodificacin y lectura de los registros involucrados. Puede hacerse simultneamente por ser campo fijo.

ARs1;BRs2;PCPC+4
3. Ejecucin (execute) EX
Operacin de la ALU. Depende del tipo de instruccin. Referencia a memoria, salto/bifurcacin o instruccin ALU. No al mismo tiempo.

ALUoutAopBo MARA+(IR)16;MDRRd
4. Acceso a memoria (memory access) MEM
Se accede a memoria si es necesario (carga o almacenamiento) con la direccin calculada en el paso anterior. O realizar el salto.

MDRM[MAR];M[MAR]MDR
5. Post-escritura (write-back) WB
Escribir resultado en el registro, tanto si viene de la ALU como si viene de memoria.

RdALUoutAoMDR

Segmentacin

HP en cinco etapas

Segmentacin

HP en cinco etapas

Segmentacin

HP en cinco etapas

Segmentacin

Cortex-M3 en tres etapas

Segmentacin

Condiciones necesarias

Las instrucciones deben poder ser descompuestas en k etapas de menor duracin. 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 ms lenta (t=max{ti}).

Latencia de todas las instrucciones = k.t Productividad mxima = 1/t


Segmentacin

Aceleracin

Luego de k-1 ciclos las k etapas del pipeline estarn trabajando. Tericamente en ese momento el pipeline tiene la mxima productividad (k instrucciones simultneas) hasta que se altere la secuencia (salto o interrupcin). Si aumento el nmero de etapas, aumenta la productividad, hasta cierto punto (ver luego). Si el pipeline tiene k etapas de duracin t (duracin de la etapa ms larga), al ejecutarse un conjunto de n instrucciones, la aceleracin obtenida con esta tcnica puede expresarse como:

T nkt nk S= = = k T P t k1 +nt k+n1

OBJETIVOS DEL DISEADOR: Equilibrar las etapas (igual duracin), hacerlas independientes (que no compartan recursos) y mantenerlas ocupadas (atenuar los efectos de los saltos y la dependencia de datos)

Segmentacin

Lmites en la implementacin

Retardo adicional al tener que presentar la informacin entre etapas en registros intermedios (control de la segmentacin). La nica opcin es implementar las etapas de igual duracin y todas las instrucciones deben respetarlas. Aumenta la complejidad de la CPU. Difcil mantener el cauce completo debido a los riesgos de la segmentacin (a continuacin).

MAXIMO 6-9 ETAPAS


Segmentacin

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 informacin en el sitio de IBM, Arquitecturas Power. Prctica de repaso: comparacin con Pentium en Stallings, captulos 1, 4 y 11.

Segmentacin

Riesgos de la implementacin
HAZARDS: Situaciones que impiden la ejecucin de la prxima instruccin de la secuencia durante su correspondiente ciclo (el procesador queda detenido, suspendido, stalled, durante uno o ms ciclos). Todas las instrucciones posteriores son tambin suspendidas y no se realiza una nueva captacin mientras dure la suspensin. Clasificacin:

Riesgos estructurales Riesgos por dependencia de datos Riesgos de control

Segmentacin > Riesgos

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

Penalidad: 1 ciclo

Segmentacin > Riesgos > 1. Estructurales

Ejemplo

Segmentacin > Riesgos > 1. Estructurales

Ejemplo (cont)

Segmentacin > Riesgos > 1. Estructurales

Reduccin de los efectos

Duplicacin 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 instruccin (RISC). Lectura y escritura simultnea del banco de registros (RISC). Las unidades funcionales de PF pueden ser a la vez segmentadas para soportar varias instrucciones simultneas (ver luego).

Segmentacin > Riesgos

2. Riesgos por dep. de datos


Sucede principalmente cuando una instruccin requiere un dato generado por la ejecucin de una instruccin anterior que an no ha finalizado. Ejemplo:

Penalidad: 2 ciclos

Segmentacin > Riesgos > 2. Dependencia de datos

Clasificacin
Para dos instrucciones consecutivas los riesgos pueden clasificarse en tres categoras, siendo la primera la ms usual.

RAW (read after write): la segunda instruccin 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 ledo 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.

Segmentacin > Riesgos > 2. Dependencia de datos

Reduccin 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)

Segmentacin > Riesgos > 2. Dependencia de datos

Forwarding

Segmentacin > Riesgos > 2. Dependencia de datos

Forwarding (cont)

Extensin de la segmentacin para manipular operaciones multiciclo EMISION DE INSTRUCCIONES

Antes de emitir una nueva instruccin de punto flotante - Comprobar riesgos estructurales - Comprobar dependencia de datos RAW - Comprobar adelantamiento

Extensin de la segmentacin para manipular operaciones multiciclo SEGMENTACION DE LAS UNIDADES FUNCIONALES

Segmentacin > Riesgos

3. Riesgos de control
Producidos por las instrucciones de salto.

Efecto de las INTERRUPCIONES

Ejemplo salto incondicional: no se conoce la direccin de la prxima instruccin hasta despus del FO. Se realiza el fetch de la instruccin siguiente y luego se descarta.

Penalidad: 3 ciclos

Segmentacin > Riesgos > 3. De control

Ejemplo
Salto condicional que SALTA: no se conoce la direccin de la prxima instruccin hasta despus del EI.

Penalidad: 3 ciclos

Segmentacin > Riesgos > 3. De control

Ejemplo (cont)
Ejemplo salto condicional que NO SALTA: no se conoce la condicin hasta despus del EI, cuando la siguiente instruccin puede continuar.

Penalidad: 2 ciclos Existe penalidad aunque no salte!


Segmentacin > Riesgos > 3. De control

Estadsticas
Las operaciones de control (condicionales o incondicionales) son muy frecuentes en los programas reales, por lo que pueden reducir drsticamente la performance del pipeline. Estadsticas:

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.

Segmentacin > Riesgos > 3. De control

Reduccin de los efectos

Instruction fetch units y colas de instrucciones


(hardware adicional)

Buffer de bucles (pequea cache de instrucciones


consecutivas) [CRAY-1]

tiles solo en el caso de saltos incondicionales.

Segmentacin > Riesgos > 3. De control

Reduccin de los efectos (cont)


Flujos mltiples:
Se siguen los dos caminos posibles, duplicando las partes iniciales del hardware. Puede entrar en el cauce una nueva bifurcacin. [IBM 370/168]

Salto retardado:
Modificacin del ciclo de instruccin, que requiere reordenamiento del cdigo por parte del compilador. Luego de cada instruccin de salto hay un branch delay slot: la instruccin siguiente se ejecuta SIEMPRE. 60-80% efectivo, si no NOP. [RISC]

Segmentacin > Riesgos > 3. De control

Reduccin de los efectos (cont)


Prediccin de saltos:

Esttica

Siempre salta o nunca salta [Motorola 68020] Depende de la direccion [PowerPC 601] Uno o dos bits (HW) asociados a cada instruccin de salto [IBM 3090/400] Tabla de historia de saltos (memoria cache: tabla con direccin de la instruccin de bifurcacin + bits de historia + destino) [AMD 29000]

Dinmica

NOTA: Ejecucin especulativa (no solo fetch, comienzo a ejecutar)


Segmentacin > Riesgos > 3. De control

Reduccin de los efectos (cont)

Esquema tpico de prediccin dinmica con dos bits: cambiar la prediccin solo si suceden dos predicciones incorrectas consecutivas (ver variantes).

Segmentacin > Riesgos

Resumen
RIESGOS ESTRUCTURALES
(conflicto de recursos)

RIESGOS POR DEPENDENCIA DE DATOS


(RAW-WAR-WAW)

RIESGOS DE CONTROL
(saltos - interrupciones)

Segmentacin

Sumario

Las instrucciones son ejecutadas por la CPU como una secuencia de pasos. La ejecucin de instrucciones puede acelerarse sustancialmente utilizando segmentacin (pipelining) Un pipeline se organiza como una secuencia de k etapas. En un cierto instante puede haber k instrucciones activas en el pipeline. Ejemplo lnea de montaje. Aumentar el nmero de etapas aumenta la productividad, hasta cierto punto. Los riesgos (hazards) impiden mantener la mxima tasa. Los riesgos estructurales se deben a conflictos en la utilizacin de recursos. Tambin existen riesgos por dependencia de datos (inevitables) 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 tcnicas que reduzcan sus efectos.