PowerPC向量協處理器譯碼電路中動態調度方法
【技術領域】
[0001]本發明涉及一種譯碼電路中動態調度方法。特別是涉及PowerPC向量協處理器譯碼電路中動態調度方法。
【背景技術】
[0002]為了提高處理器的性能,流水線技術已經被廣泛使用在現代處理器中。然而由于處理器所執行的指令之間存在數據相關,將會阻塞流水線,顯著影響處理器的執行性能。
[0003]為了盡可能地降低指令間數據相關對處理器性能的影響,現代處理器普遍采用動態調度的方法,通過檢測指令間的相關性及存在相關性指令的執行情況,動態發射譯碼后的指令,使得后譯碼的指令有可能先于先譯碼的指令執行。在不影響程序正確性的前提下,盡可能減少因指令間數據相關對流水線的阻塞。
[0004]PowerPC主處理器和協處理器之間通過協處理器接口,以緊耦合流水線的方式進行連接,協處理器在接收主處理器發來的指令和數據后,需要按照主處理器規定的一整套協處理器接口協議,在規定的時鐘周期內,將主處理器需要的指令譯碼信息反饋給主處理器,涉及修改主處理器特殊寄存器的指令需要在規定的時鐘周期內完成對相應特殊寄存器的改寫,以便后續指令正確讀取相應特殊寄存器的值。
[0005]而當協處理器為了降低因指令間數據相關而產生的對流水線的阻塞,而采用了動態調度方法時,由于指令的動態調度是基于指令間的數據相關性及相關指令的執行情況,當一條指令與其他指令存在數據相關且相關指令的相關性沒有及時解除時,該指令便有可能沒有按照協處理器接口協議,在規定的時鐘周期內完成該指令的執行操作,將主處理器需要的相關譯碼信息傳輸給主處理器,或者雖然即時將主處理器需要的譯碼信息傳回,但卻沒有在規定的時鐘周期內改寫需要改寫的主處理器中的特殊寄存器,從而影響后續指令的正確執行。
[0006]另外,由于部分協處理器指令(如Load類指令)的操作數可能來源于主處理器,當協處理器指令存在動態調度,而沒有按照主處理器的預期執行時,主處理器就可能沒有在正確的時鐘周期將協處理器指令所需要的操作數傳輸給協處理器。
【發明內容】
[0007]本發明所要解決的技術問題是,提供一種能夠使得在協處理器滿足協處理器接口協議的前提下對協處理器中所執行的指令進行動態調度,盡可能降低因協處理器中數據相關對流水線造成阻塞的PowerPC向量協處理器譯碼電路中動態調度方法。
[0008]本發明所采用的技術方案是:PowerPC向量協處理器譯碼電路中動態調度方法,當協處理器每接收到一條來自主處理器的指令時,都要進行如下步驟:
[0009]1)判斷接收到的指令是否是一條有效的協處理器指令,并將判斷結果按照主處理器規定的協處理器接口協議的要求,在規定的時鐘周期返回給主處理器;
[0010]2)判斷當前指令是否涉及修改主處理器特殊寄存器,是進入下一步驟,否則不發送停止接收新指令信號;
[0011]3)判斷當前指令是否和指令隊列中的其他指令存在輸出相關或反相關,是則發送停止接收新指令信號,否則進入下一步驟。
[0012]4)判斷譯碼單元從主處理器接收的上一條指令是否為改寫主處理器的特殊寄存器,是則發送停止接收新指令信號,否則進入下一步驟;
[0013]5)判斷當前指令操作數是否已經準備好,是則不發送停止接收新指令信號,否則進入下一步驟;
[0014]6)判斷當前指令的相關指令是否正在寫回或已經寫回,是則不發送停止接收新指令信號,否則發送停止接收新指令信號后返回步驟5)。
[0015]步驟1)中,如果判斷結果是無效協處理器指令,在協處理器接口協議規定的時鐘周期返回給主處理器一個無效協處理器指令確認信號,表明所接收到的指令不是一條有效的協處理器指令;如果判斷結果是有效協處理器指令,在協處理器接口協議規定的時鐘周期返回給主處理器一個有效協處理器指令確認信號,表明所接收到的指令是一條有效的協處理器指令。
[0016]步驟2)中所述的特殊寄存器是主處理器中除通用寄存器以外的寄存器。
[0017]步驟3)中所述的當前指令是否和指令隊列中的其他指令存在輸出相關或反相關,是判斷當前指令的目的寄存器是否等于指令隊列中其他指令的源寄存器或目的寄存器。
[0018]步驟6)中所述的當前指令的相關指令,是指若當前指令中的一個操作數的源寄存器等于協處理器的指令隊列中一條指令的目的寄存器,則將所述指令隊列中源寄存器的編號等于當前指令目的寄存器編號的指令條目中編號最小的一項設置為當前譯碼指令的相關指令。
[0019]本發明的PowerPC向量協處理器譯碼電路中動態調度方法,在保證程序正確執行并且滿足協處理器接口協議的基礎上,對協處理器中所執行的指令進行動態調度,從而將由于協處理器指令之間存在數據相關而對流水線的阻塞降低到最小,提高了協處理器的整體性能。
【附圖說明】
[0020]圖1是本發明PowerPC向量協處理器譯碼電路中動態調度方法和流程圖;
[0021]圖2是PowerPC協處理器動態調度的一個實例。
【具體實施方式】
[0022]下面結合實施例和附圖對本發明的PowerPC向量協處理器譯碼電路中動態調度方法做出詳細說明。
[0023]根據PowerPC向量協處理器接口協議要求,當協處理器接收到一條主處理器發來的指令時,需要在協處理器接口協議規定的時鐘周期返回一個確認信號,表明所接收到的指令是不是一條有效的協處理器指令。如果協處理器確認所接收到的指令是一條有效的協處理器指令,則主處理器認為協處理器應該在固定的時鐘周期內完成所接收指令的執行工作,并根據協處理器接口協議,在規定的時鐘周期將協處理器所需要的有效操作數傳輸給協處理器。當協處理器所接收指令涉及修改主處理器特殊寄存器的值時,需要在執行結束前完成相應的特殊寄存器值的修改工作。
[0024]如圖1所示,本發明的PowerPC向量協處理器譯碼電路中動態調度方法,是當協處理器每接收到一條來自主處理器的指令時,都要進行如下步驟:
[0025]1)判斷接收到的指令是否是一條有效的協處理器指令,并將判斷結果按照主處理器規定的協處理器接口協議的要求,在規定的時鐘周期返回給主處理器。其中,如果判斷結果是無效協處理器指令,在協處理器接口協議規定的時鐘周期返回給主處理器一個無效協處理器指令確認信號,表明所接收到的指令不是一條有效的協處理器指令;如果判斷結果是有效協處理器指令,在協處理器接口協議規定的時鐘周期返回給主處理器一個有效協處理器指令確認信號,表明所接收到的指令是一條有效的協處理器指令;
[0026]2)判斷當前指令與指令隊列中的其他指令是否存在輸出相關或反相關,即判斷當前指令的目的寄存器是否等于指令隊列中其他指令的源寄存器或目的寄存器,是則發送停止接收新指令信號,否則進入下一步驟。
[0027]3)判斷當前指令是否涉及修改主處理器特殊寄存器,是進入下一步驟,否則不發送停止接收新指令信號,所述的特殊寄存器是主處理器中除通用寄存器以外的寄存器;
[0028]4)判斷譯碼單元從主處理器接收的上一條指令是否-改寫主處理器的特殊寄存器,是則發送停止接收新指令信號,否則進入下一步驟;
[0029]5)判斷當前指令操作數是否已經準備好,是則不發送停止接收新指令信號,否則進入下一步驟;
[0030]6)判斷當前指令的相關指令是否正在寫回或已經寫回,是則不發送停止接收新指令信號,否則發送停止接收新指令信號后返回步驟5),直到當前指令的操作數已經準備好或相關指令已經寫回或正在寫回時,停止發送停止接收新指令信號。所述的當前指令的相關指令,是指若當前指令中的一個操作數的源寄存器等于協處理器的指令隊列中一條指令的目的寄存器,則將所述指令隊列中源寄存器的編號等于當前指令目的寄存器編號的指令條目中最新的一項設置為當前譯碼指令的相關指令。
[0031]需要說明的是,停止接收新指令信號的作用在于當停止接收新指令信號為高電平時,表明協處理器不能接收主處理器發來的新指令,此時,當主處理取指單元接收到一條非主處理器指令時,應停滯流水線,等待向量協處理器對所述非主處理器指令進行譯碼,以判斷這條非主處理器指令是否是一條有效的協處理器指令。該信號的具體信號名由協處理器接口協議規定,可能因協處理器接口協議的不同而不同。
[0032]下面結合圖2說明本發明工作過程。
[0033]如圖2向量協處理器100所