Multiprocesadores multicore y manycore

De Departamento de Informatica
Saltar a: navegación, buscar
Imagen referencial de un procesador multicore

Originalmente los procesadores fueron desarrollados con un solo núcleo(kernel) y la ejecución de un hilo(thread) a la vez. Los programadores empleaban regularmente "multithreading" para permitir que el procesador vaya cambiando de hilos, ésto daba la impresión de que los hilos se ejecutan al mismo tiempo, aunque las tareas se podían procesar solamente una a la vez. La única manera de mejorar el rendimiento de procesamiento es ejecutar el núcleo con mayor rapidez pero ésto requiere más energía.

Multiprocesador es el término que hace referencia a dos o más Microprocesadores (CPUs), los cuales permiten ejecutar tareas simultáneamente. Nacen como respuesta a las diversas limitantes de los procesadores Mononúcleos, como lo son el aumento de la frecuencia del reloj con su consecuente, el consumo de energía y generación de calor. Este tipo de arquitectura presenta problemas de diseño que no se encuentran en arquitecturas Monoprocesador. Estos problemas derivan del hecho de que dos programas pueden ejecutarse simultáneamente 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:

  • Arquitectura NUMA: cada procesador tiene acceso y control exclusivo de sólo una parte de la memoria.
  • Arquitectura SMP: todos los procesadores tienen acceso y control a toda la memoria. Todos los procesadores son iguales, por cuanto no existe una relacion 'maestro-esclavo' entre ellos.

Esta última debe lidiar con el problema de la coherencia de caché ya que cada Microprocesador cuenta con su propia memoria caché local, de manera que cuando un Microprocesador escribe en una dirección de memoria, lo hace únicamente sobre su copia local en caché. Si otro Microprocesador tiene almacenada la misma dirección de memoria en su caché, resultará que trabajará con una copia obsoleta del dato almacenado.
Para que un Multiprocesador opere correctamente necesita un Sistema Operativo especialmente diseñado para ello. La mayoría de los Sistemas Operativos actuales poseen esta capacidad, percibiendo a cada núcleo como un procesador separado.

Contenido

Procesador Multicore

Esquema de procesador Multicore

Un chip Multicore o CMP (chip multiprocessor) es un circuito integrado, en el cual se encuentran dos o más núcleos de procesamiento. El núcleo(o core) de un microprocesador es el encargado de realizar todo el trabajo duro (contiene la caché, la unidad aritmética, el mecanismo de predicción de pipeline, el controlador de interrupciones, etcétera). Ésto, aparte de ofrecer un mayor rendimiento, ayuda a reducir el consumo de energía general y permite un mejor procesamiento de tareas simultáneas.

Estos núcleos comparten ciertos recursos internos en el chip como memorias, así como todos los recursos externos al mismo (buses de datos, tarjetas de gráficos, etcétera). El uso de esta capacidad extra depende del sistema, y en servidores de alto desempeño pueden aplicarse para lograr procesamiento paralelo de datos, mientras que en sistemas portátiles pueden estar en reserva listos para usarse solo cuando aplicaciones muy específicas lo requieran.
Una estructura Multicore incluye módulos de caché. Éstos pueden ser compartidos o independientes.
Las implementaciones actuales de los procesadores Multicore varían dependiendo del fabricante y del desarrollo del producto en el tiempo. Las variaciones incluyen módulos de caché compartidos o independientes, implementaciones de bus y capacidades de threading adicionales (como la tecnología HyperThreading de Intel).

En este tipo de arquitectura cada núcleo (core) atiende múltiples threads de manera concurrente, es decir, que mientras debe esperar a que se satisfagan solicitudes de memoria realizadas por el thread que atiende, se pasa a atender al siguiente thread que se encuentra en cola. Cabe mencionar que cada thread posee sus propios recursos en cada core.

Ventajas

Una de las principales ventajas de los Procesadores Multicore(o Multinúcleo) 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.

  • Mejoran el rendimiento
  • Reduce el consumo de energía
  • Procesamiento simultáneo de múltiples tareas es más eficiente.

Desventajas

Hacen falta Sistemas Operativos específicos que soporten este tipo de Multiprocesador, además de ajustes necesarios para maximizar la utilización de los recursos de computación aportados por el Multicore.

Procesador Manycore

Esta arquitectura soporta grandes cantidades de núcleos en un único procesador, donde la infraestructura de apoyo(interconexión, la jerarquía de memoria, etc.) esta diseñada para soportar altos niveles de escalabilidad, que va más allá de la encontrada en los computadores con varios procesadores. Los procesadores Manycore pueden ser divididos en dos tipos de acuerdo a sus nucleos:

  • Manycore Homogeneo: esta compuesto por núcleos de iguales capacidades (núcleos iguales).
  • Manycore Heterogeneo: esta compuesto por núcleos de distintas capacidades (núcleos distintos).

Esos procesadores comprometen el rendimiento de un solo núcleo en favor del rendimiento paralelo.
Con el de diseño basado en varios núcleos son posibles cientos de miles de threads(hilos o hebras) por chip computacional. En la actualidad ésto nos llevan hacia una era de crecimiento exponencial del paralelismo. Estos procesadores, no poseen núcleos tan complejos y poderosos como los de las arquitecturas Multicore, pero posee muchos núcleos pequeños, que en cantidad logran superar tanto en desempeño como en consumo energético a arquitecturas Multicore (bajo condiciones de programación paralela).

Cuadro Comparativo

Criterio de comparación Multicore Manycore
Perspectivas de Crecimiento Así como procesadores de un núcleo tuvieron un callejón sin salida, se estima que este tipo de procesador seguirá el mismo camino. Se estima que la evolución de los computadores seguirá esta vía.
Cantidad de núcleos Entre 2 y 16 La cantidad es variable, pero a nivel comercial existen arquitecturas con más de 480 núcleos
Grado de paralelismo Posee paralelismo, pero en un grado menor a las arquitecturas Manycore, debido a su acotada cantidad de núcleos Entrega un alto grado de paralelismo, debido a la gran cantidad de núcleos que posee.
Complejidad de los núcleos Posee núcleos altamente complejos, de gran capacidad y tamaño Posee núcleos simples, pequeños y de capacidades acotadas.

Tema Investigación: Estado del arte Multiprocesadores multicore y manycore

Estado del Arte

Referencias

Herramientas personales
Espacios de nombres
Variantes
Acciones
Navegación
Herramientas