KR20090035523A - 가상 컴퓨터에서 캐시 라인 공유를 회피하는, 하드웨어 액세스 제공 시스템 및 액세스 관리 방법 - Google Patents

가상 컴퓨터에서 캐시 라인 공유를 회피하는, 하드웨어 액세스 제공 시스템 및 액세스 관리 방법 Download PDF

Info

Publication number
KR20090035523A
KR20090035523A KR1020097000883A KR20097000883A KR20090035523A KR 20090035523 A KR20090035523 A KR 20090035523A KR 1020097000883 A KR1020097000883 A KR 1020097000883A KR 20097000883 A KR20097000883 A KR 20097000883A KR 20090035523 A KR20090035523 A KR 20090035523A
Authority
KR
South Korea
Prior art keywords
guest
memory
cache
memory pages
access
Prior art date
Application number
KR1020097000883A
Other languages
English (en)
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 KR20090035523A publication Critical patent/KR20090035523A/ko

Links

Images

Classifications

    • 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
    • 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/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/80Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in storage media based on magnetic or optical technology, e.g. disks with sectors
    • G06F21/805Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in storage media based on magnetic or optical technology, e.g. disks with sectors using a security table for the storage sub-system
    • 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/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/653Page colouring

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

가상 머신에서 캐시 라인 공유를 회피하는 것은 호스트를 구동시키는 시스템 및 다수의 게스트 운영 체제에서 구현될 수 있다. 호스트는 게스트 운영 체제에 의한 하드웨어 액세스를 용이하게 하며, 게스트에 의한 메모리 액세스를 감독한다. 캐시 라인들은 일정한 간격을 두고 이격되어 있는 메모리 페이지들과 연관되기 때문에, 상기 호스트는 게스트 메모리 액세스를 선택 메모리 페이지들만으로 할 수 있어, 게스트 캐시 사용을 하나 이상의 캐시 라인으로 제한한다. 메모리 액세스를 별도 세트의 메모리 페이지들로 함으로써 다른 게스트들은 상이한 캐시 라인들로 제한될 수 있다.
메모리 버스, 가상 게스트 운영 체제, 캐시 라인

Description

가상 컴퓨터에서 캐시 라인 공유를 회피하는, 하드웨어 액세스 제공 시스템 및 액세스 관리 방법{AVOIDING CACHE LINE SHARING IN VIRTUAL MACHINES}
본 발명은 가상 머신들의 캐시 라인 공유를 회피하기 위한 시스템 및 방법에 관한 것이다.
Daniel Bernstein의 Cache-timing attacks on AES, 2005와, Colin Percival의 Cache Missing for Fun and Profit, 2005와, Dag Arne Osvik, Adi Shamir, Eran Tromer의 Cache Attacks and Countermeasures: the Case of AES, 2005와, Joseph Bonneau, Ilya Mironov의 Cache-Collision Timing Attacks Against AES, 2006과 같은 최신 기사에는 가상 머신(virtual machine)들을 구동시키는 시스템들에 영향을 미칠 수 있는 잠재적 보안 취약성에 대하여 공표되어 있다. 간략하면, 다수의 게스트 운영 체제가 하나의 프로세서, 또는 메모리 버스를 공유하는 다수의 프로세서들을 공유하는 시나리오에서는, 악의가 있는 게스트가 하나 이상의 다른 게스트의 개인 키를 발견할 가능성이 있다.
이는 1) 캐시에 데이터를 로딩(loading)시키고, 2) 희생(victim) 게스트로 하여금, 특정 방식으로 메모리에 파퓰레이트(populate) 할 수 있는 코드를 실행하게 하고, 3) 상기 캐시 내로 로딩된 데이터를 검색하려고 연속적으로 시도하면서 여기에 소요된 시간을 측정함으로써 달성될 수 있다. 상기 캐시 내에 로딩된 데이터를 검색하는데 소요된 시간을 측정함으로써, 악의가 있는 게스트는 상기 데이터가 사실상 상기 캐시에 아직 있는지 여부를 알 수 있다. 데이터가 상기 캐시에 있지 않다면, 검색하는데 더 많은 시간이 걸릴 것이다. 데이터가 캐시에 있지 않다면, 희생 게스트가 그 캐시 위치를 사용하였다는 것을 추정할 수 있다. 희생 게스트가 어떤 캐시 위치들이 사용하였는지를 판정함으로써, 악의가 있는 게스트는 희생 게스트의 조작(operations)에 대해 알 수 있으며, 희생 게스트의 보안을 충분히 위태롭게 할 잠재성이 있을 수 있다.
상기 언급된 참조 문헌에 제공된 바와 같은, 캐시 라인 암호 해독(cash line cryptanalysis)에 대한 기존의 추천된 솔루션들은 메모리 엑세스를 마스킹하기 위해서, 암호화 알고리즘들을 변경할 것을 제안한다. 이는 몇몇 제한을 가진다. 첫째로, 정성들여(costly) 착수한 암호화 알고리즘을 재기입하는 것이 요구된다. 둘째로, 알고리즘들은 분석 저항(analysis resistant)을 가질 수 있을 것을 조건으로 한다. 세째로, 재기입 알고리즘들은 이들의 성능에 상당한 영향을 미칠 수 있다.
암호화 해독 프로세스들을 보호하기 위한 운영 체제에서 메모리 격리(isolating)와 같은 다른 완화수단(mitigation)은 가상 머신 상에서 실행될 때에 잠재적 위험에 처하게 된다. 이는 가상 게스트 운영 체제의 메모리를 가상 게스트 운영 체제에 어떻게 할당할지 그리고 다른 메모리를 다른 잠정적으로 적의가 있는 파티션들에 어떻게 할당할지에 관하여 가상 게스트 운영 체제가 제어할 수 없는 경우가 있을 수 있다는 사실 때문이다.
오늘날의 기술적 전망으로 볼 때, 가상 머신 기술은 중요도가 높아지고 있다. 예컨대, 커머셜 호스팅 서비스(commercial hosting service)에 의해 다수의 게스트 운영 체제가 호스팅되는 비즈니스 모델들이 출현할 수 있다. 이러한 설정(setting)에 있어서, 보안 위협은 방치되어서는 않된다. 본 발명은 상기 설명된 취약성을 다루는 것이며, 본 발명은 또한 보안 관련이 아닌 목적으로도 본 발명을 사용할 수 있는 성능 이득(performance gains)을 제공한다.
위에서 확인한 종래 기술의 단점을 고려하여, 본 발명은 가상 머신들에서 캐시 라인 공유를 회피하기 위한 시스템 및 방법을 제공한다. 예컨대, 호스트 및 다수의 게스트 운영 체제를 구동시키는 시스템에서, 상기 호스트는 게스트 운영 체제에 의한 하드웨어 액세스를 용이하게 한다. 특히, 상기 호스트는 게스트 운영 체제에 의한 매모리 액세스를 감독(oversee)할 수 있다. 캐시 라인들은 일정 간격들로 떨어져 있는 메모리 페이지들과 연관되기 때문에, 호스트는 게스트 메모리 액세스를 선택 메모리 페이지들만으로 하게 함으로써, 게스트 캐시 사용을 하나 이상의 캐시 라인으로 제한할 수 있다. 메모리 액세스를 별도의 세트의 메모리 페이지들로 하게 함으로써 다른 게스트들은 상이한 캐시 라인들로 제한될 수 있다. 본 발명의 다른 이점 및 특징은 이하에서 설명된다.
본 발명에 따른 가상 머신들의 캐시 라인 공유를 회피하기 위한 시스템 및 방법을, 첨부한 도면을 참조하여 더 설명한다.
도 1은 메모리를 복수의 게스트 파티션에 메모리를 할당하는 종래 기술 접근방법(approach)을 나타내는 도면 - 제1 게스트는, 캐시 라인(1, 2, 3, 4)과 관련된 메모리 페이지들의 연속 블럭인, 예컨대 파티션 A (110)의 메모리를 사용할 수 있다. 컨텍스트 전환이 수행되면, 다른 게스트는 동일 캐시 라인들 및 메모리 페이지들을 사용할 수 있다 -.
도 2는 프로세서(210, 220), 캐시 라인(211, 212, 221, 222), 호스트(203), 캐스트(201, 202) 및 메모리(230)를 포함하는 장치(200)를 나타내는 도면 - 게스트 메모리 액세스들은 일부의 캐시 라인과 관련된(나머지 캐시 라인들은 관련되지 않음) 메모리 페이지들로 향한다. 다른 게스트들은 다른 캐시 라인들과 관련된 메모리 페이지들을 사용할 수 있다 -.
도 3은 본 발명의 실시형태에 따라 게스트 파티션들에 메모리를 할당하는 것을 나타내는 도면 - 오로지 캐시 라인(1)과 연관되도록 일정한 간격을 두고 이격되어 있는 메모리 페이지들의 비연속 블럭인 파티션 A (310)을 제1 게스트가 사용할 수 있다. 컨텍스트 전환이 수행되면, 다른 게스트는 캐시 라인 2와 같은 다른 캐시 라인과 연관된 메모리 페이지들을 사용할 수 있다 -.
도 4는 게스트에 의한 메모리 액세스를 관리하는 방법을 나타내는 도면.
도 5는 제1 게스트에서 제2 게스트로 컨텍스트 전환하는 방법을 나타내는 도면.
도 6은 제1 프로세서에서 제2 프로세서로 게스트를 전송하는 방법을 나타내는 도면.
도 7은 게스트들의 관련 군, 예컨대, 공통 엔터티에 의해 보유된(owned by a common entity) 게스트들의 군에 대한 캐시 라인들 및/또는 메모리 주소들을 예약하는 방법을 나타내는 도면.
본 발명의 다양한 실시형태들을 이해시키기 위해서 특정 상세한 설명을 이하의 설명 및 도면들로 설명한다. 그러나, 불필요하게, 본 발명의 다양한 실시형태들을 불명료하게 하지 않게 하기 위해서 종종 컴퓨팅 및 소프트웨어 기술과 관련된 특정의 공지된 상세에 대해서는 이하의 개시에서 설명되지 않는다. 또한, 당업자라면 이하에 설명된 하나 이상의 상세 없이 본 발명의 다른 실시형태를 실시할 수 있다는 것을 이해할 수 있다. 마지막으로, 다양한 방법들을 단계들 및 시퀸스를 참조로 하여 이하의 개시에서 설명하였지만, 상기와 같은 설명은 본 발명의 실시형태들의 구현을 명확히 하기 위한 것이며, 상기 단계들 및 단계들의 시퀸스가 이러한 본 발명을 실시하는데 요구되는 것으로 받아들여져서는 않된다.
도 1은 간략화된 캐시(cache) 모델을 나타낸다. 도 1은 4개의 캐시 라인(150)과 16개 물리적 메모리(100) 페이지를 지닌 프로세서를 포함하는 예시적 시스템에 대하여 고려한다. 여기에는 3개의 게스트 파티션(guest partition) (110, 120, 130)이 존재하며, 이들 각각에는 4개의 메모리 페이지가 할당된다. 호스트(140)는 이 호스트에 할당된 하나의 페이지를 가진다.
도 1은 캐시-라인 할당에 대한 종래의 접근 방법을 나타내며, 이러한 종래의 접근 방법은 배경 기술에서 설명된 바와 같이 보안이 취약해지게 되며, 또한 몇몇 부정적인 수행이 일어날 수 있다. 중앙 처리 유닛(CPU)들로 종종 지칭되는 현재의 컴퓨터 프로세서들은 데이터 액세스 및 명령 패치(fetch)에 관한 수행을 향상시키기 위해서 내부 메모리 케시들을 포함하는 것으로 이해될 수 있다. 종종 이러한 캐시들은 메모리의 특정 영역에 내부적으로 전용되어 그 크기 및 복잡도(complexity)가 프로세서 다이(die) 내에서 제한된다. 종종 이러한 구성(arrangement)을 "연관형(associative)"이라 하며, 여기서는 제공된 캐시 버퍼가 오로지 미리 정해진 메모리 주소들과만 연관될 수 있거나, 캐시하도록 사용될 수 있다. 예를 들면, CPU가 4 킬로바이트 페이지들의 메모리에 어드레스(address)하고 CPU가 4개의 캐시 라인을 포함한다면, 매 16 번째의 킬로바이트 메모리는 동일 캐시 라인에 연관될 것이다. 이는 메모리 어드레스 0 K로부터의 읽어낸 것이 제1 캐시 라인에 채워진다는 것을 의미한다. 메모리 어드레스들 16 K, 32 K, 48 K 등등으로부터의 일련의 읽어낸 것이 또한 앞서 읽어낸 것(즉, 이러한 예에서는 주소 0 K로부터 읽어낸 것)을 밀어내고(evict), 제1 캐시 라인에 채워질 수 있다.
도 1에서, 가설적(hypothetical) 프로세서는 "1, 2, 3, 4"로 지칭된 4개의 캐시 라인들(150)에 정보를 저장한다. 이러한 예에서의 각각의 캐시 라인은 각각의 캐시 라인 식별자 아래의 4개의 박스에 의해 나타낸 4개의 "워드(word)"를 가진다. 각각의 캐시 라인은 시스템 물리적 메모리 페이지들(100)의 복수의 메모리 페이지와 연관된다. 예컨대, 도 1에 나타낸 음영 부분에서 알 수 있는 바와 같이, 캐시 라인 1에서의 제1 워드를 시스템 물리적 메모리 페이지들(100)의 0 K 메모리 페이지라 한다. 캐시 라인 1에서의 제2 워드를 시스템 물리적 메모리 페이지 들(100)의 16 K 메모리 페이지라 한다. 캐시 라인 1에서의 3번째 워드를 시스템 물리적 메모리 페이지들(100)의 32 K 메모리 페이지라 한다. 캐시 라인 1에서의 네번째 워드를 시스템 물리적 메모리 페이지들(100)의 48 K 메모리 페이지라 한다.
마찬가지로, 캐시 라인 2에서의 워드들을 시스템 물리적 메모리 페이지들(100)의 4 K, 20 K, 36 K, 52 K 메모리 페이지들이라 한다. 캐시 라인 3의 워드들을 시스템 물리적 메모리 페이지들(100)의 8 K, 24 K, 40 K, 56 K 메모리 페이지들이라 한다. 캐시 라인 4의 워드들을 시스템 물리적 메모리 페이지들(100)의 12 K, 28 K, 44 K, 60 K 메모리 페이지들이라 한다. 이러한 구성은 당업자에 의해 이해될 수 있는 공지된 및 표준의 하드웨어 구현이다.
캐시 라인(150)은 레벨 1(L1) 캐시, 레벨 2(L2) 캐시, 레벨 3(L3) 캐시, 또는 임의의 다른 레벨 캐시일 수 있다. 본 발명은 임의의 특정 캐시 레벨에서의 동작으로 제한되지 않으며, 본 명세서에 논의된 예시적 구현들은 L2 및/또는 L3 캐시들에 관한 것이다. 이는 L2 및 L3 캐시들이 일반적으로 본 발명의 실시형태의 동작을 행하는 동일한 n-웨이 세트 연관성(n-way set associativity) 및 라인 사이즈들로 구성되기 때문이다(This is because L2 and L3 caches are typically configured with the same n-way set associativity and line sizes, which are conductive to operation of embodiments of the invention).
도 1에서, 우측 열은, 게스트 운영 체제 및/또는 관련 에뮬레이션 소프트웨어를 포함하는 애플리케이션에 캐시 라인들을 할당하기 위한 종래의 접근 방법을 나타낸다. 이러한 접근 방법은 특정 애플리케이션에 의한 연속적인 메모리 페이지 들의 이용을 최대로 하기 위해서 캐시 라인들을 할당하는 단계를 포함한다. 게스트 운영 체제의 하드웨어 리소스들을 종종 "파티션"이라 하기 때문에, 도 1은 3개의 가설 게스트 파티션(hypothetical guest partion; 110, 120, 130) 및 가설 컴퓨터 모니터(Virtual Machine Monitor; VMM) 파티션(140)으로의 메모리 할당을 나타낸다.
일반적으로, 가상 머신 기술은 컴퓨터의 하드웨어 리소스들을 게스트 운영 체제와 관련된 파티션들로 할당한다. 일부 리소스들은 개별의 파티션들에 전용(dedicate)된다. 나머지들은 공유되며, 일반적으로 시분할 방식(time-slice fashion)으로 공유된다. 하드웨어 리소스들의 할당 선택은 궁극적으로는 VMM와 같은 호스트에 의해 시행(enforce)된다. 본 명세서에 사용된 "호스트(host)"라는 용어는, 일반적으로 물리적 장치 하드웨어에 액세스하고 상기 물리적 장치 하드웨어 전반을 제어하는 소프트웨어를 말한다. VMM은 하이퍼바이저(hypervisor) 및 호스트 운영 체제 등과 같은 호스트이다. 메인 시스템 메모리는 상기 VMM에 의해 관리되는 하나의 하드웨어 리소스이다. 어떤 파티션들에 어떤 메모리 페이지들을 할당할지에 대한 선택은 VMM 자체 또는 이러한 작업을 주로하는(delegate) 서비스 파티션에 의해 이루어질 수 있다. 어느 경우에든, 이러한 할당을 시행하는 것은 VMM이다.
도 1에 도시된 바와 같이, 각각의 게스트에는 연속하는 메모리 페이지 세트를 포함하는 파티션이 할당될 수 있다. 예컨대, 파티션 A 메모리(110)는 0 K, 4 K, 8 K, 12 K 메모리 페이지들을 포함한다. 파티션 B 메모리(120)는 16 K, 20 K, 24 K, 28 K 메모리 페이지들을 포함한다. 파티션 C 메모리(130)는 32 K, 36 K, 40 K, 44 K 메모리 페이지들을 포함한다. VMM 메모리(140)는 48 K 메모리 페이지를 포함한다. 메모리 할당의 결과로서, 메모리 페이지들과 캐시 라인들을 연관시키는 음영부로부터 추론해 볼 수 있는 바와 같이, 각각의 게스트 운영 체제는 전체 4개의 캐시 라인들(1, 2, 3, 4)을 사용하고 있다. 이러한 예에서는 상기 VMM 메모리는 하나의 메모리 페이지만을 사용하고 있기 때문에, 캐시 라인(1)만을 사용하고 있다. 그러나, 그럼에도 불구하고, 상기 VMM 메모리로 사용되는 캐시 라인은 게스트 운영 체제와 공유되어 상기 VMM 메모리가 배경기술에 설명된 위협에 노출된다.
도 1은 파티션들 및 상기 VMM 메모리 자체로의 시스템 물리적 페이지들의 일반적이고도 순차적인 할당을 나타낸다. 이러한 기술을 사용하여, 파티션(A)에서의 메모리 액세스가 파티션들(B, C) 및 상기 VMM 메모리로부터 캐시들을 밀어낼 수(evict) 있다. 파티션(B)가 메모리에 암호화 테이블들을 보유한다면, 파티션(A)는 액세스를 추정할 수 있다. 이는 배경기술에서 설명된 보안 위협에 노출된 것이며, 다시 말하면, 하나의 파티션이 다른 파티션 또는 호스트의 메모리 액세스 거동을 관찰하여, 암호화 프로세싱에 관한 정보를 추정할 수 있어, 잠재적으로 개인 키의 비트가 드러날 수 있다.
도 1에 도시된 바와 같은 캐시 라인 공유의 하나의 부가적인 결과는, 다수의 실행 컨텍스트를 지닌 시스템 상에서 프로세서는 어떤 엔트리들(entries)이 그 컨텍스트에 대하여 유효한지를 알 수 있도록 캐시 엔트리들을 태그하여야만 한다는 것이다. 캐시 라인이 이의 현재 실행 컨텍스트와 관련 있는지 여부를 프로세서가 판정하는 경우, 캐시 라인이 관련된 페이지 디렉토리를 참조로 하여 각각의 캐시 엔트리에 대한 태그를 사용한다. 두 개의 실행 컨텍스트가 충돌 태그들(colliding tags)을 갖는다면, 그래서는 않되는 것이지만, 실행 컨텍스트에 대하여 캐시는 유효한 것으로 보일 수 있다.
도 1의 캐시 모델과 관련된 부정적인 성능 구현 중의 하나는, 멀티 프로세서 체제가 다양한 프로세서들의 캐시를 동기화하는 방법을 제공해야 한다는 것이다. 이는 하나의 프로세서가 메모리 위치를 읽어내고 이의 콘텐츠를 캐시할 때, 또 다른 프로세서가 상기 위치에 기입하여 상기 제1 프로세서의 캐시의 콘텐츠를 무효화시키기 위해 필요하다.
또한, 도 1에서, 다수의 프로세서들이 동시에 두 개 이상의 파티션들에서 실행될 수 있기 때문에 다수의 파티션들과 호스트 간에 캐시 라인들이 효율적으로 동시에 공유된다. 이들 메모리 읽기 및 쓰기는 각각의 다른 캐시 라인들을 무효로 할 수 있다. 파티션들이 다수의 리얼 CPU에서 동시에 실행될 수 있음에 따라, 상기 파티션들은 각각의 다른 캐시들을 계속해서 밀어낼 수 있다. 이는 캐시 스레싱(cache-thrashing)의 결과를 가져오며, 이로써, 각각의 파티션이 콜드(cold) 캐시들로 인하여 메인 시스템 메모리로부터 읽어내어져야 하며, 이에 따라서, 무효화된 다른 파티션들은, 메인 메모리로부터 읽어내어 앞서 읽어낸 것(reader)을 밀어 내야 하는 동일 캐시 라인들을 이용한다. 이러한 프로세스는 확인하지 않고 방치한다면, 시스템 성능에 심각한 영향을 미칠 수 있다.
도 2 및 도 3으로부터 알 수 있는 바와 같이, 본 발명은, 호스트(203) (도 2의 VMM) 또는, 파티션들로의 메모리 할당을 지정하는 권한을 지닌 대표(delegate)가 시스템 CPU(210, 220)의 메모리 캐시 레이아웃을 검사하고 메모리(230)를 파티션들로 할당하여, 다수의 게스트 운영 체제(201, 202) 및/또는 호스트(203)에 의한 캐시 라인 공유를 최소화 또는 완전히 회피하는 시스템 및 방법을 제공함으로써, 도 1를 참조로 하여 종래 기술에서 논의된 문제점뿐만 아니라 다수의 잠재적 성능 이득(gain)에 대한 해결안을 제공한다.
도 3을 간략히 살펴보면, 캐시 라인 공유가 회피되도록 매모리를 전략적으로 파티션들에 할당함으로써, 전체 파티션(A)의 메모리 액세스(310)가 하나의 캐시 라인, 여기서는 캐시 라인(1)에서 이루어진다. 캐시 라인(1)은 단일의 캐시 라인이거나 캐시 라인들의 세트일 수 있다. 결과적으로, 파티션(A) 판독 및 기입은 파티션(B, C) 또는 VMM 메모리의 캐시 성능을 저하시키지 않는다. 파티션(A) 또한 다른 파티션들 또는 VMM 메모리의 메모리 액세스 거동을 추정할 수 없다.
도 2는 매모리(230), 캐시(이 캐시는 적어도 2개의 캐시 라인, 예컨대 참조 부호 "221", "222"를 포함함)를 포함하는 복수의 게스트 운영 체제(201, 202)로의 하드웨어 액세스를 제공하는 시스템을 제공하며, 여기서, 각각의 캐시 라인은, 일정한 간격을 두고 이격되어 있는 복수의 메모리 페이지와 연관된다. 도 2에서, 캐시 라인(221)은 메모리 페이지(232, 234, 236, 238)와 연관된다. 캐시 라인(222)은 메모리 페이지(231, 233, 235, 237)와 연관된다. 그래서, 메모리(230)에서의 캐시 메모리 페이지가 하나 걸러마다 캐시 라인(221)과 연관되기 때문에, 캐시 라 인(221)과 연관된 메모리 페이지들에 대한 일정 간격은 2개이다. 마찬가지로, 메모리(230)에서의 캐시 메모리 페이지가 하나 걸러마다 캐시 라인(221)과 연관되기 때문에, 캐시 라인(222)은 2개의 일정한 간격을 두고 이격되어 있는 복수의 메모리 페이지와 연관된다. 그래서, 본 명세서에서 "일정 간격"은, 앞선 또는 후속하는 간격과 동일한 간격을 말한다.
또한, 도 2에서는 적어도 하나의 게스트(201)와, 적어도 하나의 게스트(201)에 의해 사용되는 전체 메모리 페이지들이 상기 적어도 2개의 캐시 라인(221 또는 222)의 제한된 서브세트와 연관되도록 상기 적어도 하나의 게스트(201)에 의해 사용되는 전체 메모리 페이지들을 상기 일정 간격으로 할당하도록 구성된 호스트(203)를 더 포함한다. 예컨대, 호스트(203)가 게스트(201)에 의해 사용되는 참조부호 "230"으로부터의 메모리 페이지들을 2개의 일정 간격으로 할당한다면, 게스트는 예컨대, 페이지들(232, 234, 236, 238)로부터 읽기만 또는 기입만 한다. 결과적으로, 게스트(201)에 의해 사용되는 전체 메모리 페이지들은 캐시 라인(221, 222)의 제한된 서브세트와 연관될 것이다. 본 예에서는, 상기 제한된 서브세트는 캐시 라인(221)만을 포함한다. 본 명세서에서 "제한된 서브세트"는, 활용가능한 캐시 라인들의 전체 갯수 미만인 서브세트를 말한다.
캐시 라인(221, 222)은 L2 캐시로 도시되어 있으나, 앞서 언급한 바와 같이, 본 발명은 어떠한 특정 레벨의 캐시로 한정되지 않는다. L3 캐시 또한 본 발명의 특정 실시형태에 대해 특히 적합한 것으로 생각된다.
캐시 라인(221, 222)이 프로세서(220)와 연관되는 실시형태에서, 적어도 하 나의 제2 게스트(202)로 하여금 상기 적어도 하나의 프로세서(220)에서 실행하도록 하는 컨텍스트 전환이 수행될 수 있다. 호스트(203)는 메모리 페이지들의 개별 세트, 예컨대 참조 부호 "231", "233", "235", "237"를 상기 제2 게스트(202)에 의한 용도로 할당하도록 구성될 수 있다. 이는 상기 제2 게스트(202)에 의해 사용되는 전체 메모리 페이지들이 적어도 2개의 캐시 라인(221 또는 222)의 제한된 서브세트와 연관되는 마찬가지의 결과가 된다. 이러한 경우에, 게스트(202)는 캐시 라인(222)으로 제한되고, 다른 캐시 라인은 게스트(201)에 의해 사용 중이다. 임의의 수의 게스트가 장치(200) 상에서 호스팅될 수 있으며, 호스트(203)는 별도 메모리 페이지 세트를 각각의 게스트에 의한 용도로 할당하도록 구성될 수 있다.
게스트(202)가 게스트(201)의 캐시 라인이 아닌 다른 캐시 라인(222)를 사용하도록 메모리를 할당하는 성능 이익(performance benefit)은, 게스트(202)가 참조 부호 "201"에 의해 캐시된 정보를 덮어쓰기(overwrite)하지 않으며, 마찬가지로, 참조 부호 "201"에 의해 메모리에 배치된 정보를 덮어쓰기하지 않는데에 있다. 컨텍스트 전환은 더 빠르고 더 적은 캐시 미스(miss)로 실행될 수 있다. 보안 이익은 상기한 종래 기술에서 논의된 보안 취약성(vulnerability)이 해결된다는데에 있다.
일 구성예에서, 장치(200)는 복수의 프로세서, 예컨대 프로세서(220) 외에 프로세서(210)을 더 포함할 수 있다. 도시된 바와 같이, 프로세서(210)와 관련된 캐시 라인(211, 212)은, 마찬가지로, 일정 간격으로 배치된 복수의 메모리 페이지들과 연관될 수 있다. 예컨대, 바로 앞에서와 같이, 캐시 라인(211)은 메모리 페 이지들(231, 233, 235, 237)과 연관될 수 있으며, 캐시 라인(212)은 메모리 페이지들(232, 234, 236, 238)과 연관될 수 있다.
상기 멀티 프로세서 실시형태는, 게스트(201)로 하여금 제1 프로세서(220)에서 제2 프로세서(210)로 전송되도록 해준다. 이렇게 실행된다면, 호스트(203)는 프로세서(220)에 할당될 때와 같이, 동일하게, 게스트(201)가 일반적인 메모리 페이지들 세트, 예컨대 참조부호 "232", "234", "236", "238"를 사용할 수 있게 해준다. 그래서, 멀티프로세서 시스템에서, 참조부호 "221"과 같은 게스트는, 게스트가 어떠한 프로세서에 전송되던지 간에, 예약된 캐시 라인 및 대응하는 메모리 페이지 세트를 효율적으로 가질 수 있다. 이는 캐시 미스(cache miss) 및 메모리 미스를 감소시키는 성능 이득의 결과가 된다. 보안 취약성 또한 감소된다.
여러 게스트(210, 202)에 참조부호 "230"으로부터의 메모리 페이지가 할당되어 게스트들이 캐시 라인의 제한된 서브세트로 제한됨에 따라, 호스트(203)는 마찬가지로 그 자신의 메모리 사용을 할당할 수 있다는 점이 강조되어야 한다. 그래서, 성능 및 보안 이득 또한 상기 호스트를 수반하는 컨텍스트 전환에서 실현될 수 있다. 그래서, 호스트(203)는 이 호스트(203)에 의해 사용되는 참조부호 "230"으로부터의 메모리 페이지들을 적절한 일정 간격으로 할당하여, 호스트(203)에 의해 사용되는 전체 메모리 페이지들이 상기 적어도 2개의 캐시 라인, 예컨대 참조부호 "221" 또는 "222" 중 적어도 하나와 연관되도록 구성될 수 있다.
다른 실시가능한 실시형태에서, 관련된 복수의 게스트에는, 관련된 복수의 게스트 외의 어떠한 게스트 없이 상기 관련된 복수의 게스트 간에 캐시 라인들을 공유하도록 메모리가 할당될 수 있다. 예컨대, 다수의 은행(bank)을 소유한 게스트를 위한 호스팅 서비스를 고려해 보자. 제1 은행은 그의 운영 체제들 간의 캐시 라인들 공유는 상관 없으나, 경쟁 은행과의 캐시 라인들 공유는 원치않는 경우가 있다. 이러한 상황에서, 각각의 관련된 게스트에 의한 용도의 메모리 페이지들의 별도 세트는 예약된 복수의 캐시 라인 중들 적어도 하나의 캐시 라인과 연관된다. 예컨대, 게스트(201, 202)가 공통으로 보유되는 시나리오를 고려해 보자. 또한, 도 2에는 도시되어 있지 않으며, 또한 도시되지 않은 몇몇 가설 메모리 페이지들을 말하는 다수의 추가 캐시 라인들이 활용가능하다고 가정해 보자. 게스트(201, 202)가 프로세서(210)에서 프로세서(220)로 컨텍스트 전환되고 필요에 따라 그 반대로 전환됨에 따라, 게스트(201, 202)는 임의의 메모리 페이지들(231 ~ 238)을 사용하도록 할당받을 수 있어, 캐시 라인들(211, 212, 221, 222)을 공유할 수 있다. 또한, 게스트(201, 202)는 관련되지 않은(unaffiliate) 게스트들이 그들의 캐시 라인들 또는 메모리 페이지들에 침입하지 않을 것을 보장받을 수 있다.
도 3은 본 발명의 캐시 모델과 도 1에 나타낸 종래의 캐시 모델 사이의 분명한 병렬 배치(juxtaposition)를 제공하도록 설계되어 있다. 상기 설명한 바와 같이, 참조부호 "300"으로부터의 메모리가 전략적으로 게스트들/파티션들에 할당되어 캐시 라인 공유가 회피될 수 있다. 그래서, 제1 게스트는 0 K, 16 K, 32 K, 48 K의 메모리 페이지들을 사용하도록 할당된다. 결과적으로, 제1 게스트는 참조부호 "350"에서의 캐시 라인들의 제한된 서브세트, 여기서는 캐시 라인(1)으로 이루어진 서브세트로 제한된다. 마찬가지로, 제2 게스트는 페이지들 4 K, 20 K, 36 K, 52 K 로 제한될 수 있으며, 제3 게스트는 8 K, 24K, 40 K, 56 K로 제한될 수 있으며, 호스트는 제4 캐시 라인과 연관된 페이지들, 여기서는 12 K 및/또는 28 K, 44 K, 60 K에 할당될 수 있다.
도 4는 제1 게스트에 의한 메모리 액세스를 관리하는 방법을 도시하며, 이 방법은 캐시 라인(401)과 연관된 복수의 메모리 페이지를 결정하는 단계와, 게스트 메모리 액세스(402)를 리맵핑하는 단계와, 상기 제1 게스트에 의해 사용되는 전체 메모리 페이지들이 캐시 라인(403)과 연관되도록, 상기 게스트 메모리 액세스를 상기 복수의 메모리 페이지 중의 적어도 하나의 메모리 페이지로 향하게 하는 단계를 포함한다. 옵션 단계 또한 도시되었는데, 이 옵션 단계는 컨텍스트 전환(404)을 수행할 때, 캐시 라인 및/또는 메모리 페이지들을 플러싱(flushing)하는 단계를 포함한다.
일 실시형태에서, 도 4의 전체 단계는 호스트에 의해 수행될 수 있다. 프로세서 상에서 게스트를 동작시키기 위해서 게스트를 이동하게(start) 하거나 전송할 때, 호스트는 게스트에 의해 사용되는 메모리 페이지들을 결정할 수 있다. 상기 게스트가 기동되면, 호스트는 단일 캐시 라인 또는 캐시 라인들의 제한된 서브세트와 관련된 임의의 페이지들을 선택할 수 있다. 다른안으로서, 호스트는 하나 이상의 관련 게스트에 의한 용도로 캐시 라인들/메모리 페이지들의 군에 따라 메모리 페이지들을 선택할 수 있다. 게스트가 앞서 이동하여 프로세서로 단순 컨텍스트 전환되었다면, 호스트는, 게스트가 앞서 사용하고 있었던 메모리 페이지들/캐시 라인들의 제한된 서브세트에 관한 저장된 정보를 참고하여, 상기 제한된 서브 세트를 계속 사용할 수 있다.
게스트가 실행되는 동안, 호스트 또는 호스트 제어 하의 메모리 서브시스템은 게스트 메모리 액세스(402)를 리맵핑할 수 있고, 이를 결정된 복수의 메모리 페이지들로 다시 향하게(redirect) 할 수 있다. 그래서, 게스트는 이의 메모리 액세스가 다시 향하고 있다는 사실을 전혀 모를 수 있다. 호스트는 게스트에게 메모리의 인공 뷰(artificial view)를 제시하여, 게스트는 캐시 라인들의 할당된 서브세트와 관련된 메모리의 일부를 볼수만 있게 구성될 수 있다.
캐시 라인들 또는 메모리 페이지들을 플러싱하는 옵션 단계(404)는 예컨대, 다수의 관련되지 않은 게스트들에 의해 캐시 라인 공유를 하도록 호스트가 강요될 때에 수행된다. 플러싱은 캐시 또는 관련 메모리 페이지들과 같은 메모리 위치 내의 모든 정보를 밀어내거나 및/또는 덮어쓰기 하는 것을 말한다.
도 4에 나타낸 방법은 도 5, 도 6 및 도 7에 나타낸 방법 단계들에 의해 보강될 수 있다. 예컨대, 도 5를 참조하면, 제1 컨텍스트 전환은 제1 게스트에서 제2 게스트(501)로 수행될 수 있다. 이후, 제2 게스트의 메모리 액세스는 제2 게스트에 대한 도 4의 단계들: 제2 캐시 라인과 연관된 제2의 복수의 메모리 페이지들을 결정하는 단계와, 제2의 게스트 메모리 액세스를 리맵핑하는 단계와, 제2 게스트에 의해 사용되는 전체 메모리 페이지들이 제2 캐시 라인과 연관되도록 상기 제2의 게스트 메모리 액세스를 적어도 하나의 상기 제2의 복수의 메모리 페이지로 향하게 하는 단계를 필수적으로 반복함으로써, 제2 캐시 라인(502)과 연관된 메모리 페이지들로 향할 수 있다.
도 6에 나타낸 바와 같은 다른 실시형태에서, 제1 기존의 게스트는 다른 프로세서로 전송된다. 기존의 게스트는, 현재 라이브(live)이어서 실행 중인 게스트를 말한다. 상기 게스트는 제2 프로세서(601)로 컨텍스트 전환될 수 있으며, 게스트 메모리 액세스는, 앞서 참조부호 "602"와 동일한 캐시 라인과 연관된 페이지들로 향할 수 있다.
도 4는 관련된 복수의 게스트(701), 예컨대, 동일 엔터티(entity)가 소유하는 복수의 게스트를 위하여 복수의 메모리 페이지를 예약하는 단계와, 임의의 관련된 게스트들로 하여금 임의의 예약된 캐시 라인들 또는 메모리 페이지들(702)을 사용하도록 하는 단계와 같은, 도 7에 도시된 단계에 의해 보강될 수 있다. 여기서, "예약된(reserved)"은 이러한 메모리 페이지들 또는 캐시 라인들이 예약된 상태를 유지하는 동안에 어떠한 관련되지 않은 게스트들에 의해서도 사용될 수 없다는 것을 의미하는 것으로 이해되어야 한다. 그러나, 실시형태에 따라서, 호스트는 예약된 메모리 페이지들 및 캐시 라인들의 사용이 허용되거나 허용되지 않을 수 있다.
본 명세서에 명시적으로 설명된 특정 구현 이외에, 본 명세서에 개시된 상세를 고려하여 다른 양태 및 구현이 있을 수 있다는 것은 당업자에게 자명한 것이다. 상기 상세 및 설명된 구현은 오직 예로서 고려되어야 하며, 이하의 청구범위 및 요지가 진정한 것이다.

Claims (20)

  1. 복수의 게스트 운영 체제로의 하드웨어 액세스를 제공하는 시스템으로서,
    메모리(230);
    적어도 2개의 캐시 라인(221, 222)을 포함하는 캐시 - 각각의 캐시 라인은, 일정한 간격을 두고 이격되어 있는 복수의 메모리 페이지(231 ~ 238)와 관련됨 -;
    적어도 하나의 게스트(201) 및;
    상기 적어도 하나의 게스트(201)에 의해 사용되는 메모리 페이지들(231 ~ 238)을 상기 일정한 간격으로 할당하여, 상기 적어도 하나의 게스트(201)에 의해 사용되는 전체 메모리 페이지들(231, 233, 235, 237)이 상기 적어도 2개의 캐시 라인(221, 222)의 제한된 서브세트(222)와 관련되도록 하는 호스트(203);
    를 포함하는, 복수의 게스트 운영 체제로의 하드웨어 액세스를 제공하는 시스템.
  2. 제1항에 있어서,
    상기 캐시는 레벨 2 캐시인, 복수의 게스트 운영 체제로의 하드웨어 액세스를 제공하는 시스템.
  3. 제1항에 있어서,
    적어도 하나의 프로세서(220)를 더 포함하며, 적어도 하나의 제2 게스 트(202)로 하여금 상기 적어도 하나의 프로세서(220)에서 실행되도록 컨텍스트 전환(context switch)이 수행될 수 있으며, 상기 호스트(203)는 상기 제2 게스트(202)에 의한 용도로 메모리 페이지들(232, 234, 236, 238)의 별도 세트를 할당하도록 구성되는, 복수의 게스트 운영 체제로의 하드웨어 액세스를 제공하는 시스템.
  4. 제1항에 있어서,
    복수의 프로세서(210, 220)를 더 포함하며,
    상기 적어도 하나의 게스트(201)는 제1 프로세서(210)로부터 제2 프로세서(220)로 전송될 수 있는, 복수의 게스트 운영 체제로의 하드웨어 액세스를 제공하는 시스템.
  5. 제1항에 있어서,
    상기 적어도 하나의 게스트(201)는 복수의 게스트를 포함하며, 상기 호스트(203)는 각각의 게스트에 의한 용도로 메모리 페이지들(231 ~ 238)의 별도 세트를 할당하도록 구성되는, 복수의 게스트 운영 체제로의 하드웨어 액세스를 제공하는 시스템.
  6. 제5항에 있어서,
    상기 복수의 게스트는 관련된 복수의 게스트이며, 각각의 관련된 게스트에 의한 용도의 상기 메모리 페이지들의 별도 세트는 복수의 예약된 캐시 라인 중 적어도 하나의 캐시 라인과 연관되는, 복수의 게스트 운영 체제로의 하드웨어 액세스를 제공하는 시스템.
  7. 제1항에 있어서,
    상기 호스트(203)는 상기 호스트(203)에 의해 사용되는 메모리 페이지들(231 ~ 238)을 상기 일정한 간격으로 할당하여, 상기 호스트(203)에 의해 사용되는 전체 메모리 페이지들(231 ~ 238)이 상기 적어도 2개의 캐시 라인(221, 222)의 제한된 서브세트와 연관되도록 더 구성되는, 복수의 게스트 운영 체제로의 하드웨어 액세스를 제공하는 시스템.
  8. 제1 게스트(201)에 의한 메모리(230)에의 액세스를 관리하는 방법으로서,
    캐시 라인들(212, 222)의 제한된 서브세트와 관련된 복수의 메모리 페이지(231, 233, 235, 237)를 결정하는 단계;
    게스트(201)에 의한 메모리(230)에의 액세스를 리맵핑(remapping)하는 단계 및;
    상기 제1 게스트(201)에 의해 사용되는 전체 메모리 페이지들(231, 233, 235, 237)이 캐시 라인들(212, 222)의 상기 제한된 서브세트와 연관되도록, 상기 게스트(201)에 의한 메모리(230)에의 액세스를 상기 복수의 메모리 페이지(231, 233, 235, 237) 중의 적어도 하나로 향하게 하는 단계;
    를 포함하는, 제1 게스트(201)에 의한 메모리(230)에의 액세스를 관리하는 방법.
  9. 제8항에 있어서,
    상기 제1 게스트(201)로부터 제2 게스트(202)로 제1 컨텍스트 전환을 수행하는 단계를 더 포함하는, 제1 게스트(201)에 의한 메모리(230)에의 액세스를 관리하는 방법.
  10. 제9항에 있어서,
    캐시 라인들(211, 221)의 제2의 제한된 서브세트와 관련된 제2의 복수의 메모리 페이지들(232, 234, 236, 238)를 결정하는 단계;
    제2 게스트(202)에 의한 메모리(230)에의 액세스를 리맵핑하는 단계 및;
    상기 제2 게스트(202)에 의해 사용되는 전체 메모리 페이지들(232, 234, 236, 238)이 캐시 라인들(211, 221)의 상기 제2의 제한된 서브세트와 연관되도록, 상기 제2 게스트(202)에 의한 메모리(230)에의 액세스를 상기 제2의 복수의 메모리 페이지들(232, 234, 236, 238) 중의 적어도 하나로 향하게 하는 단계;
    를 더 포함하는, 제1 게스트(201)에 의한 메모리(230)에의 액세스를 관리하는 방법.
  11. 제9항에 있어서,
    다른 프로세서(210)에서는 제1 컨텍스트 전환이 아닌 제2 컨텍스트 전환을 수행함으로써, 상기 제1 게스트(201)가 상기 다른 프로세서(210)로 전송되게 하는 단계를 더 포함하는, 제1 게스트(201)에 의한 메모리(230)에의 액세스를 관리하는 방법.
  12. 제11항에 있어서,
    상기 제1 게스트(201)에 의해 사용되는 전체 메모리 페이지들(231, 233, 235, 237)이 캐시 라인들(212, 222)의 상기 제한된 서브세트와 연관된 상태로 남아 있도록, 상기 제1 게스트(201)에 의한 메모리(230)에의 액세스를 동일한 복수의 메모리 주소들(231, 233, 235, 237)로 향하게 하는 단계를 더 포함하는, 제1 게스트(201)에 의한 메모리(230)에의 액세스를 관리하는 방법.
  13. 제8항에 있어서,
    캐시 라인들(212, 222)의 상기 제한된 서브세트는 레벨 2 캐시에 있는, 제1 게스트(201)에 의한 메모리(230)에의 액세스를 관리하는 방법.
  14. 제8항에 있어서,
    관련된 복수의 게스트를 위하여 복수의 메모리 페이지를 예약하는 단계를 더 포함하는, 제1 게스트(201)에 의한 메모리(230)에의 액세스를 관리하는 방법.
  15. 제14항에 있어서,
    상기 관련된 복수의 게스트들은 동일 엔터티(entity)에 의해 소유되는 것으로 관련되어 있는, 제1 게스트(201)에 의한 메모리(230)에의 액세스를 관리하는 방법.
  16. 제14항에 있어서,
    관련된 복수의 게스트들을 위한 상기 복수의 메모리 페이지들은 복수의 캐시 라인과 연관되는, 제1 게스트(201)에 의한 메모리(230)에의 액세스를 관리하는 방법.
  17. 제16항에 있어서,
    상기 복수의 캐시 라인 중 임의의 라인과 관련된 메모리 페이지들은 상기 관련된 복수의 게스트들 중 임의의 게스트에 의해 사용될 수 있는, 제1 게스트(201)에 의한 메모리(230)에의 액세스를 관리하는 방법.
  18. 제8항에 있어서,
    컨텍스트 전환을 수행하기 이전에, 캐시 라인들의 상기 제한된 서브세트를 플러싱(flushing)하는 단계를 더 포함하는, 제1 게스트(201)에 의한 메모리(230)에의 액세스를 관리하는 방법.
  19. 제8항에 있어서,
    컨텍스트 전환을 수행하기 이전에, 상기 복수의 메모리 페이지를 플러싱하는 단계를 더 포함하는, 제1 게스트(201)에 의한 메모리(230)에의 액세스를 관리하는 방법.
  20. 복수의 게스트 운영 체제로의 하드웨어 액세스를 제공하는 시스템으로서,
    복수의 프로세서(210, 220);
    복수의 캐시 라인들(221, 222)을 포함하는 레벨 2 캐시 - 각각의 캐시 라인은, 일정한 간격을 두고 이격되어 있는 복수의 메모리 페이지(231 ~ 238)와 연관됨 -;
    메모리(230);
    복수의 게스트 운영 체제(201, 202) 및;
    게스트 운영 체제(201)에 의해 사용되는 메모리 페이지들(231 ~ 238)을 상기 일정한 간격으로 할당하여, 상기 게스트 운영 체제(201)에 의해 사용되는 전체 메모리 페이지들(231, 233, 235, 237)이 단일의 캐시 라인(222)과 연관되도록 구성되는 호스트(203);
    를 포함하는 복수의 게스트 운영 체제로의 하드웨어 액세스를 제공하는 시스템.
KR1020097000883A 2006-07-21 2007-07-20 가상 컴퓨터에서 캐시 라인 공유를 회피하는, 하드웨어 액세스 제공 시스템 및 액세스 관리 방법 KR20090035523A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/490,785 US7549022B2 (en) 2006-07-21 2006-07-21 Avoiding cache line sharing in virtual machines
US11/490,785 2006-07-21

Publications (1)

Publication Number Publication Date
KR20090035523A true KR20090035523A (ko) 2009-04-09

Family

ID=38957085

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097000883A KR20090035523A (ko) 2006-07-21 2007-07-20 가상 컴퓨터에서 캐시 라인 공유를 회피하는, 하드웨어 액세스 제공 시스템 및 액세스 관리 방법

Country Status (5)

Country Link
US (1) US7549022B2 (ko)
KR (1) KR20090035523A (ko)
CN (1) CN101490654B (ko)
TW (1) TW200813719A (ko)
WO (1) WO2008011135A1 (ko)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7984240B2 (en) * 2008-03-04 2011-07-19 International Business Machines Corporation Memory compression implementation in a system with directly attached processor memory
US8380916B2 (en) 2009-06-04 2013-02-19 Micron Technology, Inc. Control of page access in memory
CN101825153A (zh) * 2010-03-26 2010-09-08 北京工业大学 无轴防泄漏粘滞阻尼器
US8738962B2 (en) 2010-11-17 2014-05-27 International Business Machines Corporation Memory mirroring with memory compression
US20120137062A1 (en) * 2010-11-30 2012-05-31 International Business Machines Corporation Leveraging coalesced memory
US8874823B2 (en) 2011-02-15 2014-10-28 Intellectual Property Holdings 2 Llc Systems and methods for managing data input/output operations
US8996807B2 (en) 2011-02-15 2015-03-31 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a multi-level cache
US9201677B2 (en) 2011-05-23 2015-12-01 Intelligent Intellectual Property Holdings 2 Llc Managing data input/output operations
US9003104B2 (en) 2011-02-15 2015-04-07 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a file-level cache
US9116812B2 (en) 2012-01-27 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a de-duplication cache
US9336147B2 (en) * 2012-06-12 2016-05-10 Microsoft Technology Licensing, Llc Cache and memory allocation for virtual machines
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
US8838902B2 (en) * 2012-10-15 2014-09-16 International Business Machines Corporation Cache layer optimizations for virtualized environments
US9015523B2 (en) 2012-12-20 2015-04-21 Intel Corporation Memory allocation for virtual machines using memory map
US9842053B2 (en) 2013-03-15 2017-12-12 Sandisk Technologies Llc Systems and methods for persistent cache logging
WO2015139195A1 (en) * 2014-03-18 2015-09-24 Dalian University Of Technology Countering attacks on cache
US9767041B2 (en) * 2015-05-26 2017-09-19 Intel Corporation Managing sectored cache
US10423418B2 (en) 2015-11-30 2019-09-24 International Business Machines Corporation Method for maintaining a branch prediction history table
US9846652B2 (en) * 2016-03-31 2017-12-19 Intel Corporation Technologies for region-biased cache management
US10489296B2 (en) 2016-09-22 2019-11-26 International Business Machines Corporation Quality of cache management in a computer
US10733096B2 (en) 2017-11-22 2020-08-04 Samsung Electronics Co., Ltd. System and method for frame buffer
US10684857B2 (en) 2018-02-01 2020-06-16 International Business Machines Corporation Data prefetching that stores memory addresses in a first table and responsive to the occurrence of loads corresponding to the memory addresses stores the memory addresses in a second table

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5675763A (en) 1992-07-15 1997-10-07 Digital Equipment Corporation Cache memory system and method for selectively removing stale aliased entries
US6195674B1 (en) * 1997-04-30 2001-02-27 Canon Kabushiki Kaisha Fast DCT apparatus
US6901493B1 (en) * 1998-02-24 2005-05-31 Adaptec, Inc. Method for protecting data of a computer system
JP2003036169A (ja) * 2001-07-25 2003-02-07 Nec Software Tohoku Ltd 複数の小規模プロセッサによって並列処理を行なうシングルチップマイクロプロセッサ
US6944719B2 (en) 2002-05-15 2005-09-13 Broadcom Corp. Scalable cache coherent distributed shared memory processing system
EP1503284A1 (en) * 2003-08-01 2005-02-02 Hewlett-Packard Development Company, L.P. Data processing system and method
US7506198B2 (en) * 2003-08-11 2009-03-17 Radix Israel, Ltd. Protection and recovery system and automatic hard disk drive (HDD) instant recovery
US7136967B2 (en) * 2003-12-09 2006-11-14 International Business Machinces Corporation Multi-level cache having overlapping congruence groups of associativity sets in different cache levels
US20050132364A1 (en) * 2003-12-16 2005-06-16 Vijay Tewari Method, apparatus and system for optimizing context switching between virtual machines
US7421533B2 (en) * 2004-04-19 2008-09-02 Intel Corporation Method to manage memory in a platform with virtual machines

Also Published As

Publication number Publication date
CN101490654A (zh) 2009-07-22
US20080022048A1 (en) 2008-01-24
US7549022B2 (en) 2009-06-16
CN101490654B (zh) 2013-06-19
TW200813719A (en) 2008-03-16
WO2008011135A1 (en) 2008-01-24

Similar Documents

Publication Publication Date Title
US7549022B2 (en) Avoiding cache line sharing in virtual machines
TWI798370B (zh) 非暫時性電腦可讀取儲存媒體以及用於在裝置中存取資料的系統與方法
Qureshi New attacks and defense for encrypted-address cache
US10706147B1 (en) Mitigating side-channel attacks via shared cache
EP1898311B1 (en) Method and apparatus for preventing software side channel attacks
Maurice et al. C5: cross-cores cache covert channel
US20190004961A1 (en) Memory type which is cacheable yet inaccessible by speculative instructions
US7870336B2 (en) Operating system protection against side-channel attacks on secrecy
US8341356B2 (en) Protected cache architecture and secure programming paradigm to protect applications
US10049048B1 (en) Method and system for using processor enclaves and cache partitioning to assist a software cryptoprocessor
US10255069B2 (en) Cleared memory indicator
GB2509755A (en) Partitioning a shared cache using masks associated with threads to avoiding thrashing
US10860215B2 (en) Delay masking action for memory access requests
Yan et al. Secdir: a secure directory to defeat directory side-channel attacks
US10868665B1 (en) Mitigating timing side-channel attacks by obscuring accesses to sensitive data
US11061829B2 (en) Prefetch support with address space randomization
Chen et al. Secure in-cache execution
Saileshwar et al. Bespoke cache enclaves: Fine-grained and scalable isolation from cache side-channels via flexible set-partitioning
WO2019005975A1 (en) TYPE OF MEMORY THAT CAN BE HANGED WHILE INACCESSIBLE BY SPECULATIVE INSTRUCTIONS
Ramkrishnan et al. First time miss: Low overhead mitigation for shared memory cache side channels
Liu et al. H-oram: A cacheable oram interface for efficient i/o accesses
CN110889147B (zh) 一种利用填充缓存抵御Cache边信道攻击的方法
US11972034B1 (en) Hardware-assisted obscuring of cache access patterns
US11232034B2 (en) Method to enable the prevention of cache thrashing on memory management unit (MMU)-less hypervisor systems
Mukhtar et al. IE-Cache: Counteracting Eviction-Based Cache Side-Channel Attacks Through Indirect Eviction

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid