1.一種分支預(yù)測(cè)器,包括:
具有保留預(yù)測(cè)信息的條目的多個(gè)存儲(chǔ)體,該預(yù)測(cè)信息用于預(yù)測(cè)由包括該分支預(yù)測(cè)器的處理器取指和執(zhí)行的指令塊所包含的分支指令的方向;
發(fā)生在處理器的事件的計(jì)數(shù);
硬件邏輯,其對(duì)該計(jì)數(shù)的預(yù)定比特執(zhí)行與/或邏輯運(yùn)算以產(chǎn)生隨機(jī)值;以及
其中響應(yīng)于該處理器確定由分支預(yù)測(cè)器預(yù)測(cè)的分支指令的正確方向,該分支預(yù)測(cè)器使用由硬件邏輯產(chǎn)生的隨機(jī)值做出關(guān)于更新各存儲(chǔ)體的決定。
2.如權(quán)利要求1所述的分支預(yù)測(cè)器,進(jìn)一步包括:
分支轉(zhuǎn)移歷史,其指定該處理器遇到的分支指令的方向的歷史;以及
其中該硬件邏輯除了對(duì)該計(jì)數(shù)的預(yù)定比特執(zhí)行與/或邏輯運(yùn)算外,還對(duì)分支轉(zhuǎn)移歷史的預(yù)定比特執(zhí)行與/或邏輯運(yùn)算以產(chǎn)生該隨機(jī)值。
3.如權(quán)利要求1所述的分支預(yù)測(cè)器,進(jìn)一步包括:
其中與/或邏輯運(yùn)算包括該計(jì)數(shù)的第一部分比特和該計(jì)數(shù)器的第二部分比特的布爾異或(XOR)運(yùn)算。
4.如權(quán)利要求1所述的分支預(yù)測(cè)器,進(jìn)一步包括:
其中計(jì)數(shù)的事件包括通過(guò)處理器提交的指令條數(shù)。
5.如權(quán)利要求1所述的分支預(yù)測(cè)器,進(jìn)一步包括:
其中計(jì)數(shù)的事件包括兩倍于處理器時(shí)鐘周期的外部總線時(shí)鐘周期的數(shù)目。
6.如權(quán)利要求1所述的分支預(yù)測(cè)器,進(jìn)一步包括:
其中計(jì)數(shù)的事件包括處理器的時(shí)鐘的周期。
7.如權(quán)利要求1所述的分支預(yù)測(cè)器,進(jìn)一步包括:
其中該隨機(jī)值來(lái)自可能的值的集合;
其中當(dāng)由分支預(yù)測(cè)器預(yù)測(cè)的方向與正確方向匹配時(shí),如果該隨機(jī)值是可能的值的集合的預(yù)定子集之一則分支預(yù)測(cè)器在多個(gè)存儲(chǔ)體的一個(gè)或多個(gè)中分配新的條目,否則不在多個(gè)存儲(chǔ)體的一個(gè)或多個(gè)中分配新的條目。
8.如權(quán)利要求1所述的分支預(yù)測(cè)器,進(jìn)一步包括:
其中該隨機(jī)值來(lái)自可能的值的集合;
其中當(dāng)由分支預(yù)測(cè)器預(yù)測(cè)的方向不與正確方向匹配時(shí),如果該隨機(jī)值是可能的值的集合的預(yù)定子集之一則分支預(yù)測(cè)器在多個(gè)存儲(chǔ)體的多于一個(gè)中分配新的條目,否則在多個(gè)存儲(chǔ)體的一個(gè)中分配新的條目。
9.如權(quán)利要求1所述的分支預(yù)測(cè)器,進(jìn)一步包括:
其中該隨機(jī)值來(lái)自可能的值的集合;
其中多個(gè)存儲(chǔ)體的每個(gè)體接收使用不同長(zhǎng)度的分支轉(zhuǎn)移歷史計(jì)算的索引,并且多個(gè)存儲(chǔ)體的每個(gè)體具有一編號(hào),并且體編號(hào)從最短長(zhǎng)度向最長(zhǎng)長(zhǎng)度順序增加;以及
其中多個(gè)存儲(chǔ)體中的每個(gè)條目包括一指示符,其指示該條目在預(yù)測(cè)分支指令的方向中趨于有用;
其中當(dāng)響應(yīng)于處理器確定其方向由具有體編號(hào)X的多個(gè)存儲(chǔ)體的第一體預(yù)測(cè)的分支指令的正確方向在多個(gè)體中分配條目時(shí),如果該隨機(jī)值是可能的值的集合的預(yù)定子集之一則分支預(yù)測(cè)器開(kāi)始搜索要在編號(hào)X+1的體分配的非有用條目,否則開(kāi)始搜索要在編號(hào)X+2的體分配的非有用條目。
10.如權(quán)利要求1所述的分支預(yù)測(cè)器,進(jìn)一步包括:
其中多個(gè)存儲(chǔ)體中的每個(gè)條目包括一指示符,其指示該條目在預(yù)測(cè)分支指令的方向中趨于有用;
計(jì)數(shù)器,按照指示符指示其條目趨于有用的體的數(shù)量遞增并且按照指示符指示其條目不趨于有用的體的數(shù)量遞減;以及
其中當(dāng)計(jì)數(shù)器具有大于或等于隨機(jī)值的值時(shí),該分支預(yù)測(cè)器概率遞減該指示符。
11.一種用于操作分支預(yù)測(cè)器的方法,該分支預(yù)測(cè)器具有保留預(yù)測(cè)信息的條目的多個(gè)存儲(chǔ)體,該預(yù)測(cè)信息用于預(yù)測(cè)由包括該分支預(yù)測(cè)器的處理器取指和執(zhí)行的分支指令的方向,所述方法包括:
維持發(fā)生在處理器的事件的計(jì)數(shù);
對(duì)該計(jì)數(shù)的預(yù)定比特執(zhí)行與/或邏輯運(yùn)算以產(chǎn)生隨機(jī)值;以及
響應(yīng)于該處理器確定由分支預(yù)測(cè)器預(yù)測(cè)的分支指令的正確方向,使用產(chǎn)生的隨機(jī)值做出關(guān)于更新各存儲(chǔ)體的決定。
12.如權(quán)利要求11所述的方法,進(jìn)一步包括:
維持分支轉(zhuǎn)移歷史,其指定該處理器遇到的分支指令的方向的歷史;以及
除了對(duì)該計(jì)數(shù)的預(yù)定比特執(zhí)行與/或邏輯運(yùn)算外,還對(duì)分支轉(zhuǎn)移歷史的預(yù)定比特執(zhí)行與/或邏輯運(yùn)算以產(chǎn)生該隨機(jī)值。
13.如權(quán)利要求11所述的方法,進(jìn)一步包括:
其中與/或邏輯運(yùn)算包括該計(jì)數(shù)的第一部分比特和該計(jì)數(shù)的第二部分比特的布爾異或(XOR)運(yùn)算。
14.如權(quán)利要求11所述的方法,進(jìn)一步包括:
其中計(jì)數(shù)的事件包括通過(guò)處理器的已提交指令。
15.如權(quán)利要求11所述的方法,進(jìn)一步包括:
其中計(jì)數(shù)的事件包括兩倍于處理器時(shí)鐘周期的外部總線時(shí)鐘周期的數(shù)目。
16.如權(quán)利要求11所述的方法,進(jìn)一步包括:
其中計(jì)數(shù)的事件包括處理器的時(shí)鐘的周期。
17.如權(quán)利要求11所述的方法,進(jìn)一步包括:
其中該隨機(jī)值來(lái)自可能的值的集合;
其中當(dāng)由分支預(yù)測(cè)器預(yù)測(cè)的方向與正確方向匹配時(shí),如果該隨機(jī)值是可能的值的集合的預(yù)定子集之一則在多個(gè)存儲(chǔ)體的一個(gè)或多個(gè)中分配新的條目,否則不在多個(gè)存儲(chǔ)體的一個(gè)或多個(gè)中分配新的條目。
18.如權(quán)利要求11所述的方法,進(jìn)一步包括:
其中該隨機(jī)值來(lái)自可能的值的集合;
其中當(dāng)由分支預(yù)測(cè)器預(yù)測(cè)的方向不與正確方向匹配時(shí),如果該隨機(jī)值是可能的值的集合的預(yù)定子集之一則在多個(gè)存儲(chǔ)體的多于一個(gè)中分配新的條目,否則在多個(gè)存儲(chǔ)體的一個(gè)中分配新的條目。
19.如權(quán)利要求11所述的方法,進(jìn)一步包括:
其中該隨機(jī)值來(lái)自可能的值的集合;
其中多個(gè)存儲(chǔ)體的每個(gè)體接收使用不同長(zhǎng)度的分支轉(zhuǎn)移歷史計(jì)算的索引,并且多個(gè)存儲(chǔ)體的每個(gè)體具有一編號(hào),并且體編號(hào)從最短長(zhǎng)度向最長(zhǎng)長(zhǎng)度順序增加;以及
其中多個(gè)存儲(chǔ)體中的每個(gè)條目包括一指示符,其指示該條目在預(yù)測(cè)分支指令的方向中趨于有用;
其中當(dāng)響應(yīng)于處理器確定其方向由具有體編號(hào)X的多個(gè)存儲(chǔ)體的第一體預(yù)測(cè)的分支指令的正確方向在多個(gè)體中分配條目時(shí),如果該隨機(jī)值是可能的值的集合的預(yù)定子集之一則開(kāi)始搜索要在編號(hào)X+1的體分配的非有用條目,否則開(kāi)始搜索要在編號(hào)X+2的體分配的非有用條目。
20.如權(quán)利要求11所述的方法,進(jìn)一步包括:
其中多個(gè)存儲(chǔ)體中的每個(gè)條目包括一指示符,其指示該條目在預(yù)測(cè)分支指令的方向中趨于有用;
按照指示符指示其條目趨于有用的體的數(shù)量遞增計(jì)數(shù)器,并且按照指示符指示其條目不趨于有用的體的數(shù)量遞減計(jì)數(shù)器;以及
其中當(dāng)計(jì)數(shù)器具有大于或等于隨機(jī)值的值時(shí),概率遞減該指示符。
21.一種計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)程序產(chǎn)品編碼在與計(jì)算設(shè)備一起使用的至少一個(gè)非瞬時(shí)計(jì)算機(jī)可用介質(zhì)中,所述計(jì)算機(jī)程序產(chǎn)品包括:
在所述介質(zhì)中具體表現(xiàn)的計(jì)算機(jī)可用程序代碼,用于指定分支預(yù)測(cè)器,所述計(jì)算機(jī)可用程序代碼包括:
第一程序代碼,用于指定具有保留預(yù)測(cè)信息的條目的多個(gè)存儲(chǔ)體,該預(yù)測(cè)信息用于預(yù)測(cè)由包括該分支預(yù)測(cè)器的處理器取指和執(zhí)行的分支指令的方向;
第二程序代碼,用于指定發(fā)生在處理器的事件的計(jì)數(shù);
第三程序代碼,用于指定對(duì)該計(jì)數(shù)的預(yù)定比特執(zhí)行與/或邏輯運(yùn)算的硬件邏輯以產(chǎn)生隨機(jī)值;以及
其中響應(yīng)于該處理器確定由分支預(yù)測(cè)器預(yù)測(cè)的分支指令的正確方向,該分支預(yù)測(cè)器使用由該硬件邏輯產(chǎn)生的隨機(jī)值做出關(guān)于更新各存儲(chǔ)體的決定。