KR100367949B1 - 버퍼 리스트 변경자 제어 비트를 갖는 통신 프로세서 - Google Patents
버퍼 리스트 변경자 제어 비트를 갖는 통신 프로세서 Download PDFInfo
- Publication number
- KR100367949B1 KR100367949B1 KR10-2000-7003185A KR20007003185A KR100367949B1 KR 100367949 B1 KR100367949 B1 KR 100367949B1 KR 20007003185 A KR20007003185 A KR 20007003185A KR 100367949 B1 KR100367949 B1 KR 100367949B1
- Authority
- KR
- South Korea
- Prior art keywords
- frame
- processor
- receive
- data
- transmission
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9084—Reactions to storage capacity overflow
- H04L49/9089—Reactions to storage capacity overflow replacing packets in a storage arrangement, e.g. pushout
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/901—Buffering arrangements using storage descriptor, e.g. read or write pointers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9047—Buffering arrangements including multiple buffers, e.g. buffer pools
- H04L49/9052—Buffering arrangements including multiple buffers, e.g. buffer pools with buffers of different sizes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9084—Reactions to storage capacity overflow
- H04L49/9089—Reactions to storage capacity overflow replacing packets in a storage arrangement, e.g. pushout
- H04L49/9094—Arrangements for simultaneous transmit and receive, e.g. simultaneous reading/writing from/to the storage element
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/40—Network security protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/12—Protocol 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)
- Multi Processors (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Information Transfer Systems (AREA)
Abstract
통신 프로세서는 데이터 프레임 및 커맨드를 송수신한다. 송신 및 수신 프로토콜 엔진은 프레임이 일련의 프레임에서 최후 프레임인지를 나타내는 소정의 비트를 이용하는 호스트 드라이버 소프트웨어에 의해 제어된다. 이 정보는 전송되기 전에 송신 프레임에 배치된다.
Description
최근 컴퓨터 및 주변 기기들이 급속히 증가하고 있다. 이로 인해, 이 장치들을 상호 접속하는 개선된 방법이 요구되고 있다. 다른 종류의 컴퓨터 및 주변 기기가 서로 통신할 수 있도록 하는 광범위한 네트워크가 개발되고 있다.
이러한 네트워크를 따라 데이터를 교환할 때 속도 면에서 문제가 발생한다. 이와 같은 문제 발생은 네트워크 아키텍쳐 속도의 증가가 보다 빠른 컴퓨터 처리 속도에 보조를 맞추지 못하기 때문에 놀라운 일은 아니다. 컴퓨터 칩의 처리 능력은 약 18개월마다 2배가 되며, 이로 인해 점점 더 강력한 머신이 생성되고 처리 대역폭은 그에 미치지 못하고 있다. 1 메가비트/초의 입출력이 처리 능력 "MIPS(millions of instructions per second)" 마다 통상 요구된다라고 추정되고 있다. CPU가 쉽게 200 MIPS를 초과하기 때문에. 네트워크 아키텍쳐가 보다 빠른 속도에 보조를 맞추기란 어렵다.
광대역 네트워크(예를 들면, LAN 및 WAN) 및 채널은 컴퓨터 네트워크 아키텍쳐용으로 개발되고 있는 2가지의 접근 수단이다. 종래의 네트워크는 다량의 유연성 및 비교적 장거리 기능을 제공한다. 채널, 예를 들면 엔터프라이즈 시스템 접속(ESCON) 및 소형 컴퓨터 시스템 인터페이스(SCSI)는 고성능 및 고신뢰성용으로 개발되고 있다. 통상적으로 채널은 컴퓨터 사이 또는 컴퓨터와 주변 기기 사이의 전용 단거리 접속을 사용한다.
채널 및 네트워크의 특징은 "파이버 채널(Fibre channel)"로 알려진 새로운 네트워크 표준 규격으로 통합되어 왔다. 파이버 채널 시스템은 네트워크의 유연성 및 접속성에 채널의 속도 및 신뢰성을 결합한다. 파이버 채널은 현재 매우 높은 데이터 전송률, 예를 들면 266 또는 1062Mbps로 동작할 수 있다. 이러한 속도는 수요가 꽤 급증하고 있는 어플리케이션, 예를 들면 비압축된 풀 모션 고화질 비디오를 처리하기에 충분하다.
파이버 채널을 전개하는 데에는 통상 3가지 방법이 있는데, 단순한 포인트 투 포인트 접속, 중재형 루프 및 교환 패브릭(fabrics)이 그것이다. 가장 단순한 토폴로지는 포인트 투 포인트 구성이며, 단순히 임의의 2개의 파이버 채널 시스템을 직접 접속한다. 중재형 루프는 중재를 통해 대역폭에 대한 공유 액세스를 제공하는 파이버 채널 링 접속이다. "패브릭(fabrics)"으로 칭해지는 교환 파이버 채널 네트워크는 크로스 포인트 스위칭의 이점을 지원함으로써 초고성능을 산출한다.
파이버 채널 패브릭은 종래의 전화 시스템처럼 동작한다. 패브릭은 여러 장치, 예를 들면 파이버 채널 인터페이스 포트를 갖는 워크 스테이션, PC, 서버, 라우터, 메인 프레임, 및 저장 장치를 접속할 수 있다. 각각의 이러한 장치는 프레임 헤더에 목적지 포트 어드레스를 기입함으로써 패브릭을 "호출(call)"하는 발신 포트를 가진다. 파이버 채널 권고안에는 이 프레임의 구조가 정의되어 있다. 이 프레임 구조는 이하에서 논의되고 본원 발명에 의해 처리될 데이터 전송 이슈를 제기한다. 파이버 채널 패브릭에서 소망의 접속을 세팅하는 모든 작업이 행해지기 때문에, 프레임 발신기는 복잡한 경로 알고리즘과 관련될 필요가 없다. 복잡한 영구 가상 회로(PVC)를 세팅하지 않아도 된다. 파이버 채널 패브릭은 1600만개 이상의 어드레스를 처리할 수 있기 때문에 대규모 네트워크를 수용할 수 있다. 패브릭은 단순히 포트를 부가하는 것으로 확대될 수 있다. 완전히 형성된 파이버 채널 네트워크의 총 데이터 전송률은 테라(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 워드를 점검하고, 그 결과로서 생성되는 "굿-배드(good-bad) CRC 상태 식별자를 EOF 워드로부터 생성되는 EOF 상태 워드내의 다른 상태 정보 비트에 부가한다. 그런다음, 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) 밖으로 전송하고 나서, 호스트 메모리 인터페이스(54)를 통해 호스트 메모리(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)에 반송한다. 이 메시지는 전송 대기 큐(60)로 보내지고, 전송 대기 큐(60)는 호스트 메모리(42)로부터 데이터를 검색하고 프레임을 생성하며, 데이터를 디스크 드라이브에 송신하도록 송신 프로토콜 엔진(32)에 지시한다.
송신 프로토콜 엔진(32)은 2개의 이벤트 중 하나에 의해 트리거링되는데, 그 하나는 전송 대기 큐(60) 내의 엔트리의 존재이고, 나머지 하나는 커맨드 링 컨트롤러(62)의 동작에 의한 것이다. 이하에서 기술될 교환 콘택스트 리소스 인덱스(XRI)는 각 커맨드를 처리하는데 사용된다. 커맨드 링은 커맨드 엔트리의 순환 큐로서, 통상 커맨드를 판독하고 기록한다. 이러한 판독 및 기록 커맨드는 예를 들면, 디스크 드라이브와 같은 원격 장치로의 커맨드 통신에 사용된다. 커맨드 링의 크기 및 베이스 메모리 어드레스는 커맨드 링 베이스 레지스터에 지정되고, 이 커맨드 링 베이스 레지스터는 커맨드 링을 다음과 같이 관리하기 위하여 사용되는 "풋(put)" 포인터와 "겟(get)" 포인터를 포함한다. 그 방법으로 호스트 드라이버(38)는 커맨드 링(62)에 커맨드가 대기할 때마다 포인터를 증가시키면서 상기 풋 포인터를 관리하는 것이다. 또한, 전이중 통신 프로세서(22)는 링으로부터 커맨드가 판독될 때마다 포인터를 증가시키면서 겟 포인터를 관리하는 것이다.
전 프레임 전송 이외의 커맨드는 버퍼 포인터 리스트에 포인터를 제공한다. 버퍼 포인터 리스트는 제1 버퍼 리스트 엔트리 내의 총 버퍼 크기 및 다음 버퍼 리스트 엔트리의 버퍼 포인터-크기 쌍을 포함한다. 커맨드의 XRI 필드는 콘택스트 관리자(52)로 하여금 송신 프로토콜 엔진(32)에 적절한 콘택스트를 풀다운하도록 명령하는데 사용된다. 교환으로 칭해지는 이러한 전송은 송신 프로토콜 엔진(32)에 그 엔진이 그 특정 버퍼 링 리스트 내의 어디에 있는지, 프레임이 얼마나 많은 데이터를 가지고 있으며, 그것이 어느 단계에 있는지 등을 알린다. 또한, 콘택스트는 다음 프레임 헤더를 포함한다. 다음 프레임 헤더는 호스트 드라이버(38)에 의해 초기에 작성되지만, 그 후에 송신 프로토콜 엔진(32)이 이에 연속되는 프레임 헤더를 작성한다. 콘택스트 관리자(52)는 호스트 메모리(42)로부터 각 프레임 헤더를 검색하고, 그 헤더를 송신 헤더 컨트롤러(68)에 패스하며, 상기 송신 헤더 컨트롤러(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)은 확인 프레임(기본적으로, 수신 프레임 헤더의 변경 형태임)을 생성하는 확인 FIFO(74)를 포함한다. 상기 확인 프레임은 수신 확인을 위해 파이버 채널 링크(24)를 통하여 송신자에게로 반송된다.
또한, 전이중 통신 프로세서(22)는 수신 및 송신 프로토콜 엔진 레지스터(76, 78)를 포함한다. 이 레지스터는 콘택스트 관리자(52) 내의 콘택스트 레지스터를 통해 링크되고 동기화되는 자동 프로토콜 관리 기능을 가지고 있다. 콘택스트 관리자(52)는 호스트 메모리(42)로부터의 교환 콘택스트의 코히런시(coherency) 및 캐싱(caching)을 관리하고, 또 수신 및 송신 프로토콜 엔진(30, 32)에 의한 콘택스트 레지스터(80)에 포함된 캐시된 콘택스트로의 액세스를 동기시킨다.
양호한 실시예에서, 콘택스트 관리자(52), 송신 및 수신 프로토콜 엔진(30, 32)은 호스트 메모리 인터페이스(54)를 통해 호스트(40)와 통신하며, 상기 호스트 메모리 인터페이스(54)는 주변 요소 인터페이스(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)는 단일 칩상[예를 들면, 주문형 집적 회로(ASIC)]상에서 단독으로 또는 다른 기능과 함께 실현될 수 있다. 예를 들면, 전술된 실시예에서, 전이중 통신 프로세서(22)는 최신의 송신 및 수신 콘택스트의 한 인스턴스(instance)를 캐시할 수 있다. 그러나, 추가적인 온칩 메모리를 부가함으로써, 추가 콘택스트의 인스턴스가 캐시될 수 있다.
버퍼 포인터 리스트
도 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 필드는 버퍼의 개시 워드 어드레스를 포함한다. 최종 BLE에 대해서는 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)에 포함된다. 특히, 교환 콘택스트는 완전 교환을 기술하거나 1개 또는 그 이상의 시퀀스 송신을 제어하는 구조이다. 이 구조는 교환 포인터 테이블에서의 엔트리에 의해 포인팅된다. XRI 콘택스트는 즉각적으로 또는 개별 시퀀스를 통해 발생하는 동작에 필요한 지원 콘택스트를 포함한다. 송신될 데이터, 또는 데이터를 수신할 버퍼는 실제 사용 버퍼를 가리키는 버퍼 리스트 엔트리 세트로 구성된 버퍼 포인터 리스트에 의해 기술된다. 전술된 바와 같이, 버퍼 리스트 엔트리는 시퀀스 개시, 최종 교환, 최후 시퀀스 등을 나타내기 위해 버퍼 및 제어 비트의 어드레스와 길이를 포함한다. 다수의 시퀀스 동작에 대하여, XRI 콘택스트는 작업 레지스터 콘텐트용의 기억 영역을 제공한다.
양호한 실시예에서, XRI 콘택스트는, 그의 개시 지점인 파이버 채널 프로토콜(FCP) 교환, 송신 교환, 수신 프레임의 타당성 여부 확인, 단일 프레임 또는 다수의 프레임 시퀀스의 전송을 제어하기 위한 일시적인 목적을 위해 전이중 통신 프로세서(22)에 의해 사용된다. XRI 콘택스트는 데이터가 버퍼 링 버퍼로 수신되는 교환 트랙을 유지하기 위해 호스트 드라이버(38)에 의해 사용될 수 있다.
XRI 콘택스트의 일례는 도 7에 도시된다. 제1 워드는 XRI 제어 상태 워드이다. XRI 제어 상태 워드는 호스트 드라이버에 의해 설정되는 구성(configuration) 필드를 포함한다. 총 전송 크기 워드는 시퀀서 액티비티(activity)를 반영한다. 파이버 채널 프로토콜(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 버퍼 링에서의 어느 엔트리가 유효한지를 나타낸다. 각 레지스터는 풋(put) 포인터와 겟(get) 포인터를 포함한다. 각각의 링용 수신 버퍼는 호스트 드라이버가 관련된 버퍼 기술어를 상기 링에 추가하는 정확한 순서로 사용된다.
호스트 제어 하에서, 또는 일부 다른 포트에 의해 원격적으로 루프의 국부적인 초기화가 개시된다. 호스트 드라이버(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 비트를 작성해야 하고, 페이로드를 직접 메모리 액세스(DMA)하기 전에 그 작성된 것들을 송신 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)에 관한 바람직한 실시예에 대한 추가 설명은, 본원에서 참조되는, 본 발명과 같은 양수인에게 양도된 "전이중 통신 프로세서"라는 명칭하에 1997년 9월 24일자로 미국에 출원된 제08/937,066호의 공동 계속 출원중인 특허 출원에 기재되어 있다. BLM 비트가 다른 통신 프로세서, 예를 들면 송신 및 수신 처리용 단일 프로토콜 엔진을 사용하는 프로세서에서도 동일한 이점으로 사용될 수 있다는 것을 당업자는 인지할 것이다.
본 발명의 여러 실시예들이 기술되고 있지만, 본원 발명의 사상 및 범위를 벗어나지 않는 범위 내에서 다양한 수정이 가능하다는 것을 이해할 것이다. 따라서, 본 발명이 기술된 특정 실시예에 의해 한정되지 않고 청구 범위에 의해서만 한정된다는 것을 이해할 것이다.
Claims (15)
- 호스트 메모리, CPU, 페이로드 데이터 및 호스트 드라이버 소프트웨어를 구비한 호스트 컴퓨터와 컴퓨터 네트워크에 결합되는 통신 프로세서에 있어서,상기 컴퓨터 네트워크에 각각 결합되어, 헤더를 포함하는 데이터 프레임을 수신하여 그 타당성 여부를 확인하고, 데이터 프레임을 구성하여 송신하며, 프레임 단위로 상기 CPU와 관련되지 않고 상주 마이크로프로세서를 구비하지 않고도 상기 데이터 프레임을 수신하여 그 타당성 여부를 확인하도록 동작 가능하게 결합되는 수신 프로세서 및 송신 프로세서와;상기 수신 프로세서 및 송신 프로세서를 상기 호스트 컴퓨터와 결합하는 인터페이스를 포함하며,상기 호스트 드라이버 소프트웨어는 프레임 내에 일련의 프레임에서 최후 프레임을 나타내는 소정의 비트를 세팅하도록 구성되고, 상기 수신 프로세서 및 송신 프로세서는 상기 소정의 비트를 사용하여 일련의 프레임에서 최후 프레임에 관한 정보를 내포한 송신 프레임 헤더를 작성하도록 구성되는 것을 특징으로 하는 통신 프로세서.
- 제1항에 있어서, 콘택스트 정보를 포함하는 인터록된 정보 테이블을 더 포함하며, 상기 수신 프로세서는 상기 콘택스트 정보를 사용하여 상기 수신된 데이터 프레임을 처리하고, 상기 송신 프로세서는 상기 CPU와 관련없이 상기 송신 프레임을 작성하기 위해 상기 콘택스트 정보로부터 송신 헤더를 작성하는데 상기 소정의 비트를 사용하는 것을 특징으로 하는 통신 프로세서.
- 제1항에 있어서, 상기 송신 및 수신 프로세서는 독립의 송신 및 수신 마이크로코드 엔진을 포함하는 것을 특징으로 하는 통신 프로세서.
- 제3항에 있어서, 각각의 상기 마이크로코드 엔진은 시퀀서인 것을 특징으로 하는 통신 프로세서.
- 제1항에 있어서, 상기 수신된 데이터 프레임은 파이버 채널 프레임인 것을 특징으로 하는 통신 프로세서.
- 제5항에 있어서, 상기 수신 및 송신 프로세서는 FC-2 파이버 채널 통신 프로토콜을 각각 실행하는 것을 특징으로 하는 통신 프로세서.
- 제1항에 있어서, 상기 수신 및 송신 프로세서를 내장하는 단일 집적 회로를 더 포함하는 것을 특징으로 하는 통신 프로세서.
- 제1항에 있어서, 상기 인터페이스는 직접 메모리 액세스(DMA) 인터페이스인 것을 특징으로 하는 통신 프로세서.
- 프레임 단위로 외부 CPU와 관련되지 않고 상주 마이크로프로세서를 구비하지 않고도 데이터 프레임을 수신하여 그 타당성 여부를 확인하도록 동작 가능하게 결합되는 수신 프로세서 및 송신 프로세서를 구비한 통신 프로세서에서, 일련의 데이터 프레임을 처리하는 방법에 있어서,상기 수신 프로세서에 의해 컴퓨터 네트워크로부터 제1 데이터 프레임을 수신하는 단계와;상기 수신 프로세서로부터의 상기 제1 데이터 프레임을 통신 모듈로 전송하는 단계와;정보 테이블에 상기 제1 데이터 프레임에 관련된 콘택스트 정보를 저장하는 단계와;상기 콘택스트 정보를 사용하여 상기 제1 데이터 프레임의 타당성 여부를 확인하는 단계와;상기 일련의 프레임에서 최후 프레임을 나타내는 프레임 내의 소정의 비트를 세팅하는 단계와;상기 송신 프로세서에 의해 상기 일련의 프레임에서 최후 프레임을 나타내는 정보를 내포한 송신 프레임을 구성하는 단계와;상기 컴퓨터 네트워크에 상기 송신 프레임을 전송하는 단계를 포함하는 것을 특징으로 하는 데이터 프레임 처리 방법.
- 제9항에 있어서, 상기 제1 데이터 프레임은 파이버 채널 프레임이며, 상기 송신 프레임을 구성하는 단계는 파이버 채널 송신 프레임을 구성하는 단계를 포함하는 것을 특징으로 하는 데이터 프레임 처리 방법.
- 제10항에 있어서, 상기 수신 프로세서 및 송신 프로세서를 직접 메모리 액세스(DMA) 인터페이스를 통해 상기 호스트 컴퓨터에 결합하는 단계를 더 포함하는 것을 특징으로 하는 데이터 프레임 처리 방법.
- (a) 소스 및 목적지 컴퓨터 장치와;(b) 상기 소스 및 목적지 컴퓨터 장치에 결합된 통신 채널과;(c) 상기 통신 채널에 각각 결합되고, 상기 소스 컴퓨터 장치로부터 커맨드를 포함하는 일련의 데이터 프레임을 수신하여 그 수신된 데이터 프레임의 타당성 여부를 확인하는 수신 프로세서 및 송신 프레임을 구성하는 송신 프로세서와;(d) CPU, 메모리 및 드라이버 소프트웨어를 포함하는 호스트 컴퓨터와;(e) 상기 호스트 컴퓨터와 상기 수신 프로세서 및 송신 프로세서를 결합하는 인터페이스를 포함하며,(f) 상기 호스트 컴퓨터의 상기 드라이버 소프트웨어는 일련의 프레임에서 어느 프레임이 최후 프레임인지를 나타내는 소정의 비트를 프레임에 세팅하도록 배치 및 구성되고,(g) 상기 수신 프로세서 및 송신 프로세서는 상기 소정의 비트를 사용하여 일련의 프레임에서 최후 프레임을 식별하는 정보를 내포한 송신 프레임 헤더를 작성하도록 구성되며,(h) 상기 수신 프로세서 및 송신 프로세서는 프레임 단위로 외부 CPU와 관련되지 않고 상주 마이크로프로세서를 구비하지 않고도 데이터 프레임을 수신하여 그 타당성 여부를 확인하도록 동작 가능하게 결합되는 것을 특징으로 하는 컴퓨터 네트워크.
- 제12항에 있어서, 상기 데이터 프레임은 파이버 채널 프레임인 것을 특징으로 하는 컴퓨터 네트워크.
- 제12항에 있어서, 상기 수신 프로세서 및 송신 프로세서는 FC-2 파이버 채널 통신 프로토콜을 각각 실행하는 것을 특징으로 하는 컴퓨터 네트워크.
- 제12항에 있어서, 상기 인터페이스는 직접 메모리 액세스(DMA) 인터페이스를 포함하는 것을 특징으로 하는 컴퓨터 네트워크.
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 KR20010078685A (ko) | 2001-08-21 |
KR100367949B1 true 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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6185203B1 (en) * | 1997-02-18 | 2001-02-06 | Vixel Corporation | Fibre channel switching fabric |
US6118776A (en) | 1997-02-18 | 2000-09-12 | Vixel Corporation | Methods and apparatus for fiber channel interconnection of private loop devices |
GB2341526B (en) * | 1997-11-17 | 2003-01-15 | Seagate Technology | Method and dedicated frame buffer for loop initialization and responses |
US6470026B1 (en) * | 1998-10-30 | 2002-10-22 | Agilent Technologies, Inc. | Fibre channel loop map initialization protocol implemented in hardware |
US6985431B1 (en) | 1999-08-27 | 2006-01-10 | International Business Machines Corporation | Network switch and components and method of operation |
US6769033B1 (en) | 1999-08-27 | 2004-07-27 | International Business Machines Corporation | Network processor processing complex and methods |
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透過転送方法 |
WO2004017220A1 (en) * | 2002-08-19 | 2004-02-26 | 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)
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 |
EP0492025B1 (en) | 1990-12-20 | 1997-08-06 | International Business Machines Corporation | High-speed multi-port FIFO buffer circuit |
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 |
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 |
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 |
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 |
-
1997
- 1997-09-24 US US08/937,065 patent/US6304910B1/en not_active Expired - Fee Related
-
1998
- 1998-09-24 EP EP98949477A patent/EP1023668A4/en not_active Withdrawn
- 1998-09-24 JP JP2000513358A patent/JP3457947B2/ja not_active Expired - Fee Related
- 1998-09-24 KR KR10-2000-7003185A patent/KR100367949B1/ko not_active IP Right Cessation
- 1998-09-24 WO PCT/US1998/020011 patent/WO1999016177A2/en not_active Application Discontinuation
- 1998-09-24 CA CA002304620A patent/CA2304620C/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
EP1023668A2 (en) | 2000-08-02 |
US6304910B1 (en) | 2001-10-16 |
WO1999016177B1 (en) | 1999-10-07 |
WO1999016177A3 (en) | 1999-08-12 |
EP1023668A4 (en) | 2005-02-09 |
CA2304620C (en) | 2004-08-10 |
WO1999016177A2 (en) | 1999-04-01 |
JP2001517888A (ja) | 2001-10-09 |
JP3457947B2 (ja) | 2003-10-20 |
KR20010078685A (ko) | 2001-08-21 |
CA2304620A1 (en) | 1999-04-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100315245B1 (ko) | 파이버 채널 프레임용 전이중 통신 프로세스 | |
KR100367949B1 (ko) | 버퍼 리스트 변경자 제어 비트를 갖는 통신 프로세서 | |
US5768530A (en) | High speed integrated circuit interface for fibre channel communications | |
KR100555394B1 (ko) | Ngio/infiniband 어플리케이션용 리모트 키검증을 위한 방법 및 메커니즘 | |
US6948004B2 (en) | Host-fabric adapter having work queue entry (WQE) ring hardware assist (HWA) mechanism | |
US8374175B2 (en) | System and method for remote direct memory access over a network switch fabric | |
US7555002B2 (en) | Infiniband general services queue pair virtualization for multiple logical ports on a single physical port | |
US20040030766A1 (en) | Method and apparatus for switch fabric configuration | |
US6775719B1 (en) | Host-fabric adapter and method of connecting a host system to a channel-based switched fabric in a data network | |
US6975623B2 (en) | Interconnection architecture for managing multiple low bandwidth connections over a high bandwidth link | |
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 | |
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 | |
US6148004A (en) | Method and apparatus for establishment of dynamic ESCON connections from fibre channel frames | |
US20030202520A1 (en) | Scalable switch fabric system and apparatus for computer networks | |
US20050018669A1 (en) | Infiniband subnet management queue pair emulation for multiple logical ports on a single physical port | |
US7181541B1 (en) | Host-fabric adapter having hardware assist architecture and method of connecting a host system to a channel-based switched fabric in a data network | |
JPH02196541A (ja) | ワークステーシヨンをローカル・エリヤ・ネツトワークに接続する方法および装置 | |
WO2003003229A1 (en) | End node partitioning using local identifiers | |
US6856619B1 (en) | Computer network controller | |
US6526458B1 (en) | Method and system for efficient i/o operation completion in a fibre channel node using an application specific integration circuit and determining i/o operation completion status within interface controller | |
EP0958688B1 (en) | Method and system for data communication using an intraconnect architecture |
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 |