專利名稱:精簡指令集計算機處理器裝置及其數(shù)據(jù)處理方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機處理器技術(shù)領(lǐng)域,特別是涉及一種精簡指令集計算機(RISC)處理器裝置及其數(shù)據(jù)處理方法。
技術(shù)背景虛擬機是20世紀(jì)60年代IBM公司提出的概念,并且付諸實現(xiàn)。當(dāng)時主 流計算機是大型機,通過把大型機分割成多個虛擬機,利用虛擬機監(jiān)視器 (Virtual Machine Monitor, VMM)的分隔,多種不同應(yīng)用或者多個用戶可以 共享這一稀缺資源。但是,隨著硬件成本降低和計算能力的增強,以及多任務(wù)操作系統(tǒng)(OS) 的出現(xiàn),虛擬機監(jiān)視器慢慢退出歷史舞臺,微型計算機和個人計算機(PC) 大行其道。然而,由于虛擬機的強大和成功在于用戶可以訪問和利用僅僅通過指令集 的組合就可以形成的功能和設(shè)備,最近幾年,虛擬機監(jiān)視器重新成為學(xué)術(shù)界和 工業(yè)界的焦點。虛擬機監(jiān)視器為現(xiàn)代計算機系統(tǒng)的真實限制提供一種虛擬解決 方案,其變成一個強大的工具,這一工具會大大擴展現(xiàn)代計算機系統(tǒng)的能力。當(dāng)今X86架構(gòu)在很多的應(yīng)用中占據(jù)了主導(dǎo)的地位,很多大型的服務(wù)器類 的應(yīng)用都是X86架構(gòu)。精簡指令集計算機(Reduced Instruction Set Computing, RISC)架構(gòu)的微處理器為了能夠廣泛地運行服務(wù)類的應(yīng)用,實現(xiàn)與X86架構(gòu) 的兼容就成為了必要的任務(wù)。另外,現(xiàn)有X86架構(gòu)的計算機中,應(yīng)用程序更 加多樣化,很多商業(yè)軟件都是基于X86架構(gòu)的,所以RISC微處理器要想更為 廣泛地運行多樣化的應(yīng)用,也非常需要實現(xiàn)對X86的兼容。MIPS作為RISC很大的一個分支,目前有很多開源的虛擬機平臺,可以 實現(xiàn)MIPS到X86平臺的異構(gòu)支持。在MIPS架構(gòu)上用虛擬機兼容X86架構(gòu)需要考慮很多方面,其中一方面就是X86架構(gòu)中對標(biāo)志寄存器(EFLAGS)標(biāo)志位的使用。X86定點運算指令支持共6比特(Bit)的EFLAGS標(biāo)志位運算,即很多 運算指令除了產(chǎn)生數(shù)據(jù)值以外,還要產(chǎn)生標(biāo)志位,轉(zhuǎn)移指令把標(biāo)志位作為轉(zhuǎn)移 條件,實現(xiàn)指令運算。X86中標(biāo)志寄存器(EFLAGS)主要包括以下三部分內(nèi)容一、 狀態(tài)標(biāo)志(Status Flags),包括CF (進(jìn)位標(biāo)志)、PF (奇偶位)、 AF (輔助進(jìn)位)、ZF (零標(biāo)志)、SF (非負(fù)標(biāo)志)和OF (溢出)共六位;二、 DF (方向標(biāo)志)標(biāo)志,用來控制串操作指令的方向;三、 其他系統(tǒng)標(biāo)志和I/O特權(quán)域(IOPL域),這些標(biāo)志包括單步模式標(biāo) 志、中斷使能、1/0優(yōu)先級等,用戶程序不能修改這些標(biāo)志。關(guān)于標(biāo)志寄存器的第二和第三部分的內(nèi)容,MIPS64中已經(jīng)有相應(yīng)的硬件 可以實現(xiàn),但對于第一部分的內(nèi)容沒有相應(yīng)的實現(xiàn)。X86中還有一個16位的浮點標(biāo)志寄存器,其中每兩位組成一個標(biāo)志 (TAG),共8個標(biāo)志(TAG)。每個標(biāo)志(TAG)對應(yīng)一個浮點寄存器的 狀態(tài),00表示valid, 01表示zero, 10表示special, 11表示empty。由于X86 中的浮點寄存器以棧的方式組織,浮點標(biāo)志寄存器主要用于檢測浮點訪問時會 不會發(fā)生棧溢出例外。現(xiàn)有技術(shù)中,標(biāo)志寄存器第一部分的內(nèi)容,即狀態(tài)標(biāo)志(Status Flags)和 浮點標(biāo)志寄存器的MIPS到X86的異構(gòu)實現(xiàn),都沒有硬件實現(xiàn),而軟件層次的 虛擬機異構(gòu)實現(xiàn)會產(chǎn)生很大的開銷,對性能造成很大的影響。發(fā)明內(nèi)容本發(fā)明所要解決的問題在于提供一種精簡指令集計算機(RISC)處理器 裝置及其數(shù)據(jù)處理方法。其擴大虛擬機的優(yōu)化空間,達(dá)到提高虛擬機性能的目 的。為實現(xiàn)本發(fā)明而提供的一種RISC處理器裝置,包括譯碼器,物理寄存器 堆和運算部件,以及譯碼器,物理寄存器堆和運算部件之間連接的數(shù)據(jù)通路, 所述物理寄存器堆中的每個物理寄存器擴展為72位,整個數(shù)據(jù)通路統(tǒng)一擴充 為72位;所述運算部件,包括擴展運算模塊,用于當(dāng)處理器處于X86虛擬機工作模式下時,在指令運算中,對物理寄存器堆中的72位寄存器的標(biāo)志位進(jìn)行修改,并根據(jù)修改的標(biāo)志位進(jìn)行新的指令運算。所述72位的物理寄存器,包括64位的數(shù)據(jù)位部分和8位的標(biāo)志位部分。所述物理寄存器堆,包括通用寄存器和浮點寄存器。所述擴展后的通用寄存器的第64到69位共6個標(biāo)志位,由低到高分別表 示CF位、PF位、AF位、ZF位、SF位和OF位。所述擴展后的浮點寄存器的第64位作為該浮點寄存器的TAG標(biāo)志位,表 示該浮點寄存器的狀態(tài),用于檢測浮點訪問時會不會發(fā)生棧溢出例外。所述TAG位為0,則表示浮點棧此項為空,即浮點寄存器中的數(shù)值無效; 如果為1,則表示浮點寄存器中的數(shù)值有效。所述擴展運算模塊,包括通用寄存器擴展運算模塊,用于當(dāng)處理器處于 X86虛擬機工作模式下時,利用所述擴展后的通用寄存器進(jìn)行運算,并把運算 結(jié)果的數(shù)據(jù)部分和標(biāo)志部分一起寫回到經(jīng)擴展后的目標(biāo)通用寄存器中。所述譯碼器包括最新標(biāo)志位指針,用于指向與最新標(biāo)志位結(jié)合的通用寄存器。所述擴展運算模塊,包括浮點寄存器擴展運算模塊,用于當(dāng)處理器處于 X86虛擬機工作模式下時,利用所述擴展后的浮點寄存器進(jìn)行運算,并根據(jù)運 算結(jié)果改寫浮點寄存器的TAG位。為實現(xiàn)本發(fā)明目的還提供一種RISC處理器裝置的數(shù)據(jù)處理方法,包括下 列步驟步驟A,在設(shè)置RISC處理器的X86虛擬機工作模式時,物理寄存器堆中 的通用寄存器和浮點寄存器為72位物理寄存器;步驟B,在指令運算中,對物理寄存器堆中的72位寄存器的標(biāo)志位進(jìn)行 修改,并根據(jù)修改的標(biāo)志位進(jìn)行新的指令運算。所述步驟B中,對于通用寄存器而言,包括下列步驟步驟B1,擴展后的通用寄存器進(jìn)行運算時,把運算得到的結(jié)果數(shù)據(jù)部分 和標(biāo)志部分一起寫回到目標(biāo)通用寄存器;步驟B2,根據(jù)指令運算,修改最新標(biāo)志位指針,譯碼器的最新標(biāo)志位指 針指向與最新標(biāo)志位結(jié)合的通用寄存器。所述步驟B2之后還包括下列步驟步驟B3,如果一個新指令運算需要使用標(biāo)志位作為源操作數(shù),則使用最 新標(biāo)志位指針指向的通用寄存器作為該指令的源操作數(shù)。所述步驟B2中,修改最新標(biāo)志位指針,包括下列步驟1) 如果指令運算時需要改變最新標(biāo)志位,則最新標(biāo)志位指針值改變?yōu)橹赶蛟撝噶畹哪繕?biāo)寄存器;2) 如果新指令運算時不需要改變最新標(biāo)志位,但是卻把最新標(biāo)志位指針 指向的物理寄存器作為目的操作數(shù),則需要將原物理寄存器中的標(biāo)志位的值復(fù) 制到新的物理寄存器中,作為最新標(biāo)志位指針指向的通用寄存器;3) 如果指令修改全部標(biāo)志位,則修改通用寄存器中的6個標(biāo)志位,再將 最新標(biāo)志位指針指向新的通用寄存器;4) 如果指令只修改6位標(biāo)志位中的其中一位或者多位,則采用拼接的方 法把多位標(biāo)志位拼接在一起。所述步驟B中,對于浮點寄存器而言,包括下列步驟步驟B1',如果浮點運算指令使用浮點棧中的浮點寄存器進(jìn)行運算時,則需要先判斷TAG標(biāo)志位的狀態(tài),如果TAG位為O即數(shù)據(jù)無效,則引發(fā)浮點棧溢出異常;步驟B2',如果浮點運算指令判斷TAG標(biāo)志位的狀態(tài)為1即有效,則正 常執(zhí)行運算,執(zhí)行之后將目標(biāo)浮點寄存器的TAG位置為1; 所述步驟B2'之后還包括下列步驟步驟B3',使用對TAG置位的指令SETTAG使得相應(yīng)的浮點桟中項有 效或者無效。本發(fā)明的有益效果是本發(fā)明的精簡指令集計算機(RISC)處理器裝置及其數(shù)據(jù)處理方法,在MIPS架構(gòu)上對X86的標(biāo)志位和浮點棧做必要的硬件支 持,在RISC處理器上實現(xiàn)標(biāo)志寄存器6比特的標(biāo)志位運算以及防止浮點棧溢 出,實現(xiàn)與X86指令集的兼容,以擴大虛擬機的優(yōu)化空間,達(dá)到提高虛擬機 性能的目的。
圖1是本發(fā)明RISC處理器裝置結(jié)構(gòu)示意圖;圖2是本發(fā)明實施例64位物理寄存器的擴展為72位寄存器,用作通用寄 存器標(biāo)志位(EFLAGS)的支持示意圖;圖3是本發(fā)明實施例64位物理寄存器的擴展為72位寄存器,用作浮點寄 存器TAG標(biāo)志位的支持示意圖;圖4是本發(fā)明RISC處理器裝置數(shù)據(jù)處理方法流程圖。
具體實施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實 施例,對本發(fā)明的一種精簡指令集計算機(RISC)處理器裝置及其數(shù)據(jù)處理 方法進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋 本發(fā)明,并不用于限定本發(fā)明。在本發(fā)明實施例中,以精簡指令集計算機(RISC)的MIPS64指令集為例, 而對本發(fā)明的精簡指令集計算機(RISC)處理器裝置的數(shù)據(jù)處理方法進(jìn)行說 明,但應(yīng)當(dāng)說明的是,這不是對本發(fā)明的限制,本發(fā)明同樣適用于其他精簡指 令集計算機(RISC)的情況。為實現(xiàn)本發(fā)明而提供一種精簡指令集計算機(RISC)處理器裝置,如圖1 所示,包括譯碼器l、物理寄存器堆2和運算部件3,以及譯碼器l,物理寄 存器堆2和運算部件3之間連接的數(shù)據(jù)通路(數(shù)據(jù)總線)4。所述物理寄存器堆2包括通用寄存器21和浮點寄存器22。本發(fā)明實施例中,將物理寄存器堆2中的每個物理寄存器擴展為72位, 包括64位的數(shù)據(jù)位部分和8位的標(biāo)志位部分;同時,整個數(shù)據(jù)通路4 (數(shù)據(jù) 總線)包括發(fā)射通路等統(tǒng)一擴充為72位。擴展后的通用寄存器21的第64到69位共6個標(biāo)志位,由低到高分別表 示CF位、PF位、AF位、ZF位、SF位禾口OF位,如圖3所示。擴展后的浮點寄存器22的第64位作為該浮點寄存器22的TAG標(biāo)志位, 表示該浮點寄存器22的狀態(tài),如圖4所示。與X86浮點棧項映射的浮點寄存 器22的這一TAG標(biāo)志位,用于檢測浮點訪問時會不會發(fā)生棧溢出例外,其他 的浮點寄存器的TAG位不起作用。由于X86處理器中的浮點棧只有8項,所以映射0-7號共8個浮點寄存器 為浮點棧中相應(yīng)項,其他浮點寄存器的TAG位不起作用。作為一種可實施方式,如果TAG位為0,則表示空(empty),即無效; 如果為1,則表示有效(valid)。所述運算部件3,包括擴展運算模塊31,用于當(dāng)處理器處于X86虛擬機 工作模式下時,在指令運算中,對物理寄存器堆2中的72位寄存器的標(biāo)志位 進(jìn)行修改,并根據(jù)修改的標(biāo)志位進(jìn)行新的指令運算。所述擴展運算模塊31,包括通用寄存器擴展運算模塊311和浮點寄存器 擴展運算模塊312,其中所述通用寄存器擴展運算模塊311,用于當(dāng)處理器處于X86虛擬機工作模 式下時,利用所述擴展后的通用寄存器21進(jìn)行運算,并把運算得到的結(jié)果數(shù) 據(jù)部分和標(biāo)志部分一起寫回到經(jīng)擴展后的通用寄存器21中。所述浮點寄存器擴展運算模塊312,用于當(dāng)處理器處于X86虛擬機工作模 式下時,利用所述擴展后的浮點寄存器22和浮點寄存器22的TAG位進(jìn)行運 算,并根據(jù)運算結(jié)果改寫浮點寄存器22的TAG位。所述譯碼器1包括最新標(biāo)志位指針Reflagll,用于指向與最新標(biāo)志位結(jié)合 的通用寄存器21。所述最新標(biāo)志位,是指指令運算后,最后被改變的標(biāo)志位;所述與最新標(biāo) 志位結(jié)合的通用寄存器21,是指指令運算后,最后被改變的標(biāo)志位所在的通 用寄存器21。例如, 一條加指令A(yù)DD,運用第一通用寄存器和第二通用寄存 器中的值相加,結(jié)果放到第三通用寄存器中,并根據(jù)指令運算結(jié)果改變第三通 用寄存器的標(biāo)志位,則被改變的第三通用寄存器的標(biāo)志位為最新標(biāo)志位,該第 三通用寄存器為與最新標(biāo)志位結(jié)合的通用寄存器,該最新標(biāo)志位指針Reflagll 指向第三通用寄存器。下面詳細(xì)說明本發(fā)明的精簡指令集計算機(RISC)處理器裝置的數(shù)據(jù)處 理方法,包括下列步驟步驟S100,在設(shè)置RISC處理器的X86虛擬機工作模式時,設(shè)置物理寄 存器堆2中的通用寄存器21和浮點寄存器22為72位物理寄存器,包括64 位的數(shù)據(jù)位和8位的標(biāo)志位。72位的物理寄存器堆2包括64位的數(shù)據(jù)位和8位的標(biāo)志位。擴展后的通用寄存器21的第64到69位共6個標(biāo)志位,由低到高分別表 示CF位、PF位、AF位、ZF位、SF位和OF位,如圖3所示。擴展后的浮點寄存器22的第64位作為該浮點寄存器22的TAG標(biāo)志位, 表示該浮點寄存器22的狀態(tài),如圖4所示。與X86浮點棧項映射的浮點寄存 器22的這一TAG標(biāo)志位,用于檢測浮點訪問時會不會發(fā)生棧溢出例外,其他 的浮點寄存器的TAG位不起作用。作為一種可實施方式,如果TAG位為0, 則表示空(empty),即無效;如果為1,則表示有效(valid)。步驟S200,在指令運算中,對物理寄存器堆2中的72位寄存器的標(biāo)志位 進(jìn)行修改,并根據(jù)修改的標(biāo)志位進(jìn)行新的指令運算。步驟S200中,對于通用寄存器21而言,包括下列步驟-步驟S210,擴展后的通用寄存器21進(jìn)行運算時,把運算得到的結(jié)果數(shù)據(jù) 部分和標(biāo)志部分一起寫回到目標(biāo)通用寄存器21;步驟S220,根據(jù)指令運算,修改最新標(biāo)志位指針Reflagll,譯碼器1的 最新標(biāo)志位指針Reflagll指向與最新標(biāo)志位結(jié)合的通用寄存器21;根據(jù)不同的指令,最新標(biāo)志位指針Reflagll有不同的修改方法A) 如果指令運算時需要改變最新標(biāo)志位,則最新標(biāo)志位指針Reflagll值 改變?yōu)橹赶蛟撝噶畹哪繕?biāo)寄存器;B) 如果新指令運算時不需要改變最新標(biāo)志位,但是卻把最新標(biāo)志位指針 Reflagll指向的物理寄存器作為目的操作數(shù),則需要將原物理寄存器中的標(biāo)志 位的值復(fù)制到新的物理寄存器中,作為最新標(biāo)志位指針Reflagsll指向的通用 寄存器21;C) 如果指令修改全部標(biāo)志位,則修改通用寄存器21中的6個標(biāo)志位, 再將最新標(biāo)志位指針Reflagsl 1指向新的通用寄存器21;D) 如果指令只修改6位標(biāo)志位中的其中一位或者多位,則采用拼接的方 法把多位標(biāo)志位拼接在一起,例如and邏輯與指令只修改OF、 CF、 SF、 ZF 和PF標(biāo)志,那么就在目標(biāo)寄存器中修改這5位,再把最新標(biāo)志位的指針Reflag 指向的寄存器中的AF標(biāo)志位復(fù)制到新的目標(biāo)寄存器中拼接即可。步驟S230,如果一個新指令運算需要使用標(biāo)志位作為源操作數(shù),則使用 最新標(biāo)志位指針Reflagll的指向的通用寄存器21作為該指令的源操作數(shù)。對于根據(jù)通用寄存器21的標(biāo)志位進(jìn)行跳轉(zhuǎn)和運算的指令,在運算部件3 執(zhí)行的時候可以直接讀取最新標(biāo)志位指針Reflagll所指向的72位擴展寄存器 中的高8位,得到標(biāo)志位的值作為源;對于直接運算得到通用寄存器21的標(biāo) 志位的指令,將運算得到的標(biāo)志位寫入到目標(biāo)寄存器的擴展高8位中。例如,本發(fā)明實施例中,根據(jù)通用寄存器的標(biāo)志位進(jìn)行運算和直接運算得 到通用寄存器的標(biāo)志位的值,例如加法指令,它執(zhí)行MIPS指令集的加法操作, 但是在計算加法結(jié)果并存入目標(biāo)寄存器的同時,還要根據(jù)結(jié)果的值修改目標(biāo)寄 存器的高6位標(biāo)志位值;例如,根據(jù)通用寄存器的標(biāo)志位中的一位或者多位進(jìn)行分支跳轉(zhuǎn)指令,則 根據(jù)標(biāo)志位的一位或者是幾位進(jìn)行或跳轉(zhuǎn)。步驟S200中,對于浮點寄存器22而言,包括下列步驟步驟S210',如果浮點運算指令使用浮點棧中的浮點寄存器進(jìn)行運算時,則需要先判斷TAG標(biāo)志位的狀態(tài),如果TAG位為0即數(shù)據(jù)無效,則引發(fā)浮點棧溢出異常;步驟S220',如果浮點運算指令判斷TAG標(biāo)志位的狀態(tài)為1即有效,則 正常執(zhí)行運算,執(zhí)行之后將目標(biāo)浮點寄存器的TAG位置為1; 所述步驟S220'之后還可以包括下列步驟步驟S230',使用對TAG置位的指令SETTAG使得相應(yīng)的浮點棧中項 有效或者無效。作為一種可實施方式,SETTAG指令格式如下 SETTAG ft imm該指令設(shè)置浮點寄存器ft的TAG位為imm值,當(dāng)imm為0時表示相應(yīng) 的浮點寄存器中的數(shù)值無效,當(dāng)imm為1時表示相應(yīng)的浮點寄存器中的數(shù)值 有效。由于X86處理器中的浮點棧只有8項,所以ft在0到7之間,如果是序 號大于8的浮點寄存器使用這條指令,則不起任何作用。如果沒有寄存器的擴展,那么現(xiàn)有結(jié)構(gòu)如果要實現(xiàn)物理寄存器的標(biāo)志位 (EFLAGS),每條計算得到物理寄存器的標(biāo)志位的指令都要被翻譯成很多條 指令來實現(xiàn),其中包括首先計算得到結(jié)果,再根據(jù)結(jié)果的值進(jìn)行各種運算,以求得各個標(biāo)志位的值,并把這個標(biāo)志值保存起來(或者保存在寄存器中,或 者保存在內(nèi)存里,如果保存在寄存器中,那么其它指令在使用該寄存器的時候, 需要將這個值存入內(nèi)存中,再使用時再從內(nèi)存中恢復(fù)),這樣做必然增加了很多不必要的開銷。而本發(fā)明的精簡指令集計算機(RISC)處理器裝置及其數(shù) 據(jù)處理方法,在MIPS架構(gòu)上對X86的物理寄存器做必要的硬件支持,以擴大 虛擬機的優(yōu)化空間,達(dá)到提高虛擬機性能的目的。通過結(jié)合附圖對本發(fā)明具體實施例的描述,本發(fā)明的其它方面及特征對本 領(lǐng)域的技術(shù)人員而言是顯而易見的。本發(fā)明的精簡指令集計算機(RISC)處理器裝置及其數(shù)據(jù)處理方法,在 MIPS架構(gòu)上對X86的標(biāo)志寄存器(EFLAGS)做必要的硬件支持,以擴大虛 擬機的優(yōu)化空間,達(dá)到提高虛擬機性能的目的。以上對本發(fā)明的具體實施例進(jìn)行了描述和說明,這些實施例應(yīng)被認(rèn)為其只 是示例性的,并不用于對本發(fā)明進(jìn)行限制,本發(fā)明應(yīng)根據(jù)所附的權(quán)利要求進(jìn)行 解釋。
權(quán)利要求
1、一種RISC處理器裝置,包括譯碼器,物理寄存器堆和運算部件,以及譯碼器,物理寄存器堆和運算部件之間連接的數(shù)據(jù)通路,其特征在于,所述物理寄存器堆中的每個物理寄存器擴展為72位,整個數(shù)據(jù)通路統(tǒng)一擴充為72位;所述運算部件,包括擴展運算模塊,用于當(dāng)處理器處于X86虛擬機工作模式下時,在指令運算中,對物理寄存器堆中的72位寄存器的標(biāo)志位進(jìn)行修改,并根據(jù)修改的標(biāo)志位進(jìn)行新的指令運算。
2、 根據(jù)權(quán)利要求1所述的RISC處理器裝置,其特征在于,所述72位的 物理寄存器,包括64位的數(shù)據(jù)位部分和8位的標(biāo)志位部分。
3、 根據(jù)權(quán)利要求2所述的RISC處理器裝置,其特征在于,所述物理寄 存器堆,包括通用寄存器和浮點寄存器。
4、 根據(jù)權(quán)利要求3所述的RISC處理器裝置,其特征在于,所述擴展后 的通用寄存器的第64到69位共6個標(biāo)志位,由低到高分別表示CF位、PF 位、AF位、ZF位、SF位和OF位。
5、 根據(jù)權(quán)利要求3所述的RISC處理器裝置,其特征在于,所述擴展后 的浮點寄存器的第64位作為該浮點寄存器的TAG標(biāo)志位,表示該浮點寄存器 的狀態(tài),用于檢測浮點訪問時會不會發(fā)生棧溢出例外。
6、 根據(jù)權(quán)利要求5所述的RISC處理器裝置,其特征在于,所述TAG位 為0,則表示浮點棧此項為空,即浮點寄存器中的數(shù)值無效;如果為1,則表 示浮點寄存器中的數(shù)值有效。
7、 根據(jù)權(quán)利要求1所述的RISC處理器裝置,其特征在于,所述擴展運 算模塊,包括通用寄存器擴展運算模塊,用于當(dāng)處理器處于X86虛擬機工作 模式下時,利用所述擴展后的通用寄存器進(jìn)行運算,并把運算結(jié)果的數(shù)據(jù)部分 和標(biāo)志部分一起寫回到經(jīng)擴展后的目標(biāo)通用寄存器中。
8、 根據(jù)權(quán)利要求7所述的RISC處理器裝置,其特征在于,所述譯碼器 包括最新標(biāo)志位指針,用于指向與最新標(biāo)志位結(jié)合的通用寄存器。
9、 根據(jù)權(quán)利要求1所述的RISC處理器裝置,其特征在于,所述擴展運 算模塊,包括浮點寄存器擴展運算模塊,用于當(dāng)處理器處于X86虛擬機工作模式下時,利用所述擴展后的浮點寄存器進(jìn)行運算,并根據(jù)運算結(jié)果改寫浮點寄存器的TAG位。
10、 一種RISC處理器裝置的數(shù)據(jù)處理方法,其特征在于,包括下列步驟:步驟A,在設(shè)置RISC處理器的X86虛擬機工作模式時,設(shè)置物理寄存器 堆中的通用寄存器和浮點寄存器為72位物理寄存器;步驟B,在指令運算中,對物理寄存器堆中的72位寄存器的標(biāo)志位進(jìn)行 修改,并根據(jù)修改的標(biāo)志位進(jìn)行新的指令運算。
11. 根據(jù)權(quán)利要求10所述的RISC處理器裝置的數(shù)據(jù)處理方法,其特征 在于,所述步驟B中,對于通用寄存器而言,包括下列步驟步驟Bl,擴展后的通用寄存器進(jìn)行運算時,把運算得到的結(jié)果數(shù)據(jù)部分 和標(biāo)志部分一起寫回到目標(biāo)通用寄存器;步驟B2,根據(jù)指令運算,修改最新標(biāo)志位指針,譯碼器的最新標(biāo)志位指 針指向與最新標(biāo)志位結(jié)合的通用寄存器。
12、 根據(jù)權(quán)利要求11所述的RISC處理器裝置的數(shù)據(jù)處理方法,其特征 在于,所述步驟B2之后還包括下列步驟步驟B3,如果一個新指令運算需要使用標(biāo)志位作為源操作數(shù),則使用最 新標(biāo)志位指針指向的通用寄存器作為該指令的源操作數(shù)。
13、 根據(jù)權(quán)利要求11或12所述的RISC處理器裝置的數(shù)據(jù)處理方法,其 特征在于,所述步驟B2中,修改最新標(biāo)志位指針,包括下列步驟1) 如果指令運算時需要改變最新標(biāo)志位,則最新標(biāo)志位指針值改變?yōu)橹?向該指令的目標(biāo)寄存器;2) 如果新指令運算時不需要改變最新標(biāo)志位,但是卻把最新標(biāo)志位指針 指向的物理寄存器作為目的操作數(shù),則需要將原物理寄存器中的標(biāo)志位的值復(fù) 制到新的物理寄存器中,作為最新標(biāo)志位指針指向的通用寄存器;3) 如果指令修改全部標(biāo)志位,則修改通用寄存器中的6個標(biāo)志位,再將 最新標(biāo)志位指針指向新的通用寄存器;4) 如果指令只修改6位標(biāo)志位中的其中一位或者多位,則采用拼接的方 法把多位標(biāo)志位拼接在一起。
14、 根據(jù)權(quán)利要求10所述的RISC處理器裝置的數(shù)據(jù)處理方法,其特征 在于,所述步驟B中,對于浮點寄存器而言,包括下列步驟步驟Br ,如果浮點運算指令使用浮點棧中的浮點寄存器進(jìn)行運算時,則需要先判斷TAG標(biāo)志位的狀態(tài),如果TAG位為O即數(shù)據(jù)無效,則引發(fā)浮點 棧溢出異常;步驟B2',如果浮點運算指令判斷TAG標(biāo)志位的狀態(tài)為1即有效,則正 常執(zhí)行運算,執(zhí)行之后將目標(biāo)浮點寄存器的TAG位置為1。
15、根據(jù)權(quán)利要求14所述的RISC處理器裝置的數(shù)據(jù)處理方法,其特征 在于,所述步驟B2'后還包括下列步驟步驟B3',使用對TAG置位的指令SETTAG使得相應(yīng)的浮點棧中項有 效或者無效。
全文摘要
本發(fā)明公開了一種精簡指令集計算機(RISC)處理器裝置及其數(shù)據(jù)處理方法。該裝置包括譯碼器,物理寄存器堆和運算部件,以及譯碼器,物理寄存器堆和運算部件之間連接的數(shù)據(jù)通路,所述物理寄存器堆中的每個物理寄存器擴展為72位,整個數(shù)據(jù)通路統(tǒng)一擴充為72位;所述運算部件,包括擴展運算模塊,用于在指令運算中,對物理寄存器堆中的72位寄存器的標(biāo)志位進(jìn)行修改,并根據(jù)修改的標(biāo)志位進(jìn)行新的指令運算。其擴大虛擬機的優(yōu)化空間,達(dá)到提高虛擬機性能的目的。
文檔編號G06F9/38GK101221496SQ20081005666
公開日2008年7月16日 申請日期2008年1月23日 優(yōu)先權(quán)日2008年1月23日
發(fā)明者李曉鈺, 蔡嵩松 申請人:中國科學(xué)院計算技術(shù)研究所