国产精品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>

      對非控制流指令減少分支檢驗的制作方法

      文檔序號:6469102閱讀:189來源:國知局

      專利名稱::對非控制流指令減少分支檢驗的制作方法
      技術(shù)領(lǐng)域
      :本發(fā)明一般涉及微處理器,特別是為分支預(yù)測降低能耗。
      背景技術(shù)
      :微處理器是響應(yīng)于實現(xiàn)計算機程序的指令來執(zhí)行各種計算操作的電子設(shè)備。實現(xiàn)計算機程序的通用技術(shù)是以預(yù)定序列發(fā)送多個指令到微處理器的執(zhí)行單元,然后順序地執(zhí)行這些指令。在一些情況下,程序跳出了次序來執(zhí)行不是序列里的下條指令的指令。可以引起執(zhí)行跳出序列的指令的一個例子是分支指令。當執(zhí)行一分支指令時,微處理器可以跳到由分支指令標識的目標指令,并且微處理器下一步執(zhí)行的是該目標指令,而非下一順序指令。如圖示,圖1顯示程序執(zhí)行序列的示例,其中以順序方式執(zhí)行五個順序指令1-5,指令1首先執(zhí)行,然后第二執(zhí)行指令2等等。在該示例中,指令5是一分支指令,其指定指令2為其目標指令。執(zhí)行分支指令5后,微處理器跳出了順序指令的次序,接下來執(zhí)行程序執(zhí)行順序中的指令2,而非下一順序指令6。微處理器經(jīng)常使用幾個階段來處理指令,其可包括指令取階段,其中從指令高速緩存中取出指令;指令解碼階段,其中對取來的指令進行解碼;指令執(zhí)行階段,其中執(zhí)行指令。為了提高通過各種階段處理多個指令的速度,一些微處理器采用已知的流水線技術(shù)。流水線在流水線的多個階段對幾個不同的指令同時執(zhí)行處理的不同部分的意義上類似于裝配線。流水線技術(shù)的一個例子是,在第一計算周期中由流水線的第一階段處理第一指令1。在第二周期中,第一指令1進入到流水線的第二階段,并且第二指令2開始流水線的第一階段。在第三周期中,第一指令1進入到流水線的第三階段,第二指令2進入到流水線的第二階段,并且第三指令3開始流水線的第一階段等等。流水線可以使得多個指令執(zhí)行得比微處理器每次只處理一條指令的情況更快速。例如,流水線技術(shù)允許在每個周期完成不同指令的處理。分支指令會降低流水線技術(shù)的效率。當執(zhí)行一分支指令時,微處理器可能試圖跳出順序的次序,而執(zhí)行并不在流水線中的目標指令。要跳到目標指令,微處理器可能放棄已經(jīng)在流水線中的指令,然后開始重新啟動在目標指令開始的流水線。結(jié)果當目標指令被取和由流水線的初始階段進行處理時,可能發(fā)生延遲,導致通過流水線處理指令時速度的總體下降。分支預(yù)測是已用來提高執(zhí)行分支指令的流水線微處理器的速度的技術(shù)。分支預(yù)測通過使能微處理器在執(zhí)行分支指令之前就取出分支指令后有可能執(zhí)行的指令,可提高流水線微處理器的速度。分支預(yù)測可以包括預(yù)測條件分支是否采用、和/或預(yù)測分支目標,其是分支指令的目標指令。例如,當微處理器確定條件分支可能被采用時,可以在執(zhí)行分支指令之前將預(yù)測的目標指令取入到流水線中,以為分支操作的流水線作準備。分支歷史表是可以存儲關(guān)于之前分支是否被采用的歷史信息的分支預(yù)測單元,該歷史信息可用于預(yù)測未來的分支是否將被采用。分支目標緩沖器是可以預(yù)測分支指令的目標的分支預(yù)測單元。一些微處理器使用分支歷史表和分支目標緩沖器來執(zhí)行分支預(yù)測。
      發(fā)明內(nèi)容—些實施例涉及一種執(zhí)行指令的微處理器。微處理器取一組指令,所述指令包括至少一個控制流指令和至少一個非控制流指令。微處理器包括控制指令標識單元和分支預(yù)測單元??刂浦噶顦俗R單元存儲控制指令標識信息,所述控制指令標識信息標識已取指令組中該至少一個非控制流指令。分支預(yù)測單元檢驗對應(yīng)該至少一個控制流指令的已存儲的分支預(yù)測信息,不檢驗對應(yīng)該至少一個非控制流指令的已存儲的分支預(yù)測信息?!嵤├婕霸谖⑻幚砥髦袡z驗分支預(yù)測信息的方法,其中在該組已取指令中標識一個或多個控制流指令。對于控制流指令進行分支預(yù)測信息的檢驗,而對于非控制流指令不進行分支預(yù)測信息的檢驗。附圖中,每個相同的或幾乎相同的組件在不同圖中用相似的數(shù)字表示。為了清楚起見,并非每個附圖的所有組件都進行標注。附圖中顯示包括分支指令的程序執(zhí)行順序的示例;顯示根據(jù)一些實施例的超標量微處理器的前端流水線;顯示根據(jù)一些實施例,具有對于非控制流指令索引輸入可被禁止的分支目圖l圖2圖3標緩沖器;圖4史表;圖5圖6顯示根據(jù)一些實施例,具有對于非控制流指令索引輸入可被禁止的分支歷顯示根據(jù)一些實施例的指令高速緩存標簽數(shù)組,其存儲控制指令標識信息;顯示根據(jù)一些實施例的控制指令標識單元的示例,其可以存儲控制標識信息以使(多個)索引輸入對BHT和/或BTB使能/禁止;圖7.顯示根據(jù)一些實施例的電路,其為分支目標緩沖器和/或分支歷史表產(chǎn)生掩碼信號;具體實施例如上所述,分支指令會降低微處理器流水線的速度,一些微處理器包括(多個)硬件組件諸如分支歷史表(branchhistorytable,BHT)和/或分支目標緩沖器(branchtargetbuffer,BTB),其提供可用于提高流水線的速度的分支預(yù)測信息。一些微處理器,例如超標量微處理器,使用分支歷史表和分支目標緩沖器來改善性能。超標量微處理器是一種利用微處理器核心內(nèi)幾個功能單元,例如算術(shù)邏輯單元和/或其它的功能單元在一個周期中執(zhí)行多于一個指令的處理器。在超標量微處理器中,可以從指令高速緩存中并行地取出幾個指令。當指令取正被執(zhí)行時,可以同時檢驗BHT和/或BTB的關(guān)于該被取指令的分支預(yù)測信息。例如,如果在指令取階段取出四個指令,可以檢驗BHT和/或BTB的對應(yīng)于該四條被取指令的任何分支預(yù)測信息。如果一個或多個指令是分支指令,BHT和/或BTB可以提供對應(yīng)的分支預(yù)測信息,其可用于改善流水線的速度。例如,如果預(yù)測要采用一條件分支,微處理器可以在執(zhí)行該分支指令之前取出目標指令來提前準備。5我們已經(jīng)意識到,為分支預(yù)測訪問BHT和/或BTB會消耗大量的功率,特別是當并行檢驗多個指令時。根據(jù)現(xiàn)有技術(shù),如果并行取幾個指令,都將由BHT和/或BTB檢驗所有的被取指令的對應(yīng)分支預(yù)測信息。然而,也已經(jīng)意識到的是,檢驗所有已取指令會消耗大量的功率,而且檢驗所有的已取指令可能并不是必要的。特別是已經(jīng)意識到,只有控制流指令有可能執(zhí)行分支操作,而非控制流指令可能不執(zhí)行分支操作??刂屏髦噶羁梢砸痍P(guān)于將由微處理器執(zhí)行的程序流的判斷,而且具有引起分支操作的可能性。然而非控制流指令對程序流沒有影響,也沒有引起分支操作的可能性。因此,在BHT和/或BTB中檢驗非控制流指令是不必要的,因為非控制流指令不進行分支操作,并且BHT和BTB將沒有與非控制流指令對應(yīng)的分支預(yù)測信息。因此已經(jīng)意識到,通過減少或阻止對BHT和/或BTB訪問非控制流指令可節(jié)省大量的功率。在一些實施例中,將微處理器配置成在BHT和/或BTB中對已取指令組中的控制流指令檢驗對應(yīng)的分支預(yù)測信息,對已取指令組中的非控制流指令不檢驗分支預(yù)測信息。該技術(shù)可以降低在BHT和/或BTB中查找的指令數(shù),并因此降低由BHT和/或BTB的消耗的功率量。對于許多應(yīng)用已經(jīng)顯示出了仿真結(jié)果,只有少量的已取指令是可以引發(fā)分支操作的控制流指令。例如,在具有四個指令的取帶寬的微處理器中,大部分的取指令塊(fetchblock)可能包括0、1個或2個控制流指令,極少的取指令塊可能包括3個或者4個控制流指令。對于一些指令集結(jié)構(gòu)(ISA),如MIPS(MicroprocessorwithoutInterlockedPipelineStages,無互鎖流水線階段的微處理器),控制指令后面有延遲槽指令,延遲槽指令不是控制流指令。在這樣的體系結(jié)構(gòu)中,四指令的取指令塊可能包括不多于兩個控制流指令。因為控制流指令的數(shù)量相對少,可以通過防止一些或全部非控制流指令對BTB和/或BHT訪問,來降低對BTB或BHT的訪問數(shù)量,這能顯著節(jié)省BTB和/或BHT內(nèi)的功率。在一些實施例中,控制流指令和非控制流指令可以在執(zhí)行之前進行標識,以減少或消除基于非控制流指令對BTB和/或BHT的訪問。當確定一組已取指令中的哪些指令是非控制流指令后,對于非控制流指令可以阻止或減少對BTB和/或BHT的訪問。已經(jīng)顯示了仿真結(jié)果是使用這樣的技術(shù)可以節(jié)約大量功率,在一些情況下BTB和BHT的總功耗可以降低58.38%。然而功耗降低量會根據(jù)特定的實現(xiàn)方式而更高或更低。圖2顯示了根據(jù)一些實施例的超標量微處理器的前端流水線。在該實例中,流水線的第一階段是指令取階段,其中指令從指令高速緩存23中取出用于后續(xù)的處理和執(zhí)行。訪問BTB21、BHT22、指令轉(zhuǎn)換后備緩沖器(ITLB)24和控制指令標識單元(CII)25也在該階段同指令取同時執(zhí)行。BTB21、BHT22和控制指令標識單元25的操作將在下文中更詳細地論述。在一些實施例中,使用微處理器的程序計數(shù)器(PC)作為記錄在指令執(zhí)行序列中程序的當前位置的索引來訪問設(shè)備21-25,該程序計數(shù)器。例如,BTB21和BHT22可以利用正從指令高速緩存中取出的指令的一個或多個PC來索引,BTB21和/或BHT22可以利用該索引來搜索對應(yīng)的分支預(yù)測信息。圖3顯示根據(jù)一些實施例存儲分支預(yù)測信息的分支目標緩沖器21的示例。分支目標緩沖器21存儲了幾個分別代表分支指令的標簽31,還存儲它們的對應(yīng)預(yù)測分支目標的索引作為目標PC32。通過比較該索引和標簽31,可以檢驗分支目標緩沖器21的分支預(yù)測信息,以確定是否有BTB"擊中",其意味著BTB21存儲了對應(yīng)于正被查找的索引所對應(yīng)6的分支預(yù)測信息。可以通過多于一個索引同時訪問BTB21來查找取指令組中的多于一個的指令。例如,如果正從指令高速緩存中同時取出一組四個指令,分支目標緩沖器21可以根據(jù)四個已取指令的四個程序計數(shù)器被同時訪問。例如,對于諸如RISC(精簡指令集計算機)這樣的指令集體系結(jié)構(gòu),每個指令的長度可能是四字節(jié)(32位)。在一些微處理器存儲器系統(tǒng)中,最小的可尋址單元是一字節(jié)。因此在RISC微處理器中,用于訪問BTB21的索引可以以四字節(jié)的增量來分開。例如,在具有四指令的取指令帶寬的RISC微處理器中,可以使用四個索引來同時訪問BTB21,如PC,PC+4,PC+8和PC+12。如圖3所示,所有四個索引可以提供給BTB21,并用于在同一時間訪問分支目標緩沖器。如果有一BTB"擊中",該"擊中"指令的目標PC可用于將指令取重新指向到分支指令對應(yīng)的目標PC。如果對該組已取指令出現(xiàn)多個BTB擊中,程序序列中最早指令的目標PC可用于將指令取重新指向到對應(yīng)的目標PC。盡管已經(jīng)討論過RISC的實現(xiàn)方式,其中每個指令的長度是四字節(jié),此處所描述的技術(shù)并不局限于此實現(xiàn)方式,可以使用任何合適長度的指令,例如多于或少于四字節(jié)。此處描述的技術(shù)也包括使用在指令長度不固定的微處理器上,其具有可變指令長度。在這樣的微處理中,相鄰指令的地址差可能不等于四。如上所述,應(yīng)當意識到,通過對于非控制流指令減少訪問BTB21的次數(shù),可以降低BTB21的消耗的功率。一旦識別出已取指令組中的控制流指令,可以限制對BTB21的訪問,使得在BTB21中只查找控制流指令。如圖3所示,一些實施例中,BTB21包括"使能"輸入,其可用于使能或禁止在BTB21中查找對應(yīng)的指令。圖3所示的BTB21包括四個使能輸入,每個使能輸入對應(yīng)可被同時查找的四個指令索引中的一個。在本實施例中,輸入使能0'用于使能第一指令索引(PC),輸入使能1'用于使能第二指令索引(PC+4),輸入使能2'用于使能第三指令索引(PC+8),輸入使能3'用于使能第四指令索引(PC+12)。如果對應(yīng)的使能輸入接收到具有高邏輯值的信號,那么對應(yīng)的指令索引輸入可被使能,允許該指令在BTB21中查找。如果對應(yīng)的使能輸入接收到具有低邏輯值的信號,那么對應(yīng)的指令索引輸入可被禁止,阻止該指令在BTB21中查找。然而,這僅是一個例子,應(yīng)當意識到的是此處描述的技術(shù)可使用任何合適的邏輯電平。在一些實施例中,圖3所示的使能信號可以由一個或多個邏輯電路33提供給BTB21,如圖3所示的與(AND)門。在該示例中,四個AND各具有兩個輸入可用于使能指令索引輸入的所有操作的對應(yīng)的使能信號,可用于對于非控制流指令禁止指令索引輸入的對應(yīng)的掩碼輸入信號。產(chǎn)生這些掩碼信號的示例性技術(shù)將在下文中參考圖7作進一步的討論。圖4顯示根據(jù)一些實施例的分支歷史表22的示例,該分支歷史表可存儲關(guān)于在先分支和預(yù)測未來分支的分支歷史信息。分支歷史表22可以存儲關(guān)于之前的條件分支是否已被采用的分支歷史信息。分支歷史表22可以利用分支歷史信息來預(yù)測一條件分支將來是否被采用。如圖4所示,分支歷史表22包括預(yù)測單元41和42,其可以使用任何合適的技術(shù)來執(zhí)行各種不同類型的分支預(yù)測。分支歷史表22還包括選擇器43,其選擇使用哪種類型的分支預(yù)測,并可能選擇使用哪個預(yù)測單元,如預(yù)測單元41或42。如圖4所示,與分支目標緩沖器21相同,如果從指令高速緩存中取出四個指令,可以使用四個對應(yīng)的索引來同時對分支歷史表22進行訪問,如PC,PC+4,PC+8,PC+12。如上所述,已經(jīng)意識到的是通過基于非控制流指令來減少對BHT22的訪問數(shù)量,可以降低BHT22消耗的功率。一旦標識出已取指令組中的控制流指令,可以限制對BHT22的訪問,使得在BHT22中只查找控制流信息,以得到任何對應(yīng)的分支預(yù)測信息。如圖4所示,一些實施例中,BHT22包括"使能"輸入,其可用于使能或禁止在BHT22中查找對應(yīng)的指令。在一些實施例中,這些使能輸入功能上類似于之前針對BTB21討論的使能輸入。在一些微處理器中,BTB和BHT的預(yù)測結(jié)果可被傳送到解碼階段,其中會對BTB和BHT的預(yù)測結(jié)果進行比較。根據(jù)一些技術(shù),當來自BTB和BHT的預(yù)測結(jié)果互相不一致時,可使用BHT的預(yù)測結(jié)果。然而,應(yīng)當意識到的是,由于本發(fā)明并不局限于特定分支預(yù)測技術(shù)或設(shè)備的使用,可以使用BTB和BHT的預(yù)測結(jié)果之一或全部。—些實施例是關(guān)于從指令高速緩存中取出一組指令之前標識一組已取指令中的控制流指令。例如,在標識控制指令之后,控制指令的PC可以用于訪問BTB和/或BHT,而不是已取指令組中的所有指令。在一些實施例中,微處理器包括指令高速緩存標簽數(shù)組(tagarray),其存儲標識控制流指令的控制指令標識信息。該控制標識信息可以存儲在指令高速緩存標簽數(shù)組中,或是其它合適的位置。圖5顯示根據(jù)一些實施例的指令高速緩存標簽數(shù)組50的示例,其與存儲多個指令的指令高速緩存23相關(guān)聯(lián)。指令高速緩存可能包括許多"行",每個行存儲多個控制指令,并且每行可能同指令高速緩存標簽數(shù)組的高速緩存標簽51相關(guān)聯(lián)。對于指令高速緩存中的每行,指令標簽數(shù)組可能存儲對應(yīng)的控制指令標識信息52,其包括控制指令標識位。在該示例中,每一高速緩存行存儲16個指令,指令高速緩存標簽數(shù)組為每一高速緩存行存儲16個控制指令標識位的對應(yīng)的集合。每一控制指令標識位標識在該指令高速緩存中對應(yīng)的指令是控制流指令還是非控制流指令。在該示例中,"1"表示對應(yīng)指令為控制流指令,"0"表示對應(yīng)指令為非控制流指令。然而這僅是一示例,可以使用任何合適類型的控制標識信息來標識控制流指令和/或非控制流指令。為了獲得存儲在指令高速緩存標簽數(shù)組中的控制指令標識信息,一個或多個解碼器53可以預(yù)解碼指令,以產(chǎn)生控制指令標識信息52。當例如執(zhí)行指令高速緩存行重填時,或在另一合適的時間時,可以存儲指令高速緩存中一行的控制指令標識信息52。一些微處理器使用重填單元,其負責從通過存儲總線接收到的指令重填數(shù)據(jù)數(shù)組和指令高速緩存標簽數(shù)組。重填單元可以提供指令給一個或多個解碼器,解碼器從每個指令中提取信息,基于所提取的信息確定每個指令是控制流指令還是非控制流指令。例如,解碼器可以提取指令的optcode,其表示指令是哪種類型。通過檢查每條指令的optcode,解碼器可以確定哪些指令是控制流指令,哪些指令是非控制流指令。指令高速緩存標簽數(shù)組50的一個可能的限制是在指令從指令高速緩存取出的同時訪問BHT22和BTB21,在那時來自指令高速緩存標簽數(shù)組50的控制指令標識信息52可能對于BHT22和BTB21不可用。指令高速緩存標簽數(shù)組50不能足夠快地訪問控制指令標識信息52,以用于BHT22和/或BTB21的使能/禁止輸入。要給BHT22和BTB21提供這種控制標識信息52,可以使用另一裝置,以下稱其為控制指令標識單元(controlinstructionidentification皿it,CII)圖6顯示根據(jù)一些實施例描述控制指令標識單元25的示例,其可以存儲控制指令標識信息52,以用于BTB21和/或BHT22的使能/禁止輸入??梢哉J為控制指令標識單元25是個象BTB或BHT的預(yù)測單元,可以預(yù)測下一高速緩存行地址。通過預(yù)測下一高速緩存行地址,CII25可以提前獲得下一高速緩存行的控制指令標識信息52,這樣當由取單元訪問下一高速緩存行時,該高速緩存行的控制標識信息52在CII中可用,并且該信息可以提供給BTB和/或BHT,以便BTB和/或BHT只對于控制流指令可被訪問。控制指令標識單元25可以對指令高速緩存中的一行存儲三種類型的信息高速緩存行地址61,控制指令標識信息52,和飽和計數(shù)器62。特定高速緩存行條目(entry)的高速緩存行地址61可以是指令高速緩存中的預(yù)測的下一行。高速緩存行的控制指令標識信息52是為指令高速緩存中相關(guān)行標識控制流指令或非控制流指令。飽和計數(shù)器62可以包括兩位,其功能上類似于用于其它預(yù)測單元,如BHT,的飽和計數(shù)器,也可以用于提高預(yù)測精度。在一些實現(xiàn)中,當飽和計數(shù)器62的值等于2或以上時,由CII單元25做出下一高速緩存行的預(yù)測,因為預(yù)測被確定為強。然而當飽和計數(shù)器的值低于2時,該預(yù)測可被確定為不夠精確,可能并不做出預(yù)測。然而應(yīng)當意識到的,可以使用任何合適的預(yù)測技術(shù),此處所描述的技術(shù)并不局限于使用飽和計數(shù)器??刂浦噶顦俗R單元25可以從指令高速緩存標簽數(shù)組50接收和存儲控制指令標識信息52,伴隨相應(yīng)的高速緩存行地址61。在BHT、BTB、指令高速緩存和ITBL使用正被取的當前PC的同時訪問控制指令標識單元25。每一周期,控制指令標識單元25可以為該組指令預(yù)測下一高速緩存行地址。每一周期,由控制指令標識單元25預(yù)測的高速緩存行地址可以與正從指令高速緩存中取出的當前PC進行比較。如果兩地址匹配,則由控制指令標識單元25提供的預(yù)測是正確的,由控制指令標識單元25提供的對應(yīng)控制指令標識信息正確地對標識了已取指令塊中的控制流指令和非控制流指令。然后可以根據(jù)標識的控制流指令來訪問BTB21和BHT22,而對于非控制流指令,不訪問BTB21和BHT22。然而,如果兩個地址不匹配,那么在之前周期預(yù)測的地址是不正確的,所提供的控制標識信息可能與當前正取的指令并不對應(yīng)。當預(yù)測高速緩存行被確定為不正確時,在BHT和/或BTB中檢驗所有的所取指令?,F(xiàn)在說明控制指令標識單元25的操作的示例。在第一周期(周期_0),指令高速緩存的第一行(高速緩存行J))的程序計數(shù)器(PC_0)可用于訪問CII25。在程序計數(shù)器用于訪問指令高速緩存、BTB和BHT的同時,可以使用PC_0訪問CII25。哈希功能單元63可以在程序計數(shù)器PC_0上計算一哈希函數(shù)來產(chǎn)生索引(索引_0),且該索引可用于訪問CII25以查找下一高速緩存行信息。在后面的周期(周期jii),可以訪問指令高速緩存的下一行(高速緩存行_1)。高速緩存行_1的地址可以從指令取單元獲得。如果對于高速緩存行_1在指令高速緩存中有高速緩存行擊中,可以基于該指令高速緩存標簽數(shù)組中對應(yīng)的條目獲得控制指令標識信息52。如果在指令高速緩存中未得到高速緩存行(高速緩存行_1),高速緩存行則從存儲器中取出,并被重填到該指令高速緩存。當該高速緩存行被重填時,對應(yīng)的控制指令標識信息可由重填單元的(多個)解碼器53產(chǎn)生。當接收到高速緩存行_1的控制指令信息時,可知高速緩存行_1是高速緩存行J)的下一高速緩存行。在周期_0中,CII單元作出誰是CII[索引O]的預(yù)測。在CII25中在CII[索引—0]中的控制指令標識信息可從CII25中讀出,以在當訪問下一高速緩存行(高速緩存行_1)的另一周期(周期_m)期間使用,且該信息可用于使能或禁止BTB和/或BHT的輸入。如果高速緩存行_1地址等于在周期_0中預(yù)測的CII[索引0]地址,這意味著周期_0中的預(yù)測是正確的,因此來自周期J)的控制指令信息請求可在該周期中使用以使能/禁止BTB/BHT訪問。此外,CII[索引0]中的飽和計數(shù)器62增加"l",這意味著CII單元25做出了正確的預(yù)測。然而,如果所取的高速緩存行地址不等于CII[索引O]地址,這意味著周期_0中的預(yù)測是錯誤的,而且在周期O中請求的控制指令標識信息52不是對應(yīng)于高速緩存行_1的信息。在這種情況下,可以執(zhí)行CII信息校正。隨著BHT信息校正,CII條目可能不會立刻被新高速緩存行信息替換。在替換在CII[索引O]的信息之前,可以檢驗飽和計數(shù)器62的CII[索引0]。在一些實現(xiàn)方式中,如果計數(shù)器不等于"0",該CII[索引0]不被替換,且"計數(shù)器"可減少1。如果CII[索引0]的飽和計數(shù)器62等于"0",可以用高速緩存行_1的信息替換CII[索引0]。圖7顯示根據(jù)一些實施例的說明掩碼信號產(chǎn)生電路的示圖,其從控制指令標識單元25接收預(yù)測地址和控制標識信息并產(chǎn)生掩碼信號,該掩碼信號可用于使能/禁止BTB和/或BHT的輸入。在本示例中,控制標識信息25被提供給16:4多路復(fù)用器(MUX)72,其從16個指令中選擇對應(yīng)正被取的4個指令的4個指令。當前取PC的低位位可用于選擇對應(yīng)于正被取的四個指令的控制指令標識信息25。例如,如果高速緩存行包括16個指令,MUX72可使用取PC的低位位來確定當前正取的是哪四個指令。由16:4MUX72所產(chǎn)生的四個信號分別提供給掩碼信號產(chǎn)生邏輯73的四個OR門的相應(yīng)的第一輸入。如圖7所示,比較單元71將對應(yīng)高速緩存行地址的取PC的高位位同來自控制指令標識單元25的預(yù)測地址進行比較。OR門的第二輸入接收在實際地址和預(yù)測地址之間比較的結(jié)果的補充(complement)。基于第一和第二輸入,OR門產(chǎn)生掩碼信號掩碼0-掩碼3,其可用于如圖3和4中所示的BTB和/或BHT的使能/禁止輸入。如果兩個比較的地址是相等的,則OR門的第二輸入為低,掩碼信號等于該四個指令的控制標識信息。如果兩地址不相等,則由控制指令標識單元25預(yù)測的地址不正確,這意味著控制標識信息并沒有與當前正取的指令對應(yīng)。因此,0R門的第二輸入是高,導致所有的掩碼信號為高,允許所有指令在BTB和BHT中查找。然而,應(yīng)當意識到的是這僅是一示例,可以使用任何適合的掩碼信號產(chǎn)生電路。如上所述,一些指令是控制流指令,而一些指令是非控制流指令。此處使用的術(shù)語"非控制流指令"指不是控制流指令的指令。控制流指令的例子包括能夠執(zhí)行跳轉(zhuǎn)操作或分支操作的指令。在MIPS32體系結(jié)構(gòu)中,例如,下列指令是控制流指令b,bal,beq,beql,bgez,bgezal和bgezall(同分支相關(guān)的指令);以及j,jal,jr和jalr(同跳轉(zhuǎn)相關(guān)的指令)。然而,應(yīng)當意識到的是這不是指令的唯一列表。此外,可以使用任何合適的體系結(jié)構(gòu),MIPS32僅是一個例子。本發(fā)明并不局限于應(yīng)用于之前如圖所示或所述的構(gòu)造細節(jié)和組件布置。本發(fā)明可有可以各種不同方式予以實施或?qū)崿F(xiàn)的其它實施例。而且,此處所用措詞和術(shù)語是為了描述之用,不應(yīng)被看做是限制。使用"包括"、"包含"、或"具有"、"含有"、"有"和其它表達方式,意味著囊括了此后所列的術(shù)語和其等價物以及附加的術(shù)語。已經(jīng)這樣描述了本發(fā)明的至少一個實施例的幾個方面,應(yīng)該理解對于本領(lǐng)域技術(shù)人員可以很容易產(chǎn)生不同變化、修改和改進。這些變化、修改和改進應(yīng)該是本發(fā)明公開的一部分,應(yīng)該屬于本發(fā)明的精神和范圍之內(nèi)。因此,前述說明書和附圖僅僅是舉例的方式。權(quán)利要求一種執(zhí)行指令的微處理器,其中該微處理器取一組指令,所述指令包括至少一個控制流指令和至少一個非控制流指令,該微處理器包括控制指令標識單元,其存儲控制指令標識信息,所述控制指令標識信息標識已取指令組中該至少一個非控制流指令;分支預(yù)測單元,其檢驗對應(yīng)于該至少一個控制流指令的分支預(yù)測信息,并且不檢驗對應(yīng)于該至少一個非控制流指令的分支預(yù)測信息。2.如權(quán)利要求1所述的微處理器,其中分支預(yù)測單元包含分支歷史表。3.如權(quán)利要求1所述的微處理器,其中分支預(yù)測單元包含分支目標緩沖器。4.如權(quán)利要求1所述的微處理器,其中微處理器是并行取該組指令的超標量處理器。5.如權(quán)利要求1所述的微處理器,其中微處理器根據(jù)包括多個階段的流水線執(zhí)行指令,其中分支預(yù)測單元在該多個階段的第一階段檢驗分支預(yù)測信息,該微處理器進一步包括指令高速緩存,在流水線的該第一階段中從所述指令高速緩存中取出該組指令。6.如權(quán)利要求5所述的微處理器,進一步包括存儲控制指令標識信息的指令高速緩存標簽數(shù)組,其中該控制指令標識信息標識該至少一個控制流指令,其中控制指令標識單元從指令高速緩存標簽數(shù)組中接收控制指令標識信息。7.如權(quán)利要求6所述的微處理器,進一步包括至少一個解碼器,其對指令進行解碼以產(chǎn)生控制指令標識信息,其中指令高速緩存標簽數(shù)組從該至少一個解碼器接收該控制指令標識信息。8.如權(quán)利要求5所述的微處理器,其中該控制指令標識單元預(yù)測該指令高速緩存的地址。9.如權(quán)利要求8所述的微處理器,其中該微處理器使用程序計數(shù)器對指令高速緩存進行訪問,其中該微處理器進一步包括比較單元,其對程序計數(shù)器的至少一部分同由控制指令標識單元預(yù)測的地址進行比較。10.如權(quán)利要求9所述的微處理器,其中當程序計數(shù)器的該至少一部分同由控制指令標識單元預(yù)測的地址匹配時,分支預(yù)測單元檢驗對應(yīng)于該至少一個控制流指令的分支預(yù)測信息,并且不檢驗對應(yīng)于該至少一個非控制流指令的分支預(yù)測信息。11.在執(zhí)行指令的微處理器中,檢驗分支預(yù)測信息的方法,該方法包括取一組指令,包括至少一個控制流指令和至少一個非控制流指令;對應(yīng)于該至少一個控制流指令檢驗分支預(yù)測單元的分支預(yù)測信息,對應(yīng)于該至少一個非控制流指令不檢驗分支預(yù)測單元的分支預(yù)測信息。12.如權(quán)利要求ll所述的方法,進一步包括預(yù)解碼該組指令,以產(chǎn)生標識該至少一個控制流指令和該至少一個非控制流指令的控制指令標識信息。13.如權(quán)利要求12所述的方法,進一步包括在指令高速緩存標簽數(shù)組中存儲該控制指令標識信息。14.如權(quán)利要求12所述的方法,進一步包括在控制指令標識單元中存儲該控制指令標識信息。15.如權(quán)利要求ll所述的方法,進一步包括訪問指令高速緩存,以取出該組指令;在訪問該指令高速緩存的同時,訪問存儲控制指令標識信息的控制指令標識單元,所述控制指令標識信息標識該至少一個控制流指令和該至少一個非控制流指令;以及在訪問指令高速緩存的同時,基于控制指令標識信息檢驗分支預(yù)測單元。全文摘要本發(fā)明涉及對非控制流指令減少分支檢驗。一些微處理器在分支歷史表和/或分支目標緩沖器中檢驗分支預(yù)測信息。要檢驗分支預(yù)測信息,微處理器可以標識哪些指令是控制流指令,哪些指令是非控制流指令。要降低分支歷史表和/或分支目標緩沖器中的功耗,分支歷史表和/或分支目標緩沖器可以檢驗對應(yīng)于控制流指令的分支預(yù)測信息,而不檢驗對應(yīng)于非控制流指令的分支預(yù)測信息。文檔編號G06F9/38GK101763249SQ200810190998公開日2010年6月30日申請日期2008年12月25日優(yōu)先權(quán)日2008年12月25日發(fā)明者吳永強,孫紅霞,王凱峰申請人:世意法(北京)半導體研發(fā)有限責任公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1