IP Library Granted Patent US 9,336,047
Granted Patent B2
US 9,336,047 · App. 14/318,797 · Granted May 10, 2016

Prefetching of discontiguous storage locations in anticipation of transactional execution

Inventors: Fadi Y. Busaba (Poughkeepsie, NY); Dan F. Greiner (San Jose, CA); Michael Karl Gschwind (Chappaqua, NY); Maged M. Michael (Danbury, CT); Valentina Salapura (Chappaqua, NY); Eric M. Schwarz (Gardiner, NY); Timothy J. Slegel (Staatsburg, NY)
Assignee: International Business Machines Corporation
G06F9/467G06F9/30047G06F12/084G06F12/0862G06F12/0875G06F2212/1021G06F2212/281G06F2212/314G06F2212/452G06F2212/6022G06F2212/6026
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 9,336,047
App. No.
14/318,797
Granted
May 10, 2016
Kind
B2
Abstract

Discontiguous storage locations are prefetched by a prefetch instruction. Addresses of the discontiguous storage locations are provided by a list directly or indirectly specified by a parameter of the prefetch instruction, along with metadata and information about the list entries. Fetching of corresponding data blocks to cache lines is initiated. A processor may enter transactional execution mode and memory instructions of a program may be executed using the prefetched data blocks.

Claims (22)

1. A computer system for prefetching data at discontiguous storage locations, the computer system comprising:

a memory; and

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

executing a prefetch instruction, the prefetch instruction specifying a list having a plurality of entries, each entry specifying a storage address of a block of data and corresponding metadata, the metadata indicating any one of usage of the block of data and information about the list, the executing comprising:

a) obtaining, by a computer system, a plurality of addresses from the plurality of entries of the lists specified by the prefetch instruction; and

b) initiating prefetching to cache lines of a cache, the blocks of data corresponding to the obtained plurality of addresses.

2. The system of claim 1 , wherein the method further comprises executing a transaction in a multi-processor transactional execution (TX) environment, the transaction having memory operands corresponding to said prefetched blocks of data.

3. The computer system of claim 1 , wherein the method further comprises obtaining the list from any one of a memory location specified by the prefetch instruction, a contiguous range of general registers and a contiguous range of vector registers.

4. The computer system of claim 3 , wherein the prefetch instruction specifies the list through one or more levels of indirection.

5. The computer system of claim 1 , wherein the metadata indicates the usage of the block of data, the indicated usage comprising any one of instruction, data operand, load data, store data, changed data and transaction execution (TX) usage.

6. The computer system of claim 1 , wherein the metadata indicates the information about the list, the indicated information about the list comprising size of the block of data and addressing mode for fetching the block of data.

7. The computer system of claim 6 , wherein the addressing mode comprises an address-space control (ASC) value.

8. The computer system of claim 1 , wherein the fetching to the cache is only performed based on the block of data not being in a cache of a cache subsystem comprising a local cache.

9. The computer system of claim 1 , wherein the method further comprises using the metadata to set usage information in the cache line associated with the fetched block of data.

10. A computer program product for prefetching data at discontiguous storage locations, the computer program product comprising: a computer readable storage medium readable by a processor and storing instructions for execution by the processor for performing a method, the method comprising:

executing a prefetch instruction, by the processor, the prefetch instruction specifying a list having a plurality of entries, each entry specifying a storage address of a block of data and corresponding metadata, the metadata indicating any one of usage of the block of data and information about the list, the executing comprising:

a) obtaining, by the processor, a plurality of addresses from the plurality of entries of the lists specified by the prefetch instruction; and

b) initiating, by the processor, prefetching to cache lines of a cache the blocks of data corresponding to the obtained plurality of addresses.

11. The computer program product of claim 10 , wherein the method further comprises executing a transaction in a multi-processor transactional execution (TX) environment, the transaction having memory operands corresponding to said prefetched blocks of data.

12. The computer program product of claim 10 , wherein the method further comprises obtaining the list from any one of a memory location specified by the prefetch instruction, a contiguous range of general registers and a contiguous range of vector registers.

13. The computer program product of claim 12 , wherein the prefetch instruction specifies the list through one or more levels of indirection.

14. The computer program product of claim 10 , wherein the metadata indicates the usage of the block of data, the indicated usage comprising any one of instruction, data operand, load data, store data, changed data and transaction execution (TX) usage.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 30, 2014
From: BUSABA, FADI Y.; GREINER, DAN F.; GSCHWIND, MICHAEL KARL; MICHAEL, MAGED M.; SALAPURA, VALENTINA; SCHWARZ, ERIC M.; SLEGEL, TIMOTHY J.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 033207/0941 →
Continuity (1)
Related Publication 20150378917A1 · Dec 31, 2015