亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種用組預測來降低在組相關(guān)高速緩存器中的執(zhí)行時間的方法及設備的制作方法

文檔序號:6417518閱讀:219來源:國知局
專利名稱:一種用組預測來降低在組相關(guān)高速緩存器中的執(zhí)行時間的方法及設備的制作方法
技術(shù)領域
本發(fā)明涉及計算機存儲器系統(tǒng);特別是一種降低在組相關(guān)高速緩存器中的訪問執(zhí)行時間的方法及設備。
2.相關(guān)領域介紹高速緩存器通常為體積小,位于中央處理單元(CPU)及主存儲器之間的高速緩沖器。高速緩存器用于臨時保持那些認為正在使用的主存儲器的內(nèi)容。關(guān)于何時替換高速緩存器的內(nèi)容的判定一般建立在至少最近被使用的(LRU)算法基礎上。LRU算法導致高速緩存器存儲器單元被替換為最近被使用的主存儲器的內(nèi)容。高速緩存器存儲器中的信息比主存儲器中的信息能在相當少的時間內(nèi)被訪問。這樣,CPU浪費較少的時間等候高速緩存器中被讀取和/或者儲存的指令和/或者操作數(shù)。
直接映象高速緩存器將主存儲器中的任何特別的單元的內(nèi)容的存儲限定在高速緩存器的特定的單元。相反,M-分路(M-way)組相關(guān)高速緩存器將每個主存儲器單元的內(nèi)容映象到高速緩存器中的任何M單元?;旧?,M-分路組相關(guān)高速緩存器是相同的直接映象的高速緩存器M的組合。然而,訪問及從M-分路組相關(guān)高速緩存器中檢索則更為復雜。在每個存儲器訪問M-分路組相關(guān)高速緩存器的過程中,相同的直接映象的高速緩存器M的每個組合必須被搜索,并且如果存在匹配,則適當?shù)臄?shù)據(jù)被選擇且多路轉(zhuǎn)換到輸出。如果發(fā)生錯誤,則必須在可能的高速緩存器行M之間作出選擇,從而決定哪一個高速緩存器行必須被刪除并用最近被使用的主存儲器的內(nèi)容重寫。


圖1示意一種在先技術(shù)的虛擬標記的4-分路組相關(guān)高速緩存器,包括高速緩存器目錄10,高速緩存器數(shù)12,路徑多路轉(zhuǎn)換14以及隊列多路轉(zhuǎn)換16。高速緩存器目錄10包括給高速緩存器陣列12中的每個對應的單元的虛擬地址。高速緩存器陣列12存儲由高速緩存器目錄10中對應的單元或塊指向的主存儲器單元的內(nèi)容。組被定義為高速緩存器陣列12中的列及高速緩存器目錄10中對應的列。同余類被定義為高速緩存器陣列12中的行及高速緩存器目錄10中對應的行。塊或者單元被定義為特別的組(列)及特別的同余類(行)的交叉。單元或者塊包括一個或者多個數(shù)據(jù)字節(jié)。
提供給高速緩存器存儲器的地址18包括目錄標記20,同余類22及塊位移24。目錄標記20一般通過路徑多路轉(zhuǎn)換14選擇高速緩存器目錄10中的要求的組(列)。同余類標記22用于選擇高速緩存器目錄10及高速緩存器陣列12兩者之中要求的同余類(行)。塊位移24用于在要求的塊或者單元以內(nèi)選擇要求的字節(jié)。路徑多路轉(zhuǎn)換14的輸出用于通過陣列多路轉(zhuǎn)換16選取高速緩存器陣列12要求的組(列)。
訪問相關(guān)高速緩存器時的執(zhí)行時間比訪問直接映象的高速緩存器時的執(zhí)行時間更長,這是由于需要比較地址與跨越高速緩存器目錄10的多個組中儲存的標記。如果匹配發(fā)生,則與匹配標記相關(guān)的組從對應的高速緩存器陣列12的組中選取輸出。高速緩存器陣列12的輸出被最后發(fā)送到寄存器及功能單元。所謂的“最后選取問題”是指在可以選擇適當?shù)母咚倬彺嫫麝嚵械慕M12之前,需要對地址進行高速緩存器目錄10查詢及可能的地址轉(zhuǎn)換(如果使用物理-標記的高速緩存器)。這樣,最后選取問題不利地影響在組相關(guān)高速緩存器中的執(zhí)行時間。
因此,如果組選擇信息在搜索高速緩存器目錄及轉(zhuǎn)換地址之前能被利用,則極為有利。關(guān)于高速緩存器的其他詳細資料可在下列參考文件中找到,這里僅作參考1.U.S.Pat.No.5,634,119 to Emma et al.
2.Chang,Sheldon S.L.Electrical and Computer EngineeringⅢ(1983)。
3.Smith,Allan J.Cache Memories-ACM Computing SurveysVol.14(1982)。
4.Cekleov M.and Dubois M.Virtual-Address-IEEEMicro(1997)。
發(fā)明簡介根據(jù)本發(fā)明說明的實施例,提供一種降低組相關(guān)高速緩存器中的訪問執(zhí)行時間的方法,其中數(shù)據(jù)可從通過至少一個選擇高速緩存器選擇的存儲器的單元讀取,該方法包括以下列步驟產(chǎn)生組選擇信息,并將組選擇信息儲存于某個單元,此單元能使組選擇信息在被選擇的高速緩存器中的存儲器選擇信息到達之前可以從存儲器中檢索數(shù)據(jù)。
一種降低在組相關(guān)高速緩存器中的訪問執(zhí)行時間的設備,包括存儲組選擇信息的存儲器,接收地址及輸出由該地址確定的數(shù)據(jù)的M-組的M-分路組相關(guān)高速緩存器,及多路轉(zhuǎn)換組選擇信息及組相關(guān)地址之一的多路轉(zhuǎn)換器,其中所述的組選擇信息可在所述的組相關(guān)地址之前訪問所述的數(shù)據(jù)。
一種降低組相關(guān)高速緩存器的電源消耗的設備,包括組選擇存儲器,以存儲組選擇信息;M-分路組相關(guān)高速緩存器包括陣列及路徑,該路徑輸出地址的組相關(guān)標記部分給陣列;以及多路轉(zhuǎn)換器,用來多路轉(zhuǎn)換路徑中的地址的標記部分和組選擇信息之一,以輸出一個數(shù)據(jù)的M組中的一個。
還根據(jù)本發(fā)明,提供一種使用數(shù)據(jù)地址提高組相關(guān)存儲器的訪問速度的方法。該地址包含位移部分,同余類索引,及標記部分。組相關(guān)存儲器包括陣列及目錄。陣列存儲數(shù)據(jù),并被分區(qū)成多個陣列同余類。陣列同余類被分區(qū)成陣列組。陣列組包括高速緩存器行。高速緩存器行包括多個數(shù)據(jù)。目錄被分區(qū)成多個目錄同余類。目錄同余類被分區(qū)成目錄組,每個都包括目錄入口。目錄入口包括地址標記及其他狀態(tài)信息,包括有效位,奇偶性,等等。目錄被分區(qū),以便在路徑入口及高速緩存器行之間存在一一對應,從而地址標記與每一高速緩存器行相關(guān)。
更好是,該方法包括以下步驟用同余類索引訪問單一陣列同余類組的內(nèi)容,該單一陣列同余類由同余類索引指定,用同余類索引訪問單一的目錄同余類的組的內(nèi)容,單一的目錄同余類由同余類索引確定,產(chǎn)生組選擇信息,利用組選擇信息來選擇陣列同余類的組,輸出被選擇的組中的高速緩沖行數(shù)據(jù);比較標記部分與被選取的目錄同余類組的地址標記,比較被選取的組與組選擇信息是否被選取的同余類的地址標記中的一個等于地址的標記部分,如果沒有一個被選擇的同余類中的地址標記等于該地址的標記部分,則輸出第一控制信號來表示訪問失敗,以及從高速緩沖行輸出的數(shù)據(jù)無效。如果被選擇的組不等于組選擇信息,則輸出第二控制信號來表示來自高速緩沖行的數(shù)據(jù)無效。
還根據(jù)本發(fā)明,提供一種用數(shù)據(jù)地址降低組相關(guān)存儲器中的訪問執(zhí)行時間的設備。該地址包括位移部分、同余類索引及標記部分。組相關(guān)存儲器包括陣列及目錄,其中陣列包括數(shù)據(jù)。陣列分區(qū)成多個陣列同余類。陣列同余類分區(qū)成陣列組,及陣列組確定組-相關(guān)存儲器的組相關(guān)性。陣列組包括高速緩存器行,高速緩存器行包括多個數(shù)據(jù)。目錄分區(qū)成多個路徑同余類。目錄同余類分區(qū)成目錄組。路徑組包括目錄入口,目錄入口包括地址標記。目錄被如此分區(qū)以便在目錄入口及高速緩存器行之間存在一一對應關(guān)系,從而路徑中的地址標記至少與高速緩存器行之一相關(guān)。降低在組相關(guān)存儲器中的訪問執(zhí)行時間的設備包括訪問陣列同余類組的內(nèi)容的設備,單一陣列同余類是由同余類索引指定的同余類,訪問單一目錄同余類組的內(nèi)容的設備,單一目錄同余類是由同余類索引確定的同余類,產(chǎn)生組選擇信息的設備,使用組選擇信息選擇單一陣列同余類組之一的設備,從被選擇的組的高速緩存器行輸出數(shù)據(jù)的設備,比較地址的標記部分與來自被選擇的單一路徑同余類組的地址標記的設備,比較包括等于組選擇信息的地址標記的組的設備,以及輸出指示數(shù)據(jù)訪問成功,來自高速緩沖行的數(shù)據(jù)有效的控制信號的設備。
附圖簡介圖1是在先技術(shù)的虛擬標記高速緩存器的框圖。
圖2是一個框圖,表示本發(fā)明對物理標記的組相關(guān)高速緩存器的應用。
圖2A是根據(jù)本發(fā)明的方法的應用示例流程圖。
圖3是本發(fā)明的第二實施例的框圖。
圖4是本發(fā)明的第三實施例的框圖。
圖5A,5B及5C舉例說明分支歷史表,指令高速緩存器,及操作數(shù)歷史表的使用,分別作為本發(fā)明組選擇信息的存儲器。
圖6是說明在先技術(shù)的操作數(shù)歷史表的操作框圖。
圖7是一個框圖,說明本發(fā)明在中央處理單元中的應用。
圖8A及8B是計時圖,說明高速緩存器分別使用在先技術(shù)和本發(fā)明的方法進行訪問。
上述實施例的詳細說明。
組預測的使用排除了等待組相關(guān)高速緩存器訪問的最后選擇階段的需要。本發(fā)明公開了使用組選擇信息來進行組預測以提高指令和數(shù)據(jù)高速緩存器的性能的實施例。
圖2示意本發(fā)明的實施例的框圖。如圖所示,組選擇28被直接應用到在物理-地址組相關(guān)高速緩存器中的目錄多路轉(zhuǎn)換14及陣列多路轉(zhuǎn)換16。與圖1說明的虛擬地址高速緩存器相對,圖2所示的物理-地址高速緩存器包括轉(zhuǎn)換查找側(cè)緩沖器(TLB)26將虛擬地址18轉(zhuǎn)換成由高速緩存器10使用的物理地址的轉(zhuǎn)換。通過直接提供組選擇28給陣列多路轉(zhuǎn)換16,數(shù)據(jù)可從高速緩存器陣列12中檢索而先于利用多路轉(zhuǎn)換從目錄多路轉(zhuǎn)換14到陣列多路轉(zhuǎn)換選擇數(shù)據(jù)。
根據(jù)本發(fā)明說明的實施例,用于組選擇28的數(shù)據(jù)能被儲存或從包括分支目標緩沖器BTB(也即分支歷史表BHT),操作數(shù)歷史表,或指令高速緩存器在內(nèi)的多個源中導出。
BTB是一種緩沖器,用來給分支指令預測目標地址。BTB的基礎理論是,大多數(shù)分支被采用或者不被采用,如果被采用則具有相同的目標地址。因此,建立一個被采用分支的表,在此表中,每個表的入口包括被采用的分支的地址,該分支后為分支的目標地址。表中建立的入口如像形成一個分支。當表填滿時,通常加入新入口包括通過LRU算法替換舊的入口。
參看圖5A,舉例說明BHT 30用作存儲組選擇信息單元的情形,在指令執(zhí)行過程中,使用分支地址在BHT 30中參照每個分支,如果被發(fā)現(xiàn),則他的目標地址被讀取(Ⅰ讀取)并變成執(zhí)行流中的下一個指令。如果在BHT中未發(fā)現(xiàn)分支地址,則推定未被采用(NT)。隨著分支指令的繼續(xù)執(zhí)行,表隨之被更新。如果預測被采用的分支未被采用,則對應的BTB入口被刪除。如果預測不被采用的分支被采用,則建立新入口。如果預測的目標地址錯誤,則輸入被修正的地址。BHT 30的每個入口保持一個分支的地址,對應的分支目標地址以及組選擇信息。每個分支用指令地址訪問,并被從程序計數(shù)器中導出。組選擇信息表示哪個組最后包括由特定的BHT入口指向的指令并用來通過遭遇與BHT入口對應的分支來預測將從指令高速緩存器中讀取的適當組,將被讀取的分支地址從程序計數(shù)器導出并與BHT 30中的分支地址比較,如果發(fā)現(xiàn)匹配,則對應的分支目標地址和組選擇信息被提供給指令高速緩存器行。這樣,通過使用從存儲在BHT中的組選擇信息中預測的組,就可從指令高速緩存器中讀取適當?shù)闹噶?,這就比依賴于TLB的輸出和高速緩存器目錄來選擇適當?shù)慕M的情形要早。
本發(fā)明實現(xiàn)來自BHT的組選擇的實施例參考框圖2和流程圖2A進行描述從程序計數(shù)器指令讀取地址(一般程序單元對應于分支指令或者被預測為包括分支指令的指令讀取組)讀入分支歷史表(BHT),它提供了分支目標地址及被預測的識別指令高速緩存器中被預測的分支目標組的組索引(步驟200),圖2中被預測的組索引是組選擇28;在地址8,提供分支目標地址給指令高速緩存器;目標地址可被分區(qū)成3個部分部分1-目錄標記;部分2-同余類索引;部分3-指令的移位(步驟205);同樣,將同余類索引提供給高速緩存器路徑10和高速緩存器陣列12;讀出路徑和陣列入口給同余類;通過TLB 26將路徑標記部分提供給路徑多路轉(zhuǎn)換14,并將組選擇28提供給路徑多路轉(zhuǎn)換14和陣列多路轉(zhuǎn)換16。組選擇選擇陣列多路轉(zhuǎn)換16以(從步驟3中讀出的同余類的陣列入口組)輸出適當?shù)年嚵腥肟?步驟210);利用移位識別由高速緩存器陣列12輸出的字,并將該字加到指令隊列(或緩沖器)以進行處理(步驟220);目錄多路轉(zhuǎn)換14識別來自組選擇28的目錄標記是否與在步驟210中從高速緩存器路徑10中讀取的同余類的標記入口之一相匹配(步驟225);如果不匹配(高速緩存器失敗)發(fā)生使步驟220中加給指令指令隊列的字無效(步驟245);通過例如從下一級存儲器層次讀取指令/數(shù)據(jù),一般處理失敗(步驟250);將指令高速緩存器行放入高速緩存器(步驟225);用新的指令高速緩存器行組更新BHT。更新預測源的技術(shù)為本領域普通技術(shù)人員所熟知。更好是,為了執(zhí)行本例中的更新,記錄用于預測的原始BHT入口坐標(步驟260);在步驟225中,如果來自組選擇28的目錄標記匹配由TLB 26提供的標記,(一個高速緩存器命中),還需確定預測是否正確;產(chǎn)生一個被分解的組索引,識別被分解的高速緩存器陣列12中由匹配的目錄標記識別的指令組;同時,將被分解的組索引送到陣列多路轉(zhuǎn)換16和組預測分辨邏輯(未示出),并用分解的組索引來控制陣列多路轉(zhuǎn)換16選擇正確的陣列入口(從步驟210中讀出的同余類的陣列入口組)(步驟235);預測分辨邏輯識別被分解的組索引是否匹配來自組選擇28的被預測的組索引;如果發(fā)生匹配(預測正確),則通過選擇對應于被分解的組索引的入口終止多路轉(zhuǎn)換16操作并使步驟220中加到指令隊列的字生效(步驟240);如果發(fā)生不匹配(預測錯誤),則使加到指令隊列的字無效(步驟270);利用移位來識別高速緩存器陣列12中在步驟240中識別的字,并將該字加到指令隊列(步驟275);并更新組選擇信息28的入口以表示新的被預測的組等于被分解的被預測的組(步驟280)。
顯然,對于本領域的普通技術(shù)人員來說,在本發(fā)明上述描述的實施例中,BHT包含加給BHT中的每個緩沖器或單元的組預測字段,通過使用與分支目標(地址)耦合的組選擇或組預測,數(shù)據(jù)就可從指令高速緩存器中檢索而不用等待轉(zhuǎn)換或最后選擇信號的目標查找生成(通過TLB26,高速緩存器目錄10及目錄多路轉(zhuǎn)換14)。
可選擇地,附加的組選擇信息可被分配給每個BHT入口,附加的組選擇信息為一歸于失敗(fall-through)或不被采用(not-taken)的路徑指定一個適當?shù)慕M。當重新覆蓋錯誤預測的分支或當分支指令占滿高速緩存器塊中的最后的單元并且歸于失敗的路徑存儲于不同的高速緩存器塊時,這種信息是有用的。通過探測目標及歸于失敗路徑處于不同的高速緩存器組,這兩組可同時從指令高速緩存器中被讀取。而且,由于多分支可發(fā)生在單一指令高速緩存器行內(nèi),所以BTB中的附加的組選擇信息也能提供字段給每個分支。
另外,組選擇信息能存儲于指令高速緩存器以提高數(shù)據(jù)高速緩存器的性能,參看圖5B,數(shù)據(jù)高速緩存器組選擇信號100可被添加到指令高速緩存器行120以表示指令需要操作數(shù)的預測組,如圖5B所示,D高速緩存器組選擇與Ⅰ高速緩存器行120的對應固定部分(0至8)相關(guān)。可以為裝載或存儲指令的指令,利用數(shù)據(jù)高速緩存器組選擇信號來訪問包括將被裝載或存儲的操作數(shù)的組。在操作數(shù)地址生成之前,既然數(shù)據(jù)高速緩存器組選擇信息在訪問指令高速緩存器期間為可用,所以數(shù)據(jù)數(shù)據(jù)高速緩存器的性能可以通過這種方法顯著提高。
圖6說明在先技術(shù)的操作數(shù)歷史表(OHT)的操作過程,每個由程序計數(shù)器32讀取的指令與OHT 36中的指令地址相匹配,如果發(fā)現(xiàn)匹配,則讀取對應的操作數(shù)地址,該操作數(shù)然后與預譯碼操作數(shù)緩沖器中的指令進行匹配。當指令被譯碼,則與此指令相關(guān)的操作數(shù)可用,并且立即開始執(zhí)行。
根據(jù)本發(fā)明說明的另一實施例,組選擇信息也可被儲存在OHT中以提高數(shù)據(jù)高速緩存器的性能。OHT減少讀取與指令相關(guān)的操作數(shù)所需要的時間,OHT是基于這種的理論每次執(zhí)行指令時,多個需要操作數(shù)的這種指令都計算同一操作數(shù)地址,例如,可以通過增加基址寄存器,索引寄存器以及由指令提供的移位字段來計算操作數(shù)地址,通過使用一種表,在此表中每個入口包括指令地址及該指令的操作數(shù)地址,就可以在指令被譯碼之前讀取操作數(shù)。
參看圖5C,數(shù)據(jù)高速緩存器組選擇信息140被添加到0HT 36的每個入口,在指令被譯碼之前,適當?shù)牟僮鲾?shù)地址可用并且該操作數(shù)可從數(shù)據(jù)高速緩存器讀取,這樣顯著降低了數(shù)據(jù)高速緩存器的訪問執(zhí)行時間。由于訪問OHT只需要程序計數(shù)器,所以該操作數(shù)能被讀取而先于讀取該指令,如果由于例如該系統(tǒng)如此要求增加對操作數(shù)的訪問執(zhí)行時間的話。
圖3說明本發(fā)明包括普通高速緩存器路徑10和為降低電源消耗而修正的高速緩存器陣列12的實施例。在第一和第二實施例之間的一個不同點是陣列多路轉(zhuǎn)換器16被移到高速緩存器系列12之前,從而組選擇信息28被先用來訪問高速緩存器陣列12而不用來確定那一個組將隨著高速緩存器陣列12的訪問被輸出。高速緩存器12繼續(xù)具有組相關(guān)性,然而,在任一特定的循環(huán)中,只有一組從高速緩存器12中得到檢索。這樣,通過減少被訪問的組數(shù),電源消耗也減少。如果組選擇信息28錯誤,則來自TLB 26和高速緩存器路徑10的最后選擇信息可用來選擇及訪問正確的陣列信息。
圖4說明的本發(fā)明的實施例包括普通高速緩存器陣列12及高速緩存器目錄10,它們被修正以降低電源消耗,在第二和第三實施例之間的一個不同之處是組選擇信息28用來確定哪一組標記在訪問高速緩存器目錄10之前進行訪問而不用來確定哪一組將隨高速緩存器目錄10之后被輸出。組選擇信息28用來選擇高速緩存器目錄10中的組和高速緩存器陣列12中的組,這樣,從高速緩存器目錄10和高速緩存器陣列12中僅輸出一組,通過減少高速緩存器目錄10高速緩存器陣列12中在對高速緩存器的訪問期間必須被訪問的組數(shù)來降低電源損耗。如果組選擇信息28錯誤,則從TLB 26和高速緩存器目錄10中輸出的最后選擇信息可被用來選擇并讀出正確的陣列信息。
圖7說明本發(fā)明對CPU 40的應用。存儲器系統(tǒng)42包括將由CPU40進行操作的指令和程序數(shù)據(jù)。存儲器系統(tǒng)42一般具有層級結(jié)構(gòu),它包括主存儲器(例如動態(tài)隨機訪問存儲器)和第二存儲器(磁/光盤驅(qū)動,可擦除可編程只讀存儲器)存儲器系統(tǒng)42與指令緩存系統(tǒng)44和數(shù)據(jù)高速緩存器46接口,以便分別將使用的指令和數(shù)據(jù)隨時保存在指令高速緩存器44和數(shù)據(jù)高速緩存器46中。一般來說,存儲于高速緩存器的這些指令和數(shù)據(jù)被分成高速緩存器行和塊,指令讀取單元48將存儲于指令高速緩存器44中的一個或多個指令塊讀入指令隊列50,譯碼及調(diào)度單元52從指令隊列50中讀取指令,將這些指令譯碼并進行調(diào)度以執(zhí)行。在Hennessyand PatteRson Computer Architecture A quantitAtiveapproach 第220-362頁(1990)中可以找到調(diào)度技術(shù)的詳細描述,這里作全面參考。條件分支指令在分支單元54中進行調(diào)度以便執(zhí)行,序列或非分支指令在功能單元56進行調(diào)度以便執(zhí)行。
裝載存儲單元58從數(shù)據(jù)高速緩存器56中將數(shù)據(jù)塊按要求讀入功能單元56,裝載存儲單元58也根據(jù)裝載存儲單元56中由指令執(zhí)行產(chǎn)生的數(shù)據(jù)值來更新存儲于數(shù)據(jù)高速緩存器56和存儲器系統(tǒng)42中的數(shù)據(jù)塊。CPU包括寄存器文件60,它提供操作數(shù)給功能單元56以執(zhí)行指令,并接收執(zhí)行結(jié)果。完成單元62按CPU 40的特定結(jié)構(gòu)確認有效的順序執(zhí)行指令。雖然功能單元56可以不按順序執(zhí)行指令,但可以或者不可以允許CPU 40按同一順序完成指令,這取決于結(jié)構(gòu)約束。
分支單元54包括用于評價條件分支的輸出的條件寄存器,以及根據(jù)功能單元56執(zhí)行的操作結(jié)果更新條件寄存器的邏輯。識別將被從存儲系統(tǒng)42讀入指令隊列50的指令塊的地址被存儲于指令讀取寄存器64中,存儲于指令讀取寄存器64中的塊地址被提供給分支單元54。
每個功能單元56都可以執(zhí)行某些或所有類型的通過譯碼及調(diào)度單元52傳送的指令,功能單元56從寄存器文件60和/或數(shù)據(jù)高速緩沖單元56中接收輸入源操作數(shù)并將輸出結(jié)果寫入寄存器文件60和/或數(shù)據(jù)高速緩沖單元56中。同樣,功能單元56可為非對稱,其中,特定的單元僅能執(zhí)行某些指令子組。在此情況下,寄存器文件60一般邏輯上被分區(qū)成對功能單元56的功能的子組,注意,寄存器60的邏輯分區(qū)為結(jié)構(gòu)可見或不可見。而且,寄存器文件60可為邏輯獨立但物理上共享公共電路。另外,譯碼及調(diào)度單元52應是非對稱,且對指令進行適當調(diào)度。例如,功能單元56可以包括一個或多個用以執(zhí)行定點操作的定點單元,一個或多個用來執(zhí)行浮點操作的浮定單元,以及一個或多個用來在一個或多個源向量上執(zhí)行向量操作的向量單元。由定點單元執(zhí)行的定點操作可以包括例如定點加法,定點減法,定點乘法,定點除法,與,或,異或,定點比較,定點旋轉(zhuǎn),及定點移位操作。由浮點單元執(zhí)行的浮點操作可以包括例如浮點加法,浮點減法,浮點乘法,浮點除法,及浮點比較操作。由向量單元執(zhí)行的向量操作具有固有的高度并行性的特征。一般來說,這種向量操作為SIMD型操作,其中指令執(zhí)行與源向量內(nèi)的多數(shù)據(jù)元素中相同的操作。
分支單元54也包括包含組選擇信息的分支預測機構(gòu),如果分支預測機構(gòu)確定指令塊不包括條件分支指令,或者包括一個或多個被預測為不采用的條件分支指令,則分支預測機構(gòu)控制多路轉(zhuǎn)換器66來將下一順序的塊地址(由下一個順序的塊地址發(fā)生器68產(chǎn)生)的組和塊地址裝入指令讀取寄存器64。在這種情況下,下一順序塊被從存儲器系統(tǒng)42讀入指令隊列50,如果分支預測機構(gòu)確定一個或多個指令為被預測被采用的分支指令,那么,分支預測機構(gòu)控制多路轉(zhuǎn)換器66將目標地址的組及塊地址裝入指令讀取寄存器64,在這種情況下,包括第一被預測采用的分支指令的目標指令的組及塊,被從存儲器系統(tǒng)42讀入指令隊列50。此過程本質(zhì)上減少了指令高速緩存器的訪問執(zhí)行時間,并完全能繼續(xù)遙遙領先于CPU40當前執(zhí)行的塊,然而,指令緩沖器的大小及某些被分支預測機構(gòu)錯誤預測的分支而增加的可能性限制了這種處理過程,這種情形中的所有塊預取都是無用的。
顯然,一個塊內(nèi)不止一個條件分支指令被預測采用,對于機構(gòu)識別第一被預測采用的條件分支指令,目標指令的字節(jié)地址可被存儲在指令讀取寄存器64中,而不能被存儲器系統(tǒng)42用來讀取指令塊。在這種情形下,字節(jié)地址被提供給分支預測機構(gòu)以指示塊中的目標指令的入口點,分支預測機構(gòu)利用目標的字節(jié)地址來識別被預測采用的第一條件分支指令是否發(fā)生于被提供的入口點之后。
分支預測機構(gòu)可從存儲于BTB、OHT,指令高速緩存器或譯碼歷史表中的數(shù)據(jù)中讀取組選擇信息。在下列參考文獻中可以找到公知分支預測技術(shù)的描述,這些參考文獻是1.U.S.Pat.No.3,559,183 to sussenguth。
2.U.S.Pat.No.4,477,872 to Losq et al.
3.J.Smith A Study of branch Prediction Strategies 24thAnnual Symposium on Computer Architecture第135-148頁(May1998)。
4.Yeh and patt A Compari son of Dynami c BranchPredictors that user Two Level s of Branch History ConferenceProceedings-Annual Symposium on Computer Architecture第257-266頁(1993)。
5.P.Emma,J pomerene,T.Puzak,R.Rechtschaffen andF.SDaracio Operand History Table,IBM Technical DisclosureBulletin 12-84,第3815-3816.頁6.Emma,J.Knight,J.Pomerene,T.Puzak,R.Rechtschaffen Hedge Fetch History Table,IBM TechnicalDisclosure Bulletin 02-89,第101-102.頁7.U.S.Pat.No.5,235,697 to Simon Stely Jr.et al.
8.U.S.pat.No.5,418,922 to L.Liu.
9.L.Liu,partial address directory for cache access,IEEE Transactions on Very Large Scale Integration(VLSI)Systems,2(2),June 1994,第226-240頁。
(LIU使用一種稱為SETLAT的固定表,此表使用裝載地址的一部分進行索引從而更快地從相關(guān)高速緩存器中檢索數(shù)據(jù)。既然SETLAT不要求轉(zhuǎn)換并且比一般的目錄窄,所以它更快地從同余類中選擇一個組,LIU的發(fā)明也可用于高速緩存器虛擬地址轉(zhuǎn)換,并且每個循環(huán)能進行多個高速緩存器訪問)。
10.A.Agarwal and S.Pudar Column-AssociativeCachesA Technique for Reducing the Miss Rate of Direct-Mapped Caches”,,The 20th Annual International Symposium onComputer Architecture(1993)第179-190.頁(Agarwal和Pudar提出了如何使用第二散列法使直接映象高速緩存器象二分路組相關(guān)高速緩存器一樣執(zhí)行。采用這種技術(shù),他們能較快地訪問最近被使用(MRU)的組元素。)11.B.Calder and D.Grunwald and J.Emer,“Predictivesequential associative cache”,IEEE High-PerformanceComputer Architecture Symposium Proceedings 1996,第.244-253頁。
(在建立于Agarwal和Pudar之上的文獻中,Calder等描述了這樣一種方法,使用預測技術(shù)來選擇一種恰當?shù)母咚倬彺嫫魃⒘刑綄?,從而每次利用一種不同的散列探尋來多次訪問直接映象高速緩存器)。
再者,參考圖7,處理器單元40可以包括附加硬件機構(gòu),該機構(gòu)在處理器40請求指令和數(shù)據(jù)之前,將這種信息讀入高速緩存器存儲器44、46。例如,處理器單元40可以包括下列文章中所闡述的讀取流緩沖器JoupPi,“Improving Direct-mapped Cache Performance bythe Addition of a Small Fully-Associative Cache and Pre-fetchbuffers-Proc.of 17thannual Int’l Symposium on ComputerArchitecture”,Seattle,May,1990,IEEE Computer Society Press,第364-373頁,以及Palacharla et al.“Evaluating StreamingBuffers as a Secondary Cache Replacement-Proc.Of 21stAnnualInt’l Symposium on Computer Architecture”,chicago,April,1994,IEEE Computer Society Press,第24-33頁,這里作全面參考。
另外,預讀取指令(例如,在處理器單元40請求指令及數(shù)據(jù)以前,將這些信息預讀入高速緩存器存儲器44、46的指令)可被插入存儲在存儲單元42的指令順序中,Callhan等的“Software PrefetchProceedings of the Fourth International Conference onArchitectural Support For Programming Languages andOperating Systems”,1991.5月,在這里作完全參考。該文公開了在指令組中加入執(zhí)行讀取的新指令的方法。在由IBM,Motorala和Apple聯(lián)合開發(fā)的PowerPC處理器中,數(shù)據(jù)高速緩存器塊觸發(fā)(dcbt)指令,一般通稱觸發(fā)指令,用來將存儲器塊預讀入高速緩存器。而且,授于P.Dubey的美國專利5,774,685號(申請?zhí)?8/426,502),轉(zhuǎn)讓給本發(fā)明的受讓人,這里全部作為參考,它描述了一個推測觸發(fā)指令。
這些預讀取指令可用來將指令和數(shù)據(jù)(操作數(shù))讀入高速緩存器存儲器44、46,一般來說,這些預取指令象裝入指令一樣動作,除非數(shù)據(jù)不被傳送給處理器單元46。更為特別地,處理器單元40包括一種用預取地址搜索高速緩存器目錄的機構(gòu)。并且如果發(fā)生失敗,則將該信息從存儲器系統(tǒng)42傳送到高速緩存器存儲器44、46。這些預取指令由編譯器插入實際使用這些信息之前的指令順序中,試圖保證在需要時這些信息可用到高速緩存器中。不幸的是,對編譯器來說,不可能在任何情況下都能插入預取指令從而避免高速緩存器失敗。例如,直到使用這些數(shù)據(jù)的指令被執(zhí)行,才可知道預取地址。假設一個裝載指令間接參考操作數(shù),即,寄存器裝載保存存儲器中的指針。在這種情況下,直到識別數(shù)據(jù)指針被裝載,才知道預取地址。
在其它情況下,如果預取指令放置與實際使用的數(shù)據(jù)太近,則從預取指令中不能獲取性能益處,例如,將一個預取的僅一個指令放置在它讀取的實際使用的信息之前,則插入該預取指令,根本得不到任何性能益處,這樣,在某些情況下,忽略無用的預取指令是有益的。在美國專利申請08/599,833,由T,Puzak提交的專利中描述有選擇地執(zhí)行預取指令的機構(gòu)的例子,在這里作全面參考。
對于預取指令和數(shù)據(jù),處理器單元40可以推定執(zhí)行預取指令,這種指定稱為“推定的指定”,這是由于這種指令的執(zhí)行結(jié)果在推定錯誤的情況下可能是無用的這種事實。更好是,處理器單元40利用分支預測來識別一個路徑,沿此路徑推定執(zhí)行指令。在此方面,分支單元54根據(jù)條件分支指令的分辨率來評價預測的有效性。如果給出的預測被確定為有效(例如推定有效),那么那些依賴于有效預測的推定指令成為恒定的。然而,如果給出的預測被確定為無效(例如推定無效),則那些依賴于無效預測的推定指令的任何執(zhí)行結(jié)果都被放棄,并且通過處理器單元40的級的這種推定指令執(zhí)行過程就結(jié)束。推定指令最好在指令隊列50中做作出標記。
還有,不同級的處理器單元40(分支單元54,譯碼及調(diào)度單元52,裝載/存儲單元58,功能單元56)最好存儲識別那些由給定的級執(zhí)行的推定指令的信息。而且,完成單元62最好將這些推定指令的執(zhí)行結(jié)果標記為推定。通過確定給定的推定有效,分支單元54與完成單元62共同操作,將依賴于該有效預測的那些推定指令的執(zhí)行結(jié)果標記為恒定,這里,允許完成單元62完成這些指令(假如將執(zhí)行結(jié)果寫到寄存器文件60或存儲器系統(tǒng)42中)。另一方面,通過確定給出的預測無效,分支單元54完全如下操作分支單元54與指令讀取單元48共同操作,廢棄那些根據(jù)保留在指令隊列50中的無效預測而產(chǎn)生的推定指令;分支單元54與完成單元62共同操作,以廢棄那些根據(jù)無效予測推定指令,由此禁止完成單元62完成這些指令;以及分支單元54與不同級的處理器單元40共同操作,終止依賴于無效預測的推定指令的處理過程。
在圖8A和圖8B中圖示說明了使用組預測信息的實例,圖8A和圖8B示出了主流水線(heavily pipelined)高速緩存器的時序圖,圖8A說明了不用組預測的在先流水方法,圖8B說明了根據(jù)本發(fā)明使用組預測的方法,可見在圖8A所示的在先方法中,高速緩存器訪問及陣列讀出發(fā)生在時間期間0和1過程中,在大約同一時間,虛擬地址轉(zhuǎn)換(V→R),目錄讀出,以及標記檢查都對數(shù)據(jù)A執(zhí)行。在最后選擇(組索引解決)之后,在時間周期2期間,數(shù)據(jù)A被認定為有效數(shù)據(jù)。使用圖8B所示本發(fā)明的方法說明,數(shù)據(jù)A在時間期‘1’期間陣列讀出之后,在最后選擇在周期‘2’中執(zhí)行之前是有效的。之后數(shù)據(jù)‘A’在時間周期‘2’中確認為有效數(shù)據(jù)。
在組預測錯誤的情況下,高速緩存器訪問,陣列讀出以及可用數(shù)據(jù)步驟必須第二次被執(zhí)行(在時間期間3)。直到時間期間4數(shù)據(jù)A才為可用。注意,數(shù)據(jù)B和C可為有效數(shù)據(jù)。他們在重新使數(shù)據(jù)‘A’有效之前就為可用。
這樣,盡管本發(fā)明特定的實施例已被示出和描述,但各種不同修正對本領域的技術(shù)人員來說是顯然的,因而本發(fā)明并不局限于公開的實施例或者具體細節(jié),任何修改將落入本發(fā)明宗旨和范圍內(nèi)。
權(quán)利要求
1.一種降低在具有組相關(guān)高速緩存器的存儲器中的訪問執(zhí)行時間的方法,其中的數(shù)據(jù)可根據(jù)通過至少一個選擇高速緩存器選擇的數(shù)據(jù)選擇信息從存儲器的單元讀取,這種方法包括下列步驟產(chǎn)生組選擇信息將組選擇信息存儲在多個單元中的至少一個中以及傳送并使用紐選擇信息,在通過至少一個選擇高速緩存器的所說數(shù)據(jù)選擇信息確定并到達之前,從存儲器中檢索所述的數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的降低組相關(guān)高速緩存器中的訪問執(zhí)行時間的方法,其中所述的多個單元中的一個為分支目標緩沖器,并且被訪問的存儲器是一種指令高速緩存器。
3.根據(jù)權(quán)利要求2所述的降低組相關(guān)高速緩存器中的訪問執(zhí)行時間的方法,其中將組選擇信息存儲到分支目標緩沖器中的步驟還包括將第二組選擇信息存儲在分支目標緩沖器中,該第二組選擇信息預測一個用于一歸于失敗路徑的組。
4.根據(jù)權(quán)利要求2所述的降低組相關(guān)高速緩存器中的訪問執(zhí)行時間的方法,其中將組選擇信息存儲到分支目標緩沖器中的步驟還包括將第二組選擇信息存儲在分支目標緩沖器中,該第二組選擇信息預測一個用于一未采用的路徑的組。
5.根據(jù)權(quán)利要求1所述的降低組相關(guān)高速緩存器中的訪問執(zhí)行時間的方法,其中所述的多單元中的一個在指令高速緩存器中,被訪問的存儲器是一種數(shù)據(jù)高速緩存器。
6.根據(jù)權(quán)利要求1所述的降低組相關(guān)高速緩存器中的訪問執(zhí)行時間的方法,其中所述的多個單元中的一個是一種操作數(shù)歷史表,被訪問的存儲器高速緩存器是一種數(shù)據(jù)高速緩存器。
7.權(quán)利要求1所述的方法,還包括以下步驟比較所述的組選擇信息與數(shù)據(jù)選擇信息更新所述的組選擇信息并發(fā)出無效數(shù)據(jù)的信號,該無效數(shù)據(jù)是根據(jù)比較結(jié)果不匹配的確定讀取的以及從下一級存儲器層次中讀取指令或數(shù)據(jù)。
8.一種降低在組相關(guān)高速緩存器器中的訪問執(zhí)行時問的設備包.括a)一存儲組選擇信息的存儲器;b)一接受地址并輸出由該地址確定的數(shù)據(jù)的M組的M分路組相關(guān)高速緩存器;以及c)一多路轉(zhuǎn)換組選擇信息及組相關(guān)地址中的一個的多路轉(zhuǎn)換器,其中所述的組選擇信息比用來訪問所說數(shù)據(jù)的組相關(guān)地址優(yōu)先使用。
9.根據(jù)權(quán)利要求8所述的降低在組相關(guān)高速緩存器中的訪問執(zhí)行時間的設備,其中組選擇信息存儲于分支目標緩沖器或從中得到檢索,M分路組相關(guān)高速緩存器是一種指令高速緩存器。
10.根據(jù)權(quán)利要求8所述的降低在組相關(guān)高速緩存器中的訪問執(zhí)行時間的設備,其中組選擇信息存儲于指令高速緩存器或從中得到檢索,M維組相關(guān)高速緩存器是數(shù)據(jù)高速緩存器。
11.根據(jù)權(quán)利要求8所述的降低在組相關(guān)高速緩存器中的訪問執(zhí)行時間的設備,其中組選擇信息存儲于操作數(shù)歷史表或從中得到檢索,M維組相關(guān)高速緩存器是數(shù)據(jù)高速緩存器。
12.一種降低組相關(guān)高速緩存器的電源消耗的設備,包括a)一存儲組選擇信息的組選擇存儲器;b)一包括陣列和目錄的M維組相關(guān)高速緩存器,目錄將地址的組相關(guān)標記部分輸出給陣列;以及c)一將來自所述的目錄的地址的標記部分和組選擇信息進行多路轉(zhuǎn)換從而輸出M組數(shù)據(jù)中的一個組的多路轉(zhuǎn)換器。
13.根據(jù)權(quán)利要求12所述的降低組相關(guān)高速緩存器的電源消耗的設備,其中M維組相關(guān)高速緩存器是一種指令高速緩存器。
14.根據(jù)權(quán)利要求13所述的降低組相關(guān)高速緩存器的電源消耗的設備,其中組選擇信息存儲于或讀取于分支目標緩沖器。
15.根據(jù)權(quán)利要求12所述的降低組相關(guān)高速緩存器的電源消耗的設備,其中M維組相關(guān)高速緩存器是數(shù)據(jù)高速緩存器。
16.根據(jù)權(quán)利要求12所述的降低組相關(guān)高速緩存器的電源消耗的設備,其中組選擇信息存儲于或讀取于操作數(shù)歷史表。
17.根據(jù)權(quán)利要求12所述的降低組相關(guān)高速緩存器電源消耗的設備,其中組選擇信息存儲于或讀取于指令高速緩存器。
18.一種使用數(shù)據(jù)地址,增加組相關(guān)存儲器的訪問速度的方法,所述的每個地址包括移位部分,同余類索引,以及標記部分,所述的組相關(guān)存儲器包括陣列和目錄,所述的陣列存儲數(shù)據(jù),所述陣列被分區(qū)成多個陣列同余類,所述陣列同余類被分區(qū)成陣列組,陣列組包括具有數(shù)據(jù)的高速緩存器行,所述的目錄被分區(qū)成多個目錄同余類,所述目錄同余類被分區(qū)成目錄組,所述目錄組包括目錄入口,所述目錄入口包括地址標記,所述目錄被如此分區(qū),以使在所述目錄入口和高速緩存器行之間存在一一對應關(guān)系,從而所述地址標記與至少一個高速緩存器行相關(guān),所述的方法包括以下步驟使用所述的同余類索引訪問單一陣列同余類組的內(nèi)容,所述的單一陣列同余類由所述的同余類索引指定;使用所述的同余類索引訪問單一路徑同余類組的內(nèi)容,所述單一路徑同余類由同余類索引指定;產(chǎn)生組選擇信息;利用所述組選擇信息,在輸出由目錄指定的單一同余類之前選擇陣列同余類組;根據(jù)所述組選擇信息從被選擇的組中的高速緩存器行輸出數(shù)據(jù)。
19.根據(jù)權(quán)利要求18所述的方法,還包括以下步驟比較所述標記部分與所述被選擇的所述目錄同余類組的所述地址標記;如果所述被選擇的同余類中的所述地址標記中的一個等于所述的地址標記部分,則比較所述被選擇的組與所述組選擇信息;輸出第一控制信號來指示所述的訪問失敗,以及如果沒有在被選擇的同余類中的地址標記等于所述的地址標記部分,則從高速緩存器行輸出的數(shù)據(jù)無效;如果被選擇的組不等于組選擇信息則輸出第二控制信號來顯示從高速緩存器行輸出的數(shù)據(jù)無效。
20.根據(jù)權(quán)利要求18所述的方法,其中所述的地址包括第一分區(qū)和第二分區(qū),第一分區(qū)包括陣列移位部分,陣列同余類索引及陣列標記部分,第二分區(qū)包括目錄部分,目錄同余類索引及目錄標記部分,其中所述的陣列同余類索引和目錄同余類索引可為不同的長度,以及其中所述的陣列和目錄包括不同的組相關(guān)性。
21.根據(jù)權(quán)利要求20所述的方法,還包括利用移位部分來從高速緩存器行選擇數(shù)據(jù)準備輸出的步驟。
22.根據(jù)權(quán)利要求18所述的方法,還包括如果被預測的組之外的組具有與陣列標記部分匹配的地址標記,則從被選擇的組中的高速緩存器行中輸出數(shù)據(jù)的步驟。
23.根據(jù)權(quán)利要求20所述的方法,還包括如果被預測的組之外的組包括與目錄標記部分匹配的地址標記,則從被選擇的組中的高速緩存器行中輸出數(shù)據(jù)。
24.根據(jù)權(quán)利要求18所述的方法,其中所述的組選擇信息由分支目標緩沖器提供。
25.根據(jù)權(quán)利要求20所述的方法,其中所述的用于指令訪問的組選擇信息由分支目標緩沖器提供。
26.根據(jù)權(quán)利要求18所述的方法,其中所述的用于操作數(shù)訪問的組選擇信息由在先的指令訪問提供。
27.根據(jù)權(quán)利要求20所述的方法,其中所述的用于操作數(shù)訪問的組選擇信息由在先的指令訪問提供。
28.根據(jù)權(quán)利要求18所述的方法,其中用于操作數(shù)訪問的組選擇信息由操作數(shù)歷史表提供。
29.根據(jù)權(quán)利要求20所述的方法,其中用于操作數(shù)訪問的組選擇信息由操作數(shù)歷史表提供。
全文摘要
一種存儲并利用組預測信息的方法及設備,通過訪問組相關(guān)存儲器的有關(guān)組,來提高組相關(guān)存儲器的性能,降低電源消耗,組預測信息存儲于不同的單元,包括分支目標緩沖器,指令高速緩存器及操作數(shù)歷史表,從而降低訪問組相關(guān)指令和數(shù)據(jù)高速緩存器的執(zhí)行時間。
文檔編號G06F12/08GK1287311SQ9912691
公開日2001年3月14日 申請日期1999年12月19日 優(yōu)先權(quán)日1999年1月29日
發(fā)明者M·J·查尼, P·G·伊瑪, D·A·普雷納, T·R·普扎克 申請人:國際商業(yè)機器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1