stringtranslate.com

Computación heterogénea

La informática 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 sólo añadiendo el mismo tipo de procesadores, sino añadiendo coprocesadores diferentes , que normalmente 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 (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 suele denominarse heterogéneo).

En el pasado, la informática heterogénea significaba que diferentes ISA debían manejarse de manera diferente, mientras que en un ejemplo moderno, los sistemas de arquitectura de sistemas heterogéneos (HSA) [2] eliminan la diferencia (para el usuario) al utilizar múltiples tipos de procesadores (normalmente CPU y GPU ). generalmente en el mismo circuito integrado , para proporcionar lo mejor de ambos mundos: procesamiento general de GPU (aparte 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 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 que antes eran discretos se conviertan en partes integradas de un sistema en chip o SoC. [ cita necesaria ] 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.).

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 de energía (EDP). . [3] El anuncio de AMD de 2014 sobre sus SoC ARM y x86 compatibles con pines, nombre en clave Proyecto Skybridge, [4] sugirió un multiprocesador de chip ISA heterogéneo (ARM+x86) en ciernes. [ cita necesaria ]

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í tienen diferentes velocidades. [5] La configuración es más similar a la de un multiprocesador simétrico . (Aunque estos sistemas son técnicamente multiprocesadores asimétricos , los núcleos no difieren en funciones o acceso a dispositivos). Generalmente hay dos tipos de núcleos: un núcleo de mayor rendimiento generalmente conocido como el "grande" o núcleo P y un núcleo con mayor eficiencia energética. generalmente conocido como el "pequeño" o E-core. Los términos núcleos P y E se suelen utilizar en relación con la implementación de informática heterogénea de Intel, mientras que los términos núcleos grandes y pequeños se suelen utilizar en relación con la arquitectura ARM.

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

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]

Arquitectura ISA o de conjunto de instrucciones
Los elementos informáticos pueden tener diferentes arquitecturas de conjuntos de instrucciones, lo que genera incompatibilidad binaria.
ABI o interfaz binaria de aplicación
Los elementos informáticos pueden interpretar la memoria de diferentes maneras. [9] Esto puede incluir endianidad , convención de llamada y diseño de 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 sistema operativo no estén disponibles de manera uniforme para todos los elementos informáticos. [10]
Implementación de bajo nivel de características del lenguaje
Las características del lenguaje, como funciones y subprocesos, a menudo se implementan mediante punteros de función , un mecanismo que requiere traducción o abstracción adicional cuando se usa en entornos heterogéneos.
Interfaz de memoria y jerarquía
Los elementos informáticos 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. [11]
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 scratchpad , etc. Además, ciertas partes de un sistema heterogéneo pueden ser coherentes con la caché, mientras que otras pueden requerir una participación explícita del software para mantener la coherencia. y coherencia.
Actuación
Un sistema heterogéneo puede tener CPU que son idénticas en términos de arquitectura, pero que 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 de sistemas operativos a veces pueden generar problemas de previsibilidad del rendimiento, especialmente con cargas de trabajo mixtas.
Herramientas de desarrollo
Los diferentes tipos de procesadores normalmente requerirían diferentes herramientas (editores, compiladores,...) para los desarrolladores de software, lo que introduce complejidad al dividir la aplicación entre ellos. [12]
Partición 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 pequeño de particiones, se ha demostrado que existen particiones óptimas que equilibran perfectamente la carga y minimizan el volumen de comunicación. [14]

Hardware de ejemplo

Se puede encontrar hardware informático heterogéneo en todos los ámbitos 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

  1. ^ Shan, Amar (2006). Procesamiento heterogéneo: una estrategia para aumentar la ley de Moore. Diario de Linux.
  2. ^ "Fundación 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 ISA: diseño de un multiprocesador de chip ISA heterogéneo. Actas del 41º Simposio Internacional Anual sobre Arquitectura de Computadores.
  4. ^ Anand Lal Shimpi (5 de mayo de 2014). "AMD anuncia el proyecto SkyBridge: SoC x86 y ARM compatibles con pines en 2015, compatibilidad con Android". AnandTech . Consultado 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 Graphics Core Next integrada.
  5. ^ "Programación consciente de la energía". La documentación del kernel de Linux .
  6. ^ Un estudio de técnicas para la arquitectura y la gestión de procesadores multinúcleo asimétricos, ACM Computing Surveys, 2015.
  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). Incorporación de procesadores heterogéneos a la corriente principal (PDF) . Simposio sobre aceleradores de aplicaciones en informática de alto rendimiento (SAAHPC).
  9. ^ "Asignación de datos multimedia consciente de los costos para memoria heterogénea mediante algoritmo genético en computación en la nube" (PDF) . IEEE. 2016. {{cite journal}}: Citar diario requiere |journal=( ayuda )
  10. ^ Agrón, Jason; Andrews, David (2009). Micronúcleos de hardware para sistemas Manycore 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 de procesador mixto". www.electronicdesign.com . Consultado el 9 de agosto de 2023 .
  13. ^ Beaumont, Olivier; Boudet, Vicente; Rastello, Fabrice; Robert, Yves (agosto de 2002). "División de un cuadrado en rectángulos: algoritmos de aproximación y completitud NP" (PDF) . Algorítmica . 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) . Transacciones IEEE sobre informática distribuida y paralela .
  15. ^ Gschwind, Michael (2005). Una novedosa arquitectura SIMD para el multiprocesador de chip heterogéneo Cell (PDF) . Hot Chips: un simposio sobre chips de alto rendimiento. Archivado desde el original (PDF) el 18 de junio de 2020 . Consultado el 28 de octubre de 2014 .