执行相对指令的制作方法

文档序号:6592575阅读:415来源:国知局
专利名称:执行相对指令的制作方法
技术领域
本发明涉及一种计算机系统,更具体地,涉及计算机系统处理器指令功能性。
背景技术
商标IBM .是美国纽约Armonk的国际商业机器公司的注册商标,S/390, Z900和 Z990以及其他产品名称可以是国际商业机器公司或其他公司的注册商标或产品名称。以在二十世纪六十年代已知的IBM 系统360的机器开始到现在,IBM已经开发 出特定架构,其因为计算系统的本质属性而已知为“大型机”(mainframe),其操作原理通 过描述指令来描述机器的架构,当该指令的“大型机”实施时可以执行该指令,由于对改进 由“大型机”表示的计算机器的状态的显著贡献而由IBM发明人发明并采用该指令,正如 许多年来描述的在IBM操作原理中得到的结论的显著贡献。2007年4月公布的IBM ζ/ Architecture 操作原理第六版已经成为标准公布的参考SA22-7832-05,并结合至IBM z9 ,主机服务器。SA22-7832-05的公开、IBM Z/Architecture丨 操作原理的全部内容 通过引用合并于此。参考图1A,描述了现有技术中的主机计算机系统50的代表性组件。组件的其他 配置也可以使用在计算机系统中,其在现有技术中是公知的。代表性主机计算机50包括一 个或多个CPU 1,其与主存储器(计算机存储器2)以及到存储设备11和网络10的I/O接 口进行通信,以用于与其他计算机或SAN等进行通信。CPU 1兼容于具有架构指令集和架 构功能性的架构。CPU 1可以具有动态地址转换(DAT) 3,以将程序地址(虚拟地址)改变 为存储器的真实地址。DAT典型地包括转换后备缓冲器(TLB) 7,用于缓存转换从而之后对 计算机存储器2的块的访问无需地址转换的延迟。典型地缓存9在计算机存储器2和处理 器1之间使用。缓存9可以是分层级的,其具有对多于一个CPU可用的大缓存以及在该大 缓存和每个CPU之间的较小的、较快的(较低层级)缓存。在一些实施例中,该较低层级的 缓存被划分以提供用于指令提取和数据访问的各个低层级缓存。在一个实施例中,通过指 令提取单元经由缓存9从存储器2提取指令。该指令在指令解码单元(6)进行解码并被派 发(在一些实施例中使用其他指令)到指令执行单元8。典型地,使用几个执行单元8,例 如算术执行单元、浮点执行单元和分支指令执行单元。该指令通过执行单元来执行,来自指 令的访问操作数指定所需的寄存器和存储器。如果要从存储器2访问(加载或存储)操作 数,则加载存储器单元5典型地在正在执行的指令的控制下处理该访问。可以在硬件电路、 内部微码(固件)或两者的结合中执行指令。在图IB中,提供了现有技术的仿真主机计算机系统21的实例,其仿真主机架构的 主机计算机系统50。在仿真的主机计算机系统21中,主机处理器(CPU)2是仿真的主机处 理器(或虚拟主机处理器),包括仿真处理器27,其具有与主机计算机50的处理器1的不 同的原生指令集架构。仿真的主机计算机21具有仿真处理器27可访问的存储器22。在 示例性实施例中,存储器27分为主机计算机存储器2部分和仿真例程23部分。根据主机 计算机架构,对于仿真的主机计算机21的程序,主机计算机存储器2是可用的。仿真处理器27执行并非仿真的处理器1的架构的架构指令集的原生指令,所述原生指令是从仿真例 程存储器23获得的,以及可通过采用在Sequence&Access/Decode例程(其可解码被访问 的主机指令,以确定用于仿真所访问的主机指令的功能的原生指令执行例程)获得的一个 或多个指令来访问来自主机计算机存储器2中的程序的、用于执行的主机指令。可以通过 架构化的工具例程来仿真针对主机计算机系统50的架构而定义的其他工具,包括例如通 用寄存器、控制寄存器、动态地址转换和I/O子系统支持和处理器缓存的功能。仿真例程还 可使用仿真处理器27中可用的功能(例如通用寄存器和虚拟地址动态转换)以改进仿真 例程的性能。还可以提供专用硬件以及卸载引擎以帮助处理器27仿真主机计算机50的功 能。在大型机中,架构机器指令由程序员使用,通常现在“C”程序员经常利用编辑器应 用。存储在存储器介质中的这些指令可在z/ArchitecturelBM服务器中,或者可选择地, 在执行其他架构的机器中原生地执行。可在现有的和将来的IBM大型机服务器以及其他 IBM的机器(例如,pSeries 服务器和xSeries 服务器)中仿真它们。可使用由IBM 、 Intel 、AMD 、太阳微系统和其它制造的硬件在各种机器中运行Linux的的机器中执行它 们。除了在Z/Architecture⑧下执行该硬件,也可使用Linux以及使用由Hercules、UMX、 FSI (基础软件公司)或平台解决方案公司(PSI)提供的仿真的机器,其中一般而言,以仿真 模式来进行执行。在仿真模式中,仿真软件由原生处理器来执行以对仿真处理器的架构进 行仿真。原生处理器27典型地执行仿真软件23,包括固件或原生操作系统以执行仿真处 理器的仿真。仿真软件23负责提取以及执行仿真处理器架构的指令。仿真软件23维持仿 真程序计数器以跟踪指令边界。仿真软件23可以一次提取一个或多个仿真机器指令,并通 过原生处理器27将所述一个或多个仿真机器指令转换为用于执行的相应的原生机器指令 组。这些转换的指令可被缓存,从而可实现更快速的转换。然而,仿真软件必须维持仿真处 理器架构的架构规则,以便确保对于仿真处理器而写入的操作系统和应用正确操作。此外, 仿真软件必须提供由仿真处理器1架构识别的资源,该架构包括但不限于控制寄存器、通 用寄存器、浮点寄存器、动态地址转换功能(包括分段表格和页面表格)、例如中断机制、上 下文转换机器、时间日期(TOD)时钟和到I/O子系统的架构接口,从而指定运行在仿真处理 器上的操作系统或应用程序可以运行在具有仿真软件的原生处理器上。解码被仿真的特定指令,调用来执行各个指令的功能的子例程。在理解了优选 实施例的描述后本领域技术人员将理解,例如,在“C”子例程、或驱动器、或某些其他针对 特定硬件提供驱动器的方法中实现对于仿真处理器1的功能进行仿真的仿真软件功能 23。各种软件和硬件仿真专利包括但不限于Beausoleil等的题为“Multiprocessor for hardware emulation “的 US5551013 ;以及 Scalzi 等的题为"Preprocessing of stored target routinesfor emulating incompatible instructions on a target processor" 的US6009261 ;以及Davidian等的题为“Decoding guest instruction to directlyaccess emulation routines that emulate the guest instructions,, 的 US55574873 ; 以 及 Gorishek 等的题为"Symmetrical multiprocessing busand chipset used for coprocessor support allowing normative code to run ina system,,的 US6308255 ;以 及 Lethin 等白勺题为 “Dynamic optimizing ob jectcode translator for architectureemulation and dynantic optimizing objectcode translation method,,的US6463582 ;以 及 Eric Traut 白勺题为"Methodfor emulating guest instructions on a host computer through dynanticrecompilation of host instructions,,的 US5790825 以及许多其他专 利例示各种已知方法来实现对设计来用于对于本领域技术人员是可用的目标机器的不同 机器的指令格式的仿真,以及由上述人员使用的财务软件技术。

发明内容
现有技术提供了一种执行指令,当执行时,从存储器提取目标指令,并在进行下一 指令之前执行该目标指令。现有技术的执行指令要求使用寄存器去保持与所述目标指令关 联的地址,程序员不得不使用所述寄存器提供所述目标指令的地址。所述目标指令的地址 是指令地址而非数据地址。通过使用相对地址的本发明解决了这些或其他缺陷,以便在相 对于所述执行指令的程序计数器地址的正或负的位移处找到所述目标地址。在实施例中,通过程序中的执行机器指令的程序计数器来指定地址,所述执行机 器指令是针对计算机架构而定义的,其中所述执行机器指令包括操作码字段和第一寄存器 字段和有符号即时字段,所述有符号即时字段包括指定半字数量的有符号值。当执行所述 执行机器指令时,机器从一位置获得由所述程序计数器指定的地址,并将由所述程序计数 器指定的地址与所述有符号值算术相加,以确定目标指令的地址。在所确定的地址处提取 所述目标指令,所述目标指令包括目标指令比特8-15,所述目标指令包括一个半字、两个半 字或三个半字中的任一个。当提取并执行所述目标指令时,根据所述执行指令的大小来增 加所述程序计数器值,并在由增加的程序值指定的指令地址处继续执行程序。在实施例中,所述程序计数器包括第一数量比特的程序状态字(PSW)的程序计数 器值,其中所述有符号即时字段包括指定第二数量半字的有符号值,其中所述有符号即时 字段包括第二数量比特的比较相对指令;其中所述第二数量小于所述第一数量,其中所述 位置没有由所述比较相对指令明确标识。在实施例中,所述程序计数器包括第一数量比特的程序状态字(PSW)的程序计数器 值,其中所述有符号即时字段包括指定第二数量半字的有符号值,其中所述有符号即时字段包 括第二数量比特的所述比较相对指令;所述第二数量通过所述操作码指定,其中所述第一数量 为取决于当前寻址模式的24、31或64,其中所述位置没有由所述比较相对指令明确标识。在实施例中,响应于所述第一寄存器字段大于0,获得所述目标指令还包括获得与 所述第一寄存器字段关联的第一寄存器值的比特56至63,并执行所提取的目标指令的比 特8-15与所获得的比特56至63的逻辑或操作,以形成结果,其中要执行的所述目标指令 包括所述结果的值而非所提取的目标指令的比特8-15的值。在实施例中,即使当所述程序处于主要空间、次要空间或访问寄存器模式,也从主 要空间提取所述目标指令。本发明旨在提供与现有架构一致的新的指令功能,其解除了对诸如通用寄存器之 类的架构资源的依赖,改善了采用该新指令的软件版本的功能性和性能。


在总结说明书的权利要求中具体指出并清楚声明了本发明的主题。通过以下结合附图进行的详细描述可以显见本发明的前述和其他目的,特征和优势,图中图IA是示出现有技术的主机计算机系统的实例的图;图IB是示出现有技术的仿真主机计算机系统的实例的图;图IC是示出现有技术的计算机系统的实例的图;图2是示出现有技术的计算机网络的实例的图;图3是示出现有技术的计算机系统的元件的图;图4A-4C示出现有技术的计算机系统的元件;图5A-5F示出计算机系统的机器指令格式;图6示出本发明的实施例的指令格式;图7示出本发明的实施例的一个方面的流程;图8示出本发明的实施例的另外的方面的流程。
具体实施例方式在实施例中,本发明可以通过软件(有时称为许可的内部代码、固件、微码、毫码 (Milli-code)、微微码(Pico-code)等,任何一个将兼容本发明)来实施。参照图1A,实施 本发明的软件程序代码典型地由也称为系统50的CPU(中央处理单元)1的处理器从长时 存储介质(例如CD-ROM驱动器、盒带驱动器或硬盘驱动器)7来存取。软件程序代码可包 括在与数据处理系统一起使用的任何各种已知介质上,例如盒带、硬盘驱动器或CD-ROM。该 代码可以分布在这样的介质上,或从计算机存储器2或网络10上的一个计算机系统的存储 器分发给用户,到其他计算机系统以由这样的其他系统的用户使用。可替换地,程序代码可以包括在存储器2中,并由处理器1使用处理器总线来存 取。这样的程序代码包括控制各种计算机组件以及一个或多个应用程序的功能和交互的操 作系统。程序代码通常从密集存储介质11到高速存储器2进行分页,其中由处理器1处理 是可用的。用于将软件程序代码包括在存储器中或物理介质的技术和方法、和/或将软件 代码经由网络进行分发的技术和方法是已知的,将不在这里进一步讨论。程序代码当在可 见介质(包括但不限于电子存储器模块(RAM)、闪速存储器、压缩盘(00)、0¥0、磁带等)上 创建并存储时,通常称之为“计算机程序产品”。计算机程序产品介质典型地通过优选在计 算机系统中的处理电路可读以由该处理电路执行。图IC例示了在其中实现本发明的代表性工作站或服务器硬件系统。图IC的系统 100包括代表性的计算机系统101 (例如个人计算机、工作站或服务器),包括可选外围设 备。根据已知技术,工作站101包括一个或多个处理器106和采用来连接和支持处理器106 和系统101的其他组件之间的通信的总线。总线将处理器连接到存储器105和长时存储器 107,其例如可包括硬盘驱动器(例如包括磁介质、⑶、DVD和闪速存储器中的任何一个)或 盒带驱动器。系统101还可包括用户接口适配器,其经由总线将微处理器106连接至一个 或多个接口设备,例如键盘104、鼠标103、打印机/扫描仪110和/或其他接口设备,其可 以是任何接口设备,例如触摸屏、数字化输入板等。总线还将显示器设备102(例如LCD屏 幕或监视器)经由显示器适配器连接至微处理器106。系统101可通过能够与网络109通信的网络适配器与其他计算机或计算机的网络 通信。实例性网络适配器是通信信道,令牌环、以太网或调制解调器。可选择地,工作站101
7可使用无线接口(例如⑶PD(蜂窝数字分组数据))进行通信。工作站可与局域网(LAN) 或广域网(WAN)中的这样的其他计算机关联,或者工作站可以是与另外的计算机中的客户 /服务器配置中的客户等。所有这些配置以及适当的通信硬件和软件都是已知技术。图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 eServer zSerics z9 Server 来实施。实施本发明的软件编程代码典型地由系统101的处理器106从长时存储介质 107 (例如⑶-ROM驱动器或硬盘驱动器)存取。软件编程代码可包括在任何各种已知介质 (例如盘、硬盘驱动器或CD-ROM)上以与数据处理系统一起使用。代码可分布在这样的介质 上,或者可从网络上的一个计算机系统的存储器或存储设备分发给用户210、211,到其他计 算机系统以由这样的其他系统的用户使用。可选地,编程代码111可包括在存储器105中并由处理器106使用处理器总线存 取。这样的编程代码包括控制各种计算机组件以及一个或多个应用程序112的功能和交互 的操作系统。程序代码通常从密集存储介质107到高速存储器105进行分页,其中由处理 器1处理是可用的。用于将软件程序代码包括在存储器中或物理介质的技术和方法、和/ 或将软件代码经由网络进行分发的技术和方法是已知的,将不在这里进一步讨论。程序代 码当在可见介质(包括但不限于电子存储器模块(RAM)、闪速存储器、压缩盘(CD)、DVD、磁 带等)上创建并存储时,通常称之为“计算机程序产品”。计算机程序产品介质典型地通过 优选在计算机系统中的处理电路可读以由该处理电路执行。最容易由处理器(通常比处理器的其他缓存更快更小)获得的缓存是最低的缓存 (Li或级1),主存储器是最高级别的缓存(如果有3级则是L3)。最低级别的缓存通常划 分为保持要执行的机器指令的指令缓存(I-缓存)以及保持数据操作数的数据缓存(D-缓 存)。参照图3,对于处理器106描述了示例性处理器实施例。典型地,使用缓存303的 一个或多个级别来缓冲存储器块以便改进处理器性能。缓冲303是保持最可能使用的存储 器数据的缓存线路的高速缓冲器。典型的缓存线路是64、128或256字节的存储器数据。各 个缓存通常被使用来缓存指令而不是数据。通常通过本领域已知的各种“监听”算法来提供 缓存一致性(存储器和缓存中的线路的副本的同步)。处理器系统的主存储器105通常称 为缓存。在具有4级缓存303的处理器系统中,主存储器105有时称为第5级(L5)缓存, 既然通常其更快并仅保持计算机系统可用的非易失性存储器(DASD、盒带等)的一部分。主 存储器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或 从要执行的指令的即时字段(immediate field)将操作数提供给执行单元307。当存储执 行的结果时,可存储在存储器105、或寄存器309、或其他机器硬件(例如控制寄存器、PSW寄 存器等)中。处理器106典型地具有用于执行指令的功能的一个或多个执行单元307、308、 310。参照图4A,执行单元307可利用接口逻辑407与结构通用寄存器309、解码/派发单元 306、负载存储单元310和其它处理器单元401通信。执行单元307可使用若干寄存器电路 403,404,405以保持关于算术逻辑单元(ALU) 402将操作的信息。ALU执行诸如加、减、乘、 除以及逻辑函数(例如与、或、异或、旋转和移位)的算术操作。优选地,ALU支持设计相关 的专用操作。其他电路可提供其他结构功能408,例如包括条件码和恢复支持逻辑。典型 地ALU操作的结果保持在输出寄存器电路406中,其可将该结果转发至各种其他处理功能。 存在许多处理器单元的设置,本说明书仅旨在提供一个实施例的代表性理解。例如,ADD加指令将在具有算术和逻辑功能的执行单元307中执行,而浮点指令将 在具有专用浮点性能的例如浮点执行单元中执行。优选地,执行单元对由指令通过执行操 作数的操作码定义功能识别的操作数进行操作。例如,可以通过执行单元307对由指令的 寄存器字段识别的两个寄存器309中发现的操作数进行操作而执行ADD指令。执行单元307执行对于两个操作数的算术加法,并将结果存储在第三操作数中, 第三操作数可以是第三寄存器或两个源寄存器中的一个。执行单元优选地使用算术逻辑单 元(ALU)402,其能够执行各种逻辑功能(例如移位、旋转、与、或和异或)以及各种算术功能 (包括任意加、减、乘和除)。一些ALU 402被设计用于缩放操作,一些用于浮点。数据可取
9决于架构是大尾(其中在最高字节地址处是最低有效字节)或小尾(在最低字节地址处是 最高有效字节)。IBM z/Architecture是大尾。符号字段可以是符号和量级,1的补码或2 的补码取决于架构。既然2的补码中的负数值或正数值仅需要在ALU中进行加法,所以ALU 不需要设计减法性能,因此2的补码数是有利的,。数通常以速记来描述,其中12位字段定 义4096字节块的地址,并通常描述为例如4K字节(千字节)块。参照图4B,用于执行分支指令的分支指令信息通常发送到分支单元308,其经常 在其他条件操作完成之前使用分支预测算法(例如分支历史表432)来预测该分支的结果。 在条件操作完成之前将提取当前分支指令的目标并推测地执行。当条件操作完成时,推测 执行的分支指令基于条件操作的条件以及推测的结果或完成或丢弃。如果条件代码满足分 支指令的要求,则典型的分支指令可以检测条件代码和到目标地址的分支,可基于包括在 寄存器字段发现的数的一些数或例如该指令的即时字段来计算目标地址。分支单元308可 使用具有多个输入寄存器电路427、428、429和输出寄存器电路430的ALU 426。分支单元 308可与例如通用寄存器309、解码派发单元306或其他电路425进行通信。—组指令的执行可因为各种原因而中断,例如包括由操作系统发起的上下文切 换、导致上下文切换的程序异常或故障、导致上下文切换的I/O中断信号或多个程序(在 多线程环境下)的多线程活动。优选地上下文切换行为存储关于当前执行的程序的状态信 息,然后加载关于调用的其他程序的状态信息。状态信息可存储在例如硬件寄存器或存储 器中。状态信息优选地包括指向要执行的下一指令的程序计数器值、条件代码、存储器转换 信息和架构寄存器内容。上下文切换活动可通过硬件电路、应用程序、操作系统程序或固件 代码(微码、微微码或许可的内部代码(LIC))单独或组合来执行。处理器根据指令定义方法访问操作数。该指令可使用指令的一部分的值来提供即 时操作数,可提供明确指向通用寄存器或专用寄存器(例如浮点寄存器)的一个或多个寄 存器字段。该指令可使用由作为操作数的操作码字段识别的隐含寄存器。该指令可使用操 作数的存储器位置。如z/Architecture长位移功能所例示的那样,操作数的存储器位置可 由寄存器、即时字段、或寄存器和即时字段的组合来提供,其中指令定义基寄存器、索引寄 存器和即时字段(位移字段),他们被加到一起以提供例如存储器中的操作数的地址。如果 没有指定,则在此位置典型地意味着在主存储器(主存储设备)中的位置。参考图4C,处理器使用加载/存储单元310访问存储器。该加载/存储器单元310 可通过获得存储器303中的目标操作数的地址以及在寄存器309中或其他存储器303位置 中加载操作数来执行加载操作,或可通过获得存储器303中的目标操作数的地址以及将从 寄存器309或另外的存储器303位置中获得的数据存储在存储器303中的目标操作数位置 来执行存储操作。加载/存储单元310可以是推测的并可以相对于指令序列是无序的顺序 访问存储器,然而,加载/存储单元310必须对顺序执行的程序维持指令的显现。加载/存 储单元310可与通用寄存器309、解码/派发单元306、缓存/存储器接口 303或其他元件 455通信,并包括各种寄存器电路、ALU 458和控制逻辑463以计算存储地址并提供流水线 以保持有序操作。一些操作可以是无序的,但是加载/存储单元提供正如在本领域已知的 那样的使无序操作对于程序显现为有序执行。优选地,应用程序“看到”的地址经常称为虚拟地址。虚拟地址有时称为“逻辑地 址”或“有效地址”。这些虚拟地址是虚拟的,因为其通过各种动态地址转换(DAT) 312技术
10转换中的一个重定向到物理存储器位置,该技术包括但不限于仅使用偏移值对虚拟地址加 前缀、通过一个或多个转换表转换虚拟地址,该转换表优选地包括至少一个单独的段表和 页面表或其组合,优选地,段表具有指向该页面表的入口。在z/Architecure中,提供转换 的层级,其包括区域第一表格、区域第二表格、区域第三表格、段表和可选页面表。通常通过 使用转换后备缓冲器(TLB)来改进地址转换的性能,该TLB包括将虚拟地址映射至关联的 物理存储器位置的表项。当DAT 312使用转换表格转换虚拟地址时创建表项。于是之后使 用虚拟地址可使用快速TLB的表项而非慢顺序转换表格访问。可由包括LRU(近来最少使 用)的各种替代算法来管理TLB内容。在处理器是多处理器系统中的处理器的情况下,每个处理器负责为了一致性而保 持共享的资源(例如I/O、缓存、TLB和存储器)互锁。典型地,在维持缓存一致性中将使用 “监听”技术。在监听环境中,每个缓存线路可被标记为共享状态、专用状态、改变状态、无效 状态等中的任一状态以便于共享。I/O单元304向处理器提供附到外围设备(例如包括盒带、盘、打印机、显示器和网 络)的装置。I/O单元经常由软件驱动器提供给计算机程序。在诸如来自IBM的z/Series 的大型机中,信道适配器和开放系统适配器是提供操作系统和外围设备之间的通信的大型 机的I/O单元。如下来自z/Architectudre操作原理的以下描述说明了计算机系统的架构图存储器计算机系统包括主存储器中的信息,以及寻址、保护、引用和更改记录。一些寻址 的特征包括地址的格式,地址空间的概念,地址的各种类型,以及将地址的一种类型转换为 地址的另一类型的方式。一些主存储器包括固定分配的存储位置。主存储器给系统提供直 接可寻址的数据快速访问的系统。在处理数据和程序前都必须将它们加载(从输入设备) 到主存储器中。主存储器可包括一个或者多个更小、更快速访问的缓冲存储器,有时也称为缓存。 缓存典型地在物理上与CPU或者I/O处理器相关联。除了性能之外,物理结构的效果和不 同存储介质的使用对程序来说一般是不可观察的。可为指令和数据操作数保持分离的缓存。将缓存中的信息保持在被称为缓存块 或者缓存行(或简称为行)的整数边界上的连续字节中。一个模型可提供EXTRACT CACHE ATTRIBUTE指令,其返回字节的缓存行的大小。一个模型还可提供PREFETCH DATA和 PREFETCH DATARELATIVE LONG指令,其影响将存储器的预取到数据或者指令缓存中或者从 缓存中释放数据。存储器可视为长的水平的比特串。对于大部分操作,按照从左向右的顺序访问存 储器。将比特串再分为8个比特的单元。8个比特的单元称为字节,其中该字节是所有信息 格式的基本结构单元。存储器中每个比特的位置由唯一的非负整数来标识,其中该非负整 数为比特位置的地址或者,简单地说,比特地址。相邻比特位置具有连续的地址,在左侧从 0开始并按照从左向右的顺序进行处理。地址是无符号的二进制整数,为24、31或者64比 特。每次在存储器和CPU或者信道子系统之间传送一个比特、或者一组比特的信息。 除非特别规定,存储器中的一组比特是由该组最左侧的字节寻址。该组中字节的数量被执行的操作暗示或者明确的规定。当用于CPU操作中时,一组比特称为字段。在每一组比特 中,按照从左向右的顺序对比特进行编号。有时将最左侧的比特称为“高位”比特,将最右 侧比特称为“低位”比特。然而,比特数量不是存储器地址。只有字节能够被寻址。为了操 作存储器中字节的各比特,需要访问全部字节。从左到右,字节中的比特的编号从0到7。 对于24比特地址,地址中的比特可编号为8-31或者40-63,对于31比特地址,地址中的比 特可编号为1-31或者33-63 ;对于64比特地址它们编号为0_63。在多个字节的任意固定 长度格式中,构成格式的比特从0开始顺序编号。为了错误检测的目的,更优选地为了纠错 的目的,随同每个字节或者一组字节发送一个或者多个检测比特。这样的检测比特通过机 器自动产生并不能直接被程序控制。存储器容量用字节数量来表示。当存储器操作数字段 的长度由指令的操作码来暗示时,该字段具有固定长度,其可以是1、2、4、8或者16个字节。 较大的字段意味着一些指令。当存储器操作数字段的长度不是暗示的而是明确确定的,则 字段具有可变长度。可变长度操作符可通过一个字节的增加来改变长度。当信息放置在存 储器中时,即使到存储器的物理路径的宽度大于存储字段的长度,仅仅这些字节位置的内 容被替换为包括在指定字段中的内容。特定信息单元必须放置在存储器的整数边界上。当信息单元的存储地址是字节单 元的长度的倍数时,边界被称为信息单元的整数。在整数边界上给2、4、8和16字节的字段 特定的命名。半字是在两字节边界上两个连续字节的组,并且是指令的基本构成块。字是 四字节边界上四个连续字节的组。双字是在八字节边界上八个连续字节的组。四字是在16 字边界上16个连续字节的组。当存储器地址指定半字、字、双字和四字时,地址的二进制表 示分别包括一个、两个、三个或者四个最右侧的0比特。指令必须是两字节的整数边界。大 部分指令的存储器操作数不具有边界对齐要求。在执行用于指令和数据操作数的分离的缓存的模型中,如果将程序存储到随后从 中提取指令的缓存行中,无论所述存储是否改变随后提取的指令,可能会经历明显的延迟。指令典型地,CPU的操作被存储器中的指令控制,所述指令每次按照存储器地址上升的 顺序从左到右进行执行。顺序操作可由分支、加载PSW、中断、SIGNAL PROCESSOR(信号处理 器)命令或者人工干预而发生变化。优选地,指令包括两个主要部分·操作码(opcode),其指定要执行的操作·可选的,参与的操作数的指定。z/Architecture的指令格式如图5A-5F所示。指令可仅提供操作码501,或者提 供操作码和各种字段,后者包括用于对寄存器或者存储器中的操作数进行定位的即时操作 数或者寄存器区分符。操作码能够向硬件指示可使用的默认资源(操作数等),诸如一个或 者多个通用寄存器(GPR)。操作数可分为3类位于寄存器中的操作数,即时操作数,和存 储器中的操作数。操作数可明确或者暗示地指定。寄存器操作数可位于通用的、浮点的、访 问或控制寄存器中,其具有由操作码标识寄存器的类型。包括操作数的寄存器通过识别指 令中被称为R字段的4比特字段的寄存器来进行指定。对于一些指令,操作数位于默认指 定的寄存器中,寄存器由操作码来暗示。即时操作数包括在指令中,并且包括即时操作数的 8比特、16比特、32比特字段被称为I字段。存储器中的操作数可具有暗示的长度;可被比特掩码所指定;可被指令中被称为L字段的4比特或者8比特长度的说明所指定;或者具有 由通用寄存器的内容所指定的长度。存储器中操作数的地址由将通用寄存器的内容用作地 址的一部分的格式来指定。这样能够通过使用缩写的记号来指定完整的地址;通过使用指令来进行地址操作,其中所述指令使用用于操作数的通用寄存器;通过程序方式修改地址而不改变指令流;通过直接使用从其它程序接收的地址来独立于数据区域的位置进行操作。存储器所引用的地址可包括在由指令中的R字段指定的寄存器中,也可分别从指 令中的B、X和D字段指定的基本地址、索引和位移进行计算。当CPU为访问寄存器模式时, 除了用于指定地址,B字段或者R字段还可指定访问寄存器。为了描述指令的执行,优选地 将操作数指定为第一和第二操作数,并且在一些情况下包括第三和第四操作数。一般来说, 两个操作数参与指令执行,并且结果替换第一操作数。指令在长度上为1个、2个或者3个半字,并且必然位于半字边界上的存储器中。 参照图5A-5F所描述的指令格式,每个指令是25个基本格式中的一个E 501,I 502,RI 503 504,RIE 505 551 552 553 554,RIL 506507,RIS 555,RR 510,RRE 511,RRF 512 513 514,RRS, RS 516 517,RSI 520,RSL 521,RSY 522 523,RX 524,RXE 525,RXF 526,RXY 527,S 530, SI 531,SIL 556,SIY 532,SS 533 534 535 536 537,SSE 541 和 SSF 542,其 具有RRF的3个变型,RI,RIL, RS和RSY的2个变型,RIE和SS的5个变型。一般说来,格式名称指示了参与操作的操作数的分类以及字段的一些细节· RIS指示寄存器和即时操作以及存储器操作。· RRS指示寄存器和寄存器操作以及存储器操作。· SSL指示利用16比特的即时字段的存储器和即时操作。在I、RR、RS、RSI、RX、SI和SS格式中,指令的第一字节包括操作码。在E、RRE、 RRF、S、SIL和SSE格式中,指令的头两个字节包括操作码,除了在S格式的一些指令中,操作 码仅在第一字节中。在RI和RIL格式中,操作码在指令的第一字节和比特位置12-15中。 在1 记、1 13、1 、1 1^、1 ¥、1 、!》^、!》^和SIY格式中,操作码在指令的第一字节和第6字 节中。操作码的第一字节或者仅有字节的头两个比特指定指令的长度和格式,如下所述在RR、RRE、RRF、RRR、RX、RXE、RXF、RXY、RS、RSY、RSI、RI、RIE 和 RIL 格式中,由 Rl 字段指定的寄存器内容被称为第一操作数。有时将包括第一操作数的寄存器称为“第一操 作数位置”,有时称为“寄存器Rl ”。在RR、RRE, RRF和RRR格式中,R2字段指定包括第二操 作数的寄存器,并且R2字段可指定与Rl字段相同的寄存器。在RRF、RXF、RS、RSY、RSI和 RIE格式中,R3字段的使用依赖于指令。在RS和RSY格式中,R3字段替换为指定掩码的M3 字段。R字段指定通用指令中的通用寄存器或者访问寄存器,控制指令中的通用寄存器,以 及浮点指令中的浮点寄存器或者通用寄存器。对于通用寄存器和控制寄存器,根据指令,寄 存器操作数位于64比特寄存器的比特位置32-63或者占用全部寄存器。在I格式中,8比特即时数据字段的内容,指令的I字段直接用作操作数。在SI格 式中,8比特即时数据字段的内容,指令的12字段直接用作第二操作数。Bl和Dl字段指定 长度为1个字节的第一操作数。在SIY格式中,操作是相同的,除了使用DHl和DLl字段而 并非是Dl字段之外。在RI格式中对于指令ADD HALFffORD IMMEDIATE, COMPAREHALFffORD
13IMMEDIATE、LOAD HALFffORD IMMEDIATE、和 MULTIPLY HALFffORD IMMEDIATE,根据指令,指令 的16比特的12字段内容直接用作有符号的二进制整数,并且Rl字段指定长度为32或者 64比特的第一操作数。对于指令TEST UNDER MASK(TMHH, TMHL, TMLH, TMLL),将12字段的 内容用作掩码,并且Rl字段指定长度为64比特的第一操作符。对于指令INSERT IMMEDIATE, AND IMMEDIATE,ORIMMEDIATE,禾口 LOAD LOGICAL IMMEDIATE, 12字段的内容用作无符号的二进制整数或者逻辑值,并且Rl字段指定长度为 64比特的第一操作数。对于RI和RSI格式中的相对分支指令,16比特12字段的内容用作 指定半字数量的有符号的二进制整数。当增加到分支指令的地址中时,该数量指定分支地 址。对于RIL格式中的相对分支指令,12字段为32比特并以相同的方式使用。对于RI和RSI格式中的相对分支指令,16比特12字段的内容用作指定半字数量 的有符号的二进制整数。当增加到分支指令的地址中时,该数量指定分支地址。对于RIL格 式中的相对分支指令,12字段为32比特并以相同的方式使用。对于RIE格式指令COMPARE IMMEDIATE ANDBRANCH RELATIVE 禾口 COMPARE LOGICA IMMEDIATE ANDBRANCH RELATIVE, 8比特12字段的内容直接用作第二操作符。对于RIE格式指令COMPARE IMMEDIATE AND BRANCH,COMPAREIMMEDIATE AND TRAP,COMPARE LOGICAL IMMEDIATE ANDBRANCH,和 COMPARE LOGICAL IMMEDIATE AND TRAP,16比特12字段的内容直接用作第二操作数。对于RIE格 式指令 C0MPAREAND BRANCH RELATIVE, COMPARE IMMEDIATE AND BRANCHRELATIVE, COMPARE LOGICAL AND BRANCH RELATIVE,禾口 COMPARE LOGICAL IMMEDIATE AND BRANCH RELATIVE, 16比特14字段的内容直接用作指定半字数量的有符号的二进制整数,其中将多个半字增 加到指令的地址中以形成分支地址。对于RIL 格式指令 ADD IMMEDIATE, ADD LOG ICALIMMEDI ATE, ADD LOGICAL WITH SIGNED IMMEDIATE, COMPARE IMMEDAITE,COMPARE LOGICAL IMMEDIATE,LOADIMMEDIATE,和 MULTIPLY SINGLE IMMEDIATE, 32比特12字段的内容直接用作第二操作数。对于RIS格式指令,8比特12字段的内容直接用作第二操作数。在SIL格式中,16 比特12字段的内容直接用作第二操作数。如下所述,Bl和Dl字段指定第一操作数。在RSL、SI、SIL、SSE和大部分SS格式中,将由Bl字段指定的通用寄存器的内容增 加到Dl字段的内容以形成第一操作数地址。在RS、RSY、S、SIY和SSE格式中,将由B2字段 指定的通用寄存器的内容增加到D2字段或者DH2和DL2字段的内容以形成第二操作数地 址。在RX、RXE、RXF和RXY格式中,将由X2和B2字段指定的通用寄存器的内容增加到D2 字段或者DH2和DL2字段的内容以形成第二操作数地址。在RIS和RRS格式中,并在一个 SS格式中,将由B4字段指定的通用寄存器的内容增加到D4字段的内容以形成第四操作数 地址。在具有单一的,8比特长度字段的SS格式中,对于指令AND(NC),EXCLUSIVE OR(XC),MOVE (MVC),MOVE NUMRICS, M0VEZ0NES 和 OR(OC),L 指定到由第一操作数地址指定 的字节右侧的附加操作数字节的数量。因此,对应于L的0-255的长度代码,第一操作数的 字节长度为1-256。存储器结果替换第一操作数并且决不存储在由地址和长度指定的字段 外部。在该格式中,第二操作数与第一操作数具有相同的长度。前面定义的多个变量可应 用于 EDIT,EDIT AND MARK, PACKASCII, PACK UNICODE, TRANSLATE, TRANSLATE AND TEST, UNPACK ASCII,和 UNPACK UNICODE。
在具有两个长度字段的SS格式中,并在RSL格式中,Ll指定到由第一操作数地址 指定的字节右侧的附加操作数字节的数量。因此,对应于Ll的0-15的长度代码,第一操作 数的字节长度为1-16。相似地,L2指定到由第二操作数地址指定的位置右侧的附加操作数 字节的数量。结果替换第一操作数,并且决不存储在由地址和长度指定的字段外部。如果第 一操作数长于第二操作数,第二操作数在左侧延伸并用0补齐到第一操作数的长度。该延 伸不修改存储器中的第二操作数。在MOVE TO PRIMARY,MOVE TO SECONDARY,禾口 MOVE WITH KEY指令使用的具有两个R字段的SS格式中,由Rl字段指定的通用寄存器的内容是被称为 真实长度的32比特无符号的值。操作数均具有被称为有效长度的长度。有效长度等于真 实长度或者256,以较小者为准。指令设置条件代码以便于程序设计循环以移动由真实长度 所指定的字节的全部数量。具有两个R字段的SS格式还可用于指定寄存器的范围和用于 LOAD MULTIPLE DISJOINT指令的两个存储器操作数,还用于指定一个或者两个寄存器和用 于PERFORM LOCKED OPERATION指令的一个或者两个存储器操作数。任何一个Bi,B2, Xl或者B4字段中的0指示缺少相应的地址成分,对于缺少的成 分,0用于通知中间的总和,而不考虑通用寄存器0的内容。0的替换不具有特别的意义。当前PSW的比特31和32是寻址模式比特。比特31是扩展寻址模式比特,比特32 是基本寻址模式比特。这些比特控制由地址产生的有效地址的大小。在当前PSW的比特31 和32都为0时,CPU处于24比特寻址模式,并且产生24比特指令和操作数有效地址。在 当前PSW的比特31为0并且比特32为1时,CPU为31比特寻址模式,并产生31比特指令 和操作数有效地址。在当前PSW的比特31和32都是1时,CPU为64比特寻址模式,并产 生64比特指令和操作数有效地址。由CPU执行的指令包括指令和操作数的地址的产生。当从由当前PSW指定的位置中提取指令时,使得指令地址增加指令中字节的数 量,并执行指令。然后,通过使用指令地址的新值重复相同的步骤以提取序列中的下一指 令。在24比特寻址模式中,指令地址回绕,其中在指令地址224-2的半字被指令地址0的半 字所跟随。因此,在24比特寻址模式中,作为更新指令地址的结果,PSW比特位置104的任 何执行都会丢失。在31比特和64比特寻址模式中,指令地址相似地回绕,其中在指令地址 231-2或者264-2的半字分别被指令地址0的半字所跟随。PSW比特位置97或者64的执行 会丢失。从中间值导出引用存储器的操作数地址,其中中间值包括在由指令中的R字段指 定的寄存器中,也可由三个二进制数(基础地址,索引和位移)的总和进行计算。基础地址 (B)是包括在由指令中被称为B字段的四比特字段中的程序所指定的通用寄存器的64比特 数。基础地址可用作独立地给每个程序和数据区寻址的方式。在阵列类型的计算中,可指 定阵列的位置,并在记录类型的处理中,其可识别记录。基础地址为整个存储器提供寻址。 基础地址还可用作索引。索引⑴是包括在由指令中被称为X字段的4比特字段中的程序所指定的通用寄 存器的64比特数。其仅包括在由RX-,RXE-,和RXY-格式指令指定的地址中。RX-,RXE-, RXF-和RXY-格式指令允许双索引也就是说,索引可用于在阵列中提供元素的地址。位移(D)是包括在指令中被称为D字段的字段中的12比特或者20比特数。12比 特位移是无符号的,并提供多达4,095字节的相对寻址,超出了由基础地址指定的位置。20 比特的位移是有符号的,并提供超出了基础地址位置的多达524,287字节的相对寻址,或者提供在此之前的524,288字节。在阵列类型的计算中,位移可用于指定与元素相关的多 个条目的一个。在处理记录中,位移可用于标识记录中的条目。12比特位移在特定格式的 指令的比特位置20-31中。在一些格式的指令中,第二个12比特位移也在该指令的比特位 置36-47中。20比特位移仅位于RSY,RXY或者SIY格式的指令中。在这些指令中,D字段包括 比特位置20-31中的DL(低)字段和比特位置32-39中的DH(高)字段。当安装长位移工 具时,通过将DH字段添加到DL字段内容的左侧来形成位移的数值。当没有安装长位移工 具时通过将8个0比特添加到DL字段内容的左侧来形成位移的数值,并忽略DH字段的内容。在形成中间总和的过程中,将基础地址和索引看作为64比特的二进制整数。将12 比特位移看作为12比特无符号的二进制整数,并将52个0添加在左侧。将20比特位移看 作为20比特有符号的二进制整数,并且在左侧添加等于有符号的比特的44比特。这三个 相加为64比特的二进制数,并忽略溢出。该和总是64比特长,并用作中间值以形成所产生 的地址。中间值的比特编号为0-63。在任何Bi,B2, X2或者B4字段中的0指示相应地址 元素的缺失。对于缺失的元素,使用0来形成中间和,而不考虑通用寄存器0的内容。0的 位移没有特别的意义。当指令说明指定由R字段所指定的通用寄存器的内容为存储器中的操作数进行 寻址时,寄存器内容用作64比特中间值。指令能同时将同一个通用寄存器指定用于地址计算,并作为操作数的位置。地址 计算在寄存器被操作而改变(如果存在)之前完成。除非在各自指令定义中有其它指示, 通用操作数地址指示存储器中操作数最左侧的字节。所产生的操作数地址通常是64比特长,比特编号为0-63。所产生地址从中间值 获取的方式取决于当前的寻址模式。在24比特寻址模式中,中间值的比特0-39被忽略,强 制将所产生地址的比特0-39设为0,中间值的比特40-63变成所产生地址的比特40-63。 在31比特寻址模式中,中间值的比特0-32被忽略,强制将所产生地址的比特0-32设为0, 中间值的比特33-63变成所产生地址的比特33-63。在64比特寻址模式中,中间值的比特 0-63变成所产生地址的比特0-63。负值可用在索引和基础地址寄存器中。在31比特寻址 模式中这些值的比特0-32被忽略,在24比特寻址模式中比特0-39被忽略。对于分支指令,在使用分支时要被执行的下一个指令的地址被称为分支地址。根 据分支指令,指令格式可以是RR, RRE, RX, RXY,RS, RSY,RSI, RI, RIE,或者RIL0在RS, RSY, RX和RXY格式中,分支地址被基础地址、位移所指定,在RX和RXY格式中,分支地址被索引 所指定。在这些格式中,中间值的产生与操作数地址中间值的产生使用相同的规则。在RR 和RRE格式中,由R2字段指定的通用寄存器的内容用作从中形成分支地址的中间值。通用 寄存器0不能被指定为包括分支地址。R2字段中的值0促使指令不分支的执行。相对分支指令在RSI,RI, RIE和RIL格式中。在用于相对分支指令的RSI,RI和 RIE格式中,将12字段的内容看作为指定半字数量的16比特的有符号的二进制整数。在 RIL格式中,将12字段的内容看作为指定半字数量的32比特的有符号的二进制整数。分支 地址是由增加到相对分支指令地址的12字段指定的半字的数量。在RSI,RI, RIE,或者RIL格式中用于相对分支指令的64比特中间值是两个加数
16的和,并忽略比特位置0的溢出。在RSI,RI或者RIE格式中,第一加数是12字段的内容, 其具有附加到右侧的一个0比特,和等于附加在左侧的内容的符号比特的47比特,除了 用于 COMPARE ANDBRANCH RELATIVE, COMPARE IMMEDIATE AND BRANCHRELATIVE, COMPARE LOGICAL AND BRANCH RELATIVE 和 COMPARE LOGICAL IMMEDIATE AND BRANCH RELATIVE 之 外,第一加数是14字段的内容,其具有上面描述的添加到12字段中的比特。在RIL格式 中,第一加数是12字段的内容,其具有附加在右侧的一个0比特,以及等于附加在左侧的 内容的符号比特的31比特。在所有格式中,第二加数是分支指令的64比特地址。在将更 新分支指令的地址以寻址下一连续指令之前,该地址是PSW中的指令地址,或者如果使用 EXE⑶TE,则它是EXE⑶TE指令的目标的地址。如果在24比特或者34比特寻址模式中使用 EXE⑶TE,分支指令的地址是分别具有40或者33个0,并添加在左侧。分支地址通常是64比特长,其中比特编号为0-63。分支地址替换当前PSW的比特 64-127。从中间值获得分支地址的方式取决于寻址模式。对于那些改变寻址模式的分支指 令,使用新的寻址模式。在24比特寻址模式中,忽略中间值的比特0-39,将分支地址的比特 0-39设为0,将中间值的比特40-63变成分支地址的比特40-63。在31比特寻址模式中,忽 略中间值的比特0-32,将分支地址的比特0-32设为0,将中间值的比特33-63变成分支地 址的比特33-63。在64比特寻址模式中,中间值的比特0-63变成分支地址的比特0_63。对于几个分支指令,分支取决于满足指定的条件。当条件不满足时,不采用分支, 继续执行正常的连续指令,并不使用分支地址。当采用分支时,分支地址的比特0-63替换 当前PSW的比特64-127。分支地址不用于作为分支操作部分访问存储器。虽然奇数的分支 地址的说明异常和由于提取分支位置处的指令的访问异常不被视为分支操作的一部分,但 是可将其视为与执行分支位置处指令相关的异常。诸如BRANCH AND SAVE的分支指令能够指定用于分支地址计算的相同的通用寄存 器并作为操作数的位置。在执行剩余的操作之前完成分支地址的计算。在第4章“控制”中描述的程序状态字(PSW)包括请求正确的程序执行的信息。 PSW用于控制指令顺序,并用于保持和指示CPU与当前被执行程序相关的状态。激活的或者 控制PSW被称为当前PSW。分支指令执行进行确定、循环控制和子程序链接的功能。分支指 令通过将新的指令地址引入到当前的PSW中以影响指令顺序。16比特12字段的相对分支 指令允许分支到与分支指令的位置相关的偏移量最大为正64K-2字节或者负64K字节的位 置,而不使用基础寄存器。32比特12字段的相对分支指令允许分支到与分支指令的位置相 关的偏移量最大为正4G-2字节或者负4G字节的位置,而不使用基础寄存器。用于进行确定的工具由BRANCH ON CONDITION, BRANCHRELATIVE ON CONDITION, 和BRANCH RELATIVE 0NC0NDITI0N LONG指令提供。这些指令检测反映主要算法,逻辑和I/ 0操作结果的条件码。包括两个比特的条件码提供4个可能的条件码设置0,1,2和3。任意设置的特定含义取决于设置条件码的操作。例如,条件码反映诸如0,非0,第 一操作数高,相同,溢出和子信道忙的条件。一旦设置,条件码保持不变,直到由指令进行修 改以导致设置另一条件码。循环控制可通过使用BRANCH ON CONDITION, BRANCHRELATIVE ON CONDITION,和 BRANCH RELATIVE 0NC0NDITI0N LONG来执行,以测试地址算术和计数操作的输出。对于算 术和测试的一些特别频繁的组合,提供BRANCH ON COUNT,BRANCH0N INDEX HIGH,和BRANCHON INDEX LOW OR EQUAL,并提供这些指令的相关分支等同物。这些专门的分支为这些工作 提供了增强的性能。BRANCH AND LINK和BRANCH AND SAVE指令提供当不需要改变寻址模式时的子程 序链接。(BRANCH AND SAVE 的讨论也适于 BRANCH RELATIVE AND SAVE 禾口 BRANCH RELATIVE AND SAVELONG。)这些指令不仅允许引入新指令地址,而且保留返回地址和相应信息。返 回地址是跟随存储器中分支指令的指令地址,除了它是跟随将分支指令作为其目的的 EXE⑶TE指令的指令地址。BRANCH AND LINK和BRANCH AND SAVE均具有Rl字段。他们利用依赖于指令的字 段形成分支地址。该指令的操作总结如下 在24比特寻址模式中,这两种指令将返回地 址放置在通用寄存器Rl的40-63比特位置中,并保持该寄存器的比特0-31不变。BRANCH AND LINK从当前PSW将用于指令的指令长度代码以及条件代码和程序掩码放置在通用寄 存器Rl的比特位置32-39中,BRANCH AND SAVE在这些比特位置中放入0。 在31比特寻址模式中,这两种指令均将返回地址放入通用寄存器Rl的比特位置 33-63以及一个比特位置32中,他们保持该寄存器的比特0-31不变。 在64比特寻址模式中,这两种指令均将返回地址放入通用寄存器Rl的比特位置 0-63 中。 在任何寻址模式中,这两种指令在当前寻址模式的控制下均生成分支地址。指令 将分支地址的比特0-63放入PSW的比特位置64-127中。在RR格式中,如果指令的R2字 段为0,则这两种指令均不执行分支操作。可以看出,在24比特或31比特寻址模式中,BRANCH AND SAVE将基本寻址模式比 特、PSW的比特32放入通用寄存器Rl的比特位置32中。BRANCH AND LINK在31比特寻址 模式中也这样操作。指令BRANCH AND SAVE AND SET MODE以及BRANCH AND SET MODE用于 当在链接期间需要寻址模式的改变时。这些指令具有Rl和R2字段。这些操作总结如下· BRANCH AND SAVE AND SET MODE 将通用寄存器 Rl 的内容与 BRANCH AND SAVE 设置的相同。此外,指令将扩展的寻址模式比特、PSff的比特31放入该寄存器的比特位置 63中。 如果Rl非零,则BRANCH AND SET MODE执行如下。在24比特或31比特模式中, 其将PSW的比特32放入通用寄存器Rl的比特位置32中,并保持该寄存器的比特0_31和 33-63不变。注意到,如果该寄存器包含指令地址,则该寄存器的比特63应该为0。在64 比特模式中,指令将PSW的比特31 (1)放入通用寄存器Rl的比特位置63中,并保持该寄存 器的比特0-62不变。 当R2非零时,这两种指令设置寻址模式并如下执行分支操作。通用寄存器R2的 比特63放入PSW的比特位置31中。如果比特63为0,则该寄存器的比特32放入PSW的比 特位置32中。如果比特63为1,则PSW的比特32设置为1。于是在新的寻址模式的控制 下,根据该寄存器的内容生成分支地址,除了该寄存器的比特63看作为0。指令将分支地址 的比特0-63放入PSW的比特位置64-127中。通用寄存器R2的比特63仍保持不变,因此 在进入所调用的程序中可以为1。如果R2与Rl相同,则在指定的通用寄存器中的结果正如 Rl寄存器所指示的那样。中断(上下文切换)
18
中断机制允许CPU作为配置之外的、配置中的或在CPU自身中的条件的结果改变 其状态。为了允许快速响应高优先权的条件和该类型的条件的即时识别,将中断条件分为 6组外部、输入/输入、机器核查、程序、重启以及监视呼叫。中断包括将提取PSW存储为旧的PSW、存储识别中断原因的信息、以及提取新的 PSW。如新的PSW所指示的那样来恢复处理。存储在中断中的旧的PSW通常包括如果不发 生中断接下来执行的指令的地址,因此允许恢复中断的程序。对于程序和监视呼叫中断,存 储的信息还包括识别最后执行的指令的长度的代码,因此允许程序响应中断的原因。在用 于正常响应是重新执行导致中断的指令的一些程序条件的情况中,指令地址直接识别最后 执行的指令。除了重启,仅当CPU在操作状态下可以发生中断。重启中断可通过在停止状态或 操作状态中的CPU —起发生。作为执行与异常关联的指令的部分来识别访问异常。当CPU尝试从不可用位置预 提取或检测一些其他访问异常条件时,没有识别出访问异常,但是分支指令或中断改变指 令顺序,以便不执行该指令。因为指令提取,每个指令可导致将被识别的访问异常。此外, 因为访问存储器中的操作数,可发生与指令执行关联的访问异常。当没有遭遇异常而不能 提取第一指令半字时指示由于提取指令而造成的访问异常。当指令的第一半字没有访问异 常时,可以根据由指令的头两比特指定的指令长度来指示对于另外半字的访问异常;然而, 当没有访问指令的第二或第三半字就可执行操作时,对未使用的部分是否指示访问异常是 不可预测的。既然对于指令提取的访问异常的指示对所有指令都是公共的,在单个指令定 义中就不包含它。除了在指令描述中指示相反的情况,下述的规则应用于与访问操作数位置关联的 异常。对于提取类型的操作数,仅对于需要来完成操作的操作数的部分必须指示访问异常。 对于不需要来完成操作的提取型操作数的那些部分是否指示访问异常是不可预测的。对于存储型操作数,即使能够完成操作而没有使用操作数的不可用部分,也对于 整个操作数识别访问异常。在存储型操作数的值定义为不可预测的情况中,是否指示访问 异常是不可预测的。每当访问操作数位置可导致访问异常被识别时,词“访问”都包括在指 令说明中的程序异常的列表中。该表项还指示哪个操作数可导致要识别的异常以及关于提 取或存储访问该操作数位置的异常是否被识别。仅对于为每个特定指令定义的操作数的部 分识别访问异常。当CPU尝试使用无效操作码来执行指令时,识别操作异常。该操作码可以是无符 号的,或具有该操作码的指令可以不安装在该CPU上。禁止该操作。指令长度码是1、2或 3。由程序中断代码OOOlhex (十六进制)来指示操作异常(如果指示同时发生的PER事件 则为 0081hex)。一些模型可提供在该公开中没有描述的指令,例如被提供来帮助,或作为特定或 共同特性的一部分的指令。因此,在该公开中没有描述的操作码不一定导致操作异常被识 别。此外,这些指令可以导致将建立的操作模式,或可以改变机器以便影响随后指令的执 行。为了避免导致这样的操作,仅当与操作码关联的特定功能是期望的时,才应该执行具有 在该公开中没有描述的操作码的指令。当以下为真时识别说明异常
1.将1引入PSW的无符号比特位置(即,比特位置0、2-4、24_30或33-63中的任 一个)。这作为早期PSW说明异常来处理。2.将1引入PSW的比特位置12。这作为早期PSW说明异常来处理。3.处于下述任何方式的PSW是无效的a.PSW的比特31是1而比特32是0。b.PSW 的比特31和32是0,用于指示24比特寻址模式,而PSW的比特64-103不全为0。c. PSff的 比特31是0而比特32是1,用于指示31比特寻址模式,而PSW的比特64-96不全为0。这 作为早期PSW说明异常来处理。4. PSff包括奇数指令地址。5.在需要整数边界的指定的指令中操作数地址没有指定这样的整数边界。6.由需要偶数编号的寄存器指示的指令的R字段来指定奇数编号的通用寄存器。7.对于扩展的操作数指定除了 0、1、4、5、8、9、12或13的浮点寄存器。8.十进制算术的乘数或除数超过15个数位和符号。9.在十进制乘法或除法中,第一操作数字段的长度小于或等于第二操作数字段的 长度。10.尝试执行 CIPHER MESSAGE、CIPHER MESSAGE WITHCHAINING、COMPUTE INTERMEDIATE MESSAGE DIGEST、 COMPUTE LAST MESSAGE DIGEST 或 COMPUTE MESSAGEAUTHENTICATION CODE,并且通用寄存器0的比特57-63中的功能代码包括未分配 的或未安装的功能代码。11.尝试执行 CIPHER MESSAGE 或 CIPHER MESSAGE WITHCHAINING, Rl 或 R2 字段
指定奇数编号的寄存器或通用寄存器0。12.尝试执行 CIPHER MESSAGE、CIPHER MESSAGE WITHCHAINING, COMPUTE INTERMEDIATE MESSAGE DIGEST或COMPUTE MESSAGE AUTHENTICATION CODE,第二操作数长 度不是指定的功能的数据块大小的倍数。这种说明异常条件不应用于查询功能。13.尝试执行COMPARE AND FORM CODEWORD,以及通用寄存器1、2和3最开始不包 括偶数值。32.尝试执行COMPARE AND SWAP AND STORE,以及存在以下条件中的任一个·功能代码指定未分配值。·存储特性指定未分配值。·功能代码是0,在字边界上不指定第一操作数。·功能代码是1,在双字边界上不指定第一操作数。·在与存储值的大小对应的整数边界上不指定第二操作数。33.尝试执行 COMPARE LOGICAL LONG UNICODE 或 M0VEL0NG UNICODE,以及通用寄 存器R1+1或R3+1的内容没有指定偶数字节。34.尝试执行 COMPARE LOGICAL STRING、MOVE STRING 或 SEARCH STRING,通用寄 存器0的比特32-55不全是0。35.尝试执行COMPRESSION CALL,通用寄存器0的比特48-51具有二进制值0000 以及0110-1111中的任一个。36.尝试执行 COMPUTE INTERMEDIATE MESSAGE DIGEST, COMPUTE LAST MESSAGE DIGEST 或 COMPUTE MESSAGEAUTHENTICATION CODE,以下中的任一个为真
· R2字段指定奇数编号的寄存器或通用寄存器0。·通用寄存器0的比特56不是0。37.尝试执行 CONVERT HFP TO BFP、CONVERT TO FIXED (BFP 或 HFP)或 LOAD FP LNTEGER (HFP),M3字段不指定有效修改器。38.尝试执行DIVIDE TO INTEGER,M4字段不指定有效修改器。39.尝试执行EXE⑶TE,以及目标地址为奇数。40.尝试执行 EXTRACT STACKED STATE,当 ASN-and-LX-reuse 工具没有安装时,通 用寄存器R2的比特位置56-63中的代码大于4,以及当安装了该功能时该代码大于5。41.尝试执行FIND LEFTMOST ONE,以及Rl字段指定奇数编号的寄存器。42.尝试执行INVALIDATE DAT TABLE ENTRY,通用寄存器R2的比特44-51不全为 O043.尝试执行LOAD FPC,与在FPC寄存器中的未支持的比特相应的第二操作数中 的一个或多个比特为1。44.尝试执行LOAD PAGE-TABLE-ENTRY ADDRESS,指令的M4字段包含非二进制 0000-0100的任何值。45.尝试执行LOAD PSW,在第二操作数地址处的双字的比特12为0。是否识别该 异常取决于模型。46.尝试执行MONITOR CALL,指令的比特位置8_11不包含0。47.尝试执行MOVE PAGE,通用寄存器0的比特位置48_51不包含0或者该寄存器 的比特52和53全为1。48.尝试执行PACK ASCII, L2字段大于31。49.尝试执行PACK UNICODE, L2字段大于63或者是偶数。50.尝试执行 PERFORM FLOATING POINT OPERATION,通用寄存器 0 的比特 32 为 0, 以及比特33-63中的一个或多个字段是无效的或指定未安装的功能。51.尝试执行PERFORM LOCKED OPERATION,以下任何一个为真 通用寄存器0 的T比特、比特55为0,以及该寄存器的比特56-63中的功能代码是无效的。·通用寄存器 0的比特32-54不全为0。·在访问寄存器模式中,对于导致包含ALET的参数列表的使用的 功能代码,R3字段为0。52.尝试执行 PERFORM TIMING FACILITY FUNCTION,以下中的任一为真 通用 寄存器0的比特56不为0。·通用寄存器0的比特57-63指定未分配的或未安装的功能代码。53.尝试执行 PROGRAM TRANSFER 或 I3ROGRAM TRANSFERffITH INSTANCE,以下所有 均为真 在PSW中的扩展的寻址模式比特为0。·由指令的R2字段指示的通用寄存器中 的基本寻址模式比特、比特32为0。·在相同寄存器中的指令地址的比特33-39不全为0。54.尝试执行RESUME PROGRAM,以下中的任一个为真 在第二操作数中的PSW 的比特31、32和64-127对于当前PSW中的放置是无效的。如果以下任何为真,则识别异 常_比特31和32均为0,以及比特64-103不全为0。-比特31和32分别为0和1,以及 比特64-96不全为0。-比特31和32分别为0禾口 1。-比特127 为 1。
21
·参数列表的比特0-12不全为0。55.尝试执行SEARCH STRING UNICODE,通用寄存器的比特32-47不全为0。56.尝试执行 SET ADDRESS SPACE CONTROL 或 SETADDRESS SPACE CONTROL FAST, 第二操作数地址的比特52和53不全为0。57.尝试执行SET ADDRESSING MODE (SAM 24),PSW中的未更新的指令地址的比特 0-39、PSW的比特64-103不全为0。58.尝试执行SET ADDRESSING MODE (SAM 31),PSW中的未更新的指令地址的比特 0-32、PSW的比特64-96不全为0。59.尝试执行SET CLOCK PR0GRAMABLE FIELD,通用寄存器0的比特32-47不全为 O060.尝试执行SET FPC,与FPC寄存器中的未支持比特相应的第一操作数的一个或 多个比特为1。61.尝试执行STORE SYSTEM INFORMATION,通用寄存器0中的功能代码是有效的, 以下中的任一个为真·通用寄存器0的比特36-55和通用寄存器1的比特32-47不全为 0。·第二操作数地址不对齐4K字节边界。62.尝试执行 TRANSLATE TWO TO ONE 或 TRANSLATE TffOTO TWO,以及通用寄存器 R1+1中的长度不指定偶数个字节。63.尝试执行 UNPACK ASCII, Ll 字段大于 31。64.尝试执行UNPACK UNICODE, Ll字段大于63或为偶数。65.尝试执行UPDATE TREE,以及通用寄存器4和5最初的内容在24比特或31比 特寻址模式中不是8的倍数,或者在64比特寻址模式中不是16的倍数。禁止执行由旧的 PSW标识的指令。然而,对于早期PSW说明异常(原因1-3),完成引入新的PSW的操作,但是 此后立即发生中断。优选地,指令长度代码(ILC)为1、2或3,其用于指示导致异常的指令 的长度。当指令地址为奇数(在页面6-33上的原因4)时,ILC是否为1、2或3是不可预测 的。当识别异常时,因为早期PSW说明异常(原因1-3)识别异常以及通过LOAD PSff,LOAD PSff EXTENDED, PROGRAM RETURN 或中断引入异常时,ILC 为 0。当异常通过 SETADDRESSING M0DE(SAM24、SAM31)引入时,ILC 为 1,或如果 SETADDRESSING MODE 是 EXECUTE 的目标,则 其为2。当异常通过SETSYSTEM MASK或通过STORE THEN OR SYSTEM MASK引入时,ILC为 2。使用程序中断来报告在程序执行期间出现的异常和事件。程序中断导致在实际位 置336-351存储旧的PSW,并从实际位置464-479提取新的PSW。通过中断代码来标识中断 原因。中断代码放置在实际位置142-143,指令长度代码放置在实际位置141的比特位置 5和6中,其他比特设置为0,0存储在实际位置140。基于同样的原因,标识中断的原因的 附加信息存储在实际位置144-183。如果安装了 PER-3工具,则作为程序中断行为的一部 分,打断_事件_地址寄存器放置在实际存储器位置272-279。除了 PER事件和crypto-操 作异常,由放置在中断代码的最右7比特位置的代码值指示了导致中断的条件。每次只指 示一个条件。将中断代码的比特0-7设置为0。通过将中断代码的比特8设置为1来指示 PER事件。当这是唯一的条件时,将比特0-7和比特9-15也设置为0。当使用另外的程序 中断条件同时指示PER事件时,比特8为1,比特0-7和9-15被设置来用于其它条件。通过0119hex的中断代码或在还指示PER事件时为0199hex来指示crypto-操作异常。当存在相应的掩码比特时,程序中断仅在该掩码比特为1时出现。PSW中的程序掩 码控制4种异常,FPC寄存器中的IEEE掩码控制IEEE异常,控制寄存器0中的比特33控 制SET SYSTEM MASK是否导致特定操作异常,控制寄存器8中的比特48-63控制由于监控 事件的中断,掩码层级控制由于PER事件的中断。当任意控制掩码比特为0时,则忽视该条 件,该条件不能继续为未决状态。当用于程序中断的新的PSW具有PSW格式错误并导致异常在指令提取过程中被识 别,可发生一串程序中断。指示为程序异常的一些条件还可由信道子系统来识别,在这种情况下在子信道状 态字或扩展状态字中指示该异常。当数据异常导致程序中断,在位置147存储数据异常代码(DXC),在位置144-146 存储0。DXC识别各种类型的数据异常条件。当AFP寄存器(加法浮点寄存器)控制比特 (控制寄存器0的比特45)为1时,DXC还放置在浮点控制(FPC)寄存器的DXC字段中。当 报告任何其他程序异常时,FPC寄存器中的DXC字段保持不变。DXC为指示数据异常的特定 原因的8比特代码。DXC 2和3相互是专用的,具有比其他任何DXC高的优先级。因此,例如DXC 2 (BFP 指令)优先于任何IEEE异常;以及DXC 3 (DFP指令)优先于任何IEEE异常或模拟的IEEE 异常。作为另外的实例,如果存在用于DXC 3 (DFP指令)和DXC 1 (AFP寄存器)的条件,则 报告DXC 3。当规格异常和AFP寄存器数据异常均应用时,不能预测报告哪个。当CPU尝试引用在配置中不可用的主存储器位置时,识别出寻址异常。当该位置 未安装时,当存储单元未在配置中时,或者当存储单元中关电时,主存储器位置在配置中不 可用。指定在配置中不可用的存储器位置的地址称为无效的。当指令地址是无效的时,操 作被禁止。类似的,当EXECUTE的目标指令的地址是无效的时,该操作也被禁止。当在访 问表格或表项中遭遇寻址异常时,操作单元也被禁止。该规则应用的表格和表项是可派发 单元控制表格、基本ASN第二表项、访问列表中的项目、区域第一表格、区域第二表格、区 域第三表格、段表格、页面表格、链接表格、链接第一表格、链接第二表格、入口表格、ASN第 一表格、ASN第二表格、授权表格、链接堆栈以及跟踪表格。当寻址异常遇到到区域第一表 格、区域第二表格、区域第三表格、段表格、页面表格的引用时,在暗含的动态地址转换的引 用以及与 LOAD PAGE-TABLE-ENTRY ADDRESS、LOADREAL ADDRESS、STORE REAL ADDRESS、以 及TEST PROTECTION的异常关联的引用中,寻址异常造成禁止。类似的,当暗含地或作为 LOADPAGE-TABLE-ENTRY ADDRESS、LOAD REAL ADDRESS、ST0REREAL ADDRESS、TEST ACCESS、 或TEST PROTECTION的一部分在访问寄存器转换中遇到访问派发单元控制表格、基本ASN 第二表项、访问列表、ASN第二表格或授权表格的寻址异常时,所述寻址异常造成禁止。除了 执行被禁止的一些特定指令,终止对于可被转换但指示不可用位置的操作数地址的操作。 对于终止,仅对于结果字段发生改变。在这种情境中,术语“结果字段”包括条件代码、寄存 器和提供的并由指令指定改变的任何存储器位置。执行相对长(EXECUTERELATIVE LONG)具有708图7的操作码、指定寄存器(Rl)的寄存器字段以及即时字段(12)的 图6的执行相对长指令提供了这样的能力执行从相对于在执行的执行相对长指令的地址(PSff的程序计数器值)的存储器位置获得的单个目标指令。图7中,当从执行指令的处理器的程序计数器所指定的地址提取701执行相对指 令并执行时,从优选地通过将指令的符号扩展的有符号即时值(12)与当前程序计数器值 代数地相加而确定702的目标地址中获得703目标指令。当寄存器字段(Rl)不是“0”704 时,通过由指令的Rl字段指定的通用寄存器的比特56-63修改705在第二操作数地址的 单个目标指令的副本的比特8-15,执行706生成的指令(称为目标指令)。当寄存器字段 (Rl)是“0”704时,无需修改而执行706单个目标指令的副本。在执行单个目标指令后,当前程序计数器增加执行相对长指令的大小,并且提取 该执行相对长指令之后的下一顺序指令并执行(如果执行的指令不是分支,或者不存在中 断)。在图8的实施例中,要执行的单个目标指令的目标地址由指令的操作码来确定, 并且是从以下方式中的任一项获得的从通过指令的第二字段指定的第二寄存器获得801 ;从将程序计数器804与通过指令的第二字段指定的第二寄存器801的值相加获得 802,该程序计数器从PSW 803获得;从将程序计数器804与通过指令的第二字段指定的第二寄存器801的值相加获得 805,程序计数器从与指令的即时字段(12)相加的PSW 803获得;或者从将程序计数器804与指令的即时字段(12)相加获得806。优选地,当Rl字段不为0时,由第二操作数地址指定的指令的比特8-15与通用寄 存器Rl的比特56-63进行或操作。该或操作没有改变通用寄存器Rl的内容或存储器中的 指令,并仅对于要执行的指令的解释有效。当Rl字段为0时,不发生或操作。目标指令可以是由目标指令的操作码指定的2、4或6字节长度。目标指令的执行 和异常处理就恰好像目标指令以正常顺序操作获得,除了指令地址和指令长度代码。本发 明的执行相对长指令(EXECUTE RELATIVEL0NG)可以与其他执行类型的指令(包括现有技 术中的z/Architecture的EXECUTE指令)共存。如果执行的指令没有导致发生分支,则当前PSW中的指令地址增加执行类型指令 的长度(对于EXE⑶TE RELATIVE LONG为6字节)。如果目标指令没有指定下一指令或程 序中断,则在执行目标指令之后,在执行相对长指令之后的指令地址处执行将继续。例如, 当目标指令为BRANCH AND LINK时,作为链路信息的一部分,使用了这种更新的地址以及执 行类型指令的指令长度代码。当目标指令是成功的分支指令时,通过由目标指令指定的分 支地址代替当前PSW中的指令地址。当目标指令随后是执行类型指令时,识别出执行异常。 EXECUTE的有效地址必须是偶数;否则识别出说明异常。当目标指令是2个或3个半字长 但可以执行而不需提取其第二或第三半字时,对于未使用的半字是否识别出访问异常是不 可预测的。当地址是奇数时,对于第二操作数地址没有识别出访问异常。优选地,访问异常 导致到操作系统异常处理程序(handler)的上下文切换。执行类型指令的第二操作数地址是指令地址而非逻辑地址;因此,当在正如ζ/ Architecure的操作原理中指示的主要空间、从属空间或访问寄存器模式中时,从主要地址 空间提取目标指令。对于EXECUTE RELATIVE LONG,比特32的12字段的内容是指定与程序计数器值
24(执行相对长指令的地址)相加以生成存储器中的目标指令的地址的半字数量的有符号二 进制整数(优选地当为负数时是符号扩展的2的补码)。由PSW指定的程序计数器的值可 以是24比特、31比特或优选的64比特中的任一个。如果在执行时目标指令被架构化以设置条件代码,则条件代码将因此而设置。对 于执行相对长指令或目标指令而架构化的程序异常将导致以下程序异常 访问(提取、目标指令)·执行·操作(当执行扩展工具未安装时的EXRL)来自通用寄存器的8比特与指定指令的或操作允许间接规定长度、索引、掩码、即 时数据、寄存器或扩展的操作码字段。目标指令的提取被认为是为了记录程序事件和为了 报告访问异常的指令提取。除了 EXECUTERELATIVE LONG的执行不导致说明异常外,访问或 说明异常可以由执行类型指令或目标指令导致。当可中断的指令构成执行类型指令的目标 时,程序通常不指示由EXECUTE的R1、X2或B2寄存器或EXECUTERELATIVE LONG的Rl寄存 器的可中断指令更新的任何寄存器。否则,在中断之后恢复执行时,或如果没有中断重新提 取指令,则这些寄存器的更新的值将用于执行类型指令的执行。类似的,由于当恢复执行时 可解释位置的新内容,所以程序通常不应该使可中断指令的存储器中的目的字段包括执行 类型指令的位置。前述内容对于理解一个计算机系统实施例的术语和结构是有用的。本方面不限于 z/Architecture或者对其提供的说明。本发明可有利地应用于具有在此教导的其他计算机 制造商的其他计算机结构。尽管在此已经例示和描述的本方面的优选实施例,应该理解,本发明不限于在此 公开的具体构造,将保留落入在所附的权利要求所定义的本发明的范围中的所有改动、修 改的权利。
权利要求
一种操作计算机的方法,包括在程序计数器指定的地址处提取程序中的执行机器指令,所述执行机器指令是针对计算机架构而定义的,其中所述执行机器指令包括操作码字段和第一寄存器字段和有符号即时字段,所述有符号即时字段包括指定半字数量的有符号值;执行所述执行机器指令包括从一位置获得由所述程序计数器指定的地址;将由所述程序计数器指定的地址与所述有符号值算术相加,以确定目标指令的地址;在所确定的地址处提取所述目标指令,所述目标指令包括目标指令比特8 15,所述目标指令包括一个半字、两个半字或三个半字中的任一个;执行所述目标指令;根据所述执行机器指令的大小增加所述程序计数器值;以及在由增加的程序计数器值所指定的指令地址处继续所述程序的执行。
2.根据权利要求1所述的方法,其中所述程序计数器包括第一数量比特的程序状态字 (PSff)的程序计数器值,其中所述有符号即时字段包括指定第二数量半字的有符号值,其中 所述有符号即时字段包括第二数量比特的所述比较相对指令;其中所述第二数量小于所述 第一数量,其中所述位置没有由所述比较相对指令明确标识。
3.根据权利要求1所述的方法,其中所述程序计数器包括第一数量比特的程序状态字 (PSff)的程序计数器值,其中所述有符号即时字段包括指定第二数量半字的有符号值,其中 所述有符号即时字段包括第二数量比特的所述执行机器指令,所述第二数量通过所述操作 码指定,其中所述第一数量为64,其中所述位置没有由所述比较相对指令明确标识。
4.根据权利要求1所述的方法,其中响应于所述第一寄存器字段大于0,其中获得所述 目标指令还包括获得与所述第一寄存器字段关联的第一寄存器值的比特56至63 ; 执行所提取的目标指令的比特8-15与所获得的比特56至63的逻辑或操作,以形成结 果,其中要执行的所述目标指令包括所述结果的值而非所提取的目标指令的比特8-15的 值。
5.根据权利要求1所述的方法,其中即使当所述程序处于主要空间、次要空间或访问 寄存器模式中的任一个时,所述目标指令也从主要空间提取。
6.根据权利要求2所述的方法,其中通过替代计算机架构的中央处理单元来提取和执 行针对所述计算机架构而定义的所述执行机器指令,其中所述方法还包括,解释所述执行机器指令以识别用于仿真所述执行机器指令的操 作的预定软件例程;以及其中执行所述执行机器指令包括,执行所述预定软件例程以实施用于执行所述执行机 器指令的方法的步骤。
7.一种计算机程序产品,包括处理器可读的有形存储介质,并存储所述处理器执行的 指令,所述指令用于执行所述任一项在前权利要求所述的方法的指令。
8.一种计算机系统,包括 存储器;与所述存储器通信的处理器,所述处理器包括指令提取单元,用于从存储器提取指令;以及一个或多个执行单元,用于执行所提取的指令;其中,所述计算机系统被配置为实施权利要求1到6中任一项所述的方法。
全文摘要
本发明涉及一种用于执行相对指令的方法、系统和程序产品,当执行所述执行相对指令时提取和执行相对地址处的目标指令,于是将处理返回至在所述执行相对指令之后的下一指令。通过将所述程序计数器的值与符号扩展即时字段相加来形成相对地址。可选地,在执行之前,通过对比特与目标指令的预定比特进行或操作的执行来修改所提取的目标指令。
文档编号G06F9/32GK101911016SQ200980101766
公开日2010年12月8日 申请日期2009年1月7日 优先权日2008年1月11日
发明者C·小盖尼, D·格雷纳, T·斯莱格尔 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1