




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quá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),強調(diào)降低每比特的成本,更高的性能,并且象磁盤一樣可以通過接口輕松升級。但是經(jīng)過了十多年之后,仍然有相當(dāng)多的硬件工程師分不清NOR和NAND閃存。簡單的來說,NAND規(guī)格快閃記憶體像硬碟,以儲存數(shù)據(jù)為主,又稱為Data Flash,晶片容量大,目前主流容量已達二Gb;NOR規(guī)格記憶體則類似DRAM,以儲存程序代碼為主,又稱為Co
2、deFlash,所以可讓微處理器直接讀取,但晶片容量較低,主流容量為512Mb。相“flash存儲器”經(jīng)??梢耘c相“NOR存儲器”互換使用。許多業(yè)內(nèi)人士也搞不清楚NAND閃存技術(shù)相對于NOR技術(shù)的優(yōu)越之處,因為大多數(shù)情況下閃存只是用來存儲少量的代碼,這時NOR閃存更適合一些。而NAND則是高數(shù)據(jù)存儲密度的理想解決方案。NOR的特點是芯片內(nèi)執(zhí)行(XIP, eXecute In Place),這樣應(yīng)用程序可以直接在flash閃存內(nèi)運行,不必再把代碼讀到系統(tǒng)RAM中。NOR的傳輸效率很高,在14MB的小容量時具有很高的成本效益,但是很低的寫入和擦除速度大大影響了它的性能。NAND結(jié)構(gòu)能提供極高的單元
3、密度,可以達到高存儲密度,并且寫入和擦除的速度也很快。應(yīng)用NAND的困難在于flash的管理和需要特殊的系統(tǒng)接口。1.性能比較flash閃存是非易失存儲器,可以對稱為塊的存儲器單元塊進行擦寫和再編程。任何flash器件的寫入操作只能在空或已擦除的單元內(nèi)進行,所以大多數(shù)情況下,在進行寫入操作之前必須先執(zhí)行擦除。NAND器件執(zhí)行擦除操作是十分簡單的,而NOR則要求在進行擦除前先要將目標(biāo)塊內(nèi)所有的位都寫為0。 由于擦除NOR器件時是以64128KB的塊進行的,執(zhí)行一個寫入/擦除操作的時間為5s,與此相反,擦除NAND器件是以832KB的塊進行的,執(zhí)行相同的操作最多只需要4ms。執(zhí)行擦除時塊尺寸的不同
4、進一步拉大了NOR和NADN之間的性能差距,統(tǒng)計表明,對于給定的一套寫入操作(尤其是更新小文件時), 更多的擦除操作必須在基于NOR的單元中進行。這樣,當(dāng)選擇存儲解決方案時,設(shè)計師必須權(quán)衡以下的各項因素。 NOR的讀速度比NAND稍快一些。 NAND的寫入速度比NOR快很多。 NAND的4ms擦除速度遠比NOR的5S快。 大多數(shù)寫入操作需要先進行擦除操作。 NAND的擦除單元更小,相應(yīng)的擦除電路更少。2.接口差別NOR flash帶有SRAM接口,有足夠的地址引腳來尋址,可以很容易地存取其內(nèi)部的每一個字節(jié)。NAND器件使用復(fù)雜的I/O口來串行地存取數(shù)據(jù),各個產(chǎn)品或廠商的方法可能各不相同。8個引
5、腳用來傳送控制、地址和數(shù)據(jù)信息。NAND讀和寫操作采用512字節(jié)的塊,這一點有點像硬盤管理此類操作,很自然地,基于NAND的存儲器就可以取代硬盤或其他塊設(shè)備。3.容量和成本NAND flash的單元尺寸幾乎是NOR器件的一半,由于生產(chǎn)過程更為簡單,NAND結(jié)構(gòu)可以在給定的模具尺寸內(nèi)提供更高的容量,也就相應(yīng)地降低了價格。 NOR flash占據(jù)了容量為116MB閃存市場的大部分,而NAND flash只是用在8128MB的產(chǎn)品當(dāng)中,這也說明NOR主要應(yīng)用在代碼存儲介質(zhì)中,NAND適合于數(shù)據(jù)存儲,NAND在CompactFlash、 Secure Digital、PC Cards和MMC存儲卡市場
6、上所占份額最大。4.可靠性和耐用性采用flahs介質(zhì)時一個需要重點考慮的問題是可靠性。對于需要擴展MTBF的系統(tǒng)來說,F(xiàn)lash是非常合適的存儲方案??梢詮膲勖?耐用性)、位交換和壞塊處理三個方面來比較NOR和NAND的可靠性。5.壽命(耐用性) 在NAND閃存中每個塊的最大擦寫次數(shù)是一百萬次,而NOR的擦寫次數(shù)是十萬次。NAND存儲器除了具有10比1的塊擦除周期優(yōu)勢,典型的NAND塊尺寸要比NOR器件小8倍,每個NAND存儲器塊在給定的時間內(nèi)的刪除次數(shù)要少一些。位交換所有flash器件都受位交換現(xiàn)象的困擾。在某些情況下(很少見,NAND發(fā)生的次數(shù)要比NOR多),一個比特位會發(fā)生反轉(zhuǎn)或被報告反
7、轉(zhuǎn)了。一位的變化可能不很明顯,但是如果發(fā)生在一個關(guān)鍵文件上,這個小小的故障可能導(dǎo)致系統(tǒng)停機。如果只是報告有問題,多讀幾次就可能解決了。當(dāng)然,如果這個位真的改變了,就必須采用錯誤探測/錯誤更正(EDC/ECC)算法。位反轉(zhuǎn)的問題更多見于NAND閃存,NAND的供應(yīng)商建議使用NAND閃存的時候,同時使用EDC/ECC算法。這個問題對于用NAND存儲多媒體信息時倒不是致命的。當(dāng)然,如果用本地存儲設(shè)備來存儲操作系統(tǒng)、配置文件或其他敏感信息時,必須使用EDC/ECC系統(tǒng)以確??煽啃浴?.壞塊處理NAND器件中的壞塊是隨機分布的。以前也曾有過消除壞塊的努力,但發(fā)現(xiàn)成品率太低,代價太高,根本不劃算。NAND
8、器件需要對介質(zhì)進行初始化掃描以發(fā)現(xiàn)壞塊,并將壞塊標(biāo)記為不可用。在已制成的器件中,如果通過可靠的方法不能進行這項處理,將導(dǎo)致高故障率。7.易于使用可以非常直接地使用基于NOR的閃存,可以像其他存儲器那樣連接,并可以在上面直接運行代碼。 由于需要I/O接口,NAND要復(fù)雜得多。各種NAND器件的存取方法因廠家而異。在使用NAND器件時,必須先寫入驅(qū)動程序,才能繼續(xù)執(zhí)行其他操作。向NAND器件寫入信息需要相當(dāng)?shù)募记?,因為設(shè)計師絕不能向壞塊寫入,這就意味著在NAND器件上自始至終都必須進行虛擬映射。8.軟件支持當(dāng)討論軟件支持的時候,應(yīng)該區(qū)別基本的讀/寫/擦操作和高一級的用于磁盤仿真和閃存管理算法的軟件
9、,包括性能優(yōu)化。在NOR器件上運行代碼不需要任何的軟件支持,在NAND器件上進行同樣操作時,通常需要驅(qū)動程序,也就是內(nèi)存技術(shù)驅(qū)動程序(MTD),NAND和NOR器件在進行寫入和擦除操作時都需要MTD。使用NOR器件時所需要的MTD要相對少一些,許多廠商都提供用于NOR器件的更高級軟件,這其中包括M-System的TrueFFS驅(qū)動,該驅(qū)動被 Wind River System、Microsoft、QNX Software System、Symbian和Intel等廠商所采用。驅(qū)動還用于對DiskOnChip產(chǎn)品進行仿真和NAND閃存的管理,包括糾錯、壞塊處理和損耗平衡。NOR與NAND技術(shù)的比
10、較及使用性差異1)閃存芯片讀寫的基本單位不同 應(yīng)用程序?qū)OR芯片操作以“字”為基本單位。為了方便對大容量NOR閃存的管理,通常將NOR閃存分成大小為128KB或者64KB的邏輯塊,有時候塊內(nèi)還分成扇區(qū)。讀寫時需要同時指定邏輯塊號和塊內(nèi)偏移。應(yīng)用程序?qū)AND芯片操作是以“塊”為基本單位。NAND閃存的塊比較小,一般是8KB,然后每塊又分成頁,頁的大小一般是512字節(jié)。要修改NAND芯片中一個字節(jié),必須重寫整個數(shù)據(jù)塊。 2)NOR閃存是隨機存儲介質(zhì),用于數(shù)據(jù)量較小的場合;NAND閃存是連續(xù)存儲介質(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)運行,不必再把代碼 讀到系統(tǒng)RAM中。由于NOR的這個特點,嵌入式系統(tǒng)中經(jīng)常將NOR芯片做啟動芯片使用。而NAND共用地址和數(shù)據(jù)總線,需要額外聯(lián)結(jié)一些控制的輸入輸出,所以直接將NAND芯片做啟動芯片比較難。 4) N AN D閃存芯片因為共用地址和數(shù)據(jù)總線的原因,不允許對一個字節(jié)甚至一個塊進行的數(shù)據(jù)清空,只能對一個固定大小的區(qū)域進行清零操作;而NOR芯片可以對字進行操作。所以在處理小數(shù)據(jù)量的I/O操作的時
12、候的速度要快與NAND的速度。比如一塊NOR芯片通常寫一個字需要10微秒,那么在32位總線上寫512字節(jié)需要1280毫秒;而NAND閃存寫512字節(jié)需要的時間包括:512×每字節(jié)50納秒+10微秒的尋頁時間+200微秒的片擦寫時間234微秒。 5)NAND閃存的容量比較大,目前最大容量己經(jīng)達到8G字節(jié)。為了方便管理,NAND的存儲空間使用了塊和頁兩級存儲體系,也就是說閃存的存儲空間是二維的,比如K9F5608UOA閃存塊的大小為16K,每頁的大小是512字節(jié),每頁還預(yù)留16字節(jié)空閑區(qū)用來存放錯誤校驗碼空間(有時也稱為out-of-band,OOB空間);在進行寫操作的時候NAND閃存
13、每次將一個字節(jié)的數(shù)據(jù)放入內(nèi)部的緩存區(qū),然后再發(fā)出“寫指令”進行寫操作。由于對NAND閃存的操作都是以塊和頁為單位的,所以在向NAND閃存進行大量數(shù)據(jù)的讀寫時,NAND的速度要快于NOR閃存。 6)NOR閃存的可靠性要高于NAND閃存,這主要是因為NOR型閃存的接口簡單,數(shù)據(jù)操作少,位交換操作少,因此可靠性高,極少出現(xiàn)壞區(qū)塊,因而一般用在對可靠性要求高的地方。相反的,NAND型閃存接口和操作均相對復(fù)雜,位交換操作也很多,關(guān)鍵性數(shù)據(jù)更是需安錯誤探測/錯誤更正EDC/ECC)算法來確保數(shù)據(jù)的完整性,因此出現(xiàn)問題的幾率要大得多,壞區(qū)塊也是不可避免的,而且由于壞區(qū)塊是隨機分布的,連糾錯也無法做到。 7)
14、NAND Flash一般地址線和數(shù)據(jù)線共用,對讀寫速度有一定影響;而NOR Flash閃存數(shù)據(jù)線和地址線分開,所以相對而言讀寫速度快一些。 NAND和NOR芯片的共性首先表現(xiàn)在向芯片中寫數(shù)據(jù)必須先將芯片中對應(yīng)的內(nèi)容清空,然后再寫入,也就是通常說的“先擦后寫”。只不過NOR芯片只用擦寫一個字,而NAND需要擦寫整個塊。其次,閃存擦寫的次數(shù)都是有限的.當(dāng)閃存的使用接近使用壽命的時候,經(jīng)常會出現(xiàn)寫操作失??;到達使用壽命時,閃存內(nèi)部存放的數(shù)據(jù)雖然可以讀,但是不能再進行寫操作了所以為了防止上面問題的發(fā)生,不能對某個特定的區(qū)域反復(fù)進行寫操作。通常NAND的可擦寫次數(shù)高于NOR芯片,但是由于NAND通常是整
15、塊擦寫,塊內(nèi)的頁面中如果有一位失效整個塊就會失效,而且由于擦寫過程復(fù)雜,失敗的概率相對較高,所以從整體上來說NOR的壽命較長。 另一個共性是閃存的讀寫操作不僅僅是一個物理操作,實際上在閃存上存放數(shù)據(jù)必須使用算法實現(xiàn),這個模塊一般在驅(qū)動程序的MTD' (Memory Technology Drivers)模塊中或者在FTLZ (Flash Translation Layer)層內(nèi)實現(xiàn),具體算法和芯片的生產(chǎn)廠商以及芯片型號有關(guān)系。 從使用角度來看,NOR閃存與NAND閃存是各有特點的:(1)NOR的存儲密度低,所以存儲一個字節(jié)的成本也較高,而NAND閃存的存儲密度和存儲容量均比較高;(2)
16、NAND型閃存在擦、寫文件(特別是連續(xù)的大文件)時速度非常快,非常適用于順序讀取的場合,而NOR的讀取速度很快,在隨機存取的應(yīng)用中有良好的表現(xiàn)。NOR與NAND各有所長,但兩種優(yōu)勢無法在一個芯片上得到體現(xiàn)。所以,設(shè)計人員在選用芯片時,只能趨其利而避其害,依照使用目的和主要功能在兩者之間進行適當(dāng)?shù)倪x擇。NAND與NOR技術(shù)的比較 一般的原則是:在大容量的多媒體應(yīng)用中選用NAND型閃存,而在數(shù)據(jù)/程序存貯應(yīng)用中選用NOR型閃存。根據(jù)這一原則,設(shè)計人員也可以把兩種閃存芯片結(jié)合起來使用,用NOR芯片存儲程序,用NAND芯片存儲數(shù)據(jù),使兩種閃存的優(yōu)勢互補。事實上,這種聰明的設(shè)計早已普遍應(yīng)用于手
17、機、PocketPC、PDA及電子詞典等設(shè)備中了。在選擇存儲解決方案時,設(shè)計師必須在多種因素之間進行權(quán)衡,以獲得較高的性價比。以手機為例,采用支持XIP技術(shù)的NOR閃存能夠直接運行OS,速度很快,既簡化了設(shè)計,又降低了成本,所以許多手機都采用NORRAM的設(shè)計。NOR閃存的不足之處是存儲密度較低,所以也有采用NANDRAM的設(shè)計。對于這兩種方案,很難說哪一種更好,因為我們不能離開具體的產(chǎn)品而從某一個方面單純地去評價。追求小巧優(yōu)雅的手機將需要NOR閃存支持;追求大存儲容量的手機則將更多地選擇NAND閃存;而同時追求功能和速度的手機則會采用NORNANDRAM的設(shè)計,這種取長補短的設(shè)計能夠發(fā)揮NO
18、R和NAND各自的優(yōu)勢。除了速度、存儲密度的因素,設(shè)計師在選擇閃存芯片時,還需要考慮接口設(shè)計、即插即用設(shè)計和驅(qū)動程序等諸多問題,因為兩種類型的閃存在上述幾個方面也有很多的不同。譬如在驅(qū)動程序方面,NOR器件運行代碼不需要任何的軟件支持,而在NAND器件上進行同樣操作時就需要存儲技術(shù)驅(qū)動程序(MTD)的支持。雖然NAND和NOR器件在進行寫入和擦除操作時都需要MTD,但對于NAND來說驅(qū)動程序的開發(fā)難度更大,因為NAND閃存的糾錯和壞塊處理功能都需要通過驅(qū)動程序來實現(xiàn)。圖解NOR與NAND技術(shù)對于許多消費類音視頻產(chǎn)品而言,NAND閃存是一種比硬盤驅(qū)動器更好的存儲方案,這在不超過4GB的低容量應(yīng)用
19、中表現(xiàn)得猶為明顯。隨著人們持續(xù)追求功耗更低、重量更輕和性能更佳的產(chǎn)品,NAND正被證明極具吸引力。 NAND閃存陣列分為一系列128kB的區(qū)塊(block),這些區(qū)塊是NAND器件中最小的可擦除實體。擦除一個區(qū)塊就是把所有的位(bit)設(shè)置為“1”(而所有字節(jié)(byte)設(shè)置為FFh)。有必要通過編程,將已擦除的位從“1”變?yōu)椤?”。最小的編程實體是字節(jié)(byte)。一些NOR閃存能同時執(zhí)行讀寫操作(見下圖1)。雖然NAND不能同時執(zhí)行讀寫操作,它可以采用稱為“映射(shadowing)”的方法,在系統(tǒng)級實現(xiàn)這一點。這種方法在個人電腦上已經(jīng)沿用多年,即將BIOS從速率較低的ROM加載到速率較高
20、的RAM上。 NAND的效率較高,是因為NAND串中沒有金屬觸點。NAND閃存單元的大小比NOR要小(4F2:10F2)的原因,是NOR的每一個單元都需要獨立的金屬觸點。NAND與硬盤驅(qū)動器類似,基于扇區(qū)(頁),適合于存儲連續(xù)的數(shù)據(jù),如圖片、音頻或個人電腦數(shù)據(jù)。雖然通過把數(shù)據(jù)映射到RAM上,能在系統(tǒng)級實現(xiàn)隨機存取,但是,這樣做需要額外的RAM存儲空間。此外,跟硬盤一樣,NAND器件存在壞的扇區(qū),需要糾錯碼(ECC)來維持數(shù)據(jù)的完整性。 存儲單元面積越小,裸片的面積也就越小。在這種情況下,NAND就能夠為當(dāng)今的低成本消費市場提供存儲容量更大的閃存產(chǎn)品。NAND閃存用于幾乎所有可擦除的存儲卡。NA
21、ND的復(fù)用接口為所有最新的器件和密度都提供了一種相似的引腳輸出。這種引腳輸出使得設(shè)計工程師無須改變電路板的硬件設(shè)計,就能從更小的密度移植到更大密度的設(shè)計上。 NAND與NOR閃存比較 NAND閃存的優(yōu)點在于寫(編程)和擦除操作的速率快,而NOR的優(yōu)點是具有隨機存取和對字節(jié)執(zhí)行寫(編程)操作的能力(見下圖圖2)。NOR的隨機存取能力支持直接代碼執(zhí)行(XiP),而這是嵌入式應(yīng)用經(jīng)常需要的一個功能。NAND的缺點是隨機存取的速率慢,NOR的缺點是受到讀和擦除速度慢的性能制約。NAND較適合于存儲文件。如今,越來越多的處理器具備直接NAND接口,并能直接從NAND(沒有NOR)導(dǎo)入數(shù)據(jù)。 NAND的真
22、正好處是編程速度快、擦除時間短。NAND支持速率超過5Mbps的持續(xù)寫操作,其區(qū)塊擦除時間短至2ms,而NOR是750ms。顯然,NAND在某些方面具有絕對優(yōu)勢。然而,它不太適合于直接隨機存取。 對于16位的器件,NOR閃存大約需要41個I/O引腳;相對而言,NAND器件僅需24個引腳。NAND器件能夠復(fù)用指令、地址和數(shù)據(jù)總線,從而節(jié)省了引腳數(shù)量。復(fù)用接口的一項好處,就在于能夠利用同樣的硬件設(shè)計和電路板,支持較大的NAND器件。由于普通的TSOP-1封裝已經(jīng)沿用多年,該功能讓客戶能夠把較高密度的NAND器件移植到相同的電路板上。NAND器件的另外一個好處顯然是其封裝選項:NAND提供一種厚膜的
23、2Gb裸片或能夠支持最多四顆堆疊裸片,容許在相同的TSOP-1封裝中堆疊一個8Gb的器件。這就使得一種封裝和接口能夠在將來支持較高的密度。 圖1 不同閃存單元的對比NOR閃存的隨機存取時間為0.12ms,而NAND閃存的第一字節(jié)隨機存取速度要慢得多 NAND基本操作 以2Gb NAND器件為例,它由2048個區(qū)塊組成,每個區(qū)塊有64個頁(見圖3)。 圖3 2GB NAND閃存包含2,048個區(qū)塊 每一個頁均包含一個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存儲器。在16位模式,指令和地址僅僅利用低8位,而高8位僅僅在數(shù)據(jù)傳輸周期使用。 擦除區(qū)塊所需時間約為2ms。一旦數(shù)據(jù)被載入寄存器,對一個頁的編程大約要300s。讀一個頁面需要大約25s,其中涉及到存儲陣列訪問頁,并將頁載入16,896位寄存器中。 除了I/O總線,NAND接口由6個主要控制信號構(gòu)成: 1.芯片啟動(Chip Enable, CE#):如果沒有檢測到CE信號,那么,NAND器件就保持待機模式,不對任何控制信號作出響應(yīng)。 2.寫使能(Write Enable, WE#): WE#負責(zé)將數(shù)據(jù)、地址或
25、指令寫入NAND之中。 3.讀使能(Read Enable, RE#): RE#允許輸出數(shù)據(jù)緩沖器。 4.指令鎖存使能(Command Latch Enable, CLE): 當(dāng)CLE為高時,在WE#信號的上升沿,指令被鎖存到NAND指令寄存器中。 5.地址鎖存使能(Address Latch Enable, ALE):當(dāng)ALE為高時,在WE#信號的上升沿,地址被鎖存到NAND地址寄存器中。 6.就緒/忙(Ready/Busy, R/B#):如果NAND器件忙,R/B#信號將變低。該信號是漏極開路,需要采用上拉電阻。 數(shù)據(jù)每次進/出NAND寄存器都是通過16位或8位接口。當(dāng)進行編程操作的時候,
26、待編程的數(shù)據(jù)進入數(shù)據(jù)寄存器,處于在WE#信號的上升沿。在寄存器內(nèi)隨機存取或移動數(shù)據(jù),要采用專用指令以便于隨機存取。 數(shù)據(jù)寄存器輸出數(shù)據(jù)的方式與利用RE#信號的方式類似,負責(zé)輸出現(xiàn)有的數(shù)據(jù),并增加到下一個地址。WE#和RE#時鐘運行速度極快,達到30ns的水準(zhǔn)。當(dāng)RE#或CE#不為低的時候,輸出緩沖器將為三態(tài)。這種CE#和RE#的組合使能輸出緩沖器,容許NAND閃存與NOR、SRAM或DRAM等其它類型存儲器共享數(shù)據(jù)總線。該功能有時被稱為“無需介意芯片啟動(chip enable don't care)”。這種方案的初衷是適應(yīng)較老的NAND器件,它們要求CE#在整個周期為低(譯注:根據(jù)上
27、下文改寫)。 輸入寄存器接收到頁編程(80h)指令時,內(nèi)部就會全部重置為1s,使得用戶可以只輸入他想以0位編程的數(shù)據(jù)字節(jié) 帶有隨機數(shù)據(jù)輸入的編程指令。圖中加亮的扇區(qū)顯示,該指令只需要后面跟隨著數(shù)據(jù)的2個字節(jié)的地址 所有NAND操作開始時,都提供一個指令周期(表1)。 當(dāng)輸出一串WE#時鐘時,通過在I/O位7:0上設(shè)置指令、驅(qū)動CE#變低且CLE變高,就可以實現(xiàn)一個指令周期。注意:在WE#信號的上升沿上,指令、地址或數(shù)據(jù)被鎖存到NAND器件之中。如表1所示,大多數(shù)指令在第二個指令周期之后要占用若干地址周期。注意:復(fù)位或讀狀態(tài)指令例外,如果器件忙,就不應(yīng)該發(fā)送新的指令。 以2Gb NAND器件的尋
28、址方案為例,第一和第二地址周期指定列地址,該列地址指定頁內(nèi)的起始字節(jié)(表2)。 注意:因為最后一列的位置是2112,該最后位置的地址就是08h(在第二字節(jié)中)和3Fh(在第一字節(jié)中)。PA5:0指定區(qū)塊內(nèi)的頁地址,BA16:6指定區(qū)塊的地址。雖然大多編程和讀操作需要完整的5字節(jié)地址,在頁內(nèi)隨機存取數(shù)據(jù)的操作僅僅用到第一和第二字節(jié)。塊擦除操作僅僅需要三個最高字節(jié)(第三、第四和第五字節(jié))來選擇區(qū)塊。 圖6:典型的存儲方法 圖7 頁讀緩存模式 總體而言,NAND的基本操作包括:復(fù)位(Reset, FFh)操作、讀ID(Read ID, 00h)操作、讀狀態(tài)(Read Status, 70h)操作、編
29、程(Program)操作、隨機數(shù)據(jù)輸入(Random data input, 85h)操作和讀(Read)操作等。 將NAND連接到處理器 選擇內(nèi)置NAND接口的處理器或控制器的好處很多。如果沒有這個選擇,有可能在NAND和幾乎任何處理器之間設(shè)計一個“無粘接邏輯(glueless)”接口。NAND和NOR閃存的主要區(qū)別是復(fù)用地址和數(shù)據(jù)總線。該總線被用于指定指令、地址或數(shù)據(jù)。CLE信號指定指令周期,而ALE信號指定地址周期。利用這兩個控制信號,有可能選擇指令、地址或數(shù)據(jù)周期。把ALE連接到處理器的第五地址位,而把CLE連接到處理器的第四地址位,就能簡單地通過改變處理器輸出的地址,任意選擇指令、地
30、址或數(shù)據(jù)。這容許CLE和ALE在合適的時間自動設(shè)置為低。 為了提供指令,處理器在數(shù)據(jù)總線上輸出想要的指令,并輸出地址0010h;為了輸出任意數(shù)量的地址周期,處理器僅僅要依次在處理器地址0020h之后輸出想要的NAND地址。注意,許多處理器能在處理器的寫信號周圍指定若干時序參數(shù),這對于建立合適的時序是至關(guān)重要的。利用該技術(shù),你不必采用任何粘接邏輯,就可以直接從處理器存取指令、地址和數(shù)據(jù)。 多層單元 多層單元(MLC)的每一個單元存儲兩位,而傳統(tǒng)的SLC僅僅能存儲一位。MLC技術(shù)有顯著的密度優(yōu)越性,然而,與SLC相比(表3),其速度或可靠性稍遜。因此,SLC被用于大多數(shù)媒體卡和無線應(yīng)用,而MLC器
31、件通常被用于消費電子和其它低成本產(chǎn)品。 如上所述,NAND需要ECC以確保數(shù)據(jù)完整性。NAND閃存的每一個頁面上都包括額外的存儲空間,它就是64個字節(jié)的空閑區(qū)(每512字節(jié)的扇區(qū)有16字節(jié))。該區(qū)能存儲ECC代碼及其它像磨損評級或邏輯到物理塊映射之類的信息。ECC能在硬件或軟件中執(zhí)行,但是,硬件執(zhí)行有明顯的性能優(yōu)勢。在編程操作期間,ECC單元根據(jù)扇區(qū)中存儲的數(shù)據(jù)來計算誤碼校正代碼。數(shù)據(jù)區(qū)的ECC代碼然后被分別寫入到各自的空閑區(qū)。當(dāng)數(shù)據(jù)被讀出時,ECC代碼也被讀出;運用反操作可以核查讀出的數(shù)據(jù)是否正確。 有可能采用ECC算法來校正數(shù)據(jù)錯誤。能校正的錯誤的數(shù)量取決于所用算法的校正強度。在硬件或軟件
32、中包含ECC,就提供了強大的系統(tǒng)級解決方案。最簡單的硬件實現(xiàn)方案是采用簡單的漢明(Simple Hamming)碼,但是,只能校正單一位錯誤。瑞德索羅門(Reed-Solomon)碼提供更為強大的糾錯,并被目前的控制器廣為采用。此外,BCH碼由于比瑞德索羅門方法的效率高,應(yīng)用也日益普及。 要用軟件執(zhí)行NAND閃存的區(qū)塊管理。該軟件負責(zé)磨損評級或邏輯到物理映射。該軟件還提供ECC碼,如果處理器不包含ECC硬件的話。 編程或擦除操作之后,重要的是讀狀態(tài)寄存器,因為它確認是否成功地完成了編程或擦除操作。如果操作失敗,要把該區(qū)塊標(biāo)記為損壞且不能再使用。以前已編寫進去的數(shù)據(jù)要從損壞的區(qū)塊中搬出,轉(zhuǎn)移到新
33、的(好的)存儲塊之中。2Gb NAND的規(guī)范規(guī)定,它可以最多有40個壞的區(qū)塊,這個數(shù)字在器件的生命周期(額定壽命為10萬次編程/擦除周期)內(nèi)都適用。一些有壞塊的NAND器件能夠出廠,主要就歸根于其裸片面積大。管理器件的軟件負責(zé)映射壞塊并由好的存儲塊取而代之。 利用工廠對這些區(qū)塊的標(biāo)記,軟件通過掃描塊可以確定區(qū)塊的好壞。壞塊標(biāo)記被固定在空閑區(qū)的第一個位置(列地址2048)。如果在0或1頁的列地址2048上的數(shù)據(jù)是“non-FF”,那么,該塊要標(biāo)記為壞,并映射出系統(tǒng)。初始化軟件僅僅需要掃描所有區(qū)塊確定以確定哪個為壞,然后建一個壞塊表供將來參考。 小心不要擦除壞塊標(biāo)記,這一點很重要。工廠在寬溫和寬電
34、壓范圍內(nèi)測試了NAND;一些由工廠標(biāo)記為壞的區(qū)塊可能在一定的溫度或電壓條件下仍然能工作,但是,將來可能會失效。如果壞塊信息被擦除,就無法再恢復(fù)。NAND Flash結(jié)構(gòu)與驅(qū)動分析摘一、NAND flash的物理組成NAND Flash 的數(shù)據(jù)是以bit的方式保存在memory cell,一般來說,一個cell 中只能存儲一個bit。這些cell 以8個或者16個為單位,連成bit line,形成所謂的byte(x8)/word(x16),這就是NAND Device的位寬。這些Line會再組成Page,(NAND Flash 有多種結(jié)構(gòu),我使用的NAND Flash 是K9F1208,下面內(nèi)容
35、針對三星的K9F1208U0M),每頁528Bytes(512byte(Main Area)+16byte(Spare Area),每32個page形成一個Block(32*528B)。具體一片flash上有多少個Block視需要所定。我所使用的三星k9f1208U0M具有4096個block,故總?cè)萘繛?096*(32*528B)=66MB,但是其中的2MB是用來保存ECC校驗碼等額外數(shù)據(jù)的,故實際中可使用的為64MB。NAND flash以頁為單位讀寫數(shù)據(jù),而以塊為單位擦除數(shù)據(jù)。按照這樣的組織方式可以形成所謂的三類地址: Column Address:Starting Address of
36、 the Register. 翻成中文為列地址,地址的低8位Page Address :頁地址Block Address :塊地址對于NAND Flash來講,地址和命令只能在I/O7:0上傳遞,數(shù)據(jù)寬度是8位。二、NAND Flash地址的表示512byte需要9bit來表示,對于528byte系列的NAND,這512byte被分成1st half Page Register和2nd half Page Register,各自的訪問由地址指針命令來選擇,A7:0就是所謂的column address(列地址),在進行擦除操作時不需要它,why?因為以塊為單位擦除。32個page需要5bit來
37、表示,占用A13:9,即該page在塊內(nèi)的相對地址。A8這一位地址被用來設(shè)置512byte的1st half page還是2nd half page,0表示1st,1表示2nd。Block的地址是由A14以上的bit來表示。例如64MB(512Mb)的NAND flash(實際中由于存在spare area,故都大于這個值),共4096block,因此,需要12個bit來表示,即A25:14,如果是128MB(1Gbit) 的528byte/page的NAND Flash,則block address用A26:14表示。而page address就是blcok address|page add
38、ress in block NAND Flash 的地址表示為: Block Address|Page Address in block|halfpage pointer|Column Address 地址傳送順序是Column Address,Page Address,Block Address。 由于地址只能在I/O7:0上傳遞,因此,必須采用移位的方式進行。 例如,對于512Mbit x8的NAND flash,地址范圍是00x3FF_FFFF,只要是這個范圍內(nèi)的數(shù)值表示的地址都是有效的。 以NAND_ADDR 為例:第1 步是傳遞column address,就是NAND_ADDR7:
39、0,不需移位即可傳遞到I/O7:0上,而halfpage pointer即A8 是由操作指令決定的,即指令決定在哪個halfpage 上進行讀寫,而真正的A8 的值是不需程序員關(guān)心的。 第2 步就是將NAND_ADDR 右移9位,將NAND_ADDR16:9傳到I/O7:0上;第3 步將NAND_ADDR24:17放到I/O上;第4步需要將NAND_ADDR25放到I/O上;因此,整個地址傳遞過程需要4 步才能完成,即4-step addressing。 如果NAND Flash 的容量是32MB(256Mbit)以下,那么,block adress最高位只到bit24,因此尋址只需要3步。
40、下面,就x16 的NAND flash 器件稍微進行一下說明。 由于一個page 的main area 的容量為256word,仍相當(dāng)于512byte。但是,這個時候沒有所謂的1st halfpage 和2nd halfpage 之分了,所以,bit8就變得沒有意義了,也就是這個時候 A8 完全不用管,地址傳遞仍然和x8 器件相同。除了,這一點之外,x16 的NAND使用方法和 x8 的使用方法完全相同。 三、NAND flash驅(qū)動解讀以前由于做移植多一些,那些工作很簡單(現(xiàn)在看來),從來都不用去關(guān)心驅(qū)動里面到底怎么實現(xiàn)的,這幾次面試才發(fā)現(xiàn)真的是學(xué)的太淺了,似乎我還在學(xué)習(xí)仰泳而那些牛人基本都
41、屬于潛水級的了,潛的不知有多深。我對照著開發(fā)板所帶的NAND flash驅(qū)動和k9f1208的芯片資料把這些代碼通讀了一遍,終于明白了NAND flash的讀寫過程是如何實現(xiàn)的了。我所參考的驅(qū)動是mizi公司為三星芯片所寫的,我看看了,大概和官方內(nèi)核的nand.c差不多。在s3c2410處理器中有專門的NAND flash控制器,他們位于SFR區(qū),具體可以參看s3c2410用戶手冊。以下的這些代碼均可以在vivi或者kernel里面找到,文中會標(biāo)明程序出自何處。在vivi中,有關(guān)NAND flash的驅(qū)動都在driver/mtd/nand/下,該目錄中包含的源文件:smc_core.c是NAN
42、D flash的主要驅(qū)動。NAND flash 芯片定義了一個很長的結(jié)構(gòu),這個結(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 val); void (*wait
43、_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 */;縱觀對NAND flash的各種操作(read、write
44、、erase),無外乎如下幾種操作:1選擇flash nand_select()2發(fā)送命令 nand_command()3進行相應(yīng)操作 read,write4反選NAND flash nand_deselect()下面是以上四步的實現(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è)置2410的NAND FLASH CONF
45、IGURATION (NFCONF) REGISTER的NAND Flash Memory chip enable位為0,這位寄存器在自動重啟后就被系統(tǒng)自動清零。如果要訪問NAND flash的內(nèi)存,這位必須置1。nand_command(mtd, NAND_CMD_RESET, -1, -1);向flash發(fā)送命令,此命令為reset,即為重置NAND flash。然后是10us的延遲,給flash個反應(yīng)時間。2、發(fā)送命令Nand_command()同樣在smc_core.c中實現(xiàn)。NAND flash的命令有如下幾種: 命令 命令值 描述NAND_CMD_READ0 0 讀操作NAND_C
46、MD_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號NAND_CMD_ERASE2 0xd0 擦寫操作NAND_CMD_RESET oxff 復(fù)位操作按照程序的注釋,可以將該函數(shù)的實現(xiàn)分為如下幾步:1、Begin command latch cycle實現(xiàn)代碼:this->hwcontrol(NAND_CTL_SETCLE); this->hwcontrol(NAND_CTL_DAT_OUT);找到第二條語句的定義,發(fā)現(xiàn)什么都么做,不解!希望達人解答。我猜想可能是一個數(shù)據(jù)讀出的使
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 IEC 60155:1993/AMD2:2006 EN-D Amendment 2 - Glow-starters for fluorescent lamps
- 專業(yè)領(lǐng)域技術(shù)研發(fā)工作經(jīng)驗證明(6篇)
- 詩詞歌賦與修辭技巧融合:初中英語詞匯教學(xué)方法
- 化工工藝流程及安全知識考核
- 藝術(shù)欣賞考試試題及答案
- 沂源小學(xué)考試試題及答案
- 六一親子簽到活動方案
- 六一德克士活動方案
- 六一活動女裝活動方案
- 六一活動小集市活動方案
- 貨物倒塌危害預(yù)防管理
- 辦公室綜合業(yè)務(wù)培訓(xùn)課件
- 諸暨市城北片控制性詳細規(guī)劃
- 2023年10月自考00539中國古代文學(xué)史二試題及答案含評分標(biāo)準(zhǔn)
- 安保服務(wù)方案(技術(shù)標(biāo) )
- 高中化學(xué)課程標(biāo)準(zhǔn)解讀課件
- 四年級下冊數(shù)學(xué)說課稿-1歌手大賽-北師大版
- 北京市朝陽區(qū)2021-2022學(xué)年四年級下學(xué)期期末語文試卷
- 甘肅省張掖市2023年中考地理真題試題(含解析)
- 人教小學(xué)數(shù)學(xué)五年級下冊綜合與實踐《怎樣通知最快》示范公開課教學(xué)課件
- 脫不花三十天溝通訓(xùn)練營
評論
0/150
提交評論