<listing id="vjp15"></listing><menuitem id="vjp15"></menuitem><var id="vjp15"></var><cite id="vjp15"></cite>
<var id="vjp15"></var><cite id="vjp15"><video id="vjp15"><menuitem id="vjp15"></menuitem></video></cite>
<cite id="vjp15"></cite>
<var id="vjp15"><strike id="vjp15"><listing id="vjp15"></listing></strike></var>
<var id="vjp15"><strike id="vjp15"><listing id="vjp15"></listing></strike></var>
<menuitem id="vjp15"><strike id="vjp15"></strike></menuitem>
<cite id="vjp15"></cite>
<var id="vjp15"><strike id="vjp15"></strike></var>
<var id="vjp15"></var>
<var id="vjp15"></var>
<var id="vjp15"><video id="vjp15"><thead id="vjp15"></thead></video></var>
<menuitem id="vjp15"></menuitem><cite id="vjp15"><video id="vjp15"></video></cite>
<var id="vjp15"></var><cite id="vjp15"><video id="vjp15"><thead id="vjp15"></thead></video></cite>
<var id="vjp15"></var>
<var id="vjp15"></var>
<menuitem id="vjp15"><span id="vjp15"><thead id="vjp15"></thead></span></menuitem>
<cite id="vjp15"><video id="vjp15"></video></cite>
<menuitem id="vjp15"></menuitem>

CPU/GPU同步機制的制作方法

文檔序號:11154300閱讀:658來源:國知局
CPU/GPU同步機制的制造方法與工藝



背景技術:

這一般地涉及具有通用處理器和圖形處理單元的計算機。

運行在通用或中央處理單元上由用戶應用所使用的存儲器和由圖形處理單元所使用的處理器通常是分開的。圖形處理單元驅動器將數據從用戶空間復制到驅動器存儲器以在圖形處理單元上進行處理。在共享的虛擬存儲器模型中,數據沒有被復制到圖形處理單元,而是相反地,它在圖形處理單元和中央處理單元之間共享。

當前,在多線程應用中,共享的數據由稱為互斥的鎖來保護。每個想要訪問共享數據的線程都必須首先對相對應的互斥上鎖以阻止其它線程訪問該互斥。此上鎖可以通過鎖上的“回旋(spinning)”來進行,但這個技術從功率和性能的角度效率不高。

為了優化中央處理單元,操作系統提供允許線程休眠直到有互斥可用、然后當互斥被解鎖時通知其它線程的系統調用。但這個機制只對于運行在中央處理單元核上的線程生效。

附圖說明

圖1是本發明的一個實施例的示意圖;

圖2是根據本發明的一個實施例的擴展線程和存儲器模型;

圖3是根據本發明的一個實施例的頁錯誤處理的流程圖;以及

圖4是一個實施例的系統圖。

具體實施方式

在一個實施例中,對每個運行在圖形處理器上的線程群,可以創建運行在中央處理單元上的輔助影子線程。當運行在圖形處理單元上的線程想要對互斥上鎖時,如果它想要等待直到該線程由其它任務釋放,則圖形線程向中央處理單元上的影子線程發送請求。中央處理單元上的影子線程向操作系統發出相對應的系統調用。當操作系統將鎖給影子線程時,影子線程向圖形處理單元上的線程發送通知。

當在本申請中使用術語圖形處理單元時,應理解圖形處理單元可以是或可以不是單獨的集成電路。本發明對圖形處理單元和中央處理單元集成到一個集成電路的情形適用。如此處所使用的,處理器或處理單元可以是處理器、控制器或協處理器。

參考圖1,在基于處理器的系統10中,主/中央處理單元16與圖形處理單元18通信。主/中央處理單元16可以是包括硬連線或移動設備的任何基于處理器的系統的一部分。舉幾個示例,移動設備的示例包括蜂窩電話、膝上型計算機、平板計算機和移動因特網設備。主中央處理單元16包括用戶應用20,它向影子線程22提供控制信息。然后影子線程22向圖形處理單元驅動器26通信關于同步和控制信息的同步。影子線程也和主操作系統24通信。

如圖1中所示,用戶級別12包括影子線程22和用戶應用20,而內核級別14包括主操作系統24和圖形處理單元驅動器26。圖形處理單元驅動器26是圖形處理單元的驅動器,即使該驅動器駐留在中央處理單元16中。

在用戶級別12中,圖形處理單元18包括g線程(gthread)28,它向操作系統(pOS)30發送控制和同步消息并從操作系統30接收消息。g線程是運行在圖形處理單元上的用戶代碼,與運行在中央處理單元上的父線程共享虛擬存儲器。操作系統30可以是相對小的操作系統,它運行在圖形處理單元上,負責圖形處理單元異常。作為一個示例,它相對于主操作系統24是小的。

用戶應用20是運行在中央處理單元16上的任何用戶進程。用戶應用20派生圖形處理單元18上的線程。

擴展線程庫或XTL是創建和管理圖形處理單元上的用戶線程的擴展。這個庫為每個g線程創建影子線程并具有用于同步的庫函數。

用戶應用使用傳統多線程模型的擴展將計算卸載到圖形處理單元,擴展諸如:

xthread_create(thread,attr,gpu_worker,arg)。

在圖形處理單元上創建的g線程或工作者線程與父線程共享虛擬存儲器。在可以使用所有標準的過程間同步機制諸如互斥和信號機的意義上,它以與常規線程相同的方式行為。同時,在主中央處理單元16上創建新影子線程。這個影子線程充當異常處理單元的代理和中央處理單元與圖形處理單元上的線程之間的同步。

在一些實施例中,父線程、主影子線程和圖形處理單元工作者線程可以共享虛擬存儲器,如圖2中所示。主/中央處理單元16包括為影子線程22生成xthread_create()的父線程32。影子線程22訪問影子堆棧,影子堆棧是進程地址空間36中的私有地址空間。父線程32也訪問存儲器描述符34和主堆棧,主堆棧是進程地址空間36內的私有地址空間。存儲器描述符34也可以與g線程工作者28通信。g線程工作者28可以訪問進程空間36內的g線程代碼以及共享數據區和私有g線程堆棧。較上的框中的材料對應于進程模型38,并且較下的框相對應于存儲器模型40。

參考圖3,同步算法可以用硬件、軟件和/或固件來實現。在軟件實施例中,算法可以作為存儲在非瞬態計算機可讀介質上的計算機可執行指令來實現,介質諸如光學、半導體或磁存儲設備。在圖3中,中央處理單元16的主操作系統24、影子線程22、驅動器26和圖形處理單元18中的操作系統30和環3 57的流程示為并行的垂直流程路徑,且一般由水平箭頭指示的它們之間的交互。

繼續在圖3中,在一個實施例中,在環3,g線程28試圖通過回旋(spinning)一小段時間來從用戶空間獲取互斥,如列57中的框60中所指示的。如果成功地獲取了互斥,如菱形61中所確定的,則程序繼續,如框62中所指示的。如果由于互斥已經由另一線程上鎖而沒有被獲取,則用ACQUIRE操作碼進行對操作系統30的調用(SYSCALL)。

在操作系統30中接收SYSCALL。操作系統30向驅動器發送稱為PassHostCommand(通過主機命令)的消息。PassHostCommand包括SYSCALL的操作碼和地址加操作的數據,如框50中所指示的。然后操作系統30將調用線程置為休眠,如框54中所指示的。然后調用線程進入空閑,如框56中所指示的。

中央處理單元16中的驅動器26使用傳輸命令將消息傳輸給Xthread 22。在Xthread 22中,接收傳輸命令。Xthread等待來自驅動器的這個消息,如框44中所指示的。然后Xthread執行對互斥上鎖,如框46中所指示的,并可以包括對主操作系統24的SYSCALL。操作系統24等待,直到獲取了互斥(即,存在上下文切換),如42處所指示的。在獲取了互斥之后,Xthread向驅動器26發送恢復執行命令,然后等待來自驅動器的下一消息,如框48中所指示的。

驅動器26接收恢復執行命令并向圖形處理單元中的操作系統30發送PassGpuCommand(通過Gpu命令)消息。PassGpuCommand可以包括不帶數據的resume_execution的操作碼,如框52中所指示的。

操作系統30喚醒線程,如框58中所指示的,并向g線程28發送來自SYSCAL的恢復。結果是,g線程28繼續工作,如框62中所指示的。影子線程也可以用來釋放互斥。

圖4中所示的計算機系統130可以包括通過總線104耦合到芯片組核邏輯110的硬驅動器134和可移動介質136。鍵盤和鼠標120或其它傳統組件可以經由總線108耦合到芯片組核邏輯。在一個實施例中,核邏輯可以經由總線105耦合到圖形處理器112,和耦合到中央處理器100。圖形處理器112還可以通過總線106耦合到幀緩沖器114。幀緩沖器114可以通過總線107耦合到顯示屏幕118。在一個實施例中,圖形處理器112可以是使用單指令多數據(SIMD)架構的多線程、多核并行處理器。

在軟件實現的情況中,相關代碼可以存儲在任何適合的半導體、磁或光學存儲器中,包括主存儲器132(如139處所指示的)或圖形處理器內任何可用的存儲器。因此,在一個實施例中,執行圖3的序列的代碼可以存儲在非瞬態機器或計算機可讀介質(諸如存儲器132和/或圖形處理器112和/或中央處理器100)中,并在一個實施例中可以由處理器100和/或圖形處理器112執行。

圖3是流程圖。在一些實施例中,在此流程圖中描繪的序列可以用硬件、軟件或固件實現。在軟件實施例中,非瞬態計算機可讀介質,諸如半導體存儲器、磁存儲器或光學存儲器,可以用來存儲指令并可以由處理器執行以實現圖3中所示的序列。

此處描述的圖形處理技術可以用各種硬件架構實現。例如,圖形功能可以集成在芯片組中。替換性地,可以使用離散圖形處理器。如又一實施例,圖形功能可以通過通用處理器(包括多核處理器)來實現。

貫穿本說明書的對“一個實施例”和“實施例”的引用意味著結合實施例所描述的特定特征、結構或特性包括在涵蓋于本發明的至少一個實現中。因此,短語“一個實施例”或“在實施例中”的出現不必全都指的是同一實施例。而且,除了所示的特定實施例之外,特定特征、結構和特性還可以用其它適合的形式建立,且所有這樣的形式都可以涵蓋于本申請的權利要求書中。

盡管參考有限數量的實施例描述了本發明,本領域的技術人員從中可以理解眾多修改和變化。所附權利要求書旨在覆蓋所有這樣落入本發明的真正的精神和范圍內的修改和變化。

當前第1頁1 2 3 
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
韩国伦理电影