CN102713838B - 无停顿键设置工具 - Google Patents
无停顿键设置工具 Download PDFInfo
- Publication number
- CN102713838B CN102713838B CN201080056684.7A CN201080056684A CN102713838B CN 102713838 B CN102713838 B CN 102713838B CN 201080056684 A CN201080056684 A CN 201080056684A CN 102713838 B CN102713838 B CN 102713838B
- Authority
- CN
- China
- Prior art keywords
- instruction
- storage
- key
- pause
- processor
- 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
- 238000003860 storage Methods 0.000 claims abstract description 182
- 238000000034 method Methods 0.000 claims description 77
- 230000015654 memory Effects 0.000 claims description 72
- 230000008569 process Effects 0.000 claims description 46
- 230000006870 function Effects 0.000 claims description 38
- 230000008859 change Effects 0.000 claims description 34
- 230000004224 protection Effects 0.000 claims description 32
- 230000004044 response Effects 0.000 claims description 31
- 230000005055 memory storage Effects 0.000 claims description 30
- 238000004088 simulation Methods 0.000 claims description 7
- 230000008878 coupling Effects 0.000 claims description 3
- 238000010168 coupling process Methods 0.000 claims description 3
- 238000005859 coupling reaction Methods 0.000 claims description 3
- 230000001737 promoting effect Effects 0.000 claims description 3
- 230000002265 prevention Effects 0.000 claims 2
- 230000007246 mechanism Effects 0.000 abstract description 10
- 238000012545 processing Methods 0.000 description 29
- 238000004590 computer program Methods 0.000 description 17
- 239000000872 buffer Substances 0.000 description 15
- 238000005192 partition Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 13
- VIKNJXKGJWUCNN-XGXHKTLJSA-N norethisterone Chemical compound O=C1CC[C@@H]2[C@H]3CC[C@](C)([C@](CC4)(O)C#C)[C@@H]4[C@@H]3CCC2=C1 VIKNJXKGJWUCNN-XGXHKTLJSA-N 0.000 description 11
- 238000013519 translation Methods 0.000 description 11
- 238000006243 chemical reaction Methods 0.000 description 8
- 230000002159 abnormal effect Effects 0.000 description 7
- 230000008901 benefit Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 230000000295 complement effect Effects 0.000 description 4
- 238000002790 cross-validation Methods 0.000 description 4
- 238000007689 inspection Methods 0.000 description 4
- 230000007774 longterm Effects 0.000 description 4
- 230000005291 magnetic effect Effects 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 230000000712 assembly Effects 0.000 description 3
- 238000000429 assembly Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000006073 displacement reaction Methods 0.000 description 3
- 238000012790 confirmation Methods 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000000630 rising effect Effects 0.000 description 2
- 208000015976 Corneal dystrophy-perceptive deafness syndrome Diseases 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000003607 modifier Substances 0.000 description 1
- 210000003733 optic disk Anatomy 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000037361 pathway Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000010926 purge Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
- 210000003813 thumb Anatomy 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
-
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1466—Key-lock mechanism
- G06F12/1475—Key-lock mechanism in a virtual system, e.g. with translation means
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- 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
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/3009—Thread control 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
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- 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
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4418—Suspend and resume; Hibernate and awake
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Storage Device Security (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
提供一种无停顿键设置工具,其使能在不使多处理器系统的其他处理器的操作停顿的情况下执行存储键操纵。借助此工具,更新可由所述多处理器系统的多个处理器访问的存储键而不使所述多个处理器的操作停顿。由于在不使其他操作停顿的情况下更新存储键,处理器可以观察到所述存储键在所述处理器执行的操作开始时具有一个值,并且在该操作结束时具有第二值。提供一种机制以使得该操作能够继续,从而避免严重异常。
Description
背景技术
本发明一般地涉及促进计算环境中的处理,具体地说,涉及促进与设置在计算环境中使用的存储键(storage key)关联的处理。
在诸如基于位于纽约阿蒙克的国际商业机器公司的的多处理器系统之类的计算环境中,采用存储键以促进所述环境中的处理。作为一个实例,存储键与实际存储装置的每个块(也称为帧)关联。此类键关联提供用于分离存储块的可靠性机制,确保在一个键中执行的程序不会不正确地存储在具有不同键的块中,或取决于键中的控件,不会从具有不同键的块中执行取回。存储键还可以为操作系统提供关于已引用和更改哪些块的指示,因而允许操作系统确定哪些块可能需要被写入到辅助存储装置。
可以由在计算环境中执行的指令设置(更新)存储键。作为实例,在中,Set Storage Key Extended指令和Perform FrameManagement Function指令操纵可由所述计算环境的多个处理器访问的存储键。
为了提高系统性能,处理器可以在本地(处理器特定的)区域中缓冲存储键的子集。但是,当设置存储键(可能更改也可能不更改实际键值)时,多处理器配置中的所有处理器通常将同时有效地观察到更改,以便丢弃陈旧的本地键副本。为了促进此处理,将执行停顿(quiesce)操作,其中用于操纵存储键的指令的启动方将停顿信号发送给计算环境的其他处理器。响应于接收到该信号,其他处理器停顿其处理、清除本地缓存的键副本,并确认所述清除。当接收到停顿信号的所有处理器均已确认时,启动方将存储键设置为期望值,并向其他处理器发送取消停顿信号,使得其他处理器可以重新开始执行。
发明内容
在更新存储键时使用的停顿操作对系统性能产生负面影响。因此,根据本发明的一个方面,提供了一种工具,其使能在不使可以观察到存储键的其他处理器停顿的情况下操纵所述存储键。所有处理器不必再同时有效地观察更改。
通过提供一种如权利要求1中所述的用于促进计算环境中的处理的方法而克服了现有技术的缺点并提供了其他优点。
在此还描述和要求保护了一种对应于如权利要求1中所述的方法的系统和计算机程序。
通过本发明的技术实现了其他特性和优点。在此详细描述了本发明的其他实施例和方面,并将它们视为要求保护的发明的一部分。
附图说明
在说明书结尾处的权利要求中作为实例具体指出并明确要求保护本发明的一个或多个方面。从下面结合附图的详细说明,本发明的上述和其他目标、特性和优点是显而易见的,这些附图是:
图1A示出了结合并使用本发明的一个或多个方面的计算环境的一个实施例;
图1B示出了根据本发明的一个方面的图1A的计算环境的处理器的一个实例;
图1C示出了可以结合并使用本发明的一个或多个方面的逻辑分区系统的一个实例;
图2示出了根据本发明的一个方面的与图1A或图1C的控制器关联的进一步细节的一个实施例;
图3示出了根据本发明的一个方面的可以仿真另一计算机的主计算机的一个实施例;
图4示出了根据本发明的一个方面的存储键的各种组件的一个实例;
图5以图形方式示出了停顿操作对计算环境的处理器的影响的一个实例;
图6以图形方式示出了根据本发明的一个方面的在不停顿任何处理器的情况下操纵存储键的影响的一个实例;
图7A示出了根据本发明的一个方面使用的Set Storage Key Extended(SSKE)指令的格式的一个实施例;
图7B示出了根据本发明的一个方面的与图7A的SSKE指令的M3操作数关联的字段的一个实施例;
图8示出了根据本发明的一个方面的与无停顿SSKE指令关联的逻辑的一个实施例;
图9A-9B示出了根据本发明的一个方面的用于管理受无停顿存储键更新影响的处理的逻辑的一个实施例;
图10示出了结合本发明的一个或多个方面的计算机程序产品的一个实施例;
图11示出了结合并使用本发明的一个或多个方面的主计算机系统的一个实施例;
图12示出了结合并使用本发明的一个或多个方面的计算机系统的其他实例;
图13示出了包含结合并使用本发明的一个或多个方面的计算机网络的计算机系统的另一个实例;
图14示出了结合并使用本发明的一个或多个方面的计算机系统的各种元件的一个实施例;
图15A示出了结合并使用本发明的一个或多个方面的图14的计算机系统的执行单元的一个实施例;
图15B示出了结合并使用本发明的一个或多个方面的图14的计算机系统的分支单元的一个实施例;
图15C示出了结合并使用本发明的一个或多个方面的图14的计算机系统的加载/存储单元的一个实施例;以及
图16示出了结合并使用本发明的一个或多个方面的仿真的主计算机系统的一个实施例。
具体实施方式
根据本发明的一个方面,提供一种无停顿键设置工具,其使能在不使多处理器系统的其他处理器的操作停顿的情况下执行存储键操纵。借助此工具,更新可由所述多处理器系统的多个处理器访问的存储键而不使所述多个处理器的操作停顿。由于在不使其他操作停顿的情况下更新存储键,处理器可以观察到所述存储键在所述处理器执行的操作开始时具有一个值,并且在该操作结束时具有第二值。根据本发明的一个方面对此进行管理,其中提供一种机制以使得该操作能够继续,从而避免严重异常。
存储键例如是具有各种字段的控制结构,或者它可以是任何用于保护存储装置的属性或资源。如在此使用的,存储装置指计算机系统的存储器,例如中央或主存储器和/或高速缓冲存储器。停顿例如是可以被执行以确保配置范围内的资源更新立即对配置的CPU可见的序列化手段。由一个CPU启动的停顿操作导致在配置中的其他CPU上发生以下操作:完成正在该CPU上执行的任何指令或操作单元;丢弃正在被更新的配置范围内的资源的本地缓存的副本;以及延迟指令执行恢复,直到配置范围内的资源的更新对CPU可见。
在一个实施例中,针对先前需要停顿的指令实现所述无停顿工具。作为实例,国际商业机器公司提供的Set Storage Key Extended(SSKE)指令和Perform Frame Management Function(PFMF)指令传统上需要停顿以执行存储键更新。但是,根据本发明的一个方面,这些指令以及可能其他指令可以选择性地实现为无停顿。在本发明的一个方面中,每个指令可以在两种处理模式(停顿和无停顿)下执行,并且通过在指令中设置指示器来选择针对给定指令执行使用的特定模式。
参考图1A描述了结合并使用本发明的一个或多个方面的计算环境的一个实施例。作为一个实例,所述计算环境是多处理器系统,例如基于位于纽约阿蒙克的国际商业机器公司提供的的对称多处理器系统(SMP)。作为一个特定实例,所述系统是国际商业机器公司提供的服务器。在标题为Principles of Operation”操作原理)(第SA22-7832-07号IBM刊物,2009年2月)的出版物中描述了和是位于美国纽约阿蒙克的国际商业机器公司的注册商标。在此使用的其他名称可能是国际商业机器公司或其他公司的注册商标、商标或产品名称。
作为一个实例,多处理器系统100包括多个处理器110、存储控制器120和中央存储装置130。处理器110经由一条或多条总线115相互耦合并经由存储控制器120耦合到中央存储装置130。如图1B中示出的每个处理器例如包括中央处理单元(CPU)140,CPU 140可以例如经由一条或多条总线或其他连接144耦合到本地高速缓存142。
在另一个实施例中,所述系统包括一个或多个分区或区域。例如,所述系统是国际商业机器公司提供的逻辑分区服务器。在此实例中,如图1C中所示,服务器150例如包括一个或多个分区或区域152(例如,逻辑分区LP0-LP3)、系统管理程序156(例如,逻辑分区管理器)以及一个或多个中央处理器158(例如,CP0-CP3)。尽管示出四个分区和四个中央处理器,但所述系统可以包括更多或更少分区和/或更多或更少中央处理器。
每个逻辑分区152能够用作单独的系统。也就是说,每个逻辑分区可以独立重设,初始通过操作系统加载(如果需要),并与不同程序一起运行。在逻辑分区中运行的操作系统或应用程序看似可以访问整个系统,但实际上,只有系统的一部分可用。硬件和许可内码(也称为微代码和毫代码)的组合可阻止某个逻辑分区中的程序干扰不同逻辑分区中的程序。这允许多个不同逻辑分区以时间分片方式在一个或多个物理处理器上运行。在此特定实例中,每个逻辑分区具有常驻操作系统160,一个或多个逻辑分区的操作系统160可能不同。在一个实施例中,操作系统160是位于纽约阿蒙克的国际商业机器公司提供的操作系统。是位于纽约阿蒙克的国际商业机器公司的注册商标。
每个逻辑分区可以包括一个或多个中央处理器。中央处理器158是分配给逻辑分区的物理处理器资源。例如,逻辑分区152包括一个或多个逻辑处理器,每个逻辑处理器表示分配给该分区的全部或某一份额的物理处理器资源。
逻辑分区152由系统管理程序156管理,系统管理程序156通过在处理器158上运行的微代码实现。逻辑分区152和系统管理程序156都包括一个或多个驻留在与中央处理器关联的中央存储装置的相应部分中的程序。系统管理程序156的一个实例是位于纽约阿蒙克的国际商业机器公司提供的Processor Resource/Systems Manager(PR/SM)。
在一个实施例中,所述服务器耦合到存储控制器170,存储控制器170包括负责在发出请求的不同处理器之间进行仲裁的集中逻辑。例如,当控制器170收到请求时,它确定请求方是此请求的启动方,而其他处理器是接收方;它广播消息;以及以其他方式处理请求。参考图2描述了关于存储控制器(例如,存储控制器120或存储控制器170)的进一步细节。
图2示出了耦合到多个处理器(CPU)201的控制器200的一个实例。在此实例中,示出两个中央处理器。但是将理解,可以将两个以上的处理器耦合到控制器200。控制器200包括各种控件,一个此类控件例如是系统序列化控件202。所述系统序列化控件用于确保要序列化的操作(例如,更新操作)被序列化,因为在计算环境中一次仅进行一个(或有限数量的)此类操作。它还监视此操作的事件序列,并且是实现停顿功能的机制的一部分。
控制器200通过各种接口耦合到每个中央处理器。例如,中央处理器中的许可内码使用接口204向所述控制器发送指定要采取的动作的“控制”命令,并发送从所述控制器返回信息的“读出”命令。另一个接口是响应总线206,其用于从所述控制器返回“读出”命令的信息。所述响应总线还用于传送“控制”命令的命令状态,并且可以从所述控制器中的多个源(包括系统序列化控件)设置。中央处理器可以使用此接口读出控制器200中的系统序列化控件的状态。
其他接口是接口208,所述控制器使用此接口向每个处理器发送命令。该接口也可以从所述控制器中的多个源(包括系统序列化控件202)控制。另一接口是接口210,其向中央处理器201的高速缓存控件212提供信号。高速缓存控件212响应于所述信号而处理命令。在一个实例中,高速缓存控件212处理影响一个或多个缓冲区(例如,转换后备缓冲区(TLB)213)的命令。
除了高速缓存控件212之外,处理器201包括各种其他控件,例如包括中断控件220和执行控件222。响应于特定事件,中断控件220导致在CPU中挂起内部中断,这又导致执行控件220在下一个可中断点暂停程序指令处理。根据本发明的一个方面,中断控件220包括用于判定是否阻止保护异常的标志223,如下面所描述。
响应于中断,执行控件222调用许可内码例程以设置广播操作允许锁存器224,从而使高速缓存控件212能够处理挂起命令。
中央处理器201还包括指示是否停顿该中央处理器的CPU停顿锁存器226。
上述计算环境仅为实例。可以在不偏离本发明的精神的情况下进行许多变化。例如,所述环境不需要基于而是可以基于Intel、Sun Microsystems以及其他公司提供的其他架构。此外,环境可以包括仿真器(例如,软件或其他仿真机制),其中仿真特定架构或其子集。在此类环境中,仿真器的一个或多个仿真功能可以实现本发明的一个或多个方面,尽管执行所述仿真器的计算机可能具有不同于被仿真的能力的架构。作为一个实例,在仿真模式下,对被仿真的特定指令或操作进行解码,并构建适当的仿真功能以实现单个指令或操作。
参考图3描述了仿真环境的进一步细节。作为一个实例,主计算机300能够仿真其他架构和/或其他计算机的处理能力。例如,主计算机300基于Intel架构;RISC架构,例如PowerPC;Sun Microsystems提供的SPARC架构;或其他架构,并能够仿真的或或其他实体的其他架构。
主计算机300例如包括存储器302,其用于存储指令和数据;指令取回单元304,其用于从存储器302取回指令,并可选地为取回的指令提供本地缓冲;指令解码单元306,其用于从指令取回单元304接收指令并确定已取回的指令的类型;以及指令执行单元308,其用于执行所述指令。执行可以包括将数据从存储器302加载到寄存器;将数据从寄存器存储回存储器;或如解码单元所确定的那样执行某种类型的算术或逻辑运算。
在一个实例中,以软件实现上述每个单元。例如,所述单元执行的操作可作为仿真器软件中的一个或多个子例程实现。在另一个实例中,以固件、硬件、软件或它们的某种组合实现所述操作中的一个或多个。
此外,尽管参考仿真描述了图3,但图3的环境无需是仿真环境。在另一个实例中,在本机环境中执行指令,并以硬件、固件、软件或它们的某种组合实现所述操作。
如上所述,在一个实施例中,每个存储块(例如,实际或绝对存储的每个4k块)都具有与之关联的存储键。存储键提供用于分离存储块的可靠性机制,确保在一个键中执行的程序不会意外地存储在具有不同键的块中。此外,存储键为操作系统提供关于已引用和更改哪些块的指示,因此允许操作系统判定哪些块可能需要被写入辅助存储装置。
参考图4描述了存储键的一个实例。存储键400例如包括访问控制(ACC)组件402、取回保护(F)组件404、引用(R)组件406以及更改(C)组件408,下面将描述每个组件:
访问控制位(ACC)402(例如,位0-3):如果引用受到键控保护,则存储信息时,或从防止取回的位置取回信息时,将访问控制位与访问键(例如,程序状态字的访问键或来自指令操作数的访问键)匹配。
取回保护位(F)404(例如,位4):如果引用受到键控保护,则取回保护位控制是否向取回型引用应用键控保护;0指示仅监视存储型引用并允许通过任意访问键取回;1指示向取回或存储两者应用键控保护。指令取回和操作数取回之间没有区别。
引用位(R)406(例如,位5):每次引用对应存储块中的位置以存储信息或取回信息时,通常将引用位设置为1。
更改位(C)408(例如,位6):每次在对应存储块中的位置存储信息时,将更改位设置为1。
存储键并非可寻址存储装置的一部分。因此,在一个实例中,使用指令设置存储键。一个此类指令是Set Storage Key Extended指令,在标题为“z/Architecture Principles of Operation”(z/Architecture操作原理)(IBM第SA22-7832-07号出版物,2009年2月)的出版物中描述了此指令的一个实施例。此指令设置存储键的所有组件,即使一个或多个组件被更新为与之前相同的值。此外,此指令需要使系统序列化以确保所有CPU观察到键更改。所述序列化使用停顿操作。
在其他实施例中,可以使用条件SSKE指令设置存储键。当环境允许时,此指令允许程序有条件地绕过例如引用组件、更改组件或二者的更新。即,软件(例如,操作系统程序)可以指示无需更新这两个组件之一或全部。当SSKE指令设置的访问键和取回保护控件与键中当前被更新的那些组件匹配时,这允许CPU在实施方式中的灵活性。此指令选择性地使用停顿操作,具体取决于被设置的字段。但在许多情况下,软件需要更改存储键的访问控制和取回保护控件,因此无法使用条件SSKE。
参考图5描述了与使用停顿操作的Set Storage Key Extended指令关联的处理的一个实例的概况。如所示出,在此特定实例中,存在四个中央处理单元CPU0–CPU3。CPU0执行SSKE操作(500)。因此,它在编号1处向所有其他中央处理单元启动停顿操作。所有当前操作单元完成时,配置中的其他CPU确认收到停顿(例如,编号2a、编号2b、编号2c)。确认之后,每个CPU清除所有本地缓存的键副本。CPU0之外的CPU可以继续执行不需要访问受SSKE影响的块的操作(编号3a和编号3b)。但是,如果CPU需要访问其中正在设置键的同一块,则后续操作将延迟(502)。
SSKE指令的执行被延迟(编号4),直到所有CPU均已确认收到停顿,此时可以设置块的存储键(编号5)。执行SSKE的CPU然后向其他CPU发送信号通知取消停顿(编号6)。对于需要访问其中正在设置键的同一块的CPU2,后续操作被延迟(编号7),直到发送信号通知取消停顿。
据估计,此停顿操作在大型多处理器配置中将导致显著延迟。因此,根据本发明的一个方面,提供了一种不执行停顿的SSKE操作。这在图6中示出。在此图中,假设以下条件:
A、B和C是包含在单个4K字节块中的上升的存储位置。在此实例中,该块的键最初是除了1之外的任何事物。
不向接收方CPU广播停顿,但启动方CPU向接收方CPU发送交叉验证(XI)信号以导致接收方CPU清除所有缓存的键副本。
SSKE的新控件(编号1)(将在下面描述)实现无停顿操作。如果该位为0或如果M3操作数未被编码,则执行原始停顿操作。
键的设置遵循现有规则。
在CPU 0设置键并向其他CPU发送交叉验证信号(600)之后,CPU1可以在通用寄存器3中观察到新键(编号2),并观察到由同时在CPU 2中执行的MVCL(Move Character Long)设置的更改位。
在操作开始时执行操作单元的所有键检查。对操作单元的后续访问使用最初观察到的键(编号3)。假设CPU 2的PSW键初始与包含A的块的键匹配,则即使在CPU0更改所述键之后MVCL也继续执行。
尽管CPU3可以在通用寄存器5中观察到新键,但取回到通用寄存器7和8中的结果(编号4)可以分别包含旧/旧、旧/新、新/旧或新/新数据,具体取决于MVCL的进度和执行取回的时间。
根据本发明的一个方面,在SSKE执行时判定特定SSKE执行是停顿还是无停顿。此判定由在该指令中设置的指示器进行并考虑到与早期配置的兼容性。
参考图7A描述了无停顿Set Storage Key Extended(SSKE)指令700的格式的一个实施例。在此实例中,该指令具有表示寄存器和寄存器操作的RRF格式、扩展操作码字段以及额外的R字段、M字段或二者。无停顿SSKE指令700例如包括:操作码702,其指定Set Storage Key Extended指令(例如,“B22B”);M3操作数704,程序(例如,操作系统)使用其例如判定此SSKE操作是停顿还是无停顿;寄存器指定(R1)706,其选择包括要在存储键中设置的值的寄存器;以及寄存器指定(R2)708,其选择包括要设置的存储键的地址的寄存器。
参考图7B描述了关于M3操作数的进一步细节。在一个实例中,M3操作数704包括:无停顿控制(NQ)710(例如,位0),其控制是否执行停顿操作;引用位更新掩码(MR)712(例如,位1),其控制是否可以绕过对存储键中引用位的更新;更改位更新掩码(MC)714(例如,位2),其控制是否可以绕过对存储键中更改位的更新;以及多块控制(MB)716(例如,位3),其控制是否可以设置多个4k字节存储块的存储键。
响应于例如将无停顿控制设置为1,不执行SSKE指令的停顿操作。参考图8进一步详细地对此进行了描述。初始地,SSKE毫代码(例如,在处理器上执行的垂直微代码)开始执行(步骤800),并判定是否在SSKE指令中启用无停顿控制(查询802)。如果控制未启用(指示要执行SSKE指令的停顿操作),则向系统的所有处理器广播键清除命令以使处理停顿(步骤804)。
此后,启动SSKE指令的处理器等待清除命令被发送到的所有处理器做出响应,告知它们已到达其停顿点(步骤806)。响应于收到所有处理器均已停顿的确认,该启动处理器更改存储键(步骤808)。此外,它广播命令以结束停顿,允许所述处理器再次开始处理(步骤810)。此后,指令结束(步骤812)。
返回查询802,如果启用无停顿控制(指示要绕过停顿),则不执行广播键清除命令、等待处理器停顿以及取消停顿。相反,仅更改存储键,并在一个实施例中,可以向其他CPU发送交叉验证(XI)信号以导致其他CPU清除任何本地缓存的键副本(步骤820)。所述指令结束(步骤812)。此绕过停顿操作与要更改的存储键的字段无关。此绕过的唯一控制是NQ字段的值(并假设支持无停顿)。在判定是否针对所述无停顿工具绕过停顿时,不检查更改存储键的哪些字段和/或这些字段的值。
现在描述关于执行SSKE指令(包括本发明的一个方面的无停顿SSKE指令)的进一步细节。在此说明中,还描述了关于常规条件SSKE工具的细节,以及为了SSKE指令的完整性而描述常规增强型DAT工具。执行SSKE指令导致一个或多个4K字节块的存储键被该指令的第一个操作数寄存器中的值替换。
在执行中,当安装了条件SSKE工具时,可以绕过键设置操作的特定功能。当未安装条件SSKE工具时,或者当安装了条件SSKE工具并且M3字段的MR和MC位均为0时,由通用寄存器R2的内容寻址的4K字节块的存储键被来自通用寄存器R1的位替换。所述指令在不更改条件码的情况下完成。
当安装了条件SSKE工具并且MR和MC位之一或全部为1时,将由通用寄存器R2的内容寻址的存储键的访问控制位、取回保护位以及可选地引用位和更改位与通用寄存器R1中的对应位进行比较。如果比较的位相同,则不对键进行更改;否则,键的选定位被通用寄存器R1中的对应位替换。在任何修改之前,将存储键插入通用寄存器R1,并且由条件码指示结果。
当安装了增强型DAT工具时,取决于M3字段的多块控件的控制,可以针对相同1MB块中的多个4K字节块的存储键重复上述操作。
当未安装无停顿键设置工具时,将忽略M3字段的位0。当未安装条件SSKE工具时,将忽略M3字段的位位置1和2。当未安装增强型DAT工具时,将忽略M3字段的位位置3。
当安装了条件SSKE工具时,处理如下:
1.当M3字段的位1和2(MR和MC位)均为0时,所述指令完成,就像未安装条件SSKE工具一样。由通用寄存器R2的内容寻址的4K字节块的存储键被来自通用寄存器R1的位替换,并且所述指令在不更改条件码的情况下完成。
2.当MR和MC位之一或全部为1时,处理如下:
a.在任何修改之前,由通用寄存器R2寻址的4K字节块的存储键的内容放置在通用寄存器R1的位位置48-54中,并将通用寄存器R1的位55设置为0。此寄存器的位0-47和56-63保持不变。
如果在取回存储键时检测到无效的检查块代码(CBC),则(a)4K字节块的整个存储键被通用寄存器R1的位56-62替换,(b)通用寄存器R1的位位置48-55的内容无法预测,以及(c)通过设置条件码3完成所述指令。
b.将指定的4K字节块的存储键的访问控制位和取回保护位与通用寄存器R1的位56-60中的对应字段进行比较。如果相应字段不相等,则4K字节块的整个存储键被来自通用寄存器R1的位替换,并且通过设置条件码1完成所述指令。
当所述存储键中的访问控制和取回保护位与通用寄存器R1中的相应位相等时,处理如下所述继续。
c.当MR和MC位均为1时,通过设置条件码0完成所述指令。
在这种情况下存储键保持不变。
d.当MR位为0并且MC位为1时,将指定的4K字节块的存储键的引用位与通用寄存器R1的位61进行比较。如果位相等,则通过设置条件码0完成所述指令。在这种情况下存储键保持不变。
如果位不相等,则或者(a)指定的4K字节块的整个存储键被通用寄存器R1中的位替换,并且通过设置条件码1完成所述指令;或者(b)所述存储键的引用位被通用寄存器R1的位61替换,所述键的更改位无法预测,并且通过设置条件码2完成所述指令。无法预测是设置条件码1还是2。
e.当MR位为0并且MC位为1时,将指定的4K字节块的存储键的更改位与通用寄存器R1的位62进行比较。如果位相等,则通过设置条件码0完成所述指令。在这种情况下所述存储键保持不变,只是引用位无法预测。
如果位不相等,则或者(a)指定的4K字节块的整个存储键被通用寄存器R1中的位替换,并且通过设置条件码1完成所述指令;或者(b)所述存储键的更改位被通用寄存器R1的位62替换,所述键的引用位无法预测,并且通过设置条件码2完成所述指令。无法预测是设置条件码1还是2。
当未安装增强型DAT工具时,或者当安装了该工具但多块控制为0时,通用寄存器R2包含实地址。当安装了增强型DAT工具并且多块控制为1时,通用寄存器R2包含绝对地址。
在24位寻址模式下,通用寄存器R2的位40-51指定实际或绝对存储装置中的4K字节块,并且将忽略此寄存器的位0-39和52-63。在31位寻址模式下,通用寄存器R2的位33-51指定实际或绝对存储装置中的4K字节块,并且将忽略此寄存器的位0-32和52-63。在64位寻址模式下,通用寄存器R2的位0-51指定实际或绝对存储装置中的4K字节块,并且将忽略此寄存器的位52-63。
因为是实地址或绝对地址,所以指定存储块的地址不经历动态地址转换。对存储键的引用不会出现保护异常。
从通用寄存器R1的位位置56-62获取新的七位存储键值或其选定位。将忽略此寄存器的位位置0-55和63的内容。当安装了条件SSKE工具,并且MR和MC位之一或全部为1时,位位置63应该包含0;否则,程序将来可能不会兼容地运行。
在操作开始之前执行序列化和检查点同步功能,并在操作完成之后再次执行,只是当安装了条件SSKE工具并且产生的条件码为0时,无法预测是否在操作完成之后执行序列化和检查点同步功能。
当未安装无停顿键设置工具时,或者当安装了该工具并且无停顿控制(NQ)为0时,应用以下步骤:
执行停顿操作。
对于在此指令设置所述键之前或之后由CPU或通道程序完成的对指定4K字节块的任何存储访问而言,也分别在执行此指令之前或之后完成在该块的存储键中将引用和更改位关联地设置为1。
当安装了无停顿键设置工具并且NQ控制为1时,不执行停顿操作。
对无停顿键设置操作(以及其他操作)的存储键的引用被如下处理:
1.每当做出对存储装置的引用并向该引用应用键控保护时,将同时检查与存储位置关联的四个访问控制位和取回保护位。访问控制和取回保护位的检查与对存储位置的引用同时发生,只是当一个CPU针对存储位置执行无停顿键设置工具时,应用以下操作:
●任意CPU对存储位置的访问控制和取回保护位的检查可以在
对该位置的存储引用之前。如果在存储之前检查访问控制和取回保护位,则检查的发生不早于该CPU上的最后一个序列化操作完成之后,并且不早于在任意CPU上针对同一存储位置的最后一个停顿键设置操作。
●当任何其他CPU上的操作单元或指令执行导致多次访问与键设置操作相同的4K字节块时,所述其他CPU仅针对首次引用该块检查访问控制和取回保护位。所述其他CPU不一定针对同一操作单元在该块中的后续访问而检查访问控制和取回保护位。
2.当CPU执行存储时,在完成存储访问的同时在关联的存储键中将更改位设置为1,如该CPU本身所观察到的那样。当CPU或通道程序执行存储时,在完成存储访问之前或之后在关联的存储键中将更改位设置为1,如其他CPU(如果CPU执行存储)或全部CPU(如果通道程序执行存储)所观察到的那样。如其他或全部CPU所观察到的,更改位的设置不早于(1)在执行该存储的CPU通道程序先前执行的最后一个序列化功能之后,以及(2)在配置中的任意CPU执行停顿键设置指令(在存储完成之前最后一次设置关联的存储键)之后。如其他或全部CPU所观察到的,仅当在存储操作之后发生以下任一操作时才一定发生更改位设置:
●执行该存储的CPU或通道程序执行序列化功能。
●由CPU或通道程序执行存储,并且配置中的任意CPU通过在存储访问完成之后执行键设置指令来设置主题(subject)更改位。因存储访问导致的更改位设置在键设置指令进行设置之前发生,只是当安装了无停顿键设置工具时,更改位可能看似在无停顿键设置指令之后被设置。
●存储由CPU执行并已完成或将完成,并且配置中的任意CPU执行COMPARE AND SWAP AND PURGE、INVALIDATE DAT TABLEENTRY或INVALIDATE PAGE TABLE ENTRY指令,这些指令从执行存储的CPU的ALB(ART后备缓冲区)或TLB中清除任何用于完成该存储的表项。将延迟清除指令的完成,直到主题存储和更改位设置已完成。
●由CPU执行存储,并且此CPU通过INSERT STORAGE KEYEXTENDED或RESET REFERENCE BIT EXTENDED指令检查主题更改位。
当使用非停顿控制设置为1的键设置指令时,在一个实例中,程序可以确保其他CPU或通道程序都不引用正在为其设置键的存储装置。例如,在虚拟存储环境中,可以通过只是不将存储位置映射到任何虚拟地址空间来限制对该存储位置的访问。
以下实例示出了在无停顿键设置操作之后观察到已更改的数据。此实例的初始条件如下:
●存储位置A是完全包含在单个4K字节块内的256字节区域。此块的存储键中的访问控制位是二进制0001。B和C是区域A中上升的位置。
●CPU1的PSW键是1。
在CPU2上的无停顿SSKE将A的存储键的访问控制更改为2之前,CPU1确定A是可访问的。
借助停顿SSKE,如果在SSKE之前执行MVC(Move Character),则通用寄存器3和4都将包含新数据,或者如果首先执行SSKE(并且MVC导致键控保护异常),则这两个寄存器都将包含旧数据。
但是,在此使用无停顿SSKE的情况中,加载(L)到通用寄存器3/4的值可以包含旧/旧、旧/新、新/旧或新/新数据,具体取决于CPU 2的取回时间。一旦CPU1确定MVC可访问块A,MVC随即可继续完成而不识别键控保护异常–尽管CPU2更改了此块的键,而CPU1上的MVC继续进行后续访问。
以下实例示出了执行无停顿键设置操作时对更改位的潜在过度指示(over-indication)。在此实例中,CPU1的初始PSW键以及位置BLOCK的存储键中的初始访问控制位均为1。CPU2执行无停顿SSKE以将BLOCK的存储键的访问控制位设置为2。
在此情况中,CPU 1上的ISKE(Insert Storage Kye Extended)的结果指示通用寄存器1的位56-59中的新访问控制值(2),但此寄存器的位62中的更改位可以为1。此更改位过度指示–CPU1上的存储最近设置该位的结果–可能导致包含BLOCK的存储帧的不必要分页。
在特定模型中,可以在无停顿键设置操作之后观察到个体4K字节块的存储键的多个副本。作为一个实例,块的访问控制和取回保护位可以分布在该块的任何高速缓存行的高速缓存目录表项之间。以下实例示出了可能如何观察到同一4K字节块的存储键的不同值。此实例的初始条件如下:
存储位置A在4K字节块中。
此块的存储键中的访问控制位是二进制0001,并且取回保护位是1。
存储位置B与A在同一块中,但在不同的高速缓存行中。
CPU2的PSW键是2。
在此情况中,从CPU 2上的位置B取回可能导致保护异常,尽管从位置A取回已成功。这是因为A的高速缓存目录表项中的键已被使用新键更新,而B的高速缓存目录表项尚未被更新。下面将描述处理此潜在保护异常的一个实例。
以下情况提供了使用无停顿键设置选项时,可如何观察到键的多个副本的另一示例。此实例的初始条件如下:
存储位置A和B是两个单独的4K字节块。
对于A和B两者,访问控制和取回保护位初始分别为二进制0001和1。
CPU3和4的PSW键均为2。
以下情况是可能的:CPU3从位置A的取回成功(指示已观察到CPU1上的SSKE的结果),而CPU3从位置B的取回不成功(指示尚未观察到CPU 2上的SSKE的结果)。此外,还可能的是:CPU 4从位置A和B的取回均成功。如果CPU4从位置B的取回成功,则从位置A的取回不会遇到键控保护异常。
如上所述,根据本发明的一个方面,当在处理器上执行无停顿键设置指令(例如SSKE)时,该指令不会将停顿请求转发到系统的其他CPU。它仅更改存储键(并可能转发交叉验证信号)。其他CPU可以立即或在未来某一时刻看到此更改。响应于此处理,另一处理器可收到延迟访问异常机器检查(DAE)。这对于软件来说通常是致命的并且要加以避免。DAE例如在以下情况下发生:对存储位置的访问在指令执行开始时被允许,但随后在指令执行时变得被禁止。对于硬件执行的指令,这不是问题,因为此类指令通常可以在其执行期间被随时取消。但是,当毫代码(或其他软件)正在执行该指令时,在已修改架构工具(例如,存储装置或寄存器)之后,取消通常变得不可能。因此,根据本发明的一个方面,每个处理器包括用于处理此情况的能力。参考图9A-9B描述了此能力的一个实例。
参考图9A,当毫代码指令(例如对存储装置进行多次访问的指令(例如,move character long(MVCL)指令))开始执行时,它会预测试将由该指令访问的存储位置以确定可访问性(步骤900)。在一个实例中,这包括测试要访问的第一个字节和最后一个字节。如果这些测试成功,则预测试成功。
如果在预测试期间存在问题,则该指令以保护异常结束。但是,如果预测试成功,则该指令可以继续,因为它具有访问这些存储位置的许可(至少隐式具有,如果不是显式具有的话)。
在执行期间,该指令修改存储装置中的位置或寄存器(步骤902)。响应于毫代码修改第一个架构工具,硬件自动采取操作(步骤904)。参考图9B描述了此处理。
响应于毫代码修改第一个架构工具(步骤920),硬件自动设置指示器(步骤922)以指示它处于已经预测试存储位置并已更新第一个架构工具的状态。此指示器例如是中断控件220(图2)中的标志223。
继续参考图9B,该指令继续执行(步骤924),并且响应于硬件设置指示器,如果将呈现键保护异常,则在其中执行指令的硬件将自动阻止键保护异常。如果当另一处理器在毫代码例程中访问此存储装置时,该处理器经由无停顿SSKE更改了存储键,则可能显现键保护异常。
如果硬件确定在此毫代码指令访问由存储键保护的存储装置期间,该存储键已更改(查询926),则硬件判定是否设置了指示器(查询928)。如果未设置指示器,则出现键保护异常(步骤930),并且此毫代码指令不会成功完成。
但是,如果设置了指示器(查询928),则阻止键保护异常(步骤932)。例如,中断控件220确定设置了标志,并向执行控件222发送指示以阻止键保护异常。这使得此毫代码指令能够继续处理(步骤934),尽管它观察到已更改的存储键。
上面详细描述了无停顿键设置工具,其中在不需要停顿操作的情况下设置存储键,而不考虑存储键的字段或这些字段的设置值。因为这是无停顿操作,所以如果确定针对指令被授权访问的存储位置更改了存储键,则提供一种机制以阻止键保护异常。然后由执行此指令的操作系统处理潜在的数据完整性问题。
尽管参考SSKE指令描述了上面的实例,但类似的逻辑也适用于其他更新存储键的指令,例如PFMF指令或其他指令。此外,尽管在此更新了存储键,但在其他实例中,用于保护存储装置的其他类型的属性或资源也可以利用本发明的一个或多个方面。
如本领域的技术人员将理解的,本发明的各方面可以体现为系统、方法或计算机程序产品。因此,本发明的各方面可以采取完全硬件实施例、完全软件实施例(包括固件、驻留软件、微代码等)或组合了在此通常被称为“电路”、“模块”或“系统”的软件和硬件方面的实施例的形式。此外,本发明的各方面可以采取体现在一个或多个计算机可读介质(在介质中包含计算机可读程序代码)中的计算机程序产品的形式。
可以使用一个或多个计算机可读介质的任意组合。所述计算机可读介质可以是计算机可读存储介质。计算机可读存储介质例如可以是(但不限于)电、磁、光、电磁、红外线或半导体系统、装置或设备或它们的任何适合组合。所述计算机可读存储介质的更具体的实例(非穷举列表)包括以下项:具有一条或多条线的电连接、便携式计算机软盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦写可编程只读存储器(EPROM或闪存)、光纤、便携式光盘只读存储器(CD-ROM)、光存储设备、磁存储设备或它们的任何适合组合。在本文档的上下文中,计算机可读存储介质可以是任何能够包含或存储由指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合的程序的有形介质。
现在参考图10,在一个实例中,计算机程序产品1000例如包括一个或多个计算机可读存储介质1002以在其中存储计算机可读程序代码装置或逻辑1004,从而提供和促进本发明的一个或多个方面。
可以使用适当的介质(包括但不限于无线、有线、光缆、RF等或它们的任何适合组合)来传输包含在计算机可读介质中的程序代码。
用于执行本发明的各方面的操作的计算机程序代码可以使用包含一种或多种编程语言的任意组合来编写,所述编程语言包括诸如Java、Smalltalk、C++之类的面向对象的编程语言或者诸如“C”和汇编编程语言或类似的编程语言之类的常规过程编程语言。所述程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为独立的软件包、部分地在用户计算机上并部分地在远程计算机上执行,或者完全地在远程计算机或服务器上执行。在后者的情况中,所述远程计算机可以通过包括局域网(LAN)或广域网(WAN)的任何类型网络与用户的计算机相连,也可以与外部计算机进行连接(例如,使用因特网服务提供商通过因特网连接)。
在此参考根据本发明的实施例的方法、装置(系统)和计算机程序产品的流程图和/或方块图对本发明的各方面进行了描述。将理解,所述流程图和/或方块图的每个方块以及所述流程图和/或方块图中的方块的组合可以由计算机程序指令来实现。这些计算机程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,以便通过所述计算机或其他可编程数据处理装置的处理器执行的指令产生用于实现一个或多个流程图和/或方块图方块中指定的功能/操作的装置。
这些计算机程序指令也可以被存储在可引导计算机、其他可编程数据处理装置或其他设备以特定方式执行功能的计算机可读介质中,以便存储在所述计算机可读介质中的指令产生一件包括实现在所述一个或多个流程图和/或方块图方块中指定的功能/操作的指令的制品。
所述计算机程序指令还可被加载到计算机、其他可编程数据处理装置或其他设备,以导致在所述计算机、其他可编程装置或其他设备上执行一系列操作步骤以产生计算机实现的过程,从而在所述计算机或其他可编程装置上执行的指令提供用于实现在一个或多个流程图和/或方块图方块中指定的功能/操作的过程。
附图中的流程图和方块图示出了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实施方式的架构、功能和操作。在此方面,所述流程图或方块图中的每个方块都可以表示代码的模块、段或部分,所述代码包括用于实现指定的逻辑功能(多个)的一个或多个可执行指令。还应指出,在某些备选实施方式中,在方块中说明的功能可以不按图中说明的顺序发生。例如,示为连续的两个方块可以实际上被基本同时地执行,或者某些时候,取决于所涉及的功能,可以以相反的顺序执行所述方块。还将指出,所述方块图和/或流程图的每个方块以及所述方块图和/或流程图中的方块的组合可以由执行指定功能或操作的基于专用硬件的系统或专用硬件和计算机指令的组合来实现。
除了上述内容之外,本发明的一个或多个方面可以由提议客户环境管理的服务提供商提供、提议、部署、管理、维护等。例如,服务提供商可以为一个或多个客户对执行本发明的一个或多个方面的计算机代码和/或计算机基础架构进行创建、维护、支持等。作为实例,服务提供商又可以根据订阅和/或费用协议从客户接收付款。此外或备选地,服务提供商可以通过向一个或多个第三方销售广告内容而接收付款。
在本发明的一个方面,可以部署应用以执行本发明的一个或多个方面。作为一个实例,应用部署包括提供可操作以执行本发明的一个或多个方面的计算机基础架构。
作为本发明的其他方面,可以部署计算基础架构,包括将计算机可读代码集成到计算系统中,其中所述代码与所述计算系统结合能够执行本发明的一个或多个方面。
作为本发明的再一方面,可以提供一种用于集成计算基础架构的过程,包括将计算机可读代码集成到计算机系统。所述计算机系统包括计算机可读介质,其中所述计算机介质包括本发明的一个或多个方面。所述代码与所述计算机系统结合能够执行本发明的一个或多个方面。
尽管在上面描述了各种实施例,但这些仅为实例。例如,其他架构的计算环境可以结合并使用本发明的一个或多个方面。此外,其他指令或操作可以受益于本发明的一个或多个方面。此外,可以使用其他指令格式和/或可以包括额外、更少或不同的字段。许多变型是可能的。
此外,其他类型的计算环境可以受益于本发明的一个或多个方面。作为一个实例,适合于存储和/或执行程序代码的数据处理系统可以包括至少两个直接或通过系统总线间接耦合到存储元件的处理器。所述存储元件包括例如在程序代码的实际执行期间采用的本地存储器、大容量存储装置以及提供至少某些程序代码的临时存储以减少必须在执行期间从大容量存储装置检索代码的次数的高速缓冲存储器。
输入/输出或I/O设备(包括但不限于键盘、显示器、指点设备、DASD、磁带、CD、DVD、拇指驱动器和其他存储器介质等)可以直接或通过中间I/O控制器与系统耦合。网络适配器也可以被耦合到系统以使所述数据处理系统能够通过中间专用或公共网络变得与其他数据处理系统或远程打印机或存储设备相连。调制解调器、电缆调制解调器和以太网卡只是几种可用的网络适配器类型。
参考图11,示出了用于实现本发明的一个或多个方面的主计算机系统1100的代表性组件。代表性主计算机1100包括一个或多个与计算机存储器(即中央存储装置)1102通信的CPU1101,以及用于与其他计算机或SAN等通信的到存储介质设备1111和网络1110的I/O接口。CPU1101与具有架构指令集和架构功能性的架构兼容。CPU1101可以具有动态地址转换(DAT)1103,其用于将程序地址(虚拟地址)转换为存储器的实地址。DAT通常包括用于缓存转换的转换后备缓冲区(TLB)1107,以便对计算机存储器1102的块的后续访问不需要延迟地址转换。通常,在计算机存储器1102和处理器1101之间采用高速缓存1109。高速缓存1109可以是分级的,具有可用于一个以上CPU的大型高速缓存以及该大型高速缓存与每个CPU之间的较小、较快速的(较低级)高速缓存。在某些实施方式中,较低级高速缓存被拆分以提供单独的低级高速缓存以用于指令取回和数据访问。在一个实施例中,指令取回单元1104经由高速缓存1109从存储器1102取回指令。该指令在指令解码单元1106中被解码并被分派(在某些实施例中与其他指令一起)到一个或多个指令执行单元1108。通常采用多个执行单元1108,例如算术执行单元、浮点执行单元和分支指令执行单元。该指令由执行单元执行,根据需要从指令指定的寄存器或存储器访问操作数。如果从存储器1102访问(加载或存储)操作数,则加载/存储单元1105通常在被执行的指令的控制下处理访问。指令可以在硬件电路或内部微代码(固件)中执行或通过二者的组合执行。
如所指出,计算机系统包括本地(或主)存储装置中的信息,以及寻址、保护以及引用和更改记录。寻址的某些方面包括地址的格式、地址空间的概念、各种类型的地址,以及将一种类型地址转换为另一种类型地址的方式。某些主存储装置包括永久分配的存储位置。主存储装置为系统提供可直接寻址的数据快速访问存储。数据和程序在处理之前被(从输入设备)加载到主存储装置中。
主存储装置可以包括一个或多个较小、较快速访问的缓冲存储装置,有时称为高速缓存。高速缓存通常物理地与CPU或I/O处理器关联。一般而言,程序观察不到物理结构和使用不同存储介质的影响(对性能的影响除外)。
可以针对指令和数据操作数维护单独的高速缓存。在整数边界(称为高速缓存块或高速缓存行,或简称行)上的连续字节中维护高速缓存中的信息。模型可以提供EXTRACT CACHE ATTRIBUTE指令,其返回高速缓存行的大小(以字节为单位)。模型还可以提供PREFETCH DATA和PREFETCH DATA RELATIVE LONG指令,它们影响将存储预取到数据或指令高速缓存中或从高速缓存中释放数据。
存储装置被视为长的水平位串。对于大多数操作,对存储装置的访问按照从左到右的顺序进行。位串被细分为八位单元。一个八位单元称为一个字节,其是所有信息格式的基本构建块。存储装置中的每个字节位置由唯一的非负整数标识,此整数是此字节位置的地址,或简单地说是字节地址。相邻字节位置具有连续地址,在左侧从0开始并按照从左到右的顺序进行。地址是无符号二进制整数并且是24、31或64位。
在存储装置和CPU或通道子系统之间一次以一个字节或一组字节来传输信息。除非另外指定,否则存储装置中的一组字节由该组的最左侧字节寻址。组中的字节数由要执行的操作隐式或显式指定。在CPU操作中使用时,一组字节称为一个字段。在每组字节中,按照从左到右的顺序对位进行编号。最左侧的位有时称为“高序”位而最右侧的位称为“低序”位。但是,位编号不是存储地址。只有字节可以被寻址。为了操作存储装置中的字节的单个位,将访问整个字节。字节中的位从左到右被编号为0到7。地址中的位可以被编号为8-31或40-63(对于24位地址)或者1-31或33-63(对于31位地址);对于64位地址,它们被编号为0-63。在任何其他固定长度格式的多个字节中,构成格式的位从0开始被连续编号。为了进行错误检测,并且优选地为了进行纠正,可以随每个字节或一组字节一起传输一个或多个校验位。此类校验位由机器自动产生,并且无法由程序直接控制。存储容量以字节数表示。当存储操作数字段的长度由指令的操作码暗示时,该字段被视为具有固定长度,其可以是一、二、四、八或十六字节。可以针对某些指令暗示较大的字段。当存储操作数字段的长度未被暗示但被显式声明时,该字段被称为具有可变长度。可变长度操作数的长度可以以递增一个字节的方式变化(或者对于某些指令,以两字节的倍数或其他倍数递增)。当信息被放置在存储装置中时,只有包括在指定字段中的那些字节位置的内容被替换,尽管到存储装置的物理路径的宽度可能大于被存储的字段的长度。
特定信息单元在存储装置中的整数边界上。对于信息单元,当其存储地址是单位长度(以字节为单位)的倍数时,边界称为整数边界。为整数边界上包含2、4、8和16个字节的字段提供专门名称。半字是两字节边界上的一组两个连续字节,并且是指令的基本构建块。字是四字节边界上的一组四个连续字节。双字是八字节边界上的一组八个连续字节。四倍字是16字节边界上的一组16个连续字节。当存储地址指定半字、字、双字和四倍字时,地址的二进制表示分别包含一、二、三或四个最右侧的零位。指令在两字节整数边界上。大多数指令的存储操作数都没有边界对齐要求。
在针对指令和数据操作数实现单独高速缓存的设备上,如果程序存入随后从其中取回指令的高速缓存行中,则可能遇到严重延迟,与存储操作是否更改后续取回的指令无关。
在一个实施例中,本发明可以由软件(有时称为许可内码、固件、微代码、毫代码、微微代码等,它们中的任意一个都可与本发明一致)实现。参考图11,体现本发明的软件程序代码通常由主机系统1100的处理器1101从长期存储介质设备1111(例如CD-ROM驱动器、磁带驱动器或硬盘驱动器)中访问。所述软件程序代码可以包含在用于与数据处理系统一起使用的各种公知介质(例如软盘、硬盘驱动器或CD-ROM)中的任意一种上。所述代码可以分布在此类介质上,或者可以从计算机存储器1102分配给用户,或者通过网络1110从一个计算机系统的存储装置分配给其他计算机系统以便由此类其他系统的用户使用。
所述软件程序代码包括操作系统,其控制各种计算机元件以及一个或多个应用程序的功能和交互。程序代码通常从存储介质设备1111分页到相对较高速的计算机存储装置1102,所述程序代码在该处可由处理器1101处理。用于在存储器中、在物理介质上包含软件程序代码和/或通过网络分发软件代码的技术和方法是公知的,在此不进一步讨论。当在有形介质(包括但不限于电子存储模块(RAM)、闪存、光盘(CD)、DVD、磁带等)上创建和存储时,程序代码通常称为“计算机程序产品”。计算机程序产品介质通常优选地在计算机系统中可由处理电路读取以便由所述处理电路执行。
图12示出了其中可以实现本发明的代表性工作站或服务器硬件系统。图12的系统1200包括包含可选外围设备的代表性基本计算机系统1201,例如个人计算机、工作站或服务器。基本计算机系统1201包括一个或多个处理器1206和总线,所述总线用于根据公知技术在处理器(多个)1206和系统1201的其他组件之间进行连接和实现通信。所述总线将处理器1206连接到存储器1205和长期存储装置1207,长期存储装置1207可以例如包括硬盘驱动器(例如包括磁介质、CD、DVD和闪存中的任意一种)或磁带驱动器。系统1201还可包括用户接口适配器,其通过总线将微处理器1206连接到一个或多个接口设备,例如键盘1204、鼠标1203、打印机/扫描仪1210和/或其他接口设备,后者可以是任何用户接口设备,例如触敏屏幕、数字化输入小键盘等。所述总线还通过显示适配器将显示设备1202(例如LCD屏或显示器)连接到微处理器1206。
系统1201可以通过能够与网络1209通信(1208)的网络适配器与其他计算机或计算机网络通信。实例网络适配器包括通信信道、令牌环、以太网或调制解调器。
备选地,系统1201可以使用诸如CDPD(蜂窝数字分组数据)卡之类的无线接口进行通信。系统1201可以与局域网(LAN)或广域网(WAN)中的此类其他计算机关联,或者系统1201可以是具有其他计算机等的客户端/服务器布置中的客户端。所有这些配置以及适当的通信硬件和软件在本领域都是公知的。
图13示出了其中可以实现本发明的数据处理网络1300。数据处理网络1300可以包括多个单独网络,例如无线网络和有线网络,每个网络可以包括多个单独工作站1301、1302、1303、1304。此外,如本领域的技术人员将理解的,可以包括一个或多个局域网,其中一个局域网可以包括多个连接到主处理器的智能工作站。
仍参考图13,所述网络还可以包括大型计算机或服务器,例如网关计算机(客户端服务器1306)或应用服务器(远程服务器1308,其可以访问数据存储库并且还可以直接从工作站1305访问)。网关计算机1306用作到每个单独网络的入口点。将一种联网协议连接到另一联网协议时,需要网关。网关1306可以优选地通过通信链路连接到另一个网络(例如,因特网1307)。网关1306还可以使用通信链路直接连接到一个或多个工作站1301、1302、1303、1304。所述网关计算机可以使用国际商业机器公司提供的IBM eServerTM 服务器实现。
同时参考图12和图13,可以体现本发明的软件编程代码可由系统1201的处理器1206从长期存储介质1207(例如CD-ROM驱动器或硬盘驱动器)中访问。所述软件编程代码可以包含在用于与数据处理系统一起使用的各种公知介质(例如,软盘、硬盘驱动器或CD-ROM)中的任意一种上。所述代码可以分布在此类介质上,或者可以从存储器分发给用户1310、1311,或者通过网络从一个计算机系统的存储装置分发给其他计算机系统以便由此类其他系统的用户使用。
备选地,所述编程代码可以包含在存储器1205中,并由处理器1206使用处理器总线访问。此类编程代码包括操作系统,其控制各种计算机组件以及一个或多个应用程序1212的功能和交互。程序代码通常从存储介质1207分页到高速存储器1205中,所述程序代码在该处可由处理器1206处理。用于在存储器中、在物理介质上包含软件编程代码和/或通过网络分发软件代码的技术和方法是公知的,在此不进一步讨论。当在有形介质(包括但不限于电子存储模块(RAM)、闪存、光盘(CD)、DVD、磁带等)上创建和存储时,程序代码通常被称为“计算机程序产品”。计算机程序产品介质通常优选地在计算机系统中可由处理电路读取以便由所述处理电路执行。
可以最容易地用于处理器的高速缓存(通常比处理器的其他高速缓存更快速和更小)是最低(L1或一级)高速缓存,而主存储(主存储器)是最高级高速缓存(L3,如果具有3个级别)。最低级高速缓存通常被分为保存要执行的机器指令的指令高速缓存(I高速缓存)和保存数据操作数的数据高速缓存(D高速缓存)。
参考图14,针对处理器1206示出了一个示例性处理器实施例。通常采用一个或多个级别的高速缓存1403以缓冲存储器块以便提高处理器性能。高速缓存1403是保存可能使用的存储数据的高速缓存行的高速缓冲器。典型的高速缓存行是64、128或256个字节的存储数据。通常采用单独的高速缓存来缓存指令和缓存数据。高速缓存一致性(存储器中的行副本和高速缓存的同步)通常由本领域公知的各种“窥探”算法提供。处理器系统的主存储装置1205通常称为高速缓存。在具有4个级别的高速缓存1403的处理器系统中,主存储装置1205有时称为5级(L5)高速缓存,因为它通常较快并且仅保存可用于计算机系统的非易失性存储装置(DASD、磁带等)的一部分。主存储装置1205“缓存”由操作系统页入和页出主存储装置1205的数据页。
程序计数器(指令计数器)1411跟踪要执行的当前指令的地址。处理器中的程序计数器是64位,并且可以被截断为31或24位以支持现有寻址限制。程序计数器通常包含在计算机的PSW(程序状态字)中,以便它在上下文切换期间保留。因此,具有程序计数器值的进行中程序可以例如由操作系统中断(从程序环境上下文切换到操作系统环境)。当程序未处于活动状态时,程序的PSW维护程序计数器值,当操作系统正在执行时,使用操作系统的程序计数器(在PSW中)。通常,程序计数器的递增量等于当前指令的字节数。RISC(精简指令集计算)指令通常是固定长度,而CISC(复杂指令集计算)指令通常是可变长度。的指令是长度为2、4或6个字节的CISC指令。程序计数器1411例如通过上下文切换操作或分支指令的跳转操作来修改。在上下文切换操作中,将当前程序计数器值与有关被执行程序的其他状态信息(例如条件码)一起保存在程序状态字中,并加载指向要执行的新程序模块的指令的新程序计数器值。执行跳转操作以便允许程序通过将分支指令的结果加载到程序计数器1411来做出决策或在程序中循环。
通常,采用指令取回单元1405以代表处理器1206取回指令。所述取回单元取回“下一顺序指令”、跳转指令的目标指令或者上下文切换后的程序的最初指令。现代指令取回单元通常采用预取技术,以便根据可能使用已预取的指令的概率以推测方式预取指令。例如,取回单元可以取回包括下一顺序指令以及其他顺序指令的附加字节的16字节指令。
然后由处理器1206执行已取回的指令。在一个实施例中,将取回的指令(多个)传递到所述取回单元的分派单元1406。所述分派单元对指令(多个)进行解码并将有关已解码的指令(多个)的信息转发到适当的单元1407、1408、1410。执行单元1407通常从指令取回单元1405接收有关已解码的算术指令的信息,并根据指令的操作码对操作数执行算术操作。优选地从存储器1205、架构寄存器1409或被执行指令的立即字段将操作数提供给执行单元1407。存储时,将执行的结果存储在存储器1205、寄存器1409或其他机器硬件(例如控制寄存器、PSW寄存器等)中。
处理器1206通常具有一个或多个单元1407、1408、1410以执行指令的功能。参考图15A,执行单元1407可以通过接口逻辑1507与架构通用寄存器1409、解码/分派单元1406、加载存储单元1410和其他1501处理器单元通信。执行单元1407可以采用多个寄存器电路1503、1504、1505以保存算术逻辑单元(ALU)1502将操作的信息。所述ALU执行诸如加法、减法、乘法和除法之类的算术运算,以及诸如“与”、“或”和“异或”(XOR)、旋转(rotate)和移位之类的逻辑功能。优选地,所述ALU支持设计相关的专门操作。其他电路可以提供其他架构工具1508,例如包括条件码和恢复支持逻辑。通常,ALU运算的结果保存在输出寄存器电路1506中,输出寄存器电路1506可以将结果转发到各种其他处理功能。存在许多处理器单元布置,本说明仅旨在提供一个实施例的代表性理解。
ADD指令例如在具有算术和逻辑功能性的执行单元1407中执行,而浮点指令例如在具有专门浮点能力的浮点执行中执行。优选地,执行单元通过对操作数执行操作码定义的功能来操作由指令标识的操作数。例如,执行单元1407可以对在由ADD指令的寄存器字段标识的两个寄存器1409中发现的操作数执行ADD指令。
执行单元1407对两个操作数执行算术加法并将结果存储在第三操作数中,其中第三操作数可以是第三寄存器或两个源寄存器之一。执行单元优选地使用算术逻辑单元(ALU)1502,其能够执行诸如移位、旋转、“与”、“或”和“异或”之类的各种逻辑功能以及包括加法、减法、乘法、除法中任意一种的各种代数功能。某些ALU 1502旨在用于标量运算而某些用于浮点。数据可以是大端(Big Endian)(其中最低有效字节在最高字节地址处)或小端(Little Endian)(其中最低有效字节在最低字节地址处),具体取决于架构。是大端。带符号字段可以是符号和量值、1的补码或2的补码,具体取决于架构。2的补码数是有利的,原因在于ALU不需要设计减法功能,因为2的补码中的负值或正值仅需要在ALU中执行加法。通常以速记法描述数字,其中例如一个12位字段定义一个4,096字节块的地址,并且通常描述为4K字节(千字节)块。
参考图15B,用于执行分支指令的分支指令信息通常被发送到分支单元1408,分支单元1408通常采用分支预测算法(例如分支历史表1532)以在其他条件运算完成之前预测分支的结果。在条件运算完成之前,将取回当前分支指令的目标并以推测方式执行。当条件运算完成时,根据条件运算的条件和推测结果来完成或放弃以推测方式执行分支指令。典型的分支指令可以在条件码满足分支指令的分支要求的情况下测试条件码并分支到目标地址,可以根据多个数字(例如包括在指令的寄存器字段或立即字段中发现的数字)计算目标地址。分支单元1408可以采用具有多个输入寄存器电路1527、1528、1529以及一个输出寄存器电路1530的ALU 1526。分支单元1408可以与例如通用寄存器1409、解码分派单元1406或其他电路1525通信。
可以因各种原因中断一组指令的执行,所述原因例如包括由操作系统启动的上下文切换、导致上下文切换的程序异常或错误、导致上下文切换的I/O中断信号或多个程序的多线程活动(在多线程环境中)。优选地,上下文切换操作将保存有关当前执行的程序的状态信息,然后加载有关被调用的另一程序的状态信息。状态信息例如可以保存在硬件寄存器或存储器中。状态信息优选地包括指向下一个要执行的指令的程序计数器值、条件码、存储器转换信息和架构寄存器内容。上下文切换活动可以由硬件电路、应用程序、操作系统程序或固件代码(微代码、微微代码或许可内码(LIC))以单独或组合方式执行。
处理器根据指令定义的方法访问操作数。指令可以提供使用该指令的一部分的值的立即操作数,可以提供一个或多个显式指向通用寄存器或专用寄存器(例如浮点寄存器)的寄存器字段。指令可以使用由操作码字段标识的暗示的寄存器作为操作数。指令可以使用操作数的存储位置。操作数的存储位置可以由寄存器、立即字段或寄存器和立即字段的组合来提供,如通过长位移(displacement)工具举例说明的那样,其中指令定义基址寄存器、变址寄存器和立即字段(位移字段),将它们相加在一起以提供例如操作数在存储器中的地址。在此,位置通常暗示主存储器(主存储装置)中的位置,除非另外指定。
参考图15C,处理器使用加载/存储单元1410访问存储装置。加载/存储单元1410可以通过获取目标操作数在存储器1403中的地址并将操作数载入寄存器1409或其他存储器1403位置来执行加载操作,或者可以通过获取目标操作数在存储器1403中的地址并将从寄存器1409或其他存储器1403位置获取的数据存储在存储器1403中的目标操作数位置来执行存储操作。加载/存储单元1410可以是推测式的,并且可以以乱序(相对指令顺序而言)访问存储器,但加载/存储单元1410保持使程序看到指令按顺序执行。加载/存储单元1410可以与通用寄存器1409、解码/分派单元1406、高速缓存/存储器接口1403或其他元件1555通信,并且包括各种寄存器电路、ALU 1558和控制逻辑1563以计算存储地址并提供管道定序以便保持操作按顺序执行。某些操作可以是乱序的,但加载/存储单元提供功能以使乱序操作对于程序而言看似已按顺序执行,如本领域公知的那样。
优选地,应用程序“看到”的地址通常称为虚拟地址。虚拟地址有时称为“逻辑地址”和“有效地址”。这些虚拟地址是虚拟的,因为它们通过各种动态地址转换(DAT)技术之一被重定向到物理存储位置,所述技术包括但不限于简单地使用偏移值为虚拟地址加前缀、经由一个或多个转换表转换虚拟地址,转换表优选地以单独或组合方式包括至少一个段表和一个页表,段表优选地具有指向页表的表项。在中,提供转换层次结构,包括区第一表、区第二表、区第三表、段表和可选页表。通常,通过使用转换后备缓冲区(TLB)(其包括将虚拟地址映射到关联的物理存储地址的表项)来提高地址转换的性能。当DAT使用转换表转换虚拟地址时,将创建表项。对虚拟地址的后续使用然后可以使用快速TLB的表项而不是慢速顺序转换表访问。TLB内容可以由包括LRU(最近最少使用)的各种替换算法来管理。
如果处理器是多处理器系统的处理器,则每个处理器负责保持共享资源(例如I/O、高速缓存、TLB和存储器)互锁以实现一致性。通常,将使用“窥探”技术维护高速缓存一致性。在窥探环境中,每个高速缓存行可以被标记为处于共享状态、独占状态、已更改状态、无效状态等的任意一种以促进共享。
I/O单元1404(图14)为处理器提供用于连接到外围设备的手段,所述外围设备例如包括磁带、盘、打印机、显示器和网络。通常由软件驱动器为计算机程序提供I/O单元。在大型机(例如提供的中,通道适配器和开放系统适配器是大型机中在操作系统和外围设备之间提供通信的I/O单元。
此外,其他类型的计算环境可以受益于本发明的一个或多个方面。作为一个实例,环境可以包括仿真器(例如,软件或其他仿真机制),其中仿真特定架构(例如包括指令执行、诸如地址转换之类的架构功能以及架构寄存器)或其子集(例如,在具有处理器和存储器的本机计算机系统上)。在此类环境中,仿真器的一个或多个仿真功能可以实现本发明的一个或多个方面,尽管执行所述仿真器的计算机可能具有不同于被仿真的能力的架构。作为一个实例,在仿真模式下,对被仿真的特定指令或操作进行解码,并构建适当的仿真功能以实现单个指令或操作。
在仿真环境中,主计算机例如包括:存储器,其用于存储指令和数据;指令取回单元,其用于从存储器取回指令,并可选地为取回的指令提供本地缓冲;指令解码单元,其用于接收取回的指令并确定已取回的指令的类型;以及指令执行单元,其用于执行所述指令。执行可以包括将数据从存储器加载到寄存器;将数据从寄存器存储回存储器;或如所述解码单元所确定的那样执行某种类型的算术或逻辑运算。在一个实例中,以软件实现每个单元。例如,所述单元执行的操作被实现为仿真器软件中的一个或多个子例程。
更具体地说,在大型机中,由程序员(通常为当今的“C”程序员)通常通过编译器应用来使用架构机器指令。存储在存储介质中的这些指令可以在服务器中本机地执行,或者备选地在执行其他架构的机器中执行。它们可以在现有或未来大型服务器中或者在的其他机器(例如,服务器或服务器)上被仿真。它们可以在使用由AMDTM、Sun Microsystems和其他公司制造的硬件的各种机器上运行Linux的机器中执行。除了在下的此硬件上执行之外,Linux还可以由Hercules(参见www.hercules-390.org)、UMX或FSI(Fundamental Software,Inc)(参见www.funsoft.com)用作使用仿真的机器,其中执行通常处于仿真模式。在仿真模式下,本机处理器执行仿真软件以仿真被仿真处理器的架构。
本机处理器通常执行包括固件或本机操作系统的仿真软件以执行被仿真处理器的仿真。仿真软件负责取回并执行被仿真处理器架构的指令。仿真软件维护被仿真程序计数器以跟踪指令边界。仿真软件一次可以取回一个或多个被仿真机器指令并将一个或多个被仿真机器指令转换为一组对应的本机机器指令以便由本机处理器执行。可以缓存这些已转换的指令,以便可以完成较快速的转换。然而,仿真软件要维护被仿真处理器架构的架构规则以便确保针对被仿真处理器编写的操作系统和应用正确地运行。此外,仿真软件要提供由被仿真处理器架构标识的资源(包括但不限于控制寄存器、通用寄存器、浮点寄存器、例如包括段表和页表的动态地址换换功能、中断机制、上下文切换机制、日时(TOD)时钟以及到I/O子系统的架构接口),以便设计为在被仿真处理器上运行的操作系统或应用程序可以在具有仿真软件的本机处理器上运行。
解码被仿真的特定指令,并调用子例程以执行单个指令的功能。仿真被仿真处理器的功能的仿真软件功能例如以“C”子例程或驱动器或某种其他为特定硬件提供驱动器的方法来实现,如本领域技术人员在理解对优选实施例的描述之后所公知的那样。各种软件和硬件仿真专利示出了多种公知方法来针对可用于本领域技术人员的目标机器实现为不同机器设计的指令格式的仿真,这些专利包括但不限于标题为“Multiprocessor forHardware Emulation”(硬件仿真的多处理器)的第5,551,013号美国专利证书(Beausoleil等人)和标题为“Preprocessing of Stored TargetRoutines for Emulating Incompatible Instructions on a Target Processor”(预处理存储目标例程以在目标处理器上仿真不兼容的指令)的第6,009,261号美国专利证书(Scalzi等人);以及标题为“Decoding GuestInstruction to Directly Access Emulation Routines that Emulate the GuestInstructions”(解码客机指令以直接访问仿真客机指令的仿真例程)的第5,574,873号美国专利证书(Davidian等人);标题为“SymmetricalMultiprocessing Bus and Chipset Used for Coprocessor Support AllowingNon-Native Code to Run in a System”(用于允许非本机代码在系统上运行的协处理器支持的对称多处理总线和芯片组)的第6,308,255号美国专利证书(Gorishek等人);以及标题为“Dynamic Optimizing Object CodeTranslator for Architecture Emulation and Dynamic Optimizing ObjectCode Translation Method”(架构仿真的动态优化目标代码转换器和动态优化目标代码转换方法)的第6,463,582号美国专利证书(Lethin等人);以及标题为“Method for Emulating Guest Instructions on a HostComputer Through Dynamic Recompilation of Host Instructions”(通过动态重新编译主机指令在主计算机上仿真客机指令的方法)的第5,790,825号美国专利证书(Eric Traut);以及许多其他专利。
在图16中,提供了仿真主架构的主计算机系统1100'的被仿真主计算机系统1620的一个实例。在被仿真主计算机系统1620中,主处理器(CPU)1601是被仿真主处理器(或虚拟主处理器)并包括仿真处理器1621,仿真处理器1621具有不同于主计算机1100'的处理器1601的本机指令集架构。被仿真主计算机系统1620具有可由仿真处理器1621访问的存储器1622。在此实例实施例中,存储器1622被分区为主计算机存储器1625部分和仿真例程1626部分。根据主计算机架构,主计算机存储器1625可用于被仿真主计算机1620的程序。仿真处理器1621执行不同于被仿真处理器1601的架构的架构指令集的本机指令(本机指令从仿真例程存储器1626获取),并且可以通过采用一个或多个在顺序和访问/解码例程中获取的指令访问主机指令以便从主计算机存储器1625中的程序执行,所述顺序和访问/解码例程可以对所访问的主机指令(多个)解码以确定用于仿真被访问的主机指令的功能的本机指令执行例程。针对主计算机系统1100'架构定义的其他工具可以由架构工具例程(例如包括诸如通用寄存器、控制寄存器、动态地址转换之类的工具以及I/O子系统支持和处理器高速缓存)仿真。仿真例程还可以利用仿真处理器1621中提供的功能(例如通用寄存器和虚拟地址的动态转换)来提高仿真例程的性能。还可以提供专门硬件和卸载引擎以帮助处理器1621仿真主计算机1100'的功能。
在此使用的术语仅用于描述特定实施例的目的,并非旨在限制本发明。如在此使用的,单数形式“一”、“一个”和“该”旨在同时包括复数形式,除非上下文另外明确指出。还将理解,术语“包括”和/或“包含”在本说明书中使用时,指定存在所声明的特性、整数、步骤、操作、元素和/或元件,但不排除存在或添加一个或多个其他特性、整数、步骤、操作、元素、组件和/或它们的组合。
以下的权利要求中的对应结构、材料、操作以及所有功能性限定的装置(means)或步骤的等同替换,旨在包括任何用于与在权利要求中具体指出的其它单元相组合地执行该功能的结构、材料或操作。所给出的对本发明的描述其目的在于示意和描述,并非是穷尽性的,也并非是要把本发明限定到所表述的形式。对于所属技术领域的普通技术人员来说,在不偏离本发明范围和精神的情况下,显然可以做出许多修改和变型。对实施例的选择和说明,是为了最好地解释本发明的原理和实际应用,使所属技术领域的普通技术人员能够明了,本发明可以有适合所要的特定用途的具有各种改变的各种实施方式。
Claims (20)
1.一种促进计算环境中的处理的方法,所述方法包括以下步骤:
由处理器获取更改存储键的指令,所述指令包括一个无停顿控制,所述存储键与存储装置中的位置关联并可由多个处理器访问;
针对所述指令中的无停顿控制,确定多种处理模式中的一种,其中所述多种处理模式包括停顿和无停顿;以及
由所述处理器更改所述存储键,其中基于所述无停顿控制指示停顿处理模式,在使所述多个处理器的处理停顿的情况下执行所述更改,基于所述无停顿控制指示无停顿处理模式,在不使所述多个处理器的处理停顿的情况下执行所述更改,
其中所述存储键包括用于键匹配的访问控制组件(402)和用于指示在存储装置中与所述存储键关联的位置取回所存储的数据是否受到键控的取回保护组件(404),以及
其中更改步骤更改所述访问控制组件(402)和所述取回保护组件(404)中的至少一个。
2.如权利要求1中所述的方法,其中所述指令是包括掩码字段的SetStorage Key Extended指令,所述掩码字段包括用于指示无停顿处理或停顿处理的无停顿控制位。
3.如权利要求1中所述的方法,其中所述指令包括Perform FrameManagement Function指令。
4.如权利要求1中所述的方法,其中所述方法还包括:
由所述多个处理器中的另一处理器启动访问存储装置中的所述位置的操作;
在所述启动之后确定用于存储装置中的该位置的存储键已更改;以及
响应于所述确定而继续执行所述操作。
5.如权利要求4中所述的方法,其中所述方法还包括:
响应于所述启动而获取访问存储装置中的所述位置的许可;以及
在更改所述存储键之后,根据响应于所述启动获取的所述许可而继续执行所述操作。
6.如权利要求5中所述的方法,其中获取许可包括:
响应于所述启动而预测试要由所述操作访问的一个或多个存储位置以判定是否允许访问;以及
响应于成功的预测试而获取许可,其中针对一系列存储位置获取许可。
7.如权利要求4中所述的方法,其中所述继续执行包括阻止保护异常。
8.如权利要求7中所述的方法,其中所述继续执行包括:
响应于确定所述存储键已更改,判定响应于修改存储装置中的选定位置而设置的用于指定继续执行的指示器是否指定执行可以继续而不管已更改的存储键;以及
响应于指示执行可以继续的判定而阻止所述保护异常。
9.如权利要求1中所述的方法,其中响应于更改所述存储键,一个或多个处理器可观察到所述存储键的多个不同值。
10.如权利要求1中所述的方法,其中所述指令由所述处理器仿真以更改所述存储键。
11.一种促进计算环境中的处理的系统,所述系统包括:
用于由处理器获取更改存储键的指令的装置,所述指令包括一个无停顿控制,所述存储键与存储装置中的位置关联并可由多个处理器访问;
用于针对所述指令中的无停顿控制,确定多种处理模式中的一种的装置,其中所述多种处理模式包括停顿和无停顿;以及
用于由所述处理器更改所述存储键的装置,其中基于所述无停顿控制指示停顿处理模式,在使所述多个处理器的处理停顿的情况下执行所述更改,基于所述无停顿控制指示无停顿处理模式,在不使所述多个处理器的处理停顿的情况下执行所述更改,
其中所述存储键包括用于键匹配的访问控制组件(402)和用于指示在存储装置中与所述存储键关联的位置取回所存储的数据是否受到键控的取回保护组件(404),以及
其中用于由所述处理器更改所述存储键的装置更改所述访问控制组件(402)和所述取回保护组件(404)中的至少一个。
12.如权利要求11中所述的系统,其中所述指令是包括掩码字段的Set Storage Key Extended指令,所述掩码字段包括用于指示无停顿处理或停顿处理的无停顿控制位。
13.如权利要求11中所述的系统,其中所述指令包括Perform FrameManagement Function指令。
14.如权利要求11中所述的系统,其中所述系统还包括:
用于由所述多个处理器中的另一处理器启动访问存储装置中的所述位置的操作的装置;
用于在所述启动之后确定用于存储装置中的该位置的存储键已更改的装置;以及
用于响应于所述确定而继续执行所述操作的装置。
15.如权利要求14中所述的系统,其中所述系统还包括:
用于响应于所述启动而获取访问存储装置中的所述位置的许可的装置;以及
用于在更改所述存储键之后,根据响应于所述启动获取的所述许可而继续执行所述操作的装置。
16.如权利要求15中所述的系统,其中获取许可包括:
响应于所述启动而预测试要由所述操作访问的一个或多个存储位置以判定是否允许访问;以及
响应于成功的预测试而获取许可,其中针对一系列存储位置获取许可。
17.如权利要求14中所述的系统,其中所述继续执行包括阻止保护异常。
18.如权利要求17中所述的系统,其中所述继续执行包括:
响应于确定所述存储键已更改,判定响应于修改存储装置中的选定位置而设置的用于指定继续执行的指示器是否指定执行可以继续而不管已更改的存储键;以及
响应于指示执行可以继续的判定而阻止所述保护异常。
19.如权利要求11中所述的系统,其中响应于更改所述存储键,一个或多个处理器可观察到所述存储键的多个不同值。
20.如权利要求11中所述的系统,其中所述指令由所述处理器仿真以更改所述存储键。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/638,314 US8806179B2 (en) | 2009-12-15 | 2009-12-15 | Non-quiescing key setting facility |
US12/638,314 | 2009-12-15 | ||
PCT/EP2010/069565 WO2011073161A1 (en) | 2009-12-15 | 2010-12-14 | Non-quiescing key setting facility |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102713838A CN102713838A (zh) | 2012-10-03 |
CN102713838B true CN102713838B (zh) | 2015-01-07 |
Family
ID=43799712
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080056684.7A Active CN102713838B (zh) | 2009-12-15 | 2010-12-14 | 无停顿键设置工具 |
Country Status (6)
Country | Link |
---|---|
US (2) | US8806179B2 (zh) |
CN (1) | CN102713838B (zh) |
DE (1) | DE112010003942T5 (zh) |
GB (1) | GB2488458B (zh) |
RU (1) | RU2542953C2 (zh) |
WO (1) | WO2011073161A1 (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8806179B2 (en) | 2009-12-15 | 2014-08-12 | International Business Machines Corporation | Non-quiescing key setting facility |
US9104513B1 (en) | 2014-03-14 | 2015-08-11 | International Business Machines Corporation | Managing quiesce requests in a multi-processor environment |
US10025608B2 (en) | 2014-11-17 | 2018-07-17 | International Business Machines Corporation | Quiesce handling in multithreaded environments |
US10437729B2 (en) | 2017-04-19 | 2019-10-08 | International Business Machines Corporation | Non-disruptive clearing of varying address ranges from cache |
CN108776665B (zh) * | 2018-04-20 | 2021-01-12 | 北京奇艺世纪科技有限公司 | 一种数据处理方法及装置 |
US10831480B2 (en) * | 2019-02-25 | 2020-11-10 | International Business Machines Corporation | Move data and set storage key instruction |
US10838631B2 (en) * | 2019-02-25 | 2020-11-17 | International Business Machines Corporation | Detection of alteration of storage keys used to protect memory |
US11042483B2 (en) | 2019-04-26 | 2021-06-22 | International Business Machines Corporation | Efficient eviction of whole set associated cache or selected range of addresses |
US12013791B2 (en) * | 2021-06-01 | 2024-06-18 | International Business Machines Corporation | Reset dynamic address translation protection instruction |
US11593275B2 (en) | 2021-06-01 | 2023-02-28 | International Business Machines Corporation | Operating system deactivation of storage block write protection absent quiescing of processors |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6119219A (en) * | 1998-04-30 | 2000-09-12 | International Business Machines Corporation | System serialization with early release of individual processor |
CN101416155A (zh) * | 2006-05-19 | 2009-04-22 | 国际商业机器公司 | 通过用户可选择的存储访问键的移动数据工具 |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5008811A (en) * | 1988-02-10 | 1991-04-16 | International Business Machines Corp. | Control mechanism for zero-origin data spaces |
AU6629894A (en) * | 1993-05-07 | 1994-12-12 | Apple Computer, Inc. | Method for decoding guest instructions for a host computer |
US5551013A (en) * | 1994-06-03 | 1996-08-27 | International Business Machines Corporation | Multiprocessor for hardware emulation |
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 |
US5966515A (en) * | 1996-12-31 | 1999-10-12 | Unisys Corporation | Parallel emulation system and method |
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 |
US6088792A (en) * | 1998-04-30 | 2000-07-11 | International Business Machines Corporation | Avoiding processor serialization after an S/390 SPKA instruction |
US6079013A (en) * | 1998-04-30 | 2000-06-20 | International Business Machines Corporation | Multiprocessor serialization with early release of processors |
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 |
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 |
US6996698B2 (en) * | 2003-05-12 | 2006-02-07 | International Business Machines Corporation | Blocking processing restrictions based on addresses |
US7284100B2 (en) * | 2003-05-12 | 2007-10-16 | International Business Machines Corporation | Invalidating storage, clearing buffer entries, and an instruction therefor |
US7020761B2 (en) * | 2003-05-12 | 2006-03-28 | International Business Machines Corporation | Blocking processing restrictions based on page indices |
US7454393B2 (en) | 2003-08-06 | 2008-11-18 | Microsoft Corporation | Cost-benefit approach to automatically composing answers to questions by extracting information from large unstructured corpora |
US8527855B2 (en) | 2004-08-16 | 2013-09-03 | Koninklijke Philips N.V. | Interleaving and parsing for MIMO-OFDM systems |
JP4144609B2 (ja) * | 2004-09-29 | 2008-09-03 | ソニー株式会社 | 情報処理装置、メモリ領域管理方法、並びにコンピュータ・プログラム |
US8335906B2 (en) * | 2008-01-11 | 2012-12-18 | International Business Machines Corporation | Perform frame management function instruction for clearing blocks of main storage |
US8417916B2 (en) * | 2008-01-11 | 2013-04-09 | International Business Machines Corporation | Perform frame management function instruction for setting storage keys and clearing blocks of main storage |
US8151083B2 (en) * | 2008-01-11 | 2012-04-03 | International Business Machines Corporation | Dynamic address translation with frame management |
US8140834B2 (en) | 2008-02-26 | 2012-03-20 | International Business Machines Corporation | System, method and computer program product for providing a programmable quiesce filtering register |
US8572624B2 (en) * | 2008-02-26 | 2013-10-29 | International Business Machines Corporation | Providing multiple quiesce state machines in a computing environment |
US8806179B2 (en) * | 2009-12-15 | 2014-08-12 | International Business Machines Corporation | Non-quiescing key setting facility |
-
2009
- 2009-12-15 US US12/638,314 patent/US8806179B2/en active Active
-
2010
- 2010-12-14 GB GB1207328.4A patent/GB2488458B/en active Active
- 2010-12-14 WO PCT/EP2010/069565 patent/WO2011073161A1/en active Application Filing
- 2010-12-14 CN CN201080056684.7A patent/CN102713838B/zh active Active
- 2010-12-14 DE DE112010003942T patent/DE112010003942T5/de not_active Ceased
- 2010-12-14 RU RU2012147517/08A patent/RU2542953C2/ru not_active IP Right Cessation
-
2012
- 2012-04-20 US US13/452,248 patent/US8751775B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6119219A (en) * | 1998-04-30 | 2000-09-12 | International Business Machines Corporation | System serialization with early release of individual processor |
CN101416155A (zh) * | 2006-05-19 | 2009-04-22 | 国际商业机器公司 | 通过用户可选择的存储访问键的移动数据工具 |
Also Published As
Publication number | Publication date |
---|---|
GB201207328D0 (en) | 2012-06-13 |
CN102713838A (zh) | 2012-10-03 |
US20110145550A1 (en) | 2011-06-16 |
GB2488458A (en) | 2012-08-29 |
WO2011073161A1 (en) | 2011-06-23 |
US8751775B2 (en) | 2014-06-10 |
US8806179B2 (en) | 2014-08-12 |
GB2488458B (en) | 2017-08-23 |
RU2542953C2 (ru) | 2015-02-27 |
DE112010003942T5 (de) | 2012-11-22 |
RU2012147517A (ru) | 2014-05-20 |
US20120204010A1 (en) | 2012-08-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102713838B (zh) | 无停顿键设置工具 | |
CN102754069B (zh) | 用于处理加载/存储分离指令的方法和系统 | |
CN102906707B (zh) | 管理与硬件事件关联的处理 | |
CN104252586B (zh) | 促进在处理环境中的处理的方法和计算机系统 | |
CN102906701B (zh) | 在计算环境中控制对适配器的访问的方法和系统 | |
TWI764082B (zh) | 用於經引導中斷虛擬化之中斷信號之方法、電腦系統及電腦程式產品 | |
CN102906702B (zh) | 对适配器的地址空间的访客端访问 | |
CN103582879B (zh) | 管理耦合设施中的操作员消息缓冲器 | |
TWI731554B (zh) | 用於多層虛擬化之經引導中斷 | |
CN104335185A (zh) | 受限事务执行 | |
CN102906720B (zh) | 启用/禁用计算环境的适配器 | |
CN104252360A (zh) | 在流水线化处理中使用的预测器数据结构 | |
CN103513960A (zh) | 促进事务重复中止之后的事务完成的方法和计算机系统 | |
CN104412232A (zh) | 事务处理 | |
CN103514032A (zh) | 限制处理器内的处理以促进事务完成的方法和计算机系统 | |
CN104054053A (zh) | 警告追踪中断设施 | |
CN104335186A (zh) | 处理器辅助设施 | |
CN104364778A (zh) | 在事务处理中保存/恢复选择的寄存器 | |
CN104364772A (zh) | 事务环境内的程序事件记录 | |
CN102906700B (zh) | 用于阻止虚拟处理器的多功能指令的指令功能的功能虚拟化工具 | |
CN102906694B (zh) | 用于与适配器进行通信的加载指令的方法和系统 | |
CN104350468A (zh) | 非事务存储指令 | |
CN104335177A (zh) | 有选择地控制事务处理中的指令执行 | |
CN104350462A (zh) | 事务中止指令 | |
CN104335165A (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |