Mapped FIFO buffering
US-9008113-B2 · Apr 14, 2015 · US
US9800513B2 · US · B2
| Field | Value |
|---|---|
| Publication number | US-9800513-B2 |
| Application number | US-201514667295-A |
| Country | US |
| Kind code | B2 |
| Filing date | Mar 24, 2015 |
| Priority date | Dec 20, 2010 |
| Publication date | Oct 24, 2017 |
| Grant date | Oct 24, 2017 |
A practical reading order for non-experts. Skip the full description unless you need deep technical detail.
What the patent document calls the invention.
A short plain-language summary of the technical disclosure.
Who owns or filed the patent and who is credited as inventor.
Filing, priority, publication, and grant dates set the timeline.
The legal scope of protection — read this for what is actually claimed.
Technology tags used to group this patent with similar filings.
Prior art links and similar publications in this corpus.
Official abstract text for this publication.
A network interface device for connection between a network and a data processing system, the network interface device comprising: a plurality of ports for receiving data packets directed to the data processing system. An interface services the ports in a predetermined order and writes the data packets to buffers of a common memory. Each buffer is part of one of a set of linked logical sequence of buffers forming virtual queues in the common memory. Each virtual queue is associated with a port. A memory manager selects buffers of the common memory so as to cause the interface to populate the plurality of virtual queues with data packets.
Opening claim text (preview).
The invention claimed is: 1. A network interface device for connection between a network and a data processing system, the network interface device comprising: a common memory configured to buffer data packets; a plurality of ports operable to receive data packets for writing to the common memory; a memory manager configured to store information defining a plurality of virtual queues held in the common memory, wherein the memory manager is configured to associate one or more of the virtual queues with each port such that data packets received at a port are written to the one or more virtual queues associated with that port, wherein a linked logical sequence of buffers in said common memory represents each virtual queue; and an interface configured to: receive from the memory manager an indication of one or more buffers for each linked logical sequence of buffers representing a virtual queue; and service the ports and write data packets received at a respective port into the indicated one or more buffers of the linked logical sequence of buffers representing a virtual queue associated with that port. 2. A network interface device as claimed in claim 1 , wherein the memory manager is configured to define for at least some of the ports a plurality of virtual queues, two or more of the plurality of virtual queues having different priority levels. 3. A network interface device as claimed in claim 2 , wherein the interface is configured to, on receiving at a port a data packet that includes a priority identifier, assign the data packet to a virtual queue associated with that port and having a priority level corresponding to the priority identifier. 4. A network interface device as claimed in claim 3 , wherein the memory manager supports a priority lookup table defining correspondences between possible priority identifiers of data packets received at the ports and the priority levels of the virtual queues, and the interface is configured to, on receiving at a port a data packet that includes a priority identifier, cause the priority lookup table to be accessed so as to identify a virtual queue having the corresponding priority level for that data packet. 5. A network interface device as claimed in claim 4 , wherein the priority identifiers are one of: Class of Service identifiers in accordance with the IEEE 802.1Qbb flow control standard; a Quality of Service parameter; and an identifier of a network endpoint having an associated priority level, wherein, for each port, the lookup table defines a one-to-one correspondence between the priority levels of the virtual queues and the Classes of Service supported by the data flows over the port, with each priority level having a respective virtual queue. 6. A network interface device as claimed in claim 3 , further comprising a management controller configured to perform flow control and/or congestion avoidance mechanisms on a flow of data packets received at a port of the network interface device in dependence on the number of buffers in a virtual queue associated with that port and having a priority level corresponding to the priority identifiers of the data packets of the flow. 7. A network interface device as claimed in claim 1 , further comprising a third subset of the plurality of ports configured to receive data packets from a management controller. 8. A network interface device as claimed in claim 1 , further comprising: an I/O interface for connection to the data processing system; and a set of physical data ports for connection to the network, wherein a first subset of the plurality of ports are configured to receive data packets on a transmit path from said I/O interface, and a second subset of the plurality of ports being configured to receive data packets on a receive path from said set of physical data ports, the network interface device further comprising: at least one transmit engine configured to provide data packets to the first subset of ports and to one or more of the set of physical data ports of the network interface device, each transmit engine being operable to receive data over the I/O interface of the network interface device by means of a DMA transfer, wherein the interface is configured to not write to the virtual queues held in the common memory those data packets received at the first subset of ports that are directed only to network endpoints accessible over the physical data ports of the network interface device. 9. A network interface device as claimed in claim 8 , wherein the interface is configured to write to the virtual queues held in the common memory only those data packets received at the first subset of ports that are directed to network endpoints accessible over the I/O interface of the network interface device. 10. A network interface device as claimed in claim 1 , further comprising: a set of physical data ports for connection to the network; and a set of burst buffers arranged to buffer data packets received from the physical data ports of the network interface device. 11. A network interface device as claimed in claim 1 , further comprising an egress interface configured to service the virtual queues in sequence according to a specified service order maintained in dependence on one or both of: the number of buffers in each of the virtual queues, and a priority level of each of the virtual queues. 12. A network interface device as claimed in claim 11 , wherein the egress interface is configured to promote to the head of the sequence specified in the service order those virtual queues that include buffers from their respective private buffer pool, such virtual queues having a first egress priority. 13. A network interface device as claimed in claim 12 , wherein the egress interface is configured to promote to the head of the sequence specified in the service order those virtual queues whose length exceeds a predetermined number of buffers but that do not include buffers from their respective private pools, such virtual queues having a second egress priority. 14. A network interface device as claimed in claim 13 , wherein the egress interface is configured to maintain a timer for each virtual queue, each timer indicating the length of time elapsed since the egress interface last serviced the respective virtual queue, and the egress interface is further configured to promote to the head of the sequence specified in the service order those virtual queues whose timer exceeds a predetermined timeout value, such virtual queues having a third egress priority. 15. A network interface device as claimed in claim 14 , wherein, if more than one virtual queue is to be promoted to the head of the sequence specified in the service order, the virtual queues so promoted are serviced in accordance with their respective priorities, with virtual queues having a first priority being serviced before virtual queues having a second priority and virtual queues having a second priority being serviced before virtual queues having a third priority, wherein the egress interface is operable to promote a virtual queue so as to comply with a quality of service scheme in operation over data flows of the respective port. 16. A network interface device as claimed in claim 11 , wherein the egress interface is configured to, on emptying a buffer, cause the memory manager to release that buffer from the respective virtual queue. 17. A network interface device as claimed in claim 11 , wherein the egress interface is configured to provide de-queued data packets to one or more receive engines of the network interface device oper
for dedicated transfers to a network (for protocol converters G06F13/387) · CPC title
based on priority · CPC title
Input queuing · CPC title
Virtual queuing · CPC title
Related publications grouped by family.
Answers are generated from the same data shown on this page.