亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

用于虛擬機(jī)管理器獲取異常指令的裝置和控制方法

文檔序號:6492115閱讀:215來源:國知局
用于虛擬機(jī)管理器獲取異常指令的裝置和控制方法【專利摘要】本發(fā)明涉及虛擬機(jī)系統(tǒng)中虛擬機(jī)管理器對異常指令的獲取,具體地,涉及用于虛擬機(jī)管理器獲取異常指令的裝置和控制方法。提供一種用于虛擬機(jī)管理器獲取異常指令的裝置(300)和控制方法,其中,所述虛擬機(jī)管理器(220)在包含中央處理器CPU(212)的物理機(jī)(210)和虛擬機(jī)(230)之間運行,所述裝置包含:內(nèi)容可尋址存儲器CAM(330);虛擬機(jī)管理器可訪問的專用寄存器SPR(350);以及控制邏輯電路(310),控制邏輯電路(310),具有CPU相連的輸入端和與CAM相連的輸出端,輸入端接收分別來自CPU指令流水線的取指階段和寫回階段的數(shù)據(jù),輸出端使來自CPU指令流水線的取指階段的指令被存儲到CAM,并觸發(fā)CAM將其中存儲的屬于異常指令的指令輸出到SPR?!緦@f明】用于虛擬機(jī)管理器獲取異常指令的裝置和控制方法【
技術(shù)領(lǐng)域
】[0001]本發(fā)明涉及虛擬機(jī)系統(tǒng),更具體地,涉及虛擬機(jī)系統(tǒng)中虛擬機(jī)管理器對異常指令的獲取?!?br>背景技術(shù)
】[0002]在大多數(shù)環(huán)境中,諸如服務(wù)器、桌面、甚至嵌入式系統(tǒng)中,虛擬化技術(shù)已經(jīng)變得越來越普遍。虛擬化技術(shù)提供多種益處,包括IT優(yōu)化、靈活的資源管理等。一般來說,虛擬化是一種寬泛的概念,其通常與真實(物理)數(shù)據(jù)處理資源的分區(qū)有關(guān);即,使單個數(shù)據(jù)處理資源,例如服務(wù)器、數(shù)據(jù)存儲設(shè)備、操作系統(tǒng)或應(yīng)用看起來充當(dāng)多個邏輯或虛擬資源的作用。這個概念足夠?qū)捯灾劣谶€包括真實數(shù)據(jù)處理器資源的聚集;即,使多個物理資源,例如服務(wù)器或數(shù)據(jù)存儲設(shè)備看起來是單個邏輯資源。在虛擬化環(huán)境中,在硬件和虛擬機(jī)的操作系統(tǒng)之間運行著虛擬機(jī)管理器(Hypervisor)或虛擬機(jī)監(jiān)控器(VMM,VirtualMachineMonitor)。虛擬機(jī)管理器在管理虛擬機(jī)軟件的執(zhí)行和共享主機(jī)硬件資源(hosthardwareresources)等方面起著重要的作用。虛擬機(jī)管理器的一個功能,是在硬件發(fā)出異常中斷時,識別異常中斷的原因,并進(jìn)行相應(yīng)的處理,例如模擬(emulate)導(dǎo)致異常中斷的、來自虛擬機(jī)的指令,即異常指令(faultinginstruction)。為此,虛擬機(jī)管理器首先需要定位到異常指令?,F(xiàn)有技術(shù)中,虛擬機(jī)管理器是通過在不同的地址空間的地址映射定位異常指令的,這種方式效率不高。【
發(fā)明內(nèi)容】[0003]針對現(xiàn)有技術(shù)的狀況,本發(fā)明的一個目的是改進(jìn)虛擬機(jī)管理器獲得異常指令的方式。[0004]一方面,提供一種用于虛擬機(jī)管理器獲取異常指令的裝置(300),其中,所述虛擬機(jī)管理器(220)在包含中央處理器CPU(212)的物理機(jī)(210)和虛擬機(jī)(230)之間運行,所述裝置包含:內(nèi)容可尋址存儲器CAM(330);虛擬機(jī)管理器可訪問的專用寄存器SPR(350);以及控制邏輯電路(310),具有CPU相連的輸入端和與CAM相連的輸出端,輸入端接收分別來自CPU指令流水線的取指階段和寫回階段的數(shù)據(jù),輸出端使來自CPU指令流水線的取指階段的指令被存儲到CAM,并觸發(fā)CAM將其中存儲的屬于異常指令的指令輸出到SPR。[0005]另一方面,提供一種用于虛擬機(jī)管理器獲取異常指令的控制方法,其中,所述虛擬機(jī)管理器(220)在包含中央處理器CPU(212)的物理機(jī)(210)和虛擬機(jī)(230)之間運行,所述控制方法包含:使來自CPU指令流水線的取指階段的指令被存儲到內(nèi)容可尋址存儲器;根據(jù)CPU指令流水線的寫回階段產(chǎn)生的結(jié)果,觸發(fā)CAM將其中存儲的屬于異常指令的指令輸出到虛擬機(jī)管理器可訪問的專用寄存器。[0006]再一方面,提供與上述用于虛擬機(jī)管理器獲取異常指令的控制方法相應(yīng)的用于虛擬機(jī)管理器獲取異常指令的控制裝置?!緦@綀D】【附圖說明】[0007]通過結(jié)合附圖對本公開示例性實施方式進(jìn)行更詳細(xì)的描述,本公開的上述以及其它目的、特征和優(yōu)勢將變得更加明顯,其中,在本公開示例性實施方式中,相同的參考標(biāo)號通常代表相同部件。[0008]圖1示出了適于用來實現(xiàn)本發(fā)明實施方式的示例性計算系統(tǒng)100的框圖;[0009]圖2A是表示適于實現(xiàn)本發(fā)明實施例的虛擬化環(huán)境的示意圖;[0010]圖2B示意性表示處理器的指令流水線;[0011]圖3A示意性表示按照本發(fā)明一個實施例的裝置的框圖;[0012]圖3B是進(jìn)一步例示按照本發(fā)明一個實施例的裝置的框圖;[0013]圖3C示意性表示按照本發(fā)明一個實施例的裝置的局部結(jié)構(gòu)的框圖;[0014]圖3D-3F示意性地表示對按照本發(fā)明實施例的裝置的操作;[0015]圖4A-4C示意性表示按照本發(fā)明實施例的控制方法的流程圖;以及[0016]圖5A-5C示意性表示按照本發(fā)明實施例的控制裝置的框圖圖。【具體實施方式】[0017]下面將參照附圖更詳細(xì)地描述本公開的優(yōu)選實施方式。雖然附圖中顯示了本公開的優(yōu)選實施方式,然而應(yīng)該理解,可以以各種形式實現(xiàn)本公開而不應(yīng)被這里闡述的實施方式所限制。相反,提供這些實施方式是為了使本公開更加透徹和完整,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。[0018]圖1示出了適于用來實現(xiàn)本發(fā)明實施方式的示例性計算系統(tǒng)100的框圖。如圖1所示,計算機(jī)系統(tǒng)100可以包括:CPU(中央處理單元)101、RAM(隨機(jī)存取存儲器)102、ROM(只讀存儲器)103、系統(tǒng)總線104、硬盤控制器105、鍵盤控制器106、串行接口控制器107、并行接口控制器108、顯示控制器109、硬盤110、鍵盤111、串行外部設(shè)備112、并行外部設(shè)備113和顯示器114。在這些設(shè)備中,與系統(tǒng)總線104耦合的有CPUlOl、RAM102,ROM103、硬盤控制器105、鍵盤控制器106、串行控制器107、并行控制器108和顯示控制器109。硬盤110與硬盤控制器105耦合,鍵盤111與鍵盤控制器106耦合,串行外部設(shè)備112與串行接口控制器107耦合,并行外部設(shè)備113與并行接口控制器108耦合,以及顯示器114與顯示控制器109耦合。應(yīng)當(dāng)理解,圖1所述的結(jié)構(gòu)框圖僅僅是為了示例的目的,而不是對本發(fā)明范圍的限制。在某些情況下,可以根據(jù)具體情況增加或減少某些設(shè)備。[0019]所屬【
技術(shù)領(lǐng)域
】的技術(shù)人員知道,本發(fā)明可以實現(xiàn)為系統(tǒng)、方法或計算機(jī)程序產(chǎn)品。因此,本公開可以具體實現(xiàn)為以下形式,即:可以是完全的硬件、也可以是完全的軟件(包括固件、駐留軟件、微代碼等),還可以是硬件和軟件結(jié)合的形式,本文一般稱為“電路”、“模塊”或“系統(tǒng)”。此外,在一些實施例中,本發(fā)明還可以實現(xiàn)為在一個或多個計算機(jī)可讀介質(zhì)中的計算機(jī)程序產(chǎn)品的形式,該計算機(jī)可讀介質(zhì)中包含計算機(jī)可讀的程序代碼。[0020]可以采用一個或多個計算機(jī)可讀的介質(zhì)的任意組合。計算機(jī)可讀介質(zhì)可以是計算機(jī)可讀信號介質(zhì)或者計算機(jī)可讀存儲介質(zhì)。計算機(jī)可讀存儲介質(zhì)例如可以是一但不限于——電、磁、光、電磁、紅外線、或半導(dǎo)體的系統(tǒng)、裝置或器件,或者任意以上的組合。計算機(jī)可讀存儲介質(zhì)的更具體的例子(非窮舉的列表)包括:具有一個或多個導(dǎo)線的電連接、便攜式計算機(jī)磁盤、硬盤、隨機(jī)存取存儲器(RAM)、只讀存儲器(ROM)、可擦式可編程只讀存儲器(EPROM或閃存)、光纖、便攜式緊湊磁盤只讀存儲器(CD-ROM)、光存儲器件、磁存儲器件、或者上述的任意合適的組合。在本文件中,計算機(jī)可讀存儲介質(zhì)可以是任何包含或存儲程序的有形介質(zhì),該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用。[0021]計算機(jī)可讀的信號介質(zhì)可以包括在基帶中或者作為載波一部分傳播的數(shù)據(jù)信號,其中承載了計算機(jī)可讀的程序代碼。這種傳播的數(shù)據(jù)信號可以采用多種形式,包括——但不限于——電磁信號、光信號或上述的任意合適的組合。計算機(jī)可讀的信號介質(zhì)還可以是計算機(jī)可讀存儲介質(zhì)以外的任何計算機(jī)可讀介質(zhì),該計算機(jī)可讀介質(zhì)可以發(fā)送、傳播或者傳輸用于由指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用的程序。[0022]計算機(jī)可讀介質(zhì)上包含的程序代碼可以用任何適當(dāng)?shù)慕橘|(zhì)傳輸,包括一但不限于一無線、電線、光纜、RF等等,或者上述的任意合適的組合。[0023]可以以一種或多種程序設(shè)計語言或其組合來編寫用于執(zhí)行本發(fā)明操作的計算機(jī)程序代碼,所述程序設(shè)計語言包括面向?qū)ο蟮某绦蛟O(shè)計語言-諸如Java、Smalltalk、C++,還包括常規(guī)的過程式程序設(shè)計語言-諸如”C”語言或類似的程序設(shè)計語言。程序代碼可以完全地在用戶計算機(jī)上執(zhí)行、部分地在用戶計算機(jī)上執(zhí)行、作為一個獨立的軟件包執(zhí)行、部分在用戶計算機(jī)上部分在遠(yuǎn)程計算機(jī)上執(zhí)行、或者完全在遠(yuǎn)程計算機(jī)或服務(wù)器上執(zhí)行。在涉及遠(yuǎn)程計算機(jī)的情形中,遠(yuǎn)程計算機(jī)可以通過任意種類的網(wǎng)絡(luò)一包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)-連接到用戶計算機(jī),或者,可以連接到外部計算機(jī)(例如利用因特網(wǎng)服務(wù)提供商來通過因特網(wǎng)連接)。[0024]下面將參照本發(fā)明實施例的方法、裝置(系統(tǒng))和計算機(jī)程序產(chǎn)品的流程圖和/或框圖描述本發(fā)明。應(yīng)當(dāng)理解,流程圖和/或框圖的每個方框以及流程圖和/或框圖中各方框的組合,都可以由計算機(jī)程序指令實現(xiàn)。這些計算機(jī)程序指令可以提供給通用計算機(jī)、專用計算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機(jī)器,這些計算機(jī)程序指令通過計算機(jī)或其它可編程數(shù)據(jù)處理裝置執(zhí)行,產(chǎn)生了實現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的裝置。[0025]也可以把這些計算機(jī)程序指令存儲在能使得計算機(jī)或其它可編程數(shù)據(jù)處理裝置以特定方式工作的計算機(jī)可讀介質(zhì)中,這樣,存儲在計算機(jī)可讀介質(zhì)中的指令就產(chǎn)生出一個包括實現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的指令裝置(Instructionmeans)的制造品(manufacture)。[0026]也可以把計算機(jī)程序指令加載到計算機(jī)、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備上,使得在計算機(jī)、其它可編程數(shù)據(jù)處理裝置或其它設(shè)備上執(zhí)行一系列操作步驟,以產(chǎn)生計算機(jī)實現(xiàn)的過程,從而使得在計算機(jī)或其它可編程裝置上執(zhí)行的指令能夠提供實現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的過程。[0027]附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個實施例的系統(tǒng)、方法和計算機(jī)程序產(chǎn)品的可能實現(xiàn)的體系架構(gòu)、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個或多個用于實現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當(dāng)注意,在有些作為替換的實現(xiàn)中,方框中所標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或操作的專用的基于硬件的系統(tǒng)來實現(xiàn),或者可以用專用硬件與計算機(jī)指令的組合來實現(xiàn)。[0028]圖1所示的計算機(jī)系統(tǒng)100,可以用來實現(xiàn)本發(fā)明涉及的虛擬化環(huán)境中的處理器。本發(fā)明的用于虛擬機(jī)獲取異常指令的處理,也可以在圖1所示的計算機(jī)系統(tǒng)100上執(zhí)行。[0029]本發(fā)明的總體構(gòu)思,是通過適當(dāng)設(shè)置的硬件來實現(xiàn)虛擬化環(huán)境中的虛擬機(jī)管理器對異常指令的快速獲取。[0030]下面參照附圖,說明本發(fā)明的各種實施方式。[0031]首先參看圖2A,該圖示意性地表示適于在其中實現(xiàn)本發(fā)明實施例的虛擬化環(huán)境的框圖。[0032]如圖2A所示的虛擬化環(huán)境200,包含硬件(以下稱為“物理機(jī)”)210、虛擬機(jī)管理器(Hypervisor)220和虛擬機(jī)(VM)230。物理機(jī)210包含至少一個處理器(CPU)212,例如IBM公司的RISC架構(gòu)的PowerPC,此外,還可以包含其它硬件資源,例如計算機(jī)存儲介質(zhì)(未予示出)、輸入/輸出接口(未予示出)等等。虛擬化環(huán)境可以提供多個共享物理機(jī)210的硬件資源的虛擬機(jī),每個虛擬機(jī)230包括其自己的操作系統(tǒng)以及其自己的應(yīng)用。[0033]虛擬機(jī)管理器220在物理機(jī)210和虛擬機(jī)230的操作系統(tǒng)(OS)之間運行。典型的虛擬機(jī)管理器例如包括KVM和Xen。在物理機(jī)上執(zhí)行來自虛擬機(jī)230的指令時,常常發(fā)生異常的情況。例如,某個虛擬機(jī)發(fā)出一個關(guān)機(jī)(HaIt)指令。假若物理機(jī)真的執(zhí)行這條指令,結(jié)果將是物理機(jī)被關(guān)掉,其它虛擬機(jī)將不能運行。這樣的指令,對于虛擬機(jī)來說,屬于異常指令(faultinginstruction)。物理機(jī)210的中央處理器(CPU)212并不直接執(zhí)行這樣的指令,而是發(fā)出一個異常(exception)中斷,通知虛擬機(jī)管理器做相應(yīng)的處理。虛擬機(jī)管理器對異常中斷作出的響應(yīng),是識別異常中斷的原因,并進(jìn)行相應(yīng)的處理,例如模擬執(zhí)行這樣的指令,例如關(guān)機(jī)指令,以僅僅關(guān)掉發(fā)出關(guān)機(jī)指令的虛擬機(jī)。[0034]在識別異常中斷的原因并進(jìn)行相應(yīng)的處理之前,虛擬機(jī)管理器需要獲得異常指令。獲得異常指令的過程通常如下:[0035]-從虛擬機(jī)管理器維護(hù)的虛擬機(jī)狀態(tài)數(shù)據(jù)結(jié)構(gòu)中獲得虛擬機(jī)異常指令的虛擬地址GVA(GuestVirtualAddress),例如程序計數(shù)器值和進(jìn)程標(biāo)識符;[0036]-按照虛擬機(jī)的頁表(pagetable),將虛擬機(jī)的虛擬地址轉(zhuǎn)換為虛擬機(jī)物理地址GPA(GuestPhysicalAddress);[0037]-按照虛擬機(jī)管理器的內(nèi)存管理機(jī)制將虛擬機(jī)物理地址轉(zhuǎn)換為主機(jī)虛擬地址(HostVirtualAddress);[0038]-用操作系統(tǒng)內(nèi)核或者虛擬機(jī)管理提供接口函數(shù),例如Linux下的copy_from_userO函數(shù),在主機(jī)虛擬地址處提取異常指令。[0039]在上述過程中,在從主機(jī)虛擬地址處提取異常指令時,還可能觸發(fā)另外的異常,例如新的頁面錯誤或者數(shù)據(jù)TLB缺失異常。[0040]由上可見,虛擬機(jī)管理器獲得異常指令的過程,需要多次地址轉(zhuǎn)換,需要在虛擬機(jī)、物理機(jī)、虛擬機(jī)管理器的不同的地址空間之間進(jìn)行切換,頻繁的異常中斷,不但給虛擬機(jī)管理器帶來負(fù)擔(dān),而且會導(dǎo)致嚴(yán)重的延遲。[0041]發(fā)明人設(shè)想,虛擬機(jī)管理器為了避免上述復(fù)雜操作,可以直接利用CPU212在指令流水線的取指階段獲取的指令。[0042]圖2B示意性表示處理器的指令流水線。[0043]所屬【
技術(shù)領(lǐng)域
】的技術(shù)人員知道,高性能的處理器幾乎都采用指令流水線。圖2B所示的,是典型的RISC指令流水線。圖中示出了5個指令流水線,每個指令流水線分為五個階段(stage):取指(IF)、譯碼(ID)、執(zhí)行(EX)、存儲器存取(MEM)和寫回(WB)0[0044]階段1:取指階段,根據(jù)程序計數(shù)器(ProgramCounter)值和進(jìn)程標(biāo)識符PID(Processldentifier),取得下一條要執(zhí)行的指令。[0045]階段2:譯碼階段,將在取指階段取得的指令譯碼成機(jī)器可執(zhí)行的代碼。[0046]階段3:執(zhí)行階段,執(zhí)行譯碼后的指令代碼。[0047]階段4:存儲器存取階段,根據(jù)對指令代碼的執(zhí)行對存儲器進(jìn)行相應(yīng)的讀寫操作。[0048]階段5:寫回階段,產(chǎn)生對指令的執(zhí)行的結(jié)果。對于異常指令,寫回階段的結(jié)果中包含指示異常指令的標(biāo)志、以及異常指令的上下文,例如,寫回階段產(chǎn)生表示當(dāng)前指令屬于異常指令的中斷信號,寫回階段對應(yīng)的機(jī)器狀態(tài)寄存器中,則保留著該指令對應(yīng)的程序計數(shù)器值和進(jìn)程標(biāo)識符。[0049]在現(xiàn)有的指令流水線設(shè)計中,取指階段取得的指令,在譯碼階段后就被丟棄。虛擬機(jī)管理器220即使在寫回階段得到出現(xiàn)了異常指令的通知,也無法從指令流水線中直接獲得該異常指令。[0050]發(fā)明人設(shè)想,在不改變CPU的指令流水線體系結(jié)構(gòu)的情況下,可以通過適當(dāng)配置的硬件,保存原本被指令流水線丟棄的指令,并在寫回階段識別出所保存的指令中的異常指令,供虛擬機(jī)管理機(jī)直接讀取。[0051]參看圖3A,該圖表示按照本發(fā)明一個實施例的用于虛擬機(jī)管理器獲取異常指令的裝置300的框圖。[0052]如圖所示,所述虛擬機(jī)管理器220在包含中央處理器(CPU)212的物理機(jī)210和虛擬機(jī)230之間運行。裝置300包含一個內(nèi)容可尋址存儲器(CAM,contentaddressablememory)330、一個虛擬機(jī)管理器220可訪問的專用寄存器(SPR)350以及一個控制邏輯電路310.??刂七壿嬰娐肪哂蠧PU相連的輸入端和與CAM相連的輸出端,輸入端接收分別來自CPU指令流水線的取指階段和寫回階段的數(shù)據(jù),輸出端使來自CPU指令流水線的取指階段的指令被存儲到CAM,并觸發(fā)CAM將其中存儲的屬于異常指令的指令輸出到SPR。[0053]所屬【
技術(shù)領(lǐng)域
】的技術(shù)人員知道,內(nèi)容可尋址存儲器CAM(Content-AddressableMemory)是一種以內(nèi)容進(jìn)行尋址的特殊的存儲陣列。CAM的工作模式,包括寫入模式和基本操作模式。在寫入模式下,可以在CAM中寫入數(shù)據(jù)。在基本操作模式下,CAM讀取輸入數(shù)據(jù)并將輸入數(shù)據(jù)(亦稱“輸入索引值”)與存儲在CAM中的數(shù)據(jù)自動同時進(jìn)行比較,判別該輸入數(shù)據(jù)與CAM中存儲的數(shù)據(jù)是否相匹配,并輸出與匹配的數(shù)據(jù)對應(yīng)信息。[0054]如前文所述,CPU指令流水線的取指階段,取得下一條要執(zhí)行的指令,所取得的指令將被傳送到譯碼階段??刂七壿嬰娐?10可以獲取指階段取得的指令,同時獲取該指令的唯一性指令標(biāo)識。進(jìn)一步,控制邏輯電路310可以使CAM進(jìn)入寫入模式,將所獲取的指令和指令標(biāo)識相關(guān)聯(lián)地存儲到CAM中。[0055]在CPU指令流水線的寫回階段,控制邏輯電路310也可以獲取當(dāng)前指令的標(biāo)識,控制邏輯電路310也可以根據(jù)寫回階段產(chǎn)生的結(jié)果,判斷當(dāng)前指令是不是異常指令。如果是異常指令,則可以控制CAM330進(jìn)入基本操作模式,并以當(dāng)前指令的標(biāo)識作為CAM的輸入索引值。CAM將當(dāng)前指令的標(biāo)識與存儲在CAM中的指令標(biāo)識自動進(jìn)行比較,將與當(dāng)前指令的標(biāo)識匹配的指令標(biāo)識對應(yīng)的指令,即異常指令,輸出到SPR350。[0056]控制邏輯電路的上述功能,完全可以通過硬件邏輯元件的組合而實現(xiàn)。[0057]由于SPR350是虛擬機(jī)管理器220可訪問的,在寫回階段指示出現(xiàn)異常指令時,使虛擬機(jī)管理器220直接讀取SPR,就能直接獲得異常指令。在本發(fā)明的基礎(chǔ)上,所屬【
技術(shù)領(lǐng)域
】的技術(shù)人員不難通過編程的方法對已有虛擬機(jī)管理器進(jìn)行適當(dāng)?shù)脑O(shè)置,使虛擬機(jī)管理器能從SPR直接獲得異常指令。[0058]圖3B詳細(xì)地例示了按照本發(fā)明一個實施例的控制邏輯電路310的一種具體實現(xiàn)。圖3B的控制邏輯電路310如虛線框所示,包含:指令獲取模塊311、第一指令標(biāo)識獲取模塊312、指令緩存模塊313。上述各模塊的功能如下所述。[0059]指令獲取模塊311被配置得用于從CPU指令流水線的取指階段IF獲取指令。[0060]如前文所述,CPU指令流水線的取指階段,取得下一條要執(zhí)行的指令,所取得的指令被傳送到譯碼階段。在應(yīng)用中,可以在不改變指令流水線的邏輯的情況下,按照指令流水線的數(shù)據(jù)流,將指令獲取模塊311設(shè)置得可以截獲取指階段所取得的指令。[0061]第一指令標(biāo)識獲取模塊312被配置得用于從CPU指令流水線的取指階段IF取得第一指令標(biāo)識。[0062]指令標(biāo)識是用于唯一性地標(biāo)識一條指令的。在不同的環(huán)境中,用于標(biāo)識指令的指令標(biāo)識的形式可以有所不同。在現(xiàn)有的指令流水線中,通常采用程序計數(shù)器值PC和進(jìn)程標(biāo)識符PID的組合作為唯一性地標(biāo)識一條指令的指令標(biāo)識。在指令流水線的不同階段對應(yīng)的機(jī)器狀態(tài)寄存器中,保留著當(dāng)前階段的上下文,包括當(dāng)前階段對應(yīng)的指令的PC和PID。[0063]按照本發(fā)明一個實施例,可以將第一指令標(biāo)識獲取模塊312進(jìn)一步配置得用于從IF階段對應(yīng)的機(jī)器狀態(tài)寄存器獲取程序計數(shù)器值PC和進(jìn)程標(biāo)識符PID,并將從IF階段對應(yīng)的機(jī)器狀態(tài)寄存器獲取的PC和PID的組合(例如“PC+PID”或“PID+PC”形式的組合),作為第一指令標(biāo)識。[0064]所屬【
技術(shù)領(lǐng)域
】的技術(shù)人員知道,在具體應(yīng)用中,通過第一指令標(biāo)識獲取模塊312的輸入端與IF階段對應(yīng)的機(jī)器狀態(tài)寄存器的輸出端之間的電路耦合,就可以獲取PC和PID0具體的電路設(shè)計,在此無須贅述。[0065]指令緩存模塊313被配置得用于將指令獲取模塊311的指令和第一指令標(biāo)識獲取模塊312獲取的第一指令標(biāo)識相關(guān)聯(lián)地存儲在CAM330中。[0066]參看圖3C,該圖示意性表示按照本發(fā)明一個實施例的裝置的操作。圖3C示意性地示出一個包含IF、ID,EX,MEM和WB五個階段的指令流水線,以及按照本發(fā)明的控制邏輯電路310、CAM330和SPR350。如圖所示,CAM330可容納η個CAM項(亦稱“CAM數(shù)據(jù)項”或“數(shù)據(jù)項”)entry_l、entry_2、entry_n,其中,CAM項的數(shù)目不少于指令流水線上的指令的數(shù)目,每個CAM項包含域331、333和335。域331的長度例如是64位(bit),用于一個存儲程序計數(shù)器值PC;域333的長度例如是14位,用于一個存儲進(jìn)程標(biāo)識符PID;域335的長度例如是32位,用于存儲一條指令I(lǐng)NSTR。域331、333和335之間的相對位置可以預(yù)先設(shè)定,而不限于圖中所示的那樣;此外,INSTR的編碼形式也可以視具體的應(yīng)用而定,本發(fā)明對此也沒有限制。[0067]圖中的箭頭321、322、323、324、325和326表示的是控制邏輯電路310的操作。箭頭321表示,控制邏輯電路310從CPU指令流水線的取指階段IF獲取一條指令I(lǐng)NSTR,這個操作可以由指令獲取模塊311執(zhí)行。箭頭322表示,在獲取指令I(lǐng)NSTR的同時,控制邏輯電路310還從CPU指令流水線的取指階段IF取得第一指令標(biāo)識,這個操作可以由第一指令標(biāo)識獲取模塊312執(zhí)行。第一指令標(biāo)識獲取模塊312可以從IF對應(yīng)的機(jī)器狀態(tài)寄存器獲取程序計數(shù)器值PC和進(jìn)程標(biāo)識符PID,并將PC和PID的組合作為第一指令標(biāo)識。[0068]箭頭323表示,控制邏輯電路310在內(nèi)容可尋址存儲器CAM中存儲來自CPU指令流水線的取指階段的指令I(lǐng)NSTR。這個操作可以由指令緩存模塊313執(zhí)行。指令緩存模塊313將指令I(lǐng)NSTR和第一指令標(biāo)識(例如“PC”+“PID”)相關(guān)聯(lián)地存儲在內(nèi)容可尋址存儲器中。例如,指令緩存模塊313向CAM330發(fā)出一個“寫入模式”信號,同時將PC、PID和INSTR作為輸入數(shù)據(jù),結(jié)果例如如圖中的數(shù)據(jù)項entry_l所示,該數(shù)據(jù)項存儲了一條指令instr_l,以及相關(guān)聯(lián)的程序計數(shù)器值pc_l和進(jìn)程標(biāo)識符pid_l。[0069]返回圖3B,按照本發(fā)明一個實施例,控制邏輯電路310進(jìn)一步包含第二指令標(biāo)識獲取模塊314、異常檢測模塊315和指令輸出模塊316。第二指令標(biāo)識獲取模塊314被配置得用于從指令流水線的寫回階段獲取第二指令標(biāo)識。[0070]如上文所述,按照本發(fā)明一個實施例,第一指令標(biāo)識獲取模塊312可以被進(jìn)一步配置得用于從IF階段對應(yīng)的機(jī)器狀態(tài)寄存器獲取程序計數(shù)器值PC和進(jìn)程標(biāo)識符PID,并將從IF階段對應(yīng)的機(jī)器狀態(tài)寄存器獲取的程序計數(shù)器值和進(jìn)程標(biāo)識符的組合,作為第一指令標(biāo)識。[0071]相應(yīng)地,按照本發(fā)明一個實施例,可以將第二指令標(biāo)識獲取模塊314進(jìn)一步配置得用于從WB階段對應(yīng)的機(jī)器狀態(tài)寄存器獲取程序計數(shù)器值PC和進(jìn)程標(biāo)識符PID,并將從WB階段對應(yīng)的機(jī)器狀態(tài)寄存器獲取的程序計數(shù)器值PC和進(jìn)程標(biāo)識符PID的組合(例如“PC+PID”或“PID+PC”形式的組合),作為第二指令標(biāo)識。[0072]與上文關(guān)于第一指令標(biāo)識獲取模塊312所述的類似,在具體應(yīng)用中,通過第二指令標(biāo)識獲取模塊314的輸入端與WB階段對應(yīng)的機(jī)器狀態(tài)寄存器的輸出端的電路耦合,就可以獲取PC和PID。[0073]順便指出,第一指令標(biāo)識獲取模塊312與第二指令標(biāo)識獲取模塊314的功能相同,只是用途不同,即分別用于獲取指令流水線的不同階段所涉及指令的PC和PID。在具體實現(xiàn)中,可以用單一的模塊替代這兩個模塊。具體無需贅述。[0074]轉(zhuǎn)看圖3C。圖3C中的箭頭324,表示控制邏輯電路310從指令流水線的WB階段獲取第二指令標(biāo)識,這個操作可以由第二指令標(biāo)識獲取模塊314執(zhí)行。第二指令標(biāo)識獲取模塊314可以從WB階段對應(yīng)的機(jī)器狀態(tài)寄存器獲取程序計數(shù)器值PC和進(jìn)程標(biāo)識符PID,并將PC和PID的組合作為第二指令標(biāo)識。[0075]返回圖3B,進(jìn)一步描述異常檢測模塊315。[0076]異常檢測模塊315被配置得用于檢測指令流水線的寫回階段WB發(fā)出的異常中斷信號。[0077]這個功能如圖3C中的箭頭325所示。該箭頭表示控制邏輯電路310檢測指令流水線的寫回階段WB發(fā)出的異常中斷信號Exc印tionjndicator,這個操作可以由異常檢測模塊315執(zhí)行。異常中斷信號Exception_Indicator表示當(dāng)前指令是否是異常指令,例如,如果Exception_Indicator=“I”,表不當(dāng)前指令是異常指令,如果Exception_Indicator=“O”,表示當(dāng)前指令不是異常指令。[0078]轉(zhuǎn)看圖3B,指令輸出模塊316被配置得響應(yīng)于異常中斷信號指示發(fā)生了異常指令,使內(nèi)容可尋址存儲器CAM中與第二指令標(biāo)識相關(guān)聯(lián)的指令輸出到專用寄存器350。[0079]參看圖3C,控制邏輯電路310在截獲寫回階段的結(jié)果之后的操作如箭頭326所示。假設(shè)當(dāng)前指令的程序計數(shù)器值為pc_l,當(dāng)前指令的進(jìn)程標(biāo)識符為pid_l,Exception_Indicator=“1”,則控制邏輯電路310用程序計數(shù)器值pc_l與進(jìn)程標(biāo)識符pid_l的組合“pC_l+pid_l”作為索引值,定位到內(nèi)容可尋址存儲器330中包含相同程序計數(shù)器值pc_l和進(jìn)程標(biāo)識符pid_l的數(shù)據(jù)項-即圖3C中所示的數(shù)據(jù)項entry_l,并將該數(shù)據(jù)項中的指令instr_l輸出到專用寄存器350。[0080]在具體實現(xiàn)中,可以根據(jù)指令流水線的個數(shù)等具體情況,設(shè)置CAM330可容納的數(shù)據(jù)項(entry)或CAM項的數(shù)目,使得指令流水線中的每個未決指令都能有一個對應(yīng)的數(shù)據(jù)項。此外,在具體設(shè)計中,可以使每個指令對應(yīng)的CAM項的存儲空間,在該指令執(zhí)行完畢后被釋放,用于隨后進(jìn)入指令流水線的指令。[0081]按照本發(fā)明一個實施例,控制邏輯電路310還包含一個CAM管理模塊(未予示出),其被配置得用于釋放已經(jīng)不在指令流水線上的指令所在的內(nèi)容可尋址存儲器數(shù)據(jù)項的存儲空間。[0082]參看圖3C,可以在內(nèi)容可尋址存儲器330的數(shù)據(jù)項(entry_l、entry_2…entry_n)中設(shè)置一個I位(bit)的標(biāo)志域332,用于指示所在數(shù)據(jù)項是否有效,或者所在存儲空間是否被占用。例如,標(biāo)志域332的值為“I”時,表示所在數(shù)據(jù)項有效,控制邏輯電路310不能在該數(shù)據(jù)項的位置中寫入新的數(shù)據(jù)項;標(biāo)志域的值為“O”時,表示所在數(shù)據(jù)項無效,該數(shù)據(jù)項的存儲空間被釋放,控制邏輯電路310可以在該數(shù)據(jù)項的位置中寫入新的數(shù)據(jù)項。[0083]按照本發(fā)明一個實施例,指令緩存模塊313被配置得只在內(nèi)容可尋址存儲器中的標(biāo)志域的值為O的數(shù)據(jù)項的位置存儲指令獲取模塊311的指令和第一指令標(biāo)識獲取模塊312獲取的第一指令標(biāo)識,CAM管理模塊被配置得在指令緩存模塊313寫入指令和第一指令標(biāo)識的同時,將該數(shù)據(jù)項的標(biāo)志位設(shè)置為有效。例如,如圖3C所示,假設(shè)一開始entry_l的標(biāo)志域的值為O,指令緩存模塊313在entry_l中寫入數(shù)據(jù)pc_l、pid_l和instr_l,CAM管理模塊同時將標(biāo)志域的值設(shè)置I。[0084]按照本發(fā)明一個實施例,指令輸出模塊316只針對CAM330中的有效的數(shù)據(jù)項進(jìn)行操作,這可以通過將“1’+PC+PID作為CAM的輸入索引值而實現(xiàn)。[0085]當(dāng)指令輸出模塊316使CAM中與第二指令標(biāo)識相關(guān)聯(lián)的指令輸出到SPR時,CAM管理模塊同時將CAM中該指令的所在數(shù)據(jù)項的標(biāo)志域332設(shè)置為無效。[0086]例如,如圖3C和圖3D所示,指令輸出模塊316使圖3C所示的CAM330中的數(shù)據(jù)項entry_l中的指令instr_l輸出到專用寄存器350,與此同時,CAM管理模塊將該數(shù)據(jù)項的標(biāo)志域332設(shè)置為無效,如圖3D所示,結(jié)果,數(shù)據(jù)項entry_l的標(biāo)志域的值變?yōu)闉椤癘”。[0087]即使異常檢測模塊315檢測不到異常指令的發(fā)生,指令輸出模塊316不使CAM330向SPR350輸出指令,CAM管理模塊也將第二指令標(biāo)識所在的CAM數(shù)據(jù)項的標(biāo)志域332設(shè)置為無效。例如,如圖3E所示,某個有效數(shù)據(jù)項entry_l存儲有第一指令標(biāo)識“pc_2+pid_2”和指令instr_2。如果第二指令標(biāo)識獲取模塊的獲取了第二指令標(biāo)識與第一指令標(biāo)識相同,也是“pc_2+pid_2”同時,異常檢測模塊315檢測不到異常指令的發(fā)生。在這種情況下,CAM管理模塊只是將第二指令標(biāo)識所在數(shù)據(jù)項的標(biāo)志域332設(shè)置為無效,結(jié)果如圖3F所示,指令instr_2并沒有輸出到專用寄存器350,但是CAM管理模塊把數(shù)據(jù)項entry_l的標(biāo)志域332的值設(shè)置為0,表示該數(shù)據(jù)項的存儲空間被釋放。[0088]使用CAM330,在一個時鐘周期就可以將其中緩存的指令輸出到專用寄存器350。在CAM數(shù)據(jù)項中設(shè)置和使用標(biāo)志位332,則可以將已經(jīng)不在指令流水線上的指令占用的CAM數(shù)據(jù)項釋放,由此可以盡可能降低對CAM存儲空間的總需求量。[0089]以上說明了本發(fā)明的用于虛擬機(jī)管理器獲取異常指令的裝置的各種實施方式。按照同一個發(fā)明構(gòu)思,本發(fā)明還提供用于虛擬機(jī)管理器獲取異常指令的控制方法和相應(yīng)的控制裝置。[0090]參看圖4A,該圖示意性表示按照本發(fā)明一個實施例的控制方法的高級流程圖。如圖所示的控制方法400,用于虛擬機(jī)管理器獲取異常指令,其中,所述虛擬機(jī)管理器220在包含中央處理器CPU212的物理機(jī)210和虛擬機(jī)230之間運行,所述控制方法包含步驟S410和S420:[0091]使來自CPU指令流水線的取指階段的指令被存儲到內(nèi)容可尋址存儲器CAM(S410);[0092]根據(jù)CPU指令流水線的寫回階段產(chǎn)生的結(jié)果,觸發(fā)CAM將其中存儲的屬于異常指令的指令輸出到虛擬機(jī)管理器可訪問的專用寄存器SPR(S420)。[0093]參看圖4B,按照本發(fā)明一個實施例,上述的步驟S410包含步驟S412-S414:[0094]從CPU指令流水線的取指階段獲取指令(S412);[0095]從CPU指令流水線的取指階段獲取第一指令標(biāo)識(S414);[0096]將所獲取的指令和第一指令標(biāo)識相關(guān)聯(lián)地存儲在CAM中(S416)。[0097]參看圖4C,按照本發(fā)明一個實施例,上述的步驟S420包含步驟S422-S426:[0098]從指令流水線的寫回階段獲取第二指令標(biāo)識(S422);[0099]檢測指令流水線的寫回階段發(fā)出的異常中斷信號(S424);以及[0100]響應(yīng)于異常中斷信號指示發(fā)生了異常指令,使CAM中與第二指令標(biāo)識相關(guān)聯(lián)的指令輸出到SPR(S426)。輸出到SPR中的指令,實際上就是導(dǎo)致異常的異常指令。[0101]按照本發(fā)明一個實施例,上述步驟S412包含:從取指階段對應(yīng)的機(jī)器狀態(tài)寄存器獲取程序計數(shù)器值PC和進(jìn)程標(biāo)識符PID,并將從取指階段對應(yīng)的機(jī)器狀態(tài)寄存器獲取的PC和PID的組合作為第一指令標(biāo)識。[0102]按照本發(fā)明一個實施例,上述步驟S422包含:從WB階段對應(yīng)的機(jī)器狀態(tài)寄存器獲取程序計數(shù)器值PC和進(jìn)程標(biāo)識符PID,并將從WB階段對應(yīng)的機(jī)器狀態(tài)寄存器獲取的PC和PID的組合作為第二指令標(biāo)識。[0103]按照本發(fā)明一個實施例,所述控制方法400進(jìn)一步包含:釋放已經(jīng)不在指令流水線上的指令所在的內(nèi)容可尋址存儲器數(shù)據(jù)項的存儲空間。[0104]參看圖5A,該圖示意性表示按照本發(fā)明一個實施例的框圖。如圖所示的控制裝置500,用于虛擬機(jī)管理器獲取異常指令,其中,所述虛擬機(jī)管理器220在包含中央處理器CPU212的物理機(jī)210和虛擬機(jī)230之間運行,所述控制裝置包含:[0105]用于使來自CPU指令流水線的取指階段的指令被存儲到內(nèi)容可尋址存儲器CAM的裝置510;用于根據(jù)CPU指令流水線的寫回階段產(chǎn)生的結(jié)果觸發(fā)CAM將其中存儲的屬于異常指令的指令輸出到虛擬機(jī)管理器可訪問的專用寄存器SPR的裝置520。[0106]參看圖5B,按照本發(fā)明一個實施例,上述的裝置510包含:用于從CPU指令流水線的取指階段獲取指令的裝置512;用于從CPU指令流水線的取指階段獲取第一指令標(biāo)識的裝置514;以及用于將所獲取的指令和第一指令標(biāo)識相關(guān)聯(lián)地存儲在CAM中的裝置516。[0107]參看圖5C,按照本發(fā)明一個實施例,上述的裝置520包含:用于從指令流水線的寫回階段獲取第二指令標(biāo)識的裝置522;用于檢測指令流水線的寫回階段發(fā)出的異常中斷信號的裝置524;以及用于響應(yīng)于異常中斷信號指示發(fā)生了異常指令,使CAM中與第二指令標(biāo)識相關(guān)聯(lián)的指令輸出到SPR的裝置526。[0108]按照本發(fā)明一個實施例,上述裝置512進(jìn)一步被配置得用于從取指階段對應(yīng)的機(jī)器狀態(tài)寄存器獲取程序計數(shù)器值PC和進(jìn)程標(biāo)識符PID,并將從取指階段對應(yīng)的機(jī)器狀態(tài)寄存器獲取的PC和PID的組合作為第一指令標(biāo)識。[0109]按照本發(fā)明一個實施例,上述裝置522進(jìn)一步被配置得用于從WB階段對應(yīng)的機(jī)器狀態(tài)寄存器獲取程序計數(shù)器值PC和進(jìn)程標(biāo)識符PID,并將從WB階段對應(yīng)的機(jī)器狀態(tài)寄存器獲取的PC和PID的組合作為第二指令標(biāo)識。[0110]按照本發(fā)明一個實施例,所述控制方法400進(jìn)一步用于釋放已經(jīng)不在指令流水線上的指令所在的內(nèi)容可尋址存儲器數(shù)據(jù)項的存儲空間的裝置。[0111]以上說明了本發(fā)明的用于虛擬機(jī)管理器獲取異常指令的控制方法和控制裝置的各種實施方式。由于上文已經(jīng)詳細(xì)說明了本發(fā)明的用于虛擬機(jī)管理器獲取異常指令的裝置的各種實施方式,在對用于虛擬機(jī)管理器獲取異常指令的控制方法和控制裝置的各種實施方式的說明中,省略了與對用于虛擬機(jī)管理器獲取異常指令的裝置的各種實施方式的說明中重復(fù)的、或者可以從中導(dǎo)出的內(nèi)容。[0112]附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個實施例的系統(tǒng)、方法和計算機(jī)程序產(chǎn)品的可能實現(xiàn)的體系架構(gòu)、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個或多個用于實現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當(dāng)注意,在有些作為替換的實現(xiàn)中,方框中所標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或操作的專用的基于硬件的系統(tǒng)來實現(xiàn),或者可以用專用硬件與計算機(jī)指令的組合來實現(xiàn)。[0113]以上已經(jīng)描述了本發(fā)明的各實施例,上述說明是示例性的,并非窮盡性的,并且也不限于所披露的各實施例。在不偏離所說明的各實施例的范圍和精神的情況下,對于本【
技術(shù)領(lǐng)域
】的普通技術(shù)人員來說許多修改和變更都是顯而易見的。本文中所用術(shù)語的選擇,旨在最好地解釋各實施例的原理、實際應(yīng)用或?qū)κ袌鲋械募夹g(shù)的改進(jìn),或者使本【
技術(shù)領(lǐng)域
】的其它普通技術(shù)人員能理解本文披露的各實施例。【權(quán)利要求】1.一種用于虛擬機(jī)管理器獲取異常指令的裝置(300),其中,所述虛擬機(jī)管理器(220)在包含中央處理器CPU(212)的物理機(jī)(210)和虛擬機(jī)(230)之間運行,所述裝置包含:內(nèi)容可尋址存儲器CAM(330);虛擬機(jī)管理器可訪問的專用寄存器SPR(350);以及控制邏輯電路(310),具有CPU相連的輸入端和與CAM相連的輸出端,輸入端接收分別來自CPU指令流水線的取指階段和寫回階段的數(shù)據(jù),輸出端使來自CPU指令流水線的取指階段的指令被存儲到CAM,并觸發(fā)CAM將其中存儲的屬于異常指令的指令輸出到SPR。2.權(quán)利要求1的裝置,其中,控制邏輯電路包含:指令獲取模塊(311),被配置得用于從CPU指令流水線的取指階段獲取指令;第一指令標(biāo)識獲取模塊(312),被配置得用于從CPU指令流水線的取指階段獲取第一指令標(biāo)識;指令緩存模塊(313),被配置得用于將指令獲取模塊的指令和第一指令標(biāo)識獲取模塊獲取的第一指令標(biāo)識相關(guān)聯(lián)地存儲在CAM中。3.權(quán)利要求1的裝置,其中,控制邏輯電路進(jìn)一步包含:第二指令標(biāo)識獲取模塊(314),被配置得用于從指令流水線的寫回階段獲取第二指令標(biāo)識;異常檢測模塊(315),被配置得用于檢測指令流水線的寫回階段發(fā)出的異常中斷信號;·以及指令輸出模塊(316),被配置得響應(yīng)于異常中斷信號指示發(fā)生了異常指令,使CAM中與第二指令標(biāo)識相關(guān)聯(lián)的指令輸出到SPR。4.權(quán)利要求2的裝置,其中,控制邏輯電路進(jìn)一步包含:第二指令標(biāo)識獲取模塊(314),被配置得用于從指令流水線的寫回階段獲取第二指令標(biāo)識;異常檢測模塊(315),被配置得用于檢測指令流水線的寫回階段發(fā)出的異常中斷信號;以及指令輸出模塊(316),被配置得響應(yīng)于異常中斷信號指示發(fā)生了異常指令,使CAM中與第二指令標(biāo)識相關(guān)聯(lián)的指令輸出到SPR。5.權(quán)利要求2的裝置,其中,第一指令標(biāo)識獲取模塊被進(jìn)一步配置得用于從取指階段對應(yīng)的機(jī)器狀態(tài)寄存器獲取程序計數(shù)器值PC和進(jìn)程標(biāo)識符PID,并將從取指階段對應(yīng)的機(jī)器狀態(tài)寄存器獲取的程序計數(shù)器值和進(jìn)程標(biāo)識符的組合作為第一指令標(biāo)識。6.權(quán)利要求3的裝置,其中,第二指令標(biāo)識獲取模塊被進(jìn)一步配置得用于從寫回階段對應(yīng)的機(jī)器狀態(tài)寄存器獲取PC和PID,并將從寫回階段對應(yīng)的機(jī)器狀態(tài)寄存器獲取的PC和PID的組合作為第二指令標(biāo)識。7.權(quán)利要求1-6的的任何之一的裝置,其中,控制邏輯電路進(jìn)一步包括:CAM管理模塊,被配置得用于釋放已經(jīng)不在指令流水線上的指令所在的內(nèi)容可尋址存儲器數(shù)據(jù)項的存儲空間。8.一種用于虛擬機(jī)管理器獲取異常指令的控制方法,其中,所述虛擬機(jī)管理器(220)在包含中央處理器CPU(212)的物理機(jī)(210)和虛擬機(jī)(230)之間運行,所述控制方法包含:使來自CPU指令流水線的取指階段的指令被存儲到內(nèi)容可尋址存儲器CAM;根據(jù)CPU指令流水線的寫回階段產(chǎn)生的結(jié)果,觸發(fā)CAM將其中存儲的屬于異常指令的指令輸出到虛擬機(jī)管理器可訪問的專用寄存器SPR。9.權(quán)利要求8的控制方法,其中,所述使來自CPU指令流水線的取指階段的指令被存儲到內(nèi)容可尋址存儲器CAM包含:從CPU指令流水線的取指階段獲取指令;從CPU指令流水線的取指階段獲取第一指令標(biāo)識;將所獲取的指令和第一指令標(biāo)識相關(guān)聯(lián)地存儲到CAM。10.權(quán)利要求8的控制方法,其中,所述根據(jù)CPU指令流水線的寫回階段產(chǎn)生的結(jié)果觸發(fā)CAM將其中存儲的屬于異常指令的指令輸出到虛擬機(jī)管理器可訪問的專用寄存器SPR包含:從指令流水線的寫回階段獲取第二指令標(biāo)識;檢測指令流水線的寫回階段發(fā)出的異常中斷信號;以及響應(yīng)于異常中斷信號指示發(fā)生了異常指令,使CAM中與第二指令標(biāo)識相關(guān)聯(lián)的指令輸出到SPR。11.權(quán)利要求9的控制方法,其中,所述根據(jù)CPU指令流水線的寫回階段產(chǎn)生的結(jié)果觸發(fā)CAM將其中存儲的屬于異常指令的指令輸出到虛擬機(jī)管理器可訪問的專用寄存器SPR包含:從指令流水線的寫回階段獲取第二指令標(biāo)識;檢測指令流水線的寫回階段發(fā)出的異常中斷信號;以及響應(yīng)于異常中斷信號指示發(fā)生了異常指令,使CAM中與第二指令標(biāo)識相關(guān)聯(lián)的指令輸出到SPR。12.權(quán)利要求9的控制方法,其中,所述從CPU指令流水線的取指階段獲取第一指令標(biāo)識包含:從取指階段對應(yīng)的機(jī)器狀態(tài)寄存器獲取程序計數(shù)器值PC和進(jìn)程標(biāo)識符PID,并將從取指階段對應(yīng)的機(jī)器狀態(tài)寄存器獲取的PC和PID的組合作為第一指令標(biāo)識。13.權(quán)利要求10的控制方法,其中,所述從指令流水線的寫回階段獲取第二指令標(biāo)識包含:從寫回階段對應(yīng)的機(jī)器狀態(tài)寄存器獲取程序計數(shù)器值PC和進(jìn)程標(biāo)識符PID,并將從寫回階段對應(yīng)的機(jī)器狀態(tài)寄存器獲取的PC和PID的組合作為第二指令標(biāo)識。14.權(quán)利要求8-13的任何之一的控制方法,進(jìn)一步包含:釋放已經(jīng)不在指令流水線上的指令所在的內(nèi)容可尋址存儲器數(shù)據(jù)項的存儲空間。15.一種用于虛擬機(jī)管理器獲取異常指令的控制裝置,其中,所述虛擬機(jī)管理器(220)在包含中央處理器CPU(212)的物理機(jī)(210)和虛擬機(jī)(230)之間運行,所述控制裝置包含:用于使來自CPU指令流水線的取指階段的指令被存儲到內(nèi)容可尋址存儲器CAM裝置;用于根據(jù)CPU指令流水線的寫回階段產(chǎn)生的結(jié)果觸發(fā)CAM將其中存儲的屬于異常指令的指令輸出到虛擬機(jī)管理器可訪問的專用寄存器SPR的裝置。16.權(quán)利要求15的控制裝置,其中,所述用于使來自CPU指令流水線的取指階段的指令被存儲到內(nèi)容可尋址存儲器CAM的裝置包含:用于從CPU指令流水線的取指階段獲取指令的裝置;用于從CPU指令流水線的取指階段獲取第一指令標(biāo)識的裝置;用于將所獲取的指令和第一指令標(biāo)識相關(guān)聯(lián)地存儲到CAM的裝置。17.權(quán)利要求15的控制裝置,其中,所述用于根據(jù)CPU指令流水線的寫回階段產(chǎn)生的結(jié)果觸發(fā)CAM將其中存儲的屬于異常指令的指令輸出到虛擬機(jī)管理器可訪問的專用寄存器SPR的裝置包含:用于從指令流水線的寫回階段獲取第二指令標(biāo)識的裝置;用于檢測指令流水線的寫回階段發(fā)出的異常中斷信號的裝置;以及用于響應(yīng)于異常中斷信號指示發(fā)生了異常指令,使CAM中與第二指令標(biāo)識相關(guān)聯(lián)的指令輸出到SPR的裝置。18.權(quán)利要求16的控制裝置,其中,所述用于根據(jù)CPU指令流水線的寫回階段產(chǎn)生的結(jié)果觸發(fā)CAM將其中存儲的屬于異常指令的指令輸出到虛擬機(jī)管理器可訪問的專用寄存器SPR包含:用于從指令流水線的寫回階段獲取第二指令標(biāo)識的裝置;用于檢測指令流水線的寫回階段發(fā)出的異常中斷信號的裝置;以及用于響應(yīng)于異常中斷信號指示發(fā)生了異常指令,使CAM中與第二指令標(biāo)識相關(guān)聯(lián)的指令輸出到SPR的裝置。19.權(quán)利要求16的控制裝置,其中,所述用于從CPU指令流水線的取指階段獲取第一指令標(biāo)識的裝置被配置得用于從取指階段對應(yīng)的機(jī)器狀態(tài)寄存器獲取程序計數(shù)器值PC和進(jìn)程標(biāo)識符PID,并將從取指階段對應(yīng)的機(jī)器狀態(tài)寄存器獲取的PC和PID的組合作為第一指令標(biāo)識。20.權(quán)利要求17的控制裝置,其中,所述用于從指令流水線的寫回階段獲取第二指令標(biāo)識的裝置被配置得用于從寫回階段對應(yīng)的機(jī)器狀態(tài)寄存器獲取程序計數(shù)器值PC和進(jìn)程標(biāo)識符PID,并將從寫回階段對應(yīng)的機(jī)器狀態(tài)寄存器獲取的PC和PID的組合作為第二指令標(biāo)識。21.權(quán)利要求15-20的任何之一的控制裝置,進(jìn)一步包含用于釋放已經(jīng)不在指令流水線上的指令所在的內(nèi)容可尋址存儲器數(shù)據(jù)項的存儲空間的裝置?!疚臋n編號】G06F9/455GK103853591SQ201210505800【公開日】2014年6月11日申請日期:2012年11月30日優(yōu)先權(quán)日:2012年11月30日【發(fā)明者】李皓,常曉濤,戈弋,王鯤,劉弢申請人:國際商業(yè)機(jī)器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1