閱讀119 返回首頁    go 機器人


人工智能時代,數據中心需要新型內存

來源:本文由半導體行業觀察自semiengineering,作者Ann Steffora Mutschler,謝謝。

隨著所要處理、存儲和訪問的數據量的持續攀升,數據中心之中也開始出現 DRAM 擴展和替代選擇。這對數據中心的架構有很大的影響,因為其現在的目標是讓處理過程盡可能地靠近數據並減少每個地方的延遲。

在馮·諾依曼計算架構中,內存一直以來都是一個關鍵部分。現今數據中心中通常使用的內存是基於 DDR4 的 DIMM,還有一些直接連接到 CPU 的傳統 DDR3。但對於數據中心中的許多新應用(包括人工智能、機器學習和深度學習)而言,這些內存都太慢了。所以人們正在努力研究如何提升數據存取的速度,同時又不會給電力預算帶來太大的影響。

相比於之前的 DRAM 版本,DDR5 將能帶來顯著的速度提升。內存製造商已經堅持了很多年,說 DDR4 之後不會有後續了。DDR4 曾經伴隨著智能手機和其它移動設備的興起為我們帶來了流視頻和幾乎無處不在的圖像處理。據固態技術協會(JEDEC)稱,DDR5 的帶寬和密度將達到 DDR4 的兩倍,並且也有更好的信道效率(channel efficiency)。

但 DDR5 本身很可能是不夠的。在多個市場中由各種互連設備中的傳感器生成的數據的量正在爆發式增長,因此為了理解這些數據,所需的計算能力也在水漲船高。機器學習/人工智能/深度學習也在助長對其它新型內存的需求;不管是單獨的應用方麵,還是作為互連設備的擴展方麵都是如此。

GDDR5 是選擇之一,這是一種同步圖形隨機存儲存儲器(SGRAM/synchronous graphics random-access memory)。GDDR5 是為顯卡、遊戲機和高性能計算而開發的。比如,英偉達就在其顯卡中使用了這項技術來助力深度學習和機器學習應用。

“如果你看看機器學習和深度學習,基本上也就兩件事——一個必須訓練的數據集和得到的模型,該模型然後可部署用於推理。”Rambus 高級產品營銷經理 Sarvagya Kochak 說,“數據的訓練需要非常密集的計算資源,這也是重型 GPU 非常適合這類應用的原因。相比於 CPU,GPU 更適合低精度的、浮點型的運算。FPGA 也可以使用,而且確實有些公司在用。它們在功耗上麵表現更好。具體用哪種很大程度上取決於所要開發的模型。”

所有這些架構都有一個共同之處:需要處理和存儲大量數據,並且需要非常快的存取。到目前為止,還沒有一種能夠滿足所有需求的內存類型;在數據中心中,這讓人類進行了一些非同尋常的技術組合。

“人們在嚐試做人工智能、深度學習和超級計算,我們正開始看到這些應用,這些方麵對 HBM2(高帶寬內存 2)的興趣很大。”Cadence 的 IP Group 的產品營銷組總監 Marc Greenberg 說,“HBM2 器件的一個堆棧就能為你提供每秒 Tb 級的內存帶寬,這是非常大的。但使用我們現在已有的技術,你隻能在單一一個 HBM2 堆棧中存儲 4 GB。從廣泛領域的許多方麵看,這都算不上很多數據,所以你沒法在 HBM 中存儲非常大的數據庫。但你也許可以在 HBM 中存儲大型數據庫的索引。這種架構可能就隻有幾個 GB 的 HBM,從而可以非常快速的存取;而更大量的內存可以安置在 DRAM 總線上——不管是用 DRAM 還是 NVM(非易失性內存)。所以你實際上在這裏使用了兩種方案。”

圖 1:HBM2 配置,來自 SK Hynix

盡管尋求更高帶寬和更大容量的內存的大致趨勢依舊沒有改變,但實現這一目標的路徑則在發生著變化。

“HBM2 技術提供了非常非常高速度的帶寬,目前正被用於圖形應用、網絡交換機應用和超級計算/高性能計算應用。”Greedberg 說,“在主流的服務器中你還看不到它們的身影。主流服務器非常看重容量。如果你想在這些服務器上運行大量虛擬機或類似某種巨型數據庫應用的東西,那麼你就需要在靠近 CPU 的地方安置大量存儲。在靠近 CPU 的地方安置內存是很重要的。你可以將許多 TB 的數據存儲在 SSD 或磁盤上,但那就有點遠了,訪問這些數據需要花去大量時間。因此,現在的一個趨勢是盡量在 DRAM 總線上安置更多內存,這可以通過 DDR5 實現,或者也許可以將一些閃存放在 DRAM 總線上。如果你想在 DRAM 總線上放一些閃存,你有一些不同的方法可選,包括 NVDIMM-N 協議。”

局限和解決方案

但是,每一次變化都有需要克服的技術難題。比如,可以直接連接到 CPU 的 DRAM 的量是有限的,這對數據吞吐量和整體處理性能而言都是一個大問題。

“那是第一個問題。”Kochak 說,“那基本上一直以來都是最大的難題,因為 DRAM 器件的擴展速度沒有真正跟上。三星、SK海力士和美光等大型內存製造商難以實現越來越高的密度。目前 4 Gb 和 8 Gb器件正在大量生產出貨。16 Gb 器件應該會在一兩年內上市,但這會帶來一個非常顯著的難題,因為從 CPU 的角度看,CPU 速度在過去十年中都沒有顯著提升。它們或多或少已經持平了,因為晶體管速度不能再超過當前已有的水平了。”

為了提升處理速度,CPU 供應商在處理器中增加了更多核心。但這種做法也有自己的問題。

“這種方法的問題是 CPU 中有一個集成的內存控製器,並連接到了 DRAM DIMM。”Kochak 說,“更老的 CPU 有兩個內存控製器。現在則有四個內存控製器。不久後就會有六個內存控製器,而且可以預計未來每個 CPU 甚至可能會有八個內存控製器。內存控製器越來越多的原因是需要送入所有核心中的數據越來越多了,所以如果內存控製器太少,數據就沒法從 DRAM 送入這些核心。如果這些核心不處理數據,那就沒有使用它們的意義。隨著核心數的增長,DRAM 和係統之間就將需要更多帶寬。”

因為帶寬增大了,所以就需要大量內存。但隨著帶寬持續增長,所需的內存還會更多。他說:“看看內存一直以來的增長速度以及每個 CPU 連接的內存的增長速度,情況並不好。”

英特爾已經在嚐試使用 3D XPoint 來解決其中一些容量相關的問題了。3D XPoint 是一種相變內存,應該既能提供閃存一樣的容量,又能帶來 DRAM 一樣的性能。

Kochak 說:“從用例的角度看,隻是在內存信道上放一個非易失性內存(NVM)對係統而言毫無用處。你必須要能使用這個設施,並且讓主機係統、平台和應用都知道這個非易失性內存,讓你能用它做些炫酷的事情。”

持久型內存(persistent memory)

這就是需要考慮 NVDIMM 的地方了。NVDIMM 是指非易失性雙列直插式存儲模塊(non-volatile DIMM),它既能作為標準 DRAM 工作,也能有閃存那樣的持久性。一個典型的 NVDIMM 模塊包含 DRAM、閃存、控製邏輯和一個獨立電源;其中獨立電源的作用是在出現意外斷電事件、係統崩潰或計劃中的停機時,內存中的關鍵信息能得以保留。所以它是一種持久型內存器件。

圖 2:NVDIMM 模塊,來自 HPE

NVDIMM-N 是將閃存放在了 DRAM 總線上用作防備斷電事件的備份機製,Greenberg 說:“很多服務器都需要能在斷電發生後恢複狀態。如果你想象這是某種具有某些財務能力的機器並且在斷電時有一項交易剛好開始,那麼它就必須要能恢複並且記得當時正在進行的工作並完成這筆交易。也有其它一些相似的技術能夠完成這個任務,比如帶有備用電池的 DIMM——當發生斷電時,電池會將 DRAM 中的數據保存到磁盤上。”

Kochak 說盡管英特爾、美光、索尼、Viking Technology、三星和 Netlist 等多家公司都已經在出貨 NVDIMM 了,但 SNIA(網絡存儲工業協會)還在努力推進這一標準,另外還誕生了另一個為持久型內存的應用而開發編程模型的組織。

隨著時間的推移,他相信應用開發者將會弄清楚使用持久性內存的方式。“我們今天的很多軟件都是圍繞一個關鍵開發的——DRAM 是易失性的,你會失去 DRAM 中的數據,所以在設計你的係統時,總是需要考慮故障。要做到這一點,需要做很多事情,比如設置檢查點和記錄日誌。如果你不必做大量這些操作,你就可以使用同樣的架構更快速有效地找到解決問題的方法以及提升應用的性能。然後你不需要為應付易失性係統而進行其它操作,因為這個係統的內存是非易失性的。”

但這算不上是標準的即插即用方法。當涉及到在 NVDIMM 中的設計以及連接到 CPU 或 SoC 時,每個人的做法都不一樣。

“每個人都想做得不同,這或多或少反映 了每種 SoC 都有所不同。”Greenberg 說,“每種 SoC 的內存需求都或多或少不同,所以在各個方麵都有很大的不同。它們支持 DIMM 還是固定在板上?DIMM 支持多少信道?速度多快?什麼類型?需要支持什麼功能?每個人的需求都有點不一樣,每個人都想在尺寸和功耗上麵進行優化。讓人們能靈活選擇是很重要的。”

選擇適合 CPU 的內存的主要考慮之一是內存帶寬需求的持續增長。他說:“常常有人要求我們幫助他們推高頻率的界限,以及盡其所能地試圖提升內存總線的頻率。另外還有一個顯著的需求是增加可以連接在總線上的 DRAM 的量。在數據中心企業存儲空間中,使DRAM 總線速度更快的新方法有兩種。一是使用 DDR5 而非 DDR4。這是實現目標的主流方法。將你的內存管道從 DDR4 改成 DDR5。如果你確實需要在容量方麵得到提升,你可能就需要看看 NVDIMM-P 了。”

會有用嗎?

使用先進內存設計係統可不是一件簡單的事情。西門子旗下 Mentor 的仿真部門的存儲產品專家 Ben Whitehead 說他花了大量時間與公司們談論他們的方法和工具,以便創造先進內存。

“NVDIMM 同時包含兩種技術——首先包含 DRAM 技術,所以它看起來就像是具有 DIMM 形式的 DRAM,但它還有非易失性的部分,不管是閃存還是什麼。如果你隻是用 SSD 硬盤這樣的閃存驅動器,那麼驗證該設計的設計和難題會比實際的設計本身更加困難,因為現在閃存的特性已經非常複雜,它會導致其中出現設計難題。你可以想出一種滿足其架構要求的架構和設計,但要真正將其體現出來,並驗證它確實在做它需要做的事,那可就極其複雜了。”

問題涉及的範圍包含垃圾回收(garbage collection)、寫入放大(write amplification)和寫入位置,因為根據你執行寫入時 NAND 閃存的狀態,可能會出現多很多的寫入。

“如果你在一個特定的地址執行寫入,如果該地址已損壞,那你就需要移動它。”Whitehead 說,“所以你就擦除那個模塊,然後將該數據寫入到一個不同的位置。這又會導致另一個會移動該模塊的擾動。所以當該主機寫入一個模塊時,你實際上有一個模塊的 8、10、16 次寫入。[So you can actually have 8, 10, 16 writes of a block just from the host writing one block]這種主機上的放大和主機造成的流量會在後端造成數量驚人的瓶頸和性能問題,而你又很難預測。”

Whitehead 解釋說,這需要一種驗證方法,以創造這些情況。“你沒有必要必須創造它們——通常這些情況會在一個驅動器運行了 6 或 8 小時之後才會發生。一旦該驅動器寫滿了幾次之後,你就會真正開始看到這些性能特征、這些瓶頸開始出現。這種設計本身並不直觀,但你可以創建管理這些功能的模塊,不管是用固件的形式,還是硬件的形式。但要測試這些模塊——隻是說 SSD 的話,行業就會麵臨非常艱難的難題。”

一種解決方案是將寫入閃存所需的東西全都用起來,並將其與 DRAM 結合在一起,讓該係統看起來就像是 DRAM。但這種做法的缺點是複雜度會翻倍。

“你確實需要在一個仿真器中查看整個係統的能力,或者一些獲取係統本身的能力,而不是將其分割成子模塊——我們可能認為這些子模塊或子係統的效果真的很好。”他說,“你必須將其放入係統之中,才能真正了解。我們可沒有時間來創造非常牢靠的、非常以 IP 為中心的、非常完美的、可以在任何係統中工作的子係統,因為時間根本不夠。我們可以創造出這種子係統,但所需的時間、金錢和開支會多得難以承受。公司需要盡可能快地將這些模塊集成到係統當中,這樣他們才能找到僅與該配置相關的真正漏洞並推出產品。這是個難題。在 NAND 閃存中存在很多模擬物理的問題,而且你必須在係統層麵上加以解決。”

總結

隨著深度學習、機器學習和人工智能等新應用的發展,數據中心也需要提升處理性能以便更快地處理更大規模的數據。為了實現服務器架構中所需的內存,內存行業正在各種不同的有趣方向上努力。在這個快速演進的領域中,生態係統越來越確定數據應該保存在什麼地方、係統應該怎樣架構以及未來的瓶頸在哪裏。

內存是當今世界的一個重要組成部分,目前還沒有任何一種單一解決方案能夠解決所有問題。

今天是《半導體行業觀察》為您分享的第1427期內容,歡迎關注。

最後更新:2017-10-16 19:31:37

  上一篇:go 人工智能將獲國家資金支持,關注這三隻業績即將爆發標的!
  下一篇:go 開門,機器人老師到了