亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

大規(guī)模數(shù)據(jù)傳輸方法及系統(tǒng)與流程

文檔序號(hào):12786298閱讀:377來源:國知局
大規(guī)模數(shù)據(jù)傳輸方法及系統(tǒng)與流程

本發(fā)明屬于通信技術(shù)領(lǐng)域,尤其涉及大規(guī)模數(shù)據(jù)傳輸方法及系統(tǒng)。



背景技術(shù):

現(xiàn)有的直接內(nèi)存存取(direct memory access,DMA)實(shí)現(xiàn)方式都是利用直接內(nèi)存存取控制器先將待處理數(shù)據(jù)從主機(jī)內(nèi)存中寫入加速卡,等待加速卡完成數(shù)據(jù)運(yùn)算后,直接內(nèi)存存取控制器再從加速卡中讀取運(yùn)算后的數(shù)據(jù)并傳輸至主機(jī)內(nèi)存?,F(xiàn)有的直接內(nèi)存存取數(shù)據(jù)傳輸技術(shù)在數(shù)據(jù)傳輸時(shí),當(dāng)直接內(nèi)存存取控制器在進(jìn)行寫操作時(shí),讀操作的傳輸通道處于空閑狀態(tài);當(dāng)直接內(nèi)存存取控制器在進(jìn)行讀操作時(shí),寫操作的傳輸通道處于空閑狀態(tài),尤其是在數(shù)據(jù)規(guī)模比較大的時(shí)候,兩者不能同時(shí)進(jìn)行,使得數(shù)據(jù)的寫入和讀取耗時(shí)極大,傳輸效率低。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明實(shí)施例提供一種大規(guī)模數(shù)據(jù)傳輸方法及系統(tǒng),旨在解決現(xiàn)有的直接內(nèi)存存取數(shù)據(jù)傳輸技術(shù)在數(shù)據(jù)傳輸時(shí),當(dāng)直接內(nèi)存存取控制器在進(jìn)行寫操作時(shí),讀操作的傳輸通道處于空閑狀態(tài);當(dāng)直接內(nèi)存存取控制器在進(jìn)行讀操作時(shí),寫操作的傳輸通道處于空閑狀態(tài),尤其是在數(shù)據(jù)規(guī)模比較大的時(shí)候,兩者不能同時(shí)進(jìn)行,使得數(shù)據(jù)的寫入和讀取耗時(shí)極大,傳輸效率低。

第一方面,本發(fā)明實(shí)施例提供了一種大規(guī)模數(shù)據(jù)傳輸方法,所述大規(guī)模數(shù)據(jù)傳輸方法包括:

在數(shù)據(jù)傳輸開始時(shí),由應(yīng)用程序調(diào)用驅(qū)動(dòng)程序向硬件加速卡發(fā)起運(yùn)算請(qǐng)求,觸發(fā)所述驅(qū)動(dòng)程序向直接內(nèi)存存取控制器發(fā)起寫操作,所述寫操作包括第一用戶態(tài)流程和第一內(nèi)核態(tài)流程;

當(dāng)所述第一用戶態(tài)流程執(zhí)行完成后,在開始執(zhí)行所述第一內(nèi)核態(tài)流程的同時(shí)所述應(yīng)用程序觸發(fā)所述驅(qū)動(dòng)程序向所述直接內(nèi)存存取控制器發(fā)起讀操作,使所述寫操作的第一內(nèi)核態(tài)流程和所述讀操作的第二用戶態(tài)流程同時(shí)進(jìn)行,其中,所述讀操作包括第二用戶態(tài)流程和所述第二內(nèi)核態(tài)流程;

當(dāng)所述第二用戶態(tài)流程執(zhí)行完成后,在開始執(zhí)行所述第二內(nèi)核態(tài)流程時(shí)所述應(yīng)用程序觸發(fā)所述驅(qū)動(dòng)程序再次向所述直接內(nèi)存存取控制器發(fā)起寫操作,使所述讀操作的第二內(nèi)核態(tài)流程與所述驅(qū)動(dòng)程序再次向所述直接內(nèi)存存取控制器發(fā)起的寫操作同時(shí)進(jìn)行;

循環(huán)執(zhí)行上述流程,直至數(shù)據(jù)傳輸完成。

第二方面,本發(fā)明實(shí)施例提供了一種大規(guī)模數(shù)據(jù)傳輸系統(tǒng),所述大規(guī)模數(shù)據(jù)傳輸系統(tǒng)包括:

數(shù)據(jù)傳輸啟動(dòng)模塊,用于在數(shù)據(jù)傳輸開始時(shí),由應(yīng)用程序調(diào)用驅(qū)動(dòng)程序向硬件加速卡發(fā)起運(yùn)算請(qǐng)求,觸發(fā)所述驅(qū)動(dòng)程序向直接內(nèi)存存取控制器發(fā)起寫操作,所述寫操作包括第一用戶態(tài)流程和第一內(nèi)核態(tài)流程;

讀操作觸發(fā)模塊,用于當(dāng)所述第一用戶態(tài)流程執(zhí)行完成后,在開始執(zhí)行所述第一內(nèi)核態(tài)流程的同時(shí)所述應(yīng)用程序觸發(fā)所述驅(qū)動(dòng)程序向所述直接內(nèi)存存取控制器發(fā)起讀操作,使所述寫操作的第一內(nèi)核態(tài)流程和所述讀操作的第二用戶態(tài)流程同時(shí)進(jìn)行,其中,所述讀操作包括第二用戶態(tài)流程和所述第二內(nèi)核態(tài)流程;

寫操作觸發(fā)模塊,用于當(dāng)所述第二用戶態(tài)流程執(zhí)行完成后,在開始執(zhí)行所述第二內(nèi)核態(tài)流程時(shí)所述應(yīng)用程序觸發(fā)所述驅(qū)動(dòng)程序再次向所述直接內(nèi)存存取控制器發(fā)起寫操作,使所述讀操作的第二內(nèi)核態(tài)流程與所述驅(qū)動(dòng)程序再次向所述直接內(nèi)存存取控制器發(fā)起的寫操作同時(shí)進(jìn)行;

循環(huán)控制模塊,用于控制所述寫操作觸發(fā)模塊和所述讀操作觸發(fā)模塊循環(huán)執(zhí)行上述流程,直至數(shù)據(jù)傳輸完成。

本發(fā)明實(shí)施例與現(xiàn)有技術(shù)相比存在的有益效果是:本發(fā)明實(shí)施例通過在數(shù)據(jù)傳輸開始時(shí),由應(yīng)用程序調(diào)用驅(qū)動(dòng)程序向硬件加速卡發(fā)起運(yùn)算請(qǐng)求,觸發(fā)驅(qū)動(dòng)程序向直接內(nèi)存存取控制器發(fā)起寫操作,寫操作包括第一用戶態(tài)流程和第一內(nèi)核態(tài)流程;當(dāng)?shù)谝挥脩魬B(tài)流程執(zhí)行完成后,在開始執(zhí)行第一內(nèi)核態(tài)流程的同時(shí)應(yīng)用程序觸發(fā)驅(qū)動(dòng)程序向直接內(nèi)存存取控制器發(fā)起讀操作,使寫操作的第一內(nèi)核態(tài)流程和讀操作的第二用戶態(tài)流程同時(shí)進(jìn)行,其中,讀操作包括第二用戶態(tài)流程和第二內(nèi)核態(tài)流程;當(dāng)?shù)诙脩魬B(tài)流程執(zhí)行完成后,在開始執(zhí)行第二內(nèi)核態(tài)流程時(shí)應(yīng)用程序觸發(fā)驅(qū)動(dòng)程序再次向直接內(nèi)存存取控制器發(fā)起寫操作,使讀操作的第二內(nèi)核態(tài)流程與驅(qū)動(dòng)程序再次向直接內(nèi)存存取控制器發(fā)起的寫操作同時(shí)進(jìn)行;循環(huán)執(zhí)行上述流程,直至數(shù)據(jù)傳輸完成,從而使得讀操作和寫操作可以同時(shí)進(jìn)行,尤其是在數(shù)據(jù)規(guī)模比較大的時(shí)候,大大提高了直接內(nèi)存存取傳輸效率。

附圖說明

圖1為本發(fā)明實(shí)施例提供的一種大規(guī)模數(shù)據(jù)傳輸方法的流程示意圖;

圖2為圖1所示實(shí)施例中的步驟S102的細(xì)化步驟流程示意圖;

圖3為圖1所示實(shí)施例中的步驟S103的細(xì)化步驟流程示意圖;

圖4為本發(fā)明實(shí)施例提供的一種大規(guī)模數(shù)據(jù)傳輸系統(tǒng)的結(jié)構(gòu)示意圖;

圖5為圖4所示實(shí)施例中的讀操作觸發(fā)模塊402的細(xì)化結(jié)構(gòu)示意圖;

圖6為圖4所示實(shí)施例中的寫操作觸發(fā)模塊403的細(xì)化結(jié)構(gòu)示意圖。

具體實(shí)施方式

以下描述中,為了說明而不是為了限定,提出了諸如特定系統(tǒng)結(jié)構(gòu)、接口、技術(shù)之類的具體細(xì)節(jié),以便透徹理解本發(fā)明實(shí)施例。然而,本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)清楚,在沒有這些具體細(xì)節(jié)的其它實(shí)施例中也可以實(shí)現(xiàn)本發(fā)明。在其它情況中,省略對(duì)眾所周知的系統(tǒng)、裝置、電路以及方法的詳細(xì)說明,以免不必要的細(xì)節(jié)妨礙本發(fā)明的描述。

為了說明本發(fā)明所述的技術(shù)方案,下面通過具體實(shí)施例來進(jìn)行說明。

請(qǐng)參閱圖1,圖1為本發(fā)明實(shí)施例提供的一種大規(guī)模數(shù)據(jù)傳輸方法的流程示意圖。本實(shí)施例的執(zhí)行主體為主機(jī),主機(jī)是指計(jì)算機(jī)除去輸入輸出設(shè)備以外的主要機(jī)體部分,也是用于放置主板及其他主要部件的控制箱體。通常包括中央處理器(Central Processing Unit,CPU)、內(nèi)存、硬盤、光驅(qū)、電源以及其他輸入輸出控制器和接口。本實(shí)施例中的主機(jī)中的卡槽中放置了硬件加速卡,例如PCIE硬件加速卡,PCIE硬件加速卡是相當(dāng)于CPU的一個(gè)協(xié)處理器,該P(yáng)CIE硬件加速卡常用的核心邏輯器件為現(xiàn)場可編程門陣(Field Programmable Gate Array,F(xiàn)PGA)。當(dāng)主機(jī)打開的時(shí)候,就會(huì)將硬件加速卡和直接內(nèi)存存取控制器中的驅(qū)動(dòng)程序加載到主機(jī)中。本實(shí)施例提供的一種大規(guī)模數(shù)據(jù)傳輸方法包括以下步驟:

步驟S101、在數(shù)據(jù)傳輸開始時(shí),由應(yīng)用程序調(diào)用驅(qū)動(dòng)程序向硬件加速卡發(fā)起運(yùn)算請(qǐng)求,觸發(fā)驅(qū)動(dòng)程序向直接內(nèi)存存取控制器發(fā)起寫操作,寫操作包括第一用戶態(tài)流程和第一內(nèi)核態(tài)流程。

在本發(fā)明實(shí)施例中,若應(yīng)用程序調(diào)用驅(qū)動(dòng)程序,需要在驅(qū)動(dòng)程序中預(yù)留出供外界訪問的接口,供外界訪問的接口一般包括read,write,open,ioctl等接口。例如,fd=open(設(shè)備,參數(shù));或者fd=ioctl(設(shè)備,參數(shù))。這樣就會(huì)調(diào)用到這個(gè)設(shè)備驅(qū)動(dòng)中的open或者ioctl函數(shù)。

其中,直接內(nèi)存存取控制器是一種在系統(tǒng)內(nèi)部轉(zhuǎn)移數(shù)據(jù)的獨(dú)特外設(shè),可以將其視為一種能夠通過一組專用總線將內(nèi)部和外部存儲(chǔ)器與每個(gè)具有直接內(nèi)存存取能力的外設(shè)連接起來的控制器。而直接內(nèi)存存取是一種不經(jīng)過CPU而直接從內(nèi)存存取數(shù)據(jù)的數(shù)據(jù)交換模式。PIO模式下硬盤和內(nèi)存之間的數(shù)據(jù)傳輸是由CPU來控制的,而在直接內(nèi)存存取模式下,CPU只須向直接內(nèi)存存取控制器下達(dá)指令,讓直接內(nèi)存存取控制器來處理數(shù)的傳送,數(shù)據(jù)傳送完畢再把信息反饋給CPU,這樣就很大程度上減輕了CPU資源占有率。

在本發(fā)明實(shí)施例中,在數(shù)據(jù)傳輸開始時(shí),由應(yīng)用程序調(diào)用驅(qū)動(dòng)程序向硬件加速卡發(fā)起運(yùn)算請(qǐng)求,使得驅(qū)動(dòng)程序向直接內(nèi)存存取控制器發(fā)起寫操作。

其中,寫操作包括第一用戶態(tài)流程和第一內(nèi)核態(tài)流程。

其中,第一用戶態(tài)流程具體包括:

應(yīng)用程序復(fù)制驅(qū)動(dòng)程序的接口信息,并將驅(qū)動(dòng)程序的接口信息發(fā)送至直接內(nèi)存存取控制器。

第一內(nèi)核態(tài)流程具體包括:

1)驅(qū)動(dòng)程序創(chuàng)建第一直接內(nèi)存存取鏈表,并將第一直接內(nèi)存存取鏈表發(fā)送至直接內(nèi)存存取控制器。

其中,上述第一直接內(nèi)存存取鏈表包括第一數(shù)據(jù)的數(shù)據(jù)長度、第一數(shù)據(jù)傳送起始地址、第一數(shù)據(jù)傳送目的地址及寫操作指令。

2)直接內(nèi)存存取控制器根據(jù)驅(qū)動(dòng)程序的接口信息、第一直接內(nèi)存存取鏈表將第一數(shù)據(jù)從主機(jī)內(nèi)存中傳送至硬件加速卡中。

3)硬件加速卡對(duì)待處理數(shù)據(jù)進(jìn)行數(shù)據(jù)處理。

步驟S102、當(dāng)?shù)谝挥脩魬B(tài)流程執(zhí)行完成后,在開始執(zhí)行第一內(nèi)核態(tài)流程的同時(shí)應(yīng)用程序觸發(fā)驅(qū)動(dòng)程序向直接內(nèi)存存取控制器發(fā)起讀操作,使寫操作的第一內(nèi)核態(tài)流程和讀操作的第二用戶態(tài)流程同時(shí)進(jìn)行,其中,讀操作包括第二用戶態(tài)流程和第二內(nèi)核態(tài)流程。

其中,讀操作包括第二用戶態(tài)流程和第二內(nèi)核態(tài)流程。

其中,第二用戶態(tài)流程具體包括:

應(yīng)用程序復(fù)制驅(qū)動(dòng)程序的接口信息,并將驅(qū)動(dòng)程序的接口信息發(fā)送至直接內(nèi)存存取控制器。

第二內(nèi)核態(tài)流程具體包括:

1)驅(qū)動(dòng)程序創(chuàng)建第二直接內(nèi)存存取鏈表,并將第二直接內(nèi)存存取鏈表發(fā)送至直接內(nèi)存存取控制器。

其中,上述第二直接內(nèi)存存取鏈表包括第二數(shù)據(jù)的數(shù)據(jù)長度、第二數(shù)據(jù)傳送起始地址、第二數(shù)據(jù)傳送目的地址及讀操作指令。

2)直接內(nèi)存存取控制器根據(jù)驅(qū)動(dòng)程序的接口信息、第二直接內(nèi)存存取鏈表將第二數(shù)據(jù)從硬件加速卡中傳送至主機(jī)內(nèi)存中。

進(jìn)一步地,圖2示出了步驟S102中當(dāng)?shù)谝挥脩魬B(tài)流程執(zhí)行完成后,在開始執(zhí)行第一內(nèi)核態(tài)流程的同時(shí)應(yīng)用程序觸發(fā)驅(qū)動(dòng)程序向直接內(nèi)存存取控制器發(fā)起讀操作的具體實(shí)現(xiàn)流程,詳述如下:

步驟S201、當(dāng)應(yīng)用程序復(fù)制驅(qū)動(dòng)程序的接口信息并將驅(qū)動(dòng)程序的接口信息發(fā)送至直接內(nèi)存存取控制器后,產(chǎn)生TnOK信號(hào)。

步驟S202、在開始執(zhí)行第一內(nèi)核態(tài)流程的同時(shí),應(yīng)用程序根據(jù)檢測到的TnOK信號(hào)觸發(fā)驅(qū)動(dòng)程序向直接內(nèi)存存取控制器發(fā)起讀操作。

在本發(fā)明實(shí)施例中,通過當(dāng)?shù)谝挥脩魬B(tài)流程執(zhí)行完成后,在開始執(zhí)行第一內(nèi)核態(tài)流程的同時(shí)應(yīng)用程序觸發(fā)驅(qū)動(dòng)程序向直接內(nèi)存存取控制器發(fā)起讀操作,使寫操作的第一內(nèi)核態(tài)流程和讀操作的第二用戶態(tài)流程同時(shí)進(jìn)行,可以在將數(shù)據(jù)寫進(jìn)PCIE加速卡的同時(shí),為直接內(nèi)存存取控制器進(jìn)行數(shù)據(jù)讀出做前期的準(zhǔn)備(即為應(yīng)用程序復(fù)制驅(qū)動(dòng)程序的接口信息,并將驅(qū)動(dòng)程序的接口信息發(fā)送至直接內(nèi)存存取控制器),從而省去每一次執(zhí)行讀操作時(shí)的用戶態(tài)流程的時(shí)間,節(jié)約時(shí)間。

步驟S103、當(dāng)?shù)诙脩魬B(tài)流程執(zhí)行完成后,在開始執(zhí)行第二內(nèi)核態(tài)流程時(shí)應(yīng)用程序觸發(fā)驅(qū)動(dòng)程序再次向直接內(nèi)存存取控制器發(fā)起寫操作,使讀操作的第二內(nèi)核態(tài)流程與驅(qū)動(dòng)程序再次向直接內(nèi)存存取控制器發(fā)起的寫操作同時(shí)進(jìn)行。

在本發(fā)明實(shí)施例中,當(dāng)應(yīng)用程序復(fù)制驅(qū)動(dòng)程序的接口信息并將驅(qū)動(dòng)程序的接口信息發(fā)送至直接內(nèi)存存取控制器后,在開始執(zhí)行第二內(nèi)核態(tài)流程的同時(shí)應(yīng)用程序觸發(fā)驅(qū)動(dòng)程序,使得驅(qū)動(dòng)程序再次向直接內(nèi)存存取控制器發(fā)起寫操作。

進(jìn)一步地,圖3示出了步驟S103中當(dāng)?shù)诙脩魬B(tài)流程執(zhí)行完成后,在開始執(zhí)行第二內(nèi)核態(tài)流程時(shí)應(yīng)用程序觸發(fā)驅(qū)動(dòng)程序再次向直接內(nèi)存存取控制器發(fā)起寫操作的具體實(shí)現(xiàn)流程,詳述如下:

步驟S301、當(dāng)應(yīng)用程序復(fù)制驅(qū)動(dòng)程序的接口信息并將驅(qū)動(dòng)程序的接口信息發(fā)送至直接內(nèi)存存取控制器后,產(chǎn)生RnOK信號(hào)。

步驟S302、在開始執(zhí)行第二內(nèi)核態(tài)流程的同時(shí),應(yīng)用程序根據(jù)檢測到的RnOK信號(hào)觸發(fā)驅(qū)動(dòng)程序,使得驅(qū)動(dòng)程序再次向直接內(nèi)存存取控制器發(fā)起寫操作。

在完成步驟S103后,循環(huán)執(zhí)行步驟S101~S103,直至數(shù)據(jù)傳輸完成。

以上可以看出,本發(fā)明實(shí)施例提供的一種大規(guī)模數(shù)據(jù)傳輸方法通過在數(shù)據(jù)傳輸開始時(shí),由應(yīng)用程序調(diào)用驅(qū)動(dòng)程序向硬件加速卡發(fā)起運(yùn)算請(qǐng)求,觸發(fā)驅(qū)動(dòng)程序向直接內(nèi)存存取控制器發(fā)起寫操作,寫操作包括第一用戶態(tài)流程和第一內(nèi)核態(tài)流程;當(dāng)?shù)谝挥脩魬B(tài)流程執(zhí)行完成后,在開始執(zhí)行第一內(nèi)核態(tài)流程的同時(shí)應(yīng)用程序觸發(fā)驅(qū)動(dòng)程序向直接內(nèi)存存取控制器發(fā)起讀操作,使寫操作的第一內(nèi)核態(tài)流程和讀操作的第二用戶態(tài)流程同時(shí)進(jìn)行,其中,讀操作包括第二用戶態(tài)流程和第二內(nèi)核態(tài)流程;當(dāng)?shù)诙脩魬B(tài)流程執(zhí)行完成后,在開始執(zhí)行第二內(nèi)核態(tài)流程時(shí)應(yīng)用程序觸發(fā)驅(qū)動(dòng)程序再次向直接內(nèi)存存取控制器發(fā)起寫操作,使讀操作的第二內(nèi)核態(tài)流程與驅(qū)動(dòng)程序再次向直接內(nèi)存存取控制器發(fā)起的寫操作同時(shí)進(jìn)行;循環(huán)執(zhí)行上述流程,直至數(shù)據(jù)傳輸完成,通過在直接內(nèi)存存取數(shù)據(jù)傳輸時(shí),讀操作和寫操作可以同時(shí)進(jìn)行,尤其是在數(shù)據(jù)規(guī)模比較大的時(shí)候,可以提高直接內(nèi)存存取傳輸效率。

請(qǐng)參閱圖4,圖4為本發(fā)明實(shí)施例提供的一種大規(guī)模數(shù)據(jù)傳輸系統(tǒng)的結(jié)構(gòu)示意圖。本實(shí)施例的大規(guī)模數(shù)據(jù)傳輸系統(tǒng)為主機(jī),主機(jī)是指計(jì)算機(jī)除去輸入輸出設(shè)備以外的主要機(jī)體部分,也是用于放置主板及其他主要部件的控制箱體。通常包括中央處理器(Central Processing Unit,CPU)、內(nèi)存、硬盤、光驅(qū)、電源、以及其他輸入輸出控制器和接口。本實(shí)施例中的主機(jī)中的卡槽中放置了硬件加速卡,例如PCIE硬件加速卡,PCIE硬件加速卡是相當(dāng)于CPU的一個(gè)協(xié)處理器,該P(yáng)CIE硬件加速卡常用的核心邏輯器件為現(xiàn)場可編程門陣(Field-Programmable Gate Array,F(xiàn)PGA)。當(dāng)主機(jī)打開的時(shí)候,就會(huì)將硬件加速卡和直接內(nèi)存存取控制器中的驅(qū)動(dòng)程序加載到主機(jī)中。本實(shí)施例的大規(guī)模數(shù)據(jù)傳輸系統(tǒng)包括的各模塊用于執(zhí)行圖1對(duì)應(yīng)的實(shí)施例中的各步驟,具體請(qǐng)參閱圖1以及圖1對(duì)應(yīng)的實(shí)施例中的相關(guān)描述,此處不贅述。本實(shí)施例的大規(guī)模數(shù)據(jù)傳輸系統(tǒng)包括:數(shù)據(jù)傳輸啟動(dòng)模塊401、讀操作觸發(fā)模塊402、寫操作觸發(fā)模塊403、循環(huán)控制模塊404。具體地:

數(shù)據(jù)傳輸啟動(dòng)模塊401,用于在數(shù)據(jù)傳輸開始時(shí),由應(yīng)用程序調(diào)用驅(qū)動(dòng)程序向硬件加速卡發(fā)起運(yùn)算請(qǐng)求,觸發(fā)驅(qū)動(dòng)程序向直接內(nèi)存存取控制器發(fā)起寫操作,寫操作包括第一用戶態(tài)流程和第一內(nèi)核態(tài)流程。

其中,寫操作包括第一用戶態(tài)流程和第一內(nèi)核態(tài)流程。

其中,第一用戶態(tài)流程具體包括:

應(yīng)用程序復(fù)制驅(qū)動(dòng)程序的接口信息,并將驅(qū)動(dòng)程序的接口信息發(fā)送至直接內(nèi)存存取控制器。

第一內(nèi)核態(tài)流程具體包括:

1)驅(qū)動(dòng)程序創(chuàng)建第一直接內(nèi)存存取鏈表,并將第一直接內(nèi)存存取鏈表發(fā)送至直接內(nèi)存存取控制器。

其中,上述第一直接內(nèi)存存取鏈表包括第一數(shù)據(jù)的數(shù)據(jù)長度、第一數(shù)據(jù)傳送起始地址、第一數(shù)據(jù)傳送目的地址及寫操作指令。

2)直接內(nèi)存存取控制器根據(jù)驅(qū)動(dòng)程序的接口信息、第一直接內(nèi)存存取鏈表將第一數(shù)據(jù)從主機(jī)內(nèi)存中傳送至硬件加速卡中。

3)硬件加速卡對(duì)待處理數(shù)據(jù)進(jìn)行數(shù)據(jù)處理。

讀操作觸發(fā)模塊402,用于當(dāng)?shù)谝挥脩魬B(tài)流程執(zhí)行完成后,在開始執(zhí)行第一內(nèi)核態(tài)流程的同時(shí)應(yīng)用程序觸發(fā)驅(qū)動(dòng)程序向直接內(nèi)存存取控制器發(fā)起讀操作,使寫操作的第一內(nèi)核態(tài)流程和讀操作的第二用戶態(tài)流程同時(shí)進(jìn)行,其中,讀操作包括第二用戶態(tài)流程和第二內(nèi)核態(tài)流程。

其中,讀操作包括第二用戶態(tài)流程和第二內(nèi)核態(tài)流程。

其中,第二用戶態(tài)流程具體包括:

應(yīng)用程序復(fù)制驅(qū)動(dòng)程序的接口信息,并將驅(qū)動(dòng)程序的接口信息發(fā)送至直接內(nèi)存存取控制器。

第二內(nèi)核態(tài)流程具體包括:

1)驅(qū)動(dòng)程序創(chuàng)建第二直接內(nèi)存存取鏈表,并將第二直接內(nèi)存存取鏈表發(fā)送至直接內(nèi)存存取控制器。

其中,上述第二直接內(nèi)存存取鏈表包括第二數(shù)據(jù)的數(shù)據(jù)長度、第二數(shù)據(jù)傳送起始地址、第二數(shù)據(jù)傳送目的地址及讀操作指令。

2)直接內(nèi)存存取控制器根據(jù)驅(qū)動(dòng)程序的接口信息、第二直接內(nèi)存存取鏈表將第二數(shù)據(jù)從硬件加速卡中傳送至主機(jī)內(nèi)存中。

進(jìn)一步地,圖4示出了讀操作觸發(fā)模塊402的細(xì)化結(jié)構(gòu)示意圖,讀操作觸發(fā)模塊402包括的各單元用于執(zhí)行圖2對(duì)應(yīng)的實(shí)施例中的各步驟,具體請(qǐng)參閱圖2以及圖2對(duì)應(yīng)的實(shí)施例中的相關(guān)描述,此處不贅述。本實(shí)施例的讀操作觸發(fā)模塊402包括第一產(chǎn)生單元501、第一觸發(fā)單元502。具體地:

第一產(chǎn)生單元501,用于當(dāng)應(yīng)用程序復(fù)制驅(qū)動(dòng)程序的接口信息并將驅(qū)動(dòng)程序的接口信息發(fā)送至直接內(nèi)存存取控制器后,產(chǎn)生TnOK信號(hào)。

第一觸發(fā)單元502,用于在開始執(zhí)行第一內(nèi)核態(tài)流程的同時(shí),應(yīng)用程序根據(jù)檢測到的TnOK信號(hào)觸發(fā)驅(qū)動(dòng)程序向直接內(nèi)存存取控制器發(fā)起讀操作。

在本發(fā)明實(shí)施例中,通過當(dāng)?shù)谝挥脩魬B(tài)流程執(zhí)行完成后,在開始執(zhí)行第一內(nèi)核態(tài)流程的同時(shí)應(yīng)用程序觸發(fā)驅(qū)動(dòng)程序向直接內(nèi)存存取控制器發(fā)起讀操作,使寫操作的第一內(nèi)核態(tài)流程和讀操作的第二用戶態(tài)流程同時(shí)進(jìn)行,可以在將數(shù)據(jù)寫進(jìn)PCIE加速卡的同時(shí),為直接內(nèi)存存取控制器進(jìn)行數(shù)據(jù)讀出做前期的準(zhǔn)備(即為應(yīng)用程序復(fù)制驅(qū)動(dòng)程序的接口信息,并將驅(qū)動(dòng)程序的接口信息發(fā)送至直接內(nèi)存存取控制器),從而省去每一次執(zhí)行讀操作時(shí)的用戶態(tài)流程的時(shí)間,節(jié)約時(shí)間。

寫操作觸發(fā)模塊403,用于當(dāng)?shù)诙脩魬B(tài)流程執(zhí)行完成后,在開始執(zhí)行第二內(nèi)核態(tài)流程時(shí)應(yīng)用程序觸發(fā)驅(qū)動(dòng)程序再次向直接內(nèi)存存取控制器發(fā)起寫操作,使讀操作的第二內(nèi)核態(tài)流程與驅(qū)動(dòng)程序再次向直接內(nèi)存存取控制器發(fā)起的寫操作同時(shí)進(jìn)行。

在本發(fā)明實(shí)施例中,當(dāng)應(yīng)用程序復(fù)制驅(qū)動(dòng)程序的接口信息并將驅(qū)動(dòng)程序的接口信息發(fā)送至直接內(nèi)存存取控制器后,在開始執(zhí)行第二內(nèi)核態(tài)流程的同時(shí)應(yīng)用程序觸發(fā)驅(qū)動(dòng)程序,使得驅(qū)動(dòng)程序再次向直接內(nèi)存存取控制器發(fā)起寫操作。

進(jìn)一步地,圖6示出了寫操作觸發(fā)模塊403的細(xì)化結(jié)構(gòu)示意圖,寫操作觸發(fā)模塊403包括的各單元用于執(zhí)行圖3對(duì)應(yīng)的實(shí)施例中的各步驟,具體請(qǐng)參閱圖3以及圖3對(duì)應(yīng)的實(shí)施例中的相關(guān)描述,此處不贅述。本實(shí)施例的寫操作觸發(fā)模塊403包括第二產(chǎn)生單元601、第二觸發(fā)單元602。具體地:

第二產(chǎn)生單元601,用于當(dāng)應(yīng)用程序復(fù)制驅(qū)動(dòng)程序的接口信息并將驅(qū)動(dòng)程序的接口信息發(fā)送至直接內(nèi)存存取控制器后,產(chǎn)生RnOK信號(hào)。

第二觸發(fā)單元602,用于在開始執(zhí)行第二內(nèi)核態(tài)流程的同時(shí),應(yīng)用程序根據(jù)檢測到的RnOK信號(hào)觸發(fā)驅(qū)動(dòng)程序,使得驅(qū)動(dòng)程序再次向直接內(nèi)存存取控制器發(fā)起寫操作。

循環(huán)控制模塊404,用于控制寫操作觸發(fā)模塊和讀操作觸發(fā)模塊循環(huán)執(zhí)行上述流程,直至數(shù)據(jù)傳輸完成。

以上可以看出,本發(fā)明實(shí)施例提供的一種大規(guī)模數(shù)據(jù)傳輸系統(tǒng)通過在數(shù)據(jù)傳輸開始時(shí),由應(yīng)用程序調(diào)用驅(qū)動(dòng)程序向硬件加速卡發(fā)起運(yùn)算請(qǐng)求,觸發(fā)驅(qū)動(dòng)程序向直接內(nèi)存存取控制器發(fā)起寫操作,寫操作包括第一用戶態(tài)流程和第一內(nèi)核態(tài)流程;當(dāng)?shù)谝挥脩魬B(tài)流程執(zhí)行完成后,在開始執(zhí)行第一內(nèi)核態(tài)流程的同時(shí)應(yīng)用程序觸發(fā)驅(qū)動(dòng)程序向直接內(nèi)存存取控制器發(fā)起讀操作,使寫操作的第一內(nèi)核態(tài)流程和讀操作的第二用戶態(tài)流程同時(shí)進(jìn)行,其中,讀操作包括第二用戶態(tài)流程和第二內(nèi)核態(tài)流程;當(dāng)?shù)诙脩魬B(tài)流程執(zhí)行完成后,在開始執(zhí)行第二內(nèi)核態(tài)流程時(shí)應(yīng)用程序觸發(fā)驅(qū)動(dòng)程序再次向直接內(nèi)存存取控制器發(fā)起寫操作,使讀操作的第二內(nèi)核態(tài)流程與驅(qū)動(dòng)程序再次向直接內(nèi)存存取控制器發(fā)起的寫操作同時(shí)進(jìn)行;循環(huán)執(zhí)行上述流程,直至數(shù)據(jù)傳輸完成,通過在直接內(nèi)存存取數(shù)據(jù)傳輸時(shí),讀操作和寫操作可以同時(shí)進(jìn)行,尤其是在數(shù)據(jù)規(guī)模比較大的時(shí)候,可以提高直接內(nèi)存存取傳輸效率。

本領(lǐng)域普通技術(shù)人員可以意識(shí)到,結(jié)合本文中所公開的實(shí)施例描述的各示例的模塊、單元及算法步驟,能夠以電子硬件、計(jì)算機(jī)軟件或者二者的結(jié)合來實(shí)現(xiàn),為了清楚地說明硬件和軟件的可互換性,在上述說明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計(jì)約束條件。專業(yè)技術(shù)人員可以對(duì)每個(gè)特定的應(yīng)用來使用不同方法來實(shí)現(xiàn)所描述的功能,但是這種實(shí)現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。

所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為了描述的方便和簡潔,上述描述的終端和單元的具體工作過程,可以參考前述方法實(shí)施例中的對(duì)應(yīng)過程,在此不再贅述。

在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的終端和方法,可以通過其它的方式實(shí)現(xiàn)。例如,以上所描述的系統(tǒng)實(shí)施例僅僅是示意性的,例如,所述模塊、單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。本發(fā)明實(shí)施例方法中的步驟可以根據(jù)實(shí)際需要進(jìn)行順序調(diào)整、合并和刪減。

本發(fā)明實(shí)施例終端中的單元可以根據(jù)實(shí)際需要進(jìn)行合并、劃分和刪減。

以上所述,僅為本發(fā)明的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到各種等效的修改或替換,這些修改或替換都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以權(quán)利要求的保護(hù)范圍為準(zhǔn)。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1