KR101104025B1 - 멀티-루트 PCIe 환경에서 블레이드 목적지 및 트래픽 타입의 분화 - Google Patents

멀티-루트 PCIe 환경에서 블레이드 목적지 및 트래픽 타입의 분화 Download PDF

Info

Publication number
KR101104025B1
KR101104025B1 KR1020090115690A KR20090115690A KR101104025B1 KR 101104025 B1 KR101104025 B1 KR 101104025B1 KR 1020090115690 A KR1020090115690 A KR 1020090115690A KR 20090115690 A KR20090115690 A KR 20090115690A KR 101104025 B1 KR101104025 B1 KR 101104025B1
Authority
KR
South Korea
Prior art keywords
virtual
traffic
root
data structure
mapping data
Prior art date
Application number
KR1020090115690A
Other languages
English (en)
Other versions
KR20100080360A (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 KR20100080360A publication Critical patent/KR20100080360A/ko
Application granted granted Critical
Publication of KR101104025B1 publication Critical patent/KR101104025B1/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
    • 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
    • G06F15/00Digital computers in general; Data processing equipment in general

Abstract

멀티-루트 PCI Express 환경에서 호스트 시스템 블레이드에 대해 트래픽 타입을 분화하는 메커니즘이 제공되었다. 이 메커니즘은 데이터 프로세싱 시스템 내의 각 단일-루트 가상 계층에 대해, 복수의 트래픽 클래스 내의 각 트래픽 클래스를 복수의 가상 채널 내의 대응하는 가상 채널과 연관시키는 제 1 맵핑 데이터 구조를 생성한다. 또한, 복수의 가상 채널 내의 각 가상 채널을 데이터 프로세싱 시스템의 복수의 가상 링크 내의 대응하는 가상 링크로 맵핑하는 제 2 맵핑 데이터 구조가 생성된다. 특정 우선순위 그룹의 트래픽은, 제 1 맵핑 데이터 구조 및 제 2 맵핑 데이터 구조에 기초하여, 하나의 단일-루트 가상 계층으로부터 복수의 가상 링크 내의 특정한 가상 링크로 라우팅된다.

Description

멀티-루트 PCIe 환경에서 블레이드 목적지 및 트래픽 타입의 분화{DIFFERENTIATING BLADE DESTINATION AND TRAFFIC TYPES IN A MULTI-ROOT PCIE ENVIRONMENT}
본 발명은 일반적으로는 향상된 데이터 프로세싱 시스템 및 방법에 관한 것이다. 보다 구체적으로는, 본 발명은 트래픽 타입과 서버 블레이드 목적지 모두에 기초하여 분화(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)

  1. 데이터 프로세싱 시스템에서 서로 다른 트래픽 타입들을 분화(differentiate)하는 방법으로서,
    상기 데이터 프로세싱 시스템 내의 복수의 단일-루트 가상 계층들 중 각각의 단일-루트 가상 계층(single-root virtual hierarchy)에 대해, 복수의 트래픽 클래스 내의 각각의 트래픽 클래스를 복수의 우선순위 그룹 중 대응하는 우선순위 그룹 및 복수의 가상 채널 내의 대응하는 가상 채널과 연관시키는 제 1 맵핑 데이터 구조를 생성하는 단계와,
    상기 복수의 가상 채널 내의 각각의 가상 채널을 상기 데이터 프로세싱 시스템의 복수의 가상 링크 내의 대응하는 가상 링크로 맵핑하는 제 2 맵핑 데이터 구조를 생성하는 단계와,
    상기 제 1 맵핑 데이터 구조 및 상기 제 2 맵핑 데이터 구조에 기초하여, 특정 우선순위 그룹(priority group)의 트래픽을 하나의 단일-루트 가상 계층으로부터 상기 복수의 가상 링크 내의 특정한 가상 링크로 라우팅하는 단계를 포함하되,
    가상 계층과 가상 채널의 각각의 조합은 상기 복수의 가상 링크 내의 서로 다른 가상 링크로 맵핑되며,
    상기 제 1 맵핑 데이터 구조 및 상기 제 2 맵핑 데이터 구조에 기초하여 상기 단일-루트 가상 계층으로부터 상기 복수의 가상 링크 내의 상기 특정한 가상 링크로 트래픽을 라우팅하는 단계는,
    상기 트래픽과 관련된 트래픽 클래스를 결정하는 단계와,
    상기 특정 우선순위 그룹의 트래픽에 대응하는 가상 채널을 식별하도록 상기 제 1 맵핑 데이터 구조 내에서 검색(look up) 동작을 수행하는 단계―상기 특정 우선순위 그룹의 트래픽은 상기 단일-루트 가상 계층 및 상기 트래픽의 상기 트래픽 클래스의 조합에 대응함―와,
    상기 가상 채널 및 상기 트래픽의 상기 단일-루트 가상 계층과 관련된 가상 링크를 식별하도록 상기 제 2 맵핑 데이터 구조 내에서 검색 동작을 수행하는 단계와,
    상기 식별된 가상 링크로 상기 트래픽을 라우팅하는 단계를 포함하는
    트래픽 타입 분화 방법.
  2. 제 1 항에 있어서,
    상기 제 1 맵핑 데이터 구조 및 상기 제 2 맵핑 데이터 구조는 상기 데이터 프로세싱 시스템의 하드웨어 관리 콘솔에 의해 생성되는
    트래픽 타입 분화 방법.
  3. 제 2 항에 있어서,
    상기 하드웨어 관리 콘솔은, 상기 제 1 맵핑 데이터 구조 및 상기 제 2 맵핑 데이터 구조에 기초하여 호스트 시스템의 하나 이상의 통신 패브릭 관리자(communication fabric manager)를 구성하는
    트래픽 타입 분화 방법.
  4. 제 1 항에 있어서,
    상기 데이터 프로세싱 시스템은 복수의 단일-루트 가상 계층을 갖는 멀티-루트 데이터 프로세싱 시스템인
    트래픽 타입 분화 방법.
  5. 제 4 항에 있어서,
    상기 제 1 맵핑 데이터 구조 및 상기 제 2 맵핑 데이터 구조는, 단일-루트 가상 계층의 식별자와 상기 식별자에 의해 식별되는 상기 단일-루트 가상 계층과 관련된 복수의 가상 채널 내의 가상 채널의 조합에 기초하여, 복수의 단일-루트 가상 계층 내의 각각의 단일-루트 가상 계층으로부터 상기 복수의 가상 링크 내의 서로 다른 가상 링크로 데이터를 라우팅하는
    트래픽 타입 분화 방법.
  6. 삭제
  7. 제 1 항에 있어서,
    단일-루트 가상 계층에 있어서, 상기 제 1 맵핑 데이터 구조 내에서 동일한 가상 채널은 동일한 우선순위 그룹에 해당하고,
    상기 동일한 가상 채널은 자신과 관련된 하나 이상의 트래픽 클래스를 갖는
    트래픽 타입 분화 방법.
  8. 제 1 항에 있어서,
    상기 방법은 블레이드 서버 내의 호스트 시스템 블레이드의 PCIe(Peripheral Component Interconnect Express) 관리 구성요소에 의해 구현되는
    트래픽 타입 분화 방법.
  9. 컴퓨터 판독가능 프로그램을 갖는 컴퓨터 기록가능한 매체로서,
    상기 컴퓨터 판독가능 프로그램은 데이터 프로세싱 시스템에서 실행되었을 때,
    상기 데이터 프로세싱 시스템이 제1항 내지 제5항, 제7항 또는 제8항 중 어느 한 항에 따른 방법의 모든 단계를 수행하도록 하는
    컴퓨터 기록가능한 매체.
  10. 데이터 프로세싱 시스템으로서,
    하드웨어 관리 콘솔과,
    상기 하드웨어 관리 콘솔에 연결된 호스트 시스템을 포함하되,
    상기 하드웨어 관리 콘솔은,
    상기 데이터 프로세싱 시스템 내의 복수의 단일-루트 가상 계층들 중 각각의 단일-루트 가상 계층(single-root virtual hierarchy)에 대해, 복수의 트래픽 클래스 내의 각각의 트래픽 클래스를 복수의 우선순위 그룹 중 대응하는 우선순위 그룹 및 복수의 가상 채널 내의 대응하는 가상 채널과 연관시키는 제 1 맵핑 데이터 구조를 생성하고,
    상기 복수의 가상 채널 내의 각각의 가상 채널을 상기 데이터 프로세싱 시스템의 복수의 가상 링크 내의 대응하는 가상 링크로 맵핑하는 제 2 맵핑 데이터 구조를 생성하고,
    상기 제 1 맵핑 데이터 구조 및 상기 제 2 맵핑 데이터 구조에 기초하여, 특정 우선순위 그룹(priority group)의 트래픽을 하나의 단일-루트 가상 계층으로부터 상기 복수의 가상 링크 내의 특정한 가상 링크로 라우팅하고,
    가상 계층과 가상 채널의 각각의 조합은 상기 복수의 가상 링크 내의 서로 다른 가상 링크로 맵핑되며,
    상기 제 1 맵핑 데이터 구조 및 상기 제 2 맵핑 데이터 구조에 기초하여 상기 단일-루트 가상 계층으로부터 상기 복수의 가상 링크 내의 상기 특정한 가상 링크로 트래픽을 라우팅하는 것은,
    상기 트래픽과 관련된 트래픽 클래스를 결정하는 것과,
    상기 특정 우선순위 그룹의 트래픽에 대응하는 가상 채널을 식별하도록 상기 제 1 맵핑 데이터 구조 내에서 검색(look up) 동작을 수행하는 것―상기 특정 우선순위 그룹의 트래픽은 상기 단일-루트 가상 계층 및 상기 트래픽의 상기 트래픽 클래스의 조합에 대응함―과,
    상기 가상 채널 및 상기 트래픽의 상기 단일-루트 가상 계층과 관련된 가상 링크를 식별하도록 상기 제 2 맵핑 데이터 구조 내에서 검색 동작을 수행하는 것과,
    상기 식별된 가상 링크로 상기 트래픽을 라우팅하는 것을 포함하는
    데이터 프로세싱 시스템.
KR1020090115690A 2008-12-30 2009-11-27 멀티-루트 PCIe 환경에서 블레이드 목적지 및 트래픽 타입의 분화 KR101104025B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/346,251 US8144582B2 (en) 2008-12-30 2008-12-30 Differentiating blade destination and traffic types in a multi-root PCIe environment
US12/346,251 2008-12-30

Publications (2)

Publication Number Publication Date
KR20100080360A KR20100080360A (ko) 2010-07-08
KR101104025B1 true 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)

Families Citing this family (76)

* Cited by examiner, † Cited by third party
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
US9088432B2 (en) * 2010-02-23 2015-07-21 Nec Corporation Remote control system, remote control method and program for remote control
US9852087B2 (en) 2010-04-20 2017-12-26 Avago Technologies General Ip (Singapore) Pte. Ltd. Inline PCI-IOV adapter
US8750164B2 (en) * 2010-07-06 2014-06-10 Nicira, Inc. Hierarchical managed switch architecture
US8964528B2 (en) 2010-07-06 2015-02-24 Nicira, Inc. Method and apparatus for robust packet distribution among hierarchical managed switching elements
US9680750B2 (en) 2010-07-06 2017-06-13 Nicira, Inc. Use of tunnels to hide network addresses
US9525647B2 (en) 2010-07-06 2016-12-20 Nicira, Inc. Network control apparatus and method for creating and modifying logical 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
US9747116B2 (en) 2013-03-28 2017-08-29 Hewlett Packard Enterprise Development Lp Identifying memory of a blade device for use by an operating system of a partition including the blade device
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
EP2979170B1 (en) 2013-03-28 2020-07-08 Hewlett-Packard Enterprise Development LP Making memory of compute and expansion blade 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
US9135200B2 (en) * 2013-06-28 2015-09-15 Futurewei Technologies, Inc. System and method for extended peripheral component interconnect express fabrics
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
US9558148B2 (en) * 2014-04-30 2017-01-31 Intel Corporation Method to optimize network data flows within a constrained system
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
CN107645407B (zh) * 2014-12-08 2021-02-12 华为技术有限公司 一种适配QoS的方法和装置
US10237191B2 (en) * 2015-02-18 2019-03-19 Intel Corporation Traffic class arbitration based on priority and bandwidth allocation
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 삼성전자주식회사 저장 장치, 그것을 포함하는 호스트 시스템, 및 그것의 맵 테이블 업데이트 방법
US10157160B2 (en) * 2015-06-04 2018-12-18 Intel Corporation Handling a partition reset in a multi-root system
US9990327B2 (en) 2015-06-04 2018-06-05 Intel Corporation Providing multiple roots in a semiconductor device
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
WO2018003629A1 (ja) * 2016-06-28 2018-01-04 日本電気株式会社 パケット処理装置、及び、パケット処理方法
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 华为技术有限公司 一种数据流的虚拟通道的设置方法及装置
CN110209606B (zh) * 2019-04-30 2021-01-22 杭州电子科技大学 一种基于PCIe的多接口存储设备的控制方法
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
US11606310B2 (en) 2020-09-28 2023-03-14 Vmware, Inc. Flow processing offload using virtual port identifiers
US11716383B2 (en) 2020-09-28 2023-08-01 Vmware, Inc. Accessing multiple external storages to present an emulated local storage through a 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
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
US11829793B2 (en) 2020-09-28 2023-11-28 Vmware, Inc. Unified management of virtual machines and bare metal computers
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
US11899594B2 (en) 2022-06-21 2024-02-13 VMware LLC Maintenance of data message classification cache on smart NIC
US11928062B2 (en) 2022-06-21 2024-03-12 VMware LLC Accelerating data message classification with smart NICs
US11928367B2 (en) 2022-06-21 2024-03-12 VMware LLC Logical memory addressing for network devices

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060239287A1 (en) * 2005-04-22 2006-10-26 Johnsen Bjorn D Adding packet routing information without ECRC recalculation

Family Cites Families (73)

* Cited by examiner, † Cited by third party
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
US6262976B1 (en) * 1998-09-17 2001-07-17 Ordered Networks, Inc. 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 Sys Gmbh & Co Kg 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
US7254652B2 (en) * 2003-09-30 2007-08-07 International Business Machines Corporation Autonomic configuration of port speeds of components connected to an interconnection cable
US7171417B2 (en) * 2003-09-30 2007-01-30 International Business Machines Corporation Method and apparatus for improving performance and scalability of an object manager
US7111102B2 (en) * 2003-10-06 2006-09-19 Cisco Technology, Inc. Port adapter for high-bandwidth bus
US20070067366A1 (en) * 2003-10-08 2007-03-22 Landis John A Scalable partition memory mapping system
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
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
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
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
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
US7293129B2 (en) * 2005-04-22 2007-11-06 Sun Microsystems, Inc. Flexible routing and addressing
US7620741B2 (en) * 2005-04-22 2009-11-17 Sun Microsystems, Inc. Proxy-based device sharing
US7949766B2 (en) * 2005-06-22 2011-05-24 Cisco Technology, Inc. Offload stack for network, block and file input and output
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
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

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060239287A1 (en) * 2005-04-22 2006-10-26 Johnsen Bjorn D Adding packet routing information without ECRC recalculation

Also Published As

Publication number Publication date
US8144582B2 (en) 2012-03-27
KR20100080360A (ko) 2010-07-08
TWI474181B (zh) 2015-02-21
US20100165874A1 (en) 2010-07-01
TW201025025A (en) 2010-07-01

Similar Documents

Publication Publication Date Title
KR101104025B1 (ko) 멀티-루트 PCIe 환경에서 블레이드 목적지 및 트래픽 타입의 분화
US7913024B2 (en) Differentiating traffic types in a multi-root PCI express environment
US11102117B2 (en) In NIC flow switching
US8103810B2 (en) Native and non-native I/O virtualization in a single adapter
JP6016984B2 (ja) ソフトウェア確定ネットワークにおける仮想マシンと仮想化コンテナを用いたローカルサービスチェーン
US9838300B2 (en) Temperature sensitive routing of data in a computer system
US7743189B2 (en) PCI function south-side data management
TWI511048B (zh) 多主機上單根輸入/輸出虛擬化虛擬功能共享的方法及系統
US9086919B2 (en) Fabric independent PCIe cluster manager
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虚拟化环境中的低延迟优先排序
US10764087B2 (en) Open virtualized multitenant network scheme servicing virtual machine and container based connectivity
US20110082949A1 (en) Presenting multi-function devices behind a switch hierarchy as a single function device
US9483290B1 (en) Method and system for virtual machine communication
US10380041B2 (en) Fabric independent PCIe cluster manager
US11003618B1 (en) Out-of-band interconnect control and isolation
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