Programmer pour des systèmes multicoeurs s'avère complexe. Pour réduire les difficultés posées, un consortium industriel conduit par AMD cherche à franchir une étape sur la portabilité des applications entre les différents terminaux, architectures et systèmes d'exploitation. La Fondation HSA, pour Heterogeneous System Architecture, doit présenter aujourd'hui une architecture de mémoire uniforme appelée HUMA qui rend différents types de mémoire accessibles à tous les processeurs au sein d'un système. En supprimant les barrières qui séparent ces différents types, les développeurs accèdent à des ressources partagées de mémoire plus importantes dans lesquelles le code peut s'exécuter.

La spécification présentée fait partie du standard matériel ouvert de HSA. L'objectif est de pouvoir distribuer l'exécution d'un programme entre les ressources de traitement dans les serveurs, PC et terminaux mobiles. HSA veut créer une interface basique autour d'outils  standards de programmation parallèle de façon à ce que le code puisse être écrit et compilé une seule fois pour de nombreux terminaux.

Les processeurs Kaveri partagent la mémoire entre CPU et GPU

Actuellement, les ordinateurs et les terminaux mobiles associent à leurs processeurs de nombreux co-processeurs pour accélérer les traitements informatiques : puces graphiques, DSP (digital signal processors) et FPGA (Field Programmable Gate Arrays) pour le traitement  du signal, processeurs réseaux et circuits intégrés spécialisés (Asics). Les processeurs les plus rapides maîtrisent la puissance de traitement des GPU et des CPU pour des calculs mathématiques complexes dans les HPC, tandis que les terminaux mobiles se servent de plusieurs processeurs pour l'affichage graphique et la sécurité.

AMD doit livrer cette année les processeurs Kaveri, pour portables et desktops, intégrant des CPU et des puces graphiques capables de partager de la mémoire. Les objectifs poursuivis par la Fondation HSA ne sont pas uniquement liés à la stratégie processeurs d'AMD, le fabricant intégrant la propriété intellectuelle d'autres sociétés afin que les puces puissent être personnalisées en fonction des besoins des clients. Par exemple, AMD fabrique des puces customisées pour la prochaine console de jeu PlayStation 4 de Sony.

Allocation de mémoire dynamique

HSA veut aussi réduire les coûts de développement et le besoin de recompiler le code pour d'autres terminaux ou architectures de processeur. Parmi les caractéristiques d'HUMA, on trouve l'allocation de mémoire dynamique et l'accès rapide du GPU à la mémoire. « Toutes les unités de traitement auront les mêmes priorités et pourront utiliser la même mémoire », résume Jim McGregor, analyste du cabinet Tirias Research.

HUMA s'assure que chaque composante matérielle accède aux mêmes données, afin qu'il ne soit pas nécessaire de copier l'information dans différents types de mémoire. Pour l'instant, les GPU et les CPU accèdent à différents caches et types de mémoires et la spécification va casser ce moule classique dans lequel le processeur alloue de la mémoire pour l'exécution du code, mais où l'information est copiée dans la mémoire du GPU pour pouvoir être exécutée par le processeur graphique. « L'autre volet, c'est l'unification de l'architecture matérielle et logicielle. Si vous écrivez en C++, vous pouvez demander que le GPU l'exécute », poursuite Jim McGregor. La spécification diminue aussi le  besoin de transférer les données entre les mémoires ce qui simplifie les problèmes de goulets d'étranglement, ajoute l'analyste.

HSA Foundation
Le site de la Fondation HSA présente les objectifs du consortium.(cliquer ici pour agrandir l'image)

Intel et Nvidia n'ont encore pas rejoint HSA

Selon Phil Rogers, ingénieur émérite d'AMD qui intervenait lors d'une conférence téléphonique, la nouvelle spécification reconnaît différents systèmes de stockage et interconnexions réseaux. Il n'a pas précisé en revanche si elle prendrait en compte les unités de stockage non volatile utilisées comme de la mémoire. De nombreuses installations serveurs se servent de stockage SSD (solid-state drives) comme mémoire cache dans laquelle les données sont copiées et stockées de façon temporaire pendant qu'une tâche s'exécute. Facebook a par exemple lancé l'idée d'utiliser des disques SSD pour remplacer les DRAM.

Parmi les membres de la Fondation HSA, on trouve aussi ARM, Sony, MediaTek, Qualcomm, Samsung,  Texas Instruments, LG Electronics, Imagination Technologies and ST Ericsson. En revanche, Intel n'en fait pas partie et utilise avec ses puces ses propres co-processeurs, compilateurs et outils de programmation. [NDLR : Peut-être qu'Intel finira par rejoindre, à terme, l'aventure HSA menée par AMD comme il l'avait fait sur l'architecture x86-64, avec son jeu d'instructions EM64T, inspiré d'AMD64].

Nvidia explore aussi le partage des ressources mémoire

L'idée de partager les ressources mémoire est aussi explorée par Nvidia, concurrent d'AMD qui ne fait pas partie non plus de la Fondation HSA. L'an prochain, le fabricant prévoit de sortir un processeur graphique basé sur l'architecture Maxwell qui unifiera les mémoires GPU et CPU. Le GPU sera capable d'exploiter la mémoire CPU et vice versa. Il sera aussi plus facile d'écrire des applications avec des ressources mémoire unifiées. Les smartphones et les tablettes pourront disposer d'une mémoire unifiée avec le prochain processeur Tegra 5 (nom de code Logan) dont le processeur graphique reposera sur l'architecture Maxwell et qui supportera CUDA, le langage de programmation parallèle de Nvidia pour l'exploitation des GPU dans les HPC.

HUMA est compatible avec des langages de développement populaires comme C, C++ et Python, ainsi qu'avec de nombreux systèmes d'exploitation, souligne AMD.