KR20030087025A - Ngio/infiniband 어플리케이션용 리모트 키검증을 위한 방법 및 메커니즘 - Google Patents

Ngio/infiniband 어플리케이션용 리모트 키검증을 위한 방법 및 메커니즘 Download PDF

Info

Publication number
KR20030087025A
KR20030087025A KR10-2003-7012508A KR20037012508A KR20030087025A KR 20030087025 A KR20030087025 A KR 20030087025A KR 20037012508 A KR20037012508 A KR 20037012508A KR 20030087025 A KR20030087025 A KR 20030087025A
Authority
KR
South Korea
Prior art keywords
remote
memory
key
remote key
host
Prior art date
Application number
KR10-2003-7012508A
Other languages
English (en)
Other versions
KR100555394B1 (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 KR20030087025A publication Critical patent/KR20030087025A/ko
Application granted granted Critical
Publication of KR100555394B1 publication Critical patent/KR100555394B1/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/35Switches specially adapted for specific applications
    • H04L49/356Switches specially adapted for specific applications for storage area networks
    • H04L49/358Infiniband Switches
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • 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
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/35Switches specially adapted for specific applications

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)
  • Storage Device Security (AREA)
  • Acyclic And Carbocyclic Compounds In Medicinal Compositions (AREA)
  • Orthopedics, Nursing, And Contraception (AREA)
  • Mechanical Operated Clutches (AREA)
  • Information Transfer Systems (AREA)
  • Selective Calling Equipment (AREA)
  • Bus Control (AREA)

Abstract

호스트 시스템에는 데이터 네트워크의 스위치 패브릭에 접속하기 위해 설치된 하나 이상의 호스트-패브릭 어댑터가 제공된다. 호스트-패브릭 어댑터는 접속을 설정하고, 스위치 패브릭을 통한 데이터 전송 오퍼레이션을 지원하도록 배치된 적어도 하나의 마이크로-엔진(ME); 데이터 전송 오퍼레이션 동안 스위치 패브릭으로부터 데이터 패킷을 수신 및 송신하도록 배치된 직렬 인터페이스; 데이터 전송 오퍼레이션 동안 호스트 시스템으로부터 호스트 데이터 작업 요청을 수신 및 송신하도록 배치된 호스트 인터페이스; 데이터 전송 오퍼레이션에 필요한 컨텍스트 정보를 제공하도록 배치된 컨텍스트 메모리; 데이터 전송 오퍼레이션 동안 호스트 데이터 전송 요청을 처리하기 위해 마이크로-엔진(ME)에 필요한 컨텍스트 정보를 업데이트하도록 배치된 도어벨 관리자, 및 대기중인 데이터 전송 오퍼레이션에 대응하는 리모트 키의 정당성을 검사하고 리모트 키를 관리하도록 배치된 리모트 키 관리자를 포함한다.

Description

NGIO/INFINIBAND 어플리케이션용 리모트 키 검증을 위한 방법 및 메커니즘{METHODOLOGY AND MECHANISM FOR REMOTE KEY VALIDATION FOR NGIO/INFINIBAND APPLICATIONS}
데이터 네트워크는 일반적으로, 점 대 점 링크에 의해 접속된, 독립적이고, 군집되어진 복수 노드의 네트워크로 이루어진다. 각 노드는 스위치/스위치 소자, 리피터 및 라우터와 같은 중간 노드일 수 있으며, 또는 호스트 시스템 및 I/O 유니트(예컨대, 데이터 서버, 저장 서브시스템 및 네트워크 장치)와 같은 네트워크 내의 종단-노드일 수도 있다.
1995년 6월 1일, PCI Special Interest Group(SIG)에 의해 발표된 "PCI Local Bus Specification, Revision 2.1"에 기재된 PCI(Peripheral ComponentInterconnect) 버스와 같은 현존하는 상호접속 전송 메커니즘은 I/O 장치로부터 I/O 장치로, 즉 저장 서브시스템 및 네트워크 장치로부터 저장 서브시스템 및 네트워크 장치로 데이터 네트워크를 경유해서 메시지 데이터를 전달하는데 이용될 수도 있다. 그러나, PCI 버스는 저장 서브시스템 및 네트워크 장치로부터 저장 서브시스템 및 네트워크 장치로 메시지 데이터를 전달하기 위해 하나 이상의 공유 I/O 버스를 포함하는 공유 메모리-맵 버스 아키텍쳐(shared memory-mapped bus architecture)를 이용한다. 공유 I/O 버스는, 추가 저장장치와 네트워크 주변장치가 요구될 때, 신뢰성(reliability), 융통성(flexibility), 범위성(scalability) 문제뿐만 아니라 저장장치 및 네트워크 주변장치 사이에 요구되는 버스 중재(Bus arbitration)로 인하여 상당한 성능 제한을 가질 수 있다. 결과적으로, 현존하는 상호접속 기술은 컴퓨터의 진보와 증가된 요구에 보조를 맞추는 것에 실패하였고, 서버군, 어플리케이션 처리, 및 인터넷의 급속한 성장에 의해 생성된 엔터프라이즈 컴퓨팅(enterprise computing)에 부하가 부여된다.
현재의 PCI 버스 아키텍쳐의 결점에 대한 최근의 해결책으로는 1999년 7월 20일, NGIO Forum의 "Next Generaton Input/Output(NGIO) Specification" 및 2000년 10월 24일 InfiniBandTMTrade Association의 "InfiniBandTMArchitecture Specification"에 발표된 바와 같이, 데이터 네트워크에서의 종단-노드 사이에서 안정적으로 데이터를 전송하기 위해, 공유 메모리-맵 버스 아키텍쳐를 대신하여 스위치된 패브릭(fabric)과 분리 I/O채널을 이용하는 표준-기반 I/O플랫폼을 제공하도록 Intel Corporation 및 기타 회사에 의해 개발되어진 인피니밴드(InfiniBandTM) 및 그 선행자(predecessor)인 NGIO(Next Generation I/O)가 있다. NGIO/InfiniBandTM를 이용하면, 호스트 시스템은 1997년 12월 16일 Compaq Corp., Intel Corp., 및 Microsoft Corp.에 의해 발표된 "Virture Interface(VI) Architecture Specification, Version 1.0"에 따라 가상 인터페이스(Virtual Interface: VI)를 이용하여 하나 이상의 리모트 시스템과 통신할 수도 있다. NGIO/InfiniBandTM및 VI 하드웨어와 소프트웨어는 일반적으로 하나 이상의 지정된 채널을 거쳐 상이한 시스템 상의 두 메모리 영역 사이의 데이터 전송을 지원하기 위해 이용될 수도 있다. VI 아키텍쳐를 이용하는 각 호스트 시스템은, 작업 요청(WR)이 데이터 이동 오퍼레이션과 네트워크를 통해 프로세싱 및/또는 전송을 위해 이동되어질 데이터의 위치를 나타내기 위해 포스트되는 인바운드 큐(inbound queue) 및 아웃바운드 큐(outbound queue)를 포함하는 쌍으로 형성된 작업 큐(work queue)로서 알려져 있는 VI들을 포함할 수도 있다. 각 호스트 시스템은 메시지 데이터 전송(메시지 발신 오퍼레이션)을 개시하는 소스(기동자: initiator) 시스템이나, 메시지 패싱 오퍼레이션(메시지 수신 오퍼레이션)의 타겟 시스템으로서 동작할 수도 있다. 사용자로부터 제시된 작업 요청은, 발신/수신 오퍼레이션과 같은 데이터 전송 오퍼레이션과 리모트 직접 메모리 억세스(remote direct memory access) ARDMA@ 판독/기록 오퍼레이션 동안, 작업 큐 구성요소(WQE)로 불리는 작업 명령어(work instructon)가 소정 네트워크 인터페이스 카드와 관련된 작업 큐상에포스트되도록 야기한다. 데이터 네트워크를 통한 호스트 시스템에서 통신 장치들 사이의 하나 이상의 채널이 생성 및 관리되어 요청된 오퍼레이션이 실행될 수 있다.
NGIO/InfiniBandTM는 아직까지 시장에서는 최신의 상호접속 기술이기 때문에, NGIO/InfiniBandTM용으로 특별하게 실행되는 인터페이스 메카니즘은 알려져 있지 않다. 보다 상세하게, 호스트 시스템에서의 통신 장치 사이의 데이터 이동 오퍼레이션, 또는 호스트 시스템 사이의 데이터 이동 오퍼레이션, 또는 데이터 네트워크를 통한 데이터 이동 오퍼레이션을 지원하기 위해, 채널에 기반한 스위치 패브릭 아키텍쳐(switched fabric architecture)를 이용하여, 호스트 시스템을 데이터 네트워크에 접속시키는 네트워크 인터페이스 카드는 알려져 있지 않다. 현존하는 호스트 시스템용의 네트워크 인터페이스 카드는 최신의 NGIO/InfiniBandTM상호접속 기술에 적응되지 않으며, 따라서 NGIO/InfiniBandTM의 기능성에 대해 최적화되지 않는다.
따라서, NGIO/InfiniBandTM어플리케이션을 위한 채널-기반 스위치 패브릭 아키텍쳐를 이용하여 데이터 네트워크에 있어서 호스트 시스템에 성능을 고려하여 특별하게 설계된 호스트 패브릭 아댑터를 설치할 필요가 있다. 또한 그러한 네트워크에 있어서, 채널-기반 스위치 패브릭을 통하여 외부 데이터 트랜잭션(예컨대, 판독/기록 오퍼레이션)에 대응하는 리모트 키를 관리 및 검증하기 위한 방법 또는메커니즘이 필요하다.
본 발명은 데이터 네트워크에 관한 것으로, 보다 상세하게는, 이러한 데이터 네트워크에서 대기중인 데이터 트랜잭션(예컨대 판독/기록 오퍼레이션)에 대응하는 리모트 키를 관리하고, 검증하는 메커니즘(mechanism)을 구비한 호스트-패브릭 어댑터(host-fabric adapter)에 관한 것이다.
도1은 본 발명의 실시예에 따른, 복수 노드가 기본 스위치의 대응 링크에 의해 상호접속된 데이터 네트워크의 일례를 나타내는 도면.
도2는 본 발명의 실시예에 따른, 복수 노드가 다단 스위치 패브릭의 대응 링크에 의해 상호접속된 데이터 네트워크의 다른 예를 나타내는 도면.
도3a∼3d는 본 발명의 실시예에 따른 데이터 네트워크의 예에 있어서 소스 노트로부터 목적지 노드로 전송된 메시지 데이터 패킷 포맷과, 데이터 전송 오퍼레이션 동안 포스트된 작업큐 구성요소(Work Queue Element(WQE))의 형태인 작업 요청(work request)을 나타내는 도면.
도4a∼도4b는 본 발명의 다른 실시예에 따른 데이터 네트워크의 예에서 호스트 시스템의 예의 블록도.
도5는 본 발명의 실시예에 따른 호스트 시스템의 오퍼레이팅 시스템(OS)의 소프트웨어 드라이버 스택의 예를 나타내는 도면.
도6은 본 발명의 실시예에 따른, 스위치 패브릭을 통한 데이터 전송을 지원하기 위해 NGIO/InfiniBandTM및 VI 아키텍쳐를 이용하는 호스트 시스템의 블록도.
도7은 본 발명의 실시예에 따른, 스위치 패브릭(100')을 통한 데이터 전송을 지원하기 위해 NGIO/InfiniBandTM및 VI 아키텍쳐에 부합하도록 구성된 호스트- 패브릭 어댑터의 예를 나타내는 도면.
도8은 본 발명의 실시예에 따른 호스트-패브릭 어댑터의 마이크로-엔진(ME)의 예를 나타내는 도면.
도9는 본 발명의 실시예에 따른 호스트-패브릭 어댑터의 마이크로-엔진(ME)의 구현예를 나타내는 도면.
도10은 본 발명의 실시예에 따른 호스트 메모리에서의 대기중인 RDMA 오퍼레이션에 따르는 리모트 키의 정당성을 검사하기 위한 리모트 키 관리자 블록(Remote Key Manager Block: RMB)의 예를 나타내는 도면.
도11은 본 발명의 실시예에 따른 높은 레벨의 리모트 키 검증의 예를 나타내는 도면.
도12는 본 발명의 실시예에 따른 리모트 키 관리자 블록(RMB)의 개별적인 키 검증의 예를 나타내는 도면.
도13은 본 발명의 실시예에 따른 일반적인 리모트 키 관리자 블록(RMB) 오퍼페이션의 예시적인 타이밍 도.
도14는 본 발명의 실시예에 따른 일반적인 리모트 키 관리자 블록(RMB) 오퍼레이션의 종료시 예시적인 타이밍 도.
도15는 본 발명의 실시예에 따른 리모트 키 관리자 블록(RMB)의 예시적인 타이밍 도로서, 보호 도메인(PD)의 미스매치가 있는 경우의 도면.
도16은 본 발명의 실시예에 따른 리모트 키 관리자 블록(RMB)의 예시적인 타이밍 도로서, 다중 키 미스매치가 있는 경우의 도면.
도17은 본 발명의 실시예에 따른 리모트 키 관리자 블록(RMB)의 예시적인 타이밍 도로서, 간헐적인 RQ 메모리 억세스가 있는 경우의 도면.
모든 도면에있어서, 가상 인터페이스(VI) 아키텍쳐 사양에서 설명되 바와 같은 "VI"라는 용어는 "Next generation Input/Output(NGIO) Specification" 에서 설명된 바와 같은 작업큐 쌍(Work Queue Pair: WQP)으로서 알려져 있으며, "InfinBandTMarchitecture Specification"에 설명된 바와 같은 큐 쌍(queue pair: QP)로 알려져 있기도 하다. 따라서, "VI", "WQP" 및 "QP"는 상호 교환가능하게 사용될 수 있으며, 이들은 동일한 의미를 나타낸다.
호스트 시스템에는 데이터 네트워크의 스위치 패브릭에 접속하기 위해 설치된 하나 이상의 호스트-패브릭 어댑터가 제공된다. 호스트-패브릭 어댑터는 접속을 설정하고, 스위치 패브릭을 통한 데이터 전송 오퍼레이션을 지원하도록 배치된 적어도 하나의 마이크로-엔진(ME); 데이터 전송 오퍼레이션 동안 스위치 패브릭으로부터 데이터 패킷을 수신 및 송신하도록 배치된 직렬 인터페이스; 데이터 전송 오퍼레이션 동안 호스트 시스템으로부터 호스트 데이터 작업 요청을 수신 및 송신하도록 배치된 호스트 인터페이스; 데이터 전송 오퍼레이션에 필요한 컨텍스트 정보를 제공하도록 배치된 컨텍스트 메모리; 데이터 전송 오퍼레이션 동안 호스트 데이터 전송 요청을 처리하기 위해 마이크로-엔진(ME)에 필요한 컨텍스트 정보를 업데이트하도록 배치된 도어벨 관리자, 및 대기중인 데이터 전송 오퍼레이션에 대응하는 리모트 키의 정당성을 검사하고 리모트 키를 관리하도록 배치된 리모트 키 관리자를 포함한다.
본 발명의 전형적인 실시예의 보다 완전한 이해와 본 발명에 수반되는 많은 장점은, 동일하거나 유사한 부품에 동일한 번호를 부여한 도면과 함께 설명되는 상세한 설명을 통해 보다 명백하게 이해될 것이다.
본 발명은, 컴퓨터, 서버, 주변장치, 저장 서브시스템, 및 데이터 통신을 위한 통신장치 등의 종단국(end station)를 서로 연결하는 후속 칩 설계(follow-on chip design)를 포함한, 모든 형태의 데이터 네트워크, I/O 하드웨어 어댑터 및 칩셋에 이용할 수 있다. 그러한 데이터 네트워크의 예는, NGIO(Next Generation I/O), FIO(Future I/O), InfiniBandTM 및 가변 성능을 제공하기 위해 컴퓨터 기술이 진보함에 따라 이용될 수도 있는, 채널 기반 스위치 패브릭 아키텍쳐를 포함하는 그들의 네트워크를 이용하는 새롭게 개발된 컴퓨터 네트워크를 포함한, 로컬 에어리어 네트워크(LAN), 와이드 에어리어 네트워크(WAN), 캠퍼스 에어리어 네트워크(CAN), 메트로폴리탄 에어리어 네트워크(MAN), 글로벌 에어리어 네트워크(GAN), 와이어리스 퍼스널 에어리어 네트워크(WPAN), 및 시스템 에어리어 네트워크(SAN)를 포함한다. LAN 시스템은 이더넷, FDDI(Fiber Distributed DataInterface) 토큰 링 LAN, 비동기식 전송 모드(ATM) LAN, 광섬유 채널, 및 무선 LAN을 포함할 수도 있다. 그러나, 간략하게 하기 위해, 대응 링크와 스위치에 의해 상호접속된 복수개의 예시적인 노드를 갖는 단순한 데이터 네트워크(예컨대, 컴퓨터, 서버 및 I/O 유니트)에서 채널 접속용의 물리적 링크를 제공하는 하나 이상의 하드웨어 패브릭 어댑터를 포함하는 호스트 시스템을 주로 하여 설명하겠지만, 본 발명은 이에 한정되지 않는다.
도1을 참조하면, 본 발명의 일실시예에 따른 데이터 통신을 위해 복수의 상호접속된 노드를 갖는 간단한 데이터 네트워크(10)가 도시된다. 도1에 나타낸 바와 같이, 데이터 네트워크(10)는 예컨대, 하나 이상의 중심 스위치(10) 및 4개의 상이한 노드(A,B,C,D)를 포함할 수도 있다. 각 노드(종단점)는 하나 이상의 I/O 유니트, 및 각종 어플리케이션 또는 서비스가 제공되어지는 컴퓨터 및/또는 서버를 포함하는 호스트 시스템에 대응할 수도 있다. I/O 유니트는 하나 이상의 프로세서, 메모리, 하나이상의 I/O 제어기 및 그에 연결되는 기타 로컬 I/O 리소스를 포함할 수도 있으며, 로컬 에어리어 네트워크(LAN) 어댑터와 같은 단일 I/O 장치로부터 대용량 메모리 리치 RAID 서브시스템(large memory rich RAID subsystem)에 이르기까지 복잡하게 정렬될 수 있다. 각 I/O 컨트롤러(IOC)는 I/O 서비스 또는 I/O 기능을 제공하고, 예컨대 로컬 에어리어 네트워크(LAN) 또는 와이드 에어리어 네트워크(WAN)을 통해 저장 장치(예컨대, 하드디스크 드라이브 및 테이프 드라이브) 등의 하나 이상의 I/O 장치를 국부적으로 또는 원격으로 제어하도록 동작할 수도 있다.
중앙의 스위치(100)는, 예컨대 대응하는 물리적 링크(110,112,114,116)를 경유하여 4개의 상이한 노드(A,B,C,D)의 대응하는 노드에 각각 접속되어 있는 스위치 포트(0,1,2,3)를 포함할 수도 있다. 각 물리적 링크는 복수의 논리적인 지점 대 지점(point-to-point) 채널을 지원할 수도 있다. 각 채널은 쌍방향(bi-directional) 통신 경로일 수도 있으며, 네트워크 내의 두개의 접속된 노드(예컨대, 호스트 시스템, 스위치/스위치 구성요소, 및 I/O 유니트) 사이에서 명령어 및 데이터가 교류하는 것을 허용한다.
각 채널은 단일 지점 대 지점 접속(single point-to-point connection)으로 언급될 수도 있으며, 여기서 데이터는 종단점(endpoint)들 사이에서 전송될 것이다. 중앙의 스위치(100)는, 대응하는 링크를 통해 소스 노드(데이터 송신기)로부터 타겟 노드(데이터 수신기)로 데이터를 라우팅하기 위해, 예컨대 명백한 라우팅 및/또는 목적지 주소 라우팅을 이용하는 특정 라운팅 정보 및 중복(redundancy)을 위한 리라우팅(re-routing) 정보를 포함할 수도 있다.
도1에 나타낸 종단점 또는 종단국(end station)(예컨대, 호스트 시스템 및 I/O 유니트), 스위치 및 링크의 특정 수와 구성은 예시적인 데이터 네트워크로서 간단하게 제공된다. 모든 형태의 데이터 네트워크에 있어서의 복수의 종단국(예컨대, 호스트 시스템 및 I/O 유니트), 스위치, 및 링크의 각종 구현 및 배열이 가능할 수도 있다.
한가지 예 또는 구현에 따르면, 도1에 나타낸 예시적인 데이터 네트워크의 종단점 또는 종단국(예컨대, 호스트 시스템 및 I/O 유니트)은 1999년 7월 20일,NGIO Forum의 "Next Generaton Input/Output(NGIO) Specification" 및 2000년 10월 24일, InfiniBandTMTrade Association의 InfiniBandTMArchitecture Specification와 호환된다.
NGIO/InfiniBandTM사양에 의하면, 스위치(100)는 NGIO/InfiniBandTM스위치 패브릭(예컨대, 링크, 라우터, 스위치 및/또는 복수의 호스트 시스템과 I/O 유니트를 접속하는 스위치 구성요소)일 수 있으며, 종단점은 하나 이상의 호스트채널 어댑터(HCA)를 포함하는 호스트 시스템, 또는 하나 이상의 타겟 채널 어댑터(TCA)를 포함하는 I/O 유니트와 같은 리모트 시스템일 수도 있다. 호스트 채널 어댑터(HCA)와 타겟채널 어댑터(TCA) 양자 모두 NGIO 스위치 패브릭에 대한 인터페이스 종단점에 제공된 패브릭 어댑터로서 고려될 수도 있고, 1999년 5월 13일, NGIO 포룸에서 설명된 "Next Generation I/O Link Architecture Specification: HCA Specification, Revision1.0" 및/또는 NGIO/InfiniBandTMSpecification에 일치하여 구현되어, 종단점(노드)들이 상호간 초당 2.5기가 바이트의 최소 데이터 전송율을 갖는 NGIO/InfiniBandTM채널을 거쳐 통신할 수 있게 해준다.
예컨대, 도2는 본 발명의 일실시예에 따라 소스 노드로부터 목적지 노드로 메시지 데이터를 전송하기 위해 NGIO/InfiniBandTM아키텍쳐를 이용하는 예시적인 데이터 네트워크(예컨대, 시스템 에어리어 네트워크(SAN))를 나타낸다. 도2에 나타낸 바와 같이, 데이터 네트워크(10')는 호스트 시스템과 리모트 시스템이 하나 이상의 특정 채널을 거쳐 다수의 다른 호스트 시스템과 리모트 시스템과 통신하는 것을 허용하는 NGIO/InfiniBandTM스위치 패브릭(100')(복수의 스위치로 이루어진 다단 스위치 패브릭)을 포함한다. 채널 접속은 단순히 추상적인 것으로, 소스 및 목적지 종단점(예컨대, 호스트와 리모트 시스템, 및 스위치 패브릭(100')에 접속된 I/O 유니트)에서의 2개의 작업 큐 쌍(work queue pair)이 상호 통신할 수 있도록 스위치 패브릭(100')상에 구현된다. 각 채널은 여러개의 상이한 접속 시멘틱(semantic) 중 하나를 지원할 수 있다. 물리적으로, 채널은 호스트 시스템의 하드웨어 포트에 결합될 수 있다. 각 채널은 응답(acknowledge)되거나 무응답(unacknowledged)될 수 있다. 응답된 채널은 채널의 리모트 종단에서 검출된 에러에 대한 정보뿐 아니라 메시지와 데이터의 안정적인 전송을 제공한다. 일반적으로, 호스트 시스템과 리모트 시스템 중 어느 하나 사이의 단일 채널이 충분하지만, 인접한 포트들 사이의 데이터 전송 분산(data transfer spread)은 대기시간(latency)을 감소시키고 밴드 폭을 증가시킨다. 따라서, 제어 흐름과 데이터 흐름을 분리하기 위한 분리 채널이 바람직할 수도 있다. 예컨대, 하나의 채널이 메시지를 요청하고 응답하기 위해 생성될 수도 있다. 분리된 채널 또는 채널의 집합이 호스트 시스템과 임의의 리모트 시스템 사이에서 데이터를 이동시키기 위해 생성될 수도 있다. 또한, 임의 개수의 종단국, 스위치 및 링크가 대응하는 NGIO/InfiniBandTM링크를 통하여 종단국과 스위치 사이에서 패킷 그룹의 데이터에 응답하기 위해 이용될 수도 있다.
예컨대, 노드(A)는 각종 어플리케이션이나 서비스가 제공되는 호스트 컴퓨터 또는 호스트 서버와 같은 호스트 시스템(130)을 나타내고 있을 수도 있다. 유사하게, 노드(B)는 로컬 에어리어 네트워크(LAN), 와이드 에어리어 네트워크(WAN), 이더넷, ATM, 및 광섬유 채널 네트워크을 포함하고(그러나, 이에 한정되지 않음), 고속의 직렬 링크를 통해 접속되어 있는 기타 네트워크(150)를 나타낼 수도 있다. 노드(C)는 하나 이상의 I/O제어기와 그곳에 접속된 I/O 유니트를 포함하는 I/O 유니트(170)를 나타낼 수도 있다. 마찬가지로, 노드(D)는 각종 어플리케이션이나 서비스가 제공되어지는 타겟 컴퓨터 또는 타겟 서버와 같은 리모트 시스템(190)을 나타낼 수도 있다. 또한, 노드(A,B,C,D)는 호스트 시스템(130)과 리모트 시스템(150,170,190) 사이의 중간 노드로서 동작하는 NGIO 패브릭(100')의 각 스위치를 나타낼 수도 있다.
다단 스위치 패브릭(100')은 전체 네트워크 기능을 관리하기 위해 모든 스위치에 접속된 패브릭 관리자(250)를 포함할 수도 있다. 그러나, 패브릭 관리자(250)는 호스트 시스템(130), 제2 네트워크(150), I/O 유니트(170), 또는 리모트 시스템(190) 중 어느 하나의 일부분으로서 선택적으로 내포되어 전체 네트워크 관리 기능을 관리할 수도 있다. 다른 상황에서는, 패브릭 관리자(250)는 네트워크 토폴리지를 학습하고, 스위치 테이블을 결정하거나 데이터 베이스를 포워딩하고, 네트워크에 있어서 오류나 링크 실패를 검출 및 관리하고, 다른 네트워크 관리 기능을 수행하도록 구성될 수도 있다.
호스트 채널 어댑터(HCA)(120)는 고속의 직렬 NGIO/InfiniBandTM링크를 통하여 호스트 시스템(130, 예컨대 서버)의 메모리 제어기(미도시)와 스위치 패브릭(100') 사이에 인터페이스를 제공하기 위해 이용될 수도 있다. 유사하게, 타겟 채널 어댑터(TCA)(140,160)는 고속의 직렬 NGIO/InfiniBandTM링크를 통하여 다단 스위치 패브릭(100')과 제2 네트워크(150) 또는 I/O 유니트(170) 중 어느 하나의 I/O 제어기(예컨대, 저장 및 네트워크 장치) 사이에 인터페이스를 제공하도록 이용될 수도 있다.
또한, 다른 타겟 채널 어댑터(TCA)(180)는 고속의 직렬 NGIO/InfiniBandTM링크를 통하여 리모트 시스템(190)의 메모리 제어기(미도시)와 스위치 패브릭(100') 사이에 인터페이스를 제공한다. 호스트 채널 어댑터(HCA)와 타겟 채널 어댑터(TCA) 양자 모두 호스트 시스템(130) 또는 스위치 패브릭(100')에 대한 리모트 시스템(150,170,190) 중 하나의 리모트 시스템 중 어느 하나의 인터페이스에 제공된 패브릭 어댑터로서 넓은 의미로 고려될 수 있고, NGIO/InfiniBandTM채널을 거쳐 종단점(노드)간에 상호 통신하도록 하는 1999, 5월 13일 NGIO Forum에 발표된 "Next Generation I/O Link Architecture Specification, Revision1.0"과 일치하여 구현될 수도 있다. 그러나, NGIO/InfiniBandTM은 단순히 본 발명의 예시적인 실시예이거나 구현일 뿐이며, 본 발명이 이에 한정되는 것은 아니다. 또한, 본 발명은각종 임의 수의 데이터 네트워크, 호스트 및 I/O 유니트에 적용할 수도 있다. 예컨대, 본 발명의 실시예는 FIO(Future I/O)로 이루어질 수도 있다. 인터넷 어드레스가 http://www.InfiniBandta.org.@인 InfiniBand Trade Association(1999, 8월 27일 설립)에 의해 발표된 바와 같은 InfiniBandTM상의 NGIO 및 FIO 단체 결합 운동의 순차적인 합병 조약에 의해 FIO 사양은 아직까지 공개되지 않았다.
도3a∼도3b는, 2000년 10월 24일, InfiniBandTMTrade Association에 의해 발표된 A InfiniBantTMArchitecture Specification에 따른 스위치 및/또는 중간 노드를 통해 소스 노드(데이터 송신기)로부터 목적지 노드(데이터 수신기)로 전송된 메시지 데이터의 패킷 포맷의 실시예를 나타낸다. 도3a에 나타낸 바와 같이, 메시지 데이터(300)는 하나 이상의 데이터 패킷(310)(일반적으로, 작업 요청에 이해 정의된 데이터 전송 크기로부터 유도됨)의 시퀀스를 나타낼 수도 있다. 각 패킷(310)은 헤더 정보(312), 가변 형식의 패킷 페이로드(payload)(314), 및 주기적 중복 검사(CRC) 정보(316)를 포함할 수도 있다. 1999년 7월 20일, NGIO Forum의 "Next Generaton Input/Output(NGIO) Specification" 하에서, 동일한 패킷 데이터는 메시지 데이터의 최소 공분모(least common denominator(LCD))로서 유사한 헤더 정보를 갖는 셀 패킷으로서 언급될 수도 있다. 그러나, NGIO 헤더 정보는 InfiniBantTM보다 적게 포함한다. 그렇지만, 공개의 목적을 위해, 이하 본 명세서에서는 데이터 패킷은 InfiniBantTM프로토콜을 통하여 설명되지만, NGIO 프로토콜을 통하여 데이터 셀과 상호 교환할 수 있다.
도3b에 나타낸 바와 같은, InfiniBantTM사양에 따른 헤더 정보(312)는 예컨대, 로컬 라우팅 헤더(320), 글로벌 라우팅 헤더(322), 베이스 전송 헤더(Base transport header)(324) 및 데이터 확장 전송 헤더(Data extended transport header)(326), RDMA 확장 전송 헤더(RDMA extended transport header)(328), 및 오토믹 확장 전송 헤더(Atomic extended transport header)(330)와 같은 확장 전송 헤더를 포함하고 있는 상이한 형태의 헤더를 포함할 수도 있다.
로컬 라우팅 헤더(320)는 도2에 나타낸 예시적인 데이터 네트워크(10') 내에서 스위치에 의한 로컬 라우팅에 이용되는 필드를 포함한다. 예컨대, 로컬 라우팅 헤더(320)는 InfiniBantTM링크 레벨 프로토콜을 식별하는데 이용되는 링크 버젼 필드(331), 목적지 포트 및 네트워크(10')에서 데이터 경로를 식별하는데 이용되는 목적지 로컬 ID 필드(332), 데이터 패킷의 크기를 식별하는데 이용되는 패킷 길이 필드(333), 및 소스 포트(주입 지점(injection point))를 식별하기 위해 이용되는 소스 로컬 ID(334)를 포함할 수도 있지만, 이에 한정되는 것은 아니다.
글로벌 라우팅 헤더(322)는 도2에 나타낸 예시적인 데이터 네트워크(10')의 노들들 사이에서 데이터 패킷을 라우팅하기 위해 이용되는 필드를 포함한다. 예컨대, 글로벌 라우팅 헤더(322)는, 글로벌 서비스 레벨의 통신을 위해 이용되는 트래픽 클래스 필드(traffic class field)(335), 패킷의 길이를 바이트로 지시하기 위해 이용되는 페이로드 길이 필드(payload length field)(336), 데이터 네트워크(10')로 패킷을 주입하는 포트에 대한 글로벌 식별자(GID)를 식별하기 위해 이용되는 소스 GID 필드(333), 및 데이터 네트워크(10')로부터 패킷을 소모시키는 포트에 대한 GID를 식별하기 위해 이용되는 목적지 GID 필드(338)를 포함할 수도 있지만, 이에 한정되는 것은 아니다.
베이스 전송 헤더(324)는 도2에 나타낸 데이터 네트워크(10')내에서 데이터메시지 전송에 이용되는 필드를 포함한다. 예컨대, 베이스 전송 헤더(324)는, 패킷 형태를 지시하고, 패킷이 처음인지, 끝인지 중간인지를 식별하거나 단지 데이터 메시지의 패킷인지를 식별하고, 오퍼레이션(Send, RDMA Write, RDMA Read, Atomic)을 분류하는데 이용되는 OpCode 필드(339), 작업 큐 쌍(Work Queue pair:WQP) 수를 목적지에 지시하는데 이용되는 목적지 QP 필드(340), 패킷의 유실 또는 중복을 검출하는데 이용되는 패킷 시퀀스 넘버(PSN) 필드(341)를 포함할 수도 있지만, 이에 한정되는 것은 아니다.
데이터 확장 전송 헤더(326)는 데이터그램(datagram) 서비스를 위한 추가적인 전송 필드를 포함한다. 예컨대, 데이터 확장 전송헤더(326)는 수신 큐에 대한 억세스를 인증하는데 이용되는 큐 키(Queue Key: Q_key) 필드 및 WQP 수를 소스에 지시하기 위해 이용되는 소스 QP 필드(343)를 포함할 수도 있지만, 이에 한정되는 것은 아니다.
RDMA 확장 전송 헤더(328)는 RDMA 오퍼레이션을 위한 추가작인 전송 필드를 포함한다. 예컨대, RDMA 확장 전송 헤더(328)는 RDMA 오퍼레이션의 가상 어드레스를 제공하기 위해 이용되는 가상 어드레스(VA) 필드(344), RDMA 오퍼레이션에 대한 억세스를 인증하기 위해 이용되는 리모트 키(Rkey) 필드(345), 및 직접 메모리 억세스 오퍼레이션에 대한 길이를 바이트로 지시하기 위해 이용되는 길이 필드(length field)(346)를 포함할 수도 있지만, 이에 한정되는 것은 아니다.
오토믹 확장 전송 헤더(330)는 오토믹 패킷(atomic packet)과 오토믹 오퍼레이션(atomic operation)을 위한 추가적인 전송 필드를 포함한다. 예컨대, 오토믹 확장 전송 헤더(330)는 리모트 가상 어드레스를 제공하기 위해 이용되는 가상 어드레스(VA) 필드(347), 리모트 가상 어드레스에 대한 억세스를 인증하기 위해 이용되는 리모트 키(Rkey) 필드(348), 및 오토믹 오퍼레이션에 피연산자(operand)를 제공하기 위해 이용되는 교환 및 비교 데이터 필드(swap and compare data field)(349)를 포함할 수도 있지만, 이에 한정되는 것은 아니다.
데이터 이동 오퍼레이션과 프로세스 및/또는 전송을 위해 이동될 데이터의 위치를 설명하기 위해, 작업 큐 구성요소(WQE)는 호스트 시스템(130)으로부터 스위치 패브릭(100')을 통해 적당한 작업 큐(WQ)에 포스트된다. 그러한 "WQE"는 일반적으로 큐 송신 및 큐 수신 오퍼레이션을 종료하기 위해 필요한 모든 정보를 제공한다.
큐 송신 오퍼레이션(Send Queue Operation)에는 송신(Send), 리모트 메모리 억세스(Remote Memory Access(RDMA)), 및 메모리 바인딩(Memory binding)을 포함한 몇가지 종류가 있다. 송신(Send) 오퍼레이션의 경우, WQE는 목적지에 송신하는 하드웨어에 대한 사용자의 메모리 공간내의 데이터 블럭을 나타내며, 이미 목적지에 큐된 수신 WQE를 데이터의 장소를 나타한다. RDMA 오퍼레이션에 있어서, 또한, WQE는 리모트 사용자 메모리내의 어드레스를 나타낸다. 따라서, RDMA 오퍼레이션은 목적지의 수신 작업 큐를 포함할 필요가 없다.
RDMA 오퍼레이션에는 RDMA-기록, RDMA-판독, 및 오토믹(Atomic)과 같은 3가지 형태가 있다. RDMA-기록 오퍼레이션은 하드에어가 사용자의 메모리로부터 리모트 사용자의 메모리로 데이터를 전송하는 것임을 규정하고 있다. RDMA-판독 오퍼레이션은 하드웨어가 리모트 메모리로부터 사용자의 메모리로 데이터를 전송하는 것임을 규정한다. 오토믹 오퍼레이션은 하드웨어가 리모트 메모리 위치의 판독을 수행하는 것을 규정하고 있다. 리모트 시스템은 판독값을 리턴하며, 동일한 장소에 갱신된 값을 다시 기록함으로써 리모트 메모리 컨텐츠를 조건부로 변경/대체한다. 즉, 오토믹 오퍼레이션은 결합된 판독, 변경, 및 기록 오퍼레이션이다. 오토믹 오퍼레이션의 일례는 동일한 오퍼레이션이라면 비교 및 교환(Compare and Swap)을 들수 있다. WQE는 리모트 메모리 위치, 비교 값, 및 새로운 값을 나타낸다. 리모트 WQE는 특정 메모리 위치를 판독하여, 그 값을 메시지에 제공된 비교값과 비교하고, 이들 값이 같은 경우에만, WQP가 새로운 값을 동일한 메모리 위치에 기록한다. 어느 경우에서도, 리모트 WQP는 메모리 위치로부터 판독된 값을 요청 WQP에 되돌린다. 다른 오토믹 오퍼레이션은 FetchAdd 오퍼레이션으로, 여기에서는 리모트 WQP가 특정 메모리 위치를 판독하고, 그 값을 요청 WQP에 리턴하며, 그 값을 메시지에 제공된 값에 더하고, 동일한 메모리 위치에 결과를 기록한다.
메모리 바인드(Memory Bind)는 메모리 등록 관계(Memory registration relationship)를 변경하고, 메모리 윈도우의 바인딩을 변경할 것을 하드웨어에 명령한다. 바인드 메모리 윈도우 오퍼레이션은 특정 리모트 억세스 허가 세트에 따라이전에 할당된 메모리 윈도우를 현재 메모리 영역 내에 특정 어드레스 범위에 결부시킨다.
하나의 수신 큐 오퍼레이션만이 있을 수 있으며, 이는 수신 데이터 버퍼를 나타낸다. WQE 수신은 사용자가 송신(Send) 오퍼레이션을 실행할 때 다른 사용자로부터 수신된 데이터를 하드웨어가 배열하는 것을 나타낸다. 리모트 사용자가 성공적으로 송신 오퍼레이션을 실행한 시각마다, 하드웨어는 수신 큐로부터 다음번 엔트리를 취득하여, 수신된 데이터를 수신 큐내의 특정 메모리 위치에 배치하고, 수신 오퍼레이션이 종료되었음을 사용자에게 알리는 완료 큐(completion queue: CQ)상에 완료 큐 엔트리를 배치한다. 따라서, 송신 오퍼레이션의 실행은 리모트 사용자측에서 수신 큐 오퍼레이션을 일으킨다.
각각의 송신/수신 WQE는 단일 데이터 패킷의 송신 이나 수신을 제어하기 위해 이용될 수 있다. 송신 "WQE" 및 RDMA 기록 "WQE"는 로컬 시스템 메모리(local system memory)(206)로부터 나가는 데이터(outgoing data)를 패치(fetch)하기 위해 가상 어드레스를 설명하는 "수집(gather)" 리스트를 추가적으로 제공한다(이 리스트는 로컬 시스템 메모리(206)로부터 나가는 데이터를 정확하게 어느 곳에 패치할 것인지를 설명함). 수신 "WQE" 및 RDMA 판독 "WQE"는 들어오는 데이터(incoming data)를 로컬 시스템 메모리(206)에 배치하기 위해 가상 어드레스를 설명하는 "분산(scatter)" 리스트를 선택적으로 제공한다(이 리스트는 로컬 시스템 메모리(206) 내의 들어오는 데이터를 정확하게 어느 곳에 저장할 것인지를 설명한다). 송신 "WQE"는 송신 작업 큐 체인(Send Work Queue chain)에서만 유효하다.
RDMA "WQE"는 송신/수신 "WQE"의 슈퍼세트(superset)이고, 전송된 정보의 리모트 어드레스를 가리키는 추가적인 정보를 포함할 수도 있다. 리모트 시스템이 메시지 데이터를 어느 곳으로 전송할 지 혹은 어느 곳으로부터 전송되었는지를 결정하기 위해 작업 요청을 이용하는 송신/수신 오퍼레이션과는 달리, RDMA "WQE"는, 가상 어드레스(VA), 메모리 헨들(MH) 및 리모트 키를 이용하여, 리모트 시스템에 명령하고, 이 리모트 시스템에서 메시지가 전송되거나 수신된다.
일반적으로, 각 "WQE"는 선택적인 어드레스 세그먼트와 임의 수의 데이터 세그먼트에 따른 제어 세그먼트로 시작된다. 제어 세그먼트는 제어 및 상태 정보를 포함할 수도 있다. 판독/기록 RDMA 오퍼레이션을 위한 어드레스 세그먼트는 리모트 버퍼 정보(예컨대, 판독/기록 요청을 수신하도록 지향된 VI와 관련된 메모리)를 포함할 수도 있다. 송신/수신 및 판독/기록 RDMA 오퍼레이션 모두를 위한 데이터 세그먼트는 로컬 시스템 메모리(206)(즉, 송신/수신 또는 판독/기록 요청을 발생하는 VI와 관련된 메모리)에 대한 정보를 포함할 수도 있다.
도3c~도3d는 본 발명의 실시예에 따른 예시적인 송신/수신형 "WQE"(350A)와 예시적인 판독/기록형 RDMA "WQE"(350B)를 각각 나타낸다. 도3c에 나타낸 바와 같이, 송신/수신 "WQE"(350A)는 제어 세그먼트(360) 및 세그먼트 길이 필드(372), 메모리 조정 필드(374), 및 가상 어드레스 필드(376)를 포함하는 데이터 세그먼트(370)를 포함한다. 세그먼트 길이(372)는 송신되거나 수신될 메시지 데이터의 길이를 명시한다. 메모리 조정(MH)(374)은 송신/요청 프로세스(예컨대 VI)가 세그먼트 길이(372) 및 가상 어드레스(VA)(376)에 의해 지시되는 등록 메모리영역(registered memory region)을 소유하는지를 검증하기 위해 이용된다. 게다가, 국부적으로 생성된 가상 어드레스의 물리적 어드레스로의 변환을 수행하도록 로컬 키(378)가 포함될 수도 있다. 송신 오퍼레이션에 있어서, 가상 어드레스(VA)(376)는 VI=s인 로컬 메모리 스페이스의 송신에 있어서 전송될 메시지 데이터의 시작 메모리 위치를 식별한다. 수신 오퍼레이션에 있어서, 가상 어드레스(VA)는 VI=s인 로컬 메모리 스페이스의 요청에 있어서 수신된 메시지 데이터가 저장되어질 시작 메모리 위치를 식별한다.
도3D에 나타낸 바와 같이, 판독/기록 RDMA "WQE"(350B)는 제어 세그먼트(360), 어드레스 세그먼트(380), 및 데이터 세그먼트(370)를 포함할 수도 있다. 어드레스 세그먼트(380)는 리모트 메모리 조정 필드(382) 및 리모트 가상 어드레스 필드(384)를 포함할 수도 있다. 데이터 세그먼트(370)는 세그먼트 길이 필드(372), 로컬 메모리 조정 필드(374), 및 로컬 가상 어드레스 필드(376)를 포함할 수도 있다. 게다가, 로컬 키(378)는 국부적으로 생성된 가상 어드레스의 물리적 어드레스로의 변환을 수행하도록 포함될 수도 있다. 리모트 키("Rkey")(386)는 원격으로 생성된 가상 어드레스의 물리적 어드레스로의 변환을 리모트 시스템에서 수행하도록 포함될 수도 있다. 보다 상세하게, 리모트 키(386)는 로컬 시스템 메모리(206)를 억세스하는 리모트 시스템에 대한 로컬 시스템 메모리(206)의 적당한 페이지를 식별하기 위해 가상 어드레스가 사용된 메모리 영역 또는 메모리 윈도를 참조한다.
RDMA 판독 오퍼레이션에 있어서, 리모트 가상 어드레스(VA)(384)는 리모트프로세스의 메모리 스페이스에서 판독될 메시지의 메모리 위치를 식별한다. 로컬 가상 어드레스(VA)(376)는 로컬 프로세스(local process)내의 시작 메모리 위치(수신 메시지가 배치되는 메모리 스페이스)를 식별한다. 메시지 데이터를 저장하기 위해 이용되어진 메모리의 양은 세그먼트 길이 필드(372)에 의해 표시될 수 있다. RDMA 기록 오퍼레이션에 있어서, 리모트 가상 어드레스(VA)(384)는 기록될 메시지 데이터의 리모트 프로세스 메모리 스페이스내의 메모리 위치를 식별한다. 로컬 가상 어드레스(VA)(376)는 전달되어질 패킷에 대한 메시지 데이터가 판독되어지는 로컬 프로세스 메모리 스페이스내의 시작 메모리 위치를 식별한다. 메시지 데이터의 크기는 세그먼트 길이 필드(372)에 의해 명시된다. 리모트 메모리 조정(MH)(382)은 리모트 가상 어드레스(VA)(384)에 의해 식별된 메모리와 관련되는 메모리 조정(MH)에 대응한다.
논의로 되돌아가서, 호스트 시스템(130)의 일실시예는 도4a에 보여진 바와 같을 수도있다. 도4a를 참조하면, 호스트 시스템(130)은 호스트 버스(203)에 결합된 하나 또는 그 이상의 프로세서(202A∼202N)를 포함할 수도 있다. 다중 프로세서(202A∼202N) 각각은 단일 아이템(I/O 오퍼레이션)상에서 동작할 수도 있고, 모든 다중 프로세서(202A∼202N)는 리스트 상의 다중 아이템상에서 동시에 동작될 수도 있다. I/O 및 메모리 제어기(204)(또는 칩셋)가 호스트 버스(203)에 접속될 수도 있다. 메인 메모리(206)는 I/O 및 메모리 제어기(204)에 접속될 수도 있다. I/O 브리지(208)는 브리지에 영향을 주거나, I/O와 메모리 제어기(204) 사이의 인터페이스 및 I/O와 I/O 버스(205) 사이의 인터페이스에 영향을 줄 수도 있다.I/O 제어기(210,212)를 포함한 복수의 I/O 제어기가 I/O 버스(205)에 부착될 수도 있다. I/O 제어기(210,212)(I/O 제어기에 접속된 모든 I/O 장치를 포함함)는 버스-기반 I/O 리소스(bus-based I/O resource)를 포함할 수도 있다.
하나 또는 그 이상의 호스트-패브릭 어댑터(120)는 I/O 버스(205)에 접속될 수도 있다. 또한, 하나 또는 그 이상의 호스트-패브릭 어댑터(120)는 도4b에 나타낸 바와 같은 I/O 버스(205) 특유의 제한을 피하기 위해 I/O 및 메모리 제어기(또는 칩셋)(204)에 직접 접속될 수도 있다. 도4a 또는 도4b에 나타낸 다른 실시예에 있어서, 하나 또는 그 이상의 호스트-패브릭 어댑터(120)가 호스트 시스템(130)을 NGIO/InfiniBandTM스위치 패브릭(100')에 인터페이스 접속하기 위해 제공될 수도 있다.
도4a∼도4b는 호스트 시스템(130)의 예시적인 실시예를 도시하는 것이다. 그러한 호스트 시스템(130)의 시스템 구성의 넓은 배열은 변경될 수도 있다. 호스트-패브릭 어댑터(120)의 소프트웨어 드라이버 스택(software driver stack)은 호스트 시스템(130)이 NGIO/InfiniBandTM스위치 패브릭(100')을 거쳐 하나 또는 그 이상의 리모트 시스템(150,170,190)과 메시지 데이터를 교환하는 것을 허용하며, Windows2000과 같이 현재 이용 가능한 다양한 오퍼레이팅 시스템과 호환되는 것이 바람직하다.
도5는 호스트 시스템(13)의 옛적인 소프트 드라이버 스택을 나타낸다. 도5에 나타낸바와 같이, 호스트 오퍼레이팅 시스템(OS)(500)은 커널(510), I/O관리자(52), 각종 I/O 제어기에 인터페이스를 제공하기 위한 복수의 채널 드라이버(530a∼530N), 및 스위치 패브릭(100')(예컨대, I/O 제어기)에 부착된 장치와 교신을 설정하는데 이용되는 패브릭 버스 드라이버(540) 및 하나 또는 그 이상의 패브릭 어댑터-특정 장치를 포함하는 호스트-패브릭 어댑터 소프트웨어 스택(드라이버 모듈)을 포함하고, 대부분의 드라이버에 대해 공통인 기능을 수행한다. 그러한 호스트 오퍼레이팅 시스템(OS)(500)은 예컨대 Windows2000일 수 있으며, I/O 관리자(520)는 플러그 앤 플레이 관리자일 수도 있다.
채널 드라이버(530A∼530N)는 스위치 패브릭(100')에 부착된 장치에 I/O 오퍼레이션을 수행하도록 호스트 오퍼레이팅 시스템(OS)에 필요한 개념을 제공하고, 호스트 오퍼레이팅 시스템(OS)로부터의 IO 요청을 캡슐화(encapsulate)하며, 스위치 패브릭(100')을 거쳐 캡슐화된 IO 요청을 송신한다. 게다가, 채널 드라이버(530A∼530N)는 패브릭-부착 장치(fabric-attached device)에 대한 포스트 워크 아이템(post work item)에 메모리 및 작업 큐(WQ)와 같은 필수적인 리소스를 할당한다.
호스트-패브릭 어댑터 소프트웨어 스택(드라이버 모듈)은 스위치 패브릭(100') 및 패브릭 구성, 패브릭 토폴리지 및 접속 정보에 대한 정보를 억세스 하기 위해 제공될 수도 있다. 그러한 호스트-패브릭 어댑터 소프트웨어 스택(드라이버 모듈)은 리모트 시스템(예컨대, I/O 제어기)과의 통신을 설정하고, 대부분의 드라이버에 공통인 기능을 수행하기 위해 이용될 수 있으며, 예컨대 호스트-패브릭 어댑터 초기화 및 구성, 채널 구성, 채널 추상화(channel abstraction), 리소스 관리, 패브릭 관리 서비스 및 오퍼레이션, 송신/수신 IO 트랜잭션 메시지, 리모트 직접 메모리 억세스(RDMA) 트랜잭션(예컨대, 판독 및 기록 오퍼레이션), 큐 관리, 메모리 등록, 기술자(descriptor)관리, 메시지 흐름 제어, 비상주 에러(transient error) 조정 및 회복을 포함한다. 이와 같은 소프트웨어 드라이버 모듈은 C, C++, 및 Visual Basic과 같은 고등급의 프로그램 언어를 이용해 기록될 수도 있으며, 메모리 장치, 자기 디스크(고정식 플라피 또는 가동식 플라피), 마그네틱 테이프와 같은 기타 자기 매체, CD-ROM과 같은 광학 매체와 같은 유형의 컴퓨터 매체상에 제공될 수도 있으며, 또는 인터넷 다운로드를 통하여 제공될 수도 있으며, 이는 패브릭 관리자가 현재 오페이팅 시스템(OS)에 편리하게 플러그-인하거나 다운로드할 수 있다. 이러한 소프트웨어 드라이버는 특정 장치 드라이버에 의해 활성될 수도 있는 현존하는 오퍼레이팅 시스템(OS)과 함께 묶여질 수도 있다.
호스트-패브릭 어댑터(또는, 호스트 채널 어댑터 "HCA"로서 알려짐) 드라이버 모듈은 3개의 기능층으로 구성되고, 이 기능층으로는 HCA 서비스 층(HSL), HCA 추상화 층(HCAAL), 및 HCA 장치-특정 드라이버(HDSD)가 있으며, 이들은 "Next Generation I/O Architecture: Host Channel Adapter Software Specification@, the 1999년 8월 6일 Intel에서 발표한, "Next Generation I/O: Intel HCA Connection Service Layer High Level Design@, the "Next Generation I/O: Intel HCA Abstraction Layer High Level Design@, 및 "Next Generation I/O: Intel HCA Fabric Service Layer High Level Design@에 따른다. 예컨대, 모든 채널 드라이버(530A∼530N)는 공통 서비스 세트(532A∼532N)를 제공하기 위한 HCA 서비스 층(Service Layer)(HSL)을 포함한 채널 억세스 층(CAL)일 수도 있으며, 상술한 공통 서비스는 패브릭 서비스, 접속 서비스, 및 NGIO/InfiniBandTM의 실증 및 이용을 위해 채널 드라이버(530A∼530N)에 의해 요구되는 HCA 서비스를 포함한다. 패브릭 버스 드라이버(540)는 모든 장치-특정 드라이버를 관리하고, 호스트 시스템(130)내의 모든 HCA에 공통인 공유 리소스를 제어하고, HSL에 이벤트 정보를 분배하고, 특정 장치 기능에 대한 억세스를 제어하기 위한 HCA 추상화 층(HCAAL)에 대응할 수도 있다. 또한, 하나 또는 그 이상의 패브릭 어댑터 장치-특정 드라이버(550A∼550N)는 하나 또는 그 이상의 HCA의 초기화 인터페이스, 구성 인터페이스 및 제어 인터페이스 모두에 추상적인 인터페이스(abstract interface)를 제공하기 위한 HCA 장치-특정 드라이버(모든 형식의 밴드 X 장치 및 모든 형식의 밴드 Y 장치용)에 대응할 수도 있다. 다중 HCA 장치-특정 드라이버는 장치가 호스트 시스템(130)내에 밴드가 상이한 HCA 장치가 있는 경우 존재할 수도 있다.
보다 상세하게, 패브릭 버스 드라이버(540) 또는 HCA 추상화 층(HCAAL)은 예컨대 호스트-패브릭 어댑터 소프트웨어 스택(드라이버모듈)에 모든 필수적인 서비스를 제공할 수도 있으며, 이는 호스트 시스템 내의 모든 HCA에 공통인 리소스를 구성 및 초기화하며, 모든 HCA에공통인 리소스에 대한 억세스를 제어하며, 각 HCA에 의해 제공된 리소스에 대한 억세스를 제어하고, HCA로부터 채널 억세스층(CAL)의 HCA 서비스층(HSL)으로 이벤트 통지를 분배하는 것을 포함한다. 게다가, 패브릭 버스 드라이버(540) 또는 HCA 추상화 층(HCAAL)은 클라이언트 관리 기능, 리소스질의(query) 기능, 리소스 할당 기능, 리소스 구성및 제어 기능을 HCA 장치 서비스 층(HSL)에 수출(export)하고, 이벤트 및 에러 통지 기능을 HCA 장치-특정 드라이버에 수출한다. 리소스 질의 기능은, 예컨대 모든 HCA 및 각각의 HCA에 공통인 리소스의 특성(attribues), 포트의 상태, 및 포트, 워크 큐 쌍(WQP), 및 완료 큐(CQ)의 구성에 대한 쿼리를 포함한다. 리소스 할당 기능은, 예컨대 HCA 및 포트의 제어 인터페이스, 보호 태그, 작업 큐 쌍(WQP), 완료 큐(CQ)의 보존 및 해제(reserve and release)를 포하한다. 리소스 구성 및 제어 기능은, 예컨대 포트를 구성하고, HCA 제어 오퍼레이션 및 포트 제어 오퍼레이션을 수행하고, 작업 큐 쌍(WQP)을 구성하고, 작업 큐 쌍(WQP)의 송신 또는 수신 큐상의 오퍼레이션을 수행하고, 완료 큐(CQ)상의 오퍼레이션을 수행하는 것을 포함한다.
호스트 시스템(130)은 가상 인터페이스(VI) 아키텍쳐를 이용하여 스위치 패브릭(100')에 직접 부착된 I/O 유니트 및 I/O 제어기(및 부착된 I/O 장치)를 포함하는 하나 또는 그 이상의 리모트 시스템(150,170,190)과 통신할 수도 있으며, 상기 가상 인터페이스는 1997년 12월 16일 Compap Corp., Intel Corp., 및 Microsoft Corp에서 발표한 "Virture Interface(VI) Architecture Specification, Version 1.0"에 따른다. VI 아키텍쳐는 4개의 기본 구성요소를 포함하고, 이 구성요소로는 스위치 패브릭(100')을 통한 프로세싱 및/또는 전송을 위해 데이터의 이동 오퍼레이션 및이동될 데이터의 위치를 기술하기 위해 작업요청이 포스트되어 있는 가상 인터페이스(VI), 응용 프로그램일 수도 있는 VI 이용자(VI Consumer), VI의 인스턴스화를 야기하는 하드웨어 및 소프트웨어일 수도 있는 VI 제공자(VI Provider), 및완료 큐(CQ)가 있다. VI는 VI 이용자가 VI 제공자를 직접 억세스하도록 해준다. 각 VI 는 통신 종단점을 나타내고, 종단점 쌍은 쌍방향을 지원하도록 논리적으로 접속될 수도 있으며, 데이터 네트워크의 하나 또는 그 이상의 지정 채널을 걸친 점 대 점 전송을 지원한다. VI 아키텍쳐하에서, 호스트-패브릭 어댑터(120) 및 VI 커널 에이전트는 종단점 가상화를 직접적으로 수행하도록 VI 제공자를 구성될 수도 있으며, 멀티플렉싱, 디멀티플렉싱, 및 일반적으로 호스트 오퍼레이팅 시스템(OS) 커널(510) 및 도5에 나타낸 바와 같이 장치 특정 드라이버(4550A∼550N)에 의해 일반적으로 수행되는 데이터 전송 스케줄의 테스크(task)를 포함한다. 그러나, 다른 아키텍쳐가 본 발명의 구현에 이용될 수도 있다. "Virtual Interface(VI) Architecture Specification"에 발표된 용어 "VI"는 "Next Generation Input/Output(NGIO) Specification"에서 발표된 작업 큐 쌍(WQP)으로 알려져 있기도 하며, 또는 "InfiniBandTMArchitecture Specification"에서 발표된 큐 쌍(QP)으로 알려져 있기도 하다. 따라서, "VI", "WQP" 및 "QP"는 이하에서 교체가능하다.
도6은 스위치 패브릭(100')을 통한 데이터 전송을 지원하기 위해 NGIO/InfiniBandTM와 VI 아키텍쳐를 이용하는 호스트 시스템의 일례를 나타낸다. 도6에 나타낸 바와 같이, 호스트 시스템(130)은 도2, 도4a∼도4b, 및 도5에 나타낸 바와 같은 오퍼레이팅 시스템(OS) 스택(500), 호스트 메모리(206), 및 적어도 하나의 호스트-패브릭 어댑터(HCA)(120)를 포함하는 하나 이상의 프로세서(202)에 더하고,, 스위치 패브릭(100')을 통한 데이터 전송을 위해 NGIO/InfiniBandTM와 VI 아키텍쳐에 따라 호스트-패브릭 어댑터(HCA)(120)에 제공된 전송 엔진(600)을 포함할 수도 있다. 하나 또는 그 이상의 호스트-패브릭 어댑터(HCA)(120)는 리둔던시(redundancy)에 이용가능한 포트와 다중 스위치 패브릭의 수를 확장하기 위해 유리하게 이용될 수 있다.
도6에 나타낸 바와 같이, 전송 엔진(600)은, 데이터 이동 오퍼레이션 및 스위치 패브릭(100')을 통한 프로세스 및/또는 전송을 위해 이동될 데이터의 위치를 기술하기 위해 작업 요청("WQE")이 포스트될 수도 있는 작업 큐 쌍(WQP)(610A∼610N)과 같은, 수신 큐(내부로의 "RQ")와 송신 큐(외부로의 "SQ")를 포함하는 쌍으로 형성된 복수의 작업 큐(WQ)를 포함할 수도 있고, 완료 큐(CQ)(620)는 작업 요청 종료를 통지하기 위해 이용될 수도 있다. 또한, 그러한 전송 엔진(600)은 다중호스트-패브릭 어댑터(HCA)(120)로부터 컴플리션(completion)을 처리하기 위해 호스트-패브릭 어댑터(HCA)(120)로부터 떨어져 있는 호스트 메모리(206)의 하드웨어 메모리 구성요소일 수도 있고, 또는 호스트 오퍼레이팅 시스템(OS)의 커널-레벨 장치 드라이버의 일부로서 제공될 수도 있다. 모든 작업 큐(WQ)는 하나 또는 그 이상의 호스트-패브릭 어댑터(HCA)(120)를 통해 스위치 패브릭(100')으로의 물리적 포트를 공유할 수도 있다.
작업 큐 쌍(WQP)의 송신 큐(외부로의 요청(outbound request))는 리모트 VI에로의 일반 메시지 송신을 요청하고, 스위치 패브릭(100')을 통해 타겟 시스템으로부터 특정 메모리 위치로부터 판독될 메시지를 요청하는 리모트 직접 메모리 억세스(세스)에서의 판독, 및 스위치 패브릭을 통해 타겟 시스템의 특정 메모리 위치상에 기록될 메시지를 요청하는 리모트 메모리 억세스(ARDMA)에서의 기록을 요청하는 "개시자"로서 이용될 수도 있다.
작업 큐 쌍(WQP)의 수신 큐(외부로의 요청(outbound request))는 일반 송신으로부터의 메시지에 대한 요청, 및 타겟 시스템으로부터의 RDMA 판독 및 RDMA 기록에 대한 메세시를 수신하는 "응답자"로서 이용될 수도 있다.
이러한 데이터 네트워크의 일례에 있어서, NGIO/InfiniBandTM와 VI 하드웨어 및 소프트웨어는 종종 상이한 시스템에서 스위치 패브릭(100')을 통해 2개의 메모리 영역사이에서 데이터 전송을 지원하기 위해 이용될 수도 있다. 각 호스트 시스템은 메시지 데이터 전송(메시지 송신 오퍼레이션)을 개시하는 소스(개시자) 시스템으로서 동작할 수도 있고, 또는 메시지 통과 동작(메시지 수신 오퍼레이션)의 타겟 시스템으로서 동작할 수도 있다. 이러한 호스트 시스템의 예는 각종 어플리케이션이나 서비스가 제공되어 있는 호스트 서버 또는 저장 및 네트워크용의 I/O 유니트를 포함한다. 작업에 대한 요청(메시지 송신/수신 오퍼레이션 및 RDMA 기록/판독 오퍼레이션 등의 데이터 이동 오퍼레이션)은 주어진 패브릭 어댑터(HCA)에 관련된 작업 큐 쌍(WQP)(610A∼610N)에 포스트될 수도 있고, 하나 또는 그 이상의 채널이 생성 및 관리되어, 요청요청된 오퍼레이션이행될 수 있다.
도7을 참조하면, 본 발명의 실시예에 따라, 스위치 패브릭(100')을 통한 데이터 전송을 지원하기 위해, NGIO/InfiniBandTM아키텍쳐에 따라 구성되고, 호스트 시스템에 설치된 호스트-패브릭 어댑터(120)가 설치된다. 이 예의 호스트-패브릭어댑터(120)는 NGIO/InfiniBandTM채널을 효율적으로 구성 및 관리하고, 호스트 시스템에서의 통신 장치 사이의 데이터 이동오퍼레이션, 또는 상호 직접 접속된 호스트 시스템 사이의 데이터 이동 오퍼레이션, 또는 채널-기반 스위치 패브릭 아키텍쳐를 이용한 데이터 네트워크를 통한 데이터 이동 오퍼레이션을 지원하기 위해, 호스트 시스템을 데이터 네트워크(100)의 채널-기반 스위치 패브릭(100')에 접속하도록 특별하게 설계된다. 게다가, 호스트-패브릭 어댑터(120)는 성능과 효율이 향상되고, 최적화된 하드웨어를 구현하지만, 이에 한정되지 않으며, 최소 하드웨어 투자를 갖는 NGIO/InfiniBandTM어플리케이션은 최소의 파이프라인을 갖는 NGIO/InfiniBandTM의 실행의 제어 및 최소 지연을 갖는 NGIO/InfiniBandTM 데이터 프로세스의 실행의 제어를 포함한다.
도7에 나타낸 바와 같이, 일반적으로 SERDES(시리얼라이저(serializer) / 디시리얼라이저(deserializer)를 통하여 호스트-패브릭 어댑터(120)는 NGIO/ InfiniBandTM프로토콜의 실행을 제어하는 마이크로-제어기 서브시스템(700) 및 인터페이스에 스위치 패브릭(100')을 제공하는 직렬 인터페이스(730)를 포함한다. 이들 마이크로-제어기 서브시스템(700) 과 직렬 인터페이스(730)는 호스트-패브릭 어댑터(120)의 특정한 집적회로(ASCI)로서 구현될 수도 있다.
마이크로-제어기 서브시스템(700)은 호스트 메모리(206)와 직렬 링크 사이에서 NGIO/InfiniBandTM패킷을 생성(build), 송신, 수신, 및 응답하기 위해 이용되는마이크로-엔진(ME)(710)으로서 알려진 하나 또는 그 이상의 독립적으로 프로그램 가능한 직접-메모리-억세스(DMA) 엔진, 및 NGIO/InfiniBandTM및 VI 사항을 구현하는데 필요한 각종 ME 기능, 예컨대 호스트 트랜잭션, 컨텍스트 갱신, 물리적 어드레스 변환, 호스트 설명자 패치(host descriptor fetch), 도어벨 관리, FIFO데이터 이동, 및 완료 큐(CQ) 관리등을 실행하기 위해, 호스트 인터페이스(712), 어드레스 변환 인터페이스(714), 컨텍스트 메모리 인터페이스(716), 로컬 버스 인터페이스(718), 완료 큐/도어벨(completion queue/doorbell) 관리자 인터페이스(720), 및 제1 입력/제1-출력(FIFO) 인터페이스(722) 등의 마이크로-엔진(ME)(710)에 의해 제어되는 특별한 목적의 하드웨어 인터페이스 로직 블럭을 포함한다.
마이크로-엔진(ME)(710)은 NGIO/InfiniBandTM패킷을 송신 및 수신하기 위한 송신 큐(SQ) 및 수신 큐(RQ)를 조정하고, NGIO/InfiniBandTM프로토콜에 따라 완료 큐(CQ)와 채널을 지원하도록 마이크로코드를 실행할 수도 있다. 마이크로-엔진(ME)(710)은 마이크로 레지스터 판독 및 기록의 세트를 통하여 전체 인터페이스 블럭을 제어할 수도 있다. 마이크로 레지스터는 ME 기능의 스피드 향상을 돕기 위해 다중 인터페이스 블럭에 의해 공급된 데이터에 이용될 수 있다. 일반적으로, 송신 큐(SQ)를 제어하는 마이크로-엔진(ME)(710)은 SQ 마이크로-엔진(ME)으로 언급될 수도 있으며, 수신 큐(RQ)를 제어하는 마이클-엔진(ME)(710)은 RQ 마이크로-엔진(ME)으로 언급될 수도 있다.
호스트 인터페이스(712)는 인터페이스를 도4a에 나타낸 바와 같은 호스트 시스템(130)의 I/O 버스(205)나, 도4b에 나타낸 바와 같은 호스트 시스템(130)의 메모리 제어기(204)에 도3b∼도3c에 나타낸 바와 같은 작업 큐 구성요소(WQE)의 형태로 데이터 트랜잭션을 위한 호스트(130)로부터 제공하고, 이는 상이한 요청들 사이의 중재 및 데이터/제어 멀티플렉싱의 제어, 호스트 시스템(130)에 대한 판독 및 기록 트랜잭센, 판독 완료 촉진을 포함한다.
어드레스 변환 인터페이스(714)는, 시스템 메모리 변환 및 투사 테이블(TPT)을 이용하여, 가상 어드레스(어드레스 프로그램 스페이스에 이용됨)의 물리적 어드레스(어드레스 시스템 스페이스에 이용됨)로의 변환을 관리하고, 상이한 트랜잭션 형식(기록, RDMA 판독 및 RDMA 기록)에 있어서 시스템 메모리로의 억세스를 검증하기 위해 어드레스 변환 블럭(ATB)(미도시)에 인터페이스를 제공한다.
한가지 구현예에 있어서, 호스트 메모리(206)는 227(1억2천8백만) 4KByte 페이지까지 포함할 수 있으며, 여기서 각 시스템메모리 페이지는 시스템 메모리 어드레스 스페이스의 16Tera Byte 내에서 모든 곳으로 맵핑될 수 있다. 각 시스템 메모리 페이지는 물리적인 어드레스에 대응하는 4Kbyte 페이지수, 메모리 보호 속성(RDMA 기록 가능, RDMA 판독 가능, 로컬 메모리 기록 가능), 및 그 값이 트랜잭션 요청의 개시자에 할당된 값과 일치하는 보호 도메인(PD)과 같은 정보를 포함하는 변환 및 투사 테이블(TPT) 내의 엔트리에 의해 억세스될 수도 있다.
컨텍스트 메모리 인터페이스(CMI)(716)는 "VI"에 대한 필수 컨텍스트 정보또는 NGIO/InfiniBandTM패킷의 송신 및 수신에 이용된 작업 큐 쌍(WQP)을 제공하기 위해 컨텍스트 관리자(미도시)로 인터페이스를 제공한다. 컨텍스트 정보는 모든 형태의 데이터 전송 오퍼레이션에 필요한 모든 제어, 상태 및 정보 를 포함한다. 컨텍스트 메모리 인터페이스(716)는 또한 호스트 소프트웨어에 인터페이스를 제공하고, 채널 구성을 설명하고 채널 오퍼레이션을 개시하는 상이한 종류의 메모리 맵 레지스터 세트를 나타낸다. 예컨대, 메모리 맵 레지스터 세트는, 송신 큐(SQ) 및 작업 큐(WQ)의 연상에 영향을 주는 글러벌 HCA 컨텍스트 레지스터, 채널의 설정을 제어하는 작업 큐 쌍(WQP) 레지스터, 및 호스트 메모리(206)내의 완료 큐(CQ)의 위치 및 길이를 나타내고, 완료 큐(CQ) 엔ㅌ리가 기록될 때 인터럽트가 생성되는 것을 제어하는 완료 큐(CQ) 레지스터를 포함할 수도 있다.
글러벌 버스 인터페이스(718)는 시스템 억세스 가능한 컨텍스트 접속 및 채널 오퍼레이션을 지원하고, 마이크로코드의 로딩을 포함하는 마이크로-엔진( ME)(710)에 대해 적합한 형태로 신호 데이터를 튜닝하기 위해 로컬 데이터 버스에 인터페이스를 제공한다.
완료 큐/도어벨 관리자 인터페이스(720)는 완료 큐(CQ) 엔진, 도어벨 관리자 및 VI 아키텍쳐의 메모리 등록 법칙에 인터페이스를 제공한다. 완료 큐(CQ) 엔진(미도시)은 글러벌 이벤트 및 완료 큐(CQ) 엔트리의 포스팅을 야기한다. 도어벨 관리자(미도시)는 외부 작업 요청 수의 트랙을 유지시킨다.
FIFO 인터페이스(722)는 직렬 인터페이스(730)에 인터페이스를 제공한다.FIFO 인터페이스(722)는 수신 FIFO를 통해 스위치 패브릭(100')으로부터 요청 및/또는 데이터 패킷을 수신하도록 배치된 수신 FIFO 인터페이스(722A) 및 전송 FIFO와 직렬 인터페이스(730)를 통해 스위치 패브릭(100')에 요청 및/또는 데이터 패킷을 송신하도록 배열된 송신 FIFO 인터페이스(722B)를 포함한다.
수신 FIFO 인터페이스(722A)는 직렬 인터페이스(730)를 통해 들어오는 데이터 패킷을 처리하기 위해 마이크로-엔진(ME)(710)에 의해 이용될 수도 있고, 여기서는, 도3a에 나타낸 바와 같은 각 패킷의 헤더를 에러 검사하고, 패킷을 호스트 인터페이스(172)에 패스하기 전에, 추가적인 데이터가 판독될 필요가 있는지를 검사한다. 송신 FIFO 인터페이스(722B)는 패킷을 생성하여 직렬 인터페이스(730)를 통해 순차적으로 전송하도록 마이크로-엔진(ME)(710)에 의해 이용될 수도 있다.
게다가, 스케줄러(미도시)는 차기의 가상 인터페이스(VI)를 컨텍스트 메니저에 예정하고, 작업 큐 쌍(WQP)의 송신 큐(SQ) 및 수신 큐(RQ)와 관련된 데이터 패킷에 대한 트래픽 우선을 지원하기 위해 포함될 수도 있다. 이러한 스케줄러에는 예정된 기능을 위해 메모리 인터페이스(716), 로컬 버스 인터페이스(718), 및 완료 큐/도어벨 관리자 인터페이스(720)를 갖는 인터페이스가 제공될 수 있다.
도8은 본 발명의 실시예에 따른 최소 하드웨어 투자에 의한 성능 효율에 있어서 복수의 개별적인 오퍼레이션을 포함하는 송신 큐 및 수신큐 오퍼레이션 중 하나를 조정하도록 구성된 마이크로-엔진(ME)(710)의 예를 나타낸다. 도8에 나타낸 바와 같이, 마이크로 엔진(ME)(710)은 하나 또는 그 이상의 멀티플렉서(MUX)(810), 산술 논리 유니트(ALU)(820), 명령어 디코더(830), 마이크로-순서기(Micro-Sequencer)(840), 및 명령어 메모리(850)를 포함한다. 명령어 메모리(850)는 ME 명령어에 대한 다운로드 가능한 마이크로 코드를 저장할 수도 있다. 데이터 MUX(810)는 ME 명령어에 기반한 적절한 인터페이스 데이터를 공급할 수도 있다. 산술 논리 유니트(ALU)(820)는 수학적 오퍼레이션, 논리적 오퍼레이션, 쉬프트 오퍼레이션 모두를 수행할 수도 있다. 명령어 디코더(830)는 시스템 제어를 마이크로-순서기(840)에 제공하여 차기의 명령어 또는 실행될 어드레스를 결정하고, 명령어 메모리(850)로부터 ME 명령어를 실행하고, ALU(820)의 기능을 판정한다. 마이크로-순서기(840)는 ME 명령어의 순서를 검사하여 어떤 차기 명령어가 명령어 디코더(820)에 의해 실행될 것인지를 판정한다.
데이터 MUX(810), 산술 논리 유니트(ALU)(820), 명령어 디코더(830), 마이크로-순서기(840), 및 마이크로-엔진(ME)(710)의 예에서의 명령어 메모리(850)의 한가지 구현예를 도9를 참조하여 이하에 설명한다.
데이터 MUX(810) : 2개의 32-비트 버스(A-버스, B-버스) 입력을 ALU(820)에 공급하는 입력 MUX-A(810A)와 입력 MUX-B(810B)의 2개의 입력 데이터 MUX가 있다. A-버스(812)는 ME 명령어의 목적지 필드의 디코드에 기초한 데이터를 ALU(820)에 공급할 수도 있다. 마찬가지로, B-버스는 ME 명령어의 소스 필드의 디코드에 기초한 데이터를 ALU(820)에 공급할 수 있다. 입력 데이터 MUX(810A,810B)에 대한 데이터 입력은 호스트 인터페이스(712), 어드레스 변환 인터페이스(714), VI 컨텍스트 메모리 인터페이스(716), 로컬 버스 인터페이스(718), 완료 큐/도어벨 관리자 인터페이스(720), 및 제1-입력/제1-출력(FIFO) 인터페이스(722)와 같은 ME 기능을 제어할 필요가 있는 외부 인터페이스 블럭에 의해 공급될 수도 있다. 입력 MUX-B(810B)는 2:1 멀티플렉서(MUX)(860)와 논리 AND 게이트(870)를 통하여 ME 명령어로부터의 즉시 데이터(Immediate Data)를 포함할 수도 있다. 입력 MUX-A(810A)와 MUX-B(810B)에 대한 선택을 생성하는 목적지/소스 필드의 디코드는 명령어 디코더(830)에 의해 실행될 수도 있다.
산술 논리 유니트(ALU)(820): ALU(820)는 2개의(A 및 B) 32-비트 데이터 이력을 포함하며, ME 명령어의 OpCode에 기초한 기능을 실행한다. 지원되는 기능은 Add, Subtract, OR, XOR, AND, 비교(Compare), 우회전(Rotate Right), 좌측 쉬프트(Shift Left), 비트 테스트, 및 이동(통과)을 포함하지만, 이에 한정되는 것은 아니다. 명령어 디코더(830)는 ME 명령어를 디코드하고, 기능 선택 신호를 ALU(830)에 제공한다. 선택된 기능을 실행한 후, ALU(820)은 결과에 기초하여 플래그(flag)를 설정한다. 플래그는 예컨대 제로(zero) 및 캐리(Carry)를 포함할 수도 있다. 산술 기능의 결과가 제로라면, Z 플래그가 설정될 수도 있다. 반대로, 산술 기능이 캐리아웃(carry out)으로 결과되면, C 플래그가 설정될 수도 있다. ALU 기능의 결과는 Z 플래그의 상태에 영향을 줄 수도 있다.
명령어 메모리(850): 명령어 메모리(850)는 2:1 멀티플렉서(MUX)(860)와 논리적 AND 게이트(870)를 통해 ME 명령어를 제공하기 위한 마이크로코드를 저장하기 위해 제공된 SRAM(static random-access-memory)일 수도 있다. 마이크로코드는 장래의 NGIO/InfiniBandTM에서 다운로드 가능한 SRAM으로 변경될 수도 있다. SRAM은2K × 44 비트를 포함할 수도 있고, 로컬 버스를 통해 로드될 수도 있다. 각 ME 명령어는 22 비트일 수도 있으며, 예컨대, 2개의 명령어가 SRAM의 각 워드에 허용될 수도 있다. 32 비트 즉시 데이터를 갖는 명령어는 2개의 명령어에 상응하는 44 비트를 차지한다. SRAM에 의해 공급된 마이크로코드는 상이한 코드 포맷으로 이용될 수도 있다.
마이크로-순서기(840)는 ME 명령어의 디코드 및 플래그 레지스터 정보로부터 마이크로-엔진(ME)의 어드레스 시퀀스를 결정할 수도 있다. 차기의 어드레스 시퀀스는 8비트의 제어 필드 정보(예컨대, 8개의 제어 필드 신호)를 마이크로-순서기(840)에 패스하는 명령어 디코더(830)에 의해 제어될 수도 있다.
도7에 나타낸 바와 같은 호스트-패브릭 어댑터를 구현하는 주요 시도는 NGIO/InfiniBandTM패킷 프로세스에서의 마이크로-엔진(ME)(710)의 성능과 리소스를 극대화하고, 전체 전송율을 유지하면서 메모리 밴드폭을 최적화하는 것이다. 전문화된 하드웨어 어시스트(HWA) 로직은, 그들 각각의 인터페이스 기능을 어시스트하고, NGIO/InfiniBandTM패킷 프로세스에 있어서 하드웨어 계산으로부터 마이크로-엔진(ME)(710)의 오프로딩(offloding)을 돕기 위해, 호스트 인터페이스(712), 어드레스 변환 인터페이스(714), VI 컨텍스트 메모리 인터페이스(716), 로컬 버스 인터페이스(718), 완료 큐/도어벨 관리자 인터페이스(720) 및 FIFO 인터페이스(722)와 같은 하나 또는 그 이상의 특정 목적의 하드웨어 인터페이스 블록에 내포될 수도 있다. NGIO/InfiniBandTM패킷의 송신하고 수신하는, 컨텍스트 메모리인터페이스(716)의 내부 컨텍스트 메모리에 저장되는 컨텍스트 정보는 ME 사이클 동안 메모리 밴드폭을 최적화하고, 전체 데이터 전송율을 유지하는 방식으로 갱신될 필요가 있다. 일반적으로, 그러한 컨텍스트 정보는 모든 제어, 상태 및 모든 형태의 데이터 전송에 필요한 정보를 제공하기 위해 갱신될 수 있다. 컨텍스트 메모리는 컨텍스트 정보의 최종값으로 언제나 업데이트 되며, 마이크로-엔진(ME)(710)은 작업(메시지 송신/수신 오퍼레이션과 같은 데이터 이동 오퍼레이션 및 RDMA 판독/기록 오퍼레이션)을 하기 위해 그 컨텍스트 정보의 최종값을 억세스한다.
도10을 참조하면, 본 발명의 실시예에 따라 호스트 메모리(206)에서의 외부 RDMA 오퍼레이션에 대응하는 리모트 키(Rkey)의 정당성을 검사하는 리모트 키 관리자 블럭(RMB)의 예가 도시되어 있다. 리모트 키(Rkey)는 일반적으로 도3c∼도3d를 참조하여 설명한 바와 같은 설명자(WQE)의 형태로 요청 응답 메시지로 되고, 가상 어드레스를 물리적 어드레스 변환하는 적당한 페이지를 RDMA 판독/기록 오퍼레이션을 대기시키는 어드레스 변환 블럭(ATB)으로부터 식별하기 위해 마이크로-엔진(ME)(710)에 의해 이용된다. 리모트 키(Rkey)는 바인드 작업 요청(Bind work request) 또는 작업 큐 쌍(WQP)의 송신 큐(SQ)에 포스트된 설명자(WQE)를 이용하여 무효로 될 수 있다. 상술한 바와 같은 일반적인 설명자(WQE)는 일반적인 송신, RDMA 기록 및 RDMA 판독과 같은 일반적인 데이터 전송 오퍼레이션에 포스트된 작업 요청이다. 일반적인 설명자(WQE)와는 달리, 바인드 설명자(Bind Descriptor)는 예컨대 이동 또는 RDMA 데이터 전송을 제한하기 위해 송신 큐(SQ)상의 호스트 메모리(206)의 특정 메모리 영역 내의 "메모리 윈도우"의무효화와 같은 비 데이터 오퍼레이션에 포스트된 작업 요청이다. 메모리 영역은 호스트 메모리(206)의 범용 블럭이고, 호스트-패브릭 어댑터(120)이 억세스할 수 있는 4Kbyte(메모리 페이지에 대응함) 보다 작지 않다. 메모리 영역과는 반대로, "메모리 윈도우"는 5Kbyte와 같은 메모리 영역의 작은 범위를 나타낸다. 바인드 설명자(WQE)는 소프트웨어가 "메모리 윈도우"를 완전히 닫아(무효화하여), 작업 큐 쌍(WQP)이 그 "메모리 창"을 억세스하거나, 호스트 메모리(206)의 상이한 메모리 영역으로 "메모리 창"을 이동(확대 또는 축소)시키는 것을 방지한다.
도10에 나타낸 바와 같이, 리모트 키 관리자 블럭(RMB)(1010)은 작업 큐 쌍(WQP)의 송신 큐(SQ)에 대한 마이크로-엔진(ME)(710A), 및 작업 큐 쌍(WQP)의 수신 큐(RQ)에 대한 마이크로-엔진(ME)(710B)에 각각 대응하는 송신 큐(SQ)(1010A) 및 수신 큐(RQ)(1010B)에 대한 분리된 RMB(separate RMB)를 포함할 수도 있다.
SQ RMB(1010A)는 SQ 마이크로 엔진(ME)(710A)에 인터페이스를 제공하는 마이크로-엔진 인터페이스("ME-I/F")(1020A) 및 RQ RMB(1010B)에 인터페이스를 제공하는 RMB 인터페이스("RMB-I/F")를 포함한다.
RQ RMB(1010B)는 MF 판독과 기록을 허용하기 위해 RQ 마이크로-엔진(ME) (710B)에 인터페이스를 제공하는 마이크로-엔진 인터페이스(ME-I/F); SQ RMB(1010A)로부터 키 무효화 요청을 수락하고, 현재 사용중(busy)인지 아닌지를 SQ RMB(1010A)에 다시 기록하기 위해 SQ RMB에 인터페이스를 제공하는 RMB 인터페이스(1030B) 및 리모트 키(Rkey)를 저장하는 리모트 키 메모리(1040)를 포함한다. 이러한리모트 키 메모리(1040)는 128×28의 RAM(Random-access-Memory)에 대응할 수도 있으며, 아래와 같이 구성된다.
VI#0 또는 WQP# 0 패리티 보호 도메인(15:0)
패리티 유효 리모트 키 0(26:0)
패리티 유효 리모트 키 1(26:0)
패리티 유효 리모트 키 2(26:0)
패리티 유효 리모트 키 3(26:0)
VI#1 또는 WQP#1 컨텐츠
Y
chleo VI# 또는 최대 WQP# 컨텐츠
보호 도메인(PD)은 완료 큐(CQ)를 포함하는 작업 큐(WQ)와 관련된 리모트 키 메모리(1040)에 저장된 정보이다. 보호 도메인(PD)의 목적은 그 작업 큐(WQ)를 그 보호 도메인(PD)에 등록된 호스트 메모리(도6)의 메모리 위치만으로 한정하는 것이다. 모든 완료 큐(CQ)는 생성시 할당된 보호 도메인(PD)을 갖는다. 완료 큐(CQ)로 할당된 보호 도메인(PD)은, 메모리의 새로운 페이지를 억세스하기 위해 완료 큐(CQ)에 대한 순서로, 변환 및 보호 테이블(TPT)의 변환 엔트리에 의해 복원된 보호 도메인(PD)과 일치해야만 한다. 보호 도메인(PD)이 일치하지 않는다면, 메모리의 그 페이지가 억세스할 수 없고, 완료 큐(CQ)는 에러를 생성한다. 마찬가지로, 이벤트 큐 역시 가상 어드레스를 물리적 어드레스로 변환하기 위한 보호 도메인(PD)을 이용한다.
SQ 마이크로-엔진(ME)(710A)은 이하의 단계를, 즉
(1) "PD" 레지스터를 보호 도메인 (이는 PD 비교를 요구함)에 기록하는 단계; (2) 리모트 키 레지스터를 기록하는(RQ RMB(1010B))에 대한 요청을 생성함) 단계 및 (3) 오퍼레이션의 종료시 결정을 위해 RQ RMB(1010B)로부터 비지 비트(busybit)를 폴링(polling)하는 단계를 따라 키 무효화를 요청할 수도 있다.
RQ 마이크로-엔진(710B)은, ME가 최고의 우선순위를 갖기 때문에, 모든 소정 시간에서 리모트 키(Rkey)를 판독 및 기록할 수 있으며, 따라서 상태 메커니즘(state machine)에 의한 리모트 키 메모리(1040)의 판독 및 기록은 ME 억세스 동안 설정된다.
RQ 마이크로-엔진(ME)(710B)은 호스트 메모리(206)내의 보호 도메인(PD)을 초기화할 수도 있다. 제로 "0"의 PD는 PD가 무효임을 나타낸다. Rkey는 대기중인 RDMA 오퍼레이션에 대응한다. RQ 마이크로-엔진(ME)(710B)은 처리할 SQ RAM(1010A)인 Rkey 상의 유효 비트를 설정한다.
이어서, SQ 마이크로-엔진(ME)(710A)은 RMB 레지스터에 SQ 개시 비트를 기록함으로써 RMB 오퍼레이션을 시작한다. SQ RMB(1010A)는 VI "0"으로부터 시작하는 리모트 키 메모리(1040)를 통해 진행하기 시작한다. SQ RMB(1010A)는 리모트 키 메모리 "PD"가 SQ 공급 "PD"(SQ supplied "PD")와 일치하는지를 검사한다. 리모트 키 메모리 "PD"가 SQ 공급 "PD"와 일치하지 않는다면, SQ RMB(1010A)는 그 VI에 대한 Rkey의 프로세스를 무시한다. 리모트 키 메모리 "PD"가 SQ 공급 "PD"와 일치한다면, 이어서, SQ RMB(1010A)는 리모트 키 메모리(1040)로부터 리모트 키 "0"을 판독한다. 메모리 리모트 키 "0"이 일치하지 않으면(유효 비트가 참이 아니고, 또는 유효 비트가 참이고, 메모리 리모트 키 "0"이 SQ Rkey(SQ 공급키)에 대응하지 않음), SQ RAM(1010A)는 다음번 Rkey를 검사하기 위해 이동한다. 메모리 리모트 키 "0"이 SQ 공급 키(SQ supplied Key)와 일치하면(유효 비트가 참이고, 메모리 리모트 키 0 = SQ Rkey), SQ RMB(1010A)는 Rkey "0"에 대응하는 유효 비트를 리모트 키 메모리(1040)에서 소거한다.
리모트 키 메모리(1040)는 단일 판독 및 단일 기록 포트 메모리일 수도 있다. SQ RMB(1010A)가 리모트 키 메모리(1040)를 통한 워킹(walking)을 시작하자 마자, RQ는 리모트 키 메모리(104)를 판독 및 기록할 수 있다. 따라서, SQ RMB(1010A)는 수신 큐(RQ)가 리모트 키 메모리(1040)를 판독하고자 시도할 때 판독 메모리 억세스를 회피(hold off)하고, 수신 큐(RQ)가 리모트 키 메모리(1040)에 기록하고자 시도할 때 그러한 클럭 사이클 동안 기록 억세스를 회피한다.
SQ RMB(1010A)가 모든 VI에 대한 모든 Rkey를 검사하기 위해 전체 키 메모리(1040)를 지나자 마자, 완료 신호(Done signal)가 송신 큐(SQ)에 명시(assert)될 수도 있다. 이어서, SQ RMB(1010A)는 송신 큐(SQ)에 의한 시작을 기다린다.
주의해야할 상황으로는, 판독 및 기록이 동일한 어드레스의 리모트 키 메모리(1040)에 발생할 때이다. 이러한 상황에서, 판독 데이터는 유효하지 않다. 따라서, 판독 어드레스가 기록 어드레스와 동일하고, 리모트 키 메모리(1040)가 기록되고, 동일한 클럭 사이클에서 판독될 때, 기록 데이터는 메모리 기록 데이터 대신에 판독 버스에 직접적으로 패스된다.
도11은 본 발명의 실시예에 따른 높은 레벨의 리모트 키 검증의 예를 나타낸다. 리모트 키 검증은 리모트 키 메모리(1040)내의 대기중인 RDMA 오퍼레이션에 대응하는 리모트 키(Rkey)의 정당성을 검사하기 위해 작업 큐 쌍(WQP)의 송신 큐(SQ)에 의해 활성될 수도 있다. 상술한 바와 같은 그러한 리모트 키(Rkey)는 가상 어드레스와 함께 이용되어, 도4a∼도4b에 나타낸 바와 같은 호스트 시스템(130)의 로컬 메모리(206)를 억세스하는 리모트 시스템에 대한 인증을 설명한다.
도11에 나타낸 바와 같이, 마이크로-엔진(ME)(710)의 마이크로코드는 "설명자"(WQE)의 형태로 있는 작업 요청이 송신 큐(SQ)에 포스트되었는지를, 즉 블록(1110)에 있어서 송신 큐(SQ)에서 처리되어질 임의의 VI가 있는지를 결정한다. 설명자(WE)는 일반적인 송신, RDMA 기록 및 RDMA 판독 등의 통상적인 데이터 전송 오퍼레이션 동안 일반적으로 포스트된다. 포스트된 작업 요청이 없거나 송신 큐(SQ)에서 처리될 VI가 없다면, 마이크로-엔진(ME)(710)은 유휴(idle) 상태를 유지한다.
그러나, 포스트된 작업 요청이 있거나 또는 송신 큐(SQ)에서 처리될 VI가 있다면, 블록(1112)에서 마이크로코드는 포스트된 설명자가 바이드 설명자인지를 판정한다. 바인드 설명자는 예컨대 송신 큐(SQ)상의 호스트 메모리(206)의 메모리영역내의 "메모리 윈도우"의 이동 또는 무효화와 같은, 비 데이터 오퍼레이션을 위한 포스트된 작업 요청으로, RDMA 데이터 전송을 제한한다.
포스트된 설명자가 바이드 설명자가 아니라면, 블록(1114)에서 마이크로코드는 일반적인 송신, RDMA-기록 및 RDMA-판독과 같은 일반적인 데이터 전송 오퍼레이션의 처리를 허용한다. 일반적으로, 도7에 나타낸 바와 같은 전체 마이크로-제어기 서브시스템(700)은 일반적인 송신, RDMA-기록 및 RDMA-판독과 같은 일반적인 데이터 전송 오퍼레이션을 처리하도록 동작한다. 그러나, 포스트된 설명자가 바이드 설명자라면, 블록(1116)에서 마이크로코드는 "메모리 윈도우"가 무효화되었는지를 판정한다.
"메모리 윈도우"가 무효화되지 않으면, 블록(1118)에서 마이크로코드는 "메모리 윈도우"가 이동된 것으로 기록하고(항상 참임), 블록(1120)에서 "메모리 윈도우"를 이동시키기 위해 호스트 메모리(206)에 대한 기록의 수행을 진행한다. 그러나, "메모리 윈도우"가 무효화되면, 블록(1122)에서 어드레스 변환 블록(ATB)(미도시)은 "메모리 윈도우"의 제거를 위해 호스트 메모리(206)에 대한 기록의 수행을 진행한다.
그 다음, 블록(1124)에서 RMB(1010)는 "메모리 윈도우"를 이용하는 모든 대기중의 RDMA 오퍼레이션을 검색하기 위해 활성화될 것이다. 다음으로, 블록(1126)에서 RMB(1010)는 이 "메모리 윈도우"에 이용된 리모트 키(Rkey)를 식별한다. 이 "메모리 윈도우"에 이용된 리모트 키(Rkey)가 식별되면, 블록(1128)에서 RMB(1010)는 리모트 키(Rkey)의 무효화를 진행하고, 이는 블록(1130)에서 모든 리모트 키(Rkey)가 무효화될 때까지 계속된다. 리모트 키(Rkey)가 식별되지 않으면, 블록(1130)에서 RMB(1010)는 모든 리모트 키(Rkey)의 무효화가 이루어지고, 유휴상태로 복귀한다. 모든 리모트 키(Rkey)가 무효화되지 않으면, RMB(1130)는 블록(11254)으로 복귀하여, "메모리 윈도우"를 이용하는 모든 대기중의 RDMA 오퍼레이션을 모든 리모트 키(Rkey)가 "무효화"로 마킹될 때까지 검색하고, 따라서 새로운 리모트 키(Rkey) 또는 새로운 작업 큐 쌍(WQP)이 들어올 수 없고, 그 "메모리 윈도우"를 이용할 수 없다.
도12는, 도11에서 리모트 키 관리자 블록(RMB)(1010)에 의해 수행됨에 따라, 블록(1124∼1130)에서 보여지는 개별적인 키 검증의 예를 나타낸다. InfiniBandTM아키텍쳐에 따르면, 256개의 "VI"("WQP" 또는 "OP"로 알려짐)가 있을 수 있다. 모든 256개의 VI는 검증을 위해 메모리 Rkey(리모트 키 메모리(1040)로부터의 리모트 키)와 SQ Rkey(송신 큐로부터의 리모트 키)를 개별적으로 비교할 필요가 있다. 그러나, VI의 수는 그것으로 한정되는 것은 아니다. "VI"가 호스트 패브릭 어댑터(120)에 의해 지원되는 한 모든 수의 "VI"를 이용할 수 있다.
도12에 나타낸 바와 같이, RMB(1010)는 SQ 마이크로-엔진(ME)(710A)이 키 검증을 요청할 때까지 유효상태로 남는다. 그 사이에, RQ 마이크로-엔진(ME)(710B)이 기동되어 희망에 따라 리모트 키(Rkey)를 판독 및 기록할 수 있다. RQ 판독인 경우, 블록(1210)에서 RMB(1010)는 예컨대 일클럭과 같은 소정 시간을 대기한다.
RQ 판독 활성화가 없거나, 또는 수신 큐(RQ)상에 더 이상의 활성화가 없다면, 블록(1212)에서, RMB(1010)는 메모리 PD(리모트 키 메모리(1040)로부터의 PD) 및 SQ 공급 PD(송신 큐로부터의 PD)를 비교하는 보호 도메인(PD) 비교를 개시한다. 메모리 PD가 SQ 공급 PD와 일치하지 않으면, RMB(1010)는 그 VI에 대한 Rkey의 프로세스를 무시하고, 블록(1214)에서 모든 VI가 처리되었는지의 여부를 판정하는 단계가 진행된다. 메모리 PD가 SQ 공급 PD와 일치하지 않으면, 모든 Rkey가 일치하지 않기 때문이다. 결과적으로, RMB(1010)는 시간과 클럭 사이클을 절약하기 위해 그 VI에 대한 Rkey의 프로세스를 무시할 수도 있다.
그러나, 메모리 PD가 SQ 공급 PD와 일치한다면, RMB(1010)는 작업 큐 쌍(WQP)가 Rkey를 이용할 수 있음을 알게 된다. 이어서, RMB(1010)는 블록(1216∼1230)에 도시한 바와 같은 그 특정 VI와 관련된 모든 리모트 키(Rkey)에 대한 리모트 키의 순차적인 판독 및 비교를 시작한다. 각 VI에 대해, 각 작업 큐 쌍(WQP)의 한번의 진행에서는 3개의 RDMA 판독 및 1개의 RDMA 기록을 포함한 4개의 리모트 키가 관련되어 있다. 그러나 각 VI에 관련된 리모트 키의 수는 4개로 한정되는 것은 아니다. 이 실시예의 구현에서는 4개의 리모트 키가 각 VI에 관련되어 있기 때문에, RMB(1010)는 키 검증을 위해 4개의 상이한 리모트 키 비교를 순차적으로 개시해야만 한다.
보다 상세하게, 블록(1216)에서 RMB(1010)는 리모트 키 메모리(1040)로부터의 리모트 키 "0"을 SQ 공급 키와 비교한다. 메모리 리모트 키 "0"이 일치하지 않으면(유효 비트가 참이 아닌 경우 또는 유효비트가 참이고 메모리 리모트 키 "0"이 SQ Rkey에 대응하지 않는 경우), RMB(1010)는 다음의 Rkey를 검사하기 위해 이동한다. 그러나, 메모리 리모트 키 "0"이 SQ 공급 키와 일치하면(유효 비트가 참이고 메모리 리모트 키 0 = SQ Rkey인 경우), 블록(1218)에서 RMB(1010)는 리모트 키 메모리(1040)내의 Rkey "0"에 대응하는 유효 비트를 소거한다.
다음으로, 블록(1220)에서 RMB(1010)는 리모트 키 메모리(1040)로부터의 리모트 키 "1"를 판독하여 SQ 공급 키와 비교한다. 메모리 리모트 키 "1"이 SQ 공급 키와 일치하지 않으며, RMB(1010)는 다음의 Rkey를 검사하기 위해 이동한다. 메모리 리모트 키 "1"이 SQ 공급 키와 일치하면, 블록(1222)에서 RMB(1010)는 리모트키 메모리내의 Rkey "1"에 대응하는 유효 비트를 소거한다.
마찬가지로, 블록(1224)에서 RMB(1010)는 리모트 키 메모리(1040)로부터의 리모트 키 "2"를 판독하여 SQ 공급 키와 비교한다. 메모리 리모트 키 "2"가 SQ 공급 키와 일치하지 않으며, RMB(1010)는 다음의 Rkey를 검사하기 위해 이동한다. 메모리 리모트 키 "2"가 SQ 공급 키와 일치하면, 블록(1226)에서 RMB(1010)는 리모트 키 메모리내의 Rkey "2"에 대응하는 유효 비트를 소거한다.
마지막으로, 블록(1228)에서 RMB(1010)는 리모트 키 메모리(1040)로부터의 리모트 키 "3"를 판독하여 SQ 공급 키와 비교한다. 메모리 리모트 키 "3"이 SQ 공급 키와 일치하지 않으며, 블록(1214)에서 모든 VI가 처리되었는지의 여부를 판정하기 위해 이동한다. 메모리 리모트 키 "3"이 SQ 공급 키와 일치하면, 블록(1230)에서 RMB(1010)은 리모트 키 메모리내의 Rkey "3"에 대응하는 유효 비트를 소거하고, 모든 VI가 블록(1214)에서 처리되었는지의 여부를 결정하는 단계를 진행한다.
도13은 본 발명의 실시예에 따른 일반적인 리모트 키 관리자 블럭(RMB)의 타이밍 도의 예를 나타낸다. 보다 상세하게, 도13(a)는 예컨대 모든 8ns에서의 타이밍 도의 예를 나타낸다. 도13(b)는 송신 큐(SQ)로부터 SQ 개시를 나타내는 타이밍 도의 예이다. 도13(c)는 송신 큐(SQ) 완료에 대응하는 타이밍 도의 예이다. 도13(d)는 본 발명의 실시예에 따른 RMB(1010)의 현재 상태의 타이밍 도의 예이다. 도13(e)는 현재의 "VI" 또는 처리중인 작업 큐 쌍(WQP)의 타이밍 도의 예이다. 도13(f)는 본 발명의 실시예에 따른 RMB(1010)의 메모리 판독(rmb_mem_re)의 타이밍 도의 예이다. 도13(g)는 본 발명의 실시예에 따른 RMB(1010)의 메모리 판독 어드레스(rmb_mem_re_addr)의 타이밍 도의 예이다. 도13(h)는 본 발명의 실시예에 따른 메모리 판독 데이터(rmb_mem_re_data)의 타이밍 도의 예이다.
이 경우, 단일 "VI"에 대한 모든 Rkey의 RMB 프로세스와 다음번 VI로의 전환을 설명한다. 메모리 PD는 SQ 공급 PD와 일치하는 것으로 가정한다. 메모리 Rkey는 SQ 공급 Rkey와 일치하지 않는다고 가정한다.
이 오퍼레이션을 한 사이클씩 이하에 설명한다.
도13에 나타낸 바와 같이, RMB(1010)는 사이클(#1) 및 사이클(#2) 동안 유휴상태에 있다. 사이클(#3)에서, 송신 큐(SQ)가 도13(b)에 나타내 바와 같은 RMB 오퍼레이션을 시작하면, RMB(1010)는 도13(f)에 나타낸 리모트 키 메모리(1040)에 판독 인에이블(Read Enable)을 표명(assert)하고, 도13(g)에 나타낸 바와 같이, 제1 VI, 즉 VI "0"에 대한 보호 도메인(PD)을 판독하기 위해 정확한 어드레스를 드라이브한다.
사이클(#4)에서, 메모리 PD는 SQ 공급 PD와 비교된다. 일치한다면, RMB(1010)는 그 VI에 대응하는 리모트 키(Rkey)의 판독을 시작한다. 이어서, 도13(c)에 나타낸 바와 같이 송신 큐(SQ)에 대한 완료 표시(완료 신호)가 소멸(de-assert)된다.
사이클(#5,#6,#7)에서, 리모트 키 메모리(1040)로부터의 Rkey("0","1","2")가 SQ 공급 Rkey와 일치하지 않으면, RMB(1010)는 리모트 키 메모리(1040)의 판독을 계속한다.
사이클(#8)에서, 리모트 키 메모리(1040)로부터 판독된 Rkey(3)가 SQ 공급Rkey와 일치하지 않으면, R현재 VI Rkey 프로세스가 종료된다. 리모트 키 메모리(104)에 대한 판독 인에이블은 도13(f)에 나타낸 바와 같이 RMB(1010)에 의해 소멸된다.
사이클(#9)에서, RMB(1010)는 모든 VI가 처리되었는지 검사한다(도12에서의 블록(1214) 참조). 모든 VI가 처리되지 않았다면, 수신 큐(RQ)는 리모트 키 메모리(1040)를 억세스하지 않고, RMB(1010)는 다음번 VI, 즉 VI "1"에 대한 보호 도메인(PD)의 판독을 시작한다.
사이클(#10)에서, 메모리 PD는 사이클(#4)에서 설명한 동일한 방법으로 SQ 공급 PD와 재차 비교된다. 그러나, VI 번호가 증가되었다.
사이클(#11,#12,#13)에서, 리모트 키 메모리(1040)로부터의 Rkey("0", "1", "2")가 사이클(#5,#6,#7)을 참조하여 설명한 동일한 방법으로 SQ 공급 Rkey와 일치하지 않으면, RMB(1010)는 리모트 키 메모리(1040)의 판독을 계속한다.
도14는 본 발명의 실시예에 따른 일반적인 키 관리자 블록(RMB)의 종료를 나타내는 타이밍 도의 예이다. 예컨대, 도14(a)는 매 8ns에서의 클럭 사이클의 타이밍 도의 예이다. 도14(b)는 송신 큐(SQ)로부터의 SQ 개시를 나타내는 타이밍 도의 예이다. 도14(c)는 송신 큐(SQ)에 대한 완료에 대응하는 타이밍 도의 예이다. 도14(d)는 본 발명의 실시예에 따른 RMB(1010)의 현재 상태의 타이밍 도를 나타내는 예이다. 도14(e)는 현재의 "VI" 또는 처리중인 작업 큐 쌍(WQP)의 타이밍 도의 예이다. 도14(f)는 본 발명의 실시예에 따른 RMB(1010)의 메모리 판독(rmb_mem_re)의 타이밍 도의 예이다. 도14(g)는 본 발명의 실시예에 따른 RMB(1010)의 메모리판독 어드레스(rmb_mem_re_addr)의 타이밍 도의 예이다. 도14(h)는 본 발명의 실시예에 따른 메모리 판독 데이터(rmb_mem_re_data)의 타이밍 도의 예이다.
이 경우, 마지막 VI에 대한 마지막 2개의 키의 RMB 프로세스와 유휴상태로의 전환을 설명한다. 메모리 Rkey는 SQ 공급 Rkey와 일치하지 않는다.
도14에 나타낸 바와 같이, RMB(1010)는 사이클(#1,#2,#3) 동안 VI(Max) 프로세스의 중간에 있으며, RMB(1010)는 리모트 키 메모리(1040)로부터 순차적으로 판독된 Rkey("2") 및 Rkey("3")가 도14(h)에 나타낸 바와 같이 VI(Max)에 대한 SQ 공급 Rkey와 일치하지 않는지를 판정한다.
사이클(#5)에서, RMB(1010)는 모든 VI가 처리되었는지 검사한다(도12에서의 블록(1214) 참조). 모든 VI가 처리되었다면, RMB(1010)는 도14(c)에 나타낸 바와 같이 다음번 클럭 사이클에서 유휴상태로 전환한다. RMB(1010)는 도14(e)에 나타낸 바와 같이 송신 큐(SQ)에 대한 완료 표시(완료 신호)를 표명한다.
사이클(#6)에서, 도14(d)에 나타낸 바와 같이 VI(#)는 RMB(1010)의 다음번 개시를 위해 준비된다. 사이클(#7,#8)에서, 이어서 RMB(1010)는 도14(c)에 나타낸 바와 같이 유휴상태로 남게된다.
도15는 본 발명의 실시예에 따른, 보호 도메인(PD) 불일치(mismatch)가 있는 리모트 키 관리자 블록(RMB)의 타이밍 도를 나타낸다. 이 경우, RMB(1010)는 VI 프로세스를 개시한다. 메모리 PD는 SQ 공급 PD와 일치하지 않는다고 가정된다. 따라서, RMB(1010)는 현재 VI에 대한 Rkey 프로세스를 무시하고, 다음번의 VI로 전환된다. 도15(a)는 매 8ns에서의 클럭 사이클의 타이밍 도의 예를 나타낸다. 도15(b)는송신 큐(SQ)로부터 SQ 개시를 나타내는 타이밍 도의 예이다. 도15(c)는 본 발명의 실시예에 따른 RMB(1040)의 현재 상태의 타이밍 도의 예이다. 도15(d)는 RMB(1010)로부터의 PD 오류 표시(PD Fail indication)의 타이밍 도의 예이다. 도15(e)는 현재의 "VI" 또는 처리중인 작업 큐 쌍(WQP)의 타이밍 도의 예이다. 도15(f)는 본 발명의 실시예에 따른 RMB(1010)의 메모리 판독(rmb_mem_re)의 타이밍 도의 예이다. 도15(g)는 본 발명의 실시예에 따른 RMB(1010)의 메모리 판독 어드레스(rmb_mem_re_addr)의 타이밍 도의 예이다. 도15(h)는 본 발명의 실시예에 따른 메모리 판독 데이터(rmb_mem_re_data)의 타이밍 도의 예이다.
이 오퍼레이션을 한 사이클씩 이하에 설명한다.
도15(a)∼(h)에 나타낸 바와 같이, RMB(1010)는 사이클(#1)과 사이클(#2) 동안 유휴상태에 있으며, 사이클(#3)에서, 송신 큐(SQ)가 도15(b)에 나타내 바와 같은 RMB 오퍼레이션을 시작하면, RMB(1010)는 리모트 키 메모리(1040)에 판독 인에이블(Read Enable)을 표명(assert)하고, 제1 VI, 즉 VI "0"에 대한 보호 도메인(PD)을 판독하기 위해 정확한 어드레스를 드라이브한다.
사이클(#4)에서, 도15(c)에 나타낸 바와 같이 메모리 PD는 SQ 공급 PD와 비교된다. 일치하지 않기 때문에, RMB(1010)는 그 VI에 대응하는 리모트 키(Rkey)의 판독을 중지한다. 도15에 나타낸 바와 같이 판독 어드레스는 다음번 VI의 PD 어드레스와 함께 로드된다.
사이클(#5)에서, RMB(1010)는 모든 VI가 처리되었는지 검사한다(도12에서의 블록(1214) 참조). 모든 VI가 처리되지 않았다면, 수신 큐(RQ)는 리모트 키메모리(1040)를 억세스하지 않고, RMB(1010)는 다음번 VI, 즉 VI "1"에 대한 보호 도메인(PD)의 판독을 시작한다.
사이클(#6)에서, VI 번호(#)는 도15(e)에 나타낸 바와 같이 증가된다. 메모리 PD는 도15(c)에서 설명한 바와 같이 SQ 공급 PD와 비교된다. 이는 일치되기 때문에, RMB(1010)는 그 VI에 대응하는 리모트 키(Rkey)의 판독을 시작한다.
사이클(#7,#8)에서, 리모트 키 메모리(1040)로부터의 Rkey("0","1")가 SQ 공급 Rkey와 일치하지 않으면, RMB(1010)는 리모트 키 메모리(1040)의 판독을 계속한다.
도16(a)∼도16(k)는 본 발명의 실시예에 따른, 복수 키 일치가 있는 경우의 리모트 키 관리자 블럭(RMB) 오퍼레이션의 타이밍 도를 나타내는 예이다. 이 경우, RMB(1010)는 VI 프로세스를 개시한다. 메모리 PD는 SQ 공급 PD와 일치한다고 가정한다. 모든 메모리 Rkey는 SQ 공급 PD 와 일치한다고 가정한다. 모든 메모리 Rkey는 SQ 공급 Rkey와 일치한다고 가정한다. 따라서, RMB(1010)는 각각의 Rkey 및 모든 Rkey에 대한 유효 비트를 소거해야만 한다. 또한, 다음번 VI로의 전환이 보여진다. 보다 상세하게, 도16(a)는 예컨대, 매 8ns에서의 클럭 사이클의 타이밍 도의 예이다. 도16(b)는 송신 큐(SQ)로부터 SQ 개시의 타이밍 도의 예이다. 도16(c)는 본 발명의 실시예에 따른 RMB(1040)의 현재 상태의 타이밍 도의 예이다. 도16(d)는 RMB(1010)로부터 PD 오류 표시의 타이밍 도의 예이다. 도16(e)는 현재의 "VI" 또는 처리중인 작업 큐 쌍(WQP)의 타이밍 도의 예이다. 도16(f)는 본 발명의 실시예에 따른 RMB(1010)의 메모리 판독(rmb_mem_re)의 타이밍 도의 예이다. 도16(g)는 본발명의 실시예에 따른 RMB(1010)의 메모리 판독 어드레스(rmb_mem_re_addr)의 타이밍 도의 예이다. 도16(h)는 본 발명의 실시예에 따른 메모리 판독 데이터(rmb_mem_re_data)의 타이밍 도의 예이다. 도16(i)는 본 발명의 실시예에 따른 RMB(1010)의 메모리 기록(rmb_mem_wr)의 타이밍 도의 예이다. 도16(j)는 본 발명의 실시예에 따른 RMB(1010)의 메모리 기록 어드레스(rmb_mem_wr_addr)의 타이밍 도의 예이다. 도16(k)는 본 발명의 실시예에 따른 메모리 기록 데이터(rmb_mem_wr_data)의 타이밍 도의 예를 나타낸다.
이 오퍼레이션을 한 사이클씩 이하에 설명한다.
도16(a)∼도16(k)에 나타낸 바와 같이, RMB(1010)는 사이클(#1) 및 사이클(#2) 동안 유휴상태에 있다. 사이클(#3)에서, 송신 큐(SQ)가 도16(b)에 나타내 바와 같은 RMB 오퍼레이션을 시작하면, RMB(1010)는 도16(f)에 나타낸 바와 같은 리모트 키 메모리(1040)에 판독 인에이블(Read Enable)을 표명(assert)하고, 도16(g)에 나타낸 바와 같이, 제1 VI, 즉 VI "0"에 대한 보호 도메인(PD)를 판독하기 위해 정확한 어드레스를 드라이브한다.
사이클(#4)에서, 메모리 PD는 SQ 공급 PD와 비교된다. 일치한다면, RMB(1010)는 그 VI에 대응하는 리모트 키(Rkey)의 판독을 시작한다.
사이클(#5)에서, 리모트 키 메모리(1040)로부터의 Rkey "0"은 SQ 공급 Rkey와 일치한다. 그 결과, RMB(1010)는 리모트 키 메모리(1040)의 판독을 중단한다.
사이클(#6)에서, Rkey "0"에 대응하는 유효 비트는 리모트 키 메모리(1040)에서 소거되어야만 한다. 따라서, 도16(i)에 나타낸 바와 같이 RMB(1010)는 기록인에이블을 리모트 키 메모리(1040)에 표명한다. 게다가, RMB(1010)는 Rkey "1"의 판독을 시작한다.
사이클(#7)에서, 리모트 키 메모리(1040)로부터의 Rkey("1")는 SQ 공급 Rkey와 일치한다. 그 결과, RMB(1010)는 리모트 키 메모리(1040)의 판독을 중단한다.
사이클(#8)에서, Rkey("1")에 대응하는 유효 비트는 리모트 키 메모리(1040)에서 소거되어야만 한다. 따라서, 도16(i)에 나타낸 바와 같이 RMB(1010)는 기록 인에이블을 리모트 키 메모리(1040)에 표명한다. RMB(1010)는 Rkey("2")의 판독을 개시한다.
사이클(#9)에서, 리모트 키 메모리(1040)로부터의 Rkey("2")는 SQ 공급 Rkey와 일치한다. 그 결과, RMB(1010)는 리모트 키 메모리(1040)의 판독을 중단한다.
사이클(#10)에서, Rkey("2")에 대응하는 유효 비트는 리모트 키 메모리(1040)에서 소거되어야만 한다. 따라서, 도16(i)에 나타낸 바와 같이 RMB(1010)는 기록 인에이블을 리모트 키 메모리(1040)에 표명한다. RMB(1010)는 Rkey("3")의 판독을 개시한다.
사이클(#11)에서, 리모트 키 메모리(1040)로부터의 Rkey("3")는 SQ 공급 Rkey와 일치한다. 그 결과, RMB(1010)는 리모트 키 메모리(1040)의 판독을 중단한다.
사이클(#12)에서, Rkey("3")에 대응하는 유효 비트는 리모트 키 메모리(1040)에서 소거되어야만 한다. 따라서, 도16(i)에 나타낸 바와 같이 RMB(1010)는 기록 인에이블을 리모트 키 메모리(1040)에 표명한다.
사이클(#13)에서, RMB(1010)는 모든 VI가 처리되었는지 검사한다(도12에서의 블록(1214) 참조). 모든 VI가 처리되지 않았다면, 수신 큐(RQ)는 리모트 키 메모리(1040)를 억세스하지 않고, RMB(1010)는 다음번 VI, 즉 VI "1"에 대한 보호 도메인(PD)의 판독을 시작한다.
사이클(#14)에서, 메모리 PD는 사이클(#4)에서 설명한 동일한 방법으로 SQ 공급 PD와 재차 비교된다. 그러나, VI 번호가 증가된다.
도17(a)∼도17(m)은 본 발명의 실시예에 따른, 복수 키가 간헐적인 RQ 메모리 억세스와 일치하지 않는 경우의 리모트 키 관리자 블럭(RMB) 오퍼레이션의 타이밍 도를 나타내는 예이다. 이 경우, RMB(1010)는 VI 프로세스를 개시한다. 메모리 PD는 SQ 공급 PD와 일치한다고 가정한다. 따라서, RMB(1010)는 각 Rkey 및 모든 Rkey에 대한 유효 비트를 소거해야만 한다. 그러나, RQ 마이크로-엔진(ME)(710B)은 RMB(1010)가 메모리(1040) 억세스를 시도하는 사이클상에서 메모리(1040)를 억세스한다. 따라서, 잠재적인 메모리 억세스 충돌을 설명한다. 다음번 VI로의 전환도 보여지고 있다.
도17(a)는 예컨대, 매 8ns에서의 클럭 사이클의 타이밍 도의 예이다. 도17(b)는 송신 큐(SQ)로부터 SQ 개시의 타이밍 도의 예이다. 도17(c)는 수신 큐(RQ)로부터의 RQ 소스 어드레스의 타이밍 도의 예이다. 도17(d)는 RMB(1010)의 RQ 메모리 기록의 타이밍 도의 예이다. 도17(e)는 본 발명의 실시예에 따른 RMB(1040)의 현재 상태의 타이밍 도의 예이다. 도17(f)는 RMB(1010)로부터의 키 오류 표시의 타이밍 도의 예이다. 도17(g)는 현재의 "VI" 또는 처리중인 작업 큐쌍(WQP)의 타이밍 도의 예이다. 도17(h)는 본 발명의 실시예에 따른 RMB(1010)의 메모리 판독(rmb_mem_re)의 타이밍 도의 예이다. 도17(i)는 본 발명의 실시예에 따른 RMB(1010)의 메모리 판독 어드레스(rmb_mem_re_addr)의 타이밍 도의 예이다. 도17(j)는 본 발명의 실시예에 따른 메모리 판독 데이터(rmb_mem_re_data)의 타이밍 도의 예이다. 도17(k)는 본 발명의 실시예에 따른 RMB(1010)의 메모리 기록(rmb_mem_wr)의 타이밍 도의 예이다. 도17(l)은 본 발명의 실시예에 따른 RMB(1010)의 메모리 기록 어드레스 (rmb_mem_wr_addr)의 타이밍 도의 예이다. 도17(m)은 본 발명의 실시예에 따른 메모리 기록 데이터(rmb_mem_wr_data)의 타이밍 도의 예를 나타낸다.
이 오퍼레이션을 한 사이클씩 이하에 설명한다.
도17(a)∼도17(m)에 나타낸 바와 같이, RMB(1010)는 사이클(#1) 및 사이클(#2) 동안 유휴상태에 있다. 사이클(#3)에서, 송신 큐(SQ)가 도17(b)에 나타내 바와 같이 RMB 오퍼레이션을 시작한다. 따라서, RMB(1010)는 VI "0"("WQP" 또는 "QP"로 알려져 있음)에 대응하는 보호 도메인(PD)을 판독한다. 그러나, 수신 큐(RQ)는 이 크럭에서 리모트 키 메모리(1040)를 판독하기 위해 시도한다. 따라서, RMB(1010)는 수신 큐(RQ)가 활성화되지 않을 때까지 대기한다.
사이클(#4)에서, RQ가 활성화되지 않으면, RMB(1010)는 판독 인에이블을 리모트 키 메모리(1040)에 표명하고, 도17(i) 및 도17(j)에 나타낸 바와 같이, 제1 VI, 즉 VI "0"에 대한 보호 도메인(PD)를 판독하기 위해 정확한 어드레스를 드라이브한다.
사이클(#5)에서, 메모리 PD는 SQ 공급 PD와 비교된다. 이는 일치되기 때문에, RMB(1010)는 그 VI에 대응하는 리모트 키(Rkey)의 판독을 시작한다. 그러나, 수신 큐(RQ)는 이 클럭상에서 리모트 키 메모리(1040)을 판독하기 위해 시도한다. 따라서, RMB(1010)는 수신 큐(RQ)가 활성화되지 않을 때까지 대기한다.
사이클(#6)에서, RMB(1010)은 리모트 키 메모리(1040)로부터의 Rkey "0"의 판독을 개시한다.
사이클(#7)에서, 리모트 키 메모리(1040)로부터의 Rkey "0"은 SQ 공급 Rkey와 일치한다. 그 결과, RMB(1010)는 리모트 키 메모리(1040)의 판독을 중단한다.
사이클(#8)에서, Rkey "0"에 대응하는 유효 비트는 리모트 키 메모리(1040)에서 소거되어야만 한다. 그러나, 수신 큐(RQ)는 이 클럭상에서 리모트 키 메모리(1040)에 기록중에 있다. 따라서, RMB(1010)는 수신 큐(RQ)가 활성화되지 않을 때까지 대기한다.
사이클(#9)에서, 수신 큐(RQ)가 활성화되지 않으면, RMB(1010)는 Rkey "0"에 대응하는 유효 비트를 메모리(1040)에서 소거한다. 이어서, RMB(1010)는 Rkey "1"의 판독을 시작한다.
사이클(#10)에서, 리모트 키 메모리(1040)로부터의 Rkey("1")는 SQ 공급 Rkey와 일치하지 않는다. RMB(1010)는 리모트 키 메모리(1040)로부터 Rkey("2")를 판독한다. 그러나, 수신 큐(RQ)는 이 클럭상에서 리모트 키 메모리(1040)를 판독하기 위한 시도중에 있다. 따라서, RMB(1010)는 수신 큐(RQ)가 활성화되지 않을 때까지 대기한다.
사이클(#11)에서, 수신 큐(RQ)가 활성되지 않으면, RMB(1010)는 리모트 키 메모리(1040)로부터 Rkey "2"의 판독을 개시한다.
사이클(#12)에서, 리모트 키 메모리(1040)로부터의 Rkey "2"는 SQ 공급 Rkey와 일치하지 않는다. 그 결과, RMB(1010)는 리모트 키 메모리(1040)로부터 Rkey "3"을 판독해야만 한다. 그러나, 수신 큐(RQ)는 이 클럭상에서 리모트 키 메모리(1040)를 판독하기 위한 시도중에 있다. 따라서, RMB(1010)는 수신 큐(RQ)가 활성화되지 않을 때까지 대기한다.
사이클(#13)에서, 수신 큐(RQ)가 활성되지 않으면, RMB(1010)는 리모트 키 메모리(1040)로부터 Rkey "3"의 판독을 개시한다.
사이클(#14)에서, 리모트 키 메모리(1040)로부터의 Rkey "3"은 SQ 공급 Rkey와 일치하지 않는다. 그 결과, RMB(1010)는 리모트 키 메모리(1040)로부터의 판독을 중단한다.
사이클(#15)에서, RMB(1010)는 Rkey "3"에 대응하는 유효 비트를 리모트 키 메모리(1040)에서 소거하기를 원한다. 그러나, 수신 큐(RQ)는 이 클럭상에서 리모트 키 메모리(1040)에 기록중에 있다. 따라서, RMB(1010)는 수신 큐(RQ)가 활성화되지 않을 때까지 대기한다.
사이클(#16)에서, RMB(1010)는 Rkey "0"에 대응하는 유효 비트를 리모트 키 메모리(1040)에서 소거한다.
사이클(#17)에서, RMB(1010)는 모든 VI가 처리되었는지를 검사한다. 모든 VI가 처리되지 않았고, 수신 큐(RQ)가 메모리(1040)를 억세스하지 않는다면,RMB(1010)는 다음전 VI, 즉 VI(#1)("WQP #1"또는 "QP #1"으로 알려져 있음)의 판독을 개시한다.
클럭(#18)에서, RMB(1010)는 메모리91040)에 판독 인에이블을 표명하고, 사이클(#4)를 참조하여 설명한 동일한 방법으로 VI(#1)에 대한 키 "0" 판독하기 위해 정확한 어드레스를 드라이브한다. 그러나, VI 번호는 증가한다.
도13, 도14, 도15, 도16, 및 도17에서 나타낸 타이밍 도는 ASIC 프로세스와 기타 요인의 필요에 의해 도시된 것이다. ASIC 프로세스 및 기술 요구(칩 제조 기술)이 상이하다면, 도10∼12에 나타낸 이들 단계의 구현과, 도13, 도14, 도15, 도16, 및 도17에 나타낸 타이밍 도는 달라질 수 있다. 그러나, 본 명세서에 기재된 바와 같은 기본적인 이론은 여전히 이어진다.
게다가, 본 명세서의 도10∼12를 참조하여 상술한 것들에 더하여, 리모트 키 관리자 블록(RMB)의 구현에 이용될 수도 있는 다른 가능한 2가지의 접근법이 있다. 이들 가능한 접근법은 완전히 하드웨어로 구현된 리모트 키 관리자 블럭과 완전히 마이크로코드로 구현된 리모트 키 관리자 블럭을 포함한다. 리모트 키 관리자 블럭(RMB)이 완전히 하드웨어로 구현되면, SQ 바인드 설명자와 RQ RDMA 오퍼레이션 사이의 복잡한 상호작용 및 호스트 메모리 윈도우 무효화 또는 이동으로 인하여 과도한 경쟁 상태(race condition)가 발생되어질 수 있다. 또한, InfiniBantTM사양에 추후 변경이 있는 경우, 불가능하지 않더라도, 추후 하드웨어의 변경 및 업그레이드가 곤란하다. 리모트 키 관리자 블럭(RMB)이 완전히 마이크로코드로 구현되었다면, WQP 당 적어도9개 클럭 사이클(5개의 판독 사이클 및 4개의 기록 사이클)이 요구된다. 256개의 WQP를 가정하면, 총 256(WQP) × 9(clock/WQP) × 8(ns/colck)~18㎲가 요구되어 진다. 이는 호스트-패브릭 어댑터가 완전히 지연되어, 이 시간동안 SQ 데이터 패킷을 처리할 수 없음을 의미한다. 이는 패킷 시간 경과나 적합성 이슈와 InfiniBantTM와 관련된 기타 적합성 문제를 발생한다.
상술한 바와 같이, 본 발명의 실시예에 따른, 채널-기반 스위치 패브릭 아키텍쳐를 이용하는 데이터 네트워크내의 호스트 시스템에 설치된 호스트-패브릭 어댑터는 NGIO/InfiniBantTM을 효율적으로 관리하고, 호스트 시스템에서의 통신 장치 사이 또는 서로 직접 접속된 호스트 시스템 사이, 또는 채널 기반 스위치 패브릭 아키텍쳐를 이용하는 데이터 네트워크 통해 접속된 호스트 사이의 데이터 이동 오퍼레이션을 효율적으로 지원한다. 호스트-패브릭 어댑터는 최소의 배선을 갖는 NGIO/InfiniBantTM프로토콜의 실행 제어를 포함하는, 최소 하드웨어 투자를 갖는 NGIO/InfiniBantTM기능성에 대해 최적화된다. 호스트 패브릭 어댑터의 마이크로-제어 서브시스템은 최소 배선으로 NGIO/InfiniBantTM의 실행을 제어하도록 설계된다. 또한, 키 검증 메커니즘은, 채널 기반 스위치 패브릭을 통하여, 그러한 데이터 네트워크에서 대기중인 데이터 트랜잭션(예컨대, 판독/기록 오퍼레이션)에 대응하는 리모트 키를 관리하고 무효화하도록 구현되어, 효율적으로 호스트 메모리를 억세스 하기 위해 리모트 시스템을 인증한다.
본 발명의 전형적인 실시예를 고려하여 도시 및 설명하였지만, 본 발명의 범위내에서 각종 변경과 변형이 이루어질 수 있고, 그 구성 요소가 유사한 것으로 대체될 수 있다는 것을 당업자는 이해할 것이다. 예컨대, 본 발명은, NGIO(Next Generation I/O), FIO(future I/O), InfiniBandTM를 이용하는 로컬 에어리어 네트워크(LAN), 와이드 에어리어 네트워크(WAN), 캠퍼스 에어리어 네트워크(CAN), 메트로폴리탄 에어리어 네트워크(MAN), 글로벌 에어리어 네트워크(GAN), 와이어리스 퍼스널 에어리어 네트워크(WPAN), 및 시스템 에어리어 네트워크(SAN)을 포함하는 모든 데이터 네트워크에 적용가능하며, 이 LAN 서브시스템은 이더넷, FDDI(Fiber Distributed Data Interface) 토큰 링 LAN, 비동기식 전송 모드(ATM) LAN, 광섬유 채널, 및 무선 LAN을 포함하고 있다. 게다가, 본 발명의 범위 내에서 기타 변경이 본 발명의 기술에 이루어질 수 있다. 따라서, 본 발명은 각종 실시예에 제한되지는 않으며, 본 발명은 첨부된 청구의 범위의 범위 내에 있는 모든 실시예를 포함한다.

Claims (27)

  1. 데이터 전송 오퍼레이션을 위한 호스트 시스템으로부터의 작업 요청에 응답하여, 스위치 패브릭(switched fabric)을 통해, 접속을 설정하고, 데이터 전송 오퍼레이션을 지원하도록 배치된 하나 또는 그 이상의 마이크로-엔진, 및
    상기 스위치 패브릭을 통해, 리모트 키를 관리하고, 대기중인 데이터 전송 오퍼레이션에 대응하는 상기 리모트 키의 정당성을 검사하도록 배치된 리모트 키 관리자
    를 포함하는 호스트-패브릭 어댑터.
  2. 제1항에 있어서,
    상기 데이터 전송 오퍼레이션 및 상기 스위치 패브릭을 통한 처리 및/또는 전송으로 인해 이동되어질 데이터의 위치를 설명하기 위해, 작업 요청이 설명자(descriptor)의 형태로 포스트되어 있는 복수의 작업 큐 쌍(WQP)
    을 더 포함하는 호스트-패브릭 어댑터.
  3. 제2항에 있어서,
    상기 작업 큐 쌍(WQP) 각각은,
    리모트 시스템의 가상 인터페이스(VI)에 일반 메시지 송신을 요청하고, 상기 스위치 패브릭을 통해 상기 리모트 시스템의 특정 메모리 위치로부터 판독될 메시지를 요청하는 리모트 직접 메모리 억세스(RDMA) 판독을 요청하며, 상기 스위치 패브릭을 통해 상기 리모트 시스템의 특정 메모리 위치 상에 기록될 메시지를 요청하는 리모트 직접 메모리 억세스(RDMA) 기록을 요청하는 "개시자(initiator)"로서 이용되는 송신 큐(SQ), 및
    상기 스위치 패브릭을 통해 일반 송신으로부터의 메시지에 대한 요청, 및 상기 리모트 시스템으로부터의 RDMA 판독 및 RDMA기록을 수신하는 "응답자(responder)"로서 이용되는 수신 큐(RQ)
    를 포함하는
    호스트-패브릭 어댑터.
  4. 제3항에 있어서,
    상기 마이크로-엔진 및 상기 리모트 키 관리자는 "InfiniBandTM사양"에 따라 구성되고, 특정 용도의 집적 회로(ASIC)의 일부로서 구현되는
    호스트-패브릭 어댑터.
  5. 제3항에 있어서,
    상기 마이크로-엔진은,
    상기 작업 큐 쌍(WQP)의 송신 큐(SQ)의 오퍼레이션을 제어하도록 배치된 송신 큐(SQ) 마이크로-엔진, 및
    상기 작업 큐 쌍(WQP)의 수신 큐(RQ)의 오퍼레이션을 제어하도록 배치된 수신 큐(RQ) 마이크로-엔진
    을 포함하는
    호스트-패브릭 어댑터.
  6. 제5항에 있어서,
    상기 리모트 키 관리자는 키 검증을 위한 작업 요청에 포함된 리모트 키와의 비교에 이용되는 저장 리모트 키를 저장하기 위한 리모트 키 메모리를 포함하는
    호스트-패브릭 어댑터.
  7. 제6항에 있어서,
    상기 리모트 키는 RDMA 판독/기록 오퍼레이션을 포함하는 대기중인 데이터 전송 오퍼레이션에 대하여 가상 어드레스를 물리적 어드레스로 전환하기 위한 적당한 페이지를 식별하기 위해 이용되는
    호스트-패브릭 어댑터.
  8. 제7항에 있어서,
    RDMA 데이터 전송 오퍼레이션을 제한하기 위해, 상기 작업 요청은 일반 송신, RDMA 기록, 및 RDMA 판독 등의 일반 데이터 전송 오퍼레이션에 대해서는 설명자의 형태로 포스트되거나, 이동 또는 상기 호스트 시스템의 호스트 메모리의 특정 메모리 영영내의 "메모리 윈도우"의 무효화 등의 비 데이터(non data) 오퍼레이션에 대해서는 바인드 설명자의 형태로 포스트되는
    호스트-패브릭 어댑터.
  9. 제6항에 있어서,
    상기 리모트 키 메모리는 하나의 판독용 포트 및 하나의 기록용 포트를 갖는 랜덤-억세스-메모리(RAM)인
    호스트-패브릭 어댑터.
  10. 제8항에 있어서,
    상기 리모트 키 관리자는,
    상기 송신 큐(SQ)에 포스트된 설명자가 비 데이터 오퍼레이션을 위한 바인드 설명자인지를 판정하는 단계;
    상기 포스트된 설명자가 바인드 설명자가 아니라면, 일반 송신, RDMA 기록, 및 RDMA 판독 등의 일반 데이터 전송 오퍼레이션을 처리하는 단계;
    상기 포스트된 설명자가 바인드 설명자라면, 상기 "메모리 윈도우"가 무효화되었는지를 판정하는 단계;
    상기 "메모리 윈도우"가 무효화되지 않았다면, 상기 "메모리 윈도우"의 이동을 노팅(noting)하고, 상기 "메모리 윈도우"를 이동시키기 위해 상기 호스트 시스템의 상기 호스트 메모리에 기록하는 것을 수행하는 단계;
    상기 "메모리 윈도우"가 무효화되었다면, 상기 "메모리 윈도우"를 제거하기 위해 상기 호스트 시스템의 상기 호스트 메모리에 기록하는 것을 수행하는 단계;
    상기 "메모리 윈도우"를 이용했던 리모트 키를 식별하기 위해, 상기 "메모리 윈도우"를 이용하는 대기중인 모든 RDMA 오퍼레이션을 검색하는 단계;
    상기 "메모리 윈도우"를 이용했던 상기 리모트 키가 식별되면, 모든 리모트키가 무효화될 때까지 상기 리모트 키를 무효화하는 단계;
    식별된 리모트 키가 없다면, 상기 모든 리모트 키의 무효화를 종료하고, 유휴 상태(idle)로 복귀하는 단계; 및
    상기 모든 리모트 키가 무효화되지 않으면, 새로운 리모트 키 또는 새로운 작업 큐 쌍(WQP)이 진입하여 상기 "메모리 윈도우"를 이용할 수 없도록, 모든 리모트 키가 "무효화됨"으로 마킹될 때까지 상기 "메모리 윈도우"를 사용하는 대기중인 모든 RDMA 오퍼레이션을 검색하는 상기 단계로 복귀하는 단계
    에 의해 리모트 키의 정당성을 검사하도록 활성화되는
    호스트-패브릭 어댑터.
  11. 제10항에 있어서,
    상기 리모트 키 관리자는,
    메모리 PD 및 가상 인터페이스(VI)의 SQ 공급 PD(SQ supplied PD) 사이의 보호 도메인(PD) 비교를 개시하는 단계;
    상기 메모리 PD가 상기 SQ 공급 PD와 일치하지 않으면, 그 VI에 대한 상기 리모트 키의 처리를 무시하고, 모든 VI가 처리되었는지의 여부를 판정하는 단계; 및
    상기 메모리 PD가 상기 SQ 공급 PD와 일치하면, 키 검증을 위한 그 VI와 관련된 모든 리모트 키에 대하여 리모트 키를 순차적으로 판독하고, 리모트 키 비교를 순차적으로 개시하는 단계
    에 의해 리모트 키를 무효화하기 위해, 상기 SQ 마이크로-엔진으로부터의 키 무효화를 위한 요청에 따라 활성화되는
    호스트-패브릭 어댑터.
  12. 제11항에 있어서,
    상기 리모트 키 관리자는,
    상기 리모트 키 메모리로부터 제1 리모트 키를 판독하고, 상기 SQ 공급 키와 비교하는 단계;
    상기 제1 리모트 키가 상기 SQ 공급 키와 일치하지 않으면, 다음 리모트 키를 검사하기 위해 이동하는 단계;
    상기 제1 리모트 키가 상기 SQ 공급 키와 일치하면, 상기 제1 리모트 키에 대응하는 유효 비트를 상기 리모트 키 메모리에서 소거하는 단계;
    상기 리모트 키 메모리로부터 제2 리모트 키를 판독하고, 상기 SQ 공급 키와 비교하는 단계;
    상기 제2 리모트 키가 상기 SQ 공급 키와 일치하지 않으면, 다음 리모트 키를 검사하기 위해 이동하는 단계;
    상기 제2 리모트 키가 상기 SQ 공급 키와 일치하면, 상기 제2 리모트 키에 대응하는 유효 비트를 상기 리모트 키 메모리에서 소거하는 단계;
    상기 리모트 키 메모리로부터 제3 리모트 키를 판독하고, 상기 SQ 공급 키와 비교하는 단계;
    상기 제3 리모트 키가 상기 SQ 공급 키와 일치하지 않으면, 다음 리모트 키를 검사하기 위해 이동하는 단계;
    상기 제3 리모트 키가 상기 SQ 공급 키와 일치하면, 상기 제3 리모트 키에대응하는 유효 비트를 상기 리모트 키 메모리에서 소거하는 단계;
    상기 리모트 키 메모리로부터 최종 리모트 키를 판독하고, 상기 SQ 공급 키와 비교하는 단계;
    상기 최종 리모트 키가 상기 SQ 공급 키와 일치하지 않으면, 모든 VI가 처리되었는지의 여부를 판정하기 위해 이동하는 단계; 및
    상기 최종 리모트 키가 상기 SQ 공급 키와 일치하면, 상기 최종 리모트 키에 대응하는 유효 비트를 상기 리모트 키 메모리에서 소거하고, 모든 VI가 처리되었는지의 여부를 판정하는 단계
    에 의해 그 VI와 관련된 모든 리모트 키에 대하여 리모트 키 비교를 개시하는
    호스트-패브릭 어댑터.
  13. 데이터 네트워크의 스위치 패브릭에 접속하기 위해 호스트 시스템에 설치된 호스트-패브릭 어댑터로서,
    상기 스위치 패브릭을 통해, 접속을 설정하고, 데이터 전송을 지원하기 위해 배치된 적어도 하나의 마이크로-엔진(ME);
    데이터 전송 오퍼레이션을 위한 상기 스위치 패브릭으로부터 데이터 패킷을 수신 및 송신하도록 배치된 직렬 인터페이스;
    데이터 전송 오퍼레이션을 위한 상기 호스트 시스템으로부터 작업 큐를 설명자의 형태로 수신 및 송신하도록 배치된 호스트 인터페이스;
    데이터 전송 오퍼레이션에 대한 작업 요청을 처리하기 위해 상기 마이크로-엔진(ME)에 필요한 컨텍스트 정보를 저장하도록 배치된 컨텍스트 메모리;
    데이터 전송 오퍼레이션에 대한 작업 요청을 처리하기 위해 상기 마이크로-엔진(ME)에 필요한 컨텍스트 정보를 업데이트하도록 배치된 도어벨 관리자; 및
    리모트 키를 관리하고, 대기중인 데이터 전송 오퍼레이션에 대응하는 상기 리모트 키의 정당성을 검사하도록 배열된 리모트 키 관리자
    를 포함하는 호스트-패브릭 어댑터.
  14. 제13항에 있어서,
    상기 데이터 전송 오퍼레이션 및 상기 스위치 패브릭을 통한 처리 및/또는 전송으로 인해 이동되어지는 데이터의 위치를 설명하기 위해, 데이터 전송 동작 및 작업 요청이 설명자의 형태로 포스트되어 있는 복수의 작업 큐 쌍(WQP)을 포함하는 전송 엔진
    을 더 포함하는 호스트-패브릭 어댑터.
  15. 제14항에 있어서,
    상기 작업 큐 쌍(WQP) 각각은,
    리모트 시스템의 가상 인터페이스(VI)에 일반 메시지 송신을 요청하고, 상기 스위치 패브릭을 통해 상기 리모트 시스템의 특정 메모리 위치로부터 판독될 메시지를 요청하는 리모트 직접 메모리 억세스(RDMA) 판독을 요청하며, 상기 스위치 패브릭을 통해 상기 리모트 시스템의 특정 메모리 위치 상에 기록될 메시지를 요청하는 리모트 직접 메모리 억세스(RDMA) 기록을 요청하는 "개시자(initiator)"로서 이용되는 송신 큐(SQ), 및
    상기 스위치 패브릭을 통해 일반 송신으로부터의 메시지에 대한 요청, 및 상기 리모트 시스템으로부터의 RDMA 판독 및 RDMA기록을 수신하는 "응답자(responder)"로서 이용되는 수신 큐(RQ)
    를 포함하는
    호스트-패브릭 어댑터.
  16. 제13항에 있어서,
    상기 마이크로-엔진, 상기 호스트 인터페이스, 상기 컨텍스트 메모리, 상기 도어벨 관리자, 및 상기 리모트 키 관리자는 "InfiniBandTM사양"에 따라 구성되고, 특정 용도의 집적 회로(ASIC)의 일부로서 구현되는
    호스트-패브릭 어댑터.
  17. 제15항에 있어서,
    상기 마이크로-엔진은
    상기 작업 큐 쌍(WQP)의 송신 큐(SQ)의 오퍼레이션을 제어하도록 배치된 송신 큐(SQ) 마이크로-엔진, 및
    상기 작업 큐 쌍(WQP)의 수신 큐(RQ)의 오퍼레이션을 제어하도록 배치된 수신 큐(RQ) 마이크로-엔진
    을 포함하는
    호스트-패브릭 어댑터.
  18. 제17항에 있어서,
    상기 리모트 키 관리자는 키 검증을 위한 작업 요청에 포함된 리모트 키와의 비교에 이용되는 저장 리모트 키를 저장하기 위한 리모트 키 메모리를 포함하는
    호스트-패브릭 어댑터.
  19. 제18항에 있어서,
    상기 리모트 키는 RDMA 판독/기록 오퍼레이션을 포함하는 대기중인 데이터 전송 오퍼레이션에 대하여 가상 어드레스를 물리적 어드레스로 전환하기 위한 적당한 페이지를 식별하기 위해 이용되는
    호스트-패브릭 어댑터.
  20. 제19항에 있어서,
    RDMA 데이터 전송 오퍼레이션을 제한하기 위해, 상기 작업 요청은 일반 송신, RDMA 기록, 및 RDMA 판독 등의 일반 데이터 전송 오퍼레이션에 대해서는 설명자의 형태로 포스트되거나, 이동 또는 상기 호스트 시스템의 호스트 메모리의 특정 메모리 영영내의 "메모리 윈도우"의 무효화 등의 비 데이터(non data) 오퍼레이션에 대해서는 바인드 설명자의 형태로 포스트되는
    호스트-패브릭 어댑터.
  21. 제18항에 있어서,
    상기 리모트 키 메모리는 하나의 판독용 포트 및 하나의 기록용 포트를 갖는 1280×28의 랜덤-억세스-메모리(RAM)인
    호스트-패브릭 어댑터.
  22. 제20항에 있어서,
    상기 리모트 키 관리자는,
    상기 송신 큐(SQ)에 포스트된 설명자가 비 데이터 오퍼레이션을 위한 바인드 설명자인지를 판정하는 단계;
    상기 포스트된 설명자가 바인드 설명자가 아니라면, 일반 송신, RDMA 기록, 및 RDMA 판독 등의 일반 데이터 전송 오퍼레이션을 처리하는 단계;
    상기 포스트된 설명자가 바인드 설명자라면, 상기 "메모리 윈도우"가 무효화되었는지를 판정하는 단계;
    상기 "메모리 윈도우"가 무효화되지 않았다면, 상기 "메모리 윈도우"의 이동을 노팅(noting)하고, 상기 "메모리 윈도우"를 이동시키기 위해 상기 호스트 시스템의 상기 호스트 메모리에 기록하는 것을 수행하는 단계;
    상기 "메모리 윈도우"가 무효화되었다면, 상기 "메모리 윈도우"를 제거하기 위해 상기 호스트 시스템의 상기 호스트 메모리에 기록하는 것을 수행하는 단계;
    상기 "메모리 윈도우"를 이용했던 리모트 키를 식별하기 위해, 상기 "메모리 윈도우"를 이용하는 대기중인 모든 RDMA 오퍼레이션을 검색하는 단계;
    상기 "메모리 윈도우"를 이용했던 상기 리모트 키가 식별되면, 모든 리모트키가 무효화될 때까지 상기 리모트 키를 무효화하는 단계;
    식별된 리모트 키가 없다면, 상기 모든 리모트 키의 무효화를 종료하고, 유휴 상태(idle)로 복귀하는 단계; 및
    상기 모든 리모트 키가 무효화되지 않으면, 새로운 리모트 키 또는 새로운 작업 큐 쌍(WQP)이 진입하여 상기 "메모리 윈도우"를 이용할 수 없도록, 모든 리모트 키가 "무효화됨"으로 마킹될 때까지 상기 "메모리 윈도우"를 사용하는 대기중인 모든 RDMA 오퍼레이션을 검색하는 상기 단계로 복귀하는 단계
    에 의해 리모트 키의 정당성을 검사하도록 활성화되는
    호스트-패브릭 어댑터.
  23. 제22항에 있어서,
    상기 리모트 키 관리자는,
    메모리 PD 및 가상 인터페이스(VI)의 SQ 공급 PD(SQ supplied PD) 사이의 보호 도메인(PD) 비교를 개시하는 단계;
    상기 메모리 PD가 상기 SQ 공급 PD와 일치하지 않으면, 그 VI에 대한 상기 리모트 키의 처리를 무시하고, 모든 VI가 처리되었는지의 여부를 판정하는 단계; 및
    상기 메모리 PD가 상기 SQ 공급 PD와 일치하면, 키 검증을 위한 그 VI와 관련된 모든 리모트 키에 대하여 리모트 키를 순차적으로 판독하고, 리모트 키 비교를 순차적으로 개시하는 단계
    에 의해 리모트 키를 무효화하기 위해, 상기 SQ 마이크로-엔진으로부터의 키 무효화를 위한 요청에 따라 활성화되는
    호스트-패브릭 어댑터.
  24. 제23항에 있어서,
    상기 리모트 키 관리자는,
    상기 리모트 키 메모리로부터 제1 리모트 키를 판독하고, 상기 SQ 공급 키와 비교하는 단계;
    상기 제1 리모트 키가 상기 SQ 공급 키와 일치하지 않으면, 다음 리모트 키를 검사하기 위해 이동하는 단계;
    상기 제1 리모트 키가 상기 SQ 공급 키와 일치하면, 상기 제1 리모트 키에 대응하는 유효 비트를 상기 리모트 키 메모리에서 소거하는 단계;
    상기 리모트 키 메모리로부터 제2 리모트 키를 판독하고, 상기 SQ 공급 키와 비교하는 단계;
    상기 제2 리모트 키가 상기 SQ 공급 키와 일치하지 않으면, 다음 리모트 키를 검사하기 위해 이동하는 단계;
    상기 제2 리모트 키가 상기 SQ 공급 키와 일치하면, 상기 제2 리모트 키에 대응하는 유효 비트를 상기 리모트 키 메모리에서 소거하는 단계;
    상기 리모트 키 메모리로부터 제3 리모트 키를 판독하고, 상기 SQ 공급 키와 비교하는 단계;
    상기 제3 리모트 키가 상기 SQ 공급 키와 일치하지 않으면, 다음 리모트 키를 검사하기 위해 이동하는 단계;
    상기 제3 리모트 키가 상기 SQ 공급 키와 일치하면, 상기 제3 리모트 키에대응하는 유효 비트를 상기 리모트 키 메모리에서 소거하는 단계;
    상기 리모트 키 메모리로부터 최종 리모트 키를 판독하고, 상기 SQ 공급 키와 비교하는 단계;
    상기 최종 리모트 키가 상기 SQ 공급 키와 일치하지 않으면, 모든 VI가 처리되었는지의 여부를 판정하기 위해 이동하는 단계; 및
    상기 최종 리모트 키가 상기 SQ 공급 키와 일치하면, 상기 최종 리모트 키에 대응하는 유효 비트를 상기 리모트 키 메모리에서 소거하고, 모든 VI가 처리되었는지의 여부를 판정하는 단계
    에 의해 그 VI와 관련된 모든 리모트 키에 대하여 리모트 키 비교를 개시하는
    호스트-패브릭 어댑터.
  25. 호스트 시스템에 설치된 호스트-패브릭 어댑터에서, 대기중인 리모트 직접 메모리 억세스(RDMA) 오퍼레이션에 대응하는 리모트 키의 정당성을 검사하는 방법에 있어서,
    송신 큐(SQ)에서 처리되어질 임의의 가상 인터페이스(VI)가 비 데이터 오퍼레이션인지를 판정하는 단계;
    포스트된 설명자가 바인드 설명자가 아니라면, 일반 데이터 전송 오퍼레이션을 처리하는 단계;
    상기 포스트된 설명자가 바인드 설명자라면, "메모리 윈도우"가 무효화되었는지를 판정하는 단계;
    상기 "메모리 윈도우"가 무효화되지 않았다면, 상기 "메모리 윈도우"의 이동을 노팅(noting)하고, 상기 "메모리 윈도우"를 이동시키기 위해 상기 호스트 시스템의 상기 호스트 메모리에 기록하는 것을 수행하는 단계;
    상기 "메모리 윈도우"가 무효화되었다면, 상기 "메모리 윈도우"를 제거하기 위해 상기 호스트 시스템의 상기 호스트 메모리에 기록하는 것을 수행하는 단계;
    상기 "메모리 윈도우"를 이용했던 리모트 키를 식별하기 위해, 상기 "메모리 윈도우"를 이용하는 대기중인 모든 RDMA 오퍼레이션을 검색하는 단계;
    상기 "메모리 윈도우"를 이용했던 상기 리모트 키가 식별되면, 모든 리모트키가 무효화될 때까지 상기 리모트 키를 무효화하는 단계;
    식별된 리모트 키가 없다면, 상기 모든 리모트 키의 무효화를 종료하고, 유휴 상태(idle)로 복귀하는 단계; 및
    상기 모든 리모트 키가 무효화되지 않으면, 새로운 리모트 키 또는 새로운 작업 큐 쌍(WQP)이 진입하여 상기 "메모리 윈도우"를 이용할 수 없도록, 모든 리모트 키가 "무효화됨"으로 마킹될 때까지 상기 "메모리 윈도우"를 사용하는 대기중인 모든 RDMA 오퍼레이션을 검색하는 상기 단계로 복귀하는 단계
    를 포함하는 방법.
  26. 제25항에 있어서,
    상기 리모트 키는,
    메모리 PD 및 가상 인터페이스(VI)의 SQ 공급 PD(SQ supplied PD) 사이의 보호 도메인(PD) 비교를 개시하는 단계;
    상기 메모리 PD가 상기 SQ 공급 PD와 일치하지 않으면, 그 VI에 대한 상기 리모트 키의 처리를 무시하고, 모든 VI가 처리되었는지의 여부를 판정하는 단계; 및
    상기 메모리 PD가 상기 SQ 공급 PD와 일치하면, 키 검증을 위한 그 VI와 관련된 모든 리모트 키에 대하여 리모트 키를 순차적으로 판독하고, 리모트 키 비교를 순차적으로 개시하는 단계
    에 무효화되는
    방법.
  27. 제26항에 있어서,
    그 VI와 관련된 모든 리모트 키에 대한 상기 리모트 키 비교는,
    리모트 키 메모리로부터 제1 리모트 키를 판독하고, SQ 공급 키와 비교하는 단계;
    상기 제1 리모트 키가 상기 SQ 공급 키와 일치하지 않으면, 다음 리모트 키를 검사하기 위해 이동하는 단계;
    상기 제1 리모트 키가 상기 SQ 공급 키와 일치하면, 상기 제1 리모트 키에 대응하는 유효 비트를 상기 리모트 키 메모리에서 소거하는 단계;
    상기 리모트 키 메모리로부터 제2 리모트 키를 판독하고, 상기 SQ 공급 키와 비교하는 단계;
    상기 제2 리모트 키가 상기 SQ 공급 키와 일치하지 않으면, 다음 리모트 키를 검사하기 위해 이동하는 단계;
    상기 제2 리모트 키가 상기 SQ 공급 키와 일치하면, 상기 제2 리모트 키에 대응하는 유효 비트를 상기 리모트 키 메모리에서 소거하는 단계;
    상기 리모트 키 메모리로부터 제3 리모트 키를 판독하고, 상기 SQ 공급 키와 비교하는 단계;
    상기 제3 리모트 키가 상기 SQ 공급 키와 일치하지 않으면, 다음 리모트 키를 검사하기 위해 이동하는 단계;
    상기 제3 리모트 키가 상기 SQ 공급 키와 일치하면, 상기 제3 리모트 키에 대응하는 유효 비트를 상기 리모트 키 메모리에서 소거하는 단계;
    상기 리모트 키 메모리로부터 최종 리모트 키를 판독하고, 상기 SQ 공급 키와 비교하는 단계;
    상기 최종 리모트 키가 상기 SQ 공급 키와 일치하지 않으면, 모든 VI가 처리되었는지의 여부를 판정하기 위해 이동하는 단계; 및
    상기 최종 리모트 키가 상기 SQ 공급 키와 일치하면, 상기 최종 리모트 키에대응하는 유효 비트를 상기 리모트 키 메모리에서 소거하고, 모든 VI가 처리되었는지의 여부를 판정하는 단계
    에 의해 수행되는
    방법.
KR1020037012508A 2001-03-26 2002-02-21 Ngio/infiniband 어플리케이션용 리모트 키검증을 위한 방법 및 메커니즘 KR100555394B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/816,344 US6917987B2 (en) 2001-03-26 2001-03-26 Methodology and mechanism for remote key validation for NGIO/InfiniBand™ applications
US09/816,344 2001-03-26
PCT/US2002/005858 WO2002078254A2 (en) 2001-03-26 2002-02-21 Methodology and mechanism for remote key validation for ngio/infinibandtm applications

Publications (2)

Publication Number Publication Date
KR20030087025A true KR20030087025A (ko) 2003-11-12
KR100555394B1 KR100555394B1 (ko) 2006-02-24

Family

ID=25220334

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020037012508A KR100555394B1 (ko) 2001-03-26 2002-02-21 Ngio/infiniband 어플리케이션용 리모트 키검증을 위한 방법 및 메커니즘

Country Status (11)

Country Link
US (1) US6917987B2 (ko)
EP (1) EP1374521B1 (ko)
KR (1) KR100555394B1 (ko)
CN (1) CN100579108C (ko)
AT (1) ATE379912T1 (ko)
AU (1) AU2002238136A1 (ko)
CA (1) CA2442447A1 (ko)
DE (1) DE60223791D1 (ko)
HK (1) HK1060947A1 (ko)
TW (1) TWI239187B (ko)
WO (1) WO2002078254A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100689606B1 (ko) * 2006-11-10 2007-03-02 (주)해석 공공 하수라인의 오니제거형 배수구조

Families Citing this family (79)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6917987B2 (en) 2001-03-26 2005-07-12 Intel Corporation Methodology and mechanism for remote key validation for NGIO/InfiniBand™ applications
US6948004B2 (en) * 2001-03-28 2005-09-20 Intel Corporation Host-fabric adapter having work queue entry (WQE) ring hardware assist (HWA) mechanism
US7013353B2 (en) * 2001-03-30 2006-03-14 Intel Corporation Host-fabric adapter having an efficient multi-tasking pipelined instruction execution micro-controller subsystem
US7543290B2 (en) * 2001-04-11 2009-06-02 Mellanox Technologies Ltd. Multiple queue pair access with single doorbell
US7068667B2 (en) * 2001-04-27 2006-06-27 The Boeing Company Method and system for path building in a communications network
US20020198927A1 (en) * 2001-06-21 2002-12-26 International Business Machines Corporation Apparatus and method for routing internet protocol frames over a system area network
US20030018828A1 (en) * 2001-06-29 2003-01-23 International Business Machines Corporation Infiniband mixed semantic ethernet I/O path
US7320033B2 (en) * 2001-07-27 2008-01-15 Intel Corporation Dynamic local drive and printer sharing
US7194540B2 (en) * 2001-09-28 2007-03-20 Intel Corporation Mechanism for allowing multiple entities on the same host to handle messages of same service class in a cluster
US6854032B2 (en) * 2001-12-04 2005-02-08 Sun Microsystems, Inc. System for accessing a region of memory using remote address translation and using a memory window table and a memory region table
US20030131128A1 (en) * 2002-01-10 2003-07-10 Stanton Kevin B. Vlan mpls mapping: method to establish end-to-traffic path spanning local area network and a global network
US7328284B2 (en) * 2002-05-06 2008-02-05 Qlogic, Corporation Dynamic configuration of network data flow using a shared I/O subsystem
US7171495B2 (en) * 2002-05-06 2007-01-30 Silverstorm Technologies, Inc. System and method for implementing virtual adapters and virtual interfaces in a network system
US7356608B2 (en) * 2002-05-06 2008-04-08 Qlogic, Corporation System and method for implementing LAN within shared I/O subsystem
US7404012B2 (en) * 2002-05-06 2008-07-22 Qlogic, Corporation System and method for dynamic link aggregation in a shared I/O subsystem
US7447778B2 (en) 2002-05-06 2008-11-04 Qlogic, Corporation System and method for a shared I/O subsystem
WO2003105413A1 (en) * 2002-06-11 2003-12-18 Bigbangwidth Inc. Method and apparatus for switched physical alternate links in a packet network
US7149821B2 (en) * 2003-01-29 2006-12-12 International Business Machines Corporation Predictably defining input/output configurations for environments employing fabrics
US7502826B2 (en) * 2003-03-27 2009-03-10 Hewlett-Packard Development Company, L.P. Atomic operations
US7565504B2 (en) * 2003-03-27 2009-07-21 Hewlett-Packard Development Company, L.P. Memory window access mechanism
US7010633B2 (en) * 2003-04-10 2006-03-07 International Business Machines Corporation Apparatus, system and method for controlling access to facilities based on usage classes
US20040230695A1 (en) * 2003-05-15 2004-11-18 Anschutz Thomas Arnold Methods, systems, and computer program products for processing traffic in a communication network based on registration of an access session and/or application flow and specifying a treatment for the access session and/or application flow traffic
US20040252685A1 (en) * 2003-06-13 2004-12-16 Mellanox Technologies Ltd. Channel adapter with integrated switch
US7565454B2 (en) * 2003-07-18 2009-07-21 Microsoft Corporation State migration in multiple NIC RDMA enabled devices
US8037281B2 (en) * 2005-04-07 2011-10-11 Advanced Micro Devices, Inc. Miss-under-miss processing and cache flushing
US7787892B2 (en) 2005-10-05 2010-08-31 Via Technologies, Inc. Method and apparatus for adaptive multi-stage multi-threshold detection of paging indicators in wireless communication systems
US20090265485A1 (en) * 2005-11-30 2009-10-22 Broadcom Corporation Ring-based cache coherent bus
US9009214B2 (en) 2008-12-23 2015-04-14 International Business Machines Corporation Management of process-to-process inter-cluster communication requests
US8521895B2 (en) * 2008-12-23 2013-08-27 International Business Machines Corporation Management of application to application communication requests between data processing systems
US8499029B1 (en) * 2008-12-23 2013-07-30 International Business Machines Corporation Management of process-to-process communication requests
US9098354B2 (en) 2008-12-23 2015-08-04 International Business Machines Corporation Management of application to I/O device communication requests between data processing systems
US8240473B2 (en) * 2008-12-23 2012-08-14 Honda Motor Co., Ltd. Headliner packaging system with hinged clamp
US8122301B2 (en) * 2009-06-30 2012-02-21 Oracle America, Inc. Performing remote loads and stores over networks
US8589603B2 (en) * 2010-08-30 2013-11-19 International Business Machines Corporation Delaying acknowledgment of an operation until operation completion confirmed by local adapter read operation
US8589610B2 (en) * 2011-05-31 2013-11-19 Oracle International Corporation Method and system for receiving commands using a scoreboard on an infiniband host channel adaptor
US8484392B2 (en) 2011-05-31 2013-07-09 Oracle International Corporation Method and system for infiniband host channel adaptor quality of service
US8804752B2 (en) 2011-05-31 2014-08-12 Oracle International Corporation Method and system for temporary data unit storage on infiniband host channel adaptor
US20120331243A1 (en) 2011-06-24 2012-12-27 International Business Machines Corporation Remote Direct Memory Access ('RDMA') In A Parallel Computer
US8879579B2 (en) 2011-08-23 2014-11-04 Oracle International Corporation Method and system for requester virtual cut through
US9021123B2 (en) 2011-08-23 2015-04-28 Oracle International Corporation Method and system for responder side cut through of received data
US8832216B2 (en) * 2011-08-31 2014-09-09 Oracle International Corporation Method and system for conditional remote direct memory access write
CN104040541B (zh) 2011-12-08 2018-04-10 甲骨文国际公司 用于更高效地使用存储器至cpu带宽的技术
US9342314B2 (en) 2011-12-08 2016-05-17 Oracle International Corporation Efficient hardware instructions for single instruction multiple data processors
US9792117B2 (en) 2011-12-08 2017-10-17 Oracle International Corporation Loading values from a value vector into subregisters of a single instruction multiple data register
US9697174B2 (en) 2011-12-08 2017-07-04 Oracle International Corporation Efficient hardware instructions for processing bit vectors for single instruction multiple data processors
US10534606B2 (en) 2011-12-08 2020-01-14 Oracle International Corporation Run-length encoding decompression
US9292569B2 (en) 2012-10-02 2016-03-22 Oracle International Corporation Semi-join acceleration
US9256555B2 (en) 2012-12-20 2016-02-09 Oracle International Corporation Method and system for queue descriptor cache management for a host channel adapter
US9191452B2 (en) 2012-12-20 2015-11-17 Oracle International Corporation Method and system for an on-chip completion cache for optimized completion building
US9069485B2 (en) 2012-12-20 2015-06-30 Oracle International Corporation Doorbell backpressure avoidance mechanism on a host channel adapter
US9069633B2 (en) 2012-12-20 2015-06-30 Oracle America, Inc. Proxy queue pair for offloading
US9384072B2 (en) 2012-12-20 2016-07-05 Oracle International Corporation Distributed queue pair state on a host channel adapter
US8937949B2 (en) 2012-12-20 2015-01-20 Oracle International Corporation Method and system for Infiniband host channel adapter multicast packet replication mechanism
US9148352B2 (en) 2012-12-20 2015-09-29 Oracle International Corporation Method and system for dynamic repurposing of payload storage as a trace buffer
US9336158B2 (en) 2013-02-26 2016-05-10 Oracle International Corporation Method and system for simplified address translation support for static infiniband host channel adaptor structures
US9069705B2 (en) 2013-02-26 2015-06-30 Oracle International Corporation CAM bit error recovery
US8850085B2 (en) 2013-02-26 2014-09-30 Oracle International Corporation Bandwidth aware request throttling
US9606921B2 (en) 2013-09-21 2017-03-28 Oracle International Corporation Granular creation and refresh of columnar data
US9898414B2 (en) 2014-03-28 2018-02-20 Oracle International Corporation Memory corruption detection support for distributed shared memory applications
US10073885B2 (en) 2015-05-29 2018-09-11 Oracle International Corporation Optimizer statistics and cost model for in-memory tables
US9892071B2 (en) * 2015-08-03 2018-02-13 Pure Storage, Inc. Emulating a remote direct memory access (‘RDMA’) link between controllers in a storage array
US9990308B2 (en) 2015-08-31 2018-06-05 Oracle International Corporation Selective data compression for in-memory databases
DE102015220009A1 (de) * 2015-10-15 2017-04-20 Robert Bosch Gmbh Schaltungsanordnung zur Generierung eines Geheimnisses in einem Netzwerk
US10402425B2 (en) 2016-03-18 2019-09-03 Oracle International Corporation Tuple encoding aware direct memory access engine for scratchpad enabled multi-core processors
US10061714B2 (en) 2016-03-18 2018-08-28 Oracle International Corporation Tuple encoding aware direct memory access engine for scratchpad enabled multicore processors
US10055358B2 (en) 2016-03-18 2018-08-21 Oracle International Corporation Run length encoding aware direct memory access filtering engine for scratchpad enabled multicore processors
US10061832B2 (en) 2016-11-28 2018-08-28 Oracle International Corporation Database tuple-encoding-aware data partitioning in a direct memory access engine
US10599488B2 (en) 2016-06-29 2020-03-24 Oracle International Corporation Multi-purpose events for notification and sequence control in multi-core processor systems
US20180004681A1 (en) * 2016-07-02 2018-01-04 Intel Corporation Systems, Apparatuses, and Methods for Platform Security
US10380058B2 (en) 2016-09-06 2019-08-13 Oracle International Corporation Processor core to coprocessor interface with FIFO semantics
US10783102B2 (en) 2016-10-11 2020-09-22 Oracle International Corporation Dynamically configurable high performance database-aware hash engine
US10459859B2 (en) 2016-11-28 2019-10-29 Oracle International Corporation Multicast copy ring for database direct memory access filtering engine
US10176114B2 (en) 2016-11-28 2019-01-08 Oracle International Corporation Row identification number generation in database direct memory access engine
US10725947B2 (en) 2016-11-29 2020-07-28 Oracle International Corporation Bit vector gather row count calculation and handling in direct memory access engine
US10275180B2 (en) 2017-05-08 2019-04-30 Samsung Electronics Co., Ltd. Ethernet SSD system including storage offload engine (SoE) controller and ethernet switch
US10452547B2 (en) 2017-12-29 2019-10-22 Oracle International Corporation Fault-tolerant cache coherence over a lossy network
US10467139B2 (en) 2017-12-29 2019-11-05 Oracle International Corporation Fault-tolerant cache coherence over a lossy network
CN109691039B (zh) 2018-01-16 2020-04-28 华为技术有限公司 一种报文传输的方法及装置
CN116226027B (zh) * 2023-05-04 2023-08-15 苏州浪潮智能科技有限公司 数据传输系统、方法、装置、通信设备及存储介质

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6625768B1 (en) 2000-03-29 2003-09-23 Intel Corporation Test bus architecture
JP2001344153A (ja) * 2000-05-30 2001-12-14 Nec Corp マルチプロセッサシステムのキャッシュメモリ制御装置
US6778548B1 (en) 2000-06-26 2004-08-17 Intel Corporation Device to receive, buffer, and transmit packets of data in a packet switching network
US6775719B1 (en) 2000-09-28 2004-08-10 Intel Corporation Host-fabric adapter and method of connecting a host system to a channel-based switched fabric in a data network
US20020071450A1 (en) 2000-12-08 2002-06-13 Gasbarro Dominic J. 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
US6947970B2 (en) * 2000-12-19 2005-09-20 Intel Corporation Method and apparatus for multilevel translation and protection table
US6578122B2 (en) 2001-03-01 2003-06-10 International Business Machines Corporation Using an access key to protect and point to regions in windows for infiniband
US6917987B2 (en) 2001-03-26 2005-07-12 Intel Corporation Methodology and mechanism for remote key validation for NGIO/InfiniBand™ applications
US6948004B2 (en) 2001-03-28 2005-09-20 Intel Corporation Host-fabric adapter having work queue entry (WQE) ring hardware assist (HWA) mechanism
US7013353B2 (en) 2001-03-30 2006-03-14 Intel Corporation Host-fabric adapter having an efficient multi-tasking pipelined instruction execution micro-controller subsystem

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100689606B1 (ko) * 2006-11-10 2007-03-02 (주)해석 공공 하수라인의 오니제거형 배수구조

Also Published As

Publication number Publication date
EP1374521A2 (en) 2004-01-02
WO2002078254A2 (en) 2002-10-03
DE60223791D1 (de) 2008-01-10
EP1374521B1 (en) 2007-11-28
KR100555394B1 (ko) 2006-02-24
AU2002238136A1 (en) 2002-10-08
US6917987B2 (en) 2005-07-12
TWI239187B (en) 2005-09-01
CA2442447A1 (en) 2002-10-03
CN1640089A (zh) 2005-07-13
ATE379912T1 (de) 2007-12-15
CN100579108C (zh) 2010-01-06
HK1060947A1 (en) 2004-08-27
US20020184392A1 (en) 2002-12-05
WO2002078254A3 (en) 2002-12-19

Similar Documents

Publication Publication Date Title
KR100555394B1 (ko) Ngio/infiniband 어플리케이션용 리모트 키검증을 위한 방법 및 메커니즘
US6948004B2 (en) Host-fabric adapter having work queue entry (WQE) ring hardware assist (HWA) mechanism
US7013353B2 (en) Host-fabric adapter having an efficient multi-tasking pipelined instruction execution micro-controller subsystem
US6831916B1 (en) Host-fabric adapter and method of connecting a host system to a channel-based switched fabric in a data network
US6775719B1 (en) Host-fabric adapter and method of connecting a host system to a channel-based switched fabric in a data network
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
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
US7107359B1 (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
US6578122B2 (en) Using an access key to protect and point to regions in windows for infiniband
EP1399829B1 (en) End node partitioning using local identifiers
EP1358562B8 (en) Method and apparatus for controlling flow of data between data processing systems via a memory
JP5735883B2 (ja) ローカル・アダプタの読み取り操作により操作の完了が確認されるまで操作の肯定応答を遅延させる方法
US8341237B2 (en) Systems, methods and computer program products for automatically triggering operations on a queue pair
US9280297B1 (en) Transactional memory that supports a put with low priority ring command
US20020073257A1 (en) Transferring foreign protocols across a system area network
JP4317365B2 (ja) 周辺デバイスからホスト・コンピュータ・システムに割込みを転送する方法および装置
JP2004523829A (ja) メモリを介してデータ処理システムの間でデータのフローを制御する方法および装置
KR20020060623A (ko) 데이터를 전송하기 위한 신뢰성 있는 프로토콜을 제공하는방법 및 장치
WO2022235337A1 (en) Network attached mpi processing architecture in smartnics
US9342313B2 (en) Transactional memory that supports a get from one of a set of rings command
US8055818B2 (en) Low latency queue pairs for I/O adapters

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: 20130219

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20140203

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee