本申請(qǐng)為分案申請(qǐng),其母案的發(fā)明名稱為“使用多個(gè)頁(yè)表的執(zhí)行”,申請(qǐng)日為2012年5月9日,申請(qǐng)?zhí)枮?012800724981。
背景技術(shù):
在許多計(jì)算場(chǎng)景中使用異構(gòu)計(jì)算系統(tǒng)和設(shè)備(例如,使用基于不同指令集架構(gòu)的多個(gè)不同計(jì)算處理器的系統(tǒng))。例如,在一些設(shè)備中,單獨(dú)的cpu和gpu可以位于相同的管芯上。在各種系統(tǒng)中,計(jì)算處理器可以被配置為執(zhí)行基于不相同指令集架構(gòu)(isa)的指令。異構(gòu)處理器的使用可以提供處理、空間和資源效率。例如,位于相同管芯上的兩個(gè)處理器每一個(gè)都可以具有對(duì)公共儲(chǔ)存器的訪問(wèn);這個(gè)共享存儲(chǔ)器允許相同的數(shù)據(jù)被這兩個(gè)處理器容易地訪問(wèn)。
然而,在一些異構(gòu)計(jì)算系統(tǒng)中,資源共享也可能引起問(wèn)題。一個(gè)此類問(wèn)題在使用支持使用函數(shù)指針的程序語(yǔ)言時(shí)出現(xiàn),該程序語(yǔ)言允許指向函數(shù)的指針作為數(shù)據(jù)在線程之間傳送。這些函數(shù)指針在具有使用不同isa的異構(gòu)處理器的傳統(tǒng)系統(tǒng)中并非頻繁地得到很好的支持(或者根本未得到支持)。例如,如果創(chuàng)建了指向在用于第一處理器的第一isa中編寫(xiě)的函數(shù)的指針,則該相同指針以被傳送到在第二處理器上運(yùn)行的線程而告終。如果第二處理器嘗試執(zhí)行由該函數(shù)指針指向的函數(shù),則通常會(huì)出現(xiàn)錯(cuò)誤,因?yàn)榈诙幚砥鲿?huì)嘗試執(zhí)行在不支持的isa中編寫(xiě)的函數(shù)。一些系統(tǒng)嘗試通過(guò)針對(duì)每一個(gè)函數(shù)存儲(chǔ)兩個(gè)指針來(lái)解決這一點(diǎn),但是這并非在所有語(yǔ)言中都適用,諸如例如c和c++。
附圖說(shuō)明
借助以下結(jié)合附圖的詳細(xì)描述,將易于理解實(shí)施例。為了促進(jìn)該描述,相似的附圖標(biāo)記標(biāo)明相似的結(jié)構(gòu)要素。在附圖的各圖中通過(guò)示例而非限制的方式示出了實(shí)施例。
圖1示出了根據(jù)各種實(shí)施例的具有多個(gè)頁(yè)表的示例性異構(gòu)執(zhí)行系統(tǒng)。
圖2示出了根據(jù)各種實(shí)施例的具有多個(gè)頁(yè)表的異構(gòu)執(zhí)行系統(tǒng)的示例性虛擬機(jī)監(jiān)視器。
圖3示出了根據(jù)各種實(shí)施例的具有多個(gè)頁(yè)表執(zhí)行過(guò)程的示例性異構(gòu)執(zhí)行系統(tǒng)。
圖4示出了根據(jù)各種實(shí)施例的具有多個(gè)頁(yè)表加載過(guò)程的示例性異構(gòu)執(zhí)行系統(tǒng)。
圖5示出了根據(jù)各種實(shí)施例的具有多個(gè)頁(yè)表取碼過(guò)程的示例性異構(gòu)執(zhí)行系統(tǒng)。
圖6示出了根據(jù)各種實(shí)施例的適合于實(shí)現(xiàn)本公開(kāi)內(nèi)容的示例性計(jì)算環(huán)境。
具體實(shí)施方式
在以下的詳細(xì)描述中,參考了附圖,附圖形成該詳細(xì)描述的一部分,在附圖中,自始至終,相似的標(biāo)記標(biāo)明相似的部分,并且在附圖中,借助圖示的方式示出了可實(shí)現(xiàn)的實(shí)施例。應(yīng)當(dāng)理解,在不脫離本公開(kāi)內(nèi)容的范圍的情況下,可以利用其他實(shí)施例并且可以做出結(jié)構(gòu)或邏輯變化。因此,以下的詳細(xì)描述不應(yīng)是在限制性意義上采取的,并且實(shí)施例的范圍由所附權(quán)利要求書(shū)及其等同物來(lái)限定。
各種操作可以以最有助于理解所要求保護(hù)的主題的方式被依次描述為多個(gè)分立的動(dòng)作或操作。然而,描述的順序不應(yīng)解釋為暗示這些操作必須是依賴于順序的。具體而言,這些操作可以不按照呈現(xiàn)的順序執(zhí)行。所描述的操作可以按照與所描述的實(shí)施例不同的順序執(zhí)行??梢詧?zhí)行各種附加操作和/或在附加實(shí)施例中可以省略所描述的操作。
出于本公開(kāi)內(nèi)容的目的,短語(yǔ)“a和/或b”表示(a)、(b)或(a和b)。出于本公開(kāi)內(nèi)容的目的,短語(yǔ)“a、b和/或c”表示(a)、(b)、(c)、(a和b)、(a和c)、(b和c)或(a、b和c)。
描述可以使用短語(yǔ)“在一實(shí)施例中”或“在實(shí)施例中”,其每一個(gè)都可以指代一個(gè)或多個(gè)相同或不同實(shí)施例。此外,關(guān)于本公開(kāi)內(nèi)容的實(shí)施例使用的術(shù)語(yǔ)“包含”、“包括”、“具有”等是同義的。
如本文所使用的,術(shù)語(yǔ)“模塊”可以指代下述各項(xiàng)、是下述各項(xiàng)的一部分或者包括下述各項(xiàng):專用集成電路(“asic”)、電子電路、執(zhí)行一個(gè)或多個(gè)軟件或固件程序的處理器(共享的、專用的或者組)和/或存儲(chǔ)器(共享的、專用的或者組)、組合邏輯電路、和/或提供所描述的功能的其他適合的組件。
參考圖1,示出了示出具有多個(gè)頁(yè)表100(“hes100”)的異構(gòu)執(zhí)行系統(tǒng)的框圖。在各種實(shí)施例中,hes100可以被配置為在異構(gòu)處理器環(huán)境中選擇性地執(zhí)行可執(zhí)行代碼的不同版本中適當(dāng)?shù)囊粋€(gè)。在各種實(shí)施例中,hes100可以被配置為通過(guò)使用多個(gè)頁(yè)表來(lái)支持指向用于可執(zhí)行代碼的虛擬存儲(chǔ)器地址的函數(shù)指針的使用。因而,在hes100的實(shí)施例中,函數(shù)指針可以包括虛擬存儲(chǔ)器地址,其諸如由多個(gè)頁(yè)表之一映射到物理存儲(chǔ)器地址,該物理存儲(chǔ)器地址包含利用函數(shù)指針的處理器可執(zhí)行的可執(zhí)行代碼。在虛擬存儲(chǔ)器地址轉(zhuǎn)換期間(諸如在取碼期間)可以使用映射。在實(shí)施例中,當(dāng)hes100的另一個(gè)處理器力圖使用函數(shù)指針執(zhí)行其自身的取碼時(shí),與該另一個(gè)處理器相關(guān)的第二頁(yè)表可以被用于將虛擬存儲(chǔ)器地址轉(zhuǎn)換到不同的物理存儲(chǔ)器地址,在該物理存儲(chǔ)器地址處可以找到該另一個(gè)處理器可執(zhí)行的代碼。多個(gè)頁(yè)表的這種使用允許hes100在對(duì)于所指向的每一個(gè)函數(shù)僅利用一個(gè)虛擬存儲(chǔ)器地址的同時(shí)支持函數(shù)指針。
如所示,在實(shí)施例中,一部分源代碼105(例如函數(shù))可以由編譯器110編譯為可執(zhí)行代碼的多個(gè)版本(諸如,可執(zhí)行代碼的所示版本113和115)。在各種實(shí)施例中,可以借助對(duì)hes100的尤其是對(duì)在hes100中使用的一個(gè)或多個(gè)處理器的了解來(lái)配置編譯器110。在實(shí)施例中,當(dāng)如此配置編譯器110時(shí),編譯器110可以生成可執(zhí)行代碼的版本113和115,以使用來(lái)自在hes100中所使用的處理器的各種isa的指令。例如,如圖1所示,在各種實(shí)施例中,編譯器110可以將一部分源代碼105編譯為用于cpu(113)的可執(zhí)行代碼以及用于gpu(115)的可執(zhí)行代碼。在各種實(shí)施例中,源代碼105可以包括主線代碼和一個(gè)或多個(gè)函數(shù);這些函數(shù)中的一個(gè)或多個(gè)可以被編譯為可執(zhí)行代碼的版本113和115。在可替換的實(shí)施例中,可以使用不同編譯器來(lái)編譯可執(zhí)行代碼的不同版本,諸如由軟件開(kāi)發(fā)商借助以不同isa的處理器為目標(biāo)的編譯器。
可執(zhí)行代碼的不同版本113和115隨后可以由加載器120加載,在各種實(shí)施例中,加載器120可以可選地被包括在hes100中或者可以是單獨(dú)的組件或模塊。在各種實(shí)施例中,加載器120可以被配置為將可執(zhí)行代碼的不同版本113和115加載到物理存儲(chǔ)器160中。例如,如所示,可執(zhí)行代碼的不同版本113和115可以被存儲(chǔ)在物理存儲(chǔ)器地址的分離集合(諸如所示的集合ec1物理地址170和ec2物理地址180)處的物理存儲(chǔ)器中。在各種實(shí)施例中,加載器120還可以被配置為配置或促進(jìn)配置頁(yè)表(諸如所示的頁(yè)表140和150),以支持本文所描述的各種虛擬存儲(chǔ)器地址轉(zhuǎn)換活動(dòng)。以下描述由加載器120執(zhí)行的活動(dòng)的具體示例。
在實(shí)施例中,可以借助被配置為執(zhí)行hes100上的可執(zhí)行代碼的一個(gè)或多個(gè)處理器來(lái)配置hes100,諸如第一處理器130和第二處理器135。如上所討論,在各種實(shí)施例中,第一處理器130和第二處理器135可以被配置為執(zhí)行基于不同isa的指令。因而,在一些實(shí)施例中,第一和第二處理器130和135可以不被配置為執(zhí)行針對(duì)其他處理器而編寫(xiě)的代碼。在一些實(shí)施例中,處理器可以包括cpu和gpu;在其他實(shí)施例中,可以利用不同的處理器。在各種實(shí)施例中,也可以利用多于兩個(gè)處理器。
在各種實(shí)施例中,第一和第二處理器130和135可以被配置為利用虛擬存儲(chǔ)器。具體而言,在各種實(shí)施例中,第一和第二處理器130和135可以與多個(gè)頁(yè)表相關(guān)聯(lián),諸如頁(yè)表140和150,以便使虛擬存儲(chǔ)器管理器將要由處理器訪問(wèn)的虛擬存儲(chǔ)器地址轉(zhuǎn)換為物理存儲(chǔ)器地址。在各種實(shí)施例中,多個(gè)頁(yè)表140和150可以被配置為將一個(gè)或多個(gè)虛擬存儲(chǔ)器地址轉(zhuǎn)換為與包含代碼的存儲(chǔ)器區(qū)相關(guān)聯(lián)的不同物理存儲(chǔ)器地址。因而,如圖1所示,頁(yè)表140和150每一個(gè)都可以包含要在虛擬存儲(chǔ)器地址的特定集合處名義上找到可執(zhí)行代碼的信息(例如,被示為ecvm地址155的虛擬存儲(chǔ)器地址的集合)。然而,在各種實(shí)施例中,頁(yè)表140和150每一個(gè)都可以被配置為將這些虛擬存儲(chǔ)器地址轉(zhuǎn)換為實(shí)際上找到可執(zhí)行代碼的物理存儲(chǔ)器位置的分離的物理存儲(chǔ)器地址。因而,如圖1所示,頁(yè)表140和150可以被配置為根據(jù)用于轉(zhuǎn)換的頁(yè)表將ecvm地址155的地址集合中的地址輸出轉(zhuǎn)換為物理存儲(chǔ)器地址ec1物理地址170的集合或者物理存儲(chǔ)器地址ec2物理地址180的集合。如上所討論,由hes100對(duì)這些多個(gè)頁(yè)表的使用允許由hes100選擇性地使用可執(zhí)行代碼的多個(gè)版本,同時(shí)仍允許使用單一虛擬存儲(chǔ)器地址來(lái)指向代碼,如同僅存在一個(gè)版本。
圖2示出了根據(jù)各種實(shí)施例的hes100的示例性虛擬機(jī)監(jiān)視器200(“vmm200”)。在各種實(shí)施例中,vmm200可以被配置為實(shí)施本文所述的hes100的一個(gè)或多個(gè)操作。在各種實(shí)施例中,vmm200可以被配置為轉(zhuǎn)換由第一和/或第二處理器130和135進(jìn)行的存儲(chǔ)器訪問(wèn)。例如,第一處理器130和/或第二處理器135可以執(zhí)行利用虛擬存儲(chǔ)器的虛擬機(jī)(未示出)中的客戶軟件。作為客戶軟件的操作的一部分,第一處理器130和/或第二處理器135可以力圖在一個(gè)或多個(gè)虛擬存儲(chǔ)器地址處執(zhí)行存儲(chǔ)器訪問(wèn)。在一些實(shí)施例中,這些存儲(chǔ)器訪問(wèn)可以包括取碼和/或數(shù)據(jù)訪問(wèn)。
如圖2所示,vmm200可以包括頁(yè)表140和150。在各種實(shí)施例中,頁(yè)表140和/或150可以被配置為與第一和第二處理器130和135相關(guān)聯(lián)。在一些實(shí)施例中,頁(yè)表140和150中的任一個(gè)都可以僅與單個(gè)處理器相關(guān)聯(lián);在其他實(shí)施例中,頁(yè)表140和150中的任一個(gè)或這二者都可以與多個(gè)處理器相關(guān)聯(lián)。在實(shí)施例中,如果頁(yè)表與多個(gè)處理器相關(guān)聯(lián),則這些處理器可以被配置為按照相同isa進(jìn)行操作。
在實(shí)施例中,頁(yè)表140和150可以被配置為將虛擬存儲(chǔ)器地址的公共集合示出為尋址相同的可執(zhí)行代碼。在附圖中由被包含在頁(yè)表140和150中的每一個(gè)中的相同位置中的ecvm地址155的集合展示虛擬存儲(chǔ)器地址的該公共集合的實(shí)施例。在各種實(shí)施例中,ecvm地址155中的地址可以由頁(yè)表140和150中的每一個(gè)映射到物理存儲(chǔ)器地址的分離集合中,諸如,ec1物理地址170和ec2物理地址180。如上所討論,在各種實(shí)施例中,物理存儲(chǔ)器地址的這些集合可以由加載器120確定,加載器120被配置為將可執(zhí)行代碼的各種版本存儲(chǔ)到由ec1物理地址170和ec2物理地址180包含的不同位置處的物理存儲(chǔ)器中。
如上所討論,在各種實(shí)施例中,盡管頁(yè)表140和150可以被配置為將可執(zhí)行代碼的公共虛擬存儲(chǔ)器地址的集合映射到分離的物理存儲(chǔ)器地址。另外,在各種實(shí)施例中,頁(yè)表140和150可以被配置為將與數(shù)據(jù)儲(chǔ)存相關(guān)的虛擬存儲(chǔ)器地址映射到物理存儲(chǔ)器地址的公共集合。因而,如所示,頁(yè)表140和150可以被配置為將來(lái)自數(shù)據(jù)虛擬存儲(chǔ)器地址210的集合的虛擬存儲(chǔ)器地址映射到數(shù)據(jù)物理存儲(chǔ)器地址220的集合。在各種實(shí)施例中,可以由hes100所利用的多個(gè)頁(yè)表中的每一個(gè)將這些與數(shù)據(jù)相關(guān)的虛擬存儲(chǔ)器地址與物理存儲(chǔ)器地址的相同集合相關(guān)聯(lián)。在實(shí)施例中,通過(guò)利用將與數(shù)據(jù)相關(guān)的虛擬存儲(chǔ)器地址映射到相同物理存儲(chǔ)器地址的頁(yè)表140和150,hes100的vmm200可以允許在仍促進(jìn)使用函數(shù)指針的同時(shí),異構(gòu)的第一處理器130和第二處理器135具有對(duì)相同數(shù)據(jù)的訪問(wèn),諸如如上所述。
圖3示出了根據(jù)各種實(shí)施例的示例性hes100過(guò)程300。在各種實(shí)施例中,可以在hes100上執(zhí)行過(guò)程300以編譯、加載和執(zhí)行可執(zhí)行代碼。該過(guò)程可以在操作310處開(kāi)始,其中編譯器110可以將一部分源代碼105編譯為可執(zhí)行代碼的多個(gè)版本,例如可執(zhí)行代碼的版本113和115。如上所討論,在各種實(shí)施例中,可執(zhí)行代碼的每一個(gè)版本都可以包含基于不同isa的指令,且因而每一個(gè)都可以是hes100中的不同處理器可執(zhí)行的。接下來(lái),在操作320處,加載器120可以將可執(zhí)行代碼的不同版本加載到hes100中。以下參考圖4的過(guò)程400來(lái)討論這個(gè)操作的具體實(shí)施例。接下來(lái),在操作330處,hes100可以使用多個(gè)頁(yè)表選擇性地執(zhí)行可執(zhí)行代碼的適當(dāng)版本。在實(shí)施例中,操作330可以包括使用函數(shù)指針的一個(gè)或多個(gè)取碼。以下參考圖5的過(guò)程500來(lái)討論這些取碼的具體實(shí)施例。隨后,該過(guò)程可以結(jié)束。
圖4示出了根據(jù)各種實(shí)施例的示例性hes100過(guò)程400。該過(guò)程可以在操作420處開(kāi)始,其中加載器120可以確定由編譯器110生成的可執(zhí)行代碼的不同版本的大小。隨后,在操作430處,加載器120可以基于在操作420處確定的大小來(lái)選擇要被映射到可執(zhí)行代碼的不同版本的虛擬存儲(chǔ)器地址。在各種實(shí)施例中,加載器可以被配置為選擇可執(zhí)行代碼的不同版本的最大的大小作為將被映射到可執(zhí)行代碼的版本的虛擬存儲(chǔ)器地址集合的大小。在實(shí)施例中,通過(guò)選擇最大的大小,可以配置加載器120以使得虛擬存儲(chǔ)器地址集合至少與在物理存儲(chǔ)器中存儲(chǔ)的可執(zhí)行代碼的任一個(gè)版本一樣大。另外,通過(guò)選擇最大的大小,加載器120可以更好地提供任何處理器要一直在相同虛擬存儲(chǔ)器地址處找到的函數(shù),不管該處理器所使用的可執(zhí)行代碼的版本的大小如何。在實(shí)施例中,因而,諸如當(dāng)與可執(zhí)行代碼的大小較小的版本相比時(shí),可以填充虛擬存儲(chǔ)器地址集合以達(dá)到該所選擇的大小。
接下來(lái),在操作440處,加載器120可以被配置為將可執(zhí)行代碼的多個(gè)版本加載到物理存儲(chǔ)器中。在各種實(shí)施例中,加載器可以將可執(zhí)行代碼的每一個(gè)版本加載到物理存儲(chǔ)器地址的鄰接集合處的存儲(chǔ)器中;在其他實(shí)施例中,可以將可執(zhí)行代碼的每一個(gè)版本存儲(chǔ)在分離的不鄰接物理存儲(chǔ)器段中。在各種實(shí)施例中,加載器120可以被配置為將可執(zhí)行代碼的各種版本加載到物理存儲(chǔ)器的大小相等的段中。在各種實(shí)施例中,加載器120可以被配置為將可執(zhí)行代碼的各種版本加載到在大小上等于在操作430處選擇的大小的物理存儲(chǔ)器段中。因而,在一些實(shí)施例中,加載器120可以被配置為填充由可執(zhí)行代碼的較小版本占用的物理存儲(chǔ)器,以使得可執(zhí)行代碼的該版本占用與其他版本相同量的物理存儲(chǔ)器空間。在其他實(shí)施例中,可以將可執(zhí)行代碼的多個(gè)版本存儲(chǔ)在不同大小的存儲(chǔ)器段中,不管它們是否是由相同虛擬存儲(chǔ)器地址集合映射到的。
接下來(lái),在操作450處,加載器120可以被配置為將頁(yè)表(諸如頁(yè)表140和150)配置成包括針對(duì)可執(zhí)行代碼的各種版本的虛擬存儲(chǔ)器地址。在各種實(shí)施例中,加載器可以在操作450處生成頁(yè)表。在其他實(shí)施例中,加載器120可以被配置為將針對(duì)可執(zhí)行代碼的各種版本的虛擬存儲(chǔ)器地址和物理存儲(chǔ)器地址之間的映射寫(xiě)入到已經(jīng)創(chuàng)建的頁(yè)表中。在另外其他實(shí)施例中,加載器120可以被配置為向vmm100(或其他實(shí)體)提供關(guān)于映射的信息,用于頁(yè)表140和150的創(chuàng)建或配置。隨后,該過(guò)程可以結(jié)束。
圖5示出了根據(jù)各種實(shí)施例的示例性hes100取碼過(guò)程500。在各種實(shí)施例中,可以通過(guò)過(guò)程在處理器上的執(zhí)行來(lái)執(zhí)行過(guò)程500,其中,將函數(shù)指針傳送到該過(guò)程,并且處理器嘗試將執(zhí)行切換到由函數(shù)指針指向的函數(shù)。盡管參考單個(gè)處理器描述了過(guò)程500,但可以認(rèn)識(shí)到,在各種實(shí)施例中,可以使用相同的函數(shù)指針針對(duì)hes100中的不同的處理器重復(fù)該過(guò)程。
該過(guò)程可以在操作510處開(kāi)始,其中在hes100的處理器之一上執(zhí)行的過(guò)程可以接收函數(shù)指針。在各種實(shí)施例中,所指向的函數(shù)可以與源代碼105和上述可執(zhí)行代碼的版本之一113或115相關(guān)聯(lián)。
接下來(lái),在操作520處,hes100可以依據(jù)函數(shù)的指向可執(zhí)行代碼的函數(shù)指針來(lái)確定虛擬存儲(chǔ)器地址。如上所討論,在各種實(shí)施例中,虛擬存儲(chǔ)器地址可以相同,不管當(dāng)前過(guò)程正在哪個(gè)處理器上執(zhí)行。接下來(lái),在操作530處,處理器可以嘗試針對(duì)由函數(shù)指針指向的可執(zhí)行代碼(例如,處理器預(yù)期在操作520處確定的虛擬存儲(chǔ)器地址處找到的可執(zhí)行代碼)的取碼。
接下來(lái),在操作540處,vmm200可以使用與處理器相關(guān)聯(lián)的頁(yè)表(例如,頁(yè)表140或150)轉(zhuǎn)換虛擬存儲(chǔ)器地址。隨后,在操作550處,處理器可以從在經(jīng)轉(zhuǎn)換的物理存儲(chǔ)器地址處找到的物理存儲(chǔ)器訪問(wèn)可執(zhí)行代碼。隨后,在操作560處,可以由處理器執(zhí)行所訪問(wèn)的代碼。隨后,該過(guò)程可以結(jié)束。
圖6示出了針對(duì)一個(gè)實(shí)施例的適于實(shí)現(xiàn)本公開(kāi)內(nèi)容的實(shí)施例的示例性計(jì)算機(jī)系統(tǒng)600。如所示,示例性計(jì)算機(jī)系統(tǒng)600可以包括耦合到至少一個(gè)處理器604的控制邏輯608、耦合到系統(tǒng)控制邏輯608的系統(tǒng)存儲(chǔ)器612、耦合到系統(tǒng)控制邏輯608的非易失性存儲(chǔ)器(nvm)/儲(chǔ)存設(shè)備616、和耦合到系統(tǒng)控制邏輯608的一個(gè)或多個(gè)通信接口620。在各種實(shí)施例中,一個(gè)或多個(gè)處理器604可以是處理器核。
一個(gè)實(shí)施例的系統(tǒng)控制邏輯608可以包括任何適合的接口控制器,其用以提供面向至少一個(gè)處理器604和/或與系統(tǒng)控制邏輯608通信的任何適合的設(shè)備或組件的任何適合的接口。
一個(gè)實(shí)施例的系統(tǒng)控制邏輯608可以包括一個(gè)或多個(gè)存儲(chǔ)器控制器,其用以提供面向系統(tǒng)存儲(chǔ)器612的接口。系統(tǒng)存儲(chǔ)器612可以用于加載和存儲(chǔ)例如用于系統(tǒng)600的數(shù)據(jù)和/或指令。在一個(gè)實(shí)施例中,例如,系統(tǒng)存儲(chǔ)器612可以包括任何適合的易失性存儲(chǔ)器,諸如適合的動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(“dram”)。
在一個(gè)實(shí)施例中,系統(tǒng)控制邏輯608可以包括一個(gè)或多個(gè)輸入/輸出(“i/o”)控制器,其用以提供面向nvm/儲(chǔ)存設(shè)備616和通信接口620的接口。
nvm/儲(chǔ)存設(shè)備616可以例如用于存儲(chǔ)數(shù)據(jù)和/或指令。nvm/儲(chǔ)存設(shè)備616可以包括例如任何適合的非易失性存儲(chǔ)器,諸如閃存,和/或可以包括例如任何適合的非易失性儲(chǔ)存設(shè)備,諸如一個(gè)或多個(gè)硬盤驅(qū)動(dòng)器(“hdd”)、一個(gè)或多個(gè)固態(tài)驅(qū)動(dòng)器、一個(gè)或多個(gè)壓縮盤(“cd”)驅(qū)動(dòng)器、和/或一個(gè)或多個(gè)數(shù)字多功能盤(“dvd”)驅(qū)動(dòng)器。
nvm/儲(chǔ)存設(shè)備616可以包括系統(tǒng)600被安裝于其上的設(shè)備的儲(chǔ)存資源物理部分,或者它可以是設(shè)備可訪問(wèn)的但不必是設(shè)備的一部分。例如,可以經(jīng)由通信接口620通過(guò)網(wǎng)絡(luò)訪問(wèn)nvm/儲(chǔ)存設(shè)備616。
具體而言,系統(tǒng)存儲(chǔ)器612和nvm/儲(chǔ)存設(shè)備616可以包括異構(gòu)執(zhí)行邏輯624的暫時(shí)和永久拷貝。異構(gòu)執(zhí)行邏輯624可以包括指令,該指令在由至少一個(gè)處理器604執(zhí)行時(shí)導(dǎo)致系統(tǒng)600借助上述多個(gè)頁(yè)表相關(guān)操作實(shí)施一個(gè)或多個(gè)異構(gòu)執(zhí)行。在一些實(shí)施例中,異構(gòu)執(zhí)行邏輯624還可以附加地/可替換地位于系統(tǒng)控制邏輯608中。
通信接口620可以提供接口以供系統(tǒng)600通過(guò)一個(gè)或多個(gè)網(wǎng)絡(luò)和/或與任何其他適合的設(shè)備進(jìn)行通信。通信接口620可以包括任何適合的硬件和/或固件,諸如網(wǎng)絡(luò)適配器、一個(gè)或多個(gè)天線、無(wú)線接口等等。在各種實(shí)施例中,通信接口620可以包括接口以供系統(tǒng)600使用nfc、光通信(例如條形碼)、藍(lán)牙或其他類似的技術(shù)來(lái)與另一個(gè)設(shè)備直接(例如無(wú)中間物)通信。
對(duì)于一個(gè)實(shí)施例,至少一個(gè)處理器604可以被與系統(tǒng)控制邏輯608和/或異構(gòu)執(zhí)行邏輯624封裝在一起。對(duì)于一個(gè)實(shí)施例,至少一個(gè)處理器604可以被與系統(tǒng)控制邏輯608和/或異構(gòu)邏輯624封裝在一起,以構(gòu)成系統(tǒng)級(jí)封裝(“sip”)。對(duì)于一個(gè)實(shí)施例,至少一個(gè)處理器604可以被與系統(tǒng)控制邏輯608和/或異構(gòu)執(zhí)行邏輯624集成在相同管芯上。對(duì)于一個(gè)實(shí)施例,至少一個(gè)處理器604可以被與系統(tǒng)控制邏輯608和/或異構(gòu)執(zhí)行邏輯624集成在相同管芯上,以構(gòu)成片上系統(tǒng)(“soc”)。
以下段落描述了各種實(shí)施例的示例。在各種實(shí)施例中,一種用于執(zhí)行異構(gòu)計(jì)算裝置上的函數(shù)的異構(gòu)計(jì)算裝置可以包括物理存儲(chǔ)器。所述裝置還可以包括第一計(jì)算機(jī)處理器,所述第一計(jì)算機(jī)處理器耦合到物理存儲(chǔ)器,并被配置為支持第一指令集架構(gòu)。所述裝置還可以包括第二計(jì)算機(jī)處理器,所述第二計(jì)算機(jī)處理器耦合到物理存儲(chǔ)器,并被配置為支持第二指令集架構(gòu)。所述裝置還可以包括虛擬機(jī)管理器,所述虛擬機(jī)管理器被配置為在所述裝置的一個(gè)或多個(gè)計(jì)算機(jī)處理器上操作以將虛擬存儲(chǔ)器地址轉(zhuǎn)換為物理存儲(chǔ)器地址。虛擬存儲(chǔ)器管理器可以被配置為操作以使用第一頁(yè)表或第二頁(yè)表中的所選擇的一個(gè)頁(yè)表,將與第一或第二計(jì)算機(jī)處理器的取碼相關(guān)的虛擬存儲(chǔ)器地址轉(zhuǎn)換為物理存儲(chǔ)器的對(duì)應(yīng)物理存儲(chǔ)器地址,其中,使用第一或第二頁(yè)表中的哪一個(gè)頁(yè)表取決于虛擬存儲(chǔ)器地址與第一還是第二計(jì)算機(jī)處理器的取碼相關(guān)。
在各種實(shí)施例中,第一頁(yè)表可以被配置為將虛擬存儲(chǔ)器地址映射到第一物理存儲(chǔ)器地址,并且第二頁(yè)表可以被配置為將虛擬存儲(chǔ)器地址映射到與第一物理存儲(chǔ)器地址不同的第二物理存儲(chǔ)器地址。在各種實(shí)施例中,物理存儲(chǔ)器可以被配置為包含處于包括第一物理存儲(chǔ)器地址的第一物理存儲(chǔ)器區(qū)中的函數(shù)的第一可執(zhí)行代碼和處于包括第二物理存儲(chǔ)器地址的第二物理存儲(chǔ)器區(qū)中的函數(shù)的第二可執(zhí)行代碼,并且第一和第二物理存儲(chǔ)器區(qū)可以是不同的物理存儲(chǔ)器區(qū)。在各種實(shí)施例中,第一和第二指令集架構(gòu)可以不同。在各種實(shí)施例中,第一可執(zhí)行代碼可以包括第一指令集架構(gòu)的指令,并且第二可執(zhí)行代碼可以包括第二指令集架構(gòu)的指令。
在各種實(shí)施例中,所述裝置可以進(jìn)一步包括加載器,所述加載器被配置為在所述裝置的一個(gè)或多個(gè)計(jì)算機(jī)處理器上操作。加載器可以被配置為將第一可執(zhí)行代碼加載到第一物理存儲(chǔ)器區(qū)中并將第二可執(zhí)行代碼加載到第二物理存儲(chǔ)器區(qū)中。在各種實(shí)施例中,加載器可以進(jìn)一步被配置為操作以將第一和第二頁(yè)表的配置促進(jìn)成將與取碼相關(guān)的虛擬存儲(chǔ)器地址映射到對(duì)應(yīng)的第一和第二物理存儲(chǔ)器地址。
在各種實(shí)施例中,虛擬存儲(chǔ)器地址可以與基于包括虛擬存儲(chǔ)器地址的函數(shù)指針的取碼相關(guān),函數(shù)指針對(duì)第一計(jì)算機(jī)處理器和第二計(jì)算機(jī)處理器二者來(lái)說(shuō)都可用。在各種實(shí)施例中,虛擬存儲(chǔ)器地址可以作為自變量而被傳送到在第一計(jì)算機(jī)處理器上執(zhí)行的可執(zhí)行代碼和在第二計(jì)算機(jī)處理器上執(zhí)行的可執(zhí)行代碼二者。
在各種實(shí)施例中,一種計(jì)算機(jī)實(shí)施的方法可以促進(jìn)代碼在異構(gòu)計(jì)算設(shè)備上的執(zhí)行,異構(gòu)計(jì)算設(shè)備包括利用第一指令集的第一計(jì)算機(jī)處理器和利用第二指令集的第二計(jì)算機(jī)處理器。所述方法可以包括:由在計(jì)算設(shè)備上操作的加載器分別在第一和第二物理存儲(chǔ)器區(qū)處將基于第一指令集的函數(shù)的第一可執(zhí)行代碼和基于第二指令集的函數(shù)的第二可執(zhí)行代碼加載到計(jì)算設(shè)備的物理存儲(chǔ)器中,所述加載是響應(yīng)于將函數(shù)的可執(zhí)行代碼加載到計(jì)算設(shè)備上的存儲(chǔ)器中的請(qǐng)求來(lái)執(zhí)行的,所述可執(zhí)行代碼包括第一可執(zhí)行代碼和基于第二指令集的函數(shù)的第二可執(zhí)行代碼。所述方法還可以包括由加載器促進(jìn)第一和第二頁(yè)表的配置以用于轉(zhuǎn)換由對(duì)應(yīng)的第一和第二計(jì)算機(jī)處理器進(jìn)行的虛擬存儲(chǔ)器訪問(wèn),第一和第二頁(yè)表將用于對(duì)函數(shù)的取碼的虛擬存儲(chǔ)器地址映射到對(duì)應(yīng)的第一和第二物理存儲(chǔ)器區(qū)中的物理地址。
在各種實(shí)施例中,所述方法可以進(jìn)一步包括由加載器將第一和第二頁(yè)表的配置促進(jìn)成將與包括用于取碼的虛擬存儲(chǔ)器地址的公共虛擬存儲(chǔ)器區(qū)相關(guān)的虛擬存儲(chǔ)器地址映射到第一和第二物理存儲(chǔ)器區(qū)的物理存儲(chǔ)器地址。
在各種實(shí)施例中,所述方法可以進(jìn)一步包括:由加載器基于第一可執(zhí)行代碼和第二可執(zhí)行代碼各自的大小來(lái)選擇公共虛擬存儲(chǔ)器區(qū)的大小。在各種實(shí)施例中,選擇大小可以包括:至少部分基于第一可執(zhí)行代碼的大小和第二可執(zhí)行代碼的大小中較大的一個(gè)來(lái)選擇公共大小。
用于執(zhí)行上述技術(shù)的計(jì)算機(jī)可讀介質(zhì)(包括非暫時(shí)性計(jì)算機(jī)可讀介質(zhì))、方法、系統(tǒng)和設(shè)備是本文公開(kāi)的實(shí)施例的說(shuō)明性示例。另外,上述交互中的其他設(shè)備可以被配置為執(zhí)行各種公開(kāi)的技術(shù)。
盡管本文出于描述的目的示出并描述了特定實(shí)施例,但在不脫離本公開(kāi)內(nèi)容的范圍的情況下,可以用被計(jì)劃以實(shí)現(xiàn)相同目的的各種可替換的和/或等效的實(shí)施例或?qū)崿F(xiàn)方式替代所示出和描述的實(shí)施例。本申請(qǐng)旨在覆蓋本文討論的實(shí)施例的任何改編或變形。因此,明確的意圖是,本文所述的實(shí)施例僅由權(quán)利要求書(shū)來(lái)限定。
在本公開(kāi)內(nèi)容記載了“一”元素或“第一”元素或者其等同物的情況下,這種公開(kāi)內(nèi)容包括一個(gè)或多個(gè)這種元素,既不要求也不排除兩個(gè)或更多個(gè)這種元素。此外,所標(biāo)識(shí)的元素的序數(shù)指示符(例如第一、第二或第三)用于在元素之間進(jìn)行區(qū)分,并非指示或暗示這種元素的要求或受限數(shù)量,它們也不指示這種元素的特定位置或順序,除非以其他方式具體聲明。