Computación heterogénea - Heterogeneous computing

La computación heterogénea se refiere a sistemas que utilizan más de un tipo de procesador o núcleos . Estos sistemas obtienen rendimiento o eficiencia energética no solo agregando el mismo tipo de procesadores, sino también agregando coprocesadores diferentes , generalmente incorporando capacidades de procesamiento especializadas para manejar tareas particulares.

Heterogeneidad

Por lo general, la heterogeneidad en el contexto de la informática se refiere a diferentes arquitecturas de conjuntos de instrucciones (ISA), donde el procesador principal tiene uno y otros procesadores tienen otra, generalmente una arquitectura muy diferente (tal vez más de una), no solo una microarquitectura diferente ( flotante El procesamiento de números de puntos es un caso especial de esto (no se suele denominar heterogéneo).

En el pasado, la computación heterogénea significaba que diferentes ISA tenían que manejarse de manera diferente, mientras que en un ejemplo moderno, los sistemas de arquitectura de sistemas heterogéneos (HSA) eliminan la diferencia (para el usuario) al usar múltiples tipos de procesadores (generalmente CPU y GPU ), generalmente en el mismo circuito integrado , para proporcionar lo mejor de ambos mundos: procesamiento general de la GPU (además de las conocidas capacidades de representación de gráficos 3D de la GPU, también puede realizar cálculos matemáticamente intensivos en conjuntos de datos muy grandes), mientras que las CPU pueden ejecutar el sistema operativo y realizar tareas tradicionales en serie.

El nivel de heterogeneidad en los sistemas informáticos modernos aumenta gradualmente a medida que el escalado adicional de las tecnologías de fabricación permite que los componentes anteriormente discretos se conviertan en partes integradas de un sistema en chip o SoC. Por ejemplo, muchos procesadores nuevos ahora incluyen lógica incorporada para interactuar con otros dispositivos ( SATA , PCI , Ethernet , USB , RFID , radios , UART y controladores de memoria ), así como unidades funcionales programables y aceleradores de hardware ( GPU , criptografía coprocesadores, procesadores de red programables, codificadores / decodificadores A / V, etc.).

Hallazgos recientes muestran que un multiprocesador de chip ISA heterogéneo que explota la diversidad ofrecida por múltiples ISA puede superar a la mejor arquitectura homogénea del mismo ISA hasta en un 21% con un ahorro de energía del 23% y una reducción del 32% en el producto de retardo energético (EDP). . El anuncio de AMD en 2014 sobre su ARM compatible con pines y SoC x86, con el nombre en clave Project Skybridge, sugirió un multiprocesador de chip ISA heterogéneo (ARM + x86) en proceso.

Topología de CPU heterogénea

Un sistema con topología de CPU heterogénea es un sistema en el que se utiliza el mismo ISA, pero los núcleos en sí son diferentes en velocidad. La configuración es más similar a un multiprocesador simétrico . (Aunque estos sistemas son multiprocesadores técnicamente asimétricos , los núcleos no difieren en las funciones o el acceso al dispositivo). Por lo general, existen dos tipos de núcleos: un núcleo de mayor rendimiento conocido como "grande" o núcleo P y un núcleo más eficiente en el consumo de energía. generalmente conocido como el "pequeño" o E-core.

Un uso común de dicha topología es proporcionar una mejor eficiencia energética en SoC móviles.

  • ARM big.LITTLE (sucedido por DynamIQ) es el caso prototípico, donde los núcleos más rápidos de alta potencia se combinan con núcleos más lentos de baja potencia.
  • Apple ha producido núcleos ARM de silicona de Apple con una organización similar.
  • Intel también ha producido núcleos híbridos x86-64 con nombre en código Lakefield , aunque no sin importantes limitaciones en el soporte del conjunto de instrucciones. El nuevo Alder Lake reduce el sacrificio al agregar más soporte de conjunto de instrucciones al núcleo "pequeño".

Desafíos

Los sistemas informáticos heterogéneos presentan nuevos desafíos que no se encuentran en los sistemas homogéneos típicos. La presencia de múltiples elementos de procesamiento plantea todos los problemas relacionados con los sistemas de procesamiento paralelo homogéneos, mientras que el nivel de heterogeneidad en el sistema puede introducir falta de uniformidad en el desarrollo del sistema, las prácticas de programación y la capacidad general del sistema. Las áreas de heterogeneidad pueden incluir:

Arquitectura de conjunto de instrucciones o ISA
Los elementos de cómputo pueden tener diferentes arquitecturas de conjuntos de instrucciones, lo que conduce a una incompatibilidad binaria.
ABI o interfaz binaria de la aplicación
Los elementos de cálculo pueden interpretar la memoria de diferentes formas. Esto puede incluir endianness , convenciones de llamadas y diseño de memoria, y depende tanto de la arquitectura como del compilador que se utilicen.
Interfaz de programación de aplicaciones o API
Es posible que los servicios de biblioteca y SO no estén disponibles de manera uniforme para todos los elementos informáticos.
Implementación de bajo nivel de funciones del lenguaje
Las características del lenguaje, como funciones y subprocesos, a menudo se implementan mediante punteros de función , un mecanismo que requiere una traducción o abstracción adicional cuando se usa en entornos heterogéneos.
Interfaz y jerarquía de memoria
Los elementos informáticos pueden tener diferentes estructuras de caché , protocolos de coherencia de caché y el acceso a la memoria puede ser un acceso a la memoria uniforme o no uniforme ( NUMA ). También se pueden encontrar diferencias en la capacidad de leer longitudes de datos arbitrarias, ya que algunos procesadores / unidades solo pueden realizar accesos de bytes, palabras o ráfagas.
Interconectar
Los elementos informáticos pueden tener diferentes tipos de interconexión además de las interfaces básicas de memoria / bus. Esto puede incluir interfaces de red dedicadas, dispositivos de acceso directo a memoria ( DMA ), buzones de correo, FIFO y memorias de bloc de notas , etc. Además, ciertas partes de un sistema heterogéneo pueden ser coherentes con la caché, mientras que otras pueden requerir la participación explícita del software para mantener la coherencia. y coherencia.
Rendimiento
Un sistema heterogéneo puede tener CPU que son idénticas en términos de arquitectura, pero tienen diferencias microarquitectónicas subyacentes que conducen a varios niveles de rendimiento y consumo de energía. Las asimetrías en las capacidades combinadas con modelos de programación opacos y abstracciones del sistema operativo a veces pueden conducir a problemas de predictibilidad del rendimiento, especialmente con cargas de trabajo mixtas.
Partición de datos
Si bien la partición de datos en plataformas homogéneas a menudo es trivial, se ha demostrado que para el caso heterogéneo general, el problema es NP-Complete. Para pequeñas cantidades de particiones, se ha demostrado que existen particiones óptimas que equilibran perfectamente la carga y minimizan el volumen de comunicación.

Hardware de ejemplo

Se puede encontrar hardware informático heterogéneo en todos los dominios de la informática, desde servidores de alta gama y máquinas informáticas de alto rendimiento hasta dispositivos integrados de bajo consumo, incluidos teléfonos móviles y tabletas.

Ver también

Referencias