KR20160014062A - PCIe 패브릭 확장 방법 및 시스템 - Google Patents

PCIe 패브릭 확장 방법 및 시스템 Download PDF

Info

Publication number
KR20160014062A
KR20160014062A KR1020157037097A KR20157037097A KR20160014062A KR 20160014062 A KR20160014062 A KR 20160014062A KR 1020157037097 A KR1020157037097 A KR 1020157037097A KR 20157037097 A KR20157037097 A KR 20157037097A KR 20160014062 A KR20160014062 A KR 20160014062A
Authority
KR
South Korea
Prior art keywords
space
pcie fabric
pcie
extended
fabric
Prior art date
Application number
KR1020157037097A
Other languages
English (en)
Other versions
KR101835851B1 (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 KR20160014062A publication Critical patent/KR20160014062A/ko
Application granted granted Critical
Publication of KR101835851B1 publication Critical patent/KR101835851B1/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/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1684Details of memory controller using multiple buses
    • 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/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • 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/4027Coupling between buses using bus bridges
    • G06F13/4045Coupling between buses using bus bridges where the bus bridge performs an extender function
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Information Transfer Systems (AREA)
  • Bus Control (AREA)

Abstract

일 실시예인 확장된 PCIe 장치는 호스트 루트 콤플렉스를 포함하는 호스트 PCIe 패브릭을 포함한다. 호스트 PCIe 패브릭은 호스트 CPU 상에, 제1 버스 번호 세트 및 제1 MMIO 공간을 갖는다. 확장된 PCIe 패브릭은 호스트 PCIe 패브릭의 종점의 일부로서 RCEP를 포함한다. 확장된 PCIe 패브릭은 제1 버스 번호 세트 및 제1 MMIO 공간과는 각각 별개의 제2 버스 번호 세트 및 제2 MMIO 공간을 갖는다.

Description

PCIe 패브릭 확장 방법 및 시스템 {SYSTEM AND METHOD FOR EXTENDED PERIPHERAL COMPONENT INTERCONNECT EXPRESS FABRICS}
본 발명은 컴퓨팅 산업에 관한 것이고, 더 상세하게는 주변 컴포넌트 상호접속 익스프레스 (Peripheral Component Interconnect Express, PCIe) 패브릭을 확장하기 위한 시스템, 방법, 컴퓨터 프로그램 상품 및 장치에 관한 것이다.
주변 컴포넌트 상호접속 익스프레스(peripheral component interconnect express, PCIe)는 다양한 하드웨어 장치(예를 들어, 스토리지 장치, 네트워크 카드, 사운드 카드 등)를 호스트 중앙 처리 유닛(central processing unit, CPU)에 연결하는데 널리 사용되는 고속 직렬 컴퓨터 확장 버스 표준이다. 호스트 CPU의 메모리 구성이 벤더마다 다를 수 있기 때문에(vendor-specific), PCIe는 다양한 장치를 CPU에 연결하기 위한 입력/출력(input/output, I/O) 표준을 제공한다. PCIe는 구세대의 버스 표준(예를 들어, PCI 및 PCI-Extended)에 비해 많은 개선점을 가능하게 한다. 예를 들어, PCIe는 통상 더 높은 최대 시스템 버스 스루풋, 더 낮은 I/O 핀 카운트, 더 작은 버스 풋프린트, 고유한 핫-플러그 기능성 및 다른 이점을 가능하게 한다.
PCIe 버스 표준에 관한 한 가지 문제는, 각 PCIe 패브릭이 유한한 양의 자원에 의해 제한된다는 것이다. 예를 들어, 각 PCIe 패브릭의 32비트 어드레스 메모리 공간은 4GB 사이즈를 초과할 수 없고, 각 패브릭은 최대 256개의 버스를 가질 수 있다. PCIe가 점대점(point-to-point) 직렬 연결로 동작하기 때문에, 이러한 제한은 PCIe 패브릭에 접속될 수 있는 노드(즉, 장치)의 최대 개수에 대해 직접적으로 상한을 정하게 된다. 즉, 다양한 장치에 대한 버스 번호(bus number)는 오버랩 할 수 없고, 접속된 각 장치는 동작하기 위해 고유한 버스 번호의 세트를 요구하게 된다. PCIe 패브릭 내부의 다양한 버스 번호는 특수한 사용(예를 들어, PCIe 스위치의 내부 버스 번호, 핫-플러그 기능성 등)을 위해 보유될 수 있고, 또한, 가용한 버스 번호의 개수를 제한할 수 있다.
더 나아가, PCIe 패브릭에 연결된 어떤 컴포넌트에서 발생한 결함은, 결함이 발생한 컴포넌트에 연결된 어떤 다른 다운스트림 또는 업스트림 컴포넌트에 영향을 줄 수 있다. PCIe 패브릭에 연결된 컴포넌트 및 소프트웨어 드라이버의 개수가 증가할수록 결함 처리는 더 어려워지고 임의의 결함의 전파가 전체 시스템의 고장으로 이어질 수 있다.
확장된 주변 컴포넌트 상호접속 익스프레스 패브릭을 제공하는, 본 발명의 바람직한 구현에 의해, 이러한 그리고 다른 문제점들은 일반적으로 해결되거나 또는 회피될 수 있고, 기술적 이점이 달성될 수 있다.
일 실시예에 따르면, 주변 컴포넌트 상호접속 익스프레스(peripheral component interconnect express, PCIe) 토폴로지는 호스트 루트 콤플렉스를 포함하는 호스트 PCIe 패브릭을 포함한다. 호스트 PCIe 패브릭은 호스트 중앙 처리 유닛(central processing unit, CPU)상에, 제1 버스 번호 세트 및 제1 메모리 맵 입출력(memory mapped input/output, MMIO) 공간을 포함한다. 게다가, 호스트 PCIe 패브릭의 종점의 일부로서 루트 콤플렉스 종점(root complex endpoint, RCEP)를 포함하는 확장된 PCIe 패브릭이 제공된다. 확장된 PCIe 패브릭은 제1 버스 번호 세트 및 제1 MMIO 공간과는 각각 별개의 제2 버스 번호 세트 및 제2 MMIO 공간을 또한 포함한다.
다른 실시예에 따르면, PCIe 패브릭은 확장된 PCIe 패브릭을 포함한다. 확장된 PCIe 패브릭은 RCEP를 포함한다. RCEP는 제1 레벨 PCIe 패브릭의 종점의 일부가 되도록 구성된다. 추가적으로, 확장된 PCIe 패브릭은 MMIO 공간 및 버스 번호 세트를 포함한다.
또 다른 실시예에 따르면, 주변 장치를 연결하는 방법은 호스트 PCIe 패브릭의 종점의 일부로서 확장된 PCIe 패브릭을 호스팅하는 RCEP를 제공하는 단계를 포함한다. 확장된 PCIe 패브릭은 호스트 PCIe 패브릭의 제2 MMIO 공간과는 별개의 제1 MMIO 공간을 갖는다. 상기 방법은 제1 MMIO 공간을 제2 MMIO 공간에 매핑하는 단계를 더 포함한다.
본 발명과 본 발명의 이점의 더 완벽한 이해를 위해, 첨부한 도면와 함께 아래 설명이 참조된다.
도 1은 다양한 실시예에 따른 PCIe 패브릭의 블록도이다.
도 2a 및 도 2b는 다양한 실시예에 따른 확장된 패브릭을 위한 PCIe 구성 공간 매핑 및 어드레싱의 블록도이다.
도 3a 및 도 3b는 다양한 실시예에 따른 확장된 패브릭을 위한 32비트 메모리 공간 매핑 및 어드레싱의 블록도이다.
도 4a 및 도 4b는 다양한 실시예에 따른 확장된 패브릭을 위한 64비트 메모리 공간 매핑 및 어드레싱의 블록도이다.
도 5는 다양한 실시예에 따른 PCIe 패브릭을 갖는 컴퓨팅 시스템의 시스템도이다.
포함된 혁신의 다양한 측면에 걸친 실시예가 아래에서 더 자세하게 언급된다. 이해되어야 할 것은, 하지만, 본 발명은 다양한 구체적인 문맥으로 구체화 될 수 있는 많은 적용할 수 있는 유일하고 새로운 개념을 제공한다는 것이다. 따라서, 여기에서 언급된 구체적인 구현은 단지 본 발명의 다양한 측면을 만들고, 사용하고, 구현하는 구체적인 방법의 예시일 뿐이고, 달리 요청되지 않는 한 그것의 범위를 필연적으로 제한하지 않는다.
다음의 다양한 실시예는 구체적인 문맥, 주로 주변 콤포넌트 상호접속 익스프레스(peripheral component interconnect express, PCIe)에 대해 설명된다. 이해될 바와 같이, 그러나, 그러한 실시예들은 또한 다른 패브릭으로 확장할 수 있다(예를 들어, 자원 제한된 업사이드 다운 트리 토폴로지).
여기에서 설명된 바와 같이, 루트 콤플렉스(root complex)는 PCIe 패브릭과 호스트 중앙 처리 유닛(central processing unit, CPU) 사이의 브리지를 제공하는 하드웨어 구조이다. 루트 콤플렉스는 CPU의 일부로서 통합될 수 있다. 예를 들어, 도 5는 CPU(500)의 일부인 루트 콤플렉스(502)를 도시한다. 루트 콤플렉스는 CPU 및 동일한 PCIe 패브릭(예를 들어, PCIe 패브릭 504)에 연결된 장치들(예를 들어, 장치 506 및 508) 사이의 다양한 요청들을 관리하고 포워딩한다. 루트 콤플렉스는 또한 다양한 연결 장치들(레지스터와 같은 장치 스토리지 위치 및 메모리 위치를 포함한)을 PCIe 메모리 공간에 매핑한다. 매핑 및 메모리 공간의 이러한 유형은 메모리 맵 입출력(memory mapped input/output, MMIO) 공간으로 알려져 있다.
또한, 여기에서 사용된 바와 같이, MMIO 공간은 32비트 어드레스들을 사용하여 어드레스 할 수 있는 메모리의 일부분을 포함할 수 있고, 이는 일반적으로 MMIO 공간의 처음 4GB로 제한된다. MMIO 공간은 64비트 어드레스들을 사용하여 어드레스 할 수 있는 메모리의 일부분을 더 포함할 수 있고, 이는 처음 4GB 외의 MMIO 공간에 매핑될 수 있다. 여기 설명된 다양한 실시예는 호스트 PCIe 패브릭의 종점의 일부로서의 하나 이상의 추가적인 루트 콤플렉스 하드웨어 구조를 포함한다. 종점(루트 콤플렉스 종점(root complex endpoint, RCEP)이라 불리는)에 루트 콤플렉스 기능성들을 추가함으로써, 추가적인 PCIe 패브릭이 호스트 PCIe의 한정된 자원에 제한되지 않는, 확장된 PCIe 패브릭을 형성하도록 연결될 수 있다.
예를 들면, 도 5는 추가적인 종점들(예를 들어, 장치 512 및 514)을 호스트 CPU(500)에 연결하는 확장된 PCIe 패브릭(510) 및 RCEP(508)를 도시한다. 다양한 실시예에 따라서, 이러한 RCEP들은 경계의 패브릭들 또는 장치들을 오염시키는 것으로부터 결함을 격리시키는데 사용될 수 있다. 더 나아가, 다른 실시예는 RCEP들 및 확장된 PCIe 패브릭이 기존의 주변 장치 드라이버들과 호환될 수 있음을 제공한다. 따라서, 기존의 장치 드라이버에 대한 소프트웨어 업데이트를 위한 어떤 필요도 없다.
도 1은 다양한 실시예에 따른, 확장된 PCIe 패브릭(118)에 연결된 제1 레벨 PCIe 패브릭 100의 블록도를 도시한다. PCIe 패브릭(100)은 PCIe 패브릭(100)에 연결된 다양한 장치와 호스트 CPU 사이의 다양한 요청을 관리하고 포워딩하는 호스트 루트 콤플렉스(102)를 포함할 수 있다. 일반적으로, 루트 콤플렉스(102)는 256개의 고유 버스 번호의 세트 및 MMIO 공간을 소유하고, 다양한 연결된 장치들(결합된 레지스터 및/또는 메모리 하드웨어를 포함한)을 그것의 MMIO 공간에 매핑한다. 게다가 루트 콤플렉스(102)는 호스트 CPU 및 PCIe 패브릭(100)에 연결된 장치들(예를 들어, 종점(106 및 108)) 사이의 PCI대PCI(PCI-to-PCI) 연결을 허용하는 하드웨어 브리지 구조인, 루트 포트(103)를 포함할 수 있다. 비록 도 1에서 하나의 루트 포트(103)를 갖는 루트 콤플렉스(102)를 도시하고 있지만, 일반적인 루트 콤플렉스(102)는 복수의 루트 포트(103)를 가질 수 있다(예를 들어, 4개에서 6개의 루트 포트).
도 1에 나타난 대로, 루트 콤플렉스(10)는 루트 포트(103) 및 스위치(104)를 통해서 종점(106 및 108)에 전기적으로 연결된다. 일반적으로, 종점(106 및 108)은 PCIe 패브릭(100)의 말단을 이루는 구조이다. 이러한 종점(106 및 108)은 스토리지 장치, 네트워킹 장치, 사운드 카드, 비디오 카드, 기타 등등을 포함할 수 있다. 또한, 도 1에는 다양한 종점(예를 들어, 106 및 108)을 루트 콤플렉스(102)에 상호접속하는 적어도 하나의 업스트림 포트(104A) 및 다수의 다운스트림 포트들(예를 들어, 104B)을 포함할 수 있는 스위치(104)가 도시되어 있다. 여기에서 통상 사용되는 바에 따르면, 업스트림 포트는 호스트 루트 콤플렉스(예를 들어, 루트 콤플렉스(102)) 쪽을 표시하는 포트를 말하며, 반대로 다운스트림 포트는 호스트 루트 콤플렉스로부터 멀어지는 쪽을 표시하는 포트를 말한다.
스위치(104)는 PCIe 표준에 의해 사용되는 점대점(point-to-point) 직렬 연결을 여전히 유지하면서 복수의 장치들이 단일 루트 포트(103)에 연결되는 것을 허용하는 내부 버스들(internal buses)을 포함할 수 있다. 비록 도 1에서는 두 개의 종점(106 및 108)을 루트 포트(103)에 연결하는 하나의 스위치(104)만이 도시되었지만, 다양한 실시예는 임의의 수의 스위치에 연결되는 복수의 루트 포트들을 의도하고 있으며, 이때 각 스위치는 임의의 다양한 개수의 종점에 연결될 수 있다. 그 대신에, 또는 그와 함께, 루트 포트(103)는 종점에 직접 연결될 수 있다. 따라서, 도 1에 도시된 구성 및 여기의 다른 도면들은 오직 예시를 위한 것일 뿐이고 달리 명시적으로 요청되지 않는 한 본 발명의 범위를 제한하거나 좁히도록 의미되지 않는다.
도 1에 나타난 대로, 종점(106)은 실시예에 따르면, 확장된 PCIe 패브릭(118) 및 제1 레벨 PCIe 패브릭(100) 사이의 하드웨어 브리지를 제공하는, 루트 콤플렉스 종점(RCEP)일 수 있다. 즉, RCEP(106)는 확장된 PCIe 패브릭(118)을 호스팅 할 수 있다. 상기 구현에 따라서, RCEP(106)은 호스트 루트 콤플렉스(예를 들어, 루트 콤플렉스(102))와 빌드 및 로직 면에서 유사할 수 있다. 그것으로서, RCEP(106)는 루트 콤플렉스(102)의 그것들과는 별개의, 그 자신만의 버스 번호 세트, PCIe 구성 공간(configuration space), 그리고 MMIO 공간을 포함할 수 있다. 그러므로, 루트 콤플렉스(102)가 충분한 양의 가용 자원(예를 들어, 버스 번호)을 갖지 못하는 경우에도 추가적인 장치가 RCEP(106)에 연결될 수 있다.
예를 들어, 종점(114 및 116)은 스위치(112) 및 루트 포트(110)을 통해서 RCEP(106)에 전기적으로 연결될 수 있다. 위에 기재된 대로, 종점(114 및 116)은 스토리지 장치, 네트워킹 장치, 사운드 카드, 비디오 카드, 기타 등등 대부분 모든 종류의 주변 장치일 수 있다. 종래의 PCIe 패브릭과 유사하게, 종점(114 및 116)은 단순히 확장된 PCIe 패브릭(118)의 말단일 수 있다. 그 대신에, 실시예에 따라서, 종점(114 및/또는 116)은 그 자신의 버스 번호 세트 및 MMIO 공간을 갖는 다른 RCEP를 포함할 수 있고. 그러므로, 다른 확장된 PCIe 패브릭을 형성한다. 따라서, RCEP들은 기본적으로 PCIe 종점에 게이트웨이 기능성을 추가한다. 그리고 그러므로, 이론적으로는, 가상적인 무한 개수의 노드들이 호스트 루트 콤플렉스에 연결되는 것을 가능하게 한다.
비록 도 1이 오직 한 개의 루트 포인트(110), 한 개의 스위치(112), 그리고 두 개의 종점(114 및 116)을 포함하는 확장된 PCIe 패브릭(118)을 나타내지만, 다양한 예는 복수의 루트 포트들, 확장된 패브릭 마다 복수의 스위치들, 그리고 스위치 마다 복수의 종점을 갖는 확장된 PCIe 패브릭을 포함할 수 있다.
실시예에 따르면, RCEP(106)의 MMIO는 32비트 어드레스를 사용하여 어드레스 할 수 있는 부분(32비트 메모리 공간으로 불리는) 및 64비트 어드레스를 사용하는 부분(64비트 메모리 공간으로 불리는)을 포함할 수 있다. 상기 구현에 따라서, RCEP(106)의 PCIe 구성 공간, 32비트 메모리 공간, 그리고 64비트 메모리 공간은 호스트 PCIe 패브릭(100)의 64비트 MMIO 공간에 매핑될 수 있다(즉, 64비트 어드레스를 이용하여 어드레스 할 수 있는 PCIe 패브릭(100)의 MMIO 공간의 일부분). 따라서, 상기 구현에 따라서, RCEP(106)은 호스트 PCIe 패브릭(100)의 MMIO 공간으로부터 접근될 수 있다. RCEP(106)의 확장된 패브릭의 매핑 및 목록(enumeration)은, 아래에 상세하게 설명된대로, RCEP(106)에 결합된 종점 드라이버를 사용하여 수행될 수 있다.
다른 실시예에 따르면, RCEP(106)은 그것의 다운스트림 장치(예를 들어, 종점(114 및 116))에서 발생한 임의의 결함을 해결하는 결함 핸들링 메커니즘을 포함할 수 있다. 그러므로, 상기 구현에서, 결함은 RCEP(106)에 의해 수용될 수 있고 PCIe 패브릭(100)으로 향하는 업스트림으로 전파하지 않으며, RCEP(106)은 결함 경계로서 동작할 수 있다. 게다가, RCEP(106)는 호스트 루트 콤플렉스(102)에게 어떤 결함을 알리기 위하여 에러 인터럽트(error interrupt)를 생성할 수 있다. 상기 구현에서, 이러한 에러 인터럽트는 리포팅 메커니즘(reporting mechanism)으로서 사용되고, RCEP(106)의 다운스트림에서 발생하는 임의의 PCIe 결함은 RCEP(106)에 의해 핸들링될 수 있고 호스트 루트 콤플렉스(102)로 향하는 업스트림으로 지나가지 않는다. 에러 인터럽트 리포팅 및 결함 핸들링과 관련된 구체적인 세부사항은 컴퓨팅 플랫폼/루트 콤플렉스들 사이의 구체적이고 다양한 구현일 수 있다. 예를 들어, 현재의 PCIe 표준은, 컴퓨팅 플랫폼/루프 콤플렉스의 다양한 벤더별 구현이 다르도록 루트 콤플렉스가 어떻게 결함을 핸들링할 것인가와 관련된 구현 세부사항을 열어두고 있다. 그러므로, RCEP(106)의 결함 핸들링 및 에러 리포팅 메커니즘의 구현 세부사항도, 이와 유사하게, 해당되는 컴퓨팅 플램폼/루트 콤플렉스 구성에 따라서 다르도록 열려 있을 수 있다.
확장된 패브릭(118)에 대한 PCIe 구성 공간에의 매핑 및 접근은 어떤 적합한 구성을 사용함으로써 수행될 수 있다. 예를 들어, 도 2a 및 도 2b는 실시예에 따라서, PCI 구성 공간에 접근하기 위해 MMIO를 사용하는 것을 제공하는 PCIe 구성 공간 매핑 및 액세스의 예를 도시한다. 일반적으로, 물리 어드레스 공간(200)은 예를 들어, 2n-1 바이트 크기의, 호스트 CPU의 물리 어드레스 공간이다(n은 호스트 CPU에 의해 구현된 물리 어드레스 비트의 개수이다). 보여진 대로, 물리 어드레스 공간(200)은 32비트 물리 어드레스를 거쳐 어드레스 할 수 있는 공간 부분(202)와, 64비트 물리 어드레스를 거쳐 어드레스 할 수 있는 나머지 부분(204)을 포함할 수 있다. 상기 구현에서, 부분(202)은 어드레스 공간(200)의 첫 번째 4GB를 차지할 수 있는 한편 부분(204)은 어드레스 공간(200)의 나머지를 차지할 수 있다. 더욱이, 부분(204)은 또한, 호스트, 즉 제1 레벨 PCIe 패브릭(예를 들어, PCIe 패브릭(100))의 64비트 MMIO 공간(206)에 할당된 부분을 포함할 수 있다. 물론, 다른 메모리 할당들, 구성들, 그리고 PCIe 패브릭에 대한 MMIO 공간의 매핑들도 여기에 고려되어 있다. 그리고, 그러므로 여기에서 설명된 어떤 구체적인 구현은 명시적으로 요청되지 않는 한 오직 예시적 목적을 위해 사용된 것이다.
실시예에 따르면, PCIe 패브릭(100)에 연결된 장치의 모든(또는 임의의 부분) 기능, 또는 확장된 패브릭(118)은 그들 각각의 패브릭의 전용 256MB 구성 공간에 매핑될 수 있다. 이러한 공간은 예를 들어, 8비트 PCI 버스, 5비트 장치, 그리고 특정 장치 기능을 위한 3비트 기능 번호를 앎에 의해, 어드레스 될 수 있다. 기능 어드레싱의 이 유형은 여기에서 각 PCIe 패브릭에 대해 전체 256개의 버스 번호, 32개의 장치, 그리고 8개의 기능을 허용하는 버스/장치/기능(bus/device/function, BDF) 어드레싱으로 언급될 수 있다. 일반적으로, 상기 구현에서, PCIe의 직렬 점대점 연결 구조 때문에 장치 번호는 PCIe 버스 표준 패브릭에 따라서 0으로 설정될 수 있다. 게다가, 상기 구현에 따라서, 각 장치 기능에는 4KB의 구성 레지스터가 주어질 수 있다.
보여진 대로, 제1 레벨 PCIe 패브릭(예를 들어, 패브릭(100))에 대한 PCIe 구성 공간은 공간의 부분(202)에서 256MB의 어드레스 공간(208)을 차지할 수 있다. 상기 구현에서, 확장된 PCIe(예를 들어, 확장된 패브릭(118))에 대한 PCIe 구성 공간은 64비트 MMIO 공간(206)에서 256MB의 어드레스 공간(210)에 매핑될 수 있다. 게다가, 어드레스 공간(208) 또는 어드레스 공간(210)의 임의의 MMIO 트랜잭션(transactions)은 PCIe 호스트 패브릭(100) 또는 확장된 패브릭(118) 각각에 대한 그들의 대응하는 루트 콤플렉스에 의해 PCIe 구성 접근 트랜잭션으로서 다뤄질 수 있다.
상기 구현에서, 확장된 PCIe 구성 공간(210)의 어드레스들은 베이스 값(212)에서 시작할 수 있다. 따라서, 버스 번호 B, 장치 번호 D, 그리고 기능 번호 F에 위치하는 PCIe 장치 기능의 구성 공간 레지스터는, 예를 들어 Base + (B + D + F)*4K에서 시작할 수 있다. 또는 장치 공간 레지스터를 어드레싱하기 위한 다른 적절한 구성도 고려되고, 그리고 BDF 어드레싱의 설명은 여기에서 오직 예시적 목적으로 사용되었을 뿐이다.
도 2b는 실시예에 따른 예시 PCIe 장치 물리 어드레스 포맷(220)을 도시한다. 포맷(220)은 베이스 필드(222)(예를 들면, 비트 n-1 및 28 사이에 위치하는), 버스 필드(224)(예를 들면, 비트 27 및 20 사이에 위치하는), 그리고 기능 필드(예를 들면, 비트 14 및 12 사이에 위치하는)를 포함할 수 있다. 더구나, 상기 구현에서, 11에서 0까지의 비트는, 예를 들어 메모리 정렬 목적을 위해 포함되는, 접근되는 구성 공간 레지스터(예를 들면 그 장치 내부의)의 오프셋을 수용할 수 있다.
확장된 PCIe 패브릭(118)에 대한 32비트 메모리 공간의 매핑 및 액세스는 임의의 적절한 구성을 사용하여 수행될 수 있다. 예를 들어, 도 3a 및 도 3b는 실시예에 따른 PCIe 32비트 메모리 공간 매핑 및 액세스 예를 도시한다. 일반적으로 32비트 메모리 공간 액세스는 32비트 어드레스로 접근될 수 있는 장치 레지스터 뱅크를 위해 사용될 수 있다. 상기 구현에서, 대응하는 트랜잭션은 예를 들어 PCIe 패킷 헤더에서처럼 32비트 PCIe 메모리 공간 액세스로 표시될 수 있다. 물론, 다른 메모리 할당, 구성, 그리고 PCIe 패브릭에 대한 MMIO 공간으로의 매핑도 여기에서 고려된다. 그리고 그러므로, 여기에서 설명된 어떤 구체적인 구현은 달리 명시적으로 요청되지 않는 한 예시 목적으로 사용된다.
현재의 PCIe 표준 하에서, 32비트 어드레스 공간의 최대 크기는 4GB이다. 더 나아가, 현재 PCIe 표준에 따라서, 특정 컴퓨팅 플랫폼(예를 들어 x86 플랫폼)에서 제1 레벨 PCIe 패브릭(100)을 위한 32비트 메모리는 그것의 PCIe 구성 공간과 공유되고, 따라서, 크기가 256MB 밖에 되지 않을 수 있다.
실시예에 따르면, 확장된 PCIe 패브릭(118)은 호스트 CPU의 물리 어드레스 공간(200)과는 별개의 그 자신만의 32비트 메모리 공간을 가질 수 있다. 더구나, 도 3a에 나타난 대로, RCEP(106)은 메모리 공간(302)에 도시된 대로, 호스트의 64비트 MMIO 공간(206)의 상위 64비트 어드레스 윈도우에 확장된 패브릭(118)의 32비트 어드레스 공간을 매핑할 수 있다. 상기 구현에서, 메모리 공간(302)은 제1 레벨 패브릭(예를 들어, PCIe 패브릭(100))을 위한 32비트 메모리 공간과는 별개일 수 있다. 게다가, 메모리 공간(300)은, PCIe 구성 공간(208)과 동일한 하위 4기가 공간 안에 위치할 수 있는, 호스트 CPU의 32비트 어드레서블 공간(202)에 위치할 수 있다. 보여진 대로, 메모리 공간(302)는 베이스 어드레스(304)에서 시작하고, 크기가 최대 4GB까지 될 수 있다. 그러므로, 상기 구현에 따라서, 장치 레지스터 뱅크(예를 들어, 레지스터 뱅크(308))는 레지스터 뱅크의 적합한 오프셋(예를 들어, 오프셋(306))을 아는 것에 의해 어드레스 될 수 있다. 즉, 레지스터 뱅크(308)의 어드레스는 베이스(304) + 오프셋(306)이 될 수 있다. 또는, 레지스터 뱅크(308)의 어드레싱을 위한 다른 적절한 방식도 된다.
도 3b는 실시예에 따른 호스트 어드레스 공간 및 확장된 패브릭 어드레스 공간 각각에 대한 레지스터 뱅크 물리 어드레스 포맷(310 및 312)를 도시한다. 포맷(310)은 베이스 필드(314)(예를 들어, 비트 n-1부터 32까지 차지하는) 및 오프셋 필드(316)(예를 들어, 비트 31부터 0까지 차지하는)를 포함할 수 있다. 상기 구현에서, 포맷(310)은 MMIO 공간(206)에 매핑된 장치 레지스터 뱅크를 어드레스하는데 사용될 수 있다. 포맷(312)은 장치 레지스터 뱅크를 확장된 패브릭(예를 들어, 패브릭(118))에 어드레스하기 위한 오프셋 필드(318) 만을 수용할 수 있다. 게다가, 확장된 패브릭(118)에 PCIe 패킷을 위치시키기 전에, RCEP(106)은 상위 32비트 포맷(310)(64비트 길이일 수 있는)을 떼어내고 떼어내어진 PCIe 패킷을 32비트 어드레스 패킷으로 표시할 수 있다.
확장된 PCIe 패브릭(118)에 대한 64비트 메모리 공간의 매핑 및 액세싱은 임의의 적절한 구성을 사용하여 수행될 수 있다. 예를 들어, 도 4a 및 도 4b는 실시예에 따른 64비트 메모리 공간 매핑 및 액세스의 예를 도시한다. 일반적으로, 64비트 메모리 공간 액세스는 64비트 어드레스 또는 32비트 어드레스로 액세스 될 수 있는 장치 레지스터 뱅크를 위해 사용될 수 있다. 만약 32비트 어드레스 범위(range)가 64비트 어드레스에 할당되었다면, PCIe 하드웨어는 액세스를 위해 32비트 PCI 메모리 공간 구성 방식(예를 들어, 도 3a 및 도 3b에서 설명된 구성)을 사용할 수 있다는 것을 명심해야 한다. 상기 구현에서, 대응하는 트랜잭션은 PCIe 패킷 헤더에서 64비트 PCIe 메모리 공간 액세스로서 표시될 수 있다. 더구나, 역사적인 이유에 의해, 64비트 메모리 공간은 일반적으로 물리 어드레스 공간의 하위 4GB 위에 위치할 수 있다. 물론, 다른 메모리 할당, 구성, 그리고 PCIe 패브릭에 대한 MMIO 공간의 매핑도 여기에서 고려된다. 그리고, 그러므로 여기에서 설명된 어떤 구체적인 구현은 달리 명시적으로 요청되지 않는 한 예시 목적으로 사용된다.
상기 구현에서, 확장된 PCIe 패브릭(118)은 호스트 CPU의 물리 어드레스 공간(200)과 별개의 그 자신 만의 64비트 메모리 공간을 가질 수 있다. 도 4a에 나타난 대로, RCEP(106)는 메모리 공간(402)에 도시된 바와 같이 호스트 CPU의 64비트 MMIO 공간(206)에 확장된 패브릭(118)의 64비트 어드레스 공간을 매핑할 수 있다. 게다가, 메모리 공간(402)은 제1 레벨 패브릭(100)의 64비트 PCIe 메모리 공간(400)과 별개로 64비트 MMIO 공간(206) 내에 위치할 수 있다. 상기 구현에서, 메모리 공간(402)는 베이스 어드레스(404)에서 시작할 수 있고, 예를 들어, 크기가 4GB의 m배일 수 있다(m은 상수이고, 공간(402)이 4GB의 하나 또는 그 이상 배수의 크기를 가질 수 있음을 의미함). 더 나아가, 장치 레지스터 뱅크(예를 들어, 레지스터 뱅크(408))는 레지스터 뱅크의 적절한 오프셋(예를 들어, 오프셋(406))을 아는 것에 의해 어드레스 될 수 있다. 그러므로, 상기 구현에 따라서, 레지스터 뱅크(408)의 어드레스는 베이스(404) + 오프셋(406)이 될 수 있다. 또는, 레지스터 뱅크(408)의 어드레싱을 위한 다른 적합한 방식도 고려된다.
도 4b는 실시예에 따른 호스트 CPU 어드레스 공간 및 확장된 패브릭 어드레스 공간 각각에 대한 레지스터 뱅크 물리 어드레스 포맷(410 및 416/418)을 도시한다. 포맷(410)은 베이스 필드(412)(예를 들어, 비트 n-1에서 p까지 차지하는) 및 오프셋 필드(414)(예를 들어, 비트 p-1에서 0까지 차지하는)를 포함할 수 있다. 상수 p의 값은 32 + ln(m)이 될 수 있고, 다음 최대 정수값으로 순환된다. 포맷(410)은 64비트 MMIO 공간(206)에 매핑된 장치 레지스터 뱅크를 어드레스하는데 사용될 수 있다.
특정 실시예에서, 장치 레지스터 뱅크를 확장된 패브릭(118)에 어드레싱하는 것은 포맷(416)을 사용하여 수행될 수 있다. 예를 들어, 포맷(416)은 베이스 물리 어드레스가 확장된 패브릭(118)의 메모리 공간 구성에 대해 크기 정렬되는 경우 사용될 수 있다. 포맷(416)을 사용하여, RCEP(106)는 확장된 패브릭(118)을 위한 64비트 어드레스를 형성하기 위해 포맷(410)의 상위 비트(예를 들어, 비트 63 에서 p까지)를 제거할 수 있다. 다른 실시예에서, 포맷(418)은 베이스 물리 어드레스가 확장된 패브릭(118)의 메모리 공간에 대해 크기 정렬되지 않는 경우 사용될 수 있다. 상기 구현에서, 물리 어드레스의 비-정렬을 보상하기 위해, 오프셋(420)이 64비트 시스템의 베이스 어드레스(422)에 추가될 수 있다. 더구나, 베이스 어드레스가 적어도 4GB로 정렬(예를 들어, 하부 32비트가 0)된 경우, 크기 조정(size adjustment)이 베이스 어드레스의 상위 32비트를 위해 수행될 수 있다.
일 실시예에서, 확장된 패브릭(118)의 PCIe 구성 공간(210), 32비트 메모리 공간(302), 그리고 64비트 메모리 공간(402)은 호스트 CPU에서 오버랩할 수 있다. 상기 구현에서, RCEP(106)는 호스트 CPU로부터 요구된 모든 어드레스 범위(예를 들어, 공간(210, 302, 그리고 402))를 수용하기 충분할 만큼 큰 공통 매핑 윈도우(common mapping window)를 요청할 수 있고, RCEP(106)은 그때 필요에 따라 공통 매핑 윈도우를 다양하게 요청된 어드레스 범위로 나눌 수 있다.
실시예에 따르면, 확장된 패브릭(118)은 어떤 적절한 방법을 사용하여 핸들링될 수 있는 장치 인터럽트를 지원할 수 있다. 예를 들어, 확장된 패브릭(118)은 메시지 신호 인터럽트(message signaled interrupt, MSI) 구성을 사용할 수 있다. 상기 구현에서, 확장된 패브릭(118)에 연결된 장치로부터 발원한 MSI들은, PCIe 버스 표준에 따라서, 해당되는(applicable) 루트 포트(예를 들어, 루트 포트(110))로 전달될 수 있다. 더 나아가, RCEP(106)의 루트 포트(110)는 MSI를 위해 미리 할당된 어드레스 윈도우를 가질 수 있다. 상기 구현에서, 메모리 쓰기 어드레스(memory write address)가 미리 할당된 MSI 어드레스 윈도우와 매칭하는 경우, 트랜잭션이 인터럽트로 인식될 수 있다. 더구나, 루트 포트(110)는 그것의 다운스트림 패브릭으로부터 발원한 모든 MSI들을 수집할 수 있고 수집된 MSI를 큐(queue)에 넣어둘 수 있다(큐는 물리 어드레스 공간(200)에서 호스트 CPU의 메모리에 위치할 수 있음). 루트 포트(110)는 그때 그 역시 MSI인 별개의 인터럽트를 그의 업스트림 루트 포트(예를 들어, 호스트 루트 포트(103))로 시그널링한다. 곧이어, 호스트 루트 포트(102)는 수신된 인터럽트에 따라서 적절한 소프트웨어 핸들러(software handler)를 트리거할 수 있다. RCEP(106)의 루트 포트(110)의 인터럽트 핸들러는 그때 주 메모리의 MSI 큐를 조사하고, 발원 장치를 결정하며, 그리고 장치 드라이버의 적절한 인터럽트 핸들러를 디스패치(dispatch)할 수 있다. 물론, 장치 인터럽트를 건네기 위한 다른 방식도 여기에서 고려된다. 그리고 그러므로, 여기에서 설명된 어떤 구체적인 구현은 달리 명시적으로 요청되지 않는 한 예시 목적으로 사용된 것이다.
다른 실시예에 따르면, 확장된 패브릭(118)은 또한 임의의 적절한 방법을 사용하여 핸들링 될 수 있는 다이렉트 메모리 액세스(direct memory access, DMA)를 지원할 수 있다. 상기 구현에서, DMA 트랜잭션은 읽기 요청, 읽기 완료, 그리고 쓰기 요청을 포함할 수 있다. PCIe 패킷은 입력/출력 메모리 관리 유닛(input/output memory management unit, IOMMU)에 의해 변환되는 시스템 물리 어드레스(system physical address) 또는 입력/출력 가상 어드레스(input/output(IO) virtual address)를 운반할 수 있다. 더구나, PCIe 요청자 아이디(PCIe requester IDs)는 패브릭 마다 있을 수 있다. 그러므로, 요청자 아이디는 요청이 PCIe 패브릭 경계를 건너고 호스트 PCIe 패브릭(100)으로 향하는 업스트림으로 갈 때 RCEP(106)의 아이디로 교체될 수 있다. 즉, 확장된 패브릭(118)에서, 요청자 아이디는 종점 장치(예를 들어, 종점(114 또는 116))의 아이디가 될 수 있다. 요청이 루트 콤플렉스(102)로 향하는 업스트림으로 점차 전달될수록, 요청자 아이디는 RCEP(106)의 아이디로 교체될 수 있다.
상기 구현에서, DMA 쓰기는, 장치(예를 들어, 종점(114 또는 116))로부터 호스트 CPU의 메모리까지 움직이는 데이터를 가리킨다. RCEP(106)는 요청이 RCEP(106)에 의해 루트 콤플렉스(102) 및 호스트 CPU로 향하는 업스트림으로 통과될 때 장치 아이디를 RCEP(106)의 아이디로 교체할 수 있다. 더 나아가, DMA 읽기는 호스트 CPU의 메모리로부터 장치까지 움직이는 데이터를 가리킨다. 상기 구현에서 RCEP(106)는 패브릭(100)에 대한 트랜잭션을 위한 트랜잭션 태그(예를 들어, 요청 패킷의 일부)를 할당함으로써 모든 읽기 요청들을 추적하기 위해 하드웨어 스코어보드(hardware scoreboard)를 활용할 수 있다. 이러한 트랜잭션 태그는 RCEP(106)의 스코어보드 엔트리(scoreboard entries)에 링크될 수 있고 확장된 패브릭(118)에서 발원한 읽기 요청 패킷의 요청자 아이디를 기록하기 위해 사용될 수 있다. 루트 콤플렉스(102)로부터 RCEP(106)에 의해 수신된 완료 데이터는 상기 구현에 따라서, 대응하는 읽기 요청과 동일한 트랜잭션 태그를 운반할 수 있다. 그러므로, 상기 구현에서, 확장된 패브릭(118)에서 사용된 적합한 장치 아이디를 결정하기 위해 스코어보드 엔트리를 매칭하는데 사용될 수 있다. 물론 DMA 요청들을 건네기 위한 다른 방식도 여기에서 고려된다. 그리고 그러므로, 여기에서 설명된 어떤 구체적인 구현은 달리 명시적으로 요청되지 않는 한 예시 목적으로 사용된다.
그러므로, 위 단락의 실시예에서 설명된 다양한 PCIe 구성 액세스, 메모리 액세스, DMA, 그리고 인터럽트 메커니즘을 사용하여, RCEP 장치는 확장된 PCIe 패브릭을 호스팅하고 추가 장치(예를 들어, 추가 RCEP 장치 및/또는 주변 장치)를 호스트 루트 콤플렉스에 연결하는데 사용될 수 있다. RCEP 장치는 전형적인 PCIe 루트 콤플렉스 로직과 유사할 수 있다. 각 확장된 PCIe 패브릭은 그 자신만의 MMIO 공간 및 버스 번호 세트를 가질 수 있다. 그러므로, 호스트 CPU에 연결되는 모든 것에 부착될 수 있는 장치의 총 개수는 호스트 PCIe 패브릭의 가용 버스 번호의 개수로 한정되지 않을 수 있다. 상기 구현에서, 확장된 패브릭 각각의 MMIO 공간은 액세스의 용이함을 위해 그것의 부모 패브릭(예를 들어, 확장된 패브릭(118)의 부모 패브릭은 제1 레벨 패브릭(100)이다))의 64비트 MMIO 공간에 매핑될 수 있다. 더 나아가, 확장된 패브릭의 패브릭 목록은 RCEP 종점 장치 드라이버를 통해서 달성될 수 있다. 상기 구현에서, 각 RCEP는 해당되는 확장된 루트 콤플렉스 패브릭에서 발원한 결함을 핸들링할 수 있다. 그러므로, 다운스트림 패브릭 결함이 확장된 PCIe 패브릭의 패브릭 경계에서 차단(intercept)되어 업스트림으로 전파되지 않도록 결함 격리가 달성될 수 있다.
실시예에 따르면, 거의 모든 주변 장치(예를 들어, 사운드 카드, 비디오 카드, 네트워크 드라이버, 메모리 카드, 기타 등등)가 확장된 패브릭에 연결될 수 있고 그들의 드라이버 소프트웨어를 교체할 필요가 없다. 상기 구현에서, 확장된 PCIe 패브릭은 제1 레벨 PCIe 패브릭과 동일한 방식으로 주변 장치와 상호 작용한다. 더구나, 호스트 CPU의 소프트웨어(예를 들어, 운영 체제) 및 RCEP 드라이버가 레지스터 매핑, DMA 어드레스 매핑, RCEP를 통한 인터럽트 핸들러의 구현, 그리고 다른 유사한 기능을 설정하기 위해 수정 및/또는 제작될 수 있다. 그러므로, 주변 장치에게 주변 장치가 제1 레벨 PCIe 패브릭 대신 확장된 PCIe 패브릭에 연결되었음을 알려질 필요가 없다. 그러므로, 확장된 PCIe 패브릭 및 RCEP는 기존의 주변 장치 드라이버와 호환될 수 있다.
본 발명이 예시적인 실시예를 참조하여 설명되었지만, 본 설명은 제한의 의미로 해석되도록 의도되지 않았다. 본 발명의 다른 구현뿐만 아니라 예시적인 실시예들의 다양한 수정 및 결합도 상기 설명을 참조한 당 기술분야에서 통상의 지식을 가진 자에게는 분명한 것이다. 그러므로, 첨부된 클레임들이 어떤 상기 수정 또는 구현을 포함하는 것은 의도된 것이다.

Claims (21)

  1. 확장된 주변 컴포넌트 상호접속 익스프레스(peripheral component interconnect express, PCIe) 토폴로지로서,
    호스트 루트 콤플렉스(host root complex)를 포함하고, 호스트 중앙 처리 유닛(central processing unit, CPU)상에, 제1 버스 번호 세트 및 제1 메모리 맵 입출력(memory mapped input/output, MMIO) 공간을 갖는 호스트 PCIe 패브릭; 그리고
    상기 호스트 PCIe 패브릭의 종점(endpoint)의 일부로서 루트 콤플렉스 종점(root complex endpoint, RCEP)를 포함하고, 상기 제1 버스 번호 세트 및 상기 제1 MMIO 공간과는 각각 별개의 제2 버스 번호 세트 및 제2 MMIO 공간을 갖는 확장된 PCIe 패브릭
    을 포함하는 PCIe 토폴로지.
  2. 제1항에 있어서,
    상기 RCEP는 상기 확장된 PCIe 패브릭 및 상기 호스트 PCIe 패브릭 사이의 브리지인, PCIe 토폴로지.
  3. 제1항에 있어서,
    상기 제2 MMIO 공간은 상기 제1 MMIO 공간에 매핑되는, PCIe 토폴로지.
  4. 제3항에 있어서,
    상기 확장된 PCIe 패브릭의 32비트 메모리 공간은 상기 제1 MMIO 공간의 64비트 MMIO 공간에 매핑되는, PCIe 토폴로지.
  5. 제3항에 있어서,
    상기 확장된 PCIe 패브릭의 64비트 메모리 공간은 상기 제1 MMIO 공간의 64비트 MMIO 공간에 매핑되는, PCIe 토폴로지.
  6. 제1항에 있어서,
    상기 확장된 PCIe 패브릭의 PCIe 구성 공간은 상기 제1 MMIO 공간의 64비트 MMIO 공간에 매핑되는, PCIe 토폴로지.
  7. 제6항에 있어서,
    상기 확장된 PCIe 패브릭의 각 장치 기능은 상기 64비트 MMIO 공간의 각각의 4킬로바이트에 매핑되는, PCIe 토폴로지.
  8. 제6항에 있어서,
    상기 확장된 PCIe 패브릭에 관련된 각 장치 기능에 대한 구성 레지스터들은 베이스/장치/기능 어드레싱을 사용하여 어드레스 되도록 구성된, PCIe 토폴로지.
  9. 제1항에 있어서,
    상기 제2 버스 번호 세트는 상기 확장된 PCIe 패브릭에 대해 최대 256개 의 고유 버스 번호를 포함하는, PCIe 토폴로지.
  10. 제1항에 있어서,
    상기 RCEP는 상기 확장된 PCIe 패브릭에서 발생한 결함을 격리하도록 구성된, PCIe 토폴로지.
  11. 제1항에 있어서,
    상기 확장된 PCIe 패브릭은 상기 호스트 PCIe 패브릭과 동일한 방식으로 주변 장치와 상호 작용하는, PCIe 토폴로지.
  12. 주변 컴포넌트 상호접속 익스프레스(peripheral component interconnect express, PCIe) 토폴로지로서,
    확장된 PCIe 패브릭을 포함하고,
    상기 확장된 PCIe 패브릭은 루트 콤플렉스 종점(root complex end point, RCEP) 장치를 포함하며,
    상기 RCEP 장치는 제1 레벨 PCIe 패브릭의 종점(endpoint)의 일부가 되도록 구성되고, 상기 확장된 PCIe 패브릭은 메모리 맵 입출력(memory mapped input/output, MMIO) 공간 및 버스 번호 세트를 포함하는, PCIe 토폴로지.
  13. 제12항에 있어서,
    상기 MMIO 공간은 상기 제1 레벨 PCIe 패브릭의 64비트 어드레서블 물리 어드레스 공간(addressable physical address space)에 매핑되는, PCIe 토폴로지.
  14. 제12항에 있어서,
    상기 RCEP 장치는 하나 이상의 루트 포트(root port)를 포함하는, PCIe 토폴로지.
  15. 제12항에 있어서,
    상기 확장된 PCIe 패브릭은 상기 RCEP에 대한 하나 이상의 종점에 전기적으로 연결된 하나 이상의 스위치를 포함하는, PCIe 토폴로지.
  16. 주변 장치를 설계하는 방법으로서,
    호스트 주변 컴포넌트 상호접속 익스프레스(peripheral component interconnect express, PCIe) 패브릭의 종점의 일부로서, 상기 호스트 PCIe 패브릭의 제2 MMIO 공간과는 별개의 제1 MMIO 공간을 갖는 확장된 PCIe 패브릭을 호스팅하는 루트 콤플렉스 종점(root complex endpoint, RCEP)을 포함시키는 단계; 그리고
    상기 제1 MMIO 공간을 상기 제2 MMIO 공간에 매핑하는 단계
    를 포함하는 주변 장치 설계 방법.
  17. 제16항에 있어서,
    상기 확장된 PCIe 패브릭은 상기 호스트 PCIe 패브릭의 제2 버스 번호 세트와는 별개의 최대 256개의 고유한 제1 버스 번호 세트를 더 포함하는, 주변 장치 설계 방법.
  18. 제16항에 있어서,
    상기 RCEP 장치에 의해, 상기 확장된 PCIe 패브릭에서 일어난 다운스트림 결함을 차단하는 단계
    를 더 포함하는 주변 장치 설계 방법.
  19. 제16항에 있어서,
    상기 확장된 PCIe 패브릭의 PCIe 구성 공간, 32비트 메모리 공간, 그리고 64비트 메모리 공간을 상기 제2 MMIO 공간에 매핑하는 단계
    를 더 포함하는 주변 장치 설계 방법.
  20. 제16항에 있어서,
    상기 RCEP 장치에 의해, 메시지 신호 인터럽트(message signaled interrupts, MSIs)를 사용하여 상기 확장된 PCIe 패브릭에서 발생한 장치 인터럽트를 핸들링하는 단계
    를 더 포함하는 주변 장치 설계 방법.
  21. 제16항에 있어서,
    다이렉트 메모리 접근(direct memory access, DMA) 요청이 상기 호스트 PCIe 패브릭으로 향하는 업스트림으로 전달될 때 상기 DMA 요청 내의 발원 장치 ID를 RCEP ID로 교체함으로써, 상기 확장된 PCIe 패브릭에 연결된 장치로부터의 상기 DMA 요청을 건네는 단계
    를 더 포함하는 주변 장치 설계 방법.
KR1020157037097A 2013-06-28 2014-06-28 PCIe 패브릭 확장 방법 및 시스템 KR101835851B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/931,640 US9135200B2 (en) 2013-06-28 2013-06-28 System and method for extended peripheral component interconnect express fabrics
US13/931,640 2013-06-28
PCT/CN2014/081070 WO2014206356A2 (en) 2013-06-28 2014-06-28 System and method for extended peripheral component interconnect express fabrics

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020187006019A Division KR101906525B1 (ko) 2013-06-28 2014-06-28 PCIe 패브릭 확장 방법 및 시스템

Publications (2)

Publication Number Publication Date
KR20160014062A true KR20160014062A (ko) 2016-02-05
KR101835851B1 KR101835851B1 (ko) 2018-04-19

Family

ID=52116806

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020157037097A KR101835851B1 (ko) 2013-06-28 2014-06-28 PCIe 패브릭 확장 방법 및 시스템
KR1020187006019A KR101906525B1 (ko) 2013-06-28 2014-06-28 PCIe 패브릭 확장 방법 및 시스템

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020187006019A KR101906525B1 (ko) 2013-06-28 2014-06-28 PCIe 패브릭 확장 방법 및 시스템

Country Status (12)

Country Link
US (7) US9135200B2 (ko)
EP (5) EP3273358B1 (ko)
JP (2) JP6325665B2 (ko)
KR (2) KR101835851B1 (ko)
CN (4) CN114817103A (ko)
AU (1) AU2014301745B2 (ko)
DE (1) DE202014011596U1 (ko)
DK (1) DK3273358T3 (ko)
ES (3) ES2642829T3 (ko)
HU (2) HUE037146T2 (ko)
NO (1) NO3027015T3 (ko)
WO (1) WO2014206356A2 (ko)

Families Citing this family (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9135200B2 (en) 2013-06-28 2015-09-15 Futurewei Technologies, Inc. System and method for extended peripheral component interconnect express fabrics
ES2656464T3 (es) * 2013-09-11 2018-02-27 Huawei Technologies Co., Ltd. Procedimiento, sistema informático y aparato de procesamiento de fallo
EP4089544B1 (en) 2013-12-31 2024-01-31 Huawei Technologies Co., Ltd. Method and apparatus for extending pcie domain
US9507740B2 (en) * 2014-06-10 2016-11-29 Oracle International Corporation Aggregation of interrupts using event queues
US20180107728A1 (en) * 2014-12-31 2018-04-19 International Business Machines Corporation Using tombstone objects to synchronize deletes
US20180107535A1 (en) * 2014-12-31 2018-04-19 International Business Machines Corporation Vault redundancy reduction within a dispersed storage network
US20180101434A1 (en) * 2014-12-31 2018-04-12 International Business Machines Corporation Listing types in a distributed storage system
US10656866B2 (en) * 2014-12-31 2020-05-19 Pure Storage, Inc. Unidirectional vault synchronization to support tiering
US10114688B2 (en) * 2015-02-16 2018-10-30 Dell Products L.P. System and method for peripheral bus device failure management
US10698849B2 (en) * 2015-03-11 2020-06-30 Apple Inc. Methods and apparatus for augmented bus numbering
CN104898775A (zh) * 2015-05-20 2015-09-09 浪潮电子信息产业股份有限公司 计算装置、存储装置、网络交换设备及计算机体系架构
US9978247B2 (en) 2015-09-24 2018-05-22 Microsoft Technology Licensing, Llc Smart fabric that detects events and generates notifications
US20170091013A1 (en) * 2015-09-28 2017-03-30 Netapp, Inc. Pcie error reporting and throttling
CN106713183B (zh) * 2015-10-30 2020-03-17 新华三技术有限公司 网络设备的接口板以及该网络设备和报文转发方法
CN105700967A (zh) * 2016-01-08 2016-06-22 华为技术有限公司 一种外设部件内部互联PCIe设备及其检测方法
CN105701051B (zh) * 2016-01-15 2019-10-15 华为技术有限公司 一种热插拔方法、主机控制器、主机及PCIe桥设备
WO2018058625A1 (zh) 2016-09-30 2018-04-05 华为技术有限公司 一种检测报文反压的方法及装置
CN106502941A (zh) * 2016-11-25 2017-03-15 北京兆芯电子科技有限公司 输入输出扩展器、计算机系统以及其配置方法
CN111897751A (zh) 2017-01-26 2020-11-06 华为技术有限公司 一种数据传输的方法、装置、设备和系统
US10394468B2 (en) * 2017-02-23 2019-08-27 International Business Machines Corporation Handling data slice revisions in a dispersed storage network
US10635602B2 (en) 2017-11-14 2020-04-28 International Business Machines Corporation Address translation prior to receiving a storage reference using the address to be translated
US10558366B2 (en) 2017-11-14 2020-02-11 International Business Machines Corporation Automatic pinning of units of memory
US10664181B2 (en) 2017-11-14 2020-05-26 International Business Machines Corporation Protecting in-memory configuration state registers
US10496437B2 (en) 2017-11-14 2019-12-03 International Business Machines Corporation Context switch by changing memory pointers
US10761983B2 (en) * 2017-11-14 2020-09-01 International Business Machines Corporation Memory based configuration state registers
US10761751B2 (en) 2017-11-14 2020-09-01 International Business Machines Corporation Configuration state registers grouped based on functional affinity
US10698686B2 (en) 2017-11-14 2020-06-30 International Business Machines Corporation Configurable architectural placement control
US10642757B2 (en) 2017-11-14 2020-05-05 International Business Machines Corporation Single call to perform pin and unpin operations
US10592164B2 (en) 2017-11-14 2020-03-17 International Business Machines Corporation Portions of configuration state registers in-memory
US10901738B2 (en) 2017-11-14 2021-01-26 International Business Machines Corporation Bulk store and load operations of configuration state registers
CN107992438A (zh) * 2017-11-24 2018-05-04 郑州云海信息技术有限公司 一种服务器及在服务器内灵活配置PCIe拓扑的方法
JP6635209B2 (ja) * 2018-04-18 2020-01-22 富士通クライアントコンピューティング株式会社 情報処理システム
CN109002591B (zh) * 2018-06-26 2021-11-09 郑州云海信息技术有限公司 一种从服务器主板端调整PCIe拓扑的方法和系统
JP7115128B2 (ja) * 2018-08-07 2022-08-09 富士通株式会社 情報処理装置、ブート方法及びブートプログラム
CN109408454B (zh) * 2018-11-01 2021-10-22 郑州云海信息技术有限公司 一种芯片管理的方法以及相关装置
WO2020132962A1 (zh) * 2018-12-26 2020-07-02 华为技术有限公司 安全元件、数据处理装置及数据处理方法
JP6700564B1 (ja) * 2018-12-28 2020-05-27 富士通クライアントコンピューティング株式会社 情報処理システム
US11016795B2 (en) * 2019-01-31 2021-05-25 EMC IP Holding Company, LLC System and method for virtualizing hot-swappable PCIe devices for virtual machines
CN109902038B (zh) * 2019-02-21 2020-12-29 杭州迪普科技股份有限公司 一种PCIe总线地址空间分配方法及装置
JP6574917B1 (ja) * 2019-05-20 2019-09-11 富士通クライアントコンピューティング株式会社 情報処理システム、及び中継装置
US11558296B2 (en) * 2020-09-18 2023-01-17 Serialtek, Llc Transaction analyzer for peripheral bus traffic
US11593026B2 (en) 2020-03-06 2023-02-28 International Business Machines Corporation Zone storage optimization using predictive protocol patterns
CN111651397B (zh) * 2020-05-09 2022-11-15 山东浪潮科学研究院有限公司 一种访问PXIe外设模块的方法和设备
CN111858407B (zh) * 2020-07-14 2021-12-07 中航航空电子有限公司 高速外围设备互连系统内的通信方法及高速外围设备互连系统
CN111930660B (zh) * 2020-07-30 2022-04-15 长沙景嘉微电子股份有限公司 Pcie通路配置方法、装置、终端和介质
US11836059B1 (en) 2020-12-14 2023-12-05 Sanblaze Technology, Inc. System and method for testing non-volatile memory express storage devices
US11971839B2 (en) * 2022-07-20 2024-04-30 Vmware, Inc. Exposing PCIE configuration spaces as ECAM compatible
CN116414759B (zh) * 2023-06-09 2023-09-29 深圳中安辰鸿技术有限公司 计算机交换系统及地址分配、枚举、数据分发方法

Family Cites Families (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6983339B1 (en) * 2000-09-29 2006-01-03 Intel Corporation Method and apparatus for processing interrupts of a bus
US7334071B2 (en) 2005-05-25 2008-02-19 Integrated Device Technology, Inc. Expansion of cross-domain addressing for PCI-express packets passing through non-transparent bridge
US8463969B2 (en) * 2005-06-30 2013-06-11 Intel Corporation Extended message signal interrupt
JP4828899B2 (ja) * 2005-09-21 2011-11-30 株式会社リコー 情報処理装置および記憶デバイス共有方法
US7793010B2 (en) 2005-11-22 2010-09-07 Lsi Corporation Bus system with multiple modes of operation
US8189573B2 (en) 2005-12-22 2012-05-29 Intel Corporation Method and apparatus for configuring at least one port in a switch to be an upstream port or a downstream port
US7660922B2 (en) * 2006-05-12 2010-02-09 Intel Corporation Mechanism to flexibly support multiple device numbers on point-to-point interconnect upstream ports
US7506084B2 (en) 2006-10-17 2009-03-17 International Business Machines Corporation Method for communicating with an I/O adapter using cached address translations
US7617377B2 (en) 2006-10-17 2009-11-10 International Business Machines Corporation Splitting endpoint address translation cache management responsibilities between a device driver and device driver services
US8271604B2 (en) * 2006-12-19 2012-09-18 International Business Machines Corporation Initializing shared memories for sharing endpoints across a plurality of root complexes
US7836238B2 (en) 2006-12-19 2010-11-16 International Business Machines Corporation Hot-plug/remove of a new component in a running PCIe fabric
US7836129B2 (en) 2006-12-19 2010-11-16 International Business Machines Corporation Communication between host systems using a queuing system and shared memories
US7813366B2 (en) * 2006-12-19 2010-10-12 International Business Machines Corporation Migration of a virtual endpoint from one virtual plane to another
JP5058615B2 (ja) * 2007-01-25 2012-10-24 エヌイーシーコンピュータテクノ株式会社 ノード制御装置および情報処理装置
US7562176B2 (en) * 2007-02-28 2009-07-14 Lsi Corporation Apparatus and methods for clustering multiple independent PCI express hierarchies
CN101052013B (zh) * 2007-05-22 2011-09-28 杭州华三通信技术有限公司 一种网络设备内部管理通道实现的方法及系统
US20090063894A1 (en) * 2007-08-29 2009-03-05 Billau Ronald L Autonomic PCI Express Hardware Detection and Failover Mechanism
US7752346B2 (en) * 2007-12-21 2010-07-06 Aprius, Inc. Universal routing in PCI-Express fabrics
US8386654B2 (en) * 2008-03-25 2013-02-26 Hewlett-Packard Development Company, L.P. System and method for transforming PCIe SR-IOV functions to appear as legacy functions
US7934033B2 (en) * 2008-03-25 2011-04-26 Aprius, Inc. PCI-express function proxy
US8838867B2 (en) 2008-12-24 2014-09-16 Nuon, Inc. Software-based virtual PCI system
US8103810B2 (en) 2008-05-05 2012-01-24 International Business Machines Corporation Native and non-native I/O virtualization in a single adapter
US8625615B2 (en) 2008-05-16 2014-01-07 Nec Corporation PCI express switch, PCI express system, and network control method
US9015446B2 (en) * 2008-12-10 2015-04-21 Nvidia Corporation Chipset support for non-uniform memory access among heterogeneous processing units
US8144582B2 (en) 2008-12-30 2012-03-27 International Business Machines Corporation Differentiating blade destination and traffic types in a multi-root PCIe environment
US7873068B2 (en) * 2009-03-31 2011-01-18 Intel Corporation Flexibly integrating endpoint logic into varied platforms
US8521915B2 (en) * 2009-08-18 2013-08-27 Fusion-Io, Inc. Communicating between host computers and peripheral resources in an input/output (I/O) virtualization system
EP2480977B1 (en) 2009-09-25 2014-11-05 Hewlett-Packard Development Company, L.P. Mapping non-prefetchable storage locations into memory mapped input/output space
US8539134B2 (en) 2010-02-15 2013-09-17 International Business Machines Corporation PCI express multiplier device
EP2365445B1 (en) * 2010-03-11 2013-10-23 Ricoh Company, Ltd. Adapter and communication method
JP5764919B2 (ja) * 2010-12-16 2015-08-19 株式会社リコー 通信機器および通信システム
GB2478727B (en) * 2010-03-15 2013-07-17 Advanced Risc Mach Ltd Translation table control
JP2011199419A (ja) * 2010-03-17 2011-10-06 Ricoh Co Ltd 画像形成装置、画像形成方法、およびプログラム
JP2011227539A (ja) * 2010-04-15 2011-11-10 Ricoh Co Ltd 画像処理装置
US8443126B2 (en) * 2010-09-22 2013-05-14 Wilocity, Ltd. Hot plug process in a distributed interconnect bus
US8677176B2 (en) 2010-12-03 2014-03-18 International Business Machines Corporation Cable redundancy and failover for multi-lane PCI express IO interconnections
US8521941B2 (en) * 2010-12-28 2013-08-27 Plx Technology, Inc. Multi-root sharing of single-root input/output virtualization
JP5903801B2 (ja) * 2011-08-23 2016-04-13 富士通株式会社 通信装置およびid設定方法
JP5682829B2 (ja) 2011-09-01 2015-03-11 日本電気株式会社 情報処理装置
JP2013088879A (ja) * 2011-10-13 2013-05-13 Kyocera Document Solutions Inc 情報処理装置
US9128920B2 (en) * 2011-11-30 2015-09-08 Marvell World Trade Ltd. Interrupt handling systems and methods for PCIE bridges with multiple buses
US20140223061A1 (en) * 2011-12-19 2014-08-07 Keng Lai Yap System and deterministic method for servicing msi interrupts using direct cache access
JP2013196593A (ja) * 2012-03-22 2013-09-30 Ricoh Co Ltd データ処理装置、データ処理方法及びプログラム
WO2014000271A1 (zh) * 2012-06-29 2014-01-03 华为技术有限公司 一种pcie交换系统、装置及交换方法
TW201411358A (zh) * 2012-09-10 2014-03-16 Accusys Inc 透過PCIe介面連接於一主機系統的儲存裝置和方法
US9189441B2 (en) * 2012-10-19 2015-11-17 Intel Corporation Dual casting PCIE inbound writes to memory and peer devices
US8995302B1 (en) * 2013-01-16 2015-03-31 Pmc-Sierra Us, Inc. Method and apparatus for translated routing in an interconnect switch
CN103095463B (zh) * 2013-02-01 2016-08-03 福建星网锐捷网络有限公司 Pcie交换网系统和通信方法
US9298658B2 (en) 2013-02-26 2016-03-29 Avago Technologies General Ip (Singapore) Pte. Ltd. Using PCI-E extended configuration space to send IOCTLS to a PCI-E adapter
US9405688B2 (en) 2013-03-05 2016-08-02 Intel Corporation Method, apparatus, system for handling address conflicts in a distributed memory fabric architecture
US8806098B1 (en) 2013-03-15 2014-08-12 Avalanche Technology, Inc. Multi root shared peripheral component interconnect express (PCIe) end point
US9286258B2 (en) * 2013-06-14 2016-03-15 National Instruments Corporation Opaque bridge for peripheral component interconnect express bus systems
US10071975B2 (en) 2013-06-18 2018-09-11 Cygnet Biosciences B.V. Macrocyclic amidinourea derivatives, methods of preparation and uses thereof as chitinase inhibitors
US9135200B2 (en) 2013-06-28 2015-09-15 Futurewei Technologies, Inc. System and method for extended peripheral component interconnect express fabrics

Also Published As

Publication number Publication date
US20200110722A1 (en) 2020-04-09
EP3540604A1 (en) 2019-09-18
US20150347339A1 (en) 2015-12-03
US10417160B2 (en) 2019-09-17
WO2014206356A2 (en) 2014-12-31
JP6325665B2 (ja) 2018-05-16
EP3933604B1 (en) 2023-09-20
CN105359124B (zh) 2018-03-13
CN108268412B (zh) 2022-04-05
US11429550B2 (en) 2022-08-30
NO3027015T3 (ko) 2018-04-07
HUE044846T2 (hu) 2019-11-28
US10922259B2 (en) 2021-02-16
AU2014301745A1 (en) 2016-01-07
ES2741100T3 (es) 2020-02-10
CN108268412A (zh) 2018-07-10
US9135200B2 (en) 2015-09-15
US10210124B2 (en) 2019-02-19
CN115129638A (zh) 2022-09-30
WO2014206356A3 (en) 2015-04-23
ES2884848T3 (es) 2021-12-13
DK3273358T3 (da) 2019-08-05
US20220276976A1 (en) 2022-09-01
JP6790015B2 (ja) 2020-11-25
EP3273358B1 (en) 2019-05-15
EP2997483A4 (en) 2016-07-06
ES2642829T3 (es) 2017-11-20
JP2016526727A (ja) 2016-09-05
EP4137953A1 (en) 2023-02-22
AU2014301745B2 (en) 2017-04-20
HUE037146T2 (hu) 2018-08-28
KR101906525B1 (ko) 2018-10-10
US10216676B2 (en) 2019-02-26
CN105359124A (zh) 2016-02-24
US11954058B2 (en) 2024-04-09
EP2997483A2 (en) 2016-03-23
DE202014011596U1 (de) 2023-01-12
CN114817103A (zh) 2022-07-29
US20180300277A1 (en) 2018-10-18
JP2018125028A (ja) 2018-08-09
EP3540604B1 (en) 2021-05-19
US20150006780A1 (en) 2015-01-01
US20180300276A1 (en) 2018-10-18
KR101835851B1 (ko) 2018-04-19
KR20180026570A (ko) 2018-03-12
EP3933604A1 (en) 2022-01-05
EP2997483B1 (en) 2017-08-23
EP3273358A1 (en) 2018-01-24
US20210216485A1 (en) 2021-07-15

Similar Documents

Publication Publication Date Title
KR101835851B1 (ko) PCIe 패브릭 확장 방법 및 시스템
US9753880B1 (en) Method and switch for transferring transactions between switch domains
US10585609B2 (en) Transfer of storage operations between processors
EP1730646B1 (en) Shared input/output load-store architecture
US7783822B2 (en) Systems and methods for improving performance of a routable fabric
GB2606523A (en) Technique for handling request transfers from a peripheral device in a communication network

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal