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

      用于減少在分支目標(biāo)地址高速緩沖存儲(chǔ)器中查找的方法和設(shè)備的制作方法

      文檔序號(hào):6455677閱讀:169來源:國知局
      專利名稱:用于減少在分支目標(biāo)地址高速緩沖存儲(chǔ)器中查找的方法和設(shè)備的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明大體上涉及處理器領(lǐng)域,且明確地說,涉及一種通過減少在分支目標(biāo)地址高 速緩沖存儲(chǔ)器中查找而改進(jìn)分支預(yù)測的方法。
      背景技術(shù)
      微處理器在很多種應(yīng)用中執(zhí)行計(jì)算任務(wù)。幾乎始終需要改進(jìn)處理器性能,以允許更 快操作和/或通過軟件變化而增大功能性。在許多嵌入式應(yīng)用(例如便攜式電子裝置)中, 節(jié)省功率和更快的通過量也是處理器設(shè)計(jì)和實(shí)施中的目標(biāo)。
      許多現(xiàn)代處理器采用管線式結(jié)構(gòu),其中順序指令(每一者具有多個(gè)執(zhí)行步驟)在執(zhí) 行中交疊。為了獲得經(jīng)改進(jìn)的性能,所述指令應(yīng)連續(xù)流動(dòng)穿過管線。任何致使指令停止 于管線中的情形可不利地影響性能。如果從管線清洗且隨后再提取指令,則性能和功率 消耗均受損。
      大多數(shù)程序包括間接分支指令,其中直到在管線深處評(píng)估所述間接分支指令才知道 實(shí)際分支行為。為了避免將由于等待間接分支指令的實(shí)際評(píng)估而導(dǎo)致的停止,現(xiàn)代處理 器可采用某種形式的分支預(yù)測,借此在管線中早期預(yù)測間接分支指令的分支行為?;?所預(yù)測的分支評(píng)估,處理器推測性地提取(預(yù)提取)且處理來自預(yù)測地址的指令,所述 預(yù)測地址為分支目標(biāo)地址(如果預(yù)測將采取所述分支)或在所述分支指令之后的下一順 序地址(如果預(yù)測將不采取所述分支)。是否將采取間接分支指令被稱作確定分支方向。
      常規(guī)分支預(yù)測技術(shù)包括分支目標(biāo)存取高速緩沖存儲(chǔ)器(BTAC)和分支預(yù)測邏輯, 所述BTAC定位于處理器管線的提取級(jí)中。BTAC存儲(chǔ)先前所提取的指令的目標(biāo)地址且 由所述指令的地址索引。指令高速緩沖存儲(chǔ)器常規(guī)上填充有各種指令類型的指令,所述 指令是從更高階高速緩沖存儲(chǔ)器或存儲(chǔ)器檢索的。常規(guī)上在處理器管線中進(jìn)一步向下實(shí) 際解析間接分支指令之后填充BTAC。
      在操作中,常規(guī)分支預(yù)測技術(shù)并行地在BTAC和指令高速緩沖存儲(chǔ)器兩者中對(duì)所預(yù) 提取的指令執(zhí)行地址査找。如果在BTAC中存在未中,則這些常規(guī)分支技術(shù)因此已在 BTAC查找中消耗功率而未找到匹配。如果在BTAC中存在命中,則所查找到的地址可 視為間接分支指令。在BTAC查找之后,常規(guī)技術(shù)調(diào)用分支預(yù)測邏輯以確定是否應(yīng)預(yù)測采取從BTAC檢索的分支目標(biāo)地址。如果所述分支預(yù)測邏輯預(yù)測采取,則分支預(yù)測邏輯 通過從所述分支目標(biāo)地址開始檢索指令而重定向指令流動(dòng)。
      通常從所述管線清洗從分支指令起進(jìn)入處理器管線的所有順序指令。由BTAC査找 界定的路徑和后續(xù)分支預(yù)測通常為臨界速度路徑,因?yàn)榇寺窂降亩〞r(shí)越短,在重定向指 令流動(dòng)之前需要從處理器管線清洗的指令量也就越小。因此,此路徑需要盡可能短,以 最小化清洗指令所消耗的功率。
      用于減小臨界路徑時(shí)間的常規(guī)技術(shù)包括減小BTAC的大小和/或以多路型式組織 BTAC。然而,通過減小BTAC的大小,潛在命中的數(shù)冃和因此在BTAC中找到分支冃 標(biāo)地址的可能性受到減小,從而降低了 BTAC的整體有效性。此外,通過將BTAC組織 為多路型式,索引到BTAC中可能變得較快,但花費(fèi)于比較上的時(shí)間可能有所增加。在 這些情形中,BTAC可能慢于指令高速緩沖存儲(chǔ)器,因此在臨界路徑的并行查找部分中 變成限制性因素。因此,認(rèn)識(shí)到,需要用以減少用于當(dāng)在處理器管線中找到間接分支指 令時(shí)重定向指令流動(dòng)的時(shí)間而不會(huì)降低分支預(yù)測的有效性的設(shè)備和方法。

      發(fā)明內(nèi)容
      本發(fā)明認(rèn)識(shí)到,當(dāng)并行地對(duì)指令高速緩沖存儲(chǔ)器和BTAC進(jìn)行查找且在BTAC中查 找失敗時(shí),常規(guī)分支預(yù)測技術(shù)常常不必要地消耗功率。當(dāng)在指令高速緩沖存儲(chǔ)器中存在 命中而在BTAC中存在未中時(shí),此認(rèn)識(shí)更為明顯,這種情況可能是由于指令高速緩沖存 儲(chǔ)器通常存儲(chǔ)所有類型的指令,且BTAC通常存儲(chǔ)分支指令地址。
      根據(jù)一個(gè)實(shí)施例,揭示一種用于減少對(duì)分支目標(biāo)地址高速緩沖存儲(chǔ)器(BTAC)進(jìn) 行查找的方法。在此方法中,響應(yīng)于在指令高速緩沖存儲(chǔ)器(I-cache)中查找指令地址 的未中而從所述BTAC檢索分支目標(biāo)地址。所述分支目標(biāo)地址與所述指令地址相關(guān)聯(lián)。 從所述BTAC檢索的分支目標(biāo)地址存儲(chǔ)在所述指令高速緩沖存儲(chǔ)器中。使用此所揭示的 技術(shù),以與所述BTAC不并行的方式,在所述指令高速緩沖存儲(chǔ)器中有利地查找后續(xù)指 令地址,因此通過減少不必要的BTAC查找而節(jié)省功率。
      根據(jù)另一實(shí)施例,揭示用于將分支指令存儲(chǔ)到指令高速緩沖存儲(chǔ)器中的方法。此方 法包括在指令高速緩沖存儲(chǔ)器(I-cache)中査找分支指令地址;響應(yīng)于指令高速緩沖 存儲(chǔ)器未中而從分支目標(biāo)地址高速緩沖存儲(chǔ)器(BTAC)檢索分支目標(biāo)地址;以及將所 述分支目標(biāo)地址存儲(chǔ)到所述指令高速緩沖存儲(chǔ)器中的條目中。
      另一實(shí)施例涉及一種用于減少對(duì)分支目標(biāo)地址高速緩沖存儲(chǔ)器(BTAC)進(jìn)行查找
      的系統(tǒng)。所述系統(tǒng)包括BTAC和指令高速緩沖存儲(chǔ)器(I-cache),所述指令高速緩沖存儲(chǔ)器經(jīng)配置以響應(yīng)于當(dāng)查找第一分支指令地址時(shí)的高速緩沖存儲(chǔ)器未中而從所述BTAC 檢索分支目標(biāo)地址。所述指令高速緩沖存儲(chǔ)器進(jìn)一步經(jīng)配置以存儲(chǔ)所述分支目標(biāo)地址。
      應(yīng)了解,所屬領(lǐng)域的技術(shù)人員從以下詳細(xì)描述將容易明白本發(fā)明的其它實(shí)施例,其 中以說明方式展示并描述本發(fā)明的各種實(shí)施例。如將了解到,本發(fā)明能夠具有其它且不 同的實(shí)施例,且能夠在各種其它方面對(duì)其若干細(xì)節(jié)進(jìn)行修改,所有這些均不脫離本發(fā)明。 因此,圖式和實(shí)施方式在本質(zhì)上應(yīng)被視作說明性的而非限制性的。


      圖1為示范性處理器的功能方框圖。
      圖2A到圖2C (總稱圖2)說明示范性代碼段的列表以及當(dāng)指令高速緩沖存儲(chǔ)器未 含有來自代碼段的分支指令時(shí)的指令高速緩沖存儲(chǔ)器和BTAC的示范性內(nèi)容。
      圖3說明在用來自BTAC的指令數(shù)據(jù)填充圖1的指令高速緩沖存儲(chǔ)器之后所述指令 高速緩沖存儲(chǔ)器的示范性內(nèi)容。
      圖4為說明將間接分支指令存儲(chǔ)到指令高速緩沖存儲(chǔ)器中且從圖1的指令高速緩沖 存儲(chǔ)器檢索指令的方法的流程圖。
      圖5為說明在實(shí)際分支解析時(shí)管理指令高速緩沖存儲(chǔ)器的方法的流程圖。
      圖6為共享共同BTAC的兩個(gè)處理器的功能方框圖。
      具體實(shí)施例方式
      圖1描繪示范性處理器100的功能方框圖。處理器100根據(jù)控制邏輯114在指令執(zhí) 行管線112中執(zhí)行指令。在一些實(shí)施例中,管線112可為具有多個(gè)平行管線的超標(biāo)量設(shè) 計(jì),所述多個(gè)平行管線如結(jié)合圖6進(jìn)一步詳細(xì)描述。管線112包括經(jīng)組織成數(shù)個(gè)管級(jí)的 各種寄存器或鎖存器116A-D,以及一個(gè)或一個(gè)以上執(zhí)行單元,例如算術(shù)邏輯單元(ALU) 118。通用寄存器(GPR)堆120提供組成存儲(chǔ)器分級(jí)結(jié)構(gòu)的頂部的寄存器。
      從數(shù)據(jù)高速緩沖存儲(chǔ)器(D-cache) 140存取數(shù)據(jù),其中存儲(chǔ)器地址轉(zhuǎn)譯和許可由主 轉(zhuǎn)譯后備緩沖器(TLB) 142管理。在各種實(shí)施例中,ITLB 124可包含TLB 142的部分 的復(fù)本?;蛘撸烧螴TLB 124與TLB 142。類似地,在處理器100的各種實(shí)施例中, 可整合指令高速緩沖存儲(chǔ)器122與數(shù)據(jù)高速緩沖存儲(chǔ)器140,或使其成為一體。指令高 速緩沖存儲(chǔ)器122和/或數(shù)據(jù)高速緩沖存儲(chǔ)器140中的未中使得在存儲(chǔ)器接口 146的控制 下存取主(芯片外)存儲(chǔ)器144。將結(jié)合圖4的論述進(jìn)一步詳細(xì)描述指令高速緩沖存儲(chǔ) 器122中的未中。處理器100可包括輸入/輸出(I/O)接口148,其控制對(duì)各種外圍裝置150的存取。 所屬領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到,處理器IOO的眾多變化型式是可能的。舉例來說,處理 器100可包括第二層(L2)高速緩沖存儲(chǔ)器,用于指令高速緩沖存儲(chǔ)器122和數(shù)據(jù)高速 緩沖存儲(chǔ)器140中的任一者或兩者。另外,特定實(shí)施例可省略處理器100中所描繪的功 能區(qū)塊中的一者或一者以上。
      處理器IOO包括分支預(yù)測系統(tǒng)143。分支預(yù)測系統(tǒng)143包括BTAC 141、分支預(yù)測器 (BP)電路126、更新邏輯電路160和可選的預(yù)解碼電路156。 BTAC 141經(jīng)配置以存儲(chǔ) 一個(gè)或一個(gè)以上條目,其中每一條目含有分支指令地址和對(duì)應(yīng)于提取地址的分支目標(biāo)地 址。BTAC 141可存儲(chǔ)直接分支指令地址與間接分支指令地址的組合。
      當(dāng)指令地址在指令高速緩沖存儲(chǔ)器122中未中且進(jìn)行經(jīng)由存儲(chǔ)器接口 146從更高層 存儲(chǔ)器接收對(duì)應(yīng)指令的請(qǐng)求時(shí),經(jīng)由充填路徑152填充指令高速緩沖存儲(chǔ)器122和BTAC 141。在第一實(shí)施例中, 一旦從存儲(chǔ)器接口 146接收到指令,則可選的預(yù)解碼邏輯電路 156經(jīng)配置以確定所接收的指令是否為間接分支指令。如果是,則經(jīng)由路徑152在BTAC 141中查找所接收指令的地址,以查看是否存在與所接收指令的地址相關(guān)聯(lián)的目標(biāo)地址。 如果在BTAC 141中存在命中,則將所接收的指令和對(duì)應(yīng)目標(biāo)地址寫入到指令高速緩沖 存儲(chǔ)器122。在間接分支指令經(jīng)誤預(yù)測的情況下,指令高速緩沖存儲(chǔ)器122中可能發(fā)生 未中且BTAC 141中可能發(fā)生命中,因此在指令高速緩沖存儲(chǔ)器122中引起某種類型的 失效。將結(jié)合圖5的論述進(jìn)一步詳細(xì)論述指令高速緩沖存儲(chǔ)器失效的類型。如果所接收 指令的地址不在BTAC141中(例如,未中),則將所接收指令寫入到指令高速緩沖存儲(chǔ) 器122。
      第二實(shí)施例移除預(yù)解碼邏輯電路156。在第二實(shí)施例中,將在BTAC 141中查找通 過存儲(chǔ)器接口 146接收的指令,而不管所接收的指令是否為間接分支指令。在此第二實(shí) 施例中,與第一實(shí)施例相似,將指令轉(zhuǎn)發(fā)到指令高速緩沖存儲(chǔ)器122以用于存儲(chǔ)。然而, 在第一實(shí)施例中,BTAC查找限于間接分支指令。在任一實(shí)施例中,如果分支目標(biāo)地址 存儲(chǔ)于BTAC 141中,則其還將被存儲(chǔ)到指令高速緩沖存儲(chǔ)器122。
      在管線112的隨后級(jí)中發(fā)生實(shí)際分支解析之后,更新控制邏輯160經(jīng)由路徑162將 目標(biāo)地址添加到BTAC 141中的條目。BTAC 141經(jīng)由路徑154更新指令高速緩沖存儲(chǔ) 器122以包括間接分支指令和其對(duì)應(yīng)目標(biāo)地址兩者。術(shù)語"預(yù)測不采取"是指BP電路 126預(yù)測不根據(jù)分支目標(biāo)地址而重定向管線112。
      在存儲(chǔ)器地址轉(zhuǎn)譯和許可由指令側(cè)轉(zhuǎn)譯后備緩沖器(ITLB) 124管理的情況下,指 令預(yù)提取單元128經(jīng)由路徑125從指令高速緩沖存儲(chǔ)器(I-cache或1$) 122提取指令。
      8如果在指令高速緩沖存儲(chǔ)器122中找到(例如,命中)所提取的指令,且所提取的指令 與對(duì)應(yīng)分支目標(biāo)地址相關(guān)聯(lián),則BP電路126預(yù)測是否采取在所述目標(biāo)地址處開始的代 碼路徑。如果BP電路126預(yù)測應(yīng)采取所述目標(biāo)地址,則指令預(yù)提取單元128調(diào)整'其程 序計(jì)數(shù)器以開始從所述目標(biāo)地址提取指令,因此根據(jù)所述分支目標(biāo)地址而重定向管線 112。如果BP電路126預(yù)測不應(yīng)采取所述目標(biāo)地址,則所述程序計(jì)數(shù)器遞增以開始從下 一順序地址提取指令。將結(jié)合圖4和圖5的論述進(jìn)一步詳細(xì)描述分支預(yù)測系統(tǒng)143的操
      作。 ...
      本發(fā)明涵蓋將BTAC 141與指令高速緩沖存儲(chǔ)器122組合為一體式組件的實(shí)施例。 然而,對(duì)于將BTAC和指令高速緩沖存儲(chǔ)器分離為不同組件存在若干原因。僅在充填所 述指令高速緩沖存儲(chǔ)器期間才查詢或讀取所揭示的外部BTAC。每次存取所述指令高速 緩沖存儲(chǔ)器時(shí),存取與所述指令高速緩沖存儲(chǔ)器平行定位的常規(guī)BTAC。通過限制如目 前所揭示的對(duì)BTAC的咨詢,本發(fā)明通過減小BTAC中的活動(dòng)性而節(jié)省功率。此外,對(duì) 所述BTAC的此不頻繁存取允許BTAC 141為單端口裝置,因此降低設(shè)計(jì)復(fù)雜性。
      圖2A說明示范性代碼段的列表210,其在地址0x000B處含有間接分支指令212。 如所描繪,間接分支指令212的目標(biāo)由寄存器1 (Rl)的內(nèi)容界定。由于每次執(zhí)行間接 分支指令212時(shí)R1的內(nèi)容可能變化,因此利用分支預(yù)測系統(tǒng)143來確定是否從R1的內(nèi) 容所指定的地址開始重定向過程管線112。
      圖2B說明指令高速緩沖存儲(chǔ)器230的示范性內(nèi)容。指令高速緩沖存儲(chǔ)器230可適 當(dāng)?shù)仡愃朴谥噶罡咚倬彌_存儲(chǔ)器122。指令高速緩沖存儲(chǔ)器230包括指令列232、有效 位列234和分支目標(biāo)地址列236。列232中的條目表示指令。根據(jù)常規(guī),歹i」234中的"0" 值指示列236中的分支目標(biāo)(如果存在)為無效的,而列234中的"1"值指示沿同一 行中的列236中的分支目標(biāo)為有效的。如所描繪,在程序計(jì)數(shù)器指向地址0x000B的時(shí) 間點(diǎn),指令高速緩沖存儲(chǔ)器230在地址0x000B處不含有間接分支指令212的條目。
      圖2C說明BTAC 250的示范性內(nèi)容。BTAC 250可適當(dāng)?shù)仡愃朴贐TAC 141。 BTAC
      250包括分支指令地址列252和目標(biāo)地址列254。列252可包括直接分支指令地址、間
      接分支指令地址或其任何組合。在程序計(jì)數(shù)器指向地址0x000B的時(shí)間點(diǎn),BTAC 250含
      有間接分支指令地址256和其對(duì)應(yīng)目標(biāo)地址。因此,在指令高速緩沖存儲(chǔ)器未中時(shí),控
      制邏輯114將致使BTAC 250中的分支指令256和其對(duì)應(yīng)目標(biāo)地址存儲(chǔ)指令高速緩沖存
      儲(chǔ)器230。應(yīng)認(rèn)識(shí)到,可將其它信息存儲(chǔ)于指令高速緩沖存儲(chǔ)器230和BTAC 250兩者
      中,且本發(fā)明涵蓋指令高速緩沖存儲(chǔ)器230和BTAC 250的各種組織。
      圖3說明在將與間接分支指令地址256相關(guān)聯(lián)的間接分支指令和其對(duì)應(yīng)目標(biāo)地址
      9(0x2000)存儲(chǔ)于指令高速緩沖存儲(chǔ)器230中的地址0x000B處之后的指令高速緩沖存儲(chǔ) 器230。因此,下次處理器的程序計(jì)數(shù)器指向地址0x000B時(shí),指令高速緩沖存儲(chǔ)器查 找將命中,且目標(biāo)地址0x2000將被指派到處理器的程序計(jì)數(shù)器以從地址0x2000處的指 令開始重定向管線112。與常規(guī)BTAC相比,本發(fā)明中的指令高速緩沖存儲(chǔ)器查找是在 不在BTAC中執(zhí)行查找的情況下對(duì)預(yù)提取的指令執(zhí)行的,從而通過減少BTAC查找的數(shù) 目而節(jié)省功率消耗。如所證明,在BTAC 250中查找限于在指令高速緩沖存儲(chǔ)器230中 未找到特定間接分支指令的情形。
      圖4為說明將間接分支指令存儲(chǔ)到指令高速緩沖存儲(chǔ)器中且從圖1的指令高速緩沖 存儲(chǔ)器檢索分支目標(biāo)地址的方法400的流程圖。方框410、 420、 450、 455、 460、 465、 470和480界定用以將間接分支指令和分支目標(biāo)地址存儲(chǔ)到指令高速緩沖存儲(chǔ)器(例如 圖1的指令高速緩沖存儲(chǔ)器122)中的過程。方框410、 420、 425、 435、 438、 440和 445界定用于從指令高速緩沖存儲(chǔ)器檢索分支目標(biāo)地址的過程。在方框410處,基于指 令的地址而查詢指令高速緩沖存儲(chǔ)器以獲得一指令。舉例來說,可利用存儲(chǔ)于處理器的 程序計(jì)數(shù)器中的指令地址來查詢指令高速緩沖存儲(chǔ)器。在方框420處,方法400確定指 令高速緩沖存儲(chǔ)器中是否存在命中。如果不存在(高速緩沖存儲(chǔ)器未中),則方法400 前進(jìn)到方框450以從更高層存儲(chǔ)器檢索對(duì)應(yīng)指令數(shù)據(jù)。在方框450處,從更高層存儲(chǔ)器 (例如第2層(L2)高速緩沖存儲(chǔ)器或芯片外存儲(chǔ)器)請(qǐng)求指令數(shù)據(jù)。在方框455處, 接收從更高層存儲(chǔ)器檢索的指令數(shù)據(jù)。在方框460處,在BTAC中查找指令地址。在方 框465處,方法400確定在BTAC中指令地址是否命中,或換句話說,確定是否與存儲(chǔ) 于BTAC中的指令地址匹配。如果在BTAC中指令地址命中,則方法400前進(jìn)到方框470, 在方框470處將存儲(chǔ)于BTAC中的所預(yù)測分支目標(biāo)(如果存在)添加到指令數(shù)據(jù)。在 BTAC中命中時(shí),所預(yù)測分支目標(biāo)將可能存儲(chǔ)于BTAC中,只要先前已解析間接分支指 令的先前實(shí)例的分支目標(biāo)地址。方法400前進(jìn)到方框480,在方框480處將指令數(shù)據(jù)存 儲(chǔ)于指令高速緩沖存儲(chǔ)器中。
      返回到方框465,如果在BTAC中指令地址未中,則方法400前進(jìn)到方框480。此
      從方框465到480的過渡指示以下情形所査詢的指令地址既不在指令高速緩沖存儲(chǔ)器
      中,也不在BTAC中。在此情形中,將在解析所檢索指令數(shù)據(jù)的實(shí)際分支目標(biāo)之后把分
      支目標(biāo)地址存儲(chǔ)于BTAC中,所述解析稍后在處理器管線中發(fā)生,如結(jié)合圖6進(jìn)一步詳
      細(xì)論述。舉例來說,當(dāng)解析實(shí)際分支目標(biāo)時(shí),更新邏輯電路160將致使BTAC和指令高
      速緩沖存儲(chǔ)器兩者存儲(chǔ)所解析的分支目標(biāo)。
      方框465和方框475兩者均前進(jìn)到方框480,在方框480處將指令數(shù)據(jù)存儲(chǔ)于指令
      10序計(jì)數(shù)器順序遞增。方法400接著前進(jìn)到方框410以查詢
      由程序計(jì)數(shù)器指定的下一地址。
      返回到方框420,如果在指令高速緩沖存儲(chǔ)器中存在命中,意味著在指令高速緩沖 存儲(chǔ)器中存在對(duì)應(yīng)條目,則方法400前進(jìn)到方框425。在方框425處,方法400確定指 令高速緩沖存儲(chǔ)器中的對(duì)應(yīng)條目是否具有分支目標(biāo)地址。在一個(gè)實(shí)施例中,方框425可 通過詢問對(duì)應(yīng)有效位(例如存儲(chǔ)于圖2的有效位列234中的有效位)來完成。如果不存 在與所述指令高速緩沖存儲(chǔ)器命中相關(guān)聯(lián)的有效分支目標(biāo)地址,則指令地址不是間接分 支指令。因此,方法400前進(jìn)到方框445,在方框445處從指令高速緩沖存儲(chǔ)器檢索且 以常規(guī)方式處理非分支指令。方法400前進(jìn)到方框410以從所述程序計(jì)數(shù)器所指定的指 令高速緩沖存儲(chǔ)器查詢下一地址。
      如果存在對(duì)應(yīng)于所述條目的有效分支目標(biāo)地址,則方法400前進(jìn)到方框435。在方 框435處,方法400預(yù)測是否應(yīng)采取存儲(chǔ)于對(duì)應(yīng)條目中的分支目標(biāo)地址。在一個(gè)實(shí)施例 中,分支預(yù)測電路126進(jìn)行此預(yù)測。應(yīng)注意,所屬領(lǐng)域的技術(shù)人員將了解,分支預(yù)測技 術(shù)可利用統(tǒng)計(jì)學(xué)、試探法、預(yù)定參數(shù)等。在方框438處,方法400測試是否將采取所述 預(yù)測。如果是,則方法400前進(jìn)到方框440,在方框440處將分支目標(biāo)地址發(fā)送到例如 指令預(yù)提取單元128等程序計(jì)數(shù)器,以便開始從分支目標(biāo)地址提取指令。方法400前進(jìn) 到方框410以査詢由所述程序計(jì)數(shù)器指定的下一地址,所述下一地址在穿過流程圖的此 路徑中為分支目標(biāo)地址。
      返回到方框438,如果預(yù)測不采取所述路徑,則方法400前進(jìn)到方框445來以常規(guī) 方式處理存儲(chǔ)于高速緩沖存儲(chǔ)器中的指令。在方框445之后,方法400前進(jìn)到方框410 以查詢程序計(jì)數(shù)器中的下一地址,所述下一地址在穿過流程圖的此路徑中為跟隨所述間 接分支指令之后的順序地址,例如圖2A中的地址OxOOOC。
      圖5為說明在實(shí)際分支解析時(shí)管理指令高速緩沖存儲(chǔ)器的方法500的流程圖。方法 500是針對(duì)以下情形執(zhí)行的第一次計(jì)算間接分支指令的實(shí)際分支目標(biāo),以及例如A支 預(yù)測電路126等預(yù)測機(jī)制誤預(yù)測所述間接分支指令的目標(biāo)。在方框510處,解析間接分 支指令的實(shí)際目標(biāo)。當(dāng)稍后在處理器管線中處理間接分支指令時(shí),可執(zhí)行此分支解析。
      在方框520處,方法500確定實(shí)際目標(biāo)是否匹配所預(yù)測目標(biāo),或者對(duì)于第一次計(jì)算
      實(shí)際目標(biāo)的情況,不存在所預(yù)測目標(biāo)。如果實(shí)際分支目標(biāo)不匹配所預(yù)測分支目標(biāo),則
      BTAC和指令高速緩沖存儲(chǔ)器兩者均無需更新。方法500前進(jìn)到方框525,在方框525
      處其在前進(jìn)返回到方框510之前等待下一分支指令。
      如果實(shí)際分支目標(biāo)不匹配所預(yù)測目標(biāo),則方法500檢測到誤預(yù)測且前進(jìn)到方框530。
      11至少兩種情形可導(dǎo)致不匹配。第一種情形可發(fā)生于間接分支指令在先前存儲(chǔ)于BTAC和 指令高速緩沖存儲(chǔ)器中(無分支目標(biāo))之后第一次執(zhí)行時(shí)。在第一種情形中,所述間接 分支指令之后的下一順序指令可能已加載于處理器管線中。如果所預(yù)測目標(biāo)地址不同于 實(shí)際解析目標(biāo)地址,則可能發(fā)生第二種情形。在第二種情形中,所預(yù)測目標(biāo)地址中所指 示的下一指令可能已加載于處理器管線中。
      在方框530處,在任一情形中,處理器管線將其指令從管線清洗以使管線恢復(fù)到分 支點(diǎn),在此情況下,所述分支點(diǎn)是間接分支指令的地址。因此,將從所述處理器管線清 洗在間接分支指令之后加載于處理器管線中的指令,而不管那些指令是否從所預(yù)測目標(biāo) 地址或在所述間接分支指令之后的下一順序地址開始加載的。在方框540處,更新B'tAC 以將實(shí)際分支目標(biāo)地址存儲(chǔ)于其分支目標(biāo)地址字段(例如列254)中。
      在方框550處,管理指令高速緩沖存儲(chǔ)器。舉例來說,控制邏輯電路114可包括用 以實(shí)施方框550A到550C的邏輯。方框550A到550C為方框550的替代實(shí)施例。在方 框550A處,對(duì)應(yīng)于所預(yù)測目標(biāo)地址的高速緩沖存儲(chǔ)器線失效。在方框550B處,對(duì)應(yīng)于 所預(yù)測目標(biāo)地址的高速緩沖存儲(chǔ)器線的分支目標(biāo)失效。在方框550C處,對(duì)應(yīng)于所預(yù)測 目標(biāo)地址的高速緩沖存儲(chǔ)器線的分支目標(biāo)地址經(jīng)更新以反映實(shí)際目標(biāo)地址。當(dāng)間接分支 指令在先前存儲(chǔ)于BTAC和指令高速緩沖存儲(chǔ)器中(無分支目標(biāo))之后第一次執(zhí)行時(shí), 方框550C為優(yōu)選的。
      圖6為共享共同BTAC 611的兩個(gè)處理器601和602的功能方框圖。所共享的BTAC 611以及處理器601和602優(yōu)選地被包含在單個(gè)集成電路芯片中。處理器601包括其自 身的多級(jí)處理器管線620、指令高速緩沖存儲(chǔ)器610和分支預(yù)測電路615。在級(jí)625處, 發(fā)生實(shí)際分支解析以便分別用間接分支指令和分支目標(biāo)地址更新BTAC 611和指令高速 緩沖存儲(chǔ)器610,如先前在圖4和圖5中所描述。處理器602包括其自身的多級(jí)處理器 管線640、指令高速緩沖存儲(chǔ)器630和分支預(yù)測電路635。在級(jí)645處,發(fā)生實(shí)際分支 解析以便分別用間接分支指令和分支目標(biāo)地址更新BTAC 611和指令高速緩沖存儲(chǔ)器 630,如先前在圖4和圖5中所描述。如所描繪,可在處理器的管線中的不同級(jí)處執(zhí)行 實(shí)際分支解析。盡管圖6說明在兩個(gè)處理器之間共享共同BTAC,但請(qǐng)注意,本發(fā)明涵 蓋在三個(gè)或三個(gè)以上處理器之間共享共同BTAC。在操作期間,當(dāng)從含有有效分支目標(biāo) 地址的指令高速緩沖存儲(chǔ)器610或指令高速緩沖存儲(chǔ)器630提取地址時(shí),相應(yīng)管線620 和640開始從分支目標(biāo)地址開始預(yù)提取指令。
      結(jié)合本文中所揭示的實(shí)施例而描述的各種說明性邏輯區(qū)塊、模塊、電路、元件和/
      或組件可用經(jīng)設(shè)計(jì)以執(zhí)行本文中所描述的功能的通用處理器、數(shù)字信號(hào)處理器(DSP)、
      12專用集成電路(ASIC)、現(xiàn)場可編程門陣列(FPGA)或其它可編程邏輯組件、離散門或 晶體管邏輯、離散硬件組件或其任何組合來實(shí)施或執(zhí)行。通用處理器可為微處理器,但 在替代方案中,處理器可為任何常規(guī)處理器、控制器、微控制器或狀態(tài)機(jī)。處理器還可 被實(shí)施為計(jì)算組件的組合,例如DSP與微處理器的組合、多個(gè)微處理器、結(jié)合DSP核 心的一個(gè)或一個(gè)以上微處理器或任何其它此類配置。
      結(jié)合本文中所揭示的實(shí)施例而描述的方法可直接在硬件中、在由處理器執(zhí)行的軟件 模塊中或在所述兩者的組合中體現(xiàn)。軟件模塊可駐留于RAM存儲(chǔ)器、快閃存儲(chǔ)器、ROM 存儲(chǔ)器、EPROM存儲(chǔ)器、EEPROM存儲(chǔ)器、寄存器、硬盤、可移除盤、CD-ROM或此 項(xiàng)技術(shù)中已知的任何其它形式的存儲(chǔ)媒體中。存儲(chǔ)媒體可耦合到處理器,使得所述處理 器可從所述存儲(chǔ)媒體讀取信息且可將信息寫入到所述存儲(chǔ)媒體。在替代方案中,存儲(chǔ)媒 體可與處理器成一體式。
      盡管本發(fā)明在實(shí)施例的上下文中揭示,但應(yīng)認(rèn)識(shí)到,所屬領(lǐng)域的技術(shù)人員可采用與 以上論述內(nèi)容和隨附權(quán)利要求書一致的很多種實(shí)施方案。
      權(quán)利要求
      1. 一種用于減少對(duì)分支目標(biāo)地址高速緩沖存儲(chǔ)器(BTAC)進(jìn)行查找的方法,其包含響應(yīng)于在指令高速緩沖存儲(chǔ)器(I-cache)中查找第一指令地址的未中而從所述BTAC檢索分支目標(biāo)地址;以及將來自所述BTAC的所述分支目標(biāo)地址存儲(chǔ)于所述指令高速緩沖存儲(chǔ)器中,所述分支目標(biāo)地址與所述指令高速緩沖存儲(chǔ)器中的所述第一指令地址相關(guān)聯(lián)。
      2. 根據(jù)權(quán)利要求1所述的方法,其進(jìn)一步包含在所述指令高速緩沖存儲(chǔ)器中查找所述第一指令地址;以及 在所述指令高速緩沖存儲(chǔ)器中檢索與所述第一指令地址相關(guān)聯(lián)的所述分支冃標(biāo) 地址。
      3. 根據(jù)權(quán)利要求2所述的方法,其進(jìn)一步包含提取與所述第一指令地址相關(guān)聯(lián)的第一指令;以及 預(yù)測待提取的第二指令與所述分支目標(biāo)地址相關(guān)聯(lián)。
      4. 根據(jù)權(quán)利要求3所述的方法,其進(jìn)一步包含基于所述分支目標(biāo)地址而提取所述第二指令。
      5. 根據(jù)權(quán)利要求4所述的方法,其進(jìn)一步包含針對(duì)所述第一指令檢測誤預(yù)測。
      6. 根據(jù)權(quán)利要求5所述的方法,其進(jìn)一步包含通過以下各項(xiàng)中的至少一者來管理所述指令高速緩沖存儲(chǔ)器使指令高速緩沖存 儲(chǔ)器線失效、使所述指令高速緩沖存儲(chǔ)器線中的所述分支目標(biāo)地址失效和更新所述 指令高速緩沖存儲(chǔ)器中的所述分支目標(biāo)地址。
      7. 根據(jù)權(quán)利要求5所述的方法,其中針對(duì)所述第一指令檢測誤預(yù)測包含針對(duì)所述第一指令計(jì)算實(shí)際分支目標(biāo)地址;以及將所述實(shí)際分支目標(biāo)地址與所述指令高速緩沖存儲(chǔ)器中的所述分支目標(biāo)地址進(jìn) 行比較,其中所述實(shí)際分支目標(biāo)地址不匹配所述分支目標(biāo)地址。
      8. —種將分支指令存儲(chǔ)到指令高速緩沖存儲(chǔ)器(I-cache)中的方法,其包含在指令高速緩沖存儲(chǔ)器(I-cache)中查找分支指令地址;響應(yīng)于指令高速緩沖存儲(chǔ)器未中而從分支目標(biāo)地址高速緩沖存儲(chǔ)器(BTAC)檢 索分支目標(biāo)地址;以及將所述分支目標(biāo)地址存儲(chǔ)到所述指令高速緩沖存儲(chǔ)器中的條目中。
      9. 根據(jù)權(quán)利要求8所述的方法,其進(jìn)一步包含響應(yīng)于指令高速緩沖存儲(chǔ)器命中而從所述指令高速緩沖存儲(chǔ)器檢索所述分支目 標(biāo)地址。
      10. 根據(jù)權(quán)利要求9所述的方法,其進(jìn)一步包含預(yù)測待提取的下一指令與所述分支目標(biāo)地址相關(guān)聯(lián)。
      11. 根據(jù)權(quán)利要求8所述的方法,其進(jìn)一步包含在誤預(yù)測時(shí)更新所述指令高速緩沖存儲(chǔ)器中的所述分支目標(biāo)地址。
      12. 根據(jù)權(quán)利要求11所述的方法,其中在誤預(yù)測時(shí)更新所述條目中的所述分支目標(biāo)地 址包含確定所述分支指令的實(shí)際分支地址;以及將所述實(shí)際分支地址與所述分支R標(biāo)地址進(jìn)行比較,其中實(shí)際分支解析不匹配所預(yù)測的目標(biāo)地址。
      13. 根據(jù)權(quán)利要求9所述的方法,其進(jìn)一步包含預(yù)測是否發(fā)送待提取的所述分支目標(biāo)地址。
      14. 根據(jù)權(quán)利要求13所述的方法,其進(jìn)一步包含發(fā)送待提取的所述分支目標(biāo)地址。
      15. —種用于減少對(duì)分支目標(biāo)地址高速緩沖存儲(chǔ)器(BTAC)進(jìn)行查找的系統(tǒng),其包含分支目標(biāo)存取高速緩沖存儲(chǔ)器(BTAC);以及指令高速緩沖存儲(chǔ)器(I-cache),其經(jīng)配置以響應(yīng)于當(dāng)查找第一分支指令地址時(shí)的高速緩沖存儲(chǔ)器未中而從所述BTAC檢索分支目標(biāo)地址,所述指令高速緩沖存儲(chǔ) 器進(jìn)一步經(jīng)配置以存儲(chǔ)所述分支目標(biāo)地址。
      16. 根據(jù)權(quán)利要求15所述的系統(tǒng),其中所述指令高速緩沖存儲(chǔ)器進(jìn)一步經(jīng)配置以使得 查找所述指令高速緩沖存儲(chǔ)器中的所述第一分支指令地址且使得從所述指令高速 緩沖存儲(chǔ)器檢索與所述第一分支指令地址相關(guān)聯(lián)的所述分支目標(biāo)地址。
      17. 根據(jù)權(quán)利要求15所述的系統(tǒng),其中所述指令高速緩沖存儲(chǔ)器經(jīng)配置以使得提取與 所述第一指令地址相關(guān)聯(lián)的第一指令,所述系統(tǒng)進(jìn)一步包含分支預(yù)測電路,其經(jīng)配置以預(yù)測待提取的第二指令與所述分支目標(biāo)地址相關(guān)聯(lián)。
      18. 根據(jù)權(quán)利要求17所述的系統(tǒng),其中所述指令高速緩沖存儲(chǔ)器經(jīng)配置以使得從所述 指令高速緩沖存儲(chǔ)器提取基于所述分支目標(biāo)地址的所述第二指令。
      19. 根據(jù)權(quán)利要求18所述的系統(tǒng),其進(jìn)一步包含更新邏輯電路,其經(jīng)配置以誤預(yù)測待提取的所述第二指令。
      20. 根據(jù)權(quán)利要求19所述的系統(tǒng),其進(jìn)一步包含控制邏輯電路,其經(jīng)配置以通過以下各項(xiàng)中的至少一者來管理所述指令高速緩沖存儲(chǔ)器使指令高速緩沖存儲(chǔ)器線失效、使所述指令高速緩沖存儲(chǔ)器線中的所述分支目標(biāo)地址失效和更新所述指令高速緩沖存儲(chǔ)器中的所述分支目標(biāo)地址。
      全文摘要
      本發(fā)明揭示一種用于減少對(duì)分支目標(biāo)地址高速緩沖存儲(chǔ)器(BTAC)進(jìn)行查找的技術(shù)。在此技術(shù)中,響應(yīng)于在指令高速緩沖存儲(chǔ)器(I-cache)中查找指令地址的未中而從所述BTAC檢索分支目標(biāo)地址。所述分支目標(biāo)地址與所述指令地址相關(guān)聯(lián)。從所述BTAC檢索的所述分支目標(biāo)地址存儲(chǔ)在所述指令高速緩沖存儲(chǔ)器中。使用此所揭示的技術(shù),以與所述BTAC不并行的方式,在所述指令高速緩沖存儲(chǔ)器中查找后續(xù)指令地址,因此通過減少不必要的BTAC查找而節(jié)省功率。
      文檔編號(hào)G06F9/38GK101501635SQ200780030214
      公開日2009年8月5日 申請(qǐng)日期2007年8月15日 優(yōu)先權(quán)日2006年8月16日
      發(fā)明者邁克·莫羅 申請(qǐng)人:高通股份有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1