KR20110010697A - 자기 가상화 입력/출력 디바이스로의 다중 논리적 파티션의 인터페이싱 - Google Patents

자기 가상화 입력/출력 디바이스로의 다중 논리적 파티션의 인터페이싱 Download PDF

Info

Publication number
KR20110010697A
KR20110010697A KR1020107022915A KR20107022915A KR20110010697A KR 20110010697 A KR20110010697 A KR 20110010697A KR 1020107022915 A KR1020107022915 A KR 1020107022915A KR 20107022915 A KR20107022915 A KR 20107022915A KR 20110010697 A KR20110010697 A KR 20110010697A
Authority
KR
South Korea
Prior art keywords
partition
virtual
instance
logical
input
Prior art date
Application number
KR1020107022915A
Other languages
English (en)
Other versions
KR101354382B1 (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 KR20110010697A publication Critical patent/KR20110010697A/ko
Application granted granted Critical
Publication of KR101354382B1 publication Critical patent/KR101354382B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • G06F12/1475Key-lock mechanism in a virtual system, e.g. with translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1491Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1056Simplification

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

다중 논리적 파티션은 다중 전용 파티션 부속부 인스턴스를 거쳐 데이터 프로세싱 시스템의 자기 가상화 입력/출력 디바이스로의 액세스를 제공한다. 액세스는 하나 이상의 관련된 파티션 부속부 인스턴스에 각각의 논리적 파티션을 인터페이싱하는 것으로서, 각각의 파티션 부속부 인스턴스는 그 관련 논리적 파티션을 자기 가상화 입력/출력 디바이스의 큐 쌍 또는 가상 펑션 중 하나에 결합하고, 각각의 파티션 부속부 인스턴스는 개별 디스패치 가능한 상태이고 데이터 프로세싱 시스템의 하이퍼바이저 또는 각각의 논리적 파티션으로부터 공여된 가상 어드레스 공간을 이용하여 생성되고, 각각의 파티션 부속부 인스턴스는 자기 가상화 입력/출력 디바이스의 큐 쌍 또는 가상 펑션을 위한 디바이스 드라이버를 포함하는 것인 인터페이싱하는 것과, 논리적 파티션의 각각의 파티션 부속부 인스턴스(들)를 통해 자기 가상화 입력/출력 디바이스의 큐 쌍 또는 가상 펑션에 인터페이싱되는 적어도 하나의 가상 입력/출력을 각각의 논리적 파티션에 제공하는 것에 의해 설정된다.

Description

자기 가상화 입력/출력 디바이스로의 다중 논리적 파티션의 인터페이싱{INTERFACING MULTIPLE LOGICAL PARTITIONS TO A SELF-VIRTUALIZING INPUT/OUTPUT DEVICE}
본 발명은 일반적으로 데이터 프로세싱 시스템에 관한 것으로서, 더 구체적으로는 데이터 프로세싱 시스템용 새로운 실행 환경을 포함하는 파티션 부속부(adjunct)의 생성 및 이용에 관한 것이다. 파티션 부속부는 일 양태에서 자기 가상화(self-virtualizing) 입력/출력(I/O) 디바이스로의 액세스를 갖는 논리적 파티션을 제공하는 전용 부속부로서 이용된다.
데이터 프로세싱 시스템의 하이퍼바이저 위에서 실행하는 논리적 파티션(LPAR)은 종종 하이퍼바이저 자체에 의해 제공되는 것보다 고레벨 펑션을 제공하는데 사용된다. 예를 들어, 일 LPAR은 데이터 프로세싱 시스템의 하나 이상의 다른 LPAR에 입력/출력 서비스를 제공하는 가상 입력/출력 서버(VIOS)를 설계할 수 있다. 이 고레벨 펑션의 오프로딩은 하이퍼바이저 내의 복잡한 코드를 회피하고, 따라서 하이퍼바이저를 소형으로 유지하여 데이터 프로세싱 시스템 내에 확보하는 것을 보조한다. 그러나, 다른 국부적 파티션에 이러한 서비스를 제공하기 위해 논리적 파티션을 사용하는 것은 이러한 서비스를 제공하기 위해 국부적 파티션 및 따라서 전체 운영 체제를 초기화하고 실행하는데 비교적 높은 비용을 필요로 한다.
본 명세서에는 서비스를 제공하기 위해 다른 풀 논리적 파티션을 필요로 하지 않고 또한 개시 논리적 파티션 내에 또는 하이퍼바이저 내에 서비스를 매립할 필요가 없이 논리적 파티션에 서비스가 제공될 수 있게 하는 해결책이 개시된다. 본 명세서에 설명되고 청구된 바와 같은 파티션 부속부는 이 중용을 제공하는 새로운 실행 환경이다.
본 명세서에는 일 양태에서, 데이터 프로세싱 시스템의 자기 가상화 입력/출력 디바이스로의 다중 논리적 파티션을 위한 액세스를 설정하는 방법이 제공된다. 이 방법은 적어도 하나의 관련 파티션 부속부 인스턴스에 다중 논리적 파티션의 각각의 논리적 파티션을 인터페이싱하는 것으로서, 각각의 파티션 부속부 인스턴스는 다중 논리적 파티션의 그 관련 논리적 파티션을 자기 가상화 입력/출력 디바이스의 큐 쌍 또는 가상 펑션 중 하나에 결합하고, 각각의 파티션 부속부 인스턴스는 개별 디스패치 가능한 상태를 포함하고 데이터 프로세싱 시스템의 하이퍼바이저 또는 관련 논리적 파티션으로부터 공여된 가상 어드레스 공간을 이용하여 생성되고, 각각의 파티션 부속부 인스턴스는 자기 가상화 입력/출력 디바이스의 큐 쌍 또는 가상 펑션을 위한 디바이스 드라이버를 포함하는 것인 인터페이싱하는 것과, 논리적 파티션의 적어도 하나의 관련 파티션 부속부 인스턴스를 통해 자기 가상화 입력/출력 디바이스의 큐 쌍 또는 가상 펑션에 인터페이싱되는 적어도 하나의 가상 입력/출력을 다중 논리적 파티션의 각각의 논리적 파티션에 제공하는 것을 포함한다.
다른 양태에서, 다중 논리적 파티션 및 다중 논리적 파티션의 입력/출력 액세스를 용이하게 하기 위한 다중 파티션 부속부 인스턴스를 포함하는 적어도 하나의 프로세서와, 다중 파티션 부속부에 결합된 자기 가상화 입력/출력 디바이스를 포함하는 데이터 프로세싱 시스템이 제공된다. 다중 논리적 파티션의 각각의 논리적 파티션은 적어도 하나의 관련된 파티션 부속부 인스턴스에 인터페이싱된다. 각각의 파티션 부속부 인스턴스는 데이터 프로세싱 시스템의 자기 가상화 입력/출력 디바이스의 큐 쌍 또는 가상 펑션 중 하나에 다중 논리적 파티션의 관련된 논리적 파티션을 결합한다. 또한, 각각의 파티션 부속부 인스턴스는 개별 디스패치 가능한 상태를 포함하고 데이터 프로세싱 시스템의 하이퍼바이저 또는 각각의 논리적 파티션으로부터 공여된 가상 어드레스 공간을 이용한다. 게다가, 각각의 파티션 부속부 인스턴스는 자기 가상화 입력/출력 어댑터의 큐 쌍 또는 각각의 가상 펑션을 위한 디바이스 드라이버를 포함한다. 다중 논리적 파티션의 각각의 논리적 파티션은 논리적 파티션의 적어도 하나의 관련된 파티션 부속부 인스턴스를 통해 자기 가상화 입력/출력 디바이스의 적어도 하나의 큐 쌍 또는 적어도 하나의 가상 펑션에 인터페이싱된 적어도 하나의 가상 입력/출력을 포함한다.
다른 양태에서, 본 발명은 데이터 프로세싱 시스템의 자기 가상화 입력/출력 디바이스로의 다중 논리적 파티션을 위한 액세스를 설정하기 위한 방법을 규정하기 위해 컴퓨터 판독 가능 프로그램 코드 논리를 갖는 적어도 하나의 컴퓨터 판독 가능 매체를 포함하는 제조 물품을 포함한다. 컴퓨터 판독 가능 프로그램 코드 논리는, 프로세서 상에서 실행될 때, 적어도 하나의 관련 파티션 부속부 인스턴스에 다중 논리적 파티션의 각각의 논리적 파티션을 인터페이싱하는 것으로서, 각각의 파티션 부속부 인스턴스는 다중 논리적 파티션의 그 관련 논리적 파티션을 자기 가상화 입력/출력 디바이스의 큐 쌍 또는 가상 펑션 중 하나에 결합하고, 각각의 파티션 부속부 인스턴스는 개별 디스패치 가능한 상태를 포함하고 데이터 프로세싱 시스템의 하이퍼바이저 또는 관련 논리적 파티션으로부터 공여된 가상 어드레스 공간을 이용하여 생성되고, 각각의 파티션 부속부 인스턴스는 자기 가상화 입력/출력 디바이스의 큐 쌍 또는 가상 펑션을 위한 디바이스 드라이버를 포함하는 것인 인터페이싱하는 것과, 논리적 파티션의 적어도 하나의 관련 파티션 부속부 인스턴스를 통해 자기 가상화 입력/출력 디바이스의 큐 쌍 또는 가상 펑션에 인터페이싱되는 적어도 하나의 가상 입력/출력을 다중 논리적 파티션의 각각의 논리적 파티션에 제공하는 것을 수행한다.
또한, 추가의 특징 및 장점은 본 발명의 기술을 통해 실현된다. 본 발명의 다른 실시예 및 양태가 본 명세서에 상세히 설명되고 청구된 발명의 부분으로 고려된다.
본 발명에 관한 요지가 구체적으로 설명되고 명세서의 끝부분에 있는 청구범위에 명백하게 청구되어 있다. 본 발명의 상기 및 다른 특징 및 장점은 첨부 도면과 관련하여 취한 이하의 상세한 설명으로부터 명백하다.
본 발명에 따르면, 서비스를 제공하기 위해 다른 풀 논리적 파티션을 필요로 하지 않고 또한 개시 논리적 파티션 내에 또는 하이퍼바이저 내에 서비스를 매립할 필요가 없이 논리적 파티션에 서비스가 제공될 수 있게 하는 것이 가능하다.
도 1은 본 발명의 하나 이상의 양태를 구현하기 위한 데이터 프로세싱 시스템의 일 실시예의 블록 다이어그램.
도 2는 본 발명의 하나 이상의 양태를 구현하기 위해 사용될 수 있는 데이터 프로세싱 시스템의 더 상세한 도면.
도 3은 본 발명의 양태에 따라, 클라이언트 논리적 파티션 및 파티션 부속부를 포함하는 데이터 프로세싱 시스템의 일 실시예를 도시하고 있는 도면.
도 4a는 본 발명의 양태에 따라, 다중 논리적 파티션 및 다중 파티션 부속부를 포함하는 데이터 프로세싱 시스템을 도시하고 있는 도면.
도 4b는 본 발명의 양태에 따라, 다중 논리적 파티션이 글로벌 파티션 부속부를 연결하는 데이터 프로세싱 시스템을 도시하고 있는 도면.
도 5는 본 발명의 양태에 따라, 디바이스 드라이버 서비스를 포함하는 글로벌 파티션 부속부가 통상의 가상 입력 출력 서버를 이용하는 대신에 다중 클라이언트 파티션에 의해 연결되어 있는 데이터 프로세싱 시스템을 도시하고 있는 도면.
도 6은 본 발명의 양태에 따라, 파티션 부속부를 생성하기 위한 프로세스의 일 실시예의 흐름도.
도 7은 본 발명의 양태에 따라, 디바이스 드라이버를 포함하는 파티션 부속부를 생성하기 위한 프로세스의 더 상세한 실시예의 흐름도.
도 8은 본 발명의 양태에 따라, 데이터 프로세싱 시스템의 다중 논리적 파티션에 의해 이용 가능한 글로벌 파티션 부속부를 생성하기 위한 프로세스의 일 실시예의 흐름도.
도 9는 본 발명의 양태에 따라, 클라이언트 논리적 파티션으로부터 글로벌 파티션 부속부를 연결하기 위한 프로세스의 일 실시예의 흐름도.
도 10은 본 발명의 양태에 따라, 파티션 부속부에 의한 서비스 요청을 프로세싱하기 위한 프로세스의 일 실시예의 흐름도.
도 11은 본 발명의 양태에 따라, 비동기적 서비스 요청 완료 취급을 위한 프로세스의 일 실시예의 흐름도.
도 12는 데이터 프로세싱 시스템의 2개의 통상의 논리적 파티션을 도시하고 있는 도면.
도 13은 통상의 데이터 프로세싱 시스템의 프로세스 레지스터 머쉰 상태 및 메모리 관리 및 어드레스 변환 하드웨어를 도시하고 있는 도면.
도 14는 LPAR 1이 통상적으로 활성 상태로 디스패치되어 있는 도 13의 프로세서 레지스터 머쉰 상태 및 메모리 관리 유닛 하드웨어를 도시하고 있는 도면.
도 15는 LPAR 1이 스위칭 아웃되어 있고, LPAR 2가 활성 상태로 디스패치되어 있는 도 13의 프로세서 레지스터 머쉰 상태 및 메모리 관리 유닛 하드웨어를 도시하고 있는 도면.
도 16은 본 발명의 양태에 따라, 논리적 파티션(LPAR 1) 및 파티션 부속부를 포함하는 데이터 프로세싱 시스템을 도시하고 있는 도면.
도 17은 본 발명의 양태에 따라, LPAR 1이 활성 상태로 디스패치되어 있고 LPAR 1과 파티션 부속부 사이의 공유 가상 어드레스 공간을 도시하고 있는 도 16의 데이터 프로세싱 시스템의 프로세서 레지스터 머쉰 상태 및 메모리 관리 및 어드레스 변환 하드웨어를 도시하고 있는 도면.
도 18은 본 발명의 양태에 따라, 파티션 부속부를 디스패치하기 위해 LPAR 1로부터 현재 상태 머쉰을 문맥 교환한 후에 도 17의 프로세서 레지스터 머쉰 상태 및 메모리 관리 및 어드레스 변환 하드웨어를 도시하고 있는 도면.
도 19는 데이터 프로세싱 시스템의 멀티스레드 프로세서 코어를 위한 프로세서 레지스터 머쉰 상태 및 메모리 관리 및 어드레스 변환 하드웨어를 도시하고 있는 도면.
도 20은 제1 논리적 파티션(LPAR 1)이 활성 상태에 있는 도 19의 프로세서 레지스터 머쉰 상태 및 메모리 관리 및 어드레스 변환 하드웨어를 도시하고 있는 도면.
도 21은 현재 상태 머쉰을 LPAR 1로부터 제2 논리적 파티션(LPAR 2)의 상태 데이터로 문맥 교환한 후에 도 19 및 도 20의 프로세서 레지스터 머쉰 상태 및 메모리 관리 및 어드레스 변환 하드웨어를 도시하고 있는 도면.
도 22는 본 발명의 양태에 따라, 제1 논리적 파티션(LPAR 1)으로부터 파티션 부속부로 하나의 하드웨어 스레드의 현재 상태 머쉰의 부분적 문맥 교환을 갖는 도 19의 프로세서 레지스터 머쉰 상태 및 메모리 관리 및 어드레스 변환 하드웨어를 도시하고 있는 도면.
도 23a 및 도 23b는 전용 디바이스에 액세스하거나 사용하기 위해 논리적 파티션에 의해 소유된 전용 디바이스가 논리적 파티션의 운영 체제를 위한 네이티브 디바이스 드라이버를 필요로 하는 종래의 데이터 프로세싱 시스템 구성의 일 예를 도시하고 있는 도면.
도 24a 및 도 24b는 본 발명의 양태에 따라, 비네이티브 운영 체제의 디바이스 드라이버가 물리적 입력/출력 디바이스에 액세스하거나 사용하도록 이용되는 파티션 부속부 구성의 예를 도시하고 있는 도면.
도 25는 가상 입력/출력 서버를 통해 비자기 가상화 입력/출력 디바이스로 인터페이싱되는 다중 논리적 파티션을 포함하는 통상의 데이터 프로세싱 시스템의 일 예를 도시하고 있는 도면.
도 26은 다중 논리적 파티션이 다중 논리적 파티션 내의 네이티브 디바이스 드라이버를 거쳐 자기 가상화 입력/출력 디바이스의 다중 가상 펑션 인스턴스에 인터페이싱되는 데이터 프로세싱 시스템의 일 실시예를 도시하고 있는 도면.
도 27은 다중 논리적 파티션이 다중 논리적 파티션 내의 네이티브 디바이스 드라이버를 거쳐 자기 가상화 입력/출력 디바이스의 다중 큐 쌍 인스턴스에 인터페이싱되는 데이터 프로세싱 시스템의 대안 실시예를 도시하고 있는 도면.
도 28은 본 발명의 양태에 따라, 다중 논리적 파티션을 자기 가상화 입력/출력 디바이스의 각각의 가상 펑션 인스턴스에 인터페이싱하는 다중 파티션 부속부 인스턴스를 포함하는 데이터 프로세싱 시스템의 일 실시예를 도시하고 있는 도면.
도 29는 본 발명의 양태에 따라, 다중 파티션 부속부 인스턴스가 자기 가상화 입력/출력 디바이스의 각각의 큐 쌍 인스턴스에 인터페이싱하는 데이터 프로세싱 시스템의 다른 실시예를 도시하고 있는 도면.
도 30a는 다중 논리적 파티션이 논리적 파티션 내에 네이티브 디바이스 드라이버를 이용하는 자기 가상화 입력/출력 디바이스의 각각의 물리적 또는 가상 펑션 인스턴스에 인터페이싱되는 도 26에 도시되어 있는 것과 같은 데이터 프로세싱 시스템의 다른 실시예를 도시하고 있는 도면.
도 30b는 도 30a에 도시되어 있는 것과 같이, 데이터 프로세싱 시스템 내의 각각의 물리적 메모리 위치 내로 다중 논리적 파티션의 디바이스 드라이버 페이지 테이블 엔트리의 맵핑 및 물리적 메모리 구조를 도시하고 있는 도면.
도 31a는 본 발명의 양태에 따라, 파티션 부속부 인스턴스가 자기 가상화 입력/출력 디바이스에 다중 논리적 파티션을 인터페이싱하는 도 28에 도시되어 있는 것과 같은 데이터 프로세싱 시스템의 일 실시예를 도시하고 있는 도면.
도 31b는 본 발명의 양태에 따라, 각각의 물리적 메모리 위치 내로의 다중 파티션 부속부의 페이지 테이블 엔트리의 맵핑 및 물리적 메모리 구조를 도시하고 있고, 물리적 메모리 구조 내의 공통의 코드 및 판독 전용 데이터 맵핑을 도시하고 있는 도면.
도 32는 본 발명의 하나 이상의 양태를 구비하는 컴퓨터 프로그램 제품의 일 실시예를 도시하고 있는 도면.
도 1은 일 예에서 대칭형 멀티프로세싱(SMP) 서버 컴퓨터 시스템인 데이터 프로세싱 시스템(100)의 블록 다이어그램이다. SMP 서버 컴퓨터 시스템(100)은 해당 애플리케이션을 실행하기 위해 사용자 애플리케이션에 맵핑될 수 있는, 즉 사용자 애플리케이션에 의해 일시적으로 소유될 수 있는 물리적 하드웨어 디바이스를 포함한다.
SMP 서버 컴퓨터 시스템(100)은 물리적 SMP 서버(102)를 포함한다. 물리적 SMP 서버(102)는 프로세서(104), 메모리(106) 및 I/O 어댑터(108)와 같은 물리적 하드웨어 디바이스를 포함한다. 이들 물리적 디바이스는 하이퍼바이저(110)에 의해 관리된다. 프로세서(104)는 공유 프로세서이고, 그 각각은 프로세서 상의 다중의 상이한 스레드를 동시에 실행할 수 있는 동시 멀티스레딩(SMT)-가능 프로세스일 수 있다.
가상 서버는 동일한 용량, 인터페이스 및 상태를 갖는 물리적 서버용 프록시이다. 가상 서버는 물리적 SMP 서버 컴퓨터 시스템(100) 상에 상주하는 하이퍼바이저에 의해 생성되어 관리된다. 가상 서버는 그 사용자에, 즉 운영 체제, 미들웨어 및 그 상에서 실행되는 애플리케이션 소프트웨어에 물리적 SMP 서버인 것으로 여겨진다. SMP 서버 컴퓨터 시스템(100)은 가상 서버(112) 및 가상 서버(112a)와 같은 하나 이상의 가상 서버를 포함한다.
각각의 가상 서버는 해당 가상 서버의 독점적인 사용을 위해 이용 가능한 그 고유의 프로세서(들), 메모리 및 I/O 어댑터(들)를 포함하기 위해 그 소프트웨어인 것으로 여겨진다. 예를 들어, 가상 서버(112)는 가상 프로세서(120), 가상 메모리(122) 및 가상 I/O 어댑터(124)를 포함한다. 가상 서버(112a)는 가상 프로세서(120a), 가상 메모리(122a) 및 가상 I/O 어댑터(124a)를 포함한다.
각각의 가상 서버는 운영 체제, 미들웨어 및 애플리케이션을 포함하는 그 고유의 소프트웨어 환경을 지원한다. 각각의 가상 서버의 소프트웨어 환경은 다른 가상 서버의 소프트웨어 환경과는 상이할 수 있다. 예를 들어, 각각의 가상 서버에 의해 실행되는 운영 체제는 서로 상이할 수 있다.
예를 들어, 가상 서버(112)는 운영 체제(114), 미들웨어(116) 및 애플리케이션(118)을 지원한다. 가상 서버(112a)는 운영 체제(114a), 미들웨어(116a) 및 애플리케이션(118a)을 지원한다. 운영 체제(114, 114a)는 동일하거나 상이한 운영 체제일 수 있다.
가상 서버는 물리적 서버와 동일한 방식으로 정보를 액세스하고 제공하는 물리적 서버인 것처럼 보이는 바와 같이 사용자에 동작하는 서버 환경을 규정하는 서버의 논리적 서술이다. 각각의 가상 서버에 대해 규정된 가상 프로세서, 가상 메모리 및 가상 I/O 어댑터는 물리적 프로세서, 메모리 및 I/O 어댑터를 위한 논리적 대체물이다.
하이퍼바이저(110)는 그 가상 프로세서, 가상 메모리 및 가상 I/O 어댑터를 갖는 가상 서버와 이들 가상 디바이스를 구현하도록 선택된 물리적 하드웨어 디바이스 사이의 맵핑을 관리한다. 예를 들어, 가상 프로세서가 디스패치될 때, 물리적 프로세서(104) 중 하나와 같은 물리적 프로세서는 해당 가상 프로세서를 실행하고 구현하는데 사용될 하이퍼바이저(110)에 의해 선택된다. 하이퍼바이저(110)는 가상 디바이스로의 물리적 디바이스 및 그 일시적 할당의 선택을 관리한다.
하이퍼바이저(110)는 디스패치 시간 조각(time slice) 중에 모든 논리적 파티션을 서비스한다. 디스패치 시간 조각은 특정 시간 길이이다. 각각의 디스패치 시간 조각 중에, 하이퍼바이저(110)는 각각의 논리적 파티션에 물리적 프로세서를 배당하거나 할당할 것이다. 논리적 파티션이 물리적 프로세스 상에 시간 할당되어 있을 때, 논리적 파티션에 의해 규정된 가상 프로세서는 물리적 프로세서에 의해 실행될 것이다.
하이퍼바이저(110)는 가상 SMP 서버를 동적으로 생성하고, 관리하고, 파괴하는 책임이 있다. 전체 가상 프로세서, 가상 I/O 어댑터 및 가상 메모리 블록은 하이퍼바이저(110)에 의해 제거되거나 추가될 수 있다. 하이퍼바이저(110)는 또한 동적 자원 할당, 물리적 자원의 시간 공유의 관리 및 운영 체제를 수반하지 않고 프로세서에 맵핑된 물리적 자원을 변경하는 책임이 있다. 하이퍼바이저(110)는 또한 공유가 요구되지 않는 상황을 위해 가상 자원에 물리적 자원을 전용하게 할 수 있다. 하이퍼바이저(110)는 물리적 자원의 추가 또는 제거를 관리하는 책임이 있다. 하이퍼바이저(110)는 상위 레벨 애플리케이션에 이들 추가 및 삭제를 명백하게 한다.
도 2는 본 명세서에 설명되어 있는 개념을 구현하는데 사용될 수 있는 컴퓨터 시스템의 더 상세한 도면이다. 데이터 프로세싱 시스템(200)은 시스템 버스(206)에 접속된 프로세서(202, 204)와 같은 복수의 공유 프로세서 또는 SMT-가능 프로세서를 포함하는 대칭형 멀티프로세서(SMP) 시스템일 수 있다. 대안적으로, 단일 프로세서 시스템이 이용될 수 있다. 도시되어 있는 예에서, 프로세서(204)는 서비스 프로세서이다. 각각의 SMT-가능 프로세서는 하나의 프로세서 상에서 다중 하드웨어 스레드를 동시에 실행할 수 있다.
메모리 제어기/캐시(208)가 시스템 버스(206)에 또한 접속되어 로컬 메모리(209)에 인터페이스를 제공한다. I/O 버스 브리지(210)가 시스템 버스(206)에 접속되고, I/O 버스(212)에 인터페이스를 제공한다. 메모리 제어기/캐시(208) 및 I/O 버스 브리지(210)는 도시되어 있는 바와 같이 일체화될 수도 있다.
I/O 버스(212)에 접속된 주변 장치 상호 접속(PCI) 버스 브리지(214)가 PCI 로컬 버스(216)에 인터페이스를 제공한다. 다수의 모뎀이 PCI 버스(216)에 접속될 수 있다. 통상의 PCI 버스 구현은 4개의 PCI 확장 슬롯 또는 애드인 커넥터(add-in connector)를 지원할 수 있다. 도 1의 네트워크 컴퓨터로의 통신 링크(108 내지 112)가 애드인 보드를 통해 PCI 로컬 버스(216)에 접속된 모뎀(218) 및 네트워크 어댑터(220)를 통해 제공될 수 있다. 네트워크 어댑터(220)는 예를 들어 R45 커넥터용 이더넷 네트워크와 같은 네트워크로 송출되는 아날로그 신호를 조정하는 물리적 레이어(282)를 포함한다. 매체 액세스 제어기(MAC)(280)가 네트워크 어댑터(220) 내에 포함된다. 매체 액세스 제어기(MAC)(280)는 버스(216)에 결합되고 디지털 네트워크 신호를 프로세싱한다. MAC(280)은 버스(216)와 물리적 레이어(282) 사이의 인터페이스로서 기능한다. MAC(280)은 데이터 패킷의 전송 및 수신에 수반되는 다수의 기능을 수행한다. 예를 들어, 데이터의 전송 중에, MAC(280)은 어드레스 및 에러 검출 필드를 갖는 패킷으로 전송될 데이터를 어셈블링한다. 역으로, 패킷의 수신 중에, MAC(280)은 패킷을 역어셈블링하고, 어드레스 검사 및 에러 검출을 수행한다. 게다가, MAC(280)은 통상적으로 송신된 디지털 신호의 인코딩/디코딩을 수행하고, 프리앰블(preamble) 생성/제거 뿐만 아니라 비트 전송/수신을 수행한다.
추가의 PCI 버스 브리지(222, 224)는 그로부터 추가의 모뎀 또는 네트워크 어댑터가 지원될 수 있는 추가의 PCI 버스(226, 228)를 위한 인터페이스를 제공한다. 이 방식으로, 데이터 프로세싱 시스템(200)은 다중 네트워크 컴퓨터에 접속을 허용한다. 메모리-맵핑된 그래픽 어댑터(230) 및 하드 디스크(232)가 또한 도시되어 있는 바와 같이 직접적으로 또는 간접적으로 I/O 버스(212)에 접속될 수 있다.
서비스 프로세서(204)가 시스템 프로세서, 메모리 구성 요소 및 I/O 브리지에 신호를 보내 데이터 프로세싱 시스템(200)의 이해를 생성하고 목록을 만들고 형태화한다. 서비스 프로세서(204)는 또한 시스템 프로세서, 메모리 제어기 및/또는 I/O 브리지에 신호를 보냄으로써 발견된 모든 소자 상에서 내장 자체 시험(BIST), 기초 검사 테스트(BAT) 및 메모리 테스트를 실행한다. BIST, BAT 및 메모리 테스트 중에 검출된 실패에 대한 임의의 에러 정보가 서비스 프로세서(204)에 의해 수집되어 보고된다.
당 기술 분야의 숙련자들은 도 2에 도시되어 있는 하드웨어가 변경될 수 있다는 것을 이해할 수 있을 것이다. 예를 들어, 광학 디스크 드라이브 등과 같은 다른 주변 장치가 또한 도시되어 있는 하드웨어에 추가하여 또는 그 대신에 사용될 수 있다. 도시되어 있는 예는 본 발명에 대해 구성적 제한을 암시하는 것으로 의미되는 것은 아니다.
본 발명은 도 1 또는 도 2에 도시되어 있는 컴퓨터 또는 데이터 프로세싱 시스템 중 하나 내에서 실행될 수 있다. 특정의 상업적으로 이용 가능한 예로서, 이하에 설명되는 바와 같은 파티션 부속부를 구현하는 데이터 프로세싱 시스템은 Power.org(http://www.power.org/members/developers/specs/PAPR_Version_2.2_09Oct07.pdf)의 "파워 아키텍쳐 플랫폼 레퍼런스(Power Architecture Platform Reference)"(PAPR) 재료에 설명된 바와 같은 IBM의 p/i 시리즈 제품 라인 펌웨어 및 시스템웨어에서 발견되는 기술을 구성할 수 있다.
이하에 개시되는 것은 파티션 부속부의 개념이고, 이는 풀 논리적 파티션보다 더 제한되어 있는 파티션이다. 이하에 설명되는 바와 같이, 파티션 부속부는 플랫 정적 유효 어드레스 공간 및 문제 상태에서 실행된다. 이들 제한은 하이퍼바이저가 논리적 파티션으로부터 파티션 부속부의 상태 데이터로 상태 머쉰의 문맥 교환과 연관된, 즉 논리적 파티션 사이의 상태 머쉰의 문맥 교환에 비교된 시스템 오버헤드의 상당한 감소를 생성하는 하이퍼바이저의 범위 및 프로세스 최적화를 적용하는 것을 허용한다. 다른 양태에서, 파티션 부속부는 풀 논리적 파티션과 유사하다. 예를 들어, 파티션 부속부는 풀 논리적 파티션과 유사하게 물리적으로 또는 가상으로 자원을 할당받을 수 있다. 또한, 파티션 부속부는 가상 입력 출력 서버(VIOS)와 같은 풀 논리적 파티션과 유사한 가상 입력 출력(VIO) 통신 메커니즘의 종단점일 수 있다.
도 3은 본 발명의 양태에 따라, 클라이언트 논리적 파티션(또는 간단히 클라이언트 파티션)(310) 및 파티션 부속부(320)를 포함하는 데이터 프로세싱 시스템(300)의 일 예를 도시하고 있다. 클라이언트 파티션(310)은 하나 이상의 고객 애플리케이션(312), 운영 체제 인스턴스(314) 및 가상 I/O 설비(316)를 포함하는 논리적 파티션이다. 클라이언트 파티션(310)은 하이퍼바이저(330) 위에서 실행되고, 하이퍼바이저 자체에 의해 제공된 것보다 높은 레벨 펑션을 제공한다. 하이퍼바이저(330)는 하나 이상의 I/O 디바이스(350)를 포함하는 것으로 도시되어 있는 기초 시스템 하드웨어(340) 위에서 실행한다.
파티션 부속부(320)는 개념적으로는 클라이언트 파티션(310)의 자 파티션(child partition)이다. 파티션 부속부는 풀 논리적 파티션보다 작지만, 하이퍼바이저가 파티션 부속부와 그 내부에서 실행하는 클라이언트 파티션 사이의 보안 및 격리를 강조하는 방식으로 실행된다. 파티션 부속부는 풀 논리적 파티션과 비교하여 감소된 기능부를 구비하는데, 예를 들어 메모리 관리 유닛(MMU) 구성 또는 부유점 설비로의 액세스를 갖지 않고, 단지 원하는 서비스를 실행하는데 요구되는 기능부(예를 들어, I/O 드라이버)만이 제공되는 환경이다. 도시되어 있는 예에서, 파티션 부속부(320)는 가상 I/O 인터페이스(322)와, I/O 디바이스(350)로의 액세스를 허용하는 하드웨어 디바이스 드라이버 서비스(324)를 포함한다. 작동시에, 클라이언트 파티션(310)은 도시되어 있는 바와 같이 파티션 부속부(320)를 거쳐 I/O 디바이스(350)에 액세스한다. 파티션 부속부 환경 내의 기능부를 감소함으로써, 파티션 부속부를 디스패치하고 유지하는 실행 시간 오버헤드(다른 풀 논리적 파티션과 비교하여)가 감소되고, 따라서 가상 입력 출력 서버(VIOS)로서 개별 논리적 파티션을 사용하는 다수의 성능 단점이 회피된다.
특정 예로서, 파티션 부속부는 본 명세서에 디바이스 드라이버 서비스를 위한 감소된 운영 체제 환경을 실행하는 것으로서 설명되어 있다. 이 서비스는 단지 예로서만 제공된다. 파티션 부속부는 디바이스 드라이버에 의해 요구되는 구조만을(일 예에서) 포함하는 최소의 최적의 인프라구조를 제공한다. 예를 들어, 리눅스 디바이스 드라이버가 파티션 부속부의 내부에서 실행되어야 하면, 최소 실행 환경은 리눅스 디바이스 드라이버가 요구하는 리눅스 커널 서비스 또는 등가 서비스만을 포함한다. AIX 디바이스 드라이버가 파티션 부속부의 내부에서 실행되어야 하면, 최소 실행 환경은 AIX 디바이스 드라이버가 요구하는 AIX 커널 서비스 또는 등가 서비스만을 포함한다. 유리하게는, 파티션 부속부는 하이퍼바이저 인터페이스에 대해 직접적으로 하이퍼바이저/문제-상태에서 실행된다. 이하에 더 상세히 설명되는 바와 같이, 파티션 부속부의 디스패치는 풀 파티션 문맥 교환을 필요로 하지 않는데, 이는 부속부 커널 요건을 단순화한다. 이는 부분적으로는 클라이언트 파티션의 가상 어드레스 페이지 테이블 내로 파티션 부속부를 맵핑함으로써 성취된다. 클라이언트 파티션 대 파티션 부속부 격리는 예를 들어 하이퍼바이저-관리된 메모리 키를 거쳐 성취될 수 있다. 유리하게는, 파티션 부속부는 고객 뷰 가능하지 않다. 또한, 동일한 파티션 부속부 서비스(본 명세서에 글로벌 파티션 부속부 서비스라 칭함)는 이하에 설명되는 바와 같이 다중 클라이언트 파티션 내에서 인스턴스화될 수 있다.
도 4a 내지 도 4c는 다수의 운영 체제 및 플랫폼 과제를 처리하기 위해 본 명세서에 개시된 개념에 따라 구현될 수 있는 다양한 파티션 부속부 사용 모델을 도시하고 있다. 도 4a는 개념적으로는 하이퍼바이저(430)를 통해 전용 자원(440)에 액세스하기 위해 개시 클라이언트 파티션(410) 내에 부분적으로 상주하는 파티션 부속부(420)(또한 본 예에서 로컬 파티션 부속부라 칭함)의 일 예를 도시하고 있다. 예를 들어, 공통 어댑터/드라이버 서비스가 각각의 전용 어댑터(즉, 자원)를 위한 파티션 부속부(420)에 의해 제공될 수 있다.
도 4b는 (예를 들어) 가상 입력 출력 서버 파티션과 같은 서비스 논리적 파티션이 파티션 부속부의 인스턴스화를 위해 메모리 및 물리적 자원을 공여하는 글로벌 파티션 부속부의 예를 도시하고 있다. 이러한 글로벌 파티션 부속부(421)는 다중 클라이언트 파티션(410)에 의해 액세스 가능하거나 연결 가능하고, 예를 들어 하이퍼바이저(430)를 거쳐 자원(440)에 입력 출력 서비스를 제공한다. 특정 예로서, 글로벌 파티션 부속부는 공통 어댑터 드라이버 서비스를 포함할 수 있고, 자원은 공유 어댑터를 포함할 수 있다.
도 4c는 하이퍼바이저(430)가 부속부를 위한 자원을 제공하는 글로벌 파티션 부속부(422)의 대안 실시예이다. 이 구현예에서, 하이퍼바이저는 예를 들어 하이퍼바이저의 실행 도메인 내에 다른 방식으로 존재할 수 있는 보호 또는 격리 서비스를 위해 그 자신의 사용을 위한 파티션 부속부를 이용한다.
달리 설명되지 않으면, 이하에 설명되는 파티션 부속부 실시예는 하이퍼바이저 격리 및 보안 메커니즘에 의해 클라이언트 파티션으로부터 여전히 분리된 클라이언트 파티션의 부분인 실행 환경인 것으로 가정된다.
도 5는 도 4b의 실시예인 다중 클라이언트 파티션에 의해 이용되는 글로벌 파티션 부속부의 일 상세한 예를 도시하고 있다. 이 예에서, 논리적 파티션(LPAR A, LPAR B)(510A, 510B)은 클라이언트 파티션이고, 파티션(510C)은 예를 들어 입력/출력 서비스를 제공하기 위한 클라이언트 파티션(510A, 510B)에 의해 이용되는 가상 입력 출력 서버 파티션이다. 본 발명에 따르면, 입력/출력 서비스[이 예에서, 부속부 디바이스 드라이버(520)라 칭함]는 하이퍼바이저(530)를 통해 하나 이상의 입력/출력 경로(521)를 거쳐 입력/출력 하드웨어(540)에 액세스하기 위한 파티션 부속부 제공 디바이스 드라이버 서비스(520A, 520B)이다. 이 예에서, 파티션 부속부는 각각의 클라이언트 파티션으로부터 입력/출력 하드웨어의 더 많은 직접적인 연결 또는 더 직접적인 경로를 용이하게 한다. 이하에 더 설명되는 바와 같이, 파티션 부속부는 파티션 부속부 인스턴스를 이용하는 클라이언트 파티션에 의해 각각 공여된 가상 어드레스 공간 내로 합체된다.
파티션 부속부가 실행 가능한 프로그램이 되게 하기 위해, 하이퍼바이저는 파티션 부속부 서비스를 사용하는 클라이언트 파티션과 함께 파티션 부속부 환경을 설정하도록 협상한다. 이 협상이 완료되면, 클라이언트 파티션은 파티션 부속부에 의해 사용을 위해 하이퍼바이저에 그 가상 어드레스 공간의 부분을 공여할 것이다. 하이퍼바이저는 하드웨어 및 하이퍼바이저 설비를 사용하여 클라이언트가 더 이상 공여된 자원(예를 들어, 공여된 가상 어드레스 공간)에 액세스하거나 이 자원을 수정할 수 없는 것을 보장한다. 하이퍼바이저는 공여된 가상 어드레스 자원을 사용하여 파티션 부속부를 실행하도록 요구된 유효 어드레스 맵핑을 인스턴스화한다. 이후에, 하이퍼바이저는 공여된 가상 어드레스 공간의 그 제어를 재프로그래밍함으로써 클라이언트 파티션 또는 파티션 부속부를 디스패치하는 사이에 스위칭할 수 있다. 클라이언트 파티션이 실행될 때, 공여된 가상 어드레스 범위를 제외하고는 그에 할당된 모든 가상 어드레스 공간에 액세스할 수 있고, 파티션 부속부가 실행될 때 하이퍼바이저는 공여된 가상 어드레스 범위, 즉 가능화된 가상 어드레스 공간을 제외하고는 클라이언트 파티션의 모든 가상 어드레스로 액세스가 불가능하다. 이 활성/비활성 가상 어드레스 범위의 토글링은 예를 들어 가상 입력/출력 서버 파티션으로 스위칭될 필요가 있는 바와 같이, 2개의 풀 논리적 파티션 사이의 현재 상태 머쉰의 완전한 문맥 교환을 실행하기 위해 전체 메모리 관리 및 어드레스 변환 하드웨어를 재프로그래밍하는 것보다 상당히 빠르다. 이 방식으로, 파티션 부속부 어드레스 공간은 클라이언트 파티션의 메모리 관리 및 어드레스 변환 하드웨어 자원으로부터 분할되어 분리된다. 따라서, 파티션 부속부는 프로세서의 관점으로부터 클라이언트 파티션의 부분이지만, 클라이언트 파티션 및 하이퍼바이저의 관점으로부터는 개별 엔티티이다.
유리하게는, 본 명세서에 제시된 파티션 부속부 개념은 클라이언트 파티션에 서비스를 제공하기 위해 풀 논리적 파티션을 사용할 필요성을 감소시킨다. 이는 따라서 자원을 자유롭게 하고 고객의 작업 부하를 위한 성능을 향상시킨다. 추가적으로, 본 명세서에 개시된 파티션 부속부는 가상화 서비스와 연관된 성능 페널티를 감소시킴으로써 운영 체제 특정 서비스의 개발 대신에 가상 플랫폼 서비스의 개발 및 전개를 조장한다. 이는 따라서 서비스가 선천적으로 다중 운영 체제 중에서보다는 단지 1회만(즉, 파티션 부속부 내에서) 구현될 수 있기 때문에, 절약 및 비용 개발을 허용한다.
파티션 부속부를 인스턴스화하고 이용하기 위한 프로토콜의 다양한 예가 도 6 내지 도 11을 참조하여 이하에 설명된다.
도 6은 도 4a에 도시되어 있는 바와 같이 사용을 위한 로컬 파티션 부속부를 생성하기 위한 프로세스의 일 실시예의 흐름도이다. 파티션 부속부 인스턴스화 또는 셋업 프로토콜(600)은 클라이언트 파티션이 파티션 부속부 서비스를 원하는지 여부의 질의(605)로 시작한다. 만일 "아니오"이면, 프로토콜은 종료한다(610). 다르게는, 클라이언트 파티션은 파티션 부속부를 위한 그 가상 어드레스 공간 및 메모리 공간의 부분을 보존하고(615), 이들 공여된 자원과 파티션 부속부를 인스턴스화하도록 하이퍼바이저를 호출한다(620). 하이퍼바이저는 새로운 파티션 부속부(관리자로부터 은폐되어 있는)를 생성하고, 파티션 부속부에 공여된 자원을 할당한다(625). 새로운 파티션 부속부를 생성한다는 것은 하이퍼바이저가 디스패치 가능한 프로그램 문맥을 생성하는 것을 의미한다. 하이퍼바이저는 하드웨어 보호 및 공여된 가상 어드레스 공간 및 공여된 메모리의 강조를 설정하여, 클라이언트 파티션이 더 이상 해당 공간에 액세스할 수 없게 한다(630). 또한, 하이퍼바이저는 파티션 부속부를 위한 새로운 디스패치 가능한 상태를 생성한다(635). 이 새로운 디스패치 가능한 상태는 파티션 부속부가 멀티스레드된 하드웨어 코어의 개별 하드웨어(SMT) 스레드 상에 디스패치될 수 있고, 반면에 프로세서 코어의 다른 SMT 스레드는 파티션 부속부를 호출하는 클라이언트 파티션을 계속 실행하는 것을 의미한다. 본 발명의 이 양태는 도 19 내지 도 22를 참조하여 이하에 더 설명된다.
다음, 하이퍼바이저는 공여된 부속부 메모리 내에 파티션 부속부 프로그램 이미지를 로딩하고(640), 부속부 실행을 초기화한다(645). 파티션 부속부 실행 환경을 초기화하는 것은 가상 어드레스 변환 테이블, 부속부 보호 키 및 특정 하이퍼바이저 문제 상태 특권에 대해 하이퍼바이저가 유효 어드레스 공간을 초기화하는 것을 포함한다. 다음, 하이퍼바이저는 파티션 부속부 프로그램 엔트리점에서 실행을 시작하도록 파티션 부속부를 디스패치하고(650), 하이퍼바이저는 클라이언트 파티션을 위한 파티션 부속부 서비스 인터페이스 호를 설정한다(655). 하이퍼바이저는 파티션 부속부에 의해 제공된 프로토콜 또는 펑션마다 클라이언트 파티션을 소환하거나 호출한다. 하이퍼바이저는 이어서 파티션 부속부 인스턴스화의 상태를 갖고 클라이언트 파티션으로 복귀한다(660).
도 7은 본 발명의 양태에 따라 로컬 파티션 부속부를 생성하기 위한 프로세스의 일 상세한 예를 도시하고 있다. 이 예에서, 파티션 부속부는 디바이스 드라이버 서비스를 포함한다. 입력/출력 인스턴스화 또는 셋업(700)은 클라이언트 파티션이 입력/출력 디바이스 발견을 수행하는 것(705)으로 시작한다. 프로세싱은 클라이언트 파티션이 발견된 입력/출력 디바이스를 위한 그 자신의 디바이스 드라이버를 갖는지 여부를 질의한다(710). 만일 "예"이면, 클라이언트 파티션은 정상 디바이스 드라이버 로드 및 구성으로 진행하고(715), 이는 프로세싱을 종료한다(720). 클라이언트 파티션이 발견된 I/O 디바이스에 대한 그 자신의 디바이스 드라이버를 갖지 않으면, 프로세싱은 파티션 부속부 이미지가 이 I/O 디바이스를 위해 이용 가능한지 여부를 판정한다(725). 만일 "아니오"이면, 디바이스는 구성될 수 없고(730), 프로세싱은 종료한다(720).
파티션 부속부 이미지가 이용 가능한 것으로 가정하면, 클라이언트 파티션은 파티션 부속부 이미지를 위한 그 가상 어드레스 공간 및 메모리 공간의 부분을 보존하거나 공여하고(735), 공여된 가상 어드레스 공간 및 메모리 공간, 뿐만 아니라 I/O 디바이스(740)를 갖고 파티션 부속부를 인스턴스화하도록 하이퍼바이저를 호출한다(740). 하이퍼바이저는 새로운 파티션 부속부를 생성하고 파티션 부속부에 공여된 자원을 할당한다(745). 하이퍼바이저는 이어서 공여된 가상 어드레스 공간 및 메모리 공간의 적절한 하드웨어 보호 및 강조를 설정하여, 클라이언트 파티션이 더 이상 공여된 공간에 액세스할 수 없게 된다(750). 파티션 부속부를 위한 새로운 디스패치 가능한 상태는 하이퍼바이저에 의해 생성된다(755). 전술된 바와 같이, 이 새로운 디스패치 가능한 상태는 유리하게는 SMT 데이터 프로세싱 시스템의 단일 하드웨어 스레드 상에 디스패치될 수 있고, 반면 다른 하드웨어 스레드가 클라이언트 파티션의 호출(또는 요청)을 계속 실행한다. 하이퍼바이저는 공여된 부속부 메모리 내에 파티션 부속부 이미지를 로딩하고(760), 파티션 부속부 실행 환경을 초기화한다(765). 파티션 부속부는 이어서 파티션 부속부 이미지 엔트리점에서 초기화 실행을 시작하도록 디스패치된다(770). 하이퍼바이저는 클라이언트 파티션을 위한 파티션 부속부 서비스 인터페이스 호를 설정하고, 이는 예를 들어 주 가상화 디바이스 클래스를 위한 인터페이스를 대기하는 가상 입력/출력 요청을 포함한다(755). 하이퍼바이저는 파티션 부속부 인스턴스화의 상태 및 클라이언트 파티션에 할당된 새로운 가상 디바이스를 갖고 클라이언트 파티션으로 복귀하고(780), 클라이언트 파티션은 정상 가상 디바이스 드라이버 로드 및 구성으로 진행한다(785).
도 8은 도 4b에 도시되어 있는 바와 같이 글로벌 파티션 부속부를 인스턴스화하기 위한 프로세스의 일 실시예의 흐름도이다. 이 예에서, 파티션 부속부 인스턴스화는 가상 입력 출력 서버(VIOS)로서 기능하는 논리적 파티션으로부터 시작한다. 부속부 인스턴스화 셋업 프로토콜(800)은 글로벌 파티션 부속부를 위해 그 메모리 공간 및 가상 어드레스 공간의 VIOS 보존 또는 공여부로 시작한다(805). VIOS는 가속화된 가상화된 액세스가 제공되게 하기 위해, 공여된 메모리 및 가상 어드레스 공간을 갖는 글로벌 파티션 부속부를 인스턴스화하도록 하이퍼바이저, 뿐만 아니라 I/O 디바이스를 호출한다(810). 하이퍼바이저는 재차 관리자로부터 은폐되어 있는 새로운 글로벌 파티션 부속부를 생성하고, 공여된 메모리 공간 및 I/O 디바이스를 파티션 부속부에 할당한다(815). 하이퍼바이저는 공여된 가상 어드레스 공간 및 메모리 공간의 하드웨어 보호 및 강조를 설정하여, VIOS가 더 이상 공여된 공간에 액세스할 수 없게 된다(820). 하이퍼바이저는 개별 SMT 스레드 상에 디스패치될 수 있는 파티션 부속부를 위한 새로운 디스패치 가능한 상태를 생성하고(825), 반면에 멀티스레드된 하드웨어 프로세서 코어의 하나 이상의 다른 SMT 스레드는 파티션 부속부(825)를 호출하는 VIOS 파티션을 계속 실행한다(825). 하이퍼바이저는 공여된 부속부 메모리 내로 글로벌 파티션 부속부 프로그램 이미지를 로딩하고(830), 부속부 실행 환경을 초기화한다(835). 하이퍼바이저는 다음에 부속부 이미지 엔트리점(840)에서 초기화 실행을 시작하도록 글로벌 파티션 부속부를 디스패치하고, 클라이언트 파티션으로부터 할당 또는 연결을 위해 이용 가능한 글로벌 파티션 부속부 서비스 인터페이스 호(들) 및 가상 디바이스 인스턴스(들)를 설정하고(845), 이는 프로세싱 프로토콜을 완료한다(850).
도 9는 도 8과 연계하여 전술된 바와 같이 생성된 VIOS 파티션 부속부와 같은 글로벌 파티션 부속부에 연결하기 위한 프로세스의 일 예를 도시한다. 이 클라이언트 파티션 연결(900)은 클라이언트 파티션이 가상 I/O 디바이스 발견을 수행하는 것으로(905) 시작한다. 프로세싱은 당해의 가상 I/O 디바이스가 글로벌 파티션 부속부 가속화가 가능한지 여부, 즉 부속부 서비스가 포괄적으로 존재하는지 여부를 판정한다(910). 만일 "아니오"이면, 클라이언트 파티션은 예를 들어 VIOS를 사용하여 정상 가상 디바이스 구성으로 진행하고(915), 이는 프로세싱을 종료한다(920). 가상 I/O 디바이스 부속부 이미지가 이용 가능하면, 클라이언트 파티션은 부속부를 위한 가상 어드레스 공간을 보존하거나 공여하고(925), 공여된 가상 어드레스 공간에 글로벌 파티션 부속부 이미지를 연결시키기 위해 하이퍼바이저를 호출한다(930). 하이퍼바이저는 클라이언트 파티션을 위한 공여된 가상 어드레스 공간의 하드웨어 보호 및 강조를 셋업하고(935), 글로벌 파티션 부속부는 공여된 가상 어드레스 공간을 이용하는 클라이언트 파티션 페이지 테이블로 맵핑된다. 하이퍼바이저는 글로벌 파티션 부속부로의 이 클라이언트 파티션을 위한 가상 I/O 맵핑을 생성한다. 그 후에, 프로세싱은 정상 가상 디바이스 구성을 계속하도록 클라이언트 파티션으로 복귀하고(940), 이는 프로세싱을 완료한다(920).
도 10은 클라이언트 파티션으로부터 제출된 파티션 부속부에 의해 서비스 요청을 프로세싱하기 위한 프로토콜의 일 실시예를 도시하고 있다. 파티션 부속부 서비싱(1000)은 클라이언트 파티션이 파티션 부속부 서비스를 호출할 필요가 있는지 여부를 질의하는 것으로(1005) 시작한다. 만일 "아니오"이면, 프로세싱은 종료한다(1010). 다르게는, 클라이언트 파티션은 원하는 부속부 서비스 호를 위한 파티션 부속부 서비스 인터페이스로 하이퍼바이저 호를 호출한다(1015). 프로세싱은 파티션 부속부 서비스가 이용 가능한지 여부를 판정한다(1020). 만일 "아니오"이면, 서비스 요청은 실패하고(1025), 프로세싱은 종료한다(1010).
파티션 부속부 서비스가 이용 가능한 것으로 가정하면, 하이퍼바이저는 파티션 부속부 서비스 요청을 수신하고(1030), 서비스 요청에 대기 상태로 되는지 현재 서비스 요청을 호출하는지 여부를 판정한다(1035). 서비스 요청이 대기되어 있으면, 하이퍼바이저는 파티션 부속부를 위한 서비스 요청을 대기시키고(1040), 클라이언트 파티션이 파티션 부속부 서비스를 호출할 필요가 있는지에 대해 질의하기 위해 복귀한다(1005). 서비스 요청이 현재 호출되어야 하면, 하이퍼바이저는 현재 상태 머쉰의 "경량" 문맥 교환을 수행하고, 파티션 부속부에 프로세스의 제어를 제공한다(1050). 이 경량 문맥 교환은 도 12 내지 도 22를 참조하여 이하에 더 상세히 설명된다. 파티션 부속부는 요청된 서비스를 수행하거나 개시하고, 이어서 하이퍼바이저로 복귀한다(1055). 하이퍼바이저는 유사한 경량 문맥 교환을 수행하고 파티션 부속부 서비스를 개시하는 클라이언트 파티션으로 프로세서의 제어를 재차 제공하고(1060), 이는 프로세싱을 완료한다(1010).
도 11은 파티션 부속부로부터 서비스 요청 완료를 비동기적으로 취급하기 위한 프로토콜의 일 실시예의 흐름도를 도시하고 있다. 파티션 부속부 요청 완료 프로세싱(1100)은 파티션 부속부 서비스 요청의 질의 확인 완료(1105)로 시작된다. 요청 프로세싱이 완료되지 않으면, 프로세싱은 파티션 부속부 서비스 요청이 완료될 때까지 대기하고, 이 시점에 서비스 요청의 완료는 하이퍼바이저에 대해 대기한다(1110). 프로세싱은 이어서 클라이언트 파티션이 서비스 요청의 완료에 관한 중단을 폴링하거나 예측하는지를 판정한다(1115). 폴링이 이용되면, 클라이언트 파티션은 서비스 요청의 완료를 위해 하이퍼바이저에 폴링하고(1120), 다르게는 하이퍼바이저는 클라이언트 파티션을 위한 중단을 포스팅한다(1125). 하이퍼바이저는 이어서 경량 문맥 교환(이하에 설명됨)을 수행하고, 클라이언트 파티션 중단 완료 핸들러를 호출한다(1130). 클라이언트 파티션은 서비스 요청의 완료를 프로세싱하고(1135), 이는 프로세싱 프로토콜을 완료한다(1140).
도 12 내지 도 15는 데이터 프로세싱 시스템 내의 풀 논리적 파티션 대 논리적 파티션 문맥 교환의 일 예를 도시하고 있다. 2개의 개별 풀 파티션 사이의 문맥 교환시에, 각각의 논리적 파티션은 그에 할당된 그 고유의 개별 가상 어드레스 공간을 갖는다. 하이퍼바이저가 개별 프로세서 위에서 풀 파티션 스위칭을 수행할 때, 하이퍼바이저는 프로세스 문맥 머쉰 상태(범용 레지스터, 부유점 레지스터, 특정 용도 레지스터, 명령 어드레스 레지스터 등)를 저장하고 재저장해야 할 뿐만 아니라, 메모리 관리 유닛(MMU) 하드웨어를 무효화하고 재개시해야 한다. 이는 풀 논리적 파티션 문맥 교환이 또한 상이한 가상 어드레스 공간으로의 스위칭 및 새로운 논리적 파티션의 메모리내 페이지 테이블로 지향시키기 위해 프로세서 내의 하드웨어 페이지 테이블 포인터를 변경하는 것을 의미하기 때문에 임의의 어드레스 변환 캐시(예를 들어, 변환 참조 버퍼)를 무효화하는 것을 포함한다. 풀 논리적 파티션 문맥 교환의 MMU 영향은 새로운 논리적 파티션이 또한 그가 디스패치될 때마다 참조시에 모든 그 어드레스 변환을 재설정해야 하기 때문에, 논리적 파티션 문맥 교환을 수행하는데 있어서 최대 비용이다. 이는 MMU 하드웨어가 무효화되거나 수정될 필요가 없고, 파티션 부속부가 사용되도록 허용되는 프로세서 문맥/레지스터의 부분집합이 파티션 부속부로의 상태 머쉰의 문맥 교환의 부분으로서 저장되고 재저장될 필요만이 있는 본 명세서에 개시된 부속부 파티션 개념에 대조된다(부속부 및 그 클라이언트 파티션이 가상 어드레스 공간을 공유하기 때문에).
도 12에 도시되어 있는 바와 같이, 제1 논리적 파티션(LPAR 1)(1200)은 LPAR 1에 할당된 가상 어드레스의 범위를 포함하는 실제 어드레스 페이지 테이블(1205)로의 가상 어드레스를 포함한다. 유사하게, 제2 논리적 파티션(LPAR 2)(1210)은 LPAR 2에 할당된 가상 어드레스의 범위를 포함하는 실제 어드레스 페이지 테이블(1215)로의 가상 어드레스를 포함한다. LPAR 1에 의해 이용된 가상 어드레스 공간 범위는 LPAR 2에 의해 이용된 가상 어드레스 공간으로부터 분리되고, 일 논리적 파티션은 다른 논리적 파티션의 가상 어드레스 공간에 액세스할 수 없다.
도 13은 프로세서 코어 머쉰(1300)의 메모리 관리 및 어드레스 변환 하드웨어를 포함하는 프로세서 머쉰 상태의 일 예를 도시하고 있다. 도시되어 있는 하드웨어는 범용 레지스터(1310), 부유점 레지스터(1320), 벡터 레지스터(1330), 특정 용도 레지스터(1340), 변환 참조 버퍼(1350), 및 세그먼트 참조 버퍼(1360)를 포함한다. 변환 참조 버퍼는 실제 어드레스 변환으로의 가상 어드레스의 캐시이고, 반면에 세그먼트 참조 버퍼는 가상 어드레스 변환에 유효한 것을 포함한다.
도 14에서, LPAR 1은 디스패치되는 것으로, 즉 프로세서 상태 머쉰 내에서 활성 또는 실행 상태에 있는 것으로 가정된다. 도시되어 있는 바와 같이, 이 LPAR 1 실행 머쉰 상태는 범용 레지스터(1310), 부유점 레지스터(1320), 벡터 레지스터(1330), 특정 용도 레지스터(1340), 변환 참조 버퍼(1350), 및 세그먼트 참조 버퍼(1360) 내에 상태 데이터를 포함한다. 특정 용도 레지스터 SDR1(1400)은 이 예에서 실행 상태의 논리적 파티션, 즉 LPAR 1(1200)의 실제 어드레스 페이지 테이블로의 가상 어드레스로 지향되고 따라서 권한을 부여한다. LPAR 2(1210)는 비활성 상태에 있다.
도 15는 LPAR 1이 스위칭 아웃되고 LPAR 2가 스위칭 인된 후에 프로세스 코어 머쉰 상태의 상황을 도시하고 있다. 도시되어 있는 바와 같이, LPAR 2(1210)의 머쉰 상태 데이터는 범용 레지스터(1310), 부유점 레지스터(1320), 벡터 레지스터(1330), 및 특정 용도 레지스터(1340) 내에 복원된다. 특정 용도 레지스터 SDR1(1400)은 이 경우에 LPAR 1(1200)이 비활성화된 상태로 LPAR 2(1210)의 실제 어드레스 테이블로의 가상에 지향하도록 스위칭된다. 그 결과, 세그먼트 참조 버퍼(1360)가 LPAR 2 상태 데이터를 갖고 복원되고, 변환 참조 버퍼(1350)가 무효화된다. 이 버퍼는 LPAR 2가 메모리 어드레스에 액세스함에 따라 채워질 것이다.
대조적으로, 도 16 내지 도 18은 본 발명의 양태에 따라 논리적 파티션으로부터 파티션 부속부로의 현재 머쉰 상태의 문맥 교환을 도시하고 있다. 도 16은 실제 어드레스 페이지 테이블(1620)로의 가상 어드레스를 포함하는 논리적 파티션(1600)(LPAR 1)을 포함하는 데이터 프로세싱 시스템의 일 실시예를 도시하고 있다. 데이터 프로세싱 시스템은 파티션 부속부(1610)를 더 포함한다. 이 예에서, 3개의 페이지 테이블 엔트리(1621)가 논리적 파티션의 가상 어드레스 공간 내로 파티션 부속부를 맵핑하기 위해 보유된다. 이 예는 논리적 파티션(1600)이 파티션 부속부(1610)를 개시하는 클라이언트 파티션인 것으로 가정한다. 따라서, 도 16에 도시되어 있는 바와 같이, 논리적 파티션의 개시는 파티션 부속부에 가상 어드레스 공간을 공여하고, 파티션 부속부 가상 어드레스 공간은 개시 논리적 파티션과 동일한 가상 어드레스 범위 내에 상주한다. 이는 LPAR 1의 실제 어드레스 페이지 테이블(1620)로의 가상 어드레스 내에 있는 파티션 부속부를 위해 보유된 페이지 테이블 엔트리에 의해 표현된다. 전술된 바와 같이, 하이퍼바이저의 관점으로부터, 스케쥴링 및 격리의 견지에서, 파티션 부속부는 개시 논리적 파티션(LPAR 1)으로부터 완전 분리된 파티션이다. 그럼에도 불구하고, 파티션 부속부 및 논리적 파티션은 표현된 바와 같이 가상 어드레스 공간 범위를 공유한다.
도 17은 LPAR 1이 활성의 실행 상태로 디스패치되어 있는 프로세서 코어 머쉰 상태의 예를 도시하고 있다. 도시되어 있는 바와 같이, LPAR 1의 머쉰 상태 데이터는 범용 레지스터(1710), 부유점 레지스터(1720), 벡터 레지스터(1730) 및 특정 용도 레지스터(1740)를 획득한다. 게다가, 파티션의 머쉰 상태는 실질적으로 변환 참조 버퍼(1750)를 채우고, 세그먼트 참조 버퍼(1760)를 채운다. 특정 용도 레지스터 SDR1(1700)은 LPAR 1(1600)의 실제 어드레스 페이지 테이블(1620)로의 가상 어드레스로 지향한다. 이 예에서, 파티션 부속부(1610)는 비활성 상태에 있다. 도시되어 있는 바와 같이, 변환 참조 버퍼(1750)는 여전히 부속부가 실행되고 있는 이전의 시간으로부터 파티션 부속부를 위한 하나 이상의 엔트리(1751)를 포함할 수 있다. 이들 엔트리(1751)는 논리적 파티션(1600)이 단일의 논리적 파티션 어드레스 공간의 하위 부분을 격리하는데 사용된 하드웨어 보호 키를 거쳐 이들 가상 어드레스에 액세스하는 것이 보호되기 때문에 무효화될 필요가 없다. 액세스 마스크 레지스터(AMR)(1700)라 라벨링된 예를 들어, 예를 들어 보호 키를 사용하여 특정 용도 레지스터에 의해 제어된 페이지 보호 메커니즘이 이용될 수 있다. AMR 레지스터(1770)는 임의의 주어진 순간에 능동적으로 턴온되는 키를 유지할 수 있다. 참조될 페이지 테이블 엔트리에 대해, 관련 키는 AMR 레지스터 내에서 가능화되어야 한다. 하이퍼바이저가 LPAR 1을 실행할 때, 하이퍼바이저는 보호 키를 설정하여 LPAR 1이 페이지 테이블 엔트리(1621) 또는 변환 참조 버퍼(1750)의 엔트리(1751)로의 액세스를 얻을 수 없게 된다.
도 18은 파티션 부속부(1610)가 활성 상태로 디스패치되어 있는 프로세스 코어 머쉰 상태를 도시하고 있다. 이 예에서, 파티션 부속부(1610)에 의해 제공된 부속부 서비스는 현재 비활성 상태의 LPAR 1(1600)을 위한 상태 정보를 유지하는 비부유점 레지스터(1720) 및 벡터 레지스터(1730)가 아니라 범용 레지스터(1710)를 이용한다. 또한, 단지 선택된 특정 용도 레지스터(1740)만이 파티션 부속부에 의해 이용되고, 나머지 특정 용도 레지스터는 무효화되거나 또는 LPAR 1(1600)을 위한 상태 정보를 포함한다. 특정 용도 레지스터 SDR1(1700)(이 예에서)은 파티션 부속부(1610)가 그 공여된 가상 어드레스 공간(1621) 내에 맵핑되기 때문에 LPAR 1의 실제 어드레스 페이지 테이블(1620)로의 가상 어드레스로 계속 지향한다. 변환 참조 버퍼(1750) 내의 다양한 엔트리(1751)가 파티션 부속부가 디스패치된 상태로 이용되고, 나머지 엔트리는 LPAR 1의 상태 정보를 유지한다. 세그먼트 참조 버퍼(1760) 내의 단일 엔트리(1761)가 어드레스 공간의 부속부의 부분을 커버하도록 설치되고, 나머지 엔트리는 LPAR 1에 의한 액세스로부터 보호되는 LPAR 1을 위한 상태 정보를 유지한다. 예를 들어 특정 용도 레지스터 AMR(1700)에 의해 이용된 보호 키에 의해, 파티션 부속부는 단지 주지된 레지스터 및 테이블 엔트리로의 액세스를 갖는다. 하이퍼바이저의 관점으로부터, 파티션 부속부의 디스패치는 LPAR 1의 디스패치로부터 분리되지만, 프로세서 코어 머쉰 상태 정보는 파티션 부속부에 의해 이용되지 않은 다양한 레지스터 및 테이블 내에 LPAR 1에 대해 유지된다. 결과는 LPAR 1로부터 파티션 부속부로의 문맥 교환이 단지 선택된 레지스터 및 테이블 정보만이 파티션 부속부 상태 정보를 갖고 업데이트되는 상태 머쉰의 "경량" 문맥 교환이다. 유사하게, 파티션 부속부로부터 LPAR 1로 재차 스위칭할 때, 단지 파티션 부속부에 의해 이용된 레지스터 정보만이 LPAR 1 활성화 상태로 재차 변환을 위해 업데이트될 필요가 있다.
도 19 내지 도 22는 동시 하드웨어 멀티스레딩을 이용하는 데이터 프로세싱 시스템 내의 본 명세서에 설명된 바와 같은 논리적 파티션과 파티션 부속부 사이의 현재 상태 머쉰의 문맥 교환의 일 예를 도시하고 있다. 도시되어 있는 예는 2개의 하드웨어 스레드된 코어이다. 그러나, 당 기술 분야의 숙련자들은 설명된 개념이 2개 초과의 하드웨어 스레드된 코어에 즉시 적용 가능하다는 것을 이해할 수 있을 것이다. 예로서, 미국 뉴욕주 아몽크 소재의 인터내셔널 비즈니스 머쉰스 코포레이션(International Business Machines Corporation)에 의해 제공되는 POWER5TM 및 POWER6TM 파워 인스트럭션 세트 아키텍쳐 프로세서(Power Instruction Set Architecture Processors)가 2개의 하드웨어 스레드된 코어를 이용한다.
도 19에 도시되어 있는 바와 같이, 멀티스레드된 코어는 변환 참조 버퍼(1920)를 공유하는 제1 하드웨어 스레드(1900) 및 제2 하드웨어 스레드(1910)를 포함한다. 각각의 하드웨어 스레드는 예를 들어 범용 레지스터, 부유점 레지스터 및 특정 용도 레지스터, 뿐만 아니라 도 13 내지 도 18과 연계하여 전술된 세그먼트 참조 버퍼를 포함한다. 도 19에서, 멀티스레드 하드웨어 코어가 논리적 파티션이 활성화되지 않은 상태로 도시되어 있다. 도 20에서, 제1 논리적 파티션(LPAR 1)은 활성화된 것으로 가정되고, LPAR 1 상태 정보는 하드웨어 스레드된 코어(1900, 1910), 뿐만 아니라 테이블 참조 버퍼(1920)를 점유한다.
도 21에서, 상태 머쉰의 문맥 교환은 제1 논리적 파티션(LPAR 1)과 제2 논리적 파티션(LPAR 2) 사이에서 발생되어 있다. 도시되어 있는 바와 같이, 이는 풀 문맥 교환이고, 이 2개의 하드웨어 스레드된 코어 예의 LPAR 2의 머쉰 상태는 제1 하드웨어 스레드된 코어(1900), 제2 하드웨어 스레드된 코어(1910) 및 테이블 참조 버퍼(1920)를 점유한다.
도 22는 LPAR 1로부터 LPAR 1에 의해 개시된 파티션 부속부로의 문맥 교환의 예를 도시하고 있다. 도시되어 있는 바와 같이, 단지 단일의 스레드(1910)만이 파티션 부속부의 상태 정보를 갖고 업데이트되는데, 즉 경량 문맥 교환을 경험한다. 구체적으로, 범용 레지스터 및 다양한 특정 용도 레지스터가 파티션 부속부 서비스에 의해 이 예에서 이용되고, 나머지 레지스터 및 세그먼트 참조 버퍼는 논리적 파티션(LPAR 1)의 머쉰 상태 정보를 유지한다. 또한, 제2 스레드, 즉 하드웨어 스레드(1900)는 유지되어 초기 논리적 파티션(즉, LPAR 1) 내에서 실행 유지된다. 이 예에서, LPAR 1을 위한 머쉰 상태는 또한 테이블 참조 버퍼에 의해 유지되고, 단지 선택된 엔트리(1921)만이 파티션 부속부에 의해 이용된다. 각각의 하드웨어 스레드는 어느 하드웨어가 파티션 부속부(해당 스레드에서 활성화될 때)가 액세스되는지를 제어하는 키의 세트를 포함하는 그 고유의 액세스 마스크 레지스터를 갖는다. 따라서, LPAR 1은 일 스레드 상에서 활성화 유지되고, 반면에 파티션 부속부는 멀티스레드 데이터 프로세싱 시스템의 상이한 스레드 상에서 활성화된다.
일 양태에서, 전술된 파티션 부속부는 논리적 파티션에 의해 구성 불가능한 물리적 입력/출력(I/O) 디바이스로의 액세스를 논리적 파티션에 제공하는 전용 부속부로서 이용된다. 현재, 논리적 파티션의 운영 체제가 할당된 물리적 I/O 어댑터를 위한 디바이스 드라이버로의 액세스를 갖지 않으면, 운영 체제는 해당 I/O 어댑터를 직접 사용하지 않을 수도 있다. 이러한 경우에 입력/출력 어댑터로부터 펑션을 얻는 것은 예를 들어 미리 존재하지 않는 경우 VIOS 파티션을 생성하고 논리적 파티션과 VIOS 사이에 가상 입력/출력 채널을 생성하는 것을 포함하는 가상 입력/출력 서버(VIOS) 파티션에 디바이스를 재할당하기 위한 사용자 개입을 필요로 한다.
도 23a 및 도 23b는 네이티브 디바이스 드라이버 액세싱을 이용하고 I/O 디바이스를 사용하여 논리적 파티션에 의해 소유되는 전용 I/O 디바이스의 2개의 통상의 예를 도시하고 있다. 도 23a에서, 데이터 프로세싱 시스템(2300)은 하나 이상의 고객 애플리케이션(2312), AIX 운영 체제 인스턴스(2314) 및 AIX 하드웨어 디바이스 드라이버(2324)를 포함하는 AIX 파티션(2310)을 포함한다. AIX 파티션(2310)은 하이퍼바이저(2330) 위에서 실행되고, 하이퍼바이저에 의해 제공된 것보다 높은 레벨 펑션을 제공한다. 하이퍼바이저(2330)는 하나 이상의 물리적 I/O 디바이스(들)(2350)를 포함하는 것으로 도시되어 있는 기초 시스템 하드웨어(2340)의 위에서 실행된다. I/O 디바이스(들)(2350)는 특정 AIX 파티션 이미지(2310)에 할당된 하나 이상의 전용 디바이스를 포함한다. 이 예에서, 네이티브 AIX 하드웨어 디바이스 드라이버(2324)는 할당된 I/O 디바이스(들)(2350)로의 액세스를 허용하는 것으로 가정된다.
도 23b는 데이터 프로세싱 시스템(2300')의 다른 실시예를 도시하고 있다. 이 데이터 프로세싱 시스템은 하나 이상의 고객 애플리케이션(2312'), 리눅스 운영 체제(2314') 및 리눅스 하드웨어 디바이스 드라이버(2324')를 포함하는 리눅스 파티션(2310')을 포함한다. 리눅스 파티션(2310')은 하이퍼바이저(2330')의 위에서 실행되고, 하이퍼바이저 자체에 의해 제공된 것보다 높은 레벨의 펑션을 제공한다. 하이퍼바이저(2330')는 (하나 이상의) I/O 디바이스(2350')를 포함하는 것으로 도시되어 있는 기초 시스템 하드웨어(2340')의 위에서 실행된다. I/O 디바이스(2350')로의 액세스는 네이티브 리눅스 하드웨어 디바이스 드라이버(2324')를 거친다.
도 23a 및 도 23b의 예에서, 당해의 논리적 파티션은 할당된 I/O 디바이스(들)를 위한 적절한 네이티브 디바이스 드라이버를 갖는 것으로 가정한다. 이는 항상 그러한 것은 아니다. 이러한 경우에, 가상 I/O 서버(VIOS) 파티션이라 칭하는 제2 논리적 파티션이 통상적으로 이용된다.
디바이스 드라이버 개발 비용은 디바이스 드라이버가 운영 체제 사이에 공유될 수 있으면 감소될 수 있다. 이는 본 발명의 양태에 따라 디바이스 드라이버를 파티션 부속부 서비스로서 전개함으로써 이하에서 성취된다. 전술된 바와 같이, 파티션 부속부는 각각 사용자 애플리케이션 및 커널 서비스의 특권을 받은 상태 및 통상의 문제점으로부터 개별 실행 상태에서 작동하는 경량의 실행 환경이다. 이 새로운 실행 상태는 본 명세서에서 하이퍼바이저/문제 상태라 칭하고, 도 24a 및 도 24b에 도시되어 있다(AIX 및 리눅스가 단지 예로서만 도시되어 있음). 이하에 설명되는 바와 같이, 풀 VIOS 파티션을 전개하는 대신에, 운영 체제는 대신에 해당 논리적 파티션에 할당된 특정 구성 불가능 I/O 디바이스를 지원하기 위해 파티션 부속부를 이용할 수 있다. 이러한 경우에, 할당된 물리적 I/O 디바이스로의 인터페이스로서 비네이티브 운영 체제의 디바이스를 이용하는 파티션 부속부가 생성된다. 네이티브 및 비네이티브 운영 체제는 임의의 2개의 상이한 운영 체제일 수 있다.
도 24a는 본 발명의 이 양태의 일 예를 도시하고 있다. 이 도면에서, 데이터 프로세싱 시스템(2400)은 AIX 파티션(2410) 및 리눅스 개성 파티션 부속부(또는 리눅스 개성 부속부)(2420)를 포함하는 것으로 도시되어 있다. AIX 파티션(2410)은 하나 이상의 고객 애플리케이션(2412), AIX 운영 체제 인스턴스(2414) 및 가상 I/O 설비(2416)를 포함하는 논리적 파티션이다. AIX 파티션(2410)은 하이퍼바이저(2430) 위에서 실행되고, 하이퍼바이저에 의해 제공된 것보다 높은 레벨 펑션을 제공한다. 하이퍼바이저(2430)는 AIX 파티션(2410)에 할당된 (하나 이상의) I/O 디바이스(2450)를 포함하는 것으로 도시되어 있는 기초 시스템 하드웨어(2410)의 위에서 실행된다.
리눅스 개성 부속부(2420)는 개념적으로는 AIX 파티션(2410)의 전용 자 파티션이다. 전술된 바와 같이, 파티션 부속부는 풀 논리적 파티션보다 작지만, 하이퍼바이저가 파티션 부속부와 그가 함께 실행하는 AIX 파티션 사이의 보안 및 격리를 강조하는 방식으로 실행된다. 파티션 부속부는 풀 논리적 파티션과 비교하여 감소된 기능부를 구비한다. 예를 들어, 파티션 부속부는 메모리 관리 유닛(MMU) 구성 또는 부유점 설비로의 액세스를 갖지 않고, 단지 원하는 서비스를 실행하는데 요구되는 기능부(예를 들어, I/O 드라이버)만이 제공되는 환경이다.
도시되어 있는 예에서, 리눅스 개성 부속부(2420)는 가상 I/O 인터페이스(2422)와, I/O 디바이스(2450)로의 액세스를 허용하는 하드웨어 디바이스 드라이버 서비스(2424)를 포함한다. 이 예에서, 하드웨어 디바이스 드라이버 서비스(2424)는 AIX 파티션에 의해 재구성 불가능한 I/O 디바이스(2450)에 할당되어 있는 것을 주지하는 AIX 파티션에 응답하여 AIX 파티션(2410)에 의해 스폰된 리눅스 개성 부속부(2420) 내에서 실행되는 리눅스 하드웨어 디바이스 드라이버이다. 리눅스 개성 부속부(2420)는 물리적 I/O 디바이스를 위한 리눅스 하드웨어 디바이스 드라이버를 실행하는데 충분한 비네이티브 커널 서비스를 포함한다. 이들 비네이티브 커널 서비스는 대응하는 풀 운영 체제보다 작은데, 즉 이 예에서 풀 리눅스 운영 체제보다 작다.
작동시에, AIX 파티션(2410)은 AIX 운영 체제(2414)와, 리눅스 하드웨어 디바이스 드라이버(2424)를 포함하는 리눅스 개성 부속부(2420) 사이의 가상 I/O 인터페이스(2416, 2422)를 거쳐 I/O 디바이스(2450)에 액세스한다. 비네이티브 리눅스 개성을 파티션 부속부에 제공함으로써, 리눅스 하드웨어 디바이스 드라이버는 파티션 부속부 내에서 실행될 수 있고, 이에 의해 I/O 디바이스가 AIX 파티션에 의해 구성 불가능함에도 불구하고 AIX 파티션(2410)에 원래 할당된 I/O 디바이스(2450)로의 액세스를 제공한다.
도 24b는 이 경우에 데이터 프로세싱 시스템(2400')의 리눅스 파티션(2410')인 논리적 파티션에 할당된 구성 불가능 I/O 디바이스로의 액세스를 제공하기 위한 파티션 부속부의 사용의 다른 예를 도시하고 있다. 이 구현예를 위한 파티션 부속부는 비네이티브 운영 체제의 디바이스 드라이버, 즉 이 예에서 AIX 하드웨어 디바이스 드라이버(2424')를 실행하기 위한 파티션 부속부 내의 충분한 비네이티브 AIX 커널 서비스를 포함하는 AIX 개성 부속부(2420')이다. 이들 비네이티브 커널 서비스는 대응의 풀 운영 체제보다 작은데, 즉 AIX 하드웨어 디바이스 드라이버를 실행하는데 통상적으로 요구되는 풀 AIX 운영 체제보다 작다. 리눅스 파티션(2410')은 하나 이상의 고객 애플리케이션(2412'), 리눅스 운영 체제(2414') 및 가상 I/O 설비(2416')를 포함하는 논리적 파티션이다. 리눅스 파티션(2410')은 하이퍼바이저(2430') 위에서 실행되고, 하이퍼바이저에 의해 제공된 것보다 높은 레벨 펑션을 제공한다. 하이퍼바이저(2430')는 (하나 이상의) I/O 디바이스(2450')를 포함하는 것으로 도시되어 있는 기초 시스템 하드웨어(2440')의 위에서 실행된다.
AIX 개성 부속부(2420')는 또한 개념적으로는 클라이언트 파티션(2410')에 대한 자 파티션이다. 파티션 부속부는 풀 논리 파티션보다 작지만, 전술된 바와 같이 파티션 부속부와 그 내부에서 실행하는 클라이언트 파티션 사이의 보안 및 격리를 강조하는 방식으로 실행된다. 파티션 부속부는 단지 원하는 서비스를 실행하는데 요구되는 기능부(예를 들어, I/O 드라이버)마이 제공되는 환경이다. 이 예에서, 부속부는 스포닝 논리 파티션, 즉 리눅스 파티션(2410')에 전용되는 것으로 가정된다.
도시되어 있는 예에서, AIX 개성 부속부(2420')는 가상 I/O 인터페이스(2422') 및 I/O 디바이스(2450')로의 액세스를 허용하는 AIX 하드웨어 디바이스 드라이버(2424')를 포함한다. 작동시에, 리눅스 파티션(2410')은 도시되어 있는 바와 같이, 파티션 부속부(2420')를 거쳐 I/O 디바이스(2450')에 액세스한다.
본 명세서에 사용될 때, 개성 부속부는 특정 운영 체제 개성을 갖지만 풀 운영 체제보다 작은 파티션 부속부이다. 본 명세서에 설명된 구현예에서, 개성 부속부는 파티션 부속부를 스포닝하는 논리적 파티션의 네이티브 운영 체제에 대한 비네이티브 개성이다. 예를 들어, 도 24a의 AIX 파티션(2410)은 리눅스 개성 부속부의 생성을 개시하고, 반면에 도 24b의 리눅스 파티션(2410')은 AIX 개성 부속부의 생성을 개시한다. 이들은 단지 예로서만 제공된다. 대안 구현예에서, 개성 부속부는 파티션 부속부를 스포닝하는 논리적 파티션의 네이티브 운영 체제에 대한 네이티브 개성일 수 있다. 또한, 비네이티브 구현예에서, 파티션 부속부 내에 구현된 개성은 논리적 파티션의 임의의 네이티브 운영 체제에 대한 임의의 비네이티브 운영 체제일 수 있다. 개성 부속부는 부속부 내부에서 실행하도록 특정 디바이스 드라이버에 의해 요구된 운영 체제 디바이스 드라이버 실행 시간 환경의 최소 서비스 세트를 포함한다. 디바이스 드라이버는 그 호스트 운영 체제 환경에 의해 규정된 프로그래밍 환경에 순응한다. 이 프로그래밍 환경은 통상적으로 메모리 할당, 타이머 서비스, 중단 핸들러 레지스트레이션 및 중단, DMA(직접 메모리 액세스)를 위한 I/O 버퍼 맵핑 등에 응답하는 호출과 같은 것들을 위한 다양한 커널 서비스를 포함한다. 개성 부속부는 실제 호스트 운영 체제 커널이 실시하는 것과 동일한 방식으로 이들 서비스 및 펑션을 제공하여, 부속부 내부에서 실행하는 디바이스 드라이버가 본 명세서에 설명된 그 네이티브 호스트 운영 환경과 개성 부속부 사이의 차이를 인지하지 않게 된다. 이는 풀 논리적 파티션 대신에, 경량의 파티션 부속부 내에서 수정되지 않은 디바이스 드라이버가 실행되는 것을 가능하게 한다.
특정 예로서, 도 24a의 리눅스 개성 부속부(2420)는 리눅스 디바이스 드라이버 프로그래밍 인터페이스 및 실행 환경을 모방하는 실행 시간 환경 및 커널 서비스를 제공하고, 반면에 도 24b의 AIX 개성 부속부(2420')는 AIX 운영 체제의 AIX 디바이스 드라이버 프로그래밍 인터페이스 및 실행 환경을 모방하는 실행 시간 환경 및 커널 서비스를 제공한다.
파티션 부속부를 생성하기 위한 프로토콜이 도 7의 예시적인 흐름도를 참조하여 이하에 더 상세히 설명된다. 이 파티션 부속부를 설정하기 위한 프로토콜은 논리적 파티션에 의해 구성 불가능한 물리적 입력/출력(I/O)을 소유하는, 즉 할당된 물리적 입력/출력 디바이스에 액세스하기 위한 디바이스 드라이버 인스턴스가 결여된 논리적 파티션에 의해 개시될 수 있다.
도 7을 참조하면, 입력/출력 인스턴스화(또는 셋업)(700)는 논리적 파티션이 입력/출력 디바이스 발견을 수행하는 것(705)으로 시작한다. 운영 체제는 디바이스 드라이버가 요구되는 I/O 디바이스를 검색하는 연결된 I/O 버스 및/또는 펌웨어-제공 하드웨어 구성 정보를 조사한다. 예를 들어, 운영 체제는 고유 판매인 및 PCI 구성 공간으로부터 판독 가능한 디바이스 ID에 의해 식별되는 PCI 슬롯 내에 플러깅된 PCI 어댑터 카드를 찾을 수 있다. 운영 체제는 이어서 각각의 발견된 디바이스에 대해 네이티브 디바이스 드라이버를 소유하는지 여부를 판정한다. 이는 본질적으로 레지스터된 로딩 가능한 디바이스 드라이버(710)의 조사를 수행하는 운영 체제이다. 만일 "예"이면, 논리적 파티션은 정상 디바이스 드라이버 로딩 구성으로 진행하고(715), 이는 프로세싱을 종료한다(720). 그러나, 클라이언트 파티션이 해당 파티션에 할당된 발견된 I/O 디바이스를 위한 그 고유의 디바이스 드라이버를 갖지 않으면, 프로세싱은 파티션 부속부 이미지가 이 I/O 디바이스에 이용 가능한지 여부를 판정한다(725). 만일 "아니오"이면, 디바이스는 구성될 수 없고(730), 프로세싱은 종료한다.
파티션 부속부 디바이스 드라이버 이미지가 특정 I/O 디바이스에 이용 가능한지 여부를 판정하는 것은 운영 체제를 갖는 레지스터된 파티션 부속부 이미지의 조사를 거쳐 또는 플랫폼 펌웨어 또는 소정의 다른 파티션 부속부 이미지 서버에 질의함으로써 성취될 수 있어, 파티션 부속부 디바이스 드라이버 이미지가 존재하고 할당된 물리적 I/O 디바이스를 작동할 수 있는지 여부를 판정한다.
파티션 부속부 이미지가 I/O 디바이스를 위해 이용 가능한 것으로 가정하면, 클라이언트 파티션은 파티션 부속부 이미지에 대해 그 가상 어드레스 공간 및 메모리 공간의 부분을 보존하거나 공여하고(735), 공여된 가상 어드레스 공간 및 메모리 공간을 갖는 파티션 부속부, 뿐만 아니라 I/O 디바이스를 인스턴스화하도록 하이퍼바이저를 호출한다(740).
운영 체제는 본질적으로 하이퍼바이저에 소유권을 포기함으로써 어떠한 디바이스 드라이버도 갖지 않은 물리적 I/O 디바이스의 소유권을 동적으로 포기한다. 하이퍼바이저는 새로운 파티션 부속부를 생성하고 공여된 자원을 파티션 부속부에 할당한다(745). 하이퍼바이저는 이어서 공여된 가상 어드레스 공간 및 메모리 공간의 적절한 하드웨어 보호 및 강조를 셋업하여, 클라이언트 파티션이 더 이상 공여된 공간에 액세스할 수 없게 된다(750). 파티션 부속부를 위한 새로운 디스패치 가능한 상태는 하이퍼바이저에 의해 생성된다(755).
전술된 바와 같이, 이 새로운 디스패치 가능한 상태는 유리하게는 SMT 데이터 프로세싱 시스템의 단일의 하드웨어 스레드 상에 디스패치될 수 있고, 반면에 다른 하드웨어 스레드가 호출(또는 요청) 클라이언트 파티션을 계속 실행한다. 하이퍼바이저는 공여된 부속부 메모리 내로 파티션 부속부 이미지를 로딩하고(760), 파티션 부속부 실행 환경을 초기화한다(765). 파티션 부속부는 이어서 파티션 부속부 이미지 엔트리점에서 초기화 실행을 시작하도록 디스패치된다(770). 하이퍼바이저는 예를 들어 주 가상화 디바이스 클래스를 위한 가상 입력/출력 요청 대기 인터페이스를 포함하는 클라이언트 파티션을 위한 파티션 부속부 서비스 인터페이스 호를 셋업한다(775). 하이퍼바이저는 파티션 부속부 인스턴스화의 상황 및 클라이언트 파티션에 할당된 새로운 가상 I/O 디바이스를 갖고 클라이언트 파티션으로 복귀한다(780). 이 단계에서, 하이퍼바이저는 클라이언트 파티션의 네이티브 운영 체제가 디바이스 드라이버를 갖는 가상 I/O 디바이스를 클라이언트 파티션에 동적으로 추가한다. 클라이언트 파티션은 이어서 가상 I/O 디바이스를 위한 정상 가상 디바이스 드라이버 로드 및 구성으로 진행하고(785), 이는 최종적으로 클라이언트 파티션에 의해 구성 불가능한 물리적 I/O 디바이스로의 액세스를 얻는다.
요약하면, 이하에는 논리적 파티션에 의해 소유된 물리적 입력/출력(I/O) 디바이스로의 논리적 파티션에 의한 액세스를 설정하는 방법이 설명된다. 이 방법은 데이터 프로세싱 시스템 내의 파티션 부속부를 생성하는 것으로서, 파티션 부속부는 논리적 파티션으로부터 파티션 부속부로 공여된 물리적 I/O 디바이스 및 가상 어드레스 공간을 이용하여 생성되고, 논리적 파티션은 네이티브 운영 체제를 포함하고, 파티션 부속부는 물리적 I/O 디바이스를 위한 비네이티브 운영 체제의 디바이스 드라이버를 포함하고, 물리적 I/O 디바이스는 논리적 파티션에 의해 구성 불가능한 것인 파티션 부속부를 생성하는 것과, 공여된 물리적 I/O 디바이스에 파티션 부속부의 비네이티브 운영 체제의 디바이스 드라이버를 통해 인터페이싱된 가상 I/O 디바이스를 논리적 파티션에 제공하는 것을 포함한다. 생성은 그 운영 체제가 그에 할당된 물리적 I/O 디바이스를 구성할 수 있는 네이티브 디바이스 드라이버를 갖지 않는다고 논리적 파티션이 판정하는 것과, 물리적 I/O 디바이스를 지원하는 비네이티브 하드웨어 디바이스 드라이버를 실행할 수 있는 파티션 부속부 인스턴스가 이용 가능하다고 논리적 파티션이 주지하는 것에 응답한다. 이러한 경우에, 하이퍼바이저는 전술된 바와 같이 동적 재구성 설비를 사용하여, 논리적 파티션으로부터 물리적 입력/출력 디바이스를 분리하고 생성되고 있는 파티션 부속부에 디바이스를 재할당한다. 다음, 하이퍼바이저는 가상 디바이스를 생성하고 이를 논리적 파티션에 할당한다. 이 방식으로, 구성 불가능한 물리적 입력/출력 디바이스를 소유하는 것으로 시작하는 논리적 파티션은 이를 통해 파티션 부속부를 거쳐 물리적 I/O 디바이스로의 액세스를 얻을 수 있는 구성 가능한 가상 I/O 디바이스로 종료한다. 이러한 설비는 어떠한 물리적 어댑터도 논리적 파티션에 할당되어 있지 않을 수 있는 다중 논리적 파티션 시스템 내에서 운영 체제가 기능하도록 요구되기 때문에 당해의 운영 체제가 이러한 가상 I/O 디바이스를 지원하는 것으로 가정한다.
다른 양태에서, 다중 파티션 부속부는 예를 들어 자기 가상화 입력/출력 어댑터와 같은 자기 가상화 입력/출력 디바이스로의 액세스를 다중 논리적 파티션에 제공하도록 이용된다. 가상화된 시스템에서, 단일의 입력/출력 어댑터가 존재하고 이 어댑터가 데이터 프로세싱 시스템의 다중 논리적 파티션을 서비스하기 위한 것이면, 단일의 논리적 파티션은 디바이스를 멀티플렉싱하도록 허용되고(도 25에 도시되어 있는 바와 같이 가상 입력/출력 서버 접근법에서와 같이), 또는 존재한다면 입력/출력 디바이스의 입력/출력 가상화(IOV) 능력이 다중 가상 펑션(VF)을 인스턴스화하도록 이용되는데, 이 다중 가상 펑션의 각각은 각각의 클라이언트 논리적 파티션에 대한 입력/출력 어댑터로서 나타난다(도 26에 도시되어 있는 접근법에서와 같이).
먼저 도 25를 참조하면, 다중 논리적 파티션(2510A, 2510B...2510n)과, 다중 논리적 파티션에 입력/출력 서비스를 제공하는 가상 입력/출력 서버(VIOS)(2520)를 포함하는 데이터 프로세싱 시스템(2500)이 도시되어 있다. 통상의 비자기 가상화 입력/출력 디바이스(2540)로의 액세스는 하이퍼바이저(2530)를 통해 하나 이상의 입력/출력 경로를 거친다. 이 예에서, 논리적 파티션은 VIOS(2520) 내의 서버 가상 어댑터 디바이스 드라이버(즉, 서버 가상 입력/출력)(2522)에 인터페이스하는 클라이언트 가상 어댑터 디바이스 드라이버(즉, 클라이언트 가상 입력/출력)(2515A, 2515B...2515n)를 각각 구비한다. 일 실시예에서, 클라이언트 가상 입력/출력 및 서버 가상 입력/출력의 인터페이싱은 하이퍼바이저(2530)를 통한다. VIOS(2520)는 비자기 가상화 입력/출력 디바이스(2540)와 입력/출력 통신을 용이하게 하는 물리적 어댑터 디바이스 드라이버 스택(2525)을 더 포함한다. 이 예에서, 비자기 가상화 입력/출력 디바이스는 동시에 하나의 논리적 파티션과 통신하도록 설계되고, 도 26에 도시되어 있는 자기 가상화 입력/출력 디바이스의 경우에서와 같이, 다중 논리적 파티션과 통신하기 위해 다중 펑션으로 자체로 가상화할 수 없다.
도 26을 참조하면, 입력/출력 가상화 및 자기 가상화 입력/출력 디바이스 또는 어댑터(2640)를 이용하는 데이터 프로세싱 시스템(2600)의 일 실시예가 도시되어 있다. 데이터 프로세싱 시스템(2600)은 다중 논리적 파티션(2610A, 2610B...2610n), 뿐만 아니라 가상 입력/출력 서버(VIOS)(2620)로서 설계된 논리적 파티션을 포함한다. 각각의 논리적 파티션(2610A, 2610B...2610n)은 자기 가상화 입력/출력 디바이스(2640) 내의 각각의 가상 펑션(2651, 2652, 2653)과 하이퍼바이저(2630)를 가로질러 통신한다. 이 통신은 각각의 논리적 파티션 내의 각각의 네이티브 가상 펑션(VF) 디바이스 드라이버(2615A, 2615B...2615n)를 통한다. 도시되어 있는 바와 같이, VIOS(2620)는 자기 가상화 입력/출력 디바이스(2640) 내의 물리적 펑션(2650)에 인터페이스하는 네이티브 물리적 펑션(PF) 디바이스 드라이버(2625)를 포함한다.
대안예로서, VIOS(2620)는 그 물리적 펑션 설비가 하이퍼바이저(2630)로 이동된 상태로 제거될 수 있다. 자기 가상화 입력/출력 디바이스(2640) 내의 물리적 펑션(2650)은 가상 펑션(2651, 2652, 2653)을 구성하기 위해 요구되는 기본 기능성을 제공한다. 이 물리적 펑션은 능력의 핵심 세트를 제공하고 요구된 가상 펑션을 위한 가능한 비트를 규정한다. 각각의 논리적 파티션 내의 네이티브 가상 펑션 디바이스 드라이버는 각각의 논리적 파티션의 운영 체제에 대해 각각 네이티브하다. 예를 들어, LPAR A(2610A)는 네이티브 리눅스 가상 펑션 디바이스 드라이버를 필요로 하는 리눅스 운영 체제를 포함할 수 있고, LPAR B(2610B)는 네이티브 AIX 가상 펑션 디바이스 드라이버(2615B)를 이용하는 AIX 운영 체제를 포함할 수 있다.
도 25 및 도 26의 데이터 프로세싱 시스템 구현예를 비교할 때, 도 25 실시예의 VIOS(2520)는 입력/출력 멀티플렉싱 기능성을 담당하고, 반면에 도 26의 데이터 프로세싱 시스템에서 자기 가상화 입력/출력 디바이스(2640)는 입력/출력 멀티플렉싱 기능성을 담당한다. 이 후자의 접근법에서, 자기 가상화 입력/출력 디바이스는 가상 펑션을 이용하고 이들을 동일한 통신 매체 상에서 구동하고, 여기서 다중 입력은 I/O 디바이스에서 수신되고 I/O 디바이스에 의해 구동된 통신 매체 상에서 멀티플렉싱된다. 도 26의 데이터 프로세싱 시스템 접근법은 유리하게는 도 25의 VIOS 접근법(VIOS 운영 체제 I/O 스택에서 소프트웨어 내의 동시 I/O 요청 및 응답을 취급해야 하는)에 고유적인 로크 및 다른 형태의 동기화를 회피한다. 그러나, 도 26에 도시되어 있는 접근법은 제시되어 있는 각각의 가상 펑션 디바이스를 위한 디바이스 드라이버 지원을 갖는 논리적 파티션을 필요로 한다는 사실로부터 문제점이 있다. 즉, 적절한 네이티브 가상 펑션 디바이스 드라이버는 각각의 논리적 파티션에 요구되는데, 이는 가상 펑션 디바이스 드라이버가 해당 논리적 파티션의 운영 체제에 대해 네이티브하고, 따라서 다중 상이한 네이티브 가상 펑션 디바이스 드라이버가 논리적 파티션 내에 이용된 운영 체제에 따라 데이터 프로세싱 시스템을 가로질러 요구될 수 있다는 것을 의미한다.
도 26에 도시되어 있는 데이터 프로세싱 시스템에 이용되는 것과 같은 자기 가상화 입력/출력 디바이스의 일 예는 본 명세서에 그대로 참조로서 포함되어 있는 "단일 루트 I/O 가상화 및 공유 사양(Single Root I/O Virtualization and Sharing Specification)", 개정판 1.0 PCI-SIG(2007년 9월 11일)에 설명된 단일 루트 입력/출력 가상화된 하드웨어이다.
도 27은 다른 가상화 접근법을 도시하고 있고, 여기서 데이터 프로세싱 시스템(2700)은 다중 논리적 파티션(2710A, 2710B...2710n), 뿐만 아니라 VIOS(2720)를 포함한다. 논리적 파티션 및 VIOS는 하이퍼바이저(2730)를 가로질러 자기 가상화 입력/출력 디바이스 하드웨어(2740)에 통신한다. 이 예에서, 자기 가상화 입력/출력 디바이스는 개별 큐 쌍(QP)이 상이한 논리적 파티션에 할당되도록 페이지 경계 상에 정렬하기 위해 분할된 공유 가능한 하드웨어 큐를 갖는 통상적인 주변 장치 상호 접속부(PCI) 펑션과 같은 펑션(2750)을 포함한다. 큐 쌍은 광범위하게는 자기 가상화 하드웨어를 공유하는 다중 논리적 파티션의 하나의 논리적 파티션에 할당될 수 있는 자기 가상화 입력/출력 하드웨어의 부분을 표현한다. 각각의 논리적 파티션은 자기 가상화 입력/출력 디바이스(2740)의 각각의 하드웨어 큐 쌍(2751, 2752, 2753)과 네이티브 큐 쌍 디바이스 드라이버(2715A, 2715B...2715n)를 거쳐 직접적으로 통신하는 것으로 도시되어 있다. I/O 디바이스 펑션(2750)은 예를 들어 VIOS(2720) 내에 배치된 네이티브 펑션 디바이스 드라이버(2725)와 통신한다. 도 26의 데이터 프로세싱 시스템 실시예와 같이, 논리적 파티션 내의 네이티브 디바이스 드라이버는 각각의 논리적 파티션의 운영 체제에 대한 네이티브 디바이스 드라이버이고, 상이한 논리적 파티션은 이용된 운영 체제에 따라 상이한 네이티브 디바이스 드라이버를 필요로 할 수 있다.
도 25 내지 도 27의 전술된 데이터 프로세싱 시스템 대안예에 대한 향상예로서, 이하에는 멀티파티션된 데이터 프로세싱 시스템 내의 자기 가상화 입력/출력 디바이스(또는 어댑터)의 더 효율적인 가상화를 용이하게 하기 위한 파티션 부속부의 사용이 설명된다.
향상예에 따르면, 특정 부속부 인스턴스는 각각의 파티션 부속부 인스턴스가 특정 논리적 파티션 대 가상 펑션(또는 큐 쌍) 페어링을 지원하도록 생성되는 방식으로 전개된다. 이 접근법을 사용하여, 각각의 논리적 파티션은 도 25의 VIOS 구현예에 이용된 VIO 메커니즘과 같은 추상화 가상 입력/출력 메커니즘을 이용하는 대응 가상 펑션 또는 큐 쌍에 액세스한다. 클라이언트 파티션의 관점으로부터, 이 기능성은 도 25에 도시되어 있는 데이터 프로세싱 시스템의 것과 유사(또는 동등)하다. 그러나, 본 명세서에 설명된 데이터 프로세싱 시스템의 단점은, 각각의 논리적 파티션 대 가상 펑션(또는 큐 쌍) 관련화가 그 사이의 통신을 용이하게 하는 고유의 파티션 부속부 인스턴스를 갖기 때문에 회피된다. 각각의 파티션 부속부 인스턴스는 단지 단일의 논리적 파티션 및 단일의 가상 펑션(또는 큐 쌍)만을 취급하기 때문에, I/O 어댑터의 멀티플렉싱을 지원하는데 요구되는 로크 또는 동기화 메커니즘을 포함할 필요가 없는데, 이는 시스템이 자기 가상화 입력/출력 가능 디바이스 자체 내의 멀티플렉싱 능력에 의존하기 때문이다.
이 특정 부속부 구현예의 다른 장점은, 모든 파티션 부속부 인스턴스가 동일한 디바이스에 대해 고려되기 때문에 이들이 코드 및 판독 전용 데이터를 공유할 수 있다는 것이다(이는 도 30a 내지 도 31b를 참조하여 이하에 더 상세히 설명되는 특징임). 이는 구현을 지원하도록 요구되는 메모리 푸트프린트를 상당히 감소시키는데, 파티션 부속부 인스턴스를 추가하는 메모리 푸트프린트 비용은 단지 새로운 파티션 부속부 인스턴스를 위한 논리적 파티션 대 가상 펑션(또는 큐 쌍) 페어링을 위한 동적 상태 정보를 유지하는 것과 연관된 비용이다.
또한, 파티션 부속부 인스턴스는 이들이 동시에 단지 하나의 논리적 파티션 대 가상 펑션(또는 큐 쌍) 페어링만을 지원하도록 구성되기 때문에, 네이티브 디바이스 드라이버 및 전술된 VIOS 대안의 모두에서 전통적인 I/O 스택 및 드라이버에 의해 요구된 다수의 동기화 및 로킹 메커니즘을 회피하는 방식으로 즉시 기록될 수 있다. 예를 들어, 파티션 부속부는 폴링 상태 머쉰으로서 기록될 수 있고, 이들의 실행 시간 환경의 전용 특성은 활성 선점을 지원할 필요성을 배제하고, 따라서 로킹을 위한 필요성을 간단화하거나 제거한다.
요약하면, 이하에 설명된 개념은 운영 체제가 단지 특정 물리적 입력/출력 어댑터 디바이스가 아니라 가상 입력/출력(VIO) 서비스(예를 들어, 디바이스 드라이버 서비스)만을 보기 때문에, 논리적 파티션의 각각의 운영 체제를 위해 요구되는 디바이스-드라이버 개발을 최소화하는 방식으로 논리적 파티션이 입력/출력 가상화 가능 입력/출력 디바이스 또는 어댑터로부터 I/O 서비스를 얻는 것을 허용한다. 이는 기초 I/O 하드웨어를 멀티플렉싱하기 위해 논리적 파티션을 인스턴스화할 필요성을 회피하고, I/O 하드웨어의 멀티플렉싱이 VIOS 내의 소프트웨어 로크보다는 효율적인 VIO 하드웨어 능력을 거쳐 성취될 수 있게 한다. 이 마지막 양태는 파티션 부속부의 고유의 프로그래밍 모델로부터 발생하는 특성이고, 특정 I/O 디바이스를 지원하는데 사용된 특정 파티션 부속부 구현예가 효율적인 구현을 생성하기 위해 이들 특성을 사용하는 것으로 가정한다.
도 28은 본 발명의 양태에 따라 일반적으로 도면 부호 2800으로 나타낸 데이터 프로세싱 시스템의 일 실시예를 도시하고 있다. 데이터 프로세싱 시스템(2800) 내에서, 다중 논리적 파티션(2810A, 2810B...2810n) 및 VIOS(2820)는 하이퍼바이저(2830) 위에서 실행되고, 하이퍼바이저에 의해 제공된 것보다 높은 레벨 펑션을 제공한다. 하이퍼바이저(2830)는 자기 가상화 입력/출력 디바이스(또는 어댑터)(2840)를 포함하는 기초 시스템 하드웨어의 위에서 실행된다. VIOS(2820)는 도시되어 있는 데이터 프로세싱 시스템 실시예 내에서는 선택적이다. 자기 가상화 입력/출력 디바이스(2840)는 일 실시예에서 입력/출력 가상화 가능 I/O 어댑터이다. 이 어댑터는 그 각각이 정상 I/O 어댑터와 연관된 기능성을 제공하는 제1 물리적 펑션(2850)으로부터 다중 가상 펑션 인스턴스(2851, 2852, 2853)를 제시할 수 있다. 또한, 이 실시예에서, 그로부터 제2 가상 펑션(2881)이 예로서 제공되어 있는 제2 물리적 펑션(2880)이 도시되어 있다.
각각의 가상 펑션이 데이터 프로세싱 시스템 내의 특정 논리적 파티션에 I/O 서비스를 제공하도록 할당된다. 당해의 논리적 파티션은 각각의 논리적 파티션 대 가상 펑션 페어링을 위해 인스턴스화된 파티션 부속부 인스턴스를 이용함으로써 하드웨어 추상화를 유지하기 위해 그 가상 펑션과의 직접적인 상호 작용을 갖는 것을 회피한다. 이들 파티션 부속부(2870A, 2871A, 2870B, 2870n)는 특정 논리적 파티션 대 가상 펑션 페어링에 대한 파티션 부속부의 전용 특성에 기인하여 가상 펑션(VF) 파티션 부속부라 칭한다. 동일한 기초 하드웨어 디바이스와 연관된 모든 가상 펑션, 즉 물리적 펑션(2850) 또는 물리적 펑션(2880)에 대해, 인스턴스화된 파티션 부속부 인스턴스는 동일하다. 즉, 각각의 파티션 부속부 인스턴스(2870A, 2870B...2870n)는 동일하고, 반면에 파티션 부속부 인스턴스화(2871A)는 상이한 물리적 펑션(2880)과 연관된 상이한 가상 펑션(2881)에 인터페이스하기 때문에 상이한 것으로 가정된다. 유리하게는, 논리적 파티션과 가상 펑션 사이에 파티션 부속부를 삽입함으로써, 각각의 논리적 파티션 내의 입력/출력은 클라이언트 가상 입력/출력(VIO)(2815A, 2815A', 2815B...2815n)으로서 가상화될 수 있다.
특정 예로서, 기초 물리적 펑션은 상기에 참조된 "단일 루트 I/O 가상화 및 공유 사양"에서 규정된 단일 루트 I/O 가상화 능력(SR-IOV)을 지원하는 주변 장치 상호 접속부(PCI) 펑션을 포함할 수 있다. 따라서, 물리적 펑션은 SR-IOV 능력 구조를 포함할 것이다. 가상 펑션은 물리적 펑션과 연관되고, 링크와 같은 하나 이상의 물리적 자원을 동일한 가상 펑션과 연관되는 다른 가상 펑션 및 물리적 펑션과 공유한다. "펑션"은 일 실시예에서, 단일 펑션 수와 연관된 구성 공간 내의 어드레스 가능한 엔티티를 의미한다. 펑션은 다기능 디바이스 내의 하나의 펑션, 또는 단기능 디바이스 내의 펑션만을 칭할 수도 있다.
물리적 펑션 파티션 부속부(2860)는 가상 펑션 파티션 부속부의 셋업을 용이하게 하기 위해 데이터 프로세싱 시스템의 초기 구성 중에 이용된다. 도 28에 도시되어 있는 데이터 프로세싱 시스템 실시예에서, 다중 물리적 펑션 및 다중 상이한 가상 펑션 인스턴스가 도시되어 있고, 이들 중 2개는 상이한 가상 펑션 파티션 부속부(2870A, 2871A)를 거쳐 단일의 논리적 파티션에 의해 액세스된다는 것을 주목하라. 하나, 2개 또는 2개 초과의 물리적 펑션이 자기 가상화 입력/출력 디바이스 내에 구현될 수 있고, 각각의 논리적 파티션은 디바이스의 관련 가상 펑션을 거쳐 이들 물리적 펑션 중 하나 이상에 액세스할 수 있다. 또한, LPAR A(2810A) 내의 클라이언트 가상화 인터페이스 또는 드라이버[클라이언트 VIO(2815A), 클라이언트 VIO(2815A')]는 특정 논리적 파티션 대 가상 펑션 페어링을 위해 구현된 파티션 부속부 인스턴스에 따라 동일하거나 상이한 유형의 가상 인터페이스 또는 드라이버일 수 있다는 것을 주목하라.
가상 펑션 파티션 부속부(2870A, 2871A, 2870B, 2870n)는 일 실시예에서 관련 논리적 파티션 내의 각각의 클라이언트 VIO와 인터페이스하는 서버 가상 어댑터 디바이스 드라이버, 뿐만 아니라 자기 가상화 입력/출력 디바이스 어댑터 상의 가상 펑션을 위한 디바이스 드라이버를 구현한다. 각각의 파티션 부속부는 도 25와 연계하여 전술된 바와 같이, VIOS 구현 내에서 서버 가상 어댑터 디바이스 드라이버와 유사한 어댑터 상에서 각각의 가상 펑션을 구동한다. 파티션 부속부의 생성은 전술된 바와 같이 각각의 논리적 파티션에 의해 또는 데이터 프로세싱 시스템 내의 하이퍼바이저에 의해 개시될 수 있다. 또한, 각각의 파티션 부속부의 장점 및 특징은 전술된 바와 동일할 것이다. 예로서, 각각의 파티션 부속부는 관련 논리적 파티션의 네이티브 운영 체제로부터 비네이티브 운영 체제의 디바이스 드라이버를 구현할 수 있다.
당 기술 분야의 숙련자들은 본 명세서에 설명되어 있는 프로그래밍 모델이 통상의 운영 체제-커널-코드 로킹 및 동기화 프리미티브가 단순화되거나 회피되게 하는 방식으로 파티션 부속부 코드 개발자가 코드를 기록할 수 있게 한다는 것을 주목할 수 있을 것이다. 파티션 부속부는 단일 스레드된 폴링 상태 머쉰으로서 효과적으로 기록될 수 있고, 특정 파티션 부속부 인스턴스에 가시적인 동시성의 정도를 제어함으로써, 파티션 부속부 코드가 비선점형 및 단일 스레드형인 실행 시간 환경을 차지할 수 있는 것을 보장하는 것이 가능하다. 입력/출력 프로세싱 작업에서, 특정 논리적 파티션을 가상 펑션 페어링으로 서비스하도록 동시에 실행하기 위한 다중 스레드에 대한 요구가 거의 없다. 이들 특성은 각각의 파티션 부속부 인스턴스가 격리된/보호된 환경(즉, 전술된 바와 같이 보호된 개별 디스패치 가능한 상태)에서 단일 논리적 파티션을 가상 펑션 페어링에 서비스하고 파티션 부속부 인스턴스가 VIOS 구현과는 달리 논리적 파티션당 단일의 부속부 인스턴스가 가상 펑션 페어링되는 것을 허용하기에 충분히 낮은 오버헤드를 갖고 전개될 수 있기 때문에 실현 가능하다.
도 29는 기초 시스템 하드웨어의 위에서 실행하는 하이퍼바이저(2930) 위에서 실행되는 다중 논리적 파티션(2910A, 2910B...2910n) 및 선택적으로 VIOS(2920)를 갖는 데이터 프로세싱 시스템(2900)의 대안 구현예를 도시하고 있다. 기초 시스템 하드웨어는 자기 가상화 입력/출력 디바이스(2940)를 포함하는 것으로 도시되어 있다. 자기 가상화 입력/출력 디바이스(2940)는 기본 펑션(2950) 및 다중 큐 쌍(2951, 2952, 2953)으로 가상화 가능한 큐 구조를 포함하는 것으로 도시되어 있다. 각각의 큐 쌍은 펑션과 연관되고, 펑션 및 동일한 펑션과 연관된 다른 큐 쌍과 링크와 같은 하나 이상의 물리적 자원을 공유한다. 다중 파티션 부속부(2960, 2970A, 2970B, 2970n)는 예를 들어 자기 가상화 입력/출력 디바이스(2940) 내의 각각의 큐 쌍(2951, 2952, 2953)에 다중 논리적 파티션(2910A, 2910B...2910n)을 인터페이싱하는데 이용된다. 펑션 파티션 부속부(2960)는 파티션 부속부의 초기 셋업을 용이하게 하기 위해 데이터 프로세싱 시스템의 초기 구성 중에 이용된다.
큐 쌍 페어링에 대한 각각의 논리적 파티션 사이의 인터페이스로서 파티션 부속부(2970A, 2970B...2970n)를 제공함으로써, 가상 입력/출력 인터페이스 또는 드라이버[클라이언트 VIO(2915A, 2915B...2915n)]가 각각의 논리적 파티션 내에 이용될 수 있다. 이 경우에, 논리적 파티션은 이용된 하드웨어의 실제 유형을 인지하지 않는다. 파티션 부속부는 예를 들어 관련 논리적 파티션의 각각의 클라이언트 VIO로 인터페이싱된 서버 가상 디바이스 드라이버, 뿐만 아니라 자기 가상화 입력/출력 디바이스(2940) 내의 각각의 큐 쌍(2951, 2952, 2953)에 인터페이싱하기 위한 적절한 물리적 어댑터 디바이스 드라이버를 포함할 수 있다.
도 30a는 도 26과 연계하여 전술된 바와 같은 데이터 프로세싱 시스템(3000)의 다른 실시예를 도시하고 있다. 이 실시예에서, 데이터 프로세싱 시스템의 다중 논리적 파티션(3010)은 자기 가상화 입력/출력 디바이스(3030)를 포함하는 기초 하드웨어 위에서 실행되는 하이퍼바이저(3020) 위에서 실행된다. 자기 가상화 입력/출력 디바이스(3030)는 다중 가상 펑션 인스턴스(3032, 3033) 내로 가상화되는 물리적 펑션(3031)을 포함하는 것으로 도시되어 있다. 각각의 논리적 파티션은 자기 가상화 입력/출력 디바이스(303) 내의 물리적 펑션(3031) 또는 가상 펑션(3032, 3033) 중 하나와 통신하기 위한 각각의 네이티브 가상 펑션 디바이스 드라이버(3015)를 포함한다.
도 30b에 도시되어 있는 바와 같이, 데이터 프로세싱 시스템 내의 논리적 파티션의 네이티브 가상 펑션 디바이스 드라이버는 그 코드, 판독 전용 데이터 및 판독/기록 상태 데이터를 위한 개별의 물리적 메모리 페이지를 필요로 한다. 이 예에서, 각각의 논리적 파티션의 하드웨어 페이지 테이블의 이들 엔트리(3050, 3051, 3052)는 데이터 프로세싱 시스템의 물리적 메모리 페이지(3040) 내의 할당된 논리적 파티션 메모리 페이지(3060, 3061, 3062)에 맵핑된다. 따라서, 이 3-논리적 파티션 예에서, 각각의 네이티브 가상 펑션 디바이스 드라이버는 3개의 논리적 파티션에 대해 총 9개의 페이지를 위한 3개의 물리적 메모리 페이지를 필요로 한다. 필연적으로, 코드, 판독 전용 데이터 및 판독/기록 데이터는 각각의 논리적 파티션이 상이한 네이티브 운영 체제를 이용할 수 있기 때문에 별도로 유지된다. 예를 들어, LPAR1은 AIX 운영 체제를 이용할 수 있고, LPAR2는 리눅스 운영 체제를 이용할 수 있는데, 이 경우 네이티브 디바이스 드라이버 코드 및 판독 전용 데이터는 판독/기록 상태 데이터와 함께 상이할 수 있다.
대조적으로, 도 31a 및 도 31b는 그 각각이 관련 가상 펑션 파티션 부속부(3120)를 거쳐 각각의 가상 펑션 인스턴스(3141, 3142, 3143)에 인터페이싱되는 자기 가상 입력/출력 디바이스(3140) 및 하이퍼바이저(3130) 위에서 실행하는 다중 논리적 파티션(3110)을 포함하는 데이터 프로세싱 시스템(3100)의 일 실시예를 도시하고 있다. 각각의 가상 펑션 파티션 부속부(3120)는 각각의 가상화된 인터페이스, 즉 그 관련 논리적 파티션(3110) 내의 클라이언트 VIO(3115)와 통신한다.
이 구현예에서, 파티션 부속부 인스턴스(3120)는, 이들이 자기 가상화 입력/출력 디바이스 내의 동일한 유형의 가상 펑션 인스턴스에 인터페이싱되기 때문에 동일한 코드를 실행한다. 따라서, 3개의 파티션 부속부의 메모리 통합이 가능하여, 도 31b에 도시되어 있는 바와 같이 단지 4개의 물리적 메모리 페이지만이 물리적 메모리 페이지(3150) 내에 이용되게 한다. 구체적으로, 3개의 파티션 부속부 인스턴스를 위한 논리적 파티션의 페이지 테이블 엔트리(3160, 3161, 3162)는 공통 부속부 코드를 포함하고, 공통 판독 전용 데이터는 도시되어 있는 바와 같이 물리적 메모리 페이지(3150) 내의 2개의 공통 위치로 맵핑된다.
이 예에서, 코드 및 판독 전용 데이터는 데이터 프로세싱 시스템의 LPAR1에 할당된 물리적 메모리 페이지(3170) 내에 상주한다. 공통 코드 및 공통 판독 전용 데이터는 대안적으로 LPAR2에 할당된 메모리 페이지 또는 LPAR3에 할당된 페이지 내에 배치될 수 있다. 다른 변형예로서, 파티션 부속부가 하이퍼바이저 소유이면(즉, 개시되면), 코드 및 판독 전용 데이터(뿐만 아니라 파티션 부속부를 위한 판독/기록 데이터)는 물리적 메모리 페이지(3150)의 할당된 하이퍼바이저 페이지 내에 상주하게 된다. 각각의 논리적 파티션 하드웨어 페이지 테이블은 파티션 부속부 코드 및 판독 전용 데이터를 위한 물리적 메모리 내의 동일한 페이지를 지향하는 것으로 나타난다. 단지 특정 파티션 부속부 인스턴스를 위한 고유의 판독/기록 상태 데이터를 위해 요구된 페이지 테이블 엔트리만이 도 31b에 도시되어 있는 바와 같이 상이하다. 도시되어 있는 예에서, LPAR1은 코드, 판독 전용 데이터 및 판독/기록 상태 데이터를 위한 3개의 페이지를 필요로 하고, 반면에 LPAR2 및 LPAR3은 그 판독/기록 상태 데이터에 대해 각각 단지 단일의 물리적 메모리 페이지만을 필요로 하고, 코드 및 판독 전용 데이터 페이지는 유리하게는 LPAR1을 위한 가상 파티션 부속부와 공유된다.
이 예에서, 파티션 부속부 인스턴스는 이들이 그 특정 논리적 파티션을 가상 펑션 쌍에 서비스하도록 유지되는 활성 상태에서만 상이한 것으로 가정된다. 따라서, 하이퍼바이저는 공통 코드 및 판독 전용 데이터 메모리 영역의 복제를 회피함으로써 메모리 절약을 추출한다. 하이퍼바이저는 예를 들어 2개의 파티션 부속부 인스턴스가 동일한 것을 명시적으로 인식하고 따라서 최대 공유를 보증하기 위해 그 메모리 맵핑을 셋업함으로써 또는 이 공유를 유도하기 위해 투명 메모리 통합을 사용함으로써 다수의 방식으로 이를 성취할 수 있다.
본 발명의 하나 이상의 양태는 예를 들어 컴퓨터 사용 가능 매체를 갖는 제조 물품(예를 들어, 하나 이상의 컴퓨터 프로그램 제품)에 포함될 수 있다. 매체는 예를 들어 본 발명의 능력을 제공하고 용이하게 하기 위한 컴퓨터 판독 가능 프로그램 코드 수단 또는 논리(예를 들어, 명령, 코드, 지령 등)를 갖는다. 제조 물품은 컴퓨터 시스템의 부분으로서 포함될 수 있거나 별도로 판매될 수 있다.
본 발명의 하나 이상의 양태를 구비하는 제조 물품 또는 컴퓨터 프로그램 제품의 일 예가 도 32를 참조하여 설명된다. 컴퓨터 프로그램 제품(3200)은 예를 들어 본 발명의 하나 이상의 양태를 제공하고 용이하게 하기 위해 그 위에 컴퓨터 판독 가능 프로그램 코드 수단 또는 논리(3220)를 저장하기 위한 하나 이상의 컴퓨터 사용 가능 매체(3210)를 포함한다. 매체는 전자, 자기, 광학, 전자기, 적외선 또는 반도체 시스템(또는 장치 또는 디바이스) 또는 전파 매체일 수 있다. 컴퓨터 판독 가능 매체의 예는 반도체 또는 고상 메모리, 자기 테이프, 제거 가능 컴퓨터 디스켓, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 강성 자기 디스크 및 광학 디스크를 포함한다. 광학 디스크의 예는 콤팩트 디스크 판독 전용 메모리(CD-ROM), 콤팩트 디스크 판독/기록(CD-R/W) 및 DVD를 포함한다.
하나 이상의 컴퓨터 판독 가능 프로그램 코드 수단 또는 논리에 의해 규정된 하나 이상의 상호 관련된 모듈의 프로그램 명령 또는 논리적 어셈블리의 시퀀스는 본 발명의 하나 이상의 양태의 수행을 지시한다.
다양한 실시예가 전술되었지만, 이들은 단지 예일뿐이다.
더욱이, 환경은 특정 아키텍쳐 또는 그 부분집합이 에뮬레이팅되는 에뮬레이터(예를 들어, 소프트웨어 또는 다른 에뮬레이션 메커니즘)를 포함할 수 있다. 이러한 환경에서, 에뮬레이터의 하나 이상의 에뮬레이션 기능은 본 발명의 하나 이상의 양태를 구현할 수 있지만, 에뮬레이터를 실행하는 컴퓨터는 에뮬레이팅되는 능력과는 상이한 아키텍쳐를 가질 수도 있다. 일 예에서, 에뮬레이션 모드에서, 에뮬레이팅되는 특정 명령 또는 연산은 디코딩되고, 적절한 에뮬레이션 기능이 형성되어 개별 명령 또는 연산을 구현한다.
에뮬레이션 환경에서, 호스트 컴퓨터는 예를 들어, 명령 및 데이터를 저장하기 위한 메모리, 메모리로부터 명령을 인출하고 선택적으로 인출된 명령을 위한 로컬 버퍼링을 제공하기 위한 명령 인출 유닛, 명령 인출 유닛을 수신하고 인출되어 있는 명령의 유형을 판정하기 위한 명령 디코드 유닛, 및 명령을 실행하기 위한 명령 실행 유닛을 포함한다. 실행은 디코드 유닛에 의해 결정된 바와 같이, 메모리를 위한 레지스터 내로 데이터를 로딩하는 것과, 레지스터로부터 메모리로 재차 데이터를 저장하는 것과, 또는 소정 유형의 산술적 또는 논리적 연산을 수행하는 것을 포함할 수 있다. 일 예에서, 각각의 유닛은 소프트웨어에서 구현된다. 예를 들어, 유닛에 의해 수행되고 있는 연산은 에뮬레이터 소프트웨어 내의 하나 이상의 서브루틴으로서 구현된다.
또한, 직접적으로 또는 시스템 버스를 통해 메모리 소자에 간접적으로 결합된 적어도 하나의 프로세서를 포함하는 프로그램 코드를 저장하고 그리고/또는 실행하기 위해 적합한 데이터 프로세싱 시스템이 사용 가능하다. 메모리 소자는 예를 들어, 실행 중에 코드가 벌크 저장 장치로부터 검색되어야 하는 횟수를 감소시키기 위해 적어도 몇몇 프로그램 코드의 일시적인 저장을 제공하는 프로그램 코드의 실제 실행 중에 이용된 로컬 메모리, 벌크 저장 장치 및 캐시 메모리를 포함한다.
입력/출력 또는 I/O 디바이스(이들에 한정되는 것은 아니지만, 키보드, 디스플레이, 포인팅 디바이스, DASD, 테이프, CD, DVD, 썸 드라이드 및 다른 메모리 매체 등을 포함함)가 직접 또는 중간의 I/O 제어기를 통해 시스템에 결합될 수 있다. 네트워크 어댑터가 또한 시스템에 결합될 수 있어 데이터 프로세싱 시스템이 중간의 개인 또는 공중 네트워크를 통해 다른 데이터 프로세싱 시스템 또는 원격 프린터 또는 저장 디바이스에 결합되게 할 수 있다. 모뎀, 케이블 모뎀 및 이더넷 카드는 네트워크 어댑터의 이용 가능한 유형의 몇가지 예이다.
본 발명의 하나 이상의 양태의 능력은 소프트웨어, 펌웨어, 하드웨어 또는 이들의 소정의 조합으로 구현될 수 있다. 본 발명의 능력을 수행하기 위해 머쉰에 의해 실행 가능한 적어도 하나의 명령 프로그램을 구체화하는 머쉰에 의해 판독 가능한 적어도 하나의 프로그램 저장 디바이스가 제공될 수 있다.
본 명세서에 도시되어 있는 흐름도는 단지 예일 뿐이다. 본 발명의 사상으로부터 벗어나지 않고 본 명세서에 설명되어 있는 이들 다이어그램 또는 단계(또는 작업)에 대한 다수의 변형이 존재할 수 있다. 예를 들어, 단계는 상이한 순서로 수행될 수 있고, 또는 단계는 추가되고, 삭제되고, 수정될 수도 있다. 모든 이들 변형은 청구된 발명의 부분으로 고려된다.
실시예가 본 명세서에 상세히 도시되어 있고 설명되어 있지만, 다양한 수정, 추가, 치환 등이 본 발명의 사상으로부터 벗어나지 않고 이루어질 수 있고, 따라서 이하의 청구범위에 규정된 바와 같은 본 발명의 범주 내에 있는 것으로 고려된다는 것이 당 기술 분야의 숙련자들에게 명백할 것이다.
100: SMP 서버 컴퓨터 시스템 102: 물리적 SMP 서버
104: 프로세서 106: 메모리
108: I/O 어댑터 110: 하이퍼바이저
112: 가상 서버 112a: 가상 서버
114: 운영 체제 116: 미들웨어
118: 애플리케이션 120: 가상 프로세서
122: 가상 메모리 124: 가상 I/O 어댑터
200: 데이터 프로세싱 시스템 202, 204: 프로세서
206: 시스템 버스 208: 메모리 제어기/캐시
210: I/O 버스 브리지 212: I/O 버스
214: PCI 버스 브리지 216: PCI 버스
218: 모뎀 220: 네트워크 어댑터
230: 그래픽 어댑터 232: 하드 디스크
280: 매체 액세스 제어기(MAC) 282: 물리적 레이어
300: 데이터 프로세싱 시스템 310: 클라이언트 논리적 파티션
312: 고객 애플리케이션 314: 운영 체제 인스턴스
316: 가상 I/O 설비 320: 파티션 부속부
322: 가상 I/O 인터페이스 330: 하이퍼바이저
340: 기초 시스템 하드웨어 350: I/O 디바이스
420: 파티션 부속부 421: 글로벌 파티션 부속부
430: 하이퍼바이저 440: 전용 자원
510A, 510B: 논리적 파티션 510C: 파티션
520: 부속부 디바이스 드라이버 521: 입력/출력 경로
530: 하이퍼바이저 540: 입력/출력 하드웨어

Claims (10)

  1. 자기 가상화 입력/출력 디바이스로의 데이터 프로세싱 시스템의 다중 논리적 파티션을 위한 액세스를 설정하는 방법에 있어서,
    적어도 하나의 관련 파티션 부속부 인스턴스에 다중 논리적 파티션의 각각의 논리적 파티션을 인터페이싱하는 것으로서, 각각의 파티션 부속부 인스턴스는 상기 다중 논리적 파티션 중의 관련된 논리적 파티션을 상기 자기 가상화 입력/출력 디바이스의 큐 쌍 또는 가상 펑션 중 하나에 결합하고, 각각의 파티션 부속부 인스턴스는 개별 디스패치 가능한 상태를 포함하고 데이터 프로세싱 시스템의 하이퍼바이저 또는 상기 관련된 논리적 파티션으로부터 공여된 가상 어드레스 공간을 이용하여 생성되고, 각각의 파티션 부속부 인스턴스는 상기 자기 가상화 입력/출력 디바이스의 큐 쌍 또는 가상 펑션을 위한 디바이스 드라이버를 포함하는 것인 인터페이싱하는 것과,
    상기 논리적 파티션의 적어도 하나의 관련 파티션 부속부 인스턴스를 통해 상기 자기 가상화 입력/출력 디바이스의 큐 쌍 또는 가상 펑션에 인터페이싱되는 적어도 하나의 가상 입력/출력을 다중 논리적 파티션의 각각의 논리적 파티션에 제공하는 것
    을 포함하는 방법.
  2. 제1항에 있어서, 상기 자기 가상화 입력/출력 디바이스는 자신과 관련된 물리적 펑션 및 다중 가상 펑션 인스턴스를 포함하고, 각각의 가상 펑션 인스턴스는 물리적 펑션과 하나 이상의 물리적 자원을 공유하고, 상기 다중 논리적 파티션은 다중 파티션 부속부 인스턴스를 거쳐 상기 다중 가상 펑션 인스턴스에 인터페이싱되고, 각각의 파티션 부속부 인스턴스는 상기 자기 가상화 입력/출력 디바이스의 다중 가상 펑션 인스턴스의 각각의 가상 펑션 인스턴스에 상기 다중 논리적 파티션의 관련 논리적 파티션을 인터페이싱하는 것인 방법.
  3. 제1항에 있어서, 상기 인터페이싱은 상기 자기 가상화 입력/출력 디바이스의 관련 가상 펑션에 각각의 파티션 부속부 인스턴스를 인터페이싱하는 것을 포함하고, 상기 자기 가상화 입력/출력 디바이스는 물리적 펑션을 더 포함하고, 상기 방법은 상기 물리적 펑션에 인터페이싱된 물리적 펑션 파티션 부속부를 제공하는 것을 포함하고, 상기 물리적 펑션 파티션 부속부는 상기 다중 논리적 파티션을 다중 가상 펑션 인스턴스에 인터페이싱하는 파티션 부속부 인스턴스의 생성을 용이하게 하는 것인 방법.
  4. 제1항에 있어서, 상기 자기 가상화 입력/출력 디바이스는 자신과 관련된 다중 큐 쌍 인스턴스를 갖는 펑션을 포함하고, 상기 다중 논리적 파티션은 다중 파티션 부속부 인스턴스를 거쳐 상기 다중 큐 쌍 인스턴스에 인터페이싱되고, 각각의 파티션 부속부 인스턴스는 상기 자기 가상화 입력/출력 디바이스의 다중 큐 쌍 인스턴스의 각각의 큐 쌍 인스턴스에 상기 다중 논리적 파티션의 관련 논리적 파티션을 인터페이싱하는 것인 방법.
  5. 제1항에 있어서, 상기 인터페이싱하는 것은 다중 파티션 부속부 인터페이스를 이용하여 상기 자기 가상화 입력/출력 디바이스의 다중 큐 쌍 인스턴스에 다중 논리적 파티션을 인터페이싱하는 것을 포함하고, 상기 방법은 상기 자기 가상화된 입력/출력 디바이스의 적어도 하나의 펑션에 인터페이싱된 적어도 하나의 펑션 파티션 부속부를 제공하는 것을 더 포함하고, 상기 다중 큐 쌍 인스턴스는 상기 자기 가상화 입력/출력 디바이스의 적어도 하나의 펑션과 관련되는 것인 방법.
  6. 제1항에 있어서, 상기 자기 가상화 입력/출력 디바이스는 제1 물리적 펑션과, 상기 제1 물리적 펑션과 관련된 다중 제1 가상 펑션 인스턴스를 포함하고, 각각의 제1 가상 펑션 인스턴스는 상기 제1 물리적 펑션과 하나 이상의 물리적 자원을 공유하고, 상기 다중 논리적 파티션의 하나의 논리적 파티션에 인터페이싱된 파티션 부속부 인스턴스는 상기 자기 가상화 입력/출력 디바이스의 제1 가상 펑션 인스턴스에 하나의 논리적 파티션을 결합하고, 상기 자기 가상화 입력/출력 디바이스는 그와 관련된 적어도 하나의 제2 가상 펑션 인스턴스를 갖는 제2 물리적 펑션을 더 포함하고, 각각의 제2 가상 펑션 인스턴스는 상기 제2 물리적 펑션과 하나 이상의 물리적 자원을 공유하고, 상기 다중 파티션 부속부 인스턴스의 다른 파티션 부속부 인스턴스는 상기 다중 논리적 파티션의 하나의 논리적 파티션에 인터페이싱되고 적어도 하나의 제2 가상 펑션 인스턴스의 제2 가상 펑션 인터페이스에 하나의 논리적 파티션을 결합하고, 하나의 논리적 파티션은 상이한 파티션 부속부 인스턴스를 이용하여 제1 가상 펑션 인스턴스 및 제2 가상 펑션 인스턴스에 결합되는 것인 방법.
  7. 제1항에 있어서, 상기 인터페이싱하는 것은 상기 다중 논리적 파티션의 각각의 논리적 파티션을 위한 적어도 하나의 파티션 부속부 인스턴스를 설정하는 것을 더 포함하고, 상기 설정하는 것은 각각의 파티션 부속부 인스턴스에 대해, 관련된 논리적 파티션의 실제 어드레스 페이지 테이블에 대한 가상 어드레스를 이용하여 다중 파티션 부속부 인스턴스에 의해 이용된 공통의 파티션 부속부 코드 및 공통의 판독 전용 데이터를 포함하는 공통 물리적 메모리 페이지에 파티션 부속부 인스턴스를 위한 파티션 부속부 코드 및 판독 전용 데이터를 맵핑하는 것을 포함하고, 상기 공통의 물리적 메모리 페이지는 상기 데이터 프로세싱 시스템의 하이퍼바이저의 다중 논리적 파티션의 논리적 파티션 중 하나의 공통 물리적 메모리 페이지를 포함하는 것인 방법.
  8. 제1항에 있어서, 상기 인터페이싱하는 것은 각각의 관련된 파티션 부속부 인스턴스를 생성하는 것을 더 포함하고, 상기 생성하는 것은 그 관련 논리적 파티션으로부터 파티션 부속부 인스턴스로 공여된 가상 어드레스 공간을 이용하고, 상기 관련된 논리적 파티션은 네이티브 운영 체제를 포함하고, 상기 생성된 파티션 부속부 인스턴스는 상기 자기 가상화 입력/출력 디바이스의 큐 쌍 또는 가상 펑션에 상기 관련된 논리적 파티션을 인터페이싱하기 위한 네이티브 또는 비네이티브 운영 체제의 디바이스 드라이버를 포함하는 것인 방법.
  9. 데이터 프로세싱 시스템으로서,
    다중 논리적 파티션 및 상기 다중 논리적 파티션의 입력/출력 액세스를 용이하게 하기 위한 다중 파티션 부속부 인스턴스를 포함하는 적어도 하나의 프로세서와,
    상기 다중 파티션 부속부에 결합된 자기 가상화 입력/출력 디바이스
    를 포함하고,
    상기 다중 논리적 파티션의 각각의 논리적 파티션은 적어도 하나의 관련된 파티션 부속부 인스턴스에 인터페이싱되고, 각각의 파티션 부속부 인스턴스는 상기 데이터 프로세싱 시스템의 자기 가상화 입력/출력 디바이스의 큐 쌍 또는 가상 펑션 중 하나에 상기 다중 논리적 파티션의 관련된 논리적 파티션을 결합하고, 각각의 파티션 부속부 인스턴스는 개별 디스패치 가능한 상태를 포함하고 상기 데이터 프로세싱 시스템의 하이퍼바이저 또는 각각의 논리적 파티션으로부터 공여된 가상 어드레스 공간을 이용하고, 각각의 파티션 부속부 인스턴스는 상기 자기 가상화 입력/출력 어댑터의 큐 쌍 또는 각각의 가상 펑션을 위한 디바이스 드라이버를 포함하고, 상기 다중 논리적 파티션의 각각의 논리적 파티션은 논리적 파티션의 적어도 하나의 관련된 파티션 부속부 인스턴스를 통해 상기 자기 가상화 입력/출력 디바이스의 큐 쌍 또는 적어도 하나의 가상 펑션에 인터페이싱된 적어도 하나의 가상 입력/출력을 포함하는 것인 데이터 프로세싱 시스템.
  10. 프로그램이 컴퓨터 상에서 실행될 때 제1항 내지 제8항 중 어느 한 항의 모든 단계를 수행하도록 구성된 프로그램 코드 수단을 포함하는 컴퓨터 프로그램.
KR1020107022915A 2008-04-28 2009-04-23 자기 가상화 입력/출력 디바이스로의 다중 논리적 파티션의 인터페이싱 KR101354382B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/111,020 2008-04-28
US12/111,020 US8645974B2 (en) 2007-08-02 2008-04-28 Multiple partition adjunct instances interfacing multiple logical partitions to a self-virtualizing input/output device
PCT/EP2009/054890 WO2009133015A1 (en) 2008-04-28 2009-04-23 Interfacing multiple logical partitions to a self-virtualizing input/output device

Publications (2)

Publication Number Publication Date
KR20110010697A true KR20110010697A (ko) 2011-02-07
KR101354382B1 KR101354382B1 (ko) 2014-01-22

Family

ID=40903795

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107022915A KR101354382B1 (ko) 2008-04-28 2009-04-23 자기 가상화 입력/출력 디바이스로의 다중 논리적 파티션의 인터페이싱

Country Status (9)

Country Link
US (1) US8645974B2 (ko)
EP (1) EP2274675B1 (ko)
JP (1) JP5005111B2 (ko)
KR (1) KR101354382B1 (ko)
CN (1) CN102016800B (ko)
AT (1) ATE540354T1 (ko)
AU (1) AU2009242182B2 (ko)
CA (1) CA2708781C (ko)
WO (1) WO2009133015A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170057237A (ko) * 2014-09-18 2017-05-24 인텔 코포레이션 컨텐츠 변환 없는 컴퓨팅 디바이스에서의 다중 운영 체제 환경들의 지원

Families Citing this family (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8219989B2 (en) * 2007-08-02 2012-07-10 International Business Machines Corporation Partition adjunct with non-native device driver for facilitating access to a physical input/output device
US8321878B2 (en) 2008-10-09 2012-11-27 Microsoft Corporation Virtualized storage assignment method
CN102334112B (zh) * 2009-02-27 2014-06-11 美国博通公司 用于虚拟机网络的方法和系统
US8776088B2 (en) * 2009-03-30 2014-07-08 Microsoft Corporation Operating system distributed over heterogeneous platforms
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
US8737262B2 (en) * 2009-11-24 2014-05-27 Red Hat Israel, Ltd. Zero copy transmission with raw packets
US9535732B2 (en) * 2009-11-24 2017-01-03 Red Hat Israel, Ltd. Zero copy transmission in virtualization environment
US8327358B2 (en) 2009-12-10 2012-12-04 Empire Technology Development Llc Hypervisor driver management in virtual machine environments
US9389895B2 (en) * 2009-12-17 2016-07-12 Microsoft Technology Licensing, Llc Virtual storage target offload techniques
KR20110094764A (ko) * 2010-02-17 2011-08-24 삼성전자주식회사 트랜잭션 기반 입출력 인터페이스를 제공하는 가상화 장치 및 방법
US8413143B2 (en) 2010-04-12 2013-04-02 International Business Machines Corporation Dynamic network adapter queue pair allocation
US9396000B2 (en) * 2010-06-25 2016-07-19 Intel Corporation Methods and systems to permit multiple virtual machines to separately configure and access a physical device
US8468551B2 (en) * 2010-06-30 2013-06-18 International Business Machines Corporation Hypervisor-based data transfer
US8122167B1 (en) 2010-08-06 2012-02-21 International Business Machines Corporation Polling in a virtualized information handling system
US9411517B2 (en) * 2010-08-30 2016-08-09 Vmware, Inc. System software interfaces for space-optimized block devices
US8726274B2 (en) * 2010-09-10 2014-05-13 International Business Machines Corporation Registration and initialization of cluster-aware virtual input/output server nodes
US8561065B2 (en) 2010-11-15 2013-10-15 International Business Machines Corporation Virtualization of vendor specific network interfaces of self-virtualizing input/output device virtual functions
US8839240B2 (en) 2010-11-29 2014-09-16 International Business Machines Corporation Accessing vendor-specific drivers for configuring and accessing a self-virtualizing input/output device
US8495274B2 (en) * 2010-12-08 2013-07-23 International Business Machines Corporation Address translation table to enable access to virtual functions
US8561066B2 (en) 2010-12-08 2013-10-15 International Business Machines Corporation Simplified DMA mappings for self-virtualizing input/output device virtual functions
US8645755B2 (en) 2010-12-15 2014-02-04 International Business Machines Corporation Enhanced error handling for self-virtualizing input/output device in logically-partitioned data processing system
US8683478B2 (en) 2010-12-21 2014-03-25 International Business Machines Corporation Best fit mapping of self-virtualizing input/output device virtual functions for mobile logical partitions
US8537706B2 (en) 2011-01-11 2013-09-17 International Business Machines Corporation Preserving traffic class priority QoS with self-virtualizing input/output device
US8677356B2 (en) 2011-01-11 2014-03-18 International Business Machines Corporation Adjunct partition work scheduling with quality of service attributes
US8862739B2 (en) * 2011-01-11 2014-10-14 International Business Machines Corporation Allocating resources to virtual functions
US8418166B2 (en) 2011-01-11 2013-04-09 International Business Machines Corporation Transparent update of adapter firmware for self-virtualizing input/output device
US8635615B2 (en) * 2011-05-14 2014-01-21 Industrial Technology Research Institute Apparatus and method for managing hypercalls in a hypervisor and the hypervisor thereof
US9218195B2 (en) 2011-05-17 2015-12-22 International Business Machines Corporation Vendor-independent resource configuration interface for self-virtualizing input/output device
US20130159572A1 (en) * 2011-12-16 2013-06-20 International Business Machines Corporation Managing configuration and system operations of a non-shared virtualized input/output adapter as virtual peripheral component interconnect root to multi-function hierarchies
CN102591702B (zh) 2011-12-31 2015-04-15 华为技术有限公司 虚拟化处理方法及相关装置和计算机系统
US9311122B2 (en) * 2012-03-26 2016-04-12 Oracle International Corporation System and method for providing a scalable signaling mechanism for virtual machine migration in a middleware machine environment
JP5894496B2 (ja) * 2012-05-01 2016-03-30 ルネサスエレクトロニクス株式会社 半導体装置
US9740624B2 (en) 2012-10-08 2017-08-22 International Business Machines Corporation Selectable address translation mechanisms within a partition
US9280488B2 (en) 2012-10-08 2016-03-08 International Business Machines Corporation Asymmetric co-existent address translation structure formats
US9600419B2 (en) 2012-10-08 2017-03-21 International Business Machines Corporation Selectable address translation mechanisms
US9355032B2 (en) 2012-10-08 2016-05-31 International Business Machines Corporation Supporting multiple types of guests by a hypervisor
US9355040B2 (en) 2012-10-08 2016-05-31 International Business Machines Corporation Adjunct component to provide full virtualization using paravirtualized hypervisors
US9348757B2 (en) 2012-10-08 2016-05-24 International Business Machines Corporation System supporting multiple partitions with differing translation formats
US9875125B2 (en) * 2013-06-14 2018-01-23 International Business Machines Corporation Parallel mapping of client partition memory to multiple physical adapters
US9684286B2 (en) 2013-09-12 2017-06-20 Robert Bosch Gmbh Security system with point bus abstraction and partitioning
US9727611B2 (en) * 2013-11-08 2017-08-08 Samsung Electronics Co., Ltd. Hybrid buffer management scheme for immutable pages
US20150149995A1 (en) * 2013-11-22 2015-05-28 International Business Machines Corporation Implementing dynamic virtualization of an sriov capable sas adapter
US9639478B2 (en) * 2014-01-17 2017-05-02 International Business Machines Corporation Controlling direct memory access page mappings
US10089129B2 (en) 2014-06-30 2018-10-02 International Business Machines Corporation Supporting flexible deployment and migration of virtual servers via unique function identifiers
PT3204861T (pt) 2015-12-15 2019-09-19 Lzlabs Gmbh Gestão e prefixação de chave de proteção em sistema de emulação legado de espaço de endereço virtual
US10042720B2 (en) 2016-02-22 2018-08-07 International Business Machines Corporation Live partition mobility with I/O migration
US10042723B2 (en) 2016-02-23 2018-08-07 International Business Machines Corporation Failover of a virtual function exposed by an SR-IOV adapter
US10025584B2 (en) * 2016-02-29 2018-07-17 International Business Machines Corporation Firmware management of SR-IOV adapters
CN105979007B (zh) * 2016-07-04 2020-06-02 华为技术有限公司 加速资源处理方法、装置及网络功能虚拟化系统
US9720862B1 (en) 2016-10-21 2017-08-01 International Business Machines Corporation Migrating interrupts from a source I/O adapter of a computing system to a destination I/O adapter of the computing system
US9720863B1 (en) 2016-10-21 2017-08-01 International Business Machines Corporation Migrating MMIO from a source I/O adapter of a source computing system to a destination I/O adapter of a destination computing system
US10579437B2 (en) 2016-12-01 2020-03-03 International Business Machines Corporation Migrating a logical partition with a native logical port
FR3061325B1 (fr) * 2016-12-28 2019-05-31 Bull Sas Procede de gestion de memoire virtuelle
US10621133B2 (en) * 2017-02-08 2020-04-14 International Business Machines Corporation Managing by a hypervisor flexible adapter configurations and resources in a computer system
JP7025100B2 (ja) * 2017-10-06 2022-02-24 インターナショナル・ビジネス・マシーンズ・コーポレーション アドレス変換なしで動作する読み込み/格納ユニットでの実効アドレスのシノニムの処理
US11099789B2 (en) * 2018-02-05 2021-08-24 Micron Technology, Inc. Remote direct memory access in multi-tier memory systems
US10901803B2 (en) 2018-08-17 2021-01-26 International Business Machines Corporation Allocation of resources among logical partitions
US11068310B2 (en) * 2019-03-08 2021-07-20 International Business Machines Corporation Secure storage query and donation
US11500568B2 (en) 2020-01-02 2022-11-15 International Business Machines Corporation LPM management using contingent and conditional inputs
CN111885170B (zh) * 2020-07-23 2022-03-11 平安科技(深圳)有限公司 物联网控制系统的处理方法、系统、云端服务器及介质
US11455110B1 (en) * 2021-09-08 2022-09-27 International Business Machines Corporation Data deduplication
CN117439960B (zh) * 2023-12-21 2024-04-12 井芯微电子技术(天津)有限公司 支持接口复用和兼容虚拟网络互联的接口管理方法及系统
CN117873405A (zh) * 2024-03-11 2024-04-12 腾讯科技(深圳)有限公司 数据存储方法、装置、计算机设备和存储介质

Family Cites Families (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5432929A (en) * 1992-09-09 1995-07-11 International Business Machines Corporation Storage subsystem having a modifiable key-lock
US5729723A (en) * 1992-11-16 1998-03-17 Hitachi, Ltd. Data processing unit
US6256704B1 (en) * 1993-09-16 2001-07-03 International Business Machines Corporation Task management for data accesses to multiple logical partitions on physical disk drives in computer systems
US5555385A (en) * 1993-10-27 1996-09-10 International Business Machines Corporation Allocation of address spaces within virtual machine compute system
US6647508B2 (en) * 1997-11-04 2003-11-11 Hewlett-Packard Development Company, L.P. Multiprocessor computer architecture with multiple operating system instances and software controlled resource allocation
US6473655B1 (en) * 2000-05-02 2002-10-29 International Business Machines Corporation Data processing system and method for creating a virtual partition within an existing partition in a hard disk drive
US6629162B1 (en) * 2000-06-08 2003-09-30 International Business Machines Corporation System, method, and product in a logically partitioned system for prohibiting I/O adapters from accessing memory assigned to other partitions during DMA
US6892383B1 (en) * 2000-06-08 2005-05-10 International Business Machines Corporation Hypervisor function sets
JP3522250B2 (ja) * 2000-10-27 2004-04-26 株式会社ソニー・コンピュータエンタテインメント パーティション作成方法および削除方法、プログラムを記録した記録媒体、情報処理装置
US7191440B2 (en) * 2001-08-15 2007-03-13 Intel Corporation Tracking operating system process and thread execution and virtual machine execution in hardware or in a virtual machine monitor
US6970990B2 (en) * 2002-09-30 2005-11-29 International Business Machines Corporation Virtual mode virtual memory manager method and apparatus
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
US7328438B2 (en) * 2003-03-27 2008-02-05 International Business Machines Corporation Deallocation of computer data in a multithreaded computer
US7076634B2 (en) * 2003-04-24 2006-07-11 International Business Machines Corporation Address translation manager and method for a logically partitioned computer system
US7844801B2 (en) * 2003-07-31 2010-11-30 Intel Corporation Method and apparatus for affinity-guided speculative helper threads in chip multiprocessors
US20050071841A1 (en) * 2003-09-30 2005-03-31 Hoflehner Gerolf F. Methods and apparatuses for thread management of mult-threading
US7631307B2 (en) * 2003-12-05 2009-12-08 Intel Corporation User-programmable low-overhead multithreading
US7558723B2 (en) 2003-12-12 2009-07-07 Microsoft Corporation Systems and methods for bimodal device virtualization of actual and idealized hardware-based devices
US7412545B2 (en) * 2004-07-22 2008-08-12 International Business Machines Corporation Apparatus and method for updating I/O capability of a logically-partitioned computer system
US20060047959A1 (en) * 2004-08-25 2006-03-02 Microsoft Corporation System and method for secure computing
JP4295184B2 (ja) * 2004-09-17 2009-07-15 株式会社日立製作所 仮想計算機システム
JP2006099332A (ja) 2004-09-29 2006-04-13 Sony Corp 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム
US7296133B2 (en) * 2004-10-14 2007-11-13 International Business Machines Corporation Method, apparatus, and computer program product for dynamically tuning amount of physical processor capacity allocation in shared processor systems
US20060090058A1 (en) * 2004-10-26 2006-04-27 Chng Yongpeng Method and data storage system for providing multiple partition support
US20060095690A1 (en) * 2004-10-29 2006-05-04 International Business Machines Corporation System, method, and storage medium for shared key index space for memory regions
US20060143417A1 (en) * 2004-12-23 2006-06-29 David Poisner Mechanism for restricting access of critical disk blocks
US7685335B2 (en) * 2005-02-25 2010-03-23 International Business Machines Corporation Virtualized fibre channel adapter for a multi-processor data processing system
US20060195663A1 (en) * 2005-02-25 2006-08-31 International Business Machines Corporation Virtualized I/O adapter for a multi-processor data processing system
US20080307425A1 (en) * 2005-03-31 2008-12-11 Shailendra Tripathi Data Processing System and Method
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
US7200704B2 (en) * 2005-04-07 2007-04-03 International Business Machines Corporation Virtualization of an I/O adapter port using enablement and activation functions
US7725893B2 (en) * 2005-04-28 2010-05-25 Sap Aktiengesellschaft Platform independent replication
US7299337B2 (en) * 2005-05-12 2007-11-20 Traut Eric P Enhanced shadow page table algorithms
JP4322232B2 (ja) * 2005-06-14 2009-08-26 株式会社ソニー・コンピュータエンタテインメント 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム
US20060294288A1 (en) * 2005-06-24 2006-12-28 Rohit Seth System and method for using protection keys to emulate a large region identifier space
US20080126690A1 (en) 2006-02-09 2008-05-29 Rajan Suresh N Memory module with memory stack
US8327353B2 (en) * 2005-08-30 2012-12-04 Microsoft Corporation Hierarchical virtualization with a multi-level virtualization mechanism
US7802081B2 (en) * 2005-09-30 2010-09-21 Intel Corporation Exposed sequestered partition apparatus, systems, and methods
US8612970B2 (en) * 2005-11-30 2013-12-17 Red Hat, Inc. Purpose domain for low overhead virtual machines
US8104034B2 (en) * 2005-11-30 2012-01-24 Red Hat, Inc. Purpose domain for in-kernel virtual machine for low overhead startup and low resource usage
US20070180210A1 (en) * 2006-01-31 2007-08-02 Seagate Technology Llc Storage device for providing flexible protected access for security applications
US7814307B2 (en) * 2006-03-16 2010-10-12 Microsoft Corporation Fast booting a computing device to a specialized experience
US8595744B2 (en) * 2006-05-18 2013-11-26 Oracle America, Inc. Anticipatory helper thread based code execution
US8108670B2 (en) * 2006-07-13 2012-01-31 Intel Corporation Client apparatus and method with key manager
US7546398B2 (en) 2006-08-01 2009-06-09 International Business Machines Corporation System and method for distributing virtual input/output operations across multiple logical partitions
US7506084B2 (en) * 2006-10-17 2009-03-17 International Business Machines Corporation Method for communicating with an I/O adapter using cached address translations
US7617377B2 (en) * 2006-10-17 2009-11-10 International Business Machines Corporation Splitting endpoint address translation cache management responsibilities between a device driver and device driver services
US7814405B2 (en) * 2006-11-28 2010-10-12 International Business Machines Corporation Method and system for automatic generation and updating of tags based on type of communication and content state in an activities oriented collaboration tool
US8219989B2 (en) * 2007-08-02 2012-07-10 International Business Machines Corporation Partition adjunct with non-native device driver for facilitating access to a physical input/output device
US8010763B2 (en) * 2007-08-02 2011-08-30 International Business Machines Corporation Hypervisor-enforced isolation of entities within a single logical partition's virtual address space

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170057237A (ko) * 2014-09-18 2017-05-24 인텔 코포레이션 컨텐츠 변환 없는 컴퓨팅 디바이스에서의 다중 운영 체제 환경들의 지원

Also Published As

Publication number Publication date
EP2274675A1 (en) 2011-01-19
ATE540354T1 (de) 2012-01-15
US8645974B2 (en) 2014-02-04
CA2708781C (en) 2014-07-29
CN102016800B (zh) 2014-11-19
US20090037941A1 (en) 2009-02-05
EP2274675B1 (en) 2012-01-04
AU2009242182B2 (en) 2014-04-03
WO2009133015A1 (en) 2009-11-05
CA2708781A1 (en) 2009-11-03
JP5005111B2 (ja) 2012-08-22
AU2009242182A1 (en) 2009-11-05
CN102016800A (zh) 2011-04-13
KR101354382B1 (ko) 2014-01-22
JP2011519089A (ja) 2011-06-30

Similar Documents

Publication Publication Date Title
KR101354382B1 (ko) 자기 가상화 입력/출력 디바이스로의 다중 논리적 파티션의 인터페이싱
US8219989B2 (en) Partition adjunct with non-native device driver for facilitating access to a physical input/output device
US7945436B2 (en) Pass-through and emulation in a virtual machine environment
EP2283429B1 (en) Hypervisor-enforced isolation of entities within a single logical partition's virtual address space
US9519795B2 (en) Interconnect partition binding API, allocation and management of application-specific partitions
US9092297B2 (en) Transparent update of adapter firmware for self-virtualizing input/output device
US7743389B2 (en) Selecting between pass-through and emulation in a virtual machine environment
US9009701B2 (en) Method for controlling a virtual machine and a virtual machine system
US7467381B2 (en) Resource partitioning and direct access utilizing hardware support for virtualization
US9384060B2 (en) Dynamic allocation and assignment of virtual functions within fabric
US10635499B2 (en) Multifunction option virtualization for single root I/O virtualization
US20080126648A1 (en) Message Signaled Interrupt Management for a Computer Input/Output Fabric Incorporating Platform Independent Interrupt Manager
US20080126617A1 (en) Message Signaled Interrupt Management for a Computer Input/Output Fabric Incorporating Dynamic Binding
US20230036017A1 (en) Last-level cache topology for virtual machines
Bielski Novel memory and I/O virtualization techniques for next generation data-centers based on disaggregated hardware
Lange Symbiotic virtualization
Murray et al. Xen and the Beauty of Virtualization

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: 20161228

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20171227

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20181227

Year of fee payment: 6