數(shù)據(jù)處理裝置中的自適應(yīng)預(yù)取的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)處理裝置。更特別地,本發(fā)明涉及數(shù)據(jù)處理裝置中對(duì)數(shù)據(jù)值的預(yù)取。
【背景技術(shù)】
[0002]執(zhí)行一系列程序指令的數(shù)據(jù)處理裝置具有預(yù)取器是公知的,該預(yù)取器力圖在那些數(shù)據(jù)值被數(shù)據(jù)處理裝置的指令執(zhí)行單元請(qǐng)求之前,從存儲(chǔ)器讀取數(shù)據(jù)值用于存儲(chǔ)在指令執(zhí)行單元本地的緩存中。在這種數(shù)據(jù)處理裝置中與從存儲(chǔ)器中讀取數(shù)據(jù)值相關(guān)聯(lián)的存儲(chǔ)器延遲可能是顯著的,如果不提供這種預(yù)取能力,數(shù)據(jù)處理裝置的操作將存在嚴(yán)重的性能障礙。
[0003]這種預(yù)取器對(duì)它提前預(yù)取到緩存中的數(shù)據(jù)值的數(shù)量進(jìn)行動(dòng)態(tài)調(diào)整也是公知的。一方面,如果在處理器(指令執(zhí)行單元)的行動(dòng)之前預(yù)取器不預(yù)取足夠遠(yuǎn),處理器將趕上預(yù)取器,并將力圖在數(shù)據(jù)值被從存儲(chǔ)器讀取之前訪問緩存中的數(shù)據(jù)值,要求處理器在相應(yīng)的存儲(chǔ)器訪問完成的同時(shí)進(jìn)行等待。另一方面,如果預(yù)取器提前預(yù)取數(shù)據(jù)值過遠(yuǎn),在被要求之前數(shù)據(jù)值將被長時(shí)間地存儲(chǔ)在緩存中,存在被其間的其它存儲(chǔ)器訪問請(qǐng)求從緩存中驅(qū)逐的風(fēng)險(xiǎn)。取決于所實(shí)現(xiàn)的數(shù)據(jù)處理的本質(zhì),這些相互競爭的約束之間的合適的平衡可能不同,因此預(yù)取器被配置為動(dòng)態(tài)(即在數(shù)據(jù)處理裝置的操作過程中)調(diào)整其預(yù)取距離(即在它操作的處理器之前多遠(yuǎn))。
【發(fā)明內(nèi)容】
[0004]從第一方面看,本發(fā)明提供一種數(shù)據(jù)處理裝置,包括:
[0005]指令執(zhí)行單元,該指令執(zhí)行單元被配置為執(zhí)行一系列程序指令,其中對(duì)程序指令中的至少一些程序指令的執(zhí)行發(fā)起從存儲(chǔ)器讀取數(shù)據(jù)值的存儲(chǔ)器訪問請(qǐng)求;
[0006]緩存單元,該緩存單元被配置為存儲(chǔ)從存儲(chǔ)器中讀取的數(shù)據(jù)值的副本;以及
[0007]預(yù)取單元,該預(yù)取單元被配置為在數(shù)據(jù)值被指令執(zhí)行單元請(qǐng)求之前,通過推斷存儲(chǔ)器訪問請(qǐng)求的當(dāng)前數(shù)據(jù)值訪問模式以預(yù)測(cè)將被指令執(zhí)行單元請(qǐng)求的將來的數(shù)據(jù)值并預(yù)取該將來的數(shù)據(jù)值,來從存儲(chǔ)器預(yù)取數(shù)據(jù)值用于存儲(chǔ)在緩存單元中,
[0008]其中預(yù)取單元被配置為處理錯(cuò)過響應(yīng),這包括增加它在存儲(chǔ)器訪問請(qǐng)求指定等待(pending)數(shù)據(jù)值(即已經(jīng)經(jīng)歷預(yù)取但還未被存儲(chǔ)在緩存單元中的數(shù)據(jù)值)時(shí)預(yù)取的將來數(shù)據(jù)值的數(shù)量,
[0009]其中預(yù)取單元被配置為:響應(yīng)于禁止條件被滿足,而在禁止期暫時(shí)禁止錯(cuò)過響應(yīng)。
[0010]根據(jù)本技術(shù)的預(yù)取單元被配置為動(dòng)態(tài)調(diào)整其預(yù)取距離,S卩,在那些數(shù)據(jù)值被由指令執(zhí)行單元發(fā)出的存儲(chǔ)器訪問實(shí)際請(qǐng)求之前,它對(duì)其發(fā)起預(yù)取的那些將來數(shù)據(jù)值的數(shù)量。應(yīng)當(dāng)理解本文中術(shù)語“數(shù)據(jù)值”應(yīng)當(dāng)被解釋為概括地覆蓋指令和數(shù)據(jù)。通過監(jiān)視從指令執(zhí)行單元接收到的存儲(chǔ)器訪問請(qǐng)求以及判定它們是否被已經(jīng)被預(yù)取并被存儲(chǔ)在緩存單元中的數(shù)據(jù)值成功地預(yù)期,這種動(dòng)態(tài)調(diào)整得以實(shí)現(xiàn)。特別地,預(yù)取單元被配置為通過處理錯(cuò)過響應(yīng)來調(diào)整預(yù)取距離,其中當(dāng)接收到的存儲(chǔ)器訪問請(qǐng)求指定已經(jīng)是預(yù)取對(duì)象但還未被存儲(chǔ)在緩存單元中的數(shù)據(jù)值時(shí)預(yù)取單元預(yù)取的數(shù)據(jù)值的數(shù)量被增加。也就是說,通常在這種情況下的解釋是預(yù)取器已經(jīng)正確地預(yù)測(cè)該數(shù)據(jù)值將被由指令執(zhí)行單元發(fā)起的存儲(chǔ)器訪問請(qǐng)求需要,但還未提前發(fā)起對(duì)該數(shù)據(jù)值的足夠遠(yuǎn)的預(yù)取使得其到從指令執(zhí)行單元接收到存儲(chǔ)器訪問的時(shí)候在緩存單元中已經(jīng)可用。因此,根據(jù)該解釋,預(yù)取單元可以通過增加它預(yù)取的數(shù)據(jù)值的數(shù)量來減小將來發(fā)生這種情況的可能性,即,增加它的預(yù)取距離,使得對(duì)預(yù)測(cè)將被指令執(zhí)行單元要求的給定數(shù)據(jù)值的預(yù)取在它實(shí)際上被指令執(zhí)行單元要求之前更早被發(fā)起。
[0011]然而,本技術(shù)意識(shí)到,每次從指定已經(jīng)經(jīng)歷預(yù)取但還未被存儲(chǔ)在緩存中的數(shù)據(jù)值的指令執(zhí)行單元接收到存儲(chǔ)器訪問請(qǐng)求時(shí),預(yù)取單元可能并不總是需要增加它的預(yù)取距離。例如,本技術(shù)意識(shí)到,在由數(shù)據(jù)處理裝置實(shí)現(xiàn)數(shù)據(jù)處理活動(dòng)的過程中,可能發(fā)生一些情況,其中增加預(yù)取距離并不一定會(huì)引起數(shù)據(jù)處理性能的改善,因此實(shí)際上可能是不需要的。因此,本技術(shù)規(guī)定預(yù)取單元可以附加地監(jiān)視禁止條件,并且當(dāng)這種禁止條件被滿足時(shí),預(yù)取單元被配置為在預(yù)定禁止期內(nèi)暫時(shí)禁止通常的錯(cuò)過響應(yīng)(即增加預(yù)取距離)。因而,這使得預(yù)取單元能夠標(biāo)識(shí)那些通過增加預(yù)取距離數(shù)據(jù)將不會(huì)改善處理裝置的性能的情況,并暫時(shí)阻止那種通常響應(yīng)。
[0012]禁止條件可以以多種不同的方式被配置,但是在一個(gè)實(shí)施例中,禁止條件包括對(duì)強(qiáng)制錯(cuò)過條件的標(biāo)識(shí),其中,當(dāng)存儲(chǔ)器訪問請(qǐng)求指定的等待數(shù)據(jù)值必然未被存儲(chǔ)在緩存單元中時(shí),強(qiáng)制錯(cuò)過條件被滿足。因此,在等待數(shù)據(jù)值必然未被存儲(chǔ)在緩存中(即預(yù)取單元的其他配置也不能避免數(shù)據(jù)值還未被存儲(chǔ)在緩存單元中這一事實(shí))的情況下,則預(yù)取單元的配置(特別是它的預(yù)取距離)不被改變是有利的。
[0013]強(qiáng)制錯(cuò)過條件可能因?yàn)樵S多原因出現(xiàn),但是在一個(gè)實(shí)施例中,當(dāng)存儲(chǔ)器訪問請(qǐng)求不可預(yù)取時(shí),強(qiáng)制錯(cuò)過條件被滿足。存儲(chǔ)器訪問請(qǐng)求不可預(yù)取的事實(shí)由此提供了一個(gè)理由來解釋為什么預(yù)取單元的配置(特別是它的預(yù)取距離)不是問題,即,并不是它造成等待數(shù)據(jù)值還未被存儲(chǔ)在緩存單元中。
[0014]在一些實(shí)施例中,預(yù)取單元被配置為針對(duì)每個(gè)存儲(chǔ)器訪問請(qǐng)求執(zhí)行步幅(stride)檢查,其中步幅檢查判定存儲(chǔ)器訪問請(qǐng)求是否確實(shí)推斷當(dāng)前的數(shù)據(jù)值訪問模式,并且其中數(shù)據(jù)處理裝置中的存儲(chǔ)器地址在存儲(chǔ)器頁中被管理,并且其中預(yù)取單元被配置為:響應(yīng)于一組與將來數(shù)據(jù)值數(shù)量對(duì)應(yīng)的存儲(chǔ)器地址跨越頁邊界,抑制步幅檢查。為了成功地推斷指令執(zhí)行單元發(fā)出的存儲(chǔ)器訪問請(qǐng)求的當(dāng)前數(shù)據(jù)值訪問模式,預(yù)取單元通??梢员慌渲脼獒槍?duì)每個(gè)新的存儲(chǔ)器訪問請(qǐng)求檢查相應(yīng)的新地址是否確實(shí)與預(yù)測(cè)的步幅匹配(即數(shù)據(jù)值訪問模式推斷),但是當(dāng)頁邊界被跨越時(shí),由于可以合理地預(yù)期這種步幅檢查無論如何都不會(huì)引起匹配,所以可以抑制步幅檢查以節(jié)省不必要的處理。
[0015]在一些實(shí)施例中,數(shù)據(jù)處理裝置中的存儲(chǔ)器地址在存儲(chǔ)器頁中被管理,當(dāng)與將來數(shù)據(jù)值數(shù)量相對(duì)應(yīng)的一組存儲(chǔ)器地址跨越頁邊界時(shí),禁止被滿足。當(dāng)被預(yù)取單元預(yù)取的那些將來數(shù)據(jù)值跨越頁邊界時(shí),這意味著那些數(shù)據(jù)值的第一子集在一個(gè)存儲(chǔ)器頁中,而那些數(shù)據(jù)值的第二部分在第二存儲(chǔ)器頁中。由于一個(gè)存儲(chǔ)器頁的物理地址與第二存儲(chǔ)器頁的物理地址之間沒有關(guān)聯(lián),這造成預(yù)取單元根本不可能成功地預(yù)測(cè)并預(yù)取相應(yīng)的目標(biāo)數(shù)據(jù)值的情況。
[0016]在一些實(shí)施例中,預(yù)取單元被配置使得在將來數(shù)據(jù)值的數(shù)量(即預(yù)取距離)被增加之后的預(yù)定時(shí)期內(nèi),禁止條件被滿足。已經(jīng)認(rèn)識(shí)到,由于存儲(chǔ)器訪問延遲,當(dāng)預(yù)取距離增加時(shí),正經(jīng)歷預(yù)取(且與特定的程序指令相對(duì)應(yīng))的存儲(chǔ)器訪問請(qǐng)求的數(shù)量隨后將在緩存單元的內(nèi)容中已經(jīng)產(chǎn)生相應(yīng)的變化之前增加。因此會(huì)有一段中間時(shí)間,在這段時(shí)間中對(duì)要禁止的錯(cuò)過響應(yīng)(即進(jìn)一步增加預(yù)取距離)是有利的。事實(shí)上,可以想到這樣的正反饋場(chǎng)景:預(yù)取距離可能被反復(fù)地增加。雖然在更簡單的指令執(zhí)行單元中這通常不是問題,但是在多線程指令執(zhí)行單元的情況中,指令執(zhí)行單元將被第一個(gè)實(shí)例阻塞,因?yàn)榈却龜?shù)據(jù)值還未被存儲(chǔ)在緩存單元中;即,更加可能出現(xiàn)與已經(jīng)經(jīng)歷預(yù)取但還未被存儲(chǔ)在緩存單元中的數(shù)據(jù)值相關(guān)的這種反復(fù)的存儲(chǔ)器訪問請(qǐng)求,以及針對(duì)這種反復(fù)增加預(yù)取距離而發(fā)生的緩和訴求。
[0017]取決于數(shù)據(jù)處理裝置的具體約束,可以以各種方式對(duì)禁止期的持續(xù)時(shí)間進(jìn)行配置,但是在一個(gè)實(shí)施例中禁止期是數(shù)據(jù)處理裝置的標(biāo)準(zhǔn)存儲(chǔ)器延遲的倍數(shù),存儲(chǔ)器延遲代表數(shù)據(jù)值從存儲(chǔ)器中被讀取所需要的時(shí)間。禁止期從而可以被安排,使得在標(biāo)準(zhǔn)存儲(chǔ)器延遲的這個(gè)倍數(shù)經(jīng)過之前,預(yù)取單元預(yù)取的將來值數(shù)量(即預(yù)取距離)的調(diào)整不可以被增加。例如,在由于預(yù)取距離最近剛