PCIe SSD飛入尋常百姓家靠什麼?
近幾年,SSD發展勢頭兇猛,消費級和企業級SSD均有顯著的增長。在2017年第四季度,已經有超過50% notebook開始採用消費級SSD。另外,還有很多國產品牌撐起了消費級SSD零售重擔。
目前消費級市場上的SSD主要有兩種,一種是SATA SSD,另外一種則是PCIe SSD。其中,SATA SSD仍然是市場主導。但是,與SATA SSD相比,PCIe SSD的性能有成倍的提升,在當下,NVMe/PCIe已成為時代的趨勢。預計在2018年,市場上採用PCIe Gen3的SSD將達到50%。
既然,PCIe SSD發展這麼好,為啥在市場上還不能普及?歸根結底,就是一個字:貴!
消費級SSD市場面對的是終端用戶,而非數據中心等企業用戶。消費級SSD潛在用戶,在換SSD之前用的都是機械硬碟HDD,換了SATA SSD之後,性能也會有明顯的提升,如非性能發燒友,何必花大價錢換PCIe SSD呢?所以,最終造成的情況就是,PCIe SSD在消費級市場只是高端旗艦電腦或者有錢人的選擇,尋常百姓只能望而卻步。
為了改善這種尷尬的局面,SSD廠家就開始動腦筋了,不是PCIe SSD成本高嘛,那好,我把DRAM顆粒去掉,做成DRAM-Less PCIe SSD. 很顯然,省掉了DRAM晶元,成本自然下降了,對PCIe SSD的普及起到積極的促進作用。
英雄所見略同!DRAM-Less PCIe SSD已經成為了眾多SSD廠商的選擇,主控廠商也相繼發布支持DRAM-Less的PCIe主控晶元,如Marvell的88NV1160,慧榮科技的SM2263XT等。
在PCIe SSD去掉DRAM之後,SSD端就少了緩存,為了減少預設DRAM所帶來的性能下降,人們又想到了Host Memory Buffer(HMB, 主機內存緩存區)。在NVMe 1.2 Spec開始引入HMB功能,不過,這個功能是optional,並不是必須的。HMB功能的作用就是在主機的DRAM內存中留出一塊緩存區專門供SSD使用,如下圖:
不過,對於HMB有幾點需要注意:
HMB功能由Host操縱,Enable或者Disable;
初始化階段,Host需要向controller提供一份"可用內存記錄表", 以告知Controller,Host哪段內存是供SSD專屬使用的;
主控負責對Host提供的那段內存進行初始化;
在關機或者RTD3或者其他要求Host重新分配內存的事件發生之前,Host需要告知Controller釋放那段專屬的內存空間;
Device允許向Host要求最小分配內存空間;
在發生意外插拔時,Controller需要確保數據沒有丟失或者損毀。
有了HMB之後,NVMe/PCIe SSD的命令處理流程也發生了變化。
下圖左是正常情況下NVMe CMD處理流程;
下圖右是DRAM-Less HMB PCIe SSD的NVMe CMD處理流程;區別就是在數據會先寫入HMB,當HMB寫滿之後,在寫入NAND flash.
理解了HMB的概念,那HMB到底對SSD有沒有好處呢?我們讓數據說話。
順序工作負載
從上圖順序讀和順序寫的性能表現來看,HMB對順序工作負載的性能影響不大,作用可以忽略。
隨機工作負載
對於隨機讀,HMB對SSD性能提升效果顯著,特別是1024GB SSD,加入HMB之後,性能提升了70%,全盤讀性能也提升了40%。
對於隨機寫,HMB對SSD性能提升的效果更加明顯,1024GB SSD的隨機寫性能直接躍升5倍之多。
通過上述實驗對比發現,HMB對順序工作負載基本沒有效果,對隨機工作負載的提升效果極大。
那麼,這裡,我們在思考一個問題:HMB的大小對隨機工作負載有影響嗎?
答案是肯定的,看下圖:
從上圖發現,當HMB的大小為1024MB時,SSD的隨機工作負載效果最佳。
HMB好是好,但能完全信任嗎?
在HMB注意事項里,我們提到"在發生意外插拔時,Controller需要確保數據沒有丟失或者損毀。" 在HMB裡面存在的內容主要有:數據,mapping table, metadata等,如果發生數據丟失或者損毀,那麼對用戶來說,肯定是不願意接受的。
為了保護HMB裡面內容,那就需要請出End-to-End數據保護這位大神了,在這裡,E2E就不再展開咯,具體參考NVMe Spec。
寫在最後
看完本篇文章,我們對標題給出的疑問"PCIe SSD飛入尋常百姓家靠什麼?"應該有解答了。那就是,需要依靠本文中提到的DRAM-Less和HMB來保證成本下降的同時,性能依然保持足夠的競爭力。
如您有任何的建議與指正,敬請在文章底部留言,感謝您不吝指教。
GIF/1K


※NVMe SSD客戶的要求其實很簡單,就這幾個!
※SD:PCIe/NVMe不是SSD的專利,我也想要!
TAG:存儲隨筆 |