Articulo de referencia

Computación heterogénea

La computación heterogénea se refiere a sistemas que utilizan más de un tipo de procesador o núcleo . Estos sistemas obtienen rendimiento o eficiencia energética no solo al agre...

La computación heterogénea se refiere a sistemas que utilizan más de un tipo de procesador o núcleo . Estos sistemas obtienen rendimiento o eficiencia energética no solo al agregar procesadores del mismo tipo, sino también al agregar coprocesadores diferentes , que generalmente incorporan capacidades de procesamiento especializadas para manejar tareas particulares. [ 1 ]

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 una y otros procesadores tienen otra arquitectura, generalmente 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, que no suele denominarse heterogéneo).

El nivel de heterogeneidad en los sistemas informáticos modernos está aumentando gradualmente a medida que la mayor miniaturización de las tecnologías de fabricación permite que componentes que antes eran discretos se conviertan en partes integradas de un sistema en chip (SoC). Por ejemplo, muchos procesadores nuevos ahora incluyen lógica integrada para la interfaz 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 criptográficos , procesadores de red programables, codificadores/decodificadores de audio/vídeo, etc.).

Hallazgos recientes muestran que un multiprocesador de chip ISA heterogéneo que aprovecha la diversidad que ofrecen 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 de energía (EDP). [ 2 ] El anuncio de AMD de 2014 sobre sus SoC ARM y x86 compatibles en pines, con nombre en clave Project Skybridge, [ 3 ] sugirió un multiprocesador de chip ISA heterogéneo (ARM+x86) en desarrollo.

Topología de CPU heterogénea

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

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

  • ARM big.LITTLE (sucedido por DynamIQ) es el caso prototípico, donde los núcleos de alta potencia más rápidos se combinan con núcleos de baja potencia más lentos. [ 6 ]
  • Apple ha producido SoC de silicio de Apple con una organización similar.
  • Intel también ha producido chips híbridos x86-64 con nombre en clave Lakefield , aunque con importantes limitaciones en la compatibilidad con conjuntos de instrucciones. El nuevo Alder Lake reduce estas limitaciones al añadir mayor 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. [ 7 ] 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: [ 8 ]

ISA o arquitectura del conjunto de instrucciones
Los elementos de cómputo pueden tener arquitecturas de conjunto de instrucciones diferentes, lo que puede provocar incompatibilidad binaria.
ABI o interfaz binaria de la aplicación
Los elementos de cómputo pueden interpretar la memoria de diferentes maneras. [ 9 ] Esto puede incluir tanto el orden de bytes como la convención de llamada y la disposición 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 del sistema operativo no estén disponibles de manera uniforme para todos los elementos de computación. [ 10 ]
Implementación de bajo nivel de las características del lenguaje
Las características del lenguaje, como las funciones y los hilos, a menudo se implementan mediante punteros a funciones , 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 byte, palabra o ráfaga. [ 11 ]
Interconexión
Los elementos de computación 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, FIFOs y memorias de acceso rápido , entre otros. Además, ciertas partes de un sistema heterogéneo pueden ser coherentes con la caché, mientras que otras pueden requerir la intervención explícita del software para mantener la consistencia y la coherencia.
Actuación
Un sistema heterogéneo puede tener CPU idénticas en cuanto a arquitectura, pero con diferencias microarquitectónicas subyacentes que dan lugar a distintos niveles de rendimiento y consumo energético. Las asimetrías en las capacidades, junto con modelos de programación poco transparentes y abstracciones del sistema operativo, pueden provocar problemas de previsibilidad del rendimiento, especialmente con cargas de trabajo mixtas.
Herramientas de desarrollo
Los distintos tipos de procesadores normalmente requieren distintas herramientas (editores, compiladores, ...) para los desarrolladores de software, lo que introduce complejidad al dividir la aplicación entre ellas. [ 12 ]
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. [ 13 ] Para un número reducido de particiones, se ha demostrado la existencia de particiones óptimas que equilibran perfectamente la carga y minimizan el volumen de comunicación. [ 14 ]

Ejemplo de hardware

El hardware informático heterogéneo se puede encontrar en todos los ámbitos de la informática, desde servidores de alta gama y máquinas de computación 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. Venkat, Ashish; Tullsen, Dean M. (2014). Aprovechamiento de la diversidad de ISA: Diseño de un multiprocesador de chip con ISA heterogénea . Actas del 41.º Simposio Internacional Anual sobre Arquitectura de Computadoras.
  3. Anand Lal Shimpi (5 de mayo de 2014). "AMD anuncia el proyecto SkyBridge: SoC ARM y x86 compatibles en pines en 2015, soporte para Android" . AnandTech. Archivado del original el 9 de mayo de 2014. Recuperado el 11 de junio de 2017. El próximo año, AMD lanzará un SoC de bajo consumo basado en Cortex A57 de 20 nm con GPU integrada Graphics Core Next.
  4. "Planificación con conciencia energética" . La documentación del kernel de Linux .
  5. Amadeo, Ron (24-10-2023). "El Snapdragon 8 Gen 3 de Qualcomm promete una CPU un 30 por ciento más rápida" . Ars Technica .
  6. Mittal, Sparsh (febrero de 2015). "Un estudio de técnicas para la arquitectura y gestión de procesadores multinúcleo asimétricos" . ACM Computing Surveys . 48 (3): 1– 38. doi : 10.1145/2856125 .
  7. Kunzman, DM (2011). Programación de sistemas heterogéneos . Simposio internacional sobre talleres de procesamiento paralelo y distribuido. doi : 10.1109/IPDPS.2011.377 .
  8. Flachs, Brian (2009). Incorporando los procesadores heterogéneos al uso general (PDF) . Simposio sobre aceleradores de aplicaciones en computación de alto rendimiento (SAAHPC).
  9. K. Gai; L. Qiu; H. Zhao; M. Qiu (octubre-diciembre de 2020). "Asignación de datos multimedia con conciencia de costos para memoria heterogénea mediante algoritmo genético en computación en la nube". IEEE Transactions on Cloud Computing . 8 (4): 1212– 1222. doi : 10.1109/TCC.2016.2594172 .
  10. Agron, Jason; Andrews, David (2009). Microkernels de hardware para sistemas multinúcleo heterogéneos . Talleres de procesamiento paralelo, 2009. Conferencia internacional sobre procesamiento paralelo (ICPPW). doi : 10.1109/ICPPW.2009.21 .
  11. ^ Lang, Johannes (2020). Heterogenes Rechnen mit ARM und DSP Multiprozessor-Ein-Chip-Systemen (MSc.). Fachhochschule Vorarlberg. doi : 10.25924/opus-4525 .
  12. Wong, William G. (30 de septiembre de 2002). "Las herramientas importan en el desarrollo de software para procesadores mixtos" . www.electronicdesign.com . Consultado el 9 de agosto de 2023 .
  13. Beaumont, Olivier; Boudet, Vincent; Rastello, Fabrice; Robert, Yves (agosto de 2002). "Partición de un cuadrado en rectángulos: NP-completitud y algoritmos de aproximación" (PDF) . Algorithmica . 34 (3): 217–239 . CiteSeerX 10.1.1.3.4967 . doi : 10.1007/s00453-002-0962-9 . S2CID 9729067 .  
  14. Beaumont, Olivier; Becker, Brett; DeFlumere, Ashley; Eyraud-Dubois, Lionel; Lastovetsky, Alexey (julio de 2018). "Avances recientes en la partición de matrices para computación paralela en plataformas heterogéneas" (PDF) . IEEE Transactions on Parallel and Distributed Computing .
  15. Gschwind, Michael (2005). Una nueva arquitectura SIMD para el chip multiprocesador heterogéneo Cell (PDF) . Hot Chips: Simposio sobre chips de alto rendimiento. Archivado del original (PDF) el 18 de junio de 2020. Consultado el 28 de octubre de 2014 .