ssd控制器廠家 SSD市場



文章插圖
ssd控制器廠家 SSD市場

文章插圖
基本1. 閃存單元類型
固態硬盤 (SSD) 是一種基于閃存的數據存儲設備 。位存儲在單元中,分為三種類型:每單元 1 位(單級單元,SLC)、每單元 2 位(多級單元,MLC)、每單元 3 位(三級單元,TLC) 。
2. 壽命有限
每個單元都有最大次數的 P/E 循環(編程/擦除),在此之后該單元被視為有缺陷 。這意味著 NAND 閃存會磨損并且使用壽命有限 。
3. 基準測試很難
測試人員是人,因此并非所有基準測試都不會出錯 。閱讀制造商或第三方的基準時要小心,并在相信任何數字之前使用多個來源 。在可能的情況下,使用您系統的特定工作負載以及您想要使用的特定 SSD 型號運行您自己的內部基準測試 。最后,確保您查看對手頭系統最重要的性能指標 。
頁和塊4. NAND 閃存頁面和塊
單元格被分組到一個網格中,稱為塊,塊被分組到平面中 ??梢宰x取或寫入塊的最小單位是頁 。頁不能單獨擦除,只能擦除整個塊 。NAND 閃存頁面大小可能會有所不同,大多數驅動器的頁面大小為 2 KB、4 KB、8 KB 或 16 KB 。大多數 SSD 具有 128 或 256 頁的塊,這意味著塊的大小范圍在 256 KB到 4 MB 范圍內變化 。例如,三星 SSD 840 EVO 的塊大小為 2048 KB,每個塊包含 256 個頁面,每個頁面為 8 KB 。
5. 讀取在頁面大小上對齊
一次閱讀不到一頁是不可能的 。一個人當然只能從操作系統請求一個字節,但是將在 SSD 中檢索一整頁,迫使讀取比需要更多的數據 。
6. 寫入在頁面大小上對齊
寫入 SSD 時,寫入是按頁面大小的增量進行的 。所以即使一次寫操作只影響一個字節,無論如何都會寫一整頁 。寫入比所需更多的數據稱為寫入放大 。寫入頁面也稱為“編程”頁面 。
7.頁面不能被覆蓋
NAND 閃存頁面只有在處于“空閑”狀態時才能被寫入 。當數據改變時,頁面的內容被復制到內部寄存器中,數據被更新,新版本存儲在“空閑”頁面中,這個操作稱為“讀-修改-寫” 。數據不會就地更新,因為“空閑”頁面與最初包含數據的頁面不同 。一旦數據被持久化到驅動器,原始頁面被標記為“過時”,并將保持原樣直到被擦除 。
8.擦除在塊大小上對齊
頁面不能被覆蓋,一旦它們變得陳舊,讓它們再次自由可用的唯一方法就是擦除它們 。但是,無法擦除單個頁面,只能一次擦除整個塊 。
SSD 控制器和內部結構9. Flash 翻譯層
閃存轉換層 (FTL) 是 SSD 控制器的一個組件,它將邏輯塊地址 (LBA) 從主機映射到驅動器上的物理塊地址 (PBA) 。最近的驅動器實現了一種稱為“混合日志塊映射”的方法或其派生方法,其工作方式類似于日志結構文件系統 。這允許像順序寫入一樣處理隨機寫入 。
10. 內部并行性
在內部,多個并行級別允許一次將多個塊寫入不同的 NAND 閃存芯片,即所謂的“集群塊” 。
11. 磨損均衡
由于 NAND 閃存單元不可避免磨損,因此 FTL 的主要目標之一是在單元之間盡可能均勻地分配工作,以便塊將達到其 P/E 周期限制并同時磨損 。
12.垃圾收集
SSD 控制器中的垃圾收集過程確?!瓣惻f”頁面被擦除并恢復到“空閑”狀態,以便可以處理傳入的寫入命令 。
13.后臺操作會影響前臺操作
垃圾收集等后臺操作會對來自主機的前臺操作產生負面影響,尤其是在小隨機寫入的持續工作負載的情況下 。
訪問模式14.永遠不要寫不到一頁
避免寫入小于 NAND 閃存頁面大小的數據塊,以最大限度地減少寫入放大并防止讀取-修改-寫入操作 。當前頁面的最大大小為 16 KB,因此默認情況下應使用該值 。此大小取決于 SSD 型號,將來隨著 SSD 的改進,您可能需要增加它 。
15. 對齊寫入
在頁面大小上對齊寫入,并寫入頁面大小的倍數的數據塊 。、
16.緩沖小數據量寫
為了最大限度地提高吞吐量,盡可能將小數據量寫入 RAM 中的緩沖區,當緩沖區已滿時,執行單次大數據量寫以批處理所有小寫 。
17.為了提高讀取性能,將相關數據一起寫入
讀取性能是寫入模式的結果 。當一次寫入大量數據時,它會分布在單獨的 NAND 閃存芯片上 。因此,您應該在同一頁、塊或集群塊中寫入相關數據,以便稍后通過利用內部并行性通過單個 I/O 請求更快地讀取這些數據 。
18. 分離讀寫請求
由小型交錯讀取和寫入混合構成的工作負載將阻止內部緩存和預讀機制正常工作,并導致吞吐量下降 。最好避免同時讀取和寫入,并在大塊中依次執行它們,最好是集群塊的大小 。例如,如果必須更新 1000 個文件,您可以迭代這些文件,對文件進行讀寫,然后移動到下一個文件,但這會很慢 。最好一次讀取所有 1000 個文件,然后一次寫回這 1000 個文件 。
19.批量失效數據
當某些數據不再需要或需要刪除時,最好在單個操作中大批量等待并使其失效 。這將允許垃圾收集器進程一次處理更大的區域,并有助于最大限度地減少內部碎片 。
20. 隨機寫入并不總是比順序寫入慢
如果寫入很?。吹陀诩簤K的大?。?,則隨機寫入比順序寫入慢 。如果寫入既是集群塊大小的倍數又與集群塊大小對齊,則隨機寫入將使用所有可用的內部并行級別,并且將執行與順序寫入一樣好 。對于大多數驅動器,群集塊的大小為 16 MB 或 32 MB,因此使用 32 MB 是安全的 。
21.一個大的單線程讀比很多小的并發讀好
并發隨機讀取無法充分利用預讀機制 。此外,多個邏輯塊地址可能會出現在同一個芯片上,而不是利用或利用內部并行性 。大型讀操作將訪問順序地址,因此將能夠使用預讀緩沖區(如果存在)并使用內部并行性 。因此,如果例允許,最好發出大型讀取請求 。
22.一個大的單線程寫比很多小的并發寫好
大型單線程寫入請求提供與許多小型并發寫入相同的吞吐量,但在延遲方面,大型單線程寫入比并發寫入具有更好的響應時間 。因此,只要有可能,最好執行單線程大寫 。
23.當寫量較小且不能分組或緩沖時,多線程是有益的
許多并發的小的寫請求將提供比單個小的寫請求更好的吞吐量 。所以如果I/O很小,不能批量處理,最好使用多線程 。
24.冷熱數據分離
熱數據是變化頻繁的數據,冷數據是變化不頻繁的數據 。如果一些熱數據和一些冷數據存儲在同一個頁面中,那么每次在讀-修改-寫操作中更新熱數據時,冷數據都會被一起復制,并且會在垃圾收集期間一起移動以進行磨損均衡 。盡可能將冷熱數據拆分成單獨的頁面將使垃圾收集器的工作更輕松 。
25. 緩存熱點數據
應盡可能多地緩沖極熱數據和其他高變化的元數據,并盡可能不頻繁地將其寫入驅動器 。
系統優化26. PCI Express 和 SAS 比 SATA 快
制造商提供的兩個主要主機接口是 SATA 3.0(550 MB/s)和 PCI Express 3.0(每通道 1 GB/s,使用多個通道) 。串行連接 SCSI (SAS) 也可用于企業 SSD 。在它們的最新版本中,PCI Express 和 SAS 比 SATA 更?快,但它們也更貴 。
27. 過度配置對于磨損平衡和性能很有用
只需將驅動器格式化為小于最大物理容量的邏輯分區容量,即可過度配置驅動器 。對用戶不可見的剩余空間仍將可見并由 SSD 控制器使用 。過度配置有助于磨損平衡機制應對 NAND 閃存單元固有的有限壽命 。對于寫入不那么重的工作負載,10% 到 15% 的過度空間配置就足夠了 。對于持續隨機寫入的工作負載,保持高達 25% 的過度空間配置將提高性能 。超額配置將充當 NAND 閃存塊的緩沖區,幫助垃圾收集過程吸收寫入峰值 。
28.啟用TRIM命令
確保您的內核和文件系統支持 TRIM 命令 。當一個塊被刪除時,TRIM 命令會通知 SSD 控制器 。然后,垃圾收集過程可以在空閑時間在后臺擦除塊,使驅動器準備好應對大型寫入工作負載 。
29.對齊分區
為確保邏輯寫入真正與物理內存對齊,您必須將分區與驅動器的 NAND 閃存頁面大小對齊 。
結論
【ssd控制器廠家 SSD市場】如果您在閱讀本文章后想更深入地了解 SSD 。一個重要資源是 FAST 會議(文件和存儲技術的 USENIX 會議) 。每年都有許多優秀的研究在那里發表 。強烈推薦FAST 2013的視頻和出版物 。https://www.usenix.org/conference/fast13