KR20160108502A - 가상 컴퓨팅을 위한 장치 및 방법 - Google Patents

가상 컴퓨팅을 위한 장치 및 방법 Download PDF

Info

Publication number
KR20160108502A
KR20160108502A KR1020167022180A KR20167022180A KR20160108502A KR 20160108502 A KR20160108502 A KR 20160108502A KR 1020167022180 A KR1020167022180 A KR 1020167022180A KR 20167022180 A KR20167022180 A KR 20167022180A KR 20160108502 A KR20160108502 A KR 20160108502A
Authority
KR
South Korea
Prior art keywords
hypervisor
cache
code
operating system
shared cache
Prior art date
Application number
KR1020167022180A
Other languages
English (en)
Other versions
KR101821079B1 (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 KR20160108502A publication Critical patent/KR20160108502A/ko
Application granted granted Critical
Publication of KR101821079B1 publication Critical patent/KR101821079B1/ko

Links

Images

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • 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/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0808Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating 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
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device

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)

Abstract

가상 컴퓨팅을 위한 장치들 및 방법들의 실시예들이 본 명세서에 기술된다. 실시예들에서, 장치는 하나 이상의 프로세서 코어들과, 하나 이상의 프로세서 코어들에 결합된 캐시를 포함할 수 있다. 장치는, 장치 상의 가상 머신들의 동작을 관리하기 위해 하나 이상의 프로세서 코어들에 의해 조작되는 하이퍼바이저를 더 포함할 수 있고, 하이퍼바이저는 가상 머신들 중 하나 또는 하이퍼바이저의 선택된 데이터 또는 코드를 저장할 캐시의 일부를 선택하는 것, 및 선택된 데이터 또는 코드가 캐시로부터 축출되는 것을 방지하기 위해 공유 캐시의 일부를 로킹하는 것을 포함한다. 다른 실시예들이 설명 및/또는 청구될 수 있다.

Description

가상 컴퓨팅을 위한 장치 및 방법{APPARATUS AND METHOD FOR VIRTUALIZED COMPUTING}
본 출원은 2014년 3월 21일자로 출원되고, "APPARATUS AND METHOD FOR VIRTUALIZED COMPUTING"이라는 명칭의 미국 출원 제14/222,416호의 우선권을 주장한다.
본 개시는 일반적으로 컴퓨팅 기술 분야에 관련되고, 배타적이지는 않지만, 더 구체적으로는, 가상 컴퓨팅을 위한 장치들 및 방법에 관련된다.
본 명세서에서 제공되는 배경 설명은 본 개시의 맥락을 일반적으로 제시하기 위한 것이다. 본 명세서에서 달리 지시하지 않는 한, 이 섹션에서 기술되는 자료들은 본 출원의 청구항들에 대한 종래 기술이 아니며, 이 섹션에 포함된다고 해서 종래 기술 또는 종래 기술의 암시인 것으로 인정되어서는 안 된다.
컴퓨터 가상화는 컴퓨터 하드웨어의 가상화를 포함한다. 사용자의 관점에서, 컴퓨터 가상화는 기본적 하드웨어를 공유하면서, 프로그램들의 다른 세트들 또는 다른 추상적 컴퓨팅 플랫폼들의 실행과는 독립적으로 프로그램들의 세트를 실행하기 위한, 추상적 컴퓨팅 플랫폼, 예를 들어, 가상 머신(VM)을 제공할 수 있다. 전형적으로, 각각의 VM은 그 자신의 운영 시스템을 가지며, 그러한 운영 시스템은 다른 VM들의 운영 시스템과 동일 또는 상이할 수 있을 것이다. 가상화는 가상 머신 모니터(VMM)로서도 또한 알려진 하이퍼바이저에 의해 제어될 수 있다.
지터가 VM 종료 또는 VM 진입 시간들에 발생할 수 있다. VM 종료가 발생할 때, 하이퍼바이저의 데이터 또는 코드의 일부가 메인 메모리로부터 페치될 필요가 있을 수 있다. 반면에, 하이퍼바이저가 VM에 대한 제어로 복귀할 때(예를 들어, VM 진입 후), 마찬가지로, VM의 데이터 또는 코드의 일부가 메인 메모리로부터 페치될 필요가 있을 수 있다. 지터의 효과는, 코어들이 서로의 캐시 또는 공유 캐시로부터 데이터 또는 코드를 축출할 수 있는, 다중-코어 실행 시나리오에서 더 심각해질 수 있다. 단일 또는 다중-코어 시스템에서 두 개의 시스템들이 독립적으로 실행하려고 시도할 때, 예를 들어, 동일 다중-코어 프로세서에서 실시간 운영 시스템들 및 범용 운영 시스템들을 실행할 때, 작업부하 병합에 대해 지터는 심각한 문제가 될 수 있다.
첨부 도면과 함께 다음의 상세한 설명에 의해 실시예들이 용이하게 이해될 것이다. 이 설명을 용이하게 하기 위해, 유사한 참조 부호들은 유사한 구성 요소들을 나타낸다. 실시예들은 첨부 도면의 도들에 제한적이 아니라 예시적으로 도시된다.
도 1은 다양한 실시예들에 따라, 본 개시의 양태들을 통합하는, 가상 컴퓨팅을 위한 장치의 예시적 구현을 도시하는 개략도이다.
도 2는 다양한 실시예들에 따라, 본 개시의 양태들을 통합하는, 예시적 장치에 의해 수행될 수 있는, 가상 컴퓨팅을 위한 예시적 프로세스의 흐름도이다.
도 3은 다양한 실시예들에 따라, 본 개시의 양태들을 통합하는, 예시적 장치에 의해 수행될 수 있는, 캐시 서비스 품질 클래스들을 도시하는 개략도이다.
도 4는 다양한 실시예들에 따라, 개시된 실시예들을 수행하기에 적합한 예시적 컴퓨팅 디바이스를 도시한다.
도 5는 다양한 실시예들에 따라, 본 개시의 양태들을 통합하는, 프로그래밍 명령어들을 갖는 제조 물품을 도시한다.
가상 컴퓨팅을 위한 장치들 및 방법들의 실시예들이 본 명세서에 기술된다. 실시예들에서, 장치는 하나 이상의 프로세서 코어들과, 하나 이상의 프로세서 코어들에 결합된 캐시를 포함할 수 있다. 이하, 프로세서 코어는 간단히 코어로서 언급될 수 있다. 장치는, 가상 머신들의 동작을 관리하기 위해 하나 이상의 프로세서 코어들에 의해 조작되는 하이퍼바이저를 더 포함할 수 있고, 하이퍼바이저는 가상 머신들 중 하나 또는 하이퍼바이저의 선택된 데이터 또는 코드를 저장할 캐시의 일부를 선택하는 것, 및 선택된 데이터 또는 코드가 캐시로부터 축출되는 것을 방지하기 위해 공유 캐시의 일부를 로킹하는 것을 포함한다. 본 개시의 이들 및 다른 양태들이 아래에 더 충분히 설명될 것이다.
다음의 상세한 설명에서, 본 명세서의 일부를 형성하는 첨부 도면들에 대한 참조가 이루어지고, 도면들에 있어서 유사한 참조 번호들은 그 전체에 걸쳐 유사한 부분들을 나타내며, 실시될 수 있는 실시예들이 예를 들어 도시된다. 다른 실시예들이 활용될 수 있고 본 개시의 범위에서 일탈하지 않으면서 구조적 또는 논리적 변경들이 이루어질 수 있다는 것을 이해해야 한다. 따라서, 다음의 상세한 설명은 제한적인 의미로 받아들여져서는 안 되며, 실시예들의 범위는 첨부된 청구항들 및 그 균등물들에 의해 정의된다.
다양한 동작들이 청구된 대상을 이해하는 데 가장 유용한 방식으로 여러 개별적인 액션들 또는 동작들로서 차례로 설명될 수 있다. 그러나, 설명의 순서는, 이러한 동작들이 반드시 순서에 의존함을 의미하는 것으로 해석되어서는 안 된다. 특히, 이러한 동작들은 제시된 순서로 수행되지 않을 수 있다. 설명되는 동작들은 설명되는 실시예와는 상이한 순서로 수행될 수 있다. 다양한 추가적 동작들이 수행될 수 있고/있거나 설명되는 동작들이 추가적 실시예들에서 생략될 수 있다.
본 개시의 목적들을 위해, "A 및/또는 B"라는 문구는 (A), (B), 또는 (A 및 B)를 의미한다. 본 개시의 목적들을 위해, 문구 "A, B, 및/또는 C"는 (A), (B), (C), (A 및 B), (A 및 C), (B 및 C), 또는 (A, B 및 C)를 의미한다. 본 개시가 "a" 또는 "a first(제1)" 요소 또는 그것의 균등물을 언급하는 경우, 그러한 개시는 하나 이상의 그러한 요소들을 포함하며, 두 개 이상의 그러한 요소들을 요구하지도 배제하지도 않는다. 게다가, 식별된 요소들에 대한 서수 지시자들(예를 들어, 제1, 제2 또는 제3)은 요소들 간을 구분하는 데 사용되며, 요구된 또는 제한된 수의 그러한 요소들을 나타내거나 암시하지 않으며, 달리 구체적으로 언급하지 않는 한, 그러한 요소들의 특정 위치 또는 순서를 나타내지도 않는다.
설명에서, "일 실시예", 또는 "실시예"의 참조는, 그 실시예와 관련하여 설명되는 특정한 특징, 구조, 또는 특성이 본 발명의 적어도 일 실시예에 포함된다는 것을 의미한다. 이 설명은 "일 실시예에서", "실시예에서", "다른 실시예에서", "실시예들에서", "다양한 실시예들에서", 또는 기타 등등과 같은 문구들을 사용할 수 있고, 그 각각은 동일하거나 상이한 실시예들 중 하나 이상을 지칭할 수 있다. 더구나, 본 개시의 실시예들과 관련하여 사용되는 바와 같은 "comprising(포함하는)", "including(포함하는)", "having(갖는)", 및 기타 등등의 용어들은 동의어이다.
실시예들에서, "모듈"이라는 용어는, 설명되는 기능성을 제공하는 하나 이상의 소프트웨어 또는 펌웨어 프로그램들을 실행하는 주문형 집적 회로(application specific integrated circuit, ASIC), 전자 회로, (공유된, 전용의, 또는 그룹) 프로세서 및/또는 (공유된, 전용의, 또는 그룹) 메모리, 조합형 로직 회로, 및/또는 다른 적합한 컴포넌트들을 지칭할 수 있거나, 그 일부일 수 있거거나, 또는 포함할 수 있다. 실시예들에서, 모듈은 펌웨어, 하드웨어, 소프트웨어, 또는 펌웨어, 하드웨어 및 소프트웨어의 임의의 조합으로 구현일 수 있다. 실시예들에서, 용어 "인터페이스"는 소프트웨어에 대한 소프트웨어, 하드웨어에 대한 소프트웨어, 및 하드웨어에 대한 하드웨어 상호작용들을 포함한, 소프트웨어 또는 컴퓨터 하드웨어와의 상호작용의 포인트를 지칭할 수 있다.
이제 도 1을 참조하면, 다양한 실시예들에 따른, 가상 컴퓨팅을 위한 장치의 예시적 구현이 도해된다. 도시된 바와 같이, 장치(100)는 하이퍼바이저(120)의 관리 하에서, 하나 이상의 가상 머신들 VM(130)의 실행을 호스팅하는 호스트(110)를 포함할 수 있다. 어떤 실시예들에서, 장치(100)는 모바일 컴퓨팅 디바이스일 수 있다. 어떤 실시예들에서, 장치(100)는 고정적 컴퓨팅 디바이스일 수 있다. 어떤 실시예들에서, 장치(100)는 클라우드 컴퓨팅에 적합한 서버일 수 있다. 어떤 실시예들에서, 장치(100)는 다양한 착용가능한, 모바일, 또는 고정적 디바이스들에 분포된 다양한 컴포넌트들 또는 서브시스템들을 가진 분산 시스템일 수 있다.
실시예들에서, 장치(100)는, VM(130)이 호스트(110) 상에서 실행하는 호스트 운영 시스템과는 상이한 게스트 운영 시스템(GOS)(132)을 가진 컴퓨터처럼 동작할 수 있는, 하드웨어 가상화 또는 플랫폼 가상화에 적합할 수 있다. 하이퍼바이저(120)는 가상 머신 모니터일 수 있으며 이것은 VM(130)을 생성할 수 있고/있거나 호스트(110) 상에 VM(130) 실행을 가능하게 할 수 있다. 하이퍼바이저(120)는 다양한 실시예들에서 하나의 컴퓨터 소프트웨어, 펌웨어 또는 하드웨어일 수 있다. 하이퍼바이저(120)는 가상 운영 플랫폼을 VM(130) 상의 GOS(132)에 제시할 수 있고, VM(130)의 동작을 관리할 수 있다. 하나의 VM(130) 상에서 실행되는 애플리케이션(134) 및 GOS(132)는 호스트(110) 상의 기본적 하드웨어 리소스들을 다른 VM들(130)과 공유할 수 있다.
어떤 실시예들에서, 하이퍼바이저(120)는 완전 가상화를 가능하게 할 수 있고, 이것은 VM(130)의 변경되지 않은 GOS(132)가 호스트(110) 상에서 (다른 VM들(130)의 다른 GOS들(132)로부터) 격리되어 실행하는 것을 허용한다. 어떤 실시예들에서, 하이퍼바이저(120)는 직접적으로 호스트(110)의 하드웨어를 제어할 수 있고, VM(130)과 기본적 하드웨어 리소스들 사이에 조정자로서 동작할 수 있다. 어떤 실시예들에서, 하이퍼바이저(120)는, 호스트(110)의 본래 운영 시스템과 VM(130) 사이의 소프트웨어 층으로서 하이퍼바이저(120)를 갖는 호스트(110)의 본래 운영 시스템 내에서 실행할 수 있다.
실시예들에서, 호스트(110)는 캐시(112)와 프로세서(114)를 포함할 수 있다. 프로세서(114)는 두 개 이상 독립적 코어들을 가진 다중-코어 프로세서일 수 있다. 캐시(112)는 호스트(110)를 위한 특수 고속 스토리지 메커니즘일 수 있다. 어떤 실시예들에서, 캐시(112)는 실행가능 명령어 페치의 속도를 증가시키기 위한 명령어 캐시를 포함할 수 있다. 어떤 실시예들에서, 캐시(112)는 데이터 페치 및 저장의 속도를 증가시키기 위한 데이터 캐시를 포함할 수 있다. 또 어떤 실시예들에서, 캐시(112)는 실행가능한 명령어들 및 데이터 모두에 대한 가상-물리 어드레스 변환의 속도를 증가시키기 위해 사용되는 변환 색인 버퍼(TLB)를 포함할 수 있다.
실시예들에서, 더 큰 캐시들일수록 더 양호한 히트 레이트들을 가지나 더 긴 레이턴스들을 갖기 때문에, 캐시 레이턴스와 히트 레이트를 균형화시키기 위해, 캐시(112)는 예를 들어, 제1-레벨 캐시(L1), 제2-레벨 캐시(L2), 기타 등등, 마지막-레벨 캐시(LLC)까지의 캐시 레벨들의 계층구성을 갖고 조직될 수 있다. 실시예들에서, 캐시(112)의 모든 또는 일부 레벨들은 프로세서(114)의 아키텍처 내에 내장될 수 있거나, 또는 프로세서(114)와 메인 메모리 사이에 놓일 수 있다. 실시예들에서, 캐시(112)는 데이터 캐시 또는 명령어 캐시와 같은 특수 기능들을 가질 수 있다. 실시예들에서, 캐시(112)는 프로세서(114)의 상이한 코어들 간에 공유될 수 있다. 예로서, 각각의 코어는 그 자신의 명령어 또는 데이터 L1 및 공유된 명령어/데이터 L2를 가질 수 있지만, 명령어/데이터 L3은 모든 코어들 간에 공유될 수 있다.
실시예들에서, 캐시(112)는 캐시 서비스 품질 (CQoS) 클래스(116)를 지원하도록 구성될 수 있다. 각각의 코어는 CQoS 클래스를 할당받을 수 있다. 다양한 CQoS 클래스들이 공유 캐시에 대한 액세스를 우선순위화하기 위해 사용될 수 있다. 실시예들에서, 캐시(112)는 공유 캐시에 저장된 데이터를 로킹하기 위해 CQoS 클래스를 포함할 수 있다. 실시예들에서, CQoS 클래스는, 코어에 의해 액세스되는 메모리 로케이션들의 콘텐트를 캐시하기 위해, 공유 캐시에서 어느 방식들(ways)이 활용될 수 있는지 제어하는 비트마스크를 포함할 수 있다. 실시예들에서, 캐시 내에 로킹된 데이터 또는 코드는 축출되지 않을 수 있다. 실시예들에서, 하이퍼바이저(120)는 예를 들어, 바람직하게는 CQoS 클래스의 비트마스크를 셋업함으로써, CQoS 클래스와 연관된 캐시의 일부를 로킹하도록 구성될 수 있다.
실시예들에서, 하이퍼바이저(120)는 캐시(112)에 저장 및 로킹될 디스패치 함수, 스케줄러, 또는 인터럽트 핸들러와 같은, 그것의 주요 디스패치 루틴들을 선택할 수 있다. 인터럽트 핸들러는 루트 콘텍스트 및/또는 가상 머신 콘택스트에 대한 것일 수 있다. 실시예들에서, GOS(132)는 실시간 애플리케이션 요청들을 서빙하도록 의도된 실시간 게스트 운영 시스템일 수 있다. GOS(132)는 캐시(112)에 저장 및 로킹될 디스패처, 인터럽트 핸들링 코드, 기타 등등과 같은 그것의 중대한 데이터 또는 코드를 선택할 수 있다. 실시예들에서, 하이퍼바이저(120)는 캐시(112)에 데이터 또는 코드를 저장 및 로킹하기 위해 그 자신에게 VM(130)보다 더 높은 우선순위를 부여할 수 있다.
실시예들에서, 하이퍼바이저(120)는 하이퍼콜 인터페이스(HI)(122)와 데이터(124)를 포함할 수 있다. 실시예들에서, 하이퍼바이저(120)는 하이퍼바이저(120)(예를 들어, 데이터(124)의 일부) 또는 VM(130)(예를 들어, GOS(132)의 일부)의 선택된 데이터 또는 코드를 저장하기 위해 캐시(112)의 일부를 선택하는 것, 및 선택된 데이터 또는 코드가 캐시(112)로부터 축출되는 것을 방지하기 위해 캐시의 일부를 로킹하는 것과 같이, VM(130)의 동작들을 관리하기 위해 프로세서(114)에 의해 조작될 수 있다.
실시예들에서, HI(122)는 VM(130)이 하이퍼콜들을 통해 특권화된 동작들을 요청하는 것을 가능하게 할 수 있다. UNIX, LINUX, Windows 또는 Mac OS X와 같은 많은 현대 운영 시스템들에서, 시스템 호출들은 덜 특권화된 모드에서 실행하는 프로세스가 특권화된 (또는 관리자) 모드에서의 운영 시스템 서비스들과 동시적으로 통신하기 위한 메커니즘을 제공한다. 하이퍼콜들은 유사한 통신 메커니즘을 제공한다. 시스템 내의 프로세스 공간과 커널 공간 사이에 통신하는 시스템 호출들과는 대조적으로, 하이퍼콜은 가상 머신과 하이퍼바이저 사이의 통신을 허용한다.
실시예들에서, 하이퍼콜은 VM(130)으로부터 하이퍼바이저(120)로의 소프트웨어 트랩일 수 있다. 예로서, GOS(132)는 GOS(132) 또는 애플리케이션(134)의 선택된 데이터 또는 코드를 캐시(112)에 로킹하도록 하이퍼바이저(120)에 요청할 수 있다. 다른 예로서, GOS(132)는 GOS(132) 또는 애플리케이션(134)의 선택된 데이터 또는 코드를 캐시(112)로부터 언로킹하도록 하이퍼바이저(120)에 요청할 수 있다. 실시예들에서, HI(122)를 통한 하이퍼콜은 동기적일 수 있지만, 하이퍼바이저(120)로부터 VM(130)으로의 리턴 경로는 이벤트 채널들을 이용할 수 있고, 이 채널들은 비동기적 통지들의 큐를 이용할 수 있다.
어떤 실시예들에서, GOS(132)는 캐시(112)에 로킹될 메모리의 특정 영역들에 관해 하이퍼콜을 통해 하이퍼바이저(120)에 알릴 수 있다. 하이퍼콜은 게스트 물리 메모리 어드레스 공간 내의 시작 어드레스와 타겟화된 메모리 영역의 길이를 제공할 수 있다. 어떤 실시예들에서, GOS(132)는 언로킹될, 게스트 물리 메모리 어드레스 공간 내의 시작 어드레스와 타겟화된 메모리 영역의 길이를 지정함으로써, 유사하게, 특정 메모리 영역들의 캐시 로킹을 불능화하도록 하이퍼콜을 통해 하이퍼바이저(120)에 알릴 수 있다. 어떤 실시예들에서, GOS(132)는 임의의 특정 메모리 영역을 지정하는 일 없이 모든 이전 캐시 로킹 요청들을 리셋하도록 리셋 하이퍼콜을 통해 하이퍼바이저(120)에 알릴 수 있다.
실시예들에서, 하이퍼바이저(120) 또는 VM(130)의 중대한 데이터 또는 코드는 캐시(112)에 로킹될 수 있다. 로킹된 데이터 또는 코드는 적어도 캐시(112)의 LLC으로부터의 축출이 방지될 수 있다. 로킹된 데이터 또는 코드는 또한 캐시(112)의 L1 및 L2로부터의 축출이 방지될 수 있다. 어떤 실시예들에서, CQoS 클래스(116)를 통한 캐시 로킹 메커니즘은 하이퍼바이저(120) 내에서 행해질 수 있을 뿐이다. 실시예들에서, VM(130)은 다양한 운영 시스템들 및 상이한 운영 시스템 버전들을 실행할 수 있다; 그러므로, VM(130)은 디스패처, 인터럽트 핸들링 코드, 기타 등등과 같은 핵심적인 함수들에 대한 상이한 속성들을 가질 수 있다. CQoS 클래스(116)를 통한 캐시 로킹 메커니즘은 예를 들어, 하이퍼바이저(120)에 의해 VM(130)에 알려질 수 있음으로써, GOS(132)는 VM(130)의 내부 구조 및 운영 요건들에 기초하여 하이퍼콜 인터페이스(122)를 통해 캐시(112) 내에 그것의 중대한 데이터 또는 코드를 로킹하는 것이 가능하게 될 수 있다.
실시예들에서, 장치(100)는 도 1에 도시된 바와는 상이하게 구현일 수 있다. 예로서, 캐시(112)는 프로세서(114) 내에 통합될 수 있다. 실시예들에서, 도 1에 도시된 컴포넌트들은 도 1에 도시되지 않은 직접 또는 간접 접속을 가질 수 있다. 실시예들에서, 장치(100)의 컴포넌트들의 일부 또는 전부는 하드웨어 또는 소프트웨어 또는 그들의 조합으로 구현될 수 있을 뿐만 아니라, 임의의 개수의 상이한 디바이스들 또는 네트워크들을 가로질러 분산될 수 있다.
본 개시에 의해 증강되면, 장치는 지터 및 최악의 경우의 레이턴시를 감소시키는 것을 포함해서, 하이퍼바이저 성능을 향상시키도록 구성될 수 있다. 예로서, 하이퍼바이저(120)에서의 스케줄링을 위한 디스패치 함수에 의해 인보크되는 함수들 또는 디스패치 함수들의 일부 또는 전부가 액세스 레이턴시를 감소시키기 위해(예를 들어, 더 낮은 지터) 그리고 더 높은 성능을 달성하기 위해 캐시(112) 내에 로킹될 수 있다. 다른 예로서, 하이퍼바이저(120)의 텍스트 또는 데이터의 일부 또는 전부가 액세스 레이턴시를 감소시키기 위해 그리고 더 높은 성능을 달성하기 위해 캐시(112) 내에 로킹될 수 있다.
본 개시에 의해 증강되면, 장치는 두 개의 VM들 사이의 분리, VM과 하이퍼바이저 사이의 분리, VM과 호스트 사이의 분리, 및 가상화 하에서의 캐시 로킹과 작업부하 병합의 조합에 의한 실시간 성능을 향상시키도록 구성될 수 있다. 실시간 시스템은 최악의 경우의 VM 종료 및 VM 진입 레이턴시들 및/또는 지터들을 책임질 필요가 있을 수 있다. 실시예들에서, CQoS는 캐시 내의 특정 방식들에 상주하는 데이터 또는 코드가 축출되는 것을 방지하기 위해 사용될 수 있고, 하이퍼바이저는 그것의 게스트들에게 그들의 중대한 데이터 또는 코드를 캐시에 로킹하도록 인터페이스를 제공할 수 있고, 게다가 게스트 운영 시스템으로부터 활성 CQoS 클래스로의 모델-특정적 레지스터(MSR) 기입들을 트랩함으로써 모든 게스트들이 이러한 전용 방식들을 사용하는 것을 방지할 수 있다. 예로서, 가상 머신 제어 구조(VMCS) 또는 또는 범용 레지스터들과 같은 VM 콘텍스트 정보의 일부들 또는 전부가 캐시 내에 로킹된다면, 실시간 게스트 운영 시스템의 성능이 향상될 수 있고, 그 결과 감소된 액세스 레이턴시로 인해 더 높은 성능을 제공한다. 다른 예로서, VM 게스트들 인터럽트 핸들러들의 일부들 또는 전부가 캐시 내에 로킹될 수 있어서 유사하게 실시간 성능을 향상시킨다.
이제 도 2를 참조하면, 가상 컴퓨팅을 위한 예시적 프로세스(200)의 흐름도가 도시된다. 프로세스(200)는 하드웨어(예를 들어, 회로, 전용 로직, 프로그래머블 로직, 마이크로코드, 기타 등등), 소프트웨어(예를 들어, 하드웨어 시뮬레이션을 수행하기 위해 처리 디바이스에서 실행되는 명령어들), 또는 그들의 조합을 포함하는 처리 로직에 의해 수행될 수 있다. 처리 로직은 가상 컴퓨팅을 위해 구성될 수 있다. 이에 따라, 프로세스(200)는 본 개시의 하나 이상의 실시예들을 구현하기 위해, 컴퓨팅 디바이스, 예를 들어, 도 1과 관련하여 장치(100)에 의해 수행될 수 있다. 실시예들에서, 도 2의 다양한 블록들은 임의의 적합한 순서로, 예를 들어, 가상 컴퓨팅을 수행하기 위한 장치(100)의 특정 실시예에 따라 결합 또는 배열될 수 있다.
실시예들에서, 프로세스는 블록 210에서 시작할 수 있으며, 거기서 공유 캐시의 일부가, 하이퍼바이저에 의해 예를 들어, 도 1과 관련하여 하이퍼바이저(120)에 의해 관리되는 가상 머신의 게스트 운영 시스템 또는 하이퍼바이저의 선택된 데이터 또는 코드를 저장하기 위해 선택될 수 있다. 하이퍼바이저는, 주변기기 컴포넌트 상호연결 익스프레스(PCI 익스프레스 또는 PCIe) 디바이스들로부터 직접적으로 공유 캐시에 기입할 수 있는, 직접적인 데이터 입력 및 출력(DDIO)에 의해 사용되지 않는 하나 이상의 방식들을 선택함으로써 캐시의 일부를 선택할 수 있다. 도 1과 관련하여 논의된 바와 같이, 실시예들에서, 하이퍼바이저는 캐시에 로킹되기에 적합한 그것의 주요 디스패치 루틴들의 알려진 또는 추정된 크기에 적어도 부분적으로 기초하여 선택된 캐시의 크기를 결정할 수 있다.
다음으로, 블록(220)에서, 공유 캐시의 일부는 하이퍼바이저 또는 게스트 운영 시스템의 선택된 데이터 또는 코드가 예를 들어, 도 1과 관련하여 하이퍼바이저(120)에 의해 공유 캐시로부터 축출되는 것을 방지하기 위해, 로킹될 수 있다. 실시예들에서, 하이퍼바이저는 디스패치 함수, 스케줄러, 또는 인터럽트 핸들러와 같은, 하이퍼바이저의 주요 디스패치 루틴들로 캐시 내의 선택된 방식들 내에 페치할 수 있다. 그 후, 하이퍼바이저는 그들이 공유 캐시와 연관된 임의의 활성 CQoS 클래스들에서 사용되는 것을 방지하기 위해 이러한 선택 방식들을 로킹할 수 있다. 실시예들에서, CQoS 클래스는 공유 캐시에서 어느 방식들이 코어에 의해 액세스될 수 있는지 제어하는 비트마스크를 포함할 수 있다. 그러므로, 하이퍼바이저는 로킹 메커니즘으로서 선택된 방식들과 연관된 대응하는 비트들을 세트 또는 리셋할 수 있다.
실시예들에서, VM 내의 게스트 운영 시스템은 실시간 또는 범용 운영 시스템일 수 있다. 하이퍼바이저는 그것의 게스트 운영 시스템들에게 하이퍼콜 인터페이스를 제공할 수 있으며, 게스트 운영 시스템들이 하이퍼콜 인터페이스를 통해 그들의 중대한 데이터 또는 코드를 캐시 내에 로킹하도록 요청할 수 있다. 어떤 실시예들에서, 하이퍼바이저는, 선택된 캐시의 일부에 데이터 또는 코드를 저장하기 위해 VM으로부터의 게스트 운영 시스템보다 더 높은 우선순위를 자신에게 부여할 수 있다. 그러므로, 블록(210)과 관련하여 선택된 여분의 방식들이 있다면, 하이퍼바이저는 게스트 운영 시스템들에 의해 요청된 데이터 또는 코드를 저장하기 위해 이러한 여분의 방식들을 워밍업할 수 있다. 더우기, 하이퍼바이저는 전술한 바와 같이 로킹 메커니즘을 이용하여 모든 활성의 CQoS 클래스에서 이러한 방식들을 불능화할 수 있다. 어떤 실시예들에서, 예를 들어, 실시간 운영 시스템으로부터의 특정 타입의 데이터 또는 코드가 캐시 내에 로킹될 기회를 항상 가질 수 있도록 하기 위해, 하이퍼바이저는 특정 타입의 VM으로부터의 특정 타입의 데이터 또는 코드에 더 높은 우선순위를 부합시킬 수 있다.
어떤 실시예들에서, 게스트 운영 시스템은 예를 들어, 언로킹될, 게스트 물리 메모리 어드레스 공간 내의 시작 어드레스와 타겟화된 메모리 영역의 길이를 지정함으로써, 공유 캐시 내의 그것의 데이터 또는 코드의 로킹을 해제하기 위해, 예를 들어, 하이퍼콜을 통해, 하이퍼바이저에 요청할 수 있다. 실시예들에서, 게스트 운영 시스템은 게스트 운영 시스템과 연관된 공유 캐시 내의 모든 로킹을 제거하도록, 예를 들어, 리셋 하이퍼콜을 통해, 하이퍼바이저에게 알릴 수 있다.
실시예들에서, 하이퍼바이저는 가상 머신으로부터 캐시 서비스 품질 클래스에의 직접적인 콘택트를 트랩할 수 있다. 예로서, 하이퍼바이저는 게스트 운영 시스템들이 블록 210과 관련하여 예약된 CQoS 클래스들을 이용하는 것을 방지하기 위해 설정된 활성의 CQoS 클래스에의 모든 MSR 기입들을 트랩할 수 있다.
선택된 방식들을 공유 캐시 내에 로킹하는 것은 공유 캐시 내의 이용가능한 방식들의 감소된 개수에 의해 유발되는 충돌 미스들을 증가시킬 수 있다. 실시예들에서, 캐시 컬러링이 충돌 미스들을 완화하기 위해 사용될 수 있다. 캐시 컬러링은 프로세서에 의해 캐시된 페이지들의 전체 개수를 최대화하기 위해 캐시에서 인접한 프리 페이지들을 할당할 수 있다.
이제 도 3을 참조하면, 그것은 다양한 실시예들에 따라 예시적 장치에 의해 수행될 수 있는 CQoS 클래스들을 도시하는 개략도이다. 실시예들에서, CQoS 클래스들은 도 2의 블록 220 또는 도 1의 CQoS 클래스(116)를 참조하여 사용될 수 있다.
실시예들에서, CQoS는 CQoS 클래스를 각각의 코어에 할당할 수 있다. CQoS 클래스는 공유 캐시에 대한 액세스를 우선순위화하기 위해 사용될 수 있다. CQoS 클래스는 또한 데이터 또는 코드를 공유 캐시에 로킹하기 위해 사용될 수 있다. 실시예들에서, CQoS 클래스는 공유 캐시에서 어느 방식들이 코어에 의해 액세스될 수 있는지 제어하는 비트마스크를 포함할 수 있다. 예로서, CQoS 클래스(310)는 코어 액세싱을 위한 방식 2 내지 방식 11을 허용한다. 도 2와 관련하여, CQoS 클래스(310)의 여러 방식들이 선택될 수 있고, 데이터 또는 코드로 워밍업될 수 있고, 로킹될 수 있다. 그러나, 어떤 실시예들에서, CQoS 클래스(310) 내의 방식 0과 방식 1은 그들이 DDIO에 사용되기 때문에, 선택되지 않을 수 있다. 결과적으로, CQoS 클래스(320)는 비트들이 1로부터 0으로 뒤집힌, 방식 2 내지 방식 9를 로킹한 후, 코어 액세싱을 위해 오직 방식 10과 방식 11만을 허용하는 CQoS 클래스를 나타낸다. CQoS 클래스(320)에 의해, 모든 코어들이 공유 캐시 내의 이러한 로킹된 방식들을 이용하도록 허용되지는 않을 수 있다. 로킹된 데이터 또는 코드가 여전히, 데이터 또는 코드를 로킹한 동일 코어에 의해 예를 들어, L1 및 L2로부터 축출될 수 있더라도, 로킹된 데이터 또는 코드는 적어도 LLC에 체류할 수 있다.
도 4는 본 개시의 실시예들을 수행하는 데 적합한 컴퓨팅 디바이스(400)의 실시예를 도시한다. 도시된 바와 같이, 컴퓨팅 디바이스(400)는 하나 이상의 프로세서(410)에, 메모리(430)에, 비휘발성 기억장치(NVM)/스토리지(440)에, 그리고 하나 이상의 주변기기들(450)에 결합된 시스템 제어 로직(420)을 포함할 수 있다. 다양한 실시예들에서, 하나 이상의 프로세서(410)는 하나 이상의 프로세서 코어들 및 캐시(412)를 포함할 수 있다. 실시예들에서, 캐시(412)는 저장된 데이터 또는 코드를 캐시(412)에 로킹하기 위해 CQoS 클래스(416)를 지원하도록 구성될 수 있다. 캐시(412) 및 CQoS 클래스(416)는 도 1과 관련하여, 캐시(112) 및 CQoS 클래스(116)와 각각 유사하게 기능할 수 있다.
실시예들에서, 주변 기기들(450)은 네트워크 어댑터, 하나 이상의 안테나들, 무선 인터페이스, 및 기타 등등과 같은 임의의 적합한 하드웨어 및/또는 펌웨어를 포함할 수 있다. 주변 기기들(450)은 I2C 버스, 유니버설 시리얼 버스(universal serial bus, USB), Bluetooth®, 무선 네트워크 인터페이스 제어기(WNIC), 및 기타 등등을 포함하지만 그에 한정되지 않는, 광 범위의 유선 또는 무선 인터페이스들을 포함할 수 있다. 주변 기기들(450)은 컴퓨팅 디바이스(400)가 하나 이상의 네트워크들을 통해 그리고/또는 임의의 다른 적합한 디바이스와 통신하기 위한 인터페이스를 포함할 수 있다. 다양한 실시예들에서, 주변 기기들(450)은 컴퓨팅 디바이스(400)가 근접장 통신(NFC), 광 통신, 또는 다른 디바이스와 (예를 들어, 중계 없이) 직접 통신하기 위한 기타 유사 기술들을 사용하기 위한 인터페이스를 포함할 수 있다. 다양한 실시예들에서, 주변 기기들(450)은 예를 들어, 광대역 코드 분할 다중 액세스(WCDMA), 모바일 통신을 위한 글로벌 시스템(GSM), 롱 텀 에볼루션(LTE), WiFi, Bluetooth®, Zigbee, 및 기타 등등과 같은 라디오 통신 기술들과 연동할 수 있다.
실시예들에서, 시스템 제어 로직(420)은 프로세서(들)(410)에 대한, 그리고/또는 시스템 제어 로직(420)과 통신하는 임의의 적합한 디바이스 또는 컴포넌트에 대한 임의의 적합한 인터페이스를 제공하기 위한 임의의 적합한 인터페이스 제어기들을 포함할 수 있다. 실시예들에서, 시스템 제어 로직(420)은 컴퓨팅 디바이스(400) 상에서 실행하는 하나 이상의 VM들의 동작들을 관리하기 위한 하이퍼바이저(422)를 포함할 수 있다. 하이퍼바이저(422)는 도 1과 관련하여 하이퍼바이저(120)와 유사하게 기능을 할 수 있다.
실시예들에서, 시스템 제어 로직(420)은 또한 예컨대 사용자에게의, 정보의 디스플레이를 위한 디스플레이(도시 생략)와 연동할 수 있다. 다양한 실시예들에서, 디스플레이는 예를 들어, 액정 디스플레이들, 음극선관 디스플레이들, e-잉크 디스플레이들, 또는 프로젝션 디스플레이들과 같은 다양한 디스플레이 포맷들 및 형태들 중 하나를 포함할 수 있다. 다양한 실시예들에서, 디스플레이는 터치스크린을 포함할 수 있다.
실시예들에서, 시스템 제어 로직(420)은 시스템 메모리(430)에 대한 인터페이스를 제공하기 위한 하나 이상의 메모리 제어기들(도시 생략)을 포함할 수 있다. 시스템 메모리(430)는 예를 들어, 컴퓨팅 디바이스(400)에 대한 데이터 및/또는 명령어들을 로드 및 저장하기 위해 사용될 수 있다. 시스템 메모리(430)는 예를 들어, 적합한 동적 랜덤 액세스 메모리(dynamic random access memory, DRAM)와 같은 임의의 적절한 휘발성 메모리를 포함할 수 있다.
실시예들에서, 시스템 제어 로직(420)은 NVM/스토리지(440)에 대한 인터페이스 및 주변 기기들 인터페이스(450)를 제공하기 위한 하나 이상의 입력/출력(I/O) 제어기들(도시 생략)을 포함할 수 있다. NVM/스토리지(440)는 예를 들어, 데이터 및/또는 명령어들을 저장하기 위해 사용될 수 있다. NVM/스토리지(440)는 예를 들어, 플래시 메모리와 같은 임의의 적합한 비휘발성 메모리를 포함할 수 있고/있거나, 예를 들어, 하나 이상의 하드 디스크 드라이브들(HDD), 하나 이상의 솔리드-스테이트 드라이버들, 하나 이상의 컴팩트 디스크(CD) 드라이브들, 및/또는 하나 이상의 디지털 다용도 디스크(DVD) 드라이브들과 같은 임의의 적합한 비휘발성 스토리지 디바이스들을 포함할 수 있다. NVM/스토리지(440)는 컴퓨팅 디바이스(400)가 설치되는 디바이스의 물리적 부분인, 또는 반드시 일 부분은 아니더라도, 컴퓨팅 디바이스(400)에 액세스 가능한 스토리지 리소스를 포함할 수 있다. 예를 들어, NVM/스토리지(440)는 통신 인터페이스(458)를 통해 네트워크를 거쳐 컴퓨팅 디바이스(400)에 의해 액세스될 수 있다.
실시예들에서, 시스템 메모리(430), NVM/스토리지(440), 및 시스템 제어 로직(420)은 특히, 하이퍼바이저(422)의 일시적 및 영구적 복사본들을 포함할 수 있다. 하이퍼바이저(422)는 적어도 하나의 프로세서(들)(410)에 의해 실행될 때, 컴퓨팅 디바이스(400)로 하여금 프로세스(200)와 같은, 그러나 그에 한정되지 않는, 가상 컴퓨팅을 수행하게 하는 명령어들을 포함할 수 있다.
어떤 실시예들에서, 프로세서들(410) 중 적어도 하나는 시스템 제어 로직(420) 및/또는 하이퍼바이저(422)를 갖는 메모리와 함께 패키지될 수 있다. 어떤 실시예들에서, 프로세서들(410) 중 적어도 하나는 시스템 제어 로직(420) 및/또는 하이퍼바이저(422)를 갖는 메모리와 함께 패키지될 수 있어서 시스템 인 패키지(SiP)를 형성한다. 어떤 실시예들에서, 프로세서들(410) 중 적어도 하나는 시스템 제어 로직(420) 및/또는 하이퍼바이저(422)를 갖는 메모리와 함께 동일 다이 상에 통합될 수 있다. 어떤 실시예들에서, 프로세서들(410) 중 적어도 하나는 시스템 제어 로직(420) 및/또는 하이퍼바이저(422)를 갖는 메모리와 함께 동일 다이 상에 통합될 수 있음으로써, 시스템 온 칩(SoC)을 형성한다.
도 1과 관련하여 장치(100)의 어느 모듈들이 컴퓨팅 디바이스(400)에 의해 호스팅되는 지에 의존하여, 프로세서들(410), 시스템 메모리(430), 및 기타 등등의 능력들 및/또는 성능 특성들이 달라질 수 있다. 다양한 구현들에서, 컴퓨팅 디바이스(400)는 본 개시의 교시에 의해 증강되는 착용 가능한 컴퓨팅 디바이스, 스마트폰, 태블릿, 모바일 컴퓨팅 디바이스, 서버, 기타 등등일 수 있다. 실시예들에서, 도 4의 상이한 모듈들의 배치 및/또는 그들이 다른 모듈들과 결합되는 방법은 도 4에 도시된 것과 상이할 수 있다.
도 5는 다양한 실시예들에 따라, 본 개시의 양태들을 포함하는, 프로그래밍 명령어들을 갖는 제조 물품(510)을 도시한다. 다양한 실시예들에서, 본 개시의 다양한 실시예들을 구현하기 위해 제조 물품이 채택될 수 있다. 도시된 바와 같이, 제조 물품(510)은 명령어들(530)을 갖는 컴퓨터 판독가능 저장 매체(520)를 포함할 수 있고, 이 명령어들은 본 명세서에서 설명되는 프로세스들 중 어느 하나의 실시예들 또는 실시예들의 양태들을 수행하기 위해 구성된다. 저장 매체(520)는 플래시 메모리, 동적 랜덤 액세스 메모리, 정적 랜덤 액세스 메모리, 광 디스크, 자기 디스크, 기타 등등을 포함하지만 그에 한정되지 않는 본 기술 분야에 알려진 광 범위한 영구적 저장 매체를 나타낼 수 있다. 명령어들(530)은 장치의 명령어들의 실행에 응답하여, 장치로 하여금 본 명세서에서 설명되는 다양한 동작들을 수행하게 할 수 있다. 예를 들어, 저장 매체(520)는 본 개시의 실시예들에 따라, 장치 예를 들어 장치(100)로 하여금, 도 1 내지 도 4와 관련하여 가상 컴퓨팅 예를 들어, 하이퍼바이저(120)의 양태들의 일부 또는 전부를 수행하도록 하기 위해 구성된 명령어들(530)을 포함할 수 있다. 실시예들에서, 컴퓨터 판독가능 저장 매체(520)는 하나 이상의 컴퓨터 판독가능 비일시적 저장 매체들을 포함할 수 있다. 다른 실시예들에서, 컴퓨터 판독가능 저장 매체(520)는 명령어들(530)로 인코딩된 신호와 같은, 일시적인 것일 수 있다.
설명의 목적을 위해 특정 실시예들이 본 명세서에 예시되고 설명되었지만, 본 개시의 범위로부터 벗어나지 않으면서 동일한 목적들을 달성하도록 계산된 광범위한 대안적 및/또는 등가적 실시예들 또는 구현들이, 도시되고 설명된 실시예들을 대체할 수 있다. 이 출원은 본 명세서에서 논의된 실시예들의 임의의 적응들 또는 변형들을 포함하도록 의도된다. 따라서, 분명하게도 본 명세서에 설명된 실시예들은 청구항들에 의해서만 제한되는 것으로 의도된다.
다음의 문단들은 다양한 실시예들의 예들을 기술한다.
예 1은 가상 컴퓨팅을 위한 장치이며, 이 장치는 하나 이상의 프로세서 코어들, 및 상기 하나 이상의 프로세서 코어들에 결합된 캐시를 포함할 수 있다. 장치는 또한, 상기 장치 상에서 가상 머신들의 동작을 관리하기 위해 상기 하나 이상의 프로세서 코어들에 의해 조작되는 하이퍼바이저를 포함할 수 있고, 상기 하이퍼바이저는 상기 가상 머신들 중 하나 또는 상기 하이퍼바이저의 선택된 데이터 또는 코드를 저장할 상기 캐시의 일부를 선택하는 것, 및 선택된 데이터 또는 코드가 상기 캐시로부터 축출되는 것을 방지하기 위해 상기 캐시의 상기 일부를 로킹하는 것을 포함한다.
예 2는 예 1의 대상을 포함할 수 있고, 상기 하이퍼바이저는 상기 가상 머신들 중 하나의 가상 머신의 게스트 운영 시스템이 상기 캐시의 상기 일부에 상기 게스트 운영 시스템의 상기 선택된 데이터 또는 코드를 로킹하는 것을 요청하기 위한 인터페이스를 포함한다는 것을 더 명시할 수 있다.
예 3은 예 2의 대상을 포함할 수 있고, 상기 게스트 운영 시스템은 실시간 운영 시스템이라는 것을 더 명시할 수 있다.
예 4는 예 1 내지 예 3 중 어느 하나의 대상을 포함할 수 있고, 상기 하이퍼바이저는 상기 캐시의 상기 일부에 데이터 또는 코드를 저장하기 위해 상기 가상 머신들 중 하나보다 더 높은 우선순위를 자신에게 부여한다는 것을 더 명시할 수 있다.
예 5는 예 1 내지 예 4 중 어느 하나의 대상을 포함할 수 있고, 상기 하이퍼바이저는 직접적인 데이터 입력 및 출력에 의해 사용되지 않는 하나 이상의 방식들을 선택함으로써 상기 캐시의 상기 일부를 선택한다는 것을 더 명시할 수 있다.
예 6은 예 1 내지 예 5 중 어느 하나의 대상을 포함할 수 있고, 상기 하이퍼바이저로부터의 선택된 데이터 또는 코드는 디스패치 함수, 스케줄러, 또는 인터럽트 핸들러 중 적어도 하나를 포함한다는 것을 더 명시할 수 있다.
예 7은 예 1 내지 예 6 중 어느 하나의 대상을 포함할 수 있고, 상기 하이퍼바이저는 상기 가상 머신들 중 하나 내의 메모리의 영역을 상기 캐시 내에 로킹되도록 요청하는 하이퍼콜을 포함하는 하이퍼콜 인터페이스를 포함한다는 것을 더 명시할 수 있다.
예 8은 예 1 내지 예 7 중 어느 하나의 대상을 포함할 수 있고, 상기 하이퍼바이저는 상기 가상 머신들 중 하나 내의 메모리의 영역을 상기 캐시로부터 언로킹되도록 요청하는 하이퍼콜을 포함하는 하이퍼콜 인터페이스를 포함한다는 것을 더 명시할 수 있다.
예 9는 예 1 내지 예 8 중 어느 하나의 대상을 포함할 수 있고, 상기 캐시는 상기 캐시의 최후 레벨 캐시에 대한 액세스를 제어하기 위한 비트마스크를 포함하는 캐시 서비스 품질 클래스와 연관된다는 것을 더 명시할 수 있다.
예 10은 예 9의 대상을 포함할 수 있고, 상기 하이퍼바이저는 상기 캐시 서비스 품질 클래스의 설정을 통해 상기 캐시의 일부를 로킹한다는 것을 더 명시할 수 있다.
예 11은 예 9 또는 예 10의 대상을 포함할 수 있고, 상기 하이퍼바이저는 상기 가상 머신들 중 하나로부터 상기 캐시 서비스 품질 클래스로의 직접적인 콘택트를 트랩한다는 것을 더 명시할 수 있다.
예 12는 가상 컴퓨팅을 위한 방법이며, 이 방법은 컴퓨팅 시스템의 하이퍼바이저에 의해, 상기 하이퍼바이저에 의한 관리 하에서, 상기 컴퓨터 시스템 상에서 동작하는 가상 머신 또는 상기 하이퍼바이저의 선택된 데이터 또는 코드를 저장할 공유 캐시의 일부를 선택하는 단계; 및 상기 하이퍼바이저에 의해, 상기 하이퍼바이저 또는 상기 가상 머신의 상기 선택된 데이터 또는 코드가 상기 공유 캐시로부터 축출되는 것을 방지하기 위해 상기 공유 캐시의 상기 일부를 로킹하는 단계를 포함할 수 있다.
예 13은 예 12의 대상을 포함할 수 있고, 상기 가상 머신의 게스트 운영 시스템으로부터, 상기 하이퍼바이저에 의해, 상기 게스트 운영 시스템의 선택된 데이터 또는 코드를 상기 공유 캐시의 일부에 로킹하기 위한 요청을 수신하는 단계를 더 포함할 수 있다.
예 14는 예 13의 대상을 포함할 수 있고, 상기 수신하는 단계는, 상기 게스트 운영 시스템에 의해 관리되는 가상 메모리의 영역이 상기 공유 캐시 내에 로킹되도록 요청하는 하이퍼콜을 하이퍼콜 인터페이스를 통해 수신하는 단계를 포함한다는 것을 더 명시할 수 있다.
예 15는 예 13 또는 예 14의 대상을 포함할 수 있고, 상기 게스트 운영 시스템에 의해 관리되는 가상 메모리의 영역이 상기 공유 캐시로부터 언로킹되도록 요청하는 하이퍼콜을 하이퍼콜 인터페이스를 통해 상기 하이퍼바이저에 의해 수신하는 단계를 더 포함할 수 있다.
예 16은 예 13 내지 예 15 중 어느 하나의 대상을 포함할 수 있고, 상기 게스트 운영 시스템은 실시간 운영 시스템이라는 것을 더 명시할 수 있다.
예 17은 예 12 내지 예 16 중 어느 하나의 대상을 포함할 수 있고, 상기 하이퍼바이저에 의해, 상기 공유 캐시의 일부를 사용하기 위해 상기 가상 머신보다 더 높은 우선순위를 부여하는 단계를 더 포함할 수 있다.
예 18은 예 12 내지 예 17 중 어느 하나의 대상을 포함할 수 있고, 상기 로킹하는 단계는 캐시 서비스 품질 클래스 내의 상기 공유 캐시의 일부를 디스에이블하는 단계를 포함한다는 것을 더 명시할 수 있다.
예 19는 예 18의 대상을 포함할 수 있고, 상기 캐시 서비스 품질 클래스는 상기 공유 캐시에 대한 액세스를 제어하기 위한 비트마스크를 포함한다는 것을 더 명시할 수 있다.
예 20은 예 12 내지 예 19 중 어느 하나의 대상을 포함할 수 있고, 상기 로킹하는 단계는, 상기 하이퍼바이저에 의해, 상기 가상 머신으로부터 상기 공유 캐시의 캐시 서비스 품질 클래스로의 직접적인 콘택트를 트랩하는 단계를 포함한다는 것을 더 명시할 수 있다.
예 21은 예 12 내지 예 20 중 어느 하나의 대상을 포함할 수 있고, 상기 하이퍼바이저로부터의 선택된 데이터 또는 코드는 디스패치 함수, 스케줄러, 또는 인터럽트 핸들러 중 적어도 하나를 포함한다는 것을 더 명시할 수 있다.
예 22는 예 12 내지 예 21 중 어느 하나의 대상을 포함할 수 있고, 상기 공유 캐시의 상기 일부를 선택하는 단계는 직접적인 데이터 입력 및 출력에 의해 사용되지 않는 하나 이상의 방식들을 선택하는 단계를 포함한다는 것을 더 명시할 수 있다.
예 23은 명령어들이 저장되어 있는 컴퓨터 판독가능 저장 매체이며, 상기 명령어들은 디바이스로 하여금, 상기 디바이스에 의한 상기 명령어들의 실행에 응답하여, 예 12 내지 예 22 중 어느 하나의 대상을 수행하게 하도록 구성된다. 저장 매체는 비일시적일 수 있다.
예 24는 가상 컴퓨팅을 위한 장치이며, 이 장치는 컴퓨팅 시스템의 하이퍼바이저에 의해, 상기 하이퍼바이저에 의한 관리 하에서, 상기 컴퓨터 시스템 상에서 동작하는 가상 머신 또는 상기 하이퍼바이저의 선택된 데이터 또는 코드를 저장할 공유 캐시의 일부를 선택하는 수단; 및 상기 하이퍼바이저에 의해, 상기 하이퍼바이저 또는 상기 가상 머신의 상기 선택된 데이터 또는 코드가 상기 공유 캐시로부터 축출되는 것을 방지하기 위해 상기 공유 캐시의 상기 일부를 로킹하는 수단을 포함할 수 있다.
예 25는 예 24의 대상을 포함할 수 있고, 상기 가상 머신의 게스트 운영 시스템으로부터, 상기 하이퍼바이저에 의해, 상기 게스트 운영 시스템의 선택된 데이터 또는 코드를 상기 공유 캐시의 일부에 로킹 또는 언로킹하기 위한 요청을 수신하는 수단을 더 포함할 수 있다.
예 26은 예 24 또는 예 25의 대상을 포함할 수 있고, 상기 하이퍼바이저에 의해, 상기 가상 머신으로부터 상기 공유 캐시의 캐시 서비스 품질 클래스로의 직접적인 콘택트를 트랩하는 수단을 더 포함할 수 있다.

Claims (25)

  1. 가상 컴퓨팅을 위한 장치로서:
    하나 이상의 프로세서 코어들;
    상기 하나 이상의 프로세서 코어들에 결합된 캐시; 및
    상기 장치 상에서 가상 머신들의 동작을 관리하기 위해 상기 하나 이상의 프로세서 코어들에 의해 조작되는 하이퍼바이저를 포함하고, 상기 하이퍼바이저는 상기 가상 머신들 중 하나의 가상 머신 또는 상기 하이퍼바이저의 선택된 데이터 또는 코드를 저장할 상기 캐시의 일부를 선택하는 것, 및 선택된 데이터 또는 코드가 상기 캐시로부터 축출되는 것을 방지하기 위해 상기 캐시의 일부를 로킹(locking)하는 것을 포함하는, 장치.
  2. 제1항에 있어서, 상기 하이퍼바이저는 상기 가상 머신들 중 하나의 가상 머신의 게스트 운영 시스템이 상기 게스트 운영 시스템의 상기 선택된 데이터 또는 코드를 상기 캐시의 일부에 로킹하는 것을 요청하기 위한 인터페이스를 포함하는, 장치.
  3. 제2항에 있어서, 상기 게스트 운영 시스템은 실시간 운영 시스템인, 장치.
  4. 제1항에 있어서, 상기 하이퍼바이저는 상기 캐시의 일부에 데이터 또는 코드를 저장하기 위해 상기 가상 머신들 중 하나의 가상 머신보다 더 높은 우선순위를 자신에게 부여하는, 장치.
  5. 제1항에 있어서, 상기 하이퍼바이저는 직접적인 데이터 입력 및 출력에 의해 사용되지 않는 하나 이상의 방식들을 선택함으로써 상기 캐시의 일부를 선택하는, 장치.
  6. 제1항에 있어서, 상기 하이퍼바이저로부터의 선택된 데이터 또는 코드는 디스패치 함수, 스케줄러, 또는 인터럽트 핸들러 중 적어도 하나를 포함하는, 장치.
  7. 제1항에 있어서, 상기 하이퍼바이저는 상기 가상 머신들 중 하나의 가상 머신 내의 메모리의 영역이 상기 캐시 내에 로킹되도록 요청하는 하이퍼콜을 포함하는 하이퍼콜 인터페이스를 포함하는, 장치.
  8. 제1항에 있어서, 상기 하이퍼바이저는 상기 가상 머신들 중 하나의 가상 머신 내의 메모리의 영역이 상기 캐시로부터 언로킹되도록 요청하는 하이퍼콜을 포함하는 하이퍼콜 인터페이스를 포함하는, 장치.
  9. 제1항 내지 제8항 중 어느 한 항에 있어서, 상기 캐시는 상기 캐시에 대한 액세스를 제어하기 위한 비트마스크를 포함하는 캐시 서비스 품질 클래스(cache quality of service class)와 연관되는, 장치.
  10. 제9항에 있어서, 상기 하이퍼바이저는 상기 캐시 서비스 품질 클래스의 설정을 통해 상기 캐시의 일부를 로킹하는, 장치.
  11. 제9항에 있어서, 상기 하이퍼바이저는 상기 가상 머신들 중 하나의 가상 머신으로부터 상기 캐시 서비스 품질 클래스로의 직접적인 콘택트를 트랩(trap)하는, 장치.
  12. 가상 컴퓨팅을 위한 방법으로서:
    컴퓨팅 시스템의 하이퍼바이저에 의해, 상기 하이퍼바이저에 의한 관리 하에서, 상기 컴퓨터 시스템 상에서 동작하는 가상 머신 또는 상기 하이퍼바이저의 선택된 데이터 또는 코드를 저장할 공유 캐시의 일부를 선택하는 단계; 및
    상기 하이퍼바이저에 의해, 상기 하이퍼바이저 또는 상기 가상 머신의 상기 선택된 데이터 또는 코드가 상기 공유 캐시로부터 축출되는 것을 방지하기 위해 상기 공유 캐시의 일부를 로킹하는 단계를 포함하는, 방법.
  13. 제12항에 있어서,
    상기 하이퍼바이저에 의해, 상기 가상 머신의 게스트 운영 시스템으로부터 상기 게스트 운영 시스템의 선택된 데이터 또는 코드를 상기 공유 캐시의 일부에 로킹하기 위한 요청을 수신하는 단계를 더 포함하는, 방법.
  14. 제13항에 있어서, 상기 수신하는 단계는, 상기 게스트 운영 시스템에 의해 관리되는 가상 메모리의 영역이 상기 공유 캐시 내에 로킹되도록 요청하는 하이퍼콜을 하이퍼콜 인터페이스를 통해 수신하는 단계를 포함하는, 방법.
  15. 제14항에 있어서, 상기 하이퍼바이저에 의해, 상기 게스트 운영 시스템에 의해 관리되는 가상 메모리의 영역이 상기 공유 캐시로부터 언로킹되도록 요청하는 하이퍼콜을 하이퍼콜 인터페이스를 통해 수신하는 단계를 더 포함하는, 방법.
  16. 제15항에 있어서, 상기 게스트 운영 시스템은 실시간 운영 시스템인, 방법.
  17. 제12항에 있어서,
    상기 하이퍼바이저에 의해, 상기 공유 캐시의 일부를 사용하기 위해 상기 가상 머신보다 더 높은 우선순위를 부여하는 단계를 더 포함하는, 방법.
  18. 제12항에 있어서, 상기 로킹하는 단계는:
    캐시 서비스 품질 클래스 내의 상기 공유 캐시의 일부를 디스에이블하는 단계를 포함하는, 방법.
  19. 제18항에 있어서, 상기 캐시 서비스 품질 클래스는 상기 공유 캐시에 대한 액세스를 제어하기 위한 비트마스크를 포함하는, 방법.
  20. 제12항에 있어서, 상기 로킹하는 단계는, 상기 하이퍼바이저에 의해, 상기 가상 머신으로부터 상기 공유 캐시의 캐시 서비스 품질 클래스로의 직접적인 콘택트를 트랩하는 단계를 포함하는, 방법.
  21. 제12항에 있어서, 상기 하이퍼바이저로부터의 선택된 데이터 또는 코드는 디스패치 함수, 스케줄러, 또는 인터럽트 핸들러 중 적어도 하나를 포함하는, 방법.
  22. 제12항에 있어서, 상기 공유 캐시의 일부를 선택하는 단계는 직접적인 데이터 입력 및 출력에 의해 사용되지 않는 하나 이상의 방식들을 선택하는 단계를 포함하는, 방법.
  23. 가상 컴퓨팅을 위한 장치로서:
    컴퓨팅 시스템의 하이퍼바이저에 의해, 상기 하이퍼바이저에 의한 관리 하에서, 상기 컴퓨터 시스템 상에서 동작하는 가상 머신 또는 상기 하이퍼바이저의 선택된 데이터 또는 코드를 저장할 공유 캐시의 일부를 선택하는 수단; 및
    상기 하이퍼바이저에 의해, 상기 하이퍼바이저 또는 상기 가상 머신의 상기 선택된 데이터 또는 코드가 상기 공유 캐시로부터 축출되는 것을 방지하기 위해 상기 공유 캐시의 일부를 로킹하는 수단을 포함하는, 장치.
  24. 제23항에 있어서,
    상기 하이퍼바이저에 의해, 상기 가상 머신의 게스트 운영 시스템으로부터, 상기 게스트 운영 시스템의 선택된 데이터 또는 코드를 상기 공유 캐시의 일부에 로킹 또는 언로킹하기 위한 요청을 수신하는 수단; 및
    상기 하이퍼바이저에 의해, 상기 가상 머신으로부터 상기 공유 캐시의 캐시 서비스 품질 클래스로의 직접적인 콘택트를 트랩하는 수단을 더 포함하는, 장치.
  25. 명령어들을 포함하는 하나 이상의 컴퓨터 판독가능 저장 매체로서, 상기 명령어들은 컴퓨팅 장치로 하여금, 상기 컴퓨팅 장치에 의한 상기 명령어들의 실행에 응답하여, 제12항 내지 제22항의 방법들 중 어느 하나의 방법을 수행하게 하는, 컴퓨터 판독가능 저장 매체.
KR1020167022180A 2014-03-21 2015-01-23 가상 컴퓨팅을 위한 장치 및 방법 KR101821079B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/222,416 US9652270B2 (en) 2014-03-21 2014-03-21 Apparatus and method for virtualized computing
US14/222,416 2014-03-21
PCT/US2015/012728 WO2015142421A1 (en) 2014-03-21 2015-01-23 Apparatus and method for virtualized computing

Publications (2)

Publication Number Publication Date
KR20160108502A true KR20160108502A (ko) 2016-09-19
KR101821079B1 KR101821079B1 (ko) 2018-01-22

Family

ID=54142199

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167022180A KR101821079B1 (ko) 2014-03-21 2015-01-23 가상 컴퓨팅을 위한 장치 및 방법

Country Status (6)

Country Link
US (1) US9652270B2 (ko)
EP (1) EP3120244A4 (ko)
JP (1) JP6273034B2 (ko)
KR (1) KR101821079B1 (ko)
CN (1) CN105980986B (ko)
WO (1) WO2015142421A1 (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9563564B2 (en) 2015-04-07 2017-02-07 Intel Corporation Cache allocation with code and data prioritization
US10191858B2 (en) 2015-11-25 2019-01-29 Red Hat Israel, Ltd. Virtual machine memory lock-down
US20210026950A1 (en) * 2016-03-07 2021-01-28 Crowdstrike, Inc. Hypervisor-based redirection of system calls and interrupt-based task offloading
WO2018058533A1 (en) * 2016-09-30 2018-04-05 Intel Corporation Technologies for paravirtual network device queue and memory management
US10241874B2 (en) * 2017-05-17 2019-03-26 Stratus Technologies Checkpoint method for a highly available computer system
JP2020149597A (ja) * 2019-03-15 2020-09-17 株式会社デンソーテン 制御装置および制御方法
US20190340123A1 (en) * 2019-07-17 2019-11-07 Intel Corporation Controller for locking of selected cache regions
KR20210130341A (ko) 2020-04-22 2021-11-01 에스케이하이닉스 주식회사 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법
US12020059B2 (en) * 2021-08-30 2024-06-25 International Business Machines Corporation Inaccessible prefix pages during virtual machine execution
WO2024120627A1 (en) * 2022-12-07 2024-06-13 Telefonaktiebolaget Lm Ericsson (Publ) Locking data blocks in cache

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7516453B1 (en) * 1998-10-26 2009-04-07 Vmware, Inc. Binary translator with precise exception synchronization mechanism
US6490615B1 (en) * 1998-11-20 2002-12-03 International Business Machines Corporation Scalable cache
JP4012517B2 (ja) 2003-04-29 2007-11-21 インターナショナル・ビジネス・マシーンズ・コーポレーション 仮想計算機環境におけるロックの管理
JP4358224B2 (ja) * 2006-12-27 2009-11-04 株式会社東芝 ゲストosスケジューリング方法及び仮想計算機モニタ
US8156298B1 (en) * 2007-10-24 2012-04-10 Adam Stubblefield Virtualization-based security apparatuses, methods, and systems
CN101652760B (zh) * 2007-12-10 2012-12-26 松下电器产业株式会社 共享缓存控制装置、共享缓存控制方法及集成电路
US8041896B2 (en) * 2008-04-30 2011-10-18 Hewlett-Packard Development Company, L.P. Virtualization platform with dedicated cache access
US20100070678A1 (en) 2008-09-12 2010-03-18 Vmware, Inc. Saving and Restoring State Information for Virtualized Computer Systems
JP5338435B2 (ja) 2009-03-31 2013-11-13 富士通株式会社 情報処理プログラム、情報処理装置および情報処理方法
EP2513787A1 (en) * 2009-12-18 2012-10-24 Syddansk Universitet Method, computer program product, and system for non-blocking dynamic update of statically typed class-based object-oriented software
US8443376B2 (en) * 2010-06-01 2013-05-14 Microsoft Corporation Hypervisor scheduler
CN102402422B (zh) * 2010-09-10 2016-04-13 北京中星微电子有限公司 处理器组件及该组件内存共享的方法
US8307169B2 (en) * 2011-03-10 2012-11-06 Safenet, Inc. Protecting guest virtual machine memory
US9053037B2 (en) 2011-04-04 2015-06-09 International Business Machines Corporation Allocating cache for use as a dedicated local storage
US8745614B2 (en) * 2011-05-13 2014-06-03 Lsi Corporation Method and system for firmware upgrade of a storage subsystem hosted in a storage virtualization environment
JP5737050B2 (ja) * 2011-08-15 2015-06-17 富士通株式会社 情報処理装置、割込み制御方法および割込み制御プログラム
KR20130131135A (ko) * 2012-05-23 2013-12-03 삼성전자주식회사 QoS 기반 캐시 컨트롤러 및 그 동작 방법
US10061616B2 (en) * 2012-05-30 2018-08-28 Red Hat Israel, Ltd. Host memory locking in virtualized systems with memory overcommit
US10339056B2 (en) * 2012-07-03 2019-07-02 Sandisk Technologies Llc Systems, methods and apparatus for cache transfers
US9612966B2 (en) 2012-07-03 2017-04-04 Sandisk Technologies Llc Systems, methods and apparatus for a virtual machine cache
WO2014185906A1 (en) * 2013-05-15 2014-11-20 Empire Technology Development, Llc Core affinity bitmask translation

Also Published As

Publication number Publication date
JP6273034B2 (ja) 2018-01-31
EP3120244A1 (en) 2017-01-25
US9652270B2 (en) 2017-05-16
JP2017511926A (ja) 2017-04-27
EP3120244A4 (en) 2018-03-28
CN105980986A (zh) 2016-09-28
KR101821079B1 (ko) 2018-01-22
WO2015142421A1 (en) 2015-09-24
CN105980986B (zh) 2020-01-31
US20150268979A1 (en) 2015-09-24

Similar Documents

Publication Publication Date Title
KR101821079B1 (ko) 가상 컴퓨팅을 위한 장치 및 방법
US10901772B2 (en) Virtualization exceptions
US10162655B2 (en) Hypervisor context switching using TLB tags in processors having more than two hierarchical privilege levels
US10255090B2 (en) Hypervisor context switching using a redirection exception vector in processors having more than two hierarchical privilege levels
US9529650B2 (en) Method and apparatus for accessing hardware resource
JP5042848B2 (ja) 仮想マシン・モニタの構成部分を特権化解除するためのシステム及び方法
US8667187B2 (en) System and method for reducing communication overhead between network interface controllers and virtual machines
CA2915646C (en) Page fault injection in virtual machines to cause mapping of swapped-out memory pages into (vm) virtualized memory
US10409633B2 (en) Hypervisor-visible guest thread management
CN107924325B (zh) 用于多级虚拟化的设备和方法
US10061616B2 (en) Host memory locking in virtualized systems with memory overcommit
US20150370590A1 (en) Hypervisor context switching using a trampoline scheme in processors having more than two hierarchical privilege levels
US20160188354A1 (en) Efficient enabling of extended page tables
US10445247B2 (en) Switching between single-level and two-level page table translations
US20160034300A1 (en) Information processing devicing and method
Grinberg et al. Architectural virtualization extensions: A systems perspective
US20230027307A1 (en) Hypervisor-assisted transient cache for virtual machines

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