[go: up one dir, main page]

TW200818007A - Associate cached branch information with the last granularity of branch instruction variable length instruction set - Google Patents

Associate cached branch information with the last granularity of branch instruction variable length instruction set Download PDF

Info

Publication number
TW200818007A
TW200818007A TW096129418A TW96129418A TW200818007A TW 200818007 A TW200818007 A TW 200818007A TW 096129418 A TW096129418 A TW 096129418A TW 96129418 A TW96129418 A TW 96129418A TW 200818007 A TW200818007 A TW 200818007A
Authority
TW
Taiwan
Prior art keywords
instruction
branch
btac
granularity
branch instruction
Prior art date
Application number
TW096129418A
Other languages
English (en)
Inventor
Brian Michael Stempel
Rodney Wayne Smith
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of TW200818007A publication Critical patent/TW200818007A/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3848Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Description

200818007 九、發明說明: 【發明所屬之技術領域】 本發明大體係關於可變長度指令集處理器之領域,且詳 言之係關於儲存一已採取分支指令之最後粒度之指示符的 分支目標位址快取記憶體。 . 【先前技術】 • 微處理器於廣泛應用中執行計算任務。改良處理器效能 係藉由實現更快操作及/或通過經增强之軟體增加功能性 〇 而驅動產品改良之永恆設計目標。在許多諸如携帶型電子 裝置之嵌入式應用中,省電及减小晶片大小亦為處理器設 計及實施之重要目標。 多數現代處理器使用一管線架構,其中各具有多個執行 步驟之連續指令於執行中重叠。此於一連續指令流之指令 中開發並行性之能力顯著有助於經改良之處理器效能。在 理想條件下及在於一擔j哀中完成每一管階段之處理器中, 在填充官線之間要初始製程之後,一指令可在每一循環完 U 成執行。 歸因於包括指令中之資料相依性(資料冒險)、諸如分支 • 之控制相依性(控制冒險)、處理器資源分配衝突(結構冒 t 險)、中斷、快取遺漏及其類似者之多種因素,此理想條 件實務上從未實現。處理器設計之主要目標係避免此等冒 險,並保持管線,,全滿”。 所有真實世界之程式包括可包含無條件或有條件分支指 令之分支指令。分支指令之實際分支行為常常直至指令於 123614.doc 200818007 管線深處被評估才為人所知4於該處理器不知曉在分支 指令之後提取哪些指令’並將直至分支指令評估時才知 曉’因此此產生-使管線停止之控制冒險。多數現代處理 器使用各種形式之分支預測,藉此有條件分支指令之分支 行為及分支目標位址早先於管線中被預測,且處理器基於 該分支預測推測性地提取並執行指令,因此保持管線全 滿。若該預測為正確的,則效能經最大化且功率消耗經最 J化* °亥刀支扣令被實際評估時,若分支被誤預測,則 經推測性地提取之指令必須自該管線清除,且自正確的分
支目標位址提取新指令。誤預測分支負面衝擊處理器效能 及功率消耗。 對於一分支預測有兩個組份:一條件評估及一分支目標 位址。該條件評估(僅與有條件分支指令相關)係一個二元 决策··分支被採取,使得執行跳至一不同程式碼序列;或 不被採取,在此種狀况下,處理器在有條件分支指令之後 執行下一連續指令。分支目標位址(BTA)係控制分支對於 評估為被採取之一無條件分支指令或一有條件分支指令的 位址。一些分支指令包括指令操作程式碼(op-code)中之 BTA,或包括一偏移,藉此該BTA可容易地被計算。對於 其他分支指令,該BTA直至位於管線深處才被計算,且因 此必須被預測。 一已知BTA預測技術利用一分支目標位址快取記憶體 (BTAC)。如先前技術中已知之BTAC係一藉由一分支指令 位址(BIA)編入索引之快取記憶體,且每一資料位置(或快 123614.doc 200818007 取’’線’’)含有一 BTA。當一分支指令於管線中評估為被採 取,且其實際ΒΤΑ被計算時,該ΒΙΑ被寫至BTAC中之内容 可定址記憶體(CAM)結構,且該ΒΤΑ被寫至BTAC中之相關 RAM位置(例如,在一回寫管線階段期間)。當提取新指令 時,BTAC之CAM與一指令快取記憶體經並行存取。若指 令位址命中於BTAC中,則處理器知曉指令係一分支指令 (在自指令快取記憶體所提取之經解碼的指令之前),且一 係該分支指令之先前執行的實際BTA之經預測BTA係自 BTAC之RAM提供。若一分支預測電路預測分支將被採 取,則推測性指令提取於經預測BTA處開始。若分支經預 測不被採取,則指令提取連續地繼續。 應注意,術語"BTAC”在此項技術中亦用於表示使一飽 和計數器與一 BIA相關的快取記憶體,因此僅提供一條件 評估預測(意即,被採取或不被採取)。彼並非本文中所使 用之此術語之意義。 高效能處理器一次可自指令快取記憶體以群組形式提取 一個以上指令,該等群組在本文中稱為提取群組。一提取 群組可能但並非必須與一指令快取線相關。舉例而言,一 具有四個指令之提取群組可經提取至一可連續將其饋入至 管線中之指令提取緩衝器中。 讓渡給本申請案之受讓人且以引用的方式併入本文中之 專利申請案序號 11/382,527 "Block-Based Branch Target Address Cache"揭示儲存複數個輸入項之基於區塊的 BTAC,每一輸入項與一指令區塊相關,其中區塊中之指 123614.doc 200818007 令中的一或多者為已經評估被採取的分支指令。BTAC輸 入項包括一指示符(其位於相關區塊中之指令係已採取分 支指令),及已採取分支的BTA。BTAC輸入項藉由一區塊 中所有指令共同之位址位元(意即,藉由截去選擇區塊内 一指令之較低階位址位元)而編入索引。區塊大小及相對 - 區塊邊界皆因此固定。 . 讓渡給本申請案之受讓人且以引用的方式併入本文中之 專利申請案序號 11/422,186 ’’Sliding-Window,Block-Based ( Branch Target Address Cache”揭示一基於區塊之BTAC,其 中每一 BTAC輸入項與一提取群組相關,並由該提取群組 中之第一指令之位址編入索引。因為提取群組可以不同方 式形成(例如,以一分支之目標開始),所以由每一 BTAC輸 入項表示之指令群組並不固定。每一 BTAC輸入項包括一 指示符(其位於提取群組内之指令係已採取分支指令),及 已採取分支之BTA。 當一分支指令命中於BTAC中並經預測被採取時,在已 ( 被提取之分支指令(例如,為同一提取群組之部分)後的連 續指令自管線清除,且開始於自BTAC擷取之BTA的指令 . 在分支指令後推測性地提取入管線中。如上所述,當 . BTAC輸入項與一個以上單一分支指令相關時,區塊或群 組内之指令係已採取分支指令的某指示符作為每一 BTAC 輸入項之部分經儲存,以使得在分支指令後之指令可被清 除。對於所有指令為同一長度之指令集,儲存分支指令開 端之指示符係足够的,指令越過分支指令之開端於下一指 123614.doc 200818007 令位址處開始被清除。 然而,對於可變長度指令集,分支指令自身長度之某指 示亦必須被儲存,以使得在分支指令後之第一指令之位址 可被計算。此皆浪費BTAC中之儲存空間,並且要求一計 算以判定在何處開始清除,此藉由限制循環時間而負面衝 擊效能。 【發明内容】 根據一或多個實施例,在一可變長度指令集中,一已採 取分支指令末端之指示儲存於一分支目標位址快取記憶體 (BTAC)中。作為-非限制性實例,ARM指令集架構之_ 些型式包括32位元ARM模式分支指令及丨6位元Thumb模式 分支指令兩者。在此種狀况下,根據本發明,一已採取分 支指令之最後半字(halfw〇rd)(例如,16個位元)之指示儲存 於每-BTAC輸入項中。此對於一 16位元分支指令對應於 分支指令位址(BIA) ’且對於一 32位元分支指令對應於最 後半字。在任一狀况下,若一命中於BTAC中之分支指令 經預測被採取,則先前提取之指令可越過所指示之半字立 即自管線開端清除,而與指令長度無關。 一實施例係關於一種執行來自一可變長度指令集之指令 的方法,該可變長度指令集中之每一指令的長度係—最I 指令長度粒度的一倍數。一評估被採取之分支指令之分支 目標位址儲存於一分支目標位址快取記憶體中。分支指令 之最後粒度之位址的一指示符與分支目標位址一起儲存。 在後續命中於分支目標位址快取記憶體中後,越過命中分 123614.doc • 10 - 200818007 支扣令之最後粒度提取之所有指令即被清除。 另-實施例係、關於-種執行來自―彳變長度指令集之於 令的處理器,該可變長度指令集中之每一指令的長度係: 最小指令長度粒度的-倍數。該處理器包括—儲存複數個 指令之指令快取記憶體,及一儲存分支目標位址及一先前 已經評估被採取之分支指令之最後粒度的指示符之分支目 標位址快取記憶體。該處理器亦包括一預測一當前分支指 令將評估被採取或是不被採取之分支預測單元及一執行指 令的指令執行管線。該處理器進一步包括一或多個控制電 路,其可操作以使用一當前指令位址同時存取指令快取記 憶體及分支目標位址快取記憶體,且進一步可操作以回靡 於一已採取分支預測及一先前已經評估之分支指令之最後 粒度的指示符而清除在一分支指令後提取的所有指令之管 線。 又一實施例係關於一種包含複數個輸入項之分支目標位 址快取記憶體,每一輸入項藉由一標籤及一對於分支目標 位址之儲存,及一先前已經評估被採取之分支指令之最後 粒度的指示符而編入索引。 【實施方式】 圖1描繪一處理器1〇之功能方塊圖。處理器1〇包括一指 令單元12及一或多個執行單元14。指令單元12提供對至執 行單元14之指令流的集中控制。指令單元12以由_指令側 轉譯後備緩衝器(ITLB)l 8管理之記憶體位址轉譯及許可自 一指令快取記憶體(指令快取記憶體)16提取指令。 123614.doc -11 - 200818007 一執行單元14執行由指令單元12調度之指令。執行單元μ 項寫通用暫存器(GPR)20廿。^ }並以由一主轉譯後備緩衝器
(tlb)24管理之記憶體位址轉譯及許可自—資料快取記憶 體24存取資料。在各種實_巾,itlb a可包含⑽μ 之部分之複本。或者’ ITLB 18與則24可為—體式的。 類似地,在處理器1G之各種實施例中,指令快取記憶體16 與資料快取記憶體22可為一體式的或統一的。指令快取記 憶體16及/或資料快取記憶體22中之遺漏引起對第二級或 ?快取記憶體26(在圖!中描繪為一統一指令及資料快取記 憶體26)之存取,但其他實施例可包括獨立L2快取記憶 體。在一把憶體介面30之控制下,L2快取記憶體%中之遺 漏引起對主(晶片外)記憶體28的存取。 指令單元12包括處理器10管線之提取34及解碼%階段。 提取階段32執行指令快取記憶體16存取以擷取指令,其在 所要之指令未分別常駐於指令快取記憶體丨6或以快取記憶 體26中的情况下可包括L2快取記憶體26及/或記憶體“存 取。解碼階段28解碼所擷取之指令。指令單元丨2進一步包 括一儲存由解碼階段28解碼之指令的指令伫列38,及一調 度C列指令至適當執行單元14的指令調度單元40。 一分支預測單元(BPU)42預測有條件分支指令之執行行 為。提取階段32中之指令位址存取一分支目標位址快取記 憶體(BTAC)44及一與提取自指令快取記憶體16之指令並行 之分支歷史表(BHT)46。BTAC 44中之命中指示一先前已 經評估被採取之分支指令,且BTAC 44提供分支指令之最 123614.doc -12- 200818007 後執行的分支目標位址(ΒΤΑ)。ΒΗΤ 46維持對應於已解析 分支指令之分支預測記錄’該等記錄指示已知分支已先前 經評估被採取或是未被採取。ΒΗΤ 46記錄可(例如)包括提 供弱至强預測之飽和計數器,該等弱至强預測基於分支指 令之先前評估而預測一分支將被採取或是不被採取。Βρυ 42估定來自BTAC 44之命中/遺漏資訊及來自βητ 46之分 支歷史資訊以使分支預測公式化。 圖2為更詳細地描繪提取階段32及指令單元12之分支預 測電路的功能方塊圖。應注意,圖2中之虛線描繪功能存 取關係’未必是直接連接。提取階段3 2包括自多種源選擇 指令位址之快取存取導引邏輯48。每一循環之一指令位址 被發射至在此實施例中包含三個階段:FETCH1階段50、 FETCH2階段52、FETCH3階段54之指令提取管線。 快取存取導引邏輯48自多種源選擇指令位址以發射至提 取管線。此處特定相關之兩個指令位址源包括由運作於 FETCH1管線階段50之輸出上之遞增器56產生的下一連續 才曰々、私令區塊或指令提取群組位址,及回應於來自 42之分支預測而推測性地提取之非連續分支目標位址。其 他扣令位址源包括异常處置器、中斷向量位址及其類似 物。 FETCHl階段50及FETCH2階段52執行對指令快取記憶體 16、BTAC 44、及BUT 46之同時之並行的兩階段存取。詳 a之,FETCH1階段50中一指令位址於一第一快取存取循 %期間存取指令快取記憶體丨6及BTAC 44以確定與該位址 123614.doc -13- 200818007 相關之指令是否常駐於指令快取記憶體16中(經由指令快 取記憶體16中之命中或遺漏)及一已知分支指令是否與該 指令位址相關(經由BTAC 44中之命中或遺漏)。在隨後之 第一快取存取循環中,指令位址移動至FETCH2階段52, 且若指令位址命中於各別快取記憶體丨6、44中,則可自指 令快取§己憶體16得到指令及/或可自BTAC 44得到一分支目 標位址(BTA)。 若指令位址遺漏於指令快取記憶體16中,則其進行至 FETCH3階段54以發射_L2快取記憶體26存取。熟習此項 技術者應容易瞭解,提取管線可視(例如)指令快取記憶體 16及BTAC 44之存取時序比圖2中所描繪之實施例包含更 多或更少的暫存器階段。 在圖3中描繪一 BTAC 44之一實施例的功能性方塊圖。 BTAC 44包含一 CAM結構60及一 RAM結構62。在一代表性 輸入項中,CAM結構60可包括狀態資訊64、一位址標籤66 及一有效位元68。如上所述且在以引用的方式併入之申請 案中,一實施例中之標籤66可包含一單一分支指令位址 (BIA)。在另一實施例中,參照本文中之基於區塊之btac 44,標籤66可包含一指令區塊或群組之共同位址位元(亦 即,具有被截去之最低有效位元)。在另一實施例中,參 照本文中之滑動窗口 BTAC 44,標籤66可包含一指令提取 群組中之第一指令的位址。 然而,BTAC 44經建構,標籤66對應於一先前已經評估 被採取之分支指令,且FETCH1階段54中之位址與一標籤 123614.doc -14- 200818007 66之間的一命中或一匹配指示區塊或提取群組中之指令係 分支指令。回應於CAM 60中之命中,一相應命中位元70 設定於同一 BTAC 44輸入項之RAM結構62中。在一些實施 例中,命中位元70可包含諸如零捕捉器、一捕捉器或干擾 鎖存器之非時控單調儲存裝置。快取設計之細節與本發明 之描述不相關,且本文中不做進一步論述。 在第二快取存取循環期間,藉由命中位元70識別之來自 BTAC 44輸入項的資料係自RAM結構62讀取。此等資料包 括分支目標位址(BTA)72,並可包括與分支指令相關之額 外資訊,諸如指示該指令是否係一鏈接堆叠使用者之鏈接 堆叠位元74,及/或指示一無條件分支指令之無條件位元 76。其他資料可如任何特定申請案所需或所要而儲存於 BTAC 44 RAM 62 中。 指示相關分支指令之最後粒度的位置位元78亦儲存於 BTAC 44輸入項中。對於每一標籤66僅與一個BIA相關之 BTAC 44,位置位元78(諸如)藉由自BIA之偏移而識別分支 指令之末端。在此種狀况下,位置位元78本質上識別分支 指令長度。對於一基於區塊或一滑動窗口 BTAC 44(亦即, 若標籤66與一個以上指令相關),位置位元78識別與BTA 72相關之已採取分支指令的最後粒度於指令區塊或提取群 組内之位置。亦即,位置位元78識別指令區塊或提取群組 内分支指令末端的位置。 圖4描繪包含三個指令的說明性程式碼片段,其中一指 令為先前已經評估被採取之32位元有條件分支指令。在此 123614.doc -15- 200818007 實例中,提取管線暫存器各保留四個半字。圖4將此等暫 存器中之每一者中的指令位址另外描繪為指令係自指令快 取記憶體16提取。在第一循環中,FETCH1階段50保留指 令位址0800、0802、0804及0806。位址0800應用於指令快 取記憶體16及一滑動窗口 BTAC 44狀况下之BTAC 44 ;在 一基於區塊之BTAC 44之狀况下,兩個最低有效位元在 BTAC 44查找之前被截去。在第一循環末端,BTAC 44報 告指示一分支指令存在於區塊或群組内且其先前經評估被 採取的命中。在第二循環期間,BTA(在此例中,位址B)及 位置位元78係自BTAC 44擷取。同時,位址0800至0806降 入至FETCH2階段52,且下一連續位址0808至080E載入至 FETCH”皆段50(經由遞增器56)。 與指令快取記憶體16及BTAC 44查找並行,BHT 46被存 取,且為相關分支指令提供過去分支評估行為至分支預測 單元(BPU)42。基於自BTAC 44及BHT 46擷取之資訊, BPU 42預測與當前指令位址相關之分支指令將評估被採取 或是不被採取。若BPU 42預測分支指令將評估不被採取, 則連續位址(例如,0808至080E)流過提取階段32,從而導 致指令快取記憶體16及BTAC 44由0808存取。另一方面, 若BPU 42預測分支指令將評估被採取,則在分支指令後之 所有指令位址必須自提取管線暫存器50、52清除,且對於 指令快取記憶體16及BTAC 44之下一存取使用自BTAC 44 擷取之BTA作為替代。 位置位元按照慣例指示分支指令開端在區塊或群組内之 123614.doc -16- 200818007 位置’例如,4fb〇〇1 〇(假設暫存器中位址自右至左遞增)。 然而’分支指令之開端僅用於隨後計算指令結束之位置, 此要求關於指令之長度的資訊(例如,16或32個位元)。此 外’此計算要求增加循環時間及負面衝擊效能之額外邏輯 位準。根據本文所揭示之一或多個實施例,位置位元78指 示區塊或群組内分支指令之最後指令長度粒度。在當前實 例中’位置位元7 8指示最後半字在區塊或群組内之位置, 例如,4’b0100。此消除了儲存關於分支指令長度之資訊的 需要,且避免判定自管線清除哪些指令位址之計算。 返回至圖4,在第三循環中(回應於來自bpu 42之已採取 分支預測),FETCH3階段54含有指令位址〇8〇〇至〇804。位 址0804由位置位元78之值4,b0100識別為分支指令之末端。 位址0806之指令係自FETCH3階段54清除,位址〇8〇8至 080E係自FETCH2階段52清除,且於循環2中自BTAC 44擷 取之B的BTA載入至FETCH1階段50中以自彼位置推測性地 提取指令。 如上所述’ BHT 46與指令快取記憶體16&btaC 44並行 被存取。在一實施例中,BHT 46包含(例如)二位元飽和計 數器之陣列,每一計數器與一分支指令相關。在一實施例 中,計數器可在每當一分支指令評估被採取時遞增,且當 分支指令評估不被採取時遞减。計數器值接著指示一預測 (藉由僅考慮最高有效位元)及該預測之一强度或置信度兩 者,諸如: 11-强烈預測被採取 123614.doc -17- 200818007 ι〇-微弱預測被採取 01-微弱預測不被採取 〇〇-强烈預測不被採取
BHT 46可由分支指令位址(BIA)之部分(例如,當BTAC
44指示一命中時FETCHa^^50中之指令位址)編入索引, 從而將指令識別為一先前已經評估被採取之分支指令。為 改良BHT 46之準確性及促成其更有效之使用,部分bia可 在索引BHT 46之前與新近全域分支評估歷史(gselect或 gshare)邏輯組合。 BHT 46設計之一問題自分支指令可具有不同長度之可變 長度指令集出現。一已知解决方法為基於最大指令長度而 確定BHT 46之大小,但基於最小指令長度對其定址。當定 址係基於分支指令之開端時,此解决方法於表中留下大片 空白,或與較長分支指令相關之重複輸入項。藉由以與分 支指令末端相關之資訊索引BHT 46,BHT 46效率增加。 與分支指令之長度無關,僅有一單一 BHT 46輸入項被存 取。 如本文中所使用…可變長度指令集之粒度或一顆粒係 指令長度可相差之最小量,其通常亦為最小指令長度。儘 管本發明已在本文巾關於其特定特徵、㈣及實施例被描 述,但易於瞭解,在本發明之廣泛範嘴内,衆多變化、修 改及其他實施例係可能的’且因&,所有變化、修改及實 施例應被視為在本發明之範,内,,本發明之實施例 在所有態樣中被建構為說明性的而非限制性的,且在附加 123614.doc -18- 200818007 申明專利範圍之意義及荨效範圍内的所有改變意欲包含於 其中。 【圖式簡單說明】 圖1係一處理器之功能方塊圖。 方塊圖。 ▽之執行的暫存 圖2係一處理器之提取階段的功能 圖3係一 BTAC之功能方塊圖。
圖4描繪三個處理器指令及描繪指 容之循環圖。
【主要元件符號說明】 10 處理器 12 指令單元 14 執行單元 16 指令快取記憶體 18 指令側轉譯後備緩衝器(ITLB) 20 通用暫存器(GPR) 22 資料快取記憶體 24 主轉譯後備緩衝器(TLB) 26 L2快取記憶體/資料快取記憶體 28 主(晶片外)記憶體/解碼階段 30 記憶體介面 32 提取階段 36 解碼階段 38 指令佇列 40 指令調度單元 123614.doc •19- 200818007 42 分支預測單元(BPU) 44 分支目標位址快取記憶體(BTAC) 46 分支歷史表(BHT) 48 快取存取導引邏輯 50 FETCH 1P皆段/FETCH 1管線階段/提取管線暫存器 52 FETCH2階段/提取管線暫存器 54 FETCH3p0b 段 56 遞增器 60 CAM結構 62 RAM結構 64 狀態資訊 66 位址標鐵 68 有效位元 70 命中位元 72 分支目標位址(BTA) 74 鏈接堆叠位元 76 無條件位元 78 位置位元 123614.doc -20-

Claims (1)

  1. 200818007 、申請專利範圍: 一種執行來自一可變長度指 e ^ L 7集之扣令的方法,該可蠻 長度指令集中之每一指令 的H 長度係—最小指令長度粒度 的一倍數,該方法包含: ,一分支目標位址快取記憶體(BTAC)切存―經評估 被採取之分支指令的分支目標位址(BTA); 將該分支指令之最後粒度之-指示符與該BTA 存;及 w 在隨後命中於該BTAC中後,即清除越過該命中分支指 令之該最後粒度所提取的所有指令。 2.如請求項1之方法’其中該分支指令係提取於-提取群 組中’且其中含有該似之峨③入項係由該提取群組 中之第一指令的位址編入索引。 月求項2之方法’其中該分支指令之該最後粒度之該 指示符指示該分支指令㈣最後粒度之末端在該提取群 組内的相對位置。 4.如請求項1之方法,其中該分支指令與-指令區塊相 關’且其中該含有該BTA之btac輸入項係由該區塊中之 所有扎令的共同位址位元編入索引。 5·如凊求項4之方法,其中該分支指令之該最後粒度之該 才曰示符私示該分支指令的該最後粒度之該末端在該指令 區塊内的相對位置。 月求項1之方法,其進一步包含,在隨後命中於該 BTAC中後,即至少部分基於該命中分支指令之該最後 123614.doc 200818007 粒度之該指示符存取一分支歷史表(ΒΉΤ)。 7. 如請求項1之方法’其進—步包含,在清除越過該命中 分支指令之該最後粒度所提取之所有指令之後’提取自 該ΒΤΑ開始之指令。 8. —種執行來自一可變長度指令集之指令的處理器,該可 變長度指令集中之該每一指令之長度係一最小指令長度 粒度的一倍數,該處理器包含: 一指令快取記憶體,其儲存複數個指令; 一分支目標位址快取記憶體(BTAC),其儲存分支目標 位址(ΒΤΑ)及一先前已經評估被採取之分支指令之最後 粒度的一指示符; 一分支預測單元(BPU),其預測一當前分支指令將評 估被採取或是不被採取; 一指令執行管線,其執行指令; 一或多個控制電路,其可操作以使用一當前指令位址 同時存取該指令快取記憶體及該BTAC ;且進一步可操 作以回應於一已採取分支預測及一先前已經評估之分支 #曰令之最後粒度的指示符而清除在一分支指令後提取的 所有指令之管線。 9·如請求項8之處理器,其中該BTAC係一由一包括一先前 已經評估被採取之分支指令之提取群組中之第一指令的 位址編入索引之滑動窗口 BTAC。 10·如請求項9之處理器,其中該先前已經評估被採取之分 支和令之該最後粒度之該指示符指示該分支指令的該最 123614.doc -2- 200818007 後粒度在該提取群組内之相對位置。 11.如請求項8之處理器,其中該BTAC係一由一包括一先前 已經評估被採取之分支指令之指令區塊中的所有指令之 共同位址位元編入索引之基於區塊的BTAC。 12 ·如凊求項11之處理器’其中該先前已經評估被採取之分 • 支指令之該最後粒度之該指示符指示該分支指令的該最 . 後粒度在該指令區塊内的相對位置。 13·如請求項8之處理器,其進一步包含一儲存先前分支評 估資訊之分支歷史表(BHT),該BHT至少部分由該先前 已經评估被採取之分支指令之該最後粒度的該指示符編 入索引。 14·如請求項13之處理器,其中該分支預測至少部分基於該 BHT之輸出。 1 5 · —種包含複數個輸入項之分支目標位址快取記憶體 (BTAC),每一輸入項藉由一標籤及一對於一分支目標位 址(BTA)之儲存及一先前已經評估被採取之分支指令之 I’ 最後粒度的一指示符而編入索引。 16·如請求項15之BTAC,其中該標籤包含一包括一先前已 . 經評估被採取之分支指令之提取群組中之第一指令的位 址。 17·如請求項16iBTAC,其中該先前已經評估被採取之分 支指令之該最後粒度之該指示符指示該分支指令的該最 後粒度在該提取群組内之相對位置。 18·如請求項15iBTAC,其中該標籤包含一包括一先前已 123614.doc 200818007 經評估被採取之分支指令之指令區塊中的指令之共同位 址位元。 I9.如請求項182BTAC,其中該先前已經評估被採取之分 支指令之該最後粒度之該指示符指示該分支指令的該最 後粒度在該指令區塊内之相對位置。
    123614.doc
TW096129418A 2006-08-09 2007-08-09 Associate cached branch information with the last granularity of branch instruction variable length instruction set TW200818007A (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/463,370 US20080040576A1 (en) 2006-08-09 2006-08-09 Associate Cached Branch Information with the Last Granularity of Branch instruction in Variable Length instruction Set

Publications (1)

Publication Number Publication Date
TW200818007A true TW200818007A (en) 2008-04-16

Family

ID=39052217

Family Applications (1)

Application Number Title Priority Date Filing Date
TW096129418A TW200818007A (en) 2006-08-09 2007-08-09 Associate cached branch information with the last granularity of branch instruction variable length instruction set

Country Status (7)

Country Link
US (1) US20080040576A1 (zh)
EP (1) EP2100220A2 (zh)
JP (1) JP2010501913A (zh)
KR (1) KR101048258B1 (zh)
CN (1) CN101681258A (zh)
TW (1) TW200818007A (zh)
WO (1) WO2008021828A2 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7827392B2 (en) * 2006-06-05 2010-11-02 Qualcomm Incorporated Sliding-window, block-based branch target address cache
CN102150139A (zh) * 2008-09-12 2011-08-10 瑞萨电子株式会社 数据处理装置及半导体集成电路装置
US9122486B2 (en) 2010-11-08 2015-09-01 Qualcomm Incorporated Bimodal branch predictor encoded in a branch instruction
JP5696210B2 (ja) * 2011-03-31 2015-04-08 ルネサスエレクトロニクス株式会社 プロセッサ及びその命令処理方法
US9495299B2 (en) 2011-12-26 2016-11-15 Renesas Electronics Corporation Data processing device utilizing way selection of set associative cache memory based on select data such as parity data
US9411590B2 (en) 2013-03-15 2016-08-09 Qualcomm Incorporated Method to improve speed of executing return branch instructions in a processor
US11768689B2 (en) 2013-08-08 2023-09-26 Movidius Limited Apparatus, systems, and methods for low power computational imaging
US10001993B2 (en) 2013-08-08 2018-06-19 Linear Algebra Technologies Limited Variable-length instruction buffer management
CN106796504B (zh) * 2014-07-30 2019-08-13 线性代数技术有限公司 用于管理可变长度指令的方法和设备
CN119473389B (zh) * 2024-09-26 2025-10-31 北京理工大学 可变长度指令存储控制器、控制方法、终端及存储介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4860197A (en) * 1987-07-31 1989-08-22 Prime Computer, Inc. Branch cache system with instruction boundary determination independent of parcel boundary
TW357318B (en) * 1997-03-18 1999-05-01 Ind Tech Res Inst Branching forecast and reading device for unspecified command length extra-purity pipeline processor
US6886093B2 (en) * 2001-05-04 2005-04-26 Ip-First, Llc Speculative hybrid branch direction predictor
US20020194462A1 (en) * 2001-05-04 2002-12-19 Ip First Llc Apparatus and method for selecting one of multiple target addresses stored in a speculative branch target address cache per instruction cache line
US7162619B2 (en) * 2001-07-03 2007-01-09 Ip-First, Llc Apparatus and method for densely packing a branch instruction predicted by a branch target address cache and associated target instructions into a byte-wide instruction buffer
US7437543B2 (en) * 2005-04-19 2008-10-14 International Business Machines Corporation Reducing the fetch time of target instructions of a predicted taken branch instruction

Also Published As

Publication number Publication date
CN101681258A (zh) 2010-03-24
KR101048258B1 (ko) 2011-07-08
EP2100220A2 (en) 2009-09-16
US20080040576A1 (en) 2008-02-14
JP2010501913A (ja) 2010-01-21
KR20090042303A (ko) 2009-04-29
WO2008021828A2 (en) 2008-02-21
WO2008021828A3 (en) 2009-10-22

Similar Documents

Publication Publication Date Title
JP5313279B2 (ja) 非アラインドメモリアクセス予測
JP5255367B2 (ja) 分岐先アドレス・キャッシュを備えたプロセッサおよびデータを処理する方法
CN101160561B (zh) 通过循环结束分支来抑制分支历史寄存器的更新
CN101506773B (zh) 用于模拟显式子例行程序调用的分支预测行为的方法和设备
TW200818007A (en) Associate cached branch information with the last granularity of branch instruction variable length instruction set
JP2009536770A (ja) ブロックに基づく分岐先アドレスキャッシュ
CN101176060A (zh) 每索引存储两个或更多分支目标地址的分支目标地址高速缓冲存储器
JP5231403B2 (ja) スライドウィンドウブロックベースの分岐ターゲットアドレスキャッシュ
KR101005633B1 (ko) 일정한 개수의 가변 길이 명령을 가진 명령 캐시
CN113568663A (zh) 代码预取指令
Bekerman et al. Early Load Address Resolution Through Register Tracking
HK1112983A (zh) 不對準存儲器存取預測
HK1112086A (zh) 每索引存儲兩個或更多分支目標地址的分支目標地址高速緩衝存儲器