- 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
- MicroBlaze V Processor Quick Start Guide : guide pas à pas pour créer un système processeur AMD MicroBlaze V de base à l’aide des conceptions prédéfinies du processeur
- MicroBlaze V Processor Reference Guide : fournit des informations sur les processeurs logiciels MicroBlaze V 32 bits et 64 bits inclus dans AMD Vivado Design Suite
- MicroBlaze Debug Module V Product Guide : fournit les spécifications de conception du cœur MDM V, qui permet le débogage JTAG d’un ou plusieurs processeurs MicroBlaze V
- Webinar: Getting Started with Zephyr® RTOS on the AMD MicroBlaze™ V Processor : traite de la configuration de Zephyr, du paramétrage et de la compilation d’applications pour MicroBlaze V
- Documentation : ensemble des guides utilisateur et guides produit de MicroBlaze V
- Wiki : présente la flexibilité permettant de choisir la combinaison nécessaire de périphériques, de mémoire et d’interfaces
-
É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
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
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...
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
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 ?
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
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
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
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
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
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
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
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 ?
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
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 ?
Comme c’est une conception FPGA Xilinx, il est logique de commencer avec une carte de développement Xilinx
https://www.xilinx.com/products/boards-and-kits/cost-optimiz...
Si tout ce qu’il te faut est un softcore RISC-V, il y a beaucoup d’options hors de l’écosystème Xilinx. Personnellement, je préfère les cartes bien prises en charge par yosys/nextpnr
0. https://www.joelw.id.au/FPGA/CheapFPGADevelopmentBoards
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é
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