楊思捷,陳俊奇,王勇*,李樹林
(1.桂林電子科技大學計算機與信息安全學院,廣西 桂林 541004;2.桂林電子科技大學廣西教育大數據與網絡安全協(xié)同創(chuàng)新中心,廣西 桂林 541004)
近年來,隨著互聯(lián)網、云計算、云存儲等技術的快速發(fā)展,全球信息數據規(guī)模巨大并呈現(xiàn)爆炸式增長,傳統(tǒng)存儲系統(tǒng)已無法滿足大數據存儲的功能和性能需求。在這樣的背景下,催生了對于高數據讀寫性能、可靠性、可拓展性的系統(tǒng)的需求。分布式存儲系統(tǒng)在大規(guī)模數據的存儲和管理中已被廣泛采用,例如Hadoop 分布式文件系統(tǒng)(HDFS)[1]、Swift 云存儲系統(tǒng)[2]以及Ceph 分布式文件系統(tǒng)[3]。
在分布式存儲系統(tǒng)中,由于存儲設備故障、系統(tǒng)崩潰、自然災害、網絡故障等問題引起的節(jié)點失效進一步導致了大量的數據丟失。為了避免數據丟失,提高存儲系統(tǒng)的可靠性,在分布式系統(tǒng)中一般采用兩種冗余機制的數據容錯技術,分別是副本容錯技術[4]和糾刪碼容錯技術[5]。副本容錯技術基于復制機制,系統(tǒng)將節(jié)點上原始數據塊復制到其他存儲節(jié)點上,提高了數據的可用性。糾刪碼容錯技術基于編碼機制,通過將原始數據分割為k個數據塊,然后對這些數據塊編碼得到m個校驗塊,當數據塊丟失數量不超過m時,就可以從現(xiàn)有的數據塊和校驗塊中恢復出原始數據。糾刪碼技術在提供與副本技術相同的容錯能力的同時,能夠顯著降低存儲開銷。RS 類編碼[6]作為目前使用最為廣泛的糾刪碼算法,具有較好的空間利用率,與三副本技術相比,RS(14,10)在提高了1 倍容錯能力的基礎上,降低了53%的存儲開銷[7]。隨著糾刪碼技術的發(fā)展,開源的糾刪碼庫為人們提供了多種解決方案。Jerasure開源糾刪碼庫[8]由C/C++語言編寫,能夠實現(xiàn)多種糾刪碼,包括RS 碼、柯西RS 碼[9]、LRC 碼[10]等RS 類編碼,在最新的Jerasure 2.0 版本中,提供面向對象的接口,增加了 更多糾 刪碼的實現(xiàn),例 如RDP 碼[11]、EVENODD 碼[12]、Blaum-Roth 碼[13]等陣列糾刪碼,支持多線程,在提高適用范圍的同時提升了計算效率。
糾刪碼技術的高可靠性和相對較低的存儲成本使其已經廣泛應用于數據中心[14],但也在存儲過程中帶來了更多的計算開銷和編碼時延,若編碼速率過低,則在編碼過程中會發(fā)生數據丟失,原始數據塊將面臨無法恢復的風險。因此,糾刪碼的編碼效率不僅影響存儲系統(tǒng)性能,還會影響存儲系統(tǒng)的可靠性?,F(xiàn)場可編程門陣列(FPGA)[15]具有邏輯結構可定制、高速并行計算、片上緩沖大、調度靈活等特點,在加速糾刪碼[16-17]方面具有以下3 個優(yōu)點:1)片上邏輯資源豐富,具有動態(tài)重構特性,可重復配置以減少硬件開銷;2)通過流水線并行設計來提高計算編解碼吞吐量;3)存儲器訪問帶寬需求相對較低,有利于有效且充分地利用可用的存儲器帶寬。在高速網絡通信中,F(xiàn)PGA 常用于實現(xiàn)低時延的前向糾錯碼編解碼器[18],然而通過仿真實驗驗證了現(xiàn)有的基于FPGA 的糾刪碼存儲加速方案在實際分布式存儲系統(tǒng)中可能存在通信可靠性較低及難以處理較大數據塊的問題。為減少糾刪碼編碼時延、提升糾刪碼容錯存儲的性能和可靠性,本文設計基于FPGA 的分布式存儲系統(tǒng)糾刪碼編碼加速方案,并在實際的存儲環(huán)境下進行了實驗驗證。本文主要工作如下:
1)設計基于FPGA 的RS 碼編碼硬件加速架構,通過硬件描述語言實現(xiàn)RS(8,2)、RS(8,3)、RS(8,4)、RS(8,5)4 種容錯能力的16×8 bit 并行RS 碼編碼器,通過優(yōu)化糾刪碼算法模塊的時序實現(xiàn)流水線處理,進一步提升編碼速率。
2)拓展片外4 GB DDR3 存儲器接口,當存儲系統(tǒng)中需要編碼的數據塊較大時,可以利用其隨機存取特性將數據塊切分為更小的操作單位,便于編碼器進行具體的數據計算,并且實現(xiàn)在上位機和FPGA之間的數據緩存管理,避免數據溢出,提升了數據通信的可靠性。
3)實現(xiàn)FPGA 與上位機的數據通信,在實際環(huán)境下通過了FPGA 的板級驗證,并在不同規(guī)模數據量下進行實驗測試。
本文主要關注RS 碼,通常被表示為RS(k,m),其中,k表示原始數據塊數量,m表示編碼后生成的校驗塊數量,當數據發(fā)生丟失時可以通過任意k個數據塊或校驗塊進行數據恢復,最大可以容忍m個數據塊的丟失。給定原始數據集合D={D1,D2,…,Dk},Di表示第i個數據塊(1≤i≤k),校驗數據集合C={C1,C2,…,Cm},Cj表示第j個校驗塊(1≤j≤m),編碼計算是一個定義在伽羅華域GF(2w)[19]上的矩陣點乘,如式(1)所示:
在一次編碼過程中生成的所有數據塊和校驗塊記為[D|C]T,稱為條帶,(k+m)×k階的矩陣稱為生成矩陣G,由m×k階的編碼矩陣A和k×k階的單位矩陣E構成,記為G=[E|A]T,在RS 碼中使用范德蒙德矩陣作為編碼矩陣。伽羅華域是一種有限域,域內包含2w個元素,其中定義了一種不可約的特殊多項式,稱為本原多項式P(x),通過構建對數/反對數索引表的方法簡化有限域上的乘法運算,如式(2)所示:
其中:gflog 和gfilog 分別表示伽羅華域上的對數函數和反對數函數。反對數表和對數表的構建如式(3)和式(4)所示:
當條帶中丟失任意m個塊時,只需選取任意k個幸存的數據塊或校驗塊組成一個新集合Ds,同時將集合Ds中元素所對應的生成矩陣G中的行向量重組為一個k×k階的矩陣Gs,如式(5)所示:
對矩陣Gs求逆G-1s并代入式(5)即可恢復原始數據,如式(6)所示:
糾刪碼在實現(xiàn)數據冗余存儲的過程中,分布式存儲系統(tǒng)的性能主要面臨來自網絡資源消耗、編解碼計算效率、磁盤I/O 吞吐量3 個方面的挑戰(zhàn)。在存儲設備內部,計算效率是影響存儲性能的主要因素,計算復雜性主要來源于編解碼過程中大量有限域上的矩陣乘法運算。為提升計算效率,研究人員提出在CPU、GPU、FPGA 等不同架構下的糾刪碼優(yōu)化加速方案。CHEN 等[20]設計一種基于多核CPU 的糾刪碼軟件(parEC),通過實現(xiàn)并行運算,顯著提升了糾刪碼的計算吞吐量。孫黎等[21]通過優(yōu)化HRC 碼算法,提出了HRC 偏移重復碼,與三副本技術和S2-RAID 糾刪碼相比提升了容錯性能,降低了修復開銷。LIU 等[22]利用GPU 的并行處理、矢量運算等特性,提出一種基于GPU 的糾刪碼庫(GCRS),相比于Jerasure 開源糾刪碼庫編解碼速率提升了10 倍。許佳豪[23]設計一種基于GPU 的LRC 編碼優(yōu)化方案,采用異或編碼思想,直接對數據塊進行移位變換和異或運算,相比于GCRS 庫性能提升了3%~5%。CHEN等[24]分別在CPU、GPU、FPGA 和APU 架構下實現(xiàn)了基于OpenCL 的伽羅華域GF(28)糾刪碼實現(xiàn)方案,針對每種架構的特點提出不同的算法優(yōu)化策略,通過實驗比較不同架構下的加速效果,實驗結果表明FPGA 性能優(yōu)越且相對成本較低。王先鵬[25]利用Xilinx HLS 工具實現(xiàn)對4 種RS 碼進行編解碼加速,設計基于FPGA 的多速率RS 碼編解碼器,采用矩陣預處理的思想,將編解碼矩陣預先存儲在FPGA 的片上ROM 中,從而減少了糾刪碼編解碼過程中構造矩陣所帶來的時延,并通過仿真驗證其計算功能和效率,結果表明其能有效提高數據吞吐量。
在分布式存儲系統(tǒng)中,作為存儲單位的默認數據塊一般比較大,比如在Hadoop 3.0[26]中默認塊大小為128 MB,Ceph 的數據對象大小默認為4 MB。當這些數據對象被分為k個數據塊Di時,如果直接對其進行RS(k,m)編碼,需要構造一個大小為m×k×Dsize的 編碼矩 陣,Dsize表示每 個數據 塊Di的大小。Dsize越大,矩陣越大,用于運算的對數/反對數索引表也越大,會占用更多的內存,導致計算效率降低。因此,在實際的糾刪碼容錯應用中,通常不會直接對數據塊Di進行編碼,而是將數據塊Di切分為更小的單位,稱為報文di,將報文作為數據編碼的基本單位[27]。文獻[24-25]分別使用FPGA 實現(xiàn)了細粒度為64 Byte 和1 Byte 的RS 碼編碼器,但忽略了對數據塊緩存和切片操作,導致上位機和FPGA 間通信可靠性較低,并且要求上位機將數據塊切分為更小的報文后再發(fā)送給FPGA,難以滿足分布式存儲系統(tǒng)的糾刪碼容錯需求。本文的目標是通過拓展FPGA片外存儲器接口,實現(xiàn)數據緩存和數據塊切片功能,利用FPGA 加速RS 碼編碼計算,從而提升數據寫入吞吐量。
為了提升基于糾刪碼容錯機制的分布式存儲系統(tǒng)性能,本文提出一種基于FPGA 的軟硬件協(xié)同RS碼編碼加速方案。首先,對FPGA 進行模塊化設計,實現(xiàn)對數據的接收、緩存、處理和發(fā)送;然后,設計RS 碼編碼器,利用對數/反對數索引表簡化矩陣乘法運算;最后,通過對RS 編碼器的并行化處理和時序優(yōu)化提升數據吞吐量。
基于FPGA 設計的RS 碼編碼硬件加速架構如圖1 所示。在FPGA 中設計4 個主要模塊:1)數據通信模塊,該模塊包含物理層和鏈路層;2)數據接收/發(fā)送模塊;3)用戶模塊,該模塊包含數據解析、糾刪碼算法、數據封裝3 個子模塊;4)DDR3 接口模塊。
圖1 基于FPGA 的RS 碼編碼硬件加速架構Fig.1 FPGA-based hardware acceleration architecture of RS code encoding
FPGA 外部提供SFP 接口,支 持10 Gb/s 速率 通信,上位機可以通過萬兆以太網接口與FPGA 實現(xiàn)數據通信。在該架構中,糾刪碼算法模塊用200 MHz 時鐘驅動,DDR3 接口的時鐘為雙沿800 MHz 時鐘,DDR3 內部存儲陣列系統(tǒng)時鐘為200 MHz,其余模塊的驅動用戶時鐘為156.25 MHz。在數據通信模塊中,物理層包括PMD、PMA、PCS 三層結構,PMD 層實現(xiàn)物理連接。PMA 層將PMD 層傳來的串行差分數據進行時鐘恢復,轉化為66 bit 的并行數據,如果數據來自PCS 層,則將66 bit 并行數據轉化為串行差分數據。PCS 層主要功能為實現(xiàn)64/66 bit 信道編解碼,MAC 核與PCS 層之間通過XGMII 接口傳輸數據。MAC 核將下層數據去掉前導碼、起始符和幀校驗序列,轉為MAC 幀后發(fā)送到更上層,對于來自上層的數據則增加前導碼、起始符,計算幀校驗序列。在數據接收/發(fā)送模塊中,根據AXIS 總線時序,在數據接收時將來自數據通信模塊的兩個時鐘周期的64 bit 數據合并成128 bit 數據后,增加起始符、有效標識符后發(fā)送到用戶模塊。用戶模塊首先解析數據包,去掉數據報文頭部后只保留數據部分,通過DDR3 接口存入DDR3 中。糾刪碼算法模塊從DDR3 通過地址索引獲取數據進行RS 碼編碼。數據封裝模塊對編碼完成的數據添加數據報文頭部后發(fā)送給數據接收/發(fā)送模塊。
通過硬件描述語言Verilog HDL 實現(xiàn)對RS(8,2)、RS(8,3)、RS(8,4)、RS(8,5)4 種RS 碼的編碼計算進行硬件加速。圖2 為RS 碼編碼器框架以及主要信號,編碼器中所有相關運算定義在GF(28)內,本原多項式P(x)=x8+x4+x3+x2+1,根據P(x)生成512 Byte的對數/反對數索引表,存儲一個大小為16~40 Byte的編碼矩陣,矩陣大小由RS(k,m)中的參數k和m決定,使用200 MHz 時鐘驅動,數據報文位寬為8 bit。
圖2 RS 碼編碼器框架Fig.2 Framework of RS code encoder
在數據編碼過程中,8 bit 位寬的原始數據報文輸入RS 編碼器,同時拉高輸入有效信號,當最后一個數據報文即第k個報文輸入時,拉高輸入數據尾部標識信號。在輸入完成后,原始數據報文和編碼矩陣進行有限域上的矩陣乘法運算得到編碼數據報文,其中包括查表操作和異或運算,需要3 個時鐘周期。在計算完成后,編碼器開始輸出編碼報文條帶,同時拉高輸出有效信號,當最后一個編碼報文即第k+m個編碼報文輸出時,拉高輸出數據尾部標識信號。整個編碼流程需要消耗k+m+3 個時鐘周期,即(k+m+3)×5 ns。
在該框架下,1 個時鐘周期內只能處理1 Byte 數據,吞吐量較低,難以滿足分布式存儲系統(tǒng)對糾刪碼容錯的高性能需求。因此,在本文設計的糾刪碼算法模塊中實例化了16 個這樣的RS 碼編碼器,通過并行化處理,使其在1 個時鐘周期內的數據處理量達到16 Byte,并且優(yōu)化了接口時序,從而提升了數據吞吐量。圖3 為糾刪碼算法模塊實現(xiàn)RS(8,4)編碼的主要接口時序圖。模塊用2 個時鐘周期從DDR3 中讀取8個大小為16 Byte 的原始數據報文,記錄為di(1≤i≤8),對應的接口信號為DDR2AL_data;數據報文di依次輸入RS 編碼器,對應信號接口為RS_input_data,最后一個數據報文d8輸入編碼器后開始計算校驗報文cj(1≤j≤4);編碼器輸出接口RS_output_data 從數據報文輸入3 個時鐘周期后開始輸出報文條帶,既確保了每個校驗報文計算所需的時延,又提升了編碼效率;AL2FIFO_data 表示糾刪碼算法模塊向數據封裝模塊發(fā)送數據的接口,模塊之間定義了一個異步FIFO 用于跨時鐘域數據傳輸,RS 編碼器輸出第1 個校驗報文c1,經過1 個時鐘周期后算法模塊向數據封裝模塊 發(fā)送數 據;RS_input_valid、RS_input_last、RS_output_valid 和RS_output_last 分別對應編碼器輸入有效、編碼器輸入尾部標識、編碼器輸出有效和編碼器輸出尾部標識,均為高電平有效??偭鞒毯臅r18 個時鐘周期,編碼流程耗時15 個時鐘周期。
FPGA 作為加速RS 碼編碼的外部硬件設備需要與上位機進行數據通信,采用萬兆以太網實現(xiàn)FPGA與上位機的通信,傳輸層協(xié)議為UDP 通信協(xié)議。為了能有效獲取上位機下發(fā)的數據塊信息并支持FPGA 計算,對數據信息格式進行設計,其中主要包括MAC 幀首部、IP 首部、UDP 首部和數據字段大小。FPGA 接口對應的MAC 地址為58∶69∶6C∶69∶6E∶78,IP 地址為192.168.1.101。數據字段大小規(guī)定為128~1 408 Byte,且為128 Byte(8 個原始數據報文)的整數倍。
在上節(jié)中實現(xiàn)了基于FPGA 的RS 碼硬件加速算法,每個用于編碼的數據報文大小為16 Byte。為了滿足分布式存儲系統(tǒng)中數據對象的編碼需求,需要在FPGA 和上位機之間增加一個緩存結構,將接收到的數據塊Di進一步劃分為大小為16 Byte 的數據報文di。拓展片外4 GB DDR3 接口用于實現(xiàn)數據緩存和數據塊分片,地址結構如圖4 所示,其中高3 位[28∶26]被分配為列地址,每一列對應一個數據塊Di,低26 位[25∶0]被分配為行地址,在這個存儲陣列中,每個存儲單元可以存儲8 Byte 數據。由于DDR3 接口模塊采用雙沿800 MHz 時鐘,因此在200 MHz 的時鐘下存取128 Byte 數據即8 個用于編碼的數據報文只需要2 個時鐘周期。
圖4 DDR3 地址結構Fig.4 DDR3 address structure
圖5 為基于FPGA 的RS 碼編碼加速架構下的RS(8,4)編碼過程,主要步驟如下:
圖5 RS(8,4)編碼過程Fig.5 RS(8,4)encoding process
步驟1上位機將數據對象劃分為8 個數據塊,每個數據塊大小相等,為nByte,構成的數據塊集合定義為D={D1,D2,…,D8},按順序通過萬兆以太網接口并以上文規(guī)定的數據包格式發(fā)送給FPGA。
步驟2FPGA 通過光纖接收到數據信號后,經過數據通信模塊和數據接收模塊的處理,串行差分數據信號被轉化為128 bit 并行數據后傳入用戶模塊中的數據解析模塊。
步驟3數據解析模塊去掉UDP 數據包首部,只保留數據字段,通過DDR3 接口模塊存入DDR3,其中數據塊序號對應列地址,例如D1對應的列地址為000。
步驟4當所有的數據塊都存入DDR3 后,糾刪碼算法模塊通過DDR3 接口模塊從DDR3 的存儲陣列中按行地址讀取數據,一次讀取128 Byte,分為8 個數據報文,每個報文大小為16 Byte,構成的數據報文集合定義為d={d1,d2,…,d8}。
步驟5算法對數據報文集合d進行編碼運算,計算出4 個校驗報文,構成校驗報文的集合定義為c={c1,c2,c3,c4}。
步驟6糾刪碼算法模塊將校驗報文集合c放入糾刪碼算法模塊與數據封裝模塊之間的FIFO 暫存,每當FIFO 中存儲的校驗報文集合達到11 個即704 Byte 時,將數據封裝為UDP 數據包傳輸給數據發(fā)送模塊。
步驟7判斷編碼算法是否已經執(zhí)行次,若是則進入步驟8,否則回到步驟4。
步驟8判斷FIFO 是否為空,若是則直接進入步驟9,否則將FIFO 中的數據封裝后傳輸到數據發(fā)送模塊,進入步驟9。
步驟9數據發(fā)送模塊和數據通信模塊將UDP數據包恢復為串行差分數據信號后通過光纖發(fā)送給上位機,整個編碼過程結束。
本節(jié)測試FPGA 對4 種容錯能力不同的RS 碼在不同數據量下的加速效果,主要關注編碼速率vencoding和數據寫入吞吐量vtotal2 個性能指標,計算公式分別如式(7)、式(8)所示:
其中:k表示原始數據塊個數;n表示每個數據塊的大?。籺encoding表示數據編碼時延,即原始塊輸入RS 編碼器到最后一個校驗塊輸出的耗時;tdownload為編碼數據下載時延;twr為數據寫入DDR3 的時延;trd為FPGA的算法模塊從DDR3 讀取數據的時延;tupload為數據上傳時延。為了驗證本次實驗結果,將所提方案與Jerasure 2.0 開源糾刪碼庫(記為Jerasure 2.0 方案)進行結果對比,實驗結果顯示所提方案表現(xiàn)更優(yōu),并且編碼數據量越小,性能越好。
實驗硬件加速平臺為Xilinx VC709 評估板,屬于Xilinx 公司的Virtex-7 系列FPGA 開發(fā)板,該系列的芯片具有高集成度、強大的數據處理能力以及高可拓展性。表1 為實驗硬件環(huán)境主要參數。
表1 實驗硬件環(huán)境 Table 1 Experiment hardware environment
表2 為用于對照實驗的Jerasure 2.0 開源糾刪碼庫的軟件實驗環(huán)境主要參數。
表2 軟件實驗環(huán)境 Table 2 Software experiment environment
選用編碼速率vencoding和數據寫入吞吐量vtotal作為比較糾刪碼編碼性能是否優(yōu)良的指標,作為對照實驗的Jerasure 2.0 開源庫的源碼給出了這兩個速率的計算方案,在對文件進行數據編碼后可以直接得到。
所提方案通過Xilinx VC709 上的200 MHz 系統(tǒng)時鐘來記錄FPGA 執(zhí)行數據下載、DDR3 讀寫、數據編碼和數據上傳消耗的時鐘周期數,在編碼完成后FPGA 向上位機發(fā)送1 個時鐘周期數記錄數據包,包結構如圖6 所示,可以看出:數據下載和上傳的時延最大,用32 bit 記 錄;DDR 讀寫較 快,用16 bit 記錄;編碼算法用24 bit 記錄;最后8 bit 暫作保留。
圖6 時鐘周期數記錄數據包Fig.6 Clock cycle number recording data packet
通過式(9)可得到FPGA 執(zhí)行每個操作的時延,其中,頻率f=200 MHz,Tn表示時鐘周期數,結合式(7)、式(8)計算編碼速率和數據寫入吞吐量。
實驗測 試兩種 方案對RS(8,2)、RS(8,3)、RS(8,4)、RS(8,5)4 種RS 編碼模式在14 KB、140 KB、1 400 KB、14 MB、42 MB 5 種不同大小的測試文件上的加速效果,RS 碼的各項參數設置如表3所示。
表3 RS 碼參數設置 Table 3 RS code parameter setting
Jerasure 2.0方案和所提方案在4種RS碼的不同測試文件大小下的編碼算法平均速率對比曲線圖如圖7所示,具體數據如表4 所示。由于所提方案的編碼速率不隨文件大小而改變,因此只用一條曲線表示。
表4 平均編碼速率對比數據Table 4 Comparison data of average encoding rate 單位:(MB·s-1)
圖7 平均編碼速率對比曲線Fig.7 Comparison curve of average encoding rate
從測試結果可以發(fā)現(xiàn),所提方案的編碼速率相對恒定,文件的測試大小不會成為影響算法速率的因素,對于較小文件的編碼有顯著優(yōu)勢。與Jerasure 2.0方案相比,在橫向上所提方案的算法速率隨著RS 碼校驗塊數量的增加而緩慢降低,在縱向上所提方案在大多數情況下為最優(yōu)或與其相當,僅在編碼模式為RS(8,2)時比Jerasure 2.0 方案(42 MB)略差。所提方案和Jerasure 2.0 方案(42 MB)在編碼模式為RS(8,3)時產生了交叉節(jié)點,這是因為Jerasure 2.0 方案對大文件的編碼能力較強,但是隨著校驗塊數量的增加,計算生成矩陣和編碼運算的復雜度隨之增加,導致Jerasure 2.0 方案(42 MB)的編碼性能曲線下降段的斜率較大,而所提方案在編碼器中預存了生成矩陣,并且將編碼運算的查表操作和異或運算均勻分配到每個用于計算的時鐘周期,使得編碼性能曲線下降段的斜率較小。
對于糾刪碼存儲而言,除了編碼算法層面的時間開銷外,系統(tǒng)的I/O、矩陣生成、對文件劃分操作等同樣存在大量時間開銷,對系統(tǒng)性能產生重要影響。圖8為Jerasure 2.0 方案和所提方案對4 種RS 碼在不同測試文件大小下的平均數據寫入吞吐量對比。由圖8可以看出,使用所提方案的糾刪碼編碼的數據寫入吞吐量提升了2.7~93.0 倍,并且Jerasure 2.0 方案在處理不同數據量時,數據寫入吞吐量波動較大,當數據量較小時由于此時的系統(tǒng)I/O、矩陣生成和數據劃分時間開銷很大,導致系統(tǒng)運行速率明顯降低,而所提方案在處理不同數據量時由于編碼矩陣已經預先寫入FPGA 的RAM 中,因此能夠以較恒定的速率運行。
針對糾刪碼容錯機制在分布式存儲系統(tǒng)中存在編碼時延高、數據吞吐量小的問題,本文提出一種基于FPGA 的RS 碼編碼加速方案。利用FPGA 實現(xiàn)高效的并行RS 碼編碼器,同時擴展DDR3 接口用于緩存管理和數據切片,并且在由上位機和FPGA 組成的糾刪碼編碼硬件加速架構中進行了實驗驗證。實驗結果表明,在不同規(guī)模的數據量下,所提方案相比Jerasure 2.0 開源糾刪碼庫能夠大幅度提升RS 碼的編碼速率與數據寫入吞吐量,并且對于較小的文件具有更顯著的性能提升。下一步將針對柯西RS 碼的編解碼優(yōu)化展開研究,提升糾刪碼容錯機制在數據寫入和數據修復方面的綜合性能。