Optimización del Rendimiento en Arquitecturas Segmentadas: Gestión de Riesgos de Datos y Control

Clasificado en Informática

Escrito el en español con un tamaño de 3,87 KB

Riesgos en Arquitecturas Segmentadas: Dependencias y Control

La segmentación (pipelining) es fundamental para el alto rendimiento, pero introduce riesgos que deben ser gestionados mediante hardware especializado para evitar detenciones (stalls) y asegurar la correcta ejecución de las instrucciones.

Gestión de Riesgos por Dependencias de Datos (RAW)

A. Estrategias de Adelantamiento (Forwarding)

  • El resultado de la Unidad Aritmético-Lógica (ALU) siempre realimenta sus cerrojos de entrada. Si el hardware de adelantamiento detecta que la operación previa de la ALU ha escrito en un registro correspondiente a un operando fuente para la operación actual de la ALU, la lógica de control selecciona el resultado adelantado como entrada de la ALU en lugar del valor leído en el fichero de registros.
  • Observar que con el adelantamiento, si la instrucción SUB es detenida, se completará ADD, y no se activará el desvío, haciendo que se utilice el valor correcto del registro. Esto también es cierto para el caso de una interrupción entre las dos instrucciones.
  • En la segmentación de DLX, debemos pasar resultados no solo a la instrucción inmediatamente siguiente, sino también a la instrucción después de esa, debido a la profundidad del pipeline.
  • Para la instrucción tres líneas más abajo, se solapan las etapas ID (Decodificación de Instrucción) y WB (Escritura en Banco de Registros); sin embargo, como la escritura no se termina hasta el fin de WB, debemos continuar adelantando el resultado.
  • Es deseable reducir el número de instrucciones que deban ser desviadas, ya que cada nivel requiere hardware especial.

B. Optimización del Acceso al Fichero de Registros

  • Recordando que el fichero de registros es accedido dos veces en un ciclo de reloj, es posible hacer las escrituras en el registro en la primera mitad de la etapa WB y las lecturas en la segunda mitad de la etapa ID.
  • Esto elimina la necesidad de detención para una tercera instrucción, como se ilustra a continuación.

Riesgos de Control y Penalización por Saltos

Los riesgos de control pueden provocar una mayor pérdida de rendimiento para la segmentación de DLX que los riesgos por dependencias de datos.

Impacto de los Saltos en el Rendimiento

  • Cuando se ejecuta un salto, puede o no cambiar el Contador de Programa (PC) a un valor diferente de su valor actual más 4. (Recordar que si un salto cambia el PC a su dirección destino, el salto es efectivo; en caso contrario es no efectivo.)
  • Si la instrucción i es un salto efectivo, entonces el PC, normalmente, no cambia hasta el final de la etapa MEM (Acceso a Memoria), después de que se complete el cálculo de la dirección y la comparación, como muestra la Figura a continuación.
  • Esto significa una detención durante tres ciclos de reloj, al final de los cuales el nuevo PC es conocido y se puede buscar la instrucción adecuada.
  • Tres ciclos de reloj empleados en cada salto representan una pérdida significativa de rendimiento.
  • Con una frecuencia de saltos de un 30% y un CPI (Ciclos Por Instrucción) ideal de 1, la máquina con detenciones de saltos logra aproximadamente la mitad de la velocidad ideal de la segmentación.

Reducción de la Penalización por Saltos

Por ello, reducir la penalización de los saltos llega a ser crítico. El número de ciclos de reloj de una detención de salto puede reducirse en dos pasos clave:

  1. Averiguar si el salto es efectivo o no anteriormente en la segmentación (por ejemplo, en la etapa ID).
  2. Calcular anteriormente el PC efectivo (dirección destino del salto).

Entradas relacionadas: