RISC-V 新成果!openKylin 社区完成对 RV64G 架构支持

openKylin社区继与深度数智联合发布默认搭载openKylin 1.0操作系统的全球首款RISC-V笔记本电脑DC-ROMA后,近日,联合苏州睿芯公司,openKylin平台正式部署上线对RV64G架构支持,后续RV64G非压缩指令集爱好者可以通过社区平台开发编译并部署自己的代码。

RISC-V是一个自由的指令集,硬件厂商可以基于国际基金会认可的标准,自主扩展,目前市场上很多厂商是基于RV64GC来生产产品,但是也有厂商基于RV64G来生产产品,为配合国内厂商的市场需求,openKylin社区率先推出对RV64G架构支持。

一、RV64G架构简介

相比较于目前在嵌入式小型设备上应用更广泛的RV64GC(即大家比较熟悉的riscv64), RV64G更加聚焦于通用计算场景功能,服务器或者桌面系统。其中:

RV64G和RV64GC之间的主要区别在于是否包含压缩指令集(C指令集)。RV64GC在RV64G的基础上增加了C指令集,这些指令用于缩小指令长度,降低代码占用空间,RV64G则不包含这些压缩指令,因此RV64G的应用程序可以在RV64GC的硬件上运行,反之则不行。

比较而言,RV64GC比RV64G具有更高的代码密度,程序具有更小的footprint,可以更有效地利用内存空间,这些特点让RV64GC指令在嵌入式应用中更有优势;另一方面,RV64G的硬件实现可能比RV64GC更简单,可采用简化指令译码逻辑,更容易预测指令预取模式,减少内存访问次数、提高指令执行速度,降低功耗,设计人员可以更好的对高性能计算进行优化。

二、开发过程

1.基础工具链改造编译验证。

第一阶段,对基础编译工具进行适配,包括gcc,glibc,binutils源码包的修改编译,技术攻关,以适配RV64G新架构。运行新编译的gcc版本,检查相关输出参数,确认为– -with-arch=rv64imafd表示修改成功。

2.stage0/ bootstroop阶段相关包的编译。

基于第一阶段完成的基础编译工具链,开始bootstroo阶段相关包的编译工作。包括apt,dpkg,llvm,python3,perl,cmake,make,openmpi,netplan.io,openssl,meson等软件包的编译工作。

3.初期上层应用包编译工作。

完成前两步中的软件包编译工作后,需要进一步扩展软件包的数量。在本地编译环境下通过脚本逐层编译更多上层应用包。同时验证使用RV64GC相关依赖包与现有RV64G包混合编译没有问题。

4.Choort平台编译环境调试制作。

使用目前已重新编译的RV64G架构新软件包,来构建OKBS平台的chroot基础环境,调试过程碰到架构符号相关的较多问题,需要多次重构测试,过程中不断尝试修改chroot的系统文件。直到可以正常编译出rv64g.deb格式的二进制文件。制作完成的chroot地址为:

http://api.build.openkylin.top/devel/openkylin/yangtze/rv64g

5.平台架构新增部署,与编译机搭建。

为了与现有RV64GC架构做区分,在OKBS系统上增加RV64G架构相关配置数据。利用之前基于新架构编译完成的软件包,新增创建source.list源,作为编译环境的依赖源。

6.初期编译环境调试。

上线初期,解决新架构chroot与OKBS系统融合,编译依赖源RV64G架构修改等问题。

三、RV64G架构支持优势

1.支持RV64G架构的代码同源编译,即代码一次提交。可在OKBS平台同源编译出AMD64、I386、ARM64、RV64GC、RV64G五个架构的二进制包,无需再单独维护一套RV64G软件源及代码仓库,提升RV64G架构代码开发维护效率。

2.支持RV64G架构软件仓库的同源发布,有效提升RV64G架构软件仓库的管理和维护升级效率。

3.镜像制作与版本发布统一规范化。在镜像制作与版本发布管理上可与其他架构以同流程处理,统一RV64G架构版本构建规范。

4.解决与RV64GC架构名称冲突的问题,至此可以兼容RISCV-V规范的两种指令集架构的编译工作。

5.编译机可同时支持RV64GC和RV64G两种架构,有效提升编译机资源利用率。

后续苏州睿芯公司将继续携手openKylin社区,成立RV64G SIG组,加大资源投入,解决软件包编译过程中遇到的问题,并完成该架构镜像制作、硬件适配、软件源管理和生态需求软件自主构建等,进一步集成基于RV64G架构的桌面与服务器整机系统。欢迎感兴趣的小伙伴加入我们,携手共创!