CN102947794B - 用于处理器功能查询的功能虚拟化设施 - Google Patents
用于处理器功能查询的功能虚拟化设施 Download PDFInfo
- Publication number
- CN102947794B CN102947794B CN201080066964.6A CN201080066964A CN102947794B CN 102947794 B CN102947794 B CN 102947794B CN 201080066964 A CN201080066964 A CN 201080066964A CN 102947794 B CN102947794 B CN 102947794B
- Authority
- CN
- China
- Prior art keywords
- function
- instruction
- code
- value
- instructions
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30196—Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45541—Bare-metal, i.e. hypervisor runs directly on hardware
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09C—CIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
- G09C1/00—Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Executing Machine-Instructions (AREA)
- Multi Processors (AREA)
- Debugging And Monitoring (AREA)
- Devices For Executing Special Programs (AREA)
- Advance Control (AREA)
Abstract
多功能指令的所选择已安装功能被隐藏,这样即使处理器能够执行隐藏的已安装功能,隐藏功能的可用性被隐藏,从而响应于多功能指令查询功能可用性,只有未隐藏的功能才被报告为已安装。
Description
技术领域
本发明涉及计算机系统,更具体地,涉及计算机系统处理器指令功能。
背景技术
商标:
是位于美国纽约州阿蒙克的国际商业机器公司的注册商标,S/390、z900、z990和z10及其他产品名称是国际商业机器公司或其他公司的注册商标或产品名称。
通过许多卓越的工程师的工作,IBM从20世纪60年代已知为
系统360的机器开始至今已创建了一种特殊架构,该特殊架构由于其计算系统的本质,已知为“大型机”,其操作原理通过描述可在由IBM发明人发明的指令的“大型机”实现上执行的指令而阐述了机器的架构,这些指令由于其对改善由“大型机”代表的计算机器的状态有显著的贡献,通过包括在过去几年所阐述的IBM的Principles of Operation(操作原理),被接受是显著贡献。2009年2月发表的第八版IBM的Principles of Operation作为SA22-7832-07成为标准发表参考,并包含在IBM的
大型机服务器中。
参考图1A,示出了现有技术的主机计算机系统50的代表性组件。也可在计算机系统中使用在本领域已知的组件的其他安排。代表性主机计算机50包括与主存储器(计算机存储器2)通信的一个或多个CPU 1,以及到存储设备11和网络10的I/O接口以与其他计算机或SAN等通信。CPU1遵循具有架构指令集和架构功能的架构。CPU 1可具有动态地址转换(DAT)3,以用于将程序地址(虚拟地址)转换为存储器的真实地址。DAT典型地包括转换后备缓冲器(TLB)7,其用于缓存转换,从而对计算机存储器2的块的后来的存取不需要地址转换的延迟。典型地,在计算机存储器2和处理器1之间使用高速缓存9。高速缓存9可以分层,具有可用于多于一个CPU的大高速缓存,以及在大高速缓存和每个CPU之间是更小更快(较低级)的高速缓存。在某些实现中,较低级高速缓存被划分为用于指令获取和数据访问的单独的低级高速缓存。在一实施例中,指令获取单元4通过高速缓存9从存储器2获取指令。该指令在指令解码单元6中被解码并(在某些实施例中与其他指令一起)被分派到指令执行单元8。典型地,使用几个指令执行单元8,例如,算术执行单元、浮点执行单元和分支指令执行单元。指令由执行单元来执行,在需要时从指令指定寄存器或存储器访问操作数。如果要从存储器2访问(载入或存储)操作数,载入存储单元5典型地在被执行的指令的控制下处理该访问。指令可在硬件电路或内部微代码(固件)中或由两者的组合来执行。
在图1B中,提供了现有技术的仿真主机计算机系统21的例子,其仿真主机架构的主机计算机系统50。在仿真主机计算机系统21中,主机处理器(CPU)1是仿真主机处理器(或虚拟主机处理器),并包含仿真处理器27,该仿真处理器具有与主机计算机50的处理器1不同的本机指令集架构。仿真主机计算机系统21具有可被仿真处理器27访问的存储器22。在示例性实施例中,存储器27被划分为主机计算机存储器2部分和仿真例程23部分。主机计算机存储器2可用于根据主机计算机架构的仿真主机计算机21的程序。仿真处理器27执行不同于被仿真处理器1的架构的架构指令集的本机指令,所述本机指令是从仿真例程存储器23获取的,且可以通过使用从序列和访问/解码例程获取的一个或多个指令从主机计算机存储器2中的程序来访问用于执行的主机指令,该序列和访问/解码例程可以对访问的主机指令进行解码,以确定用于仿真所访问的主机指令的功能的本机指令执行例程。为主机计算机系统50架构定义的其他工具(facility)可由架构工具例程来仿真,例如包括通用目的寄存器、控制寄存器、动态地址转换和I/O子系统支持以及处理器高速缓存等工具。仿真例程还可利用在仿真处理器27中可用的功能(例如通用寄存器和虚拟地址的动态转换),以改善仿真例程的性能。还可以提供特殊硬件和卸载引擎,以帮助处理器27来仿真主机计算机50的功能。
在大型机中,架构机器指令被程序员(如今通常是的“C”程序员)通过编译应用程序的方式而使用。这些存储在存储介质中的指令可在z/Architecture IBM服务器中被本机执行,或者在执行其他架构的机器中执行。它们可在现有的和将来的IBM大型机服务器和IBM的其他机器(例如
服务器和
服务器)仿真。它们可在使用由
AMDTM、太阳微系统公司和其他公司制造的硬件的各种各样的机器上运行Linux的机器上执行。除了在
下执行该硬件,Linux也可被用于使用在http:∥www.turbohercules.com、http:∥www.hercules-390.org和http:∥funsoft.com中所描述的仿真的机器。在仿真模式中,仿真软件由本机处理器执行以仿真被仿真处理器的架构。
本机处理器27典型地执行仿真软件23,该仿真软件包括固件或本机操作系统以执行被仿真处理器的仿真。仿真软件23负责获取仿真和执行被仿真处理器架构的指令。仿真软件23维持仿真程序计数器以跟踪指令边界。仿真软件23可一次获得一个或多个被仿真机器指令并将一个或多个被仿真机器指令转换为对应的本机机器指令组,以由本机处理器27执行。这些转换的指令可被高速缓存,这样可完成更快的转换。尽管如此,仿真软件必须维持被仿真处理器架构的架构规则,以保证为被仿真处理器而编写的操作系统和应用程序正确操作。而且,仿真软件必须提供由被仿真处理器1架构标识的资源,包括但不限于控制寄存器、通用寄存器、浮点寄存器、包括例如段表和页表的动态地址转换功能、中断机制、上下文切换机制、日中时间(TOD)时钟和到I/O子系统的架构接口,从而被设计为在被仿真处理器上运行的操作系统或应用程序,可被运行在具有仿真软件的本机处理器上。
可解码被仿真的特定指令,以及调用子例程来执行单个指令的功能。仿真被仿真处理器1的功能的仿真软件功能23是在例如“C”子例程或驱动器中、或本领域技术人员在理解优选实施例的描述后所知道的为特定硬件提供驱动器的一些其他方法中实现的。各种软件和硬件仿真专利包括但不限于US 5551013:Beausoleil等人的“Multiprocessor for hardwareemulation”(用于硬件仿真的多处理器),以及US6009261:Scalzi等人的“Preprocessing of stored target routines for emulating incompatibleinstructions on a target processor”(用于仿真目标处理器上的不兼容指令的存储目标例程的预处理);以及US5574873:Davidian等人的“Decodingguest instruction to directly access emulation routines that emulate theguest instructions”(解码客户指令以直接访问仿真客户指令的仿真例程);US6308255:Gorishek等人的“Symmetrical multiprocessing bus andchipset used for coprocessor support allowing non-native code to run in asystem”(用于允许非本机代码在系统中运行的协处理器支持的对称多处理总线和芯片组);以及US6463582:Lethin等人的“Dynamic optimizingobject code translator for architecture emulation and dynamic optimizingobject code translation method”(用于架构仿真的动态优化目标代码转换器和动态优化目标代码转换方法);以及US5790825:Eric Traut的“Methodfor emulating guest instructions on a host computer through dynamicrecompilation of host instructions”(通过主机指令的动态重新编译仿真主机计算机上的客户指令的方法)。这些参考文献示出了多种已知的方式来实现针对可为本领域技术人员获得的目标机器来仿真被架构设计为用于不同机器的指令格式,以及由上述参考文献使用的商业软件技术。
在美国公开号US2009/0222814A1,2009年9月2日公开,Astrand的“Selective Exposure to USB Device Functionality for a Virtual Machine”(用于虚拟机的USB设备功能的选择性暴露)中,虚拟机(VM)应用可运行客户操作系统(OS)并允许客户OS连接到与计算机连接的USB设备。VM应用可过滤与USB设备有关的功能,这样仅USB设备的一些功能被暴露给客户OS。
发明内容
在一个实施例中,多功能指令的所选择的已安装功能被隐藏,该多功能指令被架构设计为执行多个已安装功能中的功能,所述隐藏包括设置值,该值控制已安装功能对主机计算机的多功能指令的可用性,该主机计算机包含一个或多个处理器,一处理器具有多功能指令的第一多个所述已安装功能,该第一多个已安装功能包含一个或多个第一已安装功能以及一个或多个第二已安装功能,以及执行多功能指令,该多功能指令包含操作码字段,该执行包括:响应于该多功能指令指定了查询功能,执行该查询功能,以确定可用于该多功能指令的已安装功能;该查询功能执行使用所述值来确定所述一个或多个第二已安装功能;以及该查询功能执行存储结果值,该结果值指示所述一个或多个第一已安装功能中的一个或多个对该多功能指令不可用。
在一个实施例中,由主机计算机的管理程序为主机计算机的虚拟机来设置所述值,该虚拟机包含一个或多个逻辑处理器,该一个或多个逻辑处理器被分配给一个或多个物理处理器,一物理处理器具有多功能指令的所述一个或多个第二已安装功能,其中,由所述一个或多个物理处理器中的物理处理器上的一个或多个逻辑处理器中的逻辑处理器在该虚拟机中执行所述多功能指令。
在一个实施例中,基于多功能指令的操作码来确定所述一个或多个第二已安装功能。
在一个实施例中,由管理程序来设置另一个值,该值控制已安装功能对在主机计算机系统的另一虚拟机上执行的多功能指令的可用性;以及由一个或多个另一逻辑处理器中的另一逻辑处理器在该另一虚拟机中执行另一多功能指令;响应于该另一多功能指令指定另一查询功能,执行该另一查询功能,以确定对该另一多功能指令可用的已安装功能;该另一查询功能执行使用该另一个值来确定一个或多个第三已安装功能;且该另一查询功能执行存储另一结果值,该结果值指示该一个或多个第三已安装功能中的一个或多个对该另一多功能指令不可用。
在一个实施例中,被存储的结果值是位有效的(bit significant)值,其中每个位位置对应于一功能,且位为1指示相应功能已安装。
在一个实施例中,所述查询功能由多功能指令指定的功能代码或多功能指令指定的测试位来指定。
在一个实施例中,所述多功能指令是z架构指令,该指令由密码指令、执行定时工具功能(PTFF)指令、执行浮点操作指令或执行被锁定操作指令中的任一个构成,其中,该密码指令包括密码消息指令、计算中间消息摘要指令、计算最后消息摘要指令、计算最后消息摘要指令、计算消息验证代码指令中的任一个,其中该多功能指令指定查询功能:响应于所述多功能指令是密码指令或PTFF指令,获取要被执行的多功能指令指定的功能代码,该获取的功能代码由查询功能构成,其中,被存储的结果值是多个位,该多个位中的每个位指示是否支持相应的功能代码;以及响应于所述多功能指令是密码指令或PTFF指令,获取要被执行的多功能指令指定的功能代码,该获取的功能代码不是查询功能,根据该获取的功能代码来执行密码功能或PTFF功能;以及响应于所述多功能指令是执行被锁定操作指令或执行浮点操作指令且所述多功能指定的测试位为1,确定多功能指令指定的功能代码是否被安装,其中,被存储的结果值是条件代码值;以及响应于所述多功能指令是执行被锁定操作指令或执行浮点操作指令且所述多功能指令指定的测试位为0,根据获取的功能代码来执行浮点功能或锁定操作。
上述以及其他目标、特征和优势将在下面的书面描述中变得更为明显。
其他实施例和方面在这里被详细描述,并被认为是所要求保护的本发明的一部分。为了更好地理解优势和特征,参考描述以及附图。
附图说明
仅通过实例,现在将参考附图描述本发明的实施例,在附图中:
图1A是示出示例性主机计算机系统的图;
图1B是示出示例性仿真主机计算机系统的图;
图1C是示出示例性计算机系统的图;
图2是示出示例性计算机网络的图;
图3是示出计算机系统的示例性元件的图;
图4A是示出示例性执行单元的图;
图4B是示出示例性分支单元的图;
图4C是示出示例性载入/存储单元的图;
图5是示出示例性逻辑分区的图;
图6是示出示例性逻辑分区元件的图;
图7是示出示例性逻辑分区元件的图;
图8是示出示例性操作码表的流程;
图9是示出示例性阻止(blocking)技术的流程;
图10是示出示例性阻止技术的流程;
图11是示出示例性阻止技术的流程;以及
图12-17示出了功能查询阻止技术的流程。
具体实施方式
实施例可通过软件(有时候被称为许可内部代码、固件、微代码、毫代码(Milli-code)、微微代码(Pico-code)等,其中的任一个将与此处的教导一致)被实践。参考图1A,软件程序代码实施例典型地由系统50的也称为CPU(中央处理单元)1的处理器从诸如CD-ROM驱动器、磁带驱动器或硬盘驱动器的长期存储介质11访问。软件程序代码可体现在与数据处理系统一起使用的各种已知介质(诸如软磁盘、硬盘驱动或CD-ROM)中的任何一个上。代码可在这样的介质上被分发,或可从一个计算机系统的计算机存储器02或存储设备通过网络10被分发给其他计算机系统的用户,以由这样的其他系统的用户使用。
或者,所述程序代码可体现在存储器2中,并由处理器1使用处理器总线来访问。这种软件程序代码包括操作系统,其控制各种计算机组件和一个或多个应用程序的功能和交互。程序代码通常可从高密度存储介质11调页到高速存储器2,在此它对于处理器1是可用的。用于在存储器中、物理介质上和/或体现软件程序代码或经由网络分发软件代码的技术和方法是熟知的,且不会在此被进一步讨论。当程序代码被创建并存储在有形介质(包括但不限于电子存储模块(RAM)、闪存、光盘(CD)、DVD、磁带等)上时,其经常被称为“计算机程序产品”。计算机程序产品介质典型地可由优选地位于计算机系统中的处理电路读取以由处理电路执行。
图1C示出了可在其中实现实施例的代表性工作站或服务器硬件系统。图1C的系统100包括代表性计算机系统101,诸如个人计算机、工作站或服务器,包括可选的外围设备。根据已知技术,工作站101包括一个或多个处理器106以及被用于连接并使能处理器106和系统101的其他组件之间的通信的总线。总线将处理器106连接到存储器105以及可包括例如硬盘驱动器(例如,包括磁介质、CD、DVD和闪存中的任何一个)或磁带驱动器的长期存储器107。系统101也可包括用户接口适配器,其经由总线将微处理器106连接到一个或多个接口设备,诸如键盘104、鼠标103、打印机/扫描仪110和/或其他接口设备,其可以是任何用户接口设备,诸如触摸敏感屏、数字化输入垫(digitized entry pad)等。总线也可经由显示适配器将诸如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。可以利用可从IBM公司获得的IBM eServerTM 服务器来实现网关计算机。
软件编程代码典型地被系统101的处理器106从诸如CD-ROM驱动器或硬盘驱动器的长期存储介质107访问。软件编程代码可被体现在与数据处理系统一起使用的各种已知介质(诸如软盘、硬盘驱动器或CD-ROM)中的任一个上。代码可在这样的介质上被分发,或从一个计算机系统的存储器或存储设备通过网络被分发到其他计算机系统的用户210、211,以供这样的其他系统的用户使用。
或者,编程代码111可体现在存储器105中,且由处理器106使用处理器总线访问。这样的编程代码包括操作系统,其控制各种计算机组件和一个或多个应用程序112的功能和交互。程序代码通常从高密度存储介质107调页到高速存储器105,在此它可用于由处理器106进行处理。用于在存储器中、在物理介质上体现软件编程代码和/或经由网络分发软件代码的技术和方法是公知的,且不会在此进一步讨论。程序代码,当其被创建且在有形介质(包括但不限于电子存储模块(RAM)、闪存、光盘(CD)、DVD、磁带等)上存储时,通常被称为“计算机程序产品”。计算机程序产品介质典型地可以被优选地位于计算机系统中的处理电路读取以由处理电路执行。
最容易被处理器使用的高速缓存(通常比处理器的其他高速缓存更快更小)是最低级(L1或级别1)高速缓存,且主存储(主存储器)是最高级高速缓存(如果有三个级别的话是L3)。最低级高速缓存经常被分为保持将被执行的机器指令的指令缓存(I-高速缓存),和保持数据操作数的数据高速缓存(D-高速缓存)。
参考图3,为处理器106示出了示例性处理器实施例。典型地,使用一个或多个级别的高速缓存303来缓冲存储器块,以便改善处理器性能。高速缓存303是高速缓冲器,其保持很可能被使用的存储器数据的高速缓存线。典型的高速缓存线是64、128或256字节的存储器数据。通常使用单独的高速缓存以用于缓存指令而不是缓存数据。高速缓存一致性(存储器和高速缓存中的线的副本的同步)通常由本领域中熟知的各种“窥探”算法提供。处理器系统的主存储器105通常被称为高速缓存。在具有4个级别的高速缓存303的处理器系统中,主存储器105有时候被称为级别5(L5)高速缓存,因为它典型地更快,且仅保持可被计算机系统使用的非易失性存储器(DASD、磁带等)的一部分。主存储器105可“高速缓存”由操作系统向主存储器105调页入或从其调页出的数据页。
程序计数器(指令计数器)311保持跟踪将被执行的当前指令的地址。处理器中的程序计数器是64位的,且可被截短为31或24位以支持先前的寻址界限。程序计数器典型地体现在计算机的PSW(程序状态字)中,这样它可在上下文转换中持续。因此,具有程序计数器值的进行中的程序可被例如操作系统中断(从程序环境到操作系统环境的上下文转换)。当程序不活动时,程序的PSW维持程序计数器值,且在操作系统执行时,操作系统的(PSW中的)程序计数器被使用。典型地,程序计数器以等于当前指令的字节数的量递增。RISC(精简指令集计算)指令典型地是固定长度,而CISC(复杂指令集计算)指令典型地是可变长度。的指令是具有长度为2、4或6字节的CISC指令。程序计数器311被例如上下文转换操作或分支指令的分支采取操作修改。在上下文转换操作中,当前的程序计数器值与关于正被执行的程序的其他状态信息(诸如条件码)一起被保存在程序状态字(PSW)中,且新程序计数器值被载入并指向将被执行的新程序模块的指令。执行分支采取操作,以通过将分支指令的结果加载到程序计数器311中而允许程序进行决定或在程序内循环。
典型地,使用指令获取单元305代表处理器106获取指令。获取单元可获取“下一序列指令”、分支采取指令的目标指令或上下文转换后的程序的第一指令。现在的指令获取单元通常使用预取技术基于被预取的指令将被使用的可能性来推测性地预取指令。例如,获取单元可获取16字节的指令,其包括下一顺序指令以及进一步的顺序指令的额外字节。
获取的指令随后被处理器106执行。在一实施例中,获取的指令被传递给获取单元的分派单元306。分派单元解码指令并将关于解码的指令的信息转送给合适的单元307、308、310。执行单元307将典型地从指令获取单元305接收关于解码的算术指令的信息,并将根据指令的操作码对操作数执行算术操作。优选地从存储器105、架构寄存器309或从正被执行的指令的立即字段(immediate field)向执行单元307提供操作数。执行的结果,当被存储时,被存储在存储器105、寄存器309或其他机器硬件306(诸如控制寄存器、PSW寄存器等)中。
参考图5,示出了示例性虚拟机(VM)环境。管理程序(其自己可以是诸如来自IBM的zVM的操作系统(OS)),运行在多处理器“硬件”上,该硬件包括多个物理处理器、物理主存储器和用于与包括存储器、网络、显示器等的I/O外围设备通信的物理适配器。管理程序创建VM映像(例如VM1、VM2和VM3),这样包括OS和应用程序的软件可在利用虚拟资源的虚拟机中运行。在VM中运行的软件没有意识到其在VM中运行并使用虚拟资源操作,就好像它们是物理资源一样。来自IBM的zVM操作系统可创建“客户”映像,每个客户映像实际上是虚拟机。而且,任何zVM客户本身可运行zVM OS,从而创建“第二级客户”。因此,虚拟机(客户映像)可被嵌套在虚拟机的分级结构中,每个zVM对其客户映像发挥管理程序的角色。另一方面,可“物理地分区”多处理器平台,每个物理分区可以被分配有资源(处理器、存储器、I/O)。每个物理分区是VM,因为运行在分区中的软件没有意识到未被分配给该分区的机器资源。因此机器的资源被“虚拟化”。在另一个实施例中,主机可支持逻辑分区,每个逻辑分区是一VM。
例如在来自
的
Infrastructure 3的名为“Virtualization Overview”(虚拟化概况)和“VMware Vmotion and CPUCompatibility”(VMware Vmotion和CPU兼容性)的白皮书中说明了虚拟化。而且,Khatri等人于2007年9月6日提交的美国专利申请公开号2009/0070760,“VIRTUAL MACHINE(VM)MIGRATION BETWEENPROCESSOR ARCHITECTURES”(处理器架构之间的虚拟机(VM)迁移),讨论了通过掩码CUPID寄存器的选择的位,来仿真特定特征集以使能类似的机器池之间的VM迁移。
参考图6,每个VM可具有不同的OS和不同的应用。例如,OS1可以是来自IBM的z/OS,而OS2可以是来自IBM的zLiunx,或所有的OS可以是同样的OS,诸如z/OS。
管理程序基于物理特征、资源和能力创建了用于每个VM的逻辑特征、资源和能力。在一个示例性系统中,通过动态地址转换将物理存储器分区分配给每个VM,在VM之间物理处理器和I/O能力是时间共享的。
参考图7,每个逻辑处理器能通过由管理程序管理的逻辑特征掩码来访问物理特征寄存器。因此,即使当实际的处理器处于不同的架构等级时,运行在逻辑处理器上的软件可给出操作于共同的处理器架构等级上的外观。在一个例子中,物理特征寄存器可以是因特尔CPUID寄存器,其指示可被程序员获得的因特尔处理器的架构等级及特定特征。逻辑特征掩码被编程为当VM查询对应的逻辑处理器的CPUID时,向虚拟机(VM)中的软件提供所有的物理处理器CPUID或其子集。
来自因特尔
的
Architecture Software Developer’sMannual(架构软件开发者手册),第二卷,修订版2.2,2006年1月”的x86处理器架构描述了识别由处理器支持的特征的CPUID寄存器。CPUID寄存器是无特权的,且可使用间接mov(from)指令被访问。寄存器CPUID号之外的所有寄存器被保留,且如果它们被访问,引起保留寄存器/字段错误。不允许写,且不存在用于这样的操作的指令。厂商信息位于CPUID寄存器0和1中,并以ASCII指示用于处理器实现的厂商名称。直到第16个字节的串的末端之后的所有字节是零。更早的ASICC字符被放置在更低号的寄存器和更低编号的字节位置。CPUID寄存器4提供了关于处理器特征的一般应用级的信息。它包含一组标志位,以用于指示给定特征是否在处理器模型中被支持。当位是1时,特征被支持;当0时,特征不被支持。一些新特征从未来的处理器模型被添加(或移除),新特征的出现(或移除)将由新特征位指示。CPUID寄存器4被逻辑地分为两半,这两半都包含一般特征和能力信息,但具有不同的使用模型和访问特征;该信息反应了任何使能或禁止的特征的状态。通过移动间接寄存器指令,CPUID寄存器4的上半部分和下半部分都是可访问的;根据实现,用于该访问的延时可以很长且该访问方法不适于使用自选择(self-selection)的低延时代码版本化(code versioning)。此外,使用测试特征指令,CPUID寄存器4的上半部分也可被访问;用于该访问的延时与测试位指令的延迟相当,且该访问方法使得使用自选择的低延迟代码版本化成为可能。
z/Architecture Principles of Operation描述了存储工具列表扩展(STFLE)指令,该指令跟因特尔CPUID注册器一样,向软件提供了基础中央处理单元(CPU)或处理器的特征(或架构级别)的知识。STFLE指令具有以下表1示出的格式。
表1
STFLE指令(表1)包括操作码字段位(0-15),寄存器字段B2(16-19)以及位移(直接)字段D2(20-31)。STFLE指令由机器执行,将提供关于工具的信息的位列表存储在程序存储器位置(memory location)中,该位置通过由指令的B2字段指定的寄存器的内容添加到12位D2直接字段而确定,该存储器位置在由第二操作数地址((B2)+D2)指定的双字(8字节,1个字是4字节)处开始。z架构中的程序存储器位置的地址可经受动态地址转换(DAT)。
保留位是当前没有被分配以代表工具的位。对于最左边的双字(其中工具位被分配),保留位被存储为零。被分配给模型的最高编号的工具位所在的双字右边的双字可被存储或不存储。对于未存储的双字,不识别访问异常和PER事件。以双字表示的第二操作数的大小比通用寄存器0的位56-63中指定的值大一。通用寄存器0的剩余位未被分配,且应包含零;否则,将来程序可能操作不兼容。
当第二操作数的大小足够大以包含分配给模型的所有工具位时,则完整的工具列表被存储在第二操作数位置中,更新通用寄存器0的位56-63以包含比双字的数量少一,所述双字的数量是包含分配给模型的所有工具位所需要的,并设置条件代码0。
当第二操作数的大小不足够大以包含分配给模型的所有工具位时,则仅存储由第二操作数大小指定的双字的数量,更新通用寄存器0的位56-63以包含比双字的数量少一,所述双字的数量包含分配给模型的所有工具位所需要的,并设置条件代码3。
执行该指令导致设置条件代码值,在上下文切换期间与程序状态字(PSW)一起保存条件代码值。
特殊条件:
第二操作数必须被指定在双字界限上;否则,识别规范异常。
产生的条件代码:
0完整的工具列表被存储
1-
2-
3不完整的工具列表被存储
程序异常
●访问(存储,第二操作数)
●操作(如果存储工具列表扩展工具没有被安装)
●规范
编程注意事项:
存储工具列表扩展的性能可明显低于简单地测试存储器中的字节的性能。需要频繁地测试工具的存在的程序,例如,双路径代码(其中工具在一个路径中使用但在另一个不使用),应在初始化期间执行存储工具列表扩展指令一次。此后,程序可通过利用诸如掩码下测试(TEST UNDERMASK)指令检查存储的结果,来测试工具的存在。
当条件代码0被设置时,通用寄存器0的位56-63被更新以指示存储的双字的数量。如果程序选择忽略通用寄存器0中的结果,则它应当确保在执行存储工具列表扩展之前,存储器中的整个第二操作数被设为零。
表2示出了现有技术的z/Architecture分配的STFLE位及其意义。如果位的意义是真,则不管当前的架构模式,该位被设为1。意义适用于当前的架构模式,除非说明它被适用于特定的结构模式。
未分配的位被保留以指示新工具;这些位在将来可被存储为1。
现有技术的z/Architecture工具列表可被定义为如下表2中所示:
表2
位意义-当位为1时:
0在z/Architecture的第7章和第10章的指令概述图中被标注为“N3”的指令已安装。
1z/Architecture架构模式已安装
2z/Architecture架构模式是活动的。当该位是零时,ESA/390架构模式是活动的。
3DAT-增强工具已安装在z/Architecture架构模式中。DAT增强工具包括无效DAT表项(IDTE)和比较并交换并清除(CSPG)指令。
4当无效一个或多个段表项时,通过选择性地清除结合的区域和段表项,无效DAT表项(IDTE)执行无效和清除操作。IDTE还执行按ASCE清除操作。除非位4是1,IDTE简单地清除所有的TLB。如果位4是1,位3是1。
5当无效一个或多个区域表项时,通过选择性地清楚结合的区域和段表项,无效DAT表项(IDTE)执行无效和清除操作。如果位5是1,位3和4是1。
6ASN和LX重用工具已安装在z/Architecture架构模式中。
7存储工具列表扩展工具已安装。
8增强的DAT工具已安装在z/Architecture架构模式中。
9感测运行状态设备已安装在z/Architecture架构模式中。
10条件SSKE工具已安装在z/Architecture架构模式中。
11配置拓扑工具已安装在z/Architecture架构模式中。
16扩展的转换工具2已安装。
17消息安全协助已安装。
18长位移工具已安装在z/Architecture架构模式中。
19长位移工具具有高性能。如果位19是1,位18是1。
20HFP乘和加/减工具已安装。
21扩展的立即工具已安装在z/Architecture架构模式中。
22扩展的转换工具3已安装在z/Architecture架构模式中。
23HFP非标准化扩展工具已安装在z/Architecture架构模式中。
24ETF2增强工具已安装。
25存储时钟快速工具已安装在z/Architecture架构模式中。
26解析增强工具已安装在z/Architecture架构模式中。
27以可选规范移动工具已安装在z/Architecture架构模式中。
28TOD时钟操纵(steering)工具已安装在z/Architecture架构模式中。
30EFT3增强工具已安装在z/Architecture架构模式中。
31提取CPU时间工具已安装在z/Architecture架构模式中。
32比较和交换和存储工具已安装在z/Architecture架构模式中。
33比较和交换和存储工具2已安装在z/Architecture架构模式中。
34通用指令扩展工具已安装在z/Architecture架构模式中。
35执行扩展工具已安装在z/Architecture架构模式中。
39分配给IBM内部使用。
41浮点支持增强工具(FPR-GR转移、FPS符号处理以及DFP舍入)已安装在z/Architecture架构模式中。
42DFP(十进制浮点)工具已安装在z/Architecture架构模式中。
43DFP(十进制浮点)工具具有高性能。如果位43是1,位42是1。
44PFPO指令已安装在z/Architecture架构模式中。
指令可执行架构中单个功能,或在某些情况下,多个可选择的功能中的任一个。对不同机器来说,被定义用于指令的可选择的功能可以是不同的。例如,当首次被引入到架构的指令集时,多功能指令可仅具有几个可选择的功能。此后的架构的指令集可将更多可选择的功能引入到先前引入的多功能指令。在一实施例中,VM可被分配有物理处理器的可选择的功能的子集,由此在VM的逻辑处理器上运行的指令可查询逻辑处理器上的可用功能列表,且仅分配给VM的功能被返回,即使物理处理器可执行更多可选择的功能。在一个实施例中,这是通过功能指示指令拦截工具(FIIIF)完成的,该工具使得管理程序能够俘获(trap)或拦截由客户(虚拟机)对该查询功能的执行,以便呈现可获得的功能的减少的列表。在另一个实施例中,例如通过位掩码,管理程序指示将被报告给客户的一组功能,且多功能指令的查询功能报告该列表。而且,在一个实施例中,在逻辑处理器上执行的指令将经历程序异常,如果它试图执行选择的可选功能的话。
在能查询已安装功能的存在并也能执行已安装功能中的所选择的一个的多功能指令的情况下,执行包括查询功能的已安装功能可在硬件(例如包括电路和微代码)中被执行,以便获得最佳性能。在一实施例中,当FIIIF特征已安装时,查询功能被软件而不是被硬件拦截以便执行。因此,仅执行查询功能将遇到额外的延迟以确定要报告哪个已安装特征。在一实施例中,拦截是到管理程序代码,该管理程序代码执行查询功能,并代表虚拟机返回适当的结果。
具有可选择功能的指令的一个例子是z/Architecture的密码消息指令。
密码消息(CIPHER MESSAGE,KM)指令可执行多个密码消息功能中的任一个。由密码消息提供的功能中的一个是查询处理器,以发现由处理器支持的密码消息功能的位有效列表。
密码消息指令的格式(表3)如以下所示,其中R1指定第一通用寄存器,R2指定第二通用寄存器。
表三
密码消息指令的执行(表3)如下所示:
执行由暗示的通用寄存器0中的功能代码指定的功能。
指令的位16-23被忽略。
通用寄存器0的位位置57-63包含功能代码。
分别用于密码消息和链接密码消息(CIPHER MESSAGE WITHCHAINING)的当前分配的功能代码(0-3和18-20)在表4中示出。所有其他功能代码未被分配。对于密码功能,位56是修改位,其指示是否将执行加密或解密操作。对于所有其他功能,修改位被忽略。通用寄存器0的所有其他位被忽略。
暗示的通用寄存器1包含存储器中的参数块的最左边的字节的逻辑地址。在24位寻址模式中,通用寄存器1的位位置40-63的内容构成地址,而位位置0-39的内容被忽略。在31位寻址模式中,通用寄存器1的位位置33-63的内容构成地址,而位位置0-32的内容被忽略。在64位寻址模式中,通用寄存器1的位位置0-63的内容构成地址。
查询功能提供了指示其他功能的可用性的手段。对于查询功能,由指令的字段(R1、R2)指定的通用寄存器的内容以及R2+1被忽略。
对于所有其他功能,第二操作数(由R2指定)通过使用参数块中的密钥被加密,如由功能代码指定的,且结果被放置在第一操作数位置。
对于链接密码消息,加密也使用参数块中的初始链接值,且链接值作为操作的一部分被更新。用于24位寻址的寄存器使用在表5中示出。
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的内容被设置为零。在31位寻址模式中,通用寄存器R1和R2的位位置33-63的内容分别构成第一和第二操作数的地址,且位位置0-32的内容被忽略;更新的地址的位33-63替换通用寄存器R1和R2中对应位,更新的地址的位位置33的进位被忽略,且通用寄存器R1和R2的位位置32的内容被设置为零。在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的内容总是保持不变。以下的图示出了刚才描述的通用寄存器的内容。
在访问寄存器模式中,访问寄存器1、R1和R2指定了分别包含参数块、第一和第二操作数的地址空间。
获取结果,就好像处理逐块地从第一和第二操作数两者的左端开始并前进到右端。当通用寄存器R2+1中指定的第二操作数中的字节数量已被处理并被放置在第一操作数位置(被称为正常完成)或当少于第二操作数的长度的CPU确定的块的数量已被处理(被称为部分完成)时,操作结束。CPU确定的块的数量取决于模型,且可以在每次执行指令时是不同的数量。CPU确定的块的数量通常非零。在某些非常情况下,该数量可以是零,且条件代码3可被设置为无进展。但是,CPU保护免于这种无进展情况的无限重现。
如果以下任何情况发生,第一操作数位置和链接值字段中的结果是不可预测的:
密钥字段与第一操作数的任何部分重叠。
链接值字段与第一操作数和第二操作数的任何部分重叠。
第一和第二操作数破坏性地重叠。在数据被移入到第一操作数位置后当第一操作数位置将被用作源时,操作数被称为破坏性地重叠,假设处理将从左边到右边且一次一个字节地被执行。
当由于正常完成而结束操作时,设置条件代码0,且R2+1中的结果值是零。当由于部分完成结束操作时,设置条件代码3且R2+1中的结果值是非零。
当识别了存储器更改PER事件时,在报告事件之前,少于4K的额外字节被存储在第一操作数位置。
当第二操作数长度初始地为零时,不访问参数块、第一和第二操作数,不改变通用寄存器R1、R2和R2+1,并设置条件代码0。
当R1和R2字段的内容相同时,仅以处理的字节数量,而不是以处理的字节数量的2倍,来递增指定寄存器的内容。
如由其他CPU和通道程序所观察的,对参数块和存储器操作数的引用可以是多访问引用,对这些存储位置的访问不必须是块并发的,且这些访问或引用的顺序未被定义。
在某些非常的情况下,可通过设置条件代码3来完成指令执行,而不更新寄存器和链接值以反应被处理的第一和第二操作数的最后单元。在该情况中被处理的单元的大小取决于情况和模型,但限于使得已被处理的且未被报告的第一和第二操作数的部分不在存储器中重叠。在所有的情况中,对于所有的已被处理的第一操作数位置,设置改变位并在适用时报告PER存储器更改事件。
可以为与在指令的单次执行中处理的操作数部分相比更大部分的操作数来报告访问异常;但是,对于操作数长度以外的位置以及正在处理的当前位置以外多于4K字节的位置,访问异常都不会被识别。
用于密码消息的功能代码如下。
表4
表5
使用密码消息指令作为例子,示例性机器可实现密码消息功能。在示例性实现中,主机处理器可实现所示的所有功能(功能代码0-3以及18-20)。主机操作系统(OS)(或管理程序)可以为客户OS创建一个或多个虚拟机。可以针对前一级别的架构来定义一个虚拟机,而不具有密码消息指令。
根据一个实施例,如果指令阻止工具已安装,且密码消息指令被指定为用于VM的被阻止指令,虚拟机将不允许虚拟机中运行的程序来执行密码消息指令,即使基础主机支持密码消息指令。在VM中尝试执行密码消息指令将导致程序检查(程序异常)。
根据另一个实施例,如果功能阻止工具已安装,且仅密码消息功能的子集(例如功能代码0-3)在VM中被允许,虚拟机将允许执行密码消息,但不允许由在虚拟机中运行的程序进行具有除了0-3以外的功能代码的密码消息指令的密码消息指令执行,即使基础主机支持这样的密码消息指令,所述密码消息指令支持功能代码(0-3和18-20)。尝试执行具有除了0-3以外的功能代码(诸如18-20中的任一个)的CIPHER MESSAGE指令,将导致程序检查(程序异常)。
在另一个实施例中,如果功能测试/查询工具已安装且仅密码消息功能的子集(例如功能代码0-3)在VM中被允许,执行密码消息功能的密码消息查询将仅返回功能代码0-3,即使基础主机支持功能代码0-3和18-20。
其他示例性z架构多功能指令:
计算中间消息摘要(KIMD)和计算最后消息摘要(KLMD)指令:
当由计算机系统执行时,执行由通用寄存器0中的功能代码指定的功能。指令的位16-23和R1字段被忽略。通用寄存器的位位置57-63包含功能代码。通用寄存器0的位56必须是零;否则,识别规范异常。通用寄存器0的所有其他位被忽略。通用寄存器1包含存储器中的参数块的最左边字节的逻辑地址。在24位寻址模式中,通用寄存器1的位位置40-63的内容构成地址,且位位置0-39的内容被忽略。在31位寻址模式中,通用寄存器1的位位置33-63的内容构成地址,且位位置0-32的内容被忽略。在64位寻址模式中,通用寄存器1的位位置0-63的内容构成地址。所有其他功能代码未被分配。查询功能提供指示其他功能的可用性的手段。对于查询功能,通用寄存器R2和R2+1的内容被忽略。对于所有其他功能,使用参数块中的初始链接值处理第二操作数,如功能代码所指定的,且结果替换链接值。对于计算最后消息摘要,操作也使用参数块中的消息位长度。操作前进,直到达到第二操作数位置的终点,或CPU确定的字节数已被处理,以先发生者为准。在条件代码中指示结果。R2字段指定偶奇通用寄存器对,且必须指定编号为偶数的寄存器;否则,识别规范异常。第二操作数的最左边字节的位置由R2通用寄存器的内容指定。第二操作数位置中的字节数量在通用寄存器R2+1中指定。作为操作的一部分,通用寄存器R2中的地址增加了来自第二操作数的被处理字节的数量,且通用寄存器R2+1的长度被减少同样的数量。地址和长度的构成和更新取决于寻址模式。在24位寻址模式中,通用寄存器R2的位位置40-63的内容构成第二操作数的地址,且位位置0-39的内容被忽略;更新地址的位40-63替换通用寄存器R2中的对应位,更新地址的位位置40的进位被忽略,且通用寄存器R2的位位置32-39的内容被设置为零。在31位寻址模式中,通用寄存器R2的位位置33-63的内容构成第二操作数的地址,且位位置0-32的内容被忽略;更新地址的位33-63替换通用寄存器R2的对应位,更新地址的位位置33的进位被忽略,且通用寄存器R2的位位置32的内容被设置为零。在64位寻址模式中,通用寄存器R2的位位置0-63的内容构成第二操作数的地址;更新地址的位0-63替换通用寄存器R2的内容,且位位置0的进位被忽略。在24位和31位寻址模式两者中,通用寄存器R2+1的位位置32-63的内容形成32位未分配的二进制整数,其指定第二操作数中的字节数量;且更新值替换通用寄存器R2+1的位位置32-63的内容。在64位寻址模式中,通用寄存器R2+1的位位置0-63的内容形成64位无符号二进制整数,其指定第二操作数中的字节数量;且更新的值替换通用寄存器R2+1的内容。在24位或31位寻址模式中,通用寄存器R2和R2+1的位位置0-31的内容总是保持不变。在访问寄存器模式中,访问寄存器1和R2指定分别包含参数块和第二操作数的地址空间。获得结果,就好像处理在第二操作数的左端开始并逐块地前进到右边。当第二操作数中的所有源字节被处理(称为正常完成)或比第二操作数的长度小的CPU确定的块的数量已被处理(称为部分完成)时,操作结束。CPU确定的块的数量取决于模型,且在每次指令被执行时可以是不同的数量。CPU确定的块的数量通常是非零。在某些非常情形下,该数量可以是零,且条件代码3可被设置为无进展。但是,CPU保护免于这种无进展情况的无限重现。当链接值字段与第二操作数的任何部分重叠时,链接值中的结果是不可预测的。对于计算中间消息摘要(COMPUTE INTERMEDIATE MESASGEDEGEST),当通用寄存器R2+1中指定的第二操作数中的字节数量已被处理时,发生正常完成。对于计算最后消息摘要(COMPUTE LASTMESSAGE DIGEST),当在通用寄存器R2+1中指定的第二操作数的所有字节被处理后,执行填充(padding)操作,且随后发生正常完成。当由于正常完成而结束操作时,设置条件代码0且R2+1中的结果值是零。当由于部分完成而结束操作时,设置条件代码3且R2+1中的结果值是非零。当第二操作数的长度初始是零时,不访问第二操作数,通用寄存器R2和R2+1没有改变,且设置条件代码0。对于计算中间消息摘要,不访问参数块。但是,对于计算最后消息摘要,执行空块(L=0)情况填充操作,且结果被存储在参数块中。如其他CPU和通道程序所观察的,对参数块和存储器操作数的引用可以是多访问引用,访问这些存储位置不必须是块并发的,且这些访问或引用的顺序未被定义。与在指令的单次执行中处理的操作数部分相比,可为更大操作数部分来报告访问异常;但是,对于第二操作数长度以外的位置以及正在处理的当前位置以外多于4K字节的位置,访问异常都不会被识别。
KIMD-查询(KIMD功能代码0)
128位的状态字被存储在参数块中。该字段的位0-127分别对应于计算中间消息摘要指令的功能代码0-127。当位是1时,相应的功能被安装;否则,功能未被安装。当KIMD查询功能的执行完成时,设置条件代码0;条件代码3不可用于该功能。
KIMD-SHA-1(KIMD功能代码1)
使用SHA-1块摘要算法、以参数块中的20字节链接值,为操作数2中的64字节的消息块生成20字节的中间消息摘要。生成的中间消息摘要,也被称为输出链接值(OCV),被存储在参数块的链接值字段中。
KIMD-SHA-256(KIMD功能代码2)
使用SHA-256块摘要算法、以参数块中的32字节的链接值,为操作数2中的64字节的消息块生成32字节的中间消息摘要。生成的中间消息摘要,也被称为输出链接值(OCV),被存储在参数块的链接值字段中。
KIMD-SHA-512(KIMD功能代码3)
使用SHA-512块摘要算法、以参数块中的64字节的链接值,为操作数2中的128字节的消息块生成64字节的中间消息摘要。生成的中间消息摘要,也被称为输出链接值(OCV),被存储在参数块的链接值字段中。
KLMD-查询(KLMD功能代码0)
128位状态字被存储在参数块中。该字段的位0-127分别对应于计算最后消息摘要指令的功能代码0-127。当位为1时,相应的功能被安装;否则,功能未安装。当KLMD查询功能的执行完成时,设置条件代码0;条件代码3不可用于该功能。
KLMD-SHA-1(KLMD功能代码1)
使用SHA-1算法、以参数块中的链接值和消息位长度信息来生成操作数2中的消息(M)的消息摘要。如果操作数2中的消息长度等于或大于64字节,则使用SHA-1块摘要算法、以参数块中的20字节链接值来为每个64字节消息块生成中间消息摘要,且生成的中间消息摘要,也被称为输出链接值(OCV),被存储到参数块的链接值字段中。该操作重复,直到剩余消息少于64字节。如果消息或剩余消息的长度为0字节,则操作被执行。如果消息或剩余消息的长度在1字节和55字节(含)之间,则操作被执行;如果长度在56字节和63字节(含)之间,则操作被执行。消息摘要,也被称为输出链接值(OCV),被存储到参数块的链接值字段中。
KLMD-SHA-256(KLMD功能代码2)
使用SHA-256算法、以参数块中的链接值和消息位长度信息来生成操作数2中的消息(M)的消息摘要。如果操作数2中的消息等于或大于64字节,则使用SHA-256块摘要算法、以参数块中的32字节链接值来为每个64字节消息块生成中间消息摘要,且生成的中间消息摘要,也被称为输出链接值(OCV),被存储到参数块的链接值字段中。该操作重复,直到剩余消息少于64字节。如果消息或剩余消息的长度为0字节,则操作被执行。如果消息或剩余消息的长度在1字节和55字节(含)之间,则操作被执行;如果长度在56字节和63字节(含)之间,则操作被执行。消息摘要,也被称为输出链接值(OCV),被存储到参数块的链接值字段中。
KLMD-SHA-512(KLMD功能代码3)
使用SHA-512算法、以参数块中的链接值和消息位长度信息来生成操作数2中的消息(M)的消息摘要。如果操作数2中的消息等于或大于128字节,则使用SHA-512块摘要算法、以参数块中的64字节链接值来为每个128字节消息块生成中间消息摘要,且生成的中间消息摘要,也被称为输出链接值(OCV),被存储到参数块的链接值字段中。该操作重复,直到剩余消息少于128字节。如果消息或剩余消息的长度为0字节,则操作被执行。如果消息或剩余消息的长度在1字节和111字节(含)之间,则操作被执行;如果长度在112字节和127字节(含)之间,则操作被执行。消息摘要,也被称为输出链接值(OCV),被存储到参数块的链接值字段中。
计算消息验证代码(KMAC)指令
在被计算机系统执行时,由通用寄存器0中的功能代码指定的功能被执行。指令的位16-23和R1字段被忽略。通用寄存器0的位位置57-63包含功能代码。所有其他功能代码未被分配。通用寄存器0的位56必须为0;否则,识别规范异常。通用寄存器0的所有其他位被忽略。通用寄存器1包含存储器中的参数块的最左侧字节的逻辑地址。在24位寻址模式中,通用寄存器1的位位置40-63的内容构成地址,且位位置0-39的内容被忽略。在31位寻址模式中,通用寄存器1的位位置33-63的内容构成地址,且位位置0-32的内容被忽略。在64位寻址模式中,通用寄存器1的位位置0-63的内容构成地址。查询功能提供了指示其他功能的可用性的手段。通用寄存器R2和R2+1的内容被忽略。对于所有其他功能,通过使用参数块中的初始链接值,如功能代码所指定地处理第二操作数,且结果替换链接值。该操作还使用参数块中的密钥。该操作继续,直到到达第二操作数位置的终点,或者已处理了CPU确定的字节数,以先发生者为准。结果在条件代码中被指示。R2字段指定了通用寄存器的偶奇对,且必须指定偶数号的寄存器;否则,识别规范异常。第二操作数的最左侧字节的位置由通用寄存器R2的内容来指定。第二操作数位置中的字节数在通用寄存器R2+1中指定。作为操作的一部分,通用寄存器R2中的地址增加来自第二操作数的所处理的字节数,且通用寄存器R2+1中的长度减少相同的数量。所述地址和长度的构成和更新依赖于寻址模式。在24位寻址模式中,通用寄存器R2的位位置40-63的内容构成第二操作数的地址,且位位置0-39的内容被忽略;更新地址的位40-63替换通用寄存器R2中的相应位,更新地址的位位置40的进位被忽略,且通用寄存器R2的位位置32-39的内容被设置为0。在31位寻址模式中,通用寄存器R2的位位置33-63的内容构成第二操作数的地址,且位位置0-32的内容被忽略;更新地址的位33-63替换通用寄存器R2中的相应位,更新地址的位位置33的进位被忽略,且通用寄存器R2的位位置32的内容被设置为0。在64位寻址模式中,通用寄存器R2的位位置0-63的内容构成第二操作数的地址;更新地址的位0-63替换通用寄存器R2的内容,且位位置0的进位被忽略。在24位和31位寻址模式两者中,通用寄存器R2+1的位位置32-63的内容构成32位的无符号二进制整数,其指定了第二操作数中的字节数;且更新的值替换通用寄存器R2+1的位位置32-63的内容。在64位寻址模式中,通用寄存器R2+1的位位置0-63的内容构成64位的无符号二进制整数,其指定了第二操作数中的字节数;且被更新的值替换通用寄存器R2+1的内容。在24位或31位寻址模式中,通用寄存器R2和R2+1的位位置0-31的内容总是保持不变。在访问寄存器模式下,访问寄存器1和R2分别指定了包含参数块和第二操作数的地址空间。获取结果,好像处理从第二操作数的左端开始逐块进行到右端。当第二操作数中的所有源字节都已被处理(被称为正常完成)或者当比第二操作数长度小的CPU确定的块数已被处理(被称为部分完成)时,操作结束。CPU确定的块数依赖于模型,并且在每次指令被执行时可以是不同的数量。CPU确定的块数通常是非零的。在某些非常情形下,该数字可以是零,且条件代码3可以用无进度来设置。但是,CPU保护免于该无进度情形的无限重现。当链接值与第二操作数的任一部分重叠时,链接值字段中的结果是不可预测的。当通用寄存器R2+1中所指定的第二操作数的字节数已被处理时,发生正常完成。当操作由于正常完成而结束时,设置条件代码0且R2+1中的结果值为0。当操作由于部分完成而结束时,条件代码3被设置,且R2+1中的结果值为非零。当第二操作数长度初始为0时,不访问第二操作数和参数块,不改变通用寄存器R2和R2+1,且设置条件代码0。如其他CPU和通道程序所观察到的,对参数块和存储器操作数的引用可以是多访问引用,对这些存储位置的访问不必须是块并发的,且访问和引用的顺序未被定义。为与在指令的单次执行中处理的操作数部分相比更大的操作数部分来报告访问异常;但是,对于操作数长度以外的位置以及正在处理的当前位置以外多于4K字节的位置,访问异常都不会被识别。
KMAC查询(功能代码0)
128位状态字被存储在参数块中。该字段的位0-127分别对应于KMAC指令的功能代码0-127。当位是1时,相应的功能被安装;否则,功能未安装。当KMAC查询功能的执行完成时,设置条件代码0;条件代码3不可用于该功能。
KMAC-DEA(功能代码1)
使用DEA算法、以参数块中的64位密钥和64位链接值来计算操作数2中的8字节消息块(M1,M2,...,Mn)的消息验证代码。消息验证代码,也被称为输出链接值(OCV),被存储在参数块的链接值字段中。
KMAC-TDEA-128(功能代码2)
使用TDEA算法、以参数块中的64位密钥和64位链接值来计算用于操作数2中的8字节消息块(M1,M2,...,Mn)的消息验证代码。消息验证代码,也被称为输出链接值(OCV),被存储在参数块的链接值字段中。
KMAC-TDEA-192(功能代码3)
使用TDEA算法、以参数块中的64位密钥和64位链接值来计算用于操作数2中的8字节消息块(M1,M2,...,Mn)的消息验证代码。消息验证代码,也被称为输出链接值(OCV),被存储在参数块的链接值字段中。
执行被锁定操作指令
在被计算机系统执行时,在通用寄存器1中指定的锁被获取之后,由通用寄存器0中的功能代码指定的操作被执行,然后锁被释放。但是,如其他CPU所观察到的:(1)在锁被获取之前,存储器操作数(包括可使用的参数列表中的字段)可被获取,并且如果在被测试位置的存储是可能的,则可以针对存储类型访问异常来测试;以及(2)在锁被释放之后,操作数可被存储在参数列表中。如果在锁被获取之前,未在参数列表中的操作数被获取,在锁被获取之后,它再次被获取。功能代码可以指定六个操作中的任一个:比较并载入、比较并交换、双重比较和交换、比较并交换并存储、比较并交换并双重存储、或者比较并交换并三重存储。通用寄存器0中的测试位当为1时,指定锁将不被获取且六个操作中没有一个将被执行,相反,功能代码的有效性将被测试。如果用于额外操作的额外功能代码在将来被分配,这将是有用的。该定义被写入,好像测试位是0,除非在另外说明时。如果指定了比较并载入,第一操作数比较值和第二操作数被比较。如果它们相等,第四操作数被置于第三操作数位置中。如果比较指示不相等,第二操作数被置于第一操作数比较值位置中作为新的第一操作数比较值。如果指定了比较并交换,第一操作数比较值和第二操作数被比较。如果它们相等,第一操作数替换值被存储在第二操作数位置。如果比较指示不相等,第二操作数被置于第一操作数比较值位置作为新的第一操作数比较值。如果指定了双重比较并交换,第一操作数比较值和第二操作数被比较。如果它们相等,第三操作数比较值和第四操作数被比较。如果两次比较都指示相等,则第一操作数和第三操作数替换值被分别存储在第二操作数位置和第四操作数位置。如果第一次比较指示不相等,则第二操作数被置于第一操作数比较值位置作为新的第一操作数比较值。如果第一次比较指示相等而第二次比较不相等,则第四操作数被置于第三操作数比较值位置作为新的第三操作数比较值。如果指定了比较并交换并存储、双重存储或三重存储,则第一操作数比较值和第二操作数被比较。如果它们相等,则第一操作数替换值被存储在第二操作数位置,且第三操作数被存储在第四操作数位置。然后,如果操作是双重存储或三重存储操作,则第五操作数被存储在第六操作数位置,且如果它是三重存储操作,则第七操作数被存储在第八操作数位置。如果第一操作数比较指示不相等,则第二操作数被置于第一操作数比较值位置作为新的第一操作数比较值。在六次操作的任何一个之后,比较的结果在条件代码中指示。功能代码(FC)是通用寄存器0的位位置56-63。功能代码不仅指定了要被执行的操作,还指定了操作数的长度,以及第一操作数比较和替换值及第三操作数或第三操作数比较和替换值(它们简单地被共同称为第一及第三操作数)是在通用寄存器还是在参数列表中。功能代码的模式(pattern)如下:·4的倍数(包括0)的功能代码指定了32位长度,第一和第三操作数在通用寄存器的位位置32-63。·4的倍数加1的功能代码指定了64位长度,第一和第三操作数位于参数列表中。·4的倍数加2的功能代码指定了64位长度,第一和第三操作数位于通用寄存器的位位置0-63。·4的倍数加3的功能代码指定了128位长度,第一和第三操作数位于参数列表中。
例如,PLO.DCS可被用来表示具有功能代码8的执行被锁定操作(PERFORM LOCKED OPERATION)。在符号中,字母“G”表示64位操作数长度,字母“R”表示某些或全部64位操作数位于通用寄存器中,且字母“X”表示128位操作数长度。未被分配给操作的功能代码或者指定由于操作未被实现(安装)而不能被CPU执行的操作的功能代码被称为无效的。通用寄存器0的位55为测试位(T)。当位55为0时,通用寄存器0中的功能代码必须有效;否则,识别规范异常。当位55为1时,如果功能代码有效则条件代码被设置为0,或者如果功能代码无效则条件代码被设置为3,且不执行其他操作。通用寄存器0的位32-54必须全为零;否则,识别规范异常。当寄存器的位55为1时,这是唯一能被识别的异常。通用寄存器0的位0-31被忽略。将被使用的锁由程序锁令牌(PLT)来表示,该程序锁令牌的逻辑地址在通用寄存器1中指定。在24位寻址模式中,PLT地址是通用寄存器1的位40-63,且寄存器的位0-39被忽略。在31位寻址模式中,PLT地址是寄存器的位33-63,且寄存器的位0-32被忽略。在64位寻址模式中,PLT地址是寄存器的位0-63。对于偶数编号(包括0)的功能代码,第一操作数比较值在通用寄存器R1中。对于以4开始的偶数编号的功能代码,第一操作数替换值位于通用寄存器R1+1中,且R1指定了寄存器的偶奇对,且必须指定偶数编号的寄存器;否则,识别规范异常。对于功能代码0和2,R1可以是偶数或奇数。对于功能代码0、2、12和14,第三操作数在通用寄存器R3中,且R3可以是偶数或奇数。对于功能代码8和10,第三操作数比较值在通用寄存器R3中,第三操作数替换值在通用寄存器R3+1中,且R3指定了寄存器的偶奇对,且必须指定偶数编号的寄存器;否则,识别规范异常。对于所有功能代码,指令的B2和D2字段指定了第二操作数地址。对于功能代码0、2、8、10、12和14,指令的B4和D4字段指定了第四操作数地址。对于功能代码1、3、5、7、9、11、13、15和16-23,指令的B4和D4字段指定了指令使用的参数列表的地址,且该地址不是被称为第四操作数地址。参数列表包含奇数编号的操作数,包括比较和替换值,以及第二操作数之外的偶数编号操作数的地址。在访问寄存器模式中,参数列表还包含与偶数编号操作数地址关联的访问列表项令牌(ALET)。在访问寄存器模式中,对于使得包含ALET的参数列表的被使用的功能代码,R3必须不是0;否则,识别规范异常。参数列表中的操作数地址,如果被使用的话,位于列表中的双字中。在24位的寻址模式中,操作数地址是双字的位40-63,且双字的位0-39被忽略。在31位的寻址模式中,操作数地址是双字的位33-63,且双字的位0-32被忽略。在64位寻址模式中,操作数地址是双字的位0-63。在访问寄存器模式中,访问寄存器1指定了包含程序锁定令牌(PLT)的地址空间,访问寄存器B2指定了包含第二操作数的地址空间,且访问寄存器B4指定了包含第四操作数或参数列表的地址空间。而且,对于其地址在参数列表中的操作数,访问列表项令牌(ALET)和地址一起位于列表中,并在访问寄存器模式中被用于指定包含该操作数的地址空间。在访问寄存器模式中,对于其地址在参数列表中的操作数,如果访问异常或PER存储改变事件被识别,则在异常或事件被识别时,参数列表中的相关ALET被载入到访问寄存器R3中。然后在产生的程序中断期间,如果一值将作为异常访问标识被存储在真实位置160,或作为PER访问标识被存储在真实位置163,则R3被存储。如果指令执行完成,而没有异常或事件的识别,则访问寄存器R3的内容是不可预测的。当不处于访问寄存器模式时,或者当包含ALET的参数列表未被使用时,访问寄存器R3的内容保持不变。偶数编号(2、4、6和8)的存储器操作数必须被指定在整数边界上,对于4的倍数的功能代码,这是字边界,对于4的倍数加1或2的功能代码,这是双字边界,或对于4的倍数加3的功能代码,这是四字边界。否则,识别规范异常。通用寄存器1中的程序锁定令牌(PLT)地址没有边界对齐要求。参数列表中所有未使用的字段应保持全零;否则,程序在将来可能无法兼容地操作。在锁被获取之后并且再次地正好在被释放之前,序列化功能立即被执行。但是,在锁被获取之前从参数列表获取的值不是必须被重新获取。如果测试位即通用寄存器0的位55为1,则不执行序列化功能。
功能代码0-3(比较并载入)
将第一操作数比较值与第二操作数进行比较。当第一操作数比较值等于第二操作数时,第三操作数被第四操作数替换,并设置条件代码0。当第一操作数比较值不等于第二操作数时,第一操作数比较值被第二操作数替换,并设置条件代码1。
功能代码4-7(比较并交换)
将第一操作数比较值与第二操作数进行比较。当第一操作数比较值等于第二操作数时,第一操作数替换值被存储在第二操作数位置,并设置条件代码0。当第一操作数比较值不等于第二操作数时,第一操作数比较值被第二操作数替换,并设置条件代码1。
功能代码8-11(双重比较并交换)
将第一操作数比较值与第二操作数进行比较。当第一操作数比较值等于第二操作数时,将第三操作数比较值与第四操作数进行比较。当第三操作数比较值等于第四操作数时(在发现第一操作数比较值等于第二操作数后),第一操作数替换值被存储在第二操作数位置,第三操作数替换值被存储在第四操作数位置,并设置条件代码0。当第一操作数比较值不等于第二操作数时,第一操作数比较值被第二操作数替换,并设置条件代码1。当第三操作数比较值不等于第四操作数时(在发现第一操作数比较值等于第二操作数后),第三操作数比较值被第四操作数替换,并设置条件代码2。
功能代码12-15(比较并交换并存储)
将第一操作数比较值与第二操作数进行比较。当第一操作数比较值等于第二操作数时,第一操作数位置,第三操作数被存储在第四操作数位置,并设置条件代码0。当第一操作数比较值不等于第二操作数时,第一操作数比较值被第二操作数替换,并设置条件代码1。
功能代码16-19(比较并交换并双重存储)
将第一操作数比较值与第二操作数进行比较。当第一操作数比较值等于第二操作数时,第一操作数替换值被存储在第二操作数位置,第三操作数被存储在第四操作数位置,第五操作数被存储在第六操作数位置,并设置条件代码0。当第一操作数比较值不等于第二操作数时,第一操作数比较值被第二操作数替换,并设置条件代码1。
功能代码20-23(比较并交换并三重存储)
将第一操作数比较值与第二操作数进行比较。当第一操作数比较值等于第二操作数时,第一操作数替换值被存储在第二操作数位置,第三操作数被存储在第四操作数位置,第五操作数被存储在第六操作数位置,第七操作数被存储在第八操作数位置,并设置条件代码0。当第一操作数比较值不等于第二操作数时,第一操作数比较值被第二操作数替换,并设置条件代码1。
锁定
在操作数开始时获得锁并在操作结束时释放它。获得的锁由程序锁定令牌(PLT)表示,所述程序锁定令牌的逻辑地址在通用寄存器1中被指定,如已被描述的。PLT是由PLT逻辑地址的依赖于模型的转变而产生的值。根据该模型,PLT可直接源于PLT逻辑地址,或当DAT开启时,来自由DAT进行的PLT逻辑地址的转变所产生的实地址。如果使用DAT,访问寄存器转换(ART)在访问寄存器模式中在DAT之前。PLT选择配置内的依赖于模型的数量的锁中的一个。仅通过指定相同的PLT逻辑地址且所述PLT逻辑地址可被不同的CPU转换为相同的实地址,可确保由不同CPU执行的程序指定相同的锁。由于当形成PLT时,模型可以使用或可以不使用ART和DAT,在ART和DAT期间可被遇到的访问异常条件可以被识别为异常或可以不被识别为异常。不存在对由PLT指定的位置的访问,但是可为该位置识别寻址异常。在PLT逻辑地址的处理期间,不出于任何原因识别保护异常。CPU一次可持有一个锁。当执行被锁定操作由该CPU执行、并将使用由于另一个CPU执行了执行被锁定操作指令而已被该另一个CPU持有的锁时,该CPU的执行被延迟直到该锁不再被持有。过度延迟可仅由机器故障引起且这是一机器检查条件。没有定义用于相同的锁的多个请求被满足的顺序。在持有锁时CPU的不可恢复故障可导致机器检查、进入检查停止状态或系统检查停止。如果所有的操作数未被损坏,则机器检查是处理备份,或如果寄存器操作数被损坏,则处理损坏。如果机器检查或检查停止状态是结果,没有存储器操作数被改变或应该被改变的所有存储器操作数已被正确改变,而且在任一种情况下,锁定已被释放。如果操作数没有处于其正确的初始状态或其正确的最终状态,结果是系统检查停止。
执行浮点操作指令:
当由计算机系统执行时,执行通用寄存器0中的功能代码指定的操作且条件代码被设置为指示结果。当没有异常条件时,设置条件代码0。当识别IEEE非陷阱异常时,设置条件代码1。当识别具有备用动作的IEEE陷阱异常时,设置条件代码2。在通用寄存器1的位32-63放置32位返回代码;通用寄存器1的位0-31保持为不改变。执行浮点操作(PFPO)指令受制于AFP寄存器控制位,控制寄存器0的位45。要成功地执行的PFPO,AFP寄存器控制位必须是1;否则,识别AFP寄存器数据异常,DXC1。寄存器0的位32是测试位。当位32是零时,执行由通用寄存器0的位33-63指定的功能;位33-63中的每个字段必须是有效的且组合必须是有效的、安装的功能;否则,识别规范异常。当位32是1时,由位33-63指定的功能不被执行,而是设置条件代码以指示这些位是否指定有效和安装的功能;如果功能是有效的和安装的,将条件代码设置为0,或如果功能是无效的或没有被安装,将条件代码设置为3。如果将来分配了额外功能,这将是有用的。该定义被写入,就好像测试位是零,除非另有说明。
GR0的位33-39指定操作类型。当前仅定义了一种操作类型;01,hex,是PFPO转换浮点基数。对于PFPO转换浮点基数操作,通用寄存器0中的其他字段包括第一操作数格式、第二操作数格式、控制标志和舍入方法。对于PFPO转换浮点基数操作,第二操作数被转换为第一操作数的格式并被放置在第一操作数位置,返回代码被放在通用寄存器1的位32-63,且条件代码被设置以指示是否识别异常条件。第一和第二操作数位于隐含的浮点寄存器中。第一操作数位于PFR0(与PFR2成对以用于扩展)中。第二操作数位于PFR4(与PFR6成对以用于扩展)中。
备用异常动作控制:
通用寄存器0的位57是备用异常动作控制。这种控制的设置影响为IEEE上溢和IEEE下溢陷阱异常而采取的动作。当备用异常动作控制是零时,IEEE上溢和IEEE下溢陷阱异常以正常方式被报告。即,合适的数据异常代码(DXC)被放在浮点控制寄存器的字节2中,操作完成,且发生用于数据异常的程序中断。(作为程序中断的一部分,DXC被存储在位置147。)这被称为具有正常动作的IEEE陷阱异常。当备用异常动作控制是1时,DXC被放置在浮点控制寄存器的字节2中,操作完成,设置条件代码2,且程序执行继续到下一顺序指令。(没有程序中断,且DXC没有被存储在位置147。)这被称为具有备用动作的IEEE陷阱异常。
HFP上溢控制
通用寄存器0的位58是HFP上溢控制。当HFP上溢控制是零时,HFP上溢条件被报告为IEEE无效操作异常,并受制于IEEE无效操作掩码。当HFP上溢控制是1时,HFP上溢条件被报告为IEEE上溢异常并受制于IEEE上溢掩码。仅针对HFP目标定义了HFP上溢控制;当HFP目标之外的目标被指定时,该位必须是零。
HFP下溢控制
对于HFP目标,通用寄存器0的位58是HFP备用下溢控制。当HFP下溢控制是零时,HFP下溢使得结果被设置为真零,其符号与源相同,且不报告下溢。(在这种情况下的结果不精确且受制于不精确抑制控制。)当HFP下溢控制是1时,该条件被报告为IEEE下溢异常,且受制于IEEE下溢掩码。仅针对HFP和DFP目标定义了通用寄存器0的位59;当指定BFP目标时,该位必须被设置为零。
DFP优选量子控制(DPQC)
对于DFP目标,通用寄存器0的位59是DFP优选量子控制(DPQC)。对于具有DFP目标的基数转换,如果交付的值不精确,选择具有最小量子的伙伴(cohort)成员;如果交付的值是精确的,选择取决于通用寄存器0的位59的值,DFP优选量子控制(DPQC)。当交付的值是精确的且DPQC位是零时,选择具有最大量子的伙伴成员。当交付的值是精确的且DPQC位是1时,优选的量子是1,并选择量子最接近1的伙伴成员。
返回代码
不管设置什么条件代码,且与测试位是否是1无关,在通用寄存器1的位32-63中放置32位返回代码;通用寄存器1的位0-31保持不变。当对于完成的IEEE陷阱异常发生程序中断时,返回代码也被放置在通用寄存器1中;当对于抑制的IEEE陷阱异常发生程序中断时,通用寄存器1不被更新。因此,在用于IEEE上溢、IEEE下溢和IEEE不精确陷阱异常的程序中断上更新通用寄存器1,但不在用于IEEE无效操作陷阱异常的程序中断上更新通用寄存器1。除非在另有说明时,返回代码是为零的值。
符号保护
对于PFPO转换浮点基数,结果符号与源符号一致。对此仅有的例外是当源是NaN且当目标是HFP时;在这种情况下,结果是符号被设置为加号的目标HFP格式(Hmax)中最大可表示数字。
优选量子
对于具有DFP目标的基数转换来说,如果交付的值是不精确的,选择具有最小量子的伙伴成员;如果交付的值是精确的,选择依赖于通用寄存器0的位59的值,DFP优选量子控制(DPQC)。当交付的值精确且DPQC位是零时,选择具有最大量子的伙伴成员。当交付值是精确的且DPQC位是1时,优选的量子是1且选择具有最接近1的量子的伙伴成员。
NaN转换
当在DPF和BFP之间转换时,NaN的符号总是被保留,且当可能时,有效载荷的值被保留。如果源有效负载的值超过目标有效负载的最大值,目标被设置为默认QNaN,但具有与源相同的符号。当陷阱被禁止时,SNaN被转换为对应的QNaN,且当可能时有效负载被保留;即,SNaN(x)被转换为QNaN(x),其中x是有效负载的值。对于DFP,QNaN(0)和SNaN(0)都可被表示;但是在BFP中,有用于QNaN(0)的表示,但没有用于SNaN(0)的表示。
用于PFPO的定标(scaled)值和有符号定标指数(Ω)
对于PFPO转换浮点基数操作,当IEEE上溢陷阱动作或IEEE下溢陷阱动作发生时,使用以下步骤计算定标值:
Ψ=bΩ
z=g÷Ψ
其中Ω是有符号定标指数,b是目标基数(2,10或16),Ψ是定标因子,g是精度舍入的值,且z是定标值。选择有符号定标指数(Ω)以使得定标的结果(z)的值的幅度位于1≤|z|≤b的范围内。有符号定标指数(Ω)的值,被当作32位有符号二进制整数,被放置在通用寄存器1的位32-63中;通用寄存器1的位0-31保持不变。定标值被用作交付值,并被放置在结果位置。对于DFP目标,选择具有最接近定标的优选量子的量子的伙伴成员。(但应当注意,对于所有当前支持的转换,结果总是不精确的,所以选择具有最小量子的伙伴成员。)对于BFP目标来说,没有冗余表示,在伙伴中仅有一个成员。对于HFP目标来说,结果被标准化。
HFP值
在输入时接受没有被标准化的HFP值,但是所有的HFP结果被标准化。如果HFP结果将小于(在幅度上)最小的可表示的标准化数,则存在HFP下溢条件。
用于PFPO的HFP上溢和下溢
对于PFPO转换浮点基数操作的HFP目标来说,上溢和下溢条件的处理分别由HFP上溢控制和HFP下溢控制控制。
HFP上溢:当HFP目标精确度的最大数量(Hmax)在幅度上被精确舍入值超过时,存在HFP上溢条件。即,当标准化的HFP结果的特征将超过127且分数不是零时。当HFP上溢控制是零时,HFP上溢被报告为IEEE无效操作异常,且受制于FPC寄存器中的IEEE无效操作掩码。这被称为作为IEEE无效操作条件的HFP上溢。当HFP上溢控制是1时,HFP上溢被报告为IEEE上溢异常且受制于FPC寄存器中的IEEE上溢掩码。这被称为作为IEEE上溢条件的HFP上溢。
HFP下溢:当精确舍入值非零且在幅度上小于HFP目标精度的最小标准化数量Hmin时,存在HFP下溢条件。即,当标准化HFP结果的特征将少于零且分数不是零时。结果被设置为真零,其具有与源相同的符号。HFP下溢条件的报告受制于HFP下溢控制。但是在这种情况中的结果是不精确的且受制于用于该条件的控制。当HFP下溢控制是零时,不报告HFP下溢条件。当HFP下溢控制是1时,HFP下溢被报告为IEEE下溢异常,且受制于FPC寄存器中的IEEE下溢掩码。这被称为作为IEEE下溢条件的HFP下溢。
执行定时工具功能指令:
当由计算机系统执行时,执行通用寄存器0中的功能代码指定的定时工具功能。条件代码被设置以指示功能的结果。通用寄存器1包含存储器中的参数块的地址。PTFF查询功能将信息放在参数块中;PTFF控制功能使用从参数块获得的信息。如由其他CPU和通道程序所观察的,对参数块的引用可以是多次访问引用,访问这些存储位置不必须是块并发的,且这些访问或引用的顺序没有被定义。通用寄存器0的位位置57-63包含功能代码。通用寄存器0的位56必须是零;否则,识别规范异常。通用寄存器的所有其他位被忽略。通用寄存器1包含存储器中的参数块中的最左边字节的逻辑地址。在24位寻址模式中,通用寄存器1的位位置40-63的内容构成地址,且位位置0-39的内容被忽略。在31位寻址模式中,通用寄存器1的位位置33-63的内容构成地址,且位位置0-32的内容被忽略。在64位寻址模式中,通用寄存器1的位位置0-63的内容构成地址。PTFF-QAF(查询可用功能)功能提供了指示其他功能的可用性的手段。PTFF-QAF功能指示对于在基础机级别的管理状态中运行的程序,是否安装了功能。
PTFF-QAF(查询可用功能)
用于该功能的参数块具有以下格式:128位的字段被存储在参数块中。该字段的位0-127分别对应于PTFF指令的功能代码0-127。当位是1时,对应的功能被安装;否则,功能未安装。pb.wl的位0-3被设置为1,因为这些位代表功能代码0-3,其目前被分配给查询功能。pb.wl的位4-31被保留以用于额外的查询功能。pb.w3的位0-3被设置为1,因为这些位代表功能代码64-67,其目前被分配给控制功能。pb.w3的位4-31被保留以用于额外的控制功能。参数块字pb.w2和pb.w4被保留以用于将来的扩展。
PTFF-QTO(查询TOD偏移)
返回的64位物理时钟值(pb.Tu)是在最近的TOD偏移更新事件时的物理钟的值。返回的64位的TOD偏移值(pb.d)指示TOD偏移(d)的值。这是被加到Tr(物理时钟)以获得Tb(基础机TOD时钟)的当前值;即,Tb=Tr+pb.d。返回的64位逻辑TOD偏移值(pb.d1)指示被加到Tr(物理时钟)以获得Tc(用于CPU执行的当前级别的逻辑TOD时钟)的当前值;即,Tc=Tr+pb.d1。因此,当在基础机级别执行时,pd.d1=pb.d=d;当在逻辑分区级别执行时,加上Tp-Tb时期(epoch)差(Dp),得到pb.d1=d+Dp;且当在虚拟机级别执行时,Tv-Tp时期差(Dv)也被加上,得到pb.d1=d+Dp+Dv。在用于这些等式中的每个的加法中,位位置0的进位(如有)被忽略。返回的64位的TOD时期差值(pb.ed)是用于当前CPU执行级别的TOD时期差。当在基础机级别执行时,该值是零;当在逻辑分区级别执行时,该值是Tp-Tb时期差(Dp);当在虚拟机级别执行时,该值是Tv-Tp时期差(Dv)。
PTEF-QSI(查询操纵信息)
返回的64位的物理时钟值(pb.Tu)是最近的TOD偏移更新事件时的物理时钟的值。剩余的字段是旧时段(episode)和新时段寄存器的值。
PTFF-QPT(查询物理时钟)
返回的64位物理时钟值(pb.Tr)是物理时钟的当前值。在未被物理时钟提供的最右侧位位置存储零。当时钟运行时,在相同CPU或不同CPU上两次执行PTFF-QPT不是必须返回时钟的不同值。
PTFF-ATO(调整TOD偏移)
被当作无符号二进制值的来自参数块的64位值(pb.a)被加到下一时段的基础偏移。在该加法中忽略了位0的进位(如有)。效果不是立即的,但被安排(schedule)为与下一TOD偏移更新事件同时发生。如果下一时段已被安排,且还没有变得活动,则pb.a和new.b的和替换new.b,且不再采取其它动作。如果下一时段还没有被安排(即,新时段寄存器是当前的时段),则新时段寄存器被保存在旧时段寄存器中,且新时段被安排(由此,使旧时段寄存器变成当前时段)。新时段起始时间(new.s)被设置为物理时钟在下一TOD偏移更新事件时将具有的值,且新时段基础偏移(new.b)被设置为pb.a和在该同一时刻TOD偏移将具有的值的和,该TOD偏移的值是使用当前操纵参数来计算的。该功能不改变操纵率,如果新时段被安排,新时段的精细操纵和粗略操纵率和当前值一样。调整TOD偏移功能的执行被互锁,从而如配置中的所有CPU所观察到的,TOD偏移寄存器的全部内容看起来被并发地和同时地更新。但是,配置中的CPU对逻辑TOD时钟(基本机器TOD时钟、逻辑分区TOD时钟、以及虚拟机TOD时钟)的访问不会被人为地延迟;由此,加上大的无符号调整值可具有负改变的效果,并可以使得逻辑TOD时钟看来在倒退。
PTFF-STO(设置TOD偏移)
来自参数块的64位值(pb.d)替换TOD偏移。当在基本机器级别上发出时,效果不是立即的,而被安排为与下一TOD偏移更新事件同时发生。如果下一时段已被安排且还没有变得活动,则pb.d替换new.b,且不再采取其他动作。如果下一时段还没有被安排(即,新时段寄存器是当前的时段),则新时段寄存器被保存在旧时段寄存器中,且新时段被安排(由此,使旧时段寄存器变成当前时段)。新时段起始时间(new.s)被设置为物理时钟在下一TOD偏移更新事件时将具有的值,且新时段基础偏移(new.b)被设置为pb.d的值。该功能不改变操纵率,如果新时段被安排,新时段的精细操纵和粗略操纵率和当前值一样。在逻辑分区或虚拟机的级别上发出时,该功能可由管理程序来模拟,并在用于当前CPU执行级别的TOD时期(epoch)差(分别为Dp或Dv)上操作;没有新的时段被安排,且改变立即生效。设置TOD偏移功能的执行被互锁,从而如配置中的所有CPU所观察到的,TOD偏移寄存器的全部内容看起来被并发地和同时地更新。但是,配置中的CPU对逻辑TOD时钟(基本机器TOD时钟、逻辑分区TOD时钟、以及虚拟机TOD时钟)的访问不会被人为地延迟;由此,用较小的值来替换TOD偏移可以使得逻辑TOD时钟看来在倒退。
PTFF-SFS(设置精细操纵率)
来自参数块的32位值(pb.f)变成下一时段的精细操纵率。该效果不是立即的,而是被安排为与下一TOD偏移更新事件同时发生。如果下一时段已被安排但还未变得活动,则pb.f替换new.f,且不再采取其他动作。如果下一时段还没有被安排(即,新时段寄存器是当前的时段),则新时段寄存器被保存在旧时段寄存器中,且新时段被安排(由此,使旧时段寄存器变成当前时段)。新时段起始时间(new.s)被设置为物理时钟在下一TOD偏移更新事件时将具有的值,且新时段基础偏移(new.b)被设置为在该同一时刻TOD偏移将具有的值,该TOD偏移的值是使用当前操纵参数来计算的。新时段精细操纵率(new.f)被设置为pb.f,且新时段粗略操纵率和当前值一样。当新时段生效时,配置中的CPU对逻辑TOD时钟的访问被互锁,以确保如所有程序所观察到的,逻辑TOD时钟看起来是唯一的并单调增加。
PTFF-SGS(设置粗略操纵率)
来自参数块的32位值(pb.g)变成用于下一时段的粗略操纵率。该效果不是立即的,而是被安排为与下一TOD偏移更新事件同时发生。如果下一时段已被安排但还未变得活动,则pb.g替换new.g,且不再采取其他动作。如果下一时段还没有被安排(即,新时段寄存器是当前的时段),则新时段寄存器被保存在旧时段寄存器中,且新时段被安排(由此,使旧时段寄存器变成当前时段)。新时段起始时间(new.s)被设置为物理时钟在下一TOD偏移更新事件时将具有的值,且新时段基础偏移(new.b)被设置为在该同一时刻TOD偏移将具有的值,该TOD偏移的值是使用当前操纵参数来计算的。新时段的粗略操纵率(new.g)被设置为pb.g,且新时段的精细操纵率和当前值一样。当新时段生效时,配置中的CPU对逻辑TOD时钟的访问被互锁,以确保如所有程序所观察到的,逻辑TOD时钟看来是唯一的并单调增加。
指令阻止工具
参考图8,示出了VM中的虚拟架构级别(VAL)指令阻止工具的功能。将在VM中执行的每个指令(如存储列中的指令所示)包括操作码。在某些实现中,操作码是指令901 902 903 904中的单个字段。在其他实现中,操作码可以在指令905(OpCode||OC)906(OpCode||OpCode)的多个字段中分布。优选地,电路、微代码或其组合将基于操作码来确定当前虚拟机是否支持要被执行的指令。如果不支持,将指示程序中断例如程序异常,并抑制该指令。
在一个实现中,要被执行的指令的操作码将被用来索引至操作码表907中,以定位与该操作码关联的项。被定位的项将包括指示操作码所支持的机器级别的代码。在另一实现中,每个虚拟机将具有操作码表,且表中的项将指示虚拟机是否支持操作码。
参考图9,从表907获取的代码(机器级别(ML))1002将与虚拟机的状态描述表1004的状态描述项(IBC)1008相比较(1005),且如果机器级别代码1002大于IBC状态描述项1008,则指令将正常执行1007,否则,尝试执行将导致程序异常1006。在另一实施例中,操作码字段之外或不同于操作码字段的、指令的字段可被用于索引至操作码表907中。例如,操作码在现有机器架构中可具有保留字段(为0或被忽略),所述保留字段在新的架构级别中被用来提供新的功能。实施例将包括这些位与操作码,以索引至操作码表907中。在另一实施例中,操作码表907可具有ML字段之外的字段,用来指示相关联的指令中的保留位的允许使用。例如,如果指令具有4个保留位,如果所有位都必须是0,ML表可包含0000,或者选择的位为1,其中,1指示该字段的相应的先前保留的位可以是0或1(从而对于VM允许指令的新引入的功能)。
指令测试/查询工具
如果指令测试/查询工具的功能阻止工具已安装(图10),在实施例中,操作码表项1001可另外包括功能代码字段(FCx)1003(或者到功能代码表1108的指针)。功能代码字段1003(或者功能代码表1108项1107)与要被执行1102的功能代码进行比较1103。如果功能代码相当,则指令被允许1105使用该功能代码,如果功能代码不相当1103,则指令执行引起程序中断,例如程序异常或规范异常(程序检查)1104。
参考图11,如果指令测试/查询工具的功能测试/查询阻止工具已安装,如果任何查询指令1201被执行以确定该指令的已安装功能,则仅返回1205虚拟机所允许的功能代码。在一实施例中,位有效表1108被提供给虚拟机,被虚拟机用来响应这样的查询。在另一实施例中,掩码(未示出)被提供给虚拟机,与主机的已安装功能代码进行与操作,以创建VM中的指令的允许的功能代码1107的结果。
参考图8,示出了示例z/Architecture指令格式。格式901示出2字节格式,其中操作码(Op)占有高位的字节,且通用寄存器字段R1和R2占有剩余字节的各4位。格式902示出仅2字节操作码指令格式。格式903示出4字节(字)指令,其具有1字节操作码(Op),后面是3个寄存器字段(R1、X2和B2),然后是被称为位移字段(D2)的立即字段。格式904示出4字节指令,其具有4字节操作码(Op),后面是4位寄存器字段(B2),然后是12位立即字段(I2)。格式905示出4字节指令,其具有2字节操作码(Op),后面是4位掩码M1,接着是4位操作码扩展(Op)以及保留的4位字段,后面是12位立即字段(I2)。格式906示出6字节指令,其具有1字节操作码(Op),后面是3个寄存器字段(R1、X2和B2),然后是被称为位移字段(DL2)的立即字段,接着是8位立即字段(DH2)和8位操作码扩展(Op)。
参考图8和9,在一实施例中,当指令被获取以由虚拟机的逻辑处理器来执行时,使用指令的操作码作为搜索参数来搜索操作码表907。如果为指令找到1001了项,该项包括用于确定指令允许信息的信息1002 1003。在一优选实施例中,项包括字段1002,其指定了代码(ML),该代码指示支持该指令的架构的机器级别。状态描述1004被提供给每个VM。状态描述包括字段(IBC)1005,该字段表示VM要模拟的架构的机器级别。如果1005支持指令的架构的机器级别(ML)大于VM要模拟的架构的机器级别(IBC),则信号通知程序异常(程序检查),且在一实施例中,指令的执行可被抑制。另一方面,如果支持指令的架构的机器级别(ML)不大于VM要模拟的架构的机器级别(IBC),则该指令被允许执行。
在某些环境中提供了能够执行多个功能中的任一个的指令(例如如上所述的密码消息指令)。指令对功能的选择可以是通过指定表示功能的功能代码(FC)。例如,功能代码可以由该指令间接地指定,或由该指令的位或字段来显式地指定。在某些情形下,可以在机器架构级别上初始地实现某些功能代码(例如0-3),且可以在以后的机器架构级别上添加另外的功能代码。可向VM提供能力,来仅允许较老架构级别的功能代码执行。
参考图10,这可以通过具有操作码表项1001中的功能代码字段(FCx)1003来实现。当指令将要被执行时,FCx字段1003指定了要返回的允许的功能代码列表,而不是主机处理器所支持的实际功能代码。在实施例中,操作码表项的FCx 1003字段与IBC字段1005串接,以索引至FCx表1108中来定位包含允许的功能代码(FC)1107的项。允许的FC 1107与指令1102指定的FC来进行比较(在密码消息指令中,通用寄存器01101的位1102包括指定的FC 1102)。如果1103FC值是允许的1105,则FC位所指示的功能的正常执行被允许。如果1103FC值是不允许的1104,则程序异常(程序检查)事件被执行。类似地,当执行功能查询/测试操作1201(例如密码消息指令查询操作)时,操作码表项1003的FCX位与IBC位1005相串接1106,以索引至FC表中来定位用于指令的允许的FC 1107,该指令的操作码定位操作码表项1101。允许的FC然后被返回1105到功能查询/测试操作所指定的位置。
在一实施例中,当FCX位为0时,不执行FCx表1108访问,并使用相应指令所指示的任何功能代码而不用转换。
在一实施例中,对指令的其他架构修改可使用针对功能代码所描述的相同机制。在该情形下,例如,架构级别上的指令905使得操作码扩展字段和I2字段之间的位保留(0000)。优选地,对保留的位测试0,以确保指令将在这样的环境中合适地执行,在该环境中,非零位支持还未被支持的功能。较新的架构使用一个或多个保留位来识别新功能,以实现该新功能。在一个例子中,该4个保留位(Res)可以索引至FCx表1108中,以确定它们是否被支持,如针对图10中的FC位1102所示。在该情形下,对于功能代码,串接将是0||IBC||FCx,且对于新的功能允许测试1103,串接将是1||IBC||FCx。不是FC 1102与允许的FC 1107进行比较,而是将相对于允许的FCS位1107来检查指令905的Res字段,以确定1103该功能是否被允许。
在另一实施例中,指令的Res字段905可被串接,好像它是905操作码的第三操作码扩展,以索引至操作码表907中来确定用该字段引入的功能是否被允许。
作为获取指令的一部分或者在获取指令之后,CPU可以确定该指令的某些属性,例如,操作数的数量、操作数的类型(存储器或寄存器)、操作数对齐需求、以及授权需求。在仿真环境中,该确定可以是使用操作码作为索引的简单表查找的结果;在高性能CPU中,该确定可被构建到处理器的指令解码电路中。
虚拟机架构级别的工具引入了与每个指令关联的额外属性:指令首次被引入到架构中所在的机器级别。该机器级别可以是连续统(continuum)上的编码数值点(例如,10.2,意味着位于第二固件级别的第10代机器),或者它可以简单地是相对于最近的机器级别的值(例如,2[或-2],意味着指令被引入到当前机器之前两代的机器)。
参考图12,在一实施例中,多功能指令的选择的已安装功能被隐藏,该多功能指令被架构设计为执行多个已安装功能中的功能,所述隐藏包括设置1201值,该值控制已安装功能对包含一个或多个处理器的主机计算机的多功能指令的可用性,一处理器具有多功能指令的第一多个所述已安装功能,该第一多个已安装功能包含一个或多个第一已安装功能以及一个或多个第二已安装功能,以及执行1202多功能指令,该多功能指令包含操作码字段,该执行包括响应于指定查询功能的多功能指令,执行该查询功能,以确定可用于该多功能指令的已安装功能;该查询功能执行使用所述值来确定一个或多个第二已安装功能;以及该查询功能执行存储1203结果值,该结果值指示该一个或多个第二已安装功能中的一个或多个不可用于该多功能指令。
参考图13,在一实施例中,由主机计算机的管理程序为主机计算机的虚拟机来设置1301所述值,该虚拟机包含一个或多个逻辑处理器,该一个或多个逻辑处理器被分配给一个或多个物理处理器,一物理处理器具有多功能指令的一个或多个第二已安装功能,其中由一个或多个物理处理器中的一物理处理器上的一个或多个逻辑处理器中的一逻辑处理器在虚拟机中执行该多功能指令。
在一实施例中,基于多功能指令的操作码来确定一个或多个第二已安装功能。
参考图14,在一实施例中,已经在虚拟机中设置1201控制值的管理程序设置1401另一个值,该值控制已安装功能对在主机计算机系统的另一虚拟机上执行的多功能指令的可用性;以及由一个或多个另一逻辑处理器中的另一逻辑处理器在该另一虚拟机中执行1402另一多功能指令;响应于该另一多功能指令指定另一查询功能,执行该另一查询功能,以确定可用于该另一多功能指令的已安装功能;该另一查询功能执行使用该另一个值来确定一个或多个第三已安装功能;以及该另一查询功能执行存储1403另一结果值,该结果值指示一个或多个第三已安装功能中的一个或多个对该另一多功能指令不可用。
在一实施例中,被存储的结果值是位有效值,其中,每个位位置对应于一功能,且位为1指示相应功能已安装。
参考图15,在一实施例中,所述查询功能由多功能指令指定功能代码1501或多功能指令指定的测试位1502来指定。
参考图16,在一实施例中,所述多功能指令是z架构指令,该指令由1601密码指令、执行定时工具功能指令、或者图17中的1701执行浮点操作指令或执行被锁定操作指令中的任何一个构成,其中,密码指令包含密码消息指令、计算中间消息指令、计算最后消息摘要指令、计算最后消息摘要指令、计算消息验证代码指令中的任何一个,其中,多功能指令指定了查询功能;响应于所述多功能指令是密码指令或PTFF指令,获取1602要被执行的多功能指令指定功能代码,该获取的功能代码由查询功能构成1605,其中,基于控制值的被存储1604的结果值是多个位,该多个位中的每个位指示是否支持相应的功能代码;以及响应于所述多功能指令是密码指令或PTFF指令,获取要被执行的多功能指令指定的功能代码,该获取的功能代码不是查询功能1605,根据该获取的功能代码来执行1603密码功能或PTFF功能;以及1701响应于所述多功能指令是执行被锁定操作指令或执行浮点操作指令且所述多功能指定的测试位为11702,基于控制值来确定1704多功能指令指定功能代码是否已安装,其中,被存储的结果值1704是条件代码值;以及响应于所述多功能指令是执行被锁定操作指令或执行浮点操作指令且所述多功能指令指定的测试位为01702,根据获取的功能代码来执行1703浮点功能或被锁定操作。
在一实施例中,响应于多功能指令指定了第一多个所述已安装功能中的非查询功能,响应于该非查询功能是所述第二已安装功能中的一个,该非查询功能被执行,且响应于该非查询功能是和所述第二已安装功能中的一个不同的功能,执行所述非查询功能被阻止。
以上所述对于理解一个计算机系统实施例的术语和架构是有用的。实施例可不限于z/Architecture或提供的其描述。实施例可以使用这里的教导被有利地应用于其他计算机制造商的其他计算机架构。
尽管这里示出并描述了优选实施例,可以理解,实施例不限于这里公开的精确构造,且可以针对所附权利要求书中定义的本发明范围以内的所有改变和修改保留权利。
Claims (10)
1.一种用于隐藏多功能指令的所选择已安装功能的计算机实现的方法,该多功能指令被架构设计为执行多个已安装功能中的功能,所述方法包括:
设置(1201)值,该值控制已安装功能对主机计算机(50)的多功能指令(901-906)的可用性,该主机计算机包含一个或多个处理器(106),一处理器具有多功能指令的多个所述已安装功能,该多个已安装功能包含一个或多个第一已安装功能以及一个或多个第二已安装功能,其中由主机计算机(50)的管理程序为主机计算机的虚拟机来设置所述值,该虚拟机包含一个或多个逻辑处理器,该一个或多个逻辑处理器被分配给一个或多个物理处理器,一物理处理器具有多功能指令的所述一个或多个第二已安装功能,其中,所述一个或多个物理处理器中的物理处理器上的一个或多个逻辑处理器中的逻辑处理器在该虚拟机中执行所述多功能指令;以及
所述一个或多个逻辑处理器的逻辑处理器在虚拟机中执行多功能指令,该多功能指令包含操作码字段,该执行包括:
响应于该多功能指令指定查询功能,执行(1202)该查询功能,以确定可用于该多功能指令的已安装功能;
该查询功能的执行使用所述值来确定所述一个或多个第二已安装功能;
该查询功能的执行存储(1203)结果值,该结果值指示所述一个或多个第一已安装功能对所述一个或多个逻辑处理器的逻辑处理器在虚拟机中的该多功能指令不可用;以及
响应于该多功能指令指定第一多个所述已安装功能中的非查询功能,在该非查询功能是所述第二已安装功能中的一个时,执行该非查询功能,且在该非查询功能是不同于所述第二已安装功能中的一个的其它功能时,阻止执行所述非查询功能;
由管理程序来设置(1401)另一个值,该值控制已安装功能对在主机计算机系统(50)的另一虚拟机上执行的多功能指令的可用性;以及
由一个或多个另一逻辑处理器中的另一逻辑处理器在该另一虚拟机中执行另一多功能指令;
响应于该另一多功能指令指定另一查询功能,执行该另一查询功能,以确定(1402)对该另一多功能指令可用的已安装功能;
该另一查询功能的执行使用该另一个值来确定一个或多个第三已安装功能;以及
该另一查询功能的执行存储另一结果值,该结果值指示该一个或多个第三已安装功能中的一个或多个对该另一多功能指令不可用。
2.如权利要求1所述的方法,其中,基于多功能指令的操作码来确定所述一个或多个第二已安装功能。
3.如权利要求1所述的方法,其中,被存储的结果值是位有效值,其中,每个位位置对应于一功能,且位为1指示相应功能已安装。
4.如权利要求1所述的方法,其中,所述查询功能由多功能指令指定的功能代码或多功能指令指定测试位来指定。
5.如权利要求4所述的方法,其中,所述多功能指令是z架构指令,该指令由密码指令、执行定时工具功能指令、执行浮点操作指令或执行被锁定操作指令中的任一个构成,其中,该密码指令包含密码消息指令、链接密码消息指令、计算中间消息摘要指令、计算最后消息摘要指令、计算消息验证代码指令中的任一个,其中,该多功能指令指定查询功能包括:
响应于所述多功能指令是密码指令或PTFF指令,获取要被执行的多功能指令指定的功能代码,该获取的功能代码由查询功能构成,其中,被存储的结果值是多个位,该多个位中的每个位指示是否支持相应的功能代码;以及
响应于所述多功能指令是密码指令或PTFF指令,获取要被执行的多功能指令指定的功能代码,该获取的功能代码不是查询功能,根据该获取的功能代码来执行密码功能或PTFF功能;以及
响应于所述多功能指令是执行被锁定操作指令或执行浮点操作指令且所述多功能指定的测试位为1,确定多功能指令指定的功能代码已安装,其中,被存储的结果值是条件代码值;以及
响应于所述多功能指令是执行被锁定操作指令或执行浮点操作指令且所述多功能指令指定的测试位为0,根据获取的功能代码来执行浮点功能或被锁定操作。
6.一种用于隐藏多功能指令的所选择已安装功能的系统,该多功能指令被架构设计为执行多个已安装功能中的功能,包括:
用于设置(1201)值的装置,该值控制已安装功能对主机计算机(50)的多功能指令(901-906)的可用性,该主机计算机包含一个或多个处理器(106),一处理器具有多功能指令的多个所述已安装功能,该多个已安装功能包含一个或多个第一已安装功能以及一个或多个第二已安装功能,其中由主机计算机(50)的管理程序为主机计算机的虚拟机来设置所述值,该虚拟机包含一个或多个逻辑处理器,该一个或多个逻辑处理器被分配给一个或多个物理处理器,一物理处理器具有多功能指令的所述一个或多个第二已安装功能,其中,所述一个或多个物理处理器中的物理处理器上的一个或多个逻辑处理器中的逻辑处理器在该虚拟机中执行所述多功能指令;以及
用于由所述一个或多个逻辑处理器的逻辑处理器在虚拟机中执行多功能指令的装置,该多功能指令包含操作码字段,该执行包括:
用于响应于该多功能指令指定查询功能,执行(1202)该查询功能,以确定可用于该多功能指令的已安装功能的装置;
该查询功能的执行使用所述值来确定所述一个或多个第二已安装功能;
该查询功能的执行存储(1203)结果值,该结果值指示所述一个或多个第一已安装功能对所述一个或多个逻辑处理器的逻辑处理器在虚拟机中的该多功能指令不可用;以及
用于响应于该多功能指令指定第一多个所述已安装功能中的非查询功能,在该非查询功能是所述第二已安装功能中的一个时,执行该非查询功能,且在该非查询功能是不同于所述第二已安装功能中的一个的其它功能时,阻止执行所述非查询功能的装置;
用于由管理程序来设置(1401)另一个值的装置,该值控制已安装功能对在主机计算机系统(50)的另一虚拟机上执行的多功能指令的可用性;以及
用于由一个或多个另一逻辑处理器中的另一逻辑处理器在该另一虚拟机中执行另一多功能指令的装置;
用于响应于该另一多功能指令指定另一查询功能,执行该另一查询功能,以确定(1402)对该另一多功能指令可用的已安装功能的装置;
该另一查询功能的执行使用该另一个值来确定一个或多个第三已安装功能;以及
该另一查询功能的执行存储另一结果值,该结果值指示该一个或多个第三已安装功能中的一个或多个对该另一多功能指令不可用。
7.如权利要求6所述的系统,其中,基于多功能指令的操作码来确定所述一个或多个第二已安装功能。
8.如权利要求6所述的系统,其中,被存储的结果值是位有效值,其中,每个位位置对应于一功能,且位为1指示相应功能已安装。
9.如权利要求6所述的系统,其中,所述查询功能由多功能指令指定的功能代码或多功能指令指定测试位来指定。
10.如权利要求9所述的系统,其中,所述多功能指令是z架构指令,该指令由密码指令、执行定时工具功能指令、执行浮点操作指令或执行被锁定操作指令中的任一个构成,其中,该密码指令包含密码消息指令、链接密码消息指令、计算中间消息摘要指令、计算最后消息摘要指令、计算消息验证代码指令中的任一个,其中,该多功能指令指定查询功能包括:
响应于所述多功能指令是密码指令或PTFF指令,获取要被执行的多功能指令指定的功能代码,该获取的功能代码由查询功能构成,其中,被存储的结果值是多个位,该多个位中的每个位指示是否支持相应的功能代码;以及
响应于所述多功能指令是密码指令或PTFF指令,获取要被执行的多功能指令指定的功能代码,该获取的功能代码不是查询功能,根据该获取的功能代码来执行密码功能或PTFF功能;以及
响应于所述多功能指令是执行被锁定操作指令或执行浮点操作指令且所述多功能指定的测试位为1,确定多功能指令指定的功能代码已安装,其中,被存储的结果值是条件代码值;以及
响应于所述多功能指令是执行被锁定操作指令或执行浮点操作指令且所述多功能指令指定的测试位为0,根据获取的功能代码来执行浮点功能或被锁定操作。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/822,358 | 2010-06-24 | ||
US12/822,358 US9851969B2 (en) | 2010-06-24 | 2010-06-24 | Function virtualization facility for function query of a processor |
PCT/EP2010/067046 WO2011160724A1 (en) | 2010-06-24 | 2010-11-08 | Function virtualization facility for function query of a processor |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102947794A CN102947794A (zh) | 2013-02-27 |
CN102947794B true CN102947794B (zh) | 2016-08-17 |
Family
ID=43416668
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080066964.6A Active CN102947794B (zh) | 2010-06-24 | 2010-11-08 | 用于处理器功能查询的功能虚拟化设施 |
Country Status (13)
Country | Link |
---|---|
US (3) | US9851969B2 (zh) |
EP (1) | EP2430534A1 (zh) |
JP (2) | JP5893012B2 (zh) |
KR (1) | KR101442429B1 (zh) |
CN (1) | CN102947794B (zh) |
AU (1) | AU2010355815B2 (zh) |
BR (1) | BR112012033817B1 (zh) |
CA (1) | CA2800642C (zh) |
MX (1) | MX2012014522A (zh) |
RU (1) | RU2571364C2 (zh) |
SG (1) | SG186100A1 (zh) |
WO (1) | WO2011160724A1 (zh) |
ZA (1) | ZA201209645B (zh) |
Families Citing this family (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7356725B2 (en) * | 2005-09-09 | 2008-04-08 | International Business Machines Corporation | Method and apparatus for adjusting a time of day clock without adjusting the stepping rate of an oscillator |
FR2957439B1 (fr) | 2010-03-09 | 2012-03-30 | Proton World Int Nv | Protection d'un canal de communication entre un module de securite et un circuit nfc |
FR2957438B1 (fr) | 2010-03-09 | 2012-03-30 | Proton World Int Nv | Detection d'un deroutement d'un canal de communication d'un dispositif de telecommunication couple a un circuit nfc |
FR2957440B1 (fr) | 2010-03-09 | 2012-08-17 | Proton World Int Nv | Protection d'un module de securite dans un dispositif de telecommunication couple a un circuit nfc |
US8635430B2 (en) | 2010-06-23 | 2014-01-21 | International Business Machines Corporation | Translation of input/output addresses to memory addresses |
US8615645B2 (en) | 2010-06-23 | 2013-12-24 | International Business Machines Corporation | Controlling the selectively setting of operational parameters for an adapter |
US8468284B2 (en) | 2010-06-23 | 2013-06-18 | International Business Machines Corporation | Converting a message signaled interruption into an I/O adapter event notification to a guest operating system |
US8572635B2 (en) | 2010-06-23 | 2013-10-29 | International Business Machines Corporation | Converting a message signaled interruption into an I/O adapter event notification |
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 |
US9851969B2 (en) | 2010-06-24 | 2017-12-26 | International Business Machines Corporation | Function virtualization facility for function query of a processor |
FR2969341B1 (fr) * | 2010-12-20 | 2013-01-18 | Proton World Int Nv | Gestion de canaux de communication dans un dispositif de telecommunication couple a un circuit nfc |
US8533714B2 (en) | 2011-05-03 | 2013-09-10 | International Business Machines Corporation | Dynamic virtual machine domain configuration and virtual machine relocation management |
DE102011107169A1 (de) * | 2011-07-13 | 2013-01-17 | Kuka Roboter Gmbh | Steuerung eines Roboter |
US9104508B2 (en) * | 2012-01-18 | 2015-08-11 | International Business Machines Corporation | Providing by one program to another program access to a warning track facility |
US8850450B2 (en) * | 2012-01-18 | 2014-09-30 | International Business Machines Corporation | Warning track interruption facility |
CN106802788B (zh) | 2012-03-30 | 2019-11-08 | 英特尔公司 | 用于处理sha-2安全散列算法的方法和设备 |
US8953785B2 (en) * | 2012-09-28 | 2015-02-10 | Intel Corporation | Instruction set for SKEIN256 SHA3 algorithm on a 128-bit processor |
US8874933B2 (en) * | 2012-09-28 | 2014-10-28 | Intel Corporation | Instruction set for SHA1 round processing on 128-bit data paths |
US8924741B2 (en) | 2012-12-29 | 2014-12-30 | Intel Corporation | Instruction and logic to provide SIMD secure hashing round slice functionality |
US9400678B2 (en) * | 2013-03-12 | 2016-07-26 | International Business Machines Corporation | Systems for selectively enabling and disabling hardware features |
JP6324660B2 (ja) * | 2013-03-19 | 2018-05-16 | 国立大学法人 和歌山大学 | 新規(2→3)結合型シアロ糖鎖の製造方法 |
US10331451B2 (en) | 2013-06-26 | 2019-06-25 | Intel Corporation | Method and apparatus to process SHA-2 secure hashing algorithm |
US9990216B2 (en) * | 2013-06-27 | 2018-06-05 | Red Hat Israel, Ltd. | Providing hypercall interface for virtual machines |
US9760390B2 (en) * | 2013-07-16 | 2017-09-12 | Empire Technology Development Llc | Processor identification for virtual machines |
US10038550B2 (en) | 2013-08-08 | 2018-07-31 | Intel Corporation | Instruction and logic to provide a secure cipher hash round functionality |
US9582295B2 (en) | 2014-03-18 | 2017-02-28 | International Business Machines Corporation | Architectural mode configuration |
US9588774B2 (en) | 2014-03-18 | 2017-03-07 | International Business Machines Corporation | Common boot sequence for control utility able to be initialized in multiple architectures |
US9916185B2 (en) | 2014-03-18 | 2018-03-13 | International Business Machines Corporation | Managing processing associated with selected architectural facilities |
US10313129B2 (en) * | 2015-06-26 | 2019-06-04 | Intel Corporation | Keyed-hash message authentication code processors, methods, systems, and instructions |
EP3437306B1 (en) * | 2016-04-15 | 2023-11-22 | Telefonaktiebolaget LM Ericsson (PUBL) | User equipment containers and network slices |
US10348506B2 (en) * | 2016-09-30 | 2019-07-09 | International Business Machines Corporation | Determination of state of padding operation |
US9680653B1 (en) | 2016-10-13 | 2017-06-13 | International Business Machines Corporation | Cipher message with authentication instruction |
US11250501B2 (en) | 2018-08-21 | 2022-02-15 | Capital One Services, Llc | Scalable architecture for managing transactions |
US11226839B2 (en) * | 2019-02-27 | 2022-01-18 | International Business Machines Corporation | Maintaining compatibility for complex functions over multiple machine generations |
US11334358B2 (en) | 2019-12-09 | 2022-05-17 | Amazon Technologies, Inc. | Hardware accelerator having reconfigurable instruction set and reconfigurable decoder |
US11841792B1 (en) * | 2019-12-09 | 2023-12-12 | Amazon Technologies, Inc. | Instructions with multiple memory access modes |
US11928070B2 (en) | 2021-04-13 | 2024-03-12 | SK Hynix Inc. | PCIe device |
KR102568906B1 (ko) | 2021-04-13 | 2023-08-21 | 에스케이하이닉스 주식회사 | PCIe 디바이스 및 그 동작 방법 |
KR102570943B1 (ko) | 2021-04-13 | 2023-08-28 | 에스케이하이닉스 주식회사 | PCIe 디바이스 및 그 동작 방법 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006221606A (ja) * | 2005-01-17 | 2006-08-24 | Renesas Technology Corp | データプロセッサ |
CN101681269A (zh) * | 2007-05-16 | 2010-03-24 | 威睿公司 | 多虚拟化技术的自适应动态选择与应用 |
Family Cites Families (46)
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 | 한국전기통신공사 | 마이크로 콘트롤러를 이용한 톤 발생장치 |
DE69230963T2 (de) | 1991-09-23 | 2000-12-07 | Intel Corp | Rechnersystem mit Software-Unterbrechungsbefehlen, das selektiv in einem virtuellen Modus arbeitet |
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 | 情報処理装置 |
US7257718B2 (en) * | 2003-05-12 | 2007-08-14 | International Business Machines Corporation | Cipher message assist instructions |
US7159122B2 (en) * | 2003-05-12 | 2007-01-02 | International Business Machines Corporation | Message digest instructions |
JP2007508623A (ja) | 2003-10-08 | 2007-04-05 | ユニシス コーポレーション | 複数のノードにわたってシステムリソースを割り当てて管理する仮想データセンタ |
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 |
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 |
JP2008226290A (ja) | 2007-03-08 | 2008-09-25 | Hitachi-Lg Data Storage Inc | 装置内蔵型光ディスク装置 |
JP4882845B2 (ja) * | 2007-04-19 | 2012-02-22 | 株式会社日立製作所 | 仮想計算機システム |
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 |
US8352952B2 (en) | 2008-12-01 | 2013-01-08 | Citrix Systems, Inc. | Systems and methods for facilitating virtualization of a heterogeneous processor pool |
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 |
-
2010
- 2010-06-24 US US12/822,358 patent/US9851969B2/en active Active
- 2010-11-08 MX MX2012014522A patent/MX2012014522A/es active IP Right Grant
- 2010-11-08 KR KR1020137000057A patent/KR101442429B1/ko active IP Right Grant
- 2010-11-08 CA CA2800642A patent/CA2800642C/en active Active
- 2010-11-08 EP EP10776351A patent/EP2430534A1/en not_active Ceased
- 2010-11-08 WO PCT/EP2010/067046 patent/WO2011160724A1/en active Application Filing
- 2010-11-08 RU RU2012147699/08A patent/RU2571364C2/ru active
- 2010-11-08 AU AU2010355815A patent/AU2010355815B2/en active Active
- 2010-11-08 JP JP2013515736A patent/JP5893012B2/ja active Active
- 2010-11-08 BR BR112012033817-0A patent/BR112012033817B1/pt active IP Right Grant
- 2010-11-08 SG SG2012087839A patent/SG186100A1/en unknown
- 2010-11-08 CN CN201080066964.6A patent/CN102947794B/zh active Active
-
2012
- 2012-12-19 ZA ZA2012/09645A patent/ZA201209645B/en unknown
-
2015
- 2015-06-17 JP JP2015121857A patent/JP6206881B2/ja active Active
-
2017
- 2017-12-08 US US15/835,576 patent/US10664269B2/en active Active
-
2020
- 2020-03-18 US US16/822,560 patent/US11188326B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006221606A (ja) * | 2005-01-17 | 2006-08-24 | Renesas Technology Corp | データプロセッサ |
CN101681269A (zh) * | 2007-05-16 | 2010-03-24 | 威睿公司 | 多虚拟化技术的自适应动态选择与应用 |
Non-Patent Citations (1)
Title |
---|
Dynamic Instruction Set Definition;Edel T R ET AL.;《ip.com》;20050227;第1-2页 * |
Also Published As
Publication number | Publication date |
---|---|
MX2012014522A (es) | 2013-01-29 |
US20180107480A1 (en) | 2018-04-19 |
ZA201209645B (en) | 2013-08-28 |
SG186100A1 (en) | 2013-01-30 |
US20110320825A1 (en) | 2011-12-29 |
CN102947794A (zh) | 2013-02-27 |
JP6206881B2 (ja) | 2017-10-04 |
US20200218536A1 (en) | 2020-07-09 |
AU2010355815A1 (en) | 2012-12-20 |
BR112012033817B1 (pt) | 2020-12-01 |
CA2800642C (en) | 2017-12-12 |
RU2571364C2 (ru) | 2015-12-20 |
AU2010355815B2 (en) | 2014-10-30 |
JP5893012B2 (ja) | 2016-03-30 |
US11188326B2 (en) | 2021-11-30 |
KR20130034036A (ko) | 2013-04-04 |
KR101442429B1 (ko) | 2014-09-17 |
WO2011160724A1 (en) | 2011-12-29 |
US10664269B2 (en) | 2020-05-26 |
RU2012147699A (ru) | 2014-05-20 |
JP2013534668A (ja) | 2013-09-05 |
EP2430534A1 (en) | 2012-03-21 |
US9851969B2 (en) | 2017-12-26 |
JP2015201227A (ja) | 2015-11-12 |
BR112012033817A2 (pt) | 2018-05-15 |
CA2800642A1 (en) | 2011-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102947794B (zh) | 用于处理器功能查询的功能虚拟化设施 | |
CN104252586B (zh) | 促进在处理环境中的处理的方法和计算机系统 | |
CN102906721B (zh) | 与访问地址空间并行地对地址空间调整大小 | |
CN104937542B (zh) | 向量校验和指令 | |
CN102754069B (zh) | 用于处理加载/存储分离指令的方法和系统 | |
CN102906701B (zh) | 在计算环境中控制对适配器的访问的方法和系统 | |
CN101911015B (zh) | 通过处理器指令减少对计算机体系结构依赖性的方法及装置 | |
CN102906719B (zh) | 输入/输出地址到存储器地址的转换 | |
US20210255867A1 (en) | Function virtualization facility for blocking instruction function of a multi-function instruction of a virtual processor | |
CN104169877B (zh) | 将不相邻指令区分符变换为相邻指令区分符 | |
CN104335164B (zh) | 事务中止处理 | |
CN104252336B (zh) | 基于解码时间指令优化来形成指令组的方法和系统 | |
CN104252335B (zh) | 用于选择的返回指令的预测获取和解码方法和系统 | |
CN101911024A (zh) | 带有帧管理的动态地址转换 | |
CN105190535A (zh) | 执行伪随机数产生操作的指令 | |
CN102906692A (zh) | 用于执行有选择地修改适配器功能参数的指令的方法、用于相同操作的计算机系统和计算机程序产品 | |
CN101911025A (zh) | 带有取回保护的动态地址转换 | |
CN105190534A (zh) | 执行伪随机数种子操作的指令 | |
CN104956319A (zh) | 向量浮点测试数据类立即指令 | |
CN101911016B (zh) | 计算机系统和操作计算机的方法 | |
CN104937543A (zh) | 向量元素旋转和掩码下插入指令 | |
CN107924442A (zh) | 用于轻量级虚拟化上下文的方法和设备 | |
CN101911014A (zh) | 旋转然后插入所选比特的工具以及由此的指令 | |
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: 1180792 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: 1180792 Country of ref document: HK |