本發(fā)明涉及數(shù)據(jù)處理,特別是涉及一種數(shù)據(jù)傳輸方法、裝置、計(jì)算機(jī)設(shè)備和存儲介質(zhì)。
背景技術(shù):
1、目前在存儲器之間存取數(shù)據(jù)主要有兩種方式,一種是通過cpu(centralprocessing?unit,中央處理單元),另一種是通過dma(direct?memoryaccess,直接存儲器訪問)。通過cpu進(jìn)行數(shù)據(jù)傳輸時,cpu先從源地址讀取數(shù)據(jù),然后將數(shù)據(jù)寫入目的地址,這種方式會占用大量的cpu資源,導(dǎo)致cpu無法高效執(zhí)行其他任務(wù),進(jìn)而影響系統(tǒng)的整體性能。通過dma進(jìn)行數(shù)據(jù)傳輸時,dma控制器能夠在不經(jīng)過cpu的情況下,直接在存儲器和外設(shè)之間傳輸數(shù)據(jù),dma可以在不占用cpu資源的情況下完成大批量的數(shù)據(jù)傳輸,能夠在后臺進(jìn)行數(shù)據(jù)傳輸,從而提高整個系統(tǒng)的并行處理能力。
2、然而,現(xiàn)有的dma傳輸存在的問題是配置不夠靈活??偩€上的多個主設(shè)備(master)和從設(shè)備(slave)可能支持不同的突發(fā)大小和突發(fā)長度,直接按照固定的突發(fā)(burst)大小和長度對所有的傳輸進(jìn)行應(yīng)用,可能會導(dǎo)致總線上掛載的master或slave的寫或讀出現(xiàn)問題,出現(xiàn)停止傳輸?shù)那闆r。dma也可以通過更改全局的突發(fā)大小(axsize)、突發(fā)長度(axlen),實(shí)現(xiàn)修改全局的突發(fā)傳輸數(shù)據(jù)總量,但是全局配置會降低dma的性能,全局的配置也不便于dma在使用中動態(tài)更改。
3、因此,針對現(xiàn)有技術(shù)方案的缺點(diǎn),本發(fā)明提供一種數(shù)據(jù)傳輸方法。
技術(shù)實(shí)現(xiàn)思路
1、基于此,有必要針對上述技術(shù)問題,提供一種數(shù)據(jù)傳輸方法、裝置、設(shè)備和存儲介質(zhì)。
2、一方面,提供一種數(shù)據(jù)傳輸方法,所述方法包括:接收多個直接存儲器訪問命令并將每個直接存儲器訪問命令存儲在對應(yīng)的命令配置單元中;依次解析每個存儲在所述命令配置單元中的直接存儲器訪問命令,得到被解析的直接存儲器訪問命令的工作參數(shù),其中所述工作參數(shù)包括工作模式、目標(biāo)地址、突發(fā)字節(jié)數(shù)、數(shù)據(jù)總量、命令標(biāo)識和完成標(biāo)志中至少一項(xiàng);根據(jù)所述被解析的直接存儲器訪問命令的工作參數(shù),對所述被解析的直接存儲器訪問命令進(jìn)行數(shù)據(jù)傳輸;監(jiān)測所述被解析的直接存儲器訪問命令的數(shù)據(jù)傳輸進(jìn)度,生成所述被解析的直接存儲器訪問命令的數(shù)據(jù)傳輸狀態(tài)。
3、可選的,所述依次解析每個直接存儲器訪問命令,包括:根據(jù)用戶需求,對每個命令配置單元配置權(quán)重;根據(jù)所述權(quán)重,輪詢每個命令配置單元;根據(jù)所述輪詢順序,依次從每個命令配置單元中獲取對應(yīng)的直接存儲器訪問命令并解析。
4、可選的,所述根據(jù)所述被解析的直接存儲器訪問命令的工作參數(shù),對所述被解析的直接存儲器訪問命令進(jìn)行數(shù)據(jù)傳輸,包括:根據(jù)所述被解析的直接存儲器訪問命令的工作參數(shù),確定所述工作模式,其中所述工作模式包括第一工作模式和第二工作模式;當(dāng)所述工作模式為第一工作模式時,所述目標(biāo)地址包括第一目標(biāo)地址和第二目標(biāo)地址,所述突發(fā)字節(jié)數(shù)包括第一突發(fā)字節(jié)數(shù)和第二突發(fā)字節(jié)數(shù),根據(jù)所述第一目標(biāo)地址、所述第一突發(fā)字節(jié)數(shù)和所述數(shù)據(jù)總量,確定第一數(shù)據(jù)傳輸方式;通過所述第一數(shù)據(jù)傳輸方式,從第一目標(biāo)地址對應(yīng)的存儲空間中讀取數(shù)據(jù)并存儲;根據(jù)所述第二目標(biāo)地址、所述第二突發(fā)字節(jié)數(shù)和所述數(shù)據(jù)總量,確定第二數(shù)據(jù)傳輸方式;通過所述第二數(shù)據(jù)傳輸方式,將存儲的數(shù)據(jù)寫入所述第二目標(biāo)地址對應(yīng)的存儲空間中;當(dāng)所述工作模式為第二工作模式時,所述工作參數(shù)包括置位數(shù)據(jù),所述目標(biāo)地址包括第三目標(biāo)地址,所述突發(fā)字節(jié)數(shù)為所述置位數(shù)據(jù)的字節(jié)數(shù),根據(jù)所述第三目標(biāo)地址、所述置位數(shù)據(jù)的字節(jié)數(shù)和所述數(shù)據(jù)總量,確定第三數(shù)據(jù)傳輸方式;通過所述第三數(shù)據(jù)傳輸方式,將所述置位數(shù)據(jù)寫入所述第三目標(biāo)地址對應(yīng)的存儲空間中。
5、可選的,所述方法還包括:根據(jù)所述目標(biāo)地址、所述突發(fā)字節(jié)數(shù)和所述數(shù)據(jù)總量,確定數(shù)據(jù)傳輸方式為對齊傳輸或非對齊傳輸;所述數(shù)據(jù)傳輸方式為對齊傳輸時,根據(jù)所述突發(fā)字節(jié)數(shù)對所述數(shù)據(jù)總量進(jìn)行拆分,得到多個子傳輸命令,其中所述多個子傳輸命令包括多個對齊子傳輸命令;所述數(shù)據(jù)傳輸方式為非對齊傳輸時,根據(jù)所述突發(fā)字節(jié)數(shù)對所述數(shù)據(jù)總量進(jìn)行拆分,得到多個子傳輸命令,其中所述多個子傳輸命令包括一個非對齊子傳輸命令和多個對齊子傳輸命令;通過所述多個子傳輸命令,對所述數(shù)據(jù)進(jìn)行傳輸。
6、可選的,當(dāng)所述工作模式為第一工作模式時,所述方法還包括:確定第一傳輸方式中每個第一子傳輸命令的字節(jié)數(shù)和第二傳輸方式中每個第二子傳輸命令的字節(jié)數(shù);通過所述第一數(shù)據(jù)傳輸方式,從第一目標(biāo)地址對應(yīng)的存儲空間中依次讀取每個第一子傳輸命令對應(yīng)的數(shù)據(jù)并存儲;判斷存儲的數(shù)據(jù)的字節(jié)數(shù)是否滿足一個第二子傳輸命令的字節(jié)數(shù);若滿足,通過所述第二數(shù)據(jù)傳輸方式,從所述存儲的數(shù)據(jù)中提取出一個第二子傳輸命令對應(yīng)的數(shù)據(jù),將所述第二子傳輸命令對應(yīng)的數(shù)據(jù)寫入所述第二目標(biāo)地址對應(yīng)的存儲空間中。
7、可選的,在所述接收多個直接存儲器訪問命令并將每個直接存儲器訪問命令存儲在對應(yīng)的命令配置單元中之前,包括:配置多個命令配置單元;針對每個命令配置單元,配置對應(yīng)的第一完成標(biāo)志單元和第二完成標(biāo)志單元。
8、可選的,所述方法還包括:根據(jù)所述被解析的直接存儲器訪問命令的工作參數(shù),確定所述完成標(biāo)志,其中所述完成標(biāo)志包括第一完成標(biāo)志和第二完成標(biāo)志;當(dāng)所述被解析的直接存儲器訪問命令的所述第一完成標(biāo)志被置位且數(shù)據(jù)傳輸完成時,將所述被解析的直接存儲器訪問命令的命令標(biāo)識寫入對應(yīng)的第一完成標(biāo)志單元;響應(yīng)于用戶的獲取請求,發(fā)送所述命令標(biāo)識給用戶;當(dāng)所述被解析的直接存儲器訪問命令的所述第二完成標(biāo)志被置位且數(shù)據(jù)傳輸完成時,將所述被解析的直接存儲器訪問命令的命令標(biāo)識寫入對應(yīng)的第二完成標(biāo)志單元;生成通知指令,發(fā)送所述命令標(biāo)識給用戶。
9、另一方面,提供了一種數(shù)據(jù)傳輸裝置,所述裝置包括:接收模塊,用于接收多個直接存儲器訪問命令并將每個直接存儲器訪問命令存儲在對應(yīng)的命令配置單元中;解析模塊,用于依次解析每個存儲在所述命令配置單元中的直接存儲器訪問命令,得到被解析的直接存儲器訪問命令的工作參數(shù),其中所述工作參數(shù)包括工作模式、目標(biāo)地址、突發(fā)字節(jié)數(shù)、數(shù)據(jù)總量、命令標(biāo)識和完成標(biāo)志中至少一項(xiàng);傳輸模塊,用于根據(jù)所述被解析的直接存儲器訪問命令的工作參數(shù),對所述被解析的直接存儲器訪問命令進(jìn)行數(shù)據(jù)傳輸;監(jiān)測模塊,用于監(jiān)測所述被解析的直接存儲器訪問命令的傳輸進(jìn)度,生成所述被解析的直接存儲器訪問命令的數(shù)據(jù)傳輸狀態(tài)。
10、再一方面,提供了一種計(jì)算機(jī)設(shè)備,包括存儲器、處理器及存儲在存儲器上并可在處理器上運(yùn)行的計(jì)算機(jī)程序,所述處理器執(zhí)行所述計(jì)算機(jī)程序時實(shí)現(xiàn)以下步驟:接收多個直接存儲器訪問命令并將每個直接存儲器訪問命令存儲在對應(yīng)的命令配置單元中;依次解析每個存儲在所述命令配置單元中的直接存儲器訪問命令,得到被解析的直接存儲器訪問命令的工作參數(shù),其中所述工作參數(shù)包括工作模式、目標(biāo)地址、突發(fā)字節(jié)數(shù)、數(shù)據(jù)總量、命令標(biāo)識和完成標(biāo)志中至少一項(xiàng);根據(jù)所述被解析的直接存儲器訪問命令的工作參數(shù),對所述被解析的直接存儲器訪問命令進(jìn)行數(shù)據(jù)傳輸;監(jiān)測所述被解析的直接存儲器訪問命令的數(shù)據(jù)傳輸進(jìn)度,生成所述被解析的直接存儲器訪問命令的數(shù)據(jù)傳輸狀態(tài)。
11、又一方面,提供了一種計(jì)算機(jī)可讀存儲介質(zhì),其上存儲有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時實(shí)現(xiàn)以下步驟:接收多個直接存儲器訪問命令并將每個直接存儲器訪問命令存儲在對應(yīng)的命令配置單元中;依次解析每個存儲在所述命令配置單元中的直接存儲器訪問命令,得到被解析的直接存儲器訪問命令的工作參數(shù),其中所述工作參數(shù)包括工作模式、目標(biāo)地址、突發(fā)字節(jié)數(shù)、數(shù)據(jù)總量、命令標(biāo)識和完成標(biāo)志中至少一項(xiàng);根據(jù)所述被解析的直接存儲器訪問命令的工作參數(shù),對所述被解析的直接存儲器訪問命令進(jìn)行數(shù)據(jù)傳輸;監(jiān)測所述被解析的直接存儲器訪問命令的數(shù)據(jù)傳輸進(jìn)度,生成所述被解析的直接存儲器訪問命令的數(shù)據(jù)傳輸狀態(tài)。
12、上述數(shù)據(jù)傳輸方法、裝置、設(shè)備和存儲介質(zhì),所述方法包括:接收多個直接存儲器訪問命令并將每個直接存儲器訪問命令存儲在對應(yīng)的命令配置單元中;依次解析每個存儲在所述命令配置單元中的直接存儲器訪問命令,得到被解析的直接存儲器訪問命令的工作參數(shù),其中所述工作參數(shù)包括工作模式、目標(biāo)地址、突發(fā)字節(jié)數(shù)、數(shù)據(jù)總量、命令標(biāo)識和完成標(biāo)志中至少一項(xiàng);根據(jù)所述被解析的直接存儲器訪問命令的工作參數(shù),對所述被解析的直接存儲器訪問命令進(jìn)行數(shù)據(jù)傳輸;監(jiān)測所述被解析的直接存儲器訪問命令的數(shù)據(jù)傳輸進(jìn)度,生成所述被解析的直接存儲器訪問命令的數(shù)據(jù)傳輸狀態(tài);如此,可以靈活配置每個dma命令的工作參數(shù),實(shí)現(xiàn)滿足不同的接口限制的同時達(dá)到接口的最大性能。