Está en la página 1de 22

Instituto Tecnolgico Superior de Jerez

Arquitectura de computadoras Ingeniera en sistemas computacionales Cristian Trujillo Espinoza Misael rodriguez villagrana cristian_jz45@hotmail.com milton.9127@gmail.com Proyecto final: Investigacin unidad 4: Procesamiento paralelo
29 de noviembre del 2013 Jerez Zacatecas

ndice General
Computacin Paralela................................................................................................... 6 Tipos de Computacin .................................................................................................. 6 Taxonoma de Flynn ..................................................................................................... 7 MULTIPROCESADORES ............................................................................................. 8 EJEMPLOS DE MULTIPROCESADORES ................................................................... 8 MULTICOMPUTADORES........................................................................................... 10 Caractersticas de los multicomputadores................................................................... 10 .Ejemplos de Multicomputadores ................................................................................ 11 COMPARACION ENTRE MULTIPROCESADORES Y MULTICOMPUTADORES. .... 11 Ejemplos de computacin paralela en el mercado ...................................................... 12 El estndar abierto para la programacin paralela de GPUs y GPUs multincleo .. 12 Anatoma de openCL 1.0......................................................................................... 12 Clusters inteligentes IBM ............................................................................................ 13 Complejas soluciones de forma sencilla por IBM .................................................... 13 La mejor tecnologa de la industria, el diseo de soluciones optimizadas ............... 13 Aumentar resultados a travs de la automatizacin y la inteligencia integrada........ 13 Soluciones de extremo a extremo con soporte de extremo a extremo por IBM ....... 13 OpenMP ..................................................................................................................... 13 Compiladores que soportan openMP ...................................................................... 13 Programacin con multi-hilos (multi-threads)........................................................... 14 Ejemplo de Clster: Google ........................................................................................ 15 Funcionamiento ante una peticin ....................................................................... 15 Caractersticas ..................................................................................................... 15 Paralelismo multinivel .......................................................................................... 15 Principios del diseo de Google........................................................................... 15 Casos de estudio de computacin paralela................................................................. 15 Multiprocesadores y Procesadores multincleo .......................................................... 15 Multiprocesadores ................................................................................................... 15 Procesadores multincleo ....................................................................................... 16 Aceleradores grficos (Graphics processing unit: GPU) ............................................. 17 Bibliografa .................................................................................................................. 22

ndice de Figuras
Ilustracin 1Intel Core i7 __________________________________________ 8 Ilustracin 2 DEEP BLUE ________________________________________ 9 Ilustracin 3 Cray _____________________________________________ 10 Ilustracin 4programacion multi-hilos _______________________________ 14 Ilustracin 5 multi-hilos en un procesador multicore ____________________ 14 Ilustracin 6 Arquitectura de una GPU moderna (GeForce GTX 280) ______ 17 Ilustracin 7Arquitectura interna de un SM (Streaming Multiprocessor) _____ 18 Ilustracin 8 Asignacin de bloques a los SMs (Streaming Multiprocessor) de un TPC ______________________________________________________ 19 Ilustracin 9 Single Instruction Multiple Thread _______________________ 19 Ilustracin 10 Arquitectura GPU Fermi . 16 SM rodeados de una memoria cach L2 comn _______________________________________________ 20

ndice de Tablas
Tabla 1 Lista de mquinas ms potentes segn el criterio utilizado por la lista TOP500 ............................................................................................................ 11 Tabla 2. Comparacin Multiprocesador y Multicomputador ............................. 11

Introduccin
La tecnologa de computadoras ha progresado increblemente en los ltimos cincuenta aos. En 1945 no haba computadoras con programa almacenado. Hoy, con menos de mil dlares es posible comprar una computadora personal con ms prestaciones, ms memoria principal y ms memoria en disco que una computadora que en 1965 costaba un milln de dlares. Desde 1985 ha habido una media-docena de nuevas mquinas cuya introduccin aparentaba revolucionar la industria de la informtica; sin embargo estas revoluciones slo fueron ilusorias, porque alguien ms construy una computadora con un mejor rendimiento. El concepto de arquitectura en el entorno informtico proporciona una descripcin de la construccin y distribucin fsica de los componentes de la computadora. La arquitectura de una computadora explica la situacin de sus componentes y permite determinar las posibilidades de que un sistema informtico, con una determinada configuracin, pueda realizar las operaciones para las que se va a utilizar. Cualquier usuario que desee adquirir un sistema informtico, tanto si es una gran empresa como un particular, debe responder a una serie de preguntas previas: qu se desea realizar con el nuevo sistema informtico? Cules son los objetivos a conseguir? Qu software ser el ms adecuado para conseguir los objetivos marcados? Qu impacto va a suponer en la organizacin (laboral o personal) la introduccin del nuevo sistema informtico? Finalmente, cuando se haya respondido a estas preguntas, el usuario tendr una idea aproximada de los objetivos que han de cumplir los diferentes sistemas informticos a evaluar.

Computacin Paralela
La computacin paralela es una tcnica de programacin en la que muchas instrucciones se ejecutan simultneamente. Se basa en el principio de que los problemas grandes se pueden dividir en partes ms pequeas que pueden resolverse de forma concurrente (En paralelo). (http://es.scribd.com/, 2010). La computacin paralela emplea elemento de procesamiento mltiple simultneamente para resolver un problema. Esto se logra dividiendo el problema en partes independientes de tal manera que cada elemento de procesamiento pueda ejecutar su parte de algoritmo a la misma vez que los dems. Los elementos de procesamiento pueden ser diversos e incluir recursos tales como un nico ordenador con muchos procesadores, varios ordenadores en red, hardware especializado o una combinacin de los anteriores (http://es.scribd.com/, 2010).

Tipos de Computacin
Existen varios tipos de computacin paralela: paralelismo a nivel de bit, paralelismo a nivel de instruccin, paralelismo de datos y paralelismo de tareas otra clasificacin es segn la taxonoma de Flynn. Paralelismo a nivel de bit es una forma de computacin paralelo basado en el aumento de tamao de procesador de palabra. Desde el advenimiento de la tecnologa de fabricacin en gran escala de integracin muy chip de computadora en la dcada de 1970 hasta alrededor de 1986, los avances en arquitectura de computadores se realizaron mediante el aumento de paralelismo a nivel de bit. El aumento del tamao de la palabra se reduce el nmero de instrucciones del procesador debe ejecutar con el fin de realizar una operacin en variables cuyos tamaos son mayores que la longitud de la palabra. (http://centrodeartigos.com/, 2013) Paralelismo a nivel de Instruccin. Aparece de forma natural como consecuencia del paradigma del producto/consumidor que implementa donde una etapa del procesador produce como salida unos datos que son consumidos por la etapa adyacente, quien a su vez juega el papel de productora para la siguiente, formando una cadena que se convierte de forma natural en un procesador segmentado. (Martnez, 2005) Paralelismo de Datos: Cuando el modelo de ejecucin se concreta sobre vrtices o los pixeles de una aplicacin grfica, el paralelismo solo queda limitado por los recursos hardware que podamos replicar. La renderizacin tiene definidos sus operadores de forma unaria, es decir, se aplica sobre cada vrtice y/o pixel de forma individual, poniendo en bandeja su computacin simultnea. Este paralelismo se manifiesta en
6

la CPU en forme de superescalaridad y procesamiento vectorial de cierto operandos. (Martnez, 2005) Paralelismo de Tareas: En un entorno multihebra, el procesador puede soportar la conexin de varios clientes y asignar a cada uno un subconjunto de banco de registros para que sus flujos de datos atraviesan el cauce segmentado de forma disjunta. Esta forma de paralelismo le queda algo grande a la CPU en su estado actual de evolucin y no lo lleva a la prctica salvo en ocasiones puntuales en que pueda trabajar de forma desacoplada y simultnea. (Martnez, 2005).

Taxonoma de Flynn
Considera como caractersticas esenciales el nmero de flujo de instrucciones y el nmero de flujos de datos. La clasificacin incluye equipos SISD (Single Instruction Single Data), SIMD (Single Instruction Multiple Data), MISD (Multiple Instruction Single Data), MIMD (Multiple Instruction Multiple Data). (Andrew S. Tanenbaum, 1998). (Andrew S. Tanenbaum, 1998) SISD (Single Instruction Single Data: Un flujo de instrucciones y un flujo de datos) Posee un nico procesador

SIMD (Single Instruction Multiple Data: Un flujo de instrucciones y varios flujos de datos) Se refiere a ordenar procesadores con una unidad de instruccin que Busca una instruccin. Incluye a varias unidades de datos para que lleven a cabo en paralelo cada una con sus propios datos. Son tiles para los cmputos que repiten los mismos clculos en varios conjuntos de datos (Andrew S. Tanenbaum, 1998).

MISD (Multiple Instruction Single Data: Un flujo de varias instrucciones y un solo flujo de datos) Esta estructura no ha sido implementada. (Andrew S. Tanenbaum, 1998)

MIMD (Multiple Instruccin Multiple Data: un grupo de computadoras independientes, cada una con su propio contador del programa y datos) Un conjunto de procesadores ejecuta simultneamente secuencia de instrucciones diferentes con conjuntos de datos diferentes. No son ms que mltiples CPU independientes que operan como un sistema mayor (Andrew S. Tanenbaum, 1998) Tanto los Multiprocesadores como las multicomputadoras son mquinas MIMD. (Andrew S. Tanenbaum, 1998)
7

MULTIPROCESADORES
Un multiprocesador es un sistema de cmputo en el que dos o ms CPUs comparten pleno acceso a una RAM comn. Un programa que se ejecuta en cualquiera de las CPUs ve un espacio de direcciones virtual normal. La nica propiedad inusitada de este sistema es que la CPU puede escribir algn valor en una palabra de la memoria, leer despus esa palabra y obtener un valor distinto (por que otra CPU lo modifico). Con la organizacin correcta, esta propiedad constituye la base de la comunicacin entre procesadores. Una CPU escribe datos en la memoria y otra los lee. Diseo que no se encuentran en ordenadores monoprocesador. Estos problemas derivan del hecho de que dos programas pueden ejecutarse simultneamente y, potencialmente, pueden interferirse entre s. Concretamente, en lo que se refiere a las lecturas y escrituras en memoria. Existen dos arquitecturas que resuelven estos problemas La arquitectura NUMA, donde cada procesador tiene acceso y control exclusivo a una parte de la memoria. La arquitectura SMP, donde todos los procesadores comparten toda la memoria. Esta ltima debe lidiar con el problema de la coherencia de cach. Cada microprocesador cuenta con su propia memoria cache local. De manera que cuando un microprocesador escribe en una direccin de memoria, lo hace nicamente sobre su copia local en cach. Si otro microprocesador tiene almacenada la misma direccin de memoria en su cach, resultar que trabaja con una copia obsoleta del dato almacenado; Para que un multiprocesador opere correctamente necesita un sistema operativo especialmente diseado para ello. La mayora de los sistemas operativos actuales poseen esta capacidad. (Tanenbaum, 2003)

Ilustracin 1Intel Core i7

EJEMPLOS DE MULTIPROCESADORES
DEEP BLUE Deep Blue fue una computadora de IBM que jugaba al ajedrez. Su nombre se podra traducir al espaol como Azul Oscuro o Azul Profundo. La segunda de las traducciones es ms acertada, ya que se emplea un algoritmo de inteligencia artificial de la familia Minimax. La fuerza de juego de estos programas de juego automtico es mayor cuanto mayor sea la profundidad (nmero de movimientos futuros) hasta la que llega la exploracin, y por tanto
8

mayor el nmero de nodos. De este modo, el nombre Deep Blue es un juego de palabras que relaciona el azul (color corporativo de IBM) con la gran profundidad de exploracin gracias a la potencia de su hardware. Deep Blue fue mejorando y jug de nuevo contra Kasparov en mayo de 1997, ganando el encuentro a 6 partidas por 35-25, lo que lo convirti en la primera computadora en derrotar a un campen del mundo vigente, en un encuentro con ritmo de juego de torneo estndar. El encuentro concluy el 11 de mayo. El sistema saca su fuerza de juego principalmente en la fuerza bruta que calcula el sistema central. Era una potencia paralela, de 30 nodos, RS/6000, SP-based el sistema informtico realzado (mejorado) con 480 VLSI con el objetivo especial de jugar al ajedrez. Su programa de juego de ajedrez fue escrito en C y corri bajo el sistema operativo AIX. Era capaz de calcular 200 millones de posiciones por segundo, dos veces ms rpido que la versin de 1996. En junio de 1997, Deep Blue era el 259 superordenador ms poderoso, capaz de calcular 11.38 gigaflops, aunque toda esta potencia no estaba pensada en realidad para jugar al ajedrez. (http://arquitecturacomp.wordpress.com/, 2009)

Ilustracin 2 DEEP BLUE

CRAY La Cray XD1 est basada en la arquitectura de Conexin Directa entre Procesadores (DCP) lo que permite interconectar muchos procesadores como uno solo, optimizando las aplicaciones que hacen uso del envo de mensajes, enlazando un bloque de procesadores al siguiente a travs de interconexiones (propietarias) de alto desempeo, eliminando la contencin de la memoria compartida y de los cuellos de botella en los dispositivos PCI. La Cray XD1 es un sistema modular cuya unidad base es el chasis. En un gabinete se pueden instalar hasta 12 chasis, integrando mltiples gabinetes es posible integrar cientos de procesadores en un nico sistema. Las caractersticas del equipo son las siguientes: HARDWARE 216 Procesadores AMD Opteron 275, x8664, 2.2 GHzz 216 Gbytes DDR 400 registered ECC de memoria RAM Total 4 Tbytes de almacenamiento principal 1 Tbyte de registros de memoria accesibles por procesador
9

Interconexion tipo Rapid Array Interconnect 1.7 s Latencia MPI entre procesadores Rendimiento Terico Pico 0.95TFlops (http://arquitecturacomp.wordpress.com/, 2009)

Ilustracin 3 Cray

MULTICOMPUTADORES
Un multicomputador es un ordenador por n procesadores cada uno de ellos con acceso exclusivo a un banco de memoria, denominada memoria local a ese procesador. Los diversos procesadores estn conectados por medio de una red de interconexin. Esta red se configura de diversas formas desde la topologa totalmente conectada (donde cada procesador se conecta con los restantes procesadores hasta topologas ms sencillas como hipercubo anillo, etc.). Se denominada nodo de un multicomputador al conjunto formado por el procesador la memoria local y la circuitera de comunicacin con otros nodos. Es habitual considerar una estructura homognea en los multicomputadoras, lo que se traduce en que todos los nodos son idnticos. En nuestro caso tambin lo vamos a considerar as (Carrasco, 1993).

Caractersticas de los multicomputadores


La memoria es privada (es decir, cada procesador tiene un mapa de direcciones propio que no es accesible directamente a los dems). La comunicacin entre procesadores es por paso de mensajes a travs de una red de interconexin. En un multicomputador, cada nodo es una computadora clsica. Los nodos colaboran para resolver juntos un mismo problema (ejecutar la misma aplicacin). La comparticin de datos es explcita, ya que el acceso a datos comunes es por paso de mensajes.

10

Ejemplos de Multicomputadores
El proyecto TOP500 es un ranking de los 500 supercomputadores ms poderosos del mundo. Esta lista esta recopilada por Hans Meuer de la universidad de Mannhelm (Alemania). Jack Dongarra de la Universidad de Tennessee (Knoxville) y Erich Strumaier y Horst Simon del centro NERSC/LAWRENCE Berkeley National Laboratory. El proyecto se inici en 1993 y publica una lista actualizada cada seis meses. La primera actualizacin de cada ano se hace en junio, conociendo con la International Supercomputer Conferencie y la segunda actualizacin en la IEE Supercomputer Conferencie. (Grama, Gupta, & Karypis, 2003)

Tabla 1 Lista de mquinas ms potentes segn el criterio utilizado por la lista TOP500

COMPARACION ENTRE MULTIPROCESADORES Y MULTICOMPUTADORES.


Tabla 2. Comparacin Multiprocesador y Multicomputador

Multiprocesadores
Poseen arquitectura d Memoria Compartida (Andrew S. Tanenbaum, 1998) Se componen de un arreglo de procesadores y un banco de memoria comn conectados a travs de un bus rpido o uno de los varios tipos de red de interconexin dinmica multietapas (Andrew S. Tanenbaum, 1998)

Multicomputadores
Poseen arquitectura Memoria Distribuida (Carrasco, 1993) Se compone de un arreglo de procesadores cada uno con su propia memoria local, interconectados en un esquema esttico

11

Los procesadores se comunican mediante la lectura o escritura a la memoria comn o compartida (Andrew S. Tanenbaum, 1998). Pueden ejecutar simultneamente varios hilo pertenecientes a un mismo proceso o bien a procesos diferentes (Andrew S. Tanenbaum, 1998)

Los procesadores se comunican mediante l envi y recepcin de mensaje Posee una mayor escalabilidad quiere decir capacidad para responder a cargas de trabajo creciente (http://prezi.com/, 2010)

Ejemplos de computacin paralela en el mercado


El estndar abierto para la programacin paralela de GPUs y GPUs multincleo OpenCL (lenguaje informtico abierto) es el primer estndar de programacin gratuito y abierto para la informtica general en sistemas heterogneos. OpenCL permite que los desarrolladores aprovechen su costosa inversin en cdigos fuente y gestionen con facilidad las CPUs con varios ncleos y las ltimas GPUs, como las que ofrece AMD. (AMD, 2013) Anatoma de openCL 1.0 La especificacin openCL 1.0 consta de las siguientes tres partes: la especificacin del lenguaje, la API de nivel de plataforma y la API de rutina. (AMD, 2013) La especificacin del lenguaje describe: la sintaxis y la interfaz de programacin para los kernels de escritura que se ejecutan en aceleradores compatibles, como las GPUs y las CPUs multincleo de AMD. El lenguaje usado se base en un subconjunto de iso c99. C fue elegido como la base de desarrolladores. Para favorecer la acogida en diferentes plataformas, se defini una precisin numrica IEEE754 para todas las operaciones de puntos flotantes, as como una amplia variedad de funciones integradas. El desarrollador tiene la opcin de precompilar su kernel openCL o dejar que la rutina openCL compile los kernels a demanda. (AMD, 2013) La API del nivel del lenguaje: concede al desarrollador acceso a rutinas que preguntan por el nmero y tipos de dispositivos en el sistema. El desarrollador puede entonces seleccionar e iniciar los dispositivos informticos para ejecutar apropiadamente su carga de trabajo. Es en este nivel donde se crean las solicitudes de contextos informticos y colas para l envi de tareas y transferencia de datos. (AMD, 2013) Finalmente, la API de rutina permite al desarrollador ordenar los kernels para su ejecucin y es responsable de la gestin de los recursos informticos y de memoria en el sistema OpenCL. (AMD, 2013)

12

Clusters inteligentes IBM Complejas soluciones de forma sencilla por IBM Implementacin de soluciones para la informtica tcnica, computacin de alto rendimiento (HPC), entornos de Analytics y de la nube puede ser una carga significativa sobre TI. Intelligent Clster aprovecha dcadas de experiencia de IBM para reducir la complejidad de la implementacin con soluciones preintegradas, entregados, y apoyados totalmente que coinciden con los mejores componentes disponibles en la industria con el diseo de soluciones optimizadas. Con IBM Intelligent Clster, los clientes pueden centrar sus esfuerzos en maximizar el valor de negocio, en lugar de consumir valiosos recursos para disear, optimizar, instalar y soportar la infraestructura necesaria para satisfacer las demandas del negocio. (ibm, 2013) La mejor tecnologa de la industria, el diseo de soluciones optimizadas Soluciones inteligentes Clster cuentan lder en la industria de IBM System x servidores, almacenamiento, software y componentes de terceros que permiten una amplia gama de la tecnologa dentro de una solucin integrada y entregado. IBM pone a prueba a fondo y optimiza cada solucin para la confiabilidad, la interoperabilidad y el rendimiento mximo, as que los clientes pueden desplegar rpidamente el sistema y empezar a trabajar para alcanzar sus objetivos de negocio. (ibm, 2013) Aumentar resultados a travs de la automatizacin y la inteligencia integrada Los clientes estn ampliando el uso de la informtica tcnica y HPC para resolver problemas complejos a una escala ms pequea, y las organizaciones ms pequeas por lo general carecen de los recursos dedicados necesarios para implementar y administrar sistemas de clster con eficacia. Como parte integral de la cartera de IBM Intelligent Clster, la solucin de gestin integral de IBM plataforma HPC permite a los clientes ponen rpidamente que el sistema funcione con el mnimo esfuerzo y habilidad. Plataforma HPC optimiza los recursos de forma automtica para maximizar la utilizacin y las de usar sencillas herramientas basadas en web hace la implementacin de aplicaciones y una administracin sencilla. (ibm, 2013) Soluciones de extremo a extremo con soporte de extremo a extremo por IBM Soluciones inteligentes de racimo estn construidos, probados, entregados e instalados por IBM, y apoyados en una sola solucin en lugar de ser tratados como cientos de componentes individuales. IBM proporciona, apoyo nico punto de contacto a nivel de solucin que incluye tanto IBM como componentes de terceros para ofrecer la mxima disponibilidad del sistema durante toda la vida del sistema, por lo que los clientes pueden dedicar menos tiempo a los sistemas y ms tiempo de entrega de resultados el mantenimiento. (ibm, 2013) OpenMP Compiladores que soportan openMP Algunos de los compiladores que tienen soporte para openMP son:
13

GNU compilar collection Gcc(versin 4.3.2) Intel c++ and fortran compilers( version 10.1) Microsoft visual studio profesional(version 2008) Microsoft visual studio Express (version 2012) (vargas, 2012)

Programacin con multi-hilos (multi-threads) A la ejecucin secuencial de una conjunto de instrucciones se le conoce como un hilo de Procesamiento o thread.

Ilustracin 4programacion multi-hilos En las computadoras multi-core logra la mejor eficiencia cuando cada core ejecuta slo un thread.

Ilustracin 5 multi-hilos en un procesador multicore Cuando se paraleliza no todos los threads terminan al mismo tiempo. Dentro de un programa, cada thread posee sus propios registros de control y su propio stack de datos, mientas que comparte el uso de las regiones de memoria heap y data con los dems threads del programa. (vargas, 2012)

14

Con esto nos encontramos que la programacin en paralelo es muy importante hoy en da para optimizar los procesadores multi ncleo ya que hoy en da estos son muy importantes para seguir avanzando. Y as obteniendo procesadores multincleo ms potentes y eficientes ya que son el alma de nuestra mquina. (vargas, 2012) Ejemplo de Clster: Google Funcionamiento ante una peticin Seleccin del servidor Google que atender la peticin (balanceo de carga basado en DNS entre varios Clusters) Bsqueda en un ndice invertido que empareja cada palabra de bsqueda con una lista de identificadores de documentos Los servidores de ndice intersectan las diferentes listas y calculan un valor de relevancia para cada documento referenciado (establece el orden de los resultados) Los servidores de documentos extraen informacin bsica (ttulo, URL, sumario, etc.) de los documentos a partir de los identificadores anteriores (ya ordenados) Caractersticas Paralelismo multinivel A nivel de peticin: Se resuelven en paralelo mltiples peticiones independientes. A nivel de trmino de bsqueda: Cada trmino de bsqueda puede chequearse en paralelo en los servidores de ndice. A nivel de ndice: El ndice de los documentos est dividido en piezas que comprenden una seleccin elegida aleatoriamente de documentos. Principios del diseo de Google Fiabilidad hardware: Existe redundancia a diferentes niveles, como alimentacin elctrica, discos magnticos en array (RAID), componentes de alta calidad, etc. Alta disponibilidad y servicio: Mediante la replicacin masiva de los servicios crticos Preferencia en precio/rendimiento frente a rendimiento pico: Mltiples servidores hardware de bajos costes configurados en clster. PCs convencionales: Uso masivo de PCs convencionales frente a hardware especializado en alto rendimiento. (icaroeii, 2012)

Casos de estudio de computacin paralela Multiprocesadores y Procesadores multincleo Multiprocesadores Los multiprocesadores con memoria compartida (o simplemente multiprocesadores) son plataformas compuestas por varios procesadores completos que disponen de una memoria comn accesible mediante instrucciones hardware (en cdigo mquina). Existen dos posibilidades en cuanto la forma en que se realiza el acceso a la memoria en estas plataformas:
15

SMP (Symmetric Multiprocessor): El coste de acceso a cualquier posicin de la memoria es uniforme. NUMA (Non-Uniform Memory Acces): La memoria est fsicamente distribuida entre los procesadores, de modo que cada procesador dispone de una memoria local de acceso ms rpido que el acceso a la memoria local de otro procesador.

Debido a la simplicidad del principio en el que estn fundamentados (replicacin completa de procesadores), los multiprocesadores fueron una de las primeras arquitecturas paralelas que se disearon. La facilidad de su programacin, basada en el paradigma de variables compartidas (habitualmente, accesible mediante hebras de ejecucin o herramientas de alto nivel para la paralizacin de bucles) hace prever que seguirn siendo una plataforma paralela vlida en los prximos aos. La principal crtica que se hace a los multiprocesadores es su escasa escalabiliadad desde el punto de vista hardware. A medida que aumenta el nmero de procesadores, la memoria en el caso de SMP o la red de interconexin en las arquitecturas NUMA, se transforma en un cuello de botella. Sin embargo el nmero de procesadores que pueden soportar eficientemente estas plataformas es ms que suficiente para muchas aplicaciones. (Snchez, 2010) Procesadores multincleo Los procesadores multincleo (multicore processors o chip multiprocessors) incluyen en un slo chip varias unidades de proceso independientes, denominadas ncleos (cores). Cada ncleo es una unidad operacional completa, es decir, puede ser un procesador con tcnicas sofisticadas de paralelismo y/o segmentacin. Los problemas de disipacin del calor y consumo de energa de la tecnologa actual provocaron que a partir de 2005, los principales fabricantes de procesadores comenzaran a incorporar diseos multincleo para seguir transformando las mejoras en la escala de integracin dictada por la ley de Moore, en un mayor rendimiento de sus productos. En la actualidad, los procesadores multincleo incluyen un reducido nmero de ncleos (entre cuatro y ocho en la mayora de los casos9), pero se espera que en un futuro prximo esta cantidad se vea aumentada considerablemente. Los procesadores multincleo, si bien pueden programarse del mismo modo que los multiprocesadores, poseen caractersticas propias que los hacen diferentes: Las tendencias de diseo apuntan a procesadores multincleo heterogneos, con ncleos de distinta capacidad y/o naturaleza integrados en el mismo sistema. Las previsiones para los procesadores multincleo apuntan a cientos de ncleos en un chip, frente a los multiprocesadores que, en sus configuraciones comerciales ms frecuentes, no superan los 16 32 procesadores. La organizacin habitual de los procesadores multincleo implica comunicaciones entre procesos mucho ms eficiente (menor latencia, mayor ancho de banda y consumo ms reducido) cuando los datos residen dentro del propio chip. Esta economa no es posible en los
16

multiprocesadores y tampoco en los procesadores multincleo cuando los datos residen en niveles de memoria fuera del chip. (Snchez, 2010)

Aceleradores grficos (Graphics processing unit: GPU) Los procesadores grficos (Graphics Processing Units o GPU) son arquitecturas que, en un principio, fueron diseadas para el procesamiento de imgenes grficas. En sus orgenes, estaban formados por un cauce segmentado cuyas etapas realizaban tareas fijas, explotando as el paralelismo a nivel de tareas y tambin el paralelismo a nivel de datos, ya que en cada etapa se trabajaba sobre varios datos a la vez. El rpido avance, tanto en la programabilidad de los procesadores grficos como en su flexibibilidad, ha permitido utilizarlos para resolver un amplio rango de complejos problemas con altas necesidades computacionales. Es lo que se conoce como GPGPU (General-Purpose Computing on the GPU). La figura muestra la arquitectura tpica de una GPU actual. Est compuesta por un nmero escalable de multiprocesadores paralelos (SMs). Estos multiprocesadores se agrupan de tres en tres (o de dos en dos en arquitecturas ms antiguas) en lo que se llama Clster de Procesado de Hilos (TPC). El nmero de SMs vara desde las arquitecturas ms antiguas, hasta las ms modernas y de mayor gama. (nividia, nividia, 2010)

Ilustracin 6 Arquitectura de una GPU moderna (GeForce GTX 280)

El diseo interno de cada SM es similar para todas las versiones, cada SM cuenta con 8 procesadores escalares (SPs), lo que hace un total de 240 ncleos en las tarjetas ms modernas; 2 Unidades Especiales (SFUs), capaces de realizar operaciones en punto flotante. Tambin cuenta con una unidad de
17

multiplicacin y suma (MAD) y una unidad adicional de multiplicacin (MUL). Los ocho procesadores de un multiprocesador comparten la unidad de bsqueda y lanzamiento de instrucciones de forma que se ejecuta la misma instruccin al mismo tiempo en los ocho procesadores. La capacidad de cmputo de los procesadores vara en funcin del modelo, pero suelen funcionar a 1.3Ghz en la mayora de modelos. Desde el punto de vista de la memoria, cada SM cuenta con tres mdulos de memoria on-chip. La primera, una memoria compartida de lectura/escritura que ofrece un tiempo de acceso similar al de un registro. La segunda y tercera se corresponden con dos cachs de solo lectura: una de constantes y otra de texturas. Estos elementos se muestran en la ilustracion7.

Ilustracin 7Arquitectura interna de un SM (Streaming Multiprocessor) A nivel global, la tarjeta grfica cuenta hasta con 6 GB de memoria dedicada, en los nuevos modelos Fermi. Actualmente la comunicacin de la GPU con la CPU se realiza a travs de un bus PCI-Express. (nividia, tesla, 2010) La ejecucin de los hilos en la GPU no se lleva a cabo de forma independiente. El planificador de hilos mostrado en la figura3 planifica y distribuye bloques de hilos entre los SM. Los threads son asignados a los SMs en grupos llamados bloques (mximo 8 bloques por SM). El multiprocesador crea, gestiona y ejecuta hilos concurrentes en el hardware sin sobrecoste de planificacin o cambios de contexto. Mapea cada hilo a un procesador, y cada hilo se ejecuta de forma independiente con su propia direccin de instruccin y registros de
18

estado. Este nuevo modelo de ejecucin se llama SIMT (Single Instruction Multiple Thread) (ver figura 8). En primer lugar, el multiprocesador divide los bloques de hilos en grupos de 32 hilos llamados warp. A la hora de lanzar una nueva instruccin, la unidad de planificacin, selecciona un warp disponible y lanza la misma instruccin para todos los hilos de ese warp.

Ilustracin 8 Asignacin de bloques a los SMs (Streaming Multiprocessor) de un TPC Ya que hay 8 SPs por SM, se tardan cuatro ciclos en ejecutar una instruccin de un warp. Las instrucciones de salto suponen un problema ya que hilos de un mismo warp pueden tomar caminos de ejecucin distintos. En este caso, la ejecucin se serializa, ejecutando primero los hilos de un camino y despus los hilos del otro. Adems existen instrucciones para sincronizar todos los hilos de un mismo bloque1, haciendo que warps enteros detengan su ejecucin hasta que todos los warps del bloque alcancen el mismo punto de ejecucin. (Snchez, 2010) (nividia, nividia, 2010)

Ilustracin 9 Single Instruction Multiple Thread La arquitectura SIMT es similar a la arquitectura vectorial SIMD (Single Instruction Multiple Data) en el sentido en que una instruccin controla varios elementos de procesado. Sin embargo, una diferencia clave es que la organizacin de los vectores SIMD exponen el ancho del vector al software,
19

mientras que desde el punto de vista SIMT, las instrucciones especifican la ejecucin y comportamiento de un nico hilo. A diferencias de las mquinas SIMD, SIMT permite al programador describir paralelismo a nivel de hilo para hilos independientes, as como paralelismo a nivel de datos para hilos coordinados. El programador puede ignorar el comportamiento SIMT para el correcto funcionamiento de su cdigo, sin embargo es un detalle muy importante para el rendimiento. (nividia, nividia, 2010) Las nuevas GPU de NVIDIA llamadas Fermi (ver figura 5), esta implementada con 3 millones de transistores, cuenta con hasta 512 ncleos CUDA organizados en 16 SM de 32 ncleos cada uno. Un ncleo es capaz de ejecutar una instruccin de punto flotante o entero por ciclo de reloj de un hilo. A diferencia de arquitecturas anteriores es capaz de ejecutar varios kernels en paralelo aadiendo otro planificador, tiene un sistema de deteccin de errores, una nueva memoria cach para implementar algoritmos que no podan hacer un uso eficiente de la memoria compartida, mayor memoria compartida y global, etc. Fermi proporciona la capacidad de un superordenador por tan slo una dcima parte del coste y una vigsima parte del consumo de energa de los tradicionales servidores basados en CPUs. (nividia, nividia, 2010)

Ilustracin 10 Arquitectura GPU Fermi. 16 SM rodeados de una memoria cach L2 comn

20

Conclusin
En esta esta investigacin se concluye la necesidad de la computacin paralela en las computadoras debido al crecimiento del mercado y a la necesidad de computadoras ms potentes. Debido a la necesidad de los clientes en obtener maquinas con componentes de procesamiento ms potentes para obtener un mejor rendimiento de las maquinas en el rea que las ocupen. Ya sea para un diseador grfico o para un arquitecto o para consolas de videojuegos. Otro campo en el que la computacin paralela es muy necesaria es en la consola de videojuegos ya que trabajan con varios procesadores en paralelo lo que hace a las consolas ms rpidas y eficientes. Por eso entendemos la necesidad de la computacin paralela con el aumento de clientes que ocupan procesadores ms potentes ms grandes y eficientes ya que cada da hay ms dispositivos que se conectan al internet. Un ejemplo los servidores de google son unos servidores muy grandes ya que su motor de bsqueda en el internet es el ms famoso de la tierra tal vez sin la computacin paralela esto no podra ser posible porque gracias a esto podemos tener tecnologas ms eficientes como los servidores de google.

21

Bibliografas
Bibliografa
AMD. (2013). AMD. Obtenido de AMD: http://www.amd.com/es/products/technologies/streamtechnology/opencl/Pages/opencl.aspx Andrew S. Tanenbaum, A. S. (1998). Sistemas operativos: diseo e implementacin. Carrasco, J. M. (1993). Grama, A., Gupta, A., & Karypis, G. y. (2003). Introduction to Parallel Computing. Pearson: Addison Wesley. http://arquitecturacomp.wordpress.com/. (2009). http://centrodeartigos.com/. (2013). http://es.scribd.com/. (2010). Obtenido de http://es.scribd.com/. http://prezi.com/. (2010)Disponiblre en: http://prezi.com/yzqwcicsbm56/evaluarmultiprocesadores-y-multicomputadores/. ibm. (2013). ibm systems. Obtenido de ibm systems: www. ibm .com / systems / x / hardware / ... / grupo / icaroeii. (2012). icaro. Obtenido de icaro: http://icaro.eii.us.es/descargas/segunda%20parte%20Sistemas%20Multiprocesadores %202006_2007.pdf Martnez, M. U. (2005). nividia. (2010). nividia. Obtenido de nividia: NVIDIA GeForce http://www.nvidia.es/object/geforce_family_es.html nividia. (2010). tesla. Obtenido de tesla: Tesla C2050 / C2070 .http://www.nvidia.com/object/product_tesla_C2050_C2070_us.html Snchez, C. R. (2010). universidad politecnica de valencia tesis. Obtenido de universidad politecnica de valencia tesis: http://riunet.upv.es/bitstream/handle/10251/11319/PFM_Carla_Ramiro_Sanchez.pdf ?sequence=1 Tanenbaum, A. S. ( 2003). Sistemas operativos modernos. Pearson. vargas, m. (2012). cimat. Obtenido de cimat: http://www.cimat.mx/~miguelvargas/Course%20notes/Course2013/Computo%20en% 20paralelo%20con%20OpenMP.pdf

22