其用以將 結(jié)構(gòu)指令解譯為可被執(zhí)行單元所執(zhí)行的處理器的微指令集結(jié)構(gòu)的微指令。處理器還包括內(nèi) 存子系統(tǒng),其用以提供內(nèi)存操作元(memory operand)至執(zhí)行單元并從執(zhí)行單元接收內(nèi)存操 作元。優(yōu)選地,內(nèi)存子系統(tǒng)包括一個(gè)或多個(gè)加載單元,一個(gè)或多個(gè)存儲(chǔ)單元,加載列,存儲(chǔ) 列,用于向內(nèi)存請(qǐng)求快取線的填充列(f i 11 queue ),用于窺探(snooping)與處理器相互通 信(in communication)的內(nèi)存總線(memory bus)的窺探列(snoop queue),和其他相關(guān)的 功能單元。內(nèi)存子系統(tǒng)生成快取內(nèi)存102的內(nèi)存訪問(wèn)122。
[0066]請(qǐng)參照?qǐng)D2,其所繪示為根據(jù)本發(fā)明一實(shí)施例之映射108,所述映射108將MAT映射 到圖1的快取內(nèi)存102的分路子集。圖2所例示的映射108包括32個(gè)MAT,其對(duì)應(yīng)于表1。圖2所 例示的映射108轉(zhuǎn)載于下方的表2。
[0070] 表 2
[0071] 以圖2為例子,當(dāng)MAT 101為store_nt的內(nèi)存訪問(wèn)122在快取內(nèi)存102中未能命中 時(shí),分配單元106僅分配所選定集合的分路0、4或8,亦即,僅分配經(jīng)由映射108而關(guān)聯(lián)于 store_nt MAT的分路子集內(nèi)的分路。在另一個(gè)例子中,當(dāng)MAT 101為load_descr的內(nèi)存訪問(wèn) 122在快取內(nèi)存102中未能命中時(shí),分配單元106僅分配所選定集合的分路15,亦即,僅分配 經(jīng)由映射108而關(guān)聯(lián)于load_descr MAT的分路子集內(nèi)的分路。
[0072] 在一實(shí)施例中,映射108包括具16位矢量(16-bit vector)的陣列。所述矢量的每 一位對(duì)應(yīng)于快取內(nèi)存102其16個(gè)分路之一。優(yōu)選地,當(dāng)對(duì)應(yīng)的分路包含于子集時(shí),位為1;而 當(dāng)對(duì)應(yīng)的分路不包含于子集時(shí),位為0。所述陣列包括32個(gè)矢量,每一矢量用于一個(gè)MAT,且 所述32個(gè)矢量以MAT編號(hào)來(lái)索引。然而,本發(fā)明并不以此為限。在其他實(shí)施例中,映射108可 具有其它形式,其相關(guān)說(shuō)明請(qǐng)參照?qǐng)D3和6。
[0073]此處值得理解的是,雖然圖2(和表2)描述了一組特定的MAT以及將MAT關(guān)聯(lián)到其對(duì) 應(yīng)分路子集的特定映射,但前述的實(shí)施例僅用于示例之目的,本發(fā)明亦適用于具不同MAT組 合和不同的映射。事實(shí)上,在一實(shí)施例中,當(dāng)處理器在運(yùn)作時(shí),映射可基于正在運(yùn)行的程序 或程序階段而動(dòng)態(tài)地被更新(例如,通過(guò)圖1的更新輸入126),其更詳細(xì)的相關(guān)內(nèi)容請(qǐng)參照 圖 7-9〇
[0074] 請(qǐng)參照?qǐng)D3,其所繪示為圖1的快取內(nèi)存102其部分之更詳細(xì)方塊示意圖。在圖3的 實(shí)施例中,圖1的映射108包括矢量304,其用于32個(gè)MAT中的每一個(gè)。多功器(MUX)302用以接 收32個(gè)矢量304并基于內(nèi)存訪問(wèn)122其MAT指定符101的值來(lái)選取32個(gè)矢量304的其中之一, 選定的矢量304被提供至圖1的分配單元106。分配單元106還接收?qǐng)D1中選定集合的替換位 114,所述選定集合是指在快取內(nèi)存102中由內(nèi)存訪問(wèn)122內(nèi)存地址的索引所選取的集合。基 于選定的矢量304和替換位114,分配單元106生成圖1的替換分路116。分配單元106還基于 替換分路116的值來(lái)更新替換位114。舉例來(lái)說(shuō),在一實(shí)施方案中,替換位114是pLRU矢量,其 用以指示選定集合里所有分路中的PLRU分路。在其它例子中,替換位114是真LRU矢量或輪 叫(round-robin)矢量。
[0075] 在一實(shí)施例中,矢量304為位矢量(bit vector),其包括一個(gè)相應(yīng)位用于快取內(nèi)存 102的每一分路(例如,16個(gè)分路)。當(dāng)位值為真,代表其對(duì)應(yīng)的分路包含于相關(guān)聯(lián)MAT的子 集;當(dāng)位值為偽,代表其對(duì)應(yīng)的分路不包含于相關(guān)聯(lián)MAT的子集。在一替代實(shí)施例中,矢量 304包括一對(duì)遮照(mask),其對(duì)pLRU矢量的替換位114進(jìn)行布爾運(yùn)算,相關(guān)說(shuō)明請(qǐng)參照?qǐng)D6。
[0076] 在一替代實(shí)施例中,快取內(nèi)存102可以包括邏輯(logic),其用以將具有較大數(shù)目 (例如32)的MAT映射到具有較小數(shù)目(例如4)的MAT群組(MAT group)。舉例來(lái)說(shuō),在圖3的實(shí) 施例中,MAT分組邏輯(MAT grouping logic,未示出)接收MAT 101且輸出MAT群組編號(hào)。MAT 群組編號(hào)可作為選取輸入(selection input)而被提供至多功器(MUX)302(而非MAT 101)。 MAT分組邏輯將這32個(gè)MAT的每一個(gè)映射到這4個(gè)MAT群組之一。MAT分組邏輯可以隨著映射 108而被更新。映射108僅包括四個(gè)矢量304(而非32個(gè)),且多功器(MUX)302選取這四個(gè)矢量 304的其中之一并提供給分配單元。本實(shí)施例中可有益地減少硬件成本。MAT數(shù)目的減少可 能以可接受效率做交換,特別是對(duì)那些內(nèi)存訪問(wèn)特征為聚集于不同MAT群組的程序而言更 是如此。MAT分組邏輯可適用于本發(fā)明的各種實(shí)施例,因而減少所需的硬件數(shù)目。再者,MAT 數(shù)目的減少與實(shí)施例所包含群組呈倍數(shù)相關(guān),如圖10-22所示。而將MAT映射到MAT群組的實(shí) 施例請(qǐng)參考圖29-30。
[0077]請(qǐng)參照?qǐng)D4,其所繪示為一處理器其運(yùn)作流程圖,所述處理器具有圖1的快取內(nèi)存 102。所述流程開(kāi)始于方塊402。
[0078]在方塊402中,處理器接收映射。所述映射將多個(gè)MAT(例如表1)中的每一個(gè)關(guān)聯(lián)到 快取內(nèi)存102之一個(gè)分路子集(例如,圖2與表2所示的映射)。優(yōu)選地,快取內(nèi)存102于制造時(shí) 即具有默認(rèn)(default)映射108。優(yōu)選地,默認(rèn)映射108用于多種程序使得快取內(nèi)存102具有 更高的操作效能,或至少為了有可能被具有快取內(nèi)存102之處理器所執(zhí)行的程序而制造。所 述流程接著進(jìn)行至方塊404。
[0079]在方塊404中,通過(guò)圖1的更新輸入126,處理器以在方塊40 2所接收的映射來(lái)更新 快取內(nèi)存102的映射108。優(yōu)選地,映射108是在系統(tǒng)初始化(system initialization)且/或 操作系統(tǒng)(operating system)開(kāi)機(jī)(boot)時(shí),由系統(tǒng)軟件(例如,BIOS或操作系統(tǒng))所更新。 再者,優(yōu)選地,映射108是以每個(gè)程序基礎(chǔ)(per program basis)和/或每個(gè)程序階段基礎(chǔ) (per program phase basis)被更新,其相關(guān)說(shuō)明請(qǐng)參照?qǐng)D7-9。所述流程結(jié)束于方塊404。
[0080] 請(qǐng)參照?qǐng)D5,其所繪示為圖1的快取內(nèi)存102其運(yùn)作流程圖。所述流程開(kāi)始于方塊 502〇
[0081] 在方塊502中,快取內(nèi)存102接收在快取內(nèi)存102中未能命中的內(nèi)存訪問(wèn)122。內(nèi)存 訪問(wèn)122索引選取陣列104的一個(gè)集合。內(nèi)存訪問(wèn)122指定MAT 101。所述流程接著進(jìn)行至方 塊504。
[0082] 在方塊504中,快取內(nèi)存102分配選定集合的一個(gè)分路。更具體地,分配單元106分 配分路子集中的一個(gè)分路,所述分路子集經(jīng)由映射108關(guān)聯(lián)于內(nèi)存訪問(wèn)122的MAT 101。其相 關(guān)更詳細(xì)的內(nèi)容請(qǐng)參照?qǐng)D6。所述流程結(jié)束于方塊504。
[0083] 請(qǐng)參照?qǐng)D6,其所繪示為根據(jù)本發(fā)明一實(shí)施例之圖5的方塊504其運(yùn)作流程圖。所述 流程開(kāi)始于方塊602。
[0084] 在方塊602中,分配單元106基于目前的替換位114和內(nèi)存訪問(wèn)122其MAT 101來(lái)判 定替換分路116及對(duì)替換位114產(chǎn)生一新的值。在一實(shí)施例中,分配單元106判定替換分路 116并對(duì)替換位114產(chǎn)生一新的值的方式請(qǐng)照?qǐng)D3的實(shí)施例,亦即,利用了由MAT 101所選定 的矢量304。在一實(shí)施例中,替換位114是pLRU矢量,且矢量304包括第一部分(AND_MASK)與 第二部分(〇R_MASK)。第一部分(AND_MASK)為布爾ANDed運(yùn)算。布爾ANDed運(yùn)算與pLRU矢量 114產(chǎn)生第一結(jié)果。第二部分(AND_MASK)為布爾ORed運(yùn)算。布爾ORed運(yùn)算與第一結(jié)果產(chǎn)生第 二結(jié)果。第二結(jié)果被用于判定替換分路116且生成所述新的值以更新pLRU矢量 MASK與0R_MASK的使用其相關(guān)更詳細(xì)的內(nèi)容請(qǐng)參照方塊606。所述流程接著進(jìn)行至方塊604。
[0085]在方塊604中,快取內(nèi)存102分配替換分路116,其中替換分路116在方塊602中由分 配單元106所指示出來(lái)。所述流程接著進(jìn)行至方塊606。
[0086]在方塊606中,快取內(nèi)存102以在方塊602所生成的新的值來(lái)更新替換位114。所述 流程結(jié)束于方塊606。
[0087]在一實(shí)施例中,用于具有16個(gè)分路的pLRU方案包括:每集合15個(gè)pLRU替換位114、 用于從替換位114解碼出LRU分路的邏輯、用于在新的分配中更新替換位114的邏輯、以及在 內(nèi)存訪問(wèn)122命中情況下,用于更新替換位114的邏輯。雖然分配在語(yǔ)意上與快取命中不同, 分配更新邏輯可以LRU分路饋入命中途徑的方式而有效地成為命中邏輯。
[0088] 替換位114是一個(gè)15位矢量(15-bit vector),其本質(zhì)地描述了 一個(gè)二進(jìn)制樹(shù) (binary tree)且其每一位可視為一個(gè)內(nèi)部節(jié)點(diǎn)(internal node,所述15個(gè)節(jié)點(diǎn)分成4階 (level),每一葉(leaf)可視為一個(gè)分路。舉例來(lái)說(shuō),如果所述15位被標(biāo)記為A-0,所述pLRU 樹(shù)可以定義為如下:
[0090] 由pLRU矢量來(lái)判定LRU分路之邏輯可經(jīng)由pLRU樹(shù)中各個(gè)節(jié)點(diǎn)位(node bit)A-0的 方向來(lái)確定。從根節(jié)點(diǎn)(root node)A開(kāi)始,節(jié)點(diǎn)位A-Ο的值指出LRU的"方向",其中0表示"左 轉(zhuǎn)"而1表示"右轉(zhuǎn)"。例如在如下的例子中:
[0091] ABCDEFGHIJKLMN0
[0092] 000000010000000
[0093] LRU 分路是 01(A = 0、B = 0、D = 0、H=1)。
[0094] 此處應(yīng)當(dāng)值得注意是,在上述特定的例子中,LRU分路僅由四個(gè)節(jié)點(diǎn)位決定:A、B、D 和Η。其他節(jié)點(diǎn)仍然存在并且存儲(chǔ)有用的信息,但是它們此處在這個(gè)000000010000000例子 中,并沒(méi)有對(duì)LRU的判定作出貢獻(xiàn)。
[0095]當(dāng)因?yàn)槊谢蚍峙涠沟胮LRU陣列需要被更新時(shí),此時(shí)需以當(dāng)前狀態(tài)與指定的分 路函數(shù)來(lái)算出PLRU位的下一個(gè)狀態(tài)。所述更新是一個(gè)包括兩個(gè)步驟的過(guò)程。首先,判定pLRU 節(jié)點(diǎn)位A-Ο中中的四個(gè)節(jié)點(diǎn)位{a、b、c、d},節(jié)點(diǎn)位{a、b、c、d}指向最近使用(the mos t recently used) (MRU)位置。第二,對(duì)于pLRU節(jié)點(diǎn)位A-0中的每一個(gè)節(jié)點(diǎn)位X來(lái)說(shuō),如果X在 {a、b、c、d}中的話,此節(jié)點(diǎn)位被更新為指向遠(yuǎn)離所考慮的分路。
[0096 ] 舉例來(lái)說(shuō),在上述例子中,在分路05中命中的加載會(huì)更新節(jié)點(diǎn){A = > 1、B = >0、E = > l、J = >〇},使得這四個(gè)節(jié)點(diǎn)位中的每一個(gè)指向分路05的相反的方向。
[0097]以下將更詳細(xì)地描述上述方塊602中所提到的矢量304的第一部分(AND_MASK)和 第二部分(〇r_Mask)的使用。假設(shè)分路子集中需要被分配的分路是分路{0、5、6、7}。首先,將 分路子集基于樹(shù)形圖(tree diagram)轉(zhuǎn)換成如下所示的AND_MASK和0R_Mask。
[0098] ABCDEFGHIJKLMNO
[0099] AND_MASK = 01-01-0-11 --
[0100] 0r_Mask 的=00_00-0-10----
[0101] 此處虛線代表"無(wú)需注意"("don't cares")的位位置(bit position),因?yàn)檎谡?會(huì)避開(kāi)他fl]。舉例來(lái)說(shuō),結(jié)點(diǎn)位C是無(wú)需注意的,因?yàn)锳ND_MASK的節(jié)點(diǎn)位A為0,這意味著左邊 的分枝(branch)將會(huì)一直被用來(lái)決定LRU。
[0102] 因命中或分配而更新LRU的方式與正常情況下pLRU的更新一樣。然而,因?yàn)橄鄬?duì)于 LRU的行為,pLRU是較不完善(imperfect)的,因此,由于共享更換位114的性質(zhì),用于兩個(gè)相 互排斥(mutually exclusive)的子集的pLRU更新會(huì)相互影響。但是在大多數(shù)的情況,相互 干擾(crosstalk)是可容忍的。
[0103] 請(qǐng)參照?qǐng)D7,其所繪示為一系統(tǒng)其運(yùn)作流程圖,所述系統(tǒng)具有一種處理器,所述處 理器具有圖1的快取內(nèi)存102。所述流程開(kāi)始于方塊702。
[0104] 方塊702中,設(shè)備驅(qū)動(dòng)器(device driver)(或系統(tǒng)軟件的其它部件)判定正在運(yùn)行 的程序(或正準(zhǔn)備運(yùn)行,例如,在操作系統(tǒng)的進(jìn)程表(process table)中指出的程序),并且 所述程序是在設(shè)備驅(qū)動(dòng)器所知道的程序表里而用于更新圖1其映射108的映像或配置 (configuration)存在。舉例來(lái)說(shuō),用于對(duì)處理器上運(yùn)行的程序的離線分析(通過(guò)處理器的 軟件仿真(software simulation)或處理器的實(shí)際一部份)已被執(zhí)行來(lái)判定用于改善快取 內(nèi)存102效率的映射。應(yīng)當(dāng)理解的是,所述映射并不提供100%的命中率;然而,所述映射可 以提高快取內(nèi)存102的效率。此外,此處應(yīng)當(dāng)理解的是,某些程序并不會(huì)從其相應(yīng)的映射中 獲得顯著的效率提升;然而,一些程序的分析顯示,其確具有從映射中獲益的傾向。所述流 程接著進(jìn)行至方塊704。
[0105]在方塊704中,處理器執(zhí)行指令(例如,寫(xiě)入到模塊指定緩存器(model specific register,MSR),例如,X86 WRMSR指令),其用以指示(instruct)處理器以指令所提供的映 射來(lái)更新快取內(nèi)存102的映射108。在一實(shí)施例中,映射位于內(nèi)存,而映像的位置其內(nèi)存地址 由指令提供。優(yōu)選地,指令是設(shè)備驅(qū)動(dòng)程序代碼(device driver code)的一部分。設(shè)備驅(qū)動(dòng) 器還可以提供信息,其可被用于處理器去檢測(cè)(detect)程序是否已進(jìn)入各個(gè)不同階段,其 相關(guān)說(shuō)明請(qǐng)參照?qǐng)D8。設(shè)備驅(qū)動(dòng)器可以為每個(gè)階段提供不同的映射。因應(yīng)于指令,處理器更 新映射108并且將初始階段標(biāo)識(shí)符(initial phase identifier)(如果提供的話)加載于階 段檢測(cè)器(phase detector)(圖8的804)。所述流程結(jié)束于方塊704。
[0106] 請(qǐng)參考圖8,其所繪示為一處理器的組件示意圖,所述處理器包括圖1的快取內(nèi)存 102。所述處理器包括階段檢測(cè)器804,其用以檢測(cè)正在運(yùn)行的程序是否已經(jīng)進(jìn)入一個(gè)新的 階段。階段檢測(cè)器804是基于其所接收的階段標(biāo)識(shí)符(phase identifier)802來(lái)做上述之檢 測(cè),而階段標(biāo)識(shí)符802例如通過(guò)圖7的組件驅(qū)動(dòng)器所提供。階段標(biāo)識(shí)符802可包括程序指令的 指令指標(biāo)符(instruction pointer)(或程序計(jì)數(shù)器(program counter))值。指令可以是子 程序調(diào)用指令(subroutine cal 1 instruction),在這種情況下,階段標(biāo)識(shí)符802還可以包 括調(diào)用指令的目標(biāo)指令(target instruction)之指令指標(biāo)符(或程序計(jì)數(shù)器)值。此外,階 段標(biāo)識(shí)符802還可以包括一個(gè)或多個(gè)調(diào)用指令的參數(shù)值,例如,返回地址,緩存器值和/或堆 棧(stack)值。一個(gè)階段檢測(cè)器例子為指紋單元(fingerprint unit),其更詳細(xì)的說(shuō)明請(qǐng)參 考美國(guó)專利申請(qǐng)?zhí)?4/050687和14/050757,二者提交于2013年10月10日,這兩個(gè)專利皆主 張美國(guó)臨時(shí)申請(qǐng)?zhí)?1/880620,提交于2013年9月20日之優(yōu)先權(quán),而這兩個(gè)專利的全部?jī)?nèi)容 在此皆做為參考之用。處理器還包括映射更新單元(mapping update unit)806。當(dāng)階段檢 測(cè)器804檢測(cè)出已有新的階段時(shí),階段檢測(cè)器804即通知映射更新單元806接收所述新的階 段時(shí)的標(biāo)識(shí)符(identifier)。映射更新單元806還接收映射信息(mapping information), 例如,從圖7的組件驅(qū)動(dòng)器而來(lái)的信息。映射更新單元806用以更新位于快取內(nèi)存102的映射 108,其相關(guān)說(shuō)明請(qǐng)參照?qǐng)D9。在一實(shí)施例中,映射更新單元806包括所述處理器其被階段檢 測(cè)器804所調(diào)用的微碼(microcode)。在一替代實(shí)施例中,映射更新單元806包括狀態(tài)機(jī) (state machine)。當(dāng)階段檢測(cè)器804檢測(cè)出已有新的階段時(shí),階段檢測(cè)器804即通知狀態(tài)機(jī) 接收所述新的階段時(shí)的標(biāo)識(shí)符。階段分析其相關(guān)說(shuō)明請(qǐng)參照?qǐng)D36。
[0107] 請(qǐng)參照?qǐng)D9,其所繪示為圖8的處理器其運(yùn)作流程圖,所述處理器具有圖1的快取內(nèi) 存102。所述流程開(kāi)始于方塊902。
[0108] 在方塊902中,圖8的階段檢測(cè)器804檢測(cè)正在運(yùn)行的程序已經(jīng)進(jìn)入一個(gè)新的階段。 因應(yīng)于檢測(cè)到新的階段,階段檢測(cè)器804通知圖8的映射更新單元806。所述流程接著進(jìn)行至 方塊904。
[0109] 在方塊904中,映射更新單元806在映射信息808(例如,從圖7的方塊704中設(shè)備驅(qū) 動(dòng)器所接收)中查找(look up)從階段檢測(cè)器804所接收的所述新階段的標(biāo)識(shí)符,并以所述 查找中所發(fā)現(xiàn)的映射來(lái)更新快取內(nèi)存102的映射108。此外,如果需要的話,映射更新單元 806以新的階段標(biāo)識(shí)符802來(lái)更新階段檢測(cè)器804。在一實(shí)施例中,下一個(gè)需要被檢視的階段 取決于目前的階段;因此,即將被加載到階段檢測(cè)器804的階段標(biāo)識(shí)符802會(huì)取決于當(dāng)前的 階段而有所不同。所述流程接著進(jìn)行至方塊906。
[0110]在方塊906中,所述處理器執(zhí)行正在運(yùn)行的程序且生成內(nèi)存訪問(wèn)到快取內(nèi)存102, 以因應(yīng)于使得快取內(nèi)存102基于方塊904中更新的映射108,并用相關(guān)于圖5-6所描述的方式 來(lái)分配分路子集。所述流程結(jié)束于方塊906。
[0111]此處應(yīng)當(dāng)理解的是,盡管本發(fā)明實(shí)施例所揭露的快取內(nèi)存其具有特定數(shù)目和大小 的分路、集合、內(nèi)存線、標(biāo)簽、狀態(tài)協(xié)議(status protocols)等等,但本發(fā)明不以此為限。在 其它實(shí)施例中,快取內(nèi)存可具有其它數(shù)目和大小的的分路、集合、內(nèi)存線、標(biāo)簽、狀態(tài)協(xié)議等 等。
[0112]請(qǐng)參照?qǐng)D10,其所繪示為一集合關(guān)聯(lián)快取內(nèi)存1002之方塊示意圖。圖10的快取內(nèi) 存1002在許多方面與圖1的快取內(nèi)存102相似,此外,其具有類似編號(hào)的組件亦相似。然而, 圖10的快取內(nèi)存1002其所包括的映射1008與圖1的映射108不同。在圖10的快取內(nèi)存1002 中,每一個(gè)集合屬于多個(gè)彼此互斥的L個(gè)群組(group) 1001其中之一。更具體地說(shuō),圖10的映 射1008用以將每一個(gè)MAT關(guān)聯(lián)到陣列104中多個(gè)分路的一個(gè)子集(更關(guān)聯(lián)至L個(gè)群組中的一 個(gè)群組1001)。亦即,對(duì)L個(gè)群組中的每個(gè)群組1001而言,可視為圖2的映射108有效地包含于 圖10的映射1008中。因此,圖2的映射108可被MAT 101編號(hào)以一維方式來(lái)索引,而圖10的映 射1008可被MAT 101編號(hào)以二維方式來(lái)索引。
[0113]在圖10的例子中,其具有四個(gè)集合群組(set group),分別表示為群組0 1001-0, 其包括集合0-511;群組1 1001-1,其包括集合512-1023;群組2 1001-2,其包括集合1024-1535;以及群組3 1001-3,其包括集合1536-2047。因此,對(duì)此四個(gè)群組1001的每一個(gè)來(lái)說(shuō), 映射1008用以將每一個(gè)MAT關(guān)聯(lián)到陣列104中16個(gè)分路的其中一個(gè)子集。也就是說(shuō),圖10的 映射1008不僅將MAT映像到分路子集,更以集合群組為基礎(chǔ)做所述的映射,而不是如圖1所 示實(shí)施例中以整個(gè)快取內(nèi)存102為基礎(chǔ)做所述的映射。因此,分配單元106將依據(jù)內(nèi)存訪問(wèn) 122的MAT以及所選定集合和所屬的群組1001來(lái)分配分路子集。
[0114] 前述的分配對(duì)那些可能會(huì)聚集內(nèi)存訪問(wèn)于快取內(nèi)存1002特定集合合群組之某幾 個(gè)MATs的程序來(lái)說(shuō)是特別有利的。舉例來(lái)說(shuō),對(duì)于給定程序來(lái)說(shuō),具與堆棧操作(stack operation)相關(guān)的MAT的內(nèi)存訪問(wèn)傾向于聚集于快取內(nèi)存1002其最初幾個(gè)集合。在此情況 下的,映射1008可使相關(guān)于MATs(其相關(guān)于包含快取內(nèi)存1002的第一少數(shù)集合群組的堆棧 操作)的子集包括具有極大數(shù)目分路。所述傾向可以在程序執(zhí)行時(shí),通過(guò)程序和程序線程 (program thrend)的離線分析觀察到,而判定出一種有效的映射并提供給快取內(nèi)存1002, 其用于更新映射1008使得快取內(nèi)存1002更有效率,其相關(guān)詳細(xì)說(shuō)明請(qǐng)參照?qǐng)D7-9。
[0115] 此處應(yīng)當(dāng)理解的是,盡管本發(fā)明實(shí)施例所揭露的群組其具有特定數(shù)目(例如,如圖 10的4個(gè)群組),但本發(fā)明不以此為限。在其它實(shí)施例中,群組1001可具有其它數(shù)目。此外,此 處應(yīng)當(dāng)理解的是,群組1001的數(shù)目愈大,映射1008的尺寸也愈大。在一實(shí)施例中,群組的數(shù) 目可以小到相等于快取內(nèi)存1002其集合的數(shù)目。
[0116] 請(qǐng)參照?qǐng)D11,其所繪示為圖10的快取內(nèi)存1002其部分之更詳細(xì)方塊示意圖。圖10 所繪示的快取內(nèi)存1002的所述部分在許多方面與圖3相類似。圖10的快取內(nèi)存1002還包括 群組選取邏輯(group selection logic)1106,其用以將內(nèi)存訪問(wèn)122映射到群組1001。更 具體地,群組選取邏輯1106接收內(nèi)存訪問(wèn)122(或更具體的,接收內(nèi)存地址的索引)且生成集 合群組編號(hào)(set group number)1104,以因應(yīng)于具有被內(nèi)存訪問(wèn)122索引所選定集合的群 組1001所指定的數(shù)目。集合群組編號(hào)1104作為一個(gè)選取輸入而被提供到多功器(mu X)1102。 多功器(muX)1102為每個(gè)集合組群(例如,圖11的四個(gè)組群)接收矢量304(例如,每一個(gè)矢量 304用于一個(gè)MAT,類似于圖3)并選取與群組1