欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

下一指令類型字段的制作方法

文檔序號(hào):6361785閱讀:148來源:國知局
專利名稱:下一指令類型字段的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及數(shù)據(jù)處理系統(tǒng)的領(lǐng)域。更具體地,本發(fā)明涉及如何在數(shù)據(jù)處理系統(tǒng)中指定將被執(zhí)行的下一指令。
背景技術(shù)
已知提供了用以執(zhí)行供執(zhí)行的程序指令線程中的程序指令序列的數(shù)據(jù)處理系統(tǒng)。在此種系統(tǒng)中,可使用指令預(yù)先獲取(prefetching)電路與分支預(yù)測電路來預(yù)先獲取將被執(zhí)行的指令并在遭遇分支時(shí)預(yù)測執(zhí)行流向,從而使得可以在分支指令被確定之前提供將被執(zhí)行的新指令給處理管線。這些措施有效地使深處理管線被高效支持井利用。然而,就電路面積、電路復(fù)雜度、功率消耗以及花費(fèi)而言,與這些機(jī)制相關(guān)聯(lián)的成本日漸顯著。還已知提供了同時(shí)執(zhí)行多個(gè)程序線程的數(shù)據(jù)處理系統(tǒng)。此種系統(tǒng)的示例為繪圖處理(graphic processing)單元,其中(例如)可并行執(zhí)行ー百個(gè)以上的程序線程,姆ー個(gè)程序線程對應(yīng)于正處理的繪像的不同部分。對于此種系統(tǒng)而言,用于指令預(yù)先獲取與分支預(yù)測的已知機(jī)制表現(xiàn)不佳。在尋求預(yù)先獲取用于大量單獨(dú)線程的指令以及預(yù)測用于這些大量程序線程的分支行為時(shí),與這些機(jī)制相關(guān)聯(lián)的成本是不利的。然而,單純地等待直到正執(zhí)行的程序指令完成然后獲取下一指令,會(huì)帶來顯著的預(yù)先獲取潛時(shí)(latency)。隨著執(zhí)行大量并行線程的系統(tǒng)更廣泛地被普及且被應(yīng)用于除了繪圖處理領(lǐng)域之外的更為一般用途的處理(其中預(yù)先獲取潛時(shí)變得更明顯),這種不利影響也變得更為顯著。

發(fā)明內(nèi)容
本發(fā)明的ー個(gè)方面提供了一種用于響應(yīng)ー個(gè)或多個(gè)程序指令線程而處理數(shù)據(jù)的裝置,該裝置包含:數(shù)據(jù)處理電路,該數(shù)據(jù)處理電路被配置為響應(yīng)于程序指令線程中的當(dāng)前程序指令,而執(zhí)行由當(dāng)前程序指令所指定的當(dāng)前數(shù)據(jù)處理操作,其中當(dāng)前程序指令包含下一指令類型字段,該下一指令類型字段指定該線程中將被執(zhí)行的下一程序指令的類型。本技術(shù)在當(dāng)前程序指令中提供下一指令類型字段。此與本發(fā)明領(lǐng)域中的技術(shù)偏見背道而行(該技術(shù)偏見尋求減少程序指令的尺寸)??紤]此技術(shù)偏見將認(rèn)識(shí)到,在當(dāng)前程序指令中提供下一指令類型字段以及提供下一程序指令自身代表程序中的冗余(redundancy),因?yàn)橄漏`程序指令自身也將指定下一程序指令的類型。然而,本技術(shù)認(rèn)識(shí)至IJ,可利用當(dāng)前程序指令中的下一指令類型字段的額外程序尺寸開銷,來提供很多實(shí)際優(yōu)點(diǎn)。數(shù)據(jù)處理電路可在下一指令類型字段的控制之下,執(zhí)行ー個(gè)或多個(gè)處理操作。這允許當(dāng)前程序指令發(fā)起與下一指令相關(guān)聯(lián)的處理操作(如果不這樣做,與下一程序指令相關(guān)聯(lián)的處理操作將需要等到下一程序指令(例如)被獲取及譯碼時(shí)才被執(zhí)行)。在一些實(shí)施例中,響應(yīng)于下一指令類型字段而被執(zhí)行的部分處理可在從存儲(chǔ)下一程序指令的存儲(chǔ)器獲取下一程序指令的全部之前(甚至在開始獲取下一程序指令之前)進(jìn)行。
本技術(shù)在包含多個(gè)處理管線的系統(tǒng)的領(lǐng)域中具有特定效用。雖然多個(gè)處理管線可完全相同,但是在許多具體實(shí)施例中,將提供多個(gè)不同類型(種類)的處理管線,其中每ー不同類型的處理管線被配置為執(zhí)行不同類型的處理操作。作為示例,多個(gè)處理管線可包含算術(shù)管線、加載/存儲(chǔ)管線、以及變形管線(texturing pipeline,也譯為紋理化管線)中的ー個(gè)或多個(gè)。在包含多個(gè)處理管線的系統(tǒng)的背景中,在下一指令類型字段的控制之下執(zhí)行的下一程序指令的部分處理可包含選擇下ー處理管線,其中下一程序指令被引導(dǎo)至該下ー處理管線以供執(zhí)行。因此,例如,下一指令類型字段可被用來控制調(diào)度(scheduling)電路,其中該調(diào)度電路將下一程序指令調(diào)度到適當(dāng)?shù)南漏`處理管線。作為示例,算木指令可被引導(dǎo)至算木管線,加載/存儲(chǔ)指令可被弓I導(dǎo)至加載/存儲(chǔ)管線,且變形指令可被弓I導(dǎo)至變形管線。在當(dāng)前處理管線執(zhí)行當(dāng)前程序指令期間,下一指令類型字段將下ー程序指令引導(dǎo)至的下一處理管線可為與當(dāng)前處理管線相同的處理管線,或?yàn)榕c當(dāng)前處理管線不同的處理管線。每ー處理管線可具有相關(guān)聯(lián)的隊(duì)列電路,該隊(duì)列電路被提供以存儲(chǔ)將由此管線執(zhí)行的程序指令隊(duì)列。在此種系統(tǒng)中,當(dāng)前處理管線可由下一指令類型字段控制,以觸發(fā)將下一程序指令加入與下一指令類型字段匹配的隊(duì)列。將下ー程序指令加入此種隊(duì)列可響應(yīng)于當(dāng)前程序指令被從當(dāng)前處理管線撤出(retire)而被方便地執(zhí)行,據(jù)此,只要一個(gè)程序指令撤出,用于此線程的另ー程序指令即被加入至將執(zhí)行的指令隊(duì)列。因?yàn)閬碜源罅坎煌木€程的程序指令將同時(shí)在不同管線中的不同管線階段經(jīng)受處理,所以等到線程的當(dāng)前程序指令在此線程的下一程序指令被放入執(zhí)行隊(duì)列之前被撤出,并不會(huì)顯著減少總體數(shù)據(jù)吞吐量(throughput)。因?yàn)閬碜圆煌€程的程序指令已在硬件中被執(zhí)行,所以保持了高層級的硬件利用率與效率??捎上乱恢噶铑愋妥侄慰刂频牟糠痔幚淼牧愆`示例包含:將與下一程序指令相關(guān)聯(lián)的ー個(gè)或多個(gè)狀態(tài)變量路由(routing)到下ー處理管線。以此方式,若線程在管線之間轉(zhuǎn)移,則憑借由當(dāng)前程序指令中的下一指令類型字段所提供的較早的轉(zhuǎn)移指示,與此線程相關(guān)聯(lián)的狀態(tài)變量將更快速地在新管線中變?yōu)榭捎?。可由下一指令類型字段控制的部分處理的其他示例包?預(yù)先譯碼(pre-decoding)下一程序指令、預(yù)先獲取(pre-fetching)下一程序指令、以及分派(dispatching)下一程序指令。當(dāng)前程序指令可具有相關(guān)聯(lián)的當(dāng)前程序計(jì)數(shù)器值。從當(dāng)前程序計(jì)數(shù)器值的最低有效位位置延伸的此當(dāng)前程序計(jì)數(shù)器值的部分可以被用來存儲(chǔ)指示下一指令類型字段的值。在具有相對較大的經(jīng)對準(zhǔn)的程序指令的系統(tǒng)中,程序計(jì)數(shù)器的低次序部分通常未被使用。在此種系統(tǒng)中,程序計(jì)數(shù)器值可由邏輯或(logic OR)操作導(dǎo)出,該邏輯或操作將存儲(chǔ)當(dāng)前程序指令的存儲(chǔ)器中的存儲(chǔ)器地址與對準(zhǔn)存儲(chǔ)器地址的最低有效位端的下一指令類型字段相結(jié)合。將認(rèn)識(shí)到,盡管本技術(shù)可以被用在執(zhí)行單個(gè)程序指令線程的系統(tǒng)中,但是該技術(shù)在多個(gè)線程被執(zhí)行時(shí)尤其有用。在下一指令類型字段被定位于程序指令中的固定的預(yù)定位置中時(shí),本技術(shù)的實(shí)施被簡化。
程序指令線程將不會(huì)無限地執(zhí)行,因此在下一指令類型字段的一個(gè)值為指示線程被以當(dāng)前指令終止的終止類型的具體實(shí)施例中,可方便地支持在線程結(jié)束時(shí)將執(zhí)行的對操作的控制。本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到,當(dāng)前程序指令的一個(gè)類型可為非直接分支操作。對于此種非直接分支指令,指向存儲(chǔ)下一程序指令的存儲(chǔ)器地址的指針是由下一非直接分支指令自身計(jì)算出來的。在下一程序指令的類型已知并且被編碼在非直接分支指令的下一指令類型字段中時(shí),可結(jié)合利用下一指令類型字段計(jì)算出的地址形成用于非直接分支指令的目標(biāo)地址,從而允許基于由非直接分支指令計(jì)算出的作為目標(biāo)地址的指針,再利用基于程序計(jì)數(shù)器值控制該部分處理的機(jī)制。如前所述,下一指令類型字段與下一程序指令一起表示存在于線程的程序指令中的一定程度的冗余信息??赏ㄟ^檢測下一指令類型字段與下一程序指令之間的任何不匹配,來利用此冗余生成指示這些項(xiàng)目中至少ー者中的損壞的異常(exertion)。以此方式,可達(dá)成對于指令的數(shù)據(jù)損壞的一定程度的保護(hù)。在下一指令類型字段的控制之下執(zhí)行的處理通常將在下一程序指令的譯碼發(fā)生之前被執(zhí)行。因此,下一指令類型字段可提供ー種方式來至少部分地解決潛時(shí)(該潛時(shí)與必須等到下一程序指令的完整獲取、發(fā)布與譯碼相關(guān)聯(lián))。將認(rèn)識(shí)到,本技術(shù)一般應(yīng)用于數(shù)據(jù)處理裝置(諸如,通用處理器、數(shù)字信號(hào)處理器等)領(lǐng)域。然而,本技術(shù)特別地適合于其中處理裝置包含繪圖處理單元且ー個(gè)或多個(gè)線程包含多個(gè)繪圖處理線程的系統(tǒng)。這些高度并行的多線程系統(tǒng)非常不適合傳統(tǒng)的指令預(yù)先獲取機(jī)制與分支預(yù)測機(jī)制,并可從使用當(dāng)前程序指令中的下一指令類型字段獲取顯著的利益。本發(fā)明的另一方面提供了一種用于響應(yīng)ー個(gè)或多個(gè)程序指令線程而處理數(shù)據(jù)的裝置,該裝置包含:數(shù)據(jù)處理構(gòu)件,用于執(zhí)行程序指令線程中的當(dāng)前程序指令所指定的當(dāng)前數(shù)據(jù)處理操作,其中當(dāng)前程序指令包含下一指令類型字段,該下一指令類型字段指定該線程中將被執(zhí)行的下一程序指令的類型。本發(fā)明的另一方面提供了 ー種響應(yīng)ー個(gè)或多個(gè)程序指令線程而處理數(shù)據(jù)的方法,該方法包含以下步驟:響應(yīng)于程序指令線程中的當(dāng)前程序指令,執(zhí)行由當(dāng)前程序指令指定的當(dāng)前數(shù)據(jù)處理操作,其中當(dāng)前程序指令包含下一指令類型字段,該下一指令類型字段指定該線程中將被執(zhí)行的下一程序指令的類型。本發(fā)明的另一方面提供了一種計(jì)算機(jī)程序產(chǎn)品,該計(jì)算機(jī)程序產(chǎn)品具有非瞬時(shí)性(non-transitory)的形式,并存儲(chǔ)用于控制數(shù)據(jù)處理裝置響應(yīng)于一個(gè)或多個(gè)程序指令線程而執(zhí)行數(shù)據(jù)處理的計(jì)算機(jī)程序,其中該計(jì)算機(jī)程序包含程序指令線程中的當(dāng)前程序指令,該當(dāng)前程序指令包含下一指令類型字段,該下一指令類型字段指定該線程中將被執(zhí)行的下一程序指令的類型。本發(fā)明的另一方面提供了一種虛擬機(jī),該虛擬機(jī)包含計(jì)算機(jī),該計(jì)算機(jī)執(zhí)行程序以提供如前所述的用以處理數(shù)據(jù)的裝置的虛擬機(jī)實(shí)施方式。將認(rèn)識(shí)到,處理裝置的虛擬化變得更實(shí)際,且因此本技術(shù)的ー種實(shí)施類型為虛擬機(jī)實(shí)施,其中由計(jì)算機(jī)程序控制通用處理器充當(dāng)如前述討論的處理裝置。


現(xiàn)在將僅通過示例結(jié)合附圖描述本發(fā)明的實(shí)施例,其中:圖1示意性地示出了包含繪圖處理單元的處理裝置,該繪圖處理單元利用了當(dāng)前程序指令中的下一指令類型字段;圖2示意性地示出了并行執(zhí)行的多個(gè)程序線程;圖3示意性地示出了當(dāng)前程序指令中的下一指令類型字段;圖4示意性地示出了繪圖處理單元核心;圖5示意性地示出了結(jié)合存儲(chǔ)當(dāng)前程序指令的存儲(chǔ)器地址與下一指令類型字段以產(chǎn)生程序計(jì)數(shù)器值;圖6為示意性地示出處理管線選擇的流程圖;圖7為示意性地示出與不匹配異常生成相關(guān)聯(lián)的處理的流程圖;圖8給出了用以代表不同種類的下一程序指令的不同種類的下一指令類型字段的示例;以及圖9示意性地示出了用于提供本技術(shù)的虛擬機(jī)類型實(shí)施的裝置。
具體實(shí)施例方式圖1示意性地示出了數(shù)據(jù)處理系統(tǒng)2,數(shù)據(jù)處理系統(tǒng)2包含連接至存儲(chǔ)器6的芯片上系統(tǒng)集成電路4。芯片上系統(tǒng)集成電路4包含通用處理器核心8、繪圖處理單元10、芯片上系統(tǒng)高速緩存12、以及存儲(chǔ)器控制器14,其中芯片上系統(tǒng)集成電路4上包括的組件全部經(jīng)由系統(tǒng)總線16鏈結(jié)。存儲(chǔ)器控制器14提供對存儲(chǔ)器6的存取。存儲(chǔ)器6存儲(chǔ)由通用處理器8執(zhí)行的通用程序18、由繪圖處理單元10執(zhí)行的繪圖程序20、以及供通用核心8操縱的通用數(shù)據(jù)22與供繪圖處理單元10操縱的繪圖數(shù)據(jù)24。繪圖處理單元10包含多個(gè)繪圖處理單元核心26,多個(gè)繪圖處理單元核心26中的每ー個(gè)繪圖處理單元核心在每ー核心中以及在核心之間并行執(zhí)行多個(gè)線程的程序指令。這些繪圖處理單元核心26中的每ー個(gè)繪圖處理單元核心可包含多個(gè)處理管線,且這些處理管線中的每ー個(gè)處理管線可在處理管線的指令管線的不同階段中,執(zhí)行來自不同程序線程的程序指令。因此,在任意給定時(shí)間由繪圖處理単元10執(zhí)行的程序線程的總數(shù)可以很高,例如超過ー百。繪圖處理單元核心26中的每ー個(gè)繪圖處理單元核心具有與其自身相關(guān)聯(lián)的第一級高速緩沖存儲(chǔ)器28,以供自身使用。繪圖處理單元核心26還共享第二級高速緩沖存儲(chǔ)器30,其中該第二級高速緩沖存儲(chǔ)器30被提供為繪圖處理單元10的部分。將認(rèn)識(shí)到,為了提升性能,繪圖處理單元10可包含大量進(jìn)ー步的本地高速緩沖存儲(chǔ)器與數(shù)據(jù)儲(chǔ)存裝置。為了清晰起見,圖1省略了這些細(xì)節(jié)。圖2示意性地示出了可由繪圖處理單元10并行執(zhí)行的多個(gè)程序指令線程。在此示例中,有N+1個(gè)程序指令線程并行執(zhí)行。線程0包含X+1個(gè)程序指令。線程0的這些程序指令以循環(huán)方式被執(zhí)行,直到滿足終止條件為止。本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到,通常相同程序的許多實(shí)例可被作為單獨(dú)線程并行執(zhí)行,其中每ー線程對繪像的不同區(qū)域執(zhí)行相同的操縱。在此情況下,不同的程序線程可具有定位于程序線程中的相同數(shù)目的程序指令。也可使用不同的代碼、出于不同的目的執(zhí)行不同的程序線程。這些線程也可并行執(zhí)行。作為示例,可有ー組線程執(zhí)行算木操作(例如,頂點(diǎn)旋轉(zhuǎn))并有ー組線程在像素值上執(zhí)行變形操作。圖3示意性地示出了當(dāng)前程序指令32。當(dāng)前程序指令32在第一字節(jié)中包含四位當(dāng)前指令類型字段34與四位下一指令類型字段36。當(dāng)前指令類型字段34對對應(yīng)于當(dāng)前指令32的指令類型(例如,當(dāng)前指令32為算術(shù)指令、加載/存儲(chǔ)指令、變形指令、分支指令或類似指令)進(jìn)行編碼。下一指令類型字段36對此相同類型的信息進(jìn)行編碼,但是該信息是關(guān)于正執(zhí)行的程序指令線程中的當(dāng)前程序指令32之后的下一程序指令的。下一指令類型字段36増大了當(dāng)前程序指令32的尺寸,但是在下一程序指令被譯碼之前或在下一程序指令被獲取之前提供了執(zhí)行與下一程序指令相關(guān)聯(lián)的部分處理的可能性。這可以減少與下一程序指令的獲取與譯碼相關(guān)聯(lián)的潛吋。圖4示意性地示出了繪圖處理單元核心26。繪圖處理單元核心26包含多個(gè)處理管線,該多個(gè)處理管線包含第一算木與分支管線38、第二算木與分支管線40、加載/存儲(chǔ)與變量管線42、以及變形管線44。這些不同的處理管線38、40、42、44為不同的類型,并執(zhí)行不同類型的處理操作。算木與分支管線38、40分別執(zhí)行算木與分支處理操作。加載/存儲(chǔ)與變量管線42執(zhí)行與對存儲(chǔ)器6的加載與存儲(chǔ)相關(guān)聯(lián)的處理操作、以及與固定或可編程的變量相關(guān)聯(lián)的操作。變形管線44執(zhí)行變形像素處理操作,其中變形像素處理操作利用著色器(shader)程序所使用的存儲(chǔ)在繪圖數(shù)據(jù)24中的變形數(shù)據(jù)來生成正被生成的繪像中的像素值。處理管線38、40、42、44的每ー個(gè)處理管線具有相關(guān)聯(lián)的指令隊(duì)列46、48、50、52,將被處理管線38、40、42、44執(zhí)行的程序指令被放置于指令隊(duì)列46、48、50、52中,指令隊(duì)列46、48、50、52被排入處理管線38、40、42、44中。調(diào)度電路54負(fù)責(zé)將程序指令加入各個(gè)指令隊(duì)列46、48、50、52。因此,調(diào)度電路54選擇程序指令將被放入的適當(dāng)?shù)奶幚砉芫€38、40、42、44。變形指令必須被放入指令隊(duì)列52中,加載/存儲(chǔ)指令和與變量相關(guān)聯(lián)的指令必須被放入指令隊(duì)列50中。算術(shù)指令與分支指令必須被放入指令隊(duì)列46或48之一。在新線程第一次被執(zhí)行時(shí),此線程的第一指令將需要由調(diào)度電路54至少部分地譯碼,以判定此第一指令需被放入指令隊(duì)列46、48、50、52的哪ー者中??蛇x地,可在指向新線程中的第一指令的指針的最低有效位中編碼第一指令的類型,如下文進(jìn)ー步描述。一旦程序線程的第一程序指令已被執(zhí)行并到達(dá)其在適當(dāng)?shù)奶幚砉芫€38、40、42、44中的撤退階段,則可使用與當(dāng)前程序指令相關(guān)聯(lián)的下一指令類型字段36來控制調(diào)度電路54,以將下一程序指令調(diào)度到與當(dāng)前程序指令的下一指令類型字段36匹配(S卩,由下一指令類型字段指定)的指令隊(duì)列46、48、50、52中。如果第一程序指令為算術(shù)指令,且第二程序指令也為算術(shù)指令,則下一指令類型字段36將指示第二程序指令應(yīng)被放入與第一程序指令相同的指令隊(duì)列(這避免了需要將線程狀態(tài)變量(數(shù)據(jù))轉(zhuǎn)移至另ー算術(shù)管線)。然而,由于在此線程中需要執(zhí)行不同類型的程序指令,所以程序線程也可能在處理管線38、40、42、44之間轉(zhuǎn)移。因此,線程的第一部分可為算術(shù)指令,其中一個(gè)或多個(gè)變形指令接續(xù)在該算木指令之后。在程序線程轉(zhuǎn)移時(shí),如由最后的算木指令中的下一指令類型字段36所指示,與線程相關(guān)聯(lián)的線程狀態(tài)變量可從算術(shù)與分支管線38、40中的相關(guān)的ー個(gè)轉(zhuǎn)移至變形管線44。線程狀態(tài)變量可包含程序計(jì)數(shù)器值、線程標(biāo)識(shí)符、與線程相關(guān)聯(lián)的描述符等。線程轉(zhuǎn)移至的處理管線44可能會(huì)需要此線程狀態(tài)。此線程狀態(tài)變量的轉(zhuǎn)移可由先前處理管線38、40上執(zhí)行的最后的程序指令中的下一指令類型字段控制,且因此可在將在新處理管線44上執(zhí)行的第一程序指令實(shí)際被獲取或譯碼之前被發(fā)起。將認(rèn)識(shí)到,基于下一指令類型字段36執(zhí)行調(diào)度電路54的控制。作為使用大型經(jīng)對準(zhǔn)指令的結(jié)果,下一指令類型字段36可通過使用程序計(jì)數(shù)器值的未使用的最低有效位以方便的方式被存儲(chǔ)在指令管線38、40、42、44中,其中程序計(jì)數(shù)器值與處理管線38、40、42、44中的每ー階段的每ー程序指令相關(guān)聯(lián)。由于此示例實(shí)施例中的程序指令長度為128位的倍數(shù),所以程序計(jì)數(shù)器PC [3:0]的最低有效四位將為未使用(程序指令為128位對準(zhǔn)于存儲(chǔ)器6中),且因此程序計(jì)數(shù)器值中的此位空間可被方便地用來存儲(chǔ)下一指令類型字段36,其中該下一指令類型字段36與對應(yīng)于此程序計(jì)數(shù)器值PC的當(dāng)前程序指令相關(guān)聯(lián)。因此,如圖4所示,在當(dāng)前程序指令到達(dá)處理管線38、40、42、44的終端且被從管線撤出時(shí),在此階段可將程序計(jì)數(shù)器值PC [3:0]的最低有效位部分供應(yīng)至調(diào)度電路54,以指示下一程序指令的類型從而指導(dǎo)指令隊(duì)列46、48、50、52接收此下一指令。也可在沿著當(dāng)前程序指令通過處理管線38、40、42、44行進(jìn)的過程中的其他點(diǎn)使用下一指令類型字段36,以控制與下一程序指令相關(guān)聯(lián)的部分處理。以此方式控制的下一程序指令的部分處理可包含下列處理中的一者或多者:預(yù)先譯碼下ー程序指令、預(yù)先獲取下一程序指令、以及分派下一程序指令。對于下一程序指令的部分處理的其他可能性對于本領(lǐng)域技術(shù)人員來說將是顯而易見的,也包含于本技術(shù)中。繪圖處理單元核心26還包含寄存器文件56。寄存器文件56包含由不同處理管線38、40、42、44使用的寄存器,這些寄存器用于數(shù)據(jù)值的管線內(nèi)部(intra-pipeline)操縱以及在不同的處理管線38、40、42、44之間的數(shù)據(jù)值的傳輸。圖5示意性地示出了與當(dāng)前程序指令32相關(guān)聯(lián)的存儲(chǔ)器地址58 (通過將當(dāng)前指令長度加入當(dāng)前指令的存儲(chǔ)器地址,可用其指向下一指令)如何經(jīng)受存儲(chǔ)器地址58的最低有效四位與下一指令類型字段36的邏輯或操作以產(chǎn)生程序計(jì)數(shù)器值60,其中程序計(jì)數(shù)器值60與當(dāng)前程序指令32 —同存儲(chǔ),且伴隨當(dāng)前程序指令32沿著當(dāng)前程序指令32的處理管線38、40、42、44行迸。由于程序指令的長度為128位的倍數(shù),且以128位對準(zhǔn)在存儲(chǔ)器6中,所以存儲(chǔ)器地址58的最低有效四位為未使用,且因此可使用此邏輯或操作填充下一指令類型字段36。在當(dāng)前指令從當(dāng)前指令的處理管線撤退時(shí),此程序計(jì)數(shù)器值可直接地由調(diào)度電路54使用,以將下一指令引導(dǎo)至適當(dāng)?shù)闹噶铌?duì)列46、48、50、54,并發(fā)起從存儲(chǔ)器系統(tǒng)獲取下一指令。圖6為示意性地示出由調(diào)度電路54執(zhí)行的管線選擇的流程圖。在步驟62,程序計(jì)數(shù)器值60的最低有效四位被讀取(可在當(dāng)前程序指令撤退時(shí)由處理階段38、40、42、44之一的終端供應(yīng)程序計(jì)數(shù)器值60)。在步驟64,由PC[3:0]表示的下一指令類型字段被與終止代碼相比較,以判定當(dāng)前程序指令32是否為程序線程中的最后ー個(gè)程序指令。如果當(dāng)前程序指令32為程序線程中的最后ー個(gè)程序指令,則對于此線程的管線的選擇終止(此選擇將由用于新線程的單獨(dú)處理來控制)。如果線程不終止,則步驟66使用PC[3:0]的值來選擇下ー程序指令將被發(fā)布至的管線。在此階段圖6的流程圖繼續(xù)描述關(guān)于在步驟66將下一程序指令放入所選擇的管線而執(zhí)行的處理。在步驟68,此程序指令被譯碼。隨后,步驟70將程序計(jì)數(shù)器増加與經(jīng)譯碼指令的長度相匹配的量。同時(shí),可執(zhí)行圖5中示出的邏輯或操作,以將下一指令類型字段36放入剛生成的經(jīng)增加的程序計(jì)數(shù)器值的最低有效四位位置。因此,程序計(jì)數(shù)器值指向下一程序指令的存儲(chǔ)器地址,而程序計(jì)數(shù)器的最低有效四位指示此下一指令的類型??蓮膩碜詧D3中所示的位位置的指令讀取下一指令類型字段36。對于所有指令來說這些位位置是固定且預(yù)定的,因此容易被識(shí)別。步驟72判定步驟68的指令譯碼器是否為非直接分支指令。非直接分支指令(如果被識(shí)別出)在步驟74繼續(xù)進(jìn)行,以將在步驟70生成的程序計(jì)數(shù)器值替換為由分支指令計(jì)算出的程序計(jì)數(shù)器值,作為用于此分支指令的目標(biāo)地址,且在其最低有效四位中包含下一指令類型字段36。在步驟72或步驟74之后,在指令從相關(guān)的處理管線38、40、42、44中被撤出時(shí)處理進(jìn)行至步驟62。圖7為示意性地示出在所譯碼的指令與來自前一指令的下一指令類型字段之間發(fā)生不匹配時(shí)生成異常的流程圖。步驟76對指令進(jìn)行譯碼。步驟78將從對指令的譯碼得出的指令類型與從線程中的前一指令中讀取的該指令的下一指令類型字段進(jìn)行比較。如果通過這些不同機(jī)制識(shí)別出的類型之間存在不匹配,則處理進(jìn)行至步驟80,在步驟80生成指示發(fā)生了指令類型的不匹配的異常。這對下一指令類型字段36或程序指令32自身的損壞(或?qū)λ鼈儍烧叩膿p壞,如果這兩個(gè)損壞不匹配)提供了一定程度的抗性。如果沒有不匹配,則步驟82執(zhí)行指令。圖8示出了可由下一指令類型字段36表示的不同的指令類型。存在對應(yīng)于將由加載/存儲(chǔ)管線42執(zhí)行的指令的ー種類型。存在將由變形管線44執(zhí)行的至少ー種指令類型。存在對應(yīng)于將由算木與分支管線38、40之一執(zhí)行的不同長度的程序指令的多個(gè)指令類型。還存在對應(yīng)于將由算木與分支管線38、40之一執(zhí)行的非直接分支的指令類型。剰余的可由下一指令類型字段36的四位表示的可能的編碼未使用。將認(rèn)識(shí)到,下一指令類型字段36的不同的四位圖樣可以任意不同的方式分配,以表示不同類理的指令。圖9示出了可使用的虛擬機(jī)實(shí)施方式。盡管早先描述的具體實(shí)施例以操作特定處理硬件(該硬件支持所關(guān)注的技木)的裝置與方法的形式來實(shí)施本發(fā)明,但是也可提供所謂的硬件設(shè)備的虛擬機(jī)實(shí)施方式。這些虛擬機(jī)實(shí)施方式在主處理器530上運(yùn)行,主處理器530運(yùn)行支持虛擬機(jī)程序510的主操作系統(tǒng)520。通常,需要大型的強(qiáng)有力的處理器來提供以合理速度運(yùn)行的虛擬機(jī)實(shí)施方式,但此種做法在某些環(huán)境下可被調(diào)整,諸如在為了兼容性或重復(fù)使用的理由而運(yùn)行專有于另ー處理器的代碼時(shí)。虛擬機(jī)程序510提供到應(yīng)用程序500的應(yīng)用程序接ロ,該應(yīng)用程序接ロ與由真實(shí)硬件提供的應(yīng)用程序接ロ相同,其中真實(shí)硬件為虛擬機(jī)程序510模擬的設(shè)備。因此,程序指令(包含先前描述的對存儲(chǔ)器存取的控制)可使用虛擬機(jī)程序510執(zhí)行應(yīng)用程序500中的程序指令,以模擬程序指令與虛擬機(jī)硬件的交互。
權(quán)利要求
1.一種用于響應(yīng)ー個(gè)或多個(gè)程序指令線程而處理數(shù)據(jù)的裝置,該裝置包含: 數(shù)據(jù)處理電路,該數(shù)據(jù)處理電路被配置為響應(yīng)于程序指令線程中的當(dāng)前程序指令,而執(zhí)行由所述當(dāng)前程序指令所指定的當(dāng)前數(shù)據(jù)處理操作,其中 所述當(dāng)前程序指令包含 下一指令類型字段,該下一指令類型字段指定所述線程中將被執(zhí)行的下一程序指令的類型。
2.如權(quán)利要求1所述的裝置,其中所述數(shù)據(jù)處理電路在所述下一指令類型字段的控制之下執(zhí)行ー個(gè)或多個(gè)處理操作,該ー個(gè)或多個(gè)處理操作形成所述下ー程序指令的部分處理。
3.如權(quán)利要求2所述的裝置,其中在所述下ー程序指令的全部被從存儲(chǔ)所述下ー程序指令的存儲(chǔ)器獲取之前,執(zhí)行所述部分處理。
4.如權(quán)利要求2和3中任一項(xiàng)所述的裝置,其中所述處理電路包含多個(gè)處理管線。
5.如權(quán)利要求4所述的裝置,其中所述多個(gè)處理管線包含多個(gè)不同種類的處理管線,所述不同種類的處理管線中的每ー種處理管線被配置為執(zhí)行不同種類的處理操作。
6.如權(quán)利要求4和5中任一項(xiàng)所述的裝置,其中所述多個(gè)處理管線包含以下管線中的ー個(gè)或多個(gè): 算木管線,該算術(shù)管線被配置為執(zhí)行算木處理操作; 加載/存儲(chǔ)管線,該加載/存儲(chǔ)管線被配置為執(zhí)行加載/存儲(chǔ)處理操作;以及 變形管線,該變形管線被配置為執(zhí)行像素變形處理操作。
7.如權(quán)利要求4至6中任一項(xiàng)所述的裝置,其中所述下ー程序指令的所述部分處理包含從所述多個(gè)處理管線中選擇下ー處理管線,其中所述下ー程序指令被弓丨導(dǎo)至所述下ー處理管線以供執(zhí)行。
8.如權(quán)利要求7所述的裝置,包含調(diào)度電路,該調(diào)度電路被配置為響應(yīng)于所述下一指令類型字段,而調(diào)度所述下ー程序指令供所述下ー處理管線執(zhí)行。
9.如權(quán)利要求8所述的裝置,其中所述下ー處理管線為下列管線之ー: 所述多個(gè)處理管線中與所述當(dāng)前處理管線相同的ー個(gè)處理管線;以及 所述多個(gè)處理管線中與所述當(dāng)前處理管線不同的ー個(gè)處理管線。
10.如權(quán)利要求8和9中任一項(xiàng)所述的裝置,其中所述下ー處理管線包含隊(duì)列電路,該隊(duì)列電路被配置為存儲(chǔ)將由所述下ー處理管線執(zhí)行的程序指令隊(duì)列,所述當(dāng)前處理管線在所述下一指令類型字段的控 制之下,將所述下一程序指令加入所述隊(duì)列。
11.如權(quán)利要求10所述的裝置,其中響應(yīng)于所述當(dāng)前程序指令被從所述當(dāng)前處理管線撤出,所述下ー程序指令被加入所述隊(duì)列。
12.如權(quán)利要求7至11中任一項(xiàng)所述的裝置,其中所述部分處理包含將與所述下ー程序指令相關(guān)聯(lián)的一個(gè)或多個(gè)狀態(tài)變量路由到所述下ー處理管線。
13.如權(quán)利要求2至12中任一項(xiàng)所述的裝置,其中所述部分處理包含下列處理中的一者或多者: 預(yù)先譯碼所述下一程序指令; 預(yù)先獲取所述下ー程序指令;以及 分派所述下ー程序指令。
14.如前述權(quán)利要求中任一項(xiàng)所述的裝置,其中當(dāng)所述處理電路執(zhí)行所述當(dāng)前數(shù)據(jù)處理操作吋,當(dāng)前程序計(jì)數(shù)器值被與所述當(dāng)前程序指令相關(guān)聯(lián)地存儲(chǔ),且從所述當(dāng)前程序計(jì)數(shù)器值的最低有效位位置延伸的一部分存儲(chǔ)指示所述下一指令類型字段的值。
15.如權(quán)利要求14所述的裝置,其中存儲(chǔ)所述當(dāng)前程序指令的存儲(chǔ)器中的存儲(chǔ)器地址被與對準(zhǔn)所述存儲(chǔ)器地址的最低有效位端的所述下一指令類型字段進(jìn)行邏輯或操作,以形成所述當(dāng)前程序計(jì)數(shù)器值。
16.如前述權(quán) 利要求中任一項(xiàng)所述的裝置,其中所述ー個(gè)或多個(gè)線程包含多個(gè)線程。
17.如前述權(quán)利要求中任項(xiàng)所述的裝置,其中所述下一指令類型字段被定位于所述程序指令線程的程序指令中的固定的預(yù)定位置中。
18.如前述權(quán)利要求中任一項(xiàng)所述的裝置,其中所述下一指令類型字段的ー個(gè)值是終止類型,該終止類型指示所述線程被終止。
19.如前述權(quán)利要求中任一項(xiàng)所述的裝置,其中在所述當(dāng)前程序指令為非直接分支指令時(shí),所述下一指令類型字段被用來形成存儲(chǔ)所述下ー程序指令的所述非直接分支的目標(biāo)存儲(chǔ)器地址的部分。
20.如前述權(quán)利要求中任一項(xiàng)所述的裝置,其中所述處理電路響應(yīng)于所述下一指令類型字段與所述下ー程序指令之間的不匹配,而生成指示所述下一指令類型字段與所述下ー程序指令中的至少ー者中的損壞的異常。
21.如權(quán)利要求2至20中任一項(xiàng)所述的裝置,其中在所述部分處理被執(zhí)行之后,所述下一程序指令的完全譯碼發(fā)生。
22.如前述權(quán)利要求中任一項(xiàng)所述的裝置,其中所述處理電路包含繪圖處理單元,且所述ー個(gè)或多個(gè)線程包含多個(gè)并行的繪圖處理線程。
23.一種用于響應(yīng)ー個(gè)或多個(gè)程序指令線程而處理數(shù)據(jù)的裝置,該裝置包含: 數(shù)據(jù)處理構(gòu)件,用于執(zhí)行由程序指令線程中的當(dāng)前程序指令所指定的當(dāng)前數(shù)據(jù)處理操作,其中 所述當(dāng)前程序指令包含下一指令類型字段,該下一指令類型字段指定所述線程中將被執(zhí)行的下一程序指令的類型。
24.一種響應(yīng)一個(gè)或多個(gè)程序指令線程而處理數(shù)據(jù)的方法,該方法包含以下步驟: 響應(yīng)于程序指令線程中的當(dāng)前程序指令,而執(zhí)行由所述當(dāng)前程序指令所指定的當(dāng)前數(shù)據(jù)處理操作,其中 所述當(dāng)前程序指令包含下一指令類型 字段,該下一指令類型字段指定所述線程中將被執(zhí)行的下一程序指令的類型。
25.一種計(jì)算機(jī)程序產(chǎn)品,該計(jì)算機(jī)程序產(chǎn)品具有非瞬時(shí)性形式并存儲(chǔ)用于控制數(shù)據(jù)處理裝置響應(yīng)于一個(gè)或多個(gè)程序指令線程而執(zhí)行數(shù)據(jù)處理的計(jì)算機(jī)程序,其中所述計(jì)算機(jī)程序包含程序指令線程中的當(dāng)前程序指令,所述當(dāng)前程序指令包含下一指令類型字段,該下一指令類型字段指定所述線程中將被執(zhí)行的下一程序指令的類型。
26.如權(quán)利要求25所述的計(jì)算機(jī)程序產(chǎn)品,其中所述線程包含多個(gè)程序指令,且所述線程中的所有程序指令包含下一程序類型字段。
27.一種虛擬機(jī),該虛擬機(jī)包含計(jì)算機(jī),該計(jì)算機(jī)執(zhí)行程序以提供如權(quán)利要求1至24中任一項(xiàng)所述的用于處理數(shù)據(jù)的裝置。
全文摘要
繪圖處理單元核心26包含多個(gè)處理管線38、40、42、44。由處理管線執(zhí)行的程序指令線程中的程序指令包含下一指令類型字段36,下一指令類型字段36指示在所關(guān)注的處理線程中接續(xù)在當(dāng)前程序指令之后的下一程序指令的指令類型。使用此下一指令類型字段來控制在獲取并譯碼下一指令之前,對下一指令將被發(fā)布至哪個(gè)處理管線的選擇。下一指令類型字段可作為與當(dāng)前程序指令32相關(guān)聯(lián)的程序計(jì)數(shù)器值中的最低有效四位而沿著處理管線被傳遞。下一指令類型字段也可用來在獲取或譯碼下一程序指令之前,在線程在處理管線之間轉(zhuǎn)移時(shí)控制線程狀態(tài)變量在處理管線之間的轉(zhuǎn)發(fā)。
文檔編號(hào)G06F9/38GK103119555SQ201180045065
公開日2013年5月22日 申請日期2011年8月24日 優(yōu)先權(quán)日2010年9月24日
發(fā)明者卓恩·尼斯塔德 申請人:Arm有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1
庄河市| 汪清县| 进贤县| 集贤县| 河池市| 衡南县| 若尔盖县| 罗甸县| 曲水县| 长春市| 柳江县| 黔东| 崇信县| 迁安市| 五台县| 邻水| 德格县| 中宁县| 民乐县| 黄山市| 西丰县| 南和县| 吴旗县| 江孜县| 武定县| 连云港市| 左权县| 天全县| 石嘴山市| 冷水江市| 阜平县| 类乌齐县| 阿拉善左旗| 抚顺市| 宝山区| 永新县| 左云县| 津市市| 卓尼县| 淮南市| 克拉玛依市|