• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    面向E 級(jí)超算系統(tǒng)的眾核片上存儲(chǔ)層次研究

    2023-12-16 10:28:54方燕飛董恩銘李雁冰何王全漆鋒濱
    計(jì)算機(jī)工程 2023年12期
    關(guān)鍵詞:處理器一致性架構(gòu)

    方燕飛,劉 齊,董恩銘,李雁冰,過(guò) 鋒,王 諦,何王全,漆鋒濱

    (國(guó)家并行計(jì)算機(jī)工程技術(shù)研究中心,北京 100190)

    0 概述

    隨著計(jì)算機(jī)科學(xué)技術(shù)的高速發(fā)展,處理器計(jì)算能力不斷提升,超級(jí)計(jì)算機(jī)系統(tǒng)規(guī)模不斷擴(kuò)大,高性能計(jì)算(High Performance Computing,HPC)開(kāi)始邁入E 級(jí)(Exascale,E 為超級(jí)計(jì)算機(jī)運(yùn)算單位,意為每秒百億億次)時(shí)代。在同一芯片內(nèi)集成大量計(jì)算核心的眾核處理器[1-4]憑借超高的性能功耗比和性能面積比成為超算領(lǐng)域的主流處理器架構(gòu),2022 年12 月 第60 屆TOP500[1]榜單上的前10 臺(tái)超算 系統(tǒng)均采用眾核處理器為系統(tǒng)提供主要算力。

    隨著數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)方法在HPC 應(yīng)用領(lǐng)域的滲透和深度融合,HPC 應(yīng)用對(duì)超算系統(tǒng)的運(yùn)算能力和密集數(shù)據(jù)處理能力都提出了越來(lái)越大的需求。而隨著工藝和體系結(jié)構(gòu)技術(shù)的發(fā)展,面向E 級(jí)超算系統(tǒng)的眾核處理器計(jì)算密度不斷提升,片上集成的運(yùn)算核心數(shù)量不斷增加,眾多核心對(duì)存儲(chǔ)資源的競(jìng)爭(zhēng)愈加劇烈,眾核處理器面臨的“訪存墻”問(wèn)題越來(lái)越突出。E 級(jí)超算眾核片上存儲(chǔ)層次是緩解E 級(jí)系統(tǒng)內(nèi)眾核處理器“訪存墻”問(wèn)題,幫助HPC 應(yīng)用更好地發(fā)揮E 級(jí)系統(tǒng)眾核處理器強(qiáng)大的計(jì)算優(yōu)勢(shì),提升實(shí)際應(yīng)用性能的重要結(jié)構(gòu)。然而,片上存儲(chǔ)器在整個(gè)處理器上的面積占比超過(guò)50%,功耗占比約為25%~45%[2],而且存儲(chǔ)容量非常有限。因此,如何充分利用E 級(jí)超算系統(tǒng)眾核片上面積,合理設(shè)計(jì)存儲(chǔ)層次,并從面向E 級(jí)計(jì)算的應(yīng)用與軟件層面最大限度地發(fā)揮眾核片上存儲(chǔ)層次的優(yōu)勢(shì),是工業(yè)界和學(xué)術(shù)界的研究熱點(diǎn)。

    片上存儲(chǔ)層次有多種組織方式,傳統(tǒng)多核處理器通常采用多級(jí)高速緩存(Cache)結(jié)構(gòu),而嵌入式處理器通常采用便簽式存儲(chǔ)器(Scratchpad Memory,SPM)結(jié)構(gòu)來(lái)緩解“訪存墻”問(wèn)題。Cache 具有硬件自動(dòng)管理、性能優(yōu)化顯著等優(yōu)點(diǎn),但隨著晶體管數(shù)量的日益增長(zhǎng),Cache 體系結(jié)構(gòu)在現(xiàn)代眾核處理器中變得更加復(fù)雜,在面積、性能、功耗等方面都面臨挑戰(zhàn),而且Cache 具有程序執(zhí)行時(shí)間不可預(yù)知、軟件不可控等缺點(diǎn)。SPM 作為Cache 的替代或補(bǔ)充,在能源效率、時(shí)間可控性和可擴(kuò)展性等方面具有明顯優(yōu)勢(shì),但其缺點(diǎn)是編譯器或程序員需要顯式地控制數(shù)據(jù)布局與傳輸,對(duì)于軟件優(yōu)化和用戶編程具有很大挑戰(zhàn)。為了充分利用Cache 和SPM 的優(yōu)勢(shì),在性能、功耗、面積、可編程性等方面取得更好的平衡,面向E 級(jí)超算的眾核片上存儲(chǔ)層次的結(jié)構(gòu)變得比多核和嵌入式處理器的存儲(chǔ)層次都更加豐富且復(fù)雜,軟硬件及應(yīng)用層面都有許多關(guān)鍵技術(shù)值得研究和突破。

    本文按照不同的組織方式將片上存儲(chǔ)層次分為多級(jí)Cache 結(jié)構(gòu)、SPM 結(jié)構(gòu)和SPM+Cache 混合結(jié)構(gòu),并總結(jié)3 種結(jié)構(gòu)的優(yōu)缺點(diǎn)。分析國(guó)際主流GPU、同構(gòu)眾核、國(guó)產(chǎn)眾核等面向主流E 級(jí)超算系統(tǒng)的眾核處理器片上存儲(chǔ)層次設(shè)計(jì)現(xiàn)狀與發(fā)展趨勢(shì),并從眾核共享末級(jí)Cache(Last Level Cache,LLC)管理與緩存一致性協(xié)議、SPM 空間管理與數(shù)據(jù)移動(dòng)優(yōu)化、SPM+Cache 混合結(jié)構(gòu)的全局視角優(yōu)化等角度綜述國(guó)際上的存儲(chǔ)層次設(shè)計(jì)與優(yōu)化相關(guān)軟硬件技術(shù)的研究現(xiàn)狀。

    1 眾核片上存儲(chǔ)層次特點(diǎn)分析

    在過(guò)去的近二十年中,隨著集成電路設(shè)計(jì)與制造技術(shù)的快速發(fā)展,處理器頻率以每年50%~100%的速度增長(zhǎng),然而主存的速度增長(zhǎng)每年只有6%~7%[5],處理器與主存速度差異越來(lái)越大。為了緩解處理器和主存之間的速度差,在寄存器與主存之間引入了一種比主存速度更快、容量更小的靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)作為臨時(shí)存儲(chǔ),形成片上層次化存儲(chǔ)結(jié)構(gòu),也稱作片上存儲(chǔ)層次。E 級(jí)超算系統(tǒng)采用包括寄存器、高速緩存、主存、外存的多級(jí)存儲(chǔ)體系結(jié)構(gòu)。眾核處理器作為E 級(jí)系統(tǒng)的計(jì)算節(jié)點(diǎn),其片上存儲(chǔ)結(jié)構(gòu)是E 級(jí)超算系統(tǒng)存儲(chǔ)體系結(jié)構(gòu)中的一個(gè)重要組成部分,是緩解眾核處理器“訪存墻”問(wèn)題,幫助HPC 應(yīng)用更好地發(fā)揮眾核處理器計(jì)算優(yōu)勢(shì),提升實(shí)際應(yīng)用性能的重要結(jié)構(gòu)。在當(dāng)前主流眾核處理器中,片上存儲(chǔ)層次形式多樣,按照SRAM 的組織方式可以分為多級(jí)Cache 結(jié)構(gòu)、SPM 結(jié)構(gòu)和SPM+Cache 的混合結(jié)構(gòu)等。

    1.1 多級(jí)Cache 結(jié)構(gòu)

    在通用處理器上,SRAM 通常被組織為Cache。在通用多核處理器上常有3~4 級(jí)Cache,不同層次的Cache,其容量、延時(shí)和功率不同,從主存到寄存器,越往上Cache 的層次越低,容量越小,訪問(wèn)延時(shí)越低。比如IBM 的Z15[6],每個(gè)核心私有L1 數(shù)據(jù)Cache和指令Cache,一個(gè)數(shù)據(jù)和指令共用的L2 Cache,所有核共享一個(gè)大容量的L3 Cache,此外,還有一個(gè)更大容量的片外L4 Cache。但隨著片上核心數(shù)量的不斷增加,受功耗面積等制約,多核Cache 的層次在減少,比如下一代IBM Telum[7],將取消L4 和L3 Cache,物理上只支持L1 和L2 Cache,同時(shí)借助更高級(jí)的技術(shù)實(shí)現(xiàn)邏輯上的共享L3 Cache。在當(dāng)前主流的眾核處理器上,由于片上核心數(shù)量眾多,片上互連結(jié)構(gòu)復(fù)雜,為更有效揮地發(fā)Cache 的作用,眾核大多采用2 級(jí)Cache 結(jié)構(gòu),如圖1 所示,各核心私有L1 Cache,L2 Cache 作為末 級(jí)Cache 被所有 核心共享,而且L2 Cache 大多容量較大,由多個(gè)Bank 組成,通過(guò)高速NoC 互連實(shí)現(xiàn)核心間共享。

    圖1 眾核處理器上的兩級(jí)Cache 存儲(chǔ)結(jié)構(gòu)Fig.1 Two level Cache memory hierarchy on manycore processor

    1.2 SPM 結(jié)構(gòu)

    Cache 的設(shè)計(jì)越來(lái)越復(fù)雜,且受到面積和功耗的限制,而與Cache 相比,SPM 的功耗和面積比Cache低40%以上[5],因此很多眾核處理器將片上SRAM組織成由軟件管理的便簽式存儲(chǔ)器。例如早期由IBM、Sony 和 To shiba 共同開(kāi)發(fā)的 Cell[8]處理器,由1 個(gè)跟 Power 處理器(PPE)兼容的主處理器和8 個(gè)協(xié)處理器(即SPE)組成,其中每個(gè)SPE 帶有256 KB SPM。又 如Adapteva Epiphany[9]的64 核 心眾核處理器,每個(gè)計(jì)算核心帶有軟件管理的SPM。再如“神威·太湖之光”超算系統(tǒng)采用的申威高性能眾核處理器SW26010[10],由4 個(gè)控制核心和256 個(gè)從核心組成,每個(gè)從核心帶有160 KB 的SPM。通常,片上的多個(gè)計(jì)算核心之間通過(guò)片上網(wǎng)絡(luò)(NoC)互連,每個(gè)核心除了可以訪問(wèn)本地SPM 之外,還可以通過(guò)NoC 訪問(wèn)遠(yuǎn)程的SPM,并且訪問(wèn)延遲與核心間的距離成正比。眾核片上核心訪問(wèn)遠(yuǎn)程核心SPM通常有兩種方式:一種是由底層體系結(jié)構(gòu)支持的共享SPM 方式;另一種是通過(guò)RMA 等方式顯式地訪問(wèn)遠(yuǎn)程核心的SPM。前者對(duì)用戶透明,后者需要調(diào)用RMA 接口顯式編程。有的處理器上的核心還配備直接內(nèi)存訪問(wèn)(DMA)引擎,用于在片外內(nèi)存和本地SPM 之間傳輸批量數(shù)據(jù)。圖2 顯示了基于SPM的眾核架構(gòu)[11]存儲(chǔ)結(jié)構(gòu)示意圖。每個(gè)核心包含一個(gè)統(tǒng)一的SPM 用于指令和數(shù)據(jù),每個(gè)SPM 持有應(yīng)用程序要使用的全局地址空間的不同部分。雖然SPM可以同時(shí)作為代碼和數(shù)據(jù)的片上緩存,但在高性能計(jì)算領(lǐng)域,為了減少對(duì)代碼管理的復(fù)雜度,眾核處理器通常會(huì)在片上提供指令Cache,而只有數(shù)據(jù)是采用SPM 結(jié)構(gòu)進(jìn)行緩存,典型的如SW26010。本文后續(xù)討論的眾核片上存儲(chǔ)層次也默認(rèn)都是有指令Cache 的。

    隨著SPM 逐漸被用在GPU、通用處理器及高端處理器上以代替一級(jí)數(shù)據(jù)Cache,在一些高性能計(jì)算機(jī)體系結(jié)構(gòu)中,甚至采用多級(jí)軟件管理存儲(chǔ)層次代替?zhèn)鹘y(tǒng)多級(jí)Cache 存儲(chǔ)層次[12]。

    1.3 SPM+Cache 混合結(jié)構(gòu)

    由于傳統(tǒng)的SPM 控制器不包含任何輔助管理數(shù)據(jù)的邏輯電路,SPM 中的所有數(shù)據(jù)必須經(jīng)由軟件顯式管理,沒(méi)有管理邏輯電路帶來(lái)的額外代價(jià),在相同容量下,SPM 面積和單次訪問(wèn)的能耗都小于Cache。Cache 由于在發(fā)生沖突等情況下訪問(wèn)時(shí)間會(huì)大幅增加,因此Cache 具有不確定性的命中時(shí)間,SPM 無(wú)法像Cache 那樣由硬件自動(dòng)完成緩沖數(shù)據(jù)的換入換出操作,因此SPM 不存在訪問(wèn)缺失的情況,始終能夠保證一個(gè)很小的固定時(shí)鐘周期數(shù)的訪問(wèn)時(shí)間,從而保證了程序的確定性。但是SPM 的容量有限,而且由于不能自動(dòng)完成數(shù)據(jù)從主存到SPM 的映射,因此對(duì)編譯器和用戶編程帶來(lái)了很大挑戰(zhàn)。表1給出了Cache 與SPM 特點(diǎn)的對(duì)比,兩者各有優(yōu)缺點(diǎn),而且優(yōu)勢(shì)互補(bǔ)。

    表1 Cache 與SPM 的特點(diǎn)對(duì)比Table 1 Comparison of features of Cache and SPM

    為了更好地適應(yīng)不同應(yīng)用的需求,充分利用Cache 與SPM 的優(yōu)勢(shì),越來(lái)越多的眾核處理器片上存儲(chǔ)結(jié)構(gòu)開(kāi)始采用SPM+Cache 混合的方式來(lái)追求一種平衡設(shè)計(jì)。NVIDA 公司面向通用計(jì)算領(lǐng)域的GPU 上的存儲(chǔ)層次就是SPM+Cache 混合的典型代表,從其第二代GPU 架 構(gòu)Fermi[13]開(kāi) 始,為了提 升GPU 的計(jì)算效率,引入了L1 和L2 Cache,SPM 結(jié)構(gòu)的共享存儲(chǔ)器(Shared Memory,SMEM)容量也變得更大,圖3 給出了典型的Fermi 架構(gòu)的存儲(chǔ)層次,每個(gè)SM 有一個(gè)私有的L1 Cache 和SMEM,容量分別為48 KB 或16 KB,所有流式多處理器(SM)共享768 KB L2 Cache。自Fermi 之后的每一代架構(gòu)都繼承了Cache+SPM 的混合結(jié)構(gòu)。NVIDIA GPU 一直保留SMEM 功能,由軟件負(fù)責(zé)實(shí)現(xiàn)數(shù)據(jù)的讀寫和一致性管理,有利于CUDA 多線程間數(shù)據(jù)重用,對(duì)于圖形計(jì)算等數(shù)據(jù)流處理類應(yīng)用可以挖掘極致的性能。而后引入的兩級(jí) Cache 結(jié)構(gòu),使GPU 在HPC 領(lǐng)域的適應(yīng)性明顯加強(qiáng),沒(méi)有使用SMEM 的應(yīng)用程序以及無(wú)法預(yù)知數(shù)據(jù)地址的算法,都可以從L1 Cache 設(shè)計(jì)中顯著獲益。

    圖3 Fermi 存儲(chǔ)層次示意圖Fig.3 Schematic diagram of Fermi storage hierarchy

    1.4 眾核片上存儲(chǔ)層次結(jié)構(gòu)類型總結(jié)

    眾核處理器系統(tǒng)根據(jù)其片上存儲(chǔ)層次中是否包含SPM 可以分為4 類:1)沒(méi)有SPM 的純Cache 系統(tǒng);2)只 有SPM 的不可Cache 系 統(tǒng);3)擁 有SPM 和Cache 的混合系統(tǒng);4)SPM 和Cache 混合且容量可配置的系統(tǒng),可以配置成純SPM 模式、純Cache 模式、或者SPM 與Cache 混合的模式,而且SPM 與Cache的容量可以有多種組合配置。典型的混合存儲(chǔ)結(jié)構(gòu)為核心私有1 級(jí)Cache 和SPM(容量可配置),所有核心共享MB 級(jí)大容量L2 Cache 的結(jié)構(gòu)。

    片上存儲(chǔ)層次的設(shè)計(jì)除了組織方式外,還有一個(gè)必須關(guān)注的物理部件,即片上高速互連網(wǎng)絡(luò)NoC(如富士通A64FX[3]、申威眾核處理器均設(shè)計(jì)了NoC)。片上高速網(wǎng)絡(luò)增強(qiáng)了核間數(shù)據(jù)交互能力,間接提高了單核心Cache 或者SPM 的數(shù)據(jù)重用能力,降低了主存訪問(wèn)壓力,是硬件高效組織共享末級(jí)Cache 和共享SPM 的關(guān)鍵,也是應(yīng)用算法和系統(tǒng)軟件充分共享利用片上資源的重要途徑,因此,在片上存儲(chǔ)層次的設(shè)計(jì)與使用中,必須考慮片上網(wǎng)絡(luò)的結(jié)構(gòu)特點(diǎn)。

    2 面向E 級(jí)超算的眾核處理器片上存儲(chǔ)層次

    2.1 主流GPGPU 存儲(chǔ)層次現(xiàn)狀

    作為通用加速卡的GPGPU 憑借其卓越的計(jì)算能力,已經(jīng)在HPC 領(lǐng)域扮演著越來(lái)越重要的角色。NVIDIA 通用GPU 作為最主流的通用眾核加速卡,已經(jīng)廣泛應(yīng)用于HPC 領(lǐng)域,比如第60 屆Top500 排名前10 的超算中有5 臺(tái)都采用NVIDIA 的GPU 進(jìn)行加速。而AMD 和Intel 的通用GPU 也分別作為美國(guó)的3 臺(tái)E 級(jí)系統(tǒng)上的加速卡為系統(tǒng)提供主要算力。下文將分別分析上述3 個(gè)面向HPC 的主流GPU 架構(gòu)存儲(chǔ)層次現(xiàn)狀及其發(fā)展趨勢(shì)。

    2.1.1 NVIDIA Hopper 架構(gòu)的存儲(chǔ)層次

    NVIDIA GPU 的架構(gòu)從Tesla 到Hopper 已經(jīng)發(fā)展了9 代,為了適應(yīng)GPU 計(jì)算能力的不斷提升,其片上存儲(chǔ)層次也在不斷發(fā)展。自Fermi 架構(gòu)采用SPM+Cache 混合的片上存儲(chǔ)結(jié)構(gòu)之后,后續(xù)的架構(gòu)在存儲(chǔ)層次上的設(shè)計(jì)沒(méi)有較大的變革,其變化主要表現(xiàn)在各級(jí)存儲(chǔ)在容量上的變化、SMEM 與L1 Cache 結(jié)合方式上的變化等。直至第7 代Volta 架構(gòu),其片上存儲(chǔ)方式較前幾代架構(gòu)又有了比較重大的變化。Volta 架構(gòu)將數(shù)據(jù)Cache 與SMEM 從功能上做到一個(gè)存儲(chǔ)體(memory block)中,使得兩種緩存方式均達(dá)到了其訪問(wèn)的最好性能。SMEM 與L1 Cache 的總?cè)萘繛?28 KB,且容量可以有多種靈活的配置。第8 代Ampere 架構(gòu)的片上存儲(chǔ)方式繼承了Volta 架構(gòu)的片上存儲(chǔ)方式,但將存儲(chǔ)空間總大小擴(kuò)大至192 KB/SM(采用Ampere 架構(gòu)的典型GPU為A100[14])。A100 的L2 Cache 容量擴(kuò)展到40 MB,是V100 的7 倍,并且支持駐留優(yōu)先級(jí)設(shè)置,可以提高持續(xù)訪問(wèn)數(shù)據(jù)駐留Cache 的權(quán)利,從而減小DMA帶寬需求。此外,Ampere 增加了異步拷貝指令,可以直接從L2 Cache 以及DRAM 中批量傳輸數(shù)據(jù)到SMEM 中,而在前一代架構(gòu)Volta 中,需要通過(guò)一個(gè)全局加載指令從L1 Cache 到寄存器中,然后再用Store-Shared 指令從寄存器中傳到SMEM 中,圖4 展示了Ampere 與Volta 的存儲(chǔ)結(jié)構(gòu)變化。從最新一代Hopper 架構(gòu)H100 和Ampere 架構(gòu)A100 的對(duì)比來(lái)看,最近的兩代存儲(chǔ)架構(gòu)方面沒(méi)有大的變化,只是H100的SLM 容量增加到256 KB,且H100 從硬件對(duì)TMA(Tensor Memory Accelerator)的功能上做了更多的支持。

    圖4 Ampere 與Volta 的存儲(chǔ)結(jié)構(gòu)變化Fig.4 Storage structure changes of Ampere and Volta

    從NVIDIA 9 代GPU 架構(gòu)的存儲(chǔ)層次發(fā)展趨勢(shì)來(lái)看,Cache+SPM 的混合結(jié)構(gòu)是其片上存儲(chǔ)層次的一個(gè)創(chuàng)新解決方案,混合結(jié)構(gòu)可以更好地兼顧面積、性能、功耗及好用性,以滿足不同領(lǐng)域應(yīng)用的多樣化需求。對(duì)于某些應(yīng)用,Cache 仍然是保證系統(tǒng)通用性和應(yīng)用性能的關(guān)鍵結(jié)構(gòu),而SPM 結(jié)構(gòu)為某些HPC 應(yīng)用挖掘極致性能提供了更多可能。對(duì)于有些更復(fù)雜的應(yīng)用,則既需要SMEM 也需要Cache,因此支持Cache 與SMEM 容量的靈活配置,可以進(jìn)一步提高對(duì)不同類型應(yīng)用的適應(yīng)性。進(jìn)一步地,為方便程序員或者編譯系統(tǒng)挖掘應(yīng)用數(shù)據(jù)訪問(wèn)特性,Hopper 架構(gòu)引入了線程塊集群(Thread Block Cluster,TBC)和分布共享內(nèi)存(Distributed Shared Memory,DSMEM)概念,同一線程塊集群內(nèi)的SM 之間可以共享訪問(wèn)SPM,而無(wú)須通過(guò)Global Memory 交互數(shù)據(jù),從而提高數(shù)據(jù)交互效率。此外,硬件上提供了只讀數(shù)據(jù)緩存的Read-Only Data Cache 以及異步拷貝指令,都可以進(jìn)一步降低訪存時(shí)延、提升帶寬利用率,雖然這些設(shè)計(jì)會(huì)增加軟件管理和編程復(fù)雜度,但是為應(yīng)用或編譯系統(tǒng)充分挖掘片上緩沖性能提供了更多手段。

    2.1.2 AMD CDNA2 架構(gòu)的存儲(chǔ)層次

    AMD CDNA2 是AMD 在2021 年11 月新發(fā)布的GPU 架構(gòu),其設(shè)計(jì)目標(biāo)是科學(xué)計(jì)算和機(jī)器學(xué)習(xí)領(lǐng)域的應(yīng)用。最新TOP500 排名第1 的美國(guó)E 級(jí)超算系統(tǒng)Frontier 采用的加速卡AMD MI250X 正是基于AMD CDNA2 架構(gòu)的AMD Instinct MI200 構(gòu)建的。AMD MI250X 采用MCM 技術(shù)封裝了兩個(gè)AMD Instinct MI200 GCD。

    每個(gè)AMD Instinct MI200 GCD 包含112個(gè)計(jì)算單元(Compute Unit,CU),最低級(jí)別的內(nèi)存層次結(jié)構(gòu)位于CU 內(nèi)部,如圖5 所示,每個(gè)CU 包含一個(gè)16 KB L1數(shù)據(jù)Cache 和64 KB SPM 結(jié)構(gòu)的本地共享存儲(chǔ)器,另有一個(gè)4 KB 共享SPM 結(jié)構(gòu)的全局共享存儲(chǔ)器。整個(gè)GCD 共享一個(gè)由32 個(gè)Slice 構(gòu)成的16 路組相連結(jié)構(gòu)的L2 Cache,總?cè)萘繛? MB。

    2.1.3 Intel Xe 架構(gòu)的存儲(chǔ)層次

    美國(guó)E 級(jí)計(jì)劃中的Aurora 超算系統(tǒng)采用 Intel Xe 架構(gòu)的GPU,Xe 架構(gòu)是Intel 繼Gen 9 和Gen 11 之后的最新一代GPU 架構(gòu)。Gen 9 和Gen 11 都是采用3 級(jí)Cache 結(jié)構(gòu),在片上使用共享本地內(nèi)存(Shared Local Memory,SLM),是一種SPM 結(jié)構(gòu)。作為一級(jí)數(shù)據(jù)緩沖,沒(méi)有通用的L1 數(shù)據(jù)Cache。Gen 11 相對(duì)Gen 9 在存儲(chǔ)層次上的改進(jìn)特點(diǎn)是將SLM 帶入了子Slice 單元,使得SLM 更接近執(zhí)行單元(EU),以便在同時(shí)訪問(wèn)L3 Cache 時(shí)減少數(shù)據(jù)的爭(zhēng)用。SLM 更接近EU 也有助于減少延遲并提高效率,如圖6 所示。

    Intel 的Xe 架構(gòu)是對(duì)前兩代Gen 9 和Gen 11 架構(gòu)上的進(jìn)一步升級(jí),Intel Xe 架構(gòu)不僅全面提升了執(zhí)行單元的規(guī)模,從存儲(chǔ)層次發(fā)展來(lái)看,Xe 架構(gòu)保留了Gen 11 相 對(duì)Gen 9 在SLM 上的改 進(jìn),即 將SLM 帶 入SubSlice,并且Xe 架構(gòu)相對(duì)Gen 11 進(jìn)一步新增了L1數(shù)據(jù)Cache。Xe 架構(gòu)還支持端對(duì)端壓縮,L2 Cache的容量也有大幅提升。目前發(fā)布的Intel Xe 架構(gòu)GPU Ponte Vecchio 支 持 512 KB 的 SLM 與L1 DCache 動(dòng)態(tài)可配的一級(jí)緩沖,二級(jí)Cache 增加到64 MB。從不同代系的發(fā)展來(lái)看,在追求兼顧性能與好用性的目標(biāo)中,Intel 的GPU 存儲(chǔ)層次設(shè)計(jì)也逐步采用SPM+Cache 的混合結(jié)構(gòu)。

    2.2 同構(gòu)眾核系統(tǒng)的片上存儲(chǔ)層次

    目前TOP500 排名第2 的日本的Fugaku/Post-K超算系統(tǒng),采用的是富士通A64FX 處理器[3]。

    A64FX 處理器采用同構(gòu)眾核處理器體系結(jié)構(gòu),片上集成52 個(gè)同構(gòu)核心,包括48 個(gè)計(jì)算核心與4個(gè)輔助核心,如圖7 所示,所有核心分為4 個(gè)組,每組13 個(gè)核心,一組核心稱為一個(gè)CMG。在A64FX 處理器芯片中,多個(gè)CMG 通過(guò)片上網(wǎng)絡(luò)連接。富士通的A64FX處理器為了減小芯片大小,采用兩級(jí)Cache的結(jié)構(gòu),每個(gè)核心私有64 KB 一級(jí)Cache,一個(gè)CMG 的所有核心共享一個(gè)8 MB 二級(jí)Cache。A64FX 采用類似于環(huán)形拓?fù)渚W(wǎng)絡(luò)的片上網(wǎng)絡(luò),以支持CMG 之間的內(nèi)存一致性協(xié)議,從而可以使用多個(gè)CMG 執(zhí)行共享內(nèi)存程序。

    圖7 A64FX 片上存儲(chǔ)層次Fig.7 On-chip storage hierarchy of A64FX

    富岳采用的A64FX 存儲(chǔ)層次設(shè)計(jì)是以應(yīng)用和編程軟件需求牽引的一種協(xié)同設(shè)計(jì)。比如其CMG 內(nèi)核心數(shù)量、一二級(jí)Cache 的容量以及Cache line 的大小等參數(shù)設(shè)置,都是在模擬富岳的重點(diǎn)目標(biāo)應(yīng)用程序性能的前提下給出的,在功率、面積和性能之間取得更好的權(quán)衡。為了提高目標(biāo)應(yīng)用程序的性能,采用增強(qiáng)型的緩存功能設(shè)計(jì),比如采用組合聚集操作技術(shù),使間接加載的數(shù)據(jù)吞吐量加倍,采用二級(jí)緩存數(shù)據(jù)重用優(yōu)化技術(shù)提高緩存帶寬。純Cache 結(jié)構(gòu)具有更好的應(yīng)用適應(yīng)性,但同時(shí)也面臨可擴(kuò)展性問(wèn)題。

    2.3 新一代國(guó)產(chǎn)眾核存儲(chǔ)層次現(xiàn)狀

    2.3.1 MT-3000 異構(gòu)眾核處理器存儲(chǔ)層次

    國(guó)防科技大學(xué)推出了一款自主設(shè)計(jì)的面向新一代天河超算系統(tǒng)的異構(gòu)眾核處理器MT-3000[12]。

    MT-3000 采用多區(qū)域加速架構(gòu),其結(jié)構(gòu)如圖8 所示,CPU 內(nèi)包含16 個(gè)通用處理器核心和4 個(gè)加速域,采用混合存儲(chǔ)器層次結(jié)構(gòu)。

    MT-3000 的每個(gè)通用CPU 核含有支持高速緩存一致性 的兩級(jí)私有Cache,L1 Cache 被L2 Cache 包含,L2 Cache 容量為512 KB。每個(gè)加速域包含24 個(gè)控制核心和384 個(gè)加速核心,采用兩級(jí)SPM 結(jié)構(gòu),其存儲(chǔ)層次如圖8 所示,每個(gè)加速域含有1.5 MB 的域內(nèi)共享內(nèi)存(DSM)和48 MB 的高速共享內(nèi)存(HBSM),其中DSM 只能由加速域內(nèi)的核心訪問(wèn),而HBSM 被本加速域的所有核心及通用域的16 個(gè)CPU 核共享。片上含有兩級(jí)高速互連網(wǎng)絡(luò),每個(gè)加速域內(nèi)采用全連接網(wǎng)絡(luò),而16 個(gè)通用核心間通過(guò)二維Mesh 網(wǎng)相連,16 個(gè)通用核心可以訪問(wèn)4 個(gè)加速域的HBSM。MT-3000 加速域支持軟件管理的垂直存儲(chǔ)一致性,將加速域內(nèi)的DSM(6 MB)、HBSM(共48 MB)、DDR4 存儲(chǔ)(共32 GB)三級(jí)存儲(chǔ)架構(gòu),通過(guò)高速DMA 和片上網(wǎng)絡(luò)連接,提供了高帶寬的數(shù)據(jù)傳輸和核間數(shù)據(jù)交互能力。

    2.3.2 申威眾核處理器存儲(chǔ)層次

    用于“神威·太湖之光”的申威26010 眾核處理器[10,15],片上采用純數(shù)據(jù)SPM 的結(jié)構(gòu)。SW26010 包含4 個(gè)核組,每個(gè)核組有64 個(gè)運(yùn)算核心,每個(gè)運(yùn)算核心私有128 KB SPM。而面向E 級(jí)系統(tǒng)的新一代申威眾核處理器[16]開(kāi)始采用SPM+Cache 混合的片上存儲(chǔ)結(jié)構(gòu)。該眾核處理器包含6 個(gè)核組,每個(gè)核組有64 個(gè)運(yùn)算核心,每個(gè)運(yùn)算核心有256 KB SRAM,支持SPM與L1 Cache 混合且容量可配置的使用方式,64 個(gè)運(yùn)算核心的SRAM 還可以通過(guò)片上NoC 互連組織成共享SPM 空間,片上存儲(chǔ)模型如圖9 所示。運(yùn)算核心可以RMA 或者遠(yuǎn)程load/store 的方式訪問(wèn)同一核組內(nèi)遠(yuǎn)程運(yùn)算核心的SPM 空間,也可以通過(guò)DMA 將主存空間數(shù)據(jù)批量傳輸?shù)剿接谢蛘吖蚕淼腟PM 空間上。

    圖9 新一代申威眾核處理器存儲(chǔ)層次Fig.9 The storage hierarchy of the new generation of Shenwei manycore processors

    為更好地適應(yīng)不同數(shù)據(jù)訪問(wèn)特征的HPC 應(yīng)用的需求,提升主存數(shù)據(jù)的訪問(wèn)效率,系統(tǒng)支持主存空間訪問(wèn)可以配置成可Cache 和不可Cache 兩種屬性。但為了降低編程復(fù)雜度,這種屬性通常對(duì)用戶透明,用戶程序主存數(shù)據(jù)默認(rèn)都是可Cache 的,編譯器或者運(yùn)行時(shí)可以利用主存不可Cache 空間結(jié)合DMA 進(jìn)行訪存優(yōu)化,減少維護(hù)Cache 一致性的開(kāi)銷。

    2.4 面向E 級(jí)超算的眾核處理器片上存儲(chǔ)層次結(jié)構(gòu)類型總結(jié)

    表2 以眾核計(jì)算核心的視角總結(jié)了各主流眾核處理器的片上存儲(chǔ)層次。富岳A64FX 同構(gòu)眾核采用兩級(jí)Cache 結(jié)構(gòu),MT-3000 異構(gòu)融合架構(gòu)中的加速域 采用純SPM 結(jié) 構(gòu),而NVIDIA、Intel、AMD的面向E 級(jí)系統(tǒng)的GPU 以及申威的最新一代異構(gòu)眾核處理器SW260x0 均采用SPM+Cache 混合的結(jié)構(gòu)??梢?jiàn)目前的HPC 主流眾核片上存儲(chǔ)層次結(jié)構(gòu)并不單一,這是由多種因素導(dǎo)致的,不同處理器面向的應(yīng)用領(lǐng)域需求不同,追求的設(shè)計(jì)目標(biāo)不同,各自的技術(shù)積累也不同。但是,從橫向的比較和各處理器自身縱向的發(fā)展趨勢(shì),以及從HPC 與數(shù)據(jù)科學(xué)、機(jī)器學(xué)習(xí)不斷融合發(fā)展帶來(lái)的應(yīng)用需求變化來(lái)看,SPM+Cache 的混合結(jié)構(gòu)最可能成為今后HPC 眾核處理器片上存儲(chǔ)層次設(shè)計(jì)的主流選擇。另外,從表2 最后一列的分析可以看出,雖然主流GPU 都采用了的SPM+Cache 結(jié)構(gòu),但每一款GPU的SPM 和Cache 的功能細(xì)節(jié)也各有不同,例如NVIDIA H100 的L1 只能為Cache CUDA 對(duì)應(yīng)的Local 空間的數(shù)據(jù),Global 空間數(shù)據(jù)只能緩存進(jìn)L2 Cache。H100 還支持同一TBC 內(nèi)SM 遠(yuǎn)程訪問(wèn)共享SPM,新的存儲(chǔ)層次特性也給HPC 編程帶來(lái)新挑戰(zhàn)。而AMD MI250X GPU 支持的CU 私有SPM和L1 DCache 是SIMD 單元專用的,如果HPC 程序員要深度優(yōu)化程序性能,則必須要充分利用好這些存儲(chǔ)結(jié)構(gòu)特性。

    表2 主流眾核處理器片上存儲(chǔ)層次Table 2 On-chip storage hierarchy on mainstream manycore processor

    3 面向眾核片上存儲(chǔ)層次的優(yōu)化技術(shù)

    眾核是構(gòu)建E 級(jí)超算系統(tǒng)的主要計(jì)算節(jié)點(diǎn),為E級(jí)超算系統(tǒng)提供主要算力來(lái)源。如何充分發(fā)揮眾核處理器片上眾多核心的計(jì)算能力,一方面需要硬件層面開(kāi)展眾核片上存儲(chǔ)結(jié)構(gòu)設(shè)計(jì),另一方面需要面向E 級(jí)計(jì)算的應(yīng)用和軟件開(kāi)展相關(guān)優(yōu)化技術(shù),以充分利用眾核片上存儲(chǔ)層次特點(diǎn)。當(dāng)前面向E 級(jí)的主流眾核處理器采用的片上存儲(chǔ)層次結(jié)構(gòu)多樣,各具優(yōu)缺點(diǎn),本文從多級(jí)Cache、SPM 以及SPM+Cache 混合3 種結(jié)構(gòu)分別探討當(dāng)前主流軟硬件設(shè)計(jì)與優(yōu)化技術(shù)。

    3.1 多級(jí)Cache 的優(yōu)化

    隨著片上核心數(shù)量的不斷增大,片上互連結(jié)構(gòu)日趨復(fù)雜,要使Cache 結(jié)構(gòu)在片上眾多核心競(jìng)爭(zhēng)的環(huán)境下能繼續(xù)高效工作,必須解決好兩方面問(wèn)題:共享末級(jí)Cache(LLC[11])的高效管理問(wèn)題和Cache 一致性問(wèn)題。

    3.1.1 LLC 的管理策略

    眾核片上典型的Cache 結(jié)構(gòu)為:核心私有一級(jí)Cache,L2 Cache 作為L(zhǎng)LC 由所有核心共享。在眾核環(huán)境下LLC 會(huì)同時(shí)接收來(lái)自于多個(gè)線程的訪存請(qǐng)求,而線程間的數(shù)據(jù)訪問(wèn)特征有可能各不相同,大量并發(fā)線程間的相互干擾會(huì)影響LLC 的使用效率。因此,如何管理片上LLC 資源是影響眾核處理器訪存性能的關(guān)鍵因素。傳統(tǒng)LLC 的替換與插入策略的研究已經(jīng)比較成熟,包括使用LRU 作為替換策略的插入策略、動(dòng)態(tài)插入策略(DIP)、線程感知的DIP 策略,還有后續(xù)提出的靜態(tài)重引用間隔預(yù)測(cè)策略、動(dòng)態(tài)重引用間隔預(yù)測(cè)策略和線程感知的動(dòng)態(tài)重引用間隔預(yù)測(cè)策略。但是,這些傳統(tǒng)的LLC 管理策略在眾核系統(tǒng)下已無(wú)法高效工作。文獻(xiàn)[17-20]提出了在CMP的競(jìng)爭(zhēng)線程之間動(dòng)態(tài)劃分共享LLC 的策略,文獻(xiàn)[21-22]則進(jìn)一步考慮了多線程間的共享數(shù)據(jù)行為的影響,并將其融入到LLC 的管理策略。上述技術(shù)大多針對(duì)同構(gòu)眾核系統(tǒng),而文獻(xiàn)[23-24]針對(duì)異構(gòu)眾核系統(tǒng)開(kāi)展了LLC 管理策略研究。文獻(xiàn)[25]在前人基礎(chǔ)上提出了適合片上異構(gòu)眾核處理器的動(dòng)態(tài)LLC 替換策 略DIPP(Dynamic Insertion/Promotion Policy)。該替換策略核心思想是通過(guò)限制GPU 核能夠獲取的Cache 資源,達(dá)到降低程序間的線程干擾,降低程序的失效率和提升系統(tǒng)整體性能的目的。

    隨著CMP 上處理器核心數(shù)量的不斷增大,非一致Cache 體系結(jié)構(gòu)(NUCA)成為當(dāng)前CMP 上大容量低延遲Cache 的主要組織結(jié)構(gòu)。NUCA 結(jié)構(gòu)中的LLC 由于容量較大,通常分為多個(gè)Cache 存儲(chǔ)體(bank),所有bank 置于芯片中央,通過(guò)NoC 在邏輯上組織成一個(gè)被所有核心共享的統(tǒng)一的末級(jí)Cache。NoC 是組織LLC 的重要互連方式。隨著NoC 規(guī)模的擴(kuò)大,一方面,網(wǎng)絡(luò)延遲正在成為緩存訪問(wèn)延遲的主要來(lái)源,另一方面,不同核心之間的通信距離和延遲差距正在增大。這種差距會(huì)嚴(yán)重導(dǎo)致網(wǎng)絡(luò)延遲不平衡,加劇緩存訪問(wèn)延遲的不均勻程度,進(jìn)而惡化系統(tǒng)性能。文獻(xiàn)[26]分別針對(duì)無(wú)沖突延遲和競(jìng)爭(zhēng)訪問(wèn)提出了非一致性存儲(chǔ)映射和非一致鏈路分布的設(shè)計(jì)方法。文獻(xiàn)[27]提出了一種新的面向公平性和位置感知的NUCA 方案,以緩解網(wǎng)絡(luò)延遲不平衡的問(wèn)題,實(shí)現(xiàn)更統(tǒng)一的緩存訪問(wèn)。文獻(xiàn)[28]提出一種位置敏感的LLC,通過(guò)感知Cache 行位置和利用GPGPU 的核間通信來(lái)緩解GPGPU 片上網(wǎng)絡(luò)瓶頸,減少訪存延遲。文獻(xiàn)[29]將LLC 淘汰的Cache 塊保存在NoC 的路由器上,當(dāng)有核心請(qǐng)求這塊數(shù)據(jù)時(shí),由NoC 直接響應(yīng)這個(gè)請(qǐng)求。這些研究都充分利用了NoC 的特點(diǎn),為基于NoC 的NUCA 數(shù)據(jù)訪問(wèn)的不平衡性問(wèn)題提供了多種解決方案。

    3.1.2 眾核片上緩存一致性協(xié)議

    當(dāng)多個(gè)處理器核的高速緩存保持從主存獲取的同一數(shù)據(jù)對(duì)象的本地副本時(shí),即使其中任何一個(gè)高速緩存修改了同一數(shù)據(jù)對(duì)象的值,也會(huì)導(dǎo)致高速緩存和共享內(nèi)存之間共享數(shù)據(jù)的全局視圖不一致,這個(gè)問(wèn)題稱為緩存一致性。在眾核處理器中,為管理共享緩存中的讀寫操作,以便在所有處理器核心之間維護(hù)一致性,而執(zhí)行的一組特定規(guī)則稱為緩存一致性協(xié)議。緩存一致性協(xié)議可分為目錄協(xié)議[30]和監(jiān)聽(tīng)協(xié)議[31]兩大類,基本作用是發(fā)現(xiàn)共享數(shù)據(jù)塊的狀態(tài)。傳統(tǒng)的緩存一致性協(xié)議設(shè)計(jì)復(fù)雜,開(kāi)銷較大,無(wú)法滿足眾核處理器共享存儲(chǔ)系統(tǒng)追求高效、低功耗、可擴(kuò)展的設(shè)計(jì)目標(biāo)。國(guó)際上有大量面向片上眾核系統(tǒng)低開(kāi)銷可擴(kuò)展的Cache 一致性協(xié)議研究。文獻(xiàn)[32]提出了可擴(kuò)展到千核規(guī)模的融合一致性Cache,在統(tǒng)一物理內(nèi)存的基礎(chǔ)上,采用兩級(jí)目錄的融合一致性設(shè)計(jì)。文獻(xiàn)[33]提出了SCD 框架,它依賴于高效的高關(guān)聯(lián)緩存實(shí)現(xiàn)一個(gè)可擴(kuò)展到數(shù)千個(gè)內(nèi)核的單級(jí)目錄,精確地跟蹤共享集,并且產(chǎn)生可忽略的目錄引起的失效。國(guó)內(nèi)也有許多研究者在Cache一致性協(xié)議功能擴(kuò)展和性能優(yōu)化等方面開(kāi)展了研究。文獻(xiàn)[34]針對(duì)共享存儲(chǔ)系統(tǒng)提出一種沒(méi)有目錄和間接訪問(wèn)、沒(méi)有眾多一致性狀態(tài)和競(jìng)爭(zhēng)的簡(jiǎn)單高效的Cache 一致性協(xié)議VISU,解決了制約目錄協(xié)議可擴(kuò)展性的目錄開(kāi)銷問(wèn)題。文獻(xiàn)[35-36]提出了一種具有表達(dá)力的、區(qū)域高效的目錄緩存設(shè)計(jì),并分別在64、256 核系統(tǒng)上進(jìn)行了評(píng)估。文獻(xiàn)[37-38]提出了基于時(shí)間的硬件一致性協(xié)議,即庫(kù)緩存一致性(Library Cache Coherence,LCC),它通過(guò)暫停對(duì)緩存塊的寫入,直到它們被所有共享者自失效為止,從而實(shí)現(xiàn)順序一致性。

    當(dāng)可伸縮一致性在通用芯片多處理器中得到廣泛研究時(shí),GPU 體系結(jié)構(gòu)具有一系列新的挑戰(zhàn)。引入傳統(tǒng)的目錄協(xié)議會(huì)給現(xiàn)有的GPU 應(yīng)用程序增加不必要的一致性通信開(kāi)銷。此外,這些協(xié)議增加了GPU 存儲(chǔ)系統(tǒng)的驗(yàn)證復(fù)雜性。文獻(xiàn)[39]描述了一個(gè)基于時(shí)間的GPU 一致性框架,稱為時(shí)間一致性(TC),它利用系統(tǒng)中的全局同步計(jì)數(shù)器來(lái)開(kāi)發(fā)一個(gè)簡(jiǎn)化的GPU 一致性協(xié)議。同步計(jì)數(shù)器使所有一致性轉(zhuǎn)換(如緩存塊失效)能夠同步發(fā)生,從而消除所有一致性通信和協(xié)議爭(zhēng)用,達(dá)到減少GPU 一致性的開(kāi)銷的目的。文獻(xiàn)[40]提出CPU-GPU 硬件緩存一致性不要同時(shí)實(shí)現(xiàn)統(tǒng)一共享內(nèi)存和高GPU 性能的思想。文獻(xiàn)[41]針對(duì)CPU-GPU 系統(tǒng)開(kāi)發(fā)了異構(gòu)系統(tǒng)一致性協(xié)議(HSC),以緩解GPU 內(nèi)存請(qǐng)求的一致性帶寬效應(yīng)。文獻(xiàn)[42]提出一種軟件輔助硬件一致性(SAHC)來(lái)擴(kuò)展Cache 一致性以適應(yīng)異構(gòu)處理器。系統(tǒng)軟件通常具有跨CPU 和GPU 共享數(shù)據(jù)模式的語(yǔ)義知識(shí)。這些高級(jí)知識(shí)可用于在異構(gòu)處理器中跨面向吞吐量的GPU 和對(duì)延遲敏感的CPU 提供緩存一致性。SAHC 提出了一種混合軟硬件機(jī)制,該機(jī)制僅在需要時(shí)才使用硬件一致性,同時(shí)使用軟件知識(shí)過(guò)濾掉大部分不必要的一致性通信。

    從上述研究可以看出,眾核上的Cache 一致性協(xié)議設(shè)計(jì)工作圍繞可擴(kuò)展和低開(kāi)銷的設(shè)計(jì)目標(biāo),針對(duì)典型數(shù)據(jù)共享模式和眾核處理器體系結(jié)構(gòu)開(kāi)展軟硬件協(xié)同設(shè)計(jì),提出的大多是一種有裁減的弱一致性協(xié)議。

    3.2 SPM 結(jié)構(gòu)的優(yōu)化

    SPM 結(jié)構(gòu)的特點(diǎn)是完全將數(shù)據(jù)的布局與傳輸交給軟件,面向SPM 結(jié)構(gòu)的眾核程序的編程與優(yōu)化,必須解決好程序數(shù)據(jù)的布局與傳輸兩個(gè)關(guān)鍵環(huán)節(jié)。

    3.2.1 基于SPM 的堆??臻g管理

    在只有SPM 結(jié)構(gòu)的眾核系統(tǒng)上,軟件必須顯式地管理每個(gè)核心本地SPM 的進(jìn)出數(shù)據(jù),包括全局?jǐn)?shù)據(jù)、堆空間數(shù)據(jù)、??臻g數(shù)據(jù)的管理。當(dāng)核心對(duì)應(yīng)的所有數(shù)據(jù)都能在本地SPM 上放下時(shí),程序執(zhí)行效率非常高。當(dāng)核心程序?qū)?yīng)的數(shù)據(jù)總量超出本地SPM容量時(shí),必須進(jìn)行顯式數(shù)據(jù)管理才能使SPM 發(fā)揮出較好的性能。對(duì)全局?jǐn)?shù)據(jù)而言,用戶通??梢詫⑵浞譃閮煞N,一種是可以完整放入SPM 中的變量,另一種是無(wú)法放入SPM 空間的全局?jǐn)?shù)據(jù)(數(shù)據(jù)容量超過(guò)SPM 空間,或者SPM 空間已滿),用戶可以在程序需要數(shù)據(jù)之前通過(guò)DMA 引入數(shù)據(jù)到SPM,在不再需要數(shù)據(jù)之后將其返回到全局內(nèi)存。當(dāng)程序的全局?jǐn)?shù)組總?cè)萘砍^(guò)SPM 空間時(shí),程序員需要考慮哪些數(shù)組布局在SPM,哪些數(shù)組布局在主存并通過(guò)DMA 進(jìn)行傳輸。對(duì)于C/C++程序來(lái)說(shuō),全局靜態(tài)數(shù)據(jù)是可以在編譯時(shí)確定容量的,而其棧空間或者堆空間數(shù)據(jù)其大小是可變的,并且與輸入數(shù)據(jù)有關(guān),用戶通常沒(méi)有有效的方式來(lái)管理堆數(shù)據(jù)和棧數(shù)據(jù)。由于堆棧數(shù)據(jù)的訪問(wèn)是程序中內(nèi)存訪問(wèn)的重要部分,因此必須有高效的堆棧管理手段來(lái)發(fā)揮SPM 的性能。

    基于SPM 的存儲(chǔ)層次對(duì)程序員提出了很高的要求,需要對(duì)算法和片上存儲(chǔ)層次特點(diǎn)都有非常準(zhǔn)確的把握,而且程序?qū)崿F(xiàn)起來(lái)工作量也很大。為此,國(guó)際上開(kāi)展了許多面向軟件管理的存儲(chǔ)層次的編譯優(yōu)化研究,一類是面向SPM 的靜態(tài)分配技術(shù)[43-45],通過(guò)采用啟發(fā)式或者整數(shù)線性規(guī)劃等算法,確定哪些數(shù)據(jù)布局進(jìn)SPM,哪些放置在主存中,還有一類是動(dòng)態(tài)分配技術(shù)[46-49],包括軟件Cache 技術(shù)、基于圖著色算法的SPM 分配與自動(dòng)DMA 技術(shù)等。文獻(xiàn)[50-54]專門針對(duì)眾核系統(tǒng)面向SPM 的堆棧空間管理開(kāi)展了長(zhǎng)期深入的研究。在??臻g管理方面,他們最初提出了局存容量受限的眾核處理器上的棧數(shù)據(jù)管理的方案[50],支持在SPM 上的任意空間上管理任何任務(wù)的棧數(shù)據(jù),并正確管理所有棧指針,但是其管理開(kāi)銷較高,并且管理沒(méi)有得到優(yōu)化。在此技術(shù)上,文獻(xiàn)[54]對(duì)棧數(shù)據(jù)管理做了進(jìn)一步優(yōu)化,并減少其管理開(kāi)銷。在堆空間管理方面,文獻(xiàn)[51-52]提出了一種半自動(dòng)的、可擴(kuò)展的堆數(shù)據(jù)管理框架,通過(guò)提供簡(jiǎn)單直觀的編程接口來(lái)幫助用戶實(shí)現(xiàn)自動(dòng)管理堆數(shù)據(jù),隱藏了軟件緩存堆數(shù)據(jù)的復(fù)雜性。之后又在文獻(xiàn)[53]中進(jìn)一步提出一種全自動(dòng)、高效的堆數(shù)據(jù)管理框架,通過(guò)一個(gè)編譯和運(yùn)行時(shí)系統(tǒng),實(shí)現(xiàn)在有限的本地內(nèi)存眾核體系結(jié)構(gòu)中自動(dòng)管理無(wú)限大小的堆數(shù)據(jù)。文獻(xiàn)[48]在上述框架基礎(chǔ)上進(jìn)一步開(kāi)展了3 種通用優(yōu)化,使得堆管理框架更加高效。

    3.2.2 基于SPM 的片上數(shù)據(jù)移動(dòng)

    為了更好地發(fā)揮SPM 的結(jié)構(gòu)優(yōu)勢(shì),HPC 領(lǐng)域的主流眾核系統(tǒng)片上存儲(chǔ)結(jié)構(gòu)設(shè)計(jì)通常會(huì)提供DMA來(lái)加強(qiáng)SPM 與主存間數(shù)據(jù)的傳輸效率,同時(shí)利用NoC 實(shí)現(xiàn)片上眾多核心間SPM 的互連,增大單核心可見(jiàn)的SPM 容量。SPM 的容量、DMA 訪存帶寬、NoC 通信帶寬都是眾核系統(tǒng)實(shí)現(xiàn)核心數(shù)據(jù)高效傳輸與訪問(wèn)的重要資源,復(fù)雜的眾核應(yīng)用需要通過(guò)對(duì)核心數(shù)據(jù)進(jìn)行合理高效的劃分、映射與傳輸,才能實(shí)現(xiàn)上述片上資源的高效率用。比如通過(guò)循環(huán)變換等技術(shù)可以增加SPM 數(shù)據(jù)的重用率,減少數(shù)據(jù)進(jìn)出SPM的頻率。核心間基于NoC 的數(shù)據(jù)傳輸帶寬要比從主存到SPM 的DMA 帶寬高很多,可以結(jié)合應(yīng)用訪存特征合理分配數(shù)據(jù)與任務(wù),使得多核心間可通過(guò)遠(yuǎn)程內(nèi)存訪問(wèn)(Remote Memory Access,RMA)命令或者RLD/RST 共享SPM 上的數(shù)據(jù),發(fā)揮NoC 的優(yōu)勢(shì),提升SPM 數(shù)據(jù)在片上的重用率,這些方法都可以降低應(yīng)用程序?qū)蝹€(gè)核心的SPM 容量需求,緩解DMA訪存壓力。上述工作對(duì)用戶編程和編譯器優(yōu)化提出了巨大挑戰(zhàn)。國(guó)際上有許多工作圍繞SPM 結(jié)構(gòu)特點(diǎn)開(kāi)展高效性與好編程性的研究,從不同角度提出了許多面向SPM 高效編程的優(yōu)化方案、框架、運(yùn)行時(shí)庫(kù)及編譯優(yōu)化,為用戶開(kāi)發(fā)高效的SPM 眾核程序提供編程優(yōu)化指導(dǎo)或者編譯優(yōu)化支持。

    文獻(xiàn)[55]針對(duì)SPM 用于多線程應(yīng)用程序時(shí)遇到的挑戰(zhàn),提出了協(xié)調(diào)數(shù)據(jù)管理(CDM),這是一個(gè)編譯時(shí)框架,可以自動(dòng)識(shí)別共享/私有變量,并將這些變量及這些變量的拷貝(如果需要)一起放置到合適的片內(nèi)或片外存儲(chǔ)器中,同時(shí)考慮NoC 爭(zhēng)用。另外,還開(kāi)發(fā)了一個(gè)精確的整數(shù)線性規(guī)劃(ILP)公式以及一個(gè)迭代的、可伸縮的算法,用于將多線程應(yīng)用程序中的數(shù)據(jù)變量放置在多個(gè)核心SPM 上。文獻(xiàn)[56]提出了一個(gè)用于優(yōu)化異構(gòu)多核體系結(jié)構(gòu)上SPM 和主存之間的多線程數(shù)據(jù)傳輸?shù)木幾g時(shí)框架MSDTM,該框架通過(guò)應(yīng)用程序分析和依賴性檢查來(lái)確定數(shù)據(jù)傳輸操作的分配,并通過(guò)所設(shè)計(jì)的性能模型來(lái)推導(dǎo)數(shù)據(jù)傳輸?shù)淖罴蚜6?。文獻(xiàn)[57]提出一個(gè)名為UniSPM 的框架,使用低開(kāi)銷的遞歸啟發(fā)式算法來(lái)解決NP-hard 的映射問(wèn)題,為基于NoC 的SPM多核多階段多線程應(yīng)用程序提供統(tǒng)一的線程和數(shù)據(jù)映射框架。文獻(xiàn)[58]針對(duì)眾核平臺(tái)存儲(chǔ)層次特點(diǎn)提出了一種基于運(yùn)行支持庫(kù)的OpenMP 數(shù)組私有化的編譯優(yōu)化方法,對(duì)可重用數(shù)據(jù)進(jìn)行私有化,充分利用有限的SPM 資源減少DMA 通信,以提升程序執(zhí)行效率。文獻(xiàn)[59]針對(duì)“神威·太湖之光”超算系統(tǒng)上支持DMA 的SPM 存儲(chǔ)結(jié)構(gòu),提出了一種基于帶寬感知的OpenCL 程序循環(huán)平鋪方法,對(duì)傳統(tǒng)的僅帶寬和僅容量考慮的循環(huán)平鋪方法進(jìn)行了改進(jìn),有效提升了帶寬利用率和SPM 重用。文獻(xiàn)[60]基于SPM提出了一種新的GPU 資源管理方法EXPARS,通過(guò)將寄存器文件擴(kuò)展到SPM 內(nèi)存,通過(guò)未被充分利用的SPM 來(lái)支持額外的寄存器分配,在邏輯上提供了一個(gè)更大的寄存器文件。文獻(xiàn)[61]針對(duì)申威眾核處理器核心的SPM 存儲(chǔ)結(jié)構(gòu)特點(diǎn),開(kāi)展了基礎(chǔ)函數(shù)庫(kù)的內(nèi)存延遲優(yōu)化,提出一種有效的自動(dòng)數(shù)據(jù)轉(zhuǎn)換方法和一種表查找方法來(lái)優(yōu)化基礎(chǔ)函數(shù)庫(kù)的訪存延遲。

    3.3 SPM+Cache 混合結(jié)構(gòu)下的全視角優(yōu)化

    相比純Cache 或者純SPM 結(jié)構(gòu)的存儲(chǔ)層次,混合結(jié)構(gòu)具有兩者的優(yōu)勢(shì)。原本SPM 結(jié)構(gòu)下最棘手的程序堆??臻g管理問(wèn)題在混合結(jié)構(gòu)下可以得到很好的緩解——堆??臻g可以直接放在主存,基于Cache 進(jìn)行緩存。而原本引起嚴(yán)重Cache 沖突的數(shù)據(jù)可以優(yōu)先布局進(jìn)SPM,或者利用DMA 加SPM 緩沖的方式避免數(shù)據(jù)進(jìn)入Cache。因此,混合結(jié)構(gòu)下存儲(chǔ)層次的優(yōu)化,重點(diǎn)在于如何聯(lián)合Cache 和SPM 開(kāi)展全視角優(yōu)化以獲得一加一大于二的性能。

    國(guó)際上針對(duì)混合結(jié)構(gòu)的片上存儲(chǔ)層次優(yōu)化開(kāi)展了一系列研究。文獻(xiàn)[62]利用DMA 實(shí)現(xiàn)SPM 數(shù)據(jù)的動(dòng)態(tài)換入換出,從而避免了傳統(tǒng)動(dòng)態(tài)優(yōu)化技術(shù)利用數(shù)據(jù)Cache 實(shí)現(xiàn)數(shù)據(jù)搬運(yùn)可能造成的對(duì)數(shù)據(jù)Cache 的污染問(wèn)題,并利用類似虛擬內(nèi)存管理的思想,將部分動(dòng)態(tài)申請(qǐng)且頻繁引起數(shù)據(jù)Cache 沖突的堆棧數(shù)據(jù)和堆數(shù)據(jù)的連續(xù)虛地址空間重定位到SPM中獲得系統(tǒng)性能和能耗的收益。文獻(xiàn)[63]研究了6 種不同的SPM 分配算法來(lái)優(yōu)化混合SPM 緩存結(jié)構(gòu)的性能或能耗,并通過(guò)實(shí)驗(yàn)證明感知Cache 的SPM分配比不感知Cache 的SPM 分配具有更好的性能或能耗的結(jié)論。文獻(xiàn)[4]認(rèn)為在混合體系結(jié)構(gòu)中可將頻繁使用的數(shù)據(jù)分配給SPM 以進(jìn)行快速檢索來(lái)降低對(duì)緩存的訪問(wèn)頻率,因此可將混合SPM+Cache 的Cache 行更主動(dòng)地置于低功耗模式,在不顯著降低性能的情況下減少更多的泄漏能量。文獻(xiàn)[57]提出一種編譯器技術(shù)將應(yīng)用程序數(shù)據(jù)對(duì)象映射到SPMCache,以整個(gè)程序優(yōu)化為目標(biāo),根據(jù)SPM 和Cache大小以及應(yīng)用程序的動(dòng)態(tài)需求進(jìn)行數(shù)據(jù)分配。文獻(xiàn)[64]提出一種Cache 和SPM 參數(shù)可動(dòng)態(tài)配置的可重構(gòu)片上統(tǒng)一存儲(chǔ)器(RcfgMem),通過(guò)動(dòng)態(tài)調(diào)整Cache 的關(guān)聯(lián)度和SPM 的容量等片上存儲(chǔ)資源的參數(shù),可以適應(yīng)不同的應(yīng)用程序或同一應(yīng)用程序在不同階段對(duì)存儲(chǔ)層次的需求,在不損失系統(tǒng)性能的前提下達(dá)到降低系統(tǒng)能耗的目的。文獻(xiàn)[65]通過(guò)一種軟硬協(xié)同的方式支持SPM 到主存的映射,實(shí)現(xiàn)SPM與主存間的自動(dòng)隱式數(shù)據(jù)傳輸,減輕用戶顯式調(diào)用DMA 傳遞數(shù)據(jù)的編程負(fù)擔(dān),并通過(guò)支持重映射和利用SPM 壓縮存儲(chǔ)機(jī)制提升SPM 空間的利用率,同時(shí)又避免了Cache 結(jié)構(gòu)下訪問(wèn)TLB 所需的延遲開(kāi)銷和Cache 不命中開(kāi)銷。

    4 未來(lái)展望

    在眾核體系結(jié)構(gòu)日益復(fù)雜的趨勢(shì)下,眾核片上存儲(chǔ)層次的設(shè)計(jì)與優(yōu)化使用面臨許多關(guān)鍵技術(shù)挑戰(zhàn),需要開(kāi)展軟硬件協(xié)同設(shè)計(jì)。下文從硬件、軟件和算法3 個(gè)層面的未來(lái)發(fā)展進(jìn)行展望:

    1)硬件設(shè)計(jì)層面。隨著E 級(jí)系統(tǒng)眾核處理器上集成的核心數(shù)量越來(lái)越多,片上互連能力越來(lái)越復(fù)雜,傳統(tǒng)的多級(jí)Cache 或者SPM 將無(wú)法滿足新興眾核結(jié)構(gòu)上存儲(chǔ)層次的發(fā)展需求,眾核處理器片上存儲(chǔ)層次會(huì)越來(lái)越豐富。從存儲(chǔ)層次結(jié)構(gòu)發(fā)展趨勢(shì)上來(lái)看,Cache 與SPM 混合的結(jié)構(gòu)因其更好的應(yīng)用適應(yīng)性而更可能成為未來(lái)眾核片上存儲(chǔ)層次的主流結(jié)構(gòu)。而如何基于片上網(wǎng)絡(luò)實(shí)現(xiàn)眾核心間SPM 的數(shù)據(jù)共享、數(shù)據(jù)批量傳輸以及可擴(kuò)展的Cache 橫向一致性都將是未來(lái)片上存儲(chǔ)結(jié)構(gòu)的重要研究方向??傊?,面向超大規(guī)模E 級(jí)系統(tǒng)的眾核處理器片上存儲(chǔ)層次的設(shè)計(jì)需圍繞系統(tǒng)的整體設(shè)計(jì)目標(biāo)開(kāi)展,未來(lái)非常有必要針對(duì)大量目標(biāo)應(yīng)用場(chǎng)景進(jìn)行數(shù)據(jù)訪問(wèn)特征分析,并結(jié)合片外內(nèi)存訪問(wèn)帶寬、片上網(wǎng)絡(luò)結(jié)構(gòu)、片上可用面積、整體功耗控制等條件開(kāi)展平衡設(shè)計(jì)。

    2)軟件設(shè)計(jì)層面。從編譯優(yōu)化角度來(lái)看,可以對(duì)應(yīng)用程序核心數(shù)據(jù)容量、數(shù)據(jù)訪問(wèn)粒度和重用情況開(kāi)展分析,并建立好的訪存收益評(píng)估模型,為數(shù)據(jù)分配合理的實(shí)際地址空間(SPM 或者主存)以及為主存數(shù)據(jù)訪問(wèn)選擇高效的傳輸方式(DMA、RMA、Cache 模式);在編程語(yǔ)言設(shè)計(jì)角度,可以為專家級(jí)用戶提供顯式的存儲(chǔ)層次描述手段,方便用戶直接控制核心數(shù)據(jù)的布局與傳輸,或者指導(dǎo)編譯器開(kāi)展相應(yīng)的編譯優(yōu)化與程序變換工作,從而提升眾核片上存儲(chǔ)層次的易編程性與高效性;在編程框架設(shè)計(jì)角度,可以針對(duì)領(lǐng)域應(yīng)用特征,開(kāi)發(fā)多平臺(tái)統(tǒng)一的編程框架接口,底層針對(duì)不同的眾核處理器片上存儲(chǔ)層次特點(diǎn),開(kāi)展具體的優(yōu)化實(shí)現(xiàn),從而提升應(yīng)用面向不同片上存儲(chǔ)結(jié)構(gòu)的性能可移植性;在運(yùn)行時(shí)支撐庫(kù)的角度,應(yīng)該針對(duì)目標(biāo)平臺(tái)的存儲(chǔ)層次特點(diǎn)開(kāi)展領(lǐng)域典型算子庫(kù)的設(shè)計(jì)與實(shí)現(xiàn),為應(yīng)用程序開(kāi)發(fā)提供平臺(tái)相關(guān)的高效API 接口支撐。

    3)算法與程序設(shè)計(jì)層面。就HPC 用戶層面而言,需要針對(duì)具體的目標(biāo)平臺(tái)上的存儲(chǔ)層次特點(diǎn),結(jié)合應(yīng)用核心運(yùn)算特征,開(kāi)展高效的眾核并行算法模型設(shè)計(jì)。并行算法模型需要根據(jù)應(yīng)用的核心任務(wù)數(shù)據(jù)量和訪問(wèn)特征研究線程間無(wú)關(guān)并行、線程間流水并行、基于共享內(nèi)存或片上通信的多線程協(xié)同并行、主從異步并行等方式,再基于具體的并行模式開(kāi)展數(shù)據(jù)布局與傳輸方案設(shè)計(jì)。而應(yīng)用程序級(jí)的優(yōu)化則需要結(jié)合目標(biāo)平臺(tái)眾核片上存儲(chǔ)層次的具體特點(diǎn),比如SPM 的容量大小、共享范圍、訪問(wèn)帶寬和延時(shí),再進(jìn)一步結(jié)合程序核心循環(huán)的數(shù)據(jù)訪問(wèn)方式、數(shù)據(jù)量等開(kāi)展數(shù)據(jù)布局優(yōu)化、SPM 數(shù)據(jù)重用優(yōu)化、批量數(shù)據(jù)傳輸優(yōu)化、基于SPM 緩沖的數(shù)據(jù)傳輸與計(jì)算重疊優(yōu)化等,從而使應(yīng)用程序能夠更好地發(fā)揮出存儲(chǔ)層次的優(yōu)勢(shì),提升應(yīng)用效率。

    5 結(jié)束語(yǔ)

    本文闡述了3 類常見(jiàn)的片上存儲(chǔ)結(jié)構(gòu)及特點(diǎn),分析了國(guó)際主流GPU、同構(gòu)眾核及國(guó)產(chǎn)眾核等面向主流E 級(jí)超算系統(tǒng)的眾核處理器片上存儲(chǔ)層次設(shè)計(jì)現(xiàn)狀與發(fā)展趨勢(shì),并總結(jié)了國(guó)際上的存儲(chǔ)層次設(shè)計(jì)與優(yōu)化相關(guān)軟硬件技術(shù)的研究現(xiàn)狀。后續(xù)將針對(duì)具體的應(yīng)用領(lǐng)域,對(duì)應(yīng)用獲得的性能與片上存儲(chǔ)結(jié)構(gòu)類型及各種結(jié)構(gòu)參數(shù)的定量關(guān)系方面開(kāi)展研究,從而為眾核片上存儲(chǔ)層次的軟硬件設(shè)計(jì)給出更具體的參考依據(jù)。

    猜你喜歡
    處理器一致性架構(gòu)
    基于FPGA的RNN硬件加速架構(gòu)
    關(guān)注減污降碳協(xié)同的一致性和整體性
    公民與法治(2022年5期)2022-07-29 00:47:28
    注重教、學(xué)、評(píng)一致性 提高一輪復(fù)習(xí)效率
    IOl-master 700和Pentacam測(cè)量Kappa角一致性分析
    功能架構(gòu)在電子電氣架構(gòu)開(kāi)發(fā)中的應(yīng)用和實(shí)踐
    汽車工程(2021年12期)2021-03-08 02:34:30
    LSN DCI EVPN VxLAN組網(wǎng)架構(gòu)研究及實(shí)現(xiàn)
    基于事件觸發(fā)的多智能體輸入飽和一致性控制
    一種基于FPGA+ARM架構(gòu)的μPMU實(shí)現(xiàn)
    Imagination的ClearCallTM VoIP應(yīng)用現(xiàn)可支持Cavium的OCTEON? Ⅲ多核處理器
    ADI推出新一代SigmaDSP處理器
    汽車零部件(2014年1期)2014-09-21 11:41:11
    赫章县| 滦平县| 泰来县| 含山县| 东山县| 盐津县| 汉阴县| 扎兰屯市| 卢龙县| 青河县| 崇义县| 石棉县| 神木县| 榕江县| 从化市| 梅河口市| 家居| 乌海市| 昌平区| 镇江市| 榆林市| 略阳县| 彩票| 巩留县| 开鲁县| 巫溪县| 横山县| 田林县| 双牌县| 日照市| 新平| 上杭县| 阿克陶县| 兴宁市| 固始县| 富蕴县| 桐梓县| 亳州市| 峨山| 灵山县| 山东|