KR101812727B1 - 다수의 하이퍼바이저들을 실행하는 시스템들 및 방법들 - Google Patents
다수의 하이퍼바이저들을 실행하는 시스템들 및 방법들 Download PDFInfo
- Publication number
- KR101812727B1 KR101812727B1 KR1020157028702A KR20157028702A KR101812727B1 KR 101812727 B1 KR101812727 B1 KR 101812727B1 KR 1020157028702 A KR1020157028702 A KR 1020157028702A KR 20157028702 A KR20157028702 A KR 20157028702A KR 101812727 B1 KR101812727 B1 KR 101812727B1
- Authority
- KR
- South Korea
- Prior art keywords
- hypervisor
- hardware processors
- scheduling
- memory address
- address translation
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/109—Address translation for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1021—Hit rate improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/151—Emulated environment, e.g. virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/651—Multi-level translation tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/656—Address space sharing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Memory System (AREA)
- Stored Programmes (AREA)
- Multi Processors (AREA)
Abstract
장치는 프로세서들의 제 1 세트에서 실행가능한 1차 하이퍼바이저와 프로세서들의 제 2 세트에서 실행가능한 2차 하이퍼바이저를 포함한다. 1차 하이퍼바이저는 리소스의 셋팅들을 정의할 수 있고 2차 하이퍼바이저는 1차 하이퍼바이저에 의해 정의된 셋팅들에 기초하여 리소스를 사용할 수 있다. 예를 들어, 1차 하이퍼바이저는 2차 하이퍼바이저에 대한 메모리 어드레스 트랜슬레이션 맵핑들을 프로그래밍할 수 있다. 1차 하이퍼바이저 및 2차 하이퍼바이저는 그들 자신의 스케줄러들을 포함할 수 있다.
Description
관련 출원들에 대한 상호 참조
[0001]본 출원은 2013년 3월 14일에 출원된 공동 소유의 미국 정규 특허출원 제 13/829,023호를 우선권으로 주장하며, 2013년 3월 14일에 출원된 공동계류중인 미국 정규 특허출원 제 13/828,183호 및 2013년 2월 26일에 출원된 공동계류중인 미국 정규 특허출원 제 13/777,314호와 관련된다. 상기 출원들 각각의 내용들은 그 전체가 인용에 의해 포함된다.
[0002]본 개시물은, 일반적으로 다수의 하이퍼바이저들을 이용한 운영 시스템들의 가상현실화와 관련된다.
[0003]기술에서의 발전들은 더 소형이고 더 강력한(powerful) 컴퓨팅 디바이스들을 초래했다. 예를 들어, 소형이고, 경량이며, 사용자에 의해 용이하게 휴대될 수 있는 휴대용 무선 텔레폰들, 개인 휴대 정보 단말(PDA)들, 태블릿 컴퓨터들, 및 페이징(paging) 디바이스들과 같은 무선 컴퓨팅 디바이스들을 포함하는 다양한 휴대용 개인 컴퓨팅 디바이스들이 현재 존재한다. 많은 그러한 컴퓨팅 디바이스들은 그들 내에 포함된 다른 디바이스들을 포함한다. 예를 들어, 무선 텔레폰은 디지털 스틸 카메라(digital still camera), 디지털 비디오 카메라, 디지털 리코더, 및 오디오 파일 플레이어를 또한 포함할 수 있다. 또한, 그러한 컴퓨팅 디바이스들은, 인터넷에 액세스하기 위해 사용될 수 있는 웹 브라우저 애플리케이션 및 스틸 또는 비디오 카메라를 이용하고 그리고 멀티미디어 재생 기능을 제공하는 멀티미디어 애플리케이션들과 같은 소프트웨어 애플리케이션들을 포함하는 실행가능한 명령들을 프로세싱할 수 있다.
[0004]컴퓨팅 디바이스들, 이를 테면, 모바일 폰들은 다수의 프로세서들을 포함할 수 있다. 예를 들어, 모바일 폰은 중앙 프로세싱 유닛(CPU)(종종 애플리케이션 프로세서로 지칭됨) 및 디지털 신호 프로세서(DSP)를 포함할 수도 있다. 각각의 프로세서는, 특정한 계산 태스크(task)들을 수행하는데 다른 프로세서(들)보다 더 양호하게 적합할 수도 있다. 예를 들어, 1차 프로세서로서 동작할 수도 있고 모바일 폰 운영 시스템을 실행할 수도 있는 CPU는, 웹 브라우저 및 사용자 인터페이스 코드와 같은 "제어 코드"를 실행하는데 있어 더 효율적일 수도 있다. 반면에, DSP는, 신호 프로세싱 및 다른 계산-집약적인(math-intensive) 기능들을 실행하는 경우 CPU보다 더 효율적일 수도 있다. CPU 및 DSP는 별개의 명령 세트 아키텍처들을 가질 수 있다. 이와 같이, CPU 상에서 실행되도록 설계되는 애플리케이션들은 DSP와 호환가능하지 않을 수 있고, 그 반대로 경우도 마찬가지이다.
[0005]특정 상황들에서, 하나의 컴퓨팅 디바이스에서 다수의 운영 시스템들을 실행하는 것이 유리할 수 있다. 다수의 운영 시스템들을 실행하는 컴퓨팅 디바이스들에서, 이용가능한 하드웨어 리소스들의 앱스트랙션(abstraction)들을 운영 시스템들로 제공하기 위해서 하이퍼바이저(가상 머신 모니터로도 알려짐)가 사용될 수 있다. 이와 같이, 하이퍼바이저는 다수의 운영 시스템들을 위한 운영 시스템으로서 역할을 할 수 있다. 그러나, 상이한 명령 세트 아키텍처들을 갖는 프로세서들의 세트들에 걸쳐서 동시에 실행될 수 있는 하이퍼바이저를 설계하는 것은 곤란할 수 있다.
[0006]프로세서들의 다수의 세트들에 걸친 하이퍼바이저 실행 시스템들 및 방법들이 개시된다. 개시된 기술들에 따르면, 시스템의 하이퍼바이저들 중 하나는 "1차" 하이퍼바이저일 수 있고 시스템 내 나머지 하이퍼바이저는 "2차" 하이퍼바이저들일 수 있다. 1차 하이퍼바이저는 2차 하이퍼바이저들과는 상이한 프로세서들의 세트 상에서 실행될 수 있다. 예를 들어, 1차 하이퍼바이저는 2차 하이퍼바이저들과는 상이한 명령 세트 아키텍처와 호환될 수 있다.
[0007]1차 하이퍼바이저는 2차 하이퍼바이저들을 특정 동작의 수행으로부터 제한할 수 있고, 대신에 2차 하이퍼바이저들이 제한된 동작들의 수행을 위해 1차 하이퍼바이저에 의존하도록 강제할 수 있다. 예를 들어, 1차 하이퍼바이저는 보안 상의 목적으로 (예를 들어, 다수의 2차 하이퍼바이저들이 동일한 물리적 어드레스로의 맵핑을 생성하려고 시도하는 상황들을 방지하기 위해서) 2차 하이퍼바이저들에 대한 물리적 어드레스 맵핑들을 결정할 수 있다.
[0008]2차 하이퍼바이저들은 1차 하이퍼바이저에 의존하지 않고 특정 동작들을 수행할 수 있다. 예를 들어, 2차 하이퍼바이저들은, 1차 하이퍼바이저가 개입하지 않고 태스크 스케줄링을 수행하는 것이 가능할 수 있다. 2차 하이퍼바이저들이 그들 자신의 태스크 스케줄링을 수행할 수 있게 하는 것은, 2차 하이퍼바이저들로 하여금, 2차 하이퍼바이저들에서 실행되는 게스트 운영 시스템들에 대한 서비스 품질(QoS) 보증들(예를 들어, 레이턴시 보증들)을 유지할 수 있게 할 수 있다.
[0009]특정 실시예에서, 장치는, 프로세서들의 제 1 세트에서 실행가능한 1차 하이퍼바이저와 프로세서들의 제 2 세트에서 실행가능한 2차 하이퍼바이저를 포함한다. 1차 하이퍼바이저는 메모리 어드레스 트랜슬레이션 맵핑들을 프로그래밍하도록 구성되고, 2차 하이퍼바이저는 메모리 어드레스 트랜슬레이션 맵핑들을 이용하도록 구성된다.
[0010]다른 특정 실시예에서, 장치는 프로세서들의 제 1 세트 상에서 실행가능한 1차 하이퍼바이저 및 프로세서들의 제 2 세트 상에서 실행가능한 2차 하이퍼바이저를 포함한다. 1차 하이퍼바이저는 제 1 스케줄러를 포함하고, 2차 하이퍼바이저는 제 1 스케줄러와는 상이한 제 2 스케줄러를 포함한다.
[0011]다른 특정 실시예에서, 장치는 프로세서들의 제 1 세트에서 실행가능한 1차 하이퍼바이저 및 프로세서들의 제 2 세트에서 실행가능한 2차 하이퍼바이저를 포함한다. 1차 하이퍼바이저는 리소스의 셋팅들을 정의하도록 구성되고, 2차 하이퍼바이저는 셋팅들에 기초하여 리소스들을 이용하도록 구성된다.
[0012]다른 특정 실시예에서, 방법은, 프로세서들의 제 2 세트 상에서 실행되는 2차 하이퍼바이저에 의해서, 프로세서들의 제 1 세트 상에서 실행되는 1차 하이퍼바이저에 의해 프로그래밍된 하나 이상의 메모리 어드레스 트랜슬레이션 맵핑들을 리트리빙하는 단계를 포함한다. 방법은 또한, 데이터 액세스 동작 동안, 리트리빙된 하나 이상의 메모리 어드레스 트랜슬레이션 맵핑들을 이용하는 단계를 포함한다.
[0013]다른 특정 실시예에서, 장치는 프로세싱하기 위한 제 1 수단 및 프로세싱하기 위한 제 2 수단을 포함한다. 장치는 또한, 메모리 어드레스 트랜슬레이션들을 프로그래밍하기 위한 수단을 포함하고, 프로그래밍하기 위한 수단은 프로세싱하기 위한 제 1 수단에서 실행가능하다. 장치는 메모리 어드레스 트랜슬레이션들을 이용하기 위한 수단을 더 포함하고, 이용하기 위한 수단은 프로세싱하기 위한 제 2 수단에서 실행가능하다.
[0014]다른 특정 실시예에서, 비일시적 컴퓨터-판독가능 매체는 명령들을 포함하고, 이 명령들은, 컴퓨터에 의해 실행될 경우, 컴퓨터로 하여금, 프로세서들의 제 2 세트 상에서 실행되는 2차 하이퍼바이저에 의해서, 프로세서들의 제 1 세트 상에서 실행되는 1차 하이퍼바이저에 의해 프로그래밍된 하나 이상의 메모리 어드레스 트랜슬레이션 맵핑들을 리트리빙하게 한다. 이 명령들은, 컴퓨터에 의해 실행될 경우, 또한 컴퓨터로 하여금, 데이터 액세스 동작 동안, 리트리빙된 하나 이상의 메모리 어드레스 트랜슬레이션 맵핑들을 이용하게 한다.
[0015]개시된 실시예들 중 적어도 하나에 의해 제공되는 일 특정한 이점은, 프로세서들의 상이한 세트들(예를 들어, 상이한 명령 세트 아키텍처들을 갖는 프로세서들의 세트들) 상에서 다수의 하이퍼바이저들의 실행을 지원하는 능력이다. 다른 양상들에서, 본 개시의 이점들 및 특성들은, 다음의 섹션들, 즉, 도면들의 간단한 설명, 상세한 설명, 및 청구항들을 포함하는 전체 출원을 검토한 이후 명백해질 것이다.
[0016]도 1은 다수의 하이퍼바이저들을 실행시키기 위해 동작가능한 시스템의 특정 실시예의 다이어그램이다.
[0017]도 2는 도 1의 시스템에 의해 사용될 수 있는 어드레스 트랜슬레이션 맵핑의 특정 실시예를 도시하는 다이어그램이다.
[0018]도 3은 다수의 하이퍼바이저들을 실행하는 방법의 특정 실시예를 도시하는 흐름도이다.
[0019]도 4는 다수의 하이퍼바이저들의 실행을 지원하기 위해 동작가능한 컴포넌트들을 포함하는 무선 디바이스의 블록도이다.
[0017]도 2는 도 1의 시스템에 의해 사용될 수 있는 어드레스 트랜슬레이션 맵핑의 특정 실시예를 도시하는 다이어그램이다.
[0018]도 3은 다수의 하이퍼바이저들을 실행하는 방법의 특정 실시예를 도시하는 흐름도이다.
[0019]도 4는 다수의 하이퍼바이저들의 실행을 지원하기 위해 동작가능한 컴포넌트들을 포함하는 무선 디바이스의 블록도이다.
[0020]도 1은 다수의 하이퍼바이저들을 실행시키기 위해 동작가능한 시스템(100)의 특정 실시예이다. 시스템(100)은 프로세서들의 제 1 세트(110) 상에서 실행가능한 1차 하이퍼바이저(111) 및 프로세서들의 제 2 세트(120) 상에서 실행가능한 2차 하이퍼바이저(121)를 포함한다. 프로세서들의 세트들(110, 120) 각각은, 본원에서 추가로 설명되는 바와 같이, 하나 이상의 프로세서들, 프로세싱 유닛들, 코어들, 및/또는 하드웨어 스레드들을 포함할 수 있다. 멀티스레드 프로세서는, 동시 실행되는 다수의 하드웨어 실행 콘텍스트들을 지닌 프로세서를 통해 구현될 수 있거나, 또는 하나의 하드웨어 실행 콘텍스트를 지닌 다수의 프로세서들(예를 들어, 대칭적 멀티프로세싱(SMP) 클러스터)로서 구현될 수 있다.
[0021]예를 들어, 1차 하이퍼바이저(111)는 제1 (예를 들어, CPU(central processing unit)-특정) 명령 세트 아키텍처에 따라서 하나 이상의 CPU 코어들/하드웨어 스레드들 상에서 실행될 수 있고 2차 하이퍼바이저(121)는 제2 (예를 들어, DSP(digital signal processor)-특정) 명령 세트 아키텍처에 따라서 하나 이상의 DSP 코어들/하드웨어 스레드들 상에서 실행될 수 있다. 본원의 CPU들 및 DSP들의 기술은 단지 예시일 뿐이라는 것을 주목해야 한다. 다른 프로세서들 또는 프로세서들의 세트들, 이를 테면 네트워크 프로세싱 유닛들(NPU들), 그래피컬 프로세싱 유닛들(GPU들) 등이 또한 시스템(100)에 포함될 수 있다.
[0022]각각의 하이퍼바이저(111, 121)는 하나 이상의 게스트 운영 시스템들에 의해 프로세서들(110, 120)에 대한 액세스를 중재할 수 있다. 게스트 운영 시스템은 애플리케이션 프로그래밍 인터페이스(API), 공유 메모리 지역을 이용하거나, 또는 일부 다른 메커니즘을 통해 하이퍼바이저(111, 121)와 통신할 수 있다. 1차 하이퍼바이저(111)는, 프로세서들의 제 1 세트(110)에서 실행되는 게스트 운영 시스템(들)에 대한 "로컬" 스케줄링을 수행하도록 구성되는 제 1 스케줄러(112)를 포함한다. 하이퍼바이저에 의한 "로컬" 스케줄링은 하이퍼바이저에 대응하는 프로세서들의 세트 상에 배타적으로 실행되는 게스트 운영 시스템에 대해 하이퍼바이저에 의해 수행되는 동작들을 스케줄링하는 것을 지칭할 수 있다. 예를 들어, 1차 하이퍼바이저(111)는, 프로세서들의 제 1 세트(110)에서의 실행을 위한 제 1 게스트 운영 시스템(113)의 가상 프로세서들(114)을 스케줄링할 수 있다. 가상 프로세서들(114) 각각은 제 1 게스트 운영 시스템(113)의 태스크(151)(예를 들어, 제 1 게스트 운영 시스템(113) 상에서 실행되는 애플리케이션에 의해 생성된 태스크)에 대응할 수 있다.
[0023]2차 하이퍼바이저(121)는 프로세서들의 제 2 세트(120) 상에서 실행되는 게스트 운영 시스템(들)에 대한 "로컬" 스케줄링을 수행하도록 구성되는 제 2 스케줄러(122)를 포함한다. 예를 들어, 2차 하이퍼바이저(121)는, 프로세서들의 제 2 세트(120)에서의 실행을 위한 제 2 게스트 운영 시스템(123)의 가상 프로세서들(124)을 스케줄링할 수 있다. 가상 프로세서들(124) 각각은 제 2 게스트 운영 시스템(123)의 태스크(152)(예를 들어, 제 2 게스트 운영 시스템(123) 상에서 실행되는 애플리케이션에 의해 생성된 태스크)에 대응할 수 있다. 이와 같이, 하이퍼바이저(111, 121)의 관점에서, 가상 프로세서들(114, 124) 각각은 스케줄링가능한 엔티티이다. 역으로, 게스트 운영 시스템들(113 및 123)의 관점에서, 가상 프로세서들(114, 124) 각각은 하드웨어 리소스 앱스트랙션이다.
[0024]스케줄러들(112, 122)은 동일한 스케줄링 알고리즘을 사용할 수 있거나 또는 상이한 스케줄링 알고리즘들을 사용할 수 있다. 예를 들어, 도 1에서, 제 1 스케줄러(112)는 타임 슬라이스 스케줄링을 수행하고 제 2 스케줄러(122)는 우선순위-기반 스케줄링을 수행한다. 예시하자면, 제 2 스케줄러(122)는 가상 프로세서들(124)의 우선순위들에 기초하여 우선순위-기반 스케줄링을 수행할 수 있다. 각각의 하이퍼바이저(111, 121)로 하여금 로컬 스케줄링을 위한 책임을 보유할 수 있게 함으로써, 도 1의 시스템(100)은 각각의 하이퍼바이저(111, 121)로 하여금 서비스 품질(QoS) 보증들을 유지할 수 있게 할 수 있다는 것을 인식할 것이다. 예를 들어, 프로세서들의 제 2 세트(120)는 모바일 폰의 DSP에 대응할 수 있고, 2차 하이퍼바이저(121)는 게스트 실시간 운영 시스템(RTOS; guest real-time operating system), 이를 테면, 모뎀 운영 시스템 또는 오디오/보이스 프로세싱 운영 시스템에 대한 레이턴시 제약들을 준수하기 위해 특정 스케줄링 알고리즘을 실행할 수 있다.
[0025]3가지 타입들의 메모리 어드레스들이 시스템(100)에 사용될 수 있는데, 가상 어드레스들(VA들), 중간 물리적 어드레스들(IPA들), 및 물리적 어드레스들(PA들)이다. 각각의 가상 어드레스는 가상 어드레스 공간과 연관될 수 있고, 다수의 가상 어드레스 공간들이 시스템(100)에서 사용 중일 수 있다. 예를 들어, 각각의 게스트 운영 시스템(113, 123)은 상이한 가상 어드레스 공간을 사용할 수 있다. 각각의 중간 물리적 어드레스는 중간 물리적 어드레스 공간과 연관될 수 있고, 다수의 중간 물리적 어드레스 공간들이 시스템(100)에서 사용 중일 수 있다. 예를 들어, 각각의 게스트 운영 시스템(113, 123)은 상이한 중간 물리적 어드레스 공간을 사용할 수 있다. 메모리(예를 들어, 랜덤 액세스 메모리(RAM), 디스크-기반 메모리, 캐시 메모리, 레지스터 메모리 등)의 지역들 및 메모리-맵핑 디바이스들(예를 들어, 입력/출력(I/O) 디바이스들)에 직접적으로 액세스하기 위해 사용될 수 있는 물리적 어드레스들이 하나의 물리적 어드레스 공간에 속할 수 있다.
[0026]가상 어드레스들, 중간 물리적 어드레스들, 및 물리적 어드레스들이 시스템(100)에서 사용되는 경우, 2가지 타입들의 어드레스 트랜슬레이션 맵핑들이 시스템(100)에서 정의될 수 있다. 제 1 타입의 어드레스 트랜슬레이션 맵핑은 가상 어드레스로부터 중간 물리적 어드레스로의 맵핑일 수 있고, 제 2 타입의 어드레스 트랜슬레이션 맵핑은 중간 물리적 어드레스로부터 물리적 어드레스로의 맵핑일 수 있다. 이와 같이, 시스템(100)의 가상 어드레스에 대한 "완전한" 어드레스 트랜슬레이션 맵핑은, 가상 어드레스로부터 중간 물리적 어드레스로의 "제 1 스테이지" 트랜슬레이션, 및 그 다음 중간 물리적 어드레스로부터 물리적 어드레스로의 "제 2 스테이지" 트랜슬레이션을 포함할 수 있다. 제 1 스테이지 트랜슬레이션과 제 2 스테이지 트랜슬레이션의 예들은 추가로 도 2를 참고로하여 설명된다.
[0027]특정 실시예에서, 태스크들(151)과 제 1 게스트 운영 시스템(113)은, 제 1 가상 어드레스 공간의 부분인 가상 어드레스들을 이용하여 메모리와 메모리-맵핑 디바이스들에 저장된 데이터를 지칭할 수 있다. 태스크들(152) 및 제 2 운영 시스템(123)은 제 2 가상 공간의 부분인 가상 어드레스들을 이용하여 메모리 및 메모리-맵핑 디바이스들에 저장된 데이터를 지칭할 수 있다. 게스트 운영 시스템들(113, 123) 각각은 이들 각각의 가상 어드레스 공간들에 대한 제 1 스테이지(즉, VA-투-IPA) 트랜슬레이션들(141, 142)을 정의할 수 있다. IPA들은 메모리 또는 메모리-맵핑 디바이스들에 액세스하기 위해 직접적으로 사용되지 않을 수 있기 때문에, 각각의 게스트 운영 시스템(113, 123)으로 하여금 그 자신의 제 1 스테이지 트랜슬레이션들(141, 142)을 정의하게 하는 것이 보안 위험을 제기하지 않는다는 것을 인식해야 한다.
[0028]물리적인 어드레스 맵핑들(즉, 제 2 스테이지 트랜슬레이션들)을 결정하기 위한 책임은 보안상의 이유들 때문에, 1차 하이퍼바이저(111)에만 할당될 수 있다. 예를 들어, 단지 1차 하이퍼바이저(111)만이 메모리 내 물리적 어드레스들에 대한 맵핑들을 결정하게 하는 것은, 2차 하이퍼바이저(121)가 1차 하이퍼바이저(111) 및/또는 다른 2차 하이퍼바이저에 의해 정의된 맵핑과 충돌하게 물리적 어드레스 맵핑을 정의하도록 시도하는 상황을 방지할 수 있다. 이와 같이, 2차 하이퍼바이저(121)는, 특정 기능들(예를 들어, 제 2 스테이지 트랜슬레이션들을 결정하는 것)에 대해서는 1차 하이퍼바이저(111)에 의존하는 "씬(thin)" 하이퍼바이저일 수 있다.
[0029]제 2 스테이지 트랜슬레이션들을 결정하기 위해서, 1차 하이퍼바이저(111)는 물리적 어드레스 트랜슬레이션 맵핑 모듈(115)을 포함할 수 있다. 특정 실시예에서, 물리적 어드레스 트랜슬레이션 맵핑 모듈(115)은 제 2 스테이지 트랜슬레이션들(116)을 프로그래밍할 수 있고 구성 데이터(117)(예를 들어, 메모리 내 제 2 스테이지 트랜슬레이션들(116)의 위치)를 결정할 수 있다. 물리적 어드레스 트랜슬레이션 맵핑 모듈(115)은, 프로세서들의 제 2 세트(120)에 대하여 배타적으로 실행되는 게스트 운영 시스템(예를 들어, 게스트 운영 시스템(123))을 비롯한, 시스템(100)의 모든 게스트 운영 시스템들에 대한 제 2 스테이지 트랜슬레이션들(116)을 프로그래밍할 수 있다. 본원에 사용된 바와 같이, 게스트 운영 시스템은, 게스트 운영 시스템(또는 태스크에 대응하는 적어도 하나의 가상 프로세서)의 적어도 하나의 태스크가 특정 프로세서 또는 프로세서들의 세트에서의 실행을 위해 (예를 들어, 하이퍼바이저에 의해) 스케줄링될 수 있다면, 특정 프로세서 또는 프로세서들의 세트"에 대하여" 실행될 수 있다. 이와 같이, 물리적인 어드레스 트랜슬레이션 맵핑 모듈(115)은 제 1 게스트 운영 시스템(113)뿐만 아니라 제 2 게스트 운영 시스템(123) 둘 모두에 대한 제 2 스테이지 트랜슬레이션들(116)을 프로그래밍할 수 있다.
[0030]제 2 게스트 운영 시스템(123)에 의해 제공된 가상 어드레스에 대한 어드레스 트랜슬레이션을 수행할 경우, 제 2 하이퍼바이저(121)는 제 2 스테이지 트랜슬레이션들(116)을 제공하기 위해 1차 하이퍼바이저(111)에 의존할 수 있다. 2차 하이퍼바이저(121)는 프로세서 가상현실화를 수행하기 위해서 1차 하이퍼바이저(111)에 의해 제공된 제 2 스테이지 트랜슬레이션들(116)을 사용할 수 있다. 이와 같이, 도 1에 도시된 바와 같이, 1차 하이퍼바이저(111)는 제 2 스테이지 트랜슬레이션들(116)에 대한 그리고 구성 데이터(117)에 대한 판독/기록(RW) 액세스를 할 수 있는 한편, 2차 하이퍼바이저(121)는 제 2 스테이지 트랜슬레이션들(116)에 대한 그리고 구성 데이터(117)에 대한 판독-전용(RO; read-only) 액세스를 한다.
[0031]특정 실시예에서, 1차 하이퍼바이저(111)는, 프로세서들의 제 2 세트(120)에 대하여 배타적으로 실행되는 그러한 게스트 운영 시스템들을 포함한 모든 게스트 운영 시스템들을 스타트업하고 셧다운하도록 구성되는 스타트업/셧다운 모듈(118)을 포함할 수 있다. 이와 같이, 1차 하이퍼바이저(111)의 스타트업/셧다운 모듈(118)은 2차 하이퍼바이저(121)로부터의 요청에 응답하여 제 2 게스트 운영 시스템(123)을 스타트업하거나 셧다운할 수 있다.
[0032]특정 실시예에서, 시스템(100)은 상이한 명령 세트 아키텍처들을 갖는 프로세서들 상에서의 게스트 운영 시스템의 하나의 인스턴스의 동시 실행을 지원할 수 있다. 예를 들어, 제 3 게스트 운영 시스템(133)은 프로세서들의 제 1 세트(110)와 프로세서들의 제 2 세트(120)의 상에서 동시에 실행가능할 수 있다. 제 3 게스트 운영 시스템(133)의 태스크들(153)에 대응하는 제 3 게스트 운영 시스템(133)의 가상 프로세서들(134)이 스케줄러들(112, 122) 중 어느 하나에 의해 스케줄링될 수 있다. 제 3 게스트 운영 시스템(133)은 그 자신의 제 1 스테이지 트랜슬레이션들(143)을 정의할 수 있지만, 제 2 스테이지 트랜슬레이션들(116)에 대해서는 1차 하이퍼바이저(111)에 의존할 수 있다.
[0033]동작 동안, 1차 하이퍼바이저(111)의 게스트 스타트업/셧다운 모듈(118)이 제 1 게스트 운영 시스템(113)을 시작할 수 있다. 게스트 스타트업/셧다운 모듈(118)은 또한, 2차 하이퍼바이저(121)로부터의 요청에 응답하여 제 2 게스트 운영 시스템(123)을 시작할 수 있다. 제 1 게스트 운영 시스템(113)은 하드웨어 프로세서들의 제 1 세트(110)에서의 실행을 위해 가상 프로세서들(114)을 스케줄링할 수 있고 제 2 게스트 운영 시스템(123)은 하드웨어 프로세서들의 제 2 세트(120)에서의 실행을 위해 가상 프로세서들(124)을 스케줄링할 수 있다.
[0034]메모리가 시스템(100)에서 할당됨에 따라, 게스트 운영 시스템들(113, 123) 각각은 각각의 제 1 스테이지 트랜슬레이션들(141, 142)을 정의할 수 있다. 모든 제 2 스테이지 트랜슬레이션들(116)이 1차 하이퍼바이저(111)의 물리적 어드레스 트랜슬레이션 모듈(115)에 의해 정의될 수 있다. 물리적 어드레스 트랜슬레이션 모듈(115)은 또한 리소스 셋팅들(예를 들어, 구성 데이터(117))을 정의할 수 있다. 이와 같이, 1차 하이퍼바이저(111)는 (예를 들어, 시스템(100) 내의 모든 하이퍼바이저들에 대한 페이지 테이블들을 셋업하고 변경하기 위해서) 제 2 스테이지 트랜슬레이션들(116) 및 구성 데이터(117)에 대한 판독-기록 액세스를 할 수 있다. 제 2 스테이지 트랜슬레이션들(116) 및 구성 데이터(117)는, 어드레스 트랜슬레이션을 수행하기 위해서 2차 하이퍼바이저(121)에 의해 판독-전용 방식으로 액세스될 수 있다. 예를 들어, 가상 프로세서들(124) 중 하나로 콘텍스트 스위칭할 때 제 2 스테이지 트랜슬레이션들(116)이 2차 하이퍼바이저(121)에 의해 로딩될 수 있다. 이와 같이, 도 1의 시스템(100)은, 1차 하이퍼바이저(111)가 하나 이상의 리소스들의 셋팅들(예를 들어, 물리적 메모리에 대한 어드레스 맵핑들)을 정의하고 2차 하이퍼바이저(121)가 1차 하이퍼바이저(111)에 의해 정의된 리소스의 셋팅들을 이용하여 다양한 동작들(예를 들어, 어드레스 트랜슬레이션)을 수행하는 시스템을 제공한다.
[0035]특정 실시예에서, 도 1에 예시된 논리적 및/또는 기능적 모듈들(예를 들어, 스케줄러들(112, 122), 물리적 어드레스 트랜슬레이션 맵핑 모듈(115), 및 게스트 스타트업/셧다운 모듈(118)) 각각은 프로세서들(110 또는 120)에 의해 실행가능한 소프트웨어 명령들을 이용하여 구현된다. 대안으로, 각각의 기능은 하드웨어 디바이스들, 이를 테면, 제어기, 주문형 집적 회로(ASIC), 필드 프로그래머블 게이트 어레이(FPGA) 디바이스, 또는 일부 다른 디바이스를 이용하여 구현될 수 있다. 그러나, 다양한 모듈들 간의 동작들의 분할은 단지 예시라는 것을 주목해야 한다. 대안적인 실시예들에서, 특정 모듈들에 대하여 설명된 기능들은 더 많거나 또는 더 적은 모듈들을 이용하여 실행될 수 있다.
[0036]도 1의 시스템(100)은 이와 같이, 이종 명령 세트 아키텍처들을 갖는 프로세서들을 비롯한 프로세서들의 상이한 세트들 상에서 다수의 하이퍼바이저들의 동시 실행을 가능하게 할 수 있다. 유리하게도, 도 1의 시스템(100)은 특정 하이퍼바이저 동작들의 듀플리케이션을 가능하게 하면서, 다른 하이퍼바이저 동작들의 듀플리케이션을 제한할 수 있다. 예를 들어, 도 1의 시스템(100)은, 모든 하이퍼바이저들로 하여금 스케줄링을 수행할 수 있게 함으로써 QoS를 유지하는 컴퓨팅 환경을 제공할 수 있다. 도 1의 시스템(100)은, 단지 1차 하이퍼바이저로 하여금 제 2 스테이지 트랜슬레이션들을 정의하게 하고 그리고 게스트 운영 시스템들의 스타트업/셧다운을 가능하게 함으로써 보안을 유지할 수 있다.
[0037]도 2는 어드레스 트랜슬레이션 맵핑들의 예를 도시한다. 도 1에 대하여 설명된 바와 같이, 어드레스 트랜슬레이션은 2개의 스테이지들에서 발생할 수 있다. 각각의 게스트 운영 시스템의 가상 프로세서들은 가상 어드레스들을 이용하는 데이터를 지칭할 수 있고, 각각의 게스트 운영 시스템은 가상 어드레스들을 중간 물리적 어드레스들로 맵핑할 수 있다. 예를 들어, 도 2가 제 1 게스트 운영 시스템(예를 들어, 도 1의 제 1 게스트 운영 시스템(113))의 가상 프로세서들(VP들)(201, 202) 및 제 2 게스트 운영 시스템(예를 들어, 도 1의 제 2 게스트 운영 시스템(123))의 가상 프로세서들(203, 204)을 도시한다.
[0038]가상 프로세서들(201, 202)에 의해 사용된 가상 어드레스들은, 도시된 바와 같이, 제 1 게스트 운영 시스템에 의해 제 1 중간 물리적 어드레스 공간(205)("IPA1"로 지정됨)으로 맵핑될 수 있다. 제 2 게스트 운영 시스템의 가상 프로세서들(203, 204)에 의해 사용된 가상 어드레스들이, 도시된 바와 같이 제 2 게스트 운영 시스템에 의해 제 2 중간 물리적 어드레스 공간(206)("IPA2"로 지정됨)으로 맵핑될 수 있다. 도 1에 대하여 설명된 바와 같이, 중간 어드레스들이 물리적 어드레스들로 맵핑될 수 있고, 모든 이러한 IPA-투-PA 맵핑들이 1차 하이퍼바이저에 의해 정의되어 처리될 수 있다.
[0039]예를 들어, 제 1 가상 프로세서(201)는 중간 물리적 어드레스들(212)의 범위로 맵핑되는 가상 어드레스들의 범위를 사용할 수 있다. 제 2 가상 프로세서(202)는 중간 물리적 어드레스들(211 및 213)의 범위들로 맵핑되는 가상 어드레스들의 범위들을 사용할 수 있다. 제 3 가상 프로세서(203)는, 제 2 게스트 운영 시스템에 의해 중간 물리적 어드레스들(221 및 222)의 범위들로 맵핑되는 가상 어드레스들의 범위들을 사용할 수 있다. 제 4 가상 프로세서(204)는 물리적 어드레스들(223)의 범위로 맵핑되는 가상 어드레스들의 범위를 사용할 수 있다.
[0040]중간 물리적 어드레스들(211-213, 221-223)의 각각의 범위가, 도시된 바와 같이, 하나의 물리적 어드레스 공간(207)("PA"로 지정됨) 내의 물리적 어드레스들(231-235)의 대응하는 범위들로 맵핑될 수 있다. 특정 실시예에서, 상이한 중간 물리적 어드레스 공간들로부터의 어드레스 범위들이 동일한 물리적 어드레스들로 맵핑될 수 있다. 예를 들어, 도 2는, 중간 물리적 어드레스들(212 및 221)의 범위들 둘 모두가 물리적 어드레스들(232)의 동일한 범위로 맵핑되는 것을 도시한다. 이러한 공유된 맵핑은 제 1 게스트 운영 시스템 및 제 2 게스트 운영 시스템 둘 모두가 물리적 어드레스들(232)의 범위에 대응하는 메모리-맵핑 디바이스 또는 데이터에 대해 액세스할 수 있다는 것을 나타낼 수 있다. 예를 들어, 물리적 어드레스들(232)의 범위는, 타이머와 같이 게스트 운영 시스템들 (및 하이퍼바이저들) 간에 공유되는 가상현실화 디바이스를 나타낼 수 있다.
[0041]제 1 하이퍼바이저가 가상 디바이스를 위한 메모리 맵핑된 지역을 포함하지만 제 2 하이퍼바이저가 가상 디바이스에 대한 메모리 맵핑된 지역을 포함하지 않을 경우, 제 1 하이퍼바이저는 가상 디바이스에 대한 액세스를 그의 게스트 운영 시스템들에 제공할 수 있지만 제 2 하이퍼바이저는 가상 디바이스에 대한 액세스를 그의 게스트 운영 시스템들에 제공하지 못할 수 있다. 하이퍼바이저들 둘 모두가 가상 디바이스에 대한 메모리 맵핑된 지역들을 포함할 경우, 어느 한 하이퍼바이저는 가상 디바이스에 대한 액세스를 그의 게스트 운영 시스템들에 제공할 수 있다.
[0042]도 3은 다수의 하이퍼바이저들을 실행하는 방법(300)의 특정 실시예를 도시하는 흐름도이다. 예시적인 실시예에서, 방법(300)은 도 1의 시스템(100)에서 수행될 수 있다.
[0043]방법(300)은, 프로세서들의 제 2 세트 상에서 실행되는 2차 하이퍼바이저에 의해, 프로세서들의 제 1 세트 상에서 실행되는 1차 하이퍼바이저에 의해 프로그래밍된 하나 이상의 메모리 어드레스 트랜슬레이션 맵핑들을 리트리빙하는 단계를 포함할 수 있다(302). 하나 이상의 메모리 어드레스 트랜슬레이션 맵핑들은 제 2 스테이지 트랜슬레이션들(예를 들어, IPA-투-PA 트랜슬레이션)을 포함할 수 있다. 예를 들어, 도 1을 참고하면, 2차 하이퍼바이저(121)는, 1차 하이퍼바이저(111)에 의해 프로그래밍되는 제 2 스테이지 트랜슬레이션들(116)을 리트리빙할 수 있다.
[0044]방법(300)은 또한, 데이터 액세스 동작 동안 리트리빙된 하나 이상의 메모리 어드레스 트랜슬레이션 맵핑들을 이용하는 것을 포함할 수 있다(304). 데이터 액세스 동작은 판독 동작 또는 기록 동작일 수 있다. 예를 들어, 도 1을 참고하면, 2차 하이퍼바이저(121)는 판독 동작 또는 기록 동작 동안 제 2 스테이지 트랜슬레이션들(116)을 이용하여, 판독 동작 또는 기록 동작의 타겟이 되는 특정 물리적 어드레스를 결정할 수 있다.
[0045]방법(300)은 또한, 2차 하이퍼바이저의 스케줄러에 의해서, 프로세서들의 제 2 세트에서의 실행을 위해 가상 프로세서를 스케줄링하는 것을 포함할 수 있다(306). 가상 프로세서는 2차 하이퍼바이저 상에서 실행되는 제 2 게스트 운영 시스템의 태스크에 대응한다. 스케줄링은 1차 하이퍼바이저의 스케줄러와 무관하게 수행된다. 예를 들어, 도 1을 참고하면, 스케줄러(122)는, 프로세서들의 제 2 세트(120)에서의 실행을 위해 태스크들(152) 중 하나에 대응하는 가상 프로세서들(124) 중 하나를 스케줄링할 수 있다. 스케줄러(122)의 동작은 1차 하이퍼바이저(111)의 스케줄러(112)의 동작과 무관할 수 있다(예를 들어, 스케줄러들(112, 122) 둘 모두가 다른 스케줄러와 무관한 상이한 스케줄링 알고리즘들을 이용하여 "로컬" 스케줄링을 수행할 수 있다).
[0046]도 3의 방법(300)은, DSP(digital signal processor), CPU( central processing unit)와 같은 프로세싱 유닛, 제어기, 필드-프로그래밍가능 게이트 어레이(FPGA) 디바이스, 주문형 집적 회로(ASIC), 다른 하드웨어 디바이스, 펌웨어 디바이스, 또는 이들의 임의의 결합에 의해 구현될 수도 있다. 예로서, 도 3의 방법(300)은, 명령들의 실행은 도 4에 관하여 설명된 바와 같은 프로세서에 의해 수행될 수 있다.
[0047]도 4를 참조하면, 전자 디바이스(400)의 블록도가 도시된다. 전자 디바이스(400)는 프로세서들의 제 1 세트(410), 이를 테면 중앙 처리 유닛(들)(CPU(들)) 및 프로세서들의 제 2 세트(474), 이를 테면, 디지털 신호 프로세서(들)(DSP(들))을 포함하며, 이들 각각은 메모리(432)에 결합된다. 프로세서들의 제 1 세트(410) 및 프로세서들의 제 2 세트(474)는 상이한 명령 세트 아키텍처들을 가질 수 있다. 예시적인 실시예에서, 프로세서들의 제 1 세트(410)는 도 1의 프로세서들의 제 1 세트(110)이고, 프로세서들의 제 2 세트(474)는 도 1의 프로세서들의 제 2 세트(120)이다. 전자 디바이스(400) 또는 그들의 컴포넌트들은, 셋탑 박스, 뮤직 플레이어, 비디오 플레이어, 엔터테인먼트 유닛, 내비게이션 디바이스, 통신 디바이스, 개인 휴대 정보 단말(PDA), 고정 위치 데이터 유닛, 컴퓨팅 디바이스, 또는 이들의 임의의 결합 내에 포함될 수 있다.
[0048]도 4는 또한, 프로세서들의 세트들(410, 474)에 그리고 디스플레이(428)에 결합되는 디스플레이 제어기(426)를 도시한다. 코더/디코더(코덱)(434)는 또한 프로세서들의 세트들(410, 474)에 커플링될 수도 있다. 스피커(436) 및 마이크로폰(438)은 코덱(434)에 커플링될 수 있다. 도 4는 또한, 무선 제어기(440)가 프로세서들의 세트들(410, 474)에 그리고 (예를 들어, 라디오 주파수(RF) 인터페이스를 통하여) 안테나(442)에 커플링될 수 있음을 또한 나타낸다.
[0049]메모리(432)는 실행가능한 명령들(456)을 포함하는 유형의(tangible) 비-일시적인 컴퓨터-판독가능 또는 프로세서-판독가능 저장 매체일 수 있다. 명령들(456)은, 프로세서들의 세트들(410, 474)에 같은 프로세서(들)에 의해 실행되어 도 3의 방법들(300)을 포함하는 본원에 설명된 다양한 기능들 및 방법들을 수행할 수 있다. 메모리(432)는 또한, 1차 하이퍼바이저(457)(예를 들어, 도 1의 1차 하이퍼바이저(111)), 2차 하이퍼바이저(458)(예를 들어, 도 1의 2차 하이퍼바이저(121)), 및 하나 이상의 게스트 운영 시스템들(459)(예를 들어, 도 1의 게스트 운영 시스템들(113, 123, 및/또는 133) 중 하나 이상)에 대응하는 명령들을 저장할 수 있다.
[0050]특정한 실시예에서, 프로세서들의 세트들(410, 474), 디스플레이 제어기(426), 메모리(432), 코덱(434), 및 무선 제어기(440)는 시스템-인-패키지(system-in-package) 또는 시스템-온-칩(system-on-chip) 디바이스(422) 내에 포함된다. 특정한 실시예에서, 입력 디바이스(430) 및 전력 공급부(444)는 시스템-온-칩 디바이스(422)에 커플링된다. 또한, 특정한 실시예에서, 도 4에 도시된 바와 같이, 디스플레이(428), 입력 디바이스(430), 스피커(436), 마이크로폰(438), 안테나(442), 및 전력 공급부(444)는 시스템-온-칩 디바이스(422) 외부에 있다. 그러나, 디스플레이(428), 입력 디바이스(430), 스피커(436), 마이크로폰(438), 안테나(442), 및 전력 공급부(444) 각각은, 인터페이스 또는 제어기와 같은 시스템-온-칩 디바이스(422)의 컴포넌트에 커플링될 수 있다.
[0051]설명된 실시예들과 함께, 장치는, 프로세싱하기 위한 제 1 수단 및 프로세싱하기 위한 제 2 수단을 포함한다. 예를 들어, 프로세싱하기 위한 제 1 수단은, 도 1의 프로세서들의 제 1 세트(110)의 프로세서와 같은 하드웨어 프로세서 또는 도 4의 프로세서들의 제 1 세트(410), 데이터를 프로세싱하기 위한 하나 이상의 다른 디바이스들 또는 회로들, 또는 이들의 임의의 결합을 포함할 수 있다. 프로세싱하기 위한 제 2 수단은, 하드웨어 프로세서, 이를 테면, 도 1의 프로세서들의 제 2 세트(120) 또는 도 4의 프로세서들의 세 2 세트(474)의 프로세서, 데이터를 프로세싱하기 위한 하나 이상의 다른 디바이스들 또는 회로들, 또는 이들의 임의의 조합을 포함할 수 있다. 특정 실시예에서, 프로세싱하기 위한 제 1 수단은 제 1 명령 세트 아키텍처와 연관되고 프로세싱을 위한 제 2 수단은 제 1 명령 세트 아키텍처와는 상이한 제 2 명령 세트 아키텍처와 연관된다.
[0052]장치는 또한, 메모리 어드레스 트랜슬레이션들을 프로그래밍하기 위한 수단을 포함하며, 프로그래밍하기 위한 수단은 프로세싱하기 위한 제 1 수단에서 실행가능하다. 예를 들어, 프로그래밍하기 위한 수단은 도 1의 물리적 어드레스 트랜슬레이션 맵핑 모듈(115), 도 4의 1차 하이퍼바이저(457), 메모리 어드레스 트랜슬레이션들을 프로그램밍하기 위한 하나 이상의 다른 디바이스들, 회로들, 모듈들, 또는 명령들, 또는 이들의 임의의 조합일 수 있다. 장치는, 메모리 어드레스 트랜슬레이션들을 이용하기 위한 수단을 더 포함할 수 있으며, 이용하기 위한 수단은 프로세싱하기 위한 제 2 수단 상에서 실행가능하다. 예를 들어, 이용하기 위한 수단은 도 1의 2차 하이퍼바이저(121), 도 4의 2차 하이퍼바이저(458), 메모리 어드레스 트랜슬레이션들을 이용하기 위한 하나 이상의 다른 디바이스들, 회로들, 모듈들, 또는 명령들, 또는 이들의 임의의 조합을 포함할 수 있다.
[0053]장치는 프로세싱하기 위한 제 1 수단 상에서 실행을 위한 가상 프로세서들을 스케줄링하기 제 1 수단 및 프로세싱하기 위한 제 2 수단 상에서 실행을 위한 가상 프로세서들을 스케줄링하기 제 2 수단을 포함할 수 있다. 예를 들어, 스케줄링하기 위한 제 1 수단은 도 1의 제 1 스케줄러(112), 실행을 위한 가상 프로세서들을 스케줄링하기 위한 하나 이상의 다른 디바이스들, 회로들, 모듈들, 또는 명령들, 또는 이들의 임의의 조합을 포함할 수 있다. 스케줄링하기 위한 제 2 수단은 도 1의 제 2 스케줄러(122), 실행을 위한 가상 프로세서들을 스케줄링하기 위한 하나 이상의 다른 디바이스들, 회로들, 모듈들, 또는 명령들, 또는 이들의 임의의 조합을 포함할 수 있다.
[0054]당업자들은 본 명세서에 기재된 실시예들과 관련하여 설명된 로직 블록들, 구성들, 모듈들, 회로들, 및 알고리즘 단계들이 전자 하드웨어, 프로세서에 의해 실행되는 컴퓨터 소프트웨어, 또는 이 둘의 결합들로서 구현될 수 있음을 추가로 인식할 것이다. 다양한 예시적인 컴포넌트들, 블록들, 구성들, 모듈들, 회로들, 및 단계들은 그들의 기능의 관점들에서 일반적으로 상술되었다. 그러한 기능이 하드웨어로서 구현되는지 또는 프로세서 실행가능 명령들로서 구현되는지는 특정 애플리케이션 및 전체 시스템에 부과된 설계 제한들에 의존한다. 당업자들은 설명된 기능을 각각의 특정한 애플리케이션에 대해 다양한 방식들로 구현할 수도 있지만, 그러한 구현 결정들이 본 개시의 범위를 벗어나게 하는 것으로서 해석되지는 않아야 한다.
[0055]본 명세서에 기재된 실시예들과 관련하여 설명된 방법 또는 알고리즘의 단계들은 직접 하드웨어로, 프로세서에 의해 실행되는 소프트웨어 모듈로, 또는 이 둘의 결합으로 구현되거나 또는 실시될 수 있다. 소프트웨어 모듈은 랜덤 액세스 메모리(RAM), 플래시 메모리, 판독-전용 메모리(ROM), 프로그래밍가능 판독-전용 메모리(PROM), 소거가능한 프로그래밍가능 판독-전용 메모리(EPROM), 전기적으로 소거가능한 프로그래밍가능 판독-전용 메모리(EEPROM), 레지스터들, 하드 디스크, 착탈형 디스크, 콤팩트 디스크 판독-전용 메모리(CD-ROM), 또는 당업계에 알려진 임의의 다른 형태의 비-일시적인 저장 매체에 상주할 수도 있다. 예시적인 저장 매체는, 프로세서가 저장 매체로부터 정보를 판독하고, 저장 매체에 정보를 기입할 수 있도록 프로세서에 커플링된다. 대안적으로, 저장 매체는 프로세서에 통합될 수도 있다. 프로세서 및 저장 매체는 주문형 집적 회로(ASIC)에 상주할 수도 있다. ASIC은 컴퓨팅 디바이스, 통신 디바이스, 또는 사용자 단말에 상주할 수도 있다. 대안적으로, 프로세서 및 저장 매체는 컴퓨팅 디바이스, 통신 디바이스, 또는 사용자 단말 내의 별개의 컴포넌트들로서 상주할 수도 있다.
[0056]기재된 실시예들의 이전 설명은 당업자가 기재된 실시예들을 사용 또는 실시할 수 있도록 제공된다. 이들 실시예들에 대한 다양한 변형들은 당업자들에게 용이하게 명백할 것이며, 본 명세서에 정의된 원리들은 본 개시의 범위를 벗어나지 않으면서 다른 실시예들에 적용될 수도 있다. 따라서, 본 개시는 본 명세서에 나타낸 실시예들로 제한되도록 의도되는 것이 아니라, 다음의 청구항들에 의해 정의되는 바와 같은 원리들 및 신규한 특성들과 일치하는 가능한 가장 넓은 범위에 부합할 것이다.
Claims (33)
- 장치로서,
1차 하이퍼바이저(hypervisor)를 실행하기 위한 제 1 명령 세트 아키텍처(architecture)의 하드웨어 프로세서들의 제 1 세트 ― 상기 1차 하이퍼바이저는 상기 하드웨어 프로세서들의 제 1 세트 상에서의 실행을 위한 제 1 가상 프로세서 태스크(task)들을 스케줄링하기 위한 것임 ―;
2차 하이퍼바이저를 실행하기 위한 제 2 명령 세트 아키텍처의 하드웨어 프로세서들의 제 2 세트 ― 상기 2차 하이퍼바이저는 상기 하드웨어 프로세서들의 제 2 세트 상에서의 실행을 위한 제 2 가상 프로세서 태스크들을 스케줄링하기 위한 것이고, 상기 제 2 명령 세트 아키텍처는 상기 제 1 명령 세트 아키텍처와 상이함 ―; 및
상기 1차 하이퍼바이저 및 상기 2차 하이퍼바이저가 액세스할 수 있는 메모리 어드레스 트랜슬레이션 맵핑(memory address translation mapping) 데이터를 저장하기 위한 저장 디바이스를 포함하고,
상기 1차 하이퍼바이저는 상기 메모리 어드레스 트랜슬레이션 맵핑 데이터를 프로그래밍하도록 구성되고, 그리고 상기 2차 하이퍼바이저는 상기 메모리 어드레스 트랜슬레이션 맵핑 데이터를 이용하도록 구성되는, 장치. - 제 1 항에 있어서,
상기 하드웨어 프로세서들의 제 1 세트가 단지 단일의 하드웨어 프로세서를 포함하거나, 상기 하드웨어 프로세서들의 제 2 세트가 단지 단일의 하드웨어 프로세서를 포함하거나, 또는 이들의 임의의 조합인, 장치. - 제 1 항에 있어서,
상기 하드웨어 프로세서들의 제 1 세트가 다수의 하드웨어 프로세서들을 포함하거나, 상기 하드웨어 프로세서들의 제 2 세트가 다수의 하드웨어 프로세서들을 포함하거나, 또는 이들의 임의의 조합인, 장치. - 제 1 항에 있어서,
상기 1차 하이퍼바이저는 상기 메모리 어드레스 트랜슬레이션 맵핑 데이터에 대해 판독-기록 액세스를 가지고 그리고 상기 2차 하이퍼바이저는 상기 메모리 어드레스 트랜슬레이션 맵핑 데이터에 대해 판독-전용 액세스를 갖는, 장치. - 제 1 항에 있어서,
상기 2차 하이퍼바이저는, 프로세서 가상현실화(virtualization)를 수행하기 위해서 상기 메모리 어드레스 트랜슬레이션 맵핑 데이터를 액세스하도록 구성되는, 장치. - 제 1 항에 있어서,
상기 1차 하이퍼바이저는 제 1 스케줄링 알고리즘에 따라서 상기 제 1 가상 프로세서 태스크들을 스케줄링하고, 그리고 상기 2차 하이퍼바이저는 상기 제 1 스케줄링 알고리즘과는 상이한 제 2 스케줄링 알고리즘에 따라서 상기 제 2 가상 프로세서 태스크들을 스케줄링하는, 장치. - 제 6 항에 있어서,
상기 제 1 스케줄링 알고리즘과 상기 제 2 스케줄링 알고리즘 중 적어도 하나는 타임 슬라이스(slice) 스케줄링을 포함하는, 장치. - 제 6 항에 있어서,
상기 제 1 스케줄링 알고리즘 및 상기 제 2 스케줄링 알고리즘 중 적어도 하나는 우선순위-기반 스케줄링을 포함하는, 장치. - 제 1 항에 있어서,
상기 하드웨어 프로세서들의 제 1 세트에 대하여 실행가능한 제 1 게스트 운영 시스템; 및
상기 하드웨어 프로세서들의 제 2 세트에 대하여 실행가능한 제 2 게스트 운영 시스템을 더 포함하는, 장치. - 제 1 항에 있어서,
상기 하드웨어 프로세서들의 제 1 세트 중 적어도 하나의 프로세서상에서 그리고 상기 하드웨어 프로세서들의 제 2 세트 중 적어도 하나의 프로세서상에서 동시에 실행하도록 구성되는 게스트 운영 시스템을 더 포함하는, 장치. - 제 1 항에 있어서,
상기 1차 하이퍼바이저, 상기 2차 하이퍼바이저, 또는 이들의 조합과 연관된 가상현실화 디바이스를 더 포함하는, 장치. - 제 11 항에 있어서,
상기 가상현실화 디바이스는 타이머(timer)를 포함하고, 그리고 상기 하드웨어 프로세서들의 제 1 세트는 상기 하드웨어 프로세서들의 제 2 세트와 구별되는, 장치. - 제 1 항에 있어서,
상기 하드웨어 프로세서들의 제 1 세트 중 적어도 하나에 의해 실행가능한 제 1 게스트 운영 시스템 ― 상기 제 1 게스트 운영 시스템은 상기 저장 디바이스에 제 2 메모리 어드레스 트랜슬레이션 맵핑 데이터를 프로그래밍하도록 구성됨 ―; 및
상기 하드웨어 프로세서들의 제 2 세트 중 적어도 하나에 의해 실행가능한 제 2 게스트 운영 시스템을 더 포함하고, 상기 제 2 게스트 운영 시스템은 상기 저장 디바이스에 제 3 메모리 어드레스 트랜슬레이션 맵핑 데이터를 프로그래밍하도록 구성되는, 장치. - 장치로서,
1차 하이퍼바이저를 실행하기 위한 제 1 명령 세트 아키텍처의 하드웨어 프로세서들의 제 1 세트 ― 상기 1차 하이퍼바이저는 상기 하드웨어 프로세서들의 제 1 세트 상에서의 실행을 위한 제 1 가상 프로세서 태스크들을 스케줄링하기 위한 것이고 그리고 제 1 스케줄링 알고리즘과 연관된 제 1 태스크 스케줄러(scheduler)를 포함함 ―;
2차 하이퍼바이저를 실행하기 위한 제 2 명령 세트 아키텍처의 하드웨어 프로세서들의 제 2 세트 ― 상기 2차 하이퍼바이저는 상기 하드웨어 프로세서들의 제 2 세트 상에서의 실행을 위한 제 2 가상 프로세서 태스크들을 스케줄링하기 위한 것이고 그리고 상기 제 1 스케줄링 알고리즘과 구별되는 제 2 스케줄링 알고리즘과 연관된 제 2 태스크 스케줄러를 포함하고, 상기 제 2 명령 세트 아키텍처는 상기 제 1 명령 세트 아키텍처와 상이함 ―; 및
상기 1차 하이퍼바이저 및 상기 2차 하이퍼바이저가 액세스할 수 있는 메모리 어드레스 트랜슬레이션 맵핑 데이터를 저장하기 위한 저장 디바이스를 포함하고,
상기 1차 하이퍼바이저는 상기 메모리 어드레스 트랜슬레이션 맵핑 데이터를 프로그래밍하도록 구성되고, 그리고 상기 2차 하이퍼바이저는 상기 메모리 어드레스 트랜슬레이션 맵핑 데이터를 이용하도록 구성되는, 장치. - 제 14 항에 있어서,
상기 1차 하이퍼바이저는 저장 디바이스에 메모리 어드레스 트랜슬레이션 맵핑 데이터를 프로그래밍하도록 구성되고, 그리고 상기 2차 하이퍼바이저는 상기 1차 하이퍼바이저에 의해 프로그래밍된 상기 메모리 어드레스 트랜슬레이션 맵핑 데이터를 이용하도록 구성되는, 장치. - 제 15 항에 있어서,
상기 메모리 어드레스 트랜슬레이션 맵핑 데이터는 중간(intermediate) 물리적 어드레스로부터 물리적 어드레스로의 트랜슬레이션을 표시하는, 장치. - 장치로서,
1차 하이퍼바이저를 실행하기 위한 제 1 명령 세트 아키텍처의 하드웨어 프로세서들의 제 1 세트 ― 상기 1차 하이퍼바이저는 상기 하드웨어 프로세서들의 제 1 세트 상에서의 실행을 위한 제 1 가상 프로세서 태스크들을 스케줄링하기 위한 것임 ―;
2차 하이퍼바이저를 실행하기 위한 제 2 명령 세트 아키텍처의 하드웨어 프로세서들의 제 2 세트 ― 상기 2차 하이퍼바이저는 상기 하드웨어 프로세서들의 제 2 세트 상에서의 실행을 위한 제 2 가상 프로세서 태스크들을 스케줄링하기 위한 것이고, 상기 제 2 명령 세트 아키텍처는 상기 제 1 명령 세트 아키텍처와 상이함 ―; 및
상기 1차 하이퍼바이저 및 상기 2차 하이퍼바이저가 액세스할 수 있는 리소스(resource)의 메모리 어드레스 트랜슬레이션 셋팅들(settings) 데이터를 저장하기 위한 저장 디바이스를 포함하고,
상기 1차 하이퍼바이저는 상기 저장 디바이스에 저장된 상기 메모리 어드레스 트랜슬레이션 셋팅들 데이터를 프로그래밍하도록 구성되고, 그리고 상기 2차 하이퍼바이저는 상기 메모리 어드레스 트랜슬레이션 셋팅들 데이터에 기초하여 상기 리소스를 이용하도록 구성되는, 장치. - 제 17 항에 있어서,
상기 리소스는 메모리, 메모리-맵핑 디바이스, 또는 이들의 임의의 조합 중 적어도 일부를 포함하는, 장치. - 제 18 항에 있어서,
상기 메모리 어드레스 트랜슬레이션 셋팅들 데이터는 메모리 어드레스 트랜슬레이션 맵핑 데이터를 포함하는, 장치. - 제 17 항에 있어서,
상기 1차 하이퍼바이저는 제 1 스케줄링 알고리즘과 연관된 제 1 태스크 스케줄러를 포함하고, 그리고 상기 2차 하이퍼바이저는 상기 제 1 스케줄링 알고리즘과 구별되는 제 2 스케줄링 알고리즘과 연관된 제 2 태스크 스케줄러를 포함하는, 장치. - 방법으로서,
제 2 명령 세트 아키텍처의 하드웨어 프로세서들의 제 2 세트 상에서 실행되는 2차 하이퍼바이저에 의해, 제 1 명령 세트 아키텍처의 하드웨어 프로세서들의 제 1 세트 상에서 실행되는 1차 하이퍼바이저에 의해 프로그래밍되는 메모리 어드레스 트랜슬레이션 맵핑 데이터로부터 하나 또는 그 초과의 어드레스 트랜슬레이션들을 결정하는 단계 ― 상기 1차 하이퍼바이저는 상기 하드웨어 프로세서들의 제 1 세트 상에서의 실행을 위한 제 1 가상 프로세서 태스크들을 스케줄링하기 위한 것이고 그리고 상기 2차 하이퍼바이저는 상기 하드웨어 프로세서들의 제 2 세트 상에서의 실행을 위한 제 2 가상 프로세서 태스크들을 스케줄링하기 위한 것이고, 상기 제 2 명령 세트 아키텍처는 상기 제 1 명령 세트 아키텍처와 상이함 ―; 및
데이터 액세스 동작 동안 메모리에 액세스하기 위해 상기 하나 또는 그 초과의 어드레스 트랜슬레이션들을 이용하는 단계를 포함하고,
상기 하나 또는 그 초과의 어드레스 트랜슬레이션들은 상기 1차 하이퍼바이저 및 상기 2차 하이퍼바이저가 액세스할 수 있는 저장 디바이스에 저장되는, 방법. - 제 21 항에 있어서,
상기 하나 또는 그 초과의 어드레스 트랜슬레이션들은 중간 물리적 어드레스로부터 물리적 어드레스로의 트랜슬레이션을 포함하는, 방법. - 제 21 항에 있어서,
상기 데이터 액세스 동작은 판독 동작 또는 기록 동작을 포함하는, 방법. - 제 21 항에 있어서,
상기 1차 하이퍼바이저는 상기 메모리 어드레스 트랜슬레이션 맵핑 데이터에 대해 판독-기록 액세스를 가지고, 그리고 상기 2차 하이퍼바이저는 상기 메모리 어드레스 트랜슬레이션 맵핑 데이터에 대해 판독-전용 액세스를 갖는, 방법. - 제 21 항에 있어서,
상기 2차 하이퍼바이저의 스케줄러에 의해, 상기 하드웨어 프로세서들의 제 2 세트 상에서의 실행을 위해 가상 프로세서를 스케줄링하는 단계를 더 포함하고,
상기 가상 프로세서는 상기 2차 하이퍼바이저에 의해 실행되는 게스트 운영 시스템의 태스크에 대응하고, 그리고 상기 스케줄러에 의한 상기 가상 프로세서의 스케줄링은 상기 1차 하이퍼바이저에 의해 수행되는 스케줄링과 독립적으로 수행되는, 방법. - 장치로서,
제 1 명령 세트 아키텍처의 하드웨어 프로세서들의 제 1 세트를 이용하여 1차 하이퍼바이저를 실행하기 위한 수단 ― 상기 1차 하이퍼바이저는 상기 하드웨어 프로세서들의 제 1 세트 상에서의 실행을 위한 제 1 가상 프로세서 태스크들을 스케줄링하고 그리고 메모리 어드레스 트랜슬레이션 맵핑 데이터를 프로그래밍하기 위한 것임 ―; 및
제 2 명령 세트 아키텍처의 하드웨어 프로세서들의 제 2 세트를 이용하여 2차 하이퍼바이저를 실행하기 위한 수단을 포함하고,
상기 2차 하이퍼바이저는 상기 하드웨어 프로세서들의 제 2 세트 상에서의 실행을 위한 제 2 가상 프로세서 태스크들을 스케줄링하고 그리고 상기 메모리 어드레스 트랜슬레이션 맵핑 데이터를 이용하기 위한 것이고, 상기 제 2 명령 세트 아키텍처는 상기 제 1 명령 세트 아키텍처와 상이하고, 상기 1차 하이퍼바이저를 실행하기 위한 수단 및 상기 2차 하이퍼바이저를 실행하기 위한 수단은 상기 하드웨어 프로세서들의 제 1 세트 및 상기 하드웨어 프로세서들의 제 2 세트 상에서 각각 실행되고, 그리고 상기 메모리 어드레스 트랜슬레이션 맵핑 데이터는 상기 1차 하이퍼바이저 및 상기 2차 하이퍼바이저가 액세스할 수 있고 그리고 메모리에 저장되는, 장치. - 명령들을 포함하는 비-일시적 컴퓨터-판독가능 저장 매체로서,
상기 명령들은, 컴퓨터에 의해 실행될 경우, 상기 컴퓨터로 하여금,
제 2 명령 세트 아키텍처의 하드웨어 프로세서들의 제 2 세트 상에서 실행되는 2차 하이퍼바이저에 의해, 제 1 명령 세트 아키텍처의 하드웨어 프로세서들의 제 1 세트 상에서 실행되는 1차 하이퍼바이저에 의해 저장 디바이스로 프로그래밍되는 메모리 어드레스 트랜슬레이션 맵핑 데이터로부터 하나 또는 그 초과의 어드레스 트랜슬레이션들을 결정하게 하고 ― 상기 1차 하이퍼바이저는 상기 하드웨어 프로세서들의 제 1 세트 상에서의 실행을 위한 제 1 가상 프로세서 태스크들을 스케줄링하기 위한 것이고 그리고 상기 2차 하이퍼바이저는 상기 하드웨어 프로세서들의 제 2 세트 상에서의 실행을 위한 제 2 가상 프로세서 태스크들을 스케줄링하기 위한 것이고, 상기 제 2 명령 세트 아키텍처는 상기 제 1 명령 세트 아키텍처와 상이함 ―; 그리고
메모리에 대한 데이터 액세스 동작 동안, 메모리의 일부에 액세스하기 위해 상기 하나 또는 그 초과의 어드레스 트랜슬레이션들을 이용하게 하고,
상기 하나 또는 그 초과의 어드레스 트랜슬레이션들은 상기 1차 하이퍼바이저 및 상기 2차 하이퍼바이저가 액세스할 수 있는 저장 디바이스에 저장되는, 비-일시적 컴퓨터-판독가능 저장 매체. - 제 27 항에 있어서,
상기 하나 또는 그 초과의 어드레스 트랜슬레이션들은 중간 물리적 어드레스로부터 물리적 어드레스로의 트랜슬레이션을 포함하는, 비-일시적 컴퓨터-판독가능 저장 매체. - 제 27 항에 있어서,
상기 1차 하이퍼바이저는 상기 메모리 어드레스 트랜슬레이션 맵핑 데이터에 대해 판독-기록 액세스를 가지고, 그리고 상기 2차 하이퍼바이저는 상기 메모리 어드레스 트랜슬레이션 맵핑 데이터에 대해 판독-전용 액세스를 갖는, 비-일시적 컴퓨터-판독가능 저장 매체. - 제 13 항에 있어서,
상기 제 2 메모리 어드레스 트랜슬레이션 맵핑 데이터는 제 1 가상 어드레스로부터 제 1 중간 물리적 어드레스로의 제 1 트랜슬레이션을 표시하고, 그리고 상기 1차 하이퍼바이저에 의해 프로그래밍되는 상기 메모리 어드레스 트랜슬레이션 맵핑 데이터는 상기 제 1 중간 물리적 어드레스로부터 제 1 물리적 어드레스로의 제 2 트랜슬레이션을 표시하는, 장치. - 제 30 항에 있어서,
상기 제 3 메모리 어드레스 트랜슬레이션 맵핑 데이터는 제 2 가상 어드레스로부터 제 2 중간 물리적 어드레스로의 제 3 트랜슬레이션을 표시하고, 그리고 상기 1차 하이퍼바이저에 의해 프로그래밍되는 상기 메모리 어드레스 트랜슬레이션 맵핑 데이터는 상기 제 2 중간 물리적 어드레스로부터 제 2 물리적 어드레스로의 제 4 트랜슬레이션을 표시하는, 장치.
- 삭제
- 삭제
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/829,023 US9606818B2 (en) | 2013-03-14 | 2013-03-14 | Systems and methods of executing multiple hypervisors using multiple sets of processors |
US13/829,023 | 2013-03-14 | ||
PCT/US2014/023445 WO2014159405A1 (en) | 2013-03-14 | 2014-03-11 | Systems and methods of executing multiple hypervisors |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20150129816A KR20150129816A (ko) | 2015-11-20 |
KR101812727B1 true KR101812727B1 (ko) | 2017-12-27 |
Family
ID=50628908
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020157028702A KR101812727B1 (ko) | 2013-03-14 | 2014-03-11 | 다수의 하이퍼바이저들을 실행하는 시스템들 및 방법들 |
Country Status (7)
Country | Link |
---|---|
US (1) | US9606818B2 (ko) |
EP (1) | EP2972834B1 (ko) |
JP (1) | JP6240745B2 (ko) |
KR (1) | KR101812727B1 (ko) |
CN (1) | CN105190552B (ko) |
BR (1) | BR112015023360A2 (ko) |
WO (1) | WO2014159405A1 (ko) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10437591B2 (en) | 2013-02-26 | 2019-10-08 | Qualcomm Incorporated | Executing an operating system on processors having different instruction set architectures |
US10114756B2 (en) * | 2013-03-14 | 2018-10-30 | Qualcomm Incorporated | Externally programmable memory management unit |
US9396012B2 (en) | 2013-03-14 | 2016-07-19 | Qualcomm Incorporated | Systems and methods of using a hypervisor with guest operating systems and virtual processors |
GB2515536A (en) * | 2013-06-27 | 2014-12-31 | Ibm | Processing a guest event in a hypervisor-controlled system |
WO2015122007A1 (ja) * | 2014-02-17 | 2015-08-20 | 株式会社日立製作所 | 計算機、及び、ハイパバイザによる資源スケジューリング方法 |
TWI540511B (zh) * | 2015-04-30 | 2016-07-01 | 捷鼎國際股份有限公司 | 用以存取虛擬機器之電腦系統及方法 |
GB2546742B (en) * | 2016-01-26 | 2019-12-11 | Advanced Risc Mach Ltd | Memory address translation management |
CN106878389B (zh) * | 2017-01-04 | 2020-02-07 | 北京百度网讯科技有限公司 | 用于在云系统中进行资源调度的方法和装置 |
US10613708B2 (en) * | 2017-02-24 | 2020-04-07 | Red Hat Israel, Ltd. | Cloning a hypervisor |
US11182187B2 (en) * | 2018-04-17 | 2021-11-23 | Red Hat Israel, Ltd. | Dynamic network connectivity verification in distributed virtual environments |
US11016798B2 (en) | 2018-06-01 | 2021-05-25 | The Research Foundation for the State University | Multi-hypervisor virtual machines that run on multiple co-located hypervisors |
US10915351B2 (en) | 2018-08-30 | 2021-02-09 | International Business Machines Corporation | Cellular hypervisor |
KR102147912B1 (ko) * | 2019-08-13 | 2020-08-25 | 삼성전자주식회사 | 프로세서 칩 및 그 제어 방법들 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005029326A1 (en) | 2003-09-15 | 2005-03-31 | Intel Corporation | Use of multiple virtual machine monitors to handle privileged events |
US20100125708A1 (en) | 2008-11-17 | 2010-05-20 | International Business Machines Corporation | Recursive Logical Partition Real Memory Map |
US20100325454A1 (en) | 2009-06-23 | 2010-12-23 | Hewlett-Packard Development Company, L.P. | Resource and Power Management Using Nested Heterogeneous Hypervisors |
US20110072428A1 (en) | 2009-09-22 | 2011-03-24 | International Business Machines Corporation | Nested Virtualization Performance In A Computer System |
Family Cites Families (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6286092B1 (en) | 1999-05-12 | 2001-09-04 | Ati International Srl | Paged based memory address translation table update method and apparatus |
US6516373B1 (en) | 1999-06-18 | 2003-02-04 | Samsung Electronics Co., Ltd. | Common motherboard interface for processor modules of multiple architectures |
US6526462B1 (en) | 1999-11-19 | 2003-02-25 | Hammam Elabd | Programmable multi-tasking memory management system |
US6904483B2 (en) | 2001-03-20 | 2005-06-07 | Wind River Systems, Inc. | System and method for priority inheritance |
GB2378277B (en) | 2001-07-31 | 2003-06-25 | Sun Microsystems Inc | Multiple address translations |
JP2003099272A (ja) | 2001-09-20 | 2003-04-04 | Ricoh Co Ltd | タスク切替システムと方法およびdspとモデム |
US7620678B1 (en) | 2002-06-12 | 2009-11-17 | Nvidia Corporation | Method and system for reducing the time-to-market concerns for embedded system design |
US6981072B2 (en) | 2003-06-05 | 2005-12-27 | International Business Machines Corporation | Memory management in multiprocessor system |
US7134007B2 (en) | 2003-06-30 | 2006-11-07 | Intel Corporation | Method for sharing firmware across heterogeneous processor architectures |
US20050251806A1 (en) | 2004-05-10 | 2005-11-10 | Auslander Marc A | Enhancement of real-time operating system functionality using a hypervisor |
US7418584B1 (en) | 2004-05-11 | 2008-08-26 | Advanced Micro Devices, Inc. | Executing system management mode code as virtual machine guest |
US8271976B2 (en) * | 2004-06-30 | 2012-09-18 | Microsoft Corporation | Systems and methods for initializing multiple virtual processors within a single virtual machine |
US7299337B2 (en) | 2005-05-12 | 2007-11-20 | Traut Eric P | Enhanced shadow page table algorithms |
US9785485B2 (en) * | 2005-07-27 | 2017-10-10 | Intel Corporation | Virtualization event processing in a layered virtualization architecture |
US7739476B2 (en) | 2005-11-04 | 2010-06-15 | Apple Inc. | R and C bit update handling |
US7945913B2 (en) | 2006-01-19 | 2011-05-17 | International Business Machines Corporation | Method, system and computer program product for optimizing allocation of resources on partitions of a data processing system |
US20070283336A1 (en) | 2006-06-01 | 2007-12-06 | Michael Karl Gschwind | System and method for just-in-time compilation in a heterogeneous processing environment |
US7490191B2 (en) * | 2006-09-22 | 2009-02-10 | Intel Corporation | Sharing information between guests in a virtual machine environment |
US8082551B2 (en) | 2006-10-30 | 2011-12-20 | Hewlett-Packard Development Company, L.P. | System and method for sharing a trusted platform module |
US7685409B2 (en) | 2007-02-21 | 2010-03-23 | Qualcomm Incorporated | On-demand multi-thread multimedia processor |
US8789063B2 (en) | 2007-03-30 | 2014-07-22 | Microsoft Corporation | Master and subordinate operating system kernels for heterogeneous multiprocessor systems |
JP4864817B2 (ja) * | 2007-06-22 | 2012-02-01 | 株式会社日立製作所 | 仮想化プログラム及び仮想計算機システム |
US8250254B2 (en) | 2007-07-31 | 2012-08-21 | Intel Corporation | Offloading input/output (I/O) virtualization operations to a processor |
US8522236B2 (en) * | 2007-12-28 | 2013-08-27 | Intel Corporation | Method and system for establishing a robust virtualized environment |
US8245236B2 (en) | 2008-02-27 | 2012-08-14 | International Business Machines Corporation | Lock based moving of threads in a shared processor partitioning environment |
US20090282198A1 (en) | 2008-05-08 | 2009-11-12 | Texas Instruments Incorporated | Systems and methods for optimizing buffer sharing between cache-incoherent cores |
US8312230B2 (en) | 2008-06-06 | 2012-11-13 | International Business Machines Corporation | Dynamic control of partition memory affinity in a shared memory partition data processing system |
US8516260B2 (en) | 2008-10-27 | 2013-08-20 | Advanced Micro Devices, Inc. | Method, apparatus, and device for providing security among a calling function and a target function |
US8291414B2 (en) | 2008-12-11 | 2012-10-16 | International Business Machines Corporation | Shared resource service provisioning using a virtual machine manager |
US20100242014A1 (en) | 2009-03-17 | 2010-09-23 | Xiaohan Zhu | Symmetric multi-processor operating system for asymmetric multi-processor architecture |
US8135898B2 (en) * | 2009-10-30 | 2012-03-13 | International Business Machines Corporation | Memory management in a nested virtualization environment |
US8443376B2 (en) | 2010-06-01 | 2013-05-14 | Microsoft Corporation | Hypervisor scheduler |
US20110320766A1 (en) | 2010-06-29 | 2011-12-29 | Youfeng Wu | Apparatus, method, and system for improving power, performance efficiency by coupling a first core type with a second core type |
US20120072638A1 (en) | 2010-09-16 | 2012-03-22 | Unisys Corp. | Single step processing of memory mapped accesses in a hypervisor |
US8490090B2 (en) * | 2011-02-17 | 2013-07-16 | International Business Machines Corporation | Multilevel support in a nested virtualization environment |
US8307169B2 (en) | 2011-03-10 | 2012-11-06 | Safenet, Inc. | Protecting guest virtual machine memory |
JP5648544B2 (ja) | 2011-03-15 | 2015-01-07 | 富士通株式会社 | スケジューリングプログラム、および情報処理装置 |
US8984330B2 (en) | 2011-03-28 | 2015-03-17 | Siemens Corporation | Fault-tolerant replication architecture |
JP5655677B2 (ja) * | 2011-04-04 | 2015-01-21 | 富士通株式会社 | ハイパーバイザ置き換え方法および情報処理装置 |
US9043562B2 (en) | 2011-04-20 | 2015-05-26 | Microsoft Technology Licensing, Llc | Virtual machine trigger |
US8677360B2 (en) | 2011-05-12 | 2014-03-18 | Microsoft Corporation | Thread-related actions based on historical thread behaviors |
US20130013889A1 (en) | 2011-07-06 | 2013-01-10 | Jaikumar Devaraj | Memory management unit using stream identifiers |
US9250969B2 (en) | 2011-08-30 | 2016-02-02 | At&T Intellectual Property I, L.P. | Tagging a copy of memory of a virtual machine with information for fetching of relevant portions of the memory |
US20140053272A1 (en) * | 2012-08-20 | 2014-02-20 | Sandor Lukacs | Multilevel Introspection of Nested Virtual Machines |
US10437591B2 (en) | 2013-02-26 | 2019-10-08 | Qualcomm Incorporated | Executing an operating system on processors having different instruction set architectures |
US10114756B2 (en) | 2013-03-14 | 2018-10-30 | Qualcomm Incorporated | Externally programmable memory management unit |
US9396012B2 (en) | 2013-03-14 | 2016-07-19 | Qualcomm Incorporated | Systems and methods of using a hypervisor with guest operating systems and virtual processors |
-
2013
- 2013-03-14 US US13/829,023 patent/US9606818B2/en active Active
-
2014
- 2014-03-11 BR BR112015023360A patent/BR112015023360A2/pt not_active IP Right Cessation
- 2014-03-11 KR KR1020157028702A patent/KR101812727B1/ko active IP Right Grant
- 2014-03-11 CN CN201480011734.8A patent/CN105190552B/zh not_active Expired - Fee Related
- 2014-03-11 JP JP2016501236A patent/JP6240745B2/ja not_active Expired - Fee Related
- 2014-03-11 EP EP14720744.3A patent/EP2972834B1/en not_active Not-in-force
- 2014-03-11 WO PCT/US2014/023445 patent/WO2014159405A1/en active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005029326A1 (en) | 2003-09-15 | 2005-03-31 | Intel Corporation | Use of multiple virtual machine monitors to handle privileged events |
US20100125708A1 (en) | 2008-11-17 | 2010-05-20 | International Business Machines Corporation | Recursive Logical Partition Real Memory Map |
US20100325454A1 (en) | 2009-06-23 | 2010-12-23 | Hewlett-Packard Development Company, L.P. | Resource and Power Management Using Nested Heterogeneous Hypervisors |
US20110072428A1 (en) | 2009-09-22 | 2011-03-24 | International Business Machines Corporation | Nested Virtualization Performance In A Computer System |
Also Published As
Publication number | Publication date |
---|---|
US20140282508A1 (en) | 2014-09-18 |
JP6240745B2 (ja) | 2017-11-29 |
JP2016529568A (ja) | 2016-09-23 |
CN105190552A (zh) | 2015-12-23 |
BR112015023360A2 (pt) | 2017-07-18 |
CN105190552B (zh) | 2018-10-23 |
US9606818B2 (en) | 2017-03-28 |
EP2972834B1 (en) | 2017-05-17 |
EP2972834A1 (en) | 2016-01-20 |
KR20150129816A (ko) | 2015-11-20 |
WO2014159405A1 (en) | 2014-10-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101812727B1 (ko) | 다수의 하이퍼바이저들을 실행하는 시스템들 및 방법들 | |
JP6430970B2 (ja) | 異なる命令セットアーキテクチャを有するプロセッサ上におけるオペレーティングシステムの実行 | |
EP2972898B1 (en) | Externally programmable memory management unit | |
US9396012B2 (en) | Systems and methods of using a hypervisor with guest operating systems and virtual processors | |
JP2016507849A5 (ko) | ||
US20150261686A1 (en) | Systems and methods for supporting demand paging for subsystems in a portable computing environment with restricted memory resources | |
EP3186704B1 (en) | Multiple clustered very long instruction word processing core | |
US8909892B2 (en) | Method, apparatus, and computer program product for fast context switching of application specific processors | |
US20130073779A1 (en) | Dynamic memory reconfiguration to delay performance overhead | |
US8868800B2 (en) | Accelerator buffer access | |
EP2569695B1 (en) | Configuring surrogate memory accessing agents using instructions for translating and storing data values | |
JP2007257560A (ja) | 複数の処理装置を備えたシステム上で実行されるプログラムのトレース方法、および、複数の処理装置を備えたシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
A302 | Request for accelerated examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |