您當前的位置 :環球傳媒網>健康 > 正文
在 RISC-V 中開發 Java 是一種什么體驗?
2023-04-24 23:15:40 來源:InfoQ 編輯:

作者 | 鄭孝林

策劃 | 凌敏


(資料圖)

背景介紹

1. Alibaba Dragonwell 發行版

Alibaba Dragonwell是一款免費的 OpenJDK 發行版。它提供了長期支持,包括性能增強、安全修復以及 Dragonwell 上專有的一些特性,比如 Wisp 協程、多租戶、JWarmup、G1 elastic heap 以及 serviceability 上的特性等等。Dragonwell 包括 8、11、17 三個版本,而每個版本又包括 standard (和 OpenJDK 基本保持一致) 和 extended (基于 OpenJDK,搭載了 Dragonwell 的各種專有特性) 兩個子版本。而我們當前介紹的 RISC-V 后端支持是在 Dragonwell11 上的 extended 版本上,已在 2023 年 2 月正式 release,其中 Dragonwell11 上的特性如 Wisp 暫時還不支持。

2. RISC-V 指令集架構

RISC-V 是一個基于 RISC (精簡指令集) 的指令集架構。 它主要的特性是開源、模塊化、可擴展性以及非常精簡的指令集 。當前的 RISC-V 主要應用于物聯網;而后續進入服務器領域也是未來可期的。同時,得到 Arm 等商業芯片指令集的授權都需要支付高額的商業費用,而 RISC-V 是完全開源的指令集架構,芯片廠商可以根據自己的需要做定制化。當前的商業 RISC-V 處理器有如 Alibaba 玄鐵 C910 處理器、SiFive 的 RISC-V 半導體 IP 核等。從開發的角度而言,它們也都是使用體驗很好的處理器/設備。

3. OpenJDK on RISC-V

在 2020 年的年末,華為的 Bisheng JDK 團隊開源了基于 OpenJDK 的 RISC-V (64 位) 后端實現,約 6w 行代碼的 initial load。Alibaba Dragonwell 團隊也同期參與到了 RISC-V 后端研發當中。

從 Alibaba Dragonwell 團隊的角度,在去年社區成立 openjdk/riscv-port repo,隨后 RISC-V 后端正式合并到上游 openjdk/jdk repo 到現在,我們對 OpenJDK RISC-V 后端的貢獻包括在 OpenJDK 上的 RISC-V "C" 壓縮指令擴展這個特性的實現;20 余個 bug fixes;部分 enhancements 和 refactoring;以及部分 Loom (協程) RISC-V port 的支持等。其中 C 擴展的實現已經在 OpenJDK 20 上的 RISC-V 后端中默認開啟,可以減小 ~20% 的后端 Java compiled code 的 code size footprint。

Alibaba Dragonwell11 on RISC-V

為什么是 JDK11?

JDK11 是當前的主流版本。國內的 Java 客戶大多都在使用 JDK8,但現在已經有越來越多升級到 JDK11 的趨勢了。默認的 G1 GC (CMS 在后面 JDK 版本中已經棄用)、更好的性能、AArch64 后端更好的支持、AppCDS 特性、Safepoint 的 Threadlocal Handshake、能提升代碼性能的 Segmented Code Cache 特性等都可以讓 JDK11 相比于 JDK8 有更多的優勢,也是用戶升級 JDK 的動力所在。

雖然 JDK11 的確是當下的主流版本,但是社區上的 RISC-V 后端是在 19/20 這兩個版本中支持的,因此這對于很多 Java 應用的維護者來說,升級到這么高的版本的確是略有些遙遠且工作量頗高的事情。所以,如果要嘗試在 RISC-V 上開發 Java 應用的話, 能繼續使用 JDK11 應該是一個比較好的選擇

硬件特性支持平頭哥 RISC-V 芯片

因此,Alibaba Dragonwell 團隊將 OpenJDK 上游的 RISC-V 后端移植回了 Dragonwell11上,我們會長期維護 Dragonwell11 的版本和后端,同步上游社區的 bug fixes 保證用戶的使用體驗。從兼容性的角度上講,我們完成了 QEMU / SiFive 開發板 / 平頭哥開發板 上的驗證,以及 JCK / jtreg / SPECjbb2015 等各種 benchmark 的支持。Dragonwell11 上的 RISC-V 和上游大部分保持一致;包括基礎的 RVI 指令集支持的同時,我們還支持一部分平頭哥芯片專有的指令集和其生態,如果在平頭哥的硬件上如 C910,則可以使用 -XX:+UseCSky 開啟相關的支持。

與此同時,我們還支持一些基于 RVV(RISC-V 的向量指令擴展)-0.7.1 的 vector intrinsic 的向量化,在支持 RVV-0.7.1 版本的(如平頭哥的一些 RISC-V 芯片,如開啟 vector 支持的 C910 等)開發板上可以自動開啟。由于搭載 RVV-1.0 版本的芯片現階段實際上很少,所以 Dragonwell 可能是目前唯一能夠在硬件上運行 RVV 的 JDK。

二進制版本下載

Dragonwell11 的二進制版本已經于二月份發布,有興趣的開發者可以直接從 Github 鏈接下載。

此外,Dragonwell11 的 RISC-V 版本已經集成進龍蜥的 Anolis 源中,如果是使用 Anolis OS 的用戶可以直接使用 yum 源來安裝 Dragonwell11 JDK。

使用方便的 QEMU Docker 容器鏡像進行模擬

RISC-V 現在還在快速發展階段中。因此面臨著硬件資源有限的問題: 開發者有時并不容易得到硬件設備;拿到硬件設備之后還面臨著需要搭建環境、初始化網絡等比較麻煩的操作 。在這種情況下,有一個模擬器就是非常有必要的了。主流的模擬器是 QEMU,如果把 QEMU 內置在 Docker 鏡像當中,用戶就可以得到最大程度上的使用便利:用戶可以直接在 x86 機器上一鍵模擬 RISC-V 程序。并且,鏡像是 portable 的:因為容器鏡像可以隨時遷移到其他機器上去。

我們維護了一個 RISC-V QEMU Docker 鏡像的倉庫,使用 Debian 的 RISC-V 源。用戶可以直接查看 README 手動構建一個 QEMU Docker。省力一些的話,用戶也可以直接將鏡像 pull 下來:

# 現只支持 x86 宿主機docker pull multiarch/qemu-user-static && \docker run --rm --privileged --net host multiarch/qemu-user-static --resetdocker pull alibabadragonwelljdk/riscv-qemu && \docker run -it --rm alibabadragonwelljdk/riscv-qemu /bin/bash

復制代碼

Demo:Springboot 示例

SpringBoot 是非常優秀的 Java 應用框架,我們可以從官網上下載其 Hello World demo 并使用 maven 構建。

我們也提供了一個預編譯好的 SpringBoot demo 以供演示用:

https://dragonwell.oss-cn-shanghai.aliyuncs.com/demo-0.0.1-SNAPSHOT.jar

我們可以在實際的物理開發板上啟動 Java 程序;也可以在上述的 QEMU Docker 中用同樣的命令啟動:

圖/啟動一個簡單的 SpringBoot Hello World 程序 (實際啟動時間可能與圖片上有差別)

總結和展望

RISC-V 是一個有前景的指令集,中立和開放是它的兩大優勢。在成立了 Datacenter (數據中心) SIG 和 HPC (高性能計算) SIG 之后,RISC-V 也開始逐漸向高性能方向逐漸演進。除此之外,就 RISC-V 的軟件生態而言,RISC-V 上的各種 toolchain (GCC、GDB 等) 的支持也已經十分完備,各種操作系統 (Ubuntu、Debian) 等都已經支持了 RISC-V 指令集,各種開源社區對相關軟件的移植的支持也非常積極。Debian-port 上大約 95% 的軟件包都可以在 RISC-V 上使用,因此用戶的開發流程是比較流暢的。

相比于 x86 平臺的一些復雜指令及一些歷史包袱,RISC-V 具有著較新、指令集簡單、較強的拓展性等特性,已經 ratify 了多個指令集擴展。隨著社區的蓬勃發展,我們相信 RISC-V 架構有著光明的前景。

致謝

感謝華為 Bisheng JDK 團隊的開發同學們的工作,感謝中科院軟件所 PLCT 實驗室團隊對硬件設施方面給予的幫助。感謝社區 RISC-V 后端的 reviewers 的各種幫助。我們也會持續輸出并不斷反饋社區,在社區的維護上貢獻我們的力量。

本文轉載來源:

https://www.infoq.cn/article/aqLULmKMHK4NEA8rfgHy

關鍵詞:

相關閱讀
分享到:
版權和免責申明

凡注有"環球傳媒網"或電頭為"環球傳媒網"的稿件,均為環球傳媒網獨家版權所有,未經許可不得轉載或鏡像;授權轉載必須注明來源為"環球傳媒網",并保留"環球傳媒網"的電頭。

Copyright ? 1999-2017 cqtimes.cn All Rights Reserved 環球傳媒網-重新發現生活版權所有 聯系郵箱:8553 591@qq.com
主站蜘蛛池模板: 亚洲精品午夜国产va久久成人 | 青青青国产精品国产精品美女 | 国产激情无码视频在线播放性色| 久久天天躁狠狠躁夜夜AV浪潮| 美女视频黄频a免费| 国语对白做受XXXXX在线中国| 中文无码人妻有码人妻中文字幕 | 另类小说图片综合网| 99久久精品这里只有精品| 性色欲情网站iwww| 亚洲国产成人久久一区久久| 色一乱一伦一图一区二区精品| 国偷自产AV一区二区三区| 久久机热这里只有精品无需 | 国产成人精品无码专区| 一级黄色免费毛片| 日本在线视频一区二区三区| 人人超人人97超人人女| 麻豆国产VA免费精品高清在线| 国产精品欧美福利久久| 中文字幕一区在线观看| 日本理论片午夜论片| 亚洲自偷精品视频自拍| 精品国产呦系列在线看| 国产v片成人影院在线观看| 高清欧美性暴力猛交| 国产精品bbwbbwbbw| 一卡二卡三卡在线观看| 最新电影天堂快影eeuss| 免费人妻无码不卡中文字幕18禁| 韩国福利影视一区二区三区| 奇米第四色在线播放| 中国美女一级毛片| 杨乃武与小白菜港版在线| 亚洲日韩区在线电影| 综合色在线观看| 国产精品99久久久精品无码| аⅴ资源中文在线天堂| 日本高清免费看| 九九久久国产精品| 永久免费视频v片www|