基于PCI_Express接口的FPGA數(shù)據(jù)壓縮芯片的設(shè)計及實現(xiàn)
摘 要
論文針對高速網(wǎng)絡(luò)環(huán)境下數(shù)據(jù)的壓縮存儲問題,提出一種實用的解決方案,采用軟硬件相結(jié)合的壓縮存儲方法,在不影響網(wǎng)絡(luò)速度的前提下對數(shù)據(jù)進行實時的壓縮存儲。論文使用xxx公司自主研發(fā)的基于LZS技術(shù)的壓縮芯片xxx和Xilinx公司FPGA芯片的PCI Express接口,實現(xiàn)了Host主機內(nèi)存和壓縮芯片間的DMA方式的數(shù)據(jù)交換。
網(wǎng)絡(luò)和文件系統(tǒng)的數(shù)據(jù)存儲需采用無損壓縮的方式。這種方式可以減少存儲成本,提高存儲效率。字符內(nèi)容壓縮采用的算法LZ(Lempel-Ziv)和LZW(Lempel-Ziv-Welch)是從Huffman發(fā)展而來的,由xxx公司獨有專利的LZS(Lempel-Ziv-Stac)算法基于LZ一系列壓縮算法擴展,在網(wǎng)絡(luò)存儲市場已經(jīng)成為主流的數(shù)據(jù)壓縮算法。
論文基于Xilinx V5 FPGA芯片的PCI Express IP接口,將內(nèi)存待處理數(shù)據(jù)通過PCI Express接口送至板卡上的壓縮芯片xxx進行壓縮或解壓縮,同時將處理后的數(shù)據(jù)通過PCI Express接口送回至內(nèi)存。
論文充分利用DMA方式,在主機軟件對內(nèi)存和FPGA硬件進行必要的管理和配置后,F(xiàn)PGA硬件主動連續(xù)讀取內(nèi)存數(shù)據(jù),同時處理后的數(shù)據(jù)也連續(xù)寫到主機內(nèi)存中,軟件在數(shù)據(jù)傳輸中無需過多干預(yù),節(jié)省了CPU帶寬,很好的提高了系統(tǒng)效率。
論文最后在完成系統(tǒng)架構(gòu)設(shè)計和邏輯功能模塊代碼并經(jīng)過FPGA設(shè)計流程后,實現(xiàn)了硬件板級的邏輯和系統(tǒng)調(diào)試,并進一步總結(jié)分析了方案設(shè)計的可改進點、FPGA設(shè)計流程以及與ASIC設(shè)計的異同點。
作為一張可以實現(xiàn)數(shù)據(jù)壓縮、解壓縮處理的PCI Express插卡,可應(yīng)用于各類需要大量數(shù)據(jù)存儲的服務(wù)器、數(shù)據(jù)庫和NAS等網(wǎng)絡(luò)存儲設(shè)備上,實現(xiàn)快速、穩(wěn)定和低成本的數(shù)據(jù)備份,滿足了各網(wǎng)絡(luò)存儲廠商對數(shù)據(jù)備份的要求,有較高的商業(yè)價值。
關(guān)鍵詞 :LZS, DMA, 描述符, PCI Express, FPGA設(shè)計
ABSTRACT
The paper provides a practical solution aiming to the issue of data reduction, compression and storage in high speed network environment. The solution uses the compression and storage with software and hardware combined. It could compress and storage data in real time, without the effect of network speed and bandwidth. The paper uses the xxx self-designed compression chip xxx, which is based on LZS technology,and the PCI Express interface of Xilinx FPGA chip to implement the data exchange with the DMA mechanism between the host memory and the compression chip.
The storage in file system and network need to use the method of lossless. This method could reduce storage cost and improve storage efficiency. The character content compression utilizes the basic LZ (Lempel-Ziv) and LZW (Lempel-Ziv-Welch) algorithm, which is developed from Huffman encoding. The LZS (Lempel-Ziv-Stac) algorithm, which is an unique patent owned by xxx and based on a series of extensive algorithm of LZ, has become the mainstream data compression algorithm.
The paper, which is based on PCI Express IP core in Xilinx V5 FPGA chip, transfer the pre-process data in host memory to compression chip xxx by PCI Express interface, at the meantime, send the post-process data, which is processed by compression or decompression, back to host memory still by PCI Express.
The paper implements the DMA mechanism. After the host software finish the necessary management and configuration to the host memory and FPGA hardware, FPGA hardware initiate successive pre-process data read requests to host memory, as well as post-process data write requests. The software need not involve much, which could save CPU bandwidth and improve the system efficiency.
After implementation of system architecture design and logic module RTL coding and passing FPGA design flow, the paper finishes logic and system debug and test in hardware board level and analyzes and concludes possible design improvements and the differences and similarities between FPGA design flow and ASIC design flow.
This is a PCI Express adding card, which could achieve data compression and decompression processing. It could be used on all kinds of network storage devices, such as data server, database and Network Attached Storages, to implement rapid, stable and low-cost data backup. It could meet the backup requirement of storage device manufactures and show high business value.
KEY WORDS: LZS, DMA, Descriptor, PCI Express, FPGA design
目 錄
摘 要 2
ABSTRACT 3
目 錄 5
圖 7
表 7
英文縮寫、符號清單與術(shù)語表 8
第1章 緒論 9
1.1 數(shù)據(jù)壓縮存儲的意義 9
1.2 數(shù)據(jù)壓縮算法 9
1.3 數(shù)據(jù)壓縮軟硬件實現(xiàn)比較 10
1.4 硬件壓縮現(xiàn)狀 11
1.5 發(fā)展趨勢 11
第2章 數(shù)據(jù)壓縮綜述 13
2.1 數(shù)據(jù)壓縮概述 13
2.2 LZS壓縮算法 13
2.3 LZS壓縮芯片xxx xxx 16
2.4 本章小結(jié) 19
第3章 FPGA板卡功能設(shè)計 20
3.1 全局結(jié)構(gòu) 20
3.2 FPGA技術(shù)特點 21
3.3 PCI Express 接口 21
3.3.1 接口特點 21
3.3.2 協(xié)議層次 23
3.3.3 接口數(shù)據(jù)包 24
3.4 時鐘分配 25
3.5 DMA介紹 26
3.5.1 若干數(shù)據(jù)結(jié)構(gòu) 27
3.5.2 DMA模塊功能 28
3.5.2.1 PIM 28
3.5.2.2 POM 29
3.5.2.3 RRC 29
3.5.2.4 WRC 30
3.5.2.5 CC 31
3.5.2.6 CFG_REGS 32
3.5.2.7 QM 32
3.5.3 DMA機制 33
3.6 性能參數(shù) 41
3.7 本章小結(jié) 41
第4章 FPGA實現(xiàn) 42
4.1 FPGA芯片簡介 42
4.2 FPGA資源使用 43
4.3 FPGA設(shè)計流程 45
4.4 FPGA調(diào)試 48
4.5 本章小結(jié) 48
第5章 設(shè)計總結(jié) 49
5.1 設(shè)計可改進點 49
5.2 FPGA設(shè)計與ASIC設(shè)計的異同 49
第6章 結(jié)語 51
參考文獻 52
致謝 53
個人簡歷 54
圖
圖 2 1 LZS算法原理 15
圖 2 2 LZS算法數(shù)據(jù)格式 16
圖 2 3 xxx芯片內(nèi)部結(jié)構(gòu)圖 18
圖 2 4 xxx芯片的CRC校驗位置圖 19
圖 2 5 xxx芯片應(yīng)用結(jié)構(gòu)圖 19
圖 2 5 FPGA硬宏 (IP核)設(shè)計流程 21
圖 3 1 FPGA板卡結(jié)構(gòu)圖 23
圖 3 2 PCI Express設(shè)備拓撲圖 25
圖 3 3 PCIE協(xié)議分層圖 26
圖 3 4 PCIE數(shù)據(jù)包結(jié)構(gòu)圖 26
圖 3 5 PCIE TLP包結(jié)構(gòu)圖 27
圖 3 6 PCIE DLLP包結(jié)構(gòu)圖 27
圖 3 7 FPGA內(nèi)部時鐘分布圖 28
圖 3 8 DMA模塊框圖 29
圖 3 9 DMA機制流程圖 32
圖 3 10 數(shù)據(jù)包的命令結(jié)構(gòu)體 33
圖 3 11 32位地址的Result Descriptor格式 33
圖 3 12 64位地址的Result Descriptor格式 34
圖 3 13 32位地址的Source和Destination Descriptor格式 34
圖 3 14 64位地址的Source和Destination Descriptor格式 35
圖 3 15 主機內(nèi)存各數(shù)據(jù)結(jié)構(gòu)關(guān)系圖 36
圖 3 16 DMA寫請求仲裁結(jié)構(gòu)圖 37
圖 3 17 DMA傳輸系統(tǒng)硬件框圖 47
圖 3 18 發(fā)周期狀態(tài)機設(shè)計 49
圖 4 1 FPGA內(nèi)PCIE核結(jié)構(gòu)圖 51
圖 4 2 XC5VLX30T開發(fā)板外形 52
圖 4 3 XC5VLX30T開發(fā)板結(jié)構(gòu) 52
圖 4 4 視頻壓縮數(shù)據(jù)流圖 53
圖 4 4 FPGA設(shè)計流程圖 56
圖 4 3 邏輯仿真模塊框圖 57
表
表 3-1 Descriptor描述符域格式 34
表 3-2 Result Index Ring域格式 35
第1章 緒論
1.1 數(shù)據(jù)壓縮存儲的意義
隨著企業(yè)用戶數(shù)據(jù)呈現(xiàn)指數(shù)級增長,對于數(shù)據(jù)中心的標準要求也水漲船高,首當其沖的是現(xiàn)有的網(wǎng)絡(luò)基礎(chǔ)設(shè)施和存儲系統(tǒng)不得不加速擴容的步伐。如若僅簡單地復(fù)制原有的系統(tǒng),單純以增加硬件數(shù)量來獲取更高的性能,該模式下的系統(tǒng)擴容遠遠不足以應(yīng)對隨之而來的信息挑戰(zhàn)。在統(tǒng)籌評估整個系統(tǒng)的過程中,除性能價格比這一考核指標外,用戶開始越來越重視性能能耗比這一參數(shù)。采用數(shù)據(jù)壓縮技術(shù),明顯降低CPU負載,改善存儲系統(tǒng)的性能,節(jié)省功耗,真正滿足更高效,更環(huán)保,更綠色的數(shù)據(jù)中心新訴求,已然提上了企業(yè)信息系統(tǒng)優(yōu)化的歷史日程。
第6章 結(jié)語
此FPGA芯片和板卡實現(xiàn)了硬件測試,并成功在服務(wù)器平臺上實現(xiàn)了數(shù)據(jù)壓縮、解壓等流程。從測試結(jié)論看,該芯片對小包的處理速度比較慢,大約為16Mbps,其主要原因是小包的command和descriptor等占用了較多的數(shù)據(jù)帶寬。 基于此,在后續(xù)設(shè)計中可對小包進行專門的數(shù)據(jù)結(jié)構(gòu)設(shè)計。
FPGA邏輯設(shè)計完成后,邏輯驗證工程師搭建了VCS仿真環(huán)境,進行了較為精確的邏輯仿真,對代碼測試覆蓋率也作了大量的分析。
在系統(tǒng)調(diào)試階段,主機系統(tǒng)是在Linux操作系統(tǒng)下,驅(qū)動程序和用戶界面均采用了命令行的方式運行。在對比測試中,利用了各種測試文件反復(fù)進行壓縮和解壓縮等測試,其過程均是可逆操作。對壓縮率的測試中,一般文件都在2~10倍的壓縮率,少數(shù)在1~2倍之間。
在目前FPGA壓縮板卡的設(shè)計基礎(chǔ)上,從系統(tǒng)性能、產(chǎn)品尺寸、生產(chǎn)成本等產(chǎn)品商用的角度考慮,后續(xù)可以將壓縮芯片和FPGA內(nèi)的DMA邏輯等放在一個ASIC芯片內(nèi),并增加數(shù)據(jù)加密、Hash算法等一系列和網(wǎng)絡(luò)存儲、安全應(yīng)用有關(guān)的數(shù)據(jù)處理算法模塊,增強單一ASIC芯片的商用范圍。
在論文設(shè)計過程中,我對LZS壓縮算法以及數(shù)據(jù)備份存儲等有了進一步的了解;在調(diào)用PCI Express IP核以及硬件板級調(diào)試中,加深了對PCI Express總線協(xié)議、Linux驅(qū)動程序開發(fā)及調(diào)試等的理解;在DMA controller邏輯設(shè)計過程中,對端點設(shè)備和主機之間的高速數(shù)據(jù)交換、內(nèi)存管理、異常機制處理等有了新的理解和經(jīng)驗。從方案設(shè)計、邏輯代碼實現(xiàn)到FPGA工程和板級調(diào)試,論文對FPGA設(shè)計流程進行了一些總結(jié),并及時分析了和ASIC之間的異同點,這對今后從事FPGA或者ASIC設(shè)計都是一筆寶貴的經(jīng)驗財富。
本文編號:11587
本文鏈接:http://www.lk138.cn/jixiegongchenglunwen/11587.html