本發(fā)明涉及計算機(jī),特別涉及一種編解碼設(shè)備及系統(tǒng)。
背景技術(shù):
1、目前,raid(redundant?arrays?of?independent?disks,磁盤陣列)算法大多通過軟件執(zhí)行,軟件執(zhí)行效率受限于主機(jī)cpu(central?processing?unit,中央處理器)性能,且算法執(zhí)行過程還可能和主機(jī)上的其他業(yè)務(wù)爭搶資源,導(dǎo)致主機(jī)cpu的開銷大,會拖慢raid算法的執(zhí)行效率。
2、因此,如何提高raid算法的執(zhí)行效率,是本領(lǐng)域技術(shù)人員需要解決的問題。
技術(shù)實現(xiàn)思路
1、有鑒于此,本發(fā)明的目的在于提供一種編解碼設(shè)備及系統(tǒng),以提高raid算法的執(zhí)行效率。其具體方案如下:
2、第一方面,本發(fā)明提供了一種編解碼設(shè)備,包括:第一處理核心、與所述第一處理核心連接的第一緩存、與所述第一緩存連接的多個raid算法執(zhí)行器、與每一raid算法執(zhí)行器連接的第二緩存、以及與所述第二緩存連接的第二處理核心;
3、其中,所述第一處理核心用于:獲取目標(biāo)任務(wù)和所述目標(biāo)任務(wù)的待處理數(shù)據(jù);所述目標(biāo)任務(wù)用于實現(xiàn)至少一個raid算法的編碼計算或解碼計算;
4、相應(yīng)地,所述第一處理核心用于:按照時分復(fù)用原則和所述目標(biāo)任務(wù)實現(xiàn)的raid算法的類型對所述待處理數(shù)據(jù)進(jìn)行劃分,得到多個子數(shù)據(jù);
5、所述第一緩存用于:存儲所述多個子數(shù)據(jù);
6、每一raid算法執(zhí)行器用于:從所述第一緩存讀取與自身中的raid算法引擎匹配的至少一個子數(shù)據(jù),并利用所述raid算法引擎對讀取的子數(shù)據(jù)進(jìn)行編碼計算或解碼計算;
7、所述第二緩存用于:存儲每一raid算法執(zhí)行器輸出的計算結(jié)果;
8、所述第二處理核心用于:根據(jù)所述第二緩存中存儲的計算結(jié)果生成地址訪問命令,并向所述編解碼設(shè)備所屬的主機(jī)發(fā)送命令已生成消息,以使所述主機(jī)根據(jù)所述命令已生成消息獲取所述地址訪問命令后,并按照所述地址訪問命令從所述第二緩存直接讀取計算結(jié)果;所述地址訪問命令用于訪問所述第二緩存中的一段存儲地址。
9、可選地,所述第一處理核心包括:
10、任務(wù)解析模塊用于:解析所述目標(biāo)任務(wù)得到解析結(jié)果;所述解析結(jié)果包括:所述目標(biāo)任務(wù)實現(xiàn)的raid算法的類型,編碼計算的編碼個數(shù),解碼計算的解碼個數(shù),所述待處理數(shù)據(jù)關(guān)聯(lián)的有效數(shù)據(jù)位信息、校驗位信息、地址列表指針及參數(shù)列表指針;
11、任務(wù)處理模塊用于:在確定所述解析結(jié)果無誤時,對所述待處理數(shù)據(jù)進(jìn)行劃分。
12、可選地,所述任務(wù)處理模塊包括:
13、分時復(fù)用控制單元用于:根據(jù)所述解析結(jié)果和各個raid算法執(zhí)行器的運行情況,確定時分復(fù)用分配規(guī)則;
14、地址信息讀取單元用于:讀取所述待處理數(shù)據(jù)在主機(jī)的存儲地址;
15、數(shù)據(jù)參數(shù)讀取單元用于:根據(jù)所述時分復(fù)用分配規(guī)則確定讀取的數(shù)據(jù)矩陣的行列大小,從所述待處理數(shù)據(jù)在主機(jī)的存儲地址讀取數(shù)據(jù)后,將讀取的數(shù)據(jù)寫入所述第一緩存。
16、可選地,所述任務(wù)處理模塊還用于:在確定所述解析結(jié)果錯誤時,丟棄所述目標(biāo)任務(wù),并向所述編解碼設(shè)備所屬的主機(jī)發(fā)送任務(wù)錯誤消息。
17、可選地,所述第一緩存包括:多個輸入緩存單元;
18、相應(yīng)地,每一輸入緩存單元用于:存儲與同一raid算法引擎匹配的至少一個子數(shù)據(jù)。
19、可選地,每一raid算法執(zhí)行器包括:至少一個raid算法引擎;
20、相應(yīng)地,任一raid算法引擎用于:以raid1算法、raid2算法、raid3算法、raid5算法、raid6算法或raidtp算法進(jìn)行編碼計算或解碼計算。
21、可選地,每一raid算法執(zhí)行器還用于:按照時分復(fù)用原則將讀取的至少一個子數(shù)據(jù)分發(fā)至自身中的不同raid算法引擎,以使同一raid算法執(zhí)行器中的不同raid算法引擎以時分復(fù)用原則運行。
22、可選地,所述第二緩存包括:多個輸出緩存單元;
23、相應(yīng)地,每一輸出緩存單元用于:存儲同一raid算法執(zhí)行器輸出的計算結(jié)果。
24、可選地,所述第二處理核心包括:
25、命令生成模塊用于:根據(jù)所述第二緩存中存儲的計算結(jié)果生成地址訪問命令;
26、觸發(fā)模塊用于:向所述編解碼設(shè)備所屬的主機(jī)發(fā)送命令已生成消息,以使所述主機(jī)根據(jù)所述命令已生成消息獲取所述地址訪問命令后,并按照所述地址訪問命令從所述第二緩存直接讀取計算結(jié)果。
27、可選地,所述命令生成模塊具體用于:在檢測到所述第二緩存有新計算結(jié)果寫入時,基于所述新計算結(jié)果在所述第二緩存中的存儲地址生成相應(yīng)的地址訪問命令,并將該地址訪問命令記錄至環(huán)形命令表。
28、可選地,所述觸發(fā)模塊具體用于:在檢測到所述環(huán)形命令表中有未處理的地址訪問命令時,向所述編解碼設(shè)備所屬的主機(jī)發(fā)送命令已生成消息。
29、可選地,所述觸發(fā)模塊具體用于:檢測所述環(huán)形命令表中每一地址訪問命令對應(yīng)的有效標(biāo)志信息,根據(jù)所述有效標(biāo)志信息確定所述環(huán)形命令表中是否有未處理的地址訪問命令。
30、可選地,所述第二處理核心還用于:按照所述目標(biāo)任務(wù)對所述第二緩存中的不同raid算法執(zhí)行器輸出的計算結(jié)果進(jìn)行行列重組,以進(jìn)行計算結(jié)果的整合。
31、可選地,每一raid算法執(zhí)行器包括:使能器件;
32、相應(yīng)地,所述使能器件用于:對相應(yīng)raid算法執(zhí)行器進(jìn)行使能或關(guān)閉。
33、可選地,所述第一處理核心還用于:向所述編解碼設(shè)備所屬的主機(jī)發(fā)送已就緒消息,以使所述主機(jī)根據(jù)所述已就緒消息向所述第一處理核心發(fā)送所述目標(biāo)任務(wù)和所述待處理數(shù)據(jù)。
34、可選地,所述第一處理核心還包括:配置寄存器;
35、相應(yīng)地,所述配置寄存器用于:響應(yīng)于外部輸入的配置操作,對編碼計算的編碼個數(shù)和解碼計算的解碼個數(shù)進(jìn)行配置,以調(diào)整所述編解碼設(shè)備支持的raid算法的類型。
36、第二方面,本發(fā)明提供了一種編解碼系統(tǒng),包括:主機(jī)和前述任一項所述的編解碼設(shè)備。
37、可選地,所述編解碼設(shè)備有多個;所述主機(jī)與每一編解碼設(shè)備通信連接。
38、可選地,所述主機(jī)通過遠(yuǎn)程直接數(shù)據(jù)存取技術(shù)(rdma,remote?direct?memoryaccess)和/或存儲器直接訪問技術(shù)(dma,direct?memory?access)與每一編解碼設(shè)備通信。
39、可選地,所述主機(jī)通過擴(kuò)展芯片與每一編解碼設(shè)備連接。
40、通過以上方案可知,本發(fā)明提供了一種編解碼設(shè)備,包括:第一處理核心、與所述第一處理核心連接的第一緩存、與所述第一緩存連接的多個raid算法執(zhí)行器、與每一raid算法執(zhí)行器連接的第二緩存、以及與所述第二緩存連接的第二處理核心;其中,所述第一處理核心用于:獲取目標(biāo)任務(wù)和所述目標(biāo)任務(wù)的待處理數(shù)據(jù);所述目標(biāo)任務(wù)用于實現(xiàn)至少一個raid算法的編碼計算或解碼計算;相應(yīng)地,所述第一處理核心用于:按照時分復(fù)用原則和所述目標(biāo)任務(wù)實現(xiàn)的raid算法的類型對所述待處理數(shù)據(jù)進(jìn)行劃分,得到多個子數(shù)據(jù);所述第一緩存用于:存儲所述多個子數(shù)據(jù);每一raid算法執(zhí)行器用于:從所述第一緩存讀取與自身中的raid算法引擎匹配的至少一個子數(shù)據(jù),并利用所述raid算法引擎對讀取的子數(shù)據(jù)進(jìn)行編碼計算或解碼計算;所述第二緩存用于:存儲每一raid算法執(zhí)行器輸出的計算結(jié)果;所述第二處理核心用于:根據(jù)所述第二緩存中存儲的計算結(jié)果生成地址訪問命令,并向所述編解碼設(shè)備所屬的主機(jī)發(fā)送命令已生成消息,以使所述主機(jī)根據(jù)所述命令已生成消息獲取所述地址訪問命令后,并按照所述地址訪問命令從所述第二緩存直接讀取計算結(jié)果;所述地址訪問命令用于訪問所述第二緩存中的一段存儲地址。
41、可見,本發(fā)明提供了一種專用于進(jìn)行raid編碼和解碼的硬件設(shè)備,有益效果在于:能夠以并行和時分復(fù)用原則調(diào)用raid算法執(zhí)行器進(jìn)行編碼計算或解碼計算,且適用于各種類型的raid算法,靈活性高,應(yīng)用廣泛,能夠提高數(shù)據(jù)吞吐率和硬件資源利用率,提高raid算法的執(zhí)行效率。
42、相應(yīng)地,本發(fā)明提供的一種編解碼系統(tǒng),也同樣具有上述技術(shù)效果。