KR20010078685A - 버퍼 리스트 변경자 제어 비트를 갖는 통신 프로세서 - Google Patents

버퍼 리스트 변경자 제어 비트를 갖는 통신 프로세서 Download PDF

Info

Publication number
KR20010078685A
KR20010078685A KR1020007003185A KR20007003185A KR20010078685A KR 20010078685 A KR20010078685 A KR 20010078685A KR 1020007003185 A KR1020007003185 A KR 1020007003185A KR 20007003185 A KR20007003185 A KR 20007003185A KR 20010078685 A KR20010078685 A KR 20010078685A
Authority
KR
South Korea
Prior art keywords
frame
processor
transmission
data
receive
Prior art date
Application number
KR1020007003185A
Other languages
English (en)
Other versions
KR100367949B1 (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 KR20010078685A publication Critical patent/KR20010078685A/ko
Application granted granted Critical
Publication of KR100367949B1 publication Critical patent/KR100367949B1/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9084Reactions to storage capacity overflow
    • H04L49/9089Reactions to storage capacity overflow replacing packets in a storage arrangement, e.g. pushout
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9047Buffering arrangements including multiple buffers, e.g. buffer pools
    • H04L49/9052Buffering arrangements including multiple buffers, e.g. buffer pools with buffers of different sizes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9084Reactions to storage capacity overflow
    • H04L49/9089Reactions to storage capacity overflow replacing packets in a storage arrangement, e.g. pushout
    • H04L49/9094Arrangements for simultaneous transmit and receive, e.g. simultaneous reading/writing from/to the storage element
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • 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/12Protocol engines

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer And Data Communications (AREA)
  • Communication Control (AREA)
  • Information Transfer Systems (AREA)
  • Multi Processors (AREA)

Abstract

통신 프로세서는 데이터 프레임 및 커맨드를 송수신한다. 송신 및 수신 프로토콜 엔진은 프레임이 일련의 프레임에서 최후 프레임인지를 나타내는 소정의 비트를 이용하는 호스트 드라이버 소프트웨어에 의해 제어된다. 이 정보는 전송되기 전에 송신 프레임에 배치된다.

Description

버퍼 리스트 변경자 제어 비트를 갖는 통신 프로세서{COMMUNICATION PROCESSOR HAVING BUFFER LIST MODIFIER CONTROL BITS}
최근 컴퓨터 및 주변 기기들이 급속히 증가하고 있다. 이로 인해, 이 장치들을 상호 접속하는 개선된 방법이 요구되고 있다. 다른 종류의 컴퓨터 및 주변 기기가 서로 통신할 수 있도록 하는 광범위한 네트워크가 개발되고 있다.
이러한 네트워크를 따라 데이터를 교환할 때 속도 면에서 문제가 발생한다. 이와 같은 문제 발생은 네트워크 아키텍쳐 속도의 증가가 보다 빠른 컴퓨터 처리 속도에 보조를 맞추지 못하기 때문에 놀라운 일은 아니다. 컴퓨터 칩의 처리 능력은 약 18개월마다 2배가 되며, 이로 인해 점점 더 강력한 머신이 생성되고 처리 대역폭은 그에 미치지 못하고 있다. 1 메가비트/초의 입출력이 처리 능력 "MIPS(millions of instructions per second)" 마다 통상 요구된다라고 추정되고 있다. CPU가 쉽게 200MIPS를 초과하기 때문에. 네트워크 아키텍쳐가 보다 빠른 속도에 보조를 맞추기란 어렵다.
광대역 네트워크(예를 들면, LAN 및 WAN) 및 채널은 컴퓨터 네트워크 아키텍쳐용으로 개발되고 있는 2가지의 접근 수단이다. 종래의 네트워크는 다량의 유연성 및 비교적 장거리 기능을 제공한다. 채널, 예를 들면 엔터프라이즈 시스템 접속(ESCON) 및 소형 컴퓨터 시스템 인터페이스(SCSI)는 고성능 및 고신뢰성용으로 개발되고 있다. 통상적으로 채널은 컴퓨터 사이 또는 컴퓨터와 주변 기기 사이의 전용 단거리 접속을 사용한다.
채널 및 네트워크의 특징은 "파이버 채널"로 알려진 새로운 네트워크 표준 규격에 통합되어 왔다. 파이버 채널 시스템은 네트워크의 유연성 및 접속성에 채널의 속도 및 신뢰성을 결합한다. 파이버 채널은 현재 매우 높은 데이터 전송률, 예를 들면 266 또는 1062Mbps로 동작할 수 있다. 이러한 속도는 수요가 꽤 급증하고 있는 어플리케이션, 예를 들면 비압축된 풀 모션 고화질 비디오를 처리하기에 충분하다.
파이버 채널을 전개하는 데에는 통상 3가지 방법이 있는데, 단순한 포인트 투 포인트 접속, 중재형 루프 및 교환 패브릭(fabrics)이 그것이다. 가장 단순한 토폴로지는 포인트 투 포인트 구성이며, 단순히 임의의 2개의 파이버 채널 시스템을 직접 접속한다. 중재형 루프는 중재를 통해 대역폭에 대한 공유 액세스를 제공하는 파이버 채널 링 접속이다. "패브릭"으로 칭해지는 교환 파이버 채널 네트워크는 크로스 포인트 스위칭의 이점을 균형있게 함으로써 초고성능을 산출한다.
파이버 채널 패브릭은 종래의 전화 시스템처럼 동작한다. 패브릭은 여러 장치, 예를 들면 파이버 채널 인터페이스 포트를 갖는 워크 스테이션, PC, 서버, 라우터, 메인 프레임, 및 격납 장치를 접속할 수 있다. 각각의 이러한 장치는 프레임 헤더에 목적지 포트 어드레스를 기입함으로써 패브릭을 "호출(call)"하는 발신 포트를 가진다. 파이버 채널 명세에는 이 프레임의 구조가 정의되어 있다. 이 프레임 구조는 이하에서 논의되고 본원 발명에 의해 처리될 데이터 전송 이슈를 제기한다. 파이버 채널 패브릭에서 소망의 접속을 세팅하는 모든 작업이 행해지기 때문에, 프레임 발신기는 복잡한 경로 알고리즘과 관련될 필요가 없다. 복잡한 영구 가상 회로(PVC)를 세팅하지 않아도 된다. 파이버 채널 패브릭은 16million 어드레스 이상 처리할 수 있기 때문에 대규모 네트워크를 수용할 수 있다. 패브릭은 단순히 포트를 부가하는 것으로 확대될 수 있다. 완전히 형성된 파이버 채널 네트워크의 총 데이터 전송률은 테라(terra) bps 범위 내에 있을 수 있다.
도 1은 파이버 채널 접속의 3가지의 기본 형태를 도시하고 있으며, 파이버 채널 테크놀로지를 사용하는 여러 가지 방법이 도시되어 있다. 특히, 포인트 투 포인트 접속(10)은 메인프레임을 상호 접속하고 있다. 파이버 채널 중재형 루프(11)는 디스크 기억 장치를 접속하고 있다. 파이버 채널 스위치 패브릭(12)은 워크 스테이션(13), 메인 프레임(14), 서버(15), 디스크 드라이브(16) 및 LAN(17)을 접속하고 있다. LAN은 예를 들면, 이더넷, 토큰 링 및 FDDI 네트워크를 포함하고 있다.
ANSI 명세(X3.230-1994)는 파이버 채널 네트워크를 정의하고 있으며, 5개 층사이에 파이버 채널 기능을 분배한다. 도 2에 도시된 바와 같이, 파이버 채널의 5개의 기능층은 FC-0(물리적 매개층), FC-1(코딩 및 디코딩층), FC-2(프레임 프로토콜 및 노드간의 흐름 제어를 포함한 실제 전송 메카니즘), FC-3(공통 서비스층), FC-4(최상층 프로토콜) 이다.
파이버 채널이 비교적 고속으로 동작하기는 하지만, 보다 빠른 프로세서의 요구에 부응하기 위해서는 속도를 한층 더 증가시키는 것이 바람직하다. 속도를 증가시키기 위한 한 방법으로는 인터페이스 포인트에서 발생하는 지연을 제거, 감소시키는 것이 있다. 이러한 지연은 FC-1층에서 FC-2 층으로의 프레임 전송시에 발생한다. 이 인터페이스에서, 파이버 채널 데이터 링크에 의해 연결된 장치는 파이버 채널 프레임을 연속적으로 수신한다. 프로토콜 엔진은 이 프레임을 수신하여 다음 층, 즉 도 2에 도시된 FC-2층에서 그것들을 처리한다. 프로토콜 엔진의 기능은 각 프레임을 타당성 여부를 확인하고, 각 프레임을 호스트에 전송하기 위해 DMA 오퍼레이션을 대기시키고, 송신 프레임을 작성한다.
높은 비트 속도의 파이버 채널 데이터 링크는 프로토콜 엔진의 최종 요청에 중점을 둔다. 그러므로, 일부 프로토콜 엔진은 반이중 모드로만 동작하며, 이것은 프로코콜 엔진이 동시에 한 방향으로만 데이터를 처리할 수 있다는 것을 의미한다. 송신 또는 수신 태스크 중 하나가 다른 태스크를 실행하는 동안에는 대기해야만 하기 때문에 데이터 전송의 속도를 상당히 저하시킨다.
전이중 프로토콜 엔진은 수신된 프레임과 송신된 프레임을 동시에 처리할 수 있다. 그래서, 전이중 프로토콜 엔진은 데이터 처리 효율을 상당히 증가시킨다. 그러나, 전이중 프로토콜 엔진에서 로컬 RAM을 갖는 마이크로프로세서는 통상 송수신 오퍼레이션을 처리한다. 이러한 기능을 위한 마이크로프로세서의 사용으로 프로토콜 엔진의 비용이 상당히 증가된다.
또한, 종래의 프로토콜 엔진은 때때로 프레임 처리 단위의 호스트 CPU에 관련된다. 예를 들면, 수신된 프레임의 타당성 여부 확인 및 수신 프레임에 대한 응답 발생은 통상 호스트 CPU와 관련된다. 호스트 CPU와의 관련으로 프레임 송수신 속도가 제한되고 호스트 CPU는 다른 태스크를 실행하지 못하게 된다.
또한, 송신 프로토콜 엔진은 송신 프레임 "헤더"를 작성하기 위해 프레임 페이로드 데이터 크기를 미리 통지해야 한다. 그 한가지 방법은 일련의 프레임이 격납되어 있는 컴퓨터 메모리를 송신 프로토콜 엔진이 액세스하여 최후 프레임의 헤더 필드를 변경하는 것이다. 그러나, 송신 프로토콜 엔진이 페이로드 데이터를 전송하기 전에 현재 프레임이 최종 프레임인지의 여부를 판정할 수 없는 경우, 이러한 별도의 단계는 프레임 헤더를 작성하여 송신하는 처리 속도를 저하시키고 이로 인해 전반적인 통신 데이터 처리 속도가 저하된다.
전술된 점에 비추어 볼 때, 본 발명의 목적은 파이버 채널 네트워크와 같은 고속 네트워크에서 데이터 전송 처리 속도를 증가시키고, 데이터 프레임의 프로토콜 엔진의 처리 속도를 증가시킬 수 있는 방법을 제공하고, 프레임 처리 단위의 호스트 CPU와 상관없이 고속 전이중 데이터 처리를 실행할 수 있는 프로토콜 엔진을 제공하고, 송신 프로토콜 엔진이 프레임 페이로드 데이터 크기를 미리 통지하는 것뿐만 아니라, 현재 프레임이 최종 프레임인지의 여부를 미리 판정하는 방법을 제공하는 것에 있다.
본원 발명은 컴퓨터 네트워크에서의 데이터 전송 장치에 관한 것으로, 구체적으로 말하면 제어 비트를 이용하여 컴퓨터 네트워크 경계선을 지나는 데이터 프레임을 용이하게 생성 및 전송하는 장치에 관한 것이다.
도 1은 파이버 채널 테크놀로지를 이용한 종래의 복잡한 컴퓨터 네트워크의 블록도이다.
도 2는 종래의 파이버 채널 표준의 5가지 기능층을 도시한 도면이다.
도 3은 본 발명의 양호한 실시예에 따른 통신 처리 시스템의 단순화된 블록도이다.
도 4는 종래의 파이버 채널 데이터 프레임을 도시한 도면이다.
도 5는 본 발명의 양호한 실시예에 따른 전이중 통신 프로세서의 단순화된 블록도이다.
도 6은 본 발명의 양호한 실시예에서 호스트 데이터 구조를 도시한 도면이다.
도 7은 본 발명의 양호한 실시예에 따른 교환 콘택스트 리소스 인덱스(XRI)를 도시한 도면이다.
도 8은 본 발명의 양호한 실시예에서의 버퍼 포인터 리스트 엔트리 포맷을 도시한 도면이다.
도 9는 본 발명의 양호한 실시예에서의 버퍼 포인트 리스트 포맷을 도시한 도면이다.
본 발명은 컴퓨터 데이터 링크에서의 데이터 프레임의 처리 및 전송에 관한 것이다. 본 발명은 프레임 처리 단위의 호스트 CPU에 관련되지 않고 상주 마이크로프로세서 없이, 송신 프레임을 작성하고 수신 프레임의 타당성 여부를 판정하는데 이중 마이크로코드 엔진 및 특정 하드웨어를 사용하는 전이중 통신 프로세서에 관한 것이다. 본 발명의 양호한 실시예에서는 독립 송수신 프로토콜 프로세서를 사용하고 있다. 이 독립 프로세서는 전송 큐를 이용하여 서로 통신한다. 콘택스트(context) 관리자는 수신된 프레임의 타당성 여부를 판정하기 위해 수신 프로세서에 의해 사용되고 송신 프레임을 작성하기 위해 송신 프로세서에 의해 사용되는 콘택스트 정보를 공급한다.
콘택스트 정보는 버퍼 세그먼트의 어드레스 및 크기, 각 세그먼트의 제어 비트(Buffer List Modifier Bits)를 제공하는 버퍼 비트를 가리킨다. 송신 프로토콜 프로세서는 버퍼 세그먼트의 데이터를 프레임 시퀀스로 어떻게 송신할 것인지를 판정하는데 상기 제어 비트를 이용한다. 이 정보는 송신 프로토콜 프로세서가 송신 프레임 헤더를 작성 및 송신하는 속도를 증가시킨다. 양호한 실시예에서, 데이터 채널은 파이버 채널 링크이며 전이중 통신 프로세서는 FC-2 프로토콜 파이버 채널 프레임을 처리하도록 구성된다.
본 발명은 파이버 채널과 같은 고속 데이터 링크에서 프레임 송수신 속도를 증가시키는 전이중 통신 프로세서에 관한 것이다. 호스트 드라이버 소프트웨어와 직접적으로 통신하는 독립 송신 및 수신 마이크로코드 엔진을 사용함으로써 전이중 인터-프로세서 통신은 호스트 CPU와 관련없이 이루어진다. 버퍼 리스트 변경자 제어 비트의 사용으로, 프레임 버퍼에 최후 프레임이 포함되어 있다는 것을 미리 송신 프로세서에 통지함으로써 송신 프레임의 작성 및 송신 속도가 증가된다.
도 3은 본 발명의 양호한 실시예에 따른 전이중 통신 프로세서(22)를 이용하는 파이버 채널 통신 시스템(20)을 도시하고 있다. 일련의 데이터는 파이버 채널 데이터 링크(24)를 따라 수신된다. 통상적으로 프레임은 3개 부분, 프리엠블, 데이터 즉 "페이로드", 꼬리 부분으로 구성된다. 파이버 채널 데이터 링크에서, 예를 들면 파이버 채널 프레임은 프레임 개시부(SOF) 워드(4바이트); 프레임 헤더(6바이트), 0~2112 페이로드 바이트 및 순환 중복 검사(CRC) 워드(4바이트)를 포함한 데이터부; 프레임의 엔드부(EOF) 워드(4바이트)로 구성된다. 프레임 헤더는 링크 어플리케이션을 제어하고 장치 프로토콜 전송을 제어하고 잘못된 프레임을 검출하는데 사용된다. CRC 워드는 전송시에, 예를 들면 데이터 변조와 같은 문제가 있는지의 여부, 또는 프레임의 일부가 전송동안 누락되었는지의 여부를 나타낸다.
파이버 채널 데이터 링크(24)로부터 수신된 프레임은 입력되는 일련의 데이터를 디코딩하여 워드로 병렬처리하는 NL 포트(36)를 통해 처리된다. NL 포트(36)는 프레임으로 워드를 어셈블리한다. 또한, NL 포트(36)는 수신된 각 프레임에 대하여 CRC 워드를 점검하고, EOF 워드로부터 생성되는 EOF 상태 워드내의 다른 상태 정보 비트에 결과로서 생성되는 "굿-배드(good-bad)" CRC 상태 표시기를 부가한다. 그런다음, NL 포트(36)는 수신 프레임 FIFO 버퍼(28)에 프레임을 기록한다. 또한, 바람직한 FIFO 버퍼 모듈(28)에 관한 설명은 본원 발명의 동일 양수인에게 양도된 1997년 9월 23일 출원된 "프레임 바이패스의 엔드를 갖는 수신 프레임 FIFO(RECEIVE FRAME FIFO WITH END OF FRAME BYPASS)"라는 명칭하에 공동 계속 출원중인 제08/935,898호에 기재되어 있다.
파이버 채널 프레임은 전이중 통신 프로세서(22)에 의해 수신되며, 이 프로세서는 프로토콜 엔진이라고 칭해진다. 또한, 전이중 통신 프로세서(22)에 의해 몇 가지 기능이 실행된다; 즉, 1) 직접 메모리 액세스(DAM)를 통해 수신된 프레임의 데이터를 호스트 메모리에 기록하기 위해 호스트 커맨드를 대기시키고, 2) 프레임이 수신될 다음 논리 프레임인지를 확인하기 위해 프레임 헤더의 타당성 여부를 확인하고, 3) 프레임이 결함이 있는지의 여부를 판정하고, 4) 수신된 프레임 또는 호스트에 의해 생성된 송신 커맨드에 응답하여 송신 프레임을 발생하는 기능이 수행된
종래의 프로토콜 엔진과 달리, 전이중 통신 프로세서(22)는 마이크로프로세서를 구비하지 않는다. 대신에 이중 마이크로코드 엔진을 사용하여, 프로토콜 엔진 송신 태스크와 프로토콜 엔진 수신 태스크를 분리한다. 특히, 전이중 통신 프로세서(22)는 수신 프로토콜 엔진(30) 및 송신 프로토콜 엔진(32)을 포함한다. 이 프로토콜 엔진은 전송 대기 큐(60)를 통해 서로 통신한다. 수신 프로토콜 엔진(30)은 수신 프레임 버퍼(28)로부터 수신된 수신 프레임 헤더의 타당성 여부를 확인한다. 송신 프로토콜 엔진(32)은 송신 프레임을 작성하여 송신 FIFO(66) 및 NL 포트(36)를 통해 파이버 채널 데이터 링크(24)에 보낸다.
전이중 통신 프로세서(22)는 호스트 드라이버 소프트웨어(38) 및 호스트 메모리(42)를 포함하는 호스트 컴퓨터(40)와 결합하여 동작한다. 특히, 송신 프로토콜 엔진 및 수신 프로토콜 엔진(30, 32)은 호스트 드라이버 소프트웨어(38)에 의해 직접 통신한다. 수신 및 송신 프로토콜 엔진이 독립적으로 그리고 동시에 동작하기 때문에 전이중 통신이 이루어진다. 인터록된(interlocked) 콘택스트 정보 테이블은 이하에서 더 상세히 기술되는 바와 같이 수신 및 송신 프로토콜 엔진이 동일 I/O 커맨드를 동작시킬 수 있게 하는데 사용된다.
전이중 통신 프로세서(22)는 프레임 처리 단위의 호스트 CPU를 사용하지 않고도 프레임을 처리할 수 있다. 예를 들면, 전이중 통신 프로세서(22)의 기능의 한 예는 원격 장치로 하여금 파이버 채널 링크(24)를 따라 수신 프로토콜 엔진(30)에 프레임을 보낼 수 있게 한 것이며, 여기서 수신 프로토콜 엔진(30)은 NL 포트(36)를 통한 원격 장치에서의 데이터를 파이버 채널 링크(24)에 보내기 위해 송신 프로토콜 엔진(32)을 "웨이크-업(wake-up)"한다. 이러한 데이터는 예를 들면 호스트 메모리(42)에 상주한다.
도 5는 본 발명의 양호한 실시예의 전이중 통신 프로세서(22)에 관하여 추가하여 상세하게 도시하고 있다. 전이중 통신 프로세서(22)는 호스트 메모리(42)에 상주하는 데이터 구조를 포함하며, 인접한 물리적 메모리 및 비인접한 물리적 메모리를 포함한다.
파이버 채널 프레임은 NL 포트(36)를 통해 수신 프로토콜 엔진(30)에 의해 수신된다. NL 포트 상태 유닛(44)은 수신 프레임 시퀀스의 시간 조정 및 NL 포트 인터럽트 모니터링 기능을 행한다. 수신된 프레임은 수신 버퍼(50)에 수신된 프레임을 배치하는 수신 버퍼 제어 유닛(48)에 시퀀서(46)를 통해 전송된다. 그런다음, 수신 버퍼(50)의 프레임 헤더는 수신 프로토콜 엔진(30)에 자동 배치된다.
각 프레임 헤더내의 룩업 필드는 관련 콘택스트에 관한 포인터를 포함한다.통상적으로, 관련 콘택스트는 호스트 메모리(41)내의 호스트 드라이버(38)에 의해 초기화되고, 호스 메모리(42)에서 특정 데이터 프레임이 배치되는 곳을 나타내는 정보를 포함한다. 구체적으로 말하면, 콘택스트는 예를 들면 최대 프레임 크기, 현재 버퍼 포인터 및 길이, 소형 컴퓨터 시스템 인터페이스(SCSI) 상태 정보를 포함하며, 버퍼의 리스트에 형성된다.
호스트 메모리 유닛(42)은 많은 메가비트의 메모리를 다수개 포함하며, 각 특정 프레임은 그 메모리의 한 슬롯에 적절하다. 각 프레임 헤더는 수신 프로토콜 엔진이 그 프레임의 타당성 여부를 판정할 수 있도록 수신 프로토콜 엔진(30)에 그 특정 프레임에 대하여 액세스 또는 "풀-다운"될 콘택스트를 알린다. 콘택스트는 호스트 메모리 인터페이스(54)를 통해 콘택스트 관리자 엔진(52)의 제어 하에서 호스트 메모리(42)로부터 풀다운된다. 수신 프로토콜 엔진 시퀀서(46)는 프레임의 타당성 여부를 확인한다.
프레임 타당성 여부 확인이 종료되면, 프레임 헤더에 의해 나타나는 콘택스트는 프레임을 처리할 것을 수신 프로토콜 엔진(30)에 알린다. 여러 가능성이 있다: 1) 라우팅 제어/타입(R_CTL/TYPE) 링 제어 유닛(56) 밖으로 전송하고 나서, 호스트 메모리 인터페이스(52)를 통해 호스트 메모리(42)로 전송된다; 2) 그 프레임을 버퍼 리스트 링 제어 유닛(58)을 통해 호스트 메모리내의 버퍼 포인터 리스트의 한 세그먼트에 전송한다; 3) 비데이터 수신 프레임 및 관련 페이로드를 처리한다. (예를 들면, 프레임은 타겟이 데이터를 수신할 준비가 되어 있음을 송신기에 알리는 "전송 대기"와 같은 전달 프레임일 수 있다. 이러한 전달로 인해 수신 프레임이 전송 대기 큐(60)를 통과하게 되며, 그런 다음 송신 커맨드는 송신 프로토콜 엔진(32)에 전송될 것이다)
두 번째 경우는 버퍼 기술어(buffer descriptor)의 순차 리스트인 버퍼 포인터 리스트에 프레임을 전송하는 것을 포함한다. 리스트의 제1 엔트리는 총 전송 크기 바이트를 포함한다. 전술된 실시예에서, 워드 전송만이 전이중 통신 프로세서(22)에 의해 실행된다. 따라서, 총 전송 크기가 4바이트 워드의 정수가 아니면 추가 바이트는 다음 경계로 전송된다. 버퍼 리스트의 다음 엔트리는 2개 부분으로 구성되는데, 한 부분은 버퍼의 개시점을 나타내고 다른 부분은 버퍼의 크기 및 용도를 나타낸다.
본 발명에 의하면, 각 버퍼 포인터 리스트는 버퍼 용도를 기술하는 버퍼 리스트 변경자(BLM) 비트를 포함하고, 각 송신 프레임용 출발 파이버 채널 프레임 헤더(FC-2 헤더)를 작성하는데 사용된다. 전이중 통신 프로세서(22)는 프레임 헤더 및 대응하는 프레임 제어(F_CTL) 비트를 작성해야 하며, DMA를 통해 페이로드를 전송하기전에 송신 FIFO(66)에 프레임 헤더를 전송한다. BLM 비트 및 버퍼 리스트의 버퍼 길이는 전이중 통신 프로세서(22)가 프레임이 일련 프레임 중에서 최후 프레임인지의 여부를 판정할 때 도움이 된다. 수신 프로토콜 엔진에 대하여, BLM 비트는 수신 데이터의 적절한 배치 및 버퍼 세그먼트의 상태 정보를 제어한다. BLM 비트는 이하에서 상세히 기술된다.
전이중 통신 프로세서(22)에 의해 실행되는 태스크의 일례는 파이버 채널 링크(24)상의 디스크 드라이브에의 데이터 기록을 명령하는 원격 장치로부터의 데이터 기록 커맨드를 실행하는 것이다. 기록 커맨드는 전송되며, 전이중 통신 프로세서는 그 기록 커맨드를 디스크 드라이브에 전송하고, 데이터를 수신할 준비가 되어 있음을 나타내는 전송 대기 메시지를 수신 프로토콜 엔진(30)에 반송한다. 이 메시지는 송신 프로토콜 엔진(32)으로 하여금 호스트 메모리(42)로부터 데이터를 복구하도록 명령하고 프레임을 발생하여 디스크 드라이브에 그 데이터를 송신하는 전송 대기 큐(60)로 보내진다.
송신 프로토콜 엔진(32)은 2개의 이벤트 중 하나에 의해 트리거링되는데, 하나는 전송 대기 큐(60)의 엔트리의 존재이고, 나머지는 커맨드 링 컨트롤러(62)의 동작에 의한 것이다. 이하에서 기술될 교환 콘택스트 리소스 인덱스(XRI)는 각 커맨드를 처리하는데 사용된다. 커맨드 링은 커맨드 엔트리의 순환 큐, 통상 판독 및 기록 커맨드를 말한다. 이러한 판독 및 기록 커맨드는 예를 들면, 디스크 드라이브와 같은 원격 장치에 커맨드를 전달하는데 사용된다. 커맨드 링의 크기 및 베이스 메모리 어드레스는 다음과 같은 커맨드 링을 관리하기 위해 사용되는 "쓰기(put)" 및 "읽기(get)" 포인터를 포함하는 커맨드 링 베이스 레지스터에 규정되어 있다: 호스트 드라이버(38)는 커맨드 링(62)에 커맨드가 대기할 때마다 포인터가 증가하는 쓰기 포인터를 관리한다. 전이중 통신 프로세서(22)는 링으로부터 커맨드가 판독될 때마다 포인터가 증가하는 읽기 포인터를 관리한다.
모든 프레임 전송 이외의 커맨드는 버퍼 포인터 리스트에 포인터를 제공한다. 버퍼 포인터 리스트는 제1 버퍼 리스트 엔트리의 총 버퍼 크기 및 다음 버퍼 리스트 엔트리의 버퍼 포인터-크기 쌍을 포함한다. 커맨드의 XRI 필드는 콘택스트관리자(52)로 하여금 송신 프로토콜 엔진(32)에 적절한 콘택스트를 풀다운하도록 명령하는데 사용된다. 교환으로 칭해지는 이러한 전송은 프레임이 얼마나 많은 데이터를 가지고 있으며 그것이 어느 단계에 있는지 등을 그 특정 버퍼 링 리스트에 있는 송신 프로토콜 엔진(32)에 알린다. 또한, 콘택스트는 다음의 프레임 헤더를 포함한다. 다음 프레임 헤더는 호스트 드라이버(38)에 의해 초기에 작성되지만 그 후에 송신 프로토콜 엔진(32)은 다음의 프레임 헤더를 작성한다. 콘택스트 관리자(52)는 호스트 메모리(42)로부터 각 프레임 헤더를 복구하고 그 헤더를 송신 헤더 컨트롤러(68)에 패스하며, 그 프레임 헤더를 송신 FIFO(66)를 통해 NL 포트(36)에 전송한다.
프레임 헤더가 작성되면, 시스템은 호스트 메모리로부터 데이터를 모으는 처리에서 버퍼 리스트의 뒤를 따르기 시작한다. 커맨드용 콘택스트는 버퍼 리스트에 포인터를 포함한다. 엔트리는 동시에 버퍼 리스트 링 컨트롤러(70)에 의해 버퍼 리스트로부터 풀다운된다. 프레임 헤더는 송신 헤더 제어부(68)를 통해 송신 FIFO(66)에 전송된다. 페이로드 세그먼터(72)는 페이로드를 풀인(pull in)하기 시작하여 송신 FIFO(66)에 페이로드 데이터를 배치한다. 일단 프레임 헤더 및 페이로드 데이터가 송신 FIFO(66)에 있기만 하면, 최후 태스크는 송신 FIFO(66)에 프레임 엔드(EOF) 워드를 기록하는 것이다. EOF 워드는 어셈블링된 프레임을 파이버 채널 링크(24)로의 전송을 시작하도록 NL 포트(36)에 알리기 위한 표시이다. 모든 프레임이 연속적으로 전송되자마자, 응답이 발생되어 호스트 드라이버(38)에 전송되며, 이 응답은 미결정의 커맨드와 관련된 프레임이 사실상 연속적으로 전송되는지를 나타낸다.
마찬가지로, 수신 프로토콜 엔진(30)은 수신을 확인하기 위해 송신자에게 파이버 채널 링크(24)상으로 반송되는 응답 프레임(acknowledge frame)(수신 프레임 헤더의 변경 형태)을 발생하는 응답 FIFO(74)를 포함한다.
또한, 전이중 통신 프로세서(22)는 수신 및 송신 프로토콜 엔진 레지스터(76, 78)를 포함한다. 이 레지스터는 콘텍스트 관리자(52)의 콘텍스트 레지스터를 통해 연결되어 동기되는 자동 프로토콜 관리 기능을 포함한다. 콘텍스트 관리자(52)는 호스트 메모리(42)로부터 교환 콘텍스트의 코히런시(coherency) 및 고속 처리(caching)를 관리하고, 또 수신 및 송신 프로토콜 엔진(30, 32)에 의한 액세스를 콘텍스트 레지스터(80)에 포함된 고속 처리된 콘텍스트에 동기시킨다.
양호한 실시예에서, 콘텍스트 관리자(52), 송신 및 수신 프로토콜 엔진(30, 32)은 호스트 메모리 인터페이스(54)를 통해 호스트(40)와 통신하며, 주변 요소 인터페이스(PCI), 직접 메모리 액세스(DMA) 컨트롤러(도시되지 않음),및 PCI 슬레이브 인터페이스(도시되지 않음)를 포함한다. 프로토콜 엔진 레지스터(76, 78)는 프로토콜 엔진용(30, 32)용 인터럽트 컨트롤러 및 PCI 슬레이브 인터페이스를 포함한다. 콘텍스트 관리자(52), 수신 및 송신 프로토콜 엔진(30, 32)은 PCI 슬레이브 인터페이스 및 인터럽트 컨트롤러에 대하여 프로토콜 엔진 레지스터(76, 78)에 상태를 제공하고 그리고 그로부터 상태를 제공받는다.
수신 및 송신 프로토콜 엔진(30, 32)은 2개의 독립 프로그래머블 시퀀서(46, 63)를 사용함으로써 파이버 채널 프로토콜을 이행한다. 시퀀서(46, 63)의 사용으로 프로토콜 엔진 상태 머신이 가변 기록 가능 제어 스토어 RAM에서 이행될 수 있으며, 초기화 동안에 수신 및 송신 프로토콜 레지스터(76, 78)로 다운 로딩된다. 호스트(40)는 이 기록 가능 제어 스토어 RAM을 액세스하여 판독하고 프로토콜 레지스터 맵을 통해 기록 가능 제어 스토어 RAM에 기록한다. 기록가능 제어 스토어 RAM의 코드를 교환함으로써 새롭거나 또는 다른 기능이 전이중 통신 프로세서(22)에 다운로딩될 수 있기 때문에, 시퀀서의 사용은 프로토콜 엔진 상태 머신 이행에 있어 상당한 유연성을 부가한다.
전이중 통신 프로세서(22)는 단일 칩상(예를 들면 어플리케이션 특정 집접 회로(ASCI))상에서 단독으로 또는 다른 기능과 함께 이행될 수 있다. 예를 들면, 전술된 실시예에서, 전이중 통신 프로세서(22)는 가장 최근의 송신 및 수신 콘텍스트의 일례를 고속 처리할 수 있다. 그러나, 추가 온칩 메모리를 부가함으로써, 추가 콘텍스트의 일례를 고속 처리할 수 있다.
버퍼 포인터 리스트
도 6은 전이중 통신 프로세서(22)에 관하여 기술된 실시예에서 주요 데이터 구성을 도시하고 있다. 도 6에 도시된 버퍼 포인터 리스트는 버퍼 기술어의 순차 리스트이다. 리스트에서 제1 엔트리는 총 전송 바이트 크기를 포함한다; 그러나, 전이중 통신 프로세서(22)가 워드 전송만을 실행하기 때문에, 만일 총 전송 크기가 4바이트 워드의 정수가 아닌 경우에는 추가 바이트는 다음 워드 경계로 전송된다. 버퍼 리스트에서 다음 엔트리는 2개 부분으로 구성되는데, 하나는 버퍼의 개시부를 가리키는 어드레스이고 나머지는 버퍼 및 제어 비트의 워드 크기이다. 그러나, 개시 워드 어드레스 및 버퍼 워드 카운트 파라미터를 사용하여, 호스트는 버퍼 개시 어드레스를 32비트 워드 어드레스로 조정한다.
전술된 실시예에서, 버퍼 포인터 리스트는 쿼드워드(16바이트) 경계에서 항상 개시한다. 최후 엔트리는 항상 NULL 기술어이다. 버퍼 포인터 리스트는 인접한 물리적 메모리에 존재해야 한다. 버퍼 기술어의 포맷 및 리스트의 레이아웃은 도 8에 도시되며, 버퍼 포인터 리스트 엔트리 포맷, 버퍼 포인터 리스트 포맷은 도 9에 도시된다.
전술된 실시예의 비트 버퍼 포인터 리스트 엔트리 포맷 및 버퍼 포인터 리스트 포맷은 한가지 가능한 실시예에 대하여 상세히 이하와 같이 기술된다:
비트[31:0] 총 전송 크기(TTSZ)
총 전송 크기는 전송되거나 또는 수신될 바이트의 총 수이다. FCP I/O의 경우에서 총 전송 크기는 FCP_CMD, FCP_XFR_RDY 또는 FCP_RSP 프레임을 포함하지 않는다.
비트[31:2] 버퍼 개시 워드 어드레스(BSWA)
이 필드는 버퍼 리스트에서 버퍼 리스트 엔트리(BLE) 위치에 따른 이하의 정보를 포함한다. 제1 BLE에 대하여, BSWA 필드는 사용되지 않는다. 최후 BLE이외의 모든 다음 BLE에 대하여, BSWA 필드는 버퍼의 개시 워드 어드레스를 포함하고, BSWA 필드는 IOTAG를 포함한다. 최후 BLE는 BWC(길이)를 제로로 세팅함으로써 표시된다. 0000,0000h 내지 FFFF,FFFCh 범위의 모든 BSWA 값은 유효하다.
비트[31:24] 버퍼 리스트 변경자(BLM)
BML 비트는 송신 프로토콜 엔진(32)으로 하여금 FC2 헤더의 일정 비트를 세팅하거나 클리어하게 한다. 이러한 비트는 제1 BLE이외의 모든 BLE에 대해 유효하며, 반면에 이 비트들은 최고의 총 전송 크기 비트(31∼24)로서 다시 정의된다. BLM 비트는 다음과 같이 사용된다.
비트[31] 수신 버퍼
이것은 수신 버퍼이며 전송되지 않을 것이다.
비트[30] 제1 프레임 표시
세팅될 때, 송신 프로토콜 엔진(32)은 한 프레임에 대하여 SOF 구획 문자를 SOFi3로 세팅할 것이다.
비트[29] F_CTL.fs 비트
세팅될 때, 송신 프로토콜 엔진(32)은 제1 교환 프레임 F_CTL 비트를 세팅할 것이다.
비트[28] F_CTL.si 비트
세팅될 때, 송신 프로토콜 엔진(32)은 상기 시퀀스로 전송되는 최후 프레임에 대해 F_CTL 필드에 시퀀스 초기 비트를 세팅할 것이다.
비트[27] F_CTL.es 비트
세팅될 때, 송신 프로토콜 엔진(32)은 상기 시퀀스로 전송되는 최후 프레임에 대해 F_CTL 필드에 시퀀스 엔드 비트를 세팅할 것이다.
비트[26] F_CTL.ls 비트
세팅될 때, 송신 프로토콜 엔진(32)은 교환을 종료하도록 상기 시퀀스로 전송되는 최후 프레임에 대해 F_CTL 필드에 최후 시퀀스 비트를 세팅할 것이다.
비트[25] SEQ_COMPLETE
세팅될 때, 송신 프로토콜 엔진(32)은 상기 BLE에 의해 나타나는 모든 데이터가 전송될 때 시퀀스를 종료할 것이다.
비트[24] FCP_DATA
세팅될 때, 송신 프로토콜 엔진(32)은 헤더 TYPE 필드를 FCP_DATA로 교체할 것이다.
비트[23:18] 예약 BLM
예약 BLM 비트는 제1 BLE를 제외하고는 나중에 사용하기 위해 시퀀서에 매핑되며, 총 전송 크기 비트(23∼18)로서 형성된다.
비트[17:2] 버퍼 워드 카운트(BWC)
이 비트는 버퍼 리스트에서 BLE 위치에 따라 버퍼 또는 총 전송 크기의 32비트 워드 길이로 형성된다. 제1 BLE에 대하여, 이 비트는 총 전송 크기 17-2 비트를 제공한다. 최후 BLE를 제외한 모든 차후의 BLE에 대하여, 이 필드는 버퍼 워드 카운트를 형성한다. 최후 BLE에 대하여, BWC 필드는 예약되어 제로 값을 가져야 한다.
비트[1:0] 예약 비트
제1 BLE를 제외하고는 제로로 기록되어야 하며, 여기서 1-0 비트는 총 전송의 나머지 바이트 길이이다.
비트[31:0] I/O 태그(IOTAG)
BSWA 대신에, 최후 BLE는 완료 동작을 확인하기 위해 호스트 드라이버에 사용되고 있는 값을 포함할 수 있다. 이 필드는 전이중 통신 프로세서(22)에 의해 처리되지 않는다. 송신 시퀀스 커맨드의 정상 완료에 대하여 1워드의 응답은 이 워드를 가리킨다.
XRI 콘택스트
양호한 실시예에서, 각 콘택스트는 2개의 호스트 메모리 구조, 즉 원격 포트 콘택스트 및 교환 콘택스트로 나누어진다. 교환 콘택스트는 커맨드를 처리하는데 사용되는 교환 콘택스트 리소스 인덱스(XRI)에 포함된다. 특히, 교환 콘택스트는 하나 이상의 시퀀스의 완전 교환 또는 제어 전송을 기술하는 구조이다. 이 구조는 교환 포인터 테이블에서의 엔트리에 의해 표시된다. XRI 콘택스트는 즉각 또는 개별 시퀀스를 통해 발생하는 동작에 필요한 지원 콘택스트를 포함한다. 송신될 데이터, 또는 데이터를 수신할 버퍼는 실제 사용 버퍼를 가리키는 버퍼 리스트 엔트리 세트로 구성된 버퍼 포인터 리스트에 의해 기술된다. 전술된 바와 같이, 버퍼 리스트 엔트리는 버퍼의 어드레스 및 길이, 초기화된 시퀀스, 교환 엔드, 시퀀스 엔드 등을 나타내는 제어 비트를 포함한다. 다수의 시퀀스 동작에 대하여, XRI 콘택스트는 동작중인 레지스터 콘텐트의 격납을 제공한다.
양호한 실시예에서, XRI 콘택스트는, 시발되는 파이버 채널 프로토콜(FCP) 교환, 전송 교환, 수신 프레임 타당성 여부 확인, 단일 프레임 또는 다수의 프레임 시퀀스의 전송을 제어하기 위한 일시적인 목적을 위해 전이중 통신 프로세서(22)에의해 사용된다. XRI 콘택스트는 데이터가 버퍼 링 버퍼로 수신되는 교환 트랙을 유지하기 위해 호스트 드라이버(38)에 의해 사용될 수 있다.
XRI 콘택스트의 일례는 도 7에 도시된다. 제1 워드는 XRI 제어 상태 워드이다. XRI 제어 상태 워드는 호스트 드라이버에 의해 설정되는 구성 필드를 포함한다. 총 전송 크기 워드는 시퀀서 액티비티를 반영한다. 시발되는 파이버 채널 프로토콜(FCP) 교환을 위해, XRI 제어-상태 워드는 기록 동작용의 나머지 바이트 카운트 및 판독 동작용의 누적 수신되는 바이트 카운트를 나타낸다. 송신 시퀀스 커맨드에 대하여, XRI 제어 상태 워드는 완전 시퀀스가 송신되기 전에 동작이 정지되는 경우 나머지 바이트 카운트를 나타낸다. Rxeng 제어 상태 워드는 프레임의 타당성 여부를 확인하는데 수신 프로토콜 엔진(30)에 의해 사용된다. 현재 버퍼 리스트 어드레스 워드는 현재 버퍼 오프셋 어드레스 워드를 처리하는 시퀀서 액티비티를 반영한다.
버퍼 리스트 변경자(BLM) 비트는 시퀀서 제어하에서 판독되는 버퍼 리스트 엔트리(BLE)의 대응 비트로부터 설정된다. 워드 5의 잔여 버퍼 길이는 시퀀서 액티비트를 반영한다. 시퀀서가 BLE를 판독할 때마다, 이 필드는 버퍼 워드 카운트를 수신한다. 시퀀서가 버퍼에 데이터를 송신하거나 또는 버퍼로부터 데이터를 수신하는 DMA 동작을 발행할때마다, 워드 카운트는 전송 데이터의 길이만큼 감소된다. 또한, 현재 버퍼 버스트 길이 워드는 송신 시퀀서 액티비티를 반영하기도 한다.
워드 7-12의 파이버 채널 FC_2 헤더는 송신 프로토콜 엔진(22)에 의해 송신되는 각 프레임에 대하여 헤더 정보를 발생하는데 사용된다.
R_CTL/TYPE 버퍼 링
도 5를 다시 참조하면, R_CTL/TYPE 링 제어부(56)는 FCP 응답기 프레임을 제외한 모든 프레임을 수신하기 위해, 즉 국부적으로 시발되는 FCP 교환을 위해 사용되는 버퍼 링을 제어한다. 3개의 R_CTL/TYPE 버퍼 링은 적절한 드라이버 엔트리 포인트에 대해 수신되는 프레임을 역다중화시킬 때 호스트를 보조한다. R_CTL/TYPE 버퍼 링은 버퍼 기술어에 관한 고정 크기의 순차 리스트이다. 이 리스트는 로직컬 링으로서 하드웨어에 의해 관리된다. 버퍼 기술어는 버퍼 포인터 리스트에서 버퍼 리스트 엔트리와 같지만, BLM 비트를 포함하지는 않는다.
호스트 드라이버(42)는 대응하는 베이스 레지스터에서 각 버퍼 링의 위치 및 크기를 나타낸다. 특정 레지스터는 R_CTL/TYPE 버퍼 링에서의 엔트리가 유효한지를 나타낸다. 각 엔트리는 쓰기 포인터 및 읽기 포인터로 구성된다. 각 링용 수신 버퍼는 호스트 드라이버가 링에 대응하는 버퍼 기술(記述)을 쓰는 정확한 순서로 사용된다.
루프 초기화는 호스트 제어 하에서 국부적으로 초기화되거나 또는 일부 다른 포트에 의해 원격적으로 초기화된다. 호스트 드라이버(38), 송신 및 수신 시퀀서(46, 63), NL 포트(36) 로직 모두는 루프 초기화 처리를 완료하기 위해 함께 동작한다. 이 처리 동안에, 호스트 드라이버는 파이버 채널 확장된 링크 서비스(ELS) 프레임으로 시작하거나 또는 패스되며, 이 프레임은 루프상에서 포트의 어드레스 및 기능을 결정한다. 호스트 드라이버(38)는 루프 초기화 처리를 보다 용이하게 하는 루프 초기화 선택 마스터(LISM) ELS 프레임을 발행한다.
수신 및 송신 프로토콜 엔진(30, 32)이 전이중으로 동작하는 2개의 자동 엔진이고 그 2개의 엔진간에 최소의 통신을 하기 때문에 초기화를 필요로 한다. 초기화 동안에, 송신 프로토콜 엔진(32)은 턴오프되고 수신 프로토콜 엔진(32)은 프레임을 수신할 수 있게 되고, 그런다음 그것들을 송신 프로토콜 엔진(32)을 통해 보낸다. 그러므로, 수신 프로토콜 엔진은 송신 프로토콜 엔진 하드웨어의 "오너쉽(ownership)"을 선택하여, 포워드 프레임, 특히 송신 LISM 제어 모듈(82)을 이용하여 송신되는 LISM 프레임에 그 하드웨어를 사용한다.
버퍼 리스트 변경자 비트 인터프리터
전이중 통신 프로세서(22)는 송신할 파이버 채널 FC2 헤더를 작성하는데 버퍼 리스트 변경자(BLM)를 사용한다. 헤더 및 대응 F_CTL 비트를 작성해야 하고, 페이로드를 직접 메모리 액세스하기 전에 그 작성된 것들을 송신 FIFO에 전송해야 한다. 버퍼 리스트의 BLM 비트 및 버퍼 길이는 프로세서(22)가 프레임이 최후 프레임인지의 여부를 판정할 때 도움이 된다. 파라미터는 이하의 의사-부호로 표시되는 바와 같이 전이중 통신 프로세서(22)에 의해 인터프리터된다.
if(first frame of command or xfr_rdy)
if(BLM. first_frame)
SOF=SOFi3
else SOF=SOFn3//Set SOFi3/n3 delimiter
else SOF=SOFn3
if(BLM.first_sequence)F_CTL.fs=1
else F_CTL.fs=0//Set F_CTL first frame bit
if(BLM.FCP_DATA)R_CTL=FCP_DATA, F_CTL.rop=1
//Set up FCP_DATA frame
if(sequence_complete)
if(BLM.si) F_CTL.si=1
if(BLM.es) F_CTL.es=1
if(BLM.ls) F_CTL.ls=1
F_CTL.fill_bytes=fill bytes from burst lengh running count
SOF.Last_Frame=1
where:
sequence_complete=(total transfer size<=max frame size)∥
(Burst size<=max frame size)∥
(BLM.SEQ_COMP&&(remaining buffer size<=max frame size))
max frame size=min(N_Port max frame size, 1k)
if FCP burst size=FCP_XER_RDY burst lengh field
else burst size=total transfer size
각 BLE가 전이중 통신 프로세서(22)에 의해 처리될 때 XRI 콘택스트에서 BLM 비트를 업데이트한다. 일부 예외 조건에서, 드라이버는 시퀀스 전송을 재개시하는 재개시 커맨드를 발행하기전에 XRI 콘택스트에서 BLM 비트를 업데이트해야 한다.일례로서, BLM first_frame 비트는 제1 프레임이 이미 전송될 준비가 된 후에 시퀀스 전송을 재개시하도록 클리어되어야 한다.
프레임이 최후 프레임인지를 판정하는 프로세서(22)를 보조함으로써, BLM 비트에 의해 송신 프로토콜 엔진(32)은 1번 패스할 때 프레임 페이로드 데이터 크기를 미리 알리지 않고도 송신 프레임 헤더를 작성할 수 있게 된다. 또한, BLM 비트는 송신 프로토콜 엔진(32)으로 하여금 송신 페이로드 크기를 임의로 확인하기 전에 송신 버퍼에 송신 헤더 워드를 로딩하는 것을 가능케 한다. 이로 인해, 어드레스 포인터의 어드레스 로직의 재위치 설정을 요구하지 않고도 송신 버퍼 FIFO(66) 구성이 단순화된다.
본 발명의 전이중 통신 프로세서(22)에 관한 바람직한 실시예에 대한 추가 설명은, 본원에서 참조되는, 본 발명과 같은 양수인에게 양도된 전이중 통신 프로세서"라는 명칭하에 _자로 출원된 제_호의 "공동 계속 출원중인 특허 출원에 기재되어 있다. BLM 비트가 다른 통신 프로세서, 예를 들면 송신 및 수신 처리용 단일 프로토콜 엔진을 사용하는 프로세서에서도 동일한 이점으로 사용될 수 있다는 것을 당업자는 인지할 것이다.
본 발명의 여러 실시예들이 기술되고 있지만, 본원 발명의 사상 및 범위를 벗어나지 않는 범위 내에서 다양한 수정이 가능하다는 것을 이해할 것이다. 따라서, 본 발명이 기술된 특정 실시예에 의해 한정되지 않고 청구 범위에 의해서만 한정된다는 것을 이해할 것이다.

Claims (15)

  1. (a) 호스트 메모리, CPU, 페이로드 데이터 및 호스트 드라이버 소프트웨어를 구비한 호스트 컴퓨터와;
    (b) 컴퓨터 네트워크에 각각 결합되어, 헤더를 포함하는 데이터 프레임을 수신하여 그 수신된 데이터 프레임의 타당성 여부를 확인하고, 데이터 프레임을 구성하여 송신하는 수신 프로세서 및 송신 프로세서와;
    (c) 상기 수신 및 송신 수신 프로세서를 상기 호스트 컴퓨터와 결합하는 인터페이스를 포함하며,
    (d) 상기 호스트 드라이버 소프트웨어는 프레임이 일련의 프레임에서 최후 프레임인지를 나타내는 소정의 비트를 프레임에 세팅하도록 구성되고,
    (e) 상기 수신 및 송신 프로세서는 프레임이 일련의 프레임에서 최후 프레임인지에 관한 정보를 내포한 송신 프레임 헤더를 작성하는데 상기 소정의 비트를 사용하도록 구성되는 것을 특징으로 하는 통신 프로세서.
  2. 제1항에 있어서, 콘택스트 정보를 포함하는 인터록된 정보 테이블을 더 포함하며, 상기 수신 프로세서는 상기 콘택스트 정보를 사용하여 상기 수신된 데이터 프레임을 처리하고, 상기 송신 프로세서는 상기 CPU와 관련없이 상기 송신 프레임을 작성하기 위해 상기 콘택스트 정보로부터 송신 헤더를 작성하는데 상기 소정의 비트를 사용하는 것을 특징으로 하는 통신 프로세서.
  3. 제1항에 있어서, 상기 송신 및 수신 프로세서는 독립의 송신 및 수신 마이크로코드 엔진을 포함하는 것을 특징으로 하는 통신 프로세서.
  4. 제1항에 있어서, 각각의 상기 마이크로코드 엔진은 시퀀서이며, 상기 통신 프로세서는 마이크로프로세서를 포함하지 않는 것을 특징으로 하는 통신 프로세서.
  5. 제1항에 있어서, 상기 수신된 데이터 프레임은 파이버 채널 프레임인 것을 특징으로 하는 통신 프로세서.
  6. 제5항에 있어서, 상기 수신 및 송신 프로세서는 FC-2 파이버 채널 통신 프로토콜을 각각 실행하는 것을 특징으로 하는 통신 프로세서.
  7. 제1항에 있어서, 상기 수신 및 송신 프로세서를 내장하는 단일 집적 회로를 더 포함하는 것을 특징으로 하는 통신 프로세서.
  8. 제1항에 있어서, 상기 인터페이스는 직접 메모리 액세스(DMA) 인터페이스인 것을 특징으로 하는 통신 프로세서.
  9. 컴퓨터 네트워크에서 일련의 데이터 프레임을 처리하는 방법에 있어서,
    상기 컴퓨터 네트워크에 결합된 수신 프로세서에서 제1 데이터 프레임을 수신하는 단계와;
    상기 수신 프로세서로부터의 상기 제1 데이터 프레임을 통신 모듈로 전송하는 단계와;
    정보 테이블에 상기 제1 데이터 프레임에 관련된 콘택스트 정보를 격납하는 단계와;
    상기 콘택스트 정보를 사용하여 상기 제1 데이터 프레임의 타당성 여부를 확인하는 단계와;
    호스트 컴퓨터의 호스트 드라이버 소프트웨어를 사용하여 프레임이 상기 일련의 프레임에서 최후 프레임인지를 나타내는 소정의 비트를 프레임에 세팅하는 단계와;
    송신 프로세서를 사용하여 상기 일련의 프레임에서 프레임이 최후 프레임인지를 나타내는 정보를 내포한 송신 프레임을 구성하는 단계와;
    상기 컴퓨터 네트워크에 상기 송신 프레임을 전송하는 단계를 포함하는 것을 특징으로 하는 데이터 프레임 처리 방법.
  10. 제9항에 있어서, 상기 제1 데이터 프레임은 파이버 채널 프레임이며, 상기 송신 프레임을 구성하는 단계는 파이버 채널 송신 프레임을 구성하는 단계를 포함하는 것을 특징으로 하는 데이터 프레임 처리 방법.
  11. 제10항에 있어서, 상기 수신 프로세서 및 송신 프로세서를 직접 메모리 액세스(DMA) 인터페이스를 통해 상기 호스트 컴퓨터에 결합하는 단계를 더 포함하는 것을 특징으로 하는 데이터 프레임 처리 방법.
  12. (a) 소스 및 목적지 컴퓨터 장치와;
    (b) 상기 소스 및 목적지 컴퓨터 장치에 결합된 통신 채널과;
    (c) 상기 통신 채널에 각각 결합되어, 커맨드를 포함하는 일련의 데이터 프레임을 상기 소스 컴퓨터 장치로부터 수신하여 그 수신된 데이터 프레임의 타당성 여부를 확인하고, 송신 프레임을 구성하는 수신 프로세서 및 송신 프로세서와;
    (d) CPU, 메모리 및 드라이버 소프트웨어를 포함하는 호스트 컴퓨터와;
    (e) 상기 호스트 컴퓨터와 상기 수신 프로세서 및 송신 프로세서를 결합하는 인터페이스를 포함하며,
    (f) 상기 호스트 컴퓨터의 상기 드라이버 소프트웨어는 프레임이 일련의 프레임에서 최후 프레임인지를 나타내는 소정의 비트를 프레임에 세팅하도록 배치 및 구성되고,
    (g) 상기 송신 프로세서 및 수신 프로세서는 프레임이 일련의 프레임에서 최후 프레임인지에 관한 정보를 내포한 송신 프레임 헤더를 작성하는데 상기 소정의 비트를 사용하도록 구성되는 것을 특징으로 하는 컴퓨터 네트워크.
  13. 제12항에 있어서, 상기 데이터 프레임은 파이버 채널 프레임인 것을 특징으로 하는 컴퓨터 네트워크.
  14. 제12항에 있어서, 상기 수신 프로세서 및 송신 프로세서는 FC-2 파이버 채널 통신 프로토콜을 각각 실행하는 것을 특징으로 하는 컴퓨터 네트워크.
  15. 제12항에 있어서, 상기 인터페이스는 직접 메모리 액세스(DMA) 인터페이스를 포함하는 것을 특징으로 하는 컴퓨터 네트워크.
KR10-2000-7003185A 1997-09-24 1998-09-24 버퍼 리스트 변경자 제어 비트를 갖는 통신 프로세서 KR100367949B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/937,065 US6304910B1 (en) 1997-09-24 1997-09-24 Communication processor having buffer list modifier control bits
US08/937,065 1997-09-24

Publications (2)

Publication Number Publication Date
KR20010078685A true KR20010078685A (ko) 2001-08-21
KR100367949B1 KR100367949B1 (ko) 2003-01-14

Family

ID=25469442

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2000-7003185A KR100367949B1 (ko) 1997-09-24 1998-09-24 버퍼 리스트 변경자 제어 비트를 갖는 통신 프로세서

Country Status (6)

Country Link
US (1) US6304910B1 (ko)
EP (1) EP1023668A4 (ko)
JP (1) JP3457947B2 (ko)
KR (1) KR100367949B1 (ko)
CA (1) CA2304620C (ko)
WO (1) WO1999016177A2 (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6118776A (en) * 1997-02-18 2000-09-12 Vixel Corporation Methods and apparatus for fiber channel interconnection of private loop devices
US6185203B1 (en) * 1997-02-18 2001-02-06 Vixel Corporation Fibre channel switching fabric
US6324669B1 (en) * 1997-11-17 2001-11-27 Seagate Technology Llc Method and apparatus for using CRC for data integrity in on-chip memory
US6470026B1 (en) * 1998-10-30 2002-10-22 Agilent Technologies, Inc. Fibre channel loop map initialization protocol implemented in hardware
US6769033B1 (en) 1999-08-27 2004-07-27 International Business Machines Corporation Network processor processing complex and methods
US6985431B1 (en) 1999-08-27 2006-01-10 International Business Machines Corporation Network switch and components and method of operation
US6643710B1 (en) * 1999-09-17 2003-11-04 3Com Corporation Architecture to fragment transmitted TCP packets to a requested window size
US6856619B1 (en) * 2000-03-07 2005-02-15 Sun Microsystems, Inc. Computer network controller
US6775693B1 (en) 2000-03-30 2004-08-10 Baydel Limited Network DMA method
US6757730B1 (en) 2000-05-31 2004-06-29 Datasynapse, Inc. Method, apparatus and articles-of-manufacture for network-based distributed computing
WO2002063479A1 (en) * 2001-02-02 2002-08-15 Datasynapse, Inc. Distributed computing system
US7359397B2 (en) * 2002-04-19 2008-04-15 Seagate Technology Llc Prioritizing transfers across an interface
JP2004080226A (ja) * 2002-08-14 2004-03-11 Nec Corp 代理fcポート、fcネットワーク及びそれらに用いるfc透過転送方法
EP1552409B1 (en) * 2002-08-19 2013-07-24 Broadcom Corporation One-shot rdma
US8185602B2 (en) * 2002-11-05 2012-05-22 Newisys, Inc. Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters
US8111696B2 (en) * 2008-10-14 2012-02-07 Emulex Design & Manufacturing Corporation Method to improve the performance of a computer network
JP4922442B2 (ja) 2010-07-29 2012-04-25 株式会社東芝 バッファ管理装置、同装置を備えた記憶装置、及びバッファ管理方法

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4346440A (en) * 1978-06-30 1982-08-24 Motorola, Inc. Advanced data link controller
EP0206743A3 (en) 1985-06-20 1990-04-25 Texas Instruments Incorporated Zero fall-through time asynchronous fifo buffer with nonambiguous empty/full resolution
US4975829A (en) * 1986-09-22 1990-12-04 At&T Bell Laboratories Communication interface protocol
US5070477A (en) * 1987-04-13 1991-12-03 Unisys Coporation Port adapter system including a controller for switching channels upon encountering a wait period of data transfer
GB2239724B (en) * 1990-01-05 1993-11-24 Sun Microsystems Inc Apparatus for maintaining consistency in a multi-processor computer system using virtual caching
DE69031220T2 (de) 1990-12-20 1998-02-12 Ibm Hochgeschwindigkeitsmultiport-FIFO-Pufferschaltung
US5426639A (en) 1991-11-29 1995-06-20 At&T Corp. Multiple virtual FIFO arrangement
US5444853A (en) 1992-03-31 1995-08-22 Seiko Epson Corporation System and method for transferring data between a plurality of virtual FIFO's and a peripheral via a hardware FIFO and selectively updating control information associated with the virtual FIFO's
EP0602806B1 (en) * 1992-12-18 2001-07-04 Advanced Micro Devices, Inc. High-level data link controller (HDLC) receiver
US5546347A (en) 1994-07-22 1996-08-13 Integrated Device Technology, Inc. Interleaving architecture and method for a high density FIFO
US5638518A (en) * 1994-10-24 1997-06-10 Lsi Logic Corporation Node loop core for implementing transmission protocol in fibre channel
US5828901A (en) * 1995-12-21 1998-10-27 Cirrus Logic, Inc. Method and apparatus for placing multiple frames of data in a buffer in a direct memory access transfer
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
US5727218A (en) * 1996-03-05 1998-03-10 Unisys Corp. Controlling an apparatus disposed for adapting fiber channel transmissions to an industry standard data bus
US5742765A (en) * 1996-06-19 1998-04-21 Pmc-Sierra, Inc. Combination local ATM segmentation and reassembly and physical layer device
US5748905A (en) * 1996-08-30 1998-05-05 Fujitsu Network Communications, Inc. Frame classification using classification keys
US5922046A (en) * 1996-09-12 1999-07-13 Cabletron Systems, Inc. Method and apparatus for avoiding control reads in a network node
JP3317156B2 (ja) * 1996-09-18 2002-08-26 三菱電機株式会社 リモートplc装置を備えた数値制御装置
US5978378A (en) * 1997-09-11 1999-11-02 3Com Corporation Method and apparatus for VLAN support
US6041058A (en) * 1997-09-11 2000-03-21 3Com Corporation Hardware filtering method and apparatus
US6005849A (en) * 1997-09-24 1999-12-21 Emulex Corporation Full-duplex communication processor which can be used for fibre channel frames
US6098125A (en) * 1998-05-01 2000-08-01 California Institute Of Technology Method of mapping fibre channel frames based on control and type header fields

Also Published As

Publication number Publication date
EP1023668A2 (en) 2000-08-02
CA2304620A1 (en) 1999-04-01
JP2001517888A (ja) 2001-10-09
WO1999016177A3 (en) 1999-08-12
WO1999016177A2 (en) 1999-04-01
US6304910B1 (en) 2001-10-16
CA2304620C (en) 2004-08-10
WO1999016177B1 (en) 1999-10-07
KR100367949B1 (ko) 2003-01-14
EP1023668A4 (en) 2005-02-09
JP3457947B2 (ja) 2003-10-20

Similar Documents

Publication Publication Date Title
KR100315245B1 (ko) 파이버 채널 프레임용 전이중 통신 프로세스
KR100367949B1 (ko) 버퍼 리스트 변경자 제어 비트를 갖는 통신 프로세서
US5768530A (en) High speed integrated circuit interface for fibre channel communications
US20040030766A1 (en) Method and apparatus for switch fabric configuration
EP1399829B1 (en) End node partitioning using local identifiers
US7457902B2 (en) Lock and release mechanism for out-of-order frame prevention and support of native command queueing in FC-SATA
US8374175B2 (en) System and method for remote direct memory access over a network switch fabric
KR100555394B1 (ko) Ngio/infiniband 어플리케이션용 리모트 키검증을 위한 방법 및 메커니즘
US6948004B2 (en) Host-fabric adapter having work queue entry (WQE) ring hardware assist (HWA) mechanism
US20030202520A1 (en) Scalable switch fabric system and apparatus for computer networks
US6775719B1 (en) Host-fabric adapter and method of connecting a host system to a channel-based switched fabric in a data network
US20090080428A1 (en) System and method for scalable switch fabric for computer network
US20030202510A1 (en) System and method for scalable switch fabric for computer network
US6975623B2 (en) Interconnection architecture for managing multiple low bandwidth connections over a high bandwidth link
US20020071450A1 (en) Host-fabric adapter having bandwidth-optimizing, area-minimal, vertical sliced memory architecture and method of connecting a host system to a channel-based switched fabric in a data network
US6791989B1 (en) Fibre channel interface controller that performs non-blocking output and input of fibre channel data frames and acknowledgement frames to and from a fibre channel
JPH02196541A (ja) ワークステーシヨンをローカル・エリヤ・ネツトワークに接続する方法および装置
US20040151170A1 (en) Management of received data within host device using linked lists
JP2008537805A (ja) ディスクアレイ内に組み込まれ得る高可用性大容量記憶装置用シェルフにおいて組み合わせて使用するためのストレージシェルフ・ルータおよびパス制御カードの集積回路実装
US6856619B1 (en) Computer network controller
US5983272A (en) Option request protocol
US6463498B1 (en) Transmission of FCP response in the same loop tenancy as the FCP data with minimization of inter-sequence gap

Legal Events

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

Payment date: 20051014

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee