專利名稱:具有省電指令高速緩存通路預測器和指令代替方案的微處理器的制作方法
技術領域:
本發(fā)明一般地涉及微處理器,以及降低微處理器中的功耗。
背景技術:
微處理器的指令提取單元負責向微處理器的執(zhí)行單元持續(xù)提供
下一個適當?shù)闹噶?。傳統(tǒng)的指令提取單元典型地采用大指令高速緩
存,這種高速緩存能夠始終盡可能快地向執(zhí)行單元提供指令。盡管傳 統(tǒng)的提取單元能夠達到它們期望的目的,但它們消耗了巨大的微處理
器總功率。這樣就使得具有傳統(tǒng)提取單元的微處理器不期望和/或不實 用于許多應用。
需要一種微處理器和指令提取單元,能夠在消耗功率小于傳統(tǒng)提 取單元的同時提供大指令高速緩存的性能優(yōu)勢。
發(fā)明內容
本發(fā)明提供了 一種具有省電指令高速緩存通路預測器和指令代 替方案的微處理器。在一個實施例中,根據(jù)本發(fā)明的處理器內核具有
提高了性能的多循環(huán)處理流水線。該處理器內核包括多通路組相關 高速緩存、通路預測器和策略計數(shù)器。多通路組相關高速緩存可以是 例如2通路組相關高速緩存、4通路組相關高速緩存、8通路組相關 高速緩存等。策略計數(shù)器向通路預測器提供信號,以確定通路預測器 是在第一省電模式還是在第二省電模式下運行。
當通路預測器在第 一省電模式下運行時,通路預測器在第 一個處 理周期期間使能所預測的具有要從高速緩存提取指令的數(shù)據(jù)內存以 及與該數(shù)據(jù)內存相關的標記內存。如果該指令存在于所預測數(shù)據(jù)內存
中,則提取該指令,并且更新通路預測器和策略計數(shù)器,以反映出現(xiàn) 高速緩存命中。如果該指令不在所預測數(shù)據(jù)內存中,則通路預測器禁 能數(shù)據(jù)內存及其相關標記內存,并且在第二處理周期中使能所有剩余 數(shù)據(jù)內存和它們相關標記內存。如果確定該指令在在第二處理周期期 間使能的一個數(shù)據(jù)內存中,則提取該指令,并且更新通路預測器和策 略計數(shù)器,以表示出現(xiàn)高速緩存命中和存儲該指令的數(shù)據(jù)內存(通 路)。如果該指令沒有在任一個數(shù)據(jù)內存中,則通路預測器生成高速 緩存未中信號,并且更新策略計數(shù)器,以表示出現(xiàn)高速緩存未中。
當通路預測器在第二省電模式下運行時,通路預測器在第一處理 周期內使能與高速緩存的數(shù)據(jù)內存相關的所有標記內存。如果確定該 指令存在于一個數(shù)據(jù)內存中,則在第二處理周期中禁能標記內存和使 能包含該指令的數(shù)據(jù)內存。然后,提取該指令,并且更新通路預測器 和策略計數(shù)器,以表示出現(xiàn)高速緩存命中。如果確定該指令沒有在任 一個數(shù)據(jù)內存中,則通路預測器生成高速緩存未中信號,并且更新策 略計數(shù)器,以反映出現(xiàn)高速緩存未中。
在本發(fā)明的一個實施例中,策略計數(shù)器包括寄存器,被配置為存 儲計數(shù)值?;诟咚倬彺婷泻透咚倬彺嫖粗?,在第一值和第二值之
間增加和減少該計數(shù)值。首先將計數(shù)值設置為第一值(例如,0),
并且策略計數(shù)器向通路預測器提供第一策略信號,以使得通路預測器 在第一省電模式下運行。在選擇數(shù)目的高速緩存未中(例如,計數(shù)值
增加至3)之后,策略計數(shù)器向通路預測器提供第二策略信號,以使 得通路預測器在第二省電模式下運行。如果由于多次高速緩存命中使 得計數(shù)值隨后減少到第 一值,則策略計數(shù)器向通路預測器再次提供第 一策略信號,并且通路預測器在第一省電模式下運行。
在本發(fā)明的一個實施例中,處理器內核包括高速緩存再填充電 路,其使用至少最近填充方案在高速緩存未中之后再填充高速緩存。 所述高速緩存再填充電路通過以下方式運行,即選擇多通路組相關高 速緩存的通路并且將(與該通路的所選數(shù)據(jù)內存域相關的)層號與通 路-組-層號相比較。如果所述層號不等于所述通路-組-層號,則高速緩
存再填充電路從存儲器向所選域寫入數(shù)據(jù)塊。如果所述層號等于所述 通路-組-層號,則高速緩存再填充電路切換到另一個(例如,下一個 更高或下一個更低)通路,并重復上述步驟。如果所述層號再次等于 所述通路-組-層號,則對于多通路組相關高速緩存的其它通路重復所 述步驟,直到向所述多通路組相關高速緩存寫入存儲塊。所迷高速緩 存再填充電路增加寫入存儲塊的所選域的層號。
在一個實施例中,將與數(shù)據(jù)內存的域相關的層號存儲在與數(shù)據(jù)內 存分開的通路內存數(shù)據(jù)結構中。數(shù)據(jù)內存僅在高速緩存再填充期間被 訪問,并且在高速緩存再填充之間被禁能,以減少功耗。
在本發(fā)明的 一個實施例中,將通路預測器的功能擴展為預測要提 取的指令是否駐留在除了多通路組相關高速緩存之外的存儲器中,例
如暫存器(scratchpad)或填充緩沖器。
在一個實施例中,通過控制向處理器內核的組件(例如,標記內 存、數(shù)據(jù)內存和/或暫存器)提供的時鐘信號對所述組件禁能,以減少 功耗。通過將輸入時鐘信號保持在恒定高值或恒定低值,掛起所述組 件中的狀態(tài)寄存器以防止鎖住新值,并且將狀態(tài)寄存器之間的邏輯塊 放于穩(wěn)定狀態(tài)下。 一旦所述組件處于穩(wěn)定狀態(tài),掛起在狀態(tài)寄存器和 邏輯塊中的晶體管,以防止改變狀態(tài),因此不消耗用以轉換狀態(tài)所需 的功率。在一個實施例中,當禁能組件以減少功耗時,向所述組件施 加偏置電壓,以進一步減少由于泄露帶來的功耗。
以下,參照附圖詳細描述本發(fā)明的其它實施例、特征和優(yōu)點以及 本發(fā)明的各個實施例的結構和操作。
在這里結合的并形成說明書一部分的附圖和說明書一起示出本 發(fā)明,并且進一步用于說明本發(fā)明的原理,并使得本領域普通技術人 員能夠實施和使用本發(fā)明。
圖l是根據(jù)本發(fā)明實施例的處理器內核的示圖,
圖2是根據(jù)本發(fā)明實施例的標記內存和數(shù)據(jù)內存的示圖。圖3是根據(jù)本發(fā)明實施例的預測器和策略計數(shù)器的示圖。 圖4A和圖4B描述用以示出本發(fā)明的第一方法的步驟的流程圖。 圖5是示出本發(fā)明的第二方法的步驟的流程圖。 參照附圖描述本發(fā)明。典型地,通過對應標號中的最左端數(shù)字表 示元件首先出現(xiàn)的附圖。
具體實施例方式
本發(fā)明提供了一種具有省電指令高速緩存通路預測器和指令代 替方案的微處理器。在隨后的本發(fā)明的具體實施方式
中,提及的"一 個實施例"、"實施例"、"示例性實施例"等指得是所描述的實施例可 包括特定特點、結構或特征,但是每一個實施例不一定包括該特定特 點、結構或特征。此外,這種短語不一定指得是同一實施例。此外, 當結合實施例描述特定特點、結構或特征時,可以理解,本領域普通 技術人員可以獲知可通過結合被明確描述或沒有被明確描述的其它 實施例來實現(xiàn)這種特點、結構或特征。
圖1是根據(jù)本發(fā)明實施例的處理器內核100的示圖。如圖l所示, 處理器內核100包括執(zhí)行單元102、提取單元104、浮點單元106、 加載/存儲單元108、存儲器管理單元(MMU) 110、指令高速緩存 (cache) 112、數(shù)據(jù)高速緩存114、總線接口單元116、電力管理單元 118、乘/除單元(MDU) 120和協(xié)處理器122。盡管這里描述的處理 器內核100包括幾個單獨的組件,但是這些組件中的多數(shù)是可以不存 在于本發(fā)明的每一個實施例中的可選組件,或例如是可以組合的組 件,從而兩個組件的功能駐留在一個組件中。因此,圖l中所示的各 個組件是示例性的,并且不限制本發(fā)明。
執(zhí)行單元102優(yōu)選地實現(xiàn)具有單循環(huán)算術邏輯單元運算(例如, 邏輯、移位、加、減等)的加栽-存儲(RISC)結構。在一個實施例 中,執(zhí)行單元102包括用于標量整數(shù)運算(scalar integer operation ) 和地址計算的32位通用寄存器(未示出)??蛇x地,可包括一個或 多個附加寄存器文件組,以例如在中斷和/或異常處理期間最小化內容
切換開銷。執(zhí)行單元102與提取單元104、浮點單元106、加栽/存儲 單元108、乘-除單元120和協(xié)處理器122對接。
提取單元104負責向執(zhí)行單元102提供指令。在一個實施例中, 提取單元104包括用于指令高速緩存112的控制邏輯、用于記錄壓 縮格式指令的記錄器、動態(tài)分支預測器、從執(zhí)行單元102斷開提取單 元104的操作的指令緩沖器、與暫存器(未示出)的接口 。提取單元 104與執(zhí)行單元102、存儲器管理單元110、指令高速緩存112和總線 接口單元116對接。
如這里所使用的,暫存器是提供被映射到指令地址空間的一個或 多個指定區(qū)域的指令的存儲器。暫存器的一個或多個指定地址區(qū)域可 以預先配置,或在微處理器運行時編程配置。地址區(qū)域是例如可通過 基地址和區(qū)域大小指定的地址的連續(xù)范圍。當使用基地址和區(qū)域大小 時,基地址指定地址區(qū)域的開始,例如將區(qū)域大小增加到基地址以指 定地址區(qū)域的結束。 一旦為暫存器指定地址區(qū)域,則可以從暫存器檢
索與指定的地址區(qū)域對應的所有指令。
浮點單元106與執(zhí)行單元102對接,并且對非整數(shù)數(shù)據(jù)進行運算。 由于許多應用不需要浮點單元的功能,所以處理器內核100的這個組 件可以不存在于本發(fā)明的實施例中。
加載/存儲單元108負責數(shù)據(jù)加栽和存儲,并且包括數(shù)據(jù)高速緩 存控制邏輯。加載/存儲單元108與數(shù)據(jù)高速緩存114和其它存儲器(例 如,暫存器和/或填充緩沖器)對接。加載/存儲單元108還與存儲器 管理單元IIO和總線接口單元116對接。
存儲器管理單元110將虛擬地址轉換成用于存儲器訪問的物理 地址。在一個實施例中,存儲器管理單元110包括旁路轉換緩沖器 (TLB),并且可包括分離指令TLB和分離數(shù)據(jù)TLB。存儲器管理 單元110與提取單元104和加載/存儲單元108對接。
指令高速緩存112是組織成多通路組相關高速緩存(例如,2通 路組相關高速緩存、4通路組相關高速緩存、8通路組相關高速緩存 等)的片上存儲器陣列。優(yōu)選地,對指令高速緩存112進行虛擬索引
處理和物理標記處理,從而能夠與高速緩存訪問并行地發(fā)生虛擬至物 理的地址轉換。在一個實施例中,除了物理地址位之外,標記包括有 效位和可選的校驗位。如下文更詳細所述,本發(fā)明的特點在于,指令
高速緩存112的組件可選擇性使能和禁能,以減少處理器內核100消 耗的總功率。指令高速緩存112與提取單元104對接。
數(shù)據(jù)高速緩存114也是片上存儲器陣列。優(yōu)選地,對數(shù)據(jù)高速緩 存114進行虛擬索引處理和物理標記處理。在一個實施例中,除了物 理地址位之外,標記包括有效位和可選的校驗位。數(shù)據(jù)高速緩存114 與加載/存儲單元108對接。
總線接口單元116控制用于處理器內核100的外部接口信號。在 一個實施例中,總線接口單元116包括破壞(collapse)寫入緩沖器, 其用于合并完全寫入事務和聚集從未高速緩沖的存儲設備的寫入操 作。
電力管理單元118提供多個電力管理特征,包括,電力不足設計 特征、有源電力管理特征和運行的省電模式。在一個實施例中,處理 器內核100實施等待指令,該指令向應該停止執(zhí)行和/或計時的處理器 內核100的選擇組件進行信號傳輸,從而減少在閑置期間的功耗。除 了省電特征之外,在這里參照例如圖3-5描述這些電力管理特征。
乘/除單元120對處理器內核100執(zhí)行乘法和除法運算。在一個 實施例中,優(yōu)選地,乘/除單元120包括流水線乘法器、結果和累積寄 存器和乘法除法狀態(tài)機,以及執(zhí)行例如乘法、乘加和除法功能所需的 所有控制邏輯。如圖1所示,乘/除單元120與執(zhí)行單元102對接。
協(xié)處理器122執(zhí)行用于處理器內核100的各種開銷功能。在一個 實施例中,協(xié)處理器122負責虛擬到物理地址轉換、實施高速緩存協(xié) 議、異常處理、運行模式選擇和使能/禁能中斷功能。協(xié)處理器l22 與執(zhí)行單元102對接。
圖2是構成4通路組相關高速緩存的4個標記內存(tagram )202 和4個數(shù)據(jù)內存(dataram ) 204的示圖。該高速緩存結構代表用于指 令高速緩存112的一個實施例。
如圖2所示,每一個標記內存202包括用以存儲物理地址位或標 記的多個域214。每一個標記具有相關有效位212。例如校驗位的附 加位(未示出)也可以與每一個標記相關。
每一個數(shù)據(jù)內存204包括用以存儲數(shù)據(jù)/指令塊的多個域218。如 圖2所示,每一個數(shù)據(jù)塊具有相關層號216。如下文參照圖5更詳細 描述,層號216用于確定在高速緩存中在高速緩存未中之后存儲新數(shù) 據(jù)塊的位置。在一個實施例中,層號216存儲在數(shù)據(jù)結構208中,在 這里稱為通路內存(wayram)。通路內存208可以是與數(shù)據(jù)內存204 分開的數(shù)據(jù)結構,其僅在高速緩存重新填充/高速緩存寫入期間使能。
使用地址206訪問在標記內存202a-d和數(shù)據(jù)內存204a-d中存儲 的信息。地址206包括標記222、索引224和偏移226。特定索引224 唯一地指向每一個標記內存202的所選域214和每一個數(shù)據(jù)內存204 的所選域218。為了確定特定指令是否存儲在指令高速緩存的通路(例 如,數(shù)據(jù)內存204)中,以對于本說明書給出的相關領域技術人員清 楚的方式將地址206的標記222與標記內存202中存儲的標記相比較。
圖2中的數(shù)據(jù)結構210存儲通路-組-層號220。如下文參照圖5 更詳細描述,通路-組-層號220與層號216 —起用于確定在高速緩存 中在高速緩存未中之后存儲新數(shù)據(jù)塊的位置。盡管在圖2中層號216 和通路-組-層號220示出為單位值,但是可以理解,在不脫離本發(fā)明 范圍的情況下,它們可以是多位值。
圖3是根據(jù)本發(fā)明實施例的通路預測器(預測器)302和策略計 數(shù)器304。預測器302預測要提取的指令的存儲位置,并且向策略計 數(shù)器304提供高速緩存命中和未中數(shù)據(jù)。在一個實施例中,預測器302 通常預測要提取的下一個指令位于從中提取最后指令的通路中。其它 實施例使用更復雜的預測方案。策略計數(shù)器304包括存儲器元件,例 如保存高速緩存命中和未中記錄的寄存器?;谟深A測器302提供的 高速緩存命中和未中數(shù)據(jù),策略計數(shù)器304向預測器302提供策略信 號,以確定預測器302的運行模式。
預測器302與多個標記/數(shù)據(jù)內存306和標記比較電路308對接。
標記/數(shù)據(jù)內存306a-d代表多路(例如,4路)組相關高速緩存。預 測器302還選擇性地與一個或多個其它存儲器元件306e (例如,暫存 器或填充緩沖器)和它們的相關標記比較電路308e對接。
在本發(fā)明的一個實施例中,策略計數(shù)器304向預測器302提供策 略信號,以確定預測器302在第一省電模式還是在第二省電模式下運 行。在本發(fā)明的某些實施例中,預測器302以多于兩個省電模式運行。 在每一個運行模式下,使能和/或禁能的組件數(shù)目改變,從而改變由處 理器消耗的電力。
當預測器302在第一省電模式下運行時,預測器302在一個處理 周期內使能被預測具有要提取指令的數(shù)據(jù)內存以及與該數(shù)據(jù)內存相 關的標記內存。如果該指令存在于所預測數(shù)據(jù)內存中,則提取該指令, 并且更新預測器302和策略計數(shù)器304,以表示出現(xiàn)高速緩存命中。 如圖3所示,關于數(shù)據(jù)內存是否包含指令的反饋來自標記比較電路 308。如果該指令不在所預測數(shù)據(jù)內存中,則預測器302禁能數(shù)據(jù)內 存及其相關標記內存,并且在第二處理周期中使能所有剩余數(shù)據(jù)內存 和它們的相關標記內存。如果確定該指令是在第二處理周期期間使能 的數(shù)據(jù)內存之一,則提取該指令,并且更新預測器302和策略計數(shù)器 304,以反映出現(xiàn)高速緩存命中和存儲該指令的數(shù)據(jù)內存。如果該指 令沒有在任一個數(shù)據(jù)內存中,則由預測器302生成高速緩存未中信號, 并且更新策略計數(shù)器304,以反映出現(xiàn)高速緩存未中。在一個實施例 中,與剩余數(shù)據(jù)內存并行地檢查暫存器、填充緩沖器或其它存儲器。
當預測器302在第二省電模式下運行時,預測器302在第一處理 周期內使能與高速緩存的數(shù)據(jù)內存相關的所有標記內存。這個運行模 式增加了由處理器消耗的電力,但是這個模式使得處理器比第一省電 模式更快地處理高速緩存未中。如果(例如,使用標記比較電路308) 確定要提取的指令存在于一個數(shù)據(jù)內存中,則在第二處理周期中禁能 標記內存和使能包含該指令的數(shù)據(jù)內存。然后,提取該指令,并且更 新預測器302和策略計數(shù)器304。如果確定該指令沒有在任一個數(shù)據(jù) 內存中,則由預測器302生成高速緩存未中信號,并且更新策略計數(shù)
器304,以反映出現(xiàn)高速緩存未中。在一個實施例中,與剩余數(shù)據(jù)內 存并行地檢查暫存器、填充緩沖器或其它存儲器。
在本發(fā)明的一個實施例中,策略計數(shù)器304包括寄存器(未示 出),被配置為存儲計數(shù)值。基于高速緩存命中和高速緩存未中,在 第一值和第二值(例如0和3)之間增加和減少該計數(shù)值。如圖3所 示,由預測器302向策略計數(shù)器304提供命中和未中數(shù)據(jù)。在操作中, 首先將計數(shù)值設置為第一值(例如,0),并且策略計數(shù)器304向預 測器302提供第一策略信號,以使得預測器302在第一省電模式下運 行。對于每一次高速援存未中,計數(shù)值增加。對于每一次高速緩存命 中,計數(shù)值減少。在選擇數(shù)目的高速緩存未中之后(例如,計數(shù)值增 加至3),策略計數(shù)器304向預測器302提供第二策略信號,以在第 二省電模式下運行。如果計數(shù)值隨后減少到第一值(例如,0),則 策略計數(shù)器304向預測器302再次提供第 一策略信號,并且預測器302 在第一省電模式下運行。
圖4A和4B描述了用以示出方法400的步驟的流程圖。方法400 用于根據(jù)本發(fā)明實施例從高速緩存檢索指令。盡管可以根據(jù)本發(fā)明使 用處理器內核(例如處理器內核100)實施方法400,但是本發(fā)明不 限于通過處理器內核100實施。方法400開始于步驟401。
在步驟401,接收從多通路組相關高速緩存提取的指令的地址。 例如,通過將該地址加栽到處理器的程序計數(shù)器來接收該地址。
在步驟402,確定處理器的預測器是否在如模式0的步驟402中 指示的特定模式下運行。如果預測器在模式O下運行(例如,上述笫 一省電模式),則控制轉移到步驟404。如果預測器沒有在模式O下 運行,則控制轉移到步驟418。
在步驟404,使能包含要提取指令的由預測器預測的數(shù)據(jù)內存。 還使能與該數(shù)據(jù)內存相關的標記內存。在本發(fā)明的一個實施例中,預 測器預測包含最后提取指令的數(shù)據(jù)內存也將包含要提取的下一個指 令。
在步驟406,在使能的標記內存中將要提取的指令地址的標記部
分與所選標記相比較。所選標記是由步驟401中接收的地址的索引部 分所指向的標記。如果地址的標記部分與使能的標記內存中存儲的所 選標記匹配,并且假設在標記內存中的所選標記有效,則控制從步驟 406轉移到408。如果地址的標記部分與使能的標記內存中存儲的所 選標記不匹配,則控制從步驟406轉移到412。
在步驟408,從數(shù)據(jù)內存讀取要提取的指令。控制從步驟408轉 移到步驟410。
在步驟410,根據(jù)是否出現(xiàn)高速緩存命中或高速緩存未中,以及 由預測器作出的關于哪個數(shù)據(jù)內存包括該指令的預測是否正確,更新 處理器的預測器和處理器的策略計數(shù)器。策略計數(shù)器向預測器提供策 略信號,以基于高速緩存命中和高速緩存未中信息確定預測器是在模 式O下還是在其它模式(例如,上述第二省電模式)下運行??刂茝?步驟410回轉到步驟401。
在步驟412,禁能在步驟406中被使能的標記內存和數(shù)據(jù)內存, 并且使能高速緩存的剩余標記內存和數(shù)據(jù)內存。如在此所述,可根據(jù) 本發(fā)明通過控制組件的輸入時鐘信號禁能例如標記內存和數(shù)據(jù)內存 的處理器組件,以減少功耗??刂茝牟襟E412轉移到步驟414。
在步驟414,確定要提取的指令是否存儲在其中一個使能的數(shù)據(jù) 內存中。如果指令存儲在其中一個數(shù)據(jù)內存中,則控制轉移到步驟 408,即從數(shù)據(jù)內存讀取指令。如果指令沒有存儲在其中一個數(shù)據(jù)內 存中,則發(fā)生高速緩存未中,并且控制轉移到步驟416。
在步驟416,將數(shù)據(jù)的新存儲塊加栽到包含要提取指令的高速緩 存中。在一個實施例中,根據(jù)下述的方法500,將數(shù)據(jù)塊加栽到高速 緩存中??刂茝牟襟E416轉移到步驟408。
在步驟418,使能高速緩存的所有標記內存。這使得處理器例如 在一個處理周期中確定要提取的指令是否駐留在高速緩存的其中一 個數(shù)據(jù)內存中。控制從步驟418轉移到步驟420。
在步驟420,確定要提取的指令是否駐留在其中一個數(shù)據(jù)內存 中。如果指令存儲在其中一個數(shù)據(jù)內存中,則控制轉移到步驟422。
如果指令沒有存儲在其中 一個數(shù)據(jù)內存中,則控制轉移到步驟428。 在步驟422,禁能標記內存,并且使能包含指令的數(shù)據(jù)內存,以
允許提取指令??刂茝牟襟E422轉移到步驟424。
在步驟424,從數(shù)據(jù)內存讀取要提取的指令??刂茝牟襟E424轉
移到步驟426。
在步驟426,根據(jù)是否出現(xiàn)高速緩存命中或高速緩存未中更新處 理器的預測器和處理器的策略計數(shù)器??刂茝牟襟E426轉移到步驟 401。
在步驟428,將數(shù)據(jù)的新存儲塊加栽到包含要提取指令的高速緩 存中。在一個實施例中,根據(jù)下述的方法500,將數(shù)據(jù)塊加栽到高速 緩存中??刂茝牟襟E428轉移到步驟424,從而可提取指令。
如本領域普通技術人員將理解的,方法400的步驟可以改變,例 如改變特定步驟中使能和/或禁能的標記內存和數(shù)據(jù)內存的數(shù)目,以適 應不同的控制方案。某些步驟的順序也可以改變。這些改變保持在本 發(fā)明的范圍內。此外,如圖3所示,也可以使能和/或禁能除了高速緩 存的標記內存和數(shù)據(jù)內存之外的存儲器,例如暫存器、填充緩沖器等。
圖5是示出本發(fā)明的方法500的步驟的流程圖。在較高程度上, 方法500可被認為是至少最近填充的高速緩存再填充方案。更具體地, 在高速緩存未中之后,使用方法500將數(shù)據(jù)存儲塊加載到4通路組相 關高速緩存。然而,如這里給出描述的對本領域普通技術人員清楚的 是,方法500可適用于通過其它多通路組相關高速緩存(例如,2通 路組相關高速緩存、8通路組相關高速緩存等)來使用。如方法400, 例如可根據(jù)本發(fā)明使用處理器內核(例如處理器內核100)實施方法 500,但是不限于通過處理器內核100實施。
方法500開始于步驟502。在步驟502,方法等待發(fā)生高速緩存 未中。當檢測到高速緩存未中時,控制轉移到步驟504。
在步驟504,讀取與高速緩存未中相關的路組的層號。如在此所 用的,術語"路組,,表示可對存儲器的特定塊存儲的多通路組相關高速 緩存的數(shù)據(jù)內存的域。路組層號是用于控制利用數(shù)據(jù)新塊再填充高速
緩存的值。
在步驟506,將在步驟504中讀取的通路-組-層號與高速緩存的 路-O的層號相比較。如果路-0的層號與通路-組-層號不同,則控制轉 移到步驟508。如果該層號與通路-組-層號沒有不同,則控制轉移到 步驟512。
在步驟508,將數(shù)據(jù)的新存儲塊寫入高速緩存的路-0中。然后, 控制轉移到步驟510。
在步驟510,對于寫入數(shù)據(jù)的存儲塊的通路的層號增加??刂茝?步驟510返回到步驟502。
在步驟512,將在步驟504中讀取的通路-組-層號與高速緩存的 路-1的層號相比較。如果路-1的層號與通路-組-層號不同,則控制轉 移到步驟514。如果該層號與通路-組-層號沒有不同,則控制轉移到 步驟516。
在步驟514,將數(shù)據(jù)的新存儲塊寫入高速緩存的路-1中。然后, 控制轉移到步驟510。
在步驟516,將在步驟504中讀取的通路-組-層號與高速緩存的 路-2的層號相比較。如果路-2的層號與通路-組-層號不同,則控制轉 移到步驟518。如果該層號與通路-組-層號沒有不同,則控制轉移到 步驟522。
在步驟518,將數(shù)據(jù)的新存儲塊寫入高速緩存的路-2中。然后, 控制轉移到步驟510。
在步驟522,將數(shù)據(jù)的新存儲塊寫入高速緩存的路-3中。然后, 控制轉移到步驟524。
在步驟524,對于路-3的層號增加。然后,控制從步驟524轉移 到526。
在步驟526,對于該路組的層號增加??刂茝牟襟E526返回到步 驟502。
在本發(fā)明的一個實施例中,方法500可以進行如下修改。首先, 將通路-組-層號修改為固定值(例如,1),而不是可變值。這使得可
繞過或消除步驟504。在處理器的開始,將高速緩存的所有層號設置 成不同于該固定值的值(例如,0)。接下來,將步驟510修改為, 在將數(shù)據(jù)塊寫入通路之后,將該通路的層號修改為固定值(例如,1)。 最后,步驟524和526用將通路的適當層號重設為不同于該固定值的 值(例如,0)的新步驟代替,從而將下一個高速緩存充填寫入路-0 (因為當執(zhí)行步驟506時,對于路-0的層號與固定的通路-組-層號不 同)。
基于本說明書,本領域技術人員可以理解,由于不需要跟蹤在高 速緩存中數(shù)據(jù)塊使用的頻度,所以方法500及其修改消除了與傳統(tǒng)的 最近很少使用的高速緩存再填充方案相關的大部分開銷。此外,方法 500的再填充方案提高了本發(fā)明的預測器的精度(例如,當設置預測 器以預測下一個指令將來自與最后指令相同的通路時)。這是由于本 發(fā)明的高速緩存再填充方案改善了高速緩存線路項目之間的順序,并 且提供了無序項目段的收斂。
盡管上文描述了本發(fā)明的各個實施例,但是應該理解,它們通過 實例呈現(xiàn),而沒有限制。對于相關計算機領域的普通技術人員清楚的 是,可以在不脫離本發(fā)明的精神和范圍的情況下在其中進行形式和細 節(jié)上的各種改變。此外,應該理解,這里提供的本發(fā)明的具體實施方 式部分,并非發(fā)明內容和摘要部分,旨在用于解釋權利要求。發(fā)明內 容和摘要部分可闡述由發(fā)明人預期的一個或多個但并非所有本發(fā)明 示例性實施例。
例如,除了使用(例如,在中央處理單元("CPU")、微處理器、 微控制器、數(shù)字信號處理器、處理器內核、片上系統(tǒng)("SOC")或任 意其它可編程或電子器件中或與其耦接的)硬件實現(xiàn)之外,也可以使 用在例如計算機可用(例如,可讀)介質中配置的軟件(例如,計算 機可讀代碼、程序代碼、以任意形式配置的指令和/或數(shù)據(jù),例如,源 語言、目標語言或機器語言)來實現(xiàn),其中所述計算機可用介質配置 為存儲軟件。這種軟件能夠實現(xiàn)例如這里所述的裝置和方法的功能、 制造、模型、模擬、描述和/或檢測。例如,這可通過使用通用編程語
言(例如,C、 C++) 、 GDSII數(shù)據(jù)庫、包括VerilogHDL、 VHDL、 SystemC寄存器傳輸級(RTL )等的硬件描述語言(HDL )、或其它 可用程序、數(shù)據(jù)庫和/或電路(即,示意性)捕獲工具來實現(xiàn)。這種軟 件可配置在包括半導體、磁盤、光盤(例如,CD-ROM、 DVD-ROM 等)的任意已知計算機可用介質中,以及可作為在計算機可用(例如, 可讀)傳輸介質中實現(xiàn)的計算機數(shù)據(jù)信號(例如,載波或包括基于數(shù) 字介質、光學介質或模擬介質的任意其它介質)。這樣,可以在包括 互聯(lián)網和企業(yè)網的通信網絡上發(fā)送該軟件。
應該理解,這里描述的裝置和方法實施例可包括在半導體知識產 權核中,例如(例如,以HDL實現(xiàn)的)微處理器內核,以及可轉換 成在集成電路產品中的硬件。此外,這里描述的裝置和方法實施例可 以作為硬件和軟件的組合實現(xiàn)。因此,本發(fā)明不應限于任一個上述示 例性實施例,但是應該僅根據(jù)所附權利要求及其等同物所限定。
權利要求
1.一種處理器,包括多路高速緩存;耦接至所述多路高速緩存的預測器,用于預測所述多路高速緩存的哪個通路包含要提取的指令;和耦接至所述預測器的策略計數(shù)器;其中響應于由所述策略計數(shù)器向所述預測器提供的策略信號,所述預測器在多個省電模式中的一個省電模式下運行。
2. 權利要求l所述的處理器,其中當所述預測器在第一省電模 式下運行時,所述預測器在第一個處理周期期間使能與所述預測器預 測的包含要提取的指令的多路高速緩存的通路相關的標記內存。
3. 權利要求2所述的處理器,其中所述預測器在第一個處理周 期期間使能與所述多路高速緩存的通路相關的數(shù)據(jù)內存。
4. 權利要求3所述的處理器,其中在所述預測器預測失準之后, 所述預測器禁能所述標記內存和數(shù)據(jù)內存,并且在第二處理器周期期 間使能與所述多路高速緩存的第二通路相關的第二標記內存。
5. 權利要求2所述的處理器,其中當所述預測器在第二省電模 式下運行時,所述預測器在第一個處理周期期間使能與所述多路高速 緩存相關的所有標記內存。
6. 權利要求l所述的處理器,其中所述策略計數(shù)器包括寄存 器,被配置為存儲在第一值和第二值之間基于高速緩存命中增加并且 基于高速緩存未中減少的值。
7. 權利要求l所述的處理器,還包括耦接至所述多路高速緩存的高速緩存再填充電路,將與所述多路 高速緩存的通路的所選擇域相關的層號與通路-組-層號相比較,并且 如果所述層號不等于所述通路-組-層號,所述高速緩存再填充電路從 存儲器向所選擇域寫入數(shù)據(jù)塊。
8. 權利要求7所述的處理器,其中所述高速緩存再填充電路增加與寫入數(shù)據(jù)塊的所選擇域相關的層號。
9. 一種處理器的控制電路,包括耦接至多路高速緩存的預測器子電路,用于預測所述多路高速緩 存的哪個通路包含要提取的指令;和耦接至所述預測子電路的策略計數(shù)器子電路;其中響應于由所述策略計數(shù)器子電路向所述預測器子電路提供 的策略信號,所述預測器子電路在多個省電模式中的一個省電模式下 運行。
10. 權利要求9所述的控制電路,其中當所述預測器子電路在 第一省電模式下運行時,所述預測器子電路在笫一個處理周期期間使 能與所述預測器子電路預測的包含要提取的指令的多路高速緩存的 通路相關的標記內存。
11. 權利要求10所述的控制電路,其中所述預測器子電路在 笫一個處理周期期間使能與所述多路高速緩存的通路相關的數(shù)據(jù)內 存。
12. 權利要求ll所述的控制電路,其中在所述預測器子電路 預測失準之后,所述預測器子電路禁能所述標記內存和數(shù)據(jù)內存,并 且在第二處理器周期期間使能與所述多路高速緩存的第二通路相關 的第二標記內存。
13. 權利要求10所述的控制電路,其中當所述預測器子電路 在第二省電模式下運行時,所迷預測器子電路在第 一個處理周期期間 使能與所述多路高速緩存相關的所有標記內存。
14. 權利要求9所迷的控制電路,其中所述策略計數(shù)器子電路 包括寄存器,被配置為存儲在第一值和第二值之間基于高速緩存命 中增加并且基于高速緩存未中減少的值。
15. —種計算機可讀存儲介質,包括以軟件實現(xiàn)的處理器,該 處理器包括多路高速緩存;耦接至所述多路高速緩存的預測器,用于預測所述多路高速緩存 的哪個通路包含要提取的指令;和 耦接至所述預測器的策略計數(shù)器;其中響應于由所述策略計數(shù)器向所述預測器提供的策略信號,所 述預測器在多個省電模式中的一個省電模式下運行。
16. 權利要求15所述的計算機可讀存儲介質,其中當所述預 測器在第一省電模式下運行時,所述預測器在第一個處理周期期間使 能與所述預測器預測的包含要提取的指令的多路高速緩存的通路相 關的才示i己內存。
17. 權利要求16所述的計算機可讀存儲介質,其中所述預測 器在第一個處理周期期間使能與所迷多路高速緩存的通路相關的數(shù) 據(jù)內存。
18. 權利要求17所述的計算機可讀存儲介質,其中在所述預 測器預測失準之后,所述預測器禁能所述標記內存和數(shù)據(jù)內存,并且 在第二處理器周期期間使能與所述多路高速緩存的第二通路相關的 笫二標記內存。
19. 權利要求16所述的計算機可讀存儲介質,其中當所述預 測器在第二省電模式下運行時,所述預測器在第一個處理周期期間使 能與所述多路高速緩存相關的所有標記內存。
20. 權利要求15所述的計算機可讀存儲介質,其中所述策略 計數(shù)器包括寄存器,被配置為存儲在第一值和第二值之間基于高速 緩存命中增加并且基于高速緩存未中減少的值。
21. 權利要求15所述的計算機可讀存儲介質,其中所述計算 機可讀程序代碼是硬件描述語言代碼。
22. 權利要求15所述的計算機可讀存儲介質,其中所述計算 機可讀程序代碼是Verilog硬件描述語言代碼、VHDL硬件描迷語言 代碼和SystemC ^!件描述語言代碼之一。
23. —種在高速緩存未中之后向處理器的多路高速緩存寫入 數(shù)據(jù)的方法,其中所述多路高速緩存包括多個數(shù)據(jù)內存,每一個數(shù)據(jù) 內存包括用于存儲數(shù)據(jù)的多個域,并且每一個域具有相關的層號,該 方法包括(1) 將與所述多路高速緩存的通路的所選域相關的層號與通路 -組-層號相比較;(2) 如果所述層號不等于所述通路-組-層號,則向所選域寫入數(shù) 據(jù)塊;和(3) 增加寫入數(shù)據(jù)塊的所選域的層號。
24. 權利要求23所述的方法,還包括(4) 如果所述層號等于所述通路-組-層號,將與所述多路高速緩 存的第二通路的第二所選域相關的第二層號與所述通路-組-層號相比 較;和(5) 如果所述第二層號不等于所述通路-組-層號,則向所述第二 所選域寫入數(shù)據(jù)塊。
25. —種從處理器的多路高速緩存提取指令的方法,包括(1) 預測所述多路高速緩存的哪個通路包含要提取的指令;(2) 如果所述處理器在第一省電模式下運行,則使能與預測的包舍所述指令的多路高速緩存的通路相關的標記內存;(3) 如果在所述標記內存中存儲的標記與所述指令的物理地址匹配,則提取所述指令;和(4) 更新用以控制所述處理器是在所述第一省電模式下還是在第二省電模式下運行的策略計數(shù)器值。
26. 權利要求25所述的方法,還包括(5) 如果在所述標記內存中存儲的標記與所述指令的物理地址 不匹配,則禁能所述標記內存;(6) 使能與所述多路高速緩存的第二通路相關的第二標記內 存5和(7) 如果在所述第二標記內存中存儲的第二標記與所述指令的 物理地址匹配,則提取所述指令。
27. 權利要求25所述的方法,還包括(5)如果所述處理器在所述第二省電模式下運行,則使能與所述多路高速緩存相關的所有標記內存。
28. 權利要求25所述的方法,其中步驟U)包括(i) 在高速緩存命中時增加所述策略計數(shù)器值;和(ii) 在高速緩存未中時減少所述策略計數(shù)器值。
全文摘要
公開一種具有省電指令高速緩存通路預測器和指令代替方案的微處理器。在一個實施例中,處理器包括多通路組高速緩存、通路預測器、策略計數(shù)器和高速緩存再填充電路。策略計數(shù)器向通路預測器提供信號,以確定通路預測器是在第一模式還是在第二模式下運行。在高速緩存未中之后,高速緩存再填充電路選擇高速緩存的通路,并且將與該通路的數(shù)據(jù)內存域相關的層號與通路-組-層號相比較。如果所述層號與所述通路-組-層號不匹配,則高速緩存再填充電路向所述域寫入數(shù)據(jù)塊。如果所述層號等于所述通路-組-層號,則高速緩存再填充電路為其它通路重復上述步驟,直到將存儲塊寫入高速緩存。
文檔編號G06F12/12GK101375228SQ200680050617
公開日2009年2月25日 申請日期2006年11月15日 優(yōu)先權日2005年11月15日
發(fā)明者M·科諾斯 申請人:Mips技術公司