提取高速缓存属性工具及其指令的制作方法

文档序号:6592577阅读:281来源:国知局
专利名称:提取高速缓存属性工具及其指令的制作方法
技术领域
本发明涉及计算机系统,更具体地说,涉及计算机系统处理器指令功能。
背景技术
商标IBM 是位于美国纽约阿蒙克的国际商业机器公司的注册商标。S/390、Z900 和z990以及其他产品名称是国际商业机器公司或其他公司的注册商标或产品名。从上世纪六十年代被称为IBM System 360的机器开始一直到现在,IBM开发 了一种被称为“大型机”的体系结构,其操作原理通过描述可以在IBM发明家所发明的“大 型机”指令实现上执行的指令阐述了机器体系结构,由于这种“大型机”指令实现对于改进 “大型机”所表示的计算机器状态具有重大贡献(如多年来所称的收录在IBM的操作原理 中的重要贡献),因此被广泛采用。2007年4月出版的第六版“IBM z/Architecture Principles of Operation (IBM z/Architecture⑧操作原理)”已成为出版的标准参考 SA22-7832-05 并被纳入 IBM z9 mainframe sever (IBM z9 大型机服务器)中。IBM z/Architecture Principles of Operation (IBM z/Architecture ^ SA22-7832-05)在此全部引入作为参考。参考图1Α,其中示出了现有技术主计算机系统50的代表组件。如本领域公知的, 计算机系统中也可以采用其他布置。代表性主计算机50包括一个或多个与主存储装置(计 算机存储器2)通信的CPU 1以及到存储设备11和网络10的1/0接口以便与其他计算机 或SAN等通信。CPU 1与具有架构的指令集以及架构的功能性的体系结构兼容。CPU 1可 具有将程序地址(虚拟地址)转换为存储器的实地址的动态地址转换(DAT) 3。DAT通常包 括转换后备缓冲器(TLB)7,其用于对转换进行缓存以便对计算机存储器2块的后续访问没 有地址转换延迟。通常在计算机存储器2和处理器1之间使用高速缓存9。高速缓存9可 具有层次结构,其中较大的高速缓存可用于多个CPU,而较小、较快(较低级别)的高速缓 存位于较大的高速缓存和每个CPU之间。在某些实施方式中,分割较低级别的高速缓存以 针对指令取回和数据访问提供单独的低级别高速缓存。在一个实施例中,由指令取回单元 4通过高速缓存9从存储器2取回指令。所述指令在指令解码单元(6)中进行解码并被分 派到(在某些实施例中,与其他指令一起分派到)指令执行单元8。通常采用若干执行单元 8,例如算术执行单元、浮点执行单元和分支指令执行单元。指令由执行单元执行,所述执行 单元根据需要从指令指定的寄存器或存储器存取操作数。如果要访问的(加载或存储的) 操作数来自存储器2,则通常由加载/存储单元5在被执行指令的控制下处理所述访问。指 令可以在硬件电路或在内部微代码(固件)中执行,也可以通过这两者的组合来执行。在图IB中,提供了仿真具有主机体系结构的主计算机系统50的现有技术的仿真 的主计算机系统21的实例。在仿真的主计算机系统21中,主处理器(CPU)I为仿真的主处 理器(或虚拟主处理器)且包括本机指令集体系结构不同于主计算机50的处理器1的指 令集体系结构的仿真处理器27。仿真的主计算机系统21具有可由仿真处理器27访问的存 储器22。在一个实例实施例中,存储器22被分为主计算机存储器2部分和仿真例程23部分。根据主计算机体系结构,主计算机存储器2可用于仿真的主计算机21的程序。仿真处 理器27执行体系结构不同于仿真的处理器1的体系结构的架构指令集的本机指令(从仿 真例程存储器23获取所述本机指令),并且可通过使用从序列和访问/解码例程获取的一 个或多个指令,从主计算机存储器2中的程序访问指令以便执行,所述序列和访问/解码例 程可解码所访问的主机指令(多个)以确定用于仿真被访问的主机指令的功能的本机指令 执行例程。其他针对主计算机系统50的体系结构定义的工具可以由架构的工具例程进行 仿真,其中包括诸如通用寄存器、控制寄存器、动态地址转换和I/O子系统支持以及处理器 高速缓存之类的工具。所述仿真例程还可利用仿真处理器207中的可用功能(例如通用寄 存器和虚拟地址的动态转换)提高自身的性能。还可提供专用硬件和卸载引擎来帮助处理 器27仿真主计算机50的功能。在大型机中,架构的机器指令由程序员使用,现在通常是由“C”语言程序员通过编 译器应用进行使用。这些存储在存储介质中的指令可在zArchitecture IBM Server中本机 地执行,或者备选地在执行其他体系结构的机器内执行。它们可以在现有和将来的IBM大 型机服务器以及其他IBM机器(例如,pSeries Servers和xSeries Servers)上被仿 真。它们可以在运行Linux的机器或使用IBM 、Intel 、AMD 、Sun Microsystems以及其 他厂商制造的硬件的多种机器中执行。除了在运行Z/Architecture 的硬件上执行以外, 还可以使用 Linux 以及通过 Hercules、UMX、FSI (Fundamental Software, Inc)或 Platform Solutions, Inc使用仿真的机器,其中通常在仿真模式下执行指令。在仿真模式下,仿真软 件由本机处理器执行以仿真被仿真的处理器的体系结构。本机处理器27通常执行包括固件或本机操作系统的仿真软件23以执行对被仿真 处理器的仿真。仿真软件23负责取回和执行被仿真处理器体系结构的指令。仿真软件23 维护被仿真程序计数器以跟踪指令边界。仿真软件23可一次取回一个或多个被仿真机器 指令并将所述一个或多个被仿真机器指令转换为由本机处理器27执行的一组相应本机机 器指令。可以缓存这些转换后的指令以便完成更快的转换。尽管如此,仿真软件必须维护 被仿真处理器体系结构的体系结构规则以确保为被仿真处理器编写的操作系统和应用正 确运行。而且,仿真软件必须提供由被仿真处理器1体系结构识别的资源,其中包括但不限 于控制寄存器、通用寄存器、浮点寄存器、包括例如段表和页表的动态地址转换功能、中断 机制。上下文切换机制、日时(TOD)时钟以及1/0子系统的架构接口,以便被设计为在被仿 真处理器上运行的操作系统或应用程序可以在具有仿真软件的本机处理器上运行。解码被仿真的特定指令,并且调用子例程以执行单个指令的功能。在例如“C” 子例程或驱动程序,或某些其他提供特定硬件的驱动程序的方法(本领域的技术人员在 理解优选实施例说明之后将理解此方法)中实现仿真被仿真的处理器1的功能仿真软 件功能23。各种软件和硬件仿真专利示出了多种仿真针对不同机器构建的目标机器指 令格式的已知方法,本领域的技术人员可以理解所述目标机器指令格式,以及上述引用 所使用的商业软件技术,所述专利包括但不限于Beausolei 1等人的“Multiprocessor forhardware emulation(硬件仿真的多处理器,专利号US 5551013) " ;Scalzi等人的 "Preprocessing of stored target routines for emulatingincompatible instructions on target processor (预处理存储的目标例程以在目标处理器上仿真不兼容的指令, 专禾丨J 号US6009261) ” ;Davidian 等人的 “Decoding guest instruction to directlyaccess emulation routines thatemulate the guest instructions (对客户机指令 进行解码以直接访问仿真客户机指令的仿真例程,专利号US5574873),,;Gorishek等人 白勺"Symmetrical multiprocessing bus and chipset used for coprocessorsupport allowing non-native code to run in a system(支持协处理器以在系统中运行非 本机代码的对称多处理总线和芯片组,专利号US6308255) ”;Lethin等人的“Dynamic optimizing object code translator for architectureemulation and dynamic optimizing object code translation method(M^WM^^iJjM^i^^iJtitM^it^ 转换器和动态优化对象代码转换方法,专利号US6463582) ” ;Eric Traut的“Method for emulating guestinstructions on a host computer through dynamic recompilation of hostinstructions (通过动态重新编译主机指令在主计算机上仿真客户机指令的方法, 专利号US5790825) ”以及其他许多专利。

发明内容
在本发明的一个实施例中,处理系统的处理器取回和执行针对计算机体系结构定 义的提取高速缓存属性机器指令,所述高速缓存机器指令包括操作码、操作数标识符(寄 存器字段)、所述操作数标识符标识操作数位置(寄存器)。所述指令通过指令的位移 (displacement)字段确定高速缓存级别以及要从所确定级别处的高速缓存提取的高速缓 存属性。所述高速缓存属性可以是所述处理器的每个高速缓存级别处的高速缓存的摘要, 也可以是与所述处理器关联的指定高速缓存级别处的高速缓存的高速缓存属性。从所述高 速缓存提取所确定的属性并将其保存在所述操作数位置中。在一个实施例中,要提取的高速缓存属性为以下项中的任意一个一个或多个高 速缓存的高速缓存拓扑摘要;所述目标高速缓存的行大小;所述目标高速缓存的总大小; 或所述目标高速缓存的组关联性级别。在另一实施例中,所提取的高速缓存拓扑摘要包括一个或多个摘要,每个摘要用 于由所述高速缓存级别标识符指定的级别处的高速缓存,其中对应高速缓存级别处的高速 缓存的摘要包括以下项中的任意一个高速缓存是否存在;高速缓存是否为执行所述指令 的处理器的专用高速缓存;高速缓存是否可以由所述处理系统的其他处理器共享;高速缓 存是否包含单独的指令高速缓存和单独的数据高速缓存;高速缓存是否仅为指令高速缓 存;高速缓存是否仅为数据高速缓存;以及高速缓存是否为统一的指令和数据高速缓存。本发明旨在提供符合现有体系结构的新的指令功能性,所述新的指令功能性可以 减轻对诸如通用寄存器之类的体系结构资源的依赖,提高采用新指令的软件版本的功能性 和性能。


在说明书结尾处的权利要求中具体指出并明确要求保护了被视为本发明的主题。 从下面结合附图的详细说明,本发明的上述和其他目标、特性和优点将变得显而易见,这些 附图是图IA是示出现有技术的主计算机系统的实例的示意图;图IB是示出现有技术的被仿真主计算机系统的实例的示意6
图IC是示出现有技术的计算机系统的实例的示意图;图2是示出现有技术的计算机网络的实例的示意图;图3是示出现有技术的计算机系统的元件的示意图;图4A-4C示出了现有技术的计算机系统的详细元件;图5A-5F示出了计算机系统的机器指令格式;图6示出了本发明的实施例的指令格式实例;图7示出了根据本发明的实施例的属性标识符;以及图8示出了本发明的实施例的功能实例的流程。
具体实施例方式在一个实施例中,本发明可通过软件(有时称为许可内码(LIC)、固件、微代码、毫 代码、微微码等,它们均适用于本发明)实现。参考图1A,体现本发明的软件程序代码通常 由系统50中被称为CPU(中央处理单元)1的处理器从诸如CD-ROM驱动器、磁带驱动器或 硬盘之类的长期存储介质7进行访问。所述软件程序代码可位于诸如软盘、硬盘驱动器或 CD-ROM之类的各种已知介质中的任何介质上以便与数据处理系统一起使用。所述代码既可 通过此类介质分发,也可从计算机存储器2分发给用户,或者通过网络10从某个计算机系 统的存储装置分发给其他计算机系统以供此类其他系统的用户使用。备选地,所述程序代码可以位于存储器2中,由处理器1使用处理器总线进行访 问。此类程序代码包括控制各种计算机组件的功能及交互的操作系统以及一个或多个应用 程序。程序代码一般从密集存储介质11分页到高速存储器2,在高速存储器2中,此类程序 代码可由处理器1进行处理。使用存储器、物理介质中的软件程序代码以及/或者通过网 络分发软件代码的技术和方法是公知的,此处不做进一步讨论。程序代码,当被创建并存储 在有形介质(包括但不限于电子存储器模块(RAM)、闪存、光盘(CD)、DVD、磁带等)上时,通 常被称为“计算机程序产品”。计算机程序产品介质一般优选地由计算机系统中的处理电路 读取以便由所述处理电路执行。图IC示出了其中可实现本发明的代表性工作站或服务器硬件系统。图IC的系 统100包括诸如个人计算机、工作站或服务器之类的代表性计算机系统101,其中包括可选 外围设备。工作站101包括一个或多个处理器106和用于根据已知技术连接处理器(多 个)106与系统101的其他组件以及使能它们之间的通信的总线。所述总线将处理器106 连接到存储器105和长期存储装置107,长期存储装置107包括可例如硬盘驱动器(包括例 如磁介质、⑶、DVD和闪存中的任意一项)或磁带驱动器。系统101还可包括用户接口适配 器,它通过总线将微处理器106连接到一个或多个接口设备,例如键盘104、鼠标103、打印 机/扫描仪UO和/或其他接口设备,后者可以是诸如触摸感应屏幕、数字输入小键盘之类 的任何用户接口设备。所述总线还通过显示适配器将诸如LCD屏幕或监视器之类的显示设 备102连接到微处理器106。系统101可通过能够与网络109通信108的网络适配器与其他计算机或计算机网 络进行通信。网络适配器的实例包括信道、令牌环、以太网或调制解调器。备选地,工作站 101可使用诸如⑶PD(蜂窝数字分组数据)卡之类的无线接口通信。工作站101可与局域 网(LAN)或广域网(WAN)中的其他此类计算机关联,或者工作站101可以是具有其他计算机的客户机/服务器布置中的客户机等。所有这些配置以及相应的通信硬件和软件都是本 领域公知的。图2示出了其中可实现本发明的数据处理网络200。数据处理网络200可包括多个 单独的网络,例如无线网络和有线网络,每个网络可包括多个单独的工作站101、201、202、 203、204。此外,本领域中的技术人员将理解,可以包括一个或多个局域网,其中局域网可包 括多个与主处理器相连的智能工作站。仍参考图2,所述网络还可包括大型计算机或服务器,例如网关计算机(客户机服 务器206)或应用服务器(可访问数据存储库并且还可以直接从工作站205访问的远程服 务器208)。网关计算机206充当每个网络207的入口点。在将一种联网协议连接到另一种 联网协议时需要网关。网关206优选地通过通信链路与另一网络(例如互联网207)相连。 网关206还可以使用通信链路与一个或多个工作站101、201、202、203、204直接相连。网关 计算机可使用IBM公司提供的IBM eServer zSeries z9 Server实现。体现本发明的软件编程代码通常由系统101的处理器106从诸如⑶-ROM驱动器 或硬盘驱动器之类的长期存储介质107进行访问。所述软件编程代码可位于诸如软盘、硬 盘驱动器或CD-ROM之类的各种已知介质中的任何介质上以便与数据处理系统一起使用。 所述代码既可通过此类介质分发,也可分发给用户210、211,或者从某个计算机系统的存储 器或存储装置分发给其他计算机系统以供此类其他系统的用户使用。备选地,编程代码111可以位于存储器105中,由处理器106使用处理器总线进行 访问。此类编程代码包括控制各种计算机组件的功能及交互的操作系统以及一个或多个应 用程序112。程序代码一般从密集存储介质107分页到高速存储器105,在高速存储器105 中,此类程序代码可由处理器106进行处理。使用存储器、物理介质中的软件编程代码以及 /或者通过网络分发软件代码的技术和方法是公知的,此处不做进一步讨论。程序代码,当 被创建并存储在有形介质(包括但不限于电子存储器模块(RAM)、闪存、光盘(CD)、DVD、磁 带等)上时,通常被称为“计算机程序产品”。计算机程序产品介质一般优选地由计算机系 统中的处理电路读取以便由所述处理电路执行。处理器最容易使用的高速缓存(一般比处理器的其他高速缓存更快和更小)是最 低级别(Li或一级)的高速缓存,而主存储装置(主存储器)是最高级别的高速缓存(L3, 如果有3个级别)。最低级别的高速缓存通常被分为保存要执行的机器指令的指令高速缓 存(I-Cache)和保存数据操作数的数据高速缓存(D-Cache)。参考图3,示出了处理器106的示例性处理器实施例。通常,采用一个或多个级别 的高速缓存303以缓冲存储块以便提高处理器性能。高速缓存303是高速缓冲器,其中保 存可能要使用的存储器数据的高速缓存行(cache line)。典型的高速缓存行是64、128或 256字节的存储器数据。通常采用单独的高速缓存进行指令缓存而不是数据缓存。通常,通 过本领域公知的各种“窥探”算法提供高速缓存一致性(存储器和高速缓存中的行的副本 的同步)。处理器系统的主存储装置105通常被称为高速缓存。在具有4个级别的高速缓 存303的处理器系统中,主存储装置105有时被称为5级(L5)高速缓存,因为它通常速度 较快并且仅保存可用于计算机系统的非易失性存储(DASD、磁带等)的一部分。主存储装置 105 “缓存”由操作系统对主存储105装置执行页入和页出的数据页。程序计数器(指令计数器)311跟踪当前要执行的指令的地址。z/Architecture
8处理器中的程序计数器为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或从正在执行的指令的立即字段(immediatefield) 向执行单元307提供操作数。当存储时,将执行的结果存储在存储器105、寄存器309或其 他机器硬件(例如控制寄存器、PSff寄存器等)中。处理器106通常具有一个或多个执行单元307、308、310以执行指令的功能。参考 图4A,执行单元307可以通过接口逻辑407与架构的通用寄存器309、解码/分派单元306、 加载存储单元310以及其他401处理器单元通信。执行单元307可以采用数个寄存器电路 403,404,405以保存算术逻辑单元(ALU) 402将处理的信息。ALU执行诸如加、减、乘、除之 类的算术运算以及诸如与、或及异或(xor)、循环及移位之类的逻辑功能。优选地,ALU支持 依设计而定的专门运算。其他电路可以提供例如包括条件码和恢复支持逻辑的其他架构的 工具408。通常,将ALU运算的结果保存在输出寄存器电路406中,输出寄存器电路406可 以将结果转发到各种其他处理功能。处理单元可具有多种布置,本描述仅旨在提供一个实 施例的代表性理解。ADD指令例如在具有算术和逻辑功能的执行单元307中执行,而浮点指令例如在 具有专门浮点能力的浮点执行中执行。优选地,执行单元通过针对操作数执行操作码定义 的功能来处理由指令标识的操作数。例如,执行单元307可以对在由指令的寄存器字段标 识的两个寄存器309中找到的操作数执行ADD指令。执行单元307对两个操作数执行算术加法并将结果存储在第三操作数中,其中 第三操作数可以是第三寄存器或两个源寄存器之一。执行单元优选地使用算术逻辑单元 (ALU)402,算术逻辑单元(ALU)402能够执行各种逻辑功能(例如Shift、Rotate、“与,,、“或”和“异或”)以及各种代数功能(包括加、减、乘、除中的任一种)。有些ALU 402设计 用于标量运算而有些用于浮点运算。根据体系结构,数据可以是大端(BigEndian)(其中最 低有效字节在最高字节地址处)或小端(其中最低有效字节在最低字节地址处)。IBM ζ/ Architecture是大端。根据体系结构,带符号字段可以是符号以及1的补码或2的补码的 量值。2的补码数是有利的,因为ALU不需要设计减法功能,原因是采用2的补码的负值或正 值在ALU内仅需要加法。数字通常以速记法描述,例如其中一个12位字段定义一个4,096 字节块的地址,并且通常被描述为4KB(千字节)块。参考图4B,通常将用于执行分支指令的分支指令信息发送到分支单元308,分支 单元308通常采用分支预测算法(例如分支历史表432)以便在其他条件运算完成之前预 测分支的结果。在条件运算完成之前,将取回并推测地执行当前分支指令的目标。当条件运 算完成时,根据条件运算的条件以及推测的结果,将完成或丢弃推测地执行的分支指令。典 型的分支指令可以测试条件码并分支到目标地址,如果条件码满足分支指令的分支要求, 则可以根据若干数值(例如包括在寄存器字段或指令的立即字段中找到的数值)计算目标 地址。分支单元308可以采用具有多个输入寄存器电路427、428、429以及一个输出寄存器 电路430的ALU 426。分支单元308可以例如与通用寄存器309、解码分派单元306或其他 电路425通信。一组指令的执行可以因各种原因被中断,这些原因例如包括由操作系统发起的上 下文切换、导致上下文切换的程序异常或错误、导致上下文切换的I/O中断信号或多个程 序的多线程活动(在多线程环境中)。优选地,上下文切换操作将保存有关当前正在执行的 程序的状态信息,然后加载有关被调用的其他程序的状态信息。例如,可以将状态信息保存 在硬件寄存器或存储器中。状态信息优选地包括指向要执行的下一指令的程序计数器值、 条件码、存储器转换信息以及架构的寄存器内容。可以由硬件电路、应用程序、操作系统程 序或固件代码(微代码、微微码或许可内码(Lie))单独或联合实施上下文切换活动。处理器根据指令定义的方法访问操作数。指令可以提供使用指令的一部分的值的 立即操作数,可以提供一个或多个显式指向通用寄存器或专用寄存器(例如浮点寄存器) 的寄存器字段。指令可以使用由操作码字段标识的隐含寄存器作为操作数。指令可以针对 操作数使用存储器位置。操作数的存储器位置可以由寄存器、立即字段或寄存器和立即字 段的组合提供,如z/Architecture长位移工具所例示的,其中指令例如定义基寄存器、索 引寄存器、立即字段(位移字段),这些字段共同提供操作数在存储器中的地址。在此,位置 通常暗示主存储器(主存储装置)中的位置,除非另外说明。参考图4C,处理器使用加载/存储单元310访问存储装置。加载/存储单元310 可以通过获取目标操作数在存储器303中的地址并将操作数加载在寄存器309或其他存储 器303位置中来执行加载操作,或者可以通过获取目标操作数在存储器303中的地址并将 从寄存器309或其他存储器303位置获取的数据存储在存储器303内的目标操作数位置中 来执行存储操作。加载/存储单元310可以是推测性的,并且可以按照相对指令顺序而言 乱序的顺序访问存储器,但加载/存储单元310必须对程序而言保持按顺序执行指令的表 象。加载/存储单元310可以与通用寄存器309、解码/分派单元306、高速缓存/存储器 接口 303或其他元件455通信,并且包括各种寄存器电路、ALU 458以及控制逻辑463以计 算存储地址并提供管道定序从而保持操作按顺序执行。如本领域公知的,有些操作可以是乱序的,但加载/存储单元提供了功能以使乱序操作对程序而言好像是按顺序执行的。优选地,应用程序“看到”的地址通常被称为虚拟地址。虚拟地址有时被称为“逻 辑地址”和“有效地址”。这些地址是虚拟的,因为它们通过各种动态地址转换(DAT) 312技 术之一被重定向到物理存储器位置,这些技术包括但不限于仅使用偏移值向虚拟地址添加 前缀、通过一个或多个转换表转换虚拟地址,所述转换表优选地单独或同时包括至少一个 段表和页表,优选地,所述段表具有指向页表的表项。在z/Architecture中,提供了包括区 第一表、区第二表、区第三表、段表以及可选的页表的转换层次结构。通常通过使用转换后 备缓冲器(TLB)提高地址转换的性能,转换后备缓冲器包括将虚拟地址映射到关联的物理 存储器位置的表项。当DAT 312使用转换表来转换虚拟地址时,将创建表项。然后,虚拟地 址的后续使用可以使用快速TLB而不是缓慢顺序转换表访问的表项。可以由包括LRU(最 近最少使用)在内的各种替换算法管理TLB内容。如果处理器是多处理器系统的处理器,则每个处理器都有责任保持诸如I/O、高速 缓存、TLB以及存储器之类的共享资源互锁以实现一致性。通常,将使用“窥探”技术保持高 速缓存一致性。在窥探环境中,每个高速缓存行可以被标记为处于共享状态、独占状态、已 更改状态、无效状态等中的任何一种状态以便于共享。I/O单元304为处理器提供用于连接例如包括磁带、盘、打印机、显示器以及网络 在内的外围设备的手段。I/O单元通常由软件驱动程序呈现给计算机程序。在诸如IBM的 z/Series之类的大型机中,通道适配器和开放系统适配器是大型机的I/O单元,它们在操 作系统和外围设备之间提供通信。以下来自“z/Architecture操作原理”的描述将介绍计算机系统的体系结构视 图存储计算机系统包括主存储装置中的信息以及寻址、保护、引用和更改记录。寻址的某 些方面包括地址的格式、地址空间的概念、各种类型的地址以及将一种类型地址转换为另 一种类型地址的方式。某些主存储装置包括永久分配的存储位置。主存储装置为系统提供 数据的可直接寻址的快速访问存储。在处理数据和程序之前,必须将它们(从输入设备) 加载到主存储装置中。主存储装置可以包括一个或多个较小、较快访问的缓冲存储装置,有时被称为高 速缓存。高速缓存通常在物理上与CPU或I/O处理器关联。通常,程序无法观察到物理结 构的影响(对性能的影响除外)以及不同存储介质的使用。可以针对指令和数据操作数维护单独的高速缓存。高速缓存内的信息被保存在整 数边界上的连续字节中,这些字节被称为高速缓存块或高速缓存行(或简称行)。模型可以 提供EXTRACT CACHE ATTRIBUTE指令,此指令可返回以字节表示的高速缓存行的大小。模 型还可以提供PREFETCH DATA和PREFETCH DATA RELATIVE LONG指令,这些指令可影响存 储装置到数据或指令高速缓存的预取或从高速缓存释放数据。存储装置被视为位的水平长串。对于多数操作,按照从左到右的顺序对存储装置 进行访问。位串被细分为八位单位。一个八位单位被称为一个字节,字节是所有信息格式 的基本构建块。存储装置中的每个字节位置由唯一的非负整数标识,该整数是此字节位置 的地址,或者简单说是字节地址。相邻字节位置具有连续地址,在左侧以0开始,并按照从
11左到右的顺序继续。地址是无符号的二进制整数,并且是24、31或64位。信息在存储装置与CPU或通道子系统之间传输,一次一个字节或一组字节。除非 另外指定,否则存储装置中的一组字节由此组的最左侧字节寻址。此组中的字节数由要执 行的操作隐式或显式指定。当在CPU操作中使用时,一组字节被称为字段。在每组字节内, 按照从左到右的顺序对位进行编号。最左侧的位有时被称为“高阶”位,而最右侧的位被称 为“低阶”位。但是,位编号不是存储地址。只能对字节进行寻址。要操作存储装置中字节 的个别位,需要访问整个字节。字节中的位从左到右编号为0到7。地址中的位可以编号 为8-31或40-63 (对于24位地址)或者1_31或33-63 (对于31位地址);对于64位地址, 编号为0-63。在多个字节的任何其他固定长度格式内,组成格式的位从0开始连续编号。 为了检测错误并且优选地为了纠正错误,可以随每个字节或一组字节传输一个或多个校验 位。此类校验位由机器自动生成并且无法由程序直接控制。存储容量以字节数表示。当存 储操作数字段的长度由指令的操作码暗示时,字段被称为具有固定长度,该长度可以是1、 2、4、8或16字节。针对某些指令可能暗示较大的字段。当存储操作数字段的长度未被暗示 而是显式指定时,字段被称为具有可变长度。可变长度操作数的长度可以以一个字节的增 量来变化。当信息被放置在存储装置中时,只有那些包括在指定字段中的字节位置的内容 被替换,即使存储装置的物理路径的宽度大于所存储的字段的长度。特定信息单位必须在存储装置中的整数边界上。对于存储地址是以字节表示的单 位长度的倍数的信息单位,边界被称为整数边界。整数边界上2、4、8以及16字节的字段被 赋予特殊名称。半字是2字节边界上的一组2个连续字节,并且是指令的基本构建块。字 是4字节边界上的一组4个连续字节。双字是8字节边界上的一组8个连续字节。四字是 16字节边界上的一组16个连续字节。当存储地址指定半字、字、双字以及四字时,地址的二 进制表示分别在最右侧包含1、2、3或4个0位。指令必须在2字节整数边界上。多数指令 的存储操作数没有边界对齐要求。在针对指令和数据操作数实现单独高速缓存的模型中,如果程序对随后从其取回 指令的高速缓存行进行存储,可能会经历显著的延迟,无论存储是否更改随后取回的指令 都是如此。指令通常,CPU的操作由存储装置中的指令控制,这些指令按顺序执行,从左到右按照 存储地址的升序一次执行一个指令。分支、LOAD PSW、中断、SIGNAL PROCESSOR指令或手动 干预可导致顺序操作中的更改。优选地,指令包括两个主要部分 操作码(opcode),其指定要执行的操作 可选地,所参与的操作数的指定图5A-5F中示出了 z/Architecture的指令格式。指令可以仅提供操作码501,或 操作码以及包括立即操作数或用于在寄存器或存储器中定位操作数的寄存器指定符的各 种字段。操作码可向硬件指示要使用隐含资源(操作数等),例如一个或多个特定通用寄 存器(GPR)。操作数可以分为三类位于寄存器中的操作数、立即操作数以及存储装置中的 操作数。操作数可以被显式或隐式地指定。寄存器操作数可以位于通用寄存器、浮点寄存 器、存取寄存器或控制寄存器中,寄存器的类型由操作码标识。通过标识指令中的4位字段(称为R字段)中的寄存器来指定包含操作数的寄存器。对于某些指令,操作数位于隐式指 定的寄存器中,所述寄存器由操作码暗示。立即操作数包含在指令内,并且包含立即操作数 的8位、16位或32位字段被称为I字段。存储装置中的操作数可以具有暗示的长度;由位 掩码指定;由指令中的4位或8位长度规范(称为L字段)指定;或者具有由通用寄存器的 内容指定的长度。存储装置中的操作数地址通过使用通用寄存器的内容作为地址一部分的 格式指定。这样可以通过使用缩写符号指定完整地址;使用针对操作数采用通用寄存器的指令执行地址操纵;通过程序手段修改地址而无需更改指令流;通过直接使用从其他程序接收的地址而独立于数据区域的位置进行操作。用于引用存储装置的地址被包含在由指令中的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 506 507、RIS 555、RR 510、RRE 511、RRF 512 513 514,RRS,RS 516 517、RSI520、RSL 52URSY 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有三种变型,RI、RIL、RS以及RSY有两种变型,RIE和SS有五种变型。格式名称通常指示参与运算的操作数的类以及有关字段的一些详细信息· RIS表示寄存器_立即操作和存储操作。· RRS表示寄存器_寄存器操作和存储操作。· SIL表示存储-立即操作,包含16位立即字段。在I、RR、RS、RSI、RX、SI以及SS格式中,指令的第一个字节包含操作码。在E、RRE、 RRF、S、SIL以及SSE格式中,指令的前两个字节包含操作码,但对于S格式的某些指令,操 作码仅在第一个字节中。在RI和RIL格式中,操作码在指令的第一个字节和位位置12-15 中。在RIE、RIS、RRS、RSL、RSY、RXE、RXF、RXY以及SIY格式中,操作码在指令的第一个字 节和第六个字节中。操作码的第一个字节或唯一字节的前两位指定指令的长度和格式,如 下所示在RR、RRE、RRF、RRR、RX、RXE、RXF、RXY、RS、RSY、RSI、RI、RIE 以及 RIL 格式中,由
Rl字段指定的寄存器的内容被称为第一操作数。包含第一操作数的寄存器有时被称为“第 一操作数位置”,而有时被称为“寄存器R1”。在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 字段。在指令 ADDHALFWORD IMMEDIATE、COMPARE HALFffORD IMMEDIATE、LOAD HALFffORD IMMEDIATE以及MULTIPLY HALFffORDIMMEDIATE的RI格式中,指令的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 AND BRANCHRELATIVE 和 COMPARE LOGICAL IMMEDIATE AND BRANCHRELATIVE,8 位 12 字段的 内容直接用作第二操作数。对于RIE格式指令COMPARE IMMEDIATE AND BRANCH、COMPARE IMMEDIATEAND TRAP、 COMPARE LOGICAL IMMEDIATE AND BRANCH 以及 COMPARE LOGICAL IMMEDIATE AND TRAP,16位12字段的内容直接用作第二操作数。对于RIE格式指令COMPARE AND BRANCHRELATIVE、COMPARE IMMEDIATE AND BRANCH RELATIVE、COMPARE LOGICAL AND BRANCH RELATIVE 以及 C0MPAREL0GICAL IMMEDIATE AND BRANCH RELATIVE, 16 位 14 字段 的内容用作指定半字数的带符号二进制整数,这些半字被与指令的地址相加以形成分支地 址。对于RIL 格式指令 ADD IMMEDIATE、ADD LOG ICALIMMEDI ATE、ADD LOGICAL WITH SIGNED IMMEDIATE、COMPARE IMMEDIATE、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、SS以及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 NUMERICS、M0VEZ0NES以及OR(OC),L指定由第一操作数地址指定的字节 的右侧的附加操作数字节数。因此,第一操作数以字节表示的长度是1-256,与L中的长度代码0-255对应。存储结果将替换第一操作数,并且从不存储在由地址和长度指定的字 段的外部。在此格式中,第二操作数与第一操作数具有相同的长度。上述定义具有应用到 EDIT、EDIT AND MASK、PACKASCII、PACK UNICODE、TRANSLATE、TRANSLATE AND TEST、UNPACK ASCII 以及 UNPACK UNICODE 的变型。在具有两个长度字段的SS格式中,以及在RSL格式中,Ll指定由第一操作数地址 指定的字节的右侧的附加操作数字节数。因此,第一操作数以字节表示的长度是1-16,与 Ll中的长度代码0-15对应。类似地,L2指定由第二操作数地址指定的位置的右侧的附加操 作数字节数。结果将替换第一操作数,并且从不存储在由地址和长度指定的字段的外部。如 果第一操作数长于第二操作数,则第二操作数在左侧使用0扩展直至达到第一操作数的长 度。这种扩展不会修改存储装置中的第二操作数。在具有两个R字段的SS格式中,如MOVE TO PRIMARY、MOVE TO SECONDARY以及MOVE WITH KEY指令所使用的,由Rl字段指定的通 用寄存器的内容是被称为实长度的32位无符号值。两个操作数都具有被称为有效长度的 长度。有效长度等于实长度或256中的较小者。指令将设置条件码以便于对循环进行编程 以便移动由实长度指定的总字节数。还使用具有两个R字段的SS格式针对LOAD MULTIPLE DISJOINT指令指定寄存器范围以及两个存储操作数,针对PERFORM LOCKED OPERATION指令 指定一个或两个寄存器以及一个或两个存储操作数。B1、B2、X2或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)是64位数,包含在由程序在指令中的4位字段(称为B字段)中指定的通用寄存器中。 基地址可以用作为每个程序和数据区域单独寻址的手段。在数组型计算中,它可以指定数 组的位置,而在记录型处理中,它可以标识记录。提供基地址以便为整个存储装置寻址。基 地址还可以用于编制索引。索引(X)是包含在由程序在指令中被称为X字段的4位字段中指定的通用寄存 器内的64位数。它只包括在由RX-、RXE-和RXY-格式指令指定的地址中。RX_、RXE-和 RXY-格式指令允许双索引;也就是说,所述索引可用于提供数组内元素的地址。
15
位移(D)是包含在指令中被称为D字段的字段内的12位或20位数。12位位移是 无符号的并且提供基地址指定的位置以外最多4,095字节的相对寻址。20位位移是带符号 的并且提供基地址位置以外最多524,287字节的相对寻址或提供该地址之前最多524,288 字节的相对寻址。在数组型计算中,可使用位移指定与元素关联的多个项(item)之一。在 处理记录时,可使用位移标识记录中的项。12位位移位于具有特定格式的指令的位位置 20-31。在具有某些格式的指令中,第二 12位位移还位于指令的位位置36-47。20位位移仅位于具有RSY、RXY或SIY格式的指令中。在这些指令中,D字段包括 位于位位置20-31中的DL(低)字段和位于位位置32-39中的DH(高)字段。如果安装了 长位移工具,则通过在DL字段内容左侧附加DH字段内容来形成位移数值。如果未安装长 位移工具,则通过在DL字段内容左侧附加8个0位来形成位移数值,并且忽略DH字段的内 容。在形成中间和时,基地址和索引被当作64位二进制整数进行处理。12位位移被当 作12位无符号二进制整数进行处理,并且在左侧附加52个0位。20位位移被当作20位带 符号二进制整数进行处理,并且44个等于符号位的位被附加到左侧。3个作为64位二进 制数进行添加,忽略溢出。和始终为64位长并且用作中间值以形成生成的地址。中间值的 位被编号为0-63。B1、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。可以在索引和基地址寄存器中使用负值。这些值的位0-32在31位寻址模 式下被忽略,并且位0-39在24位寻址模式下被忽略。对于分支指令,发生分支时下一要执行的指令的地址被称为分支地址。取决于分 支指令,指令格式可以为 RR、RRE> RX、RXY、RS、RSY、RSI、RI、RIE 或 RIL。在 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位中间值是两个加数之和, 并且忽略位位置0的溢出。在RSI、RI或RIE格式中,第一加数是12字段的内容,其中 1个0位附加到右侧并且47个等于内容符号位的位附加到左侧,但是对于COMPARE AND BRANCH RELATIVE、COMPARE IMMEDIATE AND BRANCH RELATIVE,COMPARELOGICAL AND BRANCH RELATIVE 禾口 COMPARE LOG ICALIMMEDI ATE AND BRANCH RELATIVE,第一加数是 14 字段的内 容,其中按照上文针对12字段所述附加位。在RIL格式中,第一加数是12字段的内容,其 中一个0位附加到右侧并且31个等于内容符号位的位附加到左侧。在所有格式中,第二加 数是分支指令的64位地址。分支指令的地址是更新地址以便寻址下一顺序指令之前位于 PSW中的指令地址,或者是在使用EXE⑶TE时EXE⑶TE指令的目标的地址。如果在24位或 31位寻址模式下使用EXE⑶TE,则分支指令的地址是左侧分别附加40或33个0的目标地 址。分支地址始终为64位长,并且所述位编号为0-63。分支地址替换当前PWA的位 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字节的 位置。用于做出决策的工具由BRANCHON CONDITION、BRANCHRELATIVE ON CONDITION和 BRANCH RELATIVE ON C0NDITI0NL0NG指令提供。这些指令检查影响算术、逻辑和1/0运算 中大部分运算的结果的条件码。包括两个位的所述条件码提供四个可能的条件码设置0、 1、2 禾口 3。任何设置的具体含义都取决于设置条件码的操作。例如,条件码反映诸如零、非
17零、第一操作数取高、等于、溢出和子通道忙之类的条件。一旦被设置,所述条件码就保持不 变,直到被导致设置不同条件码的指令修改为止。可通过使用BRANCH ON CONDITION、BRANCH RELATIVE 0NC0NDITI0N 和 BRANCH RELATIVE ON CONDITION LONG执行循环控制以测试地址算术和计数运算的结果。对于某些 特别频繁的算术和测试组合,提供了 BRANCH ON COUNT,BRANCH ON INDEX HIGH,BRANCH ON INDEX LOW OR EQUAL,同时还提供了这些指令的相对分支等价指令。这些分支通过专门化 而提高了这些任务的性能。当不需要更改寻址模式时,子例程链接通过BRANCH AND LINK和BRANCH AND SAVE 指令提供。(此处对BRANCH AND SAVE的描述也适用于BRANCH RELATIVE AND SAVE和BRANCH RELATIVEAND SAVE LONG)。这两个指令不仅允许引入新的指令地址,而且还允许保留返回 地址和关联的信息。所述返回地址是存储装置中分支指令后紧跟的指令的地址,但是将分 支指令作为目标的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 中以及将1放置在通用寄存器Rl的位位置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 SETM0DE和BRANCH AND SET MODE。这些指令包含Rl和R2字段。指令的操作被概述如下· BRANCH AND SAVE AND SET MODE 将通用寄存器 Rl 的内容设为与 BRANCH AND SAVE相同。此外,该指令将扩展寻址模式位(PSW的位31)放置在该寄存器的位位置63中。· BRANCH AND SET MODE,如果Rl不为0,执行以下操作。在24位或31位模式下, 该指令将PSW的位32放置在通用寄存器Rl的位位置32中,并且使该寄存器的位0_31和 33-63保持不变。注意,如果该寄存器包含指令地址,则该寄存器的位63应该为0。在64 位模式下,该指令将PSW的位31 (1)放置在通用寄存器Rl的位位置63中,并且使该寄存器 的位0-62保持不变。 当R2不为0时,两个指令均设置寻址模式并执行分支操作,如下所示。通用寄 存器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寄存器指定的结果相同。INTERRUPTIONS(CONTEXT SWITCH)中断机制允许CPU根据配置外部、配置内部或CPU本身内的条件更改其状态。为 了对高优先级条件做出快速响应以及迅速识别条件的类型,将中断条件分为六类外部、输 入/输出、机器检查、程序、重新启动和系统管理程序调用。中断包括将当前PSW存储为旧PSW、存储标识中断原因的信息,以及取回新的PSW。 处理根据新的PSW的指定恢复。在中断发生时存储的旧PSW —般包含如果中断不发生,可 能接下来要执行的指令的地址,因此允许恢复已中断的程序。对于程序中断和系统管理程 序调用中断,所存储的信息还包含标识最后执行的指令的长度的代码,因此允许程序对中 断原因做出响应。对于其正常响应是重新执行导致中断的指令的某些程序条件,指令地址 直接标识最后执行的指令。除了重新启动以外,仅当CPU处于运行状态时才可发生中断。当CPU处于停止或 运行状态时,可发生重新启动中断。任何访问异常都被识别为与所述异常关联的指令执行的一部分。当CPU尝试从不 可用的位置执行预取或检测到某些访问异常状况,但是分支指令或中断更改了指令顺序, 从而致使指令未被执行时,将不会识别到访问异常。每个指令都可导致识别到由指令取回 造成的访问异常。此外,访问存储装置中的操作数可导致与指令执行关联的访问异常。当在 没有遇到异常的情况下无法取回第一指令半字时,将指示由取回指令造成的访问异常。当 指令的第一半字没有访问异常时,可针对根据指令的前两位指定的指令长度的附加半字指 示访问异常;但是,当可在不访问指令的第二或第三半字的情况下完成操作时,无法预测是 否针对未使用部分指示访问异常。由于指令取回访问异常指示是所有指令所共有的,因此 其未包括在个别指令定义中。除了在个别指令描述中指出的情况之外,以下规则适用于与访问操作数位置关联 的异常。对于取回型操作数,仅需要针对完成操作所需的操作数部分指示访问异常。无法 预测是否针对那些并非完成操作所需的取回型操作数部分指示访问异常。对于存储型操作数,即使能够在不使用无法访问的操作数部分的情况下完成操 作,仍然会针对整个操作数识别到访问异常。当存储型操作数的值被定义为无法预测时,无 法预测是否指示访问异常。每当访问操作数位置可导致识别到访问异常时,单词“访问”都 会包括在指令描述内的程序异常列表中。该表项还指示哪个操作数可导致识别到异常以及 是在对该操作数位置执行取回还是存储访问操作时识别到异常。仅针对为每个特定指令定 义的操作数部分识别访问异常。当CPU尝试使用无效操作码执行指令时,将识别到操作异常。所述操作码可能未 赋值,或者CPU上未安装具有所述操作码的指令。操作将被取消。指令长度代码为1、2或 3。将通过程序中断代码OOOlhex (或OOSlhex,如果指示并发PER事件)指示操作异常。某些模型可提供本出版物中未介绍的指令,例如出于协助目的或作为专用或自定 义功能一部分而提供的那些指令。因此,本出版物中未介绍的操作码不一定导致识别到操 作异常。而且,这些指令可导致设置操作模式或以其他方式更改机器以便影响后续指令的执行。为了避免出现此类操作,应仅当需要与本出版物中未介绍的操作码关联特定功能时, 才执行带有此类操作码的指令。当以下任一条件为真时,将识别到规范异常1.将1引入PSW的未赋值位位置(也就是说,位位置0、2-4、24_30或33_36中的 任意位置)。将此异常作为早期PSW规范异常进行处理。2.将1引入PSW的位位置12。将此异常作为早期PSW规范异常进行处理。3. PSW在以下任何一种情况下都无效a. PSff的位31为1并且位32为0。b. PSff 的位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 MESSAGEDIGEST、 COMPUTE LAST MESSAGE DIGEST 或 COMPUTE MESSAGE AUTHENTICATION CODE,并且通用寄存器0的位57-63中的功能代码包含未赋值或未安装的 功能代码。11.尝试执行 CIPHER MESSAGE 或 CIPHER MESSAGE WITHCHAINING,并且 Rl 或 R2 字段指定奇数编号的寄存器或通用寄存器0。12.尝试执行 CIPHER MESSAGE、CIPHER MESSAGE WITHCHAINING、COMPUTE INTERMEDIATE MESSAGEDIGEST 或COMPUTE MESSAGE AUTHENTICATI0NC0DE,并且第二操作数 长度不是指定功能的数据块大小的倍数。此规范异常条件不适用于查询功能。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具有二进制值
200000和0110-1111中的任意一个值。36.尝试执行 COMPUTE INTERMEDIATE MESSAGEDIGEST、COMPUTE LAST MESSAGE DIGEST 或 COMPUTE MESSAGE AUTHENTICATION CODE,并且满足以下任一条件· R2字段指定奇数编号的寄存器或通用寄存器0。 通用寄存器0的位56不为0。37.尝试执行 CONVERT HFP TO BFP、CONVERT TO FIXED (BFP 或 HFP)或 LOAD FP INTEGER (BFP),并且M3字段未指定有效修改符。38.尝试执行DIVIDE TO INTEGER,并且M4字段未指定有效修改福。39.尝试执行EXE⑶TE,并且目标地址为奇数地址。40.尝试执行EXTRACT STACKED STATE,并且当未安装ASN和LX重用工具时,通用 寄存器R2的位位置56-63中的代码大于4 ;或者当安装所述工具之后,所述代码大于5。41.尝试执行FIND LEFTMOST ONE,并且Rl字段指定奇数编号的寄存器。42.尝试执行INVALIDATE DAT TABLE ENTRY,并且通用寄存器R2的位44-51不全 为0。43.尝试执行LOAD FPC,并且与FPC寄存器中不支持的位对应的第二操作数的一 个或多个位为1。44.尝试执行LOAD PAGE-TABLE-ENTRY ADDRESS并且指令的M4字段包含二进制值 0000-0100以外的任何值。45.尝试执行LOAD PSff并且第二操作数地址处的双字的位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 或 TOOGRAMTRANSFER WITH 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,并且位
2164-96不全为0。-位31和32分别为1和0。-位127为1。·参数列表的位0-12不全为0。55.尝试执行SEARCH STRING UNICODE,并且通用寄存器0的位32-47不全为0。56.尝试执行 SET ADDRESS SPACE CONTROL 或 SETADDRESS SPACE CONTROL FAST, 并且第二操作数地址的位52和53不全为0。57.尝试执行SET ADDRESSING MODE (SAM24),并且PSW中的未更新指令地址的位 0-39,PSff 的位 64-103 不全为 0。58.尝试执行SET ADDRESSING MODE (SAM31),并且PSW中的未更新指令地址的位 0-32,PSff的位64-96不全为0。59.尝试执行SET CLOCK PROGRAMMABLE FIELD,并且通用寄存器0的位32-47不 全为0。60.尝试执行SET FPC,并且与FPC寄存器中不支持的位对应的第一操作数的一个 或多个位为1。61.尝试执行STORE SYSTEM INFORMATION,通用寄存器0中的功能代码有效,并 且以下任一条件为真·通用寄存器0的位36-55以及通用寄存器1的位32-47不全为 0。·第二操作数地址未在4K字节边界上对齐。62.尝试执行 TRANSLATE TWO TO ONE 或 TRANSLATETWO TO TWO,并且通用寄存器 R1+1中的长度未指定偶数个字节。63.尝试执行UNPACK ASCII,并且Ll字段大于31。64.尝试执行UNPACK UNICODE,并且Ll字段大于63或为偶数。65.尝试执行UPDATE TREE,并且通用寄存器4和5的初始内容不是8的倍数(在 24位或31位寻址模式下)或者不是16的倍数(在64位寻址模式下)。由旧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。当异常由 SET ADDRESSINGMODE (SAM24, SAM31) 引入时,ILC为1,或者如果SET ADDRESSINGMODE是EXECUTE的目标,则ILC为2。当异常 由 SET SYSTEM MASK 或 STORE THEN OR SYSTEM MASK 引入时,ILC 为 2。程序中断用于报告在程序执行过程中发生的异常和事件。程序中断导致将旧PSW 存储在实位置336-351中并从实位置464-479取回新的PSW。中断的原因由中断代码标识。 中断代码放置在实位置142-143处,指令长度代码放置在实位置141处的字节的位位置5 和6中,而其余的位被设为0,0存储在实位置140处。出于某些原因,标识中断原因的附加 信息存储在实位置144-183处。如果已安装PER-3工具,则作为程序中断操作的一部分, 将中断_事件_地址寄存器的内容放置在实存储位置272-279中。除了 PER事件和加密操 作异常之外,导致中断的条件由放置在中断代码的最右侧7个位位置中的编码值指示。一 次只能指示一个条件。中断代码的位0-7被设为0。通过将中断代码的位8设为1来指示 PER事件。当这是唯一条件时,位0-7和9-15也被设为0。当与其他程序中断条件同时指 示PER事件时,位8为1,而位0-7和9-15针对其他条件设置。加密操作异常由中断代码0119 hex或0199 hex (如果还指示PER事件)指示。当存在对应的掩码位时,仅当此掩码位为1时才发生程序中断。PSW中的程序掩码 控制四种异常,FPC寄存器中的IEEE掩码控制IEEE异常,控制寄存器0中的位33控制SET SYSTEM MASK是否导致特殊操作异常,控制寄存器8中的位48-63控制因监视事件导致的异 常,掩码层次结构控制因PER事件导致的异常。当任何控制掩码位为0时,将忽略条件;条 件不会保持挂起状态。当用于程序中断的新的PSW具有PSW格式错误或导致在指令取回过程中识别到异 常时,可能会发生一系列程序中断。被指示为程序异常的某些条件还可以由通道子系统识别,在此情况下,在子通道 状态字或扩展状态字中指示异常。当数据异常导致程序中断时,数据异常代码(DXC)存储在位置147处,0存储在位 置144-146处。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异常。作 为另一实例,如果存在针对DXC3 (DFP指令)和DXC 1 (AFP寄存器)两者的条件,则报告DXC 3。当规范异常和AFP寄存器数据异常都适用时,无法预测将报告哪个异常。当CPU尝试引用配置中不可用的主存储位置时,将识别到寻址异常。当未安装位 置、存储单元不在配置中、或者存储单元断电时,配置中的主存储位置不可用。指定配置中 不可用的存储位置的地址被称为无效地址。当指令的地址无效时,将取消操作。类似地, 当EXECUTE的目标指令的地址无效时,将取消操作。此外,如果在访问表或表表项时遇到寻 址异常,将取消操作单元。规则所应用的表和表表项包括可分派单元控制表、主ASN第二 表表项,以及访问列表、区第一表、区第二表、区第三表、段表、页表、链接表、链接第一表、链 接第二表、表项表、ASN第一表、ASN第二表、授权表、链接栈和跟踪表中的表项。如果在引 用区第一表、区第二表、区第三表、段表以及页表时遇到寻址异常,并且所述引用包括动态 地址转换的隐式引用以及与执行 LOAD PAGE-TABLE-ENTRY ADDRESS、LOAD REAL ADDRESS、 STORE REAL ADDRESS以及TESTPROTECTION关联的引用,则这些异常将导致操作取消。类似 地,如果在隐式执行访问寄存器转换或在作为LOAD PAGE-TABLE-ENTRYADDRESS,LOAD REAL ADDRESS,STORE REAL ADDRESS、TESTACCESS 或 TEST PROTECTION 的一部分执行访问寄存器 转换时遇到访问可分派单元控制表、主ASN第二表表项、访问列表、ASN第二表或授权表的 寻址异常,则这些异常将导致操作取消。除了取消其执行的某些特定指令之外,将针对可进 行转换但指定不可用位置的操作数地址终止操作。为了终止,只需更改结果字段。在此上 下文中,术语“结果字段”包括条件码、寄存器以及任何已提供并指定为由指令更改的存储 位置。EXTRACT CACHE ATTRIBUTE 指令参考图8,当取回801并执行EXTRACT CACHE ATTRIBUTE指令(图6)时,将有关 存储子系统303的指定属性804的信息805放置在第一操作数位置806中。所述指令包括8位操作码“EB”、8位操作码扩展“4C”以及寄存器字段Rl、R3和B2及带符号的位移字段 D IH2 IDL2。第一操作数是通过指令的Rl寄存器字段指定的寄存器,并且为64位。第二操作数地址并不用于寻址数据;相反,将64位地址(图7)的最右侧24位视 为指定将哪个属性返回由Rl指定的通用寄存器的代码804。通过将指令的带符号位移字段 (DH2 Il DL2)的符号扩展值与由指令的B2字段(当B2字段不为“0”时)指定的寄存器的值 进行代数相加,计算802第二操作数地址(当B2字段为“0”时,带符号位移字段(DH2 Il DL2) 用作第二操作数地址)。代码定义如下属性指示(Al)第二操作数地址(图7)的位位置56-59包含4位无符号整数,指 示提取高速缓存属性,如下所示0提取拓扑摘要1提取高速缓存的行大小(以字节表示)2提取高速缓存的总大小(以字节表示)3提取高速缓存的组关联性级别4-15 保留级别指示(Li)第二操作数地址(图7)的位位置60-62包含3位无符号整数,指 示要提取其高速缓存属性的高速缓存的级别,0指示一级高速缓存,1指示二级高速缓存等 等。如果未在模型上实现高速缓存级别,将保留其对应的级别指示。类型指示(Tl)第二操作数地址(图7)的位63指示要针对其提取高速缓存属性 的高速缓存的类型,0指示数据高速缓存,1指示指令高速缓存。当高速缓存级别具有统一 的数据和指令高速缓存时,将返回相同的结果,无论类型指示为何。当属性指示为0时,将忽略级别指示和类型指示。忽略第二操作数地址的位0-39。保留第二操作数地址的位40-55,并且它们应包 含0。如果第二操作数地址中的已保留位位置包含1,或者如果指定已保留的属性指示或级 别指示,则通用寄存器Rl的位0-63被设为1。忽略通用寄存器R3的内容,但R3字段应指定寄存器0 ;否则,将来程序可能无法 兼容运行。当属性指示为0时,将在通用寄存器Rl中返回每个高速缓存级别的摘要。每个摘 要字段为8位,其中寄存器的位0-7包含一级高速缓存的摘要,位8-15包含二级高速缓存 的摘要等等。8位摘要字段的内容如下所示摘要字段
位含义
0-3保留,存储为0
4-5高速缓存范围,如下所示
(00)此级别处不存在高速缓存
(01)高速缓存专用于CPU
(10)高速缓存可由多个CPU共享
(11)保留
6-7当位位置4-5包含非零值时,位位置6_7包含高速缓存类型,如下所示(00)此级别处存在单独的指令高速缓存和数据高速缓存(01)此级别处仅存在指令高速缓存(10)此级别处仅存在数据高速缓存(11)此级别处存在统一的指令和数据高速缓存当位位置4-5包含0时,位位置6-7也包含0。程序异常 操作(如果未安装通用指令扩展工具)保留所有其他代码。如果指定了保留代码,则通用寄存器Rl的位0-63被设为1。 忽略通用寄存器R3的内容,但R3字段应指定寄存器0 ;否则,将来程序可能无法兼容运行。当确定 PREFETCH DATA 和 PREFETCH DATA RELATIVE LONG 指令的放置时,了解高 速缓存行大小非常有用。取决于模型,一级高速缓存可以实现为包含数据和指令的统一高 速缓存(相对于具有单独的指令高速缓存和单独的数据高速缓存的分离式高速缓存)。在 此情况下,功能代码0和1返回相同的大小,该大小是统一高速缓存的行大小。如果模型未 提供数据高速缓存并且功能代码为0,或者如果模型未提供指令高速缓存并且功能代码为 1,则将值0放置在第一操作数位置中。上述内容对于了解一个计算机系统实施例的术语和结构非常有用。本发明并不限 于z/Architecture或其中提供的描述。通过此处的教导,本发明可以有利地应用到其他计 算机制造商的其他计算机体系结构。
权利要求
一种操作计算机的方法,所述方法包括由处理系统的处理器取回针对计算机体系结构定义的高速缓存机器指令,所述高速缓存机器指令包括操作码、操作数标识符,所述操作数标识符标识操作数位置;执行所述高速缓存机器指令,所述执行包括根据高速缓存级别标识符,确定目标高速缓存;根据高速缓存属性标识符,确定要提取的高速缓存属性;从所述目标高速缓存提取所确定的高速缓存属性;将所提取的高速缓存属性保存在所标识的操作数位置中。
2.如权利要求1中所述的方法,其中所述操作数标识符包括标识第一寄存器的第一寄 存器字段,其中确定所述高速缓存属性标识符包括将所述指令的位移字段与所述指令的第二字段所关联的值进行代数相加以确定所述 高速缓存属性标识符。
3.如权利要求1中所述的方法,其中要提取的高速缓存属性包括以下项中的任意一个一个或多个高速缓存的高速缓存拓扑摘要; 所述目标高速缓存的行大小; 所述目标高速缓存的总大小;或 所述目标高速缓存的组关联性级别。
4.如权利要求3中所述的方法,其中所提取的高速缓存拓扑摘要包括一个或多个摘 要,每个摘要用于由所述高速缓存级别标识符指定的级别处的高速缓存,其中对应高速缓 存级别处的高速缓存的摘要包括以下项中的任意一个高速缓存是否存在;高速缓存是否为执行所述指令的处理器的专用高速缓存; 高速缓存是否可以由所述处理系统的其他处理器共享; 高速缓存是否包含单独的指令高速缓存和单独的数据高速缓存; 所述高速缓存是否仅为指令高速缓存; 所述高速缓存是否仅为数据高速缓存;以及 所述高速缓存是否为统一的指令和数据高速缓存。
5.如权利要求1中所述的方法,其中由具有备选计算机体系结构的中央处理单元取回 和执行针对所述计算机体系结构定义的高速缓存机器指令,其中所述方法进一步包括解释所述高速缓存机器指令以标识预定软件例程以便仿真 所述高速缓存机器指令的操作;以及其中执行所述高速缓存机器指令包括执行所述预定软件例程以执行用于执行所述高 速缓存机器指令的方法的各步骤。
6.一种计算机程序产品,所述计算机程序产品包括可由处理电路读取并存储由所述处 理电路执行以实现上述任一权利要求中所述的方法的指令的有形存储介质。
7.一种计算机系统,包括 存储器;与所述存储器通信的处理器,所述处理器包括用于从所述存储器取回指令的指令取回元件以及一个或多个用于执行所取回的指令的执行元件;其中所述计算机系统被配置为执行如权利要求1至5中的任一权利要求所述的方法。
全文摘要
在操作计算机系统的方法中,提供了一种工具以及具有计算机体系结构的高速缓存机器指令,所述高速缓存机器指令用于指定目标高速缓存的高速缓存级别以及目标高速缓存属性以便获取一个或多个目标高速缓存的高速缓存属性。所请求的所述目标高速缓存(多个)的高速缓存属性保存在寄存器中。
文档编号G06F9/312GK101911013SQ200980101768
公开日2010年12月8日 申请日期2009年1月7日 优先权日2008年1月11日
发明者D·格雷纳, T·斯莱格尔 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1