映射管理
參考資料《深入淺出SSD》
映射的種類
1.塊映射
1)划分標准,以閃存的塊為映射粒度
2)注意,一個用戶邏輯塊可以映射到任意一個閃存的物理塊,但是映射前后每個頁在塊中的偏移不變
3)優缺點,映射表只存儲塊的映射->所需存儲映射表的空間小;
連續大尺寸的讀寫性能好,但是小尺寸的寫性能很差;
(即使只寫一個邏輯頁,也需要把整個物理塊數據讀上來,然后改變邏輯頁的數據再整個塊寫入->性能差)
4)用戶空間被化成一個個邏輯區域,每個區域與閃存塊的大小相同
2.頁映射
1)划分標准,以閃存的頁為映射粒度 ,一個邏輯頁可以映射到任一物理頁中
2)注意,由於閃存頁遠比閃存塊多,因此需要更多的空間來存儲映射表
3)優缺點,性能很好,尤其體現在隨機寫上
4)用戶空間被化成一個個邏輯區域,每個區域與閃存頁的大小相同
3.混合映射
1)划分標准,塊映射和頁映射的結合
2)一個邏輯塊映射到任一物理塊,但是塊中的每個頁的偏移並不是固定不變的,塊內采用頁映射的方式,一個邏輯塊的邏輯頁可以映射
到對應物理塊的任一頁,因此它所需要的空間以及性能都是介於塊映射和頁映射之間的。
3)用戶空間划分成一個個邏輯區域,邏輯區域和閃存塊大小相同,每個邏輯塊對應一個閃存塊,但邏輯塊內部有分成一個個邏輯頁,與對應閃存頁
隨機對應
映射原理
1.用戶通過LBA訪問SSD,每個LBA代表一個邏輯塊(邏輯頁,用戶訪問SSD的基本的單元,大小:512B/4KB/8KB)
2.SSD內部,SSD主控是以閃存頁(物理頁)為基本單元讀寫閃存的
3.用戶寫入一個邏輯頁數據,SSD主控會找一個物理頁把數據寫入,SSD內部的映射表記錄了這條映射
4.下次用戶再讀這個邏輯頁時,可以通過映射表中的映射關系找到閃存物理頁中存儲的數據
5.案例
SSD內部維護一張邏輯頁到物理頁地址轉換的映射表
V
用戶每寫入一個邏輯頁,就會產生一個新的映射關系,
這個新的映射關系會加入或者更改映射表
V
當讀取某個邏輯頁時,SSD主控首先查找映射表,找到該邏輯頁對應的物理頁,
然后訪問閃存讀取相應的數據
6.映射表的大小
SSD大小為256G,邏輯塊數據大小為4KB -> 256GB/4KB = 64M個邏輯數據塊;
每個邏輯數據塊在閃存空間都有一個存儲位置,即一個映射,閃存大小用4字節表示;
存儲64M個邏輯數據塊在閃存中的地址需要64M*4B = 256M大小的映射表。
總結:映射表大小為SSD容量的1/1024(物理地址用4B表示,映射頁大小為4KB)
7.對於帶DRAM的SSD,DRAM的作用就是用來存儲映射表的,優點是映射關系可以快速訪問,如圖
例子:SSD工作時,只需查找DRAM中的映射表,獲取到物理地址后讀取閃存中的數據,只需訪問一次閃存

8.不帶DRAM的SSD,一般采用二級映射,如圖
二級表是L2P表(Logical Address to Physical address),它被分成一塊一塊的,小部分緩存在RAM,大部分都存在閃存上
一級映射常駐RAM,存儲這些塊在閃存中的物理地址,它不是很大,如圖
例子:SSD工作時,首先查看邏輯頁對應的映射關系是否在RAM內,如果在直接根據映射關系讀取閃存中的數據,
如果不在,首先需要把映射關系從閃存中讀取出來,然后再根據這個映射關系讀取數據,需要讀取量詞閃存,底層有效帶寬減少


9.對於順序讀,映射關系連續,一次映射塊的讀可以滿足很多用戶數據的讀,不帶DRAM的SSD可以有很好的順序讀性能,
對於隨機讀,映射關系分散,一次映射關系的加載基本只能滿足一筆邏輯頁的讀,需要訪問量詞閃存才能完成讀操作,性能相對會差
