本發(fā)明涉及處理器設計的領域,特別是涉及在多存儲體條件分支預測器中用于更新事件的高效隨機數產生的分支預測器。
背景技術:
::在處理器設計的領域中對分支指令預測器的預測精度要求越來越高是公知的。隨著處理器流水級、高速緩存存儲器訪問延遲和超標量體系結構中的指令發(fā)射寬度的增加,該需求更加強烈。分支指令預測器包括預測目標地址,和預測條件分支指令方向,即跳轉(taken)或者不跳轉。一種流行的條件分支指令方向預測器通常被稱為TAGE預測器,這是對幾何長度的標簽預測器的縮寫,這已在由AndreSeznec撰寫的各種文獻中描述。TAGE預測器包括用于存儲分支預測信息的多個存儲體(memorybank)。除開一個默認體僅通過程序計數器來索引外,預測器的每個體利用程序計數器和分支轉移歷史的長度的散列來索引。為了生成用于每個非默認體的索引,不同長度的分支轉移歷史被散列;即幾何長度。此外,每個體的每個條目包括與程序計數器的標簽比特進行比較的標簽以確定是否在體中發(fā)生命中;因此叫做標簽。如文獻描述的,由Seznec設計的TAGE預測器已經非常成功地進入各種分支預測競賽。各競賽是基于分支預測器的軟件仿真。TAGE文獻描述了各個體按照概率方式更新的各個方法。技術實現要素:根據本發(fā)明的一方面,提供一種分支預測器,該分支預測器具有保留預測信息的條目的多個存儲體,該預測信息用于預測由包括該分支預測器的處理器取指執(zhí)行的指令塊所包含的分支指令的方向;發(fā)生在處理器的事件的計數;硬件邏輯,其對該計數的預定比特執(zhí)行與/或邏輯運算以產生隨機值;以及其中響應于該處理器確定由分支預測器預測的分支指令的正確方向,該分支預測器使用由硬件邏輯產生的隨機值做出關于更新各存儲體的決定。根據本發(fā)明的另一方面,提供一種用于操作分支預測器的方法,該分支預測器具有保留預測信息的條目的多個存儲體,該預測信息用于預測由包括該分支預測器的處理器取指和執(zhí)行的分支指令的方向,所述方法包括:維持發(fā)生在處理器的事件的計數;對該計數的預定比特執(zhí)行與/或邏輯運算以產生隨機值;以及響應于該處理器確定由分支預測器預測的分支指令的正確方向,使用產生的隨機值做出關于更新各存儲體的決定。附圖說明圖1是圖示多存儲體條件分支指令預測器的框圖。圖2是圖1的存儲體的條目的框圖。圖3是圖示圖1的分支預測器的操作的流程圖。圖4是圖示根據替代實施例的多體條件分支指令預測器(multi-bankconditionalbranchinstructionpredictor)的框圖。圖5是圖示根據替代實施例的多體條件分支指令預測器的框圖。圖6是圖示分支預測器做出關于更新有用指示符的決定的操作的流程圖。具體實施方式現在參考圖1,示出了圖示多體條件分支指令預測器100,或分支預測器100的框圖。分支預測器100被包含在處理器中,用于預測處理器從高速緩存取出的指令字節(jié)塊中可能的條件指令的分支跳轉方向。在一個實施例中,分支預測器100是在常規(guī)TAGE預測器上的改進。然而,實施例不限于TAGE預測器,并且實施例可包括其他多體預測器,其利用隨機數進行有關更新各體的決定。分支預測器100包括指令計數器102,程序計數器(PC)104,分支轉移歷史(BHP)106,隨機數產生(RNG)邏輯108,散列邏輯,控制邏輯114,比較邏輯116,和多對多路選擇器122和存儲體124。圖1展示了4對多路選擇器122和體124,表示為多路選擇器0122-0和體0124-0,多路選擇器1122-1和體1124-1,多路選擇器2122-2和體2124-2,和多路選擇器N122-N和體N124-N。體124的數量可以在不同實施例中變化。每個多路選擇器122接收兩個相應的輸入132和134,并產生相應的輸出136。每個體124在它索引的輸入上接收其相應的多路選擇器122的輸出136以及來自控制邏輯114的相應條目的更新138,并在其相應的輸出139上提供所選擇的條目(例如,圖2的200)到比較和選擇邏輯116。優(yōu)選的是,PC104是處理器的架構程序計數器,或指令指針,所述處理器指定從指令高速緩存取出該指令字節(jié)的塊的地址。RNG邏輯108接收指令計數器102和分支轉移歷史106并在其一個或兩個的選擇比特上執(zhí)行一個或多個與/或邏輯運算以生成提供給控制邏輯114的一個或多個隨機數148??刂七壿?14使用隨機數148進行有關更新存儲體124的決定,如本文中更詳細描述的。RNG邏輯108包含組合邏輯,其執(zhí)行在指令計數器102和分支轉移歷史106的一個或兩個的選擇比特上的與/或邏輯運算。與/或邏輯運算的示例包括,但不限于:實體的預定比特的選擇;包括異或(XOR)、NAND、AND、OR、NOT、循環(huán)、移位平移的布爾邏輯運算;和包括加、減、乘、除、取模的算術運算。指令計數器102是計數指令事件的計數器。優(yōu)選的,指令計數器102每個時鐘周期按由處理器提交的架構指令的數量遞增??商娲兀噶钣嫈灯?02每個時鐘周期按由處理器提交的微指令的數量遞增。此外,下面對應圖4和圖5中的替代實施例進行描述,其中與指令事件不同的事件的計數的比特被提供給RNG邏輯108用于產生隨機數148。指令計數器102比特在圖1中表示為IC[x:y],其中[x:y]表示指令計數器102的比特的范圍。在一個實施例中,RNG邏輯108通過對比特IC[15:8]和比特IC[7:0]執(zhí)行布爾異或(XOR)運算以產生8比特結果(如圖1的RANDOM1所示)來產生隨機數148。分支轉移歷史106,按照其他術語也稱為如全局歷史寄存器(GHR),是N比特移位寄存器。當處理器看到條件分支指令,處理器向移位寄存器移入所述條件分支指令的方向,即,跳轉或不跳轉,其在一個實施例中分別對應于二進制1或0。因此,分支轉移歷史106跟蹤處理器所見的最后N個條件分支的方向歷史。在一個實施例中,在指令提交時看到條件分支指令;替換地,如果處理器預測條件分支指令存在于從指令高速緩存取出的指令字節(jié)的塊中并且其處于在當前PC104值或之后(但是不在其他任何預測跳轉的條件分支之后)值的塊的位置,則看到條件分支指令。在一個實施例中,N大約是100比特。在圖1分支轉移歷史106比特表示為BHP[x:y],其中[x:y]表示分支轉移歷史106的比特的范圍。在一個實施例中,RNG邏輯108通過對比特IC[15:8]和比特IC[7:0]以及比特BHP[msb:msb-7]執(zhí)行布爾異或(XOR)運算以產生8比特結果(如圖1的RANDOM2所示)來產生隨機數148,其中msb表示分支轉移歷史106的最高有效位。雖然實施例已描述在其中由RNG邏輯108產生的隨機數148是8比特,可以設想其他實施例,其中隨機數148的大小是不同的,并且使用指令計數器的102和/或分支轉移歷史106的不同比特。例如,在一個實施例中,隨機數148是10比特,例如,RANDOM1=IC[19:10]^IC[9:0]和RANDOM2=IC[19:10]^IC[9:0]^BHP[MSB:MSB-9]。還應該理解的是,除了這里描述的實施例外,指令計數器102和/或分支轉移歷史106的其它比特可以使用,例如,RANDOM1=IC[22:13]^IC[9:0]和RANDOM2=IC[30:21]^IC[13:4]^BHP[40:31]。分支預測器100做出關于是否和如何使用由RNG邏輯108產生的隨機數148更新存儲體124的決定。有利的,本文描述的RNG邏輯108的實施例以非常高效的方式產生隨機數148。此外,RNG邏輯108的實施例可以使用軟件仿真工具比調用在軟件仿真工具(如,Verilog中的函數random())中提供的隨機數產生器的仿真方法來更精確地仿真,這可以使能分支預測器100的更精確的性能建模。散列邏輯112將程序計數器104的一部分與分支轉移歷史106的一部分進行散列運算以產生用于每個體124的相應索引。相應索引132在圖1中表示為132-0、132-1、132-2和132-N并且分別提供作為對多路選擇器0122-0、多路選擇器1122-1、多路選擇器2122-2到多路選擇器N122-N的第一輸入。在一個實施例中,如由TAGE預測器執(zhí)行的,散列邏輯112簡單地讓程序計數器104的該部分作為索引132-0而非將之與分支轉移歷史106進行散列運算,并且散列邏輯112將程序計數器104與分支轉移歷史106的不同長度進行散列運算以產生剩余索引132-1、132-2到132-N中的每個。在一個實施例中,散列邏輯112執(zhí)行程序計數器104的低比特與分支轉移歷史106的相應選擇長度的比特的XOR以產生索引132-1、132-2到132-N。每個多路選擇器122也在第二輸入上從控制邏輯114接收相應的更新索引134??刂七壿?14控制每個多路選擇器122以選擇由散列邏輯112產生的索引132或由控制邏輯114產生的更新索引134,以在其相應的輸出136上提供給相應體124的索引輸入。當控制邏輯114要更新體124時,控制邏輯114產生關于體124的相應更新索引134的值來選擇要更新的條目,并控制相應的多路選擇器122選擇更新索引134,并且控制體124寫入由控制邏輯114產生的更新值138。當控制邏輯114希望從體124讀取條目時,控制邏輯114控制相應多路選擇器122選擇索引132并且作為響應體124在其輸出139上提供選擇的條目給比較和選擇邏輯116。簡要地參考圖2,示出圖1的體124的條目200的框圖。優(yōu)選地,在每個體124的每個條目200包括有效比特202,標簽206,預測204和有用指示符208。有效比特202表示該條目是否有效。標簽206是對應的條件分支指令的地址(即,程序計數器值)的高位比特。預測204表示條件分支指令是否將跳轉或不跳轉。優(yōu)選地,條目200包括計數器(例如,3比特飽和計數器),并且預測204是計數器的最高有效位。在一個實施例中,當條件分支指令跳轉時計數器遞增以及當未跳轉時計數器遞減。在另一個實施例中,計數器根據基于由條目所提供的預測204是否是正確的預測或錯誤的預測的狀態(tài)機來更新。有用指示符208是條目200是否在預測條件分支指令中有用的指示。在一個實施例中,有用指示符208由分支預測器100用來做出關于是否要分配條目200的決定,如下更詳細描述的。在一個實施例中,有用指示符208包括單個比特;可替代地,有用指示符208包括多比特計數器,其計數指示條目200的有用性的程度。再參考圖1,當分支預測器100進行預測時,每個體124提供其相應選定的條目200到比較和選擇邏輯116。優(yōu)選的,比較和選擇邏輯116選擇由來自最高體124的、具有匹配程序計數器104的標簽部分的有效標簽206的條目200所提供的預測作為最終的預測142。最高體124是其索引132具有由散列邏輯112所使用的最長的分支轉移歷史106長度的體124。在一個實施例中,存儲在條目的標簽206是與上述分支轉移歷史106進行散列的條件分支指令的地址的高位比特,并且程序計數器104的標簽部分與分支轉移歷史106進行散列,并且兩者由比較和選擇邏輯116進行比較。比較和選擇邏輯116向控制邏輯114提供哪個體124被選作最終的預測142的指示。控制邏輯114還從執(zhí)行條件分支指令的處理器的執(zhí)行單元接收關于每個執(zhí)行的條件分支指令的信息144,諸如條件分支指令的正確方向及其地址。控制邏輯114維持關于每個預測的條件分支指令的信息,直到它確定該條件分支指令被執(zhí)行或從處理器流水線被刷去??刂七壿?14使用維持的關于每個預測的條件分支指令的信息和從執(zhí)行單元接收的信息144,以使其能夠做出關于使用隨機數148(使用指令計數器102和/或分支轉移歷史106產生的)更新存儲體124的決定,如下面更詳細描述的。在一個實施例中,處理器包括分支順序表(BOT),其工作機制類似于重新排序緩沖器(ROB)并儲存流水線中存在的分支指令的相關信息(包括地址)。優(yōu)選地,包括分支預測器100的處理器包括取指單元、指令高速緩存、分支目標地址高速緩存(branchtargetaddresscache,BTAC)、指令譯碼器和執(zhí)行流水線。在一個實施例中,執(zhí)行流水線是包括一個或多個架構寄存器、寄存器重命名單元、重排序緩沖器、保留站、多個執(zhí)行單元和用于安排發(fā)射微指令到執(zhí)行單元的指令調度器的超標量亂序執(zhí)行流水線。執(zhí)行單元可以包括以下執(zhí)行單元類型的一個或多個:整數單元、浮點單元、媒體單元、單指令多數據(SIMD)單元、分支執(zhí)行單元、訪存單元。優(yōu)選地,處理器103還包括存儲器子系統(tǒng),其包括存儲器次序緩沖器、地址變換高速緩存(tanslation-lookasidebuffer,TLB)、tablewalk引擎、多級緩存和各種請求隊列,例如一個或多個存儲器訪問隊列、存儲器存儲隊列、填充隊列和/或存儲器監(jiān)聽隊列。優(yōu)選地,取指單元基于程序計數器值產生提供給指令高速緩存和分支目標地址高速緩存的塊地址。指令高速緩存響應于塊地址提供架構指令字節(jié)塊,其可以包括一個或多個架構分支指令。優(yōu)選地,指令字節(jié)塊由指令譯碼器接收,該指令譯碼器將架構指令翻譯為提供給可被X86處理器架構的流水線執(zhí)行的微指令?,F在參考圖3,示出圖示圖1的分支預測器100的操作的流程圖。流程始于塊302。在塊302,從處理器的指令高速緩存取指指令字節(jié)塊,其預測包括至少一個條件分支指令。優(yōu)選地,分支目標地址高速緩存通過查找圖1的程序計數器104的值預測條件分支指令的存在。另外,散列邏輯112將程序計數器104值與分支轉移歷史106的不同長度進行散列運算以產生索引132而施加于圖1的體124。選擇的條目139被提供給比較和選擇邏輯116,其選擇提供給處理器的執(zhí)行流水線的最終的預測142。具體地,分支預測器100將來自一個體124的條目選擇為最終的預測142。其條目被選擇的體124在圖3中被稱為體X。如上所述,優(yōu)選地,比較和選擇邏輯116選擇具有匹配程序計數器104的標簽部分的有效標簽的最高體124的條目,其中最高體124是其索引132具有由散列邏輯112所使用的最長的分支轉移歷史106長度的體124。優(yōu)選地,最終的預測142也提供給處理器的執(zhí)行流水線,從而執(zhí)行條件分支指令的執(zhí)行單元能夠比較該預測和解析的條件分支指令的正確方向并且向分支預測器100提供關于預測142是否正確的信息144。分支預測器100使用信息144更新體124。流程前進到塊304。在塊304中,執(zhí)行單元執(zhí)行條件分支指令,以得到其正確的方向,即,跳轉或不跳轉,并向分支預測器100提供正確的方向144。流程前進至塊306。在塊306中,控制邏輯114確定需要更新體124的一個或多個,所以RNG邏輯108使用指令計數器102產生圖1的隨機數148。如上所述,RNG邏輯108也同時使用指令計數器102和分支轉移歷史106產生隨機數148。流程前進至塊308。在決定塊308中,控制邏輯114確定由分支預測器100預測的方向是否匹配通過執(zhí)行單元在塊304提供的正確的預測144。如果是,則流程進行到決定塊312;否則,流程前進到決定塊316。在決定塊312,控制邏輯114檢查RNG邏輯108產生的隨機數148。如果隨機數148是在值8-255的范圍內,則流程前進到塊314;否則,如果該隨機數148是在范圍0-7,則流程前進至決定塊316。以這種方式,控制邏輯114有效地決定當預測的方向不匹配正確的方向時是否根據1:31的比例來分配一新的條目。有利的,圖1的RNG邏輯108以高效的方式提供隨機數148并且通過包括容易仿真的組合邏輯提供了測量由RNG邏輯108所提供的隨機數148的質量(而不是通過將由仿真工具的隨機數產生函數提供的隨機數的質量)得到的性能增益的更精確的能力,如以上所述。在塊314,分支預測器100沒有在體124中分配新的條目,流程在塊314結束。在決定塊316,控制邏輯114檢查由RNG邏輯108產生的隨機數148。如果隨機數148是在值0-63的范圍內,則流程前進到塊318;不然,如果隨機數148是在范圍64-255內,則流程進行到塊322。以這種方式,控制邏輯114有效地決定是否開始尋找一個體124,其根據3:1的比率決定在X+1還是X+2的體進行分配。在一個實施例中,在決定塊316中檢查的隨機數148是第二隨機數148,也即,不同于在決定塊308中檢查的隨機數148。應當理解,分支預測器使用的隨機數是148,而決定塊312、316和324中是作為示例描述的,并且可以設想使用其他比率的其他實施例。此外,應當理解,盡管實施例被描述,其中產生和使用的隨機數148是8比特,但是可以設想其他實施例,其中不同大小的隨機數148被產生并使用。在塊318中,控制邏輯114開始于體X+2以找到最先的兩個體124,其有用指示符208具有零值。例如,如果體X是體1124-1(即,如在塊302確定的做出預測的體124),則體X+2是體3124-3。分支預測器100可能無法找到具有零有用指示符208的兩個體124,甚至具有零值的有用指示符208的一個體124。此外,分支預測器100可以只需要具有零值的有用指示符208的一個體124,例如,如果流程進至塊328。流程進行到決定塊324。在塊322中,控制邏輯114開始于體X+1以找到最先的兩個體124,其有用指示符208具有零值。例如,如果體X是體1124-1(即,如在塊302確定的做出預測的體124),則體X+1是體2124-2。流程進行到決定塊324。在決定塊324中,控制邏輯114檢查由RNG邏輯108產生的隨機數148。如果隨機數148是在值0-15的范圍內,則流程前進到塊326;不然,如果隨機數148是在范圍16-255內,則流程進行到塊328。以這種方式,控制邏輯114有效地決定根據15:1的比率是否在一個體或兩個體中進行分配。在一個實施例中,在決定塊324中檢查的隨機數148是第三隨機數148,即,與在決定塊308和316中檢查的隨機數148不同。在塊326中,控制邏輯114在塊318/322中找到的兩個體124兩者中分配新的條目用于條件分支指令。流程在塊326結束。在塊328中,控制邏輯114僅在塊318/322中找到的兩個體124到體X中的最短者(即使用較短的分支預測器100的長度)中分配新的條目用于條件分支指令。流程在塊328結束?,F在參考圖4,示出根據替代實施例的多體條件分支指令預測器100的框圖。圖4的分支預測器100在許多方面類似于圖1的分支預測器100并且相同編號的元件是類似的。但是,圖4的分支預測器100利用處理器時鐘周期計數器(CCCC)402取代圖1的指令計數器102。CCCC402計數處理器的時鐘周期的數量,優(yōu)選地從處理器復位開始。CCCC402被提供給RNG邏輯108,RNG邏輯108將它用來產生提供給控制邏輯114的隨機數148,控制邏輯114使用隨機數148做出有關更新存儲體124的決定。相應地,在圖4所示的RANDOM1和RANDOM2等式更新為RANDOM1=CCCC[19:10]^CCCC[9:0]和RANDOM2=CCCC[19:10]^CCCC[9:0]^BHP[MSB:MSB-9]來說明使用CCCC402而非指令計數器102。圖4的分支預測器100的操作類似于相對于圖3描述的操作;然而,在塊306中RNG邏輯108使用CCCC402而非指令計數器102比特來產生隨機數148?,F在參考圖5,示出根據替代實施例的多體條件分支指令預測器100的框圖。圖5的分支預測器100在許多方面類似于圖1的分支預測器100并且相同編號的元件是類似的。但是,圖5的分支預測器100利用總線時鐘周期計數器(BCCC)502取代圖1的指令計數器102。BCCC502計數處理器外部的總線的時鐘周期的數量,優(yōu)選地從處理器復位開始。例如,總線時鐘可以是系統(tǒng)總線,其耦合處理器和系統(tǒng)的外圍設備和/或存儲器。BCCC502被提供給RNG邏輯108,RNG邏輯108將它用來產生提供給控制邏輯114的隨機數148,控制邏輯114使用隨機數148做出有關更新存儲體124的決定。相應地,在圖5所示的RANDOM1和RANDOM2等式更新為RANDOM1=BCCC[19:10]^BCCC[9:0]和RANDOM2=BCCC[19:10]^BCCC[9:0]^BHP[MSB:MSB-9]來說明使用BCCC502而非指令計數器102。圖5的分支預測器100的操作類似于相對于圖3描述的操作;然而,在塊306中RNG邏輯108使用BCCC502而非指令計數器102比特來產生隨機數148?,F在參考圖6,示出圖示圖1的分支預測器100做出關于更新有用指示符208的決定的操作的流程圖。在一個實施例中,每次分支預測器100選擇體124做出預測142(圖3中表示為體X),分支預測器100還記住備用的預測體124,在此被稱為體Y。體Y是如果在體X中出現未命中則將用來做出預測142的體124。也即,體Y是下一個最低的體124,其中程序計數器104的標簽部分也命中了,以及如果沒有其中存在命中的較低的體124,則體Y是默認體124,例如,體0。優(yōu)選的,每當體X正確地預測條件分支指令的方向而體Y錯誤地預測,則控制邏輯114將有用指示符208遞增。如相對于圖3描述的,有用指示符208用來在體124中分配條目。然而,如果有用指示符208僅曾遞增,并且從不遞減,則最終將沒有零值的有用指示符208,這將對分配方案產生負面影響。所以,如在Seznec的TAGE文章所述的,有必要以老化有用指示符208以將它們復位至零。發(fā)表在2011年5月20日的、AndreSeznec的題為“A64KbytesISL-TAGEbranchpredictor”的文章的第2.2節(jié)描述了使用8位計數器,簡稱TICK,用于動態(tài)監(jiān)測當試圖在錯誤預測之后分配新的條目時成功和失敗的次數。TICK計數器當在分配遭遇失敗多于成功時飽和,并且此時Seznec的預測器重置預測器的所有的有用比特。圖6描述了Seznec方案的變體。優(yōu)選地,圖1的分支預測器100的控制邏輯114還包括一計數器(未示出),這里稱為T。針對圖6描述了結合由RNG邏輯108基于指令計數器102(或CCCC402或BCCC502)和/或分支轉移歷史106產生的隨機數148的T的使用。流程開始于塊602。在塊602中,結合在塊318或塊322執(zhí)行的操作,控制邏輯114確定兩個值,N和P。N是來自在塊318/322查找(即搜索)的、具有零值的有用指示符208的體124的有用指示符208的數量,而P是來自查找的體124的非零值的有用指示符208的數量。流程前進至塊604。在塊604,控制邏輯114將T的值增加P并且將T的值減少N。在一個實施例中,T是10比特計數器因此具有0-1023的范圍并且當處理器復位時初始化到0。流程前進到決定塊606。在決定塊606,控制邏輯114確定T的值是否大于或等于隨機數148的值。如果不是,則流程結束;否則,流程繼續(xù)到決定塊608。在一個實施例中,在決定塊606中比較的隨機數148是7比特隨機數148,因此具有范圍0-127。在決定塊608中,控制邏輯114檢查由RNG邏輯108產生的隨機數148。如果隨機數148是在值0-127的范圍內,則流程結束;不然,如果隨機數148是在范圍128-255,則流程前進到塊612。以這種方式,控制邏輯114有效地決定是否根據1:1比率遞減有用指示符208。在一個實施例中,在決定塊608中檢查的隨機數148是第二隨機數148,也即,不同于在決定塊606中檢查的隨機數148。應當理解的是,由分支預測器100基于例如在決定塊608的隨機數148使用的比率被描述為一個例子,其他實施例可以設想使用其它比率。此外,應當理解,盡管實施例被描述,其中在塊606和608中產生和使用的隨機數148分別是7比特和8比特,可以設想其他實施例,其中不同大小的隨機數148被產生和使用。雖然在這里已經描述了本發(fā)明的各種實施例,應當理解它們已經通過示例的方式呈現,而不是限制。對于相關計算機領域中的普通技術人員很明顯可以在其中做出形式和細節(jié)的各種改變而不脫離本發(fā)明的范圍。例如,軟件例如可以使能在這里描述的裝置和方法的功能、制造、建模、模擬、描述和/或測試。這可以通過通用編程語言(例如,C,C++)、包括VerilogHDL、VHDL等的硬件描述語言(HDL)或者其他可用程序的使用實現。這種軟件可以以任何已知的計算機可用介質配置,比如磁帶、半導體、磁盤或者光盤(例如,CD-ROM、DVD-ROM等)、網絡,有線線路或者其他通信介質。在這里描述的設備和方法的實施例可以包括在半導體知識產權核心中,比如處理器核心(例如,以HDL具實現或者指定)和可以變換為集成電路的生產中的硬件。另外,在這里描述的設備和方法可以具體表現為硬件和軟件的組合。因此,本發(fā)明不應該由在這里描述的任何示例性實施例限制,而是應該僅根據以下權利要求和它們的等同物來定義。特別地,本發(fā)明可以在通用計算機中使用的處理器裝置內實現。最終,本領域技術人員應該認可,他們可以容易地使用公開的概念和特定實施例作為設計或者修改其他結構以進行本發(fā)明的相同目的的基礎,而不脫離本發(fā)明如所附權利要求所定義的保護范圍。當前第1頁1 2 3 當前第1頁1 2 3