用于加速器的可擴展輸入/輸出數據機制的制作方法
【技術領域】
[0001]本發(fā)明涉及加速器的數據處理,更具體地說,涉及一種用于由加速器使用的可擴展輸入/輸出數據機制的系統(tǒng)。
【背景技術】
[0002]一般而言,中央處理器(CPU)或主機將特定處理任務卸載到加速器,以降低CPU上的工作負荷。用于處理特定任務、諸如場可編程門陣列(FPGA)和圖形處理單元(GPU)的加速器的使用變得更加廣泛。
[0003]當前,主機和加速器之間的接口是被作為主機上的隊列實現,其對加速器將要工作的任務進行異步排隊??刂平Y構通常被主機使用,用于傳遞任務信息,諸如加速器將執(zhí)行什么操作、存儲器中輸入數據的位置、以及存儲器中將寫輸出數據的位置。傳統(tǒng)上這些數據位置值對于任務壽命(其是從隊列中控制塊的創(chuàng)建直到任務完成)而言是靜態(tài)的。數據位置值的靜態(tài)屬性將任務限制在固定的輸入/輸出數據量,其必須在創(chuàng)建控制結構以前被確定。
[0004]在許多情況下,在創(chuàng)建控制結構以前,主機存儲器中的整個輸入/輸出區(qū)域的規(guī)格會要求鎖定大量數據/存儲器空間用于任務的整個持續(xù)時間,包括加速器排隊花費的時間在內。此外,由于在創(chuàng)建控制結構時數據輸出量可能不是已知的,最差情況估計通常被用于為輸出數據預留足夠的空間。
【發(fā)明內容】
[0005]實施例包括用于提供用于在加速器上執(zhí)行指令的可擴展任務結構的方法、系統(tǒng)和計算機程序產品。該方法包括使用處理設備創(chuàng)建多個數據描述塊,其中多個數據描述塊中的每一個具有固定數量的與多個數據描述塊中每一個相關聯的數據存儲位置地址、以及指向多個數據描述塊中下一個數據描述塊的指針。該方法還包括創(chuàng)建最后數據描述塊,其包括固定數量的與最后數據描述塊相關聯的數據存儲位置地址、以及最后塊指示器,其中指向多個數據描述塊中下一個數據描述塊的指針中的一個指向最后數據描述塊?;诖_定需要其它存儲器用于在加速器上執(zhí)行的指令,該方法包括將最后數據描述塊修改成為數據擴展塊,數據擴展塊包括指向一個或多個新的數據描述塊中的一個的指針,一個或多個新的數據描述塊中的每一個包括固定數量的數據存儲位置地址,并且創(chuàng)建新的最后數據描述塊,其包括固定數量的與新的最后數據描述塊相關聯的數據存儲位置、以及最后塊指示器。
[0006]其它特征和有益效果是通過本發(fā)明的技術實現。本發(fā)明的其它實施例和方面在本文被詳細描述,并被視為宣告的發(fā)明的一部分。為了更好地理解本發(fā)明的有益效果和特征,參考說明書和附圖。
【附圖說明】
[0007]在說明書的結論處,被認為是本發(fā)明的主題被特別指出,并在權利要求中被明確地宣告。通過以下結合附圖的詳細描述,本發(fā)明的前述和其它特征以及有益效果是顯而易見的,其中:
[0008]圖1示出根據示例性實施例的用于實現本文教導的計算機系統(tǒng)的框圖;
[0009]圖2示出根據示例性實施例的具有用于加速器的可擴展輸入/輸出數據機制的系統(tǒng)的框圖;
[0010]圖3示出根據示例性實施例的用于加速器的初始任務結構的框圖;
[0011]圖4示出根據示例性實施例的數據描述塊的框圖;
[0012]圖5示出根據示例性實施例的用于加速器的擴展任務結構的框圖;
[0013]圖6示出根據示例性實施例的用于加速器的擴展任務結構的框圖;
[0014]圖7示出根據示例性實施例的用于加速多個隊列處理操作的方法的流程圖;
[0015]圖8A示出根據示例性實施例的用于加速器的初始任務結構的框圖;以及
[0016]圖SB示出根據示例性實施例的用于加速器的擴展任務結構的框圖。
【具體實施方式】
[0017]本文公開的實施例包括具有用于在加速器上處理任務的可擴展輸入/輸出數據機制的系統(tǒng)。可擴展輸入/輸出數據機制被配置為允許在任務運行時對該任務使用的輸入和輸出區(qū)域的擴展。在示例性實施例中,應用可在創(chuàng)建任務時指定輸入和輸出,并還能在任務正在被加速器處理時,如果加速器靠近充滿預定義輸出區(qū)域,則增加更多用于加速器的輸入數據或擴展輸出區(qū)域。在示例性實施例中,輸入/輸出數據機制在等待其他方做該其他方被請求的一些事情時,不需要主機或加速器旋轉。在示例性實施例中,輸入/輸出數據機制也可被用于分配和釋放來自輸入的頁面,從而創(chuàng)建當加速器處理輸入數據時僅僅一部分輸入數據必須被鎖定的滑動窗口。
[0018]現在參考圖1,其示出用于以本文的教導使用的示例性計算機系統(tǒng)100的框圖。本文描述的方法可以以硬件、軟件(例如固件)、或其組合實現。在示例性實施例中,本文描述的方法是以硬件實現,并且是諸如個人電腦、工作站、微型計算機、或主計算機的專用或通用數字計算機的一部分。因此,系統(tǒng)100包括通用計算機101。
[0019]在示例性實施例中,就圖1中所示的硬件架構而言,計算機101包括處理器105、經由存儲器控制器115連接的存儲器110、存儲設備120、以及一個或多個經由本地輸入/輸出控制器135通信連接的輸入和/或輸出(I/O)設備140、145(或外圍設備)。輸入/輸出控制器135可以是例如但不局限于本領域已知的一個或多條總線、或其它有線或無線連接。輸入/輸出控制器135可具有其它元件,出于簡化目的它們被省略,諸如控制器、緩沖器(高速緩沖存儲器)、驅動器、中繼器、以及接收機,以便實現通信。此外,本地接口可包括實現前述構件之間適當通信的地址、控制、和/或數據連接。存儲設備120可包括一個或多個硬盤驅動器(HDD)、固態(tài)盤驅動器(SSD)、或任何其它適當形式的存儲器。
[0020]處理器105是用于執(zhí)行(特別是存儲在存儲器110中的)硬件指令或軟件的計算設備。處理器105可以是任何定制或商業(yè)上可用的處理器、中央處理單元(CPU)、與計算機101相關聯的多個處理器中的輔助處理器、基于半導體的微處理器(以單片機或芯片組形式)、宏處理器、或通常用于執(zhí)行指令的任何設備。處理器105可包括緩存170,其可以被組織為多個緩存級(L1、L2等)的分層。
[0021]存儲器110可包括易失性存儲單元(例如隨機存取存儲器(例如DRAM、SRAM,SDRAM等的RAM))和非易失性存儲單元(例如ROM、可擦寫可編程只讀存儲器(EPROM)、電可擦寫可編程只讀存儲器(EEPROM)、可編程只讀存儲器(PROM)、磁帶、壓縮光盤只讀存儲器(⑶-ROM)、光盤、磁盤、編碼磁帶、盒式磁帶等)中的任何一個或組合。此外,存儲器110可包括電、磁、光、和/或其它類型的存儲媒質。注意存儲器110可具有分布式結構,其中各個構件遠離彼此設置,但可被處理器105訪問。
[0022]存儲器110中的指令可包括一個或多個分開的程序,每個包括用于實現邏輯功能的可執(zhí)行指令的順序列表。在圖1的實例中,存儲器110中的指令包括合適的操作系統(tǒng)
(OS)111。操作系統(tǒng)111實質上控制其它計算機程序的執(zhí)行,并提供調度、輸入-輸出控制、文件和數據管理、存儲器管理、以及通信控制和相關服務。
[0023]在示例性實施例中,常規(guī)鍵盤150和鼠標155可被連接到輸入/輸出控制器135。其它諸如I/o設備140、145的輸出設備可包括輸入設備,例如但不局限于打印機、掃描儀、麥克風等。最后,I/O設備140、145還可包括與輸入和輸出通信的設備,例如但不局限于網絡接口卡(NIC)或調制器/解調器(用于訪問其它文件、設備、系統(tǒng)或網絡)、射頻(RF)或其它的收發(fā)信機、電話接口、橋、路由器等。系統(tǒng)100還可包括連接到顯示器130的顯示控制器125。在示例性實施例中,系統(tǒng)100還可包括用于連接到網絡165的網絡接口 160。網絡165可以是用于計算機101和任何外部服務器、客戶端等之間經由寬帶連接通信的、基于IP的網絡。網絡165在計算機101和外部系統(tǒng)之間傳輸和接收數據。在