3. SSD Geometry
3.2 Effective Page
3.2.1 Definition of Effective Page
Effective page 為 SSD controller 在進行 write 運算與 read 運算時的最基本 單位,effective page 是由一個或多個 physical page 所構成。而對於 SSD 來說,effective page size 除了取決於所採用的 NAND flash memory chip 的 physical page size 規格之外,更與 SSD 的內部硬體架構與 controller 的 設計有直接的關係。
下圖中描述了一個典型的 SSD 架構下 effective page 的分佈情形,此時一 個 sector 的資料被平均分散到每一個 channel 中,所以任何的 read request 或 write request 都會動用全部的 channels。因此每一條 chip enable line 皆 平均連接至每一個 channel 中的一個 chip,如:CE 1 連結至 channel 0 的 chip 0 與 channel 1 的 chip 1、CE 2 連結至 chip 2 與 chip 3,使得 chip 0 與 chip 1 或 chip 2 與 chip 3 會同步地進行所有的運算。而每一個 effective page 都會由一組同步運作的 chips 中各一個 physical page 所組成,例如 chip 0 中的 physical page 0 與 chip 1 中的 physical page 1 共同組成 effective page 0、physical page 2 與 physical page 3 共同組成 effective page 1,而此 時 effective page size 為二倍的 physical page size。
CE1 CE2
圖表 16 : Effective Page
另外,若 SSD controller 有使用 flash memory chip 所提供的 multi-plane
program 技術,那 effective page size 亦會隨著 multi-plane program 可以同 時寫入的 physical page 數量等倍率的放大,例如採用了 two-plane program 技術後,單一 chip 在進行一次 write 運算時之最小單位將變成二個 physical page,因此新的 effective page size 成為原來的二倍。
3.2.2 Read‐Modify‐Write Operation
對於一般的磁碟檔案系統而言,其進行 write 運算與 read 運算的基本單位 為一個 disk sector,也就是 512 Bytes。但是在 SSD 中,進行 write 運算的 基本單位為一個 effective page,其中一個 effective page 是由一個或多個 physical page 所組成的。而現今常見的 physical page size 都為 2 Kbytes 以 上,因此一般來說一個 effective page 中都包含許多個 sectors。
由於 SSD 之 write 運算基本單位大於檔案系統之 write 運算基本單位,導 致當進行 write 運算時,若要被更新的資料量小於 effective page size 時,
SSD controller 必須先從 flash memory 中讀取整個 effective page 至資料暫 存區,接著修改 effective page 中有被更新的部分,最後再將整個 effective page 重新寫回 flash memory 之有效空間,我們稱此過程為
read-modify-write。因此 SSD 在進行 write 運算時,當被更新的資料量小 於 effective page size,SSD controller 必須對此 effective page 進行
read-modify-write 運算才能完成資料的寫入,因此會造成額外 overhead,
導致 write request size 較小時,反而寫入速度較慢的異常現象。如下圖…
圖表 17 : Read-Modify-Write Operation
而過大的 effective page size 會造成處理 small write request 時
read-modify-write 的成本非常高,導致效能低落,但是對於 flash translation layer 來說,由於管理單位的 granularity 較大,因此所需付出的管理成本 是較低的。反言之,採用較小的 effective page size 雖然在處理 small write request 時,享有較高的寫入速度,但是也由於管理單位的 granularity 較 小,因此必須付出較高的管理成本。
3.2.3 Impact of Effective Page
在 effective page 對 SSD 效能的影響中,主要會對於小量寫入資料造成效 能低落,與降低 garbage collection 時進行較快速的 switch merge 以及 partial merge 的機率。而其原因都是由於 effective page size 大於 HDD 所 採用的 sector size,導致 write request 沒有對齊 effective page 的大小或起 始位置。首先在小量寫入資料時,由於 write request 並不會特易對齊 effective page,因此大部分的 write requests 都必須伴隨著
read-modify-write operation 而造成效能低落。而 SSD 在處理許多連續寫 入的 write requests,也會因為沒有對齊 effective page,而在 SSD 內部成 為不連續的更新,導致無法使用 switch merge 與 partial merge,增加 garbage collection 時的負擔。
當 write request 的 size 沒有對齊 effective page size 的倍數或起始位置沒對 齊 effective page 的 boundary 時,會造成 write request 所對應到的最後一 個或第一個 effective page 所要寫入的資料量小於 effective page size,所 以對此 effective page 必須執行 read-modify-write 運算,而造成效能低落。
如下圖所示,若一個 effective page 中包含了四個 sectors,若 write request 要由 sector number:3 更新至 sector number:10,實際上 request 總共更 新的資料量只有二個 effective page,但是由於此 write request 的起始位置 並未對齊 effective page 中的第一個 sector,因此必須寫入 P0、P1 及 P2 三個 effective page。其中 P0 與 P2 這二個 effective page 所要被寫入的資 料量都小於 effective page size,因此都須要進行 read-modify-write 運算,
導致此時寫入效能非常低落。
圖表 18 : Impact of small write
而在 block-level 的 FTL scheme 中,處理循序的寫入資料時可以使用 switch merge 或 partial merge 來降低 merge operation 的成本;藉由降低 erase 運 算與有效資料搬移的次數,進而達到較高的寫入效能。但事實上由於 write request size 或起始位置沒有對齊 effective page,造成許多循序更新的資 料到達底層 NAND flash memory 時,會因為 write request 的要寫入的最 後一個 effective page 與下一個 write request 要寫入的第一個 effective page 重疊,導致資料無法循序被更新。
如下圖所示有二個連續的write requests分別為W1與W2,其中W1寫入由 sector 1 至sector 8,W2寫入從sector 9 至sector 16。寫入資料量為循序更 新sector 1 至sector 16,總共 16 個sectors。而W1實際於NAND flash memory 中橫跨了effective page 0 至effective page 2,W2則橫跨了effective page 2 至effective page 4,因此SSD controller在進行W1時要寫入的最後一個 effective page與W2要寫入的第一個effective page皆為effective page 2,因 此NAND flash memory中effective page被更新的順序成為Page 0 Æ Page 1 Æ Page 2 Æ Page 2 Æ Page 3 Æ Page 4,此一不循序的更新,使得FTL在 進行回收時只能採用成本最高的full merge。
圖表 19 : Impact of sequential write
雖然 SSD controller 在進行 read 運算時也是以 effective page 作為基本單 位,但是當 read request size 沒有對齊 effective page 時,SSD controller 只 需要從 read request 所對應到的 effective pages 中,將 read request 所要讀 取的資料由 NAND flash memory 中輸出即可,並不如進行 write 運算時因 為須要進行 read-modify-write 運算而造成額外的 overhead。另外,也由於 read operation 的速度較 write operation 快許多,因此不論 read request 有 沒有對齊 effective page size 的倍數或起始邊界,所需要的 response time 不會造成明顯的增加。
由於 SSD 為了達到更高的存取頻寬,會採用 multi-channel 數量非常多的 架構,所以大部分的 SSD 都有著非常大的 effective page size,更導致了 大部份的 write requests 無法對齊 effective page,使得寫入效能大幅降低。
因此若檔案系統分配檔案位置時,就能對齊 effective page 的邊界,或是 在發出 write request 時,能對齊 effective page 的尺寸,就可以盡量的避 免 read-modify-write operation,達到更快的寫入效能,甚至是提升 FTL 進行 switch merge 的機率。否則,就必須要承受 read-modify-write 的負擔 造成寫入速度大幅降低,並導致循序更新時無法使用 switch merge,更進 一步的造成 SSD 效能低落。