ScholarGate
Asistente

Paralelismo a Nivel de Instrucción

El paralelismo a nivel de instrucción (ILP) es el potencial para ejecutar múltiples instrucciones de un solo programa simultáneamente, explotado por procesadores superescalares y VLIW que emiten y completan varias instrucciones por ciclo.

Encontrar tema con PaperMindPróximamenteFind papers & topics
Tools & resources
Descargar diapositivas
Learn & explore
VídeoPróximamente

Definition

El paralelismo a nivel de instrucción es el grado en que las instrucciones de un solo programa pueden ejecutarse en paralelo; los procesadores lo explotan emitiendo, ejecutando y completando más de una instrucción por ciclo de reloj, sujeto a dependencias de datos y de control.

Scope

Este tema abarca el paralelismo disponible dentro de un flujo de instrucciones y cómo el hardware y los compiladores lo extraen: la emisión superescalar de múltiples instrucciones por ciclo, los diseños de palabra de instrucción muy larga (VLIW), el análisis de dependencias, el renombramiento de registros y la especulación. También cubre los límites del ILP disponible. Excluye el paralelismo a nivel de hilo y de datos a través de núcleos y carriles (arquitectura paralela y multinúcleo) y la tubería básica de una sola emisión (tuberías y riesgos).

Core questions

  • ¿Cuánto paralelismo está inherentemente disponible entre las instrucciones de un programa típico?
  • ¿Cómo deciden los procesadores superescalares qué instrucciones pueden emitirse juntas?
  • ¿Cómo los diseños VLIW trasladan la carga de encontrar paralelismo al compilador?
  • ¿Qué dependencias y riesgos limitan la cantidad de ILP que se puede realizar?

Key concepts

  • emisión superescalar
  • palabra de instrucción muy larga (VLIW)
  • dependencias de datos y nombres
  • renombramiento de registros
  • múltiples unidades funcionales
  • especulación
  • límites de ILP
  • instrucciones por ciclo (IPC)

Key theories

Programación dinámica de instrucciones
El hardware puede descubrir y explotar el ILP en tiempo de ejecución rastreando las dependencias y programando instrucciones listas en múltiples unidades funcionales; el algoritmo de Tomasulo, con estaciones de reserva y renombramiento de registros, es el mecanismo canónico que permite la emisión fuera de orden y en paralelo.

Mechanisms

Los procesadores superescalares obtienen y decodifican varias instrucciones por ciclo, verifican sus dependencias, renombran los registros para eliminar dependencias falsas y emiten instrucciones independientes a múltiples unidades funcionales. Los diseños VLIW, en cambio, dependen del compilador para agrupar operaciones independientes en palabras de instrucción amplias. Las verdaderas dependencias de datos y el flujo de control establecen un límite superior al paralelismo realizable, que la especulación y las ventanas de instrucción más grandes intentan extender.

Clinical relevance

Las técnicas de ILP impulsaron décadas de crecimiento del rendimiento de un solo hilo y siguen siendo fundamentales para los núcleos de CPU de alto rendimiento. Sus rendimientos decrecientes —a medida que se alcanzaron los límites de paralelismo disponible y complejidad— fueron una razón clave por la que la industria recurrió a la arquitectura multinúcleo y al paralelismo explícito para una mayor escalabilidad.

History

Múltiples unidades funcionales y la programación dinámica aparecieron en el CDC 6600 y el IBM System/360 Modelo 91 en la década de 1960. Los diseños superescalares se generalizaron en la década de 1990, y las arquitecturas VLIW como el Itanium de Intel buscaron el paralelismo impulsado por el compilador. Los estudios sobre los límites del ILP a principios de la década de 1990 aclararon por qué el paralelismo dentro de un solo hilo está limitado.

Debates

ILP impulsado por hardware versus impulsado por compilador
El hardware superescalar fuera de orden encuentra el paralelismo dinámicamente a costa de la complejidad y el consumo de energía, mientras que VLIW se basa en el compilador para programar el paralelismo estáticamente; la experiencia mostró que los enfoques dinámicos son más robustos en diversas cargas de trabajo, mientras que los enfoques estáticos siguen siendo atractivos para diseños predecibles y de bajo consumo.

Key figures

  • Robert Tomasulo
  • Yale Patt
  • John L. Hennessy
  • Joseph A. Fisher
  • James E. Smith

Related topics

Seminal works

  • hennessy2019
  • tomasulo1967

Frequently asked questions

¿Cuál es la diferencia entre superescalar y VLIW?
Ambos ejecutan múltiples operaciones por ciclo. Un procesador superescalar decide en hardware, en tiempo de ejecución, qué instrucciones pueden emitirse juntas; un procesador VLIW se basa en el compilador para agrupar operaciones independientes en instrucciones amplias con antelación, simplificando el hardware pero exigiendo más del compilador.
¿Por qué hay un límite para el paralelismo a nivel de instrucción?
Los programas reales tienen verdaderas dependencias de datos y bifurcaciones frecuentes que limitan cuántas instrucciones pueden ejecutarse en paralelo. Más allá de una cierta ventana, el paralelismo alcanzable se satura, por lo que extraer más ILP produce rendimientos decrecientes en relación con la complejidad de hardware y el consumo de energía adicionales.

Methods for this concept

Related concepts