US20060036824A1 - Managing the updating of storage keys - Google Patents
Managing the updating of storage keys Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0808—Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0891—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3824—Operand accessing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
- G06F2212/683—Invalidation
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
- 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.
- 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.
- 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.
- 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.
- 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 ofFIG. 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 ofFIG. 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. - 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 toFIG. 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 acontroller 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 aresident 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, alogical partition 104 includes one or more logical processors, each of which represents all or a share of aphysical processor resource 106 allocated to the partition. The logical processors of aparticular 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 byhypervisor 108 implemented by microcode running onprocessors 106.Logical partitions 104 andhypervisor 108 each comprise one or more programs residing in respective portions of central storage associated with the central processors. One example ofhypervisor 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, whencontroller 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 toFIG. 2 . -
FIG. 2 depicts one example of acontroller 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 tocontroller 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, aninterface 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 incontroller 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 isinterface 210, which provides signals to cache controls 212 ofcentral 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, interruptcontrols 220 and execution controls 222. In response to particular events, interruptcontrols 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 allowedlatch 224 to enable cache controls 212 to process pending commands. -
Central processor 201 also includes aCPU 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, ahost 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, amemory 302 to store instructions and data; an instruction fetchunit 304 to fetch instructions frommemory 302, and to optionally, provide local buffering for the fetched instructions; aninstruction decode unit 306 to receive instructions from instruction fetchunit 304 and to determine the type of instructions that have been fetched; and aninstruction execution unit 308 to execute the instructions. Execution may include loading data into a register frommemory 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 ofFIG. 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 . Astorage 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. Aconditional SSKE instruction 600 includes, for instance, anoperation code 602 designating the Set Storage Key Extended instruction; anM3 operand 604 used by the program to indicate which components of the storage key need not be updated; aregister designation 606 selecting a register that includes values to be compared to components of the storage key; and aregister 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, andMC 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 ofFIGS. 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 withSTEP 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 inINQUIRY 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 oneend 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 moreother 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, aframe queue segment 805 at oneend 802 of the queue. This segment includes or points to one ormore frames 806 with associatedstorage 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, aqueue 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.
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)
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)
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)
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)
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 |
-
2003
- 2003-05-12 US US10/435,919 patent/US7284100B2/en active Active
-
2004
- 2004-05-06 DE DE602004024254T patent/DE602004024254D1/en active Active
- 2004-05-06 PT PT05108507T patent/PT1653365E/en unknown
- 2004-05-06 AT AT04731399T patent/ATE382896T1/en active
- 2004-05-06 DK DK05108507.4T patent/DK1653365T3/en active
- 2004-05-06 AT AT05108510T patent/ATE491178T1/en active
- 2004-05-06 EP EP04731399A patent/EP1588267B1/en active Active
- 2004-05-06 GB GB0516192A patent/GB2413876B/en active Active
- 2004-05-06 EP EP05108510A patent/EP1653343B1/en active Active
- 2004-05-06 KR KR1020067015744A patent/KR100834365B1/en active IP Right Grant
- 2004-05-06 EP EP05108507A patent/EP1653365B1/en active Active
- 2004-05-06 PL PL04731399T patent/PL1588267T3/en unknown
- 2004-05-06 PL PL05108507T patent/PL1653365T3/en unknown
- 2004-05-06 ES ES08150756T patent/ES2336973T3/en active Active
- 2004-05-06 EP EP08150756A patent/EP1914627B1/en active Active
- 2004-05-06 DE DE602004031628T patent/DE602004031628D1/en active Active
- 2004-05-06 ES ES04731399T patent/ES2297417T3/en active Active
- 2004-05-06 PL PL06116358T patent/PL1701269T3/en unknown
- 2004-05-06 EP EP06116358A patent/EP1701269B1/en not_active Not-in-force
- 2004-05-06 ES ES05108510T patent/ES2357802T3/en active Active
- 2004-05-06 CN CNB2006101218343A patent/CN100397368C/en active Active
- 2004-05-06 DE DE112004000464T patent/DE112004000464T5/en not_active Ceased
- 2004-05-06 PL PL05108510T patent/PL1653343T3/en unknown
- 2004-05-06 KR KR1020057019375A patent/KR100834362B1/en active IP Right Grant
- 2004-05-06 ES ES05108507T patent/ES2359893T3/en active Active
- 2004-05-06 JP JP2006506228A patent/JP4608484B2/en active Active
- 2004-05-06 AT AT08150756T patent/ATE449374T1/en not_active IP Right Cessation
- 2004-05-06 PT PT05108510T patent/PT1653343E/en unknown
- 2004-05-06 DE DE602004011018T patent/DE602004011018T2/en active Active
- 2004-05-06 AT AT05108507T patent/ATE500553T1/en active
- 2004-05-06 DE DE602004030452T patent/DE602004030452D1/en active Active
- 2004-05-06 WO PCT/GB2004/001971 patent/WO2004099997A1/en active IP Right Grant
- 2004-05-06 DK DK05108510.8T patent/DK1653343T3/en active
- 2004-05-06 SI SI200431564T patent/SI1653343T1/en unknown
- 2004-05-06 GB GB0518904A patent/GB2414842B/en active Active
- 2004-05-06 DK DK06116358T patent/DK1701269T3/en active
- 2004-05-06 ES ES06116358T patent/ES2327058T3/en active Active
- 2004-05-06 SI SI200431659T patent/SI1653365T1/en unknown
- 2004-05-06 DK DK04731399T patent/DK1588267T3/en active
- 2004-05-06 GB GB0518901A patent/GB2414841B/en active Active
- 2004-05-06 DE DE602004021030T patent/DE602004021030D1/en active Active
- 2004-05-06 AT AT06116358T patent/ATE430963T1/en active
- 2004-05-06 CN CNB2004800118949A patent/CN100363908C/en active Active
-
2005
- 2005-08-09 US US11/199,666 patent/US7197601B2/en not_active Expired - Lifetime
- 2005-08-15 US US11/204,321 patent/US7281115B2/en not_active Expired - Lifetime
- 2005-08-15 US US11/204,131 patent/US20060036824A1/en not_active Abandoned
- 2005-11-13 IL IL171905A patent/IL171905A/en active IP Right Grant
-
2007
- 2007-04-10 US US11/733,224 patent/US7890731B2/en active Active
-
2010
- 2010-12-22 CY CY20101101184T patent/CY1111421T1/en unknown
-
2011
- 2011-01-13 US US13/005,659 patent/US8122224B2/en not_active Expired - Lifetime
- 2011-03-23 CY CY20111100318T patent/CY1111466T1/en unknown
-
2012
- 2012-01-13 US US13/349,724 patent/US8452942B2/en not_active Expired - Fee Related
Patent Citations (24)
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)
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
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 |