IP Library Granted Patent US 11,144,319
Granted Patent B1
US 11,144,319 · App. 16/940,433 · Granted Oct 12, 2021

Redistribution of architected states for a processor register file

Inventors: Steven J. Battle (Philadelphia, PA); Susan E. Eisen (Round Rock, TX); Dung Q. Nguyen (Austin, TX); Salma Ayub (Austin, TX); Albert J. Van Norstrand, Jr. (Round Rock, TX); Kent Li (Austin, TX); Kurt A. Feiste (Austin, TX); Christian Gerhard Zoellin (Austin, TX)
Assignee: International Business Machines Corporation
G06F9/3013G06F9/384G06F16/1724
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 11,144,319
App. No.
16/940,433
Granted
Oct 12, 2021
Kind
B1
Abstract

In an approach to dynamic redistribution of register files, whether a redistribution of register files is necessary is determined. Responsive to determining that the redistribution of register files is necessary, one or more register file transfers that have not yet completed are flushed. One or more register file write locations are allocated for each architected register based on a register free list. Source data is read from each architected register. The source data is written to the one or more register file write locations.

Claims (56)

1. A computer-implemented method for dynamic redistribution of register files, the computer-implemented method comprising:

determining, by one or more computer processors, if a redistribution of one or more register files is necessary;

responsive to determining that the redistribution of the one or more register files is necessary, flushing, by the one or more computer processors, one or more register file transfers which have not yet completed;

allocating, by the one or more computer processors, one or more write locations based on a register free list, wherein one write location is allocated for each architected register of one or more architected registers to be redistributed;

reading, by the one or more computer processors, a source data from each architected register of the one or more architected registers; and

writing, by the one or more computer processors, the source data to the one or more write locations.

2. The computer-implemented method of claim 1 , wherein determining that the redistribution of the one or more register files is necessary further comprises:

determining, by the one or more computer processors, a number of fragmented registers for the one or more register files, wherein a register is fragmented when one-half of the register is in use and one-half of the register is free; and

responsive to determining that the number of fragmented registers for the one or more register files exceeds a threshold, initiating, by the one or more computer processors, the redistribution of the one or more register files.

3. The computer-implemented method of claim 1 , wherein determining that the redistribution of the one or more register files is necessary further comprises:

determining, by the one or more computer processors, a usage count for each sub-block of one or more sub-blocks of the one or more register files; and

responsive to determining that the usage count for one or more full sub-blocks for the one or more register files exceeds a first threshold and the usage count for one or more empty sub-blocks for the one or more register files is less than a second threshold, initiating, by the one or more computer processors, the redistribution of the one or more register files, wherein the first threshold is a minimum usage count of one or more registers in the full sub-blocks, and further wherein the second threshold is a maximum usage count of one or more registers in the empty sub-blocks.

4. The computer-implemented method of claim 1 , wherein responsive to determining that the redistribution of the one or more register files is necessary, flushing the one or more register file transfers which have not yet completed further comprises:

determining, by the one or more computer processors, a time of issue of an oldest register file transfer of the one or more register file transfers that have not yet completed; and

flushing, by the one or more computer processors, each register file transfer of the one or more register file transfers which have not yet completed that were issued since the time of issue of the oldest register file transfer.

5. The computer-implemented method of claim 1 , wherein writing the source data to the one or more write locations further comprises the source data and the write locations are in a same sub-block of one or more sub-blocks of the one or more register files.

6. The computer-implemented method of claim 3 , wherein determining the usage count for each sub-block of one or more sub-blocks of the one or more register files further comprises selecting two sub-blocks of one or more sub-blocks to balance the usage count between the two sub-blocks.

7. The computer-implemented method of claim 3 , wherein determining the usage count for each sub-block of one or more sub-blocks of the one or more register files further comprises selecting a highest utilized sub-block and a lowest utilized sub-block for the redistribution.

8. A computer program product for dynamic redistribution of register files, the computer program product comprising one or more computer readable storage media and program instructions stored on the one or more computer readable storage media, the program instructions including instructions to:

determine if a redistribution of one or more register files is necessary;

responsive to determining that the redistribution of the one or more register files is necessary, flush one or more register file transfers which have not yet completed;

allocate one or more register file write locations based on a register free list, wherein one write location is allocated for each architected register of one or more architected registers to be redistributed;

read a source data from each architected register of the one or more architected registers; and

write the source data to the one or more write locations.

9. The computer program product of claim 8 , wherein determining that the redistribution of the one or more register files is necessary further comprises one or more of the following program instructions, stored on the one or more computer readable storage media, to:

determine a number of fragmented registers for the one or more register files, wherein a register is fragmented when one-half of the register is in use and one-half of the register is free; and

responsive to determining that the number of fragmented registers for the one or more register files exceeds a threshold, initiate the redistribution of the one or more register files.

10. The computer program product of claim 8 , wherein determining that the redistribution of the one or more register files is necessary further comprises one or more of the following program instructions, stored on the one or more computer readable storage media, to:

determine a usage count for each sub-block of one or more sub-blocks of the one or more register files; and

responsive to determining that the usage count for one or more full sub-blocks for the one or more register files exceeds a first threshold and the usage count for one or more empty sub-blocks for the one or more register files is less than a second threshold, initiate the redistribution of the one or more register files, wherein the first threshold is a minimum usage count of one or more registers in the full sub-blocks, and further wherein the second threshold is a maximum usage count of one or more registers in the empty sub-blocks.

11. The computer program product of claim 8 , wherein responsive to determining that the redistribution of the one or more register files is necessary, flushing the one or more register file transfers which have not yet completed further comprises one or more of the following program instructions, stored on the one or more computer readable storage media, to:

determine a time of issue of an oldest register file transfer of the one or more register file transfers that have not yet completed; and

flush each register file transfer of the one or more register file transfers which have not yet completed that were issued since the time of issue of the oldest register file transfer.

12. The computer program product of claim 8 , wherein writing the source data to the one or more write locations further comprises the source data and the write locations are in a same sub-block of one or more sub-blocks of the one or more register files.

13. The computer program product of claim 10 , wherein determining the usage count for each sub-block of one or more sub-blocks of the one or more register files further comprises selecting two sub-blocks of one or more sub-blocks to balance the usage count between the two sub-blocks.

14. The computer program product of claim 10 , wherein determining the usage count for each sub-block of one or more sub-blocks of the one or more register files further comprises selecting a highest utilized sub-block and a lowest utilized sub-block for the redistribution.

15. A computer system for dynamic redistribution of register files, the computer system comprising:

one or more computer processors;

one or more computer readable storage media; and

program instructions stored on the one or more computer readable storage media for execution by at least one of the one or more computer processors, the stored program instructions including instructions to:

determine if a redistribution of one or more register files is necessary;

responsive to determining that the redistribution of the one or more register files is necessary, flush one or more register file transfers which have not yet completed;

allocate one or more write locations based on a register free list, wherein one write location is allocated for each architected register of one or more architected registers to be redistributed;

read a source data from each architected register of the one or more architected registers; and

write the source data to the one or more write locations.

16. The computer system of claim 15 , wherein determining that the redistribution of the one or more register files is necessary further comprises one or more of the following program instructions, stored on the one or more computer readable storage media, to:

determine a number of fragmented registers for the one or more register files, wherein a register is fragmented when one-half of the register is in use and one-half of the register is free; and

responsive to determining that the number of fragmented registers for the one or more register files exceeds a threshold, initiate the redistribution of the one or more register files.

17. The computer system of claim 15 , wherein determining that the redistribution of the one or more register files is necessary further comprises one or more of the following program instructions, stored on the one or more computer readable storage media, to:

determine a usage count for each sub-block of one or more sub-blocks of the one or more register files; and

responsive to determining that the usage count for one or more full sub-blocks for the one or more register files exceeds a first threshold and the usage count for one or more empty sub-blocks for the one or more register files is less than a second threshold, initiate the redistribution of the one or more register files, wherein the first threshold is a minimum usage count of one or more registers in the full sub-blocks, and further wherein the second threshold is a maximum usage count of one or more registers in the empty sub-blocks.

18. The computer system of claim 15 , wherein responsive to determining that the redistribution of the one or more register files is necessary, flushing the one or more register file transfers which have not yet completed further comprises one or more of the following program instructions, stored on the one or more computer readable storage media, to:

determine a time of issue of an oldest register file transfer of the one or more register file transfers that have not yet completed; and

flush each register file transfer of the one or more register file transfers which have not yet completed that were issued since the time of issue of the oldest register file transfer.

19. The computer system of claim 15 , wherein writing the source data to the one or more write locations further comprises the source data and the write locations are in a same sub-block of one or more sub-blocks of the one or more register files.

20. The computer system of claim 17 , wherein determining the usage count for each sub-block of one or more sub-blocks of the one or more register files further comprises selecting two sub-blocks of one or more sub-blocks to balance the usage count between the two sub-blocks.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 28, 2020
From: BATTLE, STEVEN J.; EISEN, SUSAN E.; NGUYEN, DUNG Q.; AYUB, SALMA; VAN NORSTRAND, ALBERT J., JR.; LI, KENT; FEISTE, KURT A.; ZOELLIN, CHRISTIAN GERHARD
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 053324/0623 →
Cited By (9)
US 12,190,116 US 12,282,772 US 12,288,065 US 12,443,412 US 12,541,369 US 12,566,609 US 12,566,610 US 12,566,613 US 12,613,698