KR20100080360A - 멀티-루트 PCIe 환경에서 블레이드 목적지 및 트래픽 타입의 분화 - Google Patents
멀티-루트 PCIe 환경에서 블레이드 목적지 및 트래픽 타입의 분화 Download PDFInfo
- Publication number
- KR20100080360A KR20100080360A KR1020090115690A KR20090115690A KR20100080360A KR 20100080360 A KR20100080360 A KR 20100080360A KR 1020090115690 A KR1020090115690 A KR 1020090115690A KR 20090115690 A KR20090115690 A KR 20090115690A KR 20100080360 A KR20100080360 A KR 20100080360A
- Authority
- KR
- South Korea
- Prior art keywords
- virtual
- traffic
- root
- data structure
- mapping data
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4022—Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Stored Programmes (AREA)
Abstract
멀티-루트 PCI Express 환경에서 호스트 시스템 블레이드에 대해 트래픽 타입을 분화하는 메커니즘이 제공되었다. 이 메커니즘은 데이터 프로세싱 시스템 내의 각 단일-루트 가상 계층에 대해, 복수의 트래픽 클래스 내의 각 트래픽 클래스를 복수의 가상 채널 내의 상응하는 가상 채널과 연관시키는 제 1 맵핑 데이터 구조를 생성한다. 또한, 복수의 가상 채널 내의 각 가상 채널을 데이터 프로세싱 시스템의 복수의 가상 링크 내의 상응하는 가상 링크로 맵핑하는 제 2 맵핑 데이터 구조가 생성된다. 특정 우선권 그룹의 트래픽은, 제 1 맵핑 데이터 구조 및 제 2 맵핑 데이터 구조에 기초하여, 하나의 단일-루트 가상 계층으로부터 복수의 가상 링크 내의 특정한 가상 링크로 라우팅된다.
Description
본 발명은 일반적으로는 향상된 데이터 프로세싱 시스템 및 방법에 관한 것이다. 보다 구체적으로는, 본 발명은 트래픽 타입과 서버 블레이드 목적지 모두에 기초하여 분화(differentiation)되는, 멀티-루트 PCI 익스프레스 환경의 루트 컴플렉스에 걸친 트래픽 타입의 분화 시스템 및 방법에 관한 것이다. 이러한 분화는, 하나의 트래픽 클래스가 멀티-루트 시스템을 가로지르는 다른 트래픽 클래스의 플로우를 블로킹하는 것을 방지할 것이다.
가장 최근의 컴퓨팅 디바이스는 인텔사에 의해 1990년대에 처음 생성된 PCI(Peripheral Component Interconnect) 표준의 일부 버전 또는 구현물을 이용하는 입력/출력(I/O) 어답터 및 버스를 사용한다. PCI 표준은 주변기기를 컴퓨터 마더보드에 장착하는 컴퓨터 버스를 명시하였다. PCI 익스프레스(PCIe)는 현존하는 PCI 프로그래밍 컨셉을 사용하지만 완전히 다른 컴퓨터 버스에 기반하며, 직렬 물 리층 통신 프로토콜보다 훨씬 빠른 속도를 갖는 PCI 컴퓨터 버스의 구현물이다. 물리층은 복수의 디바이스들 사이에서 공유될 수 있는 양방향 버스로 이루어지지 않고, 정확히 두 개의 디바이스에만 접속되는 단일의 단방향 링크로 이루어진다.
일 예시적인 실시예에서, 멀티-루트 데이터 프로세싱 시스템에서 서로 다른 트래픽 타입들과 서버 블레이드 목적지 간의 분화(differentiation) 방법이 제공되었다. 이 방법은 데이터 프로세싱 시스템 내의 각 단일-루트 가상 계층에 대해, 복수의 트래픽 클래스 내의 각 트래픽 클래스를 복수의 가상 채널 내의 상응하는 가상 채널과 연관시키는 제 1 맵핑 데이터 구조를 생성하는 것을 포함한다. 이 방법은 또한 복수의 가상 채널 내의 각 가상 채널을 데이터 프로세싱 시스템의 복수의 가상 링크 내의 상응하는 가상 링크로 맵핑하는 제 2 맵핑 데이터 구조를 생성하는 것을 포함한다. 또한, 이 방법은 제 1 맵핑 데이터 구조 및 제 2 맵핑 데이터 구조에 기초하여 하나의 단일-루트 가상 계층으로부터 복수의 가상 링크 내의 특정한 가상 링크로 특정 우선권 그룹의 트래픽을 라우팅하는 것을 포함한다.
다른 예시적인 실시예에서, 컴퓨터 판독가능 프로그램을 갖는 컴퓨터 이용가능 또는 기록가능한 매체를 포함하는 컴퓨터 프로그램 제품이 제공된다. 컴퓨터 판독가능 프로그램은 컴퓨팅 디바이스 상에서 실행되었을 때, 컴퓨팅 디바이스로 하여금 예시적인 실시예의 방법과 관련하여 전술된 동작들 및 동작들의 조합을 수 행하도록 한다.
또 다른 예시적인 실시예에서, 시스템/장치가 제공된다. 시스템/장치는 하나 이상의 프로세서 및 하나 이상의 프로세서에 연결된 메모리를 포함할 수 있다. 메모리는 하나 이상의 프로세서에 의해 실행되었을 때, 하나 이상의 프로세서로 하여금 예시적인 실시예의 방법과 관련하여 전술된 동작들 및 동작들의 조합을 수행하도록 하는 명령을 포함할 수 있다.
본 발명의 이러한 특성 및 장점과 다른 특성 및 장점이 본 발명의 예시적인 실시예에 대한 아래의 상세한 설명에서 기술되어 당업자에게 명백하게 이해될 것이다.
본 발명과 본 발명의 바람직한 사용 모드 및 추가적인 목적 및 장점이, 첨부된 도면을 참조로 하여 아래의 예시적인 실시예에 대한 상세한 설명으로부터 가장 잘 이해될 것이다.
PCI-SIG(peripheral component interconnect special interest group)는 PCI(peripheral component interconnet) 및 PCIe(PCI Express)가 데이터 프로세싱 시스템 내에서 구현될 방식을 지시하는 PCI 및 PCIe 명세를 전개해왔다. 도 1은 PCIe 명세에 따른 PCIe 패브릭 토폴로지를 통합하는 시스템을 도시한 예시적인 도면이다. 도 1에 도시된 바와 같이, 시스템(100)은 호스트 프로세서(CPU)(110) 및 루트 컴플렉스(130)에 연결된 메모리(120)로 이루어지며, 이는 다시 하나 이상의 PCIe 엔드포인트(endpoint)(140)("엔드포인트"라는 용어는 PCIe 명세에서 PCIe 인에이블된 어답터를 지칭하도록 사용된다), PCI 브릿지(150)로의 PCI 익스프레스 및 하나 이상의 상호접속 스위치(160)로 연결된다. 루트 컴플렉스(130)는 CPU/메모리를 I/O 어답터에게 접속시키는 I/O 계층의 루트를 표시한다. 루트 컴플렉스(130)는 호스트 브릿지, 0개 이상의 루트 컴플렉스 통합된 엔드포인트, 0개 이상의 루트 컴플렉스 이벤트 컬렉터 및 하나 이상의 루트 포트를 포함한다. 각 루트 포트는 개별적인 I/O 계층을 지원한다. I/O 계층들은 루트 컴플렉스(130), 0개 이상의 상호접속 스위치(160) 및/또는 브릿지(150)(스위치 또는 PCIe 패브릭을 포함함) 및 엔드포인트(140, 170, 182-188)와 같은 하나 이상의 엔드포인트로 이루어질 수 있다. PCI 및 PCI에 관한 보다 많은 정보를 위해, PCI-SIG 웹사이트 www.pcisig.com으로부터 입수가능한 PCI 및 PCIe 명세를 참조할 수 있다.
PCI 및 PCIe 명세에 더하여, PCI-SIG는 수 개의 논리적 파티션(LPAR)에 의해 공유될 수 있는 I/O 어답터(IOA)를 설계하는 방법을 규정하는 입력/출력 가상화(IOV) 표준을 규정하였다. 단일 루트 시스템 상에서의 IOA 공유는 SR-IOV(Single Root I/O Virtualization)로 지칭되고, 멀티-루트 시스템에 걸친 IOA 공유는 MR-IOV(Multi-root I/O Virtualization)로 지칭된다. LPAR은 컴퓨터의 프로세서, 메모리 및 스토리지를 복수의 리소스의 세트로 분할하여 리소스의 세트 각각이 자신만의 운영 시스템 인스턴스 및 애플리케이션을 이용하여 독립적으로 운영될 수 있도록 한 것이다. 생성될 수 있는 논리적 파티션의 개수는 시스템의 이용가능한 프로세서 모델 및 리소스에 의존한다. 전형적으로, 파티션은 데이터베이스 운영, 클라이언트/서버 운영, 테스트 환경과 생산 환경의 분리 등의 서로 다른 목적을 위해 사용된다. 각 파티션은 마치 다른 파티션이 개별적인 장치 내에 있는 것과 같이 다른 파티션과 통신할 수 있다. LPAR을 지원하는 현대의 시스템에서, 일부 리소스는 LPAR 사이에서 공유될 수 있다. 전술된 바와 같이, PCI 및 PCIe 명세에서, 공유될 수 있는 이러한 리소스는 I/O 가상화 장치를 사용하는 I/O 어답터이다.
PCI-SIG가 SR-IOV 또는 MR-IOV 환경에서 몇몇 LPAR에 의해 공유될 수 있는 IOA를 설계하는 방법을 규정하는 표준을 제공하는 반면, 이러한 명세는 멀티-루트 시스템의 개별적인 가상 계층들 내의 모든 트래픽에 대한 서로 다른 트래픽 클래스와 서로 다른 호스트 블레이드에 대한 라인의 헤드 블로킹을 방지하는 방법을 규정하지 않는다. PCIe MR-IOV 명세는 시스템에 걸친 복수의 독립적인 데이터 플로우 및 리소스의 생성을 가능케 하는 가상 링크 맵핑에 대한 가상 채널의 세부사항을 포함한다. 그러나, MR-IOV 명세는 서로 다른 트래픽 클래스에 대한 가상 계층에 걸친 가상 링크 내의 라인의 헤드 블로킹을 방지하는 방법에 대한 세부사항을 제공하지 않는다. MR-IOV 명세는 "따라서, 일반적으로, MR-PCIM은 어느 VC ID가 사용될 것인지 또는 그들이 VH 내에서 운영하는 소프트웨어에 의해 어떻게 할당될 것인지에 대한 선험적 지식(a priori knowledge)이 없다. MR-PCIM이 이러한 지식으로 프로세싱하거나 또는 MR-PCIM이 VH 내에서 운영하는 소프트웨어로의 원하는 할당을 전달할 수 있는 시스템에서, VC ID는 MR-PCIM 초기화 동안 (즉, VH 내에서 운영하는 소프트웨어의 인스턴스화(instantiation)에 앞서) VL로 맵핑될 수 있다"라고 언 급하고 있다. 따라서, 이 명세는 가상 링크 내의 가상 계층(VH)에 걸친 라인의 헤드 블로킹을 방지하는 어떠한 방법도 제공하지 않는다. 명세는 라인의 헤드 블로킹을 방지하는 것을 도울 수 있는 바이패스 큐(bypass queue)를 기술하지만, 결과적으로 이러한 바이패스 큐의 버퍼 리소스가 소모될 것이다. 이것은 바이패스 큐의 사용으로 인한 트래픽 큐 프로세스에서의 추가적인 대기와 라인의 헤드 블로킹을 발생시킨다.
예시적인 실시예는 가상 채널에서 가상 링크로의 맵핑 성능에 대한 트래픽 클래스를 사용하여 가상 계층에 걸쳐 트래픽을 분화(differentiate)하도록 메커니즘을 규정하며, 이때 가상 링크는 단일 물리적 MR PCIe 링크 상에서 흐르는 복수의 독립적인 논리적 데이터에 대한 지원을 제공하고 PCIe Base 토폴로지 내의 가상 채널(VC)에서 같은 역할을 MR 토폴로지 내에서 수행한다. 가상 채널은 PCIe 단일-루트 계층 내의 복수의 독립적인 플로우 생성을 가능케 한다. 가상 링크는 PCIe 멀티-루트 계층 내의 복수의 독립적인 플로우 생성을 가능케 한다. 멀티-루트 시스템의 각 가상 계층은 단일 가상 채널을 가상 링크로 할당할 수 있다. 단일 가상 링크를 공유하는 복수의 트래픽 타입은 라인의 헤드 블로킹을 발생시킬 수 있다. 예를 들어, 스토리지 트래픽은 가상 링크 상에서 고성능 컴퓨팅(HPC) 트래픽, 즉 수퍼 컴퓨터 및 클러스터와 관련된 트래픽을 블로킹할 수 있다. 또한, 스토리지 트래픽은 HPC 트래픽과는 다른 가상 계층일 수 있다. 따라서 보다 긴 전송 시간을 갖는 트래픽은 보다 적은 대기를 필요로 하는 블록 트래픽일 수 있다. 트래픽 블로킹이 느릴수록 가상 링크가 다른 시스템에 대해 목표화된 트래픽을 블로킹하는 하나의 시스템에 대한 작업을 발생시키는 가상 계층과 다를 수 있다. 예시적인 실시예는 스토리지 트래픽과 같은 보다 느린 트래픽이 HPC 애플리케이션 트래픽과 같은 보다 높은 대기 민감성 트래픽을 블로킹하는 것을 방지하기 위해, 우선순위 그룹들을 트래픽 클래스, 가상 채널 및 가상 링크로 할당하도록 메커니즘을 규정한다.
당업자에 의해 이해되는 바와 같이, 본 발명은 시스템, 방법 또는 컴퓨터 프로그램 제품으로서 구현될 수 있다. 따라서, 본 발명은 완전한 하드웨어 실시예, 완전한 소프트웨어 실시예(펌웨어, 레지던트 펌웨어, 마이크로-코드 등을 포함), 또는 일반적으로 "회로", "모듈" 또는 "시스템"으로 본 명세서에서 지칭될 수 있는 소프트웨어와 하드웨어 측면을 결합시킨 실시예의 형태를 취할 수 있다. 또한, 본 발명은 매체 내에서 구현되는 컴퓨터 이용가능한 프로그램 코드를 갖는 임의의 실체적인 표현 매체 내에 구현된 컴퓨터 프로그램 제품의 형태를 취할 수도 있다.
하나 이상의 컴퓨터 이용가능한 또는 컴퓨터 판독가능한 매체(들)의 임의의 결합이 이용될 수 있다. 컴퓨터-이용가능한 또는 컴퓨터-판독가능한 매체는 예를 들어 전자, 자기, 광학, 전자기, 적외선, 또는 반도체 시스템, 장치, 디바이스 또는 전파 매체일 수 있지만, 이것으로 제한되는 것은 아니다. 컴퓨터-판독가능 매체의 보다 구체적인 예시는: 하나 이상의 와이어를 구비하는 전기 접속부, 휴대용 컴퓨터 디스켓, 하드 디스크, RAM, ROM, EPROM 또는 플래쉬 메모리, 광섬유, CDROM, 광학적 스토리지 디바이스, 인터넷 또는 인트라넷을 지원하는 전송 미디어, 또는 자기적 스토리지 디바이스를 포함할 수 있다(절대적인 리스트는 아님). 컴퓨 터-이용가능한 또는 컴퓨터-판독가능한 매체는 종이도 될 수 있으며 또는 예를 들어 종이 또는 다른 매체의 광학적 스캐닝을 통해 전자적으로 캡쳐되고, 컴파일되고, 해석되거나, 또는 적절한 방식으로 프로세싱된 후, 필요하다면 컴퓨터 메모리 내에 저장될 수 있는 프로그램과 같은 프로그램이 인쇄되는 다른 적절한 매체일 수 있다. 본 명세서의 맥락에서, 컴퓨터-이용가능하거나 또는 컴퓨터-판독가능한 매체는 명령어 실행 시스템, 장치, 또는 디바이스와 관련하여 사용하기 위한 또는 이것에 의해서 사용되기 위한 프로그램을 포함, 저장, 전달, 전파 또는 수송할 수 있는 임의의 매체일 수 있다. 컴퓨터-이용가능한 매체는 기저대역 내에서 또는 반송파의 일부로서, 자신에 구현된 컴퓨터-이용가능한 프로그램 코드를 갖는 전파된 데이터 신호를 포함할 수 있다. 컴퓨터 이용가능한 프로그램 코드는 무선, 유선, 광섬유 케이블, RF 등을 포함할 수 있지만 이것으로 제한되는 것은 아닌 임의의 적절한 매체를 사용하여 전송될 수 있다.
본 발명의 동작을 실행하기 위한 컴퓨터 프로그램 코드는, Java, Smalltalk, C++ 등과 같은 객체 지향적 프로그래밍 언어 및 "C" 프로그래밍 언어와 같은 종래의 절차형(procedural) 프로그래밍 언어 또는 유사한 프로그래밍 언어를 포함하는 하나 이상의 프로그래밍 언어의 임의의 결합으로 기술될 수 있다. 프로그램 코드는 사용자의 컴퓨터 상에서 완전히 실행될 수 있고, 사용자의 컴퓨터 상에서 독립형 소프트웨어 패키지로서 부분적으로 실행될 수 있고, 사용자의 컴퓨터 상에서 부분적으로 실행되고 원격 컴퓨터 상에서 부분적으로 실행되거나 또는 원거리 컴퓨터 또는 서버 상에서 그 전체가 실행될 수 있다. 후자의 시나리오에서, 원격 컴퓨터 는 로컬 영역 네트워크(LAN) 또는 광역 네트워크(WAN)를 포함하는 임의의 타입의 네트워크를 통해서 사용자의 컴퓨터로 접속될 수 있으며, 또는 외부 컴퓨터에 접속부가 형성될 수도 있다(예컨대, 인터넷 서비스 제공자를 이용하는 인터넷을 통해서).
예시적인 실시예가 본 발명의 예시적인 실시예에 따른 방법, 장치(시스템) 및 컴퓨터 프로그램 제품의 순서도 및/또는 블록도를 참고로 하여 기술되었다. 순서도 및/또는 블록도의 각 블록 및 순서도 및/또는 블록도 내의 블록들의 조합은 컴퓨터 프로그램 명령어에 의해 구현될 수 있다. 이러한 컴퓨터 프로그램 명령어는 범용 컴퓨터, 전용 컴퓨터, 또는 장치를 생산하기 위한 다른 프로그램가능한 데이터 프로세싱 장치의 프로세서로 제공되어, 컴퓨터의 프로세서 또는 다른 프로그램가능한 데이터 프로세싱 장치를 통해 실행하는 명령어가 순서도 및/또는 블록도의 블록 또는 블록들 내에서 명시된 기능/동작을 구현하는 수단을 생성하도록 할 수 있다.
이러한 컴퓨터 프로그램 명령어는 특정한 방식으로 컴퓨터 또는 다른 프로그램가능한 데이터 프로세싱 장치를 함수로 디렉팅할 수 있는 컴퓨터-판독가능한 매체 내에 저장되어, 컴퓨터-판독가능한 매체 내에 저장된 명령어가 순서도 및/또는 블록도의 블록 또는 블록들 내에 명시된 기능/동작을 구현하는 명령어 수단을 포함하는 제조 물품을 생산하도록 할 수 있다.
컴퓨터 또는 다른 프로그램가능한 장치 상에서 수행될 일련의 동작 단계들이 컴퓨터 구현된 프로세스를 생성하도록 하기 위해, 컴퓨터 프로그램 명령어는 컴퓨 터 또는 다른 프로그램가능한 데이터 프로세싱 장치로 로딩될 수도 있으며, 그에 따라 컴퓨터 또는 다른 프로그램가능한 장치 상에서 실행되는 명령어가 순서도 및/또는 블록도의 블록 또는 블록들에 명시된 기능/동작을 구현하기 위한 프로세스를 제공할 수 있다.
도면들 내의 순서도 및 블록도는 본 발명의 다양한 실시예에 따른 아키텍처, 기능성 및 시스템, 방법 및 컴퓨터 프로그램 제품의 가능한 동작 구현을 도시한다. 이와 관련하여, 순서도 또는 블록도 내의 각 블록은 명시된 논리적 기능(들)을 구현하기 위해 하나 이상의 실행가능한 명령어를 포함하는 모듈, 세그먼트, 코드의 일부를 나타낼 수 있다. 일부 다른 구현에서, 블록 내에 기술된 기능은 도면 내에 기록된 순서가 아닌 다른 순서로 발생할 수 있다. 예를 들어, 연속으로 도시된 두 개의 블록들은 사실, 포함된 기능성에 따라서 실질적으로 동시에 실행될 수 있으나, 또는 때때로 이 블록들은 역순으로 실행될 수 있다. 블록도 및/또는 순서도의 각 블록과, 블록도 및/또는 순서도의 블록들의 조합은 특정한 기능 또는 동작을 수행하는 전용 하드웨어 기반 시스템에 의해서, 또는 전용 하드웨어와 컴퓨터 명령어의 조합에 의해서 구현될 수 있다.
예시적인 실시예가 가상 링크 맵핑으로의 가상 채널을 이용하여 가상 계층들에 걸쳐 트래픽 타입들을 분화하는 메커니즘을 정의하기 때문에, 예시적인 실시예의 메커니즘을 이해하기 위해서, I/O 가상화가 하이퍼바이저(hypervisor) 또는 다른 가상화 플랫폼을 이용하는 시스템 내에 구현될 수 있는 방법을 먼저 이해하는 것이 중요하다. 예시적인 실시예가 PCIe 어답터 또는 엔드포인트와 관련하여 기술 될 것이지만, 본 발명이 이것으로 제한되는 것은 아님을 이해해야 한다. 오히려, 예시적인 실시예의 메커니즘은 I/O 어답터 내의 I/O 가상화를 지원하는 임의의 I/O 패브릭에서 구현될 수 있다. 또한, 예시적인 실시예가 하이퍼바이저가 활용되는 구현의 측면에서 기술될 것이지만, 본 발명이 이것으로 제한되지는 않음을 이해해야 한다. 반면에, 현재 알려져 있거나 후에 개발될 소프트웨어, 하드웨어, 또는 소프트웨어와 하드웨어의 임의의 조합으로 구현되는 하이퍼바이저가 아닌 다른 가상화 플랫폼 타입이 본 발명의 사상 및 범주로부터 벗어나지 않고 사용될 수 있다.
도 2는 당업계에서 일반적으로 알려진 시스템 가상화를 도시하는 예시적인 도면이다. 시스템 가상화는 물리적 시스템의 프로세서, 메모리, I/O 어답터, 스토리지 및 다른 리소스의 분할이며, 이때 리소스의 세트 각각은 자신만의 시스템 이미지 인스턴스 및 애플리케이션을 가지고 독립적으로 운영한다. 이러한 시스템 가상화에서, 가상 리소스는 물리적 리소스로부터 구성되어, 예를 들어 메모리, 디스크 드라이브 및 동일한 외부 인터페이스 및 기능부를 구비하는 설계된 인터페이스/기능부를 갖는 다른 하드웨어 구성요소와 같은 물리적 리소스에 대한 프록시로서 동작한다. 시스템 가상화는 전형적으로 가상 리소스를 생성하여 그들을 물리적 리소스로 맵핑함으로써 가상 리소스들 간의 분리를 제공하는 가상화 층을 이용한다. 가상화 층은 전형적으로 소프트웨어, 펌웨어 및 하드웨어 메커니즘 중 하나 또는 이들의 조합으로 제공된다.
도 2에 도시된 바와 같이, 전형적으로 가상화된 시스템에서, 애플리케이션(210)은 특정 가상 리소스 및 물리적 리소스가 할당되는 범용 운영 시스템 또는 전용 운영 시스템과 같은 소프트웨어 구성요소인 시스템 이미지(SI)(220)와 통신한다. 시스템 이미지(220)는 예로서 가상화된 프로세서, 메모리, I/O 어답터, 스토리지 등과 같은 단일 SI 인스턴스를 실행하는 데에 필요한 물리적인 또는 가상화된 리소스로 이루어진 가상 시스템(230)과 관련된다.
가상 시스템(230)을 사용함으로써, 시스템 이미지(220)가 가상화 층(240)에 의해 물리적 시스템 리소스(250)로 액세스한다. 가상화 층(240)은 SI로의 리소스 할당을 관리하며 SI로 할당된 리소스가 다른 SI에 의해 액세스되는 것을 막는다. 이러한 할당과 단절은 가상화 층(240)에 의해 수행되는 리소스 맵핑과 가상화 층(240)에 의해 유지되는 하나 이상의 리소스 맵핑 데이터 구조에 기초하여 종종 수행된다.
이러한 가상화는 I/O 동작 및 I/O 리소스의 가상화를 허용하는 데에 사용될 수 있다. 즉, I/O 가상화(IOV)와 관련하여, 단일 물리적 I/O 유닛이 하이퍼바이저로서 부분적으로 또는 전체로 구현될 수 있는 가상화 층(240)을 사용하여 둘 이상의 SI에 의해 공유될 수 있다. 하이퍼바이저는 예를 들어 하나 이상의 구성, I/O, 및 SI 및 DMA(direct memory access)로부터의 메모리 동작에 대한 방해(intervening)를 통해 IOV를 지원하고, 완료하며, SI로의 동작을 인터럽트하는 데에 사용되는 소프트웨어, 펌웨어 등일 수 있다.
도 3은 가상화 층을 이용하여 PCI 루트 컴플렉스의 가상화 I/O로의 제 1 접근법을 도시한 예시적인 도면이다. 도 3에 도시된 바와 같이, 칩의 하나 이상의 프로세서일 수 있는 호스트 프로세서 셋(310), 마더보드, 블레이드 등이, 애플리케 이션(도시되지 않음)이 PCIe 엔드포인트(370-390)와 같은 시스템 리소스에 액세스할 수 있게 하는 복수의 시스템 이미지(320-330)를 지원할 수 있다. 시스템 이미지는 가상화 층(340), PCIe 루트 컴플렉스(350) 및 하나 이상의 PCIe 스위치(360), 및/또는 그외의 PCIe 패브릭 소자를 통해 가상화된 리소스와 통신한다.
도 3에 도시된 접근법을 이용하여, 하이퍼바이저 또는 가상화 플랫폼의 다른 타입으로서 부분적으로 또는 전체로 구현될 수 있는 가상화 층(340)이 모든 I/O 트랜잭션 내에 포함되고 모든 I/O 가상화 함수를 수행한다. 예를 들어, 가상화 층(340)은 다양한 SI의 I/O 큐로부터의 I/O 요청을 PCIe 엔드포인트(370-390) 내의 단일 큐 상으로 멀티플렉싱한다. 따라서, 가상화 층(340)은 SI(320-330)와 물리적 PCIe 엔드포인트(370-390) 사이의 프록시로서의 역할을 한다.
도 4는 본질적으로 공유되는 PCI I/O 어답터를 이용하여 PCI 루트 컴플렉스의 가상화 I/O를 위한 제 2 접근법을 도시한 예시적인 도면이다. 도 4에 도시된 바와 같이, 칩, 마더보드, 블레이드 등의 하나 이상의 프로세서일 수 있는 호스트 프로세서 셋(410)은, PCIe I/O 가상화(IOV) 엔드포인트(470-490)와 같이 애플리케이션(도시되지 않음)이 시스템 리소스에 액세스할 수 있게 하는 복수의 시스템 이미지(420-430)를 지원할 수 있다. 시스템 이미지(420-430)는 PCIe 루트 컴플렉스(440) 및 하나 이상의 PCIe 스위치(460) 및/또는 다른 PCIe 패브릭 소자를 통해 가상화된 리소스와 통신한다.
PCIe 루트 컴플렉스(440)는 하나 이상의 어드레스 번역 및 보호 테이블 데이터 구조, 인터럽트 테이블 데이터 구조 등 IOV 인에이블된 엔드포인트(470-490)를 갖는 I/O 동작의 가상화를 용이하게 하는 것을 포함할 수 있는 루트 컴플렉스 가상화 인에이블러(enabler)(RCVE)(442)를 포함한다. 어드레스 번역 및 보호 테이블 데이터 구조는 예로서 가상화된 리소스를 위해 가상 어드레스와 실제 어드레스 간의 어드레스 번역을 수행하고, SI로의 가상 리소스의 맵핑에 기초한 가상 리소스로의 액세스를 제어하며, 그외의 가상화 동작을 수행하기 위한 PCIe 루트 컴플렉스(440)에 의해 사용될 수 있다. 이러한 루트 컴플렉스 인터럽트 테이블 데이트 구조는 PCIe 메모리 어드레스 공간을 통해 액세스 가능하며, 예를 들어 SI와 관련된 적절한 인터럽트 조작기로 인터럽트를 맵핑하는 데에 사용된다.
도 3에 도시된 접근법에서와 같이, 가상화 층(450)은 도 4의 가상화 구조 내에 제공된다. 가상화 층(450)은 PCIe 스위치(460)로 연결될 수 있는 비-IOV 인에이블된 PCIe 엔드포인트와 사용된다. 즉, 하이퍼바이저 또는 그외의 가상화 플랫폼으로서 부분적으로 또는 전체적으로 구현될 수 있는 가상화 층(450)은, 상호성을 가지지 않는, 즉 엔드포인트에 대해 내부적이고 I/O 가상화(IOV)를 지원하는 이러한 PCIe 엔드포인트에 대해 도 3과 관련하여 전술된 것과 유사한 방식으로 PCIe 엔드포인트와 활용된다.
IOV 인에이블된 PCIe 엔드포인트(470-490)에 있어서, 가상화 층(450)은 SI로부터 개시되는 메모리 맵핑된 입력/출력(MMIO) 동작 또는 PCIe 엔드포인트(470-490)로부터 개시된 디렉트 메모리 액세스(DMA) 동작과 같은 메모리 어드레스 공간 동작 내에 포함되지 않고 구성 트랜잭션 목적을 위해 우선적으로 사용된다. 반대로, 데이터는 SI(420-430) 사이에서 이동하며 엔드포인트(470-490)는 가상화 층(450)에 의한 개입없이 직접 수행된다. SI(420-430)와 엔드포인트(470-490) 사이의 디렉트 I/O 동작은 예를 들어 IOV 인에이블된 PCIe 엔드포인트(470-490)의 빌트-인 I/O 가상화 로직, 예컨대 논리적 함수 및 가상 함수 및 RCVE(442)의 방식으로 가능해진다. 디렉트 I/O 동작을 수행하는 능력은 I/O 동작이 수행될 수 있는 속도를 크게 증가시키지만, PCIe 엔드포인트(470-490)가 I/O 가상화를 지원하 것을 필요로 한다.
도 5는 PCIe I/O 가상화(IOV) 인에이블된 엔드포인트의 예시도이다. 도 5에 도시된 바와 같이, PCIe IOV 엔드포인트(500)는 PCIe 패브릭의 PCIe 스위치 등과의 통신이 수행될 수 있도록 하는 PCIe 포트(510)를 포함한다. 내부 라우팅(520)은 구성 관리 함수(530) 및 복수의 가상 함수(VF)(540-560)로의 통신 게이트웨이를 제공한다. 구성 관리 함수(530)는 가상 함수(540-560)에 상반되는 물리적 함수(PF)일 수 있다. PCI 명세에서 사용되는 용어로서의 물리적 "함수"는, 단일 구성 공간에 의해 표현되는 논리의 세트이다. 다시 말하면, 물리적 "함수"는 예를 들어 분리가능하지 않은 리소스(570) 내에 제공될 수 있는 것과 같은 메모리 내의 함수의 관련된 구성 공간에 저장된 데이터에 기초하여 구성된 회로 로직이다.
구성 관리 함수(530)는 가상 함수(540-560)를 구성하는 데에 사용될 수 있다. 가상 함수는 예로서 링크와 같은 하나 이상의 물리적 엔드포인트 리소스를 공유하고, 예를 들어 다른 함수와 PCIe IOV 엔드포인트(500)의 공유가능한 리소스 풀(580) 내에 제공될 수 있는 I/O 가상화 인에이블된 엔드포인트 내의 함수이다. 가상 함수는, 하이퍼바이저에 의한 런-타임 개입없이, 시스템 이미지로부터의 메모 리 동작 및 I/O에 대한 직접적인 싱크일 수 있으며, DMA(Direct Memory Access), 완료 및 시스템 이미지(SI)에 대한 인터럽트 동작의 소스일 수 있다.
PCIe 어답터/엔드포인트는 PCIe 어답터/엔트포인트에 의해 지원되는 "함수"와 관련된 다수의 서로 다른 타입의 구성을 가질 수 있다. 예를 들어, 엔드포인트는 단일 물리적 함수(PF), 복수의 독립적 PF, 또는 복수의 종속적 PF를 지원할 수 있다. 본질적인 I/O 가상화를 지원하는 엔드포인트에서, 엔드포인트에 의해 지원되는 각 PF는 하나 이상의 가상 함수(VF)와 관련될 수 있으며, 이들 스스로는 다른 PF와 관련된 VF에 대해 종속적일 수 있다. 물리적 함수와 가상 함수 사이의 예시적인 관계가 도 6 및 7에 도시되었다.
도 6은 네이티브 가상화 없는 단일 루트 엔드포인트의 물리적 함수 및 가상 함수를 도시한 예시적인 도면이다. "단일 루트 엔드포인트"라는 용어는 단일 루트 노드, 즉 단일 호스트 시스템의 단일 루트 컴플렉스와 관련된 엔드포인트를 지칭한다. 단일 루트 엔드포인트와 함께, 엔드포인트는 단일 루트 컴플렉스와 관련된 복수의 시스템 이미지(SI)에 의해 공유될 수 있지만, 동일하거나 서로 다른 루트 노드 상의 복수의 루트 컴플렉스들 사이에서는 공유될 수 없다.
도 6에 도시된 바와 같이, 루트 노드(600)는 PCIe 엔드포인트(670, 690), I/O 가상화 매개부(630)(전술된 바와 같이 사용됨), PCIe 루트 컴플렉스(640) 및 하나 이상의 PCIe 스위치(650) 및/또는 그외의 PCIe 패브릭 소자와 통신하는 복수의 시스템 이미지(610, 612)를 포함한다. 루트 노드(600)는 단일 루트 PCIe 구성 관리(SR-PCIM) 유닛(620)을 더 포함한다. SR-PCIM 유닛(620)은 루트 컴플렉 스(640), 하나 이상의 PCIe 스위치(650) 등을 포함하는 PCIe 패브릭 및 엔드포인트(670-690)를 관리한다. SR-PCIM(620)의 관리 책임은, 어느 함수가 어느 SI(610, 612)로 할당될 것인지의 결정 및 엔드포인트(670-690)의 구성 공간의 셋업을 포함한다. SR-PCIM(620)은 어느 리소스가 어느 SI(610, 612)로 할당될 것인가와 관련하여 시스템 관리자 또는 로드 밸런싱 소프트웨어와 같은 사용자로부터의 SI의 성능 및 입력에 기초하여 다양한 엔드포인트(670-690)의 함수를 구성할 수 있다. SI의 성능은 얼마나 많은 어드레스 공간이 엔드포인트(670-690)로 할당되도록 이용가능한지, 얼마나 많은 인터럽트가 엔드포인트(670-690)로 할당되도록 사용가능한지 등을 포함하는 다양한 팩터(factor)들을 포함할 수 있다.
각각의 PCIe 엔드포인트(670-690)는 하나 이상의 물리적인 함수(PF)를 지원할 수 있다. 하나 이상의 PF는 서로 독립적일 수 있거나 또는 일부 방식에서 서로에 대해 종속적일 수 있다. PF는 벤더(vendor) 정의된 함수 종속성에 기초하여 다른 PF에 종속적일 수 있으며 이때 하나의 PF는 예를 들어 적절하게 동작하기 위해서 다른 PF의 동작 또는 다른 PF에 의해 생성된 결과를 요청한다. 도시된 예시에서, PCIe 엔드포인트(670)는 서로 다른 타입의 1 내지 M의 복수의 독립적 PF, 즉 PF0에서 PFN을 지원한다. 예를 들어 이더넷 기능 및 광섬유 채널 기능과 같은 PF 또는 VF의 기능성과 관련된 타입은 서로 다른 타입의 기능이다. 엔드포인트(690)는 종속적인 둘 이상의 PF를 갖는 서로 다른 타입의 복수의 PF를 지원한다. 도시된 예시에서, PF0는 PF1에 종속적이거나 또는 그 역이 성립한다.
도 6에 도시된 예시에서, 엔드포인트(670-690)는 I/O 가상화 매개물(IOVI)(630)에 의해 이용가능해진 가상화 메커니즘을 통한 시스템 이미지(SI)(610, 612)에 의해 공유된다. 전술된 바와 같이, 이러한 구성에서, IOVI(630)는 SI(610, 612)와 PCIe 엔드포인트(670-690) 사이의 모든 PCIe 트랜잭션에 포함된다. 개별적인 PCIe 엔드포인트(670-690)는, 가상화의 핸들링의 버든(burden)이 IOVI(630) 상에 전체적으로 위치되어있기 때문에, 그들 스스로 가상화를 지원할 필요가 없다. 그 결과, 가상화에 대해 알려진 메커니즘이 이러한 구성에서 사용될 수 있지만, I/O 동작이 수행될 수 있는 레이트는 IOVI(630)가 모든 I/O 동작 내에 포함되어 있지 않은 경우 I/O 레이트에 대한 퍼텐셜에 비교하였을 때 비교적 낮다.
도 7은 네이티브 I/O 가상화에 대해 인에이블되는 단일 루트 엔드포인트의 물리적 함수 및 가상 함수를 도시한 예시적인 도면이다. 도 7에 도시된 구성은 PCIe 엔드포인트(770-790)가 I/O 가상화(IOV)를 내부적으로 지원한다는 점, 즉 엔드포인트 자신들 내부에서 지원한다는 일부 중요한 차이점을 제외하면 도 6의 구성과 유사하다. 그 결과, 도 6의 I/O 가상화 매개물(630)은, 구성 동작에 대한 과정을 제외하면 IOV 인에이블된 PCIe 엔드포인트(770-790)와 관련하여 효율적으로 제거될 수 있다. 그러나, 만약 비-IOV 인에이블된 PCIe 엔드포인트(도시되지 않음)가 예로서 리거시 엔드포인트와 같은 구성 내에서 사용되면, I/O 가상화 매개물은 시스템 이미지(710, 712) 사이의 이러한 비-IOV 인에이블된 PCIe 엔드포인트의 공유를 핸들링하기 위해 도 7에 도시된 소자와 관련하여 사용될 수 있다.
도 7에 도시된 바와 같이, IOV 인에이블된 PCIe 엔드포인트(770-790)는 하나 이상의 독립적인 또는 종속적인 가상 함수(VF)와 관련될 수 있는 하나 이상의 독립적 또는 종속적인 물리적 함수(PF)를 지원할 수 있다. 이러한 맥락에서, PF는 물리적 오류 및 이벤트와 같은 엔드포인트 함수를 관리하는 데에 사용되고 VF의 세트를 관리하기 위해 SR-PCIM(720)에 의해 사용된다. PF와 관련된 구성 공간은 PF와 관련된 VF의 최대 개수, 다른 PF 및 VF와 PF 및 VF의 조합 등을 포함하는 VF의 성능을 정의한다.
VF는 IOV 인에이블된 PCIe 엔드포인트(770-790) 상에서 예로서 메모리 공간, 큐, 인터럽트 등과 같은 리소스에 액세스하도록 SI에 의해 사용된다. 따라서, 서로 다른 VF가 특정한 PF를 공유할 각 SI(710, 712)에 대해 생성된다. VF는 상응하는 PF의 구성 공간 내의 SR-PCIM(720)에 의한 VF의 개수의 설정에 기초한 엔드포인트(770-790)에 의해 생성된다. 이러한 방식으로, PF는 복수의 SI(710, 720)에 의해 공유될 수 있도록 PF가 가상화된다.
도 7에 도시된 바와 같이, VF 및 PF는 다른 VF와 PF에 대해 종속적일 수 있다. 전형적으로 만약 PF가 종속적인 PF이면, 해당 PF와 관련된 모든 VF는 종속적일 것이다. 따라서, 예를 들어, PF0의 VF가 PF1의 상응하는 VF에 종속적일 수 있다.
도 7에 도시된 구성에서, SI(710, 712)는 I/O 가상화 매개물에 의한 연관에 대한 필요 없이 I/O 인에이블된 PCIe 엔드포인트(770-790)를 가지고 PCI 루트 컴플 렉스(730) 및 PCIe 스위치(740)를 통해 직접 통신할 수 있으며, 그 역도 성립한다. 이러한 직접 통신은, 엔드포인트(770-790) 내에 PF 및 VF를 구성한 엔드포인트(770-790) 및 SR-PCIM(720)에서 제공된 IOV 지원에 의해 가능하게 된다.
SI와 엔드포인트 사이의 직접 통신은 I/O 동작이 복수의 SI(710, 712)와 공유된 IOV 인에이블된 PCIe 엔드포인트(770-790) 사이에서 수행될 수 있는 속도를 크게 증가시킨다. 그러나, 이러한 수행 인핸스먼트를 가능하게 하도록, PCIe 엔드포인트(770-790)는 가상 함수(VF)를 지원하고 관리하기 위해 엔드포인트(770-790)의 물리적 함수(PF) 및 SR-PCIM(720) 내의 메커니즘을 제공함으로써 I/O 가상화를 지원해야 한다.
PCIe 계층의 전술된 설명은 단일 루트 계층으로 제한되었다. 다시 말하면, PCIe 엔드포인트는 오직 단일 PCI 루트 컴플렉스(730)와 관련된 단일 루트 노드(700) 상의 SI(710, 712)과만 공유된다. 전술된 메커니즘은 PCIe 엔드포인트를 공유하는 복수의 루트 컴플렉스에 대한 지원을 제공하지 않는다. 따라서, 복수의 루트 노드는 PCIe 엔드포인트의 리소스로의 공유된 액세스를 제공받지 못할 수 있다. 이것은 엔드포인트의 개별적인 세트가 각 루트 노드에 대해 요구되기 때문에 이러한 구성을 이용하는 시스템의 스케일가능성을 제한한다.
본 명세서의 예시적인 실시예는, 복수의 PCI 루트 컴플렉스가 IOV 인에이블된 PCIe 엔드포인트의 동일한 세트로의 액세스를 공유할 수 있는 멀티-루트 I/O 가상화를 사용한다. 그 결과, 이러한 각각의 PCI 루트 컴플렉스와 관련된 시스템 이미지는 각각의 루트 노드 상의 각각의 SI에 대한 위치 내에 있는 가상화의 보호를 이용하여 IOV 인에이블된 PCIe 엔드포인트 리소스의 동일한 세트로의 액세스를 각각 공유할 수 있다. 따라서, 스케일가능성은 IOV 인에이블된 PCIe 엔드포인트의 동일한 현존하는 세트를 공유할 수 있는 상응하는 PCI 루트 컴플렉스와 루트 노드의 추가를 허용하기 위한 메커니즘을 제공함으로써 최대화된다.
도 8은 일 예시적인 실시예에 따른 멀티-루트 가상화된 I/O 토폴로지를 도시한 예시적인 도면이다. 도 8에 도시된 바와 같이, 복수의 루트 노드(810, 820)에는 단일 루트 PCI 구성 관리자(SR-PCIM)(812, 822), 하나 이상의 시스템 이미지(SI)(814, 816, 824, 826) 및 PCI 루트 컴플렉스(818, 828)을 구비하는 각 루트 노드가 제공된다. 예를 들어 블레이드 서버 내의 블레이드일 수 있는 이러한 루트 노드(810, 820)는, 하나 이상의 MRA PCIe 스위치(840) 및/또는 다른 PCIe 패브릭 소자를 포함할 수 있는 PCIe 스위치 패브릭의 하나 이상의 멀티-루트 인식(PRA) PCIe 스위치(840)로 연결된다. MRA 스위치(840)는, MRA 스위치(840)가 서로 다른 루트 노드들의 개별적이고 구분적인 어드레스 공간을 유지할 것이 요구되는 메커니즘을 포함하고 추가적인 루트 노드를 위한 접속을 갖는다는 점에서, 도 7에 도시된 비-MRA 스위치(740)와는 다른 타입이다.
이들 루트 노드(810, 820)에 추가하여, 멀티-루트 PCI 구성 관리자(MR-PCIM)(832) 및 상응하는 PCI 루트 컴플렉스(834)를 포함하는 제 3 루트 노드(830)가 제공된다. MR-PCIM(832)은 아래에서 더욱 상세하게 기술되는 바와 같이, 도 8에 도시된 멀티-루트(MR) 토폴로지 내의 가상 계층을 발견 및 구성하는 역할을 담당한다. 따라서, MR-PCIM(832)은 복수의 루트 노드의 복수의 루트 컴플렉스와 관 련된 엔드포인트의 물리적 함수 및 가상 함수를 구성한다. SR-PCIM(812, 822)은 그들의 관련된 단일 루트 컴플렉스의 물리적 함수 및 가상 함수를 구성한다. 다시 말하면, 아래에서 보다 자세하게 기술되는 바와 같이, MR-PCIM은 전체로서 MR 토폴로지를 보는 반면, SR-PCIM은 MR 토폴로지 내의 자신 고유의 가상 계층만을 본다.
도 8에 도시된 바와 같이, IOV 인에이블된 PCIe 엔드포인트(850, 860)는 하나 이상의 가상 엔드포인트(VE)(852, 854, 862, 864)를 지원한다. VE는 루트 컴플렉스로 할당된 물리적 함수 및 가상 함수의 세트이다. 따라서, 예를 들어, 개별적인 VE(852, 862)가 루트 노드(810)의 PCI 루트 컴플렉스(818)에 대해 IOV 인에이블된 PCIe 엔드포인트(850, 860) 상에 제공된다. 유사하게, 개별적인 VE(854, 864)가 루트 노드(820)의 PCI 루트 컴플렉스(828)에 대한 IOV 인에이블된 PCIe 엔드포인트(850) 상에 제공된다.
각 VE는 계층 내의 종료 노드로서의 VH 및 VE의 루트로서 단일 루트 컴플렉스를 구비하는 가상 계층(VH)으로 할당된다. VH는 루트 컴플렉스 또는 SR-PCIM으로 할당된 완전히 기능적인 PCIe 계층이다. VE 내의 모든 물리적 함수(PF) 및 가상 함수(VF)가 동일한 VH로 할당된다.
각 IOV 인에이블된 PCIe 엔드포인트(850, 860)는 기본 함수(BF)(859, 869)를
지원한다. BF(859, 869)는 상응하는 엔드포인트(850, 860)의 VE를 관리하기 위해 MR-PCIM(832)에 의해 사용되는 물리적인 함수이다. 예를 들어, BF(859, 869)는 상응하는 엔드포인트(850, 860)의 VE로 함수를 할당하는 역할을 맡는다. MR-PCIM(832)은 엔드포인트(850, 860) 내의 각 PF로의 VH 개수의 할당을 허용하는 구 성 BF의 구성 공간 내의 필드를 사용함으로써 VE로 함수를 할당한다. 예시적인 실시예에서, 엔드포인트마다 오직 하나의 BF가 존재할 수 있지만, 본 발명이 이것으로 제한되는 것은 아니다.
도 8에 도시된 바와 같이, 각 VE(852, 854, 862, 864)는 자신 고유의 물리적 함수 및 가상 함수의 세트를 지원할 수 있다. 전술된 바와 같이, 이러한 함수의 세트는 독립적인 물리적 함수, 종속적인 물리적 함수 및 이들과 관련된 독립적/종속적인 가상 함수를 포함할 수 있다. 도 8에 도시된 바와 같이, VE(852)는 자신의 관련된 가상 함수(VF)를 갖는 단일의 물리적 함수(PF0)를 지원한다. VE(854)는 유사하게 자신의 관련된 가상 함수(VF)를 갖는 단일의 물리적 함수(PF0)를 지원한다. VE(862)는 복수의 독립적인 물리적 함수(PF0-PFN) 및 그들의 관련된 가상 함수(VF)를 지원한다. 그러나, VE(864)는 복수의 종속적인 물리적 함수(PF0-PFN)를 지원한다.
VE(852, 854, 862, 864)는 SI가 액세스되는 VH로 VE가 할당될 때, 그리고 SI가 액세스되는 VH로 VE가 할당되기만 해도, 또한 그 역인 경우에도, 루트 노드(810, 820)의 SI(814, 816, 824, 826)과 직접 통신할 수 있다. 엔드포인트(850, 860) 자신은, 전술된 바와 같은 단일 루트 I/O 가상화 및 본 예시적인 실시예와 관련하여 기술된 바와 같은 멀티-루트 I/O 가상화를 지원해야만 한다. 이러한 요구는 토폴로지가 복수의 루트 컴플렉스를 지원하지만 개별적인 루트 노드는 가상 계층에 기초한 자신의 관련된 단일 루트만을 본다는 사실에 기초한다.
도 9는 예시적인 실시예에 따른 루트 노드의 루트 컴플렉스의 관점으로부터 멀티-루트 가상화된 I/O 토폴로지의 가상 계층 모습을 도시한 예시적인 도면이다. 도 9에 도시된 바와 같이, 멀티-루트(MR) 토폴로지가 도 8에 도시된 바와 같을 수 있지만, 각 개별적인 루트 노드의 각 루트 컴플렉스는 오직 자신의 MR 토폴로지의 일부만을 나타낸다. 따라서, 예를 들어, 루트 노드(810)와 관련된 PCI 루트 컴플렉스(818)는 자신의 호스트 프로세서 세트, 자신의 시스템 이미지(SI)(814, 816), MRA 스위치(840) 및 자신 고유의 가상 엔드포인트(VE)(852, 862)를 본다. 그러나, 이러한 가상 계층 내에는 완전한 PCIe 기능성이 존재하며, PCI 루트 컴플렉스(818)는 VE, 루트 컴플렉스, 시스템 이미지 등 자신 고유의 가상 계층의 일부가 아닌 것을 보지 않는다.
도 10은 일 예시적인 실시예에 따라 IOV 인에이블된 엔드포인트, 또는 어답터가 사용되는 시스템 구조의 예시적인 도면이다. 도 10에 도시된 메커니즘은 도 4에 도시된 메커니즘과 관련하여 구현될 수 있다. 예를 들어, SR(single root) 또는 MR(multiple root) PCIM일 수 있는 도 10에 도시된 바와 같은 PCI 관리자(PCIM)(1003)는, 도 4의 시스템 이미지 1(420)과 관련하여 제공될 수 있는 반면, 도 10의 클라이언트 파티션(1004)은 도 4의 시스템 이미지 2(430)와 관련하여 제공될 수 있다. 유사하게, 도 10의 I/O 패브릭(1011)은 도 4의 PCIe 스위치(460)를 포함할 수 있고, IOV 엔드포인트(1014)는 도 4의 임의의 하나의 PCIe 엔드포인트(470-490)와 유사할 수 있으며, 엔드포인트(1015, 1016)는 도 3의 엔드포인트(370-390)와 같은 IOV 인에이블된 엔드포인트 또는 비-IOV 인에이블된 엔드포인 트일 수 있다.
도 10에 도시된 바와 같이, 시스템(1001)은 예로서 서버, 클라이언트 컴퓨팅 디바이스 등의 임의의 데이터 프로세싱 디바이스일 수 있는 호스트 시스템(1026), 하나 이상의 통신 링크 및 하나 이상의 스위치를 포함할 수 있는 I/O 패브릭(1011)(예컨대, PCIe 패브릭) 및 일 예시적인 실시예에서 PCIe I/O 엔드포인트일 수 있는 하나 이상의 I/O 엔드포인트(1014-1016)를 포함하며, 이때 I/O 엔드포인트(1014)는 I/O 가상화(IOV) 인에이블된 엔드포인트인 반면, 다른 엔드포인트(1015-1016)는 IOV 인에이블되거나 또는 비-IOV 인에이블된 엔드포인트일 수 있다. 호스트 시스템(1026)은 데이터 프로세싱 디바이스의 언더라잉 하드웨어, 논리적 파티션(LPARS)(1003, 1004) 및 상응하는 파티션 펌웨어(PFW)(1023, 1024)인 플랫폼 하드웨어(1010)를 포함한다. 예시적인 실시예는 본 명세서에서 하이퍼바이저(1025)를 사용하는 것과 관련하여 기술되었지만, 다른 타입의 가상화 플랫폼이 전술된 바와 같은 본 발명의 사상 및 범주로부터 벗어나지 않는 한 이용될 수 있다.
일 예시적인 실시예에서, 하이퍼바이저(1025)는 플랫폼 하드웨어(1010) 상에서 실행되는 코드일 수 있으며, 이는 플랫폼의 펌웨어의 일부이다. 유사하게, 파티션 펌웨어(PFW)(1023-1024)는 플랫폼의 펌웨어의 일부일 수 있지만, 그들이 논리적으로 LPAR 내에서 실행되는 LPAR의 코드의 일부로 논리적으로 간주되기 때문에 LPAR(1003, 1004)와 관련하여 도시되었다.
LPAR(1003, 1004)는 할당된 리소스 및 LPAR 내에서 실행되는 운영 시스템 이 미지 또는 인스턴스를 갖는다. 또한, LPAR(1003, 1004)는 LPAR 내의 다른 애플리케이션, 소프트웨어, 코드 등을 실행시킬 수 있다. 예를 들어, LPAR 중 예시적인 실시예에 대한 특정한 중요도를 가지고, 예로서 LPAR(1003)는 LPAR(1003)가 예로서 SR-PCIM과 같은 단일 루프 통신 패브릭 관리자 또는 MR-PCIM(1003)과 같은 멀티-루트 통신 패브릭 관리자로서 동작하도록 하는 코드를 실행시킨다(아래에서는 단순하게 집합적으로 "PCIM"로 지칭됨). 다른 LPAR(1004)는 클라이언트 파티션으로서 동작할 수 있다. 오직 하나의 PCIM(1003) 및 하나의 PCIM(1004)가 도 10에 도시되었지만, 하나 이상의 PCIM(1003) 및 클라이언트 파티션(1004)이 예시적인 실시예의 사상 및 범주로부터 벗어나지 않는 한 호스트 시스템(1026) 내에 제공될 수 있음을 이해할 것이다.
하이퍼바이저(1025)는 IOV 엔드포인트(1014)의 구성 공간(1019, 1021)으로 액세스하고, I/O 패브릭(1011) 구성 공간(1017)으로 액세스한다. 본 명세서에서 지칭되는 "구성 공간"이라는 용어는 시스템(1001)의 특정한 구성요소에 대한 구성 데이터를 저장하는 데에 사용되도록 할당된, 호스트 운영 시스템에 의한 어드레스가능성에 대해 호스트 운영 시스템에 의해 맵핑되는 I/O 어답터 상의 메모리인 메모리 맵핑된 I/O(MMIO) 어드레스 공간으로부터의 해체(disjoint) 어드레스 공간을 지칭한다. 또한, PCIM의 운영 시스템(1031) 및 디바이스 드라이버(1005)는 그들이 PCIM(1003)으로 할당되었을 때 물리적 함수(PF)(1012)에 대한 구성 공간(1019)으로 액세스되고, PCIM(1003)으로 할당된 PF에 속하는 가상 함수(VF)의 구성 공간(1021)으로 액세스된다.
호스트 시스템(1026) 상에 존재할 수 있거나 또는 개별적인 데이터 프로세싱 디바이스(도시된 바와 같음) 내에 존재할 수 있음) HMC(하드웨어 관리 콘솔)(1009) 상의 관리 애플리케이션(1040) 및 HMC(1009) 자신은 RMC 인터페이스(1002)를 통해 PCIM(1003) 및 클라이언트 파티션(1004)으로 통신하고 동일한 타입의 인터페이스(1020)를 통해 하이퍼바이저(1025)로 통신한다. 관리 애플리케이션(1040)(아래에서 간단히 집합적으로 HMC(1009)로 지칭됨)은 시스템(1001) 내의 다양한 구성요소에 걸친 기능을 제어하는 지휘자로서의 역할을 하고, 사람을 위한 사용자 인터페이스(1042)를 제공하여 시스템 구성을 보고 어느 리소스가 어느 LPAR(1003-1004)로 할당되기를 원하는지에 대한 정보를 입력하도록 한다. 관리 애플리케이션(1040)은 아래에서 보다 상세하게 기술되는 바와 같이 사용자에 의해 실시될 수 있는 다수의 서로 다른 기능을 제공할 수 있다. 이와 달리, 이러한 함수는 이러한 함수의 개시를 입력 트리거링하거나 이벤트에 응답하는 사용자 개입없이도 자동으로 실시될 수 있다.
예시적인 실시예에 따라 아래에서 기술되는 바와 같이, 이러한 기능 중 일부는 우선권 그루핑(priority grouping)에 따라 트래픽 클래스가 가상 채널로 그리고 가상 채널이 가상 링크로 맵핑되기 위한 맵핑 데이터 구조의 생성 또는 확립을 포함한다. 또한, 아래에서 기술되는 바와 같이, 이러한 기능은 이러한 맵핑을 이용하여 통신 패브릭 관리자를 구성하기 위한 함수를 더 포함하여, 라인 헤드의 블로킹을 방지하기 위해서 이들이 다수의 트래픽 클래스의 데이터 및 우선권 그룹을 적절한 가상 링크로 적절하게 라우팅할 수 있다.
전술된 바와 같이, 가상 채널은 PCIe 단일-루트 계층 내의 복수의 독립적 플로우의 생성을 가능케 하는 반면, PCI 익스프레스 멀티-루트 계층 내의 복수의 독립 플로우의 생성을 가능케 한다. 멀티-루트 시스템의 각 가상 계층은 단일 가상 채널을 가상 링크로 할당할 수 있다. 그러나, 단일 가상 링크를 공유하는 복수의 트래픽 타입은 라인 헤드의 블로킹을 발생시킬 수 있다. 따라서, 보다 긴 전송 시간을 갖는 트래픽은 보다 적은 대기시간을 필요로 하는 트래픽을 차단할 수 있다. 예시적인 실시예는 보다 느린 트래픽이 보다 긴 대기를 갖는 민감한 트래픽을 블로킹하는 것을 방지하기 위해 우선권 그룹을 트래픽 클래스, 가상 채널 및 가상 링크로 할당하기 위한 메커니즘을 정의한다.
도 11은 MR-IOV 시스템에 걸친 라인 헤드(HOL) 블로킹을 생성하는 가상 링크를 도시한 예시적인 도면이다. MR-IOV 명세는 도 11에 도시된 바와 같이 가상 채널(VC)로부터 가상 링크(VL)로의 맵핑을 가능케 한다. 예를 들어, 도 11에 도시된 바와 같이, 도시된 예시에서 블레이드 서버(1105)의 블레이드(1110)인 컴퓨팅 시스템(1105)의 제 1 컴퓨팅 디바이스(1110)는, VH1로 도면에 표시된 제 1 가상 계층(VH)의 루트 노드와 관련되며, 예컨대 이 루트 노드이다. 제 2 컴퓨팅 디바이스(1120)는 제 2 가상 계층(VH2)의 루트 노드와 관련되고, 예컨대 이 루트 노드이며, 제 3 컴퓨팅 디바이스(1130)는 제 3 가상 계층(VH3)과 관련된다. 서로 다른 가상 계층은 서로 다른 가상 채널(VC0-VC1)과 관련될 수 있다. 각각의 가상 링크(VL), 즉 VL0 및 VL1은 단일한 가상 계층(VH)과 관련된 이러한 VL에 걸쳐 데이터 통신할 수 있다.
알 수 있는 바와 같이, 각 VL에 대한 우선권 그룹을 정의하지 않고, VH VC 쌍의 임의 배치가 도 11에 도시된 구성을 발생시킬 수 있다. 즉, 서로 다른 가상 계층의 컴퓨팅 디바이스(1110-1130)는 MR PCIe와 컴퓨팅 디바이스(1110-1130) 사이의 논리적 접속을 제공하는 가상 링크(VL)에 걸쳐 라우팅될 데이터, 즉 트래픽을 전송할 수 있다. 각각의 VL, 즉 VL0 및 VL1은, 다양한 가상 계층(VH)과 관련된 이러한 VL에 걸친 데이터 통신을 할 수 있다. 그 결과, 박스(1150)에 도시된 바와 같이, 프로세서에 대해 보다 많은 프로세서 사이클을 필요로 하거나 또는 다른 데이터보다 프로세싱 타임라인네스(timelineness)에 대한 보다 낮은 종속성을 갖는 보다 느린 트래픽일 수 있는 VH1으로부터 VCO에 걸친 데이터는, 예로서 Vh3 VC1 상에서의 데이터 트래픽과 같이, 프로세스에 대해 상대적으로 적은 수의 프로세서 사이클을 필요로 하는 더 빠른 트래픽으로서, 예로서 VL0과 같은 동일한 가상 링크 상에서 라우팅될 수 있다. 즉, 예를 들어, HPC 트래픽은 짧은 대기 또는 응답(즉, 더 빠른 트래픽)에 의존하는 작은 패킷을 생성할 수 있는 반면, 스토리지 트래픽은 더 느린 양상(즉, 더 느린 트래픽)을 허용할 수 없는 더 큰 블록 데이터이다. 각 트래픽 클래스의 시그니처는 애플리케이션 환경에 의존하여 달라질 수 있다. 예를 들어, HPC 데이터는 큰 블록일 수 있는 반면 스토리지 트래픽은 작은 블록일 수 있다.
더 느린 트래픽과 더 빠른 트래픽이 동일한 가상 링크 상에서 라우팅될 수 있다는 사실은 가상 링크(VL)의 버퍼 내의 더 빠른 트래픽 VH3 VC1의 앞의 더 느린 트래픽 VH1 VC0의 라인 헤드(HOL) 블로킹을 발생시킬 수 있다. 또한, 예를 들어 제 1 가상 계층 VH1과 관련된 블레이드(1110)와 같은 하나의 시스템 또는 컴퓨팅 디바이스는 다른 시스템 또는 예로서 제 3 가상 계층 VH3과 관련된 블레이드(1130)와 같은 컴퓨팅 디바이스의 트래픽을 본질적으로 블로킹할 수 있다. 바이패스 큐는 HOL 블로킹이 발생하는 경우 킥(kick)할 수 있지만, 바이패스 큐 리소스는 제한되며 런아웃될 것이며, 결과적으로 HOL 블로킹을 발생시킬 것이다. 바이패스 큐는 또한 그들이 구현되는 방식으로부터 상당한 성능 오버헤드를 발생시킬 수도 있다.
도 12는 MR-IOV 시스템에 걸친 라인 헤드 블로킹을 방지하기 위해 트래픽 클래스가 호스트 블레이드마다 가상 링크 상에 맵핑되는 예시적인 일 실시예의 예시적인 도면이다. 우선권 그룹과 가상 래인들의 연관은, 그들 자신의 우선권 그룹 내의 더 빠른 트래픽을 배치하고 가상 링크(VL)와 그들의 우선권 그룹을 연관시킴으로써 라인 헤드 블로킹을 방지할 수 있다. 이것은 하나의 우선권 그룹 내의 더 느린 트래픽이 다른 우선권 그룹 내의 더 빠른 트래픽을 블로킹하는 것을 방지한다. 추가적으로 이것은 서로 다른 성능 목표를 가지는 경우, 하나의 호스트 시스템, 또는 가상 계층(VH)이 다른 호스트 시스템, 또는 가상 시스템(VH)을 블로킹하는 것을 방지한다. 이것은 예시적인 실시예가 자신의 우선권과 트래픽이 갈 시스템 블레이드에 기초한 트래픽을 분화하는 것을 허용한다. 예시적인 실시예에서, 만약 버퍼 리소스가 혼잡해지면, 혼잡은 오직 특정한 시스템 블레이드로 가는 트래픽의 특정한 우선권에만 영향을 미친다. 예를 들어, 만약 VH1/VC3의 조합과 관련된 가상 링크(VL)가 혼잡해지면, 오직 시스템 블레이드 1(VH1)로의 HPC 트래픽(VC3)만이 혼잡해질 것이다. 중요하게 인지해야 할 예시적인 실시예의 일 측면 은, 예시적인 실시예가 웨이트된(weighted) 트래픽을 구현할 능력을 제공한다는 것이다. 예를 들어, 만약 트래픽의 하나의 우선권이 있거나, 또는 시스템 내에서 사용되는 것보다 더 중요하고 광범위한 하나의 특정한 시스템 블레이드가 있으면, 보다 많은 버퍼 리소스가 해당 트래픽 또는 시스템 블레이드의 우선권으로 할당되어 특정한 블레이드로 가는 특정한 트래픽 우선권 그룹이 쉽게 혼잡해지지 않는 것을 보장하도록 할 수 있다.
예시적인 실시예의 메커니즘을 이용하여, 예를 들어 블레이드 서버 시스템의 시스템 블레이드일 수 있는 상응하는 가상 계층의 루드 노드를 연결시킬 수 있는 컴퓨팅 디바이스(1210-1230) 내의 PCI 관리자(1202, 1204, 1206)는, 트래픽 클래스를 가상 채널로 맵핑하고, 궁극적으로는 전송되는 트래픽의 우선권에 기초하여 가상 링크로 맵핑하기 위해 맵핑 테이블로 프로그램된다. 따라서, 서로 다른 가상 계층들이 데이터, 즉 트래픽을 전송할 수 있으며, 이것은 가상 채널(VCO-VC3) 중 서로 다른 채널들에 걸쳐 라우팅된다. 각 VH의 VC는 아래에서 더 상세하게 기술되는 바와 같이 특정한 우선권 그룹과 연관될 수 있다. VH와 VC의 조합은 예컨대 VL1-VL12와 같은 특정한 가상 링크(VL)로 맵핑될 수 있다.
예시적인 실시예에서, VH와 VC의 각 조합은 개별적인 가상 링크로 맵핑될 수 있다. 따라서, 동일한 VH 및 VC은 서로 다른 트래픽 클래스들의 트래픽이 동일한 가상 계층과 연관된 동일한 가상 채널 상에서 전송/수신될 수 있도록 서로 다른 트래픽 클래스로 맵핑될 수 있지만, 이러한 트래픽 클래스들은 자신들과 관련된 동일한 우선권 그룹을 갖는다. 그러나, VH와 VC의 각 조합은 동일한 우선권 그룹과 관 련된 트래픽이 가상 계층, 또는 트래픽이 관련된 시스템 블레이드 및 특정한 트래픽 우선권(가상 채널(VC)과 연관됨)의 조합에 기초하여 서로 다른 가상 링크 상에서 전송될 수 있도록, 개별적인 가상 링크(VL)로 맵핑된다.
도 12에 도시된 바와 같이, 가상 링크(VL)의 각각은 자신들 고유의 VH와 VC의 연관된 조합을 갖는다. VC가 특정한 우선권 그룹에 상응하기 때문에, 각각의 VL은 따라서 특정한 VH로부터의 트래픽의 서로 다른 우선권과 관련된다. VH가 특정한 호스트 시스템, 또는 시스템 블레이드와 연관되기 때문에, 각 VL은 특정한 호스트 시스템 또는 시스템 블레이드, 및 해당 호스트 시스템 또는 시스템 블레이드와 연관된 트래픽의 우선권과 연관된다. 예를 들어, 가상 링크(VL1)는 VH1 및 VC0과 연관되고, 이것은 블레이드(1210) 및 우선권 그룹 "Management"에 해당한다. 가상 링크 VL2는 VH1 및 VC0과 연관되고, 이것은 블레이드(1220) 및 우선권 그룹 "Management"에 해당한다. 유사하게, 가상 링크 VL6는 VH3 및 VC1과 연관되고, 이것은 블레이드(1230) 및 우선권 그룹 "SAN"에 해당한다. 가상 링크 VL10은 VH1 및 VC3와 연관되고, 이것은 블레이드(1210) 및 우선권 그룹 "HPC"에 해당한다. 다른 가상 링크 VL들은 유사하게 서로 다른 VH와 VC의 조합을 가지며, 이것은 서로 다른 블레이드(1210-1230)와 우선권 그룹의 조합에 해당한다.
다양한 컴퓨팅 디바이스 또는 시스템(1210-1230)으로부터의 트래픽은 트래픽의 가상 채널(VC)(멀티-루트 I/O 가상화) 또는 트래픽 클래스(TC)(단일-루트 I/O 가상화)에 기초하여 다양한 가상 링크 VL1 내지 VL12로 맵핑 및 라우팅될 수 있다. 따라서, 컴퓨팅 디바이스(1210)로부터의 트래픽은 전송되는 트래픽의 트래픽 클래 스에 의존하여, PCI 관리자(1202, 1204, 1206)에 의해 멀티-루트 PCIe 스위치(1240)의 가상 링크 VL1-VL12 중 임의의 것으로 라우팅될 수 있다. 트래픽이 라우팅되는 특정한 가상 링크 VL1-VL12는 데이터, 또는 트래픽 뿐 아니라 트래픽의 트래픽 클래스(TC)를 전송하는 블레이드(1210-1230)의 VH의 맵핑에 기초하여 결정된다. TC는 블레이드(1210-1230)의 VH의 특정한 VC로 맵핑되며, VC와 VH의 조합은 어느 VL로 트래픽이 라우팅되는지를 결정하는 데에 사용된다.
따라서, 예를 들어, 단일-루트 I/O 가상화에서, "HPC"의 우선권 그룹과 연관된 트래픽 클래스(TC)를 갖는 블레이드(1210), 즉 VH1로부터의 트래픽은, 맵핑될 것이고 PCI 관리자(1202)에 의해서 가상 채널 VC3로 라우팅될 것이다. VH1과 VC3의 조합은 도시된 예시의 가상 링크 VL10에 해당한다. 유사하게, 동일한 "HPC" 우선권 그룹과 연관된 트래픽 클래스를 갖는 컴퓨팅 디바이스, 또는 블레이드(1220-1230)로부터의 트래픽은 그들 각각의 PCI 관리자(1204, 1206)에 의해 각각 가상 링크 VL11 및 VL12로 맵핑된다. 유사하게, 다른 우선권 그룹으로 맵핑되는 트래픽 클래스를 갖는 컴퓨팅 디바이스, 블레이드(1210-1230)의 각각으로부터의 트래픽은 PCI 관리자(1202, 1204, 1206)에 의해 적절한 가상 링크 VL1-VL9로 맵핑 및 라우팅된다.
도 12에 도시된 바와 같이, PCI 관리자(PCIM)(1202-1206)는 맵핑 모듈(1250-1254) 및 맵핑 테이블 데이터베이스(1260-1264)를 포함한다. 맵핑 모듈(1250-1254)은 가상 계층(VH) 및 트래픽 클래스(TC)에 기초하여 PCIM(1202-1206)를 통과하는 트래픽을 맵핑하고, VC 및 VH 조합을 특정한 가상 링크(VL)로 맵핑한다. 맵 핑 테이블 데이터베이스(1260-1264)는 트래픽 클래스 및 가상 계층으로부터 가상 채널로, 궁극적으로는 우선권 그룹으로 맵핑하는, 또는 그 역으로 맵핑하는 방법을 명시하고, 가상 채널로부터 가상 링크로 또는 그 역으로 맵핑하는 방법 등을 명시하는 맵핑 테이블 데이터를 저장한다. 아래에서 기술되는 바와 같이, 맵핑 테이블 데이터베이스(1260-1264) 내에 저장된 맵핑 테이블 데이터는 도 10 내의 HMC(1009)와 같은 하드웨어 관리 콘솔(HMC)에 의해 PCI 관리자(1202-1206)로 제공될 수 있다.
맵핑 테이블 데이터베이스(1260-1264) 내의 맵핑 테이블(들)은 트래픽을 컴퓨팅 디바이스 또는 블레이드(1210-1230)로부터 예를 들어 가상 링크 VL4 내지 VL7로, 또는 그 역으로 맵핑 및 라우팅하는 방법을 결정할 때 PCIM(1202-1206)의 맵핑 모듈(1250-1254)에 의해 수행되는 맵핑 검색 동작에 대한 기초로서 사용될 수 있다. 따라서, 예를 들어, 데이터 플로우가 컴퓨팅 디바이스 또는 블레이드(1210) 상에서 실행되는 프로세스로부터 PCIM(1202)로 흐를 때, PCIM(1202)의 맵핑 모듈(1250)은 데이터와 관련된 가상 계층(VH) 및 트래픽 클래스(TC)를 결정한다. 이러한 결정은 도 15 및 16과 관련하여 아래에서 기술되는 바와 같이, 예를 들어 엔드포인트 및 스위치 내의 구성 데이터에 기초하여 이루어질 수 있다. 구성 데이터와 관련된 PCIe 패킷은 아래에서 기술되는 도 14에 도시된 맵핑 정보의 사용을 가능케 하거나 또는 구현하도록 데이터로 태그(tag)될 수 있는 헤더를 갖는다. 이러한 정보는 VH 및 TC에 상응하는 가상 채널(VC)을 결정하기 위해 맵핑 테이블 데이터베이스(1260) 내의 맵핑 테이블(들)과 사용된다. VC 및 VH는 데이터가 MR PCIe 스위치(1240)로 전송될 VH 및 VC의 조합과 관련된 가상 링크(VL)를 선택하는 데에 사용된다. PCIM(1250)은 선택된 가상 링크(VL) 상에서 MR PCIe 스위치(1240)의 적절한 포트로 컴퓨팅 디바이스 또는 블레이드(1210)로부터의 트래픽에 상응하는 데이터를 라우팅할 수 있다.
이러한 방식으로, VC는 우선권 그룹을 정의하고, 우선권 그룹은 관리자가 트래픽 클래스(TC)로부터 VC로 그리고 VH/VC 조합으로부터 VL로의 적절하게 할당할 수 있도록 관리 애플리케이션 층에서 사용된다. 일반적으로 MR-PCIM은 어느 VC ID가 사용될 것인가 또는 VH 내에서 동작하는 소프트웨어에 의해 어떻게 할당될 것인가에 대한 선행 지식을 갖지 않기 때문에, 사용자는 VC 투 VL 맵핑을 사용할 수 없다. 예시적인 실시예에 의해 제공된 바와 같이, 이러한 맵핑에 기초한 PCIe 엔드포인트를 구성하기 위한 메커니즘 및 VC로부터 우선권 그룹으로의 맵핑을 위한 관리 애플리케이션의 사용 없이, 우선권 그룹이 PCIe 표준에 의해 허용된 동일한 VL 상에서 혼합되었을 때 라인 헤드 블로킹은 도 11과 관련하여 전술된 바와 같이 발생할 수 있다.
일 예시적인 실시예에서, 맵핑 테이블(들)은 예로서 도 10의 HMC(1009)와 같은 하드웨어 관리 콘솔(HMC)을 통해 특권화된 사용자, 자동화된 메커니즘 등에 의해 맵핑 테이블 데이터베이스(1260-1264)로 프로그램될 수 있다. 도 13은 예로서 VH1(1320)과 같은 단일 계층, 단일-루트 I/O 가상화(SR-IOV) 트래픽 클래스(TC)(1330)를 가상 채널(VC)(1310)로 맵핑하고, 이를 후속하여 우선권 그룹(1340)으로 맵핑하는 것을 도시한 예시적인 도면이다. 우선권 그룹(1340)은 단 일-루트 및 멀티-루트 환경을 스패닝한다. 도 13에 도시된 바와 같이, 하나의 우선권 그룹(1340) 내의 모든 TC(1330)는 동일한 가상 채널 VC(1310)로 할당된다. 따라서, 예를 들어 우선권 그룹 "HPC"에 있어서, 트래픽 클래스 TC7 및 TC3는 우선권 그룹 "LAN"에 대해 동일한 가상 채널 VC3으로 할당되고, 트래픽 클래스 TC6 및 TC2는 가상 채널 VC2로 할당된다.
따라서, 단일 가상 계층(VH) 내에서, 동일한 가상 채널(VC)은 동일한 우선권 그룹에 해당한다. 그러나, 서로 다른 트래픽 클래스(TC)는 동일한 가상 채널(VC)과 관련될 수 있다. 복수의 가상 계층(VH)은 전술된 바와 같이 멀티-루트 I/O 가상화(MR-IOV) 인에이블된 아키텍처로 결합될 수 있다. 따라서, MR-IOV 환경에서, 도 13에 도시된 테이블의 복수의 복제본이 존재할 수 있거나, 또는 이러한 테이블이 단일 맵핑 테이블 내에 결합될 수 있다. 그러나, 각각의 가상 계층에 있어서, 서로 다른 TC들이 동일한 VC와 관련되어 제 1 VH에서 TC7이 VC1에 해당하고, 제 2 VH에서, TC7이 VC4에 해당할 수 있도록 할 수 있다. 그 결과, 예로서 TC7과 같은 동일한 트래픽 클래스는 그들의 서로 다른 가상 채널로의 서로 다른 맵핑으로 인해 서로 다른 가상 계층(VH) 내의 서로 다른 우선권 그룹에 해당할 수 있다.
도 14는 일 예시적인 실시예에 따른 호스트 시스템 블레이드마다 우선권 그룹에 대한 가상 링크로의 가상 채널의 하드웨어 유지 콘솔 맵핑을 도시한 예시적인 도면이다. 이 도면은 도 13에 도시된 단일 루트 환경인 VH1, VH2 및 VH3의 VC들이 어떻게 멀티-루트 환경에서 가상 링크로 맵핑되는지를 도시한다. 또한, 이 도면은 어떻게 HMC가 도 12에 도시된 멀티-루트 환경에 대한 맵핑을 수행하는지도 도시한 다. 이러한 맵핑은 호스트 블레이드마다 할당된 서로 다른 우선권 그룹들에 대해 라인 헤드 블로킹을 방지한다. 본질적으로, 도 14는 각 VH, 예로서 각 물리적 서버, 블레이드 등이 개별적으로 관리된다면 자신의 고유한 TC 투 VC 맵핑을 갖지만, 개별적인 VL에 대한 VH 및 VC의 조합의 글로벌 맵핑도 존재한다는 것을 도시한다. 각 VH에 대해서 서로 다른 맵핑들이 존재할 수 있지만, 하나의 시스템, 또는 블레이드에 의한 다른 시스템 또는 블레이드의 라인 헤드 블로킹을 방지하도록 특정한 VH 및 VC에 기초한 VL를 분리시키기 위해 도 14에 도시된 바와 같이 이들을 적절하게 맵핑하느 것이 중요하다.
도 14에 도시된 바와 같이, 도시된 예시에서, 각 VH 내의 VC3는 HPC 우선권 그룹과 관련되지만, 어느 VH를 검색하는지에 의존하여, 해당 VH의 HPC 우선권 트래픽은 다른 VL과 관련된다. 따라서, 예를 들어, VH1에 대한 VC3 트래픽은 VL10과 관련되는 반면, VH2에 대한 VC3는 도 14의 맵핑 데이터 구조 내의 VL11과 관련된다. VC 및 VH의 각 조합은 서로 다른 우선권의 트래픽이 각 VH로부터의 서로 다른 가상 링크 상에서 전송되도록 개별적인 VL을 가지고 있음을 이해해야 한다. 본질적으로, 서로 다른 우선권 및 서로 다른 시스템 또는 블레이드의 트래픽은 멀티-루트 시스템에 걸쳐서 예로서 트래픽의 VC와 같은 트래픽의 우선권 및 시스템/블레이드의 특정 조합에 기초하여 라우팅된다. 이러한 라우팅은 예시적인 실시예에 의해 제공되는 맵핑 구조 및 메커니즘 덕분에 달성될 수 있다. 개별적인 VL 상의 서로 다른 VH로부터의 서로 다른 우선권 트래픽을 배치함으로써, 서로 다른 시스템 상의 서로 다른 그룹들 사이에서의 라인 헤드 블로킹이 방지된다.
따라서, 예시적인 실시예의 메커니즘에서, 특정한 VH의 TC는 VC로 맵핑되고, VH/VC의 조합은 개별적인 VL로 맵핑된다. 이러한 방식으로, 예시적인 실시예의 맵핑 테이블(들)을 사용하는 맵핑 동작 및 예시적인 실시예의 메커니즘은, 서로 다른 시스템/블레이드 및 서로 다른 우선권 그룹에 대한 라인 헤드 블로킹을 방지한다. 서로 다른 우선권 그룹 및 서로 다른 시스템/블레이드의 모든 트래픽이 서로 다른 가상 링크와 관련되기 때문에, 라인 헤드 블로킹이 방지된다. 그 결과, 더 낮은 우선권 트래픽, 더 높은 우선권 트래픽, 또는 서로 다른 시스템/블레이드의 동일한 우선권 트래픽이라 할지라도 현재 시스템/블레이드 상의 트래픽에 대한 성능 열화를 발생시킬 수 없다.
도 15는 개별적인 SR-IOV 시스템에 대한 TC/VC 맵핑 테이블 데이터 구조를 도시한 예시적인 도면이다. 이러한 TC/VC 맵핑 테이블은 예를 들어 PCI-SIG 웹사이트로부터 입수가능한 PCI Express Base Specification 개정판 1.1, 페이지 428에 기술된 가상 채널 확장 성능 구조의 VC 리소스 제어 레지스터에 저장될 수 있다. VC 리소스 컨트롤 제어는 VC 리소스를 할당한다. TC/VC 맵핑 테이블 데이터 구조는 기준화된 함수(가상 또는 물리적 함수) 또는 엔드포인트에 대한 TC 투 VC의 맵핑을 기술한다. 엔드포인트는 복수의 함수일 수 있고 각 함수는 자신의 고유의 TC/VC 맵을 가질 수 있다. 물리적 함수는 단일 VH로 할당된다. 단일 함수 디바이스는 엔드포인트가 하나의 TC/VC 맵을 가짐을 의미한다.
각 SR-IOV 시스템은 도 12에 예시되고 도 14의 맵핑 테이블 데이터 구조에서 개별적인 엔트리로서 도시된 바와 같은 가상 계층 VH을 나타낸다. 도 15에 도시된 예시에서, TC/VC 맵핑 테이블 데이터 구조는 도 13에서 전술된 TC/VC 맵핑을 나타내기 위해 데이터 값으로 포퓰레이트되었다(populated). 예를 들어, 도 15에서, VC ID 값 "000"은 VC0에 해당하고, 관련된 값 "00010001"은 도 13의 테이블에 도시된 바와 같이 TC의 4 및 0에 해당한다. 인에이블 비트는 사용할 VC ID와 관련된 VC를 인에이블한다(VC의 인에이블링에 대한 추가 정보를 위해 PCI Express Base Specification 개정판 1.1, 페이지 428을 참조하여라). 도 13 및 14의 구현은 PCIe 엔드포인트 상에 셋업되는 구성 공간을 나타낸다.
도 16은 도 14로부터 가상 채널로부터 가상 링크로의 맵핑을 이용하는 MR-IOV 디바이스 함수 테이블을 도시한 예시적인 도면이다. 우선권 그룹 맵핑은 HMC를 사용하여 생성되고 MR-PCIM으로 전달된다. MR-PCIM은 예시적인 실시예에 따라 도 14로부터 가상 채널에서 가상 링크로의 맵핑을 갖는 디바이스 함수 테이블을 구성한다. 도 16은 예시적인 실시예의 VC 투 VL 맵이 예시적인 실시예의 메커니즘에 따라 HMC에 의해 생성될 수 있는 것과 같이 PCIe 구성 공간 내의 디바이스 함수 테이블 내에 저장되는 방식을 나타낸다.
도 16에서, 제 1 열은 도 15의 비트 0 내지 31과 같은 32 비트 값으로의 비트 필드 포인팅을 나타낸다. 따라서, 예를 들어, 비트 2:0는 제 3 열에 지정된 바와 같은 VC0 VL Map에 상응하는 3 비트 값을 포인팅한다. 비트 3(1610)은 PCI SIG Multi-Root IO Virtualization 1.0 명세에서 보존되지만, 본 명세서의 예시적인 실시예의 맥락에서, 이 비트는 어드레스가능한 가상 링크에 대한 공간을 증가시키는 데에 사용된다. 즉, VL은 VH, VC 쌍과의 일대일 맵핑을 제공하는 데에 사용되고, VC0 VL Map을 명시하기 위해 3 비트를 사용하여, 오직 8개의 VH, VC 쌍이 지원된다. 예시적인 실시예의 메커니즘을 이용하여, 인접하는 보존된 비트(들)가 VC VL 맵핑을 명시하는 데에 사용되는 비트를 확장하도록 사용될 수 있다. 따라서, 예를 들어, 비트 3:0, 즉 비트 3(1610)의 추가가 VC VL Map을 나타내도록 이용될 수 있으며, 그에 따라 적어도 12개의 VH, VC 쌍을 지원할 수 있는 4 비트 값을 제공한다. 또한, 도 16의 모든 VCx VL 맵핑은 4비트로의 VCx VL 맵핑을 증가시키는 데에 사용될 수 있는 인접한 보존되는 비트(1620-1670)를 갖는다.
제 2 열은 예로서 "0001"이 VC0에 해당하는, 특정한 VC 투 VL 맵을 나타내는 16진수 값이다. 비트 4는 VC0 VL 맵핑을 인에이블링하기 위한 인에이블 비트이다. 유사한 비트 값이 VH에 대한 VC1 VL, VC2 VL 및 VC3 VL 맵핑의 각각에 대해 제공된다. 인에이블 비트의 설정은 상응하는 VC 투 VL 맵핑이 이용되는지 아닌지를 나타낸다. 도 16에 도시된 테이블 데이터 구조는 특정한 VC 상의 특정한 호스트 시스템/블레이드(예로서, VH)로부터 흐르는 데이터를, 어느 가상 링크로부터 어디로 라우팅해야 하는가를 결정하기 위해, PCI 관리자, 스위치 등에 의한 맵핑 검색 동작을 용이하게 하도록 전술된 다른 테이블 데이터 구조와 관련하여 사용될 수 있다.
도 13-16에 나타내어진 컴플렉스 맵핑은 오직 세 개의 VH에 대한 것이며 이것은 보다 많은, 예로서 256에 이르는 복수의 VH가 멀티-루트 시스템에서 이용될 때 더 복잡해진다. 이러한 경우 추가적인 VCx VL 맵 비트가 요구될 수 있다.
도 17은 일 예시적인 실시예에 따른 우선권 그룹 맵핑 및 라우팅을 수행하기 위한 예시적인 동작의 윤곽을 나타내는 순서도이다. 도 17에 도시된 바와 같이, 동작은 시스템 관리자와 같은 특권화된 사용자로 시작하거나, 또는 트래픽 클래스(TC)를 예를 들어 도 13과 관련하여 전술된 바와 같은 하드웨어 관리 콘솔(HMC)을 이용하여 단일 가상 계층(VH) 내의 가상 채널(VC)로 할당하는 자동화된 메커니즘 생성 트래픽 클래스(TC)로부터 가상 채널(VC) 맵핑 테이블 데이터 구조로 시작한다(단계(1710)). HMC는 예를 들어 도 10에서 원격 관리 커맨드 인터페이스(1002)를 이용함으로써 SR-PCIM으로 TC 투 VC 맵핑 테이블 데이터 구조를 전달한다(단계(1720)). SR-PCIM은 예를 들어 도 15에 도시된 바와 같은 PCIe 구성 비트 필드를 이용하여 TC 투 VC 맵핑을 갖는 VC 리소스 제어 레지스터를 구성한다(단계(1730)). VC는 스트릭트 스케줄링(strict scheduling), 라운드 로빈(round robin), 또는 SR-PCIM이 VC를 프로그램하는 방법에 따르는 웨이트된 라운드 로빈에 기초하여 중재된다. 단계(1710-1730)와 관련하여 전술된 동작은 구성해야 할 추가적인 SR-IOV 시스템이 있는지를 결정함으로써 각 SR-IOV 시스템에 대해 반복되고(단계(1740)), 만약 그렇다면 다음 SR-IOV 시스템을 위해 단계(1710)로 복귀하며, 이때 각 SR-IOV 시스템은 MR-IOV 시스템 내의 가상 계층(VH)을 나타낸다.
각 SR-IOV 시스템의 TC 투 VC 맵핑 테이블 데이터 구조가 전술된 방식으로 정의되면, 예로서 시스템 관리자와 같은 특권화된 사용자 또는 자동화된 메커니즘은 HMC를 사용하여 각 VH/VC 쌍을 VH/VC 페어 투 VL 맵핑 테이블 데이터 구조 내의 개별적인 가상 링크(VL)로 할당한다(단계(1750)). 이것은 도 14에 도시된 바와 같이 VL이 호스트 블레이드마다 우선권 그룹과 관련되기 때문에, 호스트 블레이드마다 우선화된 그룹을 발생시킨다. HMC는, 우선권 그룹 맵핑을 정의하는 이러한 VH/VC 페어 투 VL 맵핑 테이블 데이터 구조를 예를 들어 도 10의 원격 관리 커맨드 인터페이스(1002)를 사용하여 MR-PCIM으로 전달한다(단계(1760)). MR-PCIM은 예를 들어 도 16에 도시된 바와 같은 PCIe 구성 비트를 사용하여 MR-IOV 디바이스 함수 테이블 맵핑으로부터 함수 VC 투 VL 맵을 구성한다(단계(1770)). 그 다음 동작이 종료된다.
예시적인 실시예의 메커니즘에 따라 맵핑이 셋업되면, 이러한 맵핑은 우선권 그룹에 따라 특정한 트래픽 클래스의 데이터를 적절한 가상 링크로 라우팅하는 데에 사용된다. 예를 들어, 일 예시적인 실시예에서, 도 10의 HMC(1009)는 도 13 및 14에 도시된 맵핑과 같은 예시적인 실시예의 호스트 블레이드마다 우선권 그루핑 맵핑을 갖는다. 예를 들어 RMC 인터페이스(1002)는 데이터를 PCIM(1003)로 전달하는 데에 사용될 수 있다. HMC(1009)는 RMC 인터페이스(1002)를 통해 데이터를 MR-PCIM 또는 개별적인 SR-PCIM으로 전달할 수 있는 단일 관리 인터페이스일 수 있다. SR-PCIM 또는 MR-PCIM은 엔드포인트 및/또는 스위치 내의 PCIe 구성 공간 내에 구성 데이터를 입력할 수 있다.
함수 VC 투 VL 맵이 VH마다 구성된다는 것을 이해해야 한다. 그러나, 이러한 예시의 단순화를 위해, 비트 필드가 각 VH에 대해 동일하다. VL는 스트릭트 우선권 방안, 또는 라운드 로빈(round robin), 또는 MR-PCIM이 그들을 프로그램하는 방법에 따르는 웨이트된 큐잉(queueing)에 기초하여 중재된다.
따라서, 예시적인 실시예는 더 높은 우선권 스레드가 라인 헤드 블로킹으로 인한 더 낮은 우선권 스레드에 의해 블로킹되지 않도록 멀티-루트 환경 내에 트래 픽 타입을 분화하기 위한 메커니즘을 제공한다. 예시적인 실시예의 메커니즘은, 트래픽 분화를 제공하기 위해 우선권 그룹을 가상 링크로 할당하기 위한 시스템 및 방법을 제공하고, 스토리지와 같은 더 느린 트래픽이 HPC 애플리케이션과 같은 더욱 대기시간 민감성인 트래픽을 블로킹하는 것을 방지한다. 예시적인 실시예는 트래픽 클래스를 사용하여 가상 계층에 걸친 트래픽 타입을 가상 채널, 가상 링크 맵핑 성능으로 분화하기 위해 메커니즘을 정의한다. 멀티-루트 시스템의 각 가상 계층은 단일 가상 채널을 가상 링크로 할당할 수 있다. 단일 가상 링크를 공유하는 복수의 트래픽 타입은 라인 헤드 블로킹을 발생시킬 수 있다. 예를 들어 스토리지 트래픽은 가상 링크 상의 HPC 트래픽을 블로킹할 수 있다. 또한 상기 스토리지 트래픽은 상기 HPC 트래픽과 다른 가상 계층으로부터 온 것일 수 있다. 따라서 더욱 긴 전송 시간을 갖는 트래픽은 더 적은 대기시간을 필요로 하는 트래픽을 블로킹할 수 있고 가상 링크를 블로킹하는 더 느린 트래픽은 다른 가상 계층으로부터의 것일 수 있다. 예시적인 실시예는 HPC 애플리케이션과 같이 보다 대기시간에 민감한 트래픽을 스토리지와 같이 더 느린 트래픽이 블로킹하는 것을 방지하기 위해 트래픽 클래스, 가상 채널 및 가상 링크로 우선권 그룹을 할당하는 시스템 및 방법을 정의한다.
전술된 바와 같이, 예시적인 실시예의 측면은 완전한 하드웨어 실시예, 완전한 소프트웨어 실시예 또는 하드웨어와 소프트웨어 소자 모두를 포함하는 실시예의 형태를 취할 수 있다. 일 예시적인 실시예에서, 예시적인 실시예의 메커니즘은 펌웨어, 레지던트 소프트웨어, 마이크로코드 등을 포함하지만 이것으로 제한되는 것 은 아닌 소프트웨어 또는 프로그램 코드로 구현된다.
프로그램 코드를 저장 및/또는 실행하기에 적합한 데이터 프로세싱 시스템은 시스템 버스를 통해 메모리 소자에 직접 또는 간접적으로 연결되는 적어도 하나의 프로세서를 포함할 것이다. 메모리 소자는 실행 중에 벌크 스토리지로부터 검색되어야만 하는 횟수를 감소시키기 위해 적어도 일부 프로그램 코드의 임시 저장을 제공하는 프로그램 코드, 벌크 스토리지 및 캐시 메모리의 실질적인 실행 중에 사용된 로컬 메모리를 포함할 수 있다.
입력 출력 또는 I/O 디바이스(키보드, 디스플레이, 포인팅 디바이스 등을 포함하지만 이것으로 제한되지는 않음)는 개입 I/O 컨트롤러를 통해 또는 직접적으로 시스템으로 연결될 수 있다. 네트워크 어답터는 개인 또는 공용 네트워크 개입을 통해 다른 데이터 프로세싱 시스템 또는 원격 프린터 또는 스토리지 디바이스로 연결되도록 데이터 프로세싱 시스템을 인에이블하기 위해 시스템으로 연결될 수도 있다. 모뎀, 케이블 모뎀 및 이더넷 카드는 네트워크 어답터의 현재 이용가능한 타입 중 아주 작은 일부이다.
본 발명에 대한 설명이 예시 및 설명의 목적으로 기술되었지만, 기술된 형태로 본 발명을 철저하게 제한하는 것은 아니다. 다수의 변경 및 변화가 당업자에게 명백할 것이다. 실시예는 본 발명의 원리, 실질적인 애플리케이션을 가장 잘 설명하고, 당업자가 고려하고 있는 특정한 용도에 적합하도록 다양한 변경을 갖는 다수의 실시예들에 대한 본 발명을 이해할 수 있도록 선택되고 기술되었다.
도 1은 당업계에서 일반적으로 알려진 바와 같은 PCIe 패브릭 토폴로지를 결합하는 시스템을 도시한 예시적인 도면,
도 2는 당업계에서 일반적으로 알려진 바와 같은 시스템 가상화를 도시한 예시적인 도면,
도 3은 가상화 층을 이용하는 PCI 루트 컴플렉스의 가상화 I/O에 대한 제 1 접근을 도시한 예시적인 도면,
도 4는 네이티브(natively) 공유된 PCI I/O 어답터를 사용하는 PCI 루트 컴플렉스의 가상화 I/O에 대한 제 2 접근을 도시한 예시적인 도면,
도 5는 PCIe I/O 가상화 인에이블된 엔드포인트의 예시적인 도면,
도 6은 네이티브 가상화 없는 단일 루트 엔드포인트의 물리적 함수 및 가상 함수를 도시한 예시적인 도면,
도 7은 네이티브 I/O 가상화에 대해 인에이블된 단일 루트 엔드포인트의 물리적 함수 및 가상 함수를 도시한 예시적인 도면,
도 8은 일 예시적인 실시예에 따른 멀티-루트 가상화된 I/O 토폴로지를 도시한 예시적인 도면,
도 9는 일 예시적인 실시예에 따른 루트 노드의 SR-PCIM의 관점으로부터 멀티-루트 가상화된 I/O 토폴로지의 가상 계층 모습을 도시한 예시적인 도면,
도 10은 일 예시적인 실시예에 따른 하드웨어 유지 콘솔(HMC) 및 PCIM을 도시한 예시적인 도면,
도 11은 MR-IOV 시스템에 걸친 라인 헤드 블로킹을 생성하는 가상 링크를 도시한 예시적인 도면,
도 12는 일 예시적인 실시예에 따른 MR-IOV 시스템에 걸친 라인 헤드 블로킹을 방지하도록 호스트 시스템 블레이드 가상 링크마다 맵핑된 트래픽 클래스의 사용을 도시한 예시적인 도면,
도 13은 일 예시적인 실시예에 따른 단일 계층 SR-IOV 트래픽 클래스(TC)의 하드웨어 유지 콘솔 맵핑으로부터의 가상 채널(VC) 맵핑을 도시한 예시적인 도면,
도 14는 일 예시적인 실시예에 따라 호스트 블레이드마다 가상 채널(VC)-가상 링크에서 우선권 그룹으로의 하드웨어 유지 콘솔 맵핑을 도시한 예시적인 도면,
도 15는 일 예시적인 실시예에 따른 개별적인 SR-IOV 시스템에 대한 VC 리소스 컨트롤 레지스터 내의 TC/VC 맵을 도시한 예시적인 도면,
도 16은 일 예시적인 실시예에 따른 가상 채널을 갖는 MR-IOV 디바이스 함수 테이블로부터의 도 14의 가상 링크 맵핑을 도시한 예시적인 도면,
도 17은 일 예시적인 실시예에 따라 호스트 시스템 블레이드에 대한 우선권 그룹 맵핑 및 라우팅을 수행하는 예시적인 동작을 도시한 순서도.
Claims (10)
- 데이터 프로세싱 시스템에서 서로 다른 트래픽 타입들을 분화(differentiate)하는 방법으로서,상기 데이터 프로세싱 시스템 내의 각 단일-루트 가상 계층(single-root virtual hierarchy)에 대해, 복수의 트래픽 클래스 내의 각 트래픽 클래스를 복수의 가상 채널 내의 상응하는 가상 채널과 연관시키는 제 1 맵핑 데이터 구조를 생성하는 단계와,상기 복수의 가상 채널 내의 각 가상 채널을 상기 데이터 프로세싱 시스템의 복수의 가상 링크 내의 상응하는 가상 링크로 맵핑하는 제 2 맵핑 데이터 구조를 생성하는 단계와,상기 제 1 맵핑 데이터 구조 및 상기 제 2 맵핑 데이터 구조에 기초하여, 특정 우선권 그룹(priority group)의 트래픽을 하나의 단일-루트 가상 계층으로부터 상기 복수의 가상 링크 내의 특정한 가상 링크로 라우팅하는 단계를 포함하되,가상 계층과 가상 채널의 각각의 조합은 상기 복수의 가상 링크 내의 서로 다른 가상 링크로 맵핑되는트래픽 타입 분화 방법.
- 제 1 항에 있어서,상기 제 1 맵핑 데이터 구조 및 상기 제 2 맵핑 데이터 구조는 상기 데이터 프로세싱 시스템의 하드웨어 관리 콘솔에 의해 생성되는트래픽 타입 분화 방법.
- 제 2 항에 있어서,상기 하드웨어 관리 콘솔은, 상기 제 1 맵핑 데이터 구조 및 상기 제 2 맵핑 데이터 구조에 기초하여 호스트 시스템의 하나 이상의 통신 패브릭 관리자(communication fabric manager)를 구성하는트래픽 타입 분화 방법.
- 제 1 항에 있어서,상기 데이터 프로세싱 시스템은 복수의 단일-루트 가상 계층을 갖는 멀티-루트 데이터 프로세싱 시스템인트래픽 타입 분화 방법.
- 제 4 항에 있어서,상기 제 1 맵핑 데이터 구조 및 상기 제 2 맵핑 데이터 구조는, 단일-루트 가상 계층의 식별자와 상기 식별자에 의해 식별되는 상기 단일-루트 가상 계층과 관련된 복수의 가상 채널 내의 가상 채널의 조합에 기초하여, 복수의 단일-루트 가상 계층 내의 각각의 단일-루트 가상 계층으로부터 상기 복수의 가상 링크 내의 서로 다른 가상 링크로 데이터를 라우팅하는트래픽 타입 분화 방법.
- 제 1 항에 있어서,상기 제 1 맵핑 데이터 구조 및 상기 제 2 맵핑 데이터 구조에 기초하여 상기 단일-루트 가상 계층으로부터 상기 복수의 가상 링크 내의 상기 특정한 가상 링크로 트래픽을 라우팅하는 단계는,상기 트래픽과 관련된 트래픽 클래스를 결정하는 단계와,상기 단일-루트 가상 계층 및 상기 트래픽 클래스에 상응하는 가상 채널을 식별하도록 상기 제 1 맵핑 데이터 구조 내에서 검색 동작을 수행하는 단계와,상기 가상 채널 및 상기 단일-루트 가상 계층과 관련된 가상 링크를 식별하도록 상기 제 2 맵핑 데이터 구조 내에서 검색 동작을 수행하는 단계와,상기 식별된 가상 링크로 상기 트래픽을 라우팅하는 단계를 포함하는트래픽 타입 분화 방법.
- 제 1 항에 있어서,단일-루트 가상 계층에 있어서, 상기 제 1 맵핑 데이터 구조 내에서 동일한 가상 채널은 동일한 우선권 그룹에 해당하고,상기 동일한 가상 채널은 자신과 관련된 하나 이상의 트래픽 클래스를 갖는트래픽 타입 분화 방법.
- 제 1 항에 있어서,상기 방법은 블레이드 서버 내의 호스트 시스템 블레이드의 PCIe(Peripheral Component Interconnect Express) 관리 구성요소에 의해 구현되는트래픽 타입 분화 방법.
- 컴퓨터 판독가능 프로그램을 갖는 컴퓨터 기록가능한 매체를 포함하는 컴퓨터 프로그램 제품으로서,상기 컴퓨터 판독가능 프로그램은 데이터 프로세싱 시스템 상에서 실행되었을 때 상기 데이터 프로세싱 시스템으로 하여금,상기 데이터 프로세싱 시스템 내의 각 단일-루트 가상 계층에 대해, 복수의 트래픽 클래스 내의 각 트래픽 클래스를 복수의 가상 채널 내의 상응하는 가상 채 널과 연관시키는 제 1 맵핑 데이터 구조를 생성하고,상기 복수의 가상 채널 내의 각 가상 채널을 상기 데이터 프로세싱 시스템의 복수의 가상 링크 내의 상응하는 가상 링크로 맵핑하는 제 2 맵핑 데이터 구조를 생성하고,상기 제 1 맵핑 데이터 구조 및 상기 제 2 맵핑 데이터 구조에 기초하여, 특정 우선권 그룹의 트래픽을 하나의 단일-루트 가상 계층으로부터 상기 복수의 가상 링크 내의 특정한 가상 링크로 라우팅하도록 하되,가상 계층과 가상 채널의 각각의 조합은 상기 복수의 가상 링크 내의 서로 다른 가상 링크로 맵핑되는컴퓨터 프로그램 제품.
- 데이터 프로세싱 시스템으로서,하드웨어 관리 콘솔과,상기 하드웨어 관리 콘솔에 연결된 호스트 시스템을 포함하되,상기 하드웨어 관리 콘솔은,상기 데이터 프로세싱 시스템 내의 각 단일-루트 가상 계층에 대해, 복수의 트래픽 클래스 내의 각 트래픽 클래스를 복수의 가상 채널 내의 상응하는 가상 채널과 연관시키는 제 1 맵핑 데이터 구조를 생성하고,상기 복수의 가상 채널 내의 각 가상 채널을 상기 데이터 프로세싱 시스템의 복수의 가상 링크 내의 상응하는 가상 링크로 맵핑하는 제 2 맵핑 데이터 구조를 생성하고,상기 제 1 맵핑 데이터 구조 및 상기 제 2 맵핑 데이터 구조에 기초하여, 특정 우선권 그룹의 트래픽을 하나의 단일-루트 가상 계층으로부터 상기 복수의 가상 링크 내의 특정한 가상 링크로 라우팅하되,가상 계층과 가상 채널의 각각의 조합은 상기 복수의 가상 링크 내의 서로 다른 가상 링크로 맵핑되는데이터 프로세싱 시스템.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/346,251 | 2008-12-30 | ||
US12/346,251 US8144582B2 (en) | 2008-12-30 | 2008-12-30 | Differentiating blade destination and traffic types in a multi-root PCIe environment |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20100080360A true KR20100080360A (ko) | 2010-07-08 |
KR101104025B1 KR101104025B1 (ko) | 2012-01-06 |
Family
ID=42284852
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020090115690A KR101104025B1 (ko) | 2008-12-30 | 2009-11-27 | 멀티-루트 PCIe 환경에서 블레이드 목적지 및 트래픽 타입의 분화 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8144582B2 (ko) |
KR (1) | KR101104025B1 (ko) |
TW (1) | TWI474181B (ko) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20150125563A (ko) * | 2014-04-30 | 2015-11-09 | 인텔 코포레이션 | 한정된 시스템 내에서 네트워크 데이터 흐름을 최적화하는 방법 |
KR20170046786A (ko) * | 2014-12-08 | 2017-05-02 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 리소스 관리 방법, 호스트 및 엔드포인트 |
KR20180026570A (ko) * | 2013-06-28 | 2018-03-12 | 후아웨이 테크놀러지 컴퍼니 리미티드 | PCIe 패브릭 확장 방법 및 시스템 |
CN110209606A (zh) * | 2019-04-30 | 2019-09-06 | 杭州电子科技大学 | 一种基于PCIe的多接口存储设备的控制方法 |
Families Citing this family (75)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6118776A (en) * | 1997-02-18 | 2000-09-12 | Vixel Corporation | Methods and apparatus for fiber channel interconnection of private loop devices |
US8141093B2 (en) * | 2007-11-15 | 2012-03-20 | International Business Machines Corporation | Management of an IOV adapter through a virtual intermediary in an IOV management partition |
US8141092B2 (en) | 2007-11-15 | 2012-03-20 | International Business Machines Corporation | Management of an IOV adapter through a virtual intermediary in a hypervisor with functional management in an IOV management partition |
US8141094B2 (en) | 2007-12-03 | 2012-03-20 | International Business Machines Corporation | Distribution of resources for I/O virtualized (IOV) adapters and management of the adapters through an IOV management partition via user selection of compatible virtual functions |
US8359415B2 (en) * | 2008-05-05 | 2013-01-22 | International Business Machines Corporation | Multi-root I/O virtualization using separate management facilities of multiple logical partitions |
JP5232602B2 (ja) * | 2008-10-30 | 2013-07-10 | 株式会社日立製作所 | ストレージ装置、及びストレージコントローラ内部ネットワークのデータ経路フェイルオーバー方法 |
US7913024B2 (en) * | 2008-12-09 | 2011-03-22 | International Business Machines Corporation | Differentiating traffic types in a multi-root PCI express environment |
US8144582B2 (en) | 2008-12-30 | 2012-03-27 | International Business Machines Corporation | Differentiating blade destination and traffic types in a multi-root PCIe environment |
US8208396B2 (en) * | 2009-05-12 | 2012-06-26 | International Business Machines Corporation | Discovery and capability exchange management in a virtualized computing platform utilizing a SR-IOV adapter |
US8868814B2 (en) * | 2009-07-06 | 2014-10-21 | Nec Corporation | I/O system, downstream PCI express bridge, interface sharing method, and program |
KR20110020708A (ko) * | 2009-08-24 | 2011-03-03 | 삼성전자주식회사 | Ofdm 시스템에서 셀간 간섭 조정을 위한 제어 채널 구성과 다중화 방법 및 장치 |
CN102110072B (zh) * | 2009-12-29 | 2013-06-05 | 中兴通讯股份有限公司 | 一种多处理器完全互访的方法及*** |
US8271707B2 (en) * | 2010-02-17 | 2012-09-18 | Broadcom Corporation | Method and system for PCI hybrid function |
JPWO2011105303A1 (ja) * | 2010-02-23 | 2013-06-20 | 日本電気株式会社 | 遠隔制御システム、遠隔制御方法、及び遠隔制御用プログラム |
US9852087B2 (en) | 2010-04-20 | 2017-12-26 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Inline PCI-IOV adapter |
US9525647B2 (en) | 2010-07-06 | 2016-12-20 | Nicira, Inc. | Network control apparatus and method for creating and modifying logical switching elements |
US10103939B2 (en) | 2010-07-06 | 2018-10-16 | Nicira, Inc. | Network control apparatus and method for populating logical datapath sets |
US8717895B2 (en) | 2010-07-06 | 2014-05-06 | Nicira, Inc. | Network virtualization apparatus and method with a table mapping engine |
US9680750B2 (en) | 2010-07-06 | 2017-06-13 | Nicira, Inc. | Use of tunnels to hide network addresses |
US8964528B2 (en) | 2010-07-06 | 2015-02-24 | Nicira, Inc. | Method and apparatus for robust packet distribution among hierarchical managed switching elements |
US9135044B2 (en) * | 2010-10-26 | 2015-09-15 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Virtual function boot in multi-root I/O virtualization environments to enable multiple servers to share virtual functions of a storage adapter through a MR-IOV switch |
US8677176B2 (en) | 2010-12-03 | 2014-03-18 | International Business Machines Corporation | Cable redundancy and failover for multi-lane PCI express IO interconnections |
US8543754B2 (en) * | 2011-02-25 | 2013-09-24 | International Business Machines Corporation | Low latency precedence ordering in a PCI express multiple root I/O virtualization environment |
US8972611B2 (en) * | 2011-08-11 | 2015-03-03 | Cisco Technology, Inc. | Multi-server consolidated input/output (IO) device |
WO2013175570A1 (ja) * | 2012-05-22 | 2013-11-28 | 富士通株式会社 | 情報処理装置、制御方法、及び制御プログラム |
US9086919B2 (en) | 2012-08-23 | 2015-07-21 | Dell Products, Lp | Fabric independent PCIe cluster manager |
US10380041B2 (en) | 2012-08-23 | 2019-08-13 | Dell Products, Lp | Fabric independent PCIe cluster manager |
US9075952B2 (en) * | 2013-01-17 | 2015-07-07 | Intel Corporation | Controlling bandwidth allocations in a system on a chip (SoC) |
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 |
US10289467B2 (en) * | 2013-03-28 | 2019-05-14 | Hewlett Packard Enterprise Development Lp | Error coordination message for a blade device having a logical processor in another system firmware domain |
EP2979171A4 (en) | 2013-03-28 | 2016-11-23 | Hewlett Packard Entpr Dev Lp | MEMORY IDENTIFICATION OF A BLADE ELEMENT FOR USE BY A OPERATING SYSTEM OF A PARTITION WITH THIS BLADE ELEMENT |
US9781015B2 (en) | 2013-03-28 | 2017-10-03 | Hewlett Packard Enterprise Development Lp | Making memory of compute and expansion devices available for use by an operating system |
US9094287B2 (en) | 2013-06-13 | 2015-07-28 | Cisco Technology, Inc. | System and method for providing a topology path |
KR102147629B1 (ko) | 2013-11-18 | 2020-08-27 | 삼성전자 주식회사 | 플렉시블 서버 시스템 |
CN103731317B (zh) * | 2013-12-10 | 2017-02-08 | 福建星网锐捷网络有限公司 | 一种pcie地址映射检测的方法及装置 |
US9648148B2 (en) * | 2013-12-24 | 2017-05-09 | Intel Corporation | Method, apparatus, and system for QoS within high performance fabrics |
TWI556174B (zh) * | 2014-03-05 | 2016-11-01 | 威盛電子股份有限公司 | 虛擬功能分配系統、方法及其管理主機 |
US9384033B2 (en) | 2014-03-11 | 2016-07-05 | Vmware, Inc. | Large receive offload for virtual machines |
US9742682B2 (en) | 2014-03-11 | 2017-08-22 | Vmware, Inc. | Large receive offload for virtual machines |
US9755981B2 (en) | 2014-03-11 | 2017-09-05 | Vmware, Inc. | Snooping forwarded packets by a virtual machine |
US20160154756A1 (en) * | 2014-03-31 | 2016-06-02 | Avago Technologies General Ip (Singapore) Pte. Ltd | Unordered multi-path routing in a pcie express fabric environment |
US10110712B2 (en) | 2014-06-04 | 2018-10-23 | Nicira, Inc. | Efficient packet classification for dynamic containers |
US9774707B2 (en) | 2014-06-04 | 2017-09-26 | Nicira, Inc. | Efficient packet classification for dynamic containers |
US9419897B2 (en) | 2014-06-30 | 2016-08-16 | Nicira, Inc. | Methods and systems for providing multi-tenancy support for Single Root I/O Virtualization |
US9692698B2 (en) | 2014-06-30 | 2017-06-27 | Nicira, Inc. | Methods and systems to offload overlay network packet encapsulation to hardware |
US10089129B2 (en) * | 2014-06-30 | 2018-10-02 | International Business Machines Corporation | Supporting flexible deployment and migration of virtual servers via unique function identifiers |
CN106063206B (zh) * | 2015-02-18 | 2020-09-22 | 英特尔公司 | 基于优先级和带宽分配的通信量类别仲裁 |
US9921994B1 (en) * | 2015-02-26 | 2018-03-20 | Marvell International Ltd. | Dynamic credit control in multi-traffic class communication system |
KR102398213B1 (ko) | 2015-03-09 | 2022-05-17 | 삼성전자주식회사 | 저장 장치, 그것을 포함하는 호스트 시스템, 및 그것의 맵 테이블 업데이트 방법 |
US9990327B2 (en) | 2015-06-04 | 2018-06-05 | Intel Corporation | Providing multiple roots in a semiconductor device |
US10157160B2 (en) * | 2015-06-04 | 2018-12-18 | Intel Corporation | Handling a partition reset in a multi-root system |
CN105334920B (zh) * | 2015-10-29 | 2019-03-12 | 上海飞斯信息科技有限公司 | 一种pcie通用信号交换板 |
US10860520B2 (en) * | 2015-11-18 | 2020-12-08 | Oracle International Corporation | Integration of a virtualized input/output device in a computer system |
US10621125B2 (en) * | 2016-06-28 | 2020-04-14 | Nec Corporation | Identifier-based packet request processing |
TWI622884B (zh) * | 2016-11-17 | 2018-05-01 | 宏碁股份有限公司 | 根複合體管理方法及根複合體 |
JP6556404B2 (ja) * | 2017-03-24 | 2019-08-07 | 株式会社日立製作所 | ストレージシステム及びストレージシステムのバックエンド構築方法 |
US10313926B2 (en) | 2017-05-31 | 2019-06-04 | Nicira, Inc. | Large receive offload (LRO) processing in virtualized computing environments |
US11347531B2 (en) * | 2018-10-31 | 2022-05-31 | The Boeing Company | Generalized virtualization platform for systems using hardware abstraction software layers |
KR102588143B1 (ko) | 2018-11-07 | 2023-10-13 | 삼성전자주식회사 | 메모리 컨트롤러를 포함하는 스토리지 장치 및 메모리를 포함하는 전자 시스템을 동작시키는 방법 |
CN111835652B (zh) * | 2019-04-17 | 2024-04-16 | 华为技术有限公司 | 一种数据流的虚拟通道的设置方法及装置 |
DE102019214273A1 (de) * | 2019-09-19 | 2021-03-25 | Siemens Energy Global GmbH & Co. KG | System und Verfahren zum Bereitstellen einer digitalen Nachbildung einer Anlage und entsprechendes Computerprogrammprodukt |
US11962518B2 (en) | 2020-06-02 | 2024-04-16 | VMware LLC | Hardware acceleration techniques using flow selection |
US11636053B2 (en) | 2020-09-28 | 2023-04-25 | Vmware, Inc. | Emulating a local storage by accessing an external storage through a shared port of a NIC |
US11716383B2 (en) | 2020-09-28 | 2023-08-01 | Vmware, Inc. | Accessing multiple external storages to present an emulated local storage through a NIC |
US12021759B2 (en) | 2020-09-28 | 2024-06-25 | VMware LLC | Packet processing with hardware offload units |
US11792134B2 (en) | 2020-09-28 | 2023-10-17 | Vmware, Inc. | Configuring PNIC to perform flow processing offload using virtual port identifiers |
US11875172B2 (en) | 2020-09-28 | 2024-01-16 | VMware LLC | Bare metal computer for booting copies of VM images on multiple computing devices using a smart NIC |
US11593278B2 (en) | 2020-09-28 | 2023-02-28 | Vmware, Inc. | Using machine executing on a NIC to access a third party storage not supported by a NIC or host |
US11561909B2 (en) | 2021-04-28 | 2023-01-24 | Western Digital Technologies, Inc. | Bandwidth allocation for storage system commands in peer-to-peer environment |
CN113806258B (zh) * | 2021-11-16 | 2022-02-18 | 苏州浪潮智能科技有限公司 | 一种动态自适应的虚拟通道映射方法、装置及存储介质 |
US11863376B2 (en) | 2021-12-22 | 2024-01-02 | Vmware, Inc. | Smart NIC leader election |
US11995024B2 (en) | 2021-12-22 | 2024-05-28 | VMware LLC | State sharing between smart NICs |
US11899594B2 (en) | 2022-06-21 | 2024-02-13 | VMware LLC | Maintenance of data message classification cache on smart NIC |
US11928367B2 (en) | 2022-06-21 | 2024-03-12 | VMware LLC | Logical memory addressing for network devices |
US11928062B2 (en) | 2022-06-21 | 2024-03-12 | VMware LLC | Accelerating data message classification with smart NICs |
Family Cites Families (74)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4115854A (en) | 1977-03-28 | 1978-09-19 | International Business Machines Corporation | Channel bus controller |
US5479407A (en) | 1991-05-24 | 1995-12-26 | Ko; Cheng-Hsu | Channel utilization method and system for ISDN |
US5379297A (en) | 1992-04-09 | 1995-01-03 | Network Equipment Technologies, Inc. | Concurrent multi-channel segmentation and reassembly processors for asynchronous transfer mode |
US6247080B1 (en) | 1997-05-13 | 2001-06-12 | Micron Electronics, Inc. | Method for the hot add of devices |
US6005851A (en) | 1997-10-10 | 1999-12-21 | Nortel Networks Corporation | Adaptive channel control for data service delivery |
US5941972A (en) | 1997-12-31 | 1999-08-24 | Crossroads Systems, Inc. | Storage router and method for providing virtual local storage |
AU6255199A (en) | 1998-09-17 | 2000-04-17 | Tod Mcnamara | System and method for network flow optimization using traffic classes |
US6618380B1 (en) | 1999-09-09 | 2003-09-09 | Lucent Technologies Inc. | Priority queueing |
US6633580B1 (en) | 2000-03-07 | 2003-10-14 | Sun Microsystems | N×N crossbar packet switch |
US6961838B2 (en) | 2000-06-02 | 2005-11-01 | Hewlett-Packard Development Company, L.P. | Generating updated virtual disks using distributed mapping tables accessible by mapping agents and managed by a centralized controller |
US6594712B1 (en) | 2000-10-20 | 2003-07-15 | Banderacom, Inc. | Inifiniband channel adapter for performing direct DMA between PCI bus and inifiniband link |
US20030005068A1 (en) | 2000-12-28 | 2003-01-02 | Nickel Ronald H. | System and method for creating a virtual supercomputer using computers working collaboratively in parallel and uses for the same |
US6842857B2 (en) | 2001-04-12 | 2005-01-11 | International Business Machines Corporation | Method and apparatus to concurrently boot multiple processors in a non-uniform-memory-access machine |
US6880002B2 (en) | 2001-09-05 | 2005-04-12 | Surgient, Inc. | Virtualized logical server cloud providing non-deterministic allocation of logical attributes of logical servers to physical resources |
US7093024B2 (en) | 2001-09-27 | 2006-08-15 | International Business Machines Corporation | End node partitioning using virtualization |
DE20207862U1 (de) * | 2002-05-21 | 2002-09-26 | TRW Airbag Systems GmbH & Co. KG, 84544 Aschau | Schlauchgasgenerator |
US7565398B2 (en) | 2002-06-27 | 2009-07-21 | International Business Machines Corporation | Procedure for dynamic reconfiguration of resources of logical partitions |
US7836211B2 (en) | 2003-01-21 | 2010-11-16 | Emulex Design And Manufacturing Corporation | Shared input/output load-store architecture |
US20040158834A1 (en) | 2003-02-06 | 2004-08-12 | International Business Machines Corporation | Apparatus and method for dynamically allocating resources of a dead logical partition |
US7073002B2 (en) | 2003-03-13 | 2006-07-04 | International Business Machines Corporation | Apparatus and method for controlling resource transfers using locks in a logically partitioned computer system |
US7047372B2 (en) | 2003-04-15 | 2006-05-16 | Newisys, Inc. | Managing I/O accesses in multiprocessor systems |
US7134052B2 (en) | 2003-05-15 | 2006-11-07 | International Business Machines Corporation | Autonomic recovery from hardware errors in an input/output fabric |
US8301809B2 (en) | 2003-07-02 | 2012-10-30 | Infortrend Technology, Inc. | Storage virtualization computer system and external controller thereof |
US7237139B2 (en) | 2003-08-07 | 2007-06-26 | International Business Machines Corporation | Services heuristics for computer adapter placement in logical partitioning operations |
US7502842B2 (en) | 2003-09-25 | 2009-03-10 | International Business Machines Corporation | Auto-configuration of an internal VLAN network interface |
US7171417B2 (en) | 2003-09-30 | 2007-01-30 | International Business Machines Corporation | Method and apparatus for improving performance and scalability of an object manager |
US7254652B2 (en) | 2003-09-30 | 2007-08-07 | International Business Machines Corporation | Autonomic configuration of port speeds of components connected to an interconnection cable |
US7111102B2 (en) | 2003-10-06 | 2006-09-19 | Cisco Technology, Inc. | Port adapter for high-bandwidth bus |
US20070061441A1 (en) | 2003-10-08 | 2007-03-15 | Landis John A | Para-virtualized computer system with I/0 server partitions that map physical host hardware for access by guest partitions |
US20070067366A1 (en) | 2003-10-08 | 2007-03-22 | Landis John A | Scalable partition memory mapping system |
US7234037B2 (en) | 2003-11-25 | 2007-06-19 | International Business Machines Corporation | Memory mapped Input/Output operations |
US7660322B2 (en) | 2003-12-11 | 2010-02-09 | International Business Machines Corporation | Shared adapter |
US7487258B2 (en) | 2004-01-30 | 2009-02-03 | International Business Machines Corporation | Arbitration in a computing utility system |
US8782024B2 (en) | 2004-02-12 | 2014-07-15 | International Business Machines Corporation | Managing the sharing of logical resources among separate partitions of a logically partitioned computer system |
US7530071B2 (en) | 2004-04-22 | 2009-05-05 | International Business Machines Corporation | Facilitating access to input/output resources via an I/O partition shared by multiple consumer partitions |
US20050246453A1 (en) | 2004-04-30 | 2005-11-03 | Microsoft Corporation | Providing direct access to hardware from a virtual environment |
US7240177B2 (en) | 2004-05-27 | 2007-07-03 | International Business Machines Corporation | System and method for improving performance of dynamic memory removals by reducing file cache size |
US7249208B2 (en) | 2004-05-27 | 2007-07-24 | International Business Machines Corporation | System and method for extending the cross-memory descriptor to describe another partition's memory |
IL163314A (en) | 2004-08-02 | 2010-06-16 | Lsi Technologies Israel Ltd | Booting from a storage area network |
US7260661B2 (en) | 2004-09-03 | 2007-08-21 | Intel Corporation | Processing replies to request packets in an advanced switching context |
JP2006113767A (ja) | 2004-10-14 | 2006-04-27 | Sony Corp | 情報処理システム、および、情報処理方法、並びに、プログラム |
US20060123111A1 (en) | 2004-12-02 | 2006-06-08 | Frank Dea | Method, system and computer program product for transitioning network traffic between logical partitions in one or more data processing systems |
US8285907B2 (en) | 2004-12-10 | 2012-10-09 | Intel Corporation | Packet processing in switched fabric networks |
JP4733399B2 (ja) | 2005-01-28 | 2011-07-27 | 株式会社日立製作所 | 計算機システム、計算機、ストレージ装置及び管理端末 |
US7694047B1 (en) | 2005-02-17 | 2010-04-06 | Qlogic, Corporation | Method and system for sharing input/output devices |
US20060195663A1 (en) | 2005-02-25 | 2006-08-31 | International Business Machines Corporation | Virtualized I/O adapter for a multi-processor data processing system |
US7543305B2 (en) | 2005-03-24 | 2009-06-02 | International Business Machines Corporation | Selective event registration |
US20060236063A1 (en) | 2005-03-30 | 2006-10-19 | Neteffect, Inc. | RDMA enabled I/O adapter performing efficient memory management |
US7415034B2 (en) | 2005-04-04 | 2008-08-19 | Sun Microsystems, Inc. | Virtualized partitionable shared network interface |
US20060250945A1 (en) | 2005-04-07 | 2006-11-09 | International Business Machines Corporation | Method and apparatus for automatically activating standby shared Ethernet adapter in a Virtual I/O server of a logically-partitioned data processing system |
US8223745B2 (en) * | 2005-04-22 | 2012-07-17 | Oracle America, Inc. | Adding packet routing information without ECRC recalculation |
US7620741B2 (en) | 2005-04-22 | 2009-11-17 | Sun Microsystems, Inc. | Proxy-based device sharing |
US7293129B2 (en) * | 2005-04-22 | 2007-11-06 | Sun Microsystems, Inc. | Flexible routing and addressing |
US7716662B2 (en) | 2005-06-22 | 2010-05-11 | Comcast Cable Holdings, Llc | System and method for generating a set top box code download step sequence |
US7949766B2 (en) | 2005-06-22 | 2011-05-24 | Cisco Technology, Inc. | Offload stack for network, block and file input and output |
US8521912B2 (en) | 2006-01-12 | 2013-08-27 | Broadcom Corporation | Method and system for direct device access |
US8230153B2 (en) | 2006-01-20 | 2012-07-24 | Broadcom Corporation | Method and system for HBA assisted storage virtualization |
US20070192518A1 (en) | 2006-02-14 | 2007-08-16 | Aarohi Communications, Inc., A California Corporation | Apparatus for performing I/O sharing & virtualization |
US7613749B2 (en) | 2006-04-12 | 2009-11-03 | International Business Machines Corporation | System and method for application fault tolerance and recovery using topologically remotely located computing devices |
US7613847B2 (en) | 2006-05-16 | 2009-11-03 | Hewlett-Packard Development Company, L.P. | Partially virtualizing an I/O device for use by virtual machines |
US7412554B2 (en) * | 2006-06-15 | 2008-08-12 | Nvidia Corporation | Bus interface controller for cost-effective high performance graphics system with two or more graphics processing units |
JP5068056B2 (ja) | 2006-10-11 | 2012-11-07 | 株式会社日立製作所 | 障害回復方法、計算機システム及び管理サーバ |
TWM309135U (en) * | 2006-10-16 | 2007-04-01 | Hon Hai Prec Ind Co Ltd | Motherboard and expansion card apparatus thereof |
US9098347B2 (en) | 2006-12-21 | 2015-08-04 | Vmware | Implementation of virtual machine operations using storage system functionality |
US7734859B2 (en) * | 2007-04-20 | 2010-06-08 | Nuon, Inc | Virtualization of a host computer's native I/O system architecture via the internet and LANs |
US8464260B2 (en) | 2007-10-31 | 2013-06-11 | Hewlett-Packard Development Company, L.P. | Configuration and association of a supervisory virtual device function to a privileged entity |
US7945436B2 (en) | 2007-11-06 | 2011-05-17 | Vmware, Inc. | Pass-through and emulation in a virtual machine environment |
US8141092B2 (en) | 2007-11-15 | 2012-03-20 | International Business Machines Corporation | Management of an IOV adapter through a virtual intermediary in a hypervisor with functional management in an IOV management partition |
US8141093B2 (en) | 2007-11-15 | 2012-03-20 | International Business Machines Corporation | Management of an IOV adapter through a virtual intermediary in an IOV management partition |
US8141094B2 (en) | 2007-12-03 | 2012-03-20 | International Business Machines Corporation | Distribution of resources for I/O virtualized (IOV) adapters and management of the adapters through an IOV management partition via user selection of compatible virtual functions |
TWM342008U (en) * | 2008-03-12 | 2008-10-01 | Giga Byte Tech Co Ltd | Monitoring motherboard which set in the host computer |
US8359415B2 (en) | 2008-05-05 | 2013-01-22 | International Business Machines Corporation | Multi-root I/O virtualization using separate management facilities of multiple logical partitions |
US7913024B2 (en) | 2008-12-09 | 2011-03-22 | International Business Machines Corporation | Differentiating traffic types in a multi-root PCI express environment |
US8144582B2 (en) | 2008-12-30 | 2012-03-27 | International Business Machines Corporation | Differentiating blade destination and traffic types in a multi-root PCIe environment |
-
2008
- 2008-12-30 US US12/346,251 patent/US8144582B2/en not_active Expired - Fee Related
-
2009
- 2009-11-23 TW TW98139783A patent/TWI474181B/zh not_active IP Right Cessation
- 2009-11-27 KR KR1020090115690A patent/KR101104025B1/ko not_active IP Right Cessation
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10216676B2 (en) | 2013-06-28 | 2019-02-26 | Futurewei Technologies, Inc. | System and method for extended peripheral component interconnect express fabrics |
US10417160B2 (en) | 2013-06-28 | 2019-09-17 | Futurewei Technologies, Inc. | System and method for extended peripheral component interconnect express fabrics |
US11429550B2 (en) | 2013-06-28 | 2022-08-30 | Futurewei Technologies, Inc. | System and method for extended peripheral component interconnect express fabrics |
KR20180026570A (ko) * | 2013-06-28 | 2018-03-12 | 후아웨이 테크놀러지 컴퍼니 리미티드 | PCIe 패브릭 확장 방법 및 시스템 |
US10922259B2 (en) | 2013-06-28 | 2021-02-16 | Futurewei Technologies, Inc. | System and method for extended peripheral component interconnect express fabrics |
US10210124B2 (en) | 2013-06-28 | 2019-02-19 | Futurewei Technologies, Inc. | System and method for extended peripheral component interconnect express fabrics |
KR20150125563A (ko) * | 2014-04-30 | 2015-11-09 | 인텔 코포레이션 | 한정된 시스템 내에서 네트워크 데이터 흐름을 최적화하는 방법 |
US10489207B2 (en) | 2014-12-08 | 2019-11-26 | Huawei Technologies Co., Ltd. | System for resource management using performance specification and description information of the process |
KR20170046786A (ko) * | 2014-12-08 | 2017-05-02 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 리소스 관리 방법, 호스트 및 엔드포인트 |
KR101880407B1 (ko) * | 2014-12-08 | 2018-07-19 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 리소스 관리 방법, 호스트 및 엔드포인트 |
US11379265B2 (en) | 2014-12-08 | 2022-07-05 | Huawei Technologies Co., Ltd. | Resource management method, host, and endpoint based on performance specification |
US20170199767A1 (en) | 2014-12-08 | 2017-07-13 | Huawei Technologies Co., Ltd. | Resource management method, host, and endpoint |
CN110209606A (zh) * | 2019-04-30 | 2019-09-06 | 杭州电子科技大学 | 一种基于PCIe的多接口存储设备的控制方法 |
CN110209606B (zh) * | 2019-04-30 | 2021-01-22 | 杭州电子科技大学 | 一种基于PCIe的多接口存储设备的控制方法 |
Also Published As
Publication number | Publication date |
---|---|
US8144582B2 (en) | 2012-03-27 |
TW201025025A (en) | 2010-07-01 |
US20100165874A1 (en) | 2010-07-01 |
TWI474181B (zh) | 2015-02-21 |
KR101104025B1 (ko) | 2012-01-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101104025B1 (ko) | 멀티-루트 PCIe 환경에서 블레이드 목적지 및 트래픽 타입의 분화 | |
US7913024B2 (en) | Differentiating traffic types in a multi-root PCI express environment | |
EP4004722B1 (en) | Computer device including nested network interface controller switches | |
US11102117B2 (en) | In NIC flow switching | |
US8103810B2 (en) | Native and non-native I/O virtualization in a single adapter | |
JP6605713B2 (ja) | クラウドコンピューティングシステムにおけるパケット処理方法、ホスト及びシステム | |
JP6016984B2 (ja) | ソフトウェア確定ネットワークにおける仮想マシンと仮想化コンテナを用いたローカルサービスチェーン | |
US9838300B2 (en) | Temperature sensitive routing of data in a computer system | |
US7743189B2 (en) | PCI function south-side data management | |
US9086919B2 (en) | Fabric independent PCIe cluster manager | |
TWI511048B (zh) | 多主機上單根輸入/輸出虛擬化虛擬功能共享的方法及系統 | |
JP5315209B2 (ja) | 冗長構成を生成するための周辺機器相互接続入出力仮想化デバイスの使用 | |
US8225005B2 (en) | Use of peripheral component interconnect input/output virtualization devices to create high-speed, low-latency interconnect | |
US8972611B2 (en) | Multi-server consolidated input/output (IO) device | |
CN103392175A (zh) | Pci快速多根i/o虚拟化环境中的低延迟优先排序 | |
US9483290B1 (en) | Method and system for virtual machine communication | |
US10764087B2 (en) | Open virtualized multitenant network scheme servicing virtual machine and container based connectivity | |
WO2009151447A1 (en) | Presenting multi-function devices behind a switch hierarchy as a single function device | |
US10380041B2 (en) | Fabric independent PCIe cluster manager | |
CN110362523B (zh) | 一种基于virtio协议的接口及数据处理方法 | |
TW202238400A (zh) | 快速週邊組件互連介面裝置及其操作方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20141215 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20151228 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20161228 Year of fee payment: 6 |
|
FPAY | Annual fee payment |
Payment date: 20171227 Year of fee payment: 7 |
|
LAPS | Lapse due to unpaid annual fee |