Le MicroBlaze est un cœur de processeur softcore 32 bits de la société Xilinx. Il est conçu pour être implémenté sur les FPGA de ce fabricant. Le code source de MicroBlaze est fermé.
Le MicroBlaze est un microprocesseur softcore RISC, d'architecture Harvard, entièrement 32 bits. En effet, il possède :
Le processeur comporte 70 options de configuration permettant à l’utilisateur de sélectionner ou de paramétrer les composants internes selon ses besoins :
En 2006, il occupait entre 900 et 2600 'logic cells' et atteignait une fréquence maximale de 80 à 180 MHz selon la plateforme FPGA et les options sélectionnées.
FPGA | Taille | Fréquence | Dhrystone 2.1 | |
Virtex-4 (4VLX25-12) | 1'269 LUTs | 180 MHz | 166 DMIPS | 0.92 DMIPS/MHz |
Virtex-II Pro (2VP20-7) | 1'225 LUTs | 150 MHz | 138 DMIPS | 0.92 DMIPS/MHz |
Spartan-3 (3S1500-5) | 1'318 LUTs | 100 MHz | 92 DMIPS | 0.92 DMIPS/MHz |
En 2009, MicroBlaze v7.10 peut atteindre une fréquence de 105 à 235 MHz selon la plateforme FPGA :
FPGA | Configuration | Taille | Fréquence | Dhrystone 2.1 | |
Spartan-3 (3SD1800A-5) | pipeline à 5 niveaux | 1'809 LUTs | 105 MHz | 125 DMIPS | 1.19 DMIPS/MHz |
Spartan-3 (3SD1800A-5) | pipeline à 3 niveaux | 1'324 LUTs | 115 MHz | 110 DMIPS | 0.95 DMIPS/MHz |
Virtex-5 (5VLX50) | pipeline à 5 niveaux, sans MMU | 1'027 LUTs | 235 MHz | 280 DMIPS | 1.19 DMIPS/MHz |
Le bus OPB, conçu par IBM pour ses microcontrôleurs PowerPC, permet de lier plusieurs maîtres à plusieurs esclaves. Il autorise un maximum de 16 maîtres et un nombre d’esclaves illimité selon les ressources disponibles. Xilinx conseille néanmoins un maximum de 16 esclaves. Comme ce bus est multi maîtres, il a donc une politique d’arbitrage paramétrable. Ce bus permet donc d’ajouter des périphériques au MicroBlaze dont les besoins en communications seront faibles.
Le bus LMB est un bus synchrone utilisé principalement pour accéder aux blocks RAM inclus sur le FPGA. Il utilise un minimum de signaux de contrôle et protocole simple pour s’assurer d’accéder à la mémoire rapidement (un front d’horloge).
Le MicroBlaze comporte 8 liens entrées/sorties FSL. Le bus FSL est un moyen rapide de communication entre le processeur et une autre entité. Chaque lien FSL 32 bits est unidirectionnel (simplex) et met en œuvre une FIFO (pour stocker les données) et des signaux de contrôle (FULL, EMPTY, WRITE, READ,…). Il met aussi à la disposition du développeur plusieurs fonctions intéressantes dont les plus utilisées sont : “microblaze_bwrite_datafsl” et “microblaze_bread_datafsl”. Ces deux fonctions permettent d'échanger des donnéées entre différents microblazes, par exemple, en utilisant la FIFO déjà intégrée dans le bus FSL. Ces deux fonctions sont bloquantes; bwrite se bloque lorsque la FIFO du bus FSL est saturée et bread se bloque lorsque la FIFO est vide. Il doit y avoir un bwrite pour débloquer la lecture. Les communications sur les liens FSL se font très simplement grâce à des instructions prédéfinies. Elles peuvent atteindre les 300 Mo/s à 150 Mhz.
Le lien XCL est un lien FSL particulier, dédié à la connexion d'un contrôleur mémoire externe avec la mémoire cache interne. Ceci permet au contrôleur de cache de ne pas être ralenti par la latence du bus OPB.