Multicore vs manycore

Universidad de Carabobo Facultad Experimental de Ciencias y Tecnología Departamento de Computación Arquitectura del Comp

Views 44 Downloads 0 File size 118KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Universidad de Carabobo Facultad Experimental de Ciencias y Tecnología Departamento de Computación Arquitectura del Computador

Many-Core Vs. Multi-Core

Introducción

Después de Medio Siglo de la dominación, el procesador de un solo núcleo (uni-core) es una especie en peligro de extinción. El procesamiento multi-núcleo es ahora la corriente principal. El futuro es de forma masiva la computación paralela, llevada a cabo en los procesadores Many-core, Esa es la premisa fundamental del siguiente informe. En los últimos tiempos los fabricantes de procesadores han entrado en la carrera de ver quien hace un procesador con un mayor número de núcleos. Carrera muy similar a la que hace no mucho se hizo con los GHz “Cuanto más GHz más procesamiento…”, con la diferencia de que ahora lo más importante no son estos GHz, sino la cantidad de núcleos.

El Procesador La unidad central de procesamiento o CPU es un componente muy importante del computador y otros dispositivos programables, el cual interpreta las instrucciones contenidas en los programas y procesa los datos. El CPU proporciona la característica fundamental de la computadora digital y es uno de los componentes necesarios encontrados en las computadoras de cualquier tiempo, junto con el almacenamiento primario y los dispositivos de entrada/salida. Se conoce como microprocesador el CPU que es manufacturado con circuitos integrados. Desde mediados de los años 1970, los microprocesadores de un solo chip han reemplazado casi totalmente todos los tipos de CPU, y hoy en día, el término "CPU" es aplicado usualmente a todos los microprocesadores. Los primeros CPU’s fueron diseñados a la medida como parte de una computadora más grande, generalmente una computadora única en su especie. Sin embargo, este costoso método de diseñar los CPU a la medida, para una aplicación particular, ha desaparecido en gran parte y se ha sustituido por el desarrollo de clases de procesadores baratos y estandarizados adaptados para uno o más propósitos. Esta tendencia de estandarización comenzó generalmente en la era de los transistores discretos, computadoras centrales y microcomputadoras, siendo acelerada rápidamente con la popularización del circuito integrado (IC), ya que éste ha permitido que sean diseñados y fabricados CPU’s más complejos en espacios cada vez más pequeños (en orden de milímetros). Tanto la miniaturización como la estandarización de los CPU han aumentado la presencia de estos dispositivos digitales en la vida moderna mucho más allá de las aplicaciones limitadas de máquinas de computación dedicadas. Los microprocesadores modernos aparecen en todo, desde automóviles, televisores, neveras, calculadoras, aviones, hasta teléfonos móviles o celulares y juguetes, entre otros. Los procesadores se agrupan hoy en dos familias, la primera la más antigua y común es la "CISC" o "Complex Instruction Set Computer": computador de set complejo de instrucciones. Esto corresponde a procesadores que son capaces de ejecutar un gran número de instrucciones pre-definidas en lenguaje de máquina (del orden del centenar). Y la segunda y más moderna es la "RISC" o "Reduced Instruction Set Computer", es decir con un número reducido de instrucciones. Esto permite una ejecución más rápida de las instrucciones pero requiere compiladores más complejos ya que las instrucciones que un "CISC" podría admitir pero no un "RISC", deben ser escritas como combinaciones de varias instrucciones admisibles del "RISC". Esto implica una ganancia en velocidad por el hecho de que el RISC domina instrucciones muy frecuentes.

CISC Es un modelo de arquitectura de computadora el cual contiene un conjunto de instrucciones que se caracteriza por ser muy amplio y permitir operaciones complejas entre datos situados en la memoria o en los registros internos. Este tipo de arquitectura dificulta el paralelismo entre instrucciones, por lo que, en la actualidad, la mayoría de los sistemas CISC de alto rendimiento implementan un sistema que convierte dichas instrucciones complejas en varias instrucciones simples del tipo RISC, llamadas generalmente microinstrucciones. Los CISC pertenecen a la primera corriente de construcción de procesadores, antes del desarrollo de los RISC. Ejemplos de ellos son: Motorola 6800, Zilog Z80 y toda la familia Intel x86 usada en la mayoría de las computadoras personales actuales.

RISC A diferencia de la arquitectura CISC, la RISC contiene un conjunto reducido de instrucciones. El objetivo de diseñar máquinas con esta arquitectura es posibilitar la segmentación y el paralelismo en la ejecución de instrucciones y reducir los accesos a memoria. Las máquinas RISC protagonizan la tendencia actual de construcción de microprocesadores. PowerPC, DEC Alpha, MIPS, ARM. Son ejemplos de algunos de ellos. RISC es una filosofía de diseño de CPU para computadora que está a favor de los conjuntos de instrucciones pequeñas y simples que toman menor tiempo para ejecutarse. El tipo de procesador más comúnmente utilizado en equipos de escritorio, el x86, está basado en CISC en lugar de RISC, aunque las versiones más nuevas traducen instrucciones basadas en CISC x86 a instrucciones más simples basadas en RISC para uso interno antes de su ejecución.

RISC vs. CISC

Dentro de muy poco los usuarios dejaran de hacerse la pregunta ¿RISC o CISC?, puesto que la tendencia futura, nos lleva a pensar que ya no existirán los CISC puros. Hace ya tiempo que se ha empezado a investigar sobre microprocesadores "híbridos", es decir, que los nuevos CPU's no sean en su cien por ciento CISC, sino por el contrario, que estas ya contengan algunos aspectos de tecnología RISC. Este propósito se ha realizado con el fin de obtener ventajas procedentes de ambas tecnologías (mantener la compatibilidad x86 de los CISC, y a la vez aumentar las prestaciones hasta aproximarse a un RISC), sin embargo, este objetivo todavía no se ha conseguido, de momento se han introducido algunos puntos del RISC, lo cual no significa que hayan alcanzado un nivel optimo. Realmente, las diferencias son cada vez más borrosas entre las arquitecturas CISC y RISC. Las CPU's combinan elementos de ambas y no son fáciles de encasillar. Por ejemplo, el Pentium Pro traduce las largas instrucciones CISC de la arquitectura x86 a micro operaciones sencillas de longitud fija que se ejecutan en un núcleo de estilo RISC. El UltraSparc-II de Sun, acelera la decodificación MPEG con unas instrucciones especiales para gráficos; estas instrucciones obtienen unos resultados que en otros procesadores requerirían 48 instrucciones. Por lo tanto a corto plazo, en el mercado coexistirán las CPU's RISC y los microprocesadores híbridos RISC - CISC, pero cada vez con diferencias mas difusas entre ambas tecnologías.

Características comparativas CISC 1.

Arquitectura RM y MM.

Objetivo: dar soporte eficiente a los Arquitectónico a las funciones Requeridas por los LANS. 2.

3.

Muchas operaciones básicas. básicas.

RISC Arquitectura RR.

Objetivo: dar soporte casos frecuentes.

Pocas

operaciones

Muchos tipos de datos y una interfaz básicos Con memoria compleja. memoria simple. 4.

Instrucciones largas y complejas formato simple Con formatos muy diversos y Decodificación compleja. 5.

Solo

tipos

de

Con una interfaz

Instrucciones

datos con

de

decodificación simple.

Procesadores Multi-Core (Múltiples Núcleos) Un microprocesador multinúcleo es aquel que combina dos o más procesadores independientes en un solo paquete, a menudo en un solo circuito integrado. Un dispositivo de doble núcleo contiene solamente dos microprocesadores independientes. En general, los microprocesadores multinúcleo permiten que un dispositivo computacional exhiba una cierta forma del paralelismo a nivel de thread (thread-level parallelism) (TLP), es decir, paralelismo de ejecución de subprocesos, sin incluir múltiples microprocesadores en paquetes físicos separados. Esta forma de TLP se conoce a menudo como multiprocesamiento a nivel de chip (chip-level multiprocessing) o CMP. Multiprocesamiento es un Procesamiento simultáneo con dos o más procesadores en un computador, o dos o más computadores que están procesando juntos. Cuando se usa dos o más computadores, se unen con un canal de alta velocidad y comparten la carga de trabajo general entre ellos. En caso de que uno falle el otro se hace cargo. El multiprocesamiento también se efectúa en computadores de propósitos especiales, como procesadores vectoriales, los cuales proveen procesamiento simultáneo de conjuntos de datos. Aunque los computadores se construyen con diversas características que se superponen, como ejecutar instrucciones mientras se ingresan y se sacan datos, el multiprocesamiento se refiere específicamente a la ejecución de instrucciones simultáneas.

Los beneficios del software de las arquitecturas multi-core son que el código puede ser ejecutado en paralelo. La mayoría de sistemas operativos utilizan diferentes hilos o procesos en la ejecución de su código. Cada aplicación se ejecuta en su propio proceso de forma que las arquitecturas multinúcleo tienen sentido para la ejecución de múltiples aplicaciones. Cada aplicación puede tener múltiples hilos. El software del sistema operativo también tiende a ejecutar varios subprocesos, como parte de su funcionamiento normal. La mayoría de software de aplicación no está escrito para el uso concurrente de múltiples hilos. Un patrón frecuente en el diseño de las aplicaciones multihilo es en un solo hilo cargar todo el grueso del trabajo (“hilo trabajador"), mientras que otros hilos hacer mucho menos (como por ejemplo la actualización de la interfaz gráfica para mostrar los progresos). Dentro del Quad-Core de Intel La tendencia actual en el desarrollo de los procesadores ha sido de varios núcleos a muchos núcleos: doble, triple, cuádruple, incluso decenas de ellos. Además los procesadores de varios núcleos mezclados con las técnicas actuales y los procesadores heterogéneos de propósito especial, prometen más rendimiento y un aumento de la eficiencia en temas de procesamiento multimedia, reconocimiento de redes y aplicaciones. Uno de los campos más interesantes en su arquitectura es la composición y el equilibrio de los núcleos. Algunas arquitecturas utilizando un diseño básico que se repite constantemente (“homogéneos”), mientras que otros utilizan una mezcla de diferentes núcleos, cada uno optimizado para una función diferente (“heterogéneos”).

La principal ventaja de los procesadores multinúcleo, a parte de sus características ya comentadas, es que dada la proximidad de los núcleos, las señales entre las diferentes CPU’s realizan viajes cortos y por consiguiente, se degradan menos. Estas señales de más calidad permiten enviar más datos por unidad de tiempo. Por el contrario, hacen falta sistemas operativos específicos que los soporten, además de ajustes necesarios para maximizar la utilización de los recursos de computación suministrados por el Multi-Core. Futuro próximo: MultiCore en los móviles El ARM SMP (symmetric multi-processor) ahora es compatible con los sistemas operativos para móviles Symbian, y parece ser que el primer procesador Dual-Core que entrará en los móviles será el ARM Cortex A9 MPCore, que fue anunciado recientemente. Este nuevo procesador permite un ahorro considerable de batería en los móviles, ya que el procesador es usado cuando el sistema lo necesite, además de darle más rendimiento a los dispositivos móviles en comunicaciones y en la ejecución de las aplicaciones.

Procesadores Many-Core (Muchos Núcleos) Esta es una arquitectura que soporta múltiples núcleos en un paquete de procesador único, donde la infraestructura de apoyo (interconexión, la jerarquía de memoria, etc.) esta diseñada para soportar altos niveles de escalabilidad, va mucho más allá de la encontrada en los ordenadores con varios procesadores. Esto núcleos pueden ser los mismo (un procesador de múltiples núcleos homogéneos) o diferentes (una arquitectura heterogénea de múltiples núcleos).los procesadores Many Core ponen mas núcleos sobre una determinada térmica que los procesadores Multi Core correspondientes, de manera consciente comprometen el rendimiento de un solo núcleo a favor del rendimiento paralelo. La creación de arquitecturas Many-Core - cientos o miles de núcleos por procesador - es vista por muchos como una evolución natural de múltiples núcleos, como la Ley de Moore y de la física conspiran para forzar a los diseñadores de chips a agregar transistores en lugar de aumentar los relojes del procesador. Si Many-Core está destinado a ser el camino a seguir, un nuevo ecosistema de computación en paralelo tendrá que ser desarrollado, uno que es muy diferente al ambiente que apoya los actuales sistemas de procesamiento secuencial y multinúcleo. Uno de los temas centrales es el tipo de bloques de construcción de hardware que se utilizará para sistemas Many-Core. Sobre este tema, los investigadores toman una posición razonablemente definitiva. Ellos prevén con miles de procesadores simples (es decir, RISC) núcleos de procesamiento. Los investigadores sostienen que los pequeños núcleos simples son las estructuras más eficientes para los códigos paralelos, proporcionando la mejor solución de compromiso entre el consumo de energía, rendimiento y capacidad de fabricación. Señalan a los nuevos 128-core GPU NVIDIA y 188 núcleos de procesador de Cisco red de Metro como dos primeros ejemplos de este enfoque. Otro de los grandes temas es el tipo de aplicaciones que se ejecutan en sistemas Many-Core. Los autores creen que las aplicaciones de la computación paralela se basarán en un conjunto de 13 diferentes métodos de cálculo - sus llamados enanos 13. Este consta de siete enanitos de la computación científica, además de seis más de otros dominios de la informática: incrustado, de propósito general, el

aprendizaje de máquina, gráficos y juegos, bases de datos, y el reconocimiento de Intel, la minería y de síntesis (RMS) las solicitudes. Es concebible que dentro de pocos años, las aplicaciones de TI paralelizado lleguen a dominarse. Nuestro futuro Many-Core tiene un lado positivo enorme, pero la ansiedad sobre él en el mundo de las TI es palpable. Ninguna comunidad informática única, ni siquiera HPC, parece tener la amplitud de los conocimientos para atacar esto por sí solo.

El Futuro de los procesadores

Los rumores de la muerte de la Ley de Moore son muy exagerados, según un equipo de científicos de la computación de Lawrence Berkeley National Laboratory (LBNL) y la Universidad de California (UC) en Berkeley. En su opinión, la observación de Gordon Moore de que la cantidad de potencia informática cargada sobre un chip se duplica cada 18 meses mientras que el costo sigue siendo llano está vivo y bien. Pero la física está cambiando. Industria se aferró al modelo de un solo núcleo durante el mayor tiempo posible, llegando así al exceso de ingeniería de los núcleos para exprimir unos cuantos puntos porcentuales de mayor rendimiento. Pero los diseños complejos de los núcleos requerían enorme poder, y complejidad para maximizar el rendimiento de serie. Ahora, la densidad de calor y la potencia se han convertido en 15 años de crecimiento exponencial de la frecuencia de reloj. La industria ha respondido, poniendo fin a las mejoras de la velocidad de reloj y aumento de sofisticación del núcleo, y en lugar de eso duplicar el número de núcleos de cada 18 meses.

Los procesadores Multi y Many-Core comparten ciertas características, tienen la ventaja del aumento de rendimiento al realizar las operaciones en paralelo, lo que les permite realizar el funcionamiento de varios programas simultáneamente y que estos no

compartan el mismo núcleo, esto les permite explotar al cien por ciento el uso del procesador. La tendencia progresiva hacia los chips “multi-core” (dos, cuatro u ocho núcleos) ya ha obligado a la industria del software a dar los primeros saltos de enormes proporciones en paralelismo explícito. Si se puede expresar más eficientemente el paralelismo, se abre un enfoque más agresivo, llamado "many-core", que utiliza una gran cantidad de núcleos más simples y de menor frecuencia para alcanzar ventajas de rendimiento que se pueden lograr por la vía gradual. Con el punto de diseño many-core, cientos de miles de hilos computacionales por chip son posibles. En última instancia, todos estos caminos nos llevan a una era de crecimiento exponencial de paralelismo explícito.

Pero no todo es positivo, esta nueva tecnología tienen una serie de desventajas, como es la de los Software’s actuales. Los expertos de Intel recomendaron a los programadores en el último Foro para Desarrolladores de Intel que para aprovechar el máximo rendimiento en los futuros procesadores Multi-Core, empiecen a diseñar sus programas pensando desde el principio en la multiprogramación: algoritmos, estructuras de datos...que no se lo planteen como una "mejora" sino como eje troncal, y que se familiaricen con las herramientas de depuración de bloqueos de Intel.

Hoy en día la multiprogramación sigue siendo dura. Para la mayoría de los programadores es realmente difícil, por no decir imposible, hacer que el software escale mágicamente a unas cuantas decenas de CPUs y que su potencia sea utilizada en su totalidad. Existe un amplio consenso, especialmente en el mundo del hardware, sobre que el mundo del software carece de un modelo para explotar las CPUs Multi-Core y menos aun los Many-Core, y que las CPUs MultiCore han venido para quedarse y que esto va a obligar a que se produzca una revolución en el software para descubrir cuál es ese modelo. Los fabricantes de CPUs llevan muchos años aumentando el rendimiento de los ordenadores, y ahora le ha llegado la hora al software de aumentar el rendimiento. liberar el potencial del enfoque multi-core y many-core para asegurar futuros avances en rendimiento computacional sostenido requerirá avances fundamentales en la arquitectura de los ordenadores y la

programación de modelos, avances que son nada más y nada menos que reinventar la computación. Esto a su vez se traducirá en un nuevo paradigma de programación paralela, que ya está siendo explorado por investigadores de Berkeley en un programa de cinco años de duración financiado por Microsoft, Intel, y el programa de California UC Discovery.

¿Ocurrirá tal mejora? De venir, idealmente seria del desconocido y oscuro pero sin embargo amplio terreno que existe desde el nivel del lenguaje de programación al de los transistores del CPU. Sin embargo existe un grupo de gente que simplemente piensa que esa mejora no se producirá, y que el software jamás podrá utilizar eficientemente tantos núcleos. Uno de los que opinan así parece ser Robert O'Callahan, uno de los mejores hackers de Firefox, especializado en temas gráficos.

Cada vez son más los avances a nivel de hardware. Ya se habla de la futura creación de procesadores híbridos laser, capaces de emitir esta clase de luz para la comunicación más eficaz de datos; así como de procesadores comerciales interlargos de 12, 16 y mas núcleos.

Referencias bibliográficas

• http://www.slideshare.net • http://www.top500.org/ • http://es.wikipedia.org • http://www.monografias.com • http://www.microsiervos.com • http://www.definicionabc.com • http://es.kioskea.net • http://www.intel.com • http://www.xataka.com • http://blogs.intel.com • http://www.noticias-de.com • http://www.scidacreview.org