取期間驅(qū)動(dòng)的一或多個(gè)“預(yù)測(cè)”通路??蓪㈩A(yù)測(cè)掩碼152提供到數(shù)據(jù)陣列110以基于預(yù)測(cè)掩碼選擇性地啟用及/或停用驅(qū)動(dòng)器140至144中的一或多個(gè)。由于預(yù)測(cè)掩碼152經(jīng)啟用(例如,接通)或停用(例如,斷開(kāi))的驅(qū)動(dòng)器140至144可提供(例如,驅(qū)動(dòng))對(duì)應(yīng)于啟用的驅(qū)動(dòng)器140至144(例如對(duì)應(yīng)于輸出多路復(fù)用器)的高速緩存線的內(nèi)容(例如,指令),如相對(duì)于圖2進(jìn)一步詳細(xì)論述。在特定實(shí)施例中,與將所提取的上一個(gè)高速緩存線的預(yù)測(cè)掩碼值提供到數(shù)據(jù)陣列110同時(shí),執(zhí)行與所提取的上一個(gè)高速緩存線相關(guān)聯(lián)的指令。
[0026]控制邏輯150 (或指令高速緩存102的其它組件,例如多路復(fù)用器)可確定通過(guò)啟用的驅(qū)動(dòng)器140至144提供的內(nèi)容是否包含接下來(lái)將執(zhí)行的一或多個(gè)指令(例如,在提取對(duì)應(yīng)于上一個(gè)高速緩存線的指令之后)。如果根據(jù)設(shè)定為預(yù)測(cè)掩碼值的預(yù)測(cè)掩碼152所啟用的通路并不提供接下來(lái)將執(zhí)行的一或多個(gè)指令(例如,預(yù)測(cè)掩碼并不預(yù)測(cè)待驅(qū)動(dòng)的正確的下一通路),那么將發(fā)生誤預(yù)測(cè)。在特定實(shí)施例中,控制邏輯150基于多路復(fù)用器是否選擇對(duì)應(yīng)于由預(yù)測(cè)掩碼152所識(shí)別的預(yù)測(cè)通路的數(shù)據(jù)陣列110的輸出確定是否發(fā)生誤預(yù)測(cè)。
[0027]控制邏輯150還可通過(guò)基于預(yù)測(cè)掩碼152 (例如,特定預(yù)測(cè)掩碼值)被提供到數(shù)據(jù)陣列110以啟用驅(qū)動(dòng)器140至144中的一或多個(gè)確定是否發(fā)生誤預(yù)測(cè)來(lái)維持多個(gè)預(yù)測(cè)掩碼值。當(dāng)將特定預(yù)測(cè)掩碼值應(yīng)用到數(shù)據(jù)陣列110時(shí),控制邏輯150可基于特定預(yù)測(cè)掩碼值確定是否發(fā)生誤預(yù)測(cè)。當(dāng)確定已發(fā)生誤預(yù)測(cè)時(shí),先前未啟用的一或多個(gè)線驅(qū)動(dòng)器140至144隨后可經(jīng)啟用以提供正確的通路輸出以從誤預(yù)測(cè)恢復(fù)。在特定實(shí)施例中,在所述誤預(yù)測(cè)之后啟用所有線驅(qū)動(dòng)器140至144。
[0028]控制邏輯150可識(shí)別所存取(例如,所驅(qū)動(dòng))的正確通路且基于所述正確通路更新引起誤預(yù)測(cè)的預(yù)測(cè)掩碼值。舉例來(lái)說(shuō),控制邏輯150可在存取與預(yù)測(cè)掩碼值相關(guān)聯(lián)的高速緩存線(例如,通路)之后將所述正確通路識(shí)別為連續(xù)通路。在特定實(shí)施例中,從誤預(yù)測(cè)恢復(fù)可包含存取除指令高速緩存102外的另一存儲(chǔ)位置(例如,主存儲(chǔ)器)以獲得將在提取與上一個(gè)高速緩存線相關(guān)聯(lián)的指令之后執(zhí)行的指令。當(dāng)從另一存儲(chǔ)位置獲得(例如,提取)指令時(shí),指令可加載(例如,存儲(chǔ))到數(shù)據(jù)陣列110的的與特定通路120至124相關(guān)聯(lián)的高速緩存線中??刂七壿?50可將特定通路識(shí)別為后續(xù)通路且基于所述識(shí)別的特定通路更新預(yù)測(cè)掩碼值??刂七壿?50可通過(guò)設(shè)定對(duì)應(yīng)于所存取的連續(xù)高速緩存線的預(yù)測(cè)掩碼值的位來(lái)更新引起誤預(yù)測(cè)的預(yù)測(cè)掩碼值。因此,如果預(yù)測(cè)掩碼值未能成功地預(yù)測(cè)連續(xù)通路,那么預(yù)測(cè)掩碼值經(jīng)更新,以使得當(dāng)接下來(lái)存取高速緩存線時(shí),連續(xù)通路經(jīng)預(yù)測(cè)作為“下一通路”(例如,后續(xù)通路)。
[0029]操作期間,控制邏輯150可接收與存儲(chǔ)在數(shù)據(jù)陣列110的高速緩存線(例如,通路)中的指令相關(guān)聯(lián)的指令地址?;谥噶畹刂罚刂七壿?50可識(shí)別與指令地址相關(guān)聯(lián)的特定預(yù)測(cè)掩碼值。舉例來(lái)說(shuō),控制邏輯150可從各自對(duì)應(yīng)于數(shù)據(jù)陣列110的高速緩存線的多個(gè)預(yù)測(cè)掩碼值識(shí)別特定預(yù)測(cè)掩碼值。在特定預(yù)測(cè)掩碼值經(jīng)識(shí)別之后,控制邏輯150可基于所識(shí)別的特定預(yù)測(cè)掩碼值設(shè)定預(yù)測(cè)掩碼152的一或多個(gè)位,以使得預(yù)測(cè)掩碼152的值為與特定預(yù)測(cè)掩碼值相同的值。在提取與指令地址相關(guān)聯(lián)的高速緩存線之后,控制邏輯150可將預(yù)測(cè)掩碼152 (例如,多位通路預(yù)測(cè)掩碼)提供到數(shù)據(jù)陣列110 (例如,線驅(qū)動(dòng)器140至144)。預(yù)測(cè)掩碼152的對(duì)應(yīng)于特定線驅(qū)動(dòng)器140至144的每一個(gè)別位可在特定線驅(qū)動(dòng)器140至144的輸入處接收,以基于特定線驅(qū)動(dòng)器140至144的輸入處接收到的值(例如,數(shù)據(jù)值)啟用或停用特定線驅(qū)動(dòng)器。
[0030]數(shù)據(jù)陣列110可接收預(yù)測(cè)掩碼152且可基于接收到的預(yù)測(cè)掩碼152選擇性地啟用數(shù)據(jù)陣列110的線驅(qū)動(dòng)器140至144子集。舉例來(lái)說(shuō),特定線驅(qū)動(dòng)器140至144可接收對(duì)應(yīng)于特定線驅(qū)動(dòng)器140至144的預(yù)測(cè)掩碼152的位。數(shù)據(jù)陣列110可將對(duì)應(yīng)于線驅(qū)動(dòng)器140至144子集的每一啟用的驅(qū)動(dòng)器的通路的內(nèi)容(例如,高速緩存線的至少一部分)提供作為數(shù)據(jù)陣列110的輸出。提供作為數(shù)據(jù)陣列110的輸出的內(nèi)容可表示預(yù)測(cè)為將在提取與指令地址相關(guān)聯(lián)的高速緩存線之后存取的下一通路的通路。
[0031]通過(guò)選擇性地啟用多個(gè)驅(qū)動(dòng)器140至144的子集及驅(qū)動(dòng)一個(gè)以上預(yù)測(cè)通路(但并非所有通路),可對(duì)指令高速緩存102的每次數(shù)據(jù)存取實(shí)現(xiàn)功率效益。另外,使用上述通路預(yù)測(cè)技術(shù),對(duì)于每一后續(xù)通路應(yīng)僅僅發(fā)生一次誤預(yù)測(cè),因?yàn)樵谡`預(yù)測(cè)之后,多位通路預(yù)測(cè)掩碼152的位經(jīng)更新以將特定高速緩存線識(shí)別為后續(xù)者。
[0032]參考圖2,公開(kāi)一種利用多位預(yù)測(cè)掩碼的處理器系統(tǒng)200。處理器系統(tǒng)200可包含程序計(jì)數(shù)器270及指令高速緩存(icache) 102。處理器系統(tǒng)200可使用指令高速緩存102來(lái)將指令提供到一或多個(gè)執(zhí)行單元(未展示)。
[0033]程序計(jì)數(shù)器270可識(shí)別待執(zhí)行的指令。程序計(jì)數(shù)器270可包含索引部分272及與待執(zhí)行的指令相關(guān)聯(lián)的標(biāo)記部分274。每當(dāng)執(zhí)行指令時(shí),程序計(jì)數(shù)器270可經(jīng)調(diào)節(jié)(例如,遞增)以識(shí)別待執(zhí)行的下一指令。待執(zhí)行的下一指令的索引部分272可提供到數(shù)據(jù)陣列110且可識(shí)別數(shù)據(jù)陣列110的與待執(zhí)行的下一指令相關(guān)聯(lián)的索引(例如,包含多個(gè)高速緩存線的行)。可將標(biāo)記部分274提供到指令高速緩存102的標(biāo)記陣列280。標(biāo)記陣列280可使用標(biāo)記部分274來(lái)識(shí)別數(shù)據(jù)陣列的與待執(zhí)行的下一指令相關(guān)聯(lián)的行(例如,通路)。因此,索引部分272及標(biāo)記部分274的組合可特別地識(shí)別數(shù)據(jù)陣列110的存儲(chǔ)待執(zhí)行的下一指令的特定高速緩存線。在特定實(shí)施例中,程序計(jì)數(shù)器270還可將索引部分272、標(biāo)記部分274或其組合提供到控制邏輯150。
[0034]指令高速緩存102可包含數(shù)據(jù)陣列110、多路復(fù)用器260、控制邏輯150及標(biāo)記陣列280。數(shù)據(jù)陣列110可包含用于數(shù)據(jù)高速緩存的多個(gè)行中特定行的多個(gè)通路(例如,四個(gè)
(4)通路),例如第一通路、第二通路、第三通路及第四通路,如圖2中所描繪。所述通路中的每一個(gè)可與指令高速緩存102的對(duì)應(yīng)高速緩存線220a-d相關(guān)聯(lián)??稍诔绦驁?zhí)行(作為一系列指令由處理器系統(tǒng)200執(zhí)行)期間存取多個(gè)通路。多個(gè)通路中的每一個(gè)可包含驅(qū)動(dòng)器240a-d(例如,線驅(qū)動(dòng)器)及對(duì)應(yīng)于數(shù)據(jù)陣列110的高速緩存線的數(shù)據(jù)線230a-d。舉例來(lái)說(shuō),第一通路可與高速緩存線A 220a相關(guān)聯(lián)且包含第一驅(qū)動(dòng)器240a及第一數(shù)據(jù)線230a,第二通路可與高速緩存線B 220b相關(guān)聯(lián)且包含第二驅(qū)動(dòng)器240b及第二數(shù)據(jù)線230b,第三通路可與高速緩存線C 220c相關(guān)聯(lián)且包含第三驅(qū)動(dòng)器240c及第三數(shù)據(jù)線230c,且第四通路可與高速緩存線D 220d相關(guān)聯(lián)且包含第四驅(qū)動(dòng)器240d及第四數(shù)據(jù)線230d。
[0035]每一驅(qū)動(dòng)器240a_d可啟用存儲(chǔ)在待通過(guò)對(duì)應(yīng)數(shù)據(jù)線230a_d從數(shù)據(jù)陣列110讀取(例如,驅(qū)動(dòng))的對(duì)應(yīng)高速緩存線220a_d中的數(shù)據(jù)(例如,一或多個(gè)指令)。數(shù)據(jù)可提供作為數(shù)據(jù)陣列110的輸出。舉例來(lái)說(shuō),驅(qū)動(dòng)器240a-d可對(duì)應(yīng)于圖1的驅(qū)動(dòng)器140至144。數(shù)據(jù)陣列110可包含集相關(guān)指令高速緩存數(shù)據(jù)陣列。在特定實(shí)施例中,數(shù)據(jù)陣列110為四通路集相關(guān)尚速緩存。
[0036]控制邏輯150可設(shè)定預(yù)測(cè)掩碼152的值。預(yù)測(cè)掩碼152的值集可對(duì)應(yīng)于數(shù)據(jù)陣列110的上一個(gè)經(jīng)存取的特定高速緩存線220a-d。預(yù)測(cè)掩碼152的值可預(yù)測(cè)(例如識(shí)別)相對(duì)于上一個(gè)所提取的特定高速緩存線220a-d的“下一通路”(例如后續(xù)通路)。舉例來(lái)說(shuō),預(yù)測(cè)掩碼152的值集可對(duì)應(yīng)于高速緩存線A 220a。圖2的預(yù)測(cè)掩碼152可包含四個(gè)(4)位,其中每一位分別對(duì)應(yīng)于不同通路,且因此對(duì)應(yīng)于不同驅(qū)動(dòng)器240a-d。舉例來(lái)說(shuō),從左到右,第一位(例如,最高有效位)可對(duì)應(yīng)于第一通路,第二位可對(duì)應(yīng)于第二通路,諸如此類。預(yù)測(cè)掩碼152可基于所設(shè)定(例如,確證為邏輯一(I)值)的一或多個(gè)位指示將要啟用的一或多個(gè)驅(qū)動(dòng)器240a-d。舉例來(lái)說(shuō),可啟用(響應(yīng)于應(yīng)用到數(shù)據(jù)陣列110的預(yù)測(cè)掩碼152)驅(qū)動(dòng)器240a-d的子集(例如,線驅(qū)動(dòng)器子集)以將內(nèi)容(例如數(shù)據(jù),如存儲(chǔ)在對(duì)應(yīng)高速緩存線220a-d中的一或多個(gè)指令)提供到多路復(fù)用器260。
[0037]每一高速緩存線220a_d可與對(duì)應(yīng)預(yù)測(cè)掩碼值(例如,對(duì)應(yīng)多位預(yù)測(cè)掩碼值)相關(guān)聯(lián)。特定高速緩存線(例如高速緩存線220a_d中的一個(gè))的對(duì)應(yīng)預(yù)測(cè)掩碼值可基于所存取的特定高速緩存線設(shè)定為預(yù)測(cè)掩碼152的一部分的值。舉例來(lái)說(shuō),當(dāng)存取特定高速緩存線時(shí),對(duì)應(yīng)于特定高速緩存線的預(yù)測(cè)掩碼值可經(jīng)識(shí)別且設(shè)定為預(yù)測(cè)掩碼152的一部分的值,以識(shí)別將在特定高速緩存線之后驅(qū)動(dòng)的一或多個(gè)“預(yù)測(cè)”通路。對(duì)應(yīng)預(yù)測(cè)掩碼值可存儲(chǔ)在具有與指令高速緩存102的高速緩存線的一對(duì)一關(guān)聯(lián)的任何結(jié)構(gòu)中。舉例來(lái)說(shuō),對(duì)應(yīng)預(yù)測(cè)掩碼值中的一或多個(gè)可存儲(chǔ)在標(biāo)記陣列(例如,標(biāo)記陣列280)、與高速緩存線220a-d相關(guān)聯(lián)(例如對(duì)應(yīng)于所述高速緩存線)的寄存器中或作為高速緩存線的部分(例如,末端)。在特定示范性實(shí)施例中,數(shù)據(jù)陣列110的高速緩存線A 220a包含高速緩存線A內(nèi)容222(例如,一或多個(gè)存儲(chǔ)的指令)及高速緩存線A預(yù)測(cè)掩碼值254 (例如,對(duì)應(yīng)預(yù)測(cè)掩碼值)。基于所存取(例如,所提取)的高速緩存線A 220a,控制邏輯150可選擇高速緩存線A預(yù)測(cè)掩碼值254且設(shè)定預(yù)測(cè)掩碼152的值為高速緩存線A預(yù)測(cè)掩碼值254。當(dāng)發(fā)生一或多個(gè)錯(cuò)誤預(yù)測(cè)時(shí)或當(dāng)將內(nèi)容加載到數(shù)據(jù)陣列110中或從數(shù)據(jù)陣列110提取時(shí),控制邏輯150可維持并更新高速緩存線A預(yù)測(cè)掩碼值254。雖然高速緩存線A預(yù)測(cè)掩碼值254展示為存儲(chǔ)為高速緩存線A 220a的部分,可理解,高速緩存線A預(yù)測(cè)掩碼值254可存儲(chǔ)為標(biāo)記陣列280的部分或與高速緩存線A 220a相關(guān)聯(lián)的寄存器的部分。
[0038]在處理器系統(tǒng)200開(kāi)啟時(shí),控制邏輯150可將預(yù)測(cè)掩碼152的值初始化到初始值(例如,零(O)值,例如“0000”)??刂七壿?50還可將每一預(yù)測(cè)掩碼值初始化到初始值。舉例來(lái)說(shuō),在處理器系統(tǒng)200的啟動(dòng)之后,控制邏輯150可將高速緩存線A預(yù)測(cè)掩碼值254初始化到初始值。在特定實(shí)施例中,在預(yù)測(cè)掩碼152包含所有零值時(shí),不存在預(yù)測(cè)并且在提取高速緩存線A 220a之后不驅(qū)動(dòng)(例如,啟用)驅(qū)動(dòng)器240a-d。在替代實(shí)施例中,當(dāng)預(yù)測(cè)掩碼152包含所有零值時(shí)驅(qū)動(dòng)所有驅(qū)動(dòng)器240a-d。
[0039]控制邏輯150還可在將內(nèi)容加載(例如,高速緩存線填充)至對(duì)應(yīng)于特定預(yù)測(cè)掩碼的高速緩存線時(shí)初始化特定預(yù)測(cè)掩碼值。舉例來(lái)說(shuō),控制邏輯150可在將一或多個(gè)指令加載(例如,存儲(chǔ))于高速緩存線A 220a處時(shí)將高速緩存線A預(yù)測(cè)掩碼值254設(shè)定為“0000”的初始值。
[0040]控制邏輯150可周期性地將一或多個(gè)預(yù)測(cè)掩碼值設(shè)定為初始值。舉例來(lái)說(shuō),控制邏輯150還可在時(shí)間周期到期(例如,時(shí)間周期的到期)之后或在多個(gè)高速緩存存取操作之后重設(shè)(例如,初始化到零值)一或多個(gè)預(yù)測(cè)掩碼值。在特定實(shí)施例中,每一預(yù)測(cè)掩碼值可與對(duì)應(yīng)時(shí)間周期、對(duì)應(yīng)數(shù)目的高速緩存存取操作或其組合相關(guān)聯(lián)。在另一特定實(shí)施例中,整個(gè)數(shù)據(jù)陣列110可與對(duì)應(yīng)時(shí)間周期、對(duì)應(yīng)數(shù)目的高速緩存存取操作或其組合相關(guān)聯(lián)。舉例來(lái)說(shuō),高