- AMD MicroBlaze V คือ IP โปรเซสเซอร์ซอฟต์คอร์ RISC-V สำหรับใส่ใช้งานใน AMD adaptive SoC และ FPGA โดยผสานเข้ากับ flow การออกแบบของ Vivado และ Vitis
- มุ่งรักษาความเข้ากันได้ด้านฮาร์ดแวร์กับดีไซน์ MicroBlaze เดิม พร้อมอาศัยความสามารถในการพอร์ตซอฟต์แวร์บน RISC-V ISA และระบบนิเวศโอเพนซอร์ส
- สามารถกำหนดค่าชุดคำสั่งพื้นฐาน RV32I·RV64I ได้ และเลือกส่วนขยาย M/A/F/C รวมถึงส่วนขยายการจัดการบิต ZBa, ZBB, ZBc, ZBs ได้
- มีคอนฟิก preset ตั้งแต่ไมโครคอนโทรลเลอร์ไปจนถึงโปรเซสเซอร์แอปพลิเคชัน รวมถึงตัวเลือก pipeline 4 แบบ และฟีเจอร์ด้านความปลอดภัยอย่าง dual-core lockstep และ TMR
- สามารถ target ไปยังอุปกรณ์ AMD adaptive SoC หรือ FPGA ทุกตัวที่ Vivado Design Suite รองรับได้ โดยไม่มีค่าใช้จ่ายเพิ่มเติม แต่ RV64I และ Memory Protection Unit ยังเป็น Early Access ส่วน Memory Management Unit อยู่ในขั้น roadmap
โปรเซสเซอร์ซอฟต์ RISC-V สำหรับ AMD adaptive SoC และ FPGA
- AMD MicroBlaze V คือ IP โปรเซสเซอร์ซอฟต์คอร์ RISC-V สำหรับ AMD adaptive SoC และ FPGA
- อิงตามสถาปัตยกรรมชุดคำสั่ง RISC-V (ISA) และมีสถาปัตยกรรมที่ กำหนดค่าแบบโมดูลาร์ได้ ให้เหมาะกับแอปพลิเคชันระบบฝังตัว
- นักพัฒนาสามารถ target MicroBlaze V ไปยังอุปกรณ์ AMD adaptive SoC หรือ FPGA ที่ Vivado Design Suite รองรับได้ โดยไม่มีค่าใช้จ่ายเพิ่มเติม
- RISC-V เป็น ISA มาตรฐานโอเพนซอร์สที่ดูแลโดยองค์กรไม่แสวงหากำไร RISC-V Foundation และ AMD เป็นสมาชิกมาตั้งแต่ปี 2020
การกำหนดค่า RISC-V ISA และความสามารถในการพอร์ต
- MicroBlaze V อิงตาม ISA โอเพนซอร์ส ที่มีระบบนิเวศซอฟต์แวร์และโซลูชันรองรับทั่วทั้งอุตสาหกรรม
- เป้าหมายของการออกแบบคือทำให้การย้ายฮาร์ดแวร์จากดีไซน์โปรเซสเซอร์ MicroBlaze เดิมทำได้ง่ายขึ้น และเพิ่มความสามารถในการพอร์ตซอฟต์แวร์ของดีไซน์ RISC-V
- ขอบเขตการรองรับ ISA ที่กำหนดค่าได้:
- RV32I และ RV64I Base Integer Instruction Set
- M extension สำหรับการคูณและหาร
- A extension สำหรับคำสั่งแบบ atomic
- F extension สำหรับ floating point
- C extension สำหรับการบีบอัดโค้ด
- ZBa, ZBB, ZBc, ZBs extensions สำหรับการจัดการบิต
- ฟีเจอร์บีบอัดโค้ดใช้เพื่อลดขนาดโค้ดและประหยัดหน่วยความจำของดีไซน์
สถาปัตยกรรม ประสิทธิภาพ และฟีเจอร์ด้านความปลอดภัย
- สามารถเลือก คอนฟิก preset ที่เหมาะกับขอบเขตแอปพลิเคชันหลายแบบ ตั้งแต่ไมโครคอนโทรลเลอร์ไปจนถึงโปรเซสเซอร์แอปพลิเคชัน
- มี ตัวเลือก pipeline 4 แบบ เพื่อปรับให้เหมาะกับพื้นที่หรือประสิทธิภาพ
- รวมถึงมาตรการด้านความปลอดภัยแบบเลือกใช้ได้สำหรับระบบที่มีความสำคัญด้านความปลอดภัย
-
Dual-core lockstep
- Triple modular redundancy(TMR)
-
Flow การออกแบบบน Vivado·Vitis และอุปกรณ์ต่อพ่วง
- MicroBlaze V มี flow การออกแบบที่ผสานเข้ากับ Vivado Design Suite และ Vitis software tools
- เข้ากันได้กับ AMD adaptive SoC และ FPGA ทุกตัวที่เครื่องมือออกแบบ Vivado รองรับ
- ใช้งานได้ทั้งผ่าน graphical user interface (GUI) และ command-line interface (CLI)
- สามารถใช้งาน IP ที่ปรับแต่งแล้วเพื่อวางซับซิสเต็มโปรเซสเซอร์ MicroBlaze V แบบผสานรวมไว้ใน programmable logic โดยมีเป้าหมายเพื่อลดจำนวนคอมโพเนนต์ของระบบและเวลาพัฒนา
- หมวดหมู่อุปกรณ์ต่อพ่วงหลักที่เพิ่มได้ด้วยวิธี 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
คอนฟิกตัวอย่าง เอกสาร และสถานะการรองรับ
- คอนฟิกดีไซน์ตัวอย่างมี 2 แบบคือ 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 พื้นฐานโดยใช้ดีไซน์ processor preset
- MicroBlaze V Processor Reference Guide: ให้ข้อมูลเกี่ยวกับโปรเซสเซอร์ซอฟต์ MicroBlaze V แบบ 32 บิตและ 64 บิตที่รวมอยู่ใน AMD Vivado Design Suite
- MicroBlaze Debug Module V Product Guide: ให้ข้อกำหนดการออกแบบคอร์ MDM V ที่ช่วยให้ดีบักโปรเซสเซอร์ MicroBlaze V หนึ่งตัวหรือมากกว่าผ่าน JTAG ได้
- Webinar: Getting Started with Zephyr® RTOS on the AMD MicroBlaze™ V Processor: ครอบคลุมการตั้งค่า Zephyr การกำหนดค่า และการ build แอปพลิเคชันสำหรับเป้าหมาย MicroBlaze V
- Documentation: ชุดคู่มือผู้ใช้และ product guide ของ MicroBlaze V
- Wiki: กล่าวถึงความยืดหยุ่นในการเลือกชุดอุปกรณ์ต่อพ่วง หน่วยความจำ และอินเทอร์เฟซที่ต้องการ
-
สถานะการรองรับ
- Microcontroller configuration มีให้ใช้งานในระดับ Production
- AMD MicroBlaze V with RV64I และ Memory Protection Unit อยู่ในสถานะ Early Access
- AMD MicroBlaze V with Memory Management Unit อยู่ใน roadmap
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ถ้าไม่จำไว้ว่า AMD เพิ่ง เข้าซื้อ Xilinx ไป อาจทำให้งงได้
ต่อไปมีความเป็นไปได้สูงที่จะเห็นผลิตภัณฑ์ Xilinx ใหม่ ๆ ใช้ชื่อ AMD มากขึ้น
ฝั่ง Intel ก็เทียบได้กับ Altera NIOS II
ตามคอมเมนต์ใน Reddit [1] ระบุว่าสิ่งนี้เหมือนกับการเอา ตัวถอดรหัสคำสั่ง RISC-V ไปต่อไว้ด้านหน้าของ MicroBlaze RTL เดิม
หากมองจากมุม “มาสร้างคอร์ 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...
คงไม่ขอพึ่งข้อมูลนั้น
อย่างไรก็ดี มันมีอินเทอร์เฟซภายนอกแบบเดียวกับ MicroBlaze เดิม จึงเป็นตัวทดแทนที่จากมุมมองฮาร์ดแวร์สามารถเสียบเข้าไปในดีไซน์เดิมได้เลย
นั่นจึงเป็นเหตุผลที่ซีอีโอมหาเศรษฐีของ Xilinx และ Altera คงส่ายหน้าอย่างเสียดายเมื่อได้ยินว่า Jensen Huang ยังคงทุ่มเงินใส่ซอฟต์แวร์สแต็กของ Nvidia ต่อไป สักวันคงได้เรียนรู้ว่ามูลค่าที่แท้จริงอยู่ตรงไหน
อธิบายได้ไหมว่าประกาศนี้สำคัญต่อ RISC-V แค่ไหน?
แน่นอนว่าคอร์จากบุคคลที่สามบน GitHub ก็ถูกใช้กันมาก แต่การผสานและรองรับอย่างเป็นทางการใน IDE และเครื่องมือมีความหมายต่อผู้ใช้จำนวนมาก
MicroSemi ให้บริการซอฟต์คอร์ RISC-V มาตั้งแต่ปี 2017 และตั้งแต่ปลายปี 2020 ก็มีฮาร์ดคอร์อย่าง PolarFire SoC ด้วย เช่น BeagleBoard Fire รุ่นใหม่, Icicle เป็นต้น
Lattice ประกาศซอฟต์คอร์ RISC-V อย่างเป็นทางการตัวแรกประมาณเดือนมิถุนายน 2020 ประกาศความร่วมมือกับ SiFive ในเดือนธันวาคม 2019 และช่วงกลางปี 2021 ก็ออกรุ่นปรับปรุงอย่างคอร์ 800 LUT ด้วย
Intel เปิดตัว Nios V ในเดือนตุลาคม 2021
สิ่งอย่าง Tensilica, ARC ก็สูญเสียมูลค่าเพิ่มไปมากในพื้นที่นี้เช่นกัน จากมุมมองของคนที่เคยพอร์ตเคอร์เนลด้วย MicroBlaze โดยตรง มันคือ RISC แบบไปป์ไลน์คลาสสิกในช่วงประมาณ 20,000 เกต และอยู่กึ่งกลางระหว่าง MIPS กับ SH4
ส่วนที่น่าสนใจที่สุดของประกาศนี้คือ AMD/Xilinx เข้ามาลึกถึงขั้นนิยามคำที่เป็นเครื่องหมายการค้าอย่าง “MicroBlaze” ใหม่เอง แทนที่จะตั้งชื่อใหม่แล้วคอยรองรับการอัปเดต MicroBlaze เดิมต่อไป
อินพุต/เอาต์พุตก็ไม่เป็นมาตรฐานเดียวกัน และใช้ DRAM บนบอร์ดไม่ได้ด้วย ถ้าได้เห็น ซอฟต์คอร์ RV32 ที่รองรับอย่างเป็นทางการบน Artix-7 ก็คงดี
เมื่อก่อนเคยใช้ MicroBlaze ได้ค่อนข้างดี แต่เพราะมันปิดมาก จึงไม่คิดจะใช้เกินกว่าการทดสอบหรือการศึกษา แม้จะไม่ใช่ผู้สนับสนุน RISC-V แบบสุดตัว แต่สิ่งนี้เหมาะกับงานประเภทนี้ เพราะเหมือนเป็นการบอกว่า “เราจะให้เครื่องมือที่ใช้ชุดคำสั่งที่คุณอาจลงทุนไปแล้ว และจะไม่พยายามผูกคุณไว้กับ toolchain ฝั่งนั้นด้วย”
การที่ AMD/Xilinx ผูกไว้ในชั้นที่ต่ำกว่าชุดคำสั่งนั้นยังพอรับได้ในระดับหนึ่ง เพราะอย่างไรก็มีแนวโน้มสูงว่าต้องจ่ายค่าฮาร์ดแวร์อยู่ดี ไม่ว่าจะซื้อ FPGA หรือซื้อชิ้นส่วนตามแค็ตตาล็อกที่อาจจะมีออกมาในสักวัน
TMR เองไม่ใช่เรื่องใหม่ใน RISC-V แต่หมายความว่าโปรเจกต์จำนวนมากที่ใช้ MicroBlaze อยู่แล้ว และโปรเจกต์ใหม่ที่อยากใช้ MicroBlaze จะสามารถใช้ RISC-V ได้แล้ว
RISC-V ได้รับความนิยมพอสมควรในตลาดนั้นอยู่แล้ว
สงสัยว่าเมื่อเทียบกับ SERV https://serv.readthedocs.io/en/latest/servant.html แล้ว MicroBlaze V จะถูกใช้ในกรณีแบบไหน
กล่าวคือ นอกจากการรับรองอย่างเป็นทางการจากผู้ผลิตชิปแล้ว ข้อดีเพียงอย่างเดียวที่ MicroBlaze V ให้ได้ดูเหมือนจะเป็นความเร็ว ไม่ใช่ว่า FPGA CPU มักใช้กับงานที่ไม่ได้ไวต่อเวลาเท่าไหร่หรือ? งานความเร็วสูงและไวต่อเวลาควรให้ FPGA fabric จัดการร่วมกับอินเทอร์เฟซ I/O บนชิป นั่นน่าจะเป็นจุดประสงค์
MicroBlaze ให้เลือกตัวเลือกการตั้งค่าและอุปกรณ์ต่อพ่วงต่าง ๆ แล้วลากและวางเพื่อประกอบซอฟต์คอร์ของตัวเองได้จริง ๆ รวมถึงมี SDK สำหรับแอปพลิเคชันของผู้ใช้ และเครื่องมือดีบักเพื่อหาสาเหตุของปัญหา
ถ้าพัฒนาด้วย SERV ก็ไม่น่าแปลกใจหากเวลาพัฒนาจะนานขึ้นหลายหลัก เพียงเพราะความสุกงอมของเครื่องมือต่ำกว่า
การมีซอฟต์คอร์ตัวใหม่ออกมาก็ดีอยู่หรอก แต่สงสัยว่าจำเป็นต้องทำให้ namespace เลอะเทอะด้วยหรือ
MicroBlaze เป็นชื่อสถาปัตยกรรมที่คนอาจเอาไปค้นหาอยู่แล้ว
น่าจะเรียกประมาณ AMDcoreV ไปก็ได้
แค่คอมไพล์ใหม่ก็พอ และครั้งนี้ไม่ต้องไปยุ่งกับเครื่องมือคุณภาพต่ำที่อ่อนแอ เป็นกรรมสิทธิ์ และทำขึ้นเฉพาะทาง แต่ใช้เครื่องมือมาตรฐานอุตสาหกรรมที่เชื่อถือได้อย่าง gcc, binutils, llvm ได้
มีอะไรที่เทียบได้กับ PSP หรือ ME อยู่ในนั้นไหม? เบื่อเต็มทีแล้วกับ CPU กล่องดำ น่าสงสัยที่ไม่ปลอดภัยและแพตช์ไม่ได้
ตัวคอร์เองเป็น โอเพนซอร์ส ไหม?
ถ้าต้องจ่ายค่าใช้งาน ก็คงไม่มีใครสนใจประกาศนี้เพราะมีทางเลือกฟรีอยู่แล้ว
มองได้ว่าคอร์นี้ถูกปรับแต่งมาให้ใช้ทรัพยากรของ Xilinx FPGA ได้อย่างมีประสิทธิภาพ และนั่นน่าจะเป็นข้อได้เปรียบเมื่อเทียบกับทางเลือกอื่น
ถึงขั้นไม่ได้ลบคอมเมนต์ในซอร์สโค้ดออกด้วยซ้ำ
ถ้ามี ภาพรวม ที่เปรียบเทียบ RISC-V softcore พวกนี้ในที่เดียวก็คงดี
เช่น เป็นโอเพนซอร์สไหม คะแนน CoreMark ประมาณเท่าไร ขนาดเท่าไร อะไรทำนองนั้น
neorv, serv, vexrisc, nios v, microblaze v ฯลฯ
มี development kit ที่ใช้ลองตัวนี้ได้ไหม? ควรเริ่มยังไง?
เป็นงานออกแบบ Xilinx FPGA ดังนั้นเริ่มจากบอร์ดพัฒนาของ Xilinx น่าจะถูกทาง
https://www.xilinx.com/products/boards-and-kits/cost-optimiz...
ถ้าสิ่งที่ต้องการมีแค่ RISC-V softcore นอกอีโคซิสเต็มของ Xilinx ก็มีตัวเลือกอีกมาก โดยส่วนตัวชอบบอร์ดที่ yosys/nextpnr รองรับดี
0. https://www.joelw.id.au/FPGA/CheapFPGADevelopmentBoards
นี่เป็นก้าวแรก และเป็นสัญญาณที่ดี
แต่ถ้าเป็น คอร์ 64 บิต คงจะดีกว่าคอร์ 32 บิต เพราะถ้าเขียนเส้นทางโค้ดแอสเซมบลี RISC-V แบบ 64 บิต ก็สามารถนำไปใช้ซ้ำได้จริงบนเดสก์ท็อป เซิร์ฟเวอร์ และ embedded
ถ้าอยากได้คอร์ 64 บิต ดูเหมือนจะไม่ใช่ตลาดเป้าหมายของมัน
การนำแอสเซมบลี RISC-V 64 บิตไปใช้ซ้ำบนเดสก์ท็อป เซิร์ฟเวอร์ และ embedded ก็ไม่ค่อยสมจริง เดสก์ท็อปกับเซิร์ฟเวอร์แทบจะเป็น 64 บิตล้วน ส่วน embedded ส่วนใหญ่เป็นคอร์ 32 บิต จึงมีส่วนทับซ้อนกันไม่มาก
ไม่ใช่แค่ความต่างระหว่าง 32 บิตกับ 64 บิตเท่านั้น แต่สภาพแวดล้อมการเขียนโปรแกรมก็ต่างกันมากด้วย ทั้งความซับซ้อนของระบบ ขั้นตอนบูต วิธีโต้ตอบกับภายนอก ฯลฯ
สรุปคือควรเลือกอุปกรณ์เป้าหมายแล้วเขียนโค้ดให้เหมาะกับมัน ถ้าอยากย้ายข้ามอุปกรณ์หลายประเภทได้ง่าย ควรเขียนด้วยภาษาอื่นที่ไม่ใช่แอสเซมบลี