Procesadores Superescalares: Características, Etapas y Funcionamiento

CAPÍTULO 3 – Procesadores Superescalares: 40 Preguntas Clave

1. ¿Qué es la Etapa de Predecodificación?

Es una fase dentro del proceso de decodificación, a menudo considerada una subetapa inicial debido al volumen de instrucciones a procesar. Se sitúa entre la caché L2 y la caché de instrucciones de primer nivel (L1). Su función principal es determinar el tipo de instrucción, lo que simplifica la posterior identificación de los recursos necesarios.

2. Etapas de un Procesamiento Superescalar

Un procesador superescalar típicamente incluye las siguientes etapas:

  • Captación de Instrucciones (IF): Lee múltiples instrucciones por ciclo desde la caché L1.
  • Decodificación (ID): Las instrucciones se decodifican en orden, tantas como la unidad pueda manejar por ciclo.
  • Ventana de Instrucciones/ROB/Buffer de Renombrado: Las operaciones decodificadas esperan aquí los operandos y unidades funcionales necesarias.
  • Emisión (ISS): Determina qué instrucciones pueden pasar a ejecución, considerando la disponibilidad de operandos y unidades funcionales.
  • Ejecución (EX): Las unidades funcionales ejecutan las operaciones. El número de unidades funcionales limita la cantidad de instrucciones en ejecución simultánea.
  • Escritura (WB): Los resultados se almacenan.

3. Ventajas de la Emisión Desordenada de Instrucciones

La emisión desordenada permite que las instrucciones se ejecuten tan pronto como sus operandos y unidades funcionales estén disponibles, sin necesidad de seguir el orden del programa. Esto contrasta con la emisión ordenada, donde las instrucciones se ejecutan en el orden en que aparecen en el programa, lo que puede generar bloqueos. La emisión desordenada maximiza el paralelismo y el aprovechamiento de los recursos del procesador.

4. Obtención de Información en la Etapa de Predecodificación

La etapa de predecodificación extrae información crucial sobre las instrucciones:

  • Saltos: Identifica instrucciones de salto y facilita el procesamiento especulativo.
  • Unidad Funcional: Determina a qué unidad funcional se dirigirá la instrucción.
  • Referencia a Memoria: Indica si una instrucción accede a memoria.

Para ello, se suelen añadir bits adicionales (4-7 en arquitecturas RISC) a las instrucciones.

5. Nivel de Especulación

El nivel de especulación se refiere a la cantidad de instrucciones de salto condicional que pueden ejecutarse de forma especulativa. Si se permite la ejecución especulativa de múltiples saltos no resueltos, es necesario almacenar los estados de ejecución correspondientes. El grado de especulación indica hasta qué etapa se procesan las instrucciones del camino especulativo.

6. Ejemplos de Esquemas de Predicción Estática

La predicción estática se basa en características que no cambian durante la ejecución:

  • Basada en el Código de Operación: Se predice según el tipo de instrucción de salto (ejemplos: MC88110, PowerPC).
  • Basada en el Desplazamiento del Salto: Desplazamiento positivo predice no salto, negativo predice salto (ejemplos: Alpha 21064, PowerPC 603).
  • Dirigida por el Compilador: Utiliza bits de predicción en las instrucciones (ejemplos: PowerPC 603, PA 8000).

7. Etapas de un Procesador Escalar

  1. Captación de instrucciones
  2. Decodificación
  3. Emisión
  4. Ejecución
  5. Escritura

8. Ejecución Ordenada y Desordenada en un Procesador Escalar

  • Ordenada: Las instrucciones se emiten en grupos, en el orden en que llegan a la etapa de emisión. El siguiente grupo no se emite hasta que el anterior haya finalizado.
  • Desordenada: Las instrucciones se emiten en grupos, en el orden en que llegan. Sin embargo, cualquier instrucción del grupo siguiente puede comenzar a ejecutarse tan pronto como una unidad funcional esté libre.

9. Estrategias para Mejorar el Paralelismo de Instrucciones

  1. Decodificación paralela y uso de predecodificadores.
  2. Emisión paralela de instrucciones a las unidades funcionales.
  3. Ejecución paralela de operaciones.
  4. Finalización del procesamiento de instrucciones.
  5. Detección y resolución de dependencias.
  6. Mantenimiento de la consistencia secuencial (desacoplando ejecución y escritura).

10. Diferencia entre Procesadores Segmentados y Escalares en Decodificación

  • Procesador Segmentado: Una única etapa de decodificación y búsqueda de operandos (ID/OF).
  • Procesador Superescalar: Unidades separadas de decodificación (ID) y emisión (ISS).

11. Diferencia Fundamental entre Procesador Escalar y Segmentado

Un procesador escalar (a diferencia de un VLIW) debe identificar el paralelismo entre instrucciones (ILP) en el código y utilizar los recursos de manera eficiente para la ejecución paralela.

12. Ventana de Emisión

También llamada ventana de instrucciones, es una estructura (cola de registros) que almacena las instrucciones decodificadas que esperan ser emitidas.

13. Función de la Etapa de Emisión

Determina qué instrucciones pueden emitirse al disponer de operandos y unidades funcionales libres. Aplica políticas para seleccionar las instrucciones a emitir.

14. Campos de la Ventana de Instrucciones

  • Codop: Código de operación.
  • Dest: Registro de destino.
  • Op1: Primer operando.
  • Ok1: Bit de validez del operando 1.
  • Tipo (Op1): Tipo del operando 1.
  • Op2: Segundo operando.
  • Ok2: Bit de validez del operando 2.
  • Tipo (Op2): Tipo del operando 2.

15. Políticas de Emisión según el Alineamiento

  • Emisión Alineada: No se introducen nuevas instrucciones hasta que la ventana esté vacía.
  • Emisión No Alineada: Se introducen instrucciones mientras haya espacio en la ventana.

16. Estación de Reserva

Estructuras (similares a la ventana de instrucciones) asociadas a cada unidad funcional o conjunto de ellas, siguiendo la técnica de «shelving».

17. Partes del Procesamiento de una Instrucción

  • Final de la ejecución de la operación: Se dispone de los resultados, pero los registros no se han modificado.
  • Final del procesamiento de la instrucción (retiro o completado): Se escriben los resultados en los registros.

18. Consistencia Secuencial de un Programa

Se refiere a:

  • El orden en que las instrucciones se completan.
  • El orden en que se accede a memoria para leer (LOAD) o escribir (STORE).

19. Tendencia en la Consistencia de los Procesadores Superescalares

Los procesadores superescalares tienden a usar esquemas de consistencia de memoria débiles y esquemas de consistencia de procesador fuertes, basados en buffers de reordenamiento o estructuras similares.

20. ROB (Reorder Buffer)

Estructura que permite la emisión y ejecución desordenada de instrucciones, manteniendo una finalización ordenada. También puede usarse para el renombramiento de registros.

21. Campos de una ROB

  • Reg.Dest: Registro de destino.
  • Unidad: Unidad funcional.
  • Resultado: Resultado de la operación.
  • OK: Bit de validez.
  • Marca: Identificador adicional.

22. Renombramiento de Registros

Evita riesgos (dependencias WAW y WAR) usando registros de la microarquitectura como almacenamiento temporal.

23. Requisitos para el Renombramiento de Registros

  • La escritura se realiza en un registro diferente de los operandos y otras escrituras.
  • Para mantener RAW, el registro leído debe ser igual al registro escrito (antes del renombramiento).

24. Tipos de Renombramiento de Registros

  • Estático: Durante la compilación.
  • Dinámico: Durante la ejecución.

25. Alternativas para el Acceso a los Buffers de Renombramiento

  • Acceso Asociativo.
  • Acceso Indexado.

26. Campos del Buffer de Renombramiento con Acceso Asociativo

  • Asignación válida.
  • Registro de destino.
  • Contenido.
  • Contenido válido.
  • Bit de asignación última.

27. Detección Temprana de Instrucciones de Salto

  • Detección paralela.
  • Detección anticipada.
  • Detección anticipada en la captación.

28. Esquemas de Predicción Fija

  • Salto siempre no tomado: Se predice que no se producirá el salto.
  • Salto siempre tomado: Se predice que se producirá el salto.

29. Clasificación de Esquemas de Predicción Dinámica

  • Predicción Dinámica Implícita: Se almacena información sobre el comportamiento pasado, pero no la dirección de destino explícitamente.
  • Predicción Dinámica Explícita: Se almacena la dirección de destino del salto.

30. Información en Esquemas de Predicción Explícita

Se almacena la dirección de la instrucción siguiente a la instrucción de salto (ya sea la de destino del salto o la siguiente en secuencia).

31. Bits de Historia

Bits que codifican información sobre el comportamiento pasado de una instrucción de salto.

32. BTAC (Branch Target Address Cache)

Caché que almacena:

  • BA (Branch Address): Dirección de la instrucción de salto.
  • BTA (Branch Target Address): Dirección de destino del salto.
  • BH (Branch History): Bits de historia.

33. BTIC (Branch Target Instruction Cache)

Caché que almacena:

  • BA (Branch Address): Dirección de la instrucción de salto.
  • BTI (Branch Target Instruction): Instrucción de destino del salto.
  • BTI+1: Instrucción siguiente a la de destino del salto.
  • BH (Branch History): Bits de historia.

34. Grado de Especulación

Indica hasta qué etapa se procesan las instrucciones del camino especulativo después de un salto condicional.

35. Mantenimiento de la Consistencia con Interrupciones

  • a) Las instrucciones se retiran ordenadamente (usando un ROB).
  • b) Las instrucciones cambian el estado de la máquina según se ejecutan (usando buffer de historia o puntos de chequeo-reparación).

36. Estrategias para el Procesamiento de Interrupciones

  • Buffer de reordenamiento.
  • Buffer de historia.
  • Puntos de chequeo-reparación.
  • Buffer de reordenamiento con registro de futuro.

37. Interrupciones Precisas con Buffer de Reordenamiento

Utiliza un ROB con un campo adicional que indica si la instrucción generó una excepción.

38. Interrupciones Precisas con Buffer de Historia

Permite finalización desordenada. Un buffer de historia almacena el estado anterior de los registros modificados.

39. Interrupciones Precisas con Puntos de Chequeo-Reparación

El estado de la máquina se almacena en puntos de chequeo. En caso de interrupción, se recupera el estado desde el punto de chequeo.

40. Interrupciones Precisas con Registro de Futuro y ROB

Utiliza un banco de registros de futuro, que es modificado desordenadamente por las instrucciones. Las instrucciones leen operandos desde este banco.

CAPÍTULO 4 – Implementación de Procesadores Superescalares

1. Microoperaciones

Instrucciones CISC traducidas a instrucciones tipo RISC en la etapa de decodificación. Estas microoperaciones son ejecutadas por el núcleo superescalar.

2. Pasos del Funcionamiento de la Arquitectura P6

  1. Captación de instrucciones en orden del programa.
  2. Traducción de cada instrucción a una o más microoperaciones RISC.
  3. Ejecución desordenada de microoperaciones.
  4. Modificación de registros en el orden del programa original.

3. Función del MIS (Microcode Instruction Sequencer) en la Etapa ID1

Genera la secuencia de microoperaciones para instrucciones complejas (que requieren 5 o más microoperaciones). La etapa ID1 solo maneja 3 instrucciones en paralelo y traduce cada una a 1-4 microoperaciones RISC de 118 bits.

4. Características de la Etapa de Renombramiento de Registros (RAT)

  • Reasigna referencias a los 16 registros de la arquitectura a 40 registros físicos, eliminando dependencias falsas (WAW, WAR).
  • Puede manejar hasta 3 microoperaciones por ciclo.
  • Puede renombrar tres registros por ciclo (incluso el mismo registro 3 veces).
  • Limitación: Solo se pueden leer 2 registros diferentes (de la arquitectura) en cada ciclo.

5. Unidad de Final de Instrucción (Retire Unit)

  • Retira las microoperaciones ejecutadas del ROB y almacena los resultados en los registros de la arquitectura.
  • Considera saltos mal predichos.
  • Es conveniente que las microoperaciones con retardos elevados no estén próximas.

6. Predicción de Saltos en la Arquitectura P6

Utiliza un BTB (Branch Target Buffer) con 512 líneas (32 conjuntos de 16 bytes). Almacena direcciones de instrucciones de salto y bits de historia.

7. Ejecución de una Instrucción de Salto en la Arquitectura P6

  • El procesador marca el comienzo y final de cada instrucción en los primeros 16 bytes captados y comprueba el BTB.
  • Algoritmo de predicción dinámica de dos niveles (4 bits de historia local, 2 bits de predicción).
  • Procedimiento de predicción estática:
    • Si la dirección no es relativa a IP: predice saltar si es un return, no saltar en caso contrario.
    • Si la dirección es relativa a IP: predice saltar si es hacia atrás (bucle), no saltar si es hacia delante.

8. Pasos del Funcionamiento de la Microarquitectura P6 (Resumen)

  1. Captación de instrucciones en orden.
  2. Traducción a microoperaciones RISC.
  3. Ejecución desordenada de microoperaciones.
  4. Modificación de registros en orden.

9. Recomendaciones para Optimizar el Rendimiento del RAT

  • Microoperaciones que leen el mismo registro, lo más cerca posible.
  • Microoperaciones que leen registros diferentes, lo más lejos posible.
  • Provocar renombrados para evitar ciclos perdidos.

10. Líneas para Mejorar las Prestaciones de un Procesador Superescalar

  • Aumentar el número de instrucciones procesadas por ciclo.
  • Aumentar la frecuencia de reloj.

11. Diferencias entre P7 (Pentium 4) y P6 (Pentium III)

  • Caché L1 de datos: 8KB (P4) vs. 16KB (P3).
  • Decodificación: Un solo decodificador (P4). Caché de traza (12KB, 3 microoperaciones/ciclo).
  • Predicción de saltos: BTB con 4096 entradas (P4).
  • Renombramiento: 128 registros (P4) vs. 40 (P3).
  • Unidades de ejecución: 5 unidades enteras (3 ALU, 2 AGU) (P4).
  • Nuevas instrucciones SIMD de coma flotante (P4).
  • No incluye desplazador barril (P4).

12. Instrucciones de Precaptación en el Repertorio IA-32 del Pentium 4

  1. prefetchnta: Precapta en buffer temporal para lectura.
  2. prefetcht0: Precapta en todas las cachés.
  3. prefetcht1: Precapta en L2 y L3, pero no en L1.
  4. prefetcht2: Precapta solo en L3.

13. Significado de POWER PC

Performance Optimized With Enhanced RISC Performance Chip.

14. Generación de los Procesadores POWERPC

Tercera generación de tecnología RISC.

15. Características de la Arquitectura POWERPC

  • Instrucciones de tamaño fijo y regular.
  • Arquitectura de carga/almacenamiento (load/store).
  • Instrucciones aritméticas y lógicas de 3 registros.
  • Instrucciones fuera de RISC:
    • Multiplicación y acumulación.
    • Salto condicional.
    • Acceso a memoria.

16. Etapas del Procesador POWERPC

  • Pre-captación (datos e instrucciones).
    • L1 (2 unidades separadas): 64KB (instrucciones), 32KB (datos).
    • L2 única de 512KB.
  • Captación y decodificación.
  • Agrupamiento y emisión.
  • Colas de envío (núcleo de ejecución).
  • Núcleo de Ejecución (12 unidades funcionales).
  • Finalización.

17. Procesadores POWERPC de 64 bits

A partir de los procesadores POWERPC G5.

18. Unidades Funcionales del Núcleo de Ejecución POWERPC

  • 4 Velocity Engine.
    • 2 unidades de Coma Flotante.
    • 2 unidades de punto fijo.
    • 1 unidad de Evaluación de registro de condición.
    • 1 unidad de operaciones de salto.
    • 2 unidades de Carga/Almacenamiento (Load/Store).

19. Distribución de Cachés del Procesador POWERPC

  • Caché L1 (2 unidades separadas): 64KB (instrucciones), 32KB (datos).
  • Caché L2: 512KB.

20. Predicción de Dirección de Destino de Salto en MIPS

Utiliza un algoritmo dinámico de 2 bits.

21. Etapa de Renombramiento de Registros en MIPS

Segunda etapa (decodificación).

22. Registros para Enteros en MIPS

33 registros lógicos y 64 registros físicos.

23. Registros para Coma Flotante en MIPS

32 registros lógicos y 64 registros físicos.

24. Detección de Dependencias en MIPS

Utiliza 24 comparadores de 5 bits cada uno.

25. Renombramiento de Registros en MIPS

Mediante tablas de correspondencia (Map tables).

26. Colas de Instrucciones en MIPS

  • Cola para instrucciones con enteros.
  • Cola para instrucciones de coma flotante.
  • Cola de direcciones.

27. Objetivos del Diseño de UltraSparc III

  • Aumento de la frecuencia de reloj.
  • Reducción de retardos de ejecución.
  • Eliminación de conexiones entre módulos alejados.

28. Unidades de la Microarquitectura Sparc

  • Unidad de emisión de instrucciones.
  • Unidad de ejecución entera.
  • Unidad de ejecución de coma flotante.
  • Unidad de caché de datos.
  • Unidad de memoria externa.
  • Unidad de interfaz de sistema.

29. Unidades Fuera del Cauce de 14 Etapas

  • Unidad de memoria externa.
  • Unidad de interfaz de sistema.

30. WARF (Write- পোর্ট Address Register File)

Banco de registros que elimina caminos de bypass en el cauce de ejecución para enteros, reduciendo el tiempo de ciclo y la complejidad de los multiplexores.

31. Multiprocesador Monochip

Un chip con 2 o más procesadores (ejemplo: UltraSparc IV, con 2 UltraSparc III).

32. Multihebra Simultánea

Un único procesador se comporta como varios procesadores lógicos.

33. Gestiones Complejas en una Microarquitectura Supersegmentada

  • Dependencias entre instrucciones.
  • Interrupciones.
  • Predicciones incorrectas.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.