專利名稱:一種risc處理器裝置及其模擬浮點(diǎn)棧操作的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及微處理器技術(shù)領(lǐng)域,特別是涉及一種精簡指令集計(jì)算機(jī) (RISC)處理器裝置及其模擬浮點(diǎn)棧操作,進(jìn)行浮點(diǎn)數(shù)據(jù)的壓棧和退棧等棧 操作的方法。
背景技術(shù):
中央處理器(CPU)簡稱微處理器,是計(jì)算機(jī)的核心單元。微處理器采用的指令集、設(shè)計(jì)規(guī)范(體系結(jié)構(gòu))是計(jì)算機(jī)的首要特征,它決定了計(jì)算機(jī)需要 采用的外圍設(shè)備和應(yīng)用軟件的類型。當(dāng)今世界比較流行的兩大處理器體系結(jié)構(gòu)分別為以MIPS公司的MIPS32/64指令集為代表的精簡指令集計(jì)算機(jī)(Reduced Instruction Set Computing, RISC)處理器體系結(jié)構(gòu)和以Intel公司的X86為代表的復(fù)雜指令 集計(jì)算機(jī)(Complex Instruction Set Computing, CISC)處理器體系結(jié)構(gòu)。CISC 處理器指令數(shù)量繁多, 一些指令可執(zhí)行相當(dāng)復(fù)雜的功能, 一般需要許多時(shí)鐘周 期來執(zhí)行;RISC處理器使用較少數(shù)量的可用指令,以更高的速率執(zhí)行一組更 簡單的功能。而采用不同的體系結(jié)構(gòu)的處理器上運(yùn)行的程序軟件需要針對(duì)處理 器的體系結(jié)構(gòu)專門編寫,X86上的應(yīng)用軟件通常不能在MIPS指令集的RSIC 處理器的計(jì)算機(jī)上運(yùn)行,即常說的不兼容。然而計(jì)算機(jī)制造商希望通過在自己制造的一種體系結(jié)構(gòu)的微處理器上運(yùn) 行更多的現(xiàn)有軟件來節(jié)省軟件開發(fā)的開銷,同時(shí)達(dá)到市場占有率最大化的目 的。為了解決這一問題,虛擬機(jī)應(yīng)運(yùn)而生。 一般地,將具有一種類型體系結(jié)構(gòu) 的處理器(CPU)計(jì)算機(jī)稱為主機(jī);同時(shí)將需要主機(jī)仿真的,不相關(guān)體系結(jié)構(gòu) 類型的處理器(CPU)環(huán)境稱為目標(biāo)機(jī),需要一種應(yīng)用程序,這種程序能夠促 使主機(jī)執(zhí)行一個(gè)或多個(gè)主機(jī)指令,響應(yīng)于給定的目標(biāo)機(jī)指令,運(yùn)行為目標(biāo)機(jī)編 寫的軟件,這種程序就叫虛擬機(jī)。目前現(xiàn)有的虛擬機(jī)有SimOS, QEMU, Transmeta等,但是現(xiàn)有的虛擬 機(jī)由于各種體系結(jié)構(gòu)的巨大差異造成虛擬機(jī)運(yùn)行開銷過大,執(zhí)行效率過低,很 難應(yīng)用到實(shí)際工作中。由于X86處理器體系結(jié)構(gòu)是目前個(gè)人計(jì)算機(jī)(PC)上較流行的一類結(jié)構(gòu), 所以多數(shù)虛擬機(jī)都以X86處理器體系結(jié)構(gòu)為目標(biāo)機(jī),都需要解決向X86處理 器兼容的問題,而眾所周知的棘手問題是對(duì)X86處理器所具有的獨(dú)特的浮點(diǎn) 棧機(jī)制的模擬。 一般地,CISC類處理器,如X86,中都設(shè)置一個(gè)浮點(diǎn)寄存器 棧,大部分浮點(diǎn)運(yùn)算都是在寄存器棧參與下進(jìn)行的。而除了 X86處理器外, 其他處理器,特別是MIPS指令集的RISC處理器沒有類似的結(jié)構(gòu),由此帶來 的如何在虛擬機(jī)上進(jìn)行浮點(diǎn)翻譯是眾多虛擬機(jī)研發(fā)部門迫切需要解決的熱點(diǎn) 問題。X86處理器的浮點(diǎn)運(yùn)算提供了壓棧(浮點(diǎn)裝入指令)、退棧(浮點(diǎn)保存指 令)、浮點(diǎn)運(yùn)算指令和一些其他的輔助指令,程序可以通過浮點(diǎn)裝入指令將內(nèi) 存中的浮點(diǎn)數(shù)據(jù)壓入浮點(diǎn)寄存器棧中,通過浮點(diǎn)運(yùn)算指令對(duì)浮點(diǎn)數(shù)據(jù)進(jìn)行運(yùn) 算,通過浮點(diǎn)保存指令進(jìn)行退棧,并將棧頂寄存器的內(nèi)容保存到內(nèi)存單元中。這種浮點(diǎn)運(yùn)算方式是CISC處理器,如X86處理器所獨(dú)有的,其他類型的 處理器,如MIPS指令集的RISC處理器基本上都沒有類似的運(yùn)算方式。一般而言,在非CISC處理器,如使用MIPS指令集的RISC處理器內(nèi)部, 設(shè)置若干個(gè)通用的浮點(diǎn)寄存器,這些浮點(diǎn)寄存器統(tǒng)一編號(hào),指令通過這些編號(hào) 來直接訪問一個(gè)固定的浮點(diǎn)寄存器,而X86處理器中,指令所操作的寄存器 隨著棧頂指針的變化而變化。 一般地,為了解決二進(jìn)制數(shù)據(jù)翻譯問題,非CISC 處理器,如RISC處理器需要在內(nèi)存中開辟一塊空間,維護(hù)一個(gè)仿真的X86浮 點(diǎn)寄存器棧。申請(qǐng)?zhí)枮?00410074532.6的中國申請(qǐng),公開了一種二進(jìn)制翻譯中對(duì)X86 中浮點(diǎn)運(yùn)算的處理方法,包括以下步驟在運(yùn)行時(shí)環(huán)境中設(shè)置一個(gè)浮點(diǎn)棧,用 于仿真X86中的物理浮點(diǎn)棧;通過浮點(diǎn)寄存器映射的處理和歸一方法依次對(duì) 源二進(jìn)制程序中的每個(gè)基本塊進(jìn)行處理。其通過用目標(biāo)機(jī)器的寄存器來映射 X86的源寄存器,保證了 X86處理器的浮點(diǎn)運(yùn)算在目標(biāo)機(jī)器上也是由寄存器 來實(shí)現(xiàn),確保運(yùn)算的效率;采用歸一的方法,確保每個(gè)基本塊的入口滿足每次 top的值相同的假設(shè)。但是,這些現(xiàn)有技術(shù)雖然能夠準(zhǔn)確仿真各種X86浮點(diǎn)操作,但是效率非 常低下,無法在性能上實(shí)現(xiàn)飛躍。發(fā)明內(nèi)容本發(fā)明所要解決的問題是提供一種RISC處理器裝置及其模擬浮點(diǎn)棧操作 的方法,其在RISC處理器上能夠支持浮點(diǎn)棧操作,從而方便不同架構(gòu)的虛擬 機(jī)進(jìn)行二進(jìn)制翻譯工作,提高虛擬機(jī)效率,增強(qiáng)處理器兼容性。為實(shí)現(xiàn)本發(fā)明而提供的一種RISC處理器裝置,包括浮點(diǎn)寄存器堆,譯碼 部件和浮點(diǎn)運(yùn)算部件,還包括控制寄存器,用于控制利用所述浮點(diǎn)寄存器堆模 擬浮點(diǎn)寄存器棧操作;所述譯碼部件,包括一指針寄存器,用于維護(hù)一棧操作指針,存儲(chǔ)棧操作 指針的值;所述浮點(diǎn)運(yùn)算部件,包括一指針操作模塊,用于對(duì)所述指針寄存器進(jìn)行操 作,在模擬所述浮點(diǎn)寄存器棧操作時(shí),模擬所述指針寄存器的棧操作指針的棧 操作,修改并監(jiān)控棧操作指針的狀態(tài)。所述控制模擬浮點(diǎn)寄存器棧,是指所述控制寄存器維護(hù)一個(gè)棧使能位,當(dāng) 使能位置1時(shí),表示處理器將模擬浮點(diǎn)寄存器棧操作;當(dāng)使能位置O時(shí),表示 處理器將不模擬浮點(diǎn)寄存器棧操作。所述模擬浮點(diǎn)寄存器棧,是利用RISC處理器中編號(hào)為0 31的32個(gè)浮點(diǎn) 寄存器,模擬得到的。所述棧操作指針為被讀、寫、增l、減l操作的棧操作指針。所述利用32個(gè)浮點(diǎn)寄存器,模擬得到浮點(diǎn)寄存器棧,是指所述控制寄存 器中的棧使能位被置1時(shí),選擇32個(gè)浮點(diǎn)寄存器中的8個(gè)寄存器,模擬X86 處理器的序號(hào)為0~7浮點(diǎn)寄存器棧的棧寄存器。為實(shí)現(xiàn)本發(fā)明目的還提供一種RISC處理器模擬浮點(diǎn)棧操作的方法,包括 下列步驟步驟A,根據(jù)棧使能位,決定是否選定浮點(diǎn)寄存器用于模擬浮點(diǎn)寄存器棧 操作,并設(shè)置指針寄存器;步驟B,在模擬浮點(diǎn)寄存器棧操作時(shí),對(duì)指針寄存器進(jìn)行操作,模擬棧操 作指針的棧操作,修改并監(jiān)控棧操作指針的狀態(tài)。所述步驟A包括下列步驟步驟A1,在控制寄存器中選擇一位為浮點(diǎn)棧使能位;當(dāng)使能位置l時(shí), 表示模擬X86的浮點(diǎn)寄存器棧,進(jìn)行浮點(diǎn)寄存器棧操作;當(dāng)使能位置0時(shí),表示不模擬X86的浮點(diǎn)寄存器棧,不進(jìn)行浮點(diǎn)寄存器棧操作,處理器按照正 常的過程工作;步驟A2,設(shè)置一個(gè)至少3位的指針寄存器,存放棧操作指針的值。所述步驟B包括下列步驟設(shè)置棧操作模式,浮點(diǎn)棧使能位置1,允許用戶模擬浮點(diǎn)寄存器棧棧操作; 清除棧操作模式,浮點(diǎn)棧使能位置0,不允許用戶模擬浮點(diǎn)寄存器棧進(jìn)行 浮點(diǎn)棧操作;棧操作指針值增1; 棧操作指針值減l; 讀棧操作指針值; 寫棧操作指針值。本發(fā)明的有益效果是本發(fā)明的RISC處理器裝置及其模擬浮點(diǎn)棧操作的 方法,提供了很強(qiáng)的仿真支持,可以省去對(duì)浮點(diǎn)棧的模擬維護(hù),大大減少在讀 取內(nèi)存上的時(shí)間和空間損失,提高工作效率。并縮小了不同處理器體系結(jié)構(gòu)間 的差異,為協(xié)同設(shè)計(jì)虛擬機(jī)以及RISC和CISC處理器之間的兼容做出開拓性 的貢獻(xiàn)。
圖1為本發(fā)明RISC處理器裝置結(jié)構(gòu)示意圖;圖2為本發(fā)明RISC處理器模擬浮點(diǎn)棧操作流程圖;圖3為本發(fā)明實(shí)施例利用MIPS指令集實(shí)現(xiàn)設(shè)置棧操作模式使能位置1指 令編碼示意圖;圖4為本發(fā)明實(shí)施例利用MIPS指令集實(shí)現(xiàn)清除棧操作模塊使能位置0指 令編碼示意圖;圖5為本發(fā)明實(shí)施例利用MIPS指令集實(shí)現(xiàn)棧指針值增1指令編碼示意圖; 圖6為本發(fā)明實(shí)施例利用MIPS指令集實(shí)現(xiàn)棧指針值減1指令編碼示意圖; 圖7為本發(fā)明實(shí)施例利用MIPS指令集實(shí)現(xiàn)讀棧指針值指令編碼示意圖;圖8為本發(fā)明實(shí)施例利用MIPS指令集實(shí)現(xiàn)寫棧指針值指令編碼示意圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明的一種RISC處理器及其模擬浮點(diǎn)棧操作的方法進(jìn)行進(jìn)一步詳 細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于 限定本發(fā)明。本發(fā)明實(shí)施例以MIPS64指令集的RISC處理器裝置為例,而對(duì)本發(fā)明的 RISC處理器裝置及其模擬浮點(diǎn)棧操作的方法而進(jìn)行說明,但是,應(yīng)當(dāng)指明的 是,其不是對(duì)本發(fā)明權(quán)利要求的限定。本發(fā)明實(shí)施例中,以提供一種RISC處理器及其模擬浮點(diǎn)棧操作的方法, 其應(yīng)用在協(xié)同設(shè)計(jì)虛擬機(jī)中,在RISC處理器上支持CISC處理器架構(gòu)浮點(diǎn)棧 操作,如X86處理器中的浮點(diǎn)棧操作。為了更深入理解本發(fā)明,本發(fā)明實(shí)施例先說明CISC處理器體系結(jié)構(gòu),如 X86處理器的浮點(diǎn)棧操作方法。X86處理器的浮點(diǎn)部件中包括一個(gè)浮點(diǎn)寄存器棧,該棧由8個(gè)可直接進(jìn)行 浮點(diǎn)運(yùn)算的棧寄存器組成,按照順序進(jìn)行編號(hào),分別是0 7。之所以稱該寄存 器是浮點(diǎn)寄存器棧,其原因在于X86處理器將它們作為一個(gè)堆棧進(jìn)行使用。 浮點(diǎn)寄存器棧是一個(gè)向下擴(kuò)展的循環(huán)棧,處理器利用另外一個(gè)寄存器中的3 位來標(biāo)記棧頂所在的位置,這3位被稱為TOP指針。當(dāng)需要向棧寄存器中裝入數(shù)據(jù),即壓棧的時(shí)候,TOP指針的值減l,然后 將數(shù)據(jù)存儲(chǔ)到由TOP指針?biāo)甘镜母↑c(diǎn)寄存器中,當(dāng)TOP指針值為0時(shí),下 一次壓棧則將數(shù)據(jù)壓入7號(hào)棧寄存器中,TOP指針的值則被設(shè)置成7。當(dāng)需要將堆棧中的數(shù)據(jù)保存到內(nèi)存中,即彈出退棧的時(shí)候,則進(jìn)行退棧操 作,退棧操作與壓棧操作類似,TOP指針通過增l進(jìn)行,如果此時(shí)TOP指針 值是7,則退棧后的TOP指針值設(shè)置位0。在X86處理器中,所述壓棧和彈棧操作由硬件自動(dòng)實(shí)現(xiàn),對(duì)用戶而言是 透明的。通過指令對(duì)浮點(diǎn)數(shù)據(jù)進(jìn)行操作時(shí),所見到的浮點(diǎn)寄存器是ST (0) 、 S (1)、……、ST (7)。其中,ST (i)是指距離棧頂?shù)趇個(gè)單元的寄存器,如果T0P指針值是2,則ST (0)為第2號(hào)寄存器,ST (1)為第3號(hào)寄存器, 依此類推。下面詳細(xì)描述本發(fā)明的RISC處理器裝置。本發(fā)明的RISC處理器,包括現(xiàn)有的浮點(diǎn)寄存器堆4,譯碼部件2,浮點(diǎn) 運(yùn)算部件3。所述的RISC處理器,還包括控制寄存器l,用于控制利用浮點(diǎn)寄存器堆 4使能或禁止模擬浮點(diǎn)寄存器桟。其維護(hù)一個(gè)棧使能位,當(dāng)使能位置1時(shí),表示處理器將模擬X86處理器 的浮點(diǎn)寄存器棧操作;當(dāng)使能位置0時(shí),表示處理器將不模擬X86處理器的 浮點(diǎn)寄存器棧操作,處理器按照正常的過程進(jìn)行操作處理。本發(fā)明實(shí)施例中,利用RISC處理器中編號(hào)為0 31的32個(gè)現(xiàn)有的浮點(diǎn)寄 存器,模擬X86處理器的浮點(diǎn)寄存器棧操作。所述譯碼部件2包括一個(gè)指針寄存器21,用于維護(hù)一個(gè)TOP指針,也就 是棧操作指針,存儲(chǔ)TOP指針的值,這個(gè)TOP指針可以被讀、寫、增l、減所述浮點(diǎn)運(yùn)算部件3,包括一指針操作模塊31,用于對(duì)指針寄存器21進(jìn) 行操作,在模擬浮點(diǎn)寄存器棧操作時(shí),模擬指針寄存器21的棧操作指針的棧 操作,修改并監(jiān)控桟操作指針的狀態(tài)。作為一種可實(shí)施方式,如果控制寄存器l中的棧使能位被置位l,則選擇 32個(gè)浮點(diǎn)寄存器中的8個(gè)寄存器,用于模擬X86處理器的浮點(diǎn)寄存器棧的棧 寄存器,序號(hào)為0 7。如果控制寄存器l中的棧使能位被置位l,則在運(yùn)算中被使用,表示寄存 器模擬的浮點(diǎn)寄存器棧存在,那么凡是浮點(diǎn)運(yùn)算指令中用到的編號(hào)小于8的寄 存器,都被當(dāng)作浮點(diǎn)寄存器棧的棧寄存器使用,從而模擬X86處理器的浮點(diǎn) 寄存器棧。其后指針操作模塊31使用TOP指針進(jìn)行棧寄存器號(hào)進(jìn)行轉(zhuǎn)換,即用戶所 見的浮點(diǎn)寄存器號(hào)跟程序使用的浮點(diǎn)寄存器號(hào)轉(zhuǎn)換,例如,寄存器號(hào)是指距離 棧頂?shù)趇個(gè)單元的寄存器ST (i)加上TOP指針值。如果TOP指針值是2,則 ST (0)為第2號(hào)寄存器,ST (1)為第3號(hào)寄存器。如果溢出也有相應(yīng)處理,使得這組寄存器形成了一個(gè)循環(huán)棧,完成了本發(fā)明要實(shí)現(xiàn)的模擬X86中浮點(diǎn)寄 存器棧的功能。然后進(jìn)行后續(xù)工作,后續(xù)工作與沒有置位棧使能相同;如果控制寄存器1中的棧使能位被置位O,即被清零,則在運(yùn)算屮,認(rèn)為 寄存器模擬棧不存在,按照現(xiàn)有的工作步驟正常工作。下面進(jìn)一步詳細(xì)說明本發(fā)明RISC處理器模擬浮點(diǎn)棧操作的方法,其以RISC處理器的8個(gè)浮點(diǎn)寄存器組成浮點(diǎn)寄存器棧,通過控制寄存器1,并模 擬X86的TOP指針功能,即棧指針操作功能,完成模擬浮點(diǎn)寄存器的棧操作。 本發(fā)明的RISC處理器模擬浮點(diǎn)棧操作的方法,包括如下步驟 步驟SIOO,根據(jù)棧使能位,決定是否選定8個(gè)浮點(diǎn)寄存器用于模擬浮點(diǎn) 寄存器棧中8個(gè)棧寄存器,模擬浮點(diǎn)寄存器棧操作,并設(shè)置指針寄存器; 所述步驟S100包括下列步驟步驟SllO,在控制寄存器1中選擇一位為浮點(diǎn)棧使能位;當(dāng)使能位置1 時(shí),表示將模擬X86處理器的浮點(diǎn)棧,進(jìn)行浮點(diǎn)棧操作;當(dāng)使能位置0時(shí), 表示不模擬X86處理器的浮點(diǎn)棧,不能進(jìn)行浮點(diǎn)棧操作,處理器按照正常的 過程工作;步驟S120,設(shè)置一個(gè)至少3位的指針寄存器21,存放TOP指針的值。 該TOP指針的值可以被讀、寫、增l、減l, TOP指針的范圍是0 7。 TOP指針在壓棧時(shí)壓入7號(hào)寄存器,TOP指針的值被設(shè)置成6;在彈棧時(shí) 如果TOP指針值為7,則彈棧后TOP指針值設(shè)置位0。因?yàn)門OP指針永遠(yuǎn)指向棧頂寄存器,本棧為自頂向下生長,即壓棧時(shí)TOP 指針值減一,彈出時(shí)TOP指針值增一,所以向7號(hào)寄存器存入數(shù)據(jù)時(shí)(也就 是向7號(hào)寄存器壓棧),TOP指針值應(yīng)該減一變?yōu)?。當(dāng)從7號(hào)寄存器中彈出 數(shù)據(jù)時(shí),TOP指針值應(yīng)該加1變?yōu)?,但是由于只有0 7號(hào)共8個(gè)寄存器, 所以TOP指針值最大為7,當(dāng)加一時(shí),TOP指針應(yīng)該指向下一個(gè)寄存器,也 就是循環(huán)棧中的0號(hào)寄存器,此時(shí)TOP指針值應(yīng)該變?yōu)?。例如,如果TOP指針的值為3,當(dāng)使能位為1時(shí),如果參與運(yùn)算的浮點(diǎn) 寄存器為Sf(i): i<=7,則用浮點(diǎn)寄存器Sf(j)替換浮點(diǎn)寄存器Sf(i)進(jìn)行運(yùn)算,其 中j二(i+3)mod8 ;如果寄存器Sf(i): i>7,則無需改變,直接使用浮點(diǎn)寄存器Sf(i)。步驟S200,在模擬浮點(diǎn)寄存器棧操作時(shí),對(duì)指針寄存器21進(jìn)行操作,模 擬棧操作指針的棧操作,修改并監(jiān)控棧操作指針的狀態(tài)。 所述步驟S200包括下列步驟步驟S210,設(shè)置棧操作模式,浮點(diǎn)棧使能位置l,允許用戶模擬浮點(diǎn)寄存 器棧進(jìn)行浮點(diǎn)棧操作;作為一種可實(shí)施方式,設(shè)置模擬浮點(diǎn)棧模式,為X86浮點(diǎn)棧模式置位1 可以通過下式指令而執(zhí)行。其指令格式為SETTM本發(fā)明提供的擴(kuò)展指令的指令編碼如圖3所示。其利用MIPS指令集中的 SPECIAL2的空的保留值來定義擴(kuò)展指令。通過指令完成使能位置1操作,為X86浮點(diǎn)棧模式置位,允許用戶使用 x86浮點(diǎn)棧進(jìn)行浮點(diǎn)操作。步驟S220,清除棧操作模式,浮點(diǎn)棧使能位置O,不允許用戶模擬浮點(diǎn)寄 存器棧進(jìn)行浮點(diǎn)棧操作;作為一種可實(shí)施方式,本發(fā)明實(shí)施例清模擬浮點(diǎn)棧模式,X86浮點(diǎn)棧模式 置位O的指令格式為CLRTM本發(fā)明提供的擴(kuò)展指令的指令編碼如圖4所示。其為X86浮點(diǎn)棧模式清位,不允許用戶使用x86浮點(diǎn)棧,而只能使用MIPS 處理器的浮點(diǎn)寄存器進(jìn)行浮點(diǎn)操作。該置位、清零的棧指針操作指令可以分別完成浮點(diǎn)寄存器棧的激活、禁用 工作。步驟S230,棧操作指針值增l,即TOP指針的值增l; 作為一種可實(shí)施方式,本發(fā)明實(shí)施例棧指針值增1,即TOP指針的值增1的指令格式為INCTOP本發(fā)明提供的擴(kuò)展指令的指令編碼如圖5所示。 步驟S240,棧操作指針值減l,即TOP指針的值減h 作為一種可實(shí)施方式,本發(fā)明實(shí)施例棧指針值減l,即TOP指針的值減l的指令格式為DECTOP本發(fā)明提供的擴(kuò)展指令的指令編碼如圖6所示。該TOP指針的值增1、減1指令可以分別模擬X86處理器浮點(diǎn)棧中的入 棧、出棧工作;步驟250,讀棧操作指針值,即讀出TOP指針的值;作為一種可實(shí)施方式,本發(fā)明實(shí)施例讀出TOP指針值操作的指令格式為MFTOP rd其指令功能為將X86浮點(diǎn)棧頂指針的值讀入寄存器GPR[rd]。 本發(fā)明提供的擴(kuò)展指令的指令編碼如圖7所示。步驟S260,寫棧操作指針值,即在指針寄存器21中寫入當(dāng)前TOP指針 的值。作為一種可實(shí)施方式,本發(fā)明實(shí)施例完成寫TOP指針值操作的指令格式 為MTTOP imm其指令功能為將三位的立即數(shù)imm寫入x86浮點(diǎn)棧頂指針。本發(fā)明提供的擴(kuò)展指令的指令編碼如圖8所示。該讀、寫TOP指針指令可以方便的控制操作浮點(diǎn)棧。為了能更好地理解本發(fā)明的RISC處理器模擬浮點(diǎn)棧操作的方法,下面以 加法運(yùn)算中棧指針操作為例進(jìn)行說明。在使能位是1, TOP指針值為2時(shí),運(yùn)算add.s $f(6), $f(l), Sf(9)在RISC 處理器內(nèi)部進(jìn)行如下轉(zhuǎn)換模擬X86浮點(diǎn)棧操作被激活,即使能位置1;用Sf(0)替換Sf(6);〃 6+2 mod 8 =0用Sf(3)替換Sf(l);〃 1+2 mod 8 =3Sf(9)無需轉(zhuǎn)換; //9>7所以無需變換,直接使用寄存器Sf(9)最終實(shí)際進(jìn)行運(yùn)算的表達(dá)式為add.s $f(0), $f(3), $f(9) 而此時(shí)沒有入棧和出棧操作,所以TOP值不會(huì)發(fā)生變化。 該詳細(xì)過程如步驟S100中所描述。其模擬了 x86中的循環(huán)棧結(jié)構(gòu),增加了處理器間的兼容性,為虛擬機(jī)和編譯器中的二進(jìn)制翻譯提供了方便,提高了程序運(yùn)行的效率。通過以上結(jié)合附圖對(duì)本發(fā)明具體實(shí)施例的描述,本發(fā)明的其它方面及特征 對(duì)本領(lǐng)域的技術(shù)人員而言是顯而易見的。以上對(duì)本發(fā)明的具體實(shí)施例進(jìn)行了描述和說明,這些實(shí)施例應(yīng)被認(rèn)為其只 是示例性的,并不用于對(duì)本發(fā)明進(jìn)行限制,本發(fā)明應(yīng)根據(jù)所附的權(quán)利要求進(jìn)行 解釋。
權(quán)利要求
1、一種RISC處理器裝置,包括浮點(diǎn)寄存器堆,譯碼部件和浮點(diǎn)運(yùn)算部件,其特征在于,還包括控制寄存器,用于控制利用所述浮點(diǎn)寄存器堆模擬浮點(diǎn)寄存器棧操作;所述譯碼部件,包括一指針寄存器,用于維護(hù)一棧操作指針,存儲(chǔ)棧操作指針的值;所述浮點(diǎn)運(yùn)算部件,包括一指針操作模塊,用于對(duì)所述指針寄存器進(jìn)行操作,在模擬所述浮點(diǎn)寄存器棧操作時(shí),模擬所述指針寄存器的棧操作指針的棧操作,修改并監(jiān)控棧操作指針的狀態(tài)。
2、 根據(jù)權(quán)利要求1所述的RISC處理器裝置,其特征在于,所述控制模 擬浮點(diǎn)寄存器棧,是指所述控制寄存器維護(hù)一個(gè)棧使能位,當(dāng)使能位置l時(shí), 表示處理器將模擬浮點(diǎn)寄存器棧操作;當(dāng)使能位置0時(shí),表示處理器將不模擬 浮點(diǎn)寄存器棧操作。
3、 根據(jù)權(quán)利要求1所述的RISC處理器裝置,其特征在于,所述模擬浮 點(diǎn)寄存器棧,是利用RISC處理器中編號(hào)為0~31的32個(gè)浮點(diǎn)寄存器,模擬得 到的。
4、 根據(jù)權(quán)利要求1所述的RISC處理器裝置,其特征在于,所述棧操作 指針為被讀、寫、增l、減l操作的棧操作指針。
5、 根據(jù)權(quán)利要求3所述的RISC處理器裝置,其特征在于,所述利用32 個(gè)浮點(diǎn)寄存器,模擬得到浮點(diǎn)寄存器棧,是指所述控制寄存器中的棧使能位被 置l時(shí),選擇32個(gè)浮點(diǎn)寄存器中的8個(gè)寄存器,模擬X86處理器的浮點(diǎn)寄存 器棧的序號(hào)為0~7的棧寄存器。
6、 一種RISC處理器模擬浮點(diǎn)棧操作的方法,其特征在于,包括下列步驟步驟A,根據(jù)棧使能位,決定是否選定浮點(diǎn)寄存器用于模擬浮點(diǎn)寄存器棧 操作,并設(shè)置指針寄存器;步驟B,在模擬浮點(diǎn)寄存器棧操作時(shí),對(duì)指針寄存器進(jìn)行操作,模擬棧操 作指針的棧操作,修改并監(jiān)控棧操作指針的狀態(tài)。
7、 根據(jù)權(quán)利要求6所述的模擬浮點(diǎn)棧操作的方法,其特征在于,所述步驟A包括下列步驟步驟A1,在控制寄存器中選擇一位為浮點(diǎn)棧使能位;當(dāng)使能位置l時(shí), 表示模擬X86的浮點(diǎn)寄存器棧,進(jìn)行浮點(diǎn)寄存器棧操作;當(dāng)使能位置0時(shí),表示不模擬X86的浮點(diǎn)寄存器棧,不進(jìn)行浮點(diǎn)寄存器棧操作,處理器按照正 常的過程工作;步驟A2,設(shè)置一個(gè)至少3位的指針寄存器,存放棧操作指針的值。
8、 根據(jù)權(quán)利要求6或7所述的模擬浮點(diǎn)棧操作的方法,其特征在于,所 述步驟B包括下列步驟設(shè)置棧操作模式,浮點(diǎn)棧使能位置l,允許用戶模擬浮點(diǎn)寄存器棧操作。
9、 根據(jù)權(quán)利要求6或7所述的模擬浮點(diǎn)棧操作的方法,其特征在于,所 述步驟B包括下列步驟清除棧操作模式,浮點(diǎn)棧使能位置0,不允許用戶模擬浮點(diǎn)寄存器棧操作。
10、 根據(jù)權(quán)利要求6或7所述的模擬浮點(diǎn)棧操作的方法,其特征在于,所 述步驟B包括下列步驟棧操作指針值增1。
11、 根據(jù)權(quán)利要求6或7所述的模擬浮點(diǎn)棧操作的方法,其特征在于,所述步驟B包括下列步驟棧操作指針值減l。
12、 根據(jù)權(quán)利要求6或7所述的模擬浮點(diǎn)棧操作的方法,其特征在于,所述步驟B包括下列步驟讀棧操作指針值。
13、 根據(jù)權(quán)利要求6或7所述的模擬浮點(diǎn)棧操作的方法,其特征在于,所述步驟B包括下列步驟寫棧操作指針值。
全文摘要
本發(fā)明公開了一種RISC處理器裝置及其模擬浮點(diǎn)棧操作的方法。該處理器裝置包括浮點(diǎn)寄存器堆,譯碼部件和浮點(diǎn)運(yùn)算部件,還包括控制寄存器,用于控制利用所述浮點(diǎn)寄存器堆模擬浮點(diǎn)寄存器棧;所述譯碼部件,包括一指針寄存器,用于維護(hù)一棧操作指針,存儲(chǔ)棧操作指針的值;所述浮點(diǎn)運(yùn)算部件,包括一指針操作模塊,用于對(duì)所述指針寄存器進(jìn)行操作,在對(duì)模擬浮點(diǎn)寄存器棧進(jìn)行操作時(shí),模擬指針寄存器的棧指針的棧操作,修改并監(jiān)控棧指針的狀態(tài)。其提高虛擬機(jī)效率,增強(qiáng)處理器兼容性。
文檔編號(hào)G06F9/38GK101216756SQ20071030465
公開日2008年7月9日 申請(qǐng)日期2007年12月28日 優(yōu)先權(quán)日2007年12月28日
發(fā)明者李曉鈺, 瑋 段 申請(qǐng)人:中國科學(xué)院計(jì)算技術(shù)研究所