SIMD dentro de un registro ( SWAR ) es una técnica para realizar operaciones paralelas en datos contenidos en un registro de procesador . SIMD significa instrucción única, datos múltiples .
Muchos procesadores de computadora modernos de propósito general tienen algunas disposiciones para SIMD , en forma de un grupo de registros e instrucciones para hacer uso de ellos. SWAR se refiere al uso de esos registros e instrucciones, en contraposición al uso de motores de procesamiento especializados diseñados para ser mejores en las operaciones SIMD. También se refiere al uso de SIMD con registros e instrucciones de propósito general que no estaban destinados a hacerlo en ese momento, a través de varios trucos de software novedosos. [1]
Arquitecturas SWAR
Una arquitectura SWAR es aquella que incluye instrucciones destinadas explícitamente a realizar operaciones paralelas a través de datos que se almacenan en las subpalabras o campos independientes de un registro. Una arquitectura compatible con SWAR es aquella que incluye un conjunto de instrucciones que es suficiente para permitir que los datos almacenados en estos campos se traten de forma independiente aunque la arquitectura no incluya instrucciones que estén explícitamente destinadas a ese propósito.
Un ejemplo temprano de una arquitectura SWAR fue el Intel Pentium con MMX , que implementó el conjunto de extensiones MMX . El Intel Pentium , por el contrario, no incluía tales instrucciones, pero aún podía actuar como una arquitectura SWAR a través de cuidadosas técnicas de codificación manual o de compilación.
Arquitecturas temprana SWAR incluyen DEC Alpha MVI , de Hewlett-Packard PA-RISC MAX , de Silicon Graphics Incorporated MIPS MDMX , y de Sun SPARC V9 VIS . Al igual que MMX, muchos de los conjuntos de instrucciones SWAR están pensados para una codificación de vídeo más rápida. [2]
Historia del modelo de programación SWAR
Wesley A. Clark introdujo operaciones de datos de subpalabras particionadas en la década de 1950. Esto puede verse como un antecesor muy temprano de SWAR.
Con la introducción de las extensiones del conjunto de instrucciones multimedia MMX de Intel en 1996, los procesadores de escritorio con capacidades de procesamiento paralelo SIMD se hicieron comunes. Al principio, estas instrucciones solo se podían utilizar mediante código de ensamblaje escrito a mano.
En el otoño de 1996, el profesor Hank Dietz fue el instructor del curso de pregrado de Construcción de compiladores en la Escuela de Ingeniería Eléctrica e Informática de la Universidad de Purdue. Para este curso, asignó una serie de proyectos en los que los estudiantes construirían un compilador simple dirigido a MMX. El idioma de entrada era un dialecto subconjunto de MasPar MPL 's llama NEMPL (no exactamente MPL).
Durante el transcurso del semestre, el asistente de enseñanza del curso, Randall (Randy) Fisher, tuvo claro que había una serie de problemas con MMX que dificultarían la construcción del back-end del compilador NEMPL. Por ejemplo, MMX tiene una instrucción para multiplicar datos de 16 bits pero no para multiplicar datos de 8 bits. El lenguaje NEMPL no tuvo en cuenta este problema, lo que permitió al programador escribir programas que requerían multiplicaciones de 8 bits.
La arquitectura x86 de Intel no fue la única arquitectura que incluyó instrucciones paralelas similares a SIMD. VIS de Sun , MDMX de SGI y otros conjuntos de instrucciones multimedia se habían agregado a las arquitecturas de conjuntos de instrucciones existentes de otros fabricantes para admitir las llamadas aplicaciones de nuevos medios . Estas extensiones tenían diferencias significativas en la precisión de los datos y los tipos de instrucciones admitidas.
Dietz y Fisher comenzaron a desarrollar la idea de un modelo de programación paralelo bien definido que permitiría a la programación apuntar al modelo sin conocer los detalles de la arquitectura de destino. Este modelo se convertiría en la base de la disertación de Fisher. El acrónimo "SWAR" fue acuñado por Dietz y Fisher un día en la oficina de Hank en el edificio MSEE en la Universidad Purdue. [3] Se refiere a esta forma de procesamiento paralelo, arquitecturas que están diseñadas para realizar de forma nativa este tipo de procesamiento y el modelo de programación de propósito general que es la tesis de Fisher.
El problema de la compilación para estas arquitecturas tan variadas se discutió en un documento presentado en LCPC98. [2]
Algunas aplicaciones de SWAR
El procesamiento SWAR se ha utilizado en el procesamiento de imágenes, [4] emparejamientos criptográficos, [5] procesamiento ráster. [6] Dinámica de fluidos computacional, [7] y comunicaciones. [8]
Ver también
- Motores SIMD: procesador vectorial , arreglo de procesador , procesador de señal digital , procesador de flujos .
- SWAR en procesadores x86 : MMX , 3DNow! , SSE , SSE2 , SSE3
Referencias
- ^ Fisher, Randall J (2003). SIMD de propósito general dentro de un registro: procesamiento paralelo en microprocesadores de consumo (PDF) (Ph.D.). Universidad de Purdue.
- ^ a b Fisher, Randall J .; Henry G. Dietz (agosto de 1998). S. Chatterjee; JF Prins; L. Carter; J. Ferrante; Z. Li; D. Sehr; P.-C.Yew (eds.). "Compilación para SIMD dentro de un registro". Actas del XI Taller Internacional sobre Lenguajes y Compiladores para Computación Paralela .
- ^ Dietz, Hank. "Los algoritmos mágicos agregados" .
- ^ Padua, Flavio LC; Pereira, Guilherme AS; Neto, José P. de Queiroz; Campos, Mario FM; Fernandes, Antonio O. (2001). "Mejora del tiempo de procesamiento de imágenes grandes por paralelismo a nivel de instrucción" (PDF) . Cite journal requiere
|journal=
( ayuda ) - ^ Grabher, Philipp; Johann Großschädl; Dan Page (2009). Sobre la implementación paralela de software de emparejamientos criptográficos . Áreas seleccionadas en criptografía . Apuntes de conferencias en Ciencias de la Computación. 5381 . págs. 35–50. doi : 10.1007 / 978-3-642-04159-4_3 . ISBN 978-3-642-04158-7.
- ^ Persada, Onil Nazra; Thierry Goubier (12 a 14 de septiembre de 2004). "Aceleración del procesamiento de ráster con paralelismo de grano fino y grueso en GRASS". Actas de la Conferencia de usuarios de FOSS / GRASS 2004 .
- ^ Hauser, Thomas; TI Mattox; RP LeBeau; HG Dietz; PG Huang (abril de 2003). "Optimizaciones de código para microprocesadores complejos aplicados a software CFD". Revista SIAM de Computación Científica . 25 (4): 1461–1477. doi : 10.1137 / S1064827502410530 . ISSN 1064-8275 .
- ^ Spracklen, Lawrence A. (2001). Aplicaciones de comunicaciones y sistemas SWAR (PDF) (Ph.D.). Universidad de Aberdeen.
enlaces externos
- El agregado - SWAR: SIMD dentro de un registro