專利名稱:用于低復(fù)雜性指令預(yù)取系統(tǒng)的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明大體上涉及指令高速緩沖存儲(chǔ)器的領(lǐng)域,且更具體來說,涉及在指令高速緩沖存儲(chǔ)器中有未命中時(shí)的指令預(yù)取。
背景技術(shù):
許多便攜式產(chǎn)品(例如,手機(jī)、膝上型計(jì)算機(jī)、個(gè)人數(shù)據(jù)助理(PDA)等)利用執(zhí)行程序(例如,通信和多媒體程序)的處理器。用于此些產(chǎn)品的處理系統(tǒng)包括用于存儲(chǔ)指令和數(shù)據(jù)的處理器與存儲(chǔ)器復(fù)合體。與處理器循環(huán)時(shí)間相比,大容量主存儲(chǔ)器通常具有較慢的存取時(shí)間。因此,常規(guī)上基于高速緩沖存儲(chǔ)器的容量和性能來按層級(jí)組織存儲(chǔ)器復(fù)合體,其中最高性能和最低容量的高速緩沖存儲(chǔ)器位于最接近于處理器處。舉例來說,I級(jí)指令高速緩沖存儲(chǔ)器和I級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器將一般直接附接到處理器。而2級(jí)統(tǒng)一高速緩沖存儲(chǔ)器連接到I級(jí)(LI)指令和數(shù)據(jù)高速緩沖存儲(chǔ)器。另外,系統(tǒng)存儲(chǔ)器連接到2級(jí)(L2)統(tǒng)一高速緩沖存儲(chǔ)器。I級(jí)指令高速緩沖存儲(chǔ)器通常以處理器速度來操作,且2級(jí)統(tǒng)一高速緩沖存儲(chǔ)器比I級(jí)高速緩沖存儲(chǔ)器操作得慢,但具有比系統(tǒng)存儲(chǔ)器的存取時(shí)間快的存取時(shí)間。替代性存儲(chǔ)器組織除了 LI和L2高速緩沖存儲(chǔ)器外大量存在(例如)具有3級(jí)高速緩沖存儲(chǔ)器的存儲(chǔ)器層級(jí)。另一個(gè)存儲(chǔ)器組織可僅使用I級(jí)高速緩沖存儲(chǔ)器和系統(tǒng)存儲(chǔ)器。為何可使用指令高速緩沖存儲(chǔ)器的存儲(chǔ)器層級(jí)背后的原理之一為傾向于從存儲(chǔ)器中的循序位置來存取指令。通過通過使高速緩沖存儲(chǔ)器保存最近所使用的代碼段,處理器可以較高性能水平執(zhí)行。由于程序還含有分支、調(diào)用和返回類型的指令,且支持其它非循序操作(例如,中斷),所以可僅針對(duì)相當(dāng)短的代碼段維持循序位置的原理。歸因于此些非循序操作,對(duì)指令高速緩沖存儲(chǔ)器的指令獲取可未命中,使得將指令取響應(yīng)用于在較高存儲(chǔ)器容量和較慢存取時(shí)間下操作的下一較高級(jí)存儲(chǔ)器。未命中可使處理器中止以等待指令。為了使處理器性能保持較高,高速緩沖存儲(chǔ)器未命中率應(yīng)為低。指令高速緩沖存儲(chǔ)器通常由位于指令高速緩沖存儲(chǔ)器中的單個(gè)地址處的多個(gè)指令構(gòu)成。此多個(gè)指令通常被稱為高速緩沖存儲(chǔ)器線或簡(jiǎn)稱為線。未命中可發(fā)生于高速緩沖存儲(chǔ)器線中任何地方的指令存取時(shí)。當(dāng)未命中發(fā)生時(shí),不再僅獲取所需指令,而是還可獲取高速緩沖存儲(chǔ)器線的剩余部分,即,從所未命中指令到高速緩沖存儲(chǔ)器線的末端。在一些系統(tǒng)中,將此種預(yù)取技術(shù)進(jìn)一步擴(kuò)展到在未命中時(shí)總是預(yù)取高速緩沖存儲(chǔ)器線的剩余部分和下一個(gè)高速緩沖存儲(chǔ)器線。此種總是預(yù)取下一個(gè)高速緩沖存儲(chǔ)器線的常規(guī)技術(shù)是基于下一個(gè)高速緩沖存儲(chǔ)器線含有不久將需要的指令的假定。對(duì)使用下一個(gè)高速緩沖存儲(chǔ)器線中的指令的此設(shè)想保持有效,即使是(例如)在所述線中遇到條件分支且條件致使所述分支流淪為下一個(gè)循序指令。通過一直預(yù)取下一個(gè)高速緩沖存儲(chǔ)器線,可減少未命中。
當(dāng)然,在程序中的某點(diǎn)處,對(duì)指令的循序存取的位置原理失敗,且未命中確實(shí)歸因于由分支、調(diào)用和返回等引起的非循序操作而發(fā)生。舉例來說,當(dāng)在高速緩沖存儲(chǔ)器線的末端處獲取指令,且下一個(gè)循序指令(其應(yīng)駐存在下一個(gè)循序指令高速緩沖存儲(chǔ)器線中)不駐存在高速緩沖存儲(chǔ)器中時(shí),還可發(fā)生歸因于循序存取的未命中。舉例來說,當(dāng)遇到分支指令且所述分支使程序地址改變?yōu)樾碌奈恢们倚挛恢锰幍闹噶畈获v存在高速緩沖存儲(chǔ)器中時(shí),可發(fā)生歸因于非循序存取的未命中。一直預(yù)取下一個(gè)高速緩沖存儲(chǔ)器線的常規(guī)技術(shù)獲取可能會(huì)不使用的指令且因此引起存儲(chǔ)器存取帶寬的不必要損失、增加的功率使用和較低處理器性能。
發(fā)明內(nèi)容
本發(fā)明認(rèn)識(shí)到,當(dāng)未命中發(fā)生時(shí),需要減少未命中率、存儲(chǔ)器存取帶寬和功率使用的預(yù)取技術(shù)。本發(fā)明的一個(gè)實(shí)施例提供一種用于指令預(yù)取的方法。當(dāng)未命中發(fā)生時(shí),接收在指令高速緩沖存儲(chǔ)器中未命中獲取地址的通知。確定引起未命中的獲取地址屬性,且基于所述屬性,預(yù)取指令線。
·
本發(fā)明的另一個(gè)實(shí)施例針對(duì)指令高速緩沖存儲(chǔ)器和預(yù)取系統(tǒng)。指令高速緩沖存儲(chǔ)器經(jīng)配置以產(chǎn)生未命中獲取地址的通知。預(yù)取決策邏輯經(jīng)配置以確定引起未命中的獲取地址屬性,且預(yù)取邏輯經(jīng)配置以基于所述屬性來預(yù)取指令線。本發(fā)明的另一個(gè)實(shí)施例針對(duì)一種存儲(chǔ)器系統(tǒng)。所述存儲(chǔ)器系統(tǒng)使用經(jīng)配置以產(chǎn)生未命中獲取地址的通知的指令高速緩沖存儲(chǔ)器。預(yù)取決策邏輯經(jīng)配置以確定引起未命中的獲取地址屬性且基于未命中的獲取地址和所述屬性來產(chǎn)生未命中信息。系統(tǒng)存儲(chǔ)器層級(jí)經(jīng)配置以用與所未命中獲取地址相關(guān)聯(lián)的指令來響應(yīng)于所述未命中信息。本發(fā)明的另一個(gè)實(shí)施例針對(duì)一種用于指令預(yù)取的方法,其包含接收獲取地址在指令高速緩沖存儲(chǔ)器中未命中的通知;以及確定引起所述未命中的所述獲取地址的屬性;其特征在于還包括當(dāng)所述屬性指示下列中的一個(gè)或者多個(gè)時(shí),將與所述獲取地址相關(guān)聯(lián)的下一連續(xù)指令線預(yù)取入所述指令高速緩沖存儲(chǔ)器中所述獲取地址為非循序操作的目標(biāo)地址;所述獲取地址為非循序操作的目標(biāo)地址并且所述目標(biāo)地址為進(jìn)入高速緩沖存儲(chǔ)器線中大于或等于閾值X%的地址;以及所述獲取地址為所述指令高速緩沖存儲(chǔ)器中的偶地址。本發(fā)明的另一個(gè)實(shí)施例針對(duì)一種用于指令預(yù)取的設(shè)備,其包含用于接收獲取地址在指令高速緩沖存儲(chǔ)器中未命中的通知的裝置;用于確定引起所述未命中的所述獲取地址的屬性的裝置;以及其特征在于還包括用于在所述屬性指示下列中的一個(gè)或者多個(gè)時(shí),將與所述獲取地址相關(guān)聯(lián)的下一連續(xù)指令線預(yù)取入所述指令高速緩沖存儲(chǔ)器中的裝置所述獲取地址為非循序操作的目標(biāo)地址;所述獲取地址為非循序操作的目標(biāo)地址并且所述目標(biāo)地址為進(jìn)入高速緩沖存儲(chǔ)器線中大于或等于閾值x%的地址;以及所述獲取地址為所述指令高速緩沖存儲(chǔ)器中的偶地址。應(yīng)理解,通過以下詳細(xì)描述,所屬領(lǐng)域的技術(shù)人員將容易明白本發(fā)明的其它實(shí)施例,其中以說明的方式來展示并描述本發(fā)明的各個(gè)實(shí)施例。如將認(rèn)識(shí)到的,本發(fā)明能夠具有其它且不同的實(shí)施例,且其若干細(xì)節(jié)能夠在各個(gè)其它方面受到修改,所述其它且不同實(shí)施例和對(duì)其的修改均不脫離本發(fā)明。因此,圖式和詳細(xì)描述將被視為本質(zhì)上為說明性的而非限制性的。
圖I說明無線通信系統(tǒng);圖2為處理器與存儲(chǔ)器復(fù)合體的功能框圖,其中可基于對(duì)存儲(chǔ)器有效操作的試探來調(diào)適對(duì)指令高速緩沖存儲(chǔ)器線的預(yù)取;和圖3為展示低復(fù)雜性預(yù)取過程的流程圖。
具體實(shí)施例方式在下文結(jié)合附圖陳述的詳細(xì)描述意欲作為對(duì)本發(fā)明的各種示范性實(shí)施例的描述且不意欲表示可實(shí)踐本發(fā)明的唯一實(shí)施例。所述詳細(xì)描述包括特定細(xì)節(jié)以便達(dá)成提供對(duì)本發(fā)明的徹底理解的目的。然而,所屬領(lǐng)域的技術(shù)人員將明白,可在無這些特定細(xì)節(jié)的情況下實(shí)踐本發(fā)明。在一些情況下,以框圖形式來展示眾所周知的結(jié)構(gòu)和組件以便避免混淆本發(fā)明的概念。 圖I說明示范性無線通信系統(tǒng)100,其中,可有利地采用本發(fā)明的實(shí)施例。出于說明的目的,圖I展示三個(gè)遠(yuǎn)程單元120、130和150和兩個(gè)基站140。將認(rèn)識(shí)到,典型無線通信系統(tǒng)可具有許多更多遠(yuǎn)程單元和基站。遠(yuǎn)程單元120、130和150包括分別由組件125A、125C和125B表示的硬件組件、軟件組件或其兩者,如下文中進(jìn)一步所論述,其已被調(diào)適以實(shí)施本發(fā)明。圖I展示從基站140到遠(yuǎn)程單元120、130和150的前向鏈路信號(hào)180和從遠(yuǎn)程單元120、130和150到基站140的反向鏈路信號(hào)190。在圖I中,將遠(yuǎn)程單元120展示為移動(dòng)電話,將遠(yuǎn)程單元130展示為便攜式計(jì)算機(jī),和將遠(yuǎn)程單元150展示為無線本地回路系統(tǒng)中的固定位置遠(yuǎn)程單元。舉例來說,所述遠(yuǎn)程單元可或者為手機(jī)、尋呼機(jī)、對(duì)講機(jī)、手持式個(gè)人通信系統(tǒng)(PCS)單元、例如個(gè)人數(shù)據(jù)助理的便攜式數(shù)據(jù)單元,或例如儀表讀取裝備的固定位置數(shù)據(jù)單元。雖然圖I說明根據(jù)本發(fā)明的教示的示范性遠(yuǎn)程單元,但本發(fā)明不限于這些示范性的所說明單元。本發(fā)明可適于用在具有帶有指令高速緩沖存儲(chǔ)器和系統(tǒng)存儲(chǔ)器的處理器的任何裝置中。圖2為處理器與存儲(chǔ)器復(fù)合體200的功能框圖,其中可基于對(duì)存儲(chǔ)器有效操作的試探來調(diào)適對(duì)指令高速緩沖存儲(chǔ)器線的預(yù)取。處理器與存儲(chǔ)器復(fù)合體200包括處理器202 ;直接映射I級(jí)(LI)指令高速緩沖存儲(chǔ)器(Icache) 203,其包含LI Icache線陣列204和LlIcache控制單元206 ;和系統(tǒng)存儲(chǔ)器層級(jí)208。如可用在各種類型的高速緩沖存儲(chǔ)器(例如,組相關(guān)聯(lián)高速緩沖存儲(chǔ)器)中,LlIcache控制單元206可包括預(yù)取邏輯和用于指令標(biāo)簽匹配的指令內(nèi)容可尋址存儲(chǔ)器。出于論述清楚起見,不展示可連接到處理器復(fù)合體的外圍裝置。處理器與存儲(chǔ)器復(fù)合體200可適于用在用于執(zhí)行存儲(chǔ)于Lllcache203和系統(tǒng)存儲(chǔ)器層級(jí)208中的程序代碼的組件125A到125C中。LlIcache線陣列204可包括多個(gè)線,例如高速緩沖存儲(chǔ)器線210和211。每一線分別由多個(gè)指令(10、11、……、17)212到219組成。標(biāo)簽220和線狀態(tài)(LS) 221 (例如,有效位)與每一線相關(guān)聯(lián)。高速緩沖存儲(chǔ)器線210和211分別駐存在LI Icache線陣列204中的線地址222和223處。LlIcache控制單元206含有對(duì)經(jīng)由指令地址(IA)接口 225接收到的IA224作出響應(yīng)的地址控制邏輯以存取高速緩沖存儲(chǔ)器線。IA 224可由標(biāo)簽226、線地址228、指令“I”字段232和字節(jié)“B”字段234組成。線地址228由“l(fā)ine+”字段229和偶數(shù)“E”位230組成。為了獲取在處理器與存儲(chǔ)器復(fù)合體200中的指令,處理器202產(chǎn)生待獲取的所要指令的指令地址(IA) 224且將獲取地址發(fā)送到LlIcache控制單元206。基于接收到的IA224,LlIcache控制單元206查看所述指令是否存在于LlIcache線陣列204中。舉例來說,通過使用比較邏輯來完成此檢查,所述比較邏輯檢查由IA224所選的線210中的匹配標(biāo)簽236。還通過驗(yàn)證線狀態(tài)位(LS) 221 (例如,有效位238)來做出關(guān)于線是否含有有效指令的確定。當(dāng)存在所述指令時(shí),匹配或命中發(fā)生,且LlIcache控制單元206指示所述指令存在于Lllcache203中。如果所述指令不存在,那么將不發(fā)現(xiàn)匹配或未命中,且LlIcache控制單元206提供所述指令不存在于Icache203中的未命中指示。如果所述指令存在,那么從LlIcache線陣列204選擇在指令獲取地址處的指令。接著在指令輸出總線240上將所述指令發(fā)送到處理器202。如果所述指令不存在于指令高速緩沖存儲(chǔ)器中,那么經(jīng)由未命中信號(hào)路徑242將指示未命中已發(fā)生的未命中信息提供給系統(tǒng)存儲(chǔ)器層級(jí)208。在I級(jí)Icache203中檢測(cè)到未命中后,處理器與存儲(chǔ)器復(fù)合體200試圖獲取所要指令,且如在下文更詳細(xì)地描述,可從系·統(tǒng)存儲(chǔ)器的較高級(jí)預(yù)取額外指令。舉例來說,可從位于系統(tǒng)存儲(chǔ)器層級(jí)208中的2級(jí)(L2)統(tǒng)一高速緩沖存儲(chǔ)器來預(yù)取指令。在存儲(chǔ)器數(shù)據(jù)總線接口 244上從系統(tǒng)存儲(chǔ)器層級(jí)208提供歸因于所述未命中的所要指令和任何預(yù)取的指令。當(dāng)未命中發(fā)生時(shí),可確定引起未命中的與獲取地址相關(guān)聯(lián)的一個(gè)或一個(gè)以上屬性。舉例來說,可將獲取地址歸類為循序存取或非循序存取的目標(biāo)。舉例來說,可根據(jù)地址是否有大于X%進(jìn)入高速緩沖存儲(chǔ)器線中來對(duì)獲取地址作進(jìn)一步歸類。還可基于獲取地址在指令高速緩沖存儲(chǔ)器中是否為偶地址來對(duì)獲取地址進(jìn)行歸類。這些和其它歸類界定可以試探形式組合以智能地確定何時(shí)進(jìn)行預(yù)取的屬性。通過智能地預(yù)取,可節(jié)省功率,可改進(jìn)存儲(chǔ)器帶寬,可減少未命中率,且通常可改進(jìn)處理器和系統(tǒng)性能??蓮墨@取地址動(dòng)態(tài)地確定引起未命中的與獲取地址相關(guān)聯(lián)的屬性。舉例來說,通過監(jiān)視獲取地址,可確定循序獲取地址或非循序獲取地址?;讷@取地址和高速緩沖存儲(chǔ)器線長(zhǎng)度,可動(dòng)態(tài)地確定在高速緩沖存儲(chǔ)器線中的存取位置。舉例來說,當(dāng)所確定位置的比較等于或超過X%閾值時(shí),此屬性為相關(guān)的。而且,基于獲取地址和高速緩沖存儲(chǔ)器線長(zhǎng)度,可使用獲取地址中的位來確定是對(duì)偶數(shù)高速緩沖存儲(chǔ)器線還是奇數(shù)高速緩沖存儲(chǔ)器線進(jìn)行存取。在下文更詳細(xì)地描述這些屬性。在一個(gè)實(shí)施例中,在指令高速緩沖存儲(chǔ)器中有未命中時(shí),如果未命中屬性中的一者或一者以上為相關(guān)的,那么預(yù)取來自存儲(chǔ)器層級(jí)的下一級(jí)的下一連續(xù)高速緩沖存儲(chǔ)器線。如果未命中屬性中的一者或一者以上為不相關(guān)的,那么不預(yù)取下一連續(xù)高速緩沖存儲(chǔ)器線。請(qǐng)注意,一般來說,可預(yù)取不連續(xù)的高速緩沖存儲(chǔ)器線。對(duì)預(yù)取高速緩沖存儲(chǔ)器線的確定可基于未命中屬性、程序?qū)傩曰虼诵傩缘慕M合。舉例來說,可使用來自分支歷史表或分支預(yù)測(cè)邏輯的信息來提供程序的執(zhí)行流的屬性,所述屬性可用以確定是預(yù)取連續(xù)的指令線還是非連續(xù)的指令線。在另一個(gè)實(shí)施例中,如果指令高速緩沖存儲(chǔ)器中的未命中是歸因于非循序未命中(例如,到不存在于指令高速緩沖存儲(chǔ)器中的指令的地址的分支、子例行程序調(diào)用等),那么預(yù)取來自存儲(chǔ)器層級(jí)的下一級(jí)的指令線。如果指令高速緩沖存儲(chǔ)器中的未命中是歸因于循序未命中(例如,對(duì)不存在于指令高速緩沖存儲(chǔ)器中的指令的循序存取),那么不進(jìn)行預(yù)取操作。還請(qǐng)注意,預(yù)取操作的地址可為連續(xù)或非連續(xù)的指令線。在另一個(gè)實(shí)施例中,如果指令高速緩沖存儲(chǔ)器中的未命中發(fā)生在指令高速緩沖存儲(chǔ)器中為偶數(shù)的地址處,那么預(yù)取來自存儲(chǔ)器層級(jí)的下一級(jí)的指令線。如果指令高速緩沖存儲(chǔ)器中的未命中發(fā)生在指令高速緩沖存儲(chǔ)器中為奇數(shù)的地址處,那么不進(jìn)行預(yù)取。
在另一個(gè)實(shí)施例中,如果指令高速緩沖存儲(chǔ)器中的未命中是歸因于在有大于或等于x%進(jìn)入高速緩沖存儲(chǔ)器線中的地址處的非循序未命中,那么預(yù)取來自存儲(chǔ)器層級(jí)的下一級(jí)的指令線。如果指令高速緩沖存儲(chǔ)器中的未命中是歸因于有小于X%進(jìn)入高速緩沖存儲(chǔ)器線中的地址處的未命中或?yàn)檠蛭疵?,那么不進(jìn)行預(yù)取。舉例來說,如果未命中發(fā)生在高速緩沖存儲(chǔ)器線的末端附近的獲取地址(例如,75%進(jìn)入高速緩沖存儲(chǔ)器線中)處,那么從存儲(chǔ)器層級(jí)的下一級(jí)預(yù)取指令線。進(jìn)入高速緩沖存儲(chǔ)器線中的百分?jǐn)?shù)X可固定為通過實(shí)驗(yàn)手段選擇的值或可為可編程的,從而允許在操作中X%適于程序。舉例來說,如果對(duì)于圖2的示范性說明來說,X%為62. 5%,那么在具有八個(gè)指令線210的情況下,所述線的62. 5%與14216相關(guān)聯(lián),五個(gè)指令進(jìn)入所述線中。如果未命中發(fā)生在14216或更大的獲取地址處,那么啟用預(yù)取操作。如果未命中發(fā)生在13215或更小的獲取地址處,那么不啟用預(yù)取操作。在替代性實(shí)施方案中,如果指令高速緩沖存儲(chǔ)器中的未命中是歸因于有大于X%進(jìn)入高速緩沖存儲(chǔ)器線中的地址處的未命中,那么進(jìn)行預(yù)取。對(duì)于X%=62. 5%的上述實(shí)例來說,如果未命中發(fā)生在15217或更大的獲取地址處,那么啟用預(yù)取。否則,如果未命中處于小于或等于14216進(jìn)入高速緩沖存儲(chǔ)器線中的地址處,那么不進(jìn)行預(yù)取。在另一個(gè)實(shí)施例中,可組合未命中屬性以確定是否進(jìn)行預(yù)取。舉例來說,如果指令高速緩沖存儲(chǔ)器中的未命中是歸因于非循序未命中(例如,到不存在于指令高速緩沖存儲(chǔ)器中的指令的地址的分支、子例行程序調(diào)用等),或如果指令高速緩沖存儲(chǔ)器中的未命中發(fā)生在指令高速緩沖存儲(chǔ)器中為偶數(shù)的地址處,那么預(yù)取來自存儲(chǔ)器層級(jí)的下一級(jí)的指令線。否則,在未命中時(shí),不進(jìn)行預(yù)取。用預(yù)取決策邏輯246來完成對(duì)是否進(jìn)行預(yù)取的確定,預(yù)取決策邏輯246可與高速緩沖存儲(chǔ)器存取探針并行操作以確定所尋址的指令是否處于高速緩沖存儲(chǔ)器中。預(yù)取決策邏輯246可將未命中指示248、非循序操作(例如,分支、調(diào)用或返回操作)引起未命中的非循序指示250、X%值252作為輸入,且可包括(例如)所獲取指令的IA224。未命中指示248、非循序指示250和X%值252由LlIcache控制單元206提供。未命中與非循序獲取操作的獲取地址相關(guān)聯(lián)的確定可從來自處理器202的控制254獲得。可進(jìn)一步從用于與指令相關(guān)聯(lián)的非循序操作256(例如,分支、調(diào)用、返回等)的邏輯獲得控制254。或者,LlIcache控制單元206可將當(dāng)前獲取指令地址與先前獲取指令地址進(jìn)行比較以確定獲取是否與非循序操作相關(guān)聯(lián)。請(qǐng)注意,預(yù)取決策邏輯246可位于指令高速緩沖存儲(chǔ)器外部,在需要時(shí)用信號(hào)進(jìn)行連接。舉例來說,預(yù)取決策邏輯可與產(chǎn)生指令地址224的處理器202更緊密地相關(guān)聯(lián)。其它屬性(例如,確定獲取地址是否為偶地址高速緩沖存儲(chǔ)器線)可基于偶數(shù)“E”位230,其中對(duì)于偶數(shù)高速緩沖存儲(chǔ)器線來說,E=0。“£”位230地址位位置或值可依據(jù)指令高速緩沖存儲(chǔ)器線陣列204中的線長(zhǎng)度而變化。如圖2所說明,兩個(gè)位的B字段234指示字中的多達(dá)四個(gè)字節(jié),且三個(gè)位的I字段232指示線中的多達(dá)八個(gè)字。在此布置下,“Eli230每八個(gè)字(對(duì)于32字節(jié)高速緩沖存儲(chǔ)器線進(jìn)行尋址的八個(gè)字)便改變狀態(tài)。在其它實(shí)施例中,預(yù)取決策邏輯246可使高速緩沖存儲(chǔ)器的探針確定待預(yù)取的高速緩沖存儲(chǔ)器線是否已經(jīng)處于指令高速緩沖存儲(chǔ)器中。如果與預(yù)取目標(biāo)相關(guān)聯(lián)的高速緩沖存儲(chǔ)器線已經(jīng)處于高速緩沖存儲(chǔ)器中,那么停止或阻止預(yù)取操作開始。一旦已通過與指令高速緩沖存儲(chǔ)器相關(guān)聯(lián)的預(yù)取邏輯起始預(yù)取且由存儲(chǔ)器層級(jí)的較高級(jí)作出響應(yīng),那么可經(jīng)由存儲(chǔ)器數(shù)據(jù)總線(例如,存儲(chǔ)器數(shù)據(jù)總線244)將多個(gè)指令線轉(zhuǎn)移到Lllcache。依據(jù)存儲(chǔ)器數(shù)據(jù)總線接口 244的物理總線寬度和所實(shí)施的信令協(xié)議,可以固定大小數(shù)量或包(例如,32個(gè)字節(jié)、64個(gè)字節(jié)、128個(gè)字節(jié)、256個(gè)字節(jié)、512個(gè)字節(jié)等等)來轉(zhuǎn)移數(shù)據(jù)。通常,短數(shù)據(jù)包的多次轉(zhuǎn)移通常比具有較大包大小的突發(fā)轉(zhuǎn)移的效率低,此歸因于配置和發(fā)送數(shù)據(jù)過程中的額外開銷。因此,在另一個(gè)實(shí)施例中,當(dāng)作出替代預(yù)取兩個(gè)指令線而是(例如)在兩個(gè)個(gè)別數(shù)據(jù)轉(zhuǎn)移中進(jìn)行預(yù)取的決策時(shí),請(qǐng)求長(zhǎng)數(shù)據(jù)轉(zhuǎn)移。與在較短獨(dú)立轉(zhuǎn)移中發(fā)送指令相比,在預(yù)取時(shí)的長(zhǎng)數(shù)據(jù)轉(zhuǎn)移使總轉(zhuǎn)移時(shí)間最小化。圖3為展示低復(fù)雜性預(yù)取過程300的流程圖。通過描述來自處理器存儲(chǔ)器復(fù)合體200的元件可如何合適地協(xié)作以執(zhí)行方法300來指示圖3的方框與圖2的元件之間的示范·性關(guān)系。在方框302中,處理器(例如,處理器202)獲取指令。在決策方框304中,確定正獲取的指令是否駐存在指令高速緩沖存儲(chǔ)器中。舉例來說,LlIcache控制單元206檢查確認(rèn)指令是否存在。如果指令處于指令高速緩沖存儲(chǔ)器中,那么過程300在方框306中在高速緩沖存儲(chǔ)器中獲取指令且接著返回到方框302以等待下一個(gè)指令獲取。舉例來說,將選定指令放置于指令輸出總線240上且在處理器202中接收。如果指令不處于指令高速緩沖存儲(chǔ)器中,那么已檢測(cè)到未命中情形。過程300前進(jìn)到?jīng)Q策方框308,其中,確定與當(dāng)前指令地址相關(guān)聯(lián)的下一個(gè)連續(xù)線是否已存在于指令高速緩沖存儲(chǔ)器中??稍诓槐刂苯哟嫒lIcache線陣列204的情況下在LlIcache控制單元206中完成此確定。如果下一個(gè)連續(xù)線已處于LlIcache中,那么在方框310中將獲取發(fā)布到當(dāng)前指令地址的存儲(chǔ)器層級(jí)(例如,系統(tǒng)存儲(chǔ)器層級(jí)208)。過程300接著返回到方框302以等待下一個(gè)指令獲取。并行地,在方框312中確定引起未命中的獲取地址屬性??稍陬A(yù)取決策邏輯246中合適地完成此確定。如果下一個(gè)連續(xù)線不處于高速緩沖存儲(chǔ)器中,那么所述過程前進(jìn)到?jīng)Q策方框314,其中,確定在方框312中確定的未命中屬性中的一者或一者以上是否相關(guān)。雖然可確定多個(gè)屬性,但固定或可編程功能可選擇應(yīng)用所述屬性的子集或全部。如果未命中屬性為相關(guān)的,那么過程300前進(jìn)到方框316以獲取指令和來自下一級(jí)存儲(chǔ)器的所確定預(yù)取高速緩沖存儲(chǔ)器線且返回到方框302以等待下一個(gè)指令獲取。因此,當(dāng)在決策方框314中達(dá)到進(jìn)行預(yù)取的決策時(shí),不再(例如)以兩次個(gè)別數(shù)據(jù)轉(zhuǎn)移預(yù)取兩個(gè)指令線,而是請(qǐng)求長(zhǎng)數(shù)據(jù)轉(zhuǎn)移。如果未命中屬性不相關(guān),那么在方框318中將獲取發(fā)布到當(dāng)前指令地址的存儲(chǔ)器層級(jí)(例如,系統(tǒng)存儲(chǔ)器層級(jí)208)。過程300接著返回到方框302以等待下一個(gè)指令獲取。通過直接映射的高速緩沖存儲(chǔ)器實(shí)施方案來說明對(duì)本文中所揭示的實(shí)施例的示范性論述。請(qǐng)注意,可認(rèn)為直接映射的高速緩沖存儲(chǔ)器是組相關(guān)聯(lián)高速緩沖存儲(chǔ)器的特殊情況(例如,單路組相關(guān)聯(lián)高速緩沖存儲(chǔ)器)。本文中所描述的原理還適用于N路組相關(guān)聯(lián)高速緩沖存儲(chǔ)器(例如,4路組相關(guān)聯(lián)高速緩沖存儲(chǔ)器實(shí)施方案)。以類似方式,本文中所描述的原理適用于全相關(guān)聯(lián)高速緩沖存儲(chǔ)器實(shí)施方案??赏ㄟ^通用處理器、數(shù)字信號(hào)處理器(DSP)、專用集成電路(ASIC)、現(xiàn)場(chǎng)可編程門陣列(FPGA)或其它可編程邏輯組件、離散門或晶體管邏輯、離散硬件組件,或其經(jīng)設(shè)計(jì)以執(zhí)行本文中所描述的功能的任何組合來實(shí)施或執(zhí)行結(jié)合本文中所揭示的實(shí)施例而描述的各種說明性邏輯區(qū)塊、模塊、電路、元件和/或組件。通用處理器可為微處理器,但在替代實(shí)施方案中,所述處理器可為任何常規(guī)處理器、控制器、微控制器或狀態(tài)機(jī)。還可將處理器實(shí)施為計(jì)算組件的組合,例如,DSP與微處理器的組合、多個(gè)微處理器的組合、一個(gè)或一個(gè)以上微處理器與DSP核心的聯(lián)合,或任何其它此類配置。結(jié)合本文中所揭示的實(shí)施例而描述的方法可直接以硬件、由處理器執(zhí)行的軟件模塊或以所述兩者的組合來實(shí)施。軟件模塊可駐存在RAM存儲(chǔ)器、快閃存儲(chǔ)器、ROM存儲(chǔ)器、EPROM存儲(chǔ)器、EEPROM存儲(chǔ)器、寄存器、硬盤、可移除盤、CD-ROM,或此項(xiàng)技術(shù)中已知的任何其它形式的存儲(chǔ)媒體中。存儲(chǔ)媒體可耦合到處理器,使得處理器可從存儲(chǔ)媒體讀取信息以及將信息寫入到存儲(chǔ)媒體。在替代實(shí)施方案中,存儲(chǔ)媒體可與處理器整合。雖然在實(shí)施例的上下文中揭示本發(fā)明,但將認(rèn)識(shí)到,所屬領(lǐng)域的技術(shù)人員可采用·與上文的論述和下文的權(quán)利要求一致的廣泛多種實(shí)施方案。舉例來說,主要在I級(jí)指令高速緩沖存儲(chǔ)器的上下文中揭示實(shí)施例。將了解,實(shí)施例還可使用2級(jí)指令高速緩沖存儲(chǔ)器、用于預(yù)取指令的2級(jí)統(tǒng)一高速緩沖存儲(chǔ)器,或在存儲(chǔ)器層級(jí)的對(duì)于處理器存儲(chǔ)器復(fù)合體來說為適當(dāng)?shù)钠渌?jí)處。還將了解,指令高速緩沖存儲(chǔ)器可與處理器核心整合或在處理器核心外部。
權(quán)利要求
1.一種用于指令預(yù)取的方法,其包含 接收指令的獲取地址在第一高速緩沖存儲(chǔ)器中未命中的指示,其中所述指令的所述獲取地址由第一操作產(chǎn)生并對(duì)應(yīng)于第二操作;以及 響應(yīng)于所述指示 基于所述獲取地址獲取包括來自第二高速緩沖存儲(chǔ)器的指令的第一指令線,并以所述第一操作為非循序操作為條件而從所述第二高速緩沖存儲(chǔ)器預(yù)取第二指令線;以及 基于所述獲取地址從所述第二高速緩沖存儲(chǔ)器獲取所述第一指令線而不響應(yīng)于所述第一操作為循序操作從所述第二高速緩沖存儲(chǔ)器獲取所述第二指令線。
2.根據(jù)權(quán)利要求I所述的方法,其中預(yù)取進(jìn)一步包含 通過將對(duì)所述第一指令線的獲取和對(duì)所述第二指令線的預(yù)取組合來啟用長(zhǎng)數(shù)據(jù)轉(zhuǎn)移。
3.根據(jù)權(quán)利要求I所述的方法,其中通過耦合到所述第一指令高速緩沖存儲(chǔ)器的處理器中的邏輯來識(shí)別所述第一操作為非循序操作。
4.根據(jù)權(quán)利要求I所述的方法,其中通過將所述指令的所述獲取地址與先前獲取地址進(jìn)行比較來識(shí)別所述第一操作為非循序操作。
5.根據(jù)權(quán)利要求I所述的方法,其中所述第一操作為分支操作。
6.根據(jù)權(quán)利要求I所述的方法,其中以所述指令在所述第一指令線中的位置關(guān)于所述第一指令線中的預(yù)定閾值位置為條件而預(yù)取所述第二指令線。
7.根據(jù)權(quán)利要求I所述的方法,其中以下述為條件而預(yù)取所述第二指令線 所述獲取地址對(duì)應(yīng)于所述第二高速緩沖存儲(chǔ)器的偶高速緩沖存儲(chǔ)器線,其中所述第二高速緩沖存儲(chǔ)器包含一個(gè)或多個(gè)偶高速緩沖存儲(chǔ)器線以及一個(gè)或多個(gè)奇高速緩沖存儲(chǔ)器線。
8.根據(jù)權(quán)利要求I所述的方法,其中所述第二指令線不連續(xù)于所述第一指令線。
9.根據(jù)權(quán)利要求I所述的方法,其中所述第一操作為非循序的并包括子例行程序調(diào)用操作。
10.根據(jù)權(quán)利要求I所述的方法,其中所述第一操作為非循序的并包括返回操作。
11.一種系統(tǒng),其包含 指令高速緩沖存儲(chǔ)器,其經(jīng)配置以產(chǎn)生指令的獲取地址在所述指令高速緩沖存儲(chǔ)器中未命中的通知,其中所述指令的所述獲取地址由第一操作產(chǎn)生并對(duì)應(yīng)于第二操作; 獲取邏輯,其經(jīng)配置以基于所述獲取地址而從第二高速緩沖存儲(chǔ)器獲取第一指令線,其中所述第一指令線包括所述指令;以及 預(yù)取決策邏輯,其經(jīng)配置以響應(yīng)于所述通知 以所述第一操作為非循序存取為條件而從所述第二高速緩沖存儲(chǔ)器預(yù)取第二指令線;以及 避免響應(yīng)于所述第一操作為循序存取而從所述第二高速緩沖存儲(chǔ)器預(yù)取所述第二指令線。
12.根據(jù)權(quán)利要求11所述系統(tǒng),還包括 高速緩沖存儲(chǔ)器控制單元,其經(jīng)配置以確定所述第一操作是否為非循序的。
13.根據(jù)權(quán)利要求11所述系統(tǒng),其中所述經(jīng)預(yù)取的第二指令線在突發(fā)轉(zhuǎn)移中提供到所述指令高速緩沖存儲(chǔ)器。
14.根據(jù)權(quán)利要求11系統(tǒng),其中所述第二指令線連續(xù)于所述第一指令線。
15.根據(jù)權(quán)利要求11系統(tǒng),其中所述第二指令線不連續(xù)于所述第一指令線。
16.—種方法,其包含 接收指令的獲取地址在第一高速緩沖存儲(chǔ)器中未命中的通知,其中所述指令的所述獲取地址由第一操作產(chǎn)生并對(duì)應(yīng)于第二操作; 響應(yīng)于所述通知 基于所述獲取地址獲取包括來自第二高速緩沖存儲(chǔ)器的所述指令的第一指令線,并以所述第一操作為非循序的以及獲取地址高速緩沖存儲(chǔ)器線位置超過閾值高速緩沖存儲(chǔ)器線位置為條件而從所述第二高速緩沖存儲(chǔ)器預(yù)取第二指令線,其中所述獲取地址高速緩沖存儲(chǔ)器線位置與所述指令的所述獲取地址相關(guān)并且所述閾值高速緩沖存儲(chǔ)器線位置與所述第一指令線相關(guān);以及 基于所述獲取地址從所述第二高速緩沖存儲(chǔ)器獲取所述第一指令線而不響應(yīng)于所述第一操作為非循序操作以及所述獲取地址高速緩沖存儲(chǔ)器線位置沒有超過所述閾值高速緩沖存儲(chǔ)器線位置而預(yù)取所述第二指令線。
17.根據(jù)權(quán)利要求16所述的方法,進(jìn)一步以下述為條件而預(yù)取所述第二指令線 所述獲取地址對(duì)應(yīng)于所述第二高速緩沖存儲(chǔ)器的偶高速緩沖存儲(chǔ)器線,其中所述第二高速緩沖存儲(chǔ)器包含至少一條偶高速緩沖存儲(chǔ)器線以及至少一條奇高速緩沖存儲(chǔ)器線。
18.根據(jù)權(quán)利要求16所述的方法,其中第二指令線不連續(xù)于所述第一指令線。
19.一種方法,其包括 接收指令的獲取地址在第一高速緩沖存儲(chǔ)器中未命中的指示,其中所述獲取地址由第一操作產(chǎn)生并對(duì)應(yīng)于第二操作;以及響應(yīng)于所述指示 基于所述獲取地址獲取包括來自第二高速緩沖存儲(chǔ)器的所述指令的第一指令線,并以所述獲取地址對(duì)應(yīng)于所述第二高速緩沖存儲(chǔ)器的偶高速緩沖存儲(chǔ)器線而從所述第二高速緩沖存儲(chǔ)器預(yù)取第二指令線;以及 基于所述獲取地址從所述第二高速緩沖存儲(chǔ)器獲取所述第一指令線而避免響應(yīng)于所述獲取地址對(duì)應(yīng)于所述第二高速緩沖存儲(chǔ)器的奇高速緩沖存儲(chǔ)器線從所述第二高速緩沖存儲(chǔ)器預(yù)取第二指令線。
20.根據(jù)權(quán)利要求19所述的方法,其中所述第二指令線連續(xù)于所述第一指令線。
21.根據(jù)權(quán)利要求19所述的方法,其中所述第二指令線不連續(xù)于所述第一指令線。
22.—種存儲(chǔ)器系統(tǒng),其包含 指令高速緩沖存儲(chǔ)器,其經(jīng)配置以產(chǎn)生獲取地址未命中的通知; 預(yù)取決策邏輯,其經(jīng)配置以確定引起所述未命中的所述獲取地址的屬性且基于所述未命中獲取地址和所述屬性而產(chǎn)生未命中信息;以及 系統(tǒng)存儲(chǔ)器層級(jí),其經(jīng)配置以使用與所述未命中獲取地址相關(guān)聯(lián)的指令來響應(yīng)于所述未命中息。
23.根據(jù)權(quán)利要求22所述的存儲(chǔ)器系統(tǒng),其中與所述未命中獲取地址相關(guān)聯(lián)的所述指令包括所預(yù)取的指令。
24.根據(jù)權(quán)利要求23所述的存儲(chǔ)器系統(tǒng),其中與所述未命中獲取地址相關(guān)聯(lián)的所述指令在到所述指令高速緩沖存儲(chǔ)器的突發(fā)轉(zhuǎn)移中提供。
25.根據(jù)權(quán)利要求22所述的存儲(chǔ)器系統(tǒng),其中所述屬性指示所述獲取地址為非循序操作的目標(biāo)地址。
全文摘要
本發(fā)明涉及用于低復(fù)雜性指令預(yù)取系統(tǒng)的方法和設(shè)備。當(dāng)指令高速緩沖存儲(chǔ)器中發(fā)生未命中時(shí),使用使未命中率、存儲(chǔ)器存取帶寬和功率使用最小化的預(yù)取技術(shù)。所述預(yù)取技術(shù)中的一種預(yù)取技術(shù)在發(fā)生未命中時(shí)操作。接收獲取地址在指令高速緩沖存儲(chǔ)器中未命中的通知。分析引起所述未命中的所述獲取地址以確定所述獲取地址的屬性,且基于所述屬性,預(yù)取指令線。所述屬性可指示所述獲取地址是非循序操作的目標(biāo)地址。另一個(gè)屬性可指示所述獲取地址是非循序操作的目標(biāo)地址,且所述目標(biāo)地址有大于X%進(jìn)入高速緩沖存儲(chǔ)器線中。其它屬性可指示所述獲取地址是所述指令高速緩沖存儲(chǔ)器中的偶地址??山M合此些屬性以確定是否進(jìn)行預(yù)取。
文檔編號(hào)G06F12/08GK102968294SQ201210397919
公開日2013年3月13日 申請(qǐng)日期2007年12月3日 優(yōu)先權(quán)日2006年12月8日
發(fā)明者邁克爾·威廉·莫羅, 詹姆斯·諾里斯·迪芬德爾弗爾 申請(qǐng)人:高通股份有限公司