US20060036824A1 - Managing the updating of storage keys - Google Patents

Managing the updating of storage keys Download PDF

Info

Publication number
US20060036824A1
US20060036824A1 US11/204,131 US20413105A US2006036824A1 US 20060036824 A1 US20060036824 A1 US 20060036824A1 US 20413105 A US20413105 A US 20413105A US 2006036824 A1 US2006036824 A1 US 2006036824A1
Authority
US
United States
Prior art keywords
storage
storage key
components
key
control
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.)
Abandoned
Application number
US11/204,131
Inventor
Dan Greiner
Lisa Heller
Damian Osisek
Robert Rogers
Timothy Slegel
Elpida Tzortzatos
Charles Webb
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to US11/204,131 priority Critical patent/US20060036824A1/en
Assigned to INTERNATIONAL BUSINESS MACHINES CORPORATION reassignment INTERNATIONAL BUSINESS MACHINES CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: TZORTZATOS, ELPIDA, HELLER, LISA C., ROGERS, ROBERT R., SLEGEL, TIMOTHY J., GREINER, DAN F., OSISEK, DAMIAN L., WEBB, CHARLES F.
Publication of US20060036824A1 publication Critical patent/US20060036824A1/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0808Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/683Invalidation

Definitions

  • This invention relates, in general, to processing within a computing environment, and in particular, to managing the updating of storage keys employed during processing within the computing environment.
  • a storage key is associated with each block of real storage (also referred to as a frame).
  • One function of a storage key is to provide a reliability mechanism that is used to segregate blocks of storage, ensuring that programs executing in one key do not improperly store into or, subject to a control in the key, fetch from blocks having a different key.
  • a further function is to provide indications to an operating system as to which blocks have been referenced and changed, thus allowing the operating system to determine which blocks may need to be written to auxiliary storage.
  • a storage key is set, in one example, by a Set Storage Key Extended instruction, offered by International Business Machines Corporation, Armonk, N.Y. This instruction sets all of the constituent components of the key simultaneously, regardless of whether the various components are being set to the same value as before.
  • a processor may buffer a subset of the storage keys in a local (processor-specific) area.
  • all processors in a multi-processor configuration are to effectively observe the change simultaneously, such that stale local copies of the key are discarded.
  • the Set Storage Key Extended instruction requires the system to be serialized to ensure that all CPUs observe the changes to the key. This serialization is performed in hardware using a fast quiesce mechanism, as an example.
  • the shortcomings of the prior art are overcome and additional advantages are provided through the provision of a method of managing the updating of storage keys of a computing environment.
  • the method includes, for instance, indicating by a control program whether one or more selected components of a storage key are to be updated; comparing one or more components of the storage key to one or more values, wherein inclusion of the one or more selected components in the comparing depends on the indicating; and updating zero or more components of the storage key based on the comparing.
  • a queue stored in memory of a computing environment and accessed by a program of the computing environment to obtain a block of storage includes, for instance, one region of the queue being designated to exclusively include one or more blocks of storage with associated storage keys, in which each storage key of the associated storage keys includes one or more storage key components having respective specified values; and another region of the queue being designated to include one or more blocks of storage with associated storage keys that are excluded from the one region.
  • a queue stored in memory of a computing environment and accessed by a program of the computing environment to obtain a block of storage includes, for instance, one or more blocks of storage and associated storage keys, wherein each storage key of the associated storage keys has one or more storage key components of respective specified values, wherein a block of storage having a storage key in which at least one storage key component of the one or more storage key components has a different value from the respective specified value is excluded from the queue.
  • an instruction to be executed within a computing environment includes, for instance, an operation code to identify an instruction to be executed; a control field used by a control program to indicate whether updating of one or more selected components of a storage key can be bypassed; a first field providing an indication of one or more values to be compared to one or more values of one or more components of the storage key; and a second field providing an indication of the storage key to be set.
  • a computing environment includes a memory to store an instruction to conditionally set a storage key of the computing environment, the instruction having a control field provided by a control program to indicate whether updating of one or more selected components of the storage key can be bypassed; an instruction fetch unit to fetch the instruction from memory; an instruction decode unit to decode the instruction of the instruction fetch unit; and an instruction execution unit to execute the decoded instruction.
  • FIG. 1 depicts one embodiment of a computing environment to incorporate and use one or more aspects of the present invention
  • FIG. 2 depicts one embodiment of further details associated with a controller of FIG. 1 , in accordance with an aspect of the present invention
  • FIG. 3 depicts one embodiment of a host computer that can emulate another computer, in accordance with an aspect of the present invention
  • FIG. 4 depicts one example of the various components of a storage key, in accordance with an aspect of the present invention.
  • FIG. 5 depicts one embodiment of an overview of the logic for conditionally updating components of a storage key, in accordance with an aspect of the present invention
  • FIG. 6 a depicts one embodiment of a format of a conditional Set Storage Key Extended (SSKE) instruction, in accordance with an aspect of the present invention
  • FIG. 6 b depicts one embodiment of the fields associated with the M3 operand of the conditional SSKE instruction of FIG. 6 a, in accordance with an aspect of the present invention
  • FIGS. 7 a - 7 b depict one embodiment of the logic associated with the conditional SSKE instruction, in accordance with an aspect of the present invention
  • FIG. 8 a depicts one embodiment of a queue of available frames configured in accordance with an aspect of the present invention.
  • FIG. 8 b depicts another embodiment of a queue of available frames configured in accordance with an aspect of the present invention.
  • a storage key management capability that conditionally updates selected components of a storage key, thereby minimizing quiesce operations and enhancing system performance.
  • the storage key management capability includes placing available frames with storage keys in available frame queues that are organized in such a manner that a selected available frame has a higher probability of having a desired storage key, thus minimizing the need to update the key.
  • Computing environment 100 is based, for instance, on the z/Architecture offered by International Business Machines Corporation, Armonk, N.Y.
  • the z/Architecture is described in an IBM® publication entitled, “z/Architecture Principles of Operation,” IBM Publication No. SA22-7832-03, June 2004, which is hereby incorporated herein by reference in its entirety.
  • IBM® is a registered trademark of International Business Machines Corporation, Armonk, N.Y., U.S.A.
  • a computing environment based on the z/Architecture includes an eServer zSeries, offered by International Business Machines Corporation, Armonk, N.Y.
  • computing environment 100 includes a central processor complex (CPC) 102 coupled to a controller 120 .
  • Central processor complex 102 includes, for instance, one or more partitions or zones 104 (e.g., logical partitions LP 1 -LPn), one or more central processors 106 (e.g., CP 1 -CPm), and a hypervisor 108 (e.g., a logical partition manager), each of which is described below.
  • partitions or zones 104 e.g., logical partitions LP 1 -LPn
  • central processors 106 e.g., CP 1 -CPm
  • hypervisor 108 e.g., a logical partition manager
  • Each logical partition 104 is capable of functioning as a separate system. That is, each logical partition can be independently reset, initially loaded with an operating system, if desired, and operate with different programs.
  • An operating system or application program running in a logical partition appears to have access to a full and complete system, but in reality, only a portion of it is available.
  • a combination of hardware and Licensed Internal Code also referred to as microcode or millicode
  • each logical partition has a resident operating system 110 , which may differ for one or more logical partitions.
  • operating system 110 is the Z/OS operating system, offered by International Business Machines Corporation, Armonk, N.Y.
  • Central processors 106 are physical processor resources that are allocated to the logical partitions.
  • a logical partition 104 includes one or more logical processors, each of which represents all or a share of a physical processor resource 106 allocated to the partition.
  • the logical processors of a particular partition 104 may be either dedicated to the partition, so that the underlying processor resource is reserved for that partition; or shared with another partition, so that the underlying processor resource is potentially available to another partition.
  • Logical partitions 104 are managed by hypervisor 108 implemented by microcode running on processors 106 .
  • Logical partitions 104 and hypervisor 108 each comprise one or more programs residing in respective portions of central storage associated with the central processors.
  • hypervisor 108 is the Processor Resource/Systems Manager (PR/SM), offered by International Business Machines Corporation, Armonk, N.Y.
  • PR/SM Processor Resource/Systems Manager
  • Controller 120 which is coupled to the central processor complex, includes centralized logic responsible for arbitrating between different processors issuing requests. For instance, when controller 120 receives a request, it determines that the requester is the master processor for that request and that the other processors are slave processors; it broadcasts messages; and otherwise, handles requests.
  • controller 120 receives a request, it determines that the requester is the master processor for that request and that the other processors are slave processors; it broadcasts messages; and otherwise, handles requests.
  • One example of a controller is described in U.S. Pat. No. 6,199,219, entitled “System Serialization With Early Release Of Individual Processor,” Webb et al., Sep. 12, 2000, which is hereby incorporated herein by reference in its entirety. Further details are also described with reference to FIG. 2 .
  • FIG. 2 depicts one example of a controller 200 coupled to a plurality of central processors (CPUs) 201 .
  • CPUs central processors
  • FIG. 2 depicts one example of a controller 200 coupled to a plurality of central processors (CPUs) 201 .
  • CPUs central processors
  • FIG. 2 depicts one example of a controller 200 coupled to a plurality of central processors (CPUs) 201 .
  • CPUs central processors
  • Controller 200 includes various controls including, for instance, system serialization controls 202 .
  • the system serialization controls are used to ensure that operations that are to be serialized, such as update operations, are serialized, in that only one such operation (or a limited number) is in progress at one time in the computing environment. It also monitors the sequence of events for that operation.
  • Controller 200 is coupled to each central processor via various interfaces.
  • an interface 204 is used by the Licensed Internal Code in a central processor to send “control” commands to the controller, which specify an action to be taken, and to send “sense” commands, which return information from the controller.
  • Another interface is a response bus 206 , which is used to return information from the controller for the “sense” commands.
  • the response bus is also used to communicate command status for “control” commands, and may be set from a plurality of sources within the controller, including the system serialization controls.
  • a central processor can use this interface to sense the state of the system serialization controls in controller 200 .
  • a further interface is interface 208 , which is used by the controller to send commands to each CPU. This may also be controlled from a plurality of sources within the controller, including system serialization controls 202 .
  • a yet further interface is interface 210 , which provides signals to cache controls 212 of central processor 201 .
  • Cache controls 212 process commands, in response to the signals. In one example, cache controls 212 process commands that affect one or more buffers, such as Translation Lookaside Buffers (TLBs) 213 .
  • TLBs Translation Lookaside Buffers
  • central processor 201 includes various other controls, including for instance, interrupt controls 220 and execution controls 222 .
  • interrupt controls 220 cause an internal interruption to be pending in the CPU, which in turn, causes execution controls 222 to suspend program instruction processing, at the next interruptible point.
  • execution controls 222 invokes a Licensed Internal Code routine to set a broadcast operation allowed latch 224 to enable cache controls 212 to process pending commands.
  • Central processor 201 also includes a CPU quiesced latch 226 that indicates whether or not the central processor is quiesced.
  • an environment may include an emulator (e.g., software or other emulation mechanisms) in which a particular architecture or a subset thereof is emulated.
  • an emulator e.g., software or other emulation mechanisms
  • one or more emulation functions of the emulator can implement one or more aspects of the present invention, even though a computer executing the emulator may have a different architecture than the capabilities being emulated.
  • the specific instruction or operation being emulated is decoded, and an appropriate emulation function is built to implement the individual instruction or operation.
  • a host computer 300 is capable of emulating another architecture, computer and/or processing capabilities of another computer.
  • host computer 300 is based on an Intel architecture; a RISC architecture, such as PowerPC; a SPARC architecture, offered by Sun Microsystems; or another architecture, and is capable of emulating the z/Architecture of IBM® or another architecture of IBM® or another entity.
  • Host computer 300 includes, for instance, a memory 302 to store instructions and data; an instruction fetch unit 304 to fetch instructions from memory 302 , and to optionally, provide local buffering for the fetched instructions; an instruction decode unit 306 to receive instructions from instruction fetch unit 304 and to determine the type of instructions that have been fetched; and an instruction execution unit 308 to execute the instructions. Execution may include loading data into a register from memory 302 ; storing data back to memory from a register; or performing some type of arithmetic or logical operation, as determined by the decode unit.
  • each unit described above is implemented in software.
  • the operations being performed by the units are implemented as one or more subroutines within emulator software.
  • one or more of the operations are implemented in firmware, hardware, software or some combination thereof.
  • FIG. 3 is described with reference to emulation, the environment of FIG. 3 need not be an emulation environment.
  • instructions are executed in a native environment, and the operations are implemented in hardware, firmware, software or some combination thereof.
  • each block (e.g., 4 k bytes) of storage (e.g., real storage) has associated therewith a storage key.
  • a storage key provides a reliability mechanism that is used to segregate blocks of storage, ensuring that programs executing in one key do not accidentally store into blocks having a different key.
  • a storage key provides indications to an operating system as to which blocks have been referenced and changed, thus allowing the operating system to determine which blocks may need to be written to auxiliary storage.
  • a storage key 400 includes for instance, an access control (ACC) component 402 , a fetch protection (F) component 404 , a reference (R) component 406 , and a change (C) component 408 , each of which is described below.
  • ACC access control
  • F fetch protection
  • R reference
  • C change
  • Access control bits (ACC) 402 If a reference is subject to key-controlled protection, the access control bits are matched with an access key (e.g., of the program status word or from an instruction operand) when information is stored, or when information is fetched from a location that is protected against fetching.
  • an access key e.g., of the program status word or from an instruction operand
  • Fetch-protection bit (F) 404 If a reference is subject to key-controlled protection, the fetch protection bit controls whether key-controlled protection applies to fetch-type references; a 0 indicates that only store-type references are monitored and that fetching with any access key is permitted; a 1 indicates that key-control protection applies to both fetching and storing. No distinction is made between the fetching of instructions and of operands.
  • Reference bit (R) 406 The reference bit normally is set to 1 each time a location in the corresponding storage block is referred to either for storing or for fetching of information.
  • Change bit (C) 408 The change bit is set to 1 each time information is stored at a location in the corresponding storage block.
  • Storage keys are not part of addressable storage.
  • a Set Storage Key Extended instruction is used to set a storage key.
  • This instruction sets all components of the storage key, even if one or more of the components are being updated to the same value as before.
  • this instruction requires the system to be serialized to ensure that all CPUs observe the changes to the key.
  • a capability is provided that enables conditional updating of storage keys, and thus, conditional system serialization.
  • the operating system or other control program both of which are referred to herein as the program
  • the program manages the conditional updating by indicating which components of a storage key may be bypassed for updating.
  • the program has control over the updates and it allows conditional bypassing of updates, as described in further detail below.
  • the operating system or other control program indicates whether one or more selected components of a storage key are to be (i.e., are required to be) updated, STEP 500 .
  • the operating system may indicate that the change control and/or reference control need not be updated.
  • comparisons are performed on one or more components of the storage key, STEP 502 .
  • Inclusion of the one or more selected components in the comparing depends on the operating system indication. For instance, if the indicating specifies that the reference control and/or change control need not be updated, then the comparing is allowed to ignore those controls.
  • INQUIRY 504 If the comparison of a component indicates that an update is to be performed, INQUIRY 504 , then an update of one or more components of the storage key is performed, STEP 506 .
  • only the components that need updating are updated. In other embodiments, however, all of the components are updated, even those components that do not need updating, if an updating is to be performed.
  • serialization may be performed as described below. However, not all updating requires serialization.
  • conditional updating is performed via a conditional Set Storage Key Extended instruction.
  • This instruction allows the program to conditionally bypass the updating of, for instance, the reference component, the change component or both, when circumstances allow. That is, software (e.g., the program) can indicate that either or both of these components do not need to be updated.
  • software e.g., the program
  • the CPU can often avoid quiescing the system as part of the storage key update, as described in further detail below.
  • a conditional SSKE instruction 600 includes, for instance, an operation code 602 designating the Set Storage Key Extended instruction; an M3 operand 604 used by the program to indicate which components of the storage key need not be updated; a register designation 606 selecting a register that includes values to be compared to components of the storage key; and a register designation 608 selecting a register that includes the address of the storage key to be conditionally set.
  • M3 operand 604 includes a reference bit update mask (MR) 610 and a change bit update mask (MC) 612 .
  • MR 610 controls whether updates to the reference component of the storage key may be bypassed
  • MC 612 controls whether updates to the change component of the storage key may be bypassed. Use of these controls is described further with reference to the logic flow of FIGS. 7 a - 7 b.
  • conditional Set Storage Key Extended instruction is described with reference to FIGS. 7 a - 7 b.
  • this instruction is invoked by the operating system (or a component thereof) and executed in millicode of a processor of the computing environment.
  • conditional Set Storage Key Extended facility is installed, INQUIRY 700 , then a further determination is made as to whether the reference bit update mask (MR) and the change bit update mask (MC) are zero, INQUIRY 706 . If both the MR and MC controls are zero, then, the instruction completes as though the conditional Set Storage Key Extended facility is not installed. Again, the storage key for the block that is addressed by the contents of general register R 2 is replaced by bits from general register R 1 , STEP 702 , and the instruction completes without changing the condition code, STEP 704 . When the conditional-SSKE facility is not installed, the M3 field of the instruction (including the MR and MC bits) is not defined, thus these bits of the instruction should contain zeros. By completing as though the conditional-SSKE facility was not installed when both the MR and MC controls are zero, backward compatibility is provided to programs that do not support the facility.
  • MR reference bit update mask
  • MC change bit update mask
  • the access control bits and fetch protection bit of the storage key for the designated block are compared with the corresponding fields in specified bits (bits 56 - 60 ) of general register R 1 , STEP 714 . If the respective fields are not equal, a condition code indicating such is set, STEP 716 , and the entire storage key for the block is replaced by bits (e.g., bits 56 - 63 ) from general register R 1 , STEP 702 .
  • This determination is made based on the implementation for the particular model. For example, on some machines, a desired reference or change bit can be set directly without a quiesce, in a manner which may influence the other of these bits (making its value unpredictable), whereas clearing the desired bit requires a quiesce. Thus, setting the bit alone results in a partial setting of the key, whereas the clearing operation is more simply implemented with the existing logic to quiesce and change the entire key.
  • this model-dependent logic determines that the entire storage key is to be updated, then processing continues with STEP 716 . Otherwise, the reference bit for the storage key is replaced by a specified bit (e.g., bit 61 ) of general register R 1 and the change bit for the key is unpredictable, STEP 728 .
  • the instruction completes by setting an appropriate condition code, STEP 730 .
  • the change bit of the storage key for the designated block is compared with a specified bit (e.g., bit 62 ) of general register R 1 , INQUIRY 732 . If the bits are equal, the instruction completes by setting an appropriate condition code, STEP 720 , and the storage key remains unchanged.
  • INQUIRY 732 a determination is made as to whether the entire key is to be updated, INQUIRY 734 , using model-dependent logic like that in INQUIRY 726 above. If the entire key is to be updated, then the storage key for the designated block is replaced by the bits in general register R 1 , STEP 702 , and the instruction completes by setting an appropriate condition code, STEP 716 . However, if the entire key is not to be updated, then the change bit for the storage key is replaced by a specified bit (e.g., bit 62 ) of general register R 1 and the reference bit for the key is unpredictable, STEP 736 . The instruction completes by setting an appropriate condition code, STEP 730 .
  • a specified bit e.g., bit 62
  • bits 40 - 51 of general register R 2 designate a block in real storage, and bits 0 - 39 and 52 - 63 of the register are ignored.
  • bits 33 - 51 of general register R 2 designate a block in real storage and bits 0 - 32 and 52 - 63 of the register are ignored.
  • bits 0 - 51 of general register R 2 designate a block in real storage, and bits 52 - 63 of the register are ignored.
  • the new 7-bit storage key value, or selected bits thereof, is obtained from bit positions 56 - 62 of general register R 1 .
  • the contents of bit positions 0 - 55 and 63 of the register are ignored.
  • bit position 63 should contain a zero.
  • This capability is used by, for instance, a control program, in situations in which the control program is to set a storage key for a block of real storage.
  • the control program is coded to indicate whether the updating of one or more of the components of the storage key may be bypassed.
  • z/OS Real Storage Manager (RSM) modules are capable of using one or more capabilities of the present invention, including the enhanced controls in SSKE.
  • RSM Real Storage Manager
  • the operating system cares about setting the ACC, F and change bits of the key, but not the reference bit (since again if not already on, it will be turned on shortly when the page is referenced).
  • Many other components of an operating system or a computing environment can use one or more capabilities of the present invention, including, but not limited to, the conditional Set Storage Key Extended operation.
  • an available frame with its associated key is strategically placed in a queue of available frames 800 (see FIG. 8 a ) for selection when needed.
  • the frame is placed in the queue based on the previous values of one or more components of the key (e.g., previous values of the ACC and F components).
  • queue 800 includes, as one example, a frame queue segment 805 at one end 802 of the queue.
  • This segment includes or points to one or more frames 806 with associated storage keys 808 .
  • Each storage key of this segment has one or more components (in this example, two components) with respective specified values (e.g., a value of 8 for the ACC component and a value of 1 for the F component).
  • Frames with storage keys in which those components have values other than the respective specified values are not included in this segment.
  • the selected set of requested keys can be placed at either end of the queue or at another designated region within the queue.
  • the frame is chosen from the queue (or segment of the queue) corresponding to the ACC and F to be assigned, assuming one is available. This increases the chances that a quiesce can be avoided.
  • no checking is performed to determine if there are frames in the desired queue segment; they are either there or not. If not there, then a quiesce might have to be performed when setting the storage key to the desired value.
  • a queue in another embodiment, includes a plurality of selected sets of frames.
  • a queue 810 includes a plurality of different regions 812 a - 812 n and a particular region can be designated for frames that have storage keys in which selected components have respective specified values.
  • a queue may have any number of desired regions.
  • the appropriate frame queue segment header is chosen by indexing into the queue based on the key and fetch protect attributes and selecting a frame therefrom, if that segment is not empty. If that segment is empty, then a frame is selected from another segment.
  • the another segment is chosen, as one example, in order from the least popular key to the most popular key.
  • Described in detail above is a capability for managing the updating of storage keys, while minimizing quiesce operations.
  • the number of quiesce operations and associated overhead are reduced; performance within a single image or partition is improved; and overall system overhead is reduced, since there is less of a load on the quiesce engine.
  • an SSKE instruction format is provided that allows for masking of reference and change bit updates.
  • software is able to mask the update of the reference and/or change bit, when possible.
  • the CPU has flexibility in implementation when the access key and fetch-protection components being set by SSKE match those currently in the key. Depending on the action requested with respect to the reference and change controls, the CPU can often avoid quiescing the system as part of the storage key update.
  • processing unit includes processors, execution units, emulators and/or other similar components, and the terms “storage” and “memory” are used interchangeably.
  • storage and “memory” are used interchangeably.
  • a block of storage is defined as 4 k herein, in other embodiments, it can be a size other than 4 k.
  • a field providing an indication of includes, as examples, the field itself having the particular values or information, and/or the field including an indication of where the values or information can be found (e.g., a register, storage area, etc.).
  • One or more aspects of the present invention can be included in an article of manufacture (e.g., one or more computer program products) having, for instance, computer usable media.
  • the media has therein, for instance, computer readable program code means or logic (e.g., instructions, code, commands, etc.) to provide and facilitate the capabilities of the present invention.
  • the article of manufacture can be included as a part of a computer system or sold separately.
  • At least one program storage device readable by a machine embodying at least one program of instructions executable by the machine to perform the capabilities of the present invention can be provided.

Abstract

The updating of components of storage keys is managed. A control program indicates whether the updating of selected components of a storage key can be bypassed. If the updating of the selected components can be bypassed, then depending on the circumstances, an update of the storage key may not need to be performed, saving on quiesce operations. The likelihood that the updating of a storage key can be bypassed is enhanced by selecting a block of storage, along with its associated storage key, from a designated queue or designated region of a queue.

Description

    CROSS-REFERENCE TO RELATED APPLICATIONS
  • This application is a continuation-in-part of U.S. patent application Ser. No. 10/435,919, filed May 12, 2003, published Nov. 18, 2004, U.S. Publication No. U.S. 2004/0230749 A1, entitled “INVALIDATING STORAGE, CLEARING BUFFER ENTRIES, AND AN INSTRUCTION THEREFOR”, the entirety of which is hereby incorporated herein by reference.
  • Further, this application contains subject matter which is related to the subject matter of the following application, which is assigned to the same assignee as this application and is hereby incorporated herein by reference in its entirety:
  • “FILTERING PROCESSOR REQUESTS BASED ON IDENTIFIERS,” Siegel et al., (POU920030047US1), U.S. Ser. No. 10/436,361, filed May 12, 2003, published Nov. 18, 2004, U.S. Publication No. U.S. 2004/0230976 A1.
  • TECHNICAL FIELD
  • This invention relates, in general, to processing within a computing environment, and in particular, to managing the updating of storage keys employed during processing within the computing environment.
  • BACKGROUND OF THE INVENTION
  • Various existing computing environments, such as those based, for instance, on the z/Architecture, offered by International Business Machines Corporation, Armonk, N.Y., employ storage keys to facilitate processing within a computing environment. As one example, a storage key is associated with each block of real storage (also referred to as a frame). One function of a storage key is to provide a reliability mechanism that is used to segregate blocks of storage, ensuring that programs executing in one key do not improperly store into or, subject to a control in the key, fetch from blocks having a different key. A further function is to provide indications to an operating system as to which blocks have been referenced and changed, thus allowing the operating system to determine which blocks may need to be written to auxiliary storage.
  • A storage key is set, in one example, by a Set Storage Key Extended instruction, offered by International Business Machines Corporation, Armonk, N.Y. This instruction sets all of the constituent components of the key simultaneously, regardless of whether the various components are being set to the same value as before.
  • To improve system performance, a processor may buffer a subset of the storage keys in a local (processor-specific) area. However, when a storage key is changed, then all processors in a multi-processor configuration are to effectively observe the change simultaneously, such that stale local copies of the key are discarded. In one example, the Set Storage Key Extended instruction requires the system to be serialized to ensure that all CPUs observe the changes to the key. This serialization is performed in hardware using a fast quiesce mechanism, as an example.
  • When executing the Set Storage Key Extended operation with the fast quiesce mechanism, all processors within the same partition (or zone) as the requestor are quiesced. That is, each is to reach an interruptible point to honor the fast quiesce request. When honoring the request, the processors purge any local buffered copies of the key and all processors in that zone, besides the one that initiated the quiesce, resume execution but are prevented from accessing the relevant frame, while the operation is being performed. From an implementation perspective, the system quiesce is used to ensure that any local copy of the key is not out of date with respect to the system key and prevent inconsistent views of the key during the operation.
  • However, there is a large overhead associated with the hardware quiesce mechanism used to implement the Set Storage Key Extended instruction. For instance, only a limited number of quiesce operations (e.g., one in many environments) can be performed in the system at a time and the quiesce operations must be serialized in the storage controller hardware. This results in a large system impact for each quiesce, and therefore, for each update of the storage keys.
  • Based on the foregoing, a need exists for a capability that enables storage keys to be updated in a manner that minimizes the number of quiesces performed. In one example, a need exists for a storage key management capability that conditionally updates storage keys.
  • SUMMARY OF THE INVENTION
  • The shortcomings of the prior art are overcome and additional advantages are provided through the provision of a method of managing the updating of storage keys of a computing environment. The method includes, for instance, indicating by a control program whether one or more selected components of a storage key are to be updated; comparing one or more components of the storage key to one or more values, wherein inclusion of the one or more selected components in the comparing depends on the indicating; and updating zero or more components of the storage key based on the comparing.
  • System and computer program products corresponding to the above-summarized method are also described and claimed herein.
  • In a further aspect of the present invention, a queue stored in memory of a computing environment and accessed by a program of the computing environment to obtain a block of storage is provided. The queue includes, for instance, one region of the queue being designated to exclusively include one or more blocks of storage with associated storage keys, in which each storage key of the associated storage keys includes one or more storage key components having respective specified values; and another region of the queue being designated to include one or more blocks of storage with associated storage keys that are excluded from the one region.
  • In yet a further aspect of the present invention, a queue stored in memory of a computing environment and accessed by a program of the computing environment to obtain a block of storage is provided. The queue includes, for instance, one or more blocks of storage and associated storage keys, wherein each storage key of the associated storage keys has one or more storage key components of respective specified values, wherein a block of storage having a storage key in which at least one storage key component of the one or more storage key components has a different value from the respective specified value is excluded from the queue.
  • In yet another aspect of the present invention, an instruction to be executed within a computing environment is provided. The instruction includes, for instance, an operation code to identify an instruction to be executed; a control field used by a control program to indicate whether updating of one or more selected components of a storage key can be bypassed; a first field providing an indication of one or more values to be compared to one or more values of one or more components of the storage key; and a second field providing an indication of the storage key to be set.
  • In yet a further aspect of the present invention, a computing environment is provided that includes a memory to store an instruction to conditionally set a storage key of the computing environment, the instruction having a control field provided by a control program to indicate whether updating of one or more selected components of the storage key can be bypassed; an instruction fetch unit to fetch the instruction from memory; an instruction decode unit to decode the instruction of the instruction fetch unit; and an instruction execution unit to execute the decoded instruction.
  • Additional features and advantages are realized through the techniques of the present invention. Other embodiments and aspects of the invention are described in detail herein and are considered a part of the claimed invention.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • One or more aspects of the present invention are particularly pointed out and distinctly claimed as examples in the claims at the conclusion of the specification. The foregoing and other objects, features, and advantages of the invention are apparent from the following detailed description taken in conjunction with the accompanying drawings in which:
  • FIG. 1 depicts one embodiment of a computing environment to incorporate and use one or more aspects of the present invention;
  • FIG. 2 depicts one embodiment of further details associated with a controller of FIG. 1, in accordance with an aspect of the present invention;
  • FIG. 3 depicts one embodiment of a host computer that can emulate another computer, in accordance with an aspect of the present invention;
  • FIG. 4 depicts one example of the various components of a storage key, in accordance with an aspect of the present invention;
  • FIG. 5 depicts one embodiment of an overview of the logic for conditionally updating components of a storage key, in accordance with an aspect of the present invention;
  • FIG. 6 a depicts one embodiment of a format of a conditional Set Storage Key Extended (SSKE) instruction, in accordance with an aspect of the present invention;
  • FIG. 6 b depicts one embodiment of the fields associated with the M3 operand of the conditional SSKE instruction of FIG. 6 a, in accordance with an aspect of the present invention;
  • FIGS. 7 a-7 b depict one embodiment of the logic associated with the conditional SSKE instruction, in accordance with an aspect of the present invention;
  • FIG. 8 a depicts one embodiment of a queue of available frames configured in accordance with an aspect of the present invention; and
  • FIG. 8 b depicts another embodiment of a queue of available frames configured in accordance with an aspect of the present invention.
  • BEST MODE FOR CARRYING OUT THE INVENTION
  • In accordance with an aspect of the present invention, a storage key management capability is provided that conditionally updates selected components of a storage key, thereby minimizing quiesce operations and enhancing system performance. In a further aspect of the present invention, the storage key management capability includes placing available frames with storage keys in available frame queues that are organized in such a manner that a selected available frame has a higher probability of having a desired storage key, thus minimizing the need to update the key.
  • One embodiment of a computing environment 100 to incorporate and use one or more aspects of the present invention is described with reference to FIG. 1. Computing environment 100 is based, for instance, on the z/Architecture offered by International Business Machines Corporation, Armonk, N.Y. The z/Architecture is described in an IBM® publication entitled, “z/Architecture Principles of Operation,” IBM Publication No. SA22-7832-03, June 2004, which is hereby incorporated herein by reference in its entirety. (IBM® is a registered trademark of International Business Machines Corporation, Armonk, N.Y., U.S.A. Other names used herein may be registered trademarks, trademarks or product names of International Business Machines Corporation or other companies.) In one example, a computing environment based on the z/Architecture includes an eServer zSeries, offered by International Business Machines Corporation, Armonk, N.Y.
  • As one example, computing environment 100 includes a central processor complex (CPC) 102 coupled to a controller 120. Central processor complex 102 includes, for instance, one or more partitions or zones 104 (e.g., logical partitions LP1-LPn), one or more central processors 106 (e.g., CP1-CPm), and a hypervisor 108 (e.g., a logical partition manager), each of which is described below.
  • Each logical partition 104 is capable of functioning as a separate system. That is, each logical partition can be independently reset, initially loaded with an operating system, if desired, and operate with different programs. An operating system or application program running in a logical partition appears to have access to a full and complete system, but in reality, only a portion of it is available. A combination of hardware and Licensed Internal Code (also referred to as microcode or millicode) keeps a program in a logical partition from interfering with a program in a different logical partition. This allows several different logical partitions to operate on a single or multiple physical processors in a time sliced manner. In this particular example, each logical partition has a resident operating system 110, which may differ for one or more logical partitions. In one embodiment, operating system 110 is the Z/OS operating system, offered by International Business Machines Corporation, Armonk, N.Y.
  • Central processors 106 are physical processor resources that are allocated to the logical partitions. For instance, a logical partition 104 includes one or more logical processors, each of which represents all or a share of a physical processor resource 106 allocated to the partition. The logical processors of a particular partition 104 may be either dedicated to the partition, so that the underlying processor resource is reserved for that partition; or shared with another partition, so that the underlying processor resource is potentially available to another partition.
  • Logical partitions 104 are managed by hypervisor 108 implemented by microcode running on processors 106. Logical partitions 104 and hypervisor 108 each comprise one or more programs residing in respective portions of central storage associated with the central processors. One example of hypervisor 108 is the Processor Resource/Systems Manager (PR/SM), offered by International Business Machines Corporation, Armonk, N.Y.
  • Controller 120, which is coupled to the central processor complex, includes centralized logic responsible for arbitrating between different processors issuing requests. For instance, when controller 120 receives a request, it determines that the requester is the master processor for that request and that the other processors are slave processors; it broadcasts messages; and otherwise, handles requests. One example of a controller is described in U.S. Pat. No. 6,199,219, entitled “System Serialization With Early Release Of Individual Processor,” Webb et al., Sep. 12, 2000, which is hereby incorporated herein by reference in its entirety. Further details are also described with reference to FIG. 2.
  • FIG. 2 depicts one example of a controller 200 coupled to a plurality of central processors (CPUs) 201. In this example, two central processors are depicted. However, it will be understood that more than two processors may be coupled to controller 200.
  • Controller 200 includes various controls including, for instance, system serialization controls 202. The system serialization controls are used to ensure that operations that are to be serialized, such as update operations, are serialized, in that only one such operation (or a limited number) is in progress at one time in the computing environment. It also monitors the sequence of events for that operation.
  • Controller 200 is coupled to each central processor via various interfaces. For instance, an interface 204 is used by the Licensed Internal Code in a central processor to send “control” commands to the controller, which specify an action to be taken, and to send “sense” commands, which return information from the controller. Another interface is a response bus 206, which is used to return information from the controller for the “sense” commands. The response bus is also used to communicate command status for “control” commands, and may be set from a plurality of sources within the controller, including the system serialization controls. A central processor can use this interface to sense the state of the system serialization controls in controller 200.
  • A further interface is interface 208, which is used by the controller to send commands to each CPU. This may also be controlled from a plurality of sources within the controller, including system serialization controls 202. A yet further interface is interface 210, which provides signals to cache controls 212 of central processor 201. Cache controls 212 process commands, in response to the signals. In one example, cache controls 212 process commands that affect one or more buffers, such as Translation Lookaside Buffers (TLBs) 213.
  • In addition to cache controls 212, central processor 201 includes various other controls, including for instance, interrupt controls 220 and execution controls 222. In response to particular events, interrupt controls 220 cause an internal interruption to be pending in the CPU, which in turn, causes execution controls 222 to suspend program instruction processing, at the next interruptible point. In response to the interruption, execution controls 222 invokes a Licensed Internal Code routine to set a broadcast operation allowed latch 224 to enable cache controls 212 to process pending commands.
  • Central processor 201 also includes a CPU quiesced latch 226 that indicates whether or not the central processor is quiesced.
  • The above-described computing environment is only one example. Many variations are possible without departing from the spirit of the present invention. For example, one or more partitions can be running in different architecture modes. Further, as other examples, the environment need not be partitioned and/or the environment need not be based on the z/Architecture, but instead, can be based on other architectures offered by Intel, Sun Microsystems, as well as others. Moreover, an environment may include an emulator (e.g., software or other emulation mechanisms) in which a particular architecture or a subset thereof is emulated. In such an environment, one or more emulation functions of the emulator can implement one or more aspects of the present invention, even though a computer executing the emulator may have a different architecture than the capabilities being emulated. As one example, in emulation mode, the specific instruction or operation being emulated is decoded, and an appropriate emulation function is built to implement the individual instruction or operation.
  • Further details of an emulation environment are described with reference to FIG. 3. As one example, a host computer 300 is capable of emulating another architecture, computer and/or processing capabilities of another computer. For instance, host computer 300 is based on an Intel architecture; a RISC architecture, such as PowerPC; a SPARC architecture, offered by Sun Microsystems; or another architecture, and is capable of emulating the z/Architecture of IBM® or another architecture of IBM® or another entity.
  • Host computer 300 includes, for instance, a memory 302 to store instructions and data; an instruction fetch unit 304 to fetch instructions from memory 302, and to optionally, provide local buffering for the fetched instructions; an instruction decode unit 306 to receive instructions from instruction fetch unit 304 and to determine the type of instructions that have been fetched; and an instruction execution unit 308 to execute the instructions. Execution may include loading data into a register from memory 302; storing data back to memory from a register; or performing some type of arithmetic or logical operation, as determined by the decode unit.
  • In one example, each unit described above is implemented in software. For instance, the operations being performed by the units are implemented as one or more subroutines within emulator software. In another example, one or more of the operations are implemented in firmware, hardware, software or some combination thereof.
  • Further, although FIG. 3 is described with reference to emulation, the environment of FIG. 3 need not be an emulation environment. In another example, instructions are executed in a native environment, and the operations are implemented in hardware, firmware, software or some combination thereof.
  • In computing environments based on the z/Architecture, as an example, each block (e.g., 4 k bytes) of storage (e.g., real storage) has associated therewith a storage key. As described above, a storage key provides a reliability mechanism that is used to segregate blocks of storage, ensuring that programs executing in one key do not accidentally store into blocks having a different key. Further, a storage key provides indications to an operating system as to which blocks have been referenced and changed, thus allowing the operating system to determine which blocks may need to be written to auxiliary storage.
  • One example of a storage key is described with reference to FIG. 4. A storage key 400 includes for instance, an access control (ACC) component 402, a fetch protection (F) component 404, a reference (R) component 406, and a change (C) component 408, each of which is described below.
  • Access control bits (ACC) 402: If a reference is subject to key-controlled protection, the access control bits are matched with an access key (e.g., of the program status word or from an instruction operand) when information is stored, or when information is fetched from a location that is protected against fetching.
  • Fetch-protection bit (F) 404: If a reference is subject to key-controlled protection, the fetch protection bit controls whether key-controlled protection applies to fetch-type references; a 0 indicates that only store-type references are monitored and that fetching with any access key is permitted; a 1 indicates that key-control protection applies to both fetching and storing. No distinction is made between the fetching of instructions and of operands.
  • Reference bit (R) 406: The reference bit normally is set to 1 each time a location in the corresponding storage block is referred to either for storing or for fetching of information.
  • Change bit (C) 408: The change bit is set to 1 each time information is stored at a location in the corresponding storage block.
  • Storage keys are not part of addressable storage. In one example, to set a storage key, a Set Storage Key Extended instruction is used. One embodiment of this instruction is described in an IBM® publication entitled, “z/Architecture Principles of Operation,” IBM Publication No. SA22-7832-03, June 2004, which is hereby incorporated herein by reference in its entirety. This instruction sets all components of the storage key, even if one or more of the components are being updated to the same value as before. Moreover, as described above, this instruction requires the system to be serialized to ensure that all CPUs observe the changes to the key.
  • This unconditional updating and serialization associated with updating storage keys, and in particular, associated with the Set Storage Key Extended instruction, have negative impacts on system performance and overhead. Thus, in accordance with an aspect of the present invention, a capability is provided that enables conditional updating of storage keys, and thus, conditional system serialization. As one example, the operating system or other control program (both of which are referred to herein as the program) of the computing environment manages the conditional updating by indicating which components of a storage key may be bypassed for updating. The program has control over the updates and it allows conditional bypassing of updates, as described in further detail below.
  • One embodiment of an overview of the conditional updating aspect of the present invention is described with reference to FIG. 5. Initially, the operating system or other control program indicates whether one or more selected components of a storage key are to be (i.e., are required to be) updated, STEP 500. For instance, the operating system may indicate that the change control and/or reference control need not be updated.
  • Thereafter, comparisons are performed on one or more components of the storage key, STEP 502. Inclusion of the one or more selected components in the comparing depends on the operating system indication. For instance, if the indicating specifies that the reference control and/or change control need not be updated, then the comparing is allowed to ignore those controls. If the comparison of a component indicates that an update is to be performed, INQUIRY 504, then an update of one or more components of the storage key is performed, STEP 506. In one embodiment, only the components that need updating are updated. In other embodiments, however, all of the components are updated, even those components that do not need updating, if an updating is to be performed. During the updating, serialization may be performed as described below. However, not all updating requires serialization.
  • Returning to INQUIRY 504, if the comparison indicates that an update is not needed, then it is not necessary to perform the update and any required serialization.
  • In one example, the conditional updating is performed via a conditional Set Storage Key Extended instruction. This instruction allows the program to conditionally bypass the updating of, for instance, the reference component, the change component or both, when circumstances allow. That is, software (e.g., the program) can indicate that either or both of these components do not need to be updated. This allows the CPU flexibility in implementation when the access key and fetch protection controls being set by the Set Storage Key Extended instruction match those currently in the key to be updated. Depending on the action requested with respect to the reference and change controls, the CPU can often avoid quiescing the system as part of the storage key update, as described in further detail below.
  • One embodiment of a format of a conditional Set Storage Key Extended (SSKE) instruction is described with reference to FIG. 6 a. A conditional SSKE instruction 600 includes, for instance, an operation code 602 designating the Set Storage Key Extended instruction; an M3 operand 604 used by the program to indicate which components of the storage key need not be updated; a register designation 606 selecting a register that includes values to be compared to components of the storage key; and a register designation 608 selecting a register that includes the address of the storage key to be conditionally set.
  • Further details regarding the M3 operand are described with reference to FIG. 6 b. In one example, M3 operand 604 includes a reference bit update mask (MR) 610 and a change bit update mask (MC) 612. MR 610 controls whether updates to the reference component of the storage key may be bypassed, and MC 612 controls whether updates to the change component of the storage key may be bypassed. Use of these controls is described further with reference to the logic flow of FIGS. 7 a-7 b.
  • In particular, one embodiment of the logic associated with executing a conditional Set Storage Key Extended instruction is described with reference to FIGS. 7 a-7 b. As one example, this instruction is invoked by the operating system (or a component thereof) and executed in millicode of a processor of the computing environment.
  • Initially, a determination is made as to whether the conditional Set Storage Key Extended facility is installed, INQUIRY 700 (FIG. 7 a). This determination is made, by, for instance, checking an indicator that specifies whether the facility is installed. If the facility is not installed, then processing occurs as before and the entire key is set regardless of the changes to the components, STEP 702 (FIG. 7 b). That is, when the conditional Set Storage Key Extended facility is not installed, the M3 operand is ignored, and the storage key for the block that is addressed by the contents of general register R2 is replaced by values (e.g., bits) from general register R1, STEP 702, and the instruction completes without changing the condition code, STEP 704.
  • However, if the conditional Set Storage Key Extended facility is installed, INQUIRY 700, then a further determination is made as to whether the reference bit update mask (MR) and the change bit update mask (MC) are zero, INQUIRY 706. If both the MR and MC controls are zero, then, the instruction completes as though the conditional Set Storage Key Extended facility is not installed. Again, the storage key for the block that is addressed by the contents of general register R2 is replaced by bits from general register R1, STEP 702, and the instruction completes without changing the condition code, STEP 704. When the conditional-SSKE facility is not installed, the M3 field of the instruction (including the MR and MC bits) is not defined, thus these bits of the instruction should contain zeros. By completing as though the conditional-SSKE facility was not installed when both the MR and MC controls are zero, backward compatibility is provided to programs that do not support the facility.
  • When either or both the reference bit update mask and change bit update mask controls are one, then a copy of the storage key (or a portion thereof) for the block addressed by general register R2 is saved in a temporary copy (referred to herein as OKey), STEP 708. If an unrecoverable error, such as an invalid checking block code, is detected when fetching the storage key, INQUIRY 710, then a condition code indicating such is set, STEP 711 and the entire storage key for the block is replaced by specified bits (e.g., bits 56-62) of general register R1, STEP 702, and the contents of specified bits (e.g., bits 48-55) of general register R1 are unpredictable.
  • Returning to INQUIRY 710, if an uncorrectable error has not occurred when accessing the storage key, then prior to any modification, the contents of the original storage key for the block that is addressed by general register R2 are placed in specified bit positions (e.g., bits 48-54) of general register R1 and a specified bit (e.g., bit 55) of general register R1 is set to zero, STEP 712. Other bits (e.g., bits 0-47 and 56-63) of the register remain unchanged.
  • Thereafter, the access control bits and fetch protection bit of the storage key for the designated block are compared with the corresponding fields in specified bits (bits 56-60) of general register R1, STEP 714. If the respective fields are not equal, a condition code indicating such is set, STEP 716, and the entire storage key for the block is replaced by bits (e.g., bits 56-63) from general register R1, STEP 702.
  • However, when the access control and fetch protection bits in the storage key are equal to the respective bits in general register R1, processing continues with a determination as to which of the MR and MC controls are equal to 1, STEP 718. When both the MR and MC controls are 1, indicating updating of the reference and change components can be bypassed, the instruction completes by setting an appropriate condition code, STEP 720, and the storage key remains unchanged. Therefore, in this case, no quiesce is performed because no updates are needed.
  • If, however, one of the MR and MC controls is not equal to 1, then a further determination is made as to whether it is the MR control that is equal to 0, INQUIRY 722. If the MR control is 0 and the MC control is 1, then the reference bit of the storage key for the designated block is compared with a specified bit (e.g., bit 61) of general register R1, STEP 724. If the bits are equal, the instruction completes by setting an appropriate condition code, STEP 720, and the storage key remains unchanged. Again, no quiesce is performed, since no update is necessary.
  • Returning to INQUIRY 724, if the bits are not equal, then a determination is made as to whether the entire storage key for the designated block is to be replaced by the bits in general register R1, INQUIRY 726. This determination is made based on the implementation for the particular model. For example, on some machines, a desired reference or change bit can be set directly without a quiesce, in a manner which may influence the other of these bits (making its value unpredictable), whereas clearing the desired bit requires a quiesce. Thus, setting the bit alone results in a partial setting of the key, whereas the clearing operation is more simply implemented with the existing logic to quiesce and change the entire key. Accordingly, if this model-dependent logic determines that the entire storage key is to be updated, then processing continues with STEP 716. Otherwise, the reference bit for the storage key is replaced by a specified bit (e.g., bit 61) of general register R1 and the change bit for the key is unpredictable, STEP 728. The instruction completes by setting an appropriate condition code, STEP 730.
  • Returning to INQUIRY 722, when the MC control is zero and the MR control is one, the change bit of the storage key for the designated block is compared with a specified bit (e.g., bit 62) of general register R1, INQUIRY 732. If the bits are equal, the instruction completes by setting an appropriate condition code, STEP 720, and the storage key remains unchanged.
  • However, if the bits are not equal, INQUIRY 732, a determination is made as to whether the entire key is to be updated, INQUIRY 734, using model-dependent logic like that in INQUIRY 726 above. If the entire key is to be updated, then the storage key for the designated block is replaced by the bits in general register R1, STEP 702, and the instruction completes by setting an appropriate condition code, STEP 716. However, if the entire key is not to be updated, then the change bit for the storage key is replaced by a specified bit (e.g., bit 62) of general register R1 and the reference bit for the key is unpredictable, STEP 736. The instruction completes by setting an appropriate condition code, STEP 730.
  • In the 24-bit addressing mode, bits 40-51 of general register R2 designate a block in real storage, and bits 0-39 and 52-63 of the register are ignored. In the 31-bit addressing mode, bits 33-51 of general register R2 designate a block in real storage and bits 0-32 and 52-63 of the register are ignored. In the 64-bit addressing mode, bits 0-51 of general register R2 designate a block in real storage, and bits 52-63 of the register are ignored.
  • The new 7-bit storage key value, or selected bits thereof, is obtained from bit positions 56-62 of general register R1. The contents of bit positions 0-55 and 63 of the register are ignored. When the conditional Set Storage Key Extended facility is installed, and either or both the MR and MC bits are 1, bit position 63 should contain a zero.
  • Described in detail above is a capability for managing the updating of storage keys. This capability is used by, for instance, a control program, in situations in which the control program is to set a storage key for a block of real storage. The control program is coded to indicate whether the updating of one or more of the components of the storage key may be bypassed.
  • As one particular example, z/OS Real Storage Manager (RSM) modules are capable of using one or more capabilities of the present invention, including the enhanced controls in SSKE. For example, in a first-reference fault scenario where both the reference and change bits are not important (since if they are not already on, they are turned on by the hardware when something is written into the page), using the conditional SSKE instruction of an aspect of the present invention avoids a quiesce operation, if the ACC and F bits of the key match the desired (or specified) value. When a page is brought in from auxiliary storage and if the auxiliary copy is being freed, the operating system cares about setting the ACC, F and change bits of the key, but not the reference bit (since again if not already on, it will be turned on shortly when the page is referenced). Many other components of an operating system or a computing environment can use one or more capabilities of the present invention, including, but not limited to, the conditional Set Storage Key Extended operation.
  • To increase performance associated with the conditional Set Storage Key Extended instruction, it is desirous to select blocks of storage (e.g., frames), when needed, that already have the desired storage key. By making such a selection, when the Set Storage Key Extended instruction is invoked, the key does not need to be updated, thus potentially saving a quiesce operation. Therefore, in a further aspect of the present invention, an available frame with its associated key is strategically placed in a queue of available frames 800 (see FIG. 8 a) for selection when needed. The frame is placed in the queue based on the previous values of one or more components of the key (e.g., previous values of the ACC and F components). For instance, frames having a storage key with the selected combination of ACC=8 and F=1 (referred to herein as a selected set) are placed at one end 802 of the available frame queue, while frames having storage keys with combinations other than ACC=8 and F=1 are placed at one or more other locations 804 of the queue and not in any particular order.
  • In particular, as shown in FIG. 8 a, queue 800 includes, as one example, a frame queue segment 805 at one end 802 of the queue. This segment includes or points to one or more frames 806 with associated storage keys 808. Each storage key of this segment has one or more components (in this example, two components) with respective specified values (e.g., a value of 8 for the ACC component and a value of 1 for the F component).
  • Frames with storage keys in which those components have values other than the respective specified values are not included in this segment. For example, storage keys in which ACC=8 and F=0, or ACC=any value other than 8 and F=0 or 1 are not included in this segment, but instead, are placed at another end of the queue. In this particular example, only storage keys with ACC=8 and F=1 are included in segment 805.
  • The selected set of requested keys can be placed at either end of the queue or at another designated region within the queue. By setting up the queue in this manner, when a new frame is requested, the frame is chosen from the queue (or segment of the queue) corresponding to the ACC and F to be assigned, assuming one is available. This increases the chances that a quiesce can be avoided. However, in this implementation, no checking is performed to determine if there are frames in the desired queue segment; they are either there or not. If not there, then a quiesce might have to be performed when setting the storage key to the desired value.
  • In another embodiment, a queue includes a plurality of selected sets of frames. For instance, as depicted in FIG. 8 b, a queue 810 includes a plurality of different regions 812 a-812 n and a particular region can be designated for frames that have storage keys in which selected components have respective specified values. For instance, region 812 a is designated for frames having storage keys with ACC=0, F=1; region 812 c is designated for frames having storage keys with ACC=1, F=1, etc. Although various regions are shown in this one example, a queue may have any number of desired regions.
  • To obtain a frame from a queue organized in this manner, the appropriate frame queue segment header is chosen by indexing into the queue based on the key and fetch protect attributes and selecting a frame therefrom, if that segment is not empty. If that segment is empty, then a frame is selected from another segment. The another segment is chosen, as one example, in order from the least popular key to the most popular key.
  • There may be one or more available frame queues organized, as described above, and one or more of those queues may be segmented to include frames with key components of certain values. Further, there may be one queue for each key type. For instance, one queue is organized in such a manner that it only includes storage keys in which ACC and F equal respective specified values. Many other variations exist and are considered a part of the claimed invention.
  • Although in the above embodiments, storage keys having a combination of ACC=x and F=y are described, the segmentation may be based, in other embodiments, on the value of just one selected component or on the values of more than two selected components or on the values of selected components other than ACC and/or F. Many variations exist and are considered a part of the claimed invention.
  • Described in detail above is a capability for managing the updating of storage keys, while minimizing quiesce operations. Advantageously, with one or more aspects of the present invention, the number of quiesce operations and associated overhead are reduced; performance within a single image or partition is improved; and overall system overhead is reduced, since there is less of a load on the quiesce engine.
  • In one embodiment, an SSKE instruction format is provided that allows for masking of reference and change bit updates. In particular, software is able to mask the update of the reference and/or change bit, when possible. Further, the CPU has flexibility in implementation when the access key and fetch-protection components being set by SSKE match those currently in the key. Depending on the action requested with respect to the reference and change controls, the CPU can often avoid quiescing the system as part of the storage key update.
  • The various embodiments described above are just examples. There may be many variations to these embodiments without departing from the spirit of the present invention. For instance, although a logically partitioned environment is described herein, this is only one example. Aspects of the invention are beneficial to many types of environments, including other environments that have a plurality of zones, and non-partitioned environments. Further, there may be no central processor complexes, but yet, multiple processors coupled together. Yet further, one or more aspects of the invention are applicable to single processor environments.
  • Moreover, although a specific instruction is described herein, many variations can be made without departing from the spirit of the present invention. For example, different opcodes, different fields, different registers or even no registers, different bits, etc. may be used. As one particular example, other instruction set architectures may define an equivalent instruction in somewhat different ways (e.g., different opcodes, different fields in the instruction, different registers used, etc.), but one or more aspects of the present invention still apply. Many other variations are also considered a part of the claimed invention. For instance, although certain bits are specified herein, different bits may be used without departing from the spirit of the present invention. Further, sizes other than bits may be used. Again, many other variations can be made without departing from the spirit of the present invention.
  • As used herein, the term “processing unit” includes processors, execution units, emulators and/or other similar components, and the terms “storage” and “memory” are used interchangeably. Further, although a block of storage is defined as 4 k herein, in other embodiments, it can be a size other than 4 k. Moreover, the phrase “a field providing an indication of”, as used herein, includes, as examples, the field itself having the particular values or information, and/or the field including an indication of where the values or information can be found (e.g., a register, storage area, etc.).
  • The capabilities of one or more aspects of the present invention can be implemented in software, firmware, hardware or some combination thereof.
  • One or more aspects of the present invention can be included in an article of manufacture (e.g., one or more computer program products) having, for instance, computer usable media. The media has therein, for instance, computer readable program code means or logic (e.g., instructions, code, commands, etc.) to provide and facilitate the capabilities of the present invention. The article of manufacture can be included as a part of a computer system or sold separately.
  • Additionally, at least one program storage device readable by a machine embodying at least one program of instructions executable by the machine to perform the capabilities of the present invention can be provided.
  • The flow diagrams depicted herein are just examples. There may be many variations to these diagrams or the steps (or operations) described therein without departing from the spirit of the invention. For instance, the steps may be performed in a differing order, or steps may be added, deleted or modified. All of these variations are considered a part of the claimed invention.
  • Although preferred embodiments have been depicted and described in detail herein, it will be apparent to those skilled in the relevant art that various modifications, additions, substitutions and the like can be made without departing from the spirit of the invention and these are therefore considered to be within the scope of the invention as defined in the following claims.

Claims (33)

1. A method of managing updating of storage keys of a computing environment, said method comprising:
indicating by a control program whether one or more selected components of a storage key are to be updated;
comparing one or more components of the storage key to one or more values, wherein inclusion of the one or more selected components in the comparing depends on the indicating; and
updating zero or more components of the storage key based on the comparing.
2. The method of claim 1, wherein a storage key comprises a key associated with a block of storage of the computing environment, said key being employed in at least one of segregating blocks of storage and indicating to an operating system of the computing environment whether the block has been at least one of referenced and changed.
3. The method of claim 1, wherein the one or more selected components comprise fewer components than all of the components of the storage key.
4. The method of claim 1, wherein the indicating comprises providing one or more masks for the one or more selected components to indicate whether the one or more selected components are to be updated.
5. The method of claim 4, wherein the one or more selected components comprise a change control that specifies whether a storage block associated with the storage key has been changed and a reference control that specifies whether the storage block has been referenced.
6. The method of claim 1, wherein the storage key is associated with a block of storage of the computing environment, and wherein the comparing comprises comparing one or more values of the one or more components to one or more values of a storage key previously associated with the block of storage.
7. The method of claim 1, wherein the updating comprises updating one or more components of the storage key, but fewer than all of the components of the storage key.
8. The method of claim 1, wherein the storage key is associated with a block of storage of the computing environment, and wherein:
the indicating indicates whether updating of at least one of a reference control and a change control can be bypassed;
the comparing compares values of an access control and a fetch control to values of an access control and a fetch control of a storage key previously associated with the block of storage, the comparing refraining from performing a comparison on the reference control, should the indicating specify updating of the reference control can be bypassed and the comparing refraining from performing a comparison on the change control, should the indicating specify updating of the change control can be bypassed; and
the updating updates at least the access control, should the comparing of the access controls indicate a difference, and the updating updates at least the fetch control, should the comparing of the fetch controls indicate a difference.
9. The method of claim 1, wherein at least one of the indicating, comparing and updating is performed via an instruction executing in the computing environment.
10. The method of claim 9, wherein the instruction is implemented in at least one of hardware, firmware and software.
11. The method of claim 9, wherein the instruction is executed by a processing unit emulating an architecture of the instruction.
12. The method of claim 1, wherein the storage key is associated with a block of storage, and wherein the method further comprises selecting the block of storage from a queue, wherein the selecting comprises selecting the block of storage from one of: a queue designated to exclusively include blocks of storage with storage keys having one or more storage key components with respective specified values, and a queue having a plurality of regions in which each region of one or more regions of the plurality of regions of the queue is designated to include blocks of storage with storage keys having one or more one storage key components with respective specified values.
13. A queue stored in memory of a computing environment and accessed by a program of the computing environment to obtain a block of storage, said queue comprising:
one region of the queue, said one region being designated to exclusively include one or more blocks of storage with associated storage keys, in which each storage key of the associated storage keys includes one or more storage key components having respective specified values; and
another region of the queue, said another region being designated to include one or more blocks of storage with associated storage keys that are excluded from the one region.
14. The queue of claim 13, wherein the one region is at one end of the queue.
15. The queue of claim 13, wherein the one region is at one location within the queue and the another region is at another location within the queue.
16. The queue of claim 13, further comprising one or more additional regions, wherein an additional region of the one or more additional regions is designated for one or more blocks of storage with associated storage keys, in which each storage key of the associated storage keys of this additional region includes one or more storage key components having respective selected values, wherein at least one respective selected value of at least one storage key component differs from at least one respective specified value of the corresponding at least one storage key component.
17. An instruction to be executed within a computing environment, said instruction comprising:
an operation code to identify an instruction to be executed;
a control field used by a control program to indicate whether updating of one or more selected components of a storage key can be bypassed;
a first field providing an indication of one or more values to be compared to one or more values of one or more components of the storage key; and
a second field providing an indication of the storage key to be set.
18. The instruction of claim 17, wherein the operation code comprises a code specifying a set storage key extended instruction.
19. The instruction of claim 17, wherein the computing environment comprises a processing unit to execute the instruction, the processing unit emulating an architecture of the instruction.
20. The instruction of claim 17, wherein the control field comprises at least one mask used in the indication.
21. A computing environment comprising:
a memory to store an instruction to conditionally set a storage key of the computing environment, the instruction having a control field provided by a control program to indicate whether updating of one or more selected components of the storage key can be bypassed;
an instruction fetch unit to fetch the instruction from memory;
an instruction decode unit to decode the instruction of the instruction fetch unit; and
an instruction execution unit to execute the decoded instruction.
22. The computing environment of claim 21, wherein one or more of the instruction fetch unit, the instruction decode unit and the instruction execution unit are implemented as one or more routines of an emulator.
23. A system of managing updating of storage keys of a computing environment, said system comprising:
a control program to indicate whether one or more selected components of a storage key are to be updated; and
a processing unit to compare one or more components of the storage key to one or more values, wherein inclusion of the one or more selected components in the comparing depends on the indication, and to update zero or more components of the storage key based on the comparison.
24. The system of claim 23, wherein the control program provides one or more masks for the one or more selected components to indicate whether the one or more selected components are to be updated.
25. The system of claim 23, wherein the storage key is associated with a block of storage of the computing environment, and wherein the compare comprises comparing one or more values of the one or more components to one or more values of a storage key previously associated with the block of storage.
26. The system of claim 23, wherein the storage key is associated with a block of storage of the computing environment, and wherein:
the control program indicates whether updating of at least one of a reference control and a change control can be bypassed;
the compare compares values of an access control and a fetch control to values of an access control and a fetch control of a storage key previously associated with the block of storage, the compare refraining from performing a comparison on the reference control, should the indication specify updating of the reference control can be bypassed and the compare refraining from performing a comparison on the change control, should the indication specify updating of the change control can be bypassed; and
the update updates at least the access control, should the comparison of the access controls indicate a difference, and the updating updates at least the fetch control, should the comparison of the fetch controls indicate a difference.
27. An article of manufacture comprising:
at least one computer usable medium having computer readable program code logic to manage updating of storage keys of a computing environment, the computer readable program code logic comprising:
compare logic to compare one or more components of a storage key to one or more values, wherein inclusion of one or more selected components of the storage key in the comparing depends on whether a control program has indicated that the one or more selected components of the storage key are to be updated; and
update logic to update zero or more components of the storage key based on the comparing.
28. The article of manufacture of claim 27, wherein the control program indicates the one or more selected components by providing one or more masks for the one or more selected components set to indicate whether the one or more selected components are to be updated.
29. The article of manufacture of claim 27, wherein the storage key is associated with a block of storage of the computing environment, and wherein the compare logic comprises logic to compare one or more values of the one or more components to one or more values of a storage key previously associated with the block of storage.
30. The article of manufacture of claim 27, wherein the storage key is associated with a block of storage of the computing environment, and wherein:
the compare logic compares values of an access control and a fetch control to values of an access control and a fetch control of a storage key previously associated with the block of storage, the comparing refraining from performing a comparison on a reference control, should the control program specify updating of the reference control can be bypassed and the comparing refraining from performing a comparison on a change control, should the control program specify updating of the change control can be bypassed; and
the update logic updates at least the access control, should the comparing of the access controls indicate a difference, and the updating updates at least the fetch control, should the comparing of the fetch controls indicate a difference.
31. The article of manufacture of claim 27, wherein the storage key is associated with a block of storage, and wherein the computer readable program code logic further comprises select logic to select the block of storage from a queue, wherein the select logic selects the block of storage from one of: a queue designated to exclusively include blocks of storage with storage keys having one or more storage key components with respective specified values, and a queue having a plurality of regions in which each region of one or more regions of the plurality of regions of the queue is designated to include blocks of storage with storage keys having one or more storage key components with respective specified values.
32. A queue stored in memory of a computing environment and accessed by a program of the computing environment to obtain a block of storage, said queue comprising:
one or more blocks of storage and associated storage keys, wherein each storage key of the associated storage keys has one or more storage key components of respective specified values, wherein a block of storage having a storage key in which at least one storage key component of the one or more storage key components has a different value from the respective specified value is excluded from the queue.
33. The queue of claim 32, wherein the one or more components comprise an access control having a first specified value and a fetch control having a second specified value.
US11/204,131 2003-05-12 2005-08-15 Managing the updating of storage keys Abandoned US20060036824A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US11/204,131 US20060036824A1 (en) 2003-05-12 2005-08-15 Managing the updating of storage keys

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/435,919 US7284100B2 (en) 2003-05-12 2003-05-12 Invalidating storage, clearing buffer entries, and an instruction therefor
US11/204,131 US20060036824A1 (en) 2003-05-12 2005-08-15 Managing the updating of storage keys

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US10/435,919 Continuation-In-Part US7284100B2 (en) 2003-05-12 2003-05-12 Invalidating storage, clearing buffer entries, and an instruction therefor

Publications (1)

Publication Number Publication Date
US20060036824A1 true US20060036824A1 (en) 2006-02-16

Family

ID=33417045

Family Applications (7)

Application Number Title Priority Date Filing Date
US10/435,919 Active 2024-04-14 US7284100B2 (en) 2003-05-12 2003-05-12 Invalidating storage, clearing buffer entries, and an instruction therefor
US11/199,666 Expired - Lifetime US7197601B2 (en) 2003-05-12 2005-08-09 Method, system and program product for invalidating a range of selected storage translation table entries
US11/204,321 Expired - Lifetime US7281115B2 (en) 2003-05-12 2005-08-15 Method, system and program product for clearing selected storage translation buffer entries
US11/204,131 Abandoned US20060036824A1 (en) 2003-05-12 2005-08-15 Managing the updating of storage keys
US11/733,224 Active 2025-09-09 US7890731B2 (en) 2003-05-12 2007-04-10 Clearing selected storage translation buffer entries based on table origin address
US13/005,659 Expired - Lifetime US8122224B2 (en) 2003-05-12 2011-01-13 Clearing selected storage translation buffer entries bases on table origin address
US13/349,724 Expired - Fee Related US8452942B2 (en) 2003-05-12 2012-01-13 Invalidating a range of two or more translation table entries and instruction therefore

Family Applications Before (3)

Application Number Title Priority Date Filing Date
US10/435,919 Active 2024-04-14 US7284100B2 (en) 2003-05-12 2003-05-12 Invalidating storage, clearing buffer entries, and an instruction therefor
US11/199,666 Expired - Lifetime US7197601B2 (en) 2003-05-12 2005-08-09 Method, system and program product for invalidating a range of selected storage translation table entries
US11/204,321 Expired - Lifetime US7281115B2 (en) 2003-05-12 2005-08-15 Method, system and program product for clearing selected storage translation buffer entries

Family Applications After (3)

Application Number Title Priority Date Filing Date
US11/733,224 Active 2025-09-09 US7890731B2 (en) 2003-05-12 2007-04-10 Clearing selected storage translation buffer entries based on table origin address
US13/005,659 Expired - Lifetime US8122224B2 (en) 2003-05-12 2011-01-13 Clearing selected storage translation buffer entries bases on table origin address
US13/349,724 Expired - Fee Related US8452942B2 (en) 2003-05-12 2012-01-13 Invalidating a range of two or more translation table entries and instruction therefore

Country Status (16)

Country Link
US (7) US7284100B2 (en)
EP (5) EP1588267B1 (en)
JP (1) JP4608484B2 (en)
KR (2) KR100834365B1 (en)
CN (2) CN100397368C (en)
AT (5) ATE382896T1 (en)
CY (2) CY1111421T1 (en)
DE (6) DE602004024254D1 (en)
DK (4) DK1653365T3 (en)
ES (5) ES2336973T3 (en)
GB (3) GB2413876B (en)
IL (1) IL171905A (en)
PL (4) PL1588267T3 (en)
PT (2) PT1653365E (en)
SI (2) SI1653343T1 (en)
WO (1) WO2004099997A1 (en)

Cited By (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090182966A1 (en) * 2008-01-11 2009-07-16 International Business Machines Corporation Dynamic address translation with frame management
US20090182971A1 (en) * 2008-01-11 2009-07-16 International Business Machines Corporation Dynamic address translation with fetch protection
US20090182973A1 (en) * 2008-01-11 2009-07-16 International Business Machines Corporation Dynamic address translation with load real address
US20090182974A1 (en) * 2008-01-11 2009-07-16 International Business Machines Corporation Dynamic address translation with access control
US20090182964A1 (en) * 2008-01-11 2009-07-16 International Business Machines Corporation Dynamic address translation with format control
WO2009087134A1 (en) * 2008-01-11 2009-07-16 International Business Machines Corporation Dynamic address translation with frame management
US20090182975A1 (en) * 2008-01-11 2009-07-16 International Business Machines Corporation Dynamic address translation with load page table entry address
US20090182972A1 (en) * 2008-01-11 2009-07-16 International Business Machines Corporation Dynamic address translation with format control
US20090193214A1 (en) * 2008-01-11 2009-07-30 International Business Machines Corporation Dynamic address translation with frame management
US20090216984A1 (en) * 2008-02-25 2009-08-27 International Business Machines Corporation Optimizations of a perform frame management function issued by pageable guests
US20090216995A1 (en) * 2008-02-26 2009-08-27 International Business Machines Corporation System, method and computer program product for providing quiesce filtering for shared memory
US20090216992A1 (en) * 2008-02-26 2009-08-27 International Business Machines Corporation Dynamic address translation with translation exception qualifier
US20090217098A1 (en) * 2008-02-25 2009-08-27 International Business Machines Corporation Managing use of storage by multiple pageable guests of a computing environment
US20090217264A1 (en) * 2008-02-26 2009-08-27 International Business Machines Corporation Method, system and computer program product for providing filtering of guest2 quiesce requests
US20090216929A1 (en) * 2008-02-26 2009-08-27 International Business Machines Corporation System, method and computer program product for providing a programmable quiesce filtering register
US20090216963A1 (en) * 2008-02-26 2009-08-27 International Business Machines Corporation System, method and computer program product for providing a shared memory translation facility
US7787479B2 (en) 2005-04-28 2010-08-31 Fujitsu Ten Limited Gateway apparatus and routing method
US20110145510A1 (en) * 2009-12-14 2011-06-16 International Business Machines Corporation Reducing interprocessor communications pursuant to updating of a storage key
US20110145511A1 (en) * 2009-12-14 2011-06-16 International Business Machines Corporation Page invalidation processing with setting of storage key to predefined value
US20110145546A1 (en) * 2009-12-14 2011-06-16 International Business Machines Corporation Deferred page clearing in a multiprocessor computer system
US20110145550A1 (en) * 2009-12-15 2011-06-16 International Business Machines Corporation Non-quiescing key setting facility
US8019964B2 (en) 2008-01-11 2011-09-13 International Buisness Machines Corporation Dynamic address translation with DAT protection
US8117417B2 (en) 2008-01-11 2012-02-14 International Business Machines Corporation Dynamic address translation with change record override
US20130212682A1 (en) * 2012-02-09 2013-08-15 International Business Machines Corporation Automatic discovery of system integrity exposures in system code
CN104903873A (en) * 2012-06-15 2015-09-09 国际商业机器公司 Compare and replace DAT table entry
US11151267B2 (en) * 2019-02-25 2021-10-19 International Business Machines Corporation Move data and set storage key based on key function control
US20220012374A1 (en) * 2019-11-07 2022-01-13 Micron Technology, Inc. Semiconductor device with secure access key and associated methods and systems
US20220129392A1 (en) * 2019-11-07 2022-04-28 Micron Technology, Inc. Semiconductor device with secure access key and associated methods and systems
US11954049B2 (en) 2022-12-05 2024-04-09 Lodestar Licensing Group Llc Semiconductor device with secure access key and associated methods and systems

Families Citing this family (72)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8463998B1 (en) 2002-12-13 2013-06-11 Open Text S.A. System and method for managing page variations in a page delivery cache
US8312222B1 (en) * 2002-12-13 2012-11-13 Open Text, S.A. Event-driven regeneration of pages for web-based applications
US7284100B2 (en) * 2003-05-12 2007-10-16 International Business Machines Corporation Invalidating storage, clearing buffer entries, and an instruction therefor
US7530067B2 (en) * 2003-05-12 2009-05-05 International Business Machines Corporation Filtering processor requests based on identifiers
US9454490B2 (en) 2003-05-12 2016-09-27 International Business Machines Corporation Invalidating a range of two or more translation table entries and instruction therefore
US7443878B2 (en) * 2005-04-04 2008-10-28 Sun Microsystems, Inc. System for scaling by parallelizing network workload
US7415034B2 (en) * 2005-04-04 2008-08-19 Sun Microsystems, Inc. Virtualized partitionable shared network interface
US7415035B1 (en) * 2005-04-04 2008-08-19 Sun Microsystems, Inc. Device driver access method into a virtualized network interface
US20070005932A1 (en) * 2005-06-29 2007-01-04 Intel Corporation Memory management in a multiprocessor system
JP4978008B2 (en) * 2006-01-11 2012-07-18 株式会社日立製作所 How to speed up page table address change on virtual machine
JP2007233615A (en) * 2006-02-28 2007-09-13 Fujitsu Ltd Address conversion device
US7797555B2 (en) * 2006-05-12 2010-09-14 Intel Corporation Method and apparatus for managing power from a sequestered partition of a processing system
US7647509B2 (en) * 2006-05-12 2010-01-12 Intel Corporation Method and apparatus for managing power in a processing system with multiple partitions
US7401185B2 (en) * 2006-07-06 2008-07-15 International Business Machines Corporation Buffered indexing to manage hierarchical tables
US7555628B2 (en) * 2006-08-15 2009-06-30 Intel Corporation Synchronizing a translation lookaside buffer to an extended paging table
US20080270827A1 (en) * 2007-04-26 2008-10-30 International Business Machines Corporation Recovering diagnostic data after out-of-band data capture failure
US8799620B2 (en) * 2007-06-01 2014-08-05 Intel Corporation Linear to physical address translation with support for page attributes
US8180997B2 (en) * 2007-07-05 2012-05-15 Board Of Regents, University Of Texas System Dynamically composing processor cores to form logical processors
US8145876B2 (en) * 2007-08-06 2012-03-27 Advanced Micro Devices, Inc. Address translation with multiple translation look aside buffers
US8112174B2 (en) * 2008-02-25 2012-02-07 International Business Machines Corporation Processor, method and computer program product for fast selective invalidation of translation lookaside buffer
US8266411B2 (en) * 2009-02-05 2012-09-11 International Business Machines Corporation Instruction set architecture with instruction characteristic bit indicating a result is not of architectural importance
US8214598B2 (en) * 2009-12-22 2012-07-03 Intel Corporation System, method, and apparatus for a cache flush of a range of pages and TLB invalidation of a range of entries
US8595469B2 (en) 2010-06-24 2013-11-26 International Business Machines Corporation Diagnose instruction for serializing processing
US8407701B2 (en) 2010-06-24 2013-03-26 International Business Machines Corporation Facilitating quiesce operations within a logically partitioned computer system
US9182984B2 (en) 2012-06-15 2015-11-10 International Business Machines Corporation Local clearing control
US9251091B2 (en) * 2012-06-15 2016-02-02 International Business Machines Corporation Translation look-aside table management
US9043565B2 (en) * 2012-09-07 2015-05-26 Kabushiki Kaisha Toshiba Storage device and method for controlling data invalidation
US9196014B2 (en) 2012-10-22 2015-11-24 Industrial Technology Research Institute Buffer clearing apparatus and method for computer graphics
US9330017B2 (en) 2012-11-02 2016-05-03 International Business Machines Corporation Suppressing virtual address translation utilizing bits and instruction tagging
US9092382B2 (en) 2012-11-02 2015-07-28 International Business Machines Corporation Reducing microprocessor performance loss due to translation table coherency in a multi-processor system
US10509725B2 (en) 2013-03-08 2019-12-17 Oracle International Corporation Flushing by copying entries in a non-coherent cache to main memory
US20140258635A1 (en) * 2013-03-08 2014-09-11 Oracle International Corporation Invalidating entries in a non-coherent cache
US9208362B1 (en) 2013-03-11 2015-12-08 United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Methods, systems and apparatuses for radio frequency identification
US9619387B2 (en) * 2014-02-21 2017-04-11 Arm Limited Invalidating stored address translations
US9886391B2 (en) * 2014-03-20 2018-02-06 International Business Machines Corporation Selective purging of PCI I/O address translation buffer
WO2016012832A1 (en) * 2014-07-21 2016-01-28 Via Alliance Semiconductor Co., Ltd. Address translation cache that supports simultaneous invalidation of common context entries
US9684606B2 (en) * 2014-11-14 2017-06-20 Cavium, Inc. Translation lookaside buffer invalidation suppression
US9697137B2 (en) * 2014-11-14 2017-07-04 Cavium, Inc. Filtering translation lookaside buffer invalidations
US9477516B1 (en) 2015-03-19 2016-10-25 Google Inc. Concurrent in-memory data publication and storage system
US10175988B2 (en) 2015-06-26 2019-01-08 Microsoft Technology Licensing, Llc Explicit instruction scheduler state information for a processor
US10346168B2 (en) 2015-06-26 2019-07-09 Microsoft Technology Licensing, Llc Decoupled processor instruction window and operand buffer
US10191747B2 (en) 2015-06-26 2019-01-29 Microsoft Technology Licensing, Llc Locking operand values for groups of instructions executed atomically
US9946548B2 (en) 2015-06-26 2018-04-17 Microsoft Technology Licensing, Llc Age-based management of instruction blocks in a processor instruction window
US10409599B2 (en) 2015-06-26 2019-09-10 Microsoft Technology Licensing, Llc Decoding information about a group of instructions including a size of the group of instructions
US9952867B2 (en) 2015-06-26 2018-04-24 Microsoft Technology Licensing, Llc Mapping instruction blocks based on block size
US10409606B2 (en) 2015-06-26 2019-09-10 Microsoft Technology Licensing, Llc Verifying branch targets
US10169044B2 (en) 2015-06-26 2019-01-01 Microsoft Technology Licensing, Llc Processing an encoding format field to interpret header information regarding a group of instructions
US11755484B2 (en) 2015-06-26 2023-09-12 Microsoft Technology Licensing, Llc Instruction block allocation
US10768936B2 (en) 2015-09-19 2020-09-08 Microsoft Technology Licensing, Llc Block-based processor including topology and control registers to indicate resource sharing and size of logical processor
US11016770B2 (en) 2015-09-19 2021-05-25 Microsoft Technology Licensing, Llc Distinct system registers for logical processors
US11126433B2 (en) 2015-09-19 2021-09-21 Microsoft Technology Licensing, Llc Block-based processor core composition register
US10942683B2 (en) 2015-10-28 2021-03-09 International Business Machines Corporation Reducing page invalidation broadcasts
US10282305B2 (en) 2016-07-18 2019-05-07 International Business Machines Corporation Selective purging of entries of structures associated with address translation in a virtualized environment
US10180909B2 (en) 2016-07-18 2019-01-15 International Business Machines Corporation Host-based resetting of active use of guest page table indicators
US10223281B2 (en) 2016-07-18 2019-03-05 International Business Machines Corporation Increasing the scope of local purges of structures associated with address translation
US10176006B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Delaying purging of structures associated with address translation
US10176110B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Marking storage keys to indicate memory used to back address translation structures
US10241924B2 (en) 2016-07-18 2019-03-26 International Business Machines Corporation Reducing over-purging of structures associated with address translation using an array of tags
US10169243B2 (en) 2016-07-18 2019-01-01 International Business Machines Corporation Reducing over-purging of structures associated with address translation
US10802986B2 (en) 2016-07-18 2020-10-13 International Business Machines Corporation Marking to indicate memory used to back address translation structures
US10176111B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Host page management using active guest page table indicators
US10248573B2 (en) 2016-07-18 2019-04-02 International Business Machines Corporation Managing memory used to back address translation structures
US10162764B2 (en) 2016-07-18 2018-12-25 International Business Machines Corporation Marking page table/page status table entries to indicate memory used to back address translation structures
US10168902B2 (en) 2016-07-18 2019-01-01 International Business Machines Corporation Reducing purging of structures associated with address translation
US11531552B2 (en) 2017-02-06 2022-12-20 Microsoft Technology Licensing, Llc Executing multiple programs simultaneously on a processor core
US10528488B1 (en) * 2017-03-30 2020-01-07 Pure Storage, Inc. Efficient name coding
US10437729B2 (en) 2017-04-19 2019-10-08 International Business Machines Corporation Non-disruptive clearing of varying address ranges from cache
US10725928B1 (en) * 2019-01-09 2020-07-28 Apple Inc. Translation lookaside buffer invalidation by range
US11042483B2 (en) 2019-04-26 2021-06-22 International Business Machines Corporation Efficient eviction of whole set associated cache or selected range of addresses
CN111338987B (en) * 2020-02-13 2023-12-12 江苏华创微系统有限公司 Method for fast invalidating a set associative TLB
US11422946B2 (en) 2020-08-31 2022-08-23 Apple Inc. Translation lookaside buffer striping for efficient invalidation operations
US11615033B2 (en) 2020-09-09 2023-03-28 Apple Inc. Reducing translation lookaside buffer searches for splintered pages

Citations (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4432053A (en) * 1981-06-29 1984-02-14 Burroughs Corporation Address generating apparatus and method
US4658356A (en) * 1982-11-22 1987-04-14 Hitachi, Ltd. Control system for updating a change bit
US4792895A (en) * 1984-07-30 1988-12-20 International Business Machines Corp. Instruction processing in higher level virtual machines by a real machine
US4903234A (en) * 1987-05-22 1990-02-20 Hitachi, Ltd. Memory system
US5307502A (en) * 1986-04-14 1994-04-26 Hitachi, Ltd. Data processing system having multiple register management for call and return operations
US5317705A (en) * 1990-10-24 1994-05-31 International Business Machines Corporation Apparatus and method for TLB purge reduction in a multi-level machine system
US5423014A (en) * 1991-10-29 1995-06-06 Intel Corporation Instruction fetch unit with early instruction fetch mechanism
US5471593A (en) * 1989-12-11 1995-11-28 Branigin; Michael H. Computer processor with an efficient means of executing many instructions simultaneously
US5500948A (en) * 1991-10-29 1996-03-19 Intel Corporation Translating instruction pointer virtual addresses to physical addresses for accessing an instruction cache
US5555394A (en) * 1992-09-11 1996-09-10 Hitachi, Ltd. Data processor with the ability of fast partial clearing of buffer memory
US5761734A (en) * 1996-08-13 1998-06-02 International Business Machines Corporation Token-based serialisation of instructions in a multiprocessor system
US5771365A (en) * 1993-10-18 1998-06-23 Cyrix Corporation Condensed microaddress generation in a complex instruction set computer
US5928353A (en) * 1994-01-28 1999-07-27 Nec Corporation Clear processing of a translation lookaside buffer with less waiting time
US5946717A (en) * 1995-07-13 1999-08-31 Nec Corporation Multi-processor system which provides for translation look-aside buffer address range invalidation and address translation concurrently
US6079013A (en) * 1998-04-30 2000-06-20 International Business Machines Corporation Multiprocessor serialization with early release of processors
US6119204A (en) * 1998-06-30 2000-09-12 International Business Machines Corporation Data processing system and method for maintaining translation lookaside buffer TLB coherency without enforcing complete instruction serialization
US6119219A (en) * 1998-04-30 2000-09-12 International Business Machines Corporation System serialization with early release of individual processor
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
US20020029357A1 (en) * 1998-11-16 2002-03-07 Insignia Solution, Plc Method and system of memory management using stack walking
US6467007B1 (en) * 1999-05-19 2002-10-15 International Business Machines Corporation Processor reset generated via memory access interrupt
US6604187B1 (en) * 2000-06-19 2003-08-05 Advanced Micro Devices, Inc. Providing global translations with address space numbers
US6715050B2 (en) * 2001-05-31 2004-03-30 Oracle International Corporation Storage access keys
US20040230976A1 (en) * 2003-05-12 2004-11-18 International Business Machines Corporation Filtering processor requests based on identifiers
US20040230749A1 (en) * 2003-05-12 2004-11-18 International Business Machines Corporation Invalidating storage, clearing buffer entries, and an instruction therefor

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US592853A (en) 1897-11-02 Electric battery
JPS5815196A (en) 1981-07-22 1983-01-28 株式会社日立製作所 Steam generating plant
JPS5815195A (en) 1981-07-22 1983-01-28 株式会社日立製作所 Device for automatically exchanging control rod drive mechanism
JPS58150195A (en) 1982-02-27 1983-09-06 Fujitsu Ltd System for controlling main storage key
JPS58150196A (en) 1982-02-27 1983-09-06 Fujitsu Ltd System for updating and controlling main storage key
US4779188A (en) * 1983-12-14 1988-10-18 International Business Machines Corporation Selective guest system purge control
EP0206653B1 (en) 1985-06-28 1992-10-21 Hewlett-Packard Company Method and means for loading and storing data in a reduced instruction set computer
DE3650021T2 (en) 1985-10-30 1995-03-09 Ibm Latch cache matching device.
JPS62295147A (en) * 1986-06-16 1987-12-22 Hitachi Ltd Virtual computer system
JP2510605B2 (en) 1987-07-24 1996-06-26 株式会社日立製作所 Virtual computer system
JP2507785B2 (en) * 1988-07-25 1996-06-19 富士通株式会社 Pageable entry invalidation device
JP2592958B2 (en) * 1989-06-30 1997-03-19 キヤノン株式会社 Liquid crystal device
US5615354A (en) * 1992-12-23 1997-03-25 International Business Machines Corporation Method and system for controlling references to system storage by overriding values
AU6629894A (en) 1993-05-07 1994-12-12 Apple Computer, Inc. Method for decoding guest instructions for a host computer
EP0760134A1 (en) 1994-05-11 1997-03-05 Gmd - Forschungszentrum Informationstechnik Gmbh Data storage device
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
US5761743A (en) * 1996-06-28 1998-06-09 Marmon Holdings, Inc. Finger cot and method of manufacturing finger cot
US5782029A (en) * 1996-09-25 1998-07-21 Saf T Lok Corporation Firearm safety mechanism
JPH10301814A (en) * 1997-04-23 1998-11-13 Hitachi Ltd Information processing system
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
US6199219B1 (en) 1998-05-08 2001-03-13 Howard Silken Device to facilitate removal of a helmet face mask
US6978357B1 (en) 1998-07-24 2005-12-20 Intel Corporation Method and apparatus for performing cache segment flush and cache segment invalidation operations
US20020147969A1 (en) 1998-10-21 2002-10-10 Richard A. Lethin Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method
US6587964B1 (en) * 2000-02-18 2003-07-01 Hewlett-Packard Development Company, L.P. Transparent software emulation as an alternative to hardware bus lock
US6651132B1 (en) * 2000-07-17 2003-11-18 Microsoft Corporation System and method for emulating the operation of a translation look-aside buffer
EP1182570A3 (en) 2000-08-21 2004-08-04 Texas Instruments Incorporated TLB with resource ID field
US6684305B1 (en) 2001-04-24 2004-01-27 Advanced Micro Devices, Inc. Multiprocessor system implementing virtual memory using a shared memory, and a page replacement method for maintaining paged memory coherence
US6801993B2 (en) * 2001-09-28 2004-10-05 International Business Machines Corporation Table offset for shortening translation tables from their beginnings
US6931471B2 (en) * 2002-04-04 2005-08-16 International Business Machines Corporation Method, apparatus, and computer program product for migrating data subject to access by input/output devices
US7197585B2 (en) * 2002-09-30 2007-03-27 International Business Machines Corporation Method and apparatus for managing the execution of a broadcast instruction on a guest processor
JP3936672B2 (en) * 2003-04-30 2007-06-27 富士通株式会社 Microprocessor
US7356710B2 (en) 2003-05-12 2008-04-08 International Business Machines Corporation Security message authentication control instruction

Patent Citations (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4432053A (en) * 1981-06-29 1984-02-14 Burroughs Corporation Address generating apparatus and method
US4658356A (en) * 1982-11-22 1987-04-14 Hitachi, Ltd. Control system for updating a change bit
US4792895A (en) * 1984-07-30 1988-12-20 International Business Machines Corp. Instruction processing in higher level virtual machines by a real machine
US5307502A (en) * 1986-04-14 1994-04-26 Hitachi, Ltd. Data processing system having multiple register management for call and return operations
US4903234A (en) * 1987-05-22 1990-02-20 Hitachi, Ltd. Memory system
US5471593A (en) * 1989-12-11 1995-11-28 Branigin; Michael H. Computer processor with an efficient means of executing many instructions simultaneously
US5317705A (en) * 1990-10-24 1994-05-31 International Business Machines Corporation Apparatus and method for TLB purge reduction in a multi-level machine system
US5423014A (en) * 1991-10-29 1995-06-06 Intel Corporation Instruction fetch unit with early instruction fetch mechanism
US5500948A (en) * 1991-10-29 1996-03-19 Intel Corporation Translating instruction pointer virtual addresses to physical addresses for accessing an instruction cache
US5555394A (en) * 1992-09-11 1996-09-10 Hitachi, Ltd. Data processor with the ability of fast partial clearing of buffer memory
US5771365A (en) * 1993-10-18 1998-06-23 Cyrix Corporation Condensed microaddress generation in a complex instruction set computer
US5928353A (en) * 1994-01-28 1999-07-27 Nec Corporation Clear processing of a translation lookaside buffer with less waiting time
US5946717A (en) * 1995-07-13 1999-08-31 Nec Corporation Multi-processor system which provides for translation look-aside buffer address range invalidation and address translation concurrently
US5761734A (en) * 1996-08-13 1998-06-02 International Business Machines Corporation Token-based serialisation of instructions in a multiprocessor system
US6079013A (en) * 1998-04-30 2000-06-20 International Business Machines Corporation Multiprocessor serialization with early release of processors
US6119219A (en) * 1998-04-30 2000-09-12 International Business Machines Corporation System serialization with early release of individual processor
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
US6119204A (en) * 1998-06-30 2000-09-12 International Business Machines Corporation Data processing system and method for maintaining translation lookaside buffer TLB coherency without enforcing complete instruction serialization
US20020029357A1 (en) * 1998-11-16 2002-03-07 Insignia Solution, Plc Method and system of memory management using stack walking
US6467007B1 (en) * 1999-05-19 2002-10-15 International Business Machines Corporation Processor reset generated via memory access interrupt
US6604187B1 (en) * 2000-06-19 2003-08-05 Advanced Micro Devices, Inc. Providing global translations with address space numbers
US6715050B2 (en) * 2001-05-31 2004-03-30 Oracle International Corporation Storage access keys
US20040230976A1 (en) * 2003-05-12 2004-11-18 International Business Machines Corporation Filtering processor requests based on identifiers
US20040230749A1 (en) * 2003-05-12 2004-11-18 International Business Machines Corporation Invalidating storage, clearing buffer entries, and an instruction therefor

Cited By (107)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7787479B2 (en) 2005-04-28 2010-08-31 Fujitsu Ten Limited Gateway apparatus and routing method
US20150095602A1 (en) * 2008-01-11 2015-04-02 International Business Machines Corporation Creating A Program Product Or System For Executing A Perform Frame Management Instruction
US8621180B2 (en) 2008-01-11 2013-12-31 International Business Machines Corporation Dynamic address translation with translation table entry format control for identifying format of the translation table entry
US20090182974A1 (en) * 2008-01-11 2009-07-16 International Business Machines Corporation Dynamic address translation with access control
US20090182964A1 (en) * 2008-01-11 2009-07-16 International Business Machines Corporation Dynamic address translation with format control
WO2009087134A1 (en) * 2008-01-11 2009-07-16 International Business Machines Corporation Dynamic address translation with frame management
US20090182975A1 (en) * 2008-01-11 2009-07-16 International Business Machines Corporation Dynamic address translation with load page table entry address
US20090182972A1 (en) * 2008-01-11 2009-07-16 International Business Machines Corporation Dynamic address translation with format control
US20090187724A1 (en) * 2008-01-11 2009-07-23 International Business Machines Corporation Dynamic address translation with frame management
US20090193214A1 (en) * 2008-01-11 2009-07-30 International Business Machines Corporation Dynamic address translation with frame management
US10977190B2 (en) 2008-01-11 2021-04-13 International Business Machines Corporation Dynamic address translation with access control in an emulator environment
US10423539B2 (en) 2008-01-11 2019-09-24 International Business Machines Corporation Dynamic address translation with access control in an emulator environment
US9934159B2 (en) 2008-01-11 2018-04-03 International Business Machines Corporation Dynamic address translation with fetch protection in an emulated environment
US9378128B2 (en) 2008-01-11 2016-06-28 International Business Machines Corporation Dynamic address translation with fetch protection in an emulated environment
US8930673B2 (en) 2008-01-11 2015-01-06 International Business Machines Corporation Load page table entry address instruction execution based on an address translation format control field
US9158711B2 (en) * 2008-01-11 2015-10-13 International Business Machines Corporation Creating a program product or system for executing a perform frame management instruction
US20090182966A1 (en) * 2008-01-11 2009-07-16 International Business Machines Corporation Dynamic address translation with frame management
US9021225B2 (en) 2008-01-11 2015-04-28 International Business Machines Corporation Dynamic address translation with fetch protection in an emulated environment
US20090182971A1 (en) * 2008-01-11 2009-07-16 International Business Machines Corporation Dynamic address translation with fetch protection
US20120144153A1 (en) * 2008-01-11 2012-06-07 International Business Machines Corporation Dynamic Address Translation With Change Record Override
US20090182973A1 (en) * 2008-01-11 2009-07-16 International Business Machines Corporation Dynamic address translation with load real address
US9244856B2 (en) 2008-01-11 2016-01-26 International Business Machines Corporation Dynamic address translation with translation table entry format control for identifying format of the translation table entry
US8909899B2 (en) 2008-01-11 2014-12-09 International Business Machines Corporation Emulating execution of a perform frame management instruction
US8677098B2 (en) 2008-01-11 2014-03-18 International Business Machines Corporation Dynamic address translation with fetch protection
US8019964B2 (en) 2008-01-11 2011-09-13 International Buisness Machines Corporation Dynamic address translation with DAT protection
US8037278B2 (en) 2008-01-11 2011-10-11 International Business Machines Corporation Dynamic address translation with format control
US8041923B2 (en) 2008-01-11 2011-10-18 International Business Machines Corporation Load page table entry address instruction execution based on an address translation format control field
US8041922B2 (en) 2008-01-11 2011-10-18 International Business Machines Corporation Enhanced dynamic address translation with load real address function
JP4815539B2 (en) * 2008-01-11 2011-11-16 インターナショナル・ビジネス・マシーンズ・コーポレーション Dynamic address translation with frame management
US8082405B2 (en) 2008-01-11 2011-12-20 International Business Machines Corporation Dynamic address translation with fetch protection
US8639911B2 (en) 2008-01-11 2014-01-28 International Business Machines Corporation Load page table entry address instruction execution based on an address translation format control field
US8631216B2 (en) * 2008-01-11 2014-01-14 International Business Machines Corporation Dynamic address translation with change record override
US8103851B2 (en) 2008-01-11 2012-01-24 International Business Machines Corporation Dynamic address translation with translation table entry format control for indentifying format of the translation table entry
US8117417B2 (en) 2008-01-11 2012-02-14 International Business Machines Corporation Dynamic address translation with change record override
US8335906B2 (en) 2008-01-11 2012-12-18 International Business Machines Corporation Perform frame management function instruction for clearing blocks of main storage
US8151083B2 (en) 2008-01-11 2012-04-03 International Business Machines Corporation Dynamic address translation with frame management
KR101310412B1 (en) 2008-01-11 2013-09-23 인터내셔널 비지네스 머신즈 코포레이션 Dynamic address translation with frame management
US8489853B2 (en) 2008-01-11 2013-07-16 International Business Machines Corporation Executing a perform frame management instruction
US9003134B2 (en) 2008-01-11 2015-04-07 International Business Machines Corporation Emulation of a dynamic address translation with change record override on a machine of another architecture
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
US9122477B2 (en) 2008-02-25 2015-09-01 International Business Machines Corporation Execution of a perform frame management function instruction
US8935504B1 (en) 2008-02-25 2015-01-13 International Business Machines Corporation Execution of a perform frame management function instruction
US20090216984A1 (en) * 2008-02-25 2009-08-27 International Business Machines Corporation Optimizations of a perform frame management function issued by pageable guests
US10776112B2 (en) 2008-02-25 2020-09-15 International Business Machines Corporation Performing an operation absent host intervention
US8364912B2 (en) 2008-02-25 2013-01-29 International Business Machines Corporation Use of test protection instruction in computing environments that support pageable guests
US10768832B2 (en) 2008-02-25 2020-09-08 International Business Machines Corporation Managing storage protection faults
US8239649B2 (en) 2008-02-25 2012-08-07 International Business Machines Corporation Clearing guest frames absent paging-in to host main storage
US10360032B2 (en) 2008-02-25 2019-07-23 International Business Machines Corporation Performing an operation absent host intervention
US8176280B2 (en) * 2008-02-25 2012-05-08 International Business Machines Corporation Use of test protection instruction in computing environments that support pageable guests
US8495326B2 (en) 2008-02-25 2013-07-23 International Business Machines Corporation Execution of a perform frame management function instruction
US10223015B2 (en) 2008-02-25 2019-03-05 International Business Machines Corporation Managing storage protection faults
US10089111B2 (en) 2008-02-25 2018-10-02 International Business Machines Corporation Performing an operation absent host intervention
US9971533B2 (en) 2008-02-25 2018-05-15 International Business Machines Corporation Managing storage protection faults
US9778869B2 (en) 2008-02-25 2017-10-03 International Business Machines Corporation Managing storage protection faults
US8176279B2 (en) 2008-02-25 2012-05-08 International Business Machines Corporation Managing use of storage by multiple pageable guests of a computing environment
US9606799B2 (en) 2008-02-25 2017-03-28 International Business Machines Corporation Performing a clear operation absent host intervention
US9542260B2 (en) 2008-02-25 2017-01-10 International Business Machines Corporation Managing storage protection faults
US8086811B2 (en) 2008-02-25 2011-12-27 International Business Machines Corporation Optimizations of a perform frame management function issued by pageable guests
US20090217098A1 (en) * 2008-02-25 2009-08-27 International Business Machines Corporation Managing use of storage by multiple pageable guests of a computing environment
US8677077B2 (en) 2008-02-25 2014-03-18 International Business Machines Corporation Use of test protection instruction in computing environments that support pageable guests
US9354873B2 (en) 2008-02-25 2016-05-31 International Business Machines Corporation Performing a clear operation absent host intervention
US8707000B2 (en) 2008-02-25 2014-04-22 International Business Machines Corporation Execution of a perform frame management function instruction
US9251085B2 (en) 2008-02-25 2016-02-02 International Business Machines Corporation Performing a clear operation absent host intervention
US9122634B2 (en) 2008-02-25 2015-09-01 International Business Machines Corporation Use of test protection instruction in computing environments that support pageable guests
US20090228262A1 (en) * 2008-02-25 2009-09-10 International Business Machines Corporation Use of test protection instruction in computing environments that support pageable guests
US8972670B2 (en) 2008-02-25 2015-03-03 International Business Machines Corporation Use of test protection instruction in computing environments that support pageable guests
US8095773B2 (en) 2008-02-26 2012-01-10 International Business Machines Corporation Dynamic address translation with translation exception qualifier
US8380907B2 (en) 2008-02-26 2013-02-19 International Business Machines Corporation Method, system and computer program product for providing filtering of GUEST2 quiesce requests
US11074180B2 (en) 2008-02-26 2021-07-27 International Business Machines Corporation Creating a dynamic address translation with translation exception qualifiers
US8332614B2 (en) 2008-02-26 2012-12-11 International Business Machines Corporation System, method and computer program product for providing a programmable quiesce filtering register
US20090216995A1 (en) * 2008-02-26 2009-08-27 International Business Machines Corporation System, method and computer program product for providing quiesce filtering for shared memory
US8458438B2 (en) 2008-02-26 2013-06-04 International Business Machines Corporation System, method and computer program product for providing quiesce filtering for shared memory
US10241910B2 (en) 2008-02-26 2019-03-26 International Business Machines Corporation Creating a dynamic address translation with translation exception qualifiers
US10078585B2 (en) 2008-02-26 2018-09-18 International Business Machines Corporation Creating a dynamic address translation with translation exception qualifiers
US8862834B2 (en) 2008-02-26 2014-10-14 International Business Machines Corporation Shared memory translation facility
US9092351B2 (en) 2008-02-26 2015-07-28 International Business Machines Corporation Creating a dynamic address translation with translation exception qualifier
US20090216992A1 (en) * 2008-02-26 2009-08-27 International Business Machines Corporation Dynamic address translation with translation exception qualifier
US20090216963A1 (en) * 2008-02-26 2009-08-27 International Business Machines Corporation System, method and computer program product for providing a shared memory translation facility
US8527715B2 (en) 2008-02-26 2013-09-03 International Business Machines Corporation Providing a shared memory translation facility
US20090216929A1 (en) * 2008-02-26 2009-08-27 International Business Machines Corporation System, method and computer program product for providing a programmable quiesce filtering register
US20090217264A1 (en) * 2008-02-26 2009-08-27 International Business Machines Corporation Method, system and computer program product for providing filtering of guest2 quiesce requests
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
US8683176B2 (en) 2008-02-26 2014-03-25 International Business Machines Corporation Dynamic address translation with translation exception qualifier
US20110145510A1 (en) * 2009-12-14 2011-06-16 International Business Machines Corporation Reducing interprocessor communications pursuant to updating of a storage key
US20110145546A1 (en) * 2009-12-14 2011-06-16 International Business Machines Corporation Deferred page clearing in a multiprocessor computer system
US8930635B2 (en) 2009-12-14 2015-01-06 International Business Machines Corporation Page invalidation processing with setting of storage key to predefined value
US8918601B2 (en) * 2009-12-14 2014-12-23 International Business Machines Corporation Deferred page clearing in a multiprocessor computer system
US9304916B2 (en) 2009-12-14 2016-04-05 International Business Machines Corporation Page invalidation processing with setting of storage key to predefined value
US20110145511A1 (en) * 2009-12-14 2011-06-16 International Business Machines Corporation Page invalidation processing with setting of storage key to predefined value
US8510511B2 (en) 2009-12-14 2013-08-13 International Business Machines Corporation Reducing interprocessor communications pursuant to updating of a storage key
US8521964B2 (en) 2009-12-14 2013-08-27 International Business Machines Corporation Reducing interprocessor communications pursuant to updating of a storage key
US20110145550A1 (en) * 2009-12-15 2011-06-16 International Business Machines Corporation Non-quiescing key setting facility
GB2488458A (en) * 2009-12-15 2012-08-29 Ibm Non-quiescing key setting facility
US8806179B2 (en) * 2009-12-15 2014-08-12 International Business Machines Corporation Non-quiescing key setting facility
WO2011073161A1 (en) * 2009-12-15 2011-06-23 International Business Machines Corporation Non-quiescing key setting facility
GB2488458B (en) * 2009-12-15 2017-08-23 Ibm Non-quiescing key setting facility
CN102713838A (en) * 2009-12-15 2012-10-03 国际商业机器公司 Non-quiescing key setting facility
US8751775B2 (en) 2009-12-15 2014-06-10 International Business Machines Corporation Non-quiescing key setting facility
US20130212682A1 (en) * 2012-02-09 2013-08-15 International Business Machines Corporation Automatic discovery of system integrity exposures in system code
US8918885B2 (en) * 2012-02-09 2014-12-23 International Business Machines Corporation Automatic discovery of system integrity exposures in system code
CN104903873A (en) * 2012-06-15 2015-09-09 国际商业机器公司 Compare and replace DAT table entry
US11151267B2 (en) * 2019-02-25 2021-10-19 International Business Machines Corporation Move data and set storage key based on key function control
JP7391979B2 (en) 2019-02-25 2023-12-05 インターナショナル・ビジネス・マシーンズ・コーポレーション Data movement and storage key settings based on key function control
US20220012374A1 (en) * 2019-11-07 2022-01-13 Micron Technology, Inc. Semiconductor device with secure access key and associated methods and systems
US20220129392A1 (en) * 2019-11-07 2022-04-28 Micron Technology, Inc. Semiconductor device with secure access key and associated methods and systems
US11704255B2 (en) * 2019-11-07 2023-07-18 Micron Technology, Inc. Semiconductor device with secure access key and associated methods and systems
US11954049B2 (en) 2022-12-05 2024-04-09 Lodestar Licensing Group Llc Semiconductor device with secure access key and associated methods and systems

Also Published As

Publication number Publication date
CN1904860A (en) 2007-01-31
WO2004099997A1 (en) 2004-11-18
US7197601B2 (en) 2007-03-27
EP1588267B1 (en) 2008-01-02
ES2359893T3 (en) 2011-05-27
PL1588267T3 (en) 2008-06-30
EP1914627A3 (en) 2008-06-25
DK1653365T3 (en) 2011-05-09
JP4608484B2 (en) 2011-01-12
US7284100B2 (en) 2007-10-16
DE602004024254D1 (en) 2009-12-31
US7281115B2 (en) 2007-10-09
CN100397368C (en) 2008-06-25
GB2414841B (en) 2006-07-05
IL171905A (en) 2010-06-16
US7890731B2 (en) 2011-02-15
US20070186075A1 (en) 2007-08-09
ES2297417T3 (en) 2008-05-01
GB2413876B (en) 2006-03-01
EP1914627B1 (en) 2009-11-18
PL1701269T3 (en) 2009-10-30
KR20060014030A (en) 2006-02-14
EP1701269B1 (en) 2009-05-06
PT1653343E (en) 2010-12-20
US20120117356A1 (en) 2012-05-10
JP2006526203A (en) 2006-11-16
WO2004099997A9 (en) 2005-10-27
PT1653365E (en) 2011-03-22
GB2414842B (en) 2006-07-05
US8122224B2 (en) 2012-02-21
ES2327058T3 (en) 2009-10-23
US8452942B2 (en) 2013-05-28
EP1653343B1 (en) 2010-12-08
EP1701269A1 (en) 2006-09-13
CY1111421T1 (en) 2015-08-05
ATE491178T1 (en) 2010-12-15
CY1111466T1 (en) 2015-08-05
GB2414842A (en) 2005-12-07
SI1653343T1 (en) 2011-01-31
CN1784663A (en) 2006-06-07
KR100834365B1 (en) 2008-06-02
DE602004030452D1 (en) 2011-01-20
DE602004021030D1 (en) 2009-06-18
ES2357802T3 (en) 2011-04-29
DK1588267T3 (en) 2008-05-13
EP1653365A3 (en) 2006-11-08
US20050268045A1 (en) 2005-12-01
KR20060093140A (en) 2006-08-23
ES2336973T3 (en) 2010-04-19
GB2413876A (en) 2005-11-09
DK1653343T3 (en) 2011-01-24
GB2414841A (en) 2005-12-07
ATE449374T1 (en) 2009-12-15
ATE500553T1 (en) 2011-03-15
GB0518901D0 (en) 2005-10-26
EP1588267A1 (en) 2005-10-26
EP1653343A2 (en) 2006-05-03
DE602004031628D1 (en) 2011-04-14
EP1653365B1 (en) 2011-03-02
ATE430963T1 (en) 2009-05-15
PL1653343T3 (en) 2011-03-31
CN100363908C (en) 2008-01-23
US20110119466A1 (en) 2011-05-19
GB0516192D0 (en) 2005-09-14
DE602004011018T2 (en) 2008-12-24
KR100834362B1 (en) 2008-06-02
ATE382896T1 (en) 2008-01-15
DE112004000464T5 (en) 2006-06-01
EP1653343A3 (en) 2006-07-19
IL171905A0 (en) 2006-04-10
EP1653365A2 (en) 2006-05-03
US20050273561A1 (en) 2005-12-08
US20040230749A1 (en) 2004-11-18
DK1701269T3 (en) 2009-08-03
PL1653365T3 (en) 2011-07-29
EP1914627A2 (en) 2008-04-23
DE602004011018D1 (en) 2008-02-07
SI1653365T1 (en) 2011-06-30
GB0518904D0 (en) 2005-10-26

Similar Documents

Publication Publication Date Title
US20060036824A1 (en) Managing the updating of storage keys
US9804970B2 (en) Invalidating a range of two or more translation table entries and instruction therefor
US5517651A (en) Method and apparatus for loading a segment register in a microprocessor capable of operating in multiple modes
US6996698B2 (en) Blocking processing restrictions based on addresses
US8234642B2 (en) Filtering processor requests based on identifiers
US8140834B2 (en) System, method and computer program product for providing a programmable quiesce filtering register
US8751775B2 (en) Non-quiescing key setting facility
US8458438B2 (en) System, method and computer program product for providing quiesce filtering for shared memory
US7100006B2 (en) Method and mechanism for generating a live snapshot in a computing system
JP3170472B2 (en) Information processing system and method having register remap structure
JP3554320B2 (en) A data processing system that performs communication between execution environments in a data processing system employing an object-oriented memory protection mechanism

Legal Events

Date Code Title Description
AS Assignment

Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW Y

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:GREINER, DAN F.;HELLER, LISA C.;OSISEK, DAMIAN L.;AND OTHERS;REEL/FRAME:016959/0662;SIGNING DATES FROM 20051017 TO 20051031

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION