ARQUITECTURAS RISC: EJEMPLO MIPS64 12
PARALELISMO A NIVEL DE INSTRUCCIÓN (ILP): EVOLUCIÓN Etapas: Búsqueda (Fetch) Descodificación (Decode) y lectura de operandos Ejecución (Execute) Escritura del resultado (Writeback) Esquema básico Processing element (PE) Contiene todas las etapas Procesa las instrucciones secuencialmente Segmentación Solapamiento temporal de la ejecución de las instrucciones. La unidad de procesamiento se divide en varias unidades funcionales que operan en paralelo Cada etapa procesa una fase de la instrucción. Las instrucciones se ejecutan secuencialmente 13
UNIDAD CENTRAL DE PROCESO Se encarga de ejecutar los programas almacenados en la memoria, para lo cual, realiza repetitivamente los siguientes procesos:
Lectura de la instrucción (fetch) Descodificación (interpretación) Lectura operandos (datos) Ejecución Escritura del resultado en memoria en el banco de registros 14
UNA PRIMERA IDEA (Gp:) ALU (Gp:) MUX (Gp:) Instr. Memory (Gp:) Reg File (Gp:) MUX (Gp:) MUX (Gp:) Data Memory (Gp:) MUX (Gp:) Sign Extend (Gp:) 4 (Gp:) Add (Gp:) Zero? (Gp:) PC (Gp:) WB Data (Gp:) Rs1 (Gp:) Rs2 (Gp:) Imm (Gp:) Instr (Gp:) CR (Gp:) Rd (Gp:) Descodif.
15
BÚSQUEDA DE INSTRUCCIÓN (IF) Memory Access Write Back Instruction Fetch Instr. Decode Reg. Fetch Execute Addr. Calc (Gp:) ALU
(Gp:) MUX
(Gp:) Instr. Memory
(Gp:) Reg File
(Gp:) MUX
(Gp:) MUX
(Gp:) Data Memory
(Gp:) MUX
(Gp:) Sign Extend
4 Add (Gp:) Zero?
(Gp:) PC
Rs1 Rs2 Imm (Gp:) Instr
(Gp:) PC
(Gp:) PC
(Gp:) PC
(Gp:) AOR
(Gp:) SVR
(Gp:) ImR
(Gp:) AIR 2
(Gp:) AIR 1
(Gp:) CR
(Gp:) ARR
(Gp:) LMDR
(Gp:) RD
(Gp:) RD
(Gp:) RD
Rd Se busca la instrucción a la que apunta el PC en la caché de instrucciones. Se lleva al registro de instrucción. Se lleva el PC al latch de interfaz entre etapas. Se incrementa el PC en 4. Se lleva de nuevo al PC. Salvo que una instrucción previa de transferencia de control salto requiera su modificación, el multiplexor elije en este caso la dirección objetivo del salto. 16 MUX ALU
DESCODIFICACIÓN Y LECTURA DE OPERANDOS (ID) Se descodifica la instrucción en la 1ª mitad del ciclo. Dependiendo del tipo de instr. se realiza lo siguiente en la 2ª mitad del ciclo: Registro-registro (aritméticas/lógicas) Se leen los registros Rs1 y Rs2 del banco de registros que se llevarán a la ALU. Referencia a memoria (load/store) Se lee el registro base de la dirección de memoria y se lleva a la entrada 1 de la alu. Se extiende el signo al desplazamiento y se lleva a la ALU. Si es un store se lee el registro a almacenar en memoria y se lleva a la entrada 2 de la alu. Transferencia de control (branch) Se extiende el signo al desplazamiento Se lee el registro que determina la dirección base del salto. Instr. Decode Reg. Fetch (Gp:) Reg File
(Gp:) Sign Extend
Rs1 Rs2 Imm (Gp:) Instr
Rd Descodif. data 17
EJECUCIÓN O CÁLCULO DE DIRECCIÓN (EX) La ALU ejecuta la operación sobre los datos: Las entradas a la alu (arit./log) El PC y el Imm (direc. de salto relativa a PC) El Reg base y el Imm (direc de salto relativa a reg o direc de memoria) Dependiendo del tipo de instr.: Registro-registro (aritméticas/lógicas) La salida de Alu contiene el resultado de la operación sobre los registros Rs1 y Rs2, y se lleva la salida. Referencia a memoria (load/store) La salida de Alu contiene la dirección efectiva de memoria (a leer o escribir). Si es una instr store, el contenido del Rs 2 (reg a almacenar en mem) se lleva en paralelo. Transferencia de control (branch) La salida de Alu contiene la dirección efectiva del salto. Se determina si la condición de salto se verifica o no y se lleva al condition reg (CR). Execute Addr. Calc (Gp:) ALU
(Gp:) MUX
(Gp:) MUX
(Gp:) Zero?
(Gp:) CR
PC Imm 18
ACCESO A MEMORIA/ FINAL. DE SALTO (MEM) Se realizan operaciones sólo en el caso de instrucciones load, store y branch: Registro-registro (aritméticas/lógicas) La salida de ALU se transfiere. Dependiendo del tipo de instr.: Referencia a memoria (load/store) Load: se lee el dato de la caché de datos Store: se escribe en la memoria (en la dirección efectiva calculada) el dato leído del banco de registros. Transferencia de control (branch) Tanto para los saltos incondicionales como para los condicionales tomados se modifica el PC de la etapa inicial IF por el contenido del registro de salida de la alu. Para los saltos condicionales no tomados, el PC no se modificará. En el mux de la etapa IF se elije el Pc+4. Memory Access (Gp:) Data Memory
(Gp:) Zero?
(Gp:) CR
19
FASE DE ESCRITURA DEL RESULTADO (WB) Durante esta fase el resultado de la ejecución de una instrucción registro-registro o load a memoria es almacenado en el banco de registros de la etapa ID. Dependiendo del tipo de instr.: Registro-registro (aritméticas/lógicas) El resultado de la ALU se escribe en el banco de registros de la etapa ID. Referencia a memoria (load) El dato leído de la memoria cache se escribe en el banco de registros de la etapa ID. Write-Back (Gp:) MUX
20
BANCO DE REGISTROS El banco de registros requiere: Poder acceder a dos registros simultáneamente (2 operandos fuente) en lectura. Poder escribir en un registro en la escritura. Tiene tres entradas de direccionamiento de registros, una entrada para los datos a escribir y dos salidas para los registros leídos. 21
RUTA DE DATOS BÁSICA Ruta de datos monociclo: La frecuencia de reloj se debe seleccionar para poder ejecutar la instucción de mayor coste temporal. Se retrasa la ejecución del resto de operaciones.
Dividiendo la ejecución de una instrucción en varias fases independientes, se mejora el rendimiento del procesador. Cada instrucción solo ejecuta los ciclos que requiere. La frecuencia de reloj es mayor. ? conduce a la segmentación 22
SEGMENTACIÓN Objetivo: Incrementar la velocidad de ejecución utilizando múltiples unidades concurrentemente pero que preservan el orden original de las instrucciones. Puede ser invisible al programador y al compilador. Método básico: Dividir la ejecución de la instrucción en varias etapas y ejecutar cada etapa en una unidad diferente. Observaciones: Se suele utilizar un modelo “síncrono” para el control de los cauces (igual tiempo para cada etapa). Entre las etapas se sitúan registros Se suele utilizar un mecanismo de parada cuando resulta bloqueada alguna instrucción. Ciclo de máquina: es el tiempo de ejecución en cada etapa del cauce (valores típicos: 1-2 CPU Cycles) 23
EJEMPLO DE EJECUCIÓN SEGMENTADA 24 (Gp:) Memory Access (Gp:) Write Back (Gp:) Instruction Fetch (Gp:) Instr. Decode Reg. Fetch (Gp:) Execute Addr. Calc (Gp:) ALU (Gp:) MUX (Gp:) Instr. Memory (Gp:) Reg File (Gp:) MUX (Gp:) MUX (Gp:) Data Memory (Gp:) MUX (Gp:) Sign Extend (Gp:) 4 (Gp:) Add (Gp:) Zero? (Gp:) PC (Gp:) WB Data (Gp:) Rs1 (Gp:) Rs2 (Gp:) Imm (Gp:) PC (Gp:) Instr (Gp:) PC (Gp:) PC (Gp:) PC (Gp:) AOR (Gp:) SVR (Gp:) ImR (Gp:) AIR 2 (Gp:) AIR 1 (Gp:) CR (Gp:) ARR (Gp:) LMDR (Gp:) RD (Gp:) RD (Gp:) RD (Gp:) Rd
GANANCIA DE “PRESTACIONES” A igualdad de tecnología, ¿qué ventaja se obtiene al usar una CPU segmentada? Supongamos que la ejecución de una instrucción se divide en k etapas. Cada etapa tarda un ciclo en ejecutarse. Supongamos que el programa consta de n instrucciones (n grande) La 1ª instrucción tarda en ejecutarse k ciclos (k etapas x 1 ciclo) Las instrucciones posteriores finalizan en los ciclos siguientes 25
TIEMPO DE RESPUESTA Y RENDIMIENTO Tiempo de respuesta (latencia) Tiempo entre en comienzo y la finalización de una tarea (observado por el usuario). Response Time = CPU Time + Waiting Time (I/O, OS scheduling, etc.).
Throughput Rendimiento. Número de tareas por unidad de tiempo.
26
Reducir el tiempo de ejecución mejora el rendimiento. Ejemplo: usar una versión más rápida de un procesador. Menos tiempo para realizar una tarea, más tareas por unidad de tiempo.
Mejorar el rendimiento mejora el tiempo de respuesta. Ejemplo: aumentar el número de procesadores en un sistema multiprocesador. Más tareas ejecutadas en paralelo. No cambia el tiempo de ejecución de las tareas secuenciales individuales. Pero el tiempo de espera es menor, por lo que el tiempo de respuesta se reduce. 27 TIEMPO DE RESPUESTA Y RENDIMIENTO
DEFINICIÓN DE PRESTACIONES Para un programa corriendo en X:
X es n veces más rápida que Y si:
28
¿QUÉ ES EL TIEMPO DE EJECUCIÓN? Tiempo transcurrido real: No I/O, S.O.,etc. no interesan.
Tiempo de ejecución de la CPU Tiempo transcurrido ejecutando instrucciones del programa. No cuentan las I/O ni S.O. Medido en segundos o ciclos de reloj de la CPU. 29
CICLOS DE RELOJ Clock cycle = Clock period = 1 / Clock rate = cycle time
Clock rate = Clock frequency = Cycles per second 1 Hz = 1 cycle/sec 1 KHz = 103 cycles/sec 1 MHz = 106 cycles/sec 1 GHz = 109 cycles/sec 2 GHz clock has a cycle time = 1/(2×109) = 0.5 nanosecond (ns) 30
Página anterior | Volver al principio del trabajo | Página siguiente |