Tema 1: PROCESADORES SEGMENTADOS 1.1. Procesadores RISC frente a procesadores CISC. 1.2. Clasificación de las arquitecturas paralelas. 1.3. Evaluación y mejora del rendimiento de un computador. 1.4. Características de los procesadores segmentados. 1.5. Arquitectura segmentada genérica. 1.6. Riesgos en la segmentación. 1.7. Planificación dinámica: Algoritmo de Tomasulo.
CARACTERÍSTICAS DE LOS PROCESADORES SEGMENTADOS Segmentación (pipelining): técnica empleada en el diseño de procesadores que trata de aprovechar el paralelismo intrínseco que existe entre instrucciones en un flujo secuencial. Un elemento (unidad funcional, procesador, circuito etc.) se divide en una serie de etapas que funcionan de forma independiente por las que van pasando los operandos y las instrucciones
Tarea procesada de forma totalmente secuencial
Tarea ejecutada mediante un procesador segmentado (equivale a una cadena de montaje) profundidad de la segmentación= número de etapas en que puede dividirse el procesamiento de una instrucción
CP=Contador de programa CO= Código operación DO= Dato operando en memoria ARQUITECTURA SEGMENTADA GENÉRICA (ASG) Sencilla arquitectura con propósitos educativos. Las instrucciones aritmético lógicas utilizan 3 operandos y ninguno hace referencia a memoria. (instrucciones registro registro) Operaciones carga/almacenamiento Modo de direccionamiento con desplazamiento CP Relativo a Registro Base CO OP=16 + RB 200 DE=<Registro base>+op DE= Dirección efectiva RB= Registro base (R1,R2 ) OP= Desplazamiento 216 DO Memoria principal DE
32 registros genéricos de 32 bits R0,R1,R2..R31 32 registros de 32 bits para simple F0,F1,F2..F31 o doble precisión F0,F2,F4..F30 Repertorio de instrucciones de la ASG CO Opd(destino) Op1(fuente 1) Op2(fuente 2) Aritméticas y lógicas Transferencia de datos Bifurcaciones o saltos incondicionales Saltos condicionales
Aritméticas y lógicas Transferencia de datos (entre paréntesis aparece el Registro Base propio del Direccionamiento con desplazamiento) realizan movimiento entre memoria y registro o viceversa Repertorio de instrucciones de la ASG Bifurcaciones o saltos incondicionales Saltos condicionales Un salto es efectivo cuando la condición probada por la instrucción es verdadera
IMPLEMENTACIÓN DE LA SEGMENTACIÓN DE INSTRUCCIONES EN LA ASG EL CICLO DE UNA INSTRUCCIÓN SE DESCOMPONE EN CINCO ETAPAS BÁSICAS IF (Instruction Fetch): Lectura de la instrucción de la caché de instrucciones ID (Instruction Decoding): Decodificación de la instrucción y lectura de sus operandos del fichero de registros EX (Execution): Ejecución de las operaciones si se trata de una instrucción aritmético-lógica y del cálculo de la condición y de la dirección de salto si se trata de una bifurcación o salto condicional. Cálculo de dirección en instrucción de carga y almacenamiento MEM (Memory Access): Acceso a la caché de datos para lecturas (cargas) o escrituras (almacenamientos) WB (Write-Back results): Escritura del resultado en el fichero de registros.
IMPLEMENTACIÓN DE LA SEGMENTACIÓN DE INSTRUCCIONES EN LA ASG
Ejemplo de segmentación de instrucciones Etapa IF Etapa ID Etapa EX Etapa MEM Etapa WB
Ejemplo de segmentación de instrucciones OPERA CIÓN ALU Etapa IF Etapa ID Etapa EX Etapa MEM Etapa WB
Ejemplo de segmentación de instrucciones CARGA DE MEMORIA Etapa IF Etapa ID Etapa EX Etapa MEM Etapa WB
Ejemplo de segmentación de instrucciones ALMACENAMIENTO EN MEMORIA Etapa IF Etapa ID Etapa EX Etapa MEM Etapa WB
Ejemplo de segmentación de instrucciones SALTO INCONDICIONAL Etapa IF Etapa ID Etapa EX Etapa MEM Etapa WB
Ejemplo de segmentación de instrucciones SALTO CONDICIONAL Etapa IF Etapa ID Etapa EX Etapa MEM Etapa WB
Segmentación en cinco etapas de la ASG Se incrementa la productividad, es decir, el número de instrucciones completadas por unidad de tiempo
No reduce el tiempo de ejecución de una instrucción individual (algo superior debido a Cerrojo o buffers de contención para aislar la información entre etapas. La duración de todas las etapas es similar y viene determinada por la duración de la etapa más lenta Los riesgos que se producen en la segmentación ( siguiente apartado) Ventajas de la segmentación
8 Riesgos en la segmentación Se denomina riesgo a la dependencia entre instrucciones que provoca que la instrucción que sucede a aquella con la cual posee dependencias no pueda ejecutarse en el ciclo de reloj que le corresponde ya que ha de esperar algún resultado para poder efectuar su ejecución Existen 1. RIESGOS ESTRUCTURALES 2. RIESGOS POR DEPENDENCIA DE DATOS 3. RIESGOS DE CONTROL
8 Riesgos en la segmentación 1. Riesgos estructurales Conflictos en los recursos; una instrucción en una etapa no puede avanzar a la siguiente porque el hardware que necesita lo está usando otra. Ejemplo: máquina con un único puerto de memoria (no dispone de dos memorias caché). SOLUCIÓN: Una detención no resuelve el problema globalmente (con estas instrucciones sí). ASG dispone de dos cachés (datos + instrucciones)
8 Riesgos en la segmentación 1. Riesgos estructurales No todas las etapas tienen la misma duración I1: ADD R3, R6, R7 I2: MULT R4, R1, R2 I3: MULT R5, R8, R9 I4: SD 7(R11), R10
8 Riesgos en la segmentación 2. Riesgos por dependencias de datos (dos instrucciones comparten algún dato) RAW - Read After Write (dependencia verdadera) Una dependencia RAW hace referencia a una situación donde se necesita un dato que aún no ha sido calculado, por ejemplo: ADD R1, R2, R3 SUB R4, R1, R5
8 Riesgos en la segmentación 2. Riesgos por dependencias de datos WAR - Write After Read (antidependencia o dependencia falsa) Una dependencia WAR representa un problema de ejecución concurrente, por ejemplo: ADD R1, R2, R3 SUB R2, R4, R5 Es necesario asegurarse de que no se almacenará el resultado en el registro R2 antes de que la instrucción 1 haya podido leer sus operandos.
8 Riesgos en la segmentación 2. Riesgos por dependencias de datos WAW - Write After Write Una dependencia WAW es otra de las posibles situaciones problemáticas en un entorno de ejecución concurrente, por ejemplo: ADD R1, R2, R3 SUB R1, R4, R5 Debe retrasarse la escritura (etapa WB) de la instrucción 2 hasta que la instrucción 1 haya finalizado.
8 Riesgos en la segmentación 2. Riesgos por dependencias de datos RAR (Read After Read) no es un riesgo. La ASG solo tiene riesgos de tipo RAW->SOLUCIONES REORGANIZACIÓN DEL CÓDIGO. INTERBLOQUEO ENTRE ETAPAS ADELANTAMIENTO WAR no se presenta pues lecturas de registro en ID es anterior a escrituras de registro en WB WAW no se produce pues solo se escribe en una etapa WB
RAW-> 1. SOLUCIONES REORGANIZACIÓN DEL CÓDIGO Entre instrucciones de tipo RAW existen instrucciones que permiten retrasar la segunda hasta que la primera haya escrito su resultado. problema solución
RAW-> 1. SOLUCIONES REORGANIZACIÓN DEL CÓDIGO Se trata de una técnica software. Se cargan en ese orden las instrucciones en la caché de instrucciones otra solución
RAW-> 1. SOLUCIONES REORGANIZACIÓN DEL CÓDIGO Reorganización cuando la escritura se realiza en el flanco de subida y la lectura en el flanco de bajada. otra solución otra solución aun mejor con reordenación de código
RAW-> 1. SOLUCIONES REORGANIZACIÓN DEL CÓDIGO No se pueden reordenar sin alterar la lógica del programa: SOLUCIÓN: inclusión de instrucciones NOP
RAW-> 2. SOLUCIONES INTERBLOQUEO ENTRE ETAPAS Introduce elementos hardware para detectar la existencia de dependencias. El programa termina correctamente pero se siguen perdiendo ciclos
RAW->3. SOLUCIONES ADELANTAMIENTO (caminos de bypass o forwarding) Al detectar dependencia RAW se habilitan unos caminos que permiten que los resultados de una etapa pasen a la etapa donde sean necesarias. En el ejemplo se comprueba si Registro destino coincide con alguno de los registros fuente de la instrucción siguiente.
8 Riesgos en la segmentación 1 RIESGOS ESTRUCTURALES 2 RIESGOS POR DEPENDENCIA DE DATOS 3 RIESGOS DE CONTROL: En la instrucción de salto, hasta que no pasan tres ciclos no se ha verificado la condición y calculado la nueva dirección del PC. Podemos leer la siguiente instrucción en la secuencia aun a riesgo de que no sea efectivo el salto Redundante si el salto no es efectivo
8.3 Riesgos de control. Implementación de los saltos condicionales en ASG
8.3 Riesgos de control en instrucciones de salto (SOLUCIONES EN TIEMPO DE COMPILACIÓN): SOLUCIÓN 1: Detener las segmentación hasta que se conoce el resultado del salto->introducción de instrucciones NOP Reduce rendimiento segmentación
SOLUCIÓN 1: Introducción de NOP para evitar las NOP (SOLUCIONES EN TIEMPO DE COMPILACIÓN) SOLUCIÓN 2: Técnica de salto retardado(delayed branch)
(SOLUCIONES EN TIEMPO DE COMPILACIÓN) SOLUCIÓN 3: Ejecución especulativa. Se predice el salto como no efectivo. Si al final el salto es efectivo se detiene la segmentación y se recomienza la búsqueda de la instrucción destino del salto (cuidado con no cambiar el estado de la máquina al retroceder)
Solución hardware al Riesgos de control. Inclusión en la etapa ID del hardware que detecta la instrucción de salto, acceda al registro para evaluar la condición y calculo la dirección de destino del salto Redundante si el salto no es efectivo