鬼佬大哥大
  • / 9
  • 下載費用:30 金幣  

一種基于FPGA高速讀取磁盤陣列中文件的方法.pdf

摘要
申請專利號:

CN201510500763.7

申請日:

2015.08.14

公開號:

CN105068766A

公開日:

2015.11.18

當前法律狀態:

授權

有效性:

有權

法律詳情: 授權|||實質審查的生效IPC(主分類):G06F 3/06申請日:20150814|||公開
IPC分類號: G06F3/06 主分類號: G06F3/06
申請人: 上海紅神信息技術有限公司
發明人: 張俊杰; 唐澤華; 尹杰; 袁文燕
地址: 201112上海市閔行區聯航路1588號3A樓5樓
優先權:
專利代理機構: 上海智信專利代理有限公司31002 代理人: 鄧琪; 余中燕
PDF完整版下載: PDF下載
法律狀態
申請(專利)號:

CN201510500763.7

授權公告號:

||||||

法律狀態公告日:

2017.10.31|||2015.12.16|||2015.11.18

法律狀態類型:

授權|||實質審查的生效|||公開

摘要

本發明提供一種基于FPGA高速讀取磁盤陣列中文件的方法,包括:FPGA向磁盤陣列發送讀文件請求;磁盤陣列反饋讀文件請求應答;FPGA獲取文件大小并申請相應的存儲空間,構建FPGA存儲地址通知發送到磁盤陣列;磁盤陣列向FPGA發送FPGA存儲地址通知應答;磁盤陣列對待讀取文件進行分包處理以構建文件內容幀發送給FPGA;FPGA對其進行保序處理,當文件內容幀需應答時,反饋文件內容應答幀;磁盤陣列接收到文件內容應答幀后,判斷保序序號與發送序號是否一致,若不一致則重新發送對應的文件內容幀至FPGA;磁盤陣列接收到最后一幀文件內容應答幀后,向FPGA發送文件內容完成幀;FPGA向磁盤陣列發送文件內容完成應答幀。本發明可以提高傳輸速度及傳輸可靠性,減小FPGA設計復雜度。

權利要求書

1.一種基于FPGA高速讀取磁盤陣列中文件的方法,其特征在于,包括
以下步驟:
S1,通過一FPGA處理單元向一磁盤陣列發送包含有待讀取文件的文件
名的讀文件請求;所述磁盤陣列接收到所述讀文件請求后查找所述待讀取文
件并反饋回相應的讀文件請求應答,所述讀文件請求應答包括所述待讀取文
件的文件大小,其中當所述待讀取文件在所述磁盤陣列中不存在時,所述文
件大小為0;
S2,所述FPGA處理單元根據反饋回的所述讀文件請求應答獲取所述文
件大小,然后申請與所述文件大小相應的存儲空間,并獲取所述存儲空間的
起始存儲地址,再利用該起始存儲地址構建FPGA存儲地址通知發送到所述
磁盤陣列;所述磁盤陣列接收到所述FPGA存儲地址通知后,向所述FPGA
處理單元發送FPGA存儲地址通知應答;
S3,所述磁盤陣列按照預定格式對所述待讀取文件進行分包處理以構建
若干文件內容幀發送給所述FPGA處理單元,所述文件內容幀包括對應的發
送序號及所述待讀取文件的相應數據,其中最后一幀所述文件內容幀以及其
余的部分所述文件內容幀設置為需要應答;所述FPGA處理單元接收到所述
文件內容幀后將其中所述待讀取文件的相應數據寫入對應的存儲空間并對其
進行保序處理,以記錄相應的保序序號,同時丟棄發送序號與保序序號不一
致的所述文件內容幀,并且當接收到的所述文件內容幀需要應答時,向所述
磁盤陣列反饋相應的文件內容應答幀,所述文件內容應答幀包括對應文件內
容幀的保序序號及其發送序號;
S4,所述磁盤陣列接收到所述文件內容應答幀后,判斷所述文件內容應
答幀中的所述保序序號與所述發送序號是否一致,如果不一致,則重新發送
對應的所述文件內容幀至所述FPGA處理單元;
S5,所述磁盤陣列接收到最后一幀所述文件內容應答幀后,向所述FPGA
處理單元發送相應的文件內容完成幀;所述FPGA處理單元接收到所述文件
內容完成幀后,向所述磁盤陣列發送文件內容完成應答幀,文件讀取操作結
束。
2.根據權利要求1所述的基于FPGA高速讀取磁盤陣列中文件的方法,
其特征在于,所述步驟S1還包括:如果所述FPGA處理單元在預定時間內未
收到所述讀文件請求應答,則重新發送對應的所述讀文件請求,如果超過預
定次數仍未接收到所述讀文件請求應答,則終止發送所述讀文件請求,并輸
出一讀文件請求錯誤報警。
3.根據權利要求1所述的基于FPGA高速讀取磁盤陣列中文件的方法,
其特征在于,所述步驟S2還包括:如果所述FPGA處理單元在預定時間內未
收到所述FPGA存儲地址通知應答,則重新發送對應的所述FPGA存儲地址
通知,如果超過預定次數仍未接收到所述FPGA存儲地址通知應答,則終止
發送所述FPGA存儲地址通知,并輸出一存儲地址通知錯誤報警。
4.根據權利要求1所述的基于FPGA高速讀取磁盤陣列中文件的方法,
其特征在于,所述FPGA處理單元與所述磁盤陣列采用IP通信協議進行通信。
5.根據權利要求1所述的基于FPGA高速讀取磁盤陣列中文件的方法,
其特征在于,所述FPGA處理單元通過DMA的方式將所述待讀取文件的相應
數據寫入對應的存儲空間。

說明書

一種基于FPGA高速讀取磁盤陣列中文件的方法

技術領域

本發明涉及云計算領域,尤其涉及一種基于FPGA高速讀取磁盤陣列中
文件的方法。

背景技術

隨著云計算以及大數據處理的發展需求,現場可編程邏輯陣列(FPGA)
由于其靈活性、可編程性以及豐富的高速通信接口在這些領域得到了越來越
多的應用。同時,由于以太網交換機技術較為成熟,成本也比較低廉,因而
成為了FPGA與磁盤陣列進行通信的首選。然而隨著規模的擴展,FPGA與磁
盤陣列的文件高速通信成為了云計算領域的瓶頸之一。

在現有的操作系統及網絡環境下,大多數應用程序均需要可靠的通信,
而TCP/IP協議成為當代網絡應用實現可靠通信的主要選擇。然而,當應用于
磁盤陣列與FPGA構建的高速局域網絡時,TCP/IP協議存在三個主要的問題:
(1)在有損網絡中吞吐量嚴重降低,當出現瞬時網絡擁塞、轉發錯誤或者光
纖問題時,TCP/IP無法區分短暫的網絡損壞,并且TCP/IP恢復時間也較長;
(2)TCP/IP的緩沖區大小固定,并且發送方窗口大小受限于接收方緩沖區的
大小,動態的數據包一旦有未收到應答的情況會對整個網絡的傳輸有極強的
影響;(3)TCP/IP協議的設計較為復雜。除了TCP/IP協議外,UDP協議是
一種常用的無連接的通信協議,然而其提供的傳送服務不可靠,相應的協議
開銷也較大。

發明內容

針對現有技術存在的缺陷,本發明的目的在于提供一種基于FPGA高速
讀取磁盤陣列中文件的方法,以提高傳輸速度及傳輸可靠性。

為了實現上述目的,本發明采用如下技術方案:

一種基于FPGA高速讀取磁盤陣列中文件的方法,包括以下步驟:

S1,通過一FPGA處理單元向一磁盤陣列發送包含有待讀取文件的文件
名的讀文件請求;所述磁盤陣列接收到所述讀文件請求后查找所述待讀取文
件并反饋回相應的讀文件請求應答,所述讀文件請求應答包括所述待讀取文
件的文件大小,其中當所述待讀取文件在所述磁盤陣列中不存在時,所述文
件大小為0;

S2,所述FPGA處理單元根據反饋回的所述讀文件請求應答獲取所述文
件大小,然后申請與所述文件大小相應的存儲空間,并獲取所述存儲空間的
起始存儲地址,再利用該起始存儲地址構建FPGA存儲地址通知發送到所述
磁盤陣列;所述磁盤陣列接收到所述FPGA存儲地址通知后,向所述FPGA
處理單元發送FPGA存儲地址通知應答;

S3,所述磁盤陣列按照預定格式對所述待讀取文件進行分包處理以構建
若干文件內容幀發送給所述FPGA處理單元,所述文件內容幀包括對應的發
送序號及所述待讀取文件的相應數據,其中最后一幀所述文件內容幀以及其
余的部分所述文件內容幀設置為需要應答;所述FPGA處理單元接收到所述
文件內容幀后將其中所述待讀取文件的相應數據寫入對應的存儲空間并對其
進行保序處理,以記錄相應的保序序號,同時丟棄發送序號與保序序號不一
致的所述文件內容幀,并且當接收到的所述文件內容幀需要應答時,向所述
磁盤陣列反饋相應的文件內容應答幀,所述文件內容應答幀包括對應文件內
容幀的保序序號及其發送序號;

S4,所述磁盤陣列接收到所述文件內容應答幀后,判斷所述文件內容應
答幀中的所述保序序號與所述發送序號是否一致,如果不一致,則重新發送
對應的所述文件內容幀至所述FPGA處理單元;

S5,所述磁盤陣列接收到最后一幀所述文件內容應答幀后,向所述FPGA
處理單元發送相應的文件內容完成幀;所述FPGA處理單元接收到所述文件
內容完成幀后,向所述磁盤陣列發送文件內容完成應答幀,文件讀取操作結
束。

進一步地,所述步驟S1還包括:如果所述FPGA處理單元在預定時間內
未收到所述讀文件請求應答,則重新發送對應的所述讀文件請求,如果超過
預定次數仍未接收到所述讀文件請求應答,則終止發送所述讀文件請求,并
輸出一讀文件請求錯誤報警。

進一步地,如果所述FPGA處理單元在預定時間內未收到所述FPGA存
儲地址通知應答,則重新發送對應的所述FPGA存儲地址通知,如果超過預
定次數仍未接收到所述FPGA存儲地址通知應答,則終止發送所述FPGA存
儲地址通知,并輸出一存儲地址通知錯誤報警。

優選地,所述FPGA處理單元與所述磁盤陣列采用IP通信協議進行通信。

優選地,所述FPGA處理單元通過DMA的方式將所述待讀取文件的相應
數據寫入對應的存儲空間。

與現有技術相比較,本發明具有如下優點:針對文件請求、FPGA存儲地
址通知以及文件內容完成幀請求采用了簡單的應答式可靠傳輸,從而減小了
FPGA設計復雜度;針對待讀取文件內容傳輸采用了主動觸發式的可靠傳輸,
磁盤陣列能夠依據其盤陣服務器的處理器性能、網絡傳輸狀況以及網絡傳輸
距離控制主動觸發的頻率,提供系統通信的靈活性以及環境適應性,極大減
少FPGA端的可靠協議開發復雜度。

附圖說明

圖1是本發明實施例中FPGA處理單元與外圍應用服務器的隊列接口示
意圖;

圖2是本發明實施例中采用的可靠通信幀的幀結構示意圖;

圖3是本發明實施例中可靠通信幀首部的結構示意圖;

圖4是本發明的基于FPGA高速讀取磁盤陣列中文件的方法的通信流程
示意圖。

具體實施方式

為使本發明的目的、技術方案及優點更加清楚明白,以下參照附圖并舉
優選實施例進行說明。

圖1示出了FPGA處理單元與外圍應用服務器(例如WEB協議加速器)
的隊列接口示意圖。如圖所示,外圍應用服務器與FPGA處理單元通過磁盤
文件打開接口、DDR(雙倍速率同步動態隨機存儲器)存儲位置接口和文件
內容接口通信;FPGA處理單元與磁盤陣列通過萬兆以太網通信,如圖2所示,
本發明的以太網幀格式是建立在IP協議基礎之上的,因此協議的開銷小于
TCP以及UDP協議。其中,以太網幀的可靠通信幀首部的定義如圖3所示,
其中端口號占用2字節,用來區分FPGA處理單元發起的是哪一個文件的請
求(實現文件名與本地隊列維護的映射表),因此該協議能夠同時支持最多
65536個文件并發傳送;操作碼占用1字節,用來區分可靠通信幀的類型(0x23
表示讀文件請求,0x24表示讀文件請求應答,0x25表示FPGA存儲地址通知,
0x26表示FPGA存儲地址通知應答,0x27表示文件內容幀,0x28表示文件內
容應答幀,0x30表示文件內容完成幀,0x31表示文件內容完成應答幀);數
據內容大小占用2字節,表示本次傳輸的數據內容長度(支持以太網的巨型
幀傳輸,最大支持65535字節);序列號占用1字節,表示本次數據傳輸的發
送序號(利用該序號維護收發通信的可靠傳輸);文件名占用6字節,表示本
次傳輸的文件名稱;DDR位置/文件按大小占用8字節,表示本次數據內容在
DDR存儲的位置或者文件大小;數據域為本次傳輸的文件數據內容。

本發明的基于FPGA高速讀取磁盤陣列中文件的方法的通信流程如圖4
所示,從圖中可以看出,針對文件請求、FPGA存儲地址通知以及文件內容完
成幀請求采用了簡單的應答式可靠傳輸,從而減少了FPGA設計復雜度;針
對待讀取文件內容傳輸采用了主動觸發式的可靠傳輸,磁盤陣列能夠依據其
盤陣服務器的處理器性能、網絡傳輸狀況以及網絡傳輸距離控制主動觸發的
頻率,提供系統通信的靈活性以及環境適應性,極大減少FPGA端的可靠協
議開發復雜度,下面結合圖4介紹該方法的流程:

當外圍應用服務器需要通過FPGA處理單元從磁盤陣列中獲取文件時,
首先將待讀取文件的文件名寫入到磁盤文件打開接口中的讀文件請求隊列
raid_create_request_fifo隊列中去,FPGA處理單元一旦檢測到該隊列為非空,
則通過構建讀文件請求信號向磁盤陣列發起讀取文件請求(操作碼0x23)。磁
盤陣列通過以太網口獲取該讀文件請求,并根據可靠通信幀首部獲取待讀取
文件的文件名稱以及相應的端口號,并在本地磁盤陣列查找文件,如果文件
存在則獲取文件大小,如果不存在,則將文件大小設置為0,然后構建包含文
件大小的讀文件請求應答(操作碼0x24),并將該讀文件請求應答通過以太網
傳到FPGA處理單元。FPGA處理單元接收到該讀文件請求應答后,根據其中
的文件大小能夠獲知該文件是否存在以及文件大小,然后將上述文件信息寫
入到磁盤文件打開接口的讀文件響應隊列Raid_create_request_status_fifo中。
在上述的傳輸通信過程中,若FPGA處理單元發送完讀文件請求以后超過一
定的時間沒有接收到磁盤陣列發起的讀文件請求應答,則重新發起本次讀文
件請求,如果連續一定次數(例如三次)都沒有應答,則終止本次讀文件請
求,并輸出一讀文件請求錯誤報警信息至讀文件響應隊列
Raid_create_request_status_fifo。

FPGA處理單元獲取需要讀取的文件大小以后,則通過DDR存儲位置接
口的內存空間分配請求隊列向外圍應用服務器申請存儲空間的起始地址。外
圍應用服務器接收到該信息后,向本地內存管理模塊申請連續存儲空間,并
將存儲空間的首地址傳輸到DDR存儲位置接口的內存空間地址FIFO中。
FPGA處理單元一旦檢測到內存空間地址FIFO非空,則從該FIFO中獲取DDR
起始存儲地址并構建以太幀格式(操作碼0x25)的FPGA存儲地址通知,接
著向磁盤陣列發起FPGA存儲地址通知。磁盤陣列接收到所述FPGA存儲地
址通知以后,向FPGA處理單元發送FPGA存儲地址通知應答,表示接收到
了對方發送的FPGA存儲地址通知。如果FPGA處理單元沒有接收到FPGA
存儲地址通知應答,則在預設的超時時間內重新發起FPGA存儲地址通知。
如果超過一定次數(例如三次)仍然沒有接收到FPGA存儲地址通知應答,
則終止發送本次FPGA存儲地址通知,并輸出一存儲地址通知錯誤報警信息
至讀文件響應隊列Raid_create_request_status_fifo。

完成上述操作以后,表示FPGA處理單元已經準備好了存儲空間,可以
進行文件內容的傳輸。磁盤陣列接著根據文件的大小以及構建的云服務器能
支持的以太網每幀能夠傳輸的最大長度(支持以太網的Jumbo幀),將文件內
容切分為多個包封裝放入發送隊列中,并在這些發送數據隊列中增加可靠通
信幀首部,以構建文件內容幀(操作碼0x27)。考慮到磁盤陣列上的Linux或
者其它操作系統對發送與接收模式的切換需要較長的時間,因此上述基于簡
單應答的可靠傳輸通信將會極大降低磁盤陣列與FPGA處理單元之間的吞吐
帶寬。考慮到云計算平臺應用的場景位于局域網內,網絡環境相對可靠,因
此磁盤陣列通過流水線的方式向FPGA處理單元發送一定數目內容幀后,再
通過主動觸發的方式讓FPGA處理單元匯報沒有接收到的幀(通過序列號的
方法進行維護),其實現方法可以通過將序列號的最高位設為1(低7位用作
收發雙方保序,最高位用來控制是否產生文件內容應答幀)使得FPGA處理
單元能夠產生文件內容應答幀(如圖4所示,一般每隔一定文件內容幀產生
一次文件內容應答幀,最后一幀文件內容幀必須產生文件內容應答幀)。

對于FPGA處理單元,其每發送一次讀文件請求,將該文件對應的當前
保序序號設置為0,每接收到一個對應的文件按內容幀后通過DMA(直接內
存存取)的方式將其中待讀取文件的相應數據寫入對應的存儲空間,并進行
保序處理,即,獲取該文件內容幀的發送序號并與FPGA處理單元的當前保
序序號進行比較,如果兩個序號相等,則將當前保序序號進行加1操作,并
將接收到的文件內容幀的可靠通信幀首部剝離出來,將其中需要傳輸的地址、
長度以及傳輸內容寫入到文件內容接口的Mem_file_content_fifo中。如果接收
到文件內容幀的發送序號與FPGA處理單元當前保序序號不一致,則丟棄接
收到的文件內容幀。如果接收到的文件內容幀的發送序號最高位為1,則將當
前保序序號以及文件內容幀的發送序號寫入到文件內容應答幀,并發送給磁
盤陣列。磁盤陣列接收到文件內容應答幀后,通過對比文件內容應答幀中的
FPGA處理單元保序序號與磁盤陣列的發送序號是否一致來判斷發送過程中
是否出現丟包,如果所述保序序號與磁盤陣列的發送序號相同,則表示傳送
完成;如果保序序號與磁盤陣列的發送序號不同,則保序序號與發送序號之
間序號對應的發送數據未能正確到達FPGA處理單元,并重新傳輸上述丟失
的文件內容幀。

當磁盤陣列收到所傳文件最后一幀的文件內容應答幀后,向FPGA處理
單元發送該文件的文件內容完成幀(操作碼0x30)。FPGA接收到文件內容完
成幀后,將會發送文件內容完成應答幀給磁盤陣列,并關閉此文件的讀操作,
釋放對應的端口資源。

以上所述為本發明的較佳實施方式,并非用于限制本發明的范圍,凡在
本發明精神和原則之內所做的任何修改、等同替換和改進等,均含于本發明
的保護范圍之內。本發明的保護范圍以本發明的權利要求為準。

關 鍵 詞:
一種 基于 FPGA 高速 讀取 磁盤陣列 文件 方法
  專利查詢網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
關于本文
本文標題:一種基于FPGA高速讀取磁盤陣列中文件的方法.pdf
鏈接地址:http://www.wwszu.club/p-6385980.html
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服客服 - 聯系我們

[email protected] 2017-2018 zhuanlichaxun.net網站版權所有
經營許可證編號:粵ICP備17046363號-1 
 


收起
展開
鬼佬大哥大