Documentos de Académico
Documentos de Profesional
Documentos de Cultura
2016
Contenido
1. Abstract ................................................................................................................................ 4
2. Introducción a SIMD .......................................................................................................... 5
3. Historia ................................................................................................................................. 7
3.1. Ejemplos de SIMD en sus inicios: .............................................................................. 8
4. ARQUITECTURA SIMD................................................................................................... 8
Array Processor (Arreglo de procesadores) ....................................................................... 9
5. Características SIMD........................................................................................................ 10
6. Funcionamiento básico SIMD .......................................................................................... 11
6.1. Procesadores Matriciales .......................................................................................... 11
6.2. Organización y elementos de los procesadores matriciales ................................... 12
6.3. Procesadores vectoriales ........................................................................................... 12
6.3.1. Máquina vectorial con registros ....................................................................... 13
6.3.2. Máquina vectorial memoria-memoria............................................................. 13
6.4. Arrays Sistólicos ........................................................................................................ 14
7. Estructura y algoritmo para procesadores matriciales .....Error! Bookmark not defined.
7.1. Procesadores matriciales SIMD ...................................Error! Bookmark not defined.
7.1.1. Organizaciones de los computadores SIMD .......Error! Bookmark not defined.
7.1.2. Comunicaciones inter-EP .....................................Error! Bookmark not defined.
7.2. Redes de interconexión SIMD ......................................Error! Bookmark not defined.
7.2.1. Redes estáticas frente a redes dinámicas .............Error! Bookmark not defined.
7.3. Algoritmos paralelos para procesadores matriciales .Error! Bookmark not defined.
7.3.1. Multiplicación SIMD de matrices ........................Error! Bookmark not defined.
7.3.2. Algoritmos de clasificación paralela sobre procesadores matriciales......Error!
Bookmark not defined.
7.3.3. Cuestiones de conexión para procesamiento SIMD ......... Error! Bookmark not
defined.
7.4. Procesamiento matricial asociativo .............................Error! Bookmark not defined.
7.4.1. Organizaciones de memoria asociativa ...............Error! Bookmark not defined.
8. Computadoras SIMD y aumento de rendimiento ..........Error! Bookmark not defined.
8.2. Perspectivas de los computadores SIMD ....................Error! Bookmark not defined.
8.3. Métodos para aumentar el rendimiento ......................Error! Bookmark not defined.
8.3.1. Asignación de memoria paralela ..........................Error! Bookmark not defined.
8.3.2. Lenguajes de procesamiento matricial ................Error! Bookmark not defined.
8.3.3. Análisis de rendimiento de los procesamientos matriciales .... Error! Bookmark
not defined.
8.3.4. Organización de un computador múltiple SIMD ............. Error! Bookmark not
defined.
9. Conjunto de Instrucciones ................................................................................................ 27
9.1. Ejecución de las Instrucciones ................................................................................. 29
9.2. Conjuntos de Instrucciones SIMD ........................................................................... 30
9.2.1. Ventajas del uso de SIMD ................................................................................ 32
9.2.2. Desventajas del uso de SIMD ........................................................................... 33
9.2.3. Conjunto de Instrucciones MMX ........................Error! Bookmark not defined.
9.2.4. Conjunto de Instrucciones 3DNow! .....................Error! Bookmark not defined.
9.2.5. Conjunto de Instrucciones SSE (Streaming SIMD Extensions) ...............Error!
Bookmark not defined.
9.2.6. Conjunto de Instrucciones SSE2 ..........................Error! Bookmark not defined.
9.2.7. Conjunto de Instrucciones SSE3 ..........................Error! Bookmark not defined.
9.2.8. Conjunto de Instrucciones SSE4 ..........................Error! Bookmark not defined.
9.2.9. Conjunto de Instrucciones AVX (Extensiones Vectoriales Avanzadas) ..Error!
Bookmark not defined.
1. Abstract
En computación, SIMD (del inglés Single Instruction, Multiple Data, en español:
"una instrucción, múltiples datos") es una técnica empleada para conseguir
paralelismo a nivel de datos.
En síntesis, SIMD trata de mejorar los procesos que se dan sobre arreglos o
matrices empleando instrucciones específicas para estos, con el fin de obtener
un mejor rendimiento.
3. Historia
Esto creó una demanda total para un tipo particular de energía que computaba,
y los vendedores del microprocesador dieron vuelta a SIMD para resolver la
demanda.
1
http://es.wikipedia.org/wiki/Taxonom%C3%ADa_de_Flynn
la ayuda para los gráficos en tiempo real, y por lo tanto se orientan hacia
vectores de dos, tres, o cuatro dimensiones. Cuando las nuevas arquitecturas
de SIMD necesitan ser distinguidas las más viejas, las más nuevas
arquitecturas entonces se consideran las arquitecturas del “corto-vector”.
4. ARQUITECTURA SIMD
Las máquinas SIMD tienen una sola unidad de control que emite una
instrucción a la vez, pero tiene múltiples procesadores para ejecutarla con
varios conjuntos de datos simultáneamente.
La Illiav IV es el prototipo de máquinas SIMD. Existen máquinas SIMD
modernas y se usan para el cálculo científico.
Se divide a SIMD en 2 grupos: El primero es el de las supercomputadoras
numéricas y otras máquinas que operan con vectores, realizando la misma
operación con cada elemento del vector. El segundo es para las máquinas tipo
paralelo, como la Illiac IV, en la que una unidad de control maestra, difunde
instrucciones a muchas ALU diferentes.
2
http://www.mccullagh.org/image/10d-15/cray-supercomputer.html
http://www.mccullagh.org/image/10d-15/cray-supercomputer.html
La arquitectura SIMD se basa en el concepto de paralelismo, el cual se logra
gracias a múltiples unidades de proceso llamadas Elementos de
Procesamiento (PE).
Los PEs son capaces de ejecutar una operación especializada
autónomamente.
Esta arquitectura también llamada Array Processor (arreglo de procesadores)
es conocida debido a su capacidad de realizar una misma operación dada
sobre un gran conjunto de datos en todos los PEs.
Array Processor (Arreglo de procesadores)
Se puede observar en el gráfico que todas las PEs ejecutan una misma
instrucción (add r1,b), con diferentes tipos de datos procedentes de flujos
distintos, almacenados en la memoria M.
3
http://jgonzalez.com.ar/wp-content/uploads/2014/03/05-Arquitecturas-SIMD.pdf
Dado que un PE no es un CPU, es decir no es una unidad de procesamiento
completa, y que tampoco es capaz de funcionar independientemente, el
sistema es en este caso de procesamiento paralelo y no un sistema
multiprocesador.
5. Características SIMD
Una sola unidad de control (UC) despacha instrucciones a todos los
elementos del procesamiento por esto todas a unidades de proceso
ejecutan la misma instrucción con diferentes tipos de datos.
Algunas máquinas comerciales con esta arquitectura son el ILLIAC IV,
MPP, DAT, CM-2, MasParMP1 y MasParMP2.
Esta clase corresponde a los procesadores matriciales, existen múltiples
unidades de proceso (UP) supervisados por la misma unidad de control
(UC), todas las unidades de procesos reciben la misma instrucción
emitida por la unidad de control pero operan sobre diferentes conjuntos
de datos procedentes de flujos distintos. El subsistema de memoria
compartida puede contener múltiples módulos. 4
El procesamiento es sincrónico.
La ejecución de las instrucciones sigue siendo secuencial, es decir,
todos los elementos realizan una misma instrucción pero sobre una gran
cantidad de datos. Por ese motivo existirá concurrencia en las
operaciones dando origen a la maquina paralela.
Diferentes elementos de información son asignados a cada procesado.
Utiliza memoria distribuida.
4
http://arqordenadores.wiki-site.com/index.php/SISD,_SIMD,_MIMD
6. Funcionamiento básico SIMD
Esta arquitectura es la representativa del tipo SIMD, es decir, hay una sola
instrucción que opera concurrentemente sobre múltiples datos.
6
http://grandesistemasdecomputadores.blogspot.com/2008/02/procesadores-matriciales.html
de datos continuos. A este tipo se les considera MISD puesto que varias
instrucciones son ejecutadas sobre un mismo dato (vector).
7
http://informatica.uv.es/iiguia/AAC/AA/apuntes/aac_vector.pdf
Fig. 6.2.2 La arquitectura de un supercomputador vectorial
Una razón para elegir el término "systolic" como parte de Systolic Array puede
verse en la analogía con el sistema de circulación humano, en el cual el
corazón entrega y recibe una gran cantidad de sangre como resultado del
bombeo rítmico e ininterrumpido de pequeñas cantidades de ese fluido a través
de venas y arterias. En esta analogía el corazón corresponde a la fuente y
destino de los datos, como si fuera una memoria global; y la red de venas es
equivalente al array de procesadores y sus conexiones.
Los algoritmos sistólicos administran los cálculos de manera tal que un ítem de
dato no se usa solamente cuando es input sino también es reutilizado
moviéndose a través del pipeline en el array.8
8
http://msanchez.usach.cl/lcc/Arquitectura-SIMD.pdf
Fig. 6.3.1 Aplicaciones sobre procesadores sistólicos
9
http://ajbeas.webcindario.com/asociativa.html
7.-PROCESADORES ARRAY CON MEMORIA DE ACCESO ALEATORIO
Los PEs de un cuadrante son controlados por una unidad de control común,
como resultado de esto los PEs de dicho cuadrante pueden ejecutar la misma
operación simultáneamente.
10
La (Fig. 7.1.b) muestra como se comunican los PEs dentro del cuadrante.
10
http://ajbeas.webcindario.com/asociativa.html
Cada PE es esencialmente una ALU (Unidad Aritmético Lógica) con registros
de trabajo que le pertenecen y una memoria local PEM para el almacenamiento
de los datos distribuidos.
Observando el la (Fig 7.1.a) nos podemos dar cuenta que la CU también
cuenta con su propia memoria para el almacenamiento de programas. En ella
se cargan los programas del usuario desde el almacenamiento principal.
C = {N,F,I,M}
Siendo:
N: el número de procesadores
F: el conjunto de funciones de ruteo de datos previstos por la red de
interconexión.
I: el conjunto de instrucciones para las operaciones escalares vectoriales
de ruteo de datos y manejo de la red.
M: conjunto de máscaras que habilitan o deshabilitan a los procesadores.
Ejemplo de funcionamiento de un procesador array
11
https://sciatel.wikispaces.com/UNIDAD+CENTRAL+DE+PROCESAMIENTO
Calcularemos las siguientes n sumas:
Este vector de n sumas puede calcularse recursivamente las n-1 iteraciones
definidas como:
S(0) = A(0)
S(k) = S(k-1) + A(k) para k = 1,2,3,…,n-1
Inicialmente cada A(i) que reside en cada PEM(i) es movido al registro D(i) en
cada PE(i) para i = 0,1,....,n-1 (asumimos aquí n=N=8). En el primer paso A(i)
es ruteado desde R(i) a R(i+1) y sumado al A(i+1), obteniéndose la suma A(i) +
A(i+1) en R(i+1) para i=0,1,....,6.
12
12
http://slideplayer.es/slide/3392847/
En el paso final las sumas intermedias en R(i) son ruteadas a R(i+4) para i =
0,..,3.
Consiguientemente, el PE(k) tiene el valor final de S(k) para k = 0,1,...,7.
Cuanto más lejos se extienden las operaciones de ruteo cada vez menos Pes
son los intervinientes. Nótese que en el paso 1 PE(7) recibe pero no transmite;
en el paso 2 son los PE(6) y PE(7); en tanto que en el paso 3 son los PE(4),
PE(5), PE(6) y PE(7) los que reciben solamente.
Estos PEs que no se desea que transmitan son enmascarados durante el paso
correspondiente. Durante las operaciones de suma PE(0) permanece inhibido
en el paso 1; PE(0) y PE(1) se vuelven inactivos en el paso 2; en tanto que en
el paso 3 los PE(0), PE(1), PE(2) y PE(3) son inactivos.
13
El procesador n (Pn) situado en la grilla en la posición (x,y) opera sobre los bits
de memoria ubicados en la posición (x,y) en todos los planos de memoria
asociados.
Usualmente se proveen además operaciones del tipo de copia, enmascarado y
operaciones aritméticas que operan sobre todos los planos de memoria tanto
sobre columnas como sobre filas.
13
http://slideplayer.es/slide/3392847/
8. ARQUITECTURA DE PROCESADORES ARRAY DE MEMORIA
ASOCIATIVA
14
14
http://slideplayer.es/slide/3392847/
concurrentes sobre un solo bitslice para todas las palabras en la memoria
asociativa
15
15
http://slideplayer.es/slide/6344155/
16
9. DIAGRAMA DE BLOQUES
(Fig. 9)
16
http://es.slideshare.net/JuanTimoteoCori/tema4-52765413
-El sistema completo se gobierna desde un computador externo
“convencional” que da acceso a los periféricos y realiza la administración
del sistema.
17
https://www.uclm.es/profesorado/licesio/Docencia/MIE/TEMAII.pdf
18
http://www.infor.uva.es/~bastida/OC/conjunto.pdf
19
19
http://cmapspublic.ihmc.us/rid=1K9261Z3W-16GH56G-2MC2/ConjuntoInstrucciones.cmap
20
20
http://datateca.unad.edu.co/contenidos/309696/ECBTI_MPyMC_V_02/leccin_7_microprocesadores_de
_8_bits.html
instrucción, y los resultados se almacenan en otro registro o se copian en una
dirección de memoria determinada. 21
22
21
http://www.virtual.unal.edu.co/cursos/sedes/fundamentacion/uv00008/lecciones/computador.htm
22
http://es.ccm.net/contents/397-procesador
23
http://docsetools.com/articulos-noticias-consejos/article_130393.html
compresión. También se utilizan en la criptografía. La tendencia de la
computación de propósito general en GPU puede conducir a un mayor uso de
SIMD en el futuro.
24
Ujaldón Martínez, M. (2003). Arquitectura del PC. Microprocesadores. (Vol. I). Madrid, España:
Megamultimedia S.L. Pág. 108.
i. Ventajas del uso de SIMD
1 unidad de control.
Otra ventaja de estos sistemas es que cuando tienen que realizar una
operación con varios datos lo hacen en una sola instrucción, esto
también puede ser cierto para arquitecturas superescalares en las que
varias instrucciones se ejecutan a la vez, pero el paralelismo conseguido
por las arquitecturas SIMD es mucho mayor.
Una aplicación que puede tomar ventaja de SIMD es aquel en el que se añade
el mismo valor a un gran número de puntos de datos, una operación común en
muchas aplicaciones multimedia. Un ejemplo sería cambiar el brillo de una
imagen. Cada píxel de una imagen se compone de tres valores para el brillo de
las porciones de color rojo, verde y azul del color. Para cambiar el brillo, los
valores R, G y B se leen de la memoria, un valor se agrega (o se resta) de ellos, y
se escriben los valores que resultan se retiran a la memoria.
Con un procesador SIMD hay dos mejoras a este proceso. Por un lado los
datos se entiende que es en bloques, y un número de valores se puede cargar
todos a la vez. En lugar de una serie de instrucciones que dicen "conseguir
este pixel, ahora obtener el siguiente pixel", un procesador de SIMD tendrá una
sola instrucción que diga con eficacia que “consiga las porciones de pixeles”
(las “porciones” son un número que varía de diseño al diseño). Para una
variedad de razones, esto puede tomar mucho menos tiempo que
“consiguiendo” cada pixel individualmente, como con diseño tradicional de la
CPU.
Otra ventaja es que los sistemas SIMD típicamente incluyen sólo aquellas
instrucciones que pueden ser aplicados a todos los datos en una sola
operación. En otras palabras, si el sistema SIMD funciona mediante la carga de
hasta ocho puntos de datos a la vez, la operación de adición se aplica a los
datos que va a pasar a todos los ocho valores al mismo tiempo. Aunque lo
mismo es cierto para cualquier diseño de procesador superescalar, el nivel de
paralelismo en un sistema SIMD es típicamente mucho más alto.
Otra desventaja, como el coste de añadir registros para mantener los datos a
procesar. Además, los datos en los registros deben estar bien alineados o un
simple procesado puede ser muchos problemas. Incluso el empaquetado y
desempaquetado de datos desde hacia los registros de la arquitectura puede
aumentar el consumo de tiempo en algunas aplicaciones, reduciendo la
efectividad ganada con el paralelismo del procesado.
No todos los algoritmos se pueden vectorizar. Por ejemplo, una tarea de control
de flujo pesado como el análisis del código no se beneficiaría de SIMD.
Debido a la manera que SIMD trabaja, los datos en los registros debe bien-ser
alineado. Incluso para la corriente simple que procesa como la circunvolución
esto puede ser una tarea desafiadora.
25
http://docsetools.com/articulos-noticias-consejos/article_130190.html
Fig ii. Procesador Intel Pentium MMX, el primer procesador en incluir instrucciones
SIM
11. Bibliografía