Departament d’Informàtica de Sistemes i Computadors ARQUITECTURA DE COMPUTADORES Problemas TEMA 4: Microprocesadores avanzados SUGERENCIAS PARA LA RESOLUCIÓN DE LOS PROBLEMAS La ruta de datos propuesta en todos los problemas presentados es la del microprocesador MIPS R2000 (que es la misma que la del procesador segmentado DLX de las prácticas), ambos de arquitectura RISC y segmentados en las cinco etapas que se muestran en la Fig. 1. Para la adecuada resolución de los problemas, se sugieren las siguientes propuestas (sobre el código fuente en ensamblador que también se presenta en la Fig. 3): Búsqueda de instrucción Búsqueda de registros y decodificación Ejecución y cálculo dirección de salto Acceso a memoria Memoria de instrucciones Banco de registros (lectura) UAL Memoria de datos Etapa 5 Escritura del resultado en el buffer de entrada Registros temporales Etapa 4 Registros temporales Etapa 3 Registros temporales Etapa 2 Registros temporales Etapa 1 Banco de registros (escritura) Fig. 1. Esquema simplificado de la ruta de datos del microprocesador MIPS R2000 junto con los registros de segmentación. En la última etapa (etapa 5, Write Back) se procede a la escritura del resultado en el banco de registros y su anticipación en el buffer de entrada de la etapa de ejecución (UAL). Fig. 2. Ruta de datos del DLX. Tal y como se puede apreciar, en la etapa 4 se procede a la escritura de los valores en la memoria de datos, mientras que en la etapa 5 se anticipan los resultados sobre el buffer de entrada de la etapa de ejecución. Problemas TEMA 4: Microprocesadores avanzados (procesadores segmentados) 1 Departament d’Informàtica de Sistemes i Computadors I1 I2 I3 I4 I5 I6 I7 I8 I9 I10 a: b: lw lw loop: add sub bnez nop nop nop add trap #0 .word 33 .word 2355 r1, a(r0) r2, b(r0) r6, r6, r1 r2, r2, #1 r2, loop r10, r6,r0 Fig. 3. Código fuente en ensamblador del programa que se va a utilizar en los ejemplos y que presenta la multiplicación de los números a y b, almacenando el resultado final en r10. Riesgos por dependencia de datos (detención de la segmentación): cuando se detecta un riesgo de este tipo se debe tener en cuenta que, como el valor correcto no se obtiene hasta la 5ª etapa (desde donde el valor calculado se anticipa al buffer de entrada de la etapa de ejecución) y, como los operandos de las instrucciones anteriores no se leen de registros hasta la 2ª etapa, únicamente se verán implicadas en el riesgo las 3 instrucciones siguientes a la analizada (la 4ª se encuentra en la 1ª etapa donde sólo se busca la instrucción a partir del PC). Así pues, para el análisis de la dependencia de datos sobre la instrucción I1 (lw r1,a(r0)), comprobaremos el riesgo sobre las tres instrucciones siguientes. Como aparece una dependencia en el registro R1 con la instrucción I3 (add r6,r6,r1), ésta última debe esperarse en la etapa de decodificación y búsqueda de operandos hasta que el valor de R1 sea el correcto. Esto sucede en t4 (donde I1 escribe el valor correcto de R1) por lo que, en t5, I3 ya lee el valor correcto de R1 y puede proseguir su ejecución. En este caso la segmentación se ha detenido en una etapa para resolver un riesgo entre dos instrucciones no consecutivas (Fig. 4). Fig. 4. La instrucciónde ‘add’ se detiene 1 ciclo en la etapa de decodificación (en t5) ya que presenta dependencia de datos en R1 con la instrucción de ‘lw’. Lo mismo sucede en R2 con la instrucción de ‘bnez’ que queda detenida en la etapa 2 hasta que se escriba el resultado correcto en R2 (en t9). Problemas TEMA 4: Microprocesadores avanzados (procesadores segmentados) 2 Departament d’Informàtica de Sistemes i Computadors Riesgos por dependencia de datos (anticipación en la ALU): en este caso, el resultado correcto se obtiene al final de la 3ª etapa (cálculo en la ALU) y puede ser anticipado: 1. desde la 5ª etapa al registro de entrada de la ALU (WB to EX) Fig. 5. Donde desde la etapa de ‘write back’ se anticipa la información a los registros de la etapa de ‘decodificación’ y a los registros de la etapa de ‘ejecución’ (ver path en rojo). Además los resultados anticipados aparecen en las etapas rotuladas ‘en blanco’. Por este motivo, si existe dependencia entre las instrucciones I1 e I3, esta queda automáticamente resuelta mediante el método de anticipación pues, aunque I3 ha leído los operandos incorrectos en la etapa 2 (decodificiación y búsqueda de operandos), estos valores incorrectos que se cargan en el registro temporal de la ALU, son automáticamente ‘machacados’ por el valor correcto de los operandos que se acaba de calcular a la salida de la ALU en la etapa 3 y que viene por la vía (path) de anticipación hasta el mismo registro temporal de entrada en la ALU. Por lo tanto no será necesaria la inserción de ninguna burbuja en este caso (¡Error! No se encuentra el origen de la referencia.). Problemas TEMA 4: Microprocesadores avanzados (procesadores segmentados) 3 Departament d’Informàtica de Sistemes i Computadors 2. desde la 4ª etapa al registro de entrada de la ALU (MEM to EX) Fig. 6. Donde desde la 4ª etapa (‘memory write’) se anticipa la información a los registros de la etapa de ‘ejecución’ y al multiplexor de entrada para el caso de salto condicional (ver path en morado). Además los resultados anticipados aparecen en las etapas rotuladas ‘en blanco’. Riesgos de control (detención de la segmentación): por un lado, la dirección de salto no se conoce hasta el final de la 3ª etapa mientras que, por otro lado, el riesgo de control no se detecta hasta el principio de la 2ª etapa (cuando se decodifica la instrucción). Por este motivo, ante una instrucción de control, se detiene la segmentación y no entra ninguna instrucción nueva, hasta que se resuelva la dirección de salto (en la etapa 3). En el caso del simulador del DLX (Fig. 7), la segmentación se detiene hasta que se escribe el valor correcto del salto en los registros (en el PC, 4ª etapa). Fig. 7. En este caso la instrucción de ‘add’ no se empieza a ejecutar hasta que la instrucción de control (‘bnez’) ha resuelto la dirección de salto y la ha escrito en el PC (al terminar la 4ª etapa, en t12). Problemas TEMA 4: Microprocesadores avanzados (procesadores segmentados) 4 Departament d’Informàtica de Sistemes i Computadors Riesgos de control (anticipación en la ALU): se podría decir que el hecho de anticipar resultados por parte de la ALU, no resuelve más rápidamente los riesgos de control (Fig. 8). Fig. 8. En este caso la anticipación de resultados en la ALU no influye en la ejecución de la instrucción de salto condicional (ni es determinante en la resolución del riesgo de control) ya que, la dirección de salto continúa sin resolverse hasta su carga en el PC, una vez se ejecuta la instrucción de control en la 4ª etapa (escritura en registros). Riesgos de control (ejecución especulativa): en el caso de resolver los riesgos de control mediante ejecución especulativa se supone que las siguientes instrucciones a la de control entran en el micro (se especula con que su ejecución es correcta) y, una vez se resuelve la dirección de salto y se escribe en el PC (cuando la instrucción de control termina en la etapa 4), se decide si las instrucciones ejecutadas son o no las correctas (desechándolas o no). Esto significa que en ejecución especulativa siempre se van a colar las TRES instrucciones siguientes a la de control (Fig. 9). Fig. 9. En este caso, tras la instrucción de salto (‘bnez’) se han colado tres instrucciones de ‘nop’, que son automáticamente desechadas en t12 cuando se resuelve que la dirección de salto correcta supone la ejecución de la instrucción de ‘add’. Problemas TEMA 4: Microprocesadores avanzados (procesadores segmentados) 5 Departament d’Informàtica de Sistemes i Computadors Riesgos de control (predicción del salto): para el mismo ejemplo que en el punto anterior y suponiendo que la BTB (Branch Target Buffer) contenga la estimación correcta del salto a ejecutar (esto significa que, en alguna iteración anterior, ya se ha producido el mismo salto), el riesgo de control presentado por la instrucción ‘bnez’ no se identifica hasta la etapa de decodificación de la instrucción (2ª etapa) por lo que se habrá colado en la 1ª etapa una sola instrucción que, dependiendo del valor almacenado en la BTB (para ‘bnez’), será la siguiente instrucción a ejecutar (si el salto llevaba a ella) o no (en cuyo caso la instrucción ‘colada’ se marca como no válida y se desecha). Problemas TEMA 4: Microprocesadores avanzados (procesadores segmentados) 6 Departament d’Informàtica de Sistemes i Computadors PROBLEMA 1 Dada la siguiente secuencia de instrucciones que se va a ejecutar en el procesador segmentado cuya ruta de datos aparece en la figura adjunta: a) Enumera los tipos de riesgos que pueden aparecer en un procesador segmentado. b) En el procesador de la figura y para el programa ensamblador propuesto: ¿cuáles de los riesgos anteriores aparecen? ¿por qué? c) En el procesador de la figura y para el programa ensamblador propuesto: ¿cuáles de los riesgos anteriores NO aparecen? ¿por qué? d) Soluciona los riesgos descritos anteriormente mediante la técnica de inserción de burbujas de la forma más eficiente posible (mínimo nº de burbujas posible colocadas de forma que se ralentice al mínimo la ejecución del programa). Presenta la traza de la ejecución. e) Suponiendo que, en este caso, el procesador utiliza la técnica de la anticipación desde la ALU, ¿qué riesgos se solucionarían?, ¿persistiría alguno de ellos? Justifica la respuesta. Presenta la traza de la ejecución. NOTA: El formato de las instrucciones es del tipo NOMBRE Destino Operando 1 Operando 2 I1 etiq: ADD R2, R2, R1 I2 SUB R2, R2, R3 I3 SUB R3, R3, R4 I4 XOR R2, R1, R4 I5 BEQ R5, R0, etiq I6 LW R6, R2 // Resta R1 y R2 y guarda el resultado en R2 // Resta R2 y R3 y guarda el resultado en R2 // Resta R3 y R4 y guarda el resultado en R3 // Operación XOR entre R1 y R4 guardando el resultado en R2 // El PC “salta” a la posición etiq si R5 = R0 // Carga en R6 el contenido de la posición de memoria indicada en R2 Etapa 5 Búsqueda de instrucción Búsqueda de registros y decodificación Ejecución y cálculo dirección de salto Acceso a memoria Guardar el resultado Memoria de instrucciones Banco de registros (lectura) UAL Memoria de datos Registros temporales Etapa 4 Registros temporales Etapa 3 Registros temporales Etapa 2 Registros temporales Etapa 1 Banco de registros (escritura) Esquema simplificado de la ruta de datos junto con los registros de segmentación Problemas TEMA 4: Microprocesadores avanzados (procesadores segmentados) 7 Departament d’Informàtica de Sistemes i Computadors PROBLEMA 2 Dado el siguiente programa en ensamblador (comentado) que multiplica dos operandos y que se va a ejecutar en el procesador segmentado cuya ruta de datos aparece en la figura adjunta: a) Lista los posibles riesgos que pueden aparecer en un procesador segmentado y justifica, tanto si aparecen como si no, en el procesador segmentado presentado. b) Suponiendo una CPU programada para resolver riesgos por dependencia de datos y de control mediante la técnica de la detención automática de la segmentación: resuelve el programa para las dos primeras pasadas del bucle (8 instrucciones) en este caso, y presenta la traza correspondiente. c) Repite el apartado anterior (b) en el caso de que los riesgos por dependencia de datos se resuelvan por scoreboarding y los de control mediante la técnica de ejecución especulativa. Justifica la actuación de la CPU en el caso de tener que desechar alguna instrucción que ya haya iniciado su ejecución en el procesador segmentado. d) Repite el apartado anterior (c) para las dos últimas pasadas del bucle. NOTA: El formato de las instrucciones es del tipo NOMBRE Destino Operando 1 Operando 2 loop: .word 33 .word 55 lw r1, a(r0) lw r2, b(r0) add r6, r6, r1 sub r2, r2, #1 bnez r2, loop add r10, r6,r0 nop trap #0 // Primero de los operandos a multiplicar // Segundo de los operandos a multiplicar // Carga el contenido de la dirección a en r1 (33) // Carga el contenido de la dirección b en r2 (55) // Suma r1 y r6 (suponemos inicialmente a 0) y guarda en r6 // Resta al contenido de r2 una unidad y guarda resultado en r2 // Salta a la dirección de loop si el valor de r2 es distinto de 0 // Almacena el resultado final // Burbuja (No Opera) insertada por software // Devuelve el control al S.O. Etapa 4 Etapa 5 Búsqueda de instrucción Búsqueda de registros y decodificación Ejecución y cálculo dirección de salto Acceso a memoria Guardar el resultado Memoria de instrucciones Banco de registros (lectura) UAL Memoria de datos Registros temporales Etapa 3 Registros temporales Etapa 2 Registros temporales Etapa 1 Registros temporales I1 I2 I3 I4 I5 I6 I7 I8 a: b: Banco de registros (escritura) Esquema simplificado de la ruta de datos junto con los registros de segmentación Problemas TEMA 4: Microprocesadores avanzados (procesadores segmentados) 8 Departament d’Informàtica de Sistemes i Computadors PROBLEMA 3 Dado el siguiente programa en ensamblador (comentado) que multiplica dos operandos y que se va a ejecutar en el procesador segmentado cuya ruta de datos aparece en la figura adjunta: a) Suponiendo que la duración de la intrucción de carga (lw) es de 5 ciclos y la duración del resto de instrucciones es de 4 ciclos, calcula la mejora (aceleración) que supone la ejecución del programa propuesto en el procesador segmentado (ciclos ejecutados=10050; instrucciones ejecutadas=3770; ciclos de parada=6276), respecto de su ejecución en un procesador no segmentado. b) Suponiendo una CPU programada para resolver riesgos por dependencia de datos mediante la técnica de la detención automática de la segmentación y los de control mediante la predicción de los saltos (se presupone detención de la segmentación si hay fallo en la BTB): resuelve el programa para las dos primeras pasadas del bucle (8 instrucciones) en este caso, y presenta la traza correspondiente. c) Del apartado anterior, ¿qué significa que ha habido un fallo en la BTB (branch target buffer)? ¿qué sucede en este caso? d) Repite el apartado (b) en el caso de que los riesgos por dependencia de datos se resuelvan por anticipación en la ALU. Justifica la actuación de la CPU para los riesgos de control, en el caso de tener que desechar alguna instrucción que ya haya iniciado su ejecución en el procesador segmentado. NOTA: El formato de las instrucciones es del tipo NOMBRE Destino Operando 1 Operando 2 loop: I6 I7 I8 .word 48 .word 1255 lw r1, a(r0) lw r2, b(r0) add r6, r6, r1 sub r2, r2, #1 bnez r2, loop add r10, r6,r0 nop trap #0 // Primero de los operandos a multiplicar // Segundo de los operandos a multiplicar // Carga el contenido de la dirección a en r1 // Carga el contenido de la dirección b en r2 // Salta a la dirección de loop si el valor de r2 es distinto de 0 // es decir, ejecuta el bucle 1255 veces // Almacena el resultado final // Devuelve el control al S.O. Etapa 4 Etapa 5 Búsqueda de instrucción Búsqueda de registros y decodificación Ejecución y cálculo dirección de salto Acceso a memoria Guardar el resultado Memoria de instrucciones Banco de registros (lectura) UAL Memoria de datos Registros temporales Etapa 3 Registros temporales Etapa 2 Registros temporales Etapa 1 Registros temporales I1 I2 I3 I4 I5 a: b: Banco de registros (escritura) Esquema simplificado de la ruta de datos junto con los registros de segmentación Problemas TEMA 4: Microprocesadores avanzados (procesadores segmentados) 9 Departament d’Informàtica de Sistemes i Computadors PROBLEMA 4 Dado el siguiente programa en ensamblador (comentado) que multiplica dos operandos y que se ejecuta en el procesador segmentado cuya ruta de datos aparece en la figura adjunta: a) Suponiendo que la duración de la instrucción de carga (lw) es de 5 ciclos y la duración del resto de instrucciones es de 4 ciclos, calcula la mejora (aceleración) que supone la ejecución del programa propuesto en el procesador segmentado (ciclos ejecutados=80; instrucciones ejecutadas=34; ciclos de parada=42; y valores iniciales de las variables -> a=2; b=10), respecto de su ejecución en un procesador no segmentado. (NOTA: los valores de a y b especificados sólo aplican al presente apartado). b) Suponiendo una CPU programada para resolver riesgos por dependencia de datos mediante la técnica de la detención automática de la segmentación y los de control mediante la predicción de los saltos (se presupone detención de la segmentación si hay fallo en la BTB): presenta la traza correspondiente a la ejecución del programa completo. c) Repite el apartado (b) en el caso de que los riesgos por dependencia de datos se resuelvan por anticipación en la ALU, y los de control por ejecución especulativa. Justifica la actuación de la CPU para los riesgos de control, en el caso de tener que desechar alguna instrucción que ya haya iniciado su ejecución en el procesador segmentado. d) Calcula la mejora obtenida en el apartado c) respecto de la ejecución del programa según los parámetros establecidos en el apartado b) (Mejora = CPIb/CPIc). NOTA 1: no hay que tener en cuenta la instrucción de trap #0 para el cálculo de la duración del programa. NOTA 2: El formato de las instrucciones es del tipo NOMBRE Destino Operando 1 Operando 2. loop: .word 10 .word 2 lw r1, a(r0) lw r2, b(r0) add r6, r6, r1 sub r2, r2, #1 bnez r2, loop add r10, r6,r0 nop trap #0 // Primero de los operandos a multiplicar // Segundo de los operandos a multiplicar // Carga el contenido de la dirección a en r1 // Carga el contenido de la dirección b en r2 // Suma el contenido de r1 + r6 y guarda en r6 // Realiza la resta del contenido de r2 -1 y guarda en r2 // Salta a la dirección de loop si el valor de r2 es distinto de 0 // Almacena el resultado final en r10 // No opera // Devuelve el control al S.O. Etapa 4 Etapa 5 Búsqueda de instrucción Búsqueda de registros y decodificación Ejecución y cálculo dirección de salto Acceso a memoria Guardar el resultado Memoria de instrucciones Banco de registros (lectura) UAL Memoria de datos Registros temporales Etapa 3 Registros temporales Etapa 2 Registros temporales Etapa 1 Registros temporales I1 I2 I3 I4 I5 I6 I7 I8 a: b: Banco de registros (escritura) Esquema simplificado de la ruta de datos junto con los registros de segmentación Problemas TEMA 4: Microprocesadores avanzados (procesadores segmentados) 10