示例性實(shí)施例中,網(wǎng)絡(luò)165可以是服務(wù)提供商所管理的管理IP網(wǎng)絡(luò)。網(wǎng)絡(luò)165可以以無線形式實(shí)現(xiàn),例如使用諸如WiF1、WiMax等的無線協(xié)議和技術(shù)。網(wǎng)絡(luò)165還可以是分組交換網(wǎng)絡(luò),諸如局域網(wǎng)、廣域網(wǎng)、城域網(wǎng)、互聯(lián)網(wǎng)、或其它類似類型的網(wǎng)絡(luò)環(huán)境。網(wǎng)絡(luò)165可以是固定無線網(wǎng),無線局域網(wǎng)(LAN)、無線城域網(wǎng)(WAN)、個(gè)人局域網(wǎng)(PAN)、虛擬專用網(wǎng)(VPN)、企業(yè)網(wǎng)或其它合適的網(wǎng)絡(luò)系統(tǒng),并包括用于接收和傳輸信號(hào)的裝置。
[0024]如果計(jì)算機(jī)101是PC、工作站、智能設(shè)備等,存儲(chǔ)器110中的指令還可包括基本輸入輸出系統(tǒng)(B1S,為了簡化而省略)。B1S是在啟動(dòng)時(shí)初始化和測(cè)試硬件、開啟OS 111、以及支持存儲(chǔ)設(shè)備之間數(shù)據(jù)傳送的重要例程集合。B1S被存儲(chǔ)在ROM中,以在計(jì)算機(jī)101被激活時(shí)B1S可被執(zhí)行。
[0025]當(dāng)計(jì)算機(jī)101處于操作中時(shí),處理器105被配置為執(zhí)行存儲(chǔ)在存儲(chǔ)器110內(nèi)的指令,將數(shù)據(jù)傳遞到存儲(chǔ)器110并從其接收數(shù)據(jù),并且通常按照指令控制計(jì)算機(jī)101的操作。在示例性實(shí)施例中,計(jì)算機(jī)系統(tǒng)100包括一個(gè)或多個(gè)加速器180,加速器180被配置為與處理器105通信。加速器180可以是被配置為執(zhí)行特定處理任務(wù)的場(chǎng)可編程門陣列(FPGA)或其它合適的設(shè)備。在示例性實(shí)施例中,計(jì)算機(jī)系統(tǒng)100可被配置為將某些處理任務(wù)卸載到加速器180,這是由于加速器180能夠比處理器105更有效地執(zhí)行處理任務(wù)。
[0026]現(xiàn)在參考圖2,其示出根據(jù)示例性實(shí)施例的具有加速器206的系統(tǒng)200的框圖。系統(tǒng)200包括主機(jī)204,其可以是如圖1中所示的計(jì)算機(jī)。在示例性實(shí)施例中,主機(jī)204正在執(zhí)行一個(gè)或多個(gè)應(yīng)用202,并通過發(fā)送指令到用于加速器206的驅(qū)動(dòng)器208來將一個(gè)或多個(gè)處理任務(wù)從應(yīng)用202卸載到加速器206。在示例性實(shí)施例中,驅(qū)動(dòng)器208包括用于管理將發(fā)送到加速器206的任務(wù)的隊(duì)列210、以及用于追蹤加速器206狀態(tài)的狀態(tài)指示器212。在示例性實(shí)施例中,驅(qū)動(dòng)器208還可包括被配置為監(jiān)視狀態(tài)指示器212并在狀態(tài)指示器212的值為預(yù)定值時(shí)導(dǎo)致中斷的中斷處理機(jī)211。在示例性實(shí)施例中,主機(jī)204包括可由應(yīng)用202和加速器206訪問的存儲(chǔ)器209。應(yīng)用202被配置為把將要由加速器206訪問的數(shù)據(jù)寫入存儲(chǔ)器209。同樣,加速器206被配置為把將要由應(yīng)用202訪問的數(shù)據(jù)寫入存儲(chǔ)器209。
[0027]在示例性實(shí)施例中,應(yīng)用202為其發(fā)送到加速器206的每個(gè)任務(wù)或指令集創(chuàng)建任務(wù)控制塊。任務(wù)控制塊包括加速器206將執(zhí)行的操作的指示、將由加速器206使用的輸入數(shù)據(jù)在存儲(chǔ)器209中的位置的標(biāo)識(shí)、以及加速器206應(yīng)該將輸出數(shù)據(jù)寫入的存儲(chǔ)器209中的位置的標(biāo)識(shí)。在示例性實(shí)施例中,加速器206包括服務(wù)層214和應(yīng)用邏輯216。服務(wù)層214被配置為與主機(jī)204的驅(qū)動(dòng)器208通信,并且應(yīng)用邏輯216被配置為執(zhí)行從主機(jī)204接收的指令。
[0028]雖然示出了單個(gè)加速器206,對(duì)于所屬技術(shù)領(lǐng)域的技術(shù)人員而言,清楚的是系統(tǒng)200可包括多個(gè)加速器206,該多個(gè)加速器可以以多種配置排列在系統(tǒng)200中。例如,多個(gè)加速器芯片可設(shè)置在單個(gè)加速器卡(例如PCIe卡)上,單個(gè)加速器芯片可設(shè)置在系統(tǒng)中多個(gè)加速器卡中的每一個(gè)上,或者可使用兩種排列的組合。在示例性實(shí)施例中,可基于系統(tǒng)配置以各種方式執(zhí)行不同加速器之間的通信。
[0029]現(xiàn)在參考圖3,其示出根據(jù)示例性實(shí)施例,用于加速器處理任務(wù)的初始任務(wù)結(jié)構(gòu)300的框圖。在示例性實(shí)施例中,任務(wù)結(jié)構(gòu)300包括由應(yīng)用創(chuàng)建的任務(wù)控制塊302。在示例性實(shí)施例中,應(yīng)用為其發(fā)送到加速器的每個(gè)任務(wù)或指令集創(chuàng)建任務(wù)控制塊302 ο任務(wù)控制塊包括加速器要執(zhí)行的操作的指示,以及指向數(shù)據(jù)描述塊的指針,數(shù)據(jù)描述塊為加速器提供用于輸入和/或輸出數(shù)據(jù)的存儲(chǔ)位置。在示例性實(shí)施例中,數(shù)據(jù)描述塊可包括輸入數(shù)據(jù)描述塊304和/或輸出數(shù)據(jù)描述塊310。
[0030]在示例性實(shí)施例中,輸入數(shù)據(jù)描述塊304包括指向包含將由加速器使用的輸入數(shù)據(jù)的存儲(chǔ)器320中一個(gè)或多個(gè)位置322的指針。此外,輸入數(shù)據(jù)描述塊304包括指向下一個(gè)輸入數(shù)據(jù)描述塊的指針305。在示例性實(shí)施例中,下一個(gè)輸入數(shù)據(jù)描述塊可以是最后輸入數(shù)據(jù)描述塊306,其包括指向包含將由加速器使用的輸入數(shù)據(jù)的存儲(chǔ)器320中一個(gè)或多個(gè)位置322的指針。此外,最后輸入數(shù)據(jù)描述塊306包括指示其是任務(wù)的最后輸入數(shù)據(jù)描述塊306的指示器308。
[0031]在示例性實(shí)施例中,輸出數(shù)據(jù)描述塊310包括指向在存儲(chǔ)器330中的由加速器使用用于寫入輸出數(shù)據(jù)到的一個(gè)或多個(gè)位置332的指針。此外,輸出數(shù)據(jù)描述塊310包括指向下一個(gè)輸出數(shù)據(jù)描述塊的指針305。在示例性實(shí)施例中,下一個(gè)輸出數(shù)據(jù)描述塊可以是最后輸出數(shù)據(jù)描述塊312,其包括指向在存儲(chǔ)器330中的由加速器使用用于寫入輸出數(shù)據(jù)到的一個(gè)或多個(gè)位置332的指針。此外,最后輸出數(shù)據(jù)描述塊312包括指示其是任務(wù)的最后輸出數(shù)據(jù)描述塊312的指示器308。在示例性實(shí)施例中,存儲(chǔ)器320和存儲(chǔ)器330位于主機(jī)的存儲(chǔ)器中,如圖2所示。
[0032]現(xiàn)在參考圖4,其示出根據(jù)示例性實(shí)施例的數(shù)據(jù)描述塊400的框圖。數(shù)據(jù)描述塊400可以是圖3中所示的輸入或輸出數(shù)據(jù)描述塊。在示例性實(shí)施例中,每個(gè)數(shù)據(jù)描述塊400是固定大小的塊,其包括頭部440、多個(gè)數(shù)據(jù)頁面條目442、以及指向下一個(gè)數(shù)據(jù)描述塊的指針444。在示例性實(shí)施例中,每個(gè)數(shù)據(jù)頁面條目442是存儲(chǔ)器中的下一個(gè)有效條目的地址和長度、或者存儲(chǔ)器中的最后的有效條目的地址和長度。在示例性實(shí)施例中,頭部440包括用于任務(wù)的全部數(shù)量的輸入或輸出地址條目。在一個(gè)實(shí)施例中,當(dāng)指向下一個(gè)數(shù)據(jù)描述塊的指針444的值為空時(shí),該數(shù)據(jù)描述塊是任務(wù)的最后數(shù)據(jù)描述塊。在其它實(shí)施例中,數(shù)據(jù)描述塊400可包括單獨(dú)的用于指示該數(shù)據(jù)描述塊是任務(wù)的最后數(shù)據(jù)描述塊的最后塊指示器446。在其它實(shí)施例中,單個(gè)條目可用于將這兩個(gè)指示器與數(shù)據(jù)頁面條目結(jié)合(或用其替代數(shù)據(jù)頁面條目),以在數(shù)據(jù)描述塊中僅僅使用一個(gè)條目。
[0033]在示例性實(shí)施例中,用于加速器處理任務(wù)的任務(wù)結(jié)構(gòu)被配置為使得分配用于輸入和輸出數(shù)據(jù)的存儲(chǔ)器數(shù)量可在加速器執(zhí)行任務(wù)期間被修改。在示例性實(shí)施例中,可通過創(chuàng)建新的最后數(shù)據(jù)描述塊和修改任務(wù)當(dāng)前的最后數(shù)據(jù)描述塊,來擴(kuò)展分配的存儲(chǔ)器數(shù)量。例如,在確定應(yīng)用希望為加速器提供附加的輸入數(shù)據(jù)時(shí),該應(yīng)用可修改當(dāng)前的最后輸入數(shù)據(jù)描述塊,以創(chuàng)建指針,用以指向引用附加存儲(chǔ)位置的新的輸入數(shù)據(jù)描述塊。在示例性實(shí)施例中,在加速器執(zhí)行任務(wù)期間,該加速器被配置為在完成處理由最后數(shù)據(jù)描述塊引用的數(shù)據(jù)以后重取該最后數(shù)據(jù)描述塊,以確定在當(dāng)前的最后數(shù)據(jù)描述塊的處理期間應(yīng)用是否已經(jīng)增加了新的數(shù)據(jù)描述塊。
[0034]在示例性實(shí)施例中,由加速器按需取回或獲取數(shù)據(jù)描述塊。也就是說,加速器在需要數(shù)據(jù)描述塊時(shí),在執(zhí)行任務(wù)期間獲取它們。相應(yīng)地,可通過修改數(shù)據(jù)描述塊鏈中的最后塊,并用單個(gè)具有指向新的輸入數(shù)據(jù)描述塊鏈的指針的條目替代該最后數(shù)據(jù)描述塊,來擴(kuò)展用于執(zhí)行的任務(wù)的輸入數(shù)據(jù)的頁面數(shù)量。
[0035]現(xiàn)在參考圖5,其示出根據(jù)示例性實(shí)施例,用于加速器處理任務(wù)的擴(kuò)展任務(wù)結(jié)構(gòu)的框圖。擴(kuò)展任務(wù)結(jié)構(gòu)500是圖3中所示的任務(wù)結(jié)構(gòu),其已經(jīng)被擴(kuò)展為增加了附加輸入數(shù)據(jù)描述塊516和514。在示例性實(shí)施例中,任務(wù)結(jié)構(gòu)500包括由應(yīng)用創(chuàng)建的任務(wù)控制塊502。在示例性實(shí)施例中,應(yīng)用為其發(fā)送到加速器的每個(gè)任務(wù)或指令集創(chuàng)建任務(wù)控制塊502。任務(wù)控制塊包括加速器將執(zhí)行的操作的指示、指向輸入數(shù)據(jù)描述塊504的指針、以及指向輸出數(shù)據(jù)描述塊510的指針。
[0036]在示例性實(shí)施例中,輸入數(shù)據(jù)描述塊504包括指針,指向包含必須由加速器處理的輸入數(shù)據(jù)的存儲(chǔ)器520中一個(gè)或多個(gè)位置524。在示例性實(shí)施例中,加速器可將已經(jīng)被處理的輸入塊的數(shù)量報(bào)告給主機(jī),其可釋放已經(jīng)被處理的存儲(chǔ)位置