Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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
CO
MEMORIA (datos)
FO
ALU
EJECUCION DE LA INSTRUCCION
EI
MEMORIA (datos)
WO
Segmentacin
Segmentacin
HP en cinco etapas
RISC: carga/almacenamiento
DATAPATH
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
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}).
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:
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).
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:
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
Ejemplo
Ejemplo (cont)
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).
Penalidad: 2 ciclos
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.
Forwarding
Forwarding (cont)
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
3. Riesgos de control
Producidos por las instrucciones de salto.
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
Ejemplo
Salto condicional que SALTA: no se conoce la direccin de la prxima instruccin hasta despus del EI.
Penalidad: 3 ciclos
Ejemplo (cont)
Ejemplo salto condicional que NO SALTA: no se conoce la condicin hasta despus del EI, cuando la siguiente instruccin puede continuar.
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.
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]
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
Esquema tpico de prediccin dinmica con dos bits: cambiar la prediccin solo si suceden dos predicciones incorrectas consecutivas (ver variantes).
Resumen
RIESGOS ESTRUCTURALES
(conflicto de recursos)
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.