1 - Realice un diagrama en bloques detallado de un Register File adecuado para una CPU MIPS con una implementación pipeline de 5 etapas (IF, ID, EX, MEM, WB). Justificar. IM (Instruction Memory), DM (Data Memory) El pipeline puede ser pensado como una serie de data paths desplazandose en el tiempo. La estapas IF, ID, EX, MEM, WB están representadas respectivamente, por los bloques IM, Reg, ALU, DM, Reg. 2 - Predictores de saltos. Las instrucciones de salto condicionales (brach) o no (jump), al modificar el PC reducen la performance de un procesador con pipeline, ya que la próxima instrucción a ejecutarse puede que no sea la que se encuentra en el pipeline. Para evitar esta pérdida en la performance se usa la predicción de saltos, que lo que intenta hacer es predecir si el salto será tomado o no, y así anticipar cual será la próxima instrucción a ejecutarse. A medida que la predicción es más exacta, la performance mejora. Hay dos tipos de predictores de saltos: Predicción estática, basada en información tomada al momento de compilación o mediante un profiling del programa. Predicción dinámica, la cual se basa en el resultado de los últimos saltos realizados. La predicción dinámica se logra mediante un dispositivo que almacena para cada instrucción de branch, el o los últimos resultados. *Un predictor de saltos es un mecanismo hardware utilizado en los procesadores que utilizan segmentación de la unidad de proceso para reducir ciclos de parada en el pipeline. Los saltos condicionales introducen retardo en estos procesadores, ya que normalmente no se evalúa la condición del salto hasta pasadas varias etapas, lo que hace que se tenga que parar el cauce, o que se puedan introducir instrucciones en el pipeline que no deben de ser ejecutadas, teniendo que convertirse posteriormente en NOPs, y decrementando así el rendimiento. La predicción es posible anotando el comportamiento del programa en saltos anteriores. 3 - Describa mediante ejemplos los modos de direccionamiento que conozca. Modo de direccionamiento Ejemplo Significado Cuando se usa Inmediata ADD R4, #3 Reg[R4] := Reg[R4] + 3 Para uso de constantes Registro ADD R4, R3 Reg[R4] := Reg[R4] + Reg[R3] Cuando los valores están en los registros Desplazamiento / Indirecto ADD R4, 100(R1) Reg[R4] := Reg[R4] + Mem[100 + Reg[R1]] Para acceder a variables locales* Absoluto / Directo ADD R1, (1000) Reg[R1] := Reg[R1] + Mem[1000] A veces es útil para acceder a datos estáticos (si la constante representa una dirección de memoria) Reg[R4] := Reg[R4] + Reg[Mem[R1]] (*) El modo Desplazamiento puede emular estos dos modos: Registro indirecto ADD R4, (R1) Acceso mediante un puntero Registro Indirecto: Reg[$R] + 0 ADD R4, (R1) = ADD R4, 0(R1) Absoluto: Reg[R0] + offset ADD R4, #5 = ADD R4, 5(R0) 4 - Describa los distintos tipos de arquitecturas de conjunto de instrucciones que conozca. De sus ventajas y desventajas. Ventajas/Desventajas... 5 - Dada una CPU MIPS con hardware de manejo memoria virtual se pide: a. Calcular el tamaño del espacio de direcciones virtuales. b. Dar la cota máxima de la cantidad de memoria que efectivamente puede usar un programa. c. Calcular el tamaño en bytes de la tabla de traducción de páginas. d. Calcular el tiempo de acceso promedio a memoria para una cache direccionada por direcciones virtuales. Datos: RAM = 512 MB SWAP = 256 MB 5 bytes por entrada en tabla de traducción de página. Tasa de desaciertos de la memoria cache = 5% Tiempo de acierto = 2 ns. Tiempo de copiar un bloque completo de memoria principal a memoria cache = 40ns Tasa de desaciertos del TLB = 3% Tiempo de actualizar una entrada en TLB = 15 ns. Tasa de falla de páginas = 0.0001% Penalidad por falla de página = 3 mseg. Aclare cualquier hipótesis que realice, y justifique las respuestas. 6 - Riesgos de datos. Clasificación de los riesgos de datos. Análisis de todos los tipos de riesgos de datos e ilustración con ejemplos de secuencias de instrucciones para el procesador MIPS con implementación pipeline de 5 etapas (IF, ID, EX, MEM, WB). Se dice que ocurre un riesdo de datos cuando dos operaciones de una secuencia de instrucciones, al ser ejecutadas en un pipeline, invierten el orden de los accesos de lectura/escritura sobre un dato. Hay tres tipos de riesgos de datos: Lectura después de Excritura (RAW, Read After Write) Dependencia verdadera ADD R1, R2, R3 SUB R4, R5, R1 Escritura después de Lectura (WAR, Write After Read) Dependencia artificial debida a asignación de registro LW R1, 0(R2) ADD R2, R5, R6 Escritura después de Escritura (WAW, Write After Write) Dependencia artificial debida a asignación de registro LW R1, 0(R2) ADD R1, R3, R4 7 - Se tiene una memoria cache de 8Kbytes, asociativa por conjuntos de grado 2, bloque de 16 bytes y política de reemplazo LRU. a. Realice un diagrama en bloques detallado de la memoria cache (incluir el área de tags). b. Dar las direcciones para cinco datos A, B, C, D, E de manera tal que accedidos en el orden dado por una CPU MIPS se cumpla con lo siguiente: 1. El acceso a B es hit. 2. C mapea en un conjunto distinto al correspondiente a A. 3. El acceso a E es miss. c. Indicar en el diagrama del punto 'a' el contenido final de la memoria cache (área de datos y área de tags). Las direcciones se deben dar en hexadecimal. No se pueden hacer hipótesis acerca del contenido previo de la cache. Justificar sus respuestas. 8 - Procesamiento multihilo (multithreading). Se dice procesamiento multihilo a la ejecución concurrente de múltiples hilos de procesamiento (threads), pertenecientes a un mismo programa o a diferentes programas. Esto puede verse como una sucesión alternada de intrucciones de cada uno de los hilos. (ver item 20) 9 - Memoria virtual. 10 - Codifique la línea de código C = A + B para las arquitecturas a. b. c. d. Stack Acumulador Load/Store Memoria-Memoria Explique brevemente las ventajas y desventajas de cada una de ellas. Respuesta: Stack Acumulador Register-Memory Load/Store Memoria-Memoria Push A Load A Load R1, A Load R1, A Add C, A, B ? Push B Add B Add R3, R1, B Load R2, B Add Store C Store R3, C Add R3, R1, R2 Pop C Ventajas/Desventajas... Store R3, C 11 - Colocar en los casilleros de la siguiente tabla la cantidad de bytes accedidos para cada uno de los subsistemas correspondientes a cada columna de la mencionada tabla, durante el proceso de acceder a un dato en memoria solicitado por la CPU. Justificar su respuesta con un breve párrafo para cada fila. Aclare sus hipótesis. CPU MIPS R2000, El acceso es una escritura en memoria de un dato de 4 bytes. L1 es direccionado por direcciones virtuales, es write through con bloque de 64 bytes. L2 es write back con bloque de 64 bytes. Los marcos de página son de 4 Kbytes. Evento Cache L1 Cache L2 Memoria Principal TLB Tabla de Traducción de Área de Swap Páginas Hit L1 Miss L1 y Hit L2 Falla de Página 12 - Riesgos estructurales. Definición. Describa dos ejemplos de riesgo estructural y la solución para eliminarlos. Se dice Riesgo Estructural (Conflicto Estructural) cuando una combinación de instrucciones, al ejecutarse solapadamente en un pipeline, no puede ejecutarse correctamente por problemas de recursos. Ejemplos: Memoria unificada Register file no-multipuerto Branch adder y ALU Unidad funcional requiere más de un ciclo 13 - Unidad de control microprogramada. 14 - Escriba un fragmento de código MIPS que utiliza el esquema de salto demorado con un único delay slot que es ocupado por una instrucción NOP. El código debe ser tal que el delay slot puede ser llenado con una instrucción previa al branch, una del fall through y una del target. Reescriba el código original reemplazando la NOP con la instrucción correspondiente a cada uno de los tres casos pedidos. Código original Previa Target Fall Through ADD $4, $1, $2 BNE $1, $2, LABEL NOP (delay slot) LW $5, 16($2) ... LABEL: SUB $6, $1, $2 SUB $7, $2, $1 ... ADD $4, $1, $2 BNE $1, $2, LABEL ADD $4, $1, $2 LW $5, 16($2) ... LABEL: SUB $6, $1, $2 SUB $7, $2, $1 ... ADD $4, $1, $2 BNE $1, $2, LABEL SUB $6, $1, $2 LW $5, 16($2) ... LABEL: SUB $6, $1, $2 SUB $7, $2, $1 ... ADD $4, $1, $2 BNE $1, $2, LABEL LW $5, 16($2) LW $5, 16($2) ... LABEL: SUB $6, $1, $2 SUB $7, $2, $1 ... 15 - Escribir la secuencia de microoperaciones necesarias para que una de CPU MIPS con microarquitectura de un único bus interno y unidad de control microprogramada ejecute la instrucción LW (load word). A tal efecto dibuje el datapath a utilizar y defina las señales a utilizar explicando su acción. 16 - Se da a continuación un código para un procesador MIPS. El procesador que ejecutará este código se implementó con el esquema de salto demorado y requiere de un "delay slot". a. Evitar el riesgo de control utilizando instrucciones NOP. b. Aprovechar el "delay slot" utilizando instrucciones previas al branch. c. Aprovechar el "delay slot" utilizando instrucciones del fall through. ... LABEL: lw $5, 30($6) ... subiu $2, $2, $1 addiu $3, $3, 1 bne $4, $3, LABEL subiu $4, $4, 1 addiu $5, $5, 12 17 - Indicar para cada uno de los siguientes componentes del sistema de memoria, si el mismo es transparente o no a la arquitectura de programación. Justifique sus respuestas. a. Memoria cache de nivel 1. b. Memoria virtual paginada. c. Memoria virtual segmentada. 18 - Se tiene una memoria cache de 4Kbytes, asociativa por conjuntos de grado 4, bloque de 16 bytes y política de reemplazo LRU. a. a-Realice un diagrama en bloques detallado de la memoria cache (incluir el área de tags). b. b-Dar las direcciones para cinco datos A, B, C, D, E, F de manera tal que accedidos en el orden dado por una CPU MIPS se cumpla con lo siguiente: 1. A mapea en el conjunto 1. 2. B produce un hit. 3. C no pertenece al bloque de memoria que contiene a A y mapea en el mismo conjunto en el que mapeo A. 4. El acceso a F es miss. c. c-Indicar en el diagrama del punto 'a' el contenido final de la memoria cache (área de datos y área de tags). Las direcciones se deben dar en hexadecimal. No se pueden hacer hipótesis acerca del contenido previo de la cache. Justificar sus respuestas. 19 - Entrada-Salida: ¿Qué se entiende, para una arquitectura en relación a la entrada-salida, que ésta sea de un bus o de dos buses? 20 - Procesamiento multihilo (multithreading). a. Políticas de procesamiento multihilo. b. Desperdicios vertical y horizontal. c. Para cada uno de los siguientes elementos decir si hay uno individual para cada hilo o hay uno solo compartido entre todos los hilos. Justificar. 1. Memoria de código. 2. Memoria de datos. 3. Estructura de Stack. 4. Registros Generales. 5. Contador de programa. 6. Memoria cache. a) Se dice procesamiento multihilo a la ejecución concurrente de múltiples hilos de procesamiento (threads), pertenecientes a un mismo programa o a diferentes programas. Esto puede verse como una sucesión alternada de intrucciones de cada uno de los hilos. Las diferentes políticas de Multithreading son: CMP (On-Chip MultiProcessor) CMT (Coarse-Grained Multithreading) FMT (Fine-Grained Multithreading) SMT (Simultaneous Multithreading) CMP = Más de un procesador ? En CMT un thread corre hasta que es bloqueado por un evento con una latencia prolongada (stall), como por ejemplo un cache-miss. En FMT el procesador ejecuta un thread distinto en cada ciclo de reloj. El objetivo de esto es evitar stalls por dependencias de datos en el pipeline. En SMT se ejecutan instrucciones de varios hilos distintos en un mismo ciclo de reloj. No es necesario duplicar unidades funcionales. El procesador coordina a las instrucciones que se ejecutan en forma paralela sobre las distitas unidades b) Desperdicio vertical y horizontal Desperdicio Horizontal: el bajo nivel de paralelismo de las instrucciones (ILP, Instruction Level Parallelism) impide, para un ciclo de reloj, usar eficientemente los recursos (unidades funcionales) disponibles. Desperdicio Vertical: El bloqueo o latencias en las instrucciones ejecutadas hacen que el procesador deba permanecer ocioso. Una buena administración del uso de los recursos por parte de los threads ayuda a reducir el desperdicio tanto vertical como horizontal. c) 1. Memoria de código: Compartida. El código es el mismo, independientemente de los distintos threads. 2. Memoria de datos: Compartida. Los datos deben mantener una coherencia entre los threads, por eso la memoria de datos es compartida. 3. Estructura de Stack: Individual. El estado de cada hilo de ejecución está reflejado en el stack. Cada hilo de ejecución tiene su propio estado y por ende, su propio stack. 4. Registros Generales: Individual. Al igual que con el stack, cada thread debe tener sus propios registros, para almacenar los datos que tiene que manejar. 5. Contador de programa: Individual. Cada thread tiene su propio PC, ya que ejecutan instrucciones distintas. 6. Memoria cache: Compartida. La memoria cache es compartida entre los distintos hilos 21 - Indicar la cantidad de bytes de información que se transfieren entre los distintos pares de dispositivos dados en la siguiente tabla, para los eventos indicados y la configuración del sistema de memoria dada: Configuración: Procesador MIPS. Cache L1 write through, cache L2 write back, tamaño de bloque L1 32 bytes, tamaño de bloque L2 32 bytes, se debe supponer que los bloques de la cache L2 que entren en juego están modificados. CPU-Cache L1 Cache L1 - Cache L2 Cache L2 - Memoria Acceso a dato de instrucción lw . Miss en L1 y en L2 Acceso a dato de instrucción sw. Miss en L1 y Hit en L2 Búsqueda de instrucción addi. Hit en L1 y en L2 22 - Entrada-Salida: Explicar claramente que es Entrada-Salida mapeada en memoria. ¿Conoce algún otro esquema opuesto al anterior? ¿Qué características tiene? 23 - Describir como funciona un predictor de saltos de dos niveles y porque un esquema así puede ser efectivo. Los predictores de salto de dos niveles usan información de otros saltos recientes, además de la historia del salto a predecir en si. En base a los últimos saltos que fueron ejecutados, y los últimos resultados del salto a evaluar (en base al patrón anterior), predice si el salto será un salto tomado o no. La notación de este tipo de saltos es (X,Y), donde X es el número de niveles de historia global e Y es el número de bits de historia por contador (local). Los predictores de salto de dos niveles mantienen dos tablas. La primer tabla es el historial de los últimos saltos (global). Almacena el resultado de los últimos n saltos. Este valor es el que se utiliza para saber que columna de la segunda tabla se va a usar. La segunda tabla es el historial de saltos local. Está indexada por los últimos bits de la dirección de la instrucción de salto a ejecutarse y mantiene un registro de los últimos resultados del salto (tomado/no-tomado). En base a este valor, predice si el salto será tomado o no. Los predictores de saltos de un solo nivel, suelen errar la predicción en la salida de cada loop. Para los loops que tienen un comportamiento repetitivo, los predictores de saltos de dos niveles suelen tener un mejor comportamiento. 24 - Se tiene una TLB de 8 entradas con política de reemplazo LRU. Una aplicación realiza la siguiente secuencia de referencias a páginas virtuales contiguas: P0,P1,P2,P3,P4,P5,P6,P7,P8,P9. Dicha secuencia se repite en forma cíclica por un período muy largo de tiempo. a. Calcular la tasa de desaciertos para el caso en que la TLB es de mapeo directo. b. Ídem punto a-pero considerando que es asociativa de grado 2. c. Ídem punto a-pero considerando que es totalmente asociativa. Justificar sus respuestas. 25 - Escribir la ecuación de desempeño de CPU. Indicar para cada uno de los componentes de la ecuación si éste es afectado o no por: a. b. c. d. Tecnología del hardware. La organización. La arquitectura del conjunto de instrucciones. Tecnología del compilador La performance del CPU depende de tres características: segundos por ciclos de reloj, ciclos de reloj por instrucción y cantidad de instrucciones. A su vez estas características están afectadas de la siguiente manera: Tiempo del ciclo de reloj: Tecnología del hardware y la Organización CPI: La organización y la Arquitectura del conjunto de instrucciones La cantidad de instrucciones: de la arquitectura del conjunto de instrucciones y la tecnología del compilador. 26 - Para el procesador MIPS indicar si los siguientes elementos están determinados por la arquitectura o por la implementación. Justificar. a. b. c. d. e. f. g. Tamaño de la instrucción. Espacio de direcciones virtuales. Espacio de direcciones físicas. Pipeline de 5 etapas. Unidad de control microprogramada. Conjunto de instrucciones. Cache de nivel 1. 27 - Estudie el comportamiento de un patrón de referencias a memoria que sigue el modelo del lazo. Clasifique los desaciertos usando el modelo de las "3C". Interprete los resultados obtenidos. Datos: Lazo de 11 bloques. Cache de 8 bloques (en total), 2 vias y reemplazo LRU. 28 - Dibujar el datapath completo para la arquitectura MIPS pipeline de 5 etapas. Incluir el forwarding ALU-ALU y Memoria-ALU.