[發明專利]分支目標地址獲取方法和裝置有效
| 申請號: | 201310270207.6 | 申請日: | 2013-06-29 |
| 公開(公告)號: | CN104252334B | 公開(公告)日: | 2017-07-07 |
| 發明(設計)人: | 侯銳;馮煜晶;郭旭斌;王曦爽 | 申請(專利權)人: | 華為技術有限公司;中國科學院計算技術研究所 |
| 主分類號: | G06F9/38 | 分類號: | G06F9/38 |
| 代理公司: | 北京同立鈞成知識產權代理有限公司11205 | 代理人: | 劉芳 |
| 地址: | 518129 廣東*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 分支 目標 地址 獲取 方法 裝置 | ||
技術領域
本發明實施例涉及計算機技術,尤其涉及一種分支目標地址獲取方法和裝置。
背景技術
目前的處理器多采用流水線的結構,使得順序執行的指令流可以并行地執行,從而提高處理器的執行效率。然而,進程中往往會包含分支指令,分支指令會打斷流水線中指令的處理,因為處理器無法確定該分支指令的下一條指令的地址,直到分支指令處理完畢,才能獲得該分支的分支目標地址(下一條指令的地址),這樣,會影響處理器的執行效率。因此,現有技術中通過對分支目標地址預測的方法,獲取分支目標地址,從而提高處理器的執行效率。
現有技術中,通過分支目標地址緩存(Branch Target Address Cache,以下簡稱:BTAC)存儲分支指令的分支目標地址,BTAC包含多個條目(entry),每一個條目包含3個字段,分別為標簽(tag)字段,目標程序計數(Program Counter,以下簡稱:PC)字段,有效(valid)字段。同一個進程中的每條分支指令對應一個唯一的程序計數PC值,程序計數PC值由N個比特表示,定義前N1個比特為程序計數PC值的高位,中間N2個比特為程序計數PC值的中位,剩下的N3個比特為程序計數PC值的低位,N1、N2、N3的和為N。BTAC的條目通過程序計數PC值的中位索引,每一個條目的tag字段存儲的為分支指令的程序計數PC值的高位,目標PC字段存儲的為分支指令的分支目標地址,valid字段標識該條目中的信息是否有效。在指令處理過程中,指令經過譯碼之后,即可確定該指令是否為分支指令,若為分支指令,則通過該指令對應的程序計數PC值的中位確定BTAC中與該指令對應的條目,確定條目之后,利用程序計數PC值的高位與確定的條目中的tag字段進行匹配,并判斷valid字段是否為有效,若PC的高位與條目中的tag字段存儲的分支指令的程序計數PC值的高位相同且valid字段為有效,則獲取該條目中的目標PC字段中的程序計數PC值作為該分支指令的分支目標地址,從而完成分支指令的分支目標地址獲取。
然而,由于不同的進程中可能存在程序計數PC值的高位和中位都相同指令,因此,采用現有技術的方法,會存在進程間干擾的問題。
發明內容
本發明實施例提供一種分支目標地址獲取方法和裝置,以避免進程間干擾的問題。
本發明實施例第一方面提供一種分支目標地址獲取方法,包括:
根據當前分支指令的程序計數PC值的中位確定第一分支目標地址緩存BTAC中與所述當前分支指令對應的第一條目;
其中,所述第一分支目標地址緩存BTAC包含至少一個第一條目,每一個第一條目對應一個分支指令的程序計數PC值的中位,每個第一條目中包含標簽字段和目標PC字段,所述標簽字段中存儲所述分支指令的進程號和所述分支指令的程序計數PC值的高位,所述目標PC字段存儲所述分支指令的分支目標地址;
判斷所述當前分支指令的進程號和所述當前分支指令的程序計數PC值的高位是否與所述當前分支指令對應的第一條目中的標簽字段中存儲的分支指令的進程號和所述分支指令的程序計數PC值的高位相同;
若相同,則獲取與所述當前分支指令對應的第一條目中的目標PC字段中的分支目標地址作為所述當前分支指令的分支目標地址。
結合第一方面,在第一種可能的實現方式中,所述根據當前分支指令的程序計數PC值的中位確定第一分支目標地址緩存BTAC中與所述當前分支指令對應的第一條目包括:
判斷第一分支目標地址緩存BTAC中與當前分支指令程序計數PC值的中位對應的第一條目中的標簽字段和目標PC字段的內容是否為空;
若不為空,則確定所述第一條目為與所述當前分支指令對應的第一條目;
若為空,則執行所述當前分支指令獲取所述當前分支指令的分支目標地址,并將所述當前分支指令的進程號、程序計數PC值和所述分支目標地址寫入所述第一分支目標地址緩存BTAC中與所述當前分支指令程序計數PC值的中位對應的第一條目中。
結合第一方面或第一種可能的實現方式,在第二種可能的實現方式中,所述根據當前分支指令的程序計數PC值的中位確定第一分支目標地址緩存BTAC中與所述當前分支指令對應的第一條目之前,還包括:
判斷是否從第一進程切換到第二進程;
若不從第一進程切換到第二進程,則執行所述根據當前分支指令的程序計數PC值的中位確定第一分支目標地址緩存BTAC中與所述當前分支指令對應的第一條目;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于華為技術有限公司;中國科學院計算技術研究所,未經華為技術有限公司;中國科學院計算技術研究所許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310270207.6/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種有色金屬溶液加熱棒
- 下一篇:一種軸承內圈加工裝置





