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

用于選擇性地禁止猜測(cè)性的條件分支執(zhí)行的方法和設(shè)備的制作方法

文檔序號(hào):6628292閱讀:108來(lái)源:國(guó)知局
專(zhuān)利名稱(chēng):用于選擇性地禁止猜測(cè)性的條件分支執(zhí)行的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及數(shù)據(jù)處理系統(tǒng)。更具體地,本發(fā)明涉及一種用于選擇性地禁止猜測(cè)性的條件分支執(zhí)行的方法、設(shè)備和計(jì)算機(jī)程序產(chǎn)品。
背景技術(shù)
超標(biāo)量處理器能夠并發(fā)執(zhí)行指令。超標(biāo)量處理器能在對(duì)稱(chēng)多處理(SMP)系統(tǒng)、同時(shí)多線程(SMT)系統(tǒng)或其他類(lèi)型的計(jì)算機(jī)系統(tǒng)內(nèi)實(shí)現(xiàn)。對(duì)稱(chēng)多處理(SMP)數(shù)據(jù)處理系統(tǒng)具有是對(duì)稱(chēng)的多個(gè)處理器,各個(gè)處理器具有相同的處理速度和等待時(shí)間。SMP系統(tǒng)具有一個(gè)把工作分成多個(gè)任務(wù)的操作系統(tǒng),通過(guò)每次向每個(gè)處理器調(diào)度工作的一個(gè)軟件線程,這些任務(wù)被均勻地分配到各個(gè)處理器。因而,SMP系統(tǒng)中的處理器每次僅執(zhí)行一個(gè)線程。
同時(shí)多線程(SMT)數(shù)據(jù)處理系統(tǒng)包括多個(gè)處理器,它們每個(gè)每次能并發(fā)地執(zhí)行多于一個(gè)線程。當(dāng)兩個(gè)線程在相同處理器上運(yùn)行時(shí),SMT系統(tǒng)具有使一個(gè)線程比另一個(gè)更有利的能力。
包括SMP系統(tǒng)、SMT系統(tǒng)和其他系統(tǒng)的已知計(jì)算機(jī)系統(tǒng)典型地猜測(cè)性地執(zhí)行條件分支指令,以便改進(jìn)系統(tǒng)內(nèi)的處理效率。處理器中的讀取引擎猜測(cè)分支指令以后,以便為解碼、調(diào)度和執(zhí)行流水線提供連續(xù)指令流,以便保持潛在地可執(zhí)行指令的較大窗口。
指令讀取性能基于多個(gè)因素。分支預(yù)測(cè)準(zhǔn)確性長(zhǎng)期以來(lái)被認(rèn)為是確定讀取性能的重要因素。
現(xiàn)代微處理器程序地使用多種機(jī)制來(lái)改進(jìn)它們的能力,以有效地讀取分支指令以后。預(yù)測(cè)機(jī)制允許處理器在已知分支的結(jié)果之前,讀取分支指令以外。例如,有些機(jī)制允許處理器在計(jì)算出分支的實(shí)際目標(biāo)地址之前,猜測(cè)性地讀取分支以外。這些技術(shù)使用運(yùn)行時(shí)間歷史來(lái)猜測(cè)性地預(yù)測(cè)實(shí)際目標(biāo)地址將是什么。因而,這些技術(shù)通過(guò)預(yù)測(cè)實(shí)際目標(biāo)地址將是什么,猜測(cè)性地預(yù)測(cè)應(yīng)該讀取哪些指令。
“條件分支”指令的執(zhí)行可能會(huì)產(chǎn)生重大流水線延遲懲罰。條件分支指令是響應(yīng)一個(gè)或多個(gè)其他指令的處理的特定結(jié)果,命令采用指定條件分支的指令。條件分支或者被采用或者不被采用。如果條件分支被采用,處理將轉(zhuǎn)到一個(gè)特定目標(biāo)地址,這個(gè)地址不是正在處理的代碼中的下一個(gè)順序地址。然后將處理從這個(gè)非順序目標(biāo)地址開(kāi)始存儲(chǔ)的指令。如果條件分支不被采用,處理將直接落到代碼中的下一個(gè)順序地址。然后處理從這個(gè)下一個(gè)順序地址開(kāi)始存儲(chǔ)的指令。
通過(guò)預(yù)先預(yù)測(cè)條件分支指令是否將被采用或不被采用,能猜測(cè)性地處理?xiàng)l件分支指令。如果預(yù)測(cè)條件分支將被采用,則猜測(cè)性地執(zhí)行從特定非順序目標(biāo)地址開(kāi)始存儲(chǔ)的指令。如果預(yù)測(cè)條件分支將不被采用,則猜測(cè)性地執(zhí)行從下一個(gè)順序地址開(kāi)始存儲(chǔ)的指令。當(dāng)實(shí)際分辨條件分支指令時(shí),則知道是否將采用條件分支指令。如果預(yù)測(cè)正確,則處理在完成猜測(cè)性地執(zhí)行的指令下繼續(xù)。如果預(yù)測(cè)不正確,則必須從處理器清除猜測(cè)性地執(zhí)行的指令,并且重新取回和執(zhí)行正確的指令。清除猜測(cè)性地執(zhí)行的指令不必要地消耗功率和處理資源。
隨著功率消耗正成為基于微處理器的系統(tǒng)設(shè)計(jì)的更關(guān)鍵方面,防止不必要工作的機(jī)制對(duì)于設(shè)計(jì)具有重大價(jià)值。目前微處理器因?yàn)椴徽_地預(yù)測(cè)分支指令而執(zhí)行相當(dāng)大量的不必要工作,其中讀取、解碼和執(zhí)行分支以后的錯(cuò)誤指令,而僅當(dāng)發(fā)現(xiàn)預(yù)測(cè)目標(biāo)地址原來(lái)不是實(shí)際目標(biāo)地址時(shí)才清除這些錯(cuò)誤指令。因而,猜測(cè)性地執(zhí)行的指令處在錯(cuò)誤路線。
在現(xiàn)代微處理器中,典型地早在指令處理的解碼階段預(yù)測(cè)分支指令將被采用或不被采用。如果分支所基于的實(shí)際條件原來(lái)與預(yù)測(cè)值相反,則跟隨該分支的指令需要被清除,并且程序的執(zhí)行需要用分支的正確路線恢復(fù)。
在功率敏感環(huán)境中,當(dāng)預(yù)測(cè)準(zhǔn)確性低時(shí),對(duì)分支的猜測(cè)是性能與功率的較差權(quán)衡,因而使所用的功率的每瓦特的性能降低。當(dāng)處理器在同時(shí)多線程(SMT)模式時(shí),不準(zhǔn)確猜測(cè)消耗功率以及處理器中另一個(gè)線程本來(lái)能利用的周期。
分支預(yù)測(cè)準(zhǔn)確性可以基于許多因素廣泛地變化。如果功率消耗是重要因素,關(guān)斷分支預(yù)測(cè)能顯著地減小功率,但是也可能顯著地降低性能。
因此,需要一種方法、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品,用于對(duì)趨向于非可靠地預(yù)測(cè)的特定類(lèi)型的分支指令,阻止猜測(cè)性的執(zhí)行,以便節(jié)省功率和改進(jìn)處理器性能。

發(fā)明內(nèi)容
公開(kāi)了一種用于選擇性地禁止猜測(cè)性的條件分支執(zhí)行的方法、設(shè)備和計(jì)算機(jī)程序產(chǎn)品。選擇特定類(lèi)型的條件分支指令。在是該特定類(lèi)型的條件分支指令的每個(gè)指令內(nèi)存儲(chǔ)指示。然后處理器從要執(zhí)行的代碼中讀取第一指令。通過(guò)檢查該第一指令的操作碼,作出關(guān)于該第一指令是否包括該指示的確定。響應(yīng)確定該指令包括該指示禁止該第一指令的猜測(cè)性的執(zhí)行,分辨該第一指令將要轉(zhuǎn)移到的實(shí)際位置,以及把該代碼的執(zhí)行轉(zhuǎn)移到該實(shí)際位置。響應(yīng)確定該指令不包括該指示,猜測(cè)性地執(zhí)行該第一指令。
在以下詳細(xì)寫(xiě)出的描述中,本發(fā)明的以上以及另外目的、特征和優(yōu)點(diǎn)將變得顯而易見(jiàn)。


所附權(quán)利要求書(shū)闡述了被認(rèn)為是本發(fā)明之特征的新穎特征。然而,通過(guò)連同附圖一起閱讀說(shuō)明性的實(shí)施方式的下述詳細(xì)描述,將更好地理解該發(fā)明本身、其優(yōu)選使用方式、其它目的及其優(yōu)點(diǎn),其中
圖1是根據(jù)本發(fā)明的能用于實(shí)現(xiàn)本發(fā)明的超標(biāo)量處理器的方塊圖;圖2是根據(jù)本發(fā)明的包括如圖1所示那樣的處理器的計(jì)算機(jī)系統(tǒng)的說(shuō)明;圖3舉例說(shuō)明了一個(gè)高級(jí)流程圖,它示出了根據(jù)本發(fā)明選擇用于選擇性的非猜測(cè)性的執(zhí)行的條件分支指令的類(lèi)型,并且改變用于這些選擇類(lèi)型的條件分支指令的操作碼;圖4示出了一個(gè)高級(jí)流程圖,它舉例說(shuō)明了根據(jù)現(xiàn)有技術(shù)執(zhí)行條件分支指令;和圖5舉例說(shuō)明了一個(gè)高級(jí)流程圖,它示出了根據(jù)本發(fā)明在一個(gè)其中允許猜測(cè)性的執(zhí)行的處理器中,選擇性地禁止選擇類(lèi)型的條件分支指令的猜測(cè)性的執(zhí)行。
具體實(shí)施例方式
通過(guò)參考附圖,能更好地理解本發(fā)明的優(yōu)選實(shí)施方式及其優(yōu)點(diǎn),相同標(biāo)號(hào)用于附圖的相同和對(duì)應(yīng)部分。
本發(fā)明是一種用于選擇性地禁止猜測(cè)性的條件分支執(zhí)行的方法、設(shè)備和計(jì)算機(jī)程序產(chǎn)品。選擇特定類(lèi)型的條件分支指令。通過(guò)使用操作碼中的先前不用位,修改所選擇類(lèi)型的條件分支指令的操作碼。當(dāng)對(duì)特定指令設(shè)置這個(gè)位時(shí),該指令將不會(huì)被猜測(cè)性地執(zhí)行。因而,在代碼中跟隨該特定指令的指令也將不會(huì)被猜測(cè)性地執(zhí)行。當(dāng)清除這個(gè)位時(shí),該指令和跟隨這個(gè)指令的指令可以被猜測(cè)性地執(zhí)行。
當(dāng)猜測(cè)性地執(zhí)行條件分支時(shí),預(yù)測(cè)該條件分支是否將被采用或不被采用。然后確定預(yù)測(cè)目標(biāo)地址。位于代碼中從這個(gè)目標(biāo)地址開(kāi)始的指令也將被猜測(cè)性地執(zhí)行。然后分辨該條件分支,以確定該分支將要轉(zhuǎn)移到的實(shí)際位置。如果預(yù)測(cè)正確并且目標(biāo)地址和預(yù)測(cè)地址相同,則允許完成這些指令,它們包括該分支和跟隨該分支的指令,其被猜測(cè)性地執(zhí)行。如果預(yù)測(cè)不正確并且目標(biāo)和預(yù)測(cè)地址不同,則清除從目標(biāo)地址開(kāi)始存儲(chǔ)的猜測(cè)性地執(zhí)行的指令。
實(shí)際位置將是代碼中的下一個(gè)順序地址,或?qū)⑹且粋€(gè)非順序地址,它是一個(gè)不是代碼中的下一個(gè)順序地址的地址。當(dāng)條件分支被采用時(shí),實(shí)際地址是非順序目標(biāo)地址。當(dāng)條件分支不被采用時(shí),實(shí)際地址是下一個(gè)順序地址。
本發(fā)明禁止所選擇類(lèi)型的條件分支指令的猜測(cè)性的執(zhí)行。當(dāng)讀取了一個(gè)條件分支指令時(shí),檢查指定位。如果該位被設(shè)置,該條件分支指令將不被猜測(cè)性地執(zhí)行。如果該位被清除,該條件分支指令可以被猜測(cè)性地執(zhí)行。
本發(fā)明在已經(jīng)確定猜測(cè)性的指令很可能最終被清除的情況下,通過(guò)不執(zhí)行猜測(cè)性的指令,節(jié)省處理器的功率。除節(jié)省功率外,本發(fā)明還給SMT處理器中的其他線程更多的處理周期。因而,在單線程處理器上,當(dāng)該位被設(shè)置時(shí)不做猜測(cè)性的工作,從而節(jié)省功率。在多線程處理器例如SMT處理器上,代替在猜測(cè)性的工作上浪費(fèi)周期從而功率,使處理器中的其他線程得到更多資源使用,以執(zhí)行能產(chǎn)生結(jié)果的工作。
如果本發(fā)明在單線程處理器上實(shí)現(xiàn),該處理器停止處理,直到計(jì)算出實(shí)際分支目標(biāo)為止。如果本發(fā)明在多線程處理器例如SMT處理器上實(shí)現(xiàn),SMT處理器的資源將給予正在處理器上執(zhí)行的其他線程。
為非猜測(cè)性的處理選擇特定類(lèi)型的條件分支指令。這些指令是沒(méi)有準(zhǔn)確地預(yù)測(cè)的指令。任何已知方法可以用于追蹤條件分支指令的預(yù)測(cè)準(zhǔn)確性。例如,可以使用分支歷史表、分支處理試探法或任何其他適當(dāng)?shù)姆椒ā?br> 根據(jù)本發(fā)明,指令能由程序設(shè)計(jì)員選擇,或能在編譯器內(nèi)自動(dòng)地選擇,其可以編程成選擇具有閾值之下的準(zhǔn)確性預(yù)測(cè)率的指令。
超標(biāo)量處理器在處理器流水線中包括多個(gè)階段,如以下這樣。在典型的第一階段,稱(chēng)為指令讀取階段,從存儲(chǔ)器或聯(lián)合存儲(chǔ)器結(jié)構(gòu)讀取指令,每個(gè)階段包括一個(gè)或多個(gè)流水線。然后,在解碼階段,指令被解碼成不同的控制位,它們一般指明(1)用于執(zhí)行由指令所指定的操作的功能單元的類(lèi)型,(2)用于操作的源操作數(shù),和(3)用于操作結(jié)果的目的地。
在調(diào)度階段,解碼的指令按每個(gè)控制位被調(diào)度給具有執(zhí)行階段的單元,或可能調(diào)度給干預(yù)保留站(intervening reservationstation),它最終把指令發(fā)布給一個(gè)相關(guān)聯(lián)的執(zhí)行階段(也稱(chēng)為“執(zhí)行單元”)。
執(zhí)行階段處理如指令所指定的操作。執(zhí)行由指令所指定的操作包括接受一個(gè)或多個(gè)操作數(shù),并且產(chǎn)生一個(gè)或多個(gè)結(jié)果。指令時(shí)常是亂序的。
完成階段處理從并發(fā)執(zhí)行發(fā)生的程序次序問(wèn)題,其中多個(gè)并發(fā)執(zhí)行的指令可以把結(jié)果轉(zhuǎn)儲(chǔ)在單個(gè)寄存器中。它還處理從中斷指令隨后的指令產(chǎn)生的恢復(fù)問(wèn)題,其把結(jié)果轉(zhuǎn)儲(chǔ)在它們的目的寄存器中。這個(gè)階段有時(shí)也稱(chēng)為寫(xiě)回階段,因?yàn)檎窃诖藭r(shí)把指令執(zhí)行的結(jié)果寫(xiě)回到指定位置例如寄存器。
圖1是根據(jù)本發(fā)明的能用來(lái)實(shí)現(xiàn)本發(fā)明的超標(biāo)量處理器的方塊圖。如所示,超標(biāo)量處理器10典型地包括系統(tǒng)總線11,與總線接口單元(“BIU”)12相連接。BIU 12控制處理器10與系統(tǒng)總線11之間信息的傳送。BIU 12與處理器10的指令高速緩沖存儲(chǔ)器14和數(shù)據(jù)高速緩沖存儲(chǔ)器16連接。指令高速緩沖存儲(chǔ)器14向定序器單元18輸出指令。響應(yīng)從指令高速緩沖存儲(chǔ)器14的這樣指令,定序器單元18選擇性地向處理器10的其他執(zhí)行電路輸出指令。
除包括調(diào)度單元46和完成單元48的執(zhí)行單元的定序器單元18外,在該優(yōu)選實(shí)施方式中,處理器10的執(zhí)行電路還包括多個(gè)執(zhí)行單元,即分支單元20、定點(diǎn)單元A(“FXUA”)22、定點(diǎn)單元B(“FXUB”)24、復(fù)定點(diǎn)單元(“CFXU”)26、裝載/存儲(chǔ)單元(“LSU”)28和浮點(diǎn)單元(“FPU”)30。FXUA 22、FXUB 24、CFXU 26和LSU 28從通用體系結(jié)構(gòu)寄存器(“GPR”)32和定點(diǎn)重命名緩沖器34輸入它們的源操作數(shù)信息。而且,F(xiàn)XUA 22和FXUB 24從進(jìn)位(“CA”)寄存器42輸入“進(jìn)位”。同樣,CFXU 26從專(zhuān)用寄存器(“SPR”)40輸入源操作數(shù)信息和向其輸出目的操作數(shù)信息。
FPU 30從浮點(diǎn)體系結(jié)構(gòu)寄存器(“FPR”)36和浮點(diǎn)重命名緩沖器38輸入它的源操作數(shù)信息。FPU 30輸出它的操作的結(jié)果(目的操作數(shù)信息),以存儲(chǔ)在浮點(diǎn)重命名緩沖器38中的選擇的條目。
圖2是根據(jù)本發(fā)明的包括如圖1所示那樣的處理器的計(jì)算機(jī)系統(tǒng)的說(shuō)明。數(shù)據(jù)處理系統(tǒng)200可以是對(duì)稱(chēng)多處理器(SMP)系統(tǒng),包括多個(gè)與系統(tǒng)總線206連接的處理器202和204??蛇x擇地,可以使用單處理器系統(tǒng)。每個(gè)處理器202和204可以是SMT允許的處理器。與系統(tǒng)總線206連接的還有存儲(chǔ)器控制器/高速緩沖存儲(chǔ)器208,它提供與局部存儲(chǔ)器209的接口。I/O總線橋210與系統(tǒng)總線206連接,并且提供與I/O總線212的接口。存儲(chǔ)器控制器/高速緩沖存儲(chǔ)器208和I/O總線橋210可以如所示那樣集成在一起。
與I/O總線212連接的外圍元件互連(PCI)總線橋214提供與PCI局部總線216的接口。可以與PCI局部總線216連接多個(gè)調(diào)制解調(diào)器。典型PCI總線實(shí)現(xiàn)將支持四個(gè)PCI擴(kuò)展槽或插入連接器。圖1中到網(wǎng)絡(luò)計(jì)算機(jī)108-112的通信鏈路可以通過(guò)經(jīng)由插入板與PCI局部總線216連接的調(diào)制解調(diào)器218和網(wǎng)絡(luò)適配器220提供。
網(wǎng)絡(luò)適配器220包括物理層282,它調(diào)節(jié)輸出到網(wǎng)絡(luò)的模擬信號(hào),例如通過(guò)R45連接器的以太網(wǎng)。在網(wǎng)絡(luò)適配器220內(nèi)包括媒體接入控制器(MAC)280。媒體接入控制器(MAC)280與總線216連接,并且處理數(shù)字網(wǎng)絡(luò)信號(hào)。MAC 280用作總線216與物理層282之間的接口。MAC 280執(zhí)行在數(shù)據(jù)分組的發(fā)送和接收中所包括的多個(gè)功能。例如,在數(shù)據(jù)發(fā)送期間,MAC 280把要傳輸?shù)臄?shù)據(jù)封裝成具有地址和錯(cuò)誤檢測(cè)字段的分組。相反,在分組的接收期間,MAC 280解封裝分組,并且執(zhí)行地址檢查和錯(cuò)誤檢測(cè)。另外,MAC 280典型地執(zhí)行所傳輸?shù)臄?shù)字信號(hào)的編碼/解碼,并且執(zhí)行前同步碼生成/除去以及比特發(fā)送/接收。
另外的PCI總線橋222和224提供另外PCI總線226和228的接口,由此可以支持另外的調(diào)制解調(diào)器或網(wǎng)絡(luò)適配器。按這樣方式,數(shù)據(jù)處理系統(tǒng)200允許與多臺(tái)網(wǎng)絡(luò)計(jì)算機(jī)的連接。如所示那樣,存儲(chǔ)器映像的圖形適配器230和硬盤(pán)232也可以直接或間接地與I/O總線212連接。
本領(lǐng)域技術(shù)人員將會(huì)理解圖2所示的硬件可以變化。例如,除所示硬件外或代替所示硬件,也可以使用其他外圍設(shè)備,例如光盤(pán)驅(qū)動(dòng)器等。所示例子不意在暗示關(guān)于本發(fā)明的體系結(jié)構(gòu)的限制。
圖3舉例說(shuō)明了一個(gè)高級(jí)流程圖,它示出了根據(jù)本發(fā)明選擇用于選擇性的非猜測(cè)性的執(zhí)行的條件分支指令的類(lèi)型,并且改變用于這些選擇類(lèi)型的條件分支指令的操作碼。過(guò)程如所示那樣由塊300開(kāi)始,并且其后轉(zhuǎn)到塊302,它示出了選擇用于非猜測(cè)性的執(zhí)行的條件分支指令的類(lèi)型。其次,塊304示出了對(duì)是該類(lèi)型的條件分支指令的每個(gè)指令,設(shè)置操作代碼(操作碼)中的預(yù)指定位。因而,每次讀取這個(gè)類(lèi)型的指令,該指令的操作碼將指示該條件分支指令不將猜測(cè)性地執(zhí)行。然后過(guò)程如塊306所示那樣終止。
圖4示出了一個(gè)高級(jí)流程圖,它舉例說(shuō)明了根據(jù)現(xiàn)有技術(shù)執(zhí)行條件分支指令。過(guò)程如所示那樣以塊400開(kāi)始,并且其后轉(zhuǎn)到塊402,它示出了讀取下一條指令。接下來(lái),塊404示出了確定所讀取指令是否為條件分支指令。如果確定所讀取指令不是條件分支指令,過(guò)程轉(zhuǎn)到塊406,它示出了解碼和執(zhí)行所讀取指令。然后過(guò)程返回到塊402。
再參考?jí)K404,如果確定該指令是條件分支指令,過(guò)程轉(zhuǎn)到塊408,它示出了確定是否允許猜測(cè)性的執(zhí)行。根據(jù)現(xiàn)有技術(shù),能允許或禁止猜測(cè)性的執(zhí)行。當(dāng)允許猜測(cè)性的執(zhí)行時(shí),所有條件分支指令猜測(cè)性地執(zhí)行。當(dāng)禁止猜測(cè)性的執(zhí)行時(shí),無(wú)條件分支指令猜測(cè)性地執(zhí)行。
如果確定禁止猜測(cè)性的執(zhí)行,過(guò)程轉(zhuǎn)到塊410,它示出了分辨條件分支指令,以便在執(zhí)行條件分支之前,知道實(shí)際條件分支位置。因而,知道是否將執(zhí)行這個(gè)條件分支指令。接下來(lái),塊412示出了通過(guò)轉(zhuǎn)移到實(shí)際分支位置,執(zhí)行條件分支指令。然后過(guò)程轉(zhuǎn)到塊414,它示出了執(zhí)行位于實(shí)際位置的指令。然后,塊416示出了完成條件分支指令和位于實(shí)際位置的指令(如塊414所示那樣)。然后過(guò)程返回到塊402。
再參考?jí)K408,如果確定允許猜測(cè)性的執(zhí)行,過(guò)程轉(zhuǎn)到塊418,它示出了預(yù)測(cè)條件分支是否將被采用。然后過(guò)程轉(zhuǎn)到塊420,它示出了通過(guò)轉(zhuǎn)移到預(yù)測(cè)位置,猜測(cè)性地執(zhí)行條件分支指令。當(dāng)猜測(cè)性地執(zhí)行條件分支指令時(shí),預(yù)測(cè)條件分支指令將轉(zhuǎn)移到什么地址。然后猜測(cè)性地執(zhí)行從這個(gè)預(yù)測(cè)地址開(kāi)始存儲(chǔ)的指令。然后,塊422示出了猜測(cè)性地執(zhí)行跟隨分支的指令。這些是位于預(yù)測(cè)分支位置的指令。接下來(lái),塊424示出了分辨條件分支,以便現(xiàn)在知道實(shí)際位置。
然后,塊426示出了確定是否正確地預(yù)測(cè)了分支位置。當(dāng)預(yù)測(cè)位置和實(shí)際位置相同時(shí),正確地預(yù)測(cè)了分支位置。如果確定正確地預(yù)測(cè)了分支位置,過(guò)程轉(zhuǎn)到塊428,它示出了完成分支指令和猜測(cè)性地執(zhí)行的指令。然后過(guò)程返回到塊402。
再參考?jí)K426,如果確定預(yù)測(cè)并不正確,過(guò)程轉(zhuǎn)到塊430,它示出了清除被猜測(cè)性地執(zhí)行的指令。接下來(lái),塊432示出了通過(guò)轉(zhuǎn)移到實(shí)際分支位置,執(zhí)行分支指令。此后,塊434示出了執(zhí)行現(xiàn)在跟隨分支的指令。這些是位于實(shí)際位置的指令。接下來(lái),塊436示出了完成分支指令和位于實(shí)際位置的指令。然后過(guò)程返回到塊402。
圖5舉例說(shuō)明了一個(gè)高級(jí)流程圖,它示出了根據(jù)本發(fā)明在一個(gè)其中允許猜測(cè)性的執(zhí)行的處理器中,選擇性地禁止選擇類(lèi)型的條件分支指令的猜測(cè)性的執(zhí)行。過(guò)程如所示那樣以塊500開(kāi)始,并且其后轉(zhuǎn)到塊502,它示出了從正在執(zhí)行的代碼中讀取下一條指令。接下來(lái),塊504示出了確定指令是否為條件分支指令。如果確定指令不是條件分支指令,過(guò)程轉(zhuǎn)到塊506,它示出了解碼和執(zhí)行所讀取指令。然后過(guò)程返回到塊502。
再參考?jí)K504,如果確定指令是條件分支指令,過(guò)程轉(zhuǎn)到塊507,它示出了分析這個(gè)指令的操作碼中的指定位。接下來(lái),塊508示出了確定這個(gè)分支指令的操作碼中的預(yù)選位是否被設(shè)置。如果確定預(yù)選位沒(méi)有被設(shè)置,過(guò)程轉(zhuǎn)到塊510,它示出了如圖4所述的根據(jù)現(xiàn)有方法,猜測(cè)性地執(zhí)行分支指令。然后過(guò)程返回到塊502。
再參考?jí)K508,如果確定預(yù)選位被設(shè)置,過(guò)程轉(zhuǎn)到塊512,它示出了停止讀取和執(zhí)行這個(gè)分支指令以后的指令。這個(gè)分支指令以后的指令,不論是位于下一個(gè)順序地址還是位于非順序目標(biāo)地址位置的指令,將不會(huì)被猜測(cè)性地執(zhí)行。然后,塊514示出了分辨這個(gè)條件分支指令,以便知道實(shí)際分支位置,即知道分支是否將被采用。此后,塊516示出了通過(guò)轉(zhuǎn)移到實(shí)際分支位置,執(zhí)行分支指令。其后,塊518示出了執(zhí)行位于實(shí)際位置的指令。接下來(lái),塊520示出了完成分支指令和位于實(shí)際位置的指令。然后,塊522示出了恢復(fù)讀取和執(zhí)行這個(gè)分支指令以后的指令。因而,執(zhí)行了位于實(shí)際分支位置的指令。然后過(guò)程返回到塊502。
根據(jù)本發(fā)明,當(dāng)允許處理器內(nèi)的猜測(cè)性的執(zhí)行時(shí),不猜測(cè)性地執(zhí)行所選擇的條件分支指令。不被準(zhǔn)確地預(yù)測(cè)的條件分支指令被選擇為非猜測(cè)性的執(zhí)行。任何已知方法可以用來(lái)追蹤條件分支指令的預(yù)測(cè)率。
根據(jù)本發(fā)明,設(shè)置所選擇類(lèi)型的條件分支指令的操作碼中的一個(gè)位。當(dāng)讀取指令時(shí),如果指令是一個(gè)條件分支指令,則分析該位。如果該位被設(shè)置,不猜測(cè)性地執(zhí)行指令。如果該位被清除,猜測(cè)性地執(zhí)行該指令。
重要的是請(qǐng)注意,盡管本發(fā)明是在全功能數(shù)據(jù)處理系統(tǒng)的情況下描述的,但是本領(lǐng)域的一般技術(shù)人員可以理解,可以以指令的計(jì)算機(jī)可讀介質(zhì)的形式,以及多種形式分布本發(fā)明的進(jìn)程,并且不論實(shí)際完成分布的信號(hào)承載介質(zhì)的特定類(lèi)型,本發(fā)明同樣適用。計(jì)算機(jī)可讀介質(zhì)的例子包括可記錄類(lèi)型的介質(zhì),如軟盤(pán)、硬盤(pán)驅(qū)動(dòng)器、RAM、CD-ROM、DVD-ROM,以及傳輸類(lèi)型的介質(zhì),如數(shù)字和模擬通信鏈路,使用諸如射頻和光波傳輸之類(lèi)的傳輸形式的有線或無(wú)線通信鏈路。計(jì)算機(jī)可讀介質(zhì)可以采取編碼的格式的形式,其中當(dāng)在特定數(shù)據(jù)處理系統(tǒng)中實(shí)際使用時(shí)進(jìn)行解碼。
提供本發(fā)明的說(shuō)明書(shū)的目的是為了說(shuō)明和描述,而不是用來(lái)窮舉或?qū)⒈景l(fā)明限制為所公開(kāi)的形式。對(duì)本領(lǐng)域的一般技術(shù)人員而言,許多修改和變更都是顯而易見(jiàn)的。選擇并描述實(shí)施方式是為了更好地解釋本發(fā)明的原理,其實(shí)際應(yīng)用,并使本領(lǐng)域的其他一般技術(shù)人員理解帶有各種修改的各種實(shí)施方式的本發(fā)明同樣適用于設(shè)想的特定用途。
權(quán)利要求
1.一種在數(shù)據(jù)處理系統(tǒng)中用于選擇性地禁止猜測(cè)性的條件分支執(zhí)行的方法,所述方法包括選擇特定類(lèi)型的條件分支指令;在是所述特定類(lèi)型的條件分支指令的每個(gè)指令內(nèi)存儲(chǔ)指示;由處理器從要執(zhí)行的代碼中讀取第一指令;確定所述第一指令是否包括所述指示;響應(yīng)確定所述指令包括所述指示禁止所述第一指令的猜測(cè)性的執(zhí)行;分辨所述第一指令將要轉(zhuǎn)移到的實(shí)際位置;以及把所述代碼的執(zhí)行轉(zhuǎn)移到所述實(shí)際位置;猜測(cè)性地執(zhí)行不包括所述指示的條件分支指令;以及響應(yīng)確定所述指令不包括所述指示,猜測(cè)性地執(zhí)行所述第一指令。
2.根據(jù)權(quán)利要求1的方法,還包括在把所述代碼的執(zhí)行轉(zhuǎn)移到所述實(shí)際位置之后,執(zhí)行從所述實(shí)際位置開(kāi)始存儲(chǔ)的第二指令,而不猜測(cè)性地執(zhí)行所述第二指令。
3.根據(jù)權(quán)利要求1的方法,還包括通過(guò)預(yù)測(cè)一個(gè)預(yù)測(cè)分支位置,猜測(cè)性地執(zhí)行所述第一指令;猜測(cè)性地執(zhí)行從所述預(yù)測(cè)分支位置開(kāi)始存儲(chǔ)的第三指令;分辨所述第一指令將要轉(zhuǎn)移到的實(shí)際位置;確定所述實(shí)際位置是否與所述預(yù)測(cè)位置相同;以及響應(yīng)確定所述實(shí)際位置不與所述預(yù)測(cè)位置相同,從所述處理器中清除所述猜測(cè)性地執(zhí)行的第三指令。
4.根據(jù)權(quán)利要求1的方法,還包括響應(yīng)確定所述指令包括所述指示,執(zhí)行從所述實(shí)際位置開(kāi)始存儲(chǔ)的第二指令,而無(wú)需從所述處理器中清除猜測(cè)性地執(zhí)行的指令。
5.根據(jù)權(quán)利要求1的方法,還包括在是所述特定類(lèi)型的條件分支指令的每個(gè)指令的操作碼中存儲(chǔ)所述指示。
6.根據(jù)權(quán)利要求1的方法,還包括在是任何類(lèi)型的條件分支指令的每個(gè)指令的操作碼內(nèi)指定一個(gè)特定位;以及對(duì)于是所述特定類(lèi)型的條件分支指令的每個(gè)指令,設(shè)置所述特定位。
7.根據(jù)權(quán)利要求1的方法,還包括確定所述第一指令是否為一種類(lèi)型的條件分支指令;以及響應(yīng)確定所述第一指令是一種類(lèi)型的條件分支指令,確定所述第一指令是否包括所述指示。
8.根據(jù)權(quán)利要求1的方法,還包括當(dāng)所述第一指令包括所述指示時(shí),通過(guò)避免清除不正確預(yù)測(cè)條件分支指令時(shí)猜測(cè)性地執(zhí)行的指令,減小所述處理器的功率消耗。
9.根據(jù)權(quán)利要求1的方法,還包括執(zhí)行讀取所述第一指令的第一線程;當(dāng)所述第一指令包括所述指示時(shí),通過(guò)避免清除不正確預(yù)測(cè)條件分支指令時(shí)猜測(cè)性地執(zhí)行的指令,給予在所述處理器內(nèi)執(zhí)行的除所述第一線程外的其他線程附加處理周期。
10.根據(jù)權(quán)利要求1的方法,還包括選擇沒(méi)有以特定準(zhǔn)確級(jí)預(yù)測(cè)的特定類(lèi)型的條件分支指令。
11.一種在數(shù)據(jù)處理系統(tǒng)中用于選擇性地禁止猜測(cè)性的條件分支執(zhí)行的設(shè)備,所述設(shè)備包括選擇的特定類(lèi)型的條件分支指令;存儲(chǔ)在是所述特定類(lèi)型的條件分支指令的每個(gè)指令內(nèi)的指示;用于從要執(zhí)行的代碼中讀取第一指令的處理器;所述處理器確定所述第一指令是否包括所述指示;響應(yīng)確定所述指令包括所述指示所述處理器禁止所述第一指令的猜測(cè)性的執(zhí)行;所述處理器分辨所述第一指令將要轉(zhuǎn)移到的實(shí)際位置;以及所述處理器把所述代碼的執(zhí)行轉(zhuǎn)移到所述實(shí)際位置;被猜測(cè)性地執(zhí)行的不包括所述指示的條件分支指令;以及響應(yīng)確定所述指令不包括所述指示,所述處理器猜測(cè)性地執(zhí)行所述第一指令。
12.根據(jù)權(quán)利要求11的設(shè)備,還包括在把所述代碼的執(zhí)行轉(zhuǎn)移到所述實(shí)際位置之后,所述處理器執(zhí)行從所述實(shí)際位置開(kāi)始存儲(chǔ)的第二指令,而不猜測(cè)性地執(zhí)行所述第二指令。
13.根據(jù)權(quán)利要求11的設(shè)備,還包括所述處理器通過(guò)預(yù)測(cè)一個(gè)預(yù)測(cè)分支位置,猜測(cè)性地執(zhí)行所述第一指令;所述處理器猜測(cè)性地執(zhí)行從所述預(yù)測(cè)分支位置開(kāi)始存儲(chǔ)的第三指令;所述處理器分辨所述第一指令將要轉(zhuǎn)移到的實(shí)際位置;所述處理器確定所述實(shí)際位置是否與所述預(yù)測(cè)位置相同;以及響應(yīng)確定所述實(shí)際位置不與所述預(yù)測(cè)位置相同,所述處理器從所述處理器中清除所述猜測(cè)性地執(zhí)行的第三指令。
14.根據(jù)權(quán)利要求11的設(shè)備,還包括響應(yīng)確定所述指令包括所述指示,所述處理器執(zhí)行從所述實(shí)際位置開(kāi)始存儲(chǔ)的第二指令,而無(wú)需從所述處理器中清除猜測(cè)性地執(zhí)行的指令。
15.根據(jù)權(quán)利要求11的設(shè)備,還包括在是任何類(lèi)型的條件分支指令的每個(gè)指令的操作碼內(nèi)指定的一個(gè)特定位;以及為是所述特定類(lèi)型的條件分支指令的每個(gè)指令設(shè)置的所述特定位。
16.根據(jù)權(quán)利要求11的設(shè)備,還包括所述處理器確定所述第一指令是否為一種類(lèi)型的條件分支指令;以及響應(yīng)確定所述第一指令是一種類(lèi)型的條件分支指令,所述處理器確定所述第一指令是否包括所述指示。
17.根據(jù)權(quán)利要求11的設(shè)備,還包括當(dāng)所述第一指令包括所述指示時(shí),通過(guò)避免清除在不正確預(yù)測(cè)條件分支指令時(shí)猜測(cè)性地執(zhí)行的指令,減小的所述處理器的功率消耗。
18.根據(jù)權(quán)利要求11的設(shè)備,還包括執(zhí)行從要執(zhí)行的代碼中讀取所述第一指令的第一線程;當(dāng)所述第一指令包括所述指示時(shí),通過(guò)避免清除在不正確預(yù)測(cè)條件分支指令時(shí)猜測(cè)性地執(zhí)行的指令,給予在所述處理器內(nèi)執(zhí)行的除所述第一線程外的線程的附加處理周期。
19.根據(jù)權(quán)利要求11的設(shè)備,還包括一種選擇的沒(méi)有以特定準(zhǔn)確級(jí)預(yù)測(cè)的特定類(lèi)型的條件分支指令。
20.一種在數(shù)據(jù)處理系統(tǒng)中用于選擇性地禁止猜測(cè)性地條件分支執(zhí)行的計(jì)算機(jī)程序產(chǎn)品,所述產(chǎn)品包括用于選擇特定類(lèi)型的條件分支指令的指令;用于在是所述特定類(lèi)型的條件分支指令的每個(gè)指令內(nèi)存儲(chǔ)指示的指令;用于由處理器從要執(zhí)行的代碼中讀取第一指令的指令;用于確定所述第一指令是否包括所述指示的指令;響應(yīng)確定所述指令包括所述指示用于禁止所述第一指令的猜測(cè)性的執(zhí)行的指令;用于分辨所述第一指令將要轉(zhuǎn)移到的實(shí)際位置的指令;以及用于把所述代碼的執(zhí)行轉(zhuǎn)移到所述實(shí)際位置的指令;用于猜測(cè)性地執(zhí)行不包括所述指示的條件分支指令的指令;以及響應(yīng)確定所述指令不包括所述指示,用于猜測(cè)性地執(zhí)行所述第一指令的指令。
全文摘要
本發(fā)明公開(kāi)了一種用于選擇性地禁止猜測(cè)性的條件分支執(zhí)行的方法、設(shè)備和計(jì)算機(jī)程序產(chǎn)品。選擇特定類(lèi)型的條件分支指令。在是所述特定類(lèi)型的條件分支指令的每個(gè)指令內(nèi)存儲(chǔ)指示。然后處理器從要執(zhí)行的代碼中讀取第一指令。作出關(guān)于所述第一指令是否包括所述指示的確定。響應(yīng)確定所述指令包括所述指示禁止所述第一指令的猜測(cè)性的執(zhí)行,分辨所述第一指令將要轉(zhuǎn)移到的實(shí)際位置,以及把所述代碼的執(zhí)行轉(zhuǎn)移到所述實(shí)際位置。響應(yīng)確定所述指令不包括所述指示,猜測(cè)性地執(zhí)行所述第一指令。
文檔編號(hào)G06F9/38GK1782988SQ20051008263
公開(kāi)日2006年6月7日 申請(qǐng)日期2005年7月6日 優(yōu)先權(quán)日2004年12月2日
發(fā)明者李·埃文·艾森, 弗朗西斯·帕特里克·奧康奈爾 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
滕州市| 乌什县| 藁城市| 甘泉县| 黄浦区| 云龙县| 永顺县| 南皮县| 永靖县| 洪泽县| 福安市| 松江区| 饶阳县| 广元市| 化州市| 津市市| 天门市| 厦门市| 巴彦县| 定结县| 香格里拉县| 澄迈县| 莒南县| 拜城县| 萝北县| 章丘市| 新闻| 晋城| 门源| 苏尼特右旗| 北安市| 如东县| 依安县| 临潭县| 娱乐| 莒南县| 武隆县| 乳源| 肇东市| 容城县| 安徽省|