技術(shù)領(lǐng)域
本發(fā)明一般涉及存儲器在計算系統(tǒng)內(nèi)的中央處理單元(CPU)和輸入/輸出(I/O)設(shè)備之間的共享。更具體而言,本發(fā)明涉及物理存儲器在CPU和I/O設(shè)備之間的共享。
背景技術(shù):
現(xiàn)代I/O設(shè)備可以包括與許多中央處理單元(CPU)的計算機處理能力相匹敵的計算機處理能力。結(jié)果,傳統(tǒng)上由CPU執(zhí)行的計算任務(wù)的一部分可以被分攤給計算設(shè)備的I/O設(shè)備。例如,計算設(shè)備的諸如圖形處理單元(GPU)之類的I/O設(shè)備可以執(zhí)行傳統(tǒng)上由CPU執(zhí)行的某些任務(wù),由此,提高CPU的效率。
附圖簡述
圖1是根據(jù)各實施例的,可以使用的計算設(shè)備的框圖;
圖2A和2B是根據(jù)各實施例的可以被用來實現(xiàn)用于在計算設(shè)備的中央處理單元(CPU)和圖形處理單元(GPU)之間共享存儲器的過程的統(tǒng)一存儲器架構(gòu)(UMA)的示意圖;
圖3是示出了根據(jù)各實施例的用于在計算設(shè)備的CPU和GPU之間共享存儲器的方法的流程圖;
圖4是示出了根據(jù)各實施例的用于處理在計算設(shè)備的CPU和GPU之間共享的存儲器的方法的流程圖;
圖5是示出了根據(jù)各實施例的存儲用于在計算設(shè)備的CPU和GPU之間共享存儲器的代碼的有形的、非瞬時的計算機可讀取的介質(zhì)的框圖;
圖6是用于實現(xiàn)共享的物理存儲器的示例性系統(tǒng)的框圖;和
圖7是其中可實現(xiàn)圖6的系統(tǒng)的小形狀系數(shù)設(shè)備的示意圖。
在整個公開和附圖中使用相同的標號指示相似的組件和特征。100系列的標號涉及在圖1中最初可見的特征,200系列的標號涉及在圖2中最初可見的特征,以此類推。
實施例的描述
當前操作系統(tǒng)和圖形接口將GPU作為I/O設(shè)備來管理,而不是將GPU作為帶有類似于CPU的資源的處理器來管理。通過將GPU作為I/O設(shè)備來管理,CPU和GPU具有帶有分離的物理地址域的物理存儲器。當將計算任務(wù)分攤到GPU時,將數(shù)據(jù)從CPU的物理地址域復(fù)制到GPU的物理地址域。在GPU完成了處理之后,數(shù)據(jù)被復(fù)制回CPU的物理地址域。
將傳統(tǒng)上由CPU執(zhí)行的計算任務(wù)的一部分分攤給計算設(shè)備的GPU可以提高CPU的效率。如上文所討論的,為了將任務(wù)分攤到GPU,可以在CPU的物理存儲器與GPU的物理存儲器之間傳輸數(shù)據(jù)。將計算任務(wù)分攤到GPU時發(fā)生的數(shù)據(jù)傳輸可能會降低通過將任務(wù)分攤到GPU獲得的任何效率。相應(yīng)地,此處所描述的各實施例涉及存儲器在計算設(shè)備的CPU和GPU之間的共享??梢酝ㄟ^統(tǒng)一存儲器架構(gòu)(UMA)共享存儲器。
在各種實施例中,UMA通過給CPU和GPU兩者提供相同物理存儲器,來用于在CPU和GPU之間進行存儲器共享。如此,CPU和GPU的物理存儲器和相應(yīng)的物理地址空間完全一樣。在各實施例中,物理存儲器可以在CPU和GPU之間劃分。進一步地,物理存儲器可以是由計算設(shè)備的操作系統(tǒng)分配的分頁系統(tǒng)存儲器。CPU的虛擬存儲器地址空間可以與GPU的圖形虛擬存儲地址空間被映射到相同物理存儲器頁面。另外,在某些實施例中,CPU和GPU在物理上位于同一個管芯中。如此,CPU和GPU可以共享在物理存儲器內(nèi)包含的數(shù)據(jù),而不會將數(shù)據(jù)從GPU的地址空間復(fù)制到CPU的地址空間,或反之亦然。這可以通過,例如,縮小用于在CPU和GPU之間共享數(shù)據(jù)的時間和能耗,來降低將計算任務(wù)從CPU分攤到GPU的成本。
在以下描述和權(quán)利要求書中,可使用術(shù)語“耦合”和“連接”及其派生詞。應(yīng)當理解,這些術(shù)語并不旨在作為彼此的同義詞。相反,在特定實施例中,可以使用“連接”來表示兩個或更多元件彼此處于直接的物理和/或電接觸的狀態(tài)?!榜詈系摹笨杀硎緝蓚€或更多個元件直接物理或電接觸。然而,“耦合的”也可表示兩個或更多個元件并未彼此直接接觸,但是仍然彼此協(xié)作、彼此相互作用。
一些實施例可在硬件、固件和軟件中的一者或組合中實現(xiàn)。一些實施例還可被實現(xiàn)為存儲在機器可讀介質(zhì)上的指令,其可由計算平臺讀取和執(zhí)行,以執(zhí)行本文所述的操作。機器可讀介質(zhì)可以包括用于存儲或傳輸機器(例如:計算機)可讀形式的信息的任何機制。例如,機器可讀介質(zhì)可包括只讀存儲器(ROM);隨機存取存儲器(RAM);磁盤存儲介質(zhì);光存儲介質(zhì);閃存設(shè)備;或電、光、聲或其它形式的傳播信號(例如,載波、紅外信號、數(shù)字信號、或發(fā)送和/或接收信號的接口等)等等。
實施例是實現(xiàn)方式或示例。說明書中對“實施例”、“一個實施例”、“一些實施例”、“各種實施例”或“另一些實施例”的引用表示結(jié)合這些實施例而描述的特定特征、結(jié)構(gòu)、或特性被包括在本發(fā)明的至少一些實施例中,而不一定在所有的實施例中?!皩嵤├?、“一個實施例”或“一些實施例”的各種出現(xiàn)不一定全部都是指相同實施例。一個實施例的元件或方面可與另一個實施例的元件或方面組合。
并非本文中描述和示出的所有組件、特征、結(jié)構(gòu)、特性等等都需要被包括在特定實施例或多個實施例中。例如,如果說明書陳述“可”、“可能”或“能夠”包括組件、特征、結(jié)構(gòu)或特性,則不一定包括該特定組件、特征、結(jié)構(gòu)或特性。如果說明書或權(quán)利要求書提到“一”或“一個”元件,則這并不意味著僅有一個該元件。如果說明書或權(quán)利要求書引用“附加的”元件,則不排除有一個以上該附加的元件。
要注意的是,雖然參考特定實現(xiàn)方式描述了一些實施例,但根據(jù)一些實施例,其他實現(xiàn)方式也是可能的。另外,附圖中所示的和/或本文描述的電路元件或其它特征的配置和/或順序不必以所示和所描述的特定方式安排。根據(jù)某些實施例,其他許多配置也是可能的。
在附圖所示出的每一系統(tǒng)中,在某些情況下,每一元件都可以具有相同參考編號或不同的參考編號,以暗示表示的元件可能是不同的和/或類似的。但是,元件可以足夠靈活,具有不同的實現(xiàn)方式,并與本文所示或所述的一些或所有系統(tǒng)一起操作。附圖中所示的各元件可以相同或不同。將哪個稱為第一元件以及將哪個稱為第二元件是任意的。
圖1是根據(jù)各實施例的可以使用的計算設(shè)備100的框圖。該計算設(shè)備100可以是,例如,膝上型計算機、臺式計算機、平板計算機、移動設(shè)備、服務(wù)器,等等。計算設(shè)備100可包括中央處理單元(CPU)102,適用于執(zhí)行所存儲的指令,還有存儲器設(shè)備108,其存儲可由CPU 102執(zhí)行的指令。CPU 102可以是單核處理器、多核處理器、計算群集、或者任意數(shù)量的其他配置。進一步,計算設(shè)備100可包括多于一個的CPU 102??墒褂糜蒀PU 102執(zhí)行的指令來實現(xiàn)存儲器共享過程。
計算設(shè)備100還可包括圖形處理單元(GPU)104。GPU是計算設(shè)備100內(nèi)的輸入/輸出(I/O)設(shè)備。I/O設(shè)備是可用于使用輸入端、輸出端或其任何組合與計算機進行通信的設(shè)備。如圖所示,CPU 102可通過總線106連接至GPU104。然而,在某些實施例中,GPU 104與計算設(shè)備100內(nèi)的CPU 102位于相同管芯上。如此,CPU 102和GPU在物理上以這樣的方式連接:可以消除CPU102和GPU 104之間的通過總線106的連接。此外,在各實施例中,CPU 102和GPU 104可以被包括在計算設(shè)備100的統(tǒng)一存儲器架構(gòu)內(nèi),如參考圖2所討論的。
GPU 104可被配置為執(zhí)行計算設(shè)備100中的任意數(shù)量的圖形操作。例如,GPU 104可被配置為呈現(xiàn)或操作圖形化圖像、圖形幀、視頻等,使其向計算設(shè)備100的用戶顯示。在某些實施例中,GPU 104包括若干個圖形引擎(未示出),其中,每一圖形引擎都被配置成執(zhí)行特定圖形任務(wù),或執(zhí)行特定類型的工作負荷。
計算設(shè)備100還可包括存儲器設(shè)備108。存儲器設(shè)備108可包括隨機存取存儲器(RAM)、只讀存儲器(ROM)、閃存、或任何其他合適的存儲系統(tǒng)。例如,存儲器設(shè)備108可包括動態(tài)隨機存取存儲器(DRAM)。存儲器108可以包括被配置成執(zhí)行用于實現(xiàn)存儲器共享過程的指令的設(shè)備驅(qū)動器110。設(shè)備驅(qū)動器110可以是軟件、應(yīng)用、應(yīng)用代碼,等等。在某些實施例中,設(shè)備驅(qū)動器110是用戶模式驅(qū)動器。
存儲器108還包括多級112緩存,包括末級緩存(LLC)114、2級緩存116以及1級緩存118。雖然為說明使用了多級緩存112,但是,任何緩存都可以包括在計算設(shè)備100中。多級緩存112可以是存儲CPU 102的頻繁使用的數(shù)據(jù)的較小子集的較小較快的存儲器。較大的數(shù)據(jù)集可以存儲在存儲器120中。存儲器120是諸如硬盤驅(qū)動器、光盤驅(qū)動器、拇指驅(qū)動器、驅(qū)動器陣列、或其中任意組合之類的物理存儲器。存儲器120還可包括遠程存儲驅(qū)動器。CPU 102訪問存儲在存儲器120中的數(shù)據(jù)的時間量相對于CPU 102訪問存儲器104中的多級緩存112需要花費的時間量可能較慢。
在某些實施例中,在CPU 102和GPU 104之間共享LLC 114,同時,可以對于GPU 104隱藏2級緩存116和1級緩存118,以便GPU 104不能直接訪問緩存在2級緩存116和1級緩存118中的數(shù)據(jù)。然而,LLC 114可以讀取和寫入存儲在2級緩存116和1級緩存118中的數(shù)據(jù)。由此,當GPU 104請求緩存在2級緩存116或1級緩存118中的數(shù)據(jù)時,LLC 114能夠從2級緩存116和1級緩存118中檢索數(shù)據(jù),供GPU 104進行處理。如此,LLC 114確保計算設(shè)備100內(nèi)的數(shù)據(jù)一致性。如此處所使用的,一致性是指被CPU 102和GPU 104訪問的數(shù)據(jù)相同的狀態(tài)。相應(yīng)地,CPU 102將通過確保數(shù)據(jù)與LLC 114一致,來確保來自存儲設(shè)備120的數(shù)據(jù)準確地反映在LLC 114、2級緩存116以及1級緩存118中,以便允許正確的數(shù)據(jù)被與GPU 104共享。
另外,在各實施例中,CPU和GPU可以訪問存儲器的任何級別。然而,來自存儲器的其他級別的數(shù)據(jù)可能是陳舊的,而LLC 114包括最近的數(shù)據(jù)。此外,在各實施例中,CPU和GPU可以使用任何相互可訪問的存儲位置來執(zhí)行共享的虛擬存儲器。任何相互可訪問的存儲位置可以包括,但不僅限于,存儲器設(shè)備104的任何區(qū)域、存儲器120的任何區(qū)域、聯(lián)網(wǎng)的存儲位置、拇指驅(qū)動器,或其任何組合。
存儲器120包括表面122以及被配置成在計算設(shè)備100上運行的任意數(shù)量應(yīng)用124。表面122是由設(shè)備驅(qū)動器110分配的物理存儲器的指定的部分。可以基于對表面122內(nèi)的物理存儲器的內(nèi)容執(zhí)行的處理,更新表面。在各實施例中,當應(yīng)用124由CPU 104執(zhí)行時,應(yīng)用124可以請求由設(shè)備驅(qū)動器110分配表面。此外,在CPU 102上運行的應(yīng)用124可以通過指定表面122的所需大小和特征,根據(jù)應(yīng)用124調(diào)用的存儲器分配,配置表面122。另外,例如,可以響應(yīng)于來自計算設(shè)備100的CPU 102的輸入,執(zhí)行表面分配。此外,在各實施例中,表面還標記為LLC可緩存的。通過將表面122指定為LLC可緩存的,從表面122內(nèi)的位置緩存的數(shù)據(jù)可以被緩存到LLC 114,并由此在LLC中可被CPU 102和GPU 104兩者訪問。
可以使用存儲器管理單元(MMU)126來管理對存儲在表面122內(nèi)的數(shù)據(jù)的訪問。MMU 126可以將CPU 102和GPU 104的虛擬地址空間分割為地址空間的各種頁面。CPU 102和GPU 104中每一個都具有它們自己的虛擬地址空間。虛擬地址空間通過將在計算系統(tǒng)內(nèi)執(zhí)行的各種應(yīng)用124隔離到虛擬地址的特定子集,保護包含在表面122內(nèi)的數(shù)據(jù)。通過使用虛擬地址空間,一個應(yīng)用124將不會訪問另一應(yīng)用124的數(shù)據(jù)。相應(yīng)地,MMU 126包括CPU頁面表128和GPU頁面表130。CPU頁面表包含被映射到表面122內(nèi)的物理地址位置的CPU的虛擬地址。類似地,GPU頁面表包含被映射到表面122內(nèi)的物理地址位置的GPU的虛擬地址。在此處所描述的存儲器共享過程中,CPU頁面表128可以包括CPU虛擬地址空間到物理地址空間的映射。物理地址空間對應(yīng)于表面122內(nèi)的物理位置。同樣,GPU頁面表130可以包括GPU虛擬地址空間到相同物理地址空間的映射。
在各種實施例中,來自CPU頁面表128的虛擬存儲器地址和來自GPU頁面表130的圖形虛擬存儲器地址通過轉(zhuǎn)換過程,被映射到表面122的物理存儲器頁面??梢允褂棉D(zhuǎn)換過程來將虛擬存儲器地址中的任何一個轉(zhuǎn)換為相應(yīng)的物理地址。例如,可以通過頁面表步行(walk),來執(zhí)行轉(zhuǎn)換過程,頁面表步行可以基于用于將頁面表內(nèi)的虛擬存儲器地址轉(zhuǎn)換為頁面表內(nèi)的物理存儲器地址的特定轉(zhuǎn)換表來執(zhí)行。另外,在各實施例中,可以使用轉(zhuǎn)換后備緩沖器來將CPU和GPU的虛擬地址轉(zhuǎn)換為它們的相應(yīng)的頁面表內(nèi)的物理地址空間。
在執(zhí)行轉(zhuǎn)換過程之后,可以固定(pin)表面122。固定表面是指保護表面,以便物理位置和相應(yīng)的物理地址不變。如此,固定表面122確保虛擬地址空間和物理地址空間之間的“硬”映射。在地址空間之間的硬映射是在固定表面之后不會變化的映射。如果表面沒有被固定,則可能會生成頁面錯誤,或可能會處理錯誤的數(shù)據(jù),因為表面的物理位置可能移位。
在各實施例中,應(yīng)用124可以在CPU 102上執(zhí)行,并請求諸如表面122之類的表面,以便執(zhí)行諸如處理數(shù)據(jù)之類的操作。CPU 102可以將操作傳遞到GPU 104。由于頁面表已經(jīng)被映射到表面122,因此,GPU可以通過訪問表面,開始由CPU 102分攤的操作的立即執(zhí)行,而不必將數(shù)據(jù)復(fù)制到另一個地址空間。當操作由CPU 102完成時,GPU 104可以向CPU 122發(fā)送信號,操作完成。然后,CPU 102可以繼續(xù)處理數(shù)據(jù),而不必將數(shù)據(jù)復(fù)制回原始地址空間。
當由應(yīng)用124請求的操作由GPU 104執(zhí)行時,可以發(fā)生對表面122的修改。根據(jù)此處所描述的存儲器共享過程,這樣的對表面122的修改完全對CPU102可見。如此,可以在GPU 104和CPU 102之間共享數(shù)據(jù),而不必將數(shù)據(jù)從GPU 104復(fù)制到CPU 102,或反之亦然。
CPU 102還可通過總線106連接至輸入/輸出(I/O)設(shè)備接口132,該接口132適用于將計算設(shè)備100連接至一個或多個I/O設(shè)備134。I/O設(shè)備134可包括,例如,鍵盤和指向設(shè)備,其中指向設(shè)備可包括觸摸板或觸摸屏,等等。I/O設(shè)備134可以是計算設(shè)備100的內(nèi)置組件,或可以是從外部連接至計算設(shè)備100的設(shè)備。
CPU 102還可通過總線106鏈接至顯示接口136,該接口136適用于將計算設(shè)備100連接至顯示設(shè)備138。顯示設(shè)備138可包括顯示屏,其為計算設(shè)備100的內(nèi)置組件。顯示設(shè)備138還可包括從外部連接至計算設(shè)備100的計算機監(jiān)視器、電視機或投影儀等等。
網(wǎng)絡(luò)接口控制器(NIC)140可適合通過總線106將計算設(shè)備100連接至網(wǎng)絡(luò)142。網(wǎng)絡(luò)142可以是廣域網(wǎng)(WAN)、局域網(wǎng)(LAN)或因特網(wǎng),等等。
圖1的框圖并不意在表示,計算設(shè)備100包括圖1中所示的全部組件。進一步,取決于特定實現(xiàn)的細節(jié),計算設(shè)備100可包括圖1中未示出的任意數(shù)量的附加組件。
圖2A和2B是根據(jù)各實施例的可以被用來實現(xiàn)用于在計算設(shè)備100的CPU102和GPU 104之間共享存儲器的過程的統(tǒng)一存儲器架構(gòu)200的示意圖。類似標記的項如根據(jù)圖1所描述。UMA 200可以包括,例如,計算設(shè)備100的CPU頁面表128、GPU頁面表130以及表面122。
UMA 200可以允許CPU 102和GPU 104之間的直接存儲器共享,而不必在CPU 102和GPU 104之間有任何類型的數(shù)據(jù)復(fù)制或數(shù)據(jù)傳輸。這可以通過允許CPU 102和GPU 104共享表面122來做到。如上文所描述的,表面122可以是物理存儲設(shè)備的一部分。表面包括任意數(shù)量的物理存儲器位置202。物理存儲器位置202可以被組織成分頁的存儲器格式,其中,頁面是表面122內(nèi)的物理存儲器的固定長度的塊。
CPU頁面表128可以包括若干個CPU虛擬存儲器地址204,而GPU頁面表130可以包括若干個圖形虛擬存儲器地址206。CPU虛擬存儲器地址204構(gòu)成CPU虛擬地址空間,而圖形虛擬存儲器地址206構(gòu)成圖形虛擬地址空間。每一地址空間都被映射到每一頁面表中的物理地址。如此,CPU虛擬存儲器地址204和圖形虛擬存儲器地址206兩者都分別映射到CPU頁面表128和GPU頁面表130內(nèi)的相同組的物理地址208。
物理地址208允許CPU 102和GPU 104(圖1)處理存儲在表面122內(nèi)的物理位置202的數(shù)據(jù)。在各種實施例中,基于被諸如應(yīng)用124(圖1)之類的應(yīng)用訪問的特定CPU虛擬地址204,分配表面122。一旦分配了表面122,每一物理地址208都被映射到CPU頁面表128內(nèi)的相應(yīng)的CPU虛擬地址204,如圖2所示。GPU頁面表130內(nèi)的圖形虛擬存儲器地址206可以與CPU頁面表128同步,以便CPU虛擬地址和GPU虛擬存儲器地址被映射到相同組的物理地址208。物理地址208對應(yīng)于表面122內(nèi)的物理位置202。相應(yīng)地,可以在CPU 102和GPU 104之間直接共享表面122。在各實施例中,如果GPU 104修改位于物理位置202中的任何一個處的數(shù)據(jù),則通過表面122,修改自動地對CPU 102可見,無需任何數(shù)據(jù)復(fù)制或數(shù)據(jù)編組(marshaling)。
圖2的示意圖不旨在表示UMA 200將包括圖2所示出的全部組件。進一步,取決于特定實現(xiàn)的細節(jié),UMA 200可包括圖2中未示出的任意數(shù)量的附加組件。
圖3是示出了根據(jù)各實施例的用于在計算設(shè)備的CPU和GPU之間共享存儲器的方法300的流程圖。在各實施例中,方法300被用來在CPU和GPU之間共享存儲器,而不必將數(shù)據(jù)從CPU存儲器復(fù)制到GPU存儲器。
在某些實施例中,方法300可以在諸如計算設(shè)備100之類的計算設(shè)備上執(zhí)行,其中,CPU 102和GPU 104通過總線106連接。在其他實施例中,CPU 102和GPU 104可以被包括諸如上文參考圖2所討論的UMA 200之類的UMA中。進一步地,方法300可以由諸如計算設(shè)備100的設(shè)備驅(qū)動器126之類的計算設(shè)備的驅(qū)動器執(zhí)行。
方法從框302開始,在物理存儲器內(nèi)分配表面。在各實施例中,可以響應(yīng)于來自在計算設(shè)備的CPU上運行的應(yīng)用的輸入,在計算設(shè)備的物理存儲器內(nèi)分配表面。此外,在各實施例中,還可以由設(shè)備驅(qū)動器分配表面。應(yīng)用或設(shè)備驅(qū)動器可以使用CPU虛擬地址從CPU訪問表面。在各實施例中,CPU虛擬地址被計算設(shè)備的操作系統(tǒng)提供到應(yīng)用或設(shè)備驅(qū)動器。
在框304,對應(yīng)于表面內(nèi)的物理位置的物理地址被映射到CPU虛擬地址。CPU虛擬存儲器地址和物理地址之間的映射被包括在CPU頁面表內(nèi)。將物理存儲器頁面映射到虛擬存儲器地址可以包括轉(zhuǎn)換CPU虛擬地址,以確定系統(tǒng)存儲器內(nèi)的對應(yīng)的物理存儲器頁面。當CPU虛擬地址被轉(zhuǎn)換為物理地址時,在轉(zhuǎn)換過程中發(fā)現(xiàn)的CPU虛擬地址和物理地址之間的關(guān)聯(lián)被鎖定。通過鎖定關(guān)聯(lián),表面的對應(yīng)于CPU頁面表中的物理地址的物理位置可以被分頁進入到緩存中。當關(guān)聯(lián)被鎖定時,頁面將保留在緩存中,因為設(shè)備驅(qū)動器防止表面的物理地址被改變。
在框306,GPU虛擬存儲器地址被映射到表面內(nèi)的物理位置。在各實施例中,表面被指定為LLC可緩存的。這樣的指定確保表面的物理位置被緩存到被CPU和GPU共享的LLC中。可以將應(yīng)用所使用的圖形虛擬存儲器地址轉(zhuǎn)換為被映射到CPU的虛擬地址的相同物理地址。在各實施例中,設(shè)備驅(qū)動器可以更新圖形虛擬存儲器地址到GPU頁面表內(nèi)的物理地址的映射。
將表面映射到GPU虛擬地址可以包括固定表面。通過固定表面,防止GPU虛擬地址和表面之間的映射被改變。如此,GPU虛擬存儲器將對應(yīng)于相同物理存儲器,且物理存儲器不會改變。例如,操作系統(tǒng)可以改變所分配的物理存儲器位置,作為其存儲器管理的一部分。然而,一旦表面被固定,就防止操作系統(tǒng)改變表面的物理存儲器位置。
圖4是示出了根據(jù)各實施例的用于處理在計算設(shè)備的CPU和GPU之間共享的存儲器的方法400的流程圖。
在框402,可以將操作從CPU分攤到GPU。可以如由諸如應(yīng)用124(圖1)之類的應(yīng)用的指示的那樣,將操作分攤到GPU。另外,可以使用用于控制CPU或GPU的任何應(yīng)用編程接口(API)來指示將操作從CPU分攤到GPU。在各實施例中,在將操作從CPU分攤到GPU之前,可以使位于表面內(nèi)的正在由CPU處理的數(shù)據(jù)與LLC一致。
在框404,GPU可以開始處理分攤的操作。GPU訪問LLC和表面內(nèi)的數(shù)據(jù),以便執(zhí)行操作。在GPU請求不在LLC內(nèi)但是在CPU的某種其他緩存中的數(shù)據(jù)的情況下,LLC可以從其他緩存檢索數(shù)據(jù),供GPU進行處理。
在框406,GPU發(fā)出信號通知操作完成。完成信號可以被發(fā)送到主機。在各實施例中,當操作完成時,設(shè)備驅(qū)動器在GPU和CPU之間同步操作。進一步地,在各實施例中,完成信號可以是,例如,郵箱寫入或中斷。完成信號可以表示,GPU已經(jīng)執(zhí)行導致了表面內(nèi)的數(shù)據(jù)的修改的某些計算或圖形操作。在完成之后,可以由CPU處理GPU的輸出。在各實施例中,當GPU通過讀寫表面的物理位置中的任何一個來處理表面時,處理可以在GPU的內(nèi)部緩沖器和緩存中發(fā)生。相應(yīng)地,在GPU處理完成之后,使GPU的內(nèi)部緩沖器和緩存內(nèi)的數(shù)據(jù)與LLC一致。
圖3和4的流程圖不旨在表示方法300和400的框?qū)⒁匀魏翁囟樞驁?zhí)行,或在每一情況下都包括全部框。進一步,取決于特定實現(xiàn)的細節(jié),可在方法300和400中包括任何數(shù)量的附加框。另外,盡管此處所描述的方法包括GPU,但可以在諸如另一CPU之類的任何I/O設(shè)備或直接存儲器訪問(DMA)控制器之間共享存儲器。
圖5是示出了根據(jù)各實施例的存儲用于在計算設(shè)備的CPU和GPU之間共享存儲器的代碼的有形的,非瞬時的計算機可讀介質(zhì)500的框圖。有形、非瞬態(tài)計算機可讀介質(zhì)500可由處理器502在計算機總線504上訪問。進一步,有形、非瞬態(tài)計算機可讀介質(zhì)500可包括配置為引導處理器502執(zhí)行此處所述的方法的代碼。
此處討論的各軟件組件可被存儲在如圖5中所示的有形、非瞬態(tài)計算機可讀介質(zhì)500上。例如,表面分配模塊506可以被配置成分配或生成包括計算設(shè)備的存儲器內(nèi)的若干個物理存儲器頁面的表面。映射模塊508可以被配置成將表面內(nèi)的物理位置映射到CPU地址表和GPU地址表內(nèi)的虛擬存儲器地址。進一步地,固定模塊510可以被配置成固定表面,以便防止表面內(nèi)的物理位置改變。
圖5的框圖并不意在表示,有形、非瞬態(tài)計算機可讀介質(zhì)500必須包括圖5中所示的全部組件。進一步,取決于特定實現(xiàn)的細節(jié),有形、非瞬態(tài)計算機可讀介質(zhì)500可包括圖5中未示出的任意數(shù)量的附加組件。
在各實施例中,CPU不必一定在CPU地址空間和GPU地址空間之間編組(marshal)數(shù)據(jù)。此外,CPU不負責確保沒有其他處理核正在處理該CPU希望GPU處理的特定數(shù)據(jù)集,如此,防止處理核之間的處理競爭。
圖6是用于實現(xiàn)共享的物理存儲器的示例性系統(tǒng)600的框圖。類似標記的項如根據(jù)圖1、2A和2B所描述。在一些實施例中,系統(tǒng)600是媒體系統(tǒng)。此外,系統(tǒng)600可被結(jié)合在個人計算機(PC)、膝上型計算機、超膝上型計算機、平板、觸摸墊、便攜式計算機、手持式計算機、掌上型計算機、個人數(shù)字助理(PDA)、蜂窩電話、組合蜂窩電話/PDA、電視機、智能設(shè)備(例如,智能電話、智能平板、或智能電視機)、移動因特網(wǎng)設(shè)備(MID)、消息收發(fā)設(shè)備、數(shù)據(jù)通信設(shè)備等等中。
在各種實施例中,系統(tǒng)600包括耦合至顯示器604的平臺602。平臺602可以從諸如內(nèi)容服務(wù)設(shè)備(多個)606、或內(nèi)容分發(fā)設(shè)備608(多個)之類的內(nèi)容設(shè)備或其他類似的內(nèi)容源接收內(nèi)容。包括一個或多個導航特征的導航控制器610可以被用來與,例如,平臺602和/或顯示器604進行交互。在下文中更詳細地描述這些組件中的每一個。
平臺602可包括芯片組612、中央處理單元(CPU)102、存儲器設(shè)備108、存儲設(shè)備120、圖形子系統(tǒng)614、應(yīng)用124、和無線電616的任意組合。芯片組612可以在CPU 102、存儲器設(shè)備108、存儲設(shè)備120、圖形子系統(tǒng)614、應(yīng)用124、和無線電614之間提供相互通信。例如,芯片組612可包括能夠提供與存儲設(shè)備120的相互通信的存儲適配器(未示出)。
處理器102可以實現(xiàn)為復(fù)雜指令集計算機(CISC)或精簡指令集計算機(RISC)處理器、x86指令集兼容處理器、多核,或任何其他微處理器或中央處理單元(CPU)。在一些實施例中,處理器102包括雙核處理器(多個)、雙核移動處理器(多個)等等。
存儲器108可以實現(xiàn)為易失性存儲器設(shè)備,諸如,但不限于,隨機存取存儲器(RAM)、動態(tài)隨機存取存儲器(DRAM)或靜態(tài)RAM(SRAM)。存儲設(shè)備120可以實現(xiàn)為非易失性存儲設(shè)備,諸如,但不僅限于,磁盤驅(qū)動器、光盤驅(qū)動器、磁帶驅(qū)動器、內(nèi)部存儲設(shè)備、附連的存儲設(shè)備、閃存、電池備份的SDRAM(同步DRAM),和/或網(wǎng)絡(luò)可訪問的存儲設(shè)備。在各實施例中,存儲設(shè)備120包括例如當包括多個硬盤驅(qū)動器時,用于提高存儲器性能或?qū)τ袃r值的數(shù)字媒體的增強保護的技術(shù)。
圖形子系統(tǒng)614可以對諸如靜止圖像或視頻之類的圖像執(zhí)行處理,供顯示。圖形子系統(tǒng)614可以包括例如圖形處理單元(GPU),諸如GPU 104、或視覺處理單元(VPU)。模擬或數(shù)字接口可以被用來通信地耦合圖形子系統(tǒng)614和顯示器604。例如,接口可以是高清晰度多媒體接口、顯示端口(DisplayPort)、無線HDMI,和/或無線HD兼容技術(shù)中的任何一個。圖形子系統(tǒng)614可以被集成到CPU 102或芯片組612中??蛇x地,圖形子系統(tǒng)614可以是通信耦合到芯片組612的獨立卡。
本文中所描述的圖形和/或視頻處理技術(shù)可在各種硬件架構(gòu)中實現(xiàn)。例如,圖形和/或視頻功能可以集成在芯片組612內(nèi)。替代地,可以使用單獨的圖形和/或視頻處理器。作為又一實施例,圖形和/或視頻功能可由包括多核處理器的通用處理器實現(xiàn)。在又一實施例中,這些功能可實現(xiàn)在消費者電子設(shè)備中。
無線電616可以包括能夠使用各種合適的無線通信技術(shù)傳輸和接收信號的一個或多個無線電。這樣的技術(shù)可以涉及跨一個或多個無線網(wǎng)絡(luò)的通信。示例性無線網(wǎng)絡(luò)包括無線局域網(wǎng)(WLAN)、無線個域網(wǎng)(WPAN)、無線城域網(wǎng)(WMAN)、蜂窩網(wǎng)絡(luò),以及衛(wèi)星網(wǎng)絡(luò)。在跨這樣的網(wǎng)絡(luò)的通信中,無線電616可以根據(jù)任何版本的一個或多個適用的標準來操作。
顯示器604可包括任何電視機類型的監(jiān)視器或顯示器。例如,顯示器604可包括計算機顯示屏幕、觸摸屏幕顯示器、視頻監(jiān)視器、電視機等。顯示器604可以是數(shù)字和/或模擬的。在一些實施例中,顯示器604是全息顯示器。同樣,顯示器604可以是可以接收可視投影的透明表面。這樣的投影可以傳達各種形式的信息、圖像、和/或?qū)ο蟮?。例如,這樣的投影可以是用于移動增強的現(xiàn)實(MAR)應(yīng)用的視覺覆蓋。在一個或多個應(yīng)用124的控制下,平臺602可以在顯示器604上顯示用戶界面618。
內(nèi)容服務(wù)設(shè)備(多個)606可以由任何國家的、國際的、和/或獨立的服務(wù)托管,且如此,可以由平臺602經(jīng)由例如因特網(wǎng)訪問。內(nèi)容服務(wù)設(shè)備(多個)606可以耦合到平臺602和/或顯示器604。平臺602和/或內(nèi)容服務(wù)設(shè)備606可以耦合到網(wǎng)絡(luò)142以往返于網(wǎng)絡(luò)142進行通信(例如,發(fā)送和/或接收)媒體信息。內(nèi)容分發(fā)設(shè)備608還可以耦合到平臺602和/或顯示器604。
內(nèi)容服務(wù)設(shè)備(多個)606可包括有線電視盒、個人計算機、網(wǎng)絡(luò)、電話、或能傳遞數(shù)字信息的啟用因特網(wǎng)的設(shè)備。此外,內(nèi)容服務(wù)設(shè)備(多個)606可包括能在內(nèi)容提供者和平臺602或顯示器604之間經(jīng)由網(wǎng)絡(luò)142或直接單向或雙向地通信內(nèi)容的任何其他類似設(shè)備??梢岳斫?,內(nèi)容可以通過網(wǎng)絡(luò)142往返于系統(tǒng)600中的組件中的任何一個和內(nèi)容提供商單向地和/或雙向地傳遞。內(nèi)容的示例可以包括任何媒體信息,包括,例如,視頻、音樂、醫(yī)療和游戲信息等等。
內(nèi)容服務(wù)設(shè)備(多個)606可接收內(nèi)容,諸如有線電視節(jié)目,包括媒體信息、數(shù)字信息和/或其他內(nèi)容。內(nèi)容提供商的示例可包括任何有線或衛(wèi)星電視或無線電或因特網(wǎng)內(nèi)容提供商等等。
在一些實施例中,平臺602從包括一個或多個導航特征的導航控制器610接收控制信號。導航控制器610的導航特征可以被用來,例如,與用戶界面618進行交互。導航控制器610可以是指向設(shè)備,該指向設(shè)備可以是允許用戶向計算機輸入空間數(shù)據(jù)(例如,連續(xù)和多維)的計算機硬件組件(具體而言,人類接口設(shè)備)。諸如圖形用戶界面(GUI)、電視機和監(jiān)視器之類的許多系統(tǒng)可使用戶使用物理手勢控制并向計算機或電視機提供數(shù)據(jù)。物理姿勢包括但不限于臉部表情、面部動作、各肢體的動作、身體動作、身體語言、或其中任意組合。這樣的物理姿勢可被識別并轉(zhuǎn)換為命令或指令。
導航控制器610的導航特征的移動可以通過指針、光標、焦點環(huán),或顯示在顯示器604上的其他可視指示器,反映在顯示器604上。例如,在應(yīng)用124的控制下,位于導航控制器610上的導航特征可以被映射為用戶界面618上顯示的虛擬導航特征。在一些實施例中,導航控制器610可以不是單獨的組件,而是被集成到平臺602和/或顯示器604中。
系統(tǒng)600可包括驅(qū)動(未示出),其包括允許用戶在初始引導之后,按下按鈕來立即打開和關(guān)閉平臺602的技術(shù)。程序邏輯可以允許平臺602當平臺被“關(guān)閉”時向媒體適配器或其他內(nèi)容服務(wù)設(shè)備606或內(nèi)容分發(fā)設(shè)備608流式播放內(nèi)容。另外,芯片集612可包括,例如,對于5.1環(huán)繞聲音頻和/或高清晰度7.1環(huán)繞聲音頻的硬件和/或軟件支持。驅(qū)動可以包括集成的圖形平臺的圖形驅(qū)動器。在一些實施例中,圖形驅(qū)動器包括外設(shè)組件互連高速(PCIe)圖形卡。
在各種實施例中,可以集成系統(tǒng)600中所示出的組件的任何一個或更多。例如,可集成平臺602和內(nèi)容服務(wù)設(shè)備(多個)606;可集成平臺602和內(nèi)容分發(fā)設(shè)備(多個)608;或者,例如,可集成平臺602、內(nèi)容服務(wù)設(shè)備(多個)606,以及內(nèi)容分發(fā)設(shè)備(多個)608。在一些實施例中,平臺602和顯示器604是集成的單元。例如,可以集成顯示器604和內(nèi)容服務(wù)設(shè)備(多個)606,或者可集成顯示器604和內(nèi)容分發(fā)設(shè)備(多個)608。
系統(tǒng)600可被實現(xiàn)為無線系統(tǒng)或有線系統(tǒng)。當實現(xiàn)為無線系統(tǒng)時,系統(tǒng)600可以包括適用于通過無線共享介質(zhì)進行通信的組件和接口,諸如一個或多個天線、發(fā)射器、接收器、收發(fā)器、放大器、濾波器、控制邏輯等等。無線共享介質(zhì)的示例可以包括諸如RF頻譜之類的無線頻譜的某些部分。當被實現(xiàn)為有線系統(tǒng)時,系統(tǒng)600可包括適合于在有線通信介質(zhì)上通信的組件和接口,諸如輸入/輸出(I/O)適配器、將I/O適配器與相應(yīng)的有線通信介質(zhì)連接的物理連接器、網(wǎng)絡(luò)接口卡(NIC)、盤控制器、視頻控制器、音頻控制器等等。有線通信介質(zhì)的示例可包括,線路、電纜、金屬導線、印刷電路板(PCB)、后面板、交換架構(gòu)、半導體材料、雙絞線、同軸電纜、光纖等等。
平臺602可以建立一個或多個邏輯或物理信道以傳遞信息。信息可以包括媒體信息和控制信息。媒體信息可以是指表示給用戶的內(nèi)容的任何數(shù)據(jù)。內(nèi)容的示例可以包括,例如,來自語音談話、視頻會議、流式視頻、電子郵件(email)消息、語音郵件消息、字母數(shù)字符號、圖形、圖像、視頻、文本等等的數(shù)據(jù)。來自語音談話的數(shù)據(jù)可以是,例如,語音信息、靜默時間長度、背景噪聲、舒適噪聲、音調(diào)等等??刂菩畔⒖梢允侵副硎居糜谧詣踊到y(tǒng)的命令、指令或控制字的任何數(shù)據(jù)。例如,控制信息可以用來通過系統(tǒng)路由媒體信息,或指示節(jié)點以預(yù)先確定的方式處理媒體信息。然而,這些實施例并不限于這些元件或圖6中示出或描述的上下文。
圖7示出了其中可以實現(xiàn)圖6的系統(tǒng)600的小形狀系數(shù)設(shè)備900的示意圖。類似標記的項如根據(jù)圖6所描述。在一些實施例中,例如,設(shè)備700可被實現(xiàn)為具有無線功能的移動計算設(shè)備。移動計算設(shè)備可指具有處理系統(tǒng)以及移動電源或供電(諸如一個或多個電池)的任何設(shè)備。
如上文所描述的,移動計算設(shè)備的示例可以包括個人計算機(PC)、膝上型計算機、超膝上型計算機、平板電腦、觸摸板、便攜式計算機、手持式計算機、掌上電腦、個人數(shù)字助理(PDA)、蜂窩電話、蜂窩電話/PDA的組合、電視機、智能設(shè)備(例如,智能電話、智能平板電腦或智能電視機)、移動因特網(wǎng)設(shè)備(MID)、消息傳送設(shè)備、數(shù)據(jù)通信設(shè)備等等。
移動計算設(shè)備的示例還可以包括被配置為由人佩戴的計算機,諸如腕計算機、手指計算機、環(huán)計算機、眼鏡計算機、皮帶計算機、臂帶計算機、鞋計算機、衣服計算機,及任何其他類型的可佩戴計算機。例如,移動計算設(shè)備可被實現(xiàn)為能夠執(zhí)行計算機應(yīng)用以及語音通信、和/或數(shù)據(jù)通信的智能電話。盡管已經(jīng)以實現(xiàn)為智能電話的移動計算設(shè)備為例描述了一些實施例,但可理解其他實施例也可利用其他無線移動計算設(shè)備來實現(xiàn)。
如圖7所示,設(shè)備700可包括外殼702、顯示器704、輸入/輸出(I/O)設(shè)備706、以及天線708。設(shè)備700還可包括導航特征710。顯示器704可以包括用于顯示適合于移動計算設(shè)備的信息的任何合適的顯示單元。I/O設(shè)備706可以包括用于向移動計算設(shè)備中輸入信息的任何合適的I/O設(shè)備。例如,I/O設(shè)備706可包括字母數(shù)字鍵盤、數(shù)字小鍵盤、觸摸板、輸入鍵、按鈕、開關(guān)、往復(fù)式開關(guān)、麥克風、揚聲器、語音識別設(shè)備、以及軟件等等。信息還可以通過麥克風的方式輸入到設(shè)備700中。該信息可通過語音識別設(shè)備數(shù)字化。
示例1:
此處描述了用于在計算設(shè)備的中央處理單元(CPU)和輸入/輸出(I/O)設(shè)備之間共享存儲器的方法。該方法包括在物理存儲器內(nèi)分配表面。該方法包括將表面映射到CPU頁面表內(nèi)的多個虛擬存儲器地址。該方法還包括將表面映射到基于表面的I/O設(shè)備頁面表內(nèi)的多個圖形虛擬存儲器地址。該方法還包括固定表面。
可以通過表面在CPU和I/O設(shè)備之間共享存儲器,而不必將數(shù)據(jù)從CPU存儲器復(fù)制到I/O設(shè)備存儲器。可以響應(yīng)于來自在計算設(shè)備的CPU上運行的應(yīng)用的輸入,分配表面。另外,該方法可以由計算設(shè)備的驅(qū)動器執(zhí)行。
來自CPU和I/O設(shè)備的緩存的數(shù)據(jù)可以與在CPU和I/O設(shè)備之間共享的末級緩存(LLC)一致??梢詫⒉僮鲝腃PU分攤到I/O設(shè)備,操作可以在I/O設(shè)備內(nèi)執(zhí)行??梢韵駽PU發(fā)送完成信號,其中,完成信號包括I/O設(shè)備已經(jīng)執(zhí)行導致了表面內(nèi)的數(shù)據(jù)的修改的某些計算的指示。另外,設(shè)備驅(qū)動器還可以在CPU和I/O設(shè)備之間同步對數(shù)據(jù)的處理。
示例2:
此處描述了一種計算設(shè)備。該計算設(shè)備包括被配置為執(zhí)行所存儲的指令的中央處理單元(CPU)和存儲這些指令的存儲設(shè)備。存儲設(shè)備包括處理器可執(zhí)行代碼,當由CPU執(zhí)行時,處理器可執(zhí)行代碼被配置成在物理存儲器內(nèi)分配表面。計算設(shè)備還可包括圖形處理單元(GPU)和GPU頁面表。表面可以被映射到CPU頁面表內(nèi)的多個虛擬存儲器地址。表面也可以被映射到GPU頁面表內(nèi)的多個虛擬存儲器地址。計算設(shè)備可以固定表面。
可以在CPU和GPU之間共享物理存儲器,而不必將數(shù)據(jù)從CPU存儲器復(fù)制到GPU存儲器。進一步地,CPU和GPU可以位于計算設(shè)備內(nèi)的同一管芯上。CPU和GPU可以共享末級緩存(LLC),其中,LLC可以從CPU或GPU的任何緩存檢索數(shù)據(jù)。CPU和GPU可以包括統(tǒng)一存儲器架構(gòu)(UMA)。
處理器可執(zhí)行代碼可以被配置成響應(yīng)于來自在計算設(shè)備的CPU上運行的應(yīng)用的輸入,分配表面。可以通過將虛擬地址轉(zhuǎn)換為物理地址,將CPU頁面表和GPU頁面表中的虛擬存儲器地址映射到表面內(nèi)的物理位置。驅(qū)動器可以被配置成啟動處理器可執(zhí)行代碼的執(zhí)行。另外,計算設(shè)備還可包括無線電和顯示器,且該無線電和顯示器可被通信地至少耦合至中央處理單元。
示例3:
此處描述了其中存儲有指令的至少一個有形的機器可讀介質(zhì)。響應(yīng)于在計算設(shè)備上執(zhí)行,指令導致計算設(shè)備在物理存儲器內(nèi)生成表面。指令還導致計算設(shè)備將表面映射到若干個CPU虛擬存儲器地址,并將表面映射到若干個GPU虛擬存儲器地址。還可以固定表面。
可以在CPU和GPU之間共享物理存儲器,而不必將數(shù)據(jù)從CPU存儲器復(fù)制到GPU存儲器。進一步地,指令還可以導致來自CPU和GPU的緩存的數(shù)據(jù)與末級緩存(LLC)一致。另外,指令還可以導致計算設(shè)備響應(yīng)于來自在計算設(shè)備的CPU上運行的應(yīng)用的輸入,分配表面。
要理解的是,上述示例中的特定細節(jié)可被用在一個或多個實施例中的任何地方。例如,上述計算設(shè)備的所有任選特征也可相對于此處描述的方法或計算機可讀介質(zhì)而被實現(xiàn)。進一步,盡管已經(jīng)在此處使用過程流程圖和/或狀態(tài)圖來描述各實施例,但本發(fā)明不限于此處的那些圖或相應(yīng)的描述。例如,流程不必經(jīng)過每個所示的框或狀態(tài)或以此處所示和所述的完全相同的順序進行。
本發(fā)明不限于此處列出的特定細節(jié)。實際上,受益于本公開的本領(lǐng)域的技術(shù)人員將理解,可在本發(fā)明的范圍內(nèi)進行來自上述描述和附圖的很多其它變型。因此,由所附權(quán)利要求書(包括對其進行的任何修改)定義本發(fā)明的范圍。