專利名稱:處理器資源虛擬化的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及一種處理器資源虛擬化的系統(tǒng)和方法。更具體地說,本發(fā)明涉及一種使系統(tǒng)資源虛擬化以使一個(gè)或多個(gè)線程可訪問處理器存儲器而與處理器的狀態(tài)無關(guān)的系統(tǒng)和方法。
背景技術(shù):
計(jì)算機(jī)系統(tǒng)正變得越來越復(fù)雜。計(jì)算機(jī)工業(yè)通常每18個(gè)月使計(jì)算機(jī)系統(tǒng)的性能增加一倍(例如個(gè)人計(jì)算機(jī)、PDA、游戲控制臺)。為了使計(jì)算機(jī)工業(yè)完成這一任務(wù),半導(dǎo)體工業(yè)生產(chǎn)了使性能每18個(gè)月增加一倍的集成電路。計(jì)算機(jī)系統(tǒng)根據(jù)集成電路的體系結(jié)構(gòu)將集成電路用于特定的功能。兩種基本體系結(jié)構(gòu)為1)基于微處理器和2)基于數(shù)字信號處理器。
具有基于微處理器體系結(jié)構(gòu)的集成電路通常被用來處理控制操作,而具有基于數(shù)字信號處理器體系結(jié)構(gòu)的集成電路通常被設(shè)計(jì)為處理信號處理操作(即數(shù)學(xué)運(yùn)算)。隨著技術(shù)的發(fā)展,計(jì)算機(jī)工業(yè)和半導(dǎo)體工業(yè)認(rèn)識到在計(jì)算機(jī)系統(tǒng)設(shè)計(jì)中使用兩種體系結(jié)構(gòu)或處理器類型的重要性。
許多計(jì)算機(jī)系統(tǒng)使用多處理器體系結(jié)構(gòu),以便在試圖支持廣泛范圍的軟件應(yīng)用的同時(shí)提供大量的處理能力。然而,發(fā)現(xiàn)一個(gè)問題,即這些處理器的每一個(gè)均包括不能被其它處理器訪問的專用內(nèi)部存儲器,比如局部存儲區(qū)和寄存器文件。發(fā)現(xiàn)的另一問題是如果特定處理器為不可用的,則其它處理器不能從該不可用處理器訪問數(shù)據(jù)。
此外,一個(gè)處理器可運(yùn)行訪問同一存儲空間的多個(gè)線程。發(fā)現(xiàn)的問題是當(dāng)特定線程正訪問特定存儲空間時(shí),其它線程必須等待直到特定線程完成,其它線程才能夠訪問存儲空間。
發(fā)明內(nèi)容
已發(fā)現(xiàn),通過將處理器的局部存儲器映射到應(yīng)用程序創(chuàng)建的每一線程的有效地址空間,并使用每一線程的頁表項(xiàng),地址變換器訪問該頁表項(xiàng)以便確定是否檢索“軟”數(shù)據(jù)拷貝使線程進(jìn)行處理,本發(fā)明的實(shí)施例解決了上述問題。對于應(yīng)用程序創(chuàng)建的每一線程,操作系統(tǒng)將頁表項(xiàng)存儲在頁表中,該頁表包括有效地址和實(shí)地址。實(shí)地址對應(yīng)于局部存儲器位置或軟拷貝區(qū)。當(dāng)?shù)刂纷儞Q器收到來自線程的檢索數(shù)據(jù)的請求時(shí),地址變換器查尋頁表項(xiàng)并從實(shí)地址位置檢索數(shù)據(jù)。
在本發(fā)明的實(shí)施例中,第一處理器包括操作系統(tǒng),其中操作系統(tǒng)可以是實(shí)時(shí)操作系統(tǒng)(例如游戲操作系統(tǒng))或虛擬操作系統(tǒng)(例如萬維網(wǎng)瀏覽操作系統(tǒng))。操作系統(tǒng)調(diào)用特定應(yīng)用程序的線程。該線程負(fù)責(zé)執(zhí)行特定任務(wù),比如游戲應(yīng)用程序的地形繪制。當(dāng)操作系統(tǒng)調(diào)用線程時(shí),操作系統(tǒng)將頁表項(xiàng)發(fā)送到頁表。頁表項(xiàng)包括有效地址和對應(yīng)線程使用的數(shù)據(jù)的位置的實(shí)地址。實(shí)地址可對應(yīng)于物理局部存儲器位置(local memory location)(例如局部存儲區(qū)),或者實(shí)地址可對應(yīng)于軟拷貝區(qū)。例如,軟拷貝區(qū)可位于高速緩沖存儲器、插接的系統(tǒng)存儲器或盤中。
線程將包括有效地址的請求發(fā)送到地址變換器。有效地址指示線程希望訪問的數(shù)據(jù)的有效存儲位置。地址變換器接收請求并查尋頁表中的頁表項(xiàng),由此,地址變換器識別對應(yīng)于有效地址的實(shí)地址。如果實(shí)地址對應(yīng)于處理器的局部存儲區(qū),則地址變換器從處理器的局部存儲區(qū)檢索數(shù)據(jù)并將數(shù)據(jù)傳遞給線程。如果實(shí)地址對應(yīng)于軟拷貝區(qū),則地址變換器從軟拷貝區(qū)檢索數(shù)據(jù)的拷貝并將數(shù)據(jù)拷貝傳遞給線程。
根據(jù)特定策略和相應(yīng)處理器的狀態(tài),操作系統(tǒng)通過將數(shù)據(jù)保存到軟拷貝區(qū)以及恢復(fù)來自軟拷貝區(qū)的數(shù)據(jù)管理線程的數(shù)據(jù)。在特定情況下,比如當(dāng)處理器的存儲器正被多線程使用時(shí),操作系統(tǒng)可對每一線程創(chuàng)建局部存儲區(qū)的軟拷貝,從而線程使用不同的軟拷貝。每次操作系統(tǒng)執(zhí)行保存和恢復(fù)操作,操作系統(tǒng)在頁表中創(chuàng)建新的頁表項(xiàng)。
現(xiàn)在將參照附圖僅通過示例描述本發(fā)明的實(shí)施例,其中圖1是示出主處理器訪問輔助處理器的局部存儲器的示圖;圖2是示出包括在輔助處理器上的線程訪問主處理器的局部存儲器的示圖;圖3是線程訪問位于軟拷貝區(qū)中的處理器的局部存儲器的軟拷貝的示圖;圖4是示出根據(jù)一個(gè)或多個(gè)線程在管理處理器存儲器的操作系統(tǒng)中采取的步驟的高級流程圖;圖5是示出將包括在輔助處理器的局部存儲器中的數(shù)據(jù)拷貝到軟拷貝區(qū)中所采取的步驟的流程圖;圖6是示出將數(shù)據(jù)恢復(fù)到處理器的局部存儲區(qū)中以及保存來自處理器的局部存儲區(qū)的數(shù)據(jù)所采取的步驟的流程圖;圖7是示出利用頁表項(xiàng)變換地址并根據(jù)變換的地址將數(shù)據(jù)提供給線程所采取的步驟的流程圖;圖8是示出多個(gè)處理器執(zhí)行其地址被映射到公共地址空間的多個(gè)線程的示圖;圖9是示出在異構(gòu)處理器環(huán)境中共享處理器資源的兩個(gè)操作系統(tǒng)的示圖;圖10是示出包括多個(gè)異構(gòu)處理器的處理器部件體系結(jié)構(gòu)的示圖;圖11A示出作為能夠執(zhí)行這里描述的計(jì)算操作的簡化示例的信息處理系統(tǒng);圖11B是示出被分成專用存儲器和非專用存儲器的局部存儲區(qū)的示圖。
具體實(shí)施例方式
下面旨在提供本發(fā)明的示例的詳細(xì)描述,不應(yīng)將其看作是對本發(fā)明本身的限制。相反,各種變化均落在說明書后附的權(quán)利要求所限定的本發(fā)明的范圍內(nèi)。
圖1是示出主處理器訪問輔助處理器的局部存儲器的示圖。處理器A100為包括操作系統(tǒng)115的主處理器。操作系統(tǒng)115可以是實(shí)時(shí)操作系統(tǒng),比如游戲(gaming)操作系統(tǒng),或者操作系統(tǒng)115可以是虛擬操作系統(tǒng),比如萬維網(wǎng)瀏覽操作系統(tǒng)。
操作系統(tǒng)115接收來自應(yīng)用程序105的線程請求,由此操作系統(tǒng)115調(diào)用線程1100。線程1100負(fù)責(zé)執(zhí)行特定任務(wù),比如在游戲應(yīng)用程序中的地形繪制。當(dāng)操作系統(tǒng)115調(diào)用線程1110時(shí),操作系統(tǒng)115向頁表140發(fā)送頁表項(xiàng)150。頁表項(xiàng)150包括對應(yīng)于線程1110使用的數(shù)據(jù)位置的有效地址和實(shí)地址。實(shí)地址可對應(yīng)于物理局部存儲器位置(例如局部存儲區(qū)(local store)),或者實(shí)地址可對應(yīng)于軟拷貝區(qū)。例如,數(shù)據(jù)的軟拷貝可被存儲在高速緩沖存儲器、插接的(pinned)系統(tǒng)存儲器或盤中(見圖4以及關(guān)于物理局部存儲器和軟拷貝區(qū)的進(jìn)一步詳述的對應(yīng)文本)。
線程1 100將請求訪問存儲器的特定部分的請求120發(fā)送到地址變換器130。請求120包括指示線程1 110希望訪問的數(shù)據(jù)的有效存儲位置的有效地址。地址變換器接收請求120并查尋頁表140中的頁表項(xiàng)150。地址變換器130識別實(shí)地址位置是否位于處理器B160的局部存儲區(qū)B170上。地址變換器130從局部存儲區(qū)B170檢索數(shù)據(jù)180,并將數(shù)據(jù)180發(fā)送到線程1 110。在一個(gè)實(shí)施例中,地址變換器130遞增地將數(shù)據(jù)180發(fā)送到線程1 110,比如在一頁一頁的基礎(chǔ)上。在一個(gè)實(shí)施例中,線程可駐留在處理器B160上,由此該線程從處理器A100的局部存儲區(qū)檢索數(shù)據(jù)(見圖2和關(guān)于駐留在處理器B160上的線程的進(jìn)一步詳述的對應(yīng)文本)。
圖2是示出示出包括在輔助處理器上的線程訪問主處理器的局部存儲器(例如局部存儲區(qū))的示圖。圖2與圖1類似,除了處理器B160包括請求來自處理器A100的局部存儲器比如局部存儲區(qū)A260的數(shù)據(jù)的線程以外。
處理器A100包括操作系統(tǒng)115,由此,當(dāng)操作系統(tǒng)115調(diào)用線程200時(shí),操作系統(tǒng)115將頁表項(xiàng)240發(fā)送到頁表140。頁表項(xiàng)240包括對應(yīng)于線程200使用的數(shù)據(jù)位置的有效地址和實(shí)地址。
線程2200將請求220發(fā)送到地址變換器130。地址變換器130查尋頁表項(xiàng)240,并且確定數(shù)據(jù)位于局部存儲區(qū)A260中。地址變換器130從局部存儲區(qū)260檢索數(shù)據(jù)280,并將數(shù)據(jù)280提供到線程2200。地址變換器130、頁表140、處理器B 160、處理器A100和操作系統(tǒng)115與圖1中所示的相同。
圖3是線程訪問位于軟拷貝區(qū)中的處理器的局部存儲器的軟拷貝的示圖。在操作期間,操作系統(tǒng)根據(jù)策略信息將物理存儲器保存并恢復(fù)到軟拷貝區(qū)。例如,操作系統(tǒng)可以特定的時(shí)間間隔保存并恢復(fù)數(shù)據(jù)(見圖6和進(jìn)一步詳述的對應(yīng)文本)。當(dāng)數(shù)據(jù)從局部存儲區(qū)被交換到軟拷貝區(qū)時(shí),操作系統(tǒng)改變頁表140中的頁表項(xiàng),使得地址變換器13從正確的軟拷貝區(qū)檢索數(shù)據(jù)。
處理器A100包括線程3300,其將請求310發(fā)送到地址變換器130。接著,地址變換器130識別頁表140中的頁表項(xiàng),并確定數(shù)據(jù)位于比如軟拷貝區(qū)320的軟拷貝區(qū)。軟拷貝區(qū)320包括高速緩沖存儲器330、內(nèi)核340和盤存儲器350。高速緩沖存儲器330可以是L1或L2高速緩沖存儲器,內(nèi)核340可以是插接的系統(tǒng)存儲器,盤存儲器350可以是外部硬盤驅(qū)動器。
地址變換器130從軟拷貝區(qū)320檢索數(shù)據(jù)360,并將數(shù)據(jù)360提供到線程3300以進(jìn)一步處理。地址變換器130、頁表140和處理器A100與圖1中所示的相同。
圖4是示出根據(jù)一個(gè)或多個(gè)線程在管理處理器存儲器的操作系統(tǒng)中采取的步驟的高級流程圖。在400開始處理,隨后,操作系統(tǒng)接收來自應(yīng)用程序105的線程請求(步驟410)。例如,應(yīng)用程序105可能希望調(diào)用執(zhí)行復(fù)雜計(jì)算比如地形繪制的線程。在步驟420操作系統(tǒng)初始化線程,由此操作系統(tǒng)識別支持該線程的資源,比如處理器B160。應(yīng)用程序105和處理器B160與圖1中所示的相同。
在步驟430,處理識別處理器B160的任務(wù)狀態(tài)。例如,如果線程需要來自特定處理器的局部存儲器的數(shù)據(jù),則操作系統(tǒng)識別同一處理器是否為被分配以支持線程的處理器。
確定線程是否應(yīng)訪問處理器的物理局部存儲器(局部存儲區(qū))以檢索數(shù)據(jù),或確定線程是否應(yīng)訪問軟拷貝區(qū)中的數(shù)據(jù)的軟拷貝(判定440)。例如,如果線程在包括該數(shù)據(jù)的同一處理器上執(zhí)行,則該線程可訪問處理器的局部存儲區(qū)。在另一示例中,線程可在與數(shù)據(jù)位置不同的不同處理器上執(zhí)行,在這種情況下,操作系統(tǒng)將數(shù)據(jù)拷貝到軟拷貝區(qū),使得線程可訪問軟拷貝,而與對應(yīng)的處理器是否未被激活無關(guān)。
如果線程應(yīng)使用物理局部存儲器,則判定440分支到“物理”分支442,隨后操作系統(tǒng)創(chuàng)建頁表140中的頁表項(xiàng)(步驟450),該頁表項(xiàng)包括地址變換器使用的用以訪問來自處理器的局部存儲器的數(shù)據(jù)的實(shí)地址。頁表140與圖1中所示的相同。
另一方面,如果線程應(yīng)使用局部存儲區(qū)的軟拷貝,則判定440分支到“軟拷貝”分支448,隨后處理將局部存儲區(qū)中的數(shù)據(jù)拷貝到軟拷貝區(qū)(預(yù)定處理塊460,見圖5和進(jìn)一步詳述的對應(yīng)文本)。操作系統(tǒng)創(chuàng)建頁表140中的頁表項(xiàng)(步驟470),該頁表項(xiàng)包括地址變換器使用的用以訪問軟拷貝區(qū)中的數(shù)據(jù)的軟拷貝的實(shí)地址。因此,當(dāng)線程請求數(shù)據(jù)時(shí),地址變換器訪問軟拷貝區(qū),以便將數(shù)據(jù)提供到該線程,而與對應(yīng)的處理器的狀態(tài)無關(guān)(見圖3和關(guān)于軟拷貝區(qū)的進(jìn)一步詳述的對應(yīng)文本)。
操作系統(tǒng)根據(jù)特定的策略管理通過將數(shù)據(jù)恢復(fù)到局部存儲區(qū)中以及保存來自局部存儲區(qū)的數(shù)據(jù)來執(zhí)行存儲器管理。在存儲器管理處理期間,操作系統(tǒng)可將來自軟拷貝區(qū)的數(shù)據(jù)恢復(fù)到處理器的局部存儲區(qū)中,或者操作系統(tǒng)可將局部存儲區(qū)中的數(shù)據(jù)保存到軟拷貝區(qū)(預(yù)定處理塊480,見圖6和進(jìn)一步詳述的對應(yīng)文本)。
確定操作系統(tǒng)是否應(yīng)繼續(xù)處理線程請求并管理存儲器(判定490)。如果操作系統(tǒng)應(yīng)該繼續(xù),則判定490分支到“是”分支492,該分支492返回以處理更多的線程請求。該循環(huán)繼續(xù)直到操作系統(tǒng)應(yīng)停止為止,此時(shí)判定490分支到“否”分支498,隨后在499操作系統(tǒng)結(jié)束處理。
圖5是示出將包括在輔助處理器的局部存儲器(即,局部存儲區(qū))中的數(shù)據(jù)拷貝到軟拷貝區(qū)中所采取的步驟的流程圖。在500處理開始,隨后在步驟510,處理從局部存儲區(qū)B170檢索數(shù)據(jù)。局部存儲區(qū)B170與圖1中所示的相同。
確定是否將數(shù)據(jù)保存在高速緩沖存儲器中,比如鎖定的L1高速緩沖存儲器或鎖定的L2高速緩沖存儲器中(判定520)。如果操作系統(tǒng)應(yīng)將數(shù)據(jù)保存在高速緩沖存儲器中,則判定520分支到“是”分支522,隨后在步驟530處理將數(shù)據(jù)的拷貝存儲在高速緩沖存儲器330中,并在540返回。高速緩沖存儲器330與圖3中所示的相同。另一方面,如果操作系統(tǒng)不應(yīng)將數(shù)據(jù)存儲在高速緩沖存儲器中,則判定520分支到“否”分支528,旁路在高速緩沖存儲器中的數(shù)據(jù)存儲步驟。
確定是否將數(shù)據(jù)保存在插接的系統(tǒng)存儲器中,比如保留在內(nèi)核內(nèi)的存儲器中(判定550)。如果操作系統(tǒng)應(yīng)將數(shù)據(jù)保存在插接的系統(tǒng)存儲器中,則判定550分支到“是”分支552,隨后在步驟560處理將數(shù)據(jù)的拷貝存儲在內(nèi)核340中,并在570返回。內(nèi)核340與圖3中所示的相同。另一方面,如果操作系統(tǒng)不應(yīng)將數(shù)據(jù)保存在插接的系統(tǒng)存儲器中,則判定550分支到“否”分支558,旁路在插接的系統(tǒng)存儲器中的數(shù)據(jù)存儲步驟。
確定是否將數(shù)據(jù)保存在盤中,比如外部硬盤驅(qū)動器中(判定580)。如果操作系統(tǒng)應(yīng)將數(shù)據(jù)保存在盤上,則判定580分支到“是”分支582,隨后在步驟590處理將數(shù)據(jù)存儲在盤存儲器350中,并在595返回。盤存儲器350與圖3中所示的相同。另一方面,如果操作系統(tǒng)不應(yīng)將數(shù)據(jù)保存在盤上,則判定580分支到“否”分支588,旁路在盤上的數(shù)據(jù)存儲步驟,并在595返回。
圖6是示出將數(shù)據(jù)恢復(fù)到處理器的局部存儲器(即,局部存儲區(qū))中以及保存來自處理器的局部存儲器(即,局部存儲區(qū))的數(shù)據(jù)所采取的步驟的流程圖。操作系統(tǒng)根據(jù)特定策略和對應(yīng)處理器的狀態(tài),通過保存及恢復(fù)管理線程的對應(yīng)數(shù)據(jù)。操作系統(tǒng)試圖提供一種與訪問軟拷貝區(qū)中的數(shù)據(jù)的軟拷貝相反的能夠訪問物理局部存儲器中的數(shù)據(jù)的線程。在特定情況下,比如當(dāng)處理器的存儲器正被多線程使用時(shí),操作系統(tǒng)創(chuàng)建局部存儲區(qū)的軟拷貝,由此線程使用該軟拷貝。
在600處理開始,隨后在步驟605處理從策略存儲區(qū)610檢索策略。策略存儲區(qū)610可被存儲在比如計(jì)算機(jī)硬盤的非易失性存儲區(qū)。在步驟615處理選擇第一任務(wù)。在一個(gè)實(shí)施例中,處理可選擇第一線程而非第一任務(wù)。
確定是否將來自軟拷貝區(qū)的數(shù)據(jù)恢復(fù)到局部存儲區(qū)(判定620)。例如,線程可一直處于低優(yōu)先級,并且與此同時(shí),使用軟拷貝區(qū)中的數(shù)據(jù)的軟拷貝。繼續(xù)該示例,操作系統(tǒng)可將線程移動到高優(yōu)先級,并且操作系統(tǒng)利用軟拷貝恢復(fù)局部存儲區(qū),并指示地址變換器從局部存儲區(qū)檢索數(shù)據(jù)以提供給線程。
如果操作系統(tǒng)希望將來自軟拷貝區(qū)的數(shù)據(jù)恢復(fù)到局部存儲區(qū),則判定620分支到“是”分支622,隨后在步驟625處理從軟拷貝區(qū)320檢索軟拷貝,并將軟拷貝存儲在局部存儲區(qū)B170中(步驟630)。軟拷貝區(qū)320和局部存儲區(qū)B170分別與圖3和圖1中所示的相同。在步驟635處理改變頁表140中的頁表項(xiàng),該頁表項(xiàng)包括對應(yīng)于局部存儲區(qū)位置的新的實(shí)地址,在局部存儲區(qū)位置,地址變換器檢索數(shù)據(jù)以提供給線程。在步驟625、630和635期間,地址變換器被“鎖定”,使得局部存儲區(qū)B170不可被其它線程訪問,直到恢復(fù)操作完成為止。另一方面,如果操作系統(tǒng)不應(yīng)執(zhí)行恢復(fù)操作,則判定620旁路數(shù)據(jù)存儲步驟分支到“否”分支628。
確定是否將來自局部存儲區(qū)的數(shù)據(jù)保存到軟拷貝區(qū)(判定640)。例如,線程可被置于低優(yōu)先級,因此操作系統(tǒng)通過頁表項(xiàng)指示地址變換器使用數(shù)據(jù)的軟拷貝。
如果操作系統(tǒng)希望將數(shù)據(jù)保存到軟拷貝區(qū),則判定640分支到“是”分支642,隨后在步驟645處理從局部存儲區(qū)B170檢索數(shù)據(jù),并將數(shù)據(jù)拷貝到軟拷貝區(qū)320(步驟650)。軟拷貝區(qū)320可包括高速緩沖存儲器、插接的系統(tǒng)存儲器或盤(見圖3和關(guān)于軟拷貝區(qū)的進(jìn)一步詳述的對應(yīng)文本)。
在步驟655處理改變頁表140中的頁表項(xiàng),該頁表項(xiàng)包括對應(yīng)于地址變換器使用的用以檢索相應(yīng)線程的數(shù)據(jù)的軟拷貝區(qū)的新的實(shí)地址。在步驟645、650和655期間,地址變換器被“鎖定”,使得局部存儲區(qū)B170不可被其它線程訪問,直到保存操作完成為止。
確定是否有更多的任務(wù)要處理(判定660)。如果有更多的任務(wù)要處理,則判定660分支到“是”分支662,其返回以選擇(步驟670)并處理下一任務(wù)。該循環(huán)繼續(xù)直到?jīng)]有更多的任務(wù)處理,此時(shí)判定660分支到“否”分支668,隨后在680處理返回。
圖7是示出利用頁表項(xiàng)變換地址并根據(jù)變換的地址將數(shù)據(jù)提供給線程所采取的步驟的流程圖。在700處理開始,隨后在步驟710地址變換器接收來自線程720的請求。線程720可以是特定線程,比如分別在圖1、2和3中所示的線程1 110、線程2 200或線程3 300。線程720包括對應(yīng)于線程720希望訪問的數(shù)據(jù)的位置的有效地址。
在步驟730,地址變換器訪問頁表140并利用頁表項(xiàng)之一將有效地址變換為實(shí)地址。操作系統(tǒng)管理頁表項(xiàng),使得每一頁表項(xiàng)包括對應(yīng)于物理局部存儲器或軟拷貝區(qū)的實(shí)地址(見圖6和關(guān)于頁表項(xiàng)管理的進(jìn)一步詳述的對應(yīng)文本)。頁表140與圖1中所示的相同。
地址變換器根據(jù)變換的實(shí)地址從軟拷貝區(qū)320或局部存儲區(qū)B170檢索數(shù)據(jù)(步驟740)。軟拷貝區(qū)320和局部存儲區(qū)B170分別與圖3和1中所示的相同。在步驟750,處理將檢索的數(shù)據(jù)傳遞到線程720。在一個(gè)實(shí)施例中,地址變換器遞增地將數(shù)據(jù)傳遞到線程720,比如一次傳遞數(shù)據(jù)的一頁。
確定地址變換器是否應(yīng)繼續(xù)處理線程請求(判定760)。如果地址變換器應(yīng)繼續(xù)處理線程請求,則判定760分支到“是”分支762,返回處理更多的線程請求。該循環(huán)繼續(xù)直到?jīng)]有更多的線程請求要處理為止,此時(shí)判定760分支到“否”分支768,隨后在770地址變換結(jié)束。
圖8是示出多個(gè)處理器執(zhí)行其地址被映射到公共地址空間的多個(gè)線程的示圖。本發(fā)明允許多個(gè)線程運(yùn)行在多個(gè)處理器上,每一線程的各存儲器訪問始終由操作系統(tǒng)管理并被映射到比如地址空間850的地址空間中。
處理器B1800包括線程E805和線程F810。線程E805和線程F810的有效地址空間分別為有效地址空間E855和有效地址空間F860,這兩個(gè)有效地址空間均包括在地址空間850中。每一線程執(zhí)行獨(dú)立的操作,此外,一些線程可由第一操作系統(tǒng)控制,其它線程可由第二操作系統(tǒng)控制(見圖9和關(guān)于多操作系統(tǒng)的進(jìn)一步詳述的對應(yīng)文本)。
處理器B2815包括三個(gè)線程,它們是線程G820、線程H825和線程I830。如圖8中可看到的,線程G820、線程H825和線程I830的有效地址分別為位于地址空間850中的有效地址G865、有效地址H870和有效地址I875。
最后,處理器B3860包括兩個(gè)線程,它們是線程J840和線程K845。線程J840和線程K845的有效地址空間分別為位于地址空間850中的有效地址空間J880和有效地址空間K885。
圖8中所示的線程可被這樣管理,即它們的對應(yīng)處理器被“虛擬”到操作系統(tǒng)或應(yīng)用程序。例如,可存在兩個(gè)操作系統(tǒng),使得一個(gè)操作系統(tǒng)認(rèn)為其正控制三個(gè)處理器,而另一操作系統(tǒng)認(rèn)為其正控制兩個(gè)處理器,盡管在計(jì)算機(jī)系統(tǒng)中始終僅有三個(gè)處理器(見圖9和關(guān)于兩個(gè)操作系統(tǒng)之間的資源共享的進(jìn)一步詳述的對應(yīng)文本)。
圖9是示出在異構(gòu)處理器環(huán)境中共享處理器資源的兩個(gè)操作系統(tǒng)的示圖。圖9示出虛擬化處理器局部存儲器的使用,以便在獨(dú)立的操作系統(tǒng)之間共享資源。例如,計(jì)算機(jī)系統(tǒng)可運(yùn)行兩個(gè)操作系統(tǒng)并包括八個(gè)處理器。在該示例中,第一操作系統(tǒng)需要六個(gè)處理器,第二操作系統(tǒng)需要全部的八個(gè)處理器。在該示例中,處理器資源被虛擬化并在兩個(gè)操作系統(tǒng)之間被共享,以便滿足兩個(gè)操作系統(tǒng)的需要。
處理器A100包括操作系統(tǒng)1900和操作系統(tǒng)2950。每一操作系統(tǒng)可負(fù)責(zé)特定功能。例如,操作系統(tǒng)1900可以是用于游戲應(yīng)用程序的實(shí)時(shí)操作系統(tǒng),操作系統(tǒng)2950可以是管理萬維網(wǎng)瀏覽的虛擬操作系統(tǒng)。
圖9示出執(zhí)行多線程的處理器B1800、處理器B2815和處理器B3835。操作系統(tǒng)1900使用線程E805、H825、I830、J840和K845。因而,操作系統(tǒng)900認(rèn)為其控制所有三個(gè)處理器(B1800、B2815和B3835)。處理器B1800、B2815和B3835與圖8中所示的處理器相同。
此外,圖9示出操作系統(tǒng)2950使用線程F810和G820。因而,操作系統(tǒng)950認(rèn)為其控制兩個(gè)處理器(B1800和B2815)。合起來,操作系統(tǒng)認(rèn)為在計(jì)算機(jī)系統(tǒng)中存在五個(gè)處理器,而實(shí)際上僅存在三個(gè)。線程E805、F810、G820、H825、I830、J840和K845與圖8中所示的線程相同。
利用這里所述的本發(fā)明,每個(gè)線程可訪問對應(yīng)于其它處理器之一的局部存儲器。例如,通過將請求發(fā)送到地址變換器以訪問處理器B3835的局部存儲器,線程E805可訪問處理器B3835的局部存儲器。在該示例中,地址變換器利用位于頁表中的頁表項(xiàng)識別對應(yīng)于處理器B3835的局部存儲器的實(shí)地址。實(shí)地址可對應(yīng)于物理局部存儲器,或者實(shí)地址可對應(yīng)于包括處理器B3835的數(shù)據(jù)的軟拷貝的軟拷貝區(qū)(見圖1-7和關(guān)于地址變換的進(jìn)一步詳述的對應(yīng)文本)。
圖10是示出包括多個(gè)異構(gòu)處理器的處理器部件體系結(jié)構(gòu)的示圖。異構(gòu)處理器共享公用存儲器和公用總線。處理器部件體系結(jié)構(gòu)(PEA)1000通過輸入輸出1070將信息發(fā)送到外部設(shè)備以及從外部設(shè)備接收信息,并利用處理器部件總線1060將信息分發(fā)到控制面(plane)1010和數(shù)據(jù)面1040。控制面1010管理PEA1000并將作業(yè)分發(fā)給數(shù)據(jù)面1040。
控制面1010包括運(yùn)行操作系統(tǒng)(OS)1025的處理單元1020。例如,處理單元1020可以是嵌入PEA1000中的Power PC核心,OS1025可以是Linux操作系統(tǒng)。處理單元1020管理PEA1000的公用存儲器映像表。存儲器映像表對應(yīng)于包括在PEA1000中的存儲位置,比如L2存儲器1030以及包括在數(shù)據(jù)面1040中的非專用存儲器(見圖11A、11B和關(guān)于存儲器映射的進(jìn)一步詳述的對應(yīng)文本)。
數(shù)據(jù)面1040包括協(xié)處理復(fù)合體(SPC)1045、1050和1055。每一SPC被用于處理數(shù)據(jù)信息,并且每一SPC可具有不同的結(jié)構(gòu)設(shè)置。例如,PEA1000可被用于無線通信系統(tǒng),并且每一SPC可負(fù)責(zé)單獨(dú)的處理任務(wù),比如調(diào)制、芯片速率處理、編碼和網(wǎng)絡(luò)接口。在另一示例中,每一SPC可具有相同的結(jié)構(gòu)設(shè)置,并且可被用于并行執(zhí)行得益于并行處理的操作。每一SPC包括作為處理核心的協(xié)處理單元(SPU),比如數(shù)字信號處理器、微控制器、微處理器或這些核心的組合。
SPC1045、1050和1055與在控制面1010、數(shù)據(jù)面1040和輸入/輸出1070之間傳遞信息的處理器部件總線1060相連??偩€1060為在I/O1070、控制面1010和數(shù)據(jù)面1040之間傳遞信息的片上相干多處理器總線。輸入/輸出1070包括靈活的輸入-輸出邏輯,該靈活的輸入-輸出邏輯基于與PEA1000相連的外圍設(shè)備將接口引腳動態(tài)地分配到輸入-輸出控制器。例如,PEA1000可與兩個(gè)外圍設(shè)備比如外圍設(shè)備A和外圍設(shè)備B相連,由此每一外圍設(shè)備與PEA1000上的特定數(shù)目的輸入及輸出引腳相連。在該示例中,靈活的輸入-輸出邏輯被配置成將與外圍設(shè)備A相連的PEA1000的外部輸入及輸出引腳路由到第一輸入輸出控制器(即IOC A),并且將與外圍設(shè)備B相連的PEA1000的外部輸入及輸出引腳路由到第二輸入輸出控制器(即IOC B)。
圖11A示出作為能夠執(zhí)行這里描述的計(jì)算操作的簡化示例的信息處理系統(tǒng)。圖11A中的示例示出使用公用存儲器映像的多個(gè)異構(gòu)處理器,以便在異構(gòu)處理器之間共享存儲器。設(shè)備1100包括執(zhí)行設(shè)備1100的操作系統(tǒng)的處理單元1130。處理單元1130與圖10中所示的處理單元1020類似。處理單元1130利用系統(tǒng)存儲器映像1120來分配整個(gè)設(shè)備1100的存儲空間。例如,當(dāng)處理單元1130收到存儲請求時(shí),處理單元1130利用系統(tǒng)存儲器映像1120來識別并分配存儲區(qū)。處理單元1130訪問L2存儲器1125以檢索應(yīng)用程序和數(shù)據(jù)信息。L2存儲器1125與圖10中所示的L2存儲器1030類似。
系統(tǒng)存儲器映像1120將存儲器映射區(qū)分成為區(qū)域1135、1145、1150、1155和1160的區(qū)域。區(qū)域1135為可由單獨(dú)的輸入輸出設(shè)備控制的外部系統(tǒng)存儲器的映射區(qū)。區(qū)域1145為對應(yīng)于一個(gè)或多個(gè)協(xié)處理復(fù)合體比如SPC1102的非專用存儲位置的映射區(qū)。SPC1102類似于圖10中所示的SPC,比如SPC A1045。SPC1102包括比如局部存儲區(qū)1110的局部存儲器,由此,部分局部存儲器可被分配給整個(gè)系統(tǒng)存儲器,用于其它處理器訪問。例如,局部存儲區(qū)1110的1MB可被分配為非專用存儲器,由此使其可被其它異構(gòu)處理器訪問。在該示例中,局部存儲區(qū)分區(qū)管理器(alias)1145管理位于局部存儲區(qū)1110中的1MB的非專用存儲器。
區(qū)域1150為變換旁視緩沖器(TLB)和存儲流控制(MFC)寄存器的映射區(qū)。變換旁視緩沖器包括在新近引用的存儲頁的虛擬地址和實(shí)地址之間的交叉引用。存儲流控制提供在處理器和總線之間的接口功能,比如DMA控制和同步。
區(qū)域1155為操作系統(tǒng)的映射區(qū),并且為具有帶寬和等待時(shí)間保證的插接系統(tǒng)存儲器。區(qū)域1160為處于設(shè)備1100的外部并由系統(tǒng)和輸入輸出體系結(jié)構(gòu)定義的輸入輸出設(shè)備的映射區(qū)。
協(xié)處理復(fù)合體(SPC)1102包括協(xié)處理單元(SPU)1105、局部存儲區(qū)1110和存儲器管理單元(MMU)1115。處理單元1130響應(yīng)處理單元1130的指示管理SPU1105并且處理數(shù)據(jù)。例如,SPU1105可以是數(shù)字信號處理核心、微處理器核心、微控制器核心或這些核心的組合。局部存儲區(qū)1110為SPU1105配置為專用存儲區(qū)和非專用存儲區(qū)的存儲區(qū)。例如,如果SPU1105需要很大量的局部存儲器,則SPU1105可將局部存儲區(qū)1110的100%分配給專用存儲器。在另一示例中,如果SPU1105需要極小量的局部存儲器,則SPU1105可將局部存儲區(qū)1110的10%分配給專用存儲器,并將局部存儲區(qū)1110的剩余的90%分配給非專用存儲器(見圖11B和關(guān)于局部存儲區(qū)配置的進(jìn)一步詳述的對應(yīng)文本)。
被分配給非專用存儲器的部分局部存儲區(qū)1110由區(qū)域1145中的系統(tǒng)存儲器映像1120來管理。這些非專用存儲區(qū)可被其它SPU或被處理單元1130訪問。MMU1115包括直接存儲器存取(DMA)功能,并且將信息從局部存儲區(qū)1110傳遞到設(shè)備1100內(nèi)的其它存儲器位置。
圖11B是示出被分成專用存儲器和非專用存儲器的局部存儲區(qū)的示圖。在系統(tǒng)引導(dǎo)期間,協(xié)處理單元(SPU)1160將局部存儲區(qū)1170分成兩個(gè)區(qū)域,即專用存儲區(qū)1175和非專用存儲區(qū)1180。SPU1160類似于圖11A中所示的SPU1105,局部存儲區(qū)1170類似于圖11A中所示的局部存儲區(qū)1110。專用存儲區(qū)1175可由SPU1160訪問,而非專用存儲區(qū)1180可由SPU1160也可由特定設(shè)備內(nèi)的其它處理單元訪問。SPU1160將專用存儲區(qū)1175用于對數(shù)據(jù)的快速訪問。例如,SPU1160可負(fù)責(zé)需要SPU1160快速訪問存儲在存儲器中的大量數(shù)據(jù)的復(fù)雜計(jì)算。在該示例中,SPU1160可將局部存儲區(qū)1170的100%分配給專用存儲區(qū)1175,以便確保SPU1160具有足夠的局部存儲器進(jìn)行訪問。在另一示例中,SPU1160可能不需要大量的局部存儲器,因此,可將局部存儲區(qū)1170的10%分配給專用存儲區(qū)1175,并將局部存儲區(qū)1170的剩余的90%分配給非專用存儲區(qū)1180。
例如局部存儲器分區(qū)管理器1190的系統(tǒng)存儲器映射區(qū)管理被分配給非專用存儲器的部分局部存儲區(qū)1170。局部存儲器分區(qū)管理器1190類似于圖11A中所示的局部存儲器分區(qū)管理器1145。局部存儲器分區(qū)管理器1190管理每一SPU的非專用存儲器,并且使得其它SPU能夠訪問非專用存儲器以及設(shè)備的控制處理單元。
盡管圖10、11A和11B中所述的計(jì)算機(jī)系統(tǒng)能夠執(zhí)行這里所述的處理,但該計(jì)算機(jī)系統(tǒng)僅是計(jì)算機(jī)系統(tǒng)的一個(gè)示例。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)認(rèn)識到,許多其它的計(jì)算機(jī)系統(tǒng)設(shè)計(jì)也能夠執(zhí)行這里所述的處理。
本發(fā)明的優(yōu)選實(shí)現(xiàn)之一是應(yīng)用程序,即例如可駐留在計(jì)算機(jī)的隨機(jī)存取存儲器中的代碼模塊中的一組指令(程序代碼)。在計(jì)算機(jī)需要之前,該組指令可被存儲在另一計(jì)算機(jī)存儲器中,例如,存儲在硬盤驅(qū)動器上,或可移動存儲器比如光盤(最終用于CD ROM)或軟盤(最終用于軟盤驅(qū)動器)中,或通過因特網(wǎng)或其它計(jì)算機(jī)網(wǎng)絡(luò)下載。因此,本發(fā)明可被實(shí)現(xiàn)為計(jì)算機(jī)中使用的計(jì)算機(jī)程序產(chǎn)品。此外,盡管描述的各種方法以通過軟件選擇性地激活或重構(gòu)的通用計(jì)算機(jī)被方便地實(shí)現(xiàn),但本領(lǐng)域的技術(shù)人員也應(yīng)當(dāng)認(rèn)識到,以硬件、固件或構(gòu)成執(zhí)行所需方法步驟的更專門裝置均可執(zhí)行描述的各種方法。
雖然已示出并描述了本發(fā)明的特定實(shí)施例,但基于這里的教導(dǎo),在不脫離本發(fā)明和其更廣方面的情況下可對其進(jìn)行變化和修改,這對本領(lǐng)域的技術(shù)人員來說是顯而易見的,因此,后附權(quán)利要求的范圍將包含在本發(fā)明的實(shí)質(zhì)精神和范圍內(nèi)的所有這樣的變化和修改。此外,應(yīng)當(dāng)理解,本發(fā)明僅由后附權(quán)利要求限定。本領(lǐng)域的技術(shù)人員會理解,如果要求了權(quán)利要求的特定數(shù)目的要素,則這樣的要求將被明確地指示在權(quán)利要求中,并且在缺少這樣的指示的情況下,不構(gòu)成這種限制。對于非限制示例來說,為了有助于理解,下面的后附權(quán)利要求包含引導(dǎo)短語“至少一個(gè)”和“一個(gè)或多個(gè)”以引導(dǎo)權(quán)利要求的要素。然而,這樣的短語的使用不應(yīng)被理解為暗指由不定冠詞“一個(gè)(a)”或“一個(gè)(an)”引導(dǎo)的權(quán)利要求要素將包含這樣的引導(dǎo)的權(quán)利要求要素的任何特定權(quán)利要求限定為包含僅一個(gè)這樣要求的發(fā)明,即使當(dāng)同一權(quán)利要求包括引導(dǎo)短語“一個(gè)或多個(gè)”或“至少一個(gè)”和比如“一個(gè)(a)”或“一個(gè)(an)”的不定冠詞時(shí);對用于權(quán)利要求中的定冠詞也同樣適用。
權(quán)利要求
1.一種計(jì)算機(jī)實(shí)現(xiàn)的方法,包括接收來自第一處理器的數(shù)據(jù)請求,其中,所述數(shù)據(jù)請求對應(yīng)于位于第二處理器的局部存儲器中的數(shù)據(jù);識別對應(yīng)于數(shù)據(jù)請求的實(shí)地址;以及對應(yīng)于實(shí)地址將數(shù)據(jù)提供到第一處理器。
2.根據(jù)權(quán)利要求1的方法,其中,實(shí)地址對應(yīng)于軟拷貝區(qū),所述軟拷貝區(qū)從由高速緩沖存儲器、內(nèi)核和盤構(gòu)成的組中選擇。
3.根據(jù)權(quán)利要求1的方法,其中,數(shù)據(jù)請求包括有效地址,該方法還包括利用頁表項(xiàng)將有效地址變換為實(shí)地址,所述頁表項(xiàng)位于頁表中。
4.根據(jù)權(quán)利要求1的方法,還包括接收線程請求;確定對應(yīng)于第二處理器的處理器狀態(tài);以及根據(jù)該確定將來自第二處理器的局部存儲器的數(shù)據(jù)拷貝到軟拷貝區(qū)。
5.根據(jù)權(quán)利要求1的方法,還包括接收一個(gè)或多個(gè)策略;確定是否根據(jù)一個(gè)或多個(gè)策略恢復(fù)數(shù)據(jù);以及響應(yīng)該確定恢復(fù)數(shù)據(jù),所述恢復(fù)還包括從軟拷貝區(qū)檢索數(shù)據(jù);將數(shù)據(jù)保存在局部存儲器;以及對應(yīng)于所述恢復(fù)改變頁表項(xiàng)。
6.根據(jù)權(quán)利要求1的方法,其中,局部存儲器對應(yīng)于位于第二處理器上的寄存器。
7.根據(jù)權(quán)利要求1的方法,其中,第一處理器為處理單元,第二處理器為協(xié)處理單元。
8.一種程序產(chǎn)品,包括具有計(jì)算機(jī)程序代碼的計(jì)算機(jī)可操作介質(zhì),所述計(jì)算機(jī)程序代碼當(dāng)在計(jì)算機(jī)上被執(zhí)行有效以執(zhí)行權(quán)利要求1-7之任一的步驟。
9.一種信息處理系統(tǒng),包括多個(gè)處理器;可由多個(gè)處理器訪問的一個(gè)或多個(gè)非易失性存儲器設(shè)備;可由多個(gè)處理器訪問的共享存儲器;和用于將數(shù)據(jù)提供給線程的數(shù)據(jù)管理工具,所述數(shù)據(jù)管理工具包括執(zhí)行權(quán)利要求1-7之任一的方法步驟的有效的軟件代碼。
10.根據(jù)權(quán)利要求9的信息處理系統(tǒng),其中,第一處理器和第二處理器是異構(gòu)的。
全文摘要
在系統(tǒng)資源虛擬化的系統(tǒng)和方法中,線程在處理器上被創(chuàng)建,并且處理器的局部存儲器被映射到有效地址空間中。在這種情況下,處理器的局部存儲器可被其它處理器訪問,而與處理器是否正在運(yùn)行無關(guān)。另外的線程創(chuàng)建映射到有效地址空間的另外的局部存儲器。有效地址空間對應(yīng)于物理局部存儲器或“軟”拷貝區(qū)。當(dāng)處理器正在運(yùn)行時(shí),不同的處理器可從第一處理器的局部存儲區(qū)訪問位于第一處理器的局部存儲器中的數(shù)據(jù)。當(dāng)處理器沒有運(yùn)行時(shí),處理器的局部存儲器的軟拷貝被存儲在存儲器位置(即鎖定的高速緩沖存儲器、插接的系統(tǒng)存儲器、虛擬存儲器等),用于其它處理器繼續(xù)訪問。
文檔編號G06F12/02GK1989492SQ200580024678
公開日2007年6月27日 申請日期2005年8月24日 優(yōu)先權(quán)日2004年9月30日
發(fā)明者小馬克西米諾·阿圭萊爾, 邁克爾·諾曼·戴, 馬克·理查德·納特, 詹姆斯·西尼迪斯 申請人:國際商業(yè)機(jī)器公司