2015年3月16日 星期一

NOR Flash與NAND Flash介紹

        幾乎每個人都聽過CF卡(Compact Flash)跟SD卡,在各種消費性產品上,例如數位相機或是手機上面都可以看到。這些記憶卡模組的底層技術,使用的就是快閃記憶體(Flash memory)。我們可以把它想像成類似固態硬碟的東西,可以在很小的空間裡儲存好幾MB、甚至好幾GB的資料,裡面沒有會動的碟片,很堅固耐用,而且只需單一電壓即可運作。接下來我們來了解一下快閃記憶體一些特別的地方。

         快閃記憶體被劃分成一塊塊相當大的可抹除單位,稱之為抹除區塊(erase block)。要區別各種快閃記憶體技術的一項決定性特徵,就是快閃記憶體是如何寫入與抹除資料的。


一. NOR Flash
       
        拿一顆普通的NOR Flash來說,經由軟體下指令直接把資料寫進某位置,我們就可以把一個位元的資料從1改成0,一次改一個位元(bit)或是一個字組(word)都可以。不過想從0改回1,就要先用一串特殊指令先把整個抹除區塊清掉才行。

        普通的NOR Flash被劃分為很多個抹除區塊,例如: 一個4MB的晶片可能有64個抹除區塊,每個大小為64KB,有些快閃記憶體的抹除區塊大小可以不同,這樣一來資料儲存時就更有彈性了,這些通常被稱為啟動區塊(boot block)或是啟動區段(boot sector)快閃記憶體晶片。開機載入程式位於較小的區塊,核心跟其他必備資料夾放在較大的區塊。
       
         想修改快閃記憶體中的某資料,必須先把資料所在的區塊整個抹除掉,即使只有1byte的資料需要更動,還是需要把整個區塊抹除掉,然後再把資料寫進去。跟硬碟磁區的大小相比,硬碟可單一寫入的磁區單位大小只有512byte或是1024byte,這一點的差異就可以知道NOR Flash更新資料所需花費的寫入時間會是硬碟的好幾倍。


二. NAND Flash

        NAND與NOR兩者的差異跟快閃記憶體內部的單元架構有關,NAND比NOR的快閃記憶體少了些限制,因為區塊可較小,所以寫入速度就變快了,使用起來也更有效率。

        NOR Flash跟微處理器之間的介面,也跟其他和微處理器作連接的裝置很類似,它們都有獨立運作的資料與位置匯流排,直接跟微處理器的資料/位址匯流排相連,快閃記憶體陣列中任何1 byte或word都可用某位置標示出來。相對而言,NAND Flash的裝置是以串列的方式作傳輸,介面很複雜,每家廠商作法都不同。使用NAND的裝置其操作模式比較類似傳統的硬碟與其控制器之間的傳輸介面,資料以一段段資料脈衝的方試存取,跟NOR的區塊比起來小多了,NAND的寫入時間比NOR長上10倍,不過抹除時間快很多。

       


總結:

        NOR可以直接被微處理器存取,放在NOR上的程式碼甚至可以直接被執行(不過基於效能考量很少這麼作,除非是在資源極少的系統上),實際上很多處理器都沒辦法像存取動態記憶體(DRAM)那樣,對快閃記憶體進行快取,所以執行起來速度就更慢了。另一方面,NAND比較適合用在以整批整塊方式儲存的那種檔案系統,不適合用在儲存二進位執行檔程式碼跟資料上。




Reference by: [嵌入式系統開發實務]~

沒有留言:

張貼留言