The disclosed embodiments of the present invention relate to accessing (reading/writing) packets in a packet buffer, and more particularly, to a multi-port memory controller capable of serving multiple access requests by accessing different memory banks of a multi-bank packet buffer and associated packet storage design.
A network switch is a computer networking device that links different electronic devices. For example, the network switch receives an incoming packet generated from a source electronic device connected to it, and transmits an outgoing packet derived from the received packet to one or more destination electronic devices for which the received packet is meant to be received. In general, the network switch has a packet buffer for buffering packet data of packets received from ingress ports, and forwards the packets stored in the packet buffer through egress ports.
To enhance the storage efficiency of the packet buffer, a packet maybe split into multiple cells, and each cell of the packet is stored into a free cell space found in the packet buffer. To manage packet data stored in the packet buffer, a linked list may be created to link packet cells stored in the packet buffer. For example, one node of the linked list may be associated with a location of a current packet cell and may further indicate a location of a next packet cell. With regard to a high-speed network switch, the transmission clock frequency and/or the data width per transmission clock cycle may be increased. Hence, there is a challenge for the packet buffer design and associated linked list design that are capable of satisfying the high throughput requirement of the high-speed network switch.
In accordance with exemplary embodiments of the present invention, a multi-port memory controller capable of serving multiple access requests by accessing different memory banks of a multi-bank packet buffer and associated packet storage design are proposed.
According to a first aspect of the present invention, an exemplary packet buffer for storing packet data of packets received by a master device is disclosed. The exemplary packet buffer includes a non-guaranteed buffer, a guaranteed buffer, and a reserved buffer. The non-guaranteed buffer is visible to the master device, and is not guaranteed to provide one free cell space for one cell in a first-type packet before the non-guaranteed buffer is full. The guaranteed buffer is visible to the master device, and is guaranteed to provide one free cell space for one cell in a second-type packet before the guaranteed buffer is full. The reserved buffer is invisible to the master device, and is arranged to provide headroom for the guaranteed buffer.
According to a second aspect of the present invention, an exemplary storage system for storing information associated with at least one packet is disclosed. The exemplary storage system includes a packet buffer and a linked list buffer. The packet buffer has a plurality of cell spaces, wherein each packet is split into at least one cell, each cell is stored into one cell space, one cell group is transmitted in one transmission clock cycle, and said one cell group comprises multiple cells belonging to the at least one packet. The linked list buffer is arranged to store a linked list associated with packet data of the at least one packet stored in the packet buffer.
According to a third aspect of the present invention, an exemplary multi-port memory controller is disclosed. The exemplary multi-port memory controller includes a write address generation circuit and a physical to bank mapping circuit. The write address generation circuit is arranged to receive a logical write request of a cell in a packet from a master device and generate at least one write address in response to at least the logical write request. The multi-port memory controller is capable of serving multiple access requests by accessing different memory banks of the multi-bank packet buffer. The write address generation circuit controls selection of the at least one write address according to at least one selection rule. The physical to bank mapping circuit is arranged to map at least one physical write address selected by the write address generation circuit to at least one bank of the multi-bank packet buffer.
These and other objectives of the present invention will no doubt become obvious to those of ordinary skill in the art after reading the following detailed description of the preferred embodiment that is illustrated in the various figures and drawings.
Certain terms are used throughout the description and following claims to refer to particular components. As one skilled in the art will appreciate, manufacturers may refer to a component by different names. This document does not intend to distinguish between components that differ in name but not function. In the following description and in the claims, the terms “include” and “comprise” are used in an open-ended fashion, and thus should be interpreted to mean “include, but not limited to . . . ”. Also, the term “couple” is intended to mean either an indirect or direct electrical connection. Accordingly, if one device is coupled to another device, that connection may be through a direct electrical connection, or through an indirect electrical connection via other devices and connections.
Free storage spaces in the packet buffer 110 may be distributed at discontinuous memory locations. Hence, when the network switch 100 receives a packet from an ingress port, the network switch 100 may split the packet into cells and store the cells into discontinuous memory locations of the packet buffer 110. To relax the memory requirement of the output queue, a linked list may be employed to serve as one output queue. Hence, the memory controller 108 manages the linked list buffer 112 in response to packet enqueue commands and packet dequeue commands issued from the QM circuit 104. The linked list buffer 112 is arranged to store a plurality of linked lists LL1-LLN serving as output queues associated with the egress ports POUT_1-POUT_N, respectively.
For example, packets received from the ingress ports PIN_1-PIN_N and judged to be forwarded to the same egress port POUT_M (1≦M≦N) are enqueued into an output queue implemented by a linked list LLM created and stored in the linked list buffer 112, where the linked list LLM employs a linked list structure to link cells of packets to be forwarded to the same egress port POUT_M. The QM circuit 104 schedules the output queues, and dequeues at least one packet from a selected output queue. Hence, the QM circuit 104 reads the at least one dequeued packet from the packet buffer 110 and outputs the at least one dequeued packet to the egress packet processing circuit 106, and an associated linked list in the linked list buffer 112 is updated correspondingly. The egress packet processing circuit 106 processes the at least one dequeued packet to generate at least one egress packet, and forwards the at least one egress packet to an egress port associated with the selected output queue. Since a person skilled in the art can readily understand the principle of the ingress packet processing circuit 102 and the egress packet processing circuit 106, further description is omitted here for brevity.
In this embodiment, the network switch 100 is a high-speed network switch. To satisfy the high throughput requirement, the packet buffer 110 may be configured to support a multi-port read/write access. However, using a real large-sized multi-port SRAM to realize the packet buffer 110 with multiple ports results in a high production cost, and needs a long schedule for circuit design and silicon verification. In addition, if the multi-port packet buffer is implemented using multiple memories, there may be dummy bank penalty. The present invention therefore proposes implementing the packet buffer 110 by using one memory (e.g., SRAM) with multiple memory banks and using the memory controller (e.g., multi-port memory controller) 108 for serving multiple access requests (i.e., multiple read/write requests) by accessing different memory banks of the multi-bank packet buffer.
As shown in
However, in another case where at least two of the multiple access requests are directed to a same memory bank 114, bank confliction happens due to the face that one memory bank 114 can only serve one access request at a time. If the packet is a first-type packet (e.g., a lossy packet) and bank confliction occurs, the first-type packet (or cells of the first-type packet) maybe dropped.
However, if the packet is a second-type packet (e.g., a lossless packet, a control packet, and/or a packet needed to be stored in a reserved area of a guaranteed pool) and bank confliction occurs, the second-type packet (or cells of the second-type packet) cannot be dropped. That is, the second-type packet data is not allowed to be dropped after write admission is granted. Hence, a protection mechanism (e.g., “headroom”) is needed in the packet buffer 110 to protect the second-type packet data from being dropped due to bank conflict.
The guaranteed buffer 304 is visible to the master device (e.g., QM circuit 104) that outputs the received second-type packets to the packet buffer 110. The guaranteed buffer 304 is guaranteed to provide one free cell space for one cell in a second-type packet before the guaranteed buffer 304 is full. For example, if the write admission of the guaranteed buffer 304 is granted before the guaranteed buffer 304 is full, no second-type packet data drop is allowed. For example, no second-type packet data drop is allowed when bank conflict happens under the condition that the write admission of the guaranteed buffer 304 is granted and the guaranteed buffer 304 is not full. Hence, a protection mechanism (e.g., “headroom”) is needed to protect the second-type packet data from being dropped due to bank conflict. In this embodiment, the reserved buffer 306 is invisible to the master device (e.g., QM circuit 104) that outputs the received second-type packets to the packet buffer 110, and is arranged to provide the needed headroom for the guaranteed buffer 304. For example, the reserved buffer 306 protects the guaranteed buffer 304 by storing one cell in the second-type packet when the cell is to be stored into one memory bank 114 with bank conflict. In other words, one free cell space in another memory bank 114 with no bank conflict is a part of the reserved buffer 306, and can be used to store the cell in the second-type packet to thereby avoid packet data drop.
In one embodiment, a flag recorded in a header of a packet can be checked to classify the packet into the first-type packet or the second-type packet. That is, when a packet has a flag D set by a first value (e.g., D=0), the packet may be classified as the first-type packet to be written into the non-guaranteed buffer 302; and when the packet has the flag D set by a second value (e.g. , D=1), the packet may be classified as the second-type packet to be written into the guaranteed buffer 304. For example, the flag D may be a packet type flag, such as a lossless packet flag (which indicates if the packet is a lossless packet) or a control packet flag (which indicates if the packet is a control packet). For another example, the flag D may be a buffer reservation flag, such as a minimum reserved area flag that indicates if the packet is to be stored into a reserved area of the guaranteed buffer 304. For yet another example, the flag D maybe any packet information flag. The operation of writing a packet into one of the non-guaranteed buffer 302 and the guaranteed buffer 304 may be represented by the following pseudo code.
As shown in
The throughput of the network switch 100 may depend on the transmission clock frequency and/or the data width per transmission clock cycle. As mentioned above, a packet can be split into multiple cells, and each cell of the packet is stored into a free cell space in the packet buffer 110. If the data width per transmission clock cycle is equal to the packet cell size (i.e., one packet cell is transmitted per transmission clock cycle), the throughput of the network switch 100 may be improved by increasing the packet cell size. However, the actual packet length may vary from 64 bytes to one maximum transmission unit (MTU) such as 9K bytes. Each cell space allocated in the packet buffer is used to buffer one packet cell with the packet cell size. If the packet cell size is set by a large value, the packet buffer may have lower packet data storing efficiency for short packets. For example, if the packet is a 64-byte packet and the packet cell size is much larger than 64 bytes, only one cell space is used to store the packet, and a large portion of the cell space with the packet stored therein is empty. With regard to transmission of short packets, the transmission efficiency of the network switch 100 may be degraded due to a large packet cell size used. The present invention further proposes splitting a packet into smaller cells and transmitting multiple small cells in one transmission clock cycle.
For example, one large cell (logical cell) may be further split into small cells (physical cells) that may be stored in discontinuous cell spaces in the packet buffer 110. In the following, the terms “large cell” and “logical cell” may be interchangeable, and the terms “small cell” and “physical cell” may be interchangeable. With regard to a long packet, multiple small cells may be stored into free small-sized cell spaces allocated in the packet buffer. With regard to a short packet, only one small cell may be stored into one free small-sized cell space allocated in the packet buffer. To put it simply, using a smaller packet cell size can improve the packet data storing efficiency as well as the transmission efficiency.
As mentioned above, a linked list is employed to serve as one output queue, and the memory controller 108 manages the linked list buffer 112 in response to packet enqueue commands and packet dequeue commands issued from the QM circuit 104. Specifically, when receiving a packet enqueue command issued from the QM circuit 104, the memory controller 108 enqueues a packet into one of the output queues (which are implemented using linked lists LL1-LLN). In other words, a linked list associated with the enqueued packet is updated in the linked list buffer 112. Since the packet is split into small cells and the small cells may be stored into discontinuous free cell spaces found in the packet buffer 110, the present invention further proposes a linked list structure for small cells of the same packet.
As shown in
A packet can be split into cells and then stored into the packet buffer 110. However, the master devices (e.g., QM circuit 104) outside the memory controller 108 may not need to use so many cells. For example, the QM circuit 104 may only need to manage enqueue and dequeue of packets by using first cell address of each packet, packet identification (ID) of each packet, etc., and may not need to know how the packet cells are exactly linked. In this way, the production cost and design complexity of the QM circuit 104 can be reduced. Therefore, the present invention further proposes a linked list structure for different packets each being split into small cells.
In this embodiment, the packet identification (ID) of the first packet PKT0 is set by the physical cell address of the small cell P0C00 stored in the packet buffer 110, the packet ID of the second packet PKT1 is set by the physical cell address of the small cell P1C00 stored in the packet buffer 110; the packet ID of the third packet PKT2 is set by the physical cell address of the small cell P2C00 stored in the packet buffer 110, and the packet ID of the fourth packet PKT3 is set by the physical cell address of the small cell P3C00 stored in the packet buffer 110. A linked list associated with the packets PKT0-PKT3 records that the packet ID of the first packet PKT0 is linked to the packet ID of the second packet PKT1, the packet ID of the second packet PKT1 is linked to the packet ID of the third packet PKT2, and the packet ID of the third packet PKT2 is linked to the packet ID of the fourth packet PKT3.
Concerning the first packet PKT0, the linked list also records that the physical cell address of the small cell P0C00 (which belongs to the first logical cell) is linked to the physical cell address of the small cell P0C10 (which belongs to the second logical cell), the physical cell address of the small cell P0C10 (which belongs to the second logical cell) is linked to the physical cell address of the small cell P0C20 (which belongs to the third logical cell), and the physical cell address of the small cell P0C20 (which belongs to the third logical cell) is linked to the physical cell address of the small cell P0C30 (which belongs to the fourth logical cell).
Concerning the third packet PKT2, the linked list also records that the physical cell address of the small cell P2C00 (which belongs to the first logical cell) is linked to the physical cell address of the small cell P2C10 (which belongs to the second logical cell). Concerning the fourth packet PKT3, the linked list also records that the physical cell address of the small cell P3C00 (which belongs to the first logical cell) is linked to the physical cell address of the small cell P3C10 (which belongs to the second logical cell), and the physical cell address of the small cell P3C10 (which belongs to the second logical cell) is linked to the physical cell address of the small cell P3C20 (which belongs to the third logical cell).
For example, when a packet dequeue operation is performed, the master device (e.g., QM circuit 104) may output a packet ID of the first packet PKT0 to be dequeued to the memory controller 108. The memory controller 108 refers to the packet ID of the first packet PKT0 to find a starting linked list node stored at a physical cell address in the linked list buffer 112, where the physical address of the linked list node stored in the linked list buffer 112 may be identical to the physical cell address of the small cell P0C00 stored in the packet buffer. Further, based on a linked list structure of small cells of the same first packet PKT0, the memory controller 108 can read packet data of the dequeued first packet PKT0 from the packet buffer 110. Next, the memory controller 108 refers to a link information stored in the linked list node to find a next linked list node at a physical cell address in the linked list buffer 112, where the next linked list node is associated with the next packet PKT1, and the physical address of the next linked list node stored in the linked list buffer 112 may be identical to the physical cell address of the small cell P1C00 stored in the packet buffer 110. Similarly, based on a linked list structure of the small cell of the same second packet PKT1, the memory controller 108 can read packet data of the dequeued second packet PKT1 from the packet buffer 110. To put it simply, packets PKT0-PKT3 can be successively dequeued and output to an egress port by traversing through the linked list shown in
Concerning the first packet PKT0, the linked list also records that the physical cell address of the small cell P0C00 (which belongs to the first logical cell) is linked to the physical cell address of the small cell P0C10 (which belongs to the second logical cell), the physical cell address of the small cell P0C10 (which belongs to the second logical cell) is linked to the physical cell address of the small cell P0C20 (which belongs to the third logical cell), and the physical cell address of the small cell P0C20 (which belongs to the third logical cell) is linked to the physical cell address of the small cell P0C30 (which belongs to the fourth logical cell). Concerning the third packet PKT2, the linked list also records that the physical cell address of the small cell P2C00 (which belongs to the first logical cell) is linked to the physical cell address of the small cell P2C10 (which belongs to the second logical cell). Concerning the fourth packet PKT3, the linked list also records that the physical cell address of the small cell P3C00 (which belongs to the first logical cell) is linked to the physical cell address of the small cell P3C10 (which belongs to the second logical cell), and the physical cell address of the small cell P3C10 (which belongs to the second logical cell) is linked to the physical cell address of the small cell P3C20 (which belongs to the third logical cell).
For example, when a packet dequeue operation is performed, the master device (e.g., QM circuit 104) may output a packet ID of the first packet PKT0 to the memory controller 108. The memory controller 108 refers to the packet ID of the first packet PKT0 to find a starting linked list node stored at a physical cell address in the linked list buffer 112, where the physical address of the linked list node is identical to the logical cell address as indicated by the packet ID of the first packet PKT0. The memory controller 108 may refer to the mapping information in the linked list node to determine the physical cell address of the small cell P0C00 stored in the packet buffer. Further, based on a linked list structure of small cells of the same first packet PKT0, the memory controller 108 can read packet data of the dequeued first packet PKT0 from the packet buffer 110. Next, the memory controller 108 refers to a link information stored in the linked list node to find a next linked list node at a physical cell address in the linked list buffer 112, where the next linked list node is associated with the next packet PKT1, and the physical address of the next linked list node is identical to the logical cell address set to the packet ID of the second packet PKT1. Similarly, the memory controller 108 may refer to the mapping information in the next linked list node to determine the physical cell address of the small cell P1C00 stored in the packet buffer 100. Further, based on a linked list structure of the small cell of the same second packet PKT1, the memory controller 108 can read packet data of the dequeued second packet PKT1 from the packet buffer 110. To put it simply, packets PKT0-PKT3 can be successively dequeued and output to an egress port by traversing through the linked list shown in
In this embodiment, the linked list associated with the packets PKT0-PKT3 further records that the logical cell address P0CO is mapped to physical cell addresses of all small cells P0C00-P0C02 that belong to the same logical cell and are stored in the packet buffer 110, the logical cell address P0C1 is mapped to physical cell addresses of all small cells P0C10-P0C12 that belong to the same logical cell and are stored in the packet buffer 110, the logical cell address P0C2 is mapped to physical cell addresses of all small cells P0C20-P0C22 that belong to the same logical cell and are stored in the packet buffer 110, the logical cell address P0C3 is mapped to physical cell addresses of all small cells P0C30-P0C32 that belong to the same logical cell and are stored in the packet buffer 110, the logical cell address P1C0 is mapped to the physical cell address of the small cell P1C00 that belongs to one logical cell and is stored in the packet buffer 110, the logical cell address P2C0 is mapped to physical cell addresses of all small cells P2C00-P2C02 that belong to the same logical cell and are stored in the packet buffer 110, the logical cell address P2C1 is mapped to physical cell addresses of all small cells P2C10-P2C11 that belong to the same logical cell and are stored in the packet buffer 110, the logical cell address P3C0 is mapped to physical cell addresses of all small cells P3C00-P3C02 that belong to the same logical cell and are stored in the packet buffer 110, the logical cell address P3C1 is mapped to physical cell addresses of all small cells P3C10-P3C12 that belong to the same logical cell and are stored in the packet buffer 110, and the logical cell address P3C2 is mapped to the physical cell address of the small cell P3C20 that belongs to one logical cell and is stored in the packet buffer 110.
For example, when a packet dequeue operation is performed, the master device (e.g., QM circuit 104) may output a packet ID of the first packet PKT0 to the memory controller 108. The memory controller 108 refers to the packet ID of the first packet PKT0 to find a starting linked list node stored at a physical cell address in the linked list buffer 112, where the physical address of the linked list node is identical to the logical cell address as indicated by the packet ID of the first packet PKT0. The memory controller 108 may refer to the link information in the linked list node to find a next linked list node at a physical address in the linked list buffer 112, where the next linked list node is associated with the next logical cell P0C1, and the physical address of the next linked list node is identical to the logical cell address P0C1. Similarly, the next linked list nodes associated with the remaining logical cells of the first packet PKT0 can be found. The memory controller 108 may refer to mapping information in the linked list nodes associated with the first packet PKT0 to determine the physical cell addresses of small cells P0C00-P0C02, P0C10-P0C12, P0C20-P0C22, P0C30-P0C32 stored in the packet buffer 110. Next, the memory controller 108 refers to a link information stored in the linked list node found using the logical cell address P0CO to find a next linked list node at a physical cell address in the linked list buffer 112, where the next linked list node is associated with the next packet PKT1, and the physical address of the next linked list node is identical to the logical cell address P1C0 set to the packet ID of the second packet PKT1. Similarly, the memory controller 108 may refer to the mapping information in the next linked list node to determine the physical cell address of the small cell P1C00 stored in the packet buffer 100. To put it simply, packets PKT0-PKT3 can be successively dequeued and output to an egress port by traversing through the linked list shown in
In this embodiment, the linked list associated with the packets PKT0-PKT3 further records that the logical cell address P0C0 is mapped to physical cell addresses of all small cells P0C00-P0C02 that belong to the same logical cell and are stored in the packet buffer 110, the logical cell address P0C1 is mapped to physical cell addresses of all small cells P0C10-P0C12 that belong to the same logical cell and are stored in the packet buffer 110, the logical cell address P0C2 is mapped to physical cell addresses of all small cells P0C20-P0C22 that belong to the same logical cell and are stored in the packet buffer 110, the logical cell address P0C3 is mapped to physical cell addresses of all small cells P0C30-P0C32 that belong to the same logical cell and are stored in the packet buffer 110, the logical cell address P1C0 is mapped to the physical cell address of the small cell P1C00 that belongs to one logical cell and is stored in the packet buffer 110, the logical cell address P2C0 is mapped to physical cell addresses of all small cells P2C00-P2C02 that belong to the same logical cell and are stored in the packet buffer 110, the logical cell address P2C1 is mapped to physical cell addresses of all small cells P2C10-P2C11 that belong to the same logical cell and are stored in the packet buffer 110, the logical cell address P3C0 is mapped to physical cell addresses of all small cells P3C00-P3C02 that belong to the same logical cell and are stored in the packet buffer 110, the logical cell address P3C1 is mapped to physical cell addresses of all small cells P3C10-P3C12 that belong to the same logical cell and are stored in the packet buffer 110, and the logical cell address P3C2 is mapped to the physical cell address of the small cell P3C20 that belongs to one logical cell and is stored in the packet buffer 110.
For example, when a packet dequeue operation is performed, the master device (e.g., QM circuit 104) may output a packet ID of the first packet PKT0 to the memory controller 108. The memory controller 108 refers to the packet ID of the first packet PKT0 to find a starting linked list node stored at a physical address in the linked list buffer 112, where the physical address of the linked list node is identical to the logical packet address as indicated by the packet ID of the first packet PKT0. The memory controller 108 may refer to the mapping information in the linked list node stored at the logical packet address PO to find a next linked list node stored at the logical cell address P0C0. Similarly, the linked list nodes associated with the remaining logical cells of the first packet PKT0 can be found by traversing through the linked list. The memory controller 108 may refer to mapping information in the linked list nodes associated with the first packet PKT0 to determine the physical cell addresses of small cells P0C00-P0C02, P0C10-P0C12, P0C20-P0C22, P0C30-P0C32 stored in the packet buffer 110.
Next, the memory controller 108 refers to a link information stored in the linked list node stored at the logical packet address P0 to find a next linked list node stored at the logical packet address P1, where the next linked list node is associated with the next packet PKT1. Similarly, the memory controller 108 may refer to the mapping information in the linked list node stored at the logical cell address P1 to find the next linked list node stored at the logical packet address P1C0, and refers to the mapping information in the next linked list node stored at the logical cell address P1C0 to determine the physical cell address of the small cell P1C00 stored in the packet buffer 100. To put it simply, packets PKT0-PKT3 can be successively dequeued and output to an egress port by traversing through the linked list shown in
As shown in
As shown in
To reduce the occurrence probability of bank conflict (i.e., a condition where a memory bank is unable to serve all access requests in one clock cycle due to that the number of access requests for concurrently accessing the same memory bank exceeds the number of channels supported by the memory bank), the write address is not set by the master device (e.g., QM circuit 104), and is controlled/selected by the memory controller 108. When a logical write port receives a logical write request and a logical write datain signal issued from the master device (e.g., QM circuit 104), the memory controller 108 selects a target memory bank from the memory banks, determines a write address for storing the write data into the target memory bank, selects one available channel of the target memory bank to serve as a write channel, generates a write request signal, a write address signal and a write datain signal to the target memory bank via the selected write channel, and outputs the write address signal to inform the master device (e.g., QM circuit 104) of the selected write address. If the logical write rule signal is issued from the master device (e.g., QM circuit 104) and received by the logical write port, the write address selection performed by the memory controller 108 is further constrained by the write rule. If the memory controller 108 judges that bank conflict happens or bank conflict is about to happen, the memory controller 108 generates the logical write response signal to inform the master device (e.g., QM circuit 104). Further details of the memory controller 108 are described as below.
When storing write data into the packet buffer 110, the address selection circuit 1306 receives a logical write request of a packet from a master device (e.g., QM circuit 104), and generates at least one physical write address for at least one cell (e.g., large cell(s) or small cell(s)) of the packet in response to at least the logical write request, and the physical to bank mapping circuit 1304 maps the at least one physical write address to at least one memory bank 114 of the packet buffer 110. In this embodiment, the address selection circuit 1306 of the write address generation circuit 1302 controls selection of the at least one physical write address according to at least one selection rule. For example, in accordance with the at least one selection rule, cells of the same packet are written into different memory banks per clock cycle, the access of each memory bank does not exceed the maximum throughput of the memory bank (i.e., the number of concurrent memory accesses (read operations and/or write operations) of one memory bank should not be larger than the number of channels supported by the memory bank), free cell spaces are used, good cell spaces that pass the test are used, and/or cell usage balance of memory banks is achieved by bank selection. When the logical write rule is also issued from the master device (e.g., QM circuit 104), the at least one selection rule used by the address selection circuit 1306 includes the received logical write rule for controlling selection of the at least one physical write address.
The logical write rule may select pre-defined cell spaces. For example, in accordance with the logical write rule received by the address selection circuit 1306, cells of the same packet are written into different address locations, a cell with an SOP (start of packet)/EOP (end of packet) flag or an ENQ (enqueue) flag is stored at a corresponding pre-defined address location, a cell with a lossless flag or a lossy flag is stored at a corresponding pre-defined address location, a packet with a particular packet type (e.g., a packet with a guaranteed flag) is forced to be stored into a guaranteed buffer, a packet with another particular packet type (e.g., a packet with a non-guaranteed flag) is forced to be stored into a non-guaranteed buffer, the guaranteed buffer has a minimum guaranteed storage space for each ingress port, the accounting information of cells received from an ingress port and stored in the guaranteed buffer is checked, and/or information related to a packet or a cell is checked.
In addition, the address selection circuit 1306 further generates a logical write response to the master device (e.g., QM circuit 104). For a lossy packet write operation, the logical write response may indicate that the logical write request has been dropped due to bank conflict of the multi-bank packet buffer. For a lossless packet write operation, the logical write response may indicate that bank conflict of the multi-bank packet buffer is about to happen in the multi-bank packet buffer. Hence, when being notified by the logical write response, the master device (e.g., QM circuit 104) may reduce its packet data output throughput to avoid the packet data drop.
When storing write data into the packet buffer 110, the address selection circuit 1406 receives a logical write request of a packet from a master device (e.g., QM circuit 104), and generates at least one physical write address and at least one logical write address for at least one cell (e.g., large cell(s) or small cell(s)) of the packet in response to at least the logical write request, and the cell mapping circuit 1404 records the mapping between the at least one logical write address and the at least one physical write address selected by the address selection circuit 1406. Next, the physical to bank mapping circuit 1304 maps the at least one physical write address to at least one memory bank 114 of the packet buffer 110.
The physical write address selection performed by the address selection circuit 1406 is identical to that performed by the aforementioned address selection circuit 1306. In other words, concerning the physical write address selection, the same selection rules employed by the address selection circuit 1306 may also be employed by the address selection circuit 1406. Further description is omitted here for brevity.
With regard to the logical write address selection performed by the address selection circuit 1406, the selection rules are similar to that used for physical write address selection. For example, in addition to a free physical cell pool, a free logical cell pool is also available to the address selection circuit 1406 after initialization. Hence, the logical write address selection is performed for selecting logical write addresses associated with logical cells in the free logical cell pool. In this embodiment, the address selection circuit 1406 controls selection of the at least one logical write address according to at least one selection rule. For example, the at least one selection rule may specify that free logical cells should be used. When the logical write rule is also issued from the master device (e.g., QM circuit 104), the at least one selection rule used by the address selection circuit 1406 includes the received logical write rule for controlling selection of the at least one logical write address. The logical write rule may select pre-defined logical cells.
For example, in accordance with the logical write rule, cells of the same packet are written into different address locations, a cell with an SOP (start of packet)/EOP (end of packet) flag or an ENQ (enqueue) flag is stored at a corresponding pre-defined address location, a cell with a lossless flag or a lossy flag is stored at a corresponding pre-defined address location, a packet with a particular packet type (e.g., a packet with a guaranteed flag) is forced to be stored into a guaranteed buffer, a packet with another particular packet type (e.g., a packet with a non-guaranteed flag) is forced to be stored into a non-guaranteed buffer, the guaranteed buffer has a minimum guaranteed storage space for each ingress port, the accounting information of cells received from an ingress port and stored in a guaranteed buffer is checked, and/or information related to a packet or a cell is checked.
Similarly, the address selection circuit 1406 further generates a logical write response to the master device (e.g., QM circuit 104). For a lossy packet write operation, the logical write response may indicate that the logical write request has been dropped due to bank conflict of the multi-bank packet buffer. For a lossless packet write operation, the logical write response may indicate that bank conflict of the multi-bank packet buffer is about to happen in the multi-bank packet buffer. Hence, when being notified by the logical write response, the master device (e.g., QM circuit 104) may reduce its packet data output throughput to avoid the packet data drop.
The write address generation circuit 1502 includes a cell mapping circuit 1504 and an address selection circuit 1506. When storing write data into the packet buffer 110, the address selection circuit 1506 receives a logical write request of a packet from a master device (e.g., QM circuit 104), and generates at least one physical write address for at least one physical cell (e.g., small cell(s)) of the packet and at least one logical write address for at least one logical cell (e.g., large cell(s)) of the packet in response to at least the logical write request, and the cell mapping circuit 1504 records the mapping between the at least one logical write address (e.g., a single logical write address for a short packet, or multiple logical write addresses for a long packet) and the at least one physical write address (e.g., a single physical write address for a short packet, or multiple physical write addresses for a long packet) selected by the address selection circuit 1506. Next, the physical to bank mapping circuit 1304 maps the at least one physical write address to at least one memory bank 114 of the packet buffer 110.
The cell mapping circuit 1504 may map one logical cell address to m physical cell addresses, where m≧1. Alternatively, the logical cell address may be the physical cell address 0 to reduce the map memory size, where “physical cell address 0” means “address of the 1st physical cell in the m physical cells”. That is, when the logical cell address is the physical cell address 0, there is no need to record the address mapping between the logical cell and the 1st physical cell. In this way, the cell mapping circuit 1504 only needs to record that the logical cell address is mapped to (m−1) physical cell addresses.
Concerning the logical write address selection, the same selection rules employed by the address selection circuit 1406 may also be employed by the address selection circuit 1506. Further description is omitted here for brevity. Concerning the physical write address selection, the address selection circuit 1506 controls selection of the at least one physical write address according to at least one selection rule. In accordance with the at least one selection rule, a pre-defined cell space is selected for each small cell. For example, the mth pre-defined cell space is selected for the mth small cell (physical cell) included in one large cell (logical cell). When the logical write rule is also issued from the master device (e.g., QM circuit 104), the at least one selection rule used by the address selection circuit 1506 includes the logical write rule for controlling selection of the at least one physical write address. The logical write rule may select pre-defined cell spaces. For example, in accordance with the logical write rule, small cells (physical cells) of the same large cell (logical cell) are written into different address locations according to the physical cell number, and/or the small cells (physical cells) in the same large cell (logical cell) are selectively stored according to the associated valid cell flags.
Similarly, the address selection circuit 1506 further generates a logical write response to the master device (e.g., QM circuit 104). For a lossy packet write operation, the logical write response may indicate that the logical write request has been dropped due to bank conflict of the multi-bank packet buffer. For a lossless packet write operation, the logical write response may indicate that bank conflict of the multi-bank packet buffer is about to happen in the multi-bank packet buffer. Hence, when being notified by the logical write response, the master device (e.g., QM circuit 104) may reduce its packet data output throughput to avoid the packet data drop.
In above embodiments shown in
Those skilled in the art will readily observe that numerous modifications and alterations of the device and method may be made while retaining the teachings of the invention. Accordingly, the above disclosure should be construed as limited only by the metes and bounds of the appended claims.
This application claims the benefit of U.S. provisional application No. 62/260,651, filed on Nov. 30, 2015 and incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
62260651 | Nov 2015 | US |