AMD MicroBlaze V 프로세서: FPGA용 유연한 RISC-V 소프트코어
(xilinx.com)- AMD MicroBlaze V는 AMD adaptive SoC와 FPGA에 넣어 쓰는 소프트코어 RISC-V 프로세서 IP로, Vivado와 Vitis 설계 흐름에 통합됨
- 기존 MicroBlaze 설계의 하드웨어 호환성을 유지하면서, RISC-V ISA 기반 소프트웨어 이식성과 오픈소스 생태계 활용을 겨냥함
- RV32I·RV64I 기본 명령어 집합을 구성할 수 있고, M/A/F/C 확장과 ZBa, ZBB, ZBc, ZBs 비트 조작 확장을 선택 가능함
- 마이크로컨트롤러부터 애플리케이션 프로세서까지 프리셋 구성이 제공되며, 4가지 파이프라인 옵션과 dual-core lockstep, TMR 같은 안전 기능을 포함함
- Vivado Design Suite가 지원하는 모든 AMD adaptive SoC 또는 FPGA 장치에 추가 비용 없이 타깃팅할 수 있으나, RV64I와 Memory Protection Unit은 Early Access이고 Memory Management Unit은 로드맵 단계임
AMD adaptive SoC와 FPGA용 RISC-V 소프트 프로세서
- AMD MicroBlaze V는 AMD adaptive SoC와 FPGA를 위한 소프트코어 RISC-V 프로세서 IP임
- RISC-V 명령어 집합 아키텍처(ISA)를 기반으로 하며, 임베디드 시스템 애플리케이션에 맞게 모듈형으로 구성 가능한 아키텍처를 제공함
- 개발자는 Vivado Design Suite가 지원하는 AMD adaptive SoC 또는 FPGA 장치에 MicroBlaze V를 추가 비용 없이 타깃팅할 수 있음
- RISC-V는 비영리 단체인 RISC-V Foundation이 관리하는 오픈소스 표준 ISA이며, AMD는 2020년부터 회원임
RISC-V ISA 구성과 이식성
- MicroBlaze V는 산업 전반의 소프트웨어와 솔루션 생태계가 뒷받침하는 오픈소스 ISA를 기반으로 함
- 설계 목표는 기존 MicroBlaze 프로세서 설계의 하드웨어 마이그레이션을 쉽게 하고, RISC-V 설계의 소프트웨어 이식성을 높이는 데 있음
- 구성 가능한 ISA 지원 범위:
- RV32I 및 RV64I Base Integer Instruction Set
- 곱셈·나눗셈을 위한 M 확장
- 원자적 명령을 위한 A 확장
- 부동소수점을 위한 F 확장
- 코드 압축을 위한 C 확장
- 비트 조작을 위한 ZBa, ZBB, ZBc, ZBs 확장
- 코드 압축 기능은 코드 크기를 줄이고 설계 메모리를 절약하는 데 쓰임
아키텍처, 성능, 안전 기능
- 마이크로컨트롤러부터 애플리케이션 프로세서까지 여러 애플리케이션 범위에 맞춘 프리셋 구성을 선택할 수 있음
- 면적 또는 성능 최적화를 위해 4가지 파이프라인 옵션을 제공함
- 안전 중요 시스템을 위한 선택형 안전 수단도 포함됨
-
Dual-core lockstep
- Triple modular redundancy(TMR)
-
Vivado·Vitis 기반 설계 흐름과 주변장치
- MicroBlaze V는 Vivado Design Suite와 Vitis software tools에 통합된 설계 흐름을 제공함
- Vivado 설계 도구가 지원하는 모든 AMD adaptive SoC와 FPGA에 호환됨
- 그래픽 사용자 인터페이스(GUI)와 명령줄 인터페이스(CLI)에서 사용할 수 있음
- 최적화된 IP를 활용해 프로그래머블 로직 안에 통합 MicroBlaze V 프로세서 서브시스템을 배치할 수 있으며, 시스템 구성요소 수와 개발 시간을 줄이는 것을 목표로 함
- 드래그 앤드 드롭 방식으로 추가할 수 있는 주요 주변장치 범주:
- 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
예시 구성, 문서, 지원 상태
- 예시 설계 구성은 MicroBlaze V Microcontroller와 MicroBlaze V with Memory Protection Unit 두 가지임
-
MicroBlaze V Microcontroller 구성
- 32-bit Processor Core RV32IMAFC
- JTAG Debug Interface
- Tightly Coupled Local Memory
- SPI controller, I2C Controller, UART
- Interrupt Controller, Timer, GPIO
-
MicroBlaze V with Memory Protection Unit 구성
- Microcontroller Preset Blocks 전체
- Instruction Cache
-
Memory Protection Unit
- Data Cache
- Memory Controller
-
지원 문서와 리소스
- MicroBlaze V Processor Quick Start Guide: 프로세서 프리셋 설계를 사용해 기본 AMD MicroBlaze V 프로세서 시스템을 만드는 과정을 안내함
- MicroBlaze V Processor Reference Guide: AMD Vivado Design Suite에 포함된 32비트 및 64비트 MicroBlaze V 소프트 프로세서 정보를 제공함
- MicroBlaze Debug Module V Product Guide: 하나 이상의 MicroBlaze V 프로세서를 JTAG 기반으로 디버깅할 수 있게 하는 MDM V 코어 설계 명세를 제공함
- Webinar: Getting Started with Zephyr® RTOS on the AMD MicroBlaze™ V Processor: Zephyr 설정, 구성, MicroBlaze V 대상 애플리케이션 빌드를 다룸
- Documentation: MicroBlaze V 사용자 가이드와 제품 가이드 모음
- Wiki: 필요한 주변장치, 메모리, 인터페이스 조합을 선택할 수 있는 유연성을 다룸
-
지원 상태
- Microcontroller configuration은 Production으로 제공됨
- AMD MicroBlaze V with RV64I와 Memory Protection Unit은 Early Access임
- AMD MicroBlaze V with Memory Management Unit은 로드맵에 있음
댓글과 토론
Hacker News 의견들
-
AMD가 최근 Xilinx를 인수했다는 걸 기억하지 않으면 헷갈릴 수 있음
앞으로 새 Xilinx 제품에 AMD 이름이 붙는 일이 많아질 가능성이 큼- 무작위 신제품이라고 보기엔 어려움. Xilinx MicroBlaze는 20년 넘은 기술이고, FPGA용으로 개발된 초기의 “진짜” 소프트코어 중 하나였음
Intel 쪽 대응물은 Altera NIOS II라고 보면 됨
- 무작위 신제품이라고 보기엔 어려움. Xilinx MicroBlaze는 20년 넘은 기술이고, FPGA용으로 개발된 초기의 “진짜” 소프트코어 중 하나였음
-
Reddit 댓글 [1]에 따르면, 이건 기존 MicroBlaze RTL 앞단에 RISC-V 명령어 디코더를 붙인 것과 같다고 함
“최고의 RISC-V 코어를 만들자” 관점에서는 말이 안 돼 보이지만, Xilinx/AMD의 목표는 원래 그런 게 아니었음
MicroBlaze는 지루한 틈새에 들어가는 지루한 순차 실행 RISC CPU의 좋은 예였고, FPGA 업체에게 소프트코어는 반쯤 미끼 상품임. 실리콘 판매에는 도움이 되지만 자체로 돈을 벌지는 못함. 성능을 좌우하는 FPGA 영역이 아니라 “통합 접착제”에 가까운 기술이라, “충분히 좋음”이면 충분함
AMD가 정말 MicroBlaze RTL을 재사용한다면 기존 펌웨어(코어, FPU, 디버그, 주변장치 등)와 소프트웨어(HAL, 컴파일러, 드라이버)를 유지할 수 있음. 공급자 입장에서도, 새 MicroBlaze 코어로 고통 없이 넘어가려는 사용자 입장에서도 매우 매력적임
1: https://old.reddit.com/r/FPGA/comments/17mdcyt/microblaze_go...- 그 Reddit 사용자는 카르마가 -5임. 그리고 간단한 RISC-V 코어를 처음부터 구현하는 데 며칠이면 되는 상황에서 그 아이디어는 거의 말이 안 됨
그 정보에 의존하진 않겠음
다만 기존 MicroBlaze와 같은 외부 인터페이스를 갖고 있어서, 하드웨어 관점에서는 기존 설계에 그대로 끼워 넣을 수 있는 대체품이긴 함 - FPGA 업체에게 소프트코어가 미끼 상품이라는 건 정확함. 이런 활성화 기술은 그 자체로 돈을 벌지 못해서 하드웨어 회사에서는 가치 있게 취급되지 않음
그래서 Xilinx와 Altera의 억만장자 CEO들이 Jensen Huang이 Nvidia 소프트웨어 스택에 계속 돈을 쏟아붓는 걸 들으면 안타깝게 고개를 젓는 것임. 언젠가는 진짜 가치가 어디 있는지 배우겠지
- 그 Reddit 사용자는 카르마가 -5임. 그리고 간단한 RISC-V 코어를 처음부터 구현하는 데 며칠이면 되는 상황에서 그 아이디어는 거의 말이 안 됨
-
이 발표가 RISC-V에 얼마나 중요한지 설명해줄 수 있음?
- 다른 주요 FPGA 제조사들은 이미 몇 년 전부터 자사 독점 명령어 집합 코어의 대안으로 공식 지원 RISC-V 코어를 제공하기 시작했음
물론 GitHub의 서드파티 코어도 많이 쓰지만, IDE와 도구에 공식 통합되고 지원된다는 건 많은 고객에게 의미가 있음
MicroSemi는 2017년부터 RISC-V 소프트코어를 제공했고, 2020년 말부터는 PolarFire SoC 같은 하드코어도 제공했음. 예를 들면 새 BeagleBoard Fire, Icicle 등이 있음
Lattice는 2020년 6월쯤 첫 공식 RISC-V 소프트코어를 발표했고, 2019년 12월에는 SiFive와의 협업을 발표했으며, 2021년 중반에는 800 LUT 코어 같은 개선판도 냈음
Intel은 2021년 10월 Nios V를 도입했음 - MicroBlaze는 RISC-V가 적극적으로 잠식하고 있는 게이트 수 규모에 있던 코어였음
Tensilica, ARC 같은 것들도 이 영역에서 부가가치를 많이 잃었음. 직접 MicroBlaze로 커널을 포팅해본 입장에서 보면, 대략 2만 게이트 범위의 고전적인 파이프라인 RISC이고 MIPS와 SH4의 중간쯤임
이번 발표에서 가장 흥미로운 부분은 AMD/Xilinx가 새 이름을 만들고 기존 MicroBlaze 업데이트를 계속 지원하는 대신, 상표가 붙은 “MicroBlaze”라는 용어 자체를 재정의할 정도로 깊이 들어왔다는 점임 - 예전 SiFive에는 Artix-7에 들어갈 수 있는 RV32 코어가 있었지만 꽤 기본적인 수준이었음
입출력은 제각각이었고, 보드 내장 DRAM도 쓸 수 없었음. Artix-7에서 공식 지원되는 RV32 소프트코어를 볼 수 있다면 멋질 듯함
예전에 MicroBlaze를 꽤 괜찮게 써봤지만, 매우 폐쇄적이라 테스트나 교육 외에는 쓸 생각을 하지 않았음. RISC-V 열성 지지자는 아니지만, 이런 분야에는 잘 맞음. “이미 투자했을 수 있는 명령어 집합을 쓰는 도구를 제공하고, 그쪽 도구체인까지 묶어두려 하진 않겠다”는 식이기 때문임
AMD/Xilinx가 명령어 집합 아래쪽에서 묶어두는 건 어느 정도 받아들일 수 있음. 어차피 FPGA를 사든, 언젠가 나올지 모를 카탈로그 부품을 사든 하드웨어 비용은 내야 할 가능성이 크기 때문임 - Xilinx는 꽤 큰 FPGA 제조사이고, MicroBlaze는 TMR을 포함한 내결함성 기능을 꽤 잘 제공함
RISC-V에서 TMR 자체가 새로운 건 아니지만, 이미 MicroBlaze를 쓰는 많은 프로젝트와 새로 MicroBlaze를 쓰고 싶은 프로젝트가 이제 RISC-V를 쓸 수 있게 된다는 의미가 있음 - 마이크로컨트롤러이면서 실시간 CPU로도 동작할 수 있음
RISC-V는 이미 그 시장에서 꽤 인기 있음
- 다른 주요 FPGA 제조사들은 이미 몇 년 전부터 자사 독점 명령어 집합 코어의 대안으로 공식 지원 RISC-V 코어를 제공하기 시작했음
-
MicroBlaze V의 사용처가 예를 들어 SERV https://serv.readthedocs.io/en/latest/servant.html와 비교해 어떤지 궁금함
즉, 칩 제조사의 공식 승인 말고 MicroBlaze V가 주는 유일한 장점은 속도인 듯함. FPGA CPU는 보통 그렇게 시간 민감하지 않은 작업에 쓰지 않나? 고속·시간 민감 작업은 온칩 입출력 인터페이스와 함께 FPGA 패브릭이 처리하는 게 목적이라고 봄- 핵심은 도구와 지원임. RISC-V 소프트코어를 직접 만지작거리고 싶은 게 아니라, 그냥 동작하고 실제로 신경 쓰는 것들과 이미 잘 연결되기를 원하는 것임
MicroBlaze는 다양한 설정 옵션과 주변장치를 골라 드래그 앤 드롭으로 말 그대로 자기 소프트코어를 구성할 수 있게 해줌. 사용자 애플리케이션용 SDK와 문제 원인을 찾는 디버깅 도구도 포함됨
SERV로 개발하면 도구 성숙도가 낮다는 이유만으로도 개발 시간이 몇 자릿수 더 오래 걸려도 놀랍지 않음
- 핵심은 도구와 지원임. RISC-V 소프트코어를 직접 만지작거리고 싶은 게 아니라, 그냥 동작하고 실제로 신경 쓰는 것들과 이미 잘 연결되기를 원하는 것임
-
새 소프트코어가 나오는 건 좋지만, 굳이 이름 공간을 더럽힐 필요가 있나 싶음
MicroBlaze는 이미 누군가 검색해볼 수 있는 아키텍처 이름임
그냥 AMDcoreV 같은 식으로 부르면 됐을 텐데- 맞음. MicroBlaze는 AMD가 소유한 아키텍처 이름이고, 기사에 따르면 이 코어는 그것과 호환됨
It allows developers to leverage the open-source RISC-V software ecosystem, is hardware compatible with the classic MicroBlaze processor
- HDL에서 바라보는 인터페이스는 같음. 반면 소프트웨어 쪽에서는 가장 강한 생태계로 빠르게 성장 중인 RISC-V 명령어 집합임
다시 컴파일만 하면 되고, 이번에는 빈약하고 독점적이며 맞춤형인 저품질 도구를 다룰 필요 없이 gcc, binutils, llvm 같은 신뢰할 만한 업계 표준 도구를 쓸 수 있음 - 이게 새 Xilinx MicroBlaze임. AVR 비슷한 명령어 집합에서 RV32로 넘어간 것임
- AMD가 Xilinx 인수를 통해 소유하게 된 그 MicroBlaze 아키텍처 말하는 거 아닌가?
- 그래도 접미사 없이 그냥 쓰는 것보다는 MicroBlaze V라서 낫긴 함
- 맞음. MicroBlaze는 AMD가 소유한 아키텍처 이름이고, 기사에 따르면 이 코어는 그것과 호환됨
-
PSP나 ME에 해당하는 게 들어 있나? 불안전하고 패치도 못 하는 수상한 블랙박스 CPU는 이제 지긋지긋함
-
코어 자체가 오픈소스인가?
- 아닐 가능성이 크지만, AMD는 어떤 AMD(Xilinx) FPGA에서도 무료로 사용할 수 있다고 했음
사용료를 내야 했다면 무료 대안이 있으니 이 발표에 관심이 없었을 것임
이 코어는 Xilinx FPGA 자원을 효율적으로 쓰도록 잘 최적화됐다고 볼 수 있고, 그게 대안 대비 장점일 가능성이 큼 - 오픈소스 라이선스는 아닐 수 있지만, 이전 MicroBlaze 코어의 소스 코드는 개발 키트에 포함돼 있었고 약하게 난독화되어 있었음
심지어 소스 코드 주석도 제거하지 않았음
- 아닐 가능성이 크지만, AMD는 어떤 AMD(Xilinx) FPGA에서도 무료로 사용할 수 있다고 했음
-
이런 RISC-V 소프트코어들을 한눈에 비교한 개요가 있으면 좋겠음
오픈소스인지, CoreMark 점수는 어느 정도인지, 크기는 얼마나 되는지 같은 것들 말임
neorv, serv, vexrisc, nios v, microblaze v 등 -
이걸 만져볼 수 있는 개발 키트가 있나? 어떻게 시작하면 됨?
- 링크된 글을 읽어보면 됨: https://docs.xilinx.com/v/u/en-US/microblaze-quick-start-gui...
Xilinx FPGA 설계라서 Xilinx 개발 보드에서 시작하는 게 맞음 - 입문용 보드는 여기에서 찾을 수 있음. 가격은 150달러부터 약 4000달러까지 다양함
https://www.xilinx.com/products/boards-and-kits/cost-optimiz... - MicroBlaze 소프트 CPU를 지원하는 저렴한 Xilinx 보드라면 아무거나 고르겠음
필요한 게 RISC-V 소프트코어뿐이라면 Xilinx 생태계 밖에도 선택지가 많음. 개인적으로는 yosys/nextpnr가 잘 지원하는 보드를 선호함
0. https://www.joelw.id.au/FPGA/CheapFPGADevelopmentBoards
- 링크된 글을 읽어보면 됨: https://docs.xilinx.com/v/u/en-US/microblaze-quick-start-gui...
-
이건 첫걸음이고, 좋은 징조임
다만 32비트 코어보다는 64비트 코어였으면 좋았겠음. 64비트 RISC-V 어셈블리 코드 경로를 작성하면 데스크톱, 서버, 임베디드에서 실제로 재사용할 수 있기 때문임- “첫걸음”은 아님. 이미 여러 걸음 중 하나임
64비트 코어를 원한다면 목표 시장에 속하지 않는 것 같음
64비트 RISC-V 어셈블리를 데스크톱, 서버, 임베디드에서 재사용한다는 것도 현실적이지 않음. 데스크톱·서버는 사실상 64비트 전용이고, 임베디드는 대부분 32비트 코어라 겹치는 부분이 많지 않음
32비트와 64비트 차이뿐 아니라, 시스템 복잡도, 부팅 절차, 외부와 상호작용하는 방식 등 프로그래밍 환경도 크게 다름
요약하면 대상 장치를 고르고 거기에 맞춰 코딩해야 함. 여러 종류의 장치 사이에서 쉽게 옮기고 싶다면 어셈블리가 아닌 다른 언어로 작성하는 편이 맞음
- “첫걸음”은 아님. 이미 여러 걸음 중 하나임