一種支持并行運行算法的數(shù)據(jù)處理方法及裝置制造方法
【專利摘要】本發(fā)明提供了一種支持并行運行算法的數(shù)據(jù)處理方法及裝置;所述方法包括:接收算法處理進程對待處理的數(shù)據(jù)拆分而得到的作業(yè)包,每個作業(yè)包的包頭中包括處理所述數(shù)據(jù)的命令字、所使用的算法的標(biāo)識及該算法的基礎(chǔ)數(shù)據(jù)標(biāo)識;算法分轉(zhuǎn)模塊根據(jù)作業(yè)包的包頭中算法的標(biāo)識將作業(yè)包分發(fā)給該算法對應(yīng)的算法處理模塊;一個算法對應(yīng)一個或多個能并行的算法處理模塊;算法處理模塊根據(jù)作業(yè)包的包頭中的基礎(chǔ)數(shù)據(jù)標(biāo)識獲取相應(yīng)的基礎(chǔ)數(shù)據(jù),根據(jù)該作業(yè)包的包頭中的命令字處理該作業(yè)包中的數(shù)據(jù);數(shù)據(jù)反饋模塊將處理后的作業(yè)包返回給相應(yīng)的算法應(yīng)用進程。本發(fā)明在處理數(shù)據(jù)時能夠進行算法的并行運算。
【專利說明】一種支持并行運行算法的數(shù)據(jù)處理方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機領(lǐng)域,尤其涉及一種支持并行運行算法的數(shù)據(jù)處理方法及裝置。
【背景技術(shù)】
[0002]隨著計算機網(wǎng)絡(luò)的發(fā)展以及互聯(lián)網(wǎng)應(yīng)用、移動通信的普及,全球經(jīng)濟一體化進程的加快和社會經(jīng)濟及網(wǎng)絡(luò)經(jīng)濟的快速發(fā)展,特別是云服務(wù)、電子商務(wù)、網(wǎng)上銀行、電子支付等新型服務(wù)模式不斷涌現(xiàn),使各類客戶的經(jīng)濟活動方式及其地域范圍發(fā)生了巨大的變化,許多業(yè)務(wù)系統(tǒng)由原來的分布式處理方式轉(zhuǎn)變?yōu)閿?shù)據(jù)大集中處理的方式,這帶來了用戶數(shù)和業(yè)務(wù)的海量增長,以及業(yè)務(wù)的瞬時處理特點,要求相關(guān)信息系統(tǒng)配備高性能、高并發(fā)的支持多算法的簽名驗簽等密碼服務(wù)器,這些服務(wù)器將廣泛應(yīng)用在飛速發(fā)展的網(wǎng)上購物、手機銀行、移動支付等金融業(yè)務(wù)中,滿足“搶拍”或“秒殺”交易等的安全需求。
[0003]為了保護數(shù)據(jù)安全,一般采用多種密碼算法對數(shù)據(jù)進行加解密。但是,隨著電子支付、網(wǎng)上銀行等業(yè)務(wù)的快速發(fā)展,各類應(yīng)用系統(tǒng)和個人用戶數(shù)量飛速增長,進行數(shù)據(jù)加解密、數(shù)字簽名和驗證簽名的應(yīng)用請求數(shù)量非常巨大。目前的信息系統(tǒng)和設(shè)備存在不能適應(yīng)高速業(yè)務(wù)需求的問題,這將使信息系統(tǒng)發(fā)生運轉(zhuǎn)困難、業(yè)務(wù)阻塞等嚴(yán)重問題。
【發(fā)明內(nèi)容】
[0004]本發(fā)明要解決的技術(shù)問題是處理數(shù)據(jù)時如何進行算法的并行運算。
[0005]為了解決上述問題,本發(fā)明提供了一種支持并行運行算法的數(shù)據(jù)處理方法,包括:
[0006]接收算法處理進程對待處理的數(shù)據(jù)拆分而得到的作業(yè)包,每個作業(yè)包的包頭中包括處理所述數(shù)據(jù)的命令字、所使用的算法的標(biāo)識及該算法的基礎(chǔ)數(shù)據(jù)標(biāo)識;
[0007]算法分轉(zhuǎn)模塊根據(jù)作業(yè)包的包頭中算法的標(biāo)識將作業(yè)包分發(fā)給該算法對應(yīng)的算法處理模塊;一個算法對應(yīng)一個或多個能并行的算法處理模塊;
[0008]算法處理模塊根據(jù)作業(yè)包的包頭中的基礎(chǔ)數(shù)據(jù)標(biāo)識獲取相應(yīng)的基礎(chǔ)數(shù)據(jù),根據(jù)該作業(yè)包的包頭中的命令字處理該作業(yè)包中的數(shù)據(jù);
[0009]數(shù)據(jù)反饋模塊將處理后的作業(yè)包返回給相應(yīng)的算法應(yīng)用進程。
[0010]可選地,算法處理模塊根據(jù)作業(yè)包的包頭中的命令字處理該作業(yè)包中的數(shù)據(jù)的步驟包括:
[0011]將作業(yè)包的包頭中命令字對應(yīng)的操作解析為多個處理子命令;獲取處理本作業(yè)包所需要的算法狀態(tài);將該作業(yè)包中的數(shù)據(jù)進行分組,每個分組中數(shù)據(jù)的長度小于或等于本算法處理模塊一次所能處理的數(shù)據(jù)量;
[0012]將該作業(yè)包的包頭作為一個數(shù)據(jù)項放入本算法處理模塊對應(yīng)的作業(yè)包同步隊列,將一個作業(yè)包各分組的數(shù)據(jù)、各處理子命令、算法狀態(tài)、及獲取的基礎(chǔ)數(shù)據(jù)作為一個數(shù)據(jù)項放入本算法處理模塊對應(yīng)的算法運算隊列;[0013]對算法運算隊列中的各數(shù)據(jù)項依次按照本算法處理模塊對應(yīng)的算法進行運算,運算完一個數(shù)據(jù)項中所有分組后,將該數(shù)據(jù)項的運算結(jié)果放入本算法處理模塊對應(yīng)的處理后數(shù)據(jù)隊列;
[0014]從所述作業(yè)包同步隊列和處理后數(shù)據(jù)隊列中各取出一個數(shù)據(jù)項組合為作業(yè)包,放入本算法處理模塊對應(yīng)的處理后作業(yè)包隊列;
[0015]所述作業(yè)包同步隊列、算法運算隊列及處理后數(shù)據(jù)隊列均為先進先出隊列。
[0016]可選地,每個作業(yè)包的包頭中還包括上行數(shù)據(jù)存儲區(qū)空間標(biāo)識;所述上行數(shù)據(jù)存儲區(qū)空間與算法應(yīng)用進程一一對應(yīng);
[0017]所述數(shù)據(jù)反饋模塊將處理后的作業(yè)包返回給相應(yīng)的算法應(yīng)用進程的步驟包括:
[0018]所述數(shù)據(jù)反饋模塊輪詢各個算法處理模塊的處理后作業(yè)包隊列,若處理后作業(yè)包隊列中有作業(yè)包,則取出該作業(yè)包,根據(jù)該作業(yè)包的包頭中的上行數(shù)據(jù)存儲區(qū)空間標(biāo)識,將作業(yè)包復(fù)制到相應(yīng)的上行數(shù)據(jù)存儲區(qū)空間。
[0019]可選地,接收算法處理進程對待處理的數(shù)據(jù)拆分而得到的作業(yè)包的步驟包括:
[0020]接口模塊輪詢各個下行數(shù)據(jù)存儲區(qū)空間中是否有作業(yè)包,如果有作業(yè)包且本接口模塊對應(yīng)的分轉(zhuǎn)隊列有空間,則將所述下行數(shù)據(jù)存儲區(qū)空間中的作業(yè)包復(fù)制到分轉(zhuǎn)隊列中;每個下行數(shù)據(jù)存儲區(qū)空間對應(yīng)于一個或多個算法應(yīng)用進程,每個算法應(yīng)用進程唯一對應(yīng)于一個數(shù)據(jù)存儲區(qū)空間;所述下行數(shù)據(jù)存儲區(qū)空間用于保存所對應(yīng)的算法應(yīng)用進程拆分好的作業(yè)包;所述分轉(zhuǎn)隊列與所述接口模塊一一對應(yīng),與所述算法分轉(zhuǎn)模塊也一一對應(yīng)。[0021 ] 可選地,所述算法的標(biāo)識包括:
[0022]算法類型及地址;
[0023]所接收的作業(yè)包包頭中的算法的標(biāo)識中,僅有算法類型;
[0024]算法分轉(zhuǎn)模塊根據(jù)作業(yè)包的包頭中算法的標(biāo)識將作業(yè)包分發(fā)給相應(yīng)的算法處理模塊的步驟包括:
[0025]算法分轉(zhuǎn)模塊查詢本算法分轉(zhuǎn)模塊對應(yīng)的分轉(zhuǎn)隊列是否為空;如果分轉(zhuǎn)隊列中有作業(yè)包則讀取該作業(yè)包的包頭,根據(jù)包頭中算法的標(biāo)識中的算法類型,在相應(yīng)類型的算法對應(yīng)的算法處理模塊中,依據(jù)預(yù)定策略選擇一個算法處理模塊,將所選擇算法處理模塊的地址填寫在該作業(yè)包的包頭中算法的標(biāo)識里,并將作業(yè)包復(fù)制到相應(yīng)算法處理模塊對應(yīng)的算法預(yù)處理隊列;
[0026]所述算法預(yù)處理隊列與所述算法處理模塊一一對應(yīng);所述算法分轉(zhuǎn)模塊包括一個或多個;各算法分轉(zhuǎn)模塊分別對應(yīng)一個或多個算法預(yù)處理隊列;任意兩個算法分轉(zhuǎn)模塊對應(yīng)的算法預(yù)處理隊列彼此不同,或至少部分相同。
[0027]本發(fā)明還提供了一種支持并行運行算法的數(shù)據(jù)處理裝置,包括:
[0028]接口模塊,用于接收算法處理進程對待處理的數(shù)據(jù)拆分而得到的作業(yè)包,每個作業(yè)包的包頭中包括處理所述數(shù)據(jù)的命令字、所使用的算法的標(biāo)識及該算法的基礎(chǔ)數(shù)據(jù)標(biāo)識;
[0029]算法分轉(zhuǎn)模塊,用于根據(jù)作業(yè)包的包頭中算法的標(biāo)識,將作業(yè)包分發(fā)給該算法對應(yīng)的算法處理模塊;一個算法對應(yīng)一個或多個能并行的算法處理模塊;
[0030]算法處理模塊,用于根據(jù)作業(yè)包的包頭中的基礎(chǔ)數(shù)據(jù)標(biāo)識獲取相應(yīng)的基礎(chǔ)數(shù)據(jù),根據(jù)該作業(yè)包的包頭中的命令字處理該作業(yè)包中的數(shù)據(jù);[0031]數(shù)據(jù)反饋模塊,用于將處理后的作業(yè)包返回給相應(yīng)的算法應(yīng)用進程。
[0032]可選地,所述算法處理模塊包括:
[0033]預(yù)處理單元,用于將作業(yè)包的包頭中命令字對應(yīng)的操作解析為多個處理子命令;獲取處理本作業(yè)包所需要的算法狀態(tài);將該作業(yè)包中的數(shù)據(jù)進行分組,每個分組中數(shù)據(jù)的長度小于或等于本算法處理模塊一次所能處理的數(shù)據(jù)量;將該作業(yè)包的包頭作為一個數(shù)據(jù)項放入本算法處理模塊對應(yīng)的作業(yè)包同步隊列,將一個作業(yè)包各分組的數(shù)據(jù)、各處理子命令、算法狀態(tài)、及獲取的基礎(chǔ)數(shù)據(jù)作為一個數(shù)據(jù)項放入本算法處理模塊對應(yīng)的算法運算隊列;
[0034]運算單元,用于對算法運算隊列中的各數(shù)據(jù)項依次按照本算法處理模塊對應(yīng)的算法進行運算,運算一個數(shù)據(jù)項中所有分組后,將該數(shù)據(jù)項的運算結(jié)果放入本算法處理模塊對應(yīng)的處理后數(shù)據(jù)隊列;
[0035]作業(yè)包重組單元,用于從所述作業(yè)包同步隊列和處理后數(shù)據(jù)隊列中各取出一個數(shù)據(jù)項,組合為作業(yè)包,放入本算法處理模塊對應(yīng)的處理后作業(yè)包隊列;
[0036]所述作業(yè)包同步隊列、算法運算隊列及處理后數(shù)據(jù)隊列均為先進先出隊列。
[0037]可選地,每個作業(yè)包的包頭中還包括上行數(shù)據(jù)存儲區(qū)空間標(biāo)識;所述上行數(shù)據(jù)存儲區(qū)空間與算法應(yīng)用進程一一對應(yīng);
[0038]所述數(shù)據(jù)反饋模塊將處理后的作業(yè)包返回給相應(yīng)的算法應(yīng)用進程是指:
[0039]所述數(shù)據(jù)反饋模塊輪詢各個算法處理模塊的處理后作業(yè)包隊列,若處理后作業(yè)包隊列中有作業(yè)包,則取出該作業(yè)包,根據(jù)該作業(yè)包的包頭中的上行數(shù)據(jù)存儲區(qū)空間標(biāo)識,將作業(yè)包復(fù)制到相應(yīng)的上行數(shù)據(jù)存儲區(qū)空間。
[0040]可選地,接口模塊接收算法處理進程對待處理的數(shù)據(jù)拆分而得到的作業(yè)包是指:
[0041]接口模塊輪詢所對應(yīng)的下行數(shù)據(jù)存儲區(qū)中各個下行數(shù)據(jù)存儲區(qū)空間中是否有作業(yè)包,如果有作業(yè)包且本算法分轉(zhuǎn)模塊對應(yīng)的分轉(zhuǎn)隊列有空間,則將所述下行數(shù)據(jù)存儲區(qū)空間中的作業(yè)包復(fù)制到分轉(zhuǎn)隊列中;每個下行數(shù)據(jù)存儲區(qū)空間對應(yīng)于一個或多個算法應(yīng)用進程,每個算法應(yīng)用進程唯一對應(yīng)于一個數(shù)據(jù)存儲區(qū)空間;所述下行數(shù)據(jù)存儲區(qū)空間用于保存所對應(yīng)的算法應(yīng)用進程拆分好的作業(yè)包;所述分轉(zhuǎn)隊列與所述接口模塊一一對應(yīng),與所述算法分轉(zhuǎn)模塊也一一對應(yīng);所述接口模塊與所述下行數(shù)據(jù)存儲區(qū)一一對應(yīng)。
[0042]可選地,所述算法的標(biāo)識包括:
[0043]算法類型及地址;
[0044]接口模塊所接收的作業(yè)包包頭中的算法的標(biāo)識中,僅有算法類型;
[0045]算法分轉(zhuǎn)模塊根據(jù)作業(yè)包的包頭中算法的標(biāo)識將作業(yè)包分發(fā)給相應(yīng)的算法處理模塊是指:
[0046]算法分轉(zhuǎn)模塊查詢本算法分轉(zhuǎn)模塊對應(yīng)的分轉(zhuǎn)隊列是否為空;如果分轉(zhuǎn)隊列中有作業(yè)包則讀取該作業(yè)包的包頭,根據(jù)包頭中算法的標(biāo)識中的算法類型,在相應(yīng)類型的算法對應(yīng)的算法處理模塊中,依據(jù)預(yù)定策略選擇一個算法處理模塊,將所選擇算法處理模塊的地址填寫在該作業(yè)包的包頭中算法的標(biāo)識里,并將作業(yè)包復(fù)制到相應(yīng)算法處理模塊對應(yīng)的算法預(yù)處理隊列;
[0047]所述算法預(yù)處理隊列與所述算法處理模塊一一對應(yīng);所述算法分轉(zhuǎn)模塊包括一個或多個;各算法分轉(zhuǎn)模塊分別對應(yīng)一個或多個算法預(yù)處理隊列;任意兩個算法分轉(zhuǎn)模塊對應(yīng)的算法預(yù)處理隊列彼此不同,或至少部分相同。
[0048]本發(fā)明的技術(shù)方案能夠在處理數(shù)據(jù)時實現(xiàn)多種算法的高效并行運算,可應(yīng)用于多芯片或多IP核實現(xiàn)多種算法并行運算、單芯片實現(xiàn)多算法的并行運算、單一算法并行運算、單一算法多IP核運算、多信道的通信編碼算法并行執(zhí)行等應(yīng)用場景,可滿足大數(shù)據(jù)中心的海量用戶和瞬時的海量業(yè)務(wù)需求,適應(yīng)“搶拍”或“秒殺”交易等為代表的云服務(wù)模式而產(chǎn)生的海量操作、大規(guī)模的并發(fā)操作,提高處理性能。
【專利附圖】
【附圖說明】
[0049]圖1為實施例一的數(shù)據(jù)處理方法的流程示意圖;
[0050]圖2為實施例二中算法處理模塊的示意框圖;
[0051]圖3為實施例二中第一個例子的系統(tǒng)示意框圖;
[0052]圖4為實施例二中第二個例子的系統(tǒng)示意框圖;
[0053]圖5為實施例二中第三個例子的系統(tǒng)示意框圖。
【具體實施方式】
[0054]下面將結(jié)合附圖及實施例對本發(fā)明的技術(shù)方案進行更詳細(xì)的說明。所舉實例只用于解釋本發(fā)明,并非用于限定本發(fā)明的范圍。
[0055]需要說明的是,如果不沖突,本發(fā)明實施例以及實施例中的各個特征可以相互結(jié)合,均在本發(fā)明的保護范圍之內(nèi)。另外,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。
[0056]實施例一,一種支持并行運行算法的數(shù)據(jù)處理方法,如圖1所示,包括:
[0057]接收算法處理進程對待處理的數(shù)據(jù)拆分而得到的作業(yè)包,每個作業(yè)包的包頭中包括處理所述數(shù)據(jù)的命令字、所使用的算法的標(biāo)識及該算法的基礎(chǔ)數(shù)據(jù)標(biāo)識;
[0058]算法分轉(zhuǎn)模塊根據(jù)作業(yè)包的包頭中算法的標(biāo)識將作業(yè)包分發(fā)給該算法對應(yīng)的算法處理模塊;一個算法對應(yīng)一個或多個能并行的算法處理模塊;
[0059]算法處理模塊根據(jù)作業(yè)包的包頭中的基礎(chǔ)數(shù)據(jù)標(biāo)識獲取相應(yīng)的基礎(chǔ)數(shù)據(jù),根據(jù)該作業(yè)包的包頭中的命令字處理該作業(yè)包中的數(shù)據(jù);
[0060]數(shù)據(jù)反饋模塊將處理后的作業(yè)包返回給相應(yīng)的算法應(yīng)用進程。
[0061]本實施例中,首先算法應(yīng)用服務(wù)器中的各算法應(yīng)用進程會將待處理的數(shù)據(jù)拆分為多個作業(yè)包,并在每個作業(yè)包的包頭中攜帶處理所述數(shù)據(jù)的命令字、所使用的算法的標(biāo)識及該算法的基礎(chǔ)數(shù)據(jù)標(biāo)識。所述作業(yè)包可包含固定長度的包頭和可變長度的數(shù)據(jù)區(qū),作業(yè)包的包頭采用固定長度,如定義為16字節(jié);當(dāng)本實施例的方法應(yīng)用在不同系統(tǒng)中時,可以由系統(tǒng)設(shè)計者自定義包頭的長度。作業(yè)包的數(shù)據(jù)區(qū)長度采用固定長度范圍,即數(shù)據(jù)區(qū)的長度有最小長度和最大長度限制,如128?2K字節(jié)內(nèi)的任意值;可以設(shè)置成算法處理模塊一次性處理數(shù)據(jù)分組長度的整數(shù)倍,不足的數(shù)據(jù)可以由算法應(yīng)用進程以冗余字節(jié)補足。算法應(yīng)用進程還可以在作業(yè)包的包頭中攜帶作業(yè)包中數(shù)據(jù)區(qū)的長度。
[0062]所述算法的基礎(chǔ)數(shù)據(jù)標(biāo)識,是指在完成本次算法操作所需要的基本數(shù)據(jù)或者基本數(shù)據(jù)所存放的內(nèi)部地址;所述命令字對應(yīng)于在算法處理模塊中完成的一次算法操作;所述算法處理模塊可以與應(yīng)用本實施例方法的系統(tǒng)中的算法核一一對應(yīng)。[0063]其中基礎(chǔ)數(shù)據(jù)標(biāo)識的實現(xiàn)形式總體包括兩大類的實現(xiàn)方法:
[0064]第一類:直接將所有基礎(chǔ)數(shù)據(jù)直接寫入作業(yè)包內(nèi),具體應(yīng)用時根據(jù)具體系統(tǒng)進行數(shù)據(jù)結(jié)構(gòu)設(shè)計,如加密操作,可以將初始向量、加密的數(shù)據(jù)以及加密后數(shù)據(jù)的地址等按數(shù)據(jù)結(jié)構(gòu)的方式寫入作業(yè)包,算法模塊根據(jù)數(shù)據(jù)結(jié)構(gòu)和目前程序執(zhí)行的狀態(tài)直接在作業(yè)包中讀?。?br>
[0065]第二類:作業(yè)包中只包含基礎(chǔ)數(shù)據(jù)在算法處理模塊中的地址偏移和要進行處理的數(shù)據(jù),算法處理模塊根據(jù)相應(yīng)的數(shù)據(jù)結(jié)構(gòu)定義,從作業(yè)包中獲取相應(yīng)數(shù)據(jù)的地址,在算法處理模塊的存儲空間中獲取具體的數(shù)據(jù)。
[0066]所述算法處理模塊各實現(xiàn)一種類型的算法;所有的算法處理模塊均可以并行、獨立運行。
[0067]本實施例的一種實施方式中,算法處理模塊根據(jù)作業(yè)包的包頭中的命令字處理該作業(yè)包中的數(shù)據(jù)的步驟具體可以包括:
[0068]將作業(yè)包的包頭中命令字對應(yīng)的操作解析為多個處理子命令,比如將加密操作解析成密鑰初始化、密鑰變換、取數(shù)據(jù)、數(shù)據(jù)處理、獲取結(jié)果;獲取處理本作業(yè)包所需要的算法狀態(tài);將該作業(yè)包中的數(shù)據(jù)分組,每個分組中數(shù)據(jù)的長度小于或等于本算法處理模塊一次所能處理的數(shù)據(jù)量;
[0069]將該作業(yè)包的包頭作為一個數(shù)據(jù)項放入本算法處理模塊對應(yīng)的作業(yè)包同步隊列,將一個作業(yè)包各分組的數(shù)據(jù)、各處理子命令、算法狀態(tài)、及獲取的基礎(chǔ)數(shù)據(jù)作為一個數(shù)據(jù)項放入本算法處理模塊對應(yīng)的算法運算隊列;
[0070]對算法運算隊列中的各數(shù)據(jù)項依次按照本算法處理模塊對應(yīng)的算法進行運算,運算完一個數(shù)據(jù)項中所有分組后,將該數(shù)據(jù)項的運算結(jié)果放入本算法處理模塊對應(yīng)的處理后數(shù)據(jù)隊列;
[0071]從所述作業(yè)包同步隊列和處理后數(shù)據(jù)隊列中各取出一個數(shù)據(jù)項(作業(yè)包同步隊列、算法運算隊列及處理后數(shù)據(jù)隊列均為先進先出隊列,因此從兩個隊列取出的數(shù)據(jù)項必然屬于同一個作業(yè)包),組合為作業(yè)包,放入本算法處理模塊對應(yīng)的處理后作業(yè)包隊列。
[0072]本實施方式中,所述算法運算隊列、作業(yè)包同步隊列、處理后數(shù)據(jù)隊列和處理后作業(yè)包隊列均與算法處理模塊一一對應(yīng)。子命令、算法狀態(tài)、基礎(chǔ)數(shù)據(jù)、分組后的數(shù)據(jù)可以線性方式組織,也可將分為多個并行的隊列進行組織使用。
[0073]該實施方式的一個備選方案中,所述方法還可以包括:
[0074]算法應(yīng)用進程在每個作業(yè)包的包頭中攜帶本算法應(yīng)用進程對應(yīng)的上行數(shù)據(jù)存儲區(qū)空間標(biāo)識;
[0075]所述數(shù)據(jù)反饋模塊將處理后的作業(yè)包返回給相應(yīng)的算法應(yīng)用進程的步驟具體可以包括:
[0076]所述數(shù)據(jù)反饋模塊輪詢各個算法處理模塊的處理后作業(yè)包隊列,若處理后作業(yè)包隊列中有作業(yè)包,則取出該作業(yè)包,根據(jù)該作業(yè)包包頭中的上行數(shù)據(jù)存儲區(qū)空間標(biāo)識,將作業(yè)包復(fù)制到相應(yīng)的上行數(shù)據(jù)存儲區(qū)空間,從而完成作業(yè)包的反饋。
[0077]本實施方式中,所述上行數(shù)據(jù)存儲區(qū)是算法應(yīng)用進程對應(yīng)的數(shù)據(jù)返回通道,一個上行數(shù)據(jù)存儲區(qū)中可以有一個或多個上行數(shù)據(jù)存儲區(qū)空間;算法應(yīng)用進程可以從對應(yīng)的上行數(shù)據(jù)存儲區(qū)空間中獲取處理后的作業(yè)包。上行數(shù)據(jù)存儲區(qū)空間的個數(shù)為固定值且標(biāo)識固定,與算法應(yīng)用進程的個數(shù)相同;算法應(yīng)用進程對上行數(shù)據(jù)存儲區(qū)空間的讀取采用一一對應(yīng)的方式進行,任何其他算法應(yīng)用進程不能讀取非該算法應(yīng)用進程對應(yīng)的上行數(shù)據(jù)存儲區(qū)空間的數(shù)據(jù)。
[0078]本實施例的一種實施方式中,接收算法處理進程對待處理的數(shù)據(jù)拆分而得到的作業(yè)包的步驟具體可以包括:
[0079]接口模塊輪詢各個下行數(shù)據(jù)存儲區(qū)空間中是否有作業(yè)包,如果有作業(yè)包且本接口模塊對應(yīng)的分轉(zhuǎn)隊列有空間,則將所述下行數(shù)據(jù)存儲區(qū)空間中的作業(yè)包復(fù)制到分轉(zhuǎn)隊列中;每個下行數(shù)據(jù)存儲區(qū)空間對應(yīng)于一個或多個算法應(yīng)用進程,每個算法應(yīng)用進程唯一對應(yīng)于一個數(shù)據(jù)存儲區(qū)空間;所述下行數(shù)據(jù)存儲區(qū)空間用于保存所對應(yīng)的算法應(yīng)用進程拆分好的作業(yè)包;所述分轉(zhuǎn)隊列與所述接口模塊一一對應(yīng),與所述算法分轉(zhuǎn)模塊也一一對應(yīng)。
[0080]在復(fù)制時可以但不限于通過DMA (直接內(nèi)存訪問)方式復(fù)制。
[0081]一個下行數(shù)據(jù)存儲區(qū)中包括多個下行數(shù)據(jù)存儲區(qū)空間;各下行數(shù)據(jù)存儲區(qū)中下行數(shù)據(jù)存儲區(qū)空間的個數(shù)η由應(yīng)用該方法的具體系統(tǒng)確定,可以為一個,也可以為多個。所述下行數(shù)據(jù)存儲區(qū)可以有一個或多個,所述接口模塊也可以有一個或多個,與所述下行數(shù)據(jù)存儲區(qū)一一對應(yīng),用于輪詢所對應(yīng)的下行數(shù)據(jù)存儲區(qū)中各下行數(shù)據(jù)存儲區(qū)空間中是否有作業(yè)包。
[0082]算法應(yīng)用進程拆分好作業(yè)包后將其寫入本算法應(yīng)用進程對應(yīng)的下行數(shù)據(jù)存儲區(qū)空間中。作業(yè)包寫入下行數(shù)據(jù)存儲區(qū)空間的操作采用阻塞的方式,以保證作業(yè)包寫入的正確性和完整性。
[0083]所述分轉(zhuǎn)隊列可以為一個或多個;如果存在多個分轉(zhuǎn)隊列,則每個分轉(zhuǎn)隊列固定對應(yīng)一個算法分轉(zhuǎn)模塊,且固定對應(yīng)一個接口模塊。
[0084]該實施方式的一種備選方案中,所述算法的標(biāo)識包括:
[0085]算法類型及地址;
[0086]所接收的作業(yè)包包頭中的算法的標(biāo)識中,僅有算法類型;
[0087]算法分轉(zhuǎn)模塊根據(jù)作業(yè)包的包頭中算法的標(biāo)識將作業(yè)包分發(fā)給相應(yīng)的算法處理模塊的步驟具體可以包括:
[0088]算法分轉(zhuǎn)模塊查詢本算法分轉(zhuǎn)模塊對應(yīng)的分轉(zhuǎn)隊列是否為空;如果分轉(zhuǎn)隊列中有作業(yè)包則讀取該作業(yè)包的包頭,根據(jù)包頭中算法的標(biāo)識中的算法類型,在相應(yīng)類型的算法對應(yīng)的算法處理模塊中,依據(jù)預(yù)定策略選擇一個算法處理模塊,將所選擇算法處理模塊的地址填寫在該作業(yè)包的包頭中算法的標(biāo)識里,并將作業(yè)包復(fù)制到相應(yīng)算法處理模塊對應(yīng)的算法預(yù)處理隊列;
[0089]所述算法預(yù)處理隊列與所述算法處理模塊一一對應(yīng);所述算法分轉(zhuǎn)模塊包括一個或多個;各算法分轉(zhuǎn)模塊分別對應(yīng)一個或多個算法預(yù)處理隊列;任意兩個算法分轉(zhuǎn)模塊對應(yīng)的算法預(yù)處理隊列彼此不同,或至少部分相同。
[0090]比如包括算法分轉(zhuǎn)模塊I?4,算法預(yù)處理隊列I?20 ;假設(shè)算法分轉(zhuǎn)模塊I對應(yīng)算法預(yù)處理隊列I?10,算法分轉(zhuǎn)模塊2對應(yīng)算法預(yù)處理隊列11?20,即:算法分轉(zhuǎn)模塊I和算法分轉(zhuǎn)模塊2對應(yīng)的算法預(yù)處理隊列彼此不同;假設(shè)算法分轉(zhuǎn)模塊3也對應(yīng)于算法預(yù)處理隊列I?10,即:算法分轉(zhuǎn)模塊I和算法分轉(zhuǎn)模塊3對應(yīng)的算法預(yù)處理隊列全部相同;假設(shè)算法分轉(zhuǎn)模塊4對應(yīng)于算法預(yù)處理隊列6?15,則算法分轉(zhuǎn)模塊I/算法分轉(zhuǎn)模塊2/算法分轉(zhuǎn)模塊3和算法分轉(zhuǎn)模塊4對應(yīng)的算法預(yù)處理隊列均是部分相同,其中算法分轉(zhuǎn)模塊1、3中對應(yīng)的算法預(yù)處理隊列中的6?10與算法分轉(zhuǎn)模塊4中的部分算法預(yù)處理隊列相同,而算法分轉(zhuǎn)模塊2中對應(yīng)的算法預(yù)處理隊列中的11?15與算法分轉(zhuǎn)模塊4中的部分算法預(yù)處理隊列相同。實現(xiàn)時可任意組合算法分轉(zhuǎn)模塊和算法預(yù)處理隊列之間的對應(yīng)關(guān)系。
[0091]由于算法預(yù)處理隊列和算法處理模塊是一一對應(yīng)的,因此這也就意味著算法分轉(zhuǎn)模塊和算法處理模塊之間可以交叉管理,也可以互相不交叉進行管理。
[0092]所述預(yù)定策略可以但不限于為算法處理模塊的均衡策略;算法預(yù)處理隊列的個數(shù)固定,與算法處理模塊的個數(shù)相同且一一對應(yīng)。算法處理模塊輪詢對應(yīng)的算法預(yù)處理隊列來獲取待處理的作業(yè)包。
[0093]該備選方案中,算法處理過程采用三級流水方式緩沖,所有環(huán)節(jié)之間均可以采用流水方式并行處理。
[0094]每一類型的算法可以對應(yīng)一個或多個算法處理模塊,每個算法處理模塊都可以獨立完成該類型算法的處理。每一個算法處理模塊所對應(yīng)的算法的標(biāo)識包括算法類型和地址;不同的算法類型之間,地址可以重復(fù),但一個算法類型中地址是唯一的,比如類型A中的地址包括1、2,類型B中的地址包括1、2、3,因此所得到的算法的標(biāo)識能夠唯一代表一個算法處理模塊。這樣可以為各算法類型配置多個算法處理模塊,而且當(dāng)算法處理模塊較多時,不需要太多字節(jié)就能夠唯一表示一個算法處理模塊。本實施方式中,算法應(yīng)用進程拆分作業(yè)包后僅填寫算法的標(biāo)識中的算法類型;在其它實施方式中,算法的標(biāo)識中的地址也可以由算法應(yīng)用進程在拆分后填寫。
[0095]當(dāng)作業(yè)包的包頭中包括數(shù)據(jù)區(qū)的長度時,在將作業(yè)包復(fù)制到算法預(yù)處理隊列的步驟中,可以是根據(jù)作業(yè)包的包頭中的作業(yè)包長度字段將相應(yīng)長度的數(shù)據(jù)復(fù)制到該算法預(yù)處理隊列。
[0096]本實施例的一種實施方式中,所述方法還可以包括:
[0097]算法應(yīng)用進程在每個作業(yè)包的包頭中攜帶包序列號,所述包序列號用于表示本作業(yè)包在拆分前的數(shù)據(jù)中所處的位置;
[0098]所述算法應(yīng)用進程獲取處理后的作業(yè)包后,根據(jù)作業(yè)包的包頭中的包序列號將作業(yè)包重組為數(shù)據(jù)。
[0099]算法應(yīng)用進程還可以在作業(yè)包的包頭中攜帶本應(yīng)用進程的標(biāo)識;所述包序列號和應(yīng)用進程的相關(guān)標(biāo)識在算法處理過程中可以使用也可以不進行使用,但不進行任何修改,是提供給應(yīng)用進程對返回的處理完成后的數(shù)據(jù)進行調(diào)度和操作的相關(guān)信息。
[0100]實施例二、一種支持并行運行算法的數(shù)據(jù)處理裝置,包括:
[0101]接口模塊,用于接收算法處理進程對待處理的數(shù)據(jù)拆分而得到的作業(yè)包,每個作業(yè)包的包頭中包括處理所述數(shù)據(jù)的命令字、所使用的算法的標(biāo)識及該算法的基礎(chǔ)數(shù)據(jù)標(biāo)識;
[0102]算法分轉(zhuǎn)模塊,用于根據(jù)作業(yè)包的包頭中算法的標(biāo)識,將作業(yè)包分發(fā)給該算法對應(yīng)的算法處理模塊;一個算法對應(yīng)一個或多個能并行的算法處理模塊;
[0103]算法處理模塊,用于根據(jù)作業(yè)包的包頭中的基礎(chǔ)數(shù)據(jù)標(biāo)識獲取相應(yīng)的基礎(chǔ)數(shù)據(jù),根據(jù)該作業(yè)包的包頭中的命令字處理該作業(yè)包中的數(shù)據(jù);[0104]數(shù)據(jù)反饋模塊,用于將處理后的作業(yè)包返回給相應(yīng)的算法應(yīng)用進程。
[0105]所述接口模塊可以包括接口總線、接口處理程序等,用以完成和算法應(yīng)用服務(wù)器中算法應(yīng)用進程之間的數(shù)據(jù)交換。
[0106]本實施例的一種實施方式中,所述算法處理模塊如圖2所示,包括:
[0107]預(yù)處理單元,用于將作業(yè)包的包頭中命令字對應(yīng)的操作解析為多個處理子命令;獲取處理本作業(yè)包所需要的算法狀態(tài);將該作業(yè)包中的數(shù)據(jù)進行分組,每個分組中數(shù)據(jù)的長度小于或等于本算法處理模塊一次所能處理的數(shù)據(jù)量;將該作業(yè)包的包頭作為一個數(shù)據(jù)項放入本算法處理模塊對應(yīng)的作業(yè)包同步隊列,將一個作業(yè)包各分組的數(shù)據(jù)、各處理子命令、算法狀態(tài)、及獲取的基礎(chǔ)數(shù)據(jù)作為一個數(shù)據(jù)項放入本算法處理模塊對應(yīng)的算法運算隊列;
[0108]運算單元,用于對算法運算隊列中的各數(shù)據(jù)項依次按照本算法處理模塊對應(yīng)的算法進行運算,運算一個數(shù)據(jù)項中所有分組后,將該數(shù)據(jù)項的運算結(jié)果放入本算法處理模塊對應(yīng)的處理后數(shù)據(jù)隊列;
[0109]作業(yè)包重組單元,用于從所述作業(yè)包同步隊列和處理后數(shù)據(jù)隊列中各取出一個數(shù)據(jù)項,組合為作業(yè)包,放入本算法處理模塊對應(yīng)的處理后作業(yè)包隊列;
[0110]所述作業(yè)包同步隊列、算法運算隊列及處理后數(shù)據(jù)隊列均為先進先出隊列。本文中提及的其他隊列也可以采用先進先出隊列實現(xiàn)。
[0111]本實施方式的一種備選方案中,每個作業(yè)包的包頭中還包括上行數(shù)據(jù)存儲區(qū)空間標(biāo)識;所述上行數(shù)據(jù)存儲區(qū)空間與算法應(yīng)用進程一一對應(yīng);
[0112]所述數(shù)據(jù)反饋模塊將處理后的作業(yè)包返回給相應(yīng)的算法應(yīng)用進程是指:
[0113]所述數(shù)據(jù)反饋模塊輪詢各個算法處理模塊的處理后作業(yè)包隊列,若處理后作業(yè)包隊列中有作業(yè)包,則取出該作業(yè)包,根據(jù)該作業(yè)包的包頭中的上行數(shù)據(jù)存儲區(qū)空間標(biāo)識,將作業(yè)包復(fù)制到相應(yīng)的上行數(shù)據(jù)存儲區(qū)空間。
[0114]本實施例的一種實施方式中,接口模塊接收算法處理進程對待處理的數(shù)據(jù)拆分而得到的作業(yè)包可以是指:
[0115]接口模塊輪詢所對應(yīng)的下行數(shù)據(jù)存儲區(qū)中各個下行數(shù)據(jù)存儲區(qū)空間中是否有作業(yè)包,如果有作業(yè)包且本算法分轉(zhuǎn)模塊對應(yīng)的分轉(zhuǎn)隊列有空間,則將所述下行數(shù)據(jù)存儲區(qū)空間中的作業(yè)包復(fù)制到分轉(zhuǎn)隊列中;每個下行數(shù)據(jù)存儲區(qū)空間對應(yīng)于一個或多個算法應(yīng)用進程,每個算法應(yīng)用進程唯一對應(yīng)于一個下行數(shù)據(jù)存儲區(qū)空間;所述下行數(shù)據(jù)存儲區(qū)空間用于保存所對應(yīng)的算法應(yīng)用進程拆分好的作業(yè)包;所述分轉(zhuǎn)隊列與所述接口模塊一一對應(yīng),與所述算法分轉(zhuǎn)模塊也一一對應(yīng);所述接口模塊與所述下行數(shù)據(jù)存儲區(qū)一一對應(yīng)。
[0116]本實施方式的一種備選方案中,所述算法的標(biāo)識包括:
[0117]算法類型及地址;
[0118]接口模塊所接收的作業(yè)包包頭中的算法的標(biāo)識中,僅有算法類型;
[0119]算法分轉(zhuǎn)模塊根據(jù)作業(yè)包的包頭中算法的標(biāo)識將作業(yè)包分發(fā)給相應(yīng)的算法處理模塊是指:
[0120]算法分轉(zhuǎn)模塊查詢本算法分轉(zhuǎn)模塊對應(yīng)的分轉(zhuǎn)隊列是否為空;如果分轉(zhuǎn)隊列中有作業(yè)包則讀取該作業(yè)包的包頭,根據(jù)包頭中算法的標(biāo)識中的算法類型,在相應(yīng)類型的算法對應(yīng)的算法處理模塊中,依據(jù)預(yù)定策略選擇一個算法處理模塊,將所選擇算法處理模塊的地址填寫在該作業(yè)包包頭中算法的標(biāo)識里,并將作業(yè)包復(fù)制到相應(yīng)算法處理模塊對應(yīng)的算法預(yù)處理隊列;
[0121]所述算法預(yù)處理隊列與所述算法處理模塊一一對應(yīng);所述算法分轉(zhuǎn)模塊包括一個或多個;各算法分轉(zhuǎn)模塊分別對應(yīng)一個或多個算法預(yù)處理隊列;任意兩個算法分轉(zhuǎn)模塊對應(yīng)的算法預(yù)處理隊列彼此不同,或至少部分相同。
[0122]本實施例中,下行數(shù)據(jù)存儲區(qū)和上行數(shù)據(jù)存儲區(qū)均為算法應(yīng)用服務(wù)器計算機中的存儲空間。
[0123]下面用幾個具體例子說明本實施例。這幾個例子中,假設(shè)有算法I-L,其中算法I對應(yīng)a個算法處理模塊(算法處理模塊1-1-l_a),……,算法L對應(yīng)b個算法處理模塊(算法處理模塊L-1-L-b)。當(dāng)然,a和b也可以為I。各例子中的算法處理模塊同圖2所
[0124]第一個例子如圖3所示。
[0125]包括一個接口模塊,從一個下行數(shù)據(jù)存儲區(qū)的M個下行數(shù)據(jù)存儲區(qū)空間中接收作業(yè)包,放入一個分轉(zhuǎn)隊列中;
[0126]一個算法分轉(zhuǎn)模塊從該分轉(zhuǎn)隊列獲取作業(yè)包,根據(jù)預(yù)定策略放入多個與算法處理模塊對應(yīng)的算法預(yù)處理隊列1-1-1-a,......, L-1-L_b中;
[0127]各算法處理模塊1-1-l_a,......,L_1-L_b從對應(yīng)的算法預(yù)處理隊列中獲取作
業(yè)包,按照對應(yīng)的算法進行處理;數(shù)據(jù)反饋模塊從多個算法處理模塊獲取處理完成的作業(yè)包,相應(yīng)放入上行數(shù)據(jù)存儲區(qū)的上行數(shù)據(jù)存儲區(qū)空間I-N中。
[0128]第二個例子如圖4所示。
[0129]包括多個接口模塊I-P,與下行數(shù)據(jù)存儲區(qū)I-P —一對應(yīng);其中下行數(shù)據(jù)存儲區(qū)I包括下行數(shù)據(jù)存儲區(qū)空間I1-M1,……,下行數(shù)據(jù)存儲區(qū)P包括下行數(shù)據(jù)存儲區(qū)空間Ip -Mp ;
[0130]各接口模塊與分轉(zhuǎn)隊列I-P——對應(yīng),將獲取的作業(yè)包放入對應(yīng)的分轉(zhuǎn)隊列中;
[0131]多個算法分轉(zhuǎn)模塊I-P也與分轉(zhuǎn)隊列I-P —一對應(yīng),從對應(yīng)的分轉(zhuǎn)隊列獲取作業(yè)包,根據(jù)預(yù)定策略放入多個與算法處理模塊一一對應(yīng)的算法預(yù)處理隊列中;其中,算法分轉(zhuǎn)模塊I-P都連接各算法預(yù)處理隊列,即P個算法分轉(zhuǎn)模塊復(fù)用所有的算法預(yù)處理隊列;
[0132]各算法處理模塊從對應(yīng)的算法預(yù)處理隊列中獲取作業(yè)包,按照對應(yīng)的算法進行處理;
[0133]多個數(shù)據(jù)反饋模塊I-Q都從各算法處理模塊獲取處理完成的作業(yè)包,即多個算法處理模塊復(fù)用Q個數(shù)據(jù)反饋模塊;
[0134]所述數(shù)據(jù)反饋模塊I-Q與上行數(shù)據(jù)存儲區(qū)I-Q —一對應(yīng);其中上行數(shù)據(jù)存儲區(qū)I包括上行數(shù)據(jù)存儲區(qū)空間I1-N1,……,上行數(shù)據(jù)存儲區(qū)Q包括上行數(shù)據(jù)存儲區(qū)空間Iq-Nq ;所述數(shù)據(jù)反饋模塊將完成處理的作業(yè)包放入對應(yīng)的上行數(shù)據(jù)存儲區(qū)的上行數(shù)據(jù)存儲區(qū)空間中。
[0135]其中,不同的接口模塊、數(shù)據(jù)反饋模塊可能對應(yīng)相同的計算機接口,也可能對應(yīng)不同的計算機接口,但是每個接口模塊均具有自己獨立的下行數(shù)據(jù)緩沖區(qū)、每個數(shù)據(jù)反饋模塊均具有自己獨立的上行數(shù)據(jù)緩沖區(qū)。
[0136]第三個例子如圖5所示。
[0137]與第二個例子的不同在于,P個算法分轉(zhuǎn)模塊各自對應(yīng)的算法預(yù)處理隊列互不相同,各算法預(yù)處理隊列分別對應(yīng)一個算法分轉(zhuǎn)模塊;比如算法分轉(zhuǎn)模塊I對應(yīng)算法預(yù)處理
隊列1-1?1-ap......, L-1?L-1d1,......,算法分轉(zhuǎn)模塊P對應(yīng)算法預(yù)處理隊列Iii?
1-a,……,L_h?L-b ;算法預(yù)處理隊列與算法處理模塊仍然是一一對應(yīng)的關(guān)系;數(shù)據(jù)反饋模塊I?Q也是各自對應(yīng)的算法處理模塊互不相同,各算法處理模塊分別對應(yīng)一個數(shù)據(jù)反饋模塊。
[0138]該例子中算法分轉(zhuǎn)模塊與算法預(yù)處理隊列是“一對多”的關(guān)系,可根據(jù)算法處理模塊的處理速度快慢決定“一對多”時對應(yīng)的算法預(yù)處理隊列的數(shù)量;數(shù)據(jù)反饋模塊與算法處理模塊也是“一對多”的關(guān)系,可根據(jù)數(shù)據(jù)反饋模塊的處理速度快慢決定“一對多”時對應(yīng)的算法處理模塊的數(shù)量。
[0139]本領(lǐng)域普通技術(shù)人員可以理解上述方法中的全部或部分步驟可通過程序來指令相關(guān)硬件完成,所述程序可以存儲于計算機可讀存儲介質(zhì)中,如只讀存儲器、磁盤或光盤等??蛇x地,上述實施例的全部或部分步驟也可以使用一個或多個集成電路來實現(xiàn)。相應(yīng)地,上述實施例中的各模塊/單元可以采用硬件的形式實現(xiàn),也可以采用軟件功能模塊的形式實現(xiàn)。本發(fā)明不限制于任何特定形式的硬件和軟件的結(jié)合。
[0140]當(dāng)然,本發(fā)明還可有其他多種實施例,在不背離本發(fā)明精神及其實質(zhì)的情況下,熟悉本領(lǐng)域的技術(shù)人員當(dāng)可根 據(jù)本發(fā)明作出各種相應(yīng)的改變和變形,但這些相應(yīng)的改變和變形都應(yīng)屬于本發(fā)明的權(quán)利要求的保護范圍。
【權(quán)利要求】
1.一種支持并行運行算法的數(shù)據(jù)處理方法,包括: 接收算法處理進程對待處理的數(shù)據(jù)拆分而得到的作業(yè)包,每個作業(yè)包的包頭中包括處理所述數(shù)據(jù)的命令字、所使用的算法的標(biāo)識及該算法的基礎(chǔ)數(shù)據(jù)標(biāo)識; 算法分轉(zhuǎn)模塊根據(jù)作業(yè)包的包頭中算法的標(biāo)識將作業(yè)包分發(fā)給該算法對應(yīng)的算法處理模塊;一個算法對應(yīng)一個或多個能并行的算法處理模塊; 算法處理模塊根據(jù)作業(yè)包的包頭中的基礎(chǔ)數(shù)據(jù)標(biāo)識獲取相應(yīng)的基礎(chǔ)數(shù)據(jù),根據(jù)該作業(yè)包的包頭中的命令字處理該作業(yè)包中的數(shù)據(jù); 數(shù)據(jù)反饋模塊將處理后的作業(yè)包返回給相應(yīng)的算法應(yīng)用進程。
2.如權(quán)利要求1所述的方法,其特征在于,算法處理模塊根據(jù)作業(yè)包的包頭中的命令字處理該作業(yè)包中的數(shù)據(jù)的步驟包括: 將作業(yè)包的包頭中命令字對應(yīng)的操作解析為多個處理子命令;獲取處理本作業(yè)包所需要的算法狀態(tài);將該作業(yè)包中的數(shù)據(jù)進行分組,每個分組中數(shù)據(jù)的長度小于或等于本算法處理模塊一次所能處理的數(shù)據(jù)量; 將該作業(yè)包的包頭作為一個數(shù)據(jù)項放入本算法處理模塊對應(yīng)的作業(yè)包同步隊列,將一個作業(yè)包各分組的數(shù)據(jù)、各處理子命令、算法狀態(tài)、及獲取的基礎(chǔ)數(shù)據(jù)作為一個數(shù)據(jù)項放入本算法處理模塊對應(yīng)的算法運算隊列; 對算法運算隊列中的各數(shù)據(jù)項依次按照本算法處理模塊對應(yīng)的算法進行運算,運算完一個數(shù)據(jù)項中所有分組后,將該數(shù)據(jù)項的運算結(jié)果放入本算法處理模塊對應(yīng)的處理后數(shù)據(jù)隊列; 從所述作業(yè)包同步隊列和處理后數(shù)據(jù)隊列中各取出一個數(shù)據(jù)項組合為作業(yè)包,放入本算法處理模塊對應(yīng)的處理 后作業(yè)包隊列; 所述作業(yè)包同步隊列、算法運算隊列及處理后數(shù)據(jù)隊列均為先進先出隊列。
3.如權(quán)利要求2所述的方法,其特征在于: 每個作業(yè)包的包頭中還包括上行數(shù)據(jù)存儲區(qū)空間標(biāo)識;所述上行數(shù)據(jù)存儲區(qū)空間與算法應(yīng)用進程一一對應(yīng); 所述數(shù)據(jù)反饋模塊將處理后的作業(yè)包返回給相應(yīng)的算法應(yīng)用進程的步驟包括: 所述數(shù)據(jù)反饋模塊輪詢各個算法處理模塊的處理后作業(yè)包隊列,若處理后作業(yè)包隊列中有作業(yè)包,則取出該作業(yè)包,根據(jù)該作業(yè)包的包頭中的上行數(shù)據(jù)存儲區(qū)空間標(biāo)識,將作業(yè)包復(fù)制到相應(yīng)的上行數(shù)據(jù)存儲區(qū)空間。
4.如權(quán)利要求1到3中任一項所述的方法,其特征在于,接收算法處理進程對待處理的數(shù)據(jù)拆分而得到的作業(yè)包的步驟包括: 接口模塊輪詢各個下行數(shù)據(jù)存儲區(qū)空間中是否有作業(yè)包,如果有作業(yè)包且本接口模塊對應(yīng)的分轉(zhuǎn)隊列有空間,則將所述下行數(shù)據(jù)存儲區(qū)空間中的作業(yè)包復(fù)制到分轉(zhuǎn)隊列中;每個下行數(shù)據(jù)存儲區(qū)空間對應(yīng)于一個或多個算法應(yīng)用進程,每個算法應(yīng)用進程唯一對應(yīng)于一個數(shù)據(jù)存儲區(qū)空間;所述下行數(shù)據(jù)存儲區(qū)空間用于保存所對應(yīng)的算法應(yīng)用進程拆分好的作業(yè)包;所述分轉(zhuǎn)隊列與所述接口模塊一一對應(yīng),與所述算法分轉(zhuǎn)模塊也一一對應(yīng)。
5.如權(quán)利要求4所述的方法,其特征在于,所述算法的標(biāo)識包括: 算法類型及地址; 所接收的作業(yè)包包頭中的算法的標(biāo)識中,僅有算法類型;算法分轉(zhuǎn)模塊根據(jù)作業(yè)包的包頭中算法的標(biāo)識將作業(yè)包分發(fā)給相應(yīng)的算法處理模塊的步驟包括: 算法分轉(zhuǎn)模塊查詢本算法分轉(zhuǎn)模塊對應(yīng)的分轉(zhuǎn)隊列是否為空;如果分轉(zhuǎn)隊列中有作業(yè)包則讀取該作業(yè)包的包頭,根據(jù)包頭中算法的標(biāo)識中的算法類型,在相應(yīng)類型的算法對應(yīng)的算法處理模塊中,依據(jù)預(yù)定策略選擇一個算法處理模塊,將所選擇算法處理模塊的地址填寫在該作業(yè)包的包頭中算法的標(biāo)識里,并將作業(yè)包復(fù)制到相應(yīng)算法處理模塊對應(yīng)的算法預(yù)處理隊列; 所述算法預(yù)處理隊列與所述算法處理模塊一一對應(yīng);所述算法分轉(zhuǎn)模塊包括一個或多個;各算法分轉(zhuǎn)模塊分別對應(yīng)一個或多個算法預(yù)處理隊列;任意兩個算法分轉(zhuǎn)模塊對應(yīng)的算法預(yù)處理隊列彼此不同,或至少部分相同。
6.一種支持并行運行算法的數(shù)據(jù)處理裝置,其特征在于,包括: 接口模塊,用于接收算法處理進程對待處理的數(shù)據(jù)拆分而得到的作業(yè)包,每個作業(yè)包的包頭中包括處理所述數(shù)據(jù)的命令字、所使用的算法的標(biāo)識及該算法的基礎(chǔ)數(shù)據(jù)標(biāo)識;算法分轉(zhuǎn)模塊,用于根據(jù)作業(yè)包的包頭中算法的標(biāo)識,將作業(yè)包分發(fā)給該算法對應(yīng)的算法處理模塊;一個算法對應(yīng)一或多個能并行的算法處理模塊; 算法處理模塊,用于根據(jù)作業(yè)包的包頭中的基礎(chǔ)數(shù)據(jù)標(biāo)識獲取相應(yīng)的基礎(chǔ)數(shù)據(jù),根據(jù)該作業(yè)包的包頭中的命令字處理該作業(yè)包中的數(shù)據(jù); 數(shù)據(jù)反饋模塊,用于將處理后的作業(yè)包返回給相應(yīng)的算法應(yīng)用進程。
7.如權(quán)利要求6所述的裝置,其特征在于,所述算法處理模塊包括: 預(yù)處理單元,用于將作業(yè)包的包頭中命令字對應(yīng)的操作解析為多個處理子命令;獲取處理本作業(yè)包所需要的算法狀態(tài);將該作業(yè)包中的數(shù)據(jù)進行分組,每個分組中數(shù)據(jù)的長度小于或等于本算法處 理模塊一次所能處理的數(shù)據(jù)量;將該作業(yè)包的包頭作為一個數(shù)據(jù)項放入本算法處理模塊對應(yīng)的作業(yè)包同步隊列,將一個作業(yè)包各分組的數(shù)據(jù)、各處理子命令、算法狀態(tài)、及獲取的基礎(chǔ)數(shù)據(jù)作為一個數(shù)據(jù)項放入本算法處理模塊對應(yīng)的算法運算隊列; 運算單元,用于對算法運算隊列中的各數(shù)據(jù)項依次按照本算法處理模塊對應(yīng)的算法進行運算,運算一個數(shù)據(jù)項中所有分組后,將該數(shù)據(jù)項的運算結(jié)果放入本算法處理模塊對應(yīng)的處理后數(shù)據(jù)隊列; 作業(yè)包重組單元,用于從所述作業(yè)包同步隊列和處理后數(shù)據(jù)隊列中各取出一個數(shù)據(jù)項,組合為作業(yè)包,放入本算法處理模塊對應(yīng)的處理后作業(yè)包隊列; 所述作業(yè)包同步隊列、算法運算隊列及處理后數(shù)據(jù)隊列均為先進先出隊列。
8.如權(quán)利要求7所述的裝置,其特征在于: 每個作業(yè)包的包頭中還包括上行數(shù)據(jù)存儲區(qū)空間標(biāo)識;所述上行數(shù)據(jù)存儲區(qū)空間與算法應(yīng)用進程一一對應(yīng); 所述數(shù)據(jù)反饋模塊將處理后的作業(yè)包返回給相應(yīng)的算法應(yīng)用進程是指: 所述數(shù)據(jù)反饋模塊輪詢各個算法處理模塊的處理后作業(yè)包隊列,若處理后作業(yè)包隊列中有作業(yè)包,則取出該作業(yè)包,根據(jù)該作業(yè)包的包頭中的上行數(shù)據(jù)存儲區(qū)空間標(biāo)識,將作業(yè)包復(fù)制到相應(yīng)的上行數(shù)據(jù)存儲區(qū)空間。
9.如權(quán)利要求6到8中任一項所述的裝置,其特征在于,接口模塊接收算法處理進程對待處理的數(shù)據(jù)拆分而得到的作業(yè)包是指:接口模塊輪詢所對應(yīng)的下行數(shù)據(jù)存儲區(qū)中各個下行數(shù)據(jù)存儲區(qū)空間中是否有作業(yè)包,如果有作業(yè)包且本算法分轉(zhuǎn)模塊對應(yīng)的分轉(zhuǎn)隊列有空間,則將所述下行數(shù)據(jù)存儲區(qū)空間中的作業(yè)包復(fù)制到分轉(zhuǎn)隊列中;每個下行數(shù)據(jù)存儲區(qū)空間對應(yīng)于一個或多個算法應(yīng)用進程,每個算法應(yīng)用進程唯一對應(yīng)于一個數(shù)據(jù)存儲區(qū)空間;所述下行數(shù)據(jù)存儲區(qū)空間用于保存所對應(yīng)的算法應(yīng)用進程拆分好的作業(yè)包;所述分轉(zhuǎn)隊列與所述接口模塊一一對應(yīng),與所述算法分轉(zhuǎn)模塊也一一對應(yīng);所述接口模塊與所述下行數(shù)據(jù)存儲區(qū)一一對應(yīng)。
10.如權(quán)利要求9所述的裝置,其特征在于,所述算法的標(biāo)識包括: 算法類型及地址; 接口模塊所接收的作業(yè)包包頭中的算法的標(biāo)識中,僅有算法類型; 算法分轉(zhuǎn)模塊根據(jù)作業(yè)包的包頭中算法的標(biāo)識將作業(yè)包分發(fā)給相應(yīng)的算法處理模塊是指: 算法分轉(zhuǎn)模塊查詢本算法分轉(zhuǎn)模塊對應(yīng)的分轉(zhuǎn)隊列是否為空;如果分轉(zhuǎn)隊列中有作業(yè)包則讀取該作業(yè)包的包頭,根據(jù)包頭中算法的標(biāo)識中的算法類型,在相應(yīng)類型的算法對應(yīng)的算法處理模塊中,依據(jù)預(yù)定策略選擇一個算法處理模塊,將所選擇算法處理模塊的地址填寫在該作業(yè)包的包頭中算法的標(biāo)識里,并將作業(yè)包復(fù)制到相應(yīng)算法處理模塊對應(yīng)的算法預(yù)處理隊列; 所述算法預(yù)處理隊列與所述算法處理模塊一一對應(yīng);所述算法分轉(zhuǎn)模塊包括一個或多個;各算法分轉(zhuǎn)模塊分別對應(yīng)一個或多個算法預(yù)處理隊列;任意兩個算法分轉(zhuǎn)模塊對應(yīng)的算法預(yù)處理隊列彼此不同,或 至少部分相同。
【文檔編號】G06F17/10GK103440227SQ201310389237
【公開日】2013年12月11日 申請日期:2013年8月30日 優(yōu)先權(quán)日:2013年8月30日
【發(fā)明者】李鳳華, 史國振, 李暉, 李莉 申請人:廣州天寧信息技術(shù)有限公司, 廣州科元信息技術(shù)有限公司