專(zhuān)利名稱(chēng):數(shù)據(jù)高速緩存虛擬提示路線預(yù)測(cè)及其應(yīng)用的制作方法
數(shù)據(jù)高速緩存虛擬提示路線預(yù)測(cè)及其應(yīng)用 相關(guān)申請(qǐng)的交叉引用
圖1B是進(jìn)一步示出圖1A的處理器的示意圖。 [OOll]圖2示出根據(jù)本發(fā)明一個(gè)實(shí)施例的示例加載/存儲(chǔ)單元。
圖3C示出根據(jù)本發(fā)明一個(gè)實(shí)施例的示例填充/存儲(chǔ)緩存器。圖5C2示出在加載數(shù)據(jù)隊(duì)列中多個(gè)加載條目中寫(xiě)入后寫(xiě) 入故障的檢測(cè)。
0027圖5D示出根據(jù)本發(fā)明一個(gè)實(shí)施例的多個(gè)寫(xiě)入后寫(xiě)入故障 的防止。盡管本文中將處理器100描述為包括幾個(gè)分離部件,但 是這些部件中許多是可選部件,不是在本發(fā)明的每個(gè)實(shí)施例中都存 在,或者可以是組合的元件,以使得兩個(gè)部件的功能性存在于單個(gè)部 件中。因此,例如在圖1中示出的獨(dú)立部件是說(shuō)明性的而不是為了限 制本發(fā)明。在一個(gè)實(shí)施例中,執(zhí)行單元102與在寄存器堆(RF) 130 中的32位寄存器中存儲(chǔ)的數(shù)據(jù)交互。另外,執(zhí)行單元102可以在一 個(gè)或多個(gè)完成緩存器(CB) 128中存儲(chǔ)數(shù)據(jù)。在一個(gè)實(shí)施例中,第一 完成緩存器128包括用于存儲(chǔ)來(lái)自整數(shù)執(zhí)行單元118和乘法/除法單元 120的數(shù)據(jù)的64位寄存器。第二完成緩存器128包括用于存儲(chǔ)來(lái)自加 載/存儲(chǔ)單元108的數(shù)據(jù)的32位寄存器??蛇x地,可以包括一個(gè)或多 個(gè)另外的寄存器堆組以使在例如中斷和/或異常處理期間上下文 (context)切換開(kāi)銷(xiāo)(overhead)最小化。執(zhí)行單元102與指令分派單元(IDU )106、完畢單元(GRU) 126、存儲(chǔ)器管理單元(MMU) 110、寄存器堆130、完成緩存器128 以及可選的協(xié)處理器124接口連接。在一個(gè)實(shí)施例中,指令分派單元106還通過(guò)例如執(zhí)行單元 102之內(nèi)的流水線級(jí)(stage)追蹤指令的進(jìn)展,并且更新在重命名映 射(map )中以及在被解碼指令緩存器113中的所有相關(guān)(dependent) 指令中操作數(shù)的有效性。指令分派單元106還將指令標(biāo)識(shí)、完成緩存 器標(biāo)識(shí)和有關(guān)的信息值寫(xiě)入到完畢單元126中的結(jié)構(gòu)中。指令高速緩存112是被組織為多路設(shè)置的關(guān)聯(lián)高速緩存的 片上存儲(chǔ)器陣列,該多路設(shè)置的關(guān)聯(lián)高速緩存例如2路設(shè)置的關(guān)聯(lián)高 速緩存或4路設(shè)置的關(guān)聯(lián)高速緩存。優(yōu)選地,虛擬地索引指令高速緩 存112并且對(duì)指令高速緩存112物理地加以標(biāo)記,由此允許虛擬到物 理的地址轉(zhuǎn)換與高速緩存存取并行發(fā)生。在一個(gè)實(shí)施例中,標(biāo)記包括 有效位和除物理地址位之外的可選奇偶位。指令高速緩存112與指令 取出單元104連接。圖1B還示出處理器100的操作。如圖1B所示,處理器 100執(zhí)行四種基本功能指令取出;指令解碼和分派;指令執(zhí)行;以 及指令完畢。這四種基本功能是說(shuō)明性的而不是為了限制本發(fā)明。在指令取出期間,檢查與要從指令高速緩存112取出的 指令相關(guān)的標(biāo)記。在一個(gè)實(shí)施例中,標(biāo)記包含為每個(gè)指令指示指令類(lèi) 型的預(yù)編碼位。如果這些預(yù)編碼位指示指令是控制轉(zhuǎn)移指令,則分支 歷史表被訪問(wèn)并且被用于確定該控制轉(zhuǎn)移指令可能分支還是可能不分支。例如在一個(gè)或多個(gè)指令被從指令緩存器105接收并且由指 令解碼器107解碼時(shí),指令解碼和分派(在圖1A中由指令分派單元 106表示)開(kāi)始。在一個(gè)實(shí)施例中,按照分支誤預(yù)測(cè)的解決方案,從 指令緩存器105接收指令的能力可以被暫時(shí)中止,直到駐留于處理器 100的指令執(zhí)行部分和/或指令完畢部分內(nèi)的選擇的指令被清除為止。加栽/存儲(chǔ)單元108可以不按程序次序處理例如32位或64 位加載指令和存儲(chǔ)指令。在實(shí)施例中,加栽/存儲(chǔ)單元108可以處理多 達(dá)四個(gè)向分支接口單元116的獨(dú)特的未中請(qǐng)求,支持16KB、 32KB和 /或64KB數(shù)據(jù)高速緩存存儲(chǔ)器請(qǐng)求,實(shí)現(xiàn)最近最少使用的高速緩存替 代方案,提供硬件虛擬混疊支持,支持標(biāo)記和數(shù)據(jù)奇偶性,并且實(shí)現(xiàn) 基于虛擬標(biāo)記的路線預(yù)測(cè)。借助于加載/存儲(chǔ)單元控制邏輯200實(shí)現(xiàn)這 些特征。加載/存儲(chǔ)隊(duì)列202保持用于特定類(lèi)別指令的地址值、狀態(tài) 值以及數(shù)據(jù),所述指令例如由加栽/存儲(chǔ)單元108執(zhí)行的加栽和存儲(chǔ)指 令以及存儲(chǔ)器訪問(wèn)指令??梢詫⒃诩虞d/存儲(chǔ)隊(duì)列202中存儲(chǔ)的數(shù)據(jù)旁 路(bypass)到使用加載/存儲(chǔ)單元控制邏輯200的相關(guān)指令。在實(shí)施 例中,用于由加載/存儲(chǔ)單元108執(zhí)行的指令的信息,包括完畢的加載 /存儲(chǔ)指令,被保持在加載/存儲(chǔ)隊(duì)列202中,直到指令完成或用于該 指令的信息被移動(dòng)到加載/存儲(chǔ)單元108的另一個(gè)源為止,該另一個(gè)源 例如填充/存儲(chǔ)緩存器206和/或加載數(shù)據(jù)隊(duì)列208。在發(fā)布的指令被加載/存儲(chǔ)單元108接收時(shí),加載/存儲(chǔ)單 元控制邏輯200確定指令類(lèi)型,并且用于該指令的虛擬地址(如果適 用的話)被計(jì)算。該虛擬地址被存儲(chǔ)在加載/存儲(chǔ)隊(duì)列202中。加載/ 存儲(chǔ)隊(duì)列202也存儲(chǔ)用于每個(gè)指令的狀態(tài)信息和數(shù)據(jù)。該狀態(tài)信息包 括例如加栽或存儲(chǔ)指令是命中還是未中。
0072加栽/存儲(chǔ)單元控制邏輯200對(duì)于對(duì)數(shù)據(jù)高速緩存114的訪 問(wèn)進(jìn)行仲裁。數(shù)據(jù)高速緩存114和標(biāo)記信息被讀取,并且信息被存儲(chǔ) 在加載/存儲(chǔ)隊(duì)列202中。在數(shù)據(jù)高速緩存114中命中的加載和存儲(chǔ)更 新數(shù)據(jù)高速緩存114的路線選擇線324(見(jiàn)圖3E)。在一個(gè)實(shí)施例中, 數(shù)據(jù)高速緩存114的每條標(biāo)記線320包含物理地址標(biāo)記和虛擬地址標(biāo) 記(虛擬提示)兩者。虛擬地址標(biāo)記用于生成初期高速緩存路線預(yù)測(cè), 該初期高速緩存路線預(yù)測(cè)在隨后的處理器時(shí)鐘周期中被利用物理地 址比較進(jìn)行支持,并且基于該比較,加載未中/命中信號(hào)被提供到執(zhí)行 單元102和完畢單元126,從而在必要時(shí)可以重放任何相關(guān)的指令。 可以基于虛擬地址選擇駐留于加載/存儲(chǔ)隊(duì)列202、填充/存儲(chǔ)緩存器 206、數(shù)據(jù)高速緩存114和/或便箋式隨機(jī)存取存儲(chǔ)器中的數(shù)據(jù),并且 在可用時(shí)旁路該數(shù)據(jù)。在一個(gè)實(shí)施例中,來(lái)自加載/存儲(chǔ)隊(duì)列202的數(shù) 據(jù)具有被選擇并且旁路的最高優(yōu)先權(quán),接著依次是來(lái)自填充/存儲(chǔ)緩存 器206的數(shù)據(jù)、來(lái)自數(shù)據(jù)高速緩存114的數(shù)據(jù)、以及來(lái)自便箋式隨機(jī)存取存儲(chǔ)器的數(shù)據(jù)。來(lái)自加載/存儲(chǔ)隊(duì)列202的部分?jǐn)?shù)據(jù)也可以與來(lái)自 填充/存儲(chǔ)緩存器206的數(shù)據(jù)組合,以及被旁路到處理器100的一個(gè)或 多個(gè)流水線級(jí)。優(yōu)選地,基于指令的完成緩存器標(biāo)識(shí)值分配加載/存儲(chǔ)隊(duì)列 標(biāo)識(shí)值300。在一個(gè)實(shí)施例中,加載/存儲(chǔ)隊(duì)列標(biāo)識(shí)值300與在指令解 碼和分派期間分配的完成緩存器標(biāo)識(shí)值相同。在另一實(shí)施例中,在加 載/存儲(chǔ)隊(duì)列標(biāo)識(shí)值300和在指令解碼和分派期間分配的完成緩存器
標(biāo)識(shí)值之間存在--對(duì)應(yīng),從而完成緩存器標(biāo)識(shí)值的一部分用作加載
/存儲(chǔ)隊(duì)列標(biāo)識(shí)值300 (例如,完成緩存器標(biāo)識(shí)值的一定數(shù)目的最低有 效位可以用作加栽/存儲(chǔ)隊(duì)列標(biāo)識(shí)值300)。物理標(biāo)記信息304包括物理地址(PADD)值、狀態(tài)(STATUS)值、同名異物(homonym) ( H)值以及命中路線(HW ) 值。在實(shí)施例中,存儲(chǔ)在加載/存儲(chǔ)隊(duì)列108中的物理地址位可以少于 所有物理地址位(如,可以忽略一些最低有效位)。該狀態(tài)值用于指 示關(guān)聯(lián)的高速緩存線的狀態(tài)。在一個(gè)實(shí)施例中,狀態(tài)值對(duì)關(guān)聯(lián)的高速 緩存線是否存在于數(shù)據(jù)高速緩存114中以及例如在加載指令的情況下 數(shù)據(jù)是否已經(jīng)被旁路進(jìn)行編碼。物理標(biāo)記信息304的同名異物值指示 虛擬同名異物存在(即, 一個(gè)虛擬地址映射到兩個(gè)物理地址的情形)。 命中路線值標(biāo)識(shí)關(guān)聯(lián)的高速緩存線存在于哪路高速緩存中。基于高速 緩存線填充,更新命中路線值以反映高速緩存線被寫(xiě)入的路線。加載/存儲(chǔ)單元控制邏輯200控制加載/存儲(chǔ)隊(duì)列202中的 條目的分配以及解除分配。在實(shí)施例中,可以基于每個(gè)線程清刷 (flush)加載/存儲(chǔ)隊(duì)列202,并且將加載/存儲(chǔ)隊(duì)列202壓縮以移除 清刷掉的(flush out)條目。虛擬標(biāo)記信息302的線程上下文標(biāo)識(shí)值 用于支持這些功能性。當(dāng)完畢單元126遇到管道清刷情況時(shí),線程上 下文標(biāo)識(shí)值被與指令殺死(instruction kill)信號(hào)一起廣播到加載/存 儲(chǔ)單元108。作為響應(yīng),加載/存儲(chǔ)隊(duì)列202清刷用于該線程的所有未 完畢的加載存儲(chǔ)隊(duì)列條目。(LDQ) 208。加載數(shù)據(jù)隊(duì)列208是N條目的存儲(chǔ)器結(jié)構(gòu)。在一個(gè)實(shí) 施例中,加載數(shù)據(jù)隊(duì)列208是4條目的存儲(chǔ)器結(jié)構(gòu)。在加載數(shù)據(jù)隊(duì)列 208中的每個(gè)條目被配置用于存儲(chǔ)數(shù)據(jù)(DATA )值、數(shù)據(jù)有效(DV) 值、寫(xiě)回(WB)值、有效信息(VALID)值、填充/存儲(chǔ)緩存器標(biāo)識(shí)
(FSBID)值、以及寄存器目的地(RD)值。如此處描述的,在一個(gè) 實(shí)施例中,加載數(shù)據(jù)隊(duì)列208的寫(xiě)回值可用于防止寫(xiě)入后寫(xiě)入故障。 這是通過(guò)如下實(shí)現(xiàn)的,例如,將寫(xiě)回值設(shè)置為零,由此在請(qǐng)求的數(shù)據(jù) 返回之后阻止加載數(shù)據(jù)隊(duì)列208將數(shù)據(jù)寫(xiě)入到寄存器堆130??赡芤蚣虞d或存儲(chǔ)高速緩存未中以及高速緩存操作而分 配填充/存儲(chǔ)緩存器206條目。每個(gè)條目保持屬于高速緩存操作的未完 成的線、存儲(chǔ)數(shù)據(jù)和信息。填充/存儲(chǔ)緩存器206將數(shù)據(jù)轉(zhuǎn)送到高速緩 存(填充)、到加栽/存儲(chǔ)單元108流水線級(jí)(加栽,填充/存儲(chǔ)緩存 器206命中)以及到加載數(shù)據(jù)隊(duì)列208 (具有部分的填充/存儲(chǔ)緩存器 206命中的加載未中,或加栽未中而不轉(zhuǎn)送數(shù)據(jù))。填充/存儲(chǔ)緩存器 206取該存儲(chǔ)數(shù)據(jù)并且將其與總線接口單元116返回?cái)?shù)據(jù)合并,以及 在填充完成之前將該線轉(zhuǎn)送到數(shù)據(jù)高速緩存114。填充/存儲(chǔ)緩存器 206存儲(chǔ)用以執(zhí)行高速緩存操作的信息。虛擬地址和物理地址的分配 并不發(fā)生在相同的處理器周期中,并且在一個(gè)實(shí)施例中,物理地址被 分配在虛擬地址之后的幾個(gè)周期。物理地址的退棄(retiring)也比填 充/存儲(chǔ)緩存器206的條目中的虛擬地址的退棄例如晚幾個(gè)周期才發(fā) 生。。物理地址標(biāo)記值也包括物理地址的選定數(shù)目的最 高有效位。在一個(gè)實(shí)施例中,使用物理地址的位[31:12。標(biāo)記ram是 線寬可寫(xiě)的。如此處描述的,本發(fā)明的特征之一是在實(shí)施例中,可以 檢測(cè)虛擬地址混疊或虛擬同物異名的情形,并且使用混疊路線預(yù)測(cè)值 取出所需數(shù)據(jù)。如圖3F所示,虛擬地址混疊可以發(fā)生在例如兩個(gè)進(jìn) 程(processes)使用不同的虛擬地址訪問(wèn)相同的物理存儲(chǔ)器時(shí)。如圖3F所示,物理存儲(chǔ)器的頁(yè)面301被存儲(chǔ)在高速緩存中。物理存儲(chǔ)器的 該頁(yè)面301由進(jìn)程1映射到虛擬存儲(chǔ)器的頁(yè)面311。物理存儲(chǔ)器的相 同的頁(yè)面301由進(jìn)行2映射到虛擬存儲(chǔ)器的不同頁(yè)面313。由此,進(jìn) 程1和進(jìn)程2使用不同虛擬地址訪問(wèn)存儲(chǔ)在高速緩存中的物理存儲(chǔ)器 的頁(yè)面301。在傳統(tǒng)的處理器中,執(zhí)行物理地址標(biāo)記比較以進(jìn)行路線選 擇。然而,使用物理標(biāo)記執(zhí)行路線選擇損害(hurt)頻率,因?yàn)楸仨?在物理標(biāo)記可用之前執(zhí)行虛擬到物理地址轉(zhuǎn)換。 -使用物理標(biāo)記還在處 理器設(shè)計(jì)中產(chǎn)生關(guān)鍵路徑。典型地,虛擬地址標(biāo)記比較在傳統(tǒng)的處理 器中不用于路線選擇。不使用它們的一個(gè)原因是因?yàn)樘摂M標(biāo)記比較不 能有效地處理虛擬同物異名并且導(dǎo)致退化的性能。然而,對(duì)于根據(jù)本 發(fā)明的處理器,情況不是這樣。如此處描述的,這樣的處理器能夠每 個(gè)高速緩存索引容納一個(gè)同物異名,而不會(huì)降低性能,并且在虛擬同 物異名的情況下精確地預(yù)測(cè)命中路線信息。如圖3H所示,當(dāng)與虛擬地址319相關(guān)聯(lián)的物理地址可用 時(shí),使用比較器335將相應(yīng)的物理地址標(biāo)記位與存儲(chǔ)在標(biāo)記ram 320 中的物理地址標(biāo)記位進(jìn)行比較。使用邏輯337將比較器335的輸出與 取出的有效位組合以生成命中/未中信息。命中/未中信息被提供到驗(yàn) 證和預(yù)測(cè)更新邏輯329。如果用于取出和轉(zhuǎn)送的數(shù)據(jù)的物理地址標(biāo)記 位和與虛擬地址319相關(guān)聯(lián)的物理地址標(biāo)記位匹配,則驗(yàn)證和預(yù)測(cè)更 新邏輯329生成提供到例如執(zhí)行單元102和完畢單元126的高速緩存 命中信號(hào)。如果用于取出和轉(zhuǎn)送的數(shù)據(jù)的物理地址標(biāo)記位和與虛擬地 址319相關(guān)的物理地址標(biāo)記位不匹配,則驗(yàn)證和預(yù)測(cè)更新邏輯329生 成提供到例如執(zhí)行單元102和完畢單元126的高速緩存未中信號(hào)。如圖3H所示,從邏輯337被提供到驗(yàn)證和預(yù)測(cè)更新邏輯 329的命中和未中信號(hào)用于更新存儲(chǔ)在臟陣列326中的混疊路線預(yù)測(cè) 值。例如,如果邏輯337n輸出命中(匹配)信號(hào),則存儲(chǔ)在臟陣列 326中的相應(yīng)混疊路線預(yù)測(cè)值^皮更新以指向與標(biāo)記ram 320n相關(guān)的 路線。由此,標(biāo)識(shí)虛擬同物異名情形,并且訓(xùn)練處理器即使在虛擬同 物異名的情況下也精確地預(yù)測(cè)命中路線信息。加載/存儲(chǔ)單元108中的加載/存儲(chǔ)單元控制邏輯200接收 指令402的指令類(lèi)型信息(對(duì)該例子來(lái)說(shuō),指令402是加載指令), 并且計(jì)算用于所需要的加載數(shù)據(jù)的虛擬地址。如圖4A所示,加載/存 儲(chǔ)單元控制邏輯200分配加載/存儲(chǔ)隊(duì)列202中的條目4(M,用于存儲(chǔ) 與指令402相關(guān)聯(lián)的信息。如圖4A所示,指令402被分配了加載/存儲(chǔ)隊(duì)列標(biāo)識(shí)值10。指令402的指令標(biāo)識(shí)值是一。指令標(biāo)識(shí)值用于指示指令402相對(duì)于其 它程序指令的"年齡(age)"或程序次序。在一個(gè)實(shí)施例中,具有較 高的指令標(biāo)識(shí)值的指令按程序次序在具有較低的指令標(biāo)識(shí)值的指令 之后。加載/存儲(chǔ)隊(duì)列202中的完畢值被重置為零,因?yàn)樵撝噶钸€沒(méi)有 完畢。寄存器目標(biāo)值被設(shè)置為四,由此指示寄存器堆130中的寄存器 R4是最終將存儲(chǔ)加載指令402的結(jié)果的目的地寄存器。狀態(tài)字段的 最低有效位被置為零以指示加載是未中。狀態(tài)字段的最高有效位被置 為零以指示將被加栽的值不存在于數(shù)據(jù)高速緩存114中。數(shù)據(jù)有效位
被置為零以指示由于加載未中,沒(méi)有有效數(shù)據(jù)存在于該數(shù)據(jù)字段中。圖4B繼續(xù)圖4A的例子。圖4B示出指令402的完畢以及 在加載/存儲(chǔ)完畢緩存器204中條目406的分配,加載/存儲(chǔ)完畢緩存 器204保持指向加載/存儲(chǔ)隊(duì)列202的條目404的指針。如此處描述的, 完畢單元126按程序次序使加載指令402完畢。在到與加載/存儲(chǔ)完畢緩存器204中的指針相關(guān)聯(lián)的指令 被服務(wù)時(shí)所需的加載數(shù)據(jù)在數(shù)據(jù)高速緩存114中變得可用的情況下, 所需的是分配加載數(shù)據(jù)隊(duì)列208中的條目用于該指令,以及發(fā)送探針 到數(shù)據(jù)高速緩存114以取出該數(shù)據(jù)。在填充/存儲(chǔ)緩存器206中沒(méi)有條 目被要求,因?yàn)樗钄?shù)據(jù)將被從數(shù)據(jù)高速緩存114轉(zhuǎn)送到加載數(shù)據(jù)隊(duì) 列208。在所需數(shù)據(jù)在填充/存儲(chǔ)緩存器206的條目中可用的情況 下,所需數(shù)據(jù)由填充/存儲(chǔ)緩存器206轉(zhuǎn)送到加栽/存儲(chǔ)隊(duì)列202和/或 加栽數(shù)據(jù)隊(duì)列208,而不需要分配填充/存儲(chǔ)緩存器206中的條目。如 果在填充/存儲(chǔ)緩存器206已經(jīng)分配了條目,則加載/存儲(chǔ)單元控制邏 輯200在加載數(shù)據(jù)隊(duì)列208的相應(yīng)的條目(如,條目410)中存儲(chǔ)填 充/存儲(chǔ)緩存器標(biāo)識(shí)值(如,條目408中示出的值三)作為在填充/存 儲(chǔ)緩存器206和加載數(shù)據(jù)隊(duì)列208之間的指針。
0122當(dāng)用于指令402的所需數(shù)據(jù)被從總線接口單元116返回 時(shí),總線接口單元116數(shù)據(jù)有效(BIU DV)位被設(shè)置為一,并且該 數(shù)據(jù)被轉(zhuǎn)送到加載數(shù)據(jù)隊(duì)列208的條目410 (如,使用FSBED作為到加載數(shù)據(jù)隊(duì)列208中的索引以指示數(shù)據(jù)應(yīng)該存儲(chǔ)在哪里)。在加載 數(shù)據(jù)隊(duì)列208接收指令402的未中的加載數(shù)據(jù)之后,當(dāng)且僅當(dāng)寫(xiě)回
(WB)值被設(shè)置為一時(shí),其將該數(shù)據(jù)寫(xiě)回到由寄存器目的地(RD) 值指示的寄存器。雖然已經(jīng)在上面描述了本發(fā)明的各種實(shí)施例,應(yīng)當(dāng)理解這 些實(shí)施例是以示例的方式描述的,而不是限制本發(fā)明??梢栽谄渲凶?出各種改變而不偏離本發(fā)明的范圍,這對(duì)于相關(guān)計(jì)算機(jī)領(lǐng)域的技術(shù)人 員是顯而易見(jiàn)的。此外,應(yīng)當(dāng)理解,本文中提供的本發(fā)明的具體實(shí)施 方式部分,而不是發(fā)明內(nèi)容和摘要部分,意圖是用于解釋權(quán)利要求。 如發(fā)明人所預(yù)期的,發(fā)明內(nèi)容和摘要部分可以闡明本發(fā)明的一個(gè)或多 個(gè)示范實(shí)施例,但不是所有示范實(shí)施例。
應(yīng)當(dāng)明白,本文中描述的裝置和方法實(shí)施例可以;故包括在 半導(dǎo)體知識(shí)產(chǎn)權(quán)核內(nèi),例如微處理器核(如,以HDL實(shí)現(xiàn)),并且在集成電路生產(chǎn)中被轉(zhuǎn)換為硬件。另外,本文中描述的裝置和方法可 以被實(shí)現(xiàn)為硬件和軟件的組合。因此,本發(fā)明不應(yīng)受任何上述示范實(shí) 施例限制,而應(yīng)該僅根據(jù)下面的權(quán)利要求及其等同物來(lái)限定。
權(quán)利要求
1.一種處理器,包括多個(gè)第一存儲(chǔ)器,被配置用于存儲(chǔ)虛擬地址標(biāo)記位和物理地址標(biāo)記位;多個(gè)第二存儲(chǔ)器,被配置用于存儲(chǔ)數(shù)據(jù)位,每個(gè)所述第二存儲(chǔ)器與所述多個(gè)第一存儲(chǔ)器之一對(duì)應(yīng);以及第三存儲(chǔ)器,被配置用于存儲(chǔ)混疊路線預(yù)測(cè)值,其中,從由存儲(chǔ)在所述第三存儲(chǔ)器中的混疊路線預(yù)測(cè)值所指定的特定第二存儲(chǔ)器取出數(shù)據(jù)位,并且如果在虛擬地址的選擇的位和虛擬地址標(biāo)記位之間不存在匹配,則將該數(shù)據(jù)位轉(zhuǎn)送到執(zhí)行單元,所述虛擬地址標(biāo)記位存儲(chǔ)在所述多個(gè)第一存儲(chǔ)器中在由所述虛擬地址的位索引的位置處。
2. 根據(jù)權(quán)利要求1的處理器,其中,如果與所述虛擬地址相關(guān) 聯(lián)的物理地址的選擇的位與物理地址標(biāo)記位不匹配,則將未中信號(hào)提 供到所述執(zhí)行單元,所述物理地址標(biāo)記位存儲(chǔ)在與所述特定第二存儲(chǔ) 器相關(guān)聯(lián)的特定第一存儲(chǔ)器中在由所述虛擬地址的位所索引的位置 處。
3. 根據(jù)權(quán)利要求2的處理器,其中,如果所述執(zhí)行單元接收到 所述未中信號(hào),則對(duì)轉(zhuǎn)送的數(shù)據(jù)位進(jìn)行操作的指令被重放。
4. 根據(jù)權(quán)利要求1的處理器,其中,如果與所述虛擬地址相關(guān) 聯(lián)的物理地址的選擇的位與物理地址標(biāo)記位匹配,則將命中信號(hào)提供 到所述執(zhí)行單元,所述物理地址標(biāo)記位存儲(chǔ)在與所述特定第二存儲(chǔ)器 相關(guān)聯(lián)的特定第一存儲(chǔ)器中在由虛擬地址的位所索引的位置處。
5. —種系統(tǒng),包括處理器,其包括多個(gè)第一存儲(chǔ)器,被配置用于存儲(chǔ)虛擬地址標(biāo)記位和物理地址標(biāo)記位,多個(gè)第二存儲(chǔ)器,被配置用于存儲(chǔ)數(shù)據(jù)位,每個(gè)所述第二存儲(chǔ)器與所述多個(gè)第一存儲(chǔ)器之一對(duì)應(yīng),以及第三存儲(chǔ)器,被配置用于存儲(chǔ)混疊路線預(yù)測(cè)值, 其中,從由存儲(chǔ)在所述第三存儲(chǔ)器中的混疊路線預(yù)測(cè)值指定的特 定第二存儲(chǔ)器取出數(shù)據(jù)位,并且如果在虛擬地址的選擇的位和虛擬地址標(biāo)記位之間不存在匹配,則將所述數(shù)據(jù)位轉(zhuǎn)送到執(zhí)行單元,所述虛 擬地址標(biāo)記位存儲(chǔ)在所述多個(gè)第一存儲(chǔ)器中在由所述虛擬地址的位索引的位置處;以及耦合到所述處理器的主存儲(chǔ)器。
6. 根據(jù)權(quán)利要求5的系統(tǒng),其中,如果與所述虛擬地址相關(guān)聯(lián) 的物理地址的選擇的位與物理地址標(biāo)記位不匹配,則將未中信號(hào)提供 到所述執(zhí)行單元,所述物理地址標(biāo)記位存儲(chǔ)在與所述特定第二存儲(chǔ)器 相關(guān)聯(lián)的特定第一存儲(chǔ)器中在由所述虛擬地址的位索引的位置處。
7. 根據(jù)權(quán)利要求6的系統(tǒng),其中,如果所述執(zhí)行單元接收到所 述未中信號(hào),則對(duì)所轉(zhuǎn)送的數(shù)據(jù)位進(jìn)行操作的指令被重放。
8. 根據(jù)權(quán)利要求5的系統(tǒng),其中,如果與所述虛擬地址相關(guān)聯(lián) 的物理地址的選擇的位與物理地址標(biāo)記位匹配,則將命中信號(hào)提供到 所述執(zhí)行單元,所述物理地址標(biāo)記位存儲(chǔ)在與所述特定第二存儲(chǔ)器相 關(guān)聯(lián)的特定第一存儲(chǔ)器中在由所述虛擬地址的位所索引的位置處。
9. 一種有形的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),包括以軟件實(shí)施的處理器, 該處理器包括多個(gè)第一存儲(chǔ)器,被配置用于存儲(chǔ)虛擬地址標(biāo)記位和物理地址標(biāo)記位;多個(gè)第二存儲(chǔ)器,被配置用于存儲(chǔ)數(shù)據(jù)位,每個(gè)所述第二存儲(chǔ)器 與所述多個(gè)第一存儲(chǔ)器之一對(duì)應(yīng);以及第三存儲(chǔ)器,被配置用于存儲(chǔ)混疊路線預(yù)測(cè)值, 其中,從由存儲(chǔ)在所述第三存儲(chǔ)器中的混疊路線預(yù)測(cè)值指定的特 定第二存儲(chǔ)器取出數(shù)據(jù)位,并且如果在虛擬地址的選擇的位和虛擬地 址標(biāo)記位之間不存在匹配,則將該數(shù)據(jù)位轉(zhuǎn)送到執(zhí)行單元,所述虛擬 地址標(biāo)記位存儲(chǔ)在所述多個(gè)笫一存儲(chǔ)器中在由所述虛擬地址的位索引的位置處。
10.根據(jù)權(quán)利要求9的有形的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中,如果匹配,則將未中信號(hào)提供到所述執(zhí)行單元,所述物理地址標(biāo)記位存儲(chǔ) 在與所述特定第二存儲(chǔ)器相關(guān)聯(lián)的特定第一存儲(chǔ)器中在由所述虛擬 地址的位所索引的位置處。
11. 根據(jù)權(quán)利要求10的有形的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中,如 果所述執(zhí)行單元接收到所述未中信號(hào),則對(duì)轉(zhuǎn)送的數(shù)據(jù)位進(jìn)行操作的 指令被重放。
12. 根據(jù)權(quán)利要求9的有形的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中,如果配,則將命中信號(hào)提供到所述執(zhí)行單元,所述物理地址標(biāo)記位存儲(chǔ)在 與所述特定第二存儲(chǔ)器相關(guān)聯(lián)的特定第一存儲(chǔ)器中在由所述虛擬地 址的位所索引的位置處。
13. 根據(jù)權(quán)利要求9的有形的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中,所述 處理器以硬件描述語(yǔ)言軟件實(shí)施。
14. 根據(jù)權(quán)利要求9的有形的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中,所述 處理器以Verilog硬件描述語(yǔ)言軟件和VHDL硬件描述語(yǔ)言軟件之一 實(shí)施。
15. —種從數(shù)據(jù)高速緩存取出由存儲(chǔ)器訪問(wèn)指令指定的數(shù)據(jù)的 方法,包括將與所述存儲(chǔ)器訪問(wèn)指令相關(guān)聯(lián)的虛擬地址的選擇的位與存儲(chǔ) 在標(biāo)記存儲(chǔ)器中、在由所述虛擬地址的位索引的位置處的虛擬地址標(biāo) 記位進(jìn)行比較;如果所述虛擬地址的所述選擇的位與存儲(chǔ)在標(biāo)記存儲(chǔ)器中、在由 所述虛擬地址的位索引的位置處的虛擬地址標(biāo)記位不匹配,則從由混 疊路線預(yù)測(cè)值指定的數(shù)據(jù)存儲(chǔ)器取出數(shù)據(jù);以及將與所述虛擬地址相關(guān)聯(lián)的物理地址的選擇的位與用于所取出 的數(shù)據(jù)的物理地址標(biāo)記位進(jìn)行比較,以確定所取出的數(shù)據(jù)是否是由所述存儲(chǔ)器訪問(wèn)指令指定的數(shù)據(jù)。
16. 根據(jù)權(quán)利要求15的方法,還包括如果與所述虛擬地址相關(guān)聯(lián)的所述物理地址的選擇的位與用于 所取出的數(shù)據(jù)的物理地址標(biāo)記位匹配,則生成高速緩存命中信號(hào)。
17. 根據(jù)權(quán)利要求15的方法,還包括如果與所述虛擬地址相關(guān)聯(lián)的所述物理地址的選擇的位與用于 所取出的數(shù)據(jù)的物理地址標(biāo)記位不匹配,則生成高速緩存未中信號(hào)。
18. —種將由存儲(chǔ)器訪問(wèn)指令指定的數(shù)據(jù)轉(zhuǎn)送到處理器的執(zhí)行 單元的方法,包括如果虛擬地址的選擇的位與存儲(chǔ)在標(biāo)記存儲(chǔ)器中、在由所述虛擬 地址的位所索引的位置處的虛擬地址標(biāo)記位不匹配,則從由混疊路線預(yù)測(cè)值指定的數(shù)據(jù)存儲(chǔ)器取出數(shù)據(jù);將所取出的數(shù)據(jù)轉(zhuǎn)送到所述執(zhí)行單元;以及將與所述虛擬地址相關(guān)聯(lián)的物理地址的選擇的位與用于所轉(zhuǎn)送 的數(shù)據(jù)的物理地址標(biāo)記位進(jìn)行比較,以確定所轉(zhuǎn)送的數(shù)據(jù)是否是由所 述存儲(chǔ)器訪問(wèn)指令指定的數(shù)據(jù)。
19. 根據(jù)權(quán)利要求18的方法,還包括如果與所述虛擬地址相關(guān)聯(lián)的所述物理地址的選擇的位與用于 所轉(zhuǎn)送的數(shù)據(jù)的物理地址標(biāo)記位匹配,則將高速緩存命中信號(hào)提供到 所述執(zhí)行單元。
20. 根據(jù)權(quán)利要求18的方法,還包括如果與所述虛擬地址相關(guān)聯(lián)的所述物理地址的選擇的位與用于 所轉(zhuǎn)送的數(shù)據(jù)的物理地址標(biāo)記位不匹配,則將高速緩存未中信號(hào)提供 到所述執(zhí)行單元。
21. —種系統(tǒng),包括處理器,其包括存儲(chǔ)器,所述存儲(chǔ)器被配置用于在第一部分中存 儲(chǔ)虛擬地址標(biāo)記位和物理地址標(biāo)記位,在第二部分中存儲(chǔ)數(shù)據(jù)位,以 及在第三部分中存儲(chǔ)混疊路線預(yù)測(cè)值,其中,如果在虛擬地址的選擇 的位和存儲(chǔ)在所述存儲(chǔ)器中、由所述虛擬地址的位所索引的位置處的虛擬地址標(biāo)記位之間不存在匹配,則使用指定的混疊路線預(yù)測(cè)值取出數(shù)據(jù)位并且將所述數(shù)據(jù)位轉(zhuǎn)送到執(zhí)行單元;以及 耦合到所述處理器的主存儲(chǔ)器。
22.根據(jù)權(quán)利要求21的系統(tǒng),其中,如果與所述虛擬地址相關(guān)位置處的物理地址標(biāo)記位不匹配,則將未中信號(hào)提供到所述執(zhí)行單 元。
全文摘要
本發(fā)明提供一種基于數(shù)據(jù)高速緩存路線預(yù)測(cè)方案的虛擬提示及其應(yīng)用。在一個(gè)實(shí)施例中,處理器基于虛擬提示值或混疊路線預(yù)測(cè)值從數(shù)據(jù)高速緩存取出數(shù)據(jù),并且在用于該數(shù)據(jù)的物理地址可用之前將該數(shù)據(jù)轉(zhuǎn)送到相關(guān)的指令。在物理地址可用之后,將物理地址與轉(zhuǎn)送的數(shù)據(jù)的物理地址標(biāo)記值進(jìn)行比較,以驗(yàn)證該轉(zhuǎn)送的數(shù)據(jù)是正確數(shù)據(jù)。如果該轉(zhuǎn)送的數(shù)據(jù)是正確數(shù)據(jù),則生成命中信號(hào)。如果該轉(zhuǎn)送的數(shù)據(jù)不是正確數(shù)據(jù),則生成未中信號(hào)。對(duì)不正確的數(shù)據(jù)進(jìn)行運(yùn)算的任何指令被無(wú)效和/或重放。
文檔編號(hào)G06F12/00GK101558388SQ200780042526
公開(kāi)日2009年10月14日 申請(qǐng)日期2007年9月28日 優(yōu)先權(quán)日2006年9月29日
發(fā)明者E·K·南賈, M·尼, V·拉杰戈帕蘭, 夢(mèng)冰·于 申請(qǐng)人:Mips技術(shù)公司