一種用于低功耗處理器的加快條件跳轉執行的裝置制造方法
【專利摘要】一種用于低功耗處理器的加快條件跳轉執行的裝置,所述裝置包括:一個流水線邏輯控制模塊,用于指令流的譯碼并接受C標志位選擇模塊請求可以堵塞流水線;一個C標志位專用運算模塊,僅僅實現結果中包含C標志位的指令所對應的執行邏輯,計算好的C標志位只用于直通給C標志位選擇模塊;一個C標志位選擇模塊,用于接受譯碼后的指令流,選取不同的C標志位用于條件跳轉執行的執行,寄存器組讀寫控制模塊,用于接受流水線邏輯控制模塊的控制,控制除C標志位外的指令運算結果的回寫,并根據其他模塊的請求讀出相應的寄存器數據。本發明有效加快執行速度、提升處理器性能。
【專利說明】一種用于低功耗處理器的加快條件跳轉執行的裝置
【技術領域】
[0001]本發明涉及一種低功耗處理器,尤其是一種在硬件資源要求不高的情形下加快條件跳轉執行速度的裝置。
【背景技術】
[0002]當前對于嵌入式處理器來說,都是采用流水線的方式來進行數據的運算。經典的五級流水線分為取指級、譯碼級、執行級、內存訪問級和寫回級,對于條件跳轉執行而言,如果條件跳轉有效,需要改變程序執行流,因此為了提高取指效率,一般條件跳轉就需要在取指級就進行判斷,這樣可以減少流水線空泡。而對于程序流來說,存在一種情況是條件跳轉指令判定跳轉的條件需要上一條指令在執行級運算后的結果,因此需要將后一級的結果直通給取指級進行運算。
[0003]對于低功耗處理器來說,由于對功耗的要求比對性能的要求高,因此流水線比較簡單。對于一個三級流水線的處理器來說,如果只有取指級、執行級和回寫級,那么需要在取指級進行跳轉指令的判定。一種處理方式是直接采用靜態預測,預測總是跳或者不跳,到執行級來確認預測正確與否。這種機制雖然簡單,但是預測準確率低,對性能損失太多,現在的嵌入式處理器一般都不采用這種方式。還有一種方式就是采用直通的方式,從執行級取回C標志位進行取指級跳轉指令的判定。但是存在一種情形是如果執行級處理的指令操作數仍舊需要從片外讀回一個值,然后從寫回級直通回執行級用于算術運算,算數運算完成后的C標志位再直通給取指級進行條件跳轉的判定,如果需要跳轉,那么需要再向片外發起新的取指令請求,那么整條運算路徑將會過長,這條路徑將會是處理器的關鍵路徑,嚴重影響處理器的工作頻率。
[0004]為了克服已有的低功耗處理器對條件跳轉處理機制的不足,在硬件資源要求提高不多的情形下,本發明提供了一種用于低功耗處理器的加快條件跳轉執行的裝置。
【發明內容】
[0005]為了克服已有技術低功耗處理器在條件跳轉處理方式的執行速度較慢、影響處理器性能的不足,本發明提供了一種有效加快執行速度、提升處理器性能的用于低功耗處理器的加快條件跳轉執行的裝置。
[0006]本發明解決其技術問題所采用的技術方案是:
[0007]—種用于低功耗處理器的加快條件跳轉執行的裝置,所述裝置包括:
[0008]流水線邏輯控制模塊,用于處理器在執行條件跳轉指令時對操作數準備模塊,條件跳轉執行模塊,算術邏輯運算模塊,C標志位專用運算模塊,C標志位寄存器,C標志位選擇模塊和寄存器組讀寫控制模塊的控制及數據的處理,感知處理器所處狀態并對指令流進行譯碼,將譯碼后信息輸出給操作數準備模塊和C標志位選擇模塊,最后根據C標志位選擇模塊輸出的C標志位無效信息堵塞流水線;
[0009]操作數準備模塊,用于接受流水線邏輯控制模塊的控制,通過流水線邏輯控制模塊輸入的指令流譯碼信息,相應地提供給算術邏輯運算模塊和C標志位專用運算模塊所需的操作數;
[0010]條件跳轉執行模塊,用于接受流水線邏輯控制模塊的控制,從C標志位選擇模塊中得到所需的C標志位數據,并根據不同指令類型判定是否需要跳轉,最終完成條件跳轉指令的執行;
[0011]算術邏輯運算模塊,用于接受流水線邏輯控制模塊的控制,從操作數準備邏輯模塊中得到所需的運算操作數,針對所有的算數運算、邏輯運算等運算進行操作并得到操作結果,所述操作結果包括C標志位結果,然后輸出給寄存器組讀寫控制模塊和C標志位寄存器,用于寄存器的回寫;
[0012]C標志位專用運算模塊,用于接受流水線邏輯控制模塊的控制,該模塊僅僅實現結果中包含C標志位的指令所對應的執行邏輯,從操作數準備邏輯模塊中得到所需的運算操作數,只用于計算C標志位,并將所得的C標志位直通給C標志位選擇模塊;
[0013]C標志位寄存器,用于接受流水線邏輯控制模塊的控制,存儲算數邏輯運算模塊中計算得到的C標志位結果,并將該C標志位寄存器的值直通給C標志位選擇模塊;
[0014]C標志位選擇模塊,用于接受流水線邏輯控制模塊的控制,根據流水線邏輯控制模塊中得到的指令流信息,從C標志位專用運算模塊或者C標志位寄存器中選通一路,將選通的C標志位提供給條件跳轉執行模塊;
[0015]寄存器組讀寫控制模塊,用于接受流水線邏輯控制模塊的控制,控制除C標志位外的指令運算結果的回寫,并根據算術邏輯運算模塊的請求讀出相應的寄存器數據。
[0016]進一步,所述流水線邏輯控制模塊中,實時監測流水線狀態,根據條件跳轉指令所處的指令流,向C標志位選擇模塊輸出不同的指令流信息,該指令流信息分為三種情形:
[0017]情形一為當前跳轉指令和之前的指令沒有數據相關性;
[0018]情形二為當前跳轉指令和之前指令存在數據相關性,而且C標志位的運算操作數不來自片外的內存讀取結果;
[0019]情形三為當前跳轉指令和之前指令存在數據相關性,而且C標志位的運算操作數來自片外的內存讀取結果。
[0020]再進一步,所述操作數準備模塊中,提供給算術邏輯運算模塊計算所需的操作數,該操作數來源包含從流水線后級直通的從片外存儲器取回的值,并且算術邏輯運算模塊計算得到的C標志位結果只用于回寫C標志位寄存器,不能直通給C標志位選擇模塊;
[0021]提供給C標志位專用運算模塊所需的操作數,該操作數來源除了不包含從片外存儲器取回的值之外,其余均與算術邏輯運算模塊相同,并且C標志位專用運算模塊計算得到的C標志位結果只用于直通給C標志位選擇模塊。
[0022]更進一步,所述C標志位專用運算模塊中,僅實現運算結果包含C標志位的指令集合,進一步僅實現該指令集合中產生C標志位的運算邏輯。
[0023]所述C標志位選擇模塊中,根據流水線邏輯控制模塊提供的指令流信息選擇不同來源的C標志位提供給條件跳轉執行模塊,具體根據三種不同情形的指令流信息進行判定,對于情形一,C標志位選擇模塊選擇C標志位寄存器中的值,對于情形二和情形三,C標志位選擇模塊均選擇C標志位專用運算模塊產生的C位運算結果。
[0024]所述C標志位選擇模塊中,在選擇C標志位的同時會根據流水線邏輯控制模塊輸入的指令流信息判斷給出的C標志位結果是否出錯,若流水線中出現情形三所示的指令流,則C標志位選擇模塊將其輸出的C標志位信息標識為錯誤,并通知流水線邏輯控制模塊堵住流水線,直到該情形三的指令流從流水線中消失。
[0025]本發明的有益效果主要表現在:在硬件資源提高不多的前提下,消除流水線執行條件跳轉指令時需要等待C標志位結果生成而引起的性能損失,快速提供C標志位結果的裝置;有效加快執行速度、提升處理器性能。
【專利附圖】
【附圖說明】
[0026]圖1為條件跳轉執行的實現裝置結構示意圖。
[0027]圖2為C標志位專用運算模塊裝置結構示意圖。
[0028]圖3為C標志位選擇模塊工作機制流程示意圖。
【具體實施方式】
[0029]下面結合附圖對本發明作進一步描述。
[0030]參照圖1?圖3,一種用于低功耗處理器的加快條件跳轉執行的裝置,所述裝置包括:
[0031]流水線邏輯控制模塊,用于處理器在執行條件跳轉指令時對操作數準備模塊,條件跳轉執行模塊,算術邏輯運算模塊,C標志位專用運算模塊,C標志位寄存器,C標志位選擇模塊和寄存器組讀寫控制模塊的控制及數據的處理,感知處理器所處狀態并對指令流進行譯碼,將譯碼后信息輸出給操作數準備模塊和C標志位選擇模塊,最后根據C標志位選擇模塊輸出的C標志位無效信息堵塞流水線;
[0032]操作數準備模塊,用于接受流水線邏輯控制模塊的控制,通過流水線邏輯控制模塊輸入的指令流譯碼信息,相應地提供給算術邏輯運算模塊和C標志位專用運算模塊所需的操作數;
[0033]條件跳轉執行模塊,用于接受流水線邏輯控制模塊的控制,從C標志位選擇模塊中得到所需的C標志位數據,并根據不同指令類型判定是否需要跳轉,最終完成條件跳轉指令的執行;
[0034]算術邏輯運算模塊,用于接受流水線邏輯控制模塊的控制,從操作數準備邏輯模塊中得到所需的運算操作數,針對所有的算數運算、邏輯運算等運算進行操作并得到操作結果,所述操作結果包括C標志位結果,然后輸出給寄存器組讀寫控制模塊和C標志位寄存器,用于寄存器的回寫;
[0035]C標志位專用運算模塊,用于接受流水線邏輯控制模塊的控制,該模塊僅僅實現結果中包含C標志位的指令所對應的執行邏輯,從操作數準備邏輯模塊中得到所需的運算操作數,只用于計算C標志位,并將所得的C標志位直通給C標志位選擇模塊;
[0036]C標志位寄存器,用于接受流水線邏輯控制模塊的控制,存儲算數邏輯運算模塊中計算得到的C標志位結果,并將該C標志位寄存器的值直通給C標志位選擇模塊;
[0037]C標志位選擇模塊,用于接受流水線邏輯控制模塊的控制,根據流水線邏輯控制模塊中得到的指令流信息,從C標志位專用運算模塊或者C標志位寄存器中選通一路,將選通的C標志位提供給條件跳轉執行模塊;
[0038]寄存器組讀寫控制模塊,用于接受流水線邏輯控制模塊的控制,控制除C標志位外的指令運算結果的回寫,并根據算術邏輯運算模塊的請求讀出相應的寄存器數據。
[0039]進一步,所述流水線邏輯控制模塊中,實時監測流水線狀態,根據條件跳轉指令所處的指令流,向C標志位選擇模塊輸出不同的指令流信息,該指令流信息分為三種情形:
[0040]情形一為當前跳轉指令和之前的指令沒有數據相關性;
[0041]情形二為當前跳轉指令和之前指令存在數據相關性,而且C標志位的運算操作數不來自片外的內存讀取結果;
[0042]情形三為當前跳轉指令和之前指令存在數據相關性,而且C標志位的運算操作數來自片外的內存讀取結果。
[0043]再進一步,所述操作數準備模塊中,提供給算術邏輯運算模塊計算所需的操作數,該操作數來源包含從流水線后級直通的從片外存儲器取回的值,并且算術邏輯運算模塊計算得到的C標志位結果只用于回寫C標志位寄存器,不能直通給C標志位選擇模塊;
[0044]提供給C標志位專用運算模塊所需的操作數,該操作數來源除了不包含從片外存儲器取回的值之外,其余均與算術邏輯運算模塊相同,并且C標志位專用運算模塊計算得到的C標志位結果只用于直通給C標志位選擇模塊。
[0045]更進一步,所述C標志位專用運算模塊中,僅實現運算結果包含C標志位的指令集合,進一步僅實現該指令集合中產生C標志位的運算邏輯,而不實現該指令集合中產生其他結果的運算邏輯。
[0046]所述C標志位選擇模塊中,根據流水線邏輯控制模塊提供的指令流信息選擇不同來源的C標志位提供給條件跳轉執行模塊,具體根據三種不同情形的指令流信息進行判定,對于情形一,C標志位選擇模塊選擇C標志位寄存器中的值,對于情形二和情形三,C標志位選擇模塊均選擇C標志位專用運算模塊產生的C位運算結果。
[0047]所述C標志位選擇模塊中,在選擇C標志位的同時會根據流水線邏輯控制模塊輸入的指令流信息判斷給出的C標志位結果是否出錯,若流水線中出現情形三所示的指令流,則C標志位選擇模塊將其輸出的C標志位信息標識為錯誤,并通知流水線邏輯控制模塊堵住流水線,直到該情形三的指令流從流水線中消失。
[0048]本實施例以三級流水線為例,分別是取指級,執行級和寫回級,闡述本發明實現機制。
[0049]請參照圖1所示,流水線邏輯控制模塊可以實時監測流水線狀態,根據條件跳轉指令所處的指令流,向C標志位選擇模塊輸出不同的指令流信息。指令流信息分為三種情形,第一種是當前跳轉指令和之前的指令沒有數據相關性,第二種是當前跳轉指令和之前指令存在數據相關性,而且C標志位的運算操作數不來自片外的內存讀取結果,第三種是當前跳轉指令和之前指令存在數據相關性,而且C標志位的運算操作數來自片外的內存讀取結果。
[0050]請參照圖1所示,執行級的算術邏輯運算模塊負責加法器相關運算,邏輯運算,移位運算等,操作數準備模塊提供給算數邏輯運算模塊的操作數存在三個來源,來源①是從寄存器中取出;來源②是從取指級和執行級的流水線寄存器取出的立即數;來源③是從一個二選一選擇器選擇之后的數據結果直通回來,該選擇器的輸入一是從執行級計算完成后的存放在執行級和寫回級的流水線寄存器的值,輸入二是片外取回的內存訪問請求的值。算術邏輯運算模塊計算得到的C標志位結果只用于回寫C標志位寄存器,不能直通給C標志位選擇模塊。
[0051]請參照圖1所示,執行級的C標志位專用運算模塊只用于計算C標志位。操作數準備模塊提供給C標志位專用運算模塊的操作數也有三個來源,其中來源①和來源②與算數邏輯運算模塊相同,而來源③則存在差異,來源③是從流水線寄存器中的值直通回來,不能將從外部總線取回的內存內的的值直通回來。因此這個C標志位計算出來的結果可能出錯。C標志位專用運算模塊計算得到的C標志位結果只用于直通給C標志位選擇模塊。請參照圖2所示,C標志位專用運算模塊僅僅計算會影響C標志位的那些運算,具體分為四種運算,包括加法操作、移位運算、邏輯運算以及雜項運算(雜項運算指的是其他一些會影響C標志位,但不易歸類到前三類的運算)。通過復制算術運算邏輯模塊的部分簡化邏輯,只針對C標志位進行運算,最終通過硬件資源增加不多的情形下,提供給條件跳轉邏輯一個如果被選擇模塊判定為有效的話可以直接使用的C標志位,加快了條件跳轉的執行。
[0052]請參照圖1所示,C標志位選擇模塊是由流水線邏輯控制模塊控制,根據流水線邏輯控制模塊中得到的指令流信息,從C標志位專用運算模塊或者C標志位寄存器中選取一個合適的C標志位源,提供給條件跳轉執行模塊。根據流水線邏輯控制模塊提供的三種不同指令流信息,提供給條件跳轉執行模塊不同來源的C標志位。對于情形一模塊選擇C標志位寄存器中的值。對于情形二和情形三C標志位選擇模塊都會先選擇C標志位專用運算模塊運算結果直通回前級流水線,之后由流水線邏輯控制模塊輸入的流水線信息判斷給出的C標志位結果是否出錯。
[0053]請參照圖3所示,C標志位選擇模塊在處理第三種情形指令流的時候,會存在一個由狀態機實現的C標志位監測與糾錯過程。指令流如果存在數據相關性將會要求C標志位選擇模塊將C標志位盡快直通回前級的條件跳轉執行單元,但是對于情形三而言,第一次提供的由C標志位專用運算模塊運算得到的結果是錯誤的。因此需要專門的狀態機負責監測錯誤,并糾正該錯誤。狀態機一開始處于監測狀態,通過監測流水線邏輯控制模塊給出的指令流信息判定是否是所述的指令流第三種情形,如果是,狀態機將進入當前C標志位無效狀態,否則一直處在監測狀態。在狀態機進入當前C標志位無效狀態時,盡管條件跳轉執行單元已經獲取了錯誤的C標志位,但是通過狀態機使該C標志位無效,同時通知流水線邏輯控制模塊堵住流水線,保證處理器處理程序流正確,直到該情形三的指令流從流水線消失。然后當前指令流變成情形一,狀態機進入提供新的C標志位狀態,因此從寄存器中取回正確的值,然后直通給條件跳轉執行單元,并告訴流水線邏輯控制模塊,該標志位是有效的,條件跳轉執行單元可以繼續下一步操作。最后狀態機回到監測狀態。
[0054]請參照圖1所示,寄存器組讀寫模塊和C標志位寄存器的讀寫是通過流水線的控制,從上級流水線寄存器或者片外存儲器中取得輸入,并且根據需要向流水線前級直通回寄存器內的值。
[0055]請參照圖1所示,取指級的跳轉執行模塊主要是根據C標志位來判定條件跳轉指令是否需要跳轉,如果需要跳轉,表示程序流需要發生改變,取指級將會向外部總線發起新的取指請求。
[0056]下面以三種情形的指令流信息為例,分析條件跳轉執行的工作流程:
[0057]①對于情形一來說,跳轉指令和前幾條指令不存在數據相關性,因此如圖1所示,由C標志位選擇模塊直接從C標志位寄存器中取出C標志位,然后直通給條件跳轉執行模塊。②對于情形二來說,跳轉指令和前幾條指令存在數據相關性,但是不需要從片外取回數據,因此如圖1所示,操作數可能從寄存器組或者執行級和寫回級的流水線寄存器中直通回來,然后通過C標志位專用運算模塊進行運算后,直通給C標志位選擇模塊,然后經C標志位選擇模塊選擇后,直通給條件跳轉執行模塊。③對于情形三來說,條件指令和前幾條指令存在數據相關性,并且需要從片外取回數據,因此如圖1所示,操作數需要先從片外取回內存中的值,然后經過寫回級的二選一選擇器選擇后直通回執行級。之后操作數準備模塊將該值均提供給算術邏輯運算模塊和C標志位專用運算模塊,算術邏輯運算模塊計算完成C標志位后將值存回到C標志位寄存器中,而C標志位專用運算模塊運算完成后將值直通給C標志位選擇模塊。而C標志位選擇模塊先提供給條件跳轉執行模塊由C標志位專用運算模塊運算得到的值,并且由于得到流水線邏輯控制模塊的指令流信息,因此通知流水線控制單元堵住流水線,之后將C標志位寄存器中正確的C標志位選取出來,最終第二次直通給條件跳轉單元。
【權利要求】
1.一種用于低功耗處理器的加快條件跳轉執行的裝置,其特征在于:所述裝置包括: 流水線邏輯控制模塊,用于處理器在執行條件跳轉指令時對操作數準備模塊,條件跳轉執行模塊,算術邏輯運算模塊,C標志位專用運算模塊,C標志位寄存器,C標志位選擇模塊和寄存器組讀寫控制模塊的控制及數據的處理,感知處理器所處狀態并對指令流進行譯碼,將譯碼后信息輸出給操作數準備模塊和C標志位選擇模塊,最后根據C標志位選擇模塊輸出的C標志位無效信息堵塞流水線; 操作數準備模塊,用于接受流水線邏輯控制模塊的控制,通過流水線邏輯控制模塊輸入的指令流譯碼信息,相應地提供給算術邏輯運算模塊和C標志位專用運算模塊所需的操作數; 條件跳轉執行模塊,用于接受流水線邏輯控制模塊的控制,從C標志位選擇模塊中得到所需的C標志位數據,并根據不同指令類型判定是否需要跳轉,最終完成條件跳轉指令的執行; 算術邏輯運算模塊,用于接受流水線邏輯控制模塊的控制,從操作數準備邏輯模塊中得到所需的運算操作數,針對所有的算數運算、邏輯運算等運算進行操作并得到操作結果,所述操作結果包括C標志位結果,然后輸出給寄存器組讀寫控制模塊和C標志位寄存器,用于寄存器的回與; C標志位專用運算模塊,用于接受流水線邏輯控制模塊的控制,該模塊僅僅實現結果中包含C標志位的指令所對應的執行邏輯,從操作數準備邏輯模塊中得到所需的運算操作數,只用于計算C標志位,并將所得的C標志位直通給C標志位選擇模塊; C標志位寄存器,用于接受流水線邏輯控制模塊的控制,存儲算數邏輯運算模塊中計算得到的C標志位結果,并將該C標志位寄存器的值直通給C標志位選擇模塊; C標志位選擇模塊,用于接受流水線邏輯控制模塊的控制,根據流水線邏輯控制模塊中得到的指令流信息,從C標志位專用運算模塊或者C標志位寄存器中選通一路,將選通的C標志位提供給條件跳轉執行模塊; 寄存器組讀寫控制模塊,用于接受流水線邏輯控制模塊的控制,控制除C標志位外的指令運算結果的回寫,并根據算術邏輯運算模塊的請求讀出相應的寄存器數據。
2.如權利要求1所述的用于低功耗處理器的加快條件跳轉執行的裝置,其特征在于:所述流水線邏輯控制模塊中,實時監測流水線狀態,根據條件跳轉指令所處的指令流,向C標志位選擇模塊輸出不同的指令流信息,該指令流信息分為三種情形: 情形一為當前跳轉指令和之前的指令沒有數據相關性; 情形二為當前跳轉指令和之前指令存在數據相關性,而且C標志位的運算操作數不來自片外的內存讀取結果; 情形三為當前跳轉指令和之前指令存在數據相關性,而且C標志位的運算操作數來自片外的內存讀取結果。
3.如權利要求1或2所述的用于低功耗處理器的加快條件跳轉執行的裝置,其特征在于:所述操作數準備模塊中,提供給算術邏輯運算模塊計算所需的操作數,該操作數來源包含從流水線后級直通的從片外存儲器取回的值,并且算術邏輯運算模塊計算得到的C標志位結果只用于回寫C標志位寄存器,不能直通給C標志位選擇模塊; 提供給C標志位專用運算模塊所需的操作數,該操作數來源除了不包含從片外存儲器取回的值之外,其余均與算術邏輯運算模塊相同,并且C標志位專用運算模塊計算得到的C標志位結果只用于直通給C標志位選擇模塊。
4.如權利要求1或2所述的用于低功耗處理器的加快條件跳轉執行的裝置,其特征在于:所述C標志位專用運算模塊中,僅實現運算結果包含C標志位的指令集合,進一步僅實現該指令集合中產生C標志位的運算邏輯。
5.如權利要求2所述的用于低功耗處理器的加快條件跳轉執行的裝置,其特征在于:所述C標志位選擇模塊中,根據流水線邏輯控制模塊提供的指令流信息選擇不同來源的C標志位提供給條件跳轉執行模塊,具體根據三種不同情形的指令流信息進行判定,對于情形一,C標志位選擇模塊選擇C標志位寄存器中的值,對于情形二和情形三,C標志位選擇模塊均選擇C標志位專用運算模塊產生的C位運算結果。
6.如權利要求2所述的用于低功耗處理器的加快條件跳轉執行的裝置,其特征在于:所述C標志位選擇模塊中,在選擇C標志位的同時會根據流水線邏輯控制模塊輸入的指令流信息判斷給出的C標志位結果是否出錯,若流水線中出現情形三所示的指令流,則C標志位選擇模塊將其輸出的C標志位信息標識為錯誤,并通知流水線邏輯控制模塊堵住流水線,直到該情形三的指令流從流水線中消失。
【文檔編號】G06F9/305GK104331268SQ201410584307
【公開日】2015年2月4日 申請日期:2014年10月27日 優先權日:2014年10月27日
【發明者】江鵬, 王曉峰, 張文蒙 申請人:杭州中天微系統有限公司