處將第一內(nèi)容加載到數(shù)據(jù)陣列的第一高速緩存線中,且可在404處設(shè)定對(duì)應(yīng)于第一高速緩存線的多位通路預(yù)測掩碼值。在將數(shù)據(jù)加載到數(shù)據(jù)陣列的第一高速緩存線中之后,可將對(duì)應(yīng)于第一高速緩存線的多位通路預(yù)測掩碼值設(shè)定為初始值。舉例來說,第一高速緩存線可包含圖2的第一高速緩存線220a-d中的一者。在特定實(shí)施例中,第一內(nèi)容可加載到高速緩存線A 220a中且可將高速緩存線A預(yù)測掩碼值254設(shè)定為初始值。
[0060]在406處,可識(shí)別下一通路且可更新多位通路預(yù)測掩碼值。下一通路可為第一高速緩存線的后續(xù)通路(例如,連續(xù)高速緩存線)且可更新對(duì)應(yīng)于第一高速緩存線的多位通路預(yù)測掩碼值以指示所識(shí)別的下一通路作為后續(xù)通路。下一通路可對(duì)應(yīng)于在將第一內(nèi)容加載到數(shù)據(jù)陣列的第一高速緩存線中之后存取(例如從其提取內(nèi)容或加載內(nèi)容至其中)的特定高速緩存線。
[0061]在加載第一內(nèi)容及更新對(duì)應(yīng)于第一高速緩存線的多位通路預(yù)測掩碼值之后,在402至406處,可監(jiān)視對(duì)高速緩存的后續(xù)存取以確定是否影響第一內(nèi)容及對(duì)應(yīng)于第一高速緩存線的多位通路預(yù)測掩碼值。舉例來說,當(dāng)對(duì)第二高速緩存線進(jìn)行后續(xù)存取時(shí),可在408處進(jìn)行是否提取第二高速緩存線或是否將第二內(nèi)容加載到第二高速緩存線中的確定。舉例來說,圖1的控制邏輯150可通過每次存取數(shù)據(jù)陣列110時(shí)進(jìn)行此類確定來監(jiān)視數(shù)據(jù)陣列100。當(dāng)確定第二內(nèi)容已經(jīng)加載到第二高速緩存線中時(shí),處理前進(jìn)到418,其中進(jìn)行對(duì)所提取的第二高速緩存線是否為第一高速緩存線的確定。當(dāng)在418處確定第二高速緩存線為第一高速緩存線時(shí),第一高速緩存線的內(nèi)容已經(jīng)修改并且第一高速緩存線之后的所預(yù)測下一通路很可能不再有效。因此,處理前進(jìn)到404,其中設(shè)定多位通路預(yù)測掩碼值。舉例來說,基于第二內(nèi)容正在加載到及替換第一高速緩存線的第一內(nèi)容,可將多位通路預(yù)測掩碼值設(shè)定為初始值。在特定實(shí)施例中,設(shè)定多位通路預(yù)測掩碼值的值包含將多位通路預(yù)測掩碼值設(shè)定到初始值(例如,零值)。
[0062]替代地,當(dāng)代替地在418處確定第二高速緩存線并非陣列的第一高速緩存線時(shí),處理前進(jìn)到416,其中可更新第一高速緩存線及/或第二高速緩存線的多位通路預(yù)測掩碼值。將對(duì)應(yīng)于第二高速緩存線的特定預(yù)測掩碼值設(shè)定為初始值且可基于(例如,反映)第二內(nèi)容正加載到第二高速緩存線中來更新高速緩存的預(yù)測掩碼值。舉例來說,當(dāng)對(duì)應(yīng)于第一高速緩存線的多位通路預(yù)測掩碼值包含指示對(duì)應(yīng)于第二高速緩存線的通路為預(yù)測通路(例如,在存取第一高速緩存線之后的后續(xù)通路)的確證位時(shí),可更新對(duì)應(yīng)于第一高速緩存線的多位通路預(yù)測掩碼。當(dāng)對(duì)應(yīng)于第一高速緩存線的多位通路預(yù)測掩碼包含確證位時(shí),可通過解除確證所述確證位(例如,設(shè)定為邏輯零值)來更新對(duì)應(yīng)于第一高速緩存線的多位通路預(yù)測掩碼。因此,對(duì)應(yīng)于第一高速緩存線的多位通路預(yù)測掩碼值的特定位值(例如,與對(duì)應(yīng)于第二高速緩存線的通路相關(guān)聯(lián))保持設(shè)定直至第二高速緩存線的內(nèi)容從指令高速緩存移除(例如,從高速緩存線位置移除)。在更新多位通路預(yù)測掩碼之后,方法400前進(jìn)到408。在替代實(shí)施例中,當(dāng)確定第二高速緩存線并非第一高速緩存線時(shí),不更新對(duì)應(yīng)于第一高速緩存線的多位通路預(yù)測掩碼值的值。實(shí)情為,當(dāng)在418處確定第二高速緩存線并非第一高速緩存線時(shí),處理前進(jìn)到408,且不基于數(shù)據(jù)(例如,第二內(nèi)容)正加載到第二高速緩存線中來更新對(duì)應(yīng)于第一高速緩存線的多位預(yù)測掩碼值。
[0063]當(dāng)代替地在408處確定第二高速緩存線已經(jīng)提取(例如,存取)時(shí),處理前進(jìn)到410,其中進(jìn)行對(duì)第二高速緩存線是否為第一高速緩存線的確定。當(dāng)在410處確定第二高速緩存線并非第一高速緩存線時(shí),處理前進(jìn)到408。在特定實(shí)施例中,將對(duì)應(yīng)于第二高速緩存線的特定預(yù)測掩碼值提供到數(shù)據(jù)陣列。
[0064]替代地,當(dāng)在410處確定第二高速緩存線為第一高速緩存線時(shí),在412處將第一高速緩存線的預(yù)測掩碼值應(yīng)用(例如,提供)到數(shù)據(jù)陣列??蓪⒍辔煌奉A(yù)測掩碼值設(shè)定為應(yīng)用(例如,提供)到包含多個(gè)線驅(qū)動(dòng)器的數(shù)據(jù)陣列的預(yù)測掩碼的值。預(yù)測掩碼應(yīng)用到數(shù)據(jù)陣列(例如,多個(gè)線驅(qū)動(dòng)器)選擇性地驅(qū)動(dòng)一或多個(gè)通路,所述通路預(yù)測為在提取(例如,存取)第一高速緩存線之后存取的“下一通路”。當(dāng)待存取的正確“下一通路”不包含在預(yù)測為“下一通路”的一或多個(gè)通路中時(shí)發(fā)生誤預(yù)測。舉例來說,參考圖2,可將高速緩存線A預(yù)測掩碼值254設(shè)定為預(yù)測掩碼152的值。在特定實(shí)施例中,在提取(例如,存取)第一高速緩存線之后將對(duì)應(yīng)于第一高速緩存線的多位通路預(yù)測掩碼值應(yīng)用到數(shù)據(jù)陣列所述多個(gè)線驅(qū)動(dòng)器。舉例來說,將多位通路預(yù)測掩碼應(yīng)用到數(shù)據(jù)陣列的多個(gè)線驅(qū)動(dòng)器可包含將預(yù)測掩碼152應(yīng)用到圖1的線驅(qū)動(dòng)器140至144或圖2的線驅(qū)動(dòng)器240a_d。在應(yīng)用多位通路預(yù)測掩碼之后,方法400前進(jìn)到414。
[0065]在414處,進(jìn)行對(duì)是否發(fā)生誤預(yù)測的確定。當(dāng)由于將預(yù)測掩碼應(yīng)用到數(shù)據(jù)陣列以選擇性地啟用數(shù)據(jù)陣列的一或多個(gè)驅(qū)動(dòng)器而不驅(qū)動(dòng)“下一通路”時(shí)可發(fā)生誤預(yù)測。舉例來說,可通過圖1的控制邏輯150進(jìn)行所述確定。當(dāng)確定已發(fā)生所述誤預(yù)測時(shí),處理前進(jìn)到416,其中更新多位通路預(yù)測掩碼值。在誤預(yù)測之后,可啟用數(shù)據(jù)陣列的一或多個(gè)線驅(qū)動(dòng)器。在特定實(shí)施例中,啟用所有線驅(qū)動(dòng)器。在另一特定實(shí)施例中,啟用單個(gè)線驅(qū)動(dòng)器。在另一特定實(shí)施例中,所啟用的一或多個(gè)線驅(qū)動(dòng)器并不包含先前啟用的導(dǎo)致誤預(yù)測的線驅(qū)動(dòng)器。接著可基于完成的標(biāo)記查找操作從數(shù)據(jù)陣列選擇后續(xù)通路以識(shí)別將在已存取的第一高速緩存線之后驅(qū)動(dòng)的正確通路(例如,正確高速緩存線)。控制邏輯可確定(例如,識(shí)別)在誤預(yù)測之后驅(qū)動(dòng)的后續(xù)通路并且基于所述后續(xù)通路更新第一高速緩存線的多位預(yù)測掩碼值。因此,可基于識(shí)別在應(yīng)用預(yù)測掩碼導(dǎo)致誤預(yù)測(例如,并未驅(qū)動(dòng)正確通路)之后驅(qū)動(dòng)的后續(xù)通路(例如,正確通路)來更新預(yù)測掩碼值。當(dāng)確定未發(fā)生誤預(yù)測時(shí),處理前進(jìn)到408。
[0066]根據(jù)方法400,可保持及更新第一高速緩存線的多位通路預(yù)測掩碼值??蓪⒍辔活A(yù)測掩碼值提供到指令高速緩存的數(shù)據(jù)陣列作為預(yù)測掩碼以選擇性地啟用指令高速緩存的一或多個(gè)線驅(qū)動(dòng)器。選擇性地啟用(或停用)一或多個(gè)線驅(qū)動(dòng)器可起作用以驅(qū)動(dòng)在存取第一高速緩存線之后驅(qū)動(dòng)的一或多個(gè)預(yù)測“下一通路”??苫趯?duì)數(shù)據(jù)陣列的第二高速緩存線執(zhí)行加載操作還是提取操作及/或第二高速緩存線是否為第一高速緩存線來更新多位預(yù)測掩碼值。通過保持及更新多位通路預(yù)測掩碼值以選擇性地啟用不到全部的指令高速緩存的線驅(qū)動(dòng)器,可影響功率效率及處理器性能。
[0067]參考圖5,說明執(zhí)行與指令高速緩存相關(guān)聯(lián)的通路預(yù)測的方法500的第三說明性實(shí)施例的流程圖。舉例來說,指令高速緩存可包含圖1的指令高速緩存102。在特定實(shí)施例中,可由圖1的控制邏輯150執(zhí)行方法500。
[0068]在502處,可在指令高速緩存的數(shù)據(jù)陣列處接收多位通路預(yù)測掩碼。舉例來說,多位通路預(yù)測掩碼可為多位通路預(yù)測掩碼152且數(shù)據(jù)陣列可為圖1的數(shù)據(jù)陣列110。多位通路預(yù)測掩碼的值可存儲(chǔ)在標(biāo)記陣列、寄存器中或作為對(duì)應(yīng)于多位通路預(yù)測掩碼的指令高速緩存的高速緩存線的部分。在特定實(shí)施例中,通過指令高速緩存的控制邏輯從指令高速緩存的標(biāo)記陣列、寄存器或高速緩存線接收多位通路預(yù)測掩碼的值。
[0069]在504處,可響應(yīng)于多位通路預(yù)測掩碼的設(shè)定位選擇性地啟用數(shù)據(jù)陣列的線驅(qū)動(dòng)器子集??赏ㄟ^預(yù)測掩碼的不同位選擇性地啟用(例如,接通或啟動(dòng))或選擇性地停用(例如,斷開或撤銷啟動(dòng))一或多個(gè)線驅(qū)動(dòng)器。在特定實(shí)施例中,預(yù)測掩碼的每一確證位使待啟動(dòng)(例如,接通)的對(duì)應(yīng)驅(qū)動(dòng)器驅(qū)動(dòng)高速緩存線(例如,高速緩存線的內(nèi)容)到多路復(fù)用器。子集可大于單個(gè)線驅(qū)動(dòng)器。舉例來說,子集可包含許多個(gè)線驅(qū)動(dòng)器(例如,多個(gè)線驅(qū)動(dòng)器)。線驅(qū)動(dòng)器的子集可包含在多個(gè)線驅(qū)動(dòng)器中,例如圖1的線驅(qū)動(dòng)器140至144或圖2的線驅(qū)動(dòng)器 240a_d。
[0070]在506處,可將對(duì)應(yīng)于線驅(qū)動(dòng)器子集的每一驅(qū)動(dòng)器的高速緩存線提供到多路復(fù)用器。舉例來說,可將對(duì)應(yīng)于線驅(qū)動(dòng)器子集的每一啟用的線驅(qū)動(dòng)器的高速緩存線提供到多路復(fù)用器??苫诙辔煌奉A(yù)測掩碼進(jìn)行對(duì)是否發(fā)生誤預(yù)測(例如是否未驅(qū)動(dòng)到多路復(fù)用器的正確通路)的確定。舉例來說,控制邏輯可識(shí)別(例如,檢測)是否多路復(fù)用器選擇提供到多路復(fù)用器的經(jīng)驅(qū)動(dòng)通路(例如,一或多個(gè)高速緩存線的內(nèi)容,例如一或多個(gè)指令)中的一者。當(dāng)進(jìn)行對(duì)發(fā)生誤預(yù)測的確定時(shí),可啟用所有線驅(qū)動(dòng)器且可基于完成的標(biāo)記查找操作選擇正確通路。標(biāo)記查找操作可能已經(jīng)與將多位通路預(yù)測掩碼提供到多個(gè)線驅(qū)動(dòng)器以選擇性地啟用線驅(qū)動(dòng)器子集同時(shí)(例如,并行)執(zhí)行。另外或替代地,標(biāo)記查找操作可與選擇性地啟用(或停用)的線驅(qū)動(dòng)器中的一或多個(gè)同時(shí)執(zhí)行。
[0071]圖6為包含利用多位通路預(yù)測掩碼的指令高速緩存存儲(chǔ)器系統(tǒng)的裝置600(例如,通信裝置)的特定實(shí)施例的方塊圖。裝置600可為無線電子裝置且可包含耦合到存儲(chǔ)器632的處理器610,例如數(shù)字信號(hào)處理器(DSP)。
[0072]處理器610可經(jīng)配置以執(zhí)行存儲(chǔ)于所述存儲(chǔ)器632中的軟件660 (例如,一或多個(gè)指令的程序)。處理器610可包含指令高速緩存680。舉例來說,指令高速緩存680可包含或?qū)?yīng)于圖1的指令高速緩存102。指令高速緩存680可包含數(shù)據(jù)陣列682、標(biāo)記陣列684、控制邏輯686及多位通路預(yù)測掩碼688。數(shù)據(jù)陣列682、控制邏輯686及多位通路預(yù)測掩碼688可分別對(duì)應(yīng)于圖1的數(shù)據(jù)陣列110、控制邏輯150及預(yù)測掩碼152。數(shù)據(jù)陣列682可包含多個(gè)線驅(qū)動(dòng)器,例如圖1的線驅(qū)動(dòng)器140至144或圖2的線驅(qū)動(dòng)器240a-d。標(biāo)記陣列684可對(duì)應(yīng)于圖2的標(biāo)記陣列280。在說明性實(shí)例中,處理器610包含或?qū)?yīng)于圖1至2的任何所述系統(tǒng),或其組件,并且根據(jù)圖3至5的任何實(shí)施例或其任何組合操作。舉例來說,如圖2中所示,控制邏輯686可設(shè)定應(yīng)用到數(shù)據(jù)陣列682以使預(yù)測通路能夠提供作為數(shù)據(jù)陣列682的輸出的多位通路預(yù)測掩碼688的值。在特定實(shí)施例中,基于多位通路預(yù)測掩碼啟用多個(gè)線驅(qū)動(dòng)器的子集,其中所述子集包含多個(gè)線驅(qū)動(dòng)器。標(biāo)記陣列684可執(zhí)行標(biāo)記查找操作以基于所應(yīng)用的多位通路預(yù)測掩碼688識(shí)別將在發(fā)生誤預(yù)測的情況下驅(qū)動(dòng)的正確通路。在特定實(shí)施例中,處理器610可經(jīng)配置以執(zhí)行存儲(chǔ)在非暫時(shí)性計(jì)算機(jī)可讀媒體(例如,存儲(chǔ)器632)處電腦可執(zhí)行指令(例如,軟件660),所述指令可執(zhí)行以使如處理器610的計(jì)算機(jī)根據(jù)預(yù)測掩碼值選擇性地設(shè)定多位通路預(yù)測掩碼的位。多位通路預(yù)測掩碼與包含數(shù)據(jù)陣列的指令高速緩存相關(guān)聯(lián)。響應(yīng)于多位通路預(yù)測掩碼啟用所述數(shù)據(jù)陣列的線驅(qū)動(dòng)器子集。在特定實(shí)施例中,線驅(qū)動(dòng)器子集為單個(gè)線驅(qū)動(dòng)器。在另一特定實(shí)施例中,線驅(qū)動(dòng)器子集為大于一個(gè)線驅(qū)動(dòng)器(例如,多個(gè)線驅(qū)動(dòng)器)。計(jì)算機(jī)可執(zhí)行指令(例如,軟件660)可進(jìn)一步使處理器610接收預(yù)測掩碼值及選擇性地啟用多個(gè)線驅(qū)動(dòng)器。
[0073]相機(jī)接口 668耦合到處理器610,且還耦合到相機(jī)(例如,攝像機(jī)670)。顯示控制器626耦合到處理器610及顯示裝置628。編解碼器(CODEC) 634還可耦合到處理器610。揚(yáng)聲器636及麥克風(fēng)638可耦合到CODEC 634。無線接口 640可耦合到處理器610及天線642以使得通過天線642及無線接口 640接收到的無線數(shù)據(jù)可提供到處理器610。
[0074]在特定實(shí)施例中,處理器610、顯示控制器6