Computación heterogénea

Arquitectura informática que utiliza múltiples métodos de procesamiento diferentes.

La computación heterogénea se refiere a sistemas que utilizan más de un tipo de procesador o núcleo . Estos sistemas ganan rendimiento o eficiencia energética no solo añadiendo el mismo tipo de procesadores, sino añadiendo coprocesadores diferentes , que por lo general incorporan capacidades de procesamiento especializadas para manejar tareas particulares. [1]

Heterogeneidad

Generalmente, la heterogeneidad en el contexto de la informática se refiere a diferentes arquitecturas de conjuntos de instrucciones (ISA), donde el procesador principal tiene una y los otros procesadores tienen otra, generalmente una arquitectura muy diferente (quizás más de una), no solo una microarquitectura diferente ( el procesamiento de números de punto flotante es un caso especial de esto, generalmente no se lo denomina heterogéneo).

En el pasado, la computación heterogénea significaba que las diferentes ISA debían manejarse de manera diferente, mientras que en un ejemplo moderno, los sistemas de Arquitectura de Sistema Heterogéneo (HSA) [2] eliminan la diferencia (para el usuario) mientras usan múltiples tipos de procesadores (normalmente CPU y GPU ), normalmente en el mismo circuito integrado , para proporcionar lo mejor de ambos mundos: procesamiento general de GPU (además de las conocidas capacidades de renderizado 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 seriales tradicionales.

El nivel de heterogeneidad en los sistemas informáticos modernos está aumentando gradualmente a medida que una mayor escala de las tecnologías de fabricación permite que componentes anteriormente discretos se conviertan en partes integradas de un sistema en chip o SoC. [ cita requerida ] 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 , coprocesadores de criptografía , procesadores de red programables, codificadores/decodificadores A/V, etc.).

Recientes hallazgos 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 de la misma ISA en hasta un 21% con un ahorro de energía del 23% y una reducción del 32% en el Producto de Retardo de Energía (EDP). [3] El anuncio de 2014 de AMD sobre sus SoC ARM y x86 compatibles con pines, nombre en código Project Skybridge, [4] sugería que un multiprocesador de chip ISA heterogéneo (ARM+x86) estaba en desarrollo. [ cita requerida ]

Topología de CPU heterogénea

Un sistema con topología de CPU heterogénea es un sistema en el que se utiliza la misma ISA, pero los núcleos en sí son diferentes en velocidad. [5] La configuración es más similar a un multiprocesador simétrico . (Aunque estos sistemas son técnicamente multiprocesadores asimétricos , los núcleos no difieren en funciones o acceso a dispositivos). Normalmente hay dos tipos de núcleos: un núcleo de mayor rendimiento normalmente conocido como "grande" o núcleo P y un núcleo más eficiente energéticamente normalmente conocido como "pequeño" o núcleo E. Los términos núcleos P y E se utilizan normalmente en relación con la implementación de la computación heterogénea de Intel, mientras que los términos núcleos grandes y pequeños se utilizan normalmente en relación con la arquitectura ARM. Algunos procesadores tienen tres categorías de núcleos, núcleos principales, de rendimiento y de eficiencia, y los núcleos principales tienen un rendimiento mayor que los núcleos de rendimiento; un núcleo principal se conoce como "grande", un núcleo de rendimiento se conoce como "medio" y un núcleo de eficiencia se conoce como "pequeño". [6]

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

  • ARM big.LITTLE (sucedido por DynamIQ) es el caso prototípico, donde se combinan núcleos más rápidos de alto consumo con núcleos más lentos de bajo consumo. [7]
  • Apple ha producido SoCs de silicio Apple con una organización similar.
  • Intel también ha producido chips híbridos x86-64 con el nombre en código Lakefield , aunque no sin importantes limitaciones en la compatibilidad con conjuntos de instrucciones. El nuevo Alder Lake reduce el sacrificio al agregar más compatibilidad con conjuntos 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. [8] 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: [9]

ISA o arquitectura de conjunto de instrucciones
Los elementos de cómputo pueden tener diferentes arquitecturas de conjuntos de instrucciones, lo que genera incompatibilidad binaria.
ABI o interfaz binaria de aplicación
Los elementos de cómputo pueden interpretar la memoria de diferentes maneras. [10] Esto puede incluir tanto el orden de bytes , la convención de llamada y el diseño de la memoria, y depende tanto de la arquitectura como del compilador que se utilice.
API o interfaz de programación de aplicaciones
Es posible que los servicios de biblioteca y de sistema operativo no estén disponibles de manera uniforme para todos los elementos computacionales. [11]
Implementación de bajo nivel de las características del lenguaje
Las características del lenguaje, como funciones y subprocesos, a menudo se implementan utilizando punteros de función , un mecanismo que requiere traducción o abstracción adicional cuando se utiliza en entornos heterogéneos.
Interfaz y jerarquía de memoria
Los elementos de cómputo pueden tener diferentes estructuras de caché , protocolos de coherencia de caché y el acceso a la memoria puede ser 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. [12]
Interconectar
Los elementos de cómputo pueden tener distintos 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 borrador , etc. Además, ciertas partes de un sistema heterogéneo pueden ser coherentes con la memoria caché, mientras que otras pueden requerir la participación explícita del software para mantener la consistencia y la coherencia.
Actuación
Un sistema heterogéneo puede tener CPU que sean idénticas en términos de arquitectura, pero que tengan diferencias microarquitectónicas subyacentes que generen distintos 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 generar problemas de previsibilidad del rendimiento, especialmente con cargas de trabajo mixtas.
Herramientas de desarrollo
Los diferentes tipos de procesadores normalmente requieren herramientas diferentes (editores, compiladores, ...) para los desarrolladores de software, lo que introduce complejidad al dividir la aplicación entre ellas. [13]
Particionamiento de datos
Si bien la partición de datos en plataformas homogéneas suele ser trivial, se ha demostrado que para el caso heterogéneo general, el problema es NP-completo. [14] 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. [15]

Ejemplo de hardware

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, como teléfonos móviles y tabletas.

Véase también

Referencias

  1. ^ Shan, Amar (2006). Procesamiento heterogéneo: una estrategia para ampliar la Ley de Moore. Linux Journal.
  2. ^ "Fundamentos de la arquitectura de sistemas heterogéneos (HSA)". Archivado desde el original el 23 de abril de 2014. Consultado el 1 de noviembre de 2014 .
  3. ^ Venkat, Ashish; Tullsen, Dean M. (2014). Aprovechamiento de la diversidad de ISA: diseño de un multiprocesador de chip ISA heterogéneo. Actas del 41.º Simposio internacional anual sobre arquitectura informática.
  4. ^ Anand Lal Shimpi (5 de mayo de 2014). "AMD anuncia el proyecto SkyBridge: SoC ARM y x86 compatibles con pines en 2015, compatibilidad con Android". AnandTech . Consultado el 11 de junio de 2017. El año que viene, AMD lanzará un SoC de bajo consumo basado en Cortex A57 de 20 nm con GPU Graphics Core Next integrada.
  5. ^ "Programación consciente de la energía". La documentación del kernel de Linux .
  6. ^ Amadeo, Ron (24 de octubre de 2023). "El Snapdragon 8 Gen 3 de Qualcomm promete una CPU un 30 por ciento más rápida". Ars Technica .
  7. ^ Mittal, Sparsh (febrero de 2015). "Un estudio de técnicas para diseñar y gestionar procesadores multinúcleo asimétricos". ACM Computing Surveys . 48 (3): 1–38. doi :10.1145/2856125.
  8. ^ Kunzman, DM (2011). Programación de sistemas heterogéneos . Talleres del Simposio internacional sobre procesamiento paralelo y distribuido. doi :10.1109/IPDPS.2011.377.
  9. ^ Flachs, Brian (2009). Incorporación de procesadores heterogéneos al mercado general (PDF) . Simposio sobre aceleradores de aplicaciones en computación de alto rendimiento (SAAHPC).
  10. ^ K. Gai; L. Qiu; H. Zhao; M. Qiu (octubre-diciembre de 2020). "Asignación de datos multimedia teniendo en cuenta los costos para memoria heterogénea mediante algoritmos genéticos en computación en la nube". IEEE Transactions on Cloud Computing . 8 (4): 1212–1222. doi :10.1109/TCC.2016.2594172.
  11. ^ Agron, Jason; Andrews, David (2009). Micronúcleos de hardware para sistemas heterogéneos de muchos núcleos . Talleres de procesamiento paralelo, 2009. Conferencia internacional sobre procesamiento paralelo (ICPPW). doi :10.1109/ICPPW.2009.21.
  12. ^ Lang, Johannes (2020). Heterogenes Rechnen mit ARM und DSP Multiprozessor-Ein-Chip-Systemen (MSc.). Fachhochschule Vorarlberg. doi :10.25924/opus-4525.
  13. ^ Wong, William G. (30 de septiembre de 2002). "Las herramientas son importantes en el desarrollo de software con procesadores mixtos". www.electronicdesign.com . Consultado el 9 de agosto de 2023 .
  14. ^ Beaumont, Olivier; Boudet, Vincent; Rastello, Fabrice; Robert, Yves (agosto de 2002). "Partición de un cuadrado en rectángulos: algoritmos de aproximación y NP-completitud" (PDF) . Algorithmica . 34 (3): 217–239. CiteSeerX 10.1.1.3.4967 . doi :10.1007/s00453-002-0962-9. S2CID  9729067. 
  15. ^ Beaumont, Olivier; Becker, Brett; DeFlumere, Ashley; Eyraud-Dubois, Lionel; Lastovetsky, Alexey (julio de 2018). "Avances recientes en particionamiento matricial para computación paralela en plataformas heterogéneas" (PDF) . Transacciones IEEE sobre computación paralela y distribuida .
  16. ^ Gschwind, Michael (2005). Una nueva arquitectura SIMD para el chip multiprocesador heterogéneo Cell (PDF) . Hot Chips: un simposio sobre chips de alto rendimiento. Archivado desde el original (PDF) el 2020-06-18 . Consultado el 2014-10-28 .
Retrieved from "https://en.wikipedia.org/w/index.php?title=Heterogeneous_computing&oldid=1246081584"