欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

微處理器跳轉(zhuǎn)指令分支預測處理系統(tǒng)和方法

文檔序號:6598356閱讀:272來源:國知局
專利名稱:微處理器跳轉(zhuǎn)指令分支預測處理系統(tǒng)和方法
技術(shù)領(lǐng)域
本發(fā)明涉及微處理器體系結(jié)構(gòu)領(lǐng)域,特別涉及到一種微處理器跳轉(zhuǎn)指令分支預測
處理系統(tǒng)和方法。
背景技術(shù)
在現(xiàn)有的微處理器體系中,跳轉(zhuǎn)指令給微處理器的設(shè)計帶來許多挑戰(zhàn)。例如對于有流水結(jié)構(gòu)的微處理器而言,當微處理器在執(zhí)行一段有跳轉(zhuǎn)指令的程序時,若遇到跳轉(zhuǎn)指令,那么最早可能確定跳轉(zhuǎn)指令是否跳轉(zhuǎn)以及跳轉(zhuǎn)目標地址的流水級是譯碼階段,例如直接跳轉(zhuǎn)(jump)指令。 但是對大部分跳轉(zhuǎn)指令而言,一般要等到執(zhí)行階段完成后才能確定跳轉(zhuǎn)指令的跳轉(zhuǎn)方向以及跳轉(zhuǎn)目標地址。而在這個時候后續(xù)的指令可能已經(jīng)從內(nèi)存中取出,更有甚者已經(jīng)開始執(zhí)行,因此當跳轉(zhuǎn)指令最終確定跳轉(zhuǎn)時,這些已取得的指令或者已經(jīng)執(zhí)行的指令都需要被取消,微處理器需要從跳轉(zhuǎn)指令正確的目標地址重新獲取指令并執(zhí)行下去。這將大大地降低了微處理器性能。 因此在現(xiàn)有的微處理器設(shè)計中,大都采用不同的方法來處理跳轉(zhuǎn)指令,從而提高處理器性能。 其中,現(xiàn)有技術(shù)公開一種通用的處理跳轉(zhuǎn)指令的方法是分支預測方法,該方法當遇到跳轉(zhuǎn)指令時,微處理器采用特定的方式預測跳轉(zhuǎn)指令的方向(比如,對條件分支而言預測其跳轉(zhuǎn)與否),或者預測跳轉(zhuǎn)指令的目標地址(例如對間接跳轉(zhuǎn)指令以及程序返回指令而言,預測其跳轉(zhuǎn)的目標地址)。微處理器根據(jù)預測的結(jié)果來推測執(zhí)行程序,在跳轉(zhuǎn)指令的結(jié)果最終解決之前這些指令從內(nèi)存中取出然后送入流水線中執(zhí)行。如果分支預測正確,那么處理器的性能將得到提高。這是因為在跳轉(zhuǎn)指令的結(jié)果最終解決之前,這些分支跳轉(zhuǎn)指令之后的指令已經(jīng)開始執(zhí)行(不管是跳轉(zhuǎn)目標地址,還是跳轉(zhuǎn)指令的后續(xù)指令)。然而若分支預測錯誤,這些推測執(zhí)行的指令將會被取消。 但對于超標量處理器結(jié)構(gòu),如MIPS結(jié)構(gòu)的微處理器而言,取消這些指令將會增加處理器的設(shè)計復雜度。 同時,現(xiàn)有技術(shù)的這種分支預測方法對于MIPS結(jié)構(gòu)的微處理器而言,由于MIPS指令集規(guī)定所有的跳轉(zhuǎn)指令都必須有延遲槽指令,因此還需要處理延遲槽指令等,從而帶來更復雜的問題。 所謂延遲槽指令是指緊跟在跳轉(zhuǎn)指令后的那個指令。 在MIPS結(jié)構(gòu)的微處理器中,對于大部分跳轉(zhuǎn)指令而言不管跳轉(zhuǎn)指令最終是否跳轉(zhuǎn),它對應的延遲槽指令都必須執(zhí)行,但是對于跳轉(zhuǎn)執(zhí)行(branchlikely)指令而言,延遲槽指令最終是否執(zhí)行是根據(jù)跳轉(zhuǎn)執(zhí)行(branch likely)指令的跳轉(zhuǎn)方向來定。只有當這條跳轉(zhuǎn)執(zhí)行(branch likely)指令跳轉(zhuǎn)時,延遲槽的指令才會被執(zhí)行;否則,延遲槽的指令不需要執(zhí)行。因此對于MIPS指令集而言,對于不同的跳轉(zhuǎn)指令,延遲槽指令需要區(qū)分處理。
由于除了跳轉(zhuǎn)指令不可以作為延遲槽指令外,其他任意類型的指令都可做延遲槽指令,因此定位延遲槽指令以及根據(jù)延遲槽指令對應的跳轉(zhuǎn)指令來決定是否取消延遲槽指令,使得現(xiàn)有分支預測方法更加復雜,現(xiàn)有的分支預測方法不適合于超標量處理器結(jié)構(gòu)的微處理器,特別是MIPS結(jié)構(gòu)的微處理器。

發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種微處理器跳轉(zhuǎn)指令分支預測處理系統(tǒng)和方法,其使得
微處理器的分支預測方法更加簡單,從而提高微處理器的性能。 為實現(xiàn)本發(fā)明目的而提供的一種微處理器跳轉(zhuǎn)指令分支預測處理系統(tǒng),包括譯碼模塊和發(fā)射模塊。 所述譯碼模塊包括分支預測器,用于在所述譯碼模塊通過預譯碼判斷出待處理指令是跳轉(zhuǎn)指令,以及跳轉(zhuǎn)指令的類型后,根據(jù)該待處理的跳轉(zhuǎn)指令是否為跳轉(zhuǎn)執(zhí)行類型,而采用靜態(tài)預測或者動態(tài)預測方法進行預測,然后將該待處理跳轉(zhuǎn)指令及其延遲槽指令按照指令在程序中的次序直接寫入操作隊列項; 所述發(fā)射模塊包括預測結(jié)果處理器,用于在跳轉(zhuǎn)指令執(zhí)行完并寫回到所述發(fā)射模塊后,在所述分支預測器對跳轉(zhuǎn)指令的預測錯誤時,取消錯誤執(zhí)行的指令且從正確的跳轉(zhuǎn)方向繼續(xù)取指;在取消指令時,根據(jù)是否為跳轉(zhuǎn)執(zhí)行指令,采取不同的取消方法進行取消操作。 較優(yōu)地,所述根據(jù)該待處理的跳轉(zhuǎn)指令是否為跳轉(zhuǎn)執(zhí)行類型,而采用靜態(tài)預測或者動態(tài)預測方法進行預測,是指 根據(jù)待處理的跳轉(zhuǎn)指令的類型,如果是跳轉(zhuǎn)執(zhí)行指令,則對該待處理的跳轉(zhuǎn)指令采用靜態(tài)預測方法預測,并且預測其跳轉(zhuǎn);否則,如果是其他非跳轉(zhuǎn)執(zhí)行的跳轉(zhuǎn)指令,則采用動態(tài)預測方法進行預測。 較優(yōu)地,所述根據(jù)是否為跳轉(zhuǎn)執(zhí)行指令,采取不同的取消方法進行取消操作,是指 如果分支預測錯的跳轉(zhuǎn)指令是跳轉(zhuǎn)執(zhí)行指令,則該跳轉(zhuǎn)指令后的所有指令都取消執(zhí)行;如果分支預測錯的跳轉(zhuǎn)指令不是跳轉(zhuǎn)執(zhí)行指令,則該跳轉(zhuǎn)指令的延遲槽指令后的所有指令都取消執(zhí)行。 為實現(xiàn)本發(fā)明目的更提供一種微處理器跳轉(zhuǎn)指令分支預測處理方法,包括下列步驟 步驟A,在通過預譯碼判斷出待處理指令是跳轉(zhuǎn)指令,以及跳轉(zhuǎn)指令的類型后,根據(jù)該待處理的跳轉(zhuǎn)指令是否為跳轉(zhuǎn)執(zhí)行類型,而采用靜態(tài)預測或者動態(tài)預測方法進行預測,然后將該待處理跳轉(zhuǎn)指令及其延遲槽指令按照指令在程序中的次序直接寫入操作隊列項; 步驟B,在跳轉(zhuǎn)指令執(zhí)行完并寫回到發(fā)射模塊后,在對跳轉(zhuǎn)指令的預測錯誤時,取消錯誤執(zhí)行的指令且從正確的跳轉(zhuǎn)方向繼續(xù)取指;在取消指令時,根據(jù)是否為跳轉(zhuǎn)執(zhí)行指令,采取不同的取消方法進行取消操作。 較優(yōu)地,所述步驟A中,根據(jù)該待處理的跳轉(zhuǎn)指令是否為跳轉(zhuǎn)執(zhí)行類型,而采用靜態(tài)預測或者動態(tài)預測方法進行預測,包括下列步驟 步驟Al,如果是跳轉(zhuǎn)執(zhí)行指令,則對該待處理的跳轉(zhuǎn)指令采用靜態(tài)預測方法預測,并且預測其跳轉(zhuǎn); 步驟A2,如果是其他非跳轉(zhuǎn)執(zhí)行的跳轉(zhuǎn)指令,則采用動態(tài)預測方法進行預測。
更優(yōu)地,所述步驟B中,根據(jù)是否為跳轉(zhuǎn)執(zhí)行指令,采取不同的取消方法進行取消操作,包括下列步驟 步驟Bl,如果分支預測錯的跳轉(zhuǎn)指令是跳轉(zhuǎn)執(zhí)行指令,則該跳轉(zhuǎn)指令后的所有指令都取消執(zhí)行; 步驟B2,如果分支預測錯的跳轉(zhuǎn)指令不是跳轉(zhuǎn)執(zhí)行指令,則該跳轉(zhuǎn)指令的延遲槽指令后的所有指令都取消執(zhí)行。 本發(fā)明的有益效果本發(fā)明的微處理器跳轉(zhuǎn)指令分支預測處理系統(tǒng)和方法,其采取新的預測方法,使得在在跳轉(zhuǎn)指令預測錯誤后取消延遲槽指令進行新的處理,使得微處理器的分支預測方法更加簡單,在降低微處理器硬件復雜度的同時能提高微處理器的性


圖1是本發(fā)明微處理器跳轉(zhuǎn)指令分支預測處理系統(tǒng)結(jié)構(gòu)示意 圖2是本發(fā)明微處理器跳轉(zhuǎn)指令分支預測處理方法流程圖。
具體實施例方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對
本發(fā)明的一種微處理器跳轉(zhuǎn)指令分支預測處理系統(tǒng)和方法進行進一步詳細說明。應當理
解,此處所描述的具體實施例僅僅用以解釋本發(fā)明而不是對本發(fā)明的限制。 在本發(fā)明實施例中,以基于的五級流水線結(jié)構(gòu)的MIPS結(jié)構(gòu)的微處理器為例,對本
發(fā)明的微處理器跳轉(zhuǎn)指令分支預測處理系統(tǒng)和方法進行描述,但是,本領(lǐng)域技術(shù)人員可以
理解,本發(fā)明的微處理器跳轉(zhuǎn)指令分支預測處理系統(tǒng)和方法也可以適用于其它超標量處理
器結(jié)構(gòu)的微處理器中。 如圖l所示,為了進一步說明本發(fā)明,本發(fā)明實施例首先說明基于的五級流水線結(jié)構(gòu)的MIPS結(jié)構(gòu)的微處理器,和其他大部分超標量處理器結(jié)構(gòu)的微處理器一樣,本發(fā)明實施例的基于的流水線結(jié)構(gòu)的MIPS結(jié)構(gòu)的微處理器,包括以下五個部分部件,分別是
取指模塊l,用于流水線的取指,并按照指令在程序中出現(xiàn)的先后次序從內(nèi)存或指令緩存(cache)中獲取指令(instruction);
譯碼模塊2,用于指令的譯碼; 其按照指令在程序中出現(xiàn)的先后次序?qū)⒅噶钭g碼(譯碼后的指令稱為操作),并送到操作隊列中,其操作的狀態(tài)為未發(fā)射;
發(fā)射模塊3,用于指令的發(fā)射; 其從操作隊列中選擇未發(fā)射且操作數(shù)已準備好的操作發(fā)射到相應的功能單元,并
將發(fā)射出去的操作的狀態(tài)修改為已發(fā)射; 指令運算功能單元4,用于指令的運算; 其各個功能單元(包括訪存部件和多個運算部件等)執(zhí)行從操作隊列發(fā)射過來的操作,并將運算結(jié)果寫回到操作隊列相應的項,修改這個操作的狀態(tài)位已寫回;
6
寄存器文件模塊5,用于接收指令的提交; 其若操作隊列隊頭的操作已發(fā)射且運算結(jié)果已經(jīng)返回,那么提交指令,將運算結(jié)果寫回寄存器。 本發(fā)明的微處理器跳轉(zhuǎn)指令分支預測處理系統(tǒng),所述微處理器的譯碼模塊2中,包括分支預測器21,用于在譯碼模塊2通過預譯碼判斷出待處理指令是跳轉(zhuǎn)指令,以及跳轉(zhuǎn)指令的類型后,根據(jù)該待處理的跳轉(zhuǎn)指令是否為跳轉(zhuǎn)執(zhí)行(branch likely)類型,而采用靜態(tài)預測或者動態(tài)預測方法進行預測,然后將該待處理跳轉(zhuǎn)指令及其延遲槽指令按照指令在程序中的次序直接寫入操作隊列項。 本發(fā)明實施例中,微處理器的譯碼模塊2,在待處理指令進入到譯碼階段,通過預譯碼判斷,從而確定該待處理的指令是否為跳轉(zhuǎn)指令,并在確定其為跳轉(zhuǎn)指令后,判斷出該待處理的跳轉(zhuǎn)指令的類型。 譯碼模塊2在譯碼階段通過預譯碼判斷指令是否為跳轉(zhuǎn)指令并確定跳轉(zhuǎn)指令的類型,是一種現(xiàn)有技術(shù),本領(lǐng)域技術(shù)人員根據(jù)本實施例的描述,能夠?qū)崿F(xiàn)本發(fā)明的預譯碼過程,因此,在本發(fā)明實施例中不再一一詳細描述。 本發(fā)明實施例的分支預測器21,根據(jù)待處理的跳轉(zhuǎn)指令的類型,如果是跳轉(zhuǎn)執(zhí)行(branch likely)指令,則對該待處理的跳轉(zhuǎn)指令采用靜態(tài)預測方法預測,并且預測其跳轉(zhuǎn);否則,如果是其他非跳轉(zhuǎn)執(zhí)行(branch likely)的跳轉(zhuǎn)指令,則采用動態(tài)預測方法進行預測;然后將該待處理的跳轉(zhuǎn)指令及其延遲槽指令按照指令在程序中的次序直接寫入操作隊列項。 動態(tài)預測與靜態(tài)預測是處理器結(jié)構(gòu)中的基本概念,基本上來講,動態(tài)預測是根據(jù)此跳轉(zhuǎn)指令執(zhí)行方向歷史來預測此次的跳轉(zhuǎn)方向;而靜態(tài)預測則是指僅簡單預測這條指令是否跳轉(zhuǎn),且在整個程序執(zhí)行的過程中其預測的執(zhí)行方向都是一樣的。 本發(fā)明實施例的發(fā)射模塊3,用于將所有指令,包括待處理的跳轉(zhuǎn)指令及其延遲槽指令直接發(fā)射到相應的指令運算功能單元4中進行運算。 本發(fā)明實施例的發(fā)射模塊3,對任何延遲槽指令不進行特殊處理,即任何延遲槽指
令都無需特殊處理,而將所有待處理的跳轉(zhuǎn)指令及其延遲槽指令與其他指令一樣直接發(fā)射
到相應的指令運算功能單元4中進行運算,降低微處理器硬件的復雜度。 本發(fā)明實施例的發(fā)射模塊3,還包括預測結(jié)果處理器31,用于在跳轉(zhuǎn)指令執(zhí)行完
并寫回到發(fā)射模塊3后,在分支預測器21對跳轉(zhuǎn)指令的預測錯誤時,取消錯誤執(zhí)行的指令
且從正確的跳轉(zhuǎn)方向繼續(xù)取指;在取消指令時,根據(jù)是否為跳轉(zhuǎn)執(zhí)行(branch likely)指
令,采取不同的取消方法進行取消操作。 如果分支預測器21對跳轉(zhuǎn)指令的預測出現(xiàn)錯誤,則取消錯誤執(zhí)行則指令,然后從正確的執(zhí)行方向繼續(xù)取指令。預測結(jié)果處理器31根據(jù)不同的跳轉(zhuǎn)指令類型采取不同的取消方法進行取消操作。 如果分支預測錯的跳轉(zhuǎn)指令是跳轉(zhuǎn)執(zhí)行(branch likely)指令,則該跳轉(zhuǎn)指令后的所有指令都取消執(zhí)行;如果分支預測錯的跳轉(zhuǎn)指令不是跳轉(zhuǎn)執(zhí)行(branch likely)指令,則該跳轉(zhuǎn)指令的延遲槽指令后的所有指令都取消執(zhí)行。 對于跳轉(zhuǎn)執(zhí)行指令而言,其延遲槽指令只有跳轉(zhuǎn)指令跳轉(zhuǎn)的時候才會被執(zhí)行,若跳轉(zhuǎn)指令不跳轉(zhuǎn)那么不會被執(zhí)行。因為跳轉(zhuǎn)指令在之前才用靜態(tài)預測且預測其跳轉(zhuǎn),這樣在預測執(zhí)行時,所有跳轉(zhuǎn)執(zhí)行指令的延遲槽都被執(zhí)行。因此若預測正確,則說明這條跳轉(zhuǎn)指令跳轉(zhuǎn),則延遲槽指令不需要被取消執(zhí)行;而若預測錯誤,則說明這條跳轉(zhuǎn)指令事實上不會跳轉(zhuǎn),因此在預測執(zhí)行時被執(zhí)行的延遲槽執(zhí)行需要被取消。 如果分支預測器21對跳轉(zhuǎn)指令的預測沒有錯誤,跳轉(zhuǎn)指令發(fā)射到指令運算相應功能單元中進行運算,將結(jié)果寫回到發(fā)射模塊3,執(zhí)行的結(jié)果與預測結(jié)果一致,即分支預測器21預測跳轉(zhuǎn),而執(zhí)行結(jié)果顯示跳轉(zhuǎn);或者預測分支預測器21預測不跳轉(zhuǎn),而且執(zhí)行結(jié)果顯示不跳轉(zhuǎn)時,則修改這個操作的狀態(tài)位已寫回后不需要發(fā)射模塊3進行其他任何處理,直接給予提交。 本發(fā)明實施例的寄存器文件模塊5,用于在指令執(zhí)行后,直接將指令結(jié)果提交,而無需進行處理。 本發(fā)明實施例的寄存器文件模塊5,在提交階段,由于預測結(jié)果處理器31已經(jīng)對執(zhí)行結(jié)果進行處理,因此只需按照正常的提交邏輯直接提交指令執(zhí)行結(jié)果,無需進行其他特殊處理。 這樣就使得微處理器的分支預測方法更加簡單,在降低微處理器硬件復雜度的同時能提高微處理器的性能。 相應地,本發(fā)明還提供一種微處理器跳轉(zhuǎn)指令分支預測處理方法,如圖2所示,其包括如下步驟 步驟S100,從微處理器的流水線的取出待處理指令,并按照該指令在程序中出現(xiàn)的先后次序從內(nèi)存或指令緩存(cache)中獲取指令。 步驟S200,在通過預譯碼判斷出待處理指令是跳轉(zhuǎn)指令,以及跳轉(zhuǎn)指令的類型后,根據(jù)該待處理的跳轉(zhuǎn)指令是否為跳轉(zhuǎn)執(zhí)行(branch likely)類型,而采用靜態(tài)預測或者動態(tài)預測方法進行預測,然后將該待處理跳轉(zhuǎn)指令及其延遲槽指令按照指令在程序中的次序直接寫入操作隊列項。 在步驟S200中,根據(jù)該待處理的跳轉(zhuǎn)指令是否為跳轉(zhuǎn)執(zhí)行(branchlikely)類型,而采用靜態(tài)預測或者動態(tài)預測方法進行預測,包括下列步驟 步驟S210,如果是跳轉(zhuǎn)執(zhí)行(branch likely)指令,則對該待處理的跳轉(zhuǎn)指令采用靜態(tài)預測方法預測,并且預測其跳轉(zhuǎn); 步驟S220,如果是其他非跳轉(zhuǎn)執(zhí)行(branch likely)的跳轉(zhuǎn)指令,則采用動態(tài)預測方法進行預測。 步驟S300,將所有指令,包括待處理的跳轉(zhuǎn)指令及其延遲槽指令直接發(fā)射到相應的指令運算功能單元4中進行運算。 步驟S400,在跳轉(zhuǎn)指令執(zhí)行完并寫回到發(fā)射模塊3后,在對跳轉(zhuǎn)指令的預測錯誤時,取消錯誤執(zhí)行的指令且從正確的跳轉(zhuǎn)方向繼續(xù)取指;在取消指令時,根據(jù)是否為跳轉(zhuǎn)執(zhí)行(branch likely)指令,采取不同的取消方法進行取消操作。 在步驟S400中,根據(jù)是否為跳轉(zhuǎn)執(zhí)行(branch likely)指令,采取不同的取消方法進行取消操作,包括下列步驟 步驟S410,如果分支預測錯的跳轉(zhuǎn)指令是跳轉(zhuǎn)執(zhí)行(branch likely)指令,則該跳轉(zhuǎn)指令后的所有指令都取消執(zhí)行; 步驟S420,如果分支預測錯的跳轉(zhuǎn)指令不是跳轉(zhuǎn)執(zhí)行(branch likely)指令,則
8該跳轉(zhuǎn)指令的延遲槽指令后的所有指令都取消執(zhí)行。
所述步驟S400,還包括下列步驟 如果分支預測器對跳轉(zhuǎn)指令的預測沒有錯誤,跳轉(zhuǎn)指令發(fā)射到指令運算相應功能單元4中進行運算,將結(jié)果寫回,執(zhí)行的結(jié)果與預測結(jié)果一致,即預測跳轉(zhuǎn),而執(zhí)行結(jié)果顯示跳轉(zhuǎn);或者預測不跳轉(zhuǎn),而且執(zhí)行結(jié)果顯示不跳轉(zhuǎn)時,則修改這個操作的狀態(tài)位已寫回后不需要譯碼模塊2進行其他任何處理,直接給予提交。 步驟S500,在指令執(zhí)行后,直接將指令結(jié)果提交到寄存器文件模塊。 下面以兩個例子進一步詳細描述說明本發(fā)明的微處理器跳轉(zhuǎn)指令分支預測處理
系統(tǒng)和方法。 例1.設(shè)本例中,操作隊列共有8項,即同時能有8條指令同時在流水線中執(zhí)行。設(shè)操作隊列已經(jīng)有三條指令,且隊列頭指針指向第二條指令。首先譯碼模塊對取指模塊取到的指令進行譯碼;為了能加快分支預測,在譯碼的同時對這些指令做預譯碼,然后根據(jù)預譯碼的結(jié)果做分支預測。當預譯碼后,發(fā)現(xiàn)第一條指令是跳轉(zhuǎn)執(zhí)行(branch likely)指令,于是預測其跳轉(zhuǎn),并將譯碼總線的跳轉(zhuǎn)執(zhí)行標識(blikely標識)置為1 ;第二條指令是這條指令的延遲槽指令。緊接著這兩條指令被送入到操作隊列。其中第一條指令寫入操作隊列的第四項,且操作隊列的blikely標識置為1 ;發(fā)射狀態(tài)標識(issued標識)置為0 ;結(jié)果狀態(tài)標識(WB標識)置為0,而第二條指令寫入操作隊列的第五項,其blikely標識置為0 ;issued標識置為O ;WB標識置為O。下一拍,取指模塊將從這條跳轉(zhuǎn)指令的跳轉(zhuǎn)目標地址繼續(xù)取指。 在發(fā)射階段,發(fā)射模塊從操作隊列中找到未發(fā)射且操作數(shù)已準備好的指令將其發(fā)射到對應的指令運算功能單元。若操作隊列第二項和第三項已發(fā)射出去,且第四項和第五項的操作數(shù)已準備好,那么將第四項和第五項同時發(fā)射到相應的功能單元;若僅第四項的操作數(shù)已準備好,那么僅將第四項發(fā)射到對應的功能單元;若僅第五項的操作數(shù)已準備好,那么僅將第五項發(fā)射到對應的功能單元。在亂序發(fā)射邏輯中,這兩條指令的發(fā)射順序沒有任何聯(lián)系。 在寫回階段,若第四項的結(jié)果寫回,且指令的執(zhí)行結(jié)果是不跳轉(zhuǎn),那么將第四項的WB位置為l,且判斷其blikely標識是否為l,若為l,并且將第五項以后(包含第五項)的所有指令都取消執(zhí)行。取消這些指令的操作,若這些操作正在功能單元執(zhí)行,取消執(zhí)行;然后將這些指令所占用的操作隊列項釋放。最后取指模塊將從正確的路徑繼續(xù)取指令。若在寫回階段,第四項的結(jié)果寫回時指令的執(zhí)行結(jié)果是跳轉(zhuǎn),那么不做任何處理,僅將第四條指令的WB位置為1。 提交階段,按著正常的提交邏輯提交指令,無需特殊處理。 例2.設(shè)本例中,操作隊列共有8項,即同時能有8條指令同時在流水線中執(zhí)行。設(shè)操作隊列已經(jīng)有三條指令,且隊列頭指針指向第二條指令。首先譯碼模塊對取指模塊取到的指令進行譯碼;為了能加快分支預測,在譯碼的同時對這些指令做預譯碼,然后根據(jù)預譯碼的結(jié)果做分支預測。當預譯碼后,發(fā)現(xiàn)第一條指令是普通跳轉(zhuǎn)指令,根據(jù)分支預測器預測其是否跳轉(zhuǎn)。并將譯碼總線的blikely標識置為0 ;第二條指令是這條指令的延遲槽指令。緊接著這兩條指令被送入到操作隊列。其中第一條指令寫入操作隊列的第四項,且操作隊列的blikely標識置為0 ;issued標識置為0 ;WB標識置為0,而第二條指令寫入操作隊列的第五項,其blikely標識置為0 ;issued標識置為0 ;WB標識置為0。下一拍,取指模塊將 從這條跳轉(zhuǎn)指令的預測路徑繼續(xù)取指。 在發(fā)射階段,發(fā)射模塊從操作隊列中找到未發(fā)射且操作數(shù)已準備好的指令將其發(fā) 射到對應的指令運算功能單元。若操作隊列第二項和第三項已發(fā)射出去,且第四項和第五 項的操作數(shù)已準備好,那么將第四項和第五項同時發(fā)射到相應的功能單元;若僅第四項的 操作數(shù)已準備好,那么僅將第四項發(fā)射到對應的功能單元;若僅第五項的操作數(shù)已準備好, 那么僅將第五項發(fā)射到對應的功能單元。在亂序發(fā)射邏輯中,這兩條指令的發(fā)射順序沒有 任何聯(lián)系。 在寫回階段,若第四項的結(jié)果寫回,且指令的執(zhí)行結(jié)果與預測的結(jié)果不一致,即預 測跳轉(zhuǎn)但是執(zhí)行結(jié)果顯示不跳轉(zhuǎn);或者預測不跳轉(zhuǎn)但執(zhí)行結(jié)果顯示跳轉(zhuǎn),那么將第四項的 WB位置為1 ;且判斷其blikely標識是否為l,若不為l,那么將第五項以后(不包含第五 項)的所有指令都取消執(zhí)行。取消這些指令的操作包括若這些操作正在功能單元執(zhí)行,取 消執(zhí)行;然后將這些指令所占用的操作隊列項釋放。最后取指模塊將從正確的路徑繼續(xù)取 指令。若在寫回階段,第四項的結(jié)果寫回時指令的執(zhí)行結(jié)果與預測結(jié)果一致,即預測跳轉(zhuǎn)但 是執(zhí)行結(jié)果顯示跳轉(zhuǎn);或者預測不跳轉(zhuǎn)但執(zhí)行結(jié)果顯示不跳轉(zhuǎn),那么不做任何處理,僅將第 四條指令的WB位置為1。 提交階段,按著正常的提交邏輯提交指令,無需特殊處理。 本發(fā)明的微處理器跳轉(zhuǎn)指令分支預測處理系統(tǒng)和方法,采用分支預測器進行預 測,并通過預測結(jié)果處理器根據(jù)跳轉(zhuǎn)指令執(zhí)行后結(jié)果進行處理,使得在在跳轉(zhuǎn)指令預測錯 誤后取消延遲槽指令進行新的處理,使得微處理器的分支預測方法更加簡單,在降低微處 理器硬件復雜度的同時能提高微處理器的性能。 最后應當說明的是,很顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進行各種改動和變 型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要 求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型。
10
權(quán)利要求
一種微處理器跳轉(zhuǎn)指令分支預測處理系統(tǒng),包括譯碼模塊和發(fā)射模塊,其特征在于所述譯碼模塊包括分支預測器,用于在所述譯碼模塊通過預譯碼判斷出待處理指令是跳轉(zhuǎn)指令,以及跳轉(zhuǎn)指令的類型后,根據(jù)該待處理的跳轉(zhuǎn)指令是否為跳轉(zhuǎn)執(zhí)行類型,而采用靜態(tài)預測或者動態(tài)預測方法進行預測,然后將該待處理跳轉(zhuǎn)指令及其延遲槽指令按照指令在程序中的次序直接寫入操作隊列項;所述發(fā)射模塊包括預測結(jié)果處理器,用于在跳轉(zhuǎn)指令執(zhí)行完并寫回到所述發(fā)射模塊后,在所述分支預測器對跳轉(zhuǎn)指令的預測錯誤時,取消錯誤執(zhí)行的指令且從正確的跳轉(zhuǎn)方向繼續(xù)取指;在取消指令時,根據(jù)是否為跳轉(zhuǎn)執(zhí)行指令,采取不同的取消方法進行取消操作。
2. 根據(jù)權(quán)利要求1所述的分支預測處理系統(tǒng),其特征在于,所述根據(jù)該待處理的跳轉(zhuǎn)指令是否為跳轉(zhuǎn)執(zhí)行類型,而采用靜態(tài)預測或者動態(tài)預測方法進行預測,是指根據(jù)待處理的跳轉(zhuǎn)指令的類型,如果是跳轉(zhuǎn)執(zhí)行指令,則對該待處理的跳轉(zhuǎn)指令采用靜態(tài)預測方法預測,并且預測其跳轉(zhuǎn);否則,如果是其他非跳轉(zhuǎn)執(zhí)行的跳轉(zhuǎn)指令,則采用動態(tài)預測方法進行預測。
3. 根據(jù)權(quán)利要求1所述的分支預測處理系統(tǒng),其特征在于,所述根據(jù)是否為跳轉(zhuǎn)執(zhí)行指令,采取不同的取消方法進行取消操作,是指如果分支預測錯的跳轉(zhuǎn)指令是跳轉(zhuǎn)執(zhí)行指令,則該跳轉(zhuǎn)指令后的所有指令都取消執(zhí)行;如果分支預測錯的跳轉(zhuǎn)指令不是跳轉(zhuǎn)執(zhí)行指令,則該跳轉(zhuǎn)指令的延遲槽指令后的所有指令都取消執(zhí)行。
4. 根據(jù)權(quán)利要求1至3任一項所述的分支預測處理系統(tǒng),其特征在于,還包括指令運算功能單元和寄存器文件模塊;發(fā)射模塊將所有待處理的跳轉(zhuǎn)指令及其延遲槽指令直接發(fā)射到相應的指令運算功能單元中進行運算。所述寄存器文件模塊,用于在指令執(zhí)行后,直接將指令結(jié)果提交。
5. —種微處理器跳轉(zhuǎn)指令分支預測處理方法,其特征在于,包括下列步驟步驟A,在通過預譯碼判斷出待處理指令是跳轉(zhuǎn)指令,以及跳轉(zhuǎn)指令的類型后,根據(jù)該待處理的跳轉(zhuǎn)指令是否為跳轉(zhuǎn)執(zhí)行類型,而采用靜態(tài)預測或者動態(tài)預測方法進行預測,然后將該待處理跳轉(zhuǎn)指令及其延遲槽指令按照指令在程序中的次序直接寫入操作隊列項;步驟B,在跳轉(zhuǎn)指令執(zhí)行完并寫回到發(fā)射模塊后,在對跳轉(zhuǎn)指令的預測錯誤時,取消錯誤執(zhí)行的指令且從正確的跳轉(zhuǎn)方向繼續(xù)取指;在取消指令時,根據(jù)是否為跳轉(zhuǎn)執(zhí)行指令,采取不同的取消方法進行取消操作。
6. 根據(jù)權(quán)利要求5所述的分支預測處理方法,其特征在于,所述步驟A中,根據(jù)該待處理的跳轉(zhuǎn)指令是否為跳轉(zhuǎn)執(zhí)行類型,而采用靜態(tài)預測或者動態(tài)預測方法進行預測,包括下列步驟步驟Al,如果是跳轉(zhuǎn)執(zhí)行指令,則對該待處理的跳轉(zhuǎn)指令采用靜態(tài)預測方法預測,并且預測其跳轉(zhuǎn);步驟A2,如果是其他非跳轉(zhuǎn)執(zhí)行的跳轉(zhuǎn)指令,則采用動態(tài)預測方法進行預測。
7. 根據(jù)權(quán)利要求5所述的分支預測處理方法,其特征在于,所述步驟B中,根據(jù)是否為跳轉(zhuǎn)執(zhí)行指令,采取不同的取消方法進行取消操作,包括下列步驟步驟B 1,如果分支預測錯的跳轉(zhuǎn)指令是跳轉(zhuǎn)執(zhí)行指令,則該跳轉(zhuǎn)指令后的所有指令都取消執(zhí)行;步驟B2,如果分支預測錯的跳轉(zhuǎn)指令不是跳轉(zhuǎn)執(zhí)行指令,則該跳轉(zhuǎn)指令的延遲槽指令后的所有指令都取消執(zhí)行。
8. 根據(jù)權(quán)利要求7所述的分支預測處理方法,其特征在于,所述步驟B中,還包括下列步驟如果分支預測器對跳轉(zhuǎn)指令的預測沒有錯誤,跳轉(zhuǎn)指令發(fā)射到指令運算相應功能單元中進行運算,將結(jié)果寫回,執(zhí)行的結(jié)果與預測結(jié)果一致,即預測跳轉(zhuǎn),而執(zhí)行結(jié)果顯示跳轉(zhuǎn);或者預測不跳轉(zhuǎn),而且執(zhí)行結(jié)果顯示不跳轉(zhuǎn)時,則修改這個操作的狀態(tài)位已寫回后不需要譯碼模塊進行其他任何處理,直接給予提交。
9. 根據(jù)權(quán)利要求5至8任一項所述的分支預測處理方法,其特征在于,所述步驟A之前還包括下列步驟從微處理器的流水線的取出待處理指令,并按照該指令在程序中出現(xiàn)的先后次序從內(nèi)存或指令緩存中獲取指令。
10. 根據(jù)權(quán)利要求9所述的分支預測處理方法,其特征在于,所述步驟A和步驟B之間還包括下列步驟將所有待處理的跳轉(zhuǎn)指令及其延遲槽指令直接發(fā)射到相應的指令運算功能單元中進行運算。
11. 根據(jù)權(quán)利要求IO所述的分支預測處理方法,其特征在于,所述步驟B之后還包括下列步驟在指令執(zhí)行后,直接將指令結(jié)果提交到寄存器文件模塊。
全文摘要
本發(fā)明公開一種微處理器跳轉(zhuǎn)指令分支預測處理系統(tǒng)和方法。該系統(tǒng)包括譯碼模塊和發(fā)射模塊。譯碼模塊包括分支預測器,用于在所述譯碼模塊通過預譯碼判斷出待處理指令是跳轉(zhuǎn)指令,以及跳轉(zhuǎn)指令的類型后,根據(jù)該待處理的跳轉(zhuǎn)指令是否為跳轉(zhuǎn)執(zhí)行類型,而采用靜態(tài)預測或者動態(tài)預測方法進行預測,然后將該待處理跳轉(zhuǎn)指令及其延遲槽指令按照指令在程序中的次序直接寫入操作隊列項;發(fā)射模塊包括預測結(jié)果處理器,用于在跳轉(zhuǎn)指令執(zhí)行完并寫回到發(fā)射模塊后,在分支預測器對跳轉(zhuǎn)指令的預測錯誤時,取消錯誤執(zhí)行的指令且從正確的跳轉(zhuǎn)方向繼續(xù)取指;在取消指令時,根據(jù)是否為跳轉(zhuǎn)執(zhí)行指令,采取不同的取消方法進行取消操作。
文檔編號G06F9/38GK101770358SQ20101011140
公開日2010年7月7日 申請日期2010年2月10日 優(yōu)先權(quán)日2010年2月10日
發(fā)明者徐翠萍, 李祖松, 汪文祥, 郝守青 申請人:北京龍芯中科技術(shù)服務中心有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
昌邑市| 台南市| 大同市| 济源市| 唐河县| 明水县| 开江县| 柘荣县| 新民市| 永川市| 炎陵县| 阆中市| 多伦县| 交城县| 共和县| 水富县| 景洪市| 吴忠市| 木兰县| 阳春市| 郯城县| 临猗县| 观塘区| 大悟县| 乃东县| 佛冈县| 阿克| 贡觉县| 栖霞市| 额济纳旗| 始兴县| 沙洋县| 新绛县| 赣州市| 同心县| 商洛市| 新龙县| 潮州市| 崇左市| 武宁县| 内黄县|