IP Library › Granted Patent US 10,838,733
Granted Patent B2
US 10,838,733 · App. 15/490,013 · Granted Nov 17, 2020

Register context restoration based on rename register recovery

Inventors: Michael K. Gschwind (Chappaqua, NY); Valentina Salapura (Chappaqua, NY); Chung-Lung K. Shum (Wappingers Falls, NY); Timothy J. Slegel (Staatsburg, NY)
Assignee: INTERNATIONAL BUSINESS MACHINES CORPORATION
G06F9/3863G06F9/30043G06F9/30058G06F9/30116G06F9/384G06F9/3861
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,838,733
App. No.
15/490,013
Granted
Nov 17, 2020
Kind
B2
Abstract

A load request to restore a plurality of architected registers is obtained. Based on obtaining the load request, one or more architected registers of the plurality of architected registers are restored. The restoring uses a snapshot that maps architected registers to physical registers to replace one or more physical registers currently assigned to the one or more architected registers with one or more physical registers of the snapshot corresponding to the one or more architected registers.

Claims (35)

1. A computer program product for facilitating processing within a computing environment, the computer program product comprising:

at least one computer readable storage medium readable by at least one processing circuit and storing instructions for performing a method comprising:

obtaining a load request to request a bulk restore of a plurality of architected registers used in calls of routines, the plurality of architected registers having a plurality of physical registers currently assigned thereto;

determining, based on obtaining the load request, whether a snapshot that maps the plurality of architected registers to a plurality of physical registers previously assigned to the plurality of architected registers is available, the determining using a stack of snapshots to determine whether the snapshot is available, the stack of snapshots comprising a plurality of entries corresponding to a plurality of snapshots on the stack of snapshots, wherein an entry of the plurality of entries includes a snapshot identifier identifying a particular snapshot of the plurality of snapshots and a register from field and a register to field used to specify a range of registers that are valid for the particular snapshot corresponding to the entry;

restoring the plurality of architected registers by recovering the snapshot, based on the determining indicating that the snapshot is available, the restoring avoiding replacing contents of the plurality of architected registers from contents loaded from memory, the restoring using the snapshot to replace the plurality of physical registers currently assigned to the plurality of architected registers with the plurality of physical registers of the snapshot previously assigned to the plurality of architected registers, wherein the snapshot is a copy of at least a portion of a register rename map, the at least a portion of the register rename map including a mapping of the plurality of architected registers to the plurality of physical registers of the snapshot previously assigned to the plurality of architected registers; and

restoring the plurality of architected registers by loading values from memory into the plurality of architected registers, based on the determining indicating that the snapshot corresponding to the plurality of architected registers is unavailable.

2. The computer program product of claim 1 , wherein the determining indicates that a select entry of the plurality of entries of the snapshot stack includes the snapshot that maps the plurality of architected registers, and wherein the select entry further includes an address in the memory used to indicate where values of the plurality of architected registers are stored.

3. The computer program product of claim 2 , wherein the method further comprises verifying the snapshot, the verifying confirming whether contents of the plurality of architected registers contain latest values, based on the values stored in the memory.

4. The computer program product of claim 1 , wherein the entry of the snapshot stack includes a single validity indicator indicating whether the particular snapshot is valid.

5. The computer program product of claim 1 , wherein the method further comprises creating the snapshot to save the mapping of the plurality of physical registers of the snapshot to the plurality of architected registers.

6. The computer program product of claim 5 , wherein the creating the snapshot is performed based on obtaining a save request requesting a saving of the plurality of architected registers.

7. The computer program product of claim 6 , wherein the load request comprises a load multiple instruction, and the save request comprises a store multiple instruction.

8. The computer program product of claim 1 , wherein the range of registers indicated as valid in the entry of the snapshot stack includes one or more architected registers valid for the particular snapshot but does not include one or more other architected registers of the particular snapshot for which the particular snapshot is not considered valid.

9. A computer system for facilitating processing within a computing environment, the computer system comprising:

a memory; and

a processor in communication with the memory, wherein the computer system is configured to perform a method, said method comprising:

obtaining a load request to request a bulk restore of a plurality of architected registers used in calls of routines, the plurality of architected registers having a plurality of physical registers currently assigned thereto;

determining, based on obtaining the load request, whether a snapshot that maps the plurality of architected registers to a plurality of physical registers previously assigned to the plurality of architected registers is available, the determining using a stack of snapshots to determine whether the snapshot is available, the stack of snapshots comprising a plurality of entries corresponding to a plurality of snapshots on the stack of snapshots, wherein an entry of the plurality of entries includes a snapshot identifier identifying a particular snapshot of the plurality of snapshots and a register from field and a register to field used to specify a range of registers that are valid for the particular snapshot corresponding to the entry;

restoring the plurality of architected registers by recovering the snapshot, based on the determining indicating that the snapshot is available, the restoring avoiding replacing contents of the plurality of architected registers from contents loaded from memory, the restoring using the snapshot to replace the plurality of physical registers currently assigned to the plurality of architected registers with the plurality of physical registers of the snapshot previously assigned to the plurality of architected registers, wherein the snapshot is a copy of at least a portion of a register rename map, the at least a portion of the register rename map including a mapping of the plurality of architected registers to the plurality of physical registers of the snapshot previously assigned to the plurality of architected registers; and

restoring the plurality of architected registers by loading values from memory into the plurality of architected registers, based on the determining indicating that the snapshot corresponding to the plurality of architected registers is unavailable.

10. The computer system of claim 9 , wherein the determining indicates that a select entry of the plurality of entries of the snapshot stack includes the snapshot that maps the plurality of architected registers, and wherein the select entry further includes an address in the memory used to indicate where values of the plurality of architected registers are stored.

11. The computer system of claim 10 , wherein the method further comprises verifying the snapshot, the verifying confirming whether contents of the plurality of architected registers contain latest values, based on the values stored in the memory.

12. The computer system of claim 9 , wherein the entry of the snapshot stack further includes a single validity indicator indicating whether the particular snapshot is valid.

13. The computer system of claim 9 , wherein the method further comprises creating the snapshot to save the mapping of the plurality of physical registers of the snapshot to the plurality of architected registers.

14. The computer system of claim 13 , wherein the creating the snapshot is performed based on obtaining a save request requesting a saving of the plurality of architected registers.

15. The computer system of claim 14 , wherein the load request comprises a load multiple instruction, and the save request comprises a store multiple instruction.

16. A computer-implemented method of facilitating processing within a computing environment, the computer-implemented method comprising:

obtaining, by a processor, a load request to request a bulk restore of a plurality of architected registers used in calls of routines, the plurality of architected registers having a plurality of physical registers currently assigned thereto;

determining, based on obtaining the load request, whether a snapshot that maps the plurality of architected registers to a plurality of physical registers previously assigned to the plurality of architected registers is available, the determining using a stack of snapshots to determine whether the snapshot is available, the stack of snapshots comprising a plurality of entries corresponding to a plurality of snapshots on the stack of snapshots, wherein an entry of the plurality of entries includes a snapshot identifier identifying a particular snapshot of the plurality of snapshots and a register from field and a register to field used to specify a range of registers that are valid for the particular snapshot corresponding to the entry;

restoring the plurality of architected registers by recovering the snapshot, based on the determining indicating that the snapshot is available, the restoring avoiding replacing contents of the plurality of architected registers from contents loaded from memory, the restoring using the snapshot to replace the plurality of physical registers currently assigned to the plurality of architected registers with the plurality of physical registers of the snapshot previously assigned to the plurality of architected registers, wherein the snapshot is a copy of at least a portion of a register rename map, the at least a portion of the register rename map including a mapping of the plurality of architected registers to the plurality of physical registers of the snapshot previously assigned to the plurality of architected registers; and

restoring the plurality of architected registers by loading values from memory into the plurality of architected registers, based on the determining indicating that the snapshot corresponding to the plurality of architected registers is unavailable.

17. The computer-implemented method of claim 16 , wherein the determining indicates that a select entry of the plurality of entries of the snapshot stack includes the snapshot that maps the plurality of architected registers, and wherein the select entry further includes an address in the memory used to indicate where values of the plurality of architected registers are stored.

18. The computer-implemented method of claim 17 , further comprising verifying the snapshot, the verifying confirming whether contents of the plurality of architected registers contain latest values, based on the values stored in the memory.

19. The computer-implemented method of claim 16 , wherein the entry of the snapshot stack further includes a single validity indicator indicating whether the particular snapshot is valid.

20. The computer-implemented method of claim 16 , wherein the method further comprises creating the snapshot to save the mapping of the plurality of physical registers of the snapshot to the plurality of architected registers.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 18, 2017
From: GSCHWIND, MICHAEL K.; SALAPURA, VALENTINA; SHUM, CHUNG-LUNG K.; SLEGEL, TIMOTHY J.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 042043/0865 →
Continuity (1)
Related Publication 20180300157A1 · Oct 18, 2018