Flash存储的故事
轉自:http://blog.51cto.com/alanwu/1426457
Flash存儲是存儲界的新人和紅人。Flash存儲系統由于其優異的性能、高效的存儲密度和出色的節能特性使得Flash存儲有望替代機械磁盤成為企業級存儲的核心。未來很有可能所有的數據都會存儲在Flash存儲介質上面,包括銀行、中小企業、互聯網、電信等存儲大戶。
當年沉迷于電子設計的時候,沒有想到一個小小的Flash居然能夠做成一個新興的存儲產業。做電子設計的時候,很多時候需要用到存儲芯片,比較老的存儲芯片如TI的27系列紫外線可擦除存儲器。
?
?
該存儲器需要通過紫外線照射的方式擦除已經存儲的數據。也就是需要擦除數據的時候,將芯片放到太陽光底下去曬一段時間,曬完之后,存儲在芯片內部的數據就沒有了,芯片可以繼續編程使用了。此類芯片使用非常麻煩,所以記得到2000年初的時候已經很少有人使用這種芯片了,取而代之用的最多的就是電可擦寫存儲器EEPROM。
?
?
EEPROM的典型代表是SPI接口的93CXX系列存儲器,以及I2C接口的24CXX系列存儲器。這些EEPROM容量都比較小,通常用來存儲一些小容量數據,例如系統的配置信息。像網卡的配置信息、PCI橋的配置信息都存儲在93C46之類的芯片中。這種存儲器一個比較好的特點是可以進行字節級編程,但是讀寫性能都很差。如果要進行大數據存儲,是不能采用此類芯片的。例如,當初我設計一個收費站監控系統,需要存儲一個月的營業額,那么需要采用大容量的可編程存儲器進行數據存儲。此時就需要采用Flash存儲芯片了。
?
?
和EEPROM相比,Flash存儲芯片的一個特點是存儲容量大,并且以塊單元進行數據擦除操作,以Page頁的方式進行數據讀寫。該類芯片都采用IO接口的方式與CPU相連,即通過命令的方式進行讀寫、擦除操作。在電子設計的時候,使用Flash芯片最大的問題在于開發Flash的操作函數集,例如讀page函數、寫page函數、塊擦除函數。在操作系統環境里,這些函數就構成了一個Flash芯片的驅動程序。此外,由于控制器通常采用GPIO和Flash相連,因此需要通過程序的方式模擬Flash接口時序。如果設計的板子上有FPGA/CPLD之類的可編程器件,那么可以通過Verilog/VHDL語言或者通過圖形的方式設計一個Flash芯片的時序控制器,這樣CPU控制器就無需采用軟件方式模擬Flash時序了。這些事情是電子設計工程師經常干的,而且也非常熟悉的東西。基于NAND Flash設計的存儲系統電路圖比較簡單,如下圖所示:
?
?
上面提到的Flash其實是NAND Flash,在電子設計的時候還會經常用到另外一種Flash——NOR Flash。
?
?
NOR Flash通常是用作程序存儲器,容量不是很大。和NAND Flash相比,其最大的特點是讀取速度快,但是寫入速度要比NAND Flash慢,容量要小的多。因此,NOR Flash通常被用作程序存儲器。在低速的51系統中,程序可以直接運行在NOR Flash上;在高速的ARM系統中,程序需要從NOR Flash中引導到Memory中,然后在Memory中運行。和NAND Flash相比,NOR Flash的接口也大不一樣。NOR Flash采用的是標準總線接口,有地址線、數據線和控制線之分,因此,處理器可以直接與NOR Flash相連,而不像NAND Flash一樣還需要接口控制器。一個典型的NOR Flash電路原理圖如下所示:
?
?
NOR Flash中的程序是需要編程寫入的。如果是外置式的NOR Flash,那么需要一些小的技巧才能將程序寫入NOR Flash。在ARM處理器中,最常用的思路是首先編寫一個小的NOR Flash燒錄程序,通過ARM處理器內部的Bootload程序將這個燒錄程序下載到內存中,然后運行該燒錄程序。編寫的該燒錄程序有如下幾個方面的功能:
1、初始化內存,使得ARM處理器能夠使用所有的板載內存
2、通過串口接收需要燒錄的程序數據,并且把需要下載的數據緩存至內存中
3、能夠操作NOR Flash,并且將內存中的數據燒寫入NOR Flash
上述這些工作是嵌入式工程師經常需要做的事情。
在8年前未踏入存儲這個行業的時候,對NAND Flash也就是這個理解,僅僅是作為電子設計的一個大容量存儲器而已,最多在嵌入式的環境下跑跑Flash的文件系統。但是,這么多年對存儲進行深入研究、開發之后發現,NAND Flash的確擁有很多的優勢,但是同時也存在很多的問題。如果想要將NAND Flash應用到企業級存儲領域,那么面臨的挑戰將十分嚴峻。前面有一篇文章《采用NAND Flash設計存儲設備的挑戰在哪里?》也蜻蜓點水的分析了一下NAND Flash作為企業級存儲介質存在的一些挑戰,真正想把NAND Flash的特點發揮到極致,需要走的路還很長。
業內很多人都在研究Flash Translation Layer(FTL)算法,目的就是要把NAND Flash的問題屏蔽掉,然后對外提供標準的塊設備接口,從而使得傳統的應用軟件可以直接在Flash上跑起來。可以說FTL是Flash存儲最底層的核心技術,其解決了不均衡的性能問題、寫放大問題、塊擦除的壽命問題。通過這些問題的解決,使得NAND Flash很多方面可以和傳統的機械磁盤相媲美,在性能上遠遠超過傳統硬盤。到目前為止,個人認為FTL算法已經研究的相對很成熟了,所以,基于FTL的Flash盤應該說可以大規模應用了,其主要障礙就在于NAND Flash芯片成本了。
在企業級Flash存儲中,僅僅有FTL算法是遠遠不夠的。基于Flash如何做盤陣?基于Flash如果做文件系統?基于Flash如果做大規模存儲系統?這些存儲級別的問題還沒有得到完美的解決。個人認為,在Flash存儲這一塊,RAID技術、文件系統、互連技術、多處理器并行(集群)處理技術應該是研發攻關的重點。Flash存儲的未來不是夢,NAND Flash半導體的進步;基于Flash的存儲技術的進步;準確的市場切入能力將會推動整個Flash存儲產業不斷前進。
Redefine storage; change the world; make the world better!
總結
以上是生活随笔為你收集整理的Flash存储的故事的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 降龙十八掌之SpringBoot 使用S
- 下一篇: WPE 过滤器 高级滤镜