相互節(jié)流的通信預(yù)取器的制造方法
【專利說(shuō)明】相互節(jié)流的通信預(yù)取器
[0001]相關(guān)申請(qǐng)的交叉引用
[0002]本申請(qǐng)是于2013年03月11號(hào)提交的、序列號(hào)為13/792,428的美國(guó)非臨時(shí)申請(qǐng)的部分繼續(xù)案(CIP),在此通過(guò)引用將該美國(guó)非臨時(shí)申請(qǐng)全部并入。本申請(qǐng)要求基于2014年5月27日提交的、序列號(hào)為62/003,461的美國(guó)臨時(shí)申請(qǐng)的優(yōu)先權(quán),在此通過(guò)引用將該美國(guó)臨時(shí)申請(qǐng)全部并入。
技術(shù)領(lǐng)域
[0003]本發(fā)明涉及相互節(jié)流的通信預(yù)取器。
【背景技術(shù)】
[0004]當(dāng)高速緩存失效(cache miss)時(shí),微處理器將存取系統(tǒng)存儲(chǔ)器取代存取高速緩存,而此時(shí)需要的時(shí)間將比存取高速緩存、預(yù)取緩沖器或在微處理器本身內(nèi)部的其它存儲(chǔ)元件需要的時(shí)間多一或兩個(gè)數(shù)量級(jí)。因此,為了減小它們的存取延遲,微處理器整合了可檢查最近的數(shù)據(jù)存取模式且嘗試預(yù)測(cè)程序下一步將存取哪個(gè)數(shù)據(jù)的預(yù)取技術(shù)。
[0005]預(yù)取的好處是眾所周知的。然而,預(yù)取亦可能存有不好的效應(yīng)。例如,每個(gè)預(yù)取請(qǐng)求會(huì)占用總線和存儲(chǔ)器的可能已經(jīng)擁塞的帶寬,所述的預(yù)取請(qǐng)求進(jìn)行在處理器總線至存儲(chǔ)器之間。另外,預(yù)取請(qǐng)求可能延遲針對(duì)更迫切需要的數(shù)據(jù)的另一請(qǐng)求。再比如,如果數(shù)據(jù)被預(yù)取到高速緩存,則此預(yù)取的數(shù)據(jù)會(huì)使用一高速緩存線,如此將引起高速緩存存儲(chǔ)器中的另一尚速緩存線的驅(qū)逐(Evict1n)。如果尚速緩存線的被驅(qū)逐頻率尚于尚速緩存線的被預(yù)取的頻率,則所述的預(yù)取很可能對(duì)整體性能是有害的而非有利。因此,需要的是改善的數(shù)據(jù)預(yù)取機(jī)制。
【發(fā)明內(nèi)容】
[0006]在一個(gè)方面中,本發(fā)明提供一種微處理器。該微處理器包括根據(jù)第一算法將數(shù)據(jù)預(yù)取到微處理器的第一硬件數(shù)據(jù)預(yù)取器。該微處理器還包括根據(jù)第二算法將數(shù)據(jù)預(yù)取到微處理器的第二硬件數(shù)據(jù)預(yù)取器,其中第一算法與第二算法不同。第二預(yù)取器檢測(cè)到其正在以超過(guò)第一預(yù)定速率的速率根據(jù)第二算法將數(shù)據(jù)預(yù)取到微處理器,并且作為響應(yīng),向第一預(yù)取器發(fā)送節(jié)流指示。第一預(yù)取器響應(yīng)于從第二預(yù)取器接收到節(jié)流指示而以低于第二預(yù)定速率的速率根據(jù)第一算法將數(shù)據(jù)預(yù)取到微處理器。
[0007]在另一方面中,本發(fā)明提供一種方法。該方法包括:由第一硬件數(shù)據(jù)預(yù)取器根據(jù)第一算法將數(shù)據(jù)預(yù)取到微處理器。該方法還包括由第二硬件數(shù)據(jù)預(yù)取器根據(jù)第二算法將數(shù)據(jù)預(yù)取到微處理器,其中第一算法與第二算法不同。該方法還包括由第二預(yù)取器檢測(cè)到其正在以超過(guò)第一預(yù)定速率的速率根據(jù)第二算法將數(shù)據(jù)預(yù)取到微處理器,并且作為響應(yīng),向第一預(yù)取器發(fā)送節(jié)流指示。該方法還包括由第一預(yù)取器響應(yīng)于從第二預(yù)取器接收到節(jié)流指示而以低于第二預(yù)定速率的速率根據(jù)第一算法將數(shù)據(jù)預(yù)取到微處理器。
[0008]在又一方面中,本發(fā)明提供一種在供與計(jì)算設(shè)備一起使用的至少一個(gè)非瞬時(shí)計(jì)算機(jī)可用介質(zhì)中編碼的計(jì)算機(jī)程序產(chǎn)品,該計(jì)算機(jī)程序產(chǎn)品包括在所述介質(zhì)中具體實(shí)現(xiàn)的計(jì)算機(jī)可用程序代碼,用于指定微處理器。該計(jì)算機(jī)可用程序代碼包括第一程序代碼,用于指定根據(jù)第一算法將數(shù)據(jù)預(yù)取到微處理器的第一硬件數(shù)據(jù)預(yù)取器。該計(jì)算機(jī)可用程序代碼還包括第二程序代碼,用于指定根據(jù)第二算法將數(shù)據(jù)預(yù)取到微處理器的第二硬件數(shù)據(jù)預(yù)取器,其中第一算法與第二算法不同。第二預(yù)取器檢測(cè)到其正在以超過(guò)第一預(yù)定速率的速率根據(jù)第二算法將數(shù)據(jù)預(yù)取到微處理器,并且作為響應(yīng),向第一預(yù)取器發(fā)送節(jié)流指示。第一預(yù)取器響應(yīng)于從第二預(yù)取器接收到節(jié)流指示而以低于第二預(yù)定速率的速率根據(jù)第一算法將數(shù)據(jù)預(yù)取到微處理器。
【附圖說(shuō)明】
[0009]圖1是圖示出微處理器的方框圖。
[0010]圖2是圖示出圖1的微處理器中第一預(yù)取器和第二預(yù)取器的通信操作的流程圖。
[0011]圖3是圖示出圖1的微處理器的操作的流程圖,更具體地,圖示第一預(yù)取器和第二預(yù)取器的通信操作的流程圖。
【具體實(shí)施方式】
[0012]現(xiàn)在參照?qǐng)D1,顯示了示出微處理器100的方框圖。微處理器100包括階段的管線,其包括各種功能單元。管線包括指令高速緩存(Instruct1n Cache) 102,指令高速緩存102親合到指令譯碼器(Instruct1n Decoder) 104,指令譯碼器104親合到寄存器別名表(Register Alias Table, RAT) 106,寄存器別名表(RAT) 106f禹合到保留站 108 (Reservat1nstat1n),保留站108親合到執(zhí)行單元112,執(zhí)行單元112親合到回退單元(Retireunit) 114。指令譯碼器104可以包括指令翻譯器,其將(如,x86架構(gòu)的)宏指令翻譯成微處理器100的類似RISC的微架構(gòu)的微指令集。保留站108將指令發(fā)布給執(zhí)行單元112用于不按程序順序的執(zhí)行?;赝藛卧?14包括重新排序緩沖器,以程序順序執(zhí)行指令的回退(retirement)。執(zhí)行單元112包括加載/存儲(chǔ)單元134和其它執(zhí)行單元132,比如整數(shù)單元、浮點(diǎn)單元、分支單元或單指令多重資料數(shù)據(jù)(SIMD)單元。加載/存儲(chǔ)單元134從級(jí)別-1 (LI)數(shù)據(jù)高速緩存116讀取數(shù)據(jù)且存儲(chǔ)單元134將數(shù)據(jù)寫(xiě)入LI數(shù)據(jù)高速緩存116。級(jí)別-2(L2)高速緩存118支援(back) LI數(shù)據(jù)高速緩存116和指令高速緩存102。L2高速緩存118經(jīng)由總線接口單元122讀取和寫(xiě)入系統(tǒng)存儲(chǔ)器,所述總線接口單元122將微處理器100接口連接到系統(tǒng)存儲(chǔ)器(未示出)所耦合的總線148,比如局部總線或存儲(chǔ)總線。微處理器100還包括預(yù)取單元124,其將數(shù)據(jù)從系統(tǒng)存儲(chǔ)器預(yù)取到如這里詳細(xì)描述的L2高速緩存118和/或LI數(shù)據(jù)高速緩存116中。
[0013]預(yù)取單元124包括第一預(yù)取器142和第二預(yù)取器144。數(shù)據(jù)預(yù)取器,比如第一預(yù)取器142和第二預(yù)取器144,是將數(shù)據(jù)預(yù)取到微處理器的裝置。將數(shù)據(jù)預(yù)取到微處理器意味著檢查微處理器正在執(zhí)行的程序所產(chǎn)生的存儲(chǔ)器的存取流,基于檢查到的存取流預(yù)測(cè)在不久的將來(lái)程序?qū)⒁嫒〉臄?shù)據(jù)的一個(gè)或多個(gè)位置,并將數(shù)據(jù)從預(yù)測(cè)的一個(gè)或多個(gè)位置預(yù)取到微處理器(希望在程序請(qǐng)求該數(shù)據(jù)之前)。存儲(chǔ)器的存取流可以是讀取或?qū)懭霐?shù)據(jù)的兩個(gè)或多個(gè)請(qǐng)求,其中兩個(gè)或多個(gè)請(qǐng)求中的每個(gè)請(qǐng)求會(huì)指定在存儲(chǔ)器中的存儲(chǔ)地址,此存儲(chǔ)地址為可識(shí)別數(shù)據(jù)的位置。值得一提的是,第一預(yù)取器142和第二預(yù)取器144經(jīng)由通信信號(hào)146相互通信以便潛在地改善預(yù)取單元124的預(yù)取有效性以及所伴隨的包括微處理器100和系統(tǒng)存儲(chǔ)器的系統(tǒng)的整體性能。特別地,在第一預(yù)取器142和第二預(yù)取器144之間的通信可以導(dǎo)致處理器總線148和/或系統(tǒng)存儲(chǔ)器以及高速緩存存儲(chǔ)器116/118的帶寬更有效的利用。
[0014]數(shù)據(jù)預(yù)取器,比如第一預(yù)取器142和第二預(yù)取器144,可根據(jù)一算法來(lái)進(jìn)行預(yù)取,該算法是用來(lái)預(yù)測(cè)預(yù)備預(yù)取的數(shù)據(jù)的一個(gè)或多個(gè)位置。例如,簡(jiǎn)單的算法是下一個(gè)順序的算法,該算法根據(jù)預(yù)取器檢查程序流中存儲(chǔ)器存取的位置,并預(yù)測(cè)程序?qū)南乱粋€(gè)順序的位置存取數(shù)據(jù)。(一般來(lái)說(shuō),整個(gè)高速緩存線會(huì)被預(yù)取到微處理器的高速緩存存儲(chǔ)器中。因此,預(yù)取器預(yù)備預(yù)取的數(shù)據(jù)其存儲(chǔ)位置,會(huì)與程序存取指定的數(shù)據(jù)的存儲(chǔ)位置相鄰。)下一個(gè)順序的高速緩存線可以處于在存儲(chǔ)器中從程序流存取的位置其向上方向或向下方向。預(yù)取器可以查看程序流中兩個(gè)相鄰的存取以確定向上或向下的方向。再如,根據(jù)步幅檢測(cè)算法,預(yù)取器可以檢測(cè)在時(shí)間上,相鄰的存儲(chǔ)器的存取流之間的步幅模式,并基于步幅模式進(jìn)行預(yù)測(cè)。也就是說(shuō),預(yù)取器尋找在時(shí)間上相鄰的存儲(chǔ)器存取之間的間隔距離,且預(yù)測(cè)后面的程序存取將來(lái)自彼此的距離為該間隔距離的位置。例如,預(yù)取器可以看到存取位置4、8和12的存取流,并檢測(cè)為4的間隔距離以及預(yù)測(cè)下一個(gè)存取將在位置16。使用更復(fù)雜的步幅算法的預(yù)取器可以檢測(cè)出現(xiàn)在一個(gè)模式中具有不同間隔距離的流。例如,預(yù)取器可以看到存取位置4、8、10、14和16的存取流,并檢測(cè)為4的第一間隔距離和為2的第二間隔距離以及預(yù)測(cè)下兩個(gè)存取將在位置20和22。再比如,可以使用預(yù)取器用來(lái)檢測(cè)在存儲(chǔ)塊內(nèi)的、相對(duì)獨(dú)立于存取發(fā)生的時(shí)間順序的存儲(chǔ)器存取模式的算法。在實(shí)際上根據(jù)2011年2月24日提交的美國(guó)專利申請(qǐng)第13/033,765號(hào)描述的“邊界框預(yù)取器”中使用這樣的算法的例子,該美國(guó)專利申請(qǐng)要求美國(guó)臨時(shí)申請(qǐng)第61/318,594號(hào)的優(yōu)先權(quán)且在2011年9月29日被公布,美國(guó)專利公開(kāi)號(hào)為2011/0238922,這里通過(guò)引用將其全部公開(kāi)內(nèi)容結(jié)合于此。第一預(yù)取器142和第二預(yù)取器144使用不同的預(yù)取算法。
[0015]通信的預(yù)取器停止/恢復(fù)
[0016]現(xiàn)在參照?qǐng)D2,顯示了示出圖1的微處理器100、更特別的是,第一預(yù)取器142和第二預(yù)取器144的通信操作的流程圖。流程以方框202和204開(kāi)始。
[0017]在方框202,第一預(yù)取器142根據(jù)第一