[go: up one dir, main page]

KR101746734B1 - 가상 처리 시스템에서 어드레스 맵핑 - Google Patents

가상 처리 시스템에서 어드레스 맵핑 Download PDF

Info

Publication number
KR101746734B1
KR101746734B1 KR1020127020208A KR20127020208A KR101746734B1 KR 101746734 B1 KR101746734 B1 KR 101746734B1 KR 1020127020208 A KR1020127020208 A KR 1020127020208A KR 20127020208 A KR20127020208 A KR 20127020208A KR 101746734 B1 KR101746734 B1 KR 101746734B1
Authority
KR
South Korea
Prior art keywords
identifier
search key
entry
selection
virtual
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
KR1020127020208A
Other languages
English (en)
Other versions
KR20130048191A (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 KR20130048191A publication Critical patent/KR20130048191A/ko
Application granted granted Critical
Publication of KR101746734B1 publication Critical patent/KR101746734B1/ko
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • 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]
    • 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
    • G06F12/1063Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently virtually addressed
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned system

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

처리 시스템은 하이퍼바이저에 의해 관리되는 복수의 가상 기계를 구현한다. 각 가상 기계는 하나 이상의 대응하는 게스트 운영 시스템(OS) 중에서 실행하기 위한 환경을 제공한다. 하이퍼바이저 그 자체뿐만 아니라 각 게스트 OS는 대응하는 "WorldID"로 식별된 연관된 어드레스 공간을 구비한다. 나아가, 각 가상 기계와 하이퍼바이저는 대응하는 ASID로 식별된 다중 하위 레벨의 어드레스 공간을 관리할 수 있다. 처리 시스템의 어드레스 변환 논리는 현재 어드레스 공간의 WorldID 및 ASID 문맥을 원래의 식별자보다 더 적은 수의 비트를 가지는 대응하는 WorldID 및 ASID 검색 키로 변환한다. 그 결과 WorldID 및 ASID 검색 키는 하나 이상의 TLB 룩업을 수행하는데 사용되어 WorldID/ASID 조합으로 표현되는 특정 어드레스 공간과 관련된 어드레스 맵핑 정보를 획득한다.

Description

가상 처리 시스템에서 어드레스 맵핑{ADDRESS MAPPING IN VIRTUALIZED PROCESSING SYSTEM}
본 발명은 일반적으로 메모리 관리에 관한 것으로, 보다 상세하게는 가상 메모리 어드레스에서 물리적 메모리 어드레스로 변환하는 것에 관한 것이다.
처리 시스템은 일반적으로 대응하는 가상 어드레스 공간에 있는 가상 어드레스들이 메모리 위치의 물리적 어드레스로 맵핑되도록 하는 가상 어드레스 구조와 페이지 테이블과 변환 룩어사이드 버퍼(translation lookaside buffer: TLB)의 사용을 통해 입력/출력(IO)하는 인터페이스를 사용한다. 프로세서의 가상화의 도래는 처리 시스템 내에 구현될 수 있는 서로 다른 가상 어드레스 공간의 수 및 구현된 가상 기계들 중에서 효과적인 분리(isolation)를 제공하려는 요구로 인하여 이 가상 어드레스에서 물리적 어드레스로의 맵핑을 복잡하게 하였다. 처리 시스템은 대응하는 가상 어드레스 공간을 표현하는 식별자를 사용하여 TLB 태그 형성을 지원할 수 있다. 이들 식별자는 종종 수 십 비트를 구비하여 이 사이즈의 검색을 처리하는데 요구되는 TLB 히트 논리(hit logic)는 일반적으로 구현하기에는 너무 엄청나게 복잡하다. 종래의 가상 처리 시스템은 그리하여 종종 소프트웨어의 제어 하에서 이들 어드레스 맵핑을 유지하고 구현하는데 요구되는 상당한 오버헤드를 희생하고 소프트웨어에 기반한 어드레스 맵핑을 사용한다.
본 개시내용은 첨부 도면을 참조하여 더 잘 이해될 수 있을 것이고 그 다수의 특징과 장점은 이 기술 분야에 통상의 지식을 가진 자에게는 명백하게 이해될 수 있을 것이다.
도 1은 본 개시내용의 적어도 하나의 실시예에 따라 하드웨어 기반 메모리 맵핑을 구비하는 가상 처리 시스템을 도시한 도면;
도 2는 본 개시내용의 적어도 하나의 실시예에 따라 상대적으로 긴 어드레스 공간 식별자로부터 상대적으로 짧은 검색 키를 생성하기 위한 검색 키 테이블의 예시적인 구현예를 도시한 도면;
도 3은 본 개시내용의 적어도 하나의 실시예에 따라 가상 처리 시스템에서 어드레스 변환을 하기 위한 예시적인 방법을 도시하는 흐름도;
도 4는 본 개시내용의 적어도 하나의 실시예에 따라 어드레스 공간 식별자에 기초하여 검색 키를 사용하는 예시적인 TLB 룩업을 도시한 도면.
도 1 내지 도 4는 가상 처리 환경에서 가상 어드레스에서 물리적 어드레스로 변환을 하기 위한 예시적인 기술을 도시한다. 적어도 하나의 실시예에서, 처리 시스템은 하이퍼바이저(hypervisor)(이는 또한 가상 기계 관리자 또는 VMM이라고도 알려져 있음)에 의해 관리되는 복수의 가상 기계를 구현하는 하나 이상의 프로세서를 구비한다. 각 가상 기계는 하나 이상의 가상 프로세서에 대한 안전하고 분리된 하드웨어 에뮬레이션(emulation) 환경을 제공하며, 여기서 각 가상 프로세서는 대응하는 게스트(guest) 운영 시스템(OS)을 실행한다. 하이퍼바이저 그 자체뿐만 아니라 각 게스트 OS/가상 프로세서는 연관된 어드레스 공간을 구비한다. 나아가, 각 가상 기계와 하이퍼바이저는 가상 기계의 게스트 OS의 제어 하에서 실행되는 특정 소프트웨어 애플리케이션과 연관된 어드레스 공간과 같은 다중 하위 레벨 어드레스 공간을 관리할 수 있다. 각 게스트 OS는 일반적으로 본 명세서에서 "WorldID"라고 언급되는 특정 식별자를 사용하여 식별되며, 게스트 OS에 의해 관리되는 하위 레벨 어드레스 공간은 본 명세서에서 "어드레스 공간 식별자" 또는 "ASID"라고 언급되는 특정 식별자를 사용하여 식별된다. 일반적으로, WorldID 및 ASID는 길이가 수 십 비트이고, 이는 너무 커서 TLB 히트 논리에 의해 직접 사용될 수 없다. 따라서, 적어도 하나의 실시예에서, 후술되는 처리 시스템의 어드레스 변환 논리는 처리 시스템의 현재 가상 어드레스 공간 상황(context)과 연관된 WorldID 및 ASID를, 원래의 식별자보다 더 적은 수의 비트를 가지고 있어 덜 복잡한 TLB 히트 논리를 요구하는 대응하는 WorldID 및 ASID 검색 키로 변환한다. 그 결과 WorldID 검색 키와 ASID 검색 키는 버퍼링되고 하나 이상의 TLB 룩업을 수행하는데 사용되어 WorldID/ASID의 조합으로 표현되는 특정 어드레스 공간과 관련된 어드레스 맵핑 정보를 얻게 한다. 어드레스 맵핑 정보는 이후 메모리 액세스 요청과 연관된 가상 어드레스를 대응하는 물리적 어드레스로 변환하는데 사용된다.
도 1은 본 개시내용의 적어도 하나의 실시예에 따라 하드웨어에 기반하여 가상 어드레스에서 물리적 어드레스로의 맵핑을 구현하는 가상 처리 시스템(100)을 도시한다. 도시된 예에서, 처리 시스템(100)은 하나 이상의 프로세서(102)와 메모리 서브시스템(104)을 포함한다. 프로세서(102)는 하나 이상의 프로세서 코어(106), 캐시 서브시스템(108) 및 메모리 관리 유닛(MMU)(110)을 포함한다. 메모리 서브시스템(104)은 프로세서 코어(106)와 캐시 서브시스템(108)에 하나 이상의 버스, 크로스바 스위치 또는 이들의 조합을 통해 연결된다. 메모리 서브시스템(104)은 시스템 메모리, 외부 캐시, 입력/출력(I/O) 디바이스, 및 처리 시스템(100)의 총 어드레스 공간 내에 있는 하나 이상의 물리적 어드레스가 할당된 다른 성분들을 포함할 수 있다. 일 실시예에서, 프로세서(102)의 성분들 중 일부나 전부는 처리 디바이스의 전기적 및 전자적 설계를 생성하기 위해 동기화된 프로세서(102)의 기능을 한정하는 레지스터-전송-레벨(register-transfer-level: RTL) 또는 베릴로그(Verilog) 명령 세트에 기초하여 설계될 수 있다.
처리 시스템(100)은 다중 게스트 운영 시스템(OS)의 구현을 제어하는 하이퍼바이저(112)(이는 또한 가상 기계 관리자 또는 VMM로도 알려져 있음)를 구현하는 가상 소프트웨어 또는 가상 펌웨어의 실행을 통해 하나 이상의 소프트웨어 기반 가상 기계를 구현하기 위하여 가상화를 지원하도록 구성된다. 하이퍼바이저(112)는 각 게스트 OS 및 관련된 애플리케이션의 동작들을 안전하게 분리하기 위하여 페이지 테이블의 변경과 같은 특정 동작을 인터셉트하고 에뮬레이팅하는 것에 의해 프로세서 시스템(100)의 처리 하드웨어(114)를 완전히 제어하는 외양을 각 게스트 OS에 제공한다. 따라서, 게스트 OS의 실행과 이 게스트 OS에 의해 제어되는 임의의 대응하는 애플리케이션은 "가상 기계"라고 언급된다. 도 1은 하이퍼바이저(112)가 4개의 가상 기계, 즉 가상 기계(116, 117, 118. 119)(이는 또한 각각 VM1, VM2, VM3, 및 VM4라고 언급된다)를 관리하는 일례를 도시한다. 예시를 용이하게 하기 위하여, 각 가상 기계(116)는 단일 OS를 지원하는 것으로 도시된다. 가상 기계(116)는 애플리케이션(122, 123)(AS1, AS2)을 가지는 게스트 OS(121)을 실행하고, 가상 기계(117)는 애플리케이션(125)(AS3)을 가지는 게스트 OS(124)를 실행하며, 가상 기계(118)는 게스트 OS(126)를 실행하며, 가상 기계(119)는 애플리케이션(128, 129)(AS4, AS5)을 가지는 게스트 OS(127)를 실행한다. 다른 실시예에서, 각 가상 기계는 다중 게스트 운영 시스템을 지원할 수 있다.
가상화의 공통적인 목표는 단일 처리 디바이스로 하여금 운영 시스템과 그 연관된 소프트웨어 애플리케이션 사이에 안전하고 자원이 보장된 분리를 유지하면서 다중 운영 시스템을 실행하게 하는 것이다. 이러한 분리를 구현하기 위하여, 서로 다른 가상 어드레스 공간은 게스트 OS가 액세스 허가된 특정 메모리 위치를 제어하기 위하여 서로 다른 게스트 운영 시스템/가상 기계에 사용된다. 각 게스트 OS는 메모리 서브시스템(104)에 대해 자기 자신의 "world"에서 동작하며, 이에 따라 각 게스트 OS에는 본 명세서에서 "WorldID"라고 언급된 고유한 식별자가 할당된다. 나아가, 종종 주어진 OS 환경 내에서 애플리케이션들을 분리하는 것이 유리하며, 이에 따라 각 게스트 OS는 게스트 OS나 이 게스트 OS에 의해 지원되는 소프트웨어 애플리케이션의 특정 커널(kernel) 동작과 같은 게스트 OS에 의해 지원되는 특정 기능에 서로 다른 가상 어드레스 공간을 할당할 수 있다. 예시를 위하여, 애플리케이션(122, 123)은 각각 게스트 OS(121)에 의해 할당된 별도의 어드레스 공간에서 동작하거나 또는 게스트 OS(121)는 애플리케이션(122, 123)에 동일한 어드레스 공간을 구현할 수 있다. 처리 시스템(100)은 본 명세서에서 "어드레스 공간 식별자" 또는 "ASID"라고 언급된 고유한 식별자를 게스트 OS에 의해 관리되는 각 가상 어드레스 공간과 연관시킨다. 그리하여, 특정 WorldID 및 특정 ASID의 조합은 대응하는 페이지 테이블(page table) 또는 페이지 테이블 세트를 식별하며, 이는 특정 WorldID 및 ASID와 연관된 OS나 애플리케이션에 의해 생성된 가상 어드레스를 대응하는 물리적 어드레스로 변환하는데 사용된다.
예시의 용이를 위하여, MMU(110)가 구성되고 이 가상 어드레스에서 물리적 어드레스로의 변환을 제공하며 그렇지 않은 경우 서로 다른 가상 기계(116 내지 119) 내에서 개시된 메모리 액세스 요청을 용이하게 하는 실시예가 기술된다. 그러나, 다른 실시예에서, 본 명세서에서 언급된 어드레스 변환 기술은 처리 시스템(100)의 다른 성분들에 의해 구현될 수 있다. 예를 들어, 기술된 어드레스 변환 기술은 캐시 서브시스템(108)의 TLB 논리(111)에 의해 또는 명령 캐시(미도시)의 TLB 논리에 의해 구현될 수 있다.
일 실시예에서, MMU(110)는 하나 이상의 페이지 테이블(130), 변환 룩어사이드 버퍼(TLB)(132), 검색 키 테이블(134, 136) 세트 및 하드웨어 제어기(138)를 포함한다. 각 페이지 테이블(130)은 특정 가상 어드레스 공간의 가상 어드레스와 그 대응하는 물리적 어드레스 사이에 맵핑을 표현하는 정보를 저장한다. TLB(132)는 처리 시스템(100)에 의해 최근에 사용된 가상 어드레스에서 물리적 어드레스로의 맵핑을 캐시(cache)한다. 검색 키 테이블(134, 136)은 아래에서 상세히 설명되는 바와 같이 가상 기계(116 내지 119)에 사용되는 WorldID 및 ASID로부터 TLB(132)의 TLB 히트 논리에 대한 검색 키를 생성하는데 사용된다.
하드웨어 제어기(138)는 메모리 서브시스템(104)에 대한 액세스를 관리하도록 동작한다. 가상 기계가 메모리 맵핑된 위치에 액세스를 시도할 때, 하이퍼바이저(112)는 요청된 메모리 액세스 동작(142)을 수행하기 위하여 MMU(110)에 의해 처리하기 위해 메모리 액세스 요청(140)을 개시한다. 메모리 액세스 요청(140)은 일반적으로 해당 메모리 위치의 가상 어드레스를 포함하고 이 메모리 액세스를 개시한 가상 기계의 WorldID를 포함하거나 이와 연관된다. 나아가, 메모리 액세스 요청(140)은 또한 메모리 액세스를 개시한 애플리케이션이나 기능과 연관된 ASID를 포함하거나 이와 연관된다. 일 실시예에서, x86 기반 아키텍처에서 발견되는 제어 레지스터(CR3)는 주어진 프로세서 코어에 대해 현재 ASID를 저장하는데 사용되며, 이에 따라 ASID는 예를 들어 제어 레지스터(CR3)에 저장된 비트의 전체나 일부를 포함할 수 있다. WorldID 또는 이 World와 ASID의 조합은 메모리 액세스 요청(140)으로 공급되는 가상 어드레스와 연관된 특정 가상 어드레스 공간을 식별한다. 따라서, 하드웨어 제어기(138)는 가상 어드레스를 대응하는 물리적 어드레스로 변환하는데 사용될 특정 가상 어드레스에서 물리적 어드레스로의 변환을 식별하기 위하여 WorldID 및 ASID를 사용한다. 하드웨어 제어기(138)는 지시된 어드레스 변환을 수행하며, 이 지시된 메모리 위치에 액세스하기 위하여 메모리 서브시스템(104)을 지시하기 위하여 메모리 액세스 동작(142)의 일부로서 최종 물리적 어드레스를 메모리 서브시스템(104)에 제공한다.
언급된 바와 같이, 각 페이지 테이블(130)은 가상 어드레스 공간의 가상 어드레스와 그 대응하는 물리적 어드레스 사이에 특정 맵핑을 제공하기 위하여 특정 가상 어드레스 공간에 대응한다. 페이지 테이블(130)에 직접 액세스할 때 상대적으로 많은 지연이 있으므로, 하드웨어 제어기(138)는 TLB(132)를 사용하여 최근에 사용된 가상-물리적 맵핑을 캐시한다. 메모리 액세스 요청(140)을 위해 가상-물리적 어드레스 변환을 수행할 때, 하드웨어 제어기(138)는 먼저 TLB(132)를 체크하여 TLB(132)가 이미 메모리 액세스 요청(140)에 필요한 특정 가상-물리적 맵핑을 포함하고 있는지 여부를 결정한다. 일 실시예에서, 하드웨어 제어기(138)는 TLB 태그 형성과 TLB 히트 논리를 사용하여 대응하는 가상 어드레스 공간을 위한 맵핑 정보가 TLB(132)의 엔트리 내에 있는지 여부를 식별한다. 언급된 바와 같이, 메모리 액세스 요청(140)으로 제공된 WorldID 및 ASID는 대응하는 물리적 어드레스로 변환되는 가상 어드레스와 연관된 고유한 가상 어드레스 공간을 식별한다. 그러나, 이들 값은 종종 수 십 비트로 길고 따라서 TLB(132)의 태그 어레이를 위한 검색 키로서 직접 사용되는 경우 상당히 복잡한 TLB 히트 논리를 요구할 수 있다. 따라서, 적어도 일 실시예에서, 하드웨어 제어기(138)는 검색 키 테이블(134, 136)을 사용하여 메모리 액세스 요청(140)으로 제공된 WorldID 및 ASID를 TLB(132)의 TLB 히트 논리에 의해 사용될 수 있는 더 작은 검색 키로 변환한다. 하나의 예시적인 구현예에서, 검색 키 테이블(134, 136)을 사용하여, WorldID는 16비트 값으로부터 2 비트 WorldID 검색 키로 변환될 수 있으며, ASID는 36비트 값으로부터 3비트 ASID 검색 키로 변환될 수 있다.
WorldID와 ASID를 대응하는 WorldID 검색 키와 ASID 검색 키로 각각 초기에 변환한 후에, 하드웨어 제어기(138)는 결과적인 WorldID와 ASID 검색 키를 버퍼링하며, 하이퍼바이저(112)와 게스트 OS의 실행 사이에 스위칭할 때 또는 하나의 애플리케이션의 실행에서 다른 애플리케이션의 실행으로 스위칭할 때 게스트 OS가 제어 레지스터(CR3)에 있는 ASID를 업데이트하는 것에 의해 애플리케이션 레벨 어드레스 공간을 스위칭할 때와 같이 상황 변화로 인해 WorldID 또는 ASID 중 하나 또는 둘 모두에 업데이트가 있을 때까지 TLB 룩업을 위한 이들 버퍼링된 검색 키를 계속 사용한다. 따라서, WorldID와 ASID를 WorldID와 ASID 검색 키로 변환하기 위해 하드웨어 제어기(138)에 의해 사용되는 맵핑 논리는 WorldID 또는 ASID로 업데이트할 때마다 한번만 실행될 필요가 있다.
도 2는 검색 키 테이블(134, 136)의 예시적인 구현예를 도시한다. 검색 키 테이블(134){이는 본 명세서에서 "WorldID 테이블(134)"이라고 언급된다}은 2X 엔트리를 가지는 완전 연관 캐시(fully associative cache)나 다른 데이터 구조를 포함하며, 여기서 X는 결과적인 WorldID 검색 키(201)에 있는 비트의 수이다. 도시된 예에서, WorldID 테이블(134)은 4(22)개의 엔트리를 구비하며 이에 의해 2-비트 WorldID 검색 키(201)의 생성을 초래한다. WorldID 테이블(134)의 각 엔트리는 대응하는 방식(예를 들어, 도 2의 예에서 0 내지 3)과 연관되며 각 엔트리는 대응하는 WorldID를 저장하도록 구성된 WorldID 필드(202)를 포함한다. 각 엔트리는 최근에 가장 적게 사용된(LRU) 정보나 최근에 가장 많이 사용된(MRU) 정보 등을 저장하기 위한 필드뿐만 아니라 대응하는 엔트리가 유효 엔트리인지 여부를 나타내는 유효 비트를 저장하기 위한 유효 필드(203)와 같은 여러 상태 필드를 더 포함할 수 있다.
검색 키 테이블(136){이는 본 명세서에서 "ASID 테이블(136)"이라고 언급된다}은 X개의 색인(index)을 가지는 세트 연관 캐시나 다른 데이터 구조를 포함하며, 각 색인은 WorldID 테이블(134)의 대응하는 방식과 연관되며 각 색인은 2Y개의 엔트리 세트를 포함하며, 여기서 Y는 결과적인 ASID 검색 키(211)에 있는 비트의 수이다. 도시된 예에서, ASID 테이블(136)은 8(23)개의 엔트리를 구비하며 이에 따라 3-비트 ASID 검색 키(211)의 생성을 초래한다. ASID 테이블(136)의 각 엔트리는 대응하는 방식(예를 들어, 도 2의 예에서 0 내지 7)과 연관되며, 각 엔트리는 대응하는 ASID를 저장하도록 구성된 ASID 필드(204)를 포함한다. 각 엔트리는 LRU 또는 MRU 정보 등을 저장하기 위한 필드뿐만 아니라 대응하는 엔트리가 유효 엔트리인지 여부를 나타내는 유효 비트를 저장하기 위한 유효 필드(205)와 같은 여러 상태 필드를 더 포함할 수 있다.
하나의 실시예에서, WorldID 검색 키(201)와 ASID 검색 키(211)를 결정하는 것은 2-단계 공정을 포함한다. WorldID에 대응하는 WorldID 검색 키(201)를 결정하기 위해, 하드웨어 제어기(138)는 WorldID 테이블(134)을 검색하여 WorldID를 저장하는 매칭 엔트리가 존재하는지 여부를 결정한다. 이러한 엔트리가 WorldID 테이블(134)에서 발견된다면, WorldID 검색 키(201)는 발견된 엔트리의 방식으로 설정된다. 예시를 위하여, WorldID 테이블(134)의 제3 엔트리(방식 = 2)가 매칭 WorldID를 저장한다면, WorldID 검색 키(201)는 제3 엔트리의 방식, 즉 10b(2)로 설정될 수 있다. WorldID 검색 키(201)를 식별한 후에, 하드웨어 제어기(138)는 검색될 ASID 테이블(136)의 대응하는 색인을 식별하기 위해 WorldID 테이블(134)에 있는 매칭 엔트리의 방식을 사용하는 것에 의해 ASID에 대응하는 ASID 검색 키를 결정한다. 이전의 예를 사용하여, WorldID 테이블(134)의 매칭 엔트리의 방식은 색인=2이며 이에 따라 하드웨어 제어기(138)는 색인 2에 있는 엔트리 0 내지 7 중 어느 엔트리가 메모리 액세스 요청과 연관된 ASID를 저장하는지 여부를 결정하기 위해 ASID 테이블(136)의 색인 2(색인 0 내지 3 중에서)를 검색할 수 있다. 이러한 엔트리가 ASID 테이블(136)의 지시된 색인에서 발견된다면, ASID 검색 키(211)는 이 엔트리의 방식으로 설정된다. 예시를 위하여, ASID 테이블(136)의 제4 엔트리(방식=3)가 매칭 ASID를 저장하고 있다면, ASID 검색 키(211)는 011b(3)으로 설정될 수 있다.
도 3은 본 개시내용의 적어도 일 실시예에 따라 도 2의 WorldID 테이블(134)과 ASID 테이블(136)을 사용하여 WorldID 및 ASID 검색 키를 결정하는 하드웨어 제어기(138)의 동작의 예시적인 방법(300)을 도시한다. 방법(300)은 블록(302)에서 어드레스 공간 상황으로 업데이트하는 것에 응답하여 개시한다. 이 업데이트는 현재 ASID, 현재 WorldID 또는 이들 둘 모두에서의 변화를 포함할 수 있다. 예시를 위하여, 상황 스위치가 하이퍼바이저(112)와 게스트 OS 사이에 또는 게스트 OS들 사이에 발생할 때에는 WorldID 및 ASID는 새로운 어드레스 공간을 반영하도록 업데이트된다. 이와 유사하게, 현재 실행되는 게스트 OS가 어드레스 공간을 스위칭할 때(예를 들어, 애플리케이션들 사이에 스위치할 때와 같이), ASID는 업데이트된다. x86 기반 프로세서 아키텍처에서, 제어 레지스터(CR3)는 종종 현재 가상 어드레스 공간과 연관된 특정 페이지 테이블을 가리키는 페이지 디렉토리 베이스 레지스터(PDBR)로서 작용하며 이에 따라 제어 레지스터(CR3)에 저장된 비트의 전체나 일부 부분이 ASID로서 사용될 수 있다. 따라서, 사용되는 현재 ASID에 대한 업데이트는 제어 레지스터(CR3)에 저장된 값에 대한 업데이트로 검출될 수 있다.
블록(304)에서, 하드웨어 제어기(138)는 WorldID를 저장하는 엔트리를 위한 WorldID 테이블(134)을 검색하기 위해 히트 논리를 사용한다. 동일한 WorldID를 저장한 엔트리가 발견되지 않는 경우에, 블록(306)에서, 하드웨어 제어기(138)는 메모리 액세스 요청과 연관된 WorldID를 위한 WorldID 테이블(134)에 엔트리에 할당한다. 엔트리의 할당은 미사용된 엔트리를 할당하는 것이나 현재 사용된 엔트리를 쫓아내는(evict) 것을 포함할 수 있다. 쫓아내는 엔트리는 예를 들어 최근에 가장 적게 사용된 엔트리로 선택될 수 있다. WorldID 테이블(134)에 할당된 엔트리는 블록(302)에서 수신된 WorldID로 식재(populated)되고 적절한 상태 플래그가 설정된다. 블록(308)에서, WorldID 검색 키는 블록(306)에서 할당된 WorldID 테이블(134)에 있는 엔트리의 방식으로 설정된다. 블록(310)에서, WorldID 테이블(134)의 할당된 엔트리에 대응하는 ASID 테이블(136)의 색인의 엔트리는 소거(flushed)되고 색인의 엔트리는 블록(302)에서 수신된 ASID로 선택되고 식재된다.
블록(304)으로 되돌아가면, WorldID 테이블(134)의 매칭 엔트리가 발견되는 경우에, 블록(312)에서 하드웨어 제어기(138)는 WorldID 키(201)를 매칭 엔트리의 방식으로 설정한다. 블록(314)에서 하드웨어 제어기(138)는 WorldID 테이블(134)의 매칭 엔트리와 연관된 ASID 테이블(136)의 색인을 선택하며, 블록(316)에서 하드웨어 제어기(138)는 블록(302)에서 수신된 ASID를 저장하는 매칭 엔트리를 위한 ASID 테이블(136)의 선택 색인의 엔트리 세트를 검색한다.
선택된 방식의 매칭 엔트리가 발견되지 않는 경우에는, 블록(318)에서, 하드웨어 제어기(138)는 미사용된 엔트리를 선택하거나 사용된 엔트리를 쫓아내는 것에 의해 ASID를 저장하기 위해 ASID 테이블(136)의 선택 색인의 엔트리를 할당한다. 블록(320)에서, 하드웨어 제어기(138)는 블록(318)에서 ASID 검색 키를 할당된 엔트리의 방식으로 설정한다. 블록(322)에서, 하드웨어 제어기(138)는 블록(302 내지 322)의 공정을 통해 결정된 WorldID와 ASID 검색 키와 매칭하는 TLB(132)의 임의의 엔트리를 소거한다. 블록(316)으로 되돌아가면, 선택된 방식의 매칭 엔트리가 발견되는 경우에는, 블록(324)에서 하드웨어 제어기(138)는 ASID 검색 키(211)를 매칭 엔트리의 방식으로 설정한다.
현재 WorldID와 ASID 검색 키를 설정한 후에, 블록(326)에서 하드웨어 제어기(138)는 페이지 워크(page walk)를 통해 페이지 변환 정보로 TLB(132)의 대응하는 엔트리를 식재하고 방법(300)의 그 다음 반복이 업데이트된 WorldID/ASID에 대해 개시되는 그 다음 어드레스 공간의 상황 변화 때까지 가상-물리적 메모리 어드레스 변환을 위한 TLB 룩업을 수행하기 위해 WorldID와 ASID 검색 키를 사용할 수 있다.
도 4는 본 개시내용의 적어도 일 실시예에 따라 WorldID 검색 키(201)와 ASID 검색 키(211)를 사용하여 TLB 룩업의 예시적인 구현예를 도시한다. 도시된 예에서, TLB(132)는 복수의 엔트리를 구비하는 테이블이나 다른 데이터 구조를 포함하며, 각 엔트리는 대응하는 가상 페이지 수를 저장하도록 구성된 가상 페이지 수(VPN) 필드(401)와 물리적 페이지 수(PPN) 필드(402)를 구비한다. 각 엔트리는 대응하는 WorldID 검색 키를 저장하도록 구성된 WorldID 태그 필드(403), 대응하는 ASID 검색 키를 저장하도록 구성된 ASID 태그 필드(404), 및 설정될 때, 연관된 맵핑이 대응하는 가상 기계에 글로벌(global)한(즉, 가상 기계 내에 있는 모든 어드레스 공간에 글로벌한) 것을 나타내는 글로벌 비트를 저장하도록 구성된 글로벌 어드레스 필드(405)와 더 연관된다. TLB 룩업을 수행하기 위해 하드웨어 제어기(138)는 TLB 히트 논리를 사용하여 처리되는 메모리 액세스 요청의 가상 메모리 어드레스의 VPN과 WorldID 검색 키(201)와 매칭하고 ASID 검색 키와 매칭하거나 글로벌 비트 세트를 구비하는 엔트리에 대해 TLB(132)의 엔트리를 검색한다. TLB(132)에 있는 엔트리가 이들 검색 조건들{즉, WorldID 검색 키 매칭하고 및 VPN에 매칭하고 및 (ASID 검색 키 또는 글로벌 비트 세트에 매칭하는 조건)} 각각에 충족하는 경우, 하드웨어 제어기(138)는 엔트리의 PPN 필드(402)에 저장된 물리적 페이지 수(PPN_X)를 사용하여 메모리 액세스 요청의 가상 어드레스를 대응하는 물리적 어드레스로 변환한다. 이 변환은 일반적으로 물리적 어드레스를 생성하기 위하여 물리적 페이지 수를 가상 어드레스의 전체나 일부 부분으로부터 결정된 페이지 오프셋으로 연쇄(concatenate)시키는 것에 의해 달성된다.
본 개시내용의 다른 측면은, 실행될 때 전술된 가상 어드레스에서 물리적 어드레스로의 변환 기술을 구현하는 하드웨어의 설계를 용이하게 하도록 적응된 명령 세트를 나타내는 데이터를 저장하는 컴퓨터로 판독가능한 메모리를 포함한다. 그리하여, 전술된 기술을 구현하는 디바이스는 소프트웨어(예를 들어, 컴퓨터 판독가능한 프로그램 코드)를 저장하도록 구성된 예를 들어 컴퓨터 사용가능한(예를 들어 판독가능한) 매체에 배치된 소프트웨어로 구현될 수 있다. 이 프로그램 코드는 본 명세서에 개시된 시스템 및 방법의 제조를 포함하는 본 개시내용의 실시예를 구현가능하게 한다. 예를 들어, 이것은 일반적인 프로그래밍 언어(예를 들어, C 또는 C++), 하드웨어 기술 언어(hardware description language: HDL)(예를 들어, Verilog, Verilog-A, HDL, VHDL, Altera HDL(AHDL) 등)나 또는 다른 이용가능한 프로그래밍 및/또는 개략 캡처 도구(예를 들어, 회로 캡처 도구)를 사용하여 달성될 수 있다. 프로그램 코드는 반도체, 자기 디스크, 광디스크(예를 들어, CD-ROM, DVD-ROM)를 포함하는 임의의 알려진 컴퓨터 사용가능한 매체에서 배치될 수 있다. 전술된 시스템과 기술에 의해 제공된 구조 및/또는 달성된 기능은 프로그램 코드로 구현되는 코어(예를 들어, GPU 코어)로 표현될 수 있고 집적 회로의 제품의 일부로서 하드웨어로 변환될 수 있다.
본 개시내용의 다른 실시예, 사용 및 장점은 본 명세서에 개시된 개시내용의 명세서와 실무의 고려사항으로부터 이 기술 분야에 통상의 지식을 가진 자에게는 명백할 것이다. 본 명세서 및 도면은 단지 예시를 위하여 제공된 것일 뿐이므로 본 개시내용의 범위는 이하 청구범위 및 그 균등물에 의해서만 제한되어야 할 것이다.

Claims (20)

  1. 복수의 가상 기계를 구현하는 하나 이상의 프로세서를 포함하는 시스템에서의 방법으로서,
    제1 검색 키와 제2 검색 키를 사용하여 변환 룩어사이드 버퍼(translation lookaside buffer) 룩업을 수행하는 단계를 포함하되,
    상기 제1 검색 키는 상기 복수의 가상 기계들 중 대응하는 가상 기계와 연관하여 실행되는 운영 시스템의 제1 식별자를 나타내고, 상기 제1 검색 키는 상기 제1 식별자보다 더 적은 비트를 구비하며, 그리고 상기 제2 검색 키는 상기 운영 시스템에 의해 관리되는 가상 어드레스 공간의 제2 식별자를 나타내고, 상기 제2 검색 키는 상기 제2 식별자보다 더 적은 비트를 구비하는 것을 특징으로 하는 방법.
  2. 삭제
  3. 제1항에 있어서,
    상기 제1 식별자에 기초하여 제1 테이블에 액세스하는 단계로서, 상기 제1 테이블은 복수의 엔트리를 포함하며, 각 엔트리는 대응하는 방식과 연관되며 가상 기계에 의해 실행되는 운영 시스템의 식별자를 저장하도록 구성된 것인, 상기 제1 테이블에 액세스하는 단계; 및
    상기 제1 식별자를 저장하는 상기 제1 테이블의 선택 엔트리의 제1 방식에 기초하여 상기 제1 검색 키를 결정하는 단계를 더 포함하는 방법.
  4. 제3항에 있어서,
    상기 제1 방식에 기초하여 제2 테이블의 복수의 색인들 중 선택 색인을 결정하는 단계;
    상기 제2 식별자에 기초하여 상기 선택 색인에 액세스하는 단계; 및
    제2 식별자를 저장하는 상기 선택 색인의 선택 엔트리의 제2 방식에 기초하여 상기 제2 검색 키를 결정하는 단계를 포함하되,
    상기 제2 테이블의 각 엔트리는 대응하는 방법을 구비하며 대응하는 운영 시스템에 의해 관리되는 가상 어드레스 공간의 식별자를 저장하도록 구성된 것인 방법.
  5. 제4항에 있어서, 상기 제1 검색 키는 상기 제1 방식에 의해 결정되고, 상기 제2 검색 키는 상기 제2 방식에 의해 결정되는 것인 방법.
  6. 제4항에 있어서,
    상기 제1 식별자를 상기 제1 테이블의 선택 엔트리에 저장하는 단계; 및
    상기 제2 테이블의 선택 색인의 엔트리를 소거하고 상기 제2 식별자를 상기 선택 색인의 선택 엔트리에 저장하는 단계를 더 포함하는 방법.
  7. 제1항에 있어서, 상기 변환 룩어사이드 버퍼 룩업을 수행하는 단계는,
    상기 제1 검색 키를 구비하고 상기 제2 식별자들 중 적어도 하나를 구비하거나 세트 글로벌 비트를 구비하는 변환 룩어사이드 버퍼의 선택 엔트리를 식별하기 위해 상기 변환 룩어사이드 버퍼에 액세스하는 단계; 및
    상기 변환 룩어사이드 버퍼의 선택 엔트리에 저장된 페이지 수에 기초하여 물리적 어드레스를 생성하는 단계를 포함하는 것인 방법.
  8. 명령 세트를 저장하는 컴퓨터 판독가능한 매체로서, 상기 명령 세트는 제1항의 방법을 구현하기 위한 시스템의 설계를 결정하도록 구성된 하드웨어 기술 언어(hardware description language: HDL) 명령을 포함하는 것인 컴퓨터 판독가능한 매체.
  9. 복수의 가상 기계를 구현하는 하나 이상의 프로세서를 포함하는 시스템에서의 방법으로서,
    상기 복수의 가상 기계의 선택된 가상 기계와 연관하여 실행되는 운영 시스템의 제1 식별자를 결정하고 상기 운영 시스템에 의해 관리되는 가상 어드레스 공간의 제2 식별자를 결정하는 단계;
    상기 제1 식별자에 기초하여 제1 테이블에 액세스하는 단계로서, 상기 제1 테이블은 복수의 엔트리를 구비하고, 각 엔트리는 대응하는 방식을 구비하며 상기 시스템의 대응하는 가상 기계와 연관된 운영 시스템의 식별자를 저장하도록 구성된 것인, 상기 제1 테이블에 액세스하는 단계;
    상기 제1 식별자를 저장하는 상기 제1 테이블의 선택 엔트리의 제1 방식에 기초하여 제1 검색 키를 결정하는 단계;
    상기 제1 방식에 기초하여 제2 테이블의 복수의 색인 중에서 선택 색인을 결정하고 상기 제2 식별자에 기초하여 선택 색인에 액세스하는 단계로서, 상기 제2 테이블의 각 엔트리는 대응하는 방식을 구비하며 대응하는 가상 기계의 운영 시스템에 의해 관리되는 가상 어드레스 공간의 식별자를 저장하도록 구성된 것인, 선택 색인을 결정하고 액세스하는 단계; 및
    상기 제2 식별자를 저장하는 상기 선택 색인의 선택 엔트리의 제2 방식에 기초하여 제2 검색 키를 결정하는 단계를 포함하는 방법.
  10. 제9항에 있어서,
    페이지 오프셋을 결정하기 위해 상기 제1 검색 키와 상기 제2 검색 키를 사용하여 변환 룩어사이드 버퍼 룩업을 수행하는 단계; 및
    상기 페이지 오프셋과 상기 가상 어드레스에 기초하여 물리적 어드레스를 생성하는 단계를 더 포함하는 방법.
  11. 제10항에 있어서, 변환 룩어사이드 버퍼 룩업을 수행하는 단계는, 상기 제1 검색 키를 구비하고 또 상기 제2 식별자 또는 세트 글로벌 비트 중 적어도 하나를 구비하는 상기 변환 룩어사이드 버퍼의 선택 엔트리를 식별하기 위해 상기 변환 룩어사이드 버퍼에 액세스하는 단계를 포함하는 것인 방법.
  12. 제9항에 있어서, 상기 제1 검색 키는 상기 제1 식별자보다 더 적은 수의 비트를 구비하고, 상기 제2 검색 키는 상기 제2 식별자보다 더 적은 수의 비트를 구비하는 것인 방법.
  13. 명령 세트를 저장하는 컴퓨터 판독가능한 매체로서, 상기 명령 세트는 제9항의 방법을 구현하기 위한 시스템의 설계를 결정하도록 구성된 하드웨어 기술 언어(HDL) 명령을 포함하는 것인 컴퓨터 판독가능한 매체.
  14. 처리 시스템으로서,
    변환 룩어사이드 버퍼; 및
    제1 검색 키와 제2 검색 키를 사용하여 변환 룩어사이드 버퍼(translation lookaside buffer) 룩업을 수행하는 하드웨어 제어기를 포함하되,
    상기 제1 검색 키는 상기 처리 시스템으로 구현되는 복수의 가상 기계들의 가상 기계와 연관되어 실행되는 운영 시스템의 제1 식별자를 나타내고, 상기 제1 검색 키는 상기 제1 식별자보다 더 적은 수의 비트를 구비하며,
    상기 제2 검색 키는 상기 운영 시스템에 의해 관리되는 가상 어드레스 공간의 제2 식별자를 나타내고, 상기 제2 검색 키는 상기 제2 식별자보다 더 적은 수의 비트를 구비하는 것을 특징으로 하는 처리 시스템.
  15. 삭제
  16. 제14항에 있어서,
    복수의 엔트리를 구비하는 제1 테이블을 더 포함하되, 각 엔트리는 대응하는 방식을 구비하고 대응하는 가상 기계에 의해 실행되는 운영 시스템의 식별자를 저장하도록 구성되며,
    상기 하드웨어 제어기는 상기 제1 식별자를 저장하는 상기 제1 테이블의 선택 엔트리의 제1 방식에 기초하여 상기 제1 검색 키를 결정하는 것인 처리 시스템.
  17. 제16항에 있어서,
    복수의 색인을 구비하는 제2 테이블을 더 포함하되, 각 색인은 상기 제1 테이블의 대응하는 엔트리와 연관되고, 각 색인은 복수의 엔트리를 구비하며, 상기 제2 테이블의 각 엔트리는 대응하는 방식을 구비하고, 대응하는 가상 기계의 운영 시스템에 의해 관리되는 가상 어드레스 공간의 식별자를 저장하도록 구성되며,
    상기 하드웨어 제어기는 상기 제1 방식에 기초하여 상기 복수의 색인의 선택 색인을 결정하고, 상기 제2 식별자를 저장하는 상기 선택 색인의 선택 엔트리의 제2 방식에 기초하여 상기 제2 검색 키를 결정하는 것인 처리 시스템.
  18. 제17항에 있어서, 상기 제1 검색 키는 상기 제1 방식이며, 상기 제2 검색 키는 상기 제2 방식인 것인 처리 시스템.
  19. 제17항에 있어서, 상기 하드웨어 제어기는, 또한
    상기 제1 테이블의 선택 엔트리에 상기 제1 식별자를 저장하고,
    상기 선택 색인의 엔트리를 소거하며,
    상기 선택 색인의 선택 엔트리에 상기 제2 식별자를 저장하는 것인 처리 시스템.
  20. 제14항에 있어서,
    상기 하드웨어 제어기는 상기 제1 검색 키를 구비하고 상기 제2 식별자 또는 세트 글로벌 비트 중 적어도 하나를 구비하는 상기 변환 룩어사이드 버퍼의 선택 엔트리를 식별하도록 상기 변환 룩어사이드 버퍼에 액세스하는 것에 의해 상기 변환 룩어사이드 버퍼 룩업을 수행하며, 상기 하드웨어 제어기는 상기 변환 룩어사이드 버퍼의 선택 엔트리에 저장된 페이지 수에 기초하여 물리적 어드레스를 더 생성하는 것인 처리 시스템.
KR1020127020208A 2010-03-16 2011-03-16 가상 처리 시스템에서 어드레스 맵핑 Active KR101746734B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/724,912 2010-03-16
US12/724,912 US8386749B2 (en) 2010-03-16 2010-03-16 Address mapping in virtualized processing system
PCT/US2011/028636 WO2011116070A1 (en) 2010-03-16 2011-03-16 Address mapping in virtualized processing system

Publications (2)

Publication Number Publication Date
KR20130048191A KR20130048191A (ko) 2013-05-09
KR101746734B1 true KR101746734B1 (ko) 2017-06-13

Family

ID=44260789

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127020208A Active KR101746734B1 (ko) 2010-03-16 2011-03-16 가상 처리 시스템에서 어드레스 맵핑

Country Status (6)

Country Link
US (1) US8386749B2 (ko)
EP (1) EP2548124B1 (ko)
JP (1) JP5680179B2 (ko)
KR (1) KR101746734B1 (ko)
CN (1) CN102792286B (ko)
WO (1) WO2011116070A1 (ko)

Families Citing this family (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8839275B1 (en) 2011-06-06 2014-09-16 Proximal Data, Inc. Method for intercepting input/output requests and responses
KR20130050156A (ko) * 2011-11-07 2013-05-15 한국전자통신연구원 가상 주소 공간 전환 장치
US9672583B2 (en) * 2011-12-21 2017-06-06 Intel Corporation GPU accelerated address translation for graphics virtualization
CN102662869B (zh) * 2012-04-01 2015-08-26 龙芯中科技术有限公司 虚拟机中的内存访问方法和装置及查找器
US9442859B1 (en) 2012-06-17 2016-09-13 Samsung Electronics Co., Ltd. Method for asynchronous population of data caches used with mass storage devices
US9104552B1 (en) 2012-06-23 2015-08-11 Samsung Electronics Co., Ltd. Method for the use of shadow ghost lists to prevent excessive wear on FLASH based cache devices
US8504757B1 (en) 2012-09-16 2013-08-06 Proximal Data, Inc. Method for translating virtual storage device addresses to physical storage device addresses in a proprietary virtualization hypervisor
US10169091B2 (en) 2012-10-25 2019-01-01 Nvidia Corporation Efficient memory virtualization in multi-threaded processing units
US10310973B2 (en) * 2012-10-25 2019-06-04 Nvidia Corporation Efficient memory virtualization in multi-threaded processing units
US10037228B2 (en) 2012-10-25 2018-07-31 Nvidia Corporation Efficient memory virtualization in multi-threaded processing units
US9075789B2 (en) 2012-12-11 2015-07-07 General Dynamics C4 Systems, Inc. Methods and apparatus for interleaving priorities of a plurality of virtual processors
US20140168227A1 (en) * 2012-12-13 2014-06-19 Nvidia Corporation System and method for versioning buffer states and graphics processing unit incorporating the same
US9459877B2 (en) 2012-12-21 2016-10-04 Advanced Micro Devices, Inc. Nested speculative regions for a synchronization facility
US9727345B2 (en) 2013-03-15 2017-08-08 Intel Corporation Method for booting a heterogeneous system and presenting a symmetric core view
CN104239238B (zh) * 2013-06-21 2018-01-19 格芯公司 用于管理转换旁视缓冲的方法和装置
US9208103B2 (en) * 2013-09-26 2015-12-08 Cavium, Inc. Translation bypass in multi-stage address translation
KR102168169B1 (ko) 2014-01-07 2020-10-20 삼성전자주식회사 비휘발성 메모리 시스템의 메모리 맵핑 방법 및 이를 제공하는 시스템
CN103778018B (zh) * 2014-01-16 2018-05-04 深圳艾迪宝智能系统有限公司 一种用于pcie虚拟化管理的方法
US9075945B1 (en) * 2014-06-27 2015-07-07 Google Inc. Method for implementing efficient entropy decoder by using high level synthesis
US9612970B2 (en) 2014-07-17 2017-04-04 Qualcomm Incorporated Method and apparatus for flexible cache partitioning by sets and ways into component caches
US10089238B2 (en) 2014-07-17 2018-10-02 Qualcomm Incorporated Method and apparatus for a shared cache with dynamic partitioning
WO2016012830A1 (en) * 2014-07-21 2016-01-28 Via Alliance Semiconductor Co., Ltd. Efficient address translation caching in processor that supports large number of different address spaces
US10180908B2 (en) 2015-05-13 2019-01-15 Qualcomm Incorporated Method and apparatus for virtualized control of a shared system cache
US10007435B2 (en) * 2015-05-21 2018-06-26 Micron Technology, Inc. Translation lookaside buffer in memory
KR102473665B1 (ko) 2015-07-28 2022-12-02 삼성전자주식회사 스토리지 디바이스 및 스토리지 가상화 시스템
US10297003B2 (en) * 2015-09-21 2019-05-21 Qualcomm Incorporated Efficient saving and restoring of context information for context switches
US11379385B2 (en) 2016-04-16 2022-07-05 Vmware, Inc. Techniques for protecting memory pages of a virtual computing instance
US10592267B2 (en) 2016-05-17 2020-03-17 Vmware, Inc. Tree structure for storing monitored memory page data
US10430223B2 (en) * 2016-05-17 2019-10-01 Vmware, Inc. Selective monitoring of writes to protected memory pages through page table switching
CN107463425B (zh) * 2016-06-03 2021-03-05 阿里巴巴集团控股有限公司 获取Java虚拟机的运行状态的方法和装置
CN107783913B (zh) 2016-08-31 2021-12-03 华为技术有限公司 一种应用于计算机的资源访问方法和计算机
KR102511451B1 (ko) * 2016-11-09 2023-03-17 삼성전자주식회사 리치 실행 환경에서 보안 어플리케이션을 안전하게 실행하는 컴퓨팅 시스템
US11106596B2 (en) * 2016-12-23 2021-08-31 Advanced Micro Devices, Inc. Configurable skewed associativity in a translation lookaside buffer
KR102439466B1 (ko) * 2017-03-27 2022-09-02 엘지전자 주식회사 단말기 및 그 제어 방법
CN108664523B (zh) * 2017-03-31 2021-08-13 华为技术有限公司 一种虚拟磁盘文件格式转换方法和装置
US10754790B2 (en) * 2018-04-26 2020-08-25 Qualcomm Incorporated Translation of virtual addresses to physical addresses using translation lookaside buffer information
US11113422B2 (en) 2018-08-03 2021-09-07 Micron Technology, Inc. Data protection in computer processors
US11182507B2 (en) 2018-08-30 2021-11-23 Micron Technology, Inc. Domain crossing in executing instructions in computer processors
US20200073822A1 (en) * 2018-08-30 2020-03-05 Micron Technology, Inc. Security Configuration for Memory Address Translation from Object Specific Virtual Address Spaces to a Physical Address Space
US11481241B2 (en) * 2018-08-30 2022-10-25 Micron Technology, Inc. Virtual machine register in a computer processor
US11074198B2 (en) * 2018-09-18 2021-07-27 Micron Technology, Inc. Key management in computer processors
US10761996B2 (en) 2018-09-28 2020-09-01 Intel Corporation Apparatus and method for secure memory access using trust domains
US10691592B2 (en) * 2018-10-30 2020-06-23 Micron Technology, Inc. Error-checking in namespaces on storage devices using a namespace table and metadata
US10846239B2 (en) * 2018-11-29 2020-11-24 Marvell Asia Pte, Ltd. Managing translation lookaside buffer entries based on associativity and page size
WO2020154223A1 (en) 2019-01-21 2020-07-30 John Rankin Systems and methods for processing network traffic using dynamic memory
CN113454590B (zh) * 2019-02-14 2025-05-30 国际商业机器公司 定向中断虚拟化
US11487674B2 (en) 2019-04-17 2022-11-01 Rankin Labs, Llc Virtual memory pool within a network which is accessible from multiple platforms
US11729184B2 (en) 2019-05-28 2023-08-15 Rankin Labs, Llc Detecting covertly stored payloads of data within a network
US11372773B2 (en) 2019-05-28 2022-06-28 Rankin Labs, Llc Supporting a virtual memory area at a remote computing machine
WO2020243249A1 (en) 2019-05-28 2020-12-03 John Rankin Covertly storing a payload of data within a network
US11516048B2 (en) 2019-12-18 2022-11-29 Rankin Labs, Llc Distribution of data over a network with interconnected rings
CN116866298A (zh) * 2023-07-11 2023-10-10 浙江大学 Rdma网络中的虚拟物理地址转换系统
US12326819B1 (en) * 2023-08-31 2025-06-10 Apple Inc. Renaming context identifiers in a processor

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6057449A (ja) * 1983-09-09 1985-04-03 Hitachi Ltd 仮想計算機システムのアドレス変換方式
JPH01255945A (ja) * 1988-04-06 1989-10-12 Hitachi Ltd 仮想計算機におけるアドレス変換装置
US20040117587A1 (en) * 2002-12-12 2004-06-17 International Business Machines Corp. Hardware managed virtual-to-physical address translation mechanism
JP2009146344A (ja) 2007-12-18 2009-07-02 Hitachi Ltd 計算機仮想化装置のtlb仮想化方法および計算機仮想化プログラム
CN101667958B (zh) 2008-09-01 2012-08-29 华为技术有限公司 选择哈希函数的方法、存储及查找路由表的方法及装置

Also Published As

Publication number Publication date
CN102792286A (zh) 2012-11-21
JP5680179B2 (ja) 2015-03-04
EP2548124B1 (en) 2020-02-12
JP2013522775A (ja) 2013-06-13
US8386749B2 (en) 2013-02-26
US20110231630A1 (en) 2011-09-22
CN102792286B (zh) 2016-05-11
EP2548124A1 (en) 2013-01-23
KR20130048191A (ko) 2013-05-09
WO2011116070A1 (en) 2011-09-22

Similar Documents

Publication Publication Date Title
KR101746734B1 (ko) 가상 처리 시스템에서 어드레스 맵핑
KR101770495B1 (ko) 공통 상황 항목의 동시 무효화를 지원하는 어드레스 변환 캐시
US9965399B2 (en) Large-page optimization in virtual memory paging systems
EP3108372B1 (en) Invalidating stored address translations
JP5372994B2 (ja) アーキテクチャイベントの間のプロセッサリソースの保持
KR101729503B1 (ko) 계층 변환 테이블 제어
JP6764485B2 (ja) ページ・フォールト解決法
JP2020529656A (ja) アドレス変換キャッシュ
US20050038973A1 (en) Data processor and IP module for data processor

Legal Events

Date Code Title Description
PA0105 International application

Patent event date: 20120731

Patent event code: PA01051R01D

Comment text: International Patent Application

PG1501 Laying open of application
A201 Request for examination
PA0201 Request for examination

Patent event code: PA02012R01D

Patent event date: 20151229

Comment text: Request for Examination of Application

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20160928

Patent event code: PE09021S01D

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 20170329

GRNT Written decision to grant
PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20170607

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20170608

End annual number: 3

Start annual number: 1

PG1601 Publication of registration
PR1001 Payment of annual fee

Payment date: 20210517

Start annual number: 5

End annual number: 5

PR1001 Payment of annual fee

Payment date: 20220602

Start annual number: 6

End annual number: 6

PR1001 Payment of annual fee

Payment date: 20230607

Start annual number: 7

End annual number: 7

PR1001 Payment of annual fee

Payment date: 20240530

Start annual number: 8

End annual number: 8

PR1001 Payment of annual fee

Payment date: 20250602

Start annual number: 9

End annual number: 9