De Wikipedia, la enciclopedia libre
Saltar a navegación Saltar a búsqueda

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 , que generalmente incorporan capacidades de procesamiento especializadas para manejar tareas particulares. [1]

Heterogeneidad [ editar ]

Por lo general, la heterogeneidad en el contexto de la informática se refiere a [ ¿cuándo? ] 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 (el procesamiento de números de punto flotante 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) [2] 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áticos intensivos en conjuntos de datos muy grandes), mientras que las CPU pueden funcionar el sistema operativo y realizar tareas tradicionales en serie.

El nivel de heterogeneidad en los sistemas informáticos modernos está aumentando 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. [ 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 , 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). . [3] El anuncio de AMD en 2014 sobre su ARM compatible con pines y SoC x86, con el nombre en clave Project Skybridge, [4] sugirió un multiprocesador de chip ISA heterogéneo (ARM + x86) en proceso. [ cita requerida ]

Topología de CPU heterogénea [ editar ]

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. [5] La configuración es más similar a un multiprocesador simétrico . (Aunque tales sistemas son multiprocesadores técnicamente asimétricos , los núcleos no difieren en roles o acceso a dispositivos).

Un uso común de dicha topología es proporcionar una mejor eficiencia energética en SoC móviles. ARM big.LITTLE 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. [6] Apple ha producido núcleos ARM de silicio de Apple con una organización similar. Intel también ha producido núcleos híbridos x86 con nombre en código Lakefield, aunque no sin importantes limitaciones en el soporte del conjunto de instrucciones.

Alder Lake utiliza núcleos grandes y pequeños.

Desafíos [ editar ]

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 de conjunto de instrucciones o ISA
    • Los elementos de cálculo pueden tener diferentes arquitecturas de conjuntos de instrucciones, lo que da lugar a incompatibilidad binaria.
  • ABI o interfaz binaria de la aplicación
    • Los elementos de cálculo pueden interpretar la memoria de diferentes formas. [9] Esto puede incluir endianidad , convención de llamadas 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 SO no estén disponibles de manera uniforme para todos los elementos informáticos. [10]
  • 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.
  • Actuación
    • 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.
  • 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-Complete. [11] 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. [12]

Hardware de ejemplo [ editar ]

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.

  • Computación de alto rendimiento
    • Cray XD1
    • Computadoras SRC SRC-6 y SRC-7
  • Sistemas integrados (DSP y plataformas móviles)
    • Texas Instruments OMAP
    • Dispositivos analógicos Blackfin
    • Snapdragon de Qualcomm
    • Nvidia Tegra
    • Samsung Exynos
    • Serie de Apple "A"
    • Unidades de procesamiento Movidius Myriad Vision , que incluyen varios procesadores simétricos, complementados con unidades de función fija y un par de controladores basados ​​en SPARC .
    • SoC HiSilicon Kirin
    • SoC de MediaTek
    • Sistemas de diseño de cadencia Tensilica DSP
  • Computación reconfigurable
    • Matriz de puertas programables en campo Xilinx (FPGA; por ejemplo, Virtex-II Pro, Virtex 4 FX, Virtex 5 FXT) y plataformas Zynq y Versal
    • Intel "Stellarton" (Atom + Altera FPGA )
  • Redes
    • Procesadores de red Intel IXP
    • Procesadores de red Netronome NFP
  • Dispositivos de computación, juegos y entretenimiento de uso general
    • CPU Intel Sandy Bridge, Ivy Bridge y Haswell
    • APU AMD Excavator y Ryzen
    • IBM Cell , que se encuentra en PlayStation 3 [13]
      • SpursEngine , una variante del procesador IBM Cell
    • Emotion Engine , que se encuentra en PlayStation 2
    • Arquitectura de CPU ARM big.LITTLE / DynamIQ
      • Casi todos los proveedores de ARM ofrecen soluciones heterogéneas; ARM, Qualcomm, Nvidia, Apple, Samsung, HiSilicon, MediaTek, etc.

Ver también [ editar ]

  • GPGPU
  • MPSoC
  • big.LITTLE / DynamIQ

Referencias [ editar ]

  1. ^ Shan, Amar (2006). Procesamiento heterogéneo: una estrategia para aumentar la ley de Moore . Revista de Linux.
  2. ^ "Fundación de arquitectura de sistema heterogéneo (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 Computadoras.
  4. Anand Lal Shimpi (5 de mayo de 2014). "AMD anuncia el proyecto SkyBridge: SoC x86 y ARM compatible con pines en 2015, compatibilidad con Android" . AnandTech . Consultado el 11 de junio de 2017 . El próximo año, AMD lanzará un SoC basado en Cortex A57 de 20 nm de bajo consumo con GPU Graphics Core Next integrada.
  5. ^ "Programación consciente de la energía" . La documentación del kernel de Linux .
  6. ^ Una encuesta de técnicas para la arquitectura y la gestión de procesadores multinúcleo asimétricos , Encuestas de computación ACM, 2015.
  7. ^ Kunzman, DM (2011). Programación de sistemas heterogéneos . Simposio Internacional de Talleres de Procesamiento En 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 Computación de Alto Rendimiento (SAAHPC).
  9. ^ "Asignación de datos multimedia consciente de costos para memoria heterogénea mediante algoritmo genético en computación en la nube" (PDF) . IEEE. 2016. Cite journal requiere |journal=( ayuda )
  10. ^ Agron, Jason; Andrews, David (2009). Microkernels de hardware para sistemas de muchos núcleos heterogéneos . Talleres de procesamiento paralelo, 2009. Conferencia internacional sobre procesamiento paralelo (ICPPW). doi : 10.1109 / ICPPW.2009.21 .
  11. ^ 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) . Algoritmica . 34 (3): 217–239. CiteSeerX 10.1.1.3.4967 . doi : 10.1007 / s00453-002-0962-9 .  
  12. ^ 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 en computación distribuida y paralela .
  13. ^ Gschwind, Michael (2005). Una nueva arquitectura SIMD para el multiprocesador de chips heterogéneos de Cell (PDF) . Hot Chips: un simposio sobre chips de alto rendimiento.