KR20030007447A - 내부 프로세서 메모리 공간을 이용한 고속 데이터 처리 - Google Patents

내부 프로세서 메모리 공간을 이용한 고속 데이터 처리 Download PDF

Info

Publication number
KR20030007447A
KR20030007447A KR1020027011590A KR20027011590A KR20030007447A KR 20030007447 A KR20030007447 A KR 20030007447A KR 1020027011590 A KR1020027011590 A KR 1020027011590A KR 20027011590 A KR20027011590 A KR 20027011590A KR 20030007447 A KR20030007447 A KR 20030007447A
Authority
KR
South Korea
Prior art keywords
processor
packet
register file
processing
instruction
Prior art date
Application number
KR1020027011590A
Other languages
English (en)
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 KR20030007447A publication Critical patent/KR20030007447A/ko

Links

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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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 or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9042Separate storage for different parts of the packet, e.g. header and payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9084Reactions to storage capacity overflow
    • H04L49/9089Reactions to storage capacity overflow replacing packets in a storage arrangement, e.g. pushout
    • H04L49/9094Arrangements for simultaneous transmit and receive, e.g. simultaneous reading/writing from/to the storage element
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

현저한 성능 개선은 프로세서에 의해 실행된 명령 카운트를 감소시키기 위해 내부 레지스터 파일내의 프로세서의 동작을 확인함으로써 데이터 처리 시스템내에서 인식될 수 있다. 내부 레지스터 파일 내에 맞추기에 충분하게 작은 데이타는 내부 전체 레지스터 파일에 전송될 수 있으며, 실행 결과는 프로세서와 관계없는 직접 메모리 액세스를 이용하여 그것으로부터 제거될 수 있으며, 프로세서를 가능하게 함으로써 외부 저장 데이타를 처리하기 위해 로드 저장 명령어의 실행을 피한다. 또한, 데이타 및 처리 활동의 결과는 내부 레지스터 파일 내의 모든 프로세서에 의해 액세스 및 처리된다. 다수의 프로세서의 표준과 그들의 명령어 세트가 결합된 명령 카운트의 감소는, 높은 확장가능성, 처리 복잡성 및 비용 레벨에서 높은-실행 대칭 멀티-처리 시스템을 가능하게 한다.

Description

내부 프로세서 메모리 공간을 이용한 고속 데이터 처리{High-speed Data Processing Using Internal Processor Mermory Space}
데이터 처리는 전형적으로 메모리로부터 데이터를 가져오고, 데이터를 처리하고, 처리활동의 결과를 다시 메모리에 저장하는 과정을 포함한다. 이러한 데이터 처리 활동을 지원하는 하드웨어 구조는 일반적으로 정보의 흐름을 제어하고 정보처리시스템의 개별적인 하드웨어 유니트들을 제어한다. 이러한 하드웨어 유니트의 하나로서 프로세서 또는 프로세서 엔진을 들 수 있는데, 이는 수식 및 논리연산 처리 회로, 범용 및 특수목적 레지스터들,프로세서 제어 또는 시퀀싱 로직, 및 이들 요소간을 상호접속하는 데이터 경로를 포함한다. 몇몇 구현예에서, 프로세서는 맞춤-설계 집적 회로로서 구현되거나 ASIC으로 구현된 독립형 중앙처리유니트(CPU)로서 구성될 수 있다. 프로세서는 명령어 집합들에 의해 정의된 연산들에서 이용하기 위한 내부 레지스터를 구비한다. 명령어들은 일반적으로 명령어 메모리에 저장되고 프로세서상에서 이용가능한 일단의 하드웨어기능들을 지정한다.
이들 기능을 구현할 때, 프로세서는 일반적으로 프로세서의 외부에 위치한메모리로부터 "일시적인(transient)" 데이터를 가져오고, "로드(load)" 명령어를 실행시킴으로써 내부 레지스터에 데이터의 일부를 순차적으로 또는 랜덤하게 로드하고, 명령어에 따라 데이터를 처리한 후에, 처리된 데이터를 "저장(store)" 명령어를 이용하여 다시 메모리에 저장한다. 일시적 데이터를 로딩하고 내부 레지스터의 실행 결과를 제거하는 것에 부가하여, 로드 및 저장 명령어는 일시적 데이터의 실제 처리중에 처리 활동을 완성하기 위해 요구되는 부가적인 정보를 액세스하기 위해(예를 들면, 상태 및 명령 레지스터의 액세스하기 위해) 또한 자주 이용된다. 외부 메모리로에 대한 빈번한 로드/저장 액세스는 프로세서의 실행 능력이 그의 외부 인터페이스 능력보다는 실질적으로 빠르다는 점에서 일반적으로 비효율적이다. 결과적으로, 프로세서는 그의 내부 레지스터 파일에 액세스된 데이터가 로딩되는 동안에 자주 유휴 상태로 된다.
이러한 비효율성은 장치의 전체적인 데이터 처리 능력을 제한하고, 몇몇 데이터가 전송되지 않고 포기되지 않는다면, 네트워크 자체의 최대 데이터 전송률을 제한하기 하기 때문에, 특히 통신 시스템내에서 작동하는 장치들에서 제한적인 요소가 된다.
본 발명은 일반적으로 정보처리에 관한 것이며, 구체적으로는 프로세서들의 내부 요소들 내에서 발생하는 처리 활동에 관한 것이다.
전술한 설명은 이하의 첨부된 도면과 함께 결합되어, 본 발명의 상세한설명으로부터 좀더 용이하게 이해될 것이다.
도 1은 하나의 통신망을, 예를 들면, LAN, MAN 및 WAN과 같은 다른 통신망에 결합시키는 통신 장치를 개략적으로 도시한 도면이다.
도 2는 본 발명의 일실시예에 따라, 도 1의 통신 장치내에 설치되는 네트워크 인터페이스 카드의 몇몇 구성요소들을 개략적으로 도시한 도면이다.
도 3은 본발명의 일실시예에 따라, 도 2의 네트워크 인터페이스 카드 부분을 형성하는 포워딩 엔진의 몇몇 구성요소들을 개략적으로 도시한 도면이다.
도 4는 본 발명의 일실시예에 따라, 도 3이 포워딩 엔진을 작동시킬 때 수행되는 단계들의 흐름도를 도시한 도면이다.
도 5는 본 발명의 일실시예에 따라, 직접 메모리 및 직접 레지스터 액세스를 수행하는 도 3의 포워딩 엔진의 인그레스 로직 및 프로세서의 몇몇 구성요소들을 개략적으로 도시한 도면이다.
도 6은 본 발명의 일실시예에 따라, 도 5의 인그레스 로직 및 프로세서 작동중에 수행되는 단계들의 흐름도를 도시한 도면이다.
도 7은 본 발명의 일실시예에 따라, 도 5의 프로세서를 형성하는 구성요소들의 집합을 좀더 자세히 도시한 도면이다.
도 8은 본 발명의 일실시예에 따라, 도 7에 도시된 프로세서 구성요소들을 작동시킬때 수행되는 단계들의 흐름도를 도시한 도면이다.
본 발명은 데이터 집합을 처리하기 위해 할당된 프로세서의 로컬 레지스터 아필 공간 내에 충분히 저장될 수 있는 적은 양의 데이터 집합을 처리하기 위해서는 외부 메모리에 대한 빈번한 액세스가 불필요하다는 점을 인식한다. 따라서, 본발명은 프로세서와 적어도 부분적으로나마 독립적으로 수행되어 프로세서에 의해 로드 및 저장 명령어 실행을 회피할 수 있는 데이터 액세스 기법을 포함하고 있다.
한 실시예에 따르면, 본발명의 전술한 특징을 포함하는 정보처리시스템 및 방법은, 데이터 집합을 처리하기위해 할당된 프로세서 연산을 프로세서의 내부 레지스터 파일내로 한정한다. 정보처리시스템은, 프로세서, 인그레스(ingress) 요소, 및 이그레스(egress) 요소를 포함한다. 인그레스 요소는 처리되지 않은 데이터를 해당 데이터 소스에 대한 인터페이스, 예를 들면, 통신망으로부터 데이터를 수신하는 네트워크 인터페이스로부터 데이터를 수신한다. 인그레스 요소는 프로세서의 내부 레지스터 파일을 직접 액세스함으로써 상기 처리되지 않은 데이터 또는 그 일부를 내부 레지스터 파일 공간에 전달한다. 프로세서 내에서 데이터를 처리하기 위한 유니트(예를 들면, 산술로직회로)는 프로세서 레지스터 파일에 데이터가 전달되어 오면 데이터를 조작하고 처리하여 그의 동작을 전적으로 내부 레지스터 파일 내로 한정한다. 프로세서 활동이 완료되면, 이그레스 요소는 내부 레지스터 파일공간으로부터 처리된 데이터를 직접 액세스하고 제거한다. 대안적으로, 중간 상태 머신은 처리된 데이터를 직접 액세스하고 이를 이그레스 요소에 전달한다.
본 발명의 한 특징에 따르면, 하나 이상의 상태머신이 인그레스 및 이그레스 요소들에 포함되어 이들의 동작을 제어한다. 또한, 하나 이상의 상태머신이 프로세서 내에 포함된다. 상태머신은 프로세서의 내부 레지스터 파일 공간에 데이터를 직접 전달하거나 이로부터 데이터를 제거하기 위해 내부 레지스터 파일 공간을 직접 액세스한다. 한 실시예에서, 상태 머신의 데이터 전달 활동은 a)인그레스 요소에서 미처리된 데이터를 수신하거나, b) 프로세서의 레지스터 파일 공간으로 미처리된 데이터를 전달하라고 알리는 프로세서 로직에 의한 신호, 및/또는 c) 명령 레지스터와 같은 로직 요소에 저장된 값이 변하는 것에 응답하여 개시된다.
본 발명의 장점은, 이미지 처리, 신호처리, 비디오처리 및 네트워크 패킷 저처리 등에 초점을 두고 있는 다수의 정보처리시스템에서 실현될 수 있다. 예로써, 본 발명은 라우터와 같은 통신 장치내에 구현되어, 라우트 처리, 경로결정 및 경로 전환 기능들과 같은 네트워크 서비스를 구현하는데 이용될 수 있다. 라우트 처리 기능은 패킷에 대해 필요한 라우팅 유형을 결정하는 것인 반면에, 경로 전환 기능은 라우터로 하여금 하나의 인터페이스상의 패킷을 수신하고 이를 제2 인터페이스로 전달하도록 한다. 경로결정 기능은 패킷을 전달하기 위해 가장 적합한 인터페이스를 선택하는 것이다.
통신장치의 패킷전환기능은 본원발명의 특징을 포함하는 하나 이상의 포워딩 엔진 ASIC 내에서 구현되어서, 통신 장치의 다수의 인터페이스들간의 패킷 전달을 지원할 수 있다. 이러한 예시적인 실시예에서, 패킷 데이터는 통신망을 통해 통신 장치의 네트워크 인터페이스의 특정 입력부와 연관된 인그레스 로직에 의해 수신된다. 다음에, 패킷을 처리하기 위해 수신 포트와 연관되어 있는 후보 프로세서 집단으로부터 하나의 프로세서가 인그레스 로직에 의해 선택된다.
일단 프로세서가 할당되면, 패킷은 헤더와 바디부분으로 나뉜다. 패킷 헤더는, 프로세서가 로드 또는 저장 명령어를 불러내지 않고서도 직접 메모리/레지스터 액세스를 이용하여 패킷 헤더를 기록하도록 구성된 인그레스 로직의 적어도 하나의상태머신에 의해, 할당된 프로세서와 연관되어 있는 내부 레지스터 파일과 같은 메모리 요소내의 고정된 위치에 기록된다. 패킷 바디는 출력 버퍼에 기록된다. 그 후에, 프로세서는 로컬 저장된 명령들에 따라 (로드 또는 저장 명령어를 불러내지 않고) 패킷 헤더를 처리한 후에 처리된 패킷 헤더를 선택된 출력 버퍼에 전달하면, 거기서 패킷 헤더는 패킷 바디와 통합되어 통신 장치로부터의 전송을 위한 목적지 출력 포트상에 전달된다.
패킷 헤더를 수신하는 것에 앞서서, 할당된 프로세서는 무한 루프에서 프로세서의 명령 메모리의 제1 공지된 위치/어드레스(예를 들면, 어드레스 0)에 저장된 명령어를 실행한다. 프로세서내의 하드웨어는 어드레스 0을, 프로세서에 결합되어 있는 명령 메모리로부터의 명령어가 아닌, 하드-와이어드(hard-wired) 명령어가 리턴되는 "특정(special)" 어드레스로 검출한다. 패킷 헤더가 인그레스 로직으로부터 프로세서에 전달되면, 제어신호는 프로세서에 헤더 전달이 진행줌임을 알린다. 이 신호가 활성상태이면, 프로세서 하드웨어는 프로세서 프로그램 카운터가 비특별 어드레스(예를 들면, 어드레스 2)를 나타내도록 하여, 무한 루프의 실행을 종료한다. 패킷 헤더의 전달을 완료하면, 프로세서는 명령 메모리의 어드레스 2에서 시작하는 명령어들을 실행하기 시작한다. 패킷 프로세싱 활동이 완료되면, 프로세서는 리셋되어(예를 들면, 프로그램 카운터를 어드레스 0로 세팅함) 전술한 특정 어드레스의 명령어들을 반복하여 실행한다.
이러한 방식으로, 패킷 헤더는 프로세서가 패킷 헤더를 처리할 준비가 될때까지 프로세서에 의한 상호작용 또는 사전 지식을 요하지 않고 프로세서의 레지스터 파일에 직접 기록된다. 패킷의 상태 또는 특성에 관련된 기타 정보(예를 들면, 길이) 또한 유사한 절차를 이용하여 레지스터 파일에 로컬 저장될 수 있으므로 프로세서는 이러한 정보를 얻기 위해 외부 소스를 액세스할 필요없다.
다중 프로세서들을 위한 프로그래밍 모델을 단순화하기 위해, 하나의 프로세서가 각각의 패킷을 위해 할당될 수 있으며, 각각의 프로세서는 그들 각각의 명령어 메모리들 내의 공통된 일련의 명령어들을 실행하도록 구성된다. 통신망의 와이어/라인 전송률(즉, 네트워크 인터페이스의 최대 비트전송률)에서 패킷들이 처리될 수 있음을 확실히 하기 위해 충분한 프로세서들이 할당된다. ASIC의 다수의 프로세서내에 본원 발명의 특징을 통합시켜 구현된 감소형 명령어 집합(reduced instruction set)은 ASIC의 다이(die) 크기를 감소시킴으로써, 이러한 ASIC을 제조하는데 있어서 기술적 장벽 및 수율 감소 결과를 초래하지 않고 ASIC으로 된 다수의 프로세서의 밀도를 증가시킬 수 잇다. 본 발명의 ASIC 구현은, 예를 들면, 프로세서의 클럭율을 증가시키고, ASIC에 더 많은 프로세서들을 추가시키고, 다수의 ASIC으로부터 (공통 명령어 집합을 갖는) 프로세서 풀(pool)을 집단화함으로써 한층 확장 가능하다.
한 실시예에서, 본 발명은 RISC(reduced instruction set computer) 구조를 나타내는 대칭형 멀티프로세서(SMP) 시스템에서 이용되어, 통신망을 통해 수신되는 패킷들을 처리할 수 있다. SMP 시스템은 풀로서 작동하는 공통 소프트웨어를 갖는 다수의 동일 프로세서들로 이루어지며, 이들중 어느 것도 특정 패킷을 처리할 수 있다. 각각의 인입 패킷은 풀 내의 이용가능한 프로세서에 할당되고, 프로세서는공통의 명령집합을 이용하여 패킷들을 병렬 처리한다. SMP 시스템은 처리된 패킷 스트림을 재구성하여 그것이 적절한 패킷 순서를 나타내도록 한다.
전형적인 마이크로 프로세서는 프로세서 외부의 메모리요소내에 저장된 데이터 구조를 나타내는 데이터의 임시 이미지를 다음 실행을 위해 프로세서의 로컬 레지스터 파일로 로딩하기 위해 로딩 및 저장 명령어를 실행한다. 이하 명세서에 사용된 바와 같이, 용어 "로컬 레지스터 파일"은 데이터를 처리하는 데 사용하기 위해 이용할 수 있는 프로세서의 내부 구조내의 전체 레지스터를 의미한다. "레지스터"는 D 플립-플롭과 같은 저장 엘리먼트의 개별 그룹을 지칭한다. 프로세서 설계에 따라, 레지스터 파일 공간은 메모리 및 플립-플롭의 조합으로 이루어질 수 있다. 어느 경우이든, 전형적으로 레지스터 파일은 독립적으로 액세스할 수 있는 다수의 판독 및 기록 포트를 제공하는 고속메모리 컴포넌트를 이용하여 전형적으로 구현된다. 소프트웨어 프로그램의 실행동안, 전형적인 프로세서는 외부 메모리부터 로컬 레지스터 파일로 데이타를 이동하고, 로컬 레지스터 파일로부터 외부메모리로 실행 결과를 이동하기 위해 각각 다수의 로드/저장 명령어를 실행한다. 처리될 데이타 세트를 로컬 레지스터 파일의 실행 공간에 맞추기에는 너무 크기 때문에 이들 외부 메모리로의 잦은 액세스가 필요하다.
본 발명은 로컬 레지스터 파일 공간 내에 전체적으로 배치되기에 충분히 작은 처리 데이터 세트는 외부 메모리로의 잦은 액세스가 필요하지 않다는 것을 인지한다.
이하 상세하게 설명되어지는 바와 같이, 본 발명은 데이타를 이동하고, 프로세서가 데이터를 이동시키기 위해 로드 및 저장 명령어와 같은 명령어를 실행할 필요없이 프로세서의 레지스터 파일 및 그 외부로 데이타 및 실행결과를 위치시키기 위해 직접 메모리 액세스(direct memory acess : DMA) 및 직접 레지스터 액세스(direct register acess : DRA) 기법을 이용한다.
이러한 관점에서, DMA는 프로세서와 무관하게 내부 또는 외부 메모리 내로/로부터 데이타 블럭을 이동할 하나이상의 상태 머신을 이용하는 방법을 의미한다. 유사하게, DRA는 DMA의 특별한 타입으로 불리는데, 즉, 프로세서와 무관하게 프로세서의 레지스터 파일 공간내로/으로부터 하나이상의 데이타 블럭의 하나의 움직임을 포함한다.
일 실시예에서, 레지스터 파일의 영역은 직접 레지스터 파일 액세스를 촉진시키기 위해 하나의 기록 포트 및 두 개의 판독 포트를 갖는 보통의 세개-포트 레지스터 파일 공간과 달리 두개의 기록 포트와 세개의 판독 포트를 구비한 다섯개-포트 레지스터 파일 공간으로 할당된다. 이 액세스는 레지스터 파일 내의 동작에 비교하여 상대적으로 속도가 느린 외부메모리로의 액세스를 피하고, 메모리 대기 상태를 피하고, 프로세서의 명령 세트의 크기를 감소시킨다. 따라서, 개별 프로세서의 성능을 현저하게 증가시키는 것 이외에, 그런 프로세서를 포함하는 ASIC의 다이 크기(die size) 및 전력소비는 감소될 수 있으며 ASIC내의 전체 프로세서의 개수는 비용을 크게 증가시키지 않고 현저하게 증가될 수 있다.
본 발명은 이하 명세서에서 네트워크를 통해 수신된 패킷 처리를 목적으로 하는 통신장치의 네트워트 인터페이스 카드로 구현되는 것으로 설명되어 있지만, 이러한 특정 구현은 단지 예시적인 실시예이며, 당업자들은 다수의 다른 실시 및 응용을 파악할 수 있을 것다. 실시예에 제한되지 않고, 본 발명은 이미지 처리, 신호 처리 및 비디오 처리와 같은 비교적 작은 데이터 세트에 관련된 정보-처리 어플리케이션을 유익하게 할 수 있다. 또한, 본 발명은 다양한 통신망 장치(예, 스위치 및 라우트)및 다른 정보-처리 환경으로 구현될 수 있다.
도 1을 참조하면, 통신장치(150)는 통신 링크를 통해 통신망(110)로부터 정보를 수신하며, 수신된 정보를 다른 통신망 또는 근거리 통신망(LAN : 120), 대도시망(metropolitan area network :MAN, 130), 또는 원거리 통신망(WAN:130) 또는 국소 부착 엔드 스테이션(미도시)과 같은 네트워크 또는 브랜치(branch)로 전송한다. 통신 장치(150)는 직렬 입력포트(예,162,164,166) 및 출력포트(예,168,170, 172)를 각각 갖는 NIC(160) 및 NIC(180)와 같은 다수의 네트워크 인터페이스 카드(network interface cards : NICs)를 포함한다. 입력 포트(162,164 및 166)는 통신망(110)으로부터 정보를 수신하고, 수신된 정보를 패킷을 처리하는 다수의 패키 처리 엔진(미도시)에 전송하고, LAN(120), MAN(130) 또는 엔드 스테이션을 포함하는 WAN(140)과 같은 통신망에 대응하는 출력포트(168,170,172) 중 어느 하나로 수신된 정보를 전송하기 위해 준비한다.
도 2를 참조하면, 본 발명의 측면을 구현하는 네트워크 인터페이스 카드(NIC:160)는 입력포트(162,164,166), 패키 처리 또는 포워딩 엔진(220), 어드레스 룩업 엔진(address lookup engine:ALE, 210), 통계 모듈(230), 큐잉/디큐잉 모듈(queing/dequeing:240), 및 출력포트(168,170,172)를 포함한다. NIC(160)는 입력포트(162,164,166)에서 패킷-기반형 통신망(110 :도 1)으로부터 패킷을 수신한다. ALE(210)와 함께, 포워딩 엔진(220)은 상기 수신지와 관련된 적절한 출력포트 (168,170,172)를 찾아내고, 적절한 출력포트로 수신된 신호를 라우팅하는 것을 돕기 위해 패키상에 포워딩 벡터를 미리 인가(prepending)함으로써 패킷의 출력포트 수신지를 결정한다.
변경된 패킷은 특정 수신지 출력포트(168,170,172)와 관련된 큐(queue)에 패킷을 구성하기 위해 포워딩 벡터가 이용되는 큐잉/디큐잉 모듈(240)로 전송한다. 각 패킷의 포워딩 벡터가 제거된 다음, 패킷들은 선택된 출력포트 (168,170,172)로의 전송을 위해 스케쥴링된다. 후속하여, 패킷은 선택된 출력포트(168,170, 172)로부터 LAN(120), MAN(130), 또는 WAN(140)과 같은 통신망으로 전송된다. 일 실시예에서, NIC(160)의 큐잉/디큐잉 모듈(240)은 완전-메시 상호 연결(full-mesh interconnect:미도시)을 통해 변경된 패킷을 수신함으로써, NIC(160)자체의 입력포트(162,164,166)에 의해 수신된 패킷을 포함하여 통신장치(150)내에 설치된 NIC(160,180)의 입력 포트에 원래 수신된 패킷들을 NIC(160) 자체의 하나이상의 출력포트(168,170,172)로 보낼수 있다(funnel). 다른 실시예에서, 입력포트(162,164, 170)에 수신된 패킷은 포워딩 엔진(220)에 의해 큐잉/디큐잉 모듈(240)로 직접 전송된다.
도 3 및 도 4를 참조하면, 포워딩 엔진(220) 구조의 개략적인 실시예는 인그레스 로직(ingress logic : 310), ALE 인터페이스(350), 통계 인터페이스(360), 이그레스 로직(egress logic:370) 및 하나 이상의 프로세서(320,330,340)를 포함한다. 동작 단계에 있어서, 패킷에 대응하는 데이타는 통신망(110)을 통해 전송되며, 통신망(110)에 결합되어 있는 NIC(160) 또는 NIC(180)의 특정 입력 포트(162,164,166)에서 수신된다(S410). 다음, 프로세서(330)는 패킷을 처리할 입력포트(162,164,166)와 연관된 프로세서(전형적으로 320,330,340으로 지시된)의 풀(pool)로부터 선택된다(S420). 일단 프로세서(330)가 할당되면, 패킷은 인그레스 로직(310)에 의해 헤더부와 바디부로 구분된다(S430). 패킷헤더는 직접 레지스터 액세스를 이용하는 프로세서(330)와 연관된 레지스터 파일(710, 도 7)내의 특정 위치에 기록된고, 패킷 바디는 직접 메모리 액세스를 이용하는 이그레스 로직(370)내의 출력 버퍼로 기록된다(S440). 다음, 프로세서(330)는 로컬 저장된 명령어에 따라 패킷헤더를 처리하고(S450), 처리된 패킷 헤더를 이그레스 로직(370)에 전송하며, 여기에서 패킷 헤더와 패킷 바디가 재통합된다(S460).
프로세서(330)는 패킷 헤더의 무결성(integrity)를 체크하고, 자체 체크섬 (checksum)을 확인하고, 포워딩 엔진(220)의 외부에 있는 모듈들에 이 패킷 헤더에 관련된 처리 활동을 보고하는데 이용되는 통계를 제공하기 위해 통계 인터페이스(360)를 통해 통계모듈(230)을 액세스하고, 패킷의 목적지와 관련된 출력포트(168,170,172) 중 하나에 대한 라우팅 정보를 얻기위해 ALE 인터페이스(350)를 통해 ALE(210)와 통신함으로써 패킷 헤더를 처리하는 업무를 수행할 것이다.또한, 네트워크에 특정된(예, IP, ATM, 프레임 릴레이, HDLC, TDM) 패킷 처리도 이 시점에 실행될 것이다. 이 처리 활동의 마지막에서, 프로세서(330)는 NIC(160)의 특정 출력 포트(168,170,172)를 나타내는 라우팅 정보를(예, 포워딩 벡터를 패킷 헤더에 미리 인가함(prepend)으로써) 포함하도록 패킷 헤더를 변경한다. 다음 변경된 패킷 헤더는 포워딩 엔진(220)의 이그레스 로직(370)에 기록되며, 후속하여 전술된 바와 같이 사실상 큐잉/디큐잉 모듈(240)로 라우팅된다.
ALE인페이스(350), 통계 인터페이스(360) 및 이그레스 로직(370)은 프로세서(320,330,340)간에 공유될 수 있는 포워딩 엔진(220)내의 리소스이다. 조정 메커니즘(미도시)은 이들 리소스들(350,360,370)로의 액세스를 위한 프로세서 (320,330,340) 사이를 조정하기 위해 포워딩 엔진(220)내에 제공된다. 일실시예에서, 프로세서(330)가 패킷에 할당되면, 프로세서 번호와 같은 프로세서에 대한 프로세서 식별자가 세 개의 공유 리소스(350,360,370) 각각에 전달된다. 이들 공유 리소스의 자원(350,360,370)각각은 프로세서 번호를 FIFO에 기록하는데, FIFO는 포워딩 엔진(220)내의 전체 프로세서 갯수와 동일한 깊이를 갖는다. 공유된 리소스(350,360,370) 각각의 로직은 각각의 FIFO에 액세스하여 다음에 리소스로의 액세스가 허용될수 있는 프로세서(320,330,340)를 결정한다. 허용된 프로세서가 특정 리소스로(350,360,370)의 액세스를 완료하면, 액세스된 리소스는 허용이 발송될 차후 프로세서를 결정하기 위해 다음 FIFO 엔트리를 판독한다.
보다 구체적으로, 도 5 및 도 6을 참조하면, 포워딩 엔징(220)의 수신, 조정 및 전송은 다수의 DMA 및 DRA 상태 머신에 의해 우선적으로 조정된다. 하나의 개략적 실시예에서, 이들 상태 머신은 인그레스 로직(310) 및 프로세서(330)내에 포함된다. 이 개략적 실시예의 동작동안, 패킷은 NIC(160)의 입력 포트(162,164,166) 중 하나로부터 수신되어 인그레스 로직(310)내의 수신_데이타 FIFO(First In/First Out buffer:510)내부에 저장된다(S610). 수신_상태 FIFO (512)는 패킷이 도달된 특정 입력 포트(162,164,166)을 기록하고, 포워딩 엔진(220)에 의해 수신된 각각의 패킷에 대한 입력 포트 번호의 순서 리스트를 유지하는데, 이는 패킷이 수신된 순서로 정렬된 것이다.
이 DMA_명령_발송 상태 머신(514)은 수신_상태 FIFO(512)가 데이터를 포함하는 것을 검출하고, 수신_상태 FIFO(512)로부터 패킷을 수신한 입력 포트(162,164, 166)과 관련된 입력 포트 번호를 획득한다(S620).
다음, DMA_명령_발송 상태 머신(514)은 프로세서_할당 상태 머신(516)에 패킷의 포트 번호를 포함하는 프로세서 할당 요청을 보내는데, 프로세서_할당 상태 머신(516)은 이 패킷을 동작시키기 위해 지원하는 프로세서(320,330,340)의 세트를 판단하기 위해 포트 번호와 연관된 할당_풀 레지스터(518)를 액세스한다(S630).
프로세서_할당 상태 머신(516)은 프로세스_프리 레지스터(520)를 액세스하여 할당_풀 레지스터(518)에 의해 확인된 임의의 지원 프로세서(320,330,340) 중 어느것이 이용가능한 것인지를 판단한다. 프로세서_할당 상태 머신(516)은 후속하여 패킷을 처리하기 위한 후보 프로세서(320,330,340)의 세트로부터 이용가능한 프로세서(330) 중 하나를 할당하고(S640), DMA_명령_발송 상태 머신(514)으로 상기 프로세서(330)의 할당 승인 및 프로세서 번호를 전송한다.
할당된 프로세서(330)와 연관된 프로세서 번호를 수신하면, DMA_명령_발송 상태 머신(514)은 DMA_실행 상태 머신(522)에 프로세서 번호를 포함하는 실행 신호/명령을 전송하며, DMA_실행 상태 머신(522)는 프로세서(330)로 전송될 수신형 패킷의 양(예, 패킷 헤더의 길이)을 얻기 위해 헤더_DMA_길이 레지스터(524)를 액세스한다 (S650). 그 다음, DMA_실행 상태 머신(522)은 DMA 명령을 발송하여, 수신_데이타 FIFO(510)로부터 패킷의 헤더부(패킷 헤더에 대응하는)를 탐색하고, 패킷 헤더부를 DRA 버스(526)상에 전달하여 프로세서(330) 내에 포함된 프로세서_DRA 상태 머신(530)에 의해 수신되도록 한다.
또한, DMA_실행 상태 머신(522)은 수신_데이타 FIFO(510)로부터 패킷 바디를 탐색하고, 패킷 바디를 또다른 버스 상에 전달하여 이그레스 로직(370)의 버퍼(미도시)에 수신되도록 하는 DMA 명령을 발송한다(S660). 프로세서_DRA 상태 머신(530)은 후속하여 프로세서(330) 레지스터 파일 공간(710, 도 7)내의 고정된 어드레스 위치에서 시작하는 레지스터 파일 영역에 DRA버스(526)를 통해 직접 수신된 패킷 헤더 데이타를 기록한다(S670). 다음 프로세서(330)는 패킷 헤더를 처리하고(S680), 처리된 헤더를 전송_DMA 상태 머신(532)을 통해 패킷바디부와의 재구성을 위한 이그레스 로직(370)에 전송한다(S690).
더 구체적으로 도 7 및 도 8을 참조하면, 프로세서(330)내의 패킷 헤더의 처리는 바람직하게는 프로세서의 명령어 및 활동이 프로세서의 로컬 레지스터 파일(710)내에 형성된 실행 공간내에서 데이타 및 실행 결과를 처리하는 것으로 한정된다. 하나의 예시적인 실시예에서 프로세서의 구조는 통계_인터페이스 상태 머신(704), ALE_인터페이스 상태 머신(706), 프로세서_DRA 상태 머신(530), 전송_DMA 상태 머신(532), 레지스터 파일(710), 산술 로직 유니트(arithmetic logic unit : ALU;720), 프로세서 제어 모듈(730), 및 명령 메모리(740)를 포함한다. 계산 유니트(725)는 프로세서 제어부(730)와 ALU(720)로 이루어진다.
이 실시예가 동작하는 동안, 프로세서는 패킷 헤더의 수신을 대기하는 반면, 계산 유니트(725)는 명령 메모리(740, 즉, 무한 루프)의 특정 어드레스(예, 어드레스 0)에 있는 명령을 연속적으로 실행한다(S810). 프로세서(330)내의 하드웨어는 명령이 명령 메모리(740)에 저장된 명령어가 아니라 실리콘 내에 에칭된 "하드-와이어드(hard-wired)" 명령값으로부터 리턴되는 특정 어드레스로서 어드레스 0을 검출한다. 가능한 구현에서, 특정 어드레스 0에서 명령을 액세싱하는 것은 "JMP 0"(또는 어드레스 0 명령으로 점프)을 리턴함으로써, 프로세서(330)가 상기 어드레스의 무한 루프를 실행하도록 한다.
패킷 헤더가 인그레스 로직(310)으로부터 프로세서의 레지스터 파일(710)로 전송되면, 프로세서_DRA 상태 머신(530)으로부터의 제어 신호는 패킷 헤더 전송이 진행중임을 프로세서 제어 모듈(730)에 알린다(S820). 신호가 활성 상태인 동안, 프로세서 제어 모듈(730)은 프로세서 프로그램 카운터(미도시)를 명령 메모리(740)의 비-특정 어드레스(예, 어드레스 2)를 지정하도록 함으로써, 계산유니트(725)가 특정 어드레스 0에서 실행되는 무한 루프를 벗어나도록 신호가 비활성상태로 될 때까지 대기하도록 한다(S830). 계산 유니트(725)는 활성화 상태로 되는 신호에 응답하여 어드레스 2의 명령어 실행을 시작한다(S840). 명령 메모리(740)의 어드레스 2는 레지스터 파일(710)에서 패킷 해더를 처리하는데 사용될 제1 명령을 저장하기 위해 구성될 수 있다(즉, 어드레스 2에서의 명령은 패킷 헤더상에 대해 동작하기 위해 사전에 다운로드된 "리얼" 소프트웨어 이미지의 시작부에 대응한다).
프로세서_DRA 상태 머신(530)이 레지스터 파일(710)내에 고정된 위치에 패킷 헤더의 시작부를 기록하는 것을 완료하면(제어신호가 비활성화 상태로 될 때 발생함), 계산 유니트(725)는 명령 메모리(740)에 일반적으로 남아있는 명령어(예, 어드레스 2 제외)를 계속적으로 정상 실행한다. 명령 메모리(740)에서의 특정 명령어는 레지스터 파일(710)내의 위치를 지정한다. 특정 패킷 헤더에 대한 처리 활동이 완료됨에 따라, 실행 소프트웨어는 어드레스 0으로 "점프"함으로써 무한 루프내의 어드레스 0에 있는 명령을 실행한다. 이 기법은 프로세서(330)가 로드 및 저장 명령어를 사용하지 않고 레지스터 파일(710)내에 저장된 패킷 헤더를 처리하기 위해 트리거될 수 있는 방법의 특정 구현을 설명한다.
다른 실시예에서, 할당된 프로세서(330)는 레지스터 파일(710)이 완전한 패킷 헤더로 채워졌음을 나타내는 신호를 외부상태 머신으로부터 수신할 때까지 유휴상태로 남아있다(idle)(즉, 명령 메모리를 액세싱하지 않고 명령어를 실행하지 않음). 그 다음, 산술 유니트(725)는 패킷 헤더를 처리하도록 명령 메모리(740)의 코드를 실행한다. 트리거링 이벤트들은, 예를 들면, 제어신호가 비활성화 상태가 될 때를 포함할 수 있다. 대안적으로, 할당된 프로세서(330)는 DRA 전송이 초기화되었을 때, 완성되었을 때, 또는 그것이 진행중일 때 트리거된다. 다수의 다른 트리거링 이벤트는 당업자에게 명백하게 될 것이다.
전술된 바와 같이, 프로세서(330)는 패킷 헤더의 처리공정동안 프로세서(330)의 외부에 있는 하나 이상의 공유 리소스(예, 도 3에 도시된 것처럼, ALE인터페이스 (350), 통계 인터페이스(360) 및 이그레스 로직(370))를 액세스한다. 예를 들면, 프로세서(330)는 ALE(210)의 검색명령을 발송하고 그것으로부터 검색 결과를 수신하기 위해 ALE인터페이스(350, 도 3)을 통해 ALE(210)과 상호 작용한다. 또한, 프로세서(330)에 의해 실행된 ALE(210)와의 상호 작용은 프로세서가 로드 및 저장 명령어를 실행하지 않고 발생한다.
명령 메모리(740)의 명령어를 실행하는 동안의 일측면에서, 프로세서(330)는 레지스터 파일(710)내의 선정된 어드레스에서 시작하는 검색 키를 포함한다. 계산 유니트(725)는 ALE(210)로 전송하는 검색 키 데이타량을 지정한 값을 ALE_명령 레지스터에 기록하는 것에 관련된 명령을 실행한다. 이 값은 프로세서(330)의 ALE_인터페이스 상태 머신(706)에 대한 제어 라인으로서 효과적으로 작용하고, 이에 따라 ALE_명령 레지스터로부터 값 또는 다른 데이터를 판독하고, 전송될 데이타의 양을 결정하고, 계산 유니트(725)에 관계없이 직접 메모리 액세스를 이용하여 ALE인터페이스(350)에 지정된 데이타를 전송하도록 ALE_인터페이스 상태 머신(706)을 트리거한다.
프로세서(330)가 리턴될 검색 결과를 기다리는 동안, 패킷 헤더의 네트워크 프로토콜(예,IP) 체크섬을 확인하는 것과 같은, 다른 기능을 실행할 수 있다. ALE(210)로부터 검색결과가 이용가능해지면, 검색결과는 ALE인터페이스(350)를 통해 ALE_인터페이스 상태 머신(706)으로 전송된다. ALE_인터페이스 상태 머신(706)은 하나이상의 직접 레지스터 액세스를 이용하여 레지스터 파일(710)의 선정된 위치에 검색 결과를 기록하고, 기록이 완료되면 계산유니트(725)에 신호를 보낸다. 그 다음 계산유니트(725)는 검색결과에 응답하여 패킷 해더를 변경한다.
또한, 프로세서(330)는 프로세서(330)의 통계_갱신_명령 레지스터(미도시)로 어드레스 및 길이 값을 기록함으로써 통계 갱신 명령을 발송할 수 있다. 프로세서(330)의 통계_인터페이스 상태 머신(704)은 통계_갱신_명령 레지스터로부터 데이타를 판독하고, 전송할 리소스 및 다수의 데이터를 결정하고, 산술 유니트(725)와 관계없이 직접 메모리 액세스를 이용하여 통계 인터페이스(360)로 특정 데이터를 전송하도록 트리거된다.
유사하게, 프로세서(330)가 패킷 헤더 처리를 완료하면, 계산 유니트(725)는 처리된 패킷 헤더를 프로세서(330)의 전송_DMA 상태 머신(532)에 기록하며, 이는 프로세서(330)에 관계없이 직접 메모리 억세스를 이용하여 이그레스 로직(370)내의 버퍼로 처리된 헤더를 전송한다(S850). 모든 처리가 완료된 다음, 프로세서(330)내의 소프트웨어 실행은 명령메모리(740)의 어드레스 0으로 되돌아가고, 다음 패킷 헤더(next packet hesder)가 도달하기를 기다리는 동안 사전에 언급된 무한 루프 명령어를 실행하기 시작한다(S860).
보다 구체적으로, 처리 활동이 완료함에 따라, 패킷 해더는 레지스터 파일(710)의 연속 영역내에 반드시 존재할 필요가 없으므로, 계산 유니트(725)는 레지스터 파일(710)내에 처리된 패킷 헤더의 각 피스(piece)의 위치를 지정할 필요가 있다. 따라서, 계산 유니트(725)는 처리된 패킷 헤더의 각 피스의 길이 및 시작 주소를 지정하는 하나이상의 기록을 이동_DMA_명령 레지스터(미도시)로 발송한다. 이들 기록은 본질적으로 재조합 명령어의 리스트로서 FIFO에 저장된다. 분리된 패킷 헤더의 모든 피스에 대한 데이타가 얻어진 다음, 산술 유니트(725)는 전송_DMA_명령 레지스터(미도시)에 기록하고, 다른 데이터와 함께 패킷의 바디 길이를 지정한다.
전송_DMA_명령 레지스터에 기록된 값은 상기 언급된 FIFO내에 저장된 재구성 명령에 따라 패킷 헤더의 구성을 시작하도록 프로세서(330) 내의 전송_DMA 상태 머신을 트리거한다. 그 다음 전송_DMA상태 머신은 산술유니트(725)와 관계없이직접 메모리 액세스를 이용하여 이그레스 로직(370)으로 약간의 제어 정보(패킷 바디의 길이를 포함함)와 함께, 구성된 패킷 헤더를 전송한다. 이그레스 로직(370)은 이그레스 로직(370)의 FIFO에 저장된 패킷바디와 전송_DMA 상태 머신으로부터 수신되어 처리된 패킷 헤더를 결합하고, 그 다음 이미 언급된 바처럼 재구성된 패킷을 큐잉/디큐잉 모듈(240)로 전송한다.
패킷 바디와 패킷 헤더를 적절하게 재구성하기 위하여, 프로세서(330)는 패킷 헤더 자체내에 임베딩된 데이타로부터 전체 패킷의 길이를 얻으며, 수신_데이터 FIFO(510, 도 5)에 의해 프로세서(330)로 전송된 데이터로부터 패킷 헤더의 길이를 얻는다(도 5의 헤더_길이 레지스터(524)에 기록된 동일한 값에 대응함). 이 정보에 따라, 프로세서(330)는 이그레스 로직(370)내의 출력 FIFO로 미리 전송된 패킷 바디 데이타의 양을 계산하고 전송_DMA 상태 머신(532)에 의해 이그레스 로직(370)으로 전송될 제어 정보로서 패킷 바디의 길이를 지정한다.
이러한 방식으로, 프로세서(330)는 변경된 패킷을 재구성하기 위해 프로세서(330)에 의해 형성된 새로 조립된(newly-assembled) 패킷 헤더에 부가될 패킷 바디 데이터량을 이그레스 로직(370)의 출력 FIFO로부터 빼내기 위해 지정할 수 있다. 변경된 패킷을 적절하게 재구성하기 위하여, 프로세서(330)는 프로세서(330)가 할당된 동일한 순서로 (따라서, 패킷바디가 이그레스 로직(370)의 출력 FIFO에 기록되어지는 동일한 순서로) 이그레스 로직(370)으로의 액세스가 허용된다.
본 발명의 특징 ·인입 패킷 처리 요구 사항에 대해 계산 리소스들을 할당하는 것에 상당한 유연성을 제공할 수 있다는 점이다. 포워딩 엔진(220)내에 모두 40개의 프로세서(320,330,340)가 있다고 가정하면, 프로세서(320,330,340)는 다수의 입력/출력 구성의 패킷 처리 필요성을 충족시키도록 탄력적으로 할당될 수 있다. 예를 들면, 단일 로직 입력 포트(예. 포트 0)만 있는 NIC(160)에는, 40개의 프로세서(320,330,340) 모두가 단일 포트에 대한 패킷을 처리하기 위해 할당될 수 있다. 이러한 시나리오에서는, 각 프로세서의 명령 메모리로 로딩된 코드 이미지가 동일하여, 각각의 프로세서(320,330,340)가 하나의 입력 포트에 대한 동일한 알고리듬을 실행할 수 있다.
각각 다른 타입의 네트워크 인터페이스 갖는, 네 개의 입력 포트를 포함하는 다른 시나리오에서는, 각각의 네트워크 타입에 대해 요구되는 처리 알고리듬은 다를 수 있다. 이러한 경우, 40개의 프로세서는 포트 0에 프로세서[0-9], 포트 1에 프로세서[10-19], 포트 2에 프로세서[20-29], 및 포트 3에 프로세서[30-39]과 같이 할당될 수 있다. 또한, 네개의 상이한 코드 이미지들이 다운로드될 수 있는데, 각각 독특한 이미지는 특정 입력 포트에 대응한다.
또 다른 시나리오에서, NIC(160)는 각각 상이한 처리 성능 조건을 갖는 두 개의 논리 입력 포트를 포함할 수 있다. 이러한 방식에서는, 입력포트 중 하나가 인그레스 밴드 폭의 75%를 소비하고, 프로세서 리소스의 75%를 요구하는 패킷 도달률을 갖으며, 제2포트가 나머지를 책임진다. 이들 성능 조건을 지원하기 위하여, 30개의 프로세서들이 입력 포트 0으로 할당되고 10개의 프로세서는 입력포트 1로 할당될 수 있다.
그들의 포워딩 엔진(220)의 일부로서 다수의 프로세서들을 포함하는 NIC (160,180)에 대한 프로그래밍 모델은, 각각 수신된 패킷에 대해 단일 프로세서를 할당함으로써 단순화될 수 있다. 전술한 바와 같이, 본 발명을 이용하는 시스템에 의해 실현된 크기의 감소는 NIC(160,180)의 포워딩 엔진 ASIC내에 추가 프로세서의 포함을 허용함으로써, 패킷들이 네트워크(110)의 와이어 전송률로 전송될 수 있음을 보증한다. 본 발명은 임의의 포워딩 엔진 ASIC상에 프로세서를 더 추가하고, 프로세서의 클럭 전송률을 증가하고, 다수의 ASIC의 처리 풀을 집단화함으로써 용이하게 확장할 수 있다. 이러한 능력을 제공하는데 있어서, 본 발명의 하드웨어 구조는 네트워크 인터페이스를 통해 도달하는 패킷들의 패킷 순서를 유지함으로써, 재구성된 패킷이 적절한 순서대로 포워딩 엔진을 벗어나 전송될 수 있도록 해준다.
프로세서 풀 집단화 기술은 통신장치(150)의 NIC(160)가 NIC(160)의 처리 능력을 벗어나 드롭된 패킷과 서비스 품질 저하를 가져올수도 있는 라인 전송률로 패킷 데이터 스트림을 통신망(110)을 통해 수신할 때 특히 유익하다. 집단화 기술은 하나의 포워딩 엔진으로부터 유휴상태 프로세서의 할당을 허용한다. 예를 들면, NIC(160)는 다수의 포워딩 엔진 ASICs를 포함할 수 있으며, 이들 각각은 NIC(160)상의 임의의 입력포트에 도달하는 패킷을 처리하기 위해 할당될 수 있는 패킷 풀을 갖는다. 대안적으로, 통신장치(150)내의 다른 NIC(180)상에 나타나는 포워딩 엔진 ASIC내의 프로세서 풀은, 과다한 네트워크 부하를 실행하는 NIC(160)로 할당될 수 있다.
이제까지 본 발명은 구체적인 예들을 참조하여 설명되었지만, 이러한 구체적인 예들은 본원 발명의 범위를 한정하는 의도로 쓰여진 것은 아니며, 본 발명의 범위는 첨부된 청구범위에 의해 정해질 것이다.
본 발명은 임의의 포워딩 엔진 ASIC상에 프로세서를 더 추가하고, 프로세서의 클럭 전송률을 증가하고, 다수의 ASIC의 처리 풀을 집단화함으로써 용이하게 확장할 수 있다. 이러한 능력을 제공하는데 있어서, 본 발명의 하드웨어 구조는 네트워크 인터페이스를 통해 도달하는 패킷들의 패킷 순서를 유지함으로써, 재구성된 패킷이 적절한 순서대로 포워딩 엔진을 벗어나 전송될 수 있도록 해준다.

Claims (29)

  1. 패킷을 처리하는 방법에 있어서,
    패킷을 수신하는 단계와,
    상기 데이터 패킷의 패킷 헤더를 식별하는 단계와,
    상기 패킷 헤더를 프로세서에 액세스될 수 있는 레지스터 파일에 전송하는 단계와,
    상기 프로세서에 의한 적어도 하나의 로드 명령어 및 저장 명령어 호출없이 상기 패킷 헤더를 처리하는 단계
    를 포함하는 패킷처리방법.
  2. 제1항에 있어서,
    상기 전송 단계는 적어도 하나의 로드 명령어 및 저장 명령어 호출없이 수행되는 패킷처리방법.
  3. 제1항에 있어서,
    상기 패킷을 상기 패킷헤더 및 패킷바디로 분리하는 단계와,
    상기 패킷 헤더를 직접 레지스터 액세스를 이용하여 상기 레지스터 파일에 전송하는 단계와,
    상기 패킷 바디를 출력 버퍼에 전송하는 단계
    를 더 포함하는 패킷처리방법.
  4. 제3항에 있어서,
    상기 패킷의 전송을 위해 출력 버퍼를 선택하는 단계와,
    상기 출력 버퍼 내에서 상기 패킷 바디와 상기 처리된 패킷 헤더를 통합하는 단계와,
    상기 통합된 패킷을 상기 출력 버퍼로부터 상기 전송을 위해 선택된 출력 버퍼로 전달하는 단계
    를 더 포함하는 패킷처리방법.
  5. 제1항에 있어서,
    공통 명령어 집합을 실행하는 다수의 동일 프로세서들- 상기 프로세서들 각각은 프로세서에 대한 명령어 집합을 로컬 저장함-을 제공하는 단계와,
    상기 패킷 헤더를 처리하기 위해 상기 다수의 프로세서들로부터 하나의 프로세서를 선택하는 단계와,
    상기 선택된 프로세서로 하여금 상기 패킷 헤더를 처리하도록 하는 단계
    를 더 포함하는 패킷처리방법.
  6. 제5항에 있어서,
    상기 프로세서를 선택하는 단계는 입력 포트에서 패킷을 수신하는 것에 응답하여 상태머신에 의해 수행되는 패킷처리방법.
  7. 제5항에 있어서,
    상기 선택된 프로세서로 하여금 상기 패킷 헤더를 처리하도록 하는 단계는 상기 선택된 프로세서에 액세스될 수 있는 레지스터 파일의 적어도 하나의 고정된 위치에 상기 패킷 헤더를 기록할 수 있도록 구성된 적어도 하나의 상태 머신에 의해 수행되는 패킷처리방법.
  8. 제5항에 있어서, 상기 다수의 프로세서들 각각의 명령어 메모리에 공통 명령어 집합을 다운로딩하는 단계를 더 포함하는 방법.
  9. 통신망을 통해 수신된 패킷의 패킷 헤더를 처리하는 방법에 있어서,
    상기 패킷 헤더를 레지스터 파일 내의 적어도 하나의 고정된 위치에 전달하는 단계와,
    상기 레지스터 파일과 연관된 프로세서 - 상기 프로세서는 무한 루프의 명령어를 반복적으로 실행하고, 상기 명령어는 상기 프로세서와 연관된 명령어 메모리내의 제1 공지된 위치에 저장되어 있음-를 제공하는 단계와,
    상기 프로세서로 하여금 상기 패킷 헤더의 전달에 응답하여 상기 명령어 메모리의 제2 공지된 위치에서 시작하는 명령어들을 실행하도록 하는 단계와,
    상기 명령어 메모리 내의 제2 공지된 위치에서 시작하는 명령어들에 따라 상기 레지스터 파일 내의 적어도 하나의 고정된 위치에 있는 상기 패킷 헤더를 처리하는 단계와,
    상기 프로세서가 상기 패킷 헤더의 처리를 완료한 후에 상기 명령어 메모리 내의 제1 공지된위치에 저장된 명령어를 반복적으로 실행하도록 상기 프로세서를 리셋하는 단계
    를 포함하는 방법.
  10. 제9항에 있어서,
    상기 처리 단계는 적어도 하나의 로드 명령어 및 저장 명령어를 호출하지 않고 상기 패킷 헤더를 처리하는 방법.
  11. 제9항에 있어서,
    상기 통신망에 결합된 입력 포트에서 패킷을 수신하는 단계와,
    상기 입력 포트와 연관된 다수의 후보 프로세서들중에서 프로세서를 선택하는 단계와,
    상기 패킷을 패킷 헤더와 패킷 바디로 구분하는 단계와,
    상기 레지스터 파일에 결합된 상태 머신에 의해 발송된 DRA 명령을 실해시킴으로써 상기 선택된 프로세서와 연관된 레지스터 파일 내의 적어도 하나의 고정된 위치에 상기 패킷 헤더를 전송하는 단계
    를 더 포함하는 방법.
  12. 제11항에 있어서,
    상기 다수의 후보 프로세서들 각각의 명령어 메모리에 공공통 명령어 집합을 다운로딩하는 단계를 더 포함하는 방법.
  13. 통신망을 통해 수신된 패킷을 처리하기 위한 패킷 처리 시스템에 있어서,
    상기 통신망을 통해 패킷을 수신한기 위해 구성된 입력 포트와,
    상기 입력 포트에 연관된 프로세서와,
    상기 프로세서에 액세스될 수 있는 레지스터 파일과,
    상기 입력 포트, 프로세서 및 레지스터 파일에 결합된 인그레스(ingress) 요소 - 상기 인그레스 요소는 DRA 명령을 호출함으로써 상기 레지스터 파일에 상기 패킷의 적어도 일부를 전달하도록 구성됨-를 포함하고,
    상기 프로세서는 상기 DRA 명령에 응답하여 적어도 하나의 로드 명령어 및 저장 명령어도 호출하지 않고 상기 레지스터 파일의 상기 패킷의 적어도 일부를 처리하는
    패킷처리시스템.
  14. 제13항에 있어서,
    상기 인그레스 요소는 상기 입력 포트와 연관된 다수의 후보 프로세서들중에서 상기 프로세서를 선택하도록 구성된 패킷처리시스템.
  15. 제14항에 있어서,
    다수의 명령어 메모리를 더 포함하고, 상기 명령어 메모리의 각각은 상기 다수의 후보 프로세서들중 대응하는 하나의 프로세서와 연관되어 있고, 상기 다수의 메모리 명령어는 동일한 명령어 집합을 포함하는 패킷처리시스템.
  16. 제13항에 있어서, 상기 패킷의 적어도 일부는 상기 패킷의 헤더에 해당하는 패킷처리시스템.
  17. 제16항에 있어서, 상기 인그레스 요소는 상기 레지스터 파일의 고정된 위치에 상기 패킷 헤더를 기록하도록 구성된 상태 머신을 포함하는 패킷처리시스템.
  18. 통신망을 통해 수신된 패킷의 패킷 헤더를 처리하기 위한 패킷-처리 시스템에 있어서,
    상기 통신망에 결합된 입력 포트와,
    상기 입력 포트에 결합되고 상기 패킷 헤더를 얻기 위해 상기 패킷을 수신하고 분석(parse)하도록 구성된 인그레스 요소와,
    상기 인그레스 요소에 결합되고 상기 인그레스 요소로부터 수신된 패킷 헤더를 적어도 하나의 고정된 위치에 저장하도록 구성된 레지스터 파일과,
    제1 및 제2 어드레스중 적어도 하나로부터 명령어를 리턴하도록 구성된 명령어 메모리와,
    상기 인그레스 요소, 레지스터 파일 및 명령어 메모리에 결합된 프로세서- 상기 프로세서는 상기 명령어 메모리의 제1 부분에 저장된 명령어들을 반복적으로 실행함-를 포함하고,
    상기 프로세서는 상기 인그레스 요소로부터의 신호에 응답하여 상기 패킷 헤더를 처리하기 위해 상기 명령어 메모리의 제2 어드레스에서 시작하는 명령어를 실행하는
    패키처리시스템
  19. 정보처리시스템에 있어서,
    내부 레지스터 파일과 데이터를 처리하기 위한 유니트를 구비한 프로세서와,
    미처리된 데이터를 상기 내부 레지스터 파일 공간에 전달하기 위한 인그레스 요소와,
    상기 내부 레지스터 파일 공간으로부터 처리된 데이터를 제거하기 위한 이그레스 요소를 포함하고,
    상기 프로세서의 동작은 상기 내부 레지스터 파일 공간내에서 데이터를 처리하도록 한정되는 정보처리시스템.
  20. 제19항에 있어서,
    상기 인그레스 및 이그레스 요소들의 동작을 제어하기 위한 적어도 하나의상태 머신을 더 포함하고, 상기 내부 레지스터 파일 공간 내의 명령어에 응답하여, 상기 상태 머신은 상기 명령어에 따라 상기 내부 레지스터 파일공간에 대한 직적 액세스를 이용하여 상기 내부 레지스터 파일 공간으로 데이터가 이동되거나 상기 공간으로부터 데이터가 제거되도록 하는 정보처리시스템.
  21. 제20항에 있어서,
    통신망으로부터 데이터를 수신하는 네트워크 인터페이스를 더 포함하고, 상기 인터페이스는 수신된 데이터를 상기 인그레스 요소에 제공하는 정보처리시스템.
  22. 정보를 처리하는 방법에 있어서,
    내부 레지스터 파일 공간 및 데이터를 처리하기 위한 유니트를 구비하는 프로세서를 제공하는 단계와,
    상기 내부 레지스터 파일 공간에 대한 직접 액세스를 이용하여, 미처리된 데이터를 상기 내부 레지스터 파일에 전달하고 처리된 데이터를 상기 내부 레지스터 파일로부터 제거하는 단계를 포함하며,
    상기 프로세서의 동작은 상기 내부 레지스터 파일 공간 내에서 데이터를 처리하도록 한정되는 정보처리방법.
  23. 제22항에 있어서,
    상기 내부 레지스터 파일에 대한 직접 액세스를 이용하여 상기 내부 레지스터 파일 공간에 데이터를 전달하고 상기 공간으로부터 데이터를 제거하는 것을 제어하는 적어도 하나의 상태 머신을 제공하는 단계와,
    상기 프로세서로 하여금 제어 레지스터에 값을 기록함으로써 상기 상태 머신에 신호를 보내도록 하는 단계를 포함하며, 상기 상태 머신은 상기 값에 응답하여 상태 머신 로직에 따라 직접 액세스를 수행하는 정보처리 방법.
  24. 제22항에 있어서,
    상기 미처리된 데이터는 특정 라인데이터전송률을 갖는 통신망으로부터 발생하고 상기 프로세서는 상기 특정 라인데이터전송률과 동일한 전송률로 데이터를 처리하는 정보처리방법.
  25. 제24항에 있어서,
    상기 미처리된 데이터는 패킷들의 형태로 된 정보처리방법.
  26. 일시적 순서의 패킷들로 이루어진 패킷 스트림을 처리하는 방법에 있어서,
    공통 명령어 집합을 실행하는 다수의 동일 프로세서들 - 상기 프로세서 각각은 상기 명령어 집합을 상기 프로세서에 대해 로컬 저장함-을 제공하는 단계와,
    상기 패킷들을 수신하는 단계와,
    각각의 패킷에 대해, (i) 상기 데이터 패킷의 패킷 헤더부를 식별하는 단계, (ii) 프로세서 가용성에 따라 상기 패킷 헤더를 처리할 수 있는 다수의 프로세서들중에서 하나의 프로세서를 선택하는 단계, 및 (iii) 상기 선택된 프로세서로 하여금 로컬 저장된 명령어들을 이용하여 상기 패킷 헤더를 처리하도록 하는 단계와,
    상기 일시적 순서에 따라 상기 패킷 스트림을 재구성하도록 상기 처리된 패킷을 조합하는 단계
    를 포함하는 방법.
  27. 제26항에 있어서,
    상기 다수의 프로세서들은 물리적으로 다수의 집적회로상에 위치하는 방법.
  28. 일시적 순서의 패킷들로 이루어진 패킷 스트림을 처리하기 위한 시스템에 있어서,
    공통 명령어 집합을 실행시키는 다수의 동일 프로세서들- 상기 프로세서들 각각은 명령어 집합을 포함하는 로컬 명령 메모리를 구비함-과,
    상기 패킷들을 수신하기 위한 입력 포트와,
    상기 입력 포트 및 상기 프로세서들에 결합된 인그레스 로직 유니트 - 상기 인그레스 로직 유니트는, 각각의 패킷에 대해, (i) 상기 데이터 패킷의 패킷헤더부를 식별하고, (ii)프로세서 가용성에 따라 상기 패킷 헤더를 처리할 수 있는 프로세서를 상기 다수의 프로세서들로부터 선택하며, 상기 선택된 프로세서는 로컬 저장된 명령어들을 이용하여 상키 패킷 헤더를 처리함으로써 상기 인그레스 로직 유니트에 응답함-와,
    상기 일시적 순서에 따라 패킷 스트림을 재구성하기 위해 상기 처리된 패킷을 조합하기 위한 인그레스 로직 유니트
    를 포함하는 시스템.
  29. 제28항에 있어서,
    상기 다수의 프로세서들은 다수의 집적회로상에 물리적으로 위치하는 시스템.
KR1020027011590A 2000-03-03 2001-03-02 내부 프로세서 메모리 공간을 이용한 고속 데이터 처리 KR20030007447A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US18678200P 2000-03-03 2000-03-03
US60/186,782 2000-03-03

Publications (1)

Publication Number Publication Date
KR20030007447A true KR20030007447A (ko) 2003-01-23

Family

ID=22686263

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020027011590A KR20030007447A (ko) 2000-03-03 2001-03-02 내부 프로세서 메모리 공간을 이용한 고속 데이터 처리

Country Status (8)

Country Link
US (1) US7328277B2 (ko)
EP (1) EP1261915A2 (ko)
JP (1) JP2003526269A (ko)
KR (1) KR20030007447A (ko)
CN (1) CN1437724A (ko)
AU (1) AU2001249083A1 (ko)
CA (1) CA2402018A1 (ko)
WO (1) WO2001067237A2 (ko)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6847645B1 (en) * 2001-02-22 2005-01-25 Cisco Technology, Inc. Method and apparatus for controlling packet header buffer wrap around in a forwarding engine of an intermediate network node
US6952738B1 (en) * 2001-08-17 2005-10-04 Juniper Networks, Inc. Systems and methods for removing intrapacket gaps from streams of different bandwidths
US7113518B2 (en) 2001-12-19 2006-09-26 Agere Systems Inc. Processor with reduced memory requirements for high-speed routing and switching of packets
US7339943B1 (en) 2002-05-10 2008-03-04 Altera Corporation Apparatus and method for queuing flow management between input, intermediate and output queues
US7320037B1 (en) * 2002-05-10 2008-01-15 Altera Corporation Method and apparatus for packet segmentation, enqueuing and queue servicing for multiple network processor architecture
US7606248B1 (en) 2002-05-10 2009-10-20 Altera Corporation Method and apparatus for using multiple network processors to achieve higher performance networking applications
US7593334B1 (en) 2002-05-20 2009-09-22 Altera Corporation Method of policing network traffic
US7336669B1 (en) 2002-05-20 2008-02-26 Altera Corporation Mechanism for distributing statistics across multiple elements
US7304999B2 (en) * 2002-08-24 2007-12-04 Cisco Technology Inc. Methods and apparatus for processing packets including distributing packets across multiple packet processing engines and gathering the processed packets from the processing engines
US7404015B2 (en) * 2002-08-24 2008-07-22 Cisco Technology, Inc. Methods and apparatus for processing packets including accessing one or more resources shared among processing engines
US20050281281A1 (en) * 2003-01-24 2005-12-22 Rajesh Nair Port input buffer architecture
US20040196843A1 (en) * 2003-02-20 2004-10-07 Alcatel Protection of network infrastructure and secure communication of control information thereto
US7581249B2 (en) * 2003-11-14 2009-08-25 Enterasys Networks, Inc. Distributed intrusion response system
US7522621B2 (en) * 2005-01-06 2009-04-21 International Business Machines Corporation Apparatus and method for efficiently modifying network data frames
US7551617B2 (en) 2005-02-08 2009-06-23 Cisco Technology, Inc. Multi-threaded packet processing architecture with global packet memory, packet recirculation, and coprocessor
US7561589B2 (en) * 2005-02-23 2009-07-14 Cisco Technology, Inc Virtual address storage which may be of particular use in generating fragmented packets
US7606250B2 (en) 2005-04-05 2009-10-20 Cisco Technology, Inc. Assigning resources to items such as processing contexts for processing packets
US7739426B1 (en) 2005-10-31 2010-06-15 Cisco Technology, Inc. Descriptor transfer logic
US8006069B2 (en) 2006-10-05 2011-08-23 Synopsys, Inc. Inter-processor communication method
JP5094482B2 (ja) * 2008-03-07 2012-12-12 キヤノン株式会社 処理装置及びその処理方法
JP4574748B2 (ja) * 2009-02-19 2010-11-04 パナソニック株式会社 記録媒体、再生装置、記録方法、記録媒体再生システム
US9779057B2 (en) 2009-09-11 2017-10-03 Micron Technology, Inc. Autonomous memory architecture
US20120198551A1 (en) * 2011-01-31 2012-08-02 General Electric Company Method, system and device for detecting an attempted intrusion into a network
US8762802B2 (en) * 2011-12-01 2014-06-24 Shenzhen China Star Optoelectronics Technology Co., Ltd. Code checking method for a memory of a printed circuit board
US9779138B2 (en) 2013-08-13 2017-10-03 Micron Technology, Inc. Methods and systems for autonomous memory searching
US10003675B2 (en) 2013-12-02 2018-06-19 Micron Technology, Inc. Packet processor receiving packets containing instructions, data, and starting location and generating packets containing instructions and data
KR20160054850A (ko) * 2014-11-07 2016-05-17 삼성전자주식회사 다수의 프로세서들을 운용하는 장치 및 방법
US10768935B2 (en) * 2015-10-29 2020-09-08 Intel Corporation Boosting local memory performance in processor graphics
WO2017199178A1 (en) * 2016-05-18 2017-11-23 Marvell Israel (M.I.S.L) Ltd. Method and apparatus for processing packets in a network device
US10762030B2 (en) 2016-05-25 2020-09-01 Samsung Electronics Co., Ltd. Storage system, method, and apparatus for fast IO on PCIE devices
CN111684769B (zh) * 2017-11-06 2023-03-24 思想系统公司 包括基于表的动作的匹配处理单元的网络系统
US10877766B2 (en) 2018-05-24 2020-12-29 Xilinx, Inc. Embedded scheduling of hardware resources for hardware acceleration
US10705993B2 (en) * 2018-11-19 2020-07-07 Xilinx, Inc. Programming and controlling compute units in an integrated circuit
US11188497B2 (en) * 2018-11-21 2021-11-30 SambaNova Systems, Inc. Configuration unload of a reconfigurable data processor
US10848424B2 (en) * 2019-03-26 2020-11-24 Wipro Limited Method and system for improving switching capacity of software-based switches in access networks
CN111782273B (zh) * 2020-07-16 2022-07-26 中国人民解放军国防科技大学 一种提高重复程序执行性能的软硬件协同缓存装置
US11386034B2 (en) 2020-10-30 2022-07-12 Xilinx, Inc. High throughput circuit architecture for hardware acceleration
US20240015108A1 (en) * 2020-11-20 2024-01-11 Telefonaktiebolaget Lm Ericsson (Publ) Method and system for efficient input/output transfer in network devices

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5840214B2 (ja) 1979-06-26 1983-09-03 株式会社東芝 計算機システム
JPS63142449A (ja) 1986-12-04 1988-06-14 Fujitsu Ltd 制御メモリに対するパトロ−ルチエツク方式
US6070003A (en) 1989-11-17 2000-05-30 Texas Instruments Incorporated System and method of memory access in apparatus having plural processors and plural memories
US6038584A (en) 1989-11-17 2000-03-14 Texas Instruments Incorporated Synchronized MIMD multi-processing system and method of operation
JP3358254B2 (ja) * 1993-10-28 2002-12-16 株式会社日立製作所 通信制御装置および通信制御用回路装置
EP0719065A1 (en) 1994-12-20 1996-06-26 International Business Machines Corporation Multipurpose packet switching node for a data communication network
US5812549A (en) 1996-06-25 1998-09-22 International Business Machines Corporation Route restrictions for deadlock free routing with increased bandwidth in a multi-stage cross point packet switch
US6032190A (en) * 1997-10-03 2000-02-29 Ascend Communications, Inc. System and method for processing data packets
US6101599A (en) 1998-06-29 2000-08-08 Cisco Technology, Inc. System for context switching between processing elements in a pipeline of processing elements
US6279140B1 (en) * 1999-01-07 2001-08-21 International Business Machines Corporation Method and apparatus for checksum verification with receive packet processing
US6446196B1 (en) * 1999-02-17 2002-09-03 International Business Machines Corporation Method apparatus and computer program product including one-of and one-of-and-jump instructions for processing data communications
US6650640B1 (en) * 1999-03-01 2003-11-18 Sun Microsystems, Inc. Method and apparatus for managing a network flow in a high performance network interface

Also Published As

Publication number Publication date
EP1261915A2 (en) 2002-12-04
US7328277B2 (en) 2008-02-05
CA2402018A1 (en) 2001-09-13
WO2001067237A2 (en) 2001-09-13
AU2001249083A1 (en) 2001-09-17
WO2001067237A3 (en) 2002-04-25
CN1437724A (zh) 2003-08-20
US20010049744A1 (en) 2001-12-06
JP2003526269A (ja) 2003-09-02

Similar Documents

Publication Publication Date Title
KR20030007447A (ko) 내부 프로세서 메모리 공간을 이용한 고속 데이터 처리
US7676588B2 (en) Programmable network protocol handler architecture
KR100219350B1 (ko) 분산된 노드 사이 스위칭과 분리된 데이터/제어 메시지 처리를 갖는 다중 노드 네트워크
KR100268565B1 (ko) 다중 처리 시스템에서 타스크를 큐잉하기 위한 시스템 및 방법
US7072970B2 (en) Programmable network protocol handler architecture
US7649901B2 (en) Method and apparatus for optimizing selection of available contexts for packet processing in multi-stream packet processing
US20050232303A1 (en) Efficient packet processing pipeline device and method
US7443836B2 (en) Processing a data packet
US5335325A (en) High-speed packet switching apparatus and method
US20050243734A1 (en) Multi-threaded packet processing engine for stateful packet processing
US6795886B1 (en) Interconnect switch method and apparatus
US5625846A (en) Transfer request queue control system using flags to indicate transfer request queue validity and whether to use round-robin system for dequeuing the corresponding queues
US7802025B2 (en) DMA engine for repeating communication patterns
CA2011935A1 (en) Dual-path computer interconnect system with four-ported packet memory control
US20060064508A1 (en) Method and system to store and retrieve message packet data in a communications network
CA2487355C (en) Inter-chip processor control plane communication
US20040100900A1 (en) Message transfer system
WO1999031847A1 (en) Message buffering for a computer-based network
US20040246956A1 (en) Parallel packet receiving, routing and forwarding
JP2736237B2 (ja) 遠隔メモリアクセス制御装置
JP2001067298A (ja) ハブ及びポート・アーキテクチャーを有する転送制御装置における低速ポートについての障害を防止するための書込み要求キューの使用
WO1997022927A1 (en) Job scheduling for instruction processor
Peterson et al. A high-speed message-driven communication architecture
JP3115801B2 (ja) 並列計算機システム
US6055607A (en) Interface queue with bypassing capability for main storage unit

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E801 Decision on dismissal of amendment
E601 Decision to refuse application