具有多位通路預測掩碼的指令高速緩存的制作方法
【技術領域】
[0001]本發(fā)明通常針對一種指令高速緩存存儲器系統(tǒng)。
【背景技術】
[0002]技術的進步已產(chǎn)生較小且較強大的計算裝置。舉例來說,當前存在多種便攜式個人計算裝置,包含無線計算裝置,例如便攜式無線電話、個人數(shù)字助理(PDA)和尋呼裝置,其體積小、重量輕且易于由用戶攜帶。更具體來說,例如蜂窩電話和因特網(wǎng)協(xié)議(IP)電話等便攜式無線電話可通過無線網(wǎng)絡傳達語音和數(shù)據(jù)包。此外,多個此類無線電話包含并入其中的其它類型的裝置。舉例來說,無線電話還可包含數(shù)字靜態(tài)相機、數(shù)碼攝像機、數(shù)字記錄器,和音頻文件播放器。而且,此類無線電話可處理可執(zhí)行指令,包含軟件應用程序,例如可用以接入網(wǎng)絡的網(wǎng)絡瀏覽器應用程序。由此,這些無線電話可包含大量計算能力。
[0003]此類計算功能可通過包含指令高速緩存(icache)的處理器增強,所述指令高速緩存經(jīng)配置以存儲(在高速緩存線中)最近或頻繁被執(zhí)行的程序指令??捎商幚砥鞔嫒〈鎯υ谥噶罡咚倬彺嬷械闹噶?,這比從主存儲器存取指令更快。指令高速緩存包含多個通路,每一通路包含對應于指令高速緩存的一或多個高速緩存線(例如,存儲位置)的驅(qū)動器。為了存取存儲在指令高速緩存中的特定指令,所有驅(qū)動器可經(jīng)啟用(例如,觸發(fā))以驅(qū)動器(通過多個數(shù)據(jù)線)多路復用器的所有通路,并且所要通路可通過多路復用器選擇。然而,驅(qū)動用于每一指令高速緩存存取的所有通路消耗功率來驅(qū)動每一通路,盡管最后只選擇單個通路。
[0004]為減少功率消耗,通路預測技術已經(jīng)用于預測(例如,識別)待驅(qū)動的“下一通路”及因此預測待執(zhí)行的下一高速緩存線(例如,指令)。通過預測“下一通路”(即,待執(zhí)行的下一指令的位置),僅需要驅(qū)動單個通路。然而,先前通路預測技術易受導致性能損失的頻繁誤預測(例如,預測不正確通路)及處理器所經(jīng)歷的功率惡化的影響,以修正所述誤預測并存取正確的下一通路。
[0005]舉例來說,第一技術存儲用于每一高速緩存線的上一個(前一)“下一通路”(即,單個“下一通路”)?;谒鰡蝹€“下一通路”,指令高速緩存啟用對應于所述單個“下一通路”的單個驅(qū)動器。當未驅(qū)動正確通路(即,不提供給多路復用器)時,發(fā)生誤預測且執(zhí)行對指令高速緩存數(shù)據(jù)陣列的第二次存取,這驅(qū)動正確通路(基于完成的標記查找操作或從控制邏輯提供的信號)。當使用第一技術時,預測正確“下一通路”的準確性由于給定程序(例如,多個指令)的可預測性可能不穩(wěn)定而存在問題。因此,用于高速緩存線的上一個“下一通路”不一定是很好的預測子,并且發(fā)生頻繁誤預測。
[0006]第二技術分配置信度值至通路預測以決定通路預測是否可能引起選擇(S卩,識另Ij)正確通路。如果單個通路預測的置信度值不夠高,那么啟用所有驅(qū)動器。第三技術在識別分支類型指令時將預測的“下一通路”存儲在將要使用的分支目標緩沖器(例如,跟蹤高速緩存)中。儲存的預測“下一通路”可具有高準確度,但可能不常采用分支并且因此第三技術僅對在執(zhí)行當前指令之后采用分支的情況有用。
【發(fā)明內(nèi)容】
[0007]本文公開一種用于指令高速緩存(icache)的通路預測技術,所述指令高速緩存利用對應于所提取(及被執(zhí)行的)上一個高速緩存線的多位通路預測掩碼(例如,預測掩碼值)。多位通路預測掩碼可提供相對于所提取的上一個高速緩存線的“下一通路”預測。多位通路預測掩碼可包括η位向量,其中每一位對應于指令高速緩存的通路。舉例來說,當指令高速緩存包含四個通路時,多位通路預測掩碼可包括4位值。對應通路中的每一個可包括基于多位通路預測掩碼啟用或停用的驅(qū)動器(例如,線驅(qū)動器)。各自與對應高速緩存位置相關聯(lián)的多位通路預測掩碼值可存儲在具有與指令高速緩存的高速緩存線的一對一關聯(lián)的任何結(jié)構中。舉例來說,特定高速緩存線的多位通路預測掩碼可存儲在標記陣列、對應于高速緩存線的寄存器中或作為最近所提取的高速緩存線的部分(例如,末端)。
[0008]在特定實施例中,一種設備包含經(jīng)配置以基于預測掩碼值選擇性地設定多位方式預測掩碼的位的控制邏輯。所述控制邏輯與包含數(shù)據(jù)陣列的指令高速緩存相關聯(lián)。響應于多位通路預測掩碼啟用數(shù)據(jù)陣列的線驅(qū)動器子集。所述線驅(qū)動器子集包含多個線驅(qū)動器。
[0009]在另一特定實施例中,一種方法包含基于預測掩碼值選擇性地設定多位通路預測掩碼的位。多位通路預測掩碼與包含具有多個線驅(qū)動器的數(shù)據(jù)陣列的指令高速緩存相關聯(lián)。響應于多位通路預測掩碼啟用所述數(shù)據(jù)陣列的線驅(qū)動器子集。所述線驅(qū)動器子集包含多個線驅(qū)動器。
[0010]在另一特定實施例中,一種設備包含用于基于預測掩碼值選擇性地設定多位通路預測掩碼的位的裝置。多位通路預測掩碼與包含數(shù)據(jù)陣列的指令高速緩存相關聯(lián)。所述設備還包含用于提供多位通路預測掩碼到數(shù)據(jù)陣列的多個線驅(qū)動器的裝置。響應于多位通路預測掩碼啟用多個線驅(qū)動器的多個線驅(qū)動器。
[0011 ] 在另一特定實施例中,一種非暫時性計算機可讀媒體包含在由處理器執(zhí)行時導致所述處理器根據(jù)預測掩碼值選擇性地設定多位通路預測掩碼的位的指令。多位通路預測掩碼與包含數(shù)據(jù)陣列的指令高速緩存相關聯(lián)。響應于多位通路預測掩碼啟用數(shù)據(jù)陣列的多個線驅(qū)動器。
[0012]由所公開實施例提供的一個特定優(yōu)點在于降低低功率消耗的通路預測技術,具有高預測準確性并且克服先前通路預測技術的不足。通路預測技術減少或避免影響功率功效及處理器性能的誤預測。指令高速緩存的誤預測發(fā)生率相比于先前通路預測技術可大大降低(例如,小于1% )。
[0013]本發(fā)明的其它方面、優(yōu)點和特征將在審閱申請案之后變得顯而易見,所述申請案包含以下部分:【附圖說明】、【具體實施方式】和權利要求書。
【附圖說明】
[0014]圖1為包含利用預測掩碼的指令高速緩存的處理器系統(tǒng)的第一說明性實施例的方塊圖;
[0015]圖2為包含利用預測掩碼的指令高速緩存的處理器系統(tǒng)的第二說明性實施例的方塊圖;
[0016]圖3為執(zhí)行通路預測的方法的第一說明性實施例的流程圖;
[0017]圖4為執(zhí)行通路預測的方法的第二說明性實施例的流程圖;
[0018]圖5為執(zhí)行通路預測的方法的第三說明性實施例的流程圖;及
[0019]圖6為包含執(zhí)行通路預測的指令高速緩存存儲器系統(tǒng)的無線通信裝置的特定實施例的方塊圖。
【具體實施方式】
[0020]圖1說明包含指令高速緩存102 (例如,icache)的處理器系統(tǒng)100的第一特定說明性實施例。指令高速緩存102可經(jīng)配置以存儲(在高速緩存線中)最近或頻繁被執(zhí)行的程序指令。可比從另一位置(例如,主存儲器(未展示))存取的指令更快地存取存儲在指令高速緩存102中的指令。在特定實施例中,指令高速緩存102為集相關高速緩存。指令高速緩存102包含數(shù)據(jù)陣列110及控制邏輯150。
[0021]數(shù)據(jù)陣列110可包括各自包含對應線驅(qū)動器140至144的多個通路120至124。每一線驅(qū)動器140至144對應于包含數(shù)據(jù)陣列110的多個高速緩存線(例如,存儲位置)的通路(例如,數(shù)據(jù)陣列110的列)。數(shù)據(jù)陣列110可包含具有第一線驅(qū)動器140的第一通路120、具有第二線驅(qū)動器142的第二通路122及具有第N線驅(qū)動器144的第N通路124。雖然圖1中展示三個線驅(qū)動器140至144,但是數(shù)據(jù)陣列110中可包含小于三個或大于三個線驅(qū)動器。在特定實施例中,數(shù)據(jù)陣列110包含四個通路。線驅(qū)動器140至144中的每一個可耦合到對應數(shù)據(jù)線(未展示),每一線驅(qū)動器140至144通過所述數(shù)據(jù)線驅(qū)動與對應通路120至124相關聯(lián)的內(nèi)容(例如,數(shù)據(jù)陣列110的高速緩存線的數(shù)據(jù))。舉例來說,線驅(qū)動器140可驅(qū)動與第一通路120相關聯(lián)的內(nèi)容(例如,存儲于高速緩存線處的數(shù)據(jù),如一或多個指令)。在特定實施例中,線驅(qū)動器140至144驅(qū)動通路120至124的內(nèi)容作為數(shù)據(jù)陣列110至多路復用器(未展示)的輸出。多路復用器可響應于多個線驅(qū)動器140至144且可經(jīng)配置以選擇特定通路(例如,所要通路)。在特定實施例中,數(shù)據(jù)陣列110可包含多路復用器。
[0022]控制邏輯150可包含或存取提供“下一通路”預測至數(shù)據(jù)陣列110的預測掩碼152 (例如,多位通路預測掩碼)。“下一通路”預測可與所提取的上一個高速緩存線(例如,存取的數(shù)據(jù)陣列110的上一個高速緩存線)相關聯(lián)且預測(例如,識別)待驅(qū)動的“下一通路”且因此預測待存取的下一高速緩存線(例如,待執(zhí)行的下一指令)。通過預測一或多個“下一通路”(但并非所有通路120至124),驅(qū)動指令高速緩存102的少于全部線驅(qū)動器140至144 (例如,啟用對應驅(qū)動器),這與啟用所有驅(qū)動器140至144來驅(qū)動所有通路120至124相比產(chǎn)生降低的功耗。預測掩碼152的值(例如,預測掩碼值)可對應于指令高速緩存102的所提取的上一個高速緩存線以預測一或多個下一通路。預測掩碼152可包含η位向量,其中每一位對應于指令高速緩存102的特定通路。預測掩碼152可存儲在寄存器或緩沖器中。
[0023]控制邏輯150可經(jīng)配置以基于(例如,根據(jù))與所提取的上一個高速緩存線相關聯(lián)的預測掩碼值選擇性地設定預測掩碼152的一或多個位。預測掩碼152可啟用(或停用)數(shù)據(jù)陣列110的線驅(qū)動器子集,例如驅(qū)動器140至144中的一或多個。當預測掩碼152的多個位經(jīng)設定時,啟用(或停用)對應數(shù)目的多個驅(qū)動器140至144。多個驅(qū)動器140至144中的每一個可通過預測掩碼152的特定位選擇性地啟用(例如,接通或啟動)或選擇性地停用(例如,斷開或撤銷啟動)。在特定實施例中,線驅(qū)動器子集為大于一個線驅(qū)動器(例如,預測掩碼152設定多個位且同時啟用多個線驅(qū)動器)。
[0024]控制邏輯150可經(jīng)配置以維持各自對應于數(shù)據(jù)陣列110的高速緩存線的多個預測掩碼值。多個預測掩碼值可存儲在控制邏輯150可存取的一或多個存儲位置處。舉例來說,預測掩碼值中的一或多個可存儲在標記陣列、與數(shù)據(jù)陣列110的高速緩存線相關聯(lián)的寄存器中、作為個別高速緩存線的部分或在具有與數(shù)據(jù)陣列HO的高速緩存線的一對一關聯(lián)的結(jié)構中。當內(nèi)容加載到數(shù)據(jù)陣列110的高速緩存線中時,控制邏輯150可將對應于特定高速緩存線的特定預測掩碼值設定(例如初始化)為初始值。另外,控制邏輯150可視需要更新其它預測掩碼值以反映內(nèi)容正加載到特定高速緩存線中。舉例來說,控制邏輯150可更新對應于另一高速緩存線的將特定高速緩存線的先前內(nèi)容相關聯(lián)的通路識別為“下一通路”的預測掩碼值以指示所述通路不再被識別為其它高速緩存線的“下一通路”。
[0025]控制邏輯150可接收與數(shù)據(jù)陣列110的上一個提取的(例如,最近提取的)高速緩存線相關聯(lián)的預測掩碼值。預測掩碼值可預測(例如識別)將在提取上一個高速緩存線之后存取的一或多個通路。待存取的一或多個通路可各自對應于存儲將在提取對應于上一個高速緩存線的指令之后執(zhí)行的一或多個指令的高速緩存線。控制邏輯150可基于預測掩碼值設定預測掩碼152。舉例來說,當存取數(shù)據(jù)陣列110的特定高速緩存線時,對應于特定高速緩存線的預測掩碼值可經(jīng)識別及設定為預測掩碼152的值以識別將在存取特定高速緩存線之后的下一高速緩存存