?

固態硬盤性能優化研究與實現

2015-04-14 12:28羅桂娥
計算機工程與應用 2015年1期
關鍵詞:存儲系統固態硬盤

羅桂娥,康 霞

中南大學 信息科學與工程學院,長沙 410083

1 引言

隨著計算機的普及及其處理問題復雜程度的增加,人們對計算機的存儲容量、存儲速度以及存儲數據的完整性和靈活性提出了更高的要求。目前市場上比較普遍的存儲設備為傳統的機械硬盤、U盤以及固態硬盤。傳統的機械硬盤由于自身固有的特性,還存在諸如存儲速度慢,不穩定,體積大和功耗大等缺點[1]。U盤雖然小巧輕便,但是其可擴展性差[2]。固態硬盤是采用閃存芯片構成的塊存儲設備,由于內部不需要機械硬盤那樣的機械結構等,在讀寫性能、能耗、尺寸、存儲容量等方面有著明顯的優勢[3]。

硬盤接口是計算機硬件架構的一個重要組成部分,與傳統基于并行接口的硬盤相比,SATA接口具有優異的電氣特性和傳輸速度[4]。其主要優點如下:(1)有效解決了串擾問題;(2)帶寬增加;(3)具有熱插拔的性能;(4)精確性高;(5)工作電壓降低;(6)向上與并行接口兼容。因而SATA接口成為目前硬盤接口的主流。

基于閃存的固態硬盤具有高性能、低功耗等諸多優點,因而迅速得到了學術界以及工業界的重視。國內外先后涌現了很多的固態硬盤生產廠商,國外廠商如希捷等,國內如源科等。目前市面上也能看到很多基于SATA2.0、SATA3.0的固態硬盤產品。但是目前國內對于固態硬盤技術的研究還不成熟,具有自主知識產權的比較少,同時,由于固態硬盤的主控芯片以及Flash存儲介質的選型不一樣,固態硬盤的性能也有所區別,因此開發出具有自主知識產權,性價比又比較高的固態硬盤產品具有重要意義。

基于以上背景,設計了一種基于SATA3.0接口的多通道并行架構的固態硬盤存儲系統,以FPGA芯片XC5VFX130T為核心,采用高速并行的硬件架構,結合先進的軟件調度算法,對固態硬盤存儲系統的實現及速度優化進行了研究。優化后的實驗結果表明,該系統具有存儲速度快,并行性和擴展性強等特點。

2 固態硬盤相關技術分析

2.1 SATA協議的體系結構

在此設計中,固態硬盤存儲系統采用的是基于SATA3.0協議的硬盤存儲接口。SATA3.0體系結構共分為4層:應用層、傳輸層、鏈路層和物理層[5]。其中應用層主要負責ATA(Advanced Technology Attachment)命令的解析和對控制命令寄存器的訪問;傳輸層主要負責組裝與解析幀;數據鏈路層通過維持數據的完整性來保證數據包通過鏈路可靠地傳輸;物理層包含串行器/解串行器,提供OOB(Out of Band)帶外號并處理加電順序和速度協商[6]。

2.2 NAND Flash存儲特性分析

NOR和NAND是現在市場上兩種主要的非易失性存儲技術[3]。其中NOR閃存主要用來存儲少量的代碼以及需要多次擦寫的場合,而NAND則是海量數據存儲密度的理想解決方案,設計中采用基于NAND的閃存技術[7]。NAND Flash存儲介質由多個存儲面(Plane)組成,其中每個存儲面又由多個存儲塊(Block)組成,而每個存儲塊又可以分成一定數量的存儲頁(Page)。每個存儲頁中包含了相應的數據、ECC信息[8]。存儲過程中對Flash共有讀、寫和擦除3種操作,其中“塊”是擦除操作的基本單位,“頁”是讀寫操作的基本單位。每個塊的擦除次數有限,當超過擦除次數后,存儲塊上的數據將變得不可靠。與傳統的磁盤存儲器不同之處是NAND Flash不支持定點更新,即一個存儲頁被寫入過數據后,它只有在進行了擦除操作后才能再次寫入新的數據,這個特點稱為寫前擦除[9]。NAND Flash的這種存儲特性使得其不能像磁盤存儲器一樣被傳統文件系統直接使用,需要設計專門的控制器。同時,為了能訪問閃存的數據,固態硬盤中存在一個閃存轉換層(Flash Translation Layer,FTL),用于實現上層文件系統邏輯地址到物理地址的轉換[10]以及對閃存進行相應的管理。

圖1 固態硬盤存儲系統架構圖

3 固態硬盤系統設計

3.1 系統硬件的基本構架

存儲系統的訪問速度是存儲系統的重要性能指標,提高SSD(Solid State Disk)的速度對于整個系統具有重要的意義。良好的硬件架構能為系統速度的高速要求奠定基礎,固態硬盤主要由固態硬盤控制器和存儲單元構成[11]。本文對基于SATA3.0接口的固態硬盤存儲系統進行了設計,并且以Flash[12]作為主要的存儲介質。根據SATA3.0協議標準,硬盤接口的速度能達到600 MB/s[6],但由于單片NAND Flash的訪問速度比較慢,兩者之間速度不匹配。所以,如何保證SATA與NAND之間的速度匹配是系統架構設計的核心所在,系統的總體構架如圖1所示。

從圖1分析可知,系統主要由SATA接口、FPGA和Flash芯片陣列構成。其中FPGA內部集成了ARM、SATA控制器、NAND控制器、DMA控制器、DBUF(Data Buffer)、SRAM以及通過系統總線進行內部模塊的連接[13],在APB總線上掛了一些常用的外部設備,如GPIO等。其中,SATA接口的作用是實現與主機互聯,有效地保證主機設備間的通信效率;ARM的作用是對整個系統進行管理,包括工作模式管理和文件系統管理;FPGA的作用是實現ARM、SATA和FLASH芯片陣列之間的邏輯接口轉換,并對FLASH陣列進行數據讀寫。

3.2 系統構架的核心技術分析

在固態硬盤存儲系統中,實現主機與存儲單元Flash之間的通信是系統最主要的任務。其通信過程主要分為兩個步驟:第一,主機設備間通過高速數據接口進行數據傳輸;第二,系統與NAND Flash芯片之間通過NAND Flash接口進行數據傳輸。硬件架構主要通過以下幾個方面的技術來高效的實現上述任務:

(1)多通道NAND Flash的并行流水機制接口與有效配置DBUF相結合的方法。其中,NAND控制器內置DMA和可配置的ECC。在系統架構中,共有8個NAND Flash控制器和外接的Flash芯片一起組成8路NAND Flash訪問通道,每個通道上的NAND Flash共享一條I/O總線,各個控制器能獨立工作。采用8通道并行操作方法,能將數據總線的帶寬擴展到單個通道帶寬的8倍,實現了數據宏觀上的并行操作。同時,為了滿足用戶對存儲容量的需求,對其擴展性進行了設計,每個通道上能掛多片Flash芯片,因而能設計出不同容量的固態硬盤。

(2)針對NAND Flash讀寫訪問操作不同的特點,設計中加入了DBUF作為緩存。設計中的DBUF有獨立的尋址空間,這樣SATA以及NAND控制器通過DMA進行數據傳輸時,能有效地進行動態地址映射,同時,也減輕了系統管理數據的復雜度。設計中的DBUF的個數為8個,能有效利用乒乓緩沖策略。以主機對設備發出寫請求為例,由于SATA接口的數據傳輸速度高于NAND Flash接口的數據存取速度,當NAND控制器對DBUF0進行訪問時,SATA能對DBUF1進行數據傳輸,這樣當NAND控制器將DBUF0的數據讀完之后,DBUF0空閑,SATA能重新對DBUF0進行訪問,提高了主機與系統之間數據傳輸的并行度。此外,在主機發送讀數據請求時,NAND控制器內部的DMA具有靈活性,為了減少控制器緩存到DBUF之間的數據傳輸時間,可以跳過DBUF而直接將數據傳送給SATA,同時,若NAND給出的數據量足夠大的情況下,而SATA來不及對所有的數據進行處理時,也能通過DBUF緩存來保證數據傳輸的連續性以及準確性,提高了系統硬件資源的利用率。

(3)在系統功能設計過程中,由于主機設備間接口標準速度為600 MB/s,所以對主控芯片的時鐘頻率要求比較高,因而系統內部MPU模塊采用ARM9,它能支持的頻率最大能達到400 MHz。實際設置MPU的時鐘頻率為300 MHz,系統內部總線時鐘為150 MHz,根據系統的硬件架構,8DBUF以及8NAND控制器的理論頻率能達到1 200 MHz,從而能滿足SATA3.0的接口速度需求。若從系統的成本出發,即使系統采用4通道架構,緩存以及NAND接口理論并行時鐘頻率為600 MHz,也能滿足系統內部速度的匹配。但是在實際FPGA的實現過程中,由于系統內部的時序約束等要求,實測頻率大約為理論頻率的80%左右。

根據上述分析,在4通道架構下,給出了在Xilinx ISE環境下的FPGA主要的邏輯資源以及存儲資源的分布如表1所示。從表1中可以看出FPGA內部的主要邏輯資源片內LUT的已用個數為68 123個(LUT為6輸入),LUT觸發對的已用數目為75 334個,主要實現信號同步和鎖存;主要的存儲資源寄存器的已用個數為41 472個以及FIFO的已用個數為117;BUFDS主要用來實現門控時鐘和劃分時鐘樹,其中高速收發口為SATA接口。

表1 FPGA內部主要資源使用分布圖

4 固態硬盤系統速度分析與優化

固態硬盤存儲系統是一個高度集成的嵌入式系統,不僅需要處理器和接口等基本硬件,而且還需要完備的系統控制軟件[14]。系統控制軟件主要負責以下幾個功能:系統初始化,處理來自SATA接口的命令,控制存儲系統內命令隊列機制,控制數據并行傳輸,維護閃存地址映射表等。圖1的硬件架構具備的高速并行存儲的能力奠定了良好的硬件基礎,下面將從系統控制軟件的角度上分析并優化系統的性能。

4.1 系統速度分析

系統速度的影響因子主要是存儲容量與系統時間,其中,系統時間包含軟硬件處理時間。因此,如何提高單位時間內數據的吞吐量,以及在主機一次命令傳輸數據大小不變的情況下減少系統時間,能有效地提高系統的讀寫效率。為了充分體現NAND Flash的并行流水機制,設計分析系統速度時,以NAND Flash采用4通道2CE(Chip Enable)構架為例來分析系統的軟硬件工作流程。在HOST一次DMA Read Command[15]命令處理64 KB數據時,從圖1的多通道并行架構角度出發,得到優化前后系統的軟硬件流程圖如圖2所示。

從圖2可以看出,系統的總體任務主要分為以下幾個部分:對主機發來的讀命令進行命名解析,函數初始化,觸發NAND通道,FTL建表,通過SATA接口往主機傳輸數據。同時,通過分析可以看出優化前后的流程的區別:(1)優化后流程比較簡單,減少了控制流程的復雜度;(2)優化后采用超級頁進行傳輸,因而在傳輸數據時間不變的情況下大大增加數據的吞吐量;(3)對系統的任務調度的優先級不一樣,優化后先進行通道觸發后建立FTL表,這樣NAND Flash能提前準備數據,隱藏了NAND Access的時間;(4)優化后充分利用了NAND之間的并發與流水機制。

圖2 SSD系統4通道2CE優化前后軟硬件流程圖

在圖2中,多處采用時間隱藏機制,充分利用系統的軟硬件資源,減少系統時間,提高了系統的性能。同時,根據傳輸的過程中出現的針對連續地址讀取數據時LBA(Logical Base Address)中存在地址偏移的情況,設計采取了數據補償策略。即CPU第一次觸發NAND 4個通道時的實際讀取數據少于32 KB,為了滿足主機DMA Read Command[16]需要的64 KB,此時CPU必須進行3次觸發操作,從而大大延長了系統時間。設計中采用數據補償法,在讀取少于8 KB數據的地址時,將少于8 KB數據的這頁先放在DBUF中進行等待,與讀取最后一頁的數據構成8 KB數據才開始往SATA傳輸。這樣只是主機的第一次命令數據傳輸時間較長,對文件數據大小大于64 KB的系統時間不會產生大的影響,避免了由于地址偏移造成NAND通道的浪費,提高了系統的速度,也有效地減少了系統的成本。同時,在實際操作過程中可對數據進行預取,即假設數據量大于64 KB,提前對NAND通道進觸發,而將T1與T3的時間隱藏在下次命令中,因而系統實際消耗的時間只有T2,實現了軟硬件的最佳平衡。

此外,將時間進行細化分析,還可以從以下幾個方面進行改進提高整體性能:(1)提高系統時鐘;(2)增加NAND通道數;(3)選擇支持同步模式的Flash芯片與NAND控制器,從而優化NAND IO時間;(4)優化ECC;(5)NAND采用多級流水,比如采用 Read Page Multi-plane命令等;(6)優化軟件時間,比如說優化FTL算法等,因為FTL算法的優劣直接決定了系統的開銷和性能,也決定了整個固態存儲系統的使用壽命[17]。

4.2 速度優化實驗結果對比與分析

根據以上分析以及改進方法,假設命令解析時間、函數初始化時間、通道觸發時間分別為Tcmd_dma_read、Tfunc_initial和Tch_trigger;Nce表示NAND CE數,Nch表示NAND通道數;Tsata2host表示數據從SATA接口傳輸到主機的時間;Tnand_acess為NAND傳輸數據的準備時間,Tecc為ECC校驗時間以及Tnand_dma為DMA傳輸時間,Tnand_xfer1,Tnand_xfer2為NAND工作在異步與ONFI(Open Nand Flash Interface)模式下NAND IO的傳輸時間;Tsys1,Tsys2與Ssys1,Ssys2表示不同模式下的SSD系統總的消耗時間以及主機發一次命令的系統讀速度。

根據圖1的系統硬件架構以及圖2的軟硬件工作流程,在主機一次DMA Read命令取64 KB數據,且NAND采用4通道2CE,Flash芯片采用MT29F32G08ABCAB,并設置Flash的每頁大小為8 KB,當NAND Flash分別工作在異步模式與ONFI模式時,即設NAND的IO時鐘分別為50 MHz與200 MHz。結合軟硬件測試,得到系統參數的大小如下:

在NAND工作在同樣模式的前提下,系統主要采取的優化方法為:數據補償策略,數據預取,利用超級頁進行傳輸。根據以上分析可以得到NAND不同工作模式下系統速度為式(2),以及優化前后的系統總體消耗時間為式(3)和式(4):

其中Gpage表示NAND每個page的大小,Nch取1,2,3,4以及Nce取1,2。在異步模式下T2取T21,Tsys取Tsys1;ONFI模式下T2取T22,Tsys的值為Tsys2。從式(3)和式(4)中可以看出優化前后的對系統速度的不同算法,主要是為了減少系統總時間,優化了參數T2和T3。同時,將式(1)代入式(2)、式(3)、式(4),得到式(5)、式(6)如下:

將參數Nch、Nce的值分別代入式(5)和式(6)可以得到SSD讀速度,根據算出來的值畫出SSD讀速度圖如圖3與圖4所示。

圖3 異步模式下優化前后的SSD讀速度

圖4 同步模式下優化前后的SSD讀速度

從圖3與圖4中可以看出:(1)在CE數為2時,優化前后的速度明顯,因為這時候對數據進行預取,將T3時間進行了隱藏,CE數為1時,數據量少,只是隱藏了通道觸發時間,因而優化效果不是很明顯。(2)在CE數不變的情況下,增加NAND通道數大大提高了系統的速度;同時通過圖3和圖4對比可以看出支持ONFI模式下的SSD速度基本是異步模式下的2倍。(3)在異步模式,傳輸數據量大小為64 KB,即NAND CE數為2,通道數為4時,通過計算優化后速度相對于優化前提高了15%,ONFI模式提高了38.8%。

5 系統功能與性能測試

5.1 功能測試

固態硬盤存儲系統的功能測試是測試固態硬盤能否被主機的主板正常識別。在各種操作系統下對硬盤進行測試,分別通過硬盤識別,對硬盤進行讀寫數據操作以及通過文件系統對文件進行建立、修改、保存和刪除操作來驗證固態硬盤的功能。在WINDOWS XP系統下對固態硬盤進行測試,測試結果的識盤圖如圖5所示,測試結果表明,固態硬盤工作正常。

5.2 性能測試

圖5 固態硬盤識盤圖

圖6 固態硬盤性能測試圖

固態硬盤性能測試包括對固態硬盤的讀取速度和寫入速度測試,振動環境下以及高低溫環境下對讀寫數據的影響。以系統在NAND取4個通道,工作在異步模式為例,在測試軟件ATTO下得到測試,得到優化后固態硬盤的讀寫性能圖如圖6所示。通過圖6可以看出在文件大小為64 KB的條件下,測試讀取速度為143 MB/s,由圖3可以知道此時理論速度約為152 MB/s,因為系統實際測試時,還要考慮操作系統時間,因而實測結果在可估測的范圍內。從而驗證了優化方法的有效性以及系統架構設計的可行性,也為下一步研究奠定了基礎。在增加系統成本的前提下,根據設計的架構擴展到8通道,根據以上分析,8通道時,估算系統的平均讀速度能達到574 MB/s,讀的效率比較高。

6 結語

隨著NAND Flash固態存儲器技術的日益成熟,其存儲密度越來越大,而相應的體積、功耗和成本卻越來越小,因而NAND Flash固態存儲會得到越來越廣泛的應用。以并行流水機制為核心,設計了一種基于SATA3.0接口的固態硬盤存儲系統,并從硬件架構以及軟件調度上對系統的性能進行了分析、優化,最后驗證了設計的可行性以及可擴展性。此外,本文設計也為后續對固態硬盤的研究奠定了基礎。比如說在系統硬件架構基本不變的情況下,系統版本從FPGA版本擴展到ASIC版本以及在FPGA上實現NAND8個通道并行工作等。

[1]許長庚.高速海量固態硬盤的實現[D].哈爾濱:哈爾濱工程大學,2010.

[2]孫浩然.高速海量固態硬盤的設計[D].哈爾濱:哈爾濱工程大學,2009.

[3]李博.固態硬盤寫效率及能耗優化研究[D].武漢:華中科技大學,2010.

[4]唐純杰.SATA協議分析及FPGA實現[D].長沙:湖南大學,2009.

[5]Serial ATA International Organization.Serial ATA revision 2.6[S].2007.

[6]Serial ATA International Organization.Serial ATA revision 3.0[S].2009.

[7]Ken Takeuchi.Novel co-design of NAND flash memory and NAND flash controller circuits for sub-30nm low-power high-speed solid-state drives(SSD)[J].IEEE Journal of Solid-State Circuits,2009,44(4):1227-1234.

[8]Dirik C,Jacob B.The performance of PC solid-state disks(SSDs)as a function of bandwidth,concurrency,device architecture,and system organization[C]//Proceedings of the 36th Annual International Symposium on Computer Architecture(ISCA’09).New York,USA:ACM,2009,37(3):279-289.

[9]Kang J U,Jo H,Kim J S,et,A superblock-based flash translation layer for NAND flash memory[C]//Proc of the 6th ACM Conference Embedded Systems Software,Seoul,Korea,2006:161-170.

[10]Xu Zhiyong,Li Ruixuan,Xu Chengzhong.CAST:A pagelevel FTL with compact address mapping and parallel data blocks[C]//Proceedings of IEEE 31st International Conference on Performance Computing and Communication Austin,TX,2012:142-151.

[11]張磊,李清江.基于SATA接口的固態硬盤設計[J].微處理機,2011,8(4):77-82.

[12]Lee S W,Park D J,Chung T S,et al.A log buffer-based flash translation layerusing fully associative sector translation[J].ACM Transactions on Embedded Computing Systems,2007,6(3):100-127.

[13]Arm Company.AMBA specification[S].1999.

[14]涂剛.軟實時系統任務調度算法研究[D].武漢:華中科技大學,2004.

[15]Synopsys Company.Synopsys design ware SATA device program guide,revision 1.33a[R].2010.

[16]Wu Wei,Su Haibing,Wu Qinzhang.Implementing a serial ATA controller base on FPGA[C]//Proceedings of International Symposium on Computation Intelligence and Design,2009:467-470.

[17]Park S H,Ha S H,Bang K.Design and analysis of flash translation layers for multi-channel NAND flash-based storage devices[J].IEEE Transactions on Consumer Electronics,2009,55(3):1392-1400.

猜你喜歡
存儲系統固態硬盤
固態Marx發生器均流技術研究
Sn摻雜石榴石型Li7La3Zr2O12固態電解質的制備
透明陶瓷在固態照明中的應用進展
分布式存儲系統在企業檔案管理中的應用
HiFi級4K硬盤播放機 億格瑞A15
Egreat(億格瑞)A10二代 4K硬盤播放機
天河超算存儲系統在美創佳績
我區電視臺對硬盤播出系統的應用
華為震撼發布新一代OceanStor 18000 V3系列高端存儲系統
寬禁帶固態功放在導航衛星中的應用
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合