Distributed switch memory architecture
Summary by NHIP
Distributed memory switch system
The system transmits packets from source ports to destination ports via a memory pool using an interconnection stage. A processor assigns larger memory space to higher speed ports and smaller space to lower speed ports, while the stage splits packets into multiple portions for storage.
Claim Score by NHIP
Abstract
A distributed memory switch system for transmitting packets from source ports to destination ports, comprising: a plurality of ports including a source port and a destination port wherein a packet is transmitted from the source port to the destination port; a memory pool; and an interconnection stage coupled between the plurality of ports and the memory pool such that the interconnection stage permits a packet to be transmitted from the source port to the destination port via the memory pool.

Term
Term ended
Expired 11 December 2024, 1.8 years ago.
- Priority
- Filed
- Granted
- Expired
- Today
14 claims: 2 independent, 12 dependent
- 1A distributed memory switch system, comprising:a plurality of ports including a source port and a destination port;a memory pool;an interconnection stage to couple between the plurality of ports and the memory pool such that the interconnection stage permits a packet to be sent from the source port to the destination port via the memory pool, the interconnection stage to split the packet received from the source port into multiple packet portions for storage in the memory pool, wherein the interconnection stage includes a switch stage to couple to the plurality of ports, and a memory switch to couple to the switch stage and to the memory pool;and a processor to couple to the interconnection stage, the processor to assign memory space from the memory pool to the ports, and wherein the processor assigns a larger amount of memory space from the memory pool to higher speed ports and a smaller amount of memory space from the memory pool to lower speed ports.
- 8Broadest claimClaim Score 58, broad(NHIP)A switch system for switching packets between ports, comprising:an interconnection stage arranged to transmit the packets between the ports;a memory pool to connect to the interconnection stage to store the packets which are received from the ports, wherein the interconnection stage splits certain of the packets received from the ports into multiple packet portions for storage in the memory pool, and the interconnection stage includes a switch stage to connect to the ports and a memory switch to connect to the switch stage and the memory pool;and a processor to connect to the interconnection stage, the processor to assign memory space from the memory pool to the ports, and wherein the processor assigns a larger amount of memory space from the memory pool to higher speed ports and a smaller amount of memory space from the memory pool to lower speed ports.
Independent claims2
81 paragraphs in 7 sections, as filed
This application is a continuation of U.S. patent application Ser. No. 10/704,510 filed on Nov. 6, 2003 which issued as U.S. Pat. No. 6,993,020 on Jan. 31, 2006.
BACKGROUND OF THE INVENTION
1. Field of the Invention
This invention relates generally to the field of network switching and more specifically to a switch architecture capable of transmitting packets between ports in which a switch memory for temporarily storing packets while forwarding decisions are made is configured as a pool that is available to all ports in the switch.
2. Description of the Related Art
Network switches provide a solution to client congestion problems by switching network traffic at high speeds between ports, rather than having every user broadcast to every other user in the network. Network switches enable information (formatted into packets) to be switched from one port to another port based upon the Ethernet addresses embedded in the packets. Conventional network switches are formed with switch-nodes that are interconnected to each other. Each switch-node typically has a physical link to an interconnection matrix which switches data between different switch-nodes. The interconnection matrix between switch-nodes typically incorporate either a cross-bar or a shared-bus architecture. The cross-bar and shared-bus architectures permit the forwarding of packets from a switch-node to another switch-node once packet switching decisions are made. The packet switching decisions are performed by processing hardware incorporated within each switch-node. Additionally, a local static random access memory (SRAM) for temporarily storing ingress and egress packets is incorporated within each of the conventional switch nodes.
Referring first to <figref idref="DRAWINGS">FIG. 1</figref>, there is seen a conventional switch system <b>100</b> which is based on the cross bar architecture and which includes switch-nodes <b>105</b>, <b>110</b>, <b>115</b> and <b>120</b>. Switch-node <b>105</b> includes a local SRAM <b>105</b><i>a </i>that is configured for storing ingress and egress packets and is organized according to a First-In/First-Out (FIFO) discipline in order to prevent inversions in the packet order. A controller <b>105</b><i>b </i>controls the FIFO queue of packets which are temporarily stored in the local SRAM <b>105</b><i>a</i>. The processing logic <b>105</b><i>c </i>performs switching decisions on the packets. A plurality of ports <b>105</b><i>d </i>receive and transmit the ingress and egress packets, respectively. Switch-node <b>105</b> is further coupled to the cross-bar switch <b>125</b> for permitting packets to be transmitted to other switch-nodes once switching decisions are made by the processing logic <b>105</b><i>c</i>. Similarly, each of the other switch-nodes (e.g., nodes <b>110</b>, <b>115</b>, or <b>120</b>) includes a local SRAM, controller, processing logic, and ports, and are likewise coupled to the cross-bar switch <b>125</b>. The cross-bar switch <b>125</b> is based on a meshed interconnection matrix design and permits a packet from any port on a switch-node to be forwarded to a port of any other switch-node once switching decisions are made for the packet.
Packets that must be switched between switch-nodes are required to travel via the cross-bar switch <b>125</b>. A packet destined for a busy port in another switch-node can thus block other packets destined for other non-busy ports, thereby resulting in a “head-of-line” blocking problem. For example, assume the packets <b>130</b> and <b>135</b> both originate from node <b>115</b> whereby packet <b>130</b> is destined for node <b>110</b> while packet <b>135</b> is destined for node <b>120</b>. Assume further that packet <b>130</b> is ahead of packet <b>135</b> in the FIFO queue of SRAM <b>115</b><i>a </i>of node <b>115</b>. In this example, the destination port of packet <b>130</b> in node <b>110</b> is busy and is unable to accept incoming packets, while the destination port of packet <b>135</b> in node <b>120</b> is not busy. Thus, packet <b>130</b> is required to wait until the destination port in node <b>110</b> is available to receive data. Transmission of packet <b>135</b> is also blocked until packet <b>130</b> is transmitted, even though the destination port of packet <b>135</b> is ready. Thus, the head-of-line blocking problem can lead to undesirable performance such as packet transmission delay.
<figref idref="DRAWINGS">FIG. 2</figref> illustrates a switch system <b>150</b> which incorporates the shared-bus architecture and which includes switch-nodes <b>160</b>, <b>165</b>, <b>170</b>, and <b>175</b>. A shared-bus <b>185</b> connects switch-nodes <b>160</b>, <b>165</b>, <b>170</b>, and <b>175</b> together and is local to a PCB card. Each of the switch-nodes <b>160</b>-<b>175</b> includes elements performing similar functions as those in switch-nodes <b>105</b>-<b>120</b> of <figref idref="DRAWINGS">FIG. 1</figref>. For example, switch-node <b>160</b> includes a local SRAM <b>160</b><i>a</i>, FIFO controller <b>160</b><i>b</i>, processing logic <b>160</b><i>c</i>, ports <b>160</b><i>d </i>and connections to shared-bus <b>185</b> for permitting packets to be transmitted to other switch-nodes once switching decisions are made by the processing logic <b>160</b><i>c</i>. Similarly, the other switch-nodes (e.g., nodes <b>165</b>, <b>170</b>, or <b>175</b>) each include a local SRAM, controller, processing logic, ports and connections coupled to the shared bus <b>185</b>. The switch-nodes <b>160</b>-<b>175</b> follow a standard arbitration scheme (e.g., time division multiplexing, round-robin arbitration, etc.) so that a switch-node can access the shared bus <b>185</b> and transmit a packet via the shared-bus <b>185</b> to another switch-node.
A disadvantage of the shared-bus design in <figref idref="DRAWINGS">FIG. 2</figref> is as follows. By adding switch-nodes to the shared-bus <b>185</b>, the load of the shared-bus is increased. An increased load limits the frequency of operation of the network switch <b>150</b>, thereby limiting switching capacity. Additionally, due to the shared configuration of the bus <b>185</b>, blocking effects may occur in the shared-bus switch system <b>150</b> of <figref idref="DRAWINGS">FIG. 2</figref>. One example of such blocking effects is the head-of-line blocking problem which was discussed above.
The cross-bar switch system <b>100</b> (<figref idref="DRAWINGS">FIG. 1</figref>) and the shared-bus switch system <b>150</b> (<figref idref="DRAWINGS">FIG. 2</figref>) also have the following disadvantages. As stated above, switch-nodes <b>105</b>-<b>120</b> (<figref idref="DRAWINGS">FIG. 1</figref>) and switch-nodes <b>160</b>-<b>175</b> (<figref idref="DRAWINGS">FIG. 2</figref>) each include, respectively, a local SRAM for storing ingress and egress packets before packets are transmitted to other switch-nodes. However, SRAM devices are expensive (as compared to dynamic random access memory (DRAM) devices). In the conventional switch systems <b>100</b> and <b>150</b> (<figref idref="DRAWINGS">FIG. 1</figref> and <figref idref="DRAWINGS">FIG. 2</figref>, respectively), SRAM devices of sufficient sizes can be implemented, but this option leads to higher cost.
Alternatively, the sizes of the SRAM devices can be made smaller to reduce cost, but decreasing the memory sizes will limit the bandwidth capacity of the switch system. A limited bandwidth capacity leads to a limited switching capability. Additionally, the conventional switch systems <b>100</b> and <b>150</b> require additional hardware to implement the switch-nodes in the network, thereby resulting in additional implementation costs.
One conventional approach is to use chassis-based designs to implement the switch-nodes and the switch systems. However, chassis-based designs also increase the overall cost of switch systems. In addition, chassis-based designs have poorer integration characteristics, since these designs require a given amount of logic to be implemented in multiple cards. Additional logic is then needed to serve as an interface between the multiple cards.
Accordingly, there is a need for a switch memory architecture which overcomes the above-mentioned deficiencies of conventional switch systems and which is less expensive to implement. The present invention fulfills this need, among others.
SUMMARY OF THE INVENTION
An object of the invention is to prevent the occurrence of the head-of-line blocking problem of the prior art.
Another object of the invention is to provide a switch system that is less expensive than conventional systems and that has a higher bandwidth and switching capability than conventional systems.
Another object of the invention is to provide a switch system that can easily incorporate advances in DRAM technology (e.g., higher speed, higher bandwidth or higher capacity).
Another object of the invention is to provide a switch system which permits memory to be dynamically allocated between switch ports.
Another object of the invention is to provide a switch system capable of higher integration and lower implementation costs as compared to conventional systems.
Another object of the invention is to provide a switching logic which can be implemented with smaller PCBs, which lead to small form factor systems.
Another object of the invention is to provide a switch system capable of permitting the achievement of wire speed switching for packets of any size between 64 bytes to about 1518 bytes, and up to about 9 kbytes for jumbo packets.
Another object of the invention is to provide a switch system which can be easily scaled by number of ports and/or amount of memory without limiting the system's switching capacity.
The present invention fulfills these objects, among others. According to one aspect, an apparatus according to the invention broadly provides a distributed memory switch system for transmitting packets from source ports to destination ports, comprising a plurality of ports including a source port and a destination port wherein a packet is transmitted from the source port to the destination port; a memory pool; and an interconnection stage coupled between the plurality of ports and the memory pool such that the interconnection stage permits a packet to be transmitted from the source port to the destination port via the memory pool.
In the immediate foregoing distributed memory switch system, the interconnection stage comprises a switch stage connected to the plurality of ports and a memory switch connected to the switch stage and to the memory pool. The switch stage and the memory switch can be implemented by one or more ASICs.
The present invention further provides a switch system for switching packets between ports, comprising an interconnection stage configured to transmit packets between ports; and a memory pool coupled to the interconnection stage for storing packets which are received from the ports.
According to another aspect of the invention, the present invention broadly provides a method for transmitting packets from source ports to destination ports, comprising the steps of: detecting the arrival of a packet from a source port; determining the address locations in a memory pool for buffering the packet after the packet is received from the source port of the packet; buffering the packet in the memory pool after the packet is received from the source port; retrieving the packet in the memory pool; and transmitting the packet from the memory pool to the destination port of the packet.
The list of objects and possible advantages and benefits above is not necessarily exhaustive and further advantages and benefits will become apparent upon studying the detailed description of the invention provided hereinbelow.
BRIEF DESCRIPTION OF THE DRAWINGS
<figref idref="DRAWINGS">FIG. 1</figref> illustrates a switch system based on the cross-bar architecture;
<figref idref="DRAWINGS">FIG. 2</figref> illustrates a switch system based on the shared-bus architecture;
<figref idref="DRAWINGS">FIG. 3</figref> illustrates a memory switch system according to a first embodiment of the present invention;
<figref idref="DRAWINGS">FIGS. 4A to 4C</figref> illustrate alternative implementations of the memory switch system consistent with the principles of the present invention;
<figref idref="DRAWINGS">FIG. 5</figref> further illustrates an example of a Port ASIC that can be included in the memory switch system according to the invention illustrated in <figref idref="DRAWINGS">FIG. 3</figref>;
<figref idref="DRAWINGS">FIG. 6</figref> is a flowchart illustrating the method implemented by a Port ASIC such as that illustrated in <figref idref="DRAWINGS">FIG. 5</figref> as a packet is received from a source port and buffered in the memory pool of <figref idref="DRAWINGS">FIG. 3</figref>;
<figref idref="DRAWINGS">FIG. 7</figref> is a flowchart illustrating the method implemented by a Port ASIC such as that illustrated in <figref idref="DRAWINGS">FIG. 5</figref> as a packet is retrieved from the memory pool of <figref idref="DRAWINGS">FIG. 3</figref> and is then transmitted to a destination port;
<figref idref="DRAWINGS">FIG. 8</figref> illustrates another example of a Port ASIC that can be included in the memory switch system according to the invention illustrated in <figref idref="DRAWINGS">FIG. 3</figref>;
<figref idref="DRAWINGS">FIG. 9</figref> further illustrates an example of a Memory ASIC that can be included in the memory switch system according to the invention illustrated in <figref idref="DRAWINGS">FIG. 3</figref>;
<figref idref="DRAWINGS">FIGS. 10A and 10B</figref> further illustrate examples of a memory pool that can be included in the memory switch system according to the invention illustrated in <figref idref="DRAWINGS">FIG. 3</figref>;
<figref idref="DRAWINGS">FIG. 11</figref> illustrates an alternative implementation of a Memory ASIC and a memory pool consistent with the principles of the present invention; and
<figref idref="DRAWINGS">FIG. 12</figref> is a memory switch system according to another embodiment of the present invention.
DETAILED DESCRIPTION OF THE INVENTION
Referring in detail now to the drawings wherein similar parts or steps of the present invention are identified by like reference numerals, there is seen in <figref idref="DRAWINGS">FIG. 3</figref> a schematic block diagram of a memory switch system <b>200</b> in accordance with a preferred embodiment of the present invention. The switch system can switch packets between nodes in a local area network (LAN) or different network segments or different networks in a wide area network (WAN).
Switch system <b>200</b> is capable of switching packets between a plurality of ports, shown configured as four sets of ports <b>210</b><i>a</i>-<b>210</b><i>d</i>, with each set having 1 to n ports. The ports <b>210</b>-<b>1</b> . . . <b>210</b>-n can be implemented by port modules such as an 8×10/100 Mb port module (100 Base TX), a 1-Gigabit port module, or a 4-port 100 Base FX module. The ports <b>210</b>-<b>1</b> . . . <b>2210</b>-n can each also include a WAN module such as a module capable of T1/T3/E1/E3 operations in TDM, frame relay, or ATM formats.
A switch stage <b>215</b> is comprised of four Port ASICs <b>245</b><i>a</i>-<i>d </i>and is coupled to a memory switch <b>220</b> via an interconnect <b>217</b>, while a memory pool <b>225</b> is coupled to memory switch <b>220</b>. Each port ASIC <b>245</b><i>a</i>-<b>245</b><i>d </i>respectively interfaces with ports <b>210</b><i>a</i>-<b>210</b><i>d </i>and acts to transfer packets between the ports <b>210</b>-<b>1</b> . . . <b>210</b>-n and memory pool <b>225</b> via memory switch <b>220</b>. Accordingly, packet <b>250</b> can be transmitted from any one of the ports <b>210</b>-<b>1</b> . . . <b>210</b>-n associated with a Port ASIC, via memory pool <b>225</b>, to another of the ports <b>210</b>-<b>1</b> . . . <b>210</b>-n associated with the same or any of the other Port ASICs. The switch stage <b>215</b>, interconnect <b>217</b> and memory pool <b>225</b> can therefore be collectively referred to as an interconnect stage that interconnects the individual ports with the common memory pool <b>225</b>.
A switch engine <b>230</b> and a central processing unit (CPU) <b>235</b> communicate with the Port ASICs in switch stage <b>215</b> so that a packet <b>250</b> can be transmitted from its source node to its destination node, as elaborated upon more fully hereinafter. Table RAM <b>240</b> is coupled to switch engine <b>230</b> and can be implemented by a conventional RAM which is available from numerous memory suppliers. Switch engine <b>230</b> maintains Table RAM <b>240</b> so that it lists addresses corresponding to temporarily stored packets <b>250</b> as will be described in more detail below.
CPU <b>235</b> can be implemented by, for example, the MC <b>68360</b> microprocessor from Motorola, Inc. of Schaumberg, Ill. CPU <b>235</b> sets up the initial configuration of switch system <b>200</b>, as elaborated more fully hereinafter. CPU <b>235</b> may also gather statistics and other management information from the packet flows, run diagnostics, and report systems errors, as is conventionally known.
Switch engine <b>230</b> performs the packet switching determination operations for forwarding packets <b>250</b> received from the ports <b>210</b>-<b>1</b> . . . <b>210</b>-n. An example of a switch engine which can perform the above operations is described in commonly assigned U.S. patent application Ser. No. 09/058,335, entitled “Method and Apparatus for Multiprotocol Switching and Routing”, filed on Apr. 10, 1998, which is fully incorporated herein by reference. An advantage of implementing the invention with the switch engine of the co-pending application is that processor overhead is minimized since decision-making tasks on packet switching are efficiently allocated between the CPU <b>235</b>, and the dedicated ASICs <b>230</b>, <b>245</b><i>a</i>-<b>245</b><i>d</i>, and <b>252</b><i>a</i>-<b>252</b><i>d</i>. However, the present invention is not limited to use with the switch engine in the co-pending application; rather, other switch engines may be used.
As described above, switch stage <b>215</b> is implemented by four application specific integrated circuit (ASIC) elements which are specifically shown in <figref idref="DRAWINGS">FIG. 3</figref> as Port ASICs <b>245</b><i>a</i>, <b>245</b><i>b</i>, <b>245</b><i>c</i>, and <b>245</b><i>d</i>. Likewise, the Memory Switch <b>220</b> can be implemented as four ASICs which are shown as Memory ASICs <b>252</b><i>a</i>, <b>252</b><i>b</i>, <b>252</b><i>c</i>, and <b>252</b><i>d</i>. The Port ASICs <b>245</b><i>a</i>-<b>245</b><i>d </i>are coupled to the Memory ASICs <b>252</b><i>a</i>-<b>252</b><i>d </i>to form a 4×4 interconnection stage <b>217</b>, which can be implemented by, for example, sixteen fast serial connections (i.e. SerGig) connected and arranged as shown in <figref idref="DRAWINGS">FIG. 3</figref>.
In <figref idref="DRAWINGS">FIG. 3</figref>, the Port ASICs and the Memory ASICs are shown in separate blocks to assist in describing the functionality of the present invention. Based on the teachings of the invention, however, those skilled in the art will realize that many different implementations are possible. For example, as shown in <figref idref="DRAWINGS">FIG. 4A</figref>, each of the separate Port ASICs can communicate with respective switch ASICs having the functionality of switch engine <b>230</b>. Alternatively, as shown in <figref idref="DRAWINGS">FIG. 4B</figref>, the functionality of the Port ASICs and switch engine can be combined into single respective ASICs that communicate with the CPU and with the Memory ASICs via the interconnection stage. As a further alternative, as shown in <figref idref="DRAWINGS">FIG. 4C</figref>, the functionality of the Port ASICs, switch engine and Memory ASICs can be implemented by a single VLSI device formed on a single semiconductor substrate that directly communicates with the memory pool and the CPU.
As for the implementation shown in <figref idref="DRAWINGS">FIG. 3</figref>, the Port ASICs <b>245</b><i>a</i>-<b>245</b><i>d </i>each concentrate a large number of low-bandwidth data streams received from the multiple ports <b>210</b>-<b>1</b> . . . <b>210</b>-n (e.g. n=8, 16, 24, etc.), and convert the low-bandwidth data streams into a low number (e.g. 4, 8, 12, etc.) of high-bandwidth data streams which are received by the Memory ASICs <b>252</b><i>a</i>-<b>252</b><i>d</i>. Accordingly, the Memory ASICs <b>252</b><i>a</i>-<b>252</b><i>d </i>are preferably optimized to switch a smaller number of high-bandwidth data streams. This optimization arises from the feature that a given Memory ASIC has a pin budget which determines the amount of data streams which can be concurrently received by the given Memory ASIC. Additionally, the above optimization arises from the feature that the memory devices <b>227</b><i>a</i>-<b>227</b><i>d </i>(in the memory pool <b>225</b>) can transfer data at a higher rate than data is communicated via ports <b>210</b>.
The efficiency achieved by optimizing the Memory ASICs <b>252</b><i>a</i>-<b>252</b><i>d </i>to switch a smaller number of high-bandwidth streams is further noted in the following comparison. A standard 100 Mbit MII (Media Independent Interface) requires twenty (20) pins to transfer 200 Mbits of data. In contrast, in the configuration shown in <figref idref="DRAWINGS">FIG. 3</figref>, sixteen (16) pins of Memory ASICs <b>252</b><i>a</i>-<b>252</b><i>d </i>can each carry 960 Mbits of data, if the interconnect between switch stage <b>215</b> and <b>220</b> is clocked at 60 MHz.
Memory pool <b>225</b> can be formed by a plurality of DRAM type devices <b>227</b><i>a</i>, <b>227</b><i>b</i>, <b>227</b><i>c</i>, and <b>227</b><i>d</i>. One example of a DRAM device which can be used to implement devices <b>227</b> in memory pool <b>225</b> is an 8-Mbit Rambus DRAM, which is available from various memory suppliers. According to a preferred embodiment of the invention, the total bandwidth of the memory pool <b>225</b> is set at a value that is at least (or greater than) the sum total of the bandwidths of the ports <b>210</b>-<b>1</b> . . . <b>210</b>-n. This permits the full bandwidth at the ports <b>210</b>-<b>1</b> . . . <b>210</b>-n to be supported by the memory pool <b>225</b> at any given time. Additionally, by setting the memory pool <b>225</b> bandwidth at a value which is greater than the sum total of the bandwidths of the ports <b>210</b>-<b>1</b> . . . <b>210</b>-n by a given margin, some inefficiencies are also accounted for as data flows through the switch system <b>200</b>.
An example for determining peak bandwidth values for the memory pool <b>225</b> is as follows. If 32×100 Mbit ports are used in the switch system <b>200</b> (e.g., each switch node <b>205</b> includes 8×100 Mbit ports <b>210</b>-<b>1</b> to <b>210</b>-<b>8</b>), then the sum total of the bandwidths is equal to about 6.4 Gbits/s (6.4 Gbits/s=32×100 Mbits/s×2, wherein the factor of 2 accounts for full-duplex traffic). Based on the 6.4 Gbits/s port bandwidths sum total, a memory pool <b>225</b> with a peak bandwidth of, for example, about 15 Gbits/s should be implemented to provide an adequate margin against inefficiencies.
As is known, Ethernet packets are carried in frames of between 64 and 1518 bytes. MAC layer components (not shown) are used to convert the frames, serially transmitted through ports <b>210</b>, into packets <b>250</b> having a predetermined size of, for example, 64-bytes. Thus, a 128-byte Ethernet frame is received by the corresponding Port ASIC in switch stage <b>215</b> in two (2) 64-byte packets <b>250</b>. Further control signals are provided by the MAC layer components to signal the start and end of a frame. It should be noted, however, that the present invention is not limited to the above-described Ethernet example; rather the present invention is adaptable for use in other packet switching technologies as well. Moreover, packet sizes other than 64 bytes may be implemented.
In <figref idref="DRAWINGS">FIG. 5</figref> there is shown a Port ASIC <b>245</b> which can be an implementation of Port ASICs <b>245</b><i>a</i>, <b>245</b><i>b</i>, <b>245</b><i>c</i>, and/or <b>245</b><i>d </i>according to a preferred embodiment of the invention. It includes receive (RX) and transmit (TX) queues <b>22</b> and <b>24</b> associated with each port <b>210</b>-<b>1</b> . . . <b>210</b>-n with which Port ASIC <b>245</b> interfaces. Packet deconstruct module <b>26</b> and packet reconstruct module <b>28</b> are responsible for splitting up and reconstructing, respectively, packets that are transmitted between ports <b>210</b> and memory switch <b>220</b>. Switch interface <b>30</b> communicates with switch engine <b>230</b> and address table <b>20</b> stores addresses corresponding to regions in memory pool <b>225</b> associated with each respective port <b>210</b>. CPU <b>235</b> initializes the settings in address table <b>20</b>. CPU <b>235</b> can divide the total memory capacity evenly between all the ports in the system, or it can assign larger spaces, for example, for higher speed ports and smaller spaces, for example, for lower speed ports. CPU <b>235</b> or other instrumentalities can also dynamically update the settings in accordance with, for example, loads on certain ports.
In operation, a 64-byte packet <b>250</b> received at one of ports <b>210</b> by Port ASIC <b>245</b> is distributed (or divided) into four 16-byte packet portions (or other size portion, depending on the size of the packet <b>250</b> and the number of Memory ASICs) <b>250</b><i>a</i>, <b>250</b><i>b</i>, <b>250</b><i>c</i>, and <b>250</b><i>d </i>and stored in memory pool <b>225</b> via memory switch <b>220</b>, as will be explained now in more detail with reference to <figref idref="DRAWINGS">FIG. 6</figref>. Switch interface <b>30</b> detects the arrival of a given packet <b>250</b> in one of the RX queues <b>22</b>-<b>1</b> . . . <b>22</b>-n associated with ports <b>210</b>-<b>1</b> . . . <b>210</b>-n (step S<b>10</b>). Switch interface <b>30</b> determines, from address table <b>20</b>, the range of memory addresses within memory pool <b>225</b> for storing the given packet <b>250</b> based on which of the ports <b>210</b>-<b>1</b> . . . <b>210</b>-n the given packet <b>250</b> arrived (step S<b>20</b>). Switch interface <b>30</b> immediately forwards a copy of the packet <b>250</b> (assuming it is the first packet in the frame, as determined in step S<b>30</b>, for example by determining whether it is the first packet received after a start of frame signal) to switch engine <b>230</b> (step S<b>40</b>). Alternatively, the switch engine <b>230</b> can independently receive a copy of the first packet in the frame by other instrumentalities. The first 64 bytes of an Ethernet frame will include the frame header information that the switch engine <b>230</b> will use to determine how to forward the frame. Switch interface <b>30</b> also forwards a message to switch engine <b>230</b> that includes the memory pool <b>225</b> addresses at which the given packet <b>250</b> will be stored (step S<b>50</b>). Switch engine <b>230</b> will store this address in Table RAM <b>240</b>, along with an identifier for the frame and then begin its packet forwarding determination operations.
Switch interface <b>30</b> forms a command <b>251</b> for relaying along with the split packet portions and sends it to memory interface <b>32</b> (step S<b>60</b>). The command includes the address at which the portion is to be stored in memory, as well as an indicator indicating that a memory write operation is to be performed. Packet deconstructor <b>26</b> splits the given packet <b>250</b> into the packet portions <b>250</b><i>a</i>-<b>250</b><i>d </i>(step S<b>70</b>). When memory interface <b>32</b> receives the packet portions and command, it transfers the packet portions and appended command to the appropriate Memory ASICs <b>252</b><i>a</i>-<b>252</b><i>d </i>so that the packet portions are stored in the proper memory pool <b>225</b> addresses (step S<b>80</b>). For example, a 64-byte packet <b>250</b> is formed by Byte[<b>0</b>] . . . Byte[<b>63</b>]. Packet deconstructor <b>26</b> splits the packet, and memory interface <b>32</b> sends the portions, so that Memory ASIC <b>252</b><i>a </i>receives the packet portion <b>250</b><i>a</i>, i.e., Byte[<b>0</b>] . . . Byte[<b>15</b>], while Memory ASIC <b>252</b><i>b </i>receives the packet portion <b>250</b><i>b</i>, i.e., Byte[<b>16</b>] . . . Byte[<b>31</b>], Memory ASIC <b>252</b><i>c </i>receives the packet portion <b>252</b><i>c</i>, i.e., Byte[<b>32</b>] . . . Byte[<b>47</b>], and Memory ASIC <b>252</b><i>d </i>receives the packet portion <b>252</b><i>d</i>, i.e., Byte[<b>48</b>] . . . Byte[<b>63</b>]. By distributing the 64-byte packet <b>250</b> into four equal sized packet portions <b>250</b><i>a</i>-<b>250</b><i>d</i>, it is ensured that the bandwidth load is always equally distributed across the four memory devices <b>227</b><i>a</i>-<b>227</b><i>d </i>(see <figref idref="DRAWINGS">FIG. 3</figref>) of the memory pool <b>225</b> (see <figref idref="DRAWINGS">FIG. 3</figref>) and that overloading does not occur in any of the individual Memory ASICs <b>252</b><i>a</i>-<b>252</b><i>d</i>. Although an equal loading among memory devices is preferred, it is not necessary and other implementations are possible.
It should be noted that frames may have an arbitrary size that result in data not fully consuming a 64-byte packet. For example, an 80-byte frame will consume one 64-byte packet and 16 bytes of a subsequent packet. Processing can be further performed to ensure that these odd portions are equally loaded among memory devices. For example, if an 80-byte frame is received from port <b>1</b>, the Port ASIC will cause the leftover 16-byte portion to be stored in memory device <b>227</b><i>a </i>via Memory ASIC <b>252</b><i>a</i>. On the other hand, if the 80-byte frame is received from port <b>2</b>, the Port ASIC will cause the leftover 16-byte portion to be stored in memory device <b>227</b><i>b </i>via Memory ASIC <b>252</b><i>b</i>. It should be apparent that other load balancing techniques are possible, such as, for example, by making a determination based on addresses.
A circular buffer structure is maintained for each port, and the packets are preferably placed “back-to-back”. For example, if a packet received at a given port is stored at addresses <b>0</b> . . . N in the memory pool <b>225</b>, switch interface <b>30</b> will keep track so that the initial portion of a next received packet for the given port is stored at address N+1. This will continue until the entire address range for the port has been filled, in which case switch interface <b>30</b> will reset the starting address for stored packets to the beginning of the address range for the port.
If the packet that was stored was not the last packet in the frame (as determined in step S<b>90</b>, e.g. no signal has been received signaling the end of the frame), control will return to step S<b>10</b> and the Port ASIC will continue to receive and store packets for the frame in memory pool <b>225</b>. When the last packet is received, switch interface <b>30</b> will notify switch engine <b>230</b> to that effect (S<b>100</b>) and the packet will await further frames.
In operation, a 64-byte packet <b>250</b> transmitted via one of ports <b>210</b> by Port ASIC <b>245</b> is reconstructed from four 16-byte packet portions (chunks) <b>250</b><i>a</i>, <b>250</b><i>b</i>, <b>250</b><i>c</i>, and <b>250</b><i>d </i>that were retrieved from memory pool <b>225</b> via memory switch <b>220</b>, as will be explained now in more detail with reference to <figref idref="DRAWINGS">FIG. 7</figref>. When switch engine <b>230</b> determines how a frame must be forwarded, it looks up the address for the packet in Table RAM <b>245</b> and sends a message to switch interface <b>30</b> of the Port ASIC <b>245</b> associated with the destination port of the frame. The message includes, for example, the address in memory where the frame is stored, the size of the frame, and the destination port number. Switch interface <b>30</b> of the associated Port ASIC <b>245</b> receives the message (S<b>200</b>) and creates a command <b>251</b> to be sent to the memory switch (S<b>210</b>). The command includes the address in memory where the packet is stored, as well as an indication that a memory read operation is to be performed.
The packet portions <b>250</b><i>a</i>-<b>250</b><i>d </i>are received by memory interface <b>32</b> in response to the command (step S<b>220</b>). Memory interface <b>32</b> sends them to packet reconstructor <b>28</b> which reconstructs the received packet portions <b>250</b><i>a</i>-<b>250</b><i>d </i>into the given packet <b>250</b> (step S<b>230</b>). When the entire 64 bytes have been received, packet reconstructor <b>28</b> relays the packet <b>250</b> to the TX queue <b>24</b> associated with the packet's destination port (of ports <b>210</b>-<b>1</b> . . . <b>210</b>-n) (step S<b>240</b>). If this is not the last packet in the frame (determined in step S<b>250</b>), switch interface <b>30</b> determines the memory pool address of the next packet in the frame (step S<b>260</b>), and control returns to step S<b>210</b> for retrieving the next packet from memory pool <b>225</b>. Otherwise, control returns to step S<b>200</b> for waiting for the next message from switch engine <b>230</b>.
<figref idref="DRAWINGS">FIG. 8</figref> shows an alternative embodiment of the Port ASIC, generally shown as <b>245</b>′, according to the invention. The packets <b>250</b><i>a</i><b>40</b> , <b>250</b><i>b</i>′, <b>250</b><i>c</i>′, and <b>250</b><i>d</i>′ are received at time t<b>1</b>, t<b>2</b>, t<b>3</b>, and t<b>4</b>, respectively. Each of the packets is sized at, for example, 64 bytes. The Port ASIC then outputs the packets <b>250</b><i>a</i>′, <b>250</b><i>b</i>′, <b>250</b><i>c</i>′and <b>250</b><i>d</i>′ at time t<b>1</b>′, t<b>2</b>′, t<b>3</b>′ and t<b>4</b>′, respectively, which are also 64 bytes, not 16 bytes as in the previous example. Accordingly, load-balancing of stored packets between areas of the memory pool <b>225</b> is achieved but in a different manner than described above.
<figref idref="DRAWINGS">FIG. 9</figref> shows a Memory ASIC <b>252</b> which can. be an implementation of the Memory ASICs <b>252</b><i>a</i>, <b>252</b><i>b</i>, <b>252</b><i>c</i>, and/or <b>252</b><i>d </i>(<figref idref="DRAWINGS">FIG. 3</figref>), and which receives the 16 byte packet portions <b>250</b><i>a</i>-<b>250</b><i>d </i>according to a preferred embodiment of the invention. A plurality of full duplex channels <b>300</b>, <b>305</b>, <b>310</b>, and <b>315</b> couples the Memory ASIC <b>252</b> to the multiple ports via switch stage <b>215</b>. Each of the channels <b>300</b>-<b>315</b> enables the bi-directional transmission of a 16-byte packet portion (e.g., packet portion <b>250</b><i>a</i>), or 64-byte packet portion in the example of <figref idref="DRAWINGS">FIG. 8</figref>, or other size portion depending on implementation.
In the example of <figref idref="DRAWINGS">FIG. 9</figref>, the Memory ASIC <b>252</b> is shown as having only four (4) channels. However, an N number of channels can be implemented for the Memory ASIC <b>252</b>, with the number of channels being limited by die size, pin count, and other constraints based on whether the ASIC is to be implemented on a single integrated circuit chip or multiple integrated circuit chips.
The channel <b>300</b> includes the receive (RX) path <b>320</b>, the transmit (TX) path <b>322</b>, the RXDATA FIFO <b>324</b>, the Command FIFO <b>326</b>, and the TXDATA FIFO <b>328</b>, with the operation of these elements being elaborated upon more fully hereinafter. Similarly, the channel <b>305</b> includes the RX path <b>330</b>, the TX path <b>332</b>, the RXDATA FIFO <b>334</b>, the Command FIFO <b>336</b>, and the TXDATA FIFO <b>338</b>. The channel <b>310</b> includes the RX path <b>340</b>, the TX path <b>342</b>, the RXDATA FIFO <b>344</b>, the Command FIFO <b>346</b>, and the TXDATA FIFO <b>348</b>, while the channel <b>315</b> includes the RX path <b>350</b>, the TX path <b>352</b>, the RXDATA FIFO <b>354</b>, the Command FIFO <b>356</b>, and the TXDATA FIFO <b>358</b>.
The RX paths (e.g., RX path <b>320</b>) are used for transmitting the packet portions (e.g., packet portion <b>250</b><i>a</i>) from switch stage <b>215</b> to the memory pool <b>225</b>. The TX paths (e.g., TX path <b>322</b>) are used for transmitting the packets portions from the memory pool <b>225</b> to the switch stage <b>215</b>. The Memory ASIC <b>252</b> further includes the arbitration hardware <b>360</b> and the Memory Controller <b>365</b>. The arbitration hardware <b>360</b> is implemented based on, for example, a standard round robin scheme which gives fair access to each of the channels <b>300</b>-<b>315</b>. The memory controller <b>365</b> can be implemented by a standard memory data controller, and the implementation is dependent upon the type of memory technology (e.g., SDRAMs, Rambus DRAMs, Dual Data Rate DRAMs, etc.) used in memory pool <b>225</b>.
In operation, assume that command <b>251</b><i>a </i>and/or packet portion <b>250</b><i>a </i>are to be communicated with Memory ASIC <b>252</b>. The Command FIFOs <b>326</b>, <b>336</b>, <b>346</b> and/or <b>356</b> process the receive commands and transfer commands as indicated by the given command <b>251</b><i>a </i>(e.g. write=receive, read=transfer). The received command <b>251</b><i>a </i>is stored in the Command FIFO upon receipt. The receive commands serve to permit the data packet portions <b>250</b><i>a</i>-<b>250</b><i>d </i>to be written into the memory pool <b>225</b>, while the transfer commands serve to permit the data packet portions <b>250</b><i>a</i>-<b>250</b><i>d </i>to be read from the memory pool <b>225</b>. The RXDATA FIFOs (e.g., FIFO <b>324</b>) buffer the RXDATA (which is, e.g., a received data packet portion <b>250</b><i>a </i>to be written into the memory pool <b>225</b>), while the TXDATA FIFOs (e.g., FIFO <b>328</b>) buffer the TXDATA (which is, e.g., a data packet portion <b>250</b><i>a </i>which has been read from the memory pool <b>225</b>).
The channel <b>300</b> (or any of the other channels) is “ready” to transfer data to or from the memory pool <b>225</b> once a “full command” <b>251</b> and its associated data <b>250</b>, if any, are presented in the Command FIFO <b>326</b>. The arbitration hardware <b>365</b> arbitrates between all channels which are ready to transfer data and determines which of the ready channels will access and transfer data to and from the memory pool <b>220</b> at a given time. As stated above, a standard round-robin arbitration scheme, for example, is used, to implement the arbitration hardware <b>360</b>. The channel which is permitted to access the memory pool <b>225</b> will read from or write to the memory pool <b>225</b>. For a receive command, the packet portion <b>250</b><i>a </i>(and the packet portions <b>250</b><i>b</i>-<b>250</b><i>d</i>) is written from RXFIFO <b>324</b> and buffered in memory pool <b>225</b> addresses indicated by the receive command. For a transfer command, the packet portion <b>250</b><i>a </i>(and the packet portions <b>250</b><i>b</i>-<b>250</b><i>d</i>) is read from memory pool <b>225</b> addresses indicated by the transfer command and stored in TXFIFO <b>328</b>. The packet portion <b>250</b><i>a </i>is then output to the Port ASIC <b>245</b> corresponding to the channel.
As mentioned above, memory pool <b>225</b> can be implemented in a number of ways. The use of DRAM devices to implement the memory pool <b>225</b> leads to the following possible advantages. First, the DRAM devices in the memory pool <b>225</b> as described above leads to lower system cost, but also allows higher bandwidth capability than in conventional systems which do not use the memory pool configuration. In contrast, prior art switch systems require a local SRAM to be implemented in each switch node, as shown in <figref idref="DRAWINGS">FIGS. 1 and 2</figref>. Additionally, since SRAM devices are more expensive than DRAM devices, the use of SRAM devices can increase system cost by as much as about three to four times as compared to the present invention.
Another advantage made possible by the invention is the higher memory capacities provided by the DRAM devices which implement the memory pool <b>225</b>. Higher memory capacities lead to a higher switching capability for the memory switch in accordance with the present invention. Further, the invention can easily incorporate advances in DRAM technology (e.g., higher speed, higher bandwidth or higher capacity). By changing the number of DRAM ports in the Memory ASICs <b>252</b><i>a</i>-<b>252</b><i>d </i>and/or by changing the type of memory technology which is implemented in the memory pool <b>225</b>, the switching capacity of the present invention can be increased. Examples of memory pool <b>225</b> peak bandwidth values are shown below for specific memory implementations:
EXAMPLE 1
A peak bandwidth of 3.84 Gbits/s is achieved by configuring one 64-bit SDRAM port at 60 MHz per Memory ASIC <b>252</b><i>a</i>, <b>252</b><i>b</i>, <b>252</b><i>c </i>or <b>252</b><i>d. </i>
EXAMPLE 2
A peak bandwidth of 16 Gbits/s is achieved by configuring two 64-bit SDRAM ports at 125 MHz per Memory ASIC.
EXAMPLE 3
A peak bandwidth of 19.2 Gbits/s is achieved by configuring four Rambus DRAM ports at 600 MHz per Memory ASIC.
As memory technology advances, the advances can be incorporated in the memory switch system of the invention by appropriately configuring the Memory ASICs <b>252</b><i>a</i>-<b>252</b><i>d </i>and the memory pool <b>225</b> as discussed above. Other parts of the switch system <b>200</b> need not be affected. Additionally, as alluded to above, the ports <b>210</b>-<b>1</b> . . . <b>210</b>-n can share the use of the memory pool <b>225</b>, and the memory pool <b>225</b> is available to be shared unequally by all ports <b>210</b>-<b>1</b> . . . <b>210</b>-n. Thus, each port <b>210</b>-<b>1</b> . . . <b>210</b>-n is not subject to a “fixed-size” limitation. In contrast, under the more restrictive “fixed-size” design, ports of a given node can only share memory addresses which are available for that given node.
Moreover, it is possible to utilize the memory banks of DRAM devices so that, for example, a packet chunk is being received or stored in one memory bank of a given DRAM device, while another packet chunk is being retrieved from the another memory bank of the same given DRAM device or from another DRAM device in the memory pool <b>225</b>. This full duplex operation capability thereby permits the system to achieve a higher bandwidth capability. In other words, the operation on different banks can overlap. While a given packet chunk is being read from one memory bank, other memory banks can be setting up new pages for the next packet chunk transfer. In contrast, if packet traffic is concentrated in only one memory bank, the bandwidth of a particular system will be more limited.
Commercially available memory devices are oriented towards PC applications whereby sequential data is transferred for long burst, e.g. 64 bytes or 128 bytes per transfer. Therefore, the page mode of DRAMs can be used efficiently when implementing the commercially available memory devices for PC applications. In the present invention, however, in which each 16-byte chunk is transferred to or from a different page, page mode is not as advantageous and the following modifications are essential. First, for a 64-bit wide DRAM implementation, a burst-size of “2” is used (i.e., in two (2) cycles, 16-bytes will be transferred to the DRAM). Second, the use of memory banks is maximized. Thus, data is spread across all available banks in the high bandwidth memory pool <b>225</b>. By spreading data across available banks, the overlapping of memory operations are allowed, thereby permitting a greater bandwidth to be achieved. A commercially available memory typically has about two (2) memory banks, while Dual Data Rate DRAMs can have up to about eight (8) memory banks. Third, additional pins are added to each of the DRAMs for use in DRAM signaling functions (such as “COMMAND” signals to the DRAMs. This permits a greater overlap to occur between COMMAND signals and DATA signals. <figref idref="DRAWINGS">FIG. 10A</figref> illustrates an example of memory pool <b>225</b> wherein each Memory ASIC interfaces with a memory device <b>227</b> having two. memory banks. <figref idref="DRAWINGS">FIG. 10B</figref> illustrates an example of memory pool <b>225</b>′ wherein each Memory ASIC interfaces with a memory device <b>227</b>′ having four memory banks, which yields further overlapping of memory functions, and thus, greater bandwidth over the implementation in <figref idref="DRAWINGS">FIG. 10A</figref>.
It should be understood that other implementations of Memory ASICs <b>252</b> and memory pool <b>225</b> are possible while remaining within the principles of the present invention. For example, as shown in <figref idref="DRAWINGS">FIG. 11</figref>, the interface logic and FIFO functionality of the Memory ASIC <b>252</b> shown in <figref idref="DRAWINGS">FIG. 8</figref>, as well as the memory (e.g. four to sixteen banks) of memory pool <b>225</b> can be implemented together in a single semiconductor device such as an ASIC.
Further advantages are obtained by utilizing Rambus memories to implement the memory pool. Some of the advantages of using Rambus DRAMs to implement the DRAM devices in the memory pool <b>225</b> are as follows. A Rambus DRAM (concurrrent type) typically operates at about 600 MHz with 8 bits for data and a 31-pin interface. The peak per-pin-bandwidth is therefore (600 MHz*8 bits/31 pins) or 154 Mbits/s. In contrast, the bandwidth of conventional SDRAMs is limited by the SDRAM pin interface. The fastest commercially available SDRAM operates at about 143 MHz. For a 64-bit implementation, about 80 pins are required. Thus, the peak per-pin bandwidth of an SDRAM is therefore (125 MHz*64 bits/80 pins) or 100 Mbits/s. It should be noted that SDRAMs provide parallel synchronous busses for data transfers. Due to pinout constraints and cost constraints, the largest bus that exist on a single SDRAM chip is 32-bits in size. Multiple buses can be cascaded to form wider interfaces. However, since the ASIC pinout costs increases significantly with wider interfaces, practical limits today are buses of 64-bits, as factored in the above calculation.
Currently available Rambus DRAMs provide a peak bandwidth of 4.8 Gbits/s and consume 31 pins. Thus currently available Rambus DRAMs average about 154 Mbits per pin, (154 Mbits per pin=4.8 Gbits/s divided by 31 pins). About 4 Rambus DRAMs can interface with an ASIC. For example, in <figref idref="DRAWINGS">FIG. 10B</figref>, each ASIC can interface with 4 Rambus DRAMs rather than a single device having four banks. As stated above, each Rambus DRAM provides a peak bandwidth of 4.8 Gbits/s. Therefore, each ASIC <b>252</b><i>a</i>-<b>252</b><i>d </i>will have peak bandwidth of about 19.2 Gbits/s or (4.8 Gbits/s*4). Effective bandwidth in network applications ranges from about 60% to about 75% of the peak bandwidth. Thus, the effective bandwidth of each ASIC <b>252</b><i>a</i>-<b>252</b><i>d </i>will be about 12 Gbits/s or (19.2 Gbits/s*60%). Thus, for a 96 Gbits/s system, about 8 ASICs are required to be implemented (96 Gbits/s=12 Gbits/s * 8 ASICs).
<figref idref="DRAWINGS">FIG. 12</figref> shows another embodiment of the memory switch system, generally shown as <b>600</b>, according to the invention wherein a 6×4 interconnection stage couples the switch nodes <b>205</b> to the memory pool <b>225</b>. A Switch ASIC stage <b>215</b>′ comprises six Switch ASICs <b>245</b><i>a</i>-<b>245</b><i>f </i>and is coupled between the switch nodes <b>205</b> and the Memory Switch <b>220</b>. This embodiment enables the above mentioned advantages and further achieves a higher bandwidth and switching capacity since the switch system <b>600</b> permits more nodes <b>210</b>-<b>1</b> . . . <b>210</b>-n to be added. It should be apparent that other implementations are possible, such as 8×4, 4×6, 4×8 and other variations.
It should be noted that the memory switch system <b>200</b> and/or <b>600</b> can be implemented by use of VLSI devices to connect the ports <b>210</b>-<b>1</b> . . . <b>210</b>-n together and to the memory pool <b>225</b>. The interconnects are chip-to-chip based interconnections wherein chip-to-chip refers to a direct connection between two given ASICs (as opposed to having, for example, a buffer between the ASICs). The chip-to-chip based interconnections enable higher integration and lower implementation costs as compared to conventional approaches. In addition, since the switching logic of the invention is highly integrated in the ASICs, the invention can be implemented with smaller PCBs which lead to small form factor systems.
It should be further noted that the high system level architecture and the Switch ASICs and Memory ASICs implementations according to the invention also permit wire speed switching for packet sizes between specified bandwidth ranges, e.g., about 64 bytes to about 1518 bytes. In contrast, conventional switch systems have to operate at predetermined “sweet spots” (e.g., 64 bytes etc.) in order for the conventional switch system to function correctly. In addition, a conventional switch system is pre-designed to function at a predetermined sweet spot, and is unable to perform wire speed switching outside those sweet spots.
While the invention has been described in connection with what is presently considered to be the preferred embodiments, it is understood that the invention is not limited to the disclosed embodiments. For example, each of the features described above can be used singly or in combination, as set forth below in the claims, without other features described above which are patentably significant by themselves. Accordingly, the present invention is intended to cover various modifications and equivalent arrangements included within the spirit and scope of the appended claims.
Contents7
14 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10 Sheet 11 Sheet 12 Sheet 13 Sheet 14
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US8314807B2 | Cited by | United States of America | Applicant |
| US9053058B2 | Cited by | United States of America | Applicant |
| US8762653B2 | Cited by | United States of America | Applicant |
| US10146735B2 | Cited by | United States of America | Applicant |
| US2010033621A1 | Cited by | United States of America | Pre-grant |
| US8553042B2 | Cited by | United States of America | Applicant |
| US9135072B2 | Cited by | United States of America | Applicant |
| EP3057275A1 | Cited by | European Patent Office (EPO) | Applicant |
| US9229896B2 | Cited by | United States of America | Applicant |
| US5570348A | Cites | United States of America | Search report |
| US6233242B1 | Cites | United States of America | Search report |
| US6246683B1 | Cites | United States of America | Search report |
| US6430184B1 | Cites | United States of America | Search report |
| US6876654B1 | Cites | United States of America | Search report |
5 members in 1 office
Priority claims6
| Document | Office | Kind | Date |
|---|---|---|---|
| 70451003 | United States of America | A | |
| 70451003 | United States of America | A | |
| 31556505 | United States of America | A | |
| 10704510 | – | – | – |
| US20030704510 | – | – | – |
| US20050315565 | – | – | – |
Members5
| Document | Office | Kind | |
|---|---|---|---|
| US6697362B1 | United States of America | B1 | |
| US2004228340A1 | United States of America | A1 | |
| US6993020B2 | United States of America | B2 | |
| US2007297437A1 | United States of America | A1 | |
| US7535898B2This record | United States of America | B2 |
36 transactions on the USPTO file
Allowed after 1 non-final rejection and 1 final rejection.
- Non-final rejections
- 1
- Final rejections
- 1
- RCEs
- 0
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | Code | |
|---|---|---|
| Post Issue Communication - Certificate of CorrectionN423 | N423 | |
| Post Issue Communication - Certificate of CorrectionN423 | N423 | |
| Recordation of Patent Grant MailedPGM/ | PGM/ | |
| Patent Issue Date Used in PTA CalculationAllowedPTAC | PTAC | |
| Issue Notification MailedAllowedWPIR | WPIR | |
| Dispatch to FDCD1935 | D1935 | |
| Application Is Considered Ready for IssuePILS | PILS | |
| Issue Fee Payment VerifiedN084 | N084 | |
| Issue Fee Payment ReceivedIFEE | IFEE | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Final ActionA.NE | A.NE | |
| Mail Final Rejection (PTOL - 326)Final rejectionMCTFR | MCTFR | |
| Final RejectionFinal rejectionCTFR | CTFR | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Non-Final ActionA... | A... | |
| Request for Extension of Time - GrantedXT/G | XT/G | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| PG-Pub Issue NotificationPG-ISSUE | PG-ISSUE | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| IFW TSS Processing by Tech Center CompleteTSSCOMP | TSSCOMP | |
| Application Dispatched from OIPEOIPE | OIPE | |
| Application Is Now CompleteCOMP | COMP | |
| Sent to Classification ContractorPGPC | PGPC | |
| Additional Application Filing FeesADDFLFEE | ADDFLFEE | |
| A statement by one or more inventors satisfying the requirement under 35 USC 115, Oath of the ApplicOATHDECL | OATHDECL | |
| Preliminary AmendmentA.PE | A.PE | |
| Notice Mailed--Application Incomplete--Filing Date AssignedINCD | INCD | |
| Cleared by OIPE CSRL194 | L194 | |
| IFW Scan & PACR Auto Security ReviewSCAN | SCAN | |
| Claim Preliminary AmendmentCLAIM | CLAIM | |
| Initial Exam Team nnIEXX | IEXX |
5 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Maintenance fee paymentMAFP | MAFP | |
| Fee paymentFPAY | FPAY | |
| Fee paymentFPAY | FPAY | |
| Certificate of correctionCC | CC | |
| Information on status: patent grantGrantedPATENTED CASESTCF | STCF |
Numbers
- Publication
- 7535898
- Publication, DOCDB
- 7535898
- Publication, EPODOC
- US7535898
- Application
- 11315565
- Application, DOCDB
- 31556505
- Application, EPODOC
- US20050315565
Titles
- English
- Distributed switch memory architecture
Patent term adjustment
- A delay
- +407 daysthe office missed an examination deadline
- Applicant delay
- −6 days
- Net adjustment
- 401 days
Classification
- CPC, 4
- H04L49/3036
- H04L49/101
- H04L49/30
- H04L49/3072
- IPC, 1
- H04L12 28
- USPC, 3
- 370378000
- 370386000
- 370401000