5. EXPERIMENT
5.3 Exploration of FTL Design
5.3.4 Overprovisioning Ratio vs. FTL Performance
除了 N 與 K 對應的特性之外,Log-based FTL 與 BL 和 PL 不一樣的地方在 於它必須有額外的 spare size 做為 log 的使用,因此相同大小的空間,使用者真 正能使用部分會隨著 spare size 提升而減少,但也因為 log 的空間更大,所以得 到的效能也較好,但如何取得使用者與 spare 區域的平衡,這類討論我們稱為備 用區覆蓋率(Over Provisioning)的問題,簡稱 Op,Op 等於 spare 空間除以使用 者可用空間,以百分比表示。圖 34 是各種 Log-based FTL 在不同 Op 下的效能表
Over provisioning ( BAST
Over provisioning ( BASTBC
Over provisioning ( BASTBC
Over provisioning ( BASTBC
N8K16 FAST
d、Multimedia 圖 34、不同 Over provisioning 下 Log-based FTL 的效能
圖 34 顯示,隨機存取的 workload 在 Op 小的時候,以 FAST 的表現最好,
- 42 -
體而言,各 FTL 各有不同的表現,但 FAST 比較不會受到 workload 的影響,可 以隨著 Over provisioning 的變化下穩定成長。
結論各種 FTL 的比較關係,整理如表 6,除去 RAM 消耗度過大的問題,PL 還是表現最好的 FTL,相對而言 BL 效能過差所以不作為 SSD 考量,多用於循 序存取行為多的隨身碟或記憶卡,而 Log-based FTL 則可以 BAST 和 FAST 為代 表,由前面的測試可知,BAST 較適合循序存取的資料,FAST 則具有優異的隨 機存取效能,而隨機存取又是一般 SSD 無法避免的,所以 FTL 的設計以 FAST 為考量再加上循序存取的優化會比較好,不過 FAST 也有每次 GC 的 Association 過高導致回應時間過長的缺點,因此 FTL 在 SSD 上的使用必須根據不同的用途 而定,而更多關於 Log-based FTL 的變型與討論在持續,像是改良 N-K 為不連續 data block 的 KAST,還有依照 request 大小分類後再以 BAST 或 FAST 處理的混 合體 LAST [23]都是著名的 FTL,這些 FTL 都是為了解決前述的缺點,讓 SSD 可以適用於各種不同的存取行為。
表 6、FTL 關係對照表
(由優至劣為 Excellent > Good > Bad > Worst)
Sequential Access
Random Access
RAM Consumption
Another Drawback
Block Level Good Worst Small
BAST Excellent Bad Medium Block thrashing
FAST no seq Bad Excellent Medium Long response
FAST Good Good Medium Long response
Page Level Excellent Excellent Large Hot-cold mixed
- 43 - 5.4 Exploration of Architecture Design
硬體架構的設計可以分為 Inter-chip 和 Intra-chip 兩種優化方法,5.4.1 討論 Multi-Channel 實作的演算法,5.4.2 和 5.4.3 針對 Inter-chip 的架構討論,其又分 為 Syn-Channel、Ind-Channel 和 Interleave,而 5.4.4 和 5.4.5 討論的是 Intra-chip 的指令,包含 Copy-Back 和 Multi-Plane,而 5.4.6 和 5.4.7 則是結論各種硬體架構 的比較。接下來所採用的 FTL 皆以 5.2 中表現較穩定的 FAST 為例,spare size 同樣是 5%,預設的 Buffer 大小為 Channel 個數乘以實際 page 大小,意即假設採 用 MLC 的 Chip 搭配兩個 Channel,則 Buffer 大小為 2 乘以 4 KB 等於 8 KB,是 Channel 同時傳輸資料的最小容許設定,並採用 FIFO 機制,其餘更多關於 Buffer 的作用與分析將在 5.5.1 中討論。
5.4.1 Parallel Algorithm in Multi-Channel
Inter-chip 架構的設計指的是 SSD 中 Chip 和 Chip 之間的排列組合,在這類 討論中,以 Syn-Channel 的討論最簡單,其做法相當於放大一個 Flash chip 的 page 和 block,但讀寫這樣大的一個邏輯 page 的傳輸時間卻與讀寫單一 page 無異,
因為每一個 Channel 都有一條 Bus 的支援,這樣對於循序存取的效能非常有幫 助,但若是隨機或不平衡(Unbalance)存取的資料,則很容易發生利用度過低 的問題,所謂不平衡的現象表示資料集中存取某一個 Chip 或某一個 Channel,若 只讀寫某一個 Channel 的資料,在 Syn-Channel 的架構下其他 Channel 就算沒有 資料也必須同時讀寫相同的位址,所以造成空間的浪費,效能也會因此受影響。
為了解決 Syn-Channel 的問題,就有另一種將 Chip enable line 和 Bus 都分開 的架構,使得不同的 Chip 可以獨立運作,稱為 Ind-Channel,這種架構的平行度 與 Syn-Channel 一樣高,且可以存取不同位址的資料,因此可以解決 Syn-Channel 的問題,面對隨機的存取可以有效的提升每個 Channel 的利用度。
0 500 1000
1 2 4 8 16
IOPS
Chann no-bind
GC-bind
a、Windows
0 500 1000
1 2 4 8 16
IOPS
Chann no-bind
GC-bind
b、Multimedia 圖 35、平行演算法效能表現
Ind-Channel 透過各元件之間的平行作用,往往可以達到數倍的效能,但要 令所有 Chip 的工作量相同,才可以有最佳的平行處理能力,這樣的設計方法有
- 44 -
很多種,而且不同的 FTL 適合的方法也不一樣,我們稱這種方法為硬體的平行 演算法(Hardware Parallel Algorithm),舉例來說,在 FTL 中最耗費時間的動作 是 GC,所以其中一個重點就是在做 GC 時,其他元件也必須同時做 GC 以避免 閒置,但不同的元件要做怎樣的 GC 也是值得討論的,這裡針對 Log-based 的 FTL 設計,其特點是具有 data block 和 log block 的概念,在 GC 時必須 merge 這兩者,
因此其中一種平行處理的演算法就是 merge 不同硬體元件中的相同 data block,
如此一來可以避免在做 GC 時某些硬體元件的閒置,二來透過這種被綁住的 GC,也可以減少下次 GC 的負擔,圖 35 中顯示採用此種演算法的效能改善,採 用 Chip 為 MLC,workload 為 Windows,圖中可 s 見若 GC 沒有同步則 Channel 越多反而會因為頻繁卻不同時的 GC 造成效能低落。
0 500 1000
1 2 4 8 16
IOPS
Chann 1-Seq
0-Seq
圖 36、FAST 循序優化在平行演算法中的表現
上述平行演算法對於 FAST 循序優化的實作也是一樣的,當其 sequential block 要 GC 時,其他 Chip 也必須 GC 相同對應的 data block,但是那個 block 不 一定也是 sequential block,可能是 log block,所以會發生某些 Chip 要做 full merge 但某些只要做 partial merge 的現象,容易破壞平行演算法的時間利用度,圖 36 以 MLC 在 Multimedia 上的表現為例,當 Channel 數量越多上述的缺點越明顯,
在 8 個 Channel 後就比沒有加循序優化還要糟,若在非循序存取的 workload 則 誤判造成的空間利用不完全更會隨 Channel 增加而加倍,因此在多 Chip 架構的 討論本篇以未做循序優化的 FAST 為主。
5.4.2 Synchronized-Channel vs. Independent-Channel
本小節比較 Syn-Channel 和 Ind-Channel 的效能表現,如圖 37,橫座標是 Channel 的個數,其中 Syn 指的是 Syn-Channel 架構,而 Ind 則為單純 Ind-Channel 架構。在 a、b 和 c 三個 workload 中都是 Ind-Channel 表現比較優異,是因為隨 機的存取會讓 Syn-Channel 產生嚴重空間利用度不足的現象,其中又以純隨機的 IOmeter 最明顯,也因此其隨著 Channel 數上升效能提升十分緩慢,在 16 個 Channel 左右就發生瓶頸,而在 Multimedia 中 Syn-Channel 表現較好有兩個原因,
第 一 個 是 循 序 的 資 料 不 容 易 造 成 空 間 利 用 度 不 足 的 情 況 , 第 二 個 原 因 是 Ind-Channel 採用的 data block 同步 GC 方法,其 log block 多數時候沒有辦法一起 回收,因此雖然減少 Association 的成本,但 log block 的 erase 還是無法平行,這
- 45 -
種不平衡隨著 Channel 數量增加後就愈來愈大,其中又以 SLC 特別嚴重,因為 SLC 的 block 比較小,但 erase 的時間和 MLC 是一樣的,所以相對而言 erase 的 成本比較高,這算是 FAST 演算法在 Independent-Channel 架構上的特例。
0 圖 37、Synchronized 和 Independent-Channel 的比較
除了上述單純的架構,Syn-Channel 和 Ind-Channel 也可以結合為混合的架 構,圖 38 是針對此項作討論,1-G 表示 1-Gang,即一個 Gang 中有全部的 Channel,
而 2-Gang 的每一個 Gang 中包含總 Channel 數除以 2 個 Channel,依此類推,圖 中列 Windows 為參考,可見在 16 個 Channel 以前,MLC 的表現還是以純 Ind-Channel 架構的效能最好,但 SLC 以兩者結合的效能較佳,原因即前述 log block 的回收不平衡,由實驗得知,整體而言 Ind-Channel 還是 SSD 的最佳架構,
雖然在循序存取的的部分其效能較差,但那是因為平行演算法不夠完善的緣故, 圖 38、混合式 Multi-Channel 在 Windows 上的表現
- 46 - 5.4.3 Interleave Architecture
Interleave 也就是 Shared-bus 的架構,其共用 Bus,但每一個 Chip 會有各自 的 CE,因此也需要採取平行演算法去解決 GC 不平衡的問題,此處採取與 Ind-Channel 相同的平行演算法,整體而言,Interleave 平行度沒有 Channel 高,
隨著 Chip 增加而 spare block 減少,其效能的增進也會逐漸降低,平行演算法發 生的不平衡也會越來越嚴重。
圖 39 是 Interleave 在單一 Channel 上的效能表現,研究顯示大約在 4~8 個 Chip 的時候其效能就會遇到瓶頸,在 Multimedia 中因為循序的大筆資料存取使 得各個 Chip 的利用較平均,所以效能還有提升的空間,而 MLC 效能下降前容 圖 39、Interleave 的效能表現
5.4.4 Copy-Back Operation
Intra-chip 是 Flash chip 所提供的優化,主要藉由韌體指令控制硬體的行為,
常見的像是 Copy-Back 和 Multi-Plane 指令,由於過去鮮少研究討論其平行度與 優劣,因此本篇特別獨立兩個小節簡要的呈現兩者效能。首先,搬移 page 的行 為在 Flash 中是必要的,以 Log-based FTL 為例,在做 block 的 merge 時,勢必
- 47 -
要將要合併的資料搬移新的 data block,因此產生 Copy-Back 指令使得搬移 page 的行為可以直接透過 Chip 的 register 完成而省下 Bus 傳輸的時間。
WinXP Ubuntu IOmeter Medi
IOPS
WinXP Ubuntu IOmeter Media
IOPS
Workload
CopyBack disable CopyBack enable
b、16-Gang 16-Channel 4-Interleave 圖 40、Copy-Back 的效能表現
圖 40a 是 MLC 單一 Chip 加上 Copy-Back 指令後的效能,其中表現最好的 是 IOmeter,加入後效能增加了 21%,其它 workload 則提升大約 10%,這是因為 Copy-Back 主要用於 Garbage Collection,而在隨機且 cold data 的存取下每次 GC 的 Association 較高,需要搬移的資料量較大,因此 Copy-Back 對它的幫助比較 大,圖 40b 則是使用前面幾節表現較好的架構加上 Copy-Back 的測試,可見 Chip 數量增加後效能的提升遠比 1-Chip 明顯,因為 GC 被歸類為額外的負擔,而多 Chip 架構可以分散這種負擔,因此像 Copy-Back 這種減少 GC 負擔的優點也被 放大了。Copy-Back 雖然可以很有效的提升 SSD 的效能,而且越高平行度的架 構可以獲得的幫助越大,但是由於不將資料讀到 RAM 中,Controller 無法對資 料做諸如 ECC 等額外的處理,就包含很大的安全性風險,所以大部分的 SSD 並 不採用 Copy-Back 的指令,本篇僅在此提出其價值,接下來的實驗不將其納入討 論。
5.4.5 Multi-Plane Operation
相較於 Copy-Back,Intra-chip 的另一個指令 Multi-Plane 卻很常被使用,因 為其被內建在 Flash chip 中,使用上很方便,是最小的 SSD 平行單位,Multi-Plane 的平行度與 Interleave 類似,兩者之間的關係就像 Syn-Channel 與 Ind-Channel 的 關係,前者共用 CE,必須存取相同的位址,後者獨立運作,可以採用平行演算 法增進效能。
圖 41 是 Multi-Plane 在單一 Chip 的情況下提升 Plane 個數的效能表現,針對 其採用演算法也有很多種,而通常會將同一個 Chip 不同 Plane 的 block 或 page
圖 41 是 Multi-Plane 在單一 Chip 的情況下提升 Plane 個數的效能表現,針對 其採用演算法也有很多種,而通常會將同一個 Chip 不同 Plane 的 block 或 page