Procesamiento Vectorial
lerondon10 de Enero de 2015
3.463 Palabras (14 Páginas)312 Visitas
INTRODUCCIÓN
Día a día las computadoras están más involucradas en las actividades humanas, están presentes en todas nuestras tareas cotidianas, permitiendo ejecutarlas de una manera más rápida y eficiente.
De la misma forma, muchas actividades industriales, económicas, militares y de investigación, requieren procesar grandes volúmenes de datos a través de numerosos y complejos cálculos, y obtener resultados en lapsos de tiempo razonables. El análisis estructural, predicción meteorológica, investigaciones nucleares y de alta energía, diagnóstico médico, simulaciones en aerodinámica o hidrodinámica, inteligencia artificial y sistemas expertos, navegación y detección, defensa, ingeniería química y genética, son algunos campos que se puede mencionar, en los que la necesidad de manejar volúmenes de datos cada vez mayores, de manera rápida y precisa, puede sobrepasar las capacidades de los computadores disponibles. Esta necesidad es el principal impulsor de computadores cada vez más poderosos y de mayores prestaciones.
Una gran cantidad de los problemas planteados en áreas como las mencionados anteriormente, se pueden expresar mediante la utilización de modelos que son expresados en matrices y vectores. Esto hace posible utilizar al máximo un tipo de arquitectura específica para esta clase de datos, y es la de los procesadores vectoriales.
Los primeros procesadores vectoriales aparecieron en la década de los 70. Su evolución tuvo un mayor auge en los siguientes veinte años, declinando tras las mejoras en los procesadores escalares, particularmente en los microprocesadores.
Actualmente la mayoría de las CPU implementan arquitecturas que tienen instrucciones características de algunos procesadores vectoriales. También muchas consolas de videojuegos y el hardware para gráficos de computadora actuales, utilizan procesamiento vectorial en sus arquitecturas.
El amplio espectro de uso, la importancia de su desarrollo y el ser la base de la mayoría de las supercomputadoras, hacen su estudio un tópico muy interesante para el estudiante de la asignatura Arquitectura del Computador, de la Universidad Nacional Abierta.
1. PROCESAMIENTO VECTORIAL
Un procesador vectorial es, básicamente, una unidad central de proceso (CPU) que tiene la capacidad de implementar un conjunto de instrucciones que operan en arreglos unidimensionales de datos. Estos arreglos son llamados vectores.
Esto lo convierte en un diseño de CPU que puede ejecutar operaciones matemáticas sobre múltiples datos de forma simultánea. Así, el término Procesamiento Vectorial toma muchos significados. En general, “Procesos que operan sobre muchas señales a la vez, las cuales están combinadas como un vector” (Vega, p. 3).
Figura 1. Procesamiento Vectorial de una sola señal. Fuente: Vega, 2011.
Si las muestras se derivan de una misma señal, tenemos la situación de procesamiento de bloques o segmentos que se ilustra en la figura anterior (Figura 1).
En un enfoque más general, el Procesamiento Vectorial consiste en operar sobre múltiples muestras provenientes de varias señales que llegan simultáneamente. Este proceso puede producirse en dos formas:
• Señales en modo flujo: En este esquema se ejecutan todos los cálculos relacionados con una muestra de entrada, y la muestra es descartada antes de que llegue la siguiente muestra de datos (Figura 2).
• Señales en modo bloque: En este tipo de procesamiento, se almacena en memoria un bloque de muestras, luego son procesadas y se produce la muestra de salida (Figura 3).
Figura 2. Procesamiento Vectorial en Modo Flujo. Fuente: Vega, 2011.
Figura 3. Procesamiento Vectorial en Modo Bloque. Fuente: Vega, 2011.
1. TAXONOMÍA DE FLYNN
Michael Flynn propuso en 1972, una clasificación compuesta por cuatro (4) categorías, establecidas en función de la multiplicidad de los flujos de datos y de instrucciones que se conjugan en la ejecución de estos sistemas, las cuales son:
• SISD (Simple flujo de inst.-simple flujo de datos): Incluye a todos los sistemas de un solo CPU. Las ejecuciones se ejecutan de forma secuencial pero puede haber segmentación. Ejemplos de esta categoría son los computadores viejos IBM 370 e IBM 7090, el VAX y el Intel 8086.
• SIMD (Simple flujo inst.-multiples flujos de datos): Comprende una gran diversidad de procesadores paralelos que ejecutan una misma instrucción sobre un conjunto de datos al unísono o solapadamente.
• MISD (Múltiples flujos inst.-simple flujo de datos): Este modelo propone la existencia de n unidades procesadoras; cada una recibe distintas instrucciones que operan sobre el mismo flujo de datos. La salida de un procesador pasa a ser la entrada del siguiente.
• MIMD (Múltiples flujos inst-multiples flujos de datos): Incluye a todos los sistemas paralelos que constan de múltiples procesadores autónomos trabajando cooperativa y coordinadamente en la solución de uno o más problemas de forma simultánea.
Los procesadores vectoriales representan una tendencia hacia el aprovechamiento del paralelismo de datos presente en las aplicaciones y por lo tanto implementan un paralelismo SIMD (Single Instruction, Multiple Data). Esta técnica permite procesar un conjunto de datos con una sola instrucción, de manera síncrona.
Las CPUs vectoriales consiguen esto usando áreas de memoria especialmente diseñadas para este propósito, denominadas registros vectoriales. Los registros vectoriales pueden ser rellenados por las instrucciones vectoriales, devolviendo resultados mucho más rápidos que los tradicionales procesadores escalares. Las aplicaciones de cálculo científico y aquellas de tratamiento de imagen, son las más beneficiadas por esta arquitectura.
Según Lanchares (s/f), desde el punto de vista arquitectónico la utilización de operaciones vectoriales presenta las siguientes propiedades:
• El cálculo sobre cada componente es independiente del cálculo de los demás.
• Una instrucción vectorial puede desplazar a un bucle de operaciones escalares sobre los elementos de un vector. De esta manera se reduce el número de instrucciones que es necesario buscar en memoria para ejecutar un cálculo.
• Cuando los elementos de un vector están en posiciones consecutivas de la memoria, el acceso a los elementos de este vector es secuencial y conocido. Esto facilita la utilización de memorias entrelazadas para acelerar los procesos (p. 28).
De lo anterior se desprende en primer término, que al ser cada resultado independiente de los demás, el procesador puede efectuar los cálculos simultáneamente; en segundo lugar hay una economía en cantidad de instrucciones al reemplazar operaciones escalares con operaciones vectoriales y por último, al realizar los accesos secuencialmente a las instrucciones vectoriales contenidas en los registros vectoriales, aumenta la eficiencia; por todas estas razones la velocidad del procesamiento se incrementa.
En la búsqueda del mejoramiento de las prestaciones computacionales, se han implementado muchas técnicas y alcanzado mejoras importantes desde la aparición del primer computador hasta nuestros días, algunas de estas técnicas están relacionadas con la tecnología y otras con la arquitectura; en el camino recorrido, el mayor beneficio se obtiene cuando interaccionan la tecnología y la arquitectura, especialmente la reducción en la escala de integración, que ha conducido a dispositivos más rápidos integrados en superficies cada vez más pequeñas.
2. SEGMENTACIÓN Y PROCESADORES VECTORIALES
En la ejecución de aplicaciones, cuando existen instrucciones que pueden realizarse en cualquier orden sin que se modifique el resultado final, éstas se podrían hacer al mismo tiempo, y se estaría en presencia del proceso denominado paralelismo a nivel de instrucción. Uno de los métodos para obtener este paralelismo es la segmentación.
La segmentación consiste en descomponer la ejecución de cada instrucción en varias etapas para poder empezar a procesar una instrucción diferente en cada una de ellas y trabajar con varias simultáneamente. Cada una de estas etapas de la instrucción usa en exclusiva un hardware determinado del procesador, de tal forma que la ejecución de cada una de las etapas en principio no interfiere en la ejecución del resto.
A nivel de ejecución de instrucciones o lenguaje de máquina, la técnica de segmentación permite la ejecución de varias instrucciones concurrentemente, esto da lugar a los procesadores escalares segmentados.
En el caso de que el procesador no pudiese ejecutar las instrucciones en etapas segmentadas, la ejecución de la siguiente instrucción sólo se podría llevar a cabo tras la finalización de la primera. El control podría implementarse en este caso a través del uso de semáforos, de manera que los procesos no produzcan errores. Por el contrario, en un procesador segmentado, respetando excepciones de dependencias de datos o uso de unidades funcionales, la siguiente instrucción podría iniciar su ejecución tras acabar la primera etapa de la instrucción actual.
El problema de la dependencia de datos y de control en la segmentación, ha sido resuelto mediante la aplicación de varias técnicas, como la anticipación y la planificación de operaciones para el caso de dependencia de datos, y la predicción o el retardo de saltos para el caso de dependencias de control.
La segmentación mejora el rendimiento de una máquina sin alterar el tiempo básico de ciclo, lo cual indica que esta técnica arquitectónica es una buena alternativa si el número de compuertas lógicas
...