国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

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

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