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