AMD hUMA: El próximo paso evolutivo de los controladores de memoria (ver video)

Publicado el 01 mayo 2013 por Davinci2411

AMD promueve activamente Heterogeneous System Architecture (HSA), un entorno de programación simplificado orientado a llevar al API de cómputo paralelo OpenCL a un gran número de arquitecturas. Un ambicioso plan, para el cual ha creado la Heterogeneous System Architecture Foundation (HSA Foundation), un consorcio a gran escala enfocado a armonizar la industria hacia el cómputo heterogéneo (CPU/GPU/FPGA/CMOS y otros tipos de microprocesadores). HSA es una arquitectura de cómputo inteligente que busca liberar a la industria de barreras que limitan la innovación y rápida evolución del hardware y software hacia un futuro donde ellos interactúen más activamente con nosotros, ayudándonos a resolver nuestras tareas, a la vez que nos ayudan en gran parte de nuestras actividades de la vida diaria, todo ello usando un lenguaje natural para nosotros (voz, gestos y tacto); algo como lo mostrado en el video a continuación:

Paralelismo en el CPU y GPU

Los actuales CPUs son muy buenos ejecutando complejas tareas con muchas dependencias (ramificaciones) y a gran velocidad, aunque un CPU mono-núcleo es capaz de realizar múltiples tareas dándonos una sensación de falso paralelismo (las tareas son realizadas de forma secuencial “en serie” a gran velocidad), los actuales CPUs multi-núcleo ofrecen verdadero paralelismo. Contrariamente a los CPUs, los GPUs poseen entre 1 y miles de núcleos (ALUs o shader processors), los que están optimizados para realizar múltiples tareas simultáneamente (en paralelo), pero estas tareas deben ser independientes de la otra (sin ramificaciones) para que muestren todo su potencial. Ambas unidades brillan en diversos tipos de tareas algunas de las cuales les sacan mayor partido a una u otra. HSA pretende que las aplicaciones puedan elegir la unidad de procesamiento (CPU/GPU o ambos) más adecuada para ofrecer el mayor rendimiento posible y aprovechar al máximo el potencial del chip.

¿Cuáles son los requisitos de hardware para HSA?

HSA promete revolucionar el avance de nuestros diversos dispositivos computarizados, pero aunque muchos CPUs y GPUs actuales soporten de cierta forma a HSA, no serán capaces de explotar a plenitud todas sus características, para lo cual se requiere de una unificación e integración total del direccionamiento de memoria, para lo cual el controlador de memoria (Memory Controller) tendrá que evolucionar para integrar las tecnologías de acceso a memoria UMA y NUMA.

¿Qué son UMA y NUMA?

UMA (Uniform Memory Access) es la arquitectura de memoria compartida usada en nuestros actuales microprocesadores multi-núcleo, donde cada uno de los núcleos acceden (leer/escribir/buscar) al controlador de memoria de forma uniforme (espacio de direccionamiento de memoria unificado) e independiente del proceso que realicen (cada núcleo posee sus propias memorias cache L1/L2/L3). NUMA (Non-Uniform Memory Access) es una arquitectura de memoria donde cada procesador (CPU/GPU) posee su propia memoria local (de rápido tiempo de acceso) pero a la vez pueden acceder a un espacio de memoria no-local compartida (de más lento tiempo de acceso) por medio de posiciones relativas de memoria. NUMA es usada en el controlador de memoria de nuestros actuales microprocesadores y chipsets con gráficos integrados (IGP). Desde la aparición de los primeros chipsets (SiS 5596) y CPUs (Cyrix MediaGX) con gráficos integrados, los controladores de memoria adoptaron ambas arquitecturas de memoria, dividiendo la memoria en áreas dedicadas a ambas unidades (Video Memory Frame Buffer para el IGP). El uso combinado de ambas arquitecturas de memoria es muy engorroso en la actualidad (sobre-todo con las aplicaciones aceleradas por GPU), pues se requiere leer, escribir, buscar y comparar los mismos datos en ambos espacios de direcciones (proceso que consume demasiados ciclos de procesamiento) a fin de que los programas actuales puedan usar ambas unidades para ejecutarse con mayor rendimiento, proceso para el cual irónicamente pierden mucho del rendimiento teórico máximo de ambas. Es en este punto donde se hace necesaria una nueva arquitectura que elimine los inconvenientes de estas arquitecturas de memoria con varias décadas de antigüedad: AMD hUMA.

hUMA

AMD hUMA (Heterogeneous Uniform Memory Access o acceso uniforme y heterogéneo a la memoria, simplemente UMA heterogeneo) es una nueva, moderna y sofisticada arquitectura de memoria diseñada para unificar el espacio de direccionamiento de memoria entre CPU y GPU (compartiendo el espacio de memoria del primero) a fin de aprovechar todo el potencial que son capaces de ofrecernos, eliminando muchos de los cuellos de botella de las actuales UMA y NUMA. Para lograr ello, AMD ha rediseñado significativamente el controlador de memoria usado en sus futuros CPUs, APUs y GPUs, a fin de que soporte nativamente hUMA, incluyendo un mecanismo de coherencia por hardware (DRAM/cache), el cual vela en tiempo real que cada unidad de hardware (CPU y GPU) accedan a los mismos datos en memoria (actualizados de forma coherente) eliminando la necesidad de mantener porciones separadas de memoria (sean locales o no-locales) y de múltiples copias de la misma información en dichas pociones. CPU y GPU pueden acceder al mismo espacio de memoria (tanto física como virtual) con la misma prioridad (uniforme), por medio de punteros de memoria compartidos, permitiendo a ambas unidades acceder al espacio de memoria completo (leer/escribir/buscar datos almacenados en memoria), de forma dinámica, paginable, bi-direccional, de alta velocidad y baja latencia. Dado que el acceso a memoria unificado es realizado completamente por hardware, será totalmente transparente ante el sistema operativo y aplicaciones.

Los beneficios de hUMA

AMD afirma que hUMA beneficia tanto a usuarios como desarrolladores, simplificando y facilitando de sobremanera la labor de los programadores en aplicaciones gráficas (juegos, aplicaciones de modelado 3D profesionales y otras) y aceleradas por GPU (GPGPU), los que no tendrán que lidiar con múltiples artificios para evitar los cuellos de botella impuestos por UMA y NUMA. Sin dudas hUMA ha sido especialmente concebido para impulsar HSA, la que AMD espera sea adoptada por grueso de la industria (sectores doméstico, entretenimiento, industrial y servidores) valiéndose en la influencia que tienen en la industria empresas como ARM, Qualcomm, Samsung, Imagination Technologies y las demás socias de HSA Foundation.

Productos compatibles con hUMA

AMD ha diseñado a hUMA como la arquitectura de memoria ideal para sus APUs y SoCs, los que integran CPU y GPU, y se convierten en los productos que obtendrán mayores beneficios de la nueva arquitectura de memoria, empezando desde los productos basados en la micro-arquitectura Steamroller (APU Kaveri), la futura micro-arquitectura de bajo consumo Jaguar+ (SoC Beema), y por lo visto también el APU de PlayStation 4. Aunque hUMA es ideal para APUs y SoCs, ello no quiere decir que serán los únicos que gozarán de este beneficio, pues se espera que otros productos de AMD (CPUs/GPUs) tendrán soporte a hUMA, los que aunque de cierta forma se verán algo limitados por el bus PCI Express, gozarán del resto de las ventajas de hUMA y del nuevo software diseñado para HSA; empezando desde los futuros GPUs basados en la arquitectura gráfica Sea Islands. AMD asegura que hUMA no es de uso exclusivo para sus propios productos, y les da la bienvenida a un gran número de microprocesadores de otras empresas (socias de HSA Foundation), por lo que no nos extrañaría que muy pronto tengamos una versión de hUMA integrada en los SoC ARM, MIPS, o en otros productos como FPGAs y otros tipos de microprocesadores y aceleradores programables. Fuentes:
-AMD-led consortium takes steps to break multicore programming barriers  (InfoWorld)
-AMD’s “heterogeneous Uniform Memory Access” coming this year in Kaveri  (Ars Technica)
-AMD sheds light on Kaveri’s uniform memory architecture  (The Tech Report)
-AMD rührt die Werbetrommel für seine HSA-Architektur und erklärt hUMA [Update]  (Planet 3DNow!)