Vous êtes sur la page 1sur 37

ORDENADORES SIMD

ARQUITECTURA Y ORGANIZACIÓN DEL


COMPUTADOR
UNIVERSIDAD NACIONAL DEL CALLAO
Facultad de Ingeniería Industrial y de Sistemas
Escuela Profesional de Ingeniería de Sistemas

CURSO : Arquitetura y Organización del Computador


TEMA : Computadora SIMD

PROFESORA : Ing. Sally Torres Alvarado

ALUMNOS : ruizcastillo luisenrique


Matamoros Montañez Percy
Pérez Asencio Junior Carlos
Villagomez Saldivar Roberto

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.

La Arquitectura SIMD se basa en el concepto de paralelismo usando múltiples


unidades de proceso llamadas elementos de procesamiento (PE) y este es
capaz de realizar una acción autónomamente.

Dado que un PE no constituye una unidad de proceso central (CPU) y que no


es capaz de funcionar independientemente, el sistema es en este caso de
procesamiento paralelo y no un sistema multiprocesador

Los repertorios SIMD consisten en instrucciones que aplican una misma


operación sobre un conjunto más o menos grande de datos. Es una
organización en donde una única unidad de control común despacha las
instrucciones a diferentes unidades de procesamiento. Todas éstas reciben la
misma instrucción, pero operan sobre diferentes conjuntos de datos. Es decir,
la misma instrucción es ejecutada de manera sincronizada por todas las
unidades de procesamiento.

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.

Las computadoras SIMD se utilizan para resolver problemas científicos y de


ingeniería.

Su uso principalmente se da en los ámbitos multimedia, debido a la forma de


trabajo vectorial que también es usada, por ejemplo en desplazamiento de
gráficos 3D.
2. Introducción a SIMD

En 1966 Michael Flynn propuso un mecanismo de clasificación de las


computadoras. La taxonomía de Flynn es la manera clásica de organizar las
computadoras, y aunque no cubre todas las posibles arquitecturas, proporciona
una importante penetración en varias arquitecturas de computadoras. El
método de Flynn se basa en el número de instrucciones y de la secuencia de
datos que la computadora utiliza para procesar información. Puede haber
secuencias de instrucciones sencillas o múltiples y secuencias de datos
sencillas o múltiples. Las computadoras actuales tienen arquitectura "John Von
Neumann", para el procesamiento secuencial de la información. Es decir que
ejecutan los programas instrucción por instrucción, pero el mundo real no es
secuencial sino paralelo, es decir, varios eventos se realizan al mismo tiempo.

Fig. 2.1 Taxonomía de sistemas paralelos


El procesamiento paralelo es la ejecución de diferentes procesos en dos o más
procesadores al mismo tiempo, donde estos procesos juntos resuelven un
problema completamente. Un proceso debe entenderse como un fragmento de
código en ejecución que convive con otros fragmentos.

Se busca incrementar el rendimiento de las computadoras, solucionando


problemas en paralelo, es decir eventos que se realizan al mismo tiempo. Para
esto existen 2 tipos de arquitectura que explican dicho comportamiento: SIMD y
MIMD

Las computadoras síncronas son aquellas cuyos procesadores dependen de


un solo reloj. A estas computadoras se les conoce también como SIMD (Single
Instruction / Multiple Data).

Las computadoras asíncronas son arquitecturas que se controlan con base a


un hardware descentralizado, es decir cada procesador tiene su propio reloj. A
estas computadoras se les conoce como MIMD (Multiple Instruction / Multiple
Data).

Fig. 2.2 Taxonomía de Flynn


1

Fig. 2.3 Diagrama de comparación básico sobre las clasificaciones de Flynn

3. Historia

La primera era de las máquinas de SIMD fue caracterizada cerca


superordenadores como Cray X-MP. Estas máquinas también fueron llamadas
los “procesadores del vector.” Estas máquinas funcionaron encendido de largo
vectores, por ejemplo agregando dos vectores de 100 números cada uno.
Supercomputing se movió lejos del acercamiento de SIMD cuando MIMD los
acercamientos llegaron a ser más de gran alcance, y el interés en SIMD
disminuyó. Ordenadores más últimos, personales llegaron a ser comunes, y
llegaron a ser bastante de gran alcance para apoyar juego en tiempo real.

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.

El primer SIMD ancho-desplegado para el juego era Intel MMX extensiones a


x86 arquitectura. IBM y Motorola entonces agregados AltiVec a ENERGÍA la
arquitectura, y allí ha sido varias extensiones a los sistemas de instrucción de
SIMD para ambas arquitecturas. Todos estos progresos se han orientado hacia

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”.

Un superordenador moderno es casi siempre un racimo de las máquinas de


MIMD, que pone (corto-vector) instrucciones de SIMD en ejecución. Una
computadora de escritorio moderna es a menudo una máquina del
multiprocesador MIMD donde cada procesador puede ejecutar instrucciones
del corto-vector SIMD.

3.1. Ejemplos de SIMD en sus inicios:


 Cray X-MP (computador más potente entre 1983-1985)
 Thinking Machines (CM-2 CM-200, década de 1980)
 MassPar computers (inicios de la decada de 1990)

Fig. 3.1 Ejemplos de SIMD

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)

Un arreglo de procesadores consiste de múltiples elementos de procesamiento


bajo la supervisión de una misma unidad de control.
Un arreglo de procesadores puede manejar un único flujo de instrucción y
múltiples flujos de datos, es por esta razón que también son conocidos como
máquinas SIMD (Single instruction stream, Multiple data stream). (Fig 4.1)

Los procesadores array existen en 2 arquitecturas básicas:


 Procesadores array que utilizan memoria de acceso aleatorio.
 Procesadores asociativos que usan memorias direccionables por
contenido (o memorias asociativas).

Fig.4.1..- Ejecución SIMD

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

El funcionamiento de este tipo de sistema es el siguiente:

La Unidad de control (UC) manda una instrucción a todas las unidades de


proceso (ALU’s). Las unidades de proceso operan sobre datos diferentes pero
con la misma instrucción recibida.

Existen dos alternativas distintas que aparecen después de realizarse esta


clasificación:

a) Arquitectura Matricial (matriz de procesadores):


Varias ALU´s idénticas a las que el procesador de instrucciones asigna
una única instrucción pero trabajando sobre diferentes partes del
programa.5
b) Arquitectura vectorial con segmentación:
Una CPU única particionada en unidades funcionales independientes
trabajando sobre flujos de datos concretos.

6.1. Procesadores Matriciales

Esta arquitectura es la representativa del tipo SIMD, es decir, hay una sola
instrucción que opera concurrentemente sobre múltiples datos.

Un procesador matricial consiste en un conjunto de elementos de proceso y un


procesador escalar que operan bajo una unidad de control (UC). La UC busca y
decodifica las instrucciones de la memoria central y las manda bien al
procesador escalar o bien a los nodos procesadores dependiendo del tipo de
instrucción. La instrucción que ejecutan los nodos procesadores es la misma
simultáneamente, los datos serán los de cada memoria de procesador y por
tanto serán diferentes. Por todo esto, un procesador matricial solo requiere un
único programa para controlar todas las unidades de proceso.

La idea de utilización de los procesadores matriciales es explotar el paralelismo


en los datos de un problema más que paralelizar la secuencia de ejecución de
las instrucciones.
5
http://arqordenadores.wiki-site.com/index.php/SISD,_SIMD,_MIMD
Un tipo de datos altamente particionable es el formado por vectores y matrices,
por eso a estos procesadores se les llama matriciales. 6

6.1.1 Organización y elementos de los procesadores matriciales

Constan de un array de elementos sincronizados de proceso (ALUs) que son


controlados (en cuanto a la operación que realizan y los datos que usan) por un
módulo de control del array.

La UC tiene su propia memoria para almacenar los programas de sistema y los


de usuario.

Existe también un procesador escalar, para las operaciones SISD.

Los elementos de proceso están unidos por una red de interconexión

Fig. 6.1.1 SIMD procesador matricial

6.2. Procesadores vectoriales

Un procesador vectorial ejecuta de forma segmentada instrucciones sobre


vectores. La diferencia con los matriciales es que mientras los matriciales son
comandados por las instrucciones, los vectoriales son comandados por flujos

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).

Un procesador vectorial está compuesto típicamente por una unidad escalar y


una unidad vectorial. La parte vectorial permite que los vectores sean tratados
como números en coma flotante, como enteros o como datos lógicos. La
unidad escalar es un procesador segmentado normal y corriente. 7

Existen dos tipos de arquitecturas vectoriales:

6.2.1. Máquina vectorial con registros

En este tipo todas las operaciones vectoriales, excepto las de carga y


almacenamiento, operan con vectores almacenados en registros. Estas
máquinas son el equivalente vectorial de una arquitectura escalar de
carga/almacenamiento. La mayoría de máquinas vectoriales modernas utilizan
este tipo de arquitectura. Ejemplos: Cray Research (CRAY-1, CRAY-2, X-MP,
Y-MP y C-90), los supercomputadores japoneses (NEC SX/2 y SX/3, las Fujitsu
VP200 y VP400 y la Hitachi S820)

6.2.2. Máquina vectorial memoria-memoria

En este tipo todas las operaciones vectoriales son de memoria a memoria.


Como la complejidad interna, así como el coste, son menores, es la primera
arquitectura vectorial que se empleó. Ejemplo: el CDC.

7
http://informatica.uv.es/iiguia/AAC/AA/apuntes/aac_vector.pdf
Fig. 6.2.2 La arquitectura de un supercomputador vectorial

6.3. Arrays Sistólicos

Los procesadores sistólicos son el resultado de los avances en tecnología de


semiconductores y en las aplicaciones que requieren un amplio rendimiento.

Los arrays Sistólicos son multiprocesadores pipelinizados en los cuales los


datos se bombean en forma rítmica desde la memoria y a través de la red de
procesadores antes de ser devueltos a la memoria.

Fig. 6.3 Flujo de datos desde la memoria y hacia la memoria

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

6.3.1. Multiplicación SIMD de matrices

Muchos problemas numéricos adaptables al procesamiento paralelo pueden


formularse en términos de computaciones matriciales. La manipulación de
matrices es necesaria con frecuencia en la resolución de sistemas de
ecuaciones lineales. Entre las operaciones matriciales más interesantes se
cuentan la multiplicación, la descomposición L-U y la inversión.

Sean 𝐴 = [𝑎𝑖𝑘 ] 𝑦 𝐵 = [𝑏𝑘𝑗 ] dos matrices 𝑛 𝑥 𝑛 . La multiplicación de A por B


genera una matriz producto 𝐶 = 𝐴 𝑥 𝐵 = [𝐶𝑖𝑗 ] de dimensiones 𝑛 𝑥 𝑛 . Los
elementos de la matriz producto C están relacionados con los elementos de A y
B por:

𝐶𝑖𝑗 = ∑𝑛𝑘=1 𝑎𝑖𝑘 𝑥 𝑏𝑘𝑗 para 1 ≤ 𝑖 ≤ 𝑛 𝑦 1 ≤ 𝑗 ≤ 𝑛

6.3.2. Algoritmos de clasificación paralela sobre procesadores


matriciales

Vamos a presentar un algoritmo SIMD para clasificar n2 elementos sobre una


colección de procesadores conectados en mala (tipo Illiac-IV) en O(n) pasos de
encaminamiento y computación. Esto significa un incremento de velocidad de
O(log 2 n) con respecto al mejor algoritmo de clasificación sobre un sistema
monoprocesador, que emplea O(nlog 2 n) pasos. Supongamos un procesador
matricial con N = n2 EP idénticos inter conectados por una red de mala (figura
x-x) similar a la del Illiac-IV excepto que los EP situados en la periferia tienen
dos o tres vecinos en vez de cuatro. En otras palabras, no hay conexiones en
espiral en esta red en malla simplificada. La eliminación de las conexiones de
espiral simplificada el algoritmo de clasificación sobre el procesador matricial.
La complejidad temporal del algoritmo de clasificación se vería afectada por,
como máximo, un factor de dos si se incluyeran las conexiones espirales.

6.3.3. Cuestiones de conexión para procesamiento SIMD

Los procesadores matriciales SIMD permiten expresar explícitamente el


paralelismo en los programas de usuario. El compilador detecta el paralelismo
y genera un código objeto adecuado a su ejecución en los múltiples elementos
de proceso y en la unidad de control. Los segmentos de programa que no
pueden convertirse a formas ejecutables en paralelo se ejecutan en la unidad
de control; los segmentos de programa que pueden convertirse a formas
ejecutables en paralelo se envían a los EP y se ejecutan sincronizadamente
sobre los datos extraídos de los módulos de memoria en paralelo bajo la
dirección de la unidad de control. Para posibilitar la manipulación síncrona en
los EP, los datos se permutan y reordenan en forma vectorial, Así, para
ejecutar un programa eficazmente en un procesador matricial, debe
desarrollarse una técnica para vectorizar los códigos de programa. A
continuación vamos a examinar algunas cuestiones referentes a las conexiones
en las redes de interconexión SIMD.

Permutación y conectividad En procesamiento matricial, los datos suelen


almacenarse en módulos paralelos de memoria adoptando formas oblicuas
(asimétricas) que permiten el acceso sin conflicto a un vector de datos. Sin
embargo, los datos accedidos deben ser realineados según un orden prescrito
antes de poder ser enviados a los EP individuales para su procesamiento. Esta
alineación se implementa mediante las funciones de encaminamiento de la red
de interconexión, que también se encarga de realinear los datos generados por
los EP individuales para darles la forma asimétrica necesaria para su
almacenamiento en los módulos de memoria.

Particionamiento y reconfigurabilidad Se ha propuesto un concepto de


configuración para logra un mejor uso de la red de interconexión. Bajo este
concepto, una red es solo una configuración en la misma clase de equivalencia
topológica. Para configurar una función de permutación como una red de
interconexión, podemos asignar nombre de enlaces de entrada-salida de
manea que se realice la función de permutación en un paso libre de conflictos.
A la asignación de nombre lógicos que realizan varias funciones de
permutación sin conflictos se le denomina problema de reconfiguración. A
través del proceso de reconfiguración, la red de línea base puede realizar
cualquier permutación en un paso sin conflicto. Esto significa que el
procesamiento concurrente global podría mejorarse mediante la asignación
adecuada de las tareas a los elementos de proceso y de los datos a los
módulos de memoria.

6.4. Procesamiento matricial asociativo

Dos computadores SIMD, el STARAN de Goodyear Aerospace y el PEPE


(Parallel Element Processing Ensemble), han sido construidos alrededor de
una memoria asociativa (MA) en vez de la memoria de acceso aleatorio (RAM)
convencional. La distinción fundamental entre MA Y RAM es que la MA es
direccionable por contenidos, permitiendo accesos paralelos a múltiples
palabras de memoria, mientras que la RAM debe ser referenciada
secuencialmente mediante la especificación de las direcciones de las palabras.
El paralelismo inherente de la memoria asociativa tiene un gran impacto sobre
la arquitectura de los procesadores asociativos, una clase especial de
procesadores matriciales SIMD que operan con memorias asociativas.

6.4.1. Organizaciones de memoria asociativa


Los datos almacenados en una memoria asociativa se direccionan por sus
contenidos. En este sentido, las memorias asociativas han sido conocidas
como memorias direccionables por contenido, memorias de búsqueda paralela
y memorias multiacceso. La principal ventaja de la memoria asociativa sobre la
RAM es su capacidad para realizar operaciones de búsqueda y comparación
en paralelo. Estas operaciones son frecuentemente necesarias en muchas
aplicaciones importantes, tales como almacenamiento y recuperación de bases
de datos de rápida evolución, seguimiento de señales por radar, procesamiento
de imágenes, visión por computador e inteligencia artificial. El principal
inconveniente de la memoria asociativa es su elevado coste hardware. En la
actualidad, el coste de la memoria asociativa es muy superior a la de las
memoras RAM.

En la figura 6.4.1 se presenta el modelo de la estructura de una MA básica.

Fig. 6.4.1 Modelo estructural de RAM

9
http://ajbeas.webcindario.com/asociativa.html
7.-PROCESADORES ARRAY CON MEMORIA DE ACCESO ALEATORIO

7.1 Organización de las computadoras SIMD

Existen 2 configuraciones que difieren ligeramente.

El primer tipo de configuración es la presente en la computadora Illiac IV, cuya


estructura y configuración la podemos ver en la figura (Fig 7.1.a). Este tipo de
computadora posee 256 PEs distribuidos en 4 grupos de 8 x 8 PEs (Fig 7.1.b).

Fig. 7.1.a- Configuración en la Illiac IV

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

Fig. 7.1.b .- Cuadrante de 8 x 8 de la Illiac IV

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.

La función de la CU es decodificar todas las instrucciones y determinar dónde


deben ejecutarse las instrucciones decodificadas.
Todos los Pes realizan la misma función sincrónicamente y de forma esclava
bajo la supervisión de una misma unidad de control.

Existen 2 tipos de instrucciones:


 Instrucciones escalares, las cuales se ejecutan directamente dentro de
la UC (unidad de control).
 Las instrucciones vectoriales, las cuales se envían a los Pes para una
distribución homogénea y así alcanzar un paralelismo en las
operaciones.

Los operandos, herramientas de trabajo de las instrucciones, del tipo vectorial,


se distribuyen en las PEM antes de la ejecución paralela de los PEs.
Estos datos distribuidos pueden cargarse en las PEM desde una fuente externa
a través del bus de datos del sistema, o desde la UC en una modalidad que
utiliza el bus de control.

Las máscaras, que son enviadas por la unidad de control, permiten la


realización o no de ciertas operaciones, para ellos lleva cuenta del estado de
los Pes utilizando bits de estado asociados a los mismos.
Cada Pe puede estar en estado activo o en estado inhibido durante el ciclo de
la instrucción indicado por un vector de máscaras.
En otras palabras, no es necesario que todos los Pes participen en la ejecución
de una instrucción vectorial, solo los Pes habilitados realizan el cómputo.

El segundo tipo de configuración es la presente en el computador BSP de


Burroughs. Esta configuración difiere de la anterior en 2 aspectos:

Primero, las memorias locales pertenecientes a cada PE se reemplazan aquí


por módulos paralelos de memoria compartidos por todos los PEs mediante
una red (alignement network).

Segundo, la red de permutación de PEs se reemplaza por una red inter-PE de


memoria, que se encuentra nuevamente bajo control de la CU.
En este tipo de configuración existen n PEs y p módulos de memoria. Ambos
números no son necesariamente iguales.

7.2 Estructura interna de un PE

En la siguiente figura (Fig 7.2.a) observaremos la estructura interna de un PE:


11

Fig. 7.2.a .- Estructura interna de un PE

Di: Dirección asignada a este elemento de procesamiento.


Ii: Es un registro de índice.
Ri: Registro que apunta a otros procesadores.
Si: Actividad o inactividad para realizar un cálculo.

SIMD se caracteriza por los siguientes parámetros:

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

Ejemplificaremos una instrucción vectorial, para observar el comportamiento de


los n Pes.
Se desea calcular la suma S(k) de las primeras k componentes de un vector A
para k = 0,1,2,…,n-1
Sea A = (A0,A1,A2,…,An-1)

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

Estas sumas recursivas para n = 8 se implementaron en un procesador array N


= 8 PEs en una cantidad de pasos de [log2 n]=3.

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.

Las flechas de la figura (Fig 7.2.b) muestran las operaciones de ruteo y la


notación abreviada.

12

Fig. 7.2.b .- Calculo de la suma S(k)

∑AiaAj se utiliza indicando la suma intermedia de A(i) + A(i+1)+ ... +A(j).

En el paso 2, las sumas intermedias en R(i) son ruteadas a R(i+2) para i =


0,1,....,5.

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.

7.3 Procesador Array de estructuras Bit-Plane

Una variante de las arquitecturas de procesadores array utiliza una gran


cantidad de procesadores de un bit. En las arquitecturas bit-plane los
procesadores array se colocan en una grilla (mesh) simétrica (por ej. de 64 *
64) y se asocian con múltiples planos de bits en memoria que se corresponden
a las dimensiones de la grilla de procesadores (ver Fig. 7.3).

13

Fig. 7.3.- Procesador array de estructura bit-plane

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.

El Procesador Masivo Paralelo de Loral y el Procesador Array Distribuido de


ICL ejemplifican esta clase de arquitecturas utilizadas muy frecuentemente
para aplicaciones de procesamiento de imágenes mapeando pixels desde la
estructura planar de la memoria.

13
http://slideplayer.es/slide/3392847/
8. ARQUITECTURA DE PROCESADORES ARRAY DE MEMORIA
ASOCIATIVA

Las computadoras construidas sobre memorias asociativas constituyen un tipo


muy distintivo de máquinas SIMD que utilizan una lógica de comparación para
acceder en paralelo, de acuerdo al contenido, a los datos almacenados.

Las investigaciones sobre la construcción de memorias asociativas


comenzaron en los últimos años de la década de los 50 con el objetivo obvio de
lograr recorrer la memoria en paralelo buscando datos que coincidieran con
una clave específica.

Los procesadores de memorias asociativas “modernos” desarrollados en los 70


(por ej. El Conjunto de Elementos de Procesamiento en Paralelo –PEPE- de los
laboratorios Bell) y las arquitecturas más recientes (el procesador Asociativo de
Loral, ASPRO) han sido construidos lógicamente orientados a aplicaciones de
bases de datos tales como búsquedas y navegaciones.

La fig.8.1.a muestra las características de las unidades funcionales de un


procesador de memoria asociativa. Un controlador de programa (un
computador serial) lee y ejecuta las instrucciones invocando a un controlador
array especializado cuando se detectan instrucciones de memoria asociativa.

14

Fig. 8.1.a .- Organización de un procesador de memoria asociativa.

Registros especiales habilitan al controlador de programa y a la memoria


asociativa para compartir datos. La mayoría de los procesadores de memoria
asociativa utilizan una organización serial de bits, la cual implica operaciones

14
http://slideplayer.es/slide/3392847/
concurrentes sobre un solo bitslice para todas las palabras en la memoria
asociativa

Cada palabra de memoria asociativa, que generalmente tiene una gran


cantidad de bits (por ej. 32768) se asocia con registros especiales y una lógica
de comparación que funcionalmente constituye un procesador. Por lo tanto, un
procesador asociativo con 4096 palabras tiene efectivamente 4096 elementos
de procesamiento.
La (Fig. 8.2.b) muestra una comparación orientada a fila para una arquitectura
genérica de bit-serial. Una parte del registro de comparación contiene el valor
que debe coincidir.
Todos los elementos de procesamiento (PE) comienzan en una columna
específica de la memoria y comparan el contenido de cuatro bits consecutivos
en la fila con el contenido del registro, encendiendo un bit en el registro A para
indicar si la fila equipara o no.

En la (Fig. 8.2.c) podemos ver una operación de un OR lógico realizada entre


una columna de bits y el vector de bits en el registro A, siendo el registro B el
que recibe el resultado.
Un cero en el registro de máscara indica que la palabra asociada no debe
incluirse en esta operación.

15

Fig. 8.2.b .- Comparación orientada a fila.

15
http://slideplayer.es/slide/6344155/
16

Fig. 8.2.c .- Operación OR lógico en memoria asociativa.

9. DIAGRAMA DE BLOQUES

(Fig. 9)

-La memoria del programa es única y accesible solo por la unidad de


control.

-La unidad de control decodifica las instrucciones, ejecutando


directamente las escalares. Cuando decodifica una instrucción vectorial,
difunde la misma operación a todas las UAL, que la ejecuten
simultáneamente. Este funcionamiento síncrono limita la frecuencia de
funcionamiento.

-Los módulos de memoria almacenan los datos vectoriales. Pueden


estar asignados estática o dinámicamente a las UAL.

-Una red de interconexión permite que las UAL se comuniquen entre sí o


establece la correspondencia ente las UAL y los módulos de memoria.

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.

10. Conjunto de Instrucciones

Un conjunto/juego de instrucciones o ISA (del inglés Instruction Set


Architecture) es el grupo de instrucciones de máquina que es capaz de
entender y ejecutar un CPU 17 . Esto refiere a todas las especificaciones del
diseño particular de un computador.

Los conjuntos de instrucciones de las máquinas deben tender a poseer una


serie de propiedades, bastante ideales e imprecisas, que pueden resumirse en
las siguientes18:

 El conjunto de instrucciones de un computador debe ser completo en el


sentido de que se pueda construir un programa para evaluar una función
computable usando una cantidad de memoria razonable y empleando un
tiempo moderado, es decir, el número de instrucciones de ese programa no
debe ser demasiado elevado.
 Los juegos de instrucciones también tienen que ser eficientes, esto significa
que las funciones más necesarias deben poder realizarse usando pocas
instrucciones.
 El conjunto de instrucciones de una máquina debe ser regular, es decir
debe ser simétrico (por ejemplo, si existe una instrucción de
desplazamiento a la izquierda, debe haber otra de desplazamiento a la
derecha, etc.) y ortogonal, es decir, deben poder combinarse, en la medida
de lo posible, todos las operaciones con todos los tipos de datos y modos
de direccionamiento.
 En muchas ocasiones, también se le debe exigir a un computador que su
juego de instrucciones sea compatible con modelos anteriores
(retrocompatibilidad).

17
https://www.uclm.es/profesorado/licesio/Docencia/MIE/TEMAII.pdf

18
http://www.infor.uva.es/~bastida/OC/conjunto.pdf
19

Fig. 10.1 Esquema resumen de la idea general de un conjunto de instrucciones.

El conjunto de instrucciones es lo que determina el equilibrio que debe existir


entre el hardware y software, ya que si se tienen muchas instrucciones, el
software es más simple pero se requiere un hardware más complejo para su
funcionamiento. De manera análoga, si una maquina tiene un juego de
instrucciones muy limitado, se simplificarían mucho los circuitos de la misma,
pero como consecuencia, se tendrían programas demasiado complejos e
ineficientes. Por consiguiente, se debe tener especial cuidado para poder
obtener en lo posible la simplicidad del hardware y software. Lo mínimo que
debería tener una computadora para obtener esto son los siguientes tipos de
instrucciones:

 Instrucciones de Transferencia de Datos.


 Instrucciones Aritméticas.
 Instrucciones Lógicas.
 Instrucciones de control del flujo del programa (bifurcaciones, bucles,
procedimientos, etc.).
 Instrucciones de entrada y salida.

19
http://cmapspublic.ihmc.us/rid=1K9261Z3W-16GH56G-2MC2/ConjuntoInstrucciones.cmap
20

Fig. 10.2 Ejemplo básico de un conjunto de instrucciones.

a. Ejecución de las Instrucciones

Cuando se ejecuta un programa, el registro de la CPU, llamado contador de


programa, lleva la cuenta de la siguiente instrucción, para garantizar que las
instrucciones se ejecuten en la secuencia adecuada. La unidad de control de la
CPU coordina y temporiza las funciones de la CPU, tras lo cual recupera la
siguiente instrucción desde la memoria. En una secuencia típica, la CPU
localiza la instrucción en el dispositivo de almacenamiento correspondiente.

La instrucción viaja por el bus desde la memoria hasta la CPU, donde se


almacena en el registro de instrucción. Entretanto, el contador de programa se
incrementa en uno para prepararse para la siguiente instrucción. A
continuación, la instrucción actual es analizada por un descodificador, que
determina lo que hará la instrucción. Cualquier dato requerido por la instrucción
es recuperado desde el dispositivo de almacenamiento correspondiente y se
almacena en el registro de datos de la CPU. A continuación, la CPU ejecuta la

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

Fig. 10.3 Representación simplificada de los elementos del procesador

b. Conjuntos de Instrucciones SIMD

Un tipo de instrucción compleja que se ha vuelto muy popular recientemente es


la operación corriente de múltiples datos de una sola secuencia de
instrucciones o instrucción vector, una operación que se realiza la misma
operación aritmética con múltiples piezas de datos al mismo tiempo o SIMD.
SIMD tiene la capacidad de manipular grandes vectores y matrices en un
tiempo mínimo. Instrucciones SIMD permiten un fácil paralelización de
algoritmos comúnmente involucrados en el sonido, la imagen y el
procesamiento de vídeo. 23

Las instrucciones SIMD son ampliamente utilizadas para procesar gráficos en


3D, aunque las tarjetas gráficas modernas con embedded SIMD han tomado
gran parte de esta tarea de la CPU. Algunos sistemas también incluyen
funciones permutan que los elementos de re-pack dentro de vectores,
haciéndolos particularmente útil para el procesamiento de datos y de

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.

Un computador SIMD se compone de un conjunto de nodos de procesamiento


y un procesador escalar, todos operando bajo las órdenes de una Unidad de
Control común que centraliza el funcionamiento de toda la máquina. (Ujaldón
Martínez, 2003)24.

La Unidad de Control busca y decodifica las instrucciones convencionales y las


SIMD. Cuando llega una instrucción normal, el procesador actúa como
siempre. En cambio, cuando se trata de una instrucción SIMD, la Unidad de
Control envía señales de control a cada una de las unidades en punto flotante,
las cuales ejecutan la misma operación pero sobre distintos datos almacenados
en sus bancos de registros.

Conceptualmente, SIMD trata de explotar el paralelismo que representa el


conjunto de datos de una aplicación, en contraposición con el paralelismo a
nivel de instrucción, donde se paraleliza la secuencia de ejecución de las
instrucciones de aplicación. Por tanto, el rendimiento de un procesador con
extensiones SIMD será mucho mayor en programas con abundante cálculo
sobre vectores o arreglos de datos de grandes dimensiones. Por otra parte, el
sincronismo de instrucción inherente a la sección SIMD del procesador deja
poca flexibilidad para su diseño.

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

 Requiere menos hardware.

 1 unidad de control.

 Necesita menos memoria.

 Adecuada para programas de datos paralelos. Requiere ejecutar el


mismo programa sobre un gran número de datos.

 Menor tiempo de arranque para comunicarse con sus vecinos debido a


que posee un reloj global.

 En casos en los que hay que aplicar la misma operación a un gran


número de datos, cosa muy común en aplicaciones multimedia
(tratamiento de imágenes, sonido, video).

 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.

ii. Desventajas del uso de SIMD

Más costosa, se requiere diseñar un microchip de arquitectura especial.


También cuenta con grandes archivos de registro que aumenta el consumo de
energía y el área del chip.

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.

Actualmente, la aplicación de un algoritmo con instrucciones SIMD por lo


general requiere mano de obra humana, la mayoría de los compiladores no
generan instrucciones SIMD de un programa típico de C, por ejemplo.
Vectorización de compiladores es un área activa de investigación informática.

Consideraciones del diseño fuera de su control obstaculizan a muchos


diseñadores de SIMD. Una de estas consideraciones es el coste de adición
registros para llevar a cabo los datos que se procesarán. Uno quisiera
idealmente que las unidades de SIMD de una CPU tuvieran sus propios
registros, pero muchos son forzados por razones prácticas de reutilizar los
registros existentes de la CPU, típicamente los registros de la coma flotante.
Éstos tienden para ser 64 pedacitos largos, más pequeño que óptimos para el
uso de SIMD, y conducen a los problemas si el código procuran utilizar SIMD e
instrucciones normales de la coma flotante al mismo tiempo - en qué punto
luchan las unidades sobre los registros. Tal sistema fue utilizado en Intel
primero procura en SIMD, MMX, y los problemas de funcionamiento eran tales
que el sistema consideró muy poco uso. Sin embargo, reciente x86 diseños del
procesador de Intel y AMD (en el día noviembre de 2006, o varios meses
anteriores) han eliminado los problemas de SIMD compartido y los registros
floating-point de la matemáticas, proporcionando un banco nuevo, separado de
SIMD se colocan.

Embalar y el desempaque de los registros de los datos to/from SIMD pueden


ser desperdiciadores de tiempo en algunos usos, reduciendo la eficacia
ganada. Si cada dato (opinión, un valor de 8 pedacitos) necesita ser
recopilado/ser dispersado por separado más bien que cargando un registro
entero en una operación, es recomendable reorganizar los datos si es posible,
o considere el no usar de SIMD en todos.

Recientemente ha habido sin embargo una ráfaga de las actividades de la


investigación en las técnicas para la compilación eficiente para SIMD, mucho
permanece ser hecho. Para esa materia, el estado plus ultra para SIMD, de
una perspectiva del recopilador, es apenas comparable a ése para proceso del
vector.

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.

En las extensiones que se hacen a las arquitecturas escalares y


superescalares lo deseable sería que estas extensiones utilizaran sus propios
registros para sus operaciones, pero muchas veces por cuestiones de diseño
no es posible, entonces se suelen utilizar los registros en coma flotante ya
existentes, no tienen el tamaño adecuado para las instrucciones SIMD y no se
pueden mezclar operaciones en coma flotante con operaciones propias de
SIMD. Un ejemplo de esto son las extensiones MMX de Intel o las 3DNow! De
AMD.25

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

 Baase, S. 1983. VAX-11 Assembly Language Programming. Prentice-Hall.


 Brown, F. 1991. Processeurs RISC. L’example de l’Am29000. Masson
 De Blasi, M. 1990. Computer Architecture. Addison Wesley.
 Hennessy, J.L., & Patterson, D.A. 2003. Computer Architecture. A Quantitative
Approach. 3 ed. Morgan Kaufmann Publishers.
 Heudin, J.C., & Panetto, C. 1990. Les architectures RISC. Dunod Informatique.
 Tanenbaum, A.S. 2006. Structured Computer Organization. 5 edn. Prentice-Hall
International.

Vous aimerez peut-être aussi