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