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