KR102524566B1 - 언더런을 방지하기 위한 패킷 메모리 시스템, 방법, 및 디바이스 - Google Patents
언더런을 방지하기 위한 패킷 메모리 시스템, 방법, 및 디바이스 Download PDFInfo
- Publication number
- KR102524566B1 KR102524566B1 KR1020160036000A KR20160036000A KR102524566B1 KR 102524566 B1 KR102524566 B1 KR 102524566B1 KR 1020160036000 A KR1020160036000 A KR 1020160036000A KR 20160036000 A KR20160036000 A KR 20160036000A KR 102524566 B1 KR102524566 B1 KR 102524566B1
- Authority
- KR
- South Korea
- Prior art keywords
- ports
- packet data
- packet
- port
- memory
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/10—Packet switching elements characterised by the switching fabric construction
- H04L49/103—Packet switching elements characterised by the switching fabric construction using a shared central buffer; using a shared memory
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/20—Support for services
- H04L49/201—Multicast operation; Broadcast operation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0607—Interleaved addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1647—Handling requests for interconnection or transfer for access to memory bus based on arbitration with interleaved bank access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/10—Packet switching elements characterised by the switching fabric construction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/16—Arrangements for providing special services to substations
- H04L12/18—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
- H04L12/1881—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast with schedule organisation, e.g. priority, sequence management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
수신된 패킷들을 하나 이상의 출력 포트들에 선택적으로 출력하기 위한 패킷 메모리 시스템이 제공된다. 패킷 메모리 시스템은 출력 포트들을 제어하기 위한 제어기를 포함한다. 구체적으로, 복수의 포트들로부터 출력되어야 하는 멀티캐스트 또는 브로드캐스트 트래픽의 패킷들에 대해, 제어기는 나머지 포트들은 판독 동작을 수행하지 않고 판독된 패킷 데이터를 단순히 청취할 수 있도록 패킷 메모리로부터의 패킷 데이터를 판독하는 하나 이상의 판독기 포트들을 지정한다.
Description
본 발명은 패킷 메모리 시스템에 관한 것이다. 보다 구체적으로, 본 발명은 패킷 메모리 시스템에서 언더런을 방지하는 것에 관한 것이다.
스위치 마이크로칩과 같은, 패킷 프로세싱 디바이스는 보통 디바이스가 패킷들을 프로세싱하는 동안 하나 이상의 뱅크들을 갖는 패킷 버퍼 메모리 (PM) 내로 패킷들을 버퍼링해야 한다. 일부 패킷들 (예를 들어, 이더넷 패킷들) 의 사이즈는 미리 알려지지 않아서, 디바이스는 패킷이 얼마나 큰지 알지 못하고 패킷을 패킷 버퍼에 저장하기 시작해야 한다. 또한, 패킷들은 인터리빙된 방식으로 디바이스에 도달하여, 디바이스는 들어오는 몇몇 패킷들을 패킷 버퍼 내로 동시에 저장한다. 디바이스의 패킷 메모리에 패킷을 저장하기 위한 최신 솔루션은 패킷 각각에 단일의 대형 청크 대신, 패킷 메모리의 복수의 청크들 (페이지들이라고 함) 을 할당한다. 이러한 스킴으로, 패킷은 패킷 메모리의 뱅크들에 연속적으로 저장되지 않지만, 패킷 메모리의 복수의 뱅크들 전체의 하나 이상의 페이지들에서 스캐터링된다. 그 결과, 특정한 패킷이 사용하는 모든 페이지들 (및 따라서 뱅크들) 의 링크된 리스트는 스위치 내에서 유지되어야 하고, 이어서 이 링크된 리스트는 송신을 위해 패킷 메모리로부터 패킷의 위치를 알아내고 (locate) 패킷을 판독하도록 좌우로 이동 (traverse) 된다.
브로드캐스트 트래픽으로 공지된 타입의 패킷 트래픽에서, 디바이스의 모든 출력 포트들은 동일한 패킷 데이터를 출력하도록 요청받는다. 유사하게, 멀티캐스트 트래픽으로 공지된 타입의 패킷 트래픽에서, 디바이스의 복수의 (그러나 전부는 아님) 출력 포트들이 동일한 패킷 데이터를 출력하도록 요청받는다. 따라서, 이러한 트래픽에 대해 모든 이들 출력 포트들은 패킷 메모리에 동일한 패킷 데이터를 요청할 것이다. 이는 많은 수의 출력 포트들이 거의 동일한 시간에 동일한 데이터를 요청하게 하기 때문에 디바이스에서 퍼포먼스 이슈들을 발생시킬 수 있다. 구체적으로, 이러한 일이 일어날 때, 종종 패킷 메모리의 적은 수의 뱅크들은 모든 요청들에 응대 (serve) 해야 하지만, 다른 뱅크들은 유휴 (idle) 로 남는다. 그 결과, 출력 포트들 중 일부는 데이터를 신속하게 얻지만, 보통 뱅크 당 적은 수의 출력 포트들로 인해, 뱅크들의 작은 서브세트가 출력 포트들로부터의 모든 요청들을 시리얼화해야 하기 때문에, 다른 포트들은 데이터를 획득하기 위해 상대적으로 긴 시간을 대기해야 할 것이다.
데이터를 위한 이러한 대기 시간은 2가지 바람직하지 않은 결과들을 갖는다. 데이터가 패킷의 시작에 대응하면, 전체 패킷의 송신은 지연될 것이다. 이는 포트가 실제로 데이터를 전송할 수 있을 때 데이터를 전송하기 위해 대기하기 때문에 포트의 대역폭의 열화를 암시한다. 데이터가 패킷의 중간에 대응하고 패킷의 데이터의 일부가 이미 송신되었으면, 출력 포트는 요청된 레이트로 송신하는데 실패하고 언더런 에러를 초래한다. 이는 패킷이 에러와 함께 송신되고 수신기는 패킷을 폐기해야 하고, 일부 경우들에서 비용이 드는 패킷의 재송신을 유발하기 때문에, 기술된 퍼포먼스 열화보다 보다 심각하다. 기술된 두번째 경우는 스위치가 컷-쓰루 (cut-thru) 모드에서 작동할 때 가장 일반적이다. 이 모드에서, 패킷을 송신해야 하는 모든 출력 포트들은 전체 패킷이 수신되도록 대기하지 않고 가능한 한 빨리 패킷을 송신하도록 인스트럭팅되기 때문에, 모든 출력 포트들은 거의 동일한 시간에 송신할 것이다.
수신된 패킷들을 하나 이상의 출력 포트들에 선택적으로 출력하기 위한 패킷 메모리 시스템이 제공된다. 패킷 메모리 시스템은 출력 포트들을 제어하기 위한 제어기를 포함한다. 구체적으로, 복수의 포트들로부터 출력되어야 하는 멀티캐스트 또는 브로드캐스트 트래픽의 패킷들에 대해, 제어기는 나머지 포트들은 판독 동작을 수행하지 않고 판독된 패킷 데이터를 단순히 청취할 수 있도록 패킷 메모리로부터의 패킷 데이터를 판독하는 하나 이상의 판독기 포트들을 지정한다.
일 양태는 패킷 메모리 시스템으로 지향되고, 시스템은, 시스템에 의해 입력된 패킷의 패킷 데이터를 저장하기 위한 하나 이상의 메모리 뱅크들을 포함하는 비일시적인 컴퓨터 판독가능 패킷 메모리로서, 메모리 뱅크들 상에 저장될 때 패킷 데이터는 메모리 뱅크들에 맵핑된 하나 이상의 페이지들에 따라 조직되는, 비일시적인 컴퓨터 판독가능 패킷 메모리; 패킷 메모리에 커플링되고, 패킷 메모리로부터 패킷 데이터를 선택적으로 판독하고 시스템으로부터 패킷 데이터를 출력하도록 구성된 복수의 출력 포트들; 및 패킷 데이터를 출력하는 복수의 출력 포트들을 제어하기 위해 복수의 출력 포트들에 커플링된 제어기로서, 패킷 데이터가 복수의 출력 포트들 중 2 이상의 포트들로부터 출력되면, 제어기는, 패킷 데이터가 패킷 메모리로부터 판독되고 2 이상의 포트들 모두로 송신되게 하도록 2 이상의 포트들 모두보다 적은 포트들에 지시하는, 제어기를 포함한다. 일부 실시예들에서, 복수의 출력 포트들 및 제어기는, 패킷 데이터 전체가 수신되기 전에 복수의 출력 포트들 각각이 패킷 데이터를 출력하기 시작하도록, 컷-쓰루 모드에서 동작한다. 일부 실시예들에서, 제어기는, 제어기가 복수의 포트들 중 2 이상의 포트들 모두로 전송한 패킷 데이터 식별자에 기초하여 패킷 메모리로부터 패킷 데이터를 판독한 후, 패킷 데이터를 청취하고 패킷 데이터를 출력하도록 2 이상의 포트들 모두에 지시한다. 일부 실시예들에서, 2 이상의 포트들 모두보다 적은 포트 각각은 패킷 데이터의 상이한 부분이 패킷 메모리로부터 판독되게 한다. 일부 실시예들에서, 2 이상의 포트들 모두보다 적은 포트 각각의 패킷 데이터의 상이한 부분은 패킷 데이터가 페이지들 사이에 분배된 방법에 기초하여 제어기에 의해 결정된다. 일부 실시예들에서, 2 이상의 포트들 모두보다 적은 포트의 수량은 패킷 데이터가 저장되는 페이지들의 수량에 기초하여 제어기에 의해 결정된다. 일부 실시예들에서, 제어기는 2 이상의 포트들 각각의 혼잡 레벨에 기초하여 2 이상의 포트들 모두보다 적은 포트를 선택한다. 일부 실시예들에서, 복수의 출력 포트들 각각은 포트에 의해 출력되도록 할당되지만 포트에 의해 아직 출력되지 않은, 하나 이상의 패킷들을 제어기에 의해 식별하는 리스트를 저장하는 버퍼를 포함하고, 또한 2 이상의 포트들 각각의 혼잡 레벨은 포트의 버퍼의 리스트에 의해 식별된 현재 패킷들의 수량에 기초한다. 일부 실시예들에서, 2 이상의 포트들 모두보다 적은 포트는 모든 패킷 데이터로 하여금 패킷 메모리로부터 판독되게 하는 2 이상의 포트들 중 정확히 하나의 포트이다. 일부 실시예들에서, 2 이상의 포트들 모두보다 적은 포트는 2 이상의 포트들 중 정확히 제 1 포트 및 제 2 포트이고, 또한 제어기는 패킷 데이터의 제 1 부분이 판독되게 하도록 제 1 포트에 지시하고 제 1 부분에 포함되지 않은 패킷 데이터의 나머지가 판독되게 하도록 제 2 포트에 지시한다. 일부 실시예들에서, 제 1 부분은 메모리 뱅크들에 맵핑된 페이지들 중 하나 이상의 제 1 페이지들에 저장되고, 패킷 데이터의 헤더를 포함하고, 또한 패킷 데이터의 나머지는 메모리 뱅크들에 맵핑된 페이지들 중 하나 이상의 제 2 페이지들에 저장되고, 제 1 페이지들 내에 포함되지 않은 패킷 데이터의 나머지를 포함한다.
제 2 양태는 비일시적인 컴퓨터 판독가능 매체 상에 저장되고, 패킷 메모리로부터 패킷의 패킷 데이터를 선택적으로 판독하고 출력하는 복수의 출력 포트들에 커플링된 제어기로 지향되고, 패킷 메모리는 패킷 데이터를 저장하는 하나 이상의 메모리 뱅크들을 갖고, 또한 제어기는, 패킷 데이터가 2 이상의 출력 포트들로부터 출력된다면, 패킷 데이터로 하여금 패킷 메모리로부터 판독되고 2 이상의 포트들 모두로 송신되게 2 이상의 포트들 모두보다 적은 포트들에 지시하도록 구성된다. 일부 실시예들에서, 복수의 출력 포트들 및 제어기는, 패킷 전체가 수신되기 전에 복수의 출력 포트들 각각이 패킷 데이터를 출력하기 시작하도록 컷-쓰루 모드에서 동작한다. 일부 실시예들에서, 제어기는, 제어기가 복수의 포트들 중 2 이상의 포트들 모두로 전송한 패킷 데이터 식별자에 기초하여 패킷 메모리로부터 패킷 데이터를 판독한 후, 패킷 데이터를 청취하고 패킷 데이터를 출력하도록 2 이상의 포트들 모두에 지시하도록 구성된다. 일부 실시예들에서, 2 이상의 포트들 모두보다 적은 포트 각각은 패킷 데이터의 상이한 부분이 패킷 메모리로부터 판독되게 한다. 일부 실시예들에서, 메모리 뱅크들 상에 저장될 때 패킷 데이터는 메모리 뱅크들에 맵핑된 하나 이상의 페이지들에 따라 조직되고, 또한 2 이상의 포트들 모두보다 적은 포트 각각의 패킷 데이터의 상이한 부분은 패킷 데이터가 페이지들 사이에 분배되는 방법에 기초하여 제어기에 의해 결정된다. 일부 실시예들에서, 제어기는 패킷 데이터가 저장되는 페이지들의 수량에 기초하여 2 이상의 포트들 모두보다 적은 포트의 수량을 결정하도록 구성된다. 일부 실시예들에서, 제어기는 2 이상의 포트들 각각의 혼잡 레벨에 기초하여 2 이상의 포트들 모두보다 적은 포트를 선택하도록 구성된다. 일부 실시예들에서, 복수의 출력 포트들 각각은 포트에 의해 출력되도록 할당되지만 포트에 의해 아직 출력되지 않은, 하나 이상의 패킷들을 제어기에 의해 식별하는 리스트를 저장하는 버퍼를 포함하고, 또한 2 이상의 포트들 각각의 혼잡 레벨은 포트의 버퍼의 리스트에 의해 식별된 현재 패킷들의 수량에 기초한다. 일부 실시예들에서, 2 이상의 포트들 모두보다 적은 포트는 모든 패킷 데이터로 하여금 패킷 메모리로부터 판독되게 하는 2 이상의 포트들 중 정확히 하나의 포트이다. 일부 실시예들에서, 2 이상의 포트들 모두보다 적은 포트는 2 이상의 포트들 중 정확히 제 1 포트 및 제 2 포트이고, 또한 제어기는 패킷 데이터의 제 1 부분이 판독되게 제 1 포트에 지시하고 제 1 부분에 포함되지 않은 패킷 데이터의 나머지가 판독되게 제 2 포트에 지시하도록 구성된다. 일부 실시예들에서, 제 1 부분은 메모리 뱅크들에 맵핑된 페이지들 중 하나 이상의 제 1 페이지들에 저장되고, 패킷 데이터의 헤더를 포함하고, 또한 패킷 데이터의 나머지는 메모리 뱅크들에 맵핑된 페이지들 중 하나 이상의 제 2 페이지들에 저장되고, 제 1 페이지들 내에 포함되지 않은 패킷 데이터의 나머지를 포함한다.
제 3 양태는 패킷 메모리 시스템을 동작시키는 방법으로 지향된다. 방법은, 비일시적인 컴퓨터 판독가능 패킷 메모리의 하나 이상의 메모리 뱅크들 상에 패킷의 패킷 데이터를 저장하는 단계로서, 메모리 뱅크들 상에 패킷 데이터를 저장하는 단계는 메모리 뱅크들 상에 저장될 때 메모리 뱅크들에 맵핑된 하나 이상의 페이지들에 따라 패킷 데이터를 조직하는 단계를 포함하는, 패킷 데이터를 메모리 뱅크들 상에 저장하는 단계; 패킷 데이터가 패킷 메모리에 커플링된 복수의 출력 포트들 중 2 이상의 포트들로부터 출력되면, 출력 포트들에 커플링된 제어기를 사용하여, 패킷 데이터가 패킷 메모리로부터 판독되고 2 이상의 출력 포트들 모두로 송신되게 하도록 2 이상의 출력 포트들 모두보다 적은 포트에 지시하는 단계; 및 2 이상의 출력 포트들을 사용하여 2 이상의 출력 포트들 각각의 포트로부터 패킷 데이터를 출력하는 단계를 포함한다. 일부 실시예들에서, 복수의 출력 포트들 및 제어기는, 2 이상의 출력 포트들 각각의 포트에 의해 패킷 데이터를 출력하는 단계가 패킷 전체가 수신되기 전에 패킷 데이터의 적어도 일부를 출력하기 시작하는 단계를 포함하도록, 컷-쓰루 모드에서 동작한다. 일부 실시예들에서, 제어기가 2 이상의 포트들 모두로 전송한, 패킷 데이터 식별자에 기초하여 제어기를 사용하여 패킷 메모리로부터 패킷 데이터가 판독된 후, 패킷 데이터를 청취하고 패킷 데이터를 출력하도록 2 이상의 포트들 모두에 지시하는 단계를 더 포함한다. 일부 실시예들에서, 2 이상의 포트들 모두보다 적은 포트 각각은 패킷 데이터의 상이한 부분이 패킷 메모리로부터 판독되게 한다. 일부 실시예들에서, 패킷 데이터가 페이지들 사이에 분배되는 방법에 기초하여 제어기를 사용하여 2 이상의 포트들 모두보다 적은 포트 각각의 패킷 데이터의 상이한 부분을 결정하는 단계를 더 포함한다. 일부 실시예들에서, 패킷 데이터가 저장되는 페이지들의 수량에 기초하여 제어기를 사용하여 2 이상의 포트들 모두보다 적은 포트의 수량을 결정하는 단계를 더 포함한다. 일부 실시예들에서, 제어기를 사용하여 2 이상의 포트들 각각의 혼잡 레벨에 기초하여 2 이상의 포트들 모두보다 적은 포트를 선택하는 단계를 더 포함한다. 일부 실시예들에서, 복수의 출력 포트들 각각은 포트에 의해 출력되도록 할당되지만 포트에 의해 아직 출력되지 않은, 하나 이상의 패킷들을 제어기에 의해 식별하는 리스트를 저장하는 버퍼를 포함하고, 또한 2 이상의 포트들 각각의 혼잡 레벨은 포트의 버퍼의 리스트에 의해 식별된 현재 패킷들의 수량에 기초한다. 일부 실시예들에서, 2 이상의 포트들 모두보다 적은 포트는 모든 패킷 데이터로 하여금 패킷 메모리로부터 판독되게 하는 2 이상의 포트들 중 정확히 하나의 포트이다. 일부 실시예들에서, 2 이상의 포트들 모두보다 적은 포트는 2 이상의 포트들 중 정확히 제 1 포트 및 제 2 포트이고, 제어기를 사용하여 패킷 데이터의 제 1 부분이 판독되게 하도록 제 1 포트에 지시하고 제 1 부분에 포함되지 않은 패킷 데이터의 나머지가 판독되게 하도록 제 2 포트에 지시하는 단계를 더 포함한다. 일부 실시예들에서, 제 1 부분은 메모리 뱅크들에 맵핑된 페이지들 중 하나 이상의 제 1 페이지들에 저장되고, 패킷 데이터의 헤더를 포함하고, 또한 패킷 데이터의 나머지는 메모리 뱅크들에 맵핑된 페이지들 중 하나 이상의 제 2 페이지들에 저장되고, 제 1 페이지들 내에 포함되지 않은 패킷 데이터의 나머지를 포함한다.
도 1은 일부 실시예들에 따른 패킷 메모리 시스템을 예시한다.
도 2는 일부 실시예에 따른 패킷에 대한 페이지들의 링크 리스트 및 패킷 메모리의 메모리 뱅크들로의 링크 리스트의 예시적인 맵핑을 예시한다.
도 3은 일부 실시예들에 따른 패킷 메모리 시스템에서 언더런을 방지하는 방법을 예시한다.
도 2는 일부 실시예에 따른 패킷에 대한 페이지들의 링크 리스트 및 패킷 메모리의 메모리 뱅크들로의 링크 리스트의 예시적인 맵핑을 예시한다.
도 3은 일부 실시예들에 따른 패킷 메모리 시스템에서 언더런을 방지하는 방법을 예시한다.
이하의 기술에서, 설명을 목적으로 다수의 상세들이 언급된다. 그러나, 당업자는 본 발명이 이들 구체적인 상세들을 사용하지 않고 실시될 수 있다는 것을 인식할 것이다. 따라서, 본 발명은 도시된 실시예들로 제한되도록 의도되지 않고, 단지 본 명세서에 기술된 원리들 및 특징들과 일치하는 가장 넓은 범위를 따르게 된다.
실시예들은 하나 이상의 출력 포트들 상에서 수신된 패킷들을 선택적으로 출력하기 위한 패킷 메모리 시스템으로 지향된다. 패킷 메모리 시스템은 출력 포트들을 제어하기 위한 제어기를 포함한다. 구체적으로, 복수의 포트들로부터 출력되어야 하는 멀티캐스트 또는 브로드캐스트 트래픽의 패킷들에 대해, 제어기는 패킷 메모리로부터 패킷 데이터를 판독하는 하나 이상의 판독기 포트들을 지정하여, 나머지 포트들은 판독 동작을 수행하지 않고 판독된 패킷 데이터를 단순히 청취할 수 있게 된다. 그 결과, 모든 출력 포트들에 의한 패킷 메모리 내의 패킷에 액세스하려는 본질적으로 동시적인 시도가 방지되어 시스템의 효율을 증가시킨다.
도 1은 일부 실시예들에 따른 패킷 프로세싱 디바이스 (102) 에 대한 패킷 메모리 시스템 (100) 을 예시한다. 도 1에 도시된 바와 같이, 패킷 메모리 시스템 (100) 은 패킷 메모리 (104) 및 제어기 (108) 에 커플링된 하나 상의 출력 포트들 (106) 을 포함한다. 패킷 메모리 (104) 는 사이클 각각에 메모리 뱅크들 (110) 로/로부터 데이터가 기록/판독되게 하는 하나 이상의 기록 포트들 (미도시) 및/또는 판독 포트들을 각각 갖는 하나 이상의 메모리 뱅크들 (110) 을 포함한다. 메모리 뱅크들 (110) 은 메모리 뱅크들 (110) 각각이 출력 포트들 (106) 중 하나 또는 복수의 출력 포트들 (106) 또는 모든 출력 포트들 (106) 에 의해 수신된 데이터를 출력할 수 있게 하도록 출력 포트들 (106) 각각에 커플링된다. 출력 포트들 (106) 각각은 포트 버퍼 (116) 를 포함하고 패킷 메모리 액세스 엘리먼트 (112) 의 일부 (예를 들어, 다이렉트 메모리 액세스 블록) 일 수 있고, 패킷 메모리 액세스 엘리먼트 (112) 는 출력 포트들 (106) 각각 및 적어도 하나의 메모리 뱅크들 (110) 에 커플링된 하나 이상의 뱅크 어드레스 엘리먼트들 (114) 을 더 포함할 수 있다. 구체적으로, 패킷 메모리 액세스 엘리먼트 (112) 는 메모리 뱅크들 (110) 각각에 대한 뱅크 어드레스 엘리먼트 (114) 를 포함할 수 있다. 대안적으로, 메모리 뱅크들 (110) 의 수보다 많거나 보다 적은 뱅크 어드레스 엘리먼트들 (114) 이 있을 수 있다. 그 결과, 출력 포트들 (106) 각각은 연관된 뱅크 어드레스 엘리먼트(들) (114) 를 통해 메모리 뱅크들 (110) 각각 및 패킷 메모리 액세스 엘리먼트 (112) 과 통신 (예를 들어, 데이터를 판독) 할 수 있다. 일부 실시예들에서, 뱅크 어드레스 엘리먼트들 (114) 은 뱅크 판독 어드레스 멀티플렉서들 (muxes) 이다. 제어기 (108) 는 패킷의 모든 필요한 수정을 수행할 수 있고, 패킷을 어디로 전송할지 결정할 수 있고, 그리고 모든 필요한 트래픽 관리를 수행할 수 있다. 제어기 (108) 는, 제어기 (108) 가 하나 이상의 출력 포트들 (106) 로 선택적으로 제어 및 다른 타입들의 데이터를 전송할 수 있도록 출력 포트들 (106) 각각에 커플링된다. 또한, 일부 실시예들에서 제어기 (108) 는 하나 이상의 출력 포트들 (106) 의 포트 버퍼 (116) 로부터의 상태 데이터를 모니터링할 수 있고/있거나 피드백 데이터를 수신할 수 있다.
패킷 프로세싱 디바이스 (102) 는 패킷 프로세싱 회로 및/또는 마이크로칩일 수 있다. 예를 들어, 패킷 프로세싱 디바이스 (102) 는 데이터 센터 또는 다른 타입들의 패킷 프로세싱 회로 또는 ASIC (application specific integrated circuit) 에 대한 스위치 마이크로칩 (예를 들어, 랙 스위치) 일 수 있다. 일부 실시예들에서, 패킷 프로세싱 디바이스 (102) 는 패킷들이 프로세싱되는 방식을 조정하도록 프로그래밍/커스터마이징될 수 있는 소프트웨어 규정된 네트워크 프로그램가능 마이크로칩이다. 대안적으로, 패킷 프로세싱 디바이스 (102) 는 기술분야에 공지된 다른 타입들의 패킷 프로세싱 디바이스들일 수 있다. 출력 포트들 (106), 제어기 (108) 및 뱅크 어드레스 엘리먼트들 (114) 은 하드웨어, 소프트웨어, 또는 하드웨어 및 소프트웨어의 조합을 포함할 수 있고, 소프트웨어는 패킷 프로세싱 디바이스 (102) 의 비일시적인 컴퓨터 판독가능 매체 상에 저장된다. 패킷 메모리 (104) 는 TCAM (ternary content-addressable memory) 과 같은 비일시적인 컴퓨터 판독가능 매체를 포함할 수 있다. 대안적으로, 패킷 메모리 (104) 는 기술분야에 공지된 다른 타입들의 메모리 또는 이들의 조합들을 포함할 수 있다. 패킷 메모리 시스템 (100) 및/또는 패킷 프로세싱 디바이스 (102) 는 정상 모드 및 컷-쓰루 모드에서 동작할 수 있다. 정상 모드에서, 시스템/디바이스는 패킷을 출력하기 시작하기 전에 전체 패킷이 수신될 때까지 대기한다. 컷-쓰루 모드에서, 제어기 (108) 및/또는 출력 포트들 (106) 은 수신될 전체 패킷을 대기하지 않고 가능한 한 빨리 패킷을 송신한다.
도 2는 일부 실시예들에 따른 패킷에 대한 페이지들 (202) 의 링크 리스트 및 패킷 메모리 (104) 의 메모리 뱅크들 (110) 로의 페이지들 (202) 의 예시적인 맵핑을 예시한다. 도 2에 도시된 바와 같이, 패킷의 패킷 데이터는 패킷 메모리 (104) 의 메모리 뱅크들 (110) 에 맵핑된 하나 이상의 페이지들 (202) 상에 저장된다. 특히, 페이지들 (202) 각각은 복수의 메모리 뱅크들 (110) 의 하나 이상의 엔트리들을 나타낼 (또는 맵핑될) 수 있다. 그 결과, 패킷 또는 패킷의 일부는 페이지들 (202) 중 하나에 저장되고, 이는 패킷이 페이지에 맵핑된 패킷 메모리 (104) 내에서 메모리 뱅크들 (110) 에 걸쳐 분포된 복수의 비연속적인 위치들에 저장되게 한다. 종종 패킷은 전체 패킷을 저장하기 위해 복수의 페이지들 (202) 을 요구할 것이다. 이 페이지들 (202) 의 리스트는 링크 리스트로 공지되고 패킷이 패킷 메모리 (104) 의 메모리 뱅크들 (110) 상에 저장되는 위치들을 포인팅하는 포인터들의 맵 또는 리스트로서 사용될 수 있다. 일반적으로, 제 1 세트 (202a) 의 하나 이상의 페이지들 (202) 의 링크 리스트는 헤더를 포함할 것이지만, 제 2 세트 (202b) 의 하나 이상의 페이지들 (202) 링크 리스트는 패킷의 바디를 저장할 것이다. 구체적으로, 헤더 페이지들은 블록 프로세스들을 제어하는 헤더 데이터를 포함하고, 바디 페이지들은 일반적으로 패킷 프로세싱 디바이스 (102) 에 의해 변경되지 않는, 패킷의 바디를 포함한다. 그 결과, 페이지들 (202) 은 패킷 각각의 패킷 데이터로 하여금 메모리 뱅크들 (110) 로부터/로 패킷 데이터의 판독 또는 기록이 보다 효율적이도록, 메모리 뱅크들 (110) 에 걸쳐 분포되게 한다.
도 2에 도시되었지만, 헤더 페이지들 (202a) 은 2 개의 메모리 뱅크들 (110) 에 걸쳐 맵핑되고 바디 페이지들 (202b) 은 3 개의 메모리 뱅크들 (110) 에 걸쳐 맵핑되고, 페이지들 (202) 은 각각 보다 많거나 보다 적은 뱅크들에 걸쳐 맵핑될 수 있다. 예를 들어, 단일 메모리 뱅크 (110) 의 비순차적인 엔트리들 또는 복수의 메모리 뱅크들 (110) 중 임의의 수의 메모리 뱅크들의 엔트리들에 맵핑될 수 있다. 대안적으로, 페이지 (202) 는 단일 메모리 뱅크 (110) 의 순차적인 엔트리들에 맵핑될 수 있다. 패킷은 기본적인 형태로 패킷을 저장하는 페이지들 (202) 의 링크 리스트의 제 1 페이지에 대한 포인터가 될 수 있는 연관된 디스크립터 또는 토큰을 갖는다. 이 최초의 포인터를 사용하여, 패킷에 의해 사용된 모든 페이지들은, 후속하는 페이지 각각이 리스트의 다음 페이지 (202) 의 위치에 대한 포인터를 포함하기 때문에, 페이지들 (202) 의 링크 리스트를 좌우로 이동함으로써 사용되는 순서와 동일한 순서로 회수될 수 있다.
동작시, 패킷 프로세싱 디바이스 (102)/패킷 메모리 시스템 (100) 이 컷-쓰루 모드에 있을 때, 제어기 (108) 는 패킷이 출력 포트들 (106) 의 단일 타깃 포트에 의해 출력되도록 정해진 유니캐스트 트래픽 패킷인지 또는 출력 포트들 (106) 의 복수의 타깃 포트들에 의해 출력하도록 정해진 멀티캐스트/브로드캐스트 트래픽 패킷인지 결정한다. 패킷이 멀티캐스트/브로드캐스트 패킷이라고 결정되면, 패킷 메모리 (104) 로부터 패킷의 패킷 데이터를 판독하기 위해 시도하도록 모든 타깃 출력 포트들 (106) 에 지시하는 대신, 제어기 (108) 는 패킷 데이터를 판독하기 위해 시도하도록 타깃 출력 포트들 (106) 의 서브세트만 선택하고 지시한다. 일부 실시예들에서, 서브세트는 단지 단일의 선택된 포트 (106) 가 패킷 메모리 (104) 로부터 모든 패킷 데이터에 액세스하도록 지시되도록 타깃 출력 포트들 (106) 의 단일 포트 (106) 이다. 대안적으로, 서브세트는 복수의 (그러나 전부는 아님) 타깃 출력 포트들 (106) 일 수 있다. 이러한 실시예들에서, 선택된 출력 포트들 (106) 은 각각 모든 포트 (106) 가 요청들을 발행한 후에만, 모든 패킷 데이터가 패킷 메모리 (104) 로부터 판독되도록, 패킷 데이터의 상이한 부분에 액세스하도록 제어기 (108) 에 의해 지시될 수 있다. 특히, 패킷 데이터는 서브세트 각각이 패킷과 연관된 하나 이상의 페이지들 (202) 의 링크 리스트를 할당하도록 페이지들 (202) 의 링크 리스트의 페이지 단위 기준으로 포트들의 서브세트 사이에 분할되고/되거나 할당될 수 있다. 예를 들어, 서브세트가 2 개의 출력 포트들 (106) 이면, 제어기 (108) 는 서브세트의 제 1 포트 (106) 에 패킷의 헤더를 저장하는 페이지들 (202a) 을 할당할 수 있고, 서브세트의 제 2 포트 (106) 에 패킷의 바디 데이터 (또는 나머지) 를 저장하는 페이지들 (202b) 을 할당할 수 있다.
일부 실시예들에서, 제어기 (108) 는 복수의 타깃 출력 포트들 (106) 중 어느 포트가 서브세트에 포함될지 및/또는 서브세트에 포함될 복수의 타깃 출력 포트들 (106) 의 수량을 랜덤하게 또는 라운드 로빈 프로토콜에 따라 선택한다. 대안적으로, 제어기 (108) 는 타깃 출력 포트들 (106) 의 현재 혼잡 레벨에 기초하여 복수의 타깃 출력 포트들 (106) 중 어느 포트가 서브세트에 포함될지 및/또는 얼마나 많은 복수의 타깃 출력 포트들 (106) 이 서브세트에 포함될지를 선택할 수 있다. 예를 들어, 가장 낮은 혼잡 레벨들을 갖는 타깃 출력 포트들 (106) 은 서브세트를 형성하기 위한 판독기 포트들로서 선택된다. 특히, 제어기 (108) 는 현재 트래픽 혼잡 레벨을 나타내는 타깃 출력 포트들 (106) 각각으로부터 피드백을 모니터링, 요청 및/또는 송신할 수 있다. 일부 실시예들에서, 포트 (106) 각각의 혼잡 레벨은, 제어기에 의해 포트에 의해 출력되도록 할당되었지만, 포트 (106) 로부터 출력되어야 하는 패킷 데이터를 나타내는 제어기 (108) 로부터의 지시 메시지들을 저장하는 포트 버퍼들 (116) 에 의해 나타낸 포트에 의해 아직 출력되지 않은 펜딩 패킷들의 수량에 기초한다. 예를 들어, 포트 버퍼들 (116) 은 출력될 패킷들의 식별자들 (예를 들어, 디스크립터들 또는 토큰들) 또는 패킷 데이터는 포트 버퍼 (116) 에 의해 수신되고, 이어서 연관된 패킷 또는 패킷 데이터가 수신되고 포트 (106) 에 의해 출력될 때에만 포트 버퍼 (116) 로부터 제거되는, FIRO (first in first out) 프로토콜에 따라 동작할 수 있다. 따라서, 포트 버퍼 (116) 에 저장된 식별자들의 수량은 포트 (106) 의 현재 백로그 또는 혼잡 레벨을 나타낸다. 대안적으로, 혼잡 레벨은 다른 메트릭들 및/또는 인자들에 기초할 수 있다.
일부 실시예들에서, 제어기 (108) 는 패킷의 사이즈 (예를 들어, 패킷을 저장하는 페이지들의 수, 바이트들의 수), 패킷의 다수의 상이한 타입들의 데이터에 기초하여, 및/또는 타깃 출력 포트들 (106) 의 현재 혼잡 레벨에 기초하여, 판독기 출력 포트들 (106) 의 서브세트로 지정될 (타깃 포트들의) 포트들의 수량을 결정할 수 있다. 예를 들어, 제 1 선택된 포트 (106) 의 혼잡 레벨에 기초하여, 제어기 (108) 는 제 1 포트 (106) 에 할당된 패킷의 페이지들의 수를 제한할 수 있고, 필요한 하나 이상의 부가적인 출력 포트들 (106) 을 결정할 수 있고, 동일한 수의 페이지 수 제한 및/또는 선택된 출력 포트들 (106) 의 부가는 모든 패킷 데이터가 타깃 포트 (106) 로 할당되어 서브세트를 형성할 때까지, 부가적인 포트 (106) 각각에 대해 수행될 수 있다. 즉, 혼잡 레벨이 보다 높을수록, 선택된 타깃 포트 (106) 에 할당될 페이지들의 수 및/또는 패킷 데이터의 수량은 보다 작고, 혼잡 제약들로 인해 모든 데이터가 현재 선택된 출력 포트들 (106) 사이에 할당될 수 없다면, 하나 이상의 출력 포트들 (106) 이 선택된 판독기 출력 포트들 (106) 로서 부가될 수 있다.
일단 타깃 출력 포트들 (106) 의 서브세트가 제어기 (108) 에 의해 결정되면, 제어기 (108) 는 서브세트 각각으로 판독기 메시지를 전송한다. 판독기 메시지는 판독기 식별자, 패킷 식별자 (예를 들어, 디스크립터 또는 토큰), 포트 식별자, 및/또는 패킷 데이터 식별자를 포함한다. 판독기 식별자는, 패킷 데이터 지표 (indicator) 에 의해 나타낸 패킷 메모리 (104) 의 메모리 뱅크들 (110) 의 엔트리들 내의 위치로부터 패킷 데이터 지표에 의해 나타낸 패킷 데이터를 판독하기 위한 판독 액세스 요청을 발행해야 한다고 포트 (106) 에 지시한다. 포트 식별자는 판독기 메시지가 지향되는 포트 (106) 를 식별하고, 따라서 포트 (106) 로 하여금 메시지가 이 포트 (106) 로 의도된 것을 알게 한다. 패킷 식별자는 패킷을 고유하게 식별하고, 패킷 데이터 식별자는, 포트 (106) 가 패킷 메모리 (104) 로부터 판독되도록 지시되는 패킷 데이터 또는 패킷 데이터의 일부를 식별한다. 예를 들어, 패킷 데이터 식별자는, 페이지들에 의해 포인팅된 메모리 뱅크들 (110) 내의 위치들에 기초하여, 선택된 판독기 출력 포트들 (106) 이 식별된 페이지들 상에 저장된 패킷 데이터로 하여금 패킷 메모리 (104) 로부터 판독되게 하는 판독 액세스 메시지들을 발행할 수 있도록 패킷과 연관된 하나 이상의 페이지들 (202) 의 링크 리스트를 식별할 수 있다. 일부 실시예들에서, 포트 식별자는 생략될 수도 있고/있거나 패킷 식별자 및 패킷 데이터 식별자는 매칭될 수 있거나 단일 식별자일 수 있다. 예를 들어, 서브세트가 단지 단일 포트 (106) 이면, 패킷 식별자 자체는 패킷 데이터 (예를 들어, 연관된 페이지들의 링크 리스트 (202) 를 통해) 를 식별하도록 사용될 수 있다. 부가적으로, 모든 타깃 출력 포트들 (106) 이 패킷 데이터가 수신될 때 부착된 패킷 식별자에 기초하여 패킷 데이터를 식별하고 판독할 수 있도록, 패킷 식별자는 모든 액세스 요청들에 부착될 수 있고, 이어서 데이터로서 모든 패킷 데이터가 판독되고 패킷 프로세싱 디바이스 (102) 상의 모든 출력 포트들 (106) 로 송신된다.
제어기 (108) 는 또한 선택된 서브세트 내에 포함되지 않은 타깃 출력 포트들 (106) 각각으로 청취자 메시지들을 전송할 수 있다. 이들 청취자 메시지들은, 패킷 데이터 식별자가 생략될 수 있고 판독기 식별자가 생략될 수 있고/있거나 포트 (106) 가 판독기가 아니라는 것을 나타낼 수 있는 것을 제외하고 판독기 메시지와 유사하고, 대신 단지 청취자 메시지 내에 나타낸 식별자와 매칭하는 부착된 패킷 식별자를 갖는 패킷 데이터에 대한 패킷 메모리 (104) 로부터의 출력을 모니터링/청취해야 한다. 그 결과, 서브세트의 액세스 시도들에 기초하여 패킷 데이터가 패킷 메모리 (104) 로부터 모든 출력 포트들 (106) 로 출력될 때, 선택되지 않은 타깃 출력 포트들 (106) 또는 나머지 타깃 출력 포트들 (106) 은 패킷 메모리 (104) 로부터 패킷 데이터를 판독하도록 시도하지 않을 것이고 대신 단지 패킷 데이터를 청취/모니터링할 것이다.
판독기 메시지들을 수신한 후, 선택된 타깃 출력 포트들 (106) 은 필요한 패킷 데이터를 포함할 때 패킷 데이터 식별자 및/또는 패킷 식별자에 의해 나타낸 메모리 뱅크들 (110) 의 입력시 데이터에 대한 패킷 데이터 요청을 발행한다. 상기 기술된 바와 같이, 이들 판독기 액세스 요청들이 패킷 식별자를 포함할 수 있어서, 패킷 메모리 (104) 로부터 판독될 때, 패킷 데이터가 부착된 패킷 식별자를 가져, 모든 타깃 포트들 (서브세트 및 나머지) 이 데이터에 부착된 패킷 식별자를 수신된 판독기/청취자 메시지의 패킷 식별자에 매칭시킴으로써 판독된 패킷 데이터를 수신하고 출력할 수 있다. 선택된 출력 포트들 (106) 의 서브세트는 제어기 (108) 에 의해 지시된 패킷 데이터를 회수해야 할 때마다 패킷 메모리 (104) 로 많은 판독 액세스 요청들을 발행할 수 있다. 예를 들어, 포트 (106) 각각에 할당된 페이지들에 대해, 포트 (106) 는 할당된 페이지들 중 제 1 페이지에 의해 지시된 패킷 메모리 (104) 내의 제 1 위치에서 시작할 수 있고, 이어서, 포트 (106) 에 할당된 모든 페이지들이 액세스/판독 요청들을 발행할 때까지, 다음 페이지 (202) 의 링크 리스트에 지시된 패킷 메모리 (104) 내의 다음 위치로 진행한다.
이들 요청들은 액세스 엘리먼트 (112) 내부에서 발생할 수 있다. 구체적으로, 요청들은 출력 포트들 (106) 의 서브세트로부터 필요한 패킷 데이터가 저장된 (페이지들 (202) 에 의해 지시된) 뱅크 (110) 와 연관된 뱅크 어드레스 엘리먼트들 (114) 로 송신된다. 이어서 뱅크 어드레스 엘리먼트들 (114) 은, 판독 액세스 요청을 발행한 출력 포트들 (106) 이 이 사이클 동안 연관된 메모리 뱅크 (110) 의 하나 이상의 판독 포트들로의 액세스를 얻도록 중재한다 (arbitrate). 이 중재는 어드레스 엘리먼트 (114) 각각 따라서 메모리 뱅크 (110) 각각에 독립될 수 있고/있거나 독립적으로 일어날 수 있다. 후속하여, 상기 기술된 바와 같이, 액세스된 메모리 뱅크 (110) 의 판독 포트는 판독된 패킷 데이터에 대한 요청의 패킷 식별자를 전파하고 이 판독된 패킷 데이터는 패킷 프로세싱 디바이스 (102) 상의 모든 출력 포트들 (106) 로 송신된다. 따라서, 패킷 데이터 수신 시, 포트 (106) 각각은 패킷 데이터에 부착된 전파된 패킷 식별자를 포트 (106) 에 할당된 패킷 식별자들과 비교할 수 있고, 이들이 매칭한다면, 데이터를 소비하고 출력한다. 그 결과, 출력 포트들 (106) 의 서브세트만이 실제로 패킷 메모리 (104) 로부터의 데이터를 요청함에도 불구하고, 모든 타깃 출력 포트들 (106) 이 멀티캐스트/브로드캐스트 패킷 데이터를 소비하고 제어기 (108) 에 의해 지시된 데이터를 출력할 것이다. 따라서, 패킷 메모리 시스템 (100) 은 멀티캐스트 트래픽에서 메모리 뱅크들 (110) 에 대한 경쟁이 감소되는 장점을 제공하고, 따라서 패킷이 언더런할 확률은 특히 컷-쓰루 모드 동안 제거되거나 최소화된다.
도 3은 일부 실시예들에 따른 패킷 메모리 시스템에서 언더런을 방지하는 방법을 예시한다. 도 3에 도시된 바와 같이, 패킷 프로세싱 디바이스 (102) 는 단계 302에서 패킷 메모리 (104) 의 하나 이상의 메모리 뱅크들 (110) 상에 하나 이상의 패킷들을 저장한다. 상기 기술된 바와 같이, 패킷 각각은 패킷 메모리 (104) 의 복수의 위치들에 맵핑된 하나 이상의 페이지들 (202) 의 링크 리스트에 저장될 수 있다. 제어기 (108) 는 단계 304에서 패킷이 복수의 타깃 출력 포트들 (106) 로부터 출력되어야 하는 멀티캐스트/브로드캐스트 패킷인지를 결정한다. 패킷이 멀티캐스트 패킷이거나 브로드캐스트이면, 제어기 (108) 는 단계 306에서 패킷 메모리 (104) 로부터 패킷 데이터의 전부 또는 일부를 판독하도록 서브세트 각각에 인스트럭팅하는 판독기 지시들을 타깃 출력 포트들 (106) 의 선택된 서브세트로 전송한다. 단계 308에서, 모든 타깃 출력 포트들 (106) 이 패킷 메모리 (104) 로부터 수신시 패킷 데이터를 출력한다. 일부 실시예들에서, 패킷 프로세싱 디바이스 (102) 는 타깃 출력 포트들 (106) 에 의해 패킷 데이터를 출력하는 것이 전체 패킷이 수신되기 전에 패킷 데이터의 적어도 일부를 출력하기 시작하도록 컷-쓰루 모드에 있다. 일부 실시예들에서, 방법은, 패킷이 멀티캐스트 패킷이거나 브로드캐스트이면, 제어기 (108) 가 선택되지 않은 타깃 출력 포트들 (106) 의 나머지로 청취자 지시를 전송하고, 나머지 출력 포트들 (106) 각각이 패킷 데이터가 서브세트에 의해 패킷 메모리 (104) 로부터 판독될 때 패킷 데이터를 청취/모니터링하고 출력하도록 인스트럭팅하는 단계를 더 포함한다. 따라서, 방법은 멀티캐스트/브로드캐스트 패킷 데이터를 위한 패킷 데이터의 메모리 뱅크들 (110) 로 전송된 판독 액세스 트래픽을 감소시키는 장점을 제공한다.
본 명세서에 기술된 패킷 메모리 시스템은 다수의 장점들을 갖는다. 특히, 시스템은 포트들로부터 전송되어야 하는 패킷을 판독하기 위한 패킷 메모리 액세스들의 수를 감소시키고 따라서 뱅크 판독 포트들에 대한 경쟁을 감소시키는 장점을 제공한다. 실제로, 이는 결국 패킷 언더런의 잠재력을 감소시키고 포트 대역폭 퍼포먼스에 도움이 된다. 또한, 패킷 메모리의 대역폭은, 적절한 양의 병렬 데이터 액세스들이 수행될 수 있도록, 복수의, 하지만 전부는 아닌 타깃 포트들이 판독기들로서 지정될 때 증가한다. 특히, 복수의 포트들 사이에서 패킷 데이터의 분할은, 선택된 포트들 모두가 동시에 동일한 뱅크에 액세스해야 하는 경우도 방지하는 것에 도움이 될 수 있다. 또한, 포트들로부터 혼잡 피드백을 활용함으로써, 제어기는, 필요한 포트들의 수량을 결정하는 것에 부가하여 타깃 포트들 사이에서 판독 액세스 부하를 보다 잘 분배하는 이점을 제공할 수 있다. 따라서, 시스템은 다시 패킷 언더런 잠재력을 감소시키고 포트 대역폭 퍼포먼스에 도움이 된다.
본 발명이 다수의 구체적인 상세들을 참조하여 기술되었지만, 당업자는 본 발명이 본 발명의 정신으로부터 벗어나지 않고 다른 특정한 형태들로 구현될 수 있다는 것을 인식할 것이다. 예를 들어, 본 명세서에 기술된 상이한 방법들 및 동작들이 특정한 순서의 단계들을 기술하지만, 다른 순서들뿐만 아니라 하나 이상의 단계들의 생략 및/또는 하나 이상의 새로운 단계들의 부가가 고려된다. 또한, 상기 방법들 및 동작들이 본 명세서에서 개별적으로 기술되었지만, 하나 이상의 방법들 및 동작들은 (전체적으로 또는 부분적으로) 조합될 수 있다. 따라서, 당업자는 본 발명이 상술된 예시적인 상세들로 제한되지 않고, 대신 첨부된 청구항들에 의해 규정된다는 것을 이해할 것이다.
Claims (33)
- 패킷 메모리 시스템에 있어서,
상기 시스템은,
상기 시스템에 의해 입력된 패킷의 패킷 데이터를 저장하기 위한 하나 이상의 메모리 뱅크들을 포함하는 비일시적인 컴퓨터 판독가능 패킷 메모리로서, 상기 메모리 뱅크들 상에 저장될 때 상기 패킷 데이터는 상기 메모리 뱅크들에 맵핑된 하나 이상의 페이지들에 따라 조직되는, 상기 비일시적인 컴퓨터 판독가능 패킷 메모리;
상기 패킷 메모리에 커플링되고, 상기 패킷 메모리로부터 상기 패킷 데이터를 선택적으로 판독하고 상기 시스템으로부터 상기 패킷 데이터를 출력하도록 구성된 복수의 출력 포트들; 및
상기 패킷 데이터를 출력하는 상기 복수의 출력 포트들을 제어하기 위해 상기 복수의 출력 포트들에 커플링된 제어기로서, 상기 패킷 데이터가 상기 복수의 출력 포트들 중 2 이상의 포트들로부터 출력될 것이라면, 상기 제어기는, 상기 패킷 데이터가 상기 패킷 메모리로부터 판독되고 상기 2 이상의 포트들 모두로 송신되게 하도록 상기 2 이상의 포트들 모두보다 적은 포트들에 지시하는, 상기 제어기를 포함하는, 패킷 메모리 시스템. - 제 1 항에 있어서,
상기 복수의 출력 포트들 및 상기 제어기는, 상기 패킷 데이터 전체가 수신되기 전에 상기 복수의 출력 포트들 각각이 상기 패킷 데이터를 출력하기 시작하도록, 컷-쓰루 (cut-thru) 모드에서 동작하는, 패킷 메모리 시스템. - 제 2 항에 있어서,
상기 제어기는, 상기 제어기가 상기 복수의 포트들 중 2 이상의 포트들 모두로 전송한 패킷 데이터 식별자에 기초하여 상기 패킷 메모리로부터 상기 패킷 데이터를 판독한 후, 상기 패킷 데이터를 청취하고 상기 패킷 데이터를 출력하도록 상기 2 이상의 포트들 모두에 지시하는, 패킷 메모리 시스템. - 제 3 항에 있어서,
상기 2 이상의 포트들 모두보다 적은 포트 각각은 상기 패킷 데이터의 상이한 부분이 상기 패킷 메모리로부터 판독되게 하는, 패킷 메모리 시스템. - 제 4 항에 있어서,
상기 2 이상의 포트들 모두보다 적은 상기 포트 각각의 상기 패킷 데이터의 상기 상이한 부분은 상기 패킷 데이터가 상기 페이지들 사이에 분배된 방법에 기초하여 상기 제어기에 의해 결정되는, 패킷 메모리 시스템. - 제 5 항에 있어서,
상기 2 이상의 포트들 모두보다 적은 상기 포트의 수량은 상기 패킷 데이터가 저장되는 상기 페이지들의 수량에 기초하여 상기 제어기에 의해 결정되는, 패킷 메모리 시스템. - 제 6 항에 있어서,
상기 제어기는 상기 2 이상의 포트들 각각의 혼잡 레벨에 기초하여 상기 2 이상의 포트들 모두보다 적은 포트를 선택하는, 패킷 메모리 시스템. - 제 7 항에 있어서,
상기 복수의 출력 포트들 각각은 상기 포트에 의해 출력되도록 할당되지만 상기 포트에 의해 아직 출력되지 않은, 하나 이상의 패킷들을 상기 제어기에 의해 식별하는 리스트를 저장하는 버퍼를 포함하고, 또한 상기 2 이상의 포트들 각각의 상기 혼잡 레벨은 상기 포트의 상기 버퍼의 상기 리스트에 의해 식별된 현재 패킷들의 수량에 기초하는, 패킷 메모리 시스템. - 제 7 항에 있어서,
상기 2 이상의 포트들 모두보다 적은 상기 포트는 상기 모든 패킷 데이터로 하여금 상기 패킷 메모리로부터 판독되게 하는 상기 2 이상의 포트들 중 정확히 하나의 포트인, 패킷 메모리 시스템. - 제 7 항에 있어서,
상기 2 이상의 포트들 모두보다 적은 상기 포트는 상기 2 이상의 포트들 중 정확히 제 1 포트 및 제 2 포트이고, 또한 상기 제어기는 상기 패킷 데이터의 제 1 부분이 판독되게 하도록 상기 제 1 포트에 지시하고 상기 제 1 부분에 포함되지 않은 상기 패킷 데이터의 나머지가 판독되게 하도록 상기 제 2 포트에 지시하는, 패킷 메모리 시스템. - 제 10 항에 있어서,
상기 제 1 부분은 상기 메모리 뱅크들에 맵핑된 상기 페이지들 중 하나 이상의 제 1 페이지들에 저장되고, 상기 패킷 데이터의 헤더를 포함하고, 또한 상기 패킷 데이터의 상기 나머지는 상기 메모리 뱅크들에 맵핑된 상기 페이지들 중 하나 이상의 제 2 페이지들에 저장되고, 상기 제 1 페이지들 내에 포함되지 않은 상기 패킷 데이터의 상기 나머지를 포함하는, 패킷 메모리 시스템. - 패킷 메모리로부터 패킷의 패킷 데이터를 선택적으로 판독하고 출력하는 복수의 출력 포트들에 커플링된 제어기에 있어서, 상기 패킷 메모리는 상기 패킷 데이터를 저장하는 하나 이상의 메모리 뱅크들을 갖고, 또한 상기 제어기는, 상기 패킷 데이터가 2 이상의 상기 출력 포트들로부터 출력될 것이라면, 상기 패킷 데이터로 하여금 상기 패킷 메모리로부터 판독되고 상기 2 이상의 포트들 모두로 송신되게 상기 2 이상의 포트들 모두보다 적은 포트들에 지시하도록 구성되는, 제어기.
- 제 12 항에 있어서,
상기 복수의 출력 포트들 및 상기 제어기는, 상기 패킷 데이터 전체가 수신되기 전에 상기 복수의 출력 포트들 각각이 상기 패킷 데이터를 출력하기 시작하도록 컷-쓰루 모드에서 동작하는, 제어기. - 제 13 항에 있어서,
상기 제어기는, 상기 제어기가 상기 복수의 포트들 중 2 이상의 포트들 모두로 전송한 패킷 데이터 식별자에 기초하여 상기 패킷 메모리로부터 상기 패킷 데이터를 판독한 후, 상기 패킷 데이터를 청취하고 상기 패킷 데이터를 출력하도록 상기 2 이상의 포트들 모두에 지시하도록 구성되는, 제어기. - 제 14 항에 있어서,
상기 2 이상의 포트들 모두보다 적은 포트 각각은 상기 패킷 데이터의 상이한 부분이 상기 패킷 메모리로부터 판독되게 하는, 제어기. - 제 15 항에 있어서,
상기 메모리 뱅크들 상에 저장될 때 상기 패킷 데이터는 상기 메모리 뱅크들에 맵핑된 하나 이상의 페이지들에 따라 조직되고, 또한 상기 2 이상의 포트들 모두보다 적은 상기 포트 각각의 상기 패킷 데이터의 상기 상이한 부분은 상기 패킷 데이터가 상기 페이지들 사이에 분배되는 방법에 기초하여 상기 제어기에 의해 결정되는, 제어기. - 제 16 항에 있어서,
상기 제어기는 상기 패킷 데이터가 저장되는 상기 페이지들의 수량에 기초하여 상기 2 이상의 포트들 모두보다 적은 상기 포트의 수량을 결정하도록 구성되는, 제어기. - 제 17 항에 있어서,
상기 제어기는 상기 2 이상의 포트들 각각의 혼잡 레벨에 기초하여 상기 2 이상의 포트들 모두보다 적은 포트를 선택하도록 구성되는, 제어기. - 제 18 항에 있어서,
상기 복수의 출력 포트들 각각은 상기 포트에 의해 출력되도록 할당되지만 상기 포트에 의해 아직 출력되지 않은, 하나 이상의 패킷들을 상기 제어기에 의해 식별하는 리스트를 저장하는 버퍼를 포함하고, 또한 상기 2 이상의 포트들 각각의 상기 혼잡 레벨은 상기 포트의 상기 버퍼의 상기 리스트에 의해 식별된 현재 패킷들의 수량에 기초하는, 제어기. - 제 18 항에 있어서,
상기 2 이상의 포트들 모두보다 적은 상기 포트는 상기 모든 패킷 데이터로 하여금 상기 패킷 메모리로부터 판독되게 하는 상기 2 이상의 포트들 중 정확히 하나의 포트인, 제어기. - 제 18 항에 있어서,
상기 2 이상의 포트들 모두보다 적은 상기 포트는 상기 2 이상의 포트들 중 정확히 제 1 포트 및 제 2 포트이고, 또한 상기 제어기는 상기 패킷 데이터의 제 1 부분이 판독되게 상기 제 1 포트에 지시하고 상기 제 1 부분에 포함되지 않은 상기 패킷 데이터의 나머지가 판독되게 상기 제 2 포트에 지시하도록 구성되는, 제어기. - 제 21 항에 있어서,
상기 제 1 부분은 상기 메모리 뱅크들에 맵핑된 상기 페이지들 중 하나 이상의 제 1 페이지들에 저장되고, 상기 패킷 데이터의 헤더를 포함하고, 또한 상기 패킷 데이터의 상기 나머지는 상기 메모리 뱅크들에 맵핑된 상기 페이지들 중 하나 이상의 제 2 페이지들에 저장되고, 상기 제 1 페이지들 내에 포함되지 않은 상기 패킷 데이터의 상기 나머지를 포함하는, 제어기. - 패킷 메모리 시스템을 동작시키는 방법에 있어서,
상기 방법은,
비일시적인 컴퓨터 판독가능 패킷 메모리의 하나 이상의 메모리 뱅크들 상에 패킷의 패킷 데이터를 저장하는 단계로서, 상기 메모리 뱅크들 상에 상기 패킷 데이터를 저장하는 단계는 상기 메모리 뱅크들 상에 저장될 때 상기 메모리 뱅크들에 맵핑된 하나 이상의 페이지들에 따라 상기 패킷 데이터를 조직하는 단계를 포함하는, 상기 패킷 데이터를 메모리 뱅크들 상에 저장하는 단계;
상기 패킷 데이터가 상기 패킷 메모리에 커플링된 복수의 출력 포트들 중 2 이상의 포트들로부터 출력될 것이라면, 상기 출력 포트들에 커플링된 제어기를 사용하여, 상기 패킷 데이터가 상기 패킷 메모리로부터 판독되고 상기 2 이상의 출력 포트들 모두로 송신되게 하도록 상기 2 이상의 출력 포트들 모두보다 적은 포트에 지시하는 단계; 및
상기 2 이상의 출력 포트들을 사용하여 상기 2 이상의 출력 포트들 각각의 포트로부터 상기 패킷 데이터를 출력하는 단계를 포함하는, 패킷 메모리 시스템을 동작시키는 방법. - 제 23 항에 있어서,
상기 복수의 출력 포트들 및 상기 제어기는, 상기 2 이상의 출력 포트들 각각의 포트에 의해 상기 패킷 데이터를 출력하는 단계가 상기 패킷 데이터 전체가 수신되기 전에 상기 패킷 데이터의 적어도 일부를 출력하기 시작하는 단계를 포함하도록, 컷-쓰루 모드에서 동작하는, 패킷 메모리 시스템을 동작시키는 방법. - 제 24 항에 있어서,
상기 제어기가 상기 2 이상의 포트들 모두로 전송한, 패킷 데이터 식별자에 기초하여 상기 제어기를 사용하여 상기 패킷 메모리로부터 상기 패킷 데이터가 판독된 후, 상기 패킷 데이터를 청취하고 상기 패킷 데이터를 출력하도록 상기 2 이상의 포트들 모두에 지시하는 단계를 더 포함하는, 패킷 메모리 시스템을 동작시키는 방법. - 제 25 항에 있어서,
상기 2 이상의 포트들 모두보다 적은 포트 각각은 상기 패킷 데이터의 상이한 부분이 상기 패킷 메모리로부터 판독되게 하는, 패킷 메모리 시스템을 동작시키는 방법. - 제 26 항에 있어서,
상기 패킷 데이터가 상기 페이지들 사이에 분배되는 방법에 기초하여 상기 제어기를 사용하여 상기 2 이상의 포트들 모두보다 적은 상기 포트 각각의 상기 패킷 데이터의 상기 상이한 부분을 결정하는 단계를 더 포함하는, 패킷 메모리 시스템을 동작시키는 방법. - 제 27 항에 있어서,
상기 패킷 데이터가 저장되는 상기 페이지들의 수량에 기초하여 상기 제어기를 사용하여 상기 2 이상의 포트들 모두보다 적은 상기 포트의 수량을 결정하는 단계를 더 포함하는, 패킷 메모리 시스템을 동작시키는 방법. - 제 28 항에 있어서,
상기 제어기를 사용하여 상기 2 이상의 포트들 각각의 혼잡 레벨에 기초하여 상기 2 이상의 포트들 모두보다 적은 포트를 선택하는 단계를 더 포함하는, 패킷 메모리 시스템을 동작시키는 방법. - 제 29 항에 있어서,
상기 복수의 출력 포트들 각각은 상기 포트에 의해 출력되도록 할당되지만 상기 포트에 의해 아직 출력되지 않은, 하나 이상의 패킷들을 상기 제어기에 의해 식별하는 리스트를 저장하는 버퍼를 포함하고, 또한 상기 2 이상의 포트들 각각의 상기 혼잡 레벨은 상기 포트의 상기 버퍼의 상기 리스트에 의해 식별된 현재 패킷들의 수량에 기초하는, 패킷 메모리 시스템을 동작시키는 방법. - 제 29 항에 있어서,
상기 2 이상의 포트들 모두보다 적은 상기 포트는 상기 모든 패킷 데이터로 하여금 상기 패킷 메모리로부터 판독되게 하는 상기 2 이상의 포트들 중 정확히 하나의 포트인, 패킷 메모리 시스템을 동작시키는 방법. - 제 29 항에 있어서,
상기 2 이상의 포트들 모두보다 적은 상기 포트는 상기 2 이상의 포트들 중 정확히 제 1 포트 및 제 2 포트이고, 상기 제어기를 사용하여 상기 패킷 데이터의 제 1 부분이 판독되게 하도록 상기 제 1 포트에 지시하고 상기 제 1 부분에 포함되지 않은 상기 패킷 데이터의 나머지가 판독되게 하도록 상기 제 2 포트에 지시하는 단계를 더 포함하는, 패킷 메모리 시스템을 동작시키는 방법. - 제 32 항에 있어서,
상기 제 1 부분은 상기 메모리 뱅크들에 맵핑된 상기 페이지들 중 하나 이상의 제 1 페이지들에 저장되고, 상기 패킷 데이터의 헤더를 포함하고, 또한 상기 패킷 데이터의 상기 나머지는 상기 메모리 뱅크들에 맵핑된 상기 페이지들 중 하나 이상의 제 2 페이지들에 저장되고, 상기 제 1 페이지들 내에 포함되지 않은 상기 패킷 데이터의 상기 나머지를 포함하는, 패킷 메모리 시스템을 동작시키는 방법.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/673,807 US10003551B2 (en) | 2015-03-30 | 2015-03-30 | Packet memory system, method and device for preventing underrun |
US14/673,807 | 2015-03-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20160117232A KR20160117232A (ko) | 2016-10-10 |
KR102524566B1 true KR102524566B1 (ko) | 2023-04-21 |
Family
ID=56937077
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020160036000A KR102524566B1 (ko) | 2015-03-30 | 2016-03-25 | 언더런을 방지하기 위한 패킷 메모리 시스템, 방법, 및 디바이스 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10003551B2 (ko) |
KR (1) | KR102524566B1 (ko) |
CN (1) | CN106027426B (ko) |
DE (1) | DE102016003679A1 (ko) |
FR (1) | FR3034542A1 (ko) |
TW (1) | TW201642140A (ko) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10333848B2 (en) * | 2016-07-01 | 2019-06-25 | Intel Corporation | Technologies for adaptive routing using throughput estimation |
US11599649B2 (en) * | 2020-06-29 | 2023-03-07 | Rockwell Automation Technologies, Inc. | Method and apparatus for managing transmission of secure data packets |
US11606346B2 (en) | 2020-06-29 | 2023-03-14 | Rockwell Automation Technologies, Inc. | Method and apparatus for managing reception of secure data packets |
CN112257104A (zh) * | 2020-10-10 | 2021-01-22 | 北京字跳网络技术有限公司 | 权限控制方法、装置和电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030043742A1 (en) | 2001-08-31 | 2003-03-06 | Marcelo De Maria | Congestion management for packet routers |
US20060104275A1 (en) | 2004-11-17 | 2006-05-18 | Nathan Dohm | System and method for improved multicast performance |
US20070047535A1 (en) | 2005-08-31 | 2007-03-01 | Intel Corporation | Switching device utilizing flow-control management |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5978379A (en) | 1997-01-23 | 1999-11-02 | Gadzoox Networks, Inc. | Fiber channel learning bridge, learning half bridge, and protocol |
WO2000052889A1 (en) | 1999-03-05 | 2000-09-08 | Allayer Technologies Corporation | Packet switching fabric having a segmented ring with token based resource control protocol and output queuing control |
CA2283627C (en) | 1999-09-27 | 2008-08-12 | Nortel Networks Corporation | High-capacity wdm-tdm packet switch |
US7079525B1 (en) | 2000-04-27 | 2006-07-18 | Cisco Technology, Inc. | Network switch having a hybrid switch architecture |
US7068603B2 (en) | 2001-07-06 | 2006-06-27 | Juniper Networks, Inc. | Cross-bar switch |
US7043569B1 (en) | 2001-09-07 | 2006-05-09 | Chou Norman C | Method and system for configuring an interconnect device |
US7289537B1 (en) | 2002-11-01 | 2007-10-30 | Greenfield Networks, Inc. | Single-chip multi-port Ethernet switch |
US7489683B2 (en) * | 2004-09-29 | 2009-02-10 | Intel Corporation | Integrated circuit capable of routing multicast data packets using device vectors |
US20090073873A1 (en) | 2007-09-17 | 2009-03-19 | Integrated Device Technology, Inc. | Multiple path switch and switching algorithms |
US8554851B2 (en) | 2010-09-24 | 2013-10-08 | Intel Corporation | Apparatus, system, and methods for facilitating one-way ordering of messages |
WO2012120527A1 (en) | 2011-03-07 | 2012-09-13 | Tejas Networks Limited | A protection method and system on preplanning duality of paths for a unicast and/or a multicast traffic |
US8630286B2 (en) * | 2011-09-30 | 2014-01-14 | Broadcom Corporation | System and method for improving multicast performance in banked shared memory architectures |
US9195622B1 (en) | 2012-07-11 | 2015-11-24 | Marvell World Trade Ltd. | Multi-port memory that supports multiple simultaneous write operations |
US9148346B2 (en) | 2012-09-05 | 2015-09-29 | Brocade Communications Systems, Inc. | Multiple ring identification and configuration protocol |
US9037670B2 (en) | 2012-09-18 | 2015-05-19 | Cisco Technology, Inc. | Ultra low latency network buffer storage |
US9154441B2 (en) | 2013-01-25 | 2015-10-06 | Broadcom Corporation | Adaptive buffer allocation management |
US9582440B2 (en) | 2013-02-10 | 2017-02-28 | Mellanox Technologies Ltd. | Credit based low-latency arbitration with data transfer |
US9699118B2 (en) * | 2014-04-25 | 2017-07-04 | Avago Technologies General Ip (Singapore) Pte. Ltd. | System for flexible dynamic reassignment of throughput |
-
2015
- 2015-03-30 US US14/673,807 patent/US10003551B2/en active Active
-
2016
- 2016-03-24 DE DE102016003679.6A patent/DE102016003679A1/de active Pending
- 2016-03-25 KR KR1020160036000A patent/KR102524566B1/ko active IP Right Grant
- 2016-03-28 TW TW105109655A patent/TW201642140A/zh unknown
- 2016-03-29 FR FR1652675A patent/FR3034542A1/fr not_active Withdrawn
- 2016-03-30 CN CN201610193288.8A patent/CN106027426B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030043742A1 (en) | 2001-08-31 | 2003-03-06 | Marcelo De Maria | Congestion management for packet routers |
US20060104275A1 (en) | 2004-11-17 | 2006-05-18 | Nathan Dohm | System and method for improved multicast performance |
US20070047535A1 (en) | 2005-08-31 | 2007-03-01 | Intel Corporation | Switching device utilizing flow-control management |
Also Published As
Publication number | Publication date |
---|---|
TW201642140A (zh) | 2016-12-01 |
FR3034542A1 (ko) | 2016-10-07 |
CN106027426B (zh) | 2020-07-07 |
US20160294729A1 (en) | 2016-10-06 |
CN106027426A (zh) | 2016-10-12 |
KR20160117232A (ko) | 2016-10-10 |
DE102016003679A1 (de) | 2016-10-06 |
US10003551B2 (en) | 2018-06-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11916781B2 (en) | System and method for facilitating efficient utilization of an output buffer in a network interface controller (NIC) | |
US7308523B1 (en) | Flow-splitting and buffering PCI express switch to reduce head-of-line blocking | |
KR102524566B1 (ko) | 언더런을 방지하기 위한 패킷 메모리 시스템, 방법, 및 디바이스 | |
US8725873B1 (en) | Multi-server round robin arbiter | |
US9838500B1 (en) | Network device and method for packet processing | |
US9063841B1 (en) | External memory management in a network device | |
US9195621B2 (en) | System and method for assigning memory access transfers between communication channels | |
US11874780B2 (en) | Packet processing system, method and device utilizing a port client chain | |
US20140032808A1 (en) | Integrated circuit having a bus network, and method for the integrated circuit | |
US8116306B2 (en) | Shared memory system | |
US10061513B2 (en) | Packet processing system, method and device utilizing memory sharing | |
US11720279B2 (en) | Apparatus and methods for managing packet transfer across a memory fabric physical layer interface | |
US9612950B2 (en) | Control path subsystem, method and device utilizing memory sharing | |
US10067690B1 (en) | System and methods for flexible data access containers | |
US9922000B2 (en) | Packet buffer with dynamic bypass | |
CN111526091B (zh) | 存储器执行写操作的方法以及存储器 | |
US20160292096A1 (en) | Packet processing system, method and device to optimize packet buffer space | |
CN103401812B (zh) | 基于2组报文处理引擎的报文处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
N231 | Notification of change of applicant | ||
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |