IP Library Granted Patent US 9,195,621
Granted Patent B2
US 9,195,621 · App. 13/838,133 · Granted Nov 24, 2015

System and method for assigning memory access transfers between communication channels

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,195,621
App. No.
13/838,133
Granted
Nov 24, 2015
Kind
B2
Abstract

A communication channel controller includes a queue, a memory map, and a scheduler. The queue to store a first memory transfer request received at the communication channel controller. The memory map stores information to identify a memory address range to be associated with a memory. The scheduler to compare a source address of the first memory transfer in the queue to the memory address range in the memory map to determine whether the source address of the first memory transfer request targets the memory, and in response allocate the first memory transfer request to a first communication channel of a plurality of communication channels in response to the first communication channel having all of its outstanding memory transactions to a common source address bank and source address page as a source address bank and a source address page of the first memory transfer request.

Claims (51)

1. A method comprising:

receiving a first memory transfer request at a communication channel controller;

comparing a source address bank and a source address page of the first memory transfer request to source address banks and source address pages of outstanding memory transactions on a first communication channel;

allocating the first memory transfer request to the first communication channel of a plurality of communication channels in response to determining that the first communication channel has all of its outstanding memory transactions to a common source address bank and source address page as the source address bank and the source address page of the first memory transfer request;

receiving a second memory transfer request at the communication channel controller; and

comparing a source address bank and a source address page of the second memory transfer request to source address banks and source address pages of the outstanding memory transactions on the second communication channel;

allocating the second memory transfer request to a second communication channel of the plurality of communication channels in response to determining that the second communication channel having no outstanding memory transactions with a source address bank that is the same as the source address bank of the second memory transfer request but a source address page that is different than the source address page of the second memory transfer request.

2. The method of claim 1 further comprising:

receiving a third memory transfer request at the communication channel controller; and

allocating the third memory transfer request to a third communication channel of the plurality of communication channels in response to the third communication channel having an outstanding transaction that is page colliding with the third memory transfer and also has more cycles to elapse prior to the third memory transfer request being assigned to the third communication channel than any other communication channel of the plurality of communication channels.

3. The method of claim 2 wherein the outstanding transaction that is page colliding with the third memory transfer comprises a source address bank that is the same as a source address bank of the third memory transfer but a source address page that is different than the source address page of the third memory transfer.

4. The method of claim 1 further comprising:

determining that the first memory transfer request identifies a double data rate memory as a source of the first memory transfer request prior to said allocating the first memory transfer to the first communication channel.

5. The method of claim 4 wherein an outstanding memory transaction is selected from a group comprising: a second memory transfer request waiting to be sent to the double data rate memory, and an outstanding read response associated with the second memory transfer request sent to the double data rate memory.

6. The method of claim 1 wherein an order of a plurality of memory transfers sent along a communication channel from the communication channel controller is required to be maintained when read responses associated with the plurality of memory transfers are received at the communication channel controller along the communication channel.

7. A communication channel controller comprising:

a plurality of communication channels communicatively coupled to a memory external to the communication channel controller, wherein the memory comprises source address banks and source address pages;

a scheduler, communicatively coupled to the plurality of communication channels, the scheduler configured to

receive a first memory transfer request,

compare a source address bank and a source address page of the first memory transfer request to source address banks and source address pages of outstanding memory transactions on a first communication channel of the plurality of communication channels,

allocate the first memory transfer request to the first communication channel of the plurality of communication channels in response to a determination that the first communication channel has all of its outstanding memory transactions to a common source address bank and source address page as the source address bank and the source address page of the first memory transfer request;

receive a second memory transfer request,

compare a source address bank and a source address page of the second memory transfer request to source address banks and source address pages of the outstanding memory transactions on a second communication channel of the plurality of communication channels, and

allocate the second memory transfer request to the second communication channel of the plurality of communication channels in response to a determination that the second communication channel has no outstanding memory transactions with a source address bank that is the same as the source address bank of the second memory transfer request but a source address page that is different than the source address page of the second memory transfer request.

8. The communication channel controller of claim 7 , wherein the scheduler is further configured to

receive a third memory transfer request, and

allocate the third memory transfer request to a third communication channel of the plurality of communication channels in response to the third communication channel having an outstanding transaction that is page colliding with the third memory transfer and also has more cycles to elapse prior to the third memory transfer request being assigned to the third communication channel than any other communication channel of the plurality of communication channels.

9. The communication channel controller of claim 8 wherein the outstanding transaction that is page colliding with the third memory transfer comprises a source address bank that is the same as a source address bank of the third memory transfer but a source address page that is different than the source address page of the third memory transfer.

10. The communication channel controller of claim 7 wherein an outstanding transaction is selected from a group comprising:

a second memory transfer request waiting to be sent to the memory, and

an outstanding read response associated with the second memory transfer request sent to the memory.

11. The communication channel controller of claim 7 wherein an order of a plurality of memory transfers sent along a communication channel from the communication channel controller is required to be maintained when read responses associated with the plurality of memory transfers are received at the communication channel controller along the communication channel.

12. The communication channel controller of claim 7 wherein the memory comprises a double data rate memory, and the communication channel controller further comprising:

a direct memory access engine, communicatively coupled to the scheduler, the direct memory access engine configured to

send the first memory transfer request to the double data memory via the first communication channel of the plurality of communication channels, and

record the source address bank and page of the first memory transfer request for the first memory transfer request as an outstanding transaction for the first communication channel of the plurality of communication channels.

13. The communication channel controller of claim 7 , wherein an outstanding memory transaction is a transaction selected from a group comprising: a second memory transfer request waiting to be sent to the double data rate memory, and an outstanding read response associated with the third memory transfer request sent to the double data rate memory.

14. The communication channel controller of claim 13 , wherein the outstanding read response associated with the third memory transfer request sent to the double data rate memory.

15. A communication channel controller comprising:

a plurality of communication channels;

a memory to store a queue configured to store a first memory transfer request received at the communication channel controller, and to store a second memory transfer request received at the communication channel controller;

a memory map storing information to identify a memory address range to be associated with a type of memory; and

a scheduler communicatively coupled to the queue, to the memory map, and to the plurality of communication channels, the scheduler configured to compare a source address of the first memory transfer request in the queue to the memory address range in the memory map to determine whether the source address of the first memory transfer request target the type of memory, to compare a source address bank and source address page of the first memory transfer request to source address banks and source address pages of outstanding memory transactions on a first communication channel of the plurality of communication channels, and to allocate the first memory transfer request to the first communication channel of the plurality of communication channels in response to the first communication channel having all of its outstanding memory transactions to a common source address bank and source address page as the source address bank and the source address page of the first memory transfer request, and the scheduler is further configured to compare a source address of the second memory transfer in the queue to the memory address range in the memory map to determine whether the source address of the second memory transfer request targets the memory, to compare a source address bank and source address page of the second memory transfer request to source address banks and source address pages of outstanding memory transactions on a second communication channel of the plurality of communication channels, and to allocate the second memory transfer request to the second communication channel of the plurality of communication channels in response to the second communication channel having no outstanding memory transactions with a source address bank that is the same as the source address bank of the second memory transfer request but the source address page that is different than a source address page of the second memory transfer request.

16. The communication channel controller of claim 15 further comprising:

an address decoder communicatively coupled to the scheduler, the address decoder configured to generate the source address bank and the source address page of the first memory transfer request and provide the source address bank and the source address page of the first memory transfer request to the scheduler.

17. The communication channel controller of claim 15 further comprising:

a prefetcher communicatively coupled to the scheduler, the prefetcher configured to retrieve information and other attributes for the first memory transfer request and provide the information and the other attributes to the scheduler.

18. The communication channel controller of claim 15 further comprising:

a direct memory access engine communicatively coupled to the scheduler, the direct memory access engine configured to send the first memory transfer request to a double data rate memory via the first communication channel of the plurality of communication channels, and record the source address bank and page of the first memory transfer request for the first memory transfer request as an outstanding transaction for the first communication channel of the plurality of communication channels.

19. The communication channel controller of claim 15 , wherein the queue is further configured to store a third memory transfer request, and the scheduler is further configured to compare a source address of the third memory transfer in the queue to the memory address range in the memory map to determine whether the source address of the third memory transfer request targets the memory, and in response allocate the third memory transfer request to a third communication channel of the plurality of communication channels in response to the third communication channel having an outstanding transaction that is page colliding with the third memory transfer and also has more cycles to elapse prior to the third memory transfer request being assigned to the third communication channel than any other communication channel of the plurality of communication channels.

20. The communication channel controller of claim 15 , wherein an outstanding memory transaction is a transaction selected from a group comprising: a third memory transfer request waiting to be sent to a double data rate memory, and an outstanding read response associated with the third memory transfer request sent to the double data rate memory.

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/0744 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037357/0725 →
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 30, 2013
From: XU, KUN; JOKINEN, TOMMI M.; KRAMER, DAVID B.
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 030509/0655 →
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 →