stringtranslate.com

Paralelismo a nivel de instrucción

Computadora Atanasoff-Berry , la primera computadora con procesamiento paralelo [1]

El paralelismo a nivel de instrucciones ( ILP ) es la ejecución paralela o simultánea de una secuencia de instrucciones en un programa de computadora . Más específicamente, ILP se refiere al número promedio de instrucciones ejecutadas por paso de esta ejecución paralela. [2] : 5 

Discusión

ILP no debe confundirse con concurrencia . En ILP existe un único hilo específico de ejecución de un proceso . Por otro lado, la concurrencia implica la asignación de múltiples subprocesos al núcleo de una CPU en una alternancia estricta, o en verdadero paralelismo si hay suficientes núcleos de CPU, idealmente un núcleo para cada subproceso ejecutable.

Hay dos enfoques para el paralelismo a nivel de instrucción: hardware y software .

El nivel de hardware funciona con paralelismo dinámico, mientras que el nivel de software funciona con paralelismo estático. El paralelismo dinámico significa que el procesador decide en tiempo de ejecución qué instrucciones ejecutar en paralelo, mientras que el paralelismo estático significa que el compilador decide qué instrucciones ejecutar en paralelo. [3] [ se necesita aclaración ] El procesador Pentium funciona en la secuencia dinámica de ejecución paralela, pero el procesador Itanium funciona en el nivel de paralelismo estático.

Considere el siguiente programa:

mi = a + bf = c + remetro = mi * f

La operación 3 depende de los resultados de las operaciones 1 y 2, por lo que no se puede calcular hasta que se completen ambas. Sin embargo, las operaciones 1 y 2 no dependen de ninguna otra operación, por lo que se pueden calcular simultáneamente. Si asumimos que cada operación se puede completar en una unidad de tiempo, entonces estas tres instrucciones se pueden completar en un total de dos unidades de tiempo, lo que da un ILP de 3/2.

Un objetivo de los diseñadores de compiladores y procesadores es identificar y aprovechar la mayor cantidad de ILP posible. Los programas ordinarios generalmente se escriben bajo un modelo de ejecución secuencial donde las instrucciones se ejecutan una tras otra y en el orden especificado por el programador. ILP permite al compilador y al procesador superponer la ejecución de múltiples instrucciones o incluso cambiar el orden en que se ejecutan las instrucciones.

La cantidad de ILP que existe en los programas es muy específica de la aplicación. En determinados campos, como los gráficos y la informática científica, la cantidad puede ser muy grande. Sin embargo, las cargas de trabajo como la criptografía pueden presentar mucho menos paralelismo.

Las técnicas de microarquitectura que se utilizan para explotar ILP incluyen:

Se sabe que el ILP es explotado tanto por el compilador como por el soporte de hardware, pero el compilador también proporciona ILP inherente e implícito en los programas al hardware mediante optimizaciones en tiempo de compilación. Algunas técnicas de optimización para extraer ILP disponible en programas incluirían programación de instrucciones , asignación /cambio de nombre de registros y optimización del acceso a la memoria.

Las arquitecturas de flujo de datos son otra clase de arquitecturas donde ILP se especifica explícitamente; para ver un ejemplo reciente, consulte la arquitectura TRIPS .

En los últimos años, las técnicas ILP se han utilizado para proporcionar mejoras de rendimiento a pesar de la creciente disparidad entre las frecuencias operativas del procesador y los tiempos de acceso a la memoria (los primeros diseños ILP, como el IBM System/360 Model 91, utilizaban técnicas ILP para superar las limitaciones impuestas por una archivo de registro relativamente pequeño). Actualmente, una penalización por pérdida de caché en la memoria principal cuesta varios cientos de ciclos de CPU. Aunque en principio es posible utilizar ILP para tolerar incluso dichas latencias de memoria, los costes asociados de recursos y disipación de energía son desproporcionados. Además, la complejidad y, a menudo, la latencia de las estructuras de hardware subyacentes dan como resultado una frecuencia operativa reducida, lo que reduce aún más los beneficios. Por lo tanto, las técnicas antes mencionadas resultan inadecuadas para evitar que la CPU se detenga debido a los datos fuera del chip. En cambio, la industria se dirige hacia la explotación de niveles más altos de paralelismo que pueden explotarse mediante técnicas como el multiprocesamiento y el multiproceso . [4]

Ver también

Referencias

  1. ^ "La historia de la informática". mason.gmu.edu . Consultado el 24 de marzo de 2019 .
  2. ^ Goossens, Bernard; Langlois, Philippe; Parello, David; Pequeño, Eric (2012). "PerPI: una herramienta para medir el paralelismo del nivel de instrucción". Computación Científica y Paralela Aplicada . Apuntes de conferencias sobre informática. vol. 7133, págs. 270–281. doi :10.1007/978-3-642-28151-8_27. ISBN 978-3-642-28150-1. S2CID  26665479.
  3. ^ Hennessy, John L.; Patterson, David A. (1996). Arquitectura informática: un enfoque cuantitativo .
  4. ^ Reflejos del muro de la memoria

Otras lecturas

enlaces externos