ROM在系統(tǒng)停止供電的時(shí)候仍然可以保持?jǐn)?shù)據(jù)
RAM通常都是在掉電之后就丟失數(shù)據(jù),,典型的就是計(jì)算機(jī)的內(nèi)存。
一,、ROM也有很多種:PROM(可編程的ROM),、EPROM(可擦除可編程ROM)、EEPROM
1,、PROM是一次性的,,早期的產(chǎn)品,現(xiàn)在已經(jīng)不可能使用了,;
2,、EPROM是通過(guò)紫外光的照射擦出原先的程序,是一種通用的存儲(chǔ)器,;
3,、EEPROM是通過(guò)電子擦出,價(jià)格很高,,寫(xiě)入時(shí)間很長(zhǎng),,寫(xiě)入很慢;
舉個(gè)例子,,手機(jī)軟件一般放在EEPROM中,,我們打電話,有些最后撥打的號(hào)碼,,暫時(shí)是存在SRAM中的,,不是馬上寫(xiě)入通訊記錄(通話記錄保存在EEPROM中),因?yàn)楫?dāng)時(shí)有很重要工作(通話)要做,,如果寫(xiě)入,,漫長(zhǎng)的等待是讓用戶(hù)忍無(wú)可忍的。
二,、RAM有兩大類(lèi):靜態(tài)RAM(StaticRAM/SRAM)和動(dòng)態(tài)RAM(Dynamic RAM/DRAM)
1,、SRAM
不需要刷新電路,掉電丟失數(shù)據(jù),,而且一般不是行列地址復(fù)用的,。
集成度比較低,,不適合做容量大的內(nèi)存,一般是用在處理器的緩存里面,。像S3C2440的ARM9處理器里面就有4K的SRAM用來(lái)做CPU啟動(dòng)時(shí)用的,;
SRAM內(nèi)部采用的是雙穩(wěn)態(tài)電路的形式來(lái)存儲(chǔ)數(shù)據(jù);
制造相同容量的SRAM比DRAM的成本高的多,;
因此目前SRAM基本上只用于CPU內(nèi)部的一級(jí)緩存以及內(nèi)置的二級(jí)緩存,。僅有少量的網(wǎng)絡(luò)服務(wù)器以及路由器上能夠使用SRAM。
2,、DRAM
掉電丟失數(shù)據(jù),。每隔一段時(shí)間就要刷新一次數(shù)據(jù),才能保存數(shù)據(jù),。而且是行列地址復(fù)用的,,許多都有頁(yè)模式。DRAM利用MOS管的柵電容上的電荷來(lái)存儲(chǔ)信息,,一旦掉電信息會(huì)全部的丟失,由于柵極會(huì)漏電,,所以每隔一定的時(shí)間就需要一個(gè)刷新機(jī)構(gòu)給這些柵電容補(bǔ)充電荷,,并且每讀出一次數(shù)據(jù)之后也需要補(bǔ)充電荷,這個(gè)就叫動(dòng)態(tài)刷新,,所以稱(chēng)其為動(dòng)態(tài)隨機(jī)存儲(chǔ)器,。由于它只使用一個(gè)MOS管來(lái)存信息,所以集成度可以很高,,容量能夠做的很大,。SDRAM比它多了一個(gè)與CPU時(shí)鐘同步。
DRAM保留數(shù)據(jù)的時(shí)間很短,,速度也比SRAM慢,,不過(guò)它還是比任何的ROM都要快;
從價(jià)格上來(lái)說(shuō)DRAM相比SRAM要便宜很多,,計(jì)算機(jī)內(nèi)存就是DRAM的,;
DRAM分為很多種,常見(jiàn)的主要有FPRAM/FastPage,、EDORAM,、SDRAM、DDR RAM,、RDRAM,、SGRAM以及WRAM等,這里介紹其中的一種DDR RAM,。
一個(gè)DRAM的存儲(chǔ)單元存儲(chǔ)的是0還是1取決于電容是否有電荷,,有電荷代表1,,無(wú)電荷代表0。但時(shí)間一長(zhǎng),,代表1的電容會(huì)放電,,代表0的電容會(huì)吸收電荷,這就是數(shù)據(jù)丟失的原因,;刷新操作定期對(duì)電容進(jìn)行檢查,,若電量大于滿電量的1/2,則認(rèn)為其代表1,,并把電容充滿電,;若電量小于1/2,則認(rèn)為其代表0,,并把電容放電,,藉此來(lái)保持?jǐn)?shù)據(jù)的連續(xù)性。
2.1,、DDR RAM(Data-Rate RAM)也稱(chēng)作DDR SDRAM
這種改進(jìn)型的RAM和SDRAM是基本一樣的,,不同之處在于它可以在一個(gè)時(shí)鐘讀寫(xiě)兩次數(shù)據(jù),這樣就使得數(shù)據(jù)傳輸速度加倍了,。這是目前電腦中用得最多的內(nèi)存,。在很多高端的顯卡上,也配備了高速DDR RAM來(lái)提高帶寬,,這可以大幅度提高3D加速卡的像素渲染能力,。
2.2、SDRAM(Synchronous DRAM,,同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器)
即數(shù)據(jù)的讀寫(xiě)需要時(shí)鐘來(lái)同步,。
其存儲(chǔ)單元不是按線性排列的,是分頁(yè)的,。
DRAM和SDRAM由于實(shí)現(xiàn)工藝問(wèn)題,,容量較SRAM大。但是讀寫(xiě)速度不如SRAM,。
一般的嵌入式產(chǎn)品里面的內(nèi)存都是用的SDRAM,。
三、Flash(閃存)
它結(jié)合了ROM和RAM的長(zhǎng)處,,不僅具備電子可擦除可編程(EEPROM)的性能,,還不會(huì)斷電丟失數(shù)據(jù)同時(shí)可以快速讀取數(shù)據(jù)(NVRAM的優(yōu)勢(shì)),U盤(pán)和MP3里用的就是這種存儲(chǔ)器,。
在過(guò)去的20年里,,嵌入式系統(tǒng)一直使用ROM(EPROM)作為它們的存儲(chǔ)設(shè)備,然而近年來(lái)Flash全面代替了ROM(EPROM)在嵌入式系統(tǒng)中的地位,,它用作存儲(chǔ)Bootloader以及操作系統(tǒng)或者程序代碼,,或者直接當(dāng)硬盤(pán)使用(U盤(pán)),。
采用的并行接口,有獨(dú)立的地址線和數(shù)據(jù)線,,性能特點(diǎn)更像內(nèi)存,,是芯片內(nèi)執(zhí)行(XIP, eXecute In Place),,這樣應(yīng)用程序可以直接在flash閃存內(nèi)運(yùn)行,,不必再把代碼讀到系統(tǒng)RAM中。
NAND采用的是串行的接口,,地址線和數(shù)據(jù)線是共用的I/O線,,類(lèi)似電腦硬盤(pán)。CPU從里面讀取數(shù)據(jù)的速度很慢,,所以一般用NAND做閃存的話就必須把NAND里面的數(shù)據(jù)先讀到內(nèi)存里面,,然后CPU才能夠執(zhí)行。無(wú)法尋址和直接運(yùn)行程序,,只能存儲(chǔ)數(shù)據(jù),。另外NAND FLASH非常容易出現(xiàn)壞區(qū),所以需要有校驗(yàn)的算法,。
NOR Flash:用戶(hù)可以直接運(yùn)行裝載在NOR FLASH里面的代碼
目前Flash主要有NOR Flash和NADN Flash
1,、類(lèi)型
分為NOR(或非)、 NAND(與非)
2,、接口理解
NOR(或非)----地址、數(shù)據(jù)總線分開(kāi),;
NAND(與非)----地址,、數(shù)據(jù)總線共用。
3,、讀寫(xiě)單位:
NOR(或非)----字節(jié),;
NAND(與非)----頁(yè)
4、組成結(jié)構(gòu):
NOR(或非)----扇區(qū),、字節(jié),;
NAND(與非)----塊、頁(yè),;
5,、擦除單位:
NOR(或非)----扇區(qū);
NAND(與非)----塊,;
6,、讀寫(xiě)擦除速度
NOR的讀速度比NAND稍快一些。
NAND的寫(xiě)入/擦除速度比NOR快很多,。
flash閃存是非易失存儲(chǔ)器,,可以對(duì)稱(chēng)為塊的存儲(chǔ)器單元塊進(jìn)行擦寫(xiě)和再編程,。任何flash器件的寫(xiě)入操作只能在空或已擦除的單元內(nèi)進(jìn)行,所以大多數(shù)情況下,,在進(jìn)行寫(xiě)入操作之前必須先執(zhí)行擦除,。NAND器件執(zhí)行擦除操作是十分簡(jiǎn)單的,而NOR則要求在進(jìn)行擦除前先要將目標(biāo)塊內(nèi)所有的位都寫(xiě)為0,。由于擦除NOR器件時(shí)是以64~128KB的塊進(jìn)行的,,執(zhí)行一個(gè)寫(xiě)入/擦除操作的時(shí)間為5s,與此相反,,擦除NAND器件是以8~32KB的塊進(jìn)行的,,執(zhí)行相同的操作最多只需要4ms。
NAND的擦除單元更小,,相應(yīng)的擦除電路更少,。
(注:NOR FLASH SECTOR擦除時(shí)間視品牌,、大小不同而不同,,比如,4M FLASH,,有的SECTOR擦除時(shí)間為60ms,,而有的需要最大6s。)
7,、容量
NOR flash占據(jù)了容量為1~16MB閃存市場(chǎng)的大部分
NAND flash只是用在8~128MB的產(chǎn)品當(dāng)中,,這也說(shuō)明NOR主要應(yīng)用在代碼存儲(chǔ)介質(zhì)中,NAND適合于數(shù)據(jù)存儲(chǔ)
8,、可靠性和耐用性:
可以從壽命(耐用性),、位交換和壞塊處理三個(gè)方面來(lái)比較NOR和NAND的可靠性。
A)壽命(耐用性)
在NAND閃存中每個(gè)塊的最大擦寫(xiě)次數(shù)是一百萬(wàn)次,,而NOR的擦寫(xiě)次數(shù)是十萬(wàn)次,。
NAND存儲(chǔ)器除了具有10比1的塊擦除周期優(yōu)勢(shì),典型的NAND塊尺寸要比NOR器件小8倍,,每個(gè)NAND存儲(chǔ)器塊在給定的時(shí)間內(nèi)的刪除次數(shù)要少一些,。
B)位交換
所有flash器件都受位交換現(xiàn)象的困擾。在某些情況下(很少見(jiàn),,NAND發(fā)生的次數(shù)要比NOR多),,一個(gè)比特(bit)位會(huì)發(fā)生反轉(zhuǎn)或被報(bào)告反轉(zhuǎn)了。
一位的變化可能不很明顯,,但是如果發(fā)生在一個(gè)關(guān)鍵文件上,,這個(gè)小小的故障可能導(dǎo)致系統(tǒng)停機(jī)。如果只是報(bào)告有問(wèn)題,多讀幾次就可能解決了,。
當(dāng)然,,如果這個(gè)位真的改變了,就必須采用錯(cuò)誤探測(cè)/錯(cuò)誤更正(EDC/ECC)算法,。位反轉(zhuǎn)的問(wèn)題更多見(jiàn)于NAND閃存,,NAND的供應(yīng)商建議使用NAND閃存的時(shí)候,同時(shí)使用EDC/ECC算法,。
這個(gè)問(wèn)題對(duì)于用NAND存儲(chǔ)多媒體信息時(shí)倒不是致命的,。當(dāng)然,如果用本地存儲(chǔ)設(shè)備來(lái)存儲(chǔ)操作系統(tǒng),、配置文件或其他敏感信息時(shí),,必須使用EDC/ECC系統(tǒng)以確保可靠性,。
C)壞塊處理
NAND器件需要對(duì)介質(zhì)進(jìn)行初始化掃描以發(fā)現(xiàn)壞塊,,并將壞塊標(biāo)記為不可用。在已制成的器件中,,如果通過(guò)可靠的方法不能進(jìn)行這項(xiàng)處理,,將導(dǎo)致高故障率。
9,、易于使用:
基于NOR的閃存,,可以像其他存儲(chǔ)器那樣連接,并可以在上面直接運(yùn)行代碼,。
由于NANDLFASH需要I/O接口,,所以要復(fù)雜得多。各種NAND器件的存取方法因廠家而異,。
在使用NAND器件時(shí),,必須先寫(xiě)入驅(qū)動(dòng)程序,才能繼續(xù)執(zhí)行其他操作,。向NAND器件寫(xiě)入信息需要相當(dāng)?shù)募记桑驗(yàn)樵O(shè)計(jì)師絕不能向壞塊寫(xiě)入,,這就意味著在NAND器件上自始至終都必須進(jìn)行虛擬映射,。
10、軟件支持:
在NOR器件上運(yùn)行代碼不需要任何的軟件支持,;
在NAND器件上進(jìn)行執(zhí)行操作時(shí),,通常需要 驅(qū)動(dòng)程序,也就是內(nèi)存技術(shù)驅(qū)動(dòng)程序(MTD),;
NAND和NOR器件在進(jìn)行寫(xiě)入和擦除操作時(shí)都需要MTD,。
11、尋址:
NAND每次讀取數(shù)據(jù)時(shí)都是指定塊地址,、頁(yè)地址,、列地址,,列地址就是讀的頁(yè)內(nèi)起始地址,每次都是先將數(shù)據(jù)讀入頁(yè)緩沖區(qū)內(nèi),,再 由I/O輸入地址 在緩沖區(qū)內(nèi)尋址,,其實(shí)這里列地址,只是指定起始地址的作用,。NAND是以頁(yè)為基本單位 操作的,。寫(xiě)入數(shù)據(jù)也是首先在頁(yè)面緩沖區(qū)內(nèi)緩沖,數(shù)據(jù)首先寫(xiě)入這里,,再寫(xiě)命令后,,再統(tǒng)一寫(xiě)入頁(yè)內(nèi)。因此NAND頁(yè)緩沖區(qū)的作用就是,,保證芯片的按頁(yè)的讀,、寫(xiě)操作,是I/O操作與芯片操作的接口,、橋梁,,因?yàn)閿?shù)據(jù)是從I/O輸入的,又是每次一個(gè)字節(jié),,因此需要緩沖,。即使每次改寫(xiě)一個(gè)字節(jié),都要重寫(xiě)整個(gè)頁(yè),,因?yàn)樗恢С猪?yè)寫(xiě),,而且如果頁(yè)內(nèi)有未擦除的部分,則無(wú)法編程,,在寫(xiě)入前必須保證頁(yè)是空的,。
NOR的 讀、寫(xiě)是字節(jié)為基本單位操作的,,但擦除是以扇區(qū)操作的,。
綜上所述在芯片操作上,NAND要比NOR快很多,,因?yàn)镹AND是頁(yè)操作的而NOR是字節(jié)操作的,。
12、應(yīng)用:
NAND 正是基于這種構(gòu)造:塊,、頁(yè),,無(wú)法字節(jié)尋址,頁(yè)讀寫(xiě)本身就靠的是內(nèi)部復(fù)雜的串,、并行轉(zhuǎn)換 ,,因此也沒(méi)有很多地址引腳,所以其地址、數(shù)據(jù)線共用,,所以容量可以做的很大 ,。
NOR 是和SRAM一樣的可隨機(jī)存儲(chǔ)的,也不需要驅(qū)動(dòng),,因此,,其地址就有限,所以容量普遍較小,,其實(shí)是受限于地址線,。
基于以上幾點(diǎn),在工業(yè)領(lǐng)域,,NOR 用的較多,,特別是程序存儲(chǔ),少量數(shù)據(jù)存儲(chǔ)等,。
在消費(fèi)領(lǐng)域,,大量數(shù)據(jù)存儲(chǔ),NAND較多,。
Flash ROM是利用浮置柵上的電容存儲(chǔ)電荷來(lái)保存信息,,因?yàn)楦≈脰挪粫?huì)漏電,所以斷電后信息仍然可以保存,。也由于其機(jī)構(gòu)簡(jiǎn)單所以集成度可以做的很高,,容量可以很大。Flash rom寫(xiě)入前需要用電進(jìn)行擦除,,而且擦除不同與EEPROM可以以byte(字節(jié))為單位進(jìn)行,,flash rom只能以sector(扇區(qū))為單位進(jìn)行。不過(guò)其寫(xiě)入時(shí)可以byte為單位,。flash rom主要用于bios,,U盤(pán),Mp3等需要大容量且斷電不丟數(shù)據(jù)的設(shè)備
存儲(chǔ)器局限性
閃存最關(guān)鍵的限制可能是寫(xiě)/擦除周期數(shù)有限,。
為應(yīng)對(duì)這種限制,,可采用固件或文件系統(tǒng)驅(qū)動(dòng)器,對(duì)存儲(chǔ)器寫(xiě)的次數(shù)進(jìn)行逐次計(jì)數(shù),。這些軟件將動(dòng)態(tài)地重新映射這些塊,,在扇區(qū)間分享寫(xiě)操作。換句話說(shuō),,萬(wàn)一寫(xiě)操作失敗,軟件通過(guò)寫(xiě)驗(yàn)證和重新映射向未使用的扇區(qū)授權(quán)寫(xiě)操作,。
像RAM一樣,,閃存可以一個(gè)字節(jié)或一個(gè)字一次進(jìn)行讀或編程,但擦除必須是一次進(jìn)行一個(gè)完整的塊,將塊中的所有位重新置位為1,。這意味著需要花更多時(shí)間進(jìn)行編程,。例如,如果將一位(0)寫(xiě)入一個(gè)塊,,要對(duì)該塊重新編程,,就必須完全擦除此塊,而不是僅僅重寫(xiě)該位,。