專利名稱:使圖形處理單元之間的高效切換更容易的制作方法
技術(shù)領(lǐng)域:
公開的實(shí)施例涉及計(jì)算機(jī)系統(tǒng)中的圖形處理單元(GPU)之間的切換技術(shù)。更具體地說,公開的實(shí)施例涉及“預(yù)熱” GPU以使GPU的快速轉(zhuǎn)換更容易的技術(shù)。
背景技術(shù):
計(jì)算性能的進(jìn)步已使計(jì)算機(jī)系統(tǒng)能夠在較高的傳輸速率下,有效地處理大量的圖形數(shù)據(jù)。例如,計(jì)算機(jī)系統(tǒng)通常用于渲染視頻游戲的復(fù)雜場景,和處理視頻流和數(shù)字照片。 為了使這種圖形數(shù)據(jù)的快速處理更容易,計(jì)算機(jī)系統(tǒng)一般包括驅(qū)動圖形顯示設(shè)備,比如計(jì)算機(jī)系統(tǒng)監(jiān)視器的專用圖形處理器(稱為“圖形處理單元”(GPU))。不幸的是,強(qiáng)大的GPU消耗大量的電力,并會引起散熱問題。這種問題的一種解決方案是通過從提供較高性能的高功率GPU切換到性能較低的低功率GPU,在低活性時(shí)期內(nèi)節(jié)省電力。不過,作為切換操作的準(zhǔn)備,初始化GPU的處理包括相當(dāng)大量的配置操作,這會消耗相當(dāng)大量的時(shí)間。例如,在初始化GPU的處理過程中,需要初始化GPU的模式設(shè)置,需要填充顏色查找表,并且需要重新配置相關(guān)的驅(qū)動器。這些配置操作會導(dǎo)致相當(dāng)大的計(jì)算機(jī)系統(tǒng)響應(yīng)延遲,這會使用戶感到煩惱。因此,需要一種不存在上述問題的便于在GPU之間進(jìn)行高效切換的技術(shù)。
發(fā)明內(nèi)容
公開的實(shí)施例提供一種使驅(qū)動顯示器的圖形處理單元(GPU)之間的無縫切換更容易的系統(tǒng)。在操作中,所述系統(tǒng)接收從使用第一 GPU切換到使用第二 GPU以驅(qū)動顯示器的請求。響應(yīng)所述請求,系統(tǒng)使用在后臺運(yùn)行的內(nèi)核線程來配置第二 GPU,以為驅(qū)動顯示器作準(zhǔn)備。在內(nèi)核線程配置第二 GPU的時(shí)候,用戶線程繼續(xù)運(yùn)行窗口管理器,窗口管理器進(jìn)行與服務(wù)用戶請求相關(guān)的操作。當(dāng)?shù)诙?GPU的配置完成時(shí),系統(tǒng)把顯示器的信號源從第一 GPU切換到第二 GPU。在一些實(shí)施例中,配置第二GPU包括首先使第二GPU加電,以及隨后執(zhí)行關(guān)于第二GPU的硬件配置操作。在一些實(shí)施例中,進(jìn)行硬件配置操作包括重新初始化第二 GPU的驅(qū)動器;進(jìn)行顯示器探測操作以確定顯示器的特性;把模式設(shè)置從第一 GPU復(fù)制到第二 GPU ;和把至少一個(gè)顏色查找表(CLUT)從第一 GPU復(fù)制到第二 GPU。在一些實(shí)施例中,在把信號源從第一 GPU切換到第二 GPU之前,用戶線程執(zhí)行精簡代碼路徑,所述精簡代碼路徑進(jìn)行軟件配置操作,以初始化與窗口管理器和第二 GPU相關(guān)的應(yīng)用可視數(shù)據(jù)結(jié)構(gòu),以及還為第二 GPU呈現(xiàn)第一圖像。在一些實(shí)施例中,執(zhí)行精簡代碼路徑包括重復(fù)內(nèi)核線程先前進(jìn)行的一些操作以配置第二 GPU,其中重復(fù)的操作將已由內(nèi)核線程完成,或者將訪問高速緩存的值,從而會更快地執(zhí)行。在一些實(shí)施例中,在信號源被切換之后,系統(tǒng)使用內(nèi)核線程拆除(tear down)第一GPU的配置。所述拆除處理可包括除去與窗口管理器和第一 GPU相關(guān)的應(yīng)用可視數(shù)據(jù)結(jié)構(gòu);除去與第一 GPU相關(guān)的驅(qū)動器狀態(tài)信息;和從第一 GPU去除電力。 在一個(gè)實(shí)施例中,第一 GPU是被集成到處理器芯片集中的低功率GPU,而第二 GPU是駐留在離散GPU芯片上的高功率GPU,或者反之亦然。在另一個(gè)實(shí)施例中,第一 GPU和第二 GPU具有大體相同的電路和大體相似的能力。在另一個(gè)實(shí)施例中,第一 GPU是運(yùn)行圖形代碼的通用處理器,而第二 GPU是專用圖形處理器,或者反之亦然。另一個(gè)實(shí)施例還提供一種從使用第一 GPU切換成使用第二 GPU以驅(qū)動顯示器的系統(tǒng)。在操作中,在線程配置第二GPU以驅(qū)動顯示器的時(shí)候,所述系統(tǒng)從第一GPU驅(qū)動顯示器。之后,在第二 GPU的配置完成之后,所述系統(tǒng)把驅(qū)動顯示器的信號源從第一 GPU切換到第二GPU。
圖I圖解說明按照一個(gè)實(shí)施例,能夠在驅(qū)動相同顯示器的不同圖形源之間切換的計(jì)算機(jī)系統(tǒng)。圖2圖解說明按照一個(gè)實(shí)施例的圖形多路復(fù)用器的結(jié)構(gòu)。圖3表示圖解說明按照一個(gè)實(shí)施例,在GPU之間切換時(shí)涉及的操作的流程圖。圖4表示按照一個(gè)實(shí)施例,在GPU之間切換時(shí)涉及的操作的時(shí)間表。圖5表示圖解說明按照一個(gè)實(shí)施例,由內(nèi)核線程進(jìn)行的硬件配置操作的流程圖。圖6表示圖解說明按照一個(gè)實(shí)施例,由用戶線程進(jìn)行的軟件配置操作的流程圖。圖7表示圖解說明按照一個(gè)實(shí)施例,在拆除GPU的配置時(shí)涉及的操作的流程圖。圖8表示按照一個(gè)實(shí)施例,在GPU之間切換的處理的高級流程圖。
具體實(shí)施例方式概述在支持多個(gè)GPU的現(xiàn)有計(jì)算機(jī)系統(tǒng)中,當(dāng)決定切換GPU時(shí),系統(tǒng)一般使用通用重新配置機(jī)制來初始化新的GPU。所述通用重新配置機(jī)制執(zhí)行當(dāng)插入新的外部監(jiān)視器時(shí)執(zhí)行的相同代碼路徑。不過,和新的外部監(jiān)視器的情況不同,GPU切換不涉及改變顯示器。在所述實(shí)施例中,這個(gè)事實(shí)使系統(tǒng)能夠“預(yù)熱”新的GPU,這涉及進(jìn)行許多配置假設(shè),和在把切換通知窗口管理器之前,在GPU之間復(fù)制一些配置信息(例如,顏色配置文件/信息)。為了向用戶隱瞞這些配置操作的效果,配置操作可由在后臺運(yùn)行的內(nèi)核線程進(jìn)行。在內(nèi)核線程在后臺進(jìn)行配置操作的時(shí)候,窗口管理器可繼續(xù)在前臺正常運(yùn)行。這允許系統(tǒng)在“預(yù)熱”過程中,繼續(xù)與用戶交互。由于內(nèi)核線程預(yù)先把GPU配置成彼此非常接近,因此進(jìn)行實(shí)際的GPU切換涉及執(zhí)行更簡單的“精簡代碼路徑”,所述更簡單的“精簡代碼路徑”被調(diào)整以便進(jìn)行切換。例如,在預(yù)熱過程中,內(nèi)核線路能夠高速緩存關(guān)于當(dāng)前運(yùn)行的GPU的數(shù)據(jù)(例如,視頻卡的種類、支持的模式)。這允許精簡代碼路徑隨后訪問高速緩存的數(shù)據(jù),而不是向當(dāng)前運(yùn)行的GPU詢問所述數(shù)據(jù)。注意高速緩存指示GPU支持哪些模式的信息是有利的,因?yàn)橄到y(tǒng)需要知道如何設(shè)置新的GPU中的模式,以匹配當(dāng)前運(yùn)行的GPU中的模式。這可防止停轉(zhuǎn),因?yàn)橄到y(tǒng)不會在新的GPU在加電的時(shí)候,嘗試訪問新的GPU。圖形驅(qū)動器也已被改變,以使用該操作是GPU切換的事實(shí),從而消除當(dāng)插入新的外部監(jiān)視器時(shí)需要的,但是在GPU切換期間不需要的某些初始化操作。通過使用“預(yù)熱”過程和精簡代碼路徑來進(jìn)行GPU切換,不再需要使這兩個(gè)GPU持續(xù)一定長度的時(shí)間(例如,2-4秒)處于鏡像狀態(tài),在所述一定長度的時(shí)間內(nèi),客戶端應(yīng)用實(shí)際上能夠覺察鏡像狀態(tài),以及用戶能夠感覺對所驅(qū)動的顯示器和與窗口管理器的交互時(shí)的干擾。注意一些公開的實(shí)施例實(shí)際上確實(shí)使GPU處于鏡像狀態(tài),不過僅僅持續(xù)顯示第一圖像和切換所需的時(shí)間(例如,大約16毫秒)。此外,在這段時(shí)間內(nèi),系統(tǒng)封鎖客戶端,從而客戶端決不會注意到鏡像狀態(tài)。由于在一些實(shí)施例中,客戶端僅僅被封鎖大約16毫秒,因此用戶幾乎感覺不到對顯示器或者用戶與窗口管理器的交互時(shí)的干擾。相反,在現(xiàn)有系統(tǒng)中,在GPU切換期間,窗口管理器會被阻斷2-4秒。下面更詳細(xì)地說明這種新的更高效的GPU切換處理,不過我們首先說明一些相關(guān)的計(jì)算機(jī)系統(tǒng)硬件。
計(jì)算機(jī)系統(tǒng)圖I圖解說明按照一個(gè)實(shí)施例,能夠在驅(qū)動顯示器的兩個(gè)圖形源之間切換的計(jì)算機(jī)系統(tǒng)100。參見圖1,所述兩個(gè)圖形源包括都能夠獨(dú)立驅(qū)動顯示器114的(I)離散GPU110,和⑵嵌入式GPU 118。驅(qū)動顯示器114的圖形源由在這兩個(gè)圖形源之間進(jìn)行選擇的GPU多路復(fù)用器(GMUX) 120確定。因此,計(jì)算機(jī)系統(tǒng)100可以使用GMUX 120根據(jù)當(dāng)前操作條件選擇圖形源。在操作中,來自離散GPU 110的顯示流122,和來自嵌入式GPU118的顯示流124都饋送到GMUX 120的數(shù)據(jù)輸入端。源選擇信號126饋送到GMUX 120的選擇輸入端,并確定這兩個(gè)圖形源中的哪一個(gè)將驅(qū)動顯示器114。在圖解說明的實(shí)施例中,源選擇信號126由橋接芯片104產(chǎn)生,橋接芯片104包括用于生成源選擇信號126的特定邏輯電路(注意,源選擇信號126也可用除橋接芯片104以外的邏輯塊生成。例如,源選擇信號126可由一個(gè)或多個(gè)處理單元102產(chǎn)生)。來自選擇的圖形源的顯示流隨后饋送到顯示器114中。在一個(gè)實(shí)施例中,離散GPU 110和嵌入式GPU 118通過數(shù)據(jù)路徑128通信,以使它們的顯示流同步。注意使顯示流同步可涉及使各自的定時(shí)信號和各自的數(shù)據(jù)信號同步。在一個(gè)實(shí)施例中,離散GPU 110是相對于嵌入式GPU118(消耗少量電力的低性能GPU),消耗相當(dāng)大量的電力的高性能GPU。在這個(gè)實(shí)施例中,當(dāng)圖形處理負(fù)載較輕時(shí),系統(tǒng)從使用離散GPU 110切換成使用嵌入式GPU 118來驅(qū)動顯示器114,以及隨后使離散GPU 110斷電,從而節(jié)省電力。另一方面,當(dāng)圖形處理負(fù)載重新變重時(shí),系統(tǒng)把圖形源從嵌入式GPU118切換回離散GPU 110。雖然我們說明了包括離散GPU和集成GPU的系統(tǒng),不過公開的技術(shù)通??稍诎瑑蓚€(gè)或更多個(gè)GPU (其中每個(gè)GPU能夠獨(dú)立驅(qū)動顯示器)的任何計(jì)算機(jī)系統(tǒng)中起作用。此夕卜,這些多個(gè)GPU可具有不同的操作特性和功耗水平。因此,公開的技術(shù)并不局限于圖I中圖解說明的具體實(shí)施例。另外注意,在圖形源之間切換的上述處理不涉及關(guān)閉或重新初始化計(jì)算機(jī)系統(tǒng)。結(jié)果,與如果需要重新初始化的情況相比,切換處理花費(fèi)相當(dāng)少的時(shí)間。從而,公開的技術(shù)使圖形源之間的快速和頻繁切換更容易。圖形多路復(fù)用器
圖2圖解說明按照一個(gè)實(shí)施例的圖形多路復(fù)用器120(以上參考圖I所述)的內(nèi)部結(jié)構(gòu)。參見圖2,來自離散GPU 110的顯示流122,和來自嵌入式GPU 118的顯示流124分別饋送到數(shù)據(jù)時(shí)鐘捕獲部件205和210。數(shù)據(jù)時(shí)鐘捕獲部件205和210去串行化(de-serialize)顯示流122和124,以及還提取相應(yīng)的數(shù)據(jù)時(shí)鐘信號221和222。這些數(shù)據(jù)時(shí)鐘信號221和222饋送到時(shí)鐘MUX 225,時(shí)鐘MUX225選擇數(shù)據(jù)塊221和222之一,以便轉(zhuǎn)發(fā)給顯示流組裝器240。在一個(gè)實(shí)施例中,GMUX控制器235向時(shí)鐘MUX225提供選擇信號。另一方面,選擇信號236可由其它源提供,諸如由一個(gè)或多個(gè)處理器單元102中的處理器,或者另一個(gè)控制器提供。之后,在數(shù)據(jù)時(shí)鐘被分離的情況下,顯示流 122和124分別饋送到數(shù)據(jù)緩沖器215和220。數(shù)據(jù)緩沖器215和220檢查顯示流122和124,以確定消隱間隔何時(shí)出現(xiàn),并產(chǎn)生各自的消隱間隔信號233和234。數(shù)據(jù)緩沖器215和220還產(chǎn)生饋送到數(shù)據(jù)MUX 230的輸出數(shù)據(jù)流。消隱間隔信號233和234饋送到GMUX控制器235,GMUX控制器235比較消隱間隔信號233和234,以確定在顯示流122和124的消隱間隔之間存在多少重疊(如果有的話)(注意,消隱間隔信號233和234可指示垂直或水平消隱間隔)。如果GMUX控制器235確定消隱間隔信號233和234具有足夠數(shù)量的重疊,那么當(dāng)消隱間隔開始重疊時(shí),GMUX控制器235把選擇信號236置為高電平。這使時(shí)鐘MUX225和數(shù)據(jù)MUX 230在顯示流122和124的消隱間隔重疊的時(shí)期內(nèi),在顯示流122和124之間進(jìn)行切換。由于切換發(fā)生在消隱間隔期間,因此在顯示器114上,切換處理將不明顯。最后,數(shù)據(jù)MUX 230的輸出和選擇的數(shù)據(jù)時(shí)鐘223饋送到顯示流組裝器240,顯示流組裝器240使數(shù)據(jù)流重新串行化,之后把數(shù)據(jù)流發(fā)送給顯示器114。切換處理圖3提供按照一個(gè)實(shí)施例,在GPU之間切換時(shí)涉及的操作的概況。首先,操作系統(tǒng)接收從使用第一 GPU切換到使用第二 GPU作為驅(qū)動顯示器的信號源的請求(步驟302)。根據(jù)圖形工作負(fù)載的增大(或減少),可以發(fā)起該請求。所述請求可由操作系統(tǒng)生成,或者由監(jiān)測圖形工作負(fù)載的后臺進(jìn)程生成。響應(yīng)所述請求,操作系統(tǒng)產(chǎn)生(或者啟動)在后臺運(yùn)行以進(jìn)行關(guān)于第二 GPU的硬件配置操作,從而把第二 GPU準(zhǔn)備成驅(qū)動顯示器的內(nèi)核線程(步驟304)。系統(tǒng)還繼續(xù)用第一 GPU驅(qū)動顯示器。注意,在內(nèi)核線程配置第二 GPU的時(shí)候,操作系統(tǒng)繼續(xù)運(yùn)行用戶線程以運(yùn)行窗口管理器,所述窗口管理器進(jìn)行與服務(wù)用戶請求相關(guān)的操作(步驟306)。之后,在內(nèi)核線程已執(zhí)行關(guān)于第二GPU的硬件配置操作之后,用戶線程執(zhí)行精簡代碼路徑,所述精簡代碼路徑進(jìn)行關(guān)于第二 GPU的軟件配置操作(步驟308)。隨后,操作系統(tǒng)把驅(qū)動顯示器的信號源從第一 GPU切換到第二 GPU (步驟310)。最后,在信號源被切換之后,操作系統(tǒng)使用內(nèi)核線程拆除第一 GPU的配置(步驟312)。在圖4中所示的時(shí)間表中,更詳細(xì)地圖解說明了上述這些配置操作。圖4中的左列圖解說明在前臺執(zhí)行計(jì)算機(jī)系統(tǒng)的窗口管理器的用戶線程402的動作。相反,圖4中的右列圖解說明在后臺執(zhí)行配置和拆除操作的內(nèi)核線程404的動作。如上所述,當(dāng)接收到切換請求時(shí),操作系統(tǒng)使用內(nèi)核線程404為各種硬件配置操作408作預(yù)檢(preflight)。參見在圖5中圖解說明的流程圖,這些硬件配置操作可涉及使第二 GPU加電(步驟502),以及重新初始化第二 GPU的驅(qū)動器(步驟504)。內(nèi)核線程404還進(jìn)行“顯示器探測”操作,以確定正被驅(qū)動的監(jiān)視器的特性(步驟506)。之后,內(nèi)核線程404把各種類型的配置信息從第一 GPU復(fù)制到第二 GPU。例如,內(nèi)核線程404可把模式設(shè)置從第一 GPU復(fù)制到第二 GPU (步驟508),這些模式設(shè)置能夠指定顯示器的分辨率和深度。內(nèi)核線程504還可把顏色查找表(CLUT)的內(nèi)容從第一 GPU復(fù)制到第二 GPU(步驟510)。在內(nèi)核線程404配置 第二 GPU的時(shí)候,用戶線程402繼續(xù)執(zhí)行窗口管理器(對視窗系統(tǒng)來說),窗口管理器進(jìn)行與服務(wù)用戶請求406相關(guān)的操作。在正在進(jìn)行硬件配置操作的時(shí)候,這允許用戶不中斷地與視窗系統(tǒng)交互。當(dāng)內(nèi)核線程404完成硬件配置操作時(shí),它向窗口管理器發(fā)送中斷409。中斷409使窗口管理器執(zhí)行精簡代碼路徑,所述精簡代碼路徑進(jìn)行各種軟件配置操作410。參見圖6中圖解說明的流程圖,這些軟件配置操作可涉及初始化包含第二 GPU的狀態(tài)信息的應(yīng)用可視數(shù)據(jù)結(jié)構(gòu)(步驟602)。所述系統(tǒng)還為第二 GPU呈現(xiàn)第一圖像(步驟604)。注意這些軟件配置操作中的一些操作(不涉及訪問用戶空間中的數(shù)據(jù)結(jié)構(gòu))可能可由內(nèi)核線程404進(jìn)行。注意在GPU之間切換時(shí)進(jìn)行的配置操作不同于在插入新的監(jiān)視器之后進(jìn)行的通用配置操作,因?yàn)樵谇袚Q操作期間,新的幀緩沖器是看不見的,直到發(fā)生切換之后為止。這使一些費(fèi)時(shí)的通用配置操作能夠被省略。例如,由于新的幀緩沖器最初是不可見的,因此不必擦除該幀緩沖器的內(nèi)容。也不必進(jìn)行顏色查找表(CLUT)漸消操作,從而逐漸漸弱和漸強(qiáng)顯不器。系統(tǒng)還可省略向第一 GPU呈遞最后一巾貞,因?yàn)樵谇袚Q過程中,第一 GPU的輸出將被凍結(jié)在倒數(shù)第二幀上。之后,系統(tǒng)從使用第一GPU切換到使用第二GPU作為驅(qū)動顯示器的信號源。在一個(gè)實(shí)施例中,在選擇的消隱間隔內(nèi),第一 GPU的輸出被保持固定,以及選擇的消隱間隔被“伸長”,直到第二GPU進(jìn)入消隱間隔為止,此時(shí)發(fā)生切換操作。這確保切換操作只持續(xù)一幀(約16毫秒)凍結(jié)顯示器,對用戶來說,這幾乎是覺察不到的。之后,在切換完成之后,窗口管理器向內(nèi)核線程404回送中斷412。響應(yīng)中斷412,內(nèi)核線路404進(jìn)行許多操作,以“拆除”第一 GPU414的配置。注意,在進(jìn)行這些拆除操作的時(shí)候,窗口管理器繼續(xù)進(jìn)行與服務(wù)用戶請求416相關(guān)的操作。參見在圖7中圖解說明的流程圖,在拆除操作中,內(nèi)核線程404除去包含與第一GPU相關(guān)的狀態(tài)信息的應(yīng)用可視數(shù)據(jù)結(jié)構(gòu)(步驟702),以及除去與第一 GPU相關(guān)的驅(qū)動器狀態(tài)(步驟704)。內(nèi)核線程404還暫停與第一 GPU相關(guān)的加速器(步驟706)和音頻處理(步驟708)。隨后,內(nèi)核線程404停止并等待應(yīng)用從第一 GPU移除狀態(tài)信息(步驟710)。最后,內(nèi)核線程404去除第一 GPU的電力(步驟712)。出現(xiàn)在圖4的右側(cè)的垂直時(shí)間線圖解說明在一個(gè)實(shí)施例中,使用內(nèi)核線程404如何能有效地向用戶隱瞞切換GPU時(shí)涉及的配置操作。首先,在窗口管理器繼續(xù)服務(wù)用戶請求406的時(shí)候,內(nèi)核線程404進(jìn)行預(yù)檢(也稱為“預(yù)熱”)硬件配置操作408約1000毫秒。之后,窗口管理器執(zhí)行精簡代碼路徑,所述精簡代碼路徑進(jìn)行軟件配置操作410約130毫秒。在該少量時(shí)間(約1/8秒)內(nèi),與用戶的交互會受到影響,不過這幾乎察覺不到。另外,如上所述,切換操作只需要約16毫秒,對用戶來說,這不可能察覺得到。最后,內(nèi)核線程完成拆除處理414需要約400毫秒。不過,在這段時(shí)間內(nèi),窗口管理器能夠服務(wù)用戶請求。高級說明圖8表示圖解說明按照一個(gè)實(shí)施例,在GPU之間切換的處理的高級流程圖。在操作中,在線程配置第二 GPU以驅(qū)動顯示器的時(shí)候,系統(tǒng)從第一 GPU驅(qū)動顯示器(步驟802)。之后,在完成第二 GPU的配置之后,系統(tǒng)把驅(qū)動顯示器的信號源從第一 GPU切換到第二GPU (步驟 804)。只是出于舉例說明的目的,提供了實(shí)施例的上述說明。所述說明并不是詳盡的,也不意圖把本說明局限于公開的形式。因而,對本領(lǐng)域的技術(shù)人員來說,許多修改和變化是顯而易見的。另外,以上的公開并不意圖限制本說明。本說明的范圍由附加的權(quán)利要求限定。此外,提供的上述說明是為了使本領(lǐng)域的技術(shù)人員能夠?qū)崿F(xiàn)和使用公開的實(shí)施例,并且上述說明是在特定應(yīng)用及其要求的上下文中提供的。對本領(lǐng)域的技術(shù)人員來說,對所公開實(shí)施例的各種修改將是顯而易見的,這里定義的一般原理可以適用于其它實(shí)施例和應(yīng)用,而不脫離所公開實(shí)施例的精神和范圍。因此,公開的實(shí)施例并不局限于所示的實(shí)施例,相反應(yīng)被賦予與這里公開的原理和特征一致的最寬廣范圍。在本詳細(xì)說明中描述的數(shù)據(jù)結(jié)構(gòu)和代碼一般保存在計(jì)算機(jī)可讀存儲介質(zhì)上,所述計(jì)算機(jī)可讀存儲介質(zhì)可以是能夠保存供計(jì)算機(jī)系統(tǒng)使用的代碼和/或數(shù)據(jù)的任何裝置或介質(zhì)。計(jì)算機(jī)可讀存儲介質(zhì)包括但不限于易失性存儲器、非易失性存儲器、磁和光存儲裝 置,比如磁盤驅(qū)動器、磁帶、⑶(光盤)、DVD (數(shù)字通用盤或數(shù)字視頻盤),或者目前已知或以后開發(fā)的能夠保存代碼和/或數(shù)據(jù)的其它介質(zhì)。本詳細(xì)說明中描述的方法和處理可被具體體現(xiàn)成能夠保存在如上所述的計(jì)算機(jī)可讀存儲介質(zhì)中的代碼和/或數(shù)據(jù)。當(dāng)計(jì)算機(jī)系統(tǒng)讀取和執(zhí)行保存在計(jì)算機(jī)可讀存儲介質(zhì)上的代碼和/或數(shù)據(jù)時(shí),計(jì)算機(jī)系統(tǒng)執(zhí)行具體體現(xiàn)成數(shù)據(jù)結(jié)構(gòu)和代碼,并保存在計(jì)算機(jī)可讀存儲介質(zhì)內(nèi)的方法和處理。此外,下面說明的方法和處理可包含在硬件模塊中。例如,硬件模塊可包括但不限于專用集成電路(ASIC)芯片、現(xiàn)場可編程門陣列(FPGA)、和目前已知或以后開發(fā)的其它可編程邏輯器件。當(dāng)硬件模塊被啟動時(shí),硬件模塊執(zhí)行包含在硬件模塊內(nèi)的方法和處理。
權(quán)利要求
1.一種從使用第一圖形處理單元(GPU)切換到使用第二 GPU來驅(qū)動顯示器的方法,包括 使用第一線程來運(yùn)行窗口管理器,所述窗口管理器進(jìn)行與服務(wù)用戶請求相關(guān)的操作; 接收從使用第一 GPU切換到使用第二 GPU作為驅(qū)動顯示器的信號源的請求;和 響應(yīng)所述請求, 使用第二線程來配置第二 GPU,以為驅(qū)動顯示器作準(zhǔn)備, 在第二線程配置第二 GPU的時(shí)候,繼續(xù)使用第一線程來運(yùn)行窗口管理器,以服務(wù)用戶請求,和 在完成第二 GPU的配置之后,把驅(qū)動顯示器的信號源從第一 GPU切換到第二 GPU。
2.按照權(quán)利要求I所述的方法,其中,第二線程是在后臺運(yùn)行的基于內(nèi)核的線程。
3.按照權(quán)利要求I所述的方法,其中,使用第二線程來配置第二GPU包括 使第二 GPU加電;和 進(jìn)行硬件配置操作,以配置第二 GPU的硬件。
4.按照權(quán)利要求3所述的方法,其中,進(jìn)行硬件配置操作包括下述中的一個(gè)或多個(gè) 重新初始化第二 GPU的驅(qū)動器; 進(jìn)行顯示器探測操作,以確定顯示器的特性; 把模式設(shè)置從第一 GPU復(fù)制到第二 GPU ;和 把至少一個(gè)顏色查找表(CLUT)從第一 GPU復(fù)制到第二 GPU。
5.按照權(quán)利要求I所述的方法,其中,在把信號源從第一GPU切換到第二 GPU之前,所述方法還包括使用第一線程來執(zhí)行代碼路徑,所述代碼路徑 進(jìn)行軟件配置操作,以初始化與窗口管理器和第二 GPU相關(guān)的應(yīng)用可視數(shù)據(jù)結(jié)構(gòu);和 進(jìn)行第一組呈現(xiàn)操作,以便為第二 GPU呈現(xiàn)第一圖像。
6.按照權(quán)利要求5所述的方法,其中,使用第一線程來執(zhí)行代碼路徑包括重復(fù)第二線程先前為配置第二 GPU而進(jìn)行的一些操作。
7.按照權(quán)利要求6所述的方法,其中,重復(fù)的操作訪問高速緩存的值。
8.按照權(quán)利要求I所述的方法,其中,在信號源被切換之后,所述方法還包括使用第二線程來拆除第一 GPU的配置。
9.按照權(quán)利要求8所述的方法,其中,拆除第一GPU的配置包括 除去與窗口管理器和第一 GPU相關(guān)的應(yīng)用可視數(shù)據(jù)結(jié)構(gòu); 除去與第一 GPU相關(guān)的驅(qū)動器狀態(tài);和 從第一 GPU除去電力。
10.按照權(quán)利要求I所述的方法,其中,第一GPU被集成到處理器芯片集中,而第二 GPU駐留在尚散GPU芯片上。
11.按照權(quán)利要求I所述的方法,其中,第一GPU和第二 GPU具有大體相同的電路和相似的能力。
12.按照權(quán)利要求I所述的方法,其中,第一GPU是運(yùn)行圖形代碼的通用處理器,而第二GPU是專用圖形處理器。
13.—種從第一圖形處理單元(GPU)切換到第二GPU以驅(qū)動顯示器的計(jì)算機(jī)系統(tǒng),所述系統(tǒng)包括第一 GPU ; 第二 GPU ;和 操作系統(tǒng),其中當(dāng)接收到從使用第一 GPU切換到使用第二 GPU作為驅(qū)動顯示器的信號源的請求時(shí),所述操作系統(tǒng)被配置成 使用第一線程來運(yùn)行窗口管理器,所述窗口管理器進(jìn)行與服務(wù)用戶請求相關(guān)的操作; 使用第二線程來配置第二 GPU,使第二 GPU為驅(qū)動顯示器作準(zhǔn)備, 在第二線程配置第二 GPU的時(shí)候,使用第一線程來繼續(xù)運(yùn)行窗口管理器,以服務(wù)用戶請求,和 在完成第二 GPU的配置之后,把驅(qū)動顯示器的信號源從第一 GPU切換到第二 GPU。
14.按照權(quán)利要求13所述的計(jì)算機(jī)系統(tǒng),其中,第二線程是在后臺運(yùn)行的基于內(nèi)核的線程。
15.按照權(quán)利要求13所述的計(jì)算機(jī)系統(tǒng),其中,在配置第二GPU的時(shí)候,第二線程被配置成 使第二 GPU加電;和 進(jìn)行硬件配置操作,以配置第二 GPU的硬件。
16.按照權(quán)利要求15所述的計(jì)算機(jī)系統(tǒng),其中,在進(jìn)行硬件配置操作的時(shí)候,第二線程被配置成進(jìn)行下述操作中的一個(gè)或多個(gè)操作 重新初始化第二 GPU的驅(qū)動器; 進(jìn)行顯示器探測操作,以確定顯示器的特性; 把模式設(shè)置從第一 GPU復(fù)制到第二 GPU ;和 把至少一個(gè)顏色查找表(CLUT)從第一 GPU復(fù)制到第二 GPU。
17.按照權(quán)利要求13所述的計(jì)算機(jī)系統(tǒng),其中,在把信號源從第一GPU切換到第二 GPU之前,第一線程被配置成執(zhí)行代碼路徑,所述代碼路徑 進(jìn)行軟件配置操作,以初始化與窗口管理器和第二 GPU相關(guān)的應(yīng)用可視數(shù)據(jù)結(jié)構(gòu);和 進(jìn)行第一組呈現(xiàn)操作,以便為第二 GPU呈現(xiàn)第一圖像。
18.按照權(quán)利要求17所述的計(jì)算機(jī)系統(tǒng),其中,在執(zhí)行代碼路徑的時(shí)候,第一線程被配置成重復(fù)第二線程先前為配置第二 GPU而進(jìn)行的一些操作。
19.按照權(quán)利要求18所述的計(jì)算機(jī)系統(tǒng),其中,重復(fù)的操作將已完成或者將訪問高速緩存的值,從而會更快地執(zhí)行。
20.按照權(quán)利要求13所述的計(jì)算機(jī)系統(tǒng),其中,在信號源被切換之后,第二線程被配置成拆除第一 GPU。
21.按照權(quán)利要求20所述的計(jì)算機(jī)系統(tǒng),其中,在拆除第一GPU的時(shí)候,第二線程被配置成 除去與窗口管理器和第一 GPU相關(guān)的應(yīng)用可視數(shù)據(jù)結(jié)構(gòu); 除去與第一 GPU相關(guān)的驅(qū)動器狀態(tài);和 從第一 GPU除去電力。
22.—種保存指令的計(jì)算機(jī)可讀存儲介質(zhì),當(dāng)被計(jì)算機(jī)執(zhí)行時(shí),所述指令使計(jì)算機(jī)完成從使用第一圖形處理單元(GPU)切換到使用第二 GPU來驅(qū)動顯示器的方法,所述方法包括使用第一線程來運(yùn)行窗口管理器,所述窗口管理器進(jìn)行與服務(wù)用戶請求相關(guān)的操作; 接收從使用第一 GPU切換到使用第二 GPU作為驅(qū)動顯示器的信號源的請求;和 響應(yīng)所述請求, 使用第二線程來配置第二 GPU,以為驅(qū)動顯示器作準(zhǔn)備, 在第二線程配置第二 GPU的時(shí)候,繼續(xù)使用第一線程來運(yùn)行窗口管理器,以服務(wù)用戶請求,和 在完成第二 GPU的配置之后,把驅(qū)動顯示器的信號源從第一 GPU切換到第二 GPU。
23.按照權(quán)利要求22所述的計(jì)算機(jī)可讀存儲介質(zhì),其中,第二線程是在后臺運(yùn)行的基于內(nèi)核的線程。
24.按照權(quán)利要求22所述的計(jì)算機(jī)可讀存儲介質(zhì),其中,使用第二線程來配置第二GPU包括 使第二 GPU加電;和 進(jìn)行硬件配置操作,以配置第二 GPU的硬件。
25.按照權(quán)利要求24所述的計(jì)算機(jī)可讀存儲介質(zhì),其中,進(jìn)行硬件配置操作包括下述中的一個(gè)或多個(gè) 重新初始化第二 GPU的驅(qū)動器; 進(jìn)行顯示器探測操作,以確定顯示器的特性; 把模式設(shè)置從第一 GPU復(fù)制到第二 GPU ;和 把至少一個(gè)顏色查找表(CLUT)從第一 GPU復(fù)制到第二 GPU。
26.按照權(quán)利要求22所述的計(jì)算機(jī)可讀存儲介質(zhì),其中,在把信號源從第一GPU切換到第二 GPU之前,所述方法還包括使用第一線程來執(zhí)行代碼路徑,所述代碼路徑 進(jìn)行軟件配置操作,以初始化與窗口管理器和第二 GPU相關(guān)的應(yīng)用可視數(shù)據(jù)結(jié)構(gòu);和 進(jìn)行第一組呈現(xiàn)操作,以便為第二 GPU呈現(xiàn)第一圖像。
27.按照權(quán)利要求26所述的計(jì)算機(jī)可讀存儲介質(zhì),其中,使用第一線程來執(zhí)行代碼路徑包括重復(fù)第二線程先前為配置第二 GPU而進(jìn)行的一些操作。
28.按照權(quán)利要求27所述的計(jì)算機(jī)可讀存儲介質(zhì),其中,重復(fù)的操作將已完成或者將訪問高速緩存的值,從而會更快地執(zhí)行。
29.按照權(quán)利要求22所述的計(jì)算機(jī)可讀存儲介質(zhì),其中,在信號源被切換之后,所述方法還包括使用第二線程來拆除第一 GPU的配置。
30.按照權(quán)利要求29所述的計(jì)算機(jī)可讀存儲介質(zhì),其中,拆除第一GPU的配置包括 除去與窗口管理器和第一 GPU相關(guān)的應(yīng)用可視數(shù)據(jù)結(jié)構(gòu); 除去與第一 GPU相關(guān)的驅(qū)動器狀態(tài);和 從第一 GPU除去電力。
31.一種從使用第一圖形處理單元(GPU)切換到使用第二GPU來驅(qū)動顯示器的方法,包括 在線程配置第二 GPU以驅(qū)動顯示器的時(shí)候,從第一 GPU驅(qū)動顯示器;和 在完成第二 GPU的配置之后,把驅(qū)動顯示器的信號源從第一 GPU切換到第二 GPU。
32.—種保存指令的計(jì)算機(jī)可讀存儲介質(zhì),當(dāng)被計(jì)算機(jī)執(zhí)行時(shí),所述指令使計(jì)算機(jī)完成從使用第一圖形處理單元(GPU)切換到使用第二 GPU來驅(qū)動顯示器的方法,所述方法包括 在線程配置第二 GPU以驅(qū)動顯示器的時(shí)候,從第一 GPU驅(qū)動顯示器;和 在完成第二 GPU的配置之后,把驅(qū)動顯示器的信號源從第一 GPU切換到第二 GPU。
33.一種從第一圖形處理單元(GPU)切換到第二 GPU以驅(qū)動顯示器的計(jì)算機(jī)系統(tǒng),包括第一 GPU ; 第二 GPU ;和 操作系統(tǒng),其中當(dāng)接收到從使用第一 GPU切換成使用第二 GPU作為驅(qū)動顯示器的信號源的請求時(shí),所述操作系統(tǒng)被配置成, 在線程配置第二 GPU以驅(qū)動顯示器的時(shí)候,從第一 GPU驅(qū)動顯示器;和 在完成第二 GPU的配置之后,把驅(qū)動顯示器的信號源從第一 GPU切換到第二 GPU。
全文摘要
本發(fā)明涉及使圖形處理單元之間的高效切換更容易。公開的實(shí)施例提供一種使驅(qū)動顯示器的圖形處理單元(GPU)之間的無縫切換更容易的系統(tǒng)。在一個(gè)實(shí)施例中,所述系統(tǒng)接收從使用第一GPU切換到使用第二GPU來驅(qū)動顯示器的請求。響應(yīng)所述請求,系統(tǒng)使用在后臺運(yùn)行的內(nèi)核線程來配置第二GPU,以使第二GPU為驅(qū)動顯示器作準(zhǔn)備。在內(nèi)核線程配置第二GPU的時(shí)候,系統(tǒng)繼續(xù)使用第一GPU來驅(qū)動顯示器,且用戶線程繼續(xù)運(yùn)行窗口管理器,窗口管理器進(jìn)行與服務(wù)用戶請求相關(guān)的操作。當(dāng)?shù)诙礼PU的配置完成時(shí),系統(tǒng)把顯示器的信號源從第一GPU切換到第二GPU。
文檔編號G06F9/445GK102763082SQ201080063786
公開日2012年10月31日 申請日期2010年12月22日 優(yōu)先權(quán)日2010年1月6日
發(fā)明者D·J·雷德曼, S·M·道格拉斯, T·W·寇斯塔 申請人:蘋果公司