新四季網

一種算法數據處理的同步方法及裝置製造方法

2023-06-14 07:26:36 1

一種算法數據處理的同步方法及裝置製造方法
【專利摘要】一種算法數據處理的同步方法及裝置;方法包括:S101、對未判斷過的作業包逐個進行下述操作:判斷該作業包包頭中的算法狀態索引號是否已處於同步正在處理隊列中;是則保存到同步阻塞隊列中;不是則保存到同步正在處理隊列中;獲取該作業包後進行S102;S102、根據算法標識,採用相應的算法對所獲取的作業包進行處理,完成後進行步驟S103;S103、在同步阻塞隊列中查詢處理完成的作業包的算法狀態索引號,查詢不到則從同步正在處理隊列中刪除該算法狀態索引號;獲取所查詢到的條目對應的地址,並從同步阻塞隊列中刪除該查詢到的條目,根據地址獲取作業包後進行步驟S102。本發明能夠實現不同數據流交叉並行處理時的同步。
【專利說明】一種算法數據處理的同步方法及裝置

【技術領域】
[0001]本發明涉及計算機和信息安全領域,尤其涉及一種算法數據處理的同步方法及裝置。

【背景技術】
[0002]雲計算環境下海量高並發數據的高速傳輸與處理需求,要求數據處理晶片或各種應用伺服器、密碼伺服器等數據處理設備支持多種算法處理,且每種算法有多個算法核實現。由於不同業務的數據流在進入數據處理晶片、設備或系統時,其順序往往是隨機的,常常存在數據流交叉處理的現象,對於數據之間存在前後依賴關係的數據處理算法或處理模式,同一數據流前序數據的運算狀態會影響後序數據的運算結果,此時必須考慮如何保證數據處理間前後次序的同步(本文的同步是指協同步調,按預定的先後次序進行運行,即前序數據先處理完成後,再處理後序數據)。另外,不同的數據處理算法,其執行時間也可能存在不同,為了提高處理效率,數據進入的次序和返回的次序就存在不一致,此時也必須考慮數據間的同步與重組。


【發明內容】

[0003]本發明要解決的技術問題是進行算法數據處理時如何實現不同數據流交叉並行處理時的同步。
[0004]為了解決上述問題,本發明提供了一種算法數據處理的同步方法,包括:
[0005]S101、同步分轉控制模塊對未判斷過的作業包逐個進行下述操作:判斷該作業包包頭中的算法狀態索引號是否已處於同步正在處理隊列中;如果是則將該作業包的算法狀態索引號作為一個條目保存到同步阻塞隊列中;如果不是則將該作業包的算法狀態索引號作為一個條目保存到同步正在處理隊列中,根據該作業包的地址獲取該作業包後進行步驟S102 ;
[0006]S102、算法處理模塊根據所獲取的作業包包頭中的算法標識,採用相應的算法對該作業包進行處理,處理完成後進行步驟S103 ;
[0007]S103、阻塞查詢模塊在所述同步阻塞隊列中查詢處理完成的作業包的算法狀態索引號,如果查詢不到,則從所述同步正在處理隊列中刪除該算法狀態索引號;如果能查詢到一個條目,則以該條目作為查詢到的條目;如果能查詢到多個條目,則將在數據流中位置最前的作業包對應的條目作為查詢到的條目;獲取所查詢到的條目對應的地址,並從所述同步阻塞隊列中刪除該查詢到的條目,根據所獲取的地址獲取作業包後進行步驟S102。
[0008]可選地,所述輸入作業包緩衝區為一個或多個;所述同步分轉控制模塊為一個或多個;所述阻塞查詢模塊為一個或多個;所述同步正在處理隊列為一個或多個;所述同步阻塞隊列為一個或多個。
[0009]可選地,所述步驟SlOl還包括:
[0010]當作業包的算法狀態索引號已處於同步正在處理隊列中時將該作業包移動到同步待處理作業包緩衝區,將該作業包的地址更新為在同步待處理作業包緩衝區中的地址;
[0011]所述同步待處理作業包緩衝區為一個或多個。
[0012]可選地,所述步驟S102後還包括:
[0013]將處理完成的作業包的算法狀態索引號保存到同步已處理隊列;
[0014]步驟S103中,所述阻塞查詢模塊在所述同步阻塞隊列中查詢處理完成的作業包的算法狀態索引號的步驟包括:
[0015]所述阻塞查詢模塊從所述同步已處理隊列中提取作業包的算法狀態索引號,並查詢此算法狀態索引號是否存在於所述同步阻塞隊列中;
[0016]所述同步已處理隊列為一個或多個。
[0017]可選地,所述步驟SlOl中,所述同步分轉控制模塊從輸入作業包緩衝區獲取所述未判斷過的作業包;所述算法處理模塊包括算法分轉子模塊、算法預處理子模塊、算法運算子模塊和算法反饋子模塊;
[0018]所述步驟S102包括:
[0019]所述算法分轉子模塊根據所獲取的作業包包頭中的算法標識,按照預定策略將作業包分配到相應的算法預處理隊列中;
[0020]所述算法預處理子模塊依次對所述算法預處理隊列中的各作業包進行以下處理:根據作業包的算法狀態索引號,從算法狀態存儲區中獲取該作業包的算法狀態索引號對應地址上的中間狀態數據,並根據作業包包頭中的所屬算法標識和算法核號,生成處理命令作業包和處理數據作業包送到相應的算法運算子模塊進行處理;
[0021]所述算法反饋子模塊將算法運算子模塊處理完成的作業包返回給相應的算法應用進程,將處理完成的作業包的算法狀態索引號添加至同步已處理隊列中;並將運算產生的中間狀態數據保存在所述算法狀態存儲區中所述處理完成的作業包的算法狀態索引號對應的地址。
[0022]可選地,所述步驟SlOl前還包括:
[0023]算法分轉模塊從輸入作業包緩衝區讀取作業包,根據預定策略放入相應的算法預處理隊列;
[0024]所述步驟SlOl中,所述同步分轉控制模塊從所述算法預處理隊列中獲取所述未判斷過的作業包;
[0025]所述算法處理模塊包括算法預處理子模塊、算法運算子模塊和算法反饋子模塊;
[0026]所述步驟S102包括:
[0027]所述算法預處理子模塊根據所獲取的作業包的算法狀態索引號,從算法狀態存儲區中獲取該作業包的算法狀態索引號對應地址上的中間狀態數據,並根據作業包包頭中的所屬算法標識和算法核號,生成處理命令作業包和處理數據作業包送到相應的算法運算子模塊進行處理;
[0028]所述算法反饋子模塊將算法運算子模塊處理完成的作業包返回給相應的算法應用進程,將處理完成的作業包的算法狀態索引號添加至同步已處理隊列中;並將運算產生的中間狀態數據保存在所述算法狀態存儲區中所述處理完成的作業包的算法狀態索引號對應的地址。
[0029]本發明還提供了一種算法數據處理的同步裝置,包括:
[0030]同步分轉控制模塊,算法處理模塊和阻塞查詢模塊;
[0031]所述同步分轉控制模塊用於對未判斷過的作業包逐個進行下述操作:判斷該作業包包頭中的算法狀態索引號是否已處於同步正在處理隊列中;如果是則將該作業包的算法狀態索引號作為一個條目保存到同步阻塞隊列中;如果不是則將該作業包的算法狀態索引號作為一個條目保存到同步正在處理隊列中,根據該作業包的地址獲取該作業包後啟動所述算法處理模塊進行處理;
[0032]所述算法處理模塊用於根據所獲取的作業包包頭中的算法標識,採用相應的算法對該作業包進行處理,處理完成後啟動阻塞查詢模塊;
[0033]所述阻塞查詢模塊在所述同步阻塞隊列中查詢處理完成的作業包的算法狀態索引號,如果查詢不到,則從所述同步正在處理隊列中刪除該算法狀態索引號;如果能查詢到一個條目,則以該條目作為查詢到的條目;如果能查詢到多個條目,則將在數據流中位置最前的作業包對應的條目作為查詢到的條目;獲取所查詢到的條目對應的地址,並從所述同步阻塞隊列中刪除該查詢到的條目,根據所獲取的作業包的地址獲取作業包後啟動所述算法處理模塊進行處理。
[0034]可選地,所述輸入作業包緩衝區為一個或多個;所述同步分轉控制模塊為一個或多個;所述阻塞查詢模塊為一個或多個;所述同步正在處理隊列為一個或多個;所述同步阻塞隊列為一個或多個。
[0035]可選地,所述同步分轉控制模塊還用於當作業包的算法狀態索引號已處於同步正在處理隊列中時將該作業包移動到同步待處理作業包緩衝區,將該作業包的地址更新為在同步待處理作業包緩衝區中的地址;
[0036]所述同步待處理作業包緩衝區為一個或多個。
[0037]可選地,所述算法處理模塊還用於將處理完成的作業包的算法狀態索引號保存到同步已處理隊列;
[0038]所述阻塞查詢模塊在所述同步阻塞隊列中查詢處理完成的作業包的算法狀態索引號是指:
[0039]所述阻塞查詢模塊從所述同步已處理隊列中提取作業包的算法狀態索引號,並查詢此算法狀態索引號是否存在於所述同步阻塞隊列中;
[0040]所述同步已處理隊列為一個或多個。
[0041]可選地,所述同步分轉控制模塊從輸入作業包緩衝區獲取所述未判斷過的作業包;所述算法處理模塊包括算法分轉子模塊、算法預處理子模塊、算法運算子模塊和算法反饋子模塊;
[0042]所述算法分轉子模塊用於根據所獲取的作業包包頭中的算法標識,根據預定策略將作業包分配到相應的算法預處理隊列中;
[0043]所述算法預處理子模塊用於依次對所述算法預處理隊列中的各作業包進行以下處理:根據作業包的算法狀態索引號,從算法狀態存儲區中獲取該作業包的算法狀態索引號對應地址上的中間狀態數據,並根據作業包包頭中的所屬算法標識和算法核號,生成處理命令作業包和處理數據作業包送到相應的算法運算子模塊進行處理;
[0044]所述算法反饋子模塊用於將算法運算子模塊處理完成的作業包返回給相應的算法應用進程,將處理完成的作業包的算法狀態索引號添加至同步已處理隊列中;並將運算產生的中間狀態數據保存在所述算法狀態存儲區中所述處理完成的作業包的算法狀態索引號對應的地址。
[0045]可選地,所述的裝置還包括:
[0046]算法分轉模塊,用於從輸入作業包緩衝區讀取作業包,根據預定策略放入相應的算法預處理隊列;
[0047]所述同步分轉控制模塊從所述算法預處理隊列中獲取所述未判斷過的作業包;
[0048]所述算法處理模塊包括算法預處理子模塊、算法運算子模塊和算法反饋子模塊;
[0049]所述算法預處理子模塊用於根據所獲取的作業包的算法狀態索引號,從算法狀態存儲區中獲取該作業包的算法狀態索引號對應地址上的中間狀態數據,並根據作業包包頭中的所屬算法標識和算法核號,生成處理命令作業包和處理數據作業包送到相應的算法運算子模塊進行處理;
[0050]所述算法反饋子模塊將算法運算子模塊處理完成的作業包返回給相應的算法應用進程,將處理完成的作業包的算法狀態索引號添加至同步已處理隊列中;並將運算產生的中間狀態數據保存在所述算法狀態存儲區中所述處理完成的作業包的算法狀態索引號對應的地址。
[0051]本發明針對高並發多數據流交叉操作的算法數據處理,如海量數據存儲、電子支付、網上銀行、股票交易、網絡購票等應用環境,實現高並發多數據流隨機交叉數據處理的多算法狀態同步。

【專利附圖】

【附圖說明】
[0052]圖1是同步正在處理隊列示意圖;
[0053]圖2是同步阻塞隊列示意圖;
[0054]圖3是未包含同步待處理作業包緩衝區的算法數據同步流程示意圖;
[0055]圖4是包含同步待處理作業包緩衝區的算法數據同步流程示意圖;
[0056]圖5是同步已處理隊列示意圖;
[0057]圖6是算法狀態索引號示意圖;
[0058]圖7是實施例一的第一個例子中算法數據處理方法的流程示意圖;
[0059]圖8是實施例一第一個例子中各同步隊列和緩衝區數據流間的關係圖;
[0060]圖9是實施例一的第二個例子中算法數據處理方法的邏輯框圖;
[0061]圖10是實施例一的第三個例子中算法數據處理方法的邏輯框圖;
[0062]圖11是實施例一的第四個例子中算法數據處理方法的邏輯框圖;
[0063]圖12是實施例一的第五個例子中算法數據處理方法的邏輯框圖。

【具體實施方式】
[0064]下面將結合附圖及實施例對本發明的技術方案進行更詳細的說明。
[0065]需要說明的是,如果不衝突,本發明實施例以及實施例中的各個特徵可以相互結合,均在本發明的保護範圍之內。另外,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同於此處的順序執行所示出或描述的步驟。
[0066]實施例一,一種算法數據處理的同步方法,包括:
[0067]S101、同步分轉控制模塊對未判斷過的作業包逐個進行下述操作:判斷該作業包包頭中的算法狀態索引號是否已處於同步正在處理隊列中;如果是則將該作業包的算法狀態索引號作為一個條目保存到同步阻塞隊列中;如果不是則將該作業包的算法狀態索引號作為一個條目保存到同步正在處理隊列中,根據該作業包的地址獲取該作業包後進行步驟S102 ;
[0068]S102、算法處理模塊根據所獲取的作業包包頭中的算法標識,採用相應的算法對該作業包進行處理,處理完成後進行步驟S103 ;
[0069]S103、阻塞查詢模塊在所述同步阻塞隊列中查詢處理完成的作業包的算法狀態索引號,如果查詢不到,則從所述同步正在處理隊列中刪除該算法狀態索引號;如果能查詢到一個條目,則以該條目作為查詢到的條目;如果能查詢到多個條目,則將在數據流中位置最前的作業包對應的條目作為查詢到的條目;獲取所查詢到的條目對應的地址,並從所述同步阻塞隊列中刪除該查詢到的條目,根據所獲取的地址獲取作業包後進行步驟S102。
[0070]本實施例中所述步驟S101/S103中獲取作業包有兩種方式,一種是指算法處理模塊主動根據作業包的地址讀取作業包的數據;另一種是指由同步分轉控制模塊/阻塞查詢模塊(不排除還有其他模塊或程序)將待處理作業包的數據從原先存放的地址取出並直接發送給空閒的算法處理模塊,或送入一個緩衝區中,再由算法處理模塊從該緩衝區中讀取作業包,此緩衝區可以為一般的存儲區,也可以是FIFO等不同形式。所述算法處理模塊讀取作業包後,可以從所述地址上或所述緩衝區中刪除該作業包。
[0071 ] 本實施例中,對所述作業包進行運算的算法可以包含多個不同的算法,每個算法可以有多個實現單元。各執行中的業務等待算法運算的數據(即各算法應用進程中待處理的數據)以作業包的方式流入,首先存放在所述輸入作業包緩衝區中。同一個業務的作業包的算法狀態索引號相同(因此算法狀態索引號與一個業務的數據流也是對應的);因此通過本實施例的方法,同一個業務的後序作業包將等待此業務前序作業包運算完成才能開始運算。不同算法處理的作業包間相互獨立,以流水線方式送入。運算完成後再以流水線方式返回,返回作業包的順序與進入的作業包順序可以不一致,即作業包流入或流出的次序不要求串行,而是根據算法處理的快慢任意流出,較後進入的作業包可以在較前進入的數據包之前流出。
[0072]本實施例中,只要存在未判斷過的作業包,步驟SlOl將持續不斷的反覆進行;也就是說,每送入一個新的作業包,步驟SlOl就會被觸發一次;在步驟SlOl中,每當發現一個作業包包頭中的算法狀態索引號不在同步正在處理隊列中時,就會觸發一次針對該作業包的步驟S102 ;步驟S102完成後,會觸發針對該作業包的步驟S103。SlOl和S102、S103是可以並行執行的;針對同一個作業包的步驟S102、S103是先後執行的;當存在多個算法處理模塊及阻塞查詢模塊時,不同作業包之間S102\S103是可以並行執行的。
[0073]本實施例中,所述步驟SlOl中,還可以將所述作業包的地址和所述算法狀態索引號作為一個條目保存到所述同步阻塞隊列中,這樣在步驟S103中,就可以直接從所述同步阻塞隊列中獲取所查詢到的條目對應的作業包的地址。如果步驟SlOl中未將地址保存進所述同步阻塞隊列,則由各條目與地址間的映射關係間接獲得該作業包的地址。步驟S103中,當根據一個算法狀態索引號查詢到多個條目時,可以根據各條目對應的作業包的序號,確定在數據流中位置最前的作業包對應的條目。
[0074]本實施例中,所述輸入作業包緩衝區可以為FIFO,也可以為RAM,可以為一個,也可以為多個。當有多個輸入作業包緩衝區時,可以採用依次輪詢η個輸入作業包緩衝區的方式送入待處理的作業包;也可以採用先送入第I個輸入作業包緩衝區,待第I個作業包緩衝區滿之後,再送入第2個輸入作業包緩衝區的方式;也可以依據預定策略,根據算法和待處理數據量,確定待處理作業包對應的輸入作業包緩衝區。
[0075]同步分轉控制模塊可以為一個,也可以為多個;所述阻塞查詢模塊可以為一個,也可以為多個;所述同步正在處理隊列如圖1所示,用於記錄正在進行算法處理的作業包的算法狀態索引號,可為先進先出隊列,或為一般存儲區;可以為一個,也可以為多個;所述同步阻塞隊列如圖2所示,用於記錄處於阻塞狀態的作業包(即該作業包的前序作業包正在進行算法處理)的算法狀態索引號,還可以記錄作業包地址,可為先進先出隊列,或為一般存儲區;可以為一個,也可以為多個。
[0076]所述同步分轉控制模塊、阻塞查詢模塊、同步阻塞隊列、同步正在處理隊列可以和算法一一對應,也可以不一一對應;可以和算法核(算法的實現單元)一一對應,也可以不
對應;其對應關係可以是任意組合。
[0077]當所述輸入作業包緩衝區、同步待處理作業包緩衝區、同步正在處理隊列、同步阻塞隊列和所述同步分轉控制模塊都有多個時,每個同步分轉控制模塊所對應的輸入作業包緩衝區可以全都不相同,也可以全都相同,還可以部分相同;每個同步分轉控制模塊所對應的同步待處理作業包緩衝區可以全都不相同,也可以全都相同,還可以部分相同;每個同步分轉控制模塊所對應的同步正在處理隊列可以全都不相同,也可以全都相同,還可以部分相同;每個同步分轉控制模塊所對應的同步阻塞隊列可以全都不相同,也可以全都相同,還可以部分相同。
[0078]當所述同步正在處理隊列、同步阻塞隊列和所述阻塞查詢模塊都有多個時,每個阻塞查詢模塊所對應的同步正在處理隊列可以全都不相同,也可以全都相同,還可以部分相同;每個阻塞查詢模塊所對應的同步阻塞隊列可以全都不相同,也可以全都相同,還可以部分相同。
[0079]本實施例的一種實施方式中,所述作業包包頭可以但不限於包括算法核號、算法狀態索引號和作業包序號。算法狀態索引號中的算法標識對應數據流不同的密碼算法以及不同的操作:加密、解密、籤名、驗籤等;由於每種算法可有多個IP核實現,算法核號標明具體的某一個算法IP核,同一數據流業務的多個作業包可以採用同一算法的同一個或不同IP核實現;算法狀態索引號與數據流對應,用於對算法狀態存儲區的尋址,查找算法狀態存儲區中存放的中間狀態數據;為保證作業包在流水線上亂序傳輸時的正確性,為作業包定義作業包序號欄位,以便於同一算法應用進程的數據流中不同作業包的重組,支持數據出入次序可以不一致。
[0080]算法核號、算法狀態索引號和作業包序號可以採用統一編碼,或者採用分別獨立編碼,或者任意組合編碼。作為本實施方式的一種備選方案,算法核號、算法狀態索引號和作業包序號採用分別獨立編碼。根據所實現的算法種類和操作類型的總數對算法標識進行統一編碼,例如若有η種算法,每種算法所能實現的操作類型的個數分別為U、L2……、Ln,若( 2m,則需要採用m位的二進位數來對算法標識進行編碼;假設每種算法最多有b個IP核,若2b, -J<b ^ 2b<,則需要採用b,位的二進位數來對算法核號進行編碼;算法狀態索引號採用固定長度,其長度與算法狀態存儲區的容量和狀態存儲區的個數有關;作業包序號的編碼位數決定了最大能夠處理的業務數據流的長度。
[0081]本實施例中,所述同步分轉控制模塊將作業包的算法狀態索引號存入同步阻塞隊列後,該作業包將處於阻塞狀態。
[0082]也就是說,當作業包需要被阻塞時有兩種處理方式:
[0083]一種處理方式是:將該作業包保留在原存儲位置;該處理方式下,一次處理流程可以如圖3所示,包括步驟301?307。
[0084]301、同步分轉控制模塊從輸入作業包緩衝區提取未判斷過的作業包。
[0085]302、同步分轉控制模塊判斷該作業包包頭中的算法狀態索引號是否已存在於同步正在處理隊列中。
[0086]303、該步驟有兩個分支:
[0087]如果已存在,則將該作業包的算法狀態索引號保存到同步阻塞隊列中;
[0088]如果不存在則將該作業包的算法狀態索引號保存到同步正在處理隊列中,算法處理模塊從輸入作業包緩衝區獲取該作業包,根據該作業包包頭中的算法標識,採用相應的算法對該作業包進行處理。
[0089]304、將處理完成的作業包的算法狀態索引號保存進同步已處理隊列。
[0090]305、阻塞查詢模塊從同步已處理隊列中獲取算法狀態索引號。
[0091]306、阻塞查詢模塊在所述同步阻塞隊列中查詢是否存在所獲取的算法狀態索引號。
[0092]307、該步驟有兩個分支:
[0093]如果查詢不到,則從所述同步正在處理隊列中刪除該算法狀態索引號;
[0094]如果能查詢到(查詢到多個條目時的情況參見前文),則從所述同步阻塞隊列中獲取所查詢到的條目對應的作業包的地址,並從所述同步阻塞隊列中刪除該條目。算法處理模塊根據所述地址從輸入作業包緩衝區獲取該作業包,根據該作業包包頭中的算法標識,採用相應的算法對該作業包進行處理。
[0095]圖3隻是本處理方式的一個範例,本實施例的實現細節並不局限於圖3的方案。
[0096]另一種處理方式是:根據作業包地址將完整作業包數據取出存入同步待處理作業包緩衝區,將作業包從原存儲位置刪除,同時將該作業包的地址更新為在同步待處理作業包緩衝區中的地址;該處理方式下,一次處理流程可以如圖4所示,包括步驟401?407。
[0097]401?407基本和301?307相同;區別在於:
[0098]步驟403中,如果已存在,還將該作業包移動到同步待處理作業包緩衝區中,並更新作業包的地址。
[0099]步驟407中,算法處理模塊是從同步待處理作業包緩衝區中獲取該作業包。
[0100]圖4隻是本處理方式的一個範例,本實施例的實現細節並不局限於圖4的方案。
[0101]不管哪種方式,均可以將阻塞作業包在原存儲位置或同步待處理作業包緩衝區中的地址連同算法狀態索引號作為一個條目,存入所述同步阻塞隊列。對存放有阻塞狀態的作業包的輸入作業包緩衝區或同步待處理作業包緩衝區的存儲單元,其上處於阻塞狀態的作業包在被激活,送入算法處理模塊之前,採用禁止寫信號的方法對此存儲單元進行防寫,防止其上的阻塞作業包被破環。
[0102]本實施例的一種實施方式中,存在同步待處理作業包緩衝區,所述同步待處理作業包緩衝區用於存儲處於阻塞狀態,等待前序作業包運算完成的作業包;所述同步待處理作業包緩衝區可以為一個,也可以為多個;可以和算法一一對應,也可以不一一對應;可以和算法核--對應,也可以不--對應;其對應關係可以是任意組合。
[0103]本實施方式中,所述步驟SlOl中還可以包括:當作業包的算法狀態索引號已處於同步正在處理隊列中時將該作業包移動到同步待處理作業包緩衝區,將該作業包的地址更新為在同步待處理作業包緩衝區中的地址。
[0104]作為一種實現方式,輸入作業包緩衝區和同步待處理作業包緩衝區可以採用環形存儲區實現,假設每一個存儲單元可以存儲I個作業包,則包含η個存儲單元的輸入作業包緩衝區和同步待處理作業包緩衝區在寫入地址從O依次遞增到η-1後,下一次流入的作業包將進入地址為O的存儲單元。
[0105]本實施例的一種實施方式中,所述步驟S102後還可以包括:
[0106]將處理完成的作業包的算法狀態索引號保存到同步已處理隊列;
[0107]步驟S103中,所述阻塞查詢模塊在所述同步阻塞隊列中查詢處理完成的作業包的算法狀態索引號的步驟具體可以包括:
[0108]所述阻塞查詢模塊從所述同步已處理隊列中提取作業包的算法狀態索引號,並查詢此算法狀態索引號是否存在於所述同步阻塞隊列中。
[0109]本實施方式中,所述同步已處理隊列如圖5所示,用於記錄已完成算法處理的作業包的算法狀態索引號,可為先進先出隊列,或為一般存儲區;可以有一個或多個,可以和算法——對應,也可以不——對應;可以和算法核——對應,也可以不——對應;其對應關係可以是任意組合。當所述同步已處理隊列和所述阻塞查詢模塊都有多個時,每個阻塞查詢模塊所對應的同步已處理隊列可以全都不相同,也可以全都相同,還可以部分相同。
[0110]本實施方式的一種備選方案中,同步正在處理隊列、同步阻塞隊列、同步已處理隊列和同步待處理作業包緩衝區的個數與算法處理模塊的個數相同,與算法處理模塊一一對應。且同步正在處理隊列、同步阻塞隊列、同步已處理隊列均為先入先出隊列。
[0111]本實施例的一種實施方式中,所述算法狀態索引號如圖6所示,具體可以包括:
[0112]尋址方式、算法狀態存儲區位置編號、基地址編號、算法標識。
[0113]所述尋址方式可以是絕對尋址或相對尋址;比如O表示絕對尋址,I表示相對尋址,本實施例中採用絕對尋址;
[0114]所述算法狀態存儲區位置編號用於區別不同的算法狀態存儲區,算法狀態存儲區可以為I個,也可以為多個,可以與算法核一一對應,也可以不一一對應;
[0115]所述基地址編號對應算法狀態數據的首地址,該地址可以為相對地址,也可以為絕對地址;
[0116]所述算法標識用於唯一區分具體算法,並可確定當前作業包需要尋址的算法狀態存儲區的數據長度。
[0117]本實施例的一種實施方式中,所述步驟SlOl中,所述同步分轉控制模塊從輸入作業包緩衝區獲取所述未判斷過的作業包;所述算法處理模塊具體可以包括算法分轉子模塊、算法預處理子模塊、算法運算子模塊和算法反饋子模塊;
[0118]所述步驟S102具體可以包括:
[0119]所述算法分轉子模塊獲取該作業包,根據作業包包頭中的算法標識,按照預定策略將作業包分配到相應的算法預處理隊列中;
[0120]所述算法預處理子模塊依次對所述算法預處理隊列中的各作業包進行以下處理:根據作業包的算法狀態索引號,從算法狀態存儲區中獲取該作業包的算法狀態索引號對應地址上的中間狀態數據(即該作業包的前序作業包運算得到的中間狀態數據,比如運算結果以及輪密鑰等),並根據作業包包頭中的所述算法標識和算法核號,生成處理命令作業包和處理數據作業包送到相應的算法運算子模塊進行處理;
[0121]算法反饋子模塊將算法運算子模塊處理完成的作業包返回給相應的算法應用進程,將處理完成的作業包的算法狀態索引號添加至同步已處理隊列中;並將運算產生的中間狀態數據保存在所述算法狀態存儲區中所述處理完成的作業包的算法狀態索引號對應的地址。
[0122]本實施方式中,所述算法狀態存儲區用於存儲作業包運算產生的中間狀態數據,比如作業包的運算結果以及密鑰等,作為不同業務運算中間狀態的暫存資源。算法狀態存儲區的寫入與否取決於算法標識,算法反饋模塊根據算法標識,以算法狀態索引號作為算法狀態存儲器的尋址基地址,將密鑰、運算結果/初始向量等寫入算法狀態存儲器。
[0123]本實施方式中,所述同步分轉控制模塊從輸入作業包緩衝區中提取作業包的算法狀態索引號(及地址)時可以但不限於採用先入先提取的方法。即若前次提取的算法狀態索引號為第i個存儲單元的作業包的,則下一次提取第i+Ι個存儲單元的作業包的算法狀態索引號(及地址)。
[0124]本實施方式中,採用I個算法狀態存儲區,可以用DDR實現。
[0125]下面用幾個具體的例子進一步說明本實施方式。
[0126]第一個例子為本實施例同步方法的具體執行流程,如圖7所示,包括:
[0127]701、同步分轉控制模塊從輸入作業包緩衝區中提取一個未判斷過的作業包的算法狀態索引號;還可以提取該作業包的地址;
[0128]702、判斷算法狀態索引號是否存在於同步正在處理隊列中;當算法狀態索引號存在於同步正在處理隊列時進行步驟703 ;不存在時進行705 ;
[0129]703、將該作業包的算法狀態索引號和作業包地址作為一個條目存入同步阻塞隊列,作業包處於阻塞狀態;
[0130]704、將此阻塞作業包送入同步待處理作業包緩衝區;返回步驟701。在其它例子中,本步驟可以不進行,可以不使用同步待處理作業包緩衝區。
[0131]705、將該作業包的算法狀態索引號存入同步正在處理隊列,獲取此作業包數據;
[0132]706、根據作業包包頭中的算法標識和算法核號將作業包分給相應的算法預處理子模塊;
[0133]707、算法預處理子模塊根據算法狀態索引號,從算法狀態存儲區中獲取該作業包的前序作業包產生的中間狀態數據,並根據算法標識,生成處理命令作業包和處理數據作業包送算法運算子模塊進行處理;
[0134]708、處理後的作業包在返回相應的算法應用進程的同時,將運算完成的作業包的算法狀態索引號添加至同步已處理隊列中;並將運算產生的中間狀態數據送算法狀態存儲區,存儲在算法狀態索引號對應的地址中。
[0135]709、阻塞查詢模塊從同步已處理隊列中提取作業包的算法狀態索引號;
[0136]710、查詢此算法狀態索引號是否存在於同步阻塞隊列中;如不存在則進行步驟711 ;存在(多條目時的情況參見上文)則進行步驟712 ;
[0137]711、直接將同步正在處理隊列中該算法狀態索引號刪除,返回701 ;
[0138]712、刪除同步阻塞隊列中所查詢到的條目;
[0139]713、根據同步阻塞隊列中所查詢到的條目中作業包地址,定位到同步待處理作業包緩衝區中作業包的位置,將完整的作業包數據取出並存入算法分轉子模塊,返回步驟706。
[0140]圖8所示為該例子中數據流間的關係圖。其中,作業包L表示數據流i的第j個作業包;Si表示數據流i的作業包的算法狀態索引號。假設輸入作業包緩衝區中的作業包Ii無正在進行算法預處理或處理的前序作業包,則將此作業包Ii送入算法分轉子模塊的同時,其算法狀態索引號S1送入同步正在處理隊列,如圖中801所示;其後的作業包li+1、作業包li+2、作業包li+3隻能處於阻塞狀態,可以保留在輸入作業包緩衝區中,也可以存入同步待處理作業包緩衝區中,其算法狀態索引號和其在輸入作業包緩衝區或同步待處理作業包緩衝區中的地址信息送入同步阻塞隊列,可以從低地址開始保存,但不限於此方式,如圖中802所示;輸入作業包緩衝區中的作業包2」、作業包3k、作業包4m由於無前序作業包在進行算法預處理或處理,其算法狀態索引號s2、s3、s4加入同步正在處理隊列中。若此時,作業包Ii已處理完成,其算法狀態索引號S1加入到同步已處理隊列中,如圖中803、804所示;如果阻塞查詢模塊採用自低地址開始查詢的方式在同步阻塞隊列中查詢到算法狀態索引號S1,如圖中805所示,則根據同步阻塞隊列此條目對應的地址找到作業包li+1送入算法分轉子模塊,同時刪除同步阻塞隊列中的此條目。如果沒查詢到,則從同步正在處理隊列中刪除該算法狀態索引號,如圖中806所示被激活的作業包的算法狀態索引號寫入同步正在處理隊列時,來自輸入作業包緩衝區的作業包算法狀態索引號的寫入處於阻塞狀態,必須等到被激活作業包li+l的算法狀態索引號S1寫入完成後,作業包5n的算法狀態索引號S5才能夠寫入到同步正在處理隊列中,如圖中807所示,。
[0141]第二個例子如圖9所示,虛線框中為算法處理模塊。
[0142]包括一個同步分轉控制模塊和一個阻塞查詢模塊,輸入作業包緩衝區為η個,同步正在處理隊列為m個,同步阻塞隊列為P個,同步待處理作業包緩衝區為q個,同步已處理隊列為k個。
[0143]一個同步分轉模塊依次輪詢η個輸入作業包緩衝區,當輸入作業包緩衝區中有數據時,則從輸入作業包緩衝區中提取作業包的算法狀態索引號,並依次查詢各個同步正在處理隊列,若此算法狀態索引號存在於某個同步正在處理隊列中,則此作業包保留在輸入作業包緩衝區中或將其按照預定策略存入某個同步待處理作業包緩衝區中,算法狀態索引號和此作業包在輸入作業包緩衝區或同步待處理作業包緩衝區中的地址按照預定策略存入某個同步阻塞隊列中;否則,將此算法狀態索引號按照預定策略存入某個同步正在處理隊列中,同時作業包送相應的算法分轉子模塊進行處理。
[0144]所述預定策略可以但不限於為同步待處理作業包緩衝區、同步正在處理隊列和同步阻塞隊列的均衡策略。
[0145]一個阻塞查詢模塊按照依次輪詢和先入先查詢的方法,從同步已處理隊列中提取作業包的算法狀態索引號,並遍歷各同步阻塞隊列,一旦找到相同的算法狀態索引號所在的一個條目,則按照同步阻塞隊列此條目中的地址定位到輸入作業包緩衝區或同步待處理作業包緩衝區,提取此地址的作業包送相應的算法分轉子模塊進行處理,刪除同步阻塞隊列中該條目;否則直接刪除同步正在處理隊列中此算法狀態索引號條目。
[0146]第三個例子如圖10所示。
[0147]包括多個同步分轉控制模塊I?a和多個阻塞查詢模塊I?b。輸入作業包緩衝區為a個,同步正在處理隊列為c個,同步阻塞隊列為d個,同步待處理作業包緩衝區為a個,同步已處理隊列為k個。
[0148]多個同步分轉控制模塊I?a與輸入作業包緩衝區I?a、同步待處理作業包緩衝區I?a——對應,也可以不——對應;其中輸入作業包緩衝區I包括輸入作業包緩衝區空間I1?ln,……,輸入作業包緩衝區a包括輸入作業包緩衝區空間B1?am。
[0149]各同步分轉模塊依次輪詢對應組的輸入作業包緩衝區空間,當輸入作業包緩衝區空間中有數據時,則從輸入作業包緩衝區空間中提取作業包的算法狀態索引號,並依次查詢各個同步正在處理隊列,若此算法狀態索引號存在於某個同步正在處理隊列中,則此作業包保留在輸入作業包緩衝區中或將其存入相應的同步待處理作業包緩衝區中,算法狀態索引號和此作業包在輸入作業包緩衝區或同步待處理作業包緩衝區中的地址按照預定策略存入某個同步阻塞隊列中;否則,將此算法狀態索引號按照預定策略存入某個同步正在處理隊列中,同時作業包送相應的算法分轉子模塊進行處理。
[0150]所述預定策略可以但不限於為同步待處理作業包緩衝區、同步正在處理隊列和同步阻塞隊列的均衡策略。
[0151]多個阻塞查詢模塊相互獨立工作,按照依次輪詢和先入先查詢的方法,從同步已處理隊列中提取作業包的算法狀態索引號,並遍歷各同步阻塞隊列,一旦找到相同的算法狀態索引號所在的一個條目,則按照同步阻塞隊列此條目中的地址定位到輸入作業包緩衝區或同步待處理作業包緩衝區,提取此地址的作業包送相應的算法分轉子模塊進行處理,刪除同步阻塞隊列中該條目;否則直接刪除同步正在處理隊列中此算法狀態索引號條目。同步已處理隊列為先入先出隊列,可避免不同的阻塞查詢模塊提取到同一個作業包的算法狀態索引號。
[0152]第四個例子如圖11所示。
[0153]包括多個同步分轉控制模塊I?a和多個阻塞查詢模塊I?a。輸入作業包緩衝區為a個,同步正在處理隊列為c個,同步阻塞隊列為d個,同步待處理作業包緩衝區為a個,同步已處理隊列為k個。
[0154]多個同步分轉控制模塊I?a與輸入作業包緩衝區I?a、同步待處理作業包緩衝區I?a——對應,也可以不——對應;其中輸入作業包緩衝區I包括輸入作業包緩衝區空間I1?ln,……,輸入作業包緩衝區a包括輸入作業包緩衝區空間B1?am。同步正在處理隊列I?c,分為了 a組,分別與同步分轉控制模塊I?a和阻塞查詢模塊I?a 對應,也可以不一一對應;同步阻塞隊列I?山也分為a組,分別與同步分轉控制模塊I?a--對應,也可以不--對應。
[0155]在此例子中,輸入作業包緩衝區、同步待處理作業包緩衝區、同步分轉控制模塊、阻塞查詢模塊也可以不同時為a個,其上述對應關係也可以不一一對應。
[0156]各同步分轉控制模塊依次輪詢對應組的輸入作業包緩衝區空間,當輸入作業包緩衝區空間中有數據時,則從輸入作業包緩衝區空間中提取作業包的算法狀態索引號,並依次查詢對應組的同步正在處理隊列,若此算法狀態索引號存在於某個同步正在處理隊列中,則此作業包保留在輸入作業包緩衝區中或將其存入相應的同步待處理作業包緩衝區中,算法狀態索引號和此作業包在輸入作業包緩衝區或同步待處理作業包緩衝區中的地址按照預定策略存入對應組中某個同步阻塞隊列中;否則,將此算法狀態索引號按照預定策略存入對應組中某個同步正在處理隊列中,同時作業包送相應的算法分轉子模塊進行處理。
[0157]所述預定策略可以但不限於為同步待處理作業包緩衝區、同步正在處理隊列和同步阻塞隊列的均衡策略。
[0158]同步已處理隊列I?k,分為了 a組,分別與阻塞查詢模塊I?a —一對應。
[0159]各阻塞查詢模塊按照依次輪詢和先入先查詢的方法,從對應組的同步已處理隊列中提取作業包的算法狀態索引號,並遍歷所有的同步阻塞隊列,一旦找到相同的算法狀態索引號所在的一個條目,則按照同步阻塞隊列此條目中的地址定位到輸入作業包緩衝區或同步待處理作業包緩衝區,提取此地址的作業包送相應的算法分轉子模塊進行處理,刪除同步阻塞隊列中該條目;否則直接刪除同步正在處理隊列中此算法狀態索引號條目。
[0160]本例子的一種變形方案中,同步分轉控制模塊、輸入作業包緩衝區和同步待處理作業包緩衝區的個數可以互不相同。也就是說,多個同步分轉控制模塊與多個輸入作業包緩衝區和多個同步待處理作業包緩衝區間可以不一一對應,而是按照某種映射關係進行對應。
[0161]本實施例的另一種實施方式中,步驟SlOl前還可以包括:算法分轉模塊從輸入作業包緩衝區讀取作業包,根據各作業包包頭中的算法標識,分別將各作業包放入相應的算法預處理隊列;
[0162]所述步驟SlOl中,所述同步分轉控制模塊從所述算法預處理隊列中獲取所述未判斷過的作業包;
[0163]本實施方式中,所述算法處理模塊包括算法預處理子模塊、算法運算子模塊和算法反饋子模塊;
[0164]所述步驟S102具體可以包括:
[0165]所述算法預處理子模塊獲取該作業包,根據該作業包的算法狀態索引號,從算法狀態存儲區中獲取該作業包的算法狀態索引號對應地址上的中間狀態數據,並根據作業包包頭中的所屬算法標識和算法核號,生成處理命令作業包和處理數據作業包送到相應的算法運算子模塊進行處理;
[0166]算法反饋子模塊將算法運算子模塊處理完成的作業包返回給相應的算法應用進程,將處理完成的作業包的算法狀態索引號添加至同步已處理隊列中;並將運算產生的中間狀態數據保存在所述算法狀態存儲區中所述處理完成的作業包的算法狀態索引號對應的地址。
[0167]本實施方式的一個例子如圖12所示,包括:
[0168]一個算法分轉模塊、一個同步分轉控制模塊和一個阻塞查詢模塊,輸入作業包緩衝區為η個,同步正在處理隊列為m個,同步阻塞隊列為P個,同步待處理作業包緩衝區為q個,同步已處理隊列為k個,算法預處理隊列為s個。
[0169]所述算法分轉模塊依次輪詢η個輸入作業包緩衝區,當輸入作業包緩衝區中有數據時,則按照預定策略將作業包分入不同的算法預處理隊列。
[0170]所述同步分轉控制模塊依次輪詢s個算法預處理隊列,當算法預處理隊列中有數據時,從算法預處理隊列中提取作業包的算法狀態索引號,並依次查詢各個同步正在處理隊列,若此算法狀態索引號存在於某個同步正在處理隊列中,則此作業包保留在算法預處理隊列中或將其按照預定策略存入某個同步待處理作業包緩衝區中,並將此作業包的算法狀態索引號和此作業包在算法預處理隊列或同步待處理作業包緩衝區中的地址按照預定策略存入某個同步阻塞隊列中;否則,將此算法狀態索引號按照預定策略存入某個同步正在處理隊列中,同時作業包送相應的算法預處理子模塊進行處理。
[0171]所述預定策略可以但不限於為算法預處理隊列、同步待處理作業包緩衝區、同步正在處理隊列和同步阻塞隊列的均衡策略。
[0172]所述阻塞查詢模塊按照先入先查詢的方法,從同步已處理隊列中提取出一個作業包的算法狀態索引號,並遍歷各同步阻塞隊列,如若找到相同的算法狀態索引號,則按照同步阻塞隊列中此算法狀態索引號所在條目中的地址定位到算法預處理隊列或同步待處理作業包緩衝區,提取此地址的作業包送相應的算法預處理子模塊進行處理,並刪除同步阻塞隊列中該條目;否則直接刪除同步正在處理隊列中此算法狀態索引號條目。
[0173]本例子的一種變形方案中,可以包括多個算法分轉模塊、多個同步分轉控制模塊和多個阻塞查詢模塊。多個算法分轉模塊與多個輸入作業包緩衝區、多個同步待處理作業包緩衝區分別一一對應。多個同步分轉控制模塊/阻塞查詢模塊均同時對應所有的同步正在處理隊列、同步阻塞隊列;多個阻塞查詢模塊同時對應所有的同步已處理隊列。
[0174]本例子的又一種變形方案中,與上一個變形方案的差別在於,同步正在處理隊列分為多組,與同步分轉控制模塊和阻塞查詢模塊分別一一對應;同步阻塞隊列也分為多組,與同步分轉控制模塊一一對應。
[0175]實際應用時的方案不限於以上例子及變形方案,還可以有其他變形方案。
[0176]實施例二,一種算法數據處理的同步裝置,包括:
[0177]同步分轉控制模塊,算法處理模塊和阻塞查詢模塊;
[0178]所述同步分轉控制模塊用於對未判斷過的作業包逐個進行下述操作:判斷該作業包包頭中的算法狀態索引號是否已處於同步正在處理隊列中;如果是則將該作業包的算法狀態索引號作為一個條目保存到同步阻塞隊列中;如果不是則將該作業包的算法狀態索引號作為一個條目保存到同步正在處理隊列中,根據該作業包的地址獲取該作業包後啟動所述算法處理模塊進行處理;
[0179]所述算法處理模塊用於根據所獲取的作業包包頭中的算法標識,採用相應的算法對該作業包進行處理,處理完成後啟動阻塞查詢模塊;
[0180]所述阻塞查詢模塊在所述同步阻塞隊列中查詢處理完成的作業包的算法狀態索引號,如果查詢不到,則從所述同步正在處理隊列中刪除該算法狀態索引號;如果能查詢到一個條目,則以該條目作為查詢到的條目;如果能查詢到多個條目,則將在數據流中位置最前的作業包對應的條目作為查詢到的條目;獲取所查詢到的條目對應的地址,並從所述同步阻塞隊列中刪除該查詢到的條目,根據所獲取的作業包的地址獲取作業包後啟動所述算法處理模塊進行處理。
[0181]本實施例的一種實施方式中,所述輸入作業包緩衝區為一個或多個;所述同步分轉控制模塊為一個或多個;所述阻塞查詢模塊為一個或多個;所述同步正在處理隊列為一個或多個;所述同步阻塞隊列為一個或多個。
[0182]本實施例的一種實施方式中,所述同步分轉控制模塊還用於當作業包的算法狀態索引號已處於同步正在處理隊列中時將該作業包移動到同步待處理作業包緩衝區,將該作業包的地址更新為在同步待處理作業包緩衝區中的地址;
[0183]所述同步待處理作業包緩衝區為一個或多個。
[0184]本實施例的一種實施方式中,所述算法處理模塊還用於將處理完成的作業包的算法狀態索引號保存到同步已處理隊列;
[0185]所述阻塞查詢模塊在所述同步阻塞隊列中查詢處理完成的作業包的算法狀態索引號是指:
[0186]所述阻塞查詢模塊從所述同步已處理隊列中提取作業包的算法狀態索引號,並查詢此算法狀態索引號是否存在於所述同步阻塞隊列中;
[0187]所述同步已處理隊列為一個或多個。
[0188]本實施方式的一種備選方案中,所述同步分轉控制模塊從輸入作業包緩衝區獲取所述未判斷過的作業包;所述算法處理模塊包括算法分轉子模塊、算法預處理子模塊、算法運算子模塊和算法反饋子模塊;
[0189]所述算法分轉子模塊用於根據所獲取的作業包包頭中的算法標識,按照預定策略將作業包分配到相應的算法預處理隊列中;
[0190]所述算法預處理子模塊用於依次對所述算法預處理隊列中的各作業包進行以下處理:根據作業包的算法狀態索引號,從算法狀態存儲區中獲取該作業包的算法狀態索引號對應地址上的中間狀態數據,並根據作業包包頭中的所屬算法標識和算法核號,生成處理命令作業包和處理數據作業包送到相應的算法運算子模塊進行處理;
[0191]所述算法反饋子模塊用於將算法運算子模塊處理完成的作業包返回給相應的算法應用進程,將處理完成的作業包的算法狀態索引號添加至同步已處理隊列中;並將運算產生的中間狀態數據保存在所述算法狀態存儲區中所述處理完成的作業包的算法狀態索引號對應的地址。
[0192]本實施方式的一種備選方案中,所述的裝置還包括:
[0193]算法分轉模塊,用於從輸入作業包緩衝區讀取作業包,根據預定策略放入相應的算法預處理隊列;
[0194]所述同步分轉控制模塊從所述算法預處理隊列中獲取所述未判斷過的作業包;
[0195]所述算法處理模塊包括算法預處理子模塊、算法運算子模塊和算法反饋子模塊;
[0196]所述算法預處理子模塊用於根據所獲取的作業包的算法狀態索引號,從算法狀態存儲區中獲取該作業包的算法狀態索引號對應地址上的中間狀態數據,並根據作業包包頭中的所屬算法標識和算法核號,生成處理命令作業包和處理數據作業包送到相應的算法運算子模塊進行處理;
[0197]所述算法反饋子模塊將算法運算子模塊處理完成的作業包返回給相應的算法應用進程,將處理完成的作業包的算法狀態索引號添加至同步已處理隊列中;並將運算產生的中間狀態數據保存在所述算法狀態存儲區中所述處理完成的作業包的算法狀態索引號對應的地址。
[0198]本領域普通技術人員可以理解上述方法中的全部或部分步驟可通過程序來指令相關硬體完成,所述程序可以存儲於計算機可讀存儲介質中,如只讀存儲器、磁碟或光碟等。可選地,上述實施例的全部或部分步驟也可以使用一個或多個集成電路來實現。相應地,上述實施例中的各模塊/單元可以採用硬體的形式實現,也可以採用軟體功能模塊的形式實現。本發明不限制於任何特定形式的硬體和軟體的結合。
[0199]當然,本發明還可有其他多種實施例,在不背離本發明精神及其實質的情況下,熟悉本領域的技術人員當可根據本發明作出各種相應的改變和變形,但這些相應的改變和變形都應屬於本發明的權利要求的保護範圍。
【權利要求】
1.一種算法數據處理的同步方法,其特徵在於,包括: 5101、同步分轉控制模塊對未判斷過的作業包逐個進行下述操作:判斷該作業包包頭中的算法狀態索引號是否已處於同步正在處理隊列中;如果是則將該作業包的算法狀態索引號作為一個條目保存到同步阻塞隊列中;如果不是則將該作業包的算法狀態索引號作為一個條目保存到同步正在處理隊列中,根據該作業包的地址獲取該作業包後進行步驟S102 ; 5102、算法處理模塊根據所獲取的作業包包頭中的算法標識,採用相應的算法對該作業包進行處理,處理完成後進行步驟S103 ; 5103、阻塞查詢模塊在所述同步阻塞隊列中查詢處理完成的作業包的算法狀態索引號,如果查詢不到,則從所述同步正在處理隊列中刪除該算法狀態索引號;如果能查詢到一個條目,則以該條目作為查詢到的條目;如果能查詢到多個條目,則將在數據流中位置最前的作業包對應的條目作為查詢到的條目;獲取所查詢到的條目對應的地址,並從所述同步阻塞隊列中刪除該查詢到的條目,根據所獲取的地址獲取作業包後進行步驟S102。
2.如權利要求1所述的方法,其特徵在於: 所述輸入作業包緩衝區為一個或多個;所述同步分轉控制模塊為一個或多個;所述阻塞查詢模塊為一個或多個;所述同步正在處理隊列為一個或多個;所述同步阻塞隊列為一個或多個。
3.如權利要求1所述的方法,其特徵在於,所述步驟SlOl還包括: 當作業包的算法狀態索引號已處於同步正在處理隊列中時將該作業包移動到同步待處理作業包緩衝區,將該作業包的地址更新為在同步待處理作業包緩衝區中的地址; 所述同步待處理作業包緩衝區為一個或多個。
4.如權利要求1所述的方法,其特徵在於,所述步驟S102後還包括: 將處理完成的作業包的算法狀態索引號保存到同步已處理隊列; 步驟S103中,所述阻塞查詢模塊在所述同步阻塞隊列中查詢處理完成的作業包的算法狀態索引號的步驟包括: 所述阻塞查詢模塊從所述同步已處理隊列中提取作業包的算法狀態索引號,並查詢此算法狀態索引號是否存在於所述同步阻塞隊列中; 所述同步已處理隊列為一個或多個。
5.如權利要求1到3中任一項所述的方法,其特徵在於: 所述步驟SlOl中,所述同步分轉控制模塊從輸入作業包緩衝區獲取所述未判斷過的作業包;所述算法處理模塊包括算法分轉子模塊、算法預處理子模塊、算法運算子模塊和算法反饋子模塊; 所述步驟S102包括: 所述算法分轉子模塊根據所獲取的作業包包頭中的算法標識,按照預定策略將作業包分配到相應的算法預處理隊列中; 所述算法預處理子模塊依次對所述算法預處理隊列中的各作業包進行以下處理:根據作業包的算法狀態索引號,從算法狀態存儲區中獲取該作業包的算法狀態索引號對應地址上的中間狀態數據,並根據作業包包頭中的所屬算法標識和算法核號,生成處理命令作業包和處理數據作業包送到相應的算法運算子模塊進行處理; 所述算法反饋子模塊將算法運算子模塊處理完成的作業包返回給相應的算法應用進程,將處理完成的作業包的算法狀態索引號添加至同步已處理隊列中;並將運算產生的中間狀態數據保存在所述算法狀態存儲區中所述處理完成的作業包的算法狀態索引號對應的地址。
6.如權利要求1到3中任一項所述的方法,其特徵在於,所述步驟SlOl前還包括: 算法分轉模塊從輸入作業包緩衝區讀取作業包,根據預定策略放入相應的算法預處理隊列; 所述步驟SlOl中,所述同步分轉控制模塊從所述算法預處理隊列中獲取所述未判斷過的作業包; 所述算法處理模塊包括算法預處理子模塊、算法運算子模塊和算法反饋子模塊; 所述步驟S102包括: 所述算法預處理子模塊根據所獲取的作業包的算法狀態索引號,從算法狀態存儲區中獲取該作業包的算法狀態索引號對應地址上的中間狀態數據,並根據作業包包頭中的所屬算法標識和算法核號,生成處理命令作業包和處理數據作業包送到相應的算法運算子模塊進行處理; 所述算法反饋子模塊將算法運算子模塊處理完成的作業包返回給相應的算法應用進程,將處理完成的作業包的算法狀態索引號添加至同步已處理隊列中;並將運算產生的中間狀態數據保存在所述算法狀態存儲區中所述處理完成的作業包的算法狀態索引號對應的地址。
7.一種算法數據處理的同步裝置,其特徵在於,包括: 同步分轉控制模塊,算法處理模塊和阻塞查詢模塊; 所述同步分轉控制模塊用於對未判斷過的作業包逐個進行下述操作:判斷該作業包包頭中的算法狀態索引號是否已處於同步正在處理隊列中;如果是則將該作業包的算法狀態索引號作為一個條目保存到同步阻塞隊列中;如果不是則將該作業包的算法狀態索引號作為一個條目保存到同步正在處理隊列中,根據該作業包的地址獲取該作業包後啟動所述算法處理模塊進行處理; 所述算法處理模塊用於根據所獲取的作業包包頭中的算法標識,採用相應的算法對該作業包進行處理,處理完成後啟動阻塞查詢模塊; 所述阻塞查詢模塊在所述同步阻塞隊列中查詢處理完成的作業包的算法狀態索引號,如果查詢不到,則從所述同步正在處理隊列中刪除該算法狀態索引號;如果能查詢到一個條目,則以該條目作為查詢到的條目;如果能查詢到多個條目,則將在數據流中位置最前的作業包對應的條目作為查詢到的條目;獲取所查詢到的條目對應的地址,並從所述同步阻塞隊列中刪除該查詢到的條目,根據所獲取的作業包的地址獲取作業包後啟動所述算法處理模塊進行處理。
8.如權利要求7所述的裝置,其特徵在於: 所述輸入作業包緩衝區為一個或多個;所述同步分轉控制模塊為一個或多個;所述阻塞查詢模塊為一個或多個;所述同步正在處理隊列為一個或多個;所述同步阻塞隊列為一個或多個。
9.如權利要求7所述的裝置,其特徵在於: 所述同步分轉控制模塊還用於當作業包的算法狀態索引號已處於同步正在處理隊列中時將該作業包移動到同步待處理作業包緩衝區,將該作業包的地址更新為在同步待處理作業包緩衝區中的地址; 所述同步待處理作業包緩衝區為一個或多個。
10.如權利要求7到9中任一項所述的裝置,其特徵在於: 所述算法處理模塊還用於將處理完成的作業包的算法狀態索引號保存到同步已處理隊列; 所述阻塞查詢模塊在所述同步阻塞隊列中查詢處理完成的作業包的算法狀態索引號是指: 所述阻塞查詢模塊從所述同步已處理隊列中提取作業包的算法狀態索引號,並查詢此算法狀態索引號是否存在於所述同步阻塞隊列中; 所述同步已處理隊列為一個或多個。
11.如權利要求10所述的裝置,其特徵在於: 所述同步分轉控制模塊從輸入作業包緩衝區獲取所述未判斷過的作業包;所述算法處理模塊包括算法分轉子模塊、算法預處理子模塊、算法運算子模塊和算法反饋子模塊; 所述算法分轉子模塊用於根據所獲取的作業包包頭中的算法標識,根據預定策略將作業包分配到相應的算法預處理隊列中; 所述算法預處理子模塊用於依次對所述算法預處理隊列中的各作業包進行以下處理:根據作業包的算法狀態索引號,從算法狀態存儲區中獲取該作業包的算法狀態索引號對應地址上的中間狀態數據,並根據作業包包頭中的所屬算法標識和算法核號,生成處理命令作業包和處理數據作業包送到相應的算法運算子模塊進行處理; 所述算法反饋子模塊用於將算法運算子模塊處理完成的作業包返回給相應的算法應用進程,將處理完成的作業包的算法狀態索引號添加至同步已處理隊列中;並將運算產生的中間狀態數據保存在所述算法狀態存儲區中所述處理完成的作業包的算法狀態索引號對應的地址。
12.如權利要求10所述的裝置,其特徵在於,還包括: 算法分轉模塊,用於從輸入作業包緩衝區讀取作業包,根據預定策略放入相應的算法預處理隊列; 所述同步分轉控制模塊從所述算法預處理隊列中獲取所述未判斷過的作業包; 所述算法處理模塊包括算法預處理子模塊、算法運算子模塊和算法反饋子模塊; 所述算法預處理子模塊用於根據所獲取的作業包的算法狀態索引號,從算法狀態存儲區中獲取該作業包的算法狀態索引號對應地址上的中間狀態數據,並根據作業包包頭中的所屬算法標識和算法核號,生成處理命令作業包和處理數據作業包送到相應的算法運算子模塊進行處理; 所述算法反饋子模塊將算法運算子模塊處理完成的作業包返回給相應的算法應用進程,將處理完成的作業包的算法狀態索引號添加至同步已處理隊列中;並將運算產生的中間狀態數據保存在所述算法狀態存儲區中所述處理完成的作業包的算法狀態索引號對應的地址。
【文檔編號】G06F9/52GK104391751SQ201410550488
【公開日】2015年3月4日 申請日期:2014年10月16日 優先權日:2014年10月16日
【發明者】李鳳華, 李莉, 李暉, 耿魁, 史國振 申請人:廣州天寧信息技術有限公司, 廣州科元信息技術有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀