Optimización del Rendimiento en Procesadores: Segmentación y Planificación Dinámica

Clasificado en Informática

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

Segmentación y Dependencias de Datos (9A)

En el contexto de la segmentación de instrucciones, se establecen las siguientes premisas iniciales:

  • Hemos supuesto que nuestro procesador busca una instrucción y la emite, a menos que ya exista una dependencia de datos entre una instrucción en curso y la instrucción buscada.
  • Si hay dependencia de datos, entonces detenemos la instrucción y cesa la búsqueda y emisión.

Ventajas de la Planificación Dinámica

La planificación dinámica ofrece una serie de beneficios clave en la arquitectura de procesadores:

  • Habilita el tratamiento de algunos casos cuando las dependencias son desconocidas en tiempo de compilación.
  • Simplifica el compilador y la gestión del hardware.
  • Permite que un código compilado pensando en una determinada segmentación se ejecute eficientemente en un procesador con diferente segmentación.

Como veremos, estas ventajas suponen un aumento significativo de complejidad.

Técnicas Dinámicas para el Tratamiento de Saltos

En correspondencia con las técnicas dinámicas de hardware para planificar dependencias relacionadas con los datos, existen las técnicas dinámicas para tratar saltos.

Estas técnicas son utilizadas para dos propósitos fundamentales:

  1. Predecir si un salto será efectivo.
  2. Determinar el destino de forma más rápida.

La predicción hardware de saltos es el nombre que reciben estas técnicas.

Planificación Dinámica en Torno a los Riesgos con Marcador (Scoreboard)

La principal limitación de las técnicas de segmentación que hemos utilizado hasta ahora es que todas emiten las instrucciones en orden.

Limitaciones de la Ejecución en Orden (9B)

Si en el procesador se detiene una instrucción, las posteriores no pueden proceder. Si hay múltiples unidades funcionales, estas permanecerán inactivas.

Así, si una instrucción j depende de una instrucción de larga ejecución i, actualmente en curso, entonces todas las instrucciones posteriores a j se deben detener hasta que se termine i y se pueda ejecutar j.

Ejemplo de Detención por Dependencia

Consideremos el siguiente código:

DIVF F10, F2, F4
ADDF F10, F0, F8
SUBF F8, F8, F14

En este escenario, la instrucción SUBF no puede ejecutarse, ya que la dependencia de ADDF sobre DIVF hace que se detenga la segmentación; aunque SUBF no depende de ninguna cosa del procesador segmentado.

Esto representa una limitación de rendimiento que se puede eliminar al no ser necesario que las instrucciones se ejecuten en orden (Out-of-Order Execution).

Gestión de Riesgos en la Arquitectura DLX

En la segmentación de DLX, los riesgos por dependencias de datos y los riesgos estructurales se comprobaban en la etapa ID (Decodificación de Instrucción): cuando una instrucción se podía ejecutar adecuadamente, se emitía desde ID.

Para comenzar la ejecución de SUBF en el ejemplo anterior, debemos separar el proceso en dos partes:

  1. Comprobar los riesgos estructurales.
  2. Esperar la ausencia de riesgos por dependencia de datos.

Continuación del Tema (10A)

Entradas relacionadas: