Skip to content

Latest commit

 

History

History
209 lines (129 loc) · 11.3 KB

2021-07-01.md

File metadata and controls

209 lines (129 loc) · 11.3 KB

PLCT开源进展·第23期·2021年07月01日

卷首语

本月,持续了一周的第一届 RISC-V 中国峰会顺利落幕。尽管受到了南方疫情的影响,导致部分的厂商无法参展、演讲者无法到现场演讲、广州深圳等地的报名参会者只能选择线上观看,本次峰会依然成为了目前为止规模最大的 RISC-V 峰会 —— 无论是演讲数量、线上线下参会规模、还是参与的厂商规模。作为本次峰会的策划和主要的组织方,PLCT实验室在峰会期间,召集了几乎所有的员工、实习生、前实习生到场进行会议的准备和现场服务。这也是第一次PLCT实验室的所有成员有机会同时来到一个城市,面对面的相互交流、互开玩笑。

我们从半年前就开始准备会议的组织,并且计划在峰会上公开四个正在进行中的项目的进展。标题和slogan我都想好了。然而本次峰会的筹备规模远远超过了我们一开始的预估,从四月开始我的主要精力就放在了峰会本身,以至于直到峰会开始的当天也没有完成预期的项目目标。在6月26日,峰会最后一天举行的「PLCT 上海 RISC-V 活动日」上,我们得以将进行中的几个项目进行了介绍。现场有包括PLCT成员在内的二十多人参会、线上B站直播的热度维持在了一千以上。还不错 :)

7月1日代表着下半年的开始。这样表示着我们将继续扛起来上半年没能完成FLAGS继续努力。

本期亮点

  • NodeJS 主线代码合并进入了 RV64GC 后段的支持。
  • OpenSSL 接受了 PLCT 实验室有关 RISC-V 的补丁。
  • 第三期《编译技术入门与实战·讨论班》完结撒花🎉 目前四门课程中, RISC-V OS 课程也早已完结撒花,还有 V8 课程和模拟器课程在继续拖更。
  • 感谢软件所各个部门的稳定表现, PLCT 实验室现在已经获得了包括 SPEC CPU 2017、 EEMBC 等在内的一系列商业 Benchmarks 的授权。 下半年,开始卷起来。

V8 for RISC-V

本月关于V8的一个好消息是:在P LCT V8 小队的努力下,nodejs 主线代码已经合入了 RV64GC 的支持。

同时,nodejs 所依赖的 OpenSSL 也已经接受了来自 PLCT 的 RISCV64 配置代码。本次合入包括主线和 nodejs 依赖的特定版本 1.1.1。值得一提的是,在 1.1.1 这个 released branch 上合入新架构的支持,是一项颇 tough 的 task,需要获得 OpenSSL 的 OpenSSL Management Committee (OMC) 和 OpenSSL Technical Committee (OTC) 的同意,幸运的是耗时三个月后,我们做到了!

V8的维护和优化依旧是小队工作的重心,目前V8上的coding和bug fixing工作已经完全步入了在upstreaming维护的正轨,6月的主要工作如下:

  1. 修复不正确的 branch 导致错误的 builtin id 2970813: [riscv64] Fix uncorrectly branch | https://chromium-review.googlesource.com/c/v8/v8/+/2970813
  2. Branch 增加 flag 控制远跳转或近跳转 2959266: [riscv64] Add Label::Distance flag to control emit Branchshort. | https://chromium-review.googlesource.com/c/v8/v8/+/2959266
  3. 修复 nodejs 编译过程中 V8 编译不过的问题 2966209: [riscv64] Fix node.js build failed | https://chromium-review.googlesource.com/c/v8/v8/+/2966209
  4. 优化trampoline 2939442: [riscv64] Optimize-trampoline | https://chromium-review.googlesource.com/c/v8/v8/+/2939442
  5. 移植sparkplug改动 2952865: [riscv64] Port [sparkplug][arm][arm64[ia32] Callee-saved registers for RecordWrite | https://chromium-review.googlesource.com/c/v8/v8/+/2952865

另外,V8相关的课程和报告,笔记也在更新中:

  1. 淦!移植个V8不可能这么难!· 2021春季讨论班 · 连载中. 新增一课《V8测试框架》 https://www.bilibili.com/video/BV1hp4y1t7Mx
  2. RISCV Zce扩展介绍:https://www.bilibili.com/video/BV1sb4y1d7jf , V8中实验性的Zce实现正在进行
  3. 推出了V8JS知乎专栏,用于记录V8相关知识,以及回复V8课程的收到的提问:https://www.zhihu.com/column/c_1380854521699217409

OpenJDK for RISC-V

  1. 新增文档

RV32I控制转移指令的偏移量计算问题 https://zhuanlan.zhihu.com/p/377200438

BishengJDK在HiFive Unleashed上的SPECjbb2015测试结果 openjdk-riscv/jdk11u#155

  1. RV32G移植还在调试-version,这一阶段解决了:

Change StackAlignmentInBytes to 8 https://github.com/openjdk-riscv/jdk11u/commit/da8bb86c9b4a3958c4a97eebe53a7cb5f5fd1129

  1. 史宁宁和张定立在RISC-V 中国峰会post、海报和PLCT RISC-V Day等环节介绍了RV32G的移植工作。

Clang/LLVM for RISC-V 相关工作

LLVM小队的工作已经逐步进入上游。PLCT 自己的仓库地址还在老地方:

https://github.com/plctlab/llvm-project

GNU Toolchain for RISC-V 相关工作

继续在 RISC-V 国际基金会的框架下,完善 SIMD/DSP、 Krypto Scalar、 Biemanip、 Zce 的扩展实现工作。

AOSP for RISC-V

继续帮助平头哥在 Android SIG 中推动 AOSP RISC-V 的 upstream。

Linux Distro for RISC-V

我们启动了 Tarsier Project, 但是还没有公开的系统可以演示。

Gentoo Linux for RISC-V

Firefox on RV64GCV

本期没有进展。招聘仍在进行,欢迎同学们来实习。

Rust / Rust for RISC-V

  • 初步梳理 Rustc 架构, 介绍 rustc working groping 文章
  • Rust 对 RISC-V 的支持现状(update) 文章
  • 成为 Rustc Diagnostics 组成员, 帮助完成测试样例 ,以及完成更好的报错信息。
  • 同时在 rust-lang/this-week-in-rust 上参与了这个 pull
  • Clippy 此项目做了 RISC-V的测试
  • 在中文社区中参与翻译parser-combinator

Enable DynamoRIO running on RV64GC

本期没有进展。招聘仍在进行,欢迎同学们来实习。

OpenCV for RV64GCV

招聘仍在进行,欢迎同学们来实习。

LuaJIT RV64G porting

本期没有进展。招聘仍在进行,欢迎同学们来实习。

RISC-V 软件生态完成度跟踪

本期没有进展。

Toolchain/Emulator Support for RISC-V International

PLCT Machine v0.2 版本测试说明仓库 https://github.com/GeassCore/pmts

在方舟开源编译器社区的工作

PLCT实验室的史宁宁依然每周在更新方舟编译器社区周报(OpenArkCompiler Weekly),目前已经更新到第六十八期。

方舟编译器周报每周日晚上通过Repo、知乎、Bilibili和邮件列表发布。

MLIR

buddy-mlir

添加conv-opt与OpenCV/TensorFlow/PyTorch的卷积性能比较

代码在buddy-mlir仓库相应路径下 (https://github.com/buddy-compiler/buddy-mlir/tree/main/examples/conv-opt/comparison)

CIRCT / OpenROAD Chisel / FIRRTL

本期没有新的进展。我们在招募实习生,欢迎对上述项目感兴趣的同学联系我们!

永恒天平 / Eternal Balance

已经将永恒天平项目作为 RVI code speed opt SIG 的个proposal提交,作为 RISC-V 的性能评测跟踪平台。

https://github.com/isrc-cas/eternal-balance

如果你感兴趣,欢迎加入永恒天平项目,一起做些有意思的事情!

coreboot for riscv

本期没有新的进展

openocd

本期没有新的进展

opensbi

  • 移除scratch alloc的描述信息owner,此信息用来描述alloc的内存的用处,当前并没有使用 link
  • 启动时检测机器字长是否和编译器选项匹配 link
  • 重新实现scratch memory allocator,通过连接表重新实现alloc,使可以动态管理内存。我不支持此补丁,当前alloc只用于扩展scratch结构体,并不需要释放内存,此补丁会增加内存消耗 link
  • 添加增强型核间中断,此核间中断可以用于多处理器平台,一个模块控制一系列的核心 link
  • 添加性能计数器扩展 link

Programming Languages

其他工作

知乎文章

在VC707上烧写Freedom并运行Linux - https://zhuanlan.zhihu.com/p/352728493

参考链接

PLCT开源仓库及分享