探索閃存內存如何應對“內存墻”的可行性_第1頁
探索閃存內存如何應對“內存墻”的可行性_第2頁
探索閃存內存如何應對“內存墻”的可行性_第3頁
探索閃存內存如何應對“內存墻”的可行性_第4頁
探索閃存內存如何應對“內存墻”的可行性_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第第頁探索閃存內存如何應對“內存墻”的可行性Source:Shao-PengYang,MinjaeKim,SanghyunNam,JuhyungPark,Jin-yongChoi,EyeeHyunNam,EunjiLee,SungjinLee,BryanS.Kim,OvercomingtheMem(or)yWallwithCXL-EnabledS(SD)s,July10,2023

本文探討了使用廉價閃存內存(flashmemory)在新型互連技術(如CXL)上以應對“內存墻”的可行性。我們探索了CXL啟用的閃存設備的設計空間,并展示了緩存和預取等技術可以幫助緩解有關閃存性能和壽命的擔憂。我們通過使用真實世界的應用程序跟蹤數據展示,這些技術使得CXL設備的估計壽命至少為3.1年,并能在微秒級內滿足68-91%的內存請求。我們分析了現有技術的局限性,并提出了系統(tǒng)層面的變更來實現使用閃存的(DRAM)級性能。

01.

引言

在計算系統(tǒng)中,計算能力和內存容量需求之間的日益不平衡發(fā)展成為一個稱為“內存墻”的挑戰(zhàn)[23,34,52]。圖1基于Gholami等人的數據[34],并擴展了更多的(最新)數據[11,30,43],展示了自然語言處理(NLP)模型的快速增長(每年14.1倍),遠遠超過了內存容量的增長(每年1.3倍)?!皟却鎵Α逼仁宫F代數據密集型應用,如數據庫[8,10,14,20]、數據分析[1,35]和(機器學習)(ML)[45,48,66],要么意識到它們的內存使用情況[61],要么實現用戶級內存管理[66]以避免昂貴的頁面交換[37,53]。因此,在透明處理應用程序的情況下突破“內存墻”是一個活躍的研究領域;已經積極探索了一些方法,如創(chuàng)建面向ML系統(tǒng)[45,48,61],構建內存解(耦合)框架[36,37,52,69]和設計新的內存架構[23,42]。

圖1:NLP應用程序內存需求的趨勢[11,30,34,43]。每年(參數)數量增加了14.1倍,而(GPU)的內存容量每年只增長了1.3倍

我們探討了是否可以使用閃存內存來突破“內存墻”——這是一種通常用于存儲的內存技術,因為其具有高密度和容量擴展性[59]。雖然DRAM只能擴展到幾GB的容量,但基于閃存的固態(tài)硬盤(SSD)可達到TB級的容量[23],足夠大以應對“內存墻”的挑戰(zhàn)。閃存內存作為主內存的使用得益于最近出現的諸如CXL[3]、Gen-Z[7]、CCIX[2]和OpenCA(PI)[12]的互連技術,它們允許通過lo(ad)/store指令直接由(CPU)訪問PCIe(PeripheralComponentInterconnectExpress)設備。此外,這些技術承諾具有出色的可擴展性,因為可以通過(交換機)連接更多的PCIe設備[13],而不像用于DRAM的DIMM(雙列直插式內存模塊)。

然而,將閃存內存作為CPU可訪問的主內存面臨著三個主要挑戰(zhàn)。

首先,內存請求與閃存內存之間存在顆粒度不匹配。這導致了在閃存上需要存在明顯的流量放大,除了已有的閃存間接性需求[23,33]之外:例如,將64B的緩存行刷新到CXL啟用的閃存,將導致16KiB的閃存內存頁面讀取、64B更新和16KiB的閃存程序寫入到另一個位置(假設16KiB的頁面級映射)。

其次,閃存內存的速度仍然比DRAM慢幾個數量級(幾微秒對比幾納秒)[5,24]。因此,雖然兩種技術之間的峰值數據傳輸速率相似[4,15],但長時間的閃存內存延遲阻礙了持續(xù)性性能,因為數據密集型應用最多只能容忍微秒級的延遲[53]。

最后,閃存內存具有有限的耐久性,在經過多次寫入后會磨損[24,44]。這限制了內存技術的可用性,因為超過耐久性限制的閃存內存塊會表現出不可靠的行為和高錯誤率[44]。

我們通過探索設計選擇來解決上述閃存內存的挑戰(zhàn),特別是與緩存和預取相關的選項,從而使得CXL啟用的閃存設備(或稱為CXL-flash)能夠克服“內存墻”。盡管之前的研究已經探討了多個CXL設備的可擴展性方面[36,42],并且已經證明了CXL-flash的可行性[9,42],但據我們所知,我們是第一個對CXL-flash設備的設計選擇以及現有優(yōu)化技術的有效性進行深入開源研究的工作。由于設計空間很大,我們首先在第4節(jié)中探索了CXL-flash(硬件)設計,然后在第5節(jié)中對詳細策略和(算法)進行評估和分析。我們發(fā)現可以使用真實應用程序的內存跟蹤數據設計CXL-flash,使得68-91%的請求可以在微秒級內實現延遲,并具有至少3.1年的估計壽命。在探索各種設計和策略的同時,我們進行了七項觀察,這些觀察共同表明現代預取算法不適合預測CXL-flash的內存訪問模式。更具體地說,虛擬地址到物理地址的轉換使得現有的預取器無法足夠有效地執(zhí)行。為了解決這個問題,我們探索了從內核向CXL-flash傳遞內存訪問提示來進一步提高性能。本工作的貢獻如下:

我們開發(fā)了一種新型工具,用于收集應用程序的物理內存訪問軌跡,并用這些軌跡(模擬)了CXL-flash的行為。內存跟蹤工具和CXL-flash模擬器的代碼都可以在(/spypaul/MQ(Sim)_CXL.git)上獲取。

通過使用合成工作負載,我們展示了將各種系統(tǒng)設計技術(如緩存和預?。┘傻紺XL-flash中,有潛力顯著減少延遲,同時突顯了優(yōu)化的機會。(第4節(jié))

使用真實世界的工作負載,我們分析了當前預取器的局限性,并提出了用于未來CXL-flash的系統(tǒng)級變更,以實現接近DRAM的性能,特別是設備的子微秒級延遲。(第5節(jié))

02.

背景

在本節(jié)中,我們首先描述了CXL(Compu(te)ExpressLink)[3]作為基于PCIe的內存一致性互連技術(包括Gen-Z[7]、CCIX[2]和OpenCAPI[12])所帶來的機遇。然后,我們討論了在CXL中使用閃存內存的挑戰(zhàn)。2.1CXL帶來的機遇CXL是一種建立在PCIe之上的新型互連協(xié)議,將CPU、加速器和內存設備集成到單一計算域中[42]。這種集成的主要好處有兩個。

首先,它允許CPU和PCIe設備之間進行一致的內存訪問。這減少了通常需要在CPU和設備之間進行數據傳輸時所需的同步開銷。

其次,CXL設備的數量可以很容易地進行擴展:通過CXL交換機,可以連接另一組CXL設備到CPU。

在CXL支持的三種類型的設備中,對于內存擴展的Type3設備對本工作是感興趣的。Type3設備公開了主機管理的設備內存(HDM,host-manageddevicememory),CXL協(xié)議允許主機CPU通過load/store指令直接操作設備內存[3]。雖然CXL目前只考慮DRAM和PMEM作為主要的內存擴展設備,但由于CXL的一致性內存訪問特性[42],使用SSD也是可能的。此外,基于閃存的SSD的高容量和更好的擴展性,通過3D堆疊[59]和在一個單元中存儲多位[24],可以有效地解決現代數據密集型應用所面臨的“內存墻”問題。受之前關于CXL的工作的啟發(fā)[36,42],本文研究了使用閃存內存作為CXL內存擴展設備的可行性。2.2閃存的挑戰(zhàn)我們討論以下三個閃存的特點,這使得將其用作系統(tǒng)的主內存具有挑戰(zhàn)性。粒度不匹配。閃存不是隨機訪問的:其數據以頁粒度寫入和讀取,每個頁的大小約為幾千字節(jié)[33],導致大量的流量放大。此外,頁不能被覆蓋寫入。相反,必須首先擦除一個包含數百個頁的塊,然后才能寫入數據到已擦除的頁[33]。這種受限的(接口)導致任何64B緩存行刷新通過讀取-修改-寫入操作產生大量的寫放大。作為一個塊設備,其訪問粒度要大得多(4KiB)的SSD擁有更少的開銷。微秒級延遲。閃存的速度比DRAM慢幾個數量級,其讀取速度仍在幾十微秒范圍內,而較慢的(編程)和擦除操作則在幾百微秒到幾千微秒之間[5,24]。此外,閃存的延遲還取決于其單元技術[24]。例如,表1中所示,隨著每個單元存儲的位數增加,從SLC(單級單元)到TLC(三級單元),延遲也會增加。超低延遲(ULL)閃存是SLC的一種變體,以性能為代價提高了密度[46,76]。然而,即使是ULL技術,其速度仍比DRAM慢幾個數量級。作為一個塊設備,微秒級的延遲是可以容忍的,因為存儲棧中存在軟件開銷。然而,對于直接使用load/store指令訪問的內存設備來說,微秒級延遲是一個挑戰(zhàn)。

表1:內存技術特性概述

有限的耐久性。編程和擦除操作期間施加在閃存上的高電壓會慢慢使單元失效,使它們隨著時間的推移無法使用[44,72]。存儲器制造商規(guī)定了耐久性極限作為一個指導,表示閃存塊可以被擦除的次數。這個限制也取決于閃存技術,如表1所示。雖然這仍然是一個軟限制,閃存超過限制后仍然可以繼續(xù)使用[72],但是磨損的塊表現出不可靠的行為,并且不能保證正確存儲數據[44]。由于應用程序級和內核級的緩存和緩沖,SSD的塊接口的寫入量減少,因此當前的耐久性限制在SSD的壽命內通常是足夠的。然而,作為內存設備,頻繁的內存寫入會使閃存內存快速變得無法使用。我們注意到,雖然這些閃存的挑戰(zhàn)在存儲領域中也存在,但是它們由SSD的內部固件處理。然而,對于CXL-flash,由于時間尺度更細,這些挑戰(zhàn)應該由硬件來解決,這使得實現靈活和優(yōu)化的算法變得困難。因此,我們預期將閃存內存從存儲領域移動到內存領域時,這些挑戰(zhàn)會加劇。

03.

工具和方法

為了理解CPU到CXL設備的物理內存訪問行為,我們使用頁面錯誤事件構建了一個物理內存跟蹤工具(第3.1節(jié))。然后,我們通過與一組虛擬內存跟蹤(第3.2節(jié))進行比較,展示了這個工具的必要性。本工作中生成的工具和數據可供公眾使用。3.1跟蹤內存訪問主內存和CXL-flash通過物理內存地址進行訪問。不幸的是,據我們所知,沒有公開可用的工具能夠在沒有硬件修改的情況下跟蹤最后一級緩存(LLC)和內存(控制器)之間的物理內存事務。跟蹤CPU中的load/store指令是不夠的,因為(1)它只收集虛擬地址訪問,(2)最終對CXL-flash的訪問被緩存層次結構過濾掉。

圖2:收集物理內存跟蹤的工作流程。我們使用Valgrind收集虛擬內存跟蹤,并在緩存中模擬其行為。同時,我們捕獲頁面故障事件以跟蹤頁面表的更新,并用此生成物理內存跟蹤我們通過結合來自Valgrind[19,57]的內存跟蹤和頁面錯誤事件(信息)來跟蹤物理內存訪問。圖2說明了這個工作流程。如圖頂部路徑所示,我們使用Valgrind對應用程序進行l(wèi)oad/store指令的工具化,并使用其緩存模擬器(Cachegrind)來過濾對內存的訪問。更具體地說,我們修改了Cachegrind以收集由LLC缺失或替換引起的內存訪問。然而,Cachegrind產生的這些內存訪問仍然是虛擬地址,因此需要虛擬到物理(V2P)映射信息來生成物理內存跟蹤。為此,如圖2底部路徑所示,我們收集應用程序運行時由頁面錯誤引起的頁表更新。我們修改安裝頁面表項的內核函數(do_anonymous_page()和do_set_pte()),并將目標應用程序的PID的V2P轉換存儲在/proc文件系統(tǒng)中。這捕獲了應用程序執(zhí)行過程中頁面表更新的動態(tài)特性,并且開銷很小。我們將來自Valgrind的虛擬訪問和頁面表更新結合起來生成物理內存跟蹤。3.2虛擬內存與物理內存訪問我們使用基于預取技術的前期工作[25,56]中的五個合成應用程序來展示我們的物理內存跟蹤工具。所收集的跟蹤特性總結如表2所示。我們收集了前2000萬次內存訪問:請注意這些不是load/store指令,而是LLC和內存之間的內存事務。

表2:合成工作負載特性概述

圖3:顯示五個合成應用程序(哈希映射、矩陣乘法、最小堆、隨機訪問和步幅訪問)的訪問模式的散點圖。頂行(圖3a–3e)顯示虛擬地址訪問,第二行(圖3f–3j)顯示物理訪問。最后一行(圖3k–3o)顯示連續(xù)訪問之間差異的累積分布函數。我們觀察到由于地址轉換,物理內存訪問與虛擬內存訪問不同圖3a-3e(圖3的第一行)繪制了這五個合成跟蹤的虛擬頁號(VPN,virtualpagenumber)。我們可以觀察到虛擬地址訪問模式與我們對應用程序的期望相匹配。然而,如圖3f-3j(圖3的第二行)所示,相應的物理幀號(PFN)并不類似于VPN。我們在圖3k-3o(圖3的最后一行)中顯示了連續(xù)訪問之間的差異(?,delta)。黑色虛線是虛擬地址的delta,而灰色實線是五次迭代的物理地址的delta,其中兩次迭代是在運行其他應用程序時運行的,以增加內存利用率。我們做出兩個觀察。首先,虛擬訪問模式(黑色虛線)平均具有較小的delta值。然而,物理訪問模式(灰色實線)可能具有非常大的delta值,這是由于虛擬到物理地址轉換所致。其次,灰色實線很少彼此重疊,突顯物理內存模式是動態(tài)的,并取決于影響內存分配的各種運行時因素。因此,物理和虛擬地址之間的觀察到的不匹配可能受到動態(tài)因素的影響,如系統(tǒng)的內存利用率。為了證明捕獲物理內存跟蹤的必要性,我們通過使用虛擬地址和物理地址跟蹤作為輸入來測量CXL-flash的性能。CXL-flash的配置是具有8個通道和每個通道8個路的閃存后端以及512MiBDRAM緩存,并實現Next-N-line預取器[41](更多詳細信息見第4節(jié))。我們測量了五個合成應用程序的內存請求在小于1微秒的延遲下的百分比,并在表3中報告了結果。使用虛擬內存跟蹤生成了一個過于樂觀的結果,相較于運行物理內存跟蹤的結果,更多的請求在1微秒以下完成。虛擬地址和物理地址之間的誤差顯著較高:所有的矩陣乘法實驗的誤差都超過了25%。隨機和步幅訪問負載的誤差率較低,使得無論是虛擬還是物理尋址,都很難或者太容易預測訪問模式。

表3:使用虛擬和物理地址跟蹤的合成應用程序在CXL閃存中的亞微秒延遲百分比。我們重復五次物理跟蹤生成,其中第4和第5次具有更高的系統(tǒng)內存利用率(因此,內存布局更加碎片化)。我們計算虛擬跟蹤性能相對于物理跟蹤的誤差,并用黃色(黃色)標記超過10%的錯誤,用紅色(紅色)標記超過25%的錯誤。減輕地址轉換過程中信息的變化的一種技術是利用大頁面,這可以顯著減少地址轉換的數量[54,58]以保留內存訪問模式。然而,這種方法只能部分減少對系統(tǒng)的影響,并且地址轉換是不可避免的。隨著應用程序內存需求的快速增長(如圖1所示,年均增長率為14.1倍),在幾年內,大頁面將面臨與較小頁面相同的挑戰(zhàn)。因此,我們決定保持配置的通用性,以探索CXL-flash的設計選項。

04.

CXL-flash的設計空間

我們探索構建CXL-flash的設計空間,特別是其中的硬件模塊;我們稍后在第5節(jié)中評估算法和策略。為了模擬硬件,我們基于MQSim[68]及其擴展MQSim-E[49]構建了一個CXL-flash模擬器,并使用五個合成應用程序的物理內存跟蹤(表2)來評估設計選項的效果。我們的CXL-flash的整體架構如圖4所示,并在表4中展示了初始配置。本節(jié)中,我們回答以下研究問題。

緩存在提高性能方面的效果如何?(第4.1節(jié))

如何有效地減少閃存內存流量?(第4.2節(jié))

預取在隱藏長閃存內存延遲方面的效果如何?(第4.3節(jié))

CXL-flash的合適閃存技術和并行性是什么?(第4.4節(jié))

圖4:CXL閃存的體系結構。

表4:§4中CXL閃存的初始配置。

4.1緩存對性能的影響

我們首先探索在閃存前添加DRAM緩存的效果。緩存主要有兩個作用。

首先,它通過從更快的DRAM中提供頻繁訪問的數據來提高CXL-flash的性能。

其次,它在緩存命中時減少對閃存的整體流量。

圖5:隨著DRAM緩存大小變化的64B讀寫請求的平均訪問延遲(圖5a)和閃存內存流量(圖5b)。通常情況下,緩存可以提高性能并減少對閃存的流量。然而,即使有足夠大的緩存,平均延遲仍然遠高于DRAM,這是由于內存訪問的高強度造成的。圖5定量展示了使用緩存的好處。我們將緩存大小從0變化到8GiB,并測量物理內存訪問的平均延遲(圖5a)和發(fā)送給后端的閃存內存請求的間隔時間(圖5b)。當沒有緩存時,由于排隊延遲,平均延遲遠高于閃存的讀取和編程延遲。即使閃存后端的配置是每個通道32個通道和每個通道32個路的豐富并行性,但它仍不足以處理具有短間隔時間的內存請求。添加緩存顯著減少了對閃存后端的流量,并改善了整體性能。然而,我們觀察到圖5a中,矩陣乘法和最小堆的平均延遲仍遠高于DRAM的延遲,盡管這些工作負載的內存占用小于緩存。這是由于短間隔時間的請求導致了超負荷的閃存后端獲取數據(圖5b)。這個實驗表明,僅僅使用緩存是不足以降低CXL-flash的延遲的,我們需要額外的輔助結構來減少對閃存的流量。

4.2減少閃存內存流量

內存訪問以64B的粒度進行,而閃存后端以4KiB為單位進行尋址。因此,在緩存未命中時,將從閃存中獲取4KiB的數據,并且屬于同一4KiB的后續(xù)64B緩存未命中將在閃存讀取正在進行時產生額外的閃存內存讀取請求。這種情況在具有高空間局部性的內存訪問中非常常見,并且由于更長的閃存延遲而加劇。我們將其稱為重復讀取,圖6說明了哈希圖,矩陣乘法和堆工作負載中重復讀取的嚴重性:超過90%的閃存讀取是重復讀??!

圖6:物理內存幀的閃存讀取次數。實心條表示總的讀取次數,而陰影條表示重復讀取次數。重復讀取是對尚未完成的讀取請求的讀取請求。

圖7:使用(實線)和不使用(虛線)MSHR的延遲分布。受到CPU緩存的啟發(fā),我們向CXL-flash中添加了一組MSHR(missstatusholdingregiste(rs))[29,47],如圖4所示。MSHR跟蹤當前未完成的閃存內存請求,并從單個閃存內存讀取服務多個64B內存訪問。我們注意到,在SSD中MSHR很少見:在存儲領域中,軟件棧合并具有重疊地址的塊I/O,因此不需要底層設備實現MSHR。然而,對于CXL-flash,沒有軟件層來執(zhí)行此任務,因為它直接從LLC接收內存事務。我們觀察到,圖7中的MSHR顯著降低了長尾延遲,特別是對于具有大量重復讀取的三個工作負載。我們還觀察到,通過添加MSHR,對于其他兩個工作負載(隨機和步幅),也會有輕微的改進。然而,MSHR只能減少閃存內存流量,并不能通過在需要數據之前將數據帶入緩存來主動提高緩存命中率。

4.3從閃存預取數據

預取(Prefetching)是一種隱藏較慢技術長延遲的有效技術。通常,預取器在需要未命中或預取命中時獲取額外的數據。為了了解這種技術的有效性,我們在CXL-flash中實現了一個簡單的Next-N-line預取器[41],如圖4所示。該預取器有兩個可配置的參數:度和偏移量。度控制獲取的額外數據量,而偏移量決定了觸發(fā)地址的預取地址。換句話說,度參數表示預取器的侵略性,偏移量控制預取器提前獲取數據的距離。

圖8:具有不同預取器配置的CXL閃存的性能。

(X,Y)表示Next-N-line預取器的度和偏移。圖8顯示了不同度和偏移量對預取器的影響。在一個以4KiB頁數為單位的(X,Y)符號中,X表示度,Y表示偏移量。如圖8a所示,增加度或者預取器的侵略性通常會提高性能。即使是小的度數1,也會將矩陣乘法工作負載中的小于一微秒請求的比例從64%提高到76%,凸顯了CXL-flash的預取的必要性。然而,改進效果會達到平臺,進一步增加度數可能只會污染緩存。另一方面,增加偏移量會導致兩種不同的行為,這取決于工作負載。對于哈希圖,矩陣乘法和最小堆工作負載,增加偏移量從4增加到16時性能首先會有所改善。然而,偏移量為64時性能下降,因為它預取了太遠的數據。隨機工作負載對偏移量不敏感,除非它足夠大,而步幅工作負載則隨著偏移量的增加逐漸改善。

4.4探索閃存技術和并行性

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論