IP Library Granted Patent US 10,367,758
Granted Patent B2
US 10,367,758 · App. 15/702,371 · Granted Jul 30, 2019

Merging read requests in network device architecture

Inventors: Nicolai Asbjorn Smitt (Copenhagen, DK); Jacob Jul Schroder (Lyngby, DK)
Assignee: Marvell World Trade Ltd.
H04L49/201H04L12/18H04L12/1881H04L45/16H04L45/74H04L47/806H04L49/901
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 10,367,758
App. No.
15/702,371
Granted
Jul 30, 2019
Kind
B2
Abstract

Packet data corresponding to a multicast (MC) packet received by a network device is stored in a packet memory. A header of the MC packet is analyzed to determine two or more ports via which the MC packet is to be transmitted. It is determined that two or more pending read requests are to read packet data from a particular memory location in the packet memory. In response to determining that the two or more pending read requests are to read packet data from the particular memory location, the packet data is read a single time from the particular memory location. Respective instances of the packet data read from the particular memory location are provided to respective two or more read client devices for subsequent transmission of the packet data via the two or more ports determined by the packet processor.

Claims (77)

1. A network device, comprising:

a packet memory configured to store packet data corresponding to a multicast (MC) packet received by the network device from a network link;

a packet processor configured to at least to determine two or more ports via which the MC packet is to be transmitted from the network device; and

a memory controller device coupled to the packet memory, the memory controller device configured to

buffer received read requests in a read request buffer until the packet memory is available for servicing the read requests, wherein the read request buffer includes a plurality of entries for storing respective indications of client devices from which read requests were received by the memory controller device,

determine that two or more pending read requests received by the memory controller device are to read packet data from a particular memory location in the packet memory,

in response to the determining, merge the two or more read requests into a single read request that is stored in a single entry of the pending read request buffer,

in response to the determining, read the packet data a single time from the particular memory location, and

provide respective instances of the packet data read from the particular memory location to respective two or more read client devices for subsequent transmission of the packet data via the two or more ports determined by the packet processor.

2. The network device of claim 1 , wherein the memory controller device is further configured to:

service the single read request by reading the packet data a single time from the memory location in the packet memory.

3. The network device of claim 1 , wherein the memory controller device is configured to buffer received read requests in a read request buffer until the packet memory is available for reading packet data from respective memory locations indicated by the respective read requests.

4. The network device of claim 1 , wherein the plurality of entries in the pending read request buffer include i) respective first fields to store a memory location indicated by a read request and ii) respective second fields to store indications of client devices from which read requests to read packet data from the memory location indicated in the corresponding first field were received by the memory controller device.

5. The network device of claim 4 , wherein the memory controller device is configured to:

receive a particular read request of the two or more read requests from a particular read client device of the two or more read client devices,

search the read request buffer to identify an entry in which the first field matches a particular memory location indicated in the particular read request, and

in response to identifying the entry in which the first field matches the particular memory location indicated in the particular read request, update the second field of the entry to include an indication of the particular read client device from which the particular read request was received by the memory controller device.

6. The network device of claim 1 , wherein the memory controller device is configured to:

after reading the packet data from the particular memory location, replicate the packet data to generate two or more instances of the packet data, and

provide respective ones of the two or more instances of the packet data to the respective two or more read client devices.

7. The network device of claim 1 , wherein a read client device of the two or more read client devices is configured to:

generate a transmit packet to include i) packet data received from the memory controller device and ii) a header of the packet, and

transmit the transmit packet via a port coupled to the read client device.

8. The network device of claim 7 , wherein the packet memory comprises two or more memory banks shared among the two or more read client devices, wherein the two or more memory banks are configured to be accessed simultaneously.

9. A network device comprising:

a packet memory configured to store packet data corresponding to a multicast (MC) packet received by the network device from a network link;

a packet processor configured at least to determine two or more ports via which the MC packet is to be transmitted from the network device;

a plurality of read client devices, including a first read client device configured to:

determine that a new read request to be issued to a memory controller device by the first read client device is to read packet data from a same memory location, in the packet memory, for which i) the first read client device already issued a previous read request to the memory controller device and ii) the corresponding packet data has not yet been received from the memory controller device, and

in response to determining that the new read request to be issued to the memory controller device is to read packet data from the same memory location, in the packet memory, for which i) the first read client device already issued the previous read request to the memory controller device and ii) the corresponding packet data has not yet been received from the memory controller device, not issue the new read request to the memory controller device;

wherein the network device further comprises the memory controller device, wherein the memory controller device is coupled to the packet memory and the plurality of read client devices, and wherein the memory controller device is configured to:

determine that two or more pending read requests received by the memory controller device from the plurality of read client devices are to read packet data from a particular memory location in the packet memory,

in response to the determining, read the packet data a single time from the particular memory location, and

provide respective instances of the packet data read from the particular memory location to respective two or more read client devices for subsequent transmission of the packet data via the two or more ports determined by the packet processor.

10. The network device of claim 9 , wherein the read client device is further configured to:

receive the packet data from the memory controller device in response to the previous read request,

replicate the packet data to generate multiple instances of the packet data, and

forward a first instance of the multiple instances to a first port coupled to the read client device, the first port corresponding to the previous read request, and

forward a second instance of the multiple instances to a second port coupled to the read client device, the second port corresponding to the new read request.

11. A method of reading, from a packet memory, data corresponding to multicast packets in a network device, the method comprising:

storing, at a particular memory location in the packet memory, packet data corresponding to a multicast (MC) packet received by the network device from a network link;

analyzing, at a packet processor, information in a header of the MC packet to determine two or more ports via which the MC packet is to be transmitted;

buffering received read requests in a read request buffer until the packet memory is available for servicing the read requests, wherein the read request buffer includes a plurality of entries for storing respective indications of client devices from which read requests were received;

determining, with a memory controller device, that two or more pending read requests are to read packet data from the particular memory location in the packet memory;

in response to the determining that the two or more pending read requests are to read packet data from the particular memory location, merge the two or more read requests into a single read request that is stored in a single entry of the pending read request buffer;

in response to determining that the two or more pending read requests are to read packet data from the particular memory location, reading, with the memory controller device, the packet data a single time from the particular memory location; and

providing, with the memory controller device, respective instances of the packet data read from the particular memory location to respective two or more read client devices for subsequent transmission of the packet data via the two or more ports determined by the packet processor.

12. The method of claim 11 , further comprising:

servicing the single read request by reading the packet data a single time from the memory location in the packet memory.

13. The method of claim 11 , further comprising buffering received read requests in a read request buffer until the packet memory is available for reading packet data from respective memory locations indicated by the respective read requests.

14. The method of claim 11 , wherein the plurality of entries in the read request buffer include i) respective first fields to store a memory location indicated by a read request and ii) respective second fields to store indications of client devices from which read requests to read packet data from the memory location indicated in the corresponding first field were received by the memory controller device.

15. The method of claim 14 , further comprising:

receiving, at the memory controller device, a first read request of the two or more read requests is received from a first read client device,

searching, with the memory controller device, the read request buffer to identify an entry in which the first field matches the particular memory location indicated in the first read request, and

in response to identifying the entry in which the first field matches the particular memory location indicated in the first read request, updating, with the memory controller device, the second field of the entry to include an indication of the first read client device from which the first read request was received by the memory controller device.

16. The method of claim 11 , further comprising:

after reading the packet data from the particular memory location, replicating, with the memory controller device, the packet data to generate two or more instances of the packet data, and

wherein providing the packet data read from the particular memory location to respective two or more read client devices comprises providing respective ones of the two or more instances of the packet data to the respective two or more read client devices.

17. The method of claim 11 , further comprising

generating, at a read client device of the two or more read client device, a transmit packet to include that packet data received by the read client device from the memory controller device, and

transmitting the transmit packet via a port coupled to the read client device.

18. The method of claim 11 , wherein:

the packet memory comprises two or more memory banks shared among the two or more read client devices, and

the method further comprises servicing multiple read requests by simultaneously accessing the two or more read client devices.

19. A method of reading, from a packet memory, data corresponding to multicast packets in a network device comprising:

storing, at a particular memory location in the packet memory, packet data corresponding to a multicast (MC) packet received by the network device from a network link;

analyzing, at a packet processor, information in a header of the MC packet to determine two or more ports via which the MC packet is to be transmitted;

determining, at a first read client device among a plurality of read client devices, that a new read request to be issued by the first read client device to a memory controller device is to read packet data from a particular memory location, in the packet memory, for which i) the first read client device already issued a previous read request to the memory controller device and ii) the corresponding packet data has not yet been received from the memory controller device

in response to determining that the new read request to be issued to the memory controller device is to read packet data from a particular memory location, in the packet memory, for which i) the first read client device already issued the previous read request has been issued to the memory controller device and ii) the corresponding packet data has not yet been received from the memory controller device, not issuing the new read request to the memory controller device;

determining, with the memory controller device, that two or more pending read requests respectively received from two or more client devices among the plurality of client devices are to read packet data from the particular memory location in the packet memory;

in response to determining that the two or more pending read requests are to read packet data from the particular memory location, reading, with the memory controller device, the packet data a single time from the particular memory location; and

providing, with the memory controller device, respective instances of the packet data read from the particular memory location to the respective two or more read client devices for subsequent transmission of the packet data via the two or more ports determined by the packet processor.

20. The method of claim 19 , further comprising:

receiving, at the first read client device, the packet data from the memory controller device in response to the previous read request,

replicating, at the first read client device, the packet data to generate multiple instances of the packet data, and

forwarding a first instance of the multiple instances to a first port coupled to the first read client device, the first port corresponding to the previous read request, and

forwarding a second instance of the multiple instances to a second port coupled to the first read client device, the second port corresponding to the new read request.

Assignments (7)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 16, 2020
From: CAVIUM INTERNATIONAL
To: MARVELL ASIA PTE, LTD.
Reel/Frame 053475/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 20, 2020
From: MARVELL INTERNATIONAL LTD.
To: CAVIUM INTERNATIONAL
Reel/Frame 052918/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 29, 2020
From: MARVELL WORLD TRADE LTD.
To: MARVELL INTERNATIONAL LTD.
Reel/Frame 051778/0537 →
LICENSE Recorded Feb 15, 2019
From: MARVELL WORLD TRADE LTD.
To: MARVELL INTERNATIONAL LTD.
Reel/Frame 048349/0847 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 15, 2019
From: MARVELL TECHNOLOGY DENMARK (MTDK),
To: MARVELL INTERNATIONAL LTD.,
Reel/Frame 048349/0825 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 15, 2019
From: MARVELL INTERNATIONAL LTD.
To: MARVELL WORLD TRADE LTD.
Reel/Frame 048349/0838 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 13, 2019
From: SMITT, NICOLAI ASBJORN; SCHRODER, JACOB JUL
To: MARVELL TECHNOLOGY DENMARK (MTDK)
Reel/Frame 048325/0049 →
Continuity (2)
Provisional Application 62393390 · Sep 12, 2016
Related Publication 20180077059A1 · Mar 15, 2018