發布日期:2022-04-22 點擊率:68
分析閃存控制器的架構,首先得了解SSD。一般來說SSD的存儲介質分為兩種,一種是采用閃存(Flash芯片)作為存儲介質,另外一種是采用DRAM作為存儲介質。我們通常所說的SSD就是基于閃存的固態硬盤,其采用FLASH芯片作為存儲介質。SSD的基本組成結構包括Flash顆粒和Flash控制器,Flash控制器中有芯片,負責Flash的讀寫、磨損均衡、壽命監控等等。
Flash控制器的主要的工作任務包括三大方面:一是后端訪問Flash,管理后端Flash顆粒,包括各種參數控制和數據IO; 二是前端提供訪問接口和協議:實現對應的SAS/SATA target協議端或者NVMe協議端, 獲取Host發出的IO指令并解碼和生成內部私有數據結果等待執行;三是FTL層核心處理。下面我們具體來介紹一下Flash 控制器是怎樣做這幾件事的。
第一,后端訪問Flash的操作內容
后端訪問Flash首先必須提到的是閃存通道控制器。這個控制器里面有多個通道,每個通道掛多片Flash。它與后端Flash顆粒之間存在托管協議。數據寫入Flash的時候,除了主機發送的數據或者原始數據,其他數據都必須進行ECC校驗。ECC是通用的稱謂,里面有多種算法,其中包括糾錯率較低的BCH算法,LAPC低密度校驗碼等。數據讀出的時候,通過擾碼,加擾,解擾,看ECC是否出現錯誤,若有錯則在糾錯后將芯片發到內部,供后續的程序處理。因此,后端訪問Flash的主要任務即是管理后端Flash顆粒,包括各種參數控制和數據IO。
第二,前端提供訪問接口和協議
前端提供訪問接口和協議,跟主機驅動通信,利用標準格式輸配到系統里面,接收主機端發過來的指令,即完成、實現對應的SAS/SATA target協議端或者NVMe協議端,獲取Host發出的IO指令并解碼和生成內部私有數據結構等待執行。如果遵從NVMe標準,包括提交命令的方法、完成命令的處理方法等都定好了,包括各種隊列、隊列深度,Queue Pair的總體數量最大可以達到64K個,隊列深度也可達64K個,所以,系統里同時可能存在64K×64K IO排著,但是目前的系統是用不到這么多Queue的,因為底下的介質速度還不足以支撐。
第三,FTL層——核心層處理
核心層FTL層,是一款Flash控制器的關鍵競爭力所在。它既可以是純軟件算法,包括元數據管理,數據布局影射、磨損均衡、垃圾回收、緩存策略、片間RAID和掉電元數據一致性保障等內容。同時,它也可以在進行重復性工作時輔以硬加速引擎。這是非純軟件的,輔有硬加速的成分在里面。硬加速涉及到所使用的芯片。有的芯片支持硬加速,比如說鏈表的維護。這是因為做垃圾回收時需要要用到鏈表,拿傳統的軟件算法,插入一個或者追加一些項目,所耗費的CPU周期較大,此時用硬加速并行,再加上一些硬邏輯的加速,則可節省開銷。
Flash控制器的兩種策略和方式:
現有的Flash控制器可采用兩種方式:一種是少量的強核心加少量硬件加速。所謂強核心就是一個核心的性能高、頻率高,分支預判、并行度、單元數量、執行管道,各種參數都高于一般水平。核心強了以后,硬加速就不需要這么多了,可以用少量的硬加速。
另一種方式則是大量弱核心+大量硬加速。比如說16個核心,每個核心比較弱,但是能夠增加執行的并行度,有16個并發核心執行,跑16套處理程序,這是兩種架構。這是一種多核心協作架構模式,其協作方式可以是同構協作也可以是異構協作
1.同構協作就是每個核心做的事都是完全一樣的,處理的步驟完全一樣。如果你的控制器陣列里面有16個IO,有16個核心,每個核心都能處理一個IO,這是同構協作。
2.異構協作則是多個核心做不同的事情。處理同一個IO,第一個IO第一步,第一個核心處理,這個核心處理完以后,把這個IO扔到下一個核心,再處理下一步,等這個核心空出來以后,處理下一個IO的第一步,這就是所謂的流水線了,所謂的異構就是如此。
下一篇: PLC、DCS、FCS三大控
上一篇: 索爾維全系列Solef?PV