SiFive演示RISC-V PC与AI SoC:从架构挑战到开发实战 📅 发布时间:2026/8/28 1:37:06 👁 浏览次数: 最近半导体圈子里最热的一件事就是 SiFive 放出的消息要在接下来的行业活动上演示一台真正运行在新款 RISC-V SoC 上的 PC同时还要发布下一代 AI SoC。说实话RISC-V 喊了这么多年要“上桌吃饭”这次算是第一次把“PC”这个标志性目标摆到了台面上而不是继续停留在嵌入式设备或者开发板的舒适区里。这篇文章我就以一个长期关注 RISC-V 生态、也在实际项目里用 RISC-V 核做过开发的从业者视角拆一拆这次演示背后的技术分量、PC 级 SoC 到底难在哪、AI SoC 又往哪个方向卷顺便把我自己在搭建 RISC-V 开发环境时踩过的坑和摸索出来的经验一起整理出来。不管你是做芯片验证的、写嵌入式软件的、搞 AI 推理加速的还是单纯想搞一块 RISC-V 板子玩玩的这篇文章应该都能给你一些参考。1. 这次PC演示的分量RISC-V终于要碰桌面市场了吗1.1 RISC-V从嵌入式走向PC中间隔了什么如果只盯着“RISC-V 跑起了桌面系统”这个结果很容易低估整件事的难度。RISC-V 指令集架构从诞生那天起就以简洁、开放出名但它真正大规模落地的地方过去很长一段时间集中在微控制器、存储控制、IoT 设备这些对算力要求不算极端的领域。在这些场景里RISC-V 核可以只做两级流水线可以跑裸机或者简单的 RTOS甚至不需要 MMU内存管理单元这是它的舒适区。可一旦要把 RISC-V 塞进 PC事情就完全变了。PC 意味着要跑完整的 Linux 桌面发行版要支持多进程、虚拟内存、多核调度要插 PCIe 外设要接图形处理器要处理 USB、NVMe 固态盘、有线和无线网卡要跟 UEFI 固件打交道。这一整套系统靠一个光秃秃的指令集是撑不起来的。RISC-V 基金会和社区这些年花了大量精力去补齐的恰恰是 ISA 之外的“看不见的冰山”平台规范、系统寄存器、中断控制器、定时器、总线协议、固件接口、ACPI 表、设备树、虚拟化扩展、内存一致性模型。这些东西才是决定一颗 SoC 能不能成为 PC 级别芯片的关键。所以当你听到“SiFive 要演示运行 RISC-V SoC 的 PC”时真正应该关注的不只是某颗 CPU 核心的跑分而是这颗 SoC 在系统层面把上面这一堆基础架构整合到了什么程度。它能不能通过 UEFI 启动、能不能进 ACPI 电源管理、能不能让 Linux 主线内核稳定跑起来、PCIe 枚举正常不正常这些比“主频多少”重要得多。1.2 SiFive在RISC-V商业化里的位置聊 SiFive 之前得先理清楚它和 RISC-V 的关系。RISC-V 指令集本身是开放标准但标准不会自动变成芯片。SiFive 是 RISC-V 商业化的第一梯队公司创始团队就是 RISC-V 指令集的最初发起人所以他们既有制定标准的话语权又能把标准转化成可授权的处理器 IP。相比某些自研 RISC-V 内核然后自己造芯片的厂商SiFive 的角色更偏向于 ARM 那样的 IP 授权方设计出高性能的 RISC-V 核心然后授权给其他芯片公司做集成。这家公司的产品线划分得很清楚E 系列走嵌入式S 系列走应用处理器P 系列走高性能计算。而这次要演示 PC 的新款 SoC结合 SiFive 现有的产品策略来看大概率是基于 P 系列高性能核心打造的——P650、P670 这一代核心本身就具备 3 发射乱序执行、RVV 1.0 向量扩展、虚拟化支持这些桌面应用必需的硬件特性。P670 的设计目标就是对标 Arm Cortex-A78 级别的 IP频率可以在 3GHz 以上跑拿来做笔记本和入门台式机是完全合理的。但 SiFive 自己通常不直接卖整机他们做的是“把关键性能节点跑出来给行业看”这件事。这次演示与其说是一个消费级 PC 产品要上市不如说是 SiFive 在向整个行业传递信号RISC-V 的 IP 已经具备支撑桌面系统的成熟度你有意做 RISC-V PC 或者服务器可以来拿我的 IP 去设计了。这类演示的意义有点类似于一个零部件供应商在展会上搭出完整样机证明“我这套方案已经能跑通整条链路”。2. 一颗能跑PC的RISC-V SoC要解决哪些架构问题2.1 超出指令集的部分缓存一致性、中断、总线与虚拟化一颗 PC 级 SoCCPU 核心往往只是其中一小部分。芯片拿在手里是一整块硅片里面跑的东西像一个微型城市CPU 核心是住户缓存是仓库内存控制器是港口PCIe 控制器是高速公路收费站NPU 和 GPU 是特殊工厂。要让这些模块协同工作而不出乱子核心问题就是“一致性”。缓存一致性在多核处理器里每个核都有私有的一级缓存、共享的二级缓存数据在各级缓存和主存之间的同步必须严格一致。如果核 A 改了某个地址的数据核 B 读到的却还是旧值整个程序就会在不可预测的地方崩掉。RISC-V 在这方面的处理方式是从 ARM 和 x86 的经验里吸收了很多通过缓存一致性协议典型的是 CHI 总线协议里的一致性状态机保证各核看到的数据视图是一致的。PC 级别的 RISC-V SoC多核数量一旦上去一致性的验证就会变得极其复杂这也是为什么很多 RISC-V 芯片公司验证团队最头疼的部分。中断子系统PC 场景下的中断远比 MCU 复杂。键盘鼠标、网卡、显卡、磁盘每个外设都可能随时产生中断中断处理器要能快速仲裁、分组、抢占。RISC-V 在早期规范里只有简单的 PLIC平台级中断控制器后来演进出了 APLIC高级平台级中断控制器和 IMSIC中断文件系统配合核内的 CLINT核级本地中断定时器来管理定时器和软件中断。桌面系统要跑的负载五花八门中断配置的灵活性直接决定系统响应速度这块做不好普通办公都能卡出幻灯片效果。虚拟化与可信执行环境PC 上跑虚拟机早就是刚需了无论是开发者的 Docker 还是用户的 Windows 虚拟机都要求 CPU 提供硬件虚拟化支持。RISC-V 的 H 扩展Hypervisor 扩展就是干这个的。有了它虚拟机监视器才能高效地管理客户操作系统的内存、中断和特权级切换。另外安全启动和可信执行环境也成了桌面芯片的标配RISC-V 规范里对应的是一整套关于 PMP物理内存保护和可信平台模块的机制。这些系统架构层面的能力不是说指令集里加几条指令就自动有的必须由 SoC 设计者在芯片血管里一根一根搭起来。2.2 软件系统栈从固件到操作系统一条都不能断硬件只是地基PC 真正跑起来还靠一整条软件链。RISC-V 在这方面的工具链已经比几年前好太多但远远没到 x86 那种“随便怎么折腾都能跑”的成熟度。在 PC 上开机流程通常是ROM 里的固件执行自检加载 UEFI 固件然后 UEFI 再去加载操作系统引导器。RISC-V 平台目前最常见的方案是 OpenSBI 作为 M-mode机器模式下的固件层提供 SBI监督程序二进制接口给操作系统调用。U-Boot 在 RISC-V 上已经非常成熟可以支持从 NVMe、eMMC、网络启动。EDK2UEFI 的开源实现对 RISC-V 也有完整的支持不过在实际板子上踩坑率比 U-Boot 高不少。操作系统层面Linux 内核从 5.19 版本左右开始合入 RISC-V 向量扩展支持之后主线对 RISC-V 的支持越来越完善。Debian 在 2023 年启动了 riscv64 官方移植Ubuntu 也有官方移植版本。这意味着跑一个桌面版 Linux 在软件上已经是可行的只是桌面环境的成熟度还需要时间打磨。Fedora 也有 RISC-V 版本但性能调优和硬件加速这块普遍还处于能用但不是很顺滑的状态。所以这次 SiFive 演示 PC最值得期待的部分其实是软件栈能不能“一条龙”跑通。如果演示现场能流畅运行浏览器、文本编辑器、视频播放这些日常操作说明整个生态已经迈过了及格线。如果只是启动到命令行就算“PC”那离“普通用户能用”还有一段距离。2.3 性能对标与产品规划的合理推测从行业已有信息来看SiFive 的 P670 核心在 SPECint 2006 的模拟跑分上已经能达到相当可观的水平接近 Arm Cortex-A78 甚至略优。这次演示的新款 SoC 如果基于 P 系列更新一代的核心性能目标大概率瞄准中端乃至高端笔记本市场。不过这里要泼一盆冷水纸面性能距离实际体验还有很大距离。RISC-V 生态的软件优化程度还远不如 ARM 和 x86。你买一台同跑分的 x86 电脑日常软件基本都是针对 x86 原生编译、高度优化过的而在 RISC-V 上很多软件要么只能通过模拟器翻译运行要么编译时优化选项还没吃透。用户在桌面系统上的操作延迟、图形渲染流畅度、应用启动速度这些最终都会受软件生态拖累。所以如果你期待 RISC-V PC 一出来就能跑得比同价位 x86 还快基本不现实。现阶段的意义在于把桌面这个场景跑通给后续软件优化一个真实的目标平台。具体型号信息我没法在文章里替你确认建议以现场发布为准。但结合 SiFive 的产品节奏这次展示的 SoC 大概率会支持 DDR5 或 LPDDR5 内存集成 PCIe Gen5 控制器内置 GPU 或支持外接独显同时搭配新一代的 AI 处理单元。这些配置是桌面 SoC 的及格线缺一个都会被生态伙伴质疑“能不能当 PC 用”。3. 下一代AI SoC向量扩展和异构计算才是主角3.1 RVV向量扩展一条条指令榨干算力标题里那个“下一代 AI SoC”同样是重头戏。现在做 AI 芯片的厂商很多但大多走的是“堆 NPU 大算力”的路线。SiFive 的思路不太一样他们更强调把 RISC-V 的向量扩展RVV和可扩展的 AI 加速器结合起来让 CPU 本身就有一定的 AI 算力同时通过开放的接口挂上专用的神经网络加速单元。RVVRISC-V Vector Extension是 RISC-V 规范里专门用来处理批量数据运算的指令集。可以把它理解成给 CPU 加了一排并列的“士兵”一条指令能让一排士兵同时干活而不是让一个士兵轮流干。对矩阵乘法、卷积、注意力机制这类 AI 里的核心算子向量化的收益是非常显著的。一个支持 RVV 1.0 的 S 系列或 P 系列核心配合足够的向量寄存器宽度和较高的主频跑一些中等规模的模型推理是可以的。SiFive 的 Intelligence 系列比如 X280就是针对 AI 场景优化的向量处理器核它支持 RVV 1.0并且可以作为主核或协处理器形态出现。新一代 AI SoC 大概率会把这样的向量核做得更强向量位宽可能从 128 位往 256 位甚至更高扩展同时优化数据搬运路径减少 CPU 核和 AI 加速器之间因为“喂数据”产生的瓶颈。3.2 异构集成CPU、NPU与自定义指令怎么分工搞 AI 的人都懂一个基本原则没有一种计算单元能在所有场景都最优。CPU 灵活但算力密度低GPU/NPU 算力密度高但灵活性差。一颗合格的 AI SoC 必须学会分工CPU 负责控制流、任务调度、预处理和一部分轻量级推理NPU 或 DSP 负责大算力算子处理比如卷积、矩阵乘如果厂商想把某个特定模型做进芯片还可以通过 RISC-V 的自定义指令扩展把“算子下沉”到硬件实现。RISC-V 在这方面的最大优势就是开放性。Arm 也支持自定义指令但审批流程比较严格而且有各种兼容性限制。RISC-V 的合法自定义指令空间是架构里天然预留的芯片设计者可以在 ISA 允许的范围内添加自己的专用指令不影响基础指令集的兼容性。这意味着一个 SoC 厂商完全可以在 RISC-V 核里加几条指令让某个 AI 算子的执行速度提高一个数量级。这是 x86 做不到的也是大部分 ARM 平台难以做到的。当然自定义指令也是一把双刃剑。如果厂商加了一堆私货软件生态就会碎片化——你在 A 厂商的 RISC-V 芯片上编译的二进制可能到了 B 厂商的 RISC-V 芯片上就跑不了。RISC-V 社区现在也有意识地在推动一些“标准扩展”来避免这种碎片化比如已批准的向量加密扩展、正在制定的矩阵扩展等等。对于做 AI SoC 的厂商来说更稳妥的做法是尽量用标准扩展满足大部分需求自定义指令只针对最核心的差异化算子。3.3 AI软件栈的匹配问题AI 芯片不只拼硬件匹配的软件栈同样关键。如果你做出一颗 NPU结果开发者只能靠厂商给的私有 SDK 编译模型那生态就很难起来。现在行业的一个共同方向是拥抱 ONNX Runtime、TensorFlow Lite、PyTorch 这些主流推理框架通过统一的接口把模型编译到 NPU 上。RISC-V 在 AI 软件栈上的一个重要里程碑是PyTorch 已经能比较顺畅地在 RISC-V 上编译运行OpenBLAS、OpenCV 这些基础库也有移植。但这只是“能跑”层面距离“高效跑”还有考核算子库优化、指令调度、缓存局部性优化这些都需要针对具体芯片做大量调优工作。SiFive 如果想让它的 AI SoC 真正被客户接受必须同时提供成熟的软件工具链。否则再强的硬件也是一堆废硅片。4. 体验与实操从QEMU到开发板普通人如何先跑起来RISC-V讲了这么多架构层面的东西接下来上点实操内容。如果你还没接触过 RISC-V 的开发环境或者想抢在 SiFive 的新 SoC 出来之前先把工具链摸熟下面这条路线是我实际操作下来比较顺的。4.1 最友好的入门路线QEMU加Buildroot在没有真实开发板的情况下最快感受 RISC-V 的方式是使用 QEMU 的 RISC-V virt 虚拟机。QEMU 对 RISC-V 的支持已经非常成熟可以模拟完整的平台包括多核、中断控制器、PCIe、网络设备等。搭一个最小的系统大概需要这几步# 安装 QEMU以 Ubuntu/Debian 为例 sudo apt install qemu-system-misc build-essential flex bison bc libncurses-dev libssl-dev # 获取 Buildroot git clone https://github.com/buildroot/buildroot.git cd buildroot make qemu_riscv64_virt_defconfig makeBuildroot 构建完成后会在 output/images 目录下生成内核镜像、根文件系统和设备树。然后用 QEMU 启动qemu-system-riscv64 -M virt -smp 4 -m 2G \ -kernel output/images/Image \ -drive fileoutput/images/rootfs.ext2,formatraw,ifide \ -append root/dev/sda consolettyS0 \ -nographic启动之后你就有一个 RISC-V 64 位的 Linux 环境了。可以在里面跑编译、写脚本、测试交叉编译的二进制。这个环境虽然性能不怎么样但用来学习 RISC-V 的系统调用、汇编指令、内存布局比读三十篇文档都管用。如果需要更完整的桌面体验还可以用模拟的方式跑 Debian riscv64 的镜像启动后可以装一个最小化的 Xfce 桌面体验一下在 RISC-V 上打开的浏览器是什么感觉。提示Buildroot 第一次编译会比较慢取决于你的网络和 CPU可能要三十分钟到一个小时。建议挂个好一点的镜像源别在编译中途掐断。4.2 条件允许可以用FPGA跑最小核做实验如果你手头有 FPGA 开发板比如常见的 Artix-7、Kintex-7 或国产的一些 FPGA 板卡可以尝试自己下载一个开源的 RISC-V 软核比如 Rocket Core、BOOM 或者更小一点的 VexRiscv。很多高校的“risc-v 单周期 CPU 实验”用的就是这类软核把它在 FPGA 上跑通后可以通过串口跟它交互写一段汇编在片上跑起来再通过 JTAG 调试单步执行。很多大学生和刚入行的朋友在博客里总结过踩坑汇总最常见的是时序约束没写好导致上板后跑飞其次是内存初始化文件路径问题导致指令读出来全是 0。这类问题基本都有现成的排查套路——先用逻辑分析仪抓取取指阶段有没有输出有效地址再确认复位之后 PC 初始值一步步缩小范围。FPGA 实验虽然离 PC SoC 还差很远但能帮你建立“指令到底怎么在硅片里流动”的直觉。这种直觉对做 SoC 集成和系统软件开发的人特别重要。你写驱动遇到莫名其妙的 bug 时脑海里能大概想象出总线上发生了什么排查起来会快很多。4.3 工具链快速上手RISC-V 的工具链现在其实很成熟了。交叉编译最常用的是 riscv64-unknown-linux-gnu-gcc 或 riscv64-linux-gnu-gcc发行版仓库里一般都有现成包sudo apt install gcc-riscv64-linux-gnu binutils-riscv64-linux-gnu gdb-multiarch qemu-user用 QEMU 用户态模式可以直接在 x86 机器上跑 RISC-V 编译出来的程序不用启动整个虚拟机riscv64-linux-gnu-gcc -static hello.c -o hello qemu-riscv64 hello如果你想学习 RISC-V 汇编我建议从下面这段最基础的开始.text .globl _start _start: li a0, 1 # stdout la a1, message li a2, 13 # length li a7, 64 # syscall write ecall li a0, 0 li a7, 93 # syscall exit ecall message: .asciz Hello, RV64\n这段代码会调用 Linux 的系统调用往标准输出打印字符串。你能看到 RISC-V 的寄存器用法和系统调用约定参数通过 a0-a7 传系统调用号放在 a7用 ecall 陷入内核。这对理解用户态和内核态的切换机制非常有帮助。如果你把这段汇编拿到上一节的 QEMU 虚拟机里跑效果更直观。5. 入门RISC-V最容易踩的坑与排查办法这一节我把自己和身边朋友在 RISC-V 开发过程中遇到的高频问题整理成表每一条都是真实踩过的不是文档里那句话。问题现象常见原因排查方法交叉编译的程序在 QEMU 里跑 Segmentation Fault工具链与 QEMU 架构不匹配或者编译时没有加 -static先确认用 file hello 看架构加 -static 再试用 qemu-riscv64 -g 加 gdb 调试Buildroot 编译到一半报错找不到头文件外设库和内核版本不对齐比如 musl 工具链与内核头文件版本不一致检查 .config 里工具链类型改用 buildroot 内置工具链重新编译QEMU 启动后内核 panic提示无法挂载根文件系统设备树没有指定正确的根分区参数检查 append 参数中的 root确认磁盘设备名是 /dev/sda 还是 /dev/vda在 QEMU 里跑程序奇慢无比默认模拟器没有开启 KVM 或 TCG 多线程加速用 -cpu rv64,mmuon 或新版 QEMU 的 -accel tcg,threadmulti 参数上板后串口完全没有输出时钟配置错误、复位信号没拉对、固件入口地址不对先查开发板的时钟约束文件确认串口引脚复用配置再检查固件链接脚本里入口地址跟硬件复位向量一致Linux 内核开启了向量扩展支持后程序莫名崩溃用户态软件没有保存向量寄存器上下文旧内核有相关 bug升级内核到 6.x 较新版本检查 glibc 版本是否支持 RVV 上下文切换RVV 算子是“能用但性能不升反降”没有做循环展开和数据对齐向量访存出现大量冲突对关键循环做 -O3 -marchrv64gcv 编译检查汇编里是否生成 vsetvli数据按 32 字节对齐OpenSBI 和 U-Boot 版本组合不兼容在启动早期卡死SBI 版本和操作系统期望的 SBI 版本不一致统一把 OpenSBI、U-Boot 和内核更新到同一年份的主线版本不要混用老树在 QEMU 里调试时控制台回显异常串口参数设置不对QEMU 的字符设备参数与驱动不匹配检查 -serial mon:stdio 和内核 consolettyS0 是否匹配5.1 工具链版本导致的“莫名其妙”错误这里单独拎出来说是因为我吃过太多亏。RISC-V 的工具链更新速度非常快新的指令扩展、新的 ABI 规范往往会带来兼容性变化。最常见的问题就是你用一个很新的 riscv64-unknown-elf-gcc 编译出来的程序放到一个旧版 QEMU 上跑结果出现非法指令异常。因为这个旧版 QEMU 还没支持你的编译器默认生成的新指令。解决办法是建立“工具链、QEMU、内核、发行版”四者版本一致性的概念。不是在同一个日期拉下来的版本就不要指望它们能协同工作。如果你用了发行版仓库里的工具链就尽量用发行版仓库里的 QEMU如果你想用最新的上游工具链那最好连 QEMU 也一并从源码编译保持日期接近。这个原则适用于一切 RISC-V 开发尤其是内核调试和裸机开发。5.2 内存模型与并发问题RISC-V 的内存模型RVWMO和 x86 的强内存模型非常不同也比 ARM 的模型更宽松。这意味着在多线程程序里你写的一个线程里看起来“先发生”的写操作在另一个线程里读起来可能是乱序的。很多人从 x86 转到 RISC-V 写并发程序第一波严重 bug 往往就出在这里。如果你在 RISC-V SoC 上写多线程代码建议从一开始就显式使用原子指令lr/sc 或 amoswap 系列不要依赖编译器或者硬件保证顺序。在 Linux 内核里则要使用标准的内存屏障接口。另外在验证自己的 SoC 时内存一致性测试是个非常必要的环节——工业界有 litmus 测试工具专门用来检测多核系统在内存模型上是否符合规范。这块如果在芯片设计阶段没测透流片之后抓多核并发 bug 会是非常痛苦的经历。5.3 模拟环境下的性能陷阱在 QEMU 里测 RISC-V 性能基本只能看指令功能和软件逻辑是否正确不能拿来做任何性能参考。QEMU 的 TCG 模式本质是二进制翻译翻译效率受到宿主机性能限制而且缓存模拟的精度有限。曾经有个朋友在 QEMU 上测出一个“性能优化”方案跑分提升了 30%结果拿到真实开发板上一测反而慢了 10%。原因就是 QEMU 的缓存模型和真实硬件差太多优化方向完全被带偏了。如果你想做真实的性能评估最低成本的方案是买一块带 RISC-V 应用处理器的开发板比如 StarFive VisionFive 2用的是 JH7110 SoC或 SiFive 官方的 HiFive 系列。这些板子能跑完整 Linux性能虽然比不上 PC但至少是真实硅片指令周期、缓存行为、IO 速度都是真实的。5.4 生态缺失时怎么办RISC-V 的软件生态虽然有进步但遇到“某个库没有 RISC-V 预编译包”的情况还是很常见。我的习惯是优先启用发行版的 riscv64 源然后源码编译。如果某个软件依赖特别多编译链条特别长可以先尝试用 Docker 的 multiarch 模拟环境在 x86 上模拟 RISC-V 环境来构建。也可以看看是不是已经有社区在维护这个软件的 RISC-V 移植版比如 RISC-V 的 Debian 移植组就维护了一大堆包的移植状态。另外如果你的目标是往 RISC-V 生态里贡献代码最值得做的一件事就是把你有问题的软件包做好可复现的编译验证而不是只提交一个补丁。RISC-V 社区特别看重“可复现构建”因为芯片平台碎片化程度高能复现才能验证。6. 从PC到AI SoC这一次的演示背后还有哪些值得期待最后再说回这次 SiFive 的演示。表面上看只是一台 RISC-V PC 和一颗 AI SoC 的亮相但背后的信息量要比新闻标题大得多。对做 PC 整机和操作系统的厂商来说这意味着一套除 x86 和 ARM 之外的第三极方案开始走向可用。双轨制供货、供应链安全、定制化空间这些企业考量的因素RISC-V 都能给出不同的答案。对做 AI 芯片的团队来说SiFive 在向量处理器上的积累表明AI 算力不一定非得靠独立的 NPU 才能实现主流的 CPU 核本身就能承担一部分 AI 计算这种设计在功耗敏感的边缘设备上会非常有吸引力。至于要不要现在就把产品切到 RISC-V 上我的看法是分场景。如果做的是对生态依赖程度低、代码可以完全自主控制的场景比如专用网络设备、工业控制器、边缘 AI 盒子RISC-V 的开放性和可定制性已经有明显优势可以开始评估迁移成本。如果做的是通用计算产品需要跑大量第三方闭源软件那还是要等生态再成熟一些。我自己在实际操作中的一个体会是RISC-V 最大的魅力不是它现在能跑多快而是它给了硬件工程师和软件工程师一个重新审视“计算系统到底应该怎么设计”的机会。在 x86 和 ARM 体系里很多设计惯性是定死的你只能顺着走。在 RISC-V 里你可以自由地裁剪指令集、定制加速器、调整系统接口这种自由度对创新来说是非常宝贵的。不过自由也意味着责任——设计得好是差异化设计得不好就是生态碎片化的又一笔账。希望这次 SiFive 的新品能在开放性和兼容性之间找到一个好平衡。