- AMD MicroBlaze V é um IP de processador RISC-V soft core para uso em AMD adaptive SoCs e FPGAs, integrado ao fluxo de projeto do Vivado e do Vitis
- Mantém a compatibilidade de hardware com projetos MicroBlaze existentes, ao mesmo tempo em que busca portabilidade de software baseada na ISA RISC-V e aproveitamento do ecossistema open source
- Permite configurar os conjuntos básicos de instruções RV32I e RV64I, com extensões opcionais M/A/F/C e extensões de manipulação de bits ZBa, ZBB, ZBc, ZBs
- Oferece configurações predefinidas desde microcontroladores até processadores de aplicação, incluindo 4 opções de pipeline e recursos de segurança como dual-core lockstep e TMR
- Pode ser direcionado, sem custo adicional, a qualquer dispositivo AMD adaptive SoC ou FPGA compatível com o Vivado Design Suite, embora RV64I e a Memory Protection Unit estejam em Early Access, e a Memory Management Unit ainda esteja no roadmap
Processador RISC-V em software para AMD adaptive SoCs e FPGAs
- AMD MicroBlaze V é um IP de processador RISC-V soft core para AMD adaptive SoCs e FPGAs
- Baseia-se na arquitetura de conjunto de instruções RISC-V (ISA) e oferece uma arquitetura modular e configurável para aplicações de sistemas embarcados
- Desenvolvedores podem direcionar o MicroBlaze V, sem custo adicional, a dispositivos AMD adaptive SoC ou FPGA compatíveis com o Vivado Design Suite
- RISC-V é uma ISA padrão open source administrada pela organização sem fins lucrativos RISC-V Foundation, da qual a AMD é membro desde 2020
Configuração da ISA RISC-V e portabilidade
- O MicroBlaze V é baseado em uma ISA open source apoiada por um ecossistema amplo de software e soluções da indústria
- O objetivo do projeto é facilitar a migração de hardware de projetos existentes com processadores MicroBlaze e aumentar a portabilidade de software em projetos RISC-V
- Escopo de suporte configurável da ISA:
- RV32I e RV64I Base Integer Instruction Set
- Extensão M para multiplicação e divisão
- Extensão A para instruções atômicas
- Extensão F para ponto flutuante
- Extensão C para compressão de código
- Extensões ZBa, ZBB, ZBc e ZBs para manipulação de bits
- O recurso de compressão de código é usado para reduzir o tamanho do código e economizar memória no projeto
Arquitetura, desempenho e recursos de segurança
- É possível escolher configurações predefinidas adequadas a várias faixas de aplicação, de microcontroladores a processadores de aplicação
- Oferece 4 opções de pipeline para otimização de área ou desempenho
- Também inclui recursos opcionais de segurança para sistemas críticos
-
Dual-core lockstep
- Triple modular redundancy (TMR)
-
Fluxo de projeto com Vivado e Vitis, e periféricos
- O MicroBlaze V oferece um fluxo de projeto integrado ao Vivado Design Suite e às Vitis software tools
- É compatível com todos os AMD adaptive SoCs e FPGAs suportados pelas ferramentas de projeto Vivado
- Pode ser usado tanto na interface gráfica (GUI) quanto na interface de linha de comando (CLI)
- Com IPs otimizados, é possível inserir subsistemas integrados de processador MicroBlaze V na lógica programável, com o objetivo de reduzir o número de componentes do sistema e o tempo de desenvolvimento
- Principais categorias de periféricos que podem ser adicionados via drag and drop:
- 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
Configurações de exemplo, documentação e status de suporte
- Há duas configurações de projeto de exemplo: MicroBlaze V Microcontroller e MicroBlaze V with Memory Protection Unit
-
Configuração MicroBlaze V Microcontroller
- 32-bit Processor Core RV32IMAFC
- JTAG Debug Interface
- Tightly Coupled Local Memory
- SPI controller, I2C Controller, UART
- Interrupt Controller, Timer, GPIO
-
Configuração MicroBlaze V with Memory Protection Unit
- Todos os blocos predefinidos do preset de microcontrolador
- Instruction Cache
-
Memory Protection Unit
- Data Cache
- Memory Controller
-
Documentação e recursos de suporte
- MicroBlaze V Processor Quick Start Guide: orienta na criação de um sistema básico com processador AMD MicroBlaze V usando um projeto predefinido do processador
- MicroBlaze V Processor Reference Guide: fornece informações sobre os processadores em software MicroBlaze V de 32 bits e 64 bits incluídos no AMD Vivado Design Suite
- MicroBlaze Debug Module V Product Guide: traz a especificação de projeto do core MDM V, que permite depuração baseada em JTAG de um ou mais processadores MicroBlaze V
- Webinar: Getting Started with Zephyr® RTOS on the AMD MicroBlaze™ V Processor: aborda configuração do Zephyr, parametrização e build de aplicações para o MicroBlaze V
- Documentation: coleção de guias de usuário e guias de produto do MicroBlaze V
- Wiki: trata da flexibilidade para escolher combinações necessárias de periféricos, memória e interfaces
-
Status de suporte
- A Microcontroller configuration está disponível em produção
- AMD MicroBlaze V com RV64I e Memory Protection Unit está em Early Access
- AMD MicroBlaze V com Memory Management Unit está no roadmap
1 comentários
Opiniões no Hacker News
Pode ser confuso se você não lembrar que a AMD adquiriu a Xilinx recentemente
Daqui para frente, é bem provável que muitos novos produtos da Xilinx passem a levar o nome da AMD
O equivalente do lado da Intel seria o Altera NIOS II
Segundo um comentário no Reddit [1], isso seria como colocar um decodificador de instruções RISC-V na frente do RTL do MicroBlaze existente
Do ponto de vista de “vamos criar o melhor core RISC-V”, isso parece não fazer muito sentido, mas esse nunca foi exatamente o objetivo da Xilinx/AMD
O MicroBlaze era um bom exemplo de uma CPU RISC sequencial, sem graça, que entra em nichos sem graça; para uma fabricante de FPGA, um softcore é meio que um produto-isca. Ajuda a vender silício, mas não ganha dinheiro por si só. Como não é a área do FPGA que determina o desempenho, e sim algo mais próximo de uma “cola de integração”, “bom o bastante” já basta
Se a AMD realmente reutilizar o RTL do MicroBlaze, consegue manter o firmware existente (core, FPU, depuração, periféricos etc.) e o software (HAL, compilador, drivers). Isso é muito atraente tanto para o fornecedor quanto para usuários que querem migrar para o novo core MicroBlaze sem sofrimento
1: https://old.reddit.com/r/FPGA/comments/17mdcyt/microblaze_go...
Eu não confiaria nessa informação
Ainda assim, ele tem as mesmas interfaces externas do MicroBlaze existente, então, do ponto de vista de hardware, é de fato um substituto que pode ser encaixado diretamente em projetos atuais
É por isso que os CEOs bilionários da Xilinx e da Altera balançam a cabeça com pena quando ouvem que Jensen Huang continua despejando dinheiro na stack de software da Nvidia. Um dia eles vão aprender onde está o valor de verdade
Alguém consegue explicar o quanto esse anúncio é importante para o RISC-V?
Claro que também se usam muitos cores de terceiros do GitHub, mas estar oficialmente integrado e suportado na IDE e nas ferramentas faz diferença para muitos clientes
A MicroSemi oferece softcores RISC-V desde 2017 e, desde o fim de 2020, também oferece hardcores como o PolarFire SoC. Exemplos incluem a nova BeagleBoard Fire, a Icicle etc.
A Lattice anunciou seu primeiro softcore RISC-V oficial por volta de junho de 2020, anunciou uma colaboração com a SiFive em dezembro de 2019 e, em meados de 2021, lançou versões melhoradas, como um core de 800 LUTs
A Intel introduziu o Nios V em outubro de 2021
Coisas como Tensilica e ARC também perderam muito valor agregado nessa área. Falando como alguém que já portou um kernel diretamente para MicroBlaze, ele é um RISC clássico com pipeline, na faixa de cerca de 20 mil portas, mais ou menos entre MIPS e SH4
O ponto mais interessante desse anúncio é que a AMD/Xilinx foi fundo a ponto de redefinir o próprio termo registrado “MicroBlaze”, em vez de criar um novo nome e continuar dando suporte a atualizações do MicroBlaze existente
A E/S era toda fragmentada, e nem dava para usar a DRAM integrada da placa. Seria ótimo ver um softcore RV32 com suporte oficial no Artix-7
Eu já usei o MicroBlaze de forma bastante satisfatória no passado, mas ele era muito fechado, então eu não pensaria em usá-lo fora de testes ou educação. Não sou um defensor fervoroso do RISC-V, mas ele se encaixa bem nesse tipo de área. É algo como “vamos fornecer ferramentas que usam um conjunto de instruções no qual você talvez já tenha investido, e não vamos tentar te prender também nessa toolchain”
É até aceitável que a AMD/Xilinx te prenda, em certa medida, abaixo do conjunto de instruções. Afinal, seja comprando um FPGA, seja comprando algum dia uma peça de catálogo que talvez venha a existir, é bem provável que você ainda tenha de pagar pelo hardware
TMR em si não é novidade no RISC-V, mas isso significa que muitos projetos que já usam MicroBlaze, e projetos novos que gostariam de usar MicroBlaze, agora poderão usar RISC-V
RISC-V já é bastante popular nesse mercado
Fico curioso sobre os usos do MicroBlaze V em comparação, por exemplo, com o SERV https://serv.readthedocs.io/en/latest/servant.html
Ou seja, além da aprovação oficial da fabricante do chip, a única vantagem que o MicroBlaze V parece oferecer é velocidade. CPUs em FPGA não costumam ser usadas para tarefas que não são tão sensíveis a tempo? Eu vejo o propósito como deixar as tarefas rápidas e sensíveis a tempo para o tecido FPGA, junto com as interfaces de E/S on-chip
O MicroBlaze permite literalmente montar seu próprio softcore por drag-and-drop, escolhendo entre várias opções de configuração e periféricos. Também inclui um SDK para a aplicação do usuário e ferramentas de depuração para encontrar a causa de problemas
Se você desenvolver com o SERV, não seria surpreendente que o tempo de desenvolvimento seja ordens de grandeza maior, apenas pela menor maturidade das ferramentas
É bom que um novo softcore esteja saindo, mas fico pensando se havia mesmo necessidade de poluir ainda mais o namespace
MicroBlaze já é o nome de uma arquitetura que alguém pode acabar pesquisando
Poderiam simplesmente ter chamado de algo como AMDcoreV
Basta recompilar e, desta vez, sem precisar lidar com ferramentas fracas, proprietárias, customizadas e de baixa qualidade; dá para usar ferramentas confiáveis e padrão da indústria, como gcc, binutils e llvm
Ele inclui algo equivalente ao PSP ou ao ME? Já estou farto de CPUs caixa-preta suspeitas, inseguras e impossíveis de corrigir
O core em si é open source?
Se fosse preciso pagar licença, eu não teria interesse neste anúncio, já que existem alternativas gratuitas
Dá para considerar que este core é bem otimizado para usar eficientemente os recursos dos FPGAs Xilinx, e é provável que essa seja a vantagem em relação às alternativas
Eles nem removeram os comentários do código-fonte
Seria bom ter uma visão geral que comparasse esses softcores RISC-V de uma vez
Coisas como se são open source, qual é a pontuação no CoreMark, qual é o tamanho etc.
neorv, serv, vexrisc, nios v, microblaze v e assim por diante
Existe algum kit de desenvolvimento para testar isso? Como começar?
Como é um projeto para FPGA Xilinx, faz sentido começar por uma placa de desenvolvimento Xilinx
https://www.xilinx.com/products/boards-and-kits/cost-optimiz...
Se tudo de que você precisa é um softcore RISC-V, há muitas opções fora do ecossistema Xilinx. Pessoalmente, prefiro placas com bom suporte a yosys/nextpnr
0. https://www.joelw.id.au/FPGA/CheapFPGADevelopmentBoards
Este é um primeiro passo, e é um bom sinal
Só que eu preferiria que fosse um core de 64 bits, em vez de um core de 32 bits. Porque, ao escrever caminhos de código em assembly RISC-V de 64 bits, eles poderiam ser realmente reutilizados em desktops, servidores e embarcados
Se você quer um core de 64 bits, acho que não está no mercado-alvo
Também não é realista reutilizar assembly RISC-V de 64 bits em desktops, servidores e embarcados. Desktops e servidores são, na prática, exclusivamente 64 bits, enquanto a maioria dos embarcados usa cores de 32 bits, então não há tanta sobreposição
Além da diferença entre 32 e 64 bits, o ambiente de programação também muda bastante: complexidade do sistema, procedimento de boot, formas de interagir com o mundo externo etc.
Em resumo, é preciso escolher o dispositivo-alvo e programar de acordo com ele. Se você quer portar facilmente entre vários tipos de dispositivo, o mais adequado é escrever em outra linguagem, não em assembly