RISC-V切入AI芯片的三种路径与实战剖析
RISC-V这波热度从2023年一直烧到现在不少团队都在问同一个问题它到底怎么打进AI芯片这个局毕竟AI芯片现在是兵家必争之地X86和ARM占着诸侯割据的老位置RISC-V作为开源指令集的后起之秀凭什么挤进牌桌我一直在一线做芯片和AI加速相关的工作前前后后也接触过不少基于RISC-V的AI项目从端侧推理小核到数据中心加速卡慢慢摸清了它切入AI赛道的几条真实路径。先说个结论RISC-V切入AI芯片核心不是跟X86/ARM拼传统算力而是拼“异构弹性”和“指令集自定权利”。围绕这个核心目前市面上真正跑通的基本上就是这三种姿势一是走标准矢量扩展通用计算兼顾AI推理二是走自研AI专用指令扩展在主核旁边加矩阵/张量指令三是走多核阵列加可裁剪的领域加速器用整个SoC层面去包AI负载。这篇文章把这三种姿势逐个拆开讲包括原理、案例、坑点、能做什么不能做什么。最后聊聊真正的胜负手——软件栈和工具链那才是RISC-V能不能从“能跑AI”变成“好用AI”的关键。1. 老规矩先盘一盘RISC-V的“开源”到底开源了什么在聊三种姿势之前得先把一个最容易被混淆的概念理清楚。很多人一听“开源指令集”第一反应是“芯片免费了”“代码随便抄”。其实这个理解只说对了一小半。1.1 开源的是指令集架构不是芯片实现RISC-V开源的是指令集架构ISA也就是CPU和软件之间约定好的“语言规范”。你可以免费下载规范文档免费设计一套符合规范的处理器核心不需要向任何公司交授权费也不用担心某一天被断供。但具体怎么做流水线、怎么设计缓存、怎么做分支预测这些微架构层面的技术全都要靠你自己的团队设计或者去买第三方商业IP核。打个不太严谨的比方指令集像是“语法规则”英语语法是公开的但你写出一篇精彩的文章还得靠自己的词汇量和文采。ARM卖的是“已经写好的范文库”你花钱买许可就能用来考试RISC-V给了你一张白纸和语法书想怎么写看你的本事。1.2 AI芯片眼里RISC-V的三个特殊资产做AI芯片的人看RISC-V看的不是它能省多少钱而是下面这三样东西第一指令集的可扩展性。RISC-V天生留了大量自定义指令编码空间芯片设计者可以往里面塞自己想要的AI专用指令不必像X86和ARM那样受限于封闭生态。这对于跑矩阵乘加、卷积、激活函数这些高度重复的AI负载来说意义极其重大。第二工具链和生态一视同仁。指令集开源意味着GCC、LLVM、Linux、QEMU这些基础软件从一开始就有社区版本支持不用像早年某些专用处理器那样从编译器到调试器全部自己造轮子。对AI芯片来说软件栈的成熟度直接决定项目能不能按期交付别小看这一点。第三模块化组合。RISC-V不是一套臃肿的大而全架构它的指令集按“基础整数指令可选扩展模块”组织。做AI芯片的时候可以按需裁剪比如不要浮点单元、不要向量扩展只保留核心控制逻辑然后把裸金属上的AI加速器面积做到极致。这三样东西叠加在一起给了芯片团队一种“自由组合拳”的快感——这是过去二十年造芯片都没体验过的。1.3 为什么偏偏是AI芯片最吃这套AI芯片的负载特征和X86/ARM原本服务的通用计算负载有本质区别。通用计算讲究单线程响应速度、事务处理、频率与分支预测AI计算讲究并行吞吐、数据复用、密集乘加。传统指令集为了兼容几十年来的软件遗产已经背了太多历史包袱很难干脆利落地为神经网络计算做激进优化。RISC-V没有这些包袱。它出生在2010年代碰巧赶上深度学习的爆发设计者从一开始就把“可扩展”“可定制”当成核心哲学写进基因里。AI芯片的开发者需要什么指令就可以往里加什么指令。这种按需定制的灵活性恰恰是X86和ARM短期给不了的。2. 第一种姿势矢量扩展路线——用标准指令打通用AI推理RISC-V切入AI赛道最“省力”的方式就是走矢量扩展也就是常说的RVVRISC-V Vector Extension。2.1 什么是RVV它和ARM NEON、X86 AVX有什么区别简单说RVV是一套被标准化的向量计算指令。它能让你用一条指令同时对一堆数据进行相同的运算比如一次处理8个浮点数相加或者16个8位整数做乘加。这种能力对AI推理意味着什么因为神经网络里的卷积、全连接、归一化本质上全是批量乘加和批量加减操作。谁能更高效地批量搬运和计算数据谁就有更高的算力利用率。ARM的NEON和X86的AVX做的事情也类似但它们的问题是向量位宽和寄存器布局都是固定的开发者得为特定硬件做适配换个芯片就要重调。RVV和它们最大的不同在于它的向量长度VLEN是可配置的。同一套软件既能跑在支持128位向量长度的低功耗核心上也能跑在支持512位甚至1024位向量长度的高性能核心上。编译器会根据实际硬件把指令展开到对应的向量宽度这种“写一次代码到处高性能运行”的特性对AI生态的碎片化特别友好。2.2 RVV在AI芯片里到底能扛多少活实测下来RVV的强项是CPU通用核内的AI推理加速尤其是Int8和FP16这类低精度数据。配合RISC-V的可配置寄存器堆和向量内存访问单核吞吐能做得很高足够覆盖许多端侧和边缘侧AI场景。举一个我们之前调过的实例用一颗支持RVV 1.0的RISC-V双核处理器做TinyML推理跑一个MobileNetV2图像分类模型INT8量化输入224x224。单帧推理耗时可以压到30到50毫秒左右功耗只有几十毫瓦。虽然和专门的NPU比还有差距但胜在通用性和可编程性同一个核心既能跑AI推理也能跑RTOS、协议栈、传感器融合一颗芯片搞定所有工作。在这种场景下RVV相当于把“CPU的算力天花板”抬高了一大截很多原本需要外挂一颗MCU或DSP来处理AI任务的产品现在可以用单核RISC-V搞定。产品的BOM成本、PCB面积、软件复杂度都跟着降了下来。2.3 芯片层怎么看到RVV的算力价值站在芯片设计者的角度RVV最有价值的一点是它的硬件实现是可伸缩的。你可以把向量ALU做成单发射也可以做双发射甚至四发射你可以用32个向量寄存器也可以做到64个甚至更多你还可以自己决定数据通路的位宽和访存带宽。这意味着什么意味着同一个RVV指令集可以覆盖从几十毫瓦的耳机芯片到几十瓦的边缘服务器芯片。它不像传统方案那样非要区别“AI核”和“通用核”两套体系而是让通用核本身就具备AI能力让异构的跨度变小了。所以我给那些“想快速上AI功能、又不想推倒重来设计专用NPU”的团队第一个建议就是认真看看RVV。它的性价比在端侧AI领域非常突出。但也要注意RVV毕竟不是专用矩阵引擎它做卷积靠的还是循环展开和向量化属于“软件充分压榨硬件”的路线碰上超大模型、超大Batch推理性能和专用架构还是差一截的。2.4 一个关键细节FPU和向量单元的关系聊到RVV就绕不开浮点单元FPU。很多第一次接触RISC-V AI方案的人会困惑FPU和AI计算到底什么关系其实关系很大。RVV的浮点向量指令很多底层都是复用FPU的浮点运算电路的尤其是FP16和BF16这类半精度浮点几乎成了AI推理的标配。如果你设计的RISC-V核心只带标量FPU没有向量FPU那跑起AI模型来仍然会非常吃力因为卷积里面的权重和激活值普遍是浮点表示的。所以做AI方向的RISC-V核心标配一定是标量FPU 向量FPU 向量整数运算单元这三件套缺哪个AI性能就瘸哪条腿。这块我们在芯片流片前没重视软件栈合入以后实测才发现浮点带宽严重不足某些算子的性能直接崩掉四成。后来硬着头皮把向量FPU的吞吐提上去才把推理性能拉到预期值。可以说FPU设计得合不合理直接决定RVV这条路线性价比高不高这一点很多PPT上不会给你写明白。3. 第二种姿势自定义AI指令扩展——把“私货”写进指令集如果说RVV是“用标准武器作战”那自定义AI指令就是“自己打造专属武器”。这才是RISC-V最让AI芯片团队兴奋的地方。3.1 为什么说RISC-V的“留白”是给AI指令留的RISC-V指令集在设计之初就故意留了大量未定义的编码空间官方的说法是留作“自定义扩展”用。这就像一本装订好的笔记本官方写好了目录和大部分内容但故意留了几十页空白页让用户自己发挥。这些空白页就是给AI专用指令准备的插槽。作为芯片设计者你完全可以设计一条名为“MAC_MATRIX”的自定义指令操作数指定两个起始地址和一个累加器编号然后硬件在一个时钟周期内完成4x4甚至8x8的矩阵乘加运算。普通RVV指令可能要执行几十个周期才能完成同样的工作自定义指令一条就能搞定性能和效率差距就这么拉开的。3.2 三种主流的自定义AI指令实现思路具体怎么实现目前市面上有三种主流玩法第一种单指令多数据SIMD风格扩展。把标准RVV的向量寄存器当作“茧床”在其上自定义专门的矩阵乘加、向量点积、深度可分离卷积指令。指令编码挂在自定义扩展区硬件逻辑擦着ALU阵列走算是一种轻量级加速。第二种协处理器接口风格扩展。设计一个AI加速器协处理器然后通过RISC-V的协处理器接口比如自定义load/store或memory-mapped寄存器让主核把任务“踢”给它。主核负责流程控制和调度协处理器负责密集计算两边各干各的妥协性比较好。第三种完全修改数据通路。直接定义一套新的数据格式和寄存器堆积层让CPU流水线里的某些阶段能直接被AI指令接管完成极深度的数据流加速。这种设计改造成本最高但性能和效率也最极限。像Esperanto公司在ET-SoC-1芯片里给每个RISC-V核心塞的AI加速引擎说白了就是走的路子。3.3 一个实战项目的自定义指令设计复盘我自己带过的一个端侧AI语音识别项目就是用自定义指令路线升级的一个RISC-V核心。我们遇到的痛点很具体语音前端算法里的MFCC特征提取和LSTM推理大部分计算是向量点积和矩阵向量乘用RVV跑总觉得“差点意思”——数据搬运太多寄存器周转不过来效率卡在70%上不去。后来我们冷分析了热点函数发现权重矩阵访问模式高度规则且非常适合乒乓式数据复用。于是我们在自定义扩展区定义了两条指令一条是“权重向量加载并乘加”一条是“激活函数查找表查表并写入”。这两条指令让数据通路绕过了通用寄存器的瓶颈直接在缓存和MAC阵列之间建立了专用搬运通道。流片后的实测结果LSTM的单步推理延迟比纯RVV版本降低了55%功耗降低了约30%。当然代价是设计团队多花了两个月的验证时间工具链也要自己写汇编器和反汇编器的补丁。但长远来看这种“用硬件设计师的辛苦换软件运行时的极致效率”的决策在AI场景中是非常划算的。如果你的产品形态固定、算法演进周期慢自定义指令扩展绝对值得押注。3.4 做自定义指令最容易踩的三个坑给指令集加私货爽归爽坑也不少。第一个坑指令集像“毒品”加了一条就想加第二条。硬件设计团队很容易过度设计最后AI指令膨胀到几十条验证量成倍上涨流片风险剧增。我的建议是严格控制指令数能用RVV标准指令绕过去的绝不自定义真正自定义的必须是核心热点里占比最高的前三条指令多一条都不要。第二个坑编译器支持跟不上。GCC和LLVM的RISC-V后端确实支持自定义指令扩展但你在新增指令时需要自己编写GCC的RTL描述或LLVM的SelectionDAG模式否则编译器根本不会生成这条指令的代码。这块工作量非常大很多团队低估了。如果你没有至少一名专业的编译器工程师我劝你在立项前慎之又慎。第三个坑生态兼容性。自定义指令只能在你自己这颗芯片上用意味着所有AI软件栈、算子库、推理框架都得跟着你适配一遍。如果你的芯片卖给别人别人拿着通用代码跑不出性能又会觉得是你的问题。所以自定义指令的边界一定要想清楚是只给自己用还是要形成产品给第三方用两者的策略完全不一样。4. 第三种姿势多核异构与领域优化——把AI做成SoC的“一张网”前两种姿势比较关注“单个核怎么变强”第三种姿势的关注点从“核”跳到了“系统”。RISC-V切入AI芯片最深的护城河不是单核性能而是“多核可扩展”加“定制化外围”的系统级能力。4.1 从Duo核到百核阵列RISC-V天然适合做AI的“机群”RISC-V的核心面积小、功耗低、指令集精简特别适合做大规模同构或异构多核阵列。AI推理任务天然可并行比如图像分类里各个通道的卷积可以并行算大模型里各个注意力头也可以并行算。你完全可以把一个大模型按切块分给几十个甚至上百个RISC-V核每个核处理一块数据核间通过片上网络NoC交换中间结果形成一个轻量级的“算力矩阵”。这种方案的典型代表是Esperanto的ET-SoC-1里边塞了上千个RISC-V核心专攻推荐系统和大规模嵌入表查表这类推荐模型负载。每个核心处理一部分数据整体吞吐非常可观但功耗却控制得比GPU低得多。国内也有创业团队在走这条路把RISC-V核心和自研矩阵引擎做成一个Die用类似“小芯片”的架构把AI算力小众化。这种“千核城市”的玩法是X86和ARM极难复制的因为它们的核心面积授权成本高指令集也不够精简无法以低成本堆叠到数百核。4.2 小芯片和2.5D封装让RISC-V的AI系统如虎添翼这几年小芯片Chiplet和2.5D封装技术大热配合RISC-V之后AI芯片的系统设计空间就更大了。你现在可以像拼乐高一样把一颗RISC-V控制核芯装在小芯片封装里旁边再放一颗自研AI加速器小芯片两颗小芯片之间用高速Die-to-Die接口互联。不用再像传统SoC那样强行把所有模块塞进同一块硅片良率、成本、设计周期的压力都大大缓解。我们做过的一个新项目就用了“RISC-V主导小芯片 AI加速器小芯片”的架构。RISC-V主控负责跑Linux、网络协议栈、任务调度AI加速器小芯片负责大算力推理。两颗芯片分开流片验证互不牵制最后再2.5D封装到一起。整个项目的流片风险和成本几乎比之前单芯片SoC方案降低了一半。这种架构对AI芯片最大的价值就是可以“混搭”RISC-V核心可以用成熟的商业IP比如SiFive、平头哥的核AI加速器小芯片自己定制不必什么模块都从零做。这让AI芯片的创业门槛大幅降低也让系统设计者有了更多自主权。4.3 别忘了缓存一致性和存储带宽走多核异构路线听上去美好但有一个极其现实的工程问题核与核之间、核与AI加速器之间的数据一致性怎么保证。AI任务需要频繁搬运中间结果和权重参数如果每次都要走一遍低速的外部内存性能会大幅腰斩。所以必须设计合理的缓存一致性协议和高速片上存储SRAM。RISC-V体系里目前业界主流的做法是采用基于TileLinkTL-C或ACE协议的缓存一致性总线。它能让RISC-V核、AI加速器、DMA引擎共享一致的内存视图无需软件手动同步。这块如果不做扎实多核阵列就只是一堆“各算各的算盘珠子”整体效率根本发挥不出来。我们做性能仿真的时候就吃了缓存一致性的亏头一版设计没有做共享二级缓存的一致性支持结果多核并行时主核和AI加速器在数据同步上互等导致加速比从理论的8倍掉到了不到3倍。后来补上了硬件一致性机制性能才恢复正常。4.4 这条姿势最适合谁走在我接触的项目里走多核异构路线的团队画像很清晰要么是做云端推理服务器芯片的要么是做边缘计算盒子的总之都是面向“高吞吐、复杂场景、多任务并发”的领域。它们需要的不只是一颗“能跑AI的CPU”而是一整套“能高效编排AI负载的计算系统”。他们的共同特点是软件和算法能力很强能写出复杂驱动的多核任务切分和同步调度代码并且对功耗有严格预算。如果你只是做一颗简单的单片机AI芯片直接走第一或第二种姿势就够了强行上多核异构是杀鸡用牛刀项目周期和成本都hold不住。5. 软件栈才是真正的分水岭RISC-V AI芯片能不能用看这里前面聊的三种姿势其实都是“开局选项”真正决定RISC-V AI芯片成败的是软件栈能不能接住硬件这三板斧。5.1 AI软件栈的四层模型一套完整的RISC-V AI软件栈大致分四层缺一不可。第一层是编译器和运行时。GCC和LLVM对RISC-V的支持已经很成熟但AI自定义指令需要自行扩展这块前面说过了。如果你走RVV标准路线编译器自动向量化虽然能用但和手写内联汇编的效率差距仍然很大建议关键算子还是手写优化。第二层是算子库和内核库。类似OneDNN、cuDNN的存在RISC-V社区也有RVV算子库项目但成熟度远没有X86/ARM高。许多团队用着用着就开始自己造库这项工作非常耗时却又是硬件性能能否真正兑现的瓶颈。第三层是推理框架适配。PyTorch、TensorFlow、ONNX Runtime、TVM这些框架需要把计算图拆解成具体的算子调用才能真正用起来。RISC-V要做到“跑主流模型不吃力”必须在这层做深度适配。我们从零适配一个ONNX模型到RVV核上前后花了团队六周时间其中多数时间都耗在了算子映射和内存布局转换上。第四层是应用场景工具链。比如模型量化工具、模型压缩、性能分析profiler、调试器。没有这些用户拿到芯片后连“我的模型跑起来为什么这么慢”都排查不了产品基本上无法交付。5.2 为什么很多RISC-V AI芯片项目死在软件上我见过不少芯片流片成功但市场化失败的案例根因几乎都指向同一处硬件跑通了一个demo性能很漂亮但软件团队没有在投资方耐心耗尽之前把通用适配做完。结果软件生态跟不上客户没法用卖不出量整个项目就陷入恶性循环。说白了AI芯片的竞争到了今天已经不只是“门电路跑得多快”的竞争而是“一个模型从拿到手到高效部署要多少天”的竞争。RISC-V的ARM/X86在指令集层面打破了封闭但软件生态的封闭性却仍然存在。谁先补上软件栈的短板谁才能真正吃到这波开源的AI红利。5.3 给正准备入局者的工具链建议一是“跟着大模型走”优先适配PyTorch和ONNX Runtime因为这是目前AI应用的主流入口二是“先用虚拟机做全栈预研”在流片之前用QEMU模拟RISC-V指令集先把编译器、推理框架跑通不要在芯片回来以后才做软件三是“量化优先”AI推理用INT8甚至INT4量化数据搬运和计算都有一个数量级的优化空间先搞定量化工具链性价比最高。这块细聊能写一万字这里先插个旗子后面可以单独开一篇讲RISC-V AI软件栈的适配实录。6. 做RISC-V AI芯片我踩过的坑和选型建议写了这么多把实际工程里遇到过的、听过的问题集中复盘一下算是给大家的实战参考。6.1 选型前先问自己的四个问题第一你的目标负载是云端训练还是端侧推理训练对浮点IP和互联带宽要求极高短期不适合RISC-V推理尤其是端侧低功耗推理RISC-V现在就是香甜的蛋糕。第二你的团队有没有编译器能力没有任何指令集扩展可以绕过编译器团队里没有编译器工程师乖乖走RVV标准路线别碰自定义指令。第三你的软件生态能投入多少人月我看到不少团队硬件20个人、软件2个人这种配比做AI芯片必死。至少要做到软件人数不低于硬件的一半才可能擦得完那些地雷。第四你的商业模式是卖芯片、卖IP还是做方案不同模式对自定义指令的接受度完全不一样。卖IP可以激进一点卖芯片要考虑第三方用户的适配成本做方案则怎么快怎么来。6.2 常见成本误区开源不等于免费这是最容易被低估的一笔账。指令集不收费但微架构研发要花高薪养团队GCC/LLVM开源但给自家自定义指令做移植要专门写代码QEMU能用但做性能仿真的cycle model还得自己搭。开源省掉的只是授权费的“首付”后续的开发人力才是“月供”而且这个月供很重。6.3 和ARM对比什么时候选RISC-V如果是极低功耗、超大出货量的场景RISC-V的授权成本优势极为明显一颗省几美元千万颗就是几千万美元。如果是追求极致单核性能和软件兼容性ARM的成熟度更高。如果是要冲AI高效定制RISC-V为核心加自定义AI指令能拿到ARM完全给不了的自定义红利——因为ARM根本不让你改指令集。6.4 最新的FPU和向量单元设计趋势目前业界在FPU和向量单元上的一个明显趋势是做可配置的多精度浮点支持。比如同一个向量FPU既支持FP64做科学计算也支持FP16和BF16做AI训练甚至还能切到INT8做推理。这种多精度融合设计可以大幅复用硅片面积在不同工作负载之间动态切换让RISC-V核心的能效比进一步拉高。我们新项目的RISC-V核就重点加强了BF16的支持跑BERT类模型时性能直接翻倍。6.5 给入局者的最终建议如果今天有人问我“RISC-V怎么做AI芯片”我会把核心信息压缩成三句话端侧推理走RVV标准路线成本低见效快有算法定制的团队走自定义指令扩展收益大但要舍得填编译器的坑做系统级产品的走多核异构加Chiplet赢在整体能效和弹性。三条路之间不是互斥的业界头部玩家往往同时踩着两条甚至三条真正的护城河在于把指令集灵活性和软件栈深度结合起来。7. 一个值得关注的新变化FPU技术正在重新定位RISC-V AI能力最后单聊FPU因为这是RISC-V AI赛道里近期异常活跃的部分。传统印象里FPU就是“算浮点数的”但在AI芯片语境下FPU的定位正在被重写。现在的RISC-V高性能核心基本都会配置完整的多精度浮点单元支持FP64/FP32/FP16/BF16多种格式。为什么这和AI芯片强相关因为AI推理已经从FP32全面转向FP16/BF16训练也在大量使用混合精度FPU如果不支持这些低精度格式主核就很难在AI链路里扮演数据前处理的角色。更值得关注的是FPU在向量扩展和矩阵扩展之间的“粘合作用”。RVV的许多浮点指令最终要落到FPU的流水线里执行某些自定义矩阵指令也会复用FPU的乘法器阵列。可以把FPU想象成一个功能高度可重构的“体操选手”既做标准体操也能去客串高难度动作。RISC-V FPU越强核心就越有底气和专用NPU掰手腕。我们实验室拿同一套RISC-V核心分别配置了“基础标量FPU”和“多精度融合向量FPU”两版跑同一个YOLOv5s目标检测模型。结果向量版比标量版的端到端推理吞吐高出2.3倍。这已经不是“多花点面积”的差距而是“能不能用”的本质区别。所以认真给想入局RISC-V AI芯片的朋友提个醒设计阶段多花一个月打磨好FPU和向量单元之间的数据通路比你事后折腾任何软件优化都管用。这条经验真的是拿流片次数和无数个调试之夜换回来的。RISC-V的AI之路怎么走、走多快最终还是要看每个团队怎么把“开源指令集”的灵活性转成自己产品的真实竞争力。三种姿势各有各的门道祝大家少踩坑多流片成功。

相关新闻

最新新闻

日新闻

周新闻

月新闻