基於隱式相關性和隱式旁路的微處理器指令拆分裝置的製作方法
2023-04-30 19:57:21
專利名稱:基於隱式相關性和隱式旁路的微處理器指令拆分裝置的製作方法
技術領域:
本發明涉及嵌入式處理器領域,尤其是一種基於隱式相關性和隱式旁路的微處理器指令拆分裝置。
背景技術:
現代集成電路技術的發展嵌入式微處理器應用領域的不斷深入和擴大,使得存儲器成為了制約微處理器成本和功耗的重要因素。在特定硬體資源前提下,如何增強指令集功能、提高代碼密度和指令執行效率,是很多處理器設計人員必須面對的問題。很多嵌入式處理器針對特定應用,通過向指令集中引入數條執行時可拆分為數條原子操作的複雜操作指令,提出了這個問題的解決方案。考慮到處理器硬體資源、功耗以及指令拆分的實現複雜度,一般處理器僅對各操作之間有良好並行性的複雜操作指令進行拆分,如從連續存儲區域向通用暫存器加載數據,或者把多個通用暫存器的數據存儲到存儲器。拆分有前後數據相關性的複雜操作指令,既要解決拆分後原子指令之間的數據相關性,又要儘快消除這種相關性,需要較大硬體資源支持,其實現具有較大難度。這個限制了通過拆分複雜操作指令從而提高處理器代碼密度增強指令集功能的能力。以一個32位微處理器來說明處理器硬體資源和指令集功能之間的關係。該處理器總共有16個通用暫存器R0-R15,有算數運算單元和存儲器讀寫單元等執行單元,其中算數運算單元每個周期只能完成一次加、減、乘、除、移位等原子操作,存儲器讀寫單元每周期只能完成一次存儲器讀或寫原子操作,每個執行單元有2個暫存器讀埠。在這樣的硬體設計下,如果需要把暫存器Wc的數據存到以暫存器Ri和Rj數據和為地址的存儲區域,則需要兩條指令先用「ADD RiRj」指令把Ri和Rj數據相加,結果存到Ri中;再用store Rk Ri完成最終操作;同理,如果需要跳轉到兩個寄存器數據之和所指示的代碼區域,也需要兩條指令協作完成。
發明內容
為了克服現有的微處理器在拆分有前後數據相關性的複雜操作指令時需要消耗大量硬體資源、限制了可拆分指令的範圍、限制了處理器性能的不足,本發明提供一種在拆分有前後數據相關性的複雜操作指令時有效減少佔用硬體資源、擴大其可拆分指令的範圍、提升處理器性能的基於隱式相關性和隱式旁路的微處理器指令拆分裝置。本發明解決其技術問題所採用的技術方案是—種基於隱式相關性和隱式旁路的微處理器指令拆分裝置,所述微處理器指令拆分裝置包括需拆分指令檢測與拆分單元,用以判斷進入該微處理器指令拆分裝置的已解碼指令是否為需拆分指令,並將需拆分指令拆分為至少兩條原子指令;已拆分指令處理單元,連接於需拆分指令拆分和檢測單元輸出端,用以接收來自該需拆分指令拆分單元將該需拆分指令拆分成的至少兩條原子指令,對這些原子指令構造
3隱式相關性,並引入隱式旁路技術,輸出已處理原子指令;其他處理單元,連接於需拆分指令檢測和拆分單元的輸出端和已拆分指令處理單元的輸出端,用以接收被需拆分指令檢測與處理單元判斷為無需拆分的指令和已拆分指令處理單元最終生成的原子指令,並完成指令後續處理、執行工作。進一步,該已拆分指令處理單元最終生成的原子指令在該微處理器中按照標準指令進行處理。優選的,所述需拆分指令檢測與拆分單元中,由空閒與拆分兩種狀態進行維護,其中,無需拆分指令進入該指令檢測與拆分單元時,該指令檢測與拆分單元處於空閒態,無拆分動作發生;需拆分指令進入該指令檢測與拆分裝置時,該指令檢測與拆分單元進入拆分態,將指令拆分成若干原子指令後返回空閒態。再進一步,所述已拆分指令處理單元包括構造隱式相關性模塊,用以指示和維護該需拆分指令所拆分成若干個原子指令之間相關性,該構造隱式相關性模塊與該微處理器中相關性維護模塊互相獨立;隱式旁路模塊,負責數據的旁路,用以將該需拆分指令所拆分成若干個具有數據相關性的原子指令執行結果進行旁路,該隱式旁路模塊與該微處理器中顯式旁路模塊互相獨立。更進一步,該需拆分指令拆分為至少兩條已拆分原子指令,其中具有數據相關性的兩條已拆分原子指令定義為第一已拆分指令和第二已拆分指令,第二已拆分指令數據相關於第一已拆分指令,隱式旁路模塊對第一已拆分指令在微處理器中特定模塊中的指令序號進行處理,使得第二已拆分指令旁路到第一已拆分指令數據之後,第一已拆分指令才可執行結束。本裝置的技術構思為微處理器指令集是微處理器硬體和軟體直接的分界面,用戶通過微處理器指令通知微處理器硬體完成相關工作量,微處理器指令集是提高微處理器效率的最有效工具之一。目前微處理器廣泛使用的RISC指令集,雖然能很有效地適合於採用流水線、超流水線和超標量技術的體系結構,對處理器性能提高很多。然而,由於RISC指令集每條指令實現功能有限,編程時,用戶需要將工作量細分為每個RISC指令可處理的原子操作。在一些特殊應用場合,如存儲器大量數據的讀寫、頻繁跳轉等,用戶需要重複使用數條功能類似的指令。這些無疑都增大了編寫代碼工作量。因此,大多數處理器引入了一些複雜操作指令,簡化指令編寫,提高指令執行效率和代碼密度。為了在節約硬體成本和不影響性能的前提下增加這些複雜操作指令,大多數微處理器都引入了指令拆分機制,然而這些指令拆分機制只能拆分具有較高並行性的複雜操作指令,很難處理有數據相關性的複雜操作指令。為了擴大可拆分指令的範圍,本微處理器引入了一種基於隱式相關性和隱式旁路技術的微處理器指令拆分裝置,微處理器中所有已解碼指令都要送到該微處理器指令拆分裝置的需拆分指令檢測與拆分單元,需拆分指令檢測與拆分單元對檢測到需拆分的指令進行拆分,並將拆分好的指令送至已拆分指令處理單元,一拆分指令處理單元對這些指令構建隱式相關性和隱式旁路,最終生成數條可供該微處理器逐次單獨處理的原子指令。本發明的有益效果主要表現在擴大了微處理器可拆分指令類型和範圍,降低微處理器編程複雜性,有效提高代碼密度,節約硬體資源。
圖1為引入微處理器指令拆分裝置的微處理器指令流動方向。
圖2為引入微處理器指令拆分裝置後微處理器指令解碼信息。圖3為微處理器指令拆分裝置指令拆分狀態機。
具體實施例方式下面結合附圖對本發明作進一步描述。參照圖1 圖3,一種基於隱式相關性和隱式旁路的微處理器指令拆分裝置,將微處理器無法一次性單獨處理的已解碼單條複雜操作指令拆分成數條該微處理器可逐次處理的原子指令,該微處理器指令拆分裝置包括需拆分指令檢測與拆分單元,用以判斷進入該微處理器指令拆分裝置的已解碼指令是否為需拆分指令,並將需拆分指令拆分為至少兩條原子指令,是該基於隱式相關性和隱式旁路技術的微處理器指令拆分裝置的輸入端;以及已拆分指令處理單元,連接於需拆分指令拆分和檢測單元輸出端,用以接收來自該需拆分指令拆分單元將該需拆分指令拆分成的至少兩條原子指令,對這些原子指令構造隱式相關性,並引入隱式旁路技術,輸出已處理原子指令。其他處理單元,連接於需拆分指令檢測和拆分單元的輸出端和已拆分指令處理單元的輸出端,用以接收被需拆分指令檢測與處理單元判斷為無需拆分的指令和已拆分指令處理單元最終生成的原子指令,並完成指令後續處理、執行工作。參照圖1所示,無需拆分的指令經過本微處理器指令拆分裝置的流向如途中黑色箭頭所示,需拆分指令經過該裝置的流向如途中紅色箭頭所示。微處理器取址單元取到的指令經解碼後,都要通過該裝置中需拆分指令檢測與拆分單元,需拆分指令檢測與拆分單元通過讀取指令解碼信息的拆分標誌位決定該指令是否需要拆分如果無需拆分,則指令被直接送到其他處理單元,完成指令執行;如果需要拆分,需拆分指令檢測與拆分單元通過檢測指令操作碼,決定該指令需要拆分為幾條什麼類型的指令,根據這些指令拆分信息,需拆分指令檢測與拆分單元狀態機通過在空閒態和拆分態的切換完成指令拆分。拆分好的原子指令被送至已拆分指令處理單元,加入相關性信息;假設第一已拆分指令A和第二已拆分指令B是已拆分指令,第二已拆分指令B數據相關於第一已拆分指令A。則已拆分指令處理單元,在第二已拆分指令B的操作碼中,加入特定隱式相關性信息, 指示第二已拆分指令B相關於第一已拆分指令A。為了加快第一已拆分指令A、B的執行速度,同時防止第一已拆分指令A過早退休導致第二已拆分指令B無法獲取其數據,隱式旁路技術,提前將第一已拆分指令A的數據送給第二已拆分指令B,只有第二已拆分指令B獲得數據後,才允許第一已拆分指令A退休。經過這些處理後,已拆分好的原子指令被送至其他處理單元,按照一般指令進行完成指令執行。這些原子指令全部執行結束,則表示該複雜操作指令執行結束。參照圖2所示,指令解碼時,在指令的解碼信息中,加入了 split位,用以表徵該指令是否需要拆分。拆分成的指令類型和指令數目,則由指令操作碼來決定。參照圖3所示,沒有需拆分指令進入需拆分指令拆分單元時,該單元的狀態機處
5於空閒態,表徵最小的功耗開銷;當需拆分指令進入需拆分指令拆分單元時,其狀態機跳到拆分態,每個機器周期拆分出的原子指令個數由微處理器硬體資源決定。如果該微處理器為單發射,則每周期拆分出一條原子指令;如果為雙發或者多發射,則拆分出兩條或者多條原子指令。拆分結束後,狀態機返回空閒態。 在上文所述的32位微處理器引入微處理器指令拆分裝置後,再次分析其指令集與代碼密度。此時,先在指令集中增加相應複雜操作指令storea Ri,Rj,敗,用於把暫存器 Rk的數據存到以暫存器Ri和Rj數據和為地址的存儲區域。處理器執行時,該指令被拆分為「ADD RiRj」和「store Ri, Rk",ADD Ri Rj用以將Ri和Rj的值進行相加,並將結果存到 Ri中;store Ri, I k,將中的數據存儲到Ri所指示的存儲器地址。通過這種方式,用一條複雜操作指令實現了兩條原子指令的功能,增大了代碼密度;而且只需要進行一次解碼, 節約了解碼時間。不但降低了成本,同時也提高了指令執行效率。
權利要求
1.一種基於隱式相關性和隱式旁路的微處理器指令拆分裝置,其特徵在於,所述微處理器指令拆分裝置包括需拆分指令檢測與拆分單元,用以判斷進入該微處理器指令拆分裝置的已解碼指令是否為需拆分指令,並將需拆分指令拆分為至少兩條原子指令;已拆分指令處理單元,連接於需拆分指令拆分和檢測單元輸出端,用以接收來自該需拆分指令拆分單元將該需拆分指令拆分成的至少兩條原子指令,對這些原子指令構造隱式相關性,並引入隱式旁路技術,輸出已處理原子指令;其他處理單元,連接於需拆分指令檢測和拆分單元的輸出端和已拆分指令處理單元的輸出端,用以接收被需拆分指令檢測與處理單元判斷為無需拆分的指令和已拆分指令處理單元最終生成的原子指令,並完成指令後續處理、執行工作。
2.根據權利要求1所述的基於隱式相關性和隱式旁路的微處理器指令拆分裝置,其特徵在於,該已拆分指令處理單元最終生成的原子指令在該微處理器中按照標準指令進行處理。
3.根據權利要求1或2所述的基於隱式相關性和隱式旁路的微處理器指令拆分裝置, 其特徵在於,所述需拆分指令檢測與拆分單元中,由空閒與拆分兩種狀態進行維護,其中, 無需拆分指令進入該指令檢測與拆分單元時,該指令檢測與拆分單元處於空閒態,無拆分動作發生;需拆分指令進入該指令檢測與拆分裝置時,該指令檢測與拆分單元進入拆分態, 將指令拆分成若干原子指令後返回空閒態。
4.根據權利要求1或2所述的基於隱式相關性和隱式旁路的微處理器指令拆分裝置, 其特徵在於,所述已拆分指令處理單元包括構造隱式相關性模塊,用以指示和維護該需拆分指令所拆分成若干個原子指令之間相關性,該構造隱式相關性模塊與該微處理器中相關性維護模塊互相獨立;隱式旁路模塊,負責數據的旁路,用以將該需拆分指令所拆分成若干個具有數據相關性的原子指令執行結果進行旁路,該隱式旁路模塊與該微處理器中顯式旁路模塊互相獨立。
5.根據權利要求4所述的基於隱式相關性和隱式旁路的微處理器指令拆分裝置,其特徵在於,該需拆分指令拆分為至少兩條已拆分原子指令,其中具有數據相關性的兩條已拆分原子指令定義為第一已拆分指令和第二已拆分指令,第二已拆分指令數據相關於第一已拆分指令,隱式旁路模塊對第一已拆分指令在微處理器中特定模塊中的指令序號進行處理,使得第二已拆分指令旁路到第一已拆分指令數據之後,第一已拆分指令才可執行結束。
全文摘要
一種基於隱式相關性和隱式旁路的微處理器指令拆分裝置,包括需拆分指令檢測與拆分單元,用以判斷進入該微處理器指令拆分裝置的已解碼指令是否為需拆分指令,並將需拆分指令拆分為至少兩條原子指令;已拆分指令處理單元,用以接收來自該需拆分指令拆分單元將該需拆分指令拆分成的至少兩條原子指令,對這些原子指令構造隱式相關性,輸出已處理原子指令;其他處理單元,用以接收被需拆分指令檢測與處理單元判斷為無需拆分的指令和已拆分指令處理單元最終生成的原子指令,並完成指令後續處理、執行工作。本發明在拆分有前後數據相關性的複雜操作指令時有效減少佔用硬體資源、擴大其可拆分指令的範圍、提升處理器性能。
文檔編號G09F9/30GK102436781SQ201110346810
公開日2012年5月2日 申請日期2011年11月4日 優先權日2011年11月4日
發明者丁永林, 李戰輝, 楊軍 申請人:杭州中天微系統有限公司