본 발명은 일반적으로 전자 어플라이언스 내에 배치될 스케일러블/확장 가능 일반 입출력(I/O) 통신 플랫폼을 제공하기 위한 혁신적인 지점간 상호 연결 아키텍처, 통신 프로토콜 및 관련 방법들에 관한 것이다. 이점에 있어서, 혁신적인 강화된 일반 입출력(EGIO; Enhanced GIO) 상호 연결 아키텍처 및 관련 EGIO 통신 프로토콜이 제시된다. 일 실시예에 따라, EGIO 아키텍처의 이종 요소들은 호스트 브리지(host bridge), 스위치, 또는 종단점(end-point)들 중 하나 이상을 포함하며, 이들 각각은 요소들 간의 EGIO 통신을 지원하기 위해 적어도 EGIO 기능들중의 일부를 갖는다.
이러한 요소들의 EGIO 설비들 간의 통신은 보다 자세히 후술되는 바와 같이, 가상 통신 채널들, 테일러(tailor) 기반의 에러 발송(error forwarding), 레거시(legacy) PCI 기반의 장치들을 위한 지원, 다중 요청 응답 타입(들), 흐름 제어 및/또는 데이터 일체성 관리 설비들을 포함하지만 이들로만 제한되지 않는 하나 이상의 혁신적인 특징들을 지원하는 혁신적인 EGIO 통신 프로토콜을 사용함으로써 직렬 통신 채널(들)을 사용하여 실행된다. 본 발명의 일 태양에 따라, 통신 프로토콜은 물리층, 데이터 링크층(data link layer) 및 트랜잭션층을 포함하는 EGIO 통신 프로토콜 스택을 도입함으로써 컴퓨팅 어플라이언스의 각각의 요소들내에서 지원된다.
다른 구현예에 따라, 상술된 특징들 중 적어도 일부를 포함하는 EGIO 엔진을 포함하는 통신 에이전트(communication agent)가 도입된다. 비 EGIO(non-EGIO) 상호 연결 컴플라이언트 아키텍처(interconnection compliant architecture)에 본 발명의 통신 프로토콜 요건들을 도입하기 위해 통신 에이전트가 전자 어플라이언스의 레거시 요소들에 의해 사용될 수 있음이 후술된 바로부터 명백해질 것이다. 상술된 바에서, 또한 후술된 바에 비추어 볼때, 본 기술 분야의 당업자들은 본 발명의 하나 이상의 요소들이 하드웨어, 소프트웨어, 전달 신호 또는 그 결합으로 구현될 수 있음을 알 것이다.
본 명세서 도처에 "일 실시예"가 언급됨은 실시예와 관련하여 기술된 특정 기능, 구조 또는 특징이 본 발명의 적어도 하나의 실시예에 포함됨을 의미한다. 따라서, 본 명세서의 여러 곳에 "일 실시예에서"라는 구절들이 나타나는데 모두 동일한 실시예를 나타내는 것은 아니다. 또한, 특정 기능들, 구조들 또는 특성들이 임의의 적합한 방식으로 하나 이상의 실시예들에서 결합될 수 있다.
용어
혁신적인 EGIO 상호 연결 아키텍처 및 통신 프로토콜을 상세히 설명하기 전에, 상세한 설명에서 사용될 어휘 요소들을 소개하는 것이 유용할 수 있다.
ㆍ 광고(Advertise): EGIO 프로토콜의 흐름 제어 갱신 메시지를 사용하여 흐름 제어 크레디트(credit) 가용성에 관한 정보를 송신하는 수신기의 동작을 지칭하기 위해 EGIO 흐름 제어의 문맥(context)에서 사용됨;
ㆍ 컴플리터(Completer): 요청에 의해 어드레스되는 논리 장치;
ㆍ 컴플리터 ID(Completer ID): 컴플리터의 버스 식별자(예컨대, 번호), 장치 식별자 및 요청의 컴플리터를 고유하게 식별하는 기능 식별자 중 하나 이상의 결합;
ㆍ 컴플리션(Completion): 시퀀스를 종료하거나 부분적으로 종료하는데 사용되는 패킷을 컴플리션이라고 한다. 일 구현예에서, 컴플리션은 선행 요청에 대응하며, 때때로 데이터를 포함한다;
ㆍ 구성 스페이스(Configuration space): EGIO 아키텍처 내의 4개의 어드레스 스페이스들 중 하나. 구성 스페이스 어드레스를 갖는 패킷들이 장치를 구성하는데 사용된다;
ㆍ 컴포넌트(Component): 물리 장치(즉, 단일 패키지 내에 있음);
ㆍ 데이터 링크 층: 트랜잭션 층(위쪽) 및 물리층(아래쪽) 사이에 있는 EGIO 아키텍처의 중간층;
ㆍ DLLP: 데이터 링크 층 패킷은 링크 관리 기능들을 지원하기 위해 데이터 링크 층에서 생성된 패킷이다;
ㆍ 다운스트림(Downstream): 요소의 상대적 위치를 말하거나, 또는 호스트 브리지로부터의 정보의 흐름을 말한다;
ㆍ 종단점(End-point): type 00h 구성 스페이스 헤더를 갖는 EGIO 장치;
ㆍ 흐름 제어(Flow Control): 수신 버퍼 오버플로를 방지하기 위해 또한 송신기가 정렬 규칙(ordering rule)들에 따르게 하기 위해 수신기로부터의 수신 버퍼 정보를 송신기에 전달하는 방법;
ㆍ 흐름 제어 패킷(Flow Control Packet; FCP): 하나의 컴포넌트의 트랜잭션 층으로부터의 흐름 제어 정보를 다른 컴포넌트의 트랜잭션 층에 송신하는데 사용되는 트랜잭션 층 패킷(TLP;transaction layer packet);
ㆍ 기능(Function): 고유한 기능 식별자(예컨대, 기능 번호)에 의해 구성 스페이스에서 식별되는 다기능 장치의 하나의 독립 섹션;
ㆍ 계층(Hierarchy): EGIO 아키텍처에서 구현된 입출력 상호 연결 위상을 정의한다. 계층은 계산 장치(예컨대, 호스트 CPU)에 가장 가까운 링크에 대응하는 단일 호스트 브리지에 의해 특징지어진다;
ㆍ 계층 도메인(Hierarchy domain): EGIO 계층은 호스트 브리지에 의해 하나 이상의 EGIO 인터페이스의 출처를 명시하는 다수의 단편들로 세그먼트화된다. 이러한 단편들을 계층 도메인이라고 한다;
ㆍ 호스트 브리지(Host Bridge): 호스트 CPU 복합체를 하나 이상의 EGIO 링크들에 연결한다;
ㆍ IO 스페이스(IO Space): EGIO 아키텍처의 4개의 어드레스 스페이스들 중 하나;
ㆍ 레인(Lane): 물리적 링크의 상이한 신호 쌍들의 집합으로서, 한 쌍은 송신을 위한 것이고 다른 한 쌍은 수신을 위한 것이다. by-N 인터페이스는 N개의 레인들로 구성된다;
ㆍ 링크(Link): 2개의 컴포넌트들 간의 듀얼-심플렉스(dual-simplex) 통신 경로; 2개의 포트들(하나는 송신 포트,하나는 수신 포트) 및 이들의 상호 연결 레인(들)의 집합;
ㆍ 논리 버스(Logical Bus): 구성 스페이스에서 동일한 버스 번호를 갖는 한 집합의 장치들 간의 논리적 연결;
ㆍ 논리 장치(Logical Device): 구성 스페이스의 고유한 장치 식별자에 응답하는 EGIO 아키텍처의 한 요소;
ㆍ 메모리 스페이스(Memory Space): EGIO 아키텍처의 4개의 어드레스 스페이스들 중 하나;
ㆍ 메시지(Message): 메시지 스페이스 타입을 갖는 패킷;
ㆍ 메시지 스페이스(Message Space): EGIO 아키텍처의 4개의 어드레스 스페이스들 중 하나. PCI에서 정의된 특별한 사이클들이 메시지 스페이스의 부분 집합으로서 포함되며, 따라서, 레거시 장치(들)와의 인터페이스를 제공한다;
ㆍ 레거시 소프트웨어 모델(들)(Legacy Software Model(s)): 레거시 장치를 초기화, 발견, 구성 및 사용하는데 필요한 소프트웨어 모델(들)(예컨대, EGIO-대-레거시 브리지 내에 PCI 소프트웨어 모델을 포함하는 것은 레거시 장치와의 상호 동작을 용이하게 한다);
ㆍ 물리층(Physical Layer): 2개의 컴포넌트들 간의 통신 매체와 직접 인터페이스하는 EGIO 아키텍처의 층;
ㆍ 포트(Port): 컴포넌트와 관련된 인터페이스로서, 컴포넌트와 EGIO 링크 사이에 있다.
ㆍ 수신기(Receiver): 링크를 가로질러 패킷 정보를 수신하는 컴포넌트가 수신기이다(때때로 타겟이라고도 함);
ㆍ 요청(Request): 시퀀스를 개시하는데 사용되는 패킷을 요청이라고 한다. 요청은 몇몇 동작 코드를 포함하며, 때때로 어드레스 및 길이, 데이터 또는 다른 정보를 포함한다;
ㆍ 리퀘스터(Requester): EGIO 도메인에 시퀀스를 처음으로 도입하는 논리 장치;
ㆍ 리퀘스터 ID(Requester ID): 리퀘스터의 버스 식별자(예컨대, 버스 번호), 장 치 식별자 및 기능 식별자 중 하나 이상의 결합. 상기 기능 식별자는 리퀘스터를 고유하게 식별한다. 대부분의 경우, EGIO 브리지 또는 스위치는 리퀘스터 ID를 수정하지 않고 한 인터페이스로부터 다른 인터페이스로 요청들을 발송한다. EGIO 버스 이외의 버스로부터의 브리지는 통상 이러한 요청에 대한 컴플리션을 생성할 때 사용되도록 리퀘스터 ID를 기억해야 한다;
ㆍ 시퀀스(Sequence): 리퀘스터에 의해 단일 논리 전송을 실행하는 것 관련된 단일 요청 및 0개 이상의 컴플리션들;
ㆍ 시퀀스 ID(Sequence ID): 리퀘스터 ID 및 태그의 하나 이상의 결합이며, 결합은 공통 시퀀스의 일부인 요청들 및 컴플리션들을 고유하게 식별한다.
ㆍ 분할 트랜잭션(Split transaction): 분할 응답으로 타겟(컴플리터, 또는 브리지)이 종료하는 초기 트랜잭션(분할 요청)을 포함하는 단일 논리 전송. 초기 트랜잭션에 이어서, 판독 데이터(판독인 경우) 또는 컴플리션 메시지를 다시 리퀘스터에게 송신하기 위해 컴플리터(또는 브리지)에 의해 개시되는 하나 이상의 트랜잭션들(분할 컴플리션들)이 뒤따른다.
ㆍ 심볼(Symbol): 8b/10b 인코딩의 결과로서 생성된 10 비트 수량(quantity);
ㆍ 심볼 타임(Symbol Time): 한 레인에 심볼을 배치하는데 필요한 시간;
ㆍ 태그(Tag): 다른 시퀀스들로부터 구별하기 위해 리퀘스터에 의해 소정의 시퀀스에 할당된 번호 - 시퀀스 ID의 일부임;
ㆍ 트랜잭션 층 패킷(Transaction Layer Packet): TLP는 요청 또는 컴플리션을 전달하기 위해 트랜잭션 층 내에서 생성된 패킷이다;
ㆍ 트랜잭션 층(Transaction Layer): 트랜잭션(예컨대, 판독, 기록 등) 레벨에서 동작하는 EGIO 아키텍처의 최외부(최상부) 층;
ㆍ 트랜잭션 기술자(Transaction Descriptor): 어드레스, 길이 및 타입에 부가하여 트랜잭션의 속성들을 기술하는 패킷 헤더의 한 요소; 및
전자 어플라이언스의 예시
도 1은 본 발명의 내용에 따라, 강화된 일반 입출력(EGIO) 버스 아키텍처, 프로토콜 및 관련 방법들을 포함하는 간단한 전자 어플라이언스(100)의 블록도이다. 도 1에 도시된 일례에 따라, 전자 어플라이언스(100)는 프로세서(들)(102), 호스트 브리지(104), 스위치(108) 및 종단점들(110) 중 하나 이상을 포함하는 것으로 도시되어 있으며, 각각은 도시된 바와 같이 결합되어 있다. 본 발명의 내용에 따라, 본 발명의 하나 이상의 태양들을 용이하게 하기 위해 적어도 호스트 브리지(104), 스위치(들)(108) 및 종단점들(110)에는 EGIO 통신 인터페이스(106)의 인스턴스가 하나 이상 부여된다.
도시된 바와 같이, 요소들(102, 104, 108 및 110) 각각은 EGIO 인터페이스(106)를 통해 하나 이상의 EGIO 통신 채널(들)을 지원하는 통신 링크(112)를 통해 적어도 하나의 다른 요소에 통신상 결합된다. 상술된 바와 같이, 전자 어플라이언스(100)는 임의의 매우 다양한 전형적인 또한 비전형적인 컴퓨팅 시스템, 서버, 네트워크 스위치, 네트워크 루터, 무선 통신 가입자 유닛, 무선 통신 전화 기반 구조 요소, 퍼스널 디지털 어시스턴트, 셋탑 박스, 또는 본 명세서에 기술된 EGIO 상호 연결 아키텍처, 통신 프로토콜 또는 관련 방법들 중 적어도 일부의 통합을 통해 도입된 통신 리소스들로부터 이익을 얻는 임의의 전기 어플라이언스 중 하나 이상을 나타내는 것으로 의도된다.
도 1에 도시된 구현예에 따르면, 전자 어플라이언스(100)는 하나 이상의 프로세서(들)(102)를 갖는다. 본 명세서에서 사용되는 바와 같이, 프로세서(들)(102)는 전자 어플라이언스(100)의 기능적 성능(functional capability)의 하나 이상의 태양들을 제어한다. 이점에 있어서, 프로세서(들)(102)는 임의의 매우 다양한 제어 로직을 대표하며, 상기 제어 로직은 마이크로프로세서, 프로그래머블 로직 장치(PLD; Programmable Logic Device), 프로그래머블 로직 어레이(PLA; Programmable Logic Array), 응용 주문형 집적 회로(ASIC; Application Specific IC), 마이크로컨트롤러 등 중에서 하나 이상을 포함하는데, 이들로만 한정되지는 않는다.
호스트 브리지(104)는 전자 어플라이언스 EGIO 아키텍처의 프로세서(102) 및/또는 프로세서/메모리 복합체 및 하나 이상의 다른 요소들(108, 110) 간의 통신 인터페이스를 제공하며, 이점에 있어서, EGIO 아키텍처 계층의 루트이다. 본 명세서에서 사용되는 바와 같이, 호스트 브리지(104)는 호스트 컨트롤러, 메모리 컨트롤러 허브(hub), IO 컨트롤러 허브, 또는 상기 요소들의 임의의 결합, 또는 칩셋/CPU 요소들의 소정의 결합(즉, 컴퓨팅 시스템 환경에서)에 가장 가까운 EGIO 계층의 논리 엔티티를 나타낸다. 이점에 있어서, 도 1에는 단일 유닛으로 도시되어 있지만, 호스트 브리지(104)는 다수의 물리적 컴포넌트들을 가질 수 있는 단일 논리 개체로 생각될 수 있다. 도 1에 도시된 일 구현예에 따라, 다른 주변 장치 들, 예컨대, 스위치(들)(108), 종단점(들)(110) 및 특별히 도시되어 있지 않지만, 레거시 브리지(들)(114 또는 116)와의 통신을 용이하게 하기 위해 호스트 브리지(104)에는 하나 이상의 EGIO 인터페이스(들)(106)이 배치된다. 한 구현예에 따라, 각각의 EGIO 인터페이스(106)는 상이한 EGIO 계층 도메인을 나타낸다. 이점에 있어서, 도 1에 도시된 구현예는 3개의 계층 도메인들을 갖는 호스트 브리지(104)를 나타낸다. 다수의 개별 EGIO 인터페이스들(106)을 포함하는 것으로 도시되어 있지만, 단일 인터페이스(106)가 다수의 장치들과의 통신을 수용하기 위한 다수의 포트들을 갖는 다른 구현예들도 예상됨을 주지해야만 한다.
본 발명의 내용에 따라, 스위치들(108)은 적어도 하나의 업스트림 포트(즉, 호스트 브리지(104)를 향함) 및 적어도 하나의 다운스트림 포트를 갖는다. 한 구현예에 따라, 스위치(108)는 호스트 브리지에 가장 가까운 한 포트{즉, 인터페이스의 포트 또는 인터페이스(106) 그 자체}를 업스트림 포트로서 구별하며, 이때 다른 모든 포트(들)는 다운스트림 포트들이다. 한 구현예에 따라, 스위치들(108)은 PCI-대PCI 브리지로서 구성 소프트웨어(예컨대, 레거시 구성 소프트웨어)에서 나타나며, 루팅 트랜잭션을 위해 PCI 브리지 메카니즘을 사용한다.
스위치들(108)의 문맥에서, 피어-투-피어(peer-to-peer) 트랜잭션들은 수신 포트 및 송신 포트가 모두 다운스트림 포트들인 트랜잭션들로서 정의된다. 한 구현예에 따라, 스위치들(108)은 임의의 포트로부터 임의의 다른 포트로의 로킹된(locked) 트랜잭션 시퀀스와 관련된 트랜잭션 층 패킷들을 제외한 모든 타입들의 트랜잭션 층 패킷들(TLP)의 루팅을 지원한다. 이점에 있어서, 모든 방송 메 시지들은 통상 수신 포트로부터 스위치(108)상의 모든 다른 포트들로 루팅해야만 한다. 포트로 루팅될 수 없는 트랜잭션 층 패킷은 통상 스위치(108)에 의해 지원되지 않은 TLP로 종료돼야만 한다. 송신 포트{예컨대, 레거시 브리지(114, 116)에 결합된 송신 포트}를 위한 상이한 프로토콜 요건을 따르기 위해 변경이 요구되지 않는 한 수신 포트로부터 송신 포트로 전송될 경우 스위치들(108)은 통상 트랜잭션 층 패킷(들)(TLP)을 변경하지 않는다.
스위치들(108)이 다른 장치들을 대신하여 동작하며, 이점에 있어서, 트래픽 타입들 및 패턴들을 미리 알지 못함을 이해해야 한다. 보다 상세히 후술되는 한 구현예에 따라, 본 발명의 흐름 제어 및 데이터 일체성 태양들은 종단 대 종단(end-to-end) 기준이 아닌 링크 단위 기준으로 구현된다. 따라서, 상기 한 구현예에 따라, 스위치들(108)은 흐름 제어 및 데이터 일체성을 위해 사용되는 프로토콜에 참여한다. 흐름 제어에 참여하기 위해, 스위치(108)는 스위치(108)의 성능 특성들을 향상시키기 위해 포트들 각각에 대한 개별 흐름 제어를 유지한다. 유사하게, 스위치(108)는 보다 상세히 후술된 TLP 에러 검출 메카니즘들을 사용하여 스위치에 입력되는 각각의 TLP를 체크함으로써 링크 단위 기준으로 데이터 일체성 프로세스들을 지원한다. 한 구현예에 따라, 스위치(108)의 다운스트림 포트들이 새로운 EGIO 계층 도메인들을 형성하는 것이 허용된다.
도 1을 계속하여 참조하면, 종단점(110)은 Type 00hex(00h) 구성 스페이스 헤더를 갖는 임의의 장치로 정의된다. 종단점 장치(110)는 자신을 대신하여 또는 별개의 비 EGIO(non-EGIO) 장치를 대신하는 EGIO 시맨틱(semantic) 트랜잭션의 리 퀘스터 또는 컴플리터일 수 있다. 이러한 종단점들(110)의 일례들은 EGIO 컴플라이언트 그래픽스 장치(들), EGIO-컴플라이언트 메모리 컨트롤러 및/또는 EGIO나 USB(universal serial bus), 이더넷 등과 같은 몇몇 다른 인터페이스 간의 커넥션을 구현하는 장치들을 포함하는데, 이들로만 제한되는 것은 아니다. 보다 상세히 후술되는 레거시 브리지(114, 116)와 달리, 비 EGIO 컴플라이언트 장치들을 위한 인터페이스로서 동작하는 종단점(110)은 상기 비 EGIO 컴플라이언트 장치들을 위한 충분한 소프트웨어 지원을 제공하지 않을 수 있다. 호스트 프로세서(102)를 EGIO 아키텍처에 연결하는 장치들은 호스트 브리지(104)로 간주되는데, 프로세서 복합체(102)에 대한 위치에 의하여만 구별되는 EGIO 아키텍처 내에 위치하는 다른 종단점들(110)과 동일한 장치 타입일 수 있다.
본 발명의 내용에 따라, 종단점들(110)은 3개의 범주들 중 하나 이상으로 묶여질 수 있는데, 3개의 범주들은 (1) 레거시 및 EGIO 컴플라이언트 종단점들, (2) 레거시 종단점들 및 (3) EGIO 컴플라이언트 종단점이며, 각각은 EGIO 아키텍처 내의 상이한 동작 규칙들을 갖는다.
상술된 바와 같이, EGIO 컴플라이언트 종단점들(110)은 EGIO 종단점(110)이 type 00h 구성 스페이스 헤더를 갖는다는 점에서 레거시 종단점들(예컨대, 118, 120)과 구별된다. 상기 종단점들(110, 118 및 120) 중 하나는 컴플리터로서 구성 요청들을 지원한다. 이러한 종단점들은 구성 요청들을 생성하는 것이 허용되며, 레거시 종단점 또는 EGIO 컴플라이언트 종단점으로 분류될 수 있지만, 이러한 분류는 이하의 추가 규칙들을 고수할 필요가 있을 수 있다.
레거시 종단점들(예컨대, 118, 120)이 컴플리터로서 IO 요청들을 지원하는 것이 허용되며, IO 요청들을 생성하는 것도 허용된다. 레거시 소프트웨어 지원 요건에서 필요로 하는 경우, 레거시 종단점들(118, 120)은 컴플리터들로서 로크 시맨틱스(lock semantics)를 생성하는 것이 허용된다. 레거시 종단점들은 통상 로킹된 요청을 생성하지 않는다.
EGIO 컴플라이언트 종단점들(110)은 통상 컴플리터로서 IO 요청들을 지원하지 않으며, IO 요청들을 생성하지 않는다. EGIO 종단점들(110)은 컴플리터로서 로킹된 요청들을 지원하지 않으며, 로킹된 요청들을 리퀘스터로서 생성하지 않는다.
레거시 브리지들(114, 116)에 대한 EGIO는 EGIO 아키텍처에 대해 인터페이스하는 레거시 장치들(118, 120)을 위한 실질적인 소프트웨어 지원, 예컨대 완전한 소프트웨어 지원을 포함하는 특수한 종단점들(110)이다. 이점에 있어서, 레거시 브리지(114, 116)는 통상 하나의 업스트림 포트(보다 많을 수 있음) 및 다수의 다운스트림 포트들(단지 하나일 수 있음)을 갖는다. 로킹된 요청들은 레거시 소프트웨어 모델에 따라 지원된다. 레거시 브리지(114, 116)의 업스트림 포트는 링크 단위 기준으로 흐름 제어를 지원하며, 보다 상세히 후술되는 EGIO 아키텍처의 흐름 제어 및 데이터 일체성 규칙들을 고수해야만 한다.
본 명세서에서 사용되는 바와 같이, 링크(112)는 구리 라인, 광 라인, 무선 통신 채널(들), 적외선 통신 링크 등을 포함하지만 이들로만 한정되지 않는 매우 다양한 통신 매체들 중 임의의 통신 매체들을 나타낸다. 일 구현예에 따르면, EGIO 링크(112)는 차동 쌍(differential pair)의 직렬 라인들이며, 한 쌍은 각각 송신 통신 및 수신 통신을 지원함으로써, 전이중(full-duplex) 통신 기능을 지원한다. 한 구현예에 따라, 링크는 초기(베이스) 동작 주파수가 2.5 GHz인 스케일러블 직렬 클로킹 주파수를 제공한다. 방향별 인터페이스 폭은 x1, x2, x4, x8, x12, x16, x32 물리 레인들로부터 스케일러블하다. 상술된 바와 같이, 또한 보다 상세히 후술되는 바와 같이, EGIO 링크(112)는 장치들 간의 다수의 가상 채널들을 지원함으로써, 하나 이상의 가상 채널(예컨대 한 채널은 오디오를 위한 것이며 한 채널은 비디오를 위한 것)들을 사용하여 상기 장치들 간의 등시성 트래픽의 무방해 통신(uninteruupted communication)을 지원할 수 있다.
EGIO 인터페이스 아키텍처의 예시
도 2는 본 발명의 일 구현예에 따라, 요소들 간의 통신을 용이하게 하기 위해 전자 어플라이언스의 하나 이상의 요소들에 의해 사용되는 EGIO 인터페이스(106) 아키텍처의 일례를 도시한 도면이다. 도 2에 도시된 구현예에 따라, EGIO 인터페이스(106)는 트랜잭션 층(202), 데이터 링크 층(204) 및 물리층(208)을 포함하는 통신 프로토콜 스택으로 표현될 수 있다. 도시된 바와 같이, 물리 링크 층 인터페이스는 논리 서브-블록(210), 물리 서브-블록을 포함하는 것으로 도시되어 있으며, 각각은 보다 상세히 후술될 것이다.
트랜잭션 층
본 발명의 내용에 따라, 트랜잭션 층(202)은 EGIO 아키텍처와 장치 코어(device core) 간의 인터페이스를 제공한다. 이점에 있어서, 트랜잭션 층(202)의 최우선적인 역할은 호스트 장치(또는 에이전트) 내의 하나 이상의 논리 장치들을 위한 패킷들(즉, 트랜잭션 층 패킷들 또는 TLP)의 어셈블리 및 역어셈블리(disassembly)이다.
어드레스 스페이스, 트랜잭션 타입 및 용도
트랜잭션들은 개시자 에이전트(initiator agent)와 타겟 에이전트(target agent) 간의 정보 전송 기반을 형성한다. 일 실시예에 따라, 혁신적인 EGIO 아키텍처 내에서 4개의 어드레스 스페이스들, 예컨대, 구성 어드레스 스페이스, 메카니즘 어드레스 스페이스, 입출력 어드레스 스페이스 및 메시지 어드레스 스페이스가 정의되는데, 각각은 자신만의 고유한 의도된 용도를 갖는다(예컨대, 보다 상세히 후술되는 도 7을 참조하라).
메모리 스페이스(706) 트랜잭션들은 메모리 매핑(memory-mapped) 위치로/로부터의 데이터 전송을 위한 하나 이상의 판독 요청들 및 기록 요청들을 포함한다. 메모리 스페이스 트랜잭션들은 2개의 상이한 어드레스 형식들, 예컨대, 짧은 어드레스 형식(예컨대, 32-비트 어드레스) 또는 긴 어드레스 형식(예컨대, 64-비트 길이)을 사용할 수 있다. 일 실시예에 따라, EGIO 아키텍처는 로크 프로토콜 시맨틱스(lock protocol semantics)를 사용하여 종래의 판독, 변경 및 기록 시퀀스들에 대비한다(즉, 에이전트가 변경된 메모리 스페이스에 대한 액세스를 로크할 수 있음). 특히, 특정 장치 규칙들(브리지, 스위치, 종단점, 레거시 브리지)에 따라, 다운스트림 로크들에 대한 지원이 허용된다. 상술된 바와 같이, 레거시 장치들을 지원하기 위해 이러한 로크 시맨틱스가 지원된다.
IO 스페이스(704) 트랜잭션들은 IO 어드레스 스페이스(예컨대, 16-비트 IO 어드레스 스페이스) 내의 입/출력 매핑 메모리 레지스터(input/output mapped memory register)들에 액세스하는데 사용된다. 인텔 아키텍처 프로세서들 등과 같은 특정 프로세서들(102)은 프로세서의 명령 집합을 통한 n개의 IO 스페이스 정의를 포함한다. 따라서, 입출력 스페이스 트랜잭션들은 IO 매핑 위치로/로부터의 데이터 전송을 위한 판독 요청들 및 기록 요청들을 포함한다.
구성 스페이스(702) 트랜잭션은 EGIO 장치들의 구성 스페이스에 액세스하는데 사용된다. 구성 스페이스에 대한 트랜잭션들은 판독 요청들 및 기록 요청들을 포함한다. 종래의 프로세서들이 통상 고유한 구성 스페이스를 포함하지 않는 만큼, 이러한 스페이스는 종래의 PCI 구성 스페이스 액세스 메카니즘들과 호환 가능한 소프트웨어인 메카니즘을 통해(예컨대, CFC/CFC8-베이스 PCI 구성 메카니즘 #1을 사용하여) 매핑된다. 대안으로, 메모리 별명 메카니즘(memory alias mechanism)이 구성 스페이스에 액세스하는데 사용될 수 있다.
메시지 스페이스(708) 트랜잭션들(또는 간단히 메시지들)은 인터페이스(들)(106)를 통해 EGIO 에이전트들 간의 대역내(in-band) 통신을 지원하기 위해 정의된다. 종래의 프로세서들은 고유한 메시지 스페이스를 위한 지원을 포함하지 않으므로, 이는 EGIO 인터페이스(106) 내의 EGIO 에이전트들을 통해 인에이블된다. 일 구현예에 따라, 인터럽트 및 전력 관리 요청들과 같은 전형적인 "측대역(side-band)" 신호들은 레거시 신호들을 지원하는데 필요한 핀 카운트(pin count)를 줄이기 위해 메시지들로서 구현된다. 몇몇 프로세서들 및 PCI 버스는 EGIO 인터페이스(106) 내의 메시지들로 또한 매핑되는 "특별 사이클" 개념을 포함 한다. 한 실시예에 따라, 메시지들은 일반적으로 2개의 범주들, 즉 표준 메시지 및 벤더 정의(vendor-defined) 메시지로 분할된다.
도시된 일 실시예에 따르면, 표준 메시지는 범용 메시지 그룹 및 시스템 관리 메시지 그룹을 포함한다. 범용 메시지들은 단일 목적지 메시지(single destination message) 또는 방송/멀티캐스트 메시지(broadcast/multicast message)일 수 있다. 시스템 관리 메시지 그룹은 인터럽트 제어 메시지, 전력 관리 메시지, 정렬 제어 프리미티브(ordering control primitives) 및 에러 시그널링(error signaling) 중 하나 이상으로 구성될 수 있는데, 상기 일례들은 후술된다.
일 구현예에 따라, 범용 메시지는 로킹된 트랜잭션을 지원하는 메시지들을 포함한다. 본 일 구현예에 따라, UNLOCK 메시지가 도입되며, 여기서 스위치들(예컨대, 108)은 로킹된 트랜잭션에 참여할 수 있는 임의의 포트를 통해 UNLOCK 메시지를 통상 발송해야만 한다. 로킹되지 않을 때 UNLOCK 메시지를 수신하는 종단점 장치들(예컨대, 110, 118, 120)은 메시지를 무시할 것이다. 그렇지 않으면, 로킹된 장치들은 UNLOCK 메시지를 수신할 때 언로킹(unlock)할 것이다.
일 구현예에 따라, 시스템 관리 메시지 그룹은 정렬 및 동기화 메시지들을 위한 특별 메시지들을 포함한다. 이러한 메시지들 중 하나는 EGIO 아키텍처의 요소들을 수신함으로써 생성된 트랜잭션들에 대해 엄격한 정렬 규칙들을 부과하는 FENCE 메시지이다. 한 구현예에 따라, FENCE 메시지들은 네트워크 요소들, 예컨대, 종단점들의 선택된 부분 집합에 의하여만 반응된다. 상술된 바 외에, 예컨대, 테일러 에러 발송을 사용하여 정정 가능한 에러, 정정 불가능한 에러 및 치명적인 에러들을 나타내는 메시지들이 본 명세서에서 예상된다.
상술된 본 발명의 한 태양에 따라, 시스템 관리 메시지 그룹은 대역내 메시지들을 사용하여 인터럽트의 시그널링에 대비한다. 한 구현예에 따라, ASSERT_INTx/DEASSERT_INTx 메시지 쌍이 도입되는데, 표명 인터럽트 메시지의 발행이 호스트 브리지(104)를 통해 프로세서 복합체에 송신된다. 도시된 일 구현예에 따라, ASSERT_INTx/DEASSERT_INTx 메시지 쌍의 용도 규칙은 상술된 PCI 명세서에서 발견된 PCI INTx# 신호들의 규칙을 그대로 반영한다. 임의의 한 장치로부터, Assert_INTx의 모든 송신의 경우, 통상 Deassert_INTx의 대응 송신이 있어야만 한다. 특정 'x'(A, B, C 또는 D)의 경우, 통상 Deassert_INTx 송신에 앞서 오직 하나의 Assert_INTx 송신만이 있어야 한다. 스위치들은 통상 호스트 브리지(104)에 Assert_INTx/Deassert_INTx 메시지들을 루팅해야만 하며, 호스트 브리지는 통상 가상 인터럽트 신호들을 생성하고 신호들을 시스템 인터럽트 리소스들에게 매핑하기 위해 Assert_INTx/Deassert_INTx 메시지들을 추적해야만 한다.
범용 및 시스템 관리 메시지 그룹들 외에, EGIO 아키텍처는 코어-로직(예컨대, 칩셋) 벤더들이 플랫폼들의 특정 동작 요건들에 알맞게 만들어진 자신의 벤더-정의 메시지(vendor-defined message)들을 정의할 수 있는 표준 프레임워크를 설정한다. 프레임워크는 벤더-정의 메시지들을 위한 인코딩이 "예약(reserved)"으로 정의된 공통 메시지 헤더 형식을 통해 설정된다.
트랜잭션 기술자(Transaction Descriptor)
트랜잭션 기술자는 발신 지점으로부터 서비스 지점으로 또한 그 반대로 트랜 잭션 정보를 전달하기 위한 메카니즘이다. 새로운 타입들의 병합 애플리케이션들을 지원할 수 있는 일반 상호 연결 솔루션을 제공하기 위한 확장 가능 수단을 제공한다. 이점에 있어서, 트랜잭션 기술자는 시스템의 트랜잭션 식별, 디폴트 트랜잭션 정렬 변경 및 가상 채널 ID 메카니즘을 사용한 가상 채널들과 트랜잭션과의 연관을 지원한다. 트랜잭션 기술자의 도면은 도 3을 참조하여 제시된다.
도 3으로 다시 돌아가면, 본 발명의 내용에 따라, 트랜잭션 기술자의 일례를 포함하는 데이터그램의 도면이 제공된다. 본 발명의 내용에 따라, 글로벌 식별자 필드(302), 속성 필드(306) 및 가상 채널 식별자 필드(308)를 포함하는 트랜잭션 기술자(300)가 제공된다. 도시된 일 구현예에서, 글로벌 식별자 필드(302)는 로컬 트랜잭션 식별자 필드(308) 및 소스 식별자 필드(310)를 포함하는 것으로 도시된다.
ㆍ글로벌 트랜잭션 식별자(302)
본 명세서에서 사용되는 바와 같이, 글로벌 트랜잭션 식별자는 모든 미처리 요청들에 대해 고유하다. 도 3에 도시된 일 구현예에 따라, 글로벌 식별자 필드(302)는 2개의 서브-필드들, 즉 로컬 트랜잭션 식별자 필드(308) 및 소스 식별자 필드(310)로 구성된다. 한 구현예에 따라, 로컬 트랜잭션 식별자 필드(308)는 각각의 리퀘스터에 의해 생성된 8-비트 필드이며, 해당 리퀘스터에 대한 컴플리션을 요구하는 모든 미처리 요청들에 대해 고유하다. 소스 식별자는 EGIO 계층 내의 EGIO 에이전트를 고유하게 식별한다. 따라서, 소스 ID와 함께, 로컬 트랜잭션 식별자 필드는 계층 도메인 내의 트랜잭션의 글로벌 식별을 제공한다.
한 구현예에 따라, 로컬 트랜잭션 식별자(308)는 요청들의 단일 소스로부터의 요청/컴플리션이 비순차적으로(보다 상세히 후술되는 정렬 규칙에 따라) 처리되게 할 수 있다. 예컨대, 판독 요청 소스는 판독 A1 및 A2를 생성할 수 있다. 이러한 판독 요청들을 서비스하는 목적지 에이전트는 요청 A2 트랜잭션 ID에 대한 컴플리션을 먼저 반환하고, 다음으로 A1에 대한 컴플리션을 반환할 수 있다. 컴플리션 패킷 헤더 내에서, 로컬 트랜잭션 ID 정보는 어떤 트랜잭션이 완료되고 있는지를 식별할 것이다. 이러한 메카니즘은 보다 효율적인 방식으로 판독 요청들을 처리하는 것이 가능하기 때문에 분산 메모리 시스템들을 사용하는 어플라이언스에 특히 중요하다. 비순차적(out-of-order) 판독 컴플리션에 대한 지원은, 판독 요청들을 발행하는 장치들이 컴플리션을 위한 버퍼 스페이스의 선할당을 보증하는 것을 전제로 함을 주지해야 한다. 상술된 바와 같이, EGIO 스위치들(108)이 종단점들이 아닌 한(즉, 단지 적합한 종단점들에 컴플리션 요청들을 전달하는 한), 버퍼 스위치를 예약할 필요가 없다.
단일 판독 요청은 다수의 컴플리션들을 야기할 수 있다. 단일 판독 요청에 속한 컴플리션들은 서로에 대해 비순차적으로 반환될 수 있다. 이는 컴플리션 패킷의 헤더(즉, 컴플리션 헤더) 내의 부분 컴플리션에 대응하는 고유 요청의 어드레스 오프셋을 제공함으로써 지원된다.
일 구현예에 따라, 소스 식별자 필드(310)는 각각의 모든 논리 EGIO 장치에 대하여 고유한 16-비트 값을 포함한다. 단일 EGIO 장치가 다수의 논리 장치들을 포함할 수 있음을 주지하라. 시스템 구성 도중에 표준 PCI 버스 계산 메카니즘에 대하여 투명한 방식으로 소스 ID 값이 할당된다. EGIO 장치들은 내부적으로 스스로 소스 ID 값을 설정하는데, 이는 예컨대, 장치 번호 및 스트림 번호를 나타내는 내부적으로 이용 가능한 정보와 함께, 예컨대, 상기 장치들에 대한 초기 구성 액세스 도중에 이용 가능한 버스 번호 정보를 사용하여 이루어진다. 한 구현예에 따라, 이러한 버스 번호 정보는 PCI 구성을 위해 사용되는 메카니즘과 유사한 메카니즘을 사용하여 EGIO 구성 사이클들 도중에 생성된다. 한 구현예에 따라, 버스 번호는 PCI 초기화 메카니즘에 의해 할당되고 각각의 장치에 의해 포착(capture)된다. 핫 플러그(Hot Plug) 및 핫 스왑(Hot Swap) 장치들인 경우에, 이러한 장치들은 SHPC 소프트웨어 스택들에 대한 투명성(transparency)을 가능케 하기 위해 모든 구성 사이클 액세스마다 버스 번호 정보를 다시 포착할 필요가 있게 된다.
EGIO 아키텍처의 한 구현예에 따라, 물리 컴포넌트는 하나 이상의 논리 장치들(또는 에이전트들)을 포함할 수 있다. 각각의 논리 장치는 특정 장치 번호에서 타겟이 된 구성 사이클들에 응답하도록 설계된다. 즉, 장치 번호의 인지는 논리 장치 내에 내장된다. 한 구현예에 따라, 단일 물리 컴포넌트 내에서는 16개까지의 논리 장치들이 허용된다. 상기 논리 장치들 각각은 하나 이상의 스트리밍 엔진들, 예컨대, 최대 16개까지의 스트리밍 엔진들을 포함할 수 있다. 따라서, 단일 물리 컴포넌트는 256개까지의 스트리밍 엔진들을 포함할 수 있다.
상이한 소스 식별자들로 태그가 붙여진 트랜잭션들은 상이한 논리 EGIO 입/출력(IO) 소스들에 속하며, 따라서, 정렬 관점에서 볼 때 서로 완전히 독립적으로 처리될 수 있다. 3자 관여 피어-투-피어 트랜잭션의 경우, 필요하다면 펜스 정렬 제어 프리미티브(fence ordering control primitive)를 정렬을 강제하는 데 사용할 수 있다.
본 명세서에서 사용되는 바와 같이, 트랜잭션 기술자(300)의 글로벌 트랜잭션 식별자 필드(302)는 적어도 이하의 규칙들의 부분 집합에 따른다:
(a) 각각의 컴플리션 요구 요청(Completion Required Request)은 글로벌 트랜잭션 ID(GTID)로 태그가 붙는다;
(b) 에이전트에 의해 개시된 모든 미처리 컴플리션 요구 요청들은 통상 고유한 GTID를 할당받아야만 한다;
(c) 비 컴플리션 요구 요청(non-Completion Required Request)들은 GTID의 로컬 트랜잭션 ID 필드(308)를 사용하지 않고, 로컬 트랜잭션 ID 필드는 예약(Reserved)으로서 취급된다;
(d) 타겟은 어떤 방식으로도 요청 GTID를 변경하지 않고, 단지 요청과 관련된 모든 컴플리션들을 위한 컴플리션 패킷의 헤더에서 요청 GTID를 반향하는데, 개시자는 원래의 요청에 컴플리션(들)을 매치하기 위해 GTID를 사용한다.
ㆍ속성 필드(304)
본 명세서에서 사용되는 바와 같이, 속성 필드(304)는 트랜잭션의 특성들 및 관계들을 지정한다. 이점에 있어서, 속성 필드(304)는 트랜잭션의 디폴트 핸들링(default handling)의 변경을 허용하는 추가 정보를 제공하는데 사용된다. 이러한 변경들은 예컨대, 정렬, 하드웨어 일관성 관리{예컨대, 스눕(snoop) 속성} 및 우선 순위와 같은 시스템 내의 트랜잭션 핸들링의 상이한 태양들에 적용될 수 있다. 속성 필드(304)의 일례의 형식은 서브-필드들(312-318)을 포함한다.
도시된 바와 같이, 속성 필드(304)는 우선 순위 서브-필드(312)를 포함한다. 우선 순위 서브-필드는 트랜잭션에 우선 순위를 할당하기 위해 개시자에 의해 변경될 수 있다. 일 구현예에서, 예컨대, 트랜잭션 또는 에이전트의 서비스 특성의 클래스 또는 품질이 우선 순위 서브-필드(312)에 포함됨으로써, 다른 시스템 요소들에 의한 프로세싱에 영향을 줄 수 있다.
예약 속성 필드(304)는 차후에 대비하여 보류시켜 놓거나, 또는 벤더-정의 용도이다. 우선 순위 또는 보안 속성들을 사용하는 용도 모델들은 예약 속성 필드를 사용하여 구현될 수 있다.
정렬 속성 필드(316)는 동일한 정렬 플레인(ordering plane) 내에서 디폴트 정렬 규칙들을 변경할 수 있는 정렬 타입을 전달하는 선택적인 정보를 제공하는데 사용된다{여기서 정렬 플레인은 호스트 프로세서(102) 및 대응 소스 ID를 갖는 IO 장치에 의해 개시되는 트래픽을 포함함}. 일 구현예에 따라, 정렬 속성 "0"은 디폴트 정렬 규칙들이 적용됨을 나타내며, 정렬 속성 "1"은 이완 정렬(relaxed ordering)을 나타내는데, 기록들은 동일한 방향으로 기록들을 전달할 수 있고, 판독 컴플리션들은 동일한 방향으로 기록들을 전달할 수 있다. 장치들은 주로 판독/기록 상태 정보에 대한 디폴트 정렬을 갖는 데이터 및 트랜잭션들을 이동하기 위해 이완 정렬 시맨틱스를 사용한다.
스눕 속성 필드(318)는 동일한 정렬 플레인 내에서 디폴트 캐시 일관성 관리 규칙들을 변경할 수 있는 캐시 일관성 관리의 타입을 전달하는 선택 정보를 제공하 는데 사용되며, 여기서 정렬 플레인은 호스트 프로세서(102) 및 대응 소스 ID를 갖는 IO 장치에 의해 개시되는 트래픽을 포함한다. 일 구현예에 따라, 스눕 속성 필드(318) 값 "0"은 디폴트 캐시 일관성 관리 방식에 대응하며, 이 방식에서는 트랜잭션들이 하드웨어 레벨 캐시 일관성을 적용하기 위해 스눕된다. 반면에, 스눕 속성 필드(318) 값 "1"은 디폴트 캐시 일관성 관리 체계를 중지하고, 트랜잭션들은 스눕되지 않는다. 대신, 액세스중인 데이터는 캐싱 불가능하거나 또는 그 일관성이 소프트웨어에 의해 관리된다.
ㆍ가상 채널 ID 필드(306)
본 명세서에서 사용되는 바와 같이, 가상 채널 ID 필드(306)는 트랜잭션이 관련된 독립적 가상 채널을 식별한다. 한 실시예에 따라, 가상 채널 식별자(VCID)는 트랜잭션 단위 기준으로 16개까지의 가상 채널(VC)들의 식별을 허용하는 4-비트 필드이다. VC ID 식별의 일례는 이하의 표 1에 제공된다:
VCID
|
VC 이름
|
용도 모델
|
0000 |
디폴트 채널 |
범용 트래픽 |
0001 |
등시성 채널 |
본 채널은 이하의 요건들을 갖는 입출력 트래픽을 캐리하는데 사용된다: (a) 입출력 트래픽은 결정적 서비스 타이밍을 고려하기 위해 스눕되지 않는다; (b) 서비스 품질은 X/T 약정을 사용하여 제어된다(여기서 X = 데이터량, T = 시간) |
0010-1111 |
예약 |
차후 사용 |
< 가상 채널 ID 인코딩 >
가상 채널
본 발명의 한 태양에 따라, EGIO 인터페이스(106)의 트랜잭션 층(202)은 통신 링크(112)의 대역폭 내에서 하나 이상의 가상 채널들을 설정할 수 있다. 상술 된 본 발명의 가상 채널(VC) 태양은 단일 물리 EGIO 링크(112) 내의 개별적인 논리 통신 인터페이스를 정의하는데 사용된다. 이점에 있어서, 개별 VC들은 상이한 핸들링 정책들(handling policies) 및 서비스 우선 순위들로부터 이익을 얻는 트래픽을 매핑하는데 사용된다. 예컨대, T의 시간 구간 내에 전송되는 X의 데이터량을 보증한다는 점에서, 결정적 서비스 품질(deterministic quality of service)을 요구하는 트래픽은 등시성(시간 종속적) 가상 채널에 매핑될 수 있다. 상이한 가상 채널들에 매핑되는 트랜잭션들은 서로에 대해 어떠한 정렬 요건들도 가지지 않을 수 있다. 즉, 가상 채널들은 상이한 흐름 제어 규칙들 및 속성들을 갖는 개별 논리 인터페이스로서 동작한다.
호스트 프로세서(102)에 의해 개시된 트래픽에 있어서, 가상 채널들은 디폴트 순차 메카니즘 규칙들을 기초로 하여 정렬 제어를 요구할 수 있으며, 또는 트래픽이 완전히 비순차적으로 처리될 수 있다. 일 구현예에 따라, VC들은 이하의 2개의 트래픽 타입들, 즉 범용 IO 트래픽 및 등시성 트래픽을 보완한다. 즉, 이러한 일 구현예에 따라, 가상 채널들의 두 가지 타입은 (1) 범용 입출력 가상 채널 및 (2) 등시성 가상 채널이다.
본 명세서에서 사용되는 바와 같이, 트랜잭션 층(202)은 컴포넌트에 의해 능동적으로 지원되는 하나 이상의 가상 채널(들) 각각에 대한 독립적인 흐름 제어를 유지한다. 본 명세서에서 사용되는 바와 같이, 모든 EGIO 컴플라이언트 컴포넌트들은 통상 일반적인 IO 타입 가상 채널, 예컨대, 가상 채널 0을 지원해야만 하며, 여기서 이러한 타입의 별개의 가상 채널들 간에 요구되는 정렬 관계는 존재하지 않 는다. 디폴트로, VC 0은 범용 입출력 트래픽을 위해 사용되며, VC 1은 등시성 트래픽을 처리하기 위해 할당된다. 다른 구현예에서, 임의의 가상 채널이 임의의 트래픽 타입을 처리하는데 할당될 수 있다. 독립적으로 관리되는 다수의 가상 채널들을 포함하는 EGIO 링크의 개념적인 도면이 도 4를 참조하여 제공된다.
도 4를 참조하면, 본 발명의 한 태양에 따라, 다수의 가상 채널들(VC)을 포함하는 EGIO 링크(112)의 일례가 도시된 도면이 제공된다. 도 4에 도시된 일 구현예에 따라, EGIO 인터페이스(들)(106) 간에 생성된 다수의 가상 채널들(402, 404)을 포함하는 EGIO 링크(112)가 제공된다. 일 구현예에 따라, 가상 채널(402)에 대한 다수의 소스들(406A...N)로부터의 트래픽이 도시어 있으며, 적어도 소스 ID에 의해 구별된다. 도시된 바와 같이, 상이한 소스들(예컨대, 에이전트들, 인터페이스들 등)로부터의 트랜잭션들 간의 정렬 요건이 없는 가상 채널(402)이 설정되었다.
유사하게, 다수의 소스들 다수의 트랜잭션들(408A...N)로부터의 트래픽을 포함하는 가상 채널(404)이 제공되는데, 트랜잭션들 각각은 적어도 소스 ID에 의해 표시된다. 도시된 일례에 따라, 소스 ID 0(406A)로부터의 트랜잭션들은 트랜잭션 헤더의 속성 필드(304)에 의해 변경되지 않는 한 강하게 정렬되어 있지만, 소스(408N)로부터의 트랜잭션들은 어떠한 정렬 규칙도 나타내지 않는다. 가상 채널(들)을 설정 및 관리하는 일례의 방법은 도 10을 참조하여 후술된다.
트랜잭션 정렬
모든 응답들이 순차적으로 처리되게 하는 것이 보다 간단하지만, 트랜잭션 층(202)은 트랜잭션 재정렬을 허용함으로써 성능을 향상시키고자 한다. 재정렬을 용이하게 하기 위해, 트랜잭션 층(202)은 트랜잭션들에 "태그"를 단다. 즉, 한 실시예에 따라, 트랜잭션 층(202)은 트랜잭션 기술자를 각각의 패킷에 추가함으로써, 그 전송 시간이 EGIO 아키텍처의 요소들에 의해(예컨대, 재정렬을 통해) 패킷이 원래 처리되었던 상대적인 순서를 놓치지 않으면서 최적화될 수 있다. 트랜잭션 기술자들은 EGIO 인터페이스 계층을 통해 요청 및 컴플리션 패킷들의 루팅을 용이하게 하는데 사용된다.
따라서, EGIO 상호 연결 아키텍처 및 통신 프로토콜의 혁신적인 태양들 중 하나는 비순차적 통신에 대비하여, 유휴 상태 또는 대기 상태를 감소시킴으로써 데이터 스루풋을 향상시킨다. 이점에 있어서, 트랜잭션 층(202)은 EGIO 트랜잭션의 정렬 요건들을 정의하기 위한 규칙 집합을 사용한다. 트랜잭션 정렬 요건들은 생산자-소비자 정렬 모델을 지원하도록 설계된 소프트웨어로 정확한 동작을 보증하도록 정의되며, 동시에, 상이한 정렬 모델들{예컨대, 그래픽스 어태치 애플리케이션(graphics attach application)들을 위한 이완 정렬}에 기초한 애플리케이션을 위한 트랜잭션 처리 유연성이 향상될 수 있도록 한다. 2개의 상이한 모델 타입들, 즉 단일 정렬 플레인 모델 및 다중 정렬 플레인 모델에 대한 정렬 요건들은 후술된다.
ㆍ기본 트랜잭션 정렬 - 단일 "정렬 플레인" 모델
2개의 컴포넌트들은 도 1과 유사한 EGIO 아키텍처를 통해 연결된다고 가정하자. 즉 메모리 제어 허브는 호스트 프로세서 및 메모리 서브시스템에 대한 인터페 이스를 제공하고, IO 제어 허브는 IO 서브시스템에 대한 인터페이스를 제공한다. 두 허브들 모두 유입 및 유출 트래픽을 처리하는 내부 큐(queue)들을 포함하며, 이러한 간단한 모델에서 모든 입출력 트래픽은 단일 "정렬 플레인"에 매핑된다(트랜잭션 기술자 소스 ID 정보가 EGIO 계층 내의 각각의 에이전트에 대한 고유한 식별을 제공함을 주지. 또한 소스 ID에 매핑된 IO 트래픽이 상이한 트랜잭션 정렬 속성들을 전달할 수 있음을 주지). 본 시스템 구성에 대한 정렬 규칙들은 IO-개시 트래픽(IO-initiated traffic) 및 호스트-개시 트래픽(host-initiated traffic) 간에 정의된다. 이러한 관점으로부터, 호스트 프로세서 개시 트래픽과 함께 소스 ID에 매핑된 IO 트래픽은 단일 "정렬 플레인"내에서 행해진 트래픽을 나타낸다.
이러한 트랜잭션 정렬 규칙들의 일례는 표 2를 참조하여 후술된다. 표 2에 정의된 규칙들은 메모리, 입출력, 구성 및 메시지들을 포함하는 EGIO 시스템의 모든 타입의 트랜잭션에 균일하게 적용된다. 이하의 표 2에서, 열들은 2개의 트랜잭션들 중 제1 트랜잭션을 나타내고, 행은 제2 트랜잭션을 나타낸다. 표의 항목은 2개의 트랜잭션들 간의 정렬 관계를 나타낸다. 표의 항목들은 다음과 같이 정의된다:
ㆍ YES - 제2 트랜잭션이 교착 상태를 피하기 위해 제1 트랜잭션을 전달하도록 통상적으로 허용되어야 한다(블로킹이 발생할 때, 제2 트랜잭션은 제1 트랜잭션을 전달할 필요가 있음. 공정성은 통상 결핍을 방지하기 위한 것으로 파악되어야 한다).
ㆍ Y/N - 요건이 존재하지 않음. 제1 트랜잭션은 선택적으로 제2 트랜잭션 을 전달할 수 있으며, 또는 제2 트랜잭션에 의해 블로킹될 수 있다.
ㆍ NO - 제2 트랜잭션은 통상 제1 트랜잭션을 전달하도록 허용되지 않아야 한다. 이는 강한 정렬을 보존하는데 필요하다.
행이 열을 전달? |
WR_Req (비 컴플리션 요구) (열 2) |
RD_Req (열 3) |
WR_Req (컴플리션 요구) (열 4) |
RD_Comp. (열 5) |
WR_Comp. (열 6) |
WR_Req (비 컴플리션 요구) (행 A) |
NO |
YES |
a.NO b.YES |
Y/N |
Y/N |
RD_Req (행 B) |
NO |
a.NO b.Y/N |
Y/N |
Y/N |
Y/N |
WR_Req (컴플리션 요구) (행 C) |
NO |
Y/N |
a.NO b.Y/N |
Y/N |
Y/N |
RD_Comp.(행 D) |
NO |
YES |
YES |
a.NO b.Y/N |
Y/N |
WR_Comp. (행 E) |
Y/N |
YES |
YES |
Y/N |
Y/N |
<단일 "정렬 플레인"에 대한 트랜잭션 정렬 및 교착 상태 방지>
행:열 ID |
표2 항목 설명
|
A2 |
포스팅된(posted) 메모리 기록 요청(WR_REQ)은 통상 임의의 다른 포스팅된 메모리 기록 요청을 전달하지 않아야만 한다. |
A3 |
포스팅된 메모리 기록 요청은 통상 교착 상태를 방지하기 위해 판독 요청들을 전달하도록 허용되어야만 한다. |
A4 |
a. 포스팅된 메모리 WR_REQ는 통상 컴플리션 요구 속성을 갖는 메모리 WR_REQ를 전달하도록 허용되서는 안된다. b. 포스팅된 메모리 WR_REQ는 통상 교착 상태를 방지하기 위해 입출력 및 구성 요청들을 전달하도록 허용돼야만 한다. |
A5,A6 |
포스팅된 메모리 WR_REQ는 컴플리션들을 전달할 필요가 없다. 교착 상태가 없는 동작을 보증하면서 본 구현예의 유연성을 허용하기 위해, EGIO 통신 프로토콜은 에이전트들이 컴플리션들의 수용을 보증하도록 한다. |
B2,C2 |
이 요청들은 포스팅된 메모리 WR_REQ를 전달할 수 없으므로, 생산자/소비자 용도 모델을 지원하는데에 필요한 강한 기록 정렬을 보존할 수 있다. |
B3 |
a. 기본 구현예에서(즉, 비순차적 프로세싱이 없음) 판독 요청들은 서로 전달하도록 허용되지 않는다. b. 다른 구현예에서, 판독 요청은 서로 전달하도록 허용된다. 트랜잭션 식별은 이러한 기능을 제공하는데 필수적이다. |
B4,C3 |
상이한 타입들의 요청들은 서로 블로킹되거나 전달되도록 허용된다. |
B5,B6,C5,C6 |
이 요청들은 컴플리션에 의해 블록되거나 컴플리션을 전달하도록 허용된다. |
D2 |
판독 컴플리션들은 (강한 기록 정렬을 보존하기 위해) 포스팅된 메모리 WR_Req를 전달할 수 없다. |
D3,D4,E3,E4 |
컴플리션들은 교착 상태를 방지하기 위해 포스팅되지 않은 요청들을 전달하도록 통상 허용돼야만 한다. |
D5 |
a. 기본 구현예에서, 판독 컴플리션들은 서로 전달하도록 허용되지 않는다. b. 다른 구현예에서, 판독 컴플리션들은 서로 전달하도록 허용된다. 또한, 강한 트랜잭션 식별을 위한 요건이 요구될 수 있다. |
E6 |
이 컴플리션들은 서로 전달하도록 허용된다. 예컨대, 트랜잭션 ID 메카니즘을 사용하여 트랜잭션 추적을 유지하는 것이 중요하다. |
D6,E5 |
상이한 타입들의 컴플리션들은 서로 전달할 수 있다. |
E2 |
기록 컴플리션들은 포스팅된 메모리 WR_REQ에 의해 블로킹되거나 전달하도록 허용된다. 기록 트랜잭션들은 실제로 반대 방향으로 이동중이며, 따라서, 정렬 관계가 없다. |
<트랜잭션 정렬 설명>
ㆍ진보된 트랜잭션 정렬 - "멀티-플레인" 트랜잭션 정렬 모델
이전 섹션에서는 단일 "정렬 플레인" 내의 정렬 규칙들을 정의했다. 상술된 바와 같이, EGIO 상호 연결 아키텍처 및 통신 프로토콜은 보다 정교한 정렬 관계들을 지원하도록 추가 정보를 트랜잭션과 관련시키기 위해 고유한 트랜잭션 기술자 메카니즘을 사용한다. 트랜잭션 기술자의 필드들은 IO 트래픽 정렬 관점에서 볼 때 서로 독립적인 다수의 "정렬 플레인들"을 생성하는 것을 허용한다. 각각의 "정렬 플레인"은 특정 IO 장치(고유한 소스 ID에 의해 지정됨)에 대응하는 큐잉/버퍼링 로직(queuing/buffering logic) 및 호스트 프로세서 개시 트래픽을 전달하는 큐잉/버퍼링 로직으로 구성된다. "플레인" 내의 정렬은 통상 이들 두 로직들 사이에서만 정의된다. 생산자/소비자 용도 모델을 지원하고 교착 상태를 방지하기 위해 이전 섹션에서 정의된 규칙들은 다른 "정렬 플레인"과 무관하게 각각의 "정렬 플레인"에 대해 적용된다. 예컨대, "플레인" N에 의해 개시된 요청들에 대한 판독 컴플리션들은 "플레인" M에 의해 개시된 요청들에 대한 판독 컴플리션들을 방문(go around)할 수 있다. 그러나, 플레인 N을 위한 판독 컴플리션들이나 플레인 M을 위한 판독 컴플리션들 어느 것도 호스트로부터 개시된 포스팅된 메모리 기록들(Posted Memory Writes)을 방문할 수는 없다.
플레인 매핑 메카니즘을 사용하여 다수의 정렬 플레인들을 허용하더라도, 구현을 간단하게 하기 위해 정렬 플레인들 전부 또는 일부가 함께 "컬랩싱(collapsing)"될 수 있다(즉, 다수의 개별 제어 버퍼들/FIFO들을 단일 버퍼/FIFO로 결합함). 모든 플레인들이 함께 컬랩싱될 때, 트랜잭션 기술자 소스 ID 메카니즘은 트랜잭션 루팅을 용이하게 하기 위하여만 사용되며, IO 트래픽의 독립 스트림들 간의 정렬을 이완하기 위하여는 사용되지 않는다.
상술된 바 외에, 트랜잭션 기술자 메카니즘은 정렬 속성을 사용하여 단일 정렬 플레인 내의 디폴트 정렬을 변경하는 것에 대비한다. 따라서, 정렬 변경은 트랜잭션 단위 기준으로 제어될 수 있다.
ㆍ트랜잭션 층 프로토콜 패킷 형식
상술된 바와 같이, 혁신적인 EGIO 아키텍처는 서로 통신하는 2개의 장치들의 트랜잭션 층들 간의 정보 교환을 위해 패킷 기반의 프로토콜을 사용한다. EGIO 아키텍처는 일반적으로 메모리, IO, 구성 및 메시지 트랜잭션 타입들을 지원한다. 상기 트랜잭션들은 통상 요청 또는 컴플리션 패킷들을 사용하여 전달되며, 컴플리션 패킷들은 필요할 경우에만, 즉 데이터를 반환하거나 트랜잭션 수신 승인을 위하여만 사용된다.
도 6을 참조하면, 본 발명의 내용에 따라, 트랜잭션 층 프로토콜의 일례의 도면이 제공된다. 도 6에 도시된 일 구현예에 따라, 형식 필드, 타입 필드, 확장 타입/확장 길이(ET/EL) 필드 및 길이 필드를 포함하는 TLP 헤더(600)가 제공된다. 몇몇 TLP들이 헤더에 지정된 형식 필드에 의해 결정된 대로 헤더에 이어 데이터를 포함함에 주목하자. 어떠한 TLP도 MAX_PAYLOAD_SIZE에 의해 설정된 한계 보다 많은 데이터를 포함해서는 안된다. 일 구현예에 따라, TLP 데이터는 본래 4-바이트로 정렬되며 4-바이트 더블 워드(DW)만큼씩 증가한다.
본 명세서에서 사용되는 바와 같이, 형식(FMT) 필드는 이하의 정의에 따라 TLP의 형식을 지정한다.
ㆍ000 - 2DW 헤더, 데이터 없음
ㆍ001 - 3DW 헤더, 데이터 없음
ㆍ010 - 4DW 헤더, 데이터 없음
ㆍ101 - 3DW 헤더, 데이터 있음
ㆍ110 - 4DW 헤더, 데이터 있음
ㆍ모든 다른 인코딩들이 예약됨
TYPE 필드는 TLP에서 사용되는 타입 인코딩들을 나타내는데 사용된다. 한 구현예에 따라, Fmt[2:0] 및 Type[3:0]은 통상 TLP 형식을 결정하기 위해 디코드되어야만 한다. 한 구현예에 따라, type[3:0] 필드의 값은 확장 타입/확장 길이 필드가 타입 필드 또는 길이 필드를 확장하는데 사용되는지를 결정하는데 사용된다. ET/EL 필드는 통상 메모리 타입 판독 요청들에 따라 길이 필드를 확장하는데만 사용된다.
길이 필드는 다음과 같이 DW 증분으로 페이로드의 길이를 나타낸다:
0000 0000 = 1DW
0000 0001 = 2DW
... ...
1111 1111 = 256DW
일례의 TLP 트랜잭션 타입의 적어도 부분 집합의 요약, 그 대응 헤더 형식들 및 설명은 표 4에 후술된다:
TLP Type
|
FMT[2:0]
|
Type[3:0]
|
Et[1:0]
|
설명
|
초기 FCP |
000 |
0000 |
00 |
초기 흐름 제어 정보 |
갱신 FCP |
000 |
0001 |
00 |
갱신 흐름 제어 정보 |
MRd |
001 010 |
1001 |
E19E18 |
메모리 판독 요청 길이 [9:8]을 위해 사용된 ET/EL 필드 |
MRdLK |
001 010 |
1011 |
00 |
메모리 판독 요청 -로킹됨 |
MWR |
101 110 |
0001 |
00 |
메모리 기록 요청 - 포스팅됨 |
IORd |
001 |
1010 |
00 |
입출력 판독 요청 |
IOWr |
101 |
1010 |
00 |
입출력 기록 요청 |
CfgRd0 |
001 |
1010 |
01 |
구성 판독 타입 0 |
CfgWr0 |
101 |
1010 |
01 |
구성 기록 타입 0 |
CfgRd1 |
001 |
1010 |
11 |
구성 판독 타입 1 |
CfgWr1 |
101 |
1010 |
11 |
구성 기록 타입 1 |
Msg |
010 |
011s2 |
s1s0 |
메시지 요청 - 서브-필드 s[2:0]는 메시지 그룹을 지정한다. 한 구현예에 따라, 메시지 필드는 컴플리션이 필요한 경우를 포함하는 특정 사이클을 결정하기 위해 디코드된다. |
MsgD |
110 |
001s2 |
s1s0 |
데이터가 있는 메시지 요청 - 서브-필드 s[2:0]는 메시지 그룹을 지정한다. 한 구현예에 따라, 메시지 필드는 컴플리션이 필요한 경우를 포함하는 특정 사이클을 결정하기 위해 디코드된다. |
MsgCR |
010 |
111s2 |
s1s0 |
컴플리션이 필요한 메시지 요청 - 서브-필드 s[2:0]는 메시지 그룹을 지정한다. 한 구현예에 따라, 메시지 필드는 특정 사이클을 결정하기 위해 디코드된다. |
MsgDCR |
110 |
111s2 |
s1s0 |
데이터 컴플리션이 필요한 메시지 요청 - 서브-필드 s[2:0]는 메시지 그룹을 지정한다. 한 구현예에 따라, 특정 사이클을 결정하도록 특별 사이클 필드가 결정된다. |
CPL |
001 |
0100 |
00 |
데이터 없는 컴플리션 - IO 및 구성 기록 컴플리션, 몇몇 메시지 컴플리션 및 성공적인 컴플리션이 아닌 컴플리션 상태를 갖는 메모리 판독 컴플리션들을 위해 사용된다. |
CplD |
101 |
0100 |
00 |
데이터 있는 컴플리션 - 메모리, IO 및 구성 판독 컴플리션들 및 몇몇 메시지 컴플리션들에 사용된다. |
CplDLK |
101 |
001 |
01 |
로킹된 메모리 판독을 위한 컴플리션 - 다른경우 CplD와 유사함. |
요청들 및 컴플리션들에 관한 추가적인 세부 사항은 부록 A에 제공되며, 그 명세서는 본 명세서에 참조용으로 명백히 인용되었다.
흐름 제어
종래의 흐름 제어 기법들과 공통으로 관련된 한계점들 중 하나는 제1 장소에 서 문제점들이 발생할 기회를 사전에 감소시키는 대신 발생할 수 있는 문제점들에 대하여 반응한다는 점이다. 종래의 PCI 시스템에서, 예컨대, 송신기는 차후 인식할 때까지 송신을 중지하라는 메시지를 수신할 때까지 수신기에 정보를 송신할 것이다. 이러한 요청들 이후에는, 송신시 소정의 위치에서 시작되는 패킷의 재송신 요청이 있을 수 있다. 본 기술 분야의 당업자들은 반응 기법이 사이클 낭비를 초래하하며, 그점에 있어서 비효율적일 수 있음을 알 것이다.
이러한 한계점을 극복하기 위해, EGIO 인터페이스(106)의 트랜잭션 층(202)은 오버플로 상태가 발생할 기회를 사전에 감소시키는 흐름 제어 메카니즘을 포함하는 한편, 개시자와 컴플리터(들) 간에 설정된 가상 채널의 링크 단위 기준 정렬 규칙들을 고수한다. 본 발명의 한 태양에 따라, 흐름 제어 "크레디트(credit)"라는 개념이 도입되며, 수신기는 송신기와 수신기 간에 설정된 가상 채널(들) 각각(즉, 가상 채널 단위 기준으로)에 대해 (a) (크레디트들의) 버퍼 크기 및 (b) 현재의 가용 버퍼 스페이스에 관한 정보를 송신기와 공유한다. 이는 송신기의 트랜잭션 층(202)이 식별된 가상 채널을 통해 송신에 할당된 가용 버퍼 스페이스 추정값(예컨대, 가용 크레디트들의 카운트)을 유지할 수 있게 해주며, 송신이 수신 버퍼에서 오버플로 상태를 야기한다고 결정되는 경우 임의의 가상 채널들을 통해 송신을 사전에 억제할 수 있게 해준다.
본 발명의 한 태양에 따라, 트랜잭션 층(202)은 수신기 버퍼들의 오버플로를 방지하고 상술된 정렬 규칙들에 따를 수 있게 해주는 흐름 제어를 도입한다. 한 구현예에 따라, 트랜잭션 층(202)의 흐름 제어 메카니즘은 EGIO 링크(112)에 걸쳐 있는 에이전트에서 이용 가능한 큐/버퍼 스페이스를 추적하기 위해 리퀘스터에 의해 사용된다. 본 명세서에서 사용되는 바와 같이, 흐름 제어는 요청이 최종 컴플리터에 도달했음을 암시하는 것이 아니다.
본 발명의 내용에 따라, 흐름 제어는 송신기와 수신기 간의 신뢰성 있는 정보 교환을 구현하는데 사용되는 데이터 일체성 메카니즘들에 직교한다(orthogonal). 즉, 데이터 일체성 메카니즘이 손상 및 손실된 TLP들이 재송신을 통해 정정됨을 보장하기 때문에, 흐름 제어는 송신기로부터 수신기로의 트랜잭션 층 패킷(TLP) 정보 흐름을 완벽한 것으로서 취급할 수 있다. 본 명세서에서 사용되는 바와 같이, 흐름 제어는 EGIO 링크(112)의 가상 채널들을 파악한다. 이점에 있어서, 수신기에 의해 지원되는 각각의 가상 채널은 수신기에 의해 통지되는 흐름 제어 크레디트(FCC; Flow Control Credits)에서 반영될 것이다.
본 발명의 내용에 따라, 흐름 제어는 데이터 링크 층(204)과 협력하여 트랜잭션 층(202)에 의해 실행된다. 흐름 제어 메카니즘을 기술하는데 있어서 편의상, 패킷 정보의 타입들은 이하와 같이 구별된다:
(a) 포스팅된 요청 헤더(PRH; Posted Request Headers)
(b) 포스팅된 요청 데이터(PRD; Posted Request Data)
(c) 포스팅되지 않은 요청 헤더들(NPRH; Non-Posted Request Headers)
(d) 포스팅되지 않은 요청 데이터(NPRD; Non-Posted Request Data)
(e) 판독, 기록 및 메시지 컴플리션 헤더들(CPLH; Read, Write and Message Completion Headers)
(f) 판독 및 메시지 컴플리션 데이터(CPLD; Read and Message Completion Data)
상술된 바와 같이, 사전 흐름 제어의 EGIO 구현에 있어 측정 유닛은 흐름 제어 크레디트(FCC)이다. 한 구현예에 따라, 흐름 제어 크레디트는 데이터에 대해 16 바이트이다. 헤더들의 경우, 흐름 제어 크레디트 유닛은 하나의 헤더이다. 상술된 바와 같이, 각각의 가상 채널은 독립 흐름 제어를 갖는다. 각각의 가상 채널의 경우, 크레디트들의 개별적인 지시자들이 유지되며 패킷 정보의 상술된 타입들{상술된 (a) 내지 (f)} 각각에 대해 추적된다. 도시된 일 구현예에 따라, 패킷 송신은 다음과 같이 흐름 제어 크레디트들을 소비한다.
- 메모리/IO/구성 판독 요청: 1 NPRH 유닛
- 메모리 기록 요청: 1PRH + nPRD 유닛들{n은 데이터 페이로드 크기, 예컨대, 흐름 제어 유닛 크기(예컨대, 16 바이트)에 의해 나눠지는 데이터의 길이와 관련됨}
- IO/구성 기록 요청: 1NPRH + 1NPRD
- 메시지 요청들: 메시지에 따라 다르며, 적어도 1PRH 및/또는 1NPRH 유닛(들)
- 데이터 있는 컴플리션들: 1CPLH + nCPLD 유닛들(n은 흐름 제어 데이터 유닛 크기, 예컨대, 16 바이트에 의해 나눠지는 데이터의 크기와 관련됨)
- 데이터 없는 컴플리션들: 1CPLH
추적된 정보의 각각의 타입에 있어서, 3개의 개념적 레지스터들이 있는데, 각각은 8 비트 넓이이며, (송신기에서의) 소비된 크레디트, (송신기에서의) 크레디트 한계 및 (수신기에서의) 할당된 크레디트를 모니터하기 위한 것다. 크레디트 소비 레지스터(credit consumed register)는 초기화 이래에 소비된 흐름 제어 유닛의 총수 카운트의 모듈러(modula) 256값을 포함한다. 초기화때에, 크레디트 소비 레지스터는 모두 0으로 설정되며 트랜잭션 층이 데이터 링크 층에 정보를 송신할 때 증가된다. 증가분의 크기는 송신될 정보에 의해 소비되는 크레디트들의 수와 관련된다. 한 구현예에 따라, 최대 카운트(예컨대, 모두 1)에 도달했거나 초과했을 때, 카운터는 0으로 넘어간다. 한 구현예에 따라, 부호화되지 않은 8비트 모듈 연산이 카운터를 유지하는데 사용된다.
크레디트 한계 레지스터는 소비될 수 있는 흐름 제어 유닛들의 최대 수에 대한 한계를 포함한다. 인터페이스 초기화시, 레지스터는 모두 0으로 설정되며, 메시지가 수신될 때, 흐름 제어 갱신 메시지(상술됨)에 지시된 값으로 설정된다.
크레디트 할당 레지스터는 초기화 이래로 송신기에 승인된 크레디트들의 총 수의 카운트를 유지한다. 카운트는 초기에 수신기의 버퍼 크기 및 할당 정책들에 따라 설정된다. 카운트 값은 흐름 제어 갱신 메시지들에 포함될 수 있다. 상기 값은 수신기 트랜잭션 층이 처리된 정보를 수신 버퍼로부터 제거할 때 증가된다. 증가 크기는 유효 스페이스 크기와 관련된다. 한 실시예에 따라, 수신기는 통상 초기에 다음의 값들과 같거나 보다 큰 값들로 할당돼야만 한다:
- PRH: 1 흐름 제어 유닛(FCU);
- PRD: 장치의 최대 페이로드 크기의 최대 가능한 세팅과 동일한 FCU;
- NPRH: 1FCU
- NPRD: 장치의 최대 페이로드 크기의 최대 가능한 세팅과 동일한 FCU;
- 스위치 장치들 - CPLH: 1FCU;
- 스위치 장치들 - CPLD: 장치의 최대 페이로드 크기의 최대 가능한 세팅, 또는 장치가 생성할 최대 판독 요청 중 작은 것과 동일한 FCU;
- 루트(root) 및 종단점 장치들 - CPLH 또는 CPLD: 255 FCU들(모두 1), 송신기에 의해 무한하다고 간주되는 값으로서, 전혀 억제되지 않음.
본 구현예에 따라, 수신기는 통상 임의의 메시지 타입에 대한 127 FCU 보다 크게 크레디트 할당 레지스터 값들을 설정하지 않을 것이다.
다른 구현예에 따라, 상술된 카운터 방법을 사용하여 크레디트 할당 레지스터를 유지하는 대신, 송신기는 이하의 식에 따라 할당된 크레디트들을 동적으로 계산할 수 있다.
C_A = (가장 최근에 수신된 송신의 크레디트 유닛 수) + (유효 수신 버퍼 스페이스)
상술된 바와 같이, 송신기는 송신기가 이용할 가상 채널들 각각에 대한 개념적 레지스터들(소비된 크레디트, 크레디트 한계)을 구현한다. 유사하게, 수신기도 수신기에 의해 지원되는 가상 채널들 각각에 대한 개념적 레지스터들(할당된 크레디트)을 구현한다. 정보 송신이 수신 버퍼 오버플로를 야기하는 경우 이를 사전에 금지하기 위해, 소비된 크레디트의 카운트 + 송신될 데이터와 관련된 크레디트 유닛들의 수가 크레디트 한계값과 동일하거나 보다 작으면, 송신기가 정보 타입을 송 신할 수 있다. 송신기가 무한하지 않은 크레디트들(즉, < 255 FCU)을 가리키는 컴플리션들(CPL)에 대한 흐름 제어 정보를 수신할 때, 송신기는 가용 크레디트에 따라 컴플리션들을 억제할 것이다. 크레디트 사용 및 반환을 고려할 때, 상이한 트랜잭션들로부터의 정보는 크레디트 내에서 혼합되지 않는다. 유사하게, 크레디트 사용 및 반환을 고려할 때, 하나의 트랜잭션으로부터의 헤더 및 데이터 정보는 한 크레디트 내에서 결코 혼합되지 않는다. 따라서, 흐름 제어 크레디트(들)의 부족으로 몇몇 패킷 송신이 블로킹될 때, 송신기는 어떤 타입의 패킷들이 "교착(stalled)" 패킷을 우회시키도록 허용돼야만 하는지를 결정할 때의 (상기) 정렬 규칙들에 따를 것이다. 트랜잭션에 대한 흐름 제어 크레디트 반환은 트랜잭션이 완료했거나 또는 시스템 가시성(visibility)을 달성했음을 의미하는 것으로 해석되지 않는다. 메모리 기록 요청 시맨틱스를 사용하는 MSI(Message Signaled Interrupts)는 임의의 다른 메모리 기록과 유사하게 처리된다. 후속 FC 갱신 메시지(수신기로부터의)가 초기에 지시된 것보다 낮은 크레디트 한계 값을 나타내면, 송신기는 새로운 보다 적은 한계를 반영해야만 하고, 메시지 에러를 제공할 수 있다.
본 명세서에 기술된 흐름 제어 메카니즘에 따라, 수신기가 할당된 크레디트 보다 많은 정보를 수신하면(할당된 크레디트를 초과하면), 수신기는 위반 송신기에 수신기 오버플로 에러를 나타낼 것이고, 오버플로를 야기하는 패킷에 대한 데이터 링크 레벨 재시도 요청을 개시할 것이다.
ㆍ흐름 제어 패킷(FCP)
한 구현예에 따라, 상기 레지스터들을 유지하는데 필요한 흐름 제어 정보는 흐름 제어 패킷(FCP)을 사용하여 장치들 간에서 통신된다. 한 실시예에 따라, 흐름 제어 패킷들은 각각의 VC에 대한 수신 트랜잭션 층의 흐름 제어 로직에 의해 유지되는 6개의 크레디트 레지스터들의 상태에 대한 특정 가상 채널을 위한 2-DW 헤더 형식 및 전달 정보로 구성된다. 본 발명의 내용에 따라, 도 6에 도시된 바와 같이, FCP들에는 두 가지 타입, 즉 초기 FCP 및 갱신 FCP가 있다.
상술된 바와 같이, 초기 FCP(602)는 트랜잭션 층의 초기화때 발행된다. 트랜잭션 층 초기화에 이어, 갱신 FCP(604)가 레지스터의 정보를 갱신하는데 사용된다. 정상 동작 도중에 초기 FCP의 수신은 로컬 흐름 제어 메카니즘의 리셋 및 초기 FCP의 송신을 야기한다. 초기 FCP의 콘텐츠는 PRH, PRD, NPRH, NPRD, CPH, CPD 및 채널 ID(예컨대, FC 정보가 적용되는 관련 가상 채널) 각각에 대하여 통지되는 크레디트들의 적어도 부분 집합을 포함한다. 갱신 FCP의 형식은 초기 FCP의 형식과 유사하다. FC 헤더가 다른 트랜잭션 층 패킷 헤더 형식과 공통인 길이 필드를 포함하지 않더라도, 패킷과 관련된 추가 DW 데이터가 없기 때문에 패킷 크기는 명백함에 주목하자.
에러 발송(Error Forwarding)
종래의 에러 발송 메카니즘들과 달리, EGIO 아키텍처는 후술되는 다수의 이유들 중 어떤 이유로 인해 결함이 있는 것으로 식별된 데이터그램(들)에 첨부된 테일러(tailer) 정보에 의존한다. 일 구현예에 따라, 트랜잭션 층(202)은 예컨대, CRC(cyclical redundancy check) 에러 제어 등과 같은 다수의 공지된 에러 검출 기 술들 중 임의의 것을 사용한다.
한 구현예에 따라, 에러 발송 기능들을 용이하게 하기 위해, EGIO 아키텍처는 알려진 불량 데이터를 전달하는 TLP에 첨부된 "테일러(tailer)"를 사용한다. 테일러 에러 발송이 사용될 수 있는 경우의 일례는 다음을 포함한다:
ㆍ일례 #1: 메인 메모리로부터의 판독이 정정 불가능 ECC 에러를 마주침
ㆍ일례 #2: 메인 메모리에 대한 PCI 기록의 패리티 에러
ㆍ일례 #3: 내부 데이터 버퍼 또는 캐시의 데이터 일체성 에러
일 구현예에 따라, 에러 발송은 판독 컴플리션 데이터 또는 기록 데이터에만 사용된다. 즉, 에러 발송은 데이터그램과 관련된 관리 오버헤드에서의 에러, 예컨대 헤더의 에러(예컨대, 요청 위상, 어드레스/커맨드 등)가 발생하는 경우에는 통상 사용되지 않는다. 본 명세서에서 사용되는 바와 같이, 진정한 목적지가 명확하게 식별될 수 없기 때문에, 헤더 에러들을 갖는 요청들/컴플리션들은 일반적으로 발송될 수 없다. 따라서, 에러 발송은 예컨대, 데이터 손상, 시스템 장애 등과 같은 부작용이나 직접적인 영향을 야기할 수 있다. 한 실시예에 따라, 에러 발송은 시스템을 통한 에러 전파, 시스템 진단에 사용된다. 에러 발송은 데이터 링크 층 재시도를 사용하지 않으며, 따라서, 테일러로 끝나는 TLP들은 TLP 에러 검출 메카니즘들(예컨대, CRC 등)에 의해 결정된 EGIO 링크(112)의 송신 에러가 있는 경우에만 재시도될 것이다. 따라서, 테일러는 궁극적으로 요청 발생자가 요청을 재발행하거나(상술된 트랜잭션 층에서) 또는 몇몇 다른 동작을 취하도록 할 수 있다.
본 명세서에서 사용되는 바와 같이, 모든 EGIO 수신기들{예컨대, EGIO 인터 페이스(106) 내에 위치함}은 테일러로 끝나는 TLP들을 처리할 수 있다. 송신기에서의 테일러 추가에 대한 지원은 선택적이다(따라서, 레거시 장치들과 호환 가능함). 스위치들(108)은 TLP의 나머지와 함께 테일러를 루팅한다. 피어 루팅 지원을 갖는 호스트 브리지(104)는 통상적으로 TLP의 나머지와 함께 테일러를 루팅하지만, 반드시 그렇게 할 필요는 없다. 에러 발송은 통상 (포스팅되거나 포스팅되지 않은) 기록 요청 또는 판독 컴플리션 내의 데이터에 적용된다. 불량 데이터를 포함하는 것으로 송신기에 알려진 TLP는 테일러로 끝나야만 한다.
일 구현예에 따라, 테일러는 2개의 DW로 구성되는데, 바이트 [7:5]는 모두 0들이며(예컨대, 000), 비트[4:1]는 모두 1들이고(예컨대, 1111), 다른 모든 비트들은 예약된다. EGIO 수신기는 테일러로 끝나는 TLP 내의 모든 데이터를 손상된 것으로 생각할 것이다.
에러 발송을 적용하면, 수신기는 지시된 TLP로부터의 모든 데이터에 불량("유해")이라는 태그가 붙게 할 것이다. 트랜잭션 층 내에서, 파서(parser)는 통상 전체 TLP의 끝까지 파싱할 것이며, 데이터가 완료되었는지를 알기 위해 이하의 데이터를 즉시 체크할 것이다.
데이터 링크층(204)
상술된 바와 같이, 도 2의 데이터 링크 층(204)은 트랜잭션 층(202)과 물리층(206) 간의 중간 스테이지로 작용한다. 데이터 링크 층(204)의 주요 책임은 EGIO 링크(112)를 통해 2개의 컴포넌트들 간의 트랜잭션 층 패킷(TLP)들의 교환을 위한 신뢰성 있는 메카니즘을 제공하는 것이다. 데이터 링크 층(204)의 송신측은 트랜잭션 층(202)에 의해 어셈블된 TLP를 수용하고, 패킷 시퀀스 식별자(예컨대, 식별자 번호)를 적용하고, 에러 검출 코드(예컨대, CRC 코드)를 계산 및 적용하고, EGIO 링크(112)의 대역폭 내에서 설정된 선택된 하나 이상의 가상 채널들을 통한 송신을 위해 물리층(206)에 변경된 TLP들을 제공한다.
수신 데이터 링크 층(204)은 (예컨대, CRC 메카니즘 등을 사용하여) 수신된 TLP들의 일체성을 체크하고, 일체성 체크 결과가 긍정인 TLP를 장치 코어로의 발송에 앞서 역어셈블리를 위해 트랜잭션 층(202)에 제공할 책임이 있다.
데이터 링크 층(204)에 의해 제공된 서비스들은 일반적으로 데이터 교환, 에러 검출 및 재시도, 초기화 및 전력 관리 서비스들 및 데이터 링크 층 내부 통신 서비스들을 포함한다. 상술된 범주 각각에서 제공된 각각의 서비스들은 다음과 같다.
데이터 교환 서비스
- 송신 트랜잭션 층으로부터의 송신을 위한 TLP 수용
- 물리층으로부터 링크를 통해 수신된 TLP를 수용하고 수신 트랜잭션 층으로 전달
에러 검출 및 재시도
- TLP 시퀀스 번호 및 CRC 생성
- 데이터 링크 층 재시도를 위한 송신된 TLP 저장
- 데이터 일체성 체크
- DLLP 승인 및 재시도
- 에러 리포트 및 로그 메카니즘을 위한 에러 지시
- 링크 Ack 타임아웃 타이머
초기화 및 전력 관리 서비스
- 링크 상태를 추적하고 트랜잭션 층으로 액티브/리셋/단절 상태를 전달
데이터 링크 층 내부 통신 서비스
- 에러 검출 및 재시도를 포함하는 링크 관리 기능들을 위해 사용됨
- 2개의 직접 연결 컴포넌트들의 데이터 링크 층들 간의 전송
- 트랜잭션 층들에 노출되지 않음
EGIO 인터페이스(106) 내에서 사용되는 바와 같이, 데이터 링크 층(204)은 트랜잭션 층(202)에 대한 레이턴시(latency)를 변경하면서 정보 콘딧(conduit)으로서 나타난다. 송신 데이터 링크 층에 제공된 모든 정보는 차후 시간에 수신 데이터 링크 층의 출력에 나타낼 것이다. 레이턴시는 파이프라인 레이턴시, 링크(112)의 폭 및 동작 주파수, 매체를 통한 통신 신호 송신 및 데이터 링크 층 재시도에 의해 야기된 지연들을 포함하는 요인들의 수에 좌우될 것이다. 지연들 때문에, 송신 데이터 링크 층은 송신 트랜잭션 층(202)에 역압력(backpressure)을 가할 수 있으며, 수신 데이터 링크 층은 유효 정보의 존재 또는 부재를 수신 트랜잭션 층(202)에 전달한다.
한 구현예에 따라, 데이터 링크 층(204)은 EGIO 링크(112)의 상태를 추적한다. 이점에 있어서, DLL(204)은 트랜잭션 층(202) 및 물리층(206)과 링크 상태를 통신하고, 물리층(206)을 통해 링크 관리를 실행한다. 한 구현예에 따라, 데이터 링크 층은 관리 태스크를 실행하기 위한 링크 제어 및 관리 상태 머신을 포함한다. 머신 상태들은 후술된다.
일례의 DLL 링크 상태:
ㆍ LinkDown(LD) - 링크가 동작 불가능하거나 포트가 연결되어 있지 않다고 물리층이 보고함
ㆍ LinkInit(LI) - 링크가 동작 가능하며 초기화중임을 물리층이 보고함
ㆍ LinkActive(LA) - 정상 동작 모드
ㆍ LinkActDefer(LAD) - 정상 동작 중단, 물리층이 재개 시도
상태에 대한 대응 관리 규칙들(예컨대, 도 8을 참조):
ㆍ LinkDown(LD)
컴포넌트 리셋에 이은 초기 상태
LD로 될 때:
- 모든 데이터 링크 층 상태 정보를 디폴트 값들로 리셋
LD인 동안:
- TLP 정보를 트랜잭션 층 또는 물리층과 교환하지 않는다
- DLLP 정보를 물리층과 교환하지 않는다
- DLLP를 생성하거나 수용하지 않는다
이하인 경우에 LI로 빠져나감:
- SW에 의해 링크가 디스에이블되지 않음이 트랜잭션 층으로 부터 표시되는 경우
ㆍ LinkInit(LI)
LI인 동안:
- TLP 정보를 트랜잭션 층 또는 물리층과 교환하지 않는다
- DLLP 정보를 물리층과 교환하지 않는다
- DLLP를 생성하거나 수용하지 않는다
이하인 경우에 LA로 빠져나감:
- 링크 훈련 성공이라고 물리층으로부터 지시되는 경우
이하인 경우에 LD로 빠져나감:
- 링크 훈련 실패라고 물리층으로부터 지시되는 경우
ㆍ LinkActive(LA)
LinkActive인 동안:
- TLP 정보를 트랜잭션 층 또는 물리층과 교환한다
- DLLP 정보를 물리층과 교환한다
- DLLP를 생성 및 수용한다
이하인 경우에 LinkActDefer로 빠져나감:
- 링크 훈련이 필요하다고 데이터 링크 층 재시도 관리 메카니즘으로부터 지시되는 경우, 또는, 재훈련이 진행중이라고 물리층이 보고하는 경우
ㆍ LinkActDefer(LAD)
LinkActDefer인 동안:
- TLP 정보를 트랜잭션 층 또는 물리층과 교환하지 않는다
- DLLP 정보를 물리층과 교환하지 않는다
- DLLP를 생성하거나 수용하지 않는다
이하인 경우에 LinkActive로 빠져나감:
- 재훈련 성공이라고 물리층으로부터 지시되는 경우
이하인 경우에 LinkDown으로 빠져나감:
- 재훈련 실패라고 물리층으로부터 지시되는 경우
데이터 일체성 관리
본 명세서에서 사용되는 바와 같이, 데이터 링크 층 패킷(DLLP)은 EGIO 링크 데이터 일체성 메카니즘들을 지원하는데 사용된다. 이점에 있어서, 한 구현예에 따라, EGIO 아키텍처는 링크 데이터 일체성 관리를 지원하기 위해 이하의 DLLP들에 대비한다:
ㆍ Ack DLLP: TLP 시퀀스 번호 승인 - 몇개의 TLP들의 성공적 수신을 나타내는데 사용됨
ㆍ Nak DLLP: TLP 시퀀스 번호 부정적 승인 - 데이터 링크 층 재시도를 나타내는데 사용됨
ㆍ Ack 타임아웃 DLLP: 최근 송신된 시퀀스 번호를 나타냄 - 몇몇 형태의 TLP 손실을 검출하는데 사용됨
상술된 바와 같이, 트랜잭션 층(202)은 데이터 링크 층(204)에 TLP 경계 정 보를 제공하여, DLL(204)이 시퀀스 번호 및 CRC 에러 검출을 TLP에 적용할 수 있게 된다. 일 구현예에 따라, 수신 데이터 링크 층은 수신 물리층으로부터의 시퀀스 번호, CRC 코드 및 임의의 에러 표시들을 체크함으로써 수신된 TLP를 확증(validate) 한다. TLP에 에러가 있는 경우, 데이터 링크 층 재시도는 복구를 위해 사용된다.
ㆍCRC, 시퀀스 번호 및 재시도 관리(송신기)
TLP CRC 및 시퀀스 번호를 결정하고 데이터 링크 층 재시도를 지원하는데 사용되는 메카니즘들은 개념적 "카운터" 및 "플래그"라는 점에서 다음과 같이 기술된다:
CRC 및 시퀀스 번호 규칙(송신기)
ㆍ이하의 8비트 카운터들이 사용됨:
°TRANS_SEQ - 송신을 위해 준비되는 TLP들에게 인가되는 시퀀스 번호를 저장한다
ㆍLinkDown 상태에서 모두 '0'으로 설정한다
ㆍ각각의 TLP 송신 후 1씩 증가됨
ㆍ모두 '1'일 때 증가는 모두 0으로 롤오버(roll-over)되게 한다
ㆍNak DLLP 수신은 Nak DLLP에 표시된 시퀀스 번호로 돌아가도록 값이 설정되게 한다
°ACKD_SEQ - 링크 승인 DLLP로 가장 최근에 수신된 링크에서 승인된 시퀀스 번호를 저장한다.
ㆍLinkDown 상태에서 모두 '1'로 설정한다
ㆍ각각의 TLP는 8비트 시퀀스 번호를 할당받는다
°카운터 TRANS_SEQ가 상기 번호를 저장한다
°TRANS_SEQ가 (ACKD_SEQ - 1) 모듈로 256과 동일하면, (TRANS_SEQ == ACKD_SEQ -1) 모듈로 256이라는 조건이 더 이상 참이 아니도록 Ack DLLP가 ACKD_SEQ를 갱신할 때까지 송신기는 통상 다른 TLP를 송신하지 않아야만 한다.
ㆍTRANS_SEQ는 다음에 의해 TLP에 인가된다:
°단일 바이트 값을 TLP에 프리펜딩(prepending)함으로써
°단일 예약 바이트를 TLP에 프리펜딩함으로써
ㆍ32b CRC가 이하의 알고리즘을 사용하여 TLP에 대해 계산되어 TLP의 끝에 첨부된다
°사용되는 다항식은 0x04C11DB7이다
- 동일한 CRC-32가 이더넷(Ethernet)에 의해 사용됨
°계산 절차는 다음과 같다:
1) CRC-32 계산의 초기 값은 24개의 '0'들을 시퀀스 번호에 프리펜딩함으로써 형성된 DW이다
2) 헤더의 바이트 0을 포함하는 DW로부터 TLP의 최종 DW까지 순서대로 트랜잭션 층으로부터 TLP의 각각의 DW를 사용하여 CRC 계산이 계속된다
3) 상기 계산으로부터의 비트 시퀀스가 보완되며 결과는 TLP CRC이다.
4) CRC DW는 TLP의 끝에 첨부된다
ㆍ송신된 TLP의 복사본들이 데이터 링크 층 재시도 버퍼에 통상 저장돼야만 한다
ㆍAck DLLP가 다른 장치로부터 수신될 때:
°ACKD_SEQ는 DLLP에서 지정된 값으로 로드된다.
°재시도 버퍼에서는 이하의 범위의 시퀀스 번호를 갖는 TLP가 제거된다
ㆍACKD_SEQ + 1의 이전 값에서부터
ㆍACKD_SEQ의 새로운 값까지
ㆍNak DLLP가 링크를 통해 다른 컴포넌트로부터 수신될 때:
°TLP가 물리층으로 현재 전송중인 경우, TLP 송신이 완료될 때까지 송신이 계속된다
°이하의 단계들이 완료될 때까지 추가 TLP들이 트랜잭션 층으로부터 취해지지 않는다
°재시도 버퍼에서는 이하의 범위의 시퀀스 번호를 갖는 TLP가 제거된다
ㆍACKD_SEQ + 1의 이전 값
ㆍNak DLLP의 Nak 시퀀스 번호 필드에 지정된 값
°재시도 버퍼의 모든 나머지 TLP들은 원래 순서로 재송신을 위해 물리층에 다시 제공된다
ㆍ주의: 이는 상기 범위 내의 시퀀스 번호들을 갖는 모든 TLP들 을 포함할 것이다
°Nak DLLP + 1로 Nak 시퀀스 번호 필드에 지정된 값
°TRANS_SEQ - 1 값
ㆍ재시도 버퍼에 남은 TLP가 없는 경우, Nak DLLP는 에러였음
°에러가 난 Nak DLLP는 에러 추적 및 로그 섹션에 따라 통상 보고돼야만 한다
°송신기에 의해 더 이상의 동작이 요구되지 않는다
ㆍCRC 및 시퀀스 번호(수신기)
유사하게, TLP CRC 및 시퀀스 번호를 체크하고 데이터 링크 층 재시도를 지원하는데 사용된 메카니즘들은 개념적 "카운터(counter)"들 및 "플래그(flag)"들이라는 점에서 다음과 같이 기술된다:
ㆍ이하의 8비트 카운터들이 사용됨:
°NEXT_RCV_SEQ - 다음 TLP에 대한 예상 시퀀스 번호를 저장한다
ㆍLinkDown 상태에서 모두 '0'으로 설정한다
ㆍTLP가 각각 수용될 때, 또는 TLP를 수용함으로써 DLLR_IN_PROGRESS 플래그(후술됨)가 클리어될 때 1씩 증가된다
ㆍ링크 층 DLLP가 수신되고 DLLR_IN_PROGRESS 플래그가 클리어될 때마다 값(트랜잭션 시퀀스 번호 + 1)으로 로드된다.
°NEXT_RCV_SEQ의 값이 수신된 TLP 또는 Ack 타임아웃 DLLP에 의해 지정된 값과 상이한 경우, 송신기와 수신기 간의 시퀀스 번호 동기화의 손실이 표시 된다; 이러한 경우에:
ㆍDLLR_IN_PROGRESS 플래그가 설정되면,
°DLLR_IN_PROGRESS 플래그를 리셋한다
°"Sent Bad DLLR DLLP" 에러를 에러 로그/추적(Error Logging/Tracking)에 알린다
°주의: 이는 DLLR DLLP(Nak)가 에러로 송신되었음을 나타낸다
ㆍDLLR_IN_PROGRESS 플래그가 설정되지 않으면,
°DLLR_IN_PROGRESS 플래그를 설정하고 Nak DLLP를 개시한다
°주의: 이는 TLP가 손실되었음을 나타낸다
ㆍ이하의 3비트 카운터가 사용된다:
°DLLRR_COUNT - 지정된 시간에 발행된 회수의 DLLR DLLP의 카운트 수
ㆍLinkDown 상태에서 b'000'으로 설정한다
ㆍ각각의 Nak DLLP가 발행될 때 1씩 증가된다
ㆍ카운트가 b'000'에 도달할 때:
°링크 제어 상태 머신이 LinkActive로부터 LinkActDefer로 이동한다
°DLLRR_COUNT는 그 후 b'000'으로 리셋된다
ㆍDLLRR_COUNT가 b'000'과 동일하지 않으면, 매 256 심볼 타임(symbol Times) 마다 1씩 감소한다
°즉: b'000'에서 포화한다
ㆍ이하의 플래그가 사용된다:
°DLLR_IN_PROGRESS
ㆍ설정/클리어 조건들이 후술된다
ㆍDLLR_IN_PROGRESS가 설정될 때, (DLLR DLLP에 의해 표시된 TLP가 수신될 때까지) 모든 수신 TLP들은 거절된다
ㆍDLLR_IN_PROGRESS가 클리어될 때, 수신된 TLP들은 후술된 바와 같이 체크된다
ㆍ수용될 TLP에 있어서, 이하의 조건들이 통상 참이어야만 한다:
°수신된 TLP 시퀀스 번호가 NEXT_RCV_SEQ와 동일하다
°물리층이 TLP 수신에 있어서 어떠한 에러도 나타내지 않았다
°TLP CRC 체크가 에러를 나타내지 않는다
ㆍTLP가 수용될 때:
°TLP의 트랜잭션 층 파트가 수신 트랜잭션 층에 발송된다
°설정되면, DLLR_IN_PROGRESS 플래그가 클리어된다
°NEXT_RCV_SEQ가 증가된다
ㆍTLP가 수용되지 않을 때:
°DLLR_IN_PROGRESS 플래그가 설정된다
°Nak DLLP가 송신된다
ㆍAck/Nak 시퀀스 번호 필드는 통상 값 (NEXT_RCV_SEQ - 1)을 포 함해야만 한다
ㆍNak Type(NT) 필드는 Nak의 원인을 통상 나타내야만 한다
°b' 00 - 물리층에 의해 식별된 수신 에러
°b' 01 - TLP CRC 체크 실패
°b' 10 - 시퀀스 번호 부정확
°b' 11 - 물리층에 의해 식별된 프레이밍 에러
ㆍ수신기는, 컴포넌트의 포트로부터 측정된 대로, TLP에 대한 CRC의 수신으로부터 Nak의 송신까지의 시간이 1023 심볼 타임을 초과하도록 통상 허용하여는 안된다
°주의: NEXT_RCV_SEQ가 증가되지 않는다
ㆍ수신 데이터 링크 층이 512 심볼 타임 내에 Nak DLLP에 이어 예상 TLP를 수신하는데 실패하면, Nak DLLP가 반복된다.
°4번의 시도 후에도 여전히 예상 TLP가 수신되지 않았으면, 수신기는:
ㆍLinkActDefer 상태를 입력하고 물리층에 의해 링크 재훈련(retraining)을 개시할 것이다
ㆍ주요 에러 발생을 에러 추적 및 로그에 나타낼 것이다
ㆍ데이터 링크 층 승인 DLLP는 통상 이하의 조건이 참일 때 송신돼야만 한다
°데이터 링크 제어 및 관리 상태 머신이 LinkActive 상태이다
°TLP들이 수용되었지만, 승인 DLLP를 송신함으로써 승인되지는 않았다
°최종 승인 DLLP 이래로 512 보다 많은 심볼 타임이 경과되었다
ㆍ데이터 링크 층 승인 DLLP들이 요구된 것보다 더 자주 송신될 수 있다
ㆍ데이터 링크 층 승인 DLLP들이 Ack 시퀀스 번호 필드에서 값 (NEXT_RCV_SEQ - 1)을 지정한다
ㆍAck 타임아웃 메카니즘
수신기가 TLP의 존재를 검출하지 않도록 TLP가 링크(112) 상에서 손상되는 경우를 생각해 보자. TLP 시퀀스 번호가 수신기의 예상 시퀀스 번호와 일치하지 않을 것이기 때문에, 손실 TLP는 다음 TLP가 송신될 때 검출될 것이다. 그러나, 송신 데이터 링크 층(204)은 송신 트랜스포트 층으로부터 다음 TLP가 제공될 시간을 일반적으로 바운드할 수 없다. Ack 타임아웃 메카니즘은 수신기가 손실 TLP를 검출하는데 필요한 시간을 송신기가 바운드할 수 있게 해준다.
Ack 타임아웃 메카니즘 규칙
ㆍ송신 재시도 버퍼가 Ack DLLP가 수신되지 않은 TLP들을 포함하는 경우에, 그리고 1024 심볼 타임을 초과하는 기간 동안 TLP 또는 링크 DLLP가 송신되지 않은 경우에, Ack 타임아웃 DLLP는 통상 송신되어야만 한다
ㆍAck 타임아웃 DLLP 송신에 이어, 승인 DLLP가 링크의 다른 측의 컴포넌트로부터 수신될 때까지 데이터 링크 층은 송신을 위해 임의의 TLP들을 물리층에 전달하지 않아야만 한다
°승인 DLLP가 1023 심볼 타임을 초과하는 기간 동안 수신되지 않으면, Ack 타임아웃 DLLP가 다시 송신된다
- 승인 DLLP 수신 없이 Ack 타임아웃 DLLP을 4번 연속 송신한 후 부터 1024 심볼 타임에, LinkActDefer 상태를 입력하고 물리층에 의해 링크 재훈련을 개시할 것이다
ㆍ주요 에러 발생을 에러 추적 및 로그에 나타낼 것이다
물리층(206)
도 2를 계속하여 참조하면, 물리층(206)이 제공된다. 본 명세서에서 사용되는 바와 같이, 물리층(206)은 트랜잭션(202) 및 데이터 링크(204) 층들을 링크 데이터 교환에 사용되는 시그널링 기술로부터 분리한다. 도 2에 도시된 일 구현예에 따라, 물리층은 논리 기능 서브-블록(208) 및 물리 기능 서브-블록(210)들로 분할된다.
본 명세서에서 사용되는 바와 같이, 논리 서브-블록(208)은 물리층(206)의 "디지털" 기능들에 대한 책임이 있다. 이점에 있어서, 논리 서브-블록(208)은 2개의 메인 분할, 즉 물리 서브-블록(210)에 의해 송신되는 정보를 준비하는 송신 섹션 및 링크 층(204)에 전달하기 전에 수신된 정보를 식별 및 준비하는 수신기 섹션을 갖는다. 논리 서브-블록(208) 및 물리 서브-블록(210)은 상태 및 제어 레지스터 인터페이스를 통해 포트 상태를 조정한다. 물리층(206)의 제어 및 관리 기능들은 논리 서브-블록(208)에 의해 관리된다.
일 구현예에 따라, EGIO 아키텍처는 8b/10b 송신 코드를 사용한다. 이러한 기법을 사용하여, 8-비트 문자들은 각각 4-비트 코드 그룹 및 6-비트 코드 그룹에 매핑된 3-비트 및 5-비트로 처리된다. 상기 코드 그룹들은 10-비트 심볼을 형성하도록 연관된다. EGIO 아키텍처에 의해 사용되는 8b/10b 인코딩 기법은 문자들을 표현하는데 사용되는 데이터 심볼들과 구별되는 특별한 심볼들을 제공한다. 특별한 심볼들은 이하의 다양한 링크 관리 메카니즘에 사용된다. 특별 심볼들은 또한 DLLP 및 TLP를 프레임하는데 사용되는데, 이는 두 가지 타입의 패킷들이 신속하고 쉽게 구별될 수 있도록 독특한 특별 심볼들을 사용하여 이루어진다.
물리 서브-블록(210)은 송신기 및 수신기를 포함한다. 송신기는 자신이 직렬화(serialize)하고 링크(112)에 송신하는 심볼들을 논리 서브-블록(208)에 의해 제공받는다. 수신기는 직렬화된 심볼들을 링크(112)로부터 제공받는다. 수신기는 역직렬화되고 인입 직렬 스트림으로부터 복구된 심볼 클록과 함께 논리 서브-블록(208)에 제공되는 비트스트림으로 수신 신호들을 변환한다. 본 명세서에서 사용되는 바와 같이, EGIO 링크(112)가 전자 통신 링크, 광 통신 링크, RF 통신 링크, 적외선 통신 링크, 무선 통신 링크 등을 포함하는 매우 다양한 통신 매체들 중 임의의 매체를 나타낼 수 있음을 알 것이다. 이점에 있어서, 물리층(206)의 물리 서브-블록(210)을 포함하는 수신기(들) 및/또는 송신기(들) 각각은 하나 이상의 상술된 통신 링크들에 적합하다.
통신 에이전트의 예시
도 5는 본 발명의 일 구현예에 따라, 본 발명과 관련된 기능들 중 적어도 일부를 포함하는 통신 에이전트의 일례의 블록도를 도시한 것이다. 도 5에 도시된 일 구현예에 따라, 통신 에이전트(500)는 제어 로직(502), EGIO 통신 엔진(504), 데이터 구조용 메모리 스페이스(506) 및 선택적인 하나 이상의 애플리케이션들(508)을 포함하는 것으로 도시되어 있다. 본 명세서에서 사용되는 바와 같이, 제어 로직(502)은 본 발명의 하나 이상의 태양들을 선택적으로 구현하기 위해 EGIO 통신 엔진(504)의 하나 이상의 요소들 각각에 프로세싱 리소스들을 제공한다. 이점에 있어서, 제어 로직(502)은 마이크로프로세서, 마이크로컨트롤러, 유한 상태 머신(finite state machine), 프로그래머블 로직 장치, FPGA(Field Programmable Gate Array), 또는 실행될 때, 상술된 요소들 중 하나로 작용하도록 제어 로직을 구현하는 콘텐츠 중 하나 이상을 나타내도록 의도된 것이다.
EGIO 통신 엔진(504)은 EGIO 링크(112)와 통신 에이전트(500)를 인터페이스하기 위한 트랜잭션 층 인터페이스(202), 데이터 링크 층 인터페이스(204) 및 물리층 인터페이스(206) 중 하나 이상을 포함하는 것으로 도시되어 있으며, 이때 상기 물리층 인터페이스(206)는 논리 서브-블록(208) 및 물리 서브-블록(210)을 포함한다. 본 명세서에서 사용되는 바와 같이, EGIO 통신 엔진(504)의 요소들은 상술된 바와 동일하지는 않지만 유사한 기능을 실행한다.
도 5에 도시된 일 구현예에 따라, 통신 에이전트(500)는 데이터 구조(506)를 포함하는 것으로 도시되어 있다. 도 7을 참조하여 보다 자세히 후술되는 바와 같이, 데이터 구조(506)는 전자 어플라이언스 장치들 간의 통신을 용이하게 하기 위해 통신 엔진(504)에 의해 사용되는 메모리 스페이스, IO 스페이스, 구성 스페이스 및 메시지 스페이스를 포함할 수 있다.
본 명세서에서 사용되는 바와 같이, 애플리케이션(508)은 EGIO 통신 프로토콜 및 관련 관리 기능들을 구현하기 위해 통신 엔진(504)에 의해 선택적으로 호출되는 매우 다양한 애플리케이션들 중 임의의 애플리케이션을 나타내도록 의도된 것 이다.
데이터 구조(들)의 예시
도 7을 참조하면, 본 발명의 한 구현예에 따라, EGIO 인터페이스(들)(106)에 의해 사용되는 하나 이상의 데이터 구조(들)의 도면이 도시되어 있다. 특히, 도 7에 도시된 일 구현예에 따라, 4개의 어드레스 스페이스들, 즉 구성 스페이스(710), 입출력 스페이스(720), 메모리 스페이스(730) 및 메시지 스페이스(740)가 EGIO 아키텍처 내에서 사용되기 위해 정의되어 있다. 도시된 바와 같이, 구성 스페이스(710)는 호스트 장치가 속한 EGIO 범주(예컨대, 종단점 등)를 정의하는 헤더 필드(712)를 포함한다. 어드레스 스페이스들 각각은 후술된 바와 같이 각각의 기능들을 실행한다.
도 1 내지 도 8을 참조하여 상술된 본 발명과 관련된 아키텍처 및 프로토콜 요소들을 소개하였으며, 이제 도 10을 살펴보자. 도 10은 강화된 일반 입/출력 아키텍처의 물리 통신 리소스들을 관리하는 예시적인 방법의 플로우챠트를 제공한다.
도 10을 참조하면, 본 발명의 일 실시예에 따라, 강화된 일반 입/출력 링크의 물리적 리소스들 내의 하나 이상의 가상 채널(들)의 관리를 설정하는 예시적인 방법의 플로우챠트가 제공된다. 도 10에 도시된 일 구현예는 EGIO 인터페이스(106)가 다른 컴포넌트로 송신하기 위한 정보를 수신하는 블록(1002)으로 시작한다. 일 구현예에 따라, EGIO 인터페이스(106)의 트랜잭션 층(202)은 호스트 컴포넌트 내의 프로세싱 에이전트로부터 정보를 수신한다.
블록(1004)에서, EGIO 인터페이스(106)는 설정된 가상 채널과 수신된 정보가 관련되는지를, 또는 새로운 가상 채널이 요구되는지를 결정한다. 한 구현예에 따라, 트랜잭션 층(202)은 정보의 소스 및 목적지를 식별함으로써 결정을 실행한다. 블록(1004)에서, 트랜잭션이 정보를 기존 가상 채널과 관련된 것으로서 식별하면, 트랜잭션 층(202)은 물리적 일반 입/출력 리소스들을 통해 송신되기에 적합한 가상 채널에 물리 링크 층(206)을 통해 수신 정보를 전달하기 위해 적합한 가상 채널과 관련된 트랜잭션 층 패킷(TLP)을 생성한다(블록 1006).
블록(1004)에서, 상기 정보가 새로운 가상 채널 생성을 요구하면, 트랜잭션 층(202)은 요구된 가상 채널의 타입에 관한 추가적인 결정을 더 실행한다(블록 1008). 일 구현예에 따라, 트랜잭션 층(202)은 수신 정보의 콘텐츠에 적어도 부분적으로 근거하여 결정을 실행한다. 상술된 일 구현예에 따라, EGIO 아키텍처는 전달될 정보와 관련된 서비스 품질(quality-of-service) 요건을 근거로 선택된 가상 채널들의 다수의 타입들에 대한 지원을 제공한다. 이점에 있어서, 트랜잭션 층(202)은 수신 정보가 시간 종속적(등시성)인지를 결정하고, 그러한 경우, 상기 정보의 송신을 지원하기 위해 하나 이상의 등시성 가상 채널들을 설정한다. 한 실시예에 따라, 콘텐츠 타입이 콘텐츠 자체의 분석을 통해 결정되거나, 콘텐츠를 트랜잭션 층에 전달하는 에이전트의 타입(예컨대, 애플리케이션 타입)으로부터 추론된다.
블록(1012)에서, EGIO 인터페이스(106)는 EGIO 링크(112)의 물리적 리소스들에 걸쳐 있는 정보를 다른 컴포넌트에 송신하기 위한 개별 흐름 제어 및 정렬 규칙으로 가상 채널을 설정한다. 특히, 상술된 바와 같이, 트랜잭션 층(202)은 EGIO 링크(112)의 물리적 매체로의 루팅을 위한 물리층(206)에 데이터 링크 층(204)을 통해 전달하기 위한 가상 채널 타입을 나타내는 트랜잭션 층 패킷(들)을 생성한다. 상술된 본 발명의 내용에 따라, 트랜잭션 층(202)은 트랜잭션 층(202)에 의해 설정된 가상 채널들 각각에 대한 개별 흐름 제어 및 정렬 규칙들을 유지한다. 이점에 있어서, EGIO 링크(112)의 물리적 리소스들 내에서 다수의 가상 채널들을 설정 및 관리하기 위한 아키텍처, 프로토콜 및 관련 방법들이 기술되었다.
다른 실시예들
도 9는 본 발명의 또 다른 실시예에 따라, EGIO 상호 연결 아키텍처 및 통신 프로토콜의 하나 이상의 태양들을 구현하기 위한 명령들을 포함하는 다수의 명령들이 저장되어 있는 저장 매체들의 블록도이다. 일반적으로, 도 9는 액세스 머신에 의해 실행될 때, 본 발명의 혁신적인 EGIO 인터페이스(106)를 구현하는 적어도 부분 집합을 포함하는 콘텐츠가 저장되어 있는 머신 액세스 가능 매체/장치(900)를 도시하고 있다.
본 명세서에서 사용되는 바와 같이, 머신 액세스 가능 매체(900)는 예컨대, 휘발성 메모리 장치, 비휘발성 메모리 장치, 자기 저장 매체, 광 저장 매체, 전파 신호 등과 같이 본 기술 분야의 당업자들에게 공지된 다수의 매체들 중 임의의 매체를 나타내도록 의도된 것이다. 유사하게, 실행 가능 명령들은 예컨대, C++, 비쥬얼 베이직, HTML(Hypertext Markup Language), 자바, XML(eXtensible Markup Language) 등과 같이 본 기술 분야에 공지된 다수의 소프트웨어 언어 중 임의의 소프트웨어 언어를 반영하도록 의도된 것이다. 또한, 매체(900)가 어떠한 호스트 시스템과도 같이 위치할 필요는 없음을 알 것이다. 즉, 매체(900)는 실행 시스템에 대하여 통 신상 결합되고 그에 의해 액세스 가능한 원격 서버 내에 위치할 수 있다. 따라서, 도 9의 소프트웨어 구현은 도시된 바 대로 간주될 것이며, 다른 저장 매체 및 소프트웨어 실시예들이 본 발명의 원리 및 범위 내에서 예상된다.
본 발명이 구조적 기능 및/또는 방법적 단계들에 특정한 언어로 요약서 뿐만 아니라 발명의 상세한 설명에서 기술되었지만, 첨부된 청구항들에서 정의된 발명은 기술된 특정 기능 또는 단계들을 반드시 제한하는 것이 아님을 알 것이다. 특정 기능 및 단계들은 단지 청구된 발명을 구현하는 일례의 형태들로서 기술된 것이다. 그러나, 다양한 변경들 및 수정이 본 발명의 보다 넓은 원리 및 범위내에서 달성될 수 있음이 명백하다. 본 명세서 및 도면들은 제한적인 것이 아니며 일례로서 간주될 것이다. 발명의 상세한 설명 및 요약서는 그것이 전부이거나, 또는 기술된 정확한 형태들로 본 발명을 제한하려는 의도가 아니다.
이하의 청구항들에서 사용된 용어들은 본 발명을 명세서에 기술된 특정 실시예들로 제한하는 것으로 해석되어서는 안된다. 대신, 본 발명의 범위는 이하의 청구항들에 의해 전체적으로 결정될 것이며, 청구항들은 청구항 해석의 정해진 원칙들에 따라 해석될 것이다.