專利名稱:動(dòng)態(tài)配置虛擬處理器資源的機(jī)制的制作方法
相關(guān)專利申請(qǐng)的交叉參考本專利申請(qǐng)主張下列美國(guó)臨暫時(shí)專利申請(qǐng)的權(quán)利,它們被結(jié)合在此作為參考。
本專利申請(qǐng)是下列共有非臨時(shí)美國(guó)專利申請(qǐng)的部分繼續(xù)申請(qǐng),下列專利申請(qǐng)的每一個(gè)都有相同的受讓人和至少一個(gè)共同的發(fā)明人,它們被結(jié)合在此作為參考。
上述提及的兩個(gè)共有非臨時(shí)美國(guó)專利申請(qǐng)主張下列美國(guó)臨時(shí)專利申請(qǐng)的權(quán)利。
本專利申請(qǐng)是和下列共有非臨時(shí)美國(guó)專利申請(qǐng)有關(guān),下列專利申請(qǐng)的每一個(gè)被結(jié)合在此作為參考。
技術(shù)領(lǐng)域:
本發(fā)明總地來說涉及虛擬多處理器的領(lǐng)域,更具體的說,涉及一個(gè)或多個(gè)虛擬處理元件之間的一虛擬多處理器內(nèi)的資源動(dòng)態(tài)配置的一種機(jī)制。
背景技術(shù):
現(xiàn)今,設(shè)計(jì)者運(yùn)用許多技術(shù)以增加微處理器的性能。大部份的微處理器均使用在一個(gè)固定的頻率運(yùn)行的時(shí)鐘信號(hào)進(jìn)行工作。在每一個(gè)時(shí)鐘周期,微處理器的電路均執(zhí)行他們相對(duì)應(yīng)的功能。依據(jù)軒尼斯和派特森的方法,真實(shí)測(cè)量微處理器的性能是執(zhí)行一個(gè)程序或是一群程序所需要的時(shí)間。從這個(gè)觀點(diǎn)來說,微處理器的性能是它的時(shí)鐘頻率,執(zhí)行一個(gè)指令所需要的平均時(shí)鐘周期數(shù)目(換個(gè)說法,每個(gè)時(shí)鐘周期執(zhí)行指令的平均數(shù)目),和在該個(gè)程序或是該群程序中所執(zhí)行的指令數(shù)目的函數(shù)。半導(dǎo)體科學(xué)家和工程師持續(xù)在技術(shù)上提供進(jìn)展,使得微處理器能夠運(yùn)算在更快的時(shí)鐘頻率上。這些技術(shù)進(jìn)展有效地縮減晶體管的大小,導(dǎo)致在一個(gè)集成電路中更快速的交換時(shí)間。執(zhí)行的指令數(shù)目主要取決于將被該程序所執(zhí)行的任務(wù),雖然它也受微處理器指令集架構(gòu)的影響。然而,大幅的性能提升已經(jīng)由架構(gòu)上和組織上的技術(shù)來達(dá)成,該技術(shù)提高了每時(shí)鐘周期執(zhí)行的指令數(shù)目,特別是通過允許指令平行執(zhí)行的技術(shù)(也就是,平行處理理論)。
已經(jīng)提高微處理器每個(gè)時(shí)鐘周期的指令數(shù)目,和他們的時(shí)鐘頻率的平行處理技術(shù)是流水線的。以相當(dāng)類似于裝配線的階段的方式,在微處理器流水線階段內(nèi),流水線重疊多指令的執(zhí)行。在一個(gè)理想情形,一個(gè)指令在每一個(gè)時(shí)鐘周期向流水線下方移到一個(gè)新階段,該新階段對(duì)這些指令執(zhí)行不同的功能。因此,雖然每一個(gè)各別指令花數(shù)個(gè)時(shí)鐘周期來完成,因?yàn)楦鲃e指令的時(shí)鐘周期有重疊,每個(gè)指令的平均時(shí)鐘會(huì)被減少。在程序中指令允許的情形下實(shí)現(xiàn)流水線的性能提升,也就是一個(gè)指令的執(zhí)行并不需要依賴它的前一個(gè)指令,因此可以和它先前的指令平行地執(zhí)行,通常被稱為指令級(jí)平行處理。另一種被當(dāng)今微處理器所采用的指令級(jí)平行處理的方法,是在相同的時(shí)鐘周期發(fā)出許多執(zhí)行的指令給不同的功能單元,各單元執(zhí)行他們被規(guī)定的功能。以這種方法完成指令級(jí)平行處理的微處理器,通常被視為“超級(jí)標(biāo)量”微處理器。
以上所討論的平行處理機(jī)制是和各別的指令級(jí)平行處理有關(guān)。然而,經(jīng)由指令級(jí)平行處理的開發(fā)所達(dá)成的性能的改善是有限的。由有限的指令級(jí)平行處理所加諸的各種限制和其它性能限制的問題,最近重新引發(fā)開發(fā)利用在指令區(qū)塊級(jí),或指令序列級(jí)層,或指令流級(jí)層,或指令線程(thread)級(jí)層,平行處理的興趣。該級(jí)的平行處理通常是指線程層平行處理。一個(gè)線程就是程序指令的一個(gè)序列或是流。依據(jù)一些調(diào)度原則,一個(gè)多線程微處理器同時(shí)執(zhí)行許多的線程,該調(diào)度原則支配各式線程的指令的提取和發(fā)配,例如,交錯(cuò),阻擋,或同時(shí)的多線程化。以一個(gè)同時(shí)進(jìn)行的方式,一個(gè)多線程微處理器典型地允許許多線程來共享微處理器的功能單元(例如,指令提取和解碼單元,高速緩存,分支預(yù)測(cè)單元,和加載與儲(chǔ)存,整數(shù),浮點(diǎn),SIMD等執(zhí)行單元)。然而,多線程微處理器包含多組的硬件/固件資源,或是線程上下文(thread context),用于儲(chǔ)存每一個(gè)線程獨(dú)特的狀態(tài),以實(shí)現(xiàn)線程間快速切換的能力,以提取和配發(fā)指令。例如每一個(gè)線程上下文包含它自己的程序計(jì)數(shù)器用于指令提取和線程識(shí)別信息,而且典型地也包含它自己的通用寄存器組。
一個(gè)由多線程微處理器所引發(fā)的性能限制問題的例子是由于貯存錯(cuò)失而必須對(duì)微處理器外的存儲(chǔ)器進(jìn)行存取,通常會(huì)有一個(gè)相對(duì)長(zhǎng)的等待時(shí)間的事實(shí)。以現(xiàn)今基于微處理器架構(gòu)的計(jì)算機(jī)系統(tǒng)的存儲(chǔ)器的存取時(shí)間通常是在大于高速緩存命中存取時(shí)間的1至2個(gè)數(shù)量級(jí)之間。結(jié)果當(dāng)流水線停頓等待來自存儲(chǔ)器的數(shù)據(jù),某些或是全部的單一線程微處理器的流水線階段可能會(huì)閑置許多時(shí)鐘周期而沒有執(zhí)行任何有用的工作。多線程微處理器,在存儲(chǔ)器提取等待時(shí)間期間,通過發(fā)出從其它線程來的指令,可以緩和這個(gè)情形,因此可以使流水線階段向前邁進(jìn)執(zhí)行有用的工作,有些類似一個(gè)操作系統(tǒng)為響應(yīng)頁(yè)面錯(cuò)誤所執(zhí)行的任務(wù)工作切換但以更精確的粒度水平。另一個(gè)性能限制問題的例子是流水線停頓和他們伴隨的時(shí)鐘閑置,由于錯(cuò)誤的分支預(yù)測(cè)和伴隨的流水線沖洗(pipelineflush),或是由于數(shù)據(jù)相依性,或是由于一個(gè)長(zhǎng)等待時(shí)間指令,例如一個(gè)除法指令。再者,多線程微處理器從其它線程發(fā)配指令至空閑的流水線階段的能力,將可以大幅地降低執(zhí)行組成該些線程的程序或是程序群所需要的時(shí)間。另一個(gè)問題,特別是在嵌入式系統(tǒng),是與中斷服務(wù)相關(guān)聯(lián)的浪費(fèi)的開銷。典型地,當(dāng)一個(gè)輸入/輸出裝置傳送一個(gè)中斷信號(hào)給微處理器,該微處理器將控制權(quán)切換至一個(gè)中斷服務(wù)程序,該程序要求儲(chǔ)存目前的程序狀態(tài),服務(wù)該中斷,當(dāng)中斷被服務(wù)完成后回復(fù)目前的程序狀態(tài)。一個(gè)多線程微處理器提供事件服務(wù)碼成為他自己的線程的能力,該線程有他自己線程的上下文。因此,在響應(yīng)輸入/輸出裝置送出一個(gè)事件的信號(hào),該微處理器能夠很快的,或許在一個(gè)時(shí)鐘周期內(nèi),切換至事件服務(wù)線程,因此避免發(fā)生傳統(tǒng)的中斷服務(wù)程序管開銷。
正如指令級(jí)平行處理的程度指示一個(gè)微處理器可以利用流水線和超純量指令發(fā)出的好處的范圍,線程級(jí)平行處理的程度指示一個(gè)微處理器可以利用多線程執(zhí)行好處的范圍。線程的一個(gè)重要特色是它和其它在多線程微處理器上被執(zhí)行的線程是完全獨(dú)立無關(guān)的。一個(gè)線程與其它的線程的無關(guān)性達(dá)到它的指令不依賴在其它線程上的指令的程度。線程獨(dú)立的特性使得微處理器可以同時(shí)執(zhí)行不同線程的指令。也就是,微處理器可以發(fā)出一個(gè)線程的指令至執(zhí)行單元,不必關(guān)心被其它線程所發(fā)出的指令。在線程存取共同數(shù)據(jù)的條件下,線程本身必須被程序化以相互同步數(shù)據(jù)存取,以確保適當(dāng)?shù)倪\(yùn)算,如此,微處理器指令發(fā)出階段不需要與相依性有關(guān)。
由前述觀察可得,一個(gè)具有多線程上下文的處理器,同時(shí)執(zhí)行許多線程,可以減少執(zhí)行包括這些線程的程序或是程序群所需要的時(shí)間。然而,引進(jìn)多線程上下文同時(shí)也引進(jìn)一組新的問題,特別是對(duì)于系統(tǒng)軟件,以管理多指令流和他們相關(guān)的線程上下文。本發(fā)明人已經(jīng)指出在一個(gè)微處理器中提高與指令執(zhí)行相關(guān)的平行處理所要求的另一級(jí)。在此和相關(guān)的應(yīng)用,本發(fā)明人解決了在同一個(gè)微處理器中提供虛擬處理元件。應(yīng)用至這一級(jí),一個(gè)多線程虛擬處理元件,除了實(shí)施許多程序計(jì)數(shù)器和線程上下文以確保有效的切換程序線程之外,實(shí)現(xiàn)所需要的全部資源以提供一給定指令集和特許的資源架構(gòu)的一單個(gè)例示,該架構(gòu)是足以執(zhí)行一個(gè)每處理器(per-processor)操作系統(tǒng)圖像。實(shí)際上,一個(gè)實(shí)現(xiàn)N個(gè)虛擬處理元件的微處理器(也就是,一個(gè)虛擬微處理器有N個(gè)虛擬處理元件)呈現(xiàn)給操作系統(tǒng)軟件的是一個(gè)N路(N-way)的對(duì)稱多處理器。依據(jù)本發(fā)明的虛擬多處理器和一個(gè)傳統(tǒng)對(duì)稱多處理器之間的實(shí)際差別是,除了共享存儲(chǔ)器和某種程度的連接性之外,在一個(gè)虛擬多處理器中的虛擬處理元件,也共享虛擬微處理器的單片資源或?qū)傩裕缰噶钐崛『桶l(fā)出邏輯,地址轉(zhuǎn)換邏輯(也就是,轉(zhuǎn)換后備緩沖器邏輯),功能單元,例如整數(shù)單元,符點(diǎn)單元,多媒體單元,媒體加速單元,SIMD單元,和協(xié)處理器。此外,虛擬處理元件必須共享虛擬多處理器的性能屬性或是利用方面(也就是帶寬),這些是根據(jù)配置給每一個(gè)虛擬處理元件的線程數(shù)目所決定,當(dāng)執(zhí)行被需要的情形下,與一個(gè)虛擬處理元件相關(guān)聯(lián)的線程可以比與其它虛擬處理元件相關(guān)聯(lián)的線程有更高的優(yōu)先權(quán)的程度,和給該虛擬處理元件的某些全處理器的資源(例如,加載和儲(chǔ)存緩沖器)的配置。例如,考量一個(gè)其中兩種不同處理同時(shí)發(fā)生的嵌入式系統(tǒng)影音數(shù)據(jù)的實(shí)時(shí)壓縮和使用者圖形界面的運(yùn)作。使用20世紀(jì)晚期的技術(shù),這些任務(wù)可以通過使用兩個(gè)不同的處理器來完成一個(gè)實(shí)時(shí)的數(shù)字信號(hào)處理器用來處理多媒體數(shù)據(jù)和一個(gè)交互式處理器核心來執(zhí)行一個(gè)多任務(wù)操作系統(tǒng)。本發(fā)明允許這兩個(gè)功能在同一個(gè)的虛擬多處理器上執(zhí)行。虛擬多處理器的兩個(gè)虛擬處理元件將會(huì)被采用一個(gè)專用于執(zhí)行多媒體處理任務(wù),而另一個(gè)專用于執(zhí)行使用者界面工作。采用兩個(gè)虛擬處理元件解決兩種不同軟件示例性的共同存在或是共同舉例說明的問題,但并不保證像一個(gè)專用于處理器相同的實(shí)時(shí)性能的要求,因?yàn)樵摱嗝襟w虛擬處理元件和使用者界面虛擬處理元件必須共享在虛擬多處理器內(nèi)的某些資源和在一個(gè)虛擬多處理器上執(zhí)行的應(yīng)用程序的性能,如上述所提及,是基于如何將那些資源或?qū)傩园l(fā)出給每一個(gè)虛擬處理元件。
在一個(gè)多處理應(yīng)用呈現(xiàn)一個(gè)廣泛和多樣的資源需求的市場(chǎng),去制造具有針對(duì)一個(gè)特殊多處理應(yīng)用量身訂做的資源的虛擬多處理器將會(huì)是耗費(fèi)很多成本。因此,本發(fā)明人已經(jīng)觀察到,提供一個(gè)能夠被用于橫跨廣泛多處理應(yīng)用的虛擬多處理器,是很期望的。他進(jìn)一步表示,該虛擬多處理器包含通過軟件對(duì)各種虛擬處理元件進(jìn)行資源配置的機(jī)制,是很期望的。這類機(jī)制應(yīng)該允許該虛擬多處理器被配置一個(gè)或多個(gè)虛擬處理元件,其中每一個(gè)虛擬處理元件是被配置以執(zhí)行一個(gè)或多個(gè)線程。此外,在運(yùn)行時(shí)刻,可由被信賴的虛擬處理元件動(dòng)態(tài)配置這些資源和提供一個(gè)撤回配置特權(quán)的機(jī)制是期望的。
發(fā)明內(nèi)容本發(fā)明是針對(duì)解決以上所提及的問題以及提出先前技術(shù)的其它問題,缺點(diǎn),和限制。本發(fā)明提出優(yōu)良的機(jī)制用于動(dòng)態(tài)地配置一個(gè)虛擬多處理器的資源。在一個(gè)實(shí)施例中中,一個(gè)裝置被提供用于配置虛擬多處理器中一個(gè)或多個(gè)虛擬處理元件的資源。該裝置包括一個(gè)虛擬多處理器上下文,一個(gè)或多個(gè)虛擬處理元件上下文,以及配置邏輯。該虛擬多處理器上下文,規(guī)定這些資源,以及控制虛擬多處理器的配置狀態(tài)。該一個(gè)或多個(gè)虛擬處理元件上下文每一個(gè)唯一地對(duì)應(yīng)至一個(gè)或多個(gè)虛擬處理元件。該一個(gè)或多個(gè)虛擬處理元件上下文每一個(gè)具有第一邏輯,用于規(guī)定是否該一個(gè)或多個(gè)虛擬處理元件的一個(gè)被允許配置這些資源;以及第二邏輯,用于規(guī)定被分派至該一個(gè)或多個(gè)虛擬處理元件的所述一個(gè)的資源的子集。該配置邏輯連接至虛擬多處理器上下文,和一個(gè)或多個(gè)虛擬處理元件上下文。該配置邏輯檢測(cè)是否一個(gè)或多個(gè)虛擬處理元件的一個(gè)被允許配置這些資源,更新虛擬多處理器上下文以指出虛擬多處理器進(jìn)入配置狀態(tài),以及通過更新一個(gè)被規(guī)定的虛擬處理元件上下文來配置這些資源。
本發(fā)明的一個(gè)方面提供了一種資源配置機(jī)制,用于指派資源給虛擬多處理器中的虛擬處理元件。該資源配置機(jī)制具有虛擬多處理器寄存器,用于每一個(gè)虛擬處理元件的虛擬處理元件寄存器,和配置邏輯。虛擬多處理器寄存器規(guī)定這些資源,并控制虛擬多處理器的配置狀態(tài)。虛擬處理元件寄存器規(guī)定是否一個(gè)對(duì)應(yīng)的虛擬處理元件被允許指派這些資源,以及規(guī)定被分派至對(duì)應(yīng)的虛擬處理元件的這些資源的一子集。配置邏輯連接至虛擬多處理器寄存器和虛擬處理元件寄存器。配置邏輯檢測(cè)是否對(duì)應(yīng)的虛擬處理元件被允許指派這些資源,更新虛擬多處理器寄存器以指出虛擬多處理器進(jìn)入配置狀態(tài),以及通過更新被選取的虛擬處理元件寄存器的一些來指派這些資源。
本發(fā)明的另一個(gè)方面提供一種和計(jì)算裝置一起使用的計(jì)算機(jī)程序產(chǎn)品。該計(jì)算機(jī)程序產(chǎn)品包括一個(gè)計(jì)算機(jī)可使用的媒體,其包括內(nèi)建在媒體中的計(jì)算機(jī)可讀取程序代碼,被配置以描述一個(gè)用于為虛擬多處理器中的虛擬處理元件配置資源的裝置。該計(jì)算機(jī)可讀取程序代碼具有第一個(gè)程序代碼,第二個(gè)程序代碼,和第三個(gè)程序代碼。第一個(gè)程序代碼描述一個(gè)虛擬多處理器上下文。該虛擬多處理器上下文規(guī)定這些資源,并控制該虛擬多處理器的配置狀態(tài)。第二個(gè)程序代碼描述虛擬處理元件上下文,每一個(gè)該虛擬處理元件上下文單獨(dú)地對(duì)應(yīng)至一個(gè)虛擬處理元件并規(guī)定是否該一個(gè)虛擬處理元件被允許配置這些資源,以及規(guī)定被分派給該一個(gè)虛擬處理元件的資源的子集。第三個(gè)程序代碼描述配置邏輯。該配置邏輯被連接至虛擬多處理器上下文和該虛擬處理元件上下文。該配置邏輯檢測(cè)是否該虛擬處理元件中的一個(gè)被允許配置這些資源,更新該虛擬多處理器上下文以指示該虛擬多處理器進(jìn)入配置狀態(tài),以及通過更新一個(gè)規(guī)定的虛擬處理元件上下文來配置這些資源。
本發(fā)明的另一方面提供了內(nèi)建在一個(gè)傳輸媒體中的計(jì)算機(jī)數(shù)據(jù)信號(hào)。該計(jì)算機(jī)數(shù)據(jù)信號(hào)具有計(jì)算機(jī)可讀取的程序代碼,其被配置以描述一個(gè)用于為虛擬多處理器中的虛擬處理元件配置資源的裝置。該計(jì)算機(jī)可讀取程序代碼包括第一個(gè)程序代碼,第二個(gè)程序代碼,和第三個(gè)程序代碼。第一個(gè)程序代碼描述一個(gè)虛擬多處理器上下文,其中該虛擬多處理器上下文規(guī)定這些資源,并控制該虛擬多處理器的配置狀態(tài)。第二個(gè)程序代碼描述虛擬處理元件上下文,每一個(gè)虛擬處理元件上下文單獨(dú)地對(duì)應(yīng)至一個(gè)虛擬處理元件,并規(guī)定是否該一個(gè)虛擬處理元件被允許配置這些資源,以及規(guī)定被分派給該一個(gè)虛擬處理元件資源的子集。第三個(gè)程序代碼描述配置邏輯,該配置邏輯被連接至虛擬多處理器上下文和該虛擬處理元件上下文。該配置邏輯檢測(cè)是否該一個(gè)虛擬處理元件被允許配置這些資源,更新該虛擬多處理器上下文以指示該虛擬多處理器進(jìn)入配置狀態(tài),以及通過更新一個(gè)規(guī)定的虛擬處理元件上下文來配置這些資源。
本發(fā)明的再另一方面提供了一種用于為虛擬多處理器中的虛擬處理元件配置資源的方法。該方法包括經(jīng)由一個(gè)虛擬多處理器上下文,首先規(guī)定這些資源,并控制虛擬多處理器的配置狀態(tài);經(jīng)由虛擬處理元件上下文,每一個(gè)虛擬處理元件上下文單獨(dú)地對(duì)應(yīng)至虛擬處理元件中的一個(gè),第二規(guī)定是否一個(gè)虛擬處理元件被允許配置這些資源,以及第三規(guī)定被分派給一個(gè)虛擬處理元件的資源的子集;以及經(jīng)由連接至該虛擬多處理器上下文和該虛擬處理元件上下文的配置邏輯,檢測(cè)是否虛擬處理元件的一個(gè)被允許來配置這些資源,以及首先更新虛擬多處理器上下文以指示該虛擬多處理器進(jìn)入配置狀態(tài),以及通過第二更新一個(gè)規(guī)定的虛擬處理元件上下文來配置這些資源。
本發(fā)明的再另一個(gè)方面提供了一種虛擬多處理系統(tǒng)。該虛擬多處理系統(tǒng)包括一個(gè)存儲(chǔ)器和一個(gè)多虛擬處理器。該存儲(chǔ)器儲(chǔ)存和許多程序線程有關(guān)的程序指令。該虛擬多處理器被連接至該存儲(chǔ)器。該虛擬多處理器在該虛擬多處理器中配置的一或多個(gè)虛擬處理元件上執(zhí)行這些程序指令。該虛擬多處理器有一個(gè)虛擬多處理器上下文,其規(guī)定該一個(gè)或多個(gè)虛擬處理元件的配置的資源,并控制該虛擬多處理器的配置狀態(tài)。一個(gè)或多個(gè)虛擬處理元件的每一個(gè)包括一個(gè)虛擬處理元件上下文和一個(gè)配置邏輯。該虛擬處理元件上下文規(guī)定是否該一個(gè)或多個(gè)虛擬處理元件的每一個(gè)被允許配置這些資源,以及規(guī)定被分派給該一個(gè)或多個(gè)虛擬處理元件種被規(guī)定的一個(gè)的資源的子集。該配置邏輯被連接至該虛擬多處理器上下文和該虛擬處理元件上下文。該配置邏輯檢測(cè)是否該一個(gè)或多個(gè)虛擬處理元件的每一個(gè)被允許來配置這些資源,更新該虛擬多處理器上下文以指示該虛擬多處理器進(jìn)入配置狀態(tài),以及通過更新對(duì)應(yīng)于該一或多個(gè)虛擬處理元件中被規(guī)定的一個(gè)的規(guī)定虛擬處理元件上下文來配置這些資源。
本發(fā)明的這些和其它目的,特征和優(yōu)點(diǎn),通過下列的描述和附圖,將會(huì)更容易被了解。
圖1是一個(gè)描述依據(jù)本發(fā)明的一個(gè)多處理環(huán)境的方框圖;圖2是一個(gè)描述依據(jù)本發(fā)明的一個(gè)虛擬多處器流水線的方框圖;圖3是一個(gè)顯示依據(jù)本發(fā)明的一個(gè)動(dòng)態(tài)可配置虛擬多處器的方框圖;圖4是一個(gè)呈現(xiàn)與本發(fā)明的一個(gè)示例性實(shí)施例一致的虛擬多處理上下文寄存器的表格;圖5是一系列標(biāo)描述圖4的每一個(gè)虛擬多處理上下文寄存器的示例性實(shí)施例的方框圖;圖6是一個(gè)描述依據(jù)本發(fā)明的用于虛擬處理器資源的動(dòng)態(tài)配置的方法的流程圖;以及圖7是一個(gè)描述依據(jù)本發(fā)明的用于虛擬處理器資源的動(dòng)態(tài)配置的可撤銷的方法的流程圖。
具體實(shí)施方式以下的描述是呈現(xiàn)給本領(lǐng)域的熟練技術(shù)人員以制造和使用本發(fā)明,如在一個(gè)特別的應(yīng)用和它的要求的上下文之內(nèi)。針對(duì)本最佳實(shí)施例的各式的修改,對(duì)本領(lǐng)域的熟練技術(shù)人員將是顯而易見的,且定義在此的一般原則將可應(yīng)用至其它實(shí)施例。因此,本發(fā)明不意欲被限制在此所描述和所示的特殊實(shí)施例,而是遵從和在此所揭露的原理和新特征一致的最廣的范圍。考慮到上述有關(guān)平行處理和相關(guān)的在當(dāng)前處理器中被采用的多線程和多處理技術(shù)的背景討論,本發(fā)明的討論將會(huì)參照?qǐng)D1至圖7來呈現(xiàn)。
參照?qǐng)D1顯示,示出依據(jù)本發(fā)明的一個(gè)多處理環(huán)境100的一個(gè)方塊圖方框圖。該多處理環(huán)境100,包括連接至一個(gè)系統(tǒng)界面控制器105的一個(gè)虛擬多處理器101。該系統(tǒng)界面控制器105連接至一個(gè)系統(tǒng)存儲(chǔ)器106和一個(gè)或多個(gè)輸入/輸出裝置107。每一個(gè)輸入/輸出裝置107提供一個(gè)中斷要求線108至虛擬多處理器101。該虛擬多處理器101包括一個(gè)或多個(gè)虛擬處理元件102。每一個(gè)虛擬處理元件102有一個(gè)對(duì)應(yīng)的虛擬處理元件上下文104和一個(gè)或多個(gè)對(duì)應(yīng)的線程上下文103。該多處理環(huán)境100,可能但不限于,一個(gè)通用的可程序化的計(jì)算機(jī)系統(tǒng),服務(wù)器計(jì)算機(jī),工作站計(jì)算機(jī),個(gè)人計(jì)算機(jī),筆記型計(jì)算機(jī),個(gè)人數(shù)字助理,或嵌入式系統(tǒng),例如,但不限于,一個(gè)網(wǎng)絡(luò)路由器或交換器,打印機(jī),海量?jī)?chǔ)存控制器,相機(jī),掃瞄儀,汽車控制器等等。
系統(tǒng)存儲(chǔ)器106可以被具體化成存儲(chǔ)器,例如動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器RAM和只讀存儲(chǔ)器ROM,用于儲(chǔ)存在虛擬多處理器101執(zhí)行的程序指令,并用于儲(chǔ)存依據(jù)程序指令待被虛擬多處理器101處理的數(shù)據(jù)。程序指令可包括一個(gè)或多個(gè)由虛擬多處理器101同時(shí)執(zhí)行的程序線程。一個(gè)程序線程或是線程包括一個(gè)程序指令的序列或流和相關(guān)聯(lián)的在虛擬多處理器101中的對(duì)應(yīng)虛擬處理元件102內(nèi)的狀態(tài)變化序列,該狀態(tài)變化序列和指令序列的執(zhí)行有關(guān)。每一個(gè)線程上下文103包括支持相對(duì)應(yīng)程序線程執(zhí)行所需的硬件狀態(tài)。在一個(gè)實(shí)施例中,每一個(gè)線程上下文包括一組通用寄存器,一個(gè)程序計(jì)數(shù)器,和其它寄存器保存執(zhí)行線程的狀態(tài),例如,乘法器狀態(tài)和協(xié)處理器狀態(tài)。每一個(gè)虛擬處理元件102提供資源以支持一個(gè)完整指令集架構(gòu)和特許的資源架構(gòu)的示例,該些架構(gòu)足以執(zhí)行一個(gè)單全處理器操作系統(tǒng)圖像。在一個(gè)實(shí)施例中,每一個(gè)虛擬處理元件102提供資源以支持一個(gè)完整MIPS32/MIPS64指令集架構(gòu)和特許的資源架構(gòu)的示例。每一個(gè)虛擬處理元件上下文104組成一個(gè)支持在一個(gè)相對(duì)應(yīng)虛擬處理元件102中線程執(zhí)行所需的硬件狀態(tài)。在一個(gè)實(shí)施例中,每一個(gè)虛擬處理元件上下文104規(guī)定分配給一個(gè)相對(duì)應(yīng)虛擬處理元件102的資源,例如,地址轉(zhuǎn)換邏輯資源(例如,轉(zhuǎn)換后備緩沖器輸入),功能單元(例如,整數(shù)單元,浮點(diǎn)單元,多媒體單元,媒體加速單元,SIMD單元,協(xié)處理器)和性能屬性。在一個(gè)特別實(shí)施例,該性能屬性包括允許停止和配置分配給其它虛擬處理元件102的資源,線程列舉的數(shù)目,相對(duì)應(yīng)虛擬處理元件102的激活/抑制和虛擬多處理器101的與帶寬相關(guān)的資源(例如,指令執(zhí)行帶寬或優(yōu)先權(quán),加載儲(chǔ)存帶寬等等),這些資源被分配給相對(duì)應(yīng)虛擬處理元件102。本發(fā)明提供多種帶寬配置技術(shù)包括調(diào)度提示,執(zhí)行優(yōu)先權(quán)指派,加載/儲(chǔ)存緩沖器分配等等。
系統(tǒng)界面控制器105和虛擬多處理器101經(jīng)由一個(gè)處理器總線相互連接。在一個(gè)實(shí)施例中,系統(tǒng)界面控制器105包括一個(gè)存儲(chǔ)器控制器以控制系統(tǒng)存儲(chǔ)器106。在一個(gè)實(shí)施例中,系統(tǒng)界面控制器105包括一個(gè)局部總線界面控制器以提供一個(gè)局部總線,例如,一個(gè)PCI總線,連接至輸入/輸出裝置107。
輸入/輸出裝置107可包括,但不限于,使用者輸入裝置,例如,鍵盤,鼠標(biāo),掃瞄儀等等;顯示裝置,例如,監(jiān)視器,打印機(jī)等等。儲(chǔ)存裝置,例如,磁盤驅(qū)動(dòng)器,磁帶機(jī),光驅(qū)等等;系統(tǒng)外圍裝置,例如,直接存儲(chǔ)器存取控制器DMAC,時(shí)鐘,定時(shí)器,輸入/輸出端口等等;網(wǎng)絡(luò)裝置,例如,用于以太網(wǎng)絡(luò),光纖網(wǎng)絡(luò),無限頻帶(infiniband),或其它高速網(wǎng)絡(luò)界面的媒體存取控制器MAC;數(shù)據(jù)轉(zhuǎn)換裝置,例如,模擬—數(shù)字轉(zhuǎn)換器,數(shù)字—模擬轉(zhuǎn)換器等等。輸入/輸出裝置107產(chǎn)生中斷信號(hào)108給虛擬多處理器101以要求服務(wù)。有利地,虛擬多處理器101能夠同時(shí)執(zhí)行許多用以處理在中斷要求線108上表示的事件的程序線程,不需要傳統(tǒng)的與保存微處理器102狀態(tài),轉(zhuǎn)移控制權(quán)給中斷服務(wù)例程,和在完成中斷服務(wù)例程之后回復(fù)狀態(tài)相關(guān)聯(lián)的開銷。
在一個(gè)實(shí)施例中,虛擬多處理器101提供兩種不同,但不互相排斥,的多線程能力。首先,虛擬多處理器包括一個(gè)或多個(gè)虛擬處理元件(VPEs)102以支持一個(gè)對(duì)應(yīng)的一個(gè)或多個(gè)邏輯處理器上下文,經(jīng)由在虛擬多處理器101中的資源共享,每個(gè)邏輯處理器上下文呈現(xiàn)給操作系統(tǒng)的是一個(gè)獨(dú)立的處理元件。對(duì)一個(gè)操作系統(tǒng),一個(gè)有N個(gè)VPEs 102的虛擬多處理器101看起來像一個(gè)N路(N-way)對(duì)稱多處理器(SMP),其允許存在SMP可操作系統(tǒng)來管理一個(gè)或多個(gè)VPEs 102。第二,每一個(gè)VPE 102可以包括一個(gè)或多個(gè)線程上下文103,以同時(shí)執(zhí)行對(duì)應(yīng)的一個(gè)或多個(gè)程序線程。因此,依據(jù)本發(fā)明,虛擬多處理器101提供一個(gè)多線程程序化模型,其中在典型的情況下,程序線程能夠被產(chǎn)生和銷毀而不需要操作系統(tǒng)的干預(yù),且系統(tǒng)服務(wù)線程能夠用最小的中斷等待時(shí)間被調(diào)度以響應(yīng)外部的條件(例如,輸入/輸出服務(wù)事件信號(hào))。
在一個(gè)實(shí)施例中,每一個(gè)線程上下文包括一個(gè)或多個(gè)儲(chǔ)存元件,例如,寄存器或鎖存器,其中具有描述相對(duì)應(yīng)線程的執(zhí)行狀態(tài)的字段(例如,位)。也就是,一個(gè)給定線程上下文103描述各自線程的狀態(tài),其對(duì)該線程是唯一的,而不是和在虛擬處理元件102上同時(shí)執(zhí)行的其他線程共享的狀態(tài)。一個(gè)線程,這里也被稱為程序線程、執(zhí)行的線程、或指令流,是一個(gè)指令序列。每一個(gè)虛擬處理元件102有能力同時(shí)處理許多線程。通過在線程上下文103內(nèi)儲(chǔ)存每一個(gè)線程的狀態(tài),在虛擬多處理器101中的每一個(gè)虛擬處理元件102被配置成能在線程間快速切換,以提取和發(fā)出指令。有利地,本發(fā)明的虛擬多處理器101是被配置成執(zhí)行指令以在不同線程上下文103間搬移線程上下文信息,正如共有待審的美國(guó)專利申請(qǐng)(案卷編號(hào)MIPS.0194-00-US),其標(biāo)題為“多計(jì)算上下文軟件管理的機(jī)制”所詳細(xì)描述的。
在一個(gè)實(shí)施例中,每一個(gè)VPE上下文104包括一群的儲(chǔ)存元件,例如,寄存器或鎖存器,其中具有描述相對(duì)應(yīng)VPE 102的執(zhí)行狀態(tài)的字段(例如,位),提供相對(duì)應(yīng)VPE 102的資源的配置,例如,但不限于,地址轉(zhuǎn)換資源,協(xié)處理資源(例如,浮點(diǎn)處理器,媒體處理器等等),線程容量和列舉,特定VPE 102激活/抑制執(zhí)行的允許,和配置特定VPE 102資源的允許。在一個(gè)實(shí)施例中,一個(gè)VPE 102可以通過更新它的VPE上下文104來配置它自己的資源。另外,一個(gè)VPE 102可以通過更新對(duì)應(yīng)不同VPE 102的VPE上下文104來配置不同VPE 102的資源。因此,一個(gè)有N個(gè)VPE 102的虛擬多處理器101呈現(xiàn)給操作系統(tǒng)或是其它對(duì)稱多處理應(yīng)用是一個(gè)N路對(duì)稱多處理器。在一個(gè)實(shí)施例中,VPE 102共享在虛擬多處理器101中特定的資源,例如,指令高速緩存,指令提取器,指令解碼器,指令發(fā)出器,指令調(diào)度器,執(zhí)行單元和協(xié)處理單元,和對(duì)于操作單元是顯然的數(shù)據(jù)貯存。資源共享的范圍和程度是由VPE上下文104所規(guī)定,且可以通過更新VPE上下文104,在運(yùn)行時(shí)間或其它時(shí)間被動(dòng)態(tài)地配置。對(duì)一個(gè)給定的VPE 102來配置它自己的資源,或規(guī)定給其它VPE102的資源,他自己的VPE上下文104必須規(guī)定該被給定的VPE 102是被允許配置虛擬多處理器101的資源,在下面將會(huì)有更詳細(xì)的描述。因此,假如給定VPE 102的VPE上下文104指出該給定的VPE 102是被允許來配置資源,則該給定的VPE 102可以更新所有的VPE上下文104以提供動(dòng)態(tài)資源配置,包括資源配置許可的修改,其中包括撤銷配置許可的能力。在一個(gè)實(shí)施例中,每一個(gè)VPE 102基本上符合一個(gè)MIPS32或MIPS64指令集架構(gòu)(ISA)和一個(gè)MIPS特許資源架構(gòu)(PRA),且每一個(gè)VPE上下文104包括該MIPS PRA協(xié)處理器0和描述其一示例所需的系統(tǒng)狀態(tài)。在一個(gè)實(shí)施例中,VPE上下文106包括圖5D-5G所描述的,VPECONTROL寄存器504,VPECONF0寄存器505,VPECONF1寄存器506,和VPESCHEDULE寄存器592。在一方面,一個(gè)VPE 102可以被當(dāng)成是一個(gè)異常域(exceptiondomain)。也就是當(dāng)VPE 102的一個(gè)線程上下文103產(chǎn)生一個(gè)異常,在VPE 102上的多線程被暫停(也就是,只有與線程上下文104服務(wù)該異常相關(guān)聯(lián)的指令流的指令被提取和發(fā)出),且每一個(gè)VPE上下文104包括服務(wù)該異常所需的狀態(tài)。一但該異常被服務(wù)之后,異常處理器將會(huì)選擇性地重新啟動(dòng)在VPE 102上的多重線程。
現(xiàn)在請(qǐng)參閱圖2,其是說明依據(jù)本發(fā)明的一個(gè)虛擬多處理器內(nèi)的虛擬多處理器流水線200的方框圖。該流水線200包括許多的流水線階段且另外包括一個(gè)或多個(gè)線程內(nèi)容103。圖2的示例性實(shí)施例顯示四個(gè)線程上下文103。在一個(gè)實(shí)施例,每一個(gè)線程上下文103包括一個(gè)程序計(jì)數(shù)器(PC)222,用于儲(chǔ)存提取在相關(guān)的指令流中的下一個(gè)指令的地址,一個(gè)通用寄存器(GPR)組224,用于儲(chǔ)存依據(jù)程序計(jì)數(shù)器222的值,從線程所發(fā)出的指令流的中間執(zhí)行結(jié)果,和其它每線程(per-thread)上下文226。在一個(gè)實(shí)施例中,流水線222包括一個(gè)乘法器單元(未顯示于圖中),且其它線程上下文226包括用于儲(chǔ)存乘法器單元的結(jié)果的寄存器,這些結(jié)果與指令流中的乘法指令特別有關(guān)。在一個(gè)實(shí)施例中,其它線程上下文226包括用于唯一辨識(shí)每一個(gè)線程上下文103的信息。在一個(gè)實(shí)施例中,該線程辨識(shí)信息包括用于規(guī)定有關(guān)的線程的執(zhí)行特權(quán)級(jí)的信息,例如,是否該線程是一個(gè)核心,監(jiān)督者,或使用者層線程。在一個(gè)實(shí)施例中,該線程辨識(shí)信息包括用于辨識(shí)組成該線程的一個(gè)任務(wù)或過程的信息。特別的是,該任務(wù)識(shí)別信息可以被用作為一個(gè)地址空間標(biāo)識(shí)符(ASID)以將實(shí)際地址轉(zhuǎn)換成虛擬地址。
流水線200包括一個(gè)調(diào)度器216用于被虛擬多處理器100所同時(shí)執(zhí)行的許多線程的調(diào)度。調(diào)度器216連接到VMP上下文210,圖1的VPE上下文104,和其它每線程(per-thread)上下文226。特別的是,調(diào)度器216是負(fù)責(zé)調(diào)度從不同線程上下文104的程序計(jì)數(shù)器222中提取的指令,和調(diào)度將提取指令發(fā)出給虛擬多處理器100的執(zhí)行單元212,如下所描述。依據(jù)虛擬多處理器100的調(diào)度原則,調(diào)度器216對(duì)線程的執(zhí)行進(jìn)行調(diào)度。調(diào)度原則可以包括,但不限于,任何下列的調(diào)度原則。在一個(gè)實(shí)施例中,調(diào)度器216采用一個(gè)循環(huán),或時(shí)分多路復(fù)用,或交叉的調(diào)度原則,配置一個(gè)預(yù)先決定數(shù)目的時(shí)鐘周期,或指令發(fā)出時(shí)段,以一個(gè)環(huán)繞的順序給每一個(gè)就序的線程。循環(huán)原則在一個(gè)其中公平性是重要的和基本服務(wù)品質(zhì)對(duì)于某些線程是需要的應(yīng)用上是有用的,例如,實(shí)時(shí)應(yīng)用程序線程。在一個(gè)實(shí)施例中,調(diào)度器216采用一個(gè)阻擋調(diào)度原則,其中,調(diào)度器216持續(xù)對(duì)正在執(zhí)行線程的提取和發(fā)出進(jìn)行調(diào)度,直到一個(gè)阻擋線程進(jìn)一步進(jìn)展的事件發(fā)生,例如,一個(gè)貯存失誤,一個(gè)分支預(yù)測(cè)錯(cuò)誤,一個(gè)數(shù)據(jù)相依性,或一個(gè)長(zhǎng)等待時(shí)間的指令。在一個(gè)實(shí)施例中,流水線200包括一個(gè)采用許多執(zhí)行單元212的超級(jí)標(biāo)量流水線,且調(diào)度器216調(diào)度每時(shí)鐘周期許多指令的發(fā)出,特別的是,每時(shí)鐘周期來自多個(gè)線程的指令發(fā)出,一般被認(rèn)為是同時(shí)多線程。在其它實(shí)施例,調(diào)度器216采用一個(gè)利用經(jīng)由VPE上下文104提供的調(diào)度信息的調(diào)度原則,其中,調(diào)度信息指出配置給每一個(gè)VPE 102的帶寬和/或帶寬相關(guān)的資源。
流水線200包括一個(gè)指令高速緩存202,用于貯存從一個(gè)系統(tǒng)存儲(chǔ)器提取出的程序指令。在一個(gè)實(shí)施例,流水線200提供虛擬存儲(chǔ)器的能力,且提取單元204包括一個(gè)轉(zhuǎn)換后備緩沖器(未示出)用于貯存實(shí)際到虛擬存儲(chǔ)器頁(yè)面轉(zhuǎn)換。在這個(gè)實(shí)施例,在轉(zhuǎn)換后備緩沖器內(nèi)的資源(例如,入口)被分配給共享流水線200的每一個(gè)VPE 102,正如VPE上下文104所規(guī)定的。在一個(gè)實(shí)施例中,在流水線200內(nèi)所執(zhí)行的每一個(gè)程序或任務(wù),被指派一個(gè)唯一的任務(wù)ID,或地址空間ID(ASID),其被用來執(zhí)行存儲(chǔ)器存取,及具體地執(zhí)行存儲(chǔ)器地址轉(zhuǎn)換,且一個(gè)線程上下文103,也包括儲(chǔ)存與該線程相關(guān)聯(lián)的ASID。
流水線200還包括一個(gè)提取單元204,連接到指令高速緩存202,用于從指令高速緩存202和系統(tǒng)存儲(chǔ)器提取程序指令。提取單元204從多路復(fù)用器244所提供的指令提取地址提取地址。多路復(fù)用器244從對(duì)應(yīng)的多個(gè)程序計(jì)數(shù)器222,接收多個(gè)指令提取地址。每一個(gè)程序計(jì)數(shù)器222儲(chǔ)存用于不同程序線程的當(dāng)前指令提取地址。圖2的實(shí)施例說明了與四個(gè)不同線程相關(guān)聯(lián)的四個(gè)不同程序計(jì)數(shù)器222。依據(jù)由調(diào)度器216提供的一個(gè)選擇輸入,多路復(fù)用器244從四個(gè)程序計(jì)數(shù)器222中選擇一個(gè)。在一個(gè)實(shí)施例中,在微處理器100上執(zhí)行的不同線程共享該提取單元204。
流水線200還包括一個(gè)解碼單元206,連接至提取單元204,用于解碼由提取單元204所提取的程序指令。解碼單元206解碼操作碼,操作數(shù),和指令的其它字段。在一個(gè)實(shí)施例中中,在微處理器100上執(zhí)行的不同線程共享一個(gè)解碼單元206。
流水線200也包括執(zhí)行單元212,用于執(zhí)行指令。執(zhí)行單元212可以包括,但不限于,一個(gè)或多個(gè)整數(shù)單元,用于執(zhí)行整數(shù)算術(shù),布爾運(yùn)算,位移運(yùn)算,旋轉(zhuǎn)運(yùn)算等等;用于執(zhí)行浮點(diǎn)運(yùn)算的浮點(diǎn)單元;用于執(zhí)行存儲(chǔ)器存取及特別地對(duì)連接到執(zhí)行單元212的數(shù)據(jù)高速緩存242的存取的加載/儲(chǔ)存單元;多媒體加速單元,用于執(zhí)行多媒體運(yùn)算;和一個(gè)分支解析單元,用于解析分支指令的結(jié)果和目標(biāo)地址。在一個(gè)實(shí)施例中,數(shù)據(jù)高速緩存242包括一個(gè)轉(zhuǎn)換后備緩沖器用于貯存實(shí)際到虛擬存儲(chǔ)器頁(yè)面轉(zhuǎn)換。除了從數(shù)據(jù)高速緩存242所收到的操作數(shù),執(zhí)行單元212也從通用寄存器組224的寄存器接收操作數(shù)。具體地,一個(gè)執(zhí)行單元212接收從線程上下文104的寄存器組224來的操作數(shù),該線程上下文104是分配給該指令所屬的線程。一個(gè)多路復(fù)用器248選擇來自的適當(dāng)寄存器組224的操作數(shù)提供給執(zhí)行單元212。此外,多路復(fù)用器248接收從另一個(gè)線程上下文226和程序計(jì)數(shù)器222來的數(shù)據(jù),以根據(jù)由執(zhí)行單元212所執(zhí)行的指令的線程上下文104來選擇性地提供給執(zhí)行單元212。在一個(gè)實(shí)施例中,不同的執(zhí)行單元212可以同時(shí)執(zhí)行從多個(gè)并存線程來的指令。
流水線200也包括一個(gè)指令發(fā)出單元208,該指令發(fā)出單元208連接到調(diào)度器216,并連接到解碼單元206和執(zhí)行單元212之間,用于依調(diào)度器216的指示發(fā)出指令給執(zhí)行單元212,并響應(yīng)有關(guān)被解碼單元206所解碼的指令的信息。特別的是,假如當(dāng)指令和先前發(fā)出給執(zhí)行單元212的其它指令有數(shù)據(jù)相依性,指令發(fā)出單元208確保這些指令不會(huì)發(fā)出給執(zhí)行單元212。在一個(gè)實(shí)施例中,一個(gè)指令隊(duì)列(未示于圖中)被置于解碼單元206和指令發(fā)出單元208之間,用于緩沖等待發(fā)出給執(zhí)行單元212的指令,用以減少執(zhí)行單元212空乏的可能性。在一個(gè)實(shí)施例中,在流水線200中的許多線程執(zhí)行共享該指令發(fā)出單元208。
流水線200也包括一個(gè)寫回單元214,其連接到執(zhí)行單元212,用于將指令的結(jié)果寫回到通用寄存器組224,程序計(jì)數(shù)器222,和其它線程上下文226。一個(gè)解多路復(fù)用器246接收從寫回單元214來的指令結(jié)果,并將指令結(jié)果儲(chǔ)存到適當(dāng)?shù)募拇嫫鹘M224,程序計(jì)數(shù)器222,和其它跟該指令的線程有關(guān)的線程上下文226。該指令結(jié)果也被提供用于儲(chǔ)存到VPE上下文104和一個(gè)虛擬多處理器(VMP)上下文210。
在一個(gè)實(shí)施例中,VMP上下文210包括一組儲(chǔ)存元件,例如,寄存器或鎖存器,在該儲(chǔ)存元件有一個(gè)或多個(gè)字段(例如,字節(jié))描述虛擬多處理器101的執(zhí)行狀態(tài)。特別的是,VMP上下文210儲(chǔ)存關(guān)于在VPE102中被共享的虛擬多處理器101,全部資源的狀態(tài),如上所描述。具體地,VMP上下文規(guī)定在配置期間可以分配給VPEs 102的資源,也控制虛擬多處理器101是否是在一個(gè)配置這些資源的配置狀態(tài)。在一個(gè)實(shí)施例中,該VMP上下文210包括如下所述的圖5A-5C的一個(gè)MVPCONTROL寄存器501,MVPCON0寄存器502,和MVPCON1寄存器503。
圖2所示流水線200的具體階段202,204,206,208,212,214被提供來清楚地說明本發(fā)明而不會(huì)模糊實(shí)質(zhì)性方面。本領(lǐng)域的熟練技術(shù)人員可以領(lǐng)會(huì)流水線200的階段化可通過增加或減少階段的數(shù)目,或通過分配不同的功能給階段而被修改以增進(jìn)性能,而不會(huì)偏離本發(fā)明的精神和范圍。
參照?qǐng)D3,顯示依據(jù)本發(fā)明的一個(gè)動(dòng)態(tài)可配置虛擬多處理器300的方框圖。該多處理器300包括一個(gè)或多個(gè)VPEs 302-304,列舉為VPE 1302,VPE 2 303,直到VPE N 304。每一個(gè)VPE 302-304有一個(gè)對(duì)應(yīng)的VPE上下文305-307。該些VPEs 302-304和VMP上下文210連接到執(zhí)行邏輯212,如上參照?qǐng)D2所述。該執(zhí)行邏輯212包括VPE配置邏輯310。該VPE配置邏輯310連接到一個(gè)例外信號(hào)311。該方框圖中還示出有一個(gè)或多個(gè)資源322,324,326,328,它們分別被列舉為RESOURCE1 322,RESOURCE2 324,RESOURCE3 326,直到RESOURCEM 328。
在操作上,資源322-328的配置是通過執(zhí)行一個(gè)由被允許配置這些資源322-328的VPEs 302-304,所發(fā)出的配置指令序列而被實(shí)現(xiàn)的。在一個(gè)實(shí)施例中,配置資源322-328的允許權(quán)是由對(duì)應(yīng)VPEs 302-304的VPE上下文305-307所規(guī)定。當(dāng)一個(gè)配置指令序列是由流水線200中的執(zhí)行邏輯212所接收,該VPE配置邏輯310存取對(duì)應(yīng)于VPEs 302-304的VPE上下文305-307,VPEs 302-304的程序線程導(dǎo)致配置指令序列被提取以決定VPEs 302-304是否被允許配置這些資源322-328。如果不是,則配置邏輯310導(dǎo)致例外(exception)信號(hào)311被斷言,且配置指令序列不被執(zhí)行。如果VPEs 302-304被允許配置這些資源322-328,則VPE配置邏輯310執(zhí)行配置指令序列以指引虛擬多處理器300進(jìn)入配置狀態(tài),且更新一個(gè)或多個(gè)規(guī)定的VPE上下文305-307,因此,重新配置這些資源。在一個(gè)實(shí)施例中,配置指令序列通過更新VMP上下文210來指引虛擬多處理器300進(jìn)入配置狀態(tài)。在一個(gè)實(shí)施例中,配置指令的序列包括遵循MIPS32/MIPS64多線程(MT)應(yīng)用特殊延伸(ASE)架構(gòu)的指令。
該方框圖示出一個(gè)由配置指令序列的執(zhí)行導(dǎo)致的配置的資源322-328的具體實(shí)施例,且圖表地描繪根據(jù)本發(fā)明,具體資源322-328如何能夠被動(dòng)態(tài)地配置,以最佳化在一個(gè)給定的多線程多處理應(yīng)用中,同時(shí)執(zhí)行線程的性能。例如,考慮到RESOURCE1 322圖標(biāo)分支對(duì)應(yīng)于地址轉(zhuǎn)換資源(例如,轉(zhuǎn)換后備緩沖器輸入)。從分支所示,VPE1 302是被規(guī)定為地址轉(zhuǎn)換資源的一部份,且小于分配給剩余的VPEs 303-304的部分?;蛟S,在VPE1 302執(zhí)行的線程相對(duì)于其它線程是短的和反復(fù)的,因此,不需要擴(kuò)大的地址轉(zhuǎn)換資源。也考慮RESOURCE2 324代表對(duì)應(yīng)到多線程協(xié)處理器的上下文(例如,浮點(diǎn)元件,媒體元件,SIMD元件等等)。VPE2 303,如在其VPE上下文306中所指定,相較于其它VPEs 302,307,是被配置較少的上下文數(shù)目,或許是由于由VPE2303所發(fā)出指令線程所指引的運(yùn)算,不需要大量的共處理資源。此外,考慮到RESOURCE3 326代表資源配置許可。如圖表所呈現(xiàn),只有VPE2 303被允許配置虛擬多處理器300中的資源302-304。也就是指明,已經(jīng)獲得配置許可的一個(gè)給定的VPE302-304(在這個(gè)例子為VPE2 303)可以授予配置許可給其它的VPEs 302-304,或取消它們的配置許可,或取消它自己的配置許可。這是通過如這里所描述的更新規(guī)定的VPE上下文305-307來實(shí)現(xiàn)的??紤]到RESOURCE M 328是一個(gè)帶寬資源,其根據(jù)如上所述的一被實(shí)現(xiàn)的調(diào)度原則,配置虛擬多處理器300的帶寬給他的VPEs 302-304。因此,圖表呈現(xiàn)每一個(gè)示例性的VPEs 302-304被給予相同部份的多處理器帶寬,或者經(jīng)由直接執(zhí)行帶寬配置,或通過設(shè)定幾近相同的執(zhí)行優(yōu)先權(quán),或通過其它用于規(guī)定帶寬或與帶寬相關(guān)的資源的技術(shù)。一個(gè)由本發(fā)明所嘗試的規(guī)定與帶寬相關(guān)的資源這樣的技術(shù),是加載/儲(chǔ)存給VPEs 302-304的帶寬的分配。例如,在VPEs 302-304間共享的在虛擬多處理器300中的存儲(chǔ)器運(yùn)算緩沖器的數(shù)目(未示出)小于執(zhí)行線程的數(shù)目,則在執(zhí)行一個(gè)與給定VPE302-304的線程有關(guān)的存儲(chǔ)器運(yùn)算之前,該虛擬多處理器300將會(huì)評(píng)估,是否要將給定的線程斷開,因?yàn)?,這樣的運(yùn)算可能會(huì)超過被規(guī)定用于給定的VPE302-304的與帶寬相關(guān)的資源分配。這樣一個(gè)帶寬分配方案有利地解決了與VPEs 302-304有關(guān)的小數(shù)量的線程,例如,產(chǎn)生一長(zhǎng)串的貯存失誤可能獨(dú)占與帶寬相關(guān)的資源(在該示例中未存儲(chǔ)器運(yùn)算緩沖器)的情況,因此,防止來自其它VPEs 302-304的線程的執(zhí)行。通過規(guī)定與帶寬相關(guān)的資源的份額,依據(jù)本發(fā)明,這樣的情況已經(jīng)被排除在虛擬多處理器300外。
請(qǐng)參照?qǐng)D4,給出一表格400,其描繪的根據(jù)本發(fā)明的一示例性實(shí)施例的虛擬多處理上下文寄存器。該虛擬多處理上下文寄存器被采用以配置一個(gè)虛擬多處理器上下文210,或是一個(gè)虛擬處理元件上下文104,如上所述。該虛擬多處理上下文包括寄存器MVPCONTROL,MVPCONF0,和MVPCONF1。用于一個(gè)虛擬多處理器內(nèi)的每一個(gè)VPE的虛擬處理元件上下文包括寄存器VPECONTROL,VPECONF0,VPECONF1,和VPESCHEDULE。表格400顯示寄存器和到MIPS32/MIPS64指令集和特許資源架構(gòu)的多線程應(yīng)用特殊延伸一致,其中,規(guī)定一個(gè)CPO寄存器的數(shù)目和寄存器選擇數(shù)目給每一個(gè)所示寄存器以存取其中的上下文。上述寄存器的架構(gòu)和上下文將會(huì)參照?qǐng)D5來討論。
圖5是一系列方框圖,描述圖4的每一個(gè)虛擬多處理器上下文寄存器501-506,592的示例性實(shí)施例。圖5A-5F包括每一個(gè)寄存器的字段和一個(gè)描述不同字段的表格的說明,特別相關(guān)的字段會(huì)在此詳加討論。圖5所說明的每一個(gè)寄存器,可以選擇性的由VPE讀或?qū)?,依VPECONF0寄存器505中MVP字段553的值指出,VPE有動(dòng)態(tài)配置這些資源的許可。在寄存器501-506,592中某些字段是只能由VPE寫入,VPE的MVP字段553指出它有配置許可。否則,某些字段是只讀,如同由配置邏輯310所控制的。
MVPCONTROL寄存器501有一個(gè)STLB字段511,一個(gè)VPC字段512,和一個(gè)EVP字段513。一個(gè)有如上所述配置許可的VPE102可以更新VPC字段512和EVP字段513以將虛擬多處理器101置于一個(gè)配置狀態(tài)用于資源配置。清除VPC字段512和設(shè)定EVP字段513使新資源值被鎖存在配置寄存器501-506,592中且用于虛擬處理以重新開始。一個(gè)有配置許可的VPE102可以更新STLB字段511以共享地址轉(zhuǎn)換資源。
MVPCONF0寄存器502,和MVPCONF1寄存器503是只讀寄存器,這些寄存器由一個(gè)有配置許可的VPE102所讀取,以決定在一個(gè)給定虛擬多處理器101中設(shè)置的可配置這些資源的數(shù)目和范圍。字段TLBS指出,地址轉(zhuǎn)換資源是可共享的,且地址轉(zhuǎn)換資源共享可以通過設(shè)定MVPCONTROL寄存器501的字段STLB511來配置。字段PVPE524規(guī)定由虛擬多處理器101所提供VPEs 102的總數(shù)量。在圖5的實(shí)施例,會(huì)采用多至16個(gè)VPEs 102。字段PTC525指出由虛擬多處理器101所提供線程上下文103的總數(shù)量。在該示出的實(shí)施例中,多至256個(gè)線程上下文103將會(huì)被舉例說明。字段C1M 531指出可分配的協(xié)處理器是可多媒體延伸的。字段C1F 532指出是否可分配的協(xié)處理器是可浮點(diǎn)的。字段533-535指出可用于分配給VPEs 102的其它ISA特定資源的總數(shù)。
資源分配給具體VPE 104是通過將VPE數(shù)寫到VPECONTROL寄存器504的字段TARGVPE 334。一個(gè)寫入字段334的實(shí)施例是經(jīng)由上述的MIPSMTTR和MFTR指令。
在寄存器VPECONF0 505中字段VPA 552的值是被設(shè)定來起動(dòng)/取消一個(gè)規(guī)定的VPE 102。字段MVP 553是設(shè)定為給予或取消資源配置許可。字段MINTC 554和MAXTC 555是被更新以配分配線程上下文103的數(shù)目和例舉給一個(gè)規(guī)定的VPE 102。在本發(fā)明MIPS32/MIPS64多線程應(yīng)用特殊延伸的實(shí)施例中,字段NCX 561,NCP2562,和NCP1 563是被更新以配置協(xié)處理器資源給一個(gè)具體的VPE 102。如上所述,圖5E-5F的表格顯示,該注明的資源分配字段552-555,561-563是只讀的字段。所有VPEs 102沒有資源配置許可,如VPECONF0寄存器505中MVP位553的狀態(tài)所示。對(duì)于一個(gè)被授予資源配置許可的VPE 102,配置邏輯310使注明的字段552-555,561-563能夠被更新(也就是被寫入)。
寄存器VPESCHEDULE 592包括一個(gè)調(diào)度器提示字段529,該字段529能夠被更新以配置跨越在虛擬多處理器101中VPEs 102的帶寬資源。
雖然圖4和圖5描述本發(fā)明的一示例性實(shí)施例,其中,某些資源能夠在一個(gè)MIPS32/MIPS64多線程應(yīng)用特殊延伸環(huán)境中被動(dòng)態(tài)地配置,本發(fā)明人指出該示例性實(shí)施例是依據(jù)一個(gè)已知的指令集架構(gòu)被提供的以教示本發(fā)明的多個(gè)方面。本發(fā)明人還指出,其它的架構(gòu)同樣的也可以被包含。
請(qǐng)參閱圖6,示出一個(gè)說明依據(jù)本發(fā)明的用于虛擬處理器資源的動(dòng)態(tài)配置的方法的流程圖600。本方法由區(qū)塊602開始,其中,依據(jù)本發(fā)明,一個(gè)VPE想要?jiǎng)討B(tài)地配置這些資源。流程前進(jìn)至區(qū)塊604。
在區(qū)塊604,對(duì)應(yīng)至該請(qǐng)求VPE的VPE上下文被讀取。流程前進(jìn)至決定區(qū)塊606。
在決定區(qū)塊606,該VPE上下文被評(píng)估以決定是否該請(qǐng)求VPE被允許在虛擬多處理器中動(dòng)態(tài)地配置這些資源。如果是,流程前進(jìn)至區(qū)塊608。如果不是,流程前進(jìn)至區(qū)塊607。
在區(qū)塊607,因?yàn)樵撜?qǐng)求VPE沒有資源配置許可,一個(gè)例外被宣告且流程前進(jìn)至區(qū)塊620。
在區(qū)塊608,在虛擬多處理器中的虛擬處理被禁止,以允許資源配置。流程前進(jìn)至區(qū)塊610。
在區(qū)塊610,在虛擬多處理器中一個(gè)配置狀態(tài)被建立。流程前進(jìn)至區(qū)塊612。
在區(qū)塊612,在虛擬多處理器中的一個(gè)VMP上下文被存取,以決定什么和多少資源是可用于配置。流程前進(jìn)至區(qū)塊614。
在區(qū)塊614,一個(gè)目標(biāo)VPE被選取用于它分配的資源的配置。流程前進(jìn)至區(qū)塊616。
在區(qū)塊616,通過更新其相對(duì)應(yīng)的VPE上下文,這些資源被配置用于選定的VPE。流程前進(jìn)至區(qū)塊618。
在區(qū)塊618,用于選定的VPE的資源的新配置通過退出配置狀態(tài)而被鎖存,且在虛擬多處理器中的虛擬處理被再次起動(dòng)。流程前進(jìn)至區(qū)塊620。
在區(qū)塊620,該方法完成。
圖7是一個(gè)流程圖700描述依據(jù)本發(fā)明的用于虛擬處理器資源的動(dòng)態(tài)配置的一可撤回的方法。圖7的流程圖700的所有的區(qū)塊702-720等同于圖6的流程圖600的對(duì)應(yīng)的區(qū)塊602-620,其中百位數(shù)是由7所取代,除了一個(gè)額外的區(qū)塊717,其中,被選定的VPE的VPE上下文被更新以撤銷它的動(dòng)態(tài)配置這些資源的許可。區(qū)塊702的請(qǐng)求VPE,可以和區(qū)塊717的被選定的VPE相同,因此,啟動(dòng)一個(gè)VPE來撤銷它自己的配置許可。在區(qū)塊718中鎖存新配置之后,該請(qǐng)求VPE不能再配置這些資源。
雖然本發(fā)明和它的目的,特征,優(yōu)點(diǎn),已經(jīng)被詳細(xì)地描述,其它實(shí)施例被本發(fā)明所包括。例如,除了本發(fā)明使用硬件的實(shí)現(xiàn)方案外,本發(fā)明也可以例如,在一個(gè)計(jì)算機(jī)可使用(例如,可讀取的)的媒體中配置的軟件(例如,計(jì)算機(jī)可讀取碼,程序代碼,指令和/或數(shù)據(jù))來實(shí)現(xiàn)。這樣的軟件激活在這里描述的裝置和方法的功能,制造,模型化,仿真,描述和/或測(cè)試。例如,可以由使用通常的程序語言(例如,C,C++,JAVA等等),GDSII數(shù)據(jù)庫(kù),包括Verilog HDL,VHDL的硬件描述語言(HDL)等等,或其它可用的程序,數(shù)據(jù)庫(kù),和/或電路(也就是,簡(jiǎn)圖)捕捉工具來完成。這樣的軟件能夠被配置在任何已知計(jì)算機(jī)可使用的(例如,可讀取的)媒體,包括半導(dǎo)體存儲(chǔ)器,磁盤,光盤(例如,CD-ROM,DVD-ROM等等)中,且作為在一個(gè)計(jì)算機(jī)可使用的(例如,可讀取的)傳輸媒體(例如,載波或其它媒體包括數(shù)字,光學(xué),或基于模擬的媒體)中的計(jì)算機(jī)數(shù)據(jù)信號(hào)。這樣的軟件可以在包括網(wǎng)際網(wǎng)絡(luò)和內(nèi)部網(wǎng)絡(luò)的通訊網(wǎng)絡(luò)上被傳送。本發(fā)明可以軟件(例如,作為半導(dǎo)體知識(shí)產(chǎn)權(quán)核心的一部分的HDL中,例如一個(gè)微處理器核心,或是一個(gè)系統(tǒng)級(jí)設(shè)計(jì),例如單芯片系統(tǒng)或SOC)來實(shí)現(xiàn)和轉(zhuǎn)換成硬件成為集成電路產(chǎn)品的一部分。本發(fā)明也可以由軟件和硬件的結(jié)合來實(shí)施。
最后,本領(lǐng)域的熟練技術(shù)人員可以理解他們可以使用在此公開的概念和特定實(shí)施例為基礎(chǔ),設(shè)計(jì)或修改其它架構(gòu)以實(shí)現(xiàn)本發(fā)明的相同目的,而不會(huì)背離如后附權(quán)利要求所定義的本發(fā)明的精神和范圍。
權(quán)利要求
1.一種用于為一個(gè)虛擬多處理器中的一個(gè)或多個(gè)虛擬處理元件配置資源的裝置,其包括一個(gè)虛擬多處理器上下文,用于規(guī)定這些資源,且用于控制該虛擬多處理器的一配置狀態(tài);一個(gè)或多個(gè)虛擬處理元件上下文,每一個(gè)專門地對(duì)應(yīng)至該一個(gè)或多個(gè)虛擬處理元件中的一個(gè),所述每一個(gè)虛擬處理元件上下文包含第一邏輯,用于規(guī)定該一個(gè)或多個(gè)虛擬處理元件中的所述一個(gè)是否被允許配置這些資源;以及第二邏輯,用于規(guī)定被分配給該一個(gè)或多個(gè)虛擬處理元件中所述一個(gè)的資源的一子集;以及配置邏輯,連接至所述虛擬多處理器上下文和所述一個(gè)或多個(gè)虛擬處理元件上下文,用于檢測(cè)所述一個(gè)或多個(gè)虛擬處理元件中的所述一個(gè)是否被允許配置這些資源,用于更新所述虛擬多處理器上下文以指示該虛擬多處理器進(jìn)入所述配置狀態(tài),以及用于通過更新一規(guī)定的虛擬處理元件上下文來配置這些資源。
2.根據(jù)權(quán)利要求1所述的裝置,其中該一個(gè)或多個(gè)虛擬處理元件在該虛擬多處理器內(nèi)同時(shí)執(zhí)行,以及其中該虛擬多處理器對(duì)一個(gè)對(duì)稱多處理操作系統(tǒng)表現(xiàn)為一個(gè)對(duì)稱多處理器。
3.根據(jù)權(quán)利要求1所述的裝置,其中該一個(gè)或多個(gè)虛擬處理元件的每一個(gè)包括一個(gè)或多個(gè)線程上下文,這些線程上下文被配置以同時(shí)執(zhí)行一個(gè)或多個(gè)線程。
4.根據(jù)權(quán)利要求3所述的裝置,其中該一個(gè)或多個(gè)線程上下文的所述每一個(gè)共享配置的資源,其中所述配置的資源已經(jīng)從這些資源被分配給該一個(gè)或多個(gè)虛擬處理元件中的對(duì)應(yīng)的一個(gè)。
5.根據(jù)權(quán)利要求1所述的裝置,其中這些資源包括該虛擬多處理器的一或多種屬性,以及其中用于一個(gè)特定虛擬處理元件的資源的配置確定所述特定虛擬處理元件相對(duì)于該虛擬多處理器中該一個(gè)或多個(gè)虛擬處理元件中所有其他虛擬處理元件執(zhí)行的方式。
5.根據(jù)權(quán)利要求1所述的裝置,其中這些資源包括轉(zhuǎn)換先行緩沖器屬性。
6.根據(jù)權(quán)利要求1所述的裝置,其中這些資源包括共處理屬性。
7.根據(jù)權(quán)利要求1所述的裝置,其中這些資源包括浮點(diǎn)處理屬性。
8.根據(jù)權(quán)利要求1所述的裝置,其中這些資源包括媒體加速屬性。
9.根據(jù)權(quán)利要求1所述的裝置,其中這些資源包括配置這些資源的許可。
10.根據(jù)權(quán)利要求1所述的裝置,其中這些資源包括線程上下文。
11.根據(jù)權(quán)利要求1所述的裝置,其中這些資源包括該虛擬多處理器的帶寬。
12.根據(jù)權(quán)利要求1所述的裝置,其中這些資源包括虛擬處理元件啟動(dòng)。
13.根據(jù)權(quán)利要求1所述的裝置,其中該一個(gè)或多個(gè)虛擬處理元件的每一個(gè)包括MIPS32/MIPS64指令的一例示和特許資源架構(gòu)。
14.根據(jù)權(quán)利要求1所述的裝置,其中所述規(guī)定的虛擬處理元件上下文對(duì)應(yīng)至該一個(gè)或多個(gè)虛擬處理元件中所述一個(gè)。
15.根據(jù)權(quán)利要求14所述的裝置,其中該一個(gè)或多個(gè)虛擬處理元件中所述一個(gè)可以撤銷它自己的配置這些資源的許可。
16.根據(jù)權(quán)利要求1所述的裝置,其中所述規(guī)定的虛擬處理元件上下文對(duì)應(yīng)至該一個(gè)或多個(gè)虛擬處理元件中的不同一個(gè)。
17.根據(jù)權(quán)利要求16所述的裝置,其中該一個(gè)或多個(gè)虛擬處理元件中的所述一個(gè)可以撤銷該一個(gè)或多個(gè)虛擬處理元件中的所述不同一個(gè)的配置資源的許可。
18.根據(jù)權(quán)利要求1所述的裝置,其中所述虛擬多處理上下文包括一個(gè)或多個(gè)寄存器,以及其中所述配置狀態(tài)通過寫一個(gè)值到其中一配置狀態(tài)字段而被控制。
19.根據(jù)權(quán)利要求1所述的裝置,其中所述第一邏輯包括在一個(gè)或多個(gè)虛擬處理器上下文寄存器中的一個(gè)主虛擬處理器字段,以及其中所述主虛擬處理器字段的一個(gè)特定值規(guī)定所述一個(gè)或多個(gè)虛擬處理元件中的所述一個(gè)是否被允許來配置這些資源。
20.根據(jù)權(quán)利要求1所述的裝置,其中所述第二邏輯包括在一個(gè)或多個(gè)虛擬處理器上下文寄存器中的一個(gè)或多個(gè)字段,以及其中所述一個(gè)或多個(gè)字段只能通過被允許配置這些資源的一給定虛擬處理元件而被更新。
21.根據(jù)權(quán)利要求20所述的裝置,其中如果所述給定的虛擬處理元件不被允許配置這些資源,則所述配置邏輯導(dǎo)致一個(gè)異常。
22.根據(jù)權(quán)利要求1所述的裝置,其中一個(gè)或多個(gè)程序指令通過所述一個(gè)或多個(gè)虛擬處理元件中的所述一個(gè)被執(zhí)行,以建立所述配置狀態(tài)和配置這些資源。
23.一種資源配置機(jī)制,用于分配資源給一個(gè)虛擬多處理器中的虛擬處理元件,該資源配置機(jī)制包括多個(gè)虛擬多處理器寄存器,用于規(guī)定這些資源,并用于控制該虛擬多處理器的配置狀態(tài);用于這些虛擬處理元件的每一個(gè)的多個(gè)虛擬處理元件寄存器,用于規(guī)定一個(gè)對(duì)應(yīng)的虛擬處理元件是否被允許分派這些資源,且用于規(guī)定被分配給所述對(duì)應(yīng)的虛擬處理元件的資源的子集;以及配置邏輯,連接至所述虛擬多處理器寄存器和所述虛擬處理元件寄存器,用于檢測(cè)所述對(duì)應(yīng)虛擬處理元件是否被允許來分派這些資源,用于更新所述虛擬多處理器寄存器以指示該虛擬多處理器進(jìn)入所述配置狀態(tài),并用于通過更新所述虛擬處理元件寄存器中選定的寄存器來分派這些資源。
24.根據(jù)權(quán)利要求23所述的機(jī)制,其中這些資源包括轉(zhuǎn)換先行緩沖器屬性。
25.根據(jù)權(quán)利要求23所述的機(jī)制,其中這些資源包括共處理屬性。
26.根據(jù)權(quán)利要求23所述的機(jī)制,其中這些資源包括浮點(diǎn)處理屬性。
27.根據(jù)權(quán)利要求23所述的機(jī)制,其中這些資源包括媒體加速屬性。
28.根據(jù)權(quán)利要求23所述的機(jī)制,其中這些資源包括配置這些資源的許可。
29.根據(jù)權(quán)利要求23所述的機(jī)制,其中這些資源包括線程上下文。
30.根據(jù)權(quán)利要求23所述的機(jī)制,其中這些資源包括該虛擬多處理器的帶寬。
31.根據(jù)權(quán)利要求23所述的機(jī)制,其中這些資源包括虛擬處理元件啟動(dòng)。
32.根據(jù)權(quán)利要求23所述的機(jī)制,其中這些虛擬處理元件中的每一個(gè)包括MIPS32/MIPS64指令的一例示和特許資源架構(gòu)。
33.根據(jù)權(quán)利要求23所述的機(jī)制,其中所述對(duì)應(yīng)虛擬處理元件可以撤銷它自己的分派這些資源的許可。
34.根據(jù)權(quán)利要求23所述的機(jī)制,其中所述對(duì)應(yīng)虛擬處理元件可以撤銷為這些虛擬處理元件中不同一個(gè)配置資源的許可。
35.一種與一計(jì)算裝置一起使用的計(jì)算機(jī)程序產(chǎn)品,該計(jì)算機(jī)程序產(chǎn)品包括一個(gè)計(jì)算機(jī)可使用的媒體,有包括在所述媒體內(nèi)的計(jì)算機(jī)可讀取的程序代碼,被配置以描述用于為虛擬多處理器中的虛擬處理元件配置資源的裝置,所述計(jì)算機(jī)可讀取的程序代碼包括第一程序代碼,被配置以描述一個(gè)虛擬多處理器上下文,該虛擬多處理器上下文規(guī)定所述資源,并用于控制所述虛擬多處理器的一配置狀態(tài);第二程序代碼,被配置以描述虛擬處理元件上下文,每一個(gè)虛擬處理元件上下文專門地對(duì)應(yīng)所述虛擬處理元件中的一個(gè),并規(guī)定所述虛擬處理元件中的所述一個(gè)是否被允許配置所述資源,并規(guī)定被分配給所述虛擬處理元件中所述一個(gè)的所述資源的一子集;以及第三程序代碼,被配置以描述配置邏輯,所述配置邏輯被連接至所述虛擬多處理器上下文和所述虛擬處理元件上下文,用于檢測(cè)所述虛擬處理元件中的所述一個(gè)是否被允許配置所述資源,用于更新所述虛擬多處理器上下文以指示所述虛擬多處理器進(jìn)入所述配置狀態(tài),并用于通過更新一個(gè)規(guī)定的虛擬處理元件上下文來配置所述資源。
36.根據(jù)權(quán)利要求35所述的計(jì)算機(jī)程序產(chǎn)品,其中所述資源包括所述虛擬多處理器的一個(gè)或多個(gè)屬性,且其中用于所述規(guī)定的虛擬處理元件的所述資源的配置確定所述規(guī)定的虛擬處理元件相對(duì)于所述虛擬多處理器中的所述虛擬處理元件中的所有其他元件執(zhí)行的方式。
37.根據(jù)權(quán)利要求35所述的計(jì)算機(jī)程序產(chǎn)品,其中所述資源包括轉(zhuǎn)換先行緩沖器屬性。
38.根據(jù)權(quán)利要求35所述的計(jì)算機(jī)程序產(chǎn)品,其中所述資源包括共處理屬性。
39.根據(jù)權(quán)利要求35所述的計(jì)算機(jī)程序產(chǎn)品,其中所述資源包括浮點(diǎn)處理屬性。
40.根據(jù)權(quán)利要求35所述的計(jì)算機(jī)程序產(chǎn)品,其中所述資源包括媒體加速屬性。
41.根據(jù)權(quán)利要求35所述的計(jì)算機(jī)程序產(chǎn)品,其中所述資源包括配置所述資源的許可。
42.根據(jù)權(quán)利要求35所述的計(jì)算機(jī)程序產(chǎn)品,其中所述資源包括線程上下文。
43.根據(jù)權(quán)利要求35所述的計(jì)算機(jī)程序產(chǎn)品,其中所述資源包括所述虛擬多處理器的帶寬。
44.根據(jù)權(quán)利要求35所述的計(jì)算機(jī)程序產(chǎn)品,其中所述資源包括虛擬處理元件啟動(dòng)。
45.根據(jù)權(quán)利要求35所述的計(jì)算機(jī)程序產(chǎn)品,其中所述虛擬處理元件的每一個(gè)包括MIPS32/MIPS64指令的一例示和特許資源架構(gòu)。
46.包含在傳輸媒體中的計(jì)算機(jī)數(shù)據(jù)信號(hào),其包括計(jì)算機(jī)可讀取的程序代碼,被配置以描述用于為一虛擬多處理器中的虛擬處理元件配置資源的裝置,所述計(jì)算機(jī)可讀取的程序代碼包括第一程序代碼,被配置以描述一個(gè)虛擬多處理器上下文,所述虛擬多處理器上下文規(guī)定所述資源,并用于控制所述虛擬多處理器的一配置狀態(tài);第二程序代碼,被配置以描述虛擬處理元件上下文,每一個(gè)虛擬處理元件上下文專門地對(duì)應(yīng)所述虛擬處理元件中的一個(gè),以及規(guī)定所述虛擬處理元件中的所述一個(gè)是否被允許配置所述資源,并規(guī)定被分配給所述虛擬處理元件中的所述一個(gè)的所述資源的一子集;以及第三程序代碼,被配置以描述配置邏輯,所述配置邏輯被連接至所述虛擬多處理器上下文和所述虛擬處理元件上下文,用于檢測(cè)所述虛擬處理元件中所述一個(gè)是否被允許配置所述資源,用于更新所述虛擬多處理器上下文以指示所述虛擬多處理器進(jìn)入所述配置狀態(tài),并用于通過更新一個(gè)規(guī)定的虛擬處理元件上下文來配置所述資源。
47.根據(jù)權(quán)利要求46所述的計(jì)算機(jī)數(shù)據(jù)信號(hào),其中所述資源包括所述虛擬多處理器的一個(gè)或多個(gè)屬性,且其中用于所述規(guī)定的虛擬處理元件的所述資源的配置確定所述規(guī)定的虛擬處理元件相對(duì)于所述虛擬多處理器中的所述虛擬處理元件中的所有其他元件執(zhí)行的方式。
48.根據(jù)權(quán)利要求46所述的計(jì)算機(jī)數(shù)據(jù)信號(hào),其中所述資源包括轉(zhuǎn)換先行緩沖器屬性。
49.根據(jù)權(quán)利要求46所述的計(jì)算機(jī)數(shù)據(jù)信號(hào),其中所述資源包括共處理屬性。
50.根據(jù)權(quán)利要求46所述的計(jì)算機(jī)數(shù)據(jù)信號(hào),其中所述資源包括浮點(diǎn)處理屬性。
51.根據(jù)權(quán)利要求46所述的計(jì)算機(jī)數(shù)據(jù)信號(hào),其中所述資源包括媒體加速屬性。
52.根據(jù)權(quán)利要求46所述的計(jì)算機(jī)數(shù)據(jù)信號(hào),其中所述資源包括配置所述資源的許可。
53.根據(jù)權(quán)利要求46所述的計(jì)算機(jī)數(shù)據(jù)信號(hào),其中所述資源包括線程上下文。
54.根據(jù)權(quán)利要求46所述的計(jì)算機(jī)數(shù)據(jù)信號(hào),其中所述資源包括所述虛擬多處理器的帶寬。
55.根據(jù)權(quán)利要求46所述的計(jì)算機(jī)數(shù)據(jù)信號(hào),其中所述資源包括虛擬處理元件啟動(dòng)。
56.根據(jù)權(quán)利要求46所述的計(jì)算機(jī)數(shù)據(jù)信號(hào),其中所述虛擬處理元件中的每一個(gè)包括MIPS32/MIPS64指令的一例示和特許資源架構(gòu)。
57.一種用于為一虛擬多處理器中的虛擬處理元件配置資源的方法,該方法包括經(jīng)由一個(gè)虛擬多處理器上下文,首先規(guī)定這些資源,并控制該虛擬多處理器的一配置狀態(tài);經(jīng)由虛擬處理元件上下文,每一個(gè)虛擬處理元件上下文專門地對(duì)應(yīng)至這些虛擬處理元件中的一個(gè),第二規(guī)定這些虛擬處理元件中的一個(gè)是否被允許配置這些資源,以及第三規(guī)定被分派給這些虛擬處理元件中的該一個(gè)的這些資源的一子集;以及經(jīng)由連接接至該虛擬多處理器上下文和該虛擬處理元件上下文的配置邏輯,檢測(cè)這些虛擬處理元件中的該一個(gè)是否被允許來配置這些資源,以及第一更新該虛擬多處理器上下文以指示該虛擬多處理器進(jìn)入所述配置狀態(tài),以及通過第二更新一個(gè)規(guī)定的虛擬處理元件上下文來配置這些資源。
58.根據(jù)權(quán)利要求57所述的方法,其中所述第二更新包括分配該虛擬多處理器的一個(gè)或多個(gè)屬性。
59.根據(jù)權(quán)利要求58所述的方法,其中所述分配包括分派轉(zhuǎn)換先行緩沖器屬性。
60.根據(jù)權(quán)利要求58所述的方法,其中所述分配包括分派共處理屬性。
61.根據(jù)權(quán)利要求58所述的方法,其中所述分配包括分派浮點(diǎn)處理屬性。
62.根據(jù)權(quán)利要求58所述的方法,其中所述分配包括分派媒體加速屬性。
63.根據(jù)權(quán)利要求58所述的方法,其中所述分配包括分派配置這些資源的許可。
64.根據(jù)權(quán)利要求58所述的方法,其中所述分配包括分派線程上下文。
65.根據(jù)權(quán)利要求58所述的方法,其中所述分配包括分派該虛擬多處理器的帶寬。
66.根據(jù)權(quán)利要求58所述的方法,其中所述分配包括啟動(dòng)一個(gè)給定虛擬處理元件。
67.根據(jù)權(quán)利要求57所述的方法,其中這些虛擬處理元件的每一個(gè)包括MIPS32/MIPS64指令的一例示和特許資源架構(gòu)。
68.一種虛擬多處理系統(tǒng),其包括一個(gè)存儲(chǔ)器,被配置以儲(chǔ)存與多個(gè)程序線程有關(guān)的程序指令;以及一個(gè)虛擬多處理器,連接至所述存儲(chǔ)器,被配置以在所述虛擬多處理器中的一個(gè)或多個(gè)虛擬處理元件上執(zhí)行所述程序指令,其中所述虛擬多處理器有一個(gè)規(guī)定所述一個(gè)或多個(gè)虛擬處理元件的配置的資源,以及控制所述虛擬多處理器的一配置狀態(tài)的虛擬多處理器上下文,其中所述一個(gè)或多個(gè)虛擬處理元件包括一個(gè)虛擬處理元件上下文,用于規(guī)定是否所述一個(gè)或多個(gè)虛擬處理元件的所述每一個(gè)被允許配置所述資源,且用于規(guī)定被分配給所述一個(gè)或多個(gè)虛擬處理元件中規(guī)定的一個(gè)的所述資源的一子集;以及配置邏輯,連接至所述虛擬多處理器上下文和所述虛擬處理元件上下文,用于檢測(cè)所述一個(gè)或多個(gè)虛擬處理元件的所述每一個(gè)是否被允許來配置所述資源,用于更新所述虛擬多處理器上下文以指示所述虛擬多處理器進(jìn)入所述配置狀態(tài),以及用于通過更新對(duì)應(yīng)至所述一個(gè)或多個(gè)虛擬處理元件中所述規(guī)定的一個(gè)的一規(guī)定的虛擬處理元件上下文來配置所述資源。
全文摘要
本裝置包括一個(gè)虛擬多處理器上下文,一個(gè)或多個(gè)虛擬處理元件上下文,以及配置邏輯。該虛擬多處理器上下文,規(guī)定這些資源,并控制該虛擬多處理器的配置狀態(tài)。該一個(gè)或多個(gè)虛擬處理元件上下文每一個(gè)專門地對(duì)應(yīng)到該一個(gè)或多個(gè)虛擬處理元件中的一個(gè)。該一個(gè)或多個(gè)虛擬處理元件上下文每一個(gè)包括第一邏輯,用于規(guī)定是否該一個(gè)或多個(gè)虛擬處理元件中的該一個(gè)被允許配置這些資源;以及第二邏輯,用于規(guī)定被分配給該一個(gè)或多個(gè)虛擬處理元件的所述一個(gè)的資源的子集。該配置邏輯連接至該虛擬多處理器上下文,和一個(gè)或多個(gè)虛擬處理元件上下文。該配置邏輯檢測(cè)是否該一個(gè)或多個(gè)虛擬處理元件中的該一個(gè)被允許配置這些資源,更新該虛擬多處理器上下文以指出該虛擬多處理器進(jìn)入配置狀態(tài),以及通過更新一個(gè)被規(guī)定的虛擬處理元件上下文來配置這些資源。
文檔編號(hào)G06F9/46GK1842771SQ200480024801
公開日2006年10月4日 申請(qǐng)日期2004年8月27日 優(yōu)先權(quán)日2003年8月28日
發(fā)明者凱文·基塞爾 申請(qǐng)人:美普思科技有限公司