IP Library Granted Patent US 8,671,232
Granted Patent B1
US 8,671,232 · App. 13/789,661 · Granted Mar 11, 2014

System and method for dynamically migrating stash transactions

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 8,671,232
App. No.
13/789,661
Granted
Mar 11, 2014
Kind
B1
Abstract

A system and method for dynamically migrating stash transactions include first and second processing cores, an input/output memory management unit (IOMMU), an IOMMU mapping table, an input/output (I/O) device, a stash transaction migration management unit (STMMU), and an operating system (OS) scheduler. The first core executes a first thread associated with a frame manager. The OS scheduler migrates the first thread from the first core to the second core and generates pre-empt notifiers to indicate scheduling-out and scheduling-in of the first thread from the first core and to the second core. The STMMU uses the pre-empt notifiers to enable dynamic stash transaction migration.

Claims (38)

1. A system for migrating at least one stash transaction between a plurality of processor cores of a multicore processor system, wherein each of the plurality of cores includes a cache register, the system comprising:

a main memory for storing an input/output memory management unit (IOMMU) mapping table that includes a mapping between a logical input/output (I/O) device number (LIODN) corresponding to an I/O device and a corresponding stash transaction destination identification (ID), wherein the stash transaction destination ID includes a cache register ID associated with a cache register of one of the cores of the plurality of cores;

a stash transaction migration management unit (STMMU), coupled to the main memory, for determining a first core ID of a first core that executes a first thread associated with a first I/O device when the first thread is scheduled-out from the first core, wherein the first I/O device has a corresponding first stash transaction destination ID stored in the IOMMU mapping table, determining a second core ID of a second core that executes the first thread after the first thread is scheduled-in, comparing the first and second core IDs, updating a stash transaction destination ID field of the IOMMU mapping table corresponding to the first I/O device when the first and second core IDs are different to replace the first stash transaction destination ID with a second stash transaction destination ID, wherein the stash transaction destination ID field for the first I/O device stores the first stash transaction destination ID, and updating a second cache register ID associated with a cache register of the second core when the first and second core IDs are different to replace the second cache register ID with a first cache register ID associated with a cache register of the first core;

a frame manager for generating a first data frame, initiating a direct memory access (DMA) transaction for storing the first data frame in an external buffer of the main memory, and initiating the at least one stash transaction; and

an IOMMU, coupled to the main memory, the frame manager, and the plurality of cores, for validating the DMA transaction initiated by the frame manager using a LIODN of the frame manager and determining a stash destination for the at least one stash transaction by accessing the IOMMU mapping table.

2. The system of claim 1 , wherein the STMMU is connected to an operating system (OS) scheduler for receiving pre-empt notifiers generated when the first thread is scheduled-in and scheduled-out.

3. The system of claim 2 , wherein the STMMU determines the first and second core IDs using the pre-empt notifiers generated by the OS scheduler.

4. The system of claim 3 , wherein the IOMMU validates the DMA transaction by searching for an entry in the IOMMU mapping table corresponding to the LIODN of the frame manager.

5. The system of claim 4 , wherein the IOMMU is coupled to the plurality of cores and the main memory by way of a system bus.

6. The system of claim 4 , wherein the STMMU executes in at least one of the plurality of cores.

7. The system of claim 4 , further comprising a queue manager, coupled to the frame manager, for broadcasting the at least one stash transaction to the plurality of cores.

8. A method for migrating at least one stash transaction between a plurality of processor cores of a multicore processor system using an input/output memory management unit (IOMMU) mapping table, wherein the IOMMU mapping table includes a mapping between an input/output (I/O) device and a corresponding stash transaction destination identification (ID), wherein the I/O device transmits a data frame to at least one core of the plurality of cores, and wherein the stash transaction destination ID includes a cache register ID associated with a corresponding core, the method comprising:

determining a first core ID corresponding to a first core of the plurality of cores that executes a first thread associated with a first I/O device when the first thread is scheduled-out from the first core, wherein the first I/O device has a corresponding first stash transaction destination ID stored in the IOMMU mapping table, and wherein the first stash transaction destination ID includes a first cache register ID associated with a cache register of the first core;

determining a second core ID corresponding to a second core that executes the first thread after the first thread is scheduled-in;

comparing the first and second core IDs;

updating the IOMMU mapping table corresponding to the first I/O device when the first and second core IDs are different to replace the first stash transaction destination ID with a second stash transaction destination ID, wherein the second stash transaction destination ID includes a second cache register ID associated with a cache register of the second core;

initiating the at least one stash transaction that corresponds to a first data frame received from the first I/O device;

broadcasting the at least one stash transaction to the plurality of cores; and

storing the first data frame in the cache register of the second core.

9. The method of claim 8 , wherein the first thread is scheduled-in and scheduled-out by an operating system (OS) scheduler.

10. The method of claim 9 , further comprising generating pre-empt notifiers when the first thread is scheduled-in and scheduled-out by the OS scheduler.

11. The method of claim 8 , wherein the IOMMU mapping table stores a mapping between a logical I/O device number (LIODN) corresponding to the at least one I/O device and the stash transaction destination ID.

12. The method of claim 8 , further comprising initiating a direct memory access (DMA) transaction for storing the first data frame in an external buffer of the main memory by the frame manager.

13. The method of claim 12 , further comprising validating the DMA transaction by an IOMMU by searching for an entry in the IOMMU mapping table corresponding to a LIODN of the first I/O device.

14. The method of claim 8 , further comprising updating the second cache register ID when the first and second core IDs are different to replace the second cache register ID with the first cache register ID.

15. The method of claim 8 , wherein the at least one stash transaction is initiated and broadcasted by a queue manager.

16. The method of claim 8 , wherein updating the IOMMU mapping table includes updating a stash transaction destination ID field by a stash transaction migration management unit (STMMU) corresponding to the first I/O device that stores the first stash transaction destination ID.

17. The method of claim 8 , wherein the first and second core IDs corresponding to the first and second cores, respectively, are determined by the STMMU when the first thread is scheduled-out and scheduled-in.

18. A method for migrating at least one stash transaction between a plurality of processor cores in a multicore processing system using an input/output memory management unit (IOMMU) mapping table, wherein the IOMMU mapping table includes a mapping between an input/output (I/O) device and a corresponding stash transaction destination identification (ID), wherein the I/O device transmits a data frame to at least one core of the plurality of cores, and wherein the stash transaction destination ID includes a cache register ID associated with a corresponding core, the method comprising:

determining a first core ID corresponding to a first core of the plurality of cores that executes a first thread associated with a first I/O device when the first thread is scheduled-out from the first core, wherein the first I/O device has a corresponding first stash transaction destination ID stored in the IOMMU mapping table, and wherein the first stash transaction destination ID includes a first cache register ID associated with a cache register of the first core;

determining a second core ID corresponding to a second core that executes the first thread after the first thread is scheduled-in;

comparing the first and second core IDs;

updating a second cache register ID associated with a cache register of the second core when the first and second core IDs are different to replace the second cache register ID with the first cache register ID;

initiating the at least one stash transaction that corresponds to a first data frame received from the first I/O device;

broadcasting the at least one stash transaction to the plurality of cores; and

storing the first data frame in the cache register of the second core.

19. The method of claim 18 , further comprising updating the IOMMU mapping table corresponding to the first I/O device when the first and second core IDs are different to replace the first stash transaction destination ID with a second stash transaction destination ID, wherein the second stash transaction destination ID includes the second cache register ID associated with a cache register of the second core.

20. The method of claim 19 , further comprising updating the LIODN of the first I/O device when the first and second core IDs are different to replace the LIODN of the first I/O device with a LIODN of a second I/O device.

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/0704 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037357/0725 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037357/0744 →
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 →
SUPPLEMENT TO IP SECURITY AGREEMENT Recorded May 20, 2013
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 030445/0737 →
SUPPLEMENT TO IP SECURITY AGREEMENT Recorded May 20, 2013
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 030445/0709 →
SUPPLEMENT TO IP SECURITY AGREEMENT Recorded May 20, 2013
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 030445/0581 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 8, 2013
From: GARG, VAKUL; SETHI, VARUN
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 029947/0487 →