版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、NOR與NAND非易失閃存技術(shù)的原理與區(qū)別NOR和NAND是現(xiàn)在市場上兩種主要的非易失閃存技術(shù)。 Intel于1988年首先開發(fā)出NOR flash技術(shù),徹底改變了原先由EPROM和EEPROM一統(tǒng)天下的局面。緊接著,1989年,東芝公司發(fā)表了NAND flash結(jié)構(gòu),強(qiáng)調(diào)降低每比特的成本,更高的性能,并且象磁盤一樣可以通過接口輕松升級(jí)。但是經(jīng)過了十多年之后,仍然有相當(dāng)多的硬件工程師分不清NOR和NAND閃存。簡單的來說,NAND規(guī)格快閃記憶體像硬碟,以儲(chǔ)存數(shù)據(jù)為主,又稱為Data Flash,晶片容量大,目前主流容量已達(dá)二Gb;NOR規(guī)格記憶體則類似DRAM,以儲(chǔ)存程序代碼為主,又稱為Co
2、deFlash,所以可讓微處理器直接讀取,但晶片容量較低,主流容量為512Mb。相“flash存儲(chǔ)器”經(jīng)常可以與相“NOR存儲(chǔ)器”互換使用。許多業(yè)內(nèi)人士也搞不清楚NAND閃存技術(shù)相對(duì)于NOR技術(shù)的優(yōu)越之處,因?yàn)榇蠖鄶?shù)情況下閃存只是用來存儲(chǔ)少量的代碼,這時(shí)NOR閃存更適合一些。而NAND則是高數(shù)據(jù)存儲(chǔ)密度的理想解決方案。NOR的特點(diǎn)是芯片內(nèi)執(zhí)行(XIP, eXecute In Place),這樣應(yīng)用程序可以直接在flash閃存內(nèi)運(yùn)行,不必再把代碼讀到系統(tǒng)RAM中。NOR的傳輸效率很高,在14MB的小容量時(shí)具有很高的成本效益,但是很低的寫入和擦除速度大大影響了它的性能。NAND結(jié)構(gòu)能提供極高的單元
3、密度,可以達(dá)到高存儲(chǔ)密度,并且寫入和擦除的速度也很快。應(yīng)用NAND的困難在于flash的管理和需要特殊的系統(tǒng)接口。1.性能比較flash閃存是非易失存儲(chǔ)器,可以對(duì)稱為塊的存儲(chǔ)器單元塊進(jìn)行擦寫和再編程。任何flash器件的寫入操作只能在空或已擦除的單元內(nèi)進(jìn)行,所以大多數(shù)情況下,在進(jìn)行寫入操作之前必須先執(zhí)行擦除。NAND器件執(zhí)行擦除操作是十分簡單的,而NOR則要求在進(jìn)行擦除前先要將目標(biāo)塊內(nèi)所有的位都寫為0。 由于擦除NOR器件時(shí)是以64128KB的塊進(jìn)行的,執(zhí)行一個(gè)寫入/擦除操作的時(shí)間為5s,與此相反,擦除NAND器件是以832KB的塊進(jìn)行的,執(zhí)行相同的操作最多只需要4ms。執(zhí)行擦除時(shí)塊尺寸的不同
4、進(jìn)一步拉大了NOR和NADN之間的性能差距,統(tǒng)計(jì)表明,對(duì)于給定的一套寫入操作(尤其是更新小文件時(shí)), 更多的擦除操作必須在基于NOR的單元中進(jìn)行。這樣,當(dāng)選擇存儲(chǔ)解決方案時(shí),設(shè)計(jì)師必須權(quán)衡以下的各項(xiàng)因素。 NOR的讀速度比NAND稍快一些。 NAND的寫入速度比NOR快很多。 NAND的4ms擦除速度遠(yuǎn)比NOR的5S快。 大多數(shù)寫入操作需要先進(jìn)行擦除操作。 NAND的擦除單元更小,相應(yīng)的擦除電路更少。2.接口差別NOR flash帶有SRAM接口,有足夠的地址引腳來尋址,可以很容易地存取其內(nèi)部的每一個(gè)字節(jié)。NAND器件使用復(fù)雜的I/O口來串行地存取數(shù)據(jù),各個(gè)產(chǎn)品或廠商的方法可能各不相同。8個(gè)引
5、腳用來傳送控制、地址和數(shù)據(jù)信息。NAND讀和寫操作采用512字節(jié)的塊,這一點(diǎn)有點(diǎn)像硬盤管理此類操作,很自然地,基于NAND的存儲(chǔ)器就可以取代硬盤或其他塊設(shè)備。3.容量和成本NAND flash的單元尺寸幾乎是NOR器件的一半,由于生產(chǎn)過程更為簡單,NAND結(jié)構(gòu)可以在給定的模具尺寸內(nèi)提供更高的容量,也就相應(yīng)地降低了價(jià)格。 NOR flash占據(jù)了容量為116MB閃存市場的大部分,而NAND flash只是用在8128MB的產(chǎn)品當(dāng)中,這也說明NOR主要應(yīng)用在代碼存儲(chǔ)介質(zhì)中,NAND適合于數(shù)據(jù)存儲(chǔ),NAND在CompactFlash、 Secure Digital、PC Cards和MMC存儲(chǔ)卡市場
6、上所占份額最大。4.可靠性和耐用性采用flahs介質(zhì)時(shí)一個(gè)需要重點(diǎn)考慮的問題是可靠性。對(duì)于需要擴(kuò)展MTBF的系統(tǒng)來說,F(xiàn)lash是非常合適的存儲(chǔ)方案??梢詮膲勖?耐用性)、位交換和壞塊處理三個(gè)方面來比較NOR和NAND的可靠性。5.壽命(耐用性) 在NAND閃存中每個(gè)塊的最大擦寫次數(shù)是一百萬次,而NOR的擦寫次數(shù)是十萬次。NAND存儲(chǔ)器除了具有10比1的塊擦除周期優(yōu)勢(shì),典型的NAND塊尺寸要比NOR器件小8倍,每個(gè)NAND存儲(chǔ)器塊在給定的時(shí)間內(nèi)的刪除次數(shù)要少一些。位交換所有flash器件都受位交換現(xiàn)象的困擾。在某些情況下(很少見,NAND發(fā)生的次數(shù)要比NOR多),一個(gè)比特位會(huì)發(fā)生反轉(zhuǎn)或被報(bào)告反
7、轉(zhuǎn)了。一位的變化可能不很明顯,但是如果發(fā)生在一個(gè)關(guān)鍵文件上,這個(gè)小小的故障可能導(dǎo)致系統(tǒng)停機(jī)。如果只是報(bào)告有問題,多讀幾次就可能解決了。當(dāng)然,如果這個(gè)位真的改變了,就必須采用錯(cuò)誤探測(cè)/錯(cuò)誤更正(EDC/ECC)算法。位反轉(zhuǎn)的問題更多見于NAND閃存,NAND的供應(yīng)商建議使用NAND閃存的時(shí)候,同時(shí)使用EDC/ECC算法。這個(gè)問題對(duì)于用NAND存儲(chǔ)多媒體信息時(shí)倒不是致命的。當(dāng)然,如果用本地存儲(chǔ)設(shè)備來存儲(chǔ)操作系統(tǒng)、配置文件或其他敏感信息時(shí),必須使用EDC/ECC系統(tǒng)以確保可靠性。6.壞塊處理NAND器件中的壞塊是隨機(jī)分布的。以前也曾有過消除壞塊的努力,但發(fā)現(xiàn)成品率太低,代價(jià)太高,根本不劃算。NAND
8、器件需要對(duì)介質(zhì)進(jìn)行初始化掃描以發(fā)現(xiàn)壞塊,并將壞塊標(biāo)記為不可用。在已制成的器件中,如果通過可靠的方法不能進(jìn)行這項(xiàng)處理,將導(dǎo)致高故障率。7.易于使用可以非常直接地使用基于NOR的閃存,可以像其他存儲(chǔ)器那樣連接,并可以在上面直接運(yùn)行代碼。 由于需要I/O接口,NAND要復(fù)雜得多。各種NAND器件的存取方法因廠家而異。在使用NAND器件時(shí),必須先寫入驅(qū)動(dòng)程序,才能繼續(xù)執(zhí)行其他操作。向NAND器件寫入信息需要相當(dāng)?shù)募记?,因?yàn)樵O(shè)計(jì)師絕不能向壞塊寫入,這就意味著在NAND器件上自始至終都必須進(jìn)行虛擬映射。8.軟件支持當(dāng)討論軟件支持的時(shí)候,應(yīng)該區(qū)別基本的讀/寫/擦操作和高一級(jí)的用于磁盤仿真和閃存管理算法的軟件
9、,包括性能優(yōu)化。在NOR器件上運(yùn)行代碼不需要任何的軟件支持,在NAND器件上進(jìn)行同樣操作時(shí),通常需要驅(qū)動(dòng)程序,也就是內(nèi)存技術(shù)驅(qū)動(dòng)程序(MTD),NAND和NOR器件在進(jìn)行寫入和擦除操作時(shí)都需要MTD。使用NOR器件時(shí)所需要的MTD要相對(duì)少一些,許多廠商都提供用于NOR器件的更高級(jí)軟件,這其中包括M-System的TrueFFS驅(qū)動(dòng),該驅(qū)動(dòng)被 Wind River System、Microsoft、QNX Software System、Symbian和Intel等廠商所采用。驅(qū)動(dòng)還用于對(duì)DiskOnChip產(chǎn)品進(jìn)行仿真和NAND閃存的管理,包括糾錯(cuò)、壞塊處理和損耗平衡。NOR與NAND技術(shù)的比
10、較及使用性差異1)閃存芯片讀寫的基本單位不同 應(yīng)用程序?qū)OR芯片操作以“字”為基本單位。為了方便對(duì)大容量NOR閃存的管理,通常將NOR閃存分成大小為128KB或者64KB的邏輯塊,有時(shí)候塊內(nèi)還分成扇區(qū)。讀寫時(shí)需要同時(shí)指定邏輯塊號(hào)和塊內(nèi)偏移。應(yīng)用程序?qū)AND芯片操作是以“塊”為基本單位。NAND閃存的塊比較小,一般是8KB,然后每塊又分成頁,頁的大小一般是512字節(jié)。要修改NAND芯片中一個(gè)字節(jié),必須重寫整個(gè)數(shù)據(jù)塊。 2)NOR閃存是隨機(jī)存儲(chǔ)介質(zhì),用于數(shù)據(jù)量較小的場合;NAND閃存是連續(xù)存儲(chǔ)介質(zhì),適合存放大的數(shù)據(jù)。 3) 由于NOR地址線和數(shù)據(jù)線分開,所以NOR芯片可以像SRAM
11、一樣連在數(shù)據(jù)線上。NOR芯片的使用也類似于通常的內(nèi)存芯片,它的傳輸效率很高,可執(zhí)行程序可以在芯片內(nèi)執(zhí)行( XI P, eXecute In Place),這樣應(yīng)用程序可以直接在flash閃存內(nèi)運(yùn)行,不必再把代碼 讀到系統(tǒng)RAM中。由于NOR的這個(gè)特點(diǎn),嵌入式系統(tǒng)中經(jīng)常將NOR芯片做啟動(dòng)芯片使用。而NAND共用地址和數(shù)據(jù)總線,需要額外聯(lián)結(jié)一些控制的輸入輸出,所以直接將NAND芯片做啟動(dòng)芯片比較難。 4) N AN D閃存芯片因?yàn)楣灿玫刂泛蛿?shù)據(jù)總線的原因,不允許對(duì)一個(gè)字節(jié)甚至一個(gè)塊進(jìn)行的數(shù)據(jù)清空,只能對(duì)一個(gè)固定大小的區(qū)域進(jìn)行清零操作;而NOR芯片可以對(duì)字進(jìn)行操作。所以在處理小數(shù)據(jù)量的I/O操作的時(shí)
12、候的速度要快與NAND的速度。比如一塊NOR芯片通常寫一個(gè)字需要10微秒,那么在32位總線上寫512字節(jié)需要1280毫秒;而NAND閃存寫512字節(jié)需要的時(shí)間包括:512×每字節(jié)50納秒+10微秒的尋頁時(shí)間+200微秒的片擦寫時(shí)間234微秒。 5)NAND閃存的容量比較大,目前最大容量己經(jīng)達(dá)到8G字節(jié)。為了方便管理,NAND的存儲(chǔ)空間使用了塊和頁兩級(jí)存儲(chǔ)體系,也就是說閃存的存儲(chǔ)空間是二維的,比如K9F5608UOA閃存塊的大小為16K,每頁的大小是512字節(jié),每頁還預(yù)留16字節(jié)空閑區(qū)用來存放錯(cuò)誤校驗(yàn)碼空間(有時(shí)也稱為out-of-band,OOB空間);在進(jìn)行寫操作的時(shí)候NAND閃存
13、每次將一個(gè)字節(jié)的數(shù)據(jù)放入內(nèi)部的緩存區(qū),然后再發(fā)出“寫指令”進(jìn)行寫操作。由于對(duì)NAND閃存的操作都是以塊和頁為單位的,所以在向NAND閃存進(jìn)行大量數(shù)據(jù)的讀寫時(shí),NAND的速度要快于NOR閃存。 6)NOR閃存的可靠性要高于NAND閃存,這主要是因?yàn)镹OR型閃存的接口簡單,數(shù)據(jù)操作少,位交換操作少,因此可靠性高,極少出現(xiàn)壞區(qū)塊,因而一般用在對(duì)可靠性要求高的地方。相反的,NAND型閃存接口和操作均相對(duì)復(fù)雜,位交換操作也很多,關(guān)鍵性數(shù)據(jù)更是需安錯(cuò)誤探測(cè)/錯(cuò)誤更正EDC/ECC)算法來確保數(shù)據(jù)的完整性,因此出現(xiàn)問題的幾率要大得多,壞區(qū)塊也是不可避免的,而且由于壞區(qū)塊是隨機(jī)分布的,連糾錯(cuò)也無法做到。 7)
14、NAND Flash一般地址線和數(shù)據(jù)線共用,對(duì)讀寫速度有一定影響;而NOR Flash閃存數(shù)據(jù)線和地址線分開,所以相對(duì)而言讀寫速度快一些。 NAND和NOR芯片的共性首先表現(xiàn)在向芯片中寫數(shù)據(jù)必須先將芯片中對(duì)應(yīng)的內(nèi)容清空,然后再寫入,也就是通常說的“先擦后寫”。只不過NOR芯片只用擦寫一個(gè)字,而NAND需要擦寫整個(gè)塊。其次,閃存擦寫的次數(shù)都是有限的.當(dāng)閃存的使用接近使用壽命的時(shí)候,經(jīng)常會(huì)出現(xiàn)寫操作失?。坏竭_(dá)使用壽命時(shí),閃存內(nèi)部存放的數(shù)據(jù)雖然可以讀,但是不能再進(jìn)行寫操作了所以為了防止上面問題的發(fā)生,不能對(duì)某個(gè)特定的區(qū)域反復(fù)進(jìn)行寫操作。通常NAND的可擦寫次數(shù)高于NOR芯片,但是由于NAND通常是整
15、塊擦寫,塊內(nèi)的頁面中如果有一位失效整個(gè)塊就會(huì)失效,而且由于擦寫過程復(fù)雜,失敗的概率相對(duì)較高,所以從整體上來說NOR的壽命較長。 另一個(gè)共性是閃存的讀寫操作不僅僅是一個(gè)物理操作,實(shí)際上在閃存上存放數(shù)據(jù)必須使用算法實(shí)現(xiàn),這個(gè)模塊一般在驅(qū)動(dòng)程序的MTD' (Memory Technology Drivers)模塊中或者在FTLZ (Flash Translation Layer)層內(nèi)實(shí)現(xiàn),具體算法和芯片的生產(chǎn)廠商以及芯片型號(hào)有關(guān)系。 從使用角度來看,NOR閃存與NAND閃存是各有特點(diǎn)的:(1)NOR的存儲(chǔ)密度低,所以存儲(chǔ)一個(gè)字節(jié)的成本也較高,而NAND閃存的存儲(chǔ)密度和存儲(chǔ)容量均比較高;(2)
16、NAND型閃存在擦、寫文件(特別是連續(xù)的大文件)時(shí)速度非??欤浅_m用于順序讀取的場合,而NOR的讀取速度很快,在隨機(jī)存取的應(yīng)用中有良好的表現(xiàn)。NOR與NAND各有所長,但兩種優(yōu)勢(shì)無法在一個(gè)芯片上得到體現(xiàn)。所以,設(shè)計(jì)人員在選用芯片時(shí),只能趨其利而避其害,依照使用目的和主要功能在兩者之間進(jìn)行適當(dāng)?shù)倪x擇。NAND與NOR技術(shù)的比較 一般的原則是:在大容量的多媒體應(yīng)用中選用NAND型閃存,而在數(shù)據(jù)/程序存貯應(yīng)用中選用NOR型閃存。根據(jù)這一原則,設(shè)計(jì)人員也可以把兩種閃存芯片結(jié)合起來使用,用NOR芯片存儲(chǔ)程序,用NAND芯片存儲(chǔ)數(shù)據(jù),使兩種閃存的優(yōu)勢(shì)互補(bǔ)。事實(shí)上,這種聰明的設(shè)計(jì)早已普遍應(yīng)用于手
17、機(jī)、PocketPC、PDA及電子詞典等設(shè)備中了。在選擇存儲(chǔ)解決方案時(shí),設(shè)計(jì)師必須在多種因素之間進(jìn)行權(quán)衡,以獲得較高的性價(jià)比。以手機(jī)為例,采用支持XIP技術(shù)的NOR閃存能夠直接運(yùn)行OS,速度很快,既簡化了設(shè)計(jì),又降低了成本,所以許多手機(jī)都采用NORRAM的設(shè)計(jì)。NOR閃存的不足之處是存儲(chǔ)密度較低,所以也有采用NANDRAM的設(shè)計(jì)。對(duì)于這兩種方案,很難說哪一種更好,因?yàn)槲覀儾荒茈x開具體的產(chǎn)品而從某一個(gè)方面單純地去評(píng)價(jià)。追求小巧優(yōu)雅的手機(jī)將需要NOR閃存支持;追求大存儲(chǔ)容量的手機(jī)則將更多地選擇NAND閃存;而同時(shí)追求功能和速度的手機(jī)則會(huì)采用NORNANDRAM的設(shè)計(jì),這種取長補(bǔ)短的設(shè)計(jì)能夠發(fā)揮NO
18、R和NAND各自的優(yōu)勢(shì)。除了速度、存儲(chǔ)密度的因素,設(shè)計(jì)師在選擇閃存芯片時(shí),還需要考慮接口設(shè)計(jì)、即插即用設(shè)計(jì)和驅(qū)動(dòng)程序等諸多問題,因?yàn)閮煞N類型的閃存在上述幾個(gè)方面也有很多的不同。譬如在驅(qū)動(dòng)程序方面,NOR器件運(yùn)行代碼不需要任何的軟件支持,而在NAND器件上進(jìn)行同樣操作時(shí)就需要存儲(chǔ)技術(shù)驅(qū)動(dòng)程序(MTD)的支持。雖然NAND和NOR器件在進(jìn)行寫入和擦除操作時(shí)都需要MTD,但對(duì)于NAND來說驅(qū)動(dòng)程序的開發(fā)難度更大,因?yàn)镹AND閃存的糾錯(cuò)和壞塊處理功能都需要通過驅(qū)動(dòng)程序來實(shí)現(xiàn)。圖解NOR與NAND技術(shù)對(duì)于許多消費(fèi)類音視頻產(chǎn)品而言,NAND閃存是一種比硬盤驅(qū)動(dòng)器更好的存儲(chǔ)方案,這在不超過4GB的低容量應(yīng)用
19、中表現(xiàn)得猶為明顯。隨著人們持續(xù)追求功耗更低、重量更輕和性能更佳的產(chǎn)品,NAND正被證明極具吸引力。 NAND閃存陣列分為一系列128kB的區(qū)塊(block),這些區(qū)塊是NAND器件中最小的可擦除實(shí)體。擦除一個(gè)區(qū)塊就是把所有的位(bit)設(shè)置為“1”(而所有字節(jié)(byte)設(shè)置為FFh)。有必要通過編程,將已擦除的位從“1”變?yōu)椤?”。最小的編程實(shí)體是字節(jié)(byte)。一些NOR閃存能同時(shí)執(zhí)行讀寫操作(見下圖1)。雖然NAND不能同時(shí)執(zhí)行讀寫操作,它可以采用稱為“映射(shadowing)”的方法,在系統(tǒng)級(jí)實(shí)現(xiàn)這一點(diǎn)。這種方法在個(gè)人電腦上已經(jīng)沿用多年,即將BIOS從速率較低的ROM加載到速率較高
20、的RAM上。 NAND的效率較高,是因?yàn)镹AND串中沒有金屬觸點(diǎn)。NAND閃存單元的大小比NOR要小(4F2:10F2)的原因,是NOR的每一個(gè)單元都需要獨(dú)立的金屬觸點(diǎn)。NAND與硬盤驅(qū)動(dòng)器類似,基于扇區(qū)(頁),適合于存儲(chǔ)連續(xù)的數(shù)據(jù),如圖片、音頻或個(gè)人電腦數(shù)據(jù)。雖然通過把數(shù)據(jù)映射到RAM上,能在系統(tǒng)級(jí)實(shí)現(xiàn)隨機(jī)存取,但是,這樣做需要額外的RAM存儲(chǔ)空間。此外,跟硬盤一樣,NAND器件存在壞的扇區(qū),需要糾錯(cuò)碼(ECC)來維持?jǐn)?shù)據(jù)的完整性。 存儲(chǔ)單元面積越小,裸片的面積也就越小。在這種情況下,NAND就能夠?yàn)楫?dāng)今的低成本消費(fèi)市場提供存儲(chǔ)容量更大的閃存產(chǎn)品。NAND閃存用于幾乎所有可擦除的存儲(chǔ)卡。NA
21、ND的復(fù)用接口為所有最新的器件和密度都提供了一種相似的引腳輸出。這種引腳輸出使得設(shè)計(jì)工程師無須改變電路板的硬件設(shè)計(jì),就能從更小的密度移植到更大密度的設(shè)計(jì)上。 NAND與NOR閃存比較 NAND閃存的優(yōu)點(diǎn)在于寫(編程)和擦除操作的速率快,而NOR的優(yōu)點(diǎn)是具有隨機(jī)存取和對(duì)字節(jié)執(zhí)行寫(編程)操作的能力(見下圖圖2)。NOR的隨機(jī)存取能力支持直接代碼執(zhí)行(XiP),而這是嵌入式應(yīng)用經(jīng)常需要的一個(gè)功能。NAND的缺點(diǎn)是隨機(jī)存取的速率慢,NOR的缺點(diǎn)是受到讀和擦除速度慢的性能制約。NAND較適合于存儲(chǔ)文件。如今,越來越多的處理器具備直接NAND接口,并能直接從NAND(沒有NOR)導(dǎo)入數(shù)據(jù)。 NAND的真
22、正好處是編程速度快、擦除時(shí)間短。NAND支持速率超過5Mbps的持續(xù)寫操作,其區(qū)塊擦除時(shí)間短至2ms,而NOR是750ms。顯然,NAND在某些方面具有絕對(duì)優(yōu)勢(shì)。然而,它不太適合于直接隨機(jī)存取。 對(duì)于16位的器件,NOR閃存大約需要41個(gè)I/O引腳;相對(duì)而言,NAND器件僅需24個(gè)引腳。NAND器件能夠復(fù)用指令、地址和數(shù)據(jù)總線,從而節(jié)省了引腳數(shù)量。復(fù)用接口的一項(xiàng)好處,就在于能夠利用同樣的硬件設(shè)計(jì)和電路板,支持較大的NAND器件。由于普通的TSOP-1封裝已經(jīng)沿用多年,該功能讓客戶能夠把較高密度的NAND器件移植到相同的電路板上。NAND器件的另外一個(gè)好處顯然是其封裝選項(xiàng):NAND提供一種厚膜的
23、2Gb裸片或能夠支持最多四顆堆疊裸片,容許在相同的TSOP-1封裝中堆疊一個(gè)8Gb的器件。這就使得一種封裝和接口能夠在將來支持較高的密度。 圖1 不同閃存單元的對(duì)比NOR閃存的隨機(jī)存取時(shí)間為0.12ms,而NAND閃存的第一字節(jié)隨機(jī)存取速度要慢得多 NAND基本操作 以2Gb NAND器件為例,它由2048個(gè)區(qū)塊組成,每個(gè)區(qū)塊有64個(gè)頁(見圖3)。 圖3 2GB NAND閃存包含2,048個(gè)區(qū)塊 每一個(gè)頁均包含一個(gè)2048字節(jié)的數(shù)據(jù)區(qū)和64字節(jié)的空閑區(qū),總共包含2,112字節(jié)。空閑區(qū)通常被用于ECC、耗損均衡(wear leveling)和其它軟件開銷功能,盡管它在物理上與其它頁并沒有區(qū)別。N
24、AND器件具有8或16位接口。通過8或16位寬的雙向數(shù)據(jù)總線,主數(shù)據(jù)被連接到NAND存儲(chǔ)器。在16位模式,指令和地址僅僅利用低8位,而高8位僅僅在數(shù)據(jù)傳輸周期使用。 擦除區(qū)塊所需時(shí)間約為2ms。一旦數(shù)據(jù)被載入寄存器,對(duì)一個(gè)頁的編程大約要300s。讀一個(gè)頁面需要大約25s,其中涉及到存儲(chǔ)陣列訪問頁,并將頁載入16,896位寄存器中。 除了I/O總線,NAND接口由6個(gè)主要控制信號(hào)構(gòu)成: 1.芯片啟動(dòng)(Chip Enable, CE#):如果沒有檢測(cè)到CE信號(hào),那么,NAND器件就保持待機(jī)模式,不對(duì)任何控制信號(hào)作出響應(yīng)。 2.寫使能(Write Enable, WE#): WE#負(fù)責(zé)將數(shù)據(jù)、地址或
25、指令寫入NAND之中。 3.讀使能(Read Enable, RE#): RE#允許輸出數(shù)據(jù)緩沖器。 4.指令鎖存使能(Command Latch Enable, CLE): 當(dāng)CLE為高時(shí),在WE#信號(hào)的上升沿,指令被鎖存到NAND指令寄存器中。 5.地址鎖存使能(Address Latch Enable, ALE):當(dāng)ALE為高時(shí),在WE#信號(hào)的上升沿,地址被鎖存到NAND地址寄存器中。 6.就緒/忙(Ready/Busy, R/B#):如果NAND器件忙,R/B#信號(hào)將變低。該信號(hào)是漏極開路,需要采用上拉電阻。 數(shù)據(jù)每次進(jìn)/出NAND寄存器都是通過16位或8位接口。當(dāng)進(jìn)行編程操作的時(shí)候,
26、待編程的數(shù)據(jù)進(jìn)入數(shù)據(jù)寄存器,處于在WE#信號(hào)的上升沿。在寄存器內(nèi)隨機(jī)存取或移動(dòng)數(shù)據(jù),要采用專用指令以便于隨機(jī)存取。 數(shù)據(jù)寄存器輸出數(shù)據(jù)的方式與利用RE#信號(hào)的方式類似,負(fù)責(zé)輸出現(xiàn)有的數(shù)據(jù),并增加到下一個(gè)地址。WE#和RE#時(shí)鐘運(yùn)行速度極快,達(dá)到30ns的水準(zhǔn)。當(dāng)RE#或CE#不為低的時(shí)候,輸出緩沖器將為三態(tài)。這種CE#和RE#的組合使能輸出緩沖器,容許NAND閃存與NOR、SRAM或DRAM等其它類型存儲(chǔ)器共享數(shù)據(jù)總線。該功能有時(shí)被稱為“無需介意芯片啟動(dòng)(chip enable don't care)”。這種方案的初衷是適應(yīng)較老的NAND器件,它們要求CE#在整個(gè)周期為低(譯注:根據(jù)上
27、下文改寫)。 輸入寄存器接收到頁編程(80h)指令時(shí),內(nèi)部就會(huì)全部重置為1s,使得用戶可以只輸入他想以0位編程的數(shù)據(jù)字節(jié) 帶有隨機(jī)數(shù)據(jù)輸入的編程指令。圖中加亮的扇區(qū)顯示,該指令只需要后面跟隨著數(shù)據(jù)的2個(gè)字節(jié)的地址 所有NAND操作開始時(shí),都提供一個(gè)指令周期(表1)。 當(dāng)輸出一串WE#時(shí)鐘時(shí),通過在I/O位7:0上設(shè)置指令、驅(qū)動(dòng)CE#變低且CLE變高,就可以實(shí)現(xiàn)一個(gè)指令周期。注意:在WE#信號(hào)的上升沿上,指令、地址或數(shù)據(jù)被鎖存到NAND器件之中。如表1所示,大多數(shù)指令在第二個(gè)指令周期之后要占用若干地址周期。注意:復(fù)位或讀狀態(tài)指令例外,如果器件忙,就不應(yīng)該發(fā)送新的指令。 以2Gb NAND器件的尋
28、址方案為例,第一和第二地址周期指定列地址,該列地址指定頁內(nèi)的起始字節(jié)(表2)。 注意:因?yàn)樽詈笠涣械奈恢檬?112,該最后位置的地址就是08h(在第二字節(jié)中)和3Fh(在第一字節(jié)中)。PA5:0指定區(qū)塊內(nèi)的頁地址,BA16:6指定區(qū)塊的地址。雖然大多編程和讀操作需要完整的5字節(jié)地址,在頁內(nèi)隨機(jī)存取數(shù)據(jù)的操作僅僅用到第一和第二字節(jié)。塊擦除操作僅僅需要三個(gè)最高字節(jié)(第三、第四和第五字節(jié))來選擇區(qū)塊。 圖6:典型的存儲(chǔ)方法 圖7 頁讀緩存模式 總體而言,NAND的基本操作包括:復(fù)位(Reset, FFh)操作、讀ID(Read ID, 00h)操作、讀狀態(tài)(Read Status, 70h)操作、編
29、程(Program)操作、隨機(jī)數(shù)據(jù)輸入(Random data input, 85h)操作和讀(Read)操作等。 將NAND連接到處理器 選擇內(nèi)置NAND接口的處理器或控制器的好處很多。如果沒有這個(gè)選擇,有可能在NAND和幾乎任何處理器之間設(shè)計(jì)一個(gè)“無粘接邏輯(glueless)”接口。NAND和NOR閃存的主要區(qū)別是復(fù)用地址和數(shù)據(jù)總線。該總線被用于指定指令、地址或數(shù)據(jù)。CLE信號(hào)指定指令周期,而ALE信號(hào)指定地址周期。利用這兩個(gè)控制信號(hào),有可能選擇指令、地址或數(shù)據(jù)周期。把ALE連接到處理器的第五地址位,而把CLE連接到處理器的第四地址位,就能簡單地通過改變處理器輸出的地址,任意選擇指令、地
30、址或數(shù)據(jù)。這容許CLE和ALE在合適的時(shí)間自動(dòng)設(shè)置為低。 為了提供指令,處理器在數(shù)據(jù)總線上輸出想要的指令,并輸出地址0010h;為了輸出任意數(shù)量的地址周期,處理器僅僅要依次在處理器地址0020h之后輸出想要的NAND地址。注意,許多處理器能在處理器的寫信號(hào)周圍指定若干時(shí)序參數(shù),這對(duì)于建立合適的時(shí)序是至關(guān)重要的。利用該技術(shù),你不必采用任何粘接邏輯,就可以直接從處理器存取指令、地址和數(shù)據(jù)。 多層單元 多層單元(MLC)的每一個(gè)單元存儲(chǔ)兩位,而傳統(tǒng)的SLC僅僅能存儲(chǔ)一位。MLC技術(shù)有顯著的密度優(yōu)越性,然而,與SLC相比(表3),其速度或可靠性稍遜。因此,SLC被用于大多數(shù)媒體卡和無線應(yīng)用,而MLC器
31、件通常被用于消費(fèi)電子和其它低成本產(chǎn)品。 如上所述,NAND需要ECC以確保數(shù)據(jù)完整性。NAND閃存的每一個(gè)頁面上都包括額外的存儲(chǔ)空間,它就是64個(gè)字節(jié)的空閑區(qū)(每512字節(jié)的扇區(qū)有16字節(jié))。該區(qū)能存儲(chǔ)ECC代碼及其它像磨損評(píng)級(jí)或邏輯到物理塊映射之類的信息。ECC能在硬件或軟件中執(zhí)行,但是,硬件執(zhí)行有明顯的性能優(yōu)勢(shì)。在編程操作期間,ECC單元根據(jù)扇區(qū)中存儲(chǔ)的數(shù)據(jù)來計(jì)算誤碼校正代碼。數(shù)據(jù)區(qū)的ECC代碼然后被分別寫入到各自的空閑區(qū)。當(dāng)數(shù)據(jù)被讀出時(shí),ECC代碼也被讀出;運(yùn)用反操作可以核查讀出的數(shù)據(jù)是否正確。 有可能采用ECC算法來校正數(shù)據(jù)錯(cuò)誤。能校正的錯(cuò)誤的數(shù)量取決于所用算法的校正強(qiáng)度。在硬件或軟件
32、中包含ECC,就提供了強(qiáng)大的系統(tǒng)級(jí)解決方案。最簡單的硬件實(shí)現(xiàn)方案是采用簡單的漢明(Simple Hamming)碼,但是,只能校正單一位錯(cuò)誤。瑞德索羅門(Reed-Solomon)碼提供更為強(qiáng)大的糾錯(cuò),并被目前的控制器廣為采用。此外,BCH碼由于比瑞德索羅門方法的效率高,應(yīng)用也日益普及。 要用軟件執(zhí)行NAND閃存的區(qū)塊管理。該軟件負(fù)責(zé)磨損評(píng)級(jí)或邏輯到物理映射。該軟件還提供ECC碼,如果處理器不包含ECC硬件的話。 編程或擦除操作之后,重要的是讀狀態(tài)寄存器,因?yàn)樗_認(rèn)是否成功地完成了編程或擦除操作。如果操作失敗,要把該區(qū)塊標(biāo)記為損壞且不能再使用。以前已編寫進(jìn)去的數(shù)據(jù)要從損壞的區(qū)塊中搬出,轉(zhuǎn)移到新
33、的(好的)存儲(chǔ)塊之中。2Gb NAND的規(guī)范規(guī)定,它可以最多有40個(gè)壞的區(qū)塊,這個(gè)數(shù)字在器件的生命周期(額定壽命為10萬次編程/擦除周期)內(nèi)都適用。一些有壞塊的NAND器件能夠出廠,主要就歸根于其裸片面積大。管理器件的軟件負(fù)責(zé)映射壞塊并由好的存儲(chǔ)塊取而代之。 利用工廠對(duì)這些區(qū)塊的標(biāo)記,軟件通過掃描塊可以確定區(qū)塊的好壞。壞塊標(biāo)記被固定在空閑區(qū)的第一個(gè)位置(列地址2048)。如果在0或1頁的列地址2048上的數(shù)據(jù)是“non-FF”,那么,該塊要標(biāo)記為壞,并映射出系統(tǒng)。初始化軟件僅僅需要掃描所有區(qū)塊確定以確定哪個(gè)為壞,然后建一個(gè)壞塊表供將來參考。 小心不要擦除壞塊標(biāo)記,這一點(diǎn)很重要。工廠在寬溫和寬電
34、壓范圍內(nèi)測(cè)試了NAND;一些由工廠標(biāo)記為壞的區(qū)塊可能在一定的溫度或電壓條件下仍然能工作,但是,將來可能會(huì)失效。如果壞塊信息被擦除,就無法再恢復(fù)。NAND Flash結(jié)構(gòu)與驅(qū)動(dòng)分析摘自Tony嵌入式論壇,一、NAND flash的物理組成NAND Flash 的數(shù)據(jù)是以bit的方式保存在memory cell,一般來說,一個(gè)cell 中只能存儲(chǔ)一個(gè)bit。這些cell 以8個(gè)或者16個(gè)為單位,連成bit line,形成所謂的byte(x8)/word(x16),這就是NAND Device的位寬。這些Line會(huì)再組成Page,(NAND Flash 有多種結(jié)構(gòu),我使用的NAND Flash 是K
35、9F1208,下面內(nèi)容針對(duì)三星的K9F1208U0M),每頁528Bytes(512byte(Main Area)+16byte(Spare Area),每32個(gè)page形成一個(gè)Block(32*528B)。具體一片flash上有多少個(gè)Block視需要所定。我所使用的三星k9f1208U0M具有4096個(gè)block,故總?cè)萘繛?096*(32*528B)=66MB,但是其中的2MB是用來保存ECC校驗(yàn)碼等額外數(shù)據(jù)的,故實(shí)際中可使用的為64MB。NAND flash以頁為單位讀寫數(shù)據(jù),而以塊為單位擦除數(shù)據(jù)。按照這樣的組織方式可以形成所謂的三類地址: Column Address:Starting
36、 Address of the Register. 翻成中文為列地址,地址的低8位Page Address :頁地址Block Address :塊地址對(duì)于NAND Flash來講,地址和命令只能在I/O7:0上傳遞,數(shù)據(jù)寬度是8位。二、NAND Flash地址的表示512byte需要9bit來表示,對(duì)于528byte系列的NAND,這512byte被分成1st half Page Register和2nd half Page Register,各自的訪問由地址指針命令來選擇,A7:0就是所謂的column address(列地址),在進(jìn)行擦除操作時(shí)不需要它,why?因?yàn)橐詨K為單位擦除。32個(gè)
37、page需要5bit來表示,占用A13:9,即該page在塊內(nèi)的相對(duì)地址。A8這一位地址被用來設(shè)置512byte的1st half page還是2nd half page,0表示1st,1表示2nd。Block的地址是由A14以上的bit來表示。例如64MB(512Mb)的NAND flash(實(shí)際中由于存在spare area,故都大于這個(gè)值),共4096block,因此,需要12個(gè)bit來表示,即A25:14,如果是128MB(1Gbit) 的528byte/page的NAND Flash,則block address用A26:14表示。而page address就是blcok addre
38、ss|page address in block NAND Flash 的地址表示為: Block Address|Page Address in block|halfpage pointer|Column Address 地址傳送順序是Column Address,Page Address,Block Address。 由于地址只能在I/O7:0上傳遞,因此,必須采用移位的方式進(jìn)行。 例如,對(duì)于512Mbit x8的NAND flash,地址范圍是00x3FF_FFFF,只要是這個(gè)范圍內(nèi)的數(shù)值表示的地址都是有效的。 以NAND_ADDR 為例:第1 步是傳遞column address,就是
39、NAND_ADDR7:0,不需移位即可傳遞到I/O7:0上,而halfpage pointer即A8 是由操作指令決定的,即指令決定在哪個(gè)halfpage 上進(jìn)行讀寫,而真正的A8 的值是不需程序員關(guān)心的。 第2 步就是將NAND_ADDR 右移9位,將NAND_ADDR16:9傳到I/O7:0上;第3 步將NAND_ADDR24:17放到I/O上;第4步需要將NAND_ADDR25放到I/O上;因此,整個(gè)地址傳遞過程需要4 步才能完成,即4-step addressing。 如果NAND Flash 的容量是32MB(256Mbit)以下,那么,block adress最高位只到bit24,
40、因此尋址只需要3步。 下面,就x16 的NAND flash 器件稍微進(jìn)行一下說明。 由于一個(gè)page 的main area 的容量為256word,仍相當(dāng)于512byte。但是,這個(gè)時(shí)候沒有所謂的1st halfpage 和2nd halfpage 之分了,所以,bit8就變得沒有意義了,也就是這個(gè)時(shí)候 A8 完全不用管,地址傳遞仍然和x8 器件相同。除了,這一點(diǎn)之外,x16 的NAND使用方法和 x8 的使用方法完全相同。 三、NAND flash驅(qū)動(dòng)解讀以前由于做移植多一些,那些工作很簡單(現(xiàn)在看來),從來都不用去關(guān)心驅(qū)動(dòng)里面到底怎么實(shí)現(xiàn)的,這幾次面試才發(fā)現(xiàn)真的是學(xué)的太淺了,似乎我還在學(xué)
41、習(xí)仰泳而那些牛人基本都屬于潛水級(jí)的了,潛的不知有多深。我對(duì)照著開發(fā)板所帶的NAND flash驅(qū)動(dòng)和k9f1208的芯片資料把這些代碼通讀了一遍,終于明白了NAND flash的讀寫過程是如何實(shí)現(xiàn)的了。我所參考的驅(qū)動(dòng)是mizi公司為三星芯片所寫的,我看看了,大概和官方2.4.18內(nèi)核的nand.c差不多。在s3c2410處理器中有專門的NAND flash控制器,他們位于SFR區(qū),具體可以參看s3c2410用戶手冊(cè)。以下的這些代碼均可以在vivi或者kernel里面找到,文中會(huì)標(biāo)明程序出自何處。在vivi中,有關(guān)NAND flash的驅(qū)動(dòng)都在driver/mtd/nand/下,該目錄中包含的源
42、文件:smc_core.c是NAND flash的主要驅(qū)動(dòng)。NAND flash 芯片定義了一個(gè)很長的結(jié)構(gòu),這個(gè)結(jié)構(gòu)中包含了操作NAND flash的函數(shù)和一些必要的變量(include/mtd/nand.h)。struct nand_chip #ifdef CONFIG_MTD_NANDY /* =y */ void (*hwcontrol)(int cmd); void (*write_cmd)(u_char val); void (*write_addr)(u_char val); u_char (*read_data)(void); void (*write_data)(u_char
43、val); void (*wait_for_ready)(void); int page_shift; u_char *data_buf; u_char *data_cache; int cache_page; struct nand_smc_dev *dev; u_char spareSMC_OOB_SIZE;#else /* CONFIG_MTD_NANDY */ #ifdef CONFIG_MTD_NAND_ECC u_char ecc_code_buf6; u_char reserved2;#endif#endif /* CONFIG_MTD_NANDY */;縱觀對(duì)NAND flas
44、h的各種操作(read、write、erase),無外乎如下幾種操作:1選擇flash nand_select()2發(fā)送命令 nand_command()3進(jìn)行相應(yīng)操作 read,write4反選NAND flash nand_deselect()下面是以上四步的實(shí)現(xiàn)代碼:1、選擇NAND flash#define nand_select() this->hwcontrol(NAND_CTL_SETNCE); nand_command(mtd, NAND_CMD_RESET, -1, -1); udelay (10);hwcontrol(NAND_CTL_SETNCE)的作用是設(shè)置241
45、0的NAND FLASH CONFIGURATION (NFCONF) REGISTER的NAND Flash Memory chip enable位為0,這位寄存器在自動(dòng)重啟后就被系統(tǒng)自動(dòng)清零。如果要訪問NAND flash的內(nèi)存,這位必須置1。nand_command(mtd, NAND_CMD_RESET, -1, -1);向flash發(fā)送命令,此命令為reset,即為重置NAND flash。然后是10us的延遲,給flash個(gè)反應(yīng)時(shí)間。2、發(fā)送命令Nand_command()同樣在smc_core.c中實(shí)現(xiàn)。NAND flash的命令有如下幾種: 命令 命令值 描述NAND_CMD_
46、READ0 0 讀操作NAND_CMD_READ1 1 讀操作NAND_CMD_PAGEPROG 0x10 頁編程操作NAND_CMD_READOOB 0x50 讀寫OOBNAND_CMD_ERASE1 0x60 讀寫操作NAND_CMD_STATUS 0x70 讀取狀態(tài)NAND_CMD_STATUS_MULTI 0x71 讀取狀態(tài)NAND_CMD_SEQIN 0x80 寫操作NAND_CMD_READID 0x90 讀Flash ID號(hào)NAND_CMD_ERASE2 0xd0 擦寫操作NAND_CMD_RESET oxff 復(fù)位操作按照程序的注釋,可以將該函數(shù)的實(shí)現(xiàn)分為如下幾步:1、Begin command latch cycle實(shí)現(xiàn)代碼:this->hwcontrol(NAND_CTL_SETCLE); this->hwcontrol(NAND_CTL_DAT_OUT);找到第二條語句的定義,發(fā)現(xiàn)什么都么做,不解!希望達(dá)人解答。我猜想可能是一個(gè)數(shù)據(jù)讀出
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 商業(yè)房屋租賃居間合同(2篇)
- 二零二五年度云計(jì)算大數(shù)據(jù)處理服務(wù)合同3篇
- 【小學(xué)課件】千米與米的單位換算
- 二零二五年度房產(chǎn)購置合同范本:帶智能家居系統(tǒng)3篇
- 二零二五年度快艇銷售與船舶維修保養(yǎng)培訓(xùn)合同6篇
- 2025年度勞動(dòng)合同轉(zhuǎn)讓與員工加班審批及考勤協(xié)議3篇
- 2025版酒類展會(huì)參展商購銷合同范本3篇
- 二零二五年度合同管理員崗位職責(zé)與合同風(fēng)險(xiǎn)管理合同3篇
- 二零二五年度廢舊資源綜合利用承包合同3篇
- 二零二五年度房產(chǎn)抵押權(quán)抵押權(quán)變更合同范本3篇
- 山東省濟(jì)寧市2023-2024學(xué)年第一學(xué)期期中質(zhì)量檢測(cè)高二數(shù)學(xué)試題含答案
- 醫(yī)療器械委托生產(chǎn)前綜合評(píng)價(jià)報(bào)告
- 2024年自然資源部直屬企事業(yè)單位公開招聘歷年高頻500題難、易錯(cuò)點(diǎn)模擬試題附帶答案詳解
- 2023年吉林省中考滿分作文《感動(dòng)盈懷歲月暖》2
- 廣東深圳市龍崗區(qū)產(chǎn)服集團(tuán)招聘筆試題庫2024
- 公路施工表格
- 2024至2030年中國昆明市酒店行業(yè)發(fā)展監(jiān)測(cè)及市場發(fā)展?jié)摿︻A(yù)測(cè)報(bào)告
- 《中國心力衰竭診斷和治療指南2024》解讀(總)
- 科學(xué)新課程標(biāo)準(zhǔn)中核心素養(yǎng)的內(nèi)涵解讀及實(shí)施方略講解課件
- 輪扣式高支模施工方案
- 醫(yī)療質(zhì)量信息數(shù)據(jù)內(nèi)部驗(yàn)證制度
評(píng)論
0/150
提交評(píng)論