0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

RISC-V中開發(fā)Java是一種什么體驗?

芯片開放社區(qū) ? 來源:云巔論劍 ? 作者:鄭孝林 ? 2023-05-24 16:49 ? 次閱讀

文/鄭孝林

01背景介紹

1. Alibaba Dragonwell 發(fā)行版

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

2. RISC-V 指令集架構(gòu)

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

3. OpenJDK on RISC-V

在 2020 年的年末,華為的 Bisheng JDK 團隊開源了基于 OpenJDK 的 RISC-V (64位) 后端實現(xiàn),約 6w 行代碼的 initial load [4]。Alibaba Dragonwell 團隊也同期參與到了 RISC-V 后端研發(fā)當中。從 Alibaba Dragonwell 團隊的角度,在去年社區(qū)成立 openjdk/riscv-port repo [5] ,隨后 RISC-V 后端正式合并到上游 openjdk/jdk repo [6] 到現(xiàn)在,我們對 OpenJDK RISC-V 后端的貢獻包括在 OpenJDK 上的 RISC-V "C" 壓縮指令擴展這個特性的實現(xiàn);20 余個 bug fixes;部分 enhancements 和 refactoring;以及部分 Loom (協(xié)程) RISC-V port 的支持等。其中 C 擴展的實現(xiàn)已經(jīng)在 OpenJDK 20 上的 RISC-V 后端中默認開啟,可以減小 ~20% 的后端 Java compiled code 的 code size footprint。

02Alibaba Dragonwell11 on RISC-V

為什么是 JDK11?

JDK11 是當前的主流版本。國內(nèi)的 Java 客戶大多都在使用 JDK8,但現(xiàn)在已經(jīng)有越來越多升級到 JDK11 的趨勢了。默認的 G1 GC (CMS 在后面 JDK 版本中已經(jīng)棄用)、更好的性能、AArch64 后端更好的支持、AppCDS 特性、Safepoint 的 Threadlocal Handshake、能提升代碼性能的 Segmented Code Cache 特性等都可以讓 JDK11 相比于 JDK8 有更多的優(yōu)勢,也是用戶升級 JDK 的動力所在。雖然 JDK11 的確是當下的主流版本,但是社區(qū)上的 RISC-V 后端是在 19/20 這兩個版本中支持的,因此這對于很多 Java 應(yīng)用的維護者來說,升級到這么高的版本的確是略有些遙遠且工作量頗高的事情。所以,如果要嘗試在 RISC-V 上開發(fā) Java 應(yīng)用的話,能繼續(xù)使用 JDK11 應(yīng)該是一個比較好的選擇。

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

因此,Alibaba Dragonwell 團隊將 OpenJDK 上游的 RISC-V 后端移植回了 Dragonwell11 [7] 上,我們會長期維護 Dragonwell11 的版本和后端,同步上游社區(qū)的 bug fixes 保證用戶的使用體驗。從兼容性的角度上講,我們完成了 QEMU / SiFive 開發(fā)板 / 平頭哥開發(fā)板 上的驗證,以及 JCK / jtreg / SPECjbb2015 等各種 benchmark 的支持。Dragonwell11 上的 RISC-V 和上游大部分保持一致;包括基礎(chǔ)的 RVI 指令集支持的同時,我們還支持一部分平頭哥芯片專有的指令集和其生態(tài),如果在平頭哥的硬件上如 C910,則可以使用 -XX:+UseCSky 開啟相關(guān)的支持。與此同時,我們還支持一些基于 RVV(RISC-V 的向量指令擴展)-0.7.1 的 vector intrinsic 的向量化,在支持 RVV-0.7.1 版本的(如平頭哥的一些 RISC-V 芯片,如開啟 vector 支持的 C910 等)開發(fā)板上可以自動開啟。由于搭載 RVV-1.0 版本的芯片現(xiàn)階段實際上很少,所以 Dragonwell 可能是目前唯一能夠在硬件上運行 RVV 的 JDK。

05c7d634-e65c-11ed-ab56-dac502259ad0.png

二進制版本下載

Dragonwell11 的二進制版本 [8] 已經(jīng)于二月份發(fā)布,有興趣的開發(fā)者可以直接從 Github 鏈接下載。此外,Dragonwell11 的 RISC-V 版本已經(jīng)集成進龍蜥的 Anolis 源中,如果是使用 Anolis OS 的用戶可以直接使用 yum 源來安裝 Dragonwell11 JDK。

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

RISC-V 現(xiàn)在還在快速發(fā)展階段中。因此面臨著硬件資源有限的問題:開發(fā)者有時并不容易得到硬件設(shè)備;拿到硬件設(shè)備之后還面臨著需要搭建環(huán)境、初始化網(wǎng)絡(luò)等比較麻煩的操作。在這種情況下,有一個模擬器就是非常有必要的了。主流的模擬器是 QEMU,如果把 QEMU 內(nèi)置在 Docker 鏡像當中,用戶就可以得到最大程度上的使用便利:用戶可以直接在 x86 機器上一鍵模擬 RISC-V 程序。并且,鏡像是 portable 的:因為容器鏡像可以隨時遷移到其他機器上去。我們維護了一個 RISC-V QEMU Docker 鏡像的倉庫 [9],使用 Debian 的 RISC-V 源。用戶可以直接查看 README 手動構(gòu)建一個 QEMU Docker。省力一些的話,用戶也可以直接將鏡像 pull 下來:


#現(xiàn)只支持x86宿主機 dockerpullmultiarch/qemu-user-static&& dockerrun--rm--privileged--nethostmultiarch/qemu-user-static--reset dockerpullalibabadragonwelljdk/riscv-qemu&& dockerrun-it--rmalibabadragonwelljdk/riscv-qemu/bin/bash 

05f3b59c-e65c-11ed-ab56-dac502259ad0.png

Demo:Springboot 示例

SpringBoot 是非常優(yōu)秀的 Java 應(yīng)用框架,我們可以從官網(wǎng)上 [10] 下載其 Hello World demo 并使用 maven 構(gòu)建。

我們也提供了一個預(yù)編譯好的 SpringBoot demo 以供演示用。

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

0604ac3a-e65c-11ed-ab56-dac502259ad0.png

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

03致謝感謝

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

04總結(jié)和展望

RISC-V 是一個有前景的指令集,中立和開放是它的兩大優(yōu)勢。在成立了 Datacenter (數(shù)據(jù)中心) SIG 和 HPC (高性能計算) SIG 之后,RISC-V 也開始逐漸向高性能方向逐漸演進。除此之外,就 RISC-V 的軟件生態(tài)而言,RISC-V 上的各種 toolchain (GCC、GDB 等) 的支持也已經(jīng)十分完備,各種操作系統(tǒng) (Ubuntu、Debian) 等都已經(jīng)支持了 RISC-V 指令集,各種開源社區(qū)對相關(guān)軟件的移植的支持也非常積極。Debian-port 上大約 95% 的軟件包都可以在 RISC-V 上使用 [11],因此用戶的開發(fā)流程是比較流暢的。相比于 x86 平臺的一些復雜指令及一些歷史包袱,RISC-V 具有著較新、指令集簡單、較強的拓展性等特性,已經(jīng) ratify 了多個指令集擴展。隨著社區(qū)的蓬勃發(fā)展,我們相信 RISC-V 架構(gòu)有著光明的前景。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • JAVA
    +關(guān)注

    關(guān)注

    19

    文章

    2973

    瀏覽量

    104907
  • 指令集
    +關(guān)注

    關(guān)注

    0

    文章

    227

    瀏覽量

    23400
  • JDK
    JDK
    +關(guān)注

    關(guān)注

    0

    文章

    81

    瀏覽量

    16604
  • RISC-V
    +關(guān)注

    關(guān)注

    45

    文章

    2307

    瀏覽量

    46297
  • 平頭哥
    +關(guān)注

    關(guān)注

    0

    文章

    64

    瀏覽量

    9090

原文標題:RISC-V 中開發(fā) Java 是一種什么體驗? 讓 Dragonwell JDK 來回答

文章出處:【微信號:芯片開放社區(qū),微信公眾號:芯片開放社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    RISC-V MCU開發(fā) ():集成開發(fā)環(huán)境

    (MRS)便是其中一種。 ? ? ?MRS是款針對嵌入式項目(RISC-V/ARM)的集成開發(fā)環(huán)境,提供了包括編輯器、C編譯器
    發(fā)表于 09-23 14:32 ?4060次閱讀
    <b class='flag-5'>RISC-V</b> MCU<b class='flag-5'>開發(fā)</b> (<b class='flag-5'>一</b>):集成<b class='flag-5'>開發(fā)</b>環(huán)境

    RISC-V有哪些優(yōu)缺點?是堅持ARM方向還是投入risc-V的懷抱?

    RISC-V作為一種開源的指令集架構(gòu)(ISA),具有系列顯著的優(yōu)點和潛在的缺點。以下是RISC-V的主要優(yōu)點和缺點概述: 優(yōu)點 : 開源與開放性 :
    發(fā)表于 04-28 08:51

    RISC-V有哪些優(yōu)點和缺點

    RISC-V作為一種開源的指令集架構(gòu)(ISA),具有系列顯著的優(yōu)點和潛在的缺點。以下是RISC-V的主要優(yōu)點和缺點概述: 優(yōu)點: 開源與開放性:R
    發(fā)表于 04-28 09:03

    RISC-V的MCU與ARM對比

    RISC-V的MCU與ARM在多個方面存在顯著的區(qū)別,以下是兩者的對比: 開源與專有 RISC-VRISC-V一種開源的指令集架構(gòu)(ISA),允許任何人免費使用、修改和貢獻
    發(fā)表于 05-27 15:58

    rIsc-v的缺的是什么?

    RISC-V作為一種開源的指令集架構(gòu)(ISA),自其誕生以來就受到廣泛關(guān)注和應(yīng)用,但它也存在些不足之處。以下是RISC-V架構(gòu)目前存在的主要缺點: 1. 性能問題 相對于專用ISA的
    發(fā)表于 07-29 17:18

    淺談RISC-V

    收授權(quán)費了,其價格也不低。RISC-V的流行對ARM來說就很尷尬了。傳統(tǒng)的處理器IP公司,ARM還能通過商業(yè)運營擴大自己的優(yōu)勢,獲取更大市場份額。RISC-V與其說是一種指令集,不如說是一種
    發(fā)表于 09-11 17:44

    為什么選擇RISC-V?

    RISC-V一種開放式ISA(指令集體系結(jié)構(gòu)),為處理器體系結(jié)構(gòu)的創(chuàng)新開創(chuàng)了新紀元。RISC-V基金會由325多家成員公司組成。這是該技術(shù)的主要優(yōu)勢。軟件架構(gòu)師/固件工程師/軟件開發(fā)
    發(fā)表于 07-27 17:38

    RISC-V***會子活動之:基于RISC-V的鴻蒙開發(fā)板設(shè)計

    `、Workshop介紹 首屆RISC-V***會(RISC-V World Conference China)將于6月21日在上??萍即髮W盛大開幕。 本次峰會預(yù)計線下超過1000
    發(fā)表于 06-03 16:26

    RISC-V是什么

    (剛剛投入芯片行業(yè)學習的新人,存在理解錯誤的地方歡迎指出,并探討,還請多多包涵,謝謝?。?RISC-V是區(qū)別于 INTEL x86架構(gòu)、arm架構(gòu)的另一種芯片內(nèi)核架構(gòu)。 RISC-V,主要區(qū)別于當代
    發(fā)表于 07-23 06:06

    RISC-V MCU開發(fā) ():集成開發(fā)環(huán)境

    基于RISC-V MCU的項目開發(fā),與之配套的集成開發(fā)環(huán)境必不可少。目前市場上可供選擇的RISC-VMCU開發(fā)工具已初具規(guī)模,由MounRi
    發(fā)表于 09-22 14:44

    RISC-V MCU開發(fā)相關(guān)資料分享

    工作。 工欲善其事必先利其器,要想實現(xiàn)基于RISC-V MCU的項目開發(fā),與之配套的集成開發(fā)環(huán)境必不可少。目前市場上可供選擇的RISC-V
    發(fā)表于 11-10 07:50

    RISC-V MCU開發(fā)實戰(zhàn)() :DHT11

    近年來,RISC-V生態(tài)獲得了空前的繁榮發(fā)展,國內(nèi)外眾多科技公司紛紛下場布局、行業(yè)應(yīng)用層出不窮,搭載RISC-V內(nèi)核的MCU也逐漸走入了工程師的日常開發(fā)工作。工欲善其事必先利其器,要
    發(fā)表于 03-06 15:17

    兩大架構(gòu)RISC-V 和 ARM 的各種關(guān)系

    RISC-V一種開源架構(gòu),而 ARM 是專有的。 這意味著任何想要在其設(shè)計(例如 SoC)包含 ARM CPU 的設(shè)計師都必須向 ARM Holdings 支付版稅。另方面,
    發(fā)表于 06-21 20:31

    RISC-V MCU開發(fā)():集成開發(fā)環(huán)境

    工作。 工欲善其事必先利其器,要想實現(xiàn)基于RISC-V MCU的項目開發(fā),與之配套的集成開發(fā)環(huán)境必不可少。目前市場上可供選擇的RISC-V
    發(fā)表于 11-05 16:35 ?37次下載
    <b class='flag-5'>RISC-V</b> MCU<b class='flag-5'>開發(fā)</b>(<b class='flag-5'>一</b>):集成<b class='flag-5'>開發(fā)</b>環(huán)境

    如何使用 RISC-V 進行嵌入式開發(fā)

    RISC-V一種開源的指令集架構(gòu)(ISA),它允許任何人設(shè)計、制造和銷售基于RISC-V的處理器,這為嵌入式開發(fā)提供了極大的靈活性和創(chuàng)新空間。以下是使用
    的頭像 發(fā)表于 12-11 17:32 ?635次閱讀