專利名稱:基于單/雙發(fā)射指令集的微處理器指令處理方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及微處理器的指令處理方法及系統(tǒng),特別涉及基于混合單發(fā)射/雙發(fā)射指令集的微處理器指令處理方法及系統(tǒng)。
背景技術(shù):
在微處理器的基本架構(gòu)中,在一個指令周期內(nèi)執(zhí)行的指令處理過程主要包括指令尋址、指令讀取、指令譯碼、讀操作數(shù)、運(yùn)算、結(jié)果寫回等步驟。傳統(tǒng)的基于單發(fā)射指令的微處理器在處理一條指令的過程中僅執(zhí)行一次運(yùn)算。雖然實際上很多運(yùn)算可以并行處理,但是由于運(yùn)算單元ALU在一個周期內(nèi)僅執(zhí)行一次運(yùn)算的限制而無法實現(xiàn),因此ALU成為了傳統(tǒng)微處理器效率的瓶頸,使得這種傳統(tǒng)的基于單發(fā)射指令的微處理器的工作效率較低。為了提高微處理器的工作效率,目前已經(jīng)提出了雙發(fā)射指令技術(shù)。雙發(fā)射的概念是,每一條指令能夠讀取四個操作數(shù),進(jìn)行兩個不同(也可能是相同)的運(yùn)算,目前的高端處理器一般都支持雙發(fā)射指令,甚至多發(fā)射指,使得微處理器工作效率大大提高?,F(xiàn)有的基于雙發(fā)射指令的微處理器的指令處理方式主要有以下幾種:第一種方式是每條指令仍只包含一個運(yùn)算,在指令處理的過程中,指令處理系統(tǒng)同時讀取兩條指令,通過硬件根據(jù)兩條指令之間的依賴關(guān)系臨時計算這兩條指令是否可以同時進(jìn)行,如果計算的結(jié)果為可以同時進(jìn)行,則將兩條指令分別寫入兩條流水線。由于兩條指令在兩個流水線中分別執(zhí)行的過程中可能出現(xiàn)先后次序顛倒,因此在兩條流水線分別完成運(yùn)算之后,要對兩個運(yùn)算結(jié)果進(jìn)行重新排序,再進(jìn)行結(jié)果的寫回。這種處理方式的問題在于實現(xiàn)起來比較復(fù)雜,在指令依賴關(guān)系的計算以及結(jié)果重新排序等環(huán)節(jié),都會引入相當(dāng)龐大的邏輯復(fù)雜度和硬件開銷。第二種方式是在一條指令中實現(xiàn)單發(fā)射或雙發(fā)射,也就是說,在指令集中包含單發(fā)射指令和雙發(fā)射指令兩種指令,通過額外的狀態(tài)變量來區(qū)分這兩種指令,也就是說,在微處理器的應(yīng)用中通過程序來修改這個狀態(tài)變量來指示微處理器當(dāng)前的指令是單發(fā)射指令還是雙發(fā)射指令。在現(xiàn)有技術(shù)中,ARM系列微處理器是基于這種方式工作的典型微處理器,其雙發(fā)射指令也支持微處理器的全部功能,目的是為了節(jié)省指令空間。這種方式使得微處理器的硬件結(jié)構(gòu)相對簡單,但軟件編程十分復(fù)雜。由于單發(fā)射/雙發(fā)射指令之間并非動態(tài)切換,而是需要通過修改微處理器的狀態(tài)從而用兩套不同的邏輯來處理單發(fā)射和雙發(fā)射指令,因此需要顯式的告訴微處理器下一條指令是單發(fā)射指令還是雙發(fā)射指令,這使得微處理器的編程復(fù)雜度大大增加。而且因為單發(fā)射指令和雙發(fā)射指令都是全集,即分別實現(xiàn)微處理器的全部功能,導(dǎo)致兩條流水線都要實現(xiàn)全部指令,也就是說所有的操作都要重復(fù)兩遍。并且,由于指令數(shù)量巨大,導(dǎo)致指令編碼(操作碼)字段很長,壓縮了地址字段、立即數(shù)字段等其他字段的空間,這就限制了微處理器在其他方面的性能。例如典型的ARM微處理器由于指令字段占用較大空間,導(dǎo)致寄存器字段減小,使得寄存器深度只能支持16位。由此可見,在性能和成本/功耗之間難以兼得,是傳統(tǒng)微處理器的關(guān)鍵局限性。尤其是在圖形處理或多媒體處理等特定應(yīng)用場合,需要一種高性能、低成本、低功耗、低應(yīng)用 復(fù)雜度的新型的微處理器的指令處理系統(tǒng)和方法。
發(fā)明內(nèi)容
本發(fā)明提出了一種基于混合單發(fā)射/雙發(fā)射指令集的微處理器指令處理系統(tǒng),解決了現(xiàn)有技術(shù)中存在的問題,通過非對稱式單發(fā)射/雙發(fā)射指令集設(shè)置減小了指令字段空間,通過靜態(tài)切換簡化了單發(fā)射/雙發(fā)射指令切換機(jī)制,大大降低了硬件成本以及編程復(fù)雜度。利用本發(fā)明的微處理器指令處理方法和裝置設(shè)計的微處理器,具有低成本,低功耗,高處理效率的優(yōu)點(diǎn),在40nm工藝下,以小于0.03mm2的芯片面積,可實現(xiàn)超過IGhz的工作頻率以及約1.5Mips/Mhz的指令執(zhí)行速度。根據(jù)本發(fā)明的一方面,提出了一種微處理器指令處理方法,包括:指令讀取步驟,根據(jù)指令的地址,從存儲器中讀取一條指令,其中所述指令中包含指示所述指令為單發(fā)射指令或雙發(fā)射指令的標(biāo)識位;指令譯碼步驟,對所讀取的指令進(jìn)行譯碼,獲得包括所述標(biāo)識位、操作碼、操作數(shù)的譯碼結(jié)果,根據(jù)所述標(biāo)識位,確定所述指令為單發(fā)射指令或雙發(fā)射指令;運(yùn)算步驟:如果確定該指令為單發(fā)射指令,則在第一流水線中完成該單發(fā)射指令的操作,如果確定該指令為雙發(fā)射指令,則在第一流水線中完成該雙發(fā)射指令中的第一操作,在第二流水線中完成該雙發(fā)射指令的第二操作,第一流水線和第二流水線以相同的方式并行運(yùn)行;寫回步驟:將所述第一流水線的運(yùn)算結(jié)果和所述第二流水線的運(yùn)算結(jié)果寫回到寄存器。優(yōu)選地,由所述單發(fā)射指令構(gòu)成的單發(fā)射指令集和由所述雙發(fā)射指令構(gòu)成的雙發(fā)射指令集分別實現(xiàn)微處理器的部分功能。優(yōu)選地,將頻繁使用的常規(guī)指令設(shè)置為既由單發(fā)射指令集實現(xiàn),又由雙發(fā)射指令集實現(xiàn);將非頻繁使用的非常規(guī)指令設(shè)置為僅由單發(fā)射指令集實現(xiàn),或僅由雙發(fā)射指令集實現(xiàn)。優(yōu)選地,所述第一流水線和第二流水線可分別包括讀取第一操作數(shù)的第一級、讀取第二操作數(shù)的第二級、以及對第一操作數(shù)和第二操作數(shù)進(jìn)行運(yùn)算的第三級。優(yōu)選地,如果第一流水線的運(yùn)算結(jié)果的地址和第二流水線的運(yùn)算結(jié)果的地址發(fā)生沖突,則將兩個運(yùn)算結(jié)果進(jìn)行“或”運(yùn)算。根據(jù)本發(fā)明的另一方面,提出了一種微處理器指令處理系統(tǒng),包括:寄存器,存儲包括指令,操作數(shù),運(yùn)算結(jié)果的數(shù)據(jù);指令讀取裝置,根據(jù)指令的地址,從存儲器中讀取一條指令,其中所述指令中包含指示所述指令為單發(fā)射指令或雙發(fā)射指令的標(biāo)識位;指令譯碼裝置,對所讀取的指令進(jìn)行譯碼,獲得包括所述標(biāo)識位、操作碼、操作數(shù)的譯碼結(jié)果,根據(jù)所述標(biāo)識位,確定所述指令為單發(fā)射指令或雙發(fā)射指令;指令流水線裝置,包括第一流水線裝置和第二流水線裝置,其中如果確定該指令為單發(fā)射指令,則在該第一流水線裝置中完成該單發(fā)射指令的操作,如果確定該指令為雙發(fā)射指令,則在第一流水線中完成該雙發(fā)射指令中的第一操作,在第二流水線中完成該雙發(fā)射指令的第二操作,第一流水線裝置和第二流水線裝置以完全相同的方式并行運(yùn)行;寫回裝置,將所述第一流水線的運(yùn)算結(jié)果和所述第二流水線的運(yùn)算結(jié)果寫回到寄存器。優(yōu)選地,所述指令讀取裝置由程序計數(shù)器、地址寄存器和指令寄存器來實現(xiàn)。優(yōu)選地,所述第一流水線裝置包括由第一暫存器構(gòu)成的第一級,由第二暫存器構(gòu)成的第二級和由第一運(yùn)算器構(gòu)成的第三級;所述第二流水線包括由第三暫存器構(gòu)成的第一級,由第四暫存器構(gòu)成的第二級和由第二運(yùn)算器構(gòu)成的第三級。優(yōu)選地,如果確定所述指令為單發(fā)射指令,則在所述第一暫存器中讀取指令的第一操作數(shù),在所述第二暫存器中讀取指令的第二操作數(shù),在所述第一運(yùn)算器中對第一操作數(shù)和第二操作數(shù)進(jìn)行運(yùn)算;如果確定所述指令為雙發(fā)射指令,則在所述第一暫存器中讀取指令的第一操作的第一操作數(shù),在所述第二暫存器中讀取指令的第一操作的第二操作數(shù),在第一運(yùn)算器中對第一操作的第一操作數(shù)和第一操作的第二操作數(shù)進(jìn)行運(yùn)算;在所述第三暫存器中讀取指令的第二操作的第一操作數(shù),在所述第四暫存器中讀取指令的第二操作的第二操作數(shù),在第二運(yùn)算器中對第二操作的第一操作數(shù)和第二操作的第二操作數(shù)進(jìn)行運(yùn)笪優(yōu)選地,所述寫回裝置包括連接于第一運(yùn)算器的第一結(jié)果暫存器和連接于第二運(yùn)算器的第二結(jié)果暫存器,分別存儲兩個運(yùn)算器的運(yùn)算結(jié)果,并通過總線寫回到寄存器中的相應(yīng)地址。
圖1是本發(fā)明的微處理器指令處理方法的流程圖;圖2a和圖2b是根據(jù)本發(fā)明的一個實施例的一條單發(fā)射指令和一條雙發(fā)射指令的指令碼結(jié)構(gòu)示例;圖3是本發(fā)明的一種微處理器指令處理系統(tǒng)的結(jié)構(gòu)圖;圖4是本發(fā)明的指令處理系統(tǒng)的一個優(yōu)選實施例的結(jié)構(gòu)圖;圖5是根據(jù)本發(fā)明的一個優(yōu)選實施例的流水線裝置的結(jié)構(gòu)圖。
具體實施例方式本發(fā)明提出了一種基于混合單發(fā)射/雙發(fā)射指令集的新的微處理器指令處理方法和系統(tǒng)。圖1是本發(fā)明的微處理器指令處理方法的流程圖,主要包括:指令讀取步驟,根據(jù)指令的地址,從存儲器中讀取一條指令,其中所述指令中包含指示所述指令為單發(fā)射指令或雙發(fā)射指令的標(biāo)識位;指令譯碼步驟,對所讀取的指令進(jìn)行譯碼,獲得包括所述標(biāo)識位、操作碼、操作數(shù)的譯碼結(jié)果,根據(jù)所述標(biāo)識位,確定所述指令為單發(fā)射指令或雙發(fā)射指令;運(yùn)算步驟:如果確定該指令為單發(fā)射指令,則在第一流水線中完成該單發(fā)射指令的操作,如果確定該指令為雙發(fā)射指令,則在第一流水線中完成該雙發(fā)射指令中的第一操作,在第二流水線中完成該雙發(fā)射指令的第二操作,第一流水線和第二流水線以完全相同的方式并行運(yùn)行;
寫回步驟:將所述第一流水線的運(yùn)算結(jié)果和所述第二流水線的運(yùn)算結(jié)果寫回到寄存器。不同于傳統(tǒng)的混合單發(fā)射/雙發(fā)射指令集方式,本發(fā)明的指令處理方法中所涉及的單發(fā)射指令集和雙發(fā)射指令集采取了非對稱的設(shè)計,也就是說,單發(fā)射指令集和雙發(fā)射指令集并非分別完成微處理器的所有功能,而是分別實現(xiàn)微處理器的部分功能,由單發(fā)射指令集和雙發(fā)射指令集的功能總和來完成微處理器的所有功能。在本發(fā)明的一個優(yōu)選實施例中,可將微處理器的指令按照這樣的原則進(jìn)行劃分:-頻繁使用的常規(guī)指令,例如常用算數(shù)運(yùn)算指令、邏輯運(yùn)算指令、讀寫內(nèi)存指令、位操作指令等,既由單發(fā)射指令集支持,又由雙發(fā)射指令集支持;-使用頻率低但必要的非常規(guī)指令,例如跳轉(zhuǎn)指令等,僅在單發(fā)射指令集中支持,或僅在雙發(fā)射指令集中支持。這樣的分配原則,使得雙發(fā)射指令的數(shù)量相對較少,因此在支持雙發(fā)射的前提下,減小了操作碼字段的長度,使得根據(jù)本發(fā)明的指令處理系統(tǒng)在提高了處理效率的同時,仍能支持很大的寄存器陣列,提高了綜合性能。在本發(fā)明中,并非如現(xiàn)有技術(shù)那樣通過計算來組合相鄰的單發(fā)射指令來形成雙發(fā)射指令,也不是在編程過程中通過額外的狀態(tài)變量來區(qū)分這兩種指令,相反地,在本發(fā)明的指令處理方法中,使得每條指令都是獨(dú)立事件,在每條指令中設(shè)置一個標(biāo)識位(例如次高位),根據(jù)每條指令的獨(dú)立譯碼結(jié)果識別該標(biāo)識位,從而決定其為單發(fā)射指令還是雙發(fā)射指令。圖2a和圖2b是根據(jù)本發(fā)明的一個實施例的一條單發(fā)射指令和一條雙發(fā)射指令的指令碼結(jié)構(gòu)示例,在圖2a中,給出了單發(fā)射指令的指令碼結(jié)構(gòu),其從左至右由標(biāo)識位、操作碼、操作數(shù)1、操作數(shù)2、其他可選字段等部分構(gòu)成,其中標(biāo)識位為“O”指示該指令為單發(fā)射指令,圖2b中,給出了雙發(fā)射指令的指令碼結(jié)構(gòu),其從左至右標(biāo)識位、第一操作碼、操作數(shù)
1、操作數(shù)2、第二操作碼、操作數(shù)3,操作數(shù)4,其他可選字段等部分構(gòu)成,其中標(biāo)識位為“I”指示該指令為雙發(fā)射指令。該雙發(fā)射指令可同時完成所包含的第一操作和第二操作。從硬件的角度來講,由于本發(fā)明沒有引入動態(tài)分配到兩個或多個流水線中的機(jī)制,而是根據(jù)譯碼結(jié)果靜態(tài)地分配單發(fā)射指令和雙發(fā)射指令,這種方法避免了額外的硬件負(fù)擔(dān),使得硬件成本大大下降,從上層應(yīng)用的角度來講,本發(fā)明的方法使得程序空間完全一致,上層編程中不需特別定義何時為單發(fā)射指令或雙發(fā)射指令,單發(fā)射指令和雙發(fā)射指令之間的切換對于上層軟件來說是完全透明的,這就大大降低了應(yīng)用中的編程復(fù)雜度。下面以跳轉(zhuǎn)指令為例,說明本發(fā)明的非對稱機(jī)制在降低硬件成本方面的貢獻(xiàn)。在執(zhí)行跳轉(zhuǎn)程序時,需要根據(jù)標(biāo)志FLAG來決定是否跳轉(zhuǎn),例如實現(xiàn)“當(dāng)a > b時則跳轉(zhuǎn)”的程序時,按照傳統(tǒng)處理方式,在兩條對稱的流水線中都引入FLAG,為了區(qū)分兩條流水線上同時產(chǎn)生的FLAG,就必須記錄歷史條件來決定后續(xù)的狀態(tài)轉(zhuǎn)移,邏輯十分復(fù)雜,這種情況在微處理器的運(yùn)行過程中十分罕見,但為了解決這一罕見的問題,必須引入很大的硬件開銷。相比之下,本發(fā)明僅在其中一條流水線中對FLAG進(jìn)行更新,不再需要進(jìn)行兩條流水線上的FLAG的區(qū)分,這使得流水線設(shè)計獨(dú)立簡單,降低了硬件成本。如果經(jīng)過指令譯碼之后,得到的標(biāo)識位指示該指令為單發(fā)射指令,則在第一流水線中完成該單發(fā)射指令的操作,例如在典型的微處理器體系結(jié)構(gòu)中,第一流水線可包括第一級:讀取第一操作數(shù);第二級:讀取第二操作數(shù);和第三級:運(yùn)算,得到運(yùn)算結(jié)果。如果經(jīng)過指令譯碼之后,得到的標(biāo)識位指示該指令為雙發(fā)射指令,則在第一流水線中完成該雙發(fā)射指令中的第一操作,在第二流水線中完成該雙發(fā)射指令的第二操作,第一流水線和第二流水線以完全相同的方式并行運(yùn)行。在微處理器工作的絕大多數(shù)情況中,兩條流水線中的兩個運(yùn)算器ALU產(chǎn)生的結(jié)果的寫回地址是不同的,因此可以簡單地將兩個運(yùn)算結(jié)果同時寫回各自的寄存器地址中。在本發(fā)明的一個優(yōu)選實施例中,考慮到在極特殊情況下,兩個運(yùn)算結(jié)果的地址如果發(fā)生沖突,則把兩個結(jié)果進(jìn)行“或” OR運(yùn)算,通過這種簡單的邏輯處理,使得兩條流水線中的操作都部分生效。圖3是本發(fā)明的一種微處理器指令處理系統(tǒng)的結(jié)構(gòu)圖,主要包括:寄存器301,存儲包括指令,操作數(shù),運(yùn)算結(jié)果的數(shù)據(jù);指令讀取裝置302,根據(jù)指令的地址,從存儲器中讀取一條指令,其中所述指令中包含指示所述指令為單發(fā)射指令或雙發(fā)射指令的標(biāo)識位;指令譯碼裝置303,對所讀取的指令進(jìn)行譯碼,獲得包括所述標(biāo)識位、操作碼、操作數(shù)的譯碼結(jié)果,根據(jù)所述標(biāo)識位,確定所述指令為單發(fā)射指令或雙發(fā)射指令;指令流水線裝置304,包括第一流水線裝置3041和第二流水線裝置3042,其中如果確定該指令為單發(fā)射指令,則在該第一流水線裝置中完成該單發(fā)射指令的操作,如果確定該指令為雙發(fā)射指令,則在第一流水線中完成該雙發(fā)射指令中的第一操作,在第二流水線中完成該雙發(fā)射指令的第二操作,第一流水線裝置和第二流水線裝置以完全相同的方式并行運(yùn)行;寫回裝置305:將所述第一流水線的運(yùn)算結(jié)果和所述第二流水線的運(yùn)算結(jié)果寫回到寄存器。圖4是本發(fā)明的指令處理系統(tǒng)的一個優(yōu)選實施例的結(jié)構(gòu)圖,該優(yōu)選實施例基于典型的微處理器架構(gòu),其中指令讀取裝置可由程序計數(shù)器PC、地址寄存器ITCM和指令寄存器INS來實現(xiàn),程序計數(shù)器PC用于存放和指示要執(zhí)行的指令的地址,地址寄存器用于保存PC中的地址,指令寄存器用于暫時存放根據(jù)地址取出的指令,等待譯碼。指令譯碼裝置可由指令譯碼器IND實現(xiàn),其將指令碼轉(zhuǎn)變成執(zhí)行此指令所需要的電信號,在本發(fā)明中,譯碼結(jié)果中包含指示該指令為單發(fā)射指令還是雙發(fā)射指令的標(biāo)識位。圖5是根據(jù)本發(fā)明的一個優(yōu)選實施例的流水線裝置的結(jié)構(gòu)圖,第一流水線裝置V-PIPE和第二流水線裝置U-PIPE可分別包括由暫存器VR1/UR1構(gòu)成的第一級SI,用于讀取第一操作數(shù);由暫存器VR2/UR2構(gòu)成的第二級S2,用于讀取第二操作數(shù),以及由運(yùn)算器ALU1/AUL2構(gòu)成的第三級S3,用于完成運(yùn)算??筛鶕?jù)需要設(shè)計流水線的級數(shù)而不局限于本實施例給出的方式。在本發(fā)明中,如果確定該指令為單發(fā)射指令,則在該第一流水線裝置中完成該單發(fā)射指令的操作,即讀取指令的第一操作數(shù)至第一暫存器VR1,讀取指令的第二操作數(shù)至第二暫存器VR2,并在第一運(yùn)算器中對第一和第二操作數(shù)進(jìn)行計算,得到運(yùn)算結(jié)果。如果確定該指令為雙發(fā)射指令,則在第一流水線中完成該雙發(fā)射指令中的第一操作,即讀取第一操作的第一操作數(shù)至?xí)捍嫫鱒R1,讀取第一操作的第二操作數(shù)至?xí)捍嫫鱒R2,并在第一運(yùn)算器ALUl中對這兩個操作數(shù)進(jìn)行運(yùn)算;在第二流水線中完成該雙發(fā)射指令的第二操作,即讀取第二操作的第一操作數(shù)至?xí)捍嫫鱑R1,讀取第二操作的第二操作數(shù)至?xí)捍嫫鱑R2,并在第二運(yùn)算器ALU2中對這兩個操作數(shù)進(jìn)行運(yùn)算;第一流水線裝置和第二流水線裝置以完全相同的方式并行運(yùn)行。寫回裝置可包括分別連接于第一運(yùn)算器和第二運(yùn)算器的兩個暫存器,其分別存儲兩個運(yùn)算器的結(jié)果,并通過總線寫回到寄存器中的相應(yīng)地址。上述實施例是用于例示性說明本發(fā)明的原理及其功效,而非用于限制本發(fā)明。任何本領(lǐng)域技術(shù)人員均可在不違背本發(fā)明的精神及范疇下,對上述實施例進(jìn)行修改。因此本發(fā)明的保護(hù)范圍,應(yīng)如本發(fā)明的權(quán)利要求書所列。
權(quán)利要求
1.一種微處理器指令處理方法,包括: 指令讀取步驟,根據(jù)指令的地址,從存儲器中讀取一條指令,其中所述指令中包含指示所述指令為單發(fā)射指令或雙發(fā)射指令的標(biāo)識位; 指令譯碼步驟,對所讀取的指令進(jìn)行譯碼,獲得包括所述標(biāo)識位、操作碼、操作數(shù)的譯碼結(jié)果,根據(jù)所述標(biāo)識位,確定所述指令為單發(fā)射指令或雙發(fā)射指令; 運(yùn)算步驟:如果確定該指令為單發(fā)射指令,則在第一流水線中完成該單發(fā)射指令的操作,如果確定該指令為雙發(fā)射指令,則在第一流水線中完成該雙發(fā)射指令中的第一操作,在第二流水線中完成該雙發(fā)射指令的第二操作,第一流水線和第二流水線以相同的方式并行運(yùn)行; 寫回步驟:將所述第一流水線的運(yùn)算結(jié)果和所述第二流水線的運(yùn)算結(jié)果寫回到寄存器。
2.根據(jù)權(quán)利要求1所述的微處理器指令處理方法,其中由所述單發(fā)射指令構(gòu)成的單發(fā)射指令集和由所述雙發(fā)射指令構(gòu)成的雙發(fā)射指令集分別實現(xiàn)微處理器的部分功能。
3.根據(jù)權(quán)利要求2所述的微處理器指令處理方法,其中, 將頻繁使用的常規(guī)指令設(shè)置為既由單發(fā)射指令集實現(xiàn),又由雙發(fā)射指令集實現(xiàn); 將非頻繁使用的非常規(guī)指令設(shè)置為僅由單發(fā)射指令集實現(xiàn),或僅由雙發(fā)射指令集實現(xiàn)。
4.根據(jù)權(quán)利要求1所述的微處理器指令處理方法,所述第一流水線和第二流水線可分別包括讀取第一操作數(shù)的第一級、讀取第二操作數(shù)的第二級、以及對第一操作數(shù)和第二操作數(shù)進(jìn)行運(yùn)算的第三級。
5.根據(jù)權(quán)利要求1所述的微處理器指令處理方法,如果第一流水線的運(yùn)算結(jié)果的地址和第二流水線的運(yùn)算結(jié)果的地址發(fā)生沖突,則將兩個運(yùn)算結(jié)果進(jìn)行“或”運(yùn)算。
6.一種微處理器指令處理系統(tǒng),包括: 寄存器,存儲包括指令,操作數(shù),運(yùn)算結(jié)果的數(shù)據(jù); 指令讀取裝置,根據(jù)指令的地址,從存儲器中讀取一條指令,其中所述指令中包含指示所述指令為單發(fā)射指令或雙發(fā)射指令的標(biāo)識位; 指令譯碼裝置,對所讀取的指令進(jìn)行譯碼,獲得包括所述標(biāo)識位、操作碼、操作數(shù)的譯碼結(jié)果,根據(jù)所述標(biāo)識位,確定所述指令為單發(fā)射指令或雙發(fā)射指令; 指令流水線裝置,包括第一流水線裝置和第二流水線裝置,其中如果確定該指令為單發(fā)射指令,則在該第一流水線裝置中完成該單發(fā)射指令的操作,如果確定該指令為雙發(fā)射指令,則在第一流水線中完成該雙發(fā)射指令中的第一操作,在第二流水線中完成該雙發(fā)射指令的第二操作,第一流水線裝置和第二流水線裝置以完全相同的方式并行運(yùn)行; 寫回裝置,將所述第一流水線的運(yùn)算結(jié)果和所述第二流水線的運(yùn)算結(jié)果寫回到寄存器。
7.根據(jù)權(quán)利要求6所述的微處理器指令處理裝置,所述指令讀取裝置由程序計數(shù)器、地址寄存器和指令寄存器來實現(xiàn)。
8.根據(jù)權(quán)利要求6所述的微處理器指令處理裝置,所述第一流水線裝置包括由第一暫存器構(gòu)成的第一級,由第二暫存器構(gòu)成的第二級和由第一運(yùn)算器構(gòu)成的第三級;所述第二流水線包括由第三暫存器構(gòu)成的第一級,由第四暫存器構(gòu)成的第二級和由第二運(yùn)算器構(gòu)成的第三級。
9.根據(jù)權(quán)利要求8所述的微處理器指令處理裝置,其中, 如果確定所述指令為單發(fā)射指令,則在所述第一暫存器中讀取指令的第一操作數(shù),在所述第二暫存器中讀取指令的第二操作數(shù),在所述第一運(yùn)算器中對第一操作數(shù)和第二操作數(shù)進(jìn)行運(yùn)算; 如果確定所述指令為雙發(fā)射指令,則在所述第一暫存器中讀取指令的第一操作的第一操作數(shù),在所述第二暫存器中讀取指令的第一操作的第二操作數(shù),在第一運(yùn)算器中對第一操作的第一操作數(shù)和第一操作的第二操作數(shù)進(jìn)行運(yùn)算;在所述第三暫存器中讀取指令的第二操作的第一操作數(shù),在所述第四暫存器中讀取指令的第二操作的第二操作數(shù),在第二運(yùn)算器中對第二操作的第一操作數(shù)和第二操作的第二操作數(shù)進(jìn)行運(yùn)算。
10.根據(jù)權(quán)利要求6所述的微處理器指令處理裝置,所述寫回裝置包括連接于第一運(yùn)算器的第一結(jié)果暫存器和連接于第二運(yùn)算器的第二結(jié)果暫存器,分別存儲兩個運(yùn)算器的運(yùn)算結(jié)果,并通過總線寫回到寄 存器中的相應(yīng)地址。
全文摘要
本發(fā)明涉及基于單/雙發(fā)射指令集的微處理器指令處理方法及系統(tǒng),包括根據(jù)指令的地址,從存儲器中讀取一條指令,其中所述指令中包含指示所述指令為單發(fā)射指令或雙發(fā)射指令的標(biāo)識位;對所讀取的指令進(jìn)行譯碼,獲得包括所述標(biāo)識位、操作碼、操作數(shù)的譯碼結(jié)果,根據(jù)所述標(biāo)識位,確定所述指令為單發(fā)射指令或雙發(fā)射指令;如果確定該指令為單發(fā)射指令,則在第一流水線中完成該單發(fā)射指令的操作,如果確定該指令為雙發(fā)射指令,則在第一流水線中完成該雙發(fā)射指令中的第一操作,在第二流水線中完成該雙發(fā)射指令的第二操作,第一流水線和第二流水線以相同的方式并行運(yùn)行;以及將所述第一流水線的運(yùn)算結(jié)果和所述第二流水線的運(yùn)算結(jié)果寫回到寄存器。
文檔編號G06F9/38GK103218207SQ20121001616
公開日2013年7月24日 申請日期2012年1月18日 優(yōu)先權(quán)日2012年1月18日
發(fā)明者沙力, 蘭軍強(qiáng), 朱磊 申請人:上海算芯微電子有限公司