基于OpenJDK 17的龙芯平台Java环境发布,LoongArch平台同步支持

来源:爱集微 #龙芯中科# #Java 17#
4.1w

2022年1月27日,龙芯中科于龙芯开源社区正式对外发布基于OpenJDK 17的龙芯平台Java环境。Java 17提供了数千种性能、稳定性和安全性更新,以及14个JEP(JDK Enhancement Proposal,即 JDK 增强建议)来进一步优化Java语言和平台,从而帮助开发人员提高工作效率。

Java 17是Oracle最新发布的长期支持 (Long-Term Support, LTS) 版本[1]。关于Java 17更详细的内容请见下方Oracle官网[2]。此次新发布的版本,除了上述上游更新以外,龙芯团队针对龙芯平台特别是LoongArch平台进行了新功能开发和优化,具体如下:

Ⅰ.符合TCK标准

龙芯平台Java 17环境经过验证符合Java SE 17,新应用程序和现有应用程序无需修改即可运行。

Ⅱ.支持C1编译器和分层编译

C2编译器(Server Compiler)主要满足了Java应用的峰值性能需求,此次发布的LoongArch64平台环境支持C1编译器(Client Compiler)和分层编译,可进一步满足对启动性能有要求的Java应用,比如桌面应用。通过实测,龙芯平台开启C1和分层编译之后,部分应用得到了显著提升:Eclipse启动时间减少16.4%,NetBeans启动时间减少20.1%,SPECjvm2008中的startup项提升13.4%,Dacapo中luindex和fop用时分别降低31.9%和29.2%。

Ⅲ.LoongArch向量指令优化

此次版本通过使用LoongArch向量指令对C2编译器进行了自动向量化优化,同时还进行了Vector API的硬件支持。通过实测,开启向量优化后,在LoongArch64平台上SPECjvm2008中的scimark.lu.small提升了102.7%,JMH Microbenchmarks含有Vector关键字的168项测试中,计时类测试中有39项用时降低1/2以上,吞吐量类测试中有26项提升2倍以上、其中最高项提升了200倍以上。 

Ⅳ.支持ZGC

ZGC(The Z Garbage Collector),是一款低延迟垃圾回收器,它的设计目标包括[3]:

● 亚毫秒级最大停顿时间

● 暂停时间不随堆的大小、存活集及根集的大小的增加而增加

● 支持8MB至16TB级别的堆大小

通过实测,龙芯平台(LoongArch64)开启ZGC后,在3C5000L双路上SPECjbb2015 max-jOPS提升27.8%,critical-jOPS提升200%以上。

Ⅴ.加解密类优化

此次版本通过Intrinsics方式使用LoongArch基础指令对SHA1、SHA256、AES、MD5以及CRC32相关API进行优化。这些优化对SPECjvm2008中的crypto等项目有显著提升效果。

Ⅵ.数组拷贝优化

此次版本针对LoongArch进行了数组拷贝相关操作的重构和优化。通过JMH Microbenchmarks测试显示,org.openjdk.bench.java.lang.ArrayCopy相关测试用例优化后平均执行时间下降33%,最多项下降了76.77%,SPECjvm2008中的serial项优化后提升了6%以上。

Ⅶ.原子指令优化

此次版本通过使用LoongArch原子访存指令减少了内存屏障指令的使用,对volatile相关操作实现了优化。

后期规划

除了上述优化以外,此次发布的版本还包含针对龙芯平台的一些故障修复。这些优化和故障修复中的部分内容已集成至龙芯平台低版本JDK中,更多内容会根据情况陆续集成至低版本JDK中。

参考资料:

[1] https://www.oracle.com/cn/news/announcement/oracle-releases-java-17-2021-09-14

[2] https://www.oracle.com/java/technologies/javase/17-relnotes.htm

责编: 爱集微
来源:爱集微 #龙芯中科# #Java 17#
THE END

*此内容为集微网原创,著作权归集微网所有,爱集微,爱原创

关闭
加载

PDF 加载中...