包括具有多緩衝區以使在著色器核心上不同類型工作能夠異步並行分派的指令處理器的...的製作方法
2023-05-18 07:16:36 1
專利名稱:包括具有多緩衝區以使在著色器核心上不同類型工作能夠異步並行分派的指令處理器的 ...的製作方法
技術領域:
本揭示發明大致關於在計算機系統中執行的計算作業,尤其是關於一種例如圖形處理單元(graphic-processing unit, GPU)的處理單元,該處理單元執行計算作業及其應用程式。
背景技術:
GPU為適用於執行例如圖形處理工作的數據並行計算工作複雜的集成電路。舉例而言,GPU可執行例如視訊遊戲應用程式之終端使用者應用程式所要求的圖形處理工作。該GPU可為離散的(亦即,分開的)裝置及/或封裝件,或可被包含在相同的裝置及/或封裝件中作為另一處理器(例如,中央處理器(central processing unit, CPU))。舉例而言,GPU頻繁地被整合至路由(routing)或橋接(bridge)裝置中,例如北橋裝置。終端使用者應用程式與GPU之間具有數個軟體層。該終端使用者應用程式與應用程式編程接口(Application programming interface,API)溝通。API允許該終端使用者應用程式以標準化的格式輸出圖形數據及命令,而非取決於GPU的格式。數種API是商業市場上可取得的,包含位於華盛頓州雷蒙德的微軟公司(Microsoft Corporation of Redmond,Washington)所發展的DirectX 以及科納斯組織(Khronos Group)所發布的OpenGL 。API與驅動程序溝通。該驅動程序將接受自該API的標準編碼(code)轉譯為該GPU可了解的指令的原生格式。該驅動程序典型地是由該GPU的製造者所撰寫。該GPU隨後執行來自該驅動程序的指令。由GPU所執行的圖形處理工作典型地包含複雜的數學計算,例如矩陣和向量運算。為了執行一個單一的圖形處理工作,GTO可能需要執行多個不同的線程(指令的序列)。各線程可包括一著色程序(shader program),例如幾何著色程序、像素著色程序、頂點著色程序等等。各線程(例如,著色程序)典型地與狀態數據集(例如,紋理處理、著色常數、轉換矩陣等等)相關聯,該狀態數據集區域性地儲存在該GPU的數據儲存單元中。該區域性的儲存的狀態數據集稱為上下文(context)。為了有效率地執行單一圖形處理工作的各種線程(例如,著色程序),GPU包含一處理組件所組成的矩陣,稱為著色器核心(shader core)。該處理組件所組成的矩陣被組織成單指令多數據(single-instruction, multiple-data, SIMD)裝置。多個線程(例如,著色程序)可同時被發出至該著色器,伴隨著將執行各個線程(例如,著色程序)所需要的數據平行地分配給該著色器的不同處理組件。該不同處理組件可隨後平行地執行該數據上的作業。以此方式,GPU可較典型的中央處理器(CPU)更快速地執行圖形處理工作所要求的複雜數學計算。因此,若計算系統包含GPU,圖形處理工作(及其它類型的數據平行處理工作)典型地傳送至該GPU而非CPU。 為了傳送工作至GPU,作業系統(operation system, OS)排程器將該工作儲存在命令緩衝區(command buffer)中。習知的GPU —次處理一個緩衝區。該OS排程器逐次地將工作放置該命令緩衝區中,且該GPU典型地依據各該工作被放置在命令緩衝區中的順序處理各該工作。然而,在某些例子中,該GPU可不依據各該工作被放置在命令緩衝區中的順序處理各該工作。舉例而言,GPU可中斷第一工作的執行,以實行在該命令緩衝區中被放置在該第一工作之後的更重要的(例如,低延遲(Iow-Iatency))工作。
為了於該第一工作在GPU的著色器核心中結束完成前執行更重要的(例如,低延遲)的工作,習知的GPU執行上下文切換(context switch) 0亦即,將關聯於該第一工作的線程的狀態數據交換至該習知的GPU所維持的備用儲存單元中,再將關聯於該更重要的(例如,低延遲)的工作的線程(例如,著色程序)的新狀態數據擷取並放置到該著色器核心的數據儲存單元中。該著色器核心隨後基於在該數據儲存單元中的該新狀態數據執行該更重要的(例如,低延遲)工作。在該更重要的(例如,低延遲)工作完成執行之後,從數據儲存單元中清空在關聯於該更重要的(例如,低延遲)工作的線程的狀態數據,且將來自該第一工作的線程的狀態數據交換回該著色器核心的數據儲存單元中。然後,該著色器核心可繼續執行該第一工作的線程。雖然上下文切換使GPU能夠不依據各該工作被放置在命令緩衝區中的順序處理各該工作,但因為數個理由,上下文切換仍是有問題的。就初步的問題而言,執行上下文切換需要大量的時間,因此限制了 GPU的表現。此外,上下文切換需要額外的區域內存(例如,備用儲存單元)以儲存被切換的上下文。該額外的區域內存佔用寶貴的晶片面積,導致了較大的GPU。除需要大量的時間和面積之外,上下文切換使GPU在處理低延遲、高度優先的工作上變得無效率。為了準備著色器核心以執行該低延遲、高度優先的工作,習知的GPU必須執行上下文切換。關聯於上下文切換的時間(例如,數百個時脈循環)使得用以執行該低延遲、高度優先的工作的有效時間(effective time)相對的長,即使執行該低延遲、高度優先的工作的實際時間(actual time)可能相對的短(例如,數十個時脈循環)。綜上所述,需要不使用上下文切換,而可有效率地處理重要(例如,低延遲)工作的處理單元。
發明內容
本發明之實施例通過提供方法、設備以及系統以能夠進行異步工作分派及其應用以滿足前述的需求。舉例而言,本發明之實施例提供一種包含多個虛擬引擎和著色器核心的處理單元。該多個虛擬引擎組構成用以(i)接收來自作業系統(OS)的實質上彼此平行的多個工作,以及(ii)加載關聯於該多個工作的每一個的狀態數據集。該著色器核心組構成基於關聯於該多個工作的每一個的該狀態數據集以執行該實質上平行的多個工作。該處理單元還可包含排程模塊,用以排程將發出給該著色器核心的該多個工作。在另一實施例中,處理單元界定在軟體中。在本實施例中,一種包括含有指令的計算機可讀取儲存媒體的電腦程式產品,該指令若在計算裝置上執行時,界定一處理單元。在又一實施例中,該處理單元被包含在一計算系統中。在本實施例中,該計算系統包含內存、第一處理單元、第二處理單元以及耦合至該內存、該第一處理單元及該處理單元的總線。一範例計算系統可包含,但不限於超級計算機、桌上型計算機、筆記型計算機、遊戲機(video-game console)、嵌入式裝置、手持裝置(例如,手機、智能型手機、MP3播放器、相機、GPS裝置等等)或其它包含有或配置成含有處理單元的裝置。本發明的另一實施例提供一種用以在處理單元中處理工作的計算機實行方法。該計算機實行方法包含數個作業。在第一作業中,接收來自作業系統(OS)的彼此平行的多個工作。在第二作業中,加載關聯於該多個工作的每一個的狀態數據集,在第三作業中,在著色器核心中基於關聯於該多個工作的每一個的該狀態數據集以執行該實質上平行的多個工作。該計算機實行方法還可包含排程將發出給該著色器核心的該多個工作。本發明的又一實施例提供一種用以提供工作給處理單元的計算機實行方法。該方法包含數個作業。在第一作業中,接收來自一個或更多應用程式的多個工作,其中,各工作包含優先類型之指示。在第二作業中,提供該多個工作及關聯於各工作的該優先類型之指示至該處理單元。在一實施例中,若指令由一計算裝置所執行,儲存在電腦程式產品的計算機可讀取媒體上的指令可引發該計算裝置執行本方法。本發明的特徵及優勢,連帶本發明的各種實施例的結構和運作,在以下參考附加 圖標作詳細地描述。應該了解到本發明並不以此處所描述的特定實施例為限。此處所揭示之該些特定實施例僅為了例示之目的。依據此處教示,其它實施例對於熟悉相關技術領域者而目是顯而易見的。
合併至且構成本說明書的一部份的附加圖標系例示本發明之實施例,連同前述發明內容提供的一般敘述以及下列具體實施方式
提供的詳細說明,以協助解釋本揭示發明的原理且使熟悉相關技術領域者能夠製作及使用本發明。圖I例示根據本揭示發明的實施例的範例計算系統的方塊圖。圖2例示根據本揭示發明的實施例的範例GPU的方塊圖。圖3A及3B系例示根據本揭示發明的實施例的用以發出工作至GPU的虛擬引擎的範例工作流程的方塊圖。圖4例示根據本揭示發明的實施例的用以發出工作至GPU的虛擬引擎的更詳細範例工作流程的方塊圖。圖5描繪本揭示發明的實施例可被實現的範例計算系統。本發明的特性及優點將伴隨圖式透過以下更詳盡的說明變得更清楚明白,其中,相似的參考標號定義全文中相對應的組件。附圖中,相同、功能類似及/或結構上類似的組件大體用相同的參考數字表示。該組件首次出現的該附圖由參考數字最左邊的數字(或數個)所表示。
具體實施例方式一、概述本發明的實施例提供一能夠進行異步工作分派及其應用的處理單元。在下列的詳細說明中,引用的「一個實施例」、「一實施例」或「一具體實施例」等表示所述的實施例可包含一特別特徵、結構或特性,但並非每個實施例都必定包含該特別特徵、結構或特性。此外,此等用語不一定指相同的實施例。進一步,當結合一實施例以描述一特別特徵、結構或特性時,在熟悉本領域技術者的知識範圍內可結合其它已清楚說明或未清楚說明之實施例實現該等特別特徵、結構或特性。依據一實施例,一處理單元包括包含在單一著色器核心上的多個虛擬引擎。各虛擬引擎組構成用以接收數據平行處理工作(例如,圖形處理工作和一般計算工作)以及在該單一著色器核心上獨立地執行這些工作。以此方法,該處理單元可執行二個或更多不同處理工作串流-例如,低延遲處理工作的第一串流以及標準圖形處理工作的第二串流-而不需要上下文切換。執行二個或更多不同處理工作串流提供了在沒有關聯於停止和清除該處理單元的數據的開銷(overhead)下的上下文切換的低延遲好處。事實上,本發明的實施例使多個上下文能夠在單一著色器核心上存在和同時地(實質上地)被執行。僅是為了說明的目的,且並非為了限制,此處敘述的本發明的實施例是以GPU而言。然而,相關領域之技術人員將了解本發明之實施例可應用在用以接收處理工作串流的 其它類型處理單元,例如中央處理單元和共處理器(coprocessors)。這些其它類型的處理器被視為在本發明的精神及範圍內。在實施例中,該GPU處理多個命令緩衝區。舉例而言,低延遲處理工作可被安排在第一命令緩衝區,且標準圖形處理工作可例如被安排在第二命令緩衝區。該GPU的第一虛擬引擎擷取(retrieve)該低延遲處理工作,且該GPU的第二虛擬引擎擷取該標準圖形處理工作。然後將來自各虛擬引擎的工作實質上彼此平行地發出給單一著色器核心。為了使該單一著色器核心能夠(實質上地)同時地處理來自二個或更多不同虛擬引擎的工作,該著色器核心的資源在空間及/或時間上被分割。為了達成空間的分割,舉例而言,將來自第一虛擬引擎的第一(例如,低延遲)工作發出給該著色器核心的處理組件(SIMDs)的第一子集合,且將來自第二虛擬引擎的第二(例如,標準圖形)工作發出給該著色器核心的處理組件(SMDs)的第二子集合。為了達到時間的分割,舉例而言,第一和第二工作分享著色器核心的處理組件(SMDs)的一部分時間。在一實施例中,該GPU包含排程模塊用以排程來自該二個或更多不同虛擬引擎的工作以在該著色器核心上執行。依據本發明的實施例分享該GPU的資源以提供多個虛擬引擎增進了該GPU資源的使用,特別是在大晶片上。可將二個或更多工作的串流發出給單一著色器核心,使該GPU有效率地使用計算及輸入/輸出設備。舉例而言,該GPU著色器核心的資源(例如,SMDs)可基於需求、優先級及/或預設的限制,在平行的工作間被分割-同時暫時性地使任何一個工作能夠(實質上地)完全地耗用該GPU的資源。依據本發明的實施例的範例GPU的進一步詳細內容將在以下描述。在提供此些詳細內容之前,描述在其中此等GPU可被實施的範例系統是有幫助的。二、範例系統圖I為根據一實施例的計算系統100的方塊圖。計算系統100包含CPU 102,GPU110以及可選擇性地包含共處理器112。在圖I的實施例中,CPU 102及GPU 110顯示為分開的方塊。此僅為了說明的目的,且並非限制。熟悉相關領域的人士將了解CPU 102及GPU110可被包含在分開的封裝件中或可被合併在單一的封裝件或集成電路中。計算系統100亦包含可被CPU 102、GPU 110以及共處理器112訪問的系統內存104。在實施例中,計算系統100可包括超級計算機、桌上型計算機、筆記型計算機、遊戲機、嵌入式裝置、手持裝置(例如,手機、智能型手機、MP3播放器、相機、GPS裝置等等)或其它包含有或組構成含有GPU的裝置。GPU 110通過執行某些特殊功能(例如,圖形處理工作以及數據平行、一般計算工作)協助CPU 102,通常快於CPU 102在軟體內可執行者。GPU 110包含分享單一著色器的資源的多個虛擬引擎。以此方法,GPU 110的該多個虛擬引擎可實質上平行地執行多個工作。在實施例中,GPU 110可被整合至晶片組及/或CPU 102。以下提供GPUllO額外的詳細內容。共處理器112亦協助CPU 102。共處理器112可包括,但不限於浮點(floatingpoint)共處理器、GPU、網絡連結共處理器以及其它類型的共處理器與處理器,這對於熟悉本技術領域的人士是顯而易見的。GPU 110與共處理器112與CPU 102及該系統內存透過總線114溝通。總線114可為使用在計算機系統內的任何種類的總線,包含周邊組件界面(peripheral componentinterface, PCI)總線、加速圖形埠 (accelerated graphics port, AGP)總線、快捷周邊組件界面(PCI Express,PCIE)總線,或無論是目前可得的或在未來所發展的其它種類的總線。除了系統內存104外,計算系統100進一步包含區域內存106以及區域內存108。區域內存106耦合至GPU 110且亦可耦合至總線114。區域內存108耦合至共處理器112且亦可耦合至總線114。為了提供某些數據(例如頻繁地被使用的數據)比若該數據儲存在系統內存104內更快的訪問,區域內存106與108分別地對GPU 110與共處理器112為可用的。在一實施例中,GPU 110與共處理器112和CPU 102同時將指令解碼(decode)且僅執行該些用於GPU 110與共處理器112的指令。在另一實施例中,CPU 102送出用於GPU110與共處理器112的指令至個別的命令緩衝區。雖然在圖I中未特別顯示,計算系統100亦可包含或耦接至一顯示裝置(例如,陰極射線管、液晶顯示器、電漿顯示器等等)。該顯示裝置用以顯示內容給使用者(例如,當計算系統100包括計算機、遊戲機或手持裝置時)。三、範例GPU如上所述,GPU 110包括包含實施在著色器核心上的多個虛擬引擎。各虛擬引擎組構成用以執行由OS排程器所提供的處理工作串流,其中,一給定的串流中的各處理工作可包含多個單獨的處理線程。因為GPU 110包含多個虛擬引擎,GPU 110不需要上下文切換即可執行來自該OS排程器的不同處理工作串流。事實上,在實施例中,GPU 110通過在工作間分享著色器核心的資源而在單一著色器核心內(實質上)同時執行來自多個串流的工作,該多個串流對應於多個不同的上下文。圖2例示GPU 110的範例硬體組件的方塊圖。請參照圖2,GPU 110包含命令處理器230、輸入邏輯(包含頂點分析器(vertex analyzer) 208、掃描轉換器212以及仲裁邏輯(arbitration logic) 222)、著色器核心214、輸出邏輯224以及內存系統210。以下描述各該組件。A.命令處理器命令處理器230接收來自由該OS排程器所填入的一個或更多命令緩衝區的工作(例如,圖形處理工作及一般計算工作)。如圖3所示,命令處理器230包含多個虛擬引擎,、該多個虛擬引擎共享GPU 110的資源。該命令處理器230的不同虛擬引擎處理不同類型的
工作。 在圖2的實施例中,命令處理器230包含第一背景引擎202A、第二背景引擎202B、實時低延遲引擎202C、主要3D引擎202D以及低延遲3D引擎202E。背景引擎202處理低優先級的工作。然而,應了解的是命令處理器230可包含其它種類的虛擬引擎。背景引擎202僅在無其它虛擬引擎使用GPU 110的資源時接管該GPU 110的資源。為了處理高優先級的工作,實時低延遲引擎202C具有對該GPU 110資源的優先訪問。主要3D引擎202D處理標準圖形處理工作,且低延遲3D引擎202E處理高優先級的圖形處理工作。低延遲3D引擎202E具有對該GPU 110圖型處理資源的優先訪問。在被發出給GPU 110的著色器核心214之前,將來自命令處理器230的工作提供給輸入邏輯。B.輸入邏輯輸入邏輯仲裁哪個工作要發出給著色器核心214。在一實施例中,輸入邏輯依據該著色器核心214資源的可用性及該各種工作的相對優先級實施一軟體例行工作以排程該工作在著色器核心214上執行。在圖3的實施例中,輸入邏輯包含圖形前處理邏輯(其準備用以發布至著色器核心214的圖形處理工作)以及仲裁邏輯222 (其提供工作至著色器核心214)。圖形前處理邏輯包含頂點分析器208以及掃描轉換器212。來自主要3D引擎202D以及低延遲3D引擎202E的工作是送至該圖形前處理邏輯。先進先出(first_in,first-out, FIFO)緩衝區204A接收來自主要3D引擎202D的工作,且FIFO緩衝區204B接收來自低延遲3D引擎202E的工作。多任務器(multiplexer) 206將來自FIFO緩衝區204中的一者的工作提供給頂點分析器208。頂點分析器208識別關聯於圖形處理及/或一般計算工作的著色器程序,並基於將為可用的輸入和輸出數據排程何時可在著色器核心214中激活各著色器程序。除了排程著色器程序以激活外,頂點分析器208亦產生指針給頂點緩衝區且包含連接性數據(connectivity data)。該指針是用以讀取來自頂點緩衝區的頂點。若頂點已被處理且被儲存在頂點緩衝區中,頂點分析器208可讀取來自頂點緩衝區的該頂點,以便一頂點僅會被處理一次。該連接性數據明確說明頂點如何配合在一起以製作基元(primitive)(例如,三角),以便該基元可被適當地柵格化(rasterized)。頂點分析器208將圖形處理工作送給掃描轉換器212,且將一般計算工作送給仲裁邏輯222。掃描轉換器212遍歷(traverse)該基元以判定將被著色器核心214處理的畫素(pixels)。掃描轉換器212再將該畫素送給仲裁邏輯222。仲裁邏輯222包含多個多任務器以將來自命令處理器230的不同虛擬引擎的工作提供給著色器核心214。C.著色器核心著色器核心214包含用以執行提供給GPU 110的工作的多個處理組件220。處理組件220安排為SMD裝置,使著色器核心214能夠(實質上地)同時執行多個數據平行處理工作。為了使著色器核心214能夠(實質上地)同時處理來自命令處理器230的多個虛擬引擎的工作,處理組件220在空間及/或時間上被分割。為了達成空間的分割,處理組件220的不同子集合組構成用以執行不同的工作。舉例而言,來自第一虛擬引擎(例如,實時低延遲引擎202C)的第一(例如,低延遲)工作可被發出給著色器核心214的處理組件220的第一子集合,且來自第二虛擬引擎(例如,主要3D引擎202D)的第二(例如,標準圖形)工作可被發出給著色器核心214的處理組件220的第二子集合。處理組件220的各子集合再獨立地執行其接收到的工作。為了達成時間上的分割,不同虛擬引擎的不同處理工作分享著色器核心214的處理組件220的一部分時間。由上述的範例中,該第一及第二工作分享著色器214的處理組件220的一部分時間。著色器214亦包含一個或更多區域數據共享(local data shares, LDS) 228,該區域數據共享228用以儲存由處理組件220所使用以執行由該OS排程器所提供的處理工作的數據。LDS 228儲存關聯於將由著色器核心214所執行的各工作的狀態數據。在一實施例中,LDS 228儲存多個不同上下文的狀態數據,使著色器核心214能夠(實質上地)同時執行來自OS排程器且關聯於多個不同上下文的多個工作而不需要上下文切換。處理組件220的中間結果可在著色器核心214中重新處理。舉例而言,處理組件 220可實現多個不同的著色器程序(例如,幾何著色器、頂點著色器、畫素著色器、曲面細分(tessellation)著色器等等)以完成由該OS排程器所提供的單一圖形處理工作。將該不同著色器程序的中間結果送回頂點分析器208及/或掃描轉換器212,且最後再回到處理組件220。在處理組件220完成由該OS排程器所提供的工作之後,將該最終結果提供給輸出邏輯224。D.輸出邏輯輸出邏輯224包含多個緩衝區,包括寫入組合高速緩存、深度緩衝區以及顏色緩衝區。該寫入組合高速緩存結合數據以被寫入片外(off-chip)內存中,使片外內存能夠有效率地訪問。該深度緩衝區緩衝結果以用於Z測試(z-testing)。該顏色緩衝區緩衝結果以用於顏色混合(color blending)。在執行關聯於該寫入組合高速緩存、深度緩衝區以及顏色緩衝區的程序之後,輸出邏輯224將該結果提供給內存系統210。E.內存系統內存系統210包含一個或更多片上(on-chip)高速緩存以及一個或更多片外內存接口。內存系統210耦接至命令處理器230、頂點分析器208、掃描轉換器212、著色器核心214以及輸出邏輯各者。當此些組件之任何一者需要數據以執行著色器程序時,會對內存系統210的該片上高速緩存發出要求。若在該片上高速緩存中為命中(hit)(亦即,要求的數據在該片上高速緩存中),發送該數據給提出要求的該組件。若在該片上高速緩存中為未命中(miss)(亦即,要求的數據不在該片上高速緩存中),所需要的數據必須從片外內存(例如,圖I的系統內存104)透過該內存系統210的片外內存接口擷取。在該數據由片外內存重新擷取之後,發送該數據給提出要求的該組件。此外,該數據亦使用本領域之技術人員所熟知的高速緩存內存技術儲存在該片上高速緩存(on-chip cache)中。四、範例操作GPU 110組構成用以執行由一 OS排程器所提供的多個處理工作串流。該多個處理
工作串流可由單一應用程式或多於一個的應用程式產生。圖3A顯示了著色器核心214 (實質上地)同時執行二個(或更多)不同處理工作串流的範例,其中,該處理工作串流由單一應用程式302所產生。應用程式302可為,舉例而言,用以在GPU上執行的產生圖形處理工作的終端使用者應用程式(例如,視訊遊戲應用程式、計算機輔助設計(computer-aided design, CAD)應用程式等等)或產生一般計算工作的終端使用者應用程式(例如,數學算法、物理仿真等等)。請參照圖3A,應用程式302產生第一工作308A以及第二工作308B。應用程式302所產生的各工作308包含優先級類型(priority type)。舉例而言,應用程式302可指出該第一工作308A為低延遲、高優先級工作,且該第二工作308B為標準優先級工作。OS排程器310接收該應用程式302所產生的工作且將該工作發出給GPU 110的不同虛擬引擎。舉例而言,OS排程器310將第一工作308A發出給第一虛擬引擎312A,且將第二工作308B發出給第二虛擬引擎312B。之後,來自各虛擬引擎312的工作由GPU 110的著色器核心214(實質上地)同時執行。圖3B顯示了著色器核心214 (實質上地)同時執行二個(或更多)不同處理工作串流的範例,其中,該處理工作串流由不同應用程式所產生。如圖3B所示,第一處理工作 330A由第一應用程式302A所產生,且第二處理工作330B由第二應用程式302B所產生。各工作330包含優先級類型。OS排程器310接收該工作330且將其發出給GPU 110的不同虛擬引擎。舉例而言,OS排程器310將第一工作330A發出給第一虛擬引擎332A,且將第二工作330B發出給第二虛擬引擎332B。之後,來自各虛擬引擎332的工作由GPU 110的著色器核心214 (實質上地)同時執行。在圖3A及3B的範例中,GPU 110接收該工作及該優先級類型兩者。為了提供優先級類型給GPU 110,應用程式302提供位(bits)給API以指出各該工作的優先級類型。該API依序提供此信息給GPU 110的驅動程序。在一實施例中,GPU 110包含排程模塊,其至少一部份地依據該應用程式所明確指定的優先級類型排程將在著色器核心214上執行的
該工作。雖然圖3A及3B的範例顯示了著色器核心214僅執行二個處理工作串流,但此僅為了說明的目的,且並非限制。應該了解到著色器核心214可(實質上地)同時執行由一個或更多應用程式所產生的二個(或更多)不同處理工作串流。舉例而言,圖4為範例工作流程,顯示了運行在計算系統(例如,計算系統100)與包含在該計算系統內的GPU 110上的一個或更多應用程式之間的軟體與硬體的各種層。在圖4的實施例中,有二種不同的處理單元類型,CPU 102以及GPU 110。此外,二個應用程式正運行在該計算系統上-第一應用程式402A以及第二應用程式402B。CPU102提供了應用程式402所要求的主要功能性。舉例而言,CPU 102可包含多個核心412A-N,其中,第一應用程式402A主要地運行在第一核心412A上,且第二應用程式402B主要地運行在第二核心412N 上。在運行的過程中,應用程式402可產生多個工作404A-D以在GPUllO而非CPU 102上執行。工作404可包含數據平行處理工作(例如,圖形處理工作、一般計算工作等等),GPU 110可能可以在軟體中以快於CPU 102的方式執行該數據平行處理工作。各工作404包含由該應用程式402所明確指定的該優先級類型(如同圖3A及3B中所顯示的工作中所包含的優先級類型)。在習知系統中,OS排程器將以連續的方式將工作404提供給單一命令緩衝區,且習知的GPU將連續地處理該工作。不同於此等習知系統,OS排程器310依據該應用程式402所明確指定的優先級類型將各工作404提供給多個工作緩衝區420A-N中之一者。舉例而言,OS排程器310提供第一類工作(例如,高優先級工作)給第一命令緩衝區420A,第二類工作(例如,圖形處理工作)給第二命令緩衝區420B等等。GPU 110包含多個虛擬引擎432A-N,其各者組構成用以服務命令緩衝區420A-N中的一者。舉例而言,第一虛擬引擎432A組構成用以服務第一命令緩衝區420A;第二虛擬引擎432B組構成用以服務第二命令緩衝區420B ;以及第N虛擬引擎432N組構成用以服務第N命令緩衝區420N。如上所述,來自虛擬引擎432的工作再(實質上地)同時由著色器核心214執行。在一實施例中,GPU 110的排程模塊434基於至少下列情況將針對由著色器核心214所執行的工作進行排程(i)由應用程式402所明確說明的優先級類型;(ii)由虛擬引擎432所處理的工作404之間的相對優先級;以及(iii)著色器核心214內資源的可用性。舉例而言,排程模塊434可基於需求、優先級及/或預設的限制在平行的工作404間分割該著色器核心214的資源-同時暫時性地使工作404中的任何一者能夠完全地耗用GPU 110的資源。通過在著色器214中執行二個或更多不同的處理工作串流,GPU 110提供了在沒有關聯於儲存、交換和清除關於上下文切換的數據的開銷(overhead)下的上下文切換的低延遲好處。五、範例計算機實施本發明的實施例可利用硬體、軟體或其組合據以實施,且可在一個或更多計算機系統或其它處理系統中被實施。一計算機系統500的範例顯示在圖5。計算機系統500包含一個或更多處理器,例如處理器504。處理器504可為通用處理器(例如,CPU 102)或專用處理器(例如,GPU 110)。處理器504連接至通訊基礎設施(communication infrastructure) 506 (例如,通信總線、交叉匯流條(corss-over bar)或網絡)。各種軟體的實施例就此範例計算機系統來描述。在閱讀本說明後,如何使用其它計算機系統及/或架構以實施本發明對於熟習本領域者而言將變得清楚明白。計算機系統500包含顯示接口 502以發送圖形、文字以及其它來自通訊基礎設施506 (或來自未圖標的框架緩衝器(frame buffer))的數據以顯示在顯示單元530上。計算機系統500亦包含主內存508,較佳地是隨機訪問內存(random accessmemory, RAM),且復可包含輔助內存510。舉例而言,該輔助內存510可包含硬碟機512及/或可移式儲存裝置514,以軟盤機、磁帶機、光碟機等等為代表。該可移式儲存裝置514以眾所周知的方法讀取及/或寫入可移式儲存單元518。可移式儲存單元518表示為軟盤、磁帶、光碟等等,其由可移式儲存裝置514讀取及寫入。如將被了解的,該可移式儲存單元518包含計算機可使用儲存媒體,具有儲存在其中的計算機軟體及/或數據。在替代的實施例中,輔助內存510可包含其它相似的裝置以令電腦程式或其它指令可被加載至計算機系統500中。此等裝置可包含,例如,可移式儲存單元522以及接口520。此範例可包含程序儲存匣(program cartridge)及儲存匣接口(例如在視訊遊戲裝置中所發現者)、可移式記憶晶片(例如,可擦除可編程只讀存儲器(erasable programmableread only memory, EPROM)或可編程只讀存儲器(programmable read only memory,PROM))與伴隨的插座以及其它可移式儲存單元522以及接口 520,其令軟體及數據由可移式儲存單元522傳輸至計算機系統50 0。計算機系統500亦可包含通信接口 524。通信接口 524令軟體及數據在計算機系統500與外部裝置間傳輸。通信接口 524的範例可包含數據機、網絡接口(例如,乙太網絡卡)、通訊埠、個人計算機記憶卡國際協會(Personal Computer Memory CardInternational Association,PCMCIA)插槽及卡等等。透過通信接口 524傳輸的軟體及數據為信號528的形式,其可為電子、電磁、光學或其它能夠被通信接口 524所接收的訊號。該訊號528透過通信路徑(例如,頻道)526提供給通信接口 524。該頻道526攜帶訊號528且可使用電線(wire)或電纜(cable)、光纖、電話線、蜂巢式鏈(cellular link)、無線電頻率(radio frequency, RF)鏈以及其它通信頻道。在本文件中,該用語「計算機可讀取儲存媒體」是用來一般指例如可移式儲存裝置514以及安裝在硬碟機512中的硬碟的媒體。這些電腦程式產品提供軟體給計算機系統500。電腦程式(亦可稱為計算機控制邏輯)是儲存在主內存508及/或輔助內存510中。電腦程式亦可透過通信接口 524以接收。如本文中所討論者,當此等電腦程式被執行時,其使該計算機系統500能夠執行本發明的特徵。特別是,當此等電腦程式被執行時,其使該處理器504能夠執行本發明的特徵。因此,此等電腦程式代表該計算機系統500的控制器。 在一實施例中,該軟體可儲存在電腦程式產品且使用可移式儲存裝置514、硬碟機512或通信接口 524加載至計算機系統500中。當該控制邏輯(軟體)由該處理器504所執行時,致使該處理器504執行如本文所述的本發明的實施例的功能。六、範例軟體實施除了處理單元(例如,CPU 102及/或GPU 110)的硬體實施之外,此等處理單元亦可被實施在配置的軟體中,例如,在組構成用以儲存該軟體(例如,計算機可讀取程序編碼)的計算機可讀取媒體中。該計算機編碼導致本發明的實施例的可能(enablement),包含下列實施例(i)本文所敘述的該系統的功能及技術(例如,提供工作給GPU 110、排程在GPU 110中的工作、執行在GPU 110中的工作等等);(ii)本文所敘述的該系統的製造及技術(例如,GPU 110的製造);或(iii)本文所敘述的該系統的功能與製造的組合及技術。舉例而言,該軟體可透過一般程序語言(例如,C或C++)、包含Verilog HDL>VHDL> Altera HDL(AHDL)等等的硬體描述語言(hardware-description languages,HDL)或其它可用的編程及/或簡圖擷取(schematic-capture)工具(例如,電路擷取(circuit-capture)工具)加以完成。該程序編碼可被配置在任何已知的計算機可讀取媒體中,包含半導體、磁碟或光碟(例如,CD-ROM、DVD-ROM)。同樣地,該編碼可透過包含網際網絡(the Internet)和網際網路(internets)的通信網路傳輸。應該了解到由該系統所完成的功能及/或所提供的結構以及上述的技術可被表現在核心(例如,GPU核心)中,該核心以程序編碼實施並且可被轉換為作為集成電路產品的一部份的硬體。七、結論應了解,系意圖以具體實施方式
部分而非發明內容與摘要部分解釋權利要求。該發明內容與摘要部分可闡明一個或更多但並非所有發明人所思及的本發明的範例實施例,且因此,並非意欲以任何方式限制本發明以及所附加的權利要求。
權利要求
1.一種處理單元,包括 多個虛擬引擎,組構成用以(i)接收來自作業系統(OS)的實質上彼此平行的多個工作,以及(ii)加載關聯於該多個工作的每一個的狀態數據集;以及 著色器核心,組構成基於關聯於該多個工作的每一個的該狀態數據集以執行該實質上平行的多個工作。
2.如權利要求I所述的處理單元,其中,該著色器核心包括 第一多個處理組件,組構成基於關聯於該第一工作的第一狀態數據集以執行第一工作;以及 第二多個處理組件,組構成基於關聯於該第二工作的第二狀態數據集以執行第二工 作。
3.如權利要求I所述的處理單元,其中,該多個虛擬引擎包括(i)組構成用以接收第一類工作的第一隊列以及(ii)組構成用以接收第二類工作的第二隊列。
4.如權利要求3所述的處理單元,其中,該第一類工作包括低延遲工作且該第二類工作包括經常延遲工作。
5.如權利要求3所述的處理單元,其中,該第一類工作包括圖形處理工作且該第二類工作包括一般計算工作。
6.如權利要求I所述的處理單元,還包括 排程模塊,用以排程將發出給該著色器核心的該多個工作。
7.一種包括含有指令的計算機可讀取儲存媒體的電腦程式產品,該指令若在計算裝置上執行時,則界定一處理單元,該處理單元包括 多個虛擬引擎,組構成用以(i)接收來自作業系統(OS)的實質上彼此平行的多個工作,以及(ii)加載關聯於該多個工作的每一個的狀態數據集;以及 著色器核心,組構成基於關聯於該多個工作的每一個的該狀態數據集以執行該實質上平行的多個工作。
8.如權利要求7所述的電腦程式產品,其中,該著色器核心包括 第一多個處理組件,組構成基於關聯於該第一工作的第一狀態數據集以執行第一工作;以及 第二多個處理組件,組構成基於關聯於該第二工作的第二狀態數據集以執行第二工作。
9.如權利要求7所述的電腦程式產品,其中,該多個虛擬引擎包括(i)組構成用以接收第一類工作的第一隊列以及(ii)組構成用以接收第二類工作的第二隊列。
10.如權利要求9所述的電腦程式產品,其中,該第一類工作包括低延遲工作且該第二類工作包括經常延遲工作。
11.如權利要求9所述的電腦程式產品,其中,該第一類工作包括圖形處理工作且該第二類工作包括一般計算工作。
12.如權利要求7所述的電腦程式產品,其中,該處理單元還包括 排程模塊,用以排程將發出給該著色器核心的該多個工作。
13.一種計算系統,包括 內存;處理單元;以及 總線,耦合至該內存及該處理單元,其中,該處理單元包括 多個虛擬引擎,組構成用以(i)接收來自作業系統(OS)的實質上彼此平行的多個工作,以及(ii)加載關聯於該多個工作的每一個的狀態數據集;以及 著色器核心,組構成基於關聯於該多個工作的每一個的該狀態數據集以執行該實質上平行的多個工作。
14.如權利要求13所述的計算系統,其中,該著色器核心包括 第一多個處理組件,組構成基於關聯於該第一工作的第一狀態數據集以執行第一工作;以及 第二多個處理組件,組構成基於關聯於該第二工作的第二狀態數據集以執行第二工作。
15.如權利要求13所述的計算系統,其中,該多個虛擬引擎包括(i)組構成用以接收第一類工作的第一隊列以及(ii)組構成用以接收第二類工作的第二隊列。
16.如權利要求15所述的計算系統,其中,該第一類工作包括低延遲工作且該第二類工作包括經常延遲工作。
17.如權利要求15所述的計算系統,其中,該第一類工作包括圖形處理工作且該第二類工作包括一般計算工作。
18.如權利要求13所述的計算系統,其中,該處理單元還包括 排程模塊,用以排程將發出給該著色器核心的該多個工作。
19.一種用以在處理單元中處理工作的計算機實行方法,包括 接收來自作業系統(OS)的彼此平行的多個工作; 加載關聯於該多個工作的每一個的狀態數據集;以及 在著色器核心中基於關聯於該多個工作的每一個的該狀態數據集以執行該實質上平行的多個工作。
20.如權利要求19所述的計算機實行方法,其中,該執行包括 基於關聯於第一工作的第一狀態數據集以執行在該著色器核心的第一多個處理組件中的該第一工作;以及 基於關聯於第二工作的第二狀態數據集以執行在該著色器核心的第二多個處理組件中的該第二工作。
21.如權利要求19所述的計算機實行方法,其中,該接收包括 使第一類工作隊列於第一隊列;以及 使第二類工作隊列於第二隊列。
22.如權利要求21所述的計算機實行方法,其中,該第一類工作包括低延遲工作且該第二類工作包括經常延遲工作。
23.如權利要求21所述的計算機實行方法,其中,該第一類工作包括圖形處理工作且該第二類工作包括一般計算工作。
24.如權利要求19所述的計算機實行方法,還包括 通過該處理單元的排程模塊,排程將發出給該著色器核心的該多個工作。
25.一種用以提供工作給處理單元的計算機實行方法,包括接收來自一個或更多應用程式的多個工作,其中,各個工作包含優先類型的指示;以及 提供該多個工作及關聯於各個工作的該優先類型的指示至該處理單元。
全文摘要
一種包括多個虛擬引擎以及著色器核心的處理單元。該多個虛擬引擎組構成用以(i)接收來自作業系統(operation system,OS)的實質上彼此平行的多個工作,以及(ii)加載關聯於該多個工作的每一個的狀態數據集。該著色器核心組構成基於關聯於該多個工作的每一個的狀態數據集以執行該實質上平行的多個工作。該處理單元也可包括用以排程將發出給該著色器核心的該多個工作的排程模塊。
文檔編號G06T1/20GK102640115SQ201080049174
公開日2012年8月15日 申請日期2010年9月3日 優先權日2009年9月3日
發明者M·曼託爾, R·邁凱利 申請人:先進微裝置公司