国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      間接分支預(yù)測的制作方法

      文檔序號:6538213閱讀:243來源:國知局
      間接分支預(yù)測的制作方法
      【專利摘要】用于預(yù)測程序中跳轉(zhuǎn)表switch語句的目標(biāo)位置的方法和分支預(yù)測器。所述方法包括在分支預(yù)測器處連續(xù)地監(jiān)控指令,以便確定它們是否寫入存儲(chǔ)跳轉(zhuǎn)表switch語句的輸入變量的寄存器。將對于被監(jiān)控的寄存器的任何更新存儲(chǔ)在由所述分支預(yù)測器維持的寄存器表中。然后,當(dāng)?shù)搅藢τ谔D(zhuǎn)表switch語句指令做出預(yù)測的時(shí)間時(shí),所述分支預(yù)測器使用存儲(chǔ)在所述表中的寄存器值來預(yù)測所述跳轉(zhuǎn)表switch語句將分支到哪里。
      【專利說明】間接分支預(yù)測
      【背景技術(shù)】
      [0001]亂序處理器典型地包括分支預(yù)測器,該分支預(yù)測器在諸如分支指令的被已知為產(chǎn)生可能的流改變的指令的情況下預(yù)測程序流將采取哪個(gè)方向。分支預(yù)測是有用的,因?yàn)樗谥婪种е噶畹慕Y(jié)果之前能夠使指令由處理器推測性地執(zhí)行。
      [0002]然而,間接分支(例如,以變量而非常量值為基礎(chǔ)的分支)是難于預(yù)測的,因?yàn)榉种ьA(yù)測器必須同時(shí)預(yù)測分支是否被采用以及目標(biāo)在哪里二者。因此,許多分支預(yù)測器無法精確地預(yù)測間接分支。
      [0003]一種解決方案是改進(jìn)由分支預(yù)測器使用的預(yù)測算法。然而,這通常相當(dāng)困難而且是時(shí)間密集的。
      [0004]另一種解決方案是實(shí)現(xiàn)一種編譯器,該編譯器配置為移除與任何類似于switch結(jié)構(gòu)的代碼,因而不需要間接分支。然而,識別能夠移除代碼的情況是困難的。
      [0005]下面描述的實(shí)施例并不局限于解決已知的亂序處理器的任何或全部缺點(diǎn)的實(shí)現(xiàn)。

      【發(fā)明內(nèi)容】

      [0006]提供這一
      【發(fā)明內(nèi)容】
      部分以便按照簡化的形式引入下面在【具體實(shí)施方式】中進(jìn)一步描述的概念的選擇。這一
      【發(fā)明內(nèi)容】
      部分并不意在識別請求保護(hù)的主題的關(guān)鍵特征或基本特征,也并不意在作為確定請求保護(hù)的主題的范圍時(shí)使用的輔助手段。
      [0007]本文描述了用于預(yù)測程序中跳轉(zhuǎn)表switch語句的目標(biāo)位置的方法和分支預(yù)測器。所述方法包括在所述分支預(yù)測器處連續(xù)地監(jiān)控指令以便確定它們是否寫入用于存儲(chǔ)跳轉(zhuǎn)表switch語句的輸入變量的寄存器。將對于被監(jiān)控的寄存器的任何更新存儲(chǔ)在由所述分支預(yù)測器維護(hù)的寄存器表中。然后,當(dāng)?shù)搅藢τ谔D(zhuǎn)表switch語句指令進(jìn)行預(yù)測的時(shí)間時(shí),所述分支預(yù)測器使用存儲(chǔ)在所述表中的寄存器值來預(yù)測所述跳轉(zhuǎn)表switch語句將分支到哪里。
      [0008]第一方面提供一種用于預(yù)測由處理器執(zhí)行的程序中的switch語句的目標(biāo)位置的方法,所述方法包括:將對于至少一個(gè)被監(jiān)控的寄存器的當(dāng)前值存儲(chǔ)在由分支預(yù)測器維持的寄存器表中,每一個(gè)被監(jiān)控的寄存器已經(jīng)被識別為存儲(chǔ)跳轉(zhuǎn)表switch語句的輸入變量,跳轉(zhuǎn)表switch語句是已經(jīng)被編譯到跳轉(zhuǎn)表的switch語句;在分支預(yù)測器處接收指令用于預(yù)測;使用所述分支預(yù)測器確定接收到的指令是否寫入具有更新值的被監(jiān)控的寄存器之一;對確定接收到的指令寫入具有更新值的被監(jiān)控的寄存器之一做出響應(yīng),,更新對于被寫入的具有更新值的所述寄存器的所述寄存器表中的當(dāng)前值;并且使用所述分支預(yù)測器,使用所述當(dāng)前值來預(yù)測跳轉(zhuǎn)表switch語句指令的目標(biāo)位置。
      [0009]第二方面提供一種分支預(yù)測器,所述分支預(yù)測器包括:寄存器表(116、534、536),所述寄存器表存儲(chǔ)對于至少一個(gè)被監(jiān)控的寄存器的當(dāng)前值,每一個(gè)被監(jiān)控的寄存器已經(jīng)被識別為存儲(chǔ)跳轉(zhuǎn)表switch語句的輸入變量,跳轉(zhuǎn)表switch語句是已經(jīng)被編譯到跳轉(zhuǎn)表的switch語句;以及與所述寄存器表(116、534、536)通信的邏輯單元,所述邏輯單元配置為:接收指令用于預(yù)測;確定接收到的指令是否寫入具有更新值的被監(jiān)控的寄存器之一;對確定接收到的指令寫入具有更新值的被監(jiān)控的寄存器之一做出響應(yīng),更新對于被寫入的具有更新值的所述寄存器的所述寄存器表中的當(dāng)前值;并且使用所述當(dāng)前值來預(yù)測跳轉(zhuǎn)表switch語句指令的目標(biāo)位置。
      [0010]第三方面提供一種處理器,所述處理器包括根據(jù)第二方面的分支預(yù)測器。
      [0011]第四方面提供一種基本上參照圖1和圖2描述的處理器。
      [0012]第五方面提供一種基本上參照圖4描述的預(yù)測switch語句指令的目標(biāo)位置的方法。
      [0013]第六方面提供一種基本上參照圖2和圖5描述的處理器。
      [0014]本文描述的方法可以通過以有形存儲(chǔ)介質(zhì)上的機(jī)器可讀形式的軟件來執(zhí)行,例如以包括計(jì)算機(jī)程序代碼模塊的計(jì)算機(jī)程序的形式,當(dāng)所述程序在計(jì)算機(jī)上運(yùn)行時(shí)并且在可以將所述計(jì)算機(jī)程序體現(xiàn)在計(jì)算機(jī)可讀介質(zhì)上的情況下,所述計(jì)算機(jī)程序代碼模塊適于執(zhí)行本文描述的任何方法的全部步驟。有形(或非暫態(tài))存儲(chǔ)介質(zhì)的示例包括磁盤、拇指驅(qū)動(dòng)、存儲(chǔ)卡等等,并且不包括傳播的信號。軟件可以適合于在并行處理器或串行處理器二者上執(zhí)行,以使得能夠按照任何合適的順序或者同時(shí)執(zhí)行所述方法步驟。
      [0015]這承認(rèn)了固件和軟件可以是有價(jià)值的,可單獨(dú)銷售的商品。意在包含在“啞”或標(biāo)準(zhǔn)硬件上運(yùn)行的或者控制該“啞”或標(biāo)準(zhǔn)硬件的軟件,以便執(zhí)行期望的功能。還意在包括諸如HDL(硬件描述語言)軟件的“描述”或定義硬件配置的軟件,例如用于設(shè)計(jì)硅芯片,或者用于配置通用可編程芯片,以便實(shí)現(xiàn)期望的功能。
      [0016]可以適當(dāng)?shù)亟M合優(yōu)選的特征,這對于本領(lǐng)域的普通技術(shù)人員來說是顯而易見的,并且可以將優(yōu)選的特征與本發(fā)明的任何方面進(jìn)行組合。
      【專利附圖】

      【附圖說明】
      [0017]將參照附圖通過示例的方式來描述本發(fā)明的實(shí)施例,在附圖中:
      [0018]圖1是示例單線程亂序處理器的示意圖;
      [0019]圖2是圖1的不例寄存器表的不意圖;
      [0020]圖3是用于監(jiān)控用于switch語句變量的寄存器的方法的流程圖;
      [0021]圖4是用于使用圖1和圖2的寄存器表中的數(shù)據(jù)來預(yù)測switch語句指令的目標(biāo)位置的方法的流程圖;并且
      [0022]圖5是示例多線程亂序處理器的示意圖。
      [0023]貫穿附圖使用共同的附圖標(biāo)記來指示類似的特征。
      【具體實(shí)施方式】
      [0024]下面僅通過示例的方式來描述本發(fā)明的實(shí)施例。這些示例代表 申請人:目前已知的實(shí)踐本發(fā)明的最佳方式,盡管這不是能夠?qū)崿F(xiàn)本發(fā)明的唯一方式。該描述闡釋了該示例的功能以及用于構(gòu)建和操作該示例的步驟序列。然而,可以通過不同的示例來實(shí)現(xiàn)相同或等效的功能和序列。
      [0025]如上所述,間接分支(例如,以變量而非常量值為基礎(chǔ)的分支)難于預(yù)測,因?yàn)榉种ьA(yù)測器必須同時(shí)預(yù)測分支是否被采用以及目標(biāo)在哪里二者。該目標(biāo)尤其難于預(yù)測,因?yàn)槠涞湫偷匾灾芷谛愿淖兊募拇嫫髦禐榛A(chǔ)。[0026]間接分支通常用于有限狀態(tài)機(jī)中,可以將該有限狀態(tài)機(jī)看作是其中具有C switch語句的循環(huán)。如本領(lǐng)域的普通技術(shù)人員已知的,switch語句用作將變量與一個(gè)值進(jìn)行比較的長if語句的替代。下面示出了 switch語句的基本格式。
      [0027]
      【權(quán)利要求】
      1.一種預(yù)測由處理器執(zhí)行的程序中的switch語句的目標(biāo)位置的方法(300,400),所述方法包括: 在由分支預(yù)測器維護(hù)的寄存器表中存儲(chǔ)對于至少一個(gè)被監(jiān)控的寄存器的當(dāng)前值,每一個(gè)被監(jiān)控的寄存器已被識別為存儲(chǔ)跳轉(zhuǎn)表switch語句的輸入變量,跳轉(zhuǎn)表switch語句是被編譯到跳轉(zhuǎn)表的switch語句; 在所述分支預(yù)測器處接收指令用于預(yù)測(302); 使用所述分支預(yù)測器確定接收到的指令是否寫入具有更新值的被監(jiān)控的寄存器之一(304); 對確定接收到的指令寫入具有更新值的被監(jiān)控的寄存器之一做出響應(yīng),利用所述更新值來更新對于被寫入的寄存器的所述寄存器表中的當(dāng)前值(306);并且 使用所述分支預(yù) 測器來使用所述當(dāng)前值預(yù)測跳轉(zhuǎn)表switch語句指令的目標(biāo)位置(410)。
      2.根據(jù)權(quán)利要求1所述的方法(300,400),進(jìn)一步包括: 在所述分支預(yù)測器處接收另一指令用于預(yù)測(402); 在所述分支預(yù)測器處確定所述另一指令是否是跳轉(zhuǎn)表switch語句指令(404): 對確定所述另一指令是跳轉(zhuǎn)表switch語句指令做出響應(yīng),確定所述寄存器表是否包括對于所述跳轉(zhuǎn)表switch語句指令的輸入變量的當(dāng)前值;并且 對確定所述寄存器表包括對于所述跳轉(zhuǎn)表switch語句指令的輸入變量的當(dāng)前值做出響應(yīng),使用所述當(dāng)前值預(yù)測所述switch語句指令的目標(biāo)位置(410)。
      3.根據(jù)權(quán)利要求2所述的方法(300,400),其中,確定所述另一指令是否是switch語句指令包括確定所述另一指令是否具有預(yù)定的模式。
      4.根據(jù)權(quán)利要求2或3所述的方法(300,400),進(jìn)一步包括: 對確定所述另一指令是跳轉(zhuǎn)表switch語句指令做出響應(yīng),使用于存儲(chǔ)所述跳轉(zhuǎn)表switch語句指令的所述輸入變量的寄存器作為被監(jiān)控的寄存器。
      5.根據(jù)權(quán)利要求4所述的方法(300,400),其中,使用于存儲(chǔ)所述跳轉(zhuǎn)表switch語句的所述輸入變量的寄存器作為被監(jiān)控的寄存器包括,在所述寄存器表中存儲(chǔ)識別用于存儲(chǔ)所述跳轉(zhuǎn)表switch語句的所述輸入變量的所述寄存器的信息。
      6.根據(jù)權(quán)利要求5所述的方法(300,400),其中,確定接收到的指令是否寫入被監(jiān)控的寄存器之一包括,將所述寄存器表中識別用于存儲(chǔ)所述跳轉(zhuǎn)表switch語句的所述輸入變量的所述寄存器的信息與接收到的指令中識別寫入寄存器的信息進(jìn)行比較。
      7.根據(jù)權(quán)利要求2或3所述的方法(300,400),進(jìn)一步包括: 對確定所述另一指令是跳轉(zhuǎn)表switch語句指令做出響應(yīng),確定所述當(dāng)前值是否要用于預(yù)測所述目標(biāo)位置(408);并且 對確定所述當(dāng)前值要用于預(yù)測所述目標(biāo)位置做出響應(yīng),使用所述當(dāng)前值來預(yù)測所述跳轉(zhuǎn)表switch語句指令的所述目標(biāo)位置。
      8.根據(jù)權(quán)利要求7所述的方法(300,400),其中,所述寄存器表包括對于每一個(gè)被監(jiān)控的寄存器的有效位,每一個(gè)有效位指示對于被監(jiān)控的寄存器的所述當(dāng)前值是否有效,并且確定在預(yù)測所述目標(biāo)位置時(shí)是否要使用所述當(dāng)前有效包括,分析所述有效位。
      9.根據(jù)權(quán)利要求7所述的方法(300,400),其中,所述寄存器表包括對于每一個(gè)被監(jiān)控的寄存器的計(jì)數(shù)器,每一個(gè)計(jì)數(shù)器指示對于被監(jiān)控的寄存器的當(dāng)前值自從被更新以來已經(jīng)被使用多少次來預(yù)測目標(biāo)位置;并且確定在預(yù)測所述目標(biāo)位置時(shí)是否要使用所述當(dāng)前值包括,將所述計(jì)數(shù)器與門限值進(jìn)行比較。
      10.根據(jù)權(quán)利要求7所述的方法(300,400),其中,所述寄存器表包括對于每一個(gè)被監(jiān)控的寄存器的置信度值,每一個(gè)置信度值指示對于被監(jiān)控的寄存器的當(dāng)前值將正確地預(yù)測對于相關(guān)聯(lián)的跳轉(zhuǎn)表switch語句的目標(biāo)位置的可能性;并且確定在預(yù)測所述目標(biāo)位置時(shí)是否要使用所述當(dāng)前值包括,將所述置信度值與門限值進(jìn)行比較。
      11.根據(jù)權(quán)利要求1至3中的任意一項(xiàng)所述的方法(300,400),其中,使用所述當(dāng)前值來預(yù)測所述跳轉(zhuǎn)表switch語句指令的目標(biāo)位置包括,組合用于所述跳轉(zhuǎn)表switch語句指令的程序計(jì)數(shù)器以及所述當(dāng)前值。
      12.根據(jù)權(quán)利要求11所述的方法(300,400),其中,組合用于所述跳轉(zhuǎn)表switch語句指令的程序計(jì)數(shù)器以及所述當(dāng)前值包括: 以用于所述跳轉(zhuǎn)表switch語句指令的程序計(jì)數(shù)器為基礎(chǔ),確定用于緊接在所述跳轉(zhuǎn)表switch語句指令之后的指令的程序計(jì)數(shù)器;并且 將所述當(dāng)前值乘以因子N以便生成換算的當(dāng)前值,其中,N是指令的尺寸;并且使用于緊接在所述跳轉(zhuǎn)表switch語句指令之后的指令的程序計(jì)數(shù)器與所述換算的當(dāng)前值進(jìn)行加和。
      13.根據(jù)權(quán)利要求1至3中的任意一項(xiàng)所述的方法(300,400),其中,所述寄存器表包括多個(gè)行,并且在所述寄存器表中以如何近期地被訪問為基礎(chǔ)來對所述行進(jìn)行排序。
      14.一種分支預(yù)測器(114,526,528),包括: 寄存器表(116,534,536),所述寄存器表(116,534,536)存儲(chǔ)用于至少一個(gè)被監(jiān)控的寄存器的當(dāng)前值,每一個(gè)被監(jiān)控的寄存器已被識別為存儲(chǔ)跳轉(zhuǎn)表switch語句的輸入變量,跳轉(zhuǎn)表switch語句是已經(jīng)被編譯到跳轉(zhuǎn)表的switch語句;以及 邏輯單元(I 15,530,532),與所述寄存器表(116,534,536)通信, 所述邏輯單元(115,530,532)配置為: 接收指令用于預(yù)測; 確定接收到的指令是否寫入具有更新值的被監(jiān)控的寄存器之一; 對確定接收到的指令寫入具有更新值的被監(jiān)控的寄存器之一做出響應(yīng),利用所述更新值來更新對于被寫入的所述寄存器的所述寄存器表(116,534,536)中的當(dāng)前值;并且使用所述當(dāng)前值來預(yù)測跳轉(zhuǎn)表switch語句指令的目標(biāo)位置。
      15.一種處理器( 100,500),包括根據(jù)權(quán)利要求14所述的分支預(yù)測器(114,526,528)。
      【文檔編號】G06F9/38GK103927149SQ201410058279
      【公開日】2014年7月16日 申請日期:2014年1月14日 優(yōu)先權(quán)日:2013年1月14日
      【發(fā)明者】H·杰克遜 申請人:想象力科技有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
      1