ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

上海交大IPADS主导RISC-V指令集扩展写入国际标准,从使用者到定义者的跨越

上海交大IPADS主导RISC-V指令集扩展写入国际标准,从使用者到定义者的跨越 这个消息我是从朋友圈里看到的第一反应是赶紧去翻RISC-V International的官方仓库确认。做CPU和嵌入式这行的人都知道RISC-V这几年在国内有多火但火的大多是基于RISC-V做芯片基于RISC-V做产品真正能在国际标准层面留下名字的团队掰着手指头数得过来。上海交大IPADS团队主导的指令集扩展能写进国际标准这件事的含金量远不是国内团队又发了一篇论文能比的。尤其对常年混迹在RISC-V生态里的开发者来说这是从用标准的人变成写标准的人的一次标志性跨越。这篇东西我想跟各位拆开聊聊这次扩展背后到底解决什么问题、一个指令集扩展从提案到进标准要走多远、以及作为普通开发者我们能从这件事里看到什么、学到什么。内容不涉及芯片内部的具体电路设计但会尽量把技术逻辑讲透方便不同背景的读者都能跟上。1. 先弄明白指令集标准为什么这么难写很多人对RISC-V的开放有个误解以为开放就等于没有门槛、谁都能来改。实际上RISC-V的开放指的是授权模式开放——指令集架构ISA本身不收费、不设壁垒任何组织和个人都可以基于它做芯片、做工具链、做操作系统适配。但这跟参与标准制定是两码事。1.1 RISC-V的开放不等于没有门槛RISC-V国际基金会RISC-V International维护着整套标准文档基础指令集I、整数乘除M、原子操作A、浮点F/D、压缩指令C这些都是大家熟知的。但标准体系里还有大量扩展指令比如向量扩展V、虚拟化扩展H、各种缓存管理指令Zicbop、条件操作Zicond等等。每一类扩展从提出到最终冻结都要经过一个相当漫长的流程先有人写提案说明我要解决什么问题、为什么现有指令做不到、我的方案长什么样然后成立专门的任务组Task Group拉上相关公司和个人开发者反复评审再走公审、冻结、正式发布等一整套程序。这个过程不是走过场因为标准一旦定下来影响的是几十家芯片厂商的流片计划、几十套工具链的长期维护、无数操作系统的适配进度。改动一个指令语义可能意味着某家公司已经流片的芯片要重新改版。所以标准组织对合入新扩展极其保守没有真实需求支撑、没有足够社区共识的提案基本活不到公审阶段。1.2 用标准和写标准是两个维度的能力国内这两年基于RISC-V做产品开发的公司不少。平头哥、算能、尉迟处置、无实质风险这些团队都有成熟的芯片产品很多开发者的日常工作就是围绕RISC-V的GNU工具链、LLVM、QEMU模拟器在转。但用标准只要求你阅读文档、遵从规范、确保软件兼容写标准却要求你站在整个生态的层面去思考什么是通用需求、什么只是你一家的小众想法如何在商业利益和技术公信力之间取得平衡怎样把一套原始想法打磨成可以被全世界采纳的规范文本。打个比方一个开源项目的用户和这个项目的维护者虽然面对的是同一套代码但思维方式完全不一样。用户关心我现在能不能用维护者关心这个项目三年后还能不能健康演进。指令集标准也是一样IPADS团队能走到主导扩展这一步意味着他们过去多年的系统软件研究积累已经被国际社区认可这比单纯发表论文要难得多。2. IPADS主导的这次扩展可能在给系统软件补什么课标题里没有写明这次扩展的具体名字但从公开报道和IPADS团队的研究主线来看方向基本能判断个大概。IPADS全称是上海交大并行与分布式系统研究所国内做操作系统、虚拟化、内存系统和计算机体系结构协同设计的人对这个名字应该都不陌生。他们过去的研究重心一直在底层系统软件与硬件如何配合这件事上。2.1 先看IPADS的研究底色IPADS在操作系统领域发过不少有分量的工作尤其是系统安全、非易失内存、虚拟化方向。他们的研究往往不是纯软件层面自嗨而是会认真思考如果硬件提供一个新指令、一个新寄存器、一个新内存属性系统软件能不能做得更高效、更安全。这种从软件需求倒推硬件设计的视角在学术圈叫协同设计codesign但在RISC-V生态里真正能把这种协同设计做到国际标准层面的团队全球范围内都不多。所以这次他们主导的扩展大概率不是纯计算类的算术指令扩展也不像某些厂商为特定AI负载定制的那种专用加速指令而是更偏向系统软件基础设施的指令或CSR控制状态寄存器层面的扩展比如页表管理、内存屏障、中断控制器交互、安全边界检查这一类。这类扩展的特点是普通应用开发者几乎感知不到但操作系统内核、虚拟机监控器Hypervisor、运行时库的工程师会非常敏感因为直击他们的性能和安全隐患。2.2 系统软件最想要的指令长什么样举个大家容易理解的例子。操作系统管理内存时要操作页表传统做法是CPU内置MMU硬件自动遍历页表但页表项怎么分配、怎么回收、怎么保证多个核之间看到一致的页表状态这些都需要软件配合。如果有专门的指令能帮助软件更快地刷TLB、更精确地控制缓存预取整个系统的性能都能受益。再比如安全领域经常要防止跳转目标被篡改这类攻击传统x86和ARM都有对应的硬件方案RISC-V下的影子栈Shadow Stack和着陆点Landing Pad机制就是典型例子。这类扩展的价值不在于让某一条指令跑得更快而在于给操作系统提供更清晰、更高效的硬件语义。你可以理解为普通指令是给应用层员工用的工具箱而系统软件扩展是给管理层设计的一整套管理章程后者设计得好不好直接影响整个系统运转的效率和安全。2.3 已经进入标准的同类扩展可以提供参照其实RISC-V标准仓库里已经有几条类似性质的扩展可以对照着看。比如Zicbop指令集它提供缓存块预取指令允许软件主动告诉硬件接下来我会访问某块内存请提前把它加载到缓存里听起来简单但不同的预取语义对真实程序的性能影响差别很大所以也要专门标准化。再比如Zicond提供条件立即数运算CPU流水线设计里这类指令能帮助编译器减少分支预测失败的开销它同样属于看起来不起眼、用起来真香的系统软件友好型扩展。以此类推IPADS主导的这次扩展很可能是把他们在操作系统、虚拟化和安全方向上的某个长期痛点首次变成了一套RISC-V规范。从论文里写设计到标准里定规范中间隔着整个社区的技术评审、两轮以上的公审和无数次修订这个跨越的意义某种程度上比芯片流片成功还大。3. 一个扩展从技术提案变成国际标准要走完哪些流程很多开发者对RISC-V标准流程的印象停留在写个提案、拉个群、投票通过就完事真实情况要复杂得多。我自己也参与过一些开源标准的讨论深知这条链路里每个环节都有大量的沟通成本和返工风险。3.1 立项Task Group背后的需求博弈一个扩展想进入RISC-V国际标准第一步通常是先在社区发出意向书Intention说清楚准备解决什么问题。如果响应的人够多RISC-V International会批准成立一个Task Group由该领域的专家组成负责把意向变成正式规范。这个阶段最常见的问题是需求定义不清你感觉某个功能有必要但说不清是所有实现者都需要还是只有你自己的场景需要。标准组织不会为了单一厂商的需求冻结一个扩展因为你这边需要不代表别人欠你的。所以提案方往往要花大量精力做调研拉上多家公司背书证明这不是一家之见。IPADS团队能走到主导这一步说明他们至少在需求论证阶段就拿到了足够的社区认。RISC-V的生态特点是参与方很杂——有做嵌入式MCU的有做高性能服务器的有做AI加速器的各方对指令扩展的诉求差异极大。能在这种嘈杂的环境里凝聚出一个共识本身就是一件非常考验技术判断力和沟通能力的事。3.2 开发、公审、冻结RISC-V标准的节奏Task Group成立后会进入规范编写和原型验证阶段。扩展的规范文本要写清楚指令编码、操作语义、异常行为、与现有扩展的交互同时必须有相应的工具链和模拟器实现来验证这些设计不能只是纸面上画个框图。接下来是公审阶段规范文档在RISC-V International官网上公示任何社区成员都能提意见。提意见的人里真有较真的硬件工程师他们可能会质疑某个保留编码位的语义、某个CSR的访存权限、某个指令在乱序执行时的行为边界。每一条意见都要回应哪怕是这条意见不采纳也得写出充分理由。公审期结束后进入冻结阶段冻结不代表完事而是进入最后的问题修复窗口。这段时间如果发现致命冲突可能整个扩展会被打回重审。所以写进标准这四个字背后代表的是至少一年起步的持续投入而且大部分投入发生在别人看不到的文档和邮件列表讨论里。3.3 国内团队参与标准制定时要注意的细节结合这次IPADS的经验以及我自己看过的其他团队踩坑经历有几点值得所有想参与RISC-V标准工作的国内团队注意公开透明的讨论记录比技术本身更重要。标准社区极度重视决策可追溯性你今天在邮件列表里说的一句话可能三年后就成了判断某个设计意图的关键依据。所有讨论尽量放到公开渠道别在私下微信群和邮件里就把方案定完。重视兼容性和扩展共存设计。新增的指令位编码不能跟已有扩展冲突设计时必须考虑扩展之间的组合使用场景。很多提案死在单独看没问题和向量扩展一起用就出bug的组合爆炸上。预留好长尾维护时间。标准合入只是开始后续还有工具链适配、软核实现、文档维护等大量工作。没有长期投入准备的团队最好谨慎启动标准提案。下表是标准推进几个关键阶段的典型周期参考阶段主要工作典型周期意向与立项需求调研、社区预热、Task Group成立2-6个月规范开发编码设计、规范文本、仿真与原型验证6-12个月公审社区评审、意见回复、修订3-6个月冻结与发布问题修复、最终投票、官方发布1-3个月这只是一般情况实际项目可能更长尤其是涉及特权架构或安全机制的扩展评审密度会成倍上升。4. 从追赶指令集到定义指令集生态位发生了什么变化国内RISC-V生态过去几年的主流叙事是自主可控降低授权成本打破x86和ARM的垄断这些说法本身没错但它们都有一个隐含前提RISC-V的技术标准由国际社区主导我们更多是搭车人。这次IPADS团队主导扩展合入国际标准最大的意义在于国内技术团队在RISC-V生态里的角色开始从乘客变成司机。4.1 对国内RISC-V芯片和工具链的影响做芯片的人都知道指令集标准里多一个扩展整个软件栈都得跟着变化。编译器要能生成新指令汇编器要认识新助记符链接器、调试器、操作系统内核的上下文切换逻辑、模拟器如QEMU和Spike都要同步适配。如果一个扩展是由国内团队主导定义的国内的芯片公司就能在第一时间拿到第一手资料做出前瞻性的产品规划而不是等标准冻结后反过来做兼容适配。这对缩短产品研发周期、降低走弯路成本实实在在是利好。同时标准话语权也会影响生态的话语权。RISC-V国际标准里的很多席位过去长期由美国、欧洲的大公司占据现在国内团队开始主导具体扩展意味着国内需求有机会更早地反映到国际标准里。以后国内公司做RISC-V芯片时某些关键技术特性可能就是按照国内团队提出的方案来统一这比任何形式的国产替代口号都更实际。4.2 对普通开发者的传导路径即使你不做CPU、不做内核这件事也会间接影响你。RISC-V从指令集到软件栈的适配链条很长但如果某类系统软件扩展得到普及未来你用的编译器和操作系统自然会把这部分能力释放出来。举一个很简单的例子等某个扩展合入标准并得到主流工具链支持后如果它跟缓存预取或内存安全相关内核开发者在适配新平台时就会优先用上应用层的性能和安全体验也因此受益。对嵌入式开发者来说更要关注的是工具链和模拟器对新扩展的支持节奏。标准合入和工具链支持之间通常有时间差如果你做的是自定义指令可以走私有扩展通道快速验证如果目标是兼容国际标准那就要盯紧GNU和LLVM社区的合入进度及时在自己的Buildroot和Yocto环境里集成最新工具链。5. 想跟进RISC-V标准动态我建议你盯住这几个入口如果你看完前面这些想亲自盯着这个领域的最新进展给你几个我平时就在用的入口信息密度高、更新也及时。5.1 标准文档仓库和邮件列表RISC-V International的所有标准文档都托管在GitHub上包括isa-manual仓库、各类扩展的草案文档。经常逛这些仓库的提交记录你能第一时间看到新扩展的诞生、修改和冻结。邮件列表更贴近讨论现场很多技术分歧和决策过程在里面都是公开的虽然信息量大、噪音也大但确实是最真实的第一手来源。5.2 工具链是风向标一个新扩展合入GNU Binutils或者LLVM往往比官方文档更早暴露行踪。你可以定期在Binutils的邮件列表里搜索riscv相关的补丁提交或者直接到QEMU源码里看target/riscv目录的更新记录。如果某个扩展在模拟器里先跑通了说明它离标准冻结已经很近离真实的SoC实现也不会太远。5.3 从系统软件视角找自己的切入点最后说点带个人偏好的建议不要把注意力全放在新指令的猎奇上多关注新指令背后的系统软件需求。IPADS这次做的事本质上就是从操作系统和系统软件的真实需求出发定义了一组硬件语义。这个思路完全可以用在个人学习上——当你在做内核模块、虚拟化方案或者嵌入式RTOS时遇到为什么硬件不给我提供这个功能的抱怨不妨把它当做一个潜在的扩展课题哪怕不走到国际标准层面先在自家SoC或者FPGA上做一个私有扩展验证一下整个理解层次都会不一样。说到底RISC-V最大的魅力不是指令集本身多聪明而是它给了所有开发者一张可以真正参与定义计算机硬件接口的入场券。过去这张券只有顶级大厂拿得到现在国内高校团队已经走出了一条路剩下的就看我们这些做工具、做内核、做芯片的人能不能在这条路上添上自己的一铲子。
返回列表