所揭示的方面涉及在指令管線中執(zhí)行的指令的相依性預(yù)測(cè)。更明確地說,一些方面是針對(duì)預(yù)測(cè)一或多個(gè)指令是否為條件性強(qiáng)加控制指令的相依指令,且在相依性的不正確預(yù)測(cè)的情況下,減輕相關(guān)聯(lián)的懲罰。
背景技術(shù):
指令的條件性執(zhí)行是處理系統(tǒng)的常規(guī)特征。實(shí)例是條件性指令,例如條件性分支指令,其中條件性分支指令所采用的方向可取決于條件如何解決。舉例來說,條件性分支指令可表示為“if<condition1>jump1”,其中,如果條件1評(píng)估為真,那么指令執(zhí)行的操作流跳到j(luò)ump1標(biāo)記所指定的目標(biāo)地址(此情形還可被稱作正“采用”分支指令(jump1))。另一方面,如果條件1評(píng)估為假,那么在所述條件性分支指令之后,操作流可繼續(xù)執(zhí)行下一循序指令,而不跳到目標(biāo)地址。(此情形也被稱作不采用所述分支指令,或“不被采用”)。在某些指令集架構(gòu)(isa)下,不同于分支指令的指令可為條件性的,其中所述指令的行為將取決于相關(guān)條件。
一般來說,其中將解決條件性指令的條件的方式將是未知的,直到所述條件性指令被執(zhí)行為止。等待直到所述條件性指令被執(zhí)行來確定條件為止可在經(jīng)配置以用于并行和亂序執(zhí)行的現(xiàn)代處理器中強(qiáng)加非所要的延遲。在條件性分支指令的情況下,所述延遲特別具有破壞性,因?yàn)槠渲蟹种е噶畹玫浇鉀Q的方向?qū)Q定跟隨所述分支指令的指令操作流。
為了改進(jìn)指令級(jí)并行度(ilp)且最小化延遲,現(xiàn)代處理器可包含在條件性指令的執(zhí)行之前預(yù)測(cè)條件性指令的條件的解決方案的機(jī)制。舉例來說,實(shí)施分支預(yù)測(cè)機(jī)制來預(yù)測(cè)在執(zhí)行條件性分支指令之前,將采用還是不采用所述條件性分支指令的方向。如果預(yù)測(cè)結(jié)果是錯(cuò)誤的,那么將沖洗基于不正確的預(yù)測(cè)不當(dāng)執(zhí)行的指令。這導(dǎo)致被稱為分支誤預(yù)測(cè)懲罰的懲罰。如果預(yù)測(cè)結(jié)果是正確的,那么不會(huì)遇到分支誤預(yù)測(cè)懲罰。
分支預(yù)測(cè)機(jī)制可為靜態(tài)或動(dòng)態(tài)的。分支預(yù)測(cè)本身將等待時(shí)間添加到管線,另外被稱為分支預(yù)測(cè)懲罰。當(dāng)從指令高速緩沖存儲(chǔ)器取指令并在指令管線中處理時(shí),分支預(yù)測(cè)機(jī)制必須確定所取的指令是否為條件性指令,以及其是否為分支指令,且接著對(duì)條件性分支指令的可能方向做出預(yù)測(cè)。最小化與指令執(zhí)行管線中的分支預(yù)測(cè)過程有關(guān)的暫?;驓馀菔呛虾跣枰摹R虼?,分支預(yù)測(cè)機(jī)制力求在指令管線中盡可能早地做出預(yù)測(cè)。有時(shí),與分支指令有關(guān)的預(yù)解碼位或元數(shù)據(jù)存儲(chǔ)在指令高速緩沖存儲(chǔ)器中,這實(shí)現(xiàn)了分支預(yù)測(cè)的加速。此類預(yù)解碼位可包含關(guān)于分支類型的信息(例如因?yàn)槠渖婕俺绦蛴?jì)數(shù)器(pc)值、其是直接還是間接分支,其是否是來自子例程的返回等)。預(yù)解碼位還可包含關(guān)于分支指令的條件性的信息。
雖然針對(duì)條件性指令存在以上預(yù)測(cè)機(jī)制,例如條件性在條件性指令本身內(nèi)提供的條件性分支指令,但存在另一類較難預(yù)測(cè)的指令。此類包含行為由條件性強(qiáng)加控制指令控制的一或多個(gè)相依指令的塊。舉例來說,一些處理器isa包含所謂的如果-那么(it)類指令。it指令通過對(duì)一或多個(gè)相依指令強(qiáng)加條件性來控制一或多個(gè)相依指令的it塊的行為。it塊中的相依指令跟隨it控制指令。更具體地說,it控制指令可具有“如果”條件,基于其解決方案,確定一或多個(gè)相依“那么”指令的行為。以此方式,it指令的使用使得有可能控制一或多個(gè)相依指令的塊的行為。舉例來說,“itttt”塊可包含具有條件de“如果”指令,接著是四個(gè)“那么”指令,其行為取決于條件性強(qiáng)加“如果”控制指令如何評(píng)估。以此方式,可針對(duì)其中一或多個(gè)指令的塊取決于相同條件的情況實(shí)現(xiàn)編程效率。
這些相依指令難以使用針對(duì)常規(guī)條件性指令的上述預(yù)測(cè)機(jī)制來預(yù)測(cè),因?yàn)橄嘁乐噶畹男袨橛蓷l件性強(qiáng)加控制指令控制。如果構(gòu)成相依指令的相同指令前面不是條件性強(qiáng)加控制指令,那么其行為是非條件性的。因此,相依指令的可能行為無法存儲(chǔ)在相依指令本身的預(yù)解碼位中。換句話說,例如作為非條件性分支指令的相依指令的可能行為的預(yù)測(cè)是困難的,因?yàn)樗龇种е噶畋旧硎欠菞l件性的,且應(yīng)始終預(yù)測(cè)為“采用”。然而,分支指令的實(shí)際方向取決于條件性強(qiáng)加控制指令,且因此,分支指令的行為可有效地為“采用”或“不采用”。
此外,有時(shí),不可能事先知曉特定指令是否為條件性強(qiáng)加控制指令的相依指令。這是因?yàn)楹袟l件性強(qiáng)加控制指令和對(duì)應(yīng)相依指令的代碼塊可跨越指令存儲(chǔ)器中的高速緩沖存儲(chǔ)線邊界。此外,條件性強(qiáng)加控制指令可以許多類型出現(xiàn),并基于條件性強(qiáng)加控制指令的塊大小(即,代碼塊中的一或多個(gè)相依指令的數(shù)目)而影響相依指令的不同數(shù)目。支持arm架構(gòu)的isa例如包含被稱為thumb指令的一類指令。thumb指令可為32位或16位。由于thumb指令以多個(gè)指令長(zhǎng)度出現(xiàn),因此不可能知曉何時(shí)處理?xiàng)l件性強(qiáng)加控制指令(例如it指令),對(duì)應(yīng)的相依指令是否將包含在相同高速緩沖存儲(chǔ)線內(nèi),因?yàn)閕t指令的代碼塊中的字節(jié)的數(shù)目將取決于每一相依指令的長(zhǎng)度。
處置此類相依指令的執(zhí)行的常規(guī)方法趨向于低效、復(fù)雜且費(fèi)時(shí)。常規(guī)方法通過降低處理器的執(zhí)行頻率以便允許充分的時(shí)間來從條件性強(qiáng)加控制指令確定相依指令的條件性來操作。或者,常規(guī)方法引入管線暫停,以便在執(zhí)行相依指令之前解決條件,或?qū)l件性的解決方案移到后續(xù)管線級(jí),從而增加分支預(yù)測(cè)懲罰。因此,本領(lǐng)域中需要避免常規(guī)方法的前述缺點(diǎn)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的示范性方面是針對(duì)用于執(zhí)行處理器的指令管線中的指令的系統(tǒng)和方法。
舉例來說,示范性方面是針對(duì)一種用于執(zhí)行處理器的指令管線中的指令的方法,其中所述方法包括:檢測(cè)條件性強(qiáng)加控制指令,其對(duì)一或多個(gè)相依指令的條件性塊大小數(shù)目強(qiáng)加相依行為。在執(zhí)行第一指令之前,所述方法包含:基于條件性塊大小以及指令管線的一個(gè)或多個(gè)參數(shù),相依性預(yù)測(cè)第一指令是條件性強(qiáng)加控制指令的相依指令;以及基于所述相依性預(yù)測(cè)來執(zhí)行所述第一指令。當(dāng)?shù)谝恢噶畋幌嘁佬哉`預(yù)測(cè)時(shí),減輕與相依性誤預(yù)測(cè)相關(guān)聯(lián)的懲罰。
另一示范性方面是針對(duì)處理系統(tǒng),其包括處理器,所述處理器經(jīng)配置以執(zhí)行指令管線中的指令。所述處理系統(tǒng)包含相依性預(yù)測(cè)邏輯,其經(jīng)配置以:檢測(cè)條件性強(qiáng)加控制指令,其對(duì)一或多個(gè)相依指令的條件性塊大小數(shù)目強(qiáng)加相依行為;以及在執(zhí)行第一指令之前,基于所述條件性塊大小以及指令管線的一個(gè)或多個(gè)參數(shù),相依性預(yù)測(cè)所述第一指令是條件性強(qiáng)加控制指令的相依指令。所述處理器經(jīng)配置以基于所述相依性預(yù)測(cè)來執(zhí)行所述第一指令。所述處理系統(tǒng)進(jìn)一步包含經(jīng)配置以在第一指令被相依性誤預(yù)測(cè)時(shí)減輕與相依性誤預(yù)測(cè)相關(guān)聯(lián)的懲罰的邏輯。
另一示范性方面是針對(duì)處理系統(tǒng),其包括:用于執(zhí)行指令管線中的指令的裝置;用于檢測(cè)對(duì)一或多個(gè)相依指令的條件性塊大小數(shù)目強(qiáng)加相依行為的條件性強(qiáng)加控制指令的的裝置;用于在執(zhí)行第一指令之前,基于所述條件性塊大小以及所述指令管線的一個(gè)或多個(gè)參數(shù),相依性預(yù)測(cè)所述第一指令是條件性強(qiáng)加控制指令的相依指令的裝置,其中所述用于執(zhí)行指令管線中的指令的裝置包括:用于基于相依性預(yù)測(cè)來執(zhí)行第一指令的裝置;以及用于在所述第一指令被相依性誤預(yù)測(cè)時(shí),減輕與相依性誤預(yù)測(cè)相關(guān)聯(lián)的懲罰的裝置。
另一示范性方面是針對(duì)包括代碼的非暫時(shí)性計(jì)算機(jī)可讀存儲(chǔ)媒體,所述代碼在由處理器執(zhí)行時(shí),致使所述處理器實(shí)施操作來執(zhí)行處理器的指令管線中的指令,所述非暫時(shí)性計(jì)算機(jī)可讀存儲(chǔ)媒體包括:用于檢測(cè)對(duì)一或多個(gè)相依指令的條件性塊大小數(shù)目強(qiáng)加相依行為的條件性強(qiáng)加控制指令的代碼;用于在執(zhí)行第一指令之前,基于所述條件性塊大小以及所述指令管線的一個(gè)或多個(gè)參數(shù),相依性預(yù)測(cè)所述第一指令是條件性強(qiáng)加控制指令的相依指令的代碼;用于基于所述相依性預(yù)測(cè)來執(zhí)行所述第一指令的代碼;以及用于在第一指令被相依性誤預(yù)測(cè)時(shí),減輕與相依性誤預(yù)測(cè)相關(guān)聯(lián)的懲罰的代碼。
附圖說明
呈現(xiàn)附圖來輔助描述本發(fā)明的方面,且僅僅為了說明而非限制所述方面而提供附圖。
圖1說明根據(jù)所揭示的方面的經(jīng)配置以用于相依性預(yù)測(cè)的處理系統(tǒng)的示意圖。
圖2a到2b說明關(guān)于指令大小和相依性預(yù)測(cè)規(guī)則的示范性表。
圖3說明根據(jù)示范性方面的相依性預(yù)測(cè)方法的操作流。
圖4說明本發(fā)明的一方面可有利地用于其中的示范性無線裝置400。
具體實(shí)施方式
在以下針對(duì)本發(fā)明的特定方面的描述和相關(guān)圖式中揭示本發(fā)明的方面??稍诓幻撾x本發(fā)明的范圍的情況下設(shè)計(jì)替代方面。另外,將不會(huì)詳細(xì)描述或?qū)⑹÷员景l(fā)明的眾所周知的元件以免混淆本發(fā)明的相關(guān)細(xì)節(jié)。
詞語“示范性”在本文中用于表示“充當(dāng)實(shí)例、例子或說明”。本文中描述為“示范性”的任何方面未必理解為比其它方面優(yōu)選或有利。同樣,術(shù)語“本發(fā)明的方面”并不要求本發(fā)明的所有方面都包含所論述的特征、優(yōu)點(diǎn)或操作模式。
本文中所使用的術(shù)語僅出于描述特定方面的目的,且無意限制本發(fā)明的方面。如本文所使用,單數(shù)形式“一”和“所述”意在還包括復(fù)數(shù)形式,除非上下文另外清楚地指示。應(yīng)進(jìn)一步理解,術(shù)語“包括(comprises、comprising)”和/或“包含(includes、including)”當(dāng)在本文中使用時(shí)指定所陳述的特征、整數(shù)、步驟、操作、元件和/或組件的存在,但并不排除一或多個(gè)其它特征、整數(shù)、步驟、操作、元件、組件和/或其群組的存在或添加。
另外,依據(jù)將由(例如)計(jì)算裝置的元件執(zhí)行的動(dòng)作的序列來描述許多方面。將認(rèn)識(shí)到,本文中所描述的各種動(dòng)作可由特定電路(例如,專用集成電路(asic))、由正由一或多個(gè)處理器執(zhí)行的程序指令或由所述兩者的組合來執(zhí)行。另外,可認(rèn)為本文中所述的這些動(dòng)作序列完全體現(xiàn)于任何形式的計(jì)算機(jī)可讀存儲(chǔ)媒體內(nèi),所述計(jì)算機(jī)可讀存儲(chǔ)媒體中存儲(chǔ)有一組對(duì)應(yīng)的計(jì)算機(jī)指令,所述計(jì)算機(jī)指令在被執(zhí)行時(shí)將導(dǎo)致相關(guān)聯(lián)的處理器執(zhí)行本文中所述的功能性。因此,本發(fā)明的各種方面可以數(shù)個(gè)不同形式來體現(xiàn),預(yù)期所有形式屬于所主張的標(biāo)的物的范圍內(nèi)。另外,對(duì)于本文所描述的方面中的每一者,任何此類方面的對(duì)應(yīng)形式可在本文中描述為(例如)“經(jīng)配置以”執(zhí)行所描述動(dòng)作的“邏輯”。
示范性方面是針對(duì)加速跟隨條件性強(qiáng)加控制指令的指令的執(zhí)行,其中跟隨條件性強(qiáng)加控制指令的此類指令包含條件性強(qiáng)加控制指令的相依指令。在這點(diǎn)上,做出關(guān)于一或多個(gè)指令為相依指令的可能性的假定?;炯俣ㄊ莾H跟隨條件性強(qiáng)加控制指令的指令可為相依指令,且在條件性強(qiáng)加控制指令前面的任何指令將不是相依指令。進(jìn)一步假定可基于與條件性強(qiáng)加控制指令有關(guān)的一或多個(gè)特性或參數(shù)。
一般來說,所述一個(gè)或多個(gè)參數(shù)可包含以下各項(xiàng)中的一或多者:經(jīng)配置以執(zhí)行指令的處理器的指令管線的最大寬度;處理器所實(shí)施的指令集架構(gòu)(isa)所支持的指令長(zhǎng)度;和/或指令管線的管線級(jí)內(nèi)的潛在相依指令所占用的一或多個(gè)預(yù)指定通道。
更詳細(xì)地說,所述參數(shù)包含如先前描述的“塊大小”,指代行為取決于條件性強(qiáng)加控制指令所強(qiáng)加的條件性的相依指令的數(shù)目。所述參數(shù)還涉及處理器或處理系統(tǒng)中所實(shí)施的指令集架構(gòu)(isa)所支持的指令集操作模式和/或指令長(zhǎng)度。指令集操作模式可包含(例如)支持32位指令的arm模式,以及支持16位和32位指令的thumb模式。因此與條件性強(qiáng)加控制指令有關(guān)的參數(shù)還可包含指令管線的最大寬度或每一時(shí)鐘周期中處理的指令數(shù)據(jù)位的數(shù)目。在這點(diǎn)上,可考慮每時(shí)鐘周期兩個(gè)或更多個(gè)指令的并行執(zhí)行,其中所述兩個(gè)或更多個(gè)指令中的每一者可與管線級(jí)內(nèi)的一或多個(gè)預(yù)指定通道或位置對(duì)準(zhǔn)。舉例來說,處理器可經(jīng)配置以每時(shí)鐘周期處理最大64個(gè)位的指令數(shù)據(jù)。將所述64個(gè)位劃分并排序?yàn)榫哂蓄A(yù)指定位置的四個(gè)16位或半字通道。舉例來說,這些通道中的每一者可包含一個(gè)16位指令、32位指令的二分之一,或64位指令的四分之一。因此,關(guān)于指令是條件性強(qiáng)加控制指令的相依指令的可能性的假定還可基于例如指令管線的管線級(jí)內(nèi)的指令所占用的一或多個(gè)預(yù)指定通道等參數(shù)。
基于以上特性和/或參數(shù)中的一或多者,本發(fā)明的各方面涉及預(yù)測(cè)特定指令是否取決于指令執(zhí)行管線中早期的條件性強(qiáng)加控制指令。此預(yù)測(cè)在本發(fā)明中還被稱作“相依性預(yù)測(cè)”,因?yàn)槠渖婕邦A(yù)測(cè)指令是否取決于條件性強(qiáng)加控制指令。換句話說,相依性預(yù)測(cè)涉及預(yù)測(cè)指令是否在“條件性塊”(例如前述的it塊)內(nèi),其是指行為由條件性強(qiáng)加控制指令所強(qiáng)加的條件性確定的一或多個(gè)指令的塊。所揭示的“相依性預(yù)測(cè)”區(qū)別于涉及將分支的方向預(yù)測(cè)為采用或不采用的常規(guī)分支預(yù)測(cè)。為了闡釋,可跟隨條件性強(qiáng)加控制指令的分支指令可具有兩種相異類型的相關(guān)聯(lián)預(yù)測(cè)。第一預(yù)測(cè)可涉及分支指令是否取決于條件性強(qiáng)加控制指令的相依性預(yù)測(cè)。第二預(yù)測(cè)可涉及常規(guī)分支預(yù)測(cè)技術(shù),其可就位來基于例如分支指令的歷史等方面來預(yù)測(cè)分支指令的方向。如果基于相依性預(yù)測(cè),預(yù)測(cè)分支指令取決于條件性強(qiáng)加控制指令,那么分支的行為也將基于條件性強(qiáng)加控制指令所強(qiáng)加的條件性。因此,一旦已預(yù)測(cè)分支指令取決于條件性強(qiáng)加控制指令,就可基于常規(guī)預(yù)測(cè)機(jī)制來預(yù)測(cè)分支指令的行為,即將采用還是不采用所述分支。
然而,在一些情況下,有可能指令的相依性預(yù)測(cè)可為錯(cuò)誤的,或如本文可參考,所述指令可被“相依性誤預(yù)測(cè)”。舉例來說,在分支指令的情況下,第一非條件性分支指令可被相依性預(yù)測(cè)為管線中的早期條件性強(qiáng)加控制指令的相依指令,但在后續(xù)管線級(jí)中,可確定所述相依性預(yù)測(cè)是不正確的,因?yàn)榈谝环菞l件性分支指令實(shí)際上不在所述條件性強(qiáng)加控制指令的條件性塊內(nèi)。因此,在這些情況下,第一非條件性分支指令可能已被視為條件性的,且基于從條件性強(qiáng)加控制指令導(dǎo)出的條件,第一非條件性分支指令可能已被預(yù)測(cè)為不采用。被預(yù)測(cè)為不采用的非條件性分支指令是導(dǎo)致“相依性誤預(yù)測(cè)懲罰”的不正確方向預(yù)測(cè)和異常。雖然在本發(fā)明中更詳細(xì)地論述關(guān)于分支指令的這些方面,但將理解,甚至在不是分支指令的指令被相依性誤預(yù)測(cè)的情況下,也可能引發(fā)類似的相依性誤預(yù)測(cè)懲罰。因此,如果第一非分支指令是基于相依性預(yù)測(cè)非分支指令為條件性強(qiáng)加控制指令的相依指令而不當(dāng)指派的條件性行為,那么此相依性誤預(yù)測(cè)也可能引發(fā)相依性誤預(yù)測(cè)懲罰。如果第一非分支指令被相依性誤預(yù)測(cè),那么提交被相依性誤預(yù)測(cè)的第一非分支指令將是不正確的。因此,將理解,如本文所論述,“相依性誤預(yù)測(cè)懲罰”涉及當(dāng)針對(duì)指令的相依性預(yù)測(cè)(所述指令是分支指令還是非分支指令)不正確時(shí)所引發(fā)的懲罰。以下章節(jié)中將連同關(guān)于減輕相依性誤預(yù)測(cè)懲罰的示范性方面論述各種相依性誤預(yù)測(cè)懲罰。
在非條件性分支指令被不當(dāng)相依性預(yù)測(cè)為取決于條件性強(qiáng)加控制指令的以上實(shí)例中,相依性誤預(yù)測(cè)還導(dǎo)致不正確的方向預(yù)測(cè)或方向誤預(yù)測(cè)。對(duì)應(yīng)的相依性誤預(yù)測(cè)懲罰可涉及非條件性分支指令,以及跟隨將不當(dāng)執(zhí)行的非條件性分支指令的指令。一些方面涉及通過從提交/更新存儲(chǔ)器沖洗或阻止可能已跟隨相依性誤預(yù)測(cè)指令的任何指令(例如在被不當(dāng)預(yù)測(cè)為條件性且不采用的第一非條件性分支指令之后執(zhí)行的任何指令),來減輕此相依性誤預(yù)測(cè)懲罰。與減輕相依性誤預(yù)測(cè)懲罰有關(guān)的另一方面涉及對(duì)被相依性誤預(yù)測(cè)的第一非條件性分支指令進(jìn)行方向預(yù)測(cè),以獲得對(duì)分支指令的方向的預(yù)測(cè)。所述方面進(jìn)一步包括允許被相依性誤預(yù)測(cè)的第一非條件性分支指令用方向誤預(yù)測(cè)來更新動(dòng)態(tài)分支預(yù)測(cè)跟蹤機(jī)制(例如跟蹤分支預(yù)測(cè)及其準(zhǔn)確性的分支歷史寄存器或分支歷史表)。用方向誤預(yù)測(cè)來更新動(dòng)態(tài)分支預(yù)測(cè)跟蹤機(jī)制致使動(dòng)態(tài)分支預(yù)測(cè)跟蹤機(jī)制經(jīng)訓(xùn)練來習(xí)得第一非條件性分支指令是基于相依性誤預(yù)測(cè)被方向誤預(yù)測(cè)的。因此可訓(xùn)練動(dòng)態(tài)分支預(yù)測(cè)跟蹤機(jī)制,以避免針對(duì)第一非條件性分支指令的將來出現(xiàn)產(chǎn)生不正確的方向預(yù)測(cè)(即,非條件性分支指令的不采用預(yù)測(cè))。其后,經(jīng)訓(xùn)練的動(dòng)態(tài)分支預(yù)測(cè)跟蹤機(jī)制可正確地對(duì)第一指令的將來出現(xiàn)進(jìn)行方向預(yù)測(cè)。因此,一旦已訓(xùn)練分支預(yù)測(cè)跟蹤機(jī)制,就可減少基于相依性錯(cuò)誤預(yù)測(cè)的分支錯(cuò)誤預(yù)測(cè)的數(shù)目。
在第一非分支指令被不當(dāng)相依性預(yù)測(cè)為取決于條件性強(qiáng)加控制指令的實(shí)例中,相依性誤預(yù)測(cè)懲罰可涉及第一非分支指令將不當(dāng)執(zhí)行。另外,有可能第一非分支指令可具有與跟隨第一非分支指令的指令的數(shù)據(jù)相依性(例如具有一或多個(gè)共用操作數(shù))。因此,跟隨第一非分支指令的具有對(duì)第一非分支指令的一或多個(gè)數(shù)據(jù)相依性的這一或多個(gè)指令也可能被不當(dāng)執(zhí)行。因此,示范性方面涉及通過阻止第一非分支指令提交或更新存儲(chǔ)器來減輕此相依性誤預(yù)測(cè)懲罰。在一些方面,所述減輕可進(jìn)一步包括撤銷或沖洗(或阻止提交或更新存儲(chǔ)器)第一非分支指令,以及可能已跟隨被相依性誤預(yù)測(cè)的第一非分支指令的具有一或多個(gè)數(shù)據(jù)相依性的這一或多個(gè)指令。與減輕相依性誤預(yù)測(cè)懲罰有關(guān)的另一方面涉及允許被相依性誤預(yù)測(cè)的第一非分支指令更新例如條件性歷史表等結(jié)構(gòu),其跟蹤條件性指令的歷史(此類結(jié)構(gòu)可類似于分支歷史表,但經(jīng)配置以用于非分支條件性指令)。可用指令執(zhí)行的歷史來訓(xùn)練條件性歷史表,使得如果允許被相依性誤預(yù)測(cè)的第一非分支指令用其對(duì)其相依性誤預(yù)測(cè)的第一出現(xiàn)的不正確執(zhí)行來更新所述條件性歷史表,那么對(duì)于之后的出現(xiàn),條件性歷史表可為第一非分支指令習(xí)得正確行為。因此,一旦已習(xí)得第一非分支指令的正確行為,就可使用所述條件性歷史表來超馳第一非分支指令的相依性誤預(yù)測(cè)。
因此,示范性方面可克服常規(guī)技術(shù)的前述缺點(diǎn),并實(shí)現(xiàn)條件性強(qiáng)加控制指令的相依指令的迅捷且高效的執(zhí)行,同時(shí)減少或消除頻率降級(jí)、分支預(yù)測(cè)懲罰和/或管線暫停。如從上文的論述看出,方面是針對(duì)早期指令的相依性預(yù)測(cè)的加速,從而避免首先通過引入管線暫停或減緩執(zhí)行頻率等來準(zhǔn)確地確定指令是否實(shí)際上是相依指令的必要。
此外,還將理解,在示范性方面中,硬件成本可能沒有顯著增加,且示范性方面可并入現(xiàn)有處理系統(tǒng)中。另外,因?yàn)槭痉缎苑矫婵杀苊夤芫€暫停,且在相依性錯(cuò)誤預(yù)測(cè)的情況下實(shí)施前述減輕,因此可降低總電力消耗。
下文將關(guān)于圖1的處理系統(tǒng)100來論述上文方面的示范性實(shí)施方案。出于說明性目的,將關(guān)于條件性強(qiáng)加控制指令的相依指令是分支指令的情況來論述示范性方面。然而,從上文的論述看出,此類相依指令不限于分支指令,而是可為行為是基于條件性強(qiáng)加控制指令的條件性如何評(píng)估的任何其它指令。舉例來說,在一些方面,相依指令可為非分支指令,例如條件性添加指令,其中如果滿足條件,那么使用一或多個(gè)源寄存器來執(zhí)行添加操作,并將結(jié)果寫入到目標(biāo)寄存器。如果不滿足條件,那么不執(zhí)行添加操作,且目標(biāo)寄存器保持其先前值。因此,在此情況下,添加指令的相依“行為”涉及是否執(zhí)行添加指令(而在分支指令的情況下,相依“行為”涉及采用還是不采用分支指令)。舉例來說,包含于條件性強(qiáng)加控制指令中的條件的評(píng)估可基于比較指令的結(jié)果。
現(xiàn)參考圖1,說明處理系統(tǒng)100的示意性表示。處理系統(tǒng)100可經(jīng)配置以實(shí)施示范性方面。處理系統(tǒng)100可包含處理器110,其耦合到指令高速緩沖存儲(chǔ)器或i高速緩沖存儲(chǔ)器108,如所說明。處理器110可經(jīng)配置以接收來自指令高速緩沖存儲(chǔ)器108的指令,且例如使用執(zhí)行管線112來執(zhí)行所述指令。雖然在此表示中說明指令高速緩沖存儲(chǔ)器,但所屬領(lǐng)域的技術(shù)人員將理解,所述指令還可從寄存器堆導(dǎo)出,例如所述寄存器堆可集成在與處理器110相同的集成電路或芯片上。執(zhí)行管線112可包含一或多個(gè)管線化級(jí),代表性地說明為以下級(jí):指令獲取(if);指令解碼(id);一或多個(gè)執(zhí)行級(jí)ex1、ex2等,以及回寫(wb)級(jí)。所屬領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到對(duì)執(zhí)行管線112的大量修改和添加,如此項(xiàng)技術(shù)中已知。處理器110還可耦合到本文為簡(jiǎn)單起見尚未明確示出并描述的大量其它組件(例如數(shù)據(jù)高速緩沖存儲(chǔ)器、io裝置、存儲(chǔ)器等)。
在一個(gè)方面中,示出i高速緩沖存儲(chǔ)器108包括高速緩沖存儲(chǔ)線102中的實(shí)例指令集102a到d。如所說明,高速緩沖存儲(chǔ)線的64個(gè)位可由四個(gè)16位半字組成,標(biāo)記為102a到d。如本文所論述,半字102a到d分別占用執(zhí)行管線112的通道a到d,且特定指令以及其前面的那些指令所跨越的通道可為用于相依性預(yù)測(cè)特定指令是否為條件性強(qiáng)加控制指令的相依指令的參數(shù)。將認(rèn)識(shí)到,盡管32位指令的獲取和解碼可與半字邊界或通道a到d對(duì)準(zhǔn),但可執(zhí)行32位指令的執(zhí)行單元不需要一定符合這些通道。換句話說,執(zhí)行管線112的ex1、ex2級(jí)中的邏輯可對(duì)橫跨通道a和b的32位指令的所有32個(gè)位操作,而不管所述32個(gè)位實(shí)際上散布在兩個(gè)通道上的事實(shí)。32位指令的回寫也無需在16位組塊中執(zhí)行。因此,圖1中尚未用16位寬的通道界限來說明指令管線112的ex1、ex2和wb級(jí),而是用通道界限來示出if和id級(jí)。此外,還將理解,i高速緩沖存儲(chǔ)器108可具有對(duì)應(yīng)于高速緩沖存儲(chǔ)線102的額外信息,例如地址、標(biāo)記和元數(shù)據(jù),其在此處未明確說明。
如先前所提到,處理系統(tǒng)100可經(jīng)配置以支持一或多種格式或模式的指令,包含但不限于16位模式和32位模式。16位指令將配合在四個(gè)半字通道a到d中的一者內(nèi),而32位指令將需要兩個(gè)半字通道。處理系統(tǒng)100還可經(jīng)配置以包含一或多個(gè)條件性強(qiáng)加控制指令。條件性強(qiáng)加控制指令可為16位指令或32位指令,且其可對(duì)16位相依指令、32位相依指令或這兩者強(qiáng)加條件。
先前已將實(shí)例條件性強(qiáng)加控制指令描述為如果-那么或it指令,其對(duì)一個(gè)相依指令強(qiáng)加條件性。換句話說,已知it指令影響一個(gè)相依指令的塊。類似地,itt或ite指令將對(duì)兩個(gè)相依指令強(qiáng)加條件,或影響兩個(gè)相依指令的塊(“ite”指令表示“如果-那么-否則”指令,其將這樣操作:“如果”條件,如果為真,將致使第一相依(那么)執(zhí)行的行為根據(jù)為真的條件,且第二相依(否則)指令的行為將根據(jù)為假的條件。換句話說,否則指令是基于如果條件的相反解決方案或錯(cuò)誤解決方案)。類似地,ittt、itte和itee影響三個(gè)相依指令的塊;itttt、ittte、ittee和iteee影響四個(gè)相依指令的塊,等等。一般來說,在本發(fā)明中可大體上被稱作“it類型”或“it類”指令的一種類型或一類條件性強(qiáng)加控制指令包含跟隨如果指令的那么或否則指令的任何此類組合。在下文的示范性方面中,將論述it類指令的四個(gè)指令的最大塊大小,而將理解,本發(fā)明的各方面不限于任何最大塊大小。
在示范性方面中,有可能例如基于預(yù)解碼位來確定管線中早期的上文條件性強(qiáng)加控制指令的塊大小。舉例來說,當(dāng)從l2高速緩沖存儲(chǔ)器(未圖示)獲得將放入i高速緩沖存儲(chǔ)器108中的數(shù)據(jù)或指令時(shí),可執(zhí)行預(yù)解碼來確定特定高速緩沖存儲(chǔ)線102內(nèi)存在條件性強(qiáng)加控制指令。當(dāng)從i高速緩沖存儲(chǔ)器108獲取特定高速緩沖存儲(chǔ)線102(例如在執(zhí)行管線112的if級(jí)期間)時(shí),可確定條件性強(qiáng)加控制指令的塊大小??捎么藟K大小或相依指令的數(shù)目的計(jì)數(shù)來初始化例如計(jì)數(shù)器(未明確示出)的邏輯,其可指示所述塊內(nèi)的所有相依指令是否包含在高速緩沖存儲(chǔ)線102內(nèi),或是否可存在到后續(xù)高速緩沖存儲(chǔ)線中的溢出。如先前所提到,舉例來說,條件性強(qiáng)加控制指令可出現(xiàn)在存儲(chǔ)器中或i高速緩沖存儲(chǔ)器108中的任意位置。因此,條件性強(qiáng)加控制指令的相依指令可屬于同一高速緩沖存儲(chǔ)線內(nèi),或可溢出到以下高速緩沖存儲(chǔ)線或獲取群組中。在執(zhí)行管線112中的一個(gè)循環(huán)期間獲取并處理的指令塊可被稱為“獲取群組”。舉例來說,大小64位的獲取群組可具有從兩個(gè)(32個(gè)位)到四個(gè)(16個(gè)位)的任何地方的指令。(其還可能大小64位的獲取群組具有三個(gè)指令,包含一個(gè)32位指令和兩個(gè)16位指令。此外,指令的一部分處于一個(gè)獲取群組,而同一指令的剩余部分處于后續(xù)獲取群組的情況也是可能的)。
使用上述信息,方面經(jīng)配置以檢測(cè)條件性強(qiáng)加控制指令,并基于某些特性和/或參數(shù),做出指令是否可為條件性強(qiáng)加控制指令的相依指令或換句話說,屬于條件性強(qiáng)加控制指令的條件性塊內(nèi)的相依性預(yù)測(cè)。所述參數(shù)可包含條件性強(qiáng)加控制指令的塊大小,以及與指令執(zhí)行管線(例如管線級(jí))有關(guān)的信息,指令模式和關(guān)于可能指令長(zhǎng)度的相關(guān)信息,以及與潛在相依指令有關(guān)的并行執(zhí)行的位置/通道。
代表性地,指令是否為條件性強(qiáng)加控制指令的相依指令的相依性預(yù)測(cè)示出為在標(biāo)記為圖1的相依性預(yù)測(cè)103的框中執(zhí)行。然而,將理解,相依性預(yù)測(cè)103的功能性可在硬件與軟件的任何組合中或處理器110的任何其它邏輯塊內(nèi)實(shí)施,而不需要獨(dú)立邏輯塊。在實(shí)例中,如果獲取群組中存在條件性強(qiáng)加控制指令,其可符合從i高速緩沖存儲(chǔ)器108獲取的高速緩沖存儲(chǔ)線102,那么可有可能在獲取所述獲取群組的相同時(shí)鐘循環(huán)內(nèi)確定條件性強(qiáng)加控制指令的塊大小。然而,歸因于確定塊大小所引發(fā)的等待時(shí)間,可能不可能精確地確定獲取群組中跟隨條件性強(qiáng)加控制指令的哪些指令是相依指令。換句話說,可有可能例如使用操作碼的選定位來快速檢測(cè)局部信息,其中所述局部信息可涉及確定獲取群組中的指令是條件性強(qiáng)加控制指令。然而,可能不可能快速確定剩余相關(guān)信息,例如塊大小。
參考執(zhí)行管線112的管線級(jí),在示范性方面中,可在來自i高速緩沖存儲(chǔ)器108的if管線級(jí)期間獲取高速緩沖存儲(chǔ)線102的四個(gè)半字或64個(gè)位。條件性強(qiáng)加控制指令的塊大小的檢測(cè)還可在此第一時(shí)鐘循環(huán)或if管線級(jí)中執(zhí)行(從上文來看,預(yù)解碼可揭示高速緩沖存儲(chǔ)線102中是否存在條件性強(qiáng)加控制指令)。在第二時(shí)鐘循環(huán)或id管線級(jí)中,可從高速緩沖存儲(chǔ)線102的64個(gè)位解碼至多四個(gè)16位指令。(或者,可將64個(gè)位解碼成包括兩個(gè)16位指令和一個(gè)32位指令的三個(gè)指令,或包括兩個(gè)32位指令的兩個(gè)指令)。相依性預(yù)測(cè)103和分支預(yù)測(cè)(例如在標(biāo)記為分支預(yù)測(cè)的框104中)可在此第二時(shí)鐘循環(huán)或id級(jí)中操作。然而,分支預(yù)測(cè)輸出107在id級(jí)中可能不具有充足的時(shí)間來考慮也在id級(jí)中計(jì)算的條件性或相依性預(yù)測(cè)。因此,將相依性預(yù)測(cè)103和分支預(yù)測(cè)104的結(jié)果管線化為第三時(shí)鐘循環(huán)或ex1級(jí)。可使考慮相依性預(yù)測(cè)103和分支預(yù)測(cè)104的結(jié)果的最終分支預(yù)測(cè)輸出107在此ex1級(jí)中可用。ex1級(jí)中的分支預(yù)測(cè)輸出107可揭示例如非條件性分支是否被不當(dāng)相依性預(yù)測(cè),且因此產(chǎn)生被預(yù)測(cè)為不采用的錯(cuò)誤后果。
因此,考慮特定情況,塊大?。?的16位條件性強(qiáng)加控制指令(例如“itt”指令)可存在于獲取群組的第一通道a內(nèi)??稍诘谝粫r(shí)鐘循環(huán)或if管線級(jí)中獲取所述獲取群組。由于塊大小可潛在地為三或高于三(即,形式ittt或itttt的條件性強(qiáng)加控制指令),因此通道a中的所述檢測(cè)到的16位條件性強(qiáng)加控制指令可潛在地橫跨整個(gè)獲取群組。換句話說,獲取群組的所有剩余通道b到d可潛在地為相依指令。因此,如果在獲取群組中檢測(cè)到條件性強(qiáng)加控制指令,那么有可能所述塊大小可橫跨整個(gè)獲取群組。處于同一獲取群組中的潛在相依指令(例如分支指令)可具有被正確地相依性預(yù)測(cè)或可被不當(dāng)?shù)叵嘁佬灶A(yù)測(cè)(或換句話說,被相依性誤預(yù)測(cè))。因此,在通道a中的上述it指令的情況下,雖然相依性預(yù)測(cè)針對(duì)通道b和c中的16位分支指令將為正確的,那么相依性預(yù)測(cè)針對(duì)通道d中的16位分支指令可為錯(cuò)誤的。
記住上述實(shí)例情況,以下規(guī)則可通常適用于在處理系統(tǒng)100中相依性預(yù)測(cè)指令是否為it指令的相依指令。如果考慮中的指令(例如第一指令)跟隨it指令,且處于與it指令相同的獲取群組中,那么相依性預(yù)測(cè)為第一指令是it指令的相依指令。
如果第一指令不在與it指令相同的獲取群組,那么相依性預(yù)測(cè)是基于如下的示范性參數(shù)。確定it指令的條件性塊中的相依指令的塊大小或數(shù)目。確定條件性塊中剩余的相依指令的數(shù)目,即不在與it指令相同的獲取群組中的剩余相依指令的數(shù)目。如果條件性塊中剩下的剩余相依指令的數(shù)目為一(1),那么前兩個(gè)通道,即通道a和b,被相依性預(yù)測(cè)以包含相依指令。第二兩個(gè)通道,即通道c和d,被相依性預(yù)測(cè)為不包含it指令的相依指令。如果條件性塊中剩余的剩余相依指令的數(shù)目為二(2)、三(3)或四(4),那么所有四個(gè)通道a到d被相依性預(yù)測(cè)為it指令的相依指令。如果獲取寬度大于四個(gè)通道,如在上述示范性情況下,那么上述一般規(guī)則適用于相依性預(yù)測(cè),其中針對(duì)it指令的條件性塊中的每一剩余相依指令,使用使被相依性預(yù)測(cè)為包含相依指令的通道的數(shù)目擴(kuò)大相依指令可占用的通道的最大數(shù)目的模式。舉例來說,在上述實(shí)例中,其中最大相依指令是32位指令,32位指令可占用的最大數(shù)目的通道是兩個(gè)通道。因此,被相依性預(yù)測(cè)為包含相依指令的通道的數(shù)目擴(kuò)大條件性塊中剩余的每一相依指令的兩個(gè)通道。
繼續(xù)參看圖1,為了在相依性預(yù)測(cè)103中實(shí)施上述規(guī)則,例如一旦確定條件性強(qiáng)加控制指令的塊大小,可實(shí)施計(jì)數(shù)器來跟蹤后續(xù)時(shí)鐘循環(huán)中的后續(xù)獲取群組中可存在的任何剩余相依指令。在一個(gè)方面中,此計(jì)數(shù)器可在執(zhí)行管線112的id級(jí)中實(shí)施。由于相依指令可屬于兩個(gè)或更多個(gè)獲取群體,因此相依指令可存在于其中檢測(cè)到條件性強(qiáng)加控制指令的時(shí)鐘循環(huán)之后的兩個(gè)或更多個(gè)后續(xù)時(shí)鐘循環(huán)中。因此,上述一般規(guī)則基于獲取群組中的剩余相依指令來提供相依性預(yù)測(cè)。
在另一說明性實(shí)例中,條件性強(qiáng)加控制指令是在第一時(shí)鐘循環(huán)中在第一獲取群組的通道d中出現(xiàn)的itttt指令。因此,itttt指令的條件性塊包含四個(gè)32位指令。在圖1的處理系統(tǒng)100中的兩個(gè)后續(xù)時(shí)鐘循環(huán)中將獲取四個(gè)32位相依指令。由于在通道d中的第一時(shí)鐘循環(huán)中獲取itttt指令,因此將通過第一時(shí)鐘循環(huán)的結(jié)束來確定塊大小。由于itttt指令處于通道d中,且指令的任何相依指令需要跟隨itttt指令,所以已知在第一時(shí)鐘循環(huán)中可能尚未獲取相依指令。因此,通過后續(xù)時(shí)鐘循環(huán)或第二時(shí)鐘循環(huán)的開始,將已知條件性塊中的剩余相依指令的數(shù)目為四,且尚未獲取所有四個(gè)剩余相依指令。另一方面,如果在通道c而不是通道d中獲取itttt指令,那么通道d中可存在至多一個(gè)相依指令。如果塊大小為四,且如果在通道d中獲取一個(gè)相依指令,那么計(jì)數(shù)器將在第二時(shí)鐘循環(huán)中使剩余相依指令的數(shù)目從四遞減到三。因此,在第二時(shí)鐘循環(huán)中所獲取的第二獲取群組中,將精確地知曉剩余塊大小或剩余相依指令的數(shù)目。
然而,剩余塊大小或剩余相依指令的數(shù)目的了解不足以知曉哪些指令或第二獲取群組中的通道a到d中的哪一者將包含相依指令,因?yàn)榕c指令管線、指令大小、模式、通道等有關(guān)的參數(shù)還將影響條件性塊的覆蓋度或范圍。因此,如果第二獲取群組中的剩余塊大小為三,那么相依指令可為三個(gè)32位指令,且因此,所述相依指令可橫跨第二獲取群組的全部64個(gè)位,即通道a到d,并且還橫跨第二獲取群組之后的第三獲取群組的32個(gè)位或通道a到b。如果相依指令是16位指令,那么其可僅橫跨第二獲取群組的前三個(gè)通道a到c。因此,針對(duì)第二獲取群組中的相依性預(yù)測(cè),用以評(píng)定指令是否為相依指令的參數(shù)可涉及最大可能橫跨(例如基于32位指令)。在一些方面,相依性預(yù)測(cè)103可基于實(shí)施下文的示范性表1的特征。
參看圖2a,表1提供出現(xiàn)在四個(gè)通道a到d中的所有可能指令的列表,其中通道a包含最老指令,且通道b到d包含連續(xù)較年輕的指令或跟隨最老指令的指令。16位指令表示為t16,而32位指令表示為t32。
在對(duì)第一指令的相依性預(yù)測(cè)的情況下,其中第一指令處于與其中檢測(cè)到條件性強(qiáng)加控制指令的一個(gè)獲取群組相同的獲取群組中,以下可能情形適用,參考圖2a的表1。參考行202,對(duì)于四個(gè)通道a到d中的每一者中的t16指令,產(chǎn)生24中情形,其中條件性強(qiáng)加控制指令可在通道a到c中的任一者中,且對(duì)應(yīng)的下一通道或較年輕的指令包含第一指令。參考行204,通道a到c包含t16指令,且通道d包含t32指令的第一半,其產(chǎn)生12種情形,其中通道a到b可包含條件性強(qiáng)加控制指令,且對(duì)應(yīng)的下一通道包含第一指令。通道d中的局部指令與第一指令的相依性預(yù)測(cè)無關(guān)。以類似方式,參看行206,通道a和b包含t16指令,且通道c和d分別包含t32第一半和t32第二半,其產(chǎn)生12種情形。在行208中,通道a包含t16指令,通道b和c分別包含t32第一半和t32第二半,且通道d包含t16指令,其產(chǎn)生12種情形。在行210中,通道a包含t16指令,通道b和c分別包含t32第一半和t32第二半,且通道d包含另一t32第一半,其產(chǎn)生4種情形。在行212中,通道a和b包含t32第一半和t32第二半,而通道c和d包含t16指令,從而產(chǎn)生12種情形。在行214中,通道a和b分別包含t32第一半和t32第二半,通道c包含t16指令,且通道d包含另一t32第一半,其產(chǎn)生4種情形。最后,在行216中,行a和b分別包含t32第一半和t32第二半,而行c和d分別包含另一t32第一半和t32第二半,從而產(chǎn)生4種情形。因此,總的來說,考慮行202到216,相依性預(yù)測(cè)涉及84種情形,其中第一指令處于與其中檢測(cè)到條件性強(qiáng)加控制指令的一個(gè)獲取群組相同的獲取群組。
在針對(duì)第一指令的相依性預(yù)測(cè)的情況下,其中第一指令不在與其中檢測(cè)到條件性強(qiáng)加控制指令的獲取群組相同的獲取群組中,即其中第一指令處于在其中檢測(cè)到條件性強(qiáng)加控制指令的一獲取群組之后的獲取群組中,以下可能情形適用,再次參考圖2a的表1。將理解,在圖2a中,唯一的假定是條件性強(qiáng)加控制指令不在與第一指令相同的獲取群組中,舉例來說,與獲取群組中的條件性強(qiáng)加控制指令在其自身的獲取群組中的位置。舉例來說,條件性強(qiáng)加控制指令可能已存在于第一獲取群組的任一通道中,這導(dǎo)致剩余相依指令包含將存在于或?qū)儆诘诙@取群組的第一指令。圖2a是指此第二獲取群組,其例如跟隨其中獲取條件性強(qiáng)加控制指令的第一獲取群組。
參考行202,對(duì)于四個(gè)通道a到d中的每一者中的t16指令,產(chǎn)生4種情形,其中第一指令可在通道a到d中的任一者中。參考行204,通道a到c包含t16指令,且通道d包含t32指令的第一半,其產(chǎn)生4種情形,其中第一指令可處于通道a到c的任一者中。以類似方式,參看行206,通道a和b包含t16指令,且通道c和d分別包含t32第一半和t32第二半,其產(chǎn)生12種情形。在行208中,通道a包含t16指令,通道b和c分別包含t32第一半和t32第二半,且通道d包含t16指令,其產(chǎn)生12種情形。在行210中,通道a包含t16指令,通道b和c分別包含t32第一半和t32第二半,且通道d包含另一t32第一半,其產(chǎn)生8種情形。在行212中,通道a和b包含t32第一半和t32第二半,而通道c和d包含t16指令,從而產(chǎn)生12種情形。在行214中,通道a和b分別包含t32第一半和t32第二半,通道c包含t16指令,且通道d包含另一t32第一半,其產(chǎn)生8種情形。最后,在行216中,行a和b分別包含t32第一半和t32第二半,而行c和d分別包含另一t32第一半和t32第二半,從而產(chǎn)生8種情形。因此,總的來說,考慮行202到216,相依性預(yù)測(cè)涉及88種情形,其中第一指令不在與其中檢測(cè)到條件性強(qiáng)加控制指令的一獲取群組相同的獲取群組。
雖然參考表1的的相依性預(yù)測(cè)中所涉及的可能情形的上述描述是窮盡性的,但圖2b提供包含上文所識(shí)別的情形中的選定情形的表2。在表2中,第一獲取群組包含條件性強(qiáng)加控制指令。同樣,無法在第一時(shí)鐘循環(huán)的開頭知曉條件性塊的塊大小或大小。第二獲取群組是在第二時(shí)鐘循環(huán)中獲取的后續(xù)獲取群組。剩余塊大小或剩余相依指令的數(shù)目在第二時(shí)鐘循環(huán)的開頭已知。與本發(fā)明不特定相關(guān)的指令已簡(jiǎn)單地指示不操作或nop,包含16位nop,“t16nop”,以及32位nop,“t32nop”。然而,這不是限制性,且t16nop和t32nop可分別為任何有效16位指令(t16)或32位指令(t32)。類似地,已將潛在相依指令描述為分支指令“b”,為了說明起見,16位分支指令表示為t16b,且32位分支指令表示為t32b。同樣,行為取決于條件性強(qiáng)加控制指令的其它種類的指令,例如上述添加指令,也可為相依指令。實(shí)例16位和32位指令已在表1中示出為對(duì)準(zhǔn)到四個(gè)上述通道a到d中的一或多者。在塊252到266中所示的情況中的每一者的最后一個(gè)列中示出分支指令b是被正確地還是不當(dāng)?shù)卦u(píng)定。
在塊252到254中,示出第一獲取群組,因?yàn)槠渑c第一時(shí)鐘循環(huán)有關(guān)。更具體地說,參考?jí)K252,在通道a中獲取條件性塊大小=3的條件性強(qiáng)加控制指令(例如itte或ittt)。然而,由于此為第一獲取群組,塊大小在第一時(shí)鐘循環(huán)的開頭是未知的。因此,通道d中的指令b被相依性預(yù)測(cè)為相依指令。此相依性預(yù)測(cè)是基于關(guān)于表2的上述情形中的一者,其中指令b處于與條件性強(qiáng)加控制指令相同的獲取群組中。指令b的相依性預(yù)測(cè)對(duì)于塊202來說是正確的,因?yàn)橥ǖ纃屬于itte或ittt指令的條件性塊內(nèi)。
在塊254中,在第一群組和第一時(shí)鐘循環(huán)中獲取塊大?。?的條件性強(qiáng)加控制指令(例如itt/ite)。同樣,由于塊大小在第一時(shí)鐘循環(huán)的開頭是未知的,因此通道d中的指令b以與塊252中類似的方式被相依性預(yù)測(cè)為相依指令。然而,在此情況下,相依性預(yù)測(cè)是錯(cuò)誤的。指令b被相依性誤預(yù)測(cè),因?yàn)橥ǖ繿中的itt/ite指令中的條件性塊大小二不應(yīng)包含其條件塊內(nèi)的通道d中的t16b。在此情況下,歸因于相依性誤預(yù)測(cè),示范性方面涉及減輕相依性誤預(yù)測(cè)懲罰。具體地說,減輕涉及允許分支指令b有條件地執(zhí)行,即使其實(shí)際上是非條件性指令。如先前所描述,此減輕技術(shù)涉及校正進(jìn)一步沿執(zhí)行管線112的不正確執(zhí)行,這將在下文進(jìn)一步論述。
參考?jí)K256到266,示出第二獲取群組。將已經(jīng)在先前時(shí)鐘循環(huán)中,在第一獲取群組中檢測(cè)到條件性強(qiáng)加控制指令。條件性強(qiáng)加控制指令的剩余相依指令的數(shù)目或剩余塊大小將已確定,且在第二時(shí)鐘循環(huán)的開頭可用。
具體地說,參考?jí)K256,剩余塊大?。?。這表示先前循環(huán)中的條件性塊延伸到所有四個(gè)通道a到d,由于基于指令是16位指令還是32位指令,塊大小4可橫跨從64個(gè)位到128個(gè)位的任何地方。因此,基于與指令大小和通道有關(guān)的上述參數(shù),通道d中的指令b將被相依性預(yù)測(cè)為相依指令。相依性預(yù)測(cè)將為正確的,因?yàn)橹噶頱(t16b)是16位指令,在此情況下,其實(shí)際上屬于條件性塊內(nèi)。
在塊258中,另一方面,剩余塊大?。?。同樣,條件性塊可潛在地包含所有四個(gè)通道a到d。然而,實(shí)際上,通道a到c中的每一者包含16位指令,其將耗盡條件塊,如圖所示。因此,對(duì)于與塊256中相同的參數(shù),作為相依指令的指令b的相依性預(yù)測(cè)在塊258中將不正確。同樣,此相依性誤預(yù)測(cè)導(dǎo)致誤預(yù)測(cè)懲罰,其通過下文進(jìn)一步論述的上述減輕技術(shù)來減輕。
參考?jí)K260,剩余塊大?。?。然而,同樣,如在塊256到258中,條件性塊可橫跨從通道a到d的整個(gè)第二獲取群組,因?yàn)楂@取群組中可存在兩個(gè)32位指令。作為相依指令的相依性預(yù)測(cè)指令b可基于與上述指令大小和通道有關(guān)的參數(shù)。由于指令b實(shí)際上為跟隨另一32位指令的跨越通道c到d的32位指令(t32b),因此在此情況下,指令b指令b的相依性預(yù)測(cè)是正確的。
在塊262中,同樣剩余塊大?。?。因此,同樣,關(guān)于延伸到整個(gè)第二獲取群組的條件性塊,與塊256到260中相同的參數(shù)適用。然而,在此情況下,指令不是32位指令。通道d中的指令b(t16b)并不屬于條件塊內(nèi),因?yàn)樗鰲l件塊將被包括16位指令的通道到b耗盡。因此,在此情況下,作為相依指令的指令b的相依性預(yù)測(cè)將是不正確的。同樣,此相依性誤預(yù)測(cè)導(dǎo)致誤預(yù)測(cè)懲罰,其通過下文進(jìn)一步論述的上述減輕技術(shù)來減輕。
在塊264中,剩余塊大?。?。不管條件塊橫跨一個(gè)16位指令還是一個(gè)32位指令,條件性塊將在第二獲取群組的前兩個(gè)通道a到b內(nèi)耗盡。因此,與條件塊的范圍有關(guān)的參數(shù)假定條件性塊無法涵蓋通道c到d,且因此,通道d中的指令t16b將已知為非條件性的,或不是相依指令。因此,指令b將被正確地相依性預(yù)測(cè)為不是相依指令。
在塊266中,剩余塊大?。?。同樣,使用與塊264中相同的與延伸到通道a和b的條件塊的范圍有關(guān)的參數(shù)。然而,如所說明,所述條件塊被通道a中的一個(gè)16位指令耗盡。因此,作為相依指令的指令b(t16b)的相依性預(yù)測(cè)將是不正確的。同樣,此相依性誤預(yù)測(cè)導(dǎo)致誤預(yù)測(cè)懲罰,其通過下文進(jìn)一步論述的上述減輕技術(shù)來減輕。
因此,基于條件性強(qiáng)加控制指令的上述特性以及與指令大小和通道位置有關(guān)的參數(shù),潛在指令的相依性預(yù)測(cè)可由相依性預(yù)測(cè)103正確地或不當(dāng)?shù)貓?zhí)行。在這些潛在相依指令為分支指令的情況下,將提供以下闡釋,重新提到圖1。更具體地說,將針對(duì)根據(jù)圖2a到b的表1和2來進(jìn)行相依性預(yù)測(cè)的分支指令的相依性預(yù)測(cè)來論述圖1的剩余邏輯塊,包含分支預(yù)測(cè)104、bht106和更新邏輯114。
繼續(xù)參看圖1,處理器110包含分支預(yù)測(cè)104以及動(dòng)態(tài)分支預(yù)測(cè)跟蹤機(jī)制,分支歷史表(bht)106。舉例來說,bht106可包括遍歷或已遍歷通過執(zhí)行管線112的條件性分支指令的行為歷史。bht106可補(bǔ)充有從分支預(yù)測(cè)104導(dǎo)出的條件性分支指令的動(dòng)態(tài)預(yù)測(cè)的提示。
分支預(yù)測(cè)104可接收存儲(chǔ)在高速緩沖存儲(chǔ)線102中的指令的地址或程序計(jì)數(shù)器(pc)值。這些指令可包含真實(shí)條件性分支指令,即行為不是以情況而定的或取決于條件性強(qiáng)加控制指令的分支指令。真實(shí)條件性分支指令的條件性在指令本身內(nèi)存在,且并不具有其從例如條件性強(qiáng)加控制指令的另一指令強(qiáng)加或?qū)С龅臈l件性。分支預(yù)測(cè)104還可從相依性預(yù)測(cè)103接收已經(jīng)被相依性預(yù)測(cè)為相依分支指令的分支指令的地址。分支預(yù)測(cè)104可包含最近被執(zhí)行的分支指令(包含真實(shí)分支指令和經(jīng)相依性預(yù)測(cè)的分支指令)的全局歷史。舉例來說,全局歷史與任一類型的分支指令的對(duì)應(yīng)地址散列,以索引到bht106中,以便讀出2位飽和計(jì)數(shù)器值。2位飽和計(jì)數(shù)器用于通過基于連續(xù)預(yù)測(cè)的正確性,遍歷通過以下四個(gè)狀態(tài)來訓(xùn)練分支預(yù)測(cè):強(qiáng)預(yù)測(cè)為不采用、弱預(yù)測(cè)為不采用,弱預(yù)測(cè)為采用,以及強(qiáng)預(yù)測(cè)為采用。舉例來說,通過對(duì)pc值和預(yù)測(cè)狀態(tài)實(shí)施散列或xor功能的邏輯來執(zhí)行散列和編索引。之后,存儲(chǔ)在bht106的經(jīng)編索引的位置中的值可讀出為分支預(yù)測(cè)輸出107,其表示接收到的分支指令的經(jīng)預(yù)測(cè)評(píng)估。在一個(gè)示范性方面中,分支預(yù)測(cè)輸出107可在指令管線112的ex1級(jí)中可用。將回憶起來,被相依性預(yù)測(cè)103相依性預(yù)測(cè)為相依指令的所述分支指令中的一些實(shí)際上可為已經(jīng)被相依性誤預(yù)測(cè)的非條件性分支指令。
包含真實(shí)條件性分支指令和經(jīng)相依性預(yù)測(cè)的分支指令(包含經(jīng)相依性誤預(yù)測(cè)的那些指令)的所有接收到的分支指令在下文將被稱作經(jīng)方向預(yù)測(cè)的分支指令。術(shù)語“方向預(yù)測(cè)”、“經(jīng)方向預(yù)測(cè)的”、“正方向預(yù)測(cè)”等是指分支指令的“方向”的預(yù)測(cè),且區(qū)別于“相依性”或“相依性預(yù)測(cè)”的預(yù)測(cè),如先前所描述。
分支預(yù)測(cè)輸出107可為到執(zhí)行管線112的輸入。使用分支預(yù)測(cè)輸出107,可將經(jīng)方向預(yù)測(cè)的分支指令的方向設(shè)定為采用/不采用,且可基于已設(shè)定的方向來推測(cè)地執(zhí)行經(jīng)方向預(yù)測(cè)的分支指令。一旦獲得經(jīng)方向預(yù)測(cè)的分支指令的實(shí)際評(píng)估,在遍歷執(zhí)行管線112的各個(gè)級(jí)(例如ex1、ex2等)之后,可從執(zhí)行管線112輸出所述評(píng)估作為評(píng)估113。可提供更新邏輯114來接受評(píng)估113作為一個(gè)輸入以及分支預(yù)測(cè)輸出107作為另一輸入來看預(yù)測(cè)和實(shí)際評(píng)估是否匹配。如果存在失配,那么經(jīng)方向預(yù)測(cè)的分支指令將已被誤預(yù)測(cè)。在經(jīng)方向預(yù)測(cè)的分支指令的推測(cè)性執(zhí)行之后推測(cè)地執(zhí)行的任何指令將在管線級(jí)wb中被沖洗且被阻止寫回或提交。此外,還可跟蹤已被方向誤預(yù)測(cè)的任何非條件性分支指令,因?yàn)檫@些將對(duì)應(yīng)于被相依性誤預(yù)測(cè)的分支指令。更新邏輯114可將經(jīng)更新的預(yù)測(cè)115發(fā)出到分支預(yù)測(cè)104和bht106,以更新分支指令的預(yù)測(cè)/歷史。
倘若考慮中的指令是非分支指令,如先前所提到,那么可在一些方面中實(shí)施條件性歷史表(圖1中未示出)??捎妙愃朴赽ht106的邏輯來實(shí)施條件性歷史表,且其可用以使用更新邏輯114來更新非分支指令的評(píng)估。本發(fā)明中將避免關(guān)于非分支指令的窮盡性的細(xì)節(jié),因?yàn)樗鶎兕I(lǐng)域的技術(shù)人員將能夠?qū)㈥P(guān)于分支指令的示范性方面的論述延伸到指令不是分支指令的情況。
現(xiàn)在將針對(duì)相依性誤預(yù)測(cè)對(duì)非條件性分支指令發(fā)生的情況論述前述減輕技術(shù)。在這點(diǎn)上,將用在相依性預(yù)測(cè)103被不當(dāng)相依性誤預(yù)測(cè)的非條件分支指令的方向誤預(yù)測(cè)來更新bht106。因此,bht106將形成關(guān)于這些經(jīng)方向誤預(yù)測(cè)的非條件分支指令的正確行為的歷史或訓(xùn)練。舉例來說,前述2位飽和計(jì)數(shù)器將朝經(jīng)方向誤預(yù)測(cè)的非條件性分支指令的下一次出現(xiàn)的弱預(yù)測(cè)采用狀態(tài)訓(xùn)練。對(duì)于經(jīng)相同方向誤預(yù)測(cè)的非條件分支的后續(xù)出現(xiàn),2位飽和計(jì)數(shù)器將在強(qiáng)預(yù)測(cè)采用狀態(tài)下飽和。因此,對(duì)于在相依性預(yù)測(cè)103中被不當(dāng)相依性誤預(yù)測(cè)且發(fā)送到分支預(yù)測(cè)104和bht106以獲得分支預(yù)測(cè)輸出107的后續(xù)經(jīng)方向誤預(yù)測(cè)的非條件分支指令,可獲得正確的方向預(yù)測(cè)(即,非條件性分支指令將被正確地方向預(yù)測(cè)為采用)。以此方式,可在示范性方面中實(shí)現(xiàn)相依性誤預(yù)測(cè)懲罰的減輕。
類似地,對(duì)于經(jīng)相依性誤預(yù)測(cè)的非分支指令,更新和訓(xùn)練條件性歷史表(未圖示)可用于減輕相關(guān)聯(lián)的相依性誤預(yù)測(cè)懲罰。
將了解,方面包含用于執(zhí)行本文中所揭示的過程、功能和/或算法的各種方法。舉例來說,如圖3中所示,方面可包含執(zhí)行處理器(例如處理器110)的指令管線(例如指令管線112)中的指令的方法(300),所述方法包括:檢測(cè)條件性強(qiáng)加控制指令(例如檢測(cè)圖2的塊202的通道a中的itte指令;使用例如邏輯塊,圖1的相依性預(yù)測(cè)103),其對(duì)一或多個(gè)相依指令的條件性塊大小數(shù)目強(qiáng)加相依行為(例如圖2的塊202的通道b、c和d中的三個(gè)相依指令;使用例如邏輯塊,圖1的相依性預(yù)測(cè)103)-框302;在執(zhí)行第一指令之前,基于所述條件性塊大小以及指令管線的一個(gè)或多個(gè)參數(shù)(例如包含以下各項(xiàng)的參數(shù):經(jīng)獲取以在執(zhí)行管線112的循環(huán)中執(zhí)行的獲取群組中的指令位的最大數(shù)目、處理器110所支持的指令大小等;使用例如圖1的相依性預(yù)測(cè)103),來相依性預(yù)測(cè)第一指令是條件性強(qiáng)加控制指令的相依指令(例如使用圖1的相依性預(yù)測(cè)103)-框304;基于所述相依性預(yù)測(cè)來執(zhí)行第一指令(例如在圖1的管線112中,在其中第一指令是分支指令的情況下,基于相依性預(yù)測(cè)103、分支預(yù)測(cè)104和分支歷史表106)-框306;以及當(dāng)?shù)谝恢噶畋幌嘁佬哉`預(yù)測(cè)時(shí),減輕與相依性誤預(yù)測(cè)相關(guān)聯(lián)的懲罰(例如通過訓(xùn)練圖1的分支預(yù)測(cè)104、分支歷史表106和執(zhí)行管線112)-框308。
現(xiàn)參看圖4,描繪根據(jù)示范性方面配置的無線裝置的框圖,并將其大體上表示為400。無線裝置400包含圖1的處理器110,包括塊相依性預(yù)測(cè)103、分支預(yù)測(cè)104、分支歷史表106、執(zhí)行管線112和更新邏輯114,如上文所論述。處理器110可與存儲(chǔ)器410通信。i高速緩沖存儲(chǔ)器108在此視圖中未明確示出,但可為處理器110的一部分,或可為耦合在處理器110與存儲(chǔ)器410之間的單獨(dú)塊,如此項(xiàng)技術(shù)中已知。
圖4還示出耦合到處理器110且耦合到顯示器428的顯示器控制器426。譯碼器/解碼器(編碼解碼器)434(例如,音頻和/或話音編碼解碼器)可耦合到處理器110。還說明例如無線控制器440(其可包含調(diào)制解調(diào)器)等其它組件。揚(yáng)聲器436和麥克風(fēng)438可耦合到編碼解碼器434。圖4還指示無線控制器440可耦合到無線天線442。在特定方面,處理器110、顯示器控制器426、存儲(chǔ)器410、編碼解碼器434和無線控制器440包含在系統(tǒng)級(jí)封裝或系統(tǒng)單芯片裝置422中。
在特定方面中,輸入裝置430和電源444耦合到芯片上系統(tǒng)裝置422。此外,在特定方面,如圖4中所示,顯示器428、輸入裝置430、揚(yáng)聲器436、麥克風(fēng)438、無線天線442和電源444在芯片上系統(tǒng)裝置422外部。然而,顯示器428、輸入裝置430、揚(yáng)聲器436、麥克風(fēng)438、無線天線442和電源444中的每一者可耦合到芯片上系統(tǒng)裝置422的組件,例如接口或控制器。
應(yīng)注意,盡管圖4描繪無線通信裝置,但處理器110和存儲(chǔ)器410也可集成到機(jī)頂盒、音樂播放器、視頻播放器、娛樂單元、導(dǎo)航裝置、個(gè)人數(shù)字助理(pda)、固定位置數(shù)據(jù)單元、計(jì)算機(jī)、膝上型計(jì)算機(jī)、平板計(jì)算機(jī)、移動(dòng)電話或其它類似裝置中。
所屬領(lǐng)域的技術(shù)人員將了解,可使用多種不同技術(shù)和技法中的任一者來表示信息和信號(hào)。舉例來說,可通過電壓、電流、電磁波、磁場(chǎng)或磁粒子、光場(chǎng)或光粒子或其任何組合來表示在整個(gè)上文描述中可能參考的數(shù)據(jù)、指令、命令、信息、信號(hào)、位、符號(hào)和碼片。
另外,所屬領(lǐng)域的技術(shù)人員將了解,結(jié)合本文所揭示的方面而描述的各種說明性邏輯塊、模塊、電路和算法步驟可實(shí)施為電子硬件、計(jì)算機(jī)軟件或兩者的組合。為清晰地說明硬件與軟件的這種可互換性,上文已大體就其功能性來描述了各種說明性組件、塊、模塊、電路和步驟。此功能性是實(shí)施為硬件還是軟件取決于特定應(yīng)用以及強(qiáng)加于整個(gè)系統(tǒng)的設(shè)計(jì)約束。熟練的技術(shù)人員可針對(duì)每一特定應(yīng)用以不同方式來實(shí)施所描述的功能性,但這樣的實(shí)施方案決策不應(yīng)被解釋為會(huì)引起脫離本發(fā)明的范圍。
結(jié)合本文中所揭示的方面描述的方法、序列和/或算法可直接用硬件、用由處理器執(zhí)行的軟件模塊或用這兩者的組合來實(shí)施。軟件模塊可駐留在ram存儲(chǔ)器、快閃存儲(chǔ)器、rom存儲(chǔ)器、eprom存儲(chǔ)器、eeprom存儲(chǔ)器、寄存器、硬盤、可裝卸磁盤、cd-rom,或此項(xiàng)技術(shù)中已知的任何其它形式的存儲(chǔ)媒體中。示范性存儲(chǔ)媒體耦合到處理器,使得處理器可從存儲(chǔ)媒體讀取信息并且將信息寫入到存儲(chǔ)媒體。在替代方案中,存儲(chǔ)媒體可與處理器成一體式。
因此,本發(fā)明的一方面可包含一種體現(xiàn)用于非條件性分支的經(jīng)加速預(yù)測(cè)的方法的計(jì)算機(jī)可讀媒體。因此,本發(fā)明不限于所說明的實(shí)例,且任何用于執(zhí)行本文中所描述的功能性的裝置包含于本發(fā)明的方面中。
雖然前述揭示內(nèi)容示出本發(fā)明的說明性方面,但應(yīng)注意,在不脫離如所附權(quán)利要求書界定的本發(fā)明的范圍的情況下,可在其中做出各種改變和修改。無需以任何特定次序來執(zhí)行根據(jù)本文中所述的本發(fā)明的方面的方法權(quán)利要求的功能、步驟和/或動(dòng)作。此外,盡管可能以單數(shù)形式描述或主張本發(fā)明的元件,但除非明確陳述限于單數(shù)形式,否則也涵蓋復(fù)數(shù)形式。