日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

山东大学RISC-V公共开放平台开发记录3

發(fā)布時(shí)間:2024/3/12 编程问答 91 豆豆
生活随笔 收集整理的這篇文章主要介紹了 山东大学RISC-V公共开放平台开发记录3 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

山東大學(xué)RISC-V公共開放平臺開發(fā)記錄

RISC-V編譯

2 編譯優(yōu)化策略

2.1 RISC-V GCC工具鏈的(–mcmodel=)選項(xiàng)

目前RISC-V GCC工具鏈認(rèn)為,在實(shí)際的情形中,一個(gè)程序的大小一般不會(huì)超過4GB的大小,因此在程序內(nèi)部的尋址空間不能超過4GB的空間。而在64位的架構(gòu)中,地址空間的大小遠(yuǎn)遠(yuǎn)的大于4GB的空間,因此針對RV64架構(gòu)而言,RISC-V GCC工具鏈定義了(–mcmodel=)選項(xiàng)用于指定尋址范圍的模式,使得編譯器在編譯階段能夠按照相應(yīng)的策略編譯生成代碼。其有效的選項(xiàng)值如下:

· -mcmodel=medlow

· -mcmodel=medany

注意:

· 在RV32架構(gòu)中,整個(gè)地址空間的大小就是4GB,因此(–mcmodel=)選項(xiàng)的任何值對于編譯的結(jié)果都無影響。

· RISC-V GCC工具鏈在未來可能也會(huì)支持大于4GB的尋址空間。

medlow和medany兩個(gè)選項(xiàng)的含義分別解釋如下。

1.(-mcmodel=medlow)選項(xiàng)

(-mcmodel==medlow)選項(xiàng)用于指示該程序的尋址范圍固定只能在-2GB至+2GB的空間內(nèi)。注意:地址區(qū)間沒有負(fù)數(shù)可言,-2GB是指整個(gè)64位地址空間最高2GB地址區(qū)間。
由于此模式的尋址空間是固定的-2GB至+2GB的空間內(nèi),因此編譯器能夠相對生成比較高效的代碼,但是由于尋址空間固定,對于整個(gè)64位的大多數(shù)地址空間都無法訪問到,用戶需小心使用。

2.(-mcmodel=medany)選項(xiàng)

(-mcmodel==medlow)選項(xiàng)用于指示該程序的尋址范圍可以在任意的一個(gè)4G空間內(nèi)。由于此模式的尋址空間不是固定的,所以相對比較靈活。

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-ByJOEYsP-1654330904936)(file:///C:/Users/Jeremiah/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif)]

2.2 SIFIVE的解決方案

為了確保RISC-V編譯器的命令行界面在未來易于擴(kuò)展,SIFIVE決定采用這樣一種方案:用戶用三個(gè)參數(shù)來描述他們要編譯的RISC-V目標(biāo)。

-march=ISA選擇目標(biāo)架構(gòu)。這將控制哪些指令和寄存器可供編譯器使用。

-mabi=ABI 選擇目標(biāo)ABI。這控制了調(diào)用慣例(哪些參數(shù)在哪些寄存器中傳遞)和內(nèi)存中的數(shù)據(jù)布局。

-mtune=CODENAME選擇目標(biāo)的微架構(gòu)。這將告知GCC每條指令的性能,使其能夠執(zhí)行針對目標(biāo)的優(yōu)化。

-march參數(shù)

-march參數(shù)基本上是由RISC-V用戶級ISA手冊定義的。-march控制指令集,允許編譯器從中生成指令。這個(gè)參數(shù)決定了一個(gè)程序可以運(yùn)行的實(shí)現(xiàn)集:任何符合RISC-V標(biāo)準(zhǔn)的系統(tǒng),只要包含了用于編譯程序的-march值,就應(yīng)該能夠運(yùn)行該程序。

說得更具體一點(diǎn)。RISC-V用戶級ISA的2.2版本定義了目前工具鏈支持的三種基本ISA。

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-RYrhKdv3-1654330904938)(file:///C:/Users/Jeremiah/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif)]

參數(shù)-mabi

GCC的-mabi參數(shù)指定了生成的代碼所符合的整數(shù)和浮點(diǎn)ABI。就像-march參數(shù)指定了生成的代碼可以在哪些硬件上運(yùn)行一樣,-mabi參數(shù)指定了生成的代碼可以與哪些軟件鏈接。我們使用整數(shù)ABI的標(biāo)準(zhǔn)命名方案(ilp32或lp64),并附加一個(gè)參數(shù)單字母來選擇ABI使用的浮點(diǎn)寄存器(ilp32 vs ilp32f vs ilp32d)。為了使對象能夠被鏈接在一起,它們必須遵循相同的ABI。

RISC-V定義了兩個(gè)整數(shù)ABI和三個(gè)浮點(diǎn)ABI,它們一起被視為一個(gè)ABI字符串。整數(shù)ABI遵循標(biāo)準(zhǔn)ABI命名方案。

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-RLPs15Y6-1654330904939)(file:///C:/Users/Jeremiah/AppData/Local/Temp/msohtmlclip1/01/clip_image004.gif)]

就像ISA字符串一樣,ABI字符串被串聯(lián)起來,并通過-mabi參數(shù)傳遞給GCC。為了解釋為什么ISA和ABI應(yīng)該被當(dāng)作兩個(gè)獨(dú)立的參數(shù),讓我們來看看少數(shù)幾個(gè)-march/mabi的組合。

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-uymHNWeX-1654330904939)(file:///C:/Users/Jeremiah/AppData/Local/Temp/msohtmlclip1/01/clip_image006.gif)]

-mtune參數(shù)

在指定目標(biāo)時(shí)涉及的最后一個(gè)編譯器參數(shù)是最簡單的。雖然-march參數(shù)會(huì)導(dǎo)致系統(tǒng)無法執(zhí)行代碼,-mabi參數(shù)會(huì)導(dǎo)致對象之間的不兼容,但-mtune參數(shù)應(yīng)該只改變生成代碼的性能。就目前而言,我們確實(shí)沒有任何針對RISC-V系統(tǒng)的調(diào)諧模型。除非你剛剛給我們的GCC端口添加了一個(gè)新的調(diào)諧參數(shù),否則你可能不應(yīng)該費(fèi)力地對這個(gè)參數(shù)做什么。

2.3 GCC優(yōu)化

RISC-V是一個(gè)新的開源指令集架構(gòu)(ISA),在2016年12月生產(chǎn)了第一批量產(chǎn)處理器。

2016年9月,它制造了第一批大規(guī)模生產(chǎn)的處理器。它的重點(diǎn)是

它專注于經(jīng)濟(jì)性和性能,與其他開源架構(gòu)不同的是

架構(gòu)的不同之處在于,它沒有一個(gè)允許供應(yīng)商自由設(shè)計(jì)、生產(chǎn)和銷售RISC-V的版權(quán)許可。

簽署、制造和銷售RISC-V芯片而不需要任何費(fèi)用,也不需要分享他們對參考實(shí)現(xiàn)的修改。

他們對架構(gòu)的參考實(shí)現(xiàn)的修改。

本論文的目標(biāo)是評估GCC和LLVM/clang編譯器的性能。

本論文的目的是評估GCC和LLVM/clang編譯器對RISC-V目標(biāo)的支持性能以及它們?yōu)樵摷軜?gòu)進(jìn)行優(yōu)化的能力。優(yōu)化架構(gòu)的能力。性能的評估將從CoreMark和Dhrystone中進(jìn)行。

性能將從CoreMark和Dhrystone進(jìn)行評估,這兩個(gè)都是流行的工業(yè)標(biāo)準(zhǔn)這,用于評估嵌入式處理器的性能的基準(zhǔn)。它們將在GCC和LLVM/clang編譯器上以不同的優(yōu)化水平運(yùn)行。

級別上運(yùn)行,并與ARM架構(gòu)的每時(shí)鐘性能進(jìn)行比較。與RISC-V相比,ARM架構(gòu)更加成熟,但也是最類似的廣泛使用的CPU架構(gòu)。對RISC-V目標(biāo)的編譯器支持仍在開發(fā)中。

的編譯器支持仍在開發(fā)中,本論文的重點(diǎn)將是目前GCC與RISC-V的性能差異。

GCC和LLVM編譯器在這個(gè)架構(gòu)上的差異。結(jié)果顯示,GCC上的-O2和-O3優(yōu)化級別的-O2和-O3優(yōu)化水平與我們的ARM參考相比表現(xiàn)非常好。在較低的-O1優(yōu)化級別和-O0(沒有優(yōu)化)以及-O,也就是帶有優(yōu)化的-O0,以生成更小的可執(zhí)行代碼大小。CoreMark基準(zhǔn)測試中,GCC在-O1時(shí)的性能為46%,在-Os時(shí)為8.2%,在-O0時(shí)為9.3%,結(jié)果相似。

在Dhrystone中,除了在-O1上的表現(xiàn)與ARM一樣好之外,GCC的表現(xiàn)比ARM差很多。,RISC-V的GCC在CoreMark中的性能是ARM的9.2%,在Dhrystone中的性能是ARM的11%。在CoreMark中的性能是ARM的9.2%,在Dhrystone中是11%,另一方面,LLVM/clang在試圖編譯我們的CoreMark基準(zhǔn)時(shí)崩潰了。而在Dhrystone上,優(yōu)化選項(xiàng)的影響非常小。

而在Dhrystone上,優(yōu)化選項(xiàng)對性能的影響非常小,它的性能是GCC的6.0%。

在Dhrystone上,優(yōu)化選項(xiàng)對性能的影響很小,使其在-O3上的性能是GCC的6.0%,在-O3上的性能是ARM的5.6%,所以即使有優(yōu)化,它仍然比沒有優(yōu)化的GCC慢。

總而言之,考慮到RISC-V與GCC編譯器在較高的優(yōu)化水平上的表現(xiàn),RISC-V的性能非常好。RISC-V架構(gòu)是如此年輕。然而,在較低的優(yōu)化水平上確實(shí)有改進(jìn)的余地。這也可能會(huì)提高高優(yōu)化級別的性能。

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-JEoUiJSA-1654330904940)(file:///C:/Users/Jeremiah/AppData/Local/Temp/msohtmlclip1/01/clip_image008.gif)]

在較高的優(yōu)化級別上,GCC的表現(xiàn)確實(shí)相當(dāng)好,例如-O3和-O2,但在較低的優(yōu)化水平上似乎有一些問題。而較高的優(yōu)化級別表現(xiàn)良好,由于性能在生產(chǎn)中是最重要的

,你可以認(rèn)為GCC的支持對于生產(chǎn)來說已經(jīng)足夠快了,但是當(dāng)在匯編級別上進(jìn)行調(diào)試時(shí)

級別的調(diào)試時(shí),或者你在開發(fā)過程中需要更快的編譯時(shí)間時(shí),可以考慮使用GCC。

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-a9sfWEqr-1654330904941)(file:///C:/Users/Jeremiah/AppData/Local/Temp/msohtmlclip1/01/clip_image010.gif)]

RISC-V上的GCC在較高的優(yōu)化水平上表現(xiàn)非常好,但在較低的優(yōu)化水平上則明顯較慢。但在較低的優(yōu)化水平上卻明顯地慢了下來。-O1優(yōu)化比Dhrystone的-O0快16.6倍,這在其他架構(gòu)上是不正常的。但更高的優(yōu)化級別,如-O2和-O3對于這樣一個(gè)年輕的架構(gòu)來說,非常有競爭力,令人印象深刻。架構(gòu)來說是相當(dāng)了不起的。

2.4系統(tǒng)級優(yōu)化

l 處理器利用率提升

處理器中的性能優(yōu)化主要體現(xiàn)在其利用率的提升。處理器利用率反映了處理器有效工作時(shí)間在總運(yùn)行時(shí)間中的占比,是一項(xiàng)描述處理器繁忙程度的指標(biāo)。減少處理器空閑等待的時(shí)間,提升處理器利用率,將推動(dòng)系統(tǒng)整體的計(jì)算能力或數(shù)據(jù)處理能力的提升,使系統(tǒng)能夠在更短時(shí)間內(nèi)完成既定工作,或者在相同時(shí)間內(nèi)完成更多工作。

“馮·諾依曼瓶頸”是影響 CPU 利用率的一類典型問題。在馮·諾依曼結(jié)構(gòu)[79]的計(jì)算機(jī)系統(tǒng)中,指令與數(shù)據(jù)被不加區(qū)分地存放在內(nèi)存,使得取指令和數(shù)據(jù)不能同時(shí)進(jìn)行,否則將引起訪存混亂。CPU 在執(zhí)行運(yùn)算前后,都需要額外的時(shí)間等待數(shù)據(jù)完成存取,而不能一直處于工作狀態(tài)。因此,馮·諾依曼結(jié)構(gòu)中的 CPU 存在一個(gè)相對較低的利用率上限,無論硬件制造工藝如何提升,都無法再獲得更高的 CPU 利用率。

相應(yīng)地,在 2017 年,包云崗等人提出一種標(biāo)簽化馮·諾依曼體系結(jié)構(gòu) LvNA(labeled von neumann architecture),在經(jīng)典馮·諾依曼結(jié)構(gòu)上增加了一套基于標(biāo)簽機(jī)制的可編程接口,允許向硬件傳遞更多軟件信息,使硬件可以根據(jù)軟件需求動(dòng)態(tài)調(diào)整管理策略。2019 年,該團(tuán)隊(duì)主導(dǎo)的“標(biāo)簽化 RISC-V”開發(fā)項(xiàng)目,基于RISC-V Rocket Chip 實(shí)現(xiàn)了 LvNA,顯示了 RISC-V 在促進(jìn)敏捷開發(fā)、提升編碼效率方面的優(yōu)勢。在 2021 年, Schuiki 等提出了一種輕量級的 RISC-V 擴(kuò)展“流語義寄存器(stream semantic registers,簡稱 SSR)”,允許在任何指令中編碼加載和存儲操作,而不再需要依賴顯式的加載與存儲指令,從而給出了一種解決單發(fā)射處理器中存在“馮·諾依曼瓶頸”、影響 CPU 利用率問題的方案。實(shí)驗(yàn)結(jié)果顯示,采用 SSR 擴(kuò)展的處理器比起未采用的相同處理器,順序代碼單核心運(yùn)行速度提升 3 倍,即,集群中實(shí)現(xiàn)相同的性能可減少 3 倍的核心數(shù)目;多核心集群的

能效提高 2 倍,指令獲取的數(shù)量減少 3.5 倍,指令緩存功耗減少 5.6 倍。

l 內(nèi)存優(yōu)化

內(nèi)存的設(shè)計(jì)直接制約著系統(tǒng)整體的組織形式和工作方式,在數(shù)據(jù)存儲、通信、同步、處理效率等多方面都對系統(tǒng)有關(guān)鍵性的影響。因此,內(nèi)存優(yōu)化問題始終是系統(tǒng)性能研究的一大重點(diǎn)。

例如,多核處理器中,隨著芯片上核心數(shù)量的增加,會(huì)出現(xiàn)“緩存行乒乓”問題,即,當(dāng)多個(gè) CPU 共享同一緩存行中的變量時(shí),不同 CPU 對該變量的頻繁讀寫會(huì)導(dǎo)致其他 CPU 的緩存行頻繁失效。共享內(nèi)存中,硬件緩存一致性范式的線程同步算法,其性能擴(kuò)展問題會(huì)受到緩存行乒乓的阻礙。2019 年,Dogan 等人為了解決多核處理器的緩存行乒乓問題,提出了一種針對數(shù)據(jù)的硬件內(nèi)移動(dòng)計(jì)算(moving computation,簡稱 MC)模型,該模型將共享數(shù)據(jù)固定在專用核上,以實(shí)現(xiàn)數(shù)據(jù)局部性優(yōu)化。研究人員還在 RISC-V 上建立了多核仿真環(huán)境,評估了 MC 模

型在最多 1024 核尺度下的性能擴(kuò)展優(yōu)勢。評估結(jié)果顯示,與自旋模型、原子模型等現(xiàn)有模型相比,對每個(gè)數(shù)據(jù)點(diǎn)標(biāo)準(zhǔn)化的完成時(shí)間平均分別提升了 60%、27%。

擴(kuò)展基全局地址空間(extended base global address space,簡稱 xBGAS)是 2018 年 Leidel 等人為了解決可擴(kuò)展的高性能計(jì)算架構(gòu)在操作離開單個(gè)設(shè)備域時(shí)常常遭遇不必要的延遲的問題,所提出的一種 RISC-V 指令集微架構(gòu)擴(kuò)展。該擴(kuò)展可以為常見的高性能計(jì)算操作提供緊耦合的支持。由于其提供了從基本指令訪問全局共享內(nèi)存地址空間的可能性,從而開創(chuàng)了一條系統(tǒng)優(yōu)化的新思路,出現(xiàn)了更多以 xBGAS 為基礎(chǔ)的研究。

例如,2019 年 Williams 等人在 xBGAS 的基礎(chǔ)上,提出了一種構(gòu)建集體通信庫的 RISC-V 微架構(gòu)擴(kuò)展方案,給出了它的初始 API 設(shè)計(jì)和實(shí)現(xiàn),以及底層算法。這項(xiàng)研究的目的是在分布式地址空間模型中,將更直觀的界面與更高的性能結(jié)合起來,以解決軟件開發(fā)人員很難適應(yīng)并行編程方法,尤其是分布式地址空間中的并行編程問題。

2020 年 Wang 等人提出了一種遠(yuǎn)程原子擴(kuò)展(remote atomic extension,簡稱 RAE)的設(shè)計(jì),為基于 RISC-V SA 架構(gòu)的遠(yuǎn)程原子操作提供了內(nèi)在的 ISA 級指令和架構(gòu)支持,以改善高性能計(jì)算(high performance computing,簡稱 HPC)系統(tǒng)的性能。

l 通信延遲緩解

通信是連接系統(tǒng)各組件、各成分之間的信息交換過程,通信延遲將推遲目標(biāo)獲得所需信息的時(shí)間,從而增大其空閑等待時(shí)間,造成整體用時(shí)延長、目標(biāo)利用率降低、或者能量空耗。緩解通信延遲,除了期待相關(guān)硬件制作工藝的改進(jìn)外,提升系統(tǒng)的并行能力、掩蓋通信延遲的不利影響也是一種可行的做法。

)系統(tǒng)的性能。

l 通信延遲緩解

通信是連接系統(tǒng)各組件、各成分之間的信息交換過程,通信延遲將推遲目標(biāo)獲得所需信息的時(shí)間,從而增大其空閑等待時(shí)間,造成整體用時(shí)延長、目標(biāo)利用率降低、或者能量空耗。緩解通信延遲,除了期待相關(guān)硬件制作工藝的改進(jìn)外,提升系統(tǒng)的并行能力、掩蓋通信延遲的不利影響也是一種可行的做法。

這方面,Morais 等人在 2019 年提出了一種將任務(wù)調(diào)度硬件加速器與通用 CPU 緊密集成的體系結(jié)構(gòu),以減少通信延遲及運(yùn)行開銷,從而提高與任務(wù)調(diào)度并行的應(yīng)用程序的性能。他們開發(fā)了硬件加速的輕量級任務(wù)調(diào)度運(yùn)行時(shí)環(huán)境 Phentos,允許任務(wù)調(diào)度軟件通過自定義指令與硬件任務(wù)調(diào)度器和CPU直接進(jìn)行交互,以最大限度減少硬件任務(wù)調(diào)度器和 CPU 之間的通信開銷。Morias 等人認(rèn)為,任務(wù)并行系統(tǒng)的性能會(huì)受到自動(dòng)依賴推理和準(zhǔn)備運(yùn)行任務(wù)調(diào)度相關(guān)開銷的限制,而用于提高運(yùn)行時(shí)性能的硬件加速器往往具有較高的 CPU 通信開銷,因此他們希望通過這樣的設(shè)計(jì),來解決 CPU 通信的高開銷問題。

總結(jié)

以上是生活随笔為你收集整理的山东大学RISC-V公共开放平台开发记录3的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。