CN102906700B - 用于阻止虚拟处理器的多功能指令的指令功能的功能虚拟化工具 - Google Patents

用于阻止虚拟处理器的多功能指令的指令功能的功能虚拟化工具 Download PDF

Info

Publication number
CN102906700B
CN102906700B CN201080066985.8A CN201080066985A CN102906700B CN 102906700 B CN102906700 B CN 102906700B CN 201080066985 A CN201080066985 A CN 201080066985A CN 102906700 B CN102906700 B CN 102906700B
Authority
CN
China
Prior art keywords
instruction
processor
function
prevention value
virtual machine
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201080066985.8A
Other languages
English (en)
Other versions
CN102906700A (zh
Inventor
D·格雷纳
D·L·奥西塞克
T·什莱格尔
L·海勒
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN102906700A publication Critical patent/CN102906700A/zh
Application granted granted Critical
Publication of CN102906700B publication Critical patent/CN102906700B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45541Bare-metal, i.e. hypervisor runs directly on hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45554Instruction set architectures of guest OS and hypervisor or native processor differ, e.g. Bochs or VirtualPC on PowerPC MacOS

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Storage Device Security (AREA)
  • Advance Control (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

在支持执行指令的多个功能的处理器中,设置指令阻止值以阻止所述多个功能中的一个或多个功能,使得执行被阻止功能之一的尝试将导致程序异常,并且指令将不会执行,然而同一指令将能够执行不是被阻止功能的任何功能。

Description

用于阻止虚拟处理器的多功能指令的指令功能的功能虚拟化工具
技术领域
本发明涉及计算机系统,更具体地说,涉及计算机系统处理器指令功能。
背景技术
商标:是位于美国纽约阿蒙克的国际商业机器公司的注册商标。S/390、Z900、z990、z10和其他产品名称可能是国际商业机器公司或其他公司的注册商标或产品名称。
通过许多才华横溢的工程师的努力工作,IBM在20世纪60年代开始推出称为System360的机器,目前推出一种特殊的架构,由于其具有计算系统的基本性质而成为众所周知的“大型机”,其操作原理通过描述指令说明了机器的架构,这些指令可以在由IBM发明家发明的指令的“大型机”实施方式上执行,并且由于对改善由“大型机”表示的计算机器的现状做出的重大贡献,这些指令被采用作为重大贡献而包括在多年来规定的IBM操作原理中。2009年2月发布的第八版操作原理已经成为标准发布参考SA22-7832-07,并结合在IBM的大型机服务器中。
参考图1A,示出了现有技术主机系统50的代表性组件。还可以在计算机系统中采用本领域公知的其他组件布置。代表性主机50包括一个或多个与主存储装置(计算机存储器2)通信的CPU1,以及到存储设备11和网络10的I/O接口以便与其他计算机或SAN等通信。CPU1与具有架构式指令集和架构式功能性的架构兼容。CPU1可以具有动态地址转换(DAT)3以便将程序地址(虚拟地址)转换为存储器的实地址。DAT通常包括转换后备缓冲器(TLB)7以便缓存转换,从而对计算机存储器2的块的后续存取不需要延迟地址转换。通常在计算机存储器2和处理器1之间采用高速缓存9。高速缓存9可以是分层的,具有可用于多个CPU的大型高速缓存,以及在大型高速缓存和每个CPU之间的较小、较快速(较低级)的高速缓存。在某些实施方式中,拆分较低级高速缓存以提供单独的低级高速缓存以供指令取回和数据存取。在一个实施例中,指令取回单元4经由高速缓存9从存储器2取回指令。所述指令在指令解码单元6中进行解码并分派(在某些实施例中与其他指令一起)到指令执行单元8。通常采用多个执行单元8,例如算术执行单元、浮点执行单元和分支指令执行单元。由执行单元执行所述指令,从而根据需要从指令指定的寄存器或存储器中存取操作数。如果要从存储器2存取(加载或存储)操作数,则加载存储单元5通常在被执行指令的控制下处理存取。指令可以在硬件电路或内部微代码(固件)中执行,或通过二者的组合执行。
在图1B中,提供了仿真主机架构的主计算机系统50的现有技术仿真的主计算机系统21的一个实例。在仿真的主计算机系统21中,主机处理器(CPU)1是仿真的主机处理器(或虚拟主机处理器)并包括仿真处理器27,仿真处理器27具有的本机指令集架构不同于主计算机50的处理器1的本机指令集架构。仿真的主计算机系统21具有可由仿真处理器27存取的存储器22。在所述实例实施例中,存储器27被分区为主计算机存储器2部分和仿真例程23部分。根据主计算机架构,主计算机存储器2可用于仿真的主计算机21的程序。仿真处理器27执行架构的架构指令集的本机指令而不是仿真的处理器1的本机指令,所述本机指令从仿真例程存储器23获得,并且可以通过采用在序列和存取/解码例程中获得的一个或多个指令存取主机指令以便从主计算机存储器2中的程序执行,所述序列和存取/解码例程可以对存取的主机指令(多个)进行解码以确定本机指令执行例程以便仿真存取的主机指令的功能。针对主计算机系统50架构定义的其他工具可以由架构工具例程仿真,所述架构工具例程例如包括诸如通用寄存器、控制寄存器、动态地址转换和I/O子系统支持以及处理器高速缓存之类的工具。所述仿真例程还可以利用仿真处理器27中提供的功能(例如通用寄存器和虚拟地址的动态转换)来提高所述仿真例程的性能。还可以提供特殊硬件和卸载引擎以帮助处理器27仿真主计算机50的功能。
在大型机中,程序员(通常为当今的“C”程序员)经常通过编译器应用使用架构机器指令。存储在存储介质中的这些指令可以在z/ArchitectureIBM服务器本机中执行,或者备选地在执行其他架构的机器中执行。它们可以在现有和未来的IBM大型机服务器中以及在其他IBM机器(例如服务器和服务器)上被仿真。它们可以在使用由AMDTM、SunMicrosystems和其他公司制造的硬件的各种机器上的运行Linux的机器中执行。除了在使用的此硬件上执行之外,可以使用Linux以及使用仿真的机器,如http://www.turbohercules.com、http://www.hercules-390.org和http://www.funsoft.com中所述。在仿真模式中,本机处理器执行仿真软件以仿真被仿真的处理器的架构。
本机处理器27通常执行包括固件或本机操作系统的仿真软件23以执行被仿真的处理器的仿真。仿真软件23负责取回和执行被仿真的处理器架构的指令。仿真软件23维护仿真的程序计数器以跟踪指令边界。仿真软件23一次可以取回一个或多个仿真的机器指令,并将所述一个或多个仿真的机器指令转换为对应的一组本机机器指令以便由本机处理器27执行。可以缓存这些转换的指令以便可以实现更快的转换。尽管如此,所述仿真软件必须维护仿真的处理器架构的架构规则以便确保针对仿真的处理器编写的操作系统和应用正确运行。此外,所述仿真软件必须提供由仿真的处理器1架构标识的资源,包括但不限于控制寄存器、通用寄存器、浮点寄存器、动态地址转换功能(例如包括段表和页表)、中断机制、上下文切换机制、当日时间(TOD)时钟以及到I/O子系统的架构接口,以便设计为在仿真的处理器上运行的操作系统或应用程序可以在具有所述仿真软件的本机处理器上运行。
对被仿真的特定指令进行解码,并调用子例程以执行单独指令的功能。仿真被仿真的处理器1的功能的仿真软件功能23例如以“C”子例程或驱动程序实现,或者以某种其他为特定硬件提供驱动程序的方法实现,如本领域的技术人员在理解优选实施例的说明之后所公知的。各种软件和硬件仿真专利包括但不限于Beausoleil等人的US5551013“Multiprocessorforhardwareemulation(用于硬件仿真的多处理器)”,以及Scalzi等人的US6009261:“Preprocessingofstoredtargetroutinesforemulatingincompatibleinstructionsonatargetprocessor(用于在目标处理器上仿真不兼容指令的存储目标例程的预处理)”;Davidian等人的US5574873:“Decodingguestinstructiontodirectlyaccessemulationroutinesthatemulatetheguestinstructions(对客机指令进行解码以直接存取仿真客机指令的仿真例程)”;Gorishek等人的US6308255:“Symmetricalmultiprocessingbusandchipsetusedforcoprocessorsupportallowingnon-nativecodetoruninasystem(用于允许非本机代码在系统中运行的协处理器支持的对称多处理总线和芯片组)”;Lethin等人的US6463582:“Dynamicoptimizingobjectcodetranslatorforarchitectureemulationanddynamicoptimizingobjectcodetranslationmethod(用于架构仿真的动态优化目标代码转换器以及动态优化目标代码转换方法)”;以及EricTraut的US5790825:“Methodforemulatingguestinstructiononahostcomputerthroughdynamicrecompilationofhostinstructions(用于通过主机指令的动态重新编译在主机上仿真客机指令的方法)”。这些参考文献例示了各种公知方法以便针对可用于本领域的技术人员的目标机器实现为不同机器设计的指令格式的仿真,并且还例示了上面引用的这些专利使用的那些商业软件技术。
在美国公开US2009/0222814A1“SelectiveExposuretoUSBDeviceFunctionalityforaVirtualMachine(针对虚拟机选择性公开USB设备功能)”(2009年9月3日公开,Astrand)中,虚拟机(VM)应用可以运行客机(guest)操作系统(OS)并允许客机OS与连接到计算机的USB设备相连。所述VM应用可以过滤与USB设备关联的功能,以便仅向客机OS公开USB设备的某些功能。
发明内容
在一个实施例中,阻止处理器执行特定指令。设置指令阻止值。取回要由所述处理器执行的指令,所述指令包括操作码,所述处理器支持所述指令;响应于所述指令阻止值允许所述指令的执行,由所述处理器执行所取回的指令;以及响应于所述指令阻止值不允许所述指令的执行,阻止所取回的指令的执行并导致程序异常事件(例如,程序异常)。
在一个实施例中,所述处理器是虚拟机的逻辑处理器,其中所述取回由所述逻辑处理器完成。确定所述虚拟机的所述指令阻止值,其中在具有一个或多个物理处理器的所述逻辑处理器中设置所述指令阻止值,其中所述一个或多个物理处理器支持所述指令,其中响应于所述指令阻止值允许所述指令的执行,由所述逻辑处理器完成所述执行。
在一个实施例中,所述处理器是虚拟机的逻辑处理器的一个或多个物理处理器,其中在所述一个或多个物理处理器中设置所述指令阻止值,其中所述取回由所述一个或多个物理处理器完成。
在一个实施例中,针对所述虚拟机定义所述指令阻止值以便阻止所述指令的执行,响应于启用所述虚拟机以使用所述物理处理器而设置所述指令阻止值;设置针对具有另一逻辑处理器的另一虚拟机定义的另一指令阻止值,响应于启用所述另一虚拟机以使用所述物理处理器而设置所述另一指令阻止值;以及响应于所述另一指令阻止值允许所述指令的执行,允许由所述另一逻辑处理器执行所述指令;以及响应于所述另一指令阻止值不允许所述指令的执行,不允许由所述另一逻辑处理器执行所述指令。
在一个实施例中,针对所述虚拟机定义所述指令阻止值以便阻止所述指令的执行,响应于启用所述虚拟机以使用所述物理处理器而设置所述指令阻止值;设置针对具有另一逻辑处理器的另一虚拟机定义的另一指令阻止值,响应于启用所述另一虚拟机以使用所述物理处理器而设置所述另一指令阻止值;以及响应于所述另一指令阻止值允许所述指令的执行,当启用所述另一虚拟机以使用所述物理处理器时,允许由所述物理处理器执行所述指令;以及响应于所述另一指令阻止值不允许所述指令的执行,当启用所述另一虚拟机以使用所述物理处理器时,不允许由所述物理处理器执行所述指令。
在一个实施例中,响应于所述指令采用允许的功能代码,所述指令是允许的指令,其中响应于所述指令采用不允许的功能代码,所述指令是不允许的指令。
在一个实施例中,通过将所述指令的操作码与所述指令阻止值关联而判定所述指令是否是允许的指令。
在一个实施例中,所取回的指令指定要完成的功能,使用所述指令的操作码作为表的索引以查找所述指令阻止值,所述指令阻止值包括许可字段;使用所述许可字段确定允许的功能。响应于所述功能是允许的功能,确定允许所述指令的执行,以及响应于所述功能是不允许的功能,确定不允许所述指令的执行。
在以下书面说明中,上述以及其他目标、特性和优点将变得显而易见。
附图说明
现在仅通过实例的方式参考附图描述本发明的实施例,这些附图是:
图1A是示出一个实例主计算机系统的示意图;
图1B是示出一个实例仿真主计算机系统的示意图;
图1C是示出一个实例计算机系统的示意图;
图2是示出一个实例计算机网络的示意图;
图3是示出计算机系统的实例元件的示意图;
图4A是示出一个实例执行单元的示意图;
图4B是示出一个实例分支单元的示意图;
图4C是示出一个实例加载/存储单元的示意图;
图5是示出一个实例逻辑分区的示意图;
图6是示出实例逻辑分区元件的示意图;
图7是示出实例逻辑分区元件的示意图;
图8是示出一个实例操作码表的流程;
图9是示出一种实例阻止技术的流程;
图10是示出一种实例阻止技术的流程;
图11是示出一种实例阻止技术的流程;以及
图12-15示出了指令阻止技术的流程。
具体实施方式
可以通过软件(有时称为许可内部代码、固件、微代码、毫代码、微微代码等,它们中的任意一个都将与此处的教导一致)实现一个实施例。参考图1A,系统50的处理器(也称为CPU(中央处理单元)1)通常从长期存储介质11(例如CD-ROM驱动器、磁带驱动器或硬盘驱动器)存取软件程序代码实施例。所述软件程序代码可以包含在各种公知介质(例如软盘、硬盘驱动器或CD-ROM)中的任意一种上,以便与数据处理系统一起使用。所述代码可以分布在此类介质上,或者可以从计算机存储器2分发给用户,或通过网络10从一个计算机系统的存储装置分发给其他计算机系统以便由此类其他系统的用户使用。
备选地,所述程序代码可以包含在存储器2中,并由处理器1使用处理器总线存取。此类程序代码包括控制各种计算机组件的功能和交互的操作系统以及一个或多个应用程序。程序代码通常从密集的存储介质11分页到高速存储器2,在高速存储器2中可由处理器1处理。用于在存储器中、物理介质上包含软件程序代码和/或通过网络分发软件代码的技术和方法是公知的,在此不进一步讨论。当在有形介质(包括但不限于电子存储器模块(RAM)、闪存、光盘(CD)、DVD、磁带等)上创建和存储时,程序代码通常称为“计算机程序产品”。所述计算机程序产品介质通常可由优选地在计算机系统中的处理电路读取以便由所述处理电路执行。
图1C示出了其中可以实现各实施例的代表性工作站或服务器硬件系统。图1C的系统100包括包含可选外围设备的代表性计算机系统101,例如个人计算机、工作站或服务器。工作站101包括一个或多个处理器106和一条总线,所述总线用于根据公知技术在处理器(多个)106和系统101的其他组件之间进行连接并实现通信。所述总线将处理器106连接到存储器105和长期存储装置107,长期存储装置107例如可以包括硬盘驱动器(例如包括磁介质、CD、DVD和闪存中的任意一种)或磁带驱动器。系统101还可能包括用户接口适配器,其经由所述总线将微处理器106连接到一个或多个接口设备,例如键盘104、鼠标103、打印机/扫描仪110和/或其他接口设备,所述其他接口设备可以是任何用户接口设备,例如触敏屏幕、数字化输入小键盘等。所述总线还经由显示适配器将诸如LCD屏幕或显示器之类的显示设备102连接到微处理器106。
系统101可以通过能够与网络109通信(108)的网络适配器与其他计算机或计算机网络通信。实例网络适配器包括通信信道、令牌环、以太网或调制解调器。备选地,工作站101可以使用诸如CDPD(蜂窝数字分组数据)卡之类的无线接口通信。工作站101可以与局域网(LAN)或广域网(WAN)中的此类其他计算机关联,或者工作站101可以是包含其他计算机等的客户端/服务器布置中的客户端。所有这些配置以及适当的通信硬件和软件在本领域都是公知的。
图2示出了其中可以实现一个实施例的数据处理网络200。数据处理网络200可以包括多个单独网络,例如无线网络和有线网络,每个网络可以包括多个单独工作站101、201、202、203、204。此外,如本领域的技术人员将理解的,可以包括一个或多个LAN,其中一个LAN可以包括多个连接到主机处理器的智能工作站。
仍参考图2,所述网络还可以包括大型计算机或服务器,例如网关计算机(客户端服务器206)或应用服务器(远程服务器208,其可以存取数据存储库并且还可以直接从工作站205存取)。网关计算机206用作到每个网络207的进入点。将一个联网协议连接到另一联网协议时,需要网关。网关206可以优选地借助通信链路连接到另一网络(例如,因特网207)。网关206还可以使用通信链路直接连接到一个或多个工作站101、201、202、203、204。所述网关计算机可以使用国际商业机器公司提供的IBMeServerTM 服务器实现。
软件编程代码通常由系统101的处理器106从长期存储介质107(例如CD-ROM驱动器或硬盘驱动器)存取。所述软件编程代码可以包含在各种公知介质(例如软盘、硬盘驱动器或CD-ROM)中的任意一种上,以便与数据处理系统一起使用。所述代码可以分布在此类介质上,或者可以从存储器中分发给用户210、211,或通过网络从一个计算机系统的存储装置分发给其他计算机系统以便由此类其他系统的用户使用。
备选地,编程代码111可以包含在存储器105中,并由处理器106使用处理器总线存取。此类编程代码包括控制各种计算机组件的功能和交互的操作系统以及一个或多个应用程序112。程序代码通常从密集的存储介质107分页到高速存储器105,在高速存储器105中可由处理器106处理。用于在存储器中、物理介质上包含软件编程代码和/或经由网络分发软件代码的技术和方法是公知的,在此不进一步讨论。当在有形介质(包括但不限于电子存储器模块(RAM)、闪存、光盘(CD)、DVD、磁带等)上创建和存储时,程序代码通常称为“计算机程序产品”。所述计算机程序产品介质通常可由优选地在计算机系统中的处理电路读取以便由所述处理电路执行。
可以最容易地用于处理器的高速缓存(通常比处理器的其他高速缓存更快速且更小)是最低(L1或一级)高速缓存,而主存储(主存储器)是最高级高速缓存(L3,如果具有3个级别)。最低级高速缓存通常被分为保存要执行的机器指令的指令高速缓存(I高速缓存)以及保存数据操作数的数据高速缓存(D高速缓存)。
参考图3,针对处理器106示出了一个示例性处理器实施例。通常采用一个或多个级别的高速缓存303以缓冲存储块以便提高处理器性能。高速缓存303是保存可能使用的存储器数据的高速缓存行的高速缓冲器。典型的高速缓存行是64、128或256个字节的存储器数据。通常采用不同的高速缓存来缓存指令和数据。高速缓存一致性(存储器和高速缓存中的行副本的同步)通常由本领域公知的各种“窥探”算法提供。处理器系统的主存储装置105通常称为高速缓存。在具有4个级别的高速缓存303的处理器系统中,主存储装置105有时称为5级(L5)高速缓存,因为它通常较快速并且仅保存可用于计算机系统的非易失性存储装置(DASD、磁带等)的一部分。主存储装置105“缓存”数据页,这些页由操作系统页入和页出主存储装置105。
程序计数器(指令计数器)311跟踪要执行的当前指令的地址。z/Architecture处理器中的程序计数器是64位,并且可以被截断为31或24位以支持现有寻址限制。程序计数器通常包含在计算机的PSW(程序状态字)中,以便它在上下文切换期间保留。因此,具有程序计数器值的进行中程序可以例如由操作系统中断(上下文从程序环境切换到操作系统环境)。当程序未处于活动状态时,程序的PSW维护程序计数器值,当操作系统执行时,使用操作系统的程序计数器(在PSW中)。通常,程序计数器递增的数量等于当前指令的字节数。RISC(精简指令集计算)指令通常具有固定长度,而CISC(复杂指令集计算)指令通常具有可变长度。IBMz/Architecture的指令是长度为2、4或6个字节的CISC指令。例如通过上下文切换操作或分支指令的跳转操作来修改程序计数器311。在上下文切换操作中,将当前程序计数器值与有关正在被执行的程序的其他状态信息(例如条件码)一起保存在程序状态字(PSW)中,并加载指向要执行的新程序模块的指令的新程序计数器值。通过将分支指令的结果载入程序计数器311,执行跳转操作以允许程序做出决策或在程序中循环。
通常,采用指令取回单元305以代表处理器106取回指令。所述取回单元取回“后继顺序指令”、跳转指令的目标指令或上下文切换之后的程序的最前面指令。现代指令取回单元通常采用预取技术,以便根据可能使用已预取的指令的概率以推测方式预取指令。例如,取回单元可以取回包括下一顺序指令以及进一步顺序指令的附加字节的16字节指令。
然后由处理器106执行已取回的指令。在一个实施例中,将已取回的指令(多个)传递到所述取回单元的分派单元306。所述分派单元对所述指令(多个)进行解码并将有关已解码的指令(多个)的信息转发到适当的单元307、308、310。执行单元307通常从指令取回单元305接收有关已解码的算术指令的信息,并根据指令的操作码对操作数执行算术运算。优选地从存储器105、架构寄存器309或正在被执行的指令的立即字段将操作数提供给执行单元307。当存储时,将执行的结果存储在存储器105、寄存器309或其他机器硬件(例如控制寄存器、PSW寄存器等)中。
参考图5,示出了一个实例虚拟机(VM)环境。系统管理程序(本身可以是操作系统(OS),例如IBM提供的zVM)可以在多处理器“硬件”计算机系统上运行,所述计算机系统包括多个物理处理器、物理主存储器和物理适配器以便与包括存储装置、网络、显示器等的I/O外围设备通信。所述系统管理程序创建VM映像(例如VM1、VM2和VM3),以便包括OS和应用程序的软件可以使用虚拟资源在虚拟机中运行。在VM中运行的软件不知道它在VM中运行,并使用虚拟资源运行,好像这些资源是物理资源。IBM提供的zVM操作系统可以创建“客机”映像,每个客机映像实际上是一个虚拟机。此外,任何zVM客机本身都可以运行zVMOS,从而创建“第二级客机”。因此,虚拟机(客机映像)可以嵌套在虚拟机层次结构中,每个zVM针对其客机映像扮演系统管理程序的角色。另一方面,多处理器平台可以被“物理分区”,可以为每个物理分区分配资源(处理器、存储器、I/O)。每个物理分区是一个VM,因为在该分区中运行的软件不知道未分配给该分区的机器资源。因此,机器资源被“虚拟化”。在另一实施例中,逻辑分区是VM。
术语客机、虚拟机(VM)和逻辑分区在此可以互换使用,因为本领域中具有多种公知方法来虚拟化计算机系统映像。
例如,在来自的标题为“Virtualizationoverview(虚拟化概述)”的白皮书以及来自的“VMwareVMotionandCPUCompatibility”Infrastructure3(“VMwareVMotion和CPU兼容性”Infrastructure3)中描述了虚拟化。此外,美国专利申请公开第2009/0070760号“VIRTUALMACHINE(VM)MIGRATIONBETWEENPROCESSORARCHITECTURES(处理器架构之间的虚拟机(VM)迁移)”(Khatri等人,2007年9月6日提交)讨论了通过对CPUID寄存器的选定位进行掩码来仿真特定特性集以便在类似的机器池之间实现VM迁移。
参考图6,每个VM可以具有不同的OS和不同的应用。例如,OS1可以是IBM提供的z/OS,OS2可以是IBM提供的zLinux,或者所有OS可以是相同的OS,例如z/OS。
系统管理程序根据物理特性、资源和能力为每个VM创建逻辑特性、资源和能力。在一个实例系统中,可以通过动态地址转换将物理存储器部分分配给每个VM,物理处理器可以在VM之间在时间上进行共享,如I/O能力那样。
参考图7,每个逻辑处理器都可以通过系统管理程序管理的逻辑特性掩码来存取物理特性寄存器。因此,在逻辑处理器上运行的软件可以看起来像在常用处理器架构级别上运行,尽管实际处理器处于不同的架构级别。在一个实例中,物理特性寄存器可以是IntelCPUID寄存器,其指示Intel处理器的架构级别以及可用于程序员的特定特性。对逻辑特性掩码进行编程以便在虚拟机(VM)查询对应逻辑处理器的CPUID时,为VM中的软件提供物理处理器CPUID的全部或子集。提供的x86处理器架构ArchitectureSoftwareDeveloper’sManual,Volume2,Revision2.2January2006( 架构软件开发人员手册,第2卷,第2.2修订版,2006年1月)”提供了CPUID寄存器以标识处理器支持的特性。CPUID寄存器无特权,并使用间接移动(离开)指令对其进行存取。超过寄存器CPUID编号的所有寄存器都被保留,并且如果存取它们,则引起保留寄存器/字段错误。不允许写入并且不存在用于此类操作的指令。供应商信息位于CPUID寄存器0和1中,并以ASCII指定供应商名称以便处理器实施。在字符串结尾之后直到第16个字节的所有字节都是0。将早期ASCII字符放在较低编号寄存器中并放在较低编号的字节位置。CPUID寄存器4提供有关处理器特性的通用应用级别信息。它包含用于指示处理器模型中是否支持给定特性的一组标志位。当位是1时,支持该特性;当位是0时,不支持该特性。从未来处理器模型添加(或删除)新特性时,新特性的存在(或删除)将通过新特性位来指示。CPUID寄存器4被逻辑拆分为两半,这两半都包含通用特性和能力信息,但它们具有不同的使用模型和存取能力;此信息反映任何启用或禁用的特性的状态。CPUID寄存器4的上半部和下半部都可通过移动间接寄存器指令存取;根据实施方式,此存取的延迟可能较长,并且此存取方法不适用于使用自选择进行低延迟代码版本控制。此外,CPUID寄存器4的上半部还可使用测试特性指令存取;此存取的延迟与测试位指令的延迟相当,并且此存取方法支持使用自选择进行低延迟代码版本控制。
z/Architecture操作原理提供StoreFacilityListExtended(STFLE)指令,就像IntelCPUID寄存器为软件提供底层中央处理单元(CPU)或处理器的特性(或架构级别)的知识。STFLE指令具有下面表1中所示的格式。
表1
STFLE指令(表1)包括操作码字段位(0-15)、寄存器字段B2(16-19)和位移(立即)字段D2(20-31)。机器执行STFLE指令将存储提供有关程序存储器位置中的工具的信息的位列表,所述存储器位置通过将指令的B2字段指定的寄存器内容添加到12位D2立即字段来确定,所述存储器位置以第二操作数地址((B2)+D2)指定的双字(8个字节,一个字是4个字节)开始。zArchitecture中的程序存储器位置的地址进行动态地址转换(DAT)。
保留位是当前未被分配以表示工具的位。对于其中分配工具位的最左侧双字,所述保留位被存储为0。其中为模型分配最高编号工具位的双字右侧的双字可以被存储,也可以不被存储。不会针对未被存储的双字识别存取异常和PER事件。以双字计的第二操作数的大小比通用寄存器0的位56-63中指定的值大1。通用寄存器0的剩余位未被分配并且应包含0;否则,程序可能不会在将来兼容运行。
当第二操作数的大小足够大以包含为模型分配的所有工具位时,则将完整的工具列表存储在第二操作数位置,更新通用寄存器0的位56-63以使包含的值比包含为模型分配的所有工具位所需的双字数小1,并设置条件码0。
当第二操作数的大小并不足够大以包含为模型分配的所有工具位时,则仅存储第二操作数大小所指定的双字数,更新通用寄存器0的位56-63以使包含的值比包含为模型分配的所有工具位所需的双字数小1,并设置条件码3。
所述指令的执行导致设置条件码值,所述条件码值在上下文切换期间被保存在程序状态字(PSW)中。
特殊条件:
必须在双字边界上指定第二操作数;否则,将识别到规范异常。
生成的条件码:
0存储完整的工具列表
1—
2—
3存储不完整的工具列表
程序异常:
*存取(存储,第二操作数)
*操作(如果未安装store-facility-list-extended工具)
*规范
编程说明:
STOREFACILITYLISTEXTENDED的执行可能明显慢于仅测试存储中的一个字节。需要经常测试工具存在的程序(例如双路径代码,其中在一个路径中使用工具而在另一路径中不使用)应在初始化期间执行一次STOREFACILITYLISTEXTENDED指令。随后,程序可以通过使用诸如TESTUNDERMASK之类的指令检查所存储的结果来测试工具的存在。
当设置条件码0时,更新通用寄存器0的位56-63以指示存储的双字数。如果程序选择忽略通用寄存器0中的结果,则它应在执行STOREFACILITYLISTEXTENDED之前,确保将存储中的整个第二操作数设置为0。
表2示出了现有技术z/Architecture分配的STFLE位及其含义。如果位的含义是真,则无论当前架构为何都将此位设置为1。含义应用于当前架构模式,除非认为将它应用于特定架构模式。
保留未分配的位以用于指示新工具;这些位可以在将来被存储为1。
现有技术z/Architecture工具列表的定义如下表2中所示:
表2
位含义-当位是1时:
0安装了z/Architecture的第7和10章中的指令摘要图中标记为“N3”的指令。
1安装了z/Architecture架构模式。
2z/Architecture架构模式处于活动状态。当此位是0时,ESA/390架构模式处于活动状态。
3在z/Architecture架构模式下安装了DAT增强工具。DAT增强工具包括INVALIDATEDATTABLEENTRY(IDTE)和COMPAREANDSWAPANDPURE(CSPG)指令。
4INVALIDATEDATTABLEENTRY(IDTE)在一个或多个段表表项被无效时,通过选择性清除组合的区表和段表表项而执行无效和清除操作。IDTE还执行通过ASCE清除操作。除非位4是1,否则IDTE简单地清除所有TLB。如果位4是1,则位3是1。
5INVALIDATEDATTABLEENTRY(IDTE)在一个或多个区表表项被无效时,通过选择性清除组合的区表和段表表项而执行无效和清除操作。如果位5是1,则位3和4是1。
6在z/Architecture架构模式下安装了ASN-and-LXreuse工具。
7安装了store-facility-list-extended工具。
8在z/Architecture架构模式下安装了enhanced-DAT工具。
9在z/Architecture架构模式下安装了sense-running-status工具。
10在z/Architecture架构模式下安装了conditional-SSKE工具。
11在z/Architecture架构模式下安装了configuration-topology工具。
16安装了extended-translation工具2。
17安装了message-securityassist。
18在z/Architecture架构模式下安装了long-displacement工具。
19long-displacement工具具有高性能。如果位19是1,则位18是1。
20安装了HFP-multiply-and-add/subtract工具。
21在z/Architecture架构模式下安装了extended-immediate工具。
22在z/Architecture架构模式下安装了extended-translation工具3。
23在z/Architecture架构模式下安装了HFP-unnormalized-extension工具。
24安装了ETF2-enhancement工具。
25在z/Architecture架构模式下安装了store-clock-fast工具。
26在z/Architecture架构模式下安装了parsing-enhancement工具。
27在z/Architecture架构模式下安装了move-with-optional-specifications工具。
28在z/Architecture架构模式下安装了TOD-clock-steering工具。
30在z/Architecture架构模式下安装了ETF3-enhancement工具。
31在z/Architecture架构模式下安装了extract-CPU-time工具。
32在z/Architecture架构模式下安装了compare-and-swap-and-store工具。
33在z/Architecture架构模式下安装了compare-and-swap-and-store工具2。
34在z/Architecture架构模式下安装了general-instructions-extension工具。
35在z/Architecture架构模式下安装了execute-extensions工具。
36分配给IBM内部使用。
41在z/Architecture架构模式下安装了floating-point-support-enhancement工具(FPR-GR-transfer、FPS-sign-handling和DFProunding)。
42在z/Architecture架构模式下安装了DFP(decimal-floating-point)工具。
43DFP(decimal-floating-point)工具具有高性能,如果位43是1,则位42是1。
44在z/Architecture架构模式下安装了PFPO指令。
一个指令可以在架构中执行单个功能,或者在某些情况下,执行多个可选择功能中的任意一个。针对指令定义的可选择功能可能因机器的不同而不同。例如,当首次在架构指令集中引入时,多功能指令可能仅具有几个可选择功能。随后的架构指令集可以向先前引入的多功能指令引入多个可选择功能。在一个实施例中,可以为VM分配物理处理器的可选择功能的子集,由此在VM的逻辑处理器上运行的指令可以查询逻辑处理器的可用功能列表,并且仅返回分配给VM的功能,即使物理处理器可以执行多个可选择功能。在一个实施例中,这通过Function-Indicating-InstructionInterception工具(FIIIF)实现,此工具使得系统管理程序能够捕获或拦截客机(虚拟机)对此查询功能的执行,以便提供可用功能的精简列表。在另一实施例中,系统管理程序例如通过位掩码指定要报告给客机的功能集,并且多功能指令的查询功能报告此列表。此外,在一个实施例中,在逻辑处理器上执行的指令如果尝试执行选定的可选择功能,则将遇到程序异常。
具有可选择功能的指令的一个实例是z/Architecture的CIPHERMESSAGE指令。
CIPHERMESSAGE(KM)指令可以完成多个加密消息功能中的任意一个。CIPHERMESSAGE提供的一个功能是查询处理器以获得处理器支持的加密消息功能的位有效列表。
CIPHERMESSAGE指令(表3)的格式如下所示,其中R1指定第一通用寄存器,R2指定第二通用寄存器。
表3
CIPHERMESSAGE指令(表3)的执行如下所示:
完成隐含通用寄存器0中的功能代码指定的功能。
忽略指令的位16-23。
通用寄存器0的位位置57-63包含功能代码。
表4中示出了CIPHERMESSAGE和CIPHERMESSAGEWITHCHAINING的当前分配的功能代码,分别是(0-3和18-20)。所有其他功能代码未被分配。对于加密功能,位56是修改符位,其指定是执行加密还是解密操作。对于所有其他功能,忽略修改符位。通用寄存器0的所有其他位被忽略。
隐含通用寄存器1包含存储装置中的参数块的最左侧字节的逻辑地址。在24位寻址模式下,通用寄存器1的位位置40-63的内容构成地址,位位置0-39的内容被忽略。在31位寻址模式下,通用寄存器1的位位置33-63的内容构成地址,位位置0-32的内容被忽略。在64位寻址模式下,通用寄存器1的位位置0-63的内容构成地址。
查询功能提供指示其他功能可用性的手段。对于查询功能,忽略指令字段(R1,R2)和R2+1指定的通用寄存器的内容。
对于所有其他功能,使用参数块中的加密密钥按照功能代码指定的那样加密第二操作数(由R2指定),并且将结果放在第一操作数位置。
对于CIPHERMESSAGEWITHCHAINING,加密还使用参数块中的初始链值,并且更新链值作为操作的一部分。表5中示出了用于24位寻址的寄存器。
R1字段指定通用寄存器,并且必须指定偶数寄存器;否则,将识别到规范异常。
R2字段指定奇偶通用寄存器对,并且必须指定偶数寄存器;否则,将识别到规范异常。
第一和第二操作数的最左侧字节的位置分别由R1和R2通用寄存器的内容指定。第二操作数位置的字节数在通用寄存器R2+1中指定。第一操作数的长度与第二操作数相同。
作为操作的一部分,通用寄存器R1和R2中的地址按处理的字节数递增,并且通用寄存器R2+1中的长度按相同数量递减。所述地址和长度的形成和更新取决于寻址模式。
在24位寻址模式下,通用寄存器R1和R2的位位置40-63的内容分别构成第一和第二操作数的地址,位位置0-39的内容被忽略;已更新地址的位40-63替换通用寄存器R1和R2中的对应位,已更新地址的位位置40以外的进位被忽略,通用寄存器R1和R2的位位置32-39的内容被设置为0。在31位寻址模式下,通用寄存器R1和R2的位位置33-63的内容分别构成第一和第二操作数的地址,位位置0-32的内容被忽略;已更新地址的位33-63替换通用寄存器R1和R2中的对应位,已更新地址的位位置33以外的进位被忽略,通用寄存器R1和R2的位位置32的内容被设置为0。在64位寻址模式下,通用寄存器R1和R2的位位置0-63的内容分别构成第一和第二操作数的地址;已更新地址的位0-63替换通用寄存器R1和R2的内容,位位置0以外的进位被忽略。
在24位和31位寻址模式两者中,通用寄存器R2+1的位位置32-63的内容形成指定第一和第二操作数中的字节数的32位无符号二进制整数,位位置0-31的内容被忽略;已更新值的位32-63替换通用寄存器R2+1中的对应位。在64位寻址模式下,通用寄存器R2+1的位位置0-63的内容形成指定第一和第二操作数中的字节数的64位无符号二进制整数;已更新值替换通用寄存器R2+1的内容。
在24位或31位寻址模式下,通用寄存器R1、R2和R2+1的位位置0-31的内容始终保持不变。表5示出了刚才描述的通用寄存器的内容。
在存取寄存器模式下,存取寄存器1、R1和R2分别指定包含参数块、第一和第二操作数的地址空间。
获得结果,好像处理在第一和第二操作数的左端开始并逐块继续到右侧。当通用寄存器R2+1中指定的第二操作数中的字节数已被处理并放置在第一操作数位置处时,操作结束(称为正常完成),或者当小于第二操作数长度的CPU确定的块数已被处理时,操作结束(称为部分完成)。CPU确定的块数取决于模型,并且每次执行指令时可能是不同的数量。CPU确定的块数通常为非0。在某些异常情况下,此数量可能是0,并且可能设置条件码3而没有进度。然而,CPU将防止此没有进度情况的无尽重现。
如果发生以下任一情况,则第一操作数位置和链值字段中的结果都不可预测:
加密密钥字段与第一操作数的任何部分重叠。
链值字段与第一操作数或第二操作数的任何部分重叠。
第一和第二操作数破坏性重叠。当将数据移动到第一操作数位置之后,第一操作数位置用作源时,认为操作数是破坏性重叠,假设处理从左到右执行并且一次一个字节。
当操作由于正常完成而结束时,设置条件码0并且R2+1中的结果值是0。当操作由于部分完成而结束时,设置条件码3并且R2+1中的结果值为非0。
当识别到存储变更PER事件时,在报告此事件之前,将少于4K的额外字节存储到第一操作数位置。
当第二操作数长度初始为0时,不存取参数块、第一和第二操作数,通用寄存器R1、R2和R2+1不变,并且设置条件码0。
当R1和R2字段的内容相同时,指定寄存器的内容仅按处理的字节数递增,而不是按处理的字节数的两倍递增。
如其他CPU和信道程序观察的那样,对参数块和存储操作数的引用可以是多存取引用,对这些存储位置的存取不一定是块并行的,并且未定义这些存取或引用的顺序。
在某些异常情况下,可以通过设置条件码3完成指令执行,而不更新寄存器和链值以反映被处理的第一和第二操作数的最后一个单元。在这种情况下,被处理的单元的大小取决于情况和模型,但大小被限制以便已被处理而未报告的第一和第二操作数的部分不会在存储装置中重叠。在所有情况下,当适用时,针对所有被处理的第一操作数位置设置更改位并报告PER存储变更事件。
可以针对大于在指令的单次执行中处理的操作数部分报告存取异常;然而,不会针对超过操作数长度的位置或针对超过被处理的当前位置4K字节以上的位置识别存取异常。
CIPHERMESSAGE的功能代码如下所示。
表4
所有寻址模式
24位寻址模式
表5
使用CIPHERMESSAGE指令作为实例,实例机器可以实现CIPHERMESSAGE功能。在所述实例实施方式中,主机处理器可以实现示出的所有功能(功能代码0-3和18-20)。主机操作系统(OS)(或系统管理程序)可以为客机OS创建一个或多个虚拟机。可以针对没有CIPHERMESSAGE指令的上一级别架构定义一个虚拟机。
根据一个实施例,如果安装了InstructionBlocking工具并将CIPHERMESSAGE指令指定为VM的阻止指令,则虚拟机将不允许在虚拟机中运行的程序执行CIPHERMESSAGE指令,尽管底层主机支持CIPHERMESSAGE指令。尝试在VM中执行CIPHERMESSAGE指令将导致程序检查(程序异常)。
根据另一实施例,如果安装了Functionblocking工具并在VM中仅允许CIPHERMESSAGE功能的子集(例如功能代码0-3),则虚拟机将允许在虚拟机中运行的程序执行CIPHERMESSAGE,但不允许执行具有0-3之外的功能代码的CIPHERMESSAGE指令,尽管底层主机支持支持功能代码(0-3和18-20)的CIPHERMESSAGE指令。尝试执行具有0-3之外功能代码(例如18-20中的任意一个)的CIPHERMESSAGE指令将导致程序检查(程序异常)。
在另一实施例中,如果安装了Functiontest/query工具并在VM中仅允许CIPHERMESSAGE功能的子集(例如功能代码0-3),则执行CIPHERMESSAGE功能的CIPHERMESSAGE查询将仅返回功能代码0-3,尽管底层主机支持功能代码0-3和18-20。
INSTRUCTIONBLOCKING工具:
参考图8,示出了VM中的虚拟架构级别(VAL)InstructionBlocking工具的功能。要在VM中执行的每个指令(如存储列中的指令中所示)都包括操作码。在某些实施方式中,操作码是指令901、902、903、904中的单个字段。在其他实施方式中,操作码可以分布在指令905( )、906()的多个字段中。优选地,电路、微代码或其组合将根据操作码确定当前虚拟机是否支持要支持的指令。如果不支持,则将指示程序中断(例如程序异常)并禁止指令。
在一种实施方式中,将使用要执行的指令的操作码作为操作码表907的索引以查找与操作码关联的表项。查找的表项将包括指示操作码支持的机器级别(ML)的代码。在另一种实施方式中,每个虚拟机将具有一个操作码表,并且此表中的表项将指示虚拟机是否支持操作码。
参考图9,将从表907中获得的代码(机器级别(ML))1002与虚拟机的状态描述表1004的状态描述表项(IBC)1005相比较(1008),并且如果机器级别代码1002大于IBC状态描述表项1005,则指令将正常执行1007,否则,尝试执行将导致程序异常1006。在另一实施例中,可以使用除了OpCode字段之外的指令字段作为操作码表907的索引。例如,在现有机器架构中,操作码可以具有保留字段(是0或被忽略),在较新的架构级别中采用这些字段以提供新功能。一个实施例将包括以OpCode作为操作码表907的索引的这些位。在另一实施例中,操作码表907除了ML字段之外,可以具有用于指示在关联指令中允许使用保留位的字段。例如,如果指令具有4个保留位,则ML表可以包含0000,前提是所有位必须是0或在选定位中是1,其中1指示字段的先前保留的对应位可以是0或1(针对VM允许新引入的指令功能)。
INSTRUCTIONTEST/QUERY工具:
如果安装了InstructionTest/Query工具的FUNCTIONBLOCKING工具(图10),则在一个实施例中,操作码表表项1001另外可以包括功能代码字段(FCx)1003(或指向功能代码表1108的指针)。将功能代码字段1003(或功能代码表1108表项1107)与要执行的功能代码1102相比较(1103)。如果功能代码匹配,则允许(1105)指令使用功能代码,如果功能代码不匹配(1103),则指令执行导致程序中断,例如程序异常或规范异常(程序检查)1104。
参考图11,如果安装了InstructionTest/Query工具的FUNCTIONTEST/QUERYBLOCKING工具,如果执行任意查询指令1201以确定已安装的指令功能,则仅返回(1205)虚拟机允许的功能代码。在一个实施例中,为虚拟机提供位有效表1108,虚拟机使用此表响应此类查询。在另一实施例中,为虚拟机提供掩码(未示出)以便与主机的已安装功能代码进行“与”运算,以在虚拟机中产生指令的允许功能代码1107的结果。
参考图8,示出了实例z/Architecture指令格式。格式901示出了2字节格式,其中OpCode(Op)占用高位字节,通用寄存器字段R1和R2占用剩余字节的各自4位。格式902示出了仅2字节OpCode指令格式。格式903示出了4字节(字)指令,其具有1字节OpCode(Op),接着是3个寄存器字段(R1、X2和B2),然后是名为位移字段(D2)的立即字段。格式904示出了4字节指令,其具有4字节OpCode(Op),接着是4位寄存器字段(B2),然后是12位立即字段(I2)。格式905示出了4字节指令,其具有1字节OpCode(Op),接着是4位掩码M1,后跟4位OpCode扩展(Op)和保留的4位字段,然后是12位立即字段(I2)。格式906示出了6字节指令,其具有1字节OpCode(Op),接着是3个寄存器字段(R1、X2和B2),然后是名为位移字段(DL2)的立即字段,后跟8位立即字段(DH2)和8位OpCode扩展(Op)。
参考图8和9,在一个实施例中,当取回指令以便由虚拟机的逻辑处理器执行时,将使用指令的OpCode(多个)作为搜索参数来搜索操作码表907。如果找到指令的表项1001,则此表项包括用于确定指令许可信息的信息1002、1003。在一个优选实施例中,表项包括字段1002,其指定指示支持指令的架构的机器级别的代码(ML)。为每个VM提供状态描述1004。状态描述包括字段(IBC)1005,其表示VM要仿真的架构的机器级别。如果支持指令的架构的机器级别(ML)大于VM要仿真的架构的机器级别(IBC)(1005),则发信号通知程序异常(程序检查),并且在一个实施例中,可禁止指令的执行。另一方面,如果支持指令的架构的机器级别(ML)不大于VM要仿真的架构的机器级别(IBC),则允许指令执行。
在某些环境中,提供能够执行多个功能中的任意一个的指令(例如上面描述的CIPHERMESSAGE指令)。指令可以通过指定代表功能的功能代码(FC)来选择功能。功能代码例如可以通过指令间接指定,或者通过指令的位或字段显式指定。在某些情况下,某些功能代码初始可以在机器架构级别实现(例如0-3),而其他功能代码可以在随后的机器架构级别添加。可以为VM提供能力以便仅允许功能代码执行较旧架构级别,并且阻止(防止)执行较新机构级别的功能。
参考图10,这可以通过在操作码表表项1001中具有功能代码字段(FCx)1003实现。当要执行指令时,FCx字段1003指定要返回的允许功能代码列表,而不是主机处理器支持的实际功能代码。在一个实施例中,操作码表表项的FCx1003字段与IBC字段1005串接以作为FCx表1108的索引(1006),以便查找包括允许的功能代码(FC)1107的表项。将允许的FC1107与指令指定的FC1102相比较(在CipherMessage指令中,通用寄存器01101的位1102包含指定的FC1102)。如果允许FC值(1103),则允许正常执行FC位表示的功能(1105)。如果不允许FC值(1103),则执行程序异常,例如规范异常(程序检查)事件(1104)。同样,当执行功能查询/测试操作1201(例如CIPHERMESSAGE指令查询操作)时,操作码表表项的FCX位1003与IBC位1005串接(1106)以作为FCX表1108的索引,以便针对其OpCode定位操作码表表项1001的指令来查找允许的FC1107。然后将允许的FC返回(1105)到功能查询/测试操作指定的位置。
在一个实施例中,当FCX位是0时,不执行FCx表1108存取,并且在不进行转换的情况下使用对应指令指示的任一功能代码。
在一个实施例中,对指令的其他架构修改可以使用针对功能代码描述的相同机制。在这种情况下,例如,某架构级别的指令905在OpCode扩展字段和I2字段之间具有保留位(0000)。优选地,针对0测试保留位,以确保在其中非0位支持尚未被支持的功能的环境中指令将正确执行。较新的架构实现新功能,使用一个或多个保留位标识所述新功能。在一个实例中,这4个保留位(Res)可以作为FCx表1108的索引以便判定它们是否被支持,如图10中针对FC位1102示出的那样。在这种情况下,对于功能代码,串接将为对于新功能许可测试1103,串接将为对照允许的FC位1107检查指令905的Res字段以判定是否允许功能(1103),而不是将FC1102与允许的FC1107相比较。
在另一实施例中,可以串接指令905的Res字段,好像它是905OpCode的第三OpCode扩展,以便作为操作码表907的索引以判定是否允许使用此字段引入的功能。
作为指令取回的一部分或在指令取回之后,CPU可以确定指令的某些属性,例如操作数的数量、操作数的类型(存储或寄存器)、操作数对齐要求和授权要求。在仿真环境中,此确定可以是使用操作码作为索引的简单表查找的结果;在高性能CPU硬件实施方式中,可以将此确定内置于处理器的指令解码电路中。因此,对指令进行解码时,可以将此指令的机器级别与指示允许的机器级别的可编程值相比较。取决于实施方式,将阻止分派、执行或完成机器级别高于允许值的被解码指令,并且可以针对无效操作码生成机器相关异常。
virtual-architecture-level工具可以引入与每个指令关联的附加属性:指令首次被引入架构的机器级别。此机器级别可以是连续统(continuum)上的一个编码数字点(例如,10.2表示第二固件级别的第10代机器),或者它可以只是相对于最新机器级别的一个值(例如,2[或-2]表示指令被引入当前机器之前的两代机器)。
参考图12,在一个实施例中,阻止处理器执行特定指令1258。设置指令阻止值(1251)。取回要由处理器执行的指令(1252),所述指令包括操作码,所述处理器支持所述指令。当执行所述指令时,将所述指令阻止值与所述指令(或所述指令的操作码)相比较以判定是否允许执行。响应于(1254)所述指令阻止值允许所述指令的执行,由所述处理器执行(1255)所述取回的指令;以及响应于(1254)所述指令阻止值不允许所述指令的执行(1256),阻止所取回的指令的执行并导致程序异常事件。
参考图13,在一个实施例中,所述处理器是虚拟机的逻辑处理器,其中所述逻辑处理器执行所述取回。判定(1254)所述虚拟机的指令阻止值,其中在具有一个或多个物理处理器的所述逻辑处理器中设置所述指令阻止值,其中所述一个或多个物理处理器支持所述指令,其中响应于所述指令阻止值允许所述指令的执行,所述逻辑处理器完成所述执行(1352)。如果阻止所述指令(1256),则报告程序异常事件。
参考图14,在一个实施例中,所述处理器是虚拟机的逻辑处理器的一个或多个物理处理器,其中在所述一个或多个物理处理器中设置所述指令阻止值(1451),其中由所述一个或多个物理处理器执行所述取回。所述物理处理器将所述指令阻止值与要执行的指令相比较(1452)以判定是否阻止所述指令,并且所述物理处理器执行所述指令(1454)或导致程序异常事件(1455)。
参考图15,在一个实施例中,针对虚拟机定义所述指令阻止值以便阻止所述指令的执行,响应于启用所述虚拟机以使用所述物理处理器(1553)而设置(1551)所述指令阻止值;设置另一指令阻止值(1552),针对具有另一逻辑处理器的另一虚拟机定义所述另一指令阻止值,响应于启用所述另一虚拟机以使用所述物理处理器(1553)而设置所述另一指令阻止值;以及响应于所述另一指令阻止值允许(1254)所述指令的执行,允许所述另一逻辑处理器执行所述指令(1255);以及响应于所述另一指令阻止值不允许(1254)所述指令的执行,不允许所述另一逻辑处理器执行所述指令(1256)。
在一个实施例中,针对所述虚拟机定义所述指令阻止值以便阻止所述指令的执行,响应于启用所述虚拟机以使用所述物理处理器而设置所述指令阻止值,设置另一指令阻止值,针对具有另一逻辑处理器的另一虚拟机定义所述另一指令阻止值,响应于启用所述另一虚拟机以使用所述物理处理器而设置所述另一指令阻止值;以及响应于所述另一指令阻止值允许所述指令的执行,当启用所述另一虚拟机以使用所述物理处理器时,允许所述物理处理器执行所述指令;以及响应于所述另一指令阻止值不允许所述指令的执行,当启用所述另一虚拟机以使用所述物理处理器时,不允许所述物理处理器执行所述指令。
参考图12,在一个实施例中,响应于指令1258采用与多个可选择功能中的选定功能1259关联的允许功能代码,指令1258是允许的指令,其中响应于所述指令采用不允许的功能代码,所述指令是不允许的指令,其中由所述指令指定功能代码。
在一个实施例中,通过将所述指令的所述操作码与所述指令阻止值相关联而判定所述指令是否是允许的指令。
在一个实施例中,所取回的指令指定要执行的功能,使用所述指令的所述操作码作为表的索引以查找所述指令阻止值,所述指令阻止值包括许可字段,使用所述许可字段确定允许的功能。响应于所述功能是允许的功能,允许所述指令的执行,并且响应于所述功能是不允许的功能,不允许所述指令的执行。
上述内容可以用于理解一个计算机系统实施例的术语和结构。各实施例可以并不限于z/Architecture或其提供的说明。使用此处的教导,各实施例可以有利地应用于其他计算机制造商的其他计算机架构。
虽然在此示出和描述了优选实施例,但可以理解,实施例可以并不限于在此公开的精确结构,并且可以在所附权利要求中限定的本发明的范围内保留所有更改和修改的权利。

Claims (6)

1.一种用于阻止处理器的多功能指令的指令功能的方法,所述处理器是虚拟机的逻辑处理器,所述逻辑处理器具有一个或多个物理处理器,所述方法包括:
在所述逻辑处理器中设置指令阻止值,所述指令阻止值确定允许的功能;
由所述逻辑处理器取回要由所述逻辑处理器执行的指令,所取回的指令包括操作码,所述操作码包括功能代码,所取回的指令可以通过指定代表功能的功能代码来选择功能,所述一个或多个物理处理器支持所取回的指令;
通过比较所述指令阻止值确定的允许的功能与所取回的指令的功能,判断所述指令阻止值是否允许所取回的指令的功能,
响应于所述指令阻止值允许所取回的指令的功能的执行,由所述逻辑处理器执行所取回的指令;以及
响应于所述指令阻止值不允许所取回的指令的功能的执行,阻止所取回的指令的执行并导致程序异常事件。
2.根据权利要求1的方法,还包括:
针对所述虚拟机定义所述指令阻止值以便阻止所取回的指令的执行,响应于启用所述虚拟机以使用所述虚拟机的逻辑处理器具有的一个或多个物理处理器设置所述指令阻止值;
设置针对具有另一逻辑处理器的另一虚拟机定义的另一指令阻止值,响应于启用所述另一虚拟机以使用所述另一虚拟机的逻辑处理器具有的一个或多个物理处理器而设置所述另一指令阻止值;以及
响应于所述另一指令阻止值允许所取回的指令的执行,允许由所述另一逻辑处理器执行所取回的指令;以及
响应于所述另一指令阻止值不允许所取回的指令的执行,不允许由所述另一逻辑处理器执行所取回的指令。
3.根据权利要求1的方法,还包括:
针对所述虚拟机定义所述指令阻止值以便阻止所取回的指令的执行,响应于启用所述虚拟机以使用所述物理处理器而设置所述指令阻止值;
设置针对具有另一逻辑处理器的另一虚拟机定义的另一指令阻止值,响应于启用所述另一虚拟机以使用所述物理处理器而设置所述另一指令阻止值;以及
响应于所述另一指令阻止值允许所取回的指令的执行,当启用所述另一虚拟机以使用所述物理处理器时,允许由所述物理处理器执行所取回的指令;以及
响应于所述另一指令阻止值不允许所述指令的执行,当启用所述另一虚拟机以使用所述物理处理器时,不允许由所述物理处理器执行所取回的指令。
4.根据权利要求1的方法,还包括:
通过将所取回的指令的操作码与所述指令阻止值关联而判定所取回的指令是否是允许的指令。
5.根据权利要求1的方法,其中所取回的指令指定要完成的功能,还包括:
使用所述操作码作为表的索引以查找所述指令阻止值,所述指令阻止值包括许可字段;
使用所述许可字段确定允许的功能。
6.一种用于阻止处理器执行特定指令的计算机系统,包括:
存储器;
与所述存储器通信的处理器,所述处理器包括用于从所述存储器取回指令的指令取回元件以及一个或多个用于执行所取回的指令的执行元件;
其中所述计算机系统被配置为执行权利要求1至5中的任一权利要求中所述的方法。
CN201080066985.8A 2010-06-24 2010-11-08 用于阻止虚拟处理器的多功能指令的指令功能的功能虚拟化工具 Active CN102906700B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/822,368 2010-06-24
US12/822,368 US10521231B2 (en) 2010-06-24 2010-06-24 Function virtualization facility for blocking instruction function of a multi-function instruction of a virtual processor
PCT/EP2010/067045 WO2011160723A1 (en) 2010-06-24 2010-11-08 Function virtualization facility for blocking instruction function of a multi-function instruction of a virtual processor

Publications (2)

Publication Number Publication Date
CN102906700A CN102906700A (zh) 2013-01-30
CN102906700B true CN102906700B (zh) 2015-11-18

Family

ID=43531103

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201080066985.8A Active CN102906700B (zh) 2010-06-24 2010-11-08 用于阻止虚拟处理器的多功能指令的指令功能的功能虚拟化工具

Country Status (20)

Country Link
US (3) US10521231B2 (zh)
EP (1) EP2430532B1 (zh)
JP (1) JP5717848B2 (zh)
KR (1) KR101442382B1 (zh)
CN (1) CN102906700B (zh)
AU (1) AU2010355814B2 (zh)
BR (1) BR112012033816B1 (zh)
CA (1) CA2800640C (zh)
DK (1) DK2430532T3 (zh)
ES (1) ES2435634T3 (zh)
HK (1) HK1180804A1 (zh)
HR (1) HRP20131009T1 (zh)
MX (1) MX2012014529A (zh)
PL (1) PL2430532T3 (zh)
PT (1) PT2430532E (zh)
RU (1) RU2565514C2 (zh)
SG (1) SG186079A1 (zh)
SI (1) SI2430532T1 (zh)
WO (1) WO2011160723A1 (zh)
ZA (1) ZA201209646B (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8615645B2 (en) 2010-06-23 2013-12-24 International Business Machines Corporation Controlling the selectively setting of operational parameters for an adapter
US9851969B2 (en) 2010-06-24 2017-12-26 International Business Machines Corporation Function virtualization facility for function query of a processor
US10521231B2 (en) 2010-06-24 2019-12-31 International Business Machines Corporation Function virtualization facility for blocking instruction function of a multi-function instruction of a virtual processor
US8533714B2 (en) 2011-05-03 2013-09-10 International Business Machines Corporation Dynamic virtual machine domain configuration and virtual machine relocation management
CN103309645B (zh) * 2013-04-27 2015-09-16 李朝波 一种在计算机数据处理指令中附加跳转功能的方法及cpu模块
US9582295B2 (en) 2014-03-18 2017-02-28 International Business Machines Corporation Architectural mode configuration
US9916185B2 (en) 2014-03-18 2018-03-13 International Business Machines Corporation Managing processing associated with selected architectural facilities
US10210323B2 (en) * 2016-05-06 2019-02-19 The Boeing Company Information assurance system for secure program execution
US10235138B2 (en) * 2016-09-30 2019-03-19 International Business Machines Corporation Instruction to provide true random numbers
US11226839B2 (en) 2019-02-27 2022-01-18 International Business Machines Corporation Maintaining compatibility for complex functions over multiple machine generations
KR102657567B1 (ko) * 2019-06-04 2024-04-16 에스케이하이닉스 주식회사 인에이블 신호 생성 회로 및 이를 이용하는 반도체 장치
US11762552B2 (en) * 2021-03-15 2023-09-19 Everspin Technologies, Inc. Systems and methods for NOR page write emulation mode in serial STT-MRAM

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010065325A1 (en) * 2008-12-01 2010-06-10 Citrix Systems, Inc. Systems and methods for facilitating virtualization of a heterogeneous processor pool

Family Cites Families (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3626427A (en) * 1967-01-13 1971-12-07 Ibm Large-scale data processing system
JPS60159948A (ja) 1984-01-30 1985-08-21 Nec Corp 命令例外処理方式
JPS62123552A (ja) 1985-11-22 1987-06-04 Nec Corp 中央処理装置割当て方式
KR930006542B1 (ko) 1990-12-31 1993-07-16 한국전기통신공사 마이크로 콘트롤러를 이용한 톤 발생장치
US5651122A (en) * 1991-05-13 1997-07-22 Motorola, Inc. Pipelined data processor that detects an illegal instruction by detecting legal instruction operation codes
SG52380A1 (en) * 1991-09-23 1998-09-28 Intel Corp A computer system and method for executing interrupt instructions in two operating modes
AU6629894A (en) 1993-05-07 1994-12-12 Apple Computer, Inc. Method for decoding guest instructions for a host computer
US5925125A (en) 1993-06-24 1999-07-20 International Business Machines Corporation Apparatus and method for pre-verifying a computer instruction set to prevent the initiation of the execution of undefined instructions
US5551013A (en) 1994-06-03 1996-08-27 International Business Machines Corporation Multiprocessor for hardware emulation
US5632028A (en) 1995-03-03 1997-05-20 Hal Computer Systems, Inc. Hardware support for fast software emulation of unimplemented instructions
US5790825A (en) 1995-11-08 1998-08-04 Apple Computer, Inc. Method for emulating guest instructions on a host computer through dynamic recompilation of host instructions
US5758140A (en) 1996-01-25 1998-05-26 International Business Machines Corporation Method and system for emulating instructions by performing an operation directly using special-purpose register contents
US6076156A (en) 1997-07-17 2000-06-13 Advanced Micro Devices, Inc. Instruction redefinition using model specific registers
US6009261A (en) 1997-12-16 1999-12-28 International Business Machines Corporation Preprocessing of stored target routines for emulating incompatible instructions on a target processor
US6092185A (en) 1998-04-30 2000-07-18 International Business Machines Corporation Opcode compare logic in E-unit for breaking infinite loops, detecting invalid opcodes and other exception checking
US6308255B1 (en) 1998-05-26 2001-10-23 Advanced Micro Devices, Inc. Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system
US6138229A (en) 1998-05-29 2000-10-24 Motorola, Inc. Customizable instruction set processor with non-configurable/configurable decoding units and non-configurable/configurable execution units
US6185670B1 (en) * 1998-10-12 2001-02-06 Intel Corporation System for reducing number of opcodes required in a processor using an instruction format including operation class code and operation selector code fields
US6463582B1 (en) 1998-10-21 2002-10-08 Fujitsu Limited Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method
US6427202B1 (en) 1999-05-04 2002-07-30 Microchip Technology Incorporated Microcontroller with configurable instruction set
US6859870B1 (en) 2000-03-07 2005-02-22 University Of Washington Method and apparatus for compressing VLIW instruction and sharing subinstructions
US7865948B1 (en) 2001-12-03 2011-01-04 Advanced Micro Devices, Inc. Method and apparatus for restricted execution of security sensitive instructions
US20040031022A1 (en) 2002-08-02 2004-02-12 Masayuki Kabasawa Information processing device for multiple instruction sets with reconfigurable mechanism
JP2004127255A (ja) 2002-08-02 2004-04-22 Renesas Technology Corp 情報処理装置
US7159122B2 (en) 2003-05-12 2007-01-02 International Business Machines Corporation Message digest instructions
US7257718B2 (en) 2003-05-12 2007-08-14 International Business Machines Corporation Cipher message assist instructions
EP1678617A4 (en) 2003-10-08 2008-03-26 Unisys Corp COMPUTER SYSTEM PARAVIRTUALIZATION BY USING A HYPERVISOR IMPLEMENTED IN A PARTITION OF THE HOST SYSTEM
US7552426B2 (en) * 2003-10-14 2009-06-23 Microsoft Corporation Systems and methods for using synthetic instructions in a virtual machine
JP2005149361A (ja) 2003-11-19 2005-06-09 Hitachi Ltd 仮想計算機システムおよび仮想計算機システムの制御プログラム
US7493483B2 (en) 2004-02-19 2009-02-17 International Business Machines Corporation Method to prevent vulnerability to virus and worm attacks through instruction remapping
JP2005242510A (ja) 2004-02-25 2005-09-08 Matsushita Electric Ind Co Ltd 情報処理装置の命令使用権限設定方法及び情報処理装置
US20050251652A1 (en) * 2004-04-27 2005-11-10 Eswaramoorthi Nallusamy Methods and apparatus for processing an extensible firmware interface byte code instruction in a loop
US7802250B2 (en) * 2004-06-28 2010-09-21 Intel Corporation Support for transitioning to a virtual machine monitor based upon the privilege level of guest software
JP2006221606A (ja) 2005-01-17 2006-08-24 Renesas Technology Corp データプロセッサ
US8572606B1 (en) * 2005-12-29 2013-10-29 Vmware, Inc. System and method for avoiding synchronization bugs through virtualization
JP2008146542A (ja) * 2006-12-13 2008-06-26 Fujitsu Ltd マルチプロセッサシステム、プロセッサ装置及び例外処理方法
US7802252B2 (en) 2007-01-09 2010-09-21 International Business Machines Corporation Method and apparatus for selecting the architecture level to which a processor appears to conform
US8321849B2 (en) * 2007-01-26 2012-11-27 Nvidia Corporation Virtual architecture and instruction set for parallel thread computing
JP4882845B2 (ja) 2007-04-19 2012-02-22 株式会社日立製作所 仮想計算機システム
US8479195B2 (en) 2007-05-16 2013-07-02 Vmware, Inc. Dynamic selection and application of multiple virtualization techniques
US7689311B2 (en) 2007-05-29 2010-03-30 Palo Alto Research Center Incorporated Model-based planning using query-based component executable instructions
US8127296B2 (en) 2007-09-06 2012-02-28 Dell Products L.P. Virtual machine migration between processors having VM migration registers controlled by firmware to modify the reporting of common processor feature sets to support the migration
US7925923B1 (en) * 2008-01-31 2011-04-12 Hewlett-Packard Development Company, L.P. Migrating a virtual machine in response to failure of an instruction to execute
US8332846B2 (en) 2008-02-28 2012-12-11 Sony Mobile Communications Ab Selective exposure to USB device functionality for a virtual machine by filtering descriptors
US8078854B2 (en) * 2008-12-12 2011-12-13 Oracle America, Inc. Using register rename maps to facilitate precise exception semantics
US8195923B2 (en) 2009-04-07 2012-06-05 Oracle America, Inc. Methods and mechanisms to support multiple features for a number of opcodes
US9851969B2 (en) 2010-06-24 2017-12-26 International Business Machines Corporation Function virtualization facility for function query of a processor
US10521231B2 (en) 2010-06-24 2019-12-31 International Business Machines Corporation Function virtualization facility for blocking instruction function of a multi-function instruction of a virtual processor

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010065325A1 (en) * 2008-12-01 2010-06-10 Citrix Systems, Inc. Systems and methods for facilitating virtualization of a heterogeneous processor pool

Also Published As

Publication number Publication date
BR112012033816B1 (pt) 2020-12-01
US20210255867A1 (en) 2021-08-19
US20110320773A1 (en) 2011-12-29
US10521231B2 (en) 2019-12-31
SG186079A1 (en) 2013-01-30
CN102906700A (zh) 2013-01-30
KR20130060233A (ko) 2013-06-07
HK1180804A1 (zh) 2013-10-25
ZA201209646B (en) 2013-08-28
JP5717848B2 (ja) 2015-05-13
AU2010355814A1 (en) 2012-12-20
JP2013535063A (ja) 2013-09-09
PL2430532T3 (pl) 2014-04-30
CA2800640A1 (en) 2011-12-29
RU2565514C2 (ru) 2015-10-20
MX2012014529A (es) 2013-01-29
AU2010355814B2 (en) 2014-05-15
US11086624B2 (en) 2021-08-10
EP2430532A1 (en) 2012-03-21
CA2800640C (en) 2017-12-12
KR101442382B1 (ko) 2014-09-17
US20190361701A1 (en) 2019-11-28
HRP20131009T1 (hr) 2013-12-06
SI2430532T1 (sl) 2014-02-28
PT2430532E (pt) 2013-11-25
US11809870B2 (en) 2023-11-07
EP2430532B1 (en) 2013-10-16
ES2435634T3 (es) 2013-12-20
BR112012033816A2 (pt) 2018-05-15
WO2011160723A1 (en) 2011-12-29
RU2012149006A (ru) 2014-05-27
DK2430532T3 (da) 2013-11-25

Similar Documents

Publication Publication Date Title
CN102906700B (zh) 用于阻止虚拟处理器的多功能指令的指令功能的功能虚拟化工具
JP7324287B2 (ja) 割り込みテーブルを使用した有向割り込みの仮想化方法、システム、プログラム
TWI730016B (zh) 用於跨步分散運算的指令與邏輯的處理器、方法及系統
JP5179597B2 (ja) 構成の仮想トポロジの変化
RU2562372C2 (ru) Активация/деактивация адаптеров вычислительной среды
US10228946B2 (en) Reading a register pair by writing a wide register
WO2020164878A1 (en) Directed interrupt virtualization with fallback
CN104049948A (zh) 指令仿真处理器、方法和系统
MX2012014522A (es) Instalacion de visualizacion de funcion para consulta de funcion de un procesador.
CN113412473A (zh) 具有中断表的用于多级虚拟化的定向中断
EP3924817A1 (en) Directed interrupt virtualization
WO2020164936A1 (en) Interrupt signaling for directed interrupt virtualization
EP3924821A1 (en) Directed interrupt virtualization with running indicator
JP2022520330A (ja) ブロッキング・インジケータを使用した有向割り込みの仮想化方法、システム、プログラム
CN104081343A (zh) 事务存储器的主分支指令

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1180804

Country of ref document: HK

C14 Grant of patent or utility model
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: GR

Ref document number: 1180804

Country of ref document: HK