IP Library Granted Patent US 9,424,190
Granted Patent B2
US 9,424,190 · App. 13/213,387 · Granted Aug 23, 2016

Data processing system operable in single and multi-thread modes and having multiple caches and method of operation

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,424,190
App. No.
13/213,387
Granted
Aug 23, 2016
Kind
B2
Abstract

Systems and methods are disclosed for a computer system that includes a first load/store execution unit 210 a , a first Level 1 L1 data cache unit 216 a coupled to the first load/store execution unit, a second load/store execution unit 210 b , and a second L1 data cache unit 216 b coupled to the second load/store execution unit. Some instructions are directed to the first load/store execution unit and other instructions are directed to the second load/store execution unit when executing a single thread of instructions.

Claims (133)

1. A method comprising:

in a computer system including a first load/store execution unit, a first Level 1 (L1) data cache unit coupled to the first load/store execution unit, a second load/store execution unit, and a second L1 data cache unit coupled to the second load/store execution unit, the method comprises:

directing some instructions to the first load/store execution unit and other instructions to the second load/store execution unit when executing a single thread of instructions, wherein each directed instruction is directed to one of the first or the second load/store execution units based on a characteristic of a register number which holds a base address of the load/store instruction or based on one or more prediction bits associated with the register number which holds the base address of the load/store instruction, wherein the one or more prediction bits indicate one of the first or second load/store execution units;

dispatching a current load or store instruction to a selected load execution queue;

if the current load or store instruction is selected for execution, accessing a selected one of the first and second L1 data cache units;

determining if there is a cache hit in the selected one of the first and second L1 data cache units; and

when there is no cache hit in the selected one of the first and selected L1 data cache units, determining if there is a cache hit in the one of the first and second L1 data cache units that was not selected.

2. The method of claim 1 further comprising:

alternately directing the load and store instructions to the first load store execution unit and to the second load/store execution unit; and

setting up base register prediction based on selection of the first load store execution unit or the second load store execution unit.

3. The method of claim 1 further comprising:

an array of share indicators corresponding to the first L1 data cache unit that indicate whether a cache line is shared with another cache; and

an array of location indicators that point to the shared cache line in the other cache.

4. The method of claim 3 further comprising:

prior to dispatching the current load or store instruction to the selected load execution queue, checking dependency between a current load or store instruction with instructions in load execution queues.

5. The method of claim 4 further comprising:

when the current load or store instruction is a load instruction and there is no cache hit in the selected one of the first and second L1 data cache units,

when there is not a cache hit in the one of the first and second L1 data cache units that was not selected,

fetching a cache line from Level 2 (L2) data cache to write into the selected one of the first and second L1 data cache units, and

when there is a cache hit in the one of the first and second L1 data cache units that was not selected,

fetching data from the one of the first and second L1 data cache units that was not selected,

when the first and second L1 data cache units are in write-through mode,

setting a share indicator and location indicator of the one of the first and second L1 data cache units that was not selected for the one of the first and second L1 data cache units that was selected,

when the first and second L1 data cache units are in copy-back mode,

canceling the request for cache data to the L2 data cache unit,

setting the share indicator and the location indicator of the one of the first and second L1 data cache units that was not selected for the one of the first and second L1 data cache units that was selected, and

fetching a cache line and control indicators from the one of the first and second L1 data cache units that was not selected to write into the one of the first and second L1 data cache units that was selected.

6. The method of claim 4 further comprising:

when the current load or store instruction is a store instruction and there is no cache hit in the selected one of the first and second L1 data cache units,

when there is not a cache hit in the one of the first and second L1 data cache units that was not selected,

sending a request to write store data to L2 data cache,

when there is a cache hit in the one of the first and second L1 data cache units that was not selected,

writing the store data in the one of the first and second L1 data cache units that was not selected,

when the one of the first and second L1 data cache units that was not selected is in copy-back mode, initializing cache control indicators; and

when there is a cache hit in the one of the first and second L1 data cache units that was selected,

writing the store data in the one of the first and second L1 data cache units that was selected,

at the same time that the store data is being written, invalidating an entry of the one of the first and second L1 data cache units if the share indicator is set,

when the one of the first and second L1 data cache units that was selected is in copy-back mode, initializing cache control indicators, and

when the one of the first and second L1 data cache units that was selected is in write-through mode, sending a request to write store data to L2 data cache.

7. The method of claim 1 further comprising:

prior to dispatching the current load or store instruction to the selected execution queue, looking up prediction indicators for a base address register number for one of the load or store instructions, directing the load or store instruction to a selected one of the first load store execution unit and a second load/store execution unit, and checking dependency between a current load or store instruction with instructions in load execution queues;

when the current load or store instruction is a load instruction and there is no cache hit in the selected one of the first and second L1 data cache units,

when there is not a cache hit in the one of the first and second L1 data cache units that was not selected,

fetching a cache line from L2 data cache to write into the selected one of the first and second L1 data cache units, and

when there is a cache hit in the one of the first and second L1 data cache units that was not selected,

fetching data from the one of the first and second L1 data cache units that was not selected,

canceling the request to the L2 cache, and

modifying prediction indicators for a base address register number.

8. The method of claim 7 further comprising:

when the current load or store instruction is a store instruction and there is no cache hit in the selected one of the first and second L1 data cache units,

when there is not a cache hit in the one of the first and second L1 data cache units that was not selected,

sending a request to write store data to L2 data cache,

when there is a cache hit in the one of the first and second L1 data cache units that was not selected,

writing the store data in the one of the first and second L1 data cache units that was not selected, and

modifying prediction indicators for a base address register number,

when the one of the first and second L1 data cache units that was not selected is in copy-back mode, initializing cache control indicators, and

when the one of the first and second L1 data cache units that was not selected is in write-through mode, sending a request to write store data to Level 2 L2 data cache.

9. The method of claim 7 further comprising:

when there is a cache hit in the one of the first and second L1 data cache units that was selected,

writing the store data in the one of the first and second L1 data cache units that was selected,

when the one of the first and second L1 data cache units that was selected is in copy-back mode, initializing cache control indicators, and

when the one of the first and second L1 data cache units that was selected is in write-through mode, sending a request to write store data to L2 data cache.

10. A microprocessor system comprising:

a first load/store execution unit;

a first L1 data cache unit coupled to the first load/store execution unit;

a second load/store execution unit;

a second L1 data cache unit coupled to the second load/store execution unit, wherein the first load/store execution unit and the first L1 data cache operate independently of the second load/store execution unit and the second L1 data cache unit; and

a plurality of decode/issue units configured to specify the first load/store execution unit and the second load/store execution unit when executing a single thread of instructions based on steering logic that directs load and store instructions for the single thread to the first load/store execution unit or the second load/store execution unit, wherein each load and store instruction for the single thread is directed by the steering logic to one of the first or the second load/store execution units based on a characteristic of a register number which holds a base address of the load/store instruction or based on one or more prediction bits associated with the register number which holds the base address of the load/store instruction, wherein the one or more prediction bits indicate one of the first or second load/store execution units, wherein the plurality of decode/issue units are further configured to dispatch a current load or store instruction to a selected load execution queue;

a load/store arbiter configured to select the current load or store instruction for execution, wherein a selected one of the first and second L1 data cache units is configured to determine if there is a cache hit for the current load or store instruction, and the one of the first and second L1 data cache units that was not selected is configured to, when there is no cache hit in the selected one of the first and second L1 data cache units, determine if there is a cache hit for the current load or store instruction.

11. The system of claim 10 further comprising:

an array of share indicators corresponding to the first L1 data cache unit that indicate whether a cache line is shared with another cache; and

an array of location indicators that point to the shared cache line in the other cache.

12. The system of claim 11

wherein the plurality of decode/issue units are configured to check dependency between a current load or store instruction with instructions in load execution queues prior to dispatching the current load or store instruction to the selected load execution queue.

13. The system of claim 12

wherein the L1 data cache units are configured to

when the current load or store instruction is a load instruction and there is no cache hit in the selected one of the first and second L1 data cache units,

when there is not a cache hit in the one of the first and second L1 data cache units that was not selected,

fetch a cache line from L2 data cache to write into the selected one of the first and second L1 data cache units, and

when there is a cache hit in the one of the first and second L1 data cache units that was not selected, fetch data from the one of the first and second L1 data cache units that was not selected; and

when there is a cache hit in the one of the first and second L1 data cache units that was not selected,

when the first and second L1 data cache units are in write-through mode,

set a share indicator and a location indicator of the one of the first and second L1 data cache units that was not selected for the one of the first and second L1 data cache units that was selected,

when the first and second L1 data cache units are in copy-back mode,

cancel the request for cache data to the L2 data cache units,

set a share indicator and a location indicator of the one of the first and second L1 data cache units that was not selected for the one of the first and second L1 data cache units that was selected, and

fetch a cache line and control indicators from the one of the first and second L1 data cache units that was not selected to write into the one of the first and second L1 data cache units that was selected.

14. The system of claim 12

wherein the L1 data cache units are configured to

when the current load or store instruction is a store instruction and there is no cache hit in the selected one of the first and second L1 data cache units,

when there is not a cache hit in the one of the first and second L1 data cache units that was not selected,

send a request to write store data to L2 data cache,

when there is a cache hit in the one of the first and second L1 data cache units that was not selected,

write the store data in the one of the first and second L1 data cache units that was not selected, and

when the one of the first and second L1 data cache units that was not selected is in copy-back mode, initialize cache control indicators; and

when there is a cache hit in the one of the first and second L1 data cache units that was selected,

write the store data in the one of the first and second L1 data cache units that was selected,

at the same time that the store data is being written, invalidate an entry of the one of the first and second L1 data cache units if the share indicator is set,

when the one of the first and second L1 data cache units that was selected is in copy-back mode, initialize cache control indicators, and

when the one of the first and second L1 data cache units that was selected is in write-through mode, send a request to write store data to L2 data cache.

15. The system of claim 10 wherein the steering logic

alternately directing the load and store instructions to the first load store execution unit and to the second load/store execution unit; and

setting up base register prediction based on selection of the first load store execution unit or the second load store execution unit.

16. The system of claim 10

wherein the plurality of decode/issue units are configured to, prior to dispatching the current load or store instruction to the selected load execution queue, look up prediction indicators for a base address register number for one of the load or store instructions, direct the load or store instruction to a selected one of the first load store execution unit and a second load/store execution unit, and check dependency between a current load or store instruction with instructions in load execution queues.

17. The system of claim 16

wherein the L1 data cache units are configured to

when the current load or store instruction is a load instruction and there is no cache hit in the selected one of the first and second L1 data cache units,

when there is not a cache hit in the one of the first and second L1 data cache units that was not selected,

fetch a cache line from L2 data cache to write into the selected one of the first and second L1 data cache units, and

when there is a cache hit in the one of the first and second L1 data cache units that was not selected,

fetch data from the one of the first and second L1 data cache units that was not selected,

cancel the request to the L2 cache, and

modify prediction indicators for a base address register number.

18. The system of claim 16

wherein the L1 data cache units are configured to

when the current load or store instruction is a store instruction and there is no cache hit in the selected one of the first and second L1 data cache units,

when there is not a cache hit in the one of the first and second L1 data cache units that was not selected,

send a request to write store data to L2 data cache,

when there is a cache hit in the one of the first and second L1 data cache units that was not selected,

write the store data in the one of the first and second L1 data cache units that was not selected, and

modify prediction indicators for a base address register number,

when the one of the first and second L1 data cache units that was not selected is in copy-back mode, initialize cache control indicators, and

when the one of the first and second L1 data cache units that was not selected is in write-through mode, send a request to write store data to L2 data cache.

19. The system of claim 16

wherein the L1 data cache units are configured to

when there is a cache hit in the one of the first and second L1 data cache units that was selected,

write the store data in the one of the first and second L1 data cache units that was selected,

when the one of the first and second L1 data cache units that was selected is in copy-back mode, initialize cache control indicators, and

when the one of the first and second L1 data cache units that was selected is in write-through mode, send a request to write store data to L2 data cache.

20. A method comprising:

in a computer system including a first load/store execution unit, a first Level 1 (L1) data cache unit coupled to the first load/store execution unit, a second load/store execution unit, and a second L1 data cache unit coupled to the second load/store execution unit,

directing some load/store instructions to the first load/store execution unit and other load/store instructions to the second load/store execution unit when executing a single thread of instructions, wherein each load/store instruction is directed to one of the first or the second load/store execution units based on a characteristic of a register number which holds a base address of the load/store instruction.

Assignments (22)
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040925 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Feb 17, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP, B.V. F/K/A FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 052917/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040928 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Jan 17, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 052915/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 037486 FRAME 0517. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS. Recorded Dec 10, 2019
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 053547/0421 →
RELEASE OF SECURITY INTEREST Recorded Sep 10, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 050744/0097 →
CORRECTIVE ASSIGNMENT TO CORRECT THE TO CORRECT THE APPLICATION NO. FROM 13,883,290 TO 13,833,290 PREVIOUSLY RECORDED ON REEL 041703 FRAME 0536. ASSIGNOR(S) HEREBY CONFIRMS THE THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS.. Recorded Feb 20, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: SHENZHEN XINGUODU TECHNOLOGY CO., LTD.
Reel/Frame 048734/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE PATENTS 8108266 AND 8062324 AND REPLACE THEM WITH 6108266 AND 8060324 PREVIOUSLY RECORDED ON REEL 037518 FRAME 0292. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS. Recorded Feb 1, 2017
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 041703/0536 →
CORRECTIVE ASSIGNMENT TO CORRECT THE NATURE OF CONVEYANCE PREVIOUSLY RECORDED AT REEL: 040652 FRAME: 0241. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER AND CHANGE OF NAME. Recorded Jan 5, 2017
From: FREESCALE SEMICONDUCTOR, INC.
To: NXP USA, INC.
Reel/Frame 041260/0850 →
MERGER Recorded Nov 8, 2016
From: FREESCALE SEMICONDUCTOR, INC.
To: NXP USA, INC.
Reel/Frame 040652/0241 →
RELEASE OF SECURITY INTEREST Recorded Nov 7, 2016
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 040928/0001 →
RELEASE OF SECURITY INTEREST Recorded Sep 21, 2016
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP, B.V., F/K/A FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 040925/0001 →
SUPPLEMENT TO THE SECURITY AGREEMENT Recorded Jun 16, 2016
From: FREESCALE SEMICONDUCTOR, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 039138/0001 →
ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS Recorded Jan 13, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037518/0292 →
ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS Recorded Jan 12, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037486/0517 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037357/0285 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037357/0387 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037357/0334 →
SECURITY AGREEMENT Recorded Nov 6, 2013
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 031591/0266 →
SECURITY AGREEMENT Recorded Jun 18, 2013
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 030633/0424 →
SECURITY AGREEMENT Recorded Jan 31, 2012
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 027622/0477 →
SECURITY AGREEMENT Recorded Jan 31, 2012
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 027622/0075 →
SECURITY AGREEMENT Recorded Jan 31, 2012
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 027621/0928 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 19, 2011
From: TRAN, THANG M.
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 026778/0371 →