3 points par GN⁺ 2023-11-05 | 1 commentaires | Partager sur WhatsApp
  • AMD MicroBlaze V est une IP de processeur softcore RISC-V destinée aux AMD adaptive SoC et FPGA, intégrée aux flux de conception Vivado et Vitis
  • Tout en conservant la compatibilité matérielle des conceptions MicroBlaze existantes, il vise la portabilité logicielle basée sur l’ISA RISC-V et l’exploitation de l’écosystème open source
  • Il permet de configurer les jeux d’instructions de base RV32I et RV64I, avec au choix les extensions M/A/F/C ainsi que les extensions de manipulation de bits ZBa, ZBB, ZBc, ZBs
  • Des configurations prédéfinies sont proposées, du microcontrôleur au processeur applicatif, avec 4 options de pipeline et des fonctions de sûreté comme le dual-core lockstep et le TMR
  • Il peut cibler sans coût supplémentaire tout AMD adaptive SoC ou FPGA pris en charge par Vivado Design Suite, mais RV64I et le Memory Protection Unit sont en Early Access, tandis que le Memory Management Unit est encore à l’étape de feuille de route

Processeur logiciel RISC-V pour AMD adaptive SoC et FPGA

  • AMD MicroBlaze V est une IP de processeur softcore RISC-V pour les AMD adaptive SoC et FPGA
  • Il s’appuie sur l’architecture de jeu d’instructions RISC-V (ISA) et propose une architecture modulaire et configurable adaptée aux applications de systèmes embarqués
  • Les développeurs peuvent cibler MicroBlaze V sans coût supplémentaire sur les AMD adaptive SoC ou FPGA pris en charge par Vivado Design Suite
  • RISC-V est une ISA standard open source gérée par l’organisation à but non lucratif RISC-V Foundation, dont AMD est membre depuis 2020

Configuration de l’ISA RISC-V et portabilité

  • MicroBlaze V repose sur une ISA open source soutenue par un écosystème de logiciels et de solutions couvrant l’ensemble de l’industrie
  • L’objectif de conception est de faciliter la migration matérielle des conceptions basées sur les processeurs MicroBlaze existants et d’améliorer la portabilité logicielle des conceptions RISC-V
  • Prise en charge configurable de l’ISA :
    • Jeu d’instructions entier de base RV32I et RV64I
    • Extension M pour la multiplication et la division
    • Extension A pour les instructions atomiques
    • Extension F pour le calcul en virgule flottante
    • Extension C pour la compression de code
    • Extensions ZBa, ZBB, ZBc, ZBs pour la manipulation de bits
  • La compression de code sert à réduire la taille du code et à économiser la mémoire de conception

Architecture, performances et fonctions de sûreté

  • Il est possible de choisir des configurations prédéfinies adaptées à différents types d’applications, du microcontrôleur au processeur applicatif
  • 4 options de pipeline sont proposées pour optimiser soit la surface, soit les performances
  • Des mécanismes de sûreté optionnels sont également inclus pour les systèmes critiques
    • Dual-core lockstep

      • Triple modular redundancy (TMR)

Flux de conception Vivado·Vitis et périphériques

  • MicroBlaze V propose un flux de conception intégré à Vivado Design Suite et aux Vitis software tools
  • Il est compatible avec tous les AMD adaptive SoC et FPGA pris en charge par les outils de conception Vivado
  • Il peut être utilisé via une interface graphique (GUI) ou une interface en ligne de commande (CLI)
  • Grâce à des IP optimisées, il est possible de déployer dans la logique programmable un sous-système processeur MicroBlaze V intégré, avec pour objectif de réduire le nombre de composants du système et le temps de développement
  • Principales catégories de périphériques pouvant être ajoutées par glisser-déposer :
    • General Purpose : Multichannel DMA, Streaming FIFO, Timer / Watchdog, Mutex / Mailbox
    • I/O : UART, USB 2.0, SPI, GPIO, PWM
    • Video : HDMI Camera/Display Interface, MIPI-CSI, MIPI-DSI, Video DMA
    • Memory : DDR, Quad SPI, SDRAM
    • Networking : Ethernet Subsystem, Controller Area Network

Exemples de configuration, documentation et état de la prise en charge

  • Deux exemples de configuration sont fournis : MicroBlaze V Microcontroller et MicroBlaze V with Memory Protection Unit
  • Configuration MicroBlaze V Microcontroller

    • Cœur processeur 32 bits RV32IMAFC
    • Interface de débogage JTAG
    • Tightly Coupled Local Memory
    • Contrôleur SPI, contrôleur I2C, UART
    • Contrôleur d’interruptions, Timer, GPIO
  • Configuration MicroBlaze V with Memory Protection Unit

    • Ensemble complet des blocs prédéfinis Microcontroller
    • Cache d’instructions
    • Memory Protection Unit

      • Cache de données
      • Contrôleur mémoire
  • Documentation et ressources de prise en charge

  • État de la prise en charge

    • La Microcontroller configuration est disponible en production
    • AMD MicroBlaze V avec RV64I et Memory Protection Unit est en Early Access
    • AMD MicroBlaze V avec Memory Management Unit figure sur la feuille de route

1 commentaires

 
GN⁺ 2023-11-05
Avis sur Hacker News
  • Cela peut prêter à confusion si l’on ne se souvient pas qu’AMD a récemment racheté Xilinx
    Il est probable que de plus en plus de nouveaux produits Xilinx portent désormais le nom AMD

    • Difficile d’y voir un nouveau produit sorti de nulle part. Xilinx MicroBlaze est une technologie vieille de plus de 20 ans, et c’était l’un des premiers « vrais » softcores développés pour les FPGA
      L’équivalent côté Intel serait Altera NIOS II
  • D’après un commentaire Reddit [1], ce serait comme ajouter un décodeur d’instructions RISC-V en amont du RTL MicroBlaze existant
    Dans l’optique de « créons le meilleur cœur RISC-V », cela ne semble pas avoir beaucoup de sens, mais ce n’a jamais été l’objectif de Xilinx/AMD
    MicroBlaze était un bon exemple de CPU RISC séquentiel ennuyeux, destiné à un créneau ennuyeux, et pour un fabricant de FPGA, un softcore est en quelque sorte un produit d’appel. Il aide à vendre du silicium, mais ne rapporte pas vraiment d’argent en soi. Comme il s’agit plutôt d’une technologie de « colle d’intégration » que de la partie FPGA déterminante pour les performances, « suffisamment bon » suffit
    Si AMD réutilise vraiment le RTL MicroBlaze, elle peut conserver le firmware existant (cœur, FPU, débogage, périphériques, etc.) et le logiciel (HAL, compilateurs, pilotes). C’est très attractif, à la fois pour le fournisseur et pour les utilisateurs qui veulent passer sans douleur au nouveau cœur MicroBlaze
    1: https://old.reddit.com/r/FPGA/comments/17mdcyt/microblaze_go...

    • Cet utilisateur Reddit a un karma de -5. Et alors qu’il suffit de quelques jours pour implémenter un cœur RISC-V simple à partir de zéro, cette idée n’a presque aucun sens
      Je ne m’appuierais pas sur cette information
      Cela dit, il dispose des mêmes interfaces externes que l’ancien MicroBlaze ; du point de vue matériel, c’est donc bien un remplaçant que l’on peut insérer tel quel dans une conception existante
    • Il est exact que, pour un fabricant de FPGA, un softcore est un produit d’appel. Ces technologies d’activation ne rapportent pas d’argent par elles-mêmes, elles ne sont donc pas considérées comme précieuses dans les entreprises hardware
      C’est pourquoi les PDG milliardaires de Xilinx et d’Altera secouent tristement la tête quand ils entendent dire que Jensen Huang continue d’investir massivement dans la stack logicielle de Nvidia. Un jour, ils finiront par comprendre où se trouve la vraie valeur
  • Quelqu’un peut expliquer en quoi cette annonce est importante pour RISC-V ?

    • Les autres grands fabricants de FPGA ont déjà commencé, il y a plusieurs années, à proposer des cœurs RISC-V officiellement pris en charge comme alternative à leurs cœurs à jeu d’instructions propriétaire
      Bien sûr, il existe aussi beaucoup de cœurs tiers sur GitHub, mais le fait qu’ils soient officiellement intégrés et pris en charge dans l’IDE et les outils compte pour de nombreux clients
      MicroSemi propose des softcores RISC-V depuis 2017, et fournit aussi des hardcores depuis fin 2020, comme avec le PolarFire SoC. On peut citer par exemple les nouvelles BeagleBoard Fire, Icicle, etc.
      Lattice a annoncé son premier softcore RISC-V officiel vers juin 2020, a annoncé une collaboration avec SiFive en décembre 2019, puis a publié des versions améliorées vers mi-2021, comme un cœur à 800 LUT
      Intel a introduit Nios V en octobre 2021
    • MicroBlaze était un cœur situé dans la catégorie de taille en nombre de portes que RISC-V est en train de grignoter activement
      Des solutions comme Tensilica ou ARC ont elles aussi perdu beaucoup de valeur ajoutée dans ce segment. Pour avoir porté moi-même un noyau sur MicroBlaze, c’est globalement un RISC pipeline classique dans la plage d’environ 20 000 portes, quelque part entre MIPS et SH4
      Le plus intéressant dans cette annonce, c’est qu’AMD/Xilinx est allé assez loin pour redéfinir le terme de marque « MicroBlaze » lui-même, plutôt que de créer un nouveau nom et de continuer à prendre en charge les mises à jour de l’ancien MicroBlaze
    • L’ancien SiFive avait un cœur RV32 pouvant tenir dans un Artix-7, mais il restait assez basique
      Les entrées/sorties étaient hétéroclites, et il n’était pas possible d’utiliser la DRAM intégrée à la carte. Ce serait chouette de voir un softcore RV32 officiellement pris en charge sur Artix-7
      J’ai utilisé MicroBlaze avec de plutôt bons résultats par le passé, mais c’était très fermé, donc je n’aurais pas envisagé de m’en servir hors tests ou enseignement. Je ne suis pas un fan inconditionnel de RISC-V, mais il convient bien à ce genre de domaine. L’idée est : « nous fournissons des outils utilisant un jeu d’instructions dans lequel vous avez peut-être déjà investi, sans essayer de vous enfermer aussi dans cette chaîne d’outils »
      Le verrouillage par AMD/Xilinx sous le niveau du jeu d’instructions est acceptable dans une certaine mesure. De toute façon, que l’on achète un FPGA ou un composant catalogue hypothétique à venir un jour, il faudra probablement payer le hardware
    • Xilinx est un fabricant de FPGA assez important, et MicroBlaze offre des fonctions de tolérance aux pannes assez solides, notamment le TMR
      Le TMR lui-même n’est pas nouveau dans RISC-V, mais cela signifie que de nombreux projets utilisant déjà MicroBlaze, ainsi que de nouveaux projets qui voudraient utiliser MicroBlaze, peuvent désormais utiliser RISC-V
    • Il peut fonctionner à la fois comme microcontrôleur et comme CPU temps réel
      RISC-V est déjà assez populaire sur ce marché
  • Je me demande quels seraient les cas d’usage de MicroBlaze V par rapport, par exemple, à SERV https://serv.readthedocs.io/en/latest/servant.html
    Autrement dit, hormis l’approbation officielle du fabricant de puces, le seul avantage de MicroBlaze V semble être la vitesse. Les CPU sur FPGA ne servent-ils pas généralement à des tâches peu sensibles au temps ? L’idée est plutôt que les tâches rapides et sensibles au temps soient gérées par le fabric FPGA, avec les interfaces d’E/S on-chip

    • Le point clé, ce sont les outils et le support. On ne veut pas bidouiller soi-même un softcore RISC-V ; on veut simplement que ça fonctionne et que ce soit déjà bien connecté aux choses qui comptent vraiment
      MicroBlaze permet de configurer littéralement son propre softcore par glisser-déposer, en choisissant parmi diverses options de configuration et périphériques. Il inclut aussi un SDK pour les applications utilisateur et des outils de débogage pour trouver l’origine des problèmes
      En développant avec SERV, il ne serait pas surprenant que le temps de développement soit plusieurs ordres de grandeur plus long, ne serait-ce qu’à cause de la moindre maturité des outils
  • C’est bien qu’un nouveau softcore arrive, mais je me demande s’il fallait vraiment polluer davantage l’espace de noms
    MicroBlaze est déjà le nom d’une architecture que quelqu’un peut chercher
    Ils auraient pu l’appeler simplement AMDcoreV, ou quelque chose du genre

    • Exact. MicroBlaze est le nom d’une architecture détenue par AMD et, d’après l’article, ce cœur est compatible avec elle

      It allows developers to leverage the open-source RISC-V software ecosystem, is hardware compatible with the classic MicroBlaze processor

    • L’interface vue depuis le HDL est la même. En revanche, côté logiciel, c’est le jeu d’instructions RISC-V, qui est en train de devenir rapidement l’écosystème le plus solide
      Il suffit de recompiler, et cette fois on peut utiliser des outils fiables et standards de l’industrie comme gcc, binutils ou llvm, au lieu de devoir composer avec des outils médiocres, pauvres, propriétaires et sur mesure
    • C’est le nouveau Xilinx MicroBlaze. Il est passé d’un jeu d’instructions proche de l’AVR à RV32
    • Tu ne parles pas de cette architecture MicroBlaze dont AMD a hérité via le rachat de Xilinx ?
    • Cela dit, MicroBlaze V, c’est quand même mieux que de l’utiliser tel quel sans suffixe
  • Est-ce qu’il intègre l’équivalent d’un PSP ou d’un ME ? J’en ai assez des CPU boîte noire louches, peu sûrs et impossibles à patcher

  • Le cœur lui-même est-il open source ?

    • Probablement pas, mais AMD a dit qu’il pouvait être utilisé gratuitement sur n’importe quel FPGA AMD (Xilinx)
      S’il avait fallu payer une licence, il existe des alternatives gratuites, donc cette annonce n’aurait pas eu d’intérêt
      On peut supposer que ce cœur est bien optimisé pour utiliser efficacement les ressources des FPGA Xilinx, et c’est probablement son avantage par rapport aux alternatives
    • Ce n’est peut-être pas sous licence open source, mais le code source des anciens cœurs MicroBlaze était inclus dans le kit de développement et faiblement obfusqué
      Ils n’avaient même pas supprimé les commentaires du code source
  • Ce serait bien d’avoir un aperçu comparatif de ces softcores RISC-V
    Des choses comme : est-ce open source, quel score CoreMark, quelle taille, etc.
    neorv, serv, vexrisc, nios v, microblaze v, etc.

  • Existe-t-il un kit de développement pour essayer ça ? Par où commencer ?

  • C’est un premier pas, et c’est bon signe
    J’aurais toutefois préféré un cœur 64 bits plutôt qu’un cœur 32 bits. En écrivant des chemins de code en assembleur RISC-V 64 bits, on pourrait vraiment les réutiliser sur desktop, serveur et embarqué

    • Ce n’est pas un « premier pas ». C’est déjà une étape parmi plusieurs
      Si tu veux un cœur 64 bits, tu n’es probablement pas dans le marché visé
      Réutiliser de l’assembleur RISC-V 64 bits entre desktop, serveur et embarqué n’est pas non plus réaliste. Les desktops et serveurs sont de fait quasiment exclusivement 64 bits, tandis que l’embarqué utilise surtout des cœurs 32 bits, donc il n’y a pas beaucoup de recouvrement
      Au-delà de la différence entre 32 et 64 bits, l’environnement de programmation est aussi très différent : complexité du système, procédure de démarrage, manière d’interagir avec l’extérieur, etc.
      En résumé, il faut choisir l’appareil cible et coder pour lui. Si l’on veut déplacer facilement du code entre différents types d’appareils, mieux vaut l’écrire dans un autre langage que l’assembleur