專利名稱:產(chǎn)生預(yù)測地址值的電路和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機,更具體地說,涉及用于計算電路中地址預(yù)測的電路。
背景技術(shù):
改善計算機速度的一種方法稱作“流水線技術(shù)”,其中指令被饋送到用于多階段處理器中執(zhí)行單元的流水線中。例如,為處理一個典型的指令,流水線可包括若干單獨的階段用于從存儲器中取出指令、執(zhí)行該指令、以及把指令結(jié)果寫回存儲器。這樣,對于送入流水線的指令序列,當(dāng)?shù)谝恢噶畹慕Y(jié)果正由流水線的第三階段寫回存儲器時,下一條指令正由第二階段執(zhí)行,而再下一條指令正由第一階段取出。盡管每個單獨指令的處理可能占用幾個時鐘周期,由于其他指令也同時受到處理,所以可以大大改善處理器的總吞吐量。
通過使用高速緩存能得到進一步的改善。高速緩存是一類存儲器,它通常比計算機中的主存儲器快。高速緩存通常連至一個或多個處理器,并連至主存儲器。高速緩存使訪問加速,這是通過保存選定存儲區(qū)地址處所儲存的信息的一個復(fù)雜,從而使處理器對選定存儲區(qū)地址的訪問請求由高速緩存來處置來實現(xiàn)的。每當(dāng)收到一個對未儲存在高速緩存中的存儲器地址的訪問請求時,高速緩存通常是從存儲器中提取信息并把該信息轉(zhuǎn)發(fā)給處理器。
每當(dāng)對已存在于高速緩存中的存儲器地址的訪問請求數(shù)(稱作“高速緩存命中數(shù)”)相對于對未被存入高速緩存中的存儲器地址的訪問請求數(shù)(稱作“高速緩存未命中數(shù)”)達到最大化時,高速緩存的好處便達到最大化。增大高速緩存命中率的一種途徑是增大高速緩存的大小。然而,增大高速緩存存儲器的大小可能增加與計算機相關(guān)的成本,還可能延長與高速緩存相關(guān)的訪問時間。
對于整數(shù)和商業(yè)代碼流,工作負(fù)載主要被對地址的操作所占用。在一個指令高速緩存中,陣列區(qū)通常與那里存儲的地址的最大尺寸成比例。在試圖實現(xiàn)對64位體系結(jié)構(gòu)的值預(yù)測時,用于高速緩存預(yù)測值的高速緩存陣列區(qū)是32位體系結(jié)構(gòu)的兩倍。這不僅用掉大量芯片區(qū)而且它還使值預(yù)測高速緩存/陣列訪問減慢。
在64位體系結(jié)構(gòu)中,64位地址的高階位趨向于在時間上高度相關(guān),特別是對于分段地址模型更是如此。發(fā)生這種情況是因為在程序中的一個給定點,即使可能存在數(shù)十條地址,通常也只有四至八段是活躍的。在典型的64位體系結(jié)構(gòu)中,通常只有地址的約32個低階位以近乎隨機的方式進行變化,而高階的32位趨向于落入若干較緩慢變化的模式。在幾百個連續(xù)周期的過程中,高階位的這些較緩慢變化模式的數(shù)量是有限的而且看來是靜態(tài)的。
所以,需要一種電路,它預(yù)測地址同時只使用有限的高速緩存空間量。
發(fā)明內(nèi)容
本發(fā)明克服了先有技術(shù)的缺點,在其一個方面,本發(fā)明是一種計算電路,用于產(chǎn)生一個預(yù)測地址值,它包括含有一個指令值的指令字段。一個立即值字段與該指令字段相關(guān)聯(lián)并包括一個偏移值和低階位第一子集。一個有效地址高速緩存儲存多個近期被訪問的存儲器地址的多個高階位并讀出與一個存儲器地址的高階位第二子集對應(yīng)的值,而該存儲器地址又對應(yīng)于該低階位第一子集。一個電路使該第二子集、該第一子集和該偏移值串接起來,從而產(chǎn)生預(yù)測地址值。
在另一個方面,本發(fā)明是在一個計算電路中預(yù)測下一個地址的方法,在該計算電路中多個地址部分被存儲在有效地址高速緩存中。每個地址部分包括一個地址的高階部分。該有效地址高速緩存由來自一個立即地址低階部分的位子集尋址,該立即地址存儲在與一指令關(guān)聯(lián)的立即值字段中,從而從有效地址高速緩存中讀出一個預(yù)測地址的高階部分。該預(yù)測地址的高階部分與該立即地址的低階部分串接起來,從而產(chǎn)生一個預(yù)測地址,該預(yù)測地址被傳送到流水線。該預(yù)測地址與一已知地址比較,如果該預(yù)測地址與該已知地址不一致,則發(fā)出一個信號指出該預(yù)測地址是不正確的。
由下文中結(jié)合附圖對優(yōu)選實施例的描述,本發(fā)明的這些和其他方面將變得顯而易見。對本領(lǐng)域技術(shù)人員而言,顯然可以實現(xiàn)對本發(fā)明的許多改變和修改而不偏離本公開的新構(gòu)想的精神和范圍。
圖1是本發(fā)明一個實施例的方框圖。
圖2是本發(fā)明第二實施例的方框圖。
具體實施例方式
現(xiàn)在詳細描述本發(fā)明的一個優(yōu)選實施例。參考附圖,在各圖中相同數(shù)字表示相同部件。如在這里的描述和整個權(quán)利要求中使用的那樣,下列各詞在這里取其明顯關(guān)聯(lián)的含義,除非其上下文清楚表明不是如此“一”、“一個”(a或an”)、“該(the)”的意義包括復(fù)數(shù)含義,“在...中(in)”的意義包括“在...中(in)”和“在...上(on)”。
如圖1中所示,根據(jù)本發(fā)明的一個地址預(yù)測電路100的一個實施示例包括一個指令字段110和與其關(guān)聯(lián)的相關(guān)立即值字段112。指令字段110和立即值字段112可以在一個寄存器中實現(xiàn)。指令字段110包含一個指令值(例如“LOAD”)。立即值字段112包括偏移值116(在所示例子中的位4-31)和較低階位(在所示例子中的位0-3)的第一子集114。第一子集114可對應(yīng)于一個段表104高速緩存尋址方案,其類型為計算電路中通常使用的類型。
一個有效地址高速緩存120(其可包括一個關(guān)聯(lián)存儲器)儲存多個近期被訪問的存儲器地址的多個高階位。有效地址高速緩存120由低階位(位0-3)的第一子集114尋址。與一個存儲器地址的高階位的第二子集122相對應(yīng)的一個值由有效地址高速緩存120讀出。第二子集122對應(yīng)于低階位的第一子集。電路124(其可能只不過是導(dǎo)線的并置)使第二子集122、第一子集114以及偏移值116串接起來。這產(chǎn)生一個預(yù)測的地址值140,其被發(fā)送給流水線106。
一個散列電路118,其響應(yīng)第一子集114,可用于為有效地址高速緩存產(chǎn)生一個地址。這樣的電路可利用本技術(shù)領(lǐng)域已知的許多散列算法中的任何一個。
一個比較電路142比較預(yù)測地址值140和一已知地址值136,當(dāng)預(yù)測地址值140不等于已知地址值136時發(fā)出信號144。已知地址值136是數(shù)據(jù)地址的高階部分132和該數(shù)據(jù)地址的低階部分134的串接。該數(shù)據(jù)地址是由專用加法器130把從寄存器文件102中接收的當(dāng)前地址131加到指令133中的位移上確定的。所產(chǎn)生的高階部分132被發(fā)送到有效地址高速緩存120供以后使用。低階部分被發(fā)送到立即值字段112以助于以后的預(yù)測。
如圖2中所示,較低階位第一子集114可以與該數(shù)據(jù)地址的高階部分132串接。在本發(fā)明的這一實施例中,無須來自立即值字段112的額外導(dǎo)線把第一子集114發(fā)送到串接電路124。如果采用一個散列電路118為有效地址高速緩存120產(chǎn)生地址,則這一實施例會是特別有用的。
盡管上面的討論顯示的本發(fā)明實施例應(yīng)用于一個64位體系結(jié)構(gòu),但應(yīng)該理解,本發(fā)明可應(yīng)用于任何位長度的體系結(jié)構(gòu)。
上面描述的實施例只是作為舉例給出。容易理解,由本說明中公開的具體實施例能做出許多改變而不脫離本發(fā)明。因此,本發(fā)明的范圍要由權(quán)利要求確定,而不是限于上文具體描述的實施例。
權(quán)利要求
1.一種用于產(chǎn)生預(yù)測地址值的計算電路,包含a.一個指令字段,含有一個指令值并有一個相關(guān)聯(lián)的立即值字段,該立即值字段包括一個偏移值和低階位第一子集;b.一個有效地址高速緩存,其存儲多個近期被訪問的存儲器地址的多個高階位,并讀出與一個存儲器地址的高階位第二子集對應(yīng)的值,該存儲器地址對應(yīng)于該低階位第一子集;以及c.一個電路,用于把該第二子集、該第一子集以及該偏移值串接起來,從而產(chǎn)生預(yù)測地址值。
2.權(quán)利要求1的計算電路,其特征在于,進一步包含一個散列電路,其響應(yīng)該第一子集并為有效地址高速緩存產(chǎn)生一個地址,該地址符合一個預(yù)先確定的散列算法。
3.權(quán)利要求1的計算電路,其特征在于,該有效地址高速緩存包含一個關(guān)聯(lián)存儲器。
4.權(quán)利要求1的計算電路,其特征在于,進一步包含一個比較電路,其比較該預(yù)測地址值和一已知地址值,而且當(dāng)該預(yù)測地址值不等于該已知地址值時發(fā)出一個信號。
5.權(quán)利要求1的計算電路,其特征在于,進一步包含一個已知地址電路用于產(chǎn)生該已知地址值。
6.權(quán)利要求5的計算電路,其特征在于,已知地址電路包含一專用加法器,其響應(yīng)一個寄存器文件的當(dāng)前地址輸出和從當(dāng)前指令寄存器接收的地址位移值,并產(chǎn)生數(shù)據(jù)的下一個地址高階子集和數(shù)據(jù)的下一個地址低階子集,其中該數(shù)據(jù)的下一個地址較高階子集被傳送給該有效地址高速緩存。
7.一種在計算電路中預(yù)測下一個地址的方法,包含如下步驟a.把多個地址部分存儲到有效地址高速緩存中,每個地址部分包括一個地址的高階部分;b.以來自一個立即地址低階部分的位子集對該有效地址高速緩存尋址,該立即地址低階部分存儲在與一指令關(guān)聯(lián)的立即值字段中,從而從該有效地址高速緩存中讀出預(yù)測地址的高階部分;c.把該預(yù)測地址高階部分與該立即地址低階部分串接起來,從而產(chǎn)生一個預(yù)測地址;d.把該預(yù)測地址傳送給流水線;以及e.比較該預(yù)測地址和一已知地址,如果該預(yù)測地址與該已知地址不同,則發(fā)出一個信號,表明該預(yù)測地址不正確。
8.權(quán)利要求7的方法,其特征在于,該已知地址是把地址位移值加到當(dāng)前地址值上產(chǎn)生的。
9.權(quán)利要求7的方法,其特征在于,進一步包含把該已知地址高階部分存儲到該有效地址高速緩存中的步驟。
全文摘要
一種用于產(chǎn)生預(yù)測地址值的計算電路包括含有一個指令值的指令字段。一個立即值字段與該指令字段關(guān)聯(lián)并包括一個偏移值和低階位第一子集。一個有效地址高速緩存存儲多個近期被訪問的存儲器地址的多個高階位并讀出與一個存儲器地址的高階位第二子集對應(yīng)的值,而該存儲器地址又對應(yīng)于該低階位第一子集。一個電路使該第二子集、該第一子集和該偏移值串接起來,從而產(chǎn)生預(yù)測地址值。
文檔編號G06F9/355GK1499380SQ20031010301
公開日2004年5月26日 申請日期2003年10月28日 優(yōu)先權(quán)日2002年10月29日
發(fā)明者D·A·盧伊克, R·J·艾克邁爾, D A 盧伊克, 艾克邁爾 申請人:國際商業(yè)機器公司