Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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:
Tabla 2
Basados en
Lanzamiento múltiple de varias
Hardware con CPI Ideal
Planificación instrucciones por ciclo
DINÁMICA
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.
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).
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