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

      用于循環(huán)分支的分支歷史寄存器的制作方法

      文檔序號(hào):6454204閱讀:221來(lái)源:國(guó)知局
      專利名稱:用于循環(huán)分支的分支歷史寄存器的制作方法
      用于循環(huán)分支的分支歷史寄存器技術(shù)領(lǐng)域本揭示內(nèi)容一般而言涉及處理器領(lǐng)域且明確地說涉及一種使用多個(gè)位表示分支 歷史寄存器中的循環(huán)分支的方法。
      背景技術(shù)
      微處理器在很多種應(yīng)用中執(zhí)行計(jì)算任務(wù)。幾乎總期望改進(jìn)的處理器性能,以允許 通過軟件改變而得到更快的操作及/或增加的功能性。在常見的嵌入式應(yīng)用(例如,便 攜式電子裝置)中,還期望節(jié)省功率。常見的現(xiàn)代化處理器均采用管線式架構(gòu),其中每一者具有多個(gè)執(zhí)行步驟的順序指 令在執(zhí)行時(shí)重疊。為得到最大性能,指令應(yīng)連續(xù)地流過管線。致使指令在管線中停止的任何情形均有害地影響性能。如果必須從管線清除并隨后重新提取指令,那么性能 及功率消耗兩者可遭受損失。通常,所有的真實(shí)世界程序均包含條件分支指令,且條件分支指令的實(shí)際分支行 為通常直至在管線深處評(píng)估指令時(shí)才能獲知。為避免可由等待分支指令的實(shí)際評(píng)估引 起的停止,常見的現(xiàn)代化處理器采用某一形式的分支預(yù)測(cè),借此在管線中較早地預(yù)測(cè) 條件分支指令的分支行為?;陬A(yù)測(cè)的分支評(píng)估,處理器推測(cè)性地提取(預(yù)提取)并 執(zhí)行來(lái)自預(yù)測(cè)的地址的指令,所述預(yù)測(cè)的地址是分支目標(biāo)地址(如果預(yù)測(cè)采用所述分 支)或所述分支指令之后的下一順序地址(如果預(yù)測(cè)不采用所述分支)。在確定實(shí)際 分支行為時(shí),如果分支被錯(cuò)誤預(yù)測(cè),那么必須從管線清除推測(cè)性地提取的指令,且從 正確的下一地址提取新的指令。響應(yīng)于錯(cuò)誤的分支預(yù)測(cè)來(lái)預(yù)提取指令不利地影響處理 器性能及功率消耗。因此,期望改進(jìn)分支預(yù)測(cè)的準(zhǔn)確性。已知的分支預(yù)測(cè)技術(shù)包含靜態(tài)及動(dòng)態(tài)預(yù)測(cè)兩者。 一些分支指令的可能行為可由編 程器及/或編譯器靜態(tài)地預(yù)測(cè)。 一個(gè)實(shí)例是錯(cuò)誤檢査例行程序。常見的代碼正確地執(zhí)行, 且錯(cuò)誤極少。因此,實(shí)施"錯(cuò)誤分支"功能的分支指令將在極高的時(shí)間百分比中評(píng)估 為"不采用"。此指令可包含操作代碼中的靜態(tài)分支預(yù)測(cè)位,所述靜態(tài)分支預(yù)測(cè)位是 由知道分支條件的常見最可能結(jié)果的編程器或編譯器設(shè)定。動(dòng)態(tài)預(yù)測(cè)一般是基于正預(yù)測(cè)的分支指令及/或相同代碼中的其它分支指令的分支 評(píng)估歷史(且在一些情況下,分支預(yù)測(cè)準(zhǔn)確性歷史)。對(duì)實(shí)際代碼的廣泛分析指示, 不久以前的分支評(píng)估模式可能是未來(lái)分支指令的評(píng)估的良好指示符。圖1中所描繪的一種己知形式的動(dòng)態(tài)分支預(yù)測(cè)利用分支歷史寄存器(BHR) 100 來(lái)存儲(chǔ)以前的n個(gè)分支評(píng)估。在簡(jiǎn)單的實(shí)施方案中,BHR30包括移位寄存器。移入常 見的最近分支評(píng)估結(jié)果(例如,1指示釆用且O指示不采用),從而替代寄存器中最 舊的以前評(píng)估。處理器可針對(duì)每一分支指令維持本地BHR 100。另一選擇為(或另外), BHR 100可含有所有條件分支指令的不久以前的評(píng)估,在此項(xiàng)技術(shù)中有時(shí)稱為全局 BHR或GHR。如在本文中使用,BHR是指本地及全局分支歷史寄存器兩者。如圖l中所描繪,BHR IOO可為分支預(yù)測(cè)器表(BPT) 102加索引,所述分支預(yù) 測(cè)器表同樣可以是本地或全局的。BHR100可直接為BPT102加索引,或可組合有其 它信息,例如,BPT索引邏輯104中的分支指令的程序計(jì)數(shù)器(PC)??闪硗獾乩?到BPT索引邏輯104的其它輸入。BPT索引邏輯104可級(jí)聯(lián)所述輸入(在此項(xiàng)技術(shù)中 稱為gselect),對(duì)所述輸入執(zhí)行XOR運(yùn)算(gshare),執(zhí)行散列函數(shù)或以多種方式組 合或轉(zhuǎn)變所述輸入。作為一個(gè)實(shí)例,BPT 102可包括多個(gè)飽和計(jì)數(shù)器,所述飽和計(jì)數(shù)器的MSB充當(dāng) 雙模態(tài)分支預(yù)測(cè)器。例如,每一表?xiàng)l目可包括采取四種狀態(tài)中的一者的2位計(jì)數(shù)器, 所述四種狀態(tài)的每一者被指派加權(quán)預(yù)測(cè)值,例如11 -強(qiáng)預(yù)測(cè)采用10 -弱預(yù)測(cè)采用 01 -弱預(yù)測(cè)不采用 00 -強(qiáng)預(yù)測(cè)不采用每當(dāng)對(duì)應(yīng)的分支指令評(píng)估為"采用"時(shí),計(jì)數(shù)器遞增,而每當(dāng)指令評(píng)估為"不采 用"時(shí),計(jì)數(shù)器遞減。計(jì)數(shù)器的MSB是雙模態(tài)分支預(yù)測(cè)器;其將預(yù)測(cè)待采用或不采 用的分支,而不管基本預(yù)測(cè)的強(qiáng)度或權(quán)重如何。飽和計(jì)數(shù)器減少不頻繁的分支評(píng)估方 向的預(yù)測(cè)錯(cuò)誤。 一貫地單向評(píng)估的分支將使計(jì)數(shù)器飽和。其它方向不頻繁評(píng)估將改變 計(jì)數(shù)器值(及預(yù)測(cè)的強(qiáng)度),但不改變雙模態(tài)預(yù)測(cè)值。因此,不頻繁評(píng)估將僅錯(cuò)誤預(yù) 測(cè)一次,而非兩次。飽和計(jì)數(shù)器的表僅是說明性實(shí)例; 一般來(lái)說,BHT可為含有多種 分支預(yù)測(cè)機(jī)制的表加索引。不管BPT 102中所釆用的分支預(yù)測(cè)機(jī)制如何,BHR 100單獨(dú)地或組合其它信息(例 如,分支指令PC)來(lái)為BPT102加索引以獲得分支預(yù)測(cè)。通過將先前分支評(píng)估存儲(chǔ)于 BHR 100中并在分支預(yù)測(cè)中使用所述評(píng)估,使正預(yù)測(cè)的分支指令與以前的分支行為相 關(guān)-在本地BHR 100的情況下是其自己以前的行為,且在全局BHR 100的情況下是其 它分支指令的行為。至少在高度重復(fù)性代碼的情況下,此相關(guān)性是準(zhǔn)確的分支預(yù)測(cè)的 關(guān)鍵。注意,圖1描繪正存儲(chǔ)于BHR100中的分支評(píng)估-即,僅可在管線深處(例如, 在執(zhí)行管級(jí)中)獲知的條件分支指令的實(shí)際評(píng)估。雖然這是最終結(jié)果,但實(shí)際上,常 見的高性能處理器將來(lái)自BPT 102的預(yù)測(cè)的分支評(píng)估存儲(chǔ)于BHR 100中,且如果所述 預(yù)測(cè)證明是錯(cuò)誤的,那么稍后作為錯(cuò)誤預(yù)測(cè)恢復(fù)操作的一部分校正BHR100。為清楚 起見,所述圖式不反映此實(shí)施方案特征。
      可減少采用BHR 100的分支預(yù)測(cè)器的功效的常見代碼結(jié)構(gòu)是循環(huán)的。循環(huán)以測(cè)試循環(huán)結(jié)束條件的條件分支指令結(jié)束,例如,無(wú)論每當(dāng)穿過所述循環(huán)便遞增的索引變量 是否已達(dá)到循環(huán)結(jié)束值。如果未達(dá)到,那么執(zhí)行分支后退到所述循環(huán)的開始以進(jìn)行另 一迭代以及另一循環(huán)結(jié)束條件分支評(píng)估。如果所述循環(huán)通大量迭代而執(zhí)行,那么所述循環(huán)結(jié)束分支指令的"采用"向后分支使BHR 100部分地或完全地飽和。在所述循環(huán)迭代數(shù)目等于或超過BHR 100寬度 的情況下,在所述循環(huán)結(jié)束時(shí),n位BHR將精確地含有n-7個(gè)J (采用)緊接單個(gè)0 (不采用),從而對(duì)應(yīng)于由所述循環(huán)迭代引起的一長(zhǎng)系列的分支采用評(píng)估,并在所述 循環(huán)終止時(shí)以單個(gè)不采用分支評(píng)估結(jié)束。這有效地破壞BHR100的功效,因?yàn)榕c先前 分支評(píng)估的所有相關(guān)性(對(duì)于本地或全局BHR 100)均被丟失。在此情況下,BHR 100 將很可能映射到給定分支指令的相同BPT 102條目(此取決于到BPT索引邏輯104的 其它輸入),而非映射到含有反映分支指令與先前分支評(píng)估的相關(guān)性的分支預(yù)測(cè)的條 目。另外,飽和的BHR 100可增加BPT 102中的別名現(xiàn)象。艮卩,如果BHR100直接為BPT 102加索引,那么在具有共同迭代的循環(huán)之后的所有分支指令均將映射到相同 BPT102條目。即使在BHR100組合有其它信息,也增加別名現(xiàn)象的機(jī)會(huì)。這不僅不 利地影響對(duì)循環(huán)之后的分支指令的預(yù)測(cè)準(zhǔn)確性,而且不利地影響對(duì)在BPT 102中產(chǎn)生 其條目別名的所有分支指令的預(yù)測(cè)準(zhǔn)確性。如果所述循環(huán)通過比BHR IOO的寬度少的迭代而執(zhí)行,那么BHR 100不會(huì)飽和 且某一先前分支評(píng)估歷史得以保持。然而,表示先前分支評(píng)估歷史的位在BHR 100中 被循環(huán)結(jié)束分支指令的眾多"釆用"結(jié)果而替代。明確地說,在循環(huán)迭代數(shù)目變化的 情況下,此對(duì)分支預(yù)測(cè)有兩個(gè)有害的影響。首先,所述分支指令將映射到BPT 102中 更大數(shù)目的條目以捕獲與先前分支評(píng)估的相同的相關(guān)性,與循環(huán)結(jié)束分支不影響B(tài)HR 30的情況下將需要的相比,此需要較大BPT 102來(lái)支持相同數(shù)目的分支指令的相同準(zhǔn) 確性。其次,BPT 102中的分支預(yù)測(cè)器將花費(fèi)較長(zhǎng)時(shí)間"訓(xùn)練",從而增加必須在BPT 102開始提供準(zhǔn)確的分支預(yù)測(cè)之前執(zhí)行的代碼的量。受讓與本專利申請(qǐng)案的受讓人并以引用方式并入本文中的專利申請(qǐng)案第 11/066,508號(hào)提出抑制針對(duì)循環(huán)結(jié)束分支指令更新BHR 100。此解決了 BHR 100飽和 或部分飽和對(duì)分支預(yù)測(cè)準(zhǔn)確性的有害影響的常見問題。然而,其不能捕獲并利用可存 在于循環(huán)行為與隨后分支評(píng)估之間的相關(guān)性。在常見的應(yīng)用中,分支指令的評(píng)估可與前面循環(huán)的迭代數(shù)目相關(guān)。例如,科學(xué)程 序可捕獲循環(huán)中的數(shù)據(jù)點(diǎn),且在所述循環(huán)之后,分支到其中分析所捕獲的數(shù)據(jù)的統(tǒng)計(jì) 分析子例程。然而,如果所述循環(huán)迭代相對(duì)較少的次數(shù),那么捕獲較少數(shù)據(jù)點(diǎn)并產(chǎn)生 小的樣本,統(tǒng)計(jì)分析可能不可靠,且可跳過。在此情況下,分支到所述統(tǒng)計(jì)分析子例 程的條件指令的評(píng)估與所述數(shù)據(jù)獲取循環(huán)的迭代數(shù)目強(qiáng)相關(guān)。在另一實(shí)例中,應(yīng)用可使用循環(huán)結(jié)構(gòu)來(lái)將列表,事物日志、歷史文件或類似數(shù)據(jù) 結(jié)構(gòu)搜索一遍。如果匹配搜索參數(shù)的項(xiàng)頻繁地出現(xiàn)在列表中,那么將需要相對(duì)較少的 循環(huán)迭代來(lái)定位所述項(xiàng)。因此,不頻繁出現(xiàn)的項(xiàng)可能需要穿過搜索循環(huán)的大量迭代。 隨后分支指令的評(píng)估可與特定項(xiàng)在列表中出現(xiàn)的頻率相關(guān),且因此與定位所述項(xiàng)所需 的循環(huán)迭代數(shù)目相關(guān)。抑制響應(yīng)于循環(huán)結(jié)束分支指令評(píng)估更新BHR 100無(wú)法捕獲循環(huán)迭代數(shù)目與隨后 分支指令的分支行為之間的任何相關(guān)性。另一方面,維持循環(huán)結(jié)束分支指令的全部評(píng) 估歷史會(huì)使BHR 100完全地或部分地飽和,從而在所述循環(huán)之前丟失與分支指令評(píng)估 的相關(guān)性。發(fā)明內(nèi)容響應(yīng)于與循環(huán)相關(guān)聯(lián)的條件分支指令的性質(zhì),例如,指示所述分支是循環(huán)結(jié)束分 支的性質(zhì),維持所述循環(huán)的迭代數(shù)目的計(jì)數(shù),及將指示所述循環(huán)迭代計(jì)數(shù)的多位值存 儲(chǔ)于BHR中。在一個(gè)實(shí)施例中,所述多位值可包括實(shí)際循環(huán)計(jì)數(shù),在此情況下,位數(shù) 目是可變的。在另一實(shí)施例中,所述位數(shù)目是固定的(例如,兩個(gè))且通過與閾值的 比較而將循環(huán)迭代計(jì)數(shù)映射為多位值。可針對(duì)嵌套循環(huán)維持單獨(dú)迭代計(jì)數(shù),且存儲(chǔ)于 所述BHR中的多位值可指示僅內(nèi)部循環(huán)、僅外部循環(huán)或兩者的循環(huán)迭代計(jì)數(shù)。一個(gè)實(shí)施例涉及一種分支預(yù)測(cè)的方法。識(shí)別與循環(huán)相關(guān)聯(lián)的分支指令的性質(zhì)。響 應(yīng)于所述性質(zhì),將多位值存儲(chǔ)于BHR中,所述多位值指示與所述分支指令相關(guān)聯(lián)的循 環(huán)的迭代數(shù)目。另一實(shí)施例涉及一種處理器。所述處理器包含分支預(yù)測(cè)器,其操作以預(yù)測(cè)條件 分支指令的評(píng)估;及指令執(zhí)行管線,其操作以基于來(lái)自所述分支預(yù)測(cè)器的預(yù)測(cè)推測(cè)性 地提取并執(zhí)行指令。所述處理器還包含BHR,其操作以存儲(chǔ)條件分支指令的所述評(píng) 估;及循環(huán)計(jì)數(shù)器,其操作以計(jì)數(shù)代碼循環(huán)的迭代數(shù)目。所述處理器進(jìn)一步包含控制 電路,所述控制電路操作以在所述BHR中存儲(chǔ)指示與條件分支指令相關(guān)聯(lián)的循環(huán)的迭 代數(shù)目的多位值。


      圖1是現(xiàn)有技術(shù)分支預(yù)測(cè)器電路的功能框圖。圖2是處理器的功能框圖。圖3是執(zhí)行分支指令的方法的流程圖。圖4是分支預(yù)測(cè)器電路的功能框圖,所述分支預(yù)測(cè)器電路包含一個(gè)或一個(gè)以上最 后分支PC寄存器及循環(huán)計(jì)數(shù)器。
      具體實(shí)施例方式
      圖2描繪處理器10的功能框圖。處理器10根據(jù)控制邏輯14執(zhí)行指令執(zhí)行管線 12中的指令。在一些實(shí)施例中,管線12可以是具有多個(gè)管線的超標(biāo)量設(shè)計(jì)。管線12 包含組織于管級(jí)中的各種寄存器或鎖存器16以及一個(gè)或一個(gè)以上算術(shù)邏輯單元 (ALU) 18。通用寄存器(GPR)堆20提供構(gòu)成存儲(chǔ)器層次的頂部的寄存器。管線12從指令高速緩存器(I-高速緩存器)22提取指令,其中由指令側(cè)轉(zhuǎn)換后 援緩沖器(ITLB) 24管理存儲(chǔ)器地址轉(zhuǎn)換及準(zhǔn)許。當(dāng)在管線12中較早地解碼條件分 支指令時(shí),分支預(yù)測(cè)器26預(yù)測(cè)分支行為,并將預(yù)測(cè)提供給指令預(yù)提取單元28。指令 預(yù)取單元28從I-高速緩存器22、在針對(duì)"采用的"分支預(yù)測(cè)在管線12中所計(jì)算的分 支目標(biāo)地址處、在針對(duì)預(yù)測(cè)為"不采用的"分支的下一順序地址處推測(cè)性地提取指令。 在任一情況下,預(yù)提取的指令均被加載到管線12中以供進(jìn)行推測(cè)性執(zhí)行。分支預(yù)測(cè)器26包含分支歷史寄存器(BHR) 30、分支預(yù)測(cè)器表(BPT) 32、 BPT 索引邏輯34及BHR更新邏輯36。分支預(yù)測(cè)器26可另外包含一個(gè)或一個(gè)以上最后分 支PC寄存器38,以及向BHR更新邏輯36提供輸入的一個(gè)或一個(gè)以上循環(huán)計(jì)數(shù)器37。從數(shù)據(jù)高速緩存器(D-高速緩存器)40存取數(shù)據(jù),其中由主轉(zhuǎn)換后援緩沖器(TLB) 42管理存儲(chǔ)器地址轉(zhuǎn)換及準(zhǔn)許。TLB 42可以是專用數(shù)據(jù)TLB,或可包括為指令及數(shù) 據(jù)兩者管理地址轉(zhuǎn)換及準(zhǔn)許的集成式TLB。另外,在處理器IO的各種實(shí)施例中,可 將I-高速緩存器22及D-高速緩存器40集成或聯(lián)合在一起。在存儲(chǔ)器接口 46的控制 下,I-高速緩存器22及/或D-高速緩存器40中的過錯(cuò)導(dǎo)致對(duì)主(芯片外)存儲(chǔ)器44 的存取。處理器10可包含輸入/輸出(I/O)接口48,以控制對(duì)各種外圍裝置50的存取。 所屬領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到,處理器10的眾多變化形式是可能的。例如,處理器 10可包含用于I及D高速緩存器22、 40中的任一者或兩者的第二層級(jí)(L2)高速緩 存器。另外,可將處理器10中所描繪的一個(gè)或一個(gè)以上功能塊從特定實(shí)施例中省去。循環(huán)迭代的多位指示根據(jù)一個(gè)或一個(gè)以上實(shí)施例,通過將分支評(píng)估與先前分支評(píng)估及先前循環(huán)的迭代 計(jì)數(shù)兩者相關(guān)來(lái)改進(jìn)分支預(yù)測(cè)準(zhǔn)確性。這是通過將指示循環(huán)迭代計(jì)數(shù)的多位值存儲(chǔ)于 BHR30中來(lái)完成的。通過將可能的大循環(huán)迭代計(jì)數(shù)映射為相對(duì)較少的位,保存關(guān)于所 述循環(huán)的特性信息,同時(shí)防止循環(huán)結(jié)束分支使分支預(yù)測(cè)器26中的一個(gè)或一個(gè)以上BHR 30完全地或部分地飽和。此過程描繪為圖3中的流程圖。提取并解碼指令(塊52)。如果指令不是條件分 支指令(塊53),那么所述指令在管線中繼續(xù)進(jìn)行且過程返回以提取下一指令(塊52)。 如果指令是條件分支指令(塊53),那么做出分支是否是循環(huán)結(jié)束分支的確定(塊54)。 如果不是,那么在分支評(píng)估(例如,在管線的執(zhí)行級(jí)中)時(shí),更新BHR 30以使用單 個(gè)位來(lái)記錄分支評(píng)估(塊56),即,將分支指令評(píng)估為"采用的"還是"不采用的"。 執(zhí)行接著分別在分支目標(biāo)地址或下一順序地址處繼續(xù)(塊64)。如果分支是循環(huán)結(jié)束 分支(塊54),那么遞增循環(huán)迭代計(jì)數(shù)(塊58)。在循環(huán)完成時(shí)(塊60),將指示 循環(huán)迭代數(shù)目的多位值寫入到BHR30 (塊62)。接著清零循環(huán)迭代計(jì)數(shù)器(塊63) 且執(zhí)行在下一順序地址處繼續(xù)(塊64)。可以多種方式完成兩種詢問(塊54) -B卩,將分支指令識(shí)別為循環(huán)結(jié)束分支指令-及維持循環(huán)迭代計(jì)數(shù)(塊58)。在一個(gè)實(shí)施例中,在確定為循環(huán)結(jié)束分支的條件分支 指令評(píng)估為"采用的"時(shí),遞增一個(gè)或一個(gè)以上循環(huán)計(jì)數(shù)器(LC) 37。在循環(huán)結(jié)束分 支評(píng)估為"不采用"(其指示退出循環(huán))時(shí),將LC37的值或從其導(dǎo)出的值(如在本 文中更全面的論述)寫入到BHR30。同時(shí)還清零LC37。識(shí)別循環(huán)結(jié)束分支指令循環(huán)通過從循環(huán)的結(jié)束到循環(huán)的開始向后分支來(lái)迭代。根據(jù)一個(gè)實(shí)施例,假定具 有小于分支指令地址或PC的分支目標(biāo)地址(g卩,向后分支)的每一條件分支指令是 循環(huán)結(jié)束分支指令。此識(shí)別循環(huán)結(jié)束分支的方法提供簡(jiǎn)單性。如在圖4中所描繪,當(dāng) 在管線中實(shí)際評(píng)估分支指令時(shí),在循環(huán)結(jié)束分支檢測(cè)邏輯35中將分支指令PC與分支 目標(biāo)地址,(BTA)相比較。如果BTA〈PC,那么遞增循環(huán)計(jì)數(shù)器(LC) 37。此實(shí)施 例在確定分支目標(biāo)地址時(shí)需要地址比較,并可能因?yàn)椴⒎撬械南蚝蠓种Ь茄h(huán)結(jié) 束分支而具有某種不準(zhǔn)確性的缺點(diǎn)。檢測(cè)循環(huán)結(jié)束分支的另一方式是辨識(shí)對(duì)同一分支指令的重復(fù)執(zhí)行。在一個(gè)實(shí)施例 中,如在圖4中所描繪,最后分支PC (LBPC)寄存器38存儲(chǔ)所執(zhí)行的最后分支指令 的PC。在簡(jiǎn)單循環(huán)的情況下,如果分支指令的PC匹配循環(huán)結(jié)束分支檢測(cè)邏輯35中 的LBPC38,即,所述分支指令是所評(píng)估的最后分支指令,那么假定所述分支指令是 循環(huán)結(jié)束分支指令,并遞增LC37。將條件分支指令包含在循環(huán)內(nèi)的代碼可使循環(huán)結(jié)束分支檢測(cè)復(fù)雜。例如,用于搜 索陣列或鏈接的列表的常見算法創(chuàng)建循環(huán)。所述循環(huán)內(nèi)的分支檢查匹配且如果找到匹 配那么盡早退出所述循環(huán),同時(shí)循環(huán)結(jié)束分支檢査所述陣列或鏈接的列表的結(jié)束。在 此情況下,單個(gè)LBPC38不能檢測(cè)循環(huán)結(jié)束分支,因?yàn)槠鋵⒈粌蓚€(gè)分支PC交替地蓋 寫。因此,在一個(gè)實(shí)施例中,可提供兩個(gè)或兩個(gè)以上LBPC寄存器38 (如在圖4中所 描繪),其中連續(xù)評(píng)估的分支指令的PC被存儲(chǔ)于對(duì)應(yīng)的LBPC寄存器(LBPCo、LBPd、... LBPCM) 38中。此允許即使循環(huán)內(nèi)存在其它條件分支也可檢測(cè)循環(huán)結(jié)束分支。還可使用編譯器或匯編器靜態(tài)地標(biāo)記循環(huán)結(jié)束分支指令。在一個(gè)實(shí)施例中,編譯 器產(chǎn)生僅用于循環(huán)結(jié)束分支的特定類型的分支指令,例如,"BRLP"。辨識(shí)所述BRLP 指令,且每當(dāng)BRLP指令在執(zhí)行管級(jí)中評(píng)估為采用時(shí)遞增LC 37。在另一實(shí)施例中, 編譯器或匯編器可(例如)通過將一個(gè)或一個(gè)以上預(yù)先定義的位設(shè)定于指令操作代碼 中而將循環(huán)結(jié)束分支指示嵌入于分支指令中。檢測(cè)所述循環(huán)結(jié)束分支位,且當(dāng)所述分 支指令在執(zhí)行管級(jí)中評(píng)估為采用時(shí)遞增LC 37。 一般來(lái)說,可向循環(huán)結(jié)束分支檢測(cè)邏 輯35提供循環(huán)結(jié)束指示符。循環(huán)結(jié)束分支的靜態(tài)識(shí)別通過將循環(huán)結(jié)束識(shí)別功能移到編 譯器或匯編器中而減少硬件及計(jì)算復(fù)雜性。產(chǎn)生并存儲(chǔ)循環(huán)迭代數(shù)目的指示符 不管用于識(shí)別循環(huán)結(jié)束分支指令(針對(duì)內(nèi)部或外部循環(huán))的技術(shù)如何,根據(jù)一個(gè) 或一個(gè)以上實(shí)施例,將循環(huán)迭代的次數(shù)數(shù)目的指示存儲(chǔ)于BHR 30中,以利用循環(huán)迭 代數(shù)目與隨后條件分支指令評(píng)估之間的任何相關(guān)性。在一個(gè)實(shí)施例中,將循環(huán)迭代的實(shí)際計(jì)數(shù)存儲(chǔ)于BHR30中。即,將多位計(jì)數(shù)(例 如,來(lái)自LC 37)移位到BHR 30中,以替代BHR 30的MSB中的先前分支評(píng)估。對(duì) 于極大循環(huán),此計(jì)數(shù)將需要n個(gè)循環(huán)迭代的Zog2 "J,,以替代對(duì)應(yīng)數(shù)目的先前分 支評(píng)估。然而,即使對(duì)于大循環(huán)迭代計(jì)數(shù),二進(jìn)制表示也是對(duì)存儲(chǔ)于現(xiàn)有技術(shù)分支歷 史寄存器中的循環(huán)結(jié)束分支行為的顯著壓縮f《A, 個(gè)/一緊;^單個(gè)0)。在一個(gè)實(shí)施 例中,將迭代計(jì)數(shù)積累于LC37中并移位到BHR30中。在另一實(shí)施例(未顯示)中, 可將BHR 30的至少較低&個(gè)位實(shí)施為雙模式移位寄存器/計(jì)數(shù)器,且可在BHR 30中 直接遞增循環(huán)迭代計(jì)數(shù)(其中先前BHR30內(nèi)容隨著計(jì)數(shù)增長(zhǎng)而向左移位)。在另一實(shí)施例中,將循環(huán)迭代數(shù)目的固定多位指示存儲(chǔ)于BHR30中。例如,可 分配兩個(gè)位來(lái)記錄循環(huán)迭代數(shù)目的指示,其具有以下意義11 -極大數(shù)目的循環(huán)迭代10 -大數(shù)目的循環(huán)迭代01 -中等數(shù)目的循環(huán)迭代00 -小數(shù)目的循環(huán)迭代在此實(shí)例中,使用小數(shù)目與中等數(shù)目之間(00-〉01);中等數(shù)目與大數(shù)目之間 (01-> 10)及大數(shù)目與極大數(shù)目之間(10->11)的三個(gè)閾值來(lái)將實(shí)際循環(huán)迭代計(jì)數(shù) 映射為二位表示,如由閾值邏輯39所指示。在一個(gè)實(shí)施例中,所述閾值對(duì)于給定的處 理器實(shí)施方案可是固定的,例如對(duì)于其中通常已知共同循環(huán)大小的某些嵌入式應(yīng)用。 在另一實(shí)施例中,所述映射可以是可縮放映射,其中所述閾值是從GPR 20、存儲(chǔ)器 44中的表或類似物讀取的。在常見應(yīng)用中,循環(huán)迭代數(shù)目的固定多位指示可提供循環(huán) 迭代計(jì)數(shù)的充分指示,以允許與分支評(píng)估行為的有意義的相關(guān)性,且同時(shí)限制循環(huán)結(jié) 束分支從BHR 30替代先前分支評(píng)估的數(shù)目。當(dāng)然,可將實(shí)際循環(huán)迭代計(jì)數(shù)映射為任何固定數(shù)目的位,所述固定數(shù)目的位具有 用對(duì)應(yīng)數(shù)目的閾值,例如,三個(gè)位與七個(gè)閾值;四個(gè)位與十五個(gè)閾值等等,以在循環(huán) 迭代計(jì)數(shù)準(zhǔn)確性與BHR 30中的分支評(píng)估替代之間實(shí)現(xiàn)所期望或所需要的平衡。嵌套循環(huán)循環(huán)可含有一個(gè)或一個(gè)以上嵌套式或內(nèi)部循環(huán)。因此,在一個(gè)實(shí)施例中,提供可 對(duì)應(yīng)于LBPC38寄存器的數(shù)目的多個(gè)LC計(jì)數(shù)器(LCq、 Ld、 ...LCM) 37。基于采用 評(píng)估及與相關(guān)LBPCM 38的匹配遞增LC 37以維持嵌套循環(huán)的迭代計(jì)數(shù)。通過每當(dāng)內(nèi)部循環(huán)退出時(shí)存儲(chǔ)所述內(nèi)部循環(huán)的迭代數(shù)目的多位指示,BHR 30在 外部循環(huán)迭代相對(duì)較少次數(shù)時(shí)變得部分地或完全地飽和。因此,在一個(gè)實(shí)施例中,一 旦將循環(huán)確定為內(nèi)部循環(huán),隨后迭代便進(jìn)行計(jì)數(shù),此后可抑制內(nèi)部循環(huán)的初始執(zhí)行更 新BHR30。在此實(shí)施例中,在外部循環(huán)退出時(shí),BHR30將包含僅針對(duì)外部循環(huán)的第
      一迭代的內(nèi)部循環(huán)的迭代計(jì)數(shù)的指示,及外部循環(huán)的迭代計(jì)數(shù)的指示。在另一實(shí)施例中,可通過用外部循環(huán)迭代計(jì)數(shù)的指示蓋寫內(nèi)部循環(huán)迭代計(jì)數(shù)在 BHR 30中的值而丟棄所述內(nèi)部循環(huán)迭代計(jì)數(shù)。此保存BHR 30中的最大數(shù)目的先前分 支評(píng)估,同時(shí)允許隨后分支評(píng)估與外部循環(huán)的迭代計(jì)數(shù)的相關(guān)性。在另一實(shí)施例中,可通過在外部循環(huán)退出時(shí)抑制BHR30的更新而丟棄述外部循 環(huán)迭代計(jì)數(shù)。此同樣保存BHR 30中的最大數(shù)目的先前分支評(píng)估,同時(shí)允許隨后分支 評(píng)估與內(nèi)部循環(huán)的迭代計(jì)數(shù)的相關(guān)性,這在一些應(yīng)用中可能對(duì)隨后分支評(píng)估更具預(yù)測(cè) 性。條件分支指令具有常見性質(zhì),包含(例如)分支指令地址或PC,指令類型,及 操作代碼中是否存在指示符位。如在本文中所使用,分支操作的性質(zhì)及/或與所述分支 有關(guān)的程序的性質(zhì)均視為分支指令的性質(zhì)。例如,分支指令PC是否匹配一個(gè)或一個(gè) 以上LBPC寄存器38的內(nèi)容以及分支目標(biāo)地址是相對(duì)于分支指令PC向前還是向后是 分支指令的性質(zhì)。雖然本文已關(guān)于本揭示內(nèi)容的特定特征、方面及實(shí)施例描述本揭示內(nèi)容,但將了 解,在本揭示內(nèi)容的廣泛范圍內(nèi)可存在許多的變化形式、修改及其它實(shí)施例,且因此, 所有的變化形式、修改及實(shí)施例均將視為在本揭示內(nèi)容的范圍內(nèi)。因此,應(yīng)在所有方 面將所述實(shí)施例理解為說明性而非限制性,且包含在所附權(quán)利要求書的意義及等效范 圍內(nèi)的所有改變均打算涵蓋在其中。
      權(quán)利要求
      1、一種分支預(yù)測(cè)方法,其包括識(shí)別與循環(huán)相關(guān)聯(lián)的分支指令的性質(zhì);及響應(yīng)于所述性質(zhì),將多位值存儲(chǔ)于分支歷史寄存器(BHR)中,所述值指示與所述分支指令相關(guān)聯(lián)的循環(huán)的迭代數(shù)目。
      2、 如權(quán)利要求l所述的方法,其中所述性質(zhì)是所述分支的方向。
      3、 如權(quán)利要求2所述的方法,其中所述分支是向后的。
      4、 如權(quán)利要求l所述的方法,其中所述分支指令是循環(huán)結(jié)束分支指令。
      5、 如權(quán)利要求4所述的方法,其中所述分支指令的PC匹配存儲(chǔ)最后分支指令的 PC的最后分支PC (LBPC)寄存器的內(nèi)容以更新所述BHR。
      6、 如權(quán)利要求4所述的方法,其中所述分支指令的所述PC匹配存儲(chǔ)最后多個(gè)分 支指令的PC的多個(gè)LBPC寄存器中的任一者的內(nèi)容以更新所述BHR。
      7、 如權(quán)利要求4所述的方法,其中所述分支指令是由編譯器產(chǎn)生的用于結(jié)束循 環(huán)的唯一分支指令。
      8、 如權(quán)利要求4所述的方法,其中所述分支指令操作代碼包含指示所述分支指 令是循環(huán)結(jié)束分支指令的一個(gè)或一個(gè)以上位。
      9、 如權(quán)利要求l所述的方法,其中將多位值存儲(chǔ)于所述BHR中包括將預(yù)定數(shù)目 的位存儲(chǔ)于所述BHR中。
      10、 如權(quán)利要求9所述的方法,其進(jìn)一步包括根據(jù)所述循環(huán)迭代數(shù)目到所述多位 值的固定映射確定所述預(yù)定數(shù)目的位的值。
      11、 如權(quán)利要求9所述的方法,其進(jìn)一步包括根據(jù)所述循環(huán)迭代數(shù)目到所述多位 值的可縮放映射確定所述預(yù)定數(shù)目的位的值。
      12、 如權(quán)利要求11所述的方法,其進(jìn)一步包括讀取多個(gè)閾值以確定所述循環(huán)迭 代數(shù)目到所述多位值的所述可縮放映射。
      13、 如權(quán)利要求l所述的方法,其中將多位值存儲(chǔ)于所述BHR中包括將可變數(shù) 目的位存儲(chǔ)于所述BHR中,所述位數(shù)目響應(yīng)于所述循環(huán)的所述迭代數(shù)目而變化。
      14、 如權(quán)利要求13所述的方法,其進(jìn)一步包括計(jì)數(shù)所述BHR的多個(gè)最低有效位 中的循環(huán)迭代。
      15、 如權(quán)利要求13所述的方法,其進(jìn)一步包括在循環(huán)計(jì)數(shù)器中計(jì)數(shù)循環(huán)迭代, 并在所述循環(huán)終止時(shí)將所述循環(huán)計(jì)數(shù)器的值轉(zhuǎn)移到所述BHR。
      16、 如權(quán)利要求1所述的方法,其中識(shí)別與循環(huán)相關(guān)聯(lián)的分支指令的性質(zhì)包括檢 測(cè)與第一循環(huán)相關(guān)聯(lián)的第一循環(huán)結(jié)束分支指令及與第二循環(huán)相關(guān)聯(lián)的第二循環(huán)結(jié)束分 支指令,所述第一循環(huán)嵌套于所述第二循環(huán)內(nèi)。
      17、 如權(quán)利要求16所述的方法,其中將多位值存儲(chǔ)于所述BHR中包括將指示所 述第一循環(huán)的迭代數(shù)目的多位值存儲(chǔ)于所述BHR中,且進(jìn)一步包括將指示所述第二循環(huán)的迭代數(shù)目的多位值存儲(chǔ)于所述BHR中。
      18、 如權(quán)利要求16所述的方法,其中將多位值存儲(chǔ)于所述BHR中包括僅將指示 所述第一循環(huán)的迭代數(shù)目的多位值存儲(chǔ)于所述BHR中。
      19、 如權(quán)利要求16所述的方法,其中將多位值存儲(chǔ)于所述BHR中包括僅將指示 所述第二循環(huán)的迭代數(shù)目的多位值存儲(chǔ)于所述BHR中。
      20、 一種處理器,其包括分支預(yù)測(cè)器,其操作以預(yù)測(cè)條件分支指令的評(píng)估;指令執(zhí)行管線,其操作以基于來(lái)自所述分支預(yù)測(cè)器的預(yù)測(cè)推測(cè)性地提取并執(zhí)行指令;分支歷史寄存器(BHR),其操作以存儲(chǔ)條件分支指令的所述評(píng)估; 循環(huán)計(jì)數(shù)器(LC),其操作以計(jì)數(shù)代碼循環(huán)的迭代數(shù)目;及 控制電路,其操作以在所述BHR中存儲(chǔ)多位值,所述多位值指示與條件分支指 令相關(guān)聯(lián)的循環(huán)的迭代數(shù)目。
      21、 如權(quán)利要求20所述的處理器,其進(jìn)一步包括最后分支PC (LBPC)寄存器, 所述最后分支PC (LBPC)寄存器操作以存儲(chǔ)條件分支指令的PC,且其中如果所述分 支指令的所述PC匹配所述LBPC寄存器的內(nèi)容,那么所述控制電路確定條件分支指 令與循環(huán)相關(guān)聯(lián)。
      22、 如權(quán)利要求21所述的處理器,其進(jìn)一步包括兩個(gè)或兩個(gè)以上LBPC寄存器 及對(duì)應(yīng)的兩個(gè)或兩個(gè)以上LC,第一 LBPC操作以存儲(chǔ)與第一循環(huán)相關(guān)聯(lián)的條件分支指 令的PC且第一 LC操作以維持所述第一循環(huán)的迭代計(jì)數(shù),且第二 LBPC操作以存儲(chǔ)與 第二循環(huán)相關(guān)聯(lián)的條件分支指令的PC且第二 LC操作以維持所述第二循環(huán)的迭代計(jì) 數(shù),其中所述第一循環(huán)嵌套于所述第二循環(huán)內(nèi)。
      23、 如權(quán)利要求22所述的處理器,其中所述控制電路操作以在所述BHR中存儲(chǔ) 指示所述第一循環(huán)的一個(gè)執(zhí)行的迭代數(shù)目的多位值及指示所述第二循環(huán)的迭代數(shù)目的 多位值。
      24、 如權(quán)利要求22所述的處理器,其中所述控制電路操作以在所述BHR中存儲(chǔ) 指示所述第一循環(huán)的一個(gè)執(zhí)行的迭代數(shù)目的多位值且不在所述BHR中存儲(chǔ)所述第二 循環(huán)的迭代數(shù)目的指示。
      25、 如權(quán)利要求22所述的處理器,其中所述控制電路操作以在所述BHR中存儲(chǔ) 指示所述第二循環(huán)的迭代數(shù)目的多位值且不在所述BHR中存儲(chǔ)所述第一循環(huán)的任一 執(zhí)行的迭代數(shù)目的指示。
      26、 如權(quán)利要求20所述的處理器,其中所述BHR操作以響應(yīng)于與所述循環(huán)相關(guān) 聯(lián)的所述條件分支指令的每一采用的評(píng)估遞增多個(gè)位,從而直接維持所述BHR中的循 環(huán)迭代計(jì)數(shù)。
      27、 如權(quán)利要求20所述的處理器,其進(jìn)一步包括閾值邏輯,所述閾值邏輯操作 以響應(yīng)于多個(gè)閾值將循環(huán)迭代計(jì)數(shù)映射為固定的多位值。
      全文摘要
      響應(yīng)于與循環(huán)相關(guān)聯(lián)的條件分支指令的性質(zhì)(例如指示所述分支是循環(huán)結(jié)束分支的性質(zhì)),維持所述循環(huán)的迭代數(shù)目的計(jì)數(shù),且將指示所述循環(huán)迭代計(jì)數(shù)的多位值存儲(chǔ)于分支歷史寄存器(BHR)中。在一個(gè)實(shí)施例中,所述多位值可包括實(shí)際的循環(huán)計(jì)數(shù),在此情況下,位數(shù)目是可變的。在另一實(shí)施例中,所述位數(shù)目是固定的(例如,兩個(gè))且通過與閾值的比較將循環(huán)迭代計(jì)數(shù)映射為固定數(shù)目的多位值(例如,四個(gè))中的一者??舍槍?duì)嵌套循環(huán)維持單獨(dú)迭代計(jì)數(shù),且存儲(chǔ)于所述BHR中的多位值可指示僅內(nèi)部循環(huán)、僅外部循環(huán)或兩者的循環(huán)迭代計(jì)數(shù)。
      文檔編號(hào)G06F9/38GK101401065SQ200780008775
      公開日2009年4月1日 申請(qǐng)日期2007年3月19日 優(yōu)先權(quán)日2006年3月17日
      發(fā)明者博胡斯拉夫·雷赫利克, 詹姆斯·諾里斯·迪芬德爾費(fèi)爾 申請(qǐng)人:高通股份有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1