IP Library Granted Patent US 9,244,827
Granted Patent B2
US 9,244,827 · App. 14/036,591 · Granted Jan 26, 2016

Store address prediction for memory disambiguation in a processing device

Inventors: Ho-Seop Kim (Portland, OR); Robert S. Chappell (Portland, OR); Choon Y. Soo (Bayan Lepas, MY); Srikanth T. Srinivasan (Portland, OR)
Assignee: Intel Corporation
G06F12/0215G06F9/383G06F9/3834G06F9/3842
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,244,827
App. No.
14/036,591
Granted
Jan 26, 2016
Kind
B2
Abstract

A processing device implementing store address prediction for memory disambiguation in a processing device is disclosed. A processing device of the disclosure includes a store address predictor to predict an address for store operations that store data to a memory hierarchy. The processing device further includes a store buffer for buffering the store operations prior to completion, the store buffer to comprise the predicted address for each of the store operations. The processing device further includes a load buffer to buffer a load operation, the load operation to reference the store buffer to, based on the predicted addresses, determine whether to speculatively execute ahead of each store operation and to determine whether to speculatively forward data from one of the store operations.

Claims (45)

1. A processing device, comprising:

a store address predictor to predict an address for store operations that store data to a memory hierarchy;

a store buffer communicably coupled to the store address predictor, the store buffer to buffer the store operations prior to completion, the store buffer to comprise the predicted address for each of the store operations; and

a load buffer communicably coupled to the store address predictor, the load buffer to buffer a load operation, the load operation to reference the store buffer to, based on the predicted addresses, determine whether to speculatively execute ahead of a respective store operation and to determine whether to speculatively forward data from the respective store operation.

2. The processing device of claim 1 , wherein the store address predictor comprises a store address table comprising entries for the store operations, each entry comprising an index associated with an instruction point (IP) of an associated store operation of the store operations, the predicted address for the associated store operation, an entry state for the entry, and a counter value for the entry.

3. The processing device of claim 2 , wherein the store address table is a content addressable memory (CAM) array and the index is the IP of the associated store operation.

4. The processing device of claim 1 , wherein the store address predictor further comprises an address prediction component to generate the predicted addresses, wherein the address prediction component to generate the predicted addresses based on stride calculations of the store operations.

5. The processing device of claim 2 , wherein the store address predictor further comprises a threshold comparison component to determine, for each of the entries, whether the counter value exceeds a counter threshold has been reached by the counter value of the entry, wherein when the counter threshold has been reached, the address prediction component to set the entry state of the entry to suppress use of the predicted address by the store buffer.

6. The processing device of claim 1 , wherein the load buffer comprising an entry for the load operation that comprises a store buffer ID field to store a store buffer ID of an entry of the store buffer corresponding to a store operation from which the load operation speculatively forwarded data.

7. The processing device of claim 2 , wherein when a dispatched store operation of the store operations calculates a store address, and wherein the store buffer to:

overwrite the predicted address in the store buffer for the dispatched store operation with the calculated store address; and

verify whether the predicted address and the calculated address match.

8. The processing device of claim 7 , wherein when the predicted address and the calculated address do not match, the store address predictor to increment the counter value for the entry associated with the dispatched store operation.

9. The processing device of claim 6 , wherein the load operation is indicated as mispredicted when at least one of:

the load operation speculatively executes ahead of the dispatched store operation without speculatively forwarding data from the dispatched store operation and comprises an address that matches the calculated address;

the load operation speculatively forwarded the data from the dispatched store operation and the address of the load operation does not match the calculated address; or

the load operation speculatively forwarded data from another store operation of the store operations and the address of the load operation matches the calculated address.

10. A method, comprising:

predicting, by a store address predictor of a processing device, an address for store operations that stores data to a memory hierarchy;

allocating an entry in a store buffer for buffering the store operations prior to completion, the entry in the store buffer comprising the predicted address for each of the store operations; and

referencing, by a load operation of the processing device, the predicted address in the store buffer to determine whether to speculatively execute ahead of each store operation and to determine whether to speculatively forward data from one of the store operations.

11. The method of claim 10 , wherein the store address predictor comprises a store address table comprising entries for the store operations, each entry comprising an index associated with an instruction point (IP) of an associated store operation of the store operations, the predicted address for the associated store operation, an entry state for the entry, and a counter value for the entry.

12. The method of claim 10 , wherein the store address predictor further comprises an address prediction component to generate the predicted addresses based on stride calculations of the store operations.

13. The method of claim 11 , wherein the store address predictor further comprises a threshold comparison component to determine, for each of the entries, whether the counter value exceeds a counter threshold has been reached by the counter value of the entry, and wherein when the counter threshold has been reached, setting, by the address prediction component, the entry state of the entry to suppress use of the predicted address by the store buffer.

14. The method of claim 10 , further comprising a load buffer for buffering the load operation, the load buffer comprising an entry for the load operation that comprises a store buffer ID field to store a store buffer ID of an entry of the store buffer corresponding to a store operation from which the load operation speculatively forwarded data.

15. The method of claim 14 , wherein when a dispatched store operation of the store operations calculates a store address:

overwriting the predicted address in the store buffer for the dispatched store operation with the calculated store address; and

verifying whether the predicted address and the calculated address match, wherein when the predicted address and the calculated address do not match, incrementing the counter value for the entry associated with the dispatched store operation.

16. A system comprising:

a memory hierarchy; and

a processing device communicably coupled to the memory hierarchy, the processing device comprising an execution unit comprising:

a store address predictor to predict an address for store operations that store data to the memory hierarchy;

a store buffer for buffering the store operations prior to completion, the store buffer to comprise the predicted address for each of the store operations; and

a load buffer communicably coupled to the store address predictor, the load buffer to buffer a load operation, the load operation to reference the store buffer to, based on the predicted addresses, determine whether to speculatively execute ahead of each store operation and to determine whether to speculatively forward data from one of the store operations.

17. The system of claim 16 , wherein the store address predictor comprises a store address table comprising entries for the store operations, each entry comprising an index associated with an instruction point (IP) of an associated store operation of the store operations, the predicted address for the associated store operation, an entry state for the entry, and a counter value for the entry.

18. The system of claim 16 , wherein the store address predictor further comprises an address prediction component to generate the predicted addresses based on stride calculations of the store operations.

19. The system of claim 17 , wherein the store address predictor further comprises a threshold comparison component to determine, for each of the entries, whether the counter value exceeds a counter threshold has been reached by the counter value of the entry.

20. The system of claim 19 , wherein when the counter threshold has been reached, the address prediction component to set the entry state of the entry to suppress use of the predicted address by the store buffer.

21. The system of claim 16 , wherein the load buffer comprising an entry for the load operation that comprises a store buffer ID field to store a store buffer ID of an entry of the store buffer corresponding to a store operation from which the load operation speculatively forwarded data.

22. The system of claim 17 , wherein when a dispatched store operation of the store operations calculates a store address, the store buffer to overwrite the predicted address in the store buffer for the dispatched store operation with the calculated store address.

23. The system of claim 22 , wherein the store buffer to verify whether the predicted address and the calculated address match, and wherein when the predicted address and the calculated address do not match, the store address predictor to increment the counter value for the entry associated with the dispatched store operation.

24. The system of claim 23 , wherein the load operation is indicated as mispredicted when at least one of:

the load operation speculatively executes ahead of the dispatched store operation without speculatively forwarding data from the dispatched store operation and comprises an address that matches the calculated address;

the load operation speculatively forwarded the data from the dispatched store operation and the address of the load operation does not match the calculated address; or

the load operation speculatively forwarded data from another store operation of the store operations and the address of the load operation matches the calculated address.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 24, 2014
From: KIM, HO-SEOP; CHAPPELL, ROBERT S.; SOO, CHOON Y.; SRINIVASAN, SRIKANTH T.
To: INTEL CORPORATION
Reel/Frame 033161/0910 →
Continuity (1)
Related Publication 20150089186A1 · Mar 26, 2015