華邦閃存flash基礎(chǔ)原理
1、閃存基本介紹
Flash存儲是存儲界的新人和紅人。Flash存儲系統(tǒng)由于其優(yōu)異的性能、高效的存儲密度和出色的節(jié)能特性使得Flash存儲有望替代機(jī)械磁盤成為企業(yè)級存儲的核心。未來很有可能所有的數(shù)據(jù)都會存儲在Flash存儲介質(zhì)上面,包括銀行、中小企業(yè)、互聯(lián)網(wǎng)、電信等存儲大戶。
紫外線可擦除存儲器
當(dāng)年沉迷于電子設(shè)計(jì)的時(shí)候,沒有想到一個小小的Flash居然能夠做成一個新興的存儲產(chǎn)業(yè)。做電子設(shè)計(jì)的時(shí)候,很多時(shí)候需要用到存儲芯片,比較老的存儲芯片如TI的27系列紫外線可擦除存儲器。該存儲器需要通過紫外線照射的方式擦除已經(jīng)存儲的數(shù)據(jù)。也就是需要擦除數(shù)據(jù)的時(shí)候,將芯片放到太陽光底下去曬一段時(shí)間,曬完之后,存儲在芯片內(nèi)部的數(shù)據(jù)就沒有了,芯片可以繼續(xù)編程使用了。此類芯片使用非常麻煩,所以記得到2000年初的時(shí)候已經(jīng)很少有人使用這種芯片了,取而代之用的最多的就是電可擦寫存儲器EEPROM。
電可擦寫存儲器EEPROM
EEPROM的典型代表是SPI接口的93CXX系列存儲器,以及I2C接口的24CXX系列存儲器。這些EEPROM容量都比較小,通常用來存儲一些小容量數(shù)據(jù),例如系統(tǒng)的配置信息。像網(wǎng)卡的配置信息、PCI橋的配置信息都存儲在93C46之類的芯片中。
這種存儲器一個比較好的特點(diǎn)是可以進(jìn)行字節(jié)級編程,但是讀寫性能都很差。如果要進(jìn)行大數(shù)據(jù)存儲,是不能采用此類芯片的。例如,當(dāng)初我設(shè)計(jì)一個收費(fèi)站監(jiān)控系統(tǒng),需要存儲一個月的營業(yè)額,那么需要采用大容量的可編程存儲器進(jìn)行數(shù)據(jù)存儲。此時(shí)就需要采用Flash存儲芯片了。
Flash存儲芯片
和EEPROM相比,F(xiàn)lash存儲芯片的一個特點(diǎn)是存儲容量大,并且以塊單元進(jìn)行數(shù)據(jù)擦除操作,以Page頁的方式進(jìn)行數(shù)據(jù)讀寫。該類芯片都采用IO接口的方式與CPU相連,即通過命令的方式進(jìn)行讀寫、擦除操作。
在電子設(shè)計(jì)的時(shí)候,使用Flash芯片最大的問題在于開發(fā)Flash的操作函數(shù)集,例如讀page函數(shù)、寫page函數(shù)、塊擦除函數(shù)。在操作系統(tǒng)環(huán)境里,這些函數(shù)就構(gòu)成了一個Flash芯片的驅(qū)動程序。此外,由于控制器通常采用GPIO和Flash相連,因此需要通過程序的方式模擬Flash接口時(shí)序。如果設(shè)計(jì)的板子上有FPGA/CPLD之類的可編程器件,那么可以通過Verilog/VHDL語言或者通過圖形的方式設(shè)計(jì)一個Flash芯片的時(shí)序控制器,這樣CPU控制器就無需采用軟件方式模擬Flash時(shí)序了。
這些事情是電子設(shè)計(jì)工程師經(jīng)常干的,而且也非常熟悉的東西;贜AND Flash設(shè)計(jì)的存儲系統(tǒng)電路圖比較簡單,如下圖所示:
上面提到的Flash其實(shí)是NAND Flash,在電子設(shè)計(jì)的時(shí)候還會經(jīng)常用到另外一種Flash——NOR Flash。
NOR Flash通常是用作程序存儲器,容量不是很大。和NAND Flash相比,其最大的特點(diǎn)是讀取速度快,但是寫入速度要比NAND Flash慢,容量要小的多。因此,NOR Flash通常被用作程序存儲器。
在低速的51系統(tǒng)中,程序可以直接運(yùn)行在NOR Flash上;在高速的ARM系統(tǒng)中,程序需要從NOR Flash中引導(dǎo)到Memory中,然后在Memory中運(yùn)行。和NAND Flash相比,NOR Flash的接口也大不一樣。NOR Flash采用的是標(biāo)準(zhǔn)總線接口,有地址線、數(shù)據(jù)線和控制線之分,因此,處理器可以直接與NOR Flash相連,而不像NAND Flash一樣還需要接口控制器。一個典型的NOR Flash電路原理圖如下所示:
NOR Flash中的程序是需要編程寫入的。如果是外置式的NOR Flash,那么需要一些小的技巧才能將程序?qū)懭隢OR Flash。在ARM處理器中,最常用的思路是首先編寫一個小的NOR Flash燒錄程序,通過ARM處理器內(nèi)部的Bootload程序?qū)⑦@個燒錄程序下載到內(nèi)存中,然后運(yùn)行該燒錄程序。編寫的該燒錄程序有如下幾個方面的功能:
1、初始化內(nèi)存,使得ARM處理器能夠使用所有的板載內(nèi)存
2、通過串口接收需要燒錄的程序數(shù)據(jù),并且把需要下載的數(shù)據(jù)緩存至內(nèi)存中
3、能夠操作NOR Flash,并且將內(nèi)存中的數(shù)據(jù)燒寫入NOR Flash
上述這些工作是嵌入式工程師經(jīng)常需要做的事情。
Flash的未來
在未踏入存儲這個行業(yè)的時(shí)候,對NAND Flash也就是這個理解,僅僅是作為電子設(shè)計(jì)的一個大容量存儲器而已,最多在嵌入式的環(huán)境下跑跑Flash的文件系統(tǒng)。但是,這么多年對存儲進(jìn)行深入研究、開發(fā)之后發(fā)現(xiàn),NAND Flash的確擁有很多的優(yōu)勢,但是同時(shí)也存在很多的問題。如果想要將NAND Flash應(yīng)用到企業(yè)級存儲領(lǐng)域,那么面臨的挑戰(zhàn)將十分嚴(yán)峻。有一篇文章《采用NAND Flash設(shè)計(jì)存儲設(shè)備的挑戰(zhàn)在哪里》也蜻蜓點(diǎn)水的分析了一下NAND Flash作為企業(yè)級存儲介質(zhì)存在的一些挑戰(zhàn),真正想把NAND Flash的特點(diǎn)發(fā)揮到極致,需要走的路還很長。業(yè)內(nèi)很多人都在研究Flash Translation Layer(FTL)算法,目的就是要把NAND Flash的問題屏蔽掉,然后對外提供標(biāo)準(zhǔn)的塊設(shè)備接口,從而使得傳統(tǒng)的應(yīng)用軟件可以直接在Flash上跑起來。
可以說FTL是Flash存儲最底層的核心技術(shù),其解決了不均衡的性能問題、寫放大問題、塊擦除的壽命問題。通過這些問題的解決,使得NAND Flash很多方面可以和傳統(tǒng)的機(jī)械磁盤相媲美,在性能上遠(yuǎn)遠(yuǎn)超過傳統(tǒng)硬盤。
到目前為止,個人認(rèn)為FTL算法已經(jīng)研究的相對很成熟了,所以,基于FTL的Flash盤應(yīng)該說可以大規(guī)模應(yīng)用了,其主要障礙就在于NAND Flash芯片成本了。
基于flash閃存存儲系統(tǒng)重點(diǎn)
在企業(yè)級Flash存儲中,僅僅有FTL算法是遠(yuǎn)遠(yuǎn)不夠的。基于Flash如何做盤陣?
基于Flash如果做文件系統(tǒng)?
基于Flash如果做大規(guī)模存儲系統(tǒng)?
這些存儲級別的問題還沒有得到完美的解決。
個人認(rèn)為,在Flash存儲這一塊,RAID技術(shù)、文件系統(tǒng)、互連技術(shù)、多處理器并行(集群)處理技術(shù)應(yīng)該是研發(fā)攻關(guān)的重點(diǎn)。
編輯:Simon 最后修改時(shí)間:2019-06-14