KR20150128828A - 구성가능한 멀티코어 네트워크 프로세서 - Google Patents

구성가능한 멀티코어 네트워크 프로세서 Download PDF

Info

Publication number
KR20150128828A
KR20150128828A KR1020157027586A KR20157027586A KR20150128828A KR 20150128828 A KR20150128828 A KR 20150128828A KR 1020157027586 A KR1020157027586 A KR 1020157027586A KR 20157027586 A KR20157027586 A KR 20157027586A KR 20150128828 A KR20150128828 A KR 20150128828A
Authority
KR
South Korea
Prior art keywords
processing
processing mode
cores
mode
pipeline
Prior art date
Application number
KR1020157027586A
Other languages
English (en)
Other versions
KR101714659B1 (ko
Inventor
이펭 투
Original Assignee
퀄컴 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20150128828A publication Critical patent/KR20150128828A/ko
Application granted granted Critical
Publication of KR101714659B1 publication Critical patent/KR101714659B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/15Interconnection of switching modules
    • H04L49/1515Non-blocking multistage, e.g. Clos
    • H04L49/1546Non-blocking multistage, e.g. Clos using pipelined operation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements

Abstract

네트워크 프로세서는, 데이터 패킷들을 프로세싱하도록 구성되는 복수의 프로세싱 코어들, 및 파이프라인 프로세싱 모드와 병렬 프로세싱 모드 사이에서 프로세싱 코어들을 구성하도록 구성가능한 프로세싱 모드 메커니즘을 포함한다. 프로세싱 모드 메커니즘은, 파이프라인 프로세싱 모드 또는 병렬 프로세싱 모드 중 어느 하나에서 동작하게 프로세싱 코어들을 상호접속시키도록 구성가능한 스위치 엘리먼트들, 또는 패브릭 로직 및 버스를 포함할 수도 있다.

Description

구성가능한 멀티코어 네트워크 프로세서{CONFIGURABLE MULTICORE NETWORK PROCESSOR}
관련 출원(들)에 대한 상호-참조
[0001] 본 출원은, 발명의 명칭이 "CONFIGURABLE MULTICORE NETWORK PROCESSOR"로 2013년 3월 12일자로 출원된 미국 정규출원 일련번호 제 13/797,838호를 우선권으로 주장하며, 상기 정규출원은 그 전체가 본 명세서에 인용에 의해 명백히 포함된다.
[0002] 본 개시는 일반적으로 전자 회로들에 관한 것으로, 더 상세하게는, 파이프라인(pipeline) 프로세싱 모드들과 병렬 프로세싱 모드들 사이에서 구성가능한 다수의 프로세싱 코어들을 갖는 네트워크 프로세서들에 관한 것이다.
[0003] 패킷 교환(packet switched) 네트워크들은 개인들과 조직들 사이에서 정보를 송신하기 위해 광범위하게 사용된다. 패킷 교환 네트워크들에서, 정보의 작은 블록들, 또는 데이터 패킷들이 공통 채널을 통해 송신된다. 더 상세하게는, 정보는 발신지(origin)에서 다수의 데이터 패킷들로 세그먼트화(segment)되고, 어드레스 방식을 사용하는 채널을 통해 목적지로 라우팅(route)된다. 목적지에서, 정보는 데이터 패킷들로부터 재구성된다.
[0004] 네트워크 상의 많은 디바이스들은, 데이터 패킷들을 프로세싱하도록 설계된 네트워크 프로세서를 포함한다. 네트워크 프로세서는, 다수의 프로세싱 코어들을 이용할 수도 있는 소프트웨어 프로그래밍가능 디바이스이다. 프로세싱 코어들은, 네트워크 프로세서에 의해 수신되는 각각의 데이터 패킷이, 데이터 패킷 상의 필요한 프로세싱 전부를 수행하는 프로세싱 코어에 할당되도록, 병렬로 전용될 수도 있다. 대안적으로, 프로세싱 코어들은, 파이프라인에서의 각각의 프로세싱 코어가 데이터 패킷 상의 특정한 서브-태스크(sub-task)를 구동하도록 전용되는 파이프라인 방식으로 전용될 수도 있다. 각각의 구성은 네트워크 애플리케이션들에서 자신 고유의 이점들 및 단점들을 갖는다. 예를 들어, 계층 2 및 계층 3 네트워크 프로토콜들은 파이프라이닝된(pipelined) 프로세싱에 대해 매우 양호하게 적절하지만, DPI(deep packet inspection)와 같은 더 높은 계층 프로토콜들은 병렬 프로세싱에 대해 더 양호하게 적절하다. 따라서, 모든 네트워크 프로토콜들, 예컨대, 모든 계층 네트워크 프로토콜들을 효율적으로 지원하는 단일 솔루션에 대한 요구가 당업계에 존재한다.
네트워크 프로세서가 기재된다. 네트워크 프로세서는, 데이터 패킷들을 프로세싱하도록 구성되는 복수의 프로세싱 코어들, 및 파이프라인 프로세싱 모드와 병렬 프로세싱 모드 사이에서 프로세싱 코어들을 구성하도록 구성가능한 프로세싱 모드 메커니즘을 포함한다. 네트워크 프로세서는 또한, 프로세싱 코어들과 함께 배치(arrange)된 복수의 FIFO(first-in-first-out) 인터페이스들을 포함할 수도 있다. 프로세싱 모드 메커니즘은, 파이프라인 프로세싱 모드 또는 병렬 프로세싱 모드 중 어느 하나에서 동작하게 FIFO 인터페이스들과 프로세싱 코어들을 상호접속시키도록 구성된다. 프로세싱 모드 메커니즘은, 파이프라인 프로세싱 모드 또는 병렬 프로세싱 모드 중 어느 하나에서 동작하게 프로세싱 코어들을 상호접속시키도록 구성가능한 복수의 스위치 엘리먼트들(예를 들어, 스위치들, 멀티플렉서들 등)을 포함할 수도 있다. 프로세싱 모드 메커니즘은 또한, 파이프라인 프로세싱 모드 또는 병렬 프로세싱 모드 중 어느 하나에서 동작하게 프로세싱 코어들을 상호접속시키도록 구성가능한 패브릭(fabric) 로직 및 버스를 포함할 수도 있다.
다른 네트워크 프로세서가 기재된다. 네트워크 프로세서는, 데이터 패킷들을 프로세싱하기 위한 수단, 및 파이프라인 프로세싱 모드와 병렬 프로세싱 모드 사이에서 프로세싱하기 위한 수단을 구성하기 위한 수단을 포함한다. 네트워크 프로세서는, 프로세싱하기 위한 수단과 함께 배치된 복수의 FIFO 인터페이스들을 더 포함할 수도 있다. 구성하기 위한 수단은, 파이프라인 프로세싱 모드 또는 병렬 프로세싱 모드 중 어느 하나에서 동작하게 FIFO 인터페이스들 및 프로세싱하기 위한 수단을 상호접속시키도록 구성된다. 프로세싱하기 위한 수단은, 복수의 프로세싱 코어들을 포함할 수도 있고, 구성하기 위한 수단은, 파이프라인 프로세싱 모드 또는 병렬 프로세싱 모드 중 어느 하나에서 동작하게 프로세싱 코어들을 상호접속시키도록 구성가능한 복수의 스위치 엘리먼트들, 또는 패브릭 로직 및 버스를 포함할 수도 있다.
[0007] 데이터 패킷들을 프로세싱하는 방법이 기재된다. 방법은, 선택된 프로세싱 모드로 복수의 프로세싱 코어들을 구성하는 단계를 포함하며, 선택된 프로세싱 모드는, 파이프라인 프로세싱 모드 및 병렬 프로세싱 모드 중 하나이다. 방법은 또한, 선택된 프로세싱 모드에 따라 데이터 패킷들을 복수의 프로세싱 코어들에 분배하는 단계, 및 구성된 프로세싱 모드에 따라 복수의 프로세싱 코어들 중 하나 또는 그 초과로부터 하나 또는 그 초과의 데이터 패킷들을 수신하는 단계를 포함한다. 복수의 프로세싱 코어들을 구성하는 단계는, 파이프라인 프로세싱 모드 또는 병렬 프로세싱 모드 중 어느 하나에서 동작하게 프로세싱 코어들을 상호접속시키도록 복수의 스위치 엘리먼트들을 구성하는 단계, 또는 파이프라인 프로세싱 모드 또는 병렬 프로세싱 모드 중 어느 하나에서 동작하게 프로세싱 코어들을 상호접속시키도록 패브릭 로직 및 버스를 구성하는 단계를 포함할 수도 있다.
[0008] 컴퓨터 프로그램 물건이 기재된다. 컴퓨터 프로그램 물건은, 네트워크 프로세서에 의해 실행가능한 코드를 포함하는 컴퓨터-판독가능 매체를 포함한다. 네트워크 프로세서는, 복수의 프로세싱 코어들 및 프로세싱 모드 메커니즘을 포함한다. 코드는, 네트워크 프로세서에서 실행되는 경우, 네트워크 프로세서로 하여금, 선택된 프로세싱 모드로 복수의 프로세싱 코어들을 구성하게 한다. 선택된 프로세싱 모드는, 파이프라인 프로세싱 모드 및 병렬 프로세싱 모드 중 하나일 수 있다. 코드는 또한, 네트워크 프로세서로 하여금, 선택된 프로세싱 모드에 따라 데이터 패킷들을 복수의 프로세싱 코어들에 분배하고, 구성된 프로세싱 모드에 따라 복수의 프로세싱 코어들로 중 하나 또는 그 초과로부터 하나 또는 그 초과의 데이터 패킷들을 수신하게 한다.
[0009] 다른 네트워크 프로세서가 기재된다. 네트워크 프로세서는 데이터 패킷들을 프로세싱하도록 구성되는 복수의 프로세싱 코어들을 포함하며, 여기서, 프로세싱 코어들은, 파이프라인 프로세싱 모드와 병렬 프로세싱 모드 사이에서 구성가능하다. 네트워크 프로세서는, 파이프라인 프로세싱 모드 또는 병렬 프로세싱 모드 중 어느 하나에서 동작하게 프로세싱 코어들을 상호접속시키도록 구성되는 복수의 스위치들을 포함할 수도 있다. 네트워크 프로세서는, 메모리, 및 메모리에 대한 프로세싱 코어 액세스를 제공하기 위한 메모리 버스를 포함할 수도 있으며, 여기서, 메모리 버스는, 파이프라인 프로세싱 모드 또는 병렬 프로세싱 모드 중 어느 하나에서 동작하게 프로세싱 코어들을 상호접속시킨다.
[0010] 예시로서 장치들 및 방법들의 다양한 양상들이 도시되고 설명되는 다음의 상세한 설명으로부터 장치들 및 방법들의 다른 양상들이 당업자들에게 용이하게 명백해질 것임이 이해된다. 인식될 바와 같이, 이들 양상들은 다른 형태들 및 상이한 형태들로 구현될 수도 있으며, 이들 양상들의 수 개의 세부사항들은 다양한 다른 세목(respect)들로 변형이 가능하다. 따라서, 도면들 및 상세한 설명은 제한적인 것으로서가 아닌 속성상 예시적인 것으로서 간주되어야 한다.
[0011] 첨부된 도면들을 참조하여 장치들 및 방법들의 다양한 양상들이 제한으로서가 아닌 예로서 상세한 설명에 이제 제시될 것이다.
[0012] 도 1은 원격통신 시스템의 예를 예시하는 개념적 블록도이다.
[0013] 도 2는 구성가능한 멀티코어 네트워크 프로세서의 블록도이다.
[0014] 도 3은 파이프라인 프로세싱 모드에 있는 구성가능한 멀티코어 네트워크 프로세서의 블록도이다.
[0015] 도 4는 병렬 프로세싱 모드에 있는 구성가능한 멀티코어 네트워크 프로세서의 블록도이다.
[0016] 도 5는, 파이프라인 프로세싱 모드와 병렬 프로세싱 모드 사이에서 멀티코어 네트워크 프로세서를 구성하기 위한 프로세싱 모드 메커니즘의 블록도이다.
[0017] 도 6은, 파이프라인 프로세싱 모드와 병렬 프로세싱 모드 사이에서 멀티코어 네트워크 프로세서를 구성하기 위한 다른 프로세싱 모드 메커니즘의 블록도이다.
[0018] 도 7은, 파이프라인 프로세싱 모드와 병렬 프로세싱 모드 사이에서 구성가능한 멀티코어 네트워크 프로세서를 사용하여 데이터 패킷들을 프로세싱하기 위한 방법의 흐름도이다.
[0019] 본 개시의 다양한 양상들이 첨부된 도면들을 참조하여 아래에서 더 완전히 설명될 것이다. 그러나 본 개시는 당업자들에 의해 많은 상이한 형태들로 구현될 수도 있으며, 본 명세서에서 제시된 임의의 특정한 구조 또는 기능으로 제한되는 것으로 해석되지는 않아야 한다. 오히려, 이들 양상들은, 본 개시가 철저하고 완전하며, 당업자들에게 본 개시의 범위를 완전히 전달하기 위해 제공된다. 본 명세서에서의 교시들에 기초하여, 당업자는, 본 개시의 임의의 다른 양상과 독립적으로 구현되든지 또는 그 양상과 결합되든지에 관계없이, 본 개시의 범위는 본 개시의 임의의 양상을 커버하도록 의도됨을 인식해야 한다. 예를 들어, 본 명세서에 기재된 임의의 수의 양상들을 사용하여 장치가 구현될 수도 있거나 방법이 실시될 수도 있다. 부가적으로, 본 개시의 범위는, 본 개시의 다른 양상들에 부가하여 또는 본 개시의 다른 양상들 대신, 다른 구조 및/또는 기능을 사용하여 실시되는 그러한 장치 또는 방법을 커버하도록 의도된다. 본 명세서에 기재된 본 개시의 임의의 양상이 청구항의 하나 또는 그 초과의 엘리먼트들에 의해 구현될 수도 있음이 이해되어야 한다.
[0020] 특정한 양상들이 본 명세서에 설명될 것이지만, 그 양상들의 많은 변경들 및 치환들이 본 개시의 범위 내에 속한다. 바람직한 양상들의 몇몇 이득들 및 이점들이 언급되지만, 본 개시의 범위가 특정한 이득들, 사용들, 또는 목적들로 제한되는 것으로 의도되지 않는다. 오히려, 본 개시의 양상들은, 상이한 회로들, 기술들, 시스템들, 네트워크들, 및 방법들에 광범위하게 적용가능한 것으로 의도되며, 이들 중 몇몇은 도면들 및 다음의 설명에서 예로서 예시된다. 상세한 설명 및 도면들은, 첨부된 청구항들 및 그들의 등가물들에 의해 정의되는 본 개시의 범위를 제한하기 보다는 단지 본 개시의 예시이다.
[0021] 다양한 개념들이 첨부된 도면들을 참조하여 아래에서 더 완전히 설명될 것이다. 그러나 이들 개념들은 당업자들에 의해 많은 상이한 형태들로 구현될 수도 있으며, 본 명세서에서 제시된 임의의 특정한 구조 또는 기능으로 제한되는 것으로 해석되지는 않아야 한다. 오히려, 이들 개념들은, 본 개시가 철저하고 완전하며, 당업자들에게 이들 개념들의 범위를 완전히 전달하기 위해 제공된다. 상세한 설명은 특정한 세부사항들을 포함할 수도 있다. 그러나, 이들 개념들이 그 특정한 세부사항들 없이 실시될 수도 있음이 당업자에게 명백할 것이다. 몇몇 예시들에서, 잘 알려진 구조들 및 컴포넌트들은 본 개시 전반에 걸쳐 제시되는 다양한 개념들을 불명료하게 하는 것을 회피하기 위해 블록도 형태로 도시된다.
[0022] 본 개시 전반에 걸쳐 제시되는 다양한 개념들은 네트워크 엘리먼트에서의 구현에 대해 매우 양호하게 적절하다. 네트워크 엘리먼트(예를 들어, 라우터, 스위치, 브릿지(birdge), 또는 유사한 네트워킹 디바이스)는, 네트워크 상의 다른 장비(예를 들어, 다른 네트워크 엘리먼트들, 엔드 스테이션(end station)들, 또는 유사한 네트워킹 디바이스들)를 통신가능하게 상호접속시키는 임의의 네트워킹 장비를 포함한다.
[0023] 이들 개념들은 하드웨어 플랫폼 상에서 실행되는 소프트웨어 또는 하드웨어로 구현될 수도 있다. 하드웨어 또는 하드웨어 플랫폼은, 범용 프로세서, 디지털 신호 프로세서(DSP), 주문형 집적 회로(ASIC), 필드 프로그래밍가능 게이트 어레이(FPGA) 또는 다른 프로그래밍가능 로직 컴포넌트, 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 컴포넌트들, 또는 이들의 임의의 결합, 또는 본 명세서에 설명된 기능들을 수행하도록 설계된 다른 적절한 컴포넌트일 수도 있다. 범용 프로세서는 마이크로프로세서일 수도 있지만, 대안적으로, 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로제어기, 또는 상태 머신일 수도 있다. 또한, 프로세서는, 컴퓨팅 컴포넌트들의 결합, 예를 들어 DSP 및 마이크로프로세서의 결합, 복수의 마이크로프로세서들, DSP와 결합된 하나 또는 그 초과의 마이크로프로세서들, 또는 임의의 다른 그러한 구성으로서 구현될 수도 있다.
[0024] 소프트웨어는, 소프트웨어, 펌웨어, 미들웨어, 마이크로코드, 하드웨어 디스크립션(description) 언어로 지칭되든지, 또는 이와 다르게 지칭되든지 간에, 명령들, 명령 세트들, 코드, 코드 세그먼트들, 프로그램 코드, 프로그램들, 서브프로그램들, 소프트웨어 모듈들, 애플리케이션들, 소프트웨어 애플리케이션들, 소프트웨어 패키지들, 루틴들, 서브루틴들, 오브젝트들, 실행가능한 것들, 실행 스레드들, 절차들, 함수들 등을 의미하도록 광범위하게 해석되어야 한다. 소프트웨어는 컴퓨터-판독가능 매체 상에 상주할 수도 있다. 컴퓨터-판독가능 매체는, 예로서, 자기 저장 디바이스(예를 들어, 하드 디스크, 플로피 디스크, 자기 스트립), 광학 디스크(예를 들어, 콤팩트 디스크(CD), 디지털 다기능 디스크(digital versatile disk)(DVD)), 스마트 카드, 플래시 메모리 디바이스(예를 들어, 카드, 스틱, 키 드라이브), 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 프로그래밍가능 ROM(PROM), 소거가능한 PROM(EPROM), 전기적으로 소거가능한 PROM(EEPROM), 범용 레지스터, 또는 소프트웨어를 저장하기 위한 임의의 다른 적절한 비-일시적인 매체를 포함할 수도 있다.
[0025] 본 개시는, 파이프라인 프로세싱 모드와 병렬 프로세싱 모드 사이에서 구성가능할 수도 있는 다수의 프로세싱 코어들을 갖는 네트워크 프로세서에 관한 것이다. 파이프라인 프로세싱 모드에서, 데이터 패킷에 대한 소프트웨어 동작은 다수의 소프트웨어 동작들 또는 서브태스크들로 분할되며, 각각의 서브태스크는 별개의 프로세싱 코어 상에서 구동한다. 임의의 하나의 프로세싱 코어에 의해 획득된 데이터 패킷의 개재(intermediate) 프로세싱은, 파이프라인 프로세싱의 다음 스테이지로 전달될 수도 있다. 병렬 프로세싱 모드에서, 각각의 패킷 데이터는 프로세싱 코어에 할당된다. 각각의 프로세싱 코어는, 동일한 소프트웨어를 구동하고, 완료 때까지 데이터 패킷을 프로세싱한다.
[0026] 도 1은 패킷-기반 네트워크(100)의 예를 예시하는 개념적 블록도이다. 네트워크(100)는 하나 또는 그 초과의 네트워크 프로세서들(104)을 사용하여 다수의 네트워크 디바이스들(102)(예를 들어, 컴퓨터들)을 상호접속시킨다. 네트워크(100)는 인터넷과 같은 광역 네트워크(WAN), 이더넷 네트워크와 같은 로컬 영역 네트워크(LAN), 또는 임의의 다른 적절한 네트워크일 수도 있다. 패킷-기반 네트워크(100)는, 전 세계, 국가, 지역, 지방 또는 시설 또는 임의의 다른 적절한 영역을 포함하는 임의의 적절한 영역을 커버(cover)하도록 구성될 수도 있다.
[0027] 네트워크 프로세서(104)는, 스위치, 라우터, 브릿지, 또는 네트워크(100) 상의 다른 장비를 상호접속시키는 임의의 다른 적절한 디바이스일 수도 있다. 네트워크 프로세서(104)는, 네트워크를 통해 데이터 패킷들을 안내(direct)하기 위해 사용되는 하나 또는 그 초과의 검색 테이블들을 포함하는 프로그래밍가능 디바이스로서 구현될 수도 있다. 각각의 검색 테이블은, 하나 또는 그 초과의 플로우 테이블 엔트리(flow table entry)들을 포함한다. 각각의 플로우 엔트리는 데이터 패킷들을 프로세싱하기 위해 사용된다.
[0028] 도 2는, 구성가능한 멀티코어 네트워크 프로세서(200)의 일반적인 블록도이다. 네트워크 프로세서(200)는 제 1 코어 그룹(202) 및 제 2 코어 그룹(204)을 갖는다. 각각의 코어 그룹(202, 204)은, 데이터 패킷들을 프로세싱하도록 구성되는 다수의 프로세싱 코어들을 포함한다. 프로세싱 코어는, 코어에 로컬인 코드를 저장하기 위한 전용 메모리 및 펌웨어 중 하나 또는 그 초과를 포함할 수도 있다. 각각의 코어 그룹(202, 204)은, 프로세싱 코어들과 연관되는 다수의 FIFO 인터페이스들(도시되지 않음)을 또한 포함할 수도 있다.
[0029] 프로세싱 모드 메커니즘(218, 220)은 각각의 코어 그룹(202, 204)과 연관된다. 프로세싱 모드 메커니즘(218, 220)은, 스위치들 및 멀티플렉서들, 또는 패브릭 로직 및 버스 중 하나 또는 그 초과를 포함할 수도 있다. 프로세싱 모드 메커니즘(218, 220)은, 파이프라인 프로세싱 모드와 병렬 프로세싱 모드 사이에서 프로세싱 코어들을 배치하도록 구성가능하다. 파이프라인 어레인지먼트(arrangement) 또는 모드에서, 소프트웨어 태스크는 다수의 서브 태스크들로 분할되고, 각각의 태스크는 별개의 프로세싱 코어 상에서 구동한다. 코어에 의해 획득되는 개재 프로세싱 정보는, 파이프라인 프로세싱에서의 다음 스테이지에 전달될 수도 있다. 병렬 모드에서, 임의의 태스크는 운영 시스템(OS) 스케줄러의 제어에 있는 임의의 코어에서 구동될 수 있다. OS 스케줄러는 다수의 프로세싱 코어들 사이에 로드(load) 밸런스를 제공한다. 대안적으로, 병렬 모드에서, 태스크는 CPU 친화도(affinity) 메커니즘들을 사용하여 특정한 코어에 종속(bind)될 수 있다. 별개의 프로세싱 모드 메커니즘들(218, 220)이 각각의 코어 그룹(202, 204)에 대해 도시되지만, 단일 메커니즘이 코어 그룹들 둘 모두에 대한 프로세싱 코어들을 구성하기 위해 사용될 수도 있다.
[0030] 메모리 아비터(arbiter)(206, 208)는 각각의 코어 그룹과 연관된다. 아비터(206, 208)는, 메모리(210, 212)에 대한 인터페이스로서 기능하며, 메모리에 대한 액세스를 관리한다. 예를 들어, 아비터(206, 208)는, 프로세싱 코어들에 의한 메모리에 대한 액세스를 관리하도록 구성될 수도 있다. 아비터(206, 208)는 메모리에 저장된 커맨드들, 및 연관된 프로그램 명령들 및 데이터가 프로세싱 코어들에 제공되는 시퀀스(sequence)를 결정할 수도 있다. 아비터(206, 208)는 버스를 통한 메모리(210, 212)에 대한 액세스를 승인할 수도 있다.
[0031] 메모리(210, 212)는 멀티코어 네트워크 프로세서(200)의 외부에 있을 수도 있고, 하나 또는 그 초과의 공유된 정적 랜덤 액세스 메모리(SRAM) 뱅크(bank)들 및 터너리 컨텐츠 어드레스가능 메모리(ternary content addressable memory)(TCAM) 뱅크들을 포함할 수도 있다. 메모리(210, 212)는 프로그램 코드, 검색 테이블들, 패킷 데이터, 및 큐(queue) 정보 중 하나 또는 그 초과를 저장할 수도 있다.
[0032] 멀티코어 네트워크 프로세서(200)는 추가로, 디스패처(dispatcher)(214) 및 리어셈블러(reassembler)(216)을 포함한다. 디스패처(214)는, 멀티코어 네트워크 프로세서(200)의 동작 모드에 따라, 스위치 코어로부터 수신되는 데이터 패킷들을 프로세싱 코어들에 분배하도록 구성된다. 리어셈블러(216)는, 프로세싱 코어들로부터 데이터 패킷들을 수신하고, 멀티코어 네트워크 프로세서(200)의 동작 모드에 따라 데이터 패킷들을 어셈블링(assemble) 또는 리오더링(reorder)하도록 구성된다. 리어셈블러(216)는 리오더 모듈로 지칭될 수도 있다.
[0033] 파이프라인 프로세싱 모드:
[0034] 도 3은 파이프라인 프로세싱 모드에서 동작하도록 구성되는 예시적인 멀티코어 네트워크 프로세서(300)의 블록도이다. 예시적인 멀티코어 네트워크 프로세서(300)는, 4개의 프로세싱 코어들을 갖는 제 1 파이프라인(302) 및 4개의 프로세싱 코어들을 갖는 제 2 파이프라인(304)을 포함한다(더 많거나 더 적은 프로세싱 코어들이 파이프라인들(302, 304)에 포함될 수도 있음). 각각의 프로세싱 코어는, 패킷들을 프로세싱 코어들로 이동시키기 위한 입력 FIFO 인터페이스(306) 및 프로세싱 코어 밖으로 패킷들을 이동시키기 위한 출력 FIFO 인터페이스(308)를 갖는다.
[0035] 제 1 프로세싱 코어(310)를 구동하는 펌웨어는, 그 프로세싱 코어와 연관된 입력 FIFO 인터페이스(306)로부터 판독함으로써 유입(incoming) 패킷들을 프로세싱한다. 프로세싱 코어(310)가 유입 패킷의 프로세싱을 완료하는 경우, 코어의 펌웨어는 그 코어와 연관된 출력 FIFO 인터페이스(308) 상에 개재 패킷을 출력한다. "개재 패킷"은, 프로세싱 코어에 대한 패킷 입력의 ― 그 프로세싱 코어에 의한 ― 프로세싱으로부터 초래하는 코어 프로세서에 의한 패킷 출력을 지칭한다. 개재 패킷은 다음 프로세싱 코어의 입력 FIFO 인터페이스(306)에 입력되고, 그 프로세싱 코어의 펌웨어에 따라 프로세싱된다. 개재 패킷들의 프로세싱 및 포워딩(forwarding)은, 파이프라인에서의 마지막 프로세싱 코어에 의해 최종 패킷이 출력될 때까지 계속된다.
[0036] 디스패처(314)는 2개의 파이프라인들(302, 304)로 패킷들을 분배할 수도 있다. 디스패처(314)는 상이한 분배 알고리즘들을 적용할 수도 있다. 라운드-로빈(round-robin) 분배에서, 패킷 디스패처(314)는 패킷들을 택일적으로(alternatively) 분배한다. 제 1 파이프라인(302)에서의 제 1 입력 FIFO 인터페이스(306)가 패킷을 홀딩(hold)하기에 충분하지 않으면, 디스패처(314)는 제 2 파이프라인(304)의 제 1 입력 FIFO 인터페이스(306)에 패킷을 분배할 수도 있다. 파이프라인들(302, 304) 둘 모두의 제 1 입력 FIFO 인터페이스들(306)이 패킷을 홀딩하기에 충분하지 않으면, 디스패처(314)는 패킷들의 추가적인 분배를 지연(stall)시킬 수도 있다. 해시(hash) 기반 분배에서, 패킷 디스패처(314)는 패킷 헤더 필드들 또는 다른 필드들에 기초하여 특정한 알고리즘을 적용하고, 2개의 파이프라인들(302, 304) 중 어느 하나에 대한 인덱스(index)를 획득하기 위해 모듈로(modulo) 동작을 적용한다.
[0037] 디스패처(314)는 또한, 패킷들에 시퀀스 넘버를 할당할 수도 있으며, 리오더 모듈(316)은, 패킷이 파이프라인들로 분배된 것과 동일한 순서로 패킷을 리트리브(retrieve)할 수도 있다. 리오더링 태스크를 용이하게 하기 위해, 시퀀스 넘버는 FIFO에 착신되는 처음의 16-bit 필드일 수도 있다.
[0038] 병렬 프로세싱 모드:
[0039] 도 4는 병렬 프로세싱 모드에서 동작하도록 구성되는 예시적인 멀티코어 네트워크 프로세서(400)의 블록도이다. 예시적인 멀티코어 네트워크 프로세서(400)는 4개의 프로세싱 코어들을 갖는 제 1 프로세서 그룹(402) 및 4개의 프로세싱 코어들을 갖는 제 2 프로세서 그룹(404)을 포함한다(더 많거나 더 적은 프로세싱 코어들이 그룹들(402, 404)에 포함될 수도 있음). 각각의 프로세싱 코어는, 입력 FIFO 인터페이스(406) 및 출력 FIFO 인터페이스(408)를 갖는다. 프로세싱 코어를 구동하는 펌웨어는, 그 프로세싱 코어와 연관된 입력 FIFO 인터페이스(406)로부터 판독함으로써 유입 패킷들을 프로세싱한다. 프로세싱 코어가 유입 패킷의 프로세싱을 완료하는 경우, 코어의 펌웨어는 프로세싱된 패킷을 그 코어와 연관된 출력 FIFO 인터페이스(408) 상에 출력한다. 병렬 프로세싱 모드에서, 각각의 프로세싱 코어는 동일한 소프트웨어를 구동하고 완료 때까지 패킷을 프로세싱할 수도 있다.
[0040] 디스패처(414)는 패킷들을 2개의 프로세서 그룹들(402, 404)에 분배할 수도 있다. 디스패처(414)는 상이한 분배 알고리즘들을 적용할 수도 있다. 라운드-로빈 분배에서, 패킷 디스패처(414)는 패킷들을 택일적으로 분배한다. 제 1 프로세서 그룹(402)에서의 입력 FIFO 인터페이스들(406) 중 하나가 패킷을 홀딩하기에 충분하지 않으면, 디스패처(414)는 제 2 프로세서 그룹(404)의 입력 FIFO 인터페이스들(406) 중 하나에 패킷을 분배할 수도 있다. 그룹들(402, 404) 둘 모두의 입력 FIFO 인터페이스들(406)이 패킷을 홀딩하기에 충분하지 않으면, 디스패처(414)는 패킷들의 추가적인 분배를 지연시킬 수도 있다. 해시 기반 분배에서, 패킷 디스패처(414)는 패킷 헤더 필드들 또는 다른 필드들에 기초하여 특정한 알고리즘을 적용하고, 2개의 그룹들(402, 404) 중 어느 하나에 대한 인덱스를 획득하기 위해 모듈로 동작을 적용한다.
[0041] 디스패처(414)는 또한, 패킷들에 시퀀스 넘버를 할당할 수도 있으며, 리오더 모듈(416)은, 패킷이 파이프라인들로 분배된 것과 동일한 순서로 패킷을 리트리브할 수도 있다. 리오더링 태스크를 용이하게 하기 위해, 시퀀스 넘버는 FIFO에 들어가는 처음의 16-bit 필드일 수도 있다.
[0042] 프로세싱 모드 선택:
[0043] 도 5는 다수의 프로세싱 코어들에 대해 프로세싱 모드의 선택을 제공하는 프로세싱 모드 메커니즘(500)의 블록도이다. 프로세싱 모드 메커니즘(500)은, 파이프라인 프로세싱 모드 또는 병렬 프로세싱 모드 중 어느 하나로 다수의 프로세싱 코어들을 구성하기 위한 수단을 포함한다. 프로세싱 모드 메커니즘(500), 또는 복수의 프로세싱 코어들을 구성하기 위한 수단은, 예를 들어, 스위치들(S0-S5) 및/또는 멀티플렉서들(502a-502c)과 같은 다수의 스위치 엘리먼트들을 포함할 수도 있다. 스위치들(S0-S5) 및 멀티플렉서들(502) 각각은 모드 제어 신호(504)에 의해 제어될 수도 있다.
[0044] 프로세싱 모드 메커니즘(500)은, 모드 제어 신호(504)가, 스위치들(S0-S5)을 개방 상태로 셋팅하고 그리고 멀티플렉서들(502a-502c)이 코어 출력 패킷들을 상부 FIFO 인터페이스들 F1, F3, F5, F7로 안내하게 셋팅하는 경우, 파이프라인 프로세싱 모드로 프로세싱 코어들을 구성한다. 이러한 모드에서, 디스패처(514) 또는 데이터 패킷들을 분배하기 위한 수단은, 패킷을 FIFO 인터페이스 F0에 분배한다.
[0045] 프로세싱 모드 메커니즘(500)의 스위치 엘리먼트들과 함께 프로세싱 코어들 또는 데이터 패킷들을 프로세싱하기 위한 수단은, 분배된 패킷을 다음과 같이 프로세싱할 수도 있다. 분배되노 패킷은 제 1 프로세싱 코어(506a)에 의해 프로세싱된다. 제 1 멀티플렉서(502a)는 그 결과로 생성된 제 1 프로세싱 코어(506a)에 의한 개재 패킷 출력을 수신하고, 그 개재 패킷 출력을 FIFO 인터페이스 F1로 안내한다. 개재 패킷은 제 2 프로세싱 코어(506b)에 의해 프로세싱된다. 제 2 멀티플렉서(502b)는 그 결과로 생성된 제 2 프로세싱 코어(506b)에 의한 개재 패킷 출력을 수신하고, 그 개재 패킷 출력은 FIFO 인터페이스 F3으로 안내한다. 이러한 프로세싱 시퀀스는 제 4 프로세서 코어(506d)가 최종 패킷을 마지막 FIFO 인터페이스 F7에 출력할 때까지 계속된다. 리오더 모듈(516)은 마지막 FIFO 인터페이스 F7로부터 최종 패킷을 수신한다. 파이프라인 모드에서, 하부 FIFO 인터페이스들 F2, F4, F6은 사용되지 않는다.
[0046] 프로세싱 모드 메커니즘(500)은, 모드 제어 신호(504)가, 스위치들(S0-S5)을 폐쇄 상태로 셋팅하고 그리고 멀티플렉서들(502a-502c)이 디스패처(514) 입력 패킷들을 상부 FIFO 인터페이스들 F1, F3, F5로 안내하게 그리고 프로세싱 코어 출력 패킷들을 하부 FIFO 인터페이스들 F2, F4, F6, F7로 안내하게 셋팅하는 경우, 병렬 프로세싱 모드로 프로세싱 코어들을 구성한다. 병렬 프로세싱 모드에서, 상부 및 하부 FIFO 인터페이스들(F0-F7) 둘 모두가 사용된다.
[0047] 병렬 프로세싱 모드에서, 프로세싱 모드 메커니즘의 스위치 엘리먼트들과 함께, 디스패처(514), 또는 데이터 패킷들을 분배하기 위한 수단은, 다음과 같이 패킷들을 프로세싱 코어들에 분배하는데, 즉, 제 1 프로세싱 코어(506a)에 대한 패킷들이 FIFO 인터페이스 F0에 입력되고, 제 2 프로세싱 코어(506b) 대한 패킷들이 제 1 멀티플렉서(502a)를 통해 FIFO 인터페이스 F1에 입력되고, 제 3 프로세싱 코어(506c)에 대한 패킷들이 제 2 멀티플렉서(502b)를 통해 FIFO 인터페이스 F3에 입력되고, 제 4 프로세싱 코어(506d)에 대한 패킷들이 제 3 멀티플렉서(502c)를 통해 FIFO 인터페이스 F5에 입력된다.
[0048] 프로세싱 코어들 각각은 자신의 개별적인 패킷을 프로세싱하며, 멀티플렉서(502a-502c)를 포함하는 프로세싱 모드 메커니즘(500)은, 프로세싱 코어 출력 트래픽을 다음과 같이 안내하는데, 즉, 제 1 프로세싱 코어(506a)의 출력은 FIFO 인터페이스 F2에 입력되고, 제 2 프로세싱 코어(506b)의 출력은 FIFO 인터페이스 F4에 입력되고, 제 3 프로세싱 코어(506c)의 출력은 FIFO 인터페이스 F6에 입력된다. 리오더 모듈(516)은 FIFO 인터페이스들 F2, F4, F6, 및 F7로부터 패킷들을 수집한다.
[0049] 도 6은 다수의 프로세싱 코어들에 대해 프로세싱 모드의 선택을 제공하는 다른 예시적인 프로세싱 모드 메커니즘(600)의 블록도이다. 프로세싱 모드 메커니즘(600)은, 파이프라인 프로세싱 모드 또는 병렬 프로세싱 모드 중 어느 하나로 다수의 프로세싱 코어들을 구성하기 위한 수단을 제공한다. 프로세싱 모드 메커니즘(600), 또는 복수의 프로세싱 코어들을 구성하기 위한 수단은, 메모리(602), 버스(604), 및 패브릭 로직(606)을 포함할 수도 있다.
[0050] 몇몇 실시예들에서, 프로세싱 모드 메커니즘(600)은 다음과 같이 기능할 수도 있다. 각각의 프로세싱 코어(612a-612d) 및 리오더 모듈(616)은 ID와 연관된다. 디스패처(614)에 의해 프로세싱 모드 메커니즘(600)으로 디스패칭(dispatch)된 각각의 패킷은, 코어들 중 하나 또는 리오더 모듈에 대응하는 패킷 헤더 필드 내의 ID를 갖는다. 이러한 ID는, 그 패킷을 전송해야 할 프로세싱 모드 메커니즘(600)의 패브릭 로직(606)을 표시한다. 모드 선택 신호(610)는 프로세싱 코어들(612a-612d), 디스패처(614) 및 리오더 모듈(616) 사이에서 FIFO 인터페이스들의 할당을 제어한다.
[0051] 프로세싱 모드 메커니즘(600)은, 모드 선택 신호(610)를 통해 파이프라인 프로세싱 모드로 프로세싱 코어들을 구성한다. 파이프라인 프로세싱 모드에서, 디스패처(614)는 제 1 프로세싱 코어(612a)에 대응하는 ID를 갖는 패킷을 제 1 패브릭 입력 FIFO(618)에 입력한다. 패킷은, 버스(604)를 거쳐가고(pass through), 패브릭 로직(606)에 의해 수신된다. 패킷 ID에 기초하여, 패브릭 로직(606)은, 버스(604)를 통해 제 1 프로세싱 코어(612a)(코어0)의 FIFO 인터페이스 F0_out에 패킷을 전송한다.
[0052] 제 1 프로세싱 코어(612a)는, 패킷을 프로세싱하고; 패킷 ID를 제 2 프로세싱 코어(612b)(코어1)의 ID에 대응하게 변경하고; 그리고 패킷을 FIFO 인터페이스 F0_in에 입력한다. 패킷은, 버스(604)를 거쳐가고, 패브릭 로직(606)에 의해 수신된다. 패킷 ID에 기초하여, 패브릭 로직(606)은 패킷을 제 2 프로세싱 코어(612b)의 FIFO 인터페이스 F1_out에 전송한다.
[0053] 제 2 프로세싱 코어(612b)는, 패킷을 프로세싱하고; 패킷 ID를 제 3 프로세싱 코어(612c)(코어2)의 ID에 대응하게 변경하고; 그리고 패킷을 FIFO 인터페이스 F1_in에 입력한다. 그 후, 패킷은 패브릭 로직(606)에 의해 수신된다. 패킷 ID에 기초하여, 패브릭 로직(606)은 패킷을 제 3 프로세싱 코어(612c)의 FIFO 인터페이스 F2_out에 전송한다.
[0054] 제 3 프로세싱 코어(612c)는, 패킷을 프로세싱하고; 패킷 ID를 제 4 프로세싱 코어(612d)(코어3)의 ID에 대응하게 변경하고; 그리고 패킷을 FIFO 인터페이스 F2_in에 입력한다. 그 후, 패킷은 패브릭 로직(606)에 의해 수신된다. 패킷 ID에 기초하여, 패브릭 로직(606)은 패킷을 제 4 프로세싱 코어(612d)의 FIFO 인터페이스 F3_out에 전송한다.
[0055] 제 4 프로세싱 코어(612d)는, 패킷을 프로세싱하고; 패킷 ID를 리오더 모듈(616)의 ID에 대응하게 변경하고; 그리고 패킷을 FIFO 인터페이스 F3_in에 입력한다. 그 후, 패킷은 패브릭 로직(606)에 의해 수신된다. 패킷 ID에 기초하여, 패브릭 로직(606)은 제 1 패브릭 출력 FIFO(620)를 통해 리오더 모듈(616)에 패킷을 전송한다.
[0056] 파이프라인 모드에 대해, 디스패처 모듈과 연관된 패브릭 입력 FIFO 인터페이스들(618)의 개수 및 리오더 모듈(616)과 연관된 패브릭 출력 FIFO 인터페이스들(620)의 개수는 파이프라인들의 개수와 등가일 수도 있다. 예를 들어, 방금 설명된 파이프라인에서, 4개의 프로세싱 코어들이 단일 파이프라인을 형성하며, 그에 따라, 오직 단일 패브릭 입력 FIFO 인터페이스(618)만이 디스패처(614)와 연관되고, 단일 패브릭 출력 FIFO 인터페이스(620)가 리오더 모듈(616)과 연관된다. 다른 구성에서, 4개의 프로세싱 코어들(612a-612d)은 각각의 2개의 코어들을 갖는 2개의 별개의 파이프라인들을 정의할 수도 있다. 이러한 경우에서, 디스패처(614)와 연관된 2개의 패브릭 입력 FIFO 인터페이스들(618, 622) 및 리오더 모듈(616)과 연관된 2개의 패브릭 출력 FIFO 인터페이스(620, 624)가 존재할 것이다.
[0057] 프로세싱 모드 메커니즘(600)은, 모드 선택 신호(610)를 통해 병렬 프로세싱 모드로 프로세싱 코어들을 구성한다. 병렬 프로세싱 모드에서, 디스패처(614) 또는 데이터 패킷들을 분배하기 위한 수단은, 제 1 프로세싱 코어(612a)(코어0)에 대응하는 ID를 갖는 제 1 패브릭 입력 FIFO 인터페이스(618)에 제 1 패킷을 입력하고, 제 2 프로세싱 코어(612b)(코어1)에 대응하는 ID를 갖는 제 2 패브릭 입력 FIFO 인터페이스(622)에 제 2 패킷을 입력하고, 제 3 프로세싱 코어(612c)(코어2)에 대응하는 ID를 갖는 제 3 패브릭 입력 FIFO 인터페이스(도시되지 않음)에 제 3 패킷을 입력하고, 그리고 제 4 프로세싱 코어(612d)(코어3)에 대응하는 ID를 갖는 제 4 패브릭 입력 FIFO 인터페이스(도시되지 않음)에 제 4 패킷을 입력한다.
[0058] 패브릭 로직(606)은 버스(604)를 통해 패킷들 각각을 수신한다. 각각의 패킷 ID들에 기초하여, 패브릭 로직(606)은, 각각의 패킷을 대응하는 FIFO 인터페이스 F0_out, F1_out, F2_out, 및 F3_out에 전송한다. 프로세싱 코어들(612a-612d) 각각은, 자신의 각각의 패킷을 프로세싱하고; 자신의 패킷의 패킷 ID를 리오더 모듈(616)의 ID에 대응하게 변경하고; 그리고 자신의 패킷을 자신의 대응하는 FIFO 인터페이스 F0_in, F1_in, F2_in, 및 F3_in에 출력한다. 패브릭 로직(606)은 패킷들을 수신하고 대응하는 패브릭 출력 FIFO 인터페이스(620, 624)를 통해 리오더 모듈(616)에 패킷을 전송한다.
[0059] 병렬 프로세싱 모드에 대해, 디스패처와 연관된 패브릭 입력 FIFO 인터페이스들(618, 622)의 개수 및 리오더 모듈과 연관된 패브릭 출력 FIFO 인터페이스들(620, 624)의 개수는 프로세싱 코어들(612a-612d)의 개수와 등가일 수도 있다. 예를 들어, 방금 설명된 멀티코어 네트워크 프로세서에서, 각각의 타입의 FIFO 인터페이스 중 오직 2개만이 도 6에 예시되지만, 4개의 패브릭 입력 FIFO 인터페이스들 및 4개의 패브릭 출력 FIFO 인터페이스들이 존재한다.
[0060] 도 7은 파이프라인 프로세싱 모드와 병렬 프로세싱 모드 사이에서 구성가능한 네트워크 프로세서를 사용하여 데이터 패킷들을 프로세싱하기 위한 예시적인 방법(700)의 흐름도이다. (702)에서, 네트워크 프로세서는 선택된 프로세싱 모드로 복수의 프로세싱 코어들을 구성한다. 선택된 프로세싱 모드는, 파이프라인 프로세싱 모드 및 병렬 프로세싱 모드 중 하나일 수도 있다. 예를 들어, 네트워크 프로세서는, FIFO 인터페이스들 및 프로세싱 모드 메커니즘 또는 프로세싱 코어를 구성하기 위한 수단을 사용하여, 파이프라인 프로세싱 모드 또는 병렬 프로세싱 모드 중 어느 하나로 프로세싱 코어들을 구성할 수도 있다. 그러한 프로세싱 모드 메커니즘 또는 프로세싱 코어를 구성하기 위한 수단은, 도 5 및 6을 참조하여 본 명세서에 기재된 임의의 대응하는 구조, 엘리먼트들, 및/또는 특성들, 또는 그들의 등가물들일 수도 있다. 그러한 목적을 위해, 네트워크 프로세서는, 파이프라인 프로세싱 모드 또는 병렬 프로세싱 모드 중 어느 하나에서 동작하게 프로세싱 코어들을 상호접속시키도록 복수의 스위치 엘리먼트들(예를 들어, 스위치들 또는 멀티플렉서들)을 구성할 수도 있다. 네트워크 프로세서는 또한, 또는 대안적으로, 파이프라인 프로세싱 모드 또는 병렬 프로세싱 모드 중 어느 하나에서 동작하게 프로세싱 코어들을 상호접속시키도록 패브릭 로직 및 버스를 구성할 수도 있다.
[0062] (704)에서, 네트워크 프로세서는, 디스패처 또는 패킷들을 분배하기 위한 수단을 사용하여, 선택된 프로세싱 모드에 따라 복수의 프로세싱 코어들에 데이터 패킷들을 분배한다. 그러한 디스패처 또는 패킷들을 분배하기 위한 수단은, 도 5 및 6을 참조하여 본 명세서에 기재된 임의의 대응하는 구조, 엘리먼트들 및/또는 특성들, 또는 그들의 등가물들일 수도 있다.
[0063] (706)에서, 네트워크 프로세서는 프로세싱 코어들 또는 프로세싱하기 위한 수단을 사용하여 데이터 패킷들을 프로세싱한다. 패킷들은 알려진 패킷 플로우 기술들에 따라 프로세싱된다. 그러한 프로세싱은, 코어 프로세서와 연관된 플로우 테이블의 플로우 엔트리들에 관하여 데이터 패킷을 매칭(match)하는 단계, 플로우 엔트리 매치(match)가 발견되면 패킷 상에서 명령 세트를 실행하는 단계, 및 패킷을 다른 프로세싱 코어에 전송하는 단계를 포함할 수도 있다. 명령들을 실행하는 단계는, 패킷을 변형하는 단계 및 매치 필드를 업데이트하는 단계, 동작 세트들을 업데이트하는 단계, 및 메타데이터(metadata)를 업데이트하는 단계를 포함할 수도 있다. 파이프라인 프로세싱의 경우에서, 이들 명령들은 패킷을 파이프라인 내의 다른 프로세싱 코어로 안내할 수도 있다. 병렬 프로세싱의 경우에서, 이들 명령들은 패킷을 리오더 모듈로 안내할 수도 있다.
[0064] (708)에서, 네트워크 프로세서는 리오더 모듈 또는 패킷들을 출력하기 위한 수단을 사용하여 데이터 패킷을 출력한다. 그러한 리오더 모듈, 또는 패킷들을 출력하기 위한 수단은, 도 5 및 6을 참조하여 본 명세서에 기재된 임의의 대응하는 구조, 엘리먼트들 및/또는 특성들, 또는 그들의 등가물들일 수도 있다. 파이프라인 프로세싱의 경우에서, 리오더 모듈은 파이프라인 내의 마지막 프로세싱 코어로부터 최종 데이터 패킷을 수신한다. 병렬 프로세싱의 경우에서, 리오더 모듈은, 병렬 어레인지먼트에서의 프로세싱 코어들 각각으로부터 패킷을 수신하고, 패킷들을 원하는 순서로 전송한다.
[0065] 본 개시의 다양한 양상들은 당업자가 본 발명을 실시할 수 있도록 제공된다. 본 개시 전반에 걸쳐 제시되는 예시적인 실시예들에 대한 다양한 변형들은 당업자들에게 용이하게 명백할 것이며, 본 명세서에 기재된 개념들은 다른 자기 저장 디바이스들로 확장될 수도 있다. 따라서, 청구항들은 본 개시의 다양한 양상들로 제한되도록 의도되는 것이 아니라, 청구항들의 문언에 부합하는 최대 범위를 부여하려는 것이다. 당업자들에게 알려졌거나 추후에 알려지게 될 본 개시 전반에 걸쳐 설명된 예시적인 실시예들의 다양한 컴포넌트들에 대한 모든 구조적 및 기능적 균등물들은, 인용에 의해 본 명세서에 명백히 포함되고, 청구항들에 의해 포함되도록 의도된다. 또한, 본 명세서에 개시된 내용은, 청구항들에 이러한 개시 내용이 명시적으로 기재되어 있는지 여부와 관계없이, 공중이 사용하도록 의도되는 것은 아니다. 어떤 청구항 엘리먼트도, 그 엘리먼트가 어구 "하기 위한 수단" 을 사용하여 명백하게 언급되거나, 방법 청구항의 경우에서는 그 엘리먼트가 어구 "하는 단계" 를 사용하여 언급되지 않는한, 35 U.S.C.§112 단락 6의 규정들 하에서 해석되지 않을 것이다.

Claims (27)

  1. 네트워크 프로세서로서,
    데이터 패킷들을 프로세싱하기 위한 복수의 프로세싱 코어들; 및
    파이프라인(pipeline) 프로세싱 모드와 병렬 프로세싱 모드 사이에서 프로세싱 코어들을 구성하도록 구성가능한 프로세싱 모드 메커니즘을 포함하는, 네트워크 프로세서.
  2. 제 1 항에 있어서,
    상기 프로세싱 코어들과 함께 배치(arrange)된 복수의 FIFO(first-in-first-out) 인터페이스들을 더 포함하며,
    상기 프로세싱 모드 메커니즘은, 상기 파이프라인 프로세싱 모드 또는 상기 병렬 프로세싱 모드 중 어느 하나에서 동작하게 상기 FIFO 인터페이스들 및 상기 프로세싱 코어들을 상호접속시키도록 구성되는, 네트워크 프로세서.
  3. 제 1 항에 있어서,
    상기 프로세싱 모드 메커니즘은, 상기 파이프라인 프로세싱 모드 또는 상기 병렬 프로세싱 모드 중 어느 하나에서 동작하게 상기 프로세싱 코어들을 상호접속시키도록 구성가능한 복수의 스위치 엘리먼트들을 포함하는, 네트워크 프로세서.
  4. 제 3 항에 있어서,
    상기 스위치 엘리먼트들은 스위치들 및 멀티플렉서(multiplexer)들 중 하나 또는 둘 모두를 포함하는, 네트워크 프로세서.
  5. 제 1 항에 있어서,
    상기 프로세싱 모드 메커니즘은, 상기 파이프라인 프로세싱 모드 또는 상기 병렬 프로세싱 모드 중 어느 하나에서 동작하게 상기 프로세싱 코어들을 상호접속시키도록 구성가능한 패브릭(logic) 로직 및 버스를 포함하는, 네트워크 프로세서.
  6. 제 1 항에 있어서,
    상기 프로세싱 코어들은 복수의 프로세싱 코어 그룹들로 구성가능하고, 각각의 그룹은, 상기 파이프라인 프로세싱 모드와 상기 병렬 프로세싱 모드 사이에서 그룹 내의 상기 프로세싱 코어들을 구성하도록 구성가능한 연관된 프로세싱 모드 메커니즘을 갖는, 네트워크 프로세서.
  7. 네트워크 프로세서로서,
    데이터 패킷들을 프로세싱하기 위한 수단; 및
    파이프라인 프로세싱 모드와 병렬 프로세싱 모드 사이에서 상기 프로세싱하기 위한 수단을 구성하기 위한 수단을 포함하는, 네트워크 프로세서.
  8. 제 7 항에 있어서,
    상기 프로세싱하기 위한 수단과 함께 배치된 복수의 FIFO(first-in-first-out) 인터페이스들을 더 포함하며,
    상기 구성하기 위한 수단은, 상기 파이프라인 프로세싱 모드 또는 상기 병렬 프로세싱 모드 중 어느 하나에서 동작하게 상기 FIFO 인터페이스들 및 상기 프로세싱하기 위한 수단을 상호접속시키도록 구성되는, 네트워크 프로세서.
  9. 제 7 항에 있어서,
    상기 프로세싱하기 위한 수단은 복수의 프로세싱 코어들을 포함하고; 그리고
    상기 구성하기 위한 수단은, 상기 파이프라인 프로세싱 모드 또는 상기 병렬 프로세싱 모드 중 어느 하나에서 동작하게 상기 프로세싱 코어들을 상호접속시키도록 구성가능한 복수의 스위치 엘리먼트들을 포함하는, 네트워크 프로세서.
  10. 제 9 항에 있어서,
    상기 스위치 엘리먼트들은 스위치들 및 멀티플렉서들 중 하나 또는 둘 모두를 포함하는, 네트워크 프로세서.
  11. 제 7 항에 있어서,
    상기 프로세싱하기 위한 수단은 복수의 프로세싱 코어들을 포함하고; 그리고
    상기 구성하기 위한 수단은, 상기 파이프라인 프로세싱 모드 또는 상기 병렬 프로세싱 모드 중 어느 하나에서 동작하게 상기 프로세싱 코어들을 상호접속시키도록 구성가능한 패브릭 로직 및 버스를 포함하는, 네트워크 프로세서.
  12. 제 7 항에 있어서,
    상기 프로세싱하기 위한 수단은, 복수의 프로세싱 코어 그룹들로 구성가능한 복수의 프로세싱 코어들을 포함하며, 각각의 그룹은, 상기 파이프라인 프로세싱 모드와 상기 병렬 프로세싱 모드 사이에서 그룹 내의 상기 프로세싱 코어들을 구성하기 위한 연관된 수단을 갖는, 네트워크 프로세서.
  13. 데이터 패킷들을 프로세싱하는 방법으로서,
    선택된 프로세싱 모드로 복수의 프로세싱 코어들을 구성하는 단계를 포함하며,
    상기 선택된 프로세싱 모드는 파이프라인 프로세싱 모드 및 병렬 프로세싱 모드 중 하나를 포함하는, 데이터 패킷들을 프로세싱하는 방법.
  14. 제 13 항에 있어서,
    상기 구성하는 단계는, 상기 파이프라인 프로세싱 모드 또는 상기 병렬 프로세싱 모드 중 어느 하나에서 동작하게 상기 프로세싱 코어들을 복수의 FIFO(first-in-first-out) 인터페이스들과 상호접속시키는 단계를 포함하는, 데이터 패킷들을 프로세싱하는 방법.
  15. 제 13 항에 있어서,
    상기 구성하는 단계는, 상기 파이프라인 프로세싱 모드 또는 상기 병렬 프로세싱 모드 중 어느 하나에서 동작하게 상기 프로세싱 코어들을 상호접속시키도록 복수의 스위치 엘리먼트들을 구성하는 단계를 포함하는, 데이터 패킷들을 프로세싱하는 방법.
  16. 제 15 항에 있어서,
    상기 스위치 엘리먼트들은 스위치들 및 멀티플렉서들 중 하나 또는 둘 모두를 포함하는, 데이터 패킷들을 프로세싱하는 방법.
  17. 제 13 항에 있어서,
    상기 구성하는 단계는, 상기 파이프라인 프로세싱 모드 또는 상기 병렬 프로세싱 모드 중 어느 하나에서 동작하게 상기 프로세싱 코어들을 상호접속시키도록 패브릭 로직 및 버스를 구성하는 단계를 포함하는, 데이터 패킷들을 프로세싱하는 방법.
  18. 컴퓨터 프로그램 물건으로서,
    네트워크 프로세서에 의해 실행가능한 코드를 포함하는 컴퓨터-판독가능 매체를 포함하며,
    상기 네트워크 프로세서는 복수의 프로세싱 코어들 및 프로세싱 모드 메커니즘을 포함하고, 상기 코드는, 상기 네트워크 프로세서에서 실행되는 경우, 상기 네트워크 프로세서로 하여금, 선택된 프로세싱 모드로 상기 복수의 프로세싱 코어들을 구성하게 하며, 상기 선택된 프로세싱 모드는, 파이프라인 프로세싱 모드 및 병렬 프로세싱 모드 중 하나를 포함하는, 컴퓨터 프로그램 물건.
  19. 제 18 항에 있어서,
    상기 코드는, 상기 네트워크 프로세서에서 실행되는 경우, 상기 네트워크 프로세서로 하여금, 상기 파이프라인 프로세싱 모드 또는 상기 병렬 프로세싱 모드 중 어느 하나에서 동작하게 상기 프로세싱 코어들과 복수의 FIFO(first-in-first-out) 인터페이스들을 상호접속시킴으로써, 선택된 프로세싱 모드로 상기 복수의 프로세싱 코어들을 구성하게 하는, 컴퓨터 프로그램 물건.
  20. 제 18 항에 있어서,
    상기 코드는, 상기 네트워크 프로세서에서 실행되는 경우, 상기 네트워크 프로세서로 하여금, 상기 파이프라인 프로세싱 모드 또는 상기 병렬 프로세싱 모드 중 어느 하나에서 동작하게 상기 프로세싱 코어들을 상호접속시키도록 복수의 스위치 엘리먼트들을 구성함으로써, 선택된 프로세싱 모드로 상기 복수의 프로세싱 코어들을 구성하게 하는, 컴퓨터 프로그램 물건.
  21. 제 20 항에 있어서,
    상기 스위치 엘리먼트들은 스위치들 및 멀티플렉서들 중 하나 또는 둘 모두를 포함하는, 컴퓨터 프로그램 물건.
  22. 제 18 항에 있어서,
    상기 코드는, 상기 네트워크 프로세서에서 실행되는 경우, 상기 네트워크 프로세서로 하여금, 상기 파이프라인 프로세싱 모드 또는 상기 병렬 프로세싱 모드 중 어느 하나에서 동작하게 상기 프로세싱 코어들을 상호접속시키도록 패브릭 로직 및 버스를 구성함으로써, 선택된 프로세싱 모드로 상기 복수의 프로세싱 코어들을 구성하게 하는, 컴퓨터 프로그램 물건.
  23. 네트워크 프로세서로서,
    데이터 패킷들을 프로세싱하기 위한 복수의 프로세싱 코어들을 포함하며,
    상기 프로세싱 코어들은 파이프라인 프로세싱 모드와 병렬 프로세싱 모드 사이에서 구성가능한, 네트워크 프로세서.
  24. 제 23 항에 있어서,
    상기 파이프라인 프로세싱 모드 또는 상기 병렬 프로세싱 모드 중 어느 하나에서 동작하게 상기 프로세싱 코어들을 상호접속시키도록 구성되는 복수의 스위치들을 더 포함하는, 네트워크 프로세서.
  25. 제 24 항에 있어서,
    상기 복수의 프로세싱 코어들과 함께 배치된 복수의 FIFO(first-in-first-out) 인터페이스들을 더 포함하며,
    상기 스위치 엘리먼트들은 추가로, 상기 파이프라인 프로세싱 모드 또는 상기 병렬 프로세싱 모드 중 어느 하나에서 동작하게 상기 FIFO 인터페이스들 및 상기 프로세싱 코어들을 상소접속시키도록 구성되는, 네트워크 프로세서.
  26. 제 23 항에 있어서,
    메모리, 및 상기 메모리에 대한 액세스를 상기 프로세싱 코어들에 제공하기 위한메모리 버스를 더 포함하며,
    상기 메모리 버스는, 상기 파이프라인 프로세싱 모드 또는 상기 병렬 프로세싱 모드 중 어느 하나에서 동작하게 상기 프로세싱 코어들을 상호접속시키는, 네트워크 프로세서.
  27. 제 23 항에 있어서,
    상기 프로세싱 코어들은, 상기 파이프라인 프로세싱 모드에서 복수의 파이프라인들로 구성가능한, 네트워크 프로세서.
KR1020157027586A 2013-03-12 2014-03-11 구성가능한 멀티코어 네트워크 프로세서 KR101714659B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/797,838 US9430239B2 (en) 2013-03-12 2013-03-12 Configurable multicore network processor
US13/797,838 2013-03-12
PCT/US2014/023395 WO2014164752A2 (en) 2013-03-12 2014-03-11 Configurable multicore network processor

Publications (2)

Publication Number Publication Date
KR20150128828A true KR20150128828A (ko) 2015-11-18
KR101714659B1 KR101714659B1 (ko) 2017-03-09

Family

ID=50628906

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157027586A KR101714659B1 (ko) 2013-03-12 2014-03-11 구성가능한 멀티코어 네트워크 프로세서

Country Status (6)

Country Link
US (1) US9430239B2 (ko)
EP (1) EP2974185A2 (ko)
JP (2) JP6193467B2 (ko)
KR (1) KR101714659B1 (ko)
CN (1) CN105075204B (ko)
WO (1) WO2014164752A2 (ko)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150019702A1 (en) * 2013-07-10 2015-01-15 Brocade Communications Systems, Inc. Flexible flow offload
US9348602B1 (en) 2013-09-03 2016-05-24 Amazon Technologies, Inc. Resource allocation for staged execution pipelining
CN105159779B (zh) * 2015-08-17 2020-03-13 深圳中兴网信科技有限公司 提高多核cpu数据处理性能的方法和系统
EP3433985B1 (en) * 2016-03-23 2021-01-27 Clavister AB Method for traffic shaping using a serial packet processing algorithm and a parallel packet processing algorithm
JP6943942B2 (ja) 2016-03-23 2021-10-06 クラビスター アクティエボラーグ 順次パケット処理アルゴリズム及び並列パケット処理アルゴリズムを用いることによってトラフィックシェーピングを行う方法
US9832072B1 (en) * 2016-05-31 2017-11-28 128 Technology, Inc. Self-configuring computer network router
CN113504985B (zh) * 2016-07-29 2022-10-11 华为技术有限公司 一种任务处理方法以及网络设备
US10719470B2 (en) 2016-09-26 2020-07-21 Wave Computing, Inc. Reconfigurable fabric direct memory access with multiple read or write elements
US10614357B2 (en) * 2017-04-17 2020-04-07 Cerebras Systems Inc. Dataflow triggered tasks for accelerated deep learning
WO2018229745A1 (en) * 2017-06-16 2018-12-20 Drivenets Ltd. Parallel information processing on multi-core computing platforms
US11165720B2 (en) * 2017-12-19 2021-11-02 Xilinx, Inc. Network interface device
JP6977621B2 (ja) * 2018-03-02 2021-12-08 日本電信電話株式会社 制御装置、及び制御方法
CN109918043B (zh) * 2019-03-04 2020-12-08 上海熠知电子科技有限公司 一种基于虚拟通道的运算单元共享方法和系统
KR20200112439A (ko) * 2019-03-22 2020-10-05 삼성전자주식회사 멀티 코어를 포함하는 전자 장치 및 이의 패킷 처리를 위한 방법
US10826801B1 (en) 2019-07-31 2020-11-03 Bank Of America Corporation Multi-level data channel and inspection architectures
US11115310B2 (en) * 2019-08-06 2021-09-07 Bank Of America Corporation Multi-level data channel and inspection architectures having data pipes in parallel connections
US11470046B2 (en) 2019-08-26 2022-10-11 Bank Of America Corporation Multi-level data channel and inspection architecture including security-level-based filters for diverting network traffic
CN111884948B (zh) * 2020-07-09 2022-08-12 烽火通信科技股份有限公司 一种流水线调度方法与装置
CN113986813B (zh) * 2021-09-18 2023-08-04 苏州浪潮智能科技有限公司 片上网络结构构建及使用的方法、系统、设备和存储介质
CN115185878A (zh) * 2022-05-24 2022-10-14 中科驭数(北京)科技有限公司 一种多核分组网络处理器架构及任务调度方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6128720A (en) * 1994-12-29 2000-10-03 International Business Machines Corporation Distributed processing array with component processors performing customized interpretation of instructions
KR20060120289A (ko) * 2004-03-10 2006-11-24 퀄컴 인코포레이티드 고 데이터 레이트 인터페이스 장치 및 방법
KR20070058839A (ko) * 2005-12-05 2007-06-11 주식회사 텔레칩스 디블록킹 필터
US20090285228A1 (en) * 2008-05-19 2009-11-19 Rohati Systems, Inc. Multi-stage multi-core processing of network packets

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5960683A (ja) * 1982-09-30 1984-04-06 Toshiba Corp アレイプロセッサ装置
US4811210A (en) * 1985-11-27 1989-03-07 Texas Instruments Incorporated A plurality of optical crossbar switches and exchange switches for parallel processor computer
JPH02284277A (ja) * 1989-04-26 1990-11-21 Mitsubishi Electric Corp グラフィック表示装置
US6272616B1 (en) 1998-06-17 2001-08-07 Agere Systems Guardian Corp. Method and apparatus for executing multiple instruction streams in a digital processor with multiple data paths
JP2000295613A (ja) * 1999-04-09 2000-10-20 Nippon Telegr & Teleph Corp <Ntt> 再構成可能なハードウェアを用いた画像符号化方法,画像符号化装置および画像符号化のためのプログラム記録媒体
US20020107903A1 (en) 2000-11-07 2002-08-08 Richter Roger K. Methods and systems for the order serialization of information in a network processing environment
US6883084B1 (en) * 2001-07-25 2005-04-19 University Of New Mexico Reconfigurable data path processor
US7420392B2 (en) * 2001-09-28 2008-09-02 Xilinx, Inc. Programmable gate array and embedded circuitry initialization and processing
US6781407B2 (en) * 2002-01-09 2004-08-24 Xilinx, Inc. FPGA and embedded circuitry initialization and processing
US6789167B2 (en) 2002-03-06 2004-09-07 Hewlett-Packard Development Company, L.P. Method and apparatus for multi-core processor integrated circuit having functional elements configurable as core elements and as system device elements
US20110238948A1 (en) 2002-08-07 2011-09-29 Martin Vorbach Method and device for coupling a data processing unit and a data processing array
AU2003252054B2 (en) * 2002-08-24 2008-09-25 Cisco Technology, Inc. Packet processing engine
US7340585B1 (en) * 2002-08-27 2008-03-04 Xilinx, Inc. Method and system for fast linked processor in a system on a chip (SoC)
US7334086B2 (en) 2002-10-08 2008-02-19 Rmi Corporation Advanced processor with system on a chip interconnect technology
US20060047849A1 (en) * 2004-06-30 2006-03-02 Mukherjee Shubhendu S Apparatus and method for packet coalescing within interconnection network routers
JP4546775B2 (ja) * 2004-06-30 2010-09-15 富士通株式会社 時分割多重処理可能なリコンフィギュラブル回路
US7738385B2 (en) 2004-11-30 2010-06-15 Broadcom Corporation Mirroring of data in a network device
JP4878487B2 (ja) * 2006-03-30 2012-02-15 キヤノン株式会社 情報配信装置、情報配信システム、情報処理方法、およびプログラム
JP5354427B2 (ja) * 2006-06-28 2013-11-27 アクロニクス セミコンダクター コーポレイション 集積回路のための再構成可能論理ファブリックおよび再構成可能論理ファブリックを構成するためのシステムおよび方法
US8099583B2 (en) * 2006-08-23 2012-01-17 Axis Semiconductor, Inc. Method of and apparatus and architecture for real time signal processing by switch-controlled programmable processor configuring and flexible pipeline and parallel processing
US20090128189A1 (en) * 2007-11-19 2009-05-21 Raminda Udaya Madurawe Three dimensional programmable devices
WO2012093335A1 (en) 2011-01-06 2012-07-12 Marvell Israel (M.I.S.L) Ltd. Network device with a programmable core
US9449257B2 (en) * 2012-12-04 2016-09-20 Institute Of Semiconductors, Chinese Academy Of Sciences Dynamically reconstructable multistage parallel single instruction multiple data array processing system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6128720A (en) * 1994-12-29 2000-10-03 International Business Machines Corporation Distributed processing array with component processors performing customized interpretation of instructions
KR20060120289A (ko) * 2004-03-10 2006-11-24 퀄컴 인코포레이티드 고 데이터 레이트 인터페이스 장치 및 방법
KR20070058839A (ko) * 2005-12-05 2007-06-11 주식회사 텔레칩스 디블록킹 필터
US20090285228A1 (en) * 2008-05-19 2009-11-19 Rohati Systems, Inc. Multi-stage multi-core processing of network packets

Also Published As

Publication number Publication date
KR101714659B1 (ko) 2017-03-09
JP6193467B2 (ja) 2017-09-06
CN105075204A (zh) 2015-11-18
CN105075204B (zh) 2018-03-16
US9430239B2 (en) 2016-08-30
EP2974185A2 (en) 2016-01-20
JP2017225166A (ja) 2017-12-21
WO2014164752A3 (en) 2014-12-24
US20140281385A1 (en) 2014-09-18
JP2016516352A (ja) 2016-06-02
WO2014164752A2 (en) 2014-10-09

Similar Documents

Publication Publication Date Title
KR101714659B1 (ko) 구성가능한 멀티코어 네트워크 프로세서
US9898356B2 (en) Packet processing on a multi-core processor
Mehraghdam et al. Specifying and placing chains of virtual network functions
EP3001616B1 (en) Techniques for routing service chain flow packets between virtual machines
CN104662862B (zh) 可扩展低延迟多协议网络设备
US9639403B2 (en) Receive-side scaling in a computer system using sub-queues assigned to processing cores
CN108363615A (zh) 用于可重构处理系统的任务分配方法和系统
US8295292B2 (en) High performance hardware linked list processors
US9031077B2 (en) Systems, methods, and computer program products providing a data unit sequencing queue
US10757039B2 (en) Apparatus and method for routing data in a switch
US9083641B2 (en) Method and apparatus for improving packet processing performance using multiple contexts
US11294841B1 (en) Dynamically configurable pipeline
US9164771B2 (en) Method for thread reduction in a multi-thread packet processor
US20160036733A1 (en) Packet queue depth sorting scheme for switch fabric
US20170046306A1 (en) Data processing method, processor, and data processing device
US10326711B2 (en) Apparatus and method for using multiple multi-drop buses
US10656967B1 (en) Actor and thread message dispatching
US20050190795A1 (en) Method and allocation device for allocating pending requests for data packet transmission at a number of inputs to a number of outputs of a packet switching device in successive time slots
US8072882B1 (en) Method and apparatus for a graceful flow control mechanism in a TDM-based packet processing architecture
CN104978345B (zh) 一种基于MapReduce的数据处理方法和装置
Tang et al. Constructing sub-exponentially large optical priority queues with switches and fiber delay lines
WO2024099533A1 (en) Method and apparatus of a benes network reduction
JP2010199643A (ja) パケット処理装置、該処理装置に用いられるパケット処理順序制御方法及びパケット処理順序制御プログラム
CN109802896A (zh) 调度数据的方法和交换设备

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant