根據半導體儲存裝置研究機構DRAMeXchange的報告指出, SSD出貨的動能時至今日仍處在高檔, 尤其是在消費級(Client)SSD市場上, 其成長動能被預期將可以延續至2020年(圖1).
圖1 SSD出貨量統計及預估
數據源: DRAMeXchange(2017)
SSD介面持續演化 PCIe擴充性大勝SATA
SSD的物理介面支援主要有Serial Advanced Technology Attachment (SATA)和Peripheral Component Interconnect Express(PCIe)兩種. 其中SATA Gen3為當前市場上最為普及的SSD傳輸介面, 其理論傳輸頻寬為6GT/s. 在過去的幾年裡, SATA Gen3的數據傳輸頻寬, 相較於傳統硬碟有明顯的優勢, 促使SSD的市佔率逐年攀升.
與此同時, NAND Flash的製程與相關技術也不斷地演化, NAND Flash和控制器的傳輸介面標準, 從過去的Legacy Mode到現在的Toggle 2.0/ONFI 4.0速度已有極大幅度的提升, 使得過去幾年最盛行的SATA Gen3, 其理論頻寬反而成為SSD發展上的一大瓶頸, PCIe SSD也就趁勢崛起.
以PCIe Gen3來說, 其理論頻寬可達8GT/s(1-lane), 除此之外, PCIe介面提供優異的擴充性, 理論傳輸頻寬會隨著通道(Lane)的數目倍增. 目前PCIe介面可以從1-lane向上擴充到16-lane, 在傳輸頻寬上可以說已經和SATA不在同一個檔次上了.
除了上述的物理介面支援演化之外, SSD與主板(Host)之間的傳輸協議, 也因應NAND Flash的快速發展, 從早前為了SATA裝置而制定的Advanced Host Controller Interface(AHCI), 逐步走向Non-Volatile Memory Express(NVMe), 表1簡單對照了AHCI vs. NVMe的主要差異.
換句話說, NVMe的傳輸協議繼PCIe介面的演化之後, 再次解放了SSD這種以NAND Flash作為儲存媒介裝置的潛能, 將SSD推向下一個世代. 隨著NVMe傳輸協議在SSD市場上的普及, 消費級PCIe SSD被預期將在2018年達到50%左右的市佔率.
在消費級SSD市場上, 有幾個主要因素可以直接影響到產品的銷售數字.
價格
一般來說, NAND Flash是整個SSD當中價格最昂貴的組件, 隨著不同廠商的SSD配置, NAND Flash的成本可以達到SSD整體物料成本(Bill of Material, BOM)的80%~95%.
然而, NAND Flash是SSD的主要儲存配置, 是不可或缺的. 因此若要節省成本以降低售價, 移除其他SSD上非必要的的組件即是一個方法.
而眾家廠商首先想到移除的對象便會是動態隨機存取記憶體(Dynamic Random Access Memory, DRAM), 粗略來看, 一顆4Gb的DRAM晶片價錢即達3~4美元左右. 顯而易見, 如果DRAM可以被移除在SSD的BOM之外, 對SSD的成本及售價來說都會有相當顯著的幫助.
功耗
對於SSD的廠商來說, 功耗會是另外一個重大的考慮, 尤其是針對目標市場是PC OEM的SSD產品來說. 一般概估來說, SSD會佔用一個可攜式設備大約5%~10%左右的功耗.
如果SSD可以降低功耗, 便可以將整體的功耗預算(Power Budget)留給其餘的零組件以及延長可攜式設備的電池壽命.
可靠度
SSD作為用戶的儲存裝置, 其數據的可靠度勢必為用戶最主要的考慮. 雖然現今的各種錯誤偵測及錯誤更正技術日漸發達, 但若能將一斷電即流失數據的DRAM移除, 便可更進一步降低用戶數據遺失或是失真的可能性.
性能
即使以上的各項因素都是SSD製造商以及用戶的主要考慮, 效能依然強力影響著消費者購買SSD的意願. 若一顆SSD沒有DRAM來作為快取(Cache)使用, 其效能勢必會受到顯著的影響, 而這也是為什麼DRAM-Less SSD如今在PCIe SSD市場並不普及的原因. 今日會購買PCIe SSD產品的消費者主要都是需要高速的訪問速度, 而移除DRAM對SSD的整體效能來說反而是打了折扣.
HMB助力DRAM-Less SSD效能改善
所幸, NVMe協會也觀察到消費級SSD市場上的這個趨勢, 在2014年提出的NVMe規格v1.2當中制定了Host Memory Buffer(HMB)這個功能用以提升DRAM-Less SSD的整體效能, 期望消費級SSD解決方案能夠更進一步地達到價格與效能之間的平衡點.
Host Memory Buffer, 顧名思義即為提供一套機制, 讓主機端(Host)可以將目前不須要用到的記憶體資源, 透過NVMe協議提供給SSD使用. 如此一來, DRAM-Less SSD便可以在本身並沒有配置DRAM的情況下, 取得額外的DRAM資源來作為快取提升效能. 當在特定情境下, SSD獲取Host額外配置的HMB資源, SSD控制器(Controller)會將那些資訊放置在這塊區域內呢? 客觀來說, 這是由各家SSD控制器內建的韌體所決定的.
然而, 考慮到以往的SSD產品實作狀況, Logical to Physical Address Translation Table(L2P Mapping Table)是最有可能被放置在HMB內的系統資訊.
簡單來說, L2P Mapping Table用來紀錄邏輯層面(Logical)的頁(Page)位置與物理層面(Physical)的頁位置之間的映像(Mapping)關係. 不論SSD須要做讀取或是寫入, 都會須要存取一定數量的L2P Mapping資訊, 因此將L2P Mapping Table放入HMB縮減訪問時間, 以提升SSD訪問速度乍看上去是相當合理的.
在實際導入HMB設計之後, DRAM-Less SSD的效能可能會如何地被影響呢? 以下是透過一個簡易計算模型(4通道無配置DRAM之SSD控制器+傳輸介面: PCIe Gen3 2-lane+3D NAND Flash)所得出的整體效能變化趨勢.
為了可以單純呈現出開啟HMB之後所造成的效能差異, 我們先假設SSD可以從Host拿到的HMB大小固定為128MB且不會被收回去. 由圖2我們可以明顯的看出在循序讀寫的操作下開啟HMB之後的效能, 並不會有太大的改善. 考慮到HMB的本質上依然是揮發性記憶體, 用來存放用戶讀寫數據的空間比例通常不會太高, 絕大部分還是作為存放L2P Mapping Table的快取(實作方式會隨著各家SSD廠商的設計而有所不同).
圖2 啟用HMB前後循序讀寫效能比較
整體效能改善不易 HMB設計有玄機
一般來說, 從RAM裡面讀取數據的時間, 遠小於從NAND Flash裡面讀取數據的時間(ns vs. us), 所以若能透過適當的演算法設計提升, 存放在HMB當中L2P Mapping Table的擊中率(Hit Rate), 便能夠一定程度地改善整體效能.
在循序讀寫的操作下, 由於用戶讀寫的數據是具有連續性的, 在邏輯層面-物理層面的映像關係也會呈現連續性分布, 因此L2P Mapping Table並不須要頻繁地被重新從NAND Flash裡面抓取到HMB當中.
換句話說, 對循序讀寫的操作來說, 因為L2P Mapping Table的Hit Rate必定很高, 須要重新抓取L2P Mapping Table的機會很低, 因此即使僅僅依靠控制器內嵌成本較高容量較小的靜態隨機存取記憶體( Static Random Access Memory, SRAM)來存放小量的L2P Mapping Table已經足夠, 這也是為什麼HMB可以存放更多Table, 對整體效能卻不會有太明顯的影響.
當用戶進行隨機讀取時, 對於SSD控制器來說, 下一筆即將要被處理的數據位置是無法預測的, 也就是說臨時存放在SRAM內部的小量L2P Mapping Table的Hit Rate相較於循序讀寫來說會大幅降低.
在此情況下, 若能夠取得額外的緩存空間存放更多的L2P Mapping Table, 藉以提升Hit Rate進而抑制須要從NAND Flash內重新抓取資訊的頻率, 便能顯著地提升隨機讀取效能.
以此簡易的計算模型來看, 即便是針對整個SSD存放空間(Full Disk)進行隨機讀取, 基於HMB造成的效能改善甚至可以達到40%. 除此之外, 我們可以觀察到另一個趨勢是: HMB所造成的效能改善幅度, 會隨著整體SSD容量上升而更加顯著(圖3).
圖3 啟用HMB前後4KB隨機讀取效能比較
這是因為當用戶進行隨機讀取時, 在測試數據足夠多的情況下, DRAM-Less SSD容量越大, 在相同的SRAM大小配置下, 存放在快取中的Mapping Table其Hit Rate會越低, 此時若能夠獲取Host釋放給SSD的HMB資源, 伴隨適當的Flash Translation Layer(FTL)架構設計可以更大程度的提升效能.
圖4顯示了基於同一個DRAM-Less SSD估測模型下, HMB對4KB數據隨機寫入的性能改善趨勢. 對於SSD控制器來說, 寫入的行為相較於讀取來說又更加的複雜.
圖4 啟用HMB前後4KB隨機寫入效能比較
除了在寫入數據時需要讀取L2P Mapping Table以外, 控制器韌體還須要修改L2P Mapping Table的內容(邏輯層面-物理層面的映像表須要做相對應修改), 並且將其存回到NAND Flash裡面, 以完成整個數據寫入的動作.
若沒有足夠的緩存空間來存放L2P Mapping Table, 在隨機寫入的情況之下控制器會需要更頻繁的存取NAND Flash區塊以取得每一筆當下欲寫入數據的L2P Mapping Table資訊.
除此之外, 一般對各家NAND Flash來說寫入數據的時間會遠大於讀取數據的時間(ms vs. us), 所以如果SSD沒有配置DRAM來作為快取使用, 隨機寫入的效能將會大幅受到影響.
如果DRAM-Less SSD其設計可以支援HMB, 進而從Host端獲取額外的DRAM資源, 便能從中獲取更加顯著的效益.
以相同的估測模型來看, 針對整個SSD存放空間(Full Disk)進行隨機寫入測試時, DRAM-Less SSD支援HMB機制, 所產生的效能提升, 甚至可以上看4~5倍.
HMB大小影響讀寫效能 SSD設計須更周全
上述的DRAM-Less SSD效能趨勢, 都是建立在Device端可以持續從Host端拿到固定128MB專屬記憶體資源的情況下所估算出來的.
然而, 實際上的HMB大小是由Host根據當下的記憶體使用狀況, 搭配SSD提出的需求所動態分配的, 如果Host端當下可以提供的記憶體資源大小, 並不符合SSD的需求, 那麼SSD便不會去使用這塊HMB.
因此在進行DRAM-Less SSD的控制器韌體設計時, 最好可以考慮到不只一種的HMB大小, 這樣一來可以提升使用HMB的機率進而優化用戶體驗.
基於相同的估測模型, 圖5顯示了當HMB的大小從0(without HMB)到1024MB 4KB隨機讀寫的計算結果.
圖5 不同HMB區塊大小對於4KB隨機讀寫效能之影響
我們可以觀察到, 雖然大致的效能趨勢隨著HMB size的增加而更好, 但是當HMB資源足夠多的時候, SSD的效能會開始趨近飽和(Saturation). 這是因為當HMB足夠多的情況下, SSD控制器可以將為了進行讀寫操作所有需要的系統資訊(包含L2P Mapping Table)放到HMB裡面.
如此一來, DRAM-Less SSD效能可被視為優化結果(理論上效能等同於原生即配置相同DRAM資源的SSD). 因此, 當SSD控制器廠商在設計韌體架構時, 須要考慮到怎樣的系統資料結構, 可以讓DRAM-Less SSD儘早地達到效能飽和點.
換句話說, 如何在DRAM-Less SSD內設計一組用於支援HMB系統資料結構, 兼顧訪問速度和記憶體資源消耗, 甚至專門優化在以統計機率的觀點來看較容易分配給SSD的HMB大小下的情境, 成為了各家SSD控制器廠商在即將百家爭鳴的PCIe DRAM-Less SSD產品線上之決勝點.
效能提升固然是HMB被提出的初衷, 然而在談論完效能部分之後我們還是需要回過頭來關注對於所有儲存裝置來說最基本的要求: 儲存數據的完整性(Data Integrity).
讓我們思考一個問題: 對於SSD控制器而言, 是否能夠100%完全信任所有存在於HMB內的資訊? 在理想的情境下, 答案是肯定的; 而在實際的使用中, 我們仍然建議需要搭配足夠強度的安全機制.
當DRAM-Less SSD被分配到一塊HMB資源, 什麼樣的資訊會被存放在HMB裡面? 實際上, 這個問題的答案隨著各家SSD控制器的韌體設計會有所不同. 但是數據緩衝區(Data Buffer), L2P Mapping Table或是其餘控制器所需的系統資訊都是可能的選項.
其中有些資訊對SSD控制器來說是非常重要甚至不可重建的, 因此NVMe在推出HMB時即要求可支援的HMB的SSD控制器要能夠在不預期關閉HMB功能的情況下, 依然保證SSD內數據的完整性.
除此之外, 預期外甚至是不合法的主機端存取或是數據傳輸過程中的失真都有可能影響到存放在HMB內的資訊. 如何確保HMB內儲存數據的完整性也成為PCIe DRAM-Less SSD的一項課題.
確保SSD數據傳輸完整性 E2EDPP機制立大功
在SSD市場上, 各家解決方案皆被期望有能力保證數據在主機端到裝置端之間傳輸時的完整性. 端對端數據路徑保護(End-to-End Data Path Protection, E2EDPP)(圖6)即為一套相當流行的機制來達成這個目的. 當數據被讀取或寫入時, 其行走路徑會經過不同的站點, 寫入路徑包含Host→PCIe IP→Processor→Data Buffer→Security Engine→Flash IP→ NAND Flash, 讀取路徑則是反向.
圖6 端對端數據路徑保護(含HMB數據路徑)
這個保護機制最主要的目的除了確保數據在傳輸受到保護之外, 若控制器內部RAM搬動數據發生Soft Error, 整體設計上也有能力偵錯, 避免錯誤的數據傳送至主機端.
現在DRAM-Less SSD能夠透過支援HMB功能, 在主機端取得特定專屬空間來存放資訊, E2EDPP的機制也應該要被擴展, 以同步確保HMB數據在主機端和裝置端之間的雙向傳輸.
如何實現HMB資訊傳輸路徑上的數據完整性確保, 端看各家SSD控制器廠商的設計. 其中一個簡易的概念是在HMB數據當中加入同位檢查(Parity Check)或是迴圈冗餘代碼檢查(Cyclic Redundancy Check, CRC)用以偵測數據是否有發生錯誤. 一旦檢驗失敗, 控制器即立刻進行錯誤處理(Error Handling).
另一方面, 由於HMB數據是存放在主機端的RAM裡面, 雖然NVMe規範內明確要求這個區塊在HMB啟動期間只有SSD能夠取用, 但是任何發生在主機端的誤操作甚至是惡意存取行為都有可能取得HMB記憶體放的資訊甚至根據取得的資訊進行數據竄改進而影響到用戶. 因此, 可以額外將要寫入主機端的HMB資訊先進行加密再進行傳輸, 待裝置端讀回這筆HMB資訊時, 同樣先進行解密並完成檢驗數據後再行使用(圖7).
圖7 HMB資訊偵錯及加解密機制簡易示意圖
相信在確保HMB數據完整性及安全性的課題上, 不同的SSD控制器製造商存在著各式各樣的實作方式. 何種作法是最理想的方案目前也許還沒有定論, 但可以肯定的是, 在利用HMB來提升DRAM-Less SSD效能的同時, 整體系統設計依然須要強化數據保護機制以保證用戶數據的正確性. 如此一來, HMB確實很有機會可以將DRAM-Less SSD引領到下一個境界.