專利名稱:支持多路并行預測的分支預測裝置的制作方法
技術領域:
本發明涉及計算機系統,更具體地說,涉及一種使用分支預測表進行分支預測的處理器。
背景技術:
目前,包括嵌入式處理器在內的所有處理器,都是用流水線方式,指令處理分為一系列的操作,且由各個的流水線執行相應的操作。不同的流水線級同時對不同的指令進行操作,使得指令的執行可以重疊進行以提高效率。為了充分利用這個指令執行能力,必須由正確的執行路徑想該處理器提供足夠的指令,而分支跳轉指令的存在,將導致流水線的停頓。預測機制的出現使處理器可以以投機執行的方式繼續執行指令,從而提高了執行的效率。
在有指令多發機制的嵌入式處理器中,在同一級流水線有一條或多于一條的指令需要處理。當只有一條分支跳轉指令時,傳統的非并行的結合歷史相關的分支預測裝置可以很好地預測。但當遇到同時有多條分支跳轉指令時,預測將出現問題。這是因為歷史相關的分支預測中,前一條分支跳轉的跳轉情況將影響后一條分支跳轉的預測。而在同一級流水線中的前后幾條分支跳轉指令的互相影響并不能做到及時獲取預測信息,造成了預測效率的低下。發明內容
為了克服已有的嵌入式處理器的分支預測機制存在的對多發處理器支持不力導致的預測準確率較低的不足,本發明提供一種解決多條分支跳轉指令同時預測,提高預測準確率的支持多路并行預測的分支預測裝置。
本發明解決其技術問題所采用的技術方案是
一種支持多路并行預測的分支預測裝置,所述分支預測裝置包括
—個指令預取單元,用于在一個時鐘周期內并行預取η條指令,η為自然數,且 η彡2 ;
η路并行預測單元,用于設置η路并行預測子單元,對η條分支跳轉指令進行并行預測;
一個控制電路,用于檢測整個分支預測裝置的狀態,連接分支預測存儲器,為其提供讀使能信號和寫使能信號,連接索引選擇器,為其提供選通信號;
所述并行預測子單元包括
分支預測存儲器,用于記錄分支跳轉指令的分支預測信息,并輸出預測的分支結果,所述分支跳轉指令包含在Π條指令中;
全局歷史移位寄存器,用于記錄經過后級流水線確認的擁有特定低位PC地址的跳轉指令跳轉歷史信息,為對應的分支預測存儲器提供寫索引,每個全局歷史移位寄存器的位寬為j位,其中存儲著最近j條分支跳轉指令執行完成時是否跳轉的結果;
虛擬歷史移位寄存器,用于記錄擁有特定低位PC地址的跳轉指令跳轉與否預測軌跡,每個虛擬歷史移位寄存器的位寬為j位,其中存儲著最近j條分支跳轉指令是否跳轉的預測結果;
索引選擇器,連接于全局歷史移位寄存器和虛擬歷史移位寄存器的輸出端和存儲器的輸入端之間,從全局歷史移位寄存器或虛擬歷史移位寄存器中選取j作為最終的分支預測存儲器的索引。
進一步,所述控制電路使用分支跳轉指令用低m位的PC地址來區分不同的分支跳轉指令,其中η = 2m,一路分支預測裝置的預測結果只能用于其對應的特定的分支跳轉指令。
再進一步,所述并行預測子單元中,使用虛擬歷史移位寄存器的全部共j位用于索引對應的預測存儲器,對分支預測存儲器進行讀操作,讀取預測信息。
更進一步,所述控制電路中,當分支跳轉指令的預測結果經過后級流水線確認正確之后,更新此分支跳轉指令所對應的全局歷史寄存器,將正確的分支結果寫入全局歷史移位寄存器的最高位或者最低位,全局歷史移位寄存器則相應的左移或者右移一位。
所述控制電路中,對分支跳轉指令作出預測之后,將立即用這條指令的預測信息更新這條分支跳轉指令所對應的虛擬歷史寄存器,將預測的分支結果寫入虛擬歷史移位寄存器的最高位或者最低位,虛擬歷史移位寄存器則相應的左移或者右移一位。
所述控制電路中,當分支跳轉指令的預測結果經過后級流水線確認錯誤之后,控制電路控制選擇此分支跳轉指令所對應的分支預測存儲器進行寫操作,此分支跳轉指令所對應的全局歷史移位寄存器的全部共j位用于索引,將正確的分支結果寫入分支結果存儲ο
所述控制電路中,當分支跳轉指令的預測結果經過后級流水線確認錯誤之后,每一路分支預測裝置將使用預測信息更新此分支跳轉指令所對應的全局歷史寄存器,將跳轉結果寫入全局歷史移位寄存器的最高位或者最低位,全局歷史移位寄存器則相應的左移或者右移一位,并用更新后的全局歷史移位寄存器全j位更新對應的虛擬歷史移位寄存器的全j位。
本發明的有益效果為解決多條分支跳轉指令同時預測,提高預測準確率。
圖1為多路并行預測信息和指令對應示意圖2為每一路分支預測裝置結構示意圖3為每路預測裝置的預測流程示意圖4為多路預測裝置的預測流程示意圖5為每一路的預測都相對獨立的預測流程示意圖。
具體實施方式
下面結合附圖對本發明做進一步說明。
參照圖1 圖2所示,一種支持多路并行預測的分支預測裝置,主要分為兩大部分,包括多路并行預測單元和并行指令取指單元。并行指令取指單元負責在一個周期內取得多條指令。在一個時鐘周期同時取得多條指令之后,對多條指令的預測信息才能體現出優勢。
參照圖1所示,多路分支預測單元同時做出η路的預測信息,并行取指單元同時取得η條指令。每一路的預測信息和單獨的一條指令相互對應,以指令的低m位pc來區分, η = 2m。每一路的預測信息由一路的分支預測單元給出,即每路的分支預測器只對應特定低m位pc的分支跳轉指令,其讀寫操作都取決于這條特定低位pc分支跳轉指令的預測跳轉情況和真實跳轉情況,具體情況下文將會詳細解釋。
參照圖2所示,每一路分支預測裝置包括一個分支預測存儲器、一個j位的 GHR(全局歷史移位寄存器)、一個j位的VGHR(虛擬歷史移位寄存器),一個索引選擇器, 和一個控制電路。其中,預測結果來自于分支預測存儲器,實際跳轉結果來自于后級流水線給出的關于此路分支預測裝置對應的跳轉指令是否跳轉的真實信息。GHR用于記錄實際跳轉結果。VGHR用于記錄特定低位PC地址的跳轉指令跳轉與否預測軌跡。索引選擇器連接于GHR和VGHR的輸出端和存儲器的輸入端之間,從GHR或VGHR中選取j作為最終的分支預測存儲器的索引。控制電路用于檢測整個分支預測裝置的狀態,連接分支預測存儲器, 為其提供讀使能信號和寫使能信號,連接索引選擇器,為其提供選通信號。VGHR的全部共j 位用于索引對應的預測存儲器,對分支預測存儲區進行讀操作,讀取預測信息。跳轉指令的預測結果經過后級流水線確認正確之后,更新GHR,將正確的分支結果寫入GHR的最高位或者最低位,GHR則相應的左移或者右移一位。對分支跳轉指令作出預測之后將立即用這條指令的預測信息更新VGHR,將預測的分支結果寫入VGHR的最高位或者最低位,VGHR則相應的左移或者右移一位。當分支跳轉指令的預測結果經過后級流水線確認錯誤之后,控制電路控制分支預測存儲器進行寫操作,GHR的全部共j位用于索引,將正確的分支結果寫入分支結果存儲器;更新GHR,將正確的分支結果寫入GHR的最高位或者最低位,GHR則相應的左移或者右移一位,然后用GHR的值更新對應的VGHR。
參照圖3所示,每路預測裝置的預測流程首先由取指和取得預測信息開始。然后判斷這條指令是否一條條件跳轉分支跳轉指令。如果不是一條條件分支跳轉指令,預測信息將沒有意義,預測內容保持不變。如果是一條條件分支跳轉指令,將使用預測結果更新 VGHR。新的VGHR將用來索引分支預測存儲器,并讀出新的預測信息。于此同時分支跳轉指令將流到后級流水線,后級流水線將會判斷這條指令的跳轉情況。如果預測正確,更新 GHR0如果預測錯誤,先使用GHR索引分支預測存儲器,并用實際跳轉結果更新存儲器的值, 之后用跳轉結果更新GHR,再用更新后的GHR更新VGHR。
參照圖4和圖5,進一步體現出本發明的優勢。如圖4所示,傳統的非并行的結合歷史相關的分支預測裝置在對多條指令進行預測時,后一條指令要根據前一條指令的跳轉信息來索引分支預測存儲器,才能為后一條的分支跳轉指令得到新的預測信息。由于這是一個串行的過程,這種方式預測效率大大降低,預測的必要性也接近于0,只能采取對后面的指令放棄預測等方式。而結合圖5來看,每一路的預測都相對獨立,前一次的預測結果或跳轉信息都不會對后一次的預測造成太大的影響。這種相對的獨立性保證了在并行取得多條指令時,預測信息的快速取得,不會因為指令條數的增加而使預測效率降低,從而保證了預測裝置的功能性和必要性。
權利要求
1.一種支持多路并行預測的分支預測裝置,其特征在于所述分支預測裝置包括一個指令預取單元,用于在一個時鐘周期內并行預取η條指令,η為自然數,且η ^ 2 ;η路并行預測單元,用于設置η路并行預測子單元,對η條分支跳轉指令進行并行預測;一個控制電路,用于檢測整個分支預測裝置的狀態,連接分支預測存儲器,為其提供讀使能信號和寫使能信號,連接索引選擇器,為其提供選通信號;所述并行預測子單元包括分支預測存儲器,用于記錄分支跳轉指令的分支預測信息,并輸出預測的分支結果,所述分支跳轉指令包含在η條指令中;全局歷史移位寄存器,用于記錄經過后級流水線確認的擁有特定低位PC地址的跳轉指令跳轉歷史信息,為對應的分支預測存儲器提供寫索引,每個全局歷史移位寄存器的位寬為j位,其中存儲著此移位寄存器對應位置的最近執行j條分支跳轉指令在執行完畢后是否跳轉的結果;虛擬歷史移位寄存器,用于記錄擁有特定低位PC地址的跳轉指令跳轉與否預測軌跡, 每個虛擬歷史移位寄存器的位寬為j位,其中存儲著最近j條分支跳轉指令是否跳轉的預測結果;索引選擇器,連接于全局歷史移位寄存器和虛擬歷史移位寄存器的輸出端和存儲器的輸入端之間,從全局歷史移位寄存器或虛擬歷史移位寄存器中選取j作為最終的分支預測存儲器的索引。
2.如權利要求1所述的支持多路并行預測的分支預測裝置,其特征在于所述控制電路使用分支跳轉指令用低m位的PC地址來區分不同的分支跳轉指令,其中η = 2m,一路分支預測裝置的預測結果只能用于其對應的特定的分支跳轉指令。
3.如權利要求1或2所述的支持多路并行預測的分支預測裝置,其特征在于所述并行預測子單元中,使用虛擬歷史移位寄存器的全部共j位用于索引對應的預測存儲器,對分支預測存儲器進行讀操作,讀取預測信息。
4.如權利要求1或2所述的支持多路并行預測的分支預測裝置,其特征在于所述控制電路中,當分支跳轉指令的預測結果經過后級流水線確認正確之后,更新此分支跳轉指令所對應的全局歷史寄存器,將正確的分支結果寫入全局歷史移位寄存器的最高位或者最低位,全局歷史移位寄存器則相應的左移或者右移一位。
5.如權利要求1或2所述的支持多路并行預測的分支預測裝置,其特征在于所述控制電路中,對分支跳轉指令作出預測之后,將立即用這條指令的預測信息更新這條分支跳轉指令所對應的虛擬歷史寄存器,將預測的分支結果寫入虛擬歷史移位寄存器的最高位或者最低位,虛擬歷史移位寄存器則相應的左移或者右移一位。
6.如權利要求1或2所述的支持多路并行預測的分支預測裝置,其特征在于所述控制電路中,當分支跳轉指令的預測結果經過后級流水線確認錯誤之后,控制電路控制選擇此分支跳轉指令所對應的分支預測存儲器進行寫操作,此分支跳轉指令所對應的全局歷史移位寄存器的全部共j位用于索引,將正確的分支結果寫入分支結果存儲器。
7.如權利要求1或2所述的支持多路并行預測的分支預測裝置,其特征在于所述控制電路中,當分支跳轉指令的預測結果經過后級流水線確認錯誤之后,每一路分支預測裝置將使用預測信息更新此分支跳轉指令所對應的全局歷史寄存器,將跳轉結果寫入全局歷史移位寄存器的最高位或者最低位,全局歷史移位寄存器則相應的左移或者右移一位,并用更新后的全局歷史移位寄存器全j位更新對應的虛擬歷史移位寄存器的全j位。
全文摘要
一種支持多路并行預測的分支預測裝置,所述分支預測裝置包括一個指令預取單元,用于在一個時鐘周期內并行預取n條指令,n為自然數,且n≥2;n路并行預測單元,用于設置n路并行預測子單元,對n條分支跳轉指令進行并行預測;一個控制電路,用于檢測整個分支預測裝置的狀態,連接分支預測存儲器,為其提供讀使能信號和寫使能信號,連接索引選擇器,為其提供選通信號;本發明提供一種解決多條分支跳轉指令同時預測,提高預測準確率的支持多路并行預測的分支預測裝置。
文檔編號G06F9/38GK102520914SQ201110347139
公開日2012年6月27日 申請日期2011年11月4日 優先權日2011年11月4日
發明者劉兵, 孟建熠, 葛海通, 郭宇波 申請人:杭州中天微系統有限公司