上周看到SiFive官宣要公开演示一台跑Linux的RISC-V PC,同时还预告了下一代AI SoC的消息,这个节点在芯片圈子里确实值得停下来聊一聊。做嵌入式或者芯片相关的朋友应该都清楚,RISC-V这个指令集架构从2010年在伯克利实验室诞生到现在,十几年过去了,大家见得最多的是它在MCU、IoT、存储控制这些领域的落地,真正跑到PC这种性能敏感、软件生态复杂的场景,还是头一回有头部IP厂商这么高调地站出来做公开演示。
这篇文章不打算复述新闻稿。我想从芯片设计的角度拆一拆:一台RISC-V PC要顺畅跑起来,SoC里到底要啃哪些硬骨头?所谓的“下一代AI SoC”又会在哪些层面做文章?以及对我们这些做嵌入式、做系统软件、做AI应用的人,接下来应该把关注点放在哪里。
1. 事件全景:一台PC背后的RISC-V成年礼
1.1 从嵌入式到桌面,RISC-V在跨一道什么槛
先把这个事件的分量说清楚。RISC-V过去这些年的主战场,集中在MCU、无线连接芯片、存储控制器、边缘传感器这些对绝对性能要求不高的场景。比如我用过的兆易创新GD32V系列、乐鑫ESP32-C3,还有一堆TWS耳机里的主控,都是RISC-V内核,但它们的共同特点是:跑轻量级RTOS或者裸机程序,对操作系统生态的依赖很低。
但PC是另一个物种。PC意味着你要跑完整的Linux发行版,意味着要有图形界面、浏览器、办公套件、开发工具链,意味着内存要大、IO要宽、中断要快、多核调度要稳,甚至还得考虑虚拟化。这些需求会把SoC的设计复杂度抬升一个量级。SiFive这次要演示的PC,核心价值在于向整个行业证明一件事:RISC-V不是只能在低功耗嵌入式领域打打酱油,它在通用计算这条赛道上也可以正面出场。
1.2 为什么是SiFive来捅破这层窗户纸
在RISC-V生态里,SiFive的角色很像ARM生态里的ARM自己:它不直接卖芯片,而是卖CPU IP核、SoC设计平台和相关的开发工具。但和ARM不太一样的是,SiFive自己也做芯片。这种“既当裁判又当运动员”的模式,让它可以更快地把最新的指令集扩展、微架构特性推向市场验证。比如RISC-V的Vector扩展(RVV)1.0规范正式批准之后,SiFive是最早拿出支持RVV 1.0的商用核心的厂商之一。
这次展示的PC级SoC,我认为它真正的意义不是跑分多高,而是它在向整个软件生态喊话:你们可以放心往RISC-V上迁移了,硬件底子已经搭好了。因为一个指令集架构能不能在PC领域活下去,硬件只是一半,软件生态才是另一半。而SiFive这次之所以敢公开演示,说明它在硬件和软件两侧都已经做了足够的功课。
2. 一台PC级RISC-V SoC背后的技术账
2.1 从核心微架构说起:PC的底子还得靠乱序执行
做高性能CPU的人都知道,要跑桌面级负载,顺序执行核心基本没戏。早期的RISC-V核心比如经典的Rocket,是顺序单发射的设计,做做嵌入式还行,跑Linux桌面会慢得让人崩溃。后来SiFive推出的Performance系列(P系列)开始引入乱序执行、多发射、深流水线,这才是向PC性能门槛迈进的关键一步。
我举个具体例子:SiFive的Performance P670/P870系列,单核性能目标是逼近ARM Cortex-A76/A78的水平。这意味着它要有足够大的ROB(重排序缓冲区)、足够多的物理寄存器、精准的分支预测器,还要有高效的数据预取机制。这些微架构特性直接决定了芯片能不能在运行大型软件时保持流畅体验。一颗PC级SoC的主CPU部分,设计工作量里有一大半都花在这里。
2.2 多核缓存一致性:不可回避的硬骨头
PC级负载几乎都是多线程的。操作系统调度、浏览器多标签页、编译、视频解码,哪个不是多核并行?多核要并行,缓存一致性(Cache Coherency)就是绕不开的坎。RISC-V在这方面用的是业界标准的AMBA CHI总线协议,以及ACE、AXI这些片上互连协议。SiFive的核心支持多集群配置,集群内和集群间都要保证缓存一致性。
这里有一个很实际的工程问题:一致性协议要实现好,调试起来极其痛苦。我早年在调一块多核ARM板子的时候,遇到过伪共享(False Sharing)导致的性能骤降,两个核频繁争抢同一个缓存行,性能直接掉了百分之三四十。这种事情在RISC-V多核PC上一样会出现,而且因为工具链和调试器没有ARM那么成熟,排查起来更费劲。所以SiFive在展示PC级SoC的同时,必然要提供一整套一致性调试和性能分析的方案,否则下游做板的厂商拿到IP也玩不转。
2.3 内存和IO:PC的血管与神经
一台PC要跑得动大型软件,内存带宽必须够。以DDR5为例,双通道DDR5-6400的理论带宽大约102.4GB/s,这基本是PC级SoC的起步要求。SoC里的内存控制器要做的事情包括:地址映射、刷新管理、电源管理、ECC校验(尤其是面向数据中心场景)、以及和LLC(最后一级缓存)之间的高效交互。这些做不好,CPU核心再强也只能干等着数据从内存里搬过来。
IO方面更复杂。一台现代PC的标准外设接口包括PCIe(显卡、NVMe SSD)、USB(键鼠、外设)、DisplayPort/HDMI(显示输出)、以太网(网络连接),可能还有SD卡/UART这类基本IO。这里面PCIe的控制复杂度最高,因为PCIe链路训练、中断路由(MSI/MSI-X)、AER错误处理都是有一定门槛的。终端用户插上一块显卡没点亮,或者插上NVMe硬盘识别不到,这些问题的根子往往不在CPU核心,而在PCIe控制器的实现质量上。
2.4 启动链路:从复位到Linux控制台的完整链条
说到SoC启动,这是很多RISC-V新手最容易忽略但实际非常重要的环节。PC级RISC-V SoC的启动流程一般是:
- 芯片上电复位后,先从片内ROM执行一小段固化代码
- 这一小段代码负责初始化时钟、DDR内存控制器,把OpenSBI(RISC-V的机器模式固件)从SPI Flash或者eMMC里加载到内存
- OpenSBI运行在M态(机器模式),负责管理中断、定时器、IPI(核间中断),然后把控制权交给U-Boot(运行在S态或U态)
- U-Boot加载Linux内核的Image、设备树(DTB)和initramfs
- Linux内核启动后,OpenSBI退居幕后充当M态服务提供者,通过SBI调用接口和内核交互
这套链路的每一个环节都有坑。比如设备树里漏配了一个中断控制器节点,内核可能直接卡死在启动早期;DDR的时序参数没调好,轻则启动速度变慢,重则随机死机。SiFive这类IP厂商通常会把OpenSBI平台代码和U-Boot的board支持包一起提供给客户,但下游做板的工程师依然要有能力去调试这些底层代码。
2.5 AI算力为什么一定要整合进SoC
最后聊一下为什么这次SiFive要同时预告AI SoC。PC级SoC的核心是通用计算,但眼下的产业环境里,纯CPU跑AI的效率太低了。一个很典型的例子:用CPU跑Transformer推理,在INT8精度下通常只能做到几个TOPS的算力,而一颗集成了NPU(神经网络处理单元)的SoC轻轻松松就能做到几十甚至上百TOPS。这个差距是数量级的。
所以现代PC级SoC的趋势,是把CPU、GPU、NPU集成到同一颗芯片上,形成异构计算平台。CPU负责逻辑控制,GPU负责图形渲染和部分并行计算,NPU专门跑AI推理。SiFive这次说要在PC SoC之外再出一颗“Next-Gen AI SoC”,我理解它走的是两条腿:一条腿解决“RISC-V能不能跑PC”的问题,另一条腿解决“RISC-V平台上的AI怎么办”的问题。这两件事其实是同一个产业的上下半场。
3. 下一代AI SoC的看点:算力、架构与生态的三重博弈
3.1 算力指标要看TOPS,也要看有效算力
现在市面上AI芯片的宣传动不动就是几百TOPS甚至上千TOPS,但这里面的水分很大。TOPS这个指标通常是在理想情况下,MAC阵列满负荷运转时测出来的理论峰值。实际部署AI模型的时候,能跑到的有效算力往往要打对折甚至更低。
有效算力损失主要来自几个方面:一是数据搬运瓶颈,片上存储带宽不够,计算单元只能空转等待数据;二是算子支持度,如果NPU的指令集不支持某些算子,就得把计算任务拆分到CPU或者用多个算子组合实现,效率大幅下降;三是精度取舍,FP16、BF16、INT8的吞吐量不一样,模型部署时如何选择精度直接影响最终性能。
所以看下一代AI SoC,我更关心的是它有没有足够的片上SRAM、有没有高带宽的片上互连、有没有灵活的算子调度机制,而不是盯着宣传页上的TOPS数字。这就好比买车看发动机马力很重要,但变速箱和底盘的匹配同样决定实际驾驶体验。
3.2 数据流架构:NPU设计的核心选择题
NPU的MAC阵列设计,核心在于数据流架构的选择。行业里比较常见的有三种:
- 权重固定(Weight Stationary):权重数据驻留在计算单元里,输入特征图不断流入,适合权重复用率高的场景
- 输入固定(Input Stationary):输入特征图驻留,权重不断流入,适合输入数据复用率高的场景
- 输出固定(Output Stationary):中间计算结果驻留在计算单元内,减少写回片外存储的次数
三种架构没有绝对优劣,关键看目标负载。如果是Transformer这类模型,权重参数量大,输入序列是动态长度,那么对片上存储的灵活性和数据流切换能力要求更高。如果主要是CNN模型,经典的卷积滑动窗口模式下,输入特征图的复用率很高,权重固定的架构可能更合适。
SiFive做AI SoC,比较聪明的做法是跟业界成熟方案学习,比如借鉴Google TPU、NVIDIA Tensor Core、以及各种国产AI芯片的设计思路。它真正的差异化,应该是如何把RISC-V CPU核、RVV向量单元和NPU融合到统一的编程模型里,让开发者写一套代码就能在CPU和NPU之间灵活调度。
3.3 软件栈:AI芯片的隐形战场
做过AI芯片落地的人应该都深有体会:芯片流片回来只是开始,软件栈能不能跟上才是生死线。所谓的软件栈包括:编译器(把ONNX/PyTorch模型编译成NPU指令)、量化工具(把FP32模型转成INT8/BF16)、推理运行时(Runtime)、以及算子库(对标cuDNN的概念)。
这套东西的工程量是巨大的。我见过不少AI芯片公司,硬件设计得不错,结果软件栈迟迟不成熟,落地项目一拖再拖。SiFive如果要做好下一代AI SoC,必须在软件生态上拿出足够的诚意。好消息是RISC-V生态有GCC/LLVM这样成熟的编译器基础设施,坏消息是NPU的编译器几乎要自己写,因为每家NPU的指令集和硬件架构都不一样。
从开发者视角来看,AI SoC能不能被市场接受,关键看三件事:能不能一键把PyTorch模型跑起来、跑起来的性能与官方宣称的差距大不大、调试工具好不好用。这三点做不到,芯片就是一块昂贵的砖头。
3.4 和多模态模型的需求对齐
接下来一两年AI应用的一个明显趋势是多模态模型,输入输出可能同时包含文本、图像、音频、视频等形式。这意味着端侧AI SoC要面对的算子种类更多、推理时的内存压力更大、对系统总线的带宽要求更高。
举个实际场景:手机或者PC上跑一个视频理解模型,摄像头拿到一帧画面送入NPU做目标检测,同时语音输入送入另一个模型做ASR(语音识别),还要有一个LLM在后台处理用户语义并生成回答。这串任务并行跑下来,对NPU的分时调度能力、多任务并发能力、CPU和NPU之间的高效协作都是很大的考验。下一代的AI SoC如果能在这些真实场景里保持流畅体验,那才是真正有价值的产品。
4. 生态现状与开发者实操路径
4.1 现在的RISC-V开发板能做什么
对大多数开发者来说,不可能等到SiFive的PC真正量产再去学习RISC-V。现在市面上已经有不少可以跑Linux的RISC-V开发板,我接触过的有StarFive VisionFive 2、Sophgo的LicheePi 4A、Milk-V系列等。这些板子有的是单板机形态,有的是核心板加底板的方式。
以VisionFive 2为例,它用的JH7110 SoC,四核RISC-V(U74核心),主频1.5GHz,板载2到8GB内存,支持M.2 NVMe SSD,有千兆以太网和HDMI输出。拿来跑一个轻量级Linux桌面,开个终端写写代码,跑跑Node.js服务,是没问题的。但你要指望它干重活,比如同时打开几十个浏览器标签页,或者跑一个大模型推理,那就有点为难它了。这类板子的真实价值,是让开发者以几百块钱的成本先把手感和工具链跑通。
4.2 在RISC-V上跑AI的真实体验
我自己在一块RISC-V板子上跑过一些机器学习的实验,说实话体验是“能跑,但别指望快”。RISC-V的向量扩展RVV 1.0在理论上可以做并行计算,但实际效果取决于编译器能不能生成高效的向量化代码。GCC和LLVM对RVV的支持这两年在快速进步,但和x86的AVX、ARM的NEON/SVE相比,成熟度还有差距。
如果要在RISC-V平台上做AI推理,我建议的路径是:先用ONNX Runtime在CPU上跑通功能,确认模型逻辑没问题,再考虑是否要做NPU适配或者RVV优化。千万不要一上来就想着把模型搬到NPU上加速,因为NPU的工具链可能还不成熟,排错会非常痛苦。跑通的优先级高于跑快,这个原则在任何新平台上都适用。
4.3 开发者上车的最佳姿势
如果你现在想开始学习RISC-VSoC开发,我建议按这个顺序走:
第一步,先搞一块便宜的RISC-V开发板,比如ESP32-C3或者GD32V这种单片机级别的,跑几个裸机程序,把指令集、中断、外设的基本概念弄清楚。这个阶段的目标是理解RISC-V的机器模式、监管模式、用户模式这三种特权级别的区别,以及CSR(控制状态寄存器)的基本操作。
第二步,换跑Linux的开发板,比如VisionFive 2,用发行版自带的GCC交叉编译工具链编译几个小项目,尝试修改设备树、调试启动问题。这个阶段的关键是理解完整的启动链路,把OpenSBI、U-Boot、Linux内核、根文件系统这四个环节之间的关系理清楚。
第三步,根据自己的方向深入。做系统软件的可以研究RISC-V的虚拟化扩展、防护扩展(PMP);做AI应用的可以尝试在板子上跑ONNX Runtime,对比不同量化精度下的性能和准确率;做驱动的可以写一个简单的字符设备驱动,理解中断和DMA的实际运作。
4.4 踩过的坑和一些技巧
这里分享几个我刚接触RISC-V时踩过的坑,应该能给后来者省点时间。
第一个坑,工具链版本不一致导致的神秘编译错误。RISC-V的工具链还在快速迭代,不同发行版打包的GCC版本差异很大,可能导致同一份代码在不同的环境里编译结果不一样。我的建议是尽量用官方推荐的工具链版本,比如SiFive提供的Freedom Studio里集成的工具链,或者用riscv-gnu-toolchain仓库自己编译一套固定版本,避免用系统自带的工具链。
第二个坑,OpenSBI平台时钟配置错了导致系统时间飞跑。OpenSBI需要知道自己运行在什么频率的时钟源上,这个参数如果配置错了,Linux内核里看到的系统时间会成倍漂移,表现为sleep不准、任务调度混乱。排查这类问题时,先回到OpenSBI的platform配置里核对时钟频率。
第三个坑,设备树(DTB)里的中断号和外设实际的中断号对不上。这类问题极其隐蔽,表面上看驱动都加载了,但外部中断就是不触发。排查方法是反复核对SoC参考手册里的中断映射表,并且在内核启动参数里打开中断调试日志。在RISC-V平台上,IRQ的编号规则和ARM不完全一样,千万别想当然。
5. 行业影响:对芯片格局和技术演进的长远推动
5.1 对x86和ARM形成的差异化竞争
RISC-V想正面硬刚x86或者ARM,短期内不现实,也不必要。它的核心优势在于开放性和可定制性。x86的指令集被Intel和AMD牢牢把控,ARM的架构授权门槛极高,而RISC-V允许任何公司基于开放标准设计自己的核心,这意味着下游厂商可以根据自己的业务场景裁剪指令集和微架构。
对于PC这个场景,RISC-V更现实的目标是先在特定垂直市场站稳脚跟,比如教育PC、云终端、轻量办公设备、特定行业的专用计算平台。这些场景对软件兼容性的要求相对可控,对成本和可定制性的要求却很高。RISC-V的开放特性在这里能发挥最大价值。随着SiFive这类头部厂商不断做示范,越来越多的整机厂商和系统集成商才有信心跟进。
5.2 AI SoC的竞赛节奏会越来越快
AI芯片的竞争已经从比拼算力指标,进入比拼综合能力的阶段:算力、能效比、软件生态、对大模型的支持度、落地场景的适配性。SiFive这次预告下一代AI SoC,实际上是在向市场传递一个信号:RISC-V生态不只是做控制器和小芯片,AI这个最热门的赛道,它也要占据一席之地。
从整个产业来看,端侧AI的爆发会带动一轮新的芯片需求,而RISC-V由于其可定制性和开放生态,在这个领域天然有优势。做AI应用的团队,接下来可以多关注RISC-V平台上的推理引擎和工具链进展,提前布局总不是坏事。
5.3 对开发者社区的正向影响
SiFive选择公开演示PC级RISC-V SoC,对开发者社区是一个很大的鼓舞。这不仅仅是PPT上的蓝图,而是有人真的把一台可以跑系统的机器做出来了。这种实物演示会比任何白皮书都更有说服力,也会吸引更多优秀的工程师投入到RISC-V的软件生态建设中。
我个人的判断是,未来两到三年,RISC-V在服务器和PC领域的进展会明显提速,会有更多基于RISC-V的迷你主机、开发板、云实例出现。对于软件开发者来说,提前熟悉RISC-V的交叉编译、调试工具、性能分析工具,会是一项有长期回报的技术投资。
6. 写在最后:一些真实的体会和建议
聊了这么多,最后说一点我个人在实际操作中的体会。做芯片或者做嵌入式底层开发的朋友应该都有同感:一个新的指令集架构要真正落地,最难的不是硬件本身,而是整个生态系统里那些细碎而繁琐的配套工作。一台PC级的RISC-V SoC能公开演示,意味着背后的固件、内核适配、桌面环境、应用兼容性,都已经有人认认真真地趟过一遍了。这对整个行业来说,是一个实实在在的积极信号。
对于现在想动手尝试RISC-V的朋友,我的建议是别等,先买一块板子回来跑起来。哪怕只是编译一个hello world、点亮一块OLED屏,这个过程中建立起来的对启动流程、CSR、工具链、调试器的直觉,会让你在之后面对更复杂的RISC-V项目时从容很多。所有的架构演进,最后都要落到一行行实际运行的代码上。现在就动手,等大潮真正涌来的时候,你就已经站在岸上了。