專利名稱:自適應(yīng)預(yù)取的制作方法
技術(shù)領(lǐng)域:
本發(fā)明的實(shí)施例涉及微處理器和微處理器系統(tǒng)。更特別地,本發(fā)明的實(shí)施例屬于管理由微處理器從存儲(chǔ)器預(yù)取數(shù)據(jù)的技術(shù)。
背景技術(shù):
在現(xiàn)代計(jì)算系統(tǒng)中,可以在微處理器執(zhí)行使用數(shù)據(jù)的指令之前,從存儲(chǔ)器檢索該數(shù)據(jù)并將其存儲(chǔ)在位于微處理器內(nèi)或者位于其外的高速緩存中。這種稱為“預(yù)取”的技術(shù)通過使用從存儲(chǔ)器將數(shù)據(jù)取入相應(yīng)的高速緩存行的歷史(例如啟發(fā)式)來預(yù)測未來如何取數(shù)據(jù),從而使得處理器能夠避免與從存儲(chǔ)器源(例如DRAM)檢索(“取”)數(shù)據(jù)相關(guān)的延遲。
如果由為其預(yù)取了數(shù)據(jù)的處理器執(zhí)行的指令從未使用預(yù)取的數(shù)據(jù),則會(huì)導(dǎo)致過度預(yù)取。這可能由例如不準(zhǔn)確地預(yù)測或者不合時(shí)的預(yù)取而引起。不準(zhǔn)確地預(yù)測或者不合時(shí)的預(yù)取是指,按照行來取數(shù)據(jù)并且在由常規(guī)的分配策略從高速緩存中清除一數(shù)據(jù)行之前未使用該數(shù)據(jù)行的預(yù)取。此外,在多處理器系統(tǒng)中或在多核處理器中,過度預(yù)取會(huì)導(dǎo)致將仍然由另一個(gè)處理器或者處理器核當(dāng)前使用的數(shù)據(jù)取入一個(gè)處理器。這會(huì)妨礙被剝奪了數(shù)據(jù)的處理器的性能。此外,如果被剝奪了數(shù)據(jù)的處理器最初預(yù)取或者再次使用該數(shù)據(jù),則預(yù)取處理器不能受益于該數(shù)據(jù)。另外,過度預(yù)取會(huì)引起或者導(dǎo)致在指令使用先前的預(yù)取數(shù)據(jù)之前,該預(yù)取數(shù)據(jù)被后來的預(yù)取替換。
過度預(yù)取會(huì)以多種方式降低系統(tǒng)的性能。例如,預(yù)取使用從處理器到存儲(chǔ)器的總線資源和帶寬。因此,過度預(yù)取會(huì)增加總線通信量,并且由于無益于數(shù)據(jù)取的效率,從而會(huì)增加其他指令經(jīng)歷的延遲。另外,因?yàn)轭A(yù)取的數(shù)據(jù)會(huì)替換已在相應(yīng)的高速緩存行中的數(shù)據(jù),所以過度預(yù)取會(huì)使高速緩存中有用的數(shù)據(jù)被不常使用的或者在某些情況下根本不使用的數(shù)據(jù)替換。最后,通過強(qiáng)制處理器或者處理器核在其對(duì)高速緩存行執(zhí)行數(shù)據(jù)更新之前放棄它對(duì)高速緩存行的獨(dú)占所有權(quán),過度預(yù)取會(huì)導(dǎo)致可以共享高速緩存行的許多處理器、或者處理器核之間的預(yù)取的高速緩存行的所有權(quán)的過早的轉(zhuǎn)移。
通過示例而非限制附圖中的圖形的方式來說明本發(fā)明的實(shí)施例,其中,相同的標(biāo)記表示類似的部分,其中圖1表示根據(jù)本發(fā)明一個(gè)實(shí)施例的高速緩沖存儲(chǔ)器,其中,各個(gè)高速緩存行與一個(gè)或者多個(gè)屬性位相關(guān)聯(lián);圖2表示其中會(huì)使用本發(fā)明的至少一個(gè)實(shí)施例的計(jì)算機(jī)系統(tǒng)存儲(chǔ)器層次;圖3是根據(jù)一個(gè)實(shí)施例的流程圖,其表示與檢查關(guān)聯(lián)于一個(gè)或者多個(gè)高速緩存行的屬性相關(guān)聯(lián)的操作;圖4表示其中會(huì)使用本發(fā)明的至少一個(gè)實(shí)施例的共享總線計(jì)算機(jī)系統(tǒng);圖5表示其中會(huì)使用本發(fā)明的至少一個(gè)實(shí)施例的點(diǎn)到點(diǎn)總線計(jì)算機(jī)系統(tǒng);圖6表示根據(jù)本發(fā)明的一個(gè)實(shí)施例的預(yù)取設(shè)置(prefetch_set)指令的操作。
具體實(shí)施例方式
本發(fā)明的實(shí)施例涉及微處理器和微處理器系統(tǒng)。更特別地,本發(fā)明的實(shí)施例涉及使用存儲(chǔ)器屬性位來修改由處理器執(zhí)行的預(yù)取的量。
在本發(fā)明的一個(gè)實(shí)施例中,裝滿預(yù)取數(shù)據(jù)的高速緩存行可以被標(biāo)記為已經(jīng)由預(yù)取裝滿。在本發(fā)明的一個(gè)實(shí)施例中,當(dāng)對(duì)于常規(guī)的存儲(chǔ)器操作訪問高速緩存行時(shí),裝滿預(yù)取數(shù)據(jù)的高速緩存行使它們的屬性被清除。這使得系統(tǒng)能夠知道哪個(gè)高速緩存行已經(jīng)被預(yù)取并且還沒有被指令使用。在一個(gè)實(shí)施例中,與存儲(chǔ)器的特定段、或者“塊”相關(guān)聯(lián)的存儲(chǔ)器屬性可以被用于指示該存儲(chǔ)塊的各種性質(zhì),包括是否已經(jīng)預(yù)取了存儲(chǔ)在該存儲(chǔ)塊中的數(shù)據(jù)并且還未使用,或者已經(jīng)預(yù)取并且隨后由指令使用,或者是否沒有通過預(yù)取取入塊。
如果預(yù)取的高速緩存行被清除或無效,而未被指令使用,那么在一個(gè)實(shí)施例中,類故障生成(fault-like yield)會(huì)導(dǎo)致執(zhí)行一個(gè)或多個(gè)結(jié)構(gòu)化編程情節(jié)(architecturally-programmed scenarios)。類故障生成會(huì)用于調(diào)用程序中的軟件例程,其被執(zhí)行以調(diào)整導(dǎo)致類故障生成的數(shù)據(jù)預(yù)取的策略。在另一個(gè)實(shí)施例中,預(yù)取硬件可以追蹤在使用之前被清除或無效的預(yù)取的行的數(shù)量,以便于動(dòng)態(tài)地調(diào)整預(yù)取策略而無需程序的干涉。通過監(jiān)控未使用數(shù)據(jù)的預(yù)取并適合于過度預(yù)取,至少一個(gè)實(shí)施例允許動(dòng)態(tài)調(diào)整預(yù)取以提高效率,減少無用的總線通信量,并幫助防止過早清除或者無效高速緩存行數(shù)據(jù)。
在一個(gè)實(shí)施例中,存儲(chǔ)器的每個(gè)塊可以對(duì)應(yīng)于特定的高速緩存行,例如1級(jí)(L1)或2級(jí)(L2)高速緩沖存儲(chǔ)器中的高速緩存行,并且可以使用位于高速緩沖存儲(chǔ)器的行內(nèi)的或者與其相關(guān)聯(lián)的位存儲(chǔ)位置來表示預(yù)取屬性。在其他實(shí)施例中,對(duì)于其可以關(guān)聯(lián)預(yù)取屬性的存儲(chǔ)器的塊可以包括一個(gè)以上的高速緩存存儲(chǔ)器行或者可以與另一種類型的存儲(chǔ)器相關(guān)聯(lián),例如DRAM。
圖1表示根據(jù)本發(fā)明的一個(gè)實(shí)施例的一部分高速緩沖存儲(chǔ)器,其中的每個(gè)行都具有相關(guān)聯(lián)的一組屬性位存儲(chǔ)位置。圖1表示包括高速緩存行105的高速緩沖存儲(chǔ)器100,所述高速緩存行105對(duì)應(yīng)于存儲(chǔ)器(未示出)的特定塊。高速緩存行105具有與其相關(guān)聯(lián)的,將以存儲(chǔ)位置110中的位的形式存儲(chǔ)的多個(gè)屬性。在一個(gè)實(shí)施例中,該存儲(chǔ)位置是相應(yīng)的高速緩存行的擴(kuò)展,而在其他實(shí)施例中,可以使用另一種類型的存儲(chǔ)區(qū)域。在存儲(chǔ)位置110中是與高速緩存行105相關(guān)聯(lián)的一組屬性位115,其可以存儲(chǔ)表示該高速緩存行的各種性質(zhì)的位,其可以由訪問高速緩存行的軟件程序來使用。
在圖1所示的實(shí)施例中,一組屬性位包含四個(gè)位,其可以根據(jù)如何分配屬性位來表示高速緩存行的一個(gè)或多個(gè)性質(zhì)。在一個(gè)實(shí)施例中,該屬性位指示相應(yīng)的預(yù)取高速緩存行是否已被指令使用。例如,在一個(gè)實(shí)施例中,預(yù)取到圖1的一個(gè)高速緩存行中的數(shù)據(jù)可以具有其相應(yīng)的屬性位,該屬性位設(shè)置為值“1”,直到并且除非該數(shù)據(jù)后來被由處理器或處理器核執(zhí)行的指令使用,在這種情況下,使用過的數(shù)據(jù)的屬性位被設(shè)置為值“0”。在另一個(gè)實(shí)施例中,屬性位可以指示其他權(quán)限、性質(zhì)等等。
除了該屬性位外,高速緩存的每個(gè)行還具有與其相關(guān)聯(lián)的、存儲(chǔ)在狀態(tài)存儲(chǔ)位置120中的狀態(tài)值。例如,在一個(gè)實(shí)施例中,狀態(tài)存儲(chǔ)位置120包含與高速緩存行105相關(guān)聯(lián)的狀態(tài)位矢量、或者狀態(tài)域125,其指示該高速緩存行是否處于修改狀態(tài)(M)、獨(dú)占狀態(tài)(E)、共享狀態(tài)(S)、或者無效狀態(tài)(I)。所述MESI狀態(tài)能夠控制各種軟件線程、核、或者處理器是否可以使用和/或修改存儲(chǔ)在特定高速緩存行中的信息。在一些實(shí)施例中,所述MESI狀態(tài)屬性包括在高速緩存行105的屬性位115中。
通過預(yù)測預(yù)取什么行的硬件裝置,或者通過軟件或預(yù)取指令形式的軟件命令在其預(yù)測中指導(dǎo),或者通過硬件裝置和軟件命令的任意組合來引發(fā)預(yù)取??梢酝ㄟ^改變用于預(yù)測預(yù)取什么行的硬件裝置來控制預(yù)取。如果硬件預(yù)取預(yù)測器或者軟件預(yù)取命令指示可以潛在地進(jìn)行預(yù)取,則還可以通過增加不預(yù)取什么行的某些啟發(fā)式規(guī)則來控制預(yù)取??梢詾樗蓄A(yù)取處理關(guān)于預(yù)取和預(yù)取的過濾的策略,或者根據(jù)預(yù)取地址落入什么地址范圍或者應(yīng)用程序位于程序的什么部分來單獨(dú)地為每個(gè)預(yù)取處理策略。對(duì)預(yù)取的控制將特定于給定的實(shí)現(xiàn)并且可選地能結(jié)構(gòu)化地可視為一組機(jī)器寄存器。
例如,在本發(fā)明的一個(gè)實(shí)施例中,清除或者無效仍未使用的預(yù)取的高速緩存行會(huì)導(dǎo)致關(guān)于將預(yù)取什么行的策略的改變。在其它實(shí)施例中,未使用預(yù)取(例如,由預(yù)取的高速緩存行的清除所指示)的數(shù)量(“n”)和/或預(yù)取高速緩存行的無效或清除的數(shù)量(“m”)可以使預(yù)取算法改變,以減少高速緩存行的預(yù)取的數(shù)量,直到屬性位和高速緩存行狀態(tài)指示所預(yù)取的高速緩存行被指令更加頻繁地使用。
圖2是從在計(jì)算機(jī)系統(tǒng)中處理器核上執(zhí)行的軟件線程的角度,對(duì)本發(fā)明的實(shí)施例如何可以簡化高速緩沖存儲(chǔ)器的組織結(jié)構(gòu)進(jìn)行的概念說明。例如,在圖2中,每個(gè)線程都可以概念化為具有相關(guān)聯(lián)的高速緩沖存儲(chǔ)器205-20m的單個(gè)線程核201-20n,所述高速緩沖存儲(chǔ)器205-20m由高速緩存行組成,所述高速緩存行被指定為僅由在概念化的單線程核上運(yùn)行的特定的相應(yīng)線程來控制。例如,在一個(gè)實(shí)施例中,概念化的高速緩沖存儲(chǔ)器205-20m可以只具有其MESI狀態(tài),該狀態(tài)由線程改變,所述線程用單線程核201-20n表示。雖然事實(shí)上每個(gè)高速緩沖存儲(chǔ)器205-20m都可以由分布在一個(gè)或多個(gè)高速緩沖存儲(chǔ)器上的高速緩存行組成,但是以圖2中所示的方式來概念化設(shè)置對(duì)理解本發(fā)明的特定實(shí)施例是有用的。
在本發(fā)明的一個(gè)實(shí)施例中,可以通過特定操作,例如指令或者從指令解碼的微操作來訪問、改變和控制與存儲(chǔ)塊相關(guān)聯(lián)的屬性。例如,在一個(gè)實(shí)施例中,可以使用一指令(例如,“l(fā)oad_set”指令),其從高速緩存行加載信息并且設(shè)置相應(yīng)的屬性位。在其它實(shí)施例中,除了load_set指令外,還可以使用一指令(例如,“l(fā)oad_check”指令),其從高速緩存行加載信息并檢查相應(yīng)的屬性位。
在一個(gè)實(shí)施例中,可以使用從存儲(chǔ)器向高速緩存行預(yù)取數(shù)據(jù)并且設(shè)置相應(yīng)的屬性位以指示數(shù)據(jù)已被指令使用的指令。在其他實(shí)施例中,可以意味著所有由軟件執(zhí)行的預(yù)取都為預(yù)取的高速緩存行設(shè)置了屬性位。甚至在其他實(shí)施例中,由硬件預(yù)取裝置執(zhí)行的預(yù)取也可能為預(yù)取的高速緩存行設(shè)置屬性。
圖6表示根據(jù)一個(gè)實(shí)施例的prefetch_set指令的操作。在一個(gè)實(shí)施例中,高速緩存行601可以包含預(yù)取的數(shù)據(jù)、屬性位和相干性狀態(tài)變量(coherency state variable)。在其他實(shí)施例中,高速緩存行可以包含其它信息,例如標(biāo)志域。此外,在其它實(shí)施例中,可以有更少或者更多的屬性位。例如,在一個(gè)實(shí)施例中,prefetch_set指令使預(yù)取的數(shù)據(jù)存儲(chǔ)在高速緩存行的數(shù)據(jù)域603中,并將屬性位域605中的屬性位更新為值“1”。該高速緩存行可以在“共享”狀態(tài),從而其他指令或者指令線程可以使用該數(shù)據(jù),直到該高速緩存行被清除或者無效,在這種情況下,可以觸發(fā)結(jié)構(gòu)化定義情節(jié)(architecturally definedscenario),例如存儲(chǔ)器行無效(MLI)情節(jié),以使預(yù)取由此調(diào)整。
如果經(jīng)由例如load_check指令檢查屬性位或者高速緩存行狀態(tài),那么可以定義一個(gè)或者多個(gè)處理核中的一個(gè)或者多個(gè)結(jié)構(gòu)化情節(jié),以根據(jù)所檢查的屬性執(zhí)行特定事件??赡苓€有其他類型的事件,可以響應(yīng)于該屬性檢查來執(zhí)行。例如,在一個(gè)實(shí)施例中,可以定義結(jié)構(gòu)化情節(jié)以比較該屬性位和數(shù)據(jù)的特定設(shè)置,并根據(jù)比較結(jié)果調(diào)用輕量生成(light-weight yield)事件。在其他情形中,該輕量生成會(huì)調(diào)用服務(wù)例程,該例程在將控制返回給系統(tǒng)中運(yùn)行的線程或者其它處理之前,響應(yīng)于情節(jié)結(jié)果執(zhí)行各種操作。在另一個(gè)實(shí)施例中,可以設(shè)置標(biāo)志或寄存器以指示結(jié)果。在另一個(gè)實(shí)施例中,可以用特定值寫寄存器??梢园ㄆ渌录鳛檫m當(dāng)?shù)捻憫?yīng)。
例如,可以定義的一個(gè)情節(jié)是,當(dāng)檢測到n次預(yù)取并且未使用的高速緩存行的清除,和/或m次預(yù)取并且未使用的高速緩存行的無效(在一個(gè)實(shí)施例中用MESI狀態(tài)指示)時(shí),調(diào)用輕量生成和相應(yīng)的處理程序(handler),其中m和n可以是不同或者相同的值。這種結(jié)構(gòu)化定義的情節(jié)可用于將預(yù)取算法調(diào)整為更接近地對(duì)應(yīng)于使用來自存儲(chǔ)器的特定預(yù)取數(shù)據(jù)。
圖3a表示根據(jù)一個(gè)實(shí)施例的,通過利用屬性位和高速緩存行狀態(tài)來導(dǎo)致類故障生成,其能夠調(diào)整數(shù)據(jù)的預(yù)取。在圖3a中,預(yù)取的高速緩存行301包含相應(yīng)于特定存儲(chǔ)器地址的預(yù)取數(shù)據(jù)303、屬性位305和狀態(tài)變量307。如果清除該高速緩存行,則用新數(shù)據(jù)304替換數(shù)據(jù)303,并且屬性位和狀態(tài)變量不相關(guān)。在n次這種或者其他相似的預(yù)取和清除的高速緩存行的清除之后,可以觸發(fā)結(jié)構(gòu)化定義的情節(jié)(例如,存儲(chǔ)器行無效(MLI)情節(jié))以使預(yù)取算法調(diào)整替換數(shù)據(jù)的預(yù)取,以便于避免或者至少減少隨后的數(shù)據(jù)的無用預(yù)取。如果該高速緩存行實(shí)際被指令使用,例如“加載”指令或者微指令(uop),則數(shù)據(jù)保持在該高速緩存行中,屬性位306改變狀態(tài)(例如“1”到“0”),且狀態(tài)變量保持在“共享”狀態(tài),從而該數(shù)據(jù)可以繼續(xù)由隨后的指令使用。如果該高速緩存行無效,因此防止其他線程使用該數(shù)據(jù),然后由狀態(tài)變量308指示該數(shù)據(jù)無效。在出現(xiàn)m次預(yù)取但未使用數(shù)據(jù)的無效之后,接著觸發(fā)MLI情節(jié)以使預(yù)取算法調(diào)整數(shù)據(jù)的預(yù)取,以便避免或者至少減少高速緩存行的無效的次數(shù)。
在一個(gè)實(shí)施例中,MLI情節(jié)可以調(diào)用處理程序,該處理程序能使軟件例程被調(diào)用以為全部預(yù)取或者僅為與數(shù)據(jù)的特定范圍或者程序的特定區(qū)域相關(guān)的預(yù)取子集調(diào)整預(yù)取算法。可以使用各種實(shí)施例中的各種算法調(diào)整預(yù)取。在一個(gè)實(shí)施例中,可以使用硬件邏輯來實(shí)現(xiàn)該預(yù)取調(diào)整算法,而在另一個(gè)實(shí)施例中,可以使用軟件和邏輯的一些組合。在本發(fā)明的實(shí)施例中,用于響應(yīng)于屬性位和狀態(tài)變量來調(diào)整數(shù)據(jù)預(yù)取的特定算法是任意的。
圖3b是流程圖,表示本發(fā)明至少一個(gè)實(shí)施例的操作,其中,prefetch_set指令和高速緩存行狀態(tài)變量用于設(shè)置與特定高速緩存行相關(guān)的預(yù)取屬性位,以便于動(dòng)態(tài)地將數(shù)據(jù)的預(yù)取調(diào)整為對(duì)應(yīng)于它的使用。在其它實(shí)施例中,可以使用其它指令以執(zhí)行圖3b中所示的操作。在操作310,數(shù)據(jù)被從存儲(chǔ)器地址預(yù)取到高速緩存行中,并在操作313設(shè)置相應(yīng)的屬性。在一個(gè)實(shí)施例中,這是通過執(zhí)行prefetch_set指令或者uop來完成的。在操作315,如果清除該高速緩存行或者其他高速緩存行,則在操作316增大清除計(jì)數(shù)器,直到在操作317達(dá)到數(shù)據(jù)的n次清除,在這種情況下,在操作319,觸發(fā)結(jié)構(gòu)化定義情節(jié)(例如MLI)以調(diào)整預(yù)取算法。如果在操作315,隨后由指令(例如加載指令/uop)使用預(yù)取的數(shù)據(jù),則在操作325更新屬性位以反映其。如果在操作315,該數(shù)據(jù)隨后被無效,則更新狀態(tài)變量以反映該無效狀態(tài),在操作330,增大無效計(jì)數(shù)器,直到在操作335反映數(shù)據(jù)或者其它預(yù)取數(shù)據(jù)的m次無效,在這種情況下,在操作319,觸發(fā)結(jié)構(gòu)化定義情節(jié)(例如MLI)以調(diào)整預(yù)取算法。在其它實(shí)施例中,在從操作317、325或者335返回到操作310之前可以出現(xiàn)其他操作,其可以影響操作是否返回到操作310。
可以以各種方式執(zhí)行預(yù)取。例如,在一個(gè)實(shí)施例中,通過執(zhí)行指令(例如“prefetch_set”指令)來執(zhí)行預(yù)取,如上所述(“軟件”預(yù)取或者“明確”預(yù)取)。在其他實(shí)施例中,可以通過硬件邏輯(“硬件”預(yù)取或者“隱含”預(yù)取)來執(zhí)行預(yù)取。在一個(gè)實(shí)施例中,硬件預(yù)取可以通過配置預(yù)取邏輯(例如,面對(duì)面(vis-à-vis)軟件使用程序)來執(zhí)行,以為每個(gè)預(yù)取的高速緩存行設(shè)置屬性位,以指示該高速緩存行中的預(yù)取數(shù)據(jù)未被使用。在某些實(shí)施例中,可以配置與該預(yù)取邏輯相關(guān)的控制信息,以確定將使用哪個(gè)(哪些)屬性位來指示是否已使用預(yù)取數(shù)據(jù)。
圖4表示一前端總線(FSB)計(jì)算機(jī)系統(tǒng),其中使用本發(fā)明的一個(gè)實(shí)施例。處理器405從一級(jí)(L1)高速緩沖存儲(chǔ)器410和主存儲(chǔ)器415訪問數(shù)據(jù)。在本發(fā)明的其他實(shí)施例中,高速緩沖存儲(chǔ)器可以是二級(jí)(L2)高速緩存或計(jì)算機(jī)系統(tǒng)存儲(chǔ)器層次中的其它存儲(chǔ)器。此外,在某些實(shí)施例中,圖4的計(jì)算機(jī)系統(tǒng)可以包含L1高速緩存和L2高速緩存。
在圖4的處理器中說明了用于機(jī)器狀態(tài)的存儲(chǔ)區(qū)域406。在一個(gè)實(shí)施例中,存儲(chǔ)區(qū)域可以是一系列寄存器,而在其他實(shí)施例中,該存儲(chǔ)區(qū)域可以是其他存儲(chǔ)器結(jié)構(gòu)。同樣在圖4中說明了根據(jù)一個(gè)實(shí)施例的用于保存區(qū)域段的存儲(chǔ)區(qū)域407。在其它實(shí)施例中,該保存區(qū)域段可以在其它設(shè)備或存儲(chǔ)器結(jié)構(gòu)中。該處理器可以具有任何數(shù)量的處理核。但是本發(fā)明的其它實(shí)施例可以在該系統(tǒng)的其它設(shè)備中實(shí)現(xiàn),例如分離的總線代理,或者以硬件、軟件、或者其組合分布于整個(gè)系統(tǒng)。
該主存儲(chǔ)器可以實(shí)施為各種存儲(chǔ)器源,例如動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、硬盤驅(qū)動(dòng)器(HDD)420、或者經(jīng)由網(wǎng)絡(luò)接口430遠(yuǎn)離計(jì)算機(jī)系統(tǒng)的存儲(chǔ)器源,所述網(wǎng)絡(luò)接口430包含各種存儲(chǔ)設(shè)備和技術(shù)。該高速緩沖存儲(chǔ)器可以位于處理器內(nèi)或者非常接近該處理器,例如在處理器的本地總線407上。
而且,該高速緩沖存儲(chǔ)器可以包含相對(duì)快速的存儲(chǔ)器單元,例如六晶體管(6T)單元,或者具有近似相等或者更快存取速度的其它存儲(chǔ)器單元。圖4的計(jì)算機(jī)系統(tǒng)可以是總線代理的點(diǎn)到點(diǎn)(PtP)網(wǎng)絡(luò),例如微處理器,其經(jīng)由針對(duì)該P(yáng)tP網(wǎng)絡(luò)上的每個(gè)代理的總線信號(hào)通信。圖5表示布置為點(diǎn)到點(diǎn)(PtP)結(jié)構(gòu)的計(jì)算機(jī)系統(tǒng)。特別地,圖5示出了其中處理器、存儲(chǔ)器和輸入/輸出設(shè)備通過多個(gè)點(diǎn)到點(diǎn)接口互連的系統(tǒng)。
圖5的系統(tǒng)同樣可以包括多個(gè)處理器,為了清楚,僅示出其中的兩個(gè)處理器570、580。處理器570、580每個(gè)都可以包括本地存儲(chǔ)器控制器集線器(MCH)572、582以與存儲(chǔ)器22、24連接。處理器570、580可以經(jīng)由使用PtP接口電路578、588的點(diǎn)到點(diǎn)(PtP)接口550交換數(shù)據(jù)。處理器570、580每個(gè)都可以經(jīng)由使用點(diǎn)到點(diǎn)接口電路576、594、586、598的專用PtP接口552、554與芯片組590交換數(shù)據(jù)。芯片組590還可以經(jīng)由高性能圖形接口539與高性能圖形電路538交換數(shù)據(jù)。本發(fā)明的實(shí)施例可以位于任何具有任意數(shù)量的處理核的處理器中,或者位于圖5的每個(gè)PtP總線代理中。
但是,本發(fā)明的其它實(shí)施例可以存在于圖5的系統(tǒng)中的其它電路、邏輯單元或者設(shè)備中。此外,在本發(fā)明的其它實(shí)施例中,可以分布于圖5所示的多個(gè)電路、邏輯單元或者設(shè)備。
這里所述的本發(fā)明的實(shí)施例可以用使用互補(bǔ)金屬氧化物半導(dǎo)體設(shè)備的電路或“硬件”來實(shí)現(xiàn),或者使用存儲(chǔ)在介質(zhì)中的一組指令或“軟件”,當(dāng)由例如處理器的機(jī)器執(zhí)行時(shí),執(zhí)行與本發(fā)明實(shí)施例相關(guān)的操作?;蛘?,本發(fā)明的實(shí)施例可以使用硬件和軟件的組合來實(shí)現(xiàn)。
雖然已經(jīng)參照示例性實(shí)施例描述了本發(fā)明,但是本描述并不應(yīng)被解釋為限制意義。該示例性實(shí)施例以及其他實(shí)施例的各種變形,對(duì)于本發(fā)明所屬領(lǐng)域的技術(shù)人員而言是顯而易見的,它們屬于本發(fā)明的精神和范圍內(nèi)。
權(quán)利要求
1.一種裝置,包括高速緩存行,其具有存儲(chǔ)屬性位的屬性字段,在由指令使用所述高速緩存行中存儲(chǔ)的第一數(shù)據(jù)之后,所述屬性位將改變狀態(tài)。
2.如權(quán)利要求1所述的裝置,其中,所述高速緩存行與存儲(chǔ)塊中的高速緩存行相關(guān)聯(lián)。
3.如權(quán)利要求1所述的裝置,其中,所述高速緩存行還包括狀態(tài)變量域,用于指示所述第一數(shù)據(jù)是否已經(jīng)由于所述第一數(shù)據(jù)的清除或者由于所述第一數(shù)據(jù)被第二數(shù)據(jù)更新而被無效。
4.如權(quán)利要求3所述的裝置,其中,如果所述第一數(shù)據(jù)已經(jīng)在沒有被使用的情況下清除了第一次數(shù),則將調(diào)整數(shù)據(jù)被預(yù)取到所述高速緩存行中的速率。
5.如權(quán)利要求4所述的裝置,其中,如果所述第一數(shù)據(jù)在未被使用的情況下已經(jīng)被另一個(gè)數(shù)據(jù)更新了第二次數(shù),則將調(diào)整數(shù)據(jù)被預(yù)取到所述高速緩存行中的速率。
6.如權(quán)利要求5所述的裝置,其中,結(jié)構(gòu)化定義的情節(jié)將觸發(fā)處理程序以使數(shù)據(jù)被預(yù)取到所述高速緩存行中的速率被調(diào)整。
7.如權(quán)利要求1所述的裝置,其中,通過執(zhí)行與預(yù)取所述第一數(shù)據(jù)相同的指令來更新所述屬性位。
8.如權(quán)利要求7所述的裝置,其中,所述高速緩存行在一級(jí)(L1)高速緩沖存儲(chǔ)器中。
9.一種機(jī)器可讀介質(zhì),其具有存儲(chǔ)在其上的一組指令,當(dāng)由機(jī)器執(zhí)行所述指令時(shí),使所述機(jī)器執(zhí)行包括下列步驟的方法讀取與高速緩存行相關(guān)聯(lián)的屬性位,所述屬性位用于指示預(yù)取的數(shù)據(jù)是否已被第一指令使用;計(jì)算與所述高速緩存行相關(guān)聯(lián)的相干性狀態(tài)變量的連續(xù)出現(xiàn)的次數(shù);如果所述相干性狀態(tài)變量的連續(xù)出現(xiàn)的次數(shù)至少是第一數(shù)量,則執(zhí)行輕量生成事件。
10.如權(quán)利要求9所述的機(jī)器可讀介質(zhì),其中,所述相干性狀態(tài)變量指示所述高速緩存行是無效的。
11.如權(quán)利要求9所述的機(jī)器可讀介質(zhì),還包括如果所述預(yù)取的數(shù)據(jù)被所述第一指令使用,則更新所述屬性位。
12.如權(quán)利要求9所述的機(jī)器可讀介質(zhì),其中,作為執(zhí)行預(yù)取的結(jié)果,所述屬性位被設(shè)置。
13.如權(quán)利要求12所述的機(jī)器可讀介質(zhì),其中,所述第一指令是加載指令。
14.如權(quán)利要求12所述的機(jī)器可讀介質(zhì),其中,通過執(zhí)行預(yù)取設(shè)置指令來設(shè)置所述屬性。
15.如權(quán)利要求10所述的機(jī)器可讀介質(zhì),其中,類故障生成將觸發(fā)結(jié)構(gòu)化定義情節(jié),以使所述預(yù)取的數(shù)據(jù)不被頻繁地預(yù)取。
16.一種系統(tǒng),包括存儲(chǔ)器,用于存儲(chǔ)第一指令,以使第一數(shù)據(jù)被預(yù)取并且更新與所述第一數(shù)據(jù)相關(guān)的屬性位,所述屬性指示所述第一數(shù)據(jù)是否已經(jīng)被指令使用過;至少一個(gè)處理器,用于取所述第一指令并且響應(yīng)于其而預(yù)取所述第一數(shù)據(jù)。
17.如權(quán)利要求16所述的系統(tǒng),其中,所述屬性將被存儲(chǔ)在高速緩存行中,所述第一數(shù)據(jù)將被預(yù)取到所述高速緩存行中。
18.如權(quán)利要求17所述的系統(tǒng),還包括清除計(jì)數(shù)器,用于計(jì)算從所述高速緩存行連續(xù)清除所述第一數(shù)據(jù)的次數(shù)。
19.如權(quán)利要求18所述的系統(tǒng),還包括無效計(jì)數(shù)器,用于計(jì)算在所述高速緩存行中無效所述第一數(shù)據(jù)的連續(xù)次數(shù)。
20.如權(quán)利要求19所述的系統(tǒng),其中,如果所述連續(xù)清除的次數(shù)等于第一值或者所述連續(xù)無效的次數(shù)等于第二值,則發(fā)生輕量生成事件。
21.如權(quán)利要求20所述的系統(tǒng),其中,所述輕量生成事件將使所述預(yù)取速率被調(diào)整。
22.如權(quán)利要求16所述的系統(tǒng),其中,所述第一指令是預(yù)取設(shè)置指令。
23.如權(quán)利要求16所述的系統(tǒng),其中,所述屬性位是多個(gè)與所述高速緩存行相關(guān)聯(lián)的屬性位中的一個(gè)。
24.如權(quán)利要求23所述的系統(tǒng),其中,所述多個(gè)屬性位是用戶定義的。
25.一種處理器,包括取單元,用于取第一指令,所述第一指令用于將第一數(shù)據(jù)預(yù)取到高速緩存行中并設(shè)置屬性位以指示所述第一數(shù)據(jù)是否被加載指令使用;邏輯電路,用于如果所述第一數(shù)據(jù)在其被預(yù)取之后被所述加載指令使用,則更新所述屬性位。
26.如權(quán)利要求25所述的處理器,還包括多個(gè)處理核,每個(gè)處理核都能執(zhí)行多個(gè)軟件線程。
27.如權(quán)利要求26所述的處理器,還包括用于執(zhí)行結(jié)構(gòu)化定義情節(jié)的邏輯電路,以檢測所述第一數(shù)據(jù)是否被無效了連續(xù)次數(shù)或者是否被從所述高速緩存行中清除了連續(xù)次數(shù)。
28.如權(quán)利要求27所述的處理器,其中,所述高速緩存行可以處于多個(gè)狀態(tài)中的一個(gè),所述多個(gè)狀態(tài)包括已修改狀態(tài)、獨(dú)占狀態(tài)、共享狀態(tài)和無效狀態(tài)。
29.如權(quán)利要求28所述的處理器,還包括高速緩沖存儲(chǔ)器,其中包括所述高速緩存行。
30.如權(quán)利要求25所述的處理器,其中,所述第一指令是預(yù)取設(shè)置指令。
31.一種裝置,包括檢測模塊,用于檢測預(yù)取的高速緩存行在被使用之前是否已經(jīng)被清除或者無效。
32.如權(quán)利要求31所述的裝置,還包括生成模塊,用于響應(yīng)于所述檢測模塊檢測到預(yù)取的高速緩存行在被使用前已經(jīng)被清除或者無效來執(zhí)行類故障生成。
33.如權(quán)利要求32所述的裝置,其中,所述生成模塊將導(dǎo)致相應(yīng)于至少一個(gè)預(yù)取的高速緩存行的至少一個(gè)存儲(chǔ)器地址的預(yù)取策略的改變。
34.如權(quán)利要求33所述的裝置,其中,所述預(yù)取策略將由具有至少一個(gè)控制模塊的邏輯電路來控制,所述至少一個(gè)控制模塊用于控制一個(gè)范圍的存儲(chǔ)器地址的預(yù)取。
35.如權(quán)利要求33所述的裝置,還包括計(jì)數(shù)器模塊,用于計(jì)算在使用前被清除或者無效的預(yù)取數(shù)據(jù)的數(shù)量。
36.如權(quán)利要求35所述的裝置,其中,如果所述計(jì)數(shù)器模塊計(jì)算了第一數(shù)量的未使用的預(yù)取數(shù)據(jù),那么所述生成模塊將產(chǎn)生類故障生成。
37.如權(quán)利要求33所述的裝置,其中,所述預(yù)取策略將由具有至少一個(gè)控制模塊的軟件來控制,所述至少一個(gè)控制模塊用于控制一個(gè)范圍的存儲(chǔ)器地址的預(yù)取。
全文摘要
一種用于調(diào)整預(yù)取速率的技術(shù)。更特別地,本發(fā)明的實(shí)施例涉及一種根據(jù)預(yù)取數(shù)據(jù)的有效性來調(diào)整預(yù)取的技術(shù)。
文檔編號(hào)G06F12/08GK101082861SQ20071010359
公開日2007年12月5日 申請(qǐng)日期2007年4月2日 優(yōu)先權(quán)日2006年3月31日
發(fā)明者K·多什, Q·雅克布森, A·布雷西, H·王, P·哈馬隆德 申請(qǐng)人:英特爾公司