FTL(閃存轉換層)簡單介紹

FTL(閃存轉換層)基礎

FTL(Flash Translation Layer)譯爲閃存轉換層,是Flash Memory(存儲介質)與Device Controller(設備主控器)之間的連接關係。
在整個儲存體系中,FTL起着翻譯官的作用,它將Host(電腦、手機等)發送至Device(eMMC、SSD)的邏輯地址轉換爲寫入Flash的物理地址(地址映射管理)。在進行地址轉換的同時,FTL還兼顧Flash的管理,不僅需要對Flash上的各個Block進行擦寫次數控制(磨損均衡),還需要管理Flash上的無用數據(垃圾回收)。
下面簡單介紹這三個點。

1. 地址映射管理概念

不同於機械硬盤的磁頭直接進行數據讀寫,SSD或者其它以Flash作爲儲存介質的硬盤無法直接進行數據讀寫操作。解決這個問題的辦法,就是FTL層管理幾張邏輯映射表做一箇中間轉換,Host給定一個邏輯地址,FTL根據這個邏輯地址在邏輯映射表上建立映射關係,連接到Flash上的物理地址。一般來說,FTL將邏輯地址處理後,建立的映射關係包含了Flash的Block編號、Page編號等,數據讀取時便根據這些信息在Flash對應的位置上找到數據,傳輸至Host。

2. 磨損均衡概念

以Flash爲儲存介質,其可編程次數是必須考慮的重點。拿目前的固態舉例,多以TLC Flash爲儲存介質,其編程次數在1000-1500次之間,若對TLC Flash上的某些block擦除次數超過了次數限制,那麼將導致壞塊產生,所以FTL須實現磨損均衡,協調整個Flash上的Block,將使用次數少的Block拿出來分擔使用次數多的Block的壓力。通俗的說,磨損均衡就是以相對最優的選擇使Flash上每個Block的擦除次數儘可能相同,以避免有些Block擦除次數過多成爲壞塊致使用戶可用容量變小的問題。

3. 垃圾回收概念

因爲儲存原理的不同,刪除SSD等以Flash爲儲存介質的硬盤上的數據時,只是刪除了Host端的邏輯地址,而實際數據存在Flash的物理地址上,依舊霸佔着空間(所以不要以爲你的數據刪除了就安全了,沒進行垃圾回收時,他們依舊可以找回),後續數據寫進來只能寫到其他Block(Page)上,這就可能造成一個Block上的8M數據只有2M是有效數據,其他的都是被刪除了邏輯地址的“假數據”,久而久之,就會導致空Block不夠用了。解決這個問題呢,就靠垃圾回收(GC)了,它功能就是找一個空Block(目的Block),然後把那些“假數據”比較多的Block(源Block)上的有效數據搬移過來,再把源Block釋放擦除,這樣,一個目的Block可以容納多個源Block的數據,達到強行一換多的目的,給用戶騰出了更多的空間。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章