選擇NAND還是NOR,這確實是個問題。不同的應(yīng)用和功能應(yīng)該選用不同類型的閃存。
在尋找完美“通用存儲器”的過程中,嵌入式系統(tǒng)設(shè)計師就象是戲劇《等待戈多》中的人物一樣,他們一直等待舞臺下的人物“戈多”走上舞臺,同時又在猜測舞臺上正在表演的人物或新人中哪個是戈多。
正如大家所知的那樣,從20世紀70年代開始,嵌入式系統(tǒng)產(chǎn)業(yè)樣一直在等待“舞臺下”出現(xiàn)一種叫作“通用存儲器”的“半導(dǎo)體人物”,以便取代從大型機、迷你計算機和臺式機傳承下來的存儲層次(memory hierarchy)體系:非易失性硬盤用于長期的海量存儲和備份,動態(tài)RAM用于局部快速存儲器訪問,而SRAM和ROM則分別專門用于快速存取和代碼存儲。
隨著運算結(jié)構(gòu)的嵌入、移動和便攜特性越來越突出,這種需求也越來越強烈,作為“通用存儲器”的候選產(chǎn)品開始陸續(xù)登場。有些產(chǎn)品,如EEPROM、EPROM、UV-EPROM、鐵電RAM和各種偽RAM組合已經(jīng)開始走下坡路,磁性RAM等其它產(chǎn)品雖開始受到矚目,但由于眾多經(jīng)濟和技術(shù)原因卻受到質(zhì)疑。
不過,目前的一些“角色”特別是各種NAND和NOR閃速EPROM正在被它們的供應(yīng)商吹捧為“舞臺下人物”-通用存儲器,或者至少是它的“親戚”或“很近的朋友”,這其中包括了OneNAND、OrNAND、iNAND、GBNAND、moviNAND、ManagedNAND和NANDrive等。由于有眾多“演員”急于要擔當角色,因此選擇正確的存儲器子系統(tǒng)已變得越來越復(fù)雜,特別是在你既要給移動和嵌入式系統(tǒng)增加更多的多媒體功能,同時又要縮小物理尺寸和降低系統(tǒng)總成本的時候,系統(tǒng)中不僅代碼和數(shù)據(jù)存儲器需求會有所增加,而且你設(shè)計實現(xiàn)必須更加精簡可靠。
閃存是最實用的解決方案,但了解哪種閃存最適合系統(tǒng)使用是關(guān)鍵。NAND、NOR、可管理NAND和一些混合存儲器中哪種才是最佳選擇呢?
NAND閃存是一種需要缺陷管理的高密度低價格非易失性存儲器,用這種存儲器來滿足這些不斷增長的代碼和數(shù)據(jù)存儲器需求會使存儲器子系統(tǒng)更加復(fù)雜。再加上需要支持不同的存儲器類型、接口、供應(yīng)商和特殊供應(yīng)商規(guī)范,因此存儲器子系統(tǒng)將愈加復(fù)雜。
一個完整、可管理的存儲器子系統(tǒng)解決方案可以用工業(yè)標準的RAM(PSRAM或SDR/DDR SDRAM)接口來設(shè)計。這種可管理的存儲器子系統(tǒng)可以與主芯片組/處理器實現(xiàn)無縫集成,并且主系統(tǒng)無需再要應(yīng)對內(nèi)嵌存儲器件的復(fù)雜性和不足問題。
與NAND閃存不同的是,NOR閃存是目前嵌入式系統(tǒng)中最老也是應(yīng)用最廣泛的存儲器之一,它可以用于代碼和數(shù)據(jù)存儲。其主要優(yōu)點是代碼可以直接在NOR閃存中執(zhí)行。另外,NOR閃存可以直接與主處理器接口,因此設(shè)計方便,可實現(xiàn)產(chǎn)品的快速上市。
隨著嵌入式系統(tǒng)中多媒體功能的增加,對代碼和數(shù)據(jù)存儲的需求也不斷上升。對這些應(yīng)用而言,與其它方案(如NAND閃存)相比,采用更高密度的NOR閃存做代碼和數(shù)據(jù)存儲將提升成本。另外,目前最高密度的NOR閃存只有1Gb。而且多媒體數(shù)據(jù)存儲器需要較高的讀寫性能。因此在許多嵌入式應(yīng)用(例如高端手機)中系統(tǒng)設(shè)計師轉(zhuǎn)用NAND閃存來存儲多媒體文件和應(yīng)用代碼。
用于代碼和數(shù)據(jù)存儲的NAND
NAND閃存非常適合需要大量代碼存儲(如操作系統(tǒng)和應(yīng)用程序)以及大量數(shù)據(jù)存儲的應(yīng)用,因為NAND閃存不貴,而且可以提供較高的密度(一個裸片可高達16Gb)。與NOR不同的是,NAND閃存不支持芯片內(nèi)執(zhí)行(XIP)或隨機存取。因此一些使用NAND閃存的系統(tǒng)需要一個低密度的NOR閃存用于系統(tǒng)啟動和BIOS代碼執(zhí)行。在其它系統(tǒng)中,NAND閃存控制器或主處理器中的嵌入式啟動ROM可提供啟動功能。在系統(tǒng)啟動后,基于NAND的系統(tǒng)將使用代碼映射或需求分頁功能執(zhí)行代碼。在代碼映射模式下,整個操作系統(tǒng)和應(yīng)用程序?qū)腘AND閃存挎貝到系統(tǒng)RAM,而在需求分頁模式時,將根據(jù)需要將部分操作系統(tǒng)和應(yīng)用程序挎貝到系統(tǒng)RAM中執(zhí)行。
雖然NAND閃存與NOR相比價格便宜,而且有更高的密度,但NAND可靠性低,對許多應(yīng)用而言需要輔以包括誤差檢測和糾正以及損耗均衡在內(nèi)的缺陷管理手段才具有可用性。這些NAND閃存管理功能要求復(fù)雜的硬件和軟件。圖1顯示了主芯片組與獨立NAND閃存相接口的系統(tǒng)。在這樣的系統(tǒng)中,缺陷管理功能必須由主芯片組來實現(xiàn)。在主處理器上運行這種閃存管理功能需要一定的軟件開發(fā),并且要耗用一些主機的CPU和存儲器資源,因此容易降低系統(tǒng)總性能。
圖1:主芯片組與獨立NAND閃存直接接口的系統(tǒng)框圖。
隨著NAND閃存供應(yīng)商采用越來越小的工藝尺寸,單層單元(SLC)NAND閃存的ECC(糾錯碼)要求已經(jīng)從每512字節(jié)扇區(qū)的1位增加到4位,而多層單元(MLC)NAND閃存也從每512字節(jié)扇區(qū)的4位增加到8位糾錯編碼。頁面尺寸則從512字節(jié)增加到4096字節(jié)。一些較小尺寸的SLC NAND閃存的可用性則從10萬次降低到5萬次,MLC NAND閃存的可用性從1萬次下降到5千次(某些情況下為3千次!)。為了減少系統(tǒng)中分立器件的數(shù)量,許多芯片組供應(yīng)商開始在芯片組中集成NAND閃存控制器,這樣芯片組就能直接接口獨立的NAND閃存。不過由于芯片組設(shè)計周期長,芯片組供應(yīng)商很難跟上NAND閃存技術(shù)的發(fā)展步伐。因此芯片組中的嵌入式NAND閃存控制器功能經(jīng)常落后于NAND閃存技術(shù)。
也有些解決方案與標準NAND閃存相似,但可以提供更好的性能和功能。例如,OneNAND就是NAND閃存的一個變種,它在同一器件中整合了RAM和獨立SLC NAND閃存,因此可以提供啟動功能和更快的讀取速度。OneNAND要求每512字節(jié)扇區(qū)1位ECC,并且可以在主芯片組中或獨立的控制器中實現(xiàn)NAND閃存管理功能。
OrNAND則整合了MirrorBit NOR和NAND閃存接口,它可以比以前的NOR器件提供更快的寫入速度。OrNAND同樣在主芯片組中或獨立控制器只要求執(zhí)行1位的ECC便可確保可靠的系統(tǒng)啟動。不過OrNAND支持的最大密度目前只有1Gb,低于現(xiàn)有NAND閃存的最大密度。
用于數(shù)據(jù)存儲的可管理NAND
由于嵌入式NAND控制器的局限性,許多系統(tǒng)設(shè)計師在尋求可管理的NAND方案。有多家供應(yīng)商已能提供可管理的NAND存儲器產(chǎn)品,它們能降低嵌入式應(yīng)用中傳統(tǒng)存儲子系統(tǒng)的復(fù)雜性。這些可管理NAND存儲器產(chǎn)品包括了iNAND、GBNAND、moviNAND、可管理NAND和NANDrive,主要用于數(shù)據(jù)存儲。通過有效管理帶NAND控制器的內(nèi)置NAND閃存和集成在相同器件中的閃存文件系統(tǒng)(FFS),它們降低了系統(tǒng)復(fù)雜度,如圖2所示。為了更加方便集成,這些產(chǎn)品采用標準的接口,如安全數(shù)據(jù)接口(SD)、多媒體卡(MMC)或先進技術(shù)附件規(guī)格(ATA)。例如,iNAND和GBNAND采用的是SD接口,moviNAND和可管理NAND采用的是MMC接口,NANDrive采用的則是ATA接口。這些接口不能提供XIP訪問,因此采用這些器件的系統(tǒng)可能還需要一個NOR閃存用于啟動功能。
圖2:可管理NAND存儲器主要用于數(shù)據(jù)存儲,它通過管理帶NAND控制器的內(nèi)置NAND閃存和集成在同一器件中的閃存文件系統(tǒng)降低了系統(tǒng)復(fù)雜性。
使用可管理NAND器件后,主芯片組就無需集成復(fù)雜的NAND管理功能。因此芯片供應(yīng)商不再為要緊跟不斷演變的NAND技術(shù)而憂心,從而讓供應(yīng)商能專注于提高他們的核心競爭力。
可管理NAND混合產(chǎn)品
因為可管理NAND閃存不提供啟動功能,系統(tǒng)設(shè)計師仍必須使用較昂貴的NOR閃存器件來實現(xiàn)啟動。不過包括mDOC H3在內(nèi)的混合產(chǎn)品已經(jīng)面世。這些混合器件在同一個器件中通過集成RAM和可管理NAND來簡化傳統(tǒng)的存儲子系統(tǒng),如圖3所示。
圖3:一些混合解決方案將RAM和可管理NAND集成在同一個器件中。
混合產(chǎn)品解決了與可管理NAND相關(guān)的啟動問題。它們可以直接從NAND閃存啟動,無需較昂貴的啟動用NOR閃存器件,從而有效降低了系統(tǒng)總成本??晒芾鞱AND混合產(chǎn)品也有助于減少元器件數(shù)量,節(jié)省電路板面積,這使它們非常適合于諸如手機等空間較敏感的應(yīng)用。因為使用NAND閃存來實現(xiàn)非易失性存儲,因此這種解決方案可以提供更高的密度。
NAND混合器件的缺點是啟動時間較長,因為它們在上電后必須將啟動代碼從NAND挎貝進啟動RAM。另外,NAND混合器件非常復(fù)雜,很難集成,并且要求先進的操作系統(tǒng)支持主芯片組上的需求分頁。
mDOC H3通過NOR類總線連接主處理器,相比NAND閃存能提供更快的讀取性能,也可以比NOR提供更快的寫入性能。由于具有更快的寫入速度,這些器件非常適合用來存儲多媒體數(shù)據(jù)。
使用可管理的NAND或者具有啟動功能的可管理NAND混合產(chǎn)品不會顯著降低存儲子系統(tǒng)的總體復(fù)雜性。因此系統(tǒng)設(shè)計師仍然要處理與不同存儲器類型、接口、供應(yīng)商、特殊供應(yīng)商規(guī)范等有關(guān)的復(fù)雜問題。這類存儲子系統(tǒng)要求更多元器件、更多引腳和復(fù)雜的軟硬件開發(fā),因此將增加系統(tǒng)成本、電路板面積、開發(fā)時間和功耗。同時,它們還將提升主處理器中的外部存儲器控制器的復(fù)雜度。因此,這些混合器件還不夠成熟。當前系統(tǒng)需要一種易用、單標準總線、完整的可管理存儲子系統(tǒng)實現(xiàn)代碼和數(shù)據(jù)存儲以及系統(tǒng)RAM,并且所有功能都集中在一個器件中。
系統(tǒng)設(shè)計師需要的是一個完整的存儲子系統(tǒng),它能提供數(shù)百兆XIP代碼存儲,且能滿足目前多媒體應(yīng)用不斷增長的數(shù)據(jù)存儲需求。理想解決方案應(yīng)充分整合NOR(快速讀取)、NAND(較低成本和較高密度)和RAM(簡單總線操作)的優(yōu)勢,而且必須易用、易設(shè)計,并有完善的可管理性。因而,這樣的解決方案需要很少甚至不需要額外的硬件或軟件開發(fā),可提供標準接口,無需任何膠合邏輯就能實現(xiàn)與主芯片組/處理器的無縫集成,從而使得存儲子系統(tǒng)的訪問象SRAM一樣簡單方便。
這種存儲子系統(tǒng)解決方案中的內(nèi)置控制器必須實現(xiàn)ECC、壞塊管理和損耗均衡功能,以便應(yīng)對內(nèi)置NAND閃存的缺陷。這個控制器還必須能應(yīng)對所有內(nèi)置存儲器(NOR、NAND和RAM)的復(fù)雜性和不足,從而代替主系統(tǒng)完成這些復(fù)雜的管理功能。
另外,這種解決方案還必須通過降低材料、開發(fā)和制造成本來滿足系統(tǒng)總成本要求。而且還必須通過提供方便集成、可擴展的解決方案來滿足移動和消費電子設(shè)備系統(tǒng)設(shè)計師對縮短面市時間的要求。
下一代存儲子系統(tǒng)
目前面市的可管理存儲子系統(tǒng)可以提供上述所有性能和好處。如圖4所示的這種配置由一個帶內(nèi)置啟動NOR閃存的存儲器控制器、NAND閃存和RAM組成,并且全部集成在一個封裝內(nèi)。在NAND閃存前使用了RAM緩存,這樣有助于控制器處理需求分頁和其它存儲器管理功能。另外,RAM緩存使存儲子系統(tǒng)線性可尋址,變得象SRAM一樣簡單。
圖4:全功能存儲器是可管理存儲子系統(tǒng)的一個示例,它在同一個封裝內(nèi)同時集成了帶內(nèi)置啟動NOR閃存的存儲器控制器、NAND閃存和RAM(a)??刂破骺梢蕴幚硇枨蠓猪摵推渌鎯ζ鞴芾砉δ?b)。
RAM塊劃分成兩個主處理器可訪問、用戶可配置的部分:一個是用于偽NOR(PNOR)的緩存部分,一個是用于主處理器的系統(tǒng)RAM部分。NAND塊用于PNOR區(qū)域和存儲器映射的ATA NAND磁盤區(qū)的非易失存儲器??膳渲肞NOR塊通過使用RAM緩存和NAND閃存模擬NOR功能。因為NAND是用于主要的非易失存儲介質(zhì),因此這種解決方案可以提供較大的XIP代碼存儲,可有效地代替?zhèn)鹘y(tǒng)高成本、高密度NOR閃存。通過在標準RAM(PSRAM或SDR/DDR SDRAM)總線上使用工業(yè)標準ATA數(shù)據(jù)存儲協(xié)議,該解決方案可以為日趨增長的多媒體應(yīng)用提供強大的ATA類數(shù)據(jù)存儲功能。另外,PNOR塊中的RAM緩存還能減少對NAND閃存的直接讀寫訪問,從而有助于提高代碼和數(shù)據(jù)存儲區(qū)的耐用性和可靠性。
因為這種可管理存儲子系統(tǒng)采用了很小的封裝,因此可以簡化主處理器接口、減少系統(tǒng)復(fù)雜性、縮短設(shè)計時間、降低系統(tǒng)總成本并提高系統(tǒng)質(zhì)量和可靠性。其它好處還包括用戶可配置的XIP PNOR區(qū)、用于MLC和SLC NAND的超強硬件檢錯和糾錯以及向更高密度的可擴展性等。由于不需要復(fù)雜的軟硬件開發(fā),這種可管理的存儲子系統(tǒng)也許就是大家盼望已久的“戈多”。