向Linux看齐,立志存活三十年:包云岗团队开源高性能RISC-V处理器「香山」

机器之心 2021-06-24 00:30:28
linux 存活 三十 看齐 立志



在 CPU 架构领域,Arm 和 X86 分别在移动端和桌面端占据了绝大部分市场份额。但是,这两个巨头对指令集的授权管控极为严格,这意味着大多数芯片企业只能购买其半成品或接近成品的技术,在其基础上进行相对边缘化的研发,没有机会掌握真正核心、底层的技术。少数实力雄厚的企业能取得授权,也要付出数千万甚至上亿美元的授权费代价[1]。这使得 越来越多的芯片研发企业转向了开源的 RISC-V


加州大学伯克利分校教授、RISC-V 发明人 David Patterson 曾大胆预言:「 在五到十年内,RISC-V 可能成为世界上最重要的指令集」。

随着 RISC-V 热度不断上升,这一预言似乎正逐渐走向现实。

前段时间,路透社等外媒报道称, 英特尔正计划以 20 亿美元的价格 收购全球首家基于 RISC-V 架构的半导体初创公司 SiFive。去年刚从 英特尔离职的半导体行业大牛 Jim Keller 也透露出了对 RISC-V 前景的乐观,他表示,「这是一个非常好的指令集。(与 Arm 和 x86 相比,)它是最简单的一个,拥有所有该有的功能,而且没有太多垃圾。如果我想要快速构建一台计算机,并且希望它运行得够快,那么 RISC-V 是最容易的选择。」

放眼国内,RISC-V 的热度也在不断上涨。6 月 21 日,第一届 RISC-V 中国峰会在上海科技大学拉开帷幕。在本届峰会上,中国科学院计算技术研究所研究员、中国开放指令生态(RISC-V)联盟秘书长 包云岗介绍了他们团队最近开发的一款 开源高性能 RISC-V 处理器——香山


开源链接:https://github.com/OpenXiangShan/XiangShan (除了 GitHub,国内几个开源平台 Gitee/Trustie/iHub 上都有「香山」的镜像,搜「XiangShan」就能找到。)

为什么要做「香山」?此前,包云岗团队发现,Linux诞生30年,其不仅被工业界广泛应用,也成为学术界开展 操作系统研究的创新平台,而CPU领域尚未产生一个类似的开源主线。


要建立一个像Linux那样的开源RISC-V核主线,既能被工业界广泛应用,又能支持学术界试验创新想法。最关键的是,一定要让它像Linux那样至少存活30年。」这是「香山」团队给自己定下的小目标。


「我们做了一年多的准备工作——申请经费,启动『一生一芯』计划培养人才,建立团队,寻找合作伙伴……终于,香山正式启动了。」


据悉, 「香山」的 理念是 代码开源、流程开放、文档公开[2]。 它基于 Chisel 硬件设计语言实现,支持 RV64GC 指令集。在「香山」处理器的开发过程中, 团队使用了包括 Chisel、Verilator 等在内的大量开源工具,实现了差分验证、仿真快照、RISC-V 检查点等处理器开发的基础工具,建立起了一套包含设计、实现、验证等在内的基于开源工具的处理器前端敏捷开发流程。其开源许可证采用的是木兰宽松许可证。[3]

目前, 「香山」共有两版微架构,第一版叫「雁栖湖」,第二版叫「南湖」。

「雁栖湖」是一个11级流水、6发射、4个访存部件的乱序处理器核。它的开发始于 2020 年 6 月,RTL 于今年 4 月份完成。该架构的频率可以达到 1.3GHz@TSMC 28nm性能预计可以达到 7 分 / GHz(SPEC CPU 2006)

「雁栖湖」架构概览。

在 RISC-V 中国峰会上,包云岗介绍了「雁栖湖」架构开发的几个关键决策。

第一个决策是选择 使用 Chisel 语言(伯克利大学发布的一种开源硬件构建语言)。与使用传统的 Verilog 语言相比,使用 Chisel 进行敏捷开发效率可以提升 13 倍,代码量仅为传统开发的 1/5,而且可以达到传统开发的质量水平。


第二个决策是 重视构建支持敏捷设计的流程与工具,包括效率接近 QEMU 的高性能解释器 NEMU、TL-C 一致性 Cache 的软件测试框架 Agent Faker、指令级在线差分验证框架 Difftest、基于内存的轻量级仿真快照 LightSSS、填补底层波形和高层语义鸿沟的调试栈 Waveform Terminator、可以在 10 小时内估算出 RISC-V CPU SPEC 分数的 BetaPoint 等。这些工具加速了整个开发和验证流程。


包云岗表示,「雁栖湖」将在  7 月中旬流片,未来目标是达到 ARM Cortex-A76 的性能水平。

与「雁栖湖」相比,「南湖」的设计目标更高: 频率期望达到 2GHz@SMIC 14nm,性能期望达到 10 分 / GHz(SPEC CPU 2006 )。该版本的设计于今年 3 月份启动,预计 2021 年底流片。

截至 2021 年 6 月 1 日,共有 25 位中科院计算所的同学 / 老师参与「香山」项目,他们贡献了 31784 行香山核设计代码和 18317 行验证框架代码。 首期「一生一芯」计划的五位同学(金越、王华强、王凯帆、张林隽、张紫飞)在本科一毕业便加入了香山的开发,成为了技术骨干。6 月 19 日,技术团队在嘉兴南湖召开了一场研讨会。

包云岗表示,为了建立像 Linux 这样的被工业界广泛应用的体系结构创新开源平台,实现使香山存活 30 年的目标。为此,他们还有很多工作要做,包括保持半年更新一代架构的迭代优化频率;每年 2 次流片,对新架构、新功能进行验证等。


合作方面,北京微核芯科技为「香山」提供了第一期产业经验、帮助完成了结构设计及物理设计。目前,项目的第二期正在招募联合开发合作伙伴,已经加入的企业包括微核芯、 字节跳动、北京奕斯伟、优矽科技等。包云岗表示,「这些来自工业界的积极反馈,让我们更坚定地去践行 科研重工业模式。」(科研重工业模式即热衷于研制真正能改变现状的原型系统,哪怕需要大量工程投入,典型代表是加州大学伯克利分校。[4])


从「香山」的发布和产业支持不难看出,国内半导体行业对 RISC-V 的热情也在持续高涨。但不可否认的是,该指令集的生态构建还需要一段时间。在前段时间的一次采访中,包云岗坦言,采用 RISC-V 实现复杂场景下需求的应用还在起步初期,要想走进生态丰富且稳固的服务器、电脑、手机等传统领域,还有很长一段路要走。他粗估,至少要 5 年至 10 年[1]。

也有人认为,因为足够开放,RISC-V 的生态弱项未来有可能反转成优势。「产业的生态环境还在形成,没有老牌霸主,我们有机会打造包括指令集、核心芯片、 操作系统,以及上层应用、云服务在内的可控生态。」 华米科技创始人黄汪表示[1]。

当然,生态的建设不是一件容易的事。「对于 RISC-V 来说,如何让参与进来的玩家形成合力是一个挑战。」 阿里巴巴平头哥市场部负责人高慧指出,过去 ARM 和 X86 这些指令集都有一个核心玩家,推动指令集不断向某一个方向演进。现在,开源开放的 RISC-V 吸引了很多玩家,需要思考如何形成合力,而不是分叉发展[1]。

其实,这也是「香山」项目的初衷之一,即「形成『竞争前合作』,实现各界联合开发开源 CPU 架构」。只有加强合作,RISC-V 生态才能早日发展壮大。

参考链接:
[1] https://baijiahao.baidu.com/s?id=1696983669207732243&wfr=spider&for=pc
[2] https://www.zhihu.com/question/466393646/answer/1955410750
[3] https://openxiangshan.github.io/
[4] https://zhuanlan.zhihu.com/p/268197755

版权声明
本文为[机器之心]所创,转载请带上原文链接,感谢
https://www.jiqizhixin.com/articles/2021-06-23-12

  1. Matrix architecture practice of Boshi fund's Internet open platform based on rocketmq
  2. 字节面试,我这样回答Spring中的循环依赖,拿下20k offer!
  3. Byte interview, I answer the circular dependence in spring like this, and get 20K offer!
  4. oracle 11g查看alert日志方法
  5. How to view alert log in Oracle 11g
  6. 手写Spring Config,最终一战,来瞅瞅撒!
  7. Handwritten spring config, the final battle, come and see!
  8. 用纯 JavaScript 撸一个 MVC 框架
  9. Build an MVC framework with pure JavaScript
  10. 使用springBoot实现服务端XML文件的前端界面读写
  11. Using springboot to read and write the front interface of server XML file
  12. 【Javascript + Vue】实现随机生成迷宫图片
  13. [Javascript + Vue] random generation of maze pictures
  14. 大数据入门:Hadoop伪分布式集群环境搭建教程
  15. Introduction to big data: Hadoop pseudo distributed cluster environment building tutorial
  16. 八股文骚套路之Java基础
  17. commons-collections反序列化利用链分析(3)
  18. Java foundation of eight part wensao routine
  19. Analysis of common collections deserialization utilization chain (3)
  20. dubbogo 社区负责人于雨说
  21. Yu Yu, head of dubbogo community, said
  22. dubbogo 社区负责人于雨说
  23. Yu Yu, head of dubbogo community, said
  24. 设计模式 选自《闻缺陷则喜》此书可免费下载
  25. The design pattern is selected from the book "you are happy when you hear defects", which can be downloaded free of charge
  26. xDAI被选为 Swarm 的侧链解决方案,将百倍降低 Swarm 网络Gas费
  27. L2 - 深入理解Arbitrum
  28. Xdai is selected as the side chain solution of swarm, which will reduce the gas cost of swarm network 100 times
  29. L2 - deep understanding of arbitrum
  30. Java全栈方向学习路线
  31. 设计模式学习04(Java实现)——单例模式
  32. Java full stack learning route
  33. Design pattern learning 04 (Java implementation) - singleton pattern
  34. Mybatis学习01:利用mybatis查询数据库
  35. Mybatis learning 01: using mybatis to query database
  36. Java程序员从零开始学Vue(01)- 前端发展史
  37. Java程序员从零开始学Vue(05)- 基础知识快速补充(html、css、js)
  38. Java programmers learn Vue from scratch
  39. Java programmers learn Vue from scratch (05) - quick supplement of basic knowledge (HTML, CSS, JS)
  40. 【Java并发编程实战14】构建自定义同步工具(Building-Custom-Synchronizers)
  41. [Java Concurrent Programming Practice 14] building custom Synchronizers
  42. 【源码分析】- 在SpringBoot中你会使用REST风格处理请求吗?
  43. [source code analysis] - do you use rest style to process requests in springboot?
  44. 框架篇:见识一下linux高性能网络IO+Reactor模型
  45. Framework: see Linux high performance network IO + reactor model
  46. 基础篇:JAVA.Stream函数,优雅的数据流操作
  47. 基础篇:异步编程不会?我教你啊!CompletableFuture(JDK1.8)
  48. Basic part: Java. Stream function, elegant data stream operation
  49. Basic: asynchronous programming won't? I'll teach you! CompletableFuture(JDK1.8)
  50. 技能篇:sed教程-linux命令
  51. 数据库篇:mysql内置函数
  52. Linux 主要的发行系统版本介绍
  53. 网络篇:朋友面试之https认证加密过程
  54. Skills: sed tutorial - Linux command
  55. Database: built in functions of MySQL
  56. Introduction of Linux main distribution system versions
  57. Network: friends interview: the encryption process of HTTPS authentication
  58. [Linux]经典面试题 - 系统管理 - 备份策略
  59. 解决java socket在传输汉字时出现截断导致乱码的问题
  60. [Linux] classic interview questions system management backup strategy