SIMD


Instrucción única, datos múltiples ( SIMD ) es un tipo de procesamiento paralelo en la taxonomía de Flynn . SIMD puede ser interno (parte del diseño del hardware) y se puede acceder directamente a él a través de una arquitectura de conjunto de instrucciones (ISA): no debe confundirse con un ISA. SIMD describe computadoras con múltiples elementos de procesamiento que realizan la misma operación en múltiples puntos de datos simultáneamente.

Estas máquinas explotan el paralelismo a nivel de datos , pero no la concurrencia : hay cálculos simultáneos (paralelos), pero cada unidad realiza exactamente la misma instrucción en un momento dado (solo con datos diferentes). SIMD es particularmente aplicable a tareas comunes como ajustar el contraste en una imagen digital o ajustar el volumen de audio digital . La mayoría de los diseños de CPU modernos incluyen instrucciones SIMD para mejorar el rendimiento del uso multimedia . SIMD tiene tres subcategorías diferentes en la taxonomía de 1972 de Flynn , una de las cuales es SIMT . SIMT no debe confundirse con subprocesos de software osubprocesos de hardware , los cuales son tareas de tiempo compartido (tiempo dividido). SIMT es una verdadera ejecución simultánea a nivel de hardware en paralelo.

SIMD fue la base para las supercomputadoras vectoriales de principios de la década de 1970, como la CDC Star-100 y la Texas Instruments ASC , que podían operar en un "vector" de datos con una sola instrucción. El procesamiento de vectores fue especialmente popularizado por Cray en las décadas de 1970 y 1980. Las arquitecturas de procesamiento de vectores ahora se consideran separadas de las computadoras SIMD: la Taxonomía de Duncan las incluye donde la Taxonomía de Flynn no lo hace, debido al trabajo de Flynn (1966, 1972) anterior al Cray-1 (1977).

La primera era de las computadoras SIMD modernas se caracterizó por supercomputadoras de estilo de procesamiento paralelo masivo , como las Thinking Machines CM-1 y CM-2 . Estas computadoras tenían muchos procesadores de funcionalidad limitada que funcionarían en paralelo. Por ejemplo, cada uno de los 65,536 procesadores de un solo bit en un Thinking Machines CM-2 ejecutaría la misma instrucción al mismo tiempo, permitiendo, por ejemplo, combinar lógicamente 65,536 pares de bits a la vez, usando una red conectada a un hipercubo o RAM dedicada al procesador para encontrar sus operandos. La supercomputación se alejó del enfoque SIMD cuando el MIMD escalar de bajo costo se basa en procesadores básicos como el Intel i860 XP [2] se volvió más poderoso y el interés en SIMD disminuyó.

La era actual de los procesadores SIMD surgió del mercado de las computadoras de escritorio en lugar del mercado de las supercomputadoras. A medida que los procesadores de escritorio se volvieron lo suficientemente potentes como para admitir juegos en tiempo real y procesamiento de audio / video durante la década de 1990, creció la demanda de este tipo particular de potencia informática, y los proveedores de microprocesadores recurrieron a SIMD para satisfacer la demanda. [3] Hewlett-Packard introdujo instrucciones MAX en las computadoras de escritorio PA-RISC 1.1 en 1994 para acelerar la decodificación MPEG. [4] Sun Microsystems introdujo instrucciones de números enteros SIMD en sus extensiones de conjunto de instrucciones " VIS " en 1995, en su microprocesador UltraSPARC I. MIPS siguió su ejemplo con su sistema MDMX similar .

La primera escritorio ampliamente desplegado SIMD estaba con Intel MMX extensiones a la x86 arquitectura en 1996. Esto provocó la introducción de la mucho más potente AltiVec sistema en el Motorola PowerPC de IBM y POTENCIA sistemas. Intel respondió en 1999 presentando el nuevo sistema SSE . Desde entonces, ha habido varias extensiones de los conjuntos de instrucciones SIMD para ambas arquitecturas. Las extensiones vectoriales avanzadas AVX, AVX2 y AVX-512 son desarrolladas por Intel. AMD admite AVX y AVX2 en sus productos actuales.


Instrucción única, datos múltiples
La triplicación ordinaria de cuatro números de 8 bits. La CPU carga un número de 8 bits en R1, lo multiplica por R2 y luego guarda la respuesta de R3 en la RAM. Este proceso se repite para cada número.
El SIMD triplicado de cuatro números de 8 bits. La CPU carga 4 números a la vez, los multiplica todos en una multiplicación SIMD y los guarda todos a la vez en la RAM. En teoría, la velocidad se puede multiplicar por 4.