Flash是存儲器的一種統稱,單片機內部Flash、外掛Flash、U盤、SSD等,到處都有Flash的身影。
大家都知道Flash是用于存儲數據的存儲器,但很多讀者看到頁(Page)、扇區(Sector)、塊(Block)等這些單位時一臉懵逼,這到底是什么,有什么區別?
【資料圖】
下面就來講講關于Flash內部結構組織以及相關的內容。
頁、扇區、塊的描述
扇區、塊這些專用名詞,其實是從早期的軟盤、硬盤等存儲器發展而來,目的是將一個存儲器劃分為多個(扇區、塊)區域,更方便的編程管理這些存儲單元。
1.頁(Page)
Flash存儲器中一種區域劃分的單元,好比一本書中一頁(其中包含N個字)。
比如:STM32F1中小容量芯片內部Flash,1K字節為1頁,整個Flash分為32頁(當然,不同容量的芯片,頁數不同)。
注:不同廠家的、不同類型存儲器的頁大小不同,1KB、2KB、4KB等各種容量的頁大小都有。
2.扇區(Sector)
扇區和頁類似,也是一種存儲結構單元,只是扇區更常見,大部分Flash主要還是以扇區為最小的單元。
比如:W25Q256芯片以4KB為1扇區。
同樣:不同廠家的、不同類型存儲器的扇區大小可能不同。
3.塊(Block)
塊,比扇區更高一個等級,一般1塊包含多個扇區。
同樣,以上圖W25Q256芯片為例:1塊包含16個扇區。
4.額外說明
不同廠家的、不同類型存儲器的劃分方式不同,有的以頁為最小單元,有的以扇區為最小單元,但大部分都以扇區為最小單元。
還有,你可能會看到一些其他的名詞,比如:和扇區一個級別的SubSector,和塊一個級別的Bank、Bulk等。
它們的區別
其實,從上面的描述,大家應該看出來它們的區別了。
用包含關系來描述Flash物理分區的話:芯片包含多個塊,塊又包含多個扇區,扇區又包含多個頁,頁包含多個字節。
根據容量大小來說,它們的關系:** ** 頁(Page)** <扇區(Sector)< 塊(Block)<芯片(Chip)**
網上有一個很形象的比如:
Flash芯片就像一列火車,塊(Block)就像一節車廂,車廂里的每排座位就像一個扇區(Sector)。
文件系統中的扇區、塊
上面描述的Flash存儲器物理地址的劃分,為了方便管理,編程讀寫操作Flash時引入了文件系統。
文件系統的種類很多,比如:FAT、FAT32、exFAT 、 Ext3、 NFS、 NTFS等。不同文件系統,底層對存儲地址的劃分可能不同。
在MCU這類嵌入式系統中,頁、扇區是最小的物理存儲單元,但在Windows、Linux這類系統中,這么小的存儲單元已經不能滿足要求了(不能對眾多扇區尋址),于是就會以塊作為最小的尋址單元。
在Windows環境下,塊是另外一種稱呼,叫簇,可以理解一群、一組(扇區)。
注:簇是操作系統所使用的邏輯概念,而非磁盤的物理特性。
最小存儲單元如果太小了,會造成尋址空間不夠,像現在動輒上G、T的存儲容量,太小了肯定
如果太大,會造成存儲空間的浪費,也就是所謂的碎片。
所以,最小存儲單元應該要根據存儲器大小設置一個合理的值,就如U盤分配單元大小一樣:
U盤格式化時,一般建議選擇默認配置即可。
審核編輯:湯梓紅
標簽: