《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > RAID控制器中磁盤接口控制器流水線設計與實現
RAID控制器中磁盤接口控制器流水線設計與實現
王玉林1,游 紅2,李廣軍3
1.電子科技大學 計算機科學與工程學院, 四川 成都611731;2.78179部隊,四川 成都611731;3.電子科技大學 通信與信息工程學院,四川 成都611731
摘要: 在研究磁盤接口功能和現有磁盤接口設計的基礎上,提出了一種帶四級流水的磁盤接口設計模型,并對該模型實現過程中的模塊間通信問題和模塊間緩沖管理問題進行了相應的分析和設計。通過FPGA仿真與實驗結果表明,在各種情況下,磁盤接口的吞吐率都有提高,在高寫請求率和重負載兩種情況下尤為顯著。
中圖分類號: TN929.11
文獻標識碼: A
文章編號: 0258-7998(2010)07-0044-04
Design and realization of disk interface processors with parallel pipelines in RAID controllers
WANG Yu Lin1,YOU Hong2,LI Guang Jun3
1.School of Computer Science and Engineering, University of Electronic Science and Technology of China, Chengdu 611731,China;2.The Chinese People's Liberation Army 78179, Chengdu 611731,China;3.School of Communication and Information Engineering University of Electronic Science and Technology of China,Chengdu 611731,China
Abstract: Based on the research on current designs and disk interface controller’s function, a parallel pipeline model is presented in the disk interface controller design in the paper. Two main problems are the communication and the buffer management between the modules in the implementation of the model. This paper discusses and designs the two problems in detail. The model is implemented in FPGA and the experiment results show that the throughput of the presented disk interface controller can be improved in all cases, especially in heavy workloads and in the high writing request ratio case.
Key words : disk array;pipeline design;disk interface processor;throughput

    隨著網絡發展和計算機的普及應用,人們對存儲系統的性能要求越來越高,尤其是關鍵事務的應用。廉價冗余磁盤陣列(RAID)[1,2,3]采用分條和冗余的方法提高了存儲系統的容量、速度和可靠性,已成為高性能數據存儲的首選結構。磁盤陣列控制器是磁盤陣列的核心,多數緩存預取策略、緩存置換策略、磁盤聚合寫策略、數據冗余計算、數據備份與重建均由磁盤陣列控制器完成。磁盤接口控制器主要負責磁盤組的管理及讀寫磁盤操作的具體實現。
    流水線技術[4,5,6]是計算機技術中同時具備空間并行性和時間并行性的技術,它把一個順序處理的過程分解成若干個子處理過程,每個子處理過程能在專用的獨立模塊上有效地并行工作。本文通過對磁盤接口控制器的流水線設計,提高了磁盤接口的吞吐率。較高的磁盤接口控制器吞吐率可以降低平均訪問時間,使復雜有效的預取和置換算法方便地應用于磁盤陣列,提高緩存的命中率,從而提高磁盤陣列的整體性能。
1 現有磁盤接口控制器設計
    磁盤接口設計方式主要有2種:(1)使用通用處理器充當磁盤接口控制器,通過在處理器上運行相應的軟件完成來自控制器上其他處理器的磁盤操作請求。這種方式最大的優點就是實現簡單,但缺點也很明顯。每一個新的磁盤操作請求必須在前一磁盤操作請求完成之后才能啟動,并且需要占用大量處理器時間的異或操作也由該處理器承擔,這使得每一次磁盤操作的時間太長,進而使得磁盤接口控制器的平均磁盤訪問時間過長,吞吐率較低,尤其是降級模式讀操作和磁盤寫操作。(2)把需要長時間占用通用處理器的異或操作獨立出來,由異或專用ASIC完成此功能,其他操作仍由通用處理器運行相應的軟件完成。現在的中低端磁盤陣列常采用這種方式。使用專用的ASIC分擔所有的異或操作,雖然可以部分減少需要異或操作的磁盤訪問時間,如降級模式讀操作和磁盤寫操作,但新的磁盤操作也必須在前一磁盤操作完成之后才會啟動,磁盤操作過程也是按順序執行的,整體的吞吐率仍不是很高。所以這種方式不適合于高端磁盤陣列的需要。
2 并行流水線設計模型
    與其他磁盤接口不同,磁盤陣列中的磁盤接口除了簡單地完成磁盤的讀寫外,還需要完成數據塊的邏輯地址到實際磁盤物理地址的映射和保證數據塊在磁盤陣列中可靠地存儲。根據所有磁盤操作請求完成的特點,磁盤接口操作被劃分為4個子任務,每一個子任務由一個獨立的模塊來實現。在具體實現時,這些模塊可以在同一芯片內,也可以在不同芯片中。這4個模塊分別是:共享緩存操作模塊、異或計算操作模塊、地址映射模塊和磁盤操作模塊。共享緩存操作模塊根據給定的共享緩存數據塊地址讀寫數據塊;異或計算操作模塊是在降級模式讀磁盤操作和正常模式下磁盤寫操作時,完成異或計算;地址映射模塊主要實現磁盤數據塊的放置策略[7],將主機訪問磁盤陣列的地址,如邏輯塊地址LBA、邏輯單元號LUN,轉換為實際的磁盤號、柱面號、磁道號、扇區號等;磁盤操作模塊主要是根據地址映射模塊操作后的結果完成磁盤的讀寫,包括相應的協議轉換。圖1是同一芯片實現各模塊的磁盤接口控制器的結構框圖。

    實際上每個磁盤操作執行的這四個模塊的次序和次數是不定的。讀磁盤操作的數據流方向與寫磁盤操作的數據流方向是相反的,執行這四個模塊的順序也是相反的。讀寫磁盤操作的各模塊執行順序如圖2所示。一個磁盤操作請求只要在其執行的第一個模塊空閑時便可啟動,多個磁盤操作請求可以重疊的方式被磁盤接口控制器處理。理想情況下,磁盤接口控制器可以同時處理4個磁盤操作請求。

3 關鍵問題分析
    磁盤接口的并行流水線設計模型在具體實現時有2個問題需要解決:(1)如何控制磁盤操作請求在模塊間執行順序和執行次數。因為在具體執行時有3種情況:4個模塊每個模塊執行1次、執行部分模塊多次和只執行3個模塊。(2)需要操作的數據塊如何在模塊間進行傳遞。
3.1 任務通信
    要控制一個磁盤操作請求如何在模塊間進行處理,一種有效的方式就是讓每個模塊都知道這個磁盤操作請求的具體需求。為此,一個用來描述磁盤操作請求的特殊的數據結構被引入,其結構如圖3。每一個磁盤操作請求都有一個磁盤操作數據塊結構,磁盤接口控制器預處理部件每收到一個來自控制器上的其他處理器的磁盤操作請求便產生相應的操作數據塊結構,并根據其操作類型放入相應的模塊任務池中。


    每一個模塊都有一個任務池來存放操作數據塊結構。模塊總是從自己的任務池中取操作數據塊結構,然后根據數據塊結構中的說明進行相應的處理,處理完成后再根據數據塊結構中的說明正確地放入到下一個模塊的任務池中。如某個模塊處理后磁盤操作請求已完成,則該模塊不再向其他模塊傳遞該數據塊結構,直接將其刪除。這種方式簡單有效,易于編碼實現。
3.2 緩沖管理
    在RAID5中,計算奇偶校驗塊需要同分條中的4個數據塊,因此異或計算模塊需要一個較大的緩沖來存放數據塊。其他模塊也至少需要一個數據塊大小的緩沖存放當前操作的數據塊。一個雙隊列的生產者-消費者模型(如圖4)被用來實現高效緩沖管理。

    這2個隊列的長度不是固定的,是根據每個操作方向上的請求數量動態調整。在圖4中,若讀磁盤操作請求較多則增加緩沖隊列1的長度;若寫磁盤操作請求較多則增加緩沖隊列2的長度。2個隊列的總大小總是小于或等于整個緩沖的大小。每一個隊列都是循環隊列,生產者總是把新的數據塊放到隊列的尾部;只要該隊列不為空,消費者總是從隊列的頭部取走數據塊。
4 磁盤接口控制器系統設計與實現
4.1 應用環境

    本控制器應用在RAID控制器的系統總線與連接硬盤的SAS總線之間,主要根據RAID控制器中的主處理器命令進行可靠快速的磁盤數據塊的讀寫。
    圖5描述了本控制器典型應用環境。深色部分為本控制器,淺色部分是外部環境。

    從應用環境中可以看出,磁盤接口控制器是連接RAID控制器與硬盤組的橋梁。磁盤接口控制器通過SAS總線連接多個硬盤,通過系統總線(如PCI總線)連接到RAID控制器整個系統中。
4.2 總體結構與各功能模塊
    磁盤接口控制器包括5個大的功能模塊:磁盤命令預處理模塊、共享緩存操作模塊、地址映射模塊、異或計算模塊、磁盤操作模塊。由于采用的是FPGA測試和驗證,對成熟的模塊,如PCI模塊、SATA模塊、DMA模塊直接使用FPGA中的資源。四級流水的磁盤接口控制器總體結構如圖6。

4.2.1 命令預處理模塊
    命令預處理模塊主要根據RAID控制器中主處理器的命令決定該命令的操作流程,不同的讀寫方式在不同的工作模式下其數據流程不一樣。命令預處理模塊主要包括命令緩沖區和PLC微處理器。命令緩沖區主要接收RAID控制器中主處理器發過來的命令,命令包括:2種工作模式命令(正常模式和降級模式)、2種分條讀寫方式(完整分條和部分分條)、磁盤寫命令(首個邏輯塊地址LBA,邏輯塊數)、磁盤讀命令(首個邏輯塊地址LBA,邏輯塊數)。PLC微處理器是一個8 bit RISC微處理器,也是整個控制器的核心,負責解析磁盤操作命令和控制命令的整個執行過程,包括其他4個功能模塊的任務分派和協調。
4.2.2 共享緩存操作模塊
    RAID控制器包含有大容量的SDRAM作為磁盤陣列的緩存,所有異或操作的數據塊都存放在緩存中。共享緩存操作模塊主要完成緩存數據塊的讀寫,包括PCI總線和讀寫控制邏輯。PCI總線使用FPGA芯片自身所帶的邏輯,讀寫控制邏輯主要根據命令預處理模塊發過來的命令產生相應的讀寫時序并解決總線沖突。
4.2.3 地址映射模塊
    由于RAID控制器中主處理器操作的都是邏輯地址,地址映射模塊完成的是邏輯地址到物理盤號、柱面號、扇區號的映射。地址映射模塊包括邏輯地址寄存器和物理地址寄存器,并包括一個地址變換機構。地址變換機構是一個快速哈希變換機構,輸入的邏輯地址通過快速哈希變換和相應的查表獲得實際的物理地址。
4.2.4 異或操作模塊
    異或操作模塊是RAID保證數據可靠性的基礎,主要完成異或計算。這個模塊比較簡單,包括2個數據輸入寄存器和一個輸出寄存器,所有寄存器的位數是256 bit,一次異或操作可完成2個16 B數據的操作。一個分條的異或操作通過多次執行異或計算邏輯來實現。
4.2.5 磁盤操作模塊
    磁盤操作模塊主要完成實際磁盤的數據讀寫,該模塊通過SATA總線連接多個磁盤。該模塊主要包括SATA主控制器和磁盤操作單元,SATA主控制器使用FPGA芯片本身自帶的邏輯,磁盤操作單元是要實現的邏輯,主要接收和執行PLC微處理器發過來的讀寫命令,將數據從磁盤讀到共享緩沖區或把共享緩沖區的數據寫到對應的磁盤上。
4.3 RTL設計與實現
    根據前述的系統結構和各功能模塊,對本控制器進行了RTL設計和實現[8-10]。這里以復位控制、輸入控制為例說明其實現過程。
    復位控制是IC設計中一個基本而重要的問題。綜合同步復位和異步復位的優缺點,對復位控制電路的設計采用“異步復位,同步撤離”的策略,使用2個觸發器級聯,消除亞穩態的影響。同時,為了濾除異步復位中毛刺的影響,在復位端口用一個二輸入與非門和一個緩沖器設計了一級濾除毛刺的電路,這樣就可以得到一個干凈的復位信號。
    在本控制器的5個子模塊中都存在數據的輸入和輸出。不同的模塊只需要配置不同大小的FIFO。輸入控制的設計主要以一個異步FIFO作為彈性緩沖器,該FIFO的大小是可配置的。另外還有一部分邏輯用來生成輸出數據有效指示信號,這個指示信號采集到的FIFO讀信號有效時即為有效。
5 FPGA測試與實驗結果
    經過RTL設計、仿真及相應的EDA驗證,實現了流水線的磁盤接口控制器并對該控制器進行了FPGA測試。測試過程中,使用的測試平臺板為Xilinx ML505測試平臺,主芯片為Virtex-5 FPGA,在不加SATA多路器的情況下可同時連接4個SATA硬盤。
    為了進行性能分析和比較,除了流水線的磁盤接口控制器外,同樣基于Virtex-5 FPGA并使用MIPS CPU核的磁盤接口控制器也被實現。基于MIPS CPU核的磁盤接口控制器在Virtex-5 FPGA上可以很方便地實現,因為Virtex-5 FPGA本身自帶MIPS CPU核和SATA控制器。只需要實現專用異或邏輯及在MIPS CPU核實現地址映射和讀寫控制即可。
    測試過程中使用的磁盤為高速SATA磁盤,對應的磁盤參數見表1。這里只對磁盤接口控制器進行測試,對磁盤陣列控制器中主處理器產生的磁盤操作命令通過模擬產生。命令到達的方式服從泊松分布,工作為正常工作模式,讀寫方式為隨機產生。在讀磁盤請求數與寫磁盤請求數相等的情況下,其實驗結果如圖7所示。由圖可知,在任何磁盤請求到達率情況下,基于流水線的磁盤接口控制器的吞吐率都比基于MIPS的吞吐率高。在其他讀寫請求比率的條件下,也可以得到類似的結果。

    磁盤陣列控制器是磁盤陣列的核心,直接決定了整個磁盤陣列的性能。本文通過研究現有磁盤接口設計和磁盤接口完成的功能,提出了一種磁盤接口的并行流水線設計模型,并對該模型實現過程中的模塊間的通信問題和模塊間的緩沖管理問題進行了相應的分析和設計。實驗結果表明,在各種情況下,磁盤接口的吞吐率都有提高,在高寫請求率和重負載兩種情況下尤為顯著。較高的磁盤接口控制器的吞吐率可以降低平均訪問時間,使復雜有效的預取和置換算法方便地應用于磁盤陣列,提高緩存的命中率,從而提高磁盤陣列的整體性能。
參考文獻
[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,FENG 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系統中北橋的FPGA設計[J].小型微型計算機系統,2004,25(11):2028-203.
[9] 苗勝.硬盤數據加密系統的設計及其FPGA實現[J].計算機應用研究,2004(10):221-223.
[10] 葉頂勝.基于FPGA的Serial ATA1.0a設備IP CORE設計[D].南充:西南石油大學,2006.

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 中文字幕网站在线观看 | 国产精品资源在线播放 | 91短视频在线观看 | 日日干夜夜拍 | 国产精品亚洲午夜一区二区三区 | 亚洲激情影院 | 国产一区二区三区美女秒播 | 精品一区二区三区视频 | 日本在线www | 国产成人在线视频网站 | 国产免费黄色 | 免费v片在线观看 | 日本精品高清一区二区不卡 | 天天操天天干天天摸 | 亚洲欧美成人综合 | 欧美成一级 | 国产亚洲精品日韩已满十八 | 欧美成人久久一级c片免费 欧美成人看片 | 国产91香蕉视频 | 黄免费观看 | 一本久道综合久久精品 | 26uuu另类欧美亚洲曰本 | 国产高清在线精品免费 | 成人一级黄色毛片 | 老湿福利影院 | 日韩三级一区二区三区 | 欧美日韩高清在线观看一区二区 | 2021天天躁夜夜燥西西 | 成年免费大片黄在线观看视频 | 亚洲 国产精品 日韩 | 91网站网站网站在线 | 97国产大学生情侣11在线视频 | 夜夜狠狠狠狠 | 九九爱精品视频 | 一个人免费观看在线视频www | 成年男女免费视频 | 99精品视频免费 | 看黄网址在线观看 | 午夜视频在线观看按摩女 | 精品成人在线视频 | 全免费a级毛片免费看不卡 全免费a级毛片免费毛视频 |