El texto que sigue es una traducción defectuosa.Si quieres colaborar con Wikipedia, busca el artículo original y mejora esta traducción.
Copia y pega el siguiente código en la página de discusión del autor de este artículo: {{subst:Aviso mal traducido|Computación heterogénea}} ~~~~
La computación heterogénea se refiere a sistemas que usan más de un tipo procesador. Son sistemas que ganan en rendimiento no solo por añadir el mismo tipo de procesadores, sino por añadir procesadores distintos. Normalmente, incorporando capacidades de procesado especializadas para realizar tareas particulares.[1]
Normalmente la heterogeneidad en el contexto de la computación hace referencia a diferentes arquitecturas de conjuntos de instrucciones (ISA), donde el procesador principal tiene uno y el resto tienen otro. Normalmente una arquitectura muy diferente (quizás más de una), no solamente una microarquitectura diferente (el procesamiento de números de coma flotante es un caso especial no siempre heterogéneo). Por ejemplo, el ARM big.LITTLE es una excepción donde las ISAs de los núcleos son iguales y la heterogeneidad se refiere a la velocidad de diferentes microarquitecturas de la misma ISA, siendo más bien un sistema de multiprocesamiento simétrico (SMP).
Antiguamente la computación heterogénea significaba que diferentes ISAs tenían que ser controladas de forma distinta, mientras que en un ejemplo moderno, los sistemas de Arquitectura de Sistema Heterogéneo (HSA), eliminan la diferencia (para el usuario); usan múltiples tipos de procesador (normalmente CPUs y GPUs), en el mismo circuito integrado, para dar lo mejor de ambos mundos: el procesamiento general de la GPU (aparte de sus bien conocidas capacidades gráficas de renderizado en 3D, también puede realizar cálculos matemáticos intensivos con conjuntos de datos muy grandes), mientras que las CPUs pueden ejecutar el sistema operativo y realizar tareas en serie tradicionales.[2]
El nivel de heterogeneidad en sistemas de computación moderna aumenta gradualmente y se incrementa en el área de los chips. El avance de las tecnologías de fabricación permite que los antiguos componentes se integren como partes de un system-on-chip, o SoC. Por ejemplo, muchos procesadores nuevos ahora incluyen una lógica integrada para interactuar con otros dispositivos (SATA, PCI, Ethernet, USB, RFID, Radios, UARTs, y controladores de memoria), así como unidades funcionales programables y aceleradores de hardware (GPUs, criptografíaco-procesadores, procesadores de red programables, codificadores/descodificadores A/V, etc.).
Los hallazgos recientes muestran que un chip multiprocesador de ISA-heterogénea que aprovecha la diversidad ofrecida por múltiples ISAs, puede aumentar el rendimiento de la mejor arquitectura heterogénea con ISAs del mismo tipo en un 21% con un ahorro de consumo energético del 23%.[3] El anuncio reciente de AMD sobre ARM y SoCs x86 conocido como Proyecto Skybridge sugiere un chip multiprocesador con una ISA heterogénea (ARM+x86).[4]
Sistemas de computación heterogénea presentan nuevos retos no encontrados en los típicos sistemas homogéneos.[5] La presencia de elementos de procesamiento múltiple incrementa todos los problemas relacionados con los sistemas homogéneos de procesamiento en paralelo, mientras que el nivel de heterogeneidad en el sistema puede introducir no-uniformidad en sistemas de desarrollo, prácticas de programación y en las capacidades del sistema global. Las áreas de heterogeneidad pueden incluir:[6]
ISA O arquitectura de conjunto de la instrucciones
Los elementos de cómputo pueden tener arquitecturas de conjunto de instrucciones diferentes, llevando a una incompatibilidad binaria.
Los elementos de cómputo pueden interpretar la memoria de manera diferente. Esto puede incluir tanto endianness, convención de llamada y diseño de memoria, y depende tanto de la arquitectura como del compilador utilizado.
Las librerías y los servicios del sistema operativo pueden no estar disponibles de forma uniforme para todos los elementos de cómputo.[7]
Implementación de Bajo-Nivel de las características del Lenguaje
Características del lenguaje tales como funciones e hilos de ejecución, a menudo se implementan utilizando punteros a función, un mecanismo qué requiere abstracción o traducción adicionales cuando se utilizan en entornos heterogéneos.
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 (NUMA). Se pueden encontrar diferencias en la habilidad para leer datos de longitud arbitraria. Algunos procesadores pueden realizar accesos de un byte de tamaño, de una palabra o en masa.
Interconexión
Los elementos de cómputo pueden tener diferentes formas de interconexión además de las interfaces básicas de memoria/bus. Esto puede incluir interfaces de red dedicada, dispositivos de acceso de memoria Directa (DMA), buzones, FIFOs, y memorias scratchpad, etc. Además, algunas porciones de un sistema heterogéneo pueden tener coherencia de caché, mientras que otros pueden requerir una implicación explícita del software para mantener la consistencia y la coherencia.
Rendimiento
Un sistema heterogéneo puede tener CPUs idénticas en términos de arquitectura, pero tener diferencias subyacentes en micro-arquitectura que conducen a varios niveles de rendimiento y consumo de energía.
Se pueden encontrar plataformas de computación heterogénea en cada ámbito de la informática—desde servidores dedicados y máquinas de alto rendimiento de cálculo hasta dispositivos embebidos de bajo consumo como los móviles y tabletas.