學習嵌入式之前,這些概念要搞清~

ROM(Read Only Memory)和RAM(Random Access Memory)指的都是半導體存儲器,ROM在系統停止供電的時候仍然可以保持數據,而RAM通常是在掉電之後就丟失數據,典型的RAM就是計算機的內存。

ROM有很多種,PROM是可編程的ROM,它和EPROM(可擦除可編程ROM)的區別是,PROM是一次性的,也就是軟件灌入後,就無法修改了,這是早期的產品,現在已經不再使用,而EPROM是通過紫外光的照射擦出原先的程序的一種通用存儲器。另外一種EEPROM是通過電子擦除,價格很高,寫入時間很長,寫入慢。

舉個例子,手機軟件一般放在EEPROM中,我們打電話,有些最後撥打的號碼,暫時存在SRAM中,不是馬上寫入通話記錄(通話記錄保存在EEPROM中),因爲當時有很重要工作(通話)要做,如果寫入,漫長的等待用戶無法忍受。

RAM有兩大類,一種稱爲靜態RAM(Static RAM/SRAM),SRAM速度非常快,是目前讀寫最快的存儲設備了,它也非常昂貴,所以只在要求很苛刻的地方使用,譬如CPU的一級緩衝,二級緩衝。

另一種稱爲動態RAM(Dynamic RAM/DRAM),DRAM保留數據的時間很短,速度也比SRAM慢,不過它還是比任何的ROM都要快,但從價格上來說DRAM相比SRAM要便宜很多,計算機內存就是DRAM的。

DRAM分爲很多種,常見的主要有FPRAM/FastPage、EDORAM、SDRAM、DDR RAM、RDRAM、SGRAM以及WRAM等,這裏介紹其中的一種DDR RAM。

DDR RAM(Date-Rate RAM)也稱作DDR SDRAM,這種改進型的RAM和SDRAM是基本一樣的,不同之處在於它可以在一個時鐘讀寫兩次數據,這樣就使得數據傳輸速度加倍了。這是目前電腦中用得最多的內存,而且它有着成本優勢,擊敗了Intel的另外一種內存標準-Rambus DRAM。在很多高端的顯卡上,也配備了高速DDR RAM來提高帶寬,這可以大幅度提高3D加速卡的像素渲染能力。

內存工作原理簡析

內存是用來存放當前正在使用的(即執行中)的數據和程序,我們平常所提到的計算機的內存指的是動態內存(即DRAM),動態內存中所謂的“動態”,指的是當我們將數據寫入DRAM後,經過一段時間,數據會丟失,因此需要一個額外設電路進行內存刷新操作。

具體的工作過程是這樣的:一個DRAM的存儲單元存儲的是0還是1取決於電容是否有電荷,有電荷代表1,無電荷代表0。但時間一長,代表1的電容會放電,代表0的電容會吸收電荷,這就是數據丟失的原因; 刷新操作定期對電容進行檢查,若電量大於滿電量的1/2,則認爲其代表1,並把電容充滿電; 若電量小於1/2,則認爲其代表0,並把電容放電,藉此來保持數據的連續性。

NAND Flash和NOR Flash的比較

常用的Flash類型有:NOR Flash和NAND Flash兩種。NOR Flash由Intel公司在1988年發明,以替代當時在市場上佔據主要地位的EPROM和EEPROM。NANDFlash由Toshiba公司在1989年發明。兩者的主要差別如下表所示。

這裏寫圖片描述
NOR/NAND Flash的差別

NOR Flash支持XIP,即代碼可以直接在NOR Flash上執行,無需拷貝到內存中。這是由於NOR Flash的接口與RAM完全相同,可以隨機訪問任意地址的數據。在NOR Flash上進行讀操作的效率非常高,但是擦除和寫操作的效率很低;另外,NOR Flash的容量一般比較小。NAND Flash進行擦除和寫操作的效率更高,並且容量更大。一般而言,NOR Flash用於存儲程序,NAND Flash用於存儲數據。基於NAND Flash的設備通常也要搭配NOR Flash以存儲程序。

Flash存儲器件由擦除單元(也稱爲塊)組成,當要寫某個塊時,需要確保這個塊已經被擦除。NOR Flash的塊大小範圍爲64KB~128KB;NAND Flash的塊大小範圍爲8KB~64KB,擦/寫一個NOR Flash塊需4S,而擦/寫一個NAND Flash塊僅需2ms。NORFlash的塊太大,不僅增加了擦寫時間,對於給定的寫操作,NOR Flash也需要更多的擦除操作——特別是小文件,比如一個文件只有1KB,但是爲了保存它卻需要擦除大小爲64KB~128KB的NOR Flash塊。

NOR Flash的接口與RAM完全相同,可以隨意訪問任意地址的數據。而NAND Flash的接口僅僅包含幾個I/O引腳,需要串行地訪問。NAND Flash一般以512字節爲單位進行讀寫。這使得NOR Flash適合於運行程序,而NAND Flash更適合於存儲數據。

容量相同的情況下,NAND Flash的體積更小,對於空間有嚴格要求的系統,NAND Flash可以節省更多空間。市場上NOR Flash的容量通常爲1~4MB(也有32MB的NOR Flash),NANDFlash的容量爲8~512MB。容量的差別也使得NOR Flash多用於存儲程序,NAND Flash多用於存儲數據。

對於Flash存儲器件的可靠性需要考慮3點:位反轉、壞塊和可擦除次數。所有Flash器件都遭遇位反轉的問題:由於FLASH固有的電器特性,在讀寫數據過程中,偶然會產生一位或幾位數據錯誤——這種概率很低,而NAND Flash出現的概率遠大於NOR Flash。當位反轉發生在關鍵的代碼、數據上時,有可能導致系統崩潰。

當僅僅是報告位反轉,重新讀取即可;如果確實發生了位反轉,則必須有相應的錯誤檢測/恢復措施。在NAND Flash上發生位反轉的概率更高,推薦使用EDC/ECC進行錯誤檢測和恢復。NAND Flash上面會有壞塊隨機分佈,在使用前需要將壞塊掃描出來,確保不再使用它們,否則會使產品含有嚴重的故障。NAND Flash每塊的可擦除次數通常在100000次左右,是NOR Flash的10倍。另外,因爲NAND Flash的塊大小通常是NOR Flash的1/8,所以NAND Flash的壽命遠遠超過NOR Flash。

linux對NOR、NAND Flash的軟件支持都很成熟。在NOR Flash上常用jffs2文件系統,而在NAND Flash上常用yaffs文件系統。在更底層,有MTD驅動程序實現對它們的讀、寫、擦除操作,它也實現了EDC/ECC校驗。
這裏寫圖片描述

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