用于取消對(duì)循環(huán)的數(shù)據(jù)預(yù)取請(qǐng)求的方法和設(shè)備的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明大體上涉及處理系統(tǒng)的方面,且明確地說,涉及用于減少由數(shù)據(jù)預(yù)取引起的高速緩存污染的方法和設(shè)備。
【背景技術(shù)】
[0002]例如蜂窩式電話、膝上型計(jì)算機(jī)、個(gè)人數(shù)據(jù)助理(PDA)和其類似者的許多便攜式產(chǎn)品利用執(zhí)行例如通信和多媒體程序的程序的處理系統(tǒng)。用于這些產(chǎn)品的處理系統(tǒng)可包含多個(gè)處理器、包含用于存儲(chǔ)指令和數(shù)據(jù)的多階高速緩沖存儲(chǔ)器的復(fù)雜存儲(chǔ)器系統(tǒng)、控制器、例如通信接口的外圍裝置,和配置(例如)于單一芯片上的固定功能邏輯塊。同時(shí),便攜式產(chǎn)品具有呈電池形式的有限能量源,所述電池常常為支持由處理系統(tǒng)進(jìn)行的高性能操作所需的。為了增加電池壽命,需要盡可能高效地執(zhí)行這些操作。許多個(gè)人計(jì)算機(jī)也經(jīng)開發(fā)而具有高效設(shè)計(jì)以在總能量消耗減少的情況下操作。
[0003]為在執(zhí)行程序時(shí)提供高性能,可使用基于存儲(chǔ)器參考的空間區(qū)域性的概念且通常用以改善處理器性能的數(shù)據(jù)預(yù)取。通過從高速緩沖存儲(chǔ)器預(yù)取在接近已提取數(shù)據(jù)元素或通過步幅地址差量或間接指標(biāo)相關(guān)且可能用于未來存取中的地址處的多個(gè)數(shù)據(jù)元素,可減小高速緩存未命中率。高速緩存設(shè)計(jì)通常通過針對(duì)個(gè)別數(shù)據(jù)元素提取而提取數(shù)據(jù)的高速緩存行來實(shí)施一種形式的預(yù)取。硬件預(yù)取器可通過以推測方式預(yù)取數(shù)據(jù)的一或多個(gè)額外高速緩存行來擴(kuò)充此操作,其中預(yù)取定址可基于順序、步幅或指標(biāo)信息而形成。用于存儲(chǔ)器密集型工作負(fù)載(例如,處理大數(shù)據(jù)陣列)的此硬件預(yù)取器操作可顯著減少存儲(chǔ)器延時(shí)。然而,數(shù)據(jù)預(yù)取并非不具有其缺點(diǎn)。例如,在用于處理數(shù)據(jù)陣列的軟件循環(huán)中,數(shù)據(jù)預(yù)取器電路預(yù)取待用于循環(huán)的未來反復(fù)中的數(shù)據(jù),所述未來反復(fù)包含循環(huán)的最后反復(fù)。然而,將不使用為循環(huán)的最后反復(fù)而預(yù)取的數(shù)據(jù),且由于在高速緩沖存儲(chǔ)器中存儲(chǔ)將不被使用的此數(shù)據(jù)而發(fā)生高速緩存污染。當(dāng)展開循環(huán)時(shí),高速緩存污染問題會(huì)加重。
【發(fā)明內(nèi)容】
[0004]在本發(fā)明的若干方面當(dāng)中,本發(fā)明認(rèn)識(shí)到,提供用于預(yù)取的更高效方法和設(shè)備可改善處理器系統(tǒng)中的性能且降低其中的功率要求。為這些目的,本發(fā)明的一實(shí)施例提出一種用于取消預(yù)取請(qǐng)求的方法。基于程序流信息的評(píng)估來識(shí)別循環(huán)退出情形。響應(yīng)于識(shí)別到的循環(huán)退出情形而取消未決高速緩存預(yù)取請(qǐng)求。
[0005]另一實(shí)施例提出一種用于取消預(yù)取請(qǐng)求的方法。根據(jù)被呼叫函數(shù)而以推測方式預(yù)取數(shù)據(jù)。響應(yīng)于從被呼叫函數(shù)的函數(shù)退出而取消未決數(shù)據(jù)預(yù)取請(qǐng)求。
[0006]另一實(shí)施例提出一種用于取消預(yù)取請(qǐng)求的設(shè)備。循環(huán)數(shù)據(jù)地址監(jiān)視器經(jīng)配置以基于程序循環(huán)中的存儲(chǔ)器存取指令的重復(fù)執(zhí)行而確定數(shù)據(jù)存取步幅。數(shù)據(jù)預(yù)取邏輯經(jīng)配置以根據(jù)數(shù)據(jù)存取步幅而以推測方式發(fā)出預(yù)取請(qǐng)求。停止預(yù)取電路經(jīng)配置以響應(yīng)于識(shí)別到的循環(huán)退出而取消未決預(yù)取請(qǐng)求。
[0007]另一實(shí)施例提出一種編碼有計(jì)算機(jī)可讀程序數(shù)據(jù)和代碼的計(jì)算機(jī)可讀非暫時(shí)性媒體?;诔绦蛄餍畔⒌脑u(píng)估來識(shí)別循環(huán)退出情形。響應(yīng)于識(shí)別到的循環(huán)退出情形而取消未決高速緩存預(yù)取請(qǐng)求。
[0008]另一實(shí)施例提出一種用于取消預(yù)取請(qǐng)求的設(shè)備。利用用于基于程序循環(huán)中的存儲(chǔ)器存取指令的重復(fù)執(zhí)行而確定數(shù)據(jù)存取步幅的裝置。利用用于根據(jù)數(shù)據(jù)存取步幅而以推測方式發(fā)出預(yù)取請(qǐng)求的裝置。也利用用于響應(yīng)于識(shí)別到的循環(huán)退出而取消未決預(yù)取請(qǐng)求的裝置。
[0009]應(yīng)理解,對(duì)于所屬領(lǐng)域的技術(shù)人員來說,本發(fā)明的其它實(shí)施例將從以下詳細(xì)描述而變得容易顯而易見,在以下詳細(xì)描述中,以說明的方式來展示和描述本發(fā)明的各種實(shí)施例。應(yīng)認(rèn)識(shí)到,本發(fā)明能夠?qū)嵺`其它和不同實(shí)施例且其若干細(xì)節(jié)能夠在其它各方面加以修改,以上所有皆不脫離本發(fā)明的精神和范圍。因此,應(yīng)將圖式和詳細(xì)描述視為本質(zhì)上說明性而非限制性的。
【附圖說明】
[0010]借助于實(shí)例(且并非限制)來說明本發(fā)明的各種方面,在隨附圖式中,其中:
[0011]圖1說明可有利地使用本發(fā)明的一實(shí)施例的示范性處理器系統(tǒng);
[0012]圖2A說明用于在檢測到循環(huán)結(jié)束分支后即取消未決非必要數(shù)據(jù)預(yù)取請(qǐng)求的過程;和
[0013]圖2B說明用于在檢測到函數(shù)返回后即取消未決非必要數(shù)據(jù)預(yù)取請(qǐng)求的過程;和
[0014]圖3說明具有處理器復(fù)合體的便攜式裝置的特定實(shí)施例,所述處理器復(fù)合體經(jīng)配置以取消選定未決數(shù)據(jù)預(yù)取請(qǐng)求以減少高速緩存污染。
【具體實(shí)施方式】
[0015]下文結(jié)合隨附圖式所闡述的詳細(xì)描述希望作為對(duì)本發(fā)明的各種示范性實(shí)施例的描述,且不希望表示可實(shí)踐本發(fā)明的僅有實(shí)施例。所述詳細(xì)描述包含出于提供對(duì)本發(fā)明的透徹理解的目的的特定細(xì)節(jié)。然而,對(duì)于所屬領(lǐng)域的技術(shù)人員將顯而易見,本發(fā)明可在無這些特定細(xì)節(jié)的情況下實(shí)踐。在一些例子中,以框圖形式來展示眾所周知的結(jié)構(gòu)和組件,以便避免使本發(fā)明的概念模糊。
[0016]圖1說明有利地使用本發(fā)明的一實(shí)施例的示范性處理器系統(tǒng)100。所述處理器系統(tǒng)100包含處理器110、高速緩沖存儲(chǔ)器系統(tǒng)112、系統(tǒng)存儲(chǔ)器114以及輸入和輸出(I/O)系統(tǒng)116。例如,高速緩沖存儲(chǔ)器系統(tǒng)112包括I階指令高速緩沖存儲(chǔ)器(Icache) 124、存儲(chǔ)器控制器126和I階數(shù)據(jù)高速緩沖存儲(chǔ)器(Dcache) 128。高速緩沖存儲(chǔ)器系統(tǒng)112也可包含2階統(tǒng)一高速緩沖存儲(chǔ)器(未圖示)或特定實(shí)施方案環(huán)境所需要的其它高速緩沖存儲(chǔ)器組件。系統(tǒng)存儲(chǔ)器114提供對(duì)未見于Icache 124或Dcache 128中的指令和數(shù)據(jù)的存取。注意到,高速緩沖存儲(chǔ)器系統(tǒng)112可與處理器110集成,且也可包含呈階層架構(gòu)組織形式的多階高速緩沖存儲(chǔ)器。I/O系統(tǒng)116包括與處理器110介接的多個(gè)I/O裝置,例如I/O裝置140 和 142。
[0017]本發(fā)明的實(shí)施例可合適地用于具有條件分支指令的處理器中。例如,處理器110包括指令管線120、數(shù)據(jù)預(yù)取邏輯121、預(yù)測邏輯122和堆迭邏輯電路123。指令管線120由一系列級(jí)構(gòu)成,例如,提取和預(yù)取級(jí)130、解碼級(jí)131、指令發(fā)出級(jí)132、操作數(shù)提取級(jí)133、執(zhí)行級(jí)134(例如,用于執(zhí)行加載(Ld)和存儲(chǔ)(St)指令),和完成級(jí)135。所屬領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到,取決于處理器的操作頻率和每一級(jí)中所需的操作的復(fù)雜性,指令管線120中的每一級(jí)130到135可包括數(shù)個(gè)額外管線級(jí)。例如,執(zhí)行級(jí)134可包含一或多個(gè)管線級(jí),所述一或多個(gè)管線級(jí)對(duì)應(yīng)于一或多個(gè)指令執(zhí)行級(jí)電路,例如,加法器、乘法器、邏輯運(yùn)算、加載和存儲(chǔ)操作、移位和旋轉(zhuǎn)操作,和具有更大或更小復(fù)雜性的其它功能電路。例如,當(dāng)執(zhí)行加載指令時(shí),其向Dcache 128請(qǐng)求數(shù)據(jù),且如果所請(qǐng)求的數(shù)據(jù)不存在于Dcache中,那么將提取請(qǐng)求發(fā)出到下一階高速緩沖存儲(chǔ)器或系統(tǒng)存儲(chǔ)器。將此提取請(qǐng)求視為必要請(qǐng)求,這是因?yàn)樵诩虞d指令的狀況下所述請(qǐng)求直接響應(yīng)于指令的執(zhí)行。
[0018]預(yù)取請(qǐng)求為響應(yīng)于例如對(duì)程序循環(huán)的檢測的程序流信息而產(chǎn)生的請(qǐng)求,所述程序循環(huán)在循環(huán)中具有一或多個(gè)加載指令且加載地址基于(例如)步幅。數(shù)據(jù)預(yù)取邏輯121利用可基于經(jīng)檢測循環(huán)的數(shù)個(gè)反復(fù)的此程序流信息,以在發(fā)出預(yù)取請(qǐng)求之前更準(zhǔn)確地識(shí)別加載指令的操作數(shù)地址的必要使用模式。當(dāng)檢測模式時(shí),插入填充請(qǐng)求。處理器110可操作以通過使用與在處理器管線中追蹤的請(qǐng)求相關(guān)聯(lián)的額外旗標(biāo)來區(qū)分必要請(qǐng)求與預(yù)取請(qǐng)求。此旗標(biāo)也可隨請(qǐng)求傳播到每一未處理高速緩存行填充可識(shí)別為預(yù)取填充抑或必要填充的高速緩沖存儲(chǔ)器。管線級(jí)中的每一者可在不脫離本文中所描述的預(yù)取請(qǐng)求取消方法和設(shè)備的情況下具有變化的實(shí)施方案。
[0019]為了最小化可能在程序所需的數(shù)據(jù)不在相關(guān)聯(lián)的I階Dcache 128中的情況下發(fā)生的延遲,提取和預(yù)取級(jí)130記錄與在經(jīng)檢測程序循環(huán)中執(zhí)行的一或多個(gè)存儲(chǔ)器存取指令相關(guān)聯(lián)的程序流信息。程序信息可包含來自解碼級(jí)131的如下指示:已接收加載指令,且在執(zhí)行之前用于加載指令的操作數(shù)地址信息可在管線級(jí)(例如,操作數(shù)提取級(jí)133或執(zhí)行級(jí)134)處可用。數(shù)據(jù)預(yù)取邏輯121在加載地址變得可用于檢測模式時(shí)監(jiān)視所述加載地址。在(例如)通過在循環(huán)的三個(gè)或三個(gè)以上反復(fù)期間監(jiān)視加載指令來確定具有可接受可信度的模式之后,在于循環(huán)中再次遇到加載指令時(shí)之前,發(fā)出對(duì)預(yù)期數(shù)據(jù)的預(yù)取請(qǐng)求。此推測性預(yù)取請(qǐng)求確保在執(zhí)行級(jí)134需要時(shí),所需數(shù)據(jù)在I階Dcache中可用。加載和存儲(chǔ)執(zhí)行級(jí)134接著更有可能直接從I階Dcache存取所需數(shù)據(jù),而無須等待從存儲(chǔ)器階層架構(gòu)中的較高階層存取數(shù)據(jù)。
[0020]數(shù)據(jù)預(yù)取邏輯121也可包含數(shù)據(jù)高速緩存循環(huán)數(shù)據(jù)地址監(jiān)視器以確定數(shù)據(jù)存取步幅。數(shù)據(jù)預(yù)取邏輯121接著以推測方式發(fā)出具有根據(jù)數(shù)據(jù)