專利名稱:嵌入式處理器的亂序執(zhí)行控制裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及嵌入式處理器設(shè)計,尤其是嵌入式處理器中的亂序執(zhí) 行控制裝置。
背景技術(shù):
嵌入式系統(tǒng)已經(jīng)滲入到日常生活的各個方面。在手機、便攜式多 媒體播放器、數(shù)碼相機、機頂盒里都有嵌入式系統(tǒng)的身影。嵌入式領(lǐng) 域的不斷擴大和應(yīng)用的不斷復雜,對嵌入式處理器的性能提出了更高 的要求。
流水線技術(shù)是現(xiàn)代嵌入式處理器普遍采用的一種技術(shù)。流水線技 術(shù)是一種將每條指令的執(zhí)行分解為多步,并讓各步操作并行執(zhí)行,從 而實現(xiàn)多條指令并行處理的技術(shù)。流水線技術(shù)可在一定程度上提高了 嵌入式處理器的性能,但是由于程序是一個順序指令流,流水線只能 按照程序順序執(zhí)行。如果位于程序前列的指令由于執(zhí)行條件不滿足而 停頓時,其后續(xù)指令將在流水線中被堵塞而不能被及時處理,導致處
理器性能的下降。
超標量技術(shù)是高端嵌入式處理器采用的技術(shù)。超標量技術(shù)通過提 高指令發(fā)射的并行性,提升處理器的性能。所謂超標量技術(shù),就是處 理器可以在一個時鐘周期內(nèi)發(fā)射多條指令,同時在處理器內(nèi)部實現(xiàn)多 條流水線,達到一個周期并行執(zhí)行多條指令的目的。超標量技術(shù)在顯 著提升處理器性能的同時,伴隨著邏輯設(shè)計復雜度和硬件資源的增加。
發(fā)明內(nèi)容
為了克服已有的嵌入式處理器不能兼顧性能和功耗、成本高的不 足,本發(fā)明提供一種在低功耗的前提下提高性能、成本低的應(yīng)用于嵌 入式處理器的亂序執(zhí)行控制裝置。
本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是 一種嵌入式處理器的亂序執(zhí)行控制裝置,所述的亂序執(zhí)行控制裝置 包括發(fā)射單元,用于將譯碼后的指令存放到流水線寄存器,單時鐘 周期發(fā)射指令,如參與運算的操作數(shù)準備完畢,在下一時鐘周期將其 送入執(zhí)行單元開始執(zhí)行;如參與運算的操作數(shù)未準備完畢,將操作數(shù) 未就緒的指令暫時保存至保留站寄存器中并釋放發(fā)射窗口,下一個時 鐘周期,后續(xù)指令通過發(fā)射窗口進行正常發(fā)射;
保留站寄存器單元,用于與各個執(zhí)行單元一一對應(yīng),當發(fā)射的指令 因為寫讀數(shù)據(jù)相關(guān)沖突而產(chǎn)生停頓時,臨時保存產(chǎn)生停頓的指令,并
進行操作數(shù)旁路監(jiān)聽;
執(zhí)行控制單元,用于實時監(jiān)測各執(zhí)行單元的工作情況,并根據(jù)各執(zhí) 行單元返回的信息將保留站寄存器中的指令或者當前發(fā)射的指令動態(tài) 分配至空閑的執(zhí)行單元中。
作為優(yōu)選的一種方案所述的亂序執(zhí)行控制裝置還包括動態(tài)分 配標簽單元,用于標識指令發(fā)射順序,在指令發(fā)射階段,對順序發(fā)射
的各類指令動態(tài)分配標簽;操作數(shù)旁路監(jiān)聽邏輯識別目標指令的標簽, 動態(tài)旁路所需的操作數(shù);指令運算結(jié)果根據(jù)指令標簽實現(xiàn)保存。
作為優(yōu)選的另一種方案所述亂序執(zhí)行控制裝置還包括重排序 緩沖器,用于對亂序執(zhí)行結(jié)果的臨時保存,并按指令順序,退休已完成執(zhí)行的指令,將運算結(jié)果按序回寫到通用寄存器。
進一步,所述保留站寄存器單元中,保留站的深度根據(jù)嵌入式應(yīng) 用程序執(zhí)行過程中各執(zhí)行單元的執(zhí)行負荷進行調(diào)整。
再進一步,在所述發(fā)射單元中,將多條指令存放到流水線寄存器, 單時鐘周期發(fā)射多條指令。
本發(fā)明的技術(shù)構(gòu)思為現(xiàn)有的嵌入式處理器普遍采用的是順序執(zhí) 行的機制,處理器按照程序的指令流順序處理。如果位于程序前列的 指令由于執(zhí)行條件不滿足而停頓時,其后續(xù)指令將在流水線中被堵塞 而不能被及時處理。為了克服順序指令流在流水線中停頓造成的性能 影響,亂序執(zhí)行機制被應(yīng)用到嵌入式處理器設(shè)計當中。亂序執(zhí)行機制 允許指令不按程序規(guī)定順序,進入執(zhí)行單元執(zhí)行。當位于程序前列的 指令由于執(zhí)行條件不滿足而產(chǎn)生停頓時,不會鎖住流水線,后續(xù)指令 仍然可以使用流水線資源發(fā)射到各執(zhí)行單元,提前開始執(zhí)行。亂序執(zhí) 行技術(shù)打亂指令執(zhí)行順序,讓具備執(zhí)行條件的后續(xù)指令提前被處理, 實現(xiàn)處理器內(nèi)部功能單元滿負荷運轉(zhuǎn),充分挖掘指令級并行性,從而 提高處理器的處理能力。
應(yīng)用于嵌入式處理器的亂序執(zhí)行控制裝置,是實現(xiàn)處理器亂序處 理指令的控制裝置。在亂序執(zhí)行控制裝置的管理下,若當前指令發(fā)生 停頓時,發(fā)射窗口仍可非阻塞發(fā)射,后續(xù)指令先于停頓指令被提前執(zhí) 行。亂序執(zhí)行控制裝置對嵌入式處理器,尤其是超標量嵌入式處理器 的性能提升顯著。
本發(fā)明的有益效果主要表現(xiàn)在1、在低功耗的前提下提高性能 2、降低了成本;3、對處理器性能提升顯著。通過對嵌入式處理器指令亂序執(zhí)行的支持,充分挖掘了指令級的潛在并行性,實現(xiàn)了處理器
性能的顯著提升;4、實現(xiàn)簡單。通過保留站技術(shù)暫時保存產(chǎn)生停頓的
指令,實現(xiàn)操作數(shù)的旁路監(jiān)聽;通過采用指令標記技術(shù),既簡化了操
作數(shù)旁路邏輯,又簡化了指令退休邏輯;通過重排序緩沖器實現(xiàn)了按
序退休;5、靈活性好。各執(zhí)行單元的保留站的深度可以根據(jù)執(zhí)行單元
的執(zhí)行負荷進行調(diào)整,己達到最佳的緩沖效果。
圖1是嵌入式處理器(以超標量嵌入式處理器為例)亂序執(zhí)行控 制裝置的總體架構(gòu)圖2是指令亂序執(zhí)行的示意圖3是指令亂序執(zhí)行的示意圖
圖4是保留站結(jié)構(gòu)及其操作數(shù)旁路邏輯的示意圖5是重排序緩沖器按序創(chuàng)建邏輯的示意圖6是指令執(zhí)行結(jié)果保存邏輯的示意圖7是重排序緩沖器中指令狀態(tài)更新的示意圖。
具體實施例方式
下面結(jié)合附圖對本發(fā)明作進一步描述。
參照圖1 圖7,一種嵌入式處理器的亂序執(zhí)行控制裝置包括發(fā)射 單元,用于將譯碼后的指令存放到流水線寄存器,單時鐘周期發(fā)射指 令,如參與運算的操作數(shù)準備完畢,在下一時鐘周期將其送入執(zhí)行單 元開始執(zhí)行;如參與運算的操作數(shù)未準備完畢,將操作數(shù)未就緒的指 令暫時保存至保留站寄存器中并釋放發(fā)射窗口,下一個時鐘周期,后 續(xù)指令通過發(fā)射窗口進行正常發(fā)射;執(zhí)行單元一一對應(yīng),當發(fā)射的指 令因為寫讀數(shù)據(jù)相關(guān)沖突而產(chǎn)生停頓時,臨時保存產(chǎn)生停頓的指令, 并進行操作數(shù)旁路監(jiān)聽;
執(zhí)行控制單元,用于實時監(jiān)測各執(zhí)行單元的工作情況,并根據(jù)各
執(zhí)行單元返回的信息將保留站寄存器中的指令或者當前發(fā)射的指令動
態(tài)分配至空閑的執(zhí)行單元中。
本實施例的亂序執(zhí)行控制裝置的總體架構(gòu)和工作原理如圖1所
示。本發(fā)明提出的嵌入式處理器中的亂序執(zhí)行控制裝置,其特征包括
如下
1) 應(yīng)用于嵌入式處理器的亂序執(zhí)行控制裝置,支持指令的動態(tài)執(zhí)
行;
2) 亂序執(zhí)行控制裝置采用非阻塞發(fā)射策略;
3) 采用分布式保留站技術(shù),為各執(zhí)行單元分配獨立的保留站,臨 時保存產(chǎn)生停頓的指令;
4) 保留站內(nèi)的指令時刻進行操作數(shù)旁路監(jiān)聽,在操作數(shù)準備完成 之前,后續(xù)指令仍可傳送至各執(zhí)行單元,先于保留站內(nèi)的指令執(zhí)行;
5) 保留站深度可根據(jù)對應(yīng)執(zhí)行單元的運算負荷進行相應(yīng)調(diào)整;
6) 采用動態(tài)分配標簽策略,用以標識指令發(fā)射順序,實現(xiàn)亂序執(zhí) 行過程中,運算結(jié)果的準確保存;
7) 采用重排序緩沖器實現(xiàn)對亂序執(zhí)行結(jié)果的臨時保存,并按指令 順序,退休已完成執(zhí)行的指令。
所述的應(yīng)用于嵌入式處理器的亂序執(zhí)行控制裝置,支持指令的動 態(tài)執(zhí)行。亂序執(zhí)行控制裝置的指令發(fā)射單元遵照程序的指令流順序依 次將指令發(fā)射。執(zhí)行控制單元則不考慮指令的程序順序,只根據(jù)已發(fā)
8射指令是否將操作數(shù)準備完畢和相應(yīng)執(zhí)行單元是否空閑,將滿足執(zhí)行 條件的指令直接傳送至執(zhí)行單元處理。
所述的亂序執(zhí)行控制裝置采用非阻塞發(fā)射策略。在本專利中,當 一條指令因為出現(xiàn)數(shù)據(jù)相關(guān)性沖突或者相應(yīng)執(zhí)行單元為忙而導致不能 傳送至執(zhí)行單元處理時,則稱該指令是停頓的。若當前發(fā)射單元中的 指令出現(xiàn)停頓,當前指令會暫時保存,并釋放發(fā)射單元,后續(xù)指令仍 可以占用發(fā)射單元,實現(xiàn)流水線非阻塞發(fā)射。若后續(xù)指令滿足執(zhí)行條 件,執(zhí)行控制單元則會將其先于前序停頓指令,提前傳送至各執(zhí)行單 元處理。圖2是非阻塞發(fā)射實現(xiàn)亂序執(zhí)行的示意圖。
所述的采用分布式保留站技術(shù),為各執(zhí)行單元分配獨立的保留站, 臨時保存產(chǎn)生停頓的指令。為了實現(xiàn)非阻塞發(fā)射,亂序執(zhí)行控制裝置 采用分布式保留站技術(shù),為各執(zhí)行單元分配獨立的保留站,用以臨時 保存分配到該執(zhí)行單元的產(chǎn)生停頓的發(fā)射指令。停頓指令的詳細信息, 包括指令的譯碼信息、指令的操作數(shù)、操作數(shù)的數(shù)據(jù)相關(guān)性信息,都 會被保存在保留站中。保留站的具體結(jié)構(gòu)如圖4所示。保留站的另外 一個重要功能是消除由于亂序執(zhí)行帶來的讀寫數(shù)據(jù)相關(guān)沖突。本發(fā)明 采用寄存器重命名機制,將產(chǎn)生停頓的指令的可讀取操作數(shù)提前讀取, 并保存至保留站,而不是等該指令傳送至執(zhí)行單元處理時再去通用寄 存器讀取操作數(shù),從而避免了亂序執(zhí)行帶來了的讀寫數(shù)據(jù)相關(guān)沖突。
所述的保留站內(nèi)的指令時刻進行操作數(shù)旁路監(jiān)聽,在操作數(shù)準備 完成之前,后續(xù)指令仍可成功傳送至各執(zhí)行單元,先于保留站內(nèi)的指 令執(zhí)行。當發(fā)射的指令因為寫讀數(shù)據(jù)相關(guān)沖突而產(chǎn)生停頓時,會被臨 時保存至保留站。指令一進入保留站后,保留站的操作數(shù)旁路監(jiān)聽邏 輯立刻開始工作,時刻監(jiān)聽公共數(shù)據(jù)總線。 一旦公共數(shù)據(jù)總線出現(xiàn)目標數(shù)據(jù),直接從公共數(shù)據(jù)總線旁路目標數(shù)據(jù)。當執(zhí)行控制單元監(jiān)測到 保留站中的指令操作數(shù)準備完畢并具備執(zhí)行條件時,會將其傳送至執(zhí) 行單元處理,同時保留站資源被釋放。但是在保留站中的指令操作數(shù) 準備完成之前,如果后續(xù)發(fā)射單元中的指令己經(jīng)將操作數(shù)準備完畢并 具備執(zhí)行條件時,執(zhí)行控制單元則會將發(fā)射指令傳送至執(zhí)行單元處理。 這種機制實現(xiàn)了被分配在同一個執(zhí)行單元處理的指令的亂序執(zhí)行。具 體過程如圖3所示。
所述的保留站深度可根據(jù)對應(yīng)執(zhí)行單元的運算負荷進行相應(yīng)調(diào) 整。各執(zhí)行單元都分配一個獨立的保留站。保留站的存儲深度直接影 響了該執(zhí)行單元緩沖停頓指令的能力。由于嵌入式應(yīng)用程序中不同類 型指令出現(xiàn)頻度不同,各執(zhí)行單元的執(zhí)行負荷相差明顯。有的執(zhí)行單 元運算負荷嚴重,如ALU單元、數(shù)據(jù)負載/存儲單元等,指令會被頻 繁傳送至這些單元執(zhí)行。嚴重的運算負荷極易造成這些單元保留站的 頻繁溢出,進而阻塞指令發(fā)射,嚴重影響流水線亂序執(zhí)行的能力。本 發(fā)明中的保留站的存儲區(qū)深度可根據(jù)嵌入式應(yīng)用程序執(zhí)行過程中各執(zhí) 行單元的執(zhí)行負荷進行調(diào)整,以達到最佳的指令緩沖以及非阻塞發(fā)射 的功能。
所述的采用動態(tài)分配標簽策略,用以標識指令發(fā)射順序,實現(xiàn)亂 序執(zhí)行過程中,運算結(jié)果的準確保存。指令按照程序中指令流的順序 并行發(fā)射。在指令發(fā)射階段,對順序發(fā)射的各條指令動態(tài)分配標簽。 標簽既指示了指令在程序流上的先后順序,又唯一標識了流水線中亂 序執(zhí)行的各條指令的身份。為了消除數(shù)據(jù)相關(guān)性沖突以及簡化操作數(shù) 旁路邏輯,在發(fā)射階段,對指令操作數(shù)數(shù)據(jù)相關(guān)性沖突進行檢查,并 獲取操作數(shù)數(shù)據(jù)相關(guān)性沖突的詳細信息。當指令因為數(shù)據(jù)相關(guān)性沖突出現(xiàn)停頓時,如3)所述,這些信息會跟隨指令被保存至保留站。流 水線中亂序執(zhí)行的各條指令產(chǎn)生結(jié)果后,通過公共數(shù)據(jù)總線向各個操 作數(shù)旁路邏輯廣播。公共數(shù)據(jù)總線上傳輸?shù)慕Y(jié)果伴隨指令標簽。當保 留站的操作數(shù)旁路邏輯監(jiān)聽到公共數(shù)據(jù)總線出現(xiàn)對應(yīng)指令標簽的數(shù)據(jù) 時,旁路邏輯將其保存,操作數(shù)旁路監(jiān)聽結(jié)束。操作數(shù)旁路邏輯如圖 4所示。公共數(shù)據(jù)總線同時向重排序緩沖器傳輸指令執(zhí)行結(jié)果,執(zhí)行 結(jié)果標簽被保存至重排序緩沖器中。
所述的采用重排序緩沖器實現(xiàn)對亂序執(zhí)行結(jié)果的臨時保存,并按 指令順序,退休己完成執(zhí)行的指令。為了實現(xiàn)精確異常處理機制,采 用重排序緩沖器臨時保存亂序執(zhí)行結(jié)果,并按照原始指令流順序重新 排列亂序執(zhí)行的各條指令,實現(xiàn)指令按序退休。在指令發(fā)射時,重排 序緩沖器創(chuàng)建邏輯在緩沖器中創(chuàng)建相應(yīng)條目已保存指令的相應(yīng)信息, 如指令的目的寄存器等信息。重排序緩沖器是一個循環(huán)緩沖器,創(chuàng)建 邏輯利用指令標簽作為索引在重排序緩沖器創(chuàng)建條目,其創(chuàng)建過程如 圖5所示。由于指令是按序發(fā)射的,重排序緩沖器也按序創(chuàng)建。在流 水線中亂序執(zhí)行的指令產(chǎn)生結(jié)果時,并不直接回寫通用寄存器,而是 通過公共數(shù)據(jù)總線將運算結(jié)果傳輸至重排序緩沖器臨時保存。利用運 算結(jié)果對應(yīng)的動態(tài)標簽作為索引將其保存到相應(yīng)的條目中。具體的結(jié) 果保存邏輯如圖6所示。退休時,重排序緩沖器按照指令標簽的順序, 依次檢查指令是否完成執(zhí)行,若指令已經(jīng)執(zhí)行完成,則將執(zhí)行結(jié)果回-
寫至通用寄存器,同時釋放相應(yīng)的緩沖器條目;若指令重排序緩沖器
中時間上最老的指令尚未完成執(zhí)行,當前退休停止,后續(xù)指令即使完
成執(zhí)行,也僅能在重排序緩沖器中等待退休。圖7是指令亂序執(zhí)行及 其在重排序緩沖器中狀態(tài)變換的示意圖。
權(quán)利要求
1、一種嵌入式處理器的亂序執(zhí)行控制裝置,其特征在于所述的亂序執(zhí)行控制裝置包括發(fā)射單元,用于將譯碼后的指令存放到流水線寄存器,單時鐘周期發(fā)射指令,如參與運算的操作數(shù)準備完畢,在下一時鐘周期將其送入執(zhí)行單元開始執(zhí)行;如參與運算的操作數(shù)未準備完畢,將操作數(shù)未就緒的指令暫時保存至保留站寄存器中并釋放發(fā)射窗口,下一個時鐘周期,后續(xù)指令通過發(fā)射窗口進行正常發(fā)射;保留站寄存器單元,用于與各個執(zhí)行單元一一對應(yīng),當發(fā)射的指令因為寫讀數(shù)據(jù)相關(guān)沖突而產(chǎn)生停頓時,臨時保存產(chǎn)生停頓的指令,并進行操作數(shù)旁路監(jiān)聽;執(zhí)行控制單元,用于實時監(jiān)測各執(zhí)行單元的工作情況,并根據(jù)各執(zhí)行單元返回的信息將保留站寄存器中的指令或者當前發(fā)射的指令動態(tài)分配至空閑的執(zhí)行單元中。
2、 如權(quán)利要求1所述的嵌入式處理器的亂序執(zhí)行控制裝置,其特征在于所述的亂序執(zhí)行控制裝置還包括動態(tài)分配標簽單元,用于標識指令發(fā)射順序,在指令發(fā)射階段,對順序發(fā)射的各類指令動態(tài)分配標簽;操作數(shù)旁路監(jiān)聽邏輯識別目標指令的標簽,動態(tài)旁路所需的操作數(shù);指令運算結(jié)果根據(jù)指令標簽實現(xiàn)保存。
3、 如權(quán)利要求1或2所述的嵌入式處理器的亂序執(zhí)行控制裝置,其特征在于所述的亂序執(zhí)行控制裝置還包括重排序緩沖器,用于對亂序執(zhí)行結(jié)果的臨時保存,并按指令順序,退休已完成執(zhí)行的指令,將運算結(jié)果按序回寫到通用寄存器。
4、 如權(quán)利要求1或2所述的嵌入式處理器的亂序執(zhí)行控制裝置,其特征在于所述保留站寄存器單元中,保留站的深度根據(jù)嵌入式應(yīng)用程序執(zhí)行過程中各執(zhí)行單元的執(zhí)行負荷進行調(diào)整。
5、 如權(quán)利要求3所述的嵌入式處理器的亂序執(zhí)行控制裝置,其特征在于所述保留站寄存器單元中,保留站的深度根據(jù)嵌入式應(yīng)用程序執(zhí)行過程中各執(zhí)行單元的執(zhí)行負荷進行調(diào)整。
6、 如權(quán)利要求1或2所述的嵌入式處理器的亂序執(zhí)行控制裝置,其特征在于在所述發(fā)射單元中,將多條指令存放到流水線寄存器,單時鐘周期發(fā)射多條指令。
7、 如權(quán)利要求3所述的嵌入式處理器的亂序執(zhí)行控制裝置,其特征在于在所述發(fā)射單元中,將多條指令存放到流水線寄存器,單時鐘周期發(fā)射多條指令。
8、 如權(quán)利要求4所述的嵌入式處理器的亂序執(zhí)行控制裝置,其特征在于在所述發(fā)射單元中,將多條指令存放到流水線寄存器,單時鐘周期發(fā)射多條指令。
全文摘要
一種嵌入式處理器的亂序執(zhí)行控制裝置,包括發(fā)射單元,用于將譯碼后的指令存放到流水線寄存器,單時鐘周期發(fā)射指令;保留站寄存器單元,用于當發(fā)射的指令因為寫讀數(shù)據(jù)相關(guān)沖突而產(chǎn)生停頓時,臨時保存產(chǎn)生停頓的指令,并進行操作數(shù)旁路監(jiān)聽;執(zhí)行控制單元,用于實時監(jiān)測各執(zhí)行單元的工作情況,并根據(jù)各執(zhí)行單元返回的信息將保留站寄存器中的指令或者當前發(fā)射的指令動態(tài)分配至空閑的執(zhí)行單元中。本發(fā)明設(shè)計簡單,易于實現(xiàn),對嵌入式處理器的性能提升顯著。
文檔編號G06F9/38GK101477454SQ20091009558
公開日2009年7月8日 申請日期2009年1月22日 優(yōu)先權(quán)日2009年1月22日
發(fā)明者嚴曉浪, 孟建熠, 葛海通, 陳志堅 申請人:浙江大學