KR100437146B1 - 지능망 인터페이스 장치 및 통신 가속 시스템 - Google Patents

지능망 인터페이스 장치 및 통신 가속 시스템

Info

Publication number
KR100437146B1
KR100437146B1 KR10-2001-7002369A KR20017002369A KR100437146B1 KR 100437146 B1 KR100437146 B1 KR 100437146B1 KR 20017002369 A KR20017002369 A KR 20017002369A KR 100437146 B1 KR100437146 B1 KR 100437146B1
Authority
KR
South Korea
Prior art keywords
host
network
data
message
processing
Prior art date
Application number
KR10-2001-7002369A
Other languages
English (en)
Other versions
KR20010085582A (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 KR20010085582A publication Critical patent/KR20010085582A/ko
Application granted granted Critical
Publication of KR100437146B1 publication Critical patent/KR100437146B1/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • 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]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/62Establishing a time schedule for servicing the requests
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/63Routing a service request depending on the request content or context
    • 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/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/163In-band adaptation of TCP data exchange; In-band control procedures
    • 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/166IP fragmentation; TCP segmentation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • 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/08Protocols for interworking; Protocol conversion
    • 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/12Protocol engines
    • 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
    • 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/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Communication Control (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)

Abstract

데이타 통신용의 호스트 컴퓨터(20)와 함께 동작하는 지능망 인터페이스 카드 또는 통신 처리 장치(30)가 개시되어 있다. 이 장치는 대부분의 메시지에 대해 프로토콜 처리를 행하지 않는 고속 경로(159)를 제공하여, 데이타 전송을 크게 가속화하며 호스트 CPU(28)로부터 시간 집약적인 처리 업무를 덜어 준다. 호스트는 고속 경로 기준에 맞지 않는 메시지에 대한 고장 대체 능력을 가지며, 상기 장치는 심지어 저속 경로 메시지에 대한 검증과 같은 지원을 제공하여 메시지가 고속 경로 또는 저속 경로(158) 처리를 위해 선택될 수 있도록 한다. 호스트에 의한 메시지 처리를 위해 문맥(50)이 호스트에 역으로 전달될 수 있다. 상기 장치는 특정 업무에서 범용 CPU 보다 훨씬 빠른 특수 하드웨어 회로를 구비한다. 바람직한 실시예는 수신, 송신 및 유틸리티 처리 전용의 파이프라인 프로세서(482, 484, 486) 트리오를 포함하여 4개의 고속 이더넷 노드에 대해 전이중 통신을 제공한다.

Description

지능망 인터페이스 장치 및 통신 가속 시스템{INTELLIGENT NETWORK INTERFACE DEVICE AND SYSTEM FOR ACCELERATING COMMUNICATION}
망 컴퓨팅의 이점이 점차 입증되고 있다. 개개인에게 개개인의 퍼스널 컴퓨터 또는 다른 엔드 유저 장치에 정보, 통신 또는 컴퓨팅 능력을 제공하는 것의 편리함 및 효율성으로 인해 인트라넷 장치 및 애플리케이션은 물론이고 인터넷을 포함하는 망 컴퓨팅의 고속 성장이 이루어져왔다.
잘 알려진 바와 같이, 대부분의 망 컴퓨터 통신은 망에 접속된 호스트 컴퓨터들간에 정보를 이동시키기 위한 계층화된 소프트웨어 아키텍쳐의 도움으로 달성된다. 계층은 정보를 관리 가능 세그먼트로 분리하는 데 도움을 주는데, 각 계층의 일반적인 기능은 종종 오픈 시스템 인터커넥션(OSI)라 하는 국제 표준에 기초한다. OSI는 엔드 유저에게 제공하기 위하여 호스트에 의해 정보가 수신될 때 정보를 전달할 수 있는 7개의 처리층을 마련하고 있다. 마찬가지로, 호스트에서 망으로의 정보의 전송은 상기 7개의 처리층을 통해 역순으로 이루어질 수 있다. 계층에 의한 처리 및 서비스의 각 단계는 처리된 정보의 복사를 포함할 수 있다. 널리구현되고 있는 TCP/IP(TCP는 전송 제어 프로토콜을 나타내고 IP는 인터넷 프로토콜을 나타낸다)라고 하는 또 하나의 참조 모델은 기본적으로 OSI의 7개 계층 중 5개를 이용한다.
망은 예컨대, 다수의 호스트, 또는 호스트들간의 데이타 전송을 위한 다양한 다른 공지 수단 중 하나를 각각 포함하는 다른 구내망(LAN)들간의 이더넷 접속 또는 인터넷 접속과 같은 고속 버스를 포함할 수 있다. OSI 표준에 따르면, 물리층은 각각의 호스트에서 망에 접속되어 망을 통해 미가공 데이타 비트(raw data bit)의 송수신을 제공한다. 데이타 링크층이 각 호스트의 물리층에 의해 서비스되어 수신 호스트에 의해 전송된 수신 확인 프레임(acknowledgement frame)을 처리하는 것은 물론이고 물리층으로부터 수신된 데이타에 대한 프레임 분할 및 에러 정정을 제공한다. 각 호스트의 망층이 각 데이타 링크층에 의해 서비스되어 데이타 패킷의 서브넷의 크기 및 조정을 주로 제어한다.
전달층이 각 망층에 의해 서비스되고, 세션층이 각 호스트 내의 각 전달층에 의해 서비스된다. 전달층은 각 세션층으로부터 데이타를 받아들이며, 이 데이타를 더 작은 단위로 분할하여 다른 호스트의 전달층에 전송하고, 이 다른 호스트의 전달층은 제시를 위한 데이타를 각각의 제시층에 연관시킨다. 세션층은 호스트들간의 향상된 통신 제어를 제공한다. 제시층은 각 세션층에 의해 서비스되어, 각 호스트 및 데이타 표현의 표준 구조에 고유할 수 있는 데이타 의미(semantics)와 구문(syntax)간의 변환을 제공한다. 또한, 데이타의 압축 및/또는 암호화가 제시 레벨로 달성될 수 있다. 애플리케이션층은 각각의 제시층에 의해 서비스되어 애플리케이션 또는 엔드 유저에 대한 제시를 위해 개별 호스트 및 표준 프로그램에 고유한 프로그램들간의 번역을 제공한다. TCP/IP 표준은 하위 4개 계층 및 애플리케이션층을 포함하지만, 세션층 및 제시층의 기능을 인접 계층에 통합시킨다. 일반적으로, 애플리케이션, 제시 및 세션층은 상위 계층으로 정의되며, 전달, 망 및 데이타 링크층은 하위 계층으로 정의된다.
각 층을 위한 규칙 및 협약을 당해 계층의 프로토콜이라 하며, 각 계층의 프로토콜 및 일반 기능은 다양한 호스트에서 대충 동일하기 때문에, 대등 계층들이 아래의 각 계층을 통해 순차적으로 정보를 전송하는 일 없이 직접 통신을 행하지 않을지라도 다른 호스트들의 동일 계층들간에 직접 발생하는 통신을 고려하는 것이 유용한다. 각 하위 계층은 통신 정보의 처리를 돕기 위해 바로 위 계층에 대한 서비스를 행한다. 각 계층은 처리 및 다음 계층에 대한 서비스를 위해 정보를 저장한다. 공통 사용되는 하드웨어 및 소프트웨어 아키텍쳐, 장치 및 프로그램의 다양성 때문에 각 계층은 개입될 수 있는 하드웨어 및 소프트웨어의 변화에 관계없이 데이타가 의도된 목적지로 의도된 형태로 전달될 수 있게 보장하는 것이 필요하다.
제1 호스트에서 제2 호스트로의 전송을 위해 데이타를 준비함에 있어서, 소정의 제어 데이타가 당해 계층의 프로토콜과 관련된 제1 호스트의 각 계층에서 부가되는데, 이 제어 데이타는 당해 호스트의 모든 하위 계층의 오리지날(페이로드) 데이타와 구별이 되지 않는다. 따라서, 애플리케이션층이 애플리케이션 헤더를 페이로드 데이타에 첨부하여 결합된 데이타를 송신 호스트의 제시층에 전송하며, 이 제시층은 결합된 데이타를 수신하고 처리하여 제시 헤더를 데이타에 부가함으로써또 하나의 결합된 데이타 패킷을 만든다. 그 다음, 페이로드 데이타, 애플리케이션 헤더 및 제시 헤더의 결합에 의해 생성된 데이타는 세션층으로 전송되며, 세션층은 데이타에 세션 헤더의 첨부하는 것 및 결과적인 결합 데이타를 전달층에 제시하는 것을 포함하는 필요한 조작을 행한다. 이 과정은 망을 통해 제2 호스트로 비트 패킷으로서 데이타를 전송하기 전에, 상기 계층들 각각에서 데이타에 첨부된 전달 헤더, 망 헤더 및 데이타 링크 헤더 및 트레일러에 대해, 데이타 이동 및 복사를 통상 포함하는 각 단계에서 정보가 하위 계층으로 이동할 때 계속된다.
수신 호스트는 일반적으로 전술한 과정을 역으로 수행하는데, 수신 호스트의 목적지로 전송하기 전에 더 낮은(물리) 계층에서 더 높은(애플리케이션) 계층의 순서로 헤더를 제거하여 데이타 처리할 때 망으로부터 비트를 수신하는 것부터 시작한다. 수신 호스트의 각 계층은 당해 계층에 연관된 헤더만을 인식하여 처리하는데, 이는 당해 계층으로 더 높은 계층 제어 데이타가 페이로드 데이타와 함께 포함되고 페이로드 데이타로부터 구별될 수 없기 때문이다. 다중 인터럽트, 고가 중앙 처리 장치(CPU)의 처리 시간 및 반복되는 데이타 복사는 또한 수신 호스트가 데이타를 적당한 형태로 의도 목적지에 배치하기 위해 필요할 수 있다.
계층화된 프로토콜 처리에 대한 위의 설명은 이러한 주제를 주로 다루는, 예컨대 본 명세서에 참조된 Andrew S. Tanenbaum의 컴퓨터망 제3판(1996)과 같은 대학 수준의 교과서를 입수할 수 있으므로 간단히 하였다. 이 책에 정의된 바와 같이, 컴퓨터망은 구내망(LAN), 광역망(WAN), 비동기 전송망(ATM), 링 또는 토큰 링, 유무선 위성 또는 개별 프로세서들 간의 통신 능력을 제공하기 위한 다른 수단을포함한 인터넷 및 인트라넷 장치와 같은 자치적인 컴퓨터들의 상호접속 집합이다. 여기서 컴퓨터는 데이타를 처리하기 위한 논리 및 메모리 기능을 모두 가진 장치를 포함하는 것으로 정의되지만, 망에 접속된 컴퓨터 또는 호스트는 이들이 다른 조작 장치에 따라 기능하거나 다른 아키텍쳐를 통해 통신하는 경우 이종이라고 한다.
망이 점차 대중화되고, 망에 의해 통신되는 정보가 점차 복잡하고 많아짐에 따라 프로토콜 처리에 대한 필요성이 증가하고 있다. 호스트 CPU의 처리 능력의 대부분이 프로토콜 처리를 제어하고 다른 업무를 행하도록 당해 CPU의 능력을 감소시키는 데 전용화될 수 있는 것으로 추정된다. 망 인터페이스 카드는 물리층 및 데이타 링크층과 같은 최하위 계층을 돕도록 개발되어 왔다. 또한, 종래의 구성에 따라 단순히 더 많은 처리 능력 또는 CPU를 부가함으로써 프로토콜 처리 속도를 향상시킬 수 있다. 그러나, 이러한 해법은 불편하고 비용이 많이 든다. 그러나, 다양한 망, 프로토콜, 아키텍쳐, 조작 장치 및 애플리케이션에 의해 제공되는 복잡성은 일반적으로 다양한 망 호스트들 간에 통신 능력을 제공하기 위하여 막대한 처리를 필요로 한다.
발명의 요약
본 발명은 통신 데이타의 처리 속도 및 전송 효율을 크게 향상시키는 망 통신 처리 장치를 제공한다. 본 발명은 범용 프로세서 상에서 다층 프로토콜 처리를 수행한 장기간의 실무를 연구함으로써 달성되었다. 결과적인 프로토콜 처리 방법 및 아키텍쳐는 TCP/IP와 같은 접속 기반의 계층화된 아키텍쳐의 계층들을 호스트 상의 원하는 장소 또는 버퍼에 더 직접적으로 망 데이타를 전송할 수 있는 단일의더 넓은 계층으로 효과적으로 만든다. 이러한 가속 처리는 데이타 송수신을 위해 호스트에 제공되며, 따라서 정보 교환에 수반되는 하나 또는 두 호스트가 그러한 기능을 갖든 안 갖든 간에 성능을 향상시킨다.
가속 처리는 소스에서 직접 메시지 데이타에 액세스하거나 의도 목적지로 직접 전달하는 고속 경로를 통해 메시지로부터의 데이타를 처리하는 것을 허용하는 주어진 메시지에 대한 전형적인 제어 명령을 사용한다. 이 고속 경로는 데이타를 수반하는 헤더의 통상적인 프로토콜 처리를 행하지 않는다. 고속 경로는 망 통신을 처리하도록 설계된 특수 마이크로프로세서를 이용하여 반복 복사와 같은 통상적인 소프트웨어 계층 처리의 지연 및 어려움과 CPU에 대한 인터럽트를 피한다. 결과적으로, 고속 경로는 프로토콜층의 엄격한 구별 및 분리를 필요로 하는 종래의 규칙과는 대조적으로 통상적인 망 스택의 수개 계층에서 통상적으로 발견되는 상태들을 모든 계층을 포함하는 단일 상태 머신으로 대체한다. 호스트는 고속 경로 접속 또는 처리 메시지 예외를 설정하는 데 사용될 수 있는 순차 프로토콜 처리 스택을 갖는다. 특수 마이크로프로세서 및 호스트는 주어진 메시지 또는 그 일부가 마이크로프로세서 또는 호스트 스택에 의해 처리되어야 하는지의 여부를 지능적으로 선택한다.
본 발명은 컴퓨터 또는 다른 망(NETWORK)에 관한 것으로서, 특히 망에 접속된 컴퓨터들과 같은 호스트들간에 통신되는 정보의 처리에 관한 것이다.
도 1은 망 통신을 가속화하기 위한 통신 처리 장치를 구비한 호스트 컴퓨터를 포함하는 본 발명의 장치를 나타내는 평면도.
도 2는 고속 경로, 저속경로, 및 고속 경로와 저속 경로 간의 접속문맥(connection context)의 전달을 포함하는 망 통신 처리에 있어서의 도 1의 호스트의 정보 흐름을 나타내는 도면.
도 3은 본 발명에 따른 메시지 수신 순서도.
도 4A는 저속 경로에 의해 처리된 메시지 패킷을 수신하는 도 1의 호스트의 정보 흐름도.
도 4B는 고속 경로에 의해 처리된 초기 메시지 패킷을 수신하는 도 1의 호스트의 정보 흐름도.
도 4C는 고속 경로에 의해 처리된 후속 메시지 패킷을 수신하는 도 4B의 호스트의 정보 흐름도.
도 4D는 처리를 저속 경로로 되돌리는 에러를 가진 메시지 패킷을 수신하는 도 4C의 호스트의 정보 흐름도.
도 5는 고속 또는 저속 경로에 의해 메시지를 전송하는 도 1의 호스트의 정보 흐름도.
도 6은 TCP/IP 처리 스택을 구비한 클라이언트와 연관된 지능망 인터페이스 카드(INIC)의 제1 실시예의 정보 흐름도.
도 7은 패킷 제어 시퀀서 및 플라이바이(fly-by) 시퀀서를 포함하는 도 6에 도시된 INIC 실시예의 하드웨어 논리를 나타내는 도면.
도 8은 INIC에 의해 수신되는 헤더 바이트를 분석하기 위한 도 7의 플라이바이 시퀀서를 나타내는 도면.
도 9는 TCP/IP 처리 스택을 구비한 서버와 연관된 INIC의 제2 실시예의 정보흐름도.
도 10은 고속 경로용의 통신 제어 블록을 생성하고 제어하기 위한 도 9의 호스트에 설치된 명령 드라이버를 나타내는 도면.
도 11은 네트바이오스(NetBios) 통신을 위해 구성된 도 10의 TCP/IP 스택 및 명령 드라이버를 나타내는 도면.
도 12는 도 6의 클라이언트와 도 9의 서버 간의 통신 교환을 나타내는 도면.
도 13은 도 9의 INIC에 포함된 하드웨어 기능을 나타내는 도면.
도 14는 각 단계에서 프로세서의 3 단계를 포함하는, 도 13의 INIC에 포함된 파이프라인 마이크로프로세서 트리오를 나타내는 도면.
도 15A는 도 14의 파이프라인 마이크로프로세서의 제1 단계를 나타내는 도면.
도 15B는 도 14의 파이프라인 마이크로프로세서의 제2 단계를 나타내는 도면.
도 15C는 도 14의 파이프라인 마이크로프로세서의 제3 단계를 나타내는 도면.
도 16은 도 14의 마이크로프로세서와 상호작용하고 SRAM 및 DRAM을 포함하는 다수의 큐 스토리지를 나타내는 도면.
도 17은 도 16의 큐 스토리지의 상태 레지스터 세트를 나타내는 도면.
도 18은 도 16 및 도 17의 큐 스토리지 및 상태 레지스터와 상호작용하는 큐 관리기를 나타내는 도면.
도 19A-D는 캐시 메모리를 할당하는 데 사용되는 가장 오래 전에 사용된 레지스터의 각종 단계를 나타내는 도면.
도 20은 도 19A-D의 가장 오래 전에 사용된 레지스터를 동작시키는 데 사용되는 장치를 나타내는 도면.
도 1은 망(25)에 의해 원격 호스트(22)에 접속된 본 발명의 호스트(20)를 나타낸다. 본 발명에 의해 달성되는 처리 속도의 증가는 대부분의 프로토콜 처리로부터 호스트 CPU를 자유롭게 하여 CPU에 수행되는 다른 작업의 개선을 허용하는 경우에 기존 호스트에 쉽고 적절히 부가되는 지능망 인터페이스 카드(INIC), 또는 호스트에 통합된 통신 처리 장치(CPD)에 의해 제공될 수 있다. 제1 실시예에서 호스트(20)는 PCI 버스(33)에 의해 접속된 CPU(28) 및 CPD(30)를 구비한다. CPD(30)는 통신 데이타를 처리하도록 설계된 마이크로프로세서 및 직접 메모리 액세스(DMA) 장치에 의해 제어되는 메모리 버퍼를 포함한다. 또한, PCI 버스(33)에는 반도체 메모리 또는 디스크 드라이브와 같은 스토리지가 관련 제어 장치와 함께 접속된다.
도 2를 참조하면, 호스트 CPU(28)는 스토리지(35)에 내장된 프로토콜 처리 스택(44)을 제어하는데, 스택(44)은 데이타 링크층(36), 망층(38), 전달층(40), 상위층(46) 및 상위층 인터페이스(42)를 포함한다. 상위층(46)은 사용되고 있는 특정 프로토콜 및 통신된 메시지에 따라 세션층, 제시층 및/또는 애플리케이션층을 나타낼 수 있다. 화살표 48로 도시된 바와 같이, 상위층 인터페이스(42)는 CPU(28) 및 관련 제어 장치와 함께 상위층(46) 또는 스토리지(35)로 파일을 전송하거나 검색할 수 있다. 후술되는 바와 같이 접속 문맥(50)이 생성되는데, 이 문맥은 각 프로토콜층에 대한 프로토콜 타입 및 소스 및 목적지 어드레스와 같은 다양한 접속 특징을 요약하고 있다. 문맥은 화살표 52로 도시된 바와 같이 세션층(42)의 인터페이스와 CPD(30) 간에 전달되어 CPD(30) 또는 스토리지(35)에 통신 제어 블록(CCB)으로서 저장될 수 있다.
CPD(30)가 특정 접속을 정의하는 CCB를 유지하고 있을 때, 망으로부터 CPD에 의해 수신된 접속 관련 데이타는 당해 CCB로 참조된 후 고속 경로(58)를 따라 스토리지(35)로 직접 전송될 수 있어 데이타 링크층(36), 망층(38) 및 전달층(40)에 의한 순차적인 프로토콜 처리가 생략된다. 스토리지(35)에서 원격 호스트(22)로 파일을 전송하는 것과 같이 메시지를 전송하는 것은 또한 고속 경로(58)를 통해 이루어지는데, 이 경우 파일 데이타의 문맥은 전달층(40), 망층(38) 및 데이타 링크층(36)에 의한 처리 동안 헤더를 순차 부가하는 것에 의해서가 아니라 CCB를 참조하는 CPD(30)에 의해 부가된다. CPD(30)의 DMA 제어기는 CPD와 스토리지(35) 간의 전송을 수행한다.
CPD(30)는 가능한 개별 상태를 각각 갖는 다수의 프로토콜 스택을 고속 경로 처리를 위하여 단일 상태 머신으로 만든다. 결과적으로, 단일 상태 머신에서 제공되지 않는 예외 상황이 발생하는데, 이는 주로 이러한 상황이 빈번하게 발생하는 것이 아니며 CPD에서 이를 처리하기 위하여 호스트에 대해 거의 또는 전혀 성능 이득을 제공하지 않기 때문이다. 이러한 예외는 CPD(30) 또는 CPU(28)에서 시작될 수 있다. 본 발명의 이점은 고속 경로 CCB 상에서 발생하는 예측되지 않은 상황을처리하는 방식을 포함한다. CPD(30)는 제어 협상을 통해 호스트 프로토콜 스택(44)에 CCB 및 이에 수반되는 임의의 관련 메시지 프레임을 역전송 또는 플러싱함으로써 그러한 드문 상황을 처리한다. 그 다음, 예외 상황은 호스트 프로토콜 스택(44)에 의해 통상의 방식으로 처리된다. 약간 후에, 대개는 예외 상황의 처리가 완료되고 고속 경로 처리가 재개된 직후에 호스트 스택(44)은 CPD로 CCB를 역전송한다.
이러한 고장 대체 능력은 호스트 프로토콜의 성능 영향 기능이 CPD 망 마이크로프로세서에 의해 처리될 수 있게 하며, 예외는 호스트 스택에 의해 처리되는데, 예외는 전체 성능에 거의 영향을 미치지 않을 정도로 매우 드물다. 주문 설계된 망 마이크로프로세서는 망 정보를 송수신하기 위한 독립적인 프로세서, 및 지원 및 큐잉(queuing)을 위한 추가적인 프로세서를 구비할 수 있다. 바람직한 마이크로프로세서 실시예는 수신, 송신 및 유틸리티 프로세서의 파이프라인 트리오를 포함한다. DMA 제어기는 제어기에 인접한 버퍼와 장기 스토리지와 같은 다른 장소 간에 데이타를 쉽게 이동시키기 위하여 망 마이크로프로세서와 함께하는 구현 및 작업에 연관된다. DMA 제어기에 논리적으로 인접한 버퍼를 제공함으로써 PCI 버스 상에 불필요한 부하를 피할 수 있다.
도 3은 본 발명에 따른 수신 메시지의 일반 흐름도이다. 파일 전송과 같은 큰 TCP/IP 메시지가 다수의 개별적인 약 64KB 전송에서 망으로부터 호스트에 의해 수신될 수 있는데, 상기 전송 각각은 망을 통한 전송을 위해 다수의 약 1.5KB 프레임 또는 패킷으로 분할될 수 있다. 노벨 네트웨어 프로토콜은 순차 패킷 교환 프로토콜(SPX) 또는 네트웨어 코어 프로토콜(NCP)을 유사한 방식으로 인터넷워크 패킷 교환(IPX) 작업을 통해 실행하는 데 적당하다. 고속 경로에 의해 처리될 수 있는 다른 형태의 데이타 통신은 수개 메시지 초기화 다이얼로그를 통해 접속을 개시한 다음 후속 메시지와 함께 데이타를 전송하는 것보다는 데이타를 포함하는 응답이 접속에 따라 전송될 수 있는 과정이 뒤따르는 초기 트랜잭션 요구와의 접속을 개시하는 TCP 버젼인 트랜잭션 TCP(이하 T/TCP 또는 TTCP라 한다)이다. 이러한 프로토콜들에 의해 예시되는 전송 중 어느 하나에 있어서, 각 패킷은 통상 프로토콜 계층 각각에 대한 헤더 및 메시지의 패킷의 나머지에 대해 패킷을 배치하기 위한 마커는 물론 전송되고 있는 데이타의 일부를 포함한다.
메시지 패킷 또는 프레임은 CPD에 의해 수신될 때(47) 먼저 하드웨어의 지원하에 검증된다. 이것은 각종 계층의 프로토콜 타입의 결정, 관련 체크섬의 검증, 및 그 결과치의 상태 워드 또는 워드들로의 요약(57)을 포함한다. 이들 워드에는 프레임이 고속 경로 데이타 흐름의 지원자인지의 여부를 나타내는 지시가 포함된다. 고속 경로 지원자의 선택(59)은 호스트가 CPD에 의해 처리되고 있는 메시지 접속으로부터 이득을 얻을 수 있는지의 여부에 기초하는데, 이는 패킷이 예컨대 TCP/IP 또는 SPX/IPX와 같은 특정 프로토콜을 지시하는 헤더 바이트를 갖고 있는지를 결정하는 것을 포함한다. 고속 경로 지원자가 아닌 프레임의 적은 부분이 저속 경로 프로토콜 처리를 위해 호스트 프로토콜 스택으로 전송된다(61). 각 고속 경로 지원자를 가진 후속 망 마이크로프로세서 작업은 TCP 또는 SPX CCB와 같은 고속 경로 접속이 이미 당해 지원자를 위해 남아있는지, 또는 당해 지원자가 TTCP/IP 트랜잭션에 대해서와 같은 새로운 고속 경로 접속을 설정하는 데 사용될 수 있는지를 결정한다. CPD에 의해 제공되는 검증은 단지 에러가 없는 검증된 프레임이 저속 경로 처리에 대해서도 호스트 CPU에 의해 처리됨에 따라 프레임이 고속 경로 또는 저속 경로에 의해 처리되는지에 관계없이 가속을 제공한다.
CPD 하드웨어 지원하에 고속 경로 지원자인 것으로 결정된 모든 수신 메시지 프레임은 CPD에 의해 유지되는 CCB와 일치하는지의 여부를 결정하기 위하여 망 마이크로프로세서 또는 INIC 비교기 회로에 의해 검사된다(53). 일치를 확인한 후, CPD는 하위 계층 헤더를 제거하고 프레임으로부터의 나머지 애플리케이션 데이타를 CPD의 직접 메모리 액세스(DMA) 장치를 사용하여 호스트의 최종 목적지로 전송한다(69). 이러한 작업은 예컨대 TCP 접속이 이미 존재하고 목적 버퍼가 협상된 때 메시지 패킷의 수신과 동시에 발생하거나, 먼저 전송을 위한 새로운 최종 목적 어드레스 세트를 얻기 위해 초기 헤더를 처리하는 것이 필요할 수 있다. 후자의 경우, CPD가 목적 어드레스를 기다리면서 후속 메시지 패킷을 큐잉한 다음, DMA가 큐 애플리케이션 데이타를 목적지를 전송하게 된다.
CCB와 일치하지 않는 고속 경로 지원자는 순차 프로토콜 처리를 위해 프레임을 호스트에 전송(65)함으로써 새로운 고속 경로 접속을 설정하는 데 사용될 수 있다. 이 경우, 호스트는 이 프레임을 CCB를 생성(51)하는 데 사용하며, 이후 CCB는 CPD로 전송되어 당해 접속 상의 후속 프레임을 제어한다. CPD에 저장(67)된 CCB는 통상적인 소프트웨어 계층 처리가 이용된 경우 처리되는 모든 프로토콜에 관한 제어 및 상태 정보를 포함한다. CCB는 또한 후속적인 관련 메시지 패킷에 포함된 애플리케이션 레벨의 데이타를 즉시 이용할 수 있는 형태로 호스트 애플리케이션으로 직접 이동시키는 것을 용이하게 하는 데 사용되는 전송 정보를 위한 기억 공간을 갖는다. CPD는 호스트로부터 당해 접속을 위한 CCB를 수신한 때 접속 처리 명령을 취한다.
도 4A에 구체적으로 도시된 바와 같이, 망(25)을 통해 원격 호스트(22)로부터 메시지 패킷이 수신된 때, 패킷은 CPD(30)의 하드웨어 수신 논리(32)에 입력되고, CPD는 헤더와 데이타를 체크섬하고 헤더를 해부하여, 메시지 패킷 및 상태를 식별하는 워드 또는 워드들을 생성하고 헤더, 데이타 및 워드를 메모리(60)에 일시적으로 저장한다. 패킷을 검증함은 물론, 수신 논리(32)는 패킷이 고속 경로 처리를 위한 지원자인지를 워드에 의해 지시한다. 도 4A는 패킷이 고속 경로 지원자가 아닌 경우를 나타내는데, 이 경우 CPD(30)는 화살표 56으로 도시된 바와 같이 검증된 헤더 및 데이타를 메모리(60)로부터 호스트 CPU에 의한 처리를 위해 내부 버스를 따라 데이타 링크층(36)으로 전송한다. 패킷은 데이타 링크층(36), 망층(38), 전달층(40) 및 세션층(42)의 호스트 프로토콜 스택(44)에 의해 처리된 다음, 패킷으로부터의 데이타(D; 63)가 화살표 65에 도시된 바와 같이 스토리지(35)로 전송될 수 있다.
도 4B는 예컨대 패킷 헤더로부터 패킷이 TCP/IP, TTCP/IP 또는 SPX/IPX 메시지에 속한다는 것을 도출함으로써 메시지 패킷이 고속 경로 처리의 지원자임을 CPD의 수신 논리(32)에 의해 결정하는 경우를 나타낸다. CPD(30) 내의 프로세서는 고속 경로 지원자를 요약하는 워드가 캐시(62)에 유지된 CCB와 일치하는지를 확인하기 위한 검사를 행한다. 이 패킷에 대해 일치가 발견되지 않은 경우, CPD는 처리를 위하여 메모리(60)로부터 호스트 프로토콜 스택(44)으로 검증된 패킷을 전송한다. 호스트 스택(44)은 이 패킷을 사용하여 패킷과 관련된 메시지로부터 데이타의 목적지를 발견하고 예약하는 것을 포함하여 메시지를 위한 접속 문맥을 생성할 수 있는데, 이 문맥은 CCB의 형태를 갖는다. 본 실시예는 고속 경로 및 비고속 경로 지원자들을 처리하기 위하여 단일의 특수 호스트 스택(44)을 이용하는 반면, 후술되는 실시예에서는 고속 경로 지원자는 비고속 경로 지원자와 다른 호스트 스택에 의해 처리된다. 초기 패킷으로부터의 소정의 데이타(D1; 66)는 화살표 68로 도시된 바와 같이 스토리지(35) 내의 목적지로 선택적으로 전송될 수 있다. 그 다음, 캐시(62)에 저장될 CCB가 화살표 64에 도시된 바와 같이 CPD(30)로 전송된다. TCP/IP에 의해 예시된 바와 같은 통상의 접속 기반 메시지에 있어서 초기 패킷은 CCB가 생성되어 CPD(30)로 전송되기 전에 호스트들간에 발생하는 접속 초기화 다이얼로그의 일부일 수 있다.
도 4C를 참조하면, 초기 패킷과 동일한 접속으로부터의 후속 패킷이 CPD(30)에 의해 망(25)으로부터 수신될 때, 패킷 헤더 및 데이타는 수신 논리(32)에 의해 검증되고, 헤더는 대응 CCB를 발견하기 위한 메시지 패킷 및 해쉬의 개요를 생성하기 위해 분석되는데, 이 개요 및 해쉬는 워드 또는 워드들을 포함한다. 워드 또는 워드들은 패킷과 함께 일시적으로 메모리(60)에 저장된다. 프로세서(55)는 해쉬와 캐시(62)에 저장된 CCB 간의 일치를 검사하고, 일치가 발견된 경우 화살표 72로 표시된 바와 같이 세션층(42), 전달층(40), 망층(38) 및 데이타 링크층(36)을경유하지 않고 데이타(D2; 70)를 고속 경로를 통해 스토리지(35) 내의 목적지로 직접 전송한다. 또한, 메시지로부터의 나머지 데이타 패킷은 DMA에 의해 스토리지로 직접 전송하여 CPU 스택(44)에 의한 비교적 느린 프로토콜층 처리 및 반복된 복사를 피할 수 있다.
도 4D는 도 4C에 도시된 바와 같이 고속 경로 접속이 설정된 메시지가 CPD에 의해 쉽게 처리되지 않는 패킷을 가진 드문 경우를 처리하기 위한 프로시져를 나타낸다. 이 경우, 패킷은 프로토콜 스택(44)에 의해 처리되도록 전송되며, 이 스택(44)은 화살표 76으로 도시된 바와 같이 CPD와의 제어 다이얼로그를 통해 캐시(62)로부터의 메시지에 대한 CCB를 전달받고, 메시지에 대한 처리를 맡게 되었음을 CPU에 통지한다. 그 다음, 프로토콜 스택에 의한 저속 경로 처리에 의해 패킷으로부터의 데이타(D3; 80)가 화살표 82로 표시된 바와 같이 스토리지(35)로 전송된다. 패킷이 처리되고 에러 상황이 수정된 경우, CCB는 제어 다이얼로그를 통해 캐시(62)로 다시 전달되어 메시지의 후속 패킷으로부터의 페이로드 데이타가 CPD(30)의 고속 경로를 통해 다시 전송될 수 있다. 따라서, CPU 및 CPD는 함께 주어진 메시지가 고속 경로 하드웨어 처리에 따라 또는 CPU에 의해 더욱 통상적인 소프트웨어 처리에 따라 처리되어야 하는지를 결정한다.
원격 호스트(22)로의 전달을 위한 호스트(20)에서 망(25)으로의 데이타 전송은 또한 도 5에 도시된 바와 같이, CPU를 통한 순차적인 프로토콜 소프트웨어 처리 또는 CPD(30)를 통한 가속 하드웨어 처리에 의해 처리될 수 있다. 스토리지(35)로부터 CPU(28)에 의해 선택된 메시지(M; 90)는 화살표 92 및 96에 의해 도시된 바와같이 스택(44)에 의한 처리를 위해 세션층(42)으로 전송될 수 있다. 그러나, 접속이 존재하고 CPD(30)가 이미 메시지에 대한 적당한 CCB를 가진 경우, 데이타 패킷은 호스트 스택(44)을 우회하여 DMA에 의해 메모리(60)로 직접 전송될 수 있는데, 프로세서(55)는 모든 적당한 프로토콜층을 가진 단일 헤더를 각 데이타 패킷에 부가하여 이 패킷을 원격 호스트(22)로의 전송을 위해 망(25)으로 전송한다. 이러한 고속 경로 전송은 심지어 단일 패킷에 대한 처리를 크게 가속시킬 수 있는데, 가속은 더 큰 메시지에 대해 배가된다.
따라서, 고속 경로 접속이 존재하지 않는 메시지는 고속 경로 전송을 안내하기 위한 적당한 제어 및 상태 정보에 의해 CCB의 생성으로부터 이득을 얻을 수 있다. TCP/IP 또는 SPX/IPX와 같은 통상의 접속 기반 메시지에 있어서, CCB는 접속 초기화 다이얼로그 동안에 생성된다. TTCP/IP와 같은 고속 접속 메시지에 있어서는, CCB는 페이로드 데이타를 전송하는 동일 트랜잭션에 의해 생성될 수 있다. 이 경우, 페이로드 데이타의 전송은 고속 경로 접속을 설정하는 데 사용된 요구에 대한 응답일 수 있다. 어느 경우에나, CCB는 어느 사용자가 수반되었는지와 전송 정보를 위한 기억 공간을 포함한, 프로토콜층 각각에 관한 프로토콜 및 상태 정보를 제공한다. CCB는 프로토콜 스택(44)에 의해 생성되며, 스택(44)은 화살표 98로 도시된 바와 같이 CPD의 명령 레지스터에 기록함으로써 CCB를 CPD(30)로 전송한다. 프로세서(55)는 CCB에 의해 안내되어, 화살표 99로 도시된 바와 같이 DMA를 이용하여 데이타의 망 프레임 크기화된 부분을 호스트 메모리(35) 내의 소스에서 그 자신의 메모리(60) 안으로 이동시킨다. 그 다음, 프로세서(55)는 적당한 헤더 및 체크섬을 상기 데이타 부분에 첨부하여 결과 프레임을 관련 프로토콜의 제한과 일관되게 망(25)으로 전송한다. CPD(30)는 모든 데이타가 목적지에 도달하였다는 확인 신호를 수신한 후에 응답 버퍼에 기록함으로써 호스트(35)에 통지한다.
따라서, 데이타 통신의 고속 경로 전송은 또한 호스트 CPU의 프레임 처리를 경감시켜 준다. 데이타 전송의 대부분은 고속 경로에 의해 망으로 전송될 수 있다. 입력 및 출력 고속 경로 모두는 상위 계층 레벨, 즉 세션층 또는 그 이상에서 기능함으로써 인터럽트의 큰 감소를 달성하며, 망 마이크로프로세서와 호스트 간의 상호작용은 상위 계층이 만들기 원하는 전체 전송 크기를 사용하여 이루어진다. 고속 경로 통신에 있어서, 인터럽트는 오직 전체 상위 계층 메시지 트랜잭션의 시작과 종료시에만 발생하며, 각각의 하위 계층 부분 또는 트랜잭션의 패킷의 송수신에 대한 인터럽트는 존재하지 않는다.
호스트(152)를 위한 망 인터페이스를 제공하는 단순화된 지능망 인터페이스 카드(INIC; 150)가 도 6에 도시되어 있다. INIC(150)의 하드웨어 논리(171)는 망(155)에 접속되며, 주변 버스(PCI; 157)는 INIC와 호스트를 접속시킨다. 본 실시예에서 호스트(152)는 망(155)으로부터 수신된 메시지 프레임의 순차적인 소프트웨어 처리를 위한 저속 경로(158)를 제공하는 TCP/IP 프로토콜 스택을 갖는다. 호스트(152) 프로토콜 스택은 데이타 링크층(160), 망층(162), 전달층(164), 및 호스트(152)에서 통신 데이타에 대한 소스 또는 목적지(168)를 제공하는 애플리케이션층(166)을 포함한다. 세션층 및 제시층과 같은 도시되지 않은 다른 계층들은 또한 호스트 스택(152)에 포함될 수 있으며, 소스 또는 목적지는 데이타의 성질에 따라변할 수 있고 실제로 애플리케이션층일 수 있다.
INIC(150)는 호스트의 프로토콜 스택을 포함하는 저속 경로(158)를 따라, 또는 호스트의 프로토콜 스택을 우회하는 고속 경로(159)를 따라 처리 메시지들 간에 선택하는 망 프로세서(170)를 구비한다. 각각의 수신된 패킷은 INIC(150)에 포함된 하드웨어 논리(171)에 의해 온더플라이 처리되며, 따라서 패킷의 모든 프로토콜 헤더는 프로토콜 계층들간의 데이타 복사, 이동 또는 저장 없이 처리될 수 있다. 하드웨어 논리(171)는 선택된 헤더 바이트를 카테고리화함으로써 패킷 바이트가 하드웨어를 통과할 때 주어진 패킷의 헤더를 한 번 처리한다. 선택된 바이트의 처리 결과는 체크섬 검증을 포함한 패킷의 개요가 생성될 때까지 패킷의 다른 바이트가 카테고리화되었는지를 결정하는 데 도움을 준다. 그 다음, 수신 패킷으로부터 처리된 헤더 및 데이타는 패킷의 헤더 및 상태를 요약한 워드 또는 워드들과 함께 INIC 스토리지(185)에 저장된다. 망 스트리지 구성에 있어서, INIC(150)는 IDE, SCSI 또는 유사한 인터페이스를 가진 디스크 드라이브와 같은 주변 기억 장치에 접속될 수 있으며, 기억 장치를 위한 파일 캐시가 INIC(150)의 메모리(185) 상에 상주한다. 이러한 수개의 망 인터페이스가 하나의 호스트를 위해 존재할 수 있는데, 각 인터페이스는 관련 기억 장치를 갖는다.
INIC(150)에 의해 망(155)으로부터 수신된 메시지 패킷의 하드웨어 처리가 도 7에 상세히 도시되어 있다. 먼저, 수신된 메시지 패킷이 미디어 액세스 제어기(172)에 입력되며, 제어기는 망에 대한 INIC 액세스 및 패킷의 수신을 제어하고 망 프로토콜 관리를 위한 통계 정보를 제공할 수 있다. 이로부터 데이타는한 번에 1 바이트씩 어셈블리 레지스터(174) 안으로 흐르게 되는데, 본 실시예에서 레지스터는 128 비트의 크기를 갖는다. 데이타는 도 8을 참조하여 상세히 설명되는 바와 같이 플라이바이 시퀀서(178)에 의해 카테고리화되며, 시퀀서는 데이타가 플라이바이될 때 패킷의 바이트를 검사하여 패킷을 요약하는 데 사용되는 바이트들로부터 상태를 상생헌다. 이러한 생성된 상태는 멀티플렉서(180)에 의해 데이타에 합쳐지며 결과 데이타가 SRAM(182)에 저장된다. 패킷 제어 시퀀서(176)는 플라이바이 시퀀서(178)를 감시하고, 미디어 액세서 제어기(172)로부터 정보를 검사하며, 데이타의 바이트를 계수하고, 어드레스를 생성하고, 상태를 이동시키며, 어셈블리 레지스터(174)에서 SRAM(182), 결과적으로 DRAM(188)으로의 데이타 이동을 관리한다. 패킷 제어 시퀀서(176)는 SRAM 제어기(183)를 통해 SRAM(182) 내의 버퍼를 관리하며, 또한 SRAM(182)에서 DRAM(188) 내의 버퍼로 언제 데이타가 이동되어야 하는지를 DRAM 제어기(816)에 지시한다. 패킷에 대한 데이타 이동이 완료되고 모든 데이타가 DRAM(188) 내의 버퍼로 이동된 때, 패킷 제어 시퀀서(176)는 플라이바이 시퀀서(178)에서 생성된 상태를 SRAM(182)으로, 그리고 DRAM(188) 버퍼의 시작으로 이동시켜 패킷 데이타에 첨부한다. 이어서, 패킷 제어 시퀀서(176)는 큐 관리자(184)에게 수신 버퍼 기술자를 수신 큐 안으로 입력할 것으로 요구하며, 큐 관리자는 프로세서(170)에게 패킷이 하드웨어 논리(171)에 의해 처리되어 그 상태가 용약되었음을 통지한다.
도 8은 플라이바이 시퀀서(178)가 수개의 단(tier)을 갖는다는 것을 나타내는데, 각 단은 일반적으로 당해 계층에 관한 상태를 생성하기 위하여 패킷 헤더의특정 부분, 따라서 특정 프로토콜 계층에 집중된다. 본 실시예에서 플라이바이 시퀀서(178)는 미디어 액세스 제어 시퀀서(191), 망 시퀀서(192), 전달 시퀀서(194) 및 세션 시퀀서(195)를 포함한다. 더 높은 프로토콜 계층에 관한 시퀀서가 부가적으로 제공될 수 있다. 플라이바이 시퀀서(178)는 패킷 제어 시퀀서(176)에 의해 리셋되며, 플라이바이 시퀀서에게 주어진 바이트가 어셈블리 레지스터(174)로부터 입수가능한지의 여부를 알려주는 패킷 제어 시퀀서에 의해 포인터가 주어진다. 미디어 액세스 제어 시퀀서(191)는 바이트 0-5를 관찰함으로써 패킷이 다른 호스트가 아닌 호스트(152)로 또는 다른 호스트에 더하여 호스트(152)로 어드레스되었는지를 결정한다. 패킷의 오프셋(12, 13)은 또한 미디어 액세스 제어 시퀀서(191)에 의해 처리되어 타입 필드, 예컨대 패킷이 이더넷 또는 802.3인지가 결정된다. 타입 필드가 이더넷인 경우, 이들 바이트는 미디어 액세스 제어 시퀀서(191)에게 패킷의 망 프로토콜 타입을 알려준다. 802.3의 경우, 이들 바이트는 대신 전체 프레임의 길이를 나타내며, 미디어 액세스 제어 시퀀서(191)는 패킷의 8 바이트를 더 검사하여 망 계층 타입을 결정한다.
대부분의 패킷에 대해 망 시퀀서(192)는 수신된 헤더 길이가 정확한 길이를 가짐을 확인하고 망 계층 헤더를 체크섬한다. 고속 경로 지원자에 대해 망 계층 헤더는 미디어 액세스 제어 시퀀서(191)에 의해 행해진 분석으로부터 IP 또는 IPX인 것으로 알려져 있다. 예컨대 타입 필드가 802.3이고 망 프로토콜이 IP라고 가정하면, 망 시퀀서(192)는 IP 타입을 결정하기 위하여 바이트 22에서 시작되는 망 계층 헤더의 제1 바이트들을 분석한다. IP 헤더의 제1 바이트들은 패킷이 어떤 IP타입을 포함하는지를 결정하기 위하여 망 시퀀서(192)에 의해 처리된다. 패킷이 예컨대 IP 버젼 4를 포함하는 것으로 결정된 경우 망 시퀀서(192)에 의해 추가적인 처리가 수행되는데, 망 시퀀서는 또한 패킷의 전달 헤더 프로토콜의 지시를 위해 10 바이트 IP 헤더 안으로 배치된 프로토콜 타입을 관찰한다. 예컨대, 이더넷 상의 IP에 대해 IP 헤더는 오프셋 14에서 시작되며, 프로토콜 타입 바이트는 오프셋 23인데, 이는 망 논리에 의해 처리되어 전달층 프로토콜이 예컨대 TCP인지가 결정된다. 망 시퀀서(192)는 전달층 헤더를 검증하기 위하여 통상 20-40 바이트인 망 계층 헤더의 길이로부터 패킷의 전달층 헤더의 시작을 결정한다. 전달 시퀀서(194)는 적어도 TCP의 경우에 IP 헤더로부터의 정보를 포함할 수 있는 전달층 헤더 및 데이타에 대한 체크섬을 생성할 수 있다.
TCP 패킷의 예에서, 전달 시퀀서(194)는 또한 패킷이 네트바이오스 또는 다른 프로토콜인지와 같이 메시지에 대한 TCP 소스 및 목적지 포트를 부분적으로 결정하기 위하여 헤더의 전달층 부분 내의 제1 수개 바이트를 분석한다. TCP 헤더의 바이트 12는 전달 시퀀서(194)에 의해 처리되어 TCP 헤더 길이가 결정, 검증된다. TCP 헤더의 바이트 13은 확인 플래그 및 푸시 플래그와 별도로 프로세서가 패킷을 예외로서 카테고리화하도록 할 수 있는 리셋 및 핀과 같은 미예측 옵션을 지시할 수 있는 플래그를 포함한다. TCP 오프셋 바이트 16 및 17은 하드웨어 논리(171)에 의해 인출되어 저장된 체크섬이며, 프레임의 나머지는 체크섬에 대해 검증된다.
세션 시퀀서(195)는 세션층 헤더의 길이를 결정하는데, 이 길이는 네트바이오스의 경우 단지 4 바이트이며, 이 중 2 바이트는 네트바이오스 페이로드 데이타의 길이를 나타내지만, 다른 프로토콜에 대해서는 훨씬 더 클 수 있다. 세션 시퀀서(195)는 또한 메시지의 타입을, 예컨대 고속 경로가 특히 이로울 수 있는 판독 또는 기록으로서 카테고리화하는 데 사용될 수 있다. 추가적인 상위 계층 논리 처리가 메시지 타입에 따라 패킷 제어 시퀀서(176) 및 플라이바이 시퀀서(178)의 하드웨어 논리(171)에 의해 수행될 수 있다. 따라서, 하드웨어 논리(171)는 단일 바이트 스트림으로부터 선택된 바이트의 카테고리화에 의해 헤더의 하드웨어 처리를 지능적으로 행할 수 있으며, 패킷의 상태는 온더플라이 결정된 분류로부터 설정된다. 패킷 제어 시퀀서(176)가 모든 패킷이 플라이바이 시퀀서(178)에 의해 처리되었음을 검출한 경우, 패킷 제어 시퀀서(176)는 플라이바이 시퀀서(178)에 의해 생성된 상태 정보 및 패킷 제어 시퀀서(176)에 의해 생성된 임의의 상태 정보를 더하고, 프로세서(170)에 의한 패킷 처리의 편리를 위해 이 상태 정보를 패킷에 첨부한다(정면에 더한다). 패킷 제어 시퀀서(176)에 의해 생성된 추가적인 상태 정보는 미디어 액세스 제어기(172) 상태 정보 및 발견된 임의의 에러, 또는 어셈블리 레지스터 또는 DRAM 버퍼에서의 데이타 오버플로우, 또는 패킷에 관한 다른 잡다한 정보를 포함한다. 패킷 제어 시퀀서(176)는 또한 큐 관리기(184)를 통해 수신 버퍼 큐 및 수신 통계 큐 안에 엔트리를 저장한다.
하드웨어 논리(171)에 의한 패킷 처리의 이점은 통상적인 순차 소프트웨어 프로토콜 처리에 비해 패킷이 각 프로토콜 계층 헤더의 처리를 위해 저장되고, 복사되거나, 스토리지로부터 인출될 필요가 없으므로 각 패킷에 대한 처리 효율의 커다란 증가 및 처리 시간의 절약을 제공한다는 것이다. 패킷은 망으로부터 비트가수신되는 속도, 예컨대 100 baseT 접속에서 100 메가비트/초의 속도로 처리될 수 있다. 따라서 이 속도로 수신되고 60 바이트의 길이를 가진 패킷을 카테고리화하기 위한 시간은 약 5 마이크로초이다. 하드웨어 논리(171)로 이 패킷을 처리하여 패킷 데이타를 고속 경로를 통해 호스트 목적지로 전송하기 위한 전체 시간은 66 MHz PCI 버스에서는 약 16 마이크로초이며, 300 MHz 펜티엄 II 프로세서에 의한 통상적인 소프트웨어 프로토콜 처리는 분주한 장치에서 200 마이크로초가 걸릴 수 있다. 따라서 통상적인 순차 소프트웨어 프로토콜 처리를 이용하는 고속 CPU에 비해 한 차수 이상 크기의 처리 시간의 감소가 고속 경로(159)에 의해 달성될 수 있으며, 이는 CPU 인터럽트의 감소에 의해 제공되는 추가적인 시간 절약 및 호스트 버스 대역폭 절약을 고려하지 않고도 하드웨어 논리(171) 및 프로세서(170)에 의해 프로토콜 헤더를 처리함으로써 엄청난 가속이 제공됨을 입증한다.
프로세서(170)는 스토리지(185)에 유지된 각각의 수신 메시지 패킷에 대해 당해 패킷이 고속 경로(159)의 지원자인지를 선택하여, 그러한 경우 고속 경로가 이미 패킷이 속하는 접속에 대해 설정되었는지를 알기 위한 검사를 행한다. 이를 위하여, 프로세서(170)는 먼저 헤더 상태 개요를 검사하여 패킷 헤더가 고속 경로 지원자에 대해 정의된 프로토콜인지를 결정한다. 그렇지 않은 경우, 프로세서(170)는 INIC(150)의 DMA 제어기에게 패킷을 저속 경로(158) 처리를 위해 호스트로 전송할 것을 명령한다. 메시지의 저속 경로(158) 처리에서도, INIC(150)는 메시지 타입의 검증 및 결정과 같은 초기 프로시져를 수행하여 검증된 메시지를 적어도 호스트의 데이타 링크층(160)에 전송한다.
고속 경로(159) 지원자에 대해 프로세서(170)는 헤더 상태 개요가 INIC에 의해 유지되는 CCB와 일치하는지를 알기 위한 검사를 행한다. 그러한 경우, 패킷으로부터의 데이타는 고속 경로(159)를 호스트 내의 목적지(168)로 전송된다. 고속 경로(159) 지원자의 패킷 개요가 INIC에 의해 유지되는 CCB와 일치하지 않는 경우, 패킷은 저속 경로 처리를 위해 호스트(152)로 전송되어 메시지에 대한 CCB가 생성될 수 있다. 고속 경로(159)의 사용은 또한 단편화된 메시지 또는 다른 복잡한 경우에 대해서는 필요하지 않거나 바람직하지 않을 수 있다. 그러나, 대부분의 메시지에 대해서 INIC 고속 경로(159)는 메시지 처리를 크게 가속시킬 수 있다. 따라서 INIC(150)는 종래에 주어진 패킷의 운명을 결정하기 위하여 수개 프로토콜 계층 각각에서 상태 머신을 사용하는 것과는 반대로 온더플라이 방식으로 수집된 정보에 기초하여 목적지에 데이타를 직접 전송하는지를 결정하는 단일 상태 머신 프로세서(170)를 제공한다.
호스트(152)에서 수신된 지시 또는 패킷을 처리함에 있어서, 호스트의 프로토콜 드라이버는 지시가 고속 경로 또는 저속 경로인지에 기초하여 처리 루트를 선택한다. TCP/IP 또는 SPX/IPX 메시지는 설정된 접속을 갖는데, 이 접속으로부터 고속 경로 패킷과의 일치 및 고속 경로 패킷의 접속 목적지(168)로의 안내를 위하여 CCB가 드라이버에 의해 형성되어 INIC로 전송된다. TTCP/IP 메시지에 대해 드라이버는 메시지 목적지(168)를 찾는 것을 포함하는 초기 요구 패킷의 처리로부터 트랜잭션을 위한 접속 문맥을 생성한 다음 이 문맥을 당해 목적지로부터의 응답을 위한 고속 경로를 제공하기 위하여 CCB의 형태로 INIC에 전송할 수 있다. CCB는메시지의 프로토콜 계층 및 패킷에 관한 접속 및 상태 정보를 포함한다. 따라서, CCB는 소스 및 목적지 미디어 액세스 제어(MAC) 어드레스, 소스 및 목적지 IP 또는 IPX 어드레스, 소스 및 목적지 TCP 또는 SPX 포트, 타이머와 같은 TCP 변수, 윈도우 프로토콜을 슬라이딩하기 위한 수신 및 전송 윈도우, 및 세션층 프로토콜을 지시하는 정보를 포함할 수 있다.
INIC 내의 해쉬 테이블에 CCB를 캐시하는 것은 고속 경로(159)를 통해 패킷이 처리될 수 있는지를 결정하기 위하여 유입 패킷을 요약하는 워드들과의 빠른 비교를 제공하며, 전체 CCB는 또한 처리를 위한 INIC에 유지된다. 이러한 비교를 가속시키는 다른 방법은 B 트리와 같은 소프트웨어 프로세스 또는 콘텐트 어드레스 가능 메모리(CAM)와 같은 하드웨어 지원을 포함한다. INIC 마이크로코드 또는 비교기 회로가 CCB와 일치를 검출한 때, DMA 제어기는 CPU에 의한 어떠한 인터럽트, 프로토콜 처리 또는 복사 없이 패킷으로부터의 데이타를 목적지(168)에 배치한다. 수신된 메시지의 타입에 따라 데이타의 목적지는 세션층, 제시층 또는 애플리케이션층, 또는 호스트(152) 내의 파일 버퍼 캐시일 수 있다.
도 9는 파일 서버로서 사용되는 호스트(202)에 접속된 INIC(200)를 나타낸다. 이 INIC는 고속 이더넷으로 공지된 802.3 표준을 이용하는 수개의 망 접속을 위한 망 인터페이스를 제공한다. INIC(200)는 PCI 버스(205)에 의해 서버(202)에 접속되며, 서버는 전술한 바와 같이 애플리케이션층이 소스 또는 목적지일 수 있다하여도 MAC층(212), 망층(215), 전달층(217), 애플리케이션층(220), 및 애플리케이션층 위에 도시된 소스/목적지(222)를 포함하는 TCP/IP 또는 SPX/IPX 프로토콜 스택을 유지한다. INIC는 또한, 망 라인(210, 240, 242, 244)에 접속되는데, 이들은 바람직하게는 100 Mb/s의 데이타 전송을 각각 허용하는 고속 이더넷, 트위스트 쌍, 광섬유, 동축 케이블 또는 다른 라인들이며, 더 빠르거나 느린 데이타 속도도 가능하다. 망 라인(210, 240, 242, 244)은 각각의 망 라인으로부터 수신된 메시지 패킷을 각각 검증하고 요약할 수 있는 하드웨어 회로의 전용 로우(row)에 접속된다. 따라서, 라인(210)은 시퀀서(250)의 제1 수평 로우와 접속되고, 라인(240)은 시퀀서(260)의 제2 수평 로우와 접속되며, 라인(242)은 시퀀서(262)의 제3 수평 로우와 접속되고, 라인(244)은 시퀀서(264)의 제4 수평 로우와 접속된다. 패킷은 수평 하드웨어 로우들 중 하나에 의해 검증되고 요약된 후, 그 상태 요약과 함께 스토리지(270)에 저장된다.
망 프로세서(230)는 요약 및 INIC(200)에 저장된 CCB와의 비교에 기초하여 호스트에 의한 처리를 위해 저속 경로(231)를 따라 패킷을 전송해야 하는지를 결정한다. 대부분의 패킷은 순차 처리를 피할 수 있으며, 일치 CCB에 따라 서버 내의 데이타 목적지(222)로 직접 고속 경로(237)를 따라 DMA에 의해 전송되는 데이타 부분을 갖는다. 마찬가지로, 고속 경로(237)는 프로세서(230)의 데이타의 패킷으로의 분할 및 망 전송을 위한 전체 헤더의 추가에 의해 소스(222)에서 임의의 망 라인으로 직접 데이타를 전송하기 위한 수단을 제공하여, 다시 CPU 처리 및 인터럽트를 최소화한다. 명백히 하기 위하여 수평 시퀀서(250)만이 액티브 상태로 도시되지만, 실제로는 시퀀서 로우(250, 260, 262 및 264) 각각은 모든 다른 시퀀서 로우와 동시에 전이중 통신을 제공한다. 특수화된 INIC(200)는 소프트웨어 프로토콜스택에 따라 헤더를 순차적으로 처리하는 개량된 범용 호스트 CPU보다 메시지 패킷에 대한 작업이 훨씬 더 빠르다.
파일 전송과 같은 큰 메시지에 대해 가장 일반적으로 사용되는 망 프로토콜 중 하나는 TCP/IP 상의 서버 메시지 블록(SMB)이다. SMB는 프린터 또는 파일이 기록될 디스크와 같은 특정 동작을 위한 요구 자원이 동작을 발생시킨 호스트에 존재하는지 또는 호스트와 연관되어 있는지 또는 파일 서버와 같이 망에 접속된 다른 호스트에 위치하는지를 결정하는 리디렉터 소프트웨어와 함께 동작할 수 있다. SMB 및 서버/리디렉터는 통상 전달층에 의해 서비스되나, 본 발명에서는 그 대신 SMB 및 서버/리디렉터는 INIC에 의해 서비스될 수 있다. 이 경우, 큰 SMB 트랜잭션을 수신할 때 INIC 버퍼로부터 DMA 제어기에 의해 데이타를 전송하는 것을 호스트가 처리해야 하는 인터럽트를 크게 줄일 수 있다. 더욱이, DMA는 일반적으로 데이타를 파일 장치 캐시 내의 최종 목적지로 이동시킨다. 본 발명의 SMB 전송은 기본적으로 전술한 SMB 수신의 역을 따르며, 데이타는 호스트에서 INIC로 전송되어 버퍼에 저장되며, 관련 프로토콜 헤더는 망 라인을 통한 원격 호스트로의 전송을 위해 INIC 내의 데이타에 앞에 첨부된다. 고객 하드웨어를 통해 그리고 호스트의 반복 인터럽트 없이 다수의 패킷 및 다수의 TCP, IP, 네트바이오스 및 SMB 프로토콜 계층의 INIC에 의한 처리는 SMB 메시지의 망라인으로의 전송의 속도를 크게 증가시킬 수 있다.
도 10에 도시된 바와 같이, 주어진 메시지가 호스트(202) 또는 INIC(200)에 의해 처리되는지를 제어하기 위하여, 메시지 명령 드라이버(300)가 호스트(202) 내에 설치되어 호스트 프로토콜 스택(310)과 함께 작업할 수 있다. 명령 드라이버(300)는 메시지 송수신을 중재하고, CCB를 생성하며 INIC(200)로부터 CCB를 송수신함으로써 개선된 성능 외에 INIC의 기능이 사용자에게 투명해진다. 또한, 패킷이 고속 경로 지원자로서 표시되었는지에 따라 망(210)으로부터 수신된 메시지 패킷을 통상의 프로토콜 스택(310) 또는 명령 프로토콜 스택(300)으로 전송할 수 있는 INIC 메모리(304) 및 INIC 미니포트 드라이버(306)가 도시된다. 통상의 프로토콜 스택(310)은 고속 경로 지원자로서 표시되지 않아 명령 스택(300)에 의해 처리되지 않는 메시지의 통상적인 하위 계층 처리를 위해 데이타 링크층(312), 망층(314) 및 전달층(316)을 갖는다. 하위 계층 스택(310) 위에 통신 메시지에 따라 세션층, 제시 및/또는 애플리케이션층을 나타내는 상위 계층(318)이 상주한다. 유사하게, 명령 드라이버(300)는 데이타 링크층(320), 망층(322) 및 전달층(325)을 구비한다.
드라이버(300)는 망(210)으로의 메시지 전송을 위하여 상위 계층(318)으로부터 전송된 메시지가 명령 스택(300)에 의해, 그리고 순차적으로 INIC 고속 경로에 의해, 또는 통상적인 스택(310)에 의해 처리되어야 하는지를 결정하는 상위 계층 인터페이스(330)를 포함한다. 상위 계층 인터페이스(330)가 호스트의 프로토콜 스택에 의한 프로토콜 처리 후 망으로의 전송을 위해 통상적으로 의도되는 상위 계층(318)으로 적당한 메시지를 수신할 때, 이 메시지는 드라이버(300)로 전송된다. 그 다음, INIC는 INIC DMA 장치를 통한 전송을 위해 메시지 데이타의 망 크기화된 부분을 획득하고 이 데이타 부분에 헤더를 앞에 첨부하여 결과적인 메시지 패킷을 와이어로 전송한다. 역으로, 고속 경로 접속을 설정하는 데 사용될 망(210)으로부터의 TCP, TTCP, SPX 또는 유사한 메시지 패킷을 수신한 때에는 미니포트 드라이버(306)가 메시지 패킷을 처리를 위해 명령 드라이버(300)로 전송한다. 드라이버(300)는 메시지 패킷을 처리하여 메시지에 대한 문맥을 생성하며, 드라이버(302)는 고속 경로를 따라 동일 접속을 위한 후속 메시지의 데이타를 전송하기 위하여 이 문맥과 명령 지시를 CCB로서 INIC(200)로 역전송한다. INIC 캐시가 가득찬 경우 가장 오래 전에 사용된(LRU) 알고리즘이 사용되어도 수백 개의 TCP, TTCP, SPX 또는 유사한 CCB 접속이 INIC에 의해 무한히 유지될 수 있다. 드라이버(300)는 또한 CCB로서 INIC(200)로 전송되는 TTCP 요구에 대한 접속 문맥을 생성하여 요구에 대한 TTCP 응답의 고속 경로 전송을 허용할 수 있다. 가속되지 않은 프로토콜을 가진 메시지는 통상적으로 프로토콜 스택(310)에 의해 처리될 수 있다.
도 11은 마이크로소프트 프로토콜 메시지를 위한 명령 드라이버 소프트웨어의 TCP/IP 구현을 나타낸다. 통상적인 호스트 프로토콜 스택(350)은 MAC층(353), IP층(355) 및 TCP층(358)을 포함한다. 명령 드라이버(360)는 호스트 스택(350)과 함께 동작하여 망 메시지를 처리한다. 명령 드라이버(360)는 MAC층(363), IP층(366) 및 알라크리테크 TCP(ATCP)층(373)을 포함한다. 통상적인 스택(350) 및 명령 드라이버(360)는 INIC 미니포트 드라이버(306)와 상호작용하는 망 드라이버 인터페이스 사양(NDIS)층(375)을 공유한다. INIC 미니포트 드라이버(306)는 통상의 호스트 스택(350) 또는 ATCP 드라이버(360)에 의한 처리를 위한 수신 지시를 분류한다. TDI 필터 드라이버 및 상위 계층 인터페이스(380)는 유사하게 TDI 유저(382)로부터 망으로 전송된 메시지가 명령 드라이버로, 그리고 아마도 INIC의 고속 경로로 전송되거나 호스트 스택에 의해 처리되는지를 결정한다.
도 12는 클라이언트(190)와 서버(290) 간의 통상적인 SMB 교환을 나타내는데, 클라이언트와 서버는 모두 본 발명의 통신 장치를 구비하며, 이 통신 장치는 각각 데이타의 고속 경로 이동을 위한 접속을 정의하는 CCB를 유지한다. 클라이언트(190)는 INIC(150), 802.3 컴플라이언트 데이타 링크층(160), IP층(1162), TCP층(164), 네트바이오스층(166), 및 SMB층(168)을 포함한다. 클라이언트는 통신 처리를 위한 고속 경로(159) 및 저속 경로(157)를 갖는다. 마찬가지로, 서버(290)는 INIC층(200), 802.3 컴플라이언트 데이타 링크층(212), IP층(215), TCP층(217), 네트바이오스층(220), 및 SMB층(222)을 포함한다. 서버는 클라이언트(190)에 접속된 라인(210)은 물론 망 라인(240, 242, 244)에도 접속된다. 서버는 또한 통신 처리를 위한 저속 경로(231) 및 고속 경로(247)를 갖는다.
클라이언트(190)가 서버(290) 상에서 100KB 파일을 판독하기를 원한다고 가정할 때, 클라이언트는 서버(290) 상의 파일의 제1 64KB를 요구하는 판독 블록 로(Read Block Raw; RBR) SMB 명령을 망(210)을 통해 전송함으로써 시작할 수 있다. RBR 명령은 예컨대 단지 76 바이트일 수 있으며, 따라서 서버상의 INIC(200)는 메시지 타입(SMB) 및 비교적 작은 메시지 크기를 인식하며, 고속 경로를 통해 직접 서버의 네트바이오스로 76 바이트를 전송한다. 네트바이오스는 데이타를 SMB에 제공하며, SMB는 판독 요구를 처리하고 서버 데이타 버퍼 안으로 데이타의 64KB를 페치한다. 그 다음, SMB는 네트바이오스를 호출하여 데이타를 전송하고, 네트바이오스는 클라이언트를 위한 데이타를 출력한다. 통상의 호스트에서, 네트바이오스는 TCP 출력을 호출하고 64KB를 TCP로 전송하며, TCP는 데이타를 1460 바이트 세그먼트로 분할하여 각 세그먼트를 IP, 결국 MAC(저속 경로 231)을 통해 출력한다. 이 경우, 64KB 데이타는 INIC에 의해 유지되는 CCB를 나타내는 클라이언트-서버 SMB 접속에 관한 지시와 함께 ATCP 드라이버로 전송된다. 그 다음, INIC(200)는 호스트 버퍼로부터 DMA 1460 바이트 세그먼트로 진행하여 TCP, IP 및 MAC를 위한 헤더를 한 번에 추가하고 완성된 패킷을 망(210) (고속 경로 237) 상에 전송한다. INIC(200)는 전체 64KB 전송이 이루어질 때까지 이를 반복한다. 대개 64KB가 수신되었다는 클라이언트로부터의 확인 신호를 수신한 후에, INIC는 고속 경로(237)에 의해 나머지 36KB를 전송한다.
INIC(150)는 이 응답이 도달할 때 클라이언트(190) 상에서 동작하여 수신된 제1 프레임으로부터 접속이 고속 경로(159) 처리(TCP/IP, 네트바이오스, CCB 일치)를 수신하고 있다는 것을 인식하며, ATCP는 이 제1 프레임을 이용하여 메시지를 위한 버퍼 공간을 확보할 수 있다. 후자의 경우는 ATCP 고속 경로를 통해 프레임의 네트바이오스 부분의 제1 128 바이트를 호스트 네트바이오스에 직접 전송함으로써 행하여지는데, 이것은 네트바이오스/SMB에 모든 프레임 헤더를 제공한다. 네트바이오스/SMB는 이 헤더들을 분석하고, 요구 ID와의 일치에 의해 이것이 오리지날 원시판독(RawRead) 접속에 대한 응답이며 ATCP에 데이타가 배치될 버퍼의 64K 리스트를 제공한다는 것을 인식한다. 이 단계에서는 처리가 발생하는 동안 많은 프레임이 도달할 수 있지만 단 하나의 프레임이 도달하였다. 클라이언트 버퍼 리스트가 ATCP에 제공되자마자 ATCP는 전송 정보를 INIC(150)로 전송하며, INIC(150)는 버퍼 안으로 저장된 프레임 데이타에 대한 DMA화를 시작한다.
도 13은 단일 ASIC 칩(400) 내에 망 인터페이스 제어기 및 프로토콜 프로세서의 기능을 결합시킨 INIC(200)의 간단한 도면을 나타낸다. 이 실시예에서 INIC(200)는 서버 애플리케이션을 위한 고속 프로토콜 처리를 위해 설계된 전이중, 4 채널, 10/100 메가비트/초(Mbps) 지능망 인터페이스 제어기를 제공한다. 서버 애플리케이션을 위해 특별히 설계되었지만, INIC(200)는 TCP/IP, TTCP/IP 또는 SPX/IPX 프로토콜이 사용되고 있는 곳이라면 퍼스널 컴퓨터, 워크스테이션, 라우터 또는 다른 호스트에 접속될 수 있다.
INIC(200)는 트위스트 쌍, 동축 케이블 또는 광섬유와 같은 다수의 다른 도관을 따라 데이타를 전송할 수 있는 4개의 망 라인(210, 240, 242, 244)와 접속되는데, 각각의 접속은 SEEQ 테크놀로지 사의 모델 80220/80221 이더넷 미디어 인터페이스 어댑터와 같은 상용 물리층 칩을 통해 미디어 독립 인터페이스(MII)를 제공한다. 라인들은 바람직하게는 802.3 컴플라이언트이며 INIC와 관련하여 미래의 인터페이스 표준은 물론 4개의 완전 이더넷 노드, INIC 지원 10Base-T, 10Base-T2, 100Base-TX, 100Base-FX 및 100Base-T4를 구성한다. 물리층 식별 및 초기화는 호스트 드라이버 초기화 루틴을 통해 달성된다. 망라인(210, 240, 242, 244)과 INIC(200) 간의 접속은 MAC 서브층의 기본 기능을 수행하기 위한 논리 회로를 포함하는 MAC 장치, MAC-A(402), MAC-B(404), MAC-C(406) 및 MAC-D(408)에 의해 제어되어 기본적으로 INIC가 망라인(210, 240, 242, 244)에 언제 액세스할 것인지를 제어한다. MAC 장치(402-408)는 혼합된 멀티캐스트 또는 유니캐스트 모드로 동작하여 INIC가 망 모니터로서 기능하고 브로드캐스트 및 멀티캐스트 패킷을 수신하며 각 노드를 위한 다수의 MAC 어드레스를 구현할 수 있도록 한다. 또한, MAC 장치(402-408)는 간단한 망 관리 프로토콜(SNMP)에 사용될 수 있는 통계 정보를 제공한다.
MAC 장치(402-408)는 와이어(410, 412, 414, 416)에 의해 송수신 시퀀서, XMT RCV-A(418), XMT RCV-B(420), XMT RCV-C(422) 및 XMT RCV-D(424)에 각각 접속된다. 송수신 시퀀서 각각은 메시지 프레임이 당해 시퀀서를 통과할 때 온더플라이 방식으로 수개의 프로토콜 처리 단계를 수행할 수 있다. MAC 장치와 결합하여 송수신 시퀀서(418-422)는 데이타 링크, 망, 전달, 세션, 및 가능하다면 제시 및 애플리케이션 층 프로토콜들에 대한 패킷 상태를 하드웨어에서 컴파일하여 종래의 순차적인 소프트웨어 엔진에 비해 프로토콜 처리를 위한 시간을 크게 줄일 수 있다. 송수신 시퀀서(410-414)는 라인(426, 428, 430, 432)에 의해 DMA 제어기(438) 및 SRAM 제어기(442)를 포함하는 SRAM 및 DMA 제어기(444)에 접속된다. 스태틱 랜덤 액세스 메모리(SRAM) 버퍼(440)는 라인(441)에 의해 SRAM 제어기(442)에 결합된다. SRAM 및 DMA 제어기(444)는 라인(446)을 통해 외부 메모리 제어기(450)와 상호작용하여 외부 메모리 버스(445)를 통해 프레임을 IC 칩(400)에 인접한 다이나믹 랜덤 액세스 메모리(DRAM) 버퍼(460)로부터 송수신한다. DRAM 버퍼(460)는 4MB, 8MB, 16MB 또는 32MB로 구성될 수 있으며, 칩 상에 선택적으로 배치될 수 있다. SRAM 및 DMA 제어기(444)는 라인(464)을 통해 PCI 버스인터페이스 장치(BIU; 468)에 접속되는데, 이 장치는 INIC(200)와 PCI 인터페이스 버스(257) 사이의 인터페이스를 관리한다. 64비트 멀티플렉스 BIU(468)는 슬레이브 및 마스터 기능을 위하여 PCI 버스(257)에 대한 직접적인 인터페이스를 제공한다. INIC(200)는 64비트 또는 32비트 PCI 환경에서 동작할 수 있으며 어느 구성에서나 64비트 어드레싱을 지원할 수 있다.
마이크로프로세서(470)가 라인(472)에 의해 SRAM 및 DMA 제어기(444)에 접속되고, 라인(475)에 의해 PCI BIU(468)에 접속된다. 마이크로프로세서(470) 명령 및 레지스터 파일은 칩 제어 스토어(480)에 상주하는데, 이 스토어는 SRAM의 기록가능 온칩 제어 스토어(WCS) 및 판독 전용 메모리(ROM)를 포함하며, 라인(477)에 의해 마이크로프로세서에 접속된다. 마이크로프로세서(470)는 착신 프레임을 처리하고 호스트 명령을 처리하고 망 트래픽을 전송하며 PCI 버스 트래픽을 전송할 수 있는 프로그래머블 상태 머신을 제공한다. 3개의 프로세서가 매 클럭 싸이클 동안 단일 명령을 시작하여 완수하는 3 레벨 파이프라인 아키텍쳐의 공유 하드웨어를 사용하여 구현된다. 수신 프로세서(482)는 주로 통신을 수신하기 위해 사용되며, 송신 프로세서(484)는 주로 전이중 통신을 용이하게 하도록 통신을 전송하는 데 사용되며, 유틸리티 프로세서(486)는 PCI 레지스터 액세스의 감시 및 제어를 포함하는 다양한 기능을 제공한다.
세 프로세서(482, 484, 486)를 위한 명령은 온칩 제어 스토어(480)에 상주한다. 따라서, 세 프로세서의 기능은 쉽게 재정의될 수 있어, 마이크로프로세서(470)가 주어진 환경에 적응할 수 있게 된다. 예컨대, 수신 기능에 필요한 처리량은 송신 또는 유틸리티 기능에 필요한 것보다 클 수 있다. 이 경우, 몇몇 수신 기능은 송신 프로세서(484) 및/또는 유틸리티 프로세서(486)에 의해 수행될 수 있다. 대안으로, 파이프라이닝의 추가 레벨이 생성되어 3개 대신 4개 이상의 가상 프로세서를 생성할 수 있는데, 이 추가 레벨은 수신 기능에 전용화된다.
이 실시예에서 INIC(200)는 DRAM(460) 내의 테이블에 유지되는 256 CCB까지 지원할 수 있다. 그러나, 또한 순차 검색을 저장하기 위하여 SRAM 내에 해쉬 순서의 CCB 인덱스가 존재한다. 해쉬가 발생하면, CCB는 SRAM내에 캐시되는데, 이 실시예에서는 SRAM에 16 CCB까지 캐시된다. SRAM에 캐시된 16 CCB의 할당은 후술하는 바와 같이 가장 오래 전에 사용된 레지스터에 의해 처리된다. 이들 캐시 위치는 송신 프로세서(484)와 수신 프로세서(486) 간에 공유되어 더 많은 부하를 가진 프로세서가 더 많은 캐시 버퍼를 사용할 수 있게 된다. 또한, 시퀀서들 간에 공유되는 8개의 헤더 버퍼 및 8개의 명령 버퍼가 존재한다. 주어진 헤더 또는 명령 버퍼는 링크가 프레임 기반에서 동적일 때 특정 CCB 버퍼에 정적으로 링크되지 않는다.
도 14는 파이프라인 스테이지 각각에 대응하는 클럭 증분 I, II 및 III에 따른 3개의 교대 단계에서 수신, 송신 및 유틸리티 프로세서를 위한 명령을 실행하는 파이프라인 마이크로프로세서(470)를 나타낸다. 각 단계는 다른 기능을 맡으며, 3개 프로세서 각각은 각각의 클럭 증분 동안 상이한 단계를 복사한다. 각 프로세서는 대개 제어 스토어(480)로부터의 상이한 명령 스트림 상에서 동작하며, 각각은 각 단계를 통해 그 자신의 프로그램 카운터 및 상태를 전송한다.
일반적으로, 파이프라인 마이크로프로세서의 제1 명령 단계(500)는 명령을 완료하고 그 결과를 목적지 오퍼랜드에 저장하며, 다음 명령을 페치하고 이 다음 명령을 명령 레지스터에 저장한다. 제1 레지스터 세트(490)는 명령 레지스터를 포함한 다수의 레지스터를 제공하며, 제1 레지스터 세트를 위한 한 세트의 제어부(492)는 제1 레지스터 세트(490)로의 저장을 위한 제어부를 제공한다. 몇몇 아이템이 제어부(492)에 의한 수정 없이 제1 단계를 통해 전송되며, 그 대신 제1 레지스터 세트(490) 또는 RAM 파일 레지스터(533) 안으로 간단히 복사된다. 제2 명령 단계(560)는 제1 레지스터 세트(490)의 명령 레지스터에 저장된 명령을 전반적으로 디코드하고 생성된 후 제2 레지스터 세트(496)의 디코드 레지스터에 저장되는 오퍼랜드들을 모으는 명령 디코더 및 오퍼랜드 멀티플렉서(498)를 구비한다. 제1 레지스터 세트(490), 제2 레지스터 세트(496), 및 제3 명령 단계(600)에서 사용되는 제3 레지스터 세트(501)는 도 15A-C의 상세 도면에 도시된 바와 같이 동일 레지스터를 많이 포함한다. 명령 디코더 및 오퍼랜드 멀티플렉서(498)는 제1 단계(500) 및 제2 단계(560) 모두에서 동작하는 RAM 파일 레지스터(533)의 두 어드레스 및 데이타 포트로부터 판독할 수 있다. 프로세서(470)의 제3 단계(600)는 제2 레지스터 세트로부터의 오퍼랜드 상에 ALU 연산을 행하는 산술 논리 장치(ALU; 602)를 구비하여 연산 결과를 제3 레지스터 세트(501)에 포함된 결과 레지스터에 저장한다. 스택 교환부(608)는 레지스터 스택들을 재순서화할 수 있으며, 큐 관리기(503)는 프로세서(470)를 위해 큐들을 배열할 수 있는데, 이 결과는 제3 레지스터 세트에 저장된다.
명령은 원형 파이프라인(505)에 의해 도시된 바와 같이 제1 단계가 제3 단계를 따르면서 계속된다. 어느 주어진 단계에서 조합적인 지연을 최소화하기 위하여각종 기능이 명령 실행의 3 단계에 분배됨에 주의한다. 이 실시예에서의 66MHz의 주파수에서 각 클럭 증분은 완료를 위해 15 나노초가 걸리며 세 프로세서의 각각에 대해 하나의 명령을 완료하는 데에는 총 45 나노초가 걸린다. 도 15A-C에 회전 명령 단계들이 더 상세히 도시되어 있는데, 여기서 각 단계는 다른 도면에 도시되어 있다.
보다 구체적으로, 도 15A는 제1 레지스터 세트(490) 및 관련 제어부(492)를 포함하는 제1 단계(500)의 몇몇 특정 하드웨어 기능을 나타낸다. 제1 레지스터 세트(492)의 제어부는 어드레스 및 기록 데이타를 SRAM 어드레스 및 데이타 레지스터(520) 안으로 로딩하기 위한 논리 제어부인 SRAM 제어부(502)를 포함한다. 따라서, 제3 단계(600)로부터의 ALU(602)의 출력은 SRAM 제어부(502)에 의해 SRAM 어드레스 및 데이타 레지스터(520)의 어드레스 레지스터 또는 데이타 레지스터 안으로 제공될 수 있다. 마찬가지로 부하 제어부(504)는 파일에 대한 문맥을 파일 문맥 레지스터(522)에 기록하기 위한 제어부를 제공하며, 다른 부하 제어부(506)는 여러 잡다한 데이타를 플립플롭 레지스터(525)에 저장하기 위한 제어부를 제공한다. 전송 비트가 설정되었는지와 같은 ALU 상태 코드는 제1 단계에서 연산이 수행되지 않고 ALU 상태 코드 레지스터(528) 안으로 클럭된다. 플래그 디코드(508)는 플래그 레지스터(530)에 저장되는 록 설정과 같은 각종 기능을 수행할 수 있다.
RAM 파일 레지스터(533)는 어드레스 및 데이타를 위한 단일 기록 포트와 어드레스 및 데이타를 위한 2개의 판독 포트를 구비하며, 따라서 하나 이상의 레지스터가 한 번에 판독될 수 있다. 전술한 바와 같이, RAM 파일 레지스터(533)는 제1 단계(500)에서 기록되고 제2 단계(560)에서 판독되므로 기본적으로 제1 및 제2 단계를 걸친다. 명령 레지스터(535)에 저장된 제어 저장 명령(510)이 제어 스토어(480)(도시되지 않음)로부터의 새로운 데이타에 기인한 프로세서의 리프로그래밍을 허용한다. 이를 위한 어드레스가 페치 제어 레지스터(511)에 생성되는데, 이 레지스터는 그 안에 저장된 어느 어드레스가 페치되어야 할지를 결정한다. 부하 제어부(515)는 제어 스토어에 대한 페치 어드레스와 같이 동작하는 프로그램 카운터(540)를 위한 명령을 제공한다. 이 단계에서 다른 동작을 받지 않고 3 레지스터의 후입선출 스택(544)이 제1 레지스터 세트로 복사된다. 최종적으로, 디버그 어드레스(548)를 위한 부하 제어부(517)가 선택적으로 포함되어 발생할 수 있는 에러의 정정을 행한다.
도 15B는 RAM 파일 레지스터(533)로부터 어드레스 및 데이타를 판독하는 것을 포함하는 제2 마이크로프로세서 단계(560)를 나타낸다. 스크래치 SRAM(565)이 제1 레지스터 세트의 SRAM 어드레스 및 데이타 레지스터(520)로부터 기록되는데, 이 레지스터는 제3 단계에서 증분될 처음 2 단계를 통과하는 레지스터를 포함한다. 스크래치 SRAM(565)은 전술한 스택(544), 디버그 어드레스(548) 및 SRAM 어드레스 및 데이타 레지스터를 제외하고 제1 레지스터 세트의 대부분의 레지스터와 같이 명령 디코더 및 오퍼랜드 멀티플렉서(498)에 의해 판독된다. 명령 디코더 및 오퍼랜드 멀티플렉서(498)는 각종 레지스터 세트(490) 및 SRAM(565)을 관찰하고 명령을디코드하고 다음 단계에서의 연산을 위한 오퍼랜드를 모아 아래의 ALU(602)로 제공될 오퍼랜드를 구체적으로 결정한다. 명령 디코더 및 오퍼랜드 멀티플렉서(498)의 결과는 ALU 오퍼랜드(579, 582), ALU 상태 코드 레지스터(580), 및 이 실시예에서 32 큐를 제어할 수 있는 큐 채널 및 명령 레지스터(587)를 포함하는 제2 레지스터 세트(496) 내의 다수의 레지스터에 저장된다. 세트(496) 내의 레지스터들 중 수 개는 프로그램 제어(590), 문자 필드(589), 테스트 선택(584) 및 플래그 선택(585)을 포함하는 디코더(498)에 의한 실질적인 디코딩 없이 명령 레지스터(535)로부터 직접 로딩된다. 제1 단계(500)의 파일 문맥(522)과 같은 다른 레지스터들은 항상 제2 단계(560)의 파일 문맥(577)에 저장되지만, 또한 멀티플렉서(572)에 의해 모이는 오퍼랜드로서 처리될 수 있다. 스택 레지스터(544)는 간단히 스택 레지스터(594)에 복사된다. 프로그램 카운터(540)는 이 단계에서 증분되어 레지스터(592)에 저장된다. 또한, 선택적인 디버그 어드레스(548)이 증분(570)되며, 부하 제어(575)가 이 점에서 파이프라인(505)으로부터 공급되어 각 단계에서의 에러 제어를 허용할 수 있게 되는데, 이 결과는 디버그 어드레스(598)에 저장된다.
도 15C는 ALU 및 큐 연산을 포함하는 제3 마이크로프로세서 단계(600)를 나타낸다. ALU(602)는 가산기, 우선순위 엔코더 및 다른 표준 논리 기능을 포함한다. ALU의 결과는 레지스터 ALU 출력(618), ALU 상태 코드(620) 및 목적 오퍼랜드 결과(622)에 저장된다. 파일 문맥 레지스터(616), 플래그 선택 레지스터(626) 및 문자 필드 레지스터(630)는 이전 단계(560)로부터 간단히 복사된다. 테스트 멀티플렉서(604)는 상태 점프가 점프를 발생시키는지를 결정하도록 제공되는데, 이 결과는 테스트 결과 레지스터(624)에 저장된다. 테스트 멀티플렉서(604)는 페치 제어(511)와 같은 유사한 결정과 함께 제1 단계(500)에서 수행될 수도 있다. 스택 교환(608)은 스택(594)으로부터 프로그램 카운터를 페치하거나 스택 상에 프로그램 카운터를 배치함으로써 스택을 상하로 시프트시키는데, 그 결과는 프로그램 제어(634), 프로그램 카운트(638) 및 스택 레지스터(640)에 저장된다. SRAM 어드레스는 이 단계(600)에서 선택적으로 증분된다. 다른 디버그 어드레스(642)를 위한 다른 부하 제어(610)는 이 시점에서 파이프라인(505)으로부터 에러 제어를 허용하도록 강요될 수 있다. 도면에 함께 도시된 QRAM 및 QALU(606)는 큐 채널 및 명령 레지스터(587)로부터 판독하여 SRAM에 저장하고 큐를 재배치하고 데이타 큐를 관리하는 것이 필요한 경우 데이타 및 포인터를 추가 또는 제거하며, 이 결과를 테스트 멀티플렉서(604) 및 큐 플래그 및 큐 어드레스 레지스터(628)에 전송한다. 따라서, QRAM 및 QALU(606)는 3 프로세서를 위한 큐를 관리할 의무를 갖는데, 이는 통상 CPU 상에서 소프트웨어에 의해 순차적으로 행해지는 작업이며, 큐 관리기(606)는 대신 가속 및 순차적으로 평행한 하드웨어 큐잉을 제공한다.
도 16은 큐 관리기(606)에 의해 관리되는 2개의 32 하드웨어 큐를 나타내는데, 큐 각각은 SRAM 헤드, SRAM 테일 및 DRAM 보디 내의 정보를 큐잉하는 능력을 구비하여 각 큐에 대한 연장 및 개별 구성을 허용한다. 따라서, FIFO(700)는 그 수 및 용량이 다른 실시예에서는 변할 수 있지만 총 32 바이트 중 8 바이트를 각각 포함하는 SRAM 기억 장치(705, 707, 709, 711)를 구비한다. 마찬가지로, FIFO(702)는 SRAM 기억 장치(713, 715, 717, 719)를 구비한다. SRAM 장치(705,707)은 FIFO(700)의 헤드이고, 장치(709, 711)는 FIFO(700)의 테일이며, 장치(713, 715)는 FIFO(702)의 헤드이고, 장치(717, 179)는 FIFO(702)의 테일이다. FIFO(700)에 대한 정보는 화살표 722로 도시된 바와 같이 헤드 장치(705 또는 707)에 기록될 수 있으며, 화살표 725로 도시된 바와 같이 테일 장치(711 또는 709)로부터 판독될 수 있다. 그러나, 특정 엔트리는 헤드 장치(705 또는 707)에 기록되거나 그로부터 판독되는 것이 모두 가능하거나, 테일 장치(709 또는 711)에 기록되거나 그로부터 판독되는 것이 모두 가능하여 데이타 이동 및 지연을 최소화할 수 있다. 마찬가지로, FIFO(702)에 대한 정보는 대개 화살표 733으로 도시된 바와 같이 헤드 장치(713 또는 715)에 기록되며, 화살표 739로 도시된 바와 같이 테일 장치(717 또는 719)로부터 판독되지만, 그 대신 동일 헤드 또는 판독 장치로부터 판독되고 기록될 수 있다.
SRAM FIFO(700, 702)는 모두 DRAM(460)에 접속되는데, 이는 가상적으로 제한되지 않은 FIFO의 연장을 허용하여 SRAM 헤드 및 테일이 가득찬 상황을 처리할 수 있게 한다. 예컨대 Q-제로라는 32 큐의 제1 큐는 FIFO(700)의 헤드 또는 테일에 큐잉되는 대신에 큐 관리기의 지시하에 동작하는 DMA 장치에 의해 화살표 727로 도시된 바와 같이 DRAM(460)에 엔트리를 큐잉할 수 있다. DRAM(460)에 저장된 엔트리는 화살표 730으로 도시된 바와 같이 SRAM 장치(709)로 반환되어 당해 FIFO의 길이 및 하강 시간을 연장시킨다. SRAM에서 DRAM으로의 전송은 대개 SRAM이 가득찰 때 예약되는데, 이는 DRAM이 더 느리고 DMA 이동이 추가적인 지연을 유발하기 때문이다. 따라서, Q-제로는 큐 관리기(606)에 의해 FIFO(700) 및 DRAM(460) 양자에저장된 엔트리를 포함한다. 또한, 예컨대 Q-27에 대응할 수 있는 FIFO(702)에 관련된 정보는 화살표 735로 도시된 바와 같이 DMA에 의해 DRAM(460) 안으로 이동될 수 있다. 느리지만 비용 효과적인 DRAM(460)에 큐잉하는 용량은 초기화동안 유저가 정의할 수 있어 원하는 대로 큐의 크기를 변경할 수 있게 된다. DRAM(460)에 큐잉된 정보는 화살표 737로 도시된 바와 같이 SRAM 장치(717)로 반환된다.
32 하드웨어 큐 각각의 상태는 도 17에 도시된 바와 같이 4개의 32 비트 레지스터의 세트(740)에 편리하게 유지되고 그로부터 액세스되는데, 각 레지스터 내의 특정 비트는 특정 큐에 대응한다. 레지스터는 Q-Out_Ready(745), Q-In_Ready(750), Q-Empty(755) 및 Q-Full(760)으로 표시된다. 특정 비트가 Q-Out_Ready 레지스터(750)에 설정된 경우, 이 비트에 대응하는 큐는 판독될 준비가 된 정보를 갖는 반면, Q-In_Ready 레지스터(752) 내의 동일 비트의 설정은 큐가 기록될 준비가 되었다는 것을 의미한다. 마찬가지로, Q-Empty 레지스터(755) 내의 특정 비트의 포지티브 설정은 이 비트에 대응하는 큐가 비어 있다는 것을 의미하며, Q-Full 레지스터(760) 내의 특정 비트의 포지티브 설정은 이 비트에 대응하는 큐가 가득차 있다는 것을 의미한다. 따라서, Q-Out_Ready(745)는 비트 27(752, 28(754), 29(756) 및 30(758)을 포함하는 비트 제로(746) 내지 31(748)을 포함한다. Q-In_Ready(750)는 비트 27(766), 28(768, 29(770) 및 30(772)를 포함하는 비트 제로(762) 내지 31(764)을 포함한다. Q-Empty(755)는 비트 27(778), 28(780), 29(782) 및 30(784)를 포함하는 비트 제로(774) 내지 31(776)을 포함하며, Q-Full(760)은 비트 27(790), 28(792), 29(794) 및 30(796)을 포함하는 비트제로(786) 내지 31(788)을 포함한다.
FIFO(700)에 대응하는 Q-제로는 모든 가능한 버퍼에 대한 어드레스의 리스트를 유지하는 자유 버퍼 큐이다. 이 큐는 마이크로프로세서 또는 다른 장치가 자유 버퍼 어드레스를 필요로 할 때 어드레스되며, 따라서 공통적으로 인식가능 DRAM(460)을 포함한다. 따라서, 자유 버퍼 어드레스를 필요로 하는 장치는 그 어드레스를 얻기 위해 Q-제로를 검사한다. FIFO(702)에 대응하는 Q-27은 수신 버퍼 기술자 큐이다. 수신 시퀀서에 의해 수신 프레임을 처리한 후 시퀀서는 Q-27에 프레임에 대한 기술자를 저장하기 위하여 검색한다. 이러한 기술자에 대한 장소가 SRAM 내에 즉시 가능하면, Q-In_Ready(750)의 비트 27(766)이 설정된다. 그렇지 않은 경우, 시퀀서는 큐 관리기가 SRAM에서 DRAM으로의 DMA 이동을 시작하여 수신 기술자를 저장할 공간을 비우기를 기다려야 한다.
SRAM과 프로세서, 송수신 시퀀서들 사이, 또한 SRAM과 DRAM 사이에서의 큐 엔트리의 이동을 관리하는 큐 관리기의 동작이 도 18에 상세히 도시되어 있다. 큐를 이용하는 요구는 프로세서 요구(802), 송신 시퀀서 요구(804), 및 수신 시퀀서 요구(806)를 포함한다. 큐에 대한 다른 요구는 DRAM/SRAM 요구(808) 및 SRAM/DRAM 요구(810)인데, 이는 큐의 DRAM 및 SRAM 헤드 또는 테일간에 데이타를 이동함에 있어서 큐 관리기에 의해 동작한다. 이러한 각종 요구 중 어느 요구가 다음 싸이클에서 큐 관리기를 사용하게 될 것인지를 결정하는 것은 우선순위 논리 중재기(815)에 의해 처리된다. 고주파수 동작을 가능하게 하기 위하여 큐 관리기는 파이프라인화되며, 레지스터 A(818) 및 레지스터 B(820)가 일시적인 스토리지를 제공하며,상태 레지스터(822)가 다음 갱신 때까지 상태를 유지한다. 큐 관리기는 DMA를 위한 우수 싸이클, 송수신 시퀀서 요구들, 및 프로세서 요구를 위한 기수 싸이클을 예약한다. 이중 포트 QRAM(825)이 큐 각각에 관한 변수를 저장하는데, 각 큐에 대한 변수는 헤드 기록 포인터, 헤드 판독 포인터, 큐의 SRAM 상태에 대응하는 테일 기록 포인터 및 테일 판독 포인터, 및 큐의 DRAM 상태 및 큐의 크기에 대응하는 보디 기록 포인터 및 보디 판독 포인터를 포함한다.
중재기(815)가 수행될 다음 동작을 선택한 후, QRAM(825)의 변수가 페치되고 QALU(828)에 의해 선택된 동작에 따라 수정되며, SRAM 판독 요구(830) 또는 SRAM 기록 요구(840)가 생성된다. 변수가 갱신되고, 갱신된 상태는 QRAM(825)은 물론 상태 레지스터(822)에 저장된다. 상태는 또한 중재기(815)로 공급되어 미리 요구된 동작이 이행되었음을 알려 요구의 중복을 방지한다. 상태 레지스터(822)는 4개의 큐 레지스터 Q-Out_Ready(745), Q-In_Ready(750), Q-Empty(755) 및 Q-Full(760)을 갱신하여 액세스된 새로운 큐 상태를 반영한다. 마찬가지로 당해 큐에 대해 DMA를 통해 SRAM 헤드 및 테일에 액세스되는 SRAM 어드레스(833), 보디 기록 요구(835) 및 보디 판독 요구(838)가 갱신된다. 대안으로, 각종 프로세스는 멀티플렉서(846)에 의해 선택되고 SRAM 기록 요구(840)로 파이프라인되는 Q 기록 데이타(844)에 의해 도시된 바와 같이 큐에 기록되기를 원할 수 있다. SRAM 제어기는 액세스된 큐의 테일을 기록하거나 헤드를 판독하고 확인 신호를 반환함으로써 판독 및 기록 요구를 서비스한다. 이러한 방식으로 각종 큐가 이용되며 이들의 상태가 갱신된다.
도 19A-C는 INIC 캐시 메모리에 어느 문맥 또는 CCB를 유지할 것인지를 선택하기 위해 사용되는 가장 오래 전에 사용된 레지스터(900)를 나타낸다. 이 실시예에서 INIC는 주어진 시간에 SRAM에 16 CCB까지 캐시할 수 있으며, 따라서 새로운 CCB가 캐시될 때 오래된 CCB가 종종 제거되는데, 제거된 CCB는 대개 레지스터(900)에 의해 가장 오래 전에 사용된 CCB인 것으로 선택된다. 이 실시예에서 최대 256 CCB를 위한 해쉬 테이블이 또한 SRAM에 유지되며, 최대 256개의 가득찬 CCB가 DRAM에 유지된다. 가장 오래 전에 사용된 레지스터(900)는 16개의 4 비트 블록(R0-R15)을 갖는데, 이들 각각은 SRAM 캐시 장치에 대응한다. 초기화 후 블록들은 0-15로 번호가 매겨지는데 번호 0은 가장 오래 전에 사용된(LRU) 캐시 장치를 나타내는 블록에 임의로 저장되고 번호 15는 가장 최근에 사용된(MRU) 캐시 장치를 나타내는 블록에 저장된다. 도 19A는 LRU 블록(R0)이 번호 9를 유지하고 MRU 블록(15)이 번호 6을 유지하고 있는 임의의 시간에서의 레지스터(900)를 나타낸다.
SRAM에 현재 유지되고 있는 것과 다른 CCB가 캐시되어야 할 때, 도 19A에서 번호 9를 유지하고 있는 LRU 블록(R0)이 판독되며, 새로운 CCB가 번호 9에 대응하는 SRAM 캐시 장치에 저장된다. 번호 9에 대응하는 새로운 CCB는 이제 가장 최근에 사용된 CCB이므로, 번호 9는 도 19B에 도시된 바와 같이 MRU 블록에 저장된다. 다른 번호들은 모두 왼쪽으로 한 레지스터 블록이 시프트되며 LRU 블록에는 번호 1이 남는다. 번호 9에 대응하는 SRAM 장치에 미리 캐시된 CCB는 더 느리지만 더 비용 효과적인 DRAM으로 이동되었다.
도 19C는 사용된 CCB가 이미 SRAM에 캐시된 결과를 나타낸다. 이 예에서CCB는 번호 10에 대응하는 SRAM 장치에 캐시되었고, 따라서 이 CCB의 사용 후 번호 10은 MRU 블록에 저장된다. 번호 10보다 더 최근에 사용된 번호들(레지스터 블록 R9-R15)만이 왼쪽으로 시프트되어 LRU 블록에는 번호 1이 남는다. 이러한 방식으로 INIC는 SRAM 캐시에 가증 액티브한 CCB들을 유지한다.
어떤 경우에는 사용되고 있는 CCB는 제한된 캐시 메모리에 유지되는 것이 바람직하지 않은 것이다. 예컨대, 닫고 있는 것을 알려진 문맥에 대한 CCB를 캐시하지 않고, 따라서 다른 캐시된 CCB들을 SRAM에 더 오래 유지하는 것이 바람직하다. 이 경우, 캐시하지 않을 수 있는 CCB를 유지하는 캐시 장치를 나타내는 번호는 MRU 블록(R15)이 아닌 LRU 블록(R0)에 저장하고, 따라서 캐시하지 않을 수 있는 CCB는 LRU 블록(R0)에 유지된 번호에 대응하는 SRAM 장치에 캐시되는 새로운 CCB의 사용 즉시 대체된다. 도 19D는 번호 8(도 19C에서 블록(R9)에 있었음)이 사용된 후 닫힐 CCB에 대응하는 경우를 나타낸다. 이 경우, 번호 8은 블록(R9)으로부터 제거되어 LRU 블록(R0)에 저장되었다. 이어서, 블록(R9)의 왼쪽(R1-R8)에 미리 저장되었던 모든 번호는 한 블록 오른쪽으로 시프트된다.
도 20은 가장 오래 전에 사용된 레지스터(900)를 동작시키는 데 사용되는 논리 장치들의 일부를 나타낸다. 16개의 3 또는 4 입력 멀티플렉서의 어레이(910)는 가장 오래 전에 사용된 레지스터(900)의 대응하는 16 블록 안으로 공급되는 출력을 갖는데, 간명하게 하기 위하여 이 어레이중 멀티플렉서 MUX0, MUX7, MUX8, MUX9 및 MUX9만이 도시되어 있다. 예컨대, MUX0의 출력은 블록(R0)에 저장되며, MUX7의 출력은 블록(R7)에 저장된다. 레지스터 블록들 각각의 값은 블록 번호를 시프트시키는 데 사용하기 위하여 대응하는 멀티플렉서의 입력에, 그리고 또한 양 인접 멀티플렉서의 입력 안으로 접속된다. 예컨대, R8에 저장된 번호는 MUX7, MUX8 및 MUX9의 입력에 공급된다. MUX0 및 MUX15는 각각 단 하나의 인접 블록만을 가지며, 이들 멀티플렉서의 여분의 입력은 각각 LRU 및 MRU 블록의 선택을 위해 사용된다. MUX15는 4 입력 멀티플렉서로서 도시되며, 입력 915는 R0에 저장되는 번호를 제공한다.
16 비교기의 어레이(920)는 각각 가장 오래 전에 사용된 레지스터(900)의 대응 블록에 저장된 값을 수신한다. 각 비교기는 또한 라인 935를 따라 프로세서(470)로부터 신호를 수신하여 프로세서(470)에 의해 전송된 것과 일치하는 번호를 가진 레지스터 블록이 논리 회로(930)에 참 값을 출력하고 다른 15개의 비교기는 거짓 값을 출력한다. 논리 회로(930)는 멀티플렉서로의 입력을 선택하여 레지스터 블록 번호의 시프트를 제어하기 위하여 멀티플렉서 각각에 이르는 한 쌍의 선택 라인을 제어한다. 따라서, 선택 라인들(939)은 MUX0을 제어하고, 선택 라인들(944)은 MUX7을, 선택 라인들(949)은 MUX8을, 선택 라인들(954)은 MUX9를, 선택 라인들(959)은 MUX15를 제어한다.
CCB가 사용되어야 할 때, 프로세서(470)는 CCB가 16 캐시 장치 중 하나에 현재 유지되어 있는 CCB와 일치하는지를 검사한다. 일치하는 경우, 프로세서는 캐시 장치에 대응하는 블록 번호, 예컨대 번호 12와 함께 라인(935)를 따라 신호를 전송한다. 비교기(920)는 라인(935)으로부터의 신호를 블록 번호들과 비교하고, 비교기(C8)는 신호와 일치하는 블록(R8)에 참 출력을 제공하며, 모든 다른 비교기는 거짓을 출력한다. 논리 회로(930)는 프로세서(470)로부터의 제어 하에 선택 라인(959)을 사용하여 MUX15에 대한 라인(935)로부터 입력을 선택하고 번호 12를 MRU 블록(R15)에 저장한다. 논리 회로(930)는 또한 MUX15를 제외하고 MUX8 및 더 높은 멀티플렉서에 대한 한 쌍의 선택 라인을 따라 신호를 전송하고, 각 멀티플렉서 MUX8 이상에 대한 입력으로서 한 블록 오른쪽의 레지스터 블록들(R9-R15)에 저장되었던 값을 선택함으로써 출력을 한 블록 왼쪽으로 시프트시킨다. MUX8의 왼쪽에 있는 멀티플렉서들의 출력은 일정한 것으로 선택된다.
한편, 프로세서(470)가 16 캐시 장치 중에서 CCB에 대한 일치를 찾지 못한 경우, 프로세서는 라인(966)을 따라 LRU 블록(R0)으로부터 판독하여 LRU 블록에 대응하는 캐시를 식별하고 캐시에 저장된 데이타를 DRAM에 기록한다. 이 경우 번호 3인 R0에 저장된 번호는 선택 라인들(959)에 의해 MRU 블록(R15)에 저장하기 위한 MUX15로의 입력(915)으로 선택된다. 다른 15 멀티플렉서는 바로 오른쪽의 각 레지스터 블록에 저장된 번호를 각각의 레지스터 블록으로 출력한다.
프로세서가 사용 후 캐시로부터 CCB를 제거하기를 원하는 경우에, MRU 블록(R15)이 아닌 LRU 블록(R0)이 CCB를 유지하는 캐시 장치에 대응하는 번호의 대체를 위해 선택된다. SRAM으로부터의 제거를 위해 LRU 블록(R0)에 대체될 CCB에 대응하는 번호(예컨대 블록 R9에 유지되어 있는 번호 1)는 프로세서(470)에 의해 라인(935)을 따라 전송되어 비교기(C9)에 의해 일치된다. 프로세서는 라인(939)에서 MUX0로의 입력(935)을 선택함으로써 번호 1을 R0에 입력하도록 논리 회로(930)에게 명령한다. MUX9로의 선택 라인(54)은 레지스터 블록(R8)에 유지된 번호를 입력으로 선택함으로써 R8로부터의 번호가 R9에 저장된다. R0와 R9 사이의 다른 레지스터 블록에 유지된 번호는 마찬가지로 오른쪽으로 시프트되는 반면, R9의 오른쪽의 레지스터 블록들의 번호는 일정하게 남는다. 이것은 식별 번호들이 레지스터 블록을 통해 MRU 블록에서 LRU 블록으로 이동하는 동안 많은 싸이클 동안에 부족한 캐시 메모리가 닫힌 CCB를 유지하는 것을 방지한다.
데이타 통신의 처리를 위한 전술한 장치 및 시스템은 큰 접속 기반 메시지를 처리하는 데 필요한 시간을 크게 감소시킨다. 프로토콜 처리 속도는 종래의 프로토콜 소프트웨어를 실행하는 범용 CPU에 비해 특별히 설계된 프로토콜 처리 하드웨어에 의해 크게 가속되며, 또한 호스트 CPU로의 인터럽트가 크게 감소한다. 이러한 이점은 지능망 인터페이스 카드(INIC)의 추가에 의해 기존 호스트에도 제공될 수 있으며, 또는 프로토콜 처리 하드웨어가 CPU에 통합될 수 있다. 어느 경우에나 프로토콜 처리 하드웨어 및 CPU는 어느 장치가 주어진 메시지를 처리할 것인지를 지능적으로 결정하고, 메시지의 상탱에 따라 처리의 할당을 변경할 수 있다.

Claims (52)

  1. 망과, 프로세서 및 프로토콜 계층들의 순차 스택을 구비한 호스트 컴퓨터 사이의 통신을 위한 방법에 있어서,
    상기 망으로부터 상기 호스트에 의해 데이타 및 상기 프로토콜 계층 스택에 대응하는 다수의 헤더를 포함하는 메시지 패킷을 수신하는 단계 -상기 데이타는 상기 헤더의 프로토콜 처리에 따라 상기 호스트의 목적지에 대체할 것임-;
    상기 복수의 헤더를 그룹으로서 한 번에 처리하여 상기 헤더 그룹의 개요를 생성하는 단계;
    상기 개요에 기초하여, 상기 프로토콜 계층에 의해 상기 패킷을 처리할 것인지를 선택하는 단계; 및
    상기 헤더 그룹의 상기 개요에 따라 상기 목적지에 상기 데이타를 전송함으로써 상기 프로토콜 계층 스택에 의한 상기 패킷의 순차 처리를 피하는 단계를 포함하는 방법.
  2. 제1항에 있어서, 상기 헤더 그룹의 처리는 상기 망으로부터 상기 호스트에 의한 상기 메시지 패킷의 수신 동안에 발생하는 방법.
  3. 제1항에 있어서, 상기 패킷을 포함하는 접속을 위한 통신 제어 블록을 생성하는 단계; 및
    상기 데이타를 상기 목적지로 전송하기 위하여 상기 개요를 상기 통신 제어 블록과 일치시키는 단계를 더 포함하는 방법.
  4. 제1항에 있어서, 상기 패킷을 포함하는 접속을 위한 통신 제어 블록을 생성하는 단계를 더 포함하고, 상기 데이타를 상기 목적지로 전송하는 단계는 상기 통신 제어 블록에 의해 상기 데이타를 안내하는 단계를 포함하는 방법.
  5. 제8항에 있어서, 상기 통신 제어 블록을 참조함으로써 상기 호스트에서 상기 망으로 제2 메시지 패킷을 전송하는 단계를 더 포함하는 방법.
  6. 망과 순차 프로토콜 처리 스택을 구비한 호스트 사이의 통신을 처리하기 위한 방법에 있어서,
    상기 호스트와 상기 망에 접속되고, 통신 프로세서를 포함하는 장치를 제공하는 단계;
    상기 호스트에 의해 상기 망으로부터 데이타 및 상기 순차 프로토콜 처리 스택에 대응하는 일련의 헤더를 포함하는 메시지 프레임을 수신하는 단계;
    상기 장치에 의해 상기 일련의 헤더를 바이트 스트림으로서 분석하고, 상기 데이타를 복사하지 않고 상기 헤더를 처리하여 상기 프레임의 개요를 생성하는 단계; 및
    상기 처리에 기초하여, 상기 스택에 의해 상기 패킷을 처리할 것인지, 또는상기 개요에 따라 상기 데이타를 목적지로 전송할 것인지를 선택하는 단계를 포함하는 방법.
  7. 제6항에 있어서, 상기 호스트에 의해 상기 프레임을 포함하는 메시지를 위한 통신 제어 블록을 생성하는 단계;
    상기 장치에 통신 제어 블록을 저장하는 단계; 및
    상기 통신 제어 블록에 의해 표시된 목적지로 상기 데이타를 안내하는 단계를 더 포함하는 방법.
  8. 제7항에 있어서, 상기 데이타를 상기 목적지로 안내하기 전에 상기 개요를 상기 통신 제어 블록과 비교하는 단계를 더 포함하는 방법.
  9. 제6항에 있어서, 상기 호스트에서 상기 망으로 상기 장치를 통해 전송 데이타를 전송하는 단계를 더 포함하고, 원격 호스트로의 망 전달을 위해 상기 전송 데이타에 동시에 수 개의 프로토콜 헤더를 앞에 첨부하는 단계를 포함하는 방법.
  10. 망과, 프로세서 및 프로토콜 계층들의 순차 스택을 구비한 호스트 컴퓨터 사이의 통신을 위한 방법에 있어서,
    상기 망으로부터 상기 호스트에 의해 다수의 패킷을 가진 메시지를 수신하는 단계 -상기 패킷 각각은 데이타부와 관련 헤더열을 포함하며, 상기 관련 헤더열을상기 프로토콜 계층의 순차 스택에 대응하는 정보를 포함하고 상기 데이타를 위한 상기 호스트 내의 상위 계층 목적지를 지시함-; 및
    상기 관련 헤더 없이, 그리고 어느 호스트 CPU에 대해서도 인터럽트를 발생시키지 않고 다수의 상기 데이타부를 상기 목적지로 전송하는 단계를 포함하는 방법.
  11. 제10항에 있어서, 상기 데이타부를 상기 목적지로 전송하기 전에 상기 프로토콜 계층 스택에 의해 상기 패킷을 처리할 것인지를 선택하는 단계를 더 포함하는 방법.
  12. 제10항에 있어서, 상기 호스트에 프로토콜 처리 장치를 제공하는 단계; 및
    상기 헤더 없이 상기 데이타부를 상기 목적지로 전송하기 전에 상기 장치로 상기 헤더를 요약하는 단계를 더 포함하는 방법.
  13. 제10항에 있어서, 상기 호스트에서 상기 망으로 데이타 파일을 전송하는 단계를 더 포함하고,
    상기 데이타 파일을 일련의 데이타 단위로 분할하는 단계;
    상기 데이타 단위에 헤더를 첨부하여 일련의 망 프레임을 생성하는 단계; 및
    어느 호스트 CPU에 대해서도 인터럽트를 발생시키지 않고 상기 망에 상기 망 프레임을 배치하는 단계를 포함하는 방법.
  14. CPU, 기억 장치 및 프로토콜 계층들의 순차 스택을 구비한 호스트 컴퓨터와 망 사이의 통신을 위한 방법에 있어서,
    프로세서를 구비하고, 상기 망과 상기 호스트에 접속된 장치를 제공하는 단계;
    상기 장치에 의해 상기 망으로부터 제1 메시지를 수신하는 단계;
    상기 제1 메시지를 처리하여 상기 제1 메시지를 위한 통신 제어 블록을 생성하는 단계;
    상기 장치에 의해 상기 망으로부터 데이타, 및 일련의 프로토콜 계층 헤더를 포함하는 헤더를 포함하는 제2 메시지를 수신하는 단계;
    상기 장치에 의해 상기 헤더를 처리하여 상기 헤더의 처리 동안 상기 데이타를 복사하지 않고 상기 헤더의 개요를 생성하는 단계; 및
    상기 장치에 의해 상기 데이타를 상기 프로토콜 계층들의 상위 계층에 상기 상위 계층에 적합한 형태로 전송하고, 상기 통신 제어 블록으로 상기 전송을 안내하는 단계를 포함하는 방법.
  15. 제14항에 있어서, 상기 장치에 의해 상기 제1 및 제2 메시지에 관한 제3 메시지를 수신하는 단계; 및
    상기 장치에서 상기 기억 장치로 상기 통신 제어 블록을 전송하여 상기 제3 메시지를 처리하는 제어를 상기 CPU로 전달하는 단계를 더 포함하는 방법.
  16. 제14항에 있어서, 상기 데이타를 상기 상위 계층에 전송하기 전에 상기 개요를 상기 통신 제어 블록과 일치시키는 단계를 더 포함하는 방법.
  17. 제14항에 있어서, 상기 호스트에서 상기 망으로 제3 메시지를 전송하는 단계를 더 포함하고,
    상기 통신 제어 블록을 참조하여 상기 장치를 통해 상기 제3 메시지를 전송하는 단계; 및
    호스트 소스로부터 얻은 데이타에 다수의 프로토콜 계층 헤더를 포함하는 전송 헤더를 첨부하는 단계를 포함하는 방법.
  18. 망에 접속된 로컬 호스트-상기 로컬 호스트는 프로토콜 처리 스택과 관련 프로토콜 처리 장치를 구비함-와 원격 호스트 사이의 통신을 위한 방법에 있어서,
    상기 프로토콜 처리 스택에 의해 상기 로컬 호스트와 상기 원격 호스트 간의 접속을 정의하는 통신 제어 블록을 생성하는 단계; 및
    상기 통신 제어 블록을 상기 장치로 전송하여 상기 접속에 관련되고 상기 망과 상기 로컬 호스트 간에 전송되는 메시지 패킷을 처리하는 제어를 전달함으로써 상기 패킷을 상기 프로토콜 처리 스택 대신에 상기 장치에 의해 처리하는 단계를 포함하는 방법.
  19. 제18항에 있어서, 상기 통신 제어 블록을 상기 로컬 호스트로 역전송하여 상기 망과 상기 로컬 호스트 사이에 전달되고 상기 접속과 관련된 제2 메시지 패킷이 상기 프로토콜 처리 스택에 의해 처리되도록 하는 단계를 더 포함하는 방법.
  20. 제18항에 있어서, 상기 장치에 의해 상기 망으로부터 메시지 프레임을 수신하는 단계;
    상기 장치에 의해 상기 메시지 프레임을 요약하여 상기 메시지 프레임의 개요를 생성하는 단계; 및
    상기 개요를 상기 통신 제어 블록과 비교하는 단계를 더 포함하는 방법.
  21. 제18항에 있어서, 상기 장치에 의해 메시지 프레임을 망에 전송하는 단계를 더 포함하고, 상기 통신 제어 블록에 기초하여 헤더를 형성하고 상기 헤더를 상기 메시지 프레임에 첨부하는 단계를 포함하는 방법.
  22. 프로세서, 메모리 및 프로토콜 계층들의 순차 스택을 구비한 호스트 컴퓨터에 의한 망 통신 방법에 있어서,
    상기 호스트에 의해 상기 망으로부터 상기 호스트 내에 목적지를 가진 데이타 및 상기 프로토콜 계층 스택에 관한 다수의 헤더를 포함하는 패킷을 수신하는 단계;
    하드웨어 논리 시퀀서로 상기 패킷을 카테고리화하여 상기 헤더를 분류하고상기 패킷의 개요를 생성하는 단계; 및
    상기 개요에 기초하여 상기 패킷을 상기 프로토콜 계층 스택으로 전송할 것인지, 또는 상기 데이타를 상기 목적지로 전송함으로써 상기 프로토콜 계층 스택을 우회할 것인지를 선택하는 단계를 포함하는 방법.
  23. 제22항에 있어서, 상기 패킷을 상기 프로토콜 계층 스택으로 전송하는 단계;
    상기 프로토콜 계층 스택으로 상기 패킷을 처리하여 상기 메시지에 대한 문맥(context)을 생성하는 단계;
    상기 호스트에 의해 상기 망으로부터 부가 데이타 및 부가 헤더를 포함하는 관련 패킷을 수신하는 단계; 및
    상기 프로토콜 계층 스택에 의해 상기 패킷을 처리하지 않고 상기 문맥을 이용하여 상기 관련 패킷을 상기 목적지로 전송하는 단계를 포함하는 방법.
  24. 제22항에 있어서, 상기 패킷을 포함하는 메시지에 대한 문맥을 생성하는 단계를 더 포함하되, 상기 문맥은 상기 호스트와 원격 호스트 사이의 접속을 정의하며, 상기 패킷을 상기 프로토콜 계층 스택으로 전송할 것인지, 또는 상기 프로토콜 계층 스택을 우회할 것인지를 선택하는 단계는 상기 개요를 상기 문맥과 비교하는 단계를 포함하는 방법.
  25. 제22항에 있어서, 상기 데이타를 상기 목적지로 상기 목적지에 적합한 형태로 전송함으로써 상기 프로토콜 계층 스택을 우회하는 것을 포함하는 방법.
  26. 망을 통해 원격 호스트에 접속될 수 있는 로컬 호스트-상기 로컬 호스트는 상기 로컬 호스트의 애플리케이션과 상기 원격 호스트의 애플리케이션 사이의 접속 문맥을 정의하는 프로토콜 처리 계층들의 스택을 조작하는 CPU를 구비함-와 함께 사용하기 위한 장치에 있어서,
    상기 문맥을 참조하여, 상기 프로토콜 처리 계층에 의해 망 메시지를 처리할 것인지, 또는 상기 프로토콜 처리 계층들을 피하고 상기 문맥을 이용하여 상기 망과 상기 로컬 호스트 애플리케이션 사이에 상기 메시지에 포함된 데이타를 전송할 것인지를 선택하도록 구성된 프로세서를 포함하고, 상기 CPU 및 상기 망에 접속된 통신 처리 메카니즘을 포함하는 장치.
  27. 제26항에 있어서, 상기 통신 처리 메카니즘은 상기 프로세서에 접속되어 상기 망으로부터 수신한 메시지 패킷을 검증하도록 구성된 수신 시퀀서를 포함하며, 상기 메시지 패킷은 상기 프로토콜 계층 스택에 대응하는 제어 정보를 포함하는 장치.
  28. 제26항에 있어서, 상기 통신 처리 메카니즘은 상기 프로세서에 접속되어 상기 망으로부터 수신한 메시지 패킷의 개요를 생성하도록 구성된 수신 시퀀서를 포함하며, 상기 메시지 패킷은 상기 프로토콜 계층 스택에 대응하는 제어 정보를 포함하고, 상기 프로세서는 상기 개요와 상기 문맥을 비교하기에 적합한 장치.
  29. 제26항에 있어서, 상기 프로세서는 상기 문맥에 대응하고 상기 프로토콜 처리 계층들 중 수 개에 대응하는 제어 정보를 포함하는 헤더를 생성하고, 상기 호스트에서 상기 원격 호스트로의 상기 메시지의 전송을 위해 상기 헤더를 상기 데이타에 첨부하기에 적합한 장치.
  30. 제26항에 있어서, 상기 통신 처리 메카니즘은 헤더를 상기 데이타에 첨부하지 않고 상기 문맥에 기초하여 상기 데이타를 상기 통신 처리 메카니즘에서 상기 호스트 애플리케이션으로 전송하기 위한 직접 메모리 액세스 장치를 구비한 장치.
  31. 제27항에 있어서, 상기 프로세서는 다수의 마이크로프로세서를 포함하되, 상기 마이크로프로세서들 중 적어도 하나는 상기 호스트에 의해 상기 망으로부터 수신한 메시지를 처리하기에 적합하고, 상기 마이크로프로세서들 중 다른 하나는 상기 호스트에서 상기 망으로 전송된 메시지를 처리하기에 적합한 장치.
  32. 제31항에 있어서, 상기 마이크로프로세서는 회전 단계들에서 공유 하드웨어 기능을 이용하는 장치.
  33. 제26항에 있어서, 상기 통신 처리 메카니즘은 다수의 큐 기억 장치에 정보를큐잉(queuing)하도록 구성된 큐 관리기를 포함하고, 상기 큐 기억 장치들 중 적어도 하나는 SRAM 및 DRAM을 구비한 장치.
  34. 망에 접속 가능한 호스트 컴퓨터-상기 호스트 컴퓨터는 CPU를 구비하고, 상기 CPU는 망 통신을 처리하고 상기 호스트 내의 목적지와 원격 호스트 내의 소스 간의 접속 문맥을 정의하기 위해 상기 CPU에 의해 조작 가능한 프로토콜 처리 계층들의 스택을 구비함-를 위한 통신 장치에 있어서,
    상기 망에 접속되어, 상기 장치에 의해 상기 망으로부터 수신한 메시지 패킷을 검증하도록 구성된 수신 시퀀서-상기 메시지 패킷은 데이타와, 상기 프로토콜 계층들 중 수 개의 계층에 관한 제어 정보를 가진 헤더를 구비하고, 상기 수신 시퀀서는 상기 장치 내의 기억을 위해 상기 패킷의 개요를 생성하기에 적합함-; 및
    상기 수신 시퀀서 및 상기 호스트에 접속되어, 상기 개요를 통신 제어 블록과 비교하고, 상기 비교에 기초하여 프로토콜 처리를 위해 상기 메시지 패킷을 상기 스택으로 전송할 것인지, 또는 상기 스택에 의해 상기 메시지 패킷을 처리하지 않고 상기 데이타를 목적지로 직접 전송할 것인지를 선택하기에 적합한 통신 프로세서를 포함하는 장치.
  35. 제34항에 있어서, 상기 통신 프로세서는 회전 단계들로 동작하는 다수의 파이프라인 마이크로프로세서를 구비하고, 상기 마이크로프로세서들 중 적어도 하나는 상기 호스트에 의해 상기 망으로부터 수신한 메시지를 처리하도록 구성되며, 상기 마이크로프로세서들 중 적어도 하나는 상기 호스트에서 상기 망으로 전송된 메시지를 처리하도록 구성된 장치.
  36. 제34항에 있어서, 상기 통신 프로세서 및 상기 수신 시퀀서에 대한 정보를 다수의 기억 큐에 큐잉하도록 구성된 논리 회로를 구비한 큐 관리기를 더 포함하는 장치.
  37. 제36항에 있어서, 상기 큐는 SRAM 및 DRAM을 구비한 장치.
  38. 제34항에 있어서, 캐시 메모리 및 다수의 접속 문맥을 더 포함하고, 각각의 상기 접속 문맥의 해쉬는 상기 개요와의 비교를 위해 상기 캐시 메모리에 저장되는 장치.
  39. 제38항에 있어서, 상기 접속 문맥들 중 어느 문맥을 상기 캐시 메모리에 저장할 것인지를 결정하기 위한 가장 오래 전에 사용된 레지스터를 더 포함하는 장치.
  40. 제34항에 있어서, 상기 수신 시퀀서는 상기 메시지 패킷에 포함되고 상기 프로토콜 처리 계층 스택에 실질적으로 대응하는 제어 정보를 가진 헤더를 처리하기 위한 일련의 하드웨어 논리 장치를 구비한 장치.
  41. 제34항에 있어서, 상기 통신 프로세서는 상기 문맥에 기초하여 상기 데이타를 상기 헤더 없이 상기 호스트 목적지로 전송하도록 직접 메모리 액세스 제어기에 명령하는 장치.
  42. 제34항에 있어서, 상기 통신 프로세서는 제2 메시지를 전송하여, 상기 호스트 목적지에서 상기 망으로 전송 데이타를 전송하되, 상기 문맥으로부터 도출한 헤더를 상기 전송 데이타에 첨부하도록 구성된 장치.
  43. 망에 의해 접속된, CPU를 구비한 로컬 호스트와 원격 호스트 사이의 통신을 위한 장치에 있어서,
    상기 망 및 상기 로컬 호스트에 접속되어, 데이타 패킷을 처리하고 상기 패킷의 개요를 생성하기 위한 하드웨어 논리를 포함하는 통신 처리 메카니즘; 및
    상기 로컬 호스트에 배치되고 상기 CPU에 의해 조작되어, 상기 로컬 호스트와 상기 원격 호스트 간의 접속을 정의하는 통신 제어 블록을 생성하고 상기 통신 제어 블록을 상기 메카니즘으로 전송하는 프로토콜 처리 스택을 포함하며,
    상기 메카니즘 및 상기 프로토콜 처리 스택은 상기 메카니즘이 상기 통신 제어 블록을 유지하고 있을 때 상기 접속에 대응하고 상기 망과 상기 로컬 호스트 간에 전송되는 메시지가 상기 CPU 대신에 상기 메카니즘에 의해 처리되도록 배열된 장치.
  44. 제43항에 있어서, 상기 메카니즘은 다수의 망 접속을 구비한 장치.
  45. 망과, 프로토콜 계층들의 스택을 구비한 호스트 간의 통신을 처리하기 위한 장치에 있어서,
    상기 망으로부터 수신한 메시지 패킷을 카테고리화하기 위한 다수의 논리 장치-상기 패킷은 데이타와 헤더를 포함하고, 상기 논리 장치를 통해 비트 스트림으로서 전송되며, 상기 논리 장치는 상기 스트림으로부터 상기 패킷의 개요를 생성함-;
    상기 패킷 및 상기 개요를 저장하기 위한 메모리; 및
    상기 개요를 접속 문맥과 일치시키고, 상기 프로토콜 정보 없이 상기 패킷을 상기 문맥에 의해 지시된 상기 호스트 내의 목적지로 이동시키기 위한 마이크로프로세서를 포함하는 장치.
  46. 제45항에 있어서, 상기 마이크로프로세서는 다수의 파이프라인 프로세서를 포함하며, 상기 프로세서들 중 하나는 망 메시지를 전송하도록 구성되고, 상기 프로세서들 중 다른 하나는 망 메시지를 수신하도록 구성된 장치.
  47. 제45항에 있어서, 상기 접속 문맥과 일치하지 않는 제2 개요를 가진 제2 패킷을 처리하도록 프로토콜 처리 계층 스택을 조작하는 CPU를 더 포함하는 장치.
  48. 망과 호스트 컴퓨터 사이에 일련의 프로토콜 계층에 대응하는 일련의 헤더를 포함하는 메시지를 전송하기 위한 장치에 있어서,
    상기 일련의 헤더를 비트 스트림으로서 처리하여 상기 메시지의 상태를 생성하도록 구성된 일련의 시퀀서를 포함하고, 상기 시퀀서들 중 적어도 하나는 상기 프로토콜 계층들의 상위 계층에 대응하는 헤더를 카테고리화하기 위한 논리를 포함하는 장치.
  49. 제48항에 있어서, 상기 시퀀서들에 접속되고, 상기 상태를 이용하여 상기 메시지를 상기 헤더 없이 상기 호스트의 목적지로 전송할 수 있는 통신 프로세서를 더 포함하는 장치.
  50. 망과 호스트 사이에 메시지를 전송하기 위한 장치에 있어서,
    다수의 큐를 정의하는 가변 길이 FIFO 회로의 어레이;
    상기 망으로부터 수신한 메시지들의 프레임의 상태를 생성하고 상기 상태를 상기 큐들 중 적어도 하나에 저장하도록 구성된 수신 시퀀서; 및
    교대 단계들에서 한 세트의 논리 장치를 조작하는 다수의 파이프라인 마이크로프로세서를 구비한 프로토콜 프로세서를 포함하되,
    상기 마이크로프로세서들 중 제1 마이크로프로세서는 상기 망으로부터 수신한 메시지를 처리하기에 적합하고, 상기 마이크로프로세서들 중 제2 마이크로프로세서는 상기 망으로 전송된 메시지를 처리하기에 적합하며, 상기 프로세서는 상기 시퀀서와 함께 통신 제어 블록을 이용하여 메시지의 전송을 가속시키는 장치.
  51. 제50항에 있어서, 상기 큐들 중 적어도 하나는 DRAM 및 SRAM 기억 장치를 포함하는 장치.
  52. 망과, 프로세서 및 프로토콜 계층들의 순차 스택을 구비한 호스트 컴퓨터 사이의 통신을 위한 장치에 있어서,
    상기 망으로부터 상기 호스트에 의해 데이타와, 상기 프로토콜 계층 스택에 대응하는 다수의 헤더를 포함하는 메시지 패킷을 수신하기 위한 수단-상기 데이타는 상기 헤더의 프로토콜 처리에 따라 상기 호스트의 목적지에 대체될 것임-;
    상기 다수의 헤더를 처리하여 상기 헤더 그룹의 개요를 생성하기 위한 수단; 및
    상기 헤더 그룹의 개요에 따라 상기 데이타를 상기 목적지로 전송하여 상기 프로토콜 계층 스택에 의한 상기 패킷의 순차 처리를 피하기 위한 수단을 포함하는 장치.
KR10-2001-7002369A 1998-08-28 1998-11-20 지능망 인터페이스 장치 및 통신 가속 시스템 KR100437146B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/141,713 1998-08-28
US09/141,713 US6389479B1 (en) 1997-10-14 1998-08-28 Intelligent network interface device and system for accelerated communication

Publications (2)

Publication Number Publication Date
KR20010085582A KR20010085582A (ko) 2001-09-07
KR100437146B1 true KR100437146B1 (ko) 2004-06-25

Family

ID=22496891

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2001-7002369A KR100437146B1 (ko) 1998-08-28 1998-11-20 지능망 인터페이스 장치 및 통신 가속 시스템

Country Status (8)

Country Link
US (1) US6389479B1 (ko)
EP (1) EP1116118B1 (ko)
JP (1) JP4264866B2 (ko)
KR (1) KR100437146B1 (ko)
AU (1) AU1533399A (ko)
CA (1) CA2341211C (ko)
DE (1) DE1116118T1 (ko)
WO (1) WO2000013091A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101115436B1 (ko) 2008-07-31 2012-02-20 브로드콤 코포레이션 네트워크 스택의 데이터 경로 가속

Families Citing this family (197)

* Cited by examiner, † Cited by third party
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
US9098297B2 (en) * 1997-05-08 2015-08-04 Nvidia Corporation Hardware accelerator for an object-oriented programming language
US7133940B2 (en) * 1997-10-14 2006-11-07 Alacritech, Inc. Network interface device employing a DMA command queue
US6658480B2 (en) 1997-10-14 2003-12-02 Alacritech, Inc. Intelligent network interface system and method for accelerated protocol processing
US6687758B2 (en) * 2001-03-07 2004-02-03 Alacritech, Inc. Port aggregation for network connections that are offloaded to network interface devices
US6697868B2 (en) 2000-02-28 2004-02-24 Alacritech, Inc. Protocol processing stack for use with intelligent network interface device
US6591302B2 (en) 1997-10-14 2003-07-08 Alacritech, Inc. Fast-path apparatus for receiving data corresponding to a TCP connection
US6434620B1 (en) 1998-08-27 2002-08-13 Alacritech, Inc. TCP/IP offload network interface device
US8782199B2 (en) 1997-10-14 2014-07-15 A-Tech Llc Parsing a packet header
US6757746B2 (en) 1997-10-14 2004-06-29 Alacritech, Inc. Obtaining a destination address so that a network interface device can write network data without headers directly into host memory
US7089326B2 (en) * 1997-10-14 2006-08-08 Alacritech, Inc. Fast-path processing for receiving data on TCP connection offload devices
US8621101B1 (en) 2000-09-29 2013-12-31 Alacritech, Inc. Intelligent network storage interface device
US6427173B1 (en) 1997-10-14 2002-07-30 Alacritech, Inc. Intelligent network interfaced device and system for accelerated communication
US7167927B2 (en) 1997-10-14 2007-01-23 Alacritech, Inc. TCP/IP offload device with fast-path TCP ACK generating and transmitting mechanism
US7185266B2 (en) 2003-02-12 2007-02-27 Alacritech, Inc. Network interface device for error detection using partial CRCS of variable length message portions
US8539112B2 (en) 1997-10-14 2013-09-17 Alacritech, Inc. TCP/IP offload device
US6226680B1 (en) 1997-10-14 2001-05-01 Alacritech, Inc. Intelligent network interface system method for protocol processing
US6470415B1 (en) 1999-10-13 2002-10-22 Alacritech, Inc. Queue system involving SRAM head, SRAM tail and DRAM body
US7284070B2 (en) 1997-10-14 2007-10-16 Alacritech, Inc. TCP offload network interface device
US6427171B1 (en) 1997-10-14 2002-07-30 Alacritech, Inc. Protocol processing stack for use with intelligent network interface device
US7042898B2 (en) 1997-10-14 2006-05-09 Alacritech, Inc. Reducing delays associated with inserting a checksum into a network message
US7237036B2 (en) * 1997-10-14 2007-06-26 Alacritech, Inc. Fast-path apparatus for receiving data corresponding a TCP connection
US7174393B2 (en) * 2000-12-26 2007-02-06 Alacritech, Inc. TCP/IP offload network interface device
US6765901B1 (en) * 1998-06-11 2004-07-20 Nvidia Corporation TCP/IP/PPP modem
US6904519B2 (en) * 1998-06-12 2005-06-07 Microsoft Corporation Method and computer program product for offloading processing tasks from software to hardware
US6687754B1 (en) * 1998-08-27 2004-02-03 Intel Corporation Method of detecting a device in a network
US7664883B2 (en) * 1998-08-28 2010-02-16 Alacritech, Inc. Network interface device that fast-path processes solicited session layer read commands
FI982224A (fi) * 1998-10-14 2000-04-15 Nokia Networks Oy Sanomien valvonta tietoliikenneverkon verkkoelementissä
US7430171B2 (en) 1998-11-19 2008-09-30 Broadcom Corporation Fibre channel arbitrated loop bufferless switch circuitry to increase bandwidth without significant increase in cost
US8225002B2 (en) * 1999-01-22 2012-07-17 Network Disk, Inc. Data storage and data sharing in a network of heterogeneous computers
US6526446B1 (en) * 1999-04-27 2003-02-25 3Com Corporation Hardware only transmission control protocol segmentation for a high performance network interface card
WO2001013583A2 (en) * 1999-08-16 2001-02-22 Iready Corporation Internet jack
EP1188294B1 (en) * 1999-10-14 2008-03-26 Bluearc UK Limited Apparatus and method for hardware implementation or acceleration of operating system functions
US6697872B1 (en) * 1999-10-15 2004-02-24 Cisco Technology Distributed packet processing using encapsulation and decapsulation chains
US6757291B1 (en) 2000-02-10 2004-06-29 Simpletech, Inc. System for bypassing a server to achieve higher throughput between data network and data storage system
US7191240B1 (en) * 2000-02-14 2007-03-13 International Business Machines Corporation Generic network protocol layer with supporting data structure
US6760781B1 (en) * 2000-02-16 2004-07-06 3Com Corporation Intelligent packet transmission engine
US6911652B2 (en) * 2000-03-22 2005-06-28 Jonathan A. Walkenstein Low light imaging device
WO2001075877A1 (en) * 2000-03-31 2001-10-11 Doug Carson & Associates, Inc. Sequencing data blocks to provide hidden data on a recording medium
US8996705B2 (en) 2000-04-17 2015-03-31 Circadence Corporation Optimization of enhanced network links
US8195823B2 (en) 2000-04-17 2012-06-05 Circadence Corporation Dynamic network link acceleration
US8024481B2 (en) * 2000-04-17 2011-09-20 Circadence Corporation System and method for reducing traffic and congestion on distributed interactive simulation networks
US20110128972A1 (en) 2000-04-17 2011-06-02 Randy Thornton Peer to peer dynamic network link acceleration
US7127518B2 (en) 2000-04-17 2006-10-24 Circadence Corporation System and method for implementing application functionality within a network infrastructure
US8898340B2 (en) 2000-04-17 2014-11-25 Circadence Corporation Dynamic network link acceleration for network including wireless communication devices
US8510468B2 (en) 2000-04-17 2013-08-13 Ciradence Corporation Route aware network link acceleration
US8065399B2 (en) * 2000-04-17 2011-11-22 Circadence Corporation Automated network infrastructure test and diagnostic system and method therefor
US7236489B1 (en) * 2000-04-27 2007-06-26 Mosaid Technologies, Inc. Port packet queuing
US6571291B1 (en) * 2000-05-01 2003-05-27 Advanced Micro Devices, Inc. Apparatus and method for validating and updating an IP checksum in a network switching system
US7089294B1 (en) 2000-08-24 2006-08-08 International Business Machines Corporation Methods, systems and computer program products for server based type of service classification of a communication request
US7290028B2 (en) * 2000-08-24 2007-10-30 International Business Machines Corporation Methods, systems and computer program products for providing transactional quality of service
US8631092B2 (en) * 2000-08-24 2014-01-14 Red Hat, Inc. Embedded protocol objects
EP1330725B1 (en) * 2000-09-29 2012-03-21 Alacritech, Inc. Intelligent network storage interface system and devices
US8019901B2 (en) * 2000-09-29 2011-09-13 Alacritech, Inc. Intelligent network storage interface system
US6720074B2 (en) * 2000-10-26 2004-04-13 Inframat Corporation Insulator coated magnetic nanoparticulate composites with reduced core loss and method of manufacture thereof
US7039717B2 (en) * 2000-11-10 2006-05-02 Nvidia Corporation Internet modem streaming socket method
US7421505B2 (en) * 2000-12-21 2008-09-02 Noatak Software Llc Method and system for executing protocol stack instructions to form a packet for causing a computing device to perform an operation
US7546369B2 (en) * 2000-12-21 2009-06-09 Berg Mitchell T Method and system for communicating a request packet in response to a state
US7418522B2 (en) * 2000-12-21 2008-08-26 Noatak Software Llc Method and system for communicating an information packet through multiple networks
US20020116397A1 (en) 2000-12-21 2002-08-22 Berg Mitchell T. Method and system for communicating an information packet through multiple router devices
US7512686B2 (en) * 2000-12-21 2009-03-31 Berg Mitchell T Method and system for establishing a data structure of a connection with a client
US7287090B1 (en) * 2000-12-21 2007-10-23 Noatak Software, Llc Method and system for identifying a computing device in response to a request packet
US7379475B2 (en) * 2002-01-25 2008-05-27 Nvidia Corporation Communications processor
US7149817B2 (en) 2001-02-15 2006-12-12 Neteffect, Inc. Infiniband TM work queue to TCP/IP translation
US8051212B2 (en) * 2001-04-11 2011-11-01 Mellanox Technologies Ltd. Network interface adapter with shared data send resources
WO2002084499A1 (en) * 2001-04-11 2002-10-24 Chelsio Communications, Inc. Multi-purpose switching network interface controller
US7274706B1 (en) 2001-04-24 2007-09-25 Syrus Ziai Methods and systems for processing network data
US8218555B2 (en) * 2001-04-24 2012-07-10 Nvidia Corporation Gigabit ethernet adapter
DE60238751D1 (de) * 2001-04-24 2011-02-10 Nvidia Corp Gigabit-ethernetadapter
US7203722B2 (en) * 2001-05-24 2007-04-10 International Business Machines Corporation Optimistic processing of network frames to reduce latency
US6799217B2 (en) * 2001-06-04 2004-09-28 Fujitsu Limited Shared memory multiprocessor expansion port for multi-node systems
US6832260B2 (en) * 2001-07-26 2004-12-14 International Business Machines Corporation Methods, systems and computer program products for kernel based transaction processing
US7002979B1 (en) * 2001-08-10 2006-02-21 Utstarcom, Inc. Voice data packet processing system
US20030037154A1 (en) * 2001-08-16 2003-02-20 Poggio Andrew A. Protocol processor
WO2003017600A1 (en) * 2001-08-18 2003-02-27 Smallbig Technology Inc. An apparatus connected multi ip broadband line and fallback method thereof
US6976205B1 (en) 2001-09-21 2005-12-13 Syrus Ziai Method and apparatus for calculating TCP and UDP checksums while preserving CPU resources
US7240123B2 (en) * 2001-12-10 2007-07-03 Nortel Networks Limited Distributed routing core
AU2002361830A1 (en) * 2001-12-21 2003-07-15 Chip Engines Reconfigurable data packet header processor
US20030121835A1 (en) * 2001-12-31 2003-07-03 Peter Quartararo Apparatus for and method of sieving biocompatible adsorbent beaded polymers
US7535913B2 (en) * 2002-03-06 2009-05-19 Nvidia Corporation Gigabit ethernet adapter supporting the iSCSI and IPSEC protocols
US7305007B2 (en) * 2002-03-07 2007-12-04 Broadcom Corporation Receiver-aided set-up request routing
US7496689B2 (en) * 2002-04-22 2009-02-24 Alacritech, Inc. TCP/IP offload device
US7543087B2 (en) * 2002-04-22 2009-06-02 Alacritech, Inc. Freeing transmit memory on a network interface device prior to receiving an acknowledgement that transmit data has been received by a remote device
US20070253430A1 (en) * 2002-04-23 2007-11-01 Minami John S Gigabit Ethernet Adapter
US7181531B2 (en) * 2002-04-30 2007-02-20 Microsoft Corporation Method to synchronize and upload an offloaded network stack connection with a network stack
TW573408B (en) * 2002-05-07 2004-01-21 Via Tech Inc Host channel adapter and relevant method
US7162564B2 (en) * 2002-07-09 2007-01-09 Intel Corporation Configurable multi-port multi-protocol network interface to support packet processing
US20060155885A1 (en) * 2002-07-19 2006-07-13 Joachim Roos Processor and a method in the processor, the processor comprising a programmable pipeline and at least one interface engine
US7403542B1 (en) 2002-07-19 2008-07-22 Qlogic, Corporation Method and system for processing network data packets
WO2004010288A1 (en) * 2002-07-19 2004-01-29 Xelerated Ab Method and apparatus for pipelined processing of data packets
US7154886B2 (en) * 2002-07-22 2006-12-26 Qlogic Corporation Method and system for primary blade selection in a multi-module fiber channel switch
US7631106B2 (en) * 2002-08-15 2009-12-08 Mellanox Technologies Ltd. Prefetching of receive queue descriptors
US7934021B2 (en) 2002-08-29 2011-04-26 Broadcom Corporation System and method for network interfacing
US7346701B2 (en) 2002-08-30 2008-03-18 Broadcom Corporation System and method for TCP offload
EP1554842A4 (en) 2002-08-30 2010-01-27 Corporation Broadcom SYSTEM AND METHOD FOR TREATING FRAMES OUTSIDE THE ORDER
US7313623B2 (en) 2002-08-30 2007-12-25 Broadcom Corporation System and method for TCP/IP offload independent of bandwidth delay product
US8180928B2 (en) 2002-08-30 2012-05-15 Broadcom Corporation Method and system for supporting read operations with CRC for iSCSI and iSCSI chimney
US7397768B1 (en) 2002-09-11 2008-07-08 Qlogic, Corporation Zone management in a multi-module fibre channel switch
US7191241B2 (en) * 2002-09-27 2007-03-13 Alacritech, Inc. Fast-path apparatus for receiving data corresponding to a TCP connection
US7337241B2 (en) * 2002-09-27 2008-02-26 Alacritech, Inc. Fast-path apparatus for receiving data corresponding to a TCP connection
US8041735B1 (en) 2002-11-01 2011-10-18 Bluearc Uk Limited Distributed file system and method
US7457822B1 (en) 2002-11-01 2008-11-25 Bluearc Uk Limited Apparatus and method for hardware-based file system
US20040088262A1 (en) * 2002-11-06 2004-05-06 Alacritech, Inc. Enabling an enhanced function of an electronic device
US7319669B1 (en) 2002-11-22 2008-01-15 Qlogic, Corporation Method and system for controlling packet flow in networks
US7254696B2 (en) * 2002-12-12 2007-08-07 Alacritech, Inc. Functional-level instruction-set computer architecture for processing application-layer content-service requests such as file-access requests
US7596634B2 (en) * 2002-12-12 2009-09-29 Millind Mittal Networked application request servicing offloaded from host
US7362772B1 (en) 2002-12-13 2008-04-22 Nvidia Corporation Network processing pipeline chipset for routing and host packet processing
US7324547B1 (en) 2002-12-13 2008-01-29 Nvidia Corporation Internet protocol (IP) router residing in a processor chipset
US7646716B2 (en) 2002-12-20 2010-01-12 Intel Corporation Packet processing in a wireless network
US7460473B1 (en) * 2003-02-14 2008-12-02 Istor Networks, Inc. Network receive interface for high bandwidth hardware-accelerated packet processing
WO2004077211A2 (en) * 2003-02-28 2004-09-10 Tilmon Systems Ltd. Method and apparatus for increasing file server performance by offloading data path processing
US7613109B2 (en) * 2003-06-05 2009-11-03 Nvidia Corporation Processing data for a TCP connection using an offload unit
US7420931B2 (en) * 2003-06-05 2008-09-02 Nvidia Corporation Using TCP/IP offload to accelerate packet filtering
US7420991B2 (en) * 2003-07-15 2008-09-02 Qlogic, Corporation TCP time stamp processing in hardware based TCP offload
US7430175B2 (en) * 2003-07-21 2008-09-30 Qlogic, Corporation Method and system for managing traffic in fibre channel systems
US7420982B2 (en) * 2003-07-21 2008-09-02 Qlogic, Corporation Method and system for keeping a fibre channel arbitrated loop open during frame gaps
US7646767B2 (en) * 2003-07-21 2010-01-12 Qlogic, Corporation Method and system for programmable data dependant network routing
US7512067B2 (en) 2003-07-21 2009-03-31 Qlogic, Corporation Method and system for congestion control based on optimum bandwidth allocation in a fibre channel switch
US7447224B2 (en) * 2003-07-21 2008-11-04 Qlogic, Corporation Method and system for routing fibre channel frames
US7287092B2 (en) 2003-08-11 2007-10-23 Sharp Colin C Generating a hash for a TCP/IP offload device
US20050066045A1 (en) * 2003-09-03 2005-03-24 Johnson Neil James Integrated network interface supporting multiple data transfer protocols
EP1515511B1 (en) * 2003-09-10 2011-10-12 Microsoft Corporation Multiple offload of network state objects with support for failover events
US6996070B2 (en) * 2003-12-05 2006-02-07 Alacritech, Inc. TCP/IP offload device with reduced sequential processing
US7899913B2 (en) * 2003-12-19 2011-03-01 Nvidia Corporation Connection management system and method for a transport offload engine
US8176545B1 (en) 2003-12-19 2012-05-08 Nvidia Corporation Integrated policy checking system and method
US8549170B2 (en) * 2003-12-19 2013-10-01 Nvidia Corporation Retransmission system and method for a transport offload engine
US8065439B1 (en) 2003-12-19 2011-11-22 Nvidia Corporation System and method for using metadata in the context of a transport offload engine
US7206872B2 (en) * 2004-02-20 2007-04-17 Nvidia Corporation System and method for insertion of markers into a data stream
US7249306B2 (en) * 2004-02-20 2007-07-24 Nvidia Corporation System and method for generating 128-bit cyclic redundancy check values with 32-bit granularity
US7783769B2 (en) 2004-03-31 2010-08-24 Intel Corporation Accelerated TCP (Transport Control Protocol) stack processing
US20050220128A1 (en) * 2004-04-05 2005-10-06 Ammasso, Inc. System and method for work request queuing for intelligent adapter
US20050223118A1 (en) * 2004-04-05 2005-10-06 Ammasso, Inc. System and method for placement of sharing physical buffer lists in RDMA communication
US20060067346A1 (en) * 2004-04-05 2006-03-30 Ammasso, Inc. System and method for placement of RDMA payload into application memory of a processor system
US7698413B1 (en) 2004-04-12 2010-04-13 Nvidia Corporation Method and apparatus for accessing and maintaining socket control information for high speed network connections
US7669190B2 (en) 2004-05-18 2010-02-23 Qlogic, Corporation Method and system for efficiently recording processor events in host bus adapters
US7945705B1 (en) 2004-05-25 2011-05-17 Chelsio Communications, Inc. Method for using a protocol language to avoid separate channels for control messages involving encapsulated payload data messages
US7782902B2 (en) * 2004-07-14 2010-08-24 Audiocodes, Inc. Apparatus and method for mapping overlapping internet protocol addresses in layer two tunneling protocols
JP4490331B2 (ja) * 2004-08-03 2010-06-23 富士通株式会社 断片パケット処理方法及びこれを用いるパケット転送装置
US7522623B2 (en) * 2004-09-01 2009-04-21 Qlogic, Corporation Method and system for efficiently using buffer space
US7761608B2 (en) * 2004-09-01 2010-07-20 Qlogic, Corporation Method and system for processing markers, data integrity fields and digests
US7676611B2 (en) * 2004-10-01 2010-03-09 Qlogic, Corporation Method and system for processing out of orders frames
US8248939B1 (en) 2004-10-08 2012-08-21 Alacritech, Inc. Transferring control of TCP connections between hierarchy of processing mechanisms
US7957379B2 (en) * 2004-10-19 2011-06-07 Nvidia Corporation System and method for processing RX packets in high speed network applications using an RX FIFO buffer
WO2006068595A1 (en) 2004-12-22 2006-06-29 Xelerated Ab A method for reducing buffer capacity in a pipeline processor
US7568056B2 (en) 2005-03-28 2009-07-28 Nvidia Corporation Host bus adapter that interfaces with host computer bus to multiple types of storage devices
US8458280B2 (en) * 2005-04-08 2013-06-04 Intel-Ne, Inc. Apparatus and method for packet transmission over a high speed network supporting remote direct memory access operations
US20060248375A1 (en) 2005-04-18 2006-11-02 Bertan Tezcan Packet processing switch and methods of operation thereof
US20060248374A1 (en) * 2005-04-18 2006-11-02 Macadam A D S Packet Processing Switch and Methods of Operation Thereof
US7454667B2 (en) * 2005-04-26 2008-11-18 Intel Corporation Techniques to provide information validation and transfer
US7957363B2 (en) * 2005-05-26 2011-06-07 International Business Machines Corporation System, method, and service for dynamically selecting an optimum message pathway
US7694287B2 (en) 2005-06-29 2010-04-06 Visa U.S.A. Schema-based dynamic parse/build engine for parsing multi-format messages
US7774402B2 (en) * 2005-06-29 2010-08-10 Visa U.S.A. Adaptive gateway for switching transactions and data on unreliable networks using context-based rules
US8559443B2 (en) 2005-07-22 2013-10-15 Marvell International Ltd. Efficient message switching in a switching apparatus
US7616563B1 (en) 2005-08-31 2009-11-10 Chelsio Communications, Inc. Method to implement an L4-L7 switch using split connections and an offloading NIC
US7660306B1 (en) 2006-01-12 2010-02-09 Chelsio Communications, Inc. Virtualizing the operation of intelligent network interface circuitry
US7715436B1 (en) 2005-11-18 2010-05-11 Chelsio Communications, Inc. Method for UDP transmit protocol offload processing with traffic management
US7660264B1 (en) 2005-12-19 2010-02-09 Chelsio Communications, Inc. Method for traffic schedulign in intelligent network interface circuitry
US7724658B1 (en) 2005-08-31 2010-05-25 Chelsio Communications, Inc. Protocol offload transmit traffic management
US20070073966A1 (en) * 2005-09-23 2007-03-29 Corbin John R Network processor-based storage controller, compute element and method of using same
US7760733B1 (en) 2005-10-13 2010-07-20 Chelsio Communications, Inc. Filtering ingress packets in network interface circuitry
US7738500B1 (en) 2005-12-14 2010-06-15 Alacritech, Inc. TCP timestamp synchronization for network connections that are offloaded to network interface devices
CN100574200C (zh) * 2005-12-31 2009-12-23 中国科学院计算技术研究所 具有硬件加速功能的智能以太网卡
US7889762B2 (en) 2006-01-19 2011-02-15 Intel-Ne, Inc. Apparatus and method for in-line insertion and removal of markers
US7782905B2 (en) * 2006-01-19 2010-08-24 Intel-Ne, Inc. Apparatus and method for stateless CRC calculation
US7849232B2 (en) 2006-02-17 2010-12-07 Intel-Ne, Inc. Method and apparatus for using a single multi-function adapter with different operating systems
US8078743B2 (en) * 2006-02-17 2011-12-13 Intel-Ne, Inc. Pipelined processing of RDMA-type network transactions
US8316156B2 (en) * 2006-02-17 2012-11-20 Intel-Ne, Inc. Method and apparatus for interfacing device drivers to single multi-function adapter
US20070208820A1 (en) * 2006-02-17 2007-09-06 Neteffect, Inc. Apparatus and method for out-of-order placement and in-order completion reporting of remote direct memory access operations
FR2898455A1 (fr) * 2006-03-13 2007-09-14 Thomson Licensing Sas Procede et dispositif de transmission de paquets de donnees
US7817652B1 (en) 2006-05-12 2010-10-19 Integrated Device Technology, Inc. System and method of constructing data packets in a packet switch
US7747904B1 (en) 2006-05-12 2010-06-29 Integrated Device Technology, Inc. Error management system and method for a packet switch
US7706387B1 (en) 2006-05-31 2010-04-27 Integrated Device Technology, Inc. System and method for round robin arbitration
US8489761B2 (en) 2006-07-10 2013-07-16 Solarflare Communications, Inc. Onload network protocol stacks
GB2443459A (en) * 2006-10-31 2008-05-07 Hewlett Packard Development Co Data packet incuding computing platform indication
US9794378B2 (en) * 2006-11-08 2017-10-17 Standard Microsystems Corporation Network traffic controller (NTC)
JP4921142B2 (ja) 2006-12-12 2012-04-25 キヤノン株式会社 通信装置
US8935406B1 (en) 2007-04-16 2015-01-13 Chelsio Communications, Inc. Network adaptor configured for connection establishment offload
US7693040B1 (en) 2007-05-01 2010-04-06 Integrated Device Technology, Inc. Processing switch for orthogonal frequency division multiplexing
US8060644B1 (en) 2007-05-11 2011-11-15 Chelsio Communications, Inc. Intelligent network adaptor with end-to-end flow control
US7826350B1 (en) 2007-05-11 2010-11-02 Chelsio Communications, Inc. Intelligent network adaptor with adaptive direct data placement scheme
US8589587B1 (en) 2007-05-11 2013-11-19 Chelsio Communications, Inc. Protocol offload in intelligent network adaptor, including application level signalling
US7831720B1 (en) 2007-05-17 2010-11-09 Chelsio Communications, Inc. Full offload of stateful connections, with partial connection offload
US7760619B2 (en) * 2007-05-18 2010-07-20 Nvidia Corporation Intelligent failover in a load-balanced networking environment
WO2009033969A1 (en) * 2007-09-13 2009-03-19 Thomson Licensing Method and apparatus for digital data storage
JP5049763B2 (ja) * 2007-12-19 2012-10-17 キヤノン株式会社 ネットワークタイマ管理方法及び装置
US8539513B1 (en) 2008-04-01 2013-09-17 Alacritech, Inc. Accelerating data transfer in a virtual computer system with tightly coupled TCP connections
US8341286B1 (en) 2008-07-31 2012-12-25 Alacritech, Inc. TCP offload send optimization
US9306793B1 (en) 2008-10-22 2016-04-05 Alacritech, Inc. TCP offload device that batches session layer headers to reduce interrupts as well as CPU copies
US8131889B2 (en) * 2009-11-10 2012-03-06 Apple Inc. Command queue for peripheral component
WO2012006628A2 (en) 2010-07-09 2012-01-12 Visa International Service Association Gateway abstraction layer
KR101502146B1 (ko) 2013-09-24 2015-03-13 주식회사 케이티 엑세스 네트워크에서의 홈 네트워크 신호 중계 장치 및 이를 이용한 엑세스 네트워크에서의 홈 네트워크 신호 중계 방법
US10324730B2 (en) * 2016-03-24 2019-06-18 Mediatek, Inc. Memory shuffle engine for efficient work execution in a parallel computing system
US10185668B2 (en) * 2016-04-08 2019-01-22 Qualcomm Incorporated Cost-aware cache replacement
KR101977850B1 (ko) * 2017-09-15 2019-05-13 단국대학교 산학협력단 네트워크 인터페이스를 위한 어플리케이션 오프로딩 장치 및 방법
CN110297787B (zh) * 2018-03-22 2021-06-01 龙芯中科技术股份有限公司 I/o设备访问内存的方法、装置及设备
CN114401218B (zh) * 2021-12-28 2023-07-21 绿盟科技集团股份有限公司 一种数据报文的旁路转发方法及装置
US11671350B1 (en) 2022-08-15 2023-06-06 Red Hat, Inc. Data request servicing using multiple paths of smart network interface cards

Family Cites Families (80)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4366538A (en) 1980-10-31 1982-12-28 Honeywell Information Systems Inc. Memory controller with queue control apparatus
US5097442A (en) 1985-06-20 1992-03-17 Texas Instruments Incorporated Programmable depth first-in, first-out memory
US5212778A (en) 1988-05-27 1993-05-18 Massachusetts Institute Of Technology Message-driven processor in a concurrent computer
US4991133A (en) 1988-10-07 1991-02-05 International Business Machines Corp. Specialized communications processor for layered protocols
US5303344A (en) 1989-03-13 1994-04-12 Hitachi, Ltd. Protocol processing apparatus for use in interfacing network connected computer systems utilizing separate paths for control information and data transfer
JP2986802B2 (ja) 1989-03-13 1999-12-06 株式会社日立製作所 プロトコル高速処理方法
US5163131A (en) 1989-09-08 1992-11-10 Auspex Systems, Inc. Parallel i/o network file server architecture
EP0490980B1 (en) 1989-09-08 1999-05-06 Auspex Systems, Inc. Multiple facility operating system architecture
EP0576546A4 (en) * 1991-03-18 1995-01-25 Echelon Corp NETWORK VARIABLES.
US5289580A (en) 1991-05-10 1994-02-22 Unisys Corporation Programmable multiple I/O interface controller
JP2791236B2 (ja) 1991-07-25 1998-08-27 三菱電機株式会社 プロトコル並列処理装置
JP3130609B2 (ja) 1991-12-17 2001-01-31 日本電気株式会社 オンライン情報処理装置
JPH05260045A (ja) 1992-01-14 1993-10-08 Ricoh Co Ltd デ−タ端末装置の通信方法
DE69324508T2 (de) 1992-01-22 1999-12-23 Enhanced Memory Systems Inc DRAM mit integrierten Registern
JPH05252228A (ja) 1992-03-02 1993-09-28 Mitsubishi Electric Corp データ伝送装置及びその通信路管理方法
JPH07504527A (ja) 1992-03-09 1995-05-18 オースペックス システムズ インコーポレイテッド 高性能の不揮発性ram保護式の書き込みキャッシュアクセラレータシステム
US5742760A (en) 1992-05-12 1998-04-21 Compaq Computer Corporation Network packet switch using shared memory for repeating and bridging packets at media rate
US6026452A (en) 1997-02-26 2000-02-15 Pitts; William Michael Network distributed site cache RAM claimed as up/down stream request/reply channel for storing anticipated data and meta data
US5671355A (en) 1992-06-26 1997-09-23 Predacomm, Inc. Reconfigurable network interface apparatus and method
US5412782A (en) 1992-07-02 1995-05-02 3Com Corporation Programmed I/O ethernet adapter with early interrupts for accelerating data transfer
US5280477A (en) 1992-08-17 1994-01-18 E-Systems, Inc. Network synchronous data distribution system
FR2699706B1 (fr) 1992-12-22 1995-02-24 Bull Sa Système de transmission de données entre un bus d'ordinateur et un réseau.
GB9300942D0 (en) 1993-01-19 1993-03-10 Int Computers Ltd Parallel computer system
EP0689748B1 (en) * 1993-03-20 1998-09-16 International Business Machines Corporation Method and apparatus for extracting connection information from protocol headers
US5815646A (en) 1993-04-13 1998-09-29 C-Cube Microsystems Decompression processor for video applications
JP3358254B2 (ja) 1993-10-28 2002-12-16 株式会社日立製作所 通信制御装置および通信制御用回路装置
US5448566A (en) 1993-11-15 1995-09-05 International Business Machines Corporation Method and apparatus for facilitating communication in a multilayer communication architecture via a dynamic communication channel
US5758194A (en) 1993-11-30 1998-05-26 Intel Corporation Communication apparatus for handling networks with different transmission protocols by stripping or adding data to the data stream in the application layer
JPH08180001A (ja) 1994-04-12 1996-07-12 Mitsubishi Electric Corp 通信方式及び通信方法及びネットワークインタフェース
US6047356A (en) 1994-04-18 2000-04-04 Sonic Solutions Method of dynamically allocating network node memory's partitions for caching distributed files
US5579316A (en) * 1994-05-02 1996-11-26 Adtran Communications technique for transmitting limited size digital data frames using macro headers to represent multiple header code patterns associated with encapsulation protocols and signal processing operations to which transmitted data are subjected
US5598535A (en) * 1994-08-01 1997-01-28 International Business Machines Corporation System for selectively and cumulatively grouping packets from different sessions upon the absence of exception condition and sending the packets after preselected time conditions
WO1996007139A1 (en) 1994-09-01 1996-03-07 Mcalpine Gary L A multi-port memory system including read and write buffer interfaces
US5548730A (en) 1994-09-20 1996-08-20 Intel Corporation Intelligent bus bridge for input/output subsystems in a computer system
US5634127A (en) 1994-11-30 1997-05-27 International Business Machines Corporation Methods and apparatus for implementing a message driven processor in a client-server environment
US5634099A (en) 1994-12-09 1997-05-27 International Business Machines Corporation Direct memory access unit for transferring data between processor memories in multiprocessing systems
US5566170A (en) * 1994-12-29 1996-10-15 Storage Technology Corporation Method and apparatus for accelerated packet forwarding
US5758084A (en) 1995-02-27 1998-05-26 Hewlett-Packard Company Apparatus for parallel client/server communication having data structures which stored values indicative of connection state and advancing the connection state of established connections
US5701434A (en) 1995-03-16 1997-12-23 Hitachi, Ltd. Interleave memory controller with a common access queue
US5592622A (en) 1995-05-10 1997-01-07 3Com Corporation Network intermediate system with message passing architecture
US5664114A (en) 1995-05-16 1997-09-02 Hewlett-Packard Company Asynchronous FIFO queuing system operating with minimal queue status
US5629933A (en) 1995-06-07 1997-05-13 International Business Machines Corporation Method and system for enhanced communication in a multisession packet based communication system
JPH096706A (ja) 1995-06-22 1997-01-10 Hitachi Ltd 疎結合計算機システム
US5752078A (en) 1995-07-10 1998-05-12 International Business Machines Corporation System for minimizing latency data reception and handling data packet error if detected while transferring data packet from adapter memory to host memory
US5812775A (en) 1995-07-12 1998-09-22 3Com Corporation Method and apparatus for internetworking buffer management
US5742840A (en) 1995-08-16 1998-04-21 Microunity Systems Engineering, Inc. General purpose, multiple precision parallel operation, programmable media processor
US5749059A (en) 1995-09-14 1998-05-05 Trw Technar Inc. Apparatus and method for controlling an actuatable restraint device
US5758186A (en) 1995-10-06 1998-05-26 Sun Microsystems, Inc. Method and apparatus for generically handling diverse protocol method calls in a client/server computer system
US5913028A (en) 1995-10-06 1999-06-15 Xpoint Technologies, Inc. Client/server data traffic delivery system and method
US5758089A (en) 1995-11-02 1998-05-26 Sun Microsystems, Inc. Method and apparatus for burst transferring ATM packet header and data to a host computer system
US5809328A (en) 1995-12-21 1998-09-15 Unisys Corp. Apparatus for fibre channel transmission having interface logic, buffer memory, multiplexor/control device, fibre channel controller, gigabit link module, microprocessor, and bus control device
US5878225A (en) * 1996-06-03 1999-03-02 International Business Machines Corporation Dual communication services interface for distributed transaction processing
US5751715A (en) 1996-08-08 1998-05-12 Gadzoox Microsystems, Inc. Accelerator fiber channel hub and protocol
US6034963A (en) 1996-10-31 2000-03-07 Iready Corporation Multiple network protocol encoder/decoder and data processor
US5930830A (en) * 1997-01-13 1999-07-27 International Business Machines Corporation System and method for concatenating discontiguous memory pages
AU6169398A (en) * 1997-02-11 1998-08-26 Xaqti Corporation Media access control micro-risc stream processor and method for implementing thesame
KR20010020250A (ko) 1997-05-08 2001-03-15 코야마 리오 객체 지향의 프로그래밍 언어를 위한 하드웨어 가속기
US6044438A (en) 1997-07-10 2000-03-28 International Business Machiness Corporation Memory controller for controlling memory accesses across networks in distributed shared memory processing systems
US6173333B1 (en) * 1997-07-18 2001-01-09 Interprophet Corporation TCP/IP network accelerator system and method which identifies classes of packet traffic for predictable protocols
US5991299A (en) * 1997-09-11 1999-11-23 3Com Corporation High speed header translation processing
US5989868A (en) 1997-09-12 1999-11-23 The Board Of Regents Of The University Of Oklahoma Fusion protein systems designed to increase soluble cytoplasmic expression of heterologous proteins in esherichia coli
US6005849A (en) 1997-09-24 1999-12-21 Emulex Corporation Full-duplex communication processor which can be used for fibre channel frames
US6065096A (en) 1997-09-30 2000-05-16 Lsi Logic Corporation Integrated single chip dual mode raid controller
US6226680B1 (en) 1997-10-14 2001-05-01 Alacritech, Inc. Intelligent network interface system method for protocol processing
US5941969A (en) 1997-10-22 1999-08-24 Auspex Systems, Inc. Bridge for direct data storage device access
US5937169A (en) 1997-10-29 1999-08-10 3Com Corporation Offload of TCP segmentation to a smart adapter
US6057863A (en) 1997-10-31 2000-05-02 Compaq Computer Corporation Dual purpose apparatus, method and system for accelerated graphics port and fibre channel arbitrated loop interfaces
US6061368A (en) * 1997-11-05 2000-05-09 Xylan Corporation Custom circuitry for adaptive hardware routing engine
US5941972A (en) 1997-12-31 1999-08-24 Crossroads Systems, Inc. Storage router and method for providing virtual local storage
US5950203A (en) 1997-12-31 1999-09-07 Mercury Computer Systems, Inc. Method and apparatus for high-speed access to and sharing of storage devices on a networked digital data processing system
US6016513A (en) 1998-02-19 2000-01-18 3Com Corporation Method of preventing packet loss during transfers of data packets between a network interface card and an operating system of a computer
US6246683B1 (en) 1998-05-01 2001-06-12 3Com Corporation Receive processing with network protocol bypass
US6765901B1 (en) 1998-06-11 2004-07-20 Nvidia Corporation TCP/IP/PPP modem
US6141705A (en) 1998-06-12 2000-10-31 Microsoft Corporation System for querying a peripheral device to determine its processing capabilities and then offloading specific processing tasks from a host to the peripheral device when needed
US6249683B1 (en) 1999-04-08 2001-06-19 Qualcomm Incorporated Forward link power control of multiple data streams transmitted to a mobile station using a common power control channel
AU6214300A (en) 1999-07-13 2001-01-30 Alteon Web Systems, Inc. Method and apparatus for conducting the ip longest prefix match search
WO2001005123A1 (en) 1999-07-13 2001-01-18 Alteon Web Systems, Inc. Apparatus and method to minimize incoming data loss
AU5929700A (en) 1999-07-13 2001-01-30 Alteon Web Systems, Inc. Method and architecture for optimizing data throughput in a multi-processor environment using a ram-based shared index fifo linked list
AU6091400A (en) 1999-07-13 2001-01-30 Alteon Web Systems, Inc. Apparatus and method to minimize congestion in an output queuing switch
US6327625B1 (en) 1999-11-30 2001-12-04 3Com Corporation FIFO-based network interface supporting out-of-order processing

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101115436B1 (ko) 2008-07-31 2012-02-20 브로드콤 코포레이션 네트워크 스택의 데이터 경로 가속

Also Published As

Publication number Publication date
EP1116118A4 (en) 2006-01-11
EP1116118A1 (en) 2001-07-18
CA2341211A1 (en) 2000-03-09
DE1116118T1 (de) 2003-08-14
JP2002524005A (ja) 2002-07-30
KR20010085582A (ko) 2001-09-07
CA2341211C (en) 2009-12-01
AU1533399A (en) 2000-03-21
JP4264866B2 (ja) 2009-05-20
EP1116118B1 (en) 2016-03-09
US6389479B1 (en) 2002-05-14
WO2000013091A1 (en) 2000-03-09

Similar Documents

Publication Publication Date Title
KR100437146B1 (ko) 지능망 인터페이스 장치 및 통신 가속 시스템
US8856379B2 (en) Intelligent network interface system and method for protocol processing
JP5066702B2 (ja) インテリジェントネットワークストレージインタフェースシステム及びデバイス
US6807581B1 (en) Intelligent network storage interface system
US7089326B2 (en) Fast-path processing for receiving data on TCP connection offload devices
US6427173B1 (en) Intelligent network interfaced device and system for accelerated communication
US6591302B2 (en) Fast-path apparatus for receiving data corresponding to a TCP connection
US7502869B2 (en) Intelligent network interface system and method for accelerated protocol processing
US8019901B2 (en) Intelligent network storage interface system
US7664883B2 (en) Network interface device that fast-path processes solicited session layer read commands
US7076568B2 (en) Data communication apparatus for computer intelligent network interface card which transfers data between a network and a storage device according designated uniform datagram protocol socket
US7496699B2 (en) DMA descriptor queue read and cache write pointer arrangement
US7761529B2 (en) Method, system, and program for managing memory requests by devices
US8621101B1 (en) Intelligent network storage interface device
US20040221066A1 (en) Method and apparatus for implementing packet command instructions for network processing

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130516

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20140423

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20150512

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20160415

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20170519

Year of fee payment: 14

LAPS Lapse due to unpaid annual fee