本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種直接內(nèi)存訪問的傳輸控制方法及裝置。
背景技術(shù):
直接內(nèi)存訪問(Direct Memory Access,DMA)是一種快速數(shù)據(jù)交換模式,它在不通過中央處理器(CPU,Central Processing Unit)且不需要CPU干預(yù)的情況下,即可完成外部設(shè)備和存儲器之間的直接數(shù)據(jù)傳輸。在DMA模式下,CPU只須向DMA傳輸控制裝置下達(dá)指令,讓DMA傳輸控制裝置處理數(shù)據(jù)的傳輸,數(shù)據(jù)傳輸完畢再把傳輸結(jié)束信息反饋給CPU,這樣就很大程度上減輕了CPU資源占有率,可以大大節(jié)省系統(tǒng)資源。其中,DMA傳輸控制裝置是通過DMA通道進(jìn)行數(shù)據(jù)傳輸?shù)?,DMA通道中設(shè)置有輸入隊(duì)列和輸出隊(duì)列,輸入隊(duì)列和輸出隊(duì)列均是由一系列參數(shù)寄存器組成,用于記錄目標(biāo)DMA任務(wù)的傳輸參數(shù)(例如,數(shù)據(jù)傳輸大小、目的地址、源地址、傳輸進(jìn)度等)、傳輸數(shù)據(jù)等,例如:若將外部設(shè)備的數(shù)據(jù)塊傳輸至存儲器中時(shí),DMA傳輸控制裝置將所需傳輸?shù)臄?shù)據(jù)塊從DMA通道的輸入隊(duì)列輸入,再將數(shù)據(jù)塊從DMA通道的輸出隊(duì)列輸出至外部設(shè)備,已完成數(shù)據(jù)傳輸。由于在DMA傳輸控制裝置進(jìn)行數(shù)據(jù)傳輸?shù)倪^程衡中,CPU可以執(zhí)行其他任務(wù),因此,也提高了計(jì)算機(jī)系統(tǒng)處理效率。
但是,現(xiàn)有的DMA傳輸控制裝置僅僅是作為一個(gè)負(fù)責(zé)數(shù)據(jù)傳輸?shù)挠布卧?,它是按照DMA任務(wù)的輸入時(shí)間順序執(zhí)行任務(wù)的,對于傳輸過程中存在不同優(yōu)先級的DMA任務(wù),甚至于出現(xiàn)緊急DMA任務(wù)的情況,需要將排在前面的DMA任務(wù)處理完畢才能處理排在后面的優(yōu)先級較高的DMA任務(wù)或者緊急DMA任務(wù),因此,現(xiàn)有DMA技術(shù)不能根據(jù)實(shí)際任務(wù)的重要程度調(diào)整數(shù)據(jù)傳輸?shù)南群箜樞?,從而?dǎo)致降低了計(jì)算機(jī)系統(tǒng)處理效率和服務(wù)質(zhì)量。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供一種直接內(nèi)存訪問的傳輸控制方法及裝置,可提高計(jì)算 機(jī)系統(tǒng)處理效率和服務(wù)質(zhì)量。
本發(fā)明實(shí)施例第一方面提供了一種直接內(nèi)存訪問的傳輸控制方法,包括:
接收DMA傳輸請求,所述DMA傳輸請求攜帶目標(biāo)DMA任務(wù);
查詢所述目標(biāo)DMA任務(wù)的優(yōu)先級,并根據(jù)所述目標(biāo)DMA任務(wù)的優(yōu)先級,從DMA通道中選擇與所述目標(biāo)DMA的優(yōu)先級相對應(yīng)的DMA通道作為目標(biāo)通道;
判斷所述DMA通道中是否存在已經(jīng)被其他DMA任務(wù)占用的通道;
當(dāng)所述DMA通道中存在已經(jīng)被其他DMA任務(wù)占用的通道時(shí),查詢已占用通道的DMA任務(wù)的任務(wù)類型以及所述目標(biāo)DMA任務(wù)的任務(wù)類型;
判斷在所述已占用通道的DMA任務(wù)中是否存在與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù);
當(dāng)在所述已占用通道的DMA任務(wù)中存在與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù)時(shí),查詢所述與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù)的優(yōu)先級;
判斷在所述與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù)中是否存在低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù);
當(dāng)在所述與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù)中,存在低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)時(shí),暫停所述低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)的數(shù)據(jù)傳輸,并獲取目標(biāo)DMA任務(wù)的目標(biāo)數(shù)據(jù),將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸入隊(duì)列進(jìn)行輸入,以及將所述目標(biāo)數(shù)據(jù)通過所述低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)對應(yīng)的已占用通道的輸出隊(duì)列進(jìn)行輸出。
在本發(fā)明實(shí)施例第一方面的第一種可能的實(shí)現(xiàn)方式中,所述接收DMA傳輸請求,所述DMA傳輸請求攜帶目標(biāo)DMA任務(wù)之前,還包括:
預(yù)先保存DMA任務(wù)的優(yōu)先級列表,以及DMA任務(wù)優(yōu)先級與DMA通道映射關(guān)系表;
所述查詢所述目標(biāo)DMA任務(wù)的優(yōu)先級,并根據(jù)所述目標(biāo)DMA任務(wù)的優(yōu)先級,從DMA通道中選擇與所述目標(biāo)DMA的優(yōu)先級相對應(yīng)的DMA通道作為目標(biāo)通道,包括:
在所述DMA任務(wù)的優(yōu)先級列表中查詢所述目標(biāo)DMA任務(wù)的優(yōu)先級,從所 述DMA任務(wù)優(yōu)先級與DMA通道映射關(guān)系表中查詢與所述目標(biāo)DMA任務(wù)的優(yōu)先級相對應(yīng)的DMA通道,將與所述目標(biāo)DMA任務(wù)的優(yōu)先級相對應(yīng)的DMA通道作為目標(biāo)通道。
在本發(fā)明實(shí)施例第一方面的第二種可能的實(shí)現(xiàn)方式中,所述判斷所述DMA通道中是否存在已經(jīng)被其他DMA任務(wù)占用的通道之后,還包括:
當(dāng)所述DMA通道中不存在已經(jīng)被其他DMA任務(wù)占用的通道時(shí),獲取目標(biāo)DMA任務(wù)對應(yīng)的目標(biāo)數(shù)據(jù),將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸入隊(duì)列進(jìn)行輸入,以及將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸出隊(duì)列進(jìn)行輸出。
在本發(fā)明實(shí)施例第一方面的第三種可能的實(shí)現(xiàn)方式中,所述判斷在所述已占用通道的DMA任務(wù)中是否存在與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù)之后,還包括:
當(dāng)在所述已占用通道的DMA任務(wù)中不存在與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù)時(shí),獲取目標(biāo)DMA任務(wù)對應(yīng)的目標(biāo)數(shù)據(jù),將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸入隊(duì)列進(jìn)行輸入,以及將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸出隊(duì)列進(jìn)行輸出。
在本發(fā)明實(shí)施例第一方面的第四種可能的實(shí)現(xiàn)方式中,所述判斷在所述與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù)中是否存在低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)之后,還包括:
當(dāng)在所述與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù)中不存在低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)時(shí),獲取目標(biāo)DMA任務(wù)對應(yīng)的目標(biāo)數(shù)據(jù),將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸入隊(duì)列進(jìn)行輸入,以及將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸出隊(duì)列進(jìn)行輸出。
本發(fā)明實(shí)施例第二方面提供了一種直接內(nèi)存訪問的傳輸控制方法,包括:
接收DMA傳輸請求,所述DMA傳輸請求攜帶目標(biāo)DMA任務(wù);
查詢所述目標(biāo)DMA任務(wù)的優(yōu)先級,并根據(jù)所述目標(biāo)DMA任務(wù)的優(yōu)先級,從DMA通道中選擇與所述目標(biāo)DMA的優(yōu)先級相對應(yīng)的DMA通道作為目標(biāo)通道;
判斷所述DMA通道中是否存在已經(jīng)被其他DMA任務(wù)占用的通道;
當(dāng)DMA通道中存在已經(jīng)被其他DMA任務(wù)占用的通道時(shí),查詢已占用通道的DMA任務(wù)的優(yōu)先級;
判斷在所述已占用通道的DMA任務(wù)中是否存在低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù);
當(dāng)在所述已占用通道的DMA任務(wù)中存在低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)時(shí),暫停所述低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)的數(shù)據(jù)傳輸,并獲取目標(biāo)DMA任務(wù)的目標(biāo)數(shù)據(jù),將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸入隊(duì)列進(jìn)行輸入,以及將所述目標(biāo)數(shù)據(jù)通過所述低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)對應(yīng)的已占用通道的輸出隊(duì)列進(jìn)行輸出。
在本發(fā)明實(shí)施例第二方面的第一種可能的實(shí)現(xiàn)方式中,所述接收DMA傳輸請求,所述DMA傳輸請求攜帶目標(biāo)DMA任務(wù)之前,還包括:
預(yù)先保存DMA任務(wù)的優(yōu)先級列表,以及DMA任務(wù)優(yōu)先級與DMA通道映射關(guān)系表;
所述查詢所述目標(biāo)DMA任務(wù)的優(yōu)先級,并根據(jù)所述目標(biāo)DMA任務(wù)的優(yōu)先級,從DMA通道中選擇與所述目標(biāo)DMA的優(yōu)先級相對應(yīng)的DMA通道作為目標(biāo)通道,包括:
在所述DMA任務(wù)的優(yōu)先級列表中查詢所述目標(biāo)DMA任務(wù)的優(yōu)先級,從所述DMA任務(wù)優(yōu)先級與DMA通道映射關(guān)系表中查詢與所述目標(biāo)DMA任務(wù)的優(yōu)先級相對應(yīng)的DMA通道,將與所述目標(biāo)DMA任務(wù)的優(yōu)先級相對應(yīng)的DMA通道作為目標(biāo)通道。
本發(fā)明實(shí)施例第三方面提供了一種直接內(nèi)存訪問傳輸控制裝置,包括:
接收單元,用于接收DMA傳輸請求,所述DMA傳輸請求攜帶目標(biāo)DMA任務(wù);
第一查詢單元,用于查詢所述目標(biāo)DMA任務(wù)的優(yōu)先級,并根據(jù)所述目標(biāo)DMA任務(wù)的優(yōu)先級,從DMA通道中選擇與所述目標(biāo)DMA的優(yōu)先級相對應(yīng)的DMA通道作為目標(biāo)通道;
第一判斷單元,用于判斷所述DMA通道中是否存在已經(jīng)被其他DMA任務(wù)占用的通道;
第二查詢單元,用于當(dāng)所述DMA通道中存在已經(jīng)被其他DMA任務(wù)占用的通道時(shí),查詢已占用通道的DMA任務(wù)的任務(wù)類型以及所述目標(biāo)DMA任務(wù)的任務(wù)類型;
第二判斷單元,用于判斷在所述已占用通道的DMA任務(wù)中是否存在與所述 目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù);
第三查詢單元,用于當(dāng)在所述已占用通道的DMA任務(wù)中存在與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù)時(shí),查詢所述與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù)的優(yōu)先級;
第三判斷單元,用于判斷在所述與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù)中是否存在低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù);
暫停單元,用于當(dāng)在所述與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù)中,存在低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)時(shí),暫停所述低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)的數(shù)據(jù)傳輸;
第一傳輸單元,用于獲取目標(biāo)DMA任務(wù)的目標(biāo)數(shù)據(jù),將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸入隊(duì)列進(jìn)行輸入,以及將所述目標(biāo)數(shù)據(jù)通過所述低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)對應(yīng)的已占用通道的輸出隊(duì)列進(jìn)行輸出。
在本發(fā)明實(shí)施例第三方面的第一種可能的實(shí)現(xiàn)方式中,所述裝置還包括:
預(yù)存單元,用于預(yù)先保存DMA任務(wù)的優(yōu)先級列表,以及DMA任務(wù)優(yōu)先級與DMA通道映射關(guān)系表;
所述第一查詢單元,具體用于在所述DMA任務(wù)的優(yōu)先級列表中查詢所述目標(biāo)DMA任務(wù)的優(yōu)先級,從所述DMA任務(wù)優(yōu)先級與DMA通道映射關(guān)系表中查詢與所述目標(biāo)DMA任務(wù)的優(yōu)先級相對應(yīng)的DMA通道,將與所述目標(biāo)DMA任務(wù)的優(yōu)先級相對應(yīng)的DMA通道作為目標(biāo)通道。
在本發(fā)明實(shí)施例第三方面的第二種可能的實(shí)現(xiàn)方式中,所述裝置還包括:
第二傳輸單元,用于當(dāng)所述DMA通道中不存在已經(jīng)被其他DMA任務(wù)占用的通道時(shí),獲取目標(biāo)DMA任務(wù)對應(yīng)的目標(biāo)數(shù)據(jù),將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸入隊(duì)列進(jìn)行輸入,以及將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸出隊(duì)列進(jìn)行輸出。
在本發(fā)明實(shí)施例第三方面的第三種可能的實(shí)現(xiàn)方式中,所述裝置還包括:
第三傳輸單元,用于當(dāng)在所述已占用通道的DMA任務(wù)中不存在與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù)時(shí),獲取目標(biāo)DMA任務(wù)對應(yīng)的目標(biāo)數(shù)據(jù),將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸入隊(duì)列進(jìn)行輸入,以及將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸出隊(duì)列進(jìn)行輸出。
在本發(fā)明實(shí)施例第三方面的第四種可能的實(shí)現(xiàn)方式中,所述裝置還包括:
第四傳輸單元,用于當(dāng)在所述與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù)中不存在低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)時(shí),獲取目標(biāo)DMA任務(wù)對應(yīng)的目標(biāo)數(shù)據(jù),將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸入隊(duì)列進(jìn)行輸入,以及將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸出隊(duì)列進(jìn)行輸出。
本發(fā)明實(shí)施例第四方面提供了一種直接內(nèi)存訪問傳輸控制裝置,包括:
接收單元,用于接收DMA傳輸請求,所述DMA傳輸請求攜帶目標(biāo)DMA任務(wù);
第一查詢單元,用于查詢所述目標(biāo)DMA任務(wù)的優(yōu)先級,并根據(jù)所述目標(biāo)DMA任務(wù)的優(yōu)先級,從DMA通道中選擇與所述目標(biāo)DMA的優(yōu)先級相對應(yīng)的DMA通道作為目標(biāo)通道;
第一判斷單元,用于判斷所述DMA通道中是否存在已經(jīng)被其他DMA任務(wù)占用的通道;
第二查詢單元,用于當(dāng)DMA通道中存在已經(jīng)被其他DMA任務(wù)占用的通道時(shí),查詢已占用通道的DMA任務(wù)的優(yōu)先級;
第二判斷單元,用于判斷在所述已占用通道的DMA任務(wù)中是否存在低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù);
暫停單元,用于當(dāng)在所述已占用通道的DMA任務(wù)中存在低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)時(shí),暫停所述低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)的數(shù)據(jù)傳輸;
傳輸單元,用于獲取目標(biāo)DMA任務(wù)的目標(biāo)數(shù)據(jù),將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸入隊(duì)列進(jìn)行輸入,以及將所述目標(biāo)數(shù)據(jù)通過所述低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)對應(yīng)的已占用通道的輸出隊(duì)列進(jìn)行輸出。
在本發(fā)明實(shí)施例第四方面的第一種可能的實(shí)現(xiàn)方式中,所述裝置還包括:
預(yù)存單元,用于預(yù)先保存DMA任務(wù)的優(yōu)先級列表,以及DMA任務(wù)優(yōu)先級與DMA通道映射關(guān)系表;
所述第一查詢單元具體用于在所述DMA任務(wù)的優(yōu)先級列表中查詢所述目標(biāo)DMA任務(wù)的優(yōu)先級,從所述DMA任務(wù)優(yōu)先級與DMA通道映射關(guān)系表中查詢與所述目標(biāo)DMA任務(wù)的優(yōu)先級相對應(yīng)的DMA通道,將與所述目標(biāo)DMA任務(wù)的優(yōu)先級相對應(yīng)的DMA通道作為目標(biāo)通道。
在本發(fā)明實(shí)施例中,當(dāng)接收到傳輸目標(biāo)DMA任務(wù)的DMA傳輸請求時(shí),根 據(jù)目標(biāo)DMA任務(wù)對應(yīng)的優(yōu)先級為其選擇一目標(biāo)通道,在DMA通道中存在其他DMA任務(wù)的情況下,通過查詢已占用通道的其他DMA任務(wù)的任務(wù)類型、優(yōu)先級以及目標(biāo)DMA任務(wù)的任務(wù)類型,并對已占用通道的其他DMA任務(wù)的任務(wù)類型、優(yōu)先級以及目標(biāo)DMA任務(wù)的任務(wù)類型、優(yōu)先級進(jìn)行對比,根據(jù)對比結(jié)果對DMA通道的傳輸數(shù)據(jù)進(jìn)行控制,可以實(shí)現(xiàn)根據(jù)DMA任務(wù)的優(yōu)先級、任務(wù)類型合理規(guī)劃數(shù)據(jù)傳輸,即使遇到緊急DMA任務(wù)也可以優(yōu)先處理,提高了計(jì)算機(jī)系統(tǒng)處理效率和服務(wù)質(zhì)量。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本發(fā)明實(shí)施例提供的一種直接內(nèi)存訪問的傳輸控制裝置的結(jié)構(gòu)圖;
圖2是本發(fā)明實(shí)施例提供的一種直接內(nèi)存訪問的傳輸控制方法的流程示意圖;
圖3是本發(fā)明實(shí)施例提供的另一種直接內(nèi)存訪問的傳輸控制方法的流程示意圖;
圖4是本發(fā)明實(shí)施例提供的又一種直接內(nèi)存訪問的傳輸控制方法的流程示意圖;
圖5是本發(fā)明實(shí)施例提供的又一種直接內(nèi)存訪問的傳輸控制方法的流程示意圖;
圖6是本發(fā)明實(shí)施例提供的一種直接內(nèi)存訪問的傳輸控制裝置的結(jié)構(gòu)示意圖;
圖7是本發(fā)明實(shí)施例提供的另一種直接內(nèi)存訪問的傳輸控制裝置的結(jié)構(gòu)示意圖;
圖8是本發(fā)明實(shí)施例提供的又一種直接內(nèi)存訪問的傳輸控制裝置的結(jié)構(gòu)示意圖;
圖9是本發(fā)明實(shí)施例提供的又一種直接內(nèi)存訪問的傳輸控制裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有付出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
請參見圖1,為本發(fā)明實(shí)施例提供了一種直接內(nèi)存訪問的傳輸控制裝置的結(jié)構(gòu)圖。如圖1所述,本實(shí)施例的直接內(nèi)存訪問的傳輸控制裝置1的包括DMA通道11,所述DMA通道11中包括至少一個(gè)用于數(shù)據(jù)傳輸?shù)腄MA通道,每一個(gè)DMA通道均包括輸入隊(duì)列111和輸出隊(duì)列112。輸入隊(duì)列111和輸出隊(duì)列112均是由一系列參數(shù)寄存器組成,用于記錄目標(biāo)DMA任務(wù)的傳輸參數(shù)(例如,數(shù)據(jù)傳輸大小、目的地址、源地址、傳輸進(jìn)度等)、傳輸數(shù)據(jù)等,在可行的方案中,數(shù)據(jù)傳輸?shù)木唧w過程是:直接內(nèi)存訪問的傳輸控制裝置1接收DMA傳輸請求,所述DMA傳輸請求攜帶目標(biāo)DMA任務(wù),所述直接內(nèi)存訪問的傳輸控制裝置1查詢所述目標(biāo)DMA任務(wù)的優(yōu)先級,并根據(jù)所述目標(biāo)DMA任務(wù)的優(yōu)先級,從DMA通道11中選擇與所述目標(biāo)DMA的優(yōu)先級相對應(yīng)的DMA通道作為目標(biāo)通道,獲取所述目標(biāo)DMA任務(wù)的目標(biāo)數(shù)據(jù),將所述目標(biāo)數(shù)據(jù)從目標(biāo)通道的輸入隊(duì)列進(jìn)行輸入,再將所述目標(biāo)數(shù)據(jù)從目標(biāo)通道的輸出隊(duì)列進(jìn)行輸出,即完成了對所述DMA傳輸請求對應(yīng)的數(shù)據(jù)傳輸。
下面將結(jié)合附圖2-附圖5,對本發(fā)明實(shí)施例提供的直接內(nèi)存訪問的傳輸控制方法進(jìn)行詳細(xì)介紹。
請參見圖1,為本發(fā)明實(shí)施例提供了一種直接內(nèi)存訪問的傳輸控制方法的流程示意圖。如圖1所示,本發(fā)明實(shí)施例的所述方法可以包括以下步驟S201-步驟S208。
S201,接收DMA傳輸請求,所述DMA傳輸請求攜帶目標(biāo)DMA任務(wù)。
具體的,直接內(nèi)存訪問的傳輸控制裝置接收DMA傳輸請求,所述DMA傳輸請求攜帶目標(biāo)DMA任務(wù),從所述DMA傳輸請求中獲取目標(biāo)DMA任務(wù)??梢岳斫獾氖?,外部設(shè)備如果想要通過總線直接向存儲器傳輸數(shù)據(jù)時(shí),外部設(shè)備先通過所述直接內(nèi)存訪問的傳輸控制裝置向CPU發(fā)送DMA傳輸請求信號,即所述直接內(nèi)存訪問的傳輸控制裝置向CPU提出接管總線控制權(quán)的請求,CPU收 到請求并響應(yīng)DMA傳輸請求時(shí),會讓出總線控制權(quán),此時(shí),所述直接內(nèi)存訪問的傳輸控制裝置可對DMA傳輸請求進(jìn)行處理,獲取所述DMA傳輸請求中攜帶的目標(biāo)DMA任務(wù),用以進(jìn)行數(shù)據(jù)傳輸。
S202,查詢所述目標(biāo)DMA任務(wù)的優(yōu)先級,并根據(jù)所述目標(biāo)DMA任務(wù)的優(yōu)先級,從DMA通道中選擇與所述目標(biāo)DMA的優(yōu)先級相對應(yīng)的DMA通道作為目標(biāo)通道。
具體的,所述直接內(nèi)存訪問的傳輸控制裝置查詢所述目標(biāo)DMA任務(wù)的優(yōu)先級,并根據(jù)所述目標(biāo)DMA任務(wù)的優(yōu)先級,從DMA通道中選擇與所述目標(biāo)DMA的優(yōu)先級相對應(yīng)的DMA通道作為目標(biāo)通道。所述直接內(nèi)存訪問的傳輸控制裝置可以預(yù)先對不同應(yīng)用的不同DMA任務(wù)設(shè)定不同優(yōu)先級,可選的方案中,傳輸數(shù)據(jù)量大的DMA任務(wù)設(shè)置的優(yōu)先級較低,傳輸數(shù)據(jù)量小的DMA任務(wù)設(shè)置的優(yōu)先級較高,這樣可以及時(shí)完成傳輸數(shù)據(jù)量小的DMA任務(wù),提高計(jì)算機(jī)系統(tǒng)的處理效率。所述直接內(nèi)存訪問的傳輸控制裝置并根據(jù)所述目標(biāo)DMA任務(wù)的優(yōu)先級,從DMA通道中選擇與所述目標(biāo)DMA的優(yōu)先級相對應(yīng)的DMA通道作為目標(biāo)通道,用以通過所述目標(biāo)通道對所述目標(biāo)DMA任務(wù)進(jìn)行數(shù)據(jù)傳輸。
S203,判斷所述DMA通道中是否存在已經(jīng)被其他DMA任務(wù)占用的通道。
具體的,所述直接內(nèi)存訪問的傳輸控制裝置判斷所述DMA通道中是否存在已經(jīng)被其他DMA任務(wù)占用的通道。所述DMA通道包括至少一個(gè)用于數(shù)據(jù)傳輸?shù)腄MA通道,所述直接內(nèi)存訪問的傳輸控制裝置判斷除了目標(biāo)通道之外的通道中是否有其他DMA任務(wù)占用的通道。
S204,當(dāng)所述DMA通道中存在已經(jīng)被其他DMA任務(wù)占用的通道時(shí),查詢已占用通道的DMA任務(wù)的任務(wù)類型以及所述目標(biāo)DMA任務(wù)的任務(wù)類型。
具體的,當(dāng)所述DMA通道中存在已經(jīng)被其他DMA任務(wù)占用的通道時(shí),所述直接內(nèi)存訪問的傳輸控制裝置查詢已占用通道的DMA任務(wù)的任務(wù)類型以及所述目標(biāo)DMA任務(wù)的任務(wù)類型。其中,所述任務(wù)類型可以劃分為帶寬型任務(wù)和延時(shí)型任務(wù),帶寬型任務(wù)注重單位時(shí)間處理的數(shù)據(jù)量,延時(shí)型任務(wù)注重單位任務(wù)的處理時(shí)間。可行的方案中,也可以將任務(wù)類型劃分為聯(lián)機(jī)事務(wù)處理(Online Transaction Processing,OLTP)和聯(lián)機(jī)分析處理(Online Analytical Processing,OLAP),其中,OLTP是以小的任務(wù)以及小的查詢?yōu)橹鳎饬縊LTP系統(tǒng)的性能參數(shù)是單任務(wù)的響應(yīng)時(shí)間,例如在線系統(tǒng)的網(wǎng)上訂票等,OLAP是以大任務(wù)為主, 主要是對歷史數(shù)據(jù)進(jìn)行多維度的統(tǒng)計(jì)分析,任務(wù)的處理時(shí)間很長,衡量OLAP系統(tǒng)的性能參數(shù)是單位時(shí)間處理數(shù)據(jù)的總量。所述直接內(nèi)存訪問的傳輸控制裝置對不同應(yīng)用的不同DMA任務(wù)的任務(wù)類型都已進(jìn)行了記錄,可通過記錄查詢DMA任務(wù)對應(yīng)的任務(wù)類型。
S205,判斷在所述已占用通道的DMA任務(wù)中是否存在與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù)。
具體的,所述直接內(nèi)存訪問的傳輸控制裝置根據(jù)所查詢到的所述已占用通道的DMA任務(wù)的任務(wù)類型和目標(biāo)DMA任務(wù)的任務(wù)類型,判斷在所述已占用通道的DMA任務(wù)中是否存在與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù)。
S206,當(dāng)在所述已占用通道的DMA任務(wù)中存在與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù)時(shí),查詢所述與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù)的優(yōu)先級。
具體的,當(dāng)在所述已占用通道的DMA任務(wù)中存在與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù)時(shí),所述直接內(nèi)存訪問的傳輸控制裝置查詢所述與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù)的優(yōu)先級。所述直接內(nèi)存訪問的傳輸控制裝置根據(jù)任務(wù)類型和優(yōu)先級確定DMA任務(wù)的優(yōu)先處理順序。
S207,判斷在所述與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù)中是否存在低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)。
具體的,所述直接內(nèi)存訪問的傳輸控制裝置判斷在所述與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù)中是否存在低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)。
S208,當(dāng)在所述與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù)中,存在低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)時(shí),暫停所述低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)的數(shù)據(jù)傳輸,并獲取目標(biāo)DMA任務(wù)的目標(biāo)數(shù)據(jù),將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸入隊(duì)列進(jìn)行輸入,以及將所述目標(biāo)數(shù)據(jù)通過所述低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)對應(yīng)的已占用通道的輸出隊(duì)列進(jìn)行輸出。
具體的,當(dāng)在所述與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù)中,存在低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)時(shí),所述直接內(nèi)存訪問的傳 輸控制裝置暫停所述低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)的數(shù)據(jù)傳輸??尚械姆桨钢?,當(dāng)所述低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)被劃分為多個(gè)小任務(wù)時(shí),當(dāng)前時(shí)刻即使所述低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)中有一些小任務(wù)已從輸出隊(duì)列輸出,但仍有其他小任務(wù)仍未被傳輸時(shí)或者已從所述已占用通道的輸入隊(duì)列輸入時(shí),暫停所述其他小任務(wù)的處理,優(yōu)先對所述目標(biāo)DMA任務(wù)進(jìn)行數(shù)據(jù)傳輸。所述直接內(nèi)存訪問的傳輸控制裝置獲取目標(biāo)DMA任務(wù)的目標(biāo)數(shù)據(jù),將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸入隊(duì)列進(jìn)行輸入,以及將所述目標(biāo)數(shù)據(jù)通過所述低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)對應(yīng)的已占用通道的輸出隊(duì)列進(jìn)行輸出??梢岳斫獾氖?,在完成對所述目標(biāo)DMA任務(wù)的輸出后,向CPU發(fā)送輸出目標(biāo)DMA任務(wù)對應(yīng)的數(shù)據(jù)傳輸完畢的信號,以使將總線控制權(quán)還給CPU。
需要說明的是,本發(fā)明實(shí)施例中所介紹的直接內(nèi)存訪問的傳輸控制方法可以應(yīng)用于外部設(shè)備與所述直接內(nèi)存訪問的傳輸控制裝置的其中的一個(gè)DMA通道進(jìn)行連接的情況,即,若所述外部設(shè)備接收數(shù)據(jù),只能從該DMA傳輸通道的輸出隊(duì)列接收數(shù)據(jù),若所述外部設(shè)備發(fā)送數(shù)據(jù),只能從該DMA通道的輸入隊(duì)列發(fā)送數(shù)據(jù)。例如:外部設(shè)備A連接于DMA通道1以及外部設(shè)備B連接于DMA通道1的情況,外部設(shè)備A發(fā)出DMA任務(wù)1的傳輸請求,DMA任務(wù)1是將存儲器的數(shù)據(jù)傳輸至外部設(shè)備,根據(jù)DMA任務(wù)1的優(yōu)先級分配目標(biāo)通道(所述目標(biāo)通道并不限定于DMA通道1,是因?yàn)樗鰯?shù)據(jù)是從存儲器傳輸至DMA通道,因此不限定數(shù)據(jù)輸入的通道),而外部設(shè)備B對應(yīng)的DMA任務(wù)2正在DMA通道1中正在處理,并且DMA任務(wù)1的任務(wù)類型和DMA任務(wù)2的任務(wù)類型不同,DMA任務(wù)1的優(yōu)先級高于DMA任務(wù)2的優(yōu)先級,由于需要優(yōu)先處理DMA任務(wù)1和兩個(gè)任務(wù)的輸出隊(duì)列相同,因此暫停DMA任務(wù)2的數(shù)據(jù)傳輸,并獲取DMA任務(wù)1的數(shù)據(jù),將DMA任務(wù)1的數(shù)據(jù)通過所述目標(biāo)通道的輸入隊(duì)列進(jìn)行輸入,以及將所述目標(biāo)數(shù)據(jù)通過DMA通道1的輸出隊(duì)列進(jìn)行輸出。
在本發(fā)明實(shí)施例中,當(dāng)接收到傳輸目標(biāo)DMA任務(wù)的DMA傳輸請求時(shí),根據(jù)目標(biāo)DMA任務(wù)對應(yīng)的優(yōu)先級為其選擇一目標(biāo)通道,在DMA通道中存在其他DMA任務(wù)的情況下,通過查詢已占用通道的其他DMA任務(wù)的任務(wù)類型、優(yōu)先級以及目標(biāo)DMA任務(wù)的任務(wù)類型,并對已占用通道的其他DMA任務(wù)的任務(wù)類型、優(yōu)先級以及目標(biāo)DMA任務(wù)的任務(wù)類型、優(yōu)先級進(jìn)行對比,根據(jù)對比結(jié)果對 DMA通道的傳輸數(shù)據(jù)進(jìn)行控制,可以實(shí)現(xiàn)根據(jù)DMA任務(wù)的優(yōu)先級、任務(wù)類型合理規(guī)劃數(shù)據(jù)傳輸,即使遇到緊急DMA任務(wù)也可以優(yōu)先處理,提高了計(jì)算機(jī)系統(tǒng)處理效率和服務(wù)質(zhì)量。
請參見圖3,為本發(fā)明實(shí)施例提供了一種直接內(nèi)存訪問的傳輸控制方法的流程示意圖。如圖3所示,本發(fā)明實(shí)施例的所述方法可以包括以下步驟S301-步驟S310。
S301,預(yù)先保存DMA任務(wù)的優(yōu)先級列表,以及DMA任務(wù)優(yōu)先級與DMA通道映射關(guān)系表。
具體的,直接內(nèi)存訪問的傳輸控制裝置預(yù)先保存DMA任務(wù)的優(yōu)先級列表,以及DMA任務(wù)優(yōu)先級與DMA通道映射關(guān)系表。所述直接內(nèi)存訪問的傳輸控制裝置對不同DMA任務(wù)設(shè)定不同優(yōu)先級,對不同的DMA通道設(shè)定不同優(yōu)先級,并可以接收對DMA任務(wù)優(yōu)先級和DMA通道優(yōu)先級進(jìn)行更改。所述DMA通道包括至少一個(gè)用于數(shù)據(jù)傳輸?shù)耐ǖ?。可選的方案中,所述直接內(nèi)存訪問的傳輸控制裝置對各個(gè)通道設(shè)定優(yōu)先級,DMA任務(wù)的優(yōu)先級可根據(jù)傳輸?shù)臄?shù)據(jù)量大小確定優(yōu)先級,數(shù)據(jù)量較小的優(yōu)先級高,數(shù)據(jù)量大的優(yōu)先級高,按照數(shù)據(jù)量大小分為各個(gè)不同的優(yōu)先級,將數(shù)據(jù)量對應(yīng)的優(yōu)先級與DMA通道設(shè)定的優(yōu)先級進(jìn)行對應(yīng),并將DMA任務(wù)的優(yōu)先級列表、DMA任務(wù)優(yōu)先級與DMA通道映射關(guān)系表進(jìn)行保存。
S302,接收DMA傳輸請求,所述DMA傳輸請求攜帶目標(biāo)DMA任務(wù)。
具體的,所述直接內(nèi)存訪問的傳輸控制裝置接收DMA傳輸請求,所述DMA傳輸請求攜帶目標(biāo)DMA任務(wù),從所述DMA傳輸請求中獲取目標(biāo)DMA任務(wù)。可以理解的是,外部設(shè)備如果想要通過總線直接向存儲器傳輸數(shù)據(jù)時(shí),外部設(shè)備先通過所述直接內(nèi)存訪問的傳輸控制裝置向CPU發(fā)送DMA傳輸請求信號,即所述直接內(nèi)存訪問的傳輸控制裝置向CPU提出接管總線控制權(quán)的請求,CPU收到請求并響應(yīng)DMA傳輸請求時(shí),會讓出總線控制權(quán),此時(shí),所述直接內(nèi)存訪問的傳輸控制裝置可對DMA傳輸請求進(jìn)行處理,獲取所述DMA傳輸請求中攜帶的目標(biāo)DMA任務(wù),用以進(jìn)行數(shù)據(jù)傳輸。
S303,查詢所述目標(biāo)DMA任務(wù)的優(yōu)先級,并根據(jù)所述目標(biāo)DMA任務(wù)的優(yōu)先級,從DMA通道中選擇與所述目標(biāo)DMA的優(yōu)先級相對應(yīng)的DMA通道作為 目標(biāo)通道。
具體的,所述直接內(nèi)存訪問的傳輸控制裝置在所述DMA任務(wù)的優(yōu)先級列表中查詢所述目標(biāo)DMA任務(wù)的優(yōu)先級,從所述DMA任務(wù)優(yōu)先級與DMA通道映射關(guān)系表中查詢與所述目標(biāo)DMA任務(wù)的優(yōu)先級相對應(yīng)的DMA通道,將與所述目標(biāo)DMA任務(wù)的優(yōu)先級相對應(yīng)的DMA通道作為目標(biāo)通道。
S304,判斷所述DMA通道中是否存在已經(jīng)被其他DMA任務(wù)占用的通道。
具體的,所述直接內(nèi)存訪問的傳輸控制裝置判斷所述DMA通道中是否存在已經(jīng)被其他DMA任務(wù)占用的通道。所述DMA通道包括至少一個(gè)用于數(shù)據(jù)傳輸?shù)腄MA通道,所述直接內(nèi)存訪問的傳輸控制裝置判斷除了目標(biāo)通道之外的通道中是否有其他DMA任務(wù)占用的通道。若所述DMA通道中存在已經(jīng)被其他DMA任務(wù)占用的通道,則執(zhí)行步驟S305,若所述DMA通道中不存在已經(jīng)被其他DMA任務(wù)占用的通道,則執(zhí)行步驟S310。
S305,查詢已占用通道的DMA任務(wù)的任務(wù)類型以及所述目標(biāo)DMA任務(wù)的任務(wù)類型。
具體的,當(dāng)所述DMA通道中存在已經(jīng)被其他DMA任務(wù)占用的通道時(shí),所述直接內(nèi)存訪問的傳輸控制裝置查詢已占用通道的DMA任務(wù)的任務(wù)類型以及所述目標(biāo)DMA任務(wù)的任務(wù)類型。其中,所述任務(wù)類型可以劃分為帶寬型任務(wù)和延時(shí)型任務(wù),帶寬型任務(wù)注重單位時(shí)間處理的數(shù)據(jù)量,延時(shí)型任務(wù)注重單位任務(wù)的處理時(shí)間??尚械姆桨钢?,也可以將任務(wù)類型劃分為OLTP和OLAP,其中,OLTP是以小的任務(wù)以及小的查詢?yōu)橹鳎饬縊LTP系統(tǒng)的性能參數(shù)是單任務(wù)的響應(yīng)時(shí)間,例如在線系統(tǒng)的網(wǎng)上訂票等,OLAP是以大任務(wù)為主,主要是對歷史數(shù)據(jù)進(jìn)行多維度的統(tǒng)計(jì)分析,任務(wù)的處理時(shí)間很長,衡量OLAP系統(tǒng)的性能參數(shù)是單位時(shí)間處理數(shù)據(jù)的總量。所述直接內(nèi)存訪問的傳輸控制裝置對不同應(yīng)用的不同DMA任務(wù)的任務(wù)類型都已進(jìn)行了記錄,可通過記錄查詢DMA任務(wù)對應(yīng)的任務(wù)類型。
S306,判斷在所述已占用通道的DMA任務(wù)中是否存在與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù)。
具體的,所述直接內(nèi)存訪問的傳輸控制裝置根據(jù)所查詢到的所述已占用通道的DMA任務(wù)的任務(wù)類型和目標(biāo)DMA任務(wù)的任務(wù)類型,判斷在所述已占用通道的DMA任務(wù)中是否存在與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任 務(wù)。若在所述已占用通道的DMA任務(wù)中存在與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù),則執(zhí)行步驟S307,若在所述已占用通道的DMA任務(wù)中是不存在與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù),則執(zhí)行步驟S310。
S307,查詢所述與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù)的優(yōu)先級。
具體的,當(dāng)在所述已占用通道的DMA任務(wù)中存在與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù)時(shí),所述直接內(nèi)存訪問的傳輸控制裝置查詢所述與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù)的優(yōu)先級。所述直接內(nèi)存訪問的傳輸控制裝置根據(jù)任務(wù)類型和優(yōu)先級確定DMA任務(wù)的優(yōu)先處理順序。
S308,判斷在所述與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù)中是否存在低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)。
具體的,所述直接內(nèi)存訪問的傳輸控制裝置判斷在所述與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù)中是否存在低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)。若在所述與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù)中存在低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù),則執(zhí)行步驟S309,若不存在,則執(zhí)行步驟S310。
S309,暫停所述低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)的數(shù)據(jù)傳輸,并獲取目標(biāo)DMA任務(wù)的目標(biāo)數(shù)據(jù),將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸入隊(duì)列進(jìn)行輸入,以及將所述目標(biāo)數(shù)據(jù)通過所述低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)對應(yīng)的已占用通道的輸出隊(duì)列進(jìn)行輸出。
具體的,當(dāng)在所述與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù)中,存在低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)時(shí),所述直接內(nèi)存訪問的傳輸控制裝置暫停所述低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)的數(shù)據(jù)傳輸??尚械姆桨钢校?dāng)所述低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)被劃分為多個(gè)小任務(wù)時(shí),當(dāng)前時(shí)刻即使所述低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)中有一些小任務(wù)已從輸出隊(duì)列輸出,但仍有其他小任務(wù)仍未被傳輸時(shí)或者已從所述已占用通道的輸入隊(duì)列輸入時(shí),暫停所述其他小任務(wù)的處理,優(yōu)先對所述目標(biāo)DMA任務(wù)進(jìn)行數(shù)據(jù)傳輸。所述直接內(nèi)存訪問的傳輸控制裝置獲取目標(biāo)DMA任務(wù)的目標(biāo)數(shù)據(jù),將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸入隊(duì)列進(jìn)行 輸入,以及將所述目標(biāo)數(shù)據(jù)通過所述低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)對應(yīng)的已占用通道的輸出隊(duì)列進(jìn)行輸出??梢岳斫獾氖?,在完成對所述目標(biāo)DMA任務(wù)的輸出后,向CPU發(fā)送輸出目標(biāo)DMA任務(wù)對應(yīng)的數(shù)據(jù)傳輸完畢的信號,以使將總線控制權(quán)還給CPU。
需要說明的是,本發(fā)明實(shí)施例中所介紹的直接內(nèi)存訪問的傳輸控制方法可以應(yīng)用于外部設(shè)備與所述直接內(nèi)存訪問的傳輸控制裝置的其中的一個(gè)DMA通道進(jìn)行連接的情況,即,若所述外部設(shè)備接收數(shù)據(jù),只能從該DMA傳輸通道的輸出隊(duì)列接收數(shù)據(jù),若所述外部設(shè)備發(fā)送數(shù)據(jù),只能從該DMA通道的輸入隊(duì)列發(fā)送數(shù)據(jù)。例如:外部設(shè)備A連接于DMA通道1以及外部設(shè)備B連接于DMA通道1的情況,外部設(shè)備A發(fā)出DMA任務(wù)1的傳輸請求,DMA任務(wù)1是將存儲器的數(shù)據(jù)傳輸至外部設(shè)備,根據(jù)DMA任務(wù)1的優(yōu)先級分配目標(biāo)通道(所述目標(biāo)通道并不限定于DMA通道1,是因?yàn)樗鰯?shù)據(jù)是從存儲器傳輸至DMA通道,因此不限定數(shù)據(jù)輸入的通道),而外部設(shè)備B對應(yīng)的DMA任務(wù)2正在DMA通道1中正在處理,并且DMA任務(wù)1的任務(wù)類型和DMA任務(wù)2的任務(wù)類型不同,DMA任務(wù)1的優(yōu)先級高于DMA任務(wù)2的優(yōu)先級,由于需要優(yōu)先處理DMA任務(wù)1和兩個(gè)任務(wù)的輸出隊(duì)列相同,因此暫停DMA任務(wù)2的數(shù)據(jù)傳輸,并獲取DMA任務(wù)1的數(shù)據(jù),將DMA任務(wù)1的數(shù)據(jù)通過所述目標(biāo)通道的輸入隊(duì)列進(jìn)行輸入,以及將所述目標(biāo)數(shù)據(jù)通過DMA通道1的輸出隊(duì)列進(jìn)行輸出。
S310,將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸入隊(duì)列進(jìn)行輸入,以及將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸出隊(duì)列進(jìn)行輸出。
具體的,所述直接內(nèi)存訪問的傳輸控制裝置將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸入隊(duì)列進(jìn)行輸入,以及將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸出隊(duì)列進(jìn)行輸出。一種可行的方案中,當(dāng)所述DMA通道中不存在已經(jīng)被其他DMA任務(wù)占用的通道時(shí),所述直接內(nèi)存訪問的傳輸控制裝置獲取目標(biāo)DMA任務(wù)對應(yīng)的目標(biāo)數(shù)據(jù),將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸入隊(duì)列進(jìn)行輸入,以及將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸出隊(duì)列進(jìn)行輸出。另一種可行的方案中,當(dāng)在所述已占用通道的DMA任務(wù)中不存在與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù)時(shí),所述直接內(nèi)存訪問的傳輸控制裝置獲取目標(biāo)DMA任務(wù)對應(yīng)的目標(biāo)數(shù)據(jù),將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸入隊(duì)列進(jìn)行輸入,以及將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸出隊(duì)列進(jìn)行輸出。又一種可行的方案中, 當(dāng)在所述與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù)中不存在低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)時(shí),所述直接內(nèi)存訪問的傳輸控制裝置獲取目標(biāo)DMA任務(wù)對應(yīng)的目標(biāo)數(shù)據(jù),將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸入隊(duì)列進(jìn)行輸入,以及將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸出隊(duì)列進(jìn)行輸出。
在本發(fā)明實(shí)施例中,當(dāng)接收到傳輸目標(biāo)DMA任務(wù)的DMA傳輸請求時(shí),根據(jù)目標(biāo)DMA任務(wù)對應(yīng)的優(yōu)先級為其選擇一目標(biāo)通道,在DMA通道中存在其他DMA任務(wù)的情況下,通過查詢已占用通道的其他DMA任務(wù)的任務(wù)類型、優(yōu)先級以及目標(biāo)DMA任務(wù)的任務(wù)類型,并對已占用通道的其他DMA任務(wù)的任務(wù)類型、優(yōu)先級以及目標(biāo)DMA任務(wù)的任務(wù)類型、優(yōu)先級進(jìn)行對比,根據(jù)對比結(jié)果對DMA通道的傳輸數(shù)據(jù)進(jìn)行控制,可以實(shí)現(xiàn)根據(jù)DMA任務(wù)的優(yōu)先級、任務(wù)類型合理規(guī)劃數(shù)據(jù)傳輸,即使遇到緊急DMA任務(wù)也可以優(yōu)先處理,提高了計(jì)算機(jī)系統(tǒng)處理效率和服務(wù)質(zhì)量。
請參見圖4,為本發(fā)明實(shí)施例提供了一種直接內(nèi)存訪問的傳輸控制方法的流程示意圖。如圖4所示,本發(fā)明實(shí)施例的所述方法可以包括以下步驟S401-步驟S406。
S401,接收DMA傳輸請求,所述DMA傳輸請求攜帶目標(biāo)DMA任務(wù)。
具體的,直接內(nèi)存訪問的傳輸控制裝置接收DMA傳輸請求,所述DMA傳輸請求攜帶目標(biāo)DMA任務(wù),從所述DMA傳輸請求中獲取目標(biāo)DMA任務(wù)??梢岳斫獾氖?,外部設(shè)備如果想要通過總線直接向存儲器傳輸數(shù)據(jù)時(shí),外部設(shè)備先通過所述直接內(nèi)存訪問的傳輸控制裝置向CPU發(fā)送DMA傳輸請求信號,即所述直接內(nèi)存訪問的傳輸控制裝置向CPU提出接管總線控制權(quán)的請求,CPU收到請求并響應(yīng)DMA傳輸請求時(shí),會讓出總線控制權(quán),此時(shí),所述直接內(nèi)存訪問的傳輸控制裝置可對DMA傳輸請求進(jìn)行處理,獲取所述DMA傳輸請求中攜帶的目標(biāo)DMA任務(wù),用以進(jìn)行數(shù)據(jù)傳輸。
S402,查詢所述目標(biāo)DMA任務(wù)的優(yōu)先級,并根據(jù)所述目標(biāo)DMA任務(wù)的優(yōu)先級,從DMA通道中選擇與所述目標(biāo)DMA的優(yōu)先級相對應(yīng)的DMA通道作為目標(biāo)通道。
具體的,所述直接內(nèi)存訪問的傳輸控制裝置查詢所述目標(biāo)DMA任務(wù)的優(yōu)先級,并根據(jù)所述目標(biāo)DMA任務(wù)的優(yōu)先級,從DMA通道中選擇與所述目標(biāo)DMA 的優(yōu)先級相對應(yīng)的DMA通道作為目標(biāo)通道。所述直接內(nèi)存訪問的傳輸控制裝置可以預(yù)先對不同應(yīng)用的不同DMA任務(wù)設(shè)定不同優(yōu)先級,可選的方案中,傳輸數(shù)據(jù)量大的DMA任務(wù)設(shè)置的優(yōu)先級較低,傳輸數(shù)據(jù)量小的DMA任務(wù)設(shè)置的優(yōu)先級較高,這樣可以及時(shí)完成傳輸數(shù)據(jù)量小的DMA任務(wù),提高計(jì)算機(jī)系統(tǒng)的處理效率。所述直接內(nèi)存訪問的傳輸控制裝置并根據(jù)所述目標(biāo)DMA任務(wù)的優(yōu)先級,從DMA通道中選擇與所述目標(biāo)DMA的優(yōu)先級相對應(yīng)的DMA通道作為目標(biāo)通道,用以通過所述目標(biāo)通道對所述目標(biāo)DMA任務(wù)進(jìn)行數(shù)據(jù)傳輸。
S403,判斷所述DMA通道中是否存在已經(jīng)被其他DMA任務(wù)占用的通道。
具體的,所述直接內(nèi)存訪問的傳輸控制裝置判斷所述DMA通道中是否存在已經(jīng)被其他DMA任務(wù)占用的通道。所述DMA通道包括至少一個(gè)用于數(shù)據(jù)傳輸?shù)腄MA通道,所述直接內(nèi)存訪問的傳輸控制裝置判斷除了目標(biāo)通道之外的通道中是否有其他DMA任務(wù)占用的通道。
S404,當(dāng)DMA通道中存在已經(jīng)被其他DMA任務(wù)占用的通道時(shí),查詢已占用通道的DMA任務(wù)的優(yōu)先級。
具體的,當(dāng)所述DMA通道中存在已經(jīng)被其他DMA任務(wù)占用的通道時(shí),所述直接內(nèi)存訪問的傳輸控制裝置查詢已占用通道的DMA任務(wù)的優(yōu)先級。所述直接內(nèi)存訪問的傳輸控制裝置根據(jù)優(yōu)先級確定DMA任務(wù)的處理順序。
S405,判斷在所述已占用通道的DMA任務(wù)中是否存在低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)。
具體的,所述直接內(nèi)存訪問的傳輸控制裝置判斷在所述已占用通道的DMA任務(wù)中是否存在低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)。
S406,當(dāng)在所述已占用通道的DMA任務(wù)中存在低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)時(shí),暫停所述低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)的數(shù)據(jù)傳輸,并獲取目標(biāo)DMA任務(wù)的目標(biāo)數(shù)據(jù),將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸入隊(duì)列進(jìn)行輸入,以及將所述目標(biāo)數(shù)據(jù)通過所述低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)對應(yīng)的已占用通道的輸出隊(duì)列進(jìn)行輸出。
具體的,當(dāng)在所述已占用通道的DMA任務(wù)中存在低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)時(shí),所述直接內(nèi)存訪問的傳輸控制裝置暫停所述低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)的數(shù)據(jù)傳輸??尚械姆桨钢校?dāng)所述低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)被劃分為多個(gè)小任務(wù)時(shí),當(dāng)前時(shí)刻即 使所述低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)中有一些小任務(wù)已從輸出隊(duì)列輸出,但仍有其他小任務(wù)仍未被傳輸時(shí)或者已從所述已占用通道的輸入隊(duì)列輸入時(shí),暫停所述其他小任務(wù)的處理,優(yōu)先對所述目標(biāo)DMA任務(wù)進(jìn)行數(shù)據(jù)傳輸。所述直接內(nèi)存訪問的傳輸控制裝置獲取目標(biāo)DMA任務(wù)的目標(biāo)數(shù)據(jù),將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸入隊(duì)列進(jìn)行輸入,以及將所述目標(biāo)數(shù)據(jù)通過所述低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)對應(yīng)的已占用通道的輸出隊(duì)列進(jìn)行輸出??梢岳斫獾氖?,在完成對所述目標(biāo)DMA任務(wù)的輸出后,向CPU發(fā)送輸出目標(biāo)DMA任務(wù)對應(yīng)的數(shù)據(jù)傳輸完畢的信號,以使將總線控制權(quán)還給CPU。
需要說明的是,本發(fā)明實(shí)施例中所介紹的直接內(nèi)存訪問的傳輸控制方法可以應(yīng)用于外部設(shè)備與所述直接內(nèi)存訪問的傳輸控制裝置的其中的一個(gè)DMA通道進(jìn)行連接的情況,即,若所述外部設(shè)備接收數(shù)據(jù),只能從該DMA傳輸通道的輸出隊(duì)列接收數(shù)據(jù),若所述外部設(shè)備發(fā)送數(shù)據(jù),只能從該DMA通道的輸入隊(duì)列發(fā)送數(shù)據(jù)。例如:外部設(shè)備A連接于DMA通道1以及外部設(shè)備B連接于DMA通道1的情況,外部設(shè)備A發(fā)出DMA任務(wù)1的傳輸請求,DMA任務(wù)1是將存儲器的數(shù)據(jù)傳輸至外部設(shè)備,根據(jù)DMA任務(wù)1的優(yōu)先級分配目標(biāo)通道(所述目標(biāo)通道并不限定于DMA通道1,是因?yàn)樗鰯?shù)據(jù)是從存儲器傳輸至DMA通道,因此不限定數(shù)據(jù)輸入的通道),而外部設(shè)備B對應(yīng)的DMA任務(wù)2正在DMA通道1中正在處理,并且DMA任務(wù)1的優(yōu)先級高于DMA任務(wù)2的優(yōu)先級,由于需要優(yōu)先處理DMA任務(wù)1和兩個(gè)任務(wù)的輸出隊(duì)列相同,因此暫停DMA任務(wù)2的數(shù)據(jù)傳輸,并獲取DMA任務(wù)1的數(shù)據(jù),將DMA任務(wù)1的數(shù)據(jù)通過所述目標(biāo)通道的輸入隊(duì)列進(jìn)行輸入,以及將所述目標(biāo)數(shù)據(jù)通過DMA通道1的輸出隊(duì)列進(jìn)行輸出。
在本發(fā)明實(shí)施例中,當(dāng)接收到傳輸目標(biāo)DMA任務(wù)的DMA傳輸請求時(shí),根據(jù)目標(biāo)DMA任務(wù)對應(yīng)的優(yōu)先級為其選擇一目標(biāo)通道,在DMA通道中存在其他DMA任務(wù)的情況下,通過查詢已占用通道的其他DMA任務(wù)的優(yōu)先級,并對已占用通道的其他DMA任務(wù)的優(yōu)先級以及目標(biāo)DMA任務(wù)的優(yōu)先級進(jìn)行對比,根據(jù)對比結(jié)果對DMA通道的傳輸數(shù)據(jù)進(jìn)行控制,可以實(shí)現(xiàn)根據(jù)DMA任務(wù)的優(yōu)先級合理規(guī)劃數(shù)據(jù)傳輸,即使遇到緊急DMA任務(wù)也可以優(yōu)先處理,提高了計(jì)算機(jī)系統(tǒng)處理效率和服務(wù)質(zhì)量。
請參見圖5,為本發(fā)明實(shí)施例提供了一種直接內(nèi)存訪問的傳輸控制方法的流程示意圖。如圖5所示,本發(fā)明實(shí)施例的所述方法可以包括以下步驟S501-步驟S507。
S501,預(yù)先保存DMA任務(wù)的優(yōu)先級列表,以及DMA任務(wù)優(yōu)先級與DMA通道映射關(guān)系表。
具體的,直接內(nèi)存訪問的傳輸控制裝置預(yù)先保存DMA任務(wù)的優(yōu)先級列表,以及DMA任務(wù)優(yōu)先級與DMA通道映射關(guān)系表。所述直接內(nèi)存訪問的傳輸控制裝置對不同DMA任務(wù)設(shè)定不同優(yōu)先級,對不同的DMA通道設(shè)定不同優(yōu)先級,并可以接收對DMA任務(wù)優(yōu)先級和DMA通道優(yōu)先級進(jìn)行更改。所述DMA通道包括至少一個(gè)用于數(shù)據(jù)傳輸?shù)耐ǖ馈?蛇x的方案中,所述直接內(nèi)存訪問的傳輸控制裝置對各個(gè)通道設(shè)定優(yōu)先級,DMA任務(wù)的優(yōu)先級可根據(jù)傳輸?shù)臄?shù)據(jù)量大小確定優(yōu)先級,數(shù)據(jù)量較小的優(yōu)先級高,數(shù)據(jù)量大的優(yōu)先級高,按照數(shù)據(jù)量大小分為各個(gè)不同的優(yōu)先級,將數(shù)據(jù)量對應(yīng)的優(yōu)先級與DMA通道設(shè)定的優(yōu)先級進(jìn)行對應(yīng),并將DMA任務(wù)的優(yōu)先級列表、DMA任務(wù)優(yōu)先級與DMA通道映射關(guān)系表進(jìn)行保存。
S502,接收DMA傳輸請求,所述DMA傳輸請求攜帶目標(biāo)DMA任務(wù)。
具體的,所述直接內(nèi)存訪問的傳輸控制裝置接收DMA傳輸請求,所述DMA傳輸請求攜帶目標(biāo)DMA任務(wù),從所述DMA傳輸請求中獲取目標(biāo)DMA任務(wù)。可以理解的是,外部設(shè)備如果想要通過總線直接向存儲器傳輸數(shù)據(jù)時(shí),外部設(shè)備先通過所述直接內(nèi)存訪問的傳輸控制裝置向CPU發(fā)送DMA傳輸請求信號,即所述直接內(nèi)存訪問的傳輸控制裝置向CPU提出接管總線控制權(quán)的請求,CPU收到請求并響應(yīng)DMA傳輸請求時(shí),會讓出總線控制權(quán),此時(shí),所述直接內(nèi)存訪問的傳輸控制裝置可對DMA傳輸請求進(jìn)行處理,獲取所述DMA傳輸請求中攜帶的目標(biāo)DMA任務(wù),用以進(jìn)行數(shù)據(jù)傳輸。
S503,查詢所述目標(biāo)DMA任務(wù)的優(yōu)先級,并根據(jù)所述目標(biāo)DMA任務(wù)的優(yōu)先級,從DMA通道中選擇與所述目標(biāo)DMA的優(yōu)先級相對應(yīng)的DMA通道作為目標(biāo)通道。
具體的,所述直接內(nèi)存訪問的傳輸控制裝置在所述DMA任務(wù)的優(yōu)先級列表中查詢所述目標(biāo)DMA任務(wù)的優(yōu)先級,從所述DMA任務(wù)優(yōu)先級與DMA通道映 射關(guān)系表中查詢與所述目標(biāo)DMA任務(wù)的優(yōu)先級相對應(yīng)的DMA通道,將與所述目標(biāo)DMA任務(wù)的優(yōu)先級相對應(yīng)的DMA通道作為目標(biāo)通道。
S504,判斷所述DMA通道中是否存在已經(jīng)被其他DMA任務(wù)占用的通道。
具體的,所述直接內(nèi)存訪問的傳輸控制裝置判斷所述DMA通道中是否存在已經(jīng)被其他DMA任務(wù)占用的通道。所述DMA通道包括至少一個(gè)用于數(shù)據(jù)傳輸?shù)腄MA通道,所述直接內(nèi)存訪問的傳輸控制裝置判斷除了目標(biāo)通道之外的通道中是否有其他DMA任務(wù)占用的通道。
S505,當(dāng)DMA通道中存在已經(jīng)被其他DMA任務(wù)占用的通道時(shí),查詢已占用通道的DMA任務(wù)的優(yōu)先級。
具體的,當(dāng)所述DMA通道中存在已經(jīng)被其他DMA任務(wù)占用的通道時(shí),所述直接內(nèi)存訪問的傳輸控制裝置查詢已占用通道的DMA任務(wù)的優(yōu)先級。所述直接內(nèi)存訪問的傳輸控制裝置根據(jù)優(yōu)先級確定DMA任務(wù)的處理順序。
S506,判斷在所述已占用通道的DMA任務(wù)中是否存在低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)。
具體的,所述直接內(nèi)存訪問的傳輸控制裝置判斷在所述已占用通道的DMA任務(wù)中是否存在低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)。
S507,當(dāng)在所述已占用通道的DMA任務(wù)中存在低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)時(shí),暫停所述低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)的數(shù)據(jù)傳輸,并獲取目標(biāo)DMA任務(wù)的目標(biāo)數(shù)據(jù),將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸入隊(duì)列進(jìn)行輸入,以及將所述目標(biāo)數(shù)據(jù)通過所述低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)對應(yīng)的已占用通道的輸出隊(duì)列進(jìn)行輸出。
具體的,當(dāng)在所述已占用通道的DMA任務(wù)中存在低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)時(shí),所述直接內(nèi)存訪問的傳輸控制裝置暫停所述低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)的數(shù)據(jù)傳輸??尚械姆桨钢校?dāng)所述低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)被劃分為多個(gè)小任務(wù)時(shí),當(dāng)前時(shí)刻即使所述低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)中有一些小任務(wù)已從輸出隊(duì)列輸出,但仍有其他小任務(wù)仍未被傳輸時(shí)或者已從所述已占用通道的輸入隊(duì)列輸入時(shí),暫停所述其他小任務(wù)的處理,優(yōu)先對所述目標(biāo)DMA任務(wù)進(jìn)行數(shù)據(jù)傳輸。所述直接內(nèi)存訪問的傳輸控制裝置獲取目標(biāo)DMA任務(wù)的目標(biāo)數(shù)據(jù),將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸入隊(duì)列進(jìn)行輸入,以及將所述目標(biāo)數(shù)據(jù)通過所 述低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)對應(yīng)的已占用通道的輸出隊(duì)列進(jìn)行輸出??梢岳斫獾氖?,在完成對所述目標(biāo)DMA任務(wù)的輸出后,向CPU發(fā)送輸出目標(biāo)DMA任務(wù)對應(yīng)的數(shù)據(jù)傳輸完畢的信號,以使將總線控制權(quán)還給CPU。
進(jìn)一步,一種可行的方案中,當(dāng)DMA通道中不存在已經(jīng)被其他DMA任務(wù)占用的通道時(shí),獲取目標(biāo)DMA任務(wù)對應(yīng)的目標(biāo)數(shù)據(jù),將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸入隊(duì)列進(jìn)行輸入,以及將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸出隊(duì)列進(jìn)行輸出。另一種可行的方案中,當(dāng)在所述已占用通道的DMA任務(wù)中不存在低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)時(shí),獲取目標(biāo)DMA任務(wù)對應(yīng)的目標(biāo)數(shù)據(jù),將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸入隊(duì)列進(jìn)行輸入,以及將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸出隊(duì)列進(jìn)行輸出。
需要說明的是,本發(fā)明實(shí)施例中所介紹的直接內(nèi)存訪問的傳輸控制方法可以應(yīng)用于外部設(shè)備與所述直接內(nèi)存訪問的傳輸控制裝置的其中的一個(gè)DMA通道進(jìn)行連接的情況,即,若所述外部設(shè)備接收數(shù)據(jù),只能從該DMA傳輸通道的輸出隊(duì)列接收數(shù)據(jù),若所述外部設(shè)備發(fā)送數(shù)據(jù),只能從該DMA通道的輸入隊(duì)列發(fā)送數(shù)據(jù)。例如:外部設(shè)備A連接于DMA通道1以及外部設(shè)備B連接于DMA通道1的情況,外部設(shè)備A發(fā)出DMA任務(wù)1的傳輸請求,DMA任務(wù)1是將存儲器的數(shù)據(jù)傳輸至外部設(shè)備,根據(jù)DMA任務(wù)1的優(yōu)先級分配目標(biāo)通道(所述目標(biāo)通道并不限定于DMA通道1,是因?yàn)樗鰯?shù)據(jù)是從存儲器傳輸至DMA通道,因此不限定數(shù)據(jù)輸入的通道),而外部設(shè)備B對應(yīng)的DMA任務(wù)2正在DMA通道1中正在處理,并且DMA任務(wù)1的優(yōu)先級高于DMA任務(wù)2的優(yōu)先級,由于需要優(yōu)先處理DMA任務(wù)1和兩個(gè)任務(wù)的輸出隊(duì)列相同,因此暫停DMA任務(wù)2的數(shù)據(jù)傳輸,并獲取DMA任務(wù)1的數(shù)據(jù),將DMA任務(wù)1的數(shù)據(jù)通過所述目標(biāo)通道的輸入隊(duì)列進(jìn)行輸入,以及將所述目標(biāo)數(shù)據(jù)通過DMA通道1的輸出隊(duì)列進(jìn)行輸出。
在本發(fā)明實(shí)施例中,當(dāng)接收到傳輸目標(biāo)DMA任務(wù)的DMA傳輸請求時(shí),根據(jù)目標(biāo)DMA任務(wù)對應(yīng)的優(yōu)先級為其選擇一目標(biāo)通道,在DMA通道中存在其他DMA任務(wù)的情況下,通過查詢已占用通道的其他DMA任務(wù)的優(yōu)先級,并對已占用通道的其他DMA任務(wù)的優(yōu)先級以及目標(biāo)DMA任務(wù)的優(yōu)先級進(jìn)行對比,根據(jù)對比結(jié)果對DMA通道的傳輸數(shù)據(jù)進(jìn)行控制,可以實(shí)現(xiàn)根據(jù)DMA任務(wù)的優(yōu)先 級合理規(guī)劃數(shù)據(jù)傳輸,即使遇到緊急DMA任務(wù)也可以優(yōu)先處理,提高了計(jì)算機(jī)系統(tǒng)處理效率和服務(wù)質(zhì)量。
下面將結(jié)合附圖6-附圖9,對本發(fā)明實(shí)施例提供的直接內(nèi)存訪問的傳輸控制裝置進(jìn)行詳細(xì)介紹。需要說明的是,附圖4-附圖5所示的直接內(nèi)存訪問的傳輸控制裝置,用于執(zhí)行本發(fā)明圖2-圖5所示實(shí)施例的方法,為了便于說明,僅示出了與本發(fā)明實(shí)施例相關(guān)的部分,具體技術(shù)細(xì)節(jié)未揭示的,請參照本發(fā)明圖2-圖5所示的實(shí)施例。
請參見圖6,為本發(fā)明實(shí)施例提供了一種直接內(nèi)存訪問的傳輸控制裝置的結(jié)構(gòu)示意圖。如圖6所示,本發(fā)明實(shí)施例的所述直接內(nèi)存訪問的傳輸控制裝置6可以包括:接收單元601、第一查詢單元602、第一判斷單元603、第二查詢單元604、第二判斷單元605、第三查詢單元606、第三判斷單元607、暫停單元608和第一傳輸單元609。
接收單元601,用于接收DMA傳輸請求,所述DMA傳輸請求攜帶目標(biāo)DMA任務(wù)。
具體實(shí)現(xiàn)中,所述接收單元601接收DMA傳輸請求,所述DMA傳輸請求攜帶目標(biāo)DMA任務(wù),從所述DMA傳輸請求中獲取目標(biāo)DMA任務(wù)??梢岳斫獾氖?,外部設(shè)備如果想要通過總線直接向存儲器傳輸數(shù)據(jù)時(shí),外部設(shè)備先通過所述直接內(nèi)存訪問的傳輸控制裝置向CPU發(fā)送DMA傳輸請求信號,即向CPU提出接管總線控制權(quán)的請求,CPU收到請求并響應(yīng)DMA傳輸請求時(shí),會讓出總線控制權(quán),此時(shí),所述直接內(nèi)存訪問的傳輸控制裝置可對DMA傳輸請求進(jìn)行處理,獲取所述DMA傳輸請求中攜帶的目標(biāo)DMA任務(wù),用以進(jìn)行數(shù)據(jù)傳輸。
第一查詢單元602,用于查詢所述目標(biāo)DMA任務(wù)的優(yōu)先級,并根據(jù)所述目標(biāo)DMA任務(wù)的優(yōu)先級,從DMA通道中選擇與所述目標(biāo)DMA的優(yōu)先級相對應(yīng)的DMA通道作為目標(biāo)通道。
具體實(shí)現(xiàn)中,所述第一查詢單元602查詢所述目標(biāo)DMA任務(wù)的優(yōu)先級,并根據(jù)所述目標(biāo)DMA任務(wù)的優(yōu)先級,從DMA通道中選擇與所述目標(biāo)DMA的優(yōu)先級相對應(yīng)的DMA通道作為目標(biāo)通道。所述第一查詢單元602可以預(yù)先對不同應(yīng)用的不同DMA任務(wù)設(shè)定不同優(yōu)先級,可選的方案中,傳輸數(shù)據(jù)量大的DMA任務(wù)設(shè)置的優(yōu)先級較低,傳輸數(shù)據(jù)量小的DMA任務(wù)設(shè)置的優(yōu)先級較高,這樣可 以及時(shí)完成傳輸數(shù)據(jù)量小的DMA任務(wù),提高計(jì)算機(jī)系統(tǒng)的處理效率。所述第一查詢單元602并根據(jù)所述目標(biāo)DMA任務(wù)的優(yōu)先級,從DMA通道中選擇與所述目標(biāo)DMA的優(yōu)先級相對應(yīng)的DMA通道作為目標(biāo)通道,用以通過所述目標(biāo)通道對所述目標(biāo)DMA任務(wù)進(jìn)行數(shù)據(jù)傳輸。
第一判斷單元603,用于判斷所述DMA通道中是否存在已經(jīng)被其他DMA任務(wù)占用的通道。
具體實(shí)現(xiàn)中,所述第一判斷單元603判斷所述DMA通道中是否存在已經(jīng)被其他DMA任務(wù)占用的通道。所述DMA通道包括至少一個(gè)用于數(shù)據(jù)傳輸?shù)腄MA通道,所述直接內(nèi)存訪問的傳輸控制裝置判斷除了目標(biāo)通道之外的通道中是否有其他DMA任務(wù)占用的通道。
第二查詢單元604,用于當(dāng)所述DMA通道中存在已經(jīng)被其他DMA任務(wù)占用的通道時(shí),查詢已占用通道的DMA任務(wù)的任務(wù)類型以及所述目標(biāo)DMA任務(wù)的任務(wù)類型。
具體實(shí)現(xiàn)中,當(dāng)所述第一判斷單元603判斷所述DMA通道中存在已經(jīng)被其他DMA任務(wù)占用的通道時(shí),所述第二查詢單元604查詢已占用通道的DMA任務(wù)的任務(wù)類型以及所述目標(biāo)DMA任務(wù)的任務(wù)類型。其中,所述任務(wù)類型可以劃分為帶寬型任務(wù)和延時(shí)型任務(wù),帶寬型任務(wù)注重單位時(shí)間處理的數(shù)據(jù)量,延時(shí)型任務(wù)注重單位任務(wù)的處理時(shí)間??尚械姆桨钢校部梢詫⑷蝿?wù)類型劃分為OLTP和OLAP,其中,OLTP是以小的任務(wù)以及小的查詢?yōu)橹?,衡量OLTP系統(tǒng)的性能參數(shù)是單任務(wù)的響應(yīng)時(shí)間,例如在線系統(tǒng)的網(wǎng)上訂票等,OLAP是以大任務(wù)為主,主要是對歷史數(shù)據(jù)進(jìn)行多維度的統(tǒng)計(jì)分析,任務(wù)的處理時(shí)間很長,衡量OLAP系統(tǒng)的性能參數(shù)是單位時(shí)間處理數(shù)據(jù)的總量。通過對不同應(yīng)用的不同DMA任務(wù)的任務(wù)類型都已進(jìn)行了記錄,所述第二查詢單元604可通過記錄查詢DMA任務(wù)對應(yīng)的任務(wù)類型。
第二判斷單元605,用于判斷在所述已占用通道的DMA任務(wù)中是否存在與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù)。
具體實(shí)現(xiàn)中,根據(jù)所查詢到的所述已占用通道的DMA任務(wù)的任務(wù)類型和目標(biāo)DMA任務(wù)的任務(wù)類型,所述第二判斷單元605判斷在所述已占用通道的DMA任務(wù)中是否存在與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù)。
第三查詢單元606,用于當(dāng)在所述已占用通道的DMA任務(wù)中存在與所述目 標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù)時(shí),查詢所述與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù)的優(yōu)先級。
具體實(shí)現(xiàn)中,當(dāng)所述第二判斷單元605判斷在所述已占用通道的DMA任務(wù)中存在與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù)時(shí),所述第三查詢單元606查詢所述與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù)的優(yōu)先級,用以根據(jù)任務(wù)類型和優(yōu)先級確定DMA任務(wù)的優(yōu)先處理順序。
第三判斷單元607,用于判斷在所述與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù)中是否存在低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)。
具體實(shí)現(xiàn)中,所述第三判斷單元607判斷在所述與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù)中是否存在低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)。
暫停單元608,用于當(dāng)在所述與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù)中,存在低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)時(shí),暫停所述低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)的數(shù)據(jù)傳輸。
具體實(shí)現(xiàn)中,當(dāng)所述第三判斷單元607判斷在所述與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù)中,存在低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)時(shí),所述暫停單元608暫停所述低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)的數(shù)據(jù)傳輸??尚械姆桨钢?,當(dāng)所述低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)被劃分為多個(gè)小任務(wù)時(shí),當(dāng)前時(shí)刻即使所述低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)中有一些小任務(wù)已從輸出隊(duì)列輸出,但仍有其他小任務(wù)仍未被傳輸時(shí)或者已從所述已占用通道的輸入隊(duì)列輸入時(shí),所述暫停單元608暫停所述其他小任務(wù)的處理,優(yōu)先對所述目標(biāo)DMA任務(wù)進(jìn)行數(shù)據(jù)傳輸。
第一傳輸單元609,用于獲取目標(biāo)DMA任務(wù)的目標(biāo)數(shù)據(jù),將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸入隊(duì)列進(jìn)行輸入,以及將所述目標(biāo)數(shù)據(jù)通過所述低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)對應(yīng)的已占用通道的輸出隊(duì)列進(jìn)行輸出。
具體實(shí)現(xiàn)中,在暫停所述低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)的數(shù)據(jù)傳輸之后,所述第一傳輸單元609獲取目標(biāo)DMA任務(wù)的目標(biāo)數(shù)據(jù),將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸入隊(duì)列進(jìn)行輸入,以及將所述目標(biāo)數(shù)據(jù)通過所述低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)對應(yīng)的已占用通道的輸出隊(duì)列 進(jìn)行輸出。可以理解的是,在完成對所述目標(biāo)DMA任務(wù)的輸出后,向CPU發(fā)送輸出目標(biāo)DMA任務(wù)對應(yīng)的數(shù)據(jù)傳輸完畢的信號,以使將總線控制權(quán)還給CPU。
需要說明的是,本發(fā)明實(shí)施例中所介紹的直接內(nèi)存訪問的傳輸控制方法可以應(yīng)用于外部設(shè)備與所述直接內(nèi)存訪問的傳輸控制裝置的其中的一個(gè)DMA通道進(jìn)行連接的情況,即,若所述外部設(shè)備接收數(shù)據(jù),只能從該DMA傳輸通道的輸出隊(duì)列接收數(shù)據(jù),若所述外部設(shè)備發(fā)送數(shù)據(jù),只能從該DMA通道的輸入隊(duì)列發(fā)送數(shù)據(jù)。例如:外部設(shè)備A連接于DMA通道1以及外部設(shè)備B連接于DMA通道1的情況,外部設(shè)備A發(fā)出DMA任務(wù)1的傳輸請求,DMA任務(wù)1是將存儲器的數(shù)據(jù)傳輸至外部設(shè)備,根據(jù)DMA任務(wù)1的優(yōu)先級分配目標(biāo)通道(所述目標(biāo)通道并不限定于DMA通道1,是因?yàn)樗鰯?shù)據(jù)是從存儲器傳輸至DMA通道,因此不限定數(shù)據(jù)輸入的通道),而外部設(shè)備B對應(yīng)的DMA任務(wù)2正在DMA通道1中正在處理,并且DMA任務(wù)1的任務(wù)類型和DMA任務(wù)2的任務(wù)類型不同,DMA任務(wù)1的優(yōu)先級高于DMA任務(wù)2的優(yōu)先級,由于需要優(yōu)先處理DMA任務(wù)1和兩個(gè)任務(wù)的輸出隊(duì)列相同,因此暫停DMA任務(wù)2的數(shù)據(jù)傳輸,并獲取DMA任務(wù)1的數(shù)據(jù),將DMA任務(wù)1的數(shù)據(jù)通過所述目標(biāo)通道的輸入隊(duì)列進(jìn)行輸入,以及將所述目標(biāo)數(shù)據(jù)通過DMA通道1的輸出隊(duì)列進(jìn)行輸出。
在本發(fā)明實(shí)施例中,當(dāng)接收到傳輸目標(biāo)DMA任務(wù)的DMA傳輸請求時(shí),根據(jù)目標(biāo)DMA任務(wù)對應(yīng)的優(yōu)先級為其選擇一目標(biāo)通道,在DMA通道中存在其他DMA任務(wù)的情況下,通過查詢已占用通道的其他DMA任務(wù)的任務(wù)類型、優(yōu)先級以及目標(biāo)DMA任務(wù)的任務(wù)類型,并對已占用通道的其他DMA任務(wù)的任務(wù)類型、優(yōu)先級以及目標(biāo)DMA任務(wù)的任務(wù)類型、優(yōu)先級進(jìn)行對比,根據(jù)對比結(jié)果對DMA通道的傳輸數(shù)據(jù)進(jìn)行控制,可以實(shí)現(xiàn)根據(jù)DMA任務(wù)的優(yōu)先級、任務(wù)類型合理規(guī)劃數(shù)據(jù)傳輸,即使遇到緊急DMA任務(wù)也可以優(yōu)先處理,提高了計(jì)算機(jī)系統(tǒng)處理效率和服務(wù)質(zhì)量。
請參見圖7,為本發(fā)明實(shí)施例提供了一種直接內(nèi)存訪問的傳輸控制裝置的結(jié)構(gòu)示意圖。如圖7所示,本發(fā)明實(shí)施例的所述直接內(nèi)存訪問的傳輸控制裝置7可以包括:預(yù)存單元701、接收單元702、第一查詢單元703、第一判斷單元704、第二傳輸單元705、第二查詢單元706、第二判斷單元707、第三傳輸單元708、 第三查詢單元709、第三判斷單元710、第四傳輸單元711、暫停單元712和第一傳輸單元713。
預(yù)存單元701,用于預(yù)先保存DMA任務(wù)的優(yōu)先級列表,以及DMA任務(wù)優(yōu)先級與DMA通道映射關(guān)系表;
具體實(shí)現(xiàn)中,所述預(yù)存單元701預(yù)先保存DMA任務(wù)的優(yōu)先級列表,以及DMA任務(wù)優(yōu)先級與DMA通道映射關(guān)系表。所述直接內(nèi)存訪問的傳輸控制裝置對不同DMA任務(wù)設(shè)定不同優(yōu)先級,對不同的DMA通道設(shè)定不同優(yōu)先級,并可以接收對DMA任務(wù)優(yōu)先級和DMA通道優(yōu)先級進(jìn)行更改。所述DMA通道包括至少一個(gè)用于數(shù)據(jù)傳輸?shù)耐ǖ???蛇x的方案中,所述直接內(nèi)存訪問的傳輸控制裝置對各個(gè)通道設(shè)定優(yōu)先級,DMA任務(wù)的優(yōu)先級可根據(jù)傳輸?shù)臄?shù)據(jù)量大小確定優(yōu)先級,數(shù)據(jù)量較小的優(yōu)先級高,數(shù)據(jù)量大的優(yōu)先級高,按照數(shù)據(jù)量大小分為各個(gè)不同的優(yōu)先級,將數(shù)據(jù)量對應(yīng)的優(yōu)先級與DMA通道設(shè)定的優(yōu)先級進(jìn)行對應(yīng),并將DMA任務(wù)的優(yōu)先級列表、DMA任務(wù)優(yōu)先級與DMA通道映射關(guān)系表進(jìn)行保存。
接收單元702,用于接收DMA傳輸請求,所述DMA傳輸請求攜帶目標(biāo)DMA任務(wù);
具體實(shí)現(xiàn)中,所述接收單元702接收DMA傳輸請求,所述DMA傳輸請求攜帶目標(biāo)DMA任務(wù),從所述DMA傳輸請求中獲取目標(biāo)DMA任務(wù)??梢岳斫獾氖牵獠吭O(shè)備如果想要通過總線直接向存儲器傳輸數(shù)據(jù)時(shí),外部設(shè)備先通過所述直接內(nèi)存訪問的傳輸控制裝置向CPU發(fā)送DMA傳輸請求信號,即所述直接內(nèi)存訪問的傳輸控制裝置向CPU提出接管總線控制權(quán)的請求,CPU收到請求并響應(yīng)DMA傳輸請求時(shí),會讓出總線控制權(quán),此時(shí),所述直接內(nèi)存訪問的傳輸控制裝置可對DMA傳輸請求進(jìn)行處理,獲取所述DMA傳輸請求中攜帶的目標(biāo)DMA任務(wù),用以進(jìn)行數(shù)據(jù)傳輸。
第一查詢單元703,用于查詢所述目標(biāo)DMA任務(wù)的優(yōu)先級,并根據(jù)所述目標(biāo)DMA任務(wù)的優(yōu)先級,從DMA通道中選擇與所述目標(biāo)DMA的優(yōu)先級相對應(yīng)的DMA通道作為目標(biāo)通道;
具體實(shí)現(xiàn)中,所述第一查詢單元703在所述DMA任務(wù)的優(yōu)先級列表中查詢所述目標(biāo)DMA任務(wù)的優(yōu)先級,從所述DMA任務(wù)優(yōu)先級與DMA通道映射關(guān)系表中查詢與所述目標(biāo)DMA任務(wù)的優(yōu)先級相對應(yīng)的DMA通道,將與所述目標(biāo) DMA任務(wù)的優(yōu)先級相對應(yīng)的DMA通道作為目標(biāo)通道。
第一判斷單元704,用于判斷所述DMA通道中是否存在已經(jīng)被其他DMA任務(wù)占用的通道;
具體實(shí)現(xiàn)中,所述第一判斷單元704判斷所述DMA通道中是否存在已經(jīng)被其他DMA任務(wù)占用的通道。所述DMA通道包括至少一個(gè)用于數(shù)據(jù)傳輸?shù)腄MA通道,所述第一判斷單元704判斷除了目標(biāo)通道之外的通道中是否有其他DMA任務(wù)占用的通道。若所述DMA通道中存在已經(jīng)被其他DMA任務(wù)占用的通道,則執(zhí)行第二傳輸單元705,若所述DMA通道中不存在已經(jīng)被其他DMA任務(wù)占用的通道,則執(zhí)行第二查詢單元706。
第二傳輸單元705,用于當(dāng)所述DMA通道中不存在已經(jīng)被其他DMA任務(wù)占用的通道時(shí),獲取目標(biāo)DMA任務(wù)對應(yīng)的目標(biāo)數(shù)據(jù),將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸入隊(duì)列進(jìn)行輸入,以及將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸出隊(duì)列進(jìn)行輸出。
具體實(shí)現(xiàn)中,當(dāng)所述第一判斷單元704判斷所述DMA通道中不存在已經(jīng)被其他DMA任務(wù)占用的通道時(shí),所述第二傳輸單元705獲取目標(biāo)DMA任務(wù)對應(yīng)的目標(biāo)數(shù)據(jù),將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸入隊(duì)列進(jìn)行輸入,以及將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸出隊(duì)列進(jìn)行輸出。
第二查詢單元706,用于當(dāng)所述DMA通道中存在已經(jīng)被其他DMA任務(wù)占用的通道時(shí),查詢已占用通道的DMA任務(wù)的任務(wù)類型以及所述目標(biāo)DMA任務(wù)的任務(wù)類型;
具體實(shí)現(xiàn)中,當(dāng)所述第一判斷單元704判斷所述DMA通道中存在已經(jīng)被其他DMA任務(wù)占用的通道時(shí),所述第二查詢單元706查詢已占用通道的DMA任務(wù)的任務(wù)類型以及所述目標(biāo)DMA任務(wù)的任務(wù)類型。其中,所述任務(wù)類型可以劃分為帶寬型任務(wù)和延時(shí)型任務(wù),帶寬型任務(wù)注重單位時(shí)間處理的數(shù)據(jù)量,延時(shí)型任務(wù)注重單位任務(wù)的處理時(shí)間??尚械姆桨钢?,也可以將任務(wù)類型劃分為OLTP和OLAP,其中,OLTP是以小的任務(wù)以及小的查詢?yōu)橹?,衡量OLTP系統(tǒng)的性能參數(shù)是單任務(wù)的響應(yīng)時(shí)間,例如在線系統(tǒng)的網(wǎng)上訂票等,OLAP是以大任務(wù)為主,主要是對歷史數(shù)據(jù)進(jìn)行多維度的統(tǒng)計(jì)分析,任務(wù)的處理時(shí)間很長,衡量OLAP系統(tǒng)的性能參數(shù)是單位時(shí)間處理數(shù)據(jù)的總量。通過對不同應(yīng)用的不同DMA任務(wù)的任務(wù)類型都已進(jìn)行了記錄,所述第二查詢單元706可通過記錄查 詢DMA任務(wù)對應(yīng)的任務(wù)類型。
第二判斷單元707,用于判斷在所述已占用通道的DMA任務(wù)中是否存在與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù);
具體實(shí)現(xiàn)中,所述第二判斷單元707根據(jù)所查詢到的所述已占用通道的DMA任務(wù)的任務(wù)類型和目標(biāo)DMA任務(wù)的任務(wù)類型,判斷在所述已占用通道的DMA任務(wù)中是否存在與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù)。若在所述已占用通道的DMA任務(wù)中存在與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù),則執(zhí)行第三傳輸單元708,若在所述已占用通道的DMA任務(wù)中是不存在與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù),則執(zhí)行第三查詢單元709。
第三傳輸單元708,用于當(dāng)在所述已占用通道的DMA任務(wù)中不存在與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù)時(shí),獲取目標(biāo)DMA任務(wù)對應(yīng)的目標(biāo)數(shù)據(jù),將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸入隊(duì)列進(jìn)行輸入,以及將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸出隊(duì)列進(jìn)行輸出。
具體實(shí)現(xiàn)中,當(dāng)所述第二判斷單元707判斷在所述已占用通道的DMA任務(wù)中不存在與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù)時(shí),第三傳輸單元708獲取目標(biāo)DMA任務(wù)對應(yīng)的目標(biāo)數(shù)據(jù),將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸入隊(duì)列進(jìn)行輸入,以及將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸出隊(duì)列進(jìn)行輸出。
第三查詢單元709,用于當(dāng)在所述已占用通道的DMA任務(wù)中存在與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù)時(shí),查詢所述與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù)的優(yōu)先級;
具體實(shí)現(xiàn)中,當(dāng)所述第二判斷單元707判斷在所述已占用通道的DMA任務(wù)中存在與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù)時(shí),所述第三查詢單元709查詢所述與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù)的優(yōu)先級,用以根據(jù)任務(wù)類型和優(yōu)先級確定DMA任務(wù)的優(yōu)先處理順序。
第三判斷單元710,用于判斷在所述與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù)中是否存在低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù);
具體實(shí)現(xiàn)中,所述第三判斷單元710判斷在所述與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù)中是否存在低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的 DMA任務(wù)。若在所述與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù)中存在低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù),則執(zhí)行第四傳輸單元711,若不存在,則執(zhí)行暫停單元712。
第四傳輸單元711,用于當(dāng)在所述與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù)中不存在低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)時(shí),獲取目標(biāo)DMA任務(wù)對應(yīng)的目標(biāo)數(shù)據(jù),將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸入隊(duì)列進(jìn)行輸入,以及將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸出隊(duì)列進(jìn)行輸出。
具體實(shí)現(xiàn)中,當(dāng)所述第三判斷單元710判斷在所述與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù)中不存在低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)時(shí),所述第四傳輸單元711獲取目標(biāo)DMA任務(wù)對應(yīng)的目標(biāo)數(shù)據(jù),將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸入隊(duì)列進(jìn)行輸入,以及將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸出隊(duì)列進(jìn)行輸出。
暫停單元712,用于當(dāng)在所述與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù)中,存在低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)時(shí),暫停所述低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)的數(shù)據(jù)傳輸;
具體實(shí)現(xiàn)中,當(dāng)在所述與所述目標(biāo)DMA任務(wù)的任務(wù)類型不相同的DMA任務(wù)中,存在低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)時(shí),所述暫停單元712暫停所述低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)的數(shù)據(jù)傳輸??尚械姆桨钢?,當(dāng)所述低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)被劃分為多個(gè)小任務(wù)時(shí),當(dāng)前時(shí)刻即使所述低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)中有一些小任務(wù)已從輸出隊(duì)列輸出,但仍有其他小任務(wù)仍未被傳輸時(shí)或者已從所述已占用通道的輸入隊(duì)列輸入時(shí),暫停所述其他小任務(wù)的處理,優(yōu)先對所述目標(biāo)DMA任務(wù)進(jìn)行數(shù)據(jù)傳輸。
第一傳輸單元713,用于獲取目標(biāo)DMA任務(wù)的目標(biāo)數(shù)據(jù),將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸入隊(duì)列進(jìn)行輸入,以及將所述目標(biāo)數(shù)據(jù)通過所述低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)對應(yīng)的已占用通道的輸出隊(duì)列進(jìn)行輸出。
具體實(shí)現(xiàn)中,在暫停所述低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)的數(shù)據(jù)傳輸之后,所述第一傳輸單元713獲取目標(biāo)DMA任務(wù)的目標(biāo)數(shù)據(jù),將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸入隊(duì)列進(jìn)行輸入,以及將所述目標(biāo)數(shù)據(jù)通過所 述低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)對應(yīng)的已占用通道的輸出隊(duì)列進(jìn)行輸出??梢岳斫獾氖?,在完成對所述目標(biāo)DMA任務(wù)的輸出后,向CPU發(fā)送輸出目標(biāo)DMA任務(wù)對應(yīng)的數(shù)據(jù)傳輸完畢的信號,以使將總線控制權(quán)還給CPU。
需要說明的是,本發(fā)明實(shí)施例中所介紹的直接內(nèi)存訪問的傳輸控制方法可以應(yīng)用于外部設(shè)備與所述直接內(nèi)存訪問的傳輸控制裝置的其中的一個(gè)DMA通道進(jìn)行連接的情況,即,若所述外部設(shè)備接收數(shù)據(jù),只能從該DMA傳輸通道的輸出隊(duì)列接收數(shù)據(jù),若所述外部設(shè)備發(fā)送數(shù)據(jù),只能從該DMA通道的輸入隊(duì)列發(fā)送數(shù)據(jù)。例如:外部設(shè)備A連接于DMA通道1以及外部設(shè)備B連接于DMA通道1的情況,外部設(shè)備A發(fā)出DMA任務(wù)1的傳輸請求,DMA任務(wù)1是將存儲器的數(shù)據(jù)傳輸至外部設(shè)備,根據(jù)DMA任務(wù)1的優(yōu)先級分配目標(biāo)通道(所述目標(biāo)通道并不限定于DMA通道1,是因?yàn)樗鰯?shù)據(jù)是從存儲器傳輸至DMA通道,因此不限定數(shù)據(jù)輸入的通道),而外部設(shè)備B對應(yīng)的DMA任務(wù)2正在DMA通道1中正在處理,并且DMA任務(wù)1的任務(wù)類型和DMA任務(wù)2的任務(wù)類型不同,DMA任務(wù)1的優(yōu)先級高于DMA任務(wù)2的優(yōu)先級,由于需要優(yōu)先處理DMA任務(wù)1和兩個(gè)任務(wù)的輸出隊(duì)列相同,因此暫停DMA任務(wù)2的數(shù)據(jù)傳輸,并獲取DMA任務(wù)1的數(shù)據(jù),將DMA任務(wù)1的數(shù)據(jù)通過所述目標(biāo)通道的輸入隊(duì)列進(jìn)行輸入,以及將所述目標(biāo)數(shù)據(jù)通過DMA通道1的輸出隊(duì)列進(jìn)行輸出。
在本發(fā)明實(shí)施例中,當(dāng)接收到傳輸目標(biāo)DMA任務(wù)的DMA傳輸請求時(shí),根據(jù)目標(biāo)DMA任務(wù)對應(yīng)的優(yōu)先級為其選擇一目標(biāo)通道,在DMA通道中存在其他DMA任務(wù)的情況下,通過查詢已占用通道的其他DMA任務(wù)的任務(wù)類型、優(yōu)先級以及目標(biāo)DMA任務(wù)的任務(wù)類型,并對已占用通道的其他DMA任務(wù)的任務(wù)類型、優(yōu)先級以及目標(biāo)DMA任務(wù)的任務(wù)類型、優(yōu)先級進(jìn)行對比,根據(jù)對比結(jié)果對DMA通道的傳輸數(shù)據(jù)進(jìn)行控制,可以實(shí)現(xiàn)根據(jù)DMA任務(wù)的優(yōu)先級、任務(wù)類型合理規(guī)劃數(shù)據(jù)傳輸,即使遇到緊急DMA任務(wù)也可以優(yōu)先處理,提高了計(jì)算機(jī)系統(tǒng)處理效率和服務(wù)質(zhì)量。
請參見圖8,為本發(fā)明實(shí)施例提供了一種直接內(nèi)存訪問的傳輸控制裝置的結(jié)構(gòu)示意圖。如圖8所示,本發(fā)明實(shí)施例的所述直接內(nèi)存訪問的傳輸控制裝置8可以包括:接收單元801、第一查詢單元802、第一判斷單元803、第二查詢單 元804、第二判斷單元805、暫停單元806和傳輸單元807。
接收單元801,用于接收DMA傳輸請求,所述DMA傳輸請求攜帶目標(biāo)DMA任務(wù)。
具體實(shí)現(xiàn)中,所述接收單元801接收DMA傳輸請求,所述DMA傳輸請求攜帶目標(biāo)DMA任務(wù),從所述DMA傳輸請求中獲取目標(biāo)DMA任務(wù)??梢岳斫獾氖?,外部設(shè)備如果想要通過總線直接向存儲器傳輸數(shù)據(jù)時(shí),外部設(shè)備先通過所述直接內(nèi)存訪問的傳輸控制裝置向CPU發(fā)送DMA傳輸請求信號,即向CPU提出接管總線控制權(quán)的請求,CPU收到請求并響應(yīng)DMA傳輸請求時(shí),會讓出總線控制權(quán),此時(shí),所述直接內(nèi)存訪問的傳輸控制裝置可對DMA傳輸請求進(jìn)行處理,獲取所述DMA傳輸請求中攜帶的目標(biāo)DMA任務(wù),用以進(jìn)行數(shù)據(jù)傳輸。
第一查詢單元802,用于查詢所述目標(biāo)DMA任務(wù)的優(yōu)先級,并根據(jù)所述目標(biāo)DMA任務(wù)的優(yōu)先級,從DMA通道中選擇與所述目標(biāo)DMA的優(yōu)先級相對應(yīng)的DMA通道作為目標(biāo)通道。
具體實(shí)現(xiàn)中,所述第一查詢單元802查詢所述目標(biāo)DMA任務(wù)的優(yōu)先級,并根據(jù)所述目標(biāo)DMA任務(wù)的優(yōu)先級,從DMA通道中選擇與所述目標(biāo)DMA的優(yōu)先級相對應(yīng)的DMA通道作為目標(biāo)通道??梢灶A(yù)先對不同應(yīng)用的不同DMA任務(wù)設(shè)定不同優(yōu)先級,可選的方案中,傳輸數(shù)據(jù)量大的DMA任務(wù)設(shè)置的優(yōu)先級較低,傳輸數(shù)據(jù)量小的DMA任務(wù)設(shè)置的優(yōu)先級較高,這樣可以及時(shí)完成傳輸數(shù)據(jù)量小的DMA任務(wù),提高計(jì)算機(jī)系統(tǒng)的處理效率。所述直接內(nèi)存訪問的傳輸控制裝置并根據(jù)所述目標(biāo)DMA任務(wù)的優(yōu)先級,從DMA通道中選擇與所述目標(biāo)DMA的優(yōu)先級相對應(yīng)的DMA通道作為目標(biāo)通道,用以通過所述目標(biāo)通道對所述目標(biāo)DMA任務(wù)進(jìn)行數(shù)據(jù)傳輸。
第一判斷單元803,用于判斷所述DMA通道中是否存在已經(jīng)被其他DMA任務(wù)占用的通道。
具體實(shí)現(xiàn)中,所述第一判斷單元803判斷所述DMA通道中是否存在已經(jīng)被其他DMA任務(wù)占用的通道。所述DMA通道包括至少一個(gè)用于數(shù)據(jù)傳輸?shù)腄MA通道,所述直接內(nèi)存訪問的傳輸控制裝置判斷除了目標(biāo)通道之外的通道中是否有其他DMA任務(wù)占用的通道。
第二查詢單元804,用于當(dāng)DMA通道中存在已經(jīng)被其他DMA任務(wù)占用的通道時(shí),查詢已占用通道的DMA任務(wù)的優(yōu)先級。
具體實(shí)現(xiàn)中,當(dāng)所述第一判斷單元803判斷所述DMA通道中存在已經(jīng)被其他DMA任務(wù)占用的通道時(shí),所述第二查詢單元804查詢已占用通道的DMA任務(wù)的優(yōu)先級,用以根據(jù)優(yōu)先級確定DMA任務(wù)的處理順序。
第二判斷單元805,用于判斷在所述已占用通道的DMA任務(wù)中是否存在低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)。
具體實(shí)現(xiàn)中,所述第二判斷單元805判斷在所述已占用通道的DMA任務(wù)中是否存在低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)。
暫停單元806,用于當(dāng)在所述已占用通道的DMA任務(wù)中存在低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)時(shí),暫停所述低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)的數(shù)據(jù)傳輸。
具體實(shí)現(xiàn)中,當(dāng)所述第二判斷單元805判斷在所述已占用通道的DMA任務(wù)中存在低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)時(shí),所述暫停單元806暫停所述低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)的數(shù)據(jù)傳輸??尚械姆桨钢校?dāng)所述低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)被劃分為多個(gè)小任務(wù)時(shí),當(dāng)前時(shí)刻即使所述低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)中有一些小任務(wù)已從輸出隊(duì)列輸出,但仍有其他小任務(wù)仍未被傳輸時(shí)或者已從所述已占用通道的輸入隊(duì)列輸入時(shí),所述暫停單元806暫停所述其他小任務(wù)的處理,優(yōu)先對所述目標(biāo)DMA任務(wù)進(jìn)行數(shù)據(jù)傳輸。
傳輸單元807,用于獲取目標(biāo)DMA任務(wù)的目標(biāo)數(shù)據(jù),將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸入隊(duì)列進(jìn)行輸入,以及將所述目標(biāo)數(shù)據(jù)通過所述低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)對應(yīng)的已占用通道的輸出隊(duì)列進(jìn)行輸出。
具體實(shí)現(xiàn)中,所述傳輸單元807獲取目標(biāo)DMA任務(wù)的目標(biāo)數(shù)據(jù),將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸入隊(duì)列進(jìn)行輸入,以及將所述目標(biāo)數(shù)據(jù)通過所述低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)對應(yīng)的已占用通道的輸出隊(duì)列進(jìn)行輸出。可以理解的是,在完成對所述目標(biāo)DMA任務(wù)的輸出后,向CPU發(fā)送輸出目標(biāo)DMA任務(wù)對應(yīng)的數(shù)據(jù)傳輸完畢的信號,以使將總線控制權(quán)還給CPU。
需要說明的是,本發(fā)明實(shí)施例中所介紹的直接內(nèi)存訪問的傳輸控制方法可以應(yīng)用于外部設(shè)備與所述直接內(nèi)存訪問的傳輸控制裝置的其中的一個(gè)DMA通道進(jìn)行連接的情況,即,若所述外部設(shè)備接收數(shù)據(jù),只能從該DMA傳輸通道的輸出隊(duì)列接收數(shù)據(jù),若所述外部設(shè)備發(fā)送數(shù)據(jù),只能從該DMA通道的輸入隊(duì)列 發(fā)送數(shù)據(jù)。例如:外部設(shè)備A連接于DMA通道1以及外部設(shè)備B連接于DMA通道1的情況,外部設(shè)備A發(fā)出DMA任務(wù)1的傳輸請求,DMA任務(wù)1是將存儲器的數(shù)據(jù)傳輸至外部設(shè)備,根據(jù)DMA任務(wù)1的優(yōu)先級分配目標(biāo)通道(所述目標(biāo)通道并不限定于DMA通道1,是因?yàn)樗鰯?shù)據(jù)是從存儲器傳輸至DMA通道,因此不限定數(shù)據(jù)輸入的通道),而外部設(shè)備B對應(yīng)的DMA任務(wù)2正在DMA通道1中正在處理,并且DMA任務(wù)1的優(yōu)先級高于DMA任務(wù)2的優(yōu)先級,由于需要優(yōu)先處理DMA任務(wù)1和兩個(gè)任務(wù)的輸出隊(duì)列相同,因此暫停DMA任務(wù)2的數(shù)據(jù)傳輸,并獲取DMA任務(wù)1的數(shù)據(jù),將DMA任務(wù)1的數(shù)據(jù)通過所述目標(biāo)通道的輸入隊(duì)列進(jìn)行輸入,以及將所述目標(biāo)數(shù)據(jù)通過DMA通道1的輸出隊(duì)列進(jìn)行輸出。
在本發(fā)明實(shí)施例中,當(dāng)接收到傳輸目標(biāo)DMA任務(wù)的DMA傳輸請求時(shí),根據(jù)目標(biāo)DMA任務(wù)對應(yīng)的優(yōu)先級為其選擇一目標(biāo)通道,在DMA通道中存在其他DMA任務(wù)的情況下,通過查詢已占用通道的其他DMA任務(wù)的優(yōu)先級,并對已占用通道的其他DMA任務(wù)的優(yōu)先級以及目標(biāo)DMA任務(wù)的優(yōu)先級進(jìn)行對比,根據(jù)對比結(jié)果對DMA通道的傳輸數(shù)據(jù)進(jìn)行控制,可以實(shí)現(xiàn)根據(jù)DMA任務(wù)的優(yōu)先級合理規(guī)劃數(shù)據(jù)傳輸,即使遇到緊急DMA任務(wù)也可以優(yōu)先處理,提高了計(jì)算機(jī)系統(tǒng)處理效率和服務(wù)質(zhì)量。
請參見圖9,為本發(fā)明實(shí)施例提供了一種直接內(nèi)存訪問的傳輸控制裝置的結(jié)構(gòu)示意圖。如圖9所示,本發(fā)明實(shí)施例的所述直接內(nèi)存訪問的傳輸控制裝置9可以包括:預(yù)存單元901、接收單元902、第一查詢單元903、第一判斷單元904、第二查詢單元905、第二判斷單元906、暫停單元907和第一傳輸單元908。
預(yù)存單元901,用于預(yù)先保存DMA任務(wù)的優(yōu)先級列表,以及DMA任務(wù)優(yōu)先級與DMA通道映射關(guān)系表。
具體實(shí)現(xiàn)中,所述預(yù)存單元901預(yù)先保存DMA任務(wù)的優(yōu)先級列表,以及DMA任務(wù)優(yōu)先級與DMA通道映射關(guān)系表。所述直接內(nèi)存訪問的傳輸控制裝置對不同DMA任務(wù)設(shè)定不同優(yōu)先級,對不同的DMA通道設(shè)定不同優(yōu)先級,并可以接收對DMA任務(wù)優(yōu)先級和DMA通道優(yōu)先級進(jìn)行更改。所述DMA通道包括至少一個(gè)用于數(shù)據(jù)傳輸?shù)耐ǖ???蛇x的方案中,所述直接內(nèi)存訪問的傳輸控制裝置對各個(gè)通道設(shè)定優(yōu)先級,DMA任務(wù)的優(yōu)先級可根據(jù)傳輸?shù)臄?shù)據(jù)量大小確定 優(yōu)先級,數(shù)據(jù)量較小的優(yōu)先級高,數(shù)據(jù)量大的優(yōu)先級高,按照數(shù)據(jù)量大小分為各個(gè)不同的優(yōu)先級,將數(shù)據(jù)量對應(yīng)的優(yōu)先級與DMA通道設(shè)定的優(yōu)先級進(jìn)行對應(yīng),并將DMA任務(wù)的優(yōu)先級列表、DMA任務(wù)優(yōu)先級與DMA通道映射關(guān)系表進(jìn)行保存。
接收單元902,用于接收DMA傳輸請求,所述DMA傳輸請求攜帶目標(biāo)DMA任務(wù)。
具體實(shí)現(xiàn)中,所述接收單元902接收DMA傳輸請求,所述DMA傳輸請求攜帶目標(biāo)DMA任務(wù),從所述DMA傳輸請求中獲取目標(biāo)DMA任務(wù)??梢岳斫獾氖?,外部設(shè)備如果想要通過總線直接向存儲器傳輸數(shù)據(jù)時(shí),外部設(shè)備先通過所述直接內(nèi)存訪問的傳輸控制裝置向CPU發(fā)送DMA傳輸請求信號,即所述直接內(nèi)存訪問的傳輸控制裝置向CPU提出接管總線控制權(quán)的請求,CPU收到請求并響應(yīng)DMA傳輸請求時(shí),會讓出總線控制權(quán),此時(shí),所述直接內(nèi)存訪問的傳輸控制裝置可對DMA傳輸請求進(jìn)行處理,獲取所述DMA傳輸請求中攜帶的目標(biāo)DMA任務(wù),用以進(jìn)行數(shù)據(jù)傳輸。
第一查詢單元903,用于查詢所述目標(biāo)DMA任務(wù)的優(yōu)先級,并根據(jù)所述目標(biāo)DMA任務(wù)的優(yōu)先級,從DMA通道中選擇與所述目標(biāo)DMA的優(yōu)先級相對應(yīng)的DMA通道作為目標(biāo)通道。
具體實(shí)現(xiàn)中,所述第一查詢單元903在所述DMA任務(wù)的優(yōu)先級列表中查詢所述目標(biāo)DMA任務(wù)的優(yōu)先級,從所述DMA任務(wù)優(yōu)先級與DMA通道映射關(guān)系表中查詢與所述目標(biāo)DMA任務(wù)的優(yōu)先級相對應(yīng)的DMA通道,將與所述目標(biāo)DMA任務(wù)的優(yōu)先級相對應(yīng)的DMA通道作為目標(biāo)通道。
第一判斷單元904,用于判斷所述DMA通道中是否存在已經(jīng)被其他DMA任務(wù)占用的通道。
具體實(shí)現(xiàn)中,所述第一判斷單元904判斷所述DMA通道中是否存在已經(jīng)被其他DMA任務(wù)占用的通道。所述DMA通道包括至少一個(gè)用于數(shù)據(jù)傳輸?shù)腄MA通道,所述第一判斷單元904判斷除了目標(biāo)通道之外的通道中是否有其他DMA任務(wù)占用的通道。
第二查詢單元905,用于當(dāng)DMA通道中存在已經(jīng)被其他DMA任務(wù)占用的通道時(shí),查詢已占用通道的DMA任務(wù)的優(yōu)先級。
具體實(shí)現(xiàn)中,當(dāng)所述第一判斷單元904判斷所述DMA通道中存在已經(jīng)被其 他DMA任務(wù)占用的通道時(shí),所述第二查詢單元905查詢已占用通道的DMA任務(wù)的優(yōu)先級,用以根據(jù)優(yōu)先級確定DMA任務(wù)的處理順序。
第二判斷單元906,用于判斷在所述已占用通道的DMA任務(wù)中是否存在低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)。
具體實(shí)現(xiàn)中,所述第二判斷單元906判斷在所述已占用通道的DMA任務(wù)中是否存在低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)。
暫停單元907,用于當(dāng)在所述已占用通道的DMA任務(wù)中存在低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)時(shí),暫停所述低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)的數(shù)據(jù)傳輸。
具體實(shí)現(xiàn)中,當(dāng)所述第二判斷單元906判斷在所述已占用通道的DMA任務(wù)中存在低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)時(shí),所述暫停單元907暫停所述低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)的數(shù)據(jù)傳輸??尚械姆桨钢校?dāng)所述低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)被劃分為多個(gè)小任務(wù)時(shí),當(dāng)前時(shí)刻即使所述低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)中有一些小任務(wù)已從輸出隊(duì)列輸出,但仍有其他小任務(wù)仍未被傳輸時(shí)或者已從所述已占用通道的輸入隊(duì)列輸入時(shí),所述暫停單元907暫停所述其他小任務(wù)的處理,優(yōu)先對所述目標(biāo)DMA任務(wù)進(jìn)行數(shù)據(jù)傳輸。
傳輸單元908,用于獲取目標(biāo)DMA任務(wù)的目標(biāo)數(shù)據(jù),將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸入隊(duì)列進(jìn)行輸入,以及將所述目標(biāo)數(shù)據(jù)通過所述低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)對應(yīng)的已占用通道的輸出隊(duì)列進(jìn)行輸出。
具體實(shí)現(xiàn)中,所述傳輸單元908獲取目標(biāo)DMA任務(wù)的目標(biāo)數(shù)據(jù),將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸入隊(duì)列進(jìn)行輸入,以及將所述目標(biāo)數(shù)據(jù)通過所述低于所述目標(biāo)DMA任務(wù)的優(yōu)先級的DMA任務(wù)對應(yīng)的已占用通道的輸出隊(duì)列進(jìn)行輸出??梢岳斫獾氖牵谕瓿蓪λ瞿繕?biāo)DMA任務(wù)的輸出后,向CPU發(fā)送輸出目標(biāo)DMA任務(wù)對應(yīng)的數(shù)據(jù)傳輸完畢的信號,以使將總線控制權(quán)還給CPU。
進(jìn)一步,一種可行的方案中,當(dāng)所述第一判斷單元904判斷DMA通道中不存在已經(jīng)被其他DMA任務(wù)占用的通道時(shí),獲取目標(biāo)DMA任務(wù)對應(yīng)的目標(biāo)數(shù)據(jù),將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸入隊(duì)列進(jìn)行輸入,以及將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸出隊(duì)列進(jìn)行輸出。另一種可行的方案中,當(dāng)所述第二判斷單元906判斷在所述已占用通道的DMA任務(wù)中不存在低于所述目標(biāo)DMA任 務(wù)的優(yōu)先級的DMA任務(wù)時(shí),獲取目標(biāo)DMA任務(wù)對應(yīng)的目標(biāo)數(shù)據(jù),將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸入隊(duì)列進(jìn)行輸入,以及將所述目標(biāo)數(shù)據(jù)通過所述目標(biāo)通道的輸出隊(duì)列進(jìn)行輸出。
需要說明的是,本發(fā)明實(shí)施例中所介紹的直接內(nèi)存訪問的傳輸控制方法可以應(yīng)用于外部設(shè)備與所述直接內(nèi)存訪問的傳輸控制裝置的其中的一個(gè)DMA通道進(jìn)行連接的情況,即,若所述外部設(shè)備接收數(shù)據(jù),只能從該DMA傳輸通道的輸出隊(duì)列接收數(shù)據(jù),若所述外部設(shè)備發(fā)送數(shù)據(jù),只能從該DMA通道的輸入隊(duì)列發(fā)送數(shù)據(jù)。例如:外部設(shè)備A連接于DMA通道1以及外部設(shè)備B連接于DMA通道1的情況,外部設(shè)備A發(fā)出DMA任務(wù)1的傳輸請求,DMA任務(wù)1是將存儲器的數(shù)據(jù)傳輸至外部設(shè)備,根據(jù)DMA任務(wù)1的優(yōu)先級分配目標(biāo)通道(所述目標(biāo)通道并不限定于DMA通道1,是因?yàn)樗鰯?shù)據(jù)是從存儲器傳輸至DMA通道,因此不限定數(shù)據(jù)輸入的通道),而外部設(shè)備B對應(yīng)的DMA任務(wù)2正在DMA通道1中正在處理,并且DMA任務(wù)1的優(yōu)先級高于DMA任務(wù)2的優(yōu)先級,由于需要優(yōu)先處理DMA任務(wù)1和兩個(gè)任務(wù)的輸出隊(duì)列相同,因此暫停DMA任務(wù)2的數(shù)據(jù)傳輸,并獲取DMA任務(wù)1的數(shù)據(jù),將DMA任務(wù)1的數(shù)據(jù)通過所述目標(biāo)通道的輸入隊(duì)列進(jìn)行輸入,以及將所述目標(biāo)數(shù)據(jù)通過DMA通道1的輸出隊(duì)列進(jìn)行輸出。
在本發(fā)明實(shí)施例中,當(dāng)接收到傳輸目標(biāo)DMA任務(wù)的DMA傳輸請求時(shí),根據(jù)目標(biāo)DMA任務(wù)對應(yīng)的優(yōu)先級為其選擇一目標(biāo)通道,在DMA通道中存在其他DMA任務(wù)的情況下,通過查詢已占用通道的其他DMA任務(wù)的優(yōu)先級,并對已占用通道的其他DMA任務(wù)的優(yōu)先級以及目標(biāo)DMA任務(wù)的優(yōu)先級進(jìn)行對比,根據(jù)對比結(jié)果對DMA通道的傳輸數(shù)據(jù)進(jìn)行控制,可以實(shí)現(xiàn)根據(jù)DMA任務(wù)的優(yōu)先級合理規(guī)劃數(shù)據(jù)傳輸,即使遇到緊急DMA任務(wù)也可以優(yōu)先處理,提高了計(jì)算機(jī)系統(tǒng)處理效率和服務(wù)質(zhì)量。
本發(fā)明實(shí)施例還提供一種計(jì)算機(jī)存儲介質(zhì),其中,該計(jì)算機(jī)存儲介質(zhì)可存儲有程序,該程序執(zhí)行時(shí)包括上述方法實(shí)施例中記載的任意一種直接內(nèi)存訪問的傳輸控制方法的部分或全部步驟。
在上述實(shí)施例中,對各個(gè)實(shí)施例的描述都各有側(cè)重,某個(gè)實(shí)施例中沒有詳述的部分,可以參見其他實(shí)施例的相關(guān)描述。
需要說明的是,對于前述的各方法實(shí)施例,為了簡單描述,故將其都表述 為一系列的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動(dòng)作順序的限制,因?yàn)橐罁?jù)本發(fā)明,某些步驟可能可以采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說明書中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作和模塊并不一定是本發(fā)明所必須的。
在本申請所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的裝置,可通過其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如上述單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性或其它的形式。
上述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目的。
另外,在本發(fā)明各實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。
上述集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲在一個(gè)計(jì)算機(jī)可讀取存儲介質(zhì)中。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲在一個(gè)存儲介質(zhì)中,包括若干指令用以使得一臺計(jì)算機(jī)設(shè)備(可以為個(gè)人計(jì)算機(jī)、服務(wù)器或者網(wǎng)絡(luò)設(shè)備等,具體可以是計(jì)算機(jī)設(shè)備中的處理器)執(zhí)行本發(fā)明各個(gè)實(shí)施例上述方法的全部或部分步驟。其中,而前述的存儲介質(zhì)可包括:U盤、移動(dòng)硬盤、磁碟、光盤、只讀存儲器(英文:Read-Only Memory,縮寫:ROM)或者隨機(jī)存取存儲器(英文:Random Access Memory,縮寫:RAM)等各種可以存儲程序代碼的介質(zhì)。
以上所述,以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡 管參照前述實(shí)施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的精神和范圍。