一種1394總線多通道流數據并行組包方法
【技術領域】
[0001]本發明屬于計算機硬件技術,涉及一種1394總線多通道流數據并行組包方法。
【背景技術】
[0002 ]標準的IEEE1394總線協議對消息的最大負載有限制,不能滿足軍事航空領域對大數據量網絡傳輸的要求,在標準協議的基礎上,定義了流數據用于傳輸大數據量的網絡消息,即在發送方將大數據包拆分為若干個小包(滿足1394總線最大負載要求)通過1394總線傳輸,接受法收到這些小包后再組合成一條完整的消息傳遞給應用軟件。同時為了滿足消息的處理效率,要求流數據接收方的組包操作由硬件電路完成,在目前技術中,沒有支持此類問題的解決方法和電路,本設計就此現狀,提出了 1394總線流數據組包方法,可以解決這類問題。
【發明內容】
[0003]本發明目的是提供一種1394總線多通道流數據并行組包方法,其解決了1394總線大數據量網絡傳輸中發送方拆包方法及實現問題,不額外占用處理器資源。
[0004]本發明的技術解決方案是:
[0005]—種1394總線多通道流數據并行組包方法,包括步驟如下:
[0006]步驟1:根據系統應用,驅動層在節點初始化時,將期望接收由哪些節點發送至本通道的流數據信息填入接收流數據配置表區;
[0007]步驟2:驅動層為期望接收到的該節點的流數據在主存中申請A、B兩個接收緩沖區,用于網絡層設備的流數據接收控制;
[0008]步驟3:硬件邏輯接收到數據包后,提取接收到消息的通道號;
[0009]步驟4:判斷接收到消息的通道號與當前調度配置表得到的期望接收消息通道號是否相同:如果都不相同,則直接丟棄并返回步驟3;如果相同,則轉入步驟5;
[0010]步驟5:將分包消息存入硬件邏輯內部對應數據接收緩存區;
[0011]步驟6:提取流數據分包負載中的心跳值,如果心跳值與上次接收到相同通道的流數據分包的心跳值不同,則轉入步驟7 ;否則,轉入步驟8;所述流數據分包負載中的心跳值用于標示同一通道號的同一條流數據;
[0012]步驟7:切換本條流數據在主存中的目標接收緩沖區,將該條流數據分包接收計數器清“O”,然后轉入步驟8;
[0013]步驟8:根據本條流數據分包負載中攜帶的分包序號信息(0、...、η、…、N),將其保存至主存當前消息“目標接收緩沖區Α/Β區起始地址+η*分包負載包長”中對應的位置;
[0014]步驟9:將該條流數據分包接收計數器增“I”;
[0015]步驟10:判斷該流數據分包接收計數器是否計滿,如不滿則繼續等待后續消息接收,如該計數器計滿則表示該條流數據已接收完成,完成標識置位。
[0016]上述步驟I中的接收流數據配置表區可填入多個不同的節點;上述步驟2中驅動層為期望接收到的不同節點的流數據在主存中均申請A、B兩個接收緩沖區;上述步驟3至步驟10可對不同節點的流數據進行并行處理。
[0017]本發明具有的有益效果:
[0018]1、本發明在流數據分包負載中設置心跳值,可用于標示同一通道號的同一條數據。如一條流數據在組包成功前,收到心跳值不同的新一條流數據,可直接切換保存緩沖區,直接丟棄組包失敗的流數據。
[0019]2、本發明由于采用上述1394總線流數據組包方法,流數據可由硬件邏輯完成組包操作,不額外占用處理器資源,可實現大數據量包通過1394總線傳輸。
【附圖說明】
[0020]圖1為本發明的方法流程圖。
【具體實施方式】
[0021]本發明1394總線多通道流數據并行組包方法,參照圖1示例,處理步驟如下:
[0022]步驟1:根據系統應用,驅動層在節點初始化時,將期望接收由哪些節點發送至本通道的流數據(由通道號標識)等信息填入接收流數據配置表區;
[0023]步驟2:驅動層為期望接收到的每條流數據在主存中申請A、B兩個接收緩沖區,用于網絡層設備的流數據接收控制;
[0024]步驟3:硬件邏輯接收到數據包后,提取接收到消息的通道號;
[0025]步驟4:判斷與當前調度配置表得到的期望接收消息通道號是否相同:如果都不相同,則直接丟棄并返回步驟3;如果相同,則轉入下步;
[0026]步驟5:將分包消息存入硬件邏輯內部對應數據接收緩存區;
[0027]步驟6:提取流數據分包負載中的心跳值,如果心跳值與上次接收到相同屬性(具有相同的通道號)分包的心跳值不同,表示此為同一通道的新一條流數據分包,轉入步驟7處理;否則,此為同一條流數據分包,轉入步驟8處理;
[0028]步驟7:切換本條流數據在主存中的目標接收緩沖區(第一條消息保存至緩沖區A,后續流數據在A/B緩沖區間切換),將該條流數據分包接收計數器清“O”,轉入步驟8處理;
[0029]步驟8:根據本條流數據分包負載中攜帶的分包序號信息(0、...、η、…、N),將其保存至主存當前消息“目標接收緩沖區Α/Β區起始地址+η*分包負載包長”中對應的位置;
[0030]步驟9:將該條流數據分包接收計數器增“I” ;
[0031]步驟10:判斷該流數據分包接收計數器是否計滿,如不滿則繼續等待后續消息接收,如該計數器計滿則表示該條流數據已接收完成,完成標識置位。
[0032]對于從不同節點發送至本通道的流數據分包組包操作,可采用上述的步驟3至步驟10并行處理,此時需要步驟I中的接收流數據配置表中填入多個不同的節點;步驟2中驅動層為期望接收到的不同節點的流數據在主存中均申請Α、Β兩個接收緩沖區。
【主權項】
1.一種1394總線多通道流數據并行組包方法,其特征在于:包括步驟如下: 步驟1:根據系統應用,驅動層在節點初始化時,將期望接收由哪些節點發送至本通道的流數據信息填入接收流數據配置表區; 步驟2:驅動層為期望接收到的該節點的流數據在主存中申請A、B兩個接收緩沖區,用于網絡層設備的流數據接收控制; 步驟3:硬件邏輯接收到數據包后,提取接收到消息的通道號; 步驟4:判斷接收到消息的通道號與當前調度配置表得到的期望接收消息通道號是否相同:如果都不相同,則直接丟棄并返回步驟3;如果相同,則轉入步驟5; 步驟5:將分包消息存入硬件邏輯內部對應數據接收緩存區; 步驟6:提取流數據分包負載中的心跳值,如果心跳值與上次接收到相同通道的流數據分包的心跳值不同,則轉入步驟7;否則,轉入步驟8;所述流數據分包負載中的心跳值用于標示同一通道號的同一條流數據; 步驟7:切換本條流數據在主存中的目標接收緩沖區,將該條流數據分包接收計數器清“O”,然后轉入步驟8; 步驟8:根據本條流數據分包負載中攜帶的分包序號信息(O、...、n、…、N),將其保存至主存當前消息“目標接收緩沖區A/B區起始地址+η*分包負載包長”中對應的位置; 步驟9:將該條流數據分包接收計數器增“I” ; 步驟10:判斷該流數據分包接收計數器是否計滿,如不滿則繼續等待后續消息接收,如該計數器計滿則表示該條流數據已接收完成,完成標識置位。2.根據權利要求1所述的1394總線多通道流數據并行組包方法,其特征在于:所述步驟I中的接收流數據配置表區可填入多個不同的節點;所述步驟2中驅動層為期望接收到的不同節點的流數據在主存中均申請Α、Β兩個接收緩沖區;所述步驟3至步驟10可對不同節點的流數據進行并行處理。
【專利摘要】本發明涉及一種1394總線多通道流數據并行組包方法,由多個節點并行發送至本節點的多路流數據可由硬件邏輯并行完成組包操作,不額外占用處理器資源,可實現多路流數據包并行接收。另外,本發明在流數據分包負載中設置心跳值,可用于標示同一通道號的同一條數據。如一條流數據在組包成功前,收到心跳值不同的新一條流數據,可直接切換保存緩沖區,直接丟棄組包失敗的流數據。
【IPC分類】G06F13/42
【公開號】CN105512079
【申請號】CN201510931308
【發明人】王宣明, 田澤, 楊峰, 王綺卉, 趙彬
【申請人】中國航空工業集團公司西安航空計算技術研究所
【公開日】2016年4月20日
【申請日】2015年12月12日