多數人每當談到記憶體,唯一想到的就是 DRAM。此外大家也非常清楚,若將 DRAM、3D NAND SSD、HDD、Tape 等儲存媒體一起做比較,顯而易見的,DRAM 不僅是其中效能最快、低遲最低的模範生,且領先其他三者的差距相當大。
然而在一般情況下,DRAM 的購置成本高於 SSD、HDD 或 Tape,價格並不親民,所以使用者在採買DRAM時,通常也不會選購太大的容量。但其實不少使用者對 DRAM 頗感好奇,不明白它的選擇性為何那麼低,譬如你用的這顆處理器只能搭配 DDR4,你就只能選 DDR4,別無其他選項。
相形之下,儲存領域便顯得百花齊放,有 SATA HDD、SAS HDD、SAS SSD、NVMe SSD、SCM SSD 多種媒體可選用,甚至能在同一套系統中配置多個選項,為 Hot Data、Warm Data 及 Cold Data 建立分層(Tiering)架構。反觀 Memory DIMM 卻僅能配置單一媒介,情況截然不同。
但其實 Memory 的配置模式未必只能如此單調,可安裝 DRAM 以外的介質,甚至還能做到類似儲存的 Tiering 效果,讓使用者既能降低總體持有成本,又能維持不俗的效能;而這個極具顛覆性意涵的記憶體技術,源自 Intel® Optane™ 持續性記憶體(Intel Optane Persistent Memory;PMEM)。
基本上,Intel® Optane™ 代表一種迥異於傳統記憶體或儲存媒介的材質,而 Intel® 利用這個材質,打造出兩個適用企業資料中心的產品線,一是儲存,另一則是本篇要談的記憶體。
綜觀 PMEM 的特色,在於它可相容於 DDR4 記憶體插槽,也代表它擁有和 DDR DRAM 一樣的 Form Factor,適用於同樣的 Bus。
如同前述,長期以來記憶體給人們的選擇極少,而「Tiering」這個已常見用於儲存領域的技術,在記憶體領域幾乎未曾聽聞。直到象徵「記憶體與儲存裝置 25 年來首次重大突破」的 Intel® Optane™ 技術問世,才一舉突破過往侷限,讓 Tiering 不僅能用在儲存領域,也能開始用於記憶體領域。
怎麼做到記憶體 Tiering?你可以把過去純 DRAM 的單一配置格局,調整為「DRAM+PMEM」,至於 DRAM 與 PMEM 之間的配比,大致落在 1:4 或1:8,端看你對價格或效能的要求。也許有人好奇,為何配比的選項如此有限?此乃因為,記憶體是非常關鍵的元件,其健康與否,對於整個系統影響至鉅,既然如此,它的插法當然需要事先被測試過,而 1:4 和 1:8 正是少數通過測試的插法。
持續性記憶體的外型與一般 DDR4 頗為相似,但其容量從 128GB 起跳,往上還有 256GB、512GB 等選擇,與 DDR DRAM 多為小容量的規格相比,著實大異其趣。更重要的,DRAM 價格頗為浮動,時高時低,但整體而言,PMEM 的價位都較 DRAM 來得實惠。
此外難免有人質疑,一條記憶體內含 128GB 大容量,反倒引來莫大風險,假設這顆壞掉,豈不麻煩?事實上 Intel® 在設計 PMEM 時,就特意擺放多達 11 個顆粒,超過常見的 8 顆格局;關於多出來的部份,其中 2 顆用於 ECC(Error-Correcting Codes),剩餘的那 1 顆則作為「備件」(Spare Part),萬一哪個 Cell 出狀況,便可立即將它 Disable 掉,由備件取而代之,藉以達到高可用性。反觀一般 DRAM,都未曾見過這樣的設計。
值得一提,PMEM 上面有一個小 CPU,負責支援兩種不同運作模式,包括記憶體模式(Memory Mode)、應用程式導引模式(App Direct Mode);此處將針對使用頻率較高的記憶體模式做介紹,至於相對複雜、且涉及軟體改寫需求的應用程式導引模式,這邊暫且略而不提。
為何要把 PMEM 當成系統記憶體來使用?其實並不難理解,係因 DRAM 相對昂貴,大家不會把容量買到太大。把 PMEM 當作系統記憶體時仍需要 DDR4 ,但只要留一小部份當做快取即可。因相關運作都在 CPU 內部硬體執行,所以對 OS 或軟體都具透通性,也就是它們根本不知 PMEM 的存在。
眾所皆知,CPU 內部有 Cache L1、L2及L3,現在可將 DRAM 當成 L4,然後交由 PMEM 作為系統記憶體就。由此可見,記憶體模式相當單純,試想你過去若想買 1TB 記憶體,多數時候真的礙於價格而難以下手,但今天已不需再繼續掙扎,可比照 Disk 納入不同選擇組合,採取「256GB DDR4+1TB PMEM」或「128GB DDR4+1TB PMEM」配置,好處是原本 CPU 的 Cache 僅有 L1、L2 與 L3,基本上不算大,如今以適當容量的 DRAM 當作 Cache,有助在加大系統記憶體容量時仍維持系統效能。
但事實上有些客戶不見得一昧追求高效能,反而更在意成本。對於關注成本高低的用戶來說,一旦善用「記憶體 Tiering」,可望在價格合理性(PMEM 算是便宜的系統記憶體)、效能水準之間求取平衡,也稱得上是理想解方。
當然如果今天你的主要應用場景為 HPC,對記憶體、CPU 都要求越快越好,此時理應維持純 DDR4 配置;至於一般應用場景、特別是虛擬化環境,就很適合採用記憶體 Tiering 模式。
也有人問到,除虛擬機外,作為系統記憶體的 PMEM 能否支援容器?當然可以。當你在用 DDR4 時,不會特別詢問它能否支援虛擬機或容器,如今面對 PMEM 亦是相同道理,主因在於「Hardware Transparency」,程式究竟跑在 CPU、Cache 或 PMEM,OS 根本不知,全靠 CPU 安排與調整;這也是硬體快取優於軟體快取的地方,唯有程式不受影響、無需改寫,才能與快取功能相得益彰,算是最理想的狀態。