文獻標識碼: A
文章編號: 0258-7998(2010)07-0044-04
隨著網(wǎng)絡發(fā)展和計算機的普及應用,,人們對存儲系統(tǒng)的性能要求越來越高,尤其是關鍵事務的應用,。廉價冗余磁盤陣列(RAID)[1,,2,3]采用分條和冗余的方法提高了存儲系統(tǒng)的容量,、速度和可靠性,,已成為高性能數(shù)據(jù)存儲的首選結(jié)構(gòu)。磁盤陣列控制器是磁盤陣列的核心,,多數(shù)緩存預取策略,、緩存置換策略、磁盤聚合寫策略,、數(shù)據(jù)冗余計算,、數(shù)據(jù)備份與重建均由磁盤陣列控制器完成。磁盤接口控制器主要負責磁盤組的管理及讀寫磁盤操作的具體實現(xiàn),。
流水線技術[4,,5,6]是計算機技術中同時具備空間并行性和時間并行性的技術,,它把一個順序處理的過程分解成若干個子處理過程,,每個子處理過程能在專用的獨立模塊上有效地并行工作。本文通過對磁盤接口控制器的流水線設計,提高了磁盤接口的吞吐率,。較高的磁盤接口控制器吞吐率可以降低平均訪問時間,,使復雜有效的預取和置換算法方便地應用于磁盤陣列,提高緩存的命中率,,從而提高磁盤陣列的整體性能,。
1 現(xiàn)有磁盤接口控制器設計
磁盤接口設計方式主要有2種:(1)使用通用處理器充當磁盤接口控制器,通過在處理器上運行相應的軟件完成來自控制器上其他處理器的磁盤操作請求,。這種方式最大的優(yōu)點就是實現(xiàn)簡單,,但缺點也很明顯。每一個新的磁盤操作請求必須在前一磁盤操作請求完成之后才能啟動,,并且需要占用大量處理器時間的異或操作也由該處理器承擔,,這使得每一次磁盤操作的時間太長,進而使得磁盤接口控制器的平均磁盤訪問時間過長,,吞吐率較低,,尤其是降級模式讀操作和磁盤寫操作。(2)把需要長時間占用通用處理器的異或操作獨立出來,,由異或?qū)S肁SIC完成此功能,,其他操作仍由通用處理器運行相應的軟件完成。現(xiàn)在的中低端磁盤陣列常采用這種方式,。使用專用的ASIC分擔所有的異或操作,雖然可以部分減少需要異或操作的磁盤訪問時間,,如降級模式讀操作和磁盤寫操作,,但新的磁盤操作也必須在前一磁盤操作完成之后才會啟動,磁盤操作過程也是按順序執(zhí)行的,,整體的吞吐率仍不是很高,。所以這種方式不適合于高端磁盤陣列的需要。
2 并行流水線設計模型
與其他磁盤接口不同,,磁盤陣列中的磁盤接口除了簡單地完成磁盤的讀寫外,,還需要完成數(shù)據(jù)塊的邏輯地址到實際磁盤物理地址的映射和保證數(shù)據(jù)塊在磁盤陣列中可靠地存儲。根據(jù)所有磁盤操作請求完成的特點,,磁盤接口操作被劃分為4個子任務,,每一個子任務由一個獨立的模塊來實現(xiàn)。在具體實現(xiàn)時,,這些模塊可以在同一芯片內(nèi),,也可以在不同芯片中。這4個模塊分別是:共享緩存操作模塊,、異或計算操作模塊,、地址映射模塊和磁盤操作模塊。共享緩存操作模塊根據(jù)給定的共享緩存數(shù)據(jù)塊地址讀寫數(shù)據(jù)塊;異或計算操作模塊是在降級模式讀磁盤操作和正常模式下磁盤寫操作時,,完成異或計算,;地址映射模塊主要實現(xiàn)磁盤數(shù)據(jù)塊的放置策略[7],將主機訪問磁盤陣列的地址,,如邏輯塊地址LBA,、邏輯單元號LUN,轉(zhuǎn)換為實際的磁盤號,、柱面號,、磁道號、扇區(qū)號等,;磁盤操作模塊主要是根據(jù)地址映射模塊操作后的結(jié)果完成磁盤的讀寫,,包括相應的協(xié)議轉(zhuǎn)換。圖1是同一芯片實現(xiàn)各模塊的磁盤接口控制器的結(jié)構(gòu)框圖,。
實際上每個磁盤操作執(zhí)行的這四個模塊的次序和次數(shù)是不定的,。讀磁盤操作的數(shù)據(jù)流方向與寫磁盤操作的數(shù)據(jù)流方向是相反的,執(zhí)行這四個模塊的順序也是相反的,。讀寫磁盤操作的各模塊執(zhí)行順序如圖2所示,。一個磁盤操作請求只要在其執(zhí)行的第一個模塊空閑時便可啟動,多個磁盤操作請求可以重疊的方式被磁盤接口控制器處理,。理想情況下,,磁盤接口控制器可以同時處理4個磁盤操作請求。
3 關鍵問題分析
磁盤接口的并行流水線設計模型在具體實現(xiàn)時有2個問題需要解決:(1)如何控制磁盤操作請求在模塊間執(zhí)行順序和執(zhí)行次數(shù),。因為在具體執(zhí)行時有3種情況:4個模塊每個模塊執(zhí)行1次,、執(zhí)行部分模塊多次和只執(zhí)行3個模塊。(2)需要操作的數(shù)據(jù)塊如何在模塊間進行傳遞,。
3.1 任務通信
要控制一個磁盤操作請求如何在模塊間進行處理,,一種有效的方式就是讓每個模塊都知道這個磁盤操作請求的具體需求。為此,,一個用來描述磁盤操作請求的特殊的數(shù)據(jù)結(jié)構(gòu)被引入,,其結(jié)構(gòu)如圖3。每一個磁盤操作請求都有一個磁盤操作數(shù)據(jù)塊結(jié)構(gòu),,磁盤接口控制器預處理部件每收到一個來自控制器上的其他處理器的磁盤操作請求便產(chǎn)生相應的操作數(shù)據(jù)塊結(jié)構(gòu),,并根據(jù)其操作類型放入相應的模塊任務池中。
每一個模塊都有一個任務池來存放操作數(shù)據(jù)塊結(jié)構(gòu),。模塊總是從自己的任務池中取操作數(shù)據(jù)塊結(jié)構(gòu),,然后根據(jù)數(shù)據(jù)塊結(jié)構(gòu)中的說明進行相應的處理,處理完成后再根據(jù)數(shù)據(jù)塊結(jié)構(gòu)中的說明正確地放入到下一個模塊的任務池中,。如某個模塊處理后磁盤操作請求已完成,,則該模塊不再向其他模塊傳遞該數(shù)據(jù)塊結(jié)構(gòu),,直接將其刪除。這種方式簡單有效,,易于編碼實現(xiàn),。
3.2 緩沖管理
在RAID5中,計算奇偶校驗塊需要同分條中的4個數(shù)據(jù)塊,,因此異或計算模塊需要一個較大的緩沖來存放數(shù)據(jù)塊,。其他模塊也至少需要一個數(shù)據(jù)塊大小的緩沖存放當前操作的數(shù)據(jù)塊。一個雙隊列的生產(chǎn)者-消費者模型(如圖4)被用來實現(xiàn)高效緩沖管理,。
這2個隊列的長度不是固定的,,是根據(jù)每個操作方向上的請求數(shù)量動態(tài)調(diào)整。在圖4中,,若讀磁盤操作請求較多則增加緩沖隊列1的長度,;若寫磁盤操作請求較多則增加緩沖隊列2的長度。2個隊列的總大小總是小于或等于整個緩沖的大小,。每一個隊列都是循環(huán)隊列,,生產(chǎn)者總是把新的數(shù)據(jù)塊放到隊列的尾部;只要該隊列不為空,,消費者總是從隊列的頭部取走數(shù)據(jù)塊,。
4 磁盤接口控制器系統(tǒng)設計與實現(xiàn)
4.1 應用環(huán)境
本控制器應用在RAID控制器的系統(tǒng)總線與連接硬盤的SAS總線之間,主要根據(jù)RAID控制器中的主處理器命令進行可靠快速的磁盤數(shù)據(jù)塊的讀寫,。
圖5描述了本控制器典型應用環(huán)境,。深色部分為本控制器,淺色部分是外部環(huán)境,。
從應用環(huán)境中可以看出,,磁盤接口控制器是連接RAID控制器與硬盤組的橋梁。磁盤接口控制器通過SAS總線連接多個硬盤,,通過系統(tǒng)總線(如PCI總線)連接到RAID控制器整個系統(tǒng)中。
4.2 總體結(jié)構(gòu)與各功能模塊
磁盤接口控制器包括5個大的功能模塊:磁盤命令預處理模塊,、共享緩存操作模塊,、地址映射模塊、異或計算模塊,、磁盤操作模塊,。由于采用的是FPGA測試和驗證,對成熟的模塊,,如PCI模塊,、SATA模塊、DMA模塊直接使用FPGA中的資源,。四級流水的磁盤接口控制器總體結(jié)構(gòu)如圖6,。
4.2.1 命令預處理模塊
命令預處理模塊主要根據(jù)RAID控制器中主處理器的命令決定該命令的操作流程,,不同的讀寫方式在不同的工作模式下其數(shù)據(jù)流程不一樣。命令預處理模塊主要包括命令緩沖區(qū)和PLC微處理器,。命令緩沖區(qū)主要接收RAID控制器中主處理器發(fā)過來的命令,,命令包括:2種工作模式命令(正常模式和降級模式)、2種分條讀寫方式(完整分條和部分分條),、磁盤寫命令(首個邏輯塊地址LBA,,邏輯塊數(shù))、磁盤讀命令(首個邏輯塊地址LBA,,邏輯塊數(shù)),。PLC微處理器是一個8 bit RISC微處理器,也是整個控制器的核心,,負責解析磁盤操作命令和控制命令的整個執(zhí)行過程,,包括其他4個功能模塊的任務分派和協(xié)調(diào)。
4.2.2 共享緩存操作模塊
RAID控制器包含有大容量的SDRAM作為磁盤陣列的緩存,,所有異或操作的數(shù)據(jù)塊都存放在緩存中,。共享緩存操作模塊主要完成緩存數(shù)據(jù)塊的讀寫,包括PCI總線和讀寫控制邏輯,。PCI總線使用FPGA芯片自身所帶的邏輯,,讀寫控制邏輯主要根據(jù)命令預處理模塊發(fā)過來的命令產(chǎn)生相應的讀寫時序并解決總線沖突。
4.2.3 地址映射模塊
由于RAID控制器中主處理器操作的都是邏輯地址,,地址映射模塊完成的是邏輯地址到物理盤號,、柱面號、扇區(qū)號的映射,。地址映射模塊包括邏輯地址寄存器和物理地址寄存器,,并包括一個地址變換機構(gòu)。地址變換機構(gòu)是一個快速哈希變換機構(gòu),,輸入的邏輯地址通過快速哈希變換和相應的查表獲得實際的物理地址,。
4.2.4 異或操作模塊
異或操作模塊是RAID保證數(shù)據(jù)可靠性的基礎,主要完成異或計算,。這個模塊比較簡單,,包括2個數(shù)據(jù)輸入寄存器和一個輸出寄存器,所有寄存器的位數(shù)是256 bit,,一次異或操作可完成2個16 B數(shù)據(jù)的操作,。一個分條的異或操作通過多次執(zhí)行異或計算邏輯來實現(xiàn)。
4.2.5 磁盤操作模塊
磁盤操作模塊主要完成實際磁盤的數(shù)據(jù)讀寫,,該模塊通過SATA總線連接多個磁盤,。該模塊主要包括SATA主控制器和磁盤操作單元,SATA主控制器使用FPGA芯片本身自帶的邏輯,,磁盤操作單元是要實現(xiàn)的邏輯,,主要接收和執(zhí)行PLC微處理器發(fā)過來的讀寫命令,,將數(shù)據(jù)從磁盤讀到共享緩沖區(qū)或把共享緩沖區(qū)的數(shù)據(jù)寫到對應的磁盤上。
4.3 RTL設計與實現(xiàn)
根據(jù)前述的系統(tǒng)結(jié)構(gòu)和各功能模塊,,對本控制器進行了RTL設計和實現(xiàn)[8-10],。這里以復位控制、輸入控制為例說明其實現(xiàn)過程,。
復位控制是IC設計中一個基本而重要的問題,。綜合同步復位和異步復位的優(yōu)缺點,對復位控制電路的設計采用“異步復位,,同步撤離”的策略,,使用2個觸發(fā)器級聯(lián),消除亞穩(wěn)態(tài)的影響,。同時,,為了濾除異步復位中毛刺的影響,在復位端口用一個二輸入與非門和一個緩沖器設計了一級濾除毛刺的電路,,這樣就可以得到一個干凈的復位信號,。
在本控制器的5個子模塊中都存在數(shù)據(jù)的輸入和輸出。不同的模塊只需要配置不同大小的FIFO,。輸入控制的設計主要以一個異步FIFO作為彈性緩沖器,,該FIFO的大小是可配置的。另外還有一部分邏輯用來生成輸出數(shù)據(jù)有效指示信號,,這個指示信號采集到的FIFO讀信號有效時即為有效,。
5 FPGA測試與實驗結(jié)果
經(jīng)過RTL設計、仿真及相應的EDA驗證,,實現(xiàn)了流水線的磁盤接口控制器并對該控制器進行了FPGA測試,。測試過程中,使用的測試平臺板為Xilinx ML505測試平臺,,主芯片為Virtex-5 FPGA,,在不加SATA多路器的情況下可同時連接4個SATA硬盤。
為了進行性能分析和比較,,除了流水線的磁盤接口控制器外,,同樣基于Virtex-5 FPGA并使用MIPS CPU核的磁盤接口控制器也被實現(xiàn)?;贛IPS CPU核的磁盤接口控制器在Virtex-5 FPGA上可以很方便地實現(xiàn),,因為Virtex-5 FPGA本身自帶MIPS CPU核和SATA控制器,。只需要實現(xiàn)專用異或邏輯及在MIPS CPU核實現(xiàn)地址映射和讀寫控制即可,。
測試過程中使用的磁盤為高速SATA磁盤,對應的磁盤參數(shù)見表1,。這里只對磁盤接口控制器進行測試,,對磁盤陣列控制器中主處理器產(chǎn)生的磁盤操作命令通過模擬產(chǎn)生,。命令到達的方式服從泊松分布,工作為正常工作模式,讀寫方式為隨機產(chǎn)生,。在讀磁盤請求數(shù)與寫磁盤請求數(shù)相等的情況下,,其實驗結(jié)果如圖7所示。由圖可知,,在任何磁盤請求到達率情況下,,基于流水線的磁盤接口控制器的吞吐率都比基于MIPS的吞吐率高。在其他讀寫請求比率的條件下,,也可以得到類似的結(jié)果,。
磁盤陣列控制器是磁盤陣列的核心,直接決定了整個磁盤陣列的性能,。本文通過研究現(xiàn)有磁盤接口設計和磁盤接口完成的功能,,提出了一種磁盤接口的并行流水線設計模型,并對該模型實現(xiàn)過程中的模塊間的通信問題和模塊間的緩沖管理問題進行了相應的分析和設計,。實驗結(jié)果表明,,在各種情況下,磁盤接口的吞吐率都有提高,,在高寫請求率和重負載兩種情況下尤為顯著,。較高的磁盤接口控制器的吞吐率可以降低平均訪問時間,使復雜有效的預取和置換算法方便地應用于磁盤陣列,,提高緩存的命中率,,從而提高磁盤陣列的整體性能。
參考文獻
[1] SCHWABE E.J.,,SUTHERLAND I.M.,,Improved paritydeclustered data layouts for disk arrays.J. Comput. Syst. Sci.1996,53(3):328-343.
[2] STOCKMEYER L..Parallelism in parity-declustered layouts for disk arrays.Technical Report RJ9915,,IBM Almaden Research Center,,1994.
[3] ZHOU K,ZHANG J L,,F(xiàn)ENG D,,et al.Cache prefetching adaptive policy based on access pattern.Proceedings of 2002 International Conference on Machine Learning and Cybernetics,2002(1):496-500.
[4] WEI-KENG L,,ALOCK C,,DONALD W,et al.Performance evaluation of a parallel pipeline computational model for space-time adaptive processing. The Journal of Supercomputing,,2005(31):137-160.
[5] WEI-KENG L,,ALOCK C,DONALD W,,et al.I/O implementation and evaluation of parallel pipelined STAP on high performance computers. Lecture Notes in Computer Science,,2004,,17(45):354-358.
[6] 姚念民,鄭名揚,,鞠九濱.基于流水線的高性能Web服務器[J],,軟件學報,2003,,14(6):1127-1130.
[7] SCHWABE E J,,SUTHERLAND I M,Efficient data mappings for parity-declustered data layouts. Theoretical Computer Science,,2004,,325(3):391-407.
[8] 武杰,喬崇,,張俊杰,,等.MIPS系統(tǒng)中北橋的FPGA設計[J].小型微型計算機系統(tǒng),2004,,25(11):2028-203.
[9] 苗勝.硬盤數(shù)據(jù)加密系統(tǒng)的設計及其FPGA實現(xiàn)[J].計算機應用研究,,2004(10):221-223.
[10] 葉頂勝.基于FPGA的Serial ATA1.0a設備IP CORE設計[D].南充:西南石油大學,2006.