本技術(shù)涉及計(jì)算機(jī),特別涉及一種數(shù)據(jù)傳輸方法、裝置以及dma控制器。
背景技術(shù):
1、dma(direct?memory?access,即直接內(nèi)存訪問(wèn)),是計(jì)算機(jī)系統(tǒng)中用于高效傳輸?shù)挠布C(jī)制。通過(guò)dma控制器,外設(shè)與內(nèi)存之間可以直接進(jìn)行數(shù)據(jù)交換,而不需要cpu的干預(yù),允許cpu在進(jìn)行數(shù)據(jù)傳輸?shù)耐瑫r(shí)處理其他任務(wù),從而極大地提高了數(shù)據(jù)的傳輸效率,有效地減輕了cpu的負(fù)擔(dān)。
2、dma控制器通常設(shè)計(jì)為多通道架構(gòu),以增強(qiáng)并行處理能力。每個(gè)通道獨(dú)立負(fù)責(zé)特定的數(shù)據(jù)傳輸任務(wù),實(shí)現(xiàn)高效并行操作。在數(shù)據(jù)傳輸過(guò)程中,通常將接收到的多個(gè)數(shù)據(jù)傳輸任務(wù)分配到不同的dma通道來(lái)分別執(zhí)行。沒(méi)有被分配到數(shù)據(jù)傳輸任務(wù)的通道不參與數(shù)據(jù)傳輸過(guò)程,這將會(huì)導(dǎo)致dma控制器的資源利用率不高,從而影響數(shù)據(jù)傳輸效率。
技術(shù)實(shí)現(xiàn)思路
1、本技術(shù)實(shí)施例提供了一種數(shù)據(jù)傳輸方法、裝置以及dma控制器,提高了dma控制器中dma通道的利用率,從而能夠提高數(shù)據(jù)傳輸效率。所述技術(shù)方案如下:
2、一方面,提供了一種數(shù)據(jù)傳輸方法,所述方法包括:
3、在接收到多個(gè)數(shù)據(jù)傳輸任務(wù)的情況下,獲取所述多個(gè)數(shù)據(jù)傳輸任務(wù)的任務(wù)總數(shù)量和dma控制器中處于空閑狀態(tài)的dma通道對(duì)應(yīng)的通道總數(shù)量;
4、在所述通道總數(shù)量超過(guò)所述任務(wù)總數(shù)量的情況下,基于所述多個(gè)數(shù)據(jù)傳輸任務(wù)之間的優(yōu)先級(jí)、所述通道總數(shù)量和所述任務(wù)總數(shù)量,對(duì)所述多個(gè)數(shù)據(jù)傳輸任務(wù)中的至少一個(gè)目標(biāo)任務(wù)進(jìn)行拆分,得到所述至少一個(gè)目標(biāo)任務(wù)的多個(gè)子任務(wù),所述至少一個(gè)目標(biāo)任務(wù)為所述多個(gè)數(shù)據(jù)傳輸任務(wù)中優(yōu)先級(jí)較高的數(shù)據(jù)傳輸任務(wù),拆分后得到的子任務(wù)的總數(shù)量與未被拆分的數(shù)據(jù)傳輸任務(wù)的數(shù)量之和等于所述通道總數(shù)量;
5、將所述至少一個(gè)目標(biāo)任務(wù)的多個(gè)子任務(wù)和未被拆分的數(shù)據(jù)傳輸任務(wù)中的各個(gè)任務(wù),分別分配給所述dma控制器中處于空閑狀態(tài)的dma通道;
6、控制所述dma控制器中的dma通道并行執(zhí)行各自的數(shù)據(jù)傳輸任務(wù)。
7、另一方面,提供了一種數(shù)據(jù)傳輸裝置,所述裝置包括:
8、第一獲取模塊,用于在接收到多個(gè)數(shù)據(jù)傳輸任務(wù)的情況下,獲取所述多個(gè)數(shù)據(jù)傳輸任務(wù)的任務(wù)總數(shù)量和dma控制器中處于空閑狀態(tài)的dma通道對(duì)應(yīng)的通道總數(shù)量;
9、拆分模塊,用于在所述通道總數(shù)量超過(guò)所述任務(wù)總數(shù)量的情況下,基于所述多個(gè)數(shù)據(jù)傳輸任務(wù)之間的優(yōu)先級(jí)、所述通道總數(shù)量和所述任務(wù)總數(shù)量,對(duì)所述多個(gè)數(shù)據(jù)傳輸任務(wù)中的至少一個(gè)目標(biāo)任務(wù)進(jìn)行拆分,得到所述至少一個(gè)目標(biāo)任務(wù)的多個(gè)子任務(wù),所述至少一個(gè)目標(biāo)任務(wù)為所述多個(gè)數(shù)據(jù)傳輸任務(wù)中優(yōu)先級(jí)較高的數(shù)據(jù)傳輸任務(wù),拆分后得到的子任務(wù)的總數(shù)量與未被拆分的數(shù)據(jù)傳輸任務(wù)的數(shù)量之和等于所述通道總數(shù)量;
10、分配模塊,用于將所述至少一個(gè)目標(biāo)任務(wù)的多個(gè)子任務(wù)和未被拆分的數(shù)據(jù)傳輸任務(wù)中的各個(gè)任務(wù),分別分配給所述dma控制器中處于空閑狀態(tài)的dma通道;
11、控制模塊,用于控制所述dma控制器中的dma通道并行執(zhí)行各自的數(shù)據(jù)傳輸任務(wù)。
12、在一些實(shí)施例中,所述拆分模塊,包括:
13、確定單元,用于在所述通道總數(shù)量超過(guò)所述任務(wù)總數(shù)量的情況下,按照優(yōu)先級(jí)由高到低的順序,基于所述通道總數(shù)量和所述任務(wù)總數(shù)量,依次確定待拆分的所述至少一個(gè)目標(biāo)任務(wù)中每個(gè)目標(biāo)任務(wù)對(duì)應(yīng)的子任務(wù)數(shù)量;
14、拆分單元,用于對(duì)于任一目標(biāo)任務(wù),基于所述目標(biāo)任務(wù)對(duì)應(yīng)的子任務(wù)數(shù)量,對(duì)所述目標(biāo)任務(wù)進(jìn)行拆分,得到所述子任務(wù)數(shù)量的子任務(wù)。
15、在一些實(shí)施例中,所述確定單元,用于在所述通道總數(shù)量超過(guò)所述任務(wù)總數(shù)量的情況下,對(duì)于所述多個(gè)數(shù)據(jù)傳輸任務(wù)中優(yōu)先級(jí)最高的第一數(shù)據(jù)傳輸任務(wù),基于所述通道總數(shù)量和所述任務(wù)總數(shù)量,確定所述第一數(shù)據(jù)傳輸任務(wù)對(duì)應(yīng)的子任務(wù)數(shù)量;在所述通道總數(shù)量的基礎(chǔ)上減去所述第一數(shù)據(jù)傳輸任務(wù)對(duì)應(yīng)的子任務(wù)數(shù)量,得到通道剩余數(shù)量;在所述通道剩余數(shù)量超過(guò)任務(wù)剩余數(shù)量的情況下,基于所述通道剩余數(shù)量與所述任務(wù)剩余數(shù)量,確定處于所述第一數(shù)據(jù)傳輸任務(wù)的下一優(yōu)先級(jí)的第二數(shù)據(jù)傳輸任務(wù)對(duì)應(yīng)的子任務(wù)數(shù)量,所述任務(wù)剩余數(shù)量為未被拆分的數(shù)據(jù)傳輸任務(wù)的數(shù)量;在所述通道剩余數(shù)量的基礎(chǔ)上減去所述第二數(shù)據(jù)傳輸任務(wù)對(duì)應(yīng)的子任務(wù)數(shù)量,得到新的通道剩余數(shù)量,基于新的所述通道剩余數(shù)量和新的任務(wù)剩余數(shù)量,繼續(xù)執(zhí)行確定下一優(yōu)先級(jí)的數(shù)據(jù)傳輸任務(wù)對(duì)應(yīng)的子任務(wù)數(shù)量的步驟,直至所述通道剩余數(shù)量不超過(guò)所述任務(wù)剩余數(shù)量。
16、在一些實(shí)施例中,所述確定單元,用于將所述通道總數(shù)量除以所述任務(wù)總數(shù)量,得到目標(biāo)數(shù)值;在所述目標(biāo)數(shù)值為整數(shù)的情況下,將所述目標(biāo)數(shù)值作為所述第一數(shù)據(jù)傳輸任務(wù)對(duì)應(yīng)的子任務(wù)數(shù)量;在所述目標(biāo)數(shù)值不為整數(shù)的情況下,對(duì)所述目標(biāo)數(shù)值進(jìn)行向上取整,得到所述第一數(shù)據(jù)傳輸任務(wù)對(duì)應(yīng)的子任務(wù)數(shù)量。
17、在一些實(shí)施例中,每個(gè)已拆分的目標(biāo)任務(wù)對(duì)應(yīng)的多個(gè)子任務(wù)之間存在優(yōu)先級(jí),所述dma控制器中的多個(gè)dma通道之間也存在優(yōu)先級(jí);
18、所述分配模塊,用于按照優(yōu)先級(jí)由高到低的順序,將所述至少一個(gè)目標(biāo)任務(wù)的多個(gè)子任務(wù)和未被拆分的數(shù)據(jù)傳輸任務(wù)中的各個(gè)任務(wù),依次分配到所述dma控制器中處于空閑狀態(tài)的dma通道中;其中,每個(gè)處于空閑狀態(tài)的dma通道被分配到一個(gè)數(shù)據(jù)傳輸任務(wù),每個(gè)數(shù)據(jù)傳輸任務(wù)的優(yōu)先級(jí)與所述數(shù)據(jù)傳輸任務(wù)被分配到的dma通道的優(yōu)先級(jí)之間正相關(guān)。
19、在一些實(shí)施例中,所述裝置還包括:
20、配置模塊,用于對(duì)于任一目標(biāo)任務(wù)被拆分出的多個(gè)子任務(wù),為所述多個(gè)子任務(wù)分別配置執(zhí)行優(yōu)先級(jí),每個(gè)子任務(wù)的執(zhí)行優(yōu)先級(jí)用于表示所述子任務(wù)在所述多個(gè)子任務(wù)中的開(kāi)始執(zhí)行的順序。
21、在一些實(shí)施例中,所述裝置還包括:確定模塊,用于執(zhí)行下述至少一項(xiàng):
22、基于所述多個(gè)數(shù)據(jù)傳輸任務(wù)所指示的待傳輸?shù)臄?shù)據(jù)量,確定所述多個(gè)數(shù)據(jù)傳輸任務(wù)之間的優(yōu)先級(jí),每個(gè)數(shù)據(jù)傳輸任務(wù)的優(yōu)先級(jí)與所述數(shù)據(jù)傳輸任務(wù)所指示的待傳輸?shù)臄?shù)據(jù)量之間正相關(guān);
23、基于所述多個(gè)數(shù)據(jù)傳輸任務(wù)的接收順序,確定所述多個(gè)數(shù)據(jù)傳輸任務(wù)之間的優(yōu)先級(jí),每個(gè)數(shù)據(jù)傳輸任務(wù)的優(yōu)先級(jí)與所述數(shù)據(jù)傳輸任務(wù)的接收順序之間正相關(guān)。
24、在一些實(shí)施例中,所述裝置包括:
25、第二獲取模塊,用于在所述dma控制器中存在dma通道處于空閑狀態(tài)的情況下,獲取所述dma控制器中處于工作狀態(tài)的各個(gè)dma通道中數(shù)據(jù)傳輸任務(wù)的優(yōu)先級(jí)和處于空閑狀態(tài)的dma通道的數(shù)量;
26、所述分配模塊,還用于基于數(shù)據(jù)傳輸任務(wù)的優(yōu)先級(jí),對(duì)處于工作狀態(tài)的各個(gè)dma通道中的數(shù)據(jù)傳輸任務(wù)進(jìn)行再次拆分,并將拆分后得到的數(shù)據(jù)傳輸任務(wù)分配至處于空閑狀態(tài)的dma通道。
27、另一方面,提供了一種dma控制器,所述dma控制器包括處理器和存儲(chǔ)器,所述存儲(chǔ)器用于存儲(chǔ)至少一段計(jì)算機(jī)程序,所述至少一段計(jì)算機(jī)程序由所述處理器加載并執(zhí)行上述任一實(shí)施例所述的數(shù)據(jù)傳輸方法。
28、另一方面,提供了一種芯片,其特征在于,所述芯片包括上述實(shí)施例所述的dma控制器,當(dāng)所述芯片在計(jì)算機(jī)設(shè)備上運(yùn)行時(shí),用于實(shí)現(xiàn)如上述任一實(shí)施例所述的數(shù)據(jù)傳輸方法。
29、另一方面,提供了一種計(jì)算機(jī)設(shè)備,所述計(jì)算機(jī)設(shè)備包括上述實(shí)施例所述的dma控制器,用于執(zhí)行上述任一實(shí)施例所述數(shù)據(jù)傳輸方法。
30、本技術(shù)實(shí)施例提供了一種數(shù)據(jù)傳輸方法,當(dāng)接收到的多個(gè)數(shù)據(jù)傳輸任務(wù)時(shí),若dma控制器中處于空閑狀態(tài)的dma通道的數(shù)量大于多個(gè)數(shù)據(jù)傳輸任務(wù),則說(shuō)明dma控制器中有充足的dma通道來(lái)執(zhí)行多個(gè)數(shù)據(jù)傳輸任務(wù),甚至能夠存在富余的dma通道,在此情況下,根據(jù)多個(gè)數(shù)據(jù)傳輸任務(wù)之間的優(yōu)先級(jí)、通道總數(shù)量和任務(wù)總數(shù)量,對(duì)優(yōu)先級(jí)較高的至少一個(gè)目標(biāo)任務(wù)進(jìn)行拆分,并將拆分得到的多個(gè)字任務(wù)和未被拆分的數(shù)據(jù)傳輸任務(wù),分別分配給dma控制器中處于空閑狀態(tài)的dma通道,由于拆分后得到的子任務(wù)的總數(shù)量與未被拆分的數(shù)據(jù)傳輸任務(wù)的數(shù)量之和等于dma控制器中處于空閑狀態(tài)的dma通道的總數(shù)量,保障了dma控制器中的所有處于空閑狀態(tài)的dma通道用來(lái)共同執(zhí)行多個(gè)數(shù)據(jù)傳輸任務(wù),不再存在富余的空閑通道,提高了dma控制器的通道利用率,從而能夠提高數(shù)據(jù)傳輸效率。
31、并且,由于是對(duì)優(yōu)先級(jí)較高的數(shù)據(jù)傳輸任務(wù)進(jìn)行拆分,使得后續(xù)多個(gè)dma通道可以并行執(zhí)行該數(shù)據(jù)傳輸任務(wù)的多個(gè)子任務(wù),利于提高優(yōu)先級(jí)較高的數(shù)據(jù)傳輸任務(wù)的執(zhí)行效率,符合用戶意圖。