IP Library Granted Patent US 9,678,758
Granted Patent B2
US 9,678,758 · App. 14/499,044 · Granted Jun 13, 2017

Coprocessor for out-of-order loads

Inventors: Lucian Codrescu (Austin, TX); Christopher Edward Koob (Round Rock, TX); Eric Wayne Mahurin (Austin, TX); Suresh Kumar Venkumahanti (Austin, TX)
Assignee: QUALCOMM Incorporated
G06F9/3877G06F9/30036G06F9/3814G06F9/30043G06F9/3824G06F9/3836G06F9/3887G06F15/8053
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,678,758
App. No.
14/499,044
Granted
Jun 13, 2017
Kind
B2
Abstract

Systems and methods for implementing certain load instructions, such as vector load instructions by cooperation of a main processor and a coprocessor. The load instructions which are identified by the main processor for offloading to the coprocessor are committed in the main processor without receiving corresponding load data. Post-commit, the load instructions are processed in the coprocessor, such that latencies incurred in fetching the load data are hidden from the main processor. By implementing an out-of-order load data buffer associated with an in-order instruction buffer, the coprocessor is also configured to avoid stalls due to long latencies which may be involved in fetching the load data from levels of memory hierarchy, such as L2, L3, L4 caches, main memory, etc.

Claims (50)

1. A method of operating a processing system, the method comprising:

identifying a first load instruction in a main processor for offloading to a coprocessor;

committing the first load instruction in the main processor without receiving, by the main processor, first load data for satisfying the first load instruction, wherein committing the first load instruction comprises completing a main processor part of the first load instruction by updating a first register specified in the first load instruction, in a main register file in the main processor; and

offloading processing of the first load instruction to the coprocessor after the committing in the main processor.

2. The method of claim 1 , wherein committing the first load instruction comprises updating a program counter (PC) value of the main processor.

3. The method of claim 1 , wherein processing the first load instruction in the coprocessor comprises:

accessing a memory hierarchy with a first load address for the first load instruction;

receiving a first load data corresponding to the first load address from the memory hierarchy; and

associating the first load instruction with the first load data out of program order.

4. The method of claim 3 , further comprising:

storing the first load instruction in program order in a first entry of an in-order instruction buffer; and

storing the first load data received from the memory hierarchy in a first entry of an out-of-order load data buffer,

wherein associating the first load instruction with the first load data comprises completing a coprocessor part of the first load instruction by determining that the first entry of the load data buffer corresponding to the first entry of the load instruction buffer has been populated.

5. The method of claim 4 , further comprising:

storing a second load instruction offloaded from the main processor in a second entry of the in-order buffer, wherein the second load instruction is programmatically younger than the first load instruction;

receiving second load data corresponding to the second load instruction from the memory hierarchy, prior to receiving the first load data; and

storing the second load data in a second entry of the out-of-order load data buffer prior to storing the first load data in the first entry of the out-of-order load data buffer.

6. The method of claim 4 , further comprising:

storing a third instruction offloaded from the main processor in a third entry of the in-order buffer, wherein the third instruction has a data dependency on the first load instruction; and

executing the third instruction in the coprocessor based on the associating the first load instruction with the first load data.

7. The method of claim 1 , further comprising executing a fourth instruction in the main processor in program order, based on committing the first load instruction, wherein the fourth instruction has a data dependency on the first load instruction.

8. The method of claim 1 , wherein the coprocessor is a vector processor and the first load instruction is a vector load instruction.

9. A processing system comprising:

a main processor and a coprocessor, the main processor configured to:

identify a first load instruction to offload to the coprocessor;

commit the first load instruction in the main processor without receiving first load data for satisfying the first load instruction; and

offload processing of the first load instruction to the coprocessor,

wherein the main processor comprises a main register file and is configured to update a first register specified in the first load instruction in the main register file when the first load instruction is committed.

10. The processing system of claim 9 , wherein the main processor is configured to update a program counter (PC) value of the main processor when the first load instruction is committed.

11. The processing system of claim 9 , wherein the coprocessor is configured to:

access a memory hierarchy with a first load address for the first load instruction;

receive a first load data corresponding to the first load address from the memory hierarchy; and

associate the first load instruction with the first load data out of program order.

12. The processing system of claim 11 , wherein the coprocessor comprises:

an in-order instruction buffer configured to store the first load instruction in program order in a first entry of an in-order instruction buffer; and

an out-of-order load data buffer configured to store the first load data received from the memory hierarchy in a first entry of an out-of-order load data buffer,

wherein association of the first load instruction with the first load data is based on a determination that the first entry of the load data buffer corresponding to the first entry of the load instruction buffer has been populated.

13. The processing system of claim 12 , wherein:

the in-order instruction buffer is further configured to store a second load instruction offloaded from the main processor in a second entry of the in-order buffer, wherein the second load instruction is programmatically younger than the first load instruction; and

the out-of-order load data buffer is further configured to store the second load data in a second entry of the out-of-order load data buffer prior to storing the first load data in the first entry of the out-of-order load data buffer, based on receiving the second load data prior to receiving the first load data.

14. The processing system of claim 12 , wherein

the in-order buffer is further configured to store a third instruction offloaded from the main processor in a third entry of the in-order buffer, wherein the third instruction has a data dependency on the first load instruction; and

the coprocessor is further configured to execute the third instruction based on the association of the first load instruction with the first load data.

15. The processing system of claim 9 , wherein the main processor is further configured to execute a fourth instruction in program order, based on the committing of the first load instruction, wherein the fourth instruction has a data dependency on the first load instruction.

16. The processing system of claim 9 , wherein the coprocessor is a vector processor and the first load instruction is a vector load instruction.

17. The processing system of claim 9 , integrated in a device, selected from the group consisting of a set top box, music player, video player, entertainment unit, navigation device, communications device, personal digital assistant (PDA), fixed location data unit, and a computer.

18. A non-transitory computer-readable storage medium comprising instructions executable by a processor, the processor in communication with a coprocessor, the non-transitory computer-readable storage medium comprising:

a first load instruction comprising a processor part and a coprocessor part, wherein the processor part is executable by the processor, such that the first load instruction is committed in the processor upon execution of the processor part, without receiving, by the processor, first load data for satisfying the first load instruction, wherein committing the first load instruction comprises completing a main processor part of the first load instruction by updating a first register specified in the first load instruction, in a main register file in the main processor; and

the coprocessor part is executable by the coprocessor, such that the coprocessor part is executed in the coprocessor after the first load instruction is committed in the processor.

19. The non-transitory computer-readable storage medium of claim 18 , wherein the processor part is a scalar instruction and the coprocessor part is a vector instruction.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 18, 2014
From: CODRESCU, LUCIAN; KOOB, CHRISTOPHER EDWARD; MAHURIN, ERIC WAYNE; VENKUMAHANTI, SURESH
To: QUALCOMM INCORPORATED
Reel/Frame 034201/0582 →
Continuity (1)
Related Publication 20160092238A1 · Mar 31, 2016