3. SSD Geometry
3.4 Zones
3.4.1 Definition of Zones
隨著 SSD 儲存裝置的容量快速地成長,造成 flash translation layer 運作時 所需要參考的一些資料結構大小也越來越大,如:記錄 free blocks 或是 log blocks 的 lists,進行 address translation 所使用的各種 mapping tables 或是進行 wear leveling 所需要參考的 erase count table 等。而為了儲存裝 置效能上的考量,其中許多經常被查詢或是變更的資料結構,是需要常 駐於 SSD 內部的隨機存取記憶體中,以便隨時存取。因此對於大容量的 SSD,需要配合容量非常大的隨機存取記憶體,才能完整的儲存這些資 料結構。而在 SSD 中採用過大的隨機存取記憶體除了造成製造成本上的 負擔,也需要額外消耗大量的電力來維持隨機存取記憶體的運作,而抵 消 NAND flash memory 本質上所具有的低電源消耗的優點。
因此許多 SSD controllers 會將內部的 NAND 快閃記憶體儲存空間切割為 許多相同大小的區域,我們稱之為 zones,而每一個 zone 皆擁有與其他 zones 獨立的資料結構。如:每一個 zone 都有自己的 mapping tables,erase count table 等。因此採取分段管理後,原本一份龐大的資料結構,如:整 個 NAND 快閃記憶體儲存空間的 mapping table,將會以 zone 為單位被分 割為許多尺寸較小的 mapping tables。而採用將儲存空間進行分段管理的 方式,對於 SSD 內部有限的隨機存取記憶體空間而言,可以在需要存取 zone 的資料結構時才將此部分的資料結構載入記憶體內,而同一時間點 只儲存一個或是多個 zones 的管理資訊,可以進行更彈性化的空間管理與 運用,並有效的解決各種資料結構大量佔用隨機存取記憶體空間的問題。
另外,與節省所佔用的隨機存取記憶體空間相同的原理,採用分段管理 之概念亦有利於縮短 SSD 儲存裝置之初始化時間。也就是說,SSD 在開 機時並不需要重建或載入整個 NAND 快閃記憶體空間的 mapping table,
僅需於系統存取資料時,在將被存取到的 zone 的 mapping table 載入,便 可立即開始運作。
圖表 23 Zones
3.4.2 Impact of Zones
對於 SSD controller 採用分段管理之機制,雖然能有效降低各種資料結構 所佔用的隨機存取記憶體空間,但也由於每一個 zone 都有自己的 mapping table,因此當所要存取之 mapping table 不在隨機存取記憶體中時,flash translation layer 必須先從 NAND flash memory 中讀取所需要的 zone 的 mapping table,甚至是需要重新掃描此 zone 之 spare area 中所記錄的邏輯 記憶體位置對應資訊,以建立所需之 mapping table。而這些重新載入或 是重建 mapping table 的行為都會影響寫入或是讀取時的回應時間,並降 低整體效能。
因此當 SSD 內部所儲存的資料被以隨機的方式進行讀取或寫入時,很容 易會因為所要存取的資料分散於不同的 zone 中,而造成所要使用的 mapping table 經常不存在於隨機存取記憶體中的現象,導致 flash translation layer 頻繁地花費額外的時間來進行重新載入 mapping table 的 動作。而大量替換隨機存取記憶體內的 mapping table,除了要花費許多 時間至 NAND flash memory 中讀取 mapping table 的資料,根據不同的 SSD controller 設計,flash translation layer 還有可能需要先將隨機存取記憶體 內現有的 mapping table 寫回 NAND flash memory 中,才能清理出多餘的 空間來存放要被載入的 mapping table,而這些額外寫入或讀取 mapping tables 的負擔在隨機的寫入或讀取資料時都會更加的明顯。
下圖描述 zone size 對於隨機讀取固定大小資料時的影響,當隨機讀取的 資料都分布於在同一個 zone 裡時,由於所需要的 mapping table 已經存在 於隨機存取記憶體中,所以不必進行任何替換 mapping table 的動作,因
此完成 read request 所需要的回應時間非常穩定而且較低。而隨機讀取的 範圍大於 zone size 時,一旦相鄰的 read request 分別橫跨於不同 zone,就 會造成隨機存取記憶體中的 mapping table 被重新替換,此時便對讀取效 能造成額外的負擔。因此完成 read request 所需要的回應時間會呈現二種 分佈,其中較高的部分為需要額外載入 mapping table 動作時的回應時 間,較低的部分則為單純進行讀取資料時的回應時間。
Response Time
圖表 24 : Impact of Zone Size
因此在檔案系統分配容易被存取的資料或 metadata 時,能盡量的集中在 同一個 zone 裡,就能盡量避免重新載入 mapping table 的動作,以增加隨 機存取得的效能。否則在存取行為不斷分散在不同的 zone 時,就可能會 造成 mapping table thrashing 的行為,導致 FTL 花了額外的時間不斷的進 行重新載入 mapping table 的動作。