KR20160124792A - 기억된 어드레스 변환의 무효화 - Google Patents
기억된 어드레스 변환의 무효화 Download PDFInfo
- Publication number
- KR20160124792A KR20160124792A KR1020167024444A KR20167024444A KR20160124792A KR 20160124792 A KR20160124792 A KR 20160124792A KR 1020167024444 A KR1020167024444 A KR 1020167024444A KR 20167024444 A KR20167024444 A KR 20167024444A KR 20160124792 A KR20160124792 A KR 20160124792A
- Authority
- KR
- South Korea
- Prior art keywords
- identifier
- data processing
- address
- stored
- address translation
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
- G06F12/0833—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/109—Address translation for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
- G06F2212/683—Invalidation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
제 1 어드레싱 시스템에서 사용된 제 1 어드레스와 제 2 어드레싱 시스템에서 사용된 제 2 어드레스가 로컬하게 기억되는 데이터 처리장치와 데이터 처리방법을 제공한다. 각각의 기억된 어드레스 변환이 대응하는 식별자와 함께 기억된다. 선택된 기억된 어드레스 변환에 대해 무효화 처리를 행하기 위한 무효화 명령에 응답하여, 선택된 기억된 어드레스 변환이 무효화되고, 이때 선택된 기억된 어드레스 변환이 무효화 명령 내에서 명시된 제 1 어드레스와 명시된 식별자에 의해 식별된다. 무효화 처리가 한 개보다 많은 수의 식별자를 식별자들의 그룹으로서 관련시키는 식별자 그룹화 정보에 의해 더 구성되고, 명시된 제 1 어드레스와 일치하고 명시된 식별자가 속하는 식별자들의 그룹 내의 임의의 식별자와 일치하는 모든 기억된 어드레스 변환에 대해 무효화 처리가 적용된다.
Description
본 발명은 데이터 처리에 관한 것이다. 특히, 본 발명은, 어드레스 변환회로 내부의 기억된 어드레스 변환의 무효화에 관한 것이다.
메모리에 기억된 데이터 값을 참조하여 데이터 처리 연산을 행하는 데이터 처리장치에서는, 제 1 어드레싱 시스템의 어드레스를 제 2 어드레싱 시스템의 어드레스로 변환하도록 구성된 어드레스 변환회로를 설치하는 것이 알려져 있다. 예를 들어, 이것은, 데이터 처리장치의 데이터 처리회로(예를 들면, CPU)가 가상 어드레스를 사용하여 그것의 데이터 처리 연산을 행하도록 구성되는 한편, 메모리 내부에 기억된 데이터 값들이 물리 어드레스를 사용하여 메모리에 의해 참조되는 경우에 해당한다. 따라서, 이 예에서는, 어드레스 변환회로가 가상 어드레스를 물리 어드레스로 변환하도록 구성된다. 일부 어드레스 변환이 반복적으로 행해질 수도 있다는 것을 고려하면, 데이터 처리회로와 긴밀하게 관련되어 설치된 스토리지 내부에 어드레스 변환의 세트를 캐시하여, 어드레스 변환 처리의 수행을 용이하게 하고, 특히 메모리에서 어드레스 변환 정의를 검색하는 것과 관련된 대기시간을 회피하는 것이 더 알려져 있다. 이와 같은 어드레스 변환회로는 예를 들면 변환 색인 버퍼(translation lookaside buffer: TLB)에 의해 제공된다.
특정한 어드레스 변환이 메모리의 특정한 부분들과 관련되므로, 이 특정한 어드레스 변환이 보통 이들 부분과 관련된 정의된 허가를 갖게 되어, 대응하는 어드레스 변환이 지정된 메모리 어드레스에 대해 요구된 종류의 액세스를 하는 것이 허용되는 요구자에게만 제공될 수 있다는 사실로 인해, 예를 들어, 콘텍스트 전환(context switch) 이후에, 어드레스 변환을 무효로 될 수 있는 것이 더 알려져 있다. 이와 같은 상황을 처리하는 단순하지만 개략적인 기술은, 이와 같은 상황에서 로컬하게 기억된(캐시된) 모든 기억된 어드레스 변환을 플러시(flush)하여, 그후에 요구되는 어드레스 변환이 메모리에 기억된 페이지 테이블 등의 확정적인 참조 소스를 참조하여 결정됨으로써, 메모리 액세스 허가가 올바르게 준수되도록 보장하는 것이다. 그로나, 전체 로컬 스토리지 콘텐츠가 삭제되므로, 로컬 스토리지를 갖는 전체 이점이 다시 구현될 수 있기 전에 이 로컬 스토리지 콘텐츠를 다시 채워야(repopulate)하기 때문에, 이와 같은 구성은 로컬 어드레스 변환 스토리지(예를 들면, TLB)의 다소 비효율적인 이용을 일으킬 수 있다.
따라서, 특정한 메모리 어드레스를 명시하고 데이터 처리장치 내부의 어드레스 변환회로가 이 어드레스에 대응하는 기억된 어드레스 변환을 무효로 만드는 무효화 명령에 응답하도록 이와 같은 어드레스 변환회로를 구성하는 것도 알려져 있다. 더구나, 데이터 처리장치가 콘텍스트들 사이에서 효율적으로 전환할 수 있도록 하거나, 예를 들면 복수의 가상 머신을 관리할 수 있도록 하기 위해, 각각의 로컬하게 기억된 어드레스 변환과 관련된 식별자(예를 들어, 어드레스 공간 식별자 및/또는 가상 머신 식별자)를 기억하여, 일치하는 식별자를 제공할 수 있는 요구자만 일정한 어드레스 변환을 이용할 수 있도록 하는 것도 알려져 있다. 따라서, 이와 같은 데이터 처리장치의 무효화 명령도 대응하는 관련된 식별자를 갖게 되므로, 각각의 프로세스 및/또는 가상 머신이 그 자신의 기억된 어드레스 변환의 무효화를 제어하지만, 다른 프로세스/가상 머신을 제어하지 않는다.
제 1 면에 따르면, 본 발명은, 데이터 처리장치로서, 메모리에 기억된 데이터 값들을 참조하여 데이터 처리 연산을 행하도록 구성된 데이터 처리회로를 구비하고, 각각의 데이터 처리 연산은 그것과 관련된 식별자를 갖고,
상기 데이터 처리장치는,
상기 데이터 처리회로에 의해 행해진 상기 데이터 처리 연산에 대응하는 제1 어드레싱 시스템에서 사용된 제 1 어드레스와 상기 메모리에 의해 사용된 제 2 어드레싱 시스템에서 사용된 제 2 어드레스 사이의 어드레스 변환을 기억하도록 구성된 어드레스 변환회로를 더 구비하고, 각각의 기억된 어드레스 변환은 대응하는 식별자와 함께 기억되고,
상기 어드레스 변환회로는 무효화 명령에 응답하여 선택된 기억된 어드레스 변환에 대해 무효화 처리를 행함으로써 상기 선택된 기억된 어드레스 변환을 무효화하도록 구성되고, 상기 선택된 기억된 어드레스 변환은 명시된 제 1 어드레스 및 명시된 식별자에 의해 상기 무효화 명령에서 식별되고,
상기 어드레스 변환회로는 식별자 그룹화 정보에 의해 더 구성된 상기 무효화 처리를 행하도록 더 구성되고, 상기 식별자 그룹화 정보는 한 개보다 많은 수의 식별자를 함께 식별자들의 그룹으로서 관련시키고, 상기 명시된 제 1 어드레스와 일치하고 상기 명시된 식별자가 속하는 상기 식별자들의 그룹에 있는 식별자와 일치하는 모든 기억된 어드레스 변환에 상기 무효화 처리를 적용하는 데이터 처리장치를 제공한다.
본 발명의 발명자들은, 어드레스 변환회로가 식별자 그룹화 정보에 더 의존하여 그것의 무효화 처리를 행하도록 구성함으로써, 어드레스 변환회로 내부의 기억된 어드레스 변환의 무효화에 있어서의 유리한 유연성이 주어진다는 것을 인식하였다. 무효화 처리는 이미 무효화 명령에서 명시된 어드레스 및 식별자에 의존한다. 이때, 이와 같은 식별자는 다양한 형태를 취할 수도 있는데, 예를 들어, 명시된 식별자는 어드레스 공간 식별자(address space identifier: ASID) 등의 프로세스 식별자일 수 있으며, 이와 같은 경우에는 명시된 식별자가 ASID이고, 명시된 어드레스는 ADID에 의해 식별된 처리가 액세스를 시도하는 어드레스를 표시한다. 이와 달리, 식별자는 예를 들면, 명시된 어드레스에 대한 액세스를 시도하고 있는 프로세스가 실행되는 다양한 호스트에 대응해도 된다. 이것의 일례는, 명시된 식별자가 장치의 데이터 처리 회로에 의해 관리되고 있는 특정한 가상 머신에 해당하고, 이에 따라 이 가상 머신에 의해 실행되고 있는 프로세스가 이 명시된 어드레스에 대한 액세스를 시도하고 있는 경우이다.
장치의 어드레스 변환회로는 제 1 어드레싱 시스템 및 제 2 어드레싱 시스템의 어드레스들 사이의 어드레스 변환을 기억하도록 구성된다. 이들 어드레싱 시스템은, 다양한 형태를 취할 수 있으며, 예를 들어, (예를 들어 CPU에서 사용되는) 가상 메모리, 게스트 물리 어드레스(즉, 중간 물리 어드레스), 및 (예를 들어, 메모리에서 사용되는) 물리 어드레스로부터 적절히 선택된다. 따라서, 어드레스 변환회로는 가상 어드레스 및 물리 어드레스 사이의 어드레스 변환을 제공하도록 구성되고, 이 전체적인 변환은 그 자체가 2 단계, 즉 가상 어드레스로부터 게스트 물리 어드레스로의 변환과 게스트 물리 어드레스로부터 물리 어드레스로의 변환을 포함한다. 따라서, 전술한 제 1 어드레싱 시스템에서 사용된 제 1 어드레스는 이들 전술한 예에서는 가상 어드레스 또는 게스트 물리 어드레스에 대응할 수 있는데, 이것은 이들 두가지가 데이터 처리회로에 의해 행해진 데이터 처리 연산에 대응하기 때문이다. 제 2 어드레스는 메모리에 의해 제 2 어드레싱 시스템에서 사용된 어드레스(즉, 물리 메모리 어드레스)이다.
본 발명에 의해 제공된 유연성은 식별자 그룹화 정보의 제공에서 얻어진다. 이와 같은 식별자 그룹화 정보는 한 개보다 많은 수의 식별자를 함께 식별자들의 그룹으로 관련시키고, 어드레스 변환회로는, 무효화 명령에 응답하여, 무효화 명령 자체에 의해 주어진 명시된 제 1 어드레스 및 명시된 식별자와 일치하는 기억된 어드레스 변환을 무효화할 뿐만 아니라, 명시된 제 1 어드레스와 일치하고 (무효화 명령 내부의) 명시된 식별자가 속하는 식별자들의 그룹 내부의 다른 식별자들과 일치하는 또 다른 기억된 어드레스 변환을 무효화하도록 구성된다.
따라서, 이와 같은 방식으로 식별자들의 그룹을 형성하는 것은, 어드레스 변환회로 내부에 기억된 한 개보다 많은 수의 어드레스 변환이 단일의 무효화 명령에 응답하여 무효화될 수 있다는 이점을 갖는다. 이때, 무효화 명령 그 자체는 다양한 소스, 예를 들어 (CPU 및 TLB의 격구에서와 같이, 이 슬레이브 어드레스 변환회로에 대해 마스터 장치로서의 역할을 하는) 데이터 처리회로로부터 발생되거나, 또는 무효화 명령이 어드레스 변환회로의 내부에서 발생될 수도 있다(즉, 하우스키핑 행위의 일종으로서).
따라서, 식별자들의 그룹은 예를 들어 (ASID 등의) 어드레스 공간 식별자들의 그룹에 대응하거나, 또는, 다른 예로서, 가상 머신 식별자들의 그룹에 대응한다. 따라서, 무효화 명령에서 명시된 제 1 어드레스와 일치하고 식별자들의 그룹 내부의 임의의 식별자와 일치하는 모든 기억된 어드레스 변환에 대해 무효화 처리를 행하도록 어드레스 변환회로를 구성하는 것은, 어떤 특정한 식별자의 발생자(이것이 예를 들어 특정한 프로세스이거나 가상 머신인지에 무관하다)가 (이 발생자가 정당한 액세스를 하는) 특정한 어드레스에 대한 모든 기억된 어드레스 변환을 그것이 속하는 모든 그룹에 대해 무효화되도록 할 수 있다는 것을 의미한다. 따라서, 본 발명은, 특정한 식별자들 사이의 관련, 따라서 이들 식별자들의 발생자들(예를 들어, 프로세스 또는 가상 머신) 사이의 관련을 도입하여, 이들 발생자들이 이하에서 더욱 상세히 설명하는 유리한 방식으로 서로 관련될 수 있도록 한다.
더구나, 어드레스 변환회로의 이와 같은 구성은 복수의 기억된 어드레스 변환이 신속하게 무효화될 수 있게 할 수 있다. 이것은, 예를 들면, 메모리 관리 유닛(MMU) 내부의 TLB에 기억되어 있는 어드레스 변환과 관련해서, 모든 실행되고 있는 가상 머신들의 전체적인 제어를 유지하는 하이퍼바이저를 거쳐 MMU와의 소프트웨어 통신에 의해 복수의 어드레스 변환 무효화를 행함으로써 상당히 속도가 더 느려질 수도 있는 대안과 비교해야 한다.
전술한 것과 같이, 식별자는 다양한 형태를 취할 수 있지만, 일 실시예에서는, 상기 데이터 처리회로는 복수의 가상 머신들을 관리하여 데이터 처리 연산을 행하도록 구성되고, 각각의 어드레스 변환과 관련해서 어드레스 변환회로에 의해 기억된 대응하는 식별자는 가상 머신 식별자이다. 따라서, 이와 같은 실시예에서는, 식별자 그룹화 정보가 한 개보다 많은 수의 가상 머신 식별자를 함께 관련시킴으로써, 주어진 제 1 어드레스 및 가상 머신 식별자들의 해당 그룹에 대한 모든 기억된 어드레스 변환에 대해 무효화 처리가 적용된다.
식별자 그룹화 정보는 각각과 관련된 서로 다른 이점을 갖고 다양한 다른 방식으로 주어질 수 있다. 예를 들어, 일부 실시예에서, 상기 어드레스 변환회로는 각각의 기억된 어드레스 변환과 관련하여 상기 식별자 그룹화 정보를 기억하도록 구성된다. 이와 같은 구성은, 특정한 식별자 그룹 정의가 각각의 기억된 어드레스 변환과 직접 연관될 수 있도록 할 수 있으므로, 이들 관련의 구성에 있어서 (엔트리 기준으로) 특별한 유연성을 허용한다.
식별자 그룹화 정보 그 자체는 다양한 형태를 취할 수 있지만, 일부 실시예에서, 식별자 그룹화 정보는 무효화 처리에 대한 기억된 어드레스 변환과 일치할 때 무시되어야 하는 무효화 명령 내부의 명시된 식별자의 일부를 명시한다. 따라서, 명시된 식별자의 일부를 무시함으로써, 와일드카드(wildcard) 타입 일치 절차가 제공되어, 어드레스 변환회로 내부에 기억된 한 개보다 많은 수의 식별자가 무효화 명령 내부의 명시된 식별자와 대조할 수 있다. 이와 같은 구성은, 무시하려는 명시된 식별자를 식별하는 것은(예를 들어, 무시하려는 명시된 식별자의 제한된 수의 비트들을 식별하는 것) 매우 제한된 양의 정보만을 필요로 하므로, 특히 식별자 그룹화 정보가 각각의 기억된 어드레스 변환과 관련하여 기억되는 경우에, 상당한 부담이 없이 이와 같은 식별자 그룹화 정보가 제공될 수 있다(에에 따라, 어드레스 변환회로 내부에 작은 양의 추가적인 공간만을 요구한다). 이때, 기억된 어드레스 변환과 일치할 때 무시되어야 하는 명시된 식별자의 일부를 명시하는 것은 수신한 명시된 식별자와 대조할 때 무시하려는 각각의 기억된 식별자의 일부를 명시하는 것과 논리적으로 동등한 것으로 생각되므로, 본 발명에서는 이들 동등한 정의들 각각을 고려한다.
식별자 그룹화 정보는 무시하려는 명시된 식별자의 일부를 다양한 방식으로 명시해도 되지만, 일부 실시예에서, 식별자 그룹화 정보는 명시된 식별자의 일부가 최상위 부분인지 최하위 부분인지를 명시한다. 따라서, 식별자 그룹화 정보는 예를 들면 무시하려는 명시된 식별자의 다수의 최상위 비트들을 명시하거나, 역으로 무시하려는 명시된 식별자의 다수의 최하위 비트들을 명시한다. 이들 가능한 방법 각각과 관련된 특별한 이점이 존재하는데, 예를 들면, 명시된 식별자의 최하위 부분을 무시하는 것은 식별자들의 번호부여 방식 내에서 인접하는 식별자들의 그룹을 발생하여 그들의 논리적 관련을 용이하게 하는 반면에, 다른 상황에서는 명시된 식별자의 최상위 부분을 무시함으로써, 그룹으로서 관련된 식별자들이 식별자들에 대해 사용된 번호부여 시스템 내부에서 간격을 두고 떨어지도록 하여 식별자들의 "거울에 비친(mirrored)" 그룹이 지원될 수 있도록 하는 것이 바람직할 수도 있다.
일부 실시예에서, 식별자 그룹화 정보는 브로드캐스트 금지 마커(no broadcast marker)를 명시하도록 구성됨으로써, 무효화 명령이 브로드캐스트 무효 명령으로서 수신된 경우에는, 무효화 명령에 응답하여 브로드캐스트 금지 마커로 표시된 기억된 어드레스 변환에 대해 무효화 처리를 행하지 않도록 구성될 수 있다. 따라서, 이와 같은 구성은, 브로드캐스트 무효화 명령, 예를 들어, CPU에 의해 개시되고 그 자신의 MMU/TLB를 갖는 주변 기기에 의해 수신된 분배된 가상 메모리 무효화 브로드캐스트의 결과로써 특정한 기억된 어드레스 지정된 변환이 무효화로부터 "보호"될 수 있도록 하는 배치에 의해 지원되는 추가적인 유리한 특징을 제공한다. 이와 같은 상황에서, 주변 기기는 일반적으로 추가적인 인터페이스를 구비하고, 이 인터페이스를 거쳐 CPU가 주변 기기를 프로그래밍할 수 있으며, 더욱 일반적으로는 주변 기기와 상호작용할 수 있으며, 그후 이와 같은 추가적인 인터페이스를 사용하여 TLB 내부의 엔트리들이 무효화되게 할 수 잇다.
따라서, 이와 같은 특정한 구성에서는, 식별자 그룹화 정보를 사용하여, 무효화 명령에 응답하여 어드레스 변환회로가 실행하려고 시도하는 브로드캐스트 무효화 처리로부터, 어드레스 변환회로의 특정한 기억된 어드레스 변환을 보호해야 한다는 것을 식별할 수 있다. 이와 같은 구성은 본 발명에 의해 제공된 새로운 구성에 대해 추가적인 레벨의 유연성을 제공하며, 일반적으로 식별자 그룹화 정보를 사용하여 특정한 무효화 명령에 응답하여 더 많은 어드레스 변환이 무효화되도록 할 수 있지만, 이와 같은 특정한 구성은, 브로드캐스트 무효화 명령에 의해 개시되었을 때 이 확장된 무효화 처리로부터 명시된 어드레스 변환이 면제될 수 있도록 한다.
그러나, 식별자 그룹화 정보는 각각의 기억된 어드레스 변환과 관련하여 직접 기억되지 않을 수도 있으며, 예를 들어, 일부 실시예에서는, 어드레스 변환회로에 의해 행해진 모든 어드레스 무효화 처리에 적용하기 위해 어드레스 변환회로가 액세스 가능한 식별자 그룹화 정보를 상기 장치가 기억하도록 구성된다. 따라서, 이와 같은 식별자 그룹화 정보는 어드레스 변환회로가 일반적으로 액세스 가능한 방식으로 중앙에 기억됨으로써(즉, 이 식별자 그룹화 정보는 어드레스 변환회로 자체 내부에 존재하거나, 더욱 더 일반적으로는 데이터 처리장치 내부에 존재할 수도 있다), 어드레스 변환회로에 의해 행해진 모든 무효화 처리에 대해, 이와 같은 일반적인 식별자 그룹화 정보를 참조할 수 있도록 할 수 있다. 이것은 이 식별자 그룹화 정보를 기억하는 것과 관련된 스토리지 공간을 줄인다.
다른 실시예에서, 어드레스 변환회로는 무효화 명령 내부의 식별자 그룹화 정보를 식별하도록 구성된다. 따라서, 무효화 명령 그 자체가 식별자 그룹화 정보를 포함하도록 확장됨으로써, 이 식별자 그룹화 정보가 무효화 명령 방식에 의한 무효화 명령에 제공된다. 이와 같은 구성도 어드레스 변환회로 내부의 스토리지 공간을 절감하며, 무효화 명령의 발생자에게 각각의 무효화 명령에 대해 식별자 그룹화 정보가 정의되는 방식을 정의하는 유연성을 제공한다.
이와 같은 일부 실시예에서, 데이터 처리회로는 2가지 데이터 처리 모드들 중에서 한 개에서 동작하도록 구성되고, 제 1 데이터 처리 모드에서는, 상기 데이터 처리회로가 식별자 그룹화 정보를 갖지 않는 무효화 명령을 발행하도록 구성되고 상기 장치가 무효화 명령에 식별자 그룹화 정보를 추가하도록 구성되고, 제 2 데이터 처리 모드에서는, 상기 데이터 처리회로가 무효화 명령을 발행하고 무효화 명령 자체에 식별자 그룹화 정보를 추가하도록 구성된다.
이들 2개의 데이터 처리 모드는 다양한 형태를 취할 수 있지만, 특히 데이터 처리장치 내부의 다양한 특권 레벨에서의 동작에 대응한다. 따라서, 제 1 데이터 처리 모드는, 식별자 그룹화 정보를 정의할 충분한 특권을 갖지 않는 발생자(예를 들면, 프로세스 또는 가상 머신)에 의해 무효화 명령이 발행되고 무효화 명령에 대한 이와 같은 식별자 그룹화 정보의 추가가 장치의 다른 부분(즉, 이것을 행할 충분한 특권을 갖는 장치의 부분)에 의해 처리되는 낮은 특권 레벨에 대응한다. 예를 들어, 무효화 명령을 발행하고 있는 가상 머신이 식별자 그룹화 정보를 정의할 충분한 특권을 갖지 않는 가상 머신 실시예와 관련해서는, 이 식별자 그룹화 정보가 충분한 특권을 갖는 하이퍼바이저에 의해 추가될 수 있다. 즉, 본 실시예에서는, 하이퍼바이저가 제 2 데이터 처리 모드에서 동작하고 있으므로, 그 자신의 무효화 명령을 발행할 때, 식별자 그룹화 정보를 무효화 명령 자체에 추가할 수 잇는 충분한 특권을 갖는다.
일부 실시예에서, 데이터 처리회로는 적어도 2개의 데이터 처리 디바이스들을 구비하고, 각각의 식별자들의 그룹에 대해, 어드레스 변환회로는 이 식별자들의 그룹의 제 1 식별자에 대해서만 상기 적어도 2개의 데이터 처리 디바이스 중에서 제 1 데이터 처리 디바이스에 대해 어드레스 변환을 제공하고, 이 식별자들의 그룹의 임의의 식별자에 대해 상기 적어도 2개의 데이터 처리 디바이스 중에서 제 2 데이터 처리 디바이스에 대해 어드레스 변환을 제공하도록 구성된다.
따라서, 식별자 그룹화 정보를 사용하여 식별자들의 그룹으로서 한 개보다 많은 수의 식별자를 함께 관련시키는 것은, 특정한 (제 2) 데이터 처리 디바이스의 이익을 위해 제공되는 반면에, 다른 (제 1) 데이터 처리 디바이스에 대해서는 제공되지 않는다. 이와 같은 구성은, 데이터 처리장치 내부의 다양한 레벨의 특권을 지원하는 메카니즘도 제공하는데, 제 2 데이터 처리 디바이스만 식별자들의 그룹 내부의 전체 식별자들의 세트에 대해 어드레스 변환이 제공되는 반면에, 제 1 데이터 처리 디바이스는 그룹 내부의 다른 식별자들과의 특정한 식별자의 관련을 볼 수 없다. 따라서, 중요하게도, 이것은, 제 2 데이터 처리 디바이스가 제 1 데이터 처리 디바이스와 제 1 식별자를 효율적으로 공유할 수 있으면서, 제 1 데이터 처리 디바이스가 액세스할 수 없는 명시된 그룹 내부의 다른 식별자들을 액세스할 수 있다는 것을 의미한다. 이것은, 예를 들면, 제 2 데이터 처리 디바이스만 식별자들의 그룹 내부의 전체 범위의 식별자들을 갖는 무효화 명령을 발행할 수 있는 반면에, 제 2 데이터 처리 디바이스는 그것과 관련된 제 1 식별자를 갖는 무효화 명령만을 발행할 수 있도록 제약을 받는 구성에 의해 실시되어도 된다.
일부 실시예에서, 상기 어드레스 변환회로는 룩업(lookup) 처리를 행하여 수신된 제 1 어드레스 및 수신된 식별자에 대해 어드레스 변환이 기억되어 있는지 판정하도록 구성되고, 상기 어드레스 변환회로는 각각의 기억된 어드레스 변환과 관련하여 룩업 일치 변경자(lookup match modifier)를 기억하도록 구성되고, 상기 룩업 일치 변경자가 제 1 값을 가질 때에는, 상기 수신된 식별자가 기억된 식별자와 완전히 일치하는 경우에만 상기 룩업 처리가 어드레스 변환을 발견하도록 구성되고, 상기 룩업 일치 식별자가 제 2 값을 가질 때에는, 상기 기억된 식별자에 대한 식별자 그룹화 정보에 의해 정의할 때 상기 수신된 식별자가 상기 기억된 식별자가 속하는 식별자들의 그룹 내부의 임의의 식별자와 일치하는 경우에, 상기 룩업 처리가 상기 어드레스 변환을 발견하도록 구성된다.
따라서, 식별자들의 그룹 내부의 한 개보다 많은 수의 식별자로 무효화 처리를 확장하는데 사용되는 식별자 그룹화 정보는 어드레스 변환회로에 의해 행해진 룩업 처리 내에서 사용될 수도 있다. 따라서, 이것은, 어드레스 변환회로 내부에 기억된 단일의 어드레스 변환을 이용하여 한 개보다 많은 수의 식별자(이들 식별자는 그룹을 형성한다)와 관련된 룩업 요구에 응답할 수 있으며, 특정한 어드레스 변환이 이 그룹의 각각의 개별적인 식별자에 대해 어드레스 변환회로 내에 기억될 필요가 없기 때문에, 어드레스 변환회로 내부의 스토리지 공간을 유리하게 절감할 수 있다. 룩업 일치 변경자는 주어진 기억된 어드레스 변환에 대해 이와 같은 특징을 선택적으로 인에이블시키거나 디스에이블시킬 수 있다.
일부 실시예에서, 어드레스 변환회로는, 룩업 처리의 결과로써 어떤 어드레스 변환도 발견되지 않은 경우에는, 검색 처리를 개시하여 메모리에서 어드레스 변환을 페치하도록 구성되고, 룩업 일치 변경자가 제 1 값을 갖고, 수신된 식별자가 일치하지 않았지만, 일치하는 어드레스 변환회로 내부의 기억된 식별자가 속하는 식별자들의 그룹에 상기 수신된 식별자가 속하기 때문에, 룩업 처리의 결과로써 어떤 어드레스 변환도 발견되지 않은 것을 검색 처리가 표시하는 경우에는, 상기 어드레스 변환회로가 상기 기억된 식별자에 대한 룩업 일치 변경자를 제 2 값을 갖도록 변경하도록 더 구성된다.
따라서, 룩업 처리의 결과로써 어드레스 변환이 발견되지 않은 상태에서는(예를 들어, TLB "부적중(miss)"가 발생한 경우), 메모리에서 어드레스 변환을 페치하기 위한 검색 처리를 개시할 수 있다(예를 들면, 페이지 테이블 워크). 그후, 검색 처리의 결과로써, 검색된 식별자가 일치하지 않았기 때문에 룩업 처리가 부적중하였지만, 이 검색된 식별자가 속하는 식별자들의 그룹에 있는 다른 식별자에 대한 어드레스 변환회로에 일치하는 어드레스 변환이 기억되고, 다른 방식으로 메모리에서 페치된 어드레스 변환이 기억된 식별자에 대해 기억된 어드레스 변환과 일치하는 것으로 검색 처리가 표시하는 것으로 확인된 경우에는, 어드레스 변환회로가 기억된 식별자에 대한 룩업 일치 변경자가 제 2 값을 갖도록 변경함으로써, 룩업 처리를 개시한 요구된 어드레스 변환해 대해 어드레스 변환회로 내부의 새로운 엔트리를 만들 필요가 없으며, 그후 이 어드레스와 수신된 식별자와 관련된 추가적인 어드레스 변환 요구가 기존의 일치하는 엔트리를 이용할 수 있다. 따라서, 식별자들이 식별자들의 그룹에 속할 때, 그들의 관련된 식별자들만 다른 복수의 어드레스 변환을 기억할 필요성을 없앰으로써, 어드레스 변환회로 내부의 스토리지 공간을 절감한다.
일부 실시예에서, 어드레스 변환회로는, 제 1 어드레싱 시스템 내부의 페이지 테이블들에 대한 어드레스 변환을 제 2 어드레싱 시스템 내부의 페이지 테이블들에 기억하도록 구성된 변환 색인 버퍼이다.
일부 실시예에서, 데이터 처리회로는 적어도 2개의 데이터 처리 디바이스들을 구비하고, 상기 적어도 2개의 데이터 처리 디바이스들 중에서 제 1 데이터 처리 디바이스는 범용 중앙 처리 유닛이고, 상기 적어도 2개의 데이터 처리 디바이스들 중에서 제 2 데이터 처리 디바이스는 상기 범용 중앙 처리 유닛 대신에 데이터 처리 연산들의 적어도 일부를 행하도록 구성된 슬레이브 장치이다.
제 2 면에 따르면, 본 발명은, 데이터 처리방법으로서, 메모리에 기억된 데이터 값들을 참조하여 데이터 처리 연산을 행하는 단계를 포함하고, 각각의 데이터 처리 연산은 그것과 관련된 식별자를 갖고,
상기 데이터 처리방법은,
데이터 처리회로에 의해 행해진 상기 데이터 처리 연산에 대응하는 제1 어드레싱 시스템에서 사용된 제 1 어드레스와 상기 메모리에 의해 사용된 제 2 어드레싱 시스템에서 사용된 제 2 어드레스 사이의 어드레스 변환을 기억하는 단계를 더 포함하고, 각각의 기억된 어드레스 변환은 대응하는 식별자와 함께 기억되고,
상기 데이터 처리방법은,
무효화 명령에 응답하여 선택된 기억된 어드레스 변환에 대해 무효화 처리를 행함으로써 상기 선택된 기억된 어드레스 변환을 무효화하는 단계를 더 포함하고, 상기 선택된 기억된 어드레스 변환은 명시된 제 1 어드레스 및 명시된 식별자에 의해 상기 무효화 명령에서 식별되고,
상기 데이터 처리방법은,
식별자 그룹화 정보에 의해 더 구성된 상기 무효화 처리를 행하는 단계를 더 포함하고, 상기 식별자 그룹화 정보는 한 개보다 많은 수의 식별자를 함께 식별자들의 그룹으로서 관련시키고, 상기 명시된 제 1 어드레스와 일치하고 상기 명시된 식별자가 속하는 상기 식별자들의 그룹에 있는 식별자와 일치하는 모든 기억된 어드레스 변환에 상기 무효화 처리를 적용하는 데이터 처리방법을 제공한다.
제 3 면에 따르면, 본 발명은, 데이터 처리장치로서, 메모리에 기억된 데이터 값들을 참조하여 데이터 처리 연산을 행하는 수단을 구비하고, 각각의 데이터 처리 연산은 그것과 관련된 식별자를 갖고,
상기 데이터 처리장치는,
상기 데이터 처리 연산을 행하는 수단에 의해 행해진 상기 데이터 처리 연산에 대응하는 제1 어드레싱 시스템에서 사용된 제 1 어드레스와 상기 메모리에 의해 사용된 제 2 어드레싱 시스템에서 사용된 제 2 어드레스 사이의 어드레스 변환을 기억하는 수단을 더 구비하고, 각각의 기억된 어드레스 변환은 대응하는 식별자와 함께 기억되고,
상기 데이터 처리장치는,
무효화 명령에 응답하여 선택된 기억된 어드레스 변환에 대해 무효화 처리를 행함으로써 상기 선택된 기억된 어드레스 변환을 무효화하는 수단을 더 구비하고, 상기 선택된 기억된 어드레스 변환은 명시된 제 1 어드레스 및 명시된 식별자에 의해 상기 무효화 명령에서 식별되고,
상기 데이터 처리장치는,
식별자 그룹화 정보에 의해 더 구성된 상기 무효화 처리를 행하는 수단을 더 구비하고, 상기 식별자 그룹화 정보는 한 개보다 많은 수의 식별자를 함께 식별자들의 그룹으로서 관련시키고, 상기 명시된 제 1 어드레스와 일치하고 상기 명시된 식별자가 속하는 상기 식별자들의 그룹에 있는 식별자와 일치하는 모든 기억된 어드레스 변환에 상기 무효화 처리를 적용하는 데이터 처리장치를 제공한다.
이하, 다음의 첨부도면을 참조하여 본 발명을 더욱 상세히 설명한다.
도 1은 일 실시예에 있어서의 데이터 처리장치를 개략적으로 나타낸 것이다.
도 2는 일 실시예에서의 TLB 무효화 명령의 브로드캐스팅을 개략적으로 나타낸 것이다.
도 3은 일 실시예에 있어서 CPU 및 GPU에 의해 사용된 게스트 물리 어드레스들의 세트를 메모리에 의해 사용되는 물리 메모리 어드레스들로 매핑하는 것을 개략적으로 나타낸 것이다.
도 4a는 일 실시예에 있어서 어드레스 변환회로의 예시적인 콘텐츠를 나타낸 것이다.
도 4b는 도 4a의 어드레스 변환회로에 기억된 무효화 와일드카드 정보의 정의를 더욱 상세히 나타낸 것이다.
도 5a 내지 도 5c는 일 실시예에 있어서 와일드카드 룩업 정보의 사용을 나타낸 것이다.
도 6은 일 실시예에 있어서 장치에 의해 취해지는 일련의 단계들을 개략적으로 나타낸 것이다.
도 7a 내지 도 7c는 무효화 와일드카드 정보가 제공되는 3가지 다른 구성을 갖는 3가지 다른 실시예들을 개략적으로 나타낸 것이다.
도 8은 하이퍼바이저가 가상 머신에 의해 발행된 무효화 명령에 무효화 와일드카드 정보를 추가하도록 구성된 일 실시예의 데이터 처리회로를 개략적으로 나타낸 것이다.
도 9는 일 실시예에 있어서의 어드레스 변환회로를 개략적으로 나타낸 것이다.
도 10은 일 실시예의 방법에서 취해지는 단계들의 시퀀스를 개략적으로 나타낸 것이다.
도 1은 일 실시예에 있어서의 데이터 처리장치를 개략적으로 나타낸 것이다.
도 2는 일 실시예에서의 TLB 무효화 명령의 브로드캐스팅을 개략적으로 나타낸 것이다.
도 3은 일 실시예에 있어서 CPU 및 GPU에 의해 사용된 게스트 물리 어드레스들의 세트를 메모리에 의해 사용되는 물리 메모리 어드레스들로 매핑하는 것을 개략적으로 나타낸 것이다.
도 4a는 일 실시예에 있어서 어드레스 변환회로의 예시적인 콘텐츠를 나타낸 것이다.
도 4b는 도 4a의 어드레스 변환회로에 기억된 무효화 와일드카드 정보의 정의를 더욱 상세히 나타낸 것이다.
도 5a 내지 도 5c는 일 실시예에 있어서 와일드카드 룩업 정보의 사용을 나타낸 것이다.
도 6은 일 실시예에 있어서 장치에 의해 취해지는 일련의 단계들을 개략적으로 나타낸 것이다.
도 7a 내지 도 7c는 무효화 와일드카드 정보가 제공되는 3가지 다른 구성을 갖는 3가지 다른 실시예들을 개략적으로 나타낸 것이다.
도 8은 하이퍼바이저가 가상 머신에 의해 발행된 무효화 명령에 무효화 와일드카드 정보를 추가하도록 구성된 일 실시예의 데이터 처리회로를 개략적으로 나타낸 것이다.
도 9는 일 실시예에 있어서의 어드레스 변환회로를 개략적으로 나타낸 것이다.
도 10은 일 실시예의 방법에서 취해지는 단계들의 시퀀스를 개략적으로 나타낸 것이다.
도 1은 일 실시예에 있어서의 데이터 처리장치(10)를 개략적으로 나타낸 것이다. 데이터 처리장치는, 메모리(26)에 기억된 데이터 값을 참조하여 데이터 처리 연산을 행하는 CPU 11, CPU 12, GPU(13) 및 암호화 엔진(14)을 구비한다. 이들 데이터 처리 유닛들은 시스템 인터컨넥트(25)를 거쳐 메모리(26)에 기억된 데이터 값들을 액세스한다. 사실상, (CPU들 사이에 걸리는 연장 도트들로 나타낸 것과 같이) 2개의 CPU 11 및 12보다 많은 수의 CPU들이 설치되어도 되지만, 도 1의 예시에서는 간략을 위해 2개의 CPU만을 도시하였다. 각각의 데이터 처리 유닛들 11-14는 가상 메모리 어드레스를 참조하여 그것의 데이터 처리 연산을 행하도록 구성되므로, 각각의 데이터 처리 유닛은 각각의 데이터 처리 유닛에 의해 사용된 가상 메모리 어드레스를 메모리(26) 내부에 기억된 페이지 테이블을 참조하여 메모리(26)에 의해 사용되는 물리 메모리 어드레스로 변환하도록 구성된 메모리 관리 유닛 15-18(즉, CPU 11 및 12에 대한 MMU 15 및 16과, GPU(13) 및 암호화 엔진(14)에 대한 입출력 MMU(IOMMU) 17 및 18)을 각각 구비한다, 메모리(26)로부터의 페이지 테이블 검색과 관련된 대기시간을 피하기 위해, 각각의 MMU는 가장 최근에 사용된 어드레스 변환들의 세트를 캐시하도록 구성된 변환 색인 버퍼(TLB) 19-22를 구비한다.
데이터 처리장치(10)는 다수의 가상 머신들을 관리하도록 구성되고, 이들 가산 머신은 특히 CPU 11, 12에 의해 관리된다. 도 1에 나타낸 것과 같이, 특정한 가상 머신이 특정한 CPU와 관련되지만(예를 들면, 도시한 것과 같이 VM1이 CPU 11과 VM2가 CPU 12와 관련된다), 예를 들어 가상 머신이 다수의 CPU들에 의해 관리되는 다른 구성도 가능하다. 하이퍼바이저도 CPU들에 의해 관리되는데, 이것은 도시된 실시예에서는, 데이터 처리장치 내부의 모든 CPU들에 의해 관리되지만, 마찬가지로 이것은 단지 일례를 나타낸 것으로, 다른 실시예에서는 하이퍼바이저가 설치된 모든 CPU들보다 적은 수에 의해 관리될 수도 있다. 따라서, CPU 11 및 12는 범용 데이터 처리 유닛인 한편, GPU(13) 및 암호화 엔진(14)은 CPU 대신에 특정한 데이터 처리 작업을 행하도록 구성된 더 전용의 장치인 것을 알 수 있다. 예를 들면, GPU(13)는 특정한 그래픽 처리 연산(예를 들면, 비디오 인코딩 및 디코딩)을 행하도록 설치되는 한편, 암호화 엔진(14)은 데이터 복호화 및 암호화를 행할 수 있다.
일반적으로 말하면, 특정한 TLB 내부의 엔트리들은, 이 TLB 엔트리와 관련된 가상 머신을 식별하는 식별자 VMID로 태그가 붙여진다. 이와 같은 구성은, 데이터 처리장치에 의해 관리되고 있는 다수의 가상 머신의 데이터 처리 연산들 사이의 전환을 허용하므로, TLB의 플러싱(flushing)을 필요로 하지 않고 이들 가상 머신에 할당된 페이지 테이블들 사이의 전환을 허용한다. 특정한 CPU가 그것의 관련된 TLB 내부의 TLB 엔트리를 무효화하기를 원하는 경우에, 도 2에 도시된 것과 같이, CPU 11은 무효화하고자 하는 페이지의 가상 어드레스(VA), 어드레스 공간 식별자(ASID) 및 가상 머신 식별자(V<ID)를 명시하는 TLB 무효화 명령을 브로드캐스트할 수 있다. 따라서, 무효화는 어드레스, ASID 및 VMID 특이적이므로, 예를 들어 VMID 14의 ASID 3에 대한 페이지 0x12000의 무효화는 VMID15의 ASID 3에 대한 페이지 0x12000을 무효화하지 않는다.
로컬 TLB 19에서 무효화된 이 TLB 엔트리 뿐만 아니라, 시스템 인터컨넥트(25)를 거친 브로드캐스트에 의해, 시스템 내부의 다른 TLB들에 있는 관련된 TLB 엔트리들(도 2에서는 간략을 위해 TLB 20 및 21만 도시하였다)이 그후 마찬가지로 무효화된다는 사실에서 메모리 시스템의 분배 속성이 반영된다. 이때, GPU(13)도 CPU로부터 프로그래밍 명령을 수신하는 것으로 도 2에 도시되어 있으며, 이들은 브로드캐스트 TLB 무효화 명령과 별개로 수신된다는 점에 주목하기 바란다. 따라서, 이것은 추가적인 인터페이스를 표시하고, 이 인터페이스를 거쳐 CPU가 GPU를 프로그래밍할 수 있으며, 그후 이 추가적인 인터페이스가 CPU에 의해 사용되어 TLB 내부의 엔트리들이 무효화될 수 있게 할 수 있다. GPU 내부의 엔트리들이 브로드캐스트 무효화 명령들에 대해 "영향을 받지 않은 것(immune)"으로 표시되는 경우에, (도 4b를 참조하여 이하에서 더욱 상세히 설명하는 것과 같이) 이것을 채용해도 된다.
도 3은 CPU 내부의 특정한 가상 머신 식별자에게 보이는 어드레스 공간과, 대응하는 가상 머신 식별자 및 GPU 내부의 (이하에서 상세히 설명하는) 관련된 가상 머신 식별자에 대해 게스트 물리 어드레스(중간 물리 어드레스)를 물리 메모리 어드레스들로 변환하는 것이 개략적인 개관을 제시한 것이다. 도 3의 예시하는, 특히, 다양한 레벨의 특권이 존재하고 이에 따라 이들 특권 레벨에 대해 시스템 내부의 더 작은 특권을 갖는 장치로부터 보호를 필요로 하는 메모리 내부에 기억된 데이터가 존재하는 시스템과 관련해서 이해하여야 한다. 도 3에 도시된 실시예에서는, GPU는 시스템 내부의 더 큰 특권을 갖는 장치인 한편, (식별자 VMID 4를 갖는) CPU에 의해 관리되는 가상 머신은 시스템 내부의 더 작은 특권을 갖는 에이전트이다. 이때, 간략을 위해 도시하지는 않지만, 도 3의 예시에서는, 게스트 물리 어드레스가 (스테이지 1 페이지 테이블을 사용하여) 가상 어드레스의 변환에 의해 발생된 것이 내포되어 있다.
하이퍼바이저는 시스템 내에서 물론 더 큰 특권을 갖는 에이전트이며 메모리 내부의 보호된 페이지에 대한 액세스를 중재하는데 사용된다. 따라서, 하이퍼바이저는 GPU에게 특정한 페이지를 노출시켜 이것에 대해 특정한 데이터 처리 작업이 행해질 수 있도록 하는 요구를 가상 머신으로부터 수신할 수 있다. 이것을 위해, 하이퍼바이저는 GPU에 의해 사용되는 가상 머신의 스테이지 2 페이지 테이블의 복사본을 만든 후, 이 특정한 페이지를 가상 머신 자신의 스테이지 2 페이지 테이블로부터 제거한다. 그 결과, 이들 페이지는 그후에 GPU가 (그들의 원래의 메모리 어드레스)에서 액세스 가능한 한편, 발생하는 가상 머신 자체는 액세스가 불가능하다. 그후, GPU가 이들 위치에 포함된 데이터를 액세스할 수 있는 것을 제외하고는, 가상 머신 소프트웨어는 이들 보호된 페이지 내부의 버퍼 내부에 포인터를 갖는 GPU를 프로그래밍하고, 작업을 제출한다.
보통 때는, 가상 머신에 할당된 (GPU(13) 등의) 장치는 스테이지 2 어드레스 변환을 공유하여, 장치와 가상 머신이 동일한 게스트 물리 어드레스 공간을 볼 수 있다. 이와 같은 상황에서, 장치 MMU가 가상 머신의 CPU 2 페이지 테이블을 공유하면, MMU가 동일한 VMID를 페이지 테이블로부터 생성된 그 자신의 TLB 엔트리들과 관련시켜야 한다. 이것은, CPU로부터 분배된 가상 메모리(DVM) TLB 무효화 명령이 장치 MMU TLB 엔트리와 일치하여 이들 엔트리들이 CPU 자신의 TLB 내부의 엔트리들과 동시에 올바르게 무효화될 수 있다는 것을 의미한다. 이와 같은 구성은, DVM 브로드캐스트 TLB 무효화가 하이퍼바이저를 거친 장치 MMU와의 소프트웨어 통신의 대안보다 훨씬 더 빠를 수 있기 때문에 유리하다.
그러나, 더 작은 특권을 갖는 가상 머신이 GPU에게 주어진 보호된 버퍼들을 제어하는 상황에서는, CPU의 MMU 및 GPU의 MMU가 서로 다른 스테이지 2 페이지 테이블을 사용하여, GPU가 CPU의 뷰(view)로부터 제거된 보호된 버퍼들을 액세스할 수 있는 것 이외에, CPU가 할 수 있는 모든 것을 액세스할 수 있도록 해야 한다.
가상 머신이 GPU에게 2가지 다른 블록의 데이터, 즉 (서로 다른 페이지 테이블 매핑을 사용하여 버퍼를 보호하는) 전술한 것과 같이 보호된 한 개의 데이터와, 보호되지 않고 가상 머신 스테이지 2 페이지 테이블을 공유하는 나머지 데이터를 동시에 처리하도록 요구할 때 문제가 발생한다. 보호되지 않는 버퍼와 관련된 데이터 처리는 공유된 페이지 테이블에 할당된 가상 머신 식별자(도 3의 예에서는 VMID 4)를 갖게 된다. 그러나, 보호된 버퍼는 (보호된 버퍼에 대한 액세스를 허용하는) 다른 페이지 테이블에 대해 동일한 VMID와 관련될 수 없는데, 이와 같이 행하는 경우에는 2개의 다른 소스로부터의 매핑을 혼동시켜 일부의 MMU 구현이 보호를 파괴하도록 하기 때문이다.
따라서, 필요한 페이지 테이블 매핑을 올바르게 준수하도록 보장하기 위해서는, 다른 VMID를 사용하여 보호된 데이터를 액세스하는 것이 필요하다. 그러나, 종래의 TLB 무효화 기술에 따르면, 원래의 VMID에 대한 CPU로부터의 DVM 브로드캐스트 TLM 무효화와 일치하지 않기 때문에, 이것은 추가적인 VMID와 관련된 엔트리들의 전술한 추가적인 수동 소프트웨어 무효화를 필요로 할 것이다. 이것은 하이퍼바이저 트랩(trap)을 포함할 수 있어, 성능을 열화시킬 수 있다.
그러나, 본 발명은, 단일의 DVM 브로드캐스트 TLB 무효화를 사용하여 원래의 가상 머신과 가상 머신에 할당된 장치(즉, 도 3의 예에서는 GPU) 내부에 할당된 "보조" VMID에 대한 엔트리를 무효화할 수 있도록 하는 MMU에 대한 변형에 의해 이 문제를 해소함으로써, 성능을 향상시킨다.
본 발명에 의해 도입된 변형은, 시스템 하이퍼바이저가 특정한 원래의 가상 머신과 연관된 관련된 VMID들을 할당할 수 있도록 하는 "와일드카드"의 변형이다. 예를 들면, 이와 같은 "와일드카드"는 도 4a의 예시적인 구성에서 나타낸 것과 같이 TLB 엔트리 내부의 필드로서 기억된다. 이들 TLB 엔트리들을 이용하는(즉, 특정한 페이지 어드레스에 대해 이 TLB 내부에서 룩업을 행하는) 데이터 처리 작업은, 페이지 어드레스와 VMID에 대해 TLB 엔트리들을 정확히 대조하여, MMU가 2개의 다른 페이지 테이블의 보호를 실행할 수 있다. 그러나, 들어오는 DVM 무효화 명령은 와일드카드를 사용하여 TLB 엔트리들과 대조하므로, 한 개의 무효화가 한 개보다 많은 수의 VMID와 양쪽 페이지 테이블들에 영향을 미칠 수 있다. 이때, 도 4a에서 구성된 TLB 엔트리들은 어드레스 공간 식별자 ASID를 더 포함하고, 수신된 무효화 명령은 ASID 특이적이 되도록 구성되거나 무효화를 위해 ASID 값이 무시되도록 구성될 수 있다.
도 4a에 도시된 TLB 엔트리 내부의 무효화 와일드카드 필드는 도 4b에 나타낸 것과 같이 구성된다. 따라서, 도 4b에서 볼 수 있는 것과 같이, 무효화 와일드카드 필드의 상위 비트는, 와일드카드가 VMID 값의 최상위 비트(들)("상단(top)")에 적용되어야 하는지 VMID 값의 최하위 비트(들)("하단(bottom)")에 적용되어야 하는지 명시한다. 그후, 무효화 와일드카드 필드의 하위 2 비트는 무시되어야 하는 VMID 값 내부의 비트들의 수를 명시한다. 도시한 것과 같이, 이와 와일드카드 값이 "00"으로 설정되면, "와일드카드" 기능이 오프되고 무효화 명령에 응답하여 VMID 값의 정확한 일치가 요구된다. 와일드카드 값에 대해 각각 "01" 및 "10"의 값을 명시함으로써 VMID 값의 한 개 또는 두 개의 비트가 무시된다. VMID의 최하위 비트들에 대해 와일드카드가 적용되면, 하이퍼바이저가 인접한 쌍(예들 들면, 도 4a에 도시된 예에서는 VMID 4 및 VMID 5의 쌍)으로 관련된 VMID들을 할당하고, 또는 이와 달리 와일드카드가 VMID 값의 최상위 비트들에 할당되면, 이것은 하이퍼바이저가 "거울에 비친" 그룹들로 분할된 VMID 공간을 할당할 수 있게 한다. 예를 들어, 16비트 VMID들에 대해, 가상 머신은 VMID 0x300을 사용할 수 있으며, 그것의 보호된 장치 MMU 데이터 처리 스트림은 0x8300을 사용할 수 있다. 특정한 TLB 엔트리가 보호될 수 있도록 하고 브로드캐스트 무효화 명령에 대해 영향을 받지 않을 수 있도록 하는 "11"의 와일드카드 값의 추가적인 구성도 제공된다. 전술한 것과 같이, 이것은 주변 데이터 처리 유닛들(도 1에 도시된 예에서는 GPU(13) E는 암호화 엔진(14) 중에서 한 개의 IOMMU에 설치된 TLB의 특정한 콘텐트를 "보호하기 위해" 사용되어, 이 콘텐츠가 별개의 인터페이스를 거쳐 CPU로부터 수신된 직접 프로그래밍 명령에 의해서만 무효화될 수 있도록 하고, 브로드캐스트 무효화 명령에 응답해서는 무효화될 수 없도록 한다.
따라서, 이와 같은 구성은 하이퍼바이저가 특정한 가상 머신에 대해 VMID들의 그룹을 할당하도록 허용하여, (CPU로부터 직접 또는 가상 머신의 제어하에 있는 장치를 거쳐) 가상 머신에 의해 개시된 "정규" 트랜잭션을 위해 사용될 수 있는 한편, 나머지 VMID들이 보호를 요구하는 관련된 데이터 처리 작업을 위해 사용될 수 있다. 그후, 이와 같은 방식으로 추가적으로 설정될 수 있는 "보호된" VMID들의 수는 설치된 와일드카드의 크기에 따라 변동될 수 있지만, 도 4a 및 도 4b의 예에서는 이것을 4개의 VMID들의 그룹으로 볼 수 있다. 도 4a의 TLB에 도시된 예시적인 엔트리들을 참조하면, 페이지 어드레스 <A> 및 VMID 4를 명시하는 들어오는 DVM 무효화는 테이블에 있는 첫 번째 엔트리가 무효화되도록 할 것이지만, 이 테이블의 첫 번째 엔트리와 관련된 무효화 와일드카드 필드가 VMID 값의 한 개의 최하위 비트가 무시되어야 한다는 것을 표시하므로, 무효화 명령이 TLB 테이블에 있는 첫 번째 엔트리에 대해 무효화 명령이 VMID4를 명시하는지 VMID5를 명시하는지 대조하기 때문에, 페이지 어드레스 <A> 및 VMID5를 명시하는 들어오는 DVM 무효화가 테이블에 있는 첫 번째 엔트리를 무효화되도록 할 것이다. 마찬가지로, 도 4a에 도시된 TLB 테이블 내부의 세 번째 엔트리도, 동일한 무효화 와일드카드 값(001)에 의해, 페이지 어드레스 <A> 및 VMID4 또는 VMID5를 명시하는 들어오는 DVM 무효화 명령에 의해 무효화될 것이다. 이와 달리, 도 4a에 도시된 TLB 테이블의 두 번째 엔트리는, 무효화 와일드카드 필드가 정확한 일치가 요구되는 것으로 표시하기 때문에, 페이지 어드레스 <B> 및 VMID5를 명시하는 DVM 무효화 명령에 의해서만 무효화될 수 있다.
이하, 도 5a 내지 도 5c를 참조하여 도 4a 및 도 4b를 참조하여 설명한 실시예의 변형예를 설명한다. 도 4a의 예시적인 TLB 테이블에 있는 첫 번째 및 세번째 엔트리의 비교에 의해, 동일한 페이지 어드레스에 대해 서로 다른 VMID를 갖는 2개의 TLB 엔트리들, 즉 첫 번째 및 세 번째 엔트리가 생성되었다는 것 알 수 있다. 본 발명과 관련해서, VMID 식별자들이 함께 그룹화되는 경우에, 실제로 단지 한 개의 TLB 엔트리가 필요하여 TLB 용량의 더욱 효율적인 이용이 제공될 수 있는 상황이 존재한다. 도 5a는 도 4a에 도시된 TLB 엔트리의 축약된 버전을 나타낸 것으로, 페이지 어드레스, VMID 값 및 와일드카드 무효화 필드에 대한 필드들만 도시되어 있다. 그러나, 이와 같은 변형예에서는, TLB 엔트리 내부에 추가적인 필드, 즉 "와일드카드 룩업"의 필드가 부가되었다. 이와 같은 와일드카드 룩업 값이 제로값일 때, "정규"의 완전히 일치하는 TLB 룩업 거동이 발생한다(즉, 정확히 일치하는데 VMID 값과 페이지 어드레스가 필요하다). 따라서, 도 5a의 상단에 도시된 예에서는, 들어온 어드레스 <E> 및 VMID4에 대해 룩업이 행해지는 경우에, VMID 값이 일치하지 않으므로, 이것은 TLB에서 부적중할 것이다. 그후, 이것은 메모리 내부의 페이지 테이블로부터 필요한 변환을 검색하기 위해 페이지 테이블 워크를 기동한다. 이 결과, 본 실시예에서는, 생성된 엔트리가 VMID5 대신에 VMID를 갖는 것 이외에는 TLB 내부에 이미 존재하는 엔트리와 동일하고, VMID4 및 VMID5가 와일드카드 무효화 필드에 의해 정의된 동일한 와일드카드 그룹에 속한다는 것이 판정된다. 이와 같은 상황에서, 와일드카드 룩업 값이 1로 갱신되어, 룩업시의 VMID 일치 연산을 완화하게 할 수 있다. 따라서, 어드레스 <E> 및 VMID4에 대해 추가적인 룩업이 행해지면, 이것도 이 엔트리에 적중할 수 있다. 이와 같은 상황에 대응하는 어드레스 공간 모습을 도 5b에 개략적으로 도시하였는데, 이것은 VMID4 및 VMID5의 모두가 어드레스 E를 액세스하는 것을 나타내고 있다. 그러나, VMID5는 VMID4가 액세스하지 않는 어드레스 F를 액세스하는 것에 주목하기 바란다. 도 5c를 참조하면, VMID5와 관련하여 이 어드레스 F에 대해 룩업이 처음으로 행해지면, 이것은 어드레스 F 및 VMID5에 대해 도시된 TLB 어드레스가 생성되게 하며, 이때에는 이 어드레스가 엄밀하게 VMID5에만 속하고 이 어드레스에 대해 VMID4와의 관련이 존재하지 않기 때문에, 와일드카드 무효화 값이 정확한 일치를 표시하도록 설정된다. 따라서, 어드레스 F 및 VMID4에 대한 그후의 룩업이 행해지면, 이 엔트리에 대한 갱신이 행해지지 않는다(즉, 와일드카드 룩업 값이 제로값으로 유지되고 이 엔트리에 대해 어드레스 F 및 VMID4의 룩업이 항상 부적중하게 된다).
도 6은 MMU에 의해 브로드캐스트 무효화 명령이 수신될 때 일 실시예의 방법에서 취해지는 단계들의 시퀀스를 개략적으로 나타낸 것이다. 스텝 50에서 흐름이 개시하여, 무효화 명령이 수신될 때까지 처리가 대기한다. 이와 같은 무효화 명령이 수신되면, 스텝 51로 흐름을 진행하여, 와일드카드 정보가 적용가능한지 판정한다. 즉, (전역 정의 값으로서 또는 무효화 명령 그 자체의 일부로서 TLB 엔트리 그 자체 내부에 기억된) VMID 값이 일치하는 방식을 수정하기 위해 와일드카드 정보를 이용가능한지 판정한다. 그렇지 않은 경우에는, 스텝 52로 흐름을 진행하여, TLB 적중이 발생하기 위해 VMID 값의 정확한 일치가 요구된다. 그후, 스텝 53에서, 명시된 어드레스 및 VMID 값에 대해 TLB 적중이 정말로 발생하였는지 판정한다. 발생한 경우에는, 스텝 54에서, TLB 내부의 식별된 엔트리가 무효화된다. 그후, 스텝 50으로 처리를 되돌려 다음 무효화 명령이 수신되는 것을 대기한다. 그러나, 스텝 53에서, 명시된 어드레스 및 VMID 값에 대해 TLB 적중이 존재하지 않는 경우에는, 스텝 55(여기에서는 TLB 무효화가 행해지지 않는다)를 거쳐 스텝 50으로 흐름을 진행한다.
그러나, 스텝 51에서, 와일드카드 정보가 적용가능하다고 판정된 경우에는, 스텝 56에서 와일드카드 정보가 "00"을 명시하여 실제로 VMID의 정확한 일치가 요구되는지 여부를 판정하고, 전술한 것과 같이 스텝 52를 거쳐 흐름을 진행한다. 그러나, 그렇지 않은 경우에는, 스텝 57에서, 무효화 와일드카드 정보가 "11"을 명시하여 이 엔트리에 대해 브로드캐스트 TLB 무효화를 무시해야 한다는 것을 표시하는지 판정하고, 스텝 55를 거쳐 흐름을 진행하여, TLB 무효화가 행해지지 않는다. 그러나, 무효화 와일드카드 정보가 "01" 또는 "10"을 명시하는 경우에는, 스텝 58로 처리를 진행하여, TLB 내부의 일치가 일어난 것으로 판정될 때, (도 4b에서 정의한 것과 같이) VMID 값의 지정된 비트들이 무시되고, 전술한 것과 같이 스텝 53으로 처리를 진행한다.
도 7a, 도 7b 및 도 7c는 무효화 와일드카드 정보가 제공되는 다양한 방식을 나타낸 3가지 다른 MMU 구성을 개략적으로 나타낸 것이다. 도 7a에 도시된 구성은 도 4a 및 도 5a 내지 도 5c를 참조하여 전술한 것에 대응하며, 각각의 TLB 엔트리와 관련하여 무효화 와일드카드 정보가 개별적으로 기억된다. 본 실시예에서는, MMU(100) 내부의 TLB(101)의 제어부(102)가 무효화 명령이 언제 수신되었는지를 식별하고 이에 따라 어드레스 일치회로(103)를 제어하여, TLB 엔트리(104)에서 검색된 무효화 와일드카드 정보를 사용하여 무효화 명령에서 수신된 VMID를 TLB 엔트리에 기억된 VMID와 대조하는 것을 수정해야 한다. 역으로, MMU(100) 내부에서 룩업이 행해질 때, 제어부(102)는 어드레스 일치회로(103)를 제어하여, 수신된 VMID와 TLB 엔트리(104) 내부에 기억된 VMID 사이의 엄밀한 일치를 요구한다. 도 7b에 도시된 실시예에서는, 무효화 와일드카드 정보가 TLB(111)의 TLB 엔트리(114) 내부의 각각의 개별적인 엔트리와 관련하여 기억되지 않고 그 대신에 MMU(110)에 의해 수신된 모든 무효화 명령에 대해 사용하기 위해 전역 액세스가능한 레지스터(115)에 정의되는 것을 제외하고는, 도 7a의 MMU(100)과 매우 유사하게 구성된다. 따라서, 본 실시예에서는, 제어부(112)가 무효화 명령이 수신된 것을 식별하고 무효화 와일드카드 정보를 이용하도록 어드레스 일치회로(113)를 구성할 때, 어드레스 일치회로(113)는, TLB 엔트리(114)로부터 판독된 특정한 TLB 엔트리와 관련시키는 것이 아니라, 무효화 와일드카드 레지스터(115)로부터 이 무효화 와일드카드 정보를 수신한다. 이때, 도 7b의 실시예에서는 전역 액세스 가능한 무효화 와일드카드 레지스터(115)를 MMU(110)의 구성 부분으로 도시하였지만, 이것은 필수적인 것은 아니며, 예를 들어, 복수의 MMU들이 더욱 일반적으로 액세스할 수 있도록, 예를 들어 무효화 와일드카드 레지스터(115)가 데이터 처리장치에 의해 다양한 다른 위치에 설치될 수도 있다. 마지막으로, 도 7c는 명령의 일부로서 무효화 와일드카드 정보를 그 자체가 포함하는 무효화 명령에 응답하도록 구성된 MMU(120)를 개략적으로 나타낸 것이다. 따라서, 이와 같은 실시예에서는, TLB(121)의 제어부(122)는, 무효화 명령이 수신된 사실을 식별하고, TLB 엔트리(124)에 대해 일치가 발견된 것으로 판정할 때 이것을 이용하도록 어드레스 일치회로(123)를 이에 따라 구성하기 위해 이 무효화 명령으로부터 무효화 와일드카드 정보를 유도하도록 구성된다.
이때, 이 시점에서, 도 7a 내지 도 7c에 도시되고 전술한 것과 같이, 일치가 발견되었는지(즉, TLB적중) 판정하는 어드레스 일치는 VMID 값에 근거하여 행해지지만, ASID 값에 근거하여 행해질 수도 있다는 것에 주목할 가치가 있다. 사실상, 전술한 것과 같이, 본 발명에서 명시적으로 설명한 실시예에 대한 변형예에서는, ASID 값이 실제로는 함께 그룹화되는 "식별자"일 수도 있으므로, 본 발명의 기술에 의해 한 개의 ASID값을 명시하는 무효화 명령이 다른 ASID 값들(그러나 다른 점에서는 동일하다) 엔트리들에 적용하도록 확장되어도 된다.
도 8은 (도 7c에 도시된 실시예의 MMU(120)에 의해 수신되는) 관련된 VMID 값 및 와일드카드 정보를 갖는 TLB 무효화 명령의 생성과 관련된 CPU(130)를 개략적으로 나타낸 것이다. CPU(130)는 가상 머신(VM)(131) 및 하이퍼바이저(134)를 관리하고 있다. 본 실시예에서, 가상 머신(131)은, 그것이 발생하는 TLB 무효화 명령과 관련되어야 하는 특정한 어드레스 공간 식별자(ASID(132)) 뿐만 아니라, 가상 머신이 무효화하기를 원하는 어드레스(1333)를 알고 있지만, 이 가상 머신이 데이터 처리 시스템의 특권이 작은 구성요소이기 때문에, 가상 머신은 그 자체가 가상 머신 식별자(VMID) 또는 와일드카드 정보를 무효화 명령에 첨부하지 않고, 그 대신에 이 정보의 추가를 특권을 갖는 하이퍼바이저(134)에게 넘긴다. 하이퍼바이저(134)는 VMID 정보(136) 및 와일드카드 정보(137)를 가상 머신(131)이 액세스하지 않는 시스템 레지스터(135)에 유지하고, 가상 머신에 의해 TLB 무효화 명령이 발생될 때, 하이퍼바이저(134)는 이 무효화 명령을 "가로채", (발생자를 가상 머신(131)으로서 식별하기 위한) 적절한 VMID 정보 및 적절한 와일드카드 정보(137)를 추가하도록 구성된다. 따라서, 이와 같은 구성은 VMID 및 와일드카드 정보의 설치와 관련된 더 높은 레벨의 보안을 유지한다.
도 9는 도 5a 내지 도 5c의 실시예에 대해 전술한 기능을 지원하는 실시예에서의 TLB(140)의 구성을 개략적으로 나타낸 것이다. TLB(140)에 의해 룩업 요구가 수신될 때, 제어부(141)는 TLB(140)의 TLB 엔트리들(142) 중에서 룩업을 개시하도록 구성된다. 이때, 간략을 위해 직접 매핑된 TLB의 예를 설명하지만, 본 발명의 기술분야의 당업자는 본 발명의 기술이 마찬가지로 잘 적용되는 세트-연상형(set-associative) TLB 엔트리 스토리지에도 익숙할 것이다. 그러나, 이와 같은 직접 매핑된 실시예에서는, 보류 룩업 테이블(143)을 이용하여 TLB 엔트리(142)의 색인을 붙이고, 그후 식별된 TLB 엔트리를 판독하여 144에서 일시적으로 유지된다. 그후, 제어부(141)의 제어하에서 구성된 엔트리 일치 로직(145)이 요구된 룩업(페이지 어드레스, VMID 등)이 판독된 TLB 엔트리(144)와 일치하는지 판정한다. 일치하는 경우에는, 이 엔트리를 반환 어드레스 변환으로서 간단히 반환할 수 있다. 그러나, 필요한 일치가 수립되지 않은 경우에는, 페이지 테이블 워크처리(146)를 개시하여 메모리 내부의 페이지 테이블들로부터 필요한 어드레스 변환을 검색한다. 페이지 테이블 워크 응답을 반환할 때, 제어부(141)는 엔트리 일치 로직(145)을 제어하여, 실제로 페이지 테이블 워크 응답으로부터 반환된 엔트리가 VMID 값이 다르지만, 동일한 VMID 그룹에 속하는 판독된 TLB 엔트리(144)와 일치하는지 여부를 판정한다(즉, 이것들은 전술한 방법으로 와일드카드 정보에 의한 관련된 VMID 값들이다). 이것은, 제어부(141)가 도 5a를 참조하여 전술한 방식으로 TLB 엔트리(142) 내부의 판독된 TLB 엔트리와 관련되어 기억된 와일드카드 룩업 값을 갱신하도록 구성되는 경우에 해당한다. 그후, 판독된 TLB 엔트리(144)도 반환된 어드레스 변환으로서 반환된다. 그러나, 페이지 테이블 워크 응답이 다른 식으로 다른 엔트리를 반환하는 경우에는, 이 엔트리는 보류 룩업 어드레스(143)에 의해 식별된 색인에 위치한 TLB 엔트리를 교체하게 되고, 페이지 테이블 워크 응답 그 자체로부터 반환된 엔트리가 반환 어드레스 변환으로서 반환된다.
도 10은 TLB에 의해 룩업이 수신될 때 일 실시예의 방법에서 취해지는 스텝들의 시퀀스를 개략적으로 나타낸 것이다. 스텝 150에서 흐름이 개시하는데, 이 스텝에서는 룩업이 수신될 때까지 흐름이 계속 순환한다. 그후, 흐름이 스텝 150으로 진행하여, TLB 내부의 룩업이 행해진다. 그후, 스텝 152에서, TLB 내부의 식별된 엔트리(또는 엔트리들)에 대해 와일드카드 룩업 플래그가 설정되었는지 판정한다. 설정된 경우에는, 룩업에 대한 일치를 찾을 때 VMID의 명시된 비트들을 무시하도록 일치회로롤 구성하는 스텝 153을 거쳐 흐름이 진행한다. 그후, 스텝 154에서, 판독된 TLB 엔트리와 요구된 룩업 사이에서 일치를 발견하였는지를 일치회로에 의해 판정한다. 일치가 발견된 경우에는, 스텝 155에서, 일치하는 변환이 반환되고 스텝 150으로 흐름이 되돌아간다.
그러나, 스텝 154에서 일치가 발견되지 않은 경우에는, 스텝 156으로 흐름을 진행하여, 페이지 테이블 워크처리가 개시된다. 그후, 스텝 157에서, 페이지 테이블 워크 응답이 반환되면, 이것이 변환을 이용할 수 없다는 것을 나타내는지 판정한다. 이 경우에는, 대응하는 "변환 없음" 응답이 스텝 158에서 반환되고, 스텝 150으로 흐름이 복귀한다. 그러나, 요구된 룩업에 대해 변환이 가능한 경우에는, 스텝 159로 흐름을 진행하여, 페이지 테이블 워크 응답이 판독된 TLB 엔트리와 VMID 값만 다른지 여부와, 각각의 VMID 값들이 서로 관련되는지 여부를 판정한다. 그렇지 않은 경우에는, 스텝 160으로 흐름을 진행하여, 이 페이지 테이블 워크 응답에 의해 발생된 엔트리를 사용하여 새로운 TLB 엔트리를 생성하고, 스텝 161에서 이것은 요구된 변환으로서 반환한 후, 스텝 150으로 처리를 되돌린다. 그러나, 페이지 테이블 워크 응답이 식별된 엔트리와 VMID 값만 다르고 VMID들이 서로 관련되는 것으로(즉, 한 개의 그룹에 속하는 것으로) 식별된 경우에는, 스텝 162로 흐름을 진행하여, 어느 한 개의 VMID에 관련된 추가적인 룩업 요구가 기억된 TLB 엔트리에 적중할 수 있도록 대응하는 엔트리에 대해 와일드카드 플래그 룩업이 설정된다. 그후, 스텝 161로 흐름을 진행하여, 이 엔트리가 어드레스 변환으로서 반환되고 스텝 150으로 흐름이 진행한다.
전체적으로 요약하면, 본 발명은, 제 1 어드레싱 시스템에서 사용된 제 1 어드레스와 제 2 어드레싱 시스템에서 사용된 제 2 어드레스가 로컬하게 기억되는 데이터 처리장치와 데이터 처리방법을 제공한다. 각각의 기억된 어드레스 변환이 대응하는 식별자와 함께 기억된다. 선택된 기억된 어드레스 변환에 대해 무효화 처리를 행하기 위한 무효화 명령에 응답하여, 선택된 기억된 어드레스 변환이 무효화되고, 이때 선택된 기억된 어드레스 변환이 무효화 명령 내에서 명시된 제 1 어드레스와 명시된 식별자에 의해 식별된다. 무효화 처리가 한 개보다 많은 수의 식별자를 식별자들의 그룹으로서 관련시키는 식별자 그룹화 정보에 의해 더 구성되고, 명시된 제 1 어드레스와 일치하고 명시된 식별자가 속하는 식별자들의 그룹 내의 임의의 식별자와 일치하는 모든 기억된 어드레스 변환에 대해 무효화 처리가 적용된다.
첨부도면을 참조하여 본 발명의 예시적인 실시예들을 상세히 설명하였지만, 본 발명은 이들 실시예에 한정되지 않으며, 첨부된 청구범위의 보호범위 및 사상을 벗어나지 않으면서 본 발명이 속한 기술분야의 당업자에 의해 다양한 변경, 부가 및 변화가 행해질 수 있다는 것은 자명하다. 예를 들면, 종속항들의 특징들의 다양한 조합이 독립항들의 특징과 행해질 수도 있다.
Claims (16)
- 데이터 처리장치로서,
메모리에 기억된 데이터 값들을 참조하여 데이터 처리 연산을 행하도록 구성된 데이터 처리회로를 구비하고, 각각의 데이터 처리 연산은 그것과 관련된 식별자를 갖고,
상기 데이터 처리장치는,
상기 데이터 처리회로에 의해 행해진 상기 데이터 처리 연산에 대응하는 제 1 어드레싱 시스템에서 사용된 제 1 어드레스와 상기 메모리에 의해 사용된 제 2 어드레싱 시스템에서 사용된 제 2 어드레스 사이의 어드레스 변환을 기억하도록 구성된 어드레스 변환회로를 더 구비하고, 각각의 기억된 어드레스 변환은 대응하는 식별자와 함께 기억되고,
상기 어드레스 변환회로는 무효화 명령에 응답하여 선택된 기억된 어드레스 변환에 대해 무효화 처리를 행함으로써 상기 선택된 기억된 어드레스 변환을 무효화하도록 구성되고, 상기 선택된 기억된 어드레스 변환은 명시된 제 1 어드레스 및 명시된 식별자에 의해 상기 무효화 명령에서 식별되고,
상기 어드레스 변환회로는 식별자 그룹화 정보에 의해 더 구성된 상기 무효화 처리를 행하도록 더 구성되고, 상기 식별자 그룹화 정보는 한 개보다 많은 수의 식별자를 함께 식별자들의 그룹으로서 관련시키고, 상기 명시된 제 1 어드레스와 일치하고 상기 명시된 식별자가 속하는 상기 식별자들의 그룹에 있는 식별자와 일치하는 모든 기억된 어드레스 변환에 상기 무효화 처리를 적용하는 데이터 처리장치.
- 제 1항에 있어서,
상기 데이터 처리회로는 복수의 가상 머신들을 관리하여 상기 데이터 처리 연산을 행하도록 구성되고, 각각의 어드레스 변환과 관련해서 상기 어드레스 변환회로에 의해 기억된 상기 대응하는 식별자는 가상 머신 식별자인 데이터 처리장치.
- 제 1항 또는 제 2항에 있어서,
상기 어드레스 변환회로는 각각의 기억된 어드레스 변환과 관련하여 상기 식별자 그룹화 정보를 기억하도록 구성된 데이터 처리장치.
- 제 1항 내지 제 3항 중 어느 한 항에 있어서,
상기 식별자 그룹화 정보는 상기 무효화 처리에 대한 기억된 어드레스 변환과 일치할 때 무시되어야 하는 상기 무효화 명령 내부의 상기 명시된 식별자의 일부를 명시하는 데이터 처리장치.
- 제 4항에 있어서,
상기 식별자 그룹화 정보는 상기 명시된 식별자의 상기 일부가 최상위 부분인지 최하위 부분인지를 명시하는 데이터 처리장치.
- 제 3항 내지 제 5항 중 어느 한 항에 있어서,
상기 식별자 그룹화 정보는 브로드캐스트 금지 마커(no broadcast marker)를 명시하도록 구성됨으로써, 상기 무효화 명령이 브로드캐스트 무효 명령으로서 수신된 경우에는, 상기 무효화 명령에 응답하여 상기 브로드캐스트 금지 마커로 표시된 기억된 어드레스 변환에 대해 상기 무효화 처리를 행하지 않도록 구성된 데이터 처리장치.
- 제 1항 내지 제 6항 중 어느 한 항에 있어서,
상기 데이터 처리장치는, 상기 어드레스 변환회로에 의해 행해진 모든 어드레스 무효화 처리에 적용하기 위해 상기 어드레스 변환회로가 액세스 가능한 상기 식별자 그룹화 정보를 기억하도록 구성된 데이터 처리장치.
- 제 1항 내지 제 7항 중 어느 한 항에 있어서,
상기 어드레스 변환회로는 상기 무효화 명령 내부의 상기 식별자 그룹화 정보를 식별하도록 구성된 데이터 처리장치.
- 제 8항에 있어서,
상기 데이터 처리회로는 2가지 데이터 처리 모드들 중에서 한 개에서 동작하도록 구성되고, 제 1 데이터 처리 모드에서는, 상기 데이터 처리회로가 상기 식별자 그룹화 정보를 갖지 않는 상기 무효화 명령을 발행하도록 구성되고 상기 데이터 처리장치가 상기 무효화 명령에 상기 식별자 그룹화 정보를 추가하도록 구성되고, 제 2 데이터 처리 모드에서는, 상기 데이터 처리회로가 상기 무효화 명령을 발행하고 상기 무효화 명령 자체에 상기 식별자 그룹화 정보를 추가하도록 구성된 데이터 처리장치.
- 제 1항 내지 제 9항 중 어느 한 항에 있어서,
상기 데이터 처리회로는 적어도 2개의 데이터 처리 디바이스들을 구비하고, 각각의 식별자들의 그룹에 대해, 상기 어드레스 변환회로는, 이 식별자들의 그룹의 제 1 식별자에 대해서만 상기 적어도 2개의 데이터 처리 디바이스 중에서 제 1 데이터 처리 디바이스에 대해 어드레스 변환을 제공하고, 이 식별자들의 그룹의 임의의 식별자에 대해 상기 적어도 2개의 데이터 처리 디바이스 중에서 제 2 데이터 처리 디바이스에 대해 어드레스 변환을 제공하도록 구성된 데이터 처리장치.
- 제 1항 내지 제 10항 중 어느 한 항에 있어서,
상기 어드레스 변환회로는 룩업 처리를 행하여 수신된 제 1 어드레스 및 수신된 식별자에 대해 어드레스 변환이 기억되어 있는지 판정하도록 구성되고, 상기 어드레스 변환회로는 각각의 기억된 어드레스 변환과 관련하여 룩업 일치 변경자(lookup match modifier)를 기억하도록 구성되고, 상기 룩업 일치 변경자가 제 1 값을 가질 때에는, 상기 수신된 식별자가 기억된 식별자와 완전히 일치하는 경우에만 상기 룩업 처리가 어드레스 변환을 발견하도록 구성되고, 상기 룩업 일치 식별자가 제 2 값을 가질 때에는, 상기 기억된 식별자에 대한 식별자 그룹화 정보에 의해 정의할 때 상기 수신된 식별자가 상기 기억된 식별자가 속하는 식별자들의 그룹 내부의 임의의 식별자와 일치하는 경우에, 상기 룩업 처리가 상기 어드레스 변환을 발견하도록 구성된 데이터 처리장치.
- 제 11항에 있어서,
상기 어드레스 변환회로는, 상기 룩업 처리의 결과로써 어떤 어드레스 변환도 발견되지 않은 경우에는, 검색 처리를 개시하여 메모리에서 어드레스 변환을 페치하도록 구성되고, 상기 룩업 일치 변경자가 상기 제 1 값을 갖고, 상기 수신된 식별자가 일치하지 않았지만, 일치하는 상기 어드레스 변환회로 내부의 기억된 식별자가 속하는 식별자들의 그룹에 상기 수신된 식별자가 속하기 때문에, 상기 룩업 처리의 결과로써 어떤 어드레스 변환도 발견되지 않은 것을 검색 처리가 표시하고, 다른 방식으로 메모리에서 페치된 상기 어드레스 변환이 상기 기억된 식별자에 대해 기억된 어드레스 변환과 일치하는 것으로 상기 검색 처리가 표시하는 경우에는, 상기 어드레스 변환회로가 상기 기억된 식별자에 대한 상기 룩업 일치 변경자를 상기 제 2 값을 갖도록 변경하도록 더 구성된 데이터 처리장치.
- 제 1항 내지 제 12항 중 어느 한 항에 있어서,
상기 어드레스 변환회로는, 상기 제 1 어드레싱 시스템 내부의 페이지 테이블들에 대한 어드레스 변환을 상기 제 2 어드레싱 시스템 내부의 페이지 테이블들에 기억하도록 구성된 변환 색인 버퍼인 데이터 처리장치.
- 제 1항 내지 제 13항 중 어느 한 항에 있어서,
상기 데이터 처리회로는 적어도 2개의 데이터 처리 디바이스들을 구비하고, 상기 적어도 2개의 데이터 처리 디바이스들 중에서 제 1 데이터 처리 디바이스는 범용 중앙 처리 유닛이고, 상기 적어도 2개의 데이터 처리 디바이스들 중에서 제 2 데이터 처리 디바이스는 상기 범용 중앙 처리 유닛 대신에 상기 데이터 처리 연산의 적어도 일부를 행하도록 구성된 슬레이브 장치인 데이터 처리장치.
- 데이터 처리방법으로서,
메모리에 기억된 데이터 값들을 참조하여 데이터 처리 연산을 행하는 단계를 포함하고, 각각의 데이터 처리 연산은 그것과 관련된 식별자를 갖고,
상기 데이터 처리방법은,
데이터 처리회로에 의해 행해진 상기 데이터 처리 연산에 대응하는 제 1 어드레싱 시스템에서 사용된 제 1 어드레스와 상기 메모리에 의해 사용된 제 2 어드레싱 시스템에서 사용된 제 2 어드레스 사이의 어드레스 변환을 기억하는 단계를 더 포함하고, 각각의 기억된 어드레스 변환은 대응하는 식별자와 함께 기억되고,
상기 데이터 처리방법은,
무효화 명령에 응답하여 선택된 기억된 어드레스 변환에 대해 무효화 처리를 행함으로써 상기 선택된 기억된 어드레스 변환을 무효화하는 단계를 더 포함하고, 상기 선택된 기억된 어드레스 변환은 명시된 제 1 어드레스 및 명시된 식별자에 의해 상기 무효화 명령에서 식별되고,
상기 데이터 처리방법은,
식별자 그룹화 정보에 의해 더 구성된 상기 무효화 처리를 행하는 단계를 더 포함하고, 상기 식별자 그룹화 정보는 한 개보다 많은 수의 식별자를 함께 식별자들의 그룹으로서 관련시키고, 상기 명시된 제 1 어드레스와 일치하고 상기 명시된 식별자가 속하는 상기 식별자들의 그룹에 있는 식별자와 일치하는 모든 기억된 어드레스 변환에 상기 무효화 처리를 적용하는 데이터 처리방법.
- 데이터 처리장치로서,
메모리에 기억된 데이터 값들을 참조하여 데이터 처리 연산을 행하는 수단을 구비하고, 각각의 데이터 처리 연산은 그것과 관련된 식별자를 갖고,
상기 데이터 처리장치는,
상기 데이터 처리 연산을 행하는 수단에 의해 행해진 상기 데이터 처리 연산에 대응하는 제 1 어드레싱 시스템에서 사용된 제 1 어드레스와 상기 메모리에 의해 사용된 제 2 어드레싱 시스템에서 사용된 제 2 어드레스 사이의 어드레스 변환을 기억하는 수단을 더 구비하고, 각각의 기억된 어드레스 변환은 대응하는 식별자와 함께 기억되고,
상기 데이터 처리장치는,
무효화 명령에 응답하여 선택된 기억된 어드레스 변환에 대해 무효화 처리를 행함으로써 상기 선택된 기억된 어드레스 변환을 무효화하는 수단을 더 구비하고, 상기 선택된 기억된 어드레스 변환은 명시된 제 1 어드레스 및 명시된 식별자에 의해 상기 무효화 명령에서 식별되고,
상기 데이터 처리장치는,
식별자 그룹화 정보에 의해 더 구성된 상기 무효화 처리를 행하는 수단을 더 구비하고, 상기 식별자 그룹화 정보는 한 개보다 많은 수의 식별자를 함께 식별자들의 그룹으로서 관련시키고, 상기 명시된 제 1 어드레스와 일치하고 상기 명시된 식별자가 속하는 상기 식별자들의 그룹에 있는 식별자와 일치하는 모든 기억된 어드레스 변환에 상기 무효화 처리를 적용하는 데이터 처리장치.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/186,091 US9619387B2 (en) | 2014-02-21 | 2014-02-21 | Invalidating stored address translations |
US14/186,091 | 2014-02-21 | ||
PCT/GB2015/050282 WO2015124899A1 (en) | 2014-02-21 | 2015-02-03 | Invalidating stored address translations |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20160124792A true KR20160124792A (ko) | 2016-10-28 |
KR102317332B1 KR102317332B1 (ko) | 2021-10-26 |
Family
ID=52484511
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020167024444A KR102317332B1 (ko) | 2014-02-21 | 2015-02-03 | 기억된 어드레스 변환의 무효화 |
Country Status (7)
Country | Link |
---|---|
US (1) | US9619387B2 (ko) |
EP (1) | EP3108372B1 (ko) |
JP (1) | JP6509241B2 (ko) |
KR (1) | KR102317332B1 (ko) |
CN (1) | CN105980994B (ko) |
IL (1) | IL246850B (ko) |
WO (1) | WO2015124899A1 (ko) |
Families Citing this family (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9232959B2 (en) | 2007-01-02 | 2016-01-12 | Aquabeam, Llc | Multi fluid tissue resection methods and devices |
EP2259742B1 (en) | 2008-03-06 | 2020-01-01 | AquaBeam LLC | Tissue ablation and cautery with optical energy carried in fluid stream |
EP3351196A1 (en) | 2012-02-29 | 2018-07-25 | Procept Biorobotics Corporation | Automated image-guided tissue resection and treatment |
GB2529394A (en) * | 2014-08-14 | 2016-02-24 | Ibm | Multiprocessor computer system |
US9697137B2 (en) * | 2014-11-14 | 2017-07-04 | Cavium, Inc. | Filtering translation lookaside buffer invalidations |
US9684606B2 (en) * | 2014-11-14 | 2017-06-20 | Cavium, Inc. | Translation lookaside buffer invalidation suppression |
US9898418B2 (en) * | 2015-05-21 | 2018-02-20 | Via Alliance Semiconductor Co., Ltd. | Processor including single invalidate page instruction |
GB2545170B (en) * | 2015-12-02 | 2020-01-08 | Imagination Tech Ltd | GPU virtualisation |
GB2579721B (en) * | 2015-12-02 | 2020-09-16 | Imagination Tech Ltd | GPU virtualisation |
US10042777B2 (en) * | 2016-03-30 | 2018-08-07 | Qualcomm Incorporated | Hardware-based translation lookaside buffer (TLB) invalidation |
US10386904B2 (en) * | 2016-03-31 | 2019-08-20 | Qualcomm Incorporated | Hardware managed power collapse and clock wake-up for memory management units and distributed virtual memory networks |
US9910799B2 (en) | 2016-04-04 | 2018-03-06 | Qualcomm Incorporated | Interconnect distributed virtual memory (DVM) message preemptive responding |
DK3255550T3 (da) * | 2016-06-08 | 2019-07-15 | Google Llc | TLB shootdowns til lave omkostninger |
US10540292B2 (en) * | 2016-06-08 | 2020-01-21 | Google Llc | TLB shootdowns for low overhead |
US10599569B2 (en) | 2016-06-23 | 2020-03-24 | International Business Machines Corporation | Maintaining consistency between address translations in a data processing system |
EP3422192B1 (en) * | 2017-06-28 | 2020-08-12 | Arm Ltd | Address translation data invalidation |
GB2565069B (en) * | 2017-07-31 | 2021-01-06 | Advanced Risc Mach Ltd | Address translation cache |
CN107562514B (zh) * | 2017-08-03 | 2020-11-24 | 致象尔微电子科技(上海)有限公司 | 一种物理内存访问控制与隔离方法 |
US10599461B2 (en) | 2017-09-19 | 2020-03-24 | Microsoft Technology Licensing, Llc | Nested hypervisor memory virtualization |
US10929308B2 (en) * | 2017-11-22 | 2021-02-23 | Arm Limited | Performing maintenance operations |
US10649907B2 (en) * | 2018-03-22 | 2020-05-12 | Arm Limited | Apparatus and method for handling page invalidate requests in an address translation cache |
US11249918B2 (en) | 2018-10-30 | 2022-02-15 | Hewlett Packard Enterprise Development Lp | Mapping entry invalidation |
US11836091B2 (en) * | 2018-10-31 | 2023-12-05 | Advanced Micro Devices, Inc. | Secure memory access in a virtualized computing environment |
US10915404B2 (en) | 2018-11-02 | 2021-02-09 | Arm Limited | Persistent memory cleaning |
US10942853B2 (en) * | 2018-12-20 | 2021-03-09 | International Business Machines Corporation | System and method including broadcasting an address translation invalidation instruction with a return marker to indentify the location of data in a computing system having mutiple processors |
US10915456B2 (en) * | 2019-05-21 | 2021-02-09 | International Business Machines Corporation | Address translation cache invalidation in a microprocessor |
US20210064528A1 (en) * | 2019-08-26 | 2021-03-04 | Arm Limited | Filtering invalidation requests |
CN112463657B (zh) * | 2019-09-09 | 2024-06-18 | 阿里巴巴集团控股有限公司 | 一种地址转换缓存清除指令的处理方法和处理装置 |
US11243864B2 (en) | 2019-09-17 | 2022-02-08 | International Business Machines Corporation | Identifying translation errors |
US11853225B2 (en) * | 2019-10-11 | 2023-12-26 | Texas Instruments Incorporated | Software-hardware memory management modes |
CN111338987B (zh) * | 2020-02-13 | 2023-12-12 | 江苏华创微***有限公司 | 快速无效组相联tlb的方法 |
US11200175B2 (en) * | 2020-03-20 | 2021-12-14 | Arm Limited | Memory accessor invailidation |
US11288207B2 (en) * | 2020-03-30 | 2022-03-29 | Arm Limited | Apparatus and method for processing address translation and invalidation transactions |
US20210406195A1 (en) * | 2021-04-29 | 2021-12-30 | Rupin Vakharwala | Method and apparatus to enable a cache (devpic) to store process specific information inside devices that support address translation service (ats) |
US11507515B1 (en) * | 2021-06-29 | 2022-11-22 | Arm Limited | Memory management unit with address translation cache |
WO2023034662A1 (en) * | 2021-09-02 | 2023-03-09 | Nuvia, Inc. | System and methods for invalidating translation information in caches |
US20230064603A1 (en) * | 2021-09-02 | 2023-03-02 | Nuvia, Inc. | System and methods for invalidating translation information in caches |
CN114064517A (zh) | 2021-11-19 | 2022-02-18 | 上海兆芯集成电路有限公司 | 指定密钥进行高速缓存写回且无效的计算机***及方法 |
CN114064518A (zh) | 2021-11-19 | 2022-02-18 | 上海兆芯集成电路有限公司 | 指定密钥辨识码进行转译后备缓冲区清除的处理器和方法 |
US11853228B1 (en) * | 2022-06-10 | 2023-12-26 | Arm Limited | Partial-address-translation-invalidation request |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5317710A (en) * | 1987-07-24 | 1994-05-31 | Hitachi, Ltd. | Invalidation of entries in a translation table by providing the machine a unique identification thereby disallowing a match and rendering the entries invalid |
US20040230749A1 (en) * | 2003-05-12 | 2004-11-18 | International Business Machines Corporation | Invalidating storage, clearing buffer entries, and an instruction therefor |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS61292761A (ja) * | 1985-06-20 | 1986-12-23 | Mitsubishi Electric Corp | アドレス変換方式 |
US4885680A (en) | 1986-07-25 | 1989-12-05 | International Business Machines Corporation | Method and apparatus for efficiently handling temporarily cacheable data |
JPH0784883A (ja) | 1993-09-17 | 1995-03-31 | Hitachi Ltd | 仮想計算機システムのアドレス変換バッファパージ方法 |
JPH07134658A (ja) * | 1993-11-09 | 1995-05-23 | Hitachi Ltd | 仮想計算機システムのアドレス変換バッファ制御方式 |
US6314492B1 (en) | 1998-05-27 | 2001-11-06 | International Business Machines Corporation | System and method for server control of client cache |
EP1182569B8 (en) * | 2000-08-21 | 2011-07-06 | Texas Instruments Incorporated | TLB lock and unlock operation |
US6854033B2 (en) | 2001-06-29 | 2005-02-08 | Intel Corporation | Using linked list for caches with variable length data |
US6826671B2 (en) * | 2001-10-09 | 2004-11-30 | Sun Microsystems, Inc. | Method and device for a context-based memory management system |
US7346757B2 (en) | 2002-10-08 | 2008-03-18 | Rmi Corporation | Advanced processor translation lookaside buffer management in a multithreaded system |
CN100382034C (zh) * | 2004-09-29 | 2008-04-16 | 索尼株式会社 | 信息处理设备和处理控制方法 |
US7334107B2 (en) * | 2004-09-30 | 2008-02-19 | Intel Corporation | Caching support for direct memory access address translation |
WO2006045029A1 (en) * | 2004-10-19 | 2006-04-27 | Platform Solutions, Inc. | Processing of self-modifying code in multi-address-space and multi-processor systems |
US7734892B1 (en) | 2005-03-31 | 2010-06-08 | Rozas Guillermo J | Memory protection and address translation hardware support for virtual machines |
US7447869B2 (en) | 2005-04-07 | 2008-11-04 | Ati Technologies, Inc. | Method and apparatus for fragment processing in a virtual memory system |
US7676634B1 (en) * | 2005-09-28 | 2010-03-09 | Sun Microsystems, Inc. | Selective trace cache invalidation for self-modifying code via memory aging |
US7802055B2 (en) | 2006-04-19 | 2010-09-21 | Qualcomm Incorporated | Virtually-tagged instruction cache with physically-tagged behavior |
US7555628B2 (en) * | 2006-08-15 | 2009-06-30 | Intel Corporation | Synchronizing a translation lookaside buffer to an extended paging table |
US7590817B2 (en) * | 2006-10-17 | 2009-09-15 | International Business Machines Corporation | Communicating with an I/O device using a queue data structure and pre-translated addresses |
US8112174B2 (en) | 2008-02-25 | 2012-02-07 | International Business Machines Corporation | Processor, method and computer program product for fast selective invalidation of translation lookaside buffer |
US8464000B2 (en) * | 2008-02-29 | 2013-06-11 | Qualcomm Incorporated | Systems and methods for cache line replacements |
US8166276B2 (en) * | 2009-02-27 | 2012-04-24 | Advanced Micro Devices, Inc. | Translate and verify instruction for a processor |
US8635430B2 (en) * | 2010-06-23 | 2014-01-21 | International Business Machines Corporation | Translation of input/output addresses to memory addresses |
US9465748B2 (en) | 2011-12-30 | 2016-10-11 | Advanced Micro Devices, Inc. | Instruction fetch translation lookaside buffer management to support host and guest O/S translations |
US8964735B2 (en) * | 2012-05-18 | 2015-02-24 | Rackspace Us, Inc. | Translating media access control (MAC) addresses in a network hierarchy |
US9116793B2 (en) * | 2012-06-12 | 2015-08-25 | International Business Machines Corporation | Maintaining versions of data in solid state memory |
US20140006681A1 (en) * | 2012-06-29 | 2014-01-02 | Broadcom Corporation | Memory management in a virtualization environment |
-
2014
- 2014-02-21 US US14/186,091 patent/US9619387B2/en active Active
-
2015
- 2015-02-03 WO PCT/GB2015/050282 patent/WO2015124899A1/en active Application Filing
- 2015-02-03 KR KR1020167024444A patent/KR102317332B1/ko active IP Right Grant
- 2015-02-03 EP EP15705362.0A patent/EP3108372B1/en active Active
- 2015-02-03 CN CN201580008605.8A patent/CN105980994B/zh active Active
- 2015-02-03 JP JP2016551713A patent/JP6509241B2/ja active Active
-
2016
- 2016-07-20 IL IL246850A patent/IL246850B/en active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5317710A (en) * | 1987-07-24 | 1994-05-31 | Hitachi, Ltd. | Invalidation of entries in a translation table by providing the machine a unique identification thereby disallowing a match and rendering the entries invalid |
US20040230749A1 (en) * | 2003-05-12 | 2004-11-18 | International Business Machines Corporation | Invalidating storage, clearing buffer entries, and an instruction therefor |
Also Published As
Publication number | Publication date |
---|---|
EP3108372B1 (en) | 2018-07-11 |
US20150242319A1 (en) | 2015-08-27 |
US9619387B2 (en) | 2017-04-11 |
CN105980994B (zh) | 2019-08-16 |
WO2015124899A1 (en) | 2015-08-27 |
JP2017517040A (ja) | 2017-06-22 |
KR102317332B1 (ko) | 2021-10-26 |
EP3108372A1 (en) | 2016-12-28 |
CN105980994A (zh) | 2016-09-28 |
IL246850B (en) | 2019-02-28 |
JP6509241B2 (ja) | 2019-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102317332B1 (ko) | 기억된 어드레스 변환의 무효화 | |
US20210365386A1 (en) | Handling address translation requests | |
EP2548124B1 (en) | Address mapping in virtualized processing system | |
US8738889B2 (en) | Generating multiple address space identifiers per virtual machine to switch between protected micro-contexts | |
KR101614865B1 (ko) | I/o 및 계산 오프로드를 위해 복수레벨 어드레스 변환을 포함하는 i/o 메모리 관리 유닛 | |
US9092359B2 (en) | Identification and consolidation of page table entries | |
US8140820B2 (en) | Data processing apparatus and method for handling address translation for access requests issued by processing circuitry | |
US10191853B2 (en) | Apparatus and method for maintaining address translation data within an address translation cache | |
US8549254B2 (en) | Using a translation lookaside buffer in a multiple stage memory address translation structure to manage protected microcontexts | |
EP3497577B1 (en) | Updating least-recently-used data for greater persistence of higher-generality cache entries | |
JP2020529656A (ja) | アドレス変換キャッシュ | |
KR20190105623A (ko) | 가변 변환 색인 버퍼(tlb) 인덱싱 | |
US11003597B2 (en) | Memory domains protection method and apparatus with composite protection key numbers | |
US8015361B2 (en) | Memory-centric page table walker | |
CN117349197A (zh) | 内存管理单元和内存访问方法 | |
US9753860B2 (en) | Page table entry consolidation | |
US11009841B2 (en) | Initialising control data for a device | |
GB2579614A (en) | Page table isolation method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |