Está en la página 1de 3

12.4.

Panorama de la explotación del paralelismo a nivel de instrucción


El paralelismo a nivel de instrucción (ILP: Instruction Level Parallelism) tiene como objetivo ejecutar el mayor
número de instrucciones por ciclo de reloj, para ello se requiere maximizar el número de instrucciones
independientes. De esta manera se reducirá el número de detenciones que se debe realizar en el sistema
para garantizar una ejecución correcta del programa.

Con la finalidad de explotar el ILP, se ha definido un bloque básico(BB) como una porción de código sin
saltos que tiene un solo punto de entrada y un solo punto de salida. Generalmente este bloque de código es
pequeño y consta de 4 a 7 instrucciones con fuertes dependencias entre ellas. De manera que el ILP busca
explotar el concepto de paralelismo entre varios bloques básicos BBs. Para ello existen básicamente dos
tipos de mecanismos:

Los basados en software que requieren de una planificación estática.

Los basados en hardware que utilizan una planificación dinámica.

Tabla 2

Principales técnicas para explotar el ILP

Mecanismo Técnica Busca reducir

Detenciones por riesgos de


Planificación Dinámica
datos

Detenciones por riesgos de


Predicción dinámica de saltos
control

Basados en
Lanzamiento múltiple de varias
Hardware con CPI Ideal
Planificación instrucciones por ciclo
DINÁMICA

Especulación Riesgos de datos y control

Detenciones por riesgos de


Dynamic memory disambiguation
datos en memoria

Basados en Detenciones por riesgos de


Desenrollado de bucles
Software con control
Planificación
ESTÁTICA
Detenciones por riesgos de
Planificación por el compilador
datos

CPI Ideal y detenciones por


Software pipelining
riesgos de datos
Predicción estática y Especulación CPI Ideal, paradas por
por el Compilador riesgos de datos y control

Hennessy & Patterson, 2012

Según Hennessy (Hennessy & Patterson, 2012), las principales técnicas se resumen en la Tabla 2. Cabe
señalar que en los mecanismos basados en software, las dependencias de memoria son muy difíciles de
determinar. En tanto que en los mecanismos basados en hardware, el código es independiente de la
implementación y la información como tal está disponible al momento de la ejecución.

Con la finalidad de obtener el nivel máximo de paralelismo es fundamental determinar las dependencias y a
qué recurso afectan. La aparición de una dependencia indica una posibilidad de riesgo y de detención. Sin
embargo esta posibilidad depende de la arquitectura “pipe” utilizada. Por tanto para minimizar el impacto, la
dependencia determinará el orden de cálculo de una instrucción. Las dependencias varían de acuerdo al
código de los programa, y se dividen en dos tipos dependencias de datos y dependencias de control.

Las dependencias de datos a su vez se clasifican en:

Dependencia verdadera (Lectura Después de Escritura - LDE)


Dependencias de nombre causada por reutilización de registros

Antidependencia (Escritura Después de Lectura - EDL )

Dependencia de salida (Escritura Después de Escritura - EDE)


Para eliminar estas dependencias existen varias técnicas cuyo objetivo es que el resultado del programa
ejecutado con ILP sea el mismo obtenido para un programa en ejecución secuencial. Resultados óptimos se
obtienen cuando se utilizan tanto los mecanismos basados en hardware (en la arquitectura propia del
procesador) como mecanismos basados en software (en la fortaleza del compilador).

La planificación estática la realiza el compilador con el fin de minimizar los riesgos y eliminar las detenciones.
Esto se logra tomando en consideración los siguientes aspectos:

Latencia de uso de la instrucción, que es el número mínimo de ciclos entre una instrucción que produce
un resultado y otra que lo consume.

El rendimiento de iteraciones, si las iteraciones son independientes se puede reorganizar los bucles
para que cada instrucción pertenezca a una iteración diferente(software pipelining).

Reordenamiento de instrucciones para evitar efectos de latencias.

Desenrollado de bucles reduce el número de saltos al tener bloques más grandes y se puede obtener
mayor paralelismo. Sin embargo se añade código adicional.

La planificación dinámica, en cambio, está a cargo del controlador de instrucciones del procesador. En este
caso, el controlador resuelve la secuencia de las instrucciones en tiempo de ejecución. Para logra una mejor
planificación se requiere de más unidades funcionales y de la posibilidad de que el hardware realice por
ejemplo renombramiento dinámico de registros. La primera alternativa fue la del Scoreboard que resolvía los
riesgos EDE y EDL a través de detenciones. Luego fue propuesto el Algoritmo de Tomasulo, que permite
ejecutar en un procesador instrucciones fuera de orden, utilizando renombramiento dinámico de registros.
Este algoritmo también resuelve los riesgos EDE y EDL.

Por otra parte para minimizar los riesgos por dependencias de control, es necesario reducir la penalización
por saltos. Esto se ha realizado a través de técnicas de predicción estática y dinámica de saltos. La
predicción ha dado lugar al concepto de especulación, es decir del acierto o fallo de la predicción. En este
aspecto existen dos tipos de instrucciones, las independientes y las dependientes de una predicción de salto,
y el hardware tiene que distinguirlas. Para ello los diseñadores modificaron el Algoritmo de Tomasulo
añadiendo la especulación para forzar la finalización en orden de las instrucciones. Este algoritmo
modificado posibilita recuperarse de saltos mal predichos e implementa un modelo de excepciones precisas
que permitan continuar con la ejecución del programa.
Otra forma de maximizar el ILP es a través del lanzamiento simultáneo de múltiples instrucciones mediante
el uso de los procesadores superescalares y de los procesadores VLIW (Very Long Instruction Word).
Finalmente, los límites del ILP vienen dado por los recursos del procesador, las mejoras en los compiladores
y el éxito en la eliminación de riesgos. Lo que ha impulsado a los diseñadores a explorar otros tipos de
paralelismo a nivel de tarea (thread) o de datos. Las técnicas de paralelismo a nivel de instrucción (ILP)
serán tratadas con detalle en el tema 13.

Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0

Unidad de Educación a Distancia

También podría gustarte