在我們的日常生活中,我們經常會遇到一些“快如閃電”的事物:比如那場突如其來的雨、那個突然出現在你眼前的前任、還有就是今天我們要聊的——固態硬盤(SSD)。
如果你是一個技術宅,或者對速度有著近乎偏執的追求,那么恭喜你,你找到了一個新朋友。這個朋友不僅快,而且非常穩定。他可以讓你的游戲加載瞬間完成,讓你的工作效率翻倍,甚至讓你的電腦啟動時間從“泡一杯咖啡”縮短到“打個哈欠”。
但你知道嗎?這種神奇的速度背后,隱藏著一個復雜的結構和原理。這就是我們今天要探索的主題——SSD架構原理。我們將深入到它的內部,看看那些小小的閃存顆粒是如何變成我們手中的高速存儲設備的。這就像是一次奇妙的探險,我們將一起揭開SSD神秘面紗,一探究竟!
先來看一張完整架構:SSD主要包括了與Host接口協議、控制器芯片SOC,NAND閃存,DRAM緩存。
Host下發IO,到SSD內部的處理邏輯如下圖。這里面核心點,IO邏輯地址LSA(或者叫LBA),到真正最后落入NAND,還有一層FTL轉化為了NAND的物理地址PPN(或者叫做PBA)。
FTL管理著邏輯地址和物理地址的映射關系。有時候,邏輯地址不變,對應的物理地址在不斷變化。
IO最后寫入NAND的過程也有很多關卡:
-
與SSD控制交互的NAND Channel,每個Channel通道有獨立的NAND控制芯片。
-
每個Channel也有多個NAND芯片,不同芯片之間又有Way的概念。
-
每個NAND芯片,又包括了多個NAND die。
-
每個Die再細分還有不同Plane
-
每個Plane有很多個數據塊Block
-
每個Block再細分就有了Page,每個block會有上千個page數據頁。
為了提升固態硬盤(SSD)的性能,NAND相關的并發訪問優化是關鍵因素之一,涉及NAND并發訪問主要有以下幾個方面:
-
多通道設計:現代SSD通常使用多通道架構,每個通道連接一組NAND閃存芯片。這樣可以同時處理多個并行讀寫操作,從而提高I/O吞吐量和響應時間。
-
Way Pipeline設計:因為共享同一個channel通道,并不能完全并發執行。但NAND有erase/program/read多種操作,不同的操作響應時間也不一樣,可以通過way pipeline的方式盡可能優化響應時間。這部分主要是在NAND package內部交叉執行(interleaving)
-
die間并發:當一個NAND芯片封裝包含多個die時,可以在不同die之間并行地執行讀寫操作。這可以通過先進的控制器算法來實現,以充分利用所有可用資源。
-
Plane間并發:在NAND閃存中,一個die(晶片)通常由多個plane組成。每個plane都包含獨立的地址線、數據線和控制信號,能夠并行地執行讀寫操作。不同plane之間的共享可以提高SSD的性能和效率。目前NAND都支持multi-plane的操作。
在進行數據寫入數據頁page時,不同的分配規則(比如Way優先、CH優先、Die優先),對性能有很大的影響。
如果以Channel優先進行Page頁的分配策略,結合Way、Die、Plane的組合排列,數據分布的可能組合如下:
如果以Way優先進行Page頁的分配策略,結合Channel、Die、Plane的組合排列,數據分布的可能組合如下:
如果以Die優先進行Page頁的分配策略,結合Channel、Way、Plane的組合排列,數據分布的可能組合如下:
如果以Plane優先進行Page頁的分配策略,結合Channel、Way、Die的組合排列,數據分布的可能組合如下:
不同的page分配策略中,整體的有效利用率在43%。
不同的page分配策略,在讀寫過程中,有80%的時間處于idle狀態。
SSD整體優化策略就是要低延遲,高帶寬,增加NAND的并發度。
聲明:本文內容參考 Yonsei University Myoungsoo Jung教授團隊研究比較早期成果,如果有不當之處,恭請留言指正,感謝!