對於flash的認識,比較膚淺,在網上找了些資料,感謝 http://blog.csdn.net/lin364812726/article/details/18815395 的博主,
將其博文轉載過來,以便以后查看。
flash閃存是非易失存儲器,可以對稱為塊的存儲器單元塊進行擦寫和再編程。
flash按照內部存儲結構不同,分為兩種:nor flash和nand flash。
(1)nor flash:像訪問SDRAM一樣,按照數據/地址總線直接訪問, 可寫的次數較少,速度也慢,由於其讀時序類似於SRAM,讀地址是線性結構,多用於程序代碼的存儲.
(2)nand flash:只有8位/16位/32位甚至更多位寬的總線,每次訪問,都要將長地址分為幾部分,一點點的分步傳入才能訪問nand flash。Nand Flash相比其余的幾種flash優勢在於可擦寫次數多,擦寫速度快,但是在使用以及使用過程中會出現壞塊因此需要做特殊處理才可以使用。其主要用於數據存儲,大部分U盤都是Nand Flash。
Nand和Nor的使用壽命,塊擦除的速度,數據存儲的出錯幾率等,都有很大區別。
任何 flash器件的寫入操作只能在空或已擦除的單元內進行,所以大多數情況下,在進行寫入操作之前必須先執行擦除。NAND器件執行擦除操作是十分簡單的,而NOR則要求在進行擦除前先要將目標塊內所有的位都寫為1。
由於擦除NOR器件時是以64~128KB的塊進行的,執行一個寫入/擦除操作的時間為5s ,與此相反,擦除NAND器件是以8~32KB的塊進行的,執行相同的操作最多只需要4ms。執行擦除時塊尺寸的不同進一步拉大了NOR和NAND之間的性能差距。
NOR flash帶有SRAM接口,有足夠的地址引腳來尋址,可以很容易地存取其內部的每一個字節。
NAND器件使用復雜的I/O口來串行地存取數據,各個產品或廠商的方法可能各不相同 。8個引腳用來傳送控制、地址和數據信息。NAND讀和寫操作采用512字
節的塊,這一點有點像硬盤管理此類操作,很自然地,基於NAND的存儲器就可以取代硬盤或其他塊設備。NAND Flash 的數據是以bit的方式保存在memory cell,
一般來說,一個cell 中只能存儲一個bit。這些cell 以8個或者16個為單位,連成bitline,形成所謂的byte(x8)/word(x16),這就是NAND Device的位寬。這些Line
會再組成Page,(NAND Flash 有多種結構,以三星的K9F1208U0M),每頁528Bytes(512byte(MainArea)+16byte(Spare Area)為例),每32個page形成一個
Block(32*528B)。具體一片flash上有多少個Block視需要所定,實例的NAND FLASH 有 4096個block,故總容量為4096*(32*528B)=66MB,但是其中的
2MB是用來保存ECC校驗碼等額外數據的,故實際中可使用的為64MB。
NAND flash以頁為單位讀寫數據,而以塊為單位擦除數據。按照這樣的組織方式可以形成所謂的三類地址:
Column Address:列地址
Page Address :頁地址
Block Address :塊地址
對於NAND Flash來講,地址和命令只能在I/O[7:0]上傳遞,數據寬度是8位。所有flash器件都受位交換現象的困擾。在某些情況下,一個比特位會發生反轉或被
報告反轉了。一位的變化可能不很明顯,但是如果發生在一個關鍵文件上,這個小小的故障可能導致系統停機。如果只是報告有問題,多讀幾次就可能解決了。當然,
如果這個位真的改變了,就必須采用錯誤探測/錯誤更正(EDC/ECC)算法。位反轉的問題更多見於NAND閃存,NAND的供應商建議使用NAND閃存的時候,同時使用
EDC/ECC算法。這個問題對於用NAND存儲多媒體信息時倒不是致命的。當然,如果用本地存儲設備來存儲操作系統、配置文件或其他敏感信息時,必須使用
EDC/ECC系統以確保可靠性。NAND器件中的壞塊是隨機分布的。NAND器件需要對介質進行初始化掃描以發現壞塊,並將壞塊標記為不可用。在已制成的器件中,
如果通過可靠的方法不能進行這項處理,將導致高故障率。
可以非常直接地使用基於NOR的閃存,可以像其他存儲器那樣連接,並可以在上面直接運行代碼。對於NAND器件,由於需要I/O接口,NAND器件使用要復雜得
多。各種NAND器件的存取方法因廠家而異。在使用NAND器件時,必須先寫入驅動程序,才能繼續執行其他操作。向NAND器件寫入信息需要相當的技巧,因為絕不
能向壞塊寫入,這就意味着在NAND器件上自始至終都必須進行虛擬映射。
在NOR器件上運行代碼不需要任何的軟件支持,在NAND器件上進行同樣操作時,通常需要驅動程序,也就是內存技術驅動程序(MTD ),NAND和NOR器件在進
行寫入和擦除操作時都需要MTD。
驅動還用於對DiskOnChip產品進行仿真和NAND閃存的管理,包括糾錯、壞塊處理和 損耗平衡。NAND FLASH的主要供應商是SAMSUNG和東芝,在U盤、各
種存儲卡、MP3播放器里面的都是這種FLASH,由於工藝上的不同,它比NORFLASH擁有更大存儲容量,而且便宜。但也有缺點,就是無法尋址直接運行程序,只能
存儲數據。另外NAND FLASH 非常容易出現壞區,所以需要有校驗的算法。