人物|蒙卓:the way Go to RISC-V

文摘   2024-11-29 10:46   广东  
RISC-V,作为一种开源指令集,正以燎原之势在硬件领域推广应用。与此同时,Golang 凭借其高效、简洁的特性,成为云原生领域的主导语言。两者共同驱动开源生态的迅速发展,他们相遇会碰撞出什么样的火花呢?本期,让我们一起走近 Go RISC-V port Maintainer、「Golang China Contributor Club」组织管理者蒙卓,听听他与开源软硬件生态的故事。

永不熄灭的开源之心

我算是半路出家的程序员。07 年本科虽然是机械自动化,但期间沉迷自己搞 Wordpress 和研究 Ubuntu,逐渐变成个普通的 GoPython 后端程序员
16年时因为对性能优化比较感兴趣就开始了对 ARM 开发板的性能优化,期间也积累了一些 MIPS 相关优化的工作,并且作为 Go 架构 porter 积攒了一些经验
2019年,蒙卓参加了 Go 开发者峰会,Go 语言的创始人之一 Robert Griesemer 提到 RISC-V 未来将会很有趣,并希望有人能参与到这个领域的研究中去。这个呼吁如同一颗投入蒙卓平静心湖的石子,激起了他的探索热情。回国后,他购买了 Hifive Unmatched 开发板(可能是国内第一块?),从此踏上了成为 Go RISC-V 维护者的道路。
蒙卓(左)在 Go 开发者峰会与 Robert Griesemer 合影
值得注意的是,蒙卓自 2015 年加入 Go 项目以来,已经合并了 179 个补丁,其中约 100 个专注于 RISC-V 架构的支持。这些工作不仅为开源社区提供了新的视角,也为未来的技术发展奠定了基础。   
                                                                              

由于之前的工作对保密要求比较严格,蒙卓没办法在开源方面施展拳脚,同时在 Go RISC-V 相关的工作进展缓慢。中国科学院软件研究所提供了一个很好的平台--PLCT 实验室,可以让他更深入地为开源领域做贡献。2024 年,他加入了 PLCT 实验室,全职投入到 RISC-V 软件生态发展中,主要负责 Go 和云原生相关项目的维护与移植。

一些有趣的尝试

Go 的核心团队基于 Google 的高要求,对于验证操作系统的移植成果必须要利用真实的机器和运行环境,而不仅仅依赖于 QEMU 模拟。这就意味着每个 RISC-V Go 操作系统移植都需要在真实的机器上部署,不仅增加了技术挑战,也要求开发者对硬件和软件环境拥有更深入的了解。

蒙卓说:我之前对 FreeBSDOpenBSD 等都只是有所耳闻,没用过,为了推进 RISC-V 的移植工作,硬着头皮去学习和安装。但 RISC-V 作为新的生态,硬件支持几乎是空白,得自行摸索安装方法,由此我又学到了 FreeBSDOpenBSD 这类非 Linux 操作系统的操作和维护方法。"

除了硬件支持的不足外,软件生态系统本身的复杂性也是一个挑战。与 Linux 内核可独立升级不同,很多操作系统的迭代升级都是牵一发而动全身,需要连带整个软件生态一起升级,这便导致了上一版本正常运行,下个版本就频频报错的尴尬局面,只得依赖人肉时常盯着构建系统状态,以防出错。

蒙卓向 Go 团队反馈了人工监控回归测试失败太麻烦的问题,同时 Go 核心团队也为了响应其他维护者的反馈与诉求,团队推出了Flaky Test 自动化工具以解放双手,提升运维效率。

今年 5 月,他在 GitHub 上积极为多个项目添加 RISC-V 构建支持。虽然这项工作获得了许多支持,但也面临了一些诸如 “RISC-V 生态缺失基础设施不足 RISC-V 认识不足不愿意移植” 的挑战。
蒙工正在 Go meetup 上检修音响设备

 RISC-V 软硬件生态添砖加瓦

基于上述的实践和思考,蒙卓最终把目光锁定在 Github 本身。GitHub 是全球最大的开源代码托管平台,开源项目则广泛使用 GitHub Action 进行构建、测试和检查。在开源软件的 RISC-V 适配过程中,开源项目的维护者(maintainer)绝大部分要求必须有基于RISC-V 架构的流水线来进行适配,但是横在眼前的有 “三座大山,即开发板的可获得性低,模拟环境仅 QEMU 可用且速度慢以及 RISC-V 的生态环境适配困难。

为了加速 RISC-V 的进展,蒙卓开发了 riscv-builders 项目。其运行模型借鉴了 ARM 架构商用 GitHub Action runner(运行器)平台的思路,旨在提供临时私有 runner 来完成之前基于 x86 的流水线与验证工作。蒙卓选择 GitHub App 模式主要是由于平台的限制,若未来 GitHub 能够开放特定指令的直通功能,他将会进行相应的调整优化。

riscv-builders 有操作简便、免费使用、扩展指令选择自由等优点,不过也有局限性,比如维护者要管理开发板的成本高,RISC-V 服务器平台的不成熟,故障处理难等,可见蒙卓在应对复杂挑战与设计创新项目上能力卓越。

蒙卓说:我考虑的并不是项目本身,因为理想情况下,开发者们无需关心自己的流水线是运行在 x86 还是 RISC-V 上。这个项目最好的归宿是 GitHub 默认使用 RISC-V 作为 Action Runner 后,自然 EOL(生命周期结束)。当然,在这一天之前,服务好开发者们,才是 riscv-builders 需要关注的方向。

Let's “Go” with “RISC-V”

在推动 RISC-V 的生态发展中,蒙卓展示出了对新技术和 RISC-V 极大的热情与热爱,他不仅作为 Go 等社区的 RISC-V port maintainer 持续贡献,致力于推动 RISC-V 成为云原生领域的默认支持架构,还积极为开源社区培养新的贡献者。

纵观计算机和人类科技的发展史,解放和发展生产力一直是不变的主题。如今,计算机的软件生产逐渐发展出了开源这一效率更高的形式,尽管面临一些挑战,这并不妨碍软硬件开发领域向着开源发展的方向前进。对广大在校生而言,参与开源和 RISC-V 活动,是获得前沿的开发方式和方法的直接途径。蒙卓热切希望更多志同道合者,尤其对开源感兴趣的同学们能够加入 PLCT  RISC-V 生态,共同推动这一领域的发展。

CNRV
RISC-V中国社区
 最新文章