專利名稱:采用小規(guī)模硬件作高命中率分支預(yù)測(cè)的信息處理裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明是關(guān)于微處理器等的信息處理裝置,特別是關(guān)于分支預(yù)測(cè)的完善技術(shù)。
在采用流水線結(jié)構(gòu)的微處理器等的信息處理裝置中,為防止因執(zhí)行分支命令而在控制流程分支時(shí)產(chǎn)生的流水線擾亂的措施之一是作分支預(yù)測(cè)。進(jìn)行高命令中率的分支預(yù)測(cè)時(shí),必須預(yù)測(cè)每一分支命令中分支是否成立。作為此時(shí)采用的方法,是考慮設(shè)置匯集對(duì)應(yīng)于程序中各分支命令的分支預(yù)測(cè)信息的分支預(yù)測(cè)表。
但要在信息處理裝置內(nèi)部保持分支預(yù)測(cè)表使得硬件增加。
為此提出了不在信息處理裝置內(nèi)部固定地保持分支預(yù)測(cè)信息,而依靠分支命令自身設(shè)置,將信息處理裝置中必須的硬件限制到最小限度的分支預(yù)測(cè)措施(例如日本專利申請(qǐng)公開昭63-75934中所公開的信息處理裝置)。
圖1表示上述歷來的信息處理裝置用的分支命令的格式。
在此歷來的信息處理裝置中,分支命令40中具有1位的分支預(yù)測(cè)信息40b,在作分支命令40解碼時(shí),按照此分枝預(yù)測(cè)信息40b由存貯器提前取得下一應(yīng)執(zhí)行的命令。而后在分支命令40執(zhí)行結(jié)束時(shí),將該執(zhí)行結(jié)果與分支預(yù)測(cè)信息40b對(duì)照,在預(yù)測(cè)失敗時(shí)即更新存貯器中所存貯的該分支命令40的分枝預(yù)測(cè)信息40b。
由此來避免在信息處理裝置內(nèi)部設(shè)置分枝預(yù)測(cè)表。
但是,上述歷來的信息處理裝置,由于抑制信息處理裝置中所需的硬件規(guī)模、而分枝預(yù)測(cè)的命中率很低,所以存在有頻繁地發(fā)生伴隨分支預(yù)測(cè)失敗而來的損失的問題。
亦即,上述歷來的信息處理裝置,由于根據(jù)表示緊接前面的執(zhí)行結(jié)果的1位的分支預(yù)測(cè)信息40b提前取出下一命令,例如在分支的成立與不成立相互重復(fù)時(shí)全部預(yù)測(cè)都不符合。因此,每次執(zhí)行這樣的分支命令時(shí)就必須使提前取的命令無效化,而有礙于信息處理裝置執(zhí)行的高速化。
為此,本發(fā)明就是針對(duì)上述的問題而研制的,目的在于提供能以小規(guī)模硬件實(shí)現(xiàn),且能進(jìn)行高命中率的分支預(yù)測(cè)的信息處理裝置。
本發(fā)明的第二目的是提供記錄含有為以軟件實(shí)現(xiàn)上述信息處理裝置的程序和用于上述信息處理裝置的特定的分支命令的命令群的記錄媒體。
為達(dá)到上述目的,有關(guān)本發(fā)明的信息處理裝置是順序執(zhí)行命令的信息處理裝置,其特征在于設(shè)置有預(yù)先存貯包含具有預(yù)測(cè)分支是否成立的分支預(yù)測(cè)信息和表示有關(guān)過去的分支結(jié)果的信息的分支歷史信息的分支命令的命令群的存貯手段;由前述存貯手段讀出下一應(yīng)執(zhí)行命令的命令讀取手段;解碼所讀出命令是否為前述分支命令的命令解碼手段;在解碼前述命令為分支命令時(shí)控制前述命令讀取手段使之根據(jù)該分支命令的分支預(yù)測(cè)信息讀出下一應(yīng)執(zhí)行命令的命令讀取控制手段;執(zhí)行已解碼的前述分支命令的執(zhí)行手段;根據(jù)執(zhí)行前述分支命令時(shí)的分支結(jié)果和該分支命令中所含的分支歷史信息生成新的分支預(yù)測(cè)信息的分支預(yù)測(cè)信息生成手段;根據(jù)前述分支命令執(zhí)行時(shí)的分支結(jié)果和該分支命令中所含分支歷史信息生成新的分支歷史信息的分枝歷史信息生成手段;和將前述存貯手段中存貯的前述分支命令的分支預(yù)測(cè)信息和分支歷史信息更新成為由前述分支預(yù)測(cè)信息生成手段生成的分支預(yù)測(cè)信息和由前述分支歷史信息生成手段生成的分支歷史信息的分支命令更新手段。
就是說,在關(guān)于本發(fā)明的信息處理裝置中,分支命令中不僅有分支預(yù)測(cè)信息還包含有表示過去的分支結(jié)果的分支歷史信息。而在執(zhí)行了分支命令時(shí),不僅考慮其執(zhí)行結(jié)果還要考慮該分支命令中所含的分支歷史信息來更新該分支命令的分支預(yù)測(cè)信息和分支歷史信息。
因而,由于不僅根據(jù)緊接前面的一次的執(zhí)行結(jié)果還根據(jù)更前面的執(zhí)行結(jié)果來進(jìn)行提前讀取命令,所以能實(shí)現(xiàn)較歷來高的命中率的分支預(yù)測(cè)。
這些分支預(yù)測(cè)信息和分支歷史信息不是作為分支預(yù)測(cè)表固定地被設(shè)置于信息處理裝置內(nèi)部而是設(shè)置在存貯手段所存貯的分支命令本身中,所以用于實(shí)現(xiàn)此分支預(yù)測(cè)的信息處理裝置中所需的硬件能以較小規(guī)模完成。
對(duì)此,前述分支歷史信息也可以是針對(duì)具有其分支歷史信息的分支命令的關(guān)于過去的多個(gè)分支結(jié)果的要點(diǎn)。
由此,分支歷史信息就能以很少的位數(shù)來反映更過去的分支結(jié)果,同時(shí)防止因緊接前面的例外的分支結(jié)果的影響而引起的分支預(yù)測(cè)的紊亂(命中率的降低),而進(jìn)行還考慮到更過去的分支結(jié)果的全面的分析預(yù)測(cè)。
例如,前述分析歷吏信息,對(duì)前述分支命令表示過去分支成立的頻率為“極多”、“多”、“少”、“極少”中的一個(gè),前述分支歷史信息生成手段在前述分支命令中所含的分支歷史信息表示“極少”、“少”、“多”中的一個(gè)且前述分支結(jié)果“成立”時(shí)生成分別表示“少”、“多”、“極多”的新的分支歷史信息;而在前述分支命令中所含的分支歷史信息表示“極多”、“多”、“少”中之一且前述分支結(jié)果“不成立”時(shí)生成分別表示“多”、“少”、“極少”的新的分支歷史信息。
由此,例如僅利用2位的分支歷史信息就能表示有關(guān)3次以上的分支結(jié)果的統(tǒng)計(jì)要點(diǎn)。
前且,前述預(yù)測(cè)信息更新手段僅在前述分支歷史信息表示“多”且前述分支結(jié)果為“成立”時(shí)生成表示“成立”的新的分支預(yù)測(cè)信息;僅在前述分支歷史信息表示“少”且前述分支結(jié)果為“不成立”時(shí)生成表示“不成立”的新的分支于測(cè)信息。
據(jù)此,由于在分支結(jié)果的歷史與分支預(yù)測(cè)信息的關(guān)系上進(jìn)行具有滯后的分支預(yù)測(cè),比起僅基于1位的分支預(yù)測(cè)信息的分支預(yù)測(cè)的情況,不僅使預(yù)測(cè)的命中率提高,而且還防止因短周期內(nèi)反復(fù)分支的成立與不成立所引起的分枝預(yù)測(cè)的混亂。
前述分支命令更新手段生成包含有由前述分支預(yù)測(cè)信息生成手段生成的分支預(yù)測(cè)信息和由前述分支歷史信息生成手段生成的分支歷史信息的新的分支命令,將該分支命令寫到所述存貯手段的適當(dāng)?shù)攸c(diǎn)上,作為前述的適當(dāng)?shù)攸c(diǎn)可以是存貯構(gòu)成生成前述新的分支命令的起源的分支命令的位置。
由此,分支命令的分支預(yù)測(cè)信息和分支歷史信息連同該分支命令(與除這些分支預(yù)測(cè)信息和分支歷史信息之外的分支命令的其他位同時(shí))被加以更新,所以與由存貯手段讀出作為對(duì)象的轉(zhuǎn)移命令加以變更后再寫回的步驟相比,能以較短的步驟更新分支預(yù)測(cè)信息和分支歷史信息。
前述存貯手段包含有存貯前述命令群的主存貯單元、存貯前述主存貯單元所存放的命令群的一部分的復(fù)制件的高速緩沖存貯單元、和在前述高速緩沖存貯單元的內(nèi)容被改寫時(shí)使前述主存貯單的內(nèi)容也反映該變更的高速緩沖控制手段,前述命令讀取手段從前述高速緩沖存貯單元讀出前述命令,前述分支命令更新手段能更新前述高速緩沖存貯單元所存貯的分支命令的分支預(yù)測(cè)信息和分支歷史信息。
由此,關(guān)于本發(fā)明的信息處理裝置由于只要更新能高速訪問的超高速緩沖存貯器上的分枝命令即可完成,所以執(zhí)行速度加快。
而前述預(yù)測(cè)信息更新手段能僅在前述歷史信息表示“極多”且前述分支結(jié)果為“成立”時(shí)生成表示“成立”的新的分支預(yù)測(cè)信息,僅在前述分支歷史信息表示“極少”且前述分支結(jié)果為“不成立”時(shí)生成表示“不成立”的新的分支預(yù)測(cè)信息。
由此,因?yàn)樯鲜鰷蟮某潭瘸蔀檩^強(qiáng),所以能實(shí)現(xiàn)適用于希望有力地抑制分支預(yù)測(cè)紊亂的系統(tǒng)程序的信息處理裝置。
而前述分支歷史信息對(duì)前述分支命令表示過去分支成立的頻率為“多”或“少”;前述分支歷吏信息生成手段僅在前述分支命令所含的分支歷史信息表示“少”且前述分支結(jié)果為“成立”時(shí)才生成表示“多”的新的分支歷史信息,而僅在前述分支命令所含的分支歷史信息表示“多”而前述分支結(jié)果為“不成立”時(shí)生成表示“少”的新的分支歷史信息;前述預(yù)測(cè)信息更新手段僅在前述分支歷史信息表示“多”而前述分支結(jié)果為“成立”時(shí)生成表示“成立”的新分支預(yù)測(cè)信息,僅在前述分支歷史信息表示“少”而前述分支結(jié)果為“不成立”時(shí)生成表示“不成立”的新分支預(yù)測(cè)信息。
由此,因?yàn)樯鲜鰷蟮某潭瘸蔀檩^弱,所以可能成為對(duì)程序的執(zhí)行結(jié)果敏感的分支預(yù)測(cè)、即動(dòng)態(tài)的分支預(yù)測(cè),同時(shí)因?yàn)榉种v史信息以很少的位數(shù)完成,而使定義命令組時(shí)的自由度增加。
而前述分支歷史信息對(duì)具有該分支歷史信息的分支命令能表示包括過去的分支的分支結(jié)果。
例如,前述分支歷史信息為表示緊接前面的和先前二次的分支結(jié)果的2位,前述分支歷史信息生成手段能利用執(zhí)行前述分支命令時(shí)的分支結(jié)果生成新的分支歷史信息。
由此,因?yàn)椴皇沁^去的多個(gè)分支結(jié)果的要點(diǎn)而是根據(jù)最新的各個(gè)的連續(xù)的分支結(jié)果進(jìn)行分支預(yù)測(cè),所以能實(shí)現(xiàn)進(jìn)行也考慮到例外的分支結(jié)果的周密的分支預(yù)測(cè)的信息處理裝置。
而且本發(fā)明不僅由硬件實(shí)現(xiàn),也可由軟件實(shí)現(xiàn)。
即就是,作為記錄有模擬進(jìn)行分枝預(yù)測(cè)提前讀出命令的微處器操作的程序的記錄媒體的特點(diǎn)在于,前述程序在計(jì)算機(jī)中執(zhí)行由預(yù)先存貯包含具有預(yù)測(cè)分支是否成立的分支預(yù)測(cè)信息和表示關(guān)于過去的分支結(jié)果的信息的分支歷史信息的分支命令的命令群的存貯手段讀出下一應(yīng)執(zhí)行命令的命令讀取步驟,對(duì)讀出的命令解碼確定是否為前述分支命令的命令解碼步聚,在經(jīng)解碼為前述命令是分支命令時(shí)根據(jù)該分支命令的分支預(yù)測(cè)信息讀出下一應(yīng)執(zhí)行命令的分支預(yù)測(cè)步聚,執(zhí)行被解碼的前述分支命令的執(zhí)行步驟,根據(jù)執(zhí)行前述分支命令時(shí)的分支結(jié)果和該分支命令中所含的分支歷史信息生成新的分支預(yù)測(cè)信息的分支預(yù)測(cè)信息生成步驟,根據(jù)執(zhí)行前述分支命令時(shí)的分支結(jié)果和該分支命令中所含的分支歷史信息生成新的分支歷史信息的分支歷史信息生成步驟,和將前述存貯手段中存放的前述分支命令的分支預(yù)測(cè)信息和分支歷史信息更新成由前述分支預(yù)測(cè)信息生成步驟生成的分支預(yù)測(cè)信息和由前述分支歷史信息生成步驟生成的分支歷史信息的分支命令更新步驟。
而作為記錄由計(jì)算機(jī)執(zhí)行的命令群的記錄媒體的特點(diǎn)還在于,前述命令群中包含具有預(yù)測(cè)分支是否成立的分支預(yù)測(cè)信息和表示有關(guān)過去的分支結(jié)果的信息的分支歷史信息的分支命令,前述分支預(yù)測(cè)信息為根據(jù)具有該分支預(yù)測(cè)信息的分支命令被前述計(jì)算機(jī)作最后執(zhí)行時(shí)的分支結(jié)果和分支歷史信息所生成的值,前述分支歷史信息為根據(jù)具有該分支歷史信息的分支命令被前述計(jì)算機(jī)最后執(zhí)行時(shí)的分支結(jié)果和分支歷史信息所生成的值,是對(duì)于該分支命令的有關(guān)過去的多個(gè)分支結(jié)果的要點(diǎn)。
作為記錄計(jì)算機(jī)執(zhí)行的命令群的記錄媒體的特點(diǎn)還可能是,前述命令群中包含具有預(yù)測(cè)分支是否成立的分支預(yù)測(cè)信息和表示關(guān)于過去的分支結(jié)果的信息的分支歷史信息的分支命令,前述分支預(yù)測(cè)信息為根據(jù)具有該分支預(yù)測(cè)信息的分支命令被前述計(jì)算機(jī)最后執(zhí)行時(shí)的分支結(jié)果和分支歷史信息生成的值,前述分支歷史信息為根據(jù)具有該分支歷史信息的分支命令被前述計(jì)算機(jī)最后執(zhí)行時(shí)的分支結(jié)果和分支歷史信息生成的值,表示對(duì)該分支命令的每個(gè)過去分支的分支結(jié)果。
由此而達(dá)到上述第二目的。
如以上所述,按照本發(fā)明能以小規(guī)模的硬件或軟件來實(shí)現(xiàn)、并能使高性能微處理器和虛擬機(jī)等進(jìn)行高命中率的分支預(yù)測(cè),它們的實(shí)用效果很高。
由下面結(jié)合附圖描述本發(fā)明具體實(shí)施方案的說明將更清楚理解本發(fā)明的這些以及其他的目的、優(yōu)點(diǎn)和特征。所列附圖為圖1表示歷來的分支命令格式;圖2為表示關(guān)于本發(fā)明的信息處理裝置的結(jié)構(gòu)的方框圖;圖3表示有關(guān)本發(fā)明的分支命令格式;圖4為表明該信息處理裝置的分支歷史信息生成器16和分支預(yù)測(cè)信息生成器17的輸入/輸出關(guān)系的真值表;圖5為該分支歷史信息生成器16的詳細(xì)電路圖;圖6為該分支預(yù)測(cè)信息生成器17的詳細(xì)電路圖;圖7為表示該分支命令的分支歷史信息和分支預(yù)測(cè)信息的更新算法的狀態(tài)躍遷圖;圖8為表示該信息處理裝置的分支命令更新器18的詳細(xì)結(jié)構(gòu)的方框圖;圖9表示該分支命令的分支預(yù)測(cè)信息、分支歷史信息和分支結(jié)果的關(guān)系;圖10為該信息處理裝置中的流水線處理的流程圖;圖11為表明關(guān)于該信息處理裝置的變型例1的分支命令的分支歷史信息和分支預(yù)測(cè)信息的更新算法的狀態(tài)躍遷圖;圖12為表明關(guān)于該信息處理裝置的變型例2的分支命令的分支歷史信息和分支預(yù)測(cè)信息的更新算法的狀態(tài)躍遷圖;圖13為表明關(guān)于該信息處理裝置的變型例3的分支命令的分支歷史信息和分支預(yù)測(cè)信息的更新算法的真值表;和圖14為表明關(guān)于該變型例3的分支命令的分支歷史信息和分支預(yù)測(cè)信息的更新算法的狀態(tài)躍遷圖。
下面參照附圖對(duì)關(guān)于本發(fā)明的信息處理裝置的實(shí)施形態(tài)加以說明。
圖2為表示關(guān)于本發(fā)明的信息處理裝置100的方框圖。
本裝置100為順序?qū)︻A(yù)先準(zhǔn)備的32位固定長(zhǎng)的命令進(jìn)行讀取、解碼、執(zhí)行的處理系統(tǒng),由主存貯器9、高速緩存單元11、命令讀取器12、命令寄存器13、命令解碼器14、命令執(zhí)行器15、地址控制器8、程序計(jì)數(shù)器群10、地址生成器19、分支歷史信息生成器16、分支預(yù)測(cè)信息生成器17和分支命令更新器18組成。
這些結(jié)構(gòu)要素8~19均與圖中未表示出的時(shí)鐘信號(hào)作同步操作。
而結(jié)構(gòu)要素12~18構(gòu)成4級(jí)的流水線。即命令讀取器12構(gòu)成流水線的讀取(IF)階段,命令寄存器13和命令解碼器14構(gòu)成流水線的解碼(DEC)階段,命令執(zhí)行器15、分支歷史信息生成器16、分支預(yù)測(cè)信息生成器17和分支命令更新器18構(gòu)成流水線的執(zhí)行(EX)階段,而命令執(zhí)行器15和分支命令更新器18構(gòu)成流水線的存貯器存取(MEM)階段,各階段中的處理在一時(shí)鐘周期內(nèi)獨(dú)立且并行地進(jìn)行。
主存貯器9為DRAM等,存放作為本裝置100的執(zhí)行對(duì)象的命令序列(程序)。此程序中包含本裝置100中所特有的分支命令。
圖3表示該分支命令的格式。
分支命令20由13位的操作碼20a、1位的分支預(yù)測(cè)信息20b、2位的分支歷史信息20c和16位的分支目的地地址20d構(gòu)成。
操作碼20a表示用于識(shí)別此命令的操作代碼和分支條件等。
分支預(yù)測(cè)信息20b預(yù)測(cè)隨后此分支命令執(zhí)行時(shí)的分支是否成立。具體的說,此分支預(yù)測(cè)信息20b與預(yù)測(cè)內(nèi)容之間的關(guān)系如以下這樣分支預(yù)測(cè)信息20b為“0”時(shí)預(yù)測(cè)分支不成立;分支預(yù)測(cè)信息20b為“1”時(shí)預(yù)測(cè)分支成立。
分支歷史信息20c相當(dāng)于歸納此分支命令的過去的多個(gè)分支結(jié)果的信息(統(tǒng)計(jì)匯總的信息)。具體地說,此分支歷史信息20c與過去分支成立的頻率(與不成立時(shí)相比較的頻率)之間有上列這樣的關(guān)系分支歷史信息20c為“00”、“01”、“10”和“11”時(shí)分別表示“極少”、“少”、“多”和“極多”。
分支目的地地址20d表示分支成立時(shí)應(yīng)分支的地址、即后面應(yīng)執(zhí)行命令被放置的主存貯器9上的地址。而在分支不成立時(shí),下面應(yīng)執(zhí)行的命令為被置于緊接此分支命令之后的命令。
高速緩存單元11用于加速命令讀取器12向主存貯器9的訪問,由高速緩沖存貯器11a、標(biāo)記存貯器11b和高速緩存控制器11c構(gòu)成。
高速緩沖存貯器11a為SRM等,是以被叫做高速緩存塊的單位存放被置于主存貯器9中的程序的一部分的高速存貯器。標(biāo)記存貯器11b存貯由該高速緩存塊的地址等組成的標(biāo)記目錄。
高速緩存控制器11c通過將由命令讀取器12輸出的地址與標(biāo)記存貯器11b的內(nèi)容進(jìn)行比較來檢測(cè)高速緩存的有未命中,在命中時(shí)使命令讀取器12對(duì)高速緩沖存貯器11a的訪問成為有效。另一方面,在未命中時(shí)則由LRU(Least RacentlyUsed最近應(yīng)用的)算法來更換高速緩存塊。而在改寫高速緩存塊時(shí),以寫回方式將該高速緩存塊寫入主存貯器9,以保持高速緩沖存貯器11a與主存貯器9內(nèi)容的一貫性。
命令讀取器12提前讀取隨后應(yīng)解碼、實(shí)行的命令,將從讀取用命令計(jì)數(shù)器10a送出的讀取地址輸出給高速緩存單元11,從高速緩沖存貯器11a讀出對(duì)應(yīng)于該地址的命令并暫時(shí)保存于內(nèi)部命令緩沖器12a中。命令緩沖器12a為保存提前取出的一個(gè)命令的寄存器。
命令寄存器13為保存作為解碼對(duì)象的一個(gè)命令的寄存器,在下一時(shí)鐘周期讀出命令緩沖器12a中提前取得的命令,在解碼期間保持該命令。圖2中表示命令寄存器13中保持分支命令時(shí)的存貯內(nèi)容。
命令解碼器14由存貯微程序的ROM等構(gòu)成,對(duì)命令寄存器13中所保持的命令的操作碼13a進(jìn)行解碼,將其結(jié)果作為控制信號(hào)141輸出劑命令執(zhí)行器15。當(dāng)解碼對(duì)象是分支命令時(shí),通過信號(hào)線142將該分支命令的分支預(yù)測(cè)信息13b通知命令執(zhí)行器15和地址控制器8。
地址控制器8根據(jù)來自命令解碼器14和命令執(zhí)行器15的通知控制地址生成器19和程序計(jì)數(shù)器群10,由此來更新構(gòu)成程序計(jì)數(shù)數(shù)器群10的3個(gè)計(jì)數(shù)器(讀取用命令計(jì)數(shù)器10a、解碼用命令計(jì)數(shù)器10b、執(zhí)行用命令計(jì)數(shù)器10c)的值。
結(jié)果,在讀取用命令計(jì)數(shù)器10a中就保持有存放在命令緩存器12a中的命令被安置在存貯器9上的地址(檢索地址),在解碼用命令計(jì)數(shù)器10b中保持有保存在命令寄存器13中的命令被安置在存貯器9上的地址(解碼地址),在執(zhí)行用命令計(jì)數(shù)器10c中保持有命令執(zhí)行器15中實(shí)行的命令被安置在存貯器9上的地址(執(zhí)行地址)。
地址生成器19由ALU和選擇器等構(gòu)成,在地址控制器8的控制下,對(duì)程序計(jì)數(shù)器群10的各計(jì)數(shù)器10a~10c進(jìn)行增量,將分支目的地地址13d寫入讀取用命令計(jì)數(shù)器10a,并使之無效。
命令執(zhí)行器15根據(jù)來自命令解碼器14的控制信號(hào)141對(duì)內(nèi)部包含的通用寄存器和包含運(yùn)算器等的各結(jié)構(gòu)要素進(jìn)行控制,執(zhí)行對(duì)應(yīng)于各命令的運(yùn)算和數(shù)據(jù)傳送等。
并且,命令執(zhí)行器15在執(zhí)行的命令為分支命令時(shí)通過信號(hào)線151將該執(zhí)行結(jié)果(分支是否成立)通知分支歷史信息生成器16和分支預(yù)測(cè)信息生成器17,同時(shí)為進(jìn)行與分支預(yù)測(cè)不符時(shí)的補(bǔ)償處理(傳送到命令寄存器13的命令的無效化和根據(jù)實(shí)行結(jié)果對(duì)原來的分支目的地命令的檢取)將該執(zhí)行結(jié)果與分支預(yù)測(cè)信息13b相比較,并將其結(jié)果(預(yù)測(cè)命中/不符)通過信號(hào)線152通知命令解碼器14和地址控制器8。
分支歷史信息生成器16在命令執(zhí)行器15執(zhí)行分支命令時(shí),根據(jù)該分支命令中所含的分支歷史信息13c及其執(zhí)行結(jié)果(分支是否成立)判斷是否應(yīng)變更該分支歷史信息,在應(yīng)變更時(shí)生成新的分支歷史信息,將該判斷結(jié)果(“應(yīng)維持原樣”還是“作更新”)和新的分支歷史信息輸出到分支命令更新器18。
分支預(yù)測(cè)信息生成器17在命令執(zhí)行器15執(zhí)行分支命令時(shí)根據(jù)該分支命令中所含的分支歷史信息13c及其執(zhí)行結(jié)果(分支是否成立)判斷是否應(yīng)變更此分支預(yù)測(cè)信息,在應(yīng)變更時(shí)生成新的分支預(yù)測(cè)信息,將此判斷結(jié)果(“應(yīng)維持原樣”還是“作更新”)和新的分支預(yù)測(cè)信息輸出到分支命令更新器18。
圖4為表明分支歷史信息生成器16和分支預(yù)測(cè)信息生成器17的輸入輸出的關(guān)系的真值表。亦即,輸入值欄表示各自輸入到分支歷史信息生成器16和分支預(yù)測(cè)信息生成器17的分支歷史信息H1H0和執(zhí)行結(jié)果X的所有組合,輸出值的分支歷史信息N1N0欄表示針對(duì)左欄的各輸入值的組合分支歷史信息生成器16輸出的新的分支歷史信息,輸出的分支預(yù)測(cè)信息F欄表示針對(duì)左欄的各輸入值的組合分支預(yù)測(cè)信息生成器17輸出的新的分支預(yù)測(cè)信息,圖中的符號(hào)“-”表示其值沒有意義,即分支信息生成器16(或分支預(yù)測(cè)信息生成器17)利用另外的信號(hào)線將分支歷史信息(或分支預(yù)測(cè)信息)“應(yīng)維持原樣”的意思通知分支命令更新器18。
圖5表示分支歷史信息生成器16的詳細(xì)電路。
分支歷史信息生成器16是作為針對(duì)3位的輸入信號(hào)(分支歷史信息H1H0和執(zhí)行結(jié)果)將3位的信號(hào)(分支歷史信息N1N0和表示“應(yīng)維持原樣”意思的信息M1)輸出到分支命令更新器18的組合邏輯電路而實(shí)現(xiàn)的。
圖6表示分支預(yù)測(cè)信息生成器17的詳細(xì)電路。
分支預(yù)測(cè)信息生成器17是作為針對(duì)3位的輸入信號(hào)(分支歷史信息H1H0和執(zhí)行結(jié)果X)將2位的信號(hào)(分支預(yù)測(cè)信息F和表示“應(yīng)原樣維持”此信息的意思的信息M0)輸出給分支預(yù)測(cè)更新器18的組合邏輯電路實(shí)現(xiàn)。而上述信息M1和M0在為“應(yīng)原樣維持”上述各信息時(shí)成為邏輯作“1”。
圖7是以分支歷史信息20c的值作為狀態(tài)的分支命令20的狀態(tài)躍遷圖,同時(shí)也是表示圖4中所示的分支歷史信息和分支預(yù)測(cè)信息的更新算法的圖形。
圖中的4個(gè)橢園相當(dāng)于取2位的分支歷史信息所得的值(狀態(tài)),實(shí)線躍遷箭頭線表示執(zhí)行結(jié)果為分支成立“1”時(shí)的躍遷方向,虛線躍遷箭頭表示執(zhí)行結(jié)果為分支不成立“0”時(shí)的躍遷方向。為明確表示分支預(yù)測(cè)信息被輸出(變更)的情況在躍遷箭頭線30a、30b的旁邊附加說明。
例如,當(dāng)執(zhí)行前分支歷史信息為“10”(過去分支成立的頻率“多”)而該分支命令的執(zhí)行結(jié)果為成立“1”時(shí),分支歷史信息生成器16將新的分支歷史信息“11”(過去分支成立的頻度“極多”)輸出到分支命令更新器18,同時(shí)分支預(yù)測(cè)信息生成器17將新的分支預(yù)測(cè)信息“1”(成立)輸出給分支命令更新器18。
分支命令更新器18根據(jù)來自分支歷史信息生成器16的信號(hào)(N1、N0、M1)、來自分支預(yù)測(cè)信息生成器17的信息(F、MO)和執(zhí)行用命令計(jì)數(shù)器10c的值,更新被置于該實(shí)用命令計(jì)數(shù)器10c的值所指明的超高速緩沖存貯器11a(或主存貯器9)上的地址上的分支命令的高位16畢特(操作碼20a、分支預(yù)測(cè)信息20b和分支歷史信息20c)。但在接收到“應(yīng)照原樣維持”來自分支歷史信息生成器16和分支預(yù)測(cè)信息生成器17雙方的各信息的意思的通知和接收到由命令執(zhí)行器15執(zhí)行的命令不是分支命令的意思的通知時(shí),分支命令更新器18對(duì)上述主存貯器9(或高速緩沖存貯器11a)不發(fā)生任何動(dòng)作。
圖8為表示分支命令更新器18詳細(xì)結(jié)構(gòu)的方框圖。
分支命令更新器18由分支命令存貯單元18a、更新判斷單元18b、命令生成單元18c和地址門單元18d構(gòu)成。
分支命令存貯單元18a是在每次命令寄存器13中存入新的命令時(shí)取得該命令的高位16畢特(如該命令為分支命令時(shí)即為由操作碼13a、分支預(yù)測(cè)信息13b和分支歷史信息13c組成的16畢特)進(jìn)行存貯的排隊(duì)緩存器,保存解碼級(jí)和執(zhí)行級(jí)中二個(gè)命令的各自的高位16畢特。
更新判斷單元18b從分支歷史信息生成器16取得關(guān)于分支歷史信息有無更新的信號(hào)M1、從分支預(yù)測(cè)信息生成器17取得關(guān)于分支預(yù)測(cè)信息存無更新的信號(hào)M0,根據(jù)各自的信號(hào)控制命令生成單元18c中新所分支命令的生成,并控制是否允許由地址門單元18d輸出地址。
命令生成單元18c對(duì)分支命令存貯單元18a中存貯的二個(gè)16畢特命令中以前存放的(這相當(dāng)于緊前面執(zhí)行的分支命令的高位16畢特部分)寫上從分支歷史信息生成器16和分支預(yù)測(cè)信息生成器輸出的新分支歷史信息N1N0和分析予預(yù)測(cè)信息F,由此來生成超高速緩沖存貯單元11(或主存貯器9)上的應(yīng)更新的分支命令的高位16畢特部分。但是,在從更新判斷單元18b接收到“應(yīng)照原樣維持”意思的信號(hào)(M1和M0)時(shí),不更新對(duì)應(yīng)于該信號(hào)的分支歷史信息和(或)分支預(yù)測(cè)信息。
地址門單元18d在輸入到更新判斷單元18b的二個(gè)信號(hào)M1、M0中至少一個(gè)表示“更新了”的意思時(shí)將執(zhí)行用命令計(jì)數(shù)器10c的值輸出進(jìn)超高速緩沖存貯單元11。
由此,分支更新器18在有必要改變由命令執(zhí)行器15執(zhí)行的分支命令的分支預(yù)測(cè)信息20b和分支歷史信息20c的至少一方時(shí),以在被置于超高速緩沖存貯器11a(或主存貯器9)的該分支命令的高位16畢特部分上寫以新的16畢特來更新分支命令20自身。
這里,對(duì)由上述分支歷史信息生成器16、分支預(yù)測(cè)信息生成器17和分支命令更新器18取得的分支歷史信息和分支預(yù)測(cè)信息的具體變化,按照?qǐng)D7的狀態(tài)躍遷圖作如下例示。
現(xiàn)在假定重復(fù)執(zhí)行分支歷史信息20c為“00”分支預(yù)測(cè)信息20b為“0”的分支命令20。這樣,在第一次的執(zhí)行結(jié)果為分支成立時(shí),分支歷史信息20c被更新為“01”,分支預(yù)測(cè)信息20b不變。
在第二次的執(zhí)行結(jié)果為分支成立時(shí),分支歷史信息20c被更新為“10”,分支預(yù)測(cè)信息20b不變。
在第三次的執(zhí)行結(jié)果為分支成立時(shí),分支歷吏信息20c被更新為“11”,分支預(yù)測(cè)信息20b被更新為“1”。
在第四次執(zhí)行結(jié)果為分支不成立時(shí),分支歷史信息20c被更新為“10”,分支預(yù)測(cè)信息20不變化。
在第五次執(zhí)行結(jié)果為分支不成立時(shí),分支歷史信息20c為更新為“01”,分測(cè)預(yù)測(cè)信息20b不變化。
在第六次的執(zhí)行結(jié)果為分支不成立時(shí),分支歷史信息20c被更新為“00”,分支預(yù)測(cè)信息20b被更新為“0”。
如在將縱軸取分支預(yù)測(cè)信息20b的值、橫軸取分支歷史信息20c的值的座標(biāo)系統(tǒng)中對(duì)以上例示進(jìn)行圖示,即成為圖9中所示圖形。
如按此圖形判斷那樣,在分支成立連續(xù)時(shí)分支預(yù)測(cè)信息20b從“0”變化到“1”時(shí)的分支歷史信息20c的躍遷地點(diǎn)與在分支不成立連續(xù)時(shí)分支預(yù)測(cè)信息20b由“1”變到“0”時(shí)的分支歷史信息20c的躍遷地點(diǎn)不一致。亦即,因分支歷史信息20c變化的方向使分支預(yù)測(cè)信息20b反向的閥值不同。這可看作是,將分支結(jié)果的歷史作為輸入時(shí)確定分支預(yù)測(cè)信息20b的映象中存在著滯后。亦即意味著,只要過去分支成立的頻率與不成立的頻率中沒有顯著差別,就尊重(保持)當(dāng)前的分支預(yù)測(cè)。
由于這種滯后能避免因例外地發(fā)生的分支而引起的分支預(yù)測(cè)信息20b的被打亂的不正常情況和在分支成立與不成立重復(fù)時(shí)的分支預(yù)測(cè)的全部不適應(yīng)的不正常,特別是使控制系統(tǒng)的程序中的分支預(yù)測(cè)命中率增高。
下面對(duì)以上這樣構(gòu)成的信息處理裝置100的操作以執(zhí)行具體的分支命令的情況為例加以說明。
圖10表示信息處理裝置100中流水線處理的流程圖。
現(xiàn)在,假定存放在主存貯器9中的分支命令的分支預(yù)測(cè)信息20b和分支歷史信息20c的初始值分別為“0”和“01”。這些初始值是依靠對(duì)源程序的靜態(tài)解析得的編譯程序所生成的。由主存貯器9讀出含有該分支命令的高速緩存程序塊并保存進(jìn)高速緩沖存貯器11a中。
(1)IF級(jí)命令讀取器12在時(shí)鐘周期1的后半(1b)中從高速緩沖存貯器11a讀出該分支命令并存入命令緩存器12a讀出該分支命令并存入命令緩存器12a。
(2)DEC級(jí)在時(shí)鐘周期2的前半部(2a)中,先前被讀入命令緩存器12a的分支命令被傳送進(jìn)寄存器13,由命令解碼器14解碼。
具體說,命令解碼器14通過對(duì)保存在命令寄存器13中的操作碼13a進(jìn)行解碼來判斷解碼對(duì)象為分支命令,將為進(jìn)行分支條件的判斷的控制信號(hào)輸出到命令執(zhí)行器15,同時(shí)向地址控制器8通知保存在命令寄存器13中的分支預(yù)測(cè)信息13b。
地址控制器8,由于所通知的分支預(yù)測(cè)信息13b為“0”,此命令的執(zhí)行結(jié)果預(yù)測(cè)分支不成立,由控制地址生成器19使檢取用命令計(jì)數(shù)器10a的值增量。其值(檢索地址)徑命令瀆取器12被輸出到高速緩存單元11。
其結(jié)果,在此時(shí)鐘周期2的后半部(2b)中的IF級(jí)此分支命令后續(xù)的命令被命令讀取器12讀出并被存入命令緩存器12a中。這樣,盡管是在分支命令被執(zhí)行之前,也根據(jù)分支命令所具有的分支預(yù)測(cè)信息來提前讀出下一命令。
(3)EX級(jí)在接續(xù)的時(shí)鐘周期3的前半部(3a)中,命令執(zhí)行器15根據(jù)來自命令解碼器14的控制信號(hào)進(jìn)行該分支命令的條件判斷,將其執(zhí)行結(jié)果(分支成立與否)通知分支歷史信息生成器16和分支預(yù)測(cè)信息生成器17,同時(shí)將其預(yù)測(cè)結(jié)果(有未命中)通知命令解碼器14和地址控制器8。
而后在此時(shí)鐘周期3的后半部(3b)中,分支歷史信息生成器16和分支預(yù)測(cè)信息生成器17在接受上述通知的同時(shí)獲取命令寄存器13中所存放的分支歷史信息13c,根據(jù)圖7中所示的躍遷分別生成新的分支歷史信息和分支預(yù)測(cè)信息(或照原樣),將其結(jié)果通知分支命令更新器18。接收到新的分支歷史信息和(或)分支預(yù)測(cè)信息的通知的分支命令更新器18生成具有這些信息的新分支命令的高位16畢特。
而在上述預(yù)測(cè)未命中時(shí),在此時(shí)鐘周期3的后半部(3a)由命令執(zhí)行器15和命令讀取器12進(jìn)行補(bǔ)救處理(傳送到命令寄存器13的命令的無效化和根據(jù)執(zhí)行結(jié)果對(duì)原來的分支命令的讀取)。
(4)MEM級(jí)在時(shí)鐘周期4,分支命令更新器18在從分支歷史信息生成器16和分支預(yù)測(cè)信息生成器17接收到將分支預(yù)測(cè)信息20b和分支歷史信息20c的至少一個(gè)“更新的”的通知時(shí),將緊接前面的時(shí)鐘周期3b中生成的分支命令(的高位16畢特部分)寫在表示存貯在執(zhí)行用命令計(jì)數(shù)器10c中的執(zhí)行地址的高速緩沖存貯器11a(或主存貯器9)上的分支命令上。
這樣就使得含有被更新的高速緩沖存貯器11a上的分支命令的高速緩存程序塊在從高速緩沖存貯器11a被消去以前由高速緩存控制器11c寫入在對(duì)應(yīng)的主存貯器9上的位置上。由此,即使在此分支命令再次從存貯器9讀出加以執(zhí)行時(shí),此分支命令中所含的分支預(yù)測(cè)信息20b和分支歷史信息20c也被保證是基于過去的分支結(jié)果的有效信息。
如以上所述,在本裝置100中,各分支命令的分支歷史信息和分支預(yù)測(cè)信息不是專用的存貯表而是保持在其分支命令自身中。因而與將多個(gè)分支命令的分支歷史信息和分支預(yù)測(cè)信息固定地設(shè)置在信息處理裝置100內(nèi)部的情況相比,信息處理裝置100中所需的硬件規(guī)模很少即可。
而在本裝置100中,分支命令不僅是1位的分支預(yù)測(cè)信息,還具有表示多次分支結(jié)果的要點(diǎn)的2位的分支歷史信息,根據(jù)此分支歷史信息和緊接前面的分支結(jié)果進(jìn)行具有滯后的分支預(yù)測(cè)。從而,與僅基于1位的分支預(yù)測(cè)信息的分支預(yù)測(cè)情況相比,不僅僅預(yù)測(cè)命中率提高,而能夠進(jìn)行不易于受到例外發(fā)生的分支的不良影響的可靠的分支預(yù)測(cè)。
在本實(shí)施形態(tài)中,主存貯器9為DRAM等,而高速緩沖存貯器11a為由SRAM等構(gòu)成,但本發(fā)明并不限于此。
例如主存貯器9亦可以是硬盤等非易失性存貯裝置。因此,即使在裝置電源被切斷時(shí),由于基于至今的執(zhí)行結(jié)果的分支預(yù)測(cè)信息20b和分支歷史信息20c被保存在硬盤等之中,在其后再次執(zhí)行時(shí),開始已經(jīng)沒有積累的分支歷史信息的有效的分支預(yù)測(cè)。
下面表示上述實(shí)施形態(tài)的信息處理裝置100的變型示例。
在上述實(shí)施形態(tài)中,如圖7中所示,預(yù)測(cè)分支信息被設(shè)定為僅在分支歷史信息從“多”躍遷到“極多”時(shí)才為“成立”,而在分支歷史信息從“少”躍遷到“極少”時(shí)為“不成立”。
這如同在圖11的狀態(tài)躍遷圖中的躍遷箭頭線31a、31b上所增加注明的那樣,可作成為分支預(yù)測(cè)信息僅在分支歷史信息成為滯留在“極多”的情況時(shí)(即,分支歷史信息為“極多”的分支命令的執(zhí)行結(jié)果為“成立”的情況)被設(shè)定為“成立”,而在分支歷史信息成為滯留于“極少”的情況(即,在分支歷史信息為“極少”的分支命令的執(zhí)行結(jié)果為“不成立”的情況)時(shí)被設(shè)定為“不成立”,其他的躍遷情況則無變化,變形成為更新算法。這通過變更構(gòu)成分支預(yù)測(cè)信息生成器17的組合邏輯電路中的連接線能很容易實(shí)現(xiàn)。
此變型例1,如比較圖7和圖11就可判斷那樣,相當(dāng)于上述滯緩的程度較之上述實(shí)施形態(tài)的情況更增強(qiáng)的情況。亦即,對(duì)于實(shí)際所產(chǎn)生的分支結(jié)果成立與否的偏離,分支預(yù)測(cè)信息很難變化。
由此來實(shí)現(xiàn)適用于希望加強(qiáng)抑制分支預(yù)測(cè)信息的紊亂的系統(tǒng)和不希望分支預(yù)測(cè)信息的變化的系統(tǒng)、例如希望維持能由靜態(tài)信息而不是執(zhí)行時(shí)的動(dòng)態(tài)現(xiàn)象確定的初始值那樣的系統(tǒng)的信息處理裝置。
上述實(shí)施形態(tài)中分支歷史信息為2位,但也容易將其變型為1位。
圖12為表示將分支歷史信息作成1位時(shí)的分支歷史信息的更新算法的狀態(tài)躍遷圖。分支歷史信息屬于“多”和“少”中之一的狀態(tài);各狀態(tài)表示此分支命令的緊接前面的執(zhí)行結(jié)果分別為“成立”、“不成立”。分支預(yù)測(cè)信息,如躍遷箭頭線32a上所付加的注明那樣,僅在分支歷史信息成為滯留于“多”的情況(即分支歷史信息為“多”的分支命令的執(zhí)行結(jié)果為“成立”的情況)被設(shè)定為“成立”,而如躍遷箭頭線32b上付加標(biāo)注的那樣,僅在分支歷史信息成為滯留于“少”的情況(即,分支歷史信息為“少”的分支命令的執(zhí)行結(jié)果成為“不成立”的情況)被設(shè)定為“不成立”,其他的躍遷情況下不變化。從而,分支預(yù)測(cè)信息雖然在分支命令的執(zhí)行結(jié)果為重復(fù)成立與不成立時(shí)不變化,但在同一結(jié)果連續(xù)時(shí)則被設(shè)定為與其結(jié)果相對(duì)應(yīng)的值。
這樣的變型例2,不用說能減少實(shí)施形態(tài)的分支歷史信息生成器16和分支預(yù)測(cè)信息生成器17中的邏輯電路,而容易地以變更連接線來實(shí)線。
此變型例2如與圖7與圖12相比較所作判斷那樣,相當(dāng)于減弱上述的滯后程度的情況。亦即,與上述實(shí)施形態(tài)的情況相比,分支預(yù)測(cè)信息的變化成為對(duì)分支歷史信息的變化敏感。因而,比起上述實(shí)施形態(tài)的信息處理裝置100,能實(shí)現(xiàn)更適應(yīng)于對(duì)程序的執(zhí)行結(jié)果敏感的、即例外處理發(fā)生多的實(shí)時(shí)性強(qiáng)的系統(tǒng)的信息處理裝置。
而由于此變型例2中分支歷吏信息只要1位就夠了,所以減小了編碼規(guī)模和增大了定義命令組(操作碼的映象)情況的自由度。
上述實(shí)施形態(tài)及二個(gè)變型例為執(zhí)行具有對(duì)于過去的分支結(jié)果的統(tǒng)計(jì)要點(diǎn)即分支歷史信息的分支命令的信息處理裝置,但也易于將之變型成執(zhí)行具有由對(duì)應(yīng)于各個(gè)過去的分支的位的集合組成的分支歷史信息的分支命令的信息處理裝置。
亦即,通過改變上述實(shí)施形態(tài)的信息處理裝置100中的分支歷史信息生成器16和分支預(yù)測(cè)信息生成器17的功能(輸入/輸出變換算法),就能實(shí)現(xiàn)執(zhí)行將按原樣表示該分支命令的過去多次的執(zhí)行結(jié)果的位的集合作為分支歷史信息而保存的分支命令的信息處理裝置。
圖13為表示由關(guān)于變型例3的信息處理裝置的分支歷史信息生成器和分支預(yù)測(cè)信息生成器進(jìn)行的更新算法的真值表,與上述實(shí)施形態(tài)中圖4相對(duì)應(yīng)。
在此變型例3中,與上述實(shí)施形態(tài)不同,分支命令具有2位的分支歷史信息20c,低位畢特H0作為該分支命令的緊接前面的執(zhí)行結(jié)果(“1”表示“成立”,“0”表示“不成立”),高位畢特H1表示該分支命令二次前的執(zhí)行結(jié)果。
此變型例3的分支歷吏信息生成器為2位的排隊(duì)緩存器,當(dāng)從命令執(zhí)行器15通知新的執(zhí)行結(jié)果X時(shí),即將目前保存的2位H1H0向高位方向位移,將此新的執(zhí)行結(jié)果X輸入到低位N0,由此生成新的分支歷史信息N1N0。
而變型例3的分支預(yù)測(cè)信息生成器在原則上是將分支命令執(zhí)行緊前面的2位的分支歷史信息H1H0與從命令執(zhí)行器15通知的執(zhí)行結(jié)果X組合成的合計(jì)3位的值中多的邏輯值(例如,H1H0=01而X=1時(shí)的“1”)作為新的分支預(yù)測(cè)信息F而生成,作為例外的是,僅在取此3位的H1H0X相互反相的邏輯值時(shí)將該反相繼續(xù)那樣的邏輯值(在H1H0X=010時(shí)的“1”,H1HOX=101時(shí)的“0”)生成作為新的分支預(yù)測(cè)信息F。這就意味著,原則上雖然是采用過去3次執(zhí)行結(jié)果中的多的那種結(jié)果(“成立”或“不成立”)作為后面的分支預(yù)測(cè),但僅限于過去3次的執(zhí)行結(jié)果為交替地重復(fù)“成立”和“不成立”的情況,作為例外,作為繼續(xù)該重復(fù)并進(jìn)行分支預(yù)測(cè)。
圖14為表示變型例3的分支歷史信息和分支預(yù)測(cè)信息的更新算法的狀態(tài)躍遷圖。本圖對(duì)應(yīng)于上述實(shí)施形態(tài)的圖7,但在躍遷箭頭線上付加表明的數(shù)值表示引起該躍遷的原因(即,該分支命令的執(zhí)行結(jié)果X的值)和伴隨該躍遷從分支預(yù)測(cè)信息生成器輸出的新分支預(yù)測(cè)信息的值。
例如,現(xiàn)在假定重復(fù)執(zhí)行分支歷史信息20c為“00”、分支預(yù)測(cè)信息20b為“0”的分支命令20。
這樣,在第一次的執(zhí)行結(jié)果為分支成立(未命中)時(shí)分支歷史信息20c被更新為“01”,分支預(yù)測(cè)信息20b被設(shè)定為“0”(不變化);在第二次的執(zhí)行結(jié)果為分支不成立(命中)時(shí)分支歷史信息20c被更新為“10”,分支預(yù)測(cè)信息20b變更為“1”;在第三次的執(zhí)行結(jié)果為分支成立(命中)時(shí)分支歷史信息20c被更新為“01”,分支預(yù)測(cè)信息20b變更為“0”;在第四次的執(zhí)行結(jié)果為分支不成立(命中)時(shí)分支歷史信息20c被更新為“10”,分支預(yù)測(cè)信息20b被變更為“1”。
由此,利用關(guān)于變型例3的信息處理裝置,原則上是根據(jù)過去的分支結(jié)果進(jìn)行分支預(yù)測(cè),但在分支的成立與不成立交替地重復(fù)的情況,與上述實(shí)施形態(tài)不同,由于以作為重復(fù)這種翻轉(zhuǎn)現(xiàn)象來進(jìn)行分支預(yù)測(cè),所以即使在這樣的特殊程序的流程中分支預(yù)測(cè)也能命中。
上面對(duì)關(guān)于本發(fā)明的信息處理裝置是表示為一個(gè)實(shí)施形態(tài)和三個(gè)變型例,但本發(fā)明并不限定于這些。
對(duì)于為確定分支預(yù)測(cè)信息的條件(分支歷史信息的值與分支結(jié)果的組合)、更新分支歷史信息的算法、分支歷史信息的位數(shù)等,不用說能很容易地以組合所取得的值作成其他的變型例。
例如也可以分配以8級(jí)表示的更深的分支歷史的要點(diǎn)的三位來作為分支歷史信息。由此就能進(jìn)行命中率更高的規(guī)定更細(xì)小的分支預(yù)測(cè)。
但是在用于一個(gè)分支命令所占的分支預(yù)測(cè)的位數(shù)很多時(shí),由于在定義命令組中的自由度等上面必須付出犧牲,這些位數(shù)必須由預(yù)測(cè)的命中率與應(yīng)設(shè)置的命令的種類的折衷選擇來確定。
而上述實(shí)施形態(tài)和變型例的構(gòu)成要素雖然是全部由邏輯電路實(shí)現(xiàn)作為前提說明的,但本發(fā)明不僅僅由硬件來實(shí)現(xiàn)也能由軟件來實(shí)現(xiàn),這是不言而喻的。
具體說,在上述實(shí)施形態(tài)的信息處理裝置100的構(gòu)成要素中,可以將存放命令和數(shù)值的存貯手段9、11a、11b、12a、13、10a~10c等分配成變數(shù)和數(shù)據(jù)領(lǐng)域,也可以采用編程語言描述其余的控制手段8、11c、12、14~19等的功能。由此,關(guān)于本發(fā)明的信息裝置即作為通用計(jì)算機(jī)系統(tǒng)執(zhí)行的模擬程序和虛擬機(jī)來實(shí)現(xiàn)。為實(shí)現(xiàn)關(guān)于這樣的本發(fā)明的信息處理裝置的程序可存放在CD-ROM等的記錄媒體中加以分配、流通。
而上述實(shí)施形態(tài)和變型例中的分支命令,與圖1中所示的歷來的命令格式不同,具有例如如圖3中所示的命令格式那樣的稱為分支歷史信息的本發(fā)明因有的信息。具有這樣的特征的結(jié)構(gòu)的分支命令是本發(fā)明中固有的,而含有這樣的分支命令的命令群(程序),不用說也能與上述程序同樣地通過軟盤等的記錄媒體和通信線路進(jìn)行分配、流通。
權(quán)利要求
1.一種依次執(zhí)行命令的信息處理裝置,其特征是包含存貯手段,預(yù)先存貯含有具有預(yù)測(cè)分支是否成立的分支預(yù)測(cè)信息和表示關(guān)于過去的分支結(jié)果的信息的分支歷史信息的分支命令的命令群;命令讀取手段,從前述存貯手段依次讀出應(yīng)執(zhí)行的命令;命令解碼手段,解釋所讀出命令是否為前述分支命令;命令讀取控制手段,在前述命令被解碼為分支命令時(shí)根據(jù)該分支命令的分支預(yù)測(cè)信息控制前述命令讀取手段使之順次讀出應(yīng)執(zhí)行的命令;執(zhí)行手段,執(zhí)行被解碼的前述分支命令;分支預(yù)測(cè)信息生成手段,根據(jù)執(zhí)行前述分支命令時(shí)的分支結(jié)果和該分支命令中所含的分支歷史信息生成新的分支預(yù)測(cè)信息;分支歷史信息生成手段,根據(jù)執(zhí)行前述分支命令時(shí)的分支結(jié)果和該分支命令中所含的分支歷史信息生成新的分支歷史信息;和分支命令更新手段,將前述存貯手段所存放的前述分支命令的分支預(yù)測(cè)信息和分支歷史信息更新成為由前述分支預(yù)測(cè)信息生成手段所生成的分支預(yù)測(cè)信息和由前述分支歷史信息生成手段生成的分支歷史信息。
2.如權(quán)利要求1所述的信息處理裝置,其特征是前述分支歷史信息是有關(guān)對(duì)具有該分支歷史信息的分支命令的過去的多個(gè)分支結(jié)果的要點(diǎn)。
3.如權(quán)利要求2所述的信息處理裝置,其特征是前述分支歷史信息表示對(duì)前述分支命令過去分支成立的頻率為“極多”、“多”、“少”、“極少”中的任一個(gè)。
4.如權(quán)利要求3所述的信息處理裝置,其特征是前述分支歷史信息生成手段在前述分支命令所含的分支歷史信息表示“極少”、“少”、“多”之一,且前述分支結(jié)果為“成立”時(shí)生成分別表示“少”、“多”、“極多”的新的分支歷史信息,而在前述分支命令所含的分支歷史信息表示“極多”、“多”、“少”之一、且前述分支結(jié)果為“不成立”時(shí)生成分別表示“多”、“少”、“極少”的新的分支歷史信息。
5.如權(quán)利要求4所述的信息處理裝置,其特征是前述予測(cè)情息更新手段僅在前述分支歷史信息表示“多”且前述分支結(jié)果為“成立”時(shí)生成表示“成立”的新分支預(yù)測(cè)信息,而僅在前述分支歷史信息表示“少”且前述分支結(jié)果為“不成立”時(shí)生成表示“不成立”的新的分支預(yù)測(cè)信息。
6.如權(quán)利要求5所述的信息處理裝置,其特征是前述分支命令更新手段生成含有由前述分支預(yù)測(cè)信息生成手段生成的分支預(yù)測(cè)信息和由前述分支歷史信息生成手段生成的分支歷史信息的新的分支命令,將該分支命令寫在前述存貯手段的相應(yīng)地點(diǎn);這里,作為前述相應(yīng)地點(diǎn)是存貯成為生成前述新的分支命令的起源的分支命令的位置。
7.如權(quán)利要求6所述的信息處理裝置,其特征是前述存貯手段包含存放前述命令群的主存貯單元;存貯對(duì)存放在前述主存貯單元中的命令群的一部分的復(fù)制的超高速緩沖存貯單元;和在前述超高速緩沖存貯單元的內(nèi)容被改寫時(shí)使該變更也反映到前述主存貯單元的內(nèi)容的超高速緩存控制手段,前述命令讀取手段從前述超高速緩沖存貯單元讀出前述命令,和前述分支命令更新手段更新前述超高速緩沖存貯單元中存貯的分支命令的分支預(yù)測(cè)信息和分支歷史信息。
8.如權(quán)利要求4所述的信息處理裝置,其特征是前述預(yù)測(cè)信息更新手段僅在前述分支歷史信息表示“極多”、前述分支結(jié)果為“成立”時(shí)生成表示“成立”的新的分支預(yù)測(cè)信息,而僅在前述分支歷史信息表示“極少”、前述分支結(jié)果為“不成立”對(duì)生成表示“不成立”的新分支預(yù)測(cè)信息。
9.如權(quán)利要求8所述的信息處理裝置,其特征是前述分支命令更新手段生成包含由前述分支預(yù)測(cè)信息生成手段所生成的分支預(yù)測(cè)信息和由前述分支歷史信息生成手段所生成的分支歷史信息的新的分支命令,并將該分支命令寫在前述存貯手段的相應(yīng)地點(diǎn)上;這里,前述相應(yīng)地點(diǎn)為存貯作為生成前述新分支命令的原來的分支命令的位置。
10.如權(quán)利要求9所述的信息處理裝置,其特征是前述存貯手段包含存放前述命令群的主存貯單元,存貯對(duì)前述主存貯單元所存放的命令群的一部分的復(fù)制的超高速緩沖存貯單元,和在前述超高速緩沖存貯單元的內(nèi)容被改寫時(shí)使該變更也反映到前述主存貯單元的內(nèi)容上的超高速緩存控制手段;前述命令讀取手段從前述高速緩沖存貯單元讀出前述命令;前述分支命令更新手段更新前述超高速緩沖存貯單元中存貯的分支命令的分支預(yù)測(cè)信息和分支歷史信息。
11.如權(quán)利要求2所述的信息處理裝置,其特征是前述分支歷史信息表示針對(duì)前述分支命令的過去分支成立的頻率為“多”或“少”。
12.如權(quán)利要求11所述的信息處理裝置,其特征是前述分支歷史信息生成手段僅在前述分支命令中所含的分支歷史信息表示“少”且前述分支結(jié)果為“成立”時(shí)生成表示“多”的新的分支歷吏信息,而僅在前述轉(zhuǎn)移命令中所含的分支歷史信息表示“多”且前述分支結(jié)果為“不成立”時(shí)生成表示“少”的新的分支歷史信息。
13.如權(quán)利要求12所述的信息處理裝置,其特征是前述預(yù)測(cè)信息更新手段僅在前述分支歷史信息表示“多”且前述分支結(jié)果為“成立”時(shí)生成表示“成立”的新的分支預(yù)測(cè)信息,而僅在前述分支歷史信息表示“少”、前述分支結(jié)果為“不成立”時(shí)生成表示“不成立”的新的分支預(yù)測(cè)信息。
14.如權(quán)利要求13所述的信息處理裝置,其特征是前述分支命令更新手段生成含有由前述分支預(yù)測(cè)信息生成手段所生成的分支預(yù)測(cè)信息和由前述分支歷史信息生成手段所生成的分支歷史的新的分支命令,將該分支命令寫在前述存貯手段的相應(yīng)地點(diǎn)上;這里,前述相應(yīng)地點(diǎn)是指存貯成為生成前述新的分支命令的原來的分支命令的位置。
15.如權(quán)利要求14所述的信息處理裝置,其特征是前述存貯手段包含存放前述命令群的主存貯單元,存貯對(duì)前述主存貯單元中存放的命令群的一部分的復(fù)制的超高速緩沖存貯單元,和在前述超高速緩沖存貯單元的內(nèi)容被改寫時(shí)使該變更也反映到前述主存貯單元的內(nèi)容上的超高速緩存控制手段;前述命令讀取手段從前述超高速緩沖存貯單元讀出前述命令;和前述分支命令更新手段更新前述超高速緩沖存貯單元中存貯的分支命令的分支預(yù)測(cè)信息和分支歷史信息。
16.如權(quán)利要求1所述信息處理裝置,其特征是前述分支歷史信息表示對(duì)具有該分支歷史信息的分支命令的每個(gè)過去的分支的分支結(jié)果。
17.如權(quán)利要求16所述的處理裝置,其特征是前述分支歷史信息為表示緊前面的和2次前的分支結(jié)果的二位;前述分支歷史信息生成手段利用執(zhí)行前述分支命令時(shí)的分支結(jié)果生成新的分支歷史信息。
18.如權(quán)利要求17所述的信息處理裝置,其特征是前述預(yù)測(cè)信息更新手段在執(zhí)行前述分支命令時(shí)的分支結(jié)果和該分支命令中所含的緊前面的和2次前的分支結(jié)果分別為“成立”、“不成立”、“成立”時(shí),生成表示“不成立”的新的分支預(yù)測(cè)信息,而在為“不成立”、“成立”、“不成立”時(shí)生成表示“成立”的新的分支預(yù)測(cè)信息。
19.如權(quán)利要求18所述的信息處理裝置,其特征是前述分支命令更新手段生成含有由前述分支預(yù)測(cè)信息生成手段生成的分支預(yù)測(cè)信息和由前述分支歷史信息生成手段生成的分支歷史信息的新的分支命令,將該分支命令寫在前述存貯手段的相應(yīng)地點(diǎn);這里,作為前述相應(yīng)地點(diǎn)是存貯成為生成前述新的分支命令的原來的分支命令的位置。
20.如權(quán)利要求19所述的信息處理裝置,其特征是前述存貯手段包含存放前述命令群的主存貯單元,存貯對(duì)前述主存貯單元中存放的命令群的一部分的復(fù)制的超高速緩沖存貯單元,和在前述超高速緩沖存貯單元的內(nèi)容被改寫時(shí)使該變更也反映到前述主存貯單元的內(nèi)容上的超高速緩存控制手段;前述命令讀取手段從前述超高速緩沖存貯單元讀出前述命令;前述分支命令更新手段更新前述超高速緩沖存貯單元中存貯的分支命令的分支預(yù)測(cè)信息和分支歷史信息。
21.一種記錄模擬分支預(yù)測(cè)并預(yù)先讀取命令的微處理器操作的程序的記錄媒體,其特征是前述程序包含如下步驟命令讀取步驟,從預(yù)先存貯包含具有予測(cè)分支是否成立的分支預(yù)測(cè)信息和表示有關(guān)過去的分支結(jié)果的信息的分支歷史信息的分支命令的命令群的存貯手段依次讀出應(yīng)執(zhí)行的命令;命令解碼步驟,解釋所讀出的命令是否為前述分支命令;分支預(yù)測(cè)步驟,前述命令被解碼為分支命令時(shí)根據(jù)該分支命令的分支預(yù)測(cè)信息依次讀出應(yīng)執(zhí)行的命令;執(zhí)行步驟,執(zhí)行被解碼的前述轉(zhuǎn)移命令;分支預(yù)測(cè)信息生成步驟,根據(jù)執(zhí)行前述分支命令時(shí)的分支結(jié)果和該分支命令中所含的分支歷史信息生成新的分支預(yù)測(cè)信息;分支歷史信息生成步驟,根據(jù)執(zhí)行前述分支命令時(shí)的分支結(jié)果和該分支命令中所含的分支歷史信息生成新的分支歷史信息;和分支命令更新步聚,將前述存貯手段中存放的前述分支命令的分支預(yù)測(cè)信息和分支歷史信息更新成為由前述分支預(yù)測(cè)生成步驟生成的分支預(yù)測(cè)信息和由前述分支歷史信息生成步驟生成的分支歷史信息。
22.一種記錄由計(jì)算機(jī)執(zhí)行的命令群的記錄媒體,其特征是前述命令群中包含具有預(yù)測(cè)分支是否成立的分支預(yù)測(cè)信息和表示有關(guān)過去的分支結(jié)果的信息的分支歷史信息的分支命令;前述分支預(yù)測(cè)信息為根據(jù)具有該分支預(yù)測(cè)信息的分支命令在由前述計(jì)算機(jī)最后執(zhí)行時(shí)的分支結(jié)果和分支歷史信息所生成的值;和前述分支歷史信息為根據(jù)具有該分支歷史信息的分支命令在由前述計(jì)算機(jī)最后執(zhí)行時(shí)的分支結(jié)果和分支歷史信息所生成的值,為有關(guān)對(duì)該分支命令的過去的多個(gè)分支結(jié)果的要點(diǎn)。
23.一種記錄由計(jì)算機(jī)執(zhí)行的命令群的記錄媒體,其特征是前述命令群中包含具有預(yù)測(cè)分支是否成立的分支預(yù)測(cè)信息和表示有關(guān)過去分支結(jié)果的信息的分支歷史信息的分支命令;前述分支預(yù)測(cè)信息為根據(jù)具有該分支預(yù)測(cè)信息的分支命令由前述計(jì)算機(jī)最后執(zhí)行時(shí)的分支結(jié)果和分支歷史信息生成的值;和前述分支歷史信息為根據(jù)具有該分支歷史信息的分支命令由前述計(jì)算機(jī)最后執(zhí)行時(shí)的分支結(jié)果和分支歷史信息生成的值,表示有關(guān)該分支命令的每個(gè)過去的分支的分支結(jié)果。
全文摘要
分支命令自身中含有分支預(yù)測(cè)信息13b和分支歷史信息13c。分支預(yù)測(cè)信息13b為表示逐次執(zhí)行時(shí)的預(yù)測(cè)的分支是否成立的1畢特位,分支歷史信息13c為表示過去分支成立的頻率為“極多”、“多”、“少”、“極少”中之一的2畢特位。命令讀取器12根據(jù)分支預(yù)測(cè)信息13b預(yù)先從高速緩沖存貯器11a取出命令。在命令執(zhí)行器15執(zhí)行分支命令結(jié)束時(shí),根據(jù)該執(zhí)行結(jié)果和緊前面的分支歷史信息13c,分支歷史信息生成器16生成新的分支歷史信息,分支預(yù)測(cè)信息生成器17生成新的分支預(yù)測(cè)信息。分支命令更新器18將所生成的分支歷史信息和分支預(yù)測(cè)信息寫在高速緩沖存貯器11a上的原先的分支命令的相應(yīng)地點(diǎn)上。
文檔編號(hào)G06F9/38GK1186981SQ97108590
公開日1998年7月8日 申請(qǐng)日期1997年12月8日 優(yōu)先權(quán)日1996年12月9日
發(fā)明者高山秀一, 檜垣信生 申請(qǐng)人:松下電器產(chǎn)業(yè)株式會(huì)社