KR20230019828A - 직접 부착된 디스패치를 갖는 분리된 스위치 제어 경로 - Google Patents

직접 부착된 디스패치를 갖는 분리된 스위치 제어 경로 Download PDF

Info

Publication number
KR20230019828A
KR20230019828A KR1020227040696A KR20227040696A KR20230019828A KR 20230019828 A KR20230019828 A KR 20230019828A KR 1020227040696 A KR1020227040696 A KR 1020227040696A KR 20227040696 A KR20227040696 A KR 20227040696A KR 20230019828 A KR20230019828 A KR 20230019828A
Authority
KR
South Korea
Prior art keywords
functions
packet
function
host
switch
Prior art date
Application number
KR1020227040696A
Other languages
English (en)
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 KR20230019828A publication Critical patent/KR20230019828A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • G06F13/423Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus with synchronous protocol
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Logic Circuits (AREA)

Abstract

본원의 실시예들은 통합된 구성 요소의 I/O 기능들과 호스트 사이에서 전송되는 데이터를 별개의 데이터 경로들로 분리하기 위한 기술을 설명한다. 일 실시예에서, 데이터 패킷들은 통합된 구성 요소의 스위치를 우회하는 직접 데이터 경로를 사용하여 전송된다. 반대로, 구성 패킷들(예를 들어, 핫-스왑(hot-swap), 핫-애드, 핫-리무브(hot-romove) 데이터, 일부 유형들의 설명자 등)은 스위치로 전송되며, 스위치는 그 후 구성 패킷들을 그 목적지로 전달한다. 데이터 패킷들에 대한 직접 경로는 호스트와 I/O 기능들 간에 대역폭에 민감한 트래픽을 운송하기 위한 스위치 연결(및 그 수반되는 대기 시간)에 의존하지 않고, 대신 스위치의 대역폭, 리소스, 저장/전달 및 대기 시간 특성을 피한다(예를 들어, 우회). 한편, 핫 플러그 속성(대기 시간 및 대역폭에 민감하지 않음)과 같은 소프트웨어 호환성 속성들은 스위치를 사용하여 계속 지원되어 구성 데이터 경로를 제공한다.

Description

직접 부착된 디스패치를 갖는 분리된 스위치 제어 경로
본 개시의 예들은 일반적으로 호스트와 통합된 구성 요소 상의 I/O 기능들 사이에서 전송되는 데이터 패킷들(data packets) 및 구성 패킷들에 대한 별도의 데이터 경로들을 확립하는 것에 관한 것이다.
주변 구성 요소 상호 연결 익스프레스(PCIe: Peripheral Component Interconnect Express) 또는 컴퓨트 익스프레스 링크(CXL: Compute Express Link) 및 가속기에 대한 캐시 코히런트 상호 연결(CCIX: Cache Coherent Interconnect for Accelerators)과 같은 캐시 코히런시(coherency) 프로토콜들에 의해 활성화된 것과 같은 서버 호스트-가속기 시스템들은 프로토콜 인식 스위치 구성 요소들을 통해 복수의 디바이스들에 대해 증가된 팬 아웃(fan out)을 달성한다. 따라서, 단일 물리적 호스트 포트는 호스트와 I/O 디바이스들 모두가 CXL, CCIX 및 PCIe에 의해 확립된 지점-대-지점 연결을 통해 통신하고 있더라도, 네트워크 기능들, 저장 기능들, 가속기 기능들, 직접 메모리 액세스(DMA: Direct Memory Access) 기능들 등과 같은 상이한 I/O 기능들을 수행하는 디바이스들을 포함하여 필드 프로그램 가능 게이트 어레이(FPGA: field programmable gate array), 그래픽 처리 장치(GPU: graphics processing unit), 네트워크 인터페이스 카드(NIC: network interface card)와 같은 복수의 I/O 디바이스들과 통신할 수 있다.
서버 호스트-가속기 시스템들은 또한 시스템의 다중-디바이스 카드 슬롯들에 대해 동일한 프로토콜 인식 스위치 구성 요소들을 통해 핫-플러그(hot-plug) 메커니즘들을 제공한다. 핫-애드(hot-add) 및 핫-리무브(hot-remove) 기능을 포함하는 이러한 핫-플러그 메커니즘들은 특정 서버가 해당 슬롯들의 정적으로 플러깅된 프로토콜 카드들에 기초하여 기능들의 고정된 조합으로 제한되지 않는 시스템들을 만든다. 대신, I/O 기능들의 임의의 조합은 시스템의 원하는 구성을 생성하기 위해 런타임에서 동적으로 핫-애딩, 핫-리무빙 또는 핫-스와핑(hot-swapping)될 수 있다.
그러나, PCIe 및 CXL 토폴로지들은 트리(tree) 토폴로지들이다. 트리 토폴로지들의 단점은 호스트로부터의 트래픽이 소스 루트 노드로부터 스위치의 업스트림 포트를 통해 트리의 브랜치로 순회해야 한다는 것이다. 반대 방향의 트래픽은 동일한 트리 순회 경로를 거친다. 또한, 캐시 코히런시 프로토콜들은 전체 시스템 성능에 대한 대기 시간의 불균형적인 영향으로 인해 대기 시간에 대한 높아진 감도를 갖는다. 캐싱 에이전트(caching agent)들의 경우, 이전 기술들은 스위치 병목을 통해 연결된 복수의 캐시-에이전트 종점들에 코히런시 액션들을 제공할 때 증가된 대기 시간을 초래한다. 코히런시 프로토콜들에 추가하여, 이전 기술들은 호스트와 I/O 디바이스 간에 데이터를 전송할 때 스위치에서 리소스를 중재하고 스위치를 통해 전송해야 하기 때문에 호스트와 각각의 디바이스 사이의 증가된 대기 시간을 초래한다. 또한, 호스트와 모든 디바이스들 간의 동시 프로토콜 메시지들에 대해 스위치를 통한 대역폭 공유로 인해 호스트와 각각의 I/O 디바이스 간의 대역폭이 감소한다. 마지막으로, 스위치가 모든 I/O 디바이스들 간의 요청들 및 응답들을 저장한 후 호스트에 대한 단일 업스트림 연결로 전달해야 하기 때문에 스위치의 리소스 효율성이 감소한다.
본원에 설명되는 일 실시예는 컴퓨팅 시스템이며, 컴퓨팅 시스템은 제1 포트를 포함하는 호스트 및 통합된 구성 요소를 포함하고, 통합된 구성 요소는 제2 포트 ― 제1 포트 및 제2 포트는 호스트와 통합된 구성 요소 사이의 물리적 연결을 형성함 -, 복수의 I/O 기능들, 제2 포트를 통해 호스트로부터 패킷을 수신하고, 패킷의 유형을 식별하고, 직접적으로 복수의 I/O 기능들 중 목적지 I/O 기능 또는 간접적으로 패킷의 유형에 기초하여 매립된 스위치를 사용하여 목적지 I/O 기능 중 하나로 패킷을 라우팅하도록 구성된 패스 스루(pass through) 인터페이스를 포함한다.
본원에 설명되는 일 실시예는 장치이며, 장치는 호스트 상의 제2 포트와의 물리적 연결을 형성하도록 구성된 제1 포트, 복수의 I/O 기능들, 매립된 스위치, 및 제1 포트를 통해 호스트로부터 패킷을 수신하고, 패킷의 유형을 식별하고, 직접적으로 복수의 I/O 기능들 중 목적지 I/O 기능 또는 간접적으로 패킷의 유형에 기초하여 매립된 스위치를 사용하여 목적지 I/O 기능 중 하나로 패킷을 라우팅하도록 구성된 패스 스루 인터페이스를 포함한다.
본원에 설명되는 일 실시예는 방법이며, 본 방법은 통합된 구성 요소의 패스 스루 인터페이스에서 호스트로부터 제1 패킷을 수신하는 단계 ― 통합된 구성 요소는 복수의 I/O 기능들 및 패스 스루 인터페이스에 통신 가능하게 커플링된 매립된 스위치를 포함함 ―, 제1 패킷이 데이터 패킷인 것으로 결정하는 단계 ― 복수의 I/O 기능들 중 제1 I/O 기능은 데이터 패킷의 목적지임 ―; 매립된 스위치를 우회하는 직접 데이터 경로를 사용하여 패스 스루 인터페이스로부터 제1 I/O 기능으로 데이터 패킷을 직접 라우팅하는 단계, 패스 스루 인터페이스에서 호스트로부터 제2 패킷을 수신하는 단계, 제2 패킷이 구성 패킷인 것으로 결정하는 단계 ― 제1 I/O 기능은 구성 패킷의 목적지임 ―; 및 매립된 스위치를 통해 패스 스루 인터페이스로부터 제1 I/O 기능으로 데이터 패킷을 라우팅하는 단계를 포함한다.
위에서 인용된 특징들이 상세하게 이해될 수 있는 방식으로, 위에서 간략하게 요약된 보다 구체적인 설명이 예시적인 구현들을 참조할 수 있으며, 그 중 일부는 첨부된 도면에 예시되어 있다. 그러나, 첨부된 도면은 단지 통상적인 예시적인 구현을 예시하므로 그 범위를 제한하는 것으로 간주되어서는 안 된다는 점에 유의해야 한다.
도 1은 일 예에 따른, I/O 기능들에 대한 상이한 데이터 경로를 갖는 컴퓨팅 시스템을 예시한다.
도 2는 일 예에 따른, 상이한 데이터 경로를 갖는 패스 스루 인터페이스를 예시한다.
도 3은 일 예에 따른, 상이한 데이터 경로들을 사용하여 호스트로부터 I/O 기능들로 데이터 및 구성 패킷들을 전송하기 위한 흐름도이다.
도 4는 일 예에 따른, 상이한 데이터 경로들을 사용하여 I/O 기능들로부터 호스트로 데이터 및 구성 패킷들을 전송하기 위한 흐름도이다.
도 5는 예들에 따른, 새로운 I/O 기능을 핫 스와핑하기 위한 흐름도이다.
도 6은 예들에 따른, 새로운 I/O 기능이 추가된 컴퓨팅 시스템을 예시한다.
도 7은 예들에 따른, 집중된 네트워크 인터페이스 카드와 통신하는 호스트를 갖는 컴퓨팅 시스템을 예시한다.
이해를 용이하게 하기 위해, 가능한 경우 동일한 참조 번호들이 도면들에 공통적인 동일한 요소들을 나타내는 데 사용되었다. 일 예의 요소들이 다른 예들에서는 유리하게 통합될 수 있음이 고려된다.
이하 도면들을 참조하여 다양한 특징들을 설명한다. 도면들은 축척에 맞게 도시될 수도 있고 그렇지 않을 수도 있으며 유사한 구조들 또는 기능들의 요소들은 도면들 전체에 걸쳐 유사한 참조 번호들에 의해 표시된다는 점에 유의해야 한다. 도면들은 단지 특징들의 설명을 용이하게 하기 위해 의도된 것임을 유의해야 한다. 이는 설명의 완전한 설명이나 청구항들의 범위에 대한 제한으로 의도되지 않는다. 또한, 예시된 예는 도시된 모든 양태들 또는 이점들을 가질 필요는 없다. 특정 예와 관련하여 설명된 양태 또는 이점은 반드시 해당 예에 제한되지 않으며, 그렇게 예시되지 않거나 명시적으로 설명되지 않더라도 임의의 다른 예에서 실시될 수 있다.
본원의 실시예들은 통합된 구성 요소의 I/O 기능들과 호스트 사이에서 전송되는 데이터를 별도의 데이터 경로들로 분리하기 위한 기술들을 설명한다. 일 실시예에서, 데이터 패킷(예를 들어, DMA 페이로드들 및 디스크립터, CXL 스누프(snoop)들 또는 CCIX 메시지)은 통합된 구성 요소의 스위치를 우회하는 직접 데이터 경로를 사용하여 전송된다. 이와 대조적으로, 구성 패킷들(예를 들어, 핫-스왑, 핫-애드, 핫-리무브 데이터, 구성 제어 기입 또는 구성 상태 판독 등)은 스위치로 전송되며, 그 후 스위치는 구성 패킷들을 해당 목적지로 전달한다. 이러한 방식으로, 스위치 제어 경로는 데이터 패킷들을 위한 하나의 경로와 구성 패킷들을 위한 다른 경로의 2 개의 경로로 분리된다. 데이터 패킷들에 대한 직접 경로는 호스트와 I/O 기능들 간의 대역폭 또는 대기 시간에 민감한 트래픽을 운송하기 위해 스위치 연결에 의존하지 않으며, 대신 스위치의 대역폭, 리소스, 저장/전달 및 대기 시간 속성들을 피한다(예를 들어, 우회한다). 한편, 핫 플러그 속성들과 같은 소프트웨어 호환성 속성들 또는 (대기 시간이나 대역폭에 민감하지 않은) 구성 레지스터들의 프로그래밍은 스위치를 사용하여 계속 지원되어 구성 데이터 경로를 제공한다.
일 실시예에서, 통합된 구성 요소는 호스트로부터 수신된 데이터를 I/O 기능들 및 스위치로 라우팅할 뿐만 아니라 데이터를 호스트로 전송할 때 I/O 기능들과 스위치 사이에서 중재하기 위한 패스 스루 인터페이스를 포함한다. 그러나, 큐(queue)에서 데이터를 버퍼링하는 스위치와 달리(따라서 대기 시간을 추가하고 대역폭에 영향을 미침) 패스 스루 인터페이스의 라우팅 및 중재 기능들은 패킷들을 저장하지 않고 오히려 수신된 패킷들을 해당 목적지로 즉시 전달한다. 상술한 바와 같이, 패스 스루 인터페이스는 시간에 민감한 데이터에 대한 스위치를 우회하는 I/O 기능들과 호스트 사이에 직접 경로들을 확립할 수 있으며 (대기 시간 또는 시간에 민감하지 않은) 구성 데이터는 스위치를 사용하여 호스트와 I/O 기능들 사이에서 라우팅된다. 이러한 방식으로, 대기 시간 또는 대역폭에 민감하지 않은 패킷들은 대기 시간 및 대역폭에 민감한 데이터에서 사용되는 것과 동일한 데이터 경로를 막지 않는다.
도 1은 일 예에 따른, I/O 기능들(140)에 대한 상이한 데이터 경로들을 갖는 컴퓨팅 시스템(100)을 예시한다. 구체적으로, 컴퓨팅 시스템(100)은 호스트(105)와 I/O 기능들(140) 사이에서 데이터 패킷들을 전송하기 위한 직접 데이터 경로(170) 및 호스트(105)와 I/O 기능들(140) 사이에서 구성 패킷들을 전송하기 위한 간접 구성 데이터 경로(180)를 제공한다. 따라서, 시간에 민감한 데이터와 시간에 민감하지 않은 데이터가 동일한 물리적 연결을 공유하는 이전 해결책들과 달리, 컴퓨팅 시스템(100)에서 시간에 민감한 데이터는 통합된 구성 요소(160)에서 시간에 민감하지 않은 데이터와 별도의 경로로 전송될 수 있다.
도시된 바와 같이, 컴퓨팅 시스템(100)은 호스트(105) 및 I/O 기능들(140)을 포함하는 통합된 구성 요소(160)를 포함한다. 이 예에서, 호스트(105)는 하나 이상의 프로세서들(110) 및 메모리(115)를 포함한다. 프로세서들(110)은 각각 임의의 수의 프로세싱 코어들을 포함할 수 있는 임의의 수의 프로세싱 요소들을 나타낸다. 메모리(115)는 휘발성 메모리 요소들, 비휘발성 메모리 요소들, 또는 이 둘의 조합을 포함할 수 있다. 이 예에서, 메모리(115)는 하나 이상의 가상 머신(VM: virtual machine)들(120) 또는 테넌트(tenant)들을 호스팅한다. 이러한 VM들(120)은 통합된 구성 요소(160)에 작업들을 제출하는 기능들을 수행할 수 있다. 통합된 구성 요소(160)의 I/O 기능들(140)은 그 후 이러한 작업들을 수행할 수 있다.
호스트(105)는 통합된 구성 요소(160)의 포트(130)에 커플링된 포트(125)를 포함한다. 즉, 호스트(105) 및 통합된 구성 요소(160)의 I/O 기능들(140)은 데이터를 교환하기 위해 동일한 쌍의 포트들(125, 130)을 사용한다. 일 실시예에서, 호스트(105) 및 통합된 구성 요소(160)는 포트들(125, 130) 상에서 데이터를 교환하기 위해 PCIe 프로토콜을 사용한다. 또한, 포트들(125, 130) 사이의 동일한 물리적 연결은 통합된 구성 요소(160)의 I/O 기능들(140)에 의해 공유된다. 일 실시예에서, I/O 기능들(140) 중 하나만이 임의의 주어진 시간에 포트들(125, 130) 사이의 물리적 연결을 사용할 수 있다. I/O 기능들(140) 각각이 호스트(105)와 데이터를 교환하기 위해 물리적 연결을 사용할 기회를 갖도록 시간 다중화가 사용될 수 있다. 이러한 방식으로, (통상적으로 가장 큰 대역폭 연결인) 포트들(125, 130) 사이의 물리적 연결의 대역폭이 I/O 기능들(140) 사이에서 공유된다.
통합된 구성 요소(160)는 복수의 I/O 기능들(140) 및 매립된 스위치(150)가 통합될 수 있는 임의의 물리적 디바이스일 수 있다. 일 실시예에서, 통합된 구성 요소(160)는 I/O 기능들(140) 및 매립된 스위치(150)가 PCB 상에 장착되는 별도의 집적 회로들(예를 들어, 반도체 칩들)인 인쇄 회로 기판(PCB: printed circuit board)(예를 들어, 기판)을 포함할 수 있다. PCB는 이러한 집적 회로들이 PCB에 플러깅되는 소켓들을 포함할 수 있다. 이러한 방식으로, 집적 회로들은 핫-스와핑될 수 있다(예를 들어, 제1 I/O 기능을 수행하는 하나의 집적 회로가 소켓으로부터 제거되고 제2 I/O 기능을 수행하는 제2 집적 회로로 대체됨). 다른 실시예에서, 통합된 구성 요소(160)는 I/O 기능들(140) 및 매립된 스위치(150)에 대한 집적 회로들이 하나 이상의 칩 캐리어 패키지들에 봉입되는 패키지 내 시스템(SiP: system in a package)일 수 있다. I/O 기능이 SiP에 있을 때 핫-스와핑되지 못할 수도 있지만, I/O 기능들(140)은 여전히 선택적으로 활성화 및 비활성화될 수 있다(예를 들어, 핫-애딩 및 핫-리무빙됨).
또 다른 실시예에서, 통합된 구성 요소(160)는 구성 요소(160)의 모든 구성 요소들이 동일한 집적 회로 또는 칩에 포함되는 칩 상의 시스템(SoC: system on a chip)이다. SoC는 기능들(140)이 활성화 또는 비활성화될 수 있는(예를 들어, 핫 애딩 또는 핫 리무빙됨) I/O 기능들(140)을 구현하기 위한 고정형 로직을 포함할 수 있다. 대안적으로, SoC는 I/O 기능들(140)이 핫 스와핑될 수 있도록 I/O 기능들(140)을 구현하기 위한 프로그램 가능 로직을 포함할 수 있으며, 여기서 하나의 I/O 기능에 대한 프로그램 가능 로직은 프로그램 가능 로직이 제2 I/O 기능을 수행하도록 재구성된다. 다른 실시예에서, 통합된 구성 요소(160)는 FPGA일 수 있으며, 여기서 통합된 구성 요소(160)에 예시된 회로는 프로그램 가능 로직 또는 ASIC로 구현되며, 여기서 회로는 고정형 로직을 사용하여 구현된다.
통합된 구성 요소(160)의 특정 구현에 관계없이, I/O 기능들(140)은 컴퓨팅 시스템(100)이 집적 회로들을 물리적으로 제거하거나, 고정형 로직을 비활성화/활성화시키거나 프로그램 가능 로직을 재프로그램함으로써 동작하는 동안(예를 들어, 핫-애딩 또는 핫-리무빙됨) 활성화 또는 비활성화될 수 있다. 일부 실시예들에서, I/O 기능들(140)은 제1 집적 회로를 기판(예를 들어, PCB) 상의 다른 집적 회로로 교체하거나 제2 I/O 기능을 수행하기 위해 이전에 제1 I/O 기능을 수행한 프로그램 가능 로직을 재구성함으로써 핫 스와핑될 수 있다. 핫 스왑/애드/리무브에 의해 영향을 받지 않는 통합된 구성 요소(160)의 다른 I/O 기능들(140)은 계속해서 병렬로 동작할 수 있다.
통합된 구성 요소(160)는 포트(130), I/O 기능들(140) 및 매립된 스위치(150)에 커플링된 패스 스루 인터페이스(135)를 포함한다. 패스 스루 인터페이스(135)는 포트(130)를 사용하여 I/O 기능들(140), 스위치(150) 및 호스트(105) 간에 패킷들을 전송하기 위한 라우팅 및 중재 기능들을 수행한다. 예를 들어, 호스트(105)로부터 패킷을 수신할 때, 패스 스루 인터페이스(135)는 패킷이 I/O 기능(140)에 대해 직접 데이터 경로(170) 중 하나를 순회해야 하는지 여부 또는 매립된 스위치(150)로 라우팅되어야 하는지 여부를 나타내는 패킷의 유형을 결정한다. 통합된 구성 요소(160)로부터 호스트(105)로 패킷을 전송할 때, 패스 스루 인터페이스(135)는 어떠한 소스(예를 들어, I/O 기능들(140) 또는 매립된 스위치(150) 중 하나)가 포트(130)를 사용하여 호스트(105)로 패킷들을 전송할 수 있는지 결정하기 위해 중재 로직을 사용할 수 있다.
일 실시예에서, 패스 스루 인터페이스(135)는 호스트(105), I/O 기능들(140) 또는 스위치(150)로부터 수신하는 패킷을 버퍼링하거나 큐잉(queuing)하지 않는다. 대신에, 인터페이스(135)는 패킷이 대기 시간을 추가하지 않고 "패스 스루"하도록 허용한다. 예를 들어, 패스 스루 인터페이스(135)가 패킷을 수신하면, 수신된 패킷이 이전에 수신된 패킷이 패스 스루 인터페이스(135)에 의해 전달되는 것을 기다릴 필요가 없도록 패킷을 즉시 목적지로 전달한다. 패스 스루 인터페이스(135)는 도 2에서 더 상세히 논의된다.
I/O 기능들(140)은 통합된 구성 요소(160)에 의해 수행되도록 호스트(105)에 의해 오프로딩(offloading)될 수 있는 임의의 기능일 수 있다. 예를 들어, I/O 기능들(140)은 가속기(예를 들어, 그래픽 가속기, 기계 학습 가속기의 인공 지능, 암호화 가속기, 압축 가속기 등)일 수 있다. 다른 예에서, I/O 기능들(140)은 네트워크 통신 기능(예를 들어, NIC 기능), DMA 엔진, 네트워크 저장 기능 등일 수 있다.
I/O 기능들(140)은 별개의 I/O 디바이스들 또는 서로 독립적으로 동작할 수 있는 기능들로 간주될 수 있다. 예를 들어, I/O 기능(140A)은 네트워크 저장을 수행하는 DMA 엔진일 수 있는 반면 I/O 기능(140B)은 인공 지능 가속기이다. I/O 기능들(140A 및 140B)은 별개의 집적 회로일 수 있거나, 동일한 집적 회로의 상이한 회로(예를 들어, 상이한 고정형 로직 또는 상이한 프로그램 가능 로직)일 수 있다. 임의의 경우에, 아래에서 논의되는 바와 같이, I/O 기능들(140)은 컴퓨팅 시스템(100)이 동작하는 동안 핫-리무빙(비활성화) 또는 핫-애딩(활성화)될 수 있다. 예를 들어, 호스트(105)는 통합된 구성 요소(160)가 새로운 I/O 기능(140)을 추가하거나(예를 들어, 이전에 비활성화되었던 I/O 기능(140B)을 활성화하거나 제5 I/O 기능(미도시)을 추가) 또는 I/O 기능을 제거(예를 들어, 이전에 활성화되었던 I/O 기능(140C)을 비활성화)라는 것과 동시에 현재 I/O 기능(140A)과 통신하고 있을 수 있다.
매립된 스위치(150)는 I/O 기능들(140)과 호스트(105) 사이에서 패킷들을 라우팅하는 PCIe 스위치일 수 있다. 또한, 스위치(150)는 I/O 기능들(140)로 전달되지 않는 패킷들을 호스트(105)로부터 수신할 수 있다. 위에서 언급한 바와 같이, 스위치(150)는 I/O 기능들(140)을 핫-스왑, 핫-애드 또는 핫-리무브하는 데 사용되는 구성 패킷들과 같은 대기 시간에 민감하지 않은 데이터 및 대역폭에 민감하지 않은 데이터를 라우팅하는 데 사용될 수 있다. 또한 구성 패킷들은 송신 및 수신 액션들을 개시하기 위해 캐시 코히런시 프로토콜들에 사용되는 디스크립터들과 같은 다른 정보를 포함할 수 있다.
도 1에서, I/O 기능들(140) 중 하나를 위해 의도된 호스트(105)에 의해 전송된 구성 패킷들은 간접 구성 데이터 경로들(180) 중 하나를 따라 스위치(150)를 통해 라우팅된다. 결과적으로, 구성 패킷들은 스위치(150)의 큐(155)에 저장된다. 이러한 큐(155)는 또한 호스트-스위치 버퍼로서 지칭될 수 있다. 스위치(150)는 큐(155)에 저장된 구성 패킷들이 전송되거나 프로세싱될 때를 결정하기 위해 중재 기능을 수행할 수 있다.
특히, 도 1에서, 직접 데이터 경로들(170)은 매립된 스위치(150), 보다 구체적으로 큐(155)를 우회한다. 이와 같이, 직접 데이터 경로(170)는 또한 큐(155)에 의해 도입되는 대기 시간을 피하는 우회 경로로 지칭될 수 있다. 따라서, 컴퓨팅 시스템(100)은 복수의 캐시-에이전트 종점들(즉, I/O 기능들(140))에 대한 코히런시 액션들을 서비스할 때 모든 데이터가 스위치(150)를 통과했던 이전 기술들에 비해 대기 시간을 감소시킨다. 또한, 본원의 실시예들은 호스트(105)와 I/O 기능들(140) 간에 대기 시간 및 대역폭에 민감한 데이터를 전송할 때 스위치의 리소스에 대해 중재해야 하는 것을 피한다. 즉, 민감한 데이터는 스위치(150)에 의해 수행되는 중재 기능을 피하기 위해 직접 데이터 경로들(170)을 사용할 수 있다(중재는 아래에서 논의되는 바와 같이 패스 스루 인터페이스(135)에서 여전히 수행되지만 패스 스루 인터페이스(135)는 큐를 사용하지 않음).
또한, 호스트(105)와 각각의 I/O 기능들(140)은 호스트(105)와 모든 I/O 기능들(140) 사이의 동시 프로토콜 메시지들에 대한 스위치를 통해 대역폭을 공유할 필요가 없는데, 이러한 메시지들은 직접 데이터 경로들(170)을 사용할 수 있기 때문이다. 또한, 컴퓨팅 시스템(100)은 모든 I/O 기능들(140) 사이의 요청 및 응답을 저장한 다음 포트(125 및 130)에 의해 형성된 호스트(105)에 대한 단일 업스트림 연결로 전달하기 위해 스위치(150)에 의존하는 것을 피한다. 따라서, 컴퓨팅 시스템(100)은 모든 트래픽이 스위치(150)를 통해 라우팅되는 종래 기술들에 비해 복수의 종점(예를 들어, I/O 기능들(140))이 단일 연결(예를 들어, 포트들(125, 130) 사이의 물리적 연결)을 사용하여 호스트(105)에 대해 팬 아웃(fan out)으로 연결되는 개선된 성능으로부터 이점을 얻는다.
도 2는 일 예에 따른 상이한 데이터 경로들을 갖는 패스 스루 인터페이스(135)를 예시한다. 즉, 도 2는 컴퓨팅 시스템(200)이 도 1에 예시된 직접 데이터 경로들 및 간접 구성 데이터 경로를 갖도록 허용하는 패스 스루 인터페이스(135)의 회로의 일 예를 예시한다.
단순화를 위해, 도 2의 통합된 구성 요소(260)는 단지 2 개의 I/O 기능들(140A 및 140B)을 포함하지만 임의의 개수의 I/O 기능들 또는 I/O 디바이스들을 포함할 수 있다. 호스트(105)로부터 I/O 기능들(140) 또는 매립된 스위치(150)로 데이터를 라우팅하기 위해, 패스 스루 인터페이스(135)는 라우팅 로직(205) 및 디멀티플렉서(de-mux))(215)를 포함한다. 일반적으로, 라우팅 로직(205)은 호스트(105)의 포트(125)로부터 수신된 패킷(다운스트림 트래픽이라고 칭함)의 목적지를 결정한다. 목적지에 기초하여, 라우팅 로직(205)은 패킷이 정확한 목적지, 즉, I/O 기능들(140) 또는 매립된 스위치(150) 중 하나로 라우팅되도록 de-mux(215)의 선택 라인을 제어한다.
이 예에서, 라우팅 로직(205)은 패킷의 목적지를 결정하기 위해 호스트(105)로부터 수신된 패킷에 포함된 데이터를 디코딩하는 디코더(210)를 포함한다. 일 실시예에서, 디코더(210)는 패킷의 목적지 ID뿐만 아니라 패킷의 유형을 식별한다. 패킷의 유형은 패킷이 I/O 기능들(140) 중 하나로 직접 데이터 경로를 순회해야 하는지 또는 매립된 스위치(150)로 간접 구성 데이터 경로를 순회해야 하는지를 결정한다. 즉, 구성 패킷이 매립된 스위치(150)로 전송되는 동안 데이터 패킷들은 I/O 기능들(140)로 직접 송신될 수 있다. 디코더(210)가 패킷이 데이터 패킷이라고 결정하면, 디코더(210)는 또한 I/O 기능들(140) 중 어느 것이 목적지인지 결정할 수 있다. I/O 기능(140)을 통합된 구성 요소(260)에 추가할 때, 호스트(105)는 호스트(105)가 디코더(210)에 제공하는 I/O 기능(140)에 ID를 할당할 수 있다. 호스트(105)에 의해 전송된 데이터 패킷들에 이러한 ID를 매립함으로써, 디코더(210)는 라우팅 로직(205)이 선택된 I/O 기능(140)에 대응하는 직접 데이터 경로 상에서 데이터 패킷을 라우팅하도록 데이터 패킷의 정확한 목적지를 식별할 수 있다.
통합된 구성 요소(260)로부터 호스트(105)로 업스트림 트래픽을 전달하기 위해, 패스 스루 인터페이스(135)는 통합된 구성 요소(260)의 어떤 회로 구성 요소가 포트(130)를 사용할 수 있는지를 결정하는 중재 로직(220)을 포함한다. 도시된 바와 같이, mux(225)는 I/O 기능들(140) 및 매립된 스위치(150) 각각을 포트(130)에 연결한다. mux(225)에 대한 선택 신호는 중재 로직(220)에 의해 제공된다. 일 실시예에서, 중재 로직(220)은 이러한 회로 구성 요소 중 어느 것이 패킷들을 포트(130)로 전송할 수 있는지를 결정한다(예를 들어, 중재 로직(220) mux(225)의 선택 라인을 시간 제어함). 이 예에서, 중재 로직(220)은 데이터 충돌이 없도록 I/O 기능들(140) 또는 매립된 스위치(150) 중 하나만이 포트(130)에 액세스하는 것을 허용한다. 중재 로직(220)의 상세 사항은 아래에서 더 상세히 논의된다.
도 2에 예시된 바와 같이, 통합된 구성 요소(260)가 호스트(105)로부터 다운스트림 데이터를 수신하거나 업스트림 데이터를 호스트(105)로 전송하는지 여부에 관계없이, 데이터는 큐잉되지 않고 인터페이스(135)를 통과하도록 허용된다. 그 결과, I/O 기능들(140)과 호스트(105) 사이의 직접 데이터 경로를 따라 전송된 트래픽은 I/O 기능들(140)이 이들과 호스트(105) 사이의 매개체로서 매립된 스위치(150)에 의존하는 시스템들에 비해 감소된 대기 시간을 갖는다.
패스 스루 인터페이스(135)와 마찬가지로, 매립된 스위치(150)도 중재 로직(230)을 포함한다. 즉, 큐(155)는 복수의 소스들로부터의 복수의 패킷들(예를 들어, I/O 기능들(140)로부터 수신된 패킷들 또는 스위치(150)의 내부 회로에 의해 생성된 패킷들)을 저장할 수 있기 때문에, 중재 로직(230)은 (단순한 선입 선출(first in-first out) 모델보다는) 이러한 패킷들 중 어느 것이 큐(155)에서 우선 순위를 가져야 하는지를 결정할 수 있다. 예를 들어, 중재 로직(220)과 중재 로직(230) 모두는 스위치의 내부 회로에 의해 생성된 트래픽보다 I/O 기능들에 의해 생성된 트래픽을 우선 순위화하거나, I/O 기능(140B)으로부터 수신된 트래픽보다 I/O 기능(140A)으로부터 수신된 트래픽을 우선 순위화할 수 있다. 이는 이하에서 더 상세히 논의된다.
도 3은 일 예에 따른, 상이한 데이터 경로들을 사용하여 호스트로부터 I/O 기능들로 데이터 및 구성 패킷들을 전송하기 위한 방법(300)의 흐름도이다. 블록 305에서, 통합된 구성 요소는 패스 스루 인터페이스에서 호스트로부터 패킷을 수신한다. 일 실시예에서, 통합된 구성 요소는 통합된 구성 요소와 호스트 사이의 공유된 물리적 연결에 의존하는 복수의 I/O 기능들(또는 I/O 디바이스들)을 포함한다.
블록 310에서, 패스 스루 인터페이스의 디코더는 수신된 패킷이 데이터 패킷인지 또는 구성 패킷인지를 결정한다. 예를 들어, 패킷 헤더는 패킷의 유형을 나타내는 데이터를 포함할 수 있다. 이 정보는 호스트에 의해 패킷에 입력되거나 패킷을 전송하는 데 사용되는 물리적 전송 프로토콜(예를 들어, PCIe)의 일부일 수 있다. 임의의 경우에, 디코더는 패킷의 정보를 디코딩하여 그것이 데이터 패킷인지, 또는 보다 일반적으로 시간에 민감한 데이터를 갖는 패킷인지, 또는 구성 패킷, 예를 들어, 시간에 민감하지 않은 데이터를 갖는 패킷인지를 결정할 수 있다.
데이터 패킷과 구성 패킷 간의 구별은 컴퓨팅 시스템의 특정 구현에 따라 변할 수 있다. 예를 들어, 데이터 패킷들은 DMA 페이로드, CXL 스누프(snoop)들, CCIX 메시지들 등이 될 수 있는 반면, 구성 패킷들은 핫-스와핑, 핫-애딩 또는 핫-리무빙을 수행하기 위한 디스크립터들 또는 커맨드들(예를 들어, 호스트-대-I/O 디바이스 제어 메시지들)을 포함한다. 본원의 실시예들은 데이터가 패킷 유형에 따라 분기될 수 있는 임의의 시스템과 함께 사용될 수 있다.
패킷이 데이터 패킷인 경우, 본 방법(300)은 패스 스루 인터페이스가 데이터 패킷을 대응하는 I/O 기능으로 직접 라우팅하는 블록 315로 진행한다. 달리 말하면, 패스 스루 인터페이스의 라우팅 로직은 통합된 구성 요소의 매립된 스위치를 우회하는 직접 데이터 경로 상에서 데이터 패킷을 전달한다. 일 실시예에서, 라우팅 로직의 디코더는 수신된 데이터 패킷을 디코딩하여 패킷의 목적지를 식별한다(예를 들어, 데이터 패킷에서 목적지 ID를 식별). 예를 들어, 컴퓨팅 시스템을 구성할 때(예를 들어, I/O 기능들을 추가하거나 I/O 기능들과 호스트 간의 통신을 확립할 때) 호스트는 라우팅 로직에 알려진 I/O 기능들에 목적지 ID들을 할당할 수 있다. 통합된 구성 요소에 패킷을 전송할 때, 호스트는 패킷들에 목적지 ID들을 매립할 수 있다. 그 후, 디코더는 이러한 ID들을 식별할 수 있고 라우팅 로직은 수신된 패킷이 예를 들어, de-mux를 사용하여 적절한 I/O 기능으로 전달되도록 보장할 수 있다.
그러나, 패킷이 구성 패킷인 경우, 본 방법(300)은 대신 패스 스루 인터페이스가 구성 패킷을 매립된 스위치로 전달하는 블록 320으로 진행한다. 블록 325에서, 매립된 스위치는 구성 패킷의 목적지가 스위치 자체인지 또는 I/O 기능들 중 하나인지를 결정한다. 즉, 방법(300)에서, 호스트는 특정 작업을 수행하도록 스위치를 구성할 수 있는 스위치로 향하는 구성 패킷들을 전송할 수 있다. 호스트는 I/O 기능들에도 구성 패킷들을 송신할 수 있다.
구성 패킷이 스위치로 향하는 경우, 본 방법(300)은 매립된 스위치가 스위치(도 2에 미도시)의 구성(config) 공간에서 패킷을 프로세싱하는 블록 330으로 진행한다. 구성 패킷은 구성 공간을 변경하여 스위치 구성의 작동을 변경할 수 있다.
구성 패킷이 I/O 기능들 중 하나로 향하는 경우, 본 방법(300)은 대신 매립된 스위치가 패킷을 대응하는 I/O 기능으로 전달하는 블록 335로 진행한다. 즉, 스위치는 어떠한 I/O 기능이 구성 패킷의 목적지인지 식별하고 간접 구성 데이터 경로를 사용하여 해당 패킷을 해당 I/O 기능으로 전달한다.
도 4는 일 예에 따른, 상이한 데이터 경로들을 사용하여 I/O 기능들로부터 호스트로 데이터 및 구성 패킷들을 전송하기 위한 방법(400)의 흐름도이다. 즉, 방법(300)이 2 개의 데이터 경로들을 사용하여 호스트로부터 통합된 구성 요소의 다양한 회로 구성 요소들로 데이터를 전송하기 위한 기술들을 설명한 반면, 방법(400)은 2 개의 데이터 경로들을 사용하여 통합된 구성 요소로부터 호스트로 데이터를 전송하는 것을 설명한다.
블록 405에서, 매립된 스위치는 I/O 기능들 중 하나로부터 제1 구성 패킷(예를 들어, 구성 응답 메시지)을 수신한다. 예를 들어, 제1 구성 패킷은 호스트에 의해 I/O 기능으로 이전에 전송된 구성 패킷에 대한 응답일 수 있다.
병렬로, 또는 실질적으로 동시에, 블록 410에서 매립된 스위치는 스위치의 구성 공간으로부터 제2 구성 패킷을 수신한다. 또는 다른 실시예에서, 매립된 스위치는 실질적으로 동시에 I/O 기능들 중 2 개로부터 2 개(또는 그 이상)의 구성 패킷들을 수신할 수 있다.
블록 415에서, 매립된 스위치의 중재 로직은 매립된 스위치의 제1 구성 패킷과 제2 구성 패킷 사이에서 중재한다. 즉, 제1 패킷 및 제2 패킷은 패킷이 패스 스루 인터페이스로 전송된 다음 호스트로 전송될 수 있기 전에 중재가 완료될 때까지 대기하면서 큐에 저장될 수 있다. 이러한 중재 로직은 스위치의 구성 공간보다 I/O 기능을 선호하거나 다른 I/O 기능들 중 하나 이상보다 해당 I/O 기능들 중 하나를 선호할 수 있는 서비스 품질(QoS: quality of service) 정책에 기초할 수 있다.
스위치의 중재 로직이 제1 패킷과 제2 패킷 중 어느 것을 먼저 송신할지 결정할 때, 스위치는 패킷을 패스 스루 인터페이스로 전송하기 전에 여전히 기다릴 수 있다. 도 2에 도시된 바와 같이, 패스 스루 인터페이스(135)는 어떤 회로(예를 들어, 스위치 또는 I/O 기능들 중 하나)가 예를 들어, mux(225)를 사용하여 호스트로 데이터를 전송하도록 허용되는지를 결정하는 자체 중재 로직(220)을 갖는다.
블록 420에서, 패스 스루 인터페이스의 중재 로직(예를 들어, 중재 로직(220))은 스위치가 호스트에 대해 준비된 구성 패킷(예를 들어, 제1 및 제2 구성 패킷) 및 적어도 하나의 I/O 기능이 호스트에 대한 데이터 패킷을 갖는다는 표시를 수신한다. 즉, 본 방법(400)은 통합된 구성 요소의 적어도 2 개의 디바이스들(예를 들어, 스위치 및 I/O 기능들 중 하나 또는 I/O 기능들 중 복수의 것)이 호스트에 송신될 준비가 된 데이터를 갖는 것으로 가정한다. 현재 하나의 구성 요소만 호스트로 데이터를 전송하기를 원하는 경우, 중재 로직은 해당 구성 요소가 임의의 중재 없이 물리적 연결(예를 들어, 호스트와 집적 회로 간의 물리적 연결)을 사용하도록 단지 허용할 수 있다.
그러나, 복수의 구성 요소들이 데이터를 호스트로 전송하기를 원한다고 가정하면, 블록 425에서 패스 스루 인터페이스의 중재 로직은 구성 패킷과 데이터 패킷 사이에서 중재한다. 일 실시예에서, 중재 로직은 구성 패킷들보다 데이터 패킷들을 우선 순위화하는 QoS 정책을 사용할 수 있다. 또는 다르게 말하면, QoS 정책은 스위치에 의해 전송되는 패킷들보다 I/O 기능들로부터 직접 전송되는 패킷들을 선호할 수 있다. 다른 예에서, QoS 정책은 I/O 기능들을 서로보다 우선 순위화할 수 있다. 예를 들어, 호스트의 VM들(또는 테넌트들)은 상이한 우선 순위를 가질 수 있다. 호스트의 더 높은 우선 순위 VM들에 의해 사용되는 통합된 구성 요소의 I/O 기능(또는 기능들)은 호스트에서 더 낮은 우선 순위의 VM에 의해 사용되는 I/O 기능보다 패스 스루 인터페이스의 중재 로직에 의해 사용되는 QoS 정책에서 더 높은 우선 순위를 부여받을 수 있다.
블록 430에서, 패스 스루 인터페이스의 중재 로직은 (중재에 의해 결정된) 선택된 패킷이 호스트로 전송되는 것을 허용한다. 일 실시예에서, 중재 로직은 가중화된 중재를 갖고 특정 시간 동안 (또는 특정 양 또는 수의 데이터를 전송하기 위해) 공유된 버스에 액세스할 수 있음을 I/O 기능들 또는 스위치 중 하나에 알린다. 이러한 방식으로, 중재 로직은 통합된 구성 요소의 어떤 구성 요소가 통합된 구성 요소와 호스트 간의 공유된 물리적 연결을 사용할 수 있는지 제어할 수 있다.
도 5는 예들에 따른, 새로운 I/O 기능을 핫 스와핑하기 위한 방법(500)의 흐름도이다. 설명의 편의를 위해, 본 방법(500)은 예들에 따라, 새로운 I/O 기능이 추가되는 컴퓨팅 시스템을 예시하는 도 6과 함께 논의된다.
블록 505에서, 통합된 구성 요소는 호스트로부터 새로운 I/O 기능을 추가하라는 요청을 수신한다. 일 실시예에서, (호스트에서 실행되는) 통합된 구성 요소에 대한 소프트웨어 드라이버는 통합된 구성 요소에 새로운 I/O 기능을 핫-애딩하기로 결정한다. 예를 들어, 호스트 상에서 실행되는 VM 또는 테넌트는 새 I/O 기능에 대한 요청을 송신했을 수 있거나, 하이퍼바이저(hypervisor)가 VM 또는 테넌트가 새 I/O 기능을 필요로 한다고 결정한다.
도 6에서, 컴퓨팅 시스템(600)은 I/O 기능을 추가하는 프로세스에 있는 통합된 구성 요소(660)를 포함한다. 즉, 가속기 기능(Accelerator Function) 0(AF0) 및 CXL.Cache X는 점선으로 도시된 통합된 구성 요소(660)에 추가되고, AF1 및 CXL.Cache Y는 이미 통합된 구성 요소(660)에서 동작하고 있다. 도 6에서, I/O 기능들, 즉, AF0, AF1, CXL.Cache X 및 CXL.Cache Y는 프로그램 가능 로직으로 구현되고, AF0 Config Space, ID-X Config Space, ID-Y Config Space, AF1 Config Space 및 매립된 CXL 분리된 스위치(615)는 고정형 회로에서 구현된다. 즉, 프로그램 가능한 로직을 재구성함으로써, 통합된 구성 요소(660)는 I/O 기능들인 AF0, AF1, CXL.Cache X 및 CXL.Cache Y를 핫-스와핑(즉, 핫-애드 또는 핫-리무브)할 수 있다. 그러나, 다른 실시예에서, I/O 기능들은 고정형 로직으로 구현될 수 있다. 해당 예에서, I/O 기능들을 추가하거나 제거하지 않고, 호스트(105)는 I/O 기능들을 선택적으로 활성화 또는 비활성화함으로써 I/O 기능들을 핫-애딩 또는 핫-리무빙할 수 있다.
다른 실시예에서, I/O 기능들, 즉, AF0, AF1, CXL.Cache X 및 CXL.Cache Y뿐만 아니라 AF0 Config Space, ID-X Config Space, ID-Y Config Space, AF1 Config Space는 AF0 및 CXL.Cache X가 통합된 구성 요소(660)에 추가될 때, 핫 애드 이벤트가 개시되기 전에 AF0 및 CXL.Cache X에 대해 부분적으로 재구성된 프로그램 가능 로직 비트스트림이 추가되도록 프로그램 가능 로직으로 구현된다. 이 실시예에서, AF0 및 CXL.Cache X 모두는 프로그램 가능한 로직 비트스트림으로서 이전에 로딩된 기능을 갖는 핫 플러깅된 디바이스들일 수 있다.
블록 510에서, 통합된 구성 요소는 호스트로부터 새로운 I/O 기능에 대한 바인딩 및 구성 정보를 수신한다. 일 실시예에서, 구성 정보는 통합된 구성 요소의 I/O 기능을 추가하거나 활성화하기 위한 데이터를 포함할 수 있다. 또한, 호스트는 식별 데이터의 패스 스루 인터페이스(그리고 보다 구체적으로, 패스 스루 인터페이스의 라우팅 로직)에 알려주는 I/O 기능에 대한 바인딩으로 사용되는 새로운 I/O 기능으로 호스트에 의해 할당된 식별 데이터를 전송한다. 그 후, 패스 스루 인터페이스의 라우팅 로직은 수신된 데이터 패킷들을 디코딩할 때 이러한 식별 데이터를 사용하여 패킷이 위의 방법(300)에 설명된 바와 같이 새로운 I/O 기능으로 라우팅되어야 하는지 여부를 결정할 수 있다.
블록 510은 집적 회로가 새로운 I/O 기능, 데이터 경로 바인딩 및 구성 데이터 바인딩을 위한 구조를 포함하는 비트스트림을 수신하는 서브-블록 515를 포함한다. 일 실시예에서, 서브-블록 515는 I/O 기능이 프로그램 가능 로직으로 구현될 때 수행된다. 예를 들어, 통합된 구성 요소(660)는 AF0 및 CXL.Cache X를 포함하도록 프로그램 가능한 로직을 구성하기 위해 비트스트림을 사용할 수 있다. 비트스트림은 또한 AF0 및 ID-X Config Space의 레지스터들에 대한 구조를 포함할 수 있다.
데이터 경로 바인딩은 패스 스루 인터페이스가 데이터 패킷들을 새로운 I/O 기능으로 직접 라우팅하는 데 사용하는 라우팅 정보를 제공할 수 있다. 반면, 구성 데이터 바인딩은 간접 구성 데이터 경로를 사용하여 구성 데이터 패킷들을 새로운 I/O 기능으로 라우팅하기 위해 매립된 스위치 및 패스 스루 인터페이스(135)가 사용하는 라우팅 정보를 포함한다. 즉, 데이터 경로 바인딩은 데이터가 CXL에 도달할 수 있게 한다. 구성 데이터 바인딩이 매립된 CXL 스위치(615)를 통해 데이터가 AF0 및 ID-X Config Space에 도달할 수 있게 하는 동안 데이터 경로 바인딩은 데이터가 패스 스루 인터페이스(135)로부터 직접 CXL.Cache X에 도달할 수 있게 한다.
블록 520에서, 통합된 구성 요소는 새로운 I/O 기능 및 그 바인딩을 활성화시킨다. 즉, 통합된 구성 요소는 새로운 I/O 기능을 포함하도록 프로그램 가능 로직을 구성하거나 블록 510에서 얻은 정보를 사용하여 이전에 비활성화되었던 고정형 회로의 I/O 기능을 활성화시킨다.
블록 525에서, 통합된 구성 요소는 가상 핫-플러그 이벤트를 호스트로 전송한다. 도 6에서, 스위치(615)는 가상 Hot Plug Event를 생성하고 이벤트를 호스트 상에서 실행되는 호스트 핫-플러그 소프트웨어 드라이버로 전달한다. 새로운 I/O 기능이 업스트림 포트에 직접 부착되어 있더라도, 가상 Hot Plug Event는 호스트에 AF0 Config Space와 스위치(615) 사이의 가상 종점 연결에 연결되어 있는 가상 다운스트림 포트로 새로운 I/O 기능(예를 들어, 새로운 I/O 디바이스)이 플러깅(또는 통신 가능하게 커플링)되어 있음을 나타낸다.
블록 530에서, 호스트는 구성 데이터 경로 상에서 송신된 구성 패킷을 사용하여 새로운 I/O 기능을 발견한다. 예를 들어, 호스트 핫-플러그 소프트웨어 드라이버는 가상 핫-플러그 이벤트에 응답할 수 있으며 CSL 루트 포트(RP: root port)(605)로부터 CXL 업스트림 포트(USP: upstream port)(610)로 그리고 패스 스루 인터페이스(135)를 통해 스위치(615)로 라우팅된 구성 판독 메시지들을 사용하여 새로운 종점 I/O 기능들 AF0 및 CXL.Cache X를 발견하도록 진행한다. 그 후, 스위치(615)는 구성 판독 메시지들을 AF0 및 ID-X Config Space의 가상 종점 레지스터들로 전달할 수 있다.
블록 535에서, 호스트는 대응하는 레지스터들을 프로그래밍함으로써 새로운 I/O 기능을 열거한다. 일 실시예에서, 호스트(105)는 CXL.Cache X의 디바이스 ID 및 AF0의 디바이스 ID를 갖는 AF0 및 ID-X Config Space 레지스터들을 프로그래밍함으로서 AF0 및 CXL.Cache X를 열거한다. 그 후, 호스트(105)는 직접 데이터 경로 및 간접 구성 데이터 경로를 사용하여 새로운 I/O 기능으로 데이터 트래픽을 전달할 준비가 된다.
일 실시예에서, 일단 위의 블록들이 완료되면, 블록 540에서 호스트 및 통합된 구성 요소는 직접 데이터 경로를 사용하여 새로운 I/O 기능으로 데이터 패킷들을 라우팅한다. 블록 545에서, 호스트 및 통합된 구성 요소는 간접 구성 데이터 경로를 사용하여 구성 패킷들을 새로운 I/O 기능으로 라우팅한다. 이러한 방식으로, 호스트 및 통합된 구성 요소는 새로운 I/O 디바이스를 핫-애딩할 수 있다.
도 7은 예들에 따라, 통합된 구성 요소(760)를 사용하여 구현된 집중 NIC와 통신하는 호스트(105)를 갖는 컴퓨팅 시스템(700)을 예시한다. 위의 컴퓨팅 시스템과 마찬가지로, 컴퓨팅 시스템(700)은 PCIe RP(705)와 PCIe USP(710) 사이의 단일 물리적 연결을 사용하여 통합된 구성 요소(760)에 통신 가능하게 커플링된 호스트(105)를 포함한다. 또한, 통합된 구성 요소(760)는 호스트(105)와 I/O 기능들(즉, DMA 엔진0-3) 사이의 직접 데이터 경로들 및 매립된 PCIe 분리 스위치(715)를 포함하는 간접 구성 데이터 경로를 확립하기 위한 패스 스루 인터페이스(135)를 포함한다.
도 7은 PCIe 연결 서버(예를 들어, 호스트(105))에 연결된 PCIe 구성 요소(예를 들어, 통합된 구성 요소(760))를 예시한다. 통합된 구성 요소(760)는 호스트(105)에 대한 낮은 대기 시간 및 높은 대역폭 인터페이스들 및 그 제어 및 상태 구조들 또는 구성 공간들과 별개인 대응하는 서비스들을 갖는 PCI DMA 엔진0-3을 포함한다. 이 예에서, 각각의 DMA 엔진0-3은 집중 NIC(SmartNIC라고도 칭함)의 상이한 네트워크 기능에 대응한다. 예를 들어, DMA 엔진0은 네트워크 서비스에 대응하고, DMA 엔진1은 원격 직접 메모리 액세스(RDMA: Remote Direct Memory Access) 서비스에 대응하고, DMA 엔진2는 비휘발성 메모리 익스프레스 오버 파이버(NVMeoF: Non-Volatile Memory Express Over Fiber) 서비스에 대응하고, DMA 엔진3은 저장 서비스에 대응한다. 네트워크, RDMA, NVMeoF 및 저장 서비스들에 대한 고대역폭 디바이스-대-호스트 DMA 트래픽은 직접 데이터 경로들을 따른다. 또한 네트워크, RDMA, NVMeoF 및 저장 서비스를 대상으로 하는 낮은 대기 시간 호스트-대-I/O 기능 작업 디스크립터들도 직접 데이터 경로를 따를 수 있다. 반대로, PCIe 스위치(715)는 간접 구성 데이터 경로들을 따라 대응하는 네트워크, RDMA, NVMeoF 및 저장 구성 공간뿐만 아니라 DMA 엔진0-3에 대한 호스트-대-I/O 기능 저성능 제어 경로 트래픽을 라우팅할 수 있다.
DMA 엔진0-3은 프로그램 가능 로직 또는 고정형 회로를 사용하여 구현될 수 있다. 또한, DMA 엔진0-3 및 대응하는 서비스는 위에서 논의된 핫-애딩 및 제거 기술들을 사용하여 추가 및 제거(예를 들어, 활성화 및 비활성화)될 수 있다.
매립된 스위치를 포함하는 간접 경로와 별개의 직접 데이터 경로를 생성하는 본원의 실시예는 종점(예를 들어, I/O 기능)을 핫-플러그 애딩/리무빙하는 능력을 포함하여 낮은 대기 시간, 호스트에 대한 높은 대역폭 데이터 경로 인터페이스를 생성한다. 스위치를 통한 중재 대신 직접 데이터 경로를 사용하면, CXL.Cache 및 CCIX Cache 실시예들에 대한 낮은 대기 시간 스누프 응답, CXL.mem 및 CCIX Home Agent 및 Slave Agent 실시예들에 대한 낮은 대기 시간 및 높은 대역폭 메모리 트래픽, 및 PCIe Endpoint 실시예들에 대한 낮은 대기 시간 디스크립터 통신 및 높은 대역폭 DMA 판독/기입과 같은 다수의 실시예들에 대해 우수한 성능이 획득된다.
이상, 본 개시에 제시된 실시예들을 참조하였다. 그러나, 본 개시의 범위는 설명된 특정 실시예들에 한정되지 않는다. 대신, 다른 실시예와 관련이 있든 그렇지 않든, 설명된 특징들 및 요소들의 임의의 조합은 고려된 실시예들을 구현하고 실시하도록 고려된다. 또한, 본원에 개시된 실시예들이 다른 가능한 해결책 또는 종래 기술에 비해 이점들을 달성할 수 있지만, 특정 이점이 주어진 실시예에 의해 달성되는지 여부는 본 개시의 범위를 한정하지 않는다. 따라서, 앞의 양태들, 특징들, 실시예들 및 이점들은 단지 예시일 뿐이며 청구항(들)에서 명시적으로 인용된 경우를 제외하고는 첨부된 청구항들의 요소 또는 제한으로 간주되지 않는다.
본 기술 분야의 통상의 기술자에 의해 이해되는 바와 같이, 본원에 개시된 실시예들은 시스템, 방법 또는 컴퓨터 프로그램 제품으로서 구현될 수 있다. 따라서, 양태들은 전체 하드웨어 실시예, 전체 소프트웨어 실시예(펌웨어, 상주 소프트웨어, 마이크로-코드 등을 포함) 또는 모두 일반적으로 본원에서 "회로", "모듈" 또는 "시스템"으로 지칭될 수 있는 소프트웨어 및 하드웨어 양태들을 조합한 실시예의 형태를 취할 수 있다. 또한, 양태들은 구현된 컴퓨터 판독 가능 프로그램 코드를 갖는 하나 이상의 컴퓨터 판독 가능 매체(들)에 구현된 컴퓨터 프로그램 제품의 형태를 취할 수 있다.
하나 이상의 컴퓨터 판독 가능 매체(들)의 임의의 조합이 이용될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터가 판독 가능 신호 매체 또는 컴퓨터가 판독 가능 저장 매체일 수 있다. 컴퓨터 판독 가능 저장 매체는 예를 들어, 전자, 자기, 광학, 전자기, 적외선, 또는 반도체 시스템, 장치 또는 디바이스, 또는 상술한 것의 임의의 적절한 조합일 수 있지만 이에 한정되지 않는다. 컴퓨터 판독 가능 저장 매체의 더 구체적인 예들(비제한적 목록)은 하나 이상의 와이어들을 갖는 전기적 연결, 휴대용 컴퓨터 디스켓, 하드 디스크, 랜덤 액세스 메모리(RAM: random access memory), 판독 전용 메모리(ROM: read-only memory), 소거 가능 프로그램 가능 판독 전용 메모리(EPROM(erasable programmable read-only memory) 또는 플래시 메모리), 광섬유, 휴대용 컴팩트 디스크 판독 전용 메모리(CD-ROM: compact disc read-only memory), 광학 저장 디바이스, 자기 저장 장치 또는 상술한 것의 임의의 적절한 조합을 포함할 것이다. 이 문서의 맥락에서, 컴퓨터 판독 가능 저장 매체는 명령 실행 시스템, 장치 또는 디바이스에 의해 또는 이와 관련하여 사용하기 위한 프로그램을 포함하거나 저장할 수 있는 임의의 유형의 매체이다.
컴퓨터 판독 가능 신호 매체는 예를 들어 기저 대역에서 또는 반송파의 일부로서 내부에 구현된 컴퓨터 판독 가능 프로그램 코드를 갖는 전파된 데이터 신호를 포함할 수 있다. 이러한 전파된 신호는 전자기, 광학 또는 이들의 임의의 적절한 조합을 포함하지만 이에 한정되지 않는 임의의 다양한 형태들을 취할 수 있다. 컴퓨터 판독 가능 신호 매체는 컴퓨터 판독 가능 저장 매체가 아니고 명령 실행 시스템, 장치 또는 디바이스에 의해 또는 이와 관련하여 사용하기 위한 프로그램을 전달, 전파 또는 운송할 수 있는 임의의 컴퓨터 판독 가능 매체일 수 있다.
컴퓨터 판독 가능 매체에 구현된 프로그램 코드는 무선, 유선, 광섬유 케이블, RF 등, 또는 상술한 것의 임의의 적절한 조합을 포함하지만 이에 한정되지 않는 임의의 적절한 매체를 사용하여 전송될 수 있다.
본 개시의 양태들에 대한 동작들을 수행하기 위한 컴퓨터 프로그램 코드는 Java, Smalltalk, C++ 등과 같은 객체 지향 프로그래밍 언어 및 "C" 프로그래밍 언어 또는 유사한 프로그래밍 언어들과 같은 통상의 절차적 프로그래밍 언어들을 포함하는 하나 이상의 프로그래밍 언어들의 임의의 조합으로 작성될 수 있다. 프로그램 코드는 전체적으로 사용자의 컴퓨터에서, 부분적으로 사용자의 컴퓨터에서, 독립형 소프트웨어 패키지로서, 부분적으로 사용자의 컴퓨터에서 그리고 부분적으로 원격 컴퓨터에서 또는 전체적으로 원격 컴퓨터 또는 서버에서 실행될 수 있다. 후자의 시나리오에서, 원격 컴퓨터는 근거리 네트워크(LAN: local area network) 또는 광역 네트워크(WAN: wide area network)를 포함한 임의의 유형의 네트워크를 통해 사용자의 컴퓨터에 연결될 수 있거나, (예를 들어, 인터넷 서비스 공급자(Internet Service Provider)를 사용하여 인터넷을 통해) 외부 컴퓨터에 연결될 수 있다.
본 개시의 양태들은 본 개시에 제시된 실시예들에 따른 방법들, 장치(시스템들) 및 컴퓨터 프로그램 제품들의 흐름도들 및/또는 블록도들을 참조하여 아래에서 설명된다. 흐름도들 및/또는 블록도들의 각각의 블록, 및 흐름도들 및/또는 블록도들의 블록들 조합들은 컴퓨터 프로그램 명령들에 의해 구현될 수 있음이 이해될 것이다. 이러한 컴퓨터 프로그램 명령들은 범용 컴퓨터, 특수 목적 컴퓨터 또는 다른 프로그램 가능 데이터 프로세싱 장치의 프로세서에 제공되어 기계를 생성할 수 있어, 컴퓨터 또는 다른 프로그램 가능 데이터 프로세싱 장치의 프로세서를 통해 실행되는 이러한 명령은 흐름도 및/또는 블록도 블록 또는 블록들에 특정된 기능들/행동들을 구현하기 위한 수단을 생성한다.
이러한 컴퓨터 프로그램 명령들은 또한 컴퓨터, 다른 프로그램 가능 데이터 프로세싱 장치, 또는 다른 디바이스가 특정 방식으로 기능하도록 지시할 수 있는 컴퓨터 판독 가능 매체에 저장될 수 있어, 컴퓨터 판독 가능 매체에 저장된 명령들은 흐름도 및/또는 블록도의 블록 또는 블록들에 특정된 기능/행동을 구현하는 명령들을 포함하는 제조 물품을 생성한다.
컴퓨터 프로그램 명령들은 또한 컴퓨터, 다른 프로그램 가능 데이터 프로세싱 장치 또는 다른 디바이스들에 로딩되어 일련의 동작 단계들이 컴퓨터, 다른 프로그램 가능 장치 또는 다른 디바이스들에서 수행되어 컴퓨터 구현 프로세스를 생성하게 하여, 컴퓨터 또는 다른 프로그램 가능 장치에서 실행되는 명령들이 흐름도 및/또는 블록도의 블록 또는 블록들에 특정된 기능들/행동들을 구현하기 위한 프로세스를 제공한다.
도면들의 흐름도 및 블록도들은 본 발명의 다양한 예들에 따른 시스템들, 방법들 및 컴퓨터 프로그램 제품들의 가능한 구현들의 아키텍처, 기능 및 동작을 예시한다. 이와 관련하여, 흐름도 또는 블록도들의 각각의 블록은 모듈, 세그먼트, 또는 특정 논리 기능(들)을 구현하기 위한 하나 이상의 실행 가능 명령들을 포함하는 명령들의 일부를 나타낼 수 있다. 일부 대안적인 구현들에서, 블록에 언급된 기능들은 도면들에 언급된 순서와 다르게 발생할 수 있다. 예를 들어, 연속적으로 도시된 2 개의 블록들은 실제로 실질적으로 동시에 실행될 수 있거나, 블록들은 관련된 기능에 따라 때때로 역순으로 실행될 수 있다. 블록도들 및/또는 흐름도의 각 블록과 블록도들 및/또는 흐름도의 블록들의 조합들은 특정 기능들 또는 행동들을 수행하거나 특수 목적 하드웨어 및 컴퓨터 명령들의 조합들을 수행하는 특수 목적 하드웨어 기반 시스템들에 의해 구현될 수 있다는 것이 또한 언급될 것이다.
본 개시는 또한 아래의 비제한적인 예들 중 하나 이상을 통해 설명될 수 있다.
예 1. 제1 포트를 포함하는 호스트 및 통합된 구성 요소를 포함하는 컴퓨팅 시스템. 통합된 구성 요소는 제2 포트 ― 제1 포트 및 제2 포트는 호스트와 통합된 구성 요소 사이의 물리적 연결을 형성함 - ; 복수의 I/O 기능들; 매립된 스위치; 및 제2 포트를 통해 호스트로부터 패킷을 수신하고, 패킷의 유형을 식별하고, 직접적으로 복수의 I/O 기능들 중 목적지 I/O 기능 또는 간접적으로 패킷의 유형에 기초하여 매립된 스위치를 사용하여 목적지 I/O 기능 중 하나로 패킷을 라우팅하도록 구성된 패스 스루(pass through) 인터페이스를 포함한다.
예 2. 예 1의 컴퓨팅 시스템에 있어서, 복수의 I/O 기능들은 서로 독립적으로 동작하고 상이한 I/O 기능들을 수행한다.
예 3. 예 1의 컴퓨팅 시스템에 있어서, 패킷의 유형은 패킷이 시간에 민감한 데이터 패킷인지 여부를 나타내며, 직접적으로 목적지 I/O 기능으로 패킷을 라우팅하는 것은 매립된 스위치를 우회한다.
예 4. 예 1의 컴퓨팅 시스템에 있어서, 패스 스루 인터페이스는 복수의 I/O 기능들 중 제1 I/O 기능 및 매립된 스위치 모두가 호스트로 전송될 준비가 된 데이터를 갖는다는 표시를 수신하고, 제1 I/O 기능 및 매립된 스위치 중 어느 것이 호스트의 제1 포트로 데이터를 전송하기 위해 제2 포트를 사용하도록 허용되는지를 결정하기 위해 중재하도록 구성된 중재 로직을 포함한다.
예 5. 예 1의 컴퓨팅 시스템에 있어서, 패스 스루 인터페이스는 패킷의 유형을 식별하고 목적지 I/O 기능에 대응하는 패킷의 목적지 ID를 식별하기 위한 라우팅 로직을 포함한다.
예 6. 예 1의 컴퓨팅 시스템에 있어서, 호스트는 복수의 I/O 기능들이 병렬로 동작하는 동안 새로운 I/O 기능을 통합된 구성 요소에 핫 애딩(hot adding)하도록 구성된다.
예 7. 예 6의 컴퓨팅 시스템에 있어서, 새로운 I/O 기능을 핫 애딩하는 것은 새로운 I/O 기능을 포함하도록 통합된 구성 요소의 프로그램 가능 로직을 구성하는 것을 포함한다.
예 8. 예 6의 컴퓨팅 시스템에 있어서, 새로운 I/O 기능을 핫 애딩하는 것은 이전에 비활성화되었던 새로운 I/O 기능을 활성화하는 것을 포함하고, 새로운 I/O 기능은 고정형 로직으로 구현된다.
예 9. 호스트 상의 제2 포트와 물리적 연결을 형성하도록 구성된 제1 포트; 복수의 I/O 기능들; 매립된 스위치; 및 제1 포트를 통해 호스트로부터 패킷을 수신하고, 패킷의 유형을 식별하고, 직접적으로 복수의 I/O 기능들 중 목적지 I/O 기능 또는 간접적으로 패킷의 유형에 기초하여 매립된 스위치를 사용하여 목적지 I/O 기능 중 하나로 패킷을 라우팅하도록 구성된 패스 스루 인터페이스를 포함하는 장치.
예 10. 예 9의 장치에 있어서, 복수의 I/O 기능들은 독립적인 I/O 디바이스들이고, 독립적인 I/O 디바이스들 각각은 프로그램 가능 로직으로 적어도 부분적으로 구현된다.
예 11. 예 10의 장치에 있어서, 독립적인 I/O 디바이스들은 동일한 집적 회로에 형성된다.
예 12. 예 9의 장치에 있어서, 복수의 I/O 기능들은 독립적인 I/O 디바이스들이고, 독립적인 I/O 디바이스들 각각은 고정형 로직을 사용하여 구현된다.
예 13. 예 12의 장치에 있어서, 독립적인 I/O 디바이스들은 동일한 집적 회로에 형성된다.
예 14. 예 9의 장치에 있어서, 기판을 더 포함하고, 복수의 I/O 기능들 각각은 상이한 집적 회로에서 구현되고, 상이한 집적 회로들 및 매립된 스위치는 기판 상에 장착된다.
예 15. 예 9의 장치에 있어서, 장치는 복수의 I/O 기능들이 병렬로 동작하는 동안 새로운 I/O 기능을 핫 애딩하도록 구성된다.
예 16. 예 15의 장치에 있어서, 새로운 I/O 기능을 핫 애딩하는 것은 새로운 I/O 기능을 포함하도록 장치에 프로그램 가능 로직을 구성하는 것을 포함한다.
예 17. 예 15의 장치에 있어서, 새로운 I/O 기능을 핫 애딩하는 것은 이전에 비활성화되었던 새로운 I/O 기능을 활성화하는 것을 포함하고, 새로운 I/O 기능은 장치에 고정형 로직으로 구현된다.
예 18. 통합된 구성 요소의 패스 스루 인터페이스에서 호스트로부터 제1 패킷을 수신하는 단계 ― 통합된 구성 요소는 복수의 I/O 기능들 및 패스 스루 인터페이스에 통신 가능하게 커플링된 매립된 스위치를 포함함 ―; 제1 패킷이 데이터 패킷인 것으로 결정하는 단계 ― 복수의 I/O 기능들 중 제1 I/O 기능은 데이터 패킷의 목적지임 ―; 매립된 스위치를 우회하는 직접 데이터 경로를 사용하여 패스 스루 인터페이스로부터 제1 I/O 기능으로 데이터 패킷을 직접 라우팅하는 단계; 패스 스루 인터페이스에서 호스트로부터 제2 패킷을 수신하는 단계; 제2 패킷이 구성 패킷인 것으로 결정하는 단계 ― 제1 I/O 기능은 구성 패킷의 목적지임 ―; 및 매립된 스위치를 통해 패스 스루 인터페이스로부터 제1 I/O 기능으로 데이터 패킷을 라우팅하는 단계를 포함하는 방법.
예 19. 예 18의 방법에 있어서, 매립된 스위치를 통해 패스 스루 인터페이스로부터 제1 I/O 기능으로 데이터 패킷을 라우팅하는 단계는 패스 스루 인터페이스로부터 매립된 스위치로 구성 패킷을 라우팅하는 단계; 매립된 스위치에서, 제1 I/O 기능이 구성 패킷의 목적지인 것으로 결정하는 단계; 및 매립된 스위치로부터 제1 I/O 기능으로 구성 패킷을 전달하는 단계를 더 포함하고, 본 방법은 패스 스루 인터페이스에서 호스트로부터 제3 패킷을 수신하는 단계; 제3 패킷이 다른 구성 패킷인 것으로 결정하는 단계; 다른 구성 패킷을 매립된 스위치로 라우팅하는 단계; 및 매립된 스위치에서, 매립된 스위치가 다른 구성 패킷의 목적지인 것으로 결정하는 단계를 더 포함한다.
예 20. 예 19의 방법에 있어서, 패스 스루 인터페이스에서, 매립된 스위치 및 복수의 I/O 기능들 중 적어도 2 개가 호스트로 전송될 준비가 된 패킷들을 갖는 것으로 결정하는 단계; 및 호스트로 데이터를 전송하기 위해 통합된 구성 요소의 공유된 포트를 어느 쪽이 사용할지를 결정하기 위해 서비스 품질(QoS: quality of service)에 기초하여 매립된 스위치와 복수의 I/O 기능들 중 적어도 2 개 사이에서 중재하는 단계를 더 포함한다.
상술한 내용은 특정 예에 관한 것이지만, 그 기본 범위를 벗어나지 않으면서 다른 그리고 추가적인 예들이 고안될 수 있으며, 그 범위는 이하의 청구항들에 의해 결정된다.

Claims (15)

  1. 컴퓨팅 시스템으로서,
    제1 포트를 포함하는 호스트; 및
    통합된 구성 요소를 포함하고, 상기 통합된 구성 요소는,
    제2 포트 ― 상기 제1 포트 및 상기 제2 포트는 상기 호스트와 상기 통합된 구성 요소 사이의 물리적 연결을 형성함 - ;
    복수의 I/O 기능들;
    매립된 스위치; 및
    상기 제2 포트를 통해 상기 호스트로부터 패킷을 수신하고, 상기 패킷의 유형을 식별하고, 직접적으로 상기 복수의 I/O 기능들 중 목적지 I/O 기능 또는 간접적으로 상기 패킷의 유형에 기초하여 상기 매립된 스위치를 사용하여 상기 목적지 I/O 기능 중 하나로 상기 패킷을 라우팅하도록 구성된 패스 스루(pass through) 인터페이스를 포함하는, 컴퓨팅 시스템.
  2. 제1 항에 있어서,
    상기 복수의 I/O 기능들은 서로 독립적으로 동작하고 상이한 I/O 기능들을 수행하는, 컴퓨팅 시스템.
  3. 제1 항에 있어서,
    상기 패킷의 상기 유형은 상기 패킷이 시간에 민감한 데이터 패킷인지 여부를 나타내며, 직접적으로 상기 목적지 I/O 기능으로 상기 패킷을 라우팅하는 것은 상기 매립된 스위치를 우회하는, 컴퓨팅 시스템.
  4. 제1 항에 있어서,
    상기 패스 스루 인터페이스는 상기 복수의 I/O 기능들 중 제1 I/O 기능 및 상기 매립된 스위치 모두가 호스트로 전송될 준비가 된 데이터를 갖는다는 표시들을 수신하고, 상기 제1 I/O 기능 및 상기 매립된 스위치 중 어느 것이 상기 호스트의 상기 제1 포트로 데이터를 전송하기 위해 상기 제2 포트를 사용하도록 허용되는지를 결정하기 위해 중재하도록 구성된 중재 로직을 포함하는, 컴퓨팅 시스템.
  5. 제1 항에 있어서,
    상기 패스 스루 인터페이스는 상기 패킷의 상기 유형을 식별하고 상기 목적지 I/O 기능에 대응하는 상기 패킷의 목적지 ID를 식별하기 위한 라우팅 로직을 포함하는, 컴퓨팅 시스템.
  6. 제1 항에 있어서,
    상기 호스트는 상기 복수의 I/O 기능들이 병렬로 동작하는 동안 새로운 I/O 기능을 상기 통합된 구성 요소에 핫 애딩(hot adding)하도록 구성되는, 컴퓨팅 시스템.
  7. 제6 항에 있어서,
    상기 새로운 I/O 기능을 핫 애딩하는 것은,
    상기 새로운 I/O 기능을 포함하도록 상기 통합된 구성 요소의 프로그램 가능 로직을 구성하는 것; 또는
    이전에 비활성화되었던 상기 새로운 I/O 기능을 활성화하는 것을 포함하고, 상기 새로운 I/O 기능은 고정형(hardened) 로직으로 구현되는, 컴퓨팅 시스템.
  8. 장치로서,
    호스트 상의 제2 포트와 물리적 연결을 형성하도록 구성된 제1 포트;
    복수의 I/O 기능들;
    매립된 스위치; 및
    상기 제1 포트를 통해 상기 호스트로부터 패킷을 수신하고, 상기 패킷의 유형을 식별하고, 직접적으로 상기 복수의 I/O 기능들 중 목적지 I/O 기능 또는 간접적으로 상기 패킷의 유형에 기초하여 상기 매립된 스위치를 사용하여 상기 목적지 I/O 기능 중 하나로 상기 패킷을 라우팅하도록 구성된 패스 스루 인터페이스를 포함하는, 장치.
  9. 제8 항에 있어서,
    상기 복수의 I/O 기능들은 독립적인 I/O 디바이스들이고, 상기 독립적인 I/O 디바이스들 각각은 프로그램 가능 로직으로 적어도 부분적으로 구현되는, 장치.
  10. 제8 항에 있어서,
    상기 복수의 I/O 기능들은 독립적인 I/O 디바이스들이고, 상기 독립적인 I/O 디바이스들 각각은 고정형 로직을 사용하여 구현되는, 장치.
  11. 제9 항 또는 제10 항에 있어서,
    상기 독립적인 I/O 디바이스들은 동일한 집적 회로에 형성되는, 장치.
  12. 제8 항에 있어서,
    기판을 더 포함하고, 상기 복수의 I/O 기능들 각각은 상이한 집적 회로에서 구현되고, 상기 상이한 집적 회로들 및 상기 매립된 스위치는 상기 기판 상에 장착되는, 장치.
  13. 제8 항에 있어서,
    상기 장치는 상기 복수의 I/O 기능들이 병렬로 동작하는 동안 새로운 I/O 기능을 핫 애딩하도록 구성되는, 장치.
  14. 제13 항에 있어서,
    상기 새로운 I/O 기능을 핫 애딩하는 것은,
    상기 새로운 I/O 기능을 포함하도록 상기 장치에 프로그램 가능 로직을 구성하는 것; 또는
    이전에 비활성화되었던 상기 새로운 I/O 기능을 활성화하는 것을 포함하고, 상기 새로운 I/O 기능은 상기 장치에 고정형 로직으로 구현되는, 장치.
  15. 방법으로서,
    통합된 구성 요소의 패스 스루 인터페이스에서 호스트로부터 제1 패킷을 수신하는 단계 ― 상기 통합된 구성 요소는 복수의 I/O 기능들 및 상기 패스 스루 인터페이스에 통신 가능하게 커플링된 매립된 스위치를 포함함 ―;
    상기 제1 패킷이 데이터 패킷인 것으로 결정하는 단계 ― 상기 복수의 I/O 기능들 중 제1 I/O 기능은 상기 데이터 패킷의 목적지임 ―;
    상기 매립된 스위치를 우회하는 직접 데이터 경로를 사용하여 상기 패스 스루 인터페이스로부터 상기 제1 I/O 기능으로 상기 데이터 패킷을 직접 라우팅하는 단계;
    상기 패스 스루 인터페이스에서 상기 호스트로부터 제2 패킷을 수신하는 단계;
    상기 제2 패킷이 구성 패킷인 것으로 결정하는 단계 ― 상기 제1 I/O 기능은 상기 구성 패킷의 목적지임 ―; 및
    상기 매립된 스위치를 통해 상기 패스 스루 인터페이스로부터 상기 제1 I/O 기능으로 상기 데이터 패킷을 라우팅하는 단계를 포함하는, 방법.
KR1020227040696A 2020-06-05 2021-02-18 직접 부착된 디스패치를 갖는 분리된 스위치 제어 경로 KR20230019828A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/894,446 2020-06-05
US16/894,446 US11386031B2 (en) 2020-06-05 2020-06-05 Disaggregated switch control path with direct-attached dispatch
PCT/US2021/018540 WO2021247103A1 (en) 2020-06-05 2021-02-18 Disaggregated switch control path with direct-attached dispatch

Publications (1)

Publication Number Publication Date
KR20230019828A true KR20230019828A (ko) 2023-02-09

Family

ID=74871829

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227040696A KR20230019828A (ko) 2020-06-05 2021-02-18 직접 부착된 디스패치를 갖는 분리된 스위치 제어 경로

Country Status (6)

Country Link
US (1) US11386031B2 (ko)
EP (1) EP4104060A1 (ko)
JP (1) JP2023529831A (ko)
KR (1) KR20230019828A (ko)
CN (1) CN115836282A (ko)
WO (1) WO2021247103A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11947472B2 (en) 2021-07-18 2024-04-02 Avago Technologies International Sales Pte. Limited Composable infrastructure enabled by heterogeneous architecture, delivered by CXL based cached switch SoC

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6608813B1 (en) 1998-11-04 2003-08-19 Agere Systems Inc Method and apparatus for achieving fault tolerance in packet switching systems with inverse multiplexing
US6914907B1 (en) 1999-08-05 2005-07-05 Alcatel Canada Inc. Method and apparatus for providing multi-cast transmissions using a distributed router
US7027397B1 (en) * 2001-02-15 2006-04-11 Cisco Technology, Inc. Method and apparatus for accumulating and distributing traffic and flow control information in a packet switching system
AU2002363142A1 (en) * 2001-10-31 2003-05-12 Doug Burger A scalable processing architecture
US7251704B2 (en) 2002-08-23 2007-07-31 Intel Corporation Store and forward switch device, system and method
US7827343B2 (en) 2007-09-20 2010-11-02 International Business Machines Corporation Method and apparatus for providing accelerator support in a bus protocol
US8223650B2 (en) * 2008-04-02 2012-07-17 Intel Corporation Express virtual channels in a packet switched on-chip interconnection network
JP4734374B2 (ja) 2008-06-04 2011-07-27 アラクサラネットワークス株式会社 ネットワーク中継装置、および、ネットワーク中継装置方法
US8248951B2 (en) * 2009-09-11 2012-08-21 At&T Intellectual Property I, Lp Methods and apparatus to manage bypass paths in an internet protocol (IP) network
JP5561620B2 (ja) 2011-05-27 2014-07-30 日立金属株式会社 ネットワークシステム及びネットワークシステムの運用方法
JP5776618B2 (ja) 2012-04-16 2015-09-09 日立金属株式会社 ネットワークスイッチ
JP5935666B2 (ja) 2012-11-22 2016-06-15 日立金属株式会社 通信システムおよびネットワーク中継装置
US20140372660A1 (en) * 2013-06-14 2014-12-18 National Instruments Corporation Packet Routing Based on Packet Type in Peripheral Component Interconnect Express Bus Systems
CN104734993B (zh) 2013-12-24 2018-05-18 杭州华为数字技术有限公司 数据分流方法及分流器
JP6278800B2 (ja) 2014-04-03 2018-02-14 APRESIA Systems株式会社 中継システムおよびスイッチ装置
JP6189783B2 (ja) 2014-04-08 2017-08-30 APRESIA Systems株式会社 中継システムおよびスイッチ装置
US20170075838A1 (en) * 2015-09-14 2017-03-16 Qualcomm Incorporated Quality of service in interconnects with multi-stage arbitration
US10587534B2 (en) * 2017-04-04 2020-03-10 Gray Research LLC Composing cores and FPGAS at massive scale with directional, two dimensional routers and interconnection networks
US10409743B1 (en) 2018-06-29 2019-09-10 Xilinx, Inc. Transparent port aggregation in multi-chip transport protocols

Also Published As

Publication number Publication date
US20210382838A1 (en) 2021-12-09
WO2021247103A1 (en) 2021-12-09
US11386031B2 (en) 2022-07-12
CN115836282A (zh) 2023-03-21
JP2023529831A (ja) 2023-07-12
EP4104060A1 (en) 2022-12-21

Similar Documents

Publication Publication Date Title
US11102117B2 (en) In NIC flow switching
US10095645B2 (en) Presenting multiple endpoints from an enhanced PCI express endpoint device
CN107995129B (zh) 一种nfv报文转发方法和装置
US9838300B2 (en) Temperature sensitive routing of data in a computer system
US10178054B2 (en) Method and apparatus for accelerating VM-to-VM network traffic using CPU cache
US9276875B2 (en) Cooperated approach to network packet filtering
JP2022533997A (ja) Socおよびfpgaを有するサーバオフロードカード
US8225005B2 (en) Use of peripheral component interconnect input/output virtualization devices to create high-speed, low-latency interconnect
US9736116B2 (en) Cooperated approach to network packet filtering
EP2630579B1 (en) Unified i/o adapter
US10983920B2 (en) Customizable multi queue DMA interface
KR20050039859A (ko) 저장 및 포워드 스위치 장치, 시스템 및 방법
JP5469081B2 (ja) 制御パス入出力仮想化方法
CN115437977A (zh) 跨总线存储器映射
US11467998B1 (en) Low-latency packet processing for network device
US11386031B2 (en) Disaggregated switch control path with direct-attached dispatch
TW200407712A (en) Configurable multi-port multi-protocol network interface to support packet processing
US11809349B1 (en) Direct injection of a virtual interrupt
US20240126622A1 (en) I/o acceleration in a multi-node architecture
US11899969B1 (en) Re-order buffer for in-order execution of dependent write transactions
US11537539B2 (en) Acceleration of data between a network and local I/O in a NUMA system
US20240070111A1 (en) Reconfigurable dataflow unit with streaming write functionality
US20240073129A1 (en) Peer-to-peer communication between reconfigurable dataflow units
US20240073136A1 (en) Reconfigurable dataflow unit with remote read/write functionality

Legal Events

Date Code Title Description
A201 Request for examination