关于risc-v:中科院发布国产-RISCV-处理器香山已成功运行-LinuxDebian

8次阅读

共计 7207 个字符,预计需要花费 19 分钟才能阅读完成。

本周,首届 RISC-V 中国峰会在上海科技大学举办。这是 RISC-V 第一次在北美以外地区举办等同规模的峰会。在本届大会上,中科院大学教授、中科院计算所研究员包云岗颁布了国产开源高性能 RISC-V 处理器外围——香山,其外围以“湖”来命名架构代号,第一代叫做“雁栖湖”,“雁栖湖”RTL 代码于往年 4 月实现,打算于 7 月基于台积电 28nm 工艺流片。第二代架构叫做“南湖”,将采纳中芯国内 14nm 工艺,预计今年年底流片。北京微核芯参加了第一期的设计工作,目前团队正招募香山处理器二期联合开发合作伙伴,退出的企业已有字节跳动等公司。

作者 | 包云岗,2003 年本科毕业于南京大学,2008 年获中科院计算所博士学位,2010-2012 年普林斯顿大学博士后,现为中科院计算所研究员,所长助理,先进计算机系统钻研核心主任,中国科学院大学岗位传授,博士生导师,中国凋谢指令生态(RISC-V)联盟秘书长。

22 号下午对于香山的报告,因为 Zoom 直播呈现了技术故障,导致大家未能听到残缺的报告,稍有些遗憾。思考了一下,这里就把报告 PPT 间接贴出来,再加上咱们在香山开发过程中的一些思考和想法,跟大家分享。

这个报告次要答复四个问题:

  • 一、为什么要做香山?
  • 二、香山什么程度?
  • 三、香山怎么做的?
  • 四、香山将来如何倒退?

一、为什么要做香山?

2010 年 RISC- V 诞生,迄今已有 11 年。现在,在 RISC- V 国内基金会网站上注销的各类商业或开源的 RISC- V 处理器核就有上百个(如下链接),为什么还要做一个开源的高性能 RISC- V 核?

RISC-V Exchange: Cores & SoCs – RISC-V International

对于这个问题,咱们和很多业界企业交换过,也做了很多调研与剖析,这都让咱们判断认为业界须要一个开源的高性能 RISC- V 核。另一方面,咱们也在思考一个问题——为什么 CPU 畛域还没有一个像 Linux 那样的开源主线?1991 年开源的 Linux 诞生,到明天正好 30 年。现在,Linux 不仅被工业界广泛应用,也成为学术界发展操作系统钻研的翻新平台。

RISC- V 是凋谢开源的指令集,容许全世界任何人收费实现一个 RISC- V 处理器,能够是商用,也能够开源,这是和公司公有的 X86/ARM 指令集相比最大的区别之一。然而,十年过来了,到当初还未能造成一个像 Linux 那样的开源主线。Berkeley 的 BOOM 指标是一个高性能开源 RISC- V 核,然而 BOOM 代码仓库绝对不凋谢,官网倡议其他人实现任何性能都要当时和他们沟通,以确保不要与他们的打算产生抵触。依据 GitHub 官网的统计页面显示,从 2014 年 1 月至今,为 BOOM 提交过超过 100 行代码批改的仅有 8 人。由此可见,肯定水平上因为 BOOM 严格的内部奉献政策,开源社区对 BOOM 的参与度并不高。

所以,团队的唐丹博士和我始终认为要 建设一个像 Linux 那样的开源 RISC- V 核主线,既能被工业界广泛应用,又能反对学术界试验翻新想法。最要害的是,肯定要让它像 Linux 那样至多存活 30 年!

于是,“香山”诞生了。

咱们做了一年多的筹备工作——申请经费,启动“毕生一芯”打算培养人才,建设团队,寻找合作伙伴……这期间失去了太多太多人的反对和帮忙:计算所孙凝晖院士帮咱们多处找经费,国科大全力支持“毕生一芯”打算,鹏城实验室反对咱们建设起后端物理设计团队,多位计算所老所友毅然决定参加开源主线等等,就不一一列举了。

终于,香山正式启动了——2020 年 6 月 11 日,香山在 GitHub 上建设了代码仓库。

短短的的一年工夫里,25 位同学和老师参加了香山的开发。821 次主分支代码合并,3296 次代码提交(commit),5 万余行代码,400 多个文档,记录了香山的成长过程。咱们的理念是 代码开源、流程凋谢、文档公开。这期间,有企业直接参与开发,也有企业表白参加动向,都因为认同开源理念,违心一起来共建开源的香山。这些来自工业界的踊跃反馈,给予咱们极大的鼓励和信念,让咱们更动摇地去践行“科研重工业模式”。

“科研重工业模式”,是 2020 年 1 月我为《中国计算机学会通信(CCCF)》写了一篇卷首语 《伯克利科研模式的启发》 中提出的:

袁岚峰:CCCF 卷首语:伯克利科研模式的启发 | 包云岗

回顾伯克利的科研历程,能够发现他们在过来几十年研制了大量的原型零碎,不仅推动了技术提高甚至颠覆产业,也造就了一代代杰出人才(其中多位取得图灵奖):1950 年代 CALDIC 零碎 (Doug Englebart),1960 年代 Project Genie 零碎(Butler Lampson 与 Chuck Thacker),1970 年代 BSD Unix 操作系统与 INGRES 数据库系统(Michael Stonebraker),1980 年代 RISC 处理器(David Patterson),1990 年代 RAID 存储系统与 NOW 机群系统……如果用一句话来 总结伯克利的科研模式 ,那就是—— 热衷于研制真正能改变现状的原型零碎,哪怕须要大量工程投入。国重主任孙凝晖院士称之为“科研重工业模式”。

“科研重工业模式”,咱们不想夸夸其谈,咱们要用口头去实际。

二、香山什么程度?

香山是一款开源 RISC- V 处理器核,它的架构代号以湖命名。第一版架构代号是“雁栖湖”,这是带有浓厚国科大情节的同学们起的名字,因为他们研一都在怀柔雁栖湖待了一年。“雁栖湖”RTL 代码于 2021 年 4 月实现,打算于 7 月基于 TSMC 28nm 工艺流片,目前频率为 1.3GHz。

第二版架构代号是“南湖”,这是向建党 100 周年致敬。“南湖”打算在今年年底流片,将采纳中芯国内 14nm 工艺,指标频率是 2GHz。

香山抉择什么开源许可证?这个问题纠结了咱们好一阵子。起初,咱们专门向北京大学周明辉传授求教,小伙伴们制订了 4 种开源许可证计划。在重复比照衡量后,最终抉择了如下表格中的计划①——木兰宽松版许可证(MulanPSLv2)。在此,特别感谢北大周明辉老师的业余领导!

开源许可证计划比照(徐易难整顿)

“雁栖湖”架构是一个 **11 级流水、6 发射、4 个访存部件的乱序处理器核。** 在发射宽度上曾经能够和一些 ARM 高端处理器核相当,但还未进行充沛优化,因而理论性能还有不小的差距。咱们心愿将来通过继续迭代优化(“南湖”–>”X 湖 ”–>”Y 湖 ”–>……),性能达到 ARM A76 的程度。

咱们 基于 GitHub CI 构建了一套流程化的主动回归测试框架,并在过来大半年一直减少测试负载,从 cputest,risc-tests 到 Linux,到 SPECCPU workload。这套主动回归测试框架在保障和验证芯片的正确性。

每个大我的项目总会有一些激动人心的时刻,这段 30 秒的小视频记录了香山在 FPGA 上启动 Linux/Debian 的时刻,略带喜感。

视频链接:香山在 FPGA 上启动 Linux/Debian

三、香山怎么做的?

香山开发初期速度十分快: 6 月 11 日建设代码仓库,7 月 6 日乱序流水线便已实现,能正确运行 CoreMark,不到一个月工夫;9 月 12 日,Linux 正确启动10 月 22 日,Debian 正确启动。

接下来便是大半年的构造优化、性能调优、时序优化工作,香山架构简直相当于重构了一遍。一个典型的例子,香山的第一版分支预测器(BPU)参考了 BOOM 的 BPU,但后端评估频率只能达到 800MHz(TSMC 28nm)。于是负责 BPU 设计的勾凌睿在几位老师的领导下,一直优化 BPU 构造,最终将频率晋升到了 1.4GHz。

这期间,小伙伴们纷纷本人入手,开发了各种各样的优化和调试工具,大大地减速了优化和验证环节。这让我真心拜服这批 90 后——他们真是 充斥了创造力,从工作到生存,而次要驱动力之一就是“省(tou)时(lan)”。比方宁肯本人写个程序主动点外卖,也懒得关上手机看菜单点。

香山的开发至多有两个重要的决策,第一个便是抉择麻利设计语言 Chisel。很多人质疑 Chisel,排挤 Chisel,然而咱们在充沛评估后,还是决定应用 Chisel。

咱们团队是在 2016 年开始应用 Chisel,一开始组里也充斥质疑。2018 年,咱们设计了两组定量的比照试验,找了 2 位同学用 Chisel、1 位工程师用 Verilog 别离设计一个 L2 Cache 模块。通过一系列量化比照,得出了如下三个论断:

  1. Chisel 开发效率远高于 Verilog;
  2. 实现雷同的性能,Chisel 代码量仅为 Verilog 的 1 /5(因而香山的 5 万行 Chisel 代码相当于 25 万行 Verilog 代码);
  3. Chisel 的开发品质不比 Verilog 差。

起初将试验后果发表在 2019 年 1 月的《计算机钻研与倒退》。最近去华为交换,才晓得这些 比照后果也推动了华为外部组建了 Chisel 开发团队,现在华为也是 Chisel 的支持者。

2020 年,咱们又 基于 Chisel 实现了一款 8 核标签化 RISC- V 处理器的流片,这是基于 Rocket 处理器核进行了标签化体系结构革新,采纳 TSMC 28nm 工艺流片。尽管因为工夫缓和,并没有进行粗疏的后端优化,但芯片返回后也还能失常运行在 1.2GHz。这是一颗有肯定复杂度的 8 核 SoC 芯片,但 Chisel 能应答。所以,咱们置信 Chisel 可用来开发简单芯片。

在开发香山的过程中,咱们团队积攒了丰盛 Chisel 开发教训。小伙伴们(徐易难、王凯帆、蔺嘉炜、余子濠、金越)筹备了 6 个报告,将会在 6 月 25 日的 CCC Workshop 上和大家分享。

另一个重要决策就是 高度重视构建反对麻利设计的流程与工具。

咱们在开发香山的过程中,始终在强调流程、平台、基础设施的重要性。我更多是表演了啦啦队队长的角色,而小伙伴们则真正将理念落实到了具体口头。

为了更好地反对 Chisel 开发与调试,为了更快地捕获、复现和定位 bug,为了更精确地评估优化技术的性能收益,小伙伴们开发十余种各具特色的工具。这些工具撑持起了一套处理器芯片麻利开发的流程。当然,这套流程还比拟高级,尚不系统化。咱们也期待更多的开源开发者退出,一起欠缺这套麻利设计流程。

上面举几个工具的例子。NEMU 是由余子濠在南大本科时便开始开发的一款教学模拟器。在计算所读博期间,他凭借一人之力始终在继续改良和优化 NEMU,使NEMU 成为一个效率靠近 QEMU 的高性能解释器——启动 Debian 甚至比 QEMU 还要快 18.2%(9.87s vs. 12.07s)。

更重要的是 NEMU 是指令解释器,能够针对每一条指令进行动态分析;相比而言,QEMU 的翻译粒度是基本块,无奈跟踪每一条指令。事实上,NEMU 的这种指令解释器机制,成为了香山开发中正确性验证框架 Difftest 的根底。(余子濠将会在 6 月 23 日下午介绍 NEMU)

Cache 是处理器中十分外围的模块,尤其是要反对一致性协定的 Cache 更为简单。为此,小伙伴们 开发了一套专门验证反对 TileLink 一致性协定的 Cache 模块测试框架 Agent Faker,发现了好几个 Cache 模块的 bug。(张传奇将会在 6 月 25 日上午介绍这个工作)

Difftest 是一个基于 NEMU 的指令集在线差分验证框架。它的一端是模拟器,提供处理器执行的黄金规范;另一端是运行 RTL 的仿真器,在仿真过程中会将指令数、中断、MMIO、微结构状态等信息发送给 NEMU 进行比对,从而判断 RTL 实现的正确性。

Difftest 最早是由余子濠实现,起初王凯帆进行优化,其中一个最重要的改良就是 SMP-Difftest,反对多核 SMP 的全零碎仿真,并且反对 Cache 一致性、内存一致性等须要软硬件协同的问题。(王凯帆将会在 6 月 24 日下午介绍 Difftest)

如何疾速捕获、复现、定位 bug 是调试过程中十分要害的步骤,很多工夫都是耗费在这个阶段。小伙伴们提出了 一种翻新的轻量级仿真快照技术——把整个仿真程序看成是一个过程,利用 fork 机制创立子过程 。而后父过程继续执行,子过程暂停。当父过程出错时,则能够复原到子过程进行调试。LightSSS 这个机制和 Verilator 仿真器自带的 Savable 机制相比, 单次快照工夫缩短了近 7000 倍!(余子濠将会在 6 月 23 日下午介绍 LightSSS)

很多人质疑 Chisel 不不便调试。小伙伴们则充沛 利用了 Chisel 的能够自定义 Firrtl Transform 的特点,设计了一套新型的硬件麻利调试栈,可将基于波形的调试转换为基于事件的调试。咱们设计了一套工具,能够间接将高层语义新型从波形中提取进去,并进行可视化。为此,还专门设计了一个 Xiang 语言。(蔺嘉炜将在 6 月 23 日下午介绍该工作)

处理器性能优化环节最要害是要疾速精确地评估优化技术带来的性能收益。如果评估过程须要几天工夫,那将会重大影响迭代优化效率。小伙伴们 设计了一个麻利性能评估框架 BetaPoint,它利用了三个机制——Sampling 机制、Generic Full System Checkpoint 机制和 Functional Warmup 机制,实现了能够在 10 个小时内估算出处理器的 SPEC 分数。(周耀阳将会在 6 月 23 日黄昏介绍 BetaPoint)

整个香山开发团队将在这次峰会上和大家分享 22 个技术报告。这些报告都是清一色的 90 后,很多都是 95 后:勾凌睿、胡博涵、金越、李昕、刘志刚、蔺嘉炜、王华强、王诲喆、王凯帆、徐易难、余子濠、张传奇、张发旺、张林隽、张紫飞、张梓悦、周耀阳、周意可、邹江瑞;此外还有多位参加香山开发的同学这次并没有投稿。这些小伙伴们在香山的开发过程中做出了不可代替的奉献。

四、香山将来如何倒退?

目前香山正在进行下一代架构“南湖”的开发,指标是今年年底流片,基于中芯国内的 14nm 工艺频率达到 2GHz,SPECCPU 分值达到 10 分 /GHz。这是一个很有挑战的指标,须要对架构进行大幅度的优化改良。

前几天,小伙伴们专门去了一趟嘉兴南湖,研究香山将来的倒退。除了技术,咱们再一次聚焦到流程与平台。此前构建的麻利设计流程与平台撑持了 20 多人的开发团队,这远远不够。当初咱们须要思考的是该 如何构建一套开源、凋谢、标准的凋谢流程,能撑持 2000 人的开源社区一起开发。

反对成千上万人一起开发开源软件,这曾经有胜利的教训。然而 如何反对数千人一起开发开源处理器,目前还没有能够参考的案例,只能靠咱们本人摸索。也期待各界专家给咱们更多的领导和倡议。

咱们有一个欲望——心愿“香山”能存活 30 年;咱们有一个约定——30 年后再一起聚聚,到时再看看香山会变成什么样。然而,要实现这个欲望,还有很多很多问题和挑战须要去解决。

真诚地期待有更多搭档退出香山的开发队伍!

香山是在 中科院计算所、鹏城实验室 的反对下,通过 中国凋谢指令生态(RISC-V)联盟 联结业界企业一起开发一款开源高性能 RISC- V 处理器核,也失去了 北京智源人工智能研究院 的反对。在此,要特别感谢北京微核芯公司的资深专家给予香山的开发强力的反对,他们十分认同开源理念,也是第一家与香山联合开发的企业。很快乐“南湖”架构的开发有了更多的合作伙伴,感激对香山的反对。

欢送分割咱们一起退出香山开源社区!

五、花絮

  • 一本对于香山的书。很多人感觉 CPU 设计很难,很高大上,咱们倒是心愿能把这个门槛给降一降——所以打算出一本相似伯克利的《TCP/IP 协定栈详解》和毛德操老师的《Linux 内核源代码场景剖析》那样的书,联合香山的源代码来剖析 CPU 设计细节和窍门(know-how)。这本书也能够用开源的形式由社区一起撰写,欢送感兴趣的敌人一起加入。
  • “毕生一芯”打算的回报。首期“毕生一芯”打算的五位同学(金越、王华强、王凯帆、张林隽、张紫飞)在本科一毕业便退出了香山的开发,成为了技术骨干。很多人都问他们什么时候毕业,可能须要再等等了。他们当初才研一,还要再等两年才会有同学毕业。
  • 疫情中的关闭开发。2020 年 6 月初,北京新发地突然呈现了新冠疫情,导致同学们都无奈回到北京。感激深圳鹏城实验室的大力支持,整个团队全副集中到深圳,在鹏城实验室集中了三个月的关闭开发。那段时间基本上每周都有超过 150 个 commit,反而成为开发效率最高的一个时间段。
  • 香山的 Logo。咱们尝试了很多个香山 logo 设计,最初通过大家投票抉择了左下角的那个计划。不过有敌人善意告知香山的红叶次要是黄栌叶。好在香山也有五角枫,临时就先定这个 logo 了。


最初几句

有幸和阿里巴巴的戚总(戚肖宁)一起负责首届 RISC- V 中国峰会的联席大会主席,但其实幕后是中科院软件所和上海科技大学的老师们为这次峰会的筹备和保障工作付出了微小的致力。

因为疫情带来极大的不确定性,组委会始终保持高度紧张状态:一开始只凋谢了大概 1500 位线下参会名额,但很快就报满了;起初又凋谢了两次补报机会,但每次也只凋谢了 200 个名额,最初一共是 2600 人次(有的同时报名加入主会和分会)。

但即使如此,最初因为广东那边的疫情起因,不得不安顿大家近程参会。在此,对未能报上名的敌人说声道歉,对报上名但因为疫情而抉择放弃现场参会的敌人道声感激。不过这次峰会提供了 4 个直播渠道,全程直播 101 个报告,并在后续会有视频回放。很道歉直播两头也遇到了一些技术问题(有些上午调试好了下午还出错),在此再说声道歉。

特别感谢中科院软件所的吴伟老师和武延军老师,他们为筹备这次峰会而殚精竭虑,真的付出太多了。感激上海科技大学信息学院周平强院长,协调上海本地各方资源,全力支持和保障峰会的顺利召开。也要感激所有为峰会默默付出的筹备组成员和志愿者们!

大家因 RISC- V 而汇聚到一起,正是因为 RISC- V 所带来的开源、凋谢、共享、共治是大家的共识,也是因为 RISC- V 为咱们带来了有限的设想空间。现在,RISC- V 已在中国蓬勃发展,中国也在 RISC- V 生态中奉献越来越多的力量——首届 RISC- V 中国峰会就是最好的写照。

正文完
 0