本申請(qǐng)是申請(qǐng)日為2013年6月19日并且申請(qǐng)?zhí)枮?01380037973.6的同名中國(guó)專(zhuān)利申請(qǐng)的分案申請(qǐng)。
本發(fā)明通常涉及在計(jì)算系統(tǒng)內(nèi)的中央處理單元(cpu)和圖形處理單元(gpu)之間的共享虛擬存儲(chǔ)器。更具體地,本發(fā)明涉及在cpu和gpu之間共享虛擬存儲(chǔ)器。
背景技術(shù):
現(xiàn)代i/o設(shè)備可包括與很多cpu的計(jì)算機(jī)處理能力匹敵的計(jì)算機(jī)處理能力。作為結(jié)果,像計(jì)算設(shè)備的gpu一樣,在傳統(tǒng)上由cpu執(zhí)行的計(jì)算任務(wù)的一部分可被卸載到i/o設(shè)備,從而提高了cpu的效率。
附圖說(shuō)明
圖1是可根據(jù)實(shí)施例使用的計(jì)算設(shè)備的方框圖;
圖2a和2b是根據(jù)實(shí)施例的可用于實(shí)現(xiàn)共享虛擬存儲(chǔ)器的過(guò)程的統(tǒng)一存儲(chǔ)器架構(gòu)(uma)的示意圖;
圖3是示出根據(jù)實(shí)施例的共享虛擬存儲(chǔ)器的方法的過(guò)程流程圖;
圖4是示出根據(jù)實(shí)施例的用于處理共享虛擬存儲(chǔ)器的方法的過(guò)程流程圖;
圖5是示出根據(jù)實(shí)施例的存儲(chǔ)共享虛擬存儲(chǔ)器的代碼的有形、非暫時(shí)性、計(jì)算機(jī)可讀介質(zhì)的方框圖;
圖6是用于實(shí)現(xiàn)共享物理存儲(chǔ)器的示例性系統(tǒng)的方框圖;以及
圖7是可體現(xiàn)圖6的系統(tǒng)的小型設(shè)備的示意圖。
相同的數(shù)字在全部本公開(kāi)和附圖中使用來(lái)標(biāo)注相似的部件和特征。在100系列中的數(shù)字指最初在圖1中找到的特征;在200系列中的數(shù)字指最初在圖2中找到的特征;依此類(lèi)推。
具體實(shí)施方式
當(dāng)前的操作系統(tǒng)和圖形接口將gpu作為i/o設(shè)備管理,而不是將gpu作為類(lèi)似于cpu的處理器管理。通過(guò)將gpu作為i/o設(shè)備管理,cpu和gpu具有物理存儲(chǔ)器,其具有單獨(dú)的物理地址域和單獨(dú)的虛擬尋址方案。當(dāng)將計(jì)算任務(wù)卸載到gpu時(shí),數(shù)據(jù)從cpu的物理地址域拷貝到gpu的物理地址域。gpu可重構(gòu)數(shù)據(jù)或配置編譯器以遍歷數(shù)據(jù)結(jié)構(gòu)。此外,gpu可使用其自己的虛擬尋址方案來(lái)訪問(wèn)所拷貝的數(shù)據(jù)。
通過(guò)將在傳統(tǒng)上由計(jì)算設(shè)備的cpu執(zhí)行的計(jì)算任務(wù)的一部分卸載到計(jì)算設(shè)備的gpu,可提高cpu的效率。為了將任務(wù)卸載到gpu,可在cpu的物理存儲(chǔ)器到gpu的物理存儲(chǔ)器之間傳送數(shù)據(jù)??墒褂眠m合于cpu的技術(shù)(例如樹(shù)和鏈表)構(gòu)造數(shù)據(jù)。樹(shù)和鏈表是基于指針的數(shù)據(jù)結(jié)構(gòu),其中cpu使用在各種節(jié)點(diǎn)處的指針遍歷樹(shù)或鏈表。例如,鏈表是包括一組節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)。每個(gè)節(jié)點(diǎn)包含兩個(gè)字段、整數(shù)值和到列表中的下一節(jié)點(diǎn)的鏈路。最后一個(gè)節(jié)點(diǎn)鏈接到表示列表的末尾的終止符。
為了遍歷鏈表,gpu一般重構(gòu)數(shù)據(jù)或配置gpu編譯器以遍歷列表。gpu也可從事指針雕鏤通過(guò)基于指針的結(jié)構(gòu),以便在數(shù)據(jù)拷貝到gpu存儲(chǔ)器之后訪問(wèn)數(shù)據(jù)。指針雕鏤指遍歷指針的很多級(jí)別以便訪問(wèn)期望指針的過(guò)程。數(shù)據(jù)重構(gòu)、編譯器配置、以及當(dāng)將計(jì)算任務(wù)卸載到gpu時(shí)出現(xiàn)的指針雕鏤可降低通過(guò)將任務(wù)卸載到gpu而得到的任何效率。因此,在本文描述的實(shí)施例涉及在計(jì)算設(shè)備的cpu和gpu之間的虛擬存儲(chǔ)器的共享。可在沒(méi)有重構(gòu)數(shù)據(jù)、配置gpu編譯器以消費(fèi)數(shù)據(jù)、或指針雕鏤的情況下共享虛擬存儲(chǔ)器。
在各種實(shí)施例中,uma通過(guò)給cpu和gpu提供相同的虛擬存儲(chǔ)器和相同的物理存儲(chǔ)器,來(lái)提供在cpu和gpu之間的共享虛擬存儲(chǔ)器。在實(shí)施例中,物理存儲(chǔ)器可在cpu和gpu之間分割。此外,物理存儲(chǔ)器可以是由計(jì)算設(shè)備的操作系統(tǒng)分配的分頁(yè)系統(tǒng)存儲(chǔ)器。此外在一些實(shí)施例中,cpu和gpu在物理上位于同一管芯上。因此,cpu和gpu可共享包含在物理存儲(chǔ)器內(nèi)的數(shù)據(jù),而不將數(shù)據(jù)從gpu的地址空間拷貝到cpu的地址空間,反之亦然。這可通過(guò)例如降低用于在cpu和gpu之間共享數(shù)據(jù)的時(shí)間和功率消耗來(lái)減小將計(jì)算任務(wù)從cpu卸載到gpu的成本。
在下面的描述和權(quán)利要求中,可使用術(shù)語(yǔ)“耦合”和“連接”連同其衍生詞。應(yīng)理解,這些術(shù)語(yǔ)并不打算作為彼此的同義詞。更確切地,在特定的實(shí)施例中,“連接”可用于指示兩個(gè)或多個(gè)元件彼此直接物理或電接觸?!榜詈稀笨梢庵竷蓚€(gè)或多個(gè)元件直接物理或電接觸。然而“耦合”也可意指兩個(gè)或多個(gè)元件彼此不直接接觸,但然而仍然彼此協(xié)作或交互作用。
一些實(shí)施例可在硬件、固件、以及軟件之一或組合中實(shí)現(xiàn)。一些實(shí)施例也可被實(shí)現(xiàn)為存儲(chǔ)在機(jī)器可讀介質(zhì)上的指令,其可由計(jì)算平臺(tái)讀取并執(zhí)行以執(zhí)行本文描述的操作。機(jī)器可讀介質(zhì)可包括用于存儲(chǔ)或傳輸機(jī)器(例如計(jì)算機(jī))可讀形式的信息的任何機(jī)制。例如,機(jī)器可讀介質(zhì)除了別的以外還可包括:只讀存儲(chǔ)器(rom);隨機(jī)存取存儲(chǔ)器(ram);磁盤(pán)存儲(chǔ)介質(zhì);光盤(pán)存儲(chǔ)介質(zhì);閃存設(shè)備;或電、光、聲或其它形式的傳播信號(hào),例如載波、紅外信號(hào)、數(shù)字信號(hào)、或傳輸和/或接收信號(hào)的接口。
實(shí)施例是實(shí)現(xiàn)或示例。在說(shuō)明書(shū)中對(duì)“實(shí)施例”、“一個(gè)實(shí)施例”、“一些實(shí)施例”、“各種實(shí)施例”、或“其它實(shí)施例”的提及意指關(guān)于實(shí)施例描述的特定特征、結(jié)構(gòu)、或特性包括在發(fā)明的至少一些實(shí)施例中,但不一定是所有實(shí)施例?!皩?shí)施例”、“一個(gè)實(shí)施例”、或“一些實(shí)施例”的各種出現(xiàn)不一定都指相同的實(shí)施例。來(lái)自實(shí)施例的元件或方面可與另一實(shí)施例的元件或方面組合。
不是在本文中描述和示出的所有部件、特征、結(jié)構(gòu)、特性等都需要包括在特定的實(shí)施例中。如果例如說(shuō)明書(shū)陳述部件、特征、結(jié)構(gòu)、或特性“may(可以)”、“might(可能)”、“can(可以)”或“could(可以)”被包括,則那個(gè)特定的部件、特征、結(jié)構(gòu)、或特性不是必需被包括。如果說(shuō)明書(shū)或權(quán)利要求提到“a(一個(gè))”或“an(一個(gè))”元件,則那并不意味著只有一個(gè)元件。如果說(shuō)明書(shū)或權(quán)利要求提到“額外的”元件,則那并不排除有多于一個(gè)額外的元件。
應(yīng)注意,雖然關(guān)于特定的實(shí)現(xiàn)描述了一些實(shí)施例,根據(jù)一些實(shí)施例,其它實(shí)現(xiàn)是可能的。此外,在附圖中示出和/或在本文描述的電路元件或其它特征的布置和/或順序不需要以所示和所述的特定的方式布置。根據(jù)一些實(shí)施例,很多其它布置是可能的。
在附圖中所示的每個(gè)系統(tǒng)中,在一些情況下的元件可每個(gè)具有相同的附圖標(biāo)記或不同的附圖標(biāo)記以暗示所表示的元件可以是不同的和/或類(lèi)似的。然而,元件可足夠靈活以具有不同的實(shí)現(xiàn)并與本文所示或所述的一些或所有系統(tǒng)一起工作。在附圖中所示的各種元件可以是相同的或不同的。哪個(gè)被稱(chēng)為第一元件而哪個(gè)被稱(chēng)為第二元件是任意的。
圖1是可根據(jù)實(shí)施例使用的計(jì)算設(shè)備100的方框圖。計(jì)算設(shè)備100除了別的以外還可以是例如膝上型計(jì)算機(jī)、臺(tái)式計(jì)算機(jī)、平板計(jì)算機(jī)、移動(dòng)設(shè)備、或服務(wù)器。計(jì)算設(shè)備100可包括適合于執(zhí)行所存儲(chǔ)的指令的中央處理單元(cpu)102以及存儲(chǔ)可由cpu102執(zhí)行的指令的存儲(chǔ)器設(shè)備104。cpu可由總線106耦合到存儲(chǔ)器設(shè)備104。此外,cpu102可以是單核處理器、多核處理器、計(jì)算機(jī)集群、或任何數(shù)量的其它配置。此外,計(jì)算設(shè)備100可包括多于一個(gè)cpu102。由cpu102執(zhí)行的指令可用于實(shí)現(xiàn)共享虛擬存儲(chǔ)器。
計(jì)算設(shè)備100也可包括圖形處理單元(gpu)108。gpu108是在計(jì)算設(shè)備100內(nèi)的輸入/輸出設(shè)備。如所示,cpu102可通過(guò)總線106耦合到gpu108。然而在一些實(shí)施例中,gpu108位于與計(jì)算設(shè)備100內(nèi)的gpu102相同的管芯上。以這種方式,cpu102和gpu被物理地連接,使得在cpu102和gpu108之間經(jīng)由總線106的連接可被消除。此外,在實(shí)施例中,cpu102和gpu108可被包括在計(jì)算設(shè)備100的統(tǒng)一存儲(chǔ)器架構(gòu)內(nèi),如關(guān)于圖2討論的。
gpu108可配置成在計(jì)算設(shè)備100內(nèi)執(zhí)行任何數(shù)量的圖形操作。例如,gpu108可配置成:渲染或操縱將被顯示給計(jì)算設(shè)備100的用戶(hù)的圖形圖像、圖形幀、視頻等。在一些實(shí)施例中,gpu108包括多個(gè)圖形引擎(未示出),其中每個(gè)圖形引擎配置成執(zhí)行特定的圖形任務(wù)或執(zhí)行特定類(lèi)型的工作負(fù)荷。
存儲(chǔ)器設(shè)備104可包括隨機(jī)存取存儲(chǔ)器(ram)、只讀存儲(chǔ)器(rom)、閃存或任何其它適當(dāng)?shù)拇鎯?chǔ)器系統(tǒng)。例如,存儲(chǔ)器設(shè)備104可包括動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(dram)。存儲(chǔ)器設(shè)備104可包括配置成執(zhí)行用于實(shí)現(xiàn)共享虛擬存儲(chǔ)器的指令的設(shè)備驅(qū)動(dòng)器110。設(shè)備驅(qū)動(dòng)器110可以是軟件、應(yīng)用程序、應(yīng)用代碼等。在一些實(shí)施例中,設(shè)備驅(qū)動(dòng)器110是用戶(hù)模式驅(qū)動(dòng)器。
存儲(chǔ)器設(shè)備104還包括多級(jí)緩存112,其包括最后一級(jí)緩存(llc)114、第2級(jí)緩存116、以及第1級(jí)緩存118。雖然為了說(shuō)明使用多級(jí)緩存112,任何緩存可被包括在計(jì)算設(shè)備100中。多級(jí)緩存112可以是存儲(chǔ)cpu102的頻繁使用的數(shù)據(jù)的較小子集的較小的、較快的存儲(chǔ)器。較大的數(shù)據(jù)集可存儲(chǔ)在存儲(chǔ)設(shè)備120中。存儲(chǔ)設(shè)備120是物理存儲(chǔ)器,例如硬盤(pán)驅(qū)動(dòng)器、光盤(pán)驅(qū)動(dòng)器、拇指驅(qū)動(dòng)器、驅(qū)動(dòng)器的陣列、或其中任何組合。存儲(chǔ)設(shè)備120也可包括遠(yuǎn)程存儲(chǔ)驅(qū)動(dòng)器。cpu102訪問(wèn)存儲(chǔ)在存儲(chǔ)設(shè)備120中的數(shù)據(jù)的時(shí)間量相對(duì)于cpu102訪問(wèn)存儲(chǔ)器104中的多級(jí)緩存112所花費(fèi)的時(shí)間量可以更慢。
在一些實(shí)施例中,llc114在cpu102和gpu108之間被共享,而第2級(jí)緩存116和第1級(jí)緩存118可被隱藏以避開(kāi)gpu108,使得gpu108不能直接訪問(wèn)在第2級(jí)緩存116和第1級(jí)緩存118中緩存的數(shù)據(jù)。然而,llc114可讀和寫(xiě)存儲(chǔ)在第2級(jí)緩存116和第1級(jí)緩存118中的數(shù)據(jù)。因而當(dāng)gpu108請(qǐng)求緩存在第2級(jí)緩存116或第1級(jí)緩存118中的數(shù)據(jù)時(shí),llc114能夠從第2級(jí)緩存116和第1級(jí)緩存118取回?cái)?shù)據(jù)用于由gpu108處理。以這種方式,llc114確保在計(jì)算設(shè)備100內(nèi)的數(shù)據(jù)一致性。如在本文使用的,一致性指一種狀態(tài),其中由cpu102和gpu108訪問(wèn)的數(shù)據(jù)是相同的。因此,cpu102將通過(guò)確保數(shù)據(jù)與llc114一致來(lái)確保來(lái)自存儲(chǔ)設(shè)備120的數(shù)據(jù)在llc114、第2級(jí)緩存116、以及第1級(jí)緩存118中準(zhǔn)確地被反映,以便能夠與gpu108共享正確的數(shù)據(jù)。
此外,在實(shí)施例中,cpu和gpu可訪問(wèn)任何級(jí)別的存儲(chǔ)器。然而,來(lái)自其它級(jí)別的存儲(chǔ)器的數(shù)據(jù)可能是陳舊的,而llc114包括最近的數(shù)據(jù)。此外在實(shí)施例中,cpu和gpu可使用任何相互可訪問(wèn)的存儲(chǔ)單元來(lái)執(zhí)行共享虛擬存儲(chǔ)器。任何相互可訪問(wèn)的存儲(chǔ)單元可包括但不限于存儲(chǔ)器設(shè)備104的任何區(qū)域、存儲(chǔ)器120的任何區(qū)域、聯(lián)網(wǎng)存儲(chǔ)單元、拇指驅(qū)動(dòng)器、或其任何組合。
存儲(chǔ)設(shè)備120包括表面122以及配置成在計(jì)算設(shè)備100上運(yùn)行的任何數(shù)量的應(yīng)用124。表面122是設(shè)備驅(qū)動(dòng)器110所分配的物理存儲(chǔ)器的指定部分??苫趯?duì)在表面122內(nèi)的物理存儲(chǔ)器的內(nèi)容執(zhí)行的處理來(lái)更新表面。在實(shí)施例中,當(dāng)應(yīng)用124由cpu104執(zhí)行時(shí),應(yīng)用124可請(qǐng)求表面由設(shè)備驅(qū)動(dòng)器110分配。此外,在cpu102上運(yùn)行的應(yīng)用124可根據(jù)應(yīng)用124所要求的存儲(chǔ)器分配通過(guò)規(guī)定表面122的期望尺寸和特征來(lái)配置表面122。此外,可例如響應(yīng)于來(lái)自計(jì)算設(shè)備100的cpu102的輸入來(lái)執(zhí)行表面分配。此外,在實(shí)施例中,表面可被標(biāo)記為llc可緩存的。通過(guò)將表面122指定為llc可緩存的,從表面122內(nèi)的單元緩存的數(shù)據(jù)可被緩存到llc114,且因而在llc中可由cpu102和gpu108訪問(wèn)。
在實(shí)施例中,設(shè)備驅(qū)動(dòng)器通知內(nèi)核模式驅(qū)動(dòng)器:表面將是共享虛擬存儲(chǔ)器表面。內(nèi)核模式驅(qū)動(dòng)器將為表面保存cpu虛擬存儲(chǔ)器地址。當(dāng)內(nèi)核模式驅(qū)動(dòng)器將表面分頁(yè)成圖形存儲(chǔ)器時(shí),內(nèi)核模式驅(qū)動(dòng)器可將分頁(yè)從原始圖形虛擬地址重新路由到等于cpu地址的圖形虛擬地址。此外,在實(shí)施例中,虛擬圖形地址是唯一地屬于給定應(yīng)用的專(zhuān)用圖形地址空間。
存儲(chǔ)器管理單元(mmu)126可用于管理對(duì)存儲(chǔ)在表面122內(nèi)的數(shù)據(jù)的訪問(wèn)。mmu126可將cpu102和gpu108的虛擬地址空間分成地址空間的各種頁(yè)面。cpu102和gpu108每個(gè)具有相同的虛擬地址空間。虛擬地址空間通過(guò)將在計(jì)算系統(tǒng)內(nèi)執(zhí)行的各種應(yīng)用124隔離到虛擬地址的特定子集而允許包含在表面122內(nèi)的數(shù)據(jù)的保護(hù)。通過(guò)虛擬地址空間的使用,一個(gè)應(yīng)用124將不訪問(wèn)另一應(yīng)用124的數(shù)據(jù)。因此,mmu126包括cpu頁(yè)表128和gpu頁(yè)表130。cpu頁(yè)表包含映射到表面122內(nèi)的物理地址單元的cpu的虛擬地址。類(lèi)似地,gpu頁(yè)表包含映射到表面122內(nèi)的物理地址單元的gpu的虛擬地址。gpu的虛擬地址相當(dāng)于cpu的虛擬地址。因此,在本文描述的共享虛擬存儲(chǔ)器過(guò)程中,cpu頁(yè)表128可包括cpu虛擬地址空間到物理地址空間的映射。物理地址空間對(duì)應(yīng)于在表面122內(nèi)的物理地址。同樣,gpu頁(yè)表130可包括gpu虛擬地址空間到同一物理地址空間的映射。
在各種實(shí)施例中,來(lái)自cpu頁(yè)表128的虛擬存儲(chǔ)器地址和來(lái)自gpu頁(yè)表130的圖形虛擬存儲(chǔ)器地址經(jīng)由轉(zhuǎn)換(translation)過(guò)程映射到表面122的物理存儲(chǔ)器頁(yè)面。轉(zhuǎn)換過(guò)程可用于將任何虛擬存儲(chǔ)器地址變換成對(duì)應(yīng)的物理地址。例如,可經(jīng)由頁(yè)表行走來(lái)執(zhí)行轉(zhuǎn)換過(guò)程,頁(yè)表行走可基于用于將在頁(yè)表內(nèi)的虛擬存儲(chǔ)器地址變換成頁(yè)表內(nèi)的物理存儲(chǔ)器地址的特定轉(zhuǎn)換表來(lái)執(zhí)行。此外,在實(shí)施例中,轉(zhuǎn)換旁視緩沖器可用于將cpu和gpu的虛擬地址轉(zhuǎn)換成在其各自的頁(yè)表內(nèi)的物理地址空間。
在轉(zhuǎn)換或變換過(guò)程被執(zhí)行之后,表面122可被釘住(pin)。釘住表面指保護(hù)表面,使得物理單元和對(duì)應(yīng)的物理地址不改變。因此,釘住表面122確保在虛擬地址空間和物理地址空間之間的“硬”映射。在地址空間之間的硬映射是在表面被釘住之后不改變的映射。如果表面未被釘住,則頁(yè)面錯(cuò)誤可能產(chǎn)生,或錯(cuò)誤的數(shù)據(jù)可能被處理,因?yàn)楸砻娴奈锢韱卧赡茏兓?/p>
在實(shí)施例中,應(yīng)用124可在cpu102上執(zhí)行,并請(qǐng)求表面(例如表面122)以便執(zhí)行操作,例如處理數(shù)據(jù)。cpu102可將操作切換到gpu108。因?yàn)檫@兩個(gè)虛擬存儲(chǔ)器是相當(dāng)?shù)那翼?yè)表已經(jīng)映射到表面122,gpu可通過(guò)訪問(wèn)表面來(lái)開(kāi)始已經(jīng)由cpu102卸載的操作的立即執(zhí)行,而不將數(shù)據(jù)拷貝到另一地址空間。此外,數(shù)據(jù)不需要被重構(gòu)。當(dāng)操作由cpu102完成時(shí),gpu108可用信號(hào)通知cpu102操作完成。cpu102可接著繼續(xù)處理數(shù)據(jù),而不將數(shù)據(jù)拷貝回到原始地址空間。
當(dāng)由應(yīng)用124請(qǐng)求的操作被gpu108執(zhí)行時(shí),對(duì)表面122的修改可出現(xiàn)。根據(jù)本文描述的共享虛擬存儲(chǔ)器過(guò)程,對(duì)表面122的這樣的修改對(duì)cpu102是完全可見(jiàn)的。因此,可在gpu108和cpu102之間共享數(shù)據(jù),而不將數(shù)據(jù)從gpu108拷貝到cpu102,或反之亦然。
cpu102可通過(guò)總線106連接到適合于將計(jì)算設(shè)備100連接到一個(gè)或多個(gè)i/o設(shè)備134的輸入/輸出(i/o)設(shè)備接口132。i/o設(shè)備134可包括例如鍵盤(pán)和指點(diǎn)設(shè)備,其中指點(diǎn)設(shè)備除了別的以外還可包括觸控板或觸摸屏。i/o設(shè)備134可以是計(jì)算設(shè)備100的內(nèi)置部件,或可以是在外部連接到計(jì)算設(shè)備100的設(shè)備。
cpu102也可通過(guò)總線106鏈接到適合于將計(jì)算設(shè)備100連接到顯示設(shè)備138的顯示器接口136。顯示設(shè)備138可包括顯示屏,其為計(jì)算設(shè)備100的內(nèi)置部件。顯示設(shè)備138除了別的以外還可包括在外部連接到計(jì)算設(shè)備100的計(jì)算機(jī)監(jiān)視器、電視機(jī)、或投影儀。
網(wǎng)絡(luò)接口控制器(nic)140可適合于通過(guò)總線106將計(jì)算設(shè)備100連接到網(wǎng)絡(luò)142。網(wǎng)絡(luò)142除了別的以外還可以是廣域網(wǎng)(wan)、局域網(wǎng)(lan)、或互聯(lián)網(wǎng)。
圖1的方框圖并不旨在指示計(jì)算設(shè)備100包括圖1所示的所有部件。此外,計(jì)算設(shè)備100可包括未在圖1中示出的任何數(shù)量的額外部件,取決于特定實(shí)現(xiàn)的細(xì)節(jié)。
圖2a和2b是根據(jù)實(shí)施例的可用于在計(jì)算設(shè)備100的cpu102和gpu108之間實(shí)現(xiàn)共享虛擬存儲(chǔ)器的統(tǒng)一存儲(chǔ)器架構(gòu)200的示意圖。類(lèi)似地編號(hào)的項(xiàng)目如關(guān)于圖1描述的。uma200可包括例如cpu頁(yè)表128、gpu頁(yè)表130、以及計(jì)算設(shè)備100的表面122。
uma200可實(shí)現(xiàn)在cpu102和gpu108之間的共享虛擬存儲(chǔ)器,而沒(méi)有在cpu102和gpu108之間的任何類(lèi)型的數(shù)據(jù)拷貝。此外,沒(méi)有數(shù)據(jù)重構(gòu)或編譯器配置出現(xiàn)。這可通過(guò)允許cpu102和gpu108共享表面122并具有在其各自的頁(yè)表中的相當(dāng)?shù)奶摂M地址來(lái)實(shí)現(xiàn)。如上面描述的,表面122可以是物理存儲(chǔ)設(shè)備的一部分。表面包括任何數(shù)量的物理存儲(chǔ)器單元202。物理存儲(chǔ)器單元202可被組織成分頁(yè)存儲(chǔ)器格式,其中頁(yè)面是在表面122內(nèi)的物理存儲(chǔ)器的固定長(zhǎng)度的塊。
cpu頁(yè)表128可包括多個(gè)cpu虛擬存儲(chǔ)器地址204,且gpu頁(yè)表130也可包括多個(gè)圖形虛擬存儲(chǔ)器地址204。cpu虛擬存儲(chǔ)器地址204構(gòu)成cpu虛擬地址空間,而圖形虛擬存儲(chǔ)器地址204構(gòu)成圖形虛擬地址空間。每個(gè)虛擬地址空間映射到在每個(gè)頁(yè)表中的物理地址206。因此,cpu虛擬存儲(chǔ)器地址204和圖形虛擬存儲(chǔ)器地址204都映射到分別在cpu頁(yè)表128和gpu頁(yè)表130內(nèi)的同一組物理地址206。
物理地址206使cpu102和gpu108(圖1)能夠處理存儲(chǔ)在表面122內(nèi)的物理單元202處的數(shù)據(jù)。在各種實(shí)施例中,基于由應(yīng)用(例如應(yīng)用124(圖1))訪問(wèn)的特定cpu虛擬地址204來(lái)分配表面122。一旦表面122被分配,每個(gè)物理地址208就映射到在cpu頁(yè)表128內(nèi)的對(duì)應(yīng)cpu虛擬地址204,如圖2所示。表面122的cpu虛擬地址204被共享給圖形存儲(chǔ)器。當(dāng)應(yīng)用124(圖1)的計(jì)算任務(wù)被卸載到gpu108時(shí),表面122可被分頁(yè)成圖形存儲(chǔ)器。當(dāng)表面122被分頁(yè)成圖形存儲(chǔ)器時(shí),頁(yè)面將從原始圖形虛擬地址重新路由到等于cpu虛擬地址204的圖形虛擬地址206。gpu虛擬圖形地址空間是唯一地屬于給定應(yīng)用的專(zhuān)用圖形地址空間。
在gpu頁(yè)表130內(nèi)的圖形虛擬存儲(chǔ)器地址204可與gpu頁(yè)表128同步,使得cpu虛擬地址和gpu虛擬存儲(chǔ)器地址映射到同一組物理地址206。物理地址206對(duì)應(yīng)于在表面122內(nèi)的物理單元202。因此,可在cpu102和gpu108之間直接共享表面122。在實(shí)施例中,如果gpu108修改位于任何物理單元202處的數(shù)據(jù),則修改經(jīng)由表面122對(duì)cpu102是自動(dòng)可見(jiàn)的,而沒(méi)有任何數(shù)據(jù)拷貝或數(shù)據(jù)封送處理(marshaling)。
圖2的示意圖并不旨在指示uma200包括圖2所示的所有部件。此外,uma200可包括未在圖2中示出的任何數(shù)量的額外部件,取決于特定實(shí)現(xiàn)的細(xì)節(jié)。
圖3是示出根據(jù)實(shí)施例的在計(jì)算設(shè)備的cpu和gpu之間的共享虛擬存儲(chǔ)器的方法300的過(guò)程流程圖。在各種實(shí)施例中,方法300用于在cpu和gpu之間共享存儲(chǔ)器,而不將數(shù)據(jù)從cpu存儲(chǔ)器拷貝到gpu存儲(chǔ)器。
在一些實(shí)施例中,可在計(jì)算設(shè)備(例如計(jì)算設(shè)備100(其中cpu102和gpu108由總線106連接))上執(zhí)行方法300。在其它實(shí)施例中,cpu102和gpu108可包括在uma(例如上面關(guān)于圖2討論的uma200)中。此外,方法300可由計(jì)算設(shè)備的驅(qū)動(dòng)器(例如計(jì)算設(shè)備100的設(shè)備驅(qū)動(dòng)器126)執(zhí)行。
方法在塊302處以在物理存儲(chǔ)器內(nèi)的表面的分配開(kāi)始。在實(shí)施例中,可響應(yīng)于來(lái)自在計(jì)算設(shè)備的cpu上運(yùn)行的應(yīng)用的輸入而在計(jì)算設(shè)備的物理存儲(chǔ)器內(nèi)分配表面。此外,在實(shí)施例中,表面可由設(shè)備驅(qū)動(dòng)器分配。表面也可被標(biāo)記為共享虛擬存儲(chǔ)器表面。應(yīng)用或設(shè)備驅(qū)動(dòng)器可使用cpu虛擬地址從cpu訪問(wèn)表面。在實(shí)施例中,cpu虛擬地址由計(jì)算設(shè)備的操作系統(tǒng)提供到應(yīng)用或設(shè)備驅(qū)動(dòng)器。
在塊304處,基于表面來(lái)創(chuàng)建cpu虛擬地址空間。在實(shí)施例中,根據(jù)應(yīng)用的請(qǐng)求而產(chǎn)生cpu地址空間。在塊306處,表面映射到cpu虛擬地址空間。在cpu虛擬存儲(chǔ)器地址和物理地址之間的映射包括在cpu頁(yè)表內(nèi)。
在塊308處,創(chuàng)建相當(dāng)于cpu虛擬地址空間的gpu虛擬地址空間。在塊310處,表面映射到gpu虛擬地址空間。在實(shí)施例中,將物理存儲(chǔ)器頁(yè)面映射到虛擬存儲(chǔ)地址可包括轉(zhuǎn)換或變換虛擬地址以確定在系統(tǒng)存儲(chǔ)器內(nèi)的對(duì)應(yīng)物理存儲(chǔ)器頁(yè)面。當(dāng)虛擬地址轉(zhuǎn)換或變換成物理地址時(shí),在轉(zhuǎn)換過(guò)程期間找到的在虛擬地址和物理地址之間的關(guān)聯(lián)被鎖定。通過(guò)鎖定關(guān)聯(lián),對(duì)應(yīng)于在頁(yè)表中的物理地址的表面的物理單元可被分頁(yè)至緩存。當(dāng)關(guān)聯(lián)被鎖定時(shí)頁(yè)面將保留在緩存中,因?yàn)榉乐乖O(shè)備驅(qū)動(dòng)器改變表面的物理地址。
在實(shí)施例中,表面被指定為llc可緩存的。這樣的指定確保表面的物理單元被緩存到由cpu和gpu共享的llc中。由應(yīng)用使用的圖形虛擬存儲(chǔ)器地址可轉(zhuǎn)換成映射到cpu的虛擬地址的相同的物理地址。在實(shí)施例中,設(shè)備驅(qū)動(dòng)器可更新在gpu頁(yè)表內(nèi)圖形虛擬存儲(chǔ)器地址到物理地址的映射。
在塊312處,表面被釘住。通過(guò)釘住表面,防止改變?cè)诒砻鎯?nèi)的物理地址。例如,操作系統(tǒng)可改變物理地址作為其存儲(chǔ)器管理的一部分。然而,一旦表面被釘住,則防止操作系統(tǒng)改變表面的物理單元。
圖4是示出根據(jù)實(shí)施例的用于處理在計(jì)算設(shè)備的cpu和gpu之間的共享存儲(chǔ)器的方法400的過(guò)程流程圖。
在塊402處,可將操作從cpu卸載到gpu。操作可如應(yīng)用(例如應(yīng)用124(圖1))所引導(dǎo)的被卸載到gpu。此外,用于控制cpu或gpu的任何應(yīng)用編程接口(api)可用于引導(dǎo)從cpu到gpu卸載操作。在實(shí)施例中,在將操作從cpu卸載到gpu之前,可使位于表面內(nèi)的由cpu處理的任何數(shù)據(jù)與llc一致。
在塊404處,gpu可開(kāi)始處理卸載的操作。gpu訪問(wèn)在llc內(nèi)的數(shù)據(jù)和表面,以便執(zhí)行操作。在gpu請(qǐng)求不在llc中但在cpu的某個(gè)其它緩存中的數(shù)據(jù)的情況下,llc可從其它緩存取回?cái)?shù)據(jù)用于由gpu處理。
在塊406處,gpu用信號(hào)通知操作完成。完成信號(hào)可被發(fā)送到主機(jī)。在實(shí)施例中,當(dāng)操作完成時(shí),設(shè)備驅(qū)動(dòng)器使在gpu和cpu之間的操作同步。此外,在實(shí)施例中,完成信號(hào)可以是例如郵箱寫(xiě)或中斷。完成信號(hào)可指示gpu已執(zhí)行導(dǎo)致在表面內(nèi)的數(shù)據(jù)的修改的某個(gè)計(jì)算或圖形操作。在完成之后,gpu的輸出可由cpu處理。在各種實(shí)施例中,當(dāng)gpu通過(guò)從表面的任何物理單元讀取或?qū)懙奖砻娴娜魏挝锢韱卧獊?lái)處理表面時(shí),處理可出現(xiàn)在內(nèi)部緩沖器和gpu的緩存中。因此,在內(nèi)部緩沖器和gpu的緩存內(nèi)的數(shù)據(jù)與在gpu處理完成之后的llc一致。
圖3和4的過(guò)程流程圖并不旨在指示方法300和400的塊將以任何特定的順序執(zhí)行,或所有塊將被包括在每種情況下。此外,可在方法300和400中包括任何數(shù)量的額外塊,取決于特定實(shí)現(xiàn)的細(xì)節(jié)。此外,雖然本文描述的方法包括gpu,存儲(chǔ)器可在任何i/o設(shè)備(例如另一cpu或直接存儲(chǔ)器存取(dma)控制器)之間被共享。
圖5是示出根據(jù)實(shí)施例的存儲(chǔ)計(jì)算設(shè)備的cpu和gpu之間的共享虛擬存儲(chǔ)器的代碼的有形、非暫時(shí)計(jì)算機(jī)可讀介質(zhì)500的方框圖。有形、非暫時(shí)計(jì)算機(jī)可讀介質(zhì)500可由處理器502通過(guò)計(jì)算機(jī)總線504訪問(wèn)。此外,有形、非暫時(shí)計(jì)算機(jī)可讀介質(zhì)500可包括配置成引導(dǎo)處理器502執(zhí)行本文描述的方法的代碼。
本文討論的各種軟件部件可存儲(chǔ)在如在圖5中指示的有形、非暫時(shí)計(jì)算機(jī)可讀介質(zhì)500上。例如,表面分配模塊506可配置成分配包括計(jì)算設(shè)備的存儲(chǔ)器內(nèi)的多個(gè)物理存儲(chǔ)器頁(yè)面的表面。虛擬化模塊508可創(chuàng)建cpu虛擬地址空間和相當(dāng)于cpu虛擬地址空間的gpu虛擬地址空間??稍诒砻姹环猪?yè)成圖形存儲(chǔ)器時(shí)創(chuàng)建gpu虛擬地址空間。映射模塊510可配置成將表面內(nèi)的物理地址映射到cpu地址表和gpu地址表內(nèi)的虛擬存儲(chǔ)器地址。此外,釘住模塊512可配置成釘住表面,使得防止改變?cè)诒砻鎯?nèi)的物理單元。
圖5的方框圖并不旨在指示有形、非暫時(shí)計(jì)算機(jī)可讀介質(zhì)500將包括圖5所示的所有部件。此外,有形、非暫時(shí)計(jì)算機(jī)可讀介質(zhì)500可包括未在圖5中示出的任何數(shù)量的額外部件,取決于特定實(shí)現(xiàn)的細(xì)節(jié)。
圖6是用于實(shí)現(xiàn)共享物理存儲(chǔ)器的示例性系統(tǒng)600的方框圖。類(lèi)似地編號(hào)的項(xiàng)目如關(guān)于圖1、2a、以及2b描述的。在一些實(shí)施例中,系統(tǒng)600是介質(zhì)系統(tǒng)。此外,系統(tǒng)600可合并到個(gè)人計(jì)算機(jī)(pc)、膝上型計(jì)算機(jī)、超級(jí)膝上型計(jì)算機(jī)、平板、觸控板、便攜式計(jì)算機(jī)、手持計(jì)算機(jī)、掌上型計(jì)算機(jī)、個(gè)人數(shù)字助理(pda)、蜂窩電話、組合蜂窩電話/pda、電視機(jī)、智能設(shè)備(例如智能電話、智能平板計(jì)算機(jī)或智能電視機(jī))、移動(dòng)互聯(lián)網(wǎng)設(shè)備(mid)、消息收發(fā)設(shè)備、數(shù)據(jù)通信設(shè)備等中。
在各種實(shí)施例中,系統(tǒng)600包括耦合到顯示器604的平臺(tái)602。平臺(tái)602可從內(nèi)容設(shè)備(例如內(nèi)容服務(wù)設(shè)備606或內(nèi)容分發(fā)設(shè)備608,或其它類(lèi)似的內(nèi)容源)接收內(nèi)容。包括一個(gè)或多個(gè)導(dǎo)航特征的導(dǎo)航控制器610可用于與例如平臺(tái)602和/或顯示器604交互作用。下面更詳細(xì)地描述這些部件中的每個(gè)。
平臺(tái)602可包括芯片集612、中央處理單元(cpu)102、存儲(chǔ)器設(shè)備104、存儲(chǔ)設(shè)備120、圖形子系統(tǒng)614、應(yīng)用124、以及無(wú)線電裝置616的任何組合。芯片集612可提供在cpu102、存儲(chǔ)器設(shè)備104、存儲(chǔ)設(shè)備120、圖形子系統(tǒng)614、應(yīng)用124、以及無(wú)線電裝置616當(dāng)中的通信。例如,芯片集612可包括能夠提供與存儲(chǔ)設(shè)備120的相互通信的存儲(chǔ)適配器(未示出)。
cpu102可被實(shí)現(xiàn)為復(fù)雜指令集計(jì)算機(jī)(cisc)或精簡(jiǎn)指令集計(jì)算機(jī)(risc)處理器、x86指令集可兼容的處理器、多核心或任何其它微處理器或中央處理單元(cpu)。在一些實(shí)施例中,cpu102包括雙核處理器、雙核移動(dòng)處理器等。
存儲(chǔ)器設(shè)備104可被實(shí)現(xiàn)為易失性存儲(chǔ)器設(shè)備,例如但不限于隨機(jī)存取存儲(chǔ)器(ram)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(dram)、或靜態(tài)ram(sram)。存儲(chǔ)設(shè)備120可被實(shí)現(xiàn)為非易失性存儲(chǔ)設(shè)備,例如但不限于磁盤(pán)驅(qū)動(dòng)器、光盤(pán)驅(qū)動(dòng)器、磁帶驅(qū)動(dòng)器、內(nèi)部存儲(chǔ)設(shè)備、附加存儲(chǔ)設(shè)備、閃存、電池備份sdram(同步dram)、和/或網(wǎng)絡(luò)可訪問(wèn)的存儲(chǔ)設(shè)備。在一些實(shí)施例中,存儲(chǔ)設(shè)備120包括例如當(dāng)多個(gè)硬盤(pán)驅(qū)動(dòng)器被包括時(shí)增加對(duì)有價(jià)值的數(shù)字媒體的存儲(chǔ)性能增強(qiáng)保護(hù)的技術(shù)。
圖形子系統(tǒng)614可執(zhí)行圖像(例如靜止圖像)或視頻的處理用于顯示。圖形子系統(tǒng)614可包括圖形處理單元(gpu),例如gpu108、或例如視覺(jué)處理單元(vpu)。模擬或數(shù)字接口可用于通信地耦合圖形子系統(tǒng)614和顯示器604。例如,接口可以是高清多媒體接口、displayport、無(wú)線hdmi、和/或無(wú)線hd兼容技術(shù)中的任一個(gè)。圖形子系統(tǒng)614可集成到cpu102或芯片集612中。可選地,圖形子系統(tǒng)614可以是通信地耦合到芯片集612的獨(dú)立卡。
本文描述的圖形和/或視頻處理技術(shù)可在各種硬件架構(gòu)中實(shí)現(xiàn)。例如,圖形和/或視頻功能可集成在芯片集612內(nèi)。可選地,可使用分立圖形和/或視頻處理器。作為又一實(shí)施例,圖形和/或視頻功能可由通用處理器(包括多核處理器)實(shí)現(xiàn)。在另一實(shí)施例中,功能可在消費(fèi)電子設(shè)備中實(shí)現(xiàn)。
無(wú)線電裝置616可包括能夠使用各種適當(dāng)?shù)臒o(wú)線通信技術(shù)傳輸和接收信號(hào)的一個(gè)或多個(gè)無(wú)線電裝置。這樣的技術(shù)可涉及跨一個(gè)或多個(gè)無(wú)線網(wǎng)絡(luò)的通信。示例性無(wú)線網(wǎng)絡(luò)包括無(wú)線局域網(wǎng)(wlan)、無(wú)線個(gè)人區(qū)域網(wǎng)(wpan)、無(wú)線城域網(wǎng)(wman)、蜂窩網(wǎng)絡(luò)、衛(wèi)星網(wǎng)絡(luò)等。在跨這樣的網(wǎng)絡(luò)進(jìn)行通信時(shí),無(wú)線電裝置616可根據(jù)任何版本的一個(gè)或多個(gè)可應(yīng)用的標(biāo)準(zhǔn)來(lái)操作。
顯示器604可包括任何電視機(jī)型監(jiān)視器或顯示器。例如,顯示器604可包括計(jì)算機(jī)顯示屏、觸摸屏顯示器、視頻監(jiān)視器、電視機(jī)等。顯示器604可以是數(shù)字的和/或模擬的。在一些實(shí)施例中,顯示器604是全息顯示器。此外,顯示器604可以是可接收視覺(jué)投影的透明表面。這樣的投影可傳送各種形式的信息、圖形、對(duì)象等。例如,這樣的投影可以是移動(dòng)增強(qiáng)現(xiàn)實(shí)(mar)應(yīng)用的視覺(jué)覆蓋。在一個(gè)或多個(gè)應(yīng)用124的控制下,平臺(tái)602可在顯示器604上顯示用戶(hù)界面618。
內(nèi)容服務(wù)設(shè)備606可由任何國(guó)家、國(guó)際、或獨(dú)立服務(wù)主持,且因此可以是平臺(tái)602經(jīng)由例如互聯(lián)網(wǎng)可訪問(wèn)的。內(nèi)容服務(wù)設(shè)備606可耦合到平臺(tái)602和/或顯示器604。平臺(tái)602和/或內(nèi)容服務(wù)設(shè)備606可耦合到網(wǎng)絡(luò)142以將媒體信息傳遞(例如發(fā)送和/或接收)到/自網(wǎng)絡(luò)142。內(nèi)容分發(fā)設(shè)備608也可耦合到平臺(tái)602和/或顯示器604。
內(nèi)容服務(wù)設(shè)備606可包括有線電視盒、個(gè)人計(jì)算機(jī)、網(wǎng)絡(luò)、電話、或能夠分發(fā)數(shù)字信息的啟用互聯(lián)網(wǎng)的設(shè)備。此外,內(nèi)容服務(wù)設(shè)備606可包括能夠經(jīng)由網(wǎng)絡(luò)142或直接在內(nèi)容提供者和平臺(tái)602或顯示器604之間單向或雙向地傳遞內(nèi)容的任何其它類(lèi)似的設(shè)備。將認(rèn)識(shí)到,內(nèi)容可經(jīng)由網(wǎng)絡(luò)142單向和/或雙向地傳遞到/自系統(tǒng)600中的任一部件和內(nèi)容提供者。內(nèi)容的例子可包括任何媒體信息,包括例如視頻、音樂(lè)、醫(yī)療和游戲信息等。
內(nèi)容服務(wù)設(shè)備606可接收內(nèi)容,例如有線電視節(jié)目,包括媒體信息、數(shù)字信息、或其它內(nèi)容。內(nèi)容提供者的例子除了別的以外還可包括任何有線或衛(wèi)星電視或廣播或互聯(lián)網(wǎng)內(nèi)容提供者。
在一些實(shí)施例中,平臺(tái)602從包括一個(gè)或多個(gè)導(dǎo)航特征的導(dǎo)航控制器610接收控制信號(hào)。導(dǎo)航控制器610的導(dǎo)航特征可用于與例如用戶(hù)接口618交互作用。導(dǎo)航控制器610可以是指點(diǎn)設(shè)備,其可以是允許用戶(hù)將空間(例如連續(xù)和多維)數(shù)據(jù)輸入到計(jì)算機(jī)中的計(jì)算機(jī)硬件部件(特別是人機(jī)接口設(shè)備)。很多系統(tǒng)例如圖形用戶(hù)接口(gui)和電視機(jī)和監(jiān)視器允許用戶(hù)使用物理手勢(shì)控制數(shù)據(jù)并向計(jì)算機(jī)或電視機(jī)提供數(shù)據(jù)。物理手勢(shì)包括但不限于面部表情、面部運(yùn)動(dòng)、各種肢體的運(yùn)動(dòng)、身體運(yùn)動(dòng)、身體語(yǔ)言或其任何組合。這樣的物理手勢(shì)可被識(shí)別并轉(zhuǎn)換成命令或指令。
可通過(guò)指針、光標(biāo)、聚焦環(huán)、或顯示在顯示器604上的其它視覺(jué)指示器的運(yùn)動(dòng)來(lái)在顯示器604上模仿導(dǎo)航控制器610的導(dǎo)航特征的運(yùn)動(dòng)。例如,在應(yīng)用124的控制下,位于導(dǎo)航控制器610上的導(dǎo)航特征可映射到顯示在用戶(hù)界面618上的虛擬導(dǎo)航特征。在一些實(shí)施例中,導(dǎo)航控制器610可以不是單獨(dú)的部件,相反可集成到平臺(tái)602和/或顯示器604內(nèi)。
系統(tǒng)600可包括驅(qū)動(dòng)器(未示出),其包括在例如被啟動(dòng)時(shí)使用戶(hù)能夠在初始引導(dǎo)之后借助觸摸按鈕即時(shí)地打開(kāi)和關(guān)閉平臺(tái)602的技術(shù)。程序邏輯可允許平臺(tái)602在平臺(tái)被“關(guān)閉”時(shí)使內(nèi)容流式傳送到媒體適配器或其它內(nèi)容服務(wù)設(shè)備606或內(nèi)容分發(fā)設(shè)備608。此外,芯片集612可包括對(duì)例如5.1環(huán)繞聲音頻和/或高清7.1環(huán)繞聲音頻的硬件和/或軟件支持。驅(qū)動(dòng)器可包括集成圖形平臺(tái)的圖形驅(qū)動(dòng)器。在一些實(shí)施例中,圖形驅(qū)動(dòng)器包括外圍部件快速互連(pcie)圖形卡。
在各種實(shí)施例中,可集成在系統(tǒng)600中示出的任意一個(gè)或多個(gè)部件。例如,平臺(tái)602和內(nèi)容服務(wù)設(shè)備606可被集成;平臺(tái)602和內(nèi)容分發(fā)設(shè)備608可被集成;或平臺(tái)602、內(nèi)容服務(wù)設(shè)備606、以及內(nèi)容分發(fā)設(shè)備608可被集成。在一些實(shí)施例中,平臺(tái)602和顯示器604是集成單元。例如,顯示器604和內(nèi)容服務(wù)設(shè)備606可被集成,或顯示器604和內(nèi)容分發(fā)設(shè)備608可被集成。
系統(tǒng)600可被實(shí)現(xiàn)為無(wú)線系統(tǒng)或有線系統(tǒng)。當(dāng)被實(shí)現(xiàn)為無(wú)線系統(tǒng)時(shí),系統(tǒng)600可包括適合于通過(guò)無(wú)線共享介質(zhì)(例如一個(gè)或多個(gè)天線、發(fā)射機(jī)、接收機(jī)、收發(fā)機(jī)、放大器、濾波器、控制邏輯等)進(jìn)行通信的部件和接口。無(wú)線共享介質(zhì)的例子可包括無(wú)線頻譜的部分,例如rf頻譜。當(dāng)被實(shí)現(xiàn)為有線系統(tǒng)時(shí),系統(tǒng)600可包括適合于通過(guò)有線通信介質(zhì)(例如輸入/輸出(i/o)適配器、連接i/o適配器與對(duì)應(yīng)的有線通信介質(zhì)的物理連接器、網(wǎng)絡(luò)接口卡(nic)、磁盤(pán)控制器、視頻控制器、音頻控制器等)進(jìn)行通信的部件和接口。有線通信介質(zhì)的例子可包括電線、電纜、金屬引線、印刷電路板(pcb)、底板、交換結(jié)構(gòu)、半導(dǎo)體材料、雙絞線、同軸電纜、光纖等。
平臺(tái)602可建立一個(gè)或多個(gè)邏輯或物理通道以傳遞信息。信息可包括媒體信息和控制信息。媒體信息可以指代表用于給用戶(hù)的內(nèi)容的任何數(shù)據(jù)。內(nèi)容的例子可包括例如來(lái)自語(yǔ)音變換、視頻會(huì)議、流式視頻、電子郵件(email)消息、語(yǔ)音郵件消息、字母數(shù)字符號(hào)、圖形、圖像、視頻、文本等的數(shù)據(jù)。來(lái)自語(yǔ)音變換的數(shù)據(jù)可以是例如話音信息、靜默期、背景噪聲、舒適噪聲、音調(diào)等。控制信息可以指表示用于自動(dòng)化系統(tǒng)的命令、指令或控制字的任何數(shù)據(jù)。例如,控制信息可用于通過(guò)系統(tǒng)來(lái)路由媒體信息,或指示節(jié)點(diǎn)以預(yù)定的方式處理媒體信息。然而實(shí)施例并不限于在圖6中所示或所述的元件或上下文。
圖7是可體現(xiàn)圖6的系統(tǒng)600的小型設(shè)備700的示意圖。類(lèi)似地編號(hào)的項(xiàng)目如關(guān)于圖6描述的。在一些實(shí)施例中,例如設(shè)備700被實(shí)現(xiàn)為具有無(wú)線能力的移動(dòng)計(jì)算設(shè)備。移動(dòng)計(jì)算設(shè)備可以指具有處理系統(tǒng)和移動(dòng)功率源或電源(例如一個(gè)或多個(gè)電池)的任何設(shè)備。
如上所述,移動(dòng)計(jì)算設(shè)備的例子可包括個(gè)人計(jì)算機(jī)(pc)、膝上型計(jì)算機(jī)、超級(jí)膝上型計(jì)算機(jī)、平板、觸控板、便攜式計(jì)算機(jī)、手持計(jì)算機(jī)、掌上型計(jì)算機(jī)、個(gè)人數(shù)字助理(pda)、蜂窩電話、組合蜂窩電話/pda、電視機(jī)、智能設(shè)備(例如智能電話、智能平板或智能電視機(jī))、移動(dòng)互聯(lián)網(wǎng)設(shè)備(mid)、消息收發(fā)設(shè)備、數(shù)據(jù)通信設(shè)備等。
移動(dòng)計(jì)算設(shè)備的例子也可包括布置成由人佩戴的計(jì)算機(jī),例如手腕計(jì)算機(jī)、手指計(jì)算機(jī)、戒指計(jì)算機(jī)、眼鏡計(jì)算機(jī)、皮帶夾計(jì)算機(jī)、臂帶計(jì)算機(jī)、鞋計(jì)算機(jī)、衣服計(jì)算機(jī)、或任何其它適當(dāng)類(lèi)型的可穿戴式計(jì)算機(jī)。例如,移動(dòng)計(jì)算設(shè)備可被實(shí)現(xiàn)為能夠執(zhí)行計(jì)算機(jī)應(yīng)用、以及語(yǔ)音通信和/或數(shù)據(jù)通信的智能電話。雖然以示例的方式,借助被實(shí)現(xiàn)為智能電話的移動(dòng)計(jì)算設(shè)備來(lái)描述一些實(shí)施例,可認(rèn)識(shí)到,也可使用其它無(wú)線移動(dòng)計(jì)算設(shè)備來(lái)實(shí)現(xiàn)其它實(shí)施例。
如圖7所示,設(shè)備700可包括殼體702、顯示器704、輸入/輸出(i/o)設(shè)備706、以及天線708。設(shè)備700也可包括導(dǎo)航特征710。顯示器704可包括用于顯示適合于移動(dòng)計(jì)算設(shè)備的信息的任何適當(dāng)?shù)娘@示單元。i/o設(shè)備706可包括用于將信息輸入到移動(dòng)計(jì)算設(shè)備中的任何適當(dāng)?shù)膇/o設(shè)備。例如,i/o設(shè)備706可包括字母數(shù)字鍵盤(pán)、數(shù)字小鍵盤(pán)、觸控板、輸入鍵、按鈕、開(kāi)關(guān)、搖臂開(kāi)關(guān)、麥克風(fēng)、揚(yáng)聲器、語(yǔ)音識(shí)別設(shè)備和軟件等。信息也可通過(guò)麥克風(fēng)的方式輸入到設(shè)備700中。這樣的信息可由語(yǔ)音識(shí)別設(shè)備數(shù)字化。
示例1
在本文描述了在計(jì)算設(shè)備的中央處理單元(cpu)和圖形處理單元(gpu)之間的共享虛擬存儲(chǔ)器的方法。該方法包括分配在物理存儲(chǔ)器內(nèi)的表面。cpu虛擬地址空間可被創(chuàng)建,且在cpu頁(yè)表內(nèi)表面可映射到cpu虛擬地址空間。該方法也可包括創(chuàng)建相當(dāng)于cpu虛擬地址空間的gpu虛擬地址空間,并在gpu頁(yè)表內(nèi)將表面映射到gpu虛擬地址空間。該方法也可包括釘住表面。
可經(jīng)由表面在cpu和gpu之間共享存儲(chǔ)器,而不將數(shù)據(jù)從cpu存儲(chǔ)器拷貝到gpu存儲(chǔ)器??身憫?yīng)于來(lái)自在計(jì)算設(shè)備的cpu上運(yùn)行的應(yīng)用的輸入而分配表面。此外,該方法可由計(jì)算設(shè)備的驅(qū)動(dòng)器執(zhí)行。
來(lái)自cpu和gpu的緩存的數(shù)據(jù)可與在cpu和gpu之間共享的最后一級(jí)緩存(llc)一致??蓪⒉僮鲝腸pu卸載到gpu,且可在gpu內(nèi)執(zhí)行操作??蓪⑼瓿尚盘?hào)發(fā)送到cpu,其中完成信號(hào)包括gpu已執(zhí)行導(dǎo)致在表面內(nèi)的數(shù)據(jù)的修改的某個(gè)計(jì)算的指示。此外,設(shè)備驅(qū)動(dòng)器可使在cpu和gpu之間的數(shù)據(jù)的處理同步。
示例2
在本文描述了計(jì)算設(shè)備。計(jì)算設(shè)備包括適合于執(zhí)行存儲(chǔ)的指令的中央處理單元(cpu)和存儲(chǔ)指令的存儲(chǔ)設(shè)備。存儲(chǔ)設(shè)備包括處理器可執(zhí)行代碼,其在被cpu執(zhí)行時(shí)適合于分配在物理存儲(chǔ)器內(nèi)的表面。cpu虛擬地址空間可被創(chuàng)建,且在cpu頁(yè)表內(nèi)表面可映射到cpu虛擬地址空間。此外,相當(dāng)于cpu虛擬地址空間的gpu虛擬地址空間可被創(chuàng)建,且在gpu頁(yè)表內(nèi)表面可映射到gpu虛擬地址空間。處理器可執(zhí)行代碼也可適合于釘住表面。
可在cpu和gpu之間共享物理存儲(chǔ)器,而不將數(shù)據(jù)從cpu存儲(chǔ)器拷貝到gpu存儲(chǔ)器。此外,cpu和gpu位于計(jì)算設(shè)備內(nèi)的同一管芯上。cpu和gpu可共享最后一級(jí)緩存(llc),其中l(wèi)lc可從cpu或gpu的任一緩存取回?cái)?shù)據(jù)。cpu和gpu可包括統(tǒng)一存儲(chǔ)器架構(gòu)(uma)。
處理器可執(zhí)行代碼可適合于響應(yīng)于來(lái)自在計(jì)算設(shè)備的cpu上運(yùn)行的應(yīng)用的輸入而分配表面。在cpu頁(yè)表和gpu頁(yè)表中的虛擬存儲(chǔ)器地址可通過(guò)將虛擬地址變換成物理地址來(lái)映射到在表面內(nèi)的物理地址。驅(qū)動(dòng)器可配置成發(fā)起處理器可執(zhí)行代碼的執(zhí)行。此外,計(jì)算設(shè)備可包括無(wú)線電裝置和顯示器,且無(wú)線電裝置和顯示器可至少通信地耦合到中央處理單元。
實(shí)例3
在本文描述了至少一個(gè)非暫時(shí)性機(jī)器可讀介質(zhì),其具有存儲(chǔ)在其中的指令。該指令響應(yīng)于在計(jì)算設(shè)備上被執(zhí)行,使計(jì)算設(shè)備分配在物理存儲(chǔ)器內(nèi)的表面??僧a(chǎn)生cpu虛擬地址空間,且在cpu頁(yè)表內(nèi)表面可映射到cpu虛擬地址空間。指令也可產(chǎn)生相當(dāng)于cpu虛擬地址空間的gpu虛擬地址空間,并在gpu頁(yè)表內(nèi)將表面映射到gpu虛擬地址空間。此外,表面被釘住。
可在cpu和gpu之間共享物理存儲(chǔ)器,而不將數(shù)據(jù)從cpu存儲(chǔ)器拷貝到gpu存儲(chǔ)器。此外,指令可使來(lái)自cpu的緩存和gpu的緩存的數(shù)據(jù)與最后一級(jí)緩存(llc)一致。此外,指令也可使計(jì)算設(shè)備響應(yīng)于來(lái)自在計(jì)算設(shè)備的cpu上運(yùn)行的應(yīng)用的輸入而分配表面。
應(yīng)理解,在前面提到的例子中的細(xì)節(jié)可在一個(gè)或多個(gè)實(shí)施例中的任何地方使用。例如,也可關(guān)于本文描述的方法或計(jì)算機(jī)可讀介質(zhì)實(shí)現(xiàn)上面描述的計(jì)算設(shè)備的所有可選的特征。此外,雖然流程圖和/或狀態(tài)圖可在本文用于描述實(shí)施例,發(fā)明并不限于那些圖或在本文中的對(duì)應(yīng)描述。例如,流程不需要移動(dòng)經(jīng)過(guò)每個(gè)所示框或狀態(tài)或采用與本文所示和所述的確切相同的順序。
發(fā)明并不限于本文列出的特定細(xì)節(jié)。實(shí)際上,受益于本公開(kāi)的本領(lǐng)域中的技術(shù)人員將認(rèn)識(shí)到,來(lái)自前述描述和附圖的很多其它變形可在當(dāng)前發(fā)明的范圍內(nèi)做出。因此,下面的權(quán)利要求包括限定發(fā)明的范圍的對(duì)其的任何更改。