一種分支預測裝置,作為處理器的一個組成部分,按照處理器的操作過程,在指令預取時進行分支預測操作,所述指令預測裝置包括:指令存儲裝置,用來存儲將要執行的指令代碼;指令預取裝置,該裝置將指令代碼從指令存儲裝置中讀取出來,并傳送給指令譯碼裝置;指令譯碼裝置,該裝置對指令代碼進行譯碼分析,并發送給相應的執行裝置;程序控制指令執行裝置,用于執行程序控制指令代碼,并將執行結果反饋給指令預取裝置;非程序控制指令執行裝置,該裝置用來執行除程序控制指令之外的其它指令代碼。
【技術實現步驟摘要】
本專利技術涉及微處理器和計算機系統領域,具體地說,涉及面向處理器的取指處理裝置。
技術介紹
隨著處理器技術的進步,處理器的速度不斷提高,性能不斷增強,同時用戶對計算機或者處理器的要求越來越高。由于指令預取的效率對處理器性能影響很大,因此提高計算機的指令預取的效率尤其重要。
技術實現思路
本專利技術提出一種分支預測裝置。本專利技術的分支預測裝置是作為處理器的一個組成部分,其執行的過程按照處理器的操作過程進行,在具體實現分支預測的過程,體現出本專利技術的內容。本專利技術的分支預測裝置包括指令存儲裝置,用來存儲將要執行的指令代碼,該裝置接收地址,然后輸出存儲在該地址處的指令代碼;指令預取裝置,該裝置發出地址給指令存儲裝置,然后獲得存儲在該地址處的指令代碼,并傳送給指令譯碼裝置,同時進行分支預測操作,準備好下一次需要輸出的地址;指令譯碼裝置,該裝置對指令代碼進行譯碼分析,并發送給相應的執行裝置;程序控制指令執行裝置,該裝置屬于執行裝置的一種,用于執行程序控制指令代碼,并將執行結果反饋給指令預取裝置;非程序控制指令執行裝置,該裝置用來執行除程序控制指令之外的其它指令代碼。分支歷史表單元,該單元存儲最近執行過的K條程序控制指令的分支歷史信息;選擇預測表單元,該單元存儲對正向和反向模式歷史表單元的進行選擇的記錄;正向模式歷史表單元,該單元存儲實際分支的狀態記錄,其狀態傾向于預測發生跳轉;反向模式歷史表單元,該單元存儲實際分支的狀態記錄,其狀態傾向于預測不發生跳轉;地址生成邏輯單元,該單元根據分支預測的結果,生成取指的地址。所述指令預取裝置向所述指令存儲裝置發出地址,然后獲得存儲在該地址出的所述程序控制指令,并傳送給所述指令譯碼裝置,同時所述指令預取裝置進行分支預測操作, 準備好下一此需要輸出的地址;所述指令譯碼裝置將所述程序控制指令分發給所述程序控制指令裝置,然后所述程序控制指令裝置根據所述程序控制指令執行程序控制操作,并將結果反饋給所述指令預取裝置。根據本專利技術的分支預測按操作可以可分為兩大階段,如圖1,第一階段是對分支進行預測。具體方法以及特征,在于包括以下步驟步驟1,向指令存儲裝置發出程序控制指令I的存儲地址A ;步驟2,根據地址A,查詢程序控制指令類型表,找出該地址對應的程序控制指令類型;步驟3,根據該類型,查找分支歷史表,找出該類型對應的分支歷史信息;步驟4,將步驟3中找出的分支歷史信息和地址A進行異或,得到一個值;步驟5,根據步驟4中得到的值,查找選擇預測表,獲得該值對應的選擇值;步驟6,根據步驟5中得到的選擇值,從正向模式歷史表和反向歷史模式表中選出一個表;步驟7,根據步驟4中得到的值,查找步驟6中選擇出的模式歷史表,獲得對應的表項內容,根據該內容即可預測出指令I是否會導致跳轉,以及新的分支地址值。分支預測中的第二階段足指令執行結果反饋,以及對分支歷史表、選擇預測表、模式歷史表進行更新。具體方法以及特征,在于包括以下步驟步驟1,從指令存儲裝置獲取存儲在地址A的指令I的指令代碼,并傳送給指令譯碼裝置;步驟2,指令譯碼裝置將程序控制指令I分發給程序控制指令執行裝置;步驟3,程序控制指令執行裝置執行指令I,將指令I是否導致了跳轉、以及新的分支地址值這些信息反饋回指令預取裝置;步驟4,根據步驟3的反饋信息,對分支歷史表、選擇預測表、模式歷史表進行更新。本專利技術根據分支歷史信息、指令類型、模式歷史信息,提升了預測準確率,提高了處理器的效率。附圖說明參照如下附圖將更加易于理解本專利技術圖1所示為本專利技術提出的分支預測方法總體流程圖2所示為用于實現本專利技術的分支預測裝置的結構框圖3所示為分支預測工作原理示意圖4選擇預測表的格式;圖5選擇預測表的更新狀態圖6正向模式歷史表的更新狀態圖7反向模式歷史表的更新狀態圖8正向模式歷史表、反向模式歷史表的格式;圖9分支歷史表的格式;圖10程序控制指令類型表的格式;圖11程序控制指令類型表、選擇預測表、分支歷史表、正向模式歷史表示例; 圖12預測正確時,選擇預測表、分支歷史表、正向模式歷史表的更新; 圖13預測錯誤時,選擇預測表、分支歷史表、正向模式歷史表的更新。具體實施例方式本專利技術的分支預測裝置(如圖2)包括指令存儲裝置、指令預取裝置、指令譯碼裝置、執行裝置、程序控制指令執行裝置。所述分支預測是按照處理器的操作過程在指令預取裝置中完成。在完成一次分支預測過程中(如圖3),首先向指令存儲裝置發出程序控制指令的地址,同時把地址作索引,查找程序控制指令類型表(格式如圖10),獲得指令類型;然后將該指令類型作索引,查找分支歷史表單元(格式如圖9),獲得分支歷史信息,并和地址進行異或,將異或結果作索引,查找選擇預測表單元(格式如圖4),獲得選擇預測狀態機值;接著,根據選擇預測狀態機值,從正向模式歷史表單元和反向歷史模式表單元中選出一個表單元,并用異或結果作索引,查找選出的模式歷史表單元(格式如圖8),獲得對應的表單元項內容,根據該內容即可預測出指令I是否會 導致跳轉,以及新的分支地址值;最后,根據程序控制指令實際執行結果的反饋信息,按照圖5的方式,更新選擇預測表單元的狀態機值,如果選用了正向模式歷史表單元,則按照圖6的方式,更新正向模式歷史表單元的狀態機值,否則,按照圖7的方式,更新反向模式歷史表單元的狀態機值。這樣就完成了一次分支預測操作。舉例說明本專利技術的實施過程假定程序控制指令類型表、選擇預測表、分支歷史表、正向模式歷史表如圖11所示,首先指令預取裝置向指令存儲裝置發出了地址A2,查找程序控制指令類型表,得到索引 A2對應的程序控制指令類型為T2 ;查找分支歷史表,得到索引T2對應的分支歷史信息值為 H2 ;將A2和H2進行異或(本例中假定A2和H2的異或值等于X2),得到值X2 ;查找選擇預測表,得到索引X2對應的選擇預測狀態機值為01,根據圖5,在選擇預測狀態機值為01時應選擇正向模式歷史表;查找正向模式歷史表,得到索引X2對應的正向模式歷史狀態機值為00,同時得到地址M2,根據圖6,在正向模式歷史狀態機值為00時應當預測程序會跳轉, 因此指令預取裝置的下一次發出的地址應當是地址M2 ;假如程序在地址A2發生了跳轉,即預測成功,則選擇預測表、分支歷史表、正向模式歷史表更新為圖12 ;假如程序在地址A2沒發生跳轉,即預測失敗,則選擇預測表、分支歷史表、正向模式歷史表更新為圖13。本文檔來自技高網...
【技術保護點】
1.一種分支預測裝置,所述分支預測裝置為處理器的一個組成部分,其特征在于所述分支預測裝置包括:指令存儲裝置,用來存儲將要執行的指令代碼,該裝置接收地址,然后輸出存儲在該地址處的指令代碼;指令預取裝置,該裝置發出地址給指令存儲裝置,然后獲得存儲在該地址處的指令代碼,并傳送給指令譯碼裝置,同時進行分支預測操作,準備好下一次需要輸出的地址;指令譯碼裝置,該裝置對指令代碼進行譯碼分析,并發送給相應的執行裝置;程序控制指令執行裝置,用于執行程序控制指令代碼,并將執行結果反饋給指令預取裝置;非程序控制指令執行裝置,該裝置用來執行除程序控制指令之外的其它指令代碼。
【技術特征摘要】
1.一種分支預測裝置,所述分支預測裝置為處理器的一個組成部分,其特征在于所述分支預測裝置包括指令存儲裝置,用來存儲將要執行的指令代碼,該裝置接收地址,然后輸出存儲在該地址處的指令代碼;指令預取裝置,該裝置發出地址給指令存儲裝置,然后獲得存儲在該地址處的指令代碼,并傳送給指令譯碼裝置,同時進行分支預測操作,準備好下一次需要輸出的地址; 指令譯碼裝置,該裝置對指令代碼進行譯碼分析,并發送給相應的執行裝置; 程序控制指令執行裝置,用于執行程序控制指令代碼,并將執行結果反饋給指令預取裝置;非程序控制指令執行裝置,該裝置用來執行除程序控制指令之外的其它指令代碼。2.根據權利要求1所述的分支預測裝置,其特征在于,用于在指令預取時,對程序是否會發生分支進行預測;其中,所述指令預取裝置包括分支歷史表單元,該單元存儲最近執行過的K條程序控制指令的分支歷史信息; 選擇預測表單元,該單元存儲對正向和反向模式歷史表單元的進行選擇的記錄; 正向模式歷史表單元,該單元記錄實際分支的結果和當前預測狀態,其狀態傾向于預測發生跳轉;反向模式歷史表單元,該單元記錄實際分支的結果和當前預測狀態,其狀態傾向于預測不發生跳轉;地址生成邏輯單元,該單元根據分支預測的結果,生成取指的地址。3.根據權利要求1或2所述的分支預測裝置,其特征在于,其中,所述指令預取裝置向所述指令存儲裝置發出地址,然后獲得存儲在該地址出的所述程序控制指令,并傳送給所...
【專利技術屬性】
技術研發人員:孫瑞琛,
申請(專利權)人:孫瑞琛,
類型:發明
國別省市:11
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。