J'ai pas trouvé de topic pour les VLIW-mais-pas-EPIC, donc j'ouvre un nouveau...
Pour ceux qui s'intéressent aux processeurs made-in-France, pas mal d'infos sur le MPPA-256 de Kalray ont été publiées.
Kalray, c'est une start-up fondée par des transfuges de ST Micro qui fait des processeurs many-core VLIW pour l'embarqué. (enfin un pour l'instant, pas sûr qu'il survivent assez longtemps pour en faire d'autres)
De manière assez inédite, le papier introduisant l'archi du MPPA-256 est publié en français, à la conf SympA.
Voici l'abstract :
Le papier n'est pas (encore) dispo sur le web, mais il a été présenté, donc toutes les infos sont publiques.La société Kalray conçoit et produit des calculateurs massivement parallèles intégrés en technologie CMOS 28nm à destination du marché de l’électronique professionnelle embarquée. Le calculateur MPPA-256 intègre 288 cœurs, dont 256 dédiés au calcul, et 32 dédiés au contrôle des périphériques dont deux réseaux de communication intégrés sur puce.
Tous les cœurs du MPPA-256 mettent en œuvre une même architecture de type ‘Very Long Instruction Word’ (VLIW). Ce choix répond aux exigences du calcul à hautes performances, à basse consommation, et avec une bonne prédictibilité des temps d’exécution. Le contrôle des périphériques et la gestion des deux réseaux intégrés sur puce demandent par ailleurs que l’architecture du cœur soit adaptée aux traitements de type ‘Micro-Controller Unit’ (MCU).
Nous décrivons la démarche de conception de cette architecture VLIW et sa mise en œuvre pour la réalisation des cœurs du calculateur MPPA-256. En particulier, nous motivons nos choix architecturaux et micro-architecturaux sur la base de retour d’expérience sur d’autres cœurs MCU, DSP et VLIW. Nous donnons également un aperçu de l’outillage de conception architecturale et de vérification de cœurs développé à l’occasion de cette réalisation.
Dans les grandes lignes:
La puce contient 16 nœuds avec chacun son espace d'adressage indépendant (donc comme un cluster de machines en réseau, pas comme un SMP à mémoire partagée). Chaque nœud contient 17 cœurs, dont 1 pour les I/O.
Le cœur K1 ressemble furieusement à une version améliorée du Lx/ST200 de ST Micro, mais c'est certainement un pur hasard. C'est un VLIW 32 bits à 5 voies : 1 branch, 1 load/store, 1 FPU/MAC, et 2 ALU. Il y a un seul banc de registres « plat » 32 bits avec 10 ports de lecture et 5 d'écriture. Pas d'autres registres séparés FP, SIMD ou exotiques genre prédicats, ni de numéros de registres réservés pour des registres spécialisés, pour simplifier la tâche du compilo. La gestion de la prédication est minimale par rapport à la plupart des VLIW, avec juste une instruction CMOV et des load/store conditionnels.
L'encodage des instructions permet des immédiats de 64-bit, afin d'éviter de se compliquer la vie avec des mémoires de constantes spécialisées.
L'unité mémoire a un seul port d'accès, pour que le coût de la MMU reste raisonnable. Les accès non-alignés sont gérés en matériel.
La FPU gère nativement les opérations
- float × float + double -> double,
- float × float + float × float -> double,
- double × double -> double
et c'est bien fait.
Le cœur (avec son cache L2 de 128K) fait 271 404 μm² en 28nm HP de TSMC. Dont 43 300 pour la FPU+MAC, 32 933 pour le banc de registre
(Pour les équivalents en gates, faut multiplier par 2.)
Tout ça tourne aux alentours de 800 MHz. Pour la conso, c'est plus dur d'avoir des chiffres précis, mais c'est « entre 5 et 10W » au total.