SiFive rappelle à tout le monde que vous n’avez pas toujours besoin de décharger les mathématiques vectorielles: voici un processeur RISC-V qui peut également le traiter

  • FrançaisFrançais


  • SiFive, dans sa marche continue pour aider à faire de RISC-V une architecture de processeur grand public, lancera aujourd’hui son cœur de processeur VIU75 capable d’accélérer les mathématiques vectorielles.

    Il est actuellement à la mode de décharger les opérations lourdes de vecteurs, telles que les algorithmes d’IA et les analyses associées, vers des cœurs de traitement non CPU, généralement des GPU et des moteurs d’apprentissage automatique dédiés, pour accélérer l’exécution de la charge de travail. Pourtant, il ne faut pas oublier que les cœurs de processeur Intel et AMD ont AVX, et Arm a NEON et SVE, pour fonctionner efficacement sur des tableaux de données.

    En d’autres termes, vous n’avez pas à décharger tous les calculs vectoriels vers une unité extérieure – si vous le souhaitez, cela peut être fait rapidement en utilisant les instructions vectorielles fournies par un cœur de processeur, si de telles fonctionnalités sont disponibles. Cela évite d’avoir à shunter des données vers une unité distincte et de recopier le résultat, généralement sur une sorte de bus, et évite également d’avoir à construire un accélérateur séparé dans votre système sur puce ou dans la conception de votre ordinateur. Si vous avez suffisamment de cœurs de processeur pour supporter la charge, le faire sans matériel spécialisé supplémentaire peut répondre à vos besoins. Parfois, il est plus judicieux d’utiliser une unité distincte.

    Dans tous les cas, nous voici avec le VIU75 de SiFive: un cœur de processeur RISC-V (RV64GCV) 64 bits qui exécute le code d’application et implémente le jeu d’instructions d’extension vectorielle de l’architecture pour traiter de manière optimale des tableaux de données.

    Qu’ont-ils fait – lui tordre le bras? L’ex-senior Veep de Qualcomm rejoint SiFive en tant que PDG de RISC-V PC pour les développeurs taquiné

    LIRE LA SUITE

    Nous notons qu’à l’heure actuelle, l’extension vectorielle de RISC-V, parfois abrégée en RVV, est toujours à l’état de brouillon, à la version 0.9, et doit encore être approuvée par l’organisme officiel de l’architecture, RISC-V International. Cependant, SiFive semble confiant qu’au moment où vous obtiendrez une licence et utiliserez le VIU75 dans votre système sur puce, le noyau prendra en charge une version 1.0 ratifiée de l’extension.

    Cette ratification signifie que tous les cœurs de CPU RISC-V qui implémentent l’extension vectorielle sont compatibles au niveau de l’exécutable binaire; le code qui s’exécute sur un cœur SiFive RV64GCV fonctionnera, par exemple, sur un cœur RV64GCV des Andes. Un certain nombre de cofondateurs de l’architecture RISC-V travaillent chez SiFive, ils savent donc probablement ce qu’ils font ici.

    Il existe un guide fantastique pour écrire du code RVV ici, par Georg Sauthoff, si vous souhaitez aborder la fonctionnalité au niveau de l’assemblage. Cela dit, vous n’avez pas besoin d’aller aussi bas pour utiliser l’extension vectorielle: des éléments intrinsèques ont été développés pour les chaînes d’outils GCC et LLVM et devraient être en amont, ce qui signifie que vous pouvez accéder à l’extension du jeu d’instructions de haut code de niveau. Et LLVM, pour sa part, va autovectoriser votre code en instructions RVV, ce qui signifie que vous pouvez simplement écrire une source normale et portable et LLVM utilisera automatiquement les bonnes instructions vectorielles au moment de la compilation, lors du ciblage de RVV. L’inventeur de LLVM Chris Lattner travaille maintenant chez SiFive, donc encore une fois, ils savent probablement ce qu’ils font ici.

    La European Processor Initiative, qui conçoit des accélérateurs basés sur RISC-V pour les supercalculateurs et a travaillé avec SiFive sur le support logiciel RVV, a plus d’un aperçu de l’extension ici.

    Comme vous pouvez vous y attendre d’un ensemble d’extensions vectorielles, il est conçu pour alimenter rapidement les données du tableau et fonctionner simultanément sur ses éléments, et produire les résultats en une seule fois. Cet article de la conception du processeur, doyen David Patterson et l’ingénieur en chef de SiFive, Andrew Waterman, soutient que RVV est plus élégant et efficace que les jeux d’instructions SIMD correspondants de x86 et MIPS.

    Une particularité clé de RVV est le fait qu’il prend en charge les vecteurs de longueur variable et est généralement plus flexible que les autres architectures: vous n’êtes pas fixé à des tailles de tableau de 128, 256 ou 512 bits, par exemple, avec RISC-V. Cela signifie que vous n’êtes pas nécessairement obligé de calculer les derniers éléments d’un vecteur à l’aide d’instructions scalaires, ou de rejeter les résultats, si votre tableau ne correspond pas exactement à une longueur fixe. Cela réduit la complexité des routines logicielles.

    Outre tout cela, VIU75 est un cœur d’application RISC-V standard qui peut exécuter Linux et d’autres systèmes d’exploitation construits pour l’architecture, possède une MMU (SV39 ou SV48), et les modes de privilège habituels: mode machine pour le code au niveau du firmware, superviseur pour les noyaux et utilisateur pour les applications. Il est décrit comme ayant un modeste pipeline en ordre à deux étages à huit étages avec une unité vectorielle découplée pouvant fonctionner sur jusqu’à 256 bits par cycle d’horloge en utilisant des types de données de 8 à 64 bits, qui peuvent être à virgule flottante, à virgule fixe ou à des entiers. . Vous trouverez ci-dessous un exemple de schéma de principe d’un système sur puce utilisant quatre cœurs de processeur VIU75 ainsi qu’un noyau 64 bits non RVV en option réservé aux tâches de maintenance du système.

    Diapositive de la présentation Linley 2020 de SiFive montrant le diagramme du VI7

    Schéma fonctionnel d’un éventuel système sur puce VI7 … Source: SiFive

    CLINT et PLIC sont les contrôleurs d’interruption, Debg est l’interface de débogage et PMP est une unité de protection de la mémoire physique qui fournit une couche optionnelle supplémentaire d’isolation matérielle entre les cœurs de processeur.

    Ci-dessous, une vue à l’intérieur de chaque noyau VIU75. On nous dit qu’il faut deux cycles pour terminer une opération vectorielle de 512 bits et que le cache L2 est traité comme mémoire principale sans pénalité de chargement à l’utilisation. SiFive suggère d’utiliser la carte FPGA Virtex UltraScale + VCU118 de Xilinx pour évaluer la conception du processeur. Ce kit est livré avec 4 Go de RAM, un emplacement pour carte SD, USB, PCIe, etc., ainsi qu’un FPGA substantiel pour implémenter les cœurs, mais gardez à l’esprit qu’il s’agit d’un équipement professionnel: cela vous coûtera sept mille dollars. .

    Diapositive de la présentation Linley 2020 de SiFive montrant le pipeline VIU7

    Schéma montrant le pipeline du VIU75 … Source: SiFive

    SiFive présentera son noyau VIU75 aujourd’hui à la Linley Fall Processor Conference de cette année. Andes Technology décrira également son cœur de processeur RISC-V NX27V capable de vecteurs dans le désordre, censé atteindre 96 GFLOPS. ®

    Laisser un commentaire

    Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *