KR102544401B1 - Address translation cache and system including the same - Google Patents

Address translation cache and system including the same Download PDF

Info

Publication number
KR102544401B1
KR102544401B1 KR1020220063986A KR20220063986A KR102544401B1 KR 102544401 B1 KR102544401 B1 KR 102544401B1 KR 1020220063986 A KR1020220063986 A KR 1020220063986A KR 20220063986 A KR20220063986 A KR 20220063986A KR 102544401 B1 KR102544401 B1 KR 102544401B1
Authority
KR
South Korea
Prior art keywords
cache
caches
page
translation
address
Prior art date
Application number
KR1020220063986A
Other languages
Korean (ko)
Other versions
KR20230082536A (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 삼성전자주식회사
Priority to US17/965,700 priority Critical patent/US20230169013A1/en
Priority to EP22203192.4A priority patent/EP4191420A1/en
Priority to TW111140754A priority patent/TW202324107A/en
Priority to CN202211452901.5A priority patent/CN116204452A/en
Publication of KR20230082536A publication Critical patent/KR20230082536A/en
Application granted granted Critical
Publication of KR102544401B1 publication Critical patent/KR102544401B1/en

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/1009Address translation using page tables, e.g. page table structures
    • 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/1024Latency reduction
    • 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
    • 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/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

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

어드레스 트랜슬레이션 캐시는, 가상 어드레스 및 메모리 장치의 물리 어드레스 사이의 매핑 정보를 나타내는 트랜슬레이션 엔트리들을 저장하는 어드레스 트랜슬레이션 캐시로서, 복수의 가변 페이지 그룹 캐시(flexible page group cache)들, 공유 캐시 및 캐시 매니저를 포함한다. 상기 복수의 가변 페이지 그룹 캐시들은 할당된 페이지 사이즈에 해당하는 트랜슬레이션 엔트리들을 각각 저장한다. 상기 공유 캐시는 페이지 사이즈와 무관하게 상기 복수의 가변 페이지 그룹 캐시들에 저장되지 않는 트랜슬레이션 엔트리들을 저장한다. 상기 캐시 매니저는, 상기 복수의 가변 페이지 그룹 캐시들의 각각에 페이지 사이즈를 동적으로 할당하고, 상기 복수의 가변 페이지 그룹 캐시들에 할당된 페이지 사이즈들에 관한 캐시 페이지 정보를 관리하고, 상기 캐시 페이지 정보에 기초하여 상기 복수의 가변 페이지 그룹 캐시들 및 상기 공유 캐시를 제어한다.The address translation cache is an address translation cache that stores translation entries representing mapping information between a virtual address and a physical address of a memory device, and includes a plurality of flexible page group caches, shared Includes cache and cache manager. Each of the plurality of variable page group caches stores translation entries corresponding to an allocated page size. The shared cache stores translation entries that are not stored in the plurality of flexible page group caches regardless of a page size. The cache manager dynamically allocates a page size to each of the plurality of variable page group caches, manages cache page information about page sizes allocated to the plurality of variable page group caches, and caches the cache page information. Controls the plurality of variable page group caches and the shared cache based on

Description

어드레스 트랜슬레이션 캐시 및 이를 포함하는 시스템{Address translation cache and system including the same}Address translation cache and system including the same

본 발명은 반도체 집적 회로에 관한 것으로서, 더욱 상세하게는 어드레스 트랜슬레이션 캐시 및 어드레스 트랜슬레이션 캐시를 포함하는 시스템에 관한 것이다.The present invention relates to a semiconductor integrated circuit, and more particularly, to an address translation cache and a system including the address translation cache.

데이터 처리 시스템 또는 컴퓨팅 시스템은 가상 어드레스를 메모리 장치의 물리 어드레스로 변환하는 어드레스 트랜슬레이션을 통하여 메모리 장치에 대한 액세스를 수행한다. 컴퓨팅 시스템에는 다양한 기능을 갖는 아이피(IP, intellectual property)들이 포함될 수 있다. 상기 IP들 중에서 일부 IP들은 메모리 장치에 대한 다이렉트 메모리 액세스 기능을 가질 수 있고, 다이렉트 메모리 액세스 기능을 갖는 IP를 다이렉트 메모리 액세스 장치라 칭할 수 있다. 다이렉트 메모리 액세스는 중앙처리장치(CPU)와 같은 호스트 프로세서를 통하지 않고 데이터를 메모리 장치로 또는 메모리 장치로부터 직접 전송하는 것을 말한다. 호스트 프로세서 및 다양한 다이렉트 메모리 액세스 장치들에 의한 메모리 충돌을 방지하기 위해, 메모리 관리 유닛(MMU, memory management unit) 또는 트랜슬레이션 에이전트(TA, translation agent)는 가상 어드레스 및 메모리 장치의 물리 어드레스 사이의 매핑 정보를 포함하는 매핑 테이블 또는 페이지 테이블을 통합적으로 관리한다. A data processing system or a computing system accesses a memory device through address translation that converts a virtual address into a physical address of the memory device. A computing system may include intellectual properties (IPs) having various functions. Some of the IPs may have a direct memory access function for a memory device, and an IP having a direct memory access function may be referred to as a direct memory access device. Direct memory access refers to directly transferring data to or from a memory device without going through a host processor such as a central processing unit (CPU). In order to prevent memory conflicts caused by the host processor and various direct memory access devices, a memory management unit (MMU) or translation agent (TA) is required to prevent a memory conflict between a virtual address and a physical address of a memory device. Integrated management of mapping tables or page tables including mapping information.

어드레스 트랜슬레이션의 속도 및 효율을 더욱 향상하기 위하여 호스트 프로세서 또는 메모리 관리 유닛은 최근에 참조되는 어드레스 매핑 정보 및/또는 빈번하게 참조되는 어드레스 매핑 정보를 저장하는 변환 색인 버퍼(translation look aside buffer)(TLB)를 포함할 수 있다. 한편, 호스트 프로세서에 의해 사용되는 프로세서 변환 색인 버퍼와 구별하여, 다이렉트 메모리 액세스 장치에 포함되는 변환 색인 버퍼를 어드레스 트랜슬레이션 캐시(ATC, address translation cache)라 칭할 수 있다.In order to further improve the speed and efficiency of address translation, the host processor or memory management unit stores recently referenced address mapping information and/or frequently referenced address mapping information in a translation look aside buffer ( TLB) may be included. Meanwhile, in distinction from the processor translation lookaside buffer used by the host processor, the translation lookaside buffer included in the direct memory access device may be referred to as an address translation cache (ATC).

일반적으로 어드레스 트랜슬레이션은 페이지 단위로 수행되고 다양한 페이지 사이즈들이 적용될 수 있다. 다양한 페이지 사이즈들에 상응하는 어드레스 매핑 정보를 저장하기 위해서 어드레스 트랜슬레이션 캐시는 완전 연관 캐시(fully associative cache)로 구현하여야 한다. 어드레스 트랜슬레이션 캐시를 완전 연관 캐시로 구현하는 경우, 다이렉트 메모리 액세스 장치의 사이즈가 증가하고 어드레스 트랜슬레이션의 속도가 감소하는 문제가 있다.In general, address translation is performed in units of pages, and various page sizes may be applied. In order to store address mapping information corresponding to various page sizes, the address translation cache must be implemented as a fully associative cache. If the address translation cache is implemented as a fully associative cache, there is a problem that the size of the direct memory access device increases and the address translation speed decreases.

상기와 같은 문제점을 해결하기 위한 본 발명의 일 목적은, 효율적으로 어드레스 트랜슬레이션을 수행할 수 있는 어드레스 트랜슬레이션 캐시를 제공하는 것이다.One object of the present invention to solve the above problems is to provide an address translation cache capable of efficiently performing address translation.

또한 본 발명의 일 목적은, 효율적으로 어드레스 트랜슬레이션을 수행할 수 있는 어드레스 트랜슬레이션 캐시를 포함하는 시스템을 제공하는 것이다.Another object of the present invention is to provide a system including an address translation cache capable of efficiently performing address translation.

상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 어드레스 트랜슬레이션 캐시는, 가상 어드레스 및 메모리 장치의 물리 어드레스 사이의 매핑 정보를 나타내는 트랜슬레이션 엔트리들을 저장하는 어드레스 트랜슬레이션 캐시로서, 복수의 가변 페이지 그룹 캐시(flexible page group cache)들, 공유 캐시 및 캐시 매니저를 포함한다.In order to achieve the above object, an address translation cache according to embodiments of the present invention is an address translation cache that stores translation entries representing mapping information between a virtual address and a physical address of a memory device. , a plurality of flexible page group caches, a shared cache and a cache manager.

상기 복수의 가변 페이지 그룹 캐시들은 할당된 페이지 사이즈에 해당하는 트랜슬레이션 엔트리들을 각각 저장한다. 상기 공유 캐시는 페이지 사이즈와 무관하게 상기 복수의 가변 페이지 그룹 캐시들에 저장되지 않는 트랜슬레이션 엔트리들을 저장한다.Each of the plurality of variable page group caches stores translation entries corresponding to an allocated page size. The shared cache stores translation entries that are not stored in the plurality of flexible page group caches regardless of a page size.

상기 캐시 매니저는, 상기 복수의 가변 페이지 그룹 캐시들의 각각에 페이지 사이즈를 동적으로 할당하고, 상기 복수의 가변 페이지 그룹 캐시들에 할당된 페이지 사이즈들에 관한 캐시 페이지 정보를 관리하고, 상기 캐시 페이지 정보에 기초하여 상기 복수의 가변 페이지 그룹 캐시들 및 상기 공유 캐시를 제어한다.The cache manager dynamically allocates a page size to each of the plurality of variable page group caches, manages cache page information about page sizes allocated to the plurality of variable page group caches, and caches the cache page information. Controls the plurality of variable page group caches and the shared cache based on

상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 어드레스 트랜슬레이션 캐시는, 가상 어드레스 및 메모리 장치의 물리 어드레스 사이의 매핑 정보를 나타내는 트랜슬레이션 엔트리들을 저장하는 어드레스 트랜슬레이션 캐시로서, 복수의 펑션들에 각각 전속되고(dedicated) 상기 복수의 펑션들에 연관된 트랜슬레이션 엔트리들을 각각 저장하고 완전 연관 캐시(fully associative cache)들로 구현되는 복수의 펑션 전속 캐시들, 상기 복수의 펑션 전속 캐시들에 저장되지 않고 할당된 페이지 사이즈에 해당하는 트랜슬레이션 엔트리들을 각각 저장하고 세트 연관 캐시(set associative cache)들로 구현되는 복수의 가변 페이지 그룹 캐시(flexible page group cache)들, 상기 복수의 펑션 전속 캐시들 및 상기 복수의 가변 페이지 그룹 캐시들에 저장되지 않는 트랜슬레이션 엔트리들을 페이지 사이즈와 무관하게 저장하고 완전 연관 캐시로 구현되는 공유 캐시 및 상기 복수의 가변 페이지 그룹 캐시들의 각각에 페이지 사이즈를 동적으로 할당하고, 상기 복수의 가변 페이지 그룹 캐시들에 할당된 페이지 사이즈들에 관한 캐시 페이지 정보를 관리하고, 상기 캐시 페이지 정보에 기초하여 상기 복수의 가변 페이지 그룹 캐시들 및 상기 공유 캐시를 제어하는 캐시 매니저를 포함한다.In order to achieve the above object, an address translation cache according to embodiments of the present invention is an address translation cache that stores translation entries representing mapping information between a virtual address and a physical address of a memory device. , a plurality of function dedicated caches each dedicated to a plurality of functions, each storing translation entries associated with the plurality of functions, and implemented as fully associative caches, the plurality of functions A plurality of flexible page group caches that are not stored in exclusive caches but store translation entries corresponding to an allocated page size and are implemented as set associative caches; A shared cache that stores translation entries that are not stored in function-specific caches and the plurality of variable page group caches regardless of the page size and is implemented as a fully associative cache and a page in each of the plurality of variable page group caches It dynamically allocates a size, manages cache page information about page sizes allocated to the plurality of variable page group caches, and configures the plurality of variable page group caches and the shared cache based on the cache page information. Contains the controlling cache manager.

상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 시스템은, 호스트 메모리 장치, 호스트 프로세서, 상기 호스트 메모리 장치에 대한 다이렉트 메모리 액세스 기능을 갖고 상기 호스트 프로세서의 가상 어드레스 및 상기 호스트 메모리 장치의 물리 어드레스 사이의 매핑 정보를 나타내는 트랜슬레이션 엔트리들을 저장하는 어드레스 트랜슬레이션 캐시를 포함하는 다이렉트 메모리 액세스 장치 및 상기 호스트 프로세서 및 상기 다이렉트 메모리 액세스 장치의 상기 호스트 장치에 대한 액세스를 관리하는 메모리 관리 유닛을 포함한다. 상기 어드레스 트랜슬레이션 캐시는 할당된 페이지 사이즈에 해당하는 트랜슬레이션 엔트리들을 각각 저장하는 복수의 가변 페이지 그룹 캐시(flexible page group cache)들, 페이지 사이즈와 무관하게 상기 복수의 가변 페이지 그룹 캐시들에 저장되지 않는 트랜슬레이션 엔트리들을 저장하는 공유 캐시 및 상기 복수의 가변 페이지 그룹 캐시들의 각각에 페이지 사이즈를 동적으로 할당하고, 상기 복수의 가변 페이지 그룹 캐시들에 할당된 페이지 사이즈들에 관한 캐시 페이지 정보를 관리하고, 상기 캐시 페이지 정보에 기초하여 상기 복수의 가변 페이지 그룹 캐시들 및 상기 공유 캐시를 제어하는 캐시 매니저를 포함한다.In order to achieve the above object, a system according to embodiments of the present invention has a host memory device, a host processor, and a direct memory access function for the host memory device, and provides a virtual address of the host processor and a host memory device. A direct memory access device including an address translation cache storing translation entries representing mapping information between physical addresses, and a memory management unit managing access of the host processor and the direct memory access device to the host device includes The address translation cache includes a plurality of flexible page group caches each storing translation entries corresponding to an allocated page size, and the plurality of flexible page group caches regardless of the page size. A shared cache for storing unstored translation entries and page sizes dynamically allocated to each of the plurality of variable page group caches, and cache page information about page sizes allocated to the plurality of variable page group caches. and a cache manager that manages and controls the plurality of variable page group caches and the shared cache based on the cache page information.

본 발명의 실시예들에 따른 어드레스 트랜슬레이션 캐시는 복수의 가변 페이지 그룹 캐시들의 각각에 페이지 사이즈를 동적으로 할당하고, 할당된 페이지 사이즈들에 기초하여 할당된 페이지 사이즈에 상응하는 트랜슬레이션 엔트리들을 페이지 사이즈 별로 저장함으로써 캐시 메모리 자원을 효율적으로 이용할 수 있고 어드레스 매핑 정보의 탐색 시간을 감소할 수 있다.An address translation cache according to embodiments of the present invention dynamically allocates a page size to each of a plurality of variable page group caches, and a translation entry corresponding to the allocated page size based on the allocated page sizes. By storing them for each page size, cache memory resources can be efficiently used and search time for address mapping information can be reduced.

도 1은 본 발명의 실시예들에 따른 어드레스 트랜슬레이션 캐시를 나타내는 블록도이다.
도 2는 본 발명의 실시예들에 따른 어드레스 트랜슬레이션 캐시의 동작 방법을 나타내는 순서도이다.
도 3은 본 발명의 실시예들에 따른 어드레스 트랜슬레이션 캐시의 캐시 페이지 정보의 일 예를 나타내는 도면이다.
도 4는 본 발명의 실시예들에 따른 어드레스 트랜슬레이션 캐시의 엔트리 기입 동작을 나타내는 순서도이다.
도 5는 본 발명의 실시예들에 따른 어드레스 트랜슬레이션 캐시에 포함되는 세트 연관 캐시(set associative cache)의 일 실시예를 나타내는 도면이다.
도 6은 본 발명의 실시예들에 따른 어드레스 트랜슬레이션 캐시의 캐시 라인에 저장되는 트랜슬레이션 엔트리를 나타내는 도면이다.
도 7은 페이지 사이즈에 따른 어드레스 비트들의 설정의 일 실시예를 나타내는 도면이다.
도 8 및 9는 본 발명의 실시예들에 따른 어드레스 트랜슬레이션 캐시의 엔트리 탐색 동작을 나타내는 도면들이다.
도 10은 본 발명의 실시예들에 따른 어드레스 트랜슬레이션 캐시의 엔트리 무효화 동작을 나타내는 순서도이다.
도 11은 본 발명의 실시예들에 따른 어드레스 트랜슬레이션 캐시를 포함하는 시스템의 인터커넥트 아키텍처의 일 실시예를 나타내는 블록도이다.
도 12는 본 발명의 실시예들에 따른 어드레스 트랜슬레이션 캐시를 포함하는 시스템을 나타내는 블록도이다.
도 13 내지 16은 본 발명의 실시예들에 따른 어드레스 트랜슬레이션 캐시를 포함하는 시스템의 동작을 나타내는 도면들이다.
도 17은 본 발명의 실시예들에 따른 어드레스 트랜슬레이션 캐시를 포함하는 시스템에서 전송되는 패킷의 일 실시예를 나타내는 도면이다.
도 18은 본 발명의 실시예들에 따른 어드레스 트랜슬레이션 캐시를 포함하는 가상화 시스템을 나타내는 블록도이다.
도 19는 본 발명의 실시예들에 따른 가상화 시스템을 나타내는 블록도이다.
도 20, 21 및 22는 본 발명의 실시예들에 따른 가상화 시스템의 가상화 환경의 계층 구조의 실시예들을 나타내는 도면들이다.
도 23 및 24는 본 발명의 실시예들에 따른 가상화 시스템의 2-스테리지 어드레스 트랜슬레이션을 나타내는 도면들이다.
도 25는 본 발명의 실시예들에 따른 어드레스 트랜슬레이션 캐시를 나타내는 블록도이다.
도 26은 본 발명의 실시예들에 따른 어드레스 트랜슬레이션 캐시의 엔트리 기입 동작을 나타내는 순서도이다.
도 27은 본 발명의 실시예들에 따른 어드레스 트랜슬레이션 캐시를 포함하는 장치를 나타내는 도면이다.
도 28은 본 발명의 실시예들에 따른 가상화 시스템을 나타내는 블록도이다.
1 is a block diagram illustrating an address translation cache according to embodiments of the present invention.
2 is a flowchart illustrating an operating method of an address translation cache according to embodiments of the present invention.
3 is a diagram illustrating an example of cache page information of an address translation cache according to embodiments of the present invention.
4 is a flowchart illustrating an entry write operation of an address translation cache according to embodiments of the present invention.
5 is a diagram illustrating an embodiment of a set associative cache included in an address translation cache according to embodiments of the present invention.
6 is a diagram illustrating a translation entry stored in a cache line of an address translation cache according to embodiments of the present invention.
7 is a diagram illustrating an embodiment of setting address bits according to a page size.
8 and 9 are diagrams illustrating an operation of searching for an entry of an address translation cache according to embodiments of the present invention.
10 is a flowchart illustrating an entry invalidation operation of an address translation cache according to embodiments of the present invention.
11 is a block diagram illustrating one embodiment of an interconnect architecture of a system including an address translation cache according to embodiments of the present invention.
12 is a block diagram illustrating a system including an address translation cache according to embodiments of the present invention.
13 to 16 are diagrams illustrating the operation of a system including an address translation cache according to embodiments of the present invention.
17 is a diagram illustrating an embodiment of a packet transmitted in a system including an address translation cache according to embodiments of the present invention.
18 is a block diagram illustrating a virtualization system including an address translation cache according to embodiments of the present invention.
19 is a block diagram illustrating a virtualization system according to embodiments of the present invention.
20, 21 and 22 are diagrams illustrating embodiments of a hierarchical structure of a virtualization environment of a virtualization system according to embodiments of the present invention.
23 and 24 are diagrams illustrating 2-stage address translation in a virtualization system according to embodiments of the present invention.
25 is a block diagram illustrating an address translation cache according to embodiments of the present invention.
26 is a flowchart illustrating an entry write operation of an address translation cache according to embodiments of the present invention.
27 is a diagram illustrating a device including an address translation cache according to embodiments of the present invention.
28 is a block diagram illustrating a virtualization system according to embodiments of the present invention.

이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.Hereinafter, with reference to the accompanying drawings, preferred embodiments of the present invention will be described in more detail. The same reference numerals are used for the same components in the drawings, and redundant descriptions of the same components are omitted.

도 1은 본 발명의 실시예들에 따른 어드레스 트랜슬레이션 캐시를 나타내는 블록도이고, 도 2는 본 발명의 실시예들에 따른 어드레스 트랜슬레이션 캐시의 동작 방법을 나타내는 순서도이다.1 is a block diagram illustrating an address translation cache according to embodiments of the present invention, and FIG. 2 is a flowchart illustrating an operating method of the address translation cache according to embodiments of the present invention.

도 1을 참조하면, 어드레스 트랜슬레이션 캐시(100)는 캐시 매니저(CMNG)(110), 복수의 가변 페이지 그룹 캐시(flexible page group cache)들(FPGC1~FPGCn)(120) 및 공유 캐시(shared cache)(SHC)(130)를 포함할 수 있다. 어드레스 트랜슬레이션 캐시(100)는 가상 어드레스(VA) 및 메모리 장치의 물리 어드레스(PA) 사이의 매핑 정보를 나타내는 트랜슬레이션 엔트리들을 저장한다.Referring to FIG. 1, the address translation cache 100 includes a cache manager (CMNG) 110, a plurality of flexible page group caches (FPGC1 to FPGAn) 120, and a shared cache. cache) (SHC) 130. The address translation cache 100 stores translation entries representing mapping information between a virtual address VA and a physical address PA of a memory device.

도 1 및 2를 참조하면, 복수의 가변 페이지 그룹 캐시들(120)은 각각의 가변 페이지 그룹 캐시에 할당된 페이지 사이즈에 해당하는 트랜슬레이션 엔트리들을 각각 저장할 수 있다(S100).Referring to FIGS. 1 and 2 , the plurality of variable page group caches 120 may each store translation entries corresponding to a page size allocated to each variable page group cache (S100).

공유 캐시(130)는 복수의 가변 페이지 그룹 캐시들(120)에 저장되지 않는 트랜슬레이션 엔트리들을 페이지 사이즈와 무관하게 저장할 수 있다(S200).The shared cache 130 may store translation entries that are not stored in the plurality of variable page group caches 120 regardless of the page size (S200).

캐시 매니저(110)는 복수의 가변 페이지 그룹 캐시들(120)의 각각에 페이지 사이즈를 동적으로 할당하고, 복수의 가변 페이지 그룹 캐시들(120)에 할당된 페이지 사이즈들에 관한 캐시 페이지 정보(CPI)를 관리할 수 있다(S300). The cache manager 110 dynamically allocates a page size to each of the plurality of variable page group caches 120, and cache page information (CPI) about the page sizes allocated to the plurality of variable page group caches 120. ) can be managed (S300).

캐시 매니저(110)는 캐시 페이지 정보(CPI)에 기초하여 복수의 가변 페이지 그룹 캐시들(120) 및 공유 캐시(130)를 제어할 수 있다(S400).The cache manager 110 may control the plurality of variable page group caches 120 and the shared cache 130 based on the cache page information (CPI) (S400).

어드레스 트랜슬레이션 캐시(100)의 동작은 엔트리 기입 동작, 엔트리 탐색 동작 및 엔트리 무효화 동작을 포함할 수 있다.An operation of the address translation cache 100 may include an entry write operation, an entry search operation, and an entry invalidation operation.

캐시 매니저(110)는 엔트리 기입 동작을 수행하는 경우 입력 트랜슬레이션 엔트리(ITE)를 복수의 가변 페이지 그룹 캐시들(120) 및 공유 캐시(130) 중 하나에 저장할 수 있다. 엔트리 기입 동작에 의해 복수의 가변 페이지 그룹 캐시들(120)로부터 축출된(evicted) 트랜슬레이션 엔트리(ETE)는 공유 캐시(130)에 저장될 수 있다. 엔트리 기입 동작의 실시예들은 도 4를 참조하여 후술한다.When performing an entry write operation, the cache manager 110 may store an input translation entry (ITE) in one of the plurality of variable page group caches 120 and the shared cache 130 . A translation entry (ETE) extracted from the plurality of variable page group caches 120 by the entry write operation may be stored in the shared cache 130 . Embodiments of an entry write operation will be described later with reference to FIG. 4 .

캐시 매니저(110)는 엔트리 탐색 동작을 수행하는 경우 입력 가상 어드레스(VA)에 상응하는 트랜슬레이션 엔트리가 복수의 가변 페이지 그룹 캐시들(120) 또는 공유 캐시(130)에 존재하는지 여부, 즉 캐시 히트 또는 캐시 미스인지를 판별할 수 있다. 캐시 매니저(110)는 캐시 히트인 경우 캐시 적중 신호(CHT)를 활성화하고 입력 가상 어드레스(VA)에 상응하는 트랜슬레이션 엔트리에 저장된 물리 어드레스(PA)를 제공할 수 있다. 한편, 캐시 매니저(110)는 캐시 미스인 경우 캐시 적중 신호(CHT)를 비활성화할 수 있다. 엔트리 탐색 동작의 실시예들은 도 8 및 9를 참조하여 후술한다.When performing an entry search operation, the cache manager 110 determines whether a translation entry corresponding to the input virtual address VA exists in the plurality of variable page group caches 120 or the shared cache 130, that is, cache It can determine if it is a hit or a cache miss. In case of a cache hit, the cache manager 110 may activate the cache hit signal CHT and provide the physical address PA stored in the translation entry corresponding to the input virtual address VA. Meanwhile, the cache manager 110 may deactivate the cache hit signal (CHT) in case of a cache miss. Embodiments of an entry search operation will be described later with reference to FIGS. 8 and 9 .

캐시 매니저(110)는 엔트리 무효화 동작을 수행하는 경우 입력 가상 어드레스(VA)에 상응하는 트랜슬레이션 엔트리가 복수의 가변 페이지 그룹 캐시들(120) 또는 공유 캐시(130)에 존재하는지를 탐색하고 입력 가상 어드레스(VA)에 상응하는 트랜슬레이션 엔트리를 삭제할 수 있다. 엔트리 무효화 동작의 실시예들은 도 10을 참조하여 후술한다.When performing an entry invalidation operation, the cache manager 110 searches whether a translation entry corresponding to the input virtual address VA exists in the plurality of variable page group caches 120 or the shared cache 130 and searches for the input virtual address VA. A translation entry corresponding to the address VA may be deleted. Embodiments of an entry invalidation operation will be described later with reference to FIG. 10 .

일 실시예에서, 복수의 가변 페이지 그룹 캐시들(120)은 세트 연관 캐시(set associative cache)들로 구현되고, 공유 캐시(130)는 완전 연관 캐시(fully associative cache)로 구현될 수 있다.In one embodiment, the plurality of variable page group caches 120 may be implemented as set associative caches, and the shared cache 130 may be implemented as a fully associative cache.

세트 연관 캐시는 복수의 세트들을 포함하고, 각각의 세트는 복수의 웨이들에 각각 속하는 복수의 캐시 라인들을 포함한다. 특히 1개의 웨이만을 포함하는 세트 연관 캐시를 직접 사상 캐시(direct-mapped cache)라고 칭할 수 있다. 세트 연관 캐시는 어드레스 비트들 중 일부에 해당하는 인덱스에 기초하여 세트를 결정하고 어드레스 비트들 중 다른 일부에 해당하는 태그에 기초하여 캐시 적중 여부를 결정한다. 세트 연관 캐시에 대해서는 도 5를 참조하여 후술한다.The set associative cache includes a plurality of sets, and each set includes a plurality of cache lines respectively belonging to a plurality of ways. In particular, a set associative cache containing only one way may be referred to as a direct-mapped cache. The set associative cache determines a set based on an index corresponding to some of the address bits and determines whether or not a cache hit is based on a tag corresponding to another part of the address bits. The set associative cache will be described later with reference to FIG. 5 .

세트 연관 캐시는 1개 이상의 캐시 라인을 포함하는 복수의 세트들로 구성되는 반면, 완전 연관 캐시는 세트와 무관한 복수의 캐시 라인들을 포함한다. 따라서 완전 연관 캐시는 세트를 구분하기 위한 인덱스를 사용하지 않으며 어드레스 비트들을 모두 태그로서 저장한다.A set associative cache consists of a plurality of sets containing one or more cache lines, whereas a fully associative cache contains a plurality of cache lines unrelated to the set. Therefore, fully associative caches do not use indexes to distinguish sets and store all address bits as tags.

완전 연관 캐시는 데이터가 저장될 캐시 라인을 특정하지 않으므로 캐시 메모리 자원을 효율적으로 활용할 수 있으나, 엔트리 탐색 동작시 모든 캐시 라인들을 탐색해야 하기 때문에 하드웨어 구조가 복잡하고 전력 소모 및 탐색 시간이 증가한다.Since the fully associative cache does not specify a cache line in which data is to be stored, cache memory resources can be efficiently utilized. However, since all cache lines must be searched during an entry search operation, the hardware structure is complicated and power consumption and search time are increased.

반면에 세트 연관 캐시는 데이터가 저장될 세트를 특정하기 때문에 캐시 메모리 자원의 효율적인 활용이 제한되고 캐시 미스 확률이 증가하지만, 엔트리 탐색 동작시 특정 세트만을 탐색하므로 비교적 하드웨어 구조가 단순하고 전력 소모 및 탐색 시간을 감소할 수 있다.On the other hand, since the set-associated cache specifies the set in which data is to be stored, efficient utilization of cache memory resources is limited and the cache miss probability increases. time can be reduced.

본 발명의 실시예들에 따라서, 복수의 가변 페이지 그룹 캐시들(120)은 세트 연관 캐시들로 구현하고 공유 캐시(130)는 완전 연관 캐시로 구현함으로써 캐시 메모리 자원의 효율적인 활용을 도모하면서 어드레스 트랜슬레이션 캐시(100)의 성능을 향상시킬 수 있다. According to embodiments of the present invention, the plurality of variable page group caches 120 are implemented as set-associative caches and the shared cache 130 is implemented as a fully-associative cache, thereby promoting efficient utilization of cache memory resources and address transfer. Performance of the slation cache 100 may be improved.

도 3은 본 발명의 실시예들에 따른 어드레스 트랜슬레이션 캐시의 캐시 페이지 정보의 일 예를 나타내는 도면이다.3 is a diagram illustrating an example of cache page information of an address translation cache according to embodiments of the present invention.

도 3에는 도 1의 캐시 매니저(110)에 의해 관리되는 캐시 페이지 정보(CPI)의 일 예가 도시되어 있다. 예를 들어, 제1 가변 페이지 그룹 캐시(FPGC1)에는 4KB의 페이지 사이즈가 할당되고, 제2 가변 페이지 그룹 캐시(FPGC2)에는 8KB의 페이지 사이즈가 할당되고, 제3 가변 페이지 그룹 캐시(FPGC3)에는 16KB의 페이지 사이즈가 할당되고, 제4 가변 페이지 그룹 캐시(FPGC4)에는 32KB의 페이지 사이즈가 할당되고, 제5 가변 페이지 그룹 캐시(FPGC5)에는 64KB의 페이지 사이즈가 할당되고, 제6 가변 페이지 그룹 캐시(FPGC6)에는 4KB의 페이지 사이즈가 할당될 수 있다. 제7 내지 제n 가변 페이지 그룹 캐시들(FPGC7~FPGCn)은 아직 페이지 사이즈가 할당되지 않은 상태(NA)일 수 있다. 예를 들어, 제1 가변 페이지 그룹 캐시(FPGC1) 및 제6 가변 페이지 그룹 캐시(FPGC6)와 같이, 동일한 페이지 사이즈가 2개 이상의 가변 페이지 그룹 캐시들에 할당될 수 있다. 또한, 페이지 사이즈가 할당된 가변 페이지 그룹 캐시에 저장된 데이터, 즉 트랜슬레이션 엔트리들이 모두 무효화(또는 삭제)되는 경우, 가변 페이지 그룹 캐시의 페이지 사이즈 할당이 취소되고 페이지 사이즈가 할당되지 않은 상태(NA)로 전환될 수 있다.FIG. 3 shows an example of cache page information (CPI) managed by the cache manager 110 of FIG. 1 . For example, a page size of 4 KB is allocated to the first variable page group cache (FPGC1), a page size of 8 KB is allocated to the second variable page group cache (FPGC2), and a page size of 8 KB is allocated to the third variable page group cache (FPGC3). A page size of 16 KB is allocated, a page size of 32 KB is allocated to the fourth variable page group cache (FPGC4), a page size of 64 KB is allocated to the fifth variable page group cache (FPGC5), and a page size of 64 KB is allocated to the sixth variable page group cache. (FPGC6) can be assigned a page size of 4 KB. The seventh to nth variable page group caches FPGA7 to FPGAn may be in a state (NA) to which a page size is not yet allocated. For example, the same page size may be allocated to two or more variable page group caches, such as the first variable page group cache (FPGC1) and the sixth variable page group cache (FPGC6). In addition, when data stored in the variable page group cache to which the page size is allocated, that is, translation entries, are all invalidated (or deleted), the page size allocation of the variable page group cache is canceled and the page size is not allocated (NA). ) can be converted to

이와 같이, 본 발명의 실시예들에 따른 어드레스 트랜슬레이션 캐시는 복수의 가변 페이지 그룹 캐시들의 각각에 페이지 사이즈를 동적으로 할당하고, 할당된 페이지 사이즈들에 기초하여 할당된 페이지 사이즈에 상응하는 트랜슬레이션 엔트리들을 페이지 사이즈 별로 저장함으로써 캐시 메모리 자원을 효율적으로 이용할 수 있고 어드레스 매핑 정보의 탐색 시간을 감소할 수 있다.In this way, the address translation cache according to embodiments of the present invention dynamically allocates a page size to each of a plurality of variable page group caches, and transfers data corresponding to the allocated page size based on the allocated page sizes. By storing slation entries for each page size, cache memory resources can be efficiently used and search time for address mapping information can be reduced.

도 4는 본 발명의 실시예들에 따른 어드레스 트랜슬레이션 캐시의 엔트리 기입 동작을 나타내는 순서도이다.4 is a flowchart illustrating an entry write operation of an address translation cache according to embodiments of the present invention.

도 1 및 4를 참조하면, 캐시 매니저(110)는 아이들 상태(S10)에서 입력 트랜슬레이션 엔트리(ITE)를 수신할 수 있다(S11). Referring to FIGS. 1 and 4 , the cache manager 110 may receive an input translation entry (ITE) in an idle state (S10) (S11).

캐시 매니저(110)는 입력 트랜슬레이션 엔트리(ITE)에 해당하는 페이지 사이즈가 복수의 가변 페이지 그룹 캐시들(120)에 할당된 페이지 사이즈들 중 하나와 동일한지 여부를 결정할 수 있다(S12). 예를 들어, 캐시 매니저(110)는 도 7을 참조하여 설명하는 어드레스 비트들에 기초하여 입력 트랜슬레이션 엔트리(ITE)에 해당하는 페이지 사이즈를 결정할 수 있다. 캐시 매니저(110)는 캐시 페이지 정보(CPI)에 기초하여 입력 트랜슬레이션 엔트리(ITE)에 해당하는 페이지 사이즈가 이미 할당된 페이지 사이즈에 해당하는지 여부를 결정할 수 있다.The cache manager 110 may determine whether the page size corresponding to the input translation entry (ITE) is the same as one of the page sizes allocated to the plurality of flexible page group caches 120 (S12). For example, the cache manager 110 may determine a page size corresponding to an input translation entry (ITE) based on address bits described with reference to FIG. 7 . The cache manager 110 may determine whether a page size corresponding to an input translation entry (ITE) corresponds to an already allocated page size based on the cache page information (CPI).

캐시 매니저(110)는 입력 트랜슬레이션 엔트리(ITE)에 해당하는 페이지 사이즈가 이미 할당된 페이지 사이즈들 중 하나와 동일한 페이지 사이즈에 해당하는 경우(S12: YES), 입력 트랜슬레이션 엔트리(ITE)에 해당하는 페이지 사이즈가 할당된 가변 페이지 그룹 캐시에 입력 트랜슬레이션 엔트리(ITE)를 저장할 수 있다(S13).The cache manager 110, when the page size corresponding to the input translation entry (ITE) corresponds to the same page size as one of the already allocated page sizes (S12: YES), the input translation entry (ITE) The input translation entry (ITE) may be stored in the variable page group cache to which the page size corresponding to is allocated (S13).

캐시 매니저(110)는 복수의 가변 페이지 그룹 캐시들(120)로부터 축출된 트랜슬레이션 엔트리(ETE)가 존재하는 경우(S14: YES), 축출된 트랜슬레이션 엔트리(ETE)를 공유 캐시(SHC)에 저장하고(S15), 아이들 상태(S10)로 진입할 수 있다. 한편, 캐시 매니저(110)는 복수의 가변 페이지 그룹 캐시들(120)로부터 축출된 트랜슬레이션 엔트리(ETE)가 존재하지 않는 경우(S14: NO), 아이들 상태(S10)로 돌아갈 수 있다.The cache manager 110, when there is a translation entry (ETE) evicted from the plurality of variable page group caches 120 (S14: YES), transfers the evicted translation entry (ETE) to the shared cache (SHC). ) (S15), and may enter the idle state (S10). Meanwhile, the cache manager 110 may return to an idle state (S10) when there is no translation entry (ETE) extracted from the plurality of variable page group caches 120 (S14: NO).

캐시 매니저(110)는 입력 트랜슬레이션 엔트리(ITE)에 해당하는 페이지 사이즈가 이미 할당된 페이지 사이즈들 중 하나와 동일한 페이지 사이즈에 해당하지 않는 경우(S12: NO), 캐시 페이지 정보(CPI)에 기초하여 복수의 가변 페이지 그룹 캐시들(120) 중에서 페이지 사이즈가 할당되지 않은 가변 페이지 그룹 캐시, 즉 빈 가변 페이지 그룹 캐시(EMPTY FPGC)가 존재하는지 여부를 결정할 수 있다(S16).The cache manager 110, when the page size corresponding to the input translation entry (ITE) does not correspond to the same page size as one of the page sizes already allocated (S12: NO), cache page information (CPI) Based on this, it may be determined whether a variable page group cache to which a page size is not allocated, that is, an empty variable page group cache (EMPTY FPGA) exists among the plurality of variable page group caches 120 (S16).

캐시 매니저(110)는 빈 가변 페이지 그룹 캐시(EMPTY FPGC)가 존재하는 경우(S16: YES), 빈 가변 페이지 그룹 캐시(EMPTY FPGC)에 입력 트랜슬레이션 엔트리(ITE)에 해당하는 새로운 페이지 사이즈를 할당하고(S17), 입력 트랜슬레이션 엔트리(ITE)를 상기 새로운 페이지 사이즈가 할당된 가변 페이지 그룹 캐시에 저장할 수 있다(S18).If the empty variable page group cache (EMPTY FPGA) exists (S16: YES), the cache manager 110 sets a new page size corresponding to the input translation entry (ITE) to the empty variable page group cache (EMPTY FPGA). Allocate (S17), and store the input translation entry (ITE) in the variable page group cache to which the new page size is allocated (S18).

캐시 매니저(110)는 빈 가변 페이지 그룹 캐시(EMPTY FPGC)가 존재하지 않는 경우(S16: NO), 입력 트랜슬레이션 엔트리(ITE)를 공유 캐시(SHC)에 저장하고(S19), 아이들 상태(S10)로 돌아갈 수 있다.When the empty variable page group cache (EMPTY FPGA) does not exist (S16: NO), the cache manager 110 stores the input translation entry (ITE) in the shared cache (SHC) (S19), and enters an idle state ( S10) can be returned.

이와 같이, 본 발명의 실시예들에 따른 어드레스 트랜슬레이션 캐시(100)는 복수의 가변 페이지 그룹 캐시들(120)의 각각에 페이지 사이즈를 동적으로 할당하고, 할당된 페이지 사이즈들에 기초하여 할당된 페이지 사이즈에 상응하는 트랜슬레이션 엔트리들을 페이지 사이즈 별로 저장함으로써 캐시 메모리 자원을 효율적으로 이용할 수 있고 어드레스 매핑 정보의 탐색 시간을 감소할 수 있다.In this way, the address translation cache 100 according to embodiments of the present invention dynamically allocates a page size to each of the plurality of variable page group caches 120 and allocates the page size based on the allocated page sizes. By storing translation entries corresponding to the specified page size for each page size, cache memory resources can be efficiently used and search time for address mapping information can be reduced.

도 5는 본 발명의 실시예들에 따른 어드레스 트랜슬레이션 캐시에 포함되는 세트 연관 캐시(set associative cache)의 일 실시예를 나타내는 도면이다.5 is a diagram illustrating an embodiment of a set associative cache included in an address translation cache according to embodiments of the present invention.

도 5를 참조하면, 세트 연관 캐시(20)는 캐시 메모리(50), 태그 비교부(41), 데이터 출력부(MUX)(42), 업데이트 제어부(UCON)(43) 및 캐시 적중 판정부(44)를 포함할 수 있다.Referring to FIG. 5 , the set association cache 20 includes a cache memory 50, a tag comparison unit 41, a data output unit (MUX) 42, an update control unit (UCON) 43, and a cache hit determination unit ( 44) may be included.

캐시 메모리(50)는 가상 어드레스(VA)의 태그를 저장하는 태그 메모리(TARR)와 가상 어드레스(VA)에 매팽되는 물리 어드레스(PA)를 저장하는 데이터 메모리(DARR)를 포함할 수 있다.The cache memory 50 may include a tag memory TARR that stores a tag of the virtual address VA and a data memory DARR that stores a physical address PA mapped to the virtual address VA.

도 5에는 태그 메모리(TARR)와 데이터 메모리(DARR)의 세트 연관 캐시 구조가 도시되어 있다. 태그 메모리(TARR)와 데이터 메모리(DARR)는 가상 어드레스(VA) 중 인덱스(IDX)에 의해 선택될 수 있는 복수의 세트들을 포함할 수 있으며, 복수의 세트들에 각각 상응하는 복수의 캐시 라인들을 각각 포함하는 복수의 웨이들을 포함할 수 있다. 태그 메모리(TARR)와 데이터 메모리(DARR)의 행(row)은 세트를 나타내며, 열(column)은 웨이를 나타낼 수 있다.5 shows a set associative cache structure of a tag memory (TARR) and a data memory (DARR). The tag memory TARR and the data memory DARR may include a plurality of sets selectable by an index IDX of the virtual address VA, and a plurality of cache lines respectively corresponding to the plurality of sets. It may include a plurality of ways each including. Rows of the tag memory TARR and data memory DARR may represent sets, and columns may represent ways.

도 5에는 도시 및 설명의 편의상 0에서 m까지의 인덱스로 지정된 m+1개의 세트들 및 4개의 웨이들(WY0~WY3)로 구현된 4-웨이 세트 연관 캐시 구조의 예가 도시되어 있다. 도 5에 도시된 바와 같이, 캐시 메모리(50)가 4-웨이 세트 연관 캐시 구조를 갖는 경우, 하나의 세트는 제1 내지 제4 태그들(TG0~TG3)과 이에 각각 매핑되는 제1 내지 제4 물리 어드레스들(PA0~PA3)을 저장할 수 있다.5 shows an example of a 4-way set associative cache structure implemented with m+1 sets designated as indexes 0 to m and 4 ways (WY0 to WY3) for convenience of illustration and description. As shown in FIG. 5 , when the cache memory 50 has a 4-way set association cache structure, one set includes first to fourth tags TG0 to TG3 and first to fourth tags mapped thereto, respectively. 4 physical addresses PA0 to PA3 can be stored.

또한, 제1 내지 제4 태그들(TG0~TG3)은 태그 메모리(TARR)의 동일한 로우에 저장될 수 있다. 이때, 제1 태그(TG0)는 제1 웨이(WY0)에 대응되며, 제2 태그(TG1)는 제2 웨이(WY1)에 대응되며, 제3 태그(TG2)는 제3 웨이(WY2)에 대응되며, 제4 태그(TG3)는 제4 웨이(WY3)에 대응될 수 있다. 제1 내지 제4 태그들(TG0~TG3)에 각각 매핑되는 제1 내지 제4 물리 어드레스들(PA0~PA3)도 태그들(TG0~TG3)과 동일한 방식으로 데이터 메모리(DARR)에 저장될 수 있다.Also, the first to fourth tags TG0 to TG3 may be stored in the same row of the tag memory TARR. At this time, the first tag TG0 corresponds to the first way WY0, the second tag TG1 corresponds to the second way WY1, and the third tag TG2 corresponds to the third way WY2. and the fourth tag TG3 may correspond to the fourth way WY3. The first to fourth physical addresses PA0 to PA3 respectively mapped to the first to fourth tags TG0 to TG3 may also be stored in the data memory DARR in the same manner as the tags TG0 to TG3. there is.

세트 연관 캐시(20)는 외부로부터 어드레스 트랜슬레이션을 위한 입력 가상 어드레스(VA)를 수신할 수 있다. 입력 가상 어드레스(VA)는 도 5에 도시된 바와 같이, 태그(TG)와 캐시 메모리(50)의 행(row) 어드레스(즉, 세트)를 나타내는 인텍스(IDG)를 포함할 수 있다. The set associative cache 20 may receive an input virtual address VA for address translation from the outside. As shown in FIG. 5 , the input virtual address VA may include a tag TG and an index IDG indicating a row address (ie, set) of the cache memory 50 .

태그 비교부(41) 및 캐시 적중 판정부(44)는 외부로부터 어드레스 트랜슬레이션을 위한 입력 가상 어드레스(VA)를 수신하고 입력 사상 어드레스(VA)에 상응하는 트랜슬레이션 엔트리가 캐시 메모리(50)에 저장되어 있는지 여부를 판단할 수 있다. 즉, 캐시 히트인지 캐시 미스인지 여부를 판단한다.The tag comparison unit 41 and the cache hit determination unit 44 receive an input virtual address VA for address translation from the outside, and a translation entry corresponding to the input mapped address VA is stored in the cache memory 50. ) to determine whether it is stored in That is, it is determined whether it is a cache hit or a cache miss.

태그 비교부(41)는 인덱스(IDX)가 가리키는 세트에 포함되는 태그들(TG0~TG3) 각각을 입력 가상 어드레스(VA)의 태그(TG)와 일치하는지 여부를 비교하는 비교기들(COM0~COM3)을 포함할 수 있다. 비교기들(COM0~COM3)은 태그들(TG0~TG3)의 각각이 입력 가상 어드레스(VA)의 태그(TG)와 일치하는 경우 웨이 적중 신호들(HT0~HT3) 중 상응하는 하나의 웨이 적중 신호를 활성화할 수 있다. 캐시 적중 판정부(44)는 웨이 적중 신호들(HT0~HT3) 중 하나가 활성화되는 경우 캐시 적중 신호(CHT)를 활성화하여 캐시 히트임을 나타낼 수 있다. 즉, 캐시 히트는 외부로부터 요청된 매핑 정보가 캐시 메모리(50) 내에 존재하고 있음을 나타낸다.The tag comparator 41 compares each of the tags TG0 to TG3 included in the set indicated by the index IDX with the tag TG of the input virtual address VA through comparators COM0 to COM3. ) may be included. When each of the tags TG0 to TG3 matches the tag TG of the input virtual address VA, the comparators COM0 to COM3 correspond to one of the way hit signals HT0 to HT3. can be activated. The cache hit determining unit 44 may indicate a cache hit by activating the cache hit signal CHT when one of the way hit signals HTO to HT3 is activated. That is, a cache hit indicates that mapping information requested from the outside exists in the cache memory 50 .

캐시 적중 신호(CHT)가 활성화되어 캐시 히트를 나타내는 경우, 입력 가상 어드레스(VA)의 태그(TG)에 상응하는 물리 어드레스(PA)가 외부로 출력될 수 있다. 태그 비교부(41)는 데이터 출력부(42)로 웨이 적중 신호들(HT0~HT3)을 출력할 수 있으며, 데이터 출력부(42)는 데이터 메모리(DARR)로부터 출력되는 물리 어드레스들(PA0~PA3) 중에서 활성화된 웨이 적중 신호에 상응하는 물리 어드레스를 선택하여 외부로 제공하기 위한 물리 어드레스(PA)로서 출력할 수 있다. 반면에, 캐시 미스인 경우, 캐시 적중 판정부(44)는 비활성화된 캐시 적중 신호(CHT)를 출력하고, 도14 및 15를 참조하여 후술하는 바와 같이 어드레스 트랜슬레이션 캐시(100)는 가상 어드레스(VA)에 상응하는 물리 어드레스(PA)를 메모리 관리 유닛에 요청할 수 있다. When the cache hit signal CHT is activated to indicate a cache hit, the physical address PA corresponding to the tag TG of the input virtual address VA may be externally output. The tag comparison unit 41 may output the way hit signals HT0 to HT3 to the data output unit 42, and the data output unit 42 may output the physical addresses PA0 to HT3 output from the data memory DARR. A physical address corresponding to an activated way hit signal may be selected from PA3) and output as a physical address PA to provide to the outside. On the other hand, in case of a cache miss, the cache hit determining unit 44 outputs an inactivated cache hit signal (CHT), and as will be described later with reference to FIGS. 14 and 15, the address translation cache 100 sends a virtual address A physical address (PA) corresponding to (VA) may be requested from the memory management unit.

캐시 라인들 중 하나에 미리 저장된 정보는, 모든 캐시 라인들이 현재 정보를 저장하고 있다면 새로운 정보를 위한 공간을 만들도록 축출된다. 캐시 라인들은 교체 정책(replacement policy)에 기초하여 축출되도록 선택된다. 예를 들어, LRU(least recently used) 교체 정책 또는 RRIP(re-reference interval prediction) 교체 정책을 사용할 수 있다. Information previously stored in one of the cache lines is evicted to make room for new information if all cache lines are currently storing information. Cache lines are selected to be evicted based on a replacement policy. For example, a least recently used (LRU) replacement policy or a re-reference interval prediction (RRIP) replacement policy may be used.

업데이트 제어부(43)는 캐시 교체 정책에 의해 결정된 하나의 캐시 라인에 저장된 데이터를 삭제하고 수신한 입력 트랜슬레이션 엔트리(ITE)를 삭제된 캐시 라인에 저장할 수 있다.The update control unit 43 may delete data stored in one cache line determined by the cache replacement policy and store the received input translation entry (ITE) in the deleted cache line.

도 6은 본 발명의 실시예들에 따른 어드레스 트랜슬레이션 캐시의 캐시 라인에 저장되는 트랜슬레이션 엔트리를 나타내는 도면이다.6 is a diagram illustrating a translation entry stored in a cache line of an address translation cache according to embodiments of the present invention.

도 6을 참조하면, 트랜슬레이션 엔트리(TE)는 가상 어드레스의 태그(TG) 및 태그(TG)에 매핑되는 물리 어드레스(PA)를 포함할 수 있다. 또한, 트랜슬레이션 엔트리(TE)는 유효성 필드(V), 펑션 식별자(PFID), 그 밖의 정보(OINF)를 더 포함할 수 있다. 유효성 필드(V)는 트랜슬레이션 엔트리(TE)의 유효 또는 무효를 나타내고 펑션 식별자(PFID)는 복수의 펑션들 중 트랜슬레이션 엔트리(TE)와 연관된 펑션을 나타낸다. 그 밖의 정보(OINF)는 축출되는 데이터의 결정을 위한 LRU 필드, 트랜슬레이션 엔트리(TE)과 연관된 아웃스탠딩 명령어들(outstanding instructions)의 개수를 나타내는 락 카운트(lock count) 등을 포함할 수 있다.Referring to FIG. 6 , the translation entry TE may include a tag TG of a virtual address and a physical address PA mapped to the tag TG. In addition, the translation entry TE may further include a validity field V, a function identifier PFID, and other information OINF. The validity field (V) indicates whether the translation entry (TE) is valid or invalid, and the function identifier (PFID) indicates a function related to the translation entry (TE) among a plurality of functions. The other information OINF may include an LRU field for determining data to be extracted, a lock count indicating the number of outstanding instructions associated with the translation entry TE, and the like. .

도 7은 페이지 사이즈에 따른 어드레스 비트들의 설정의 일 실시예를 나타내는 도면이다.7 is a diagram illustrating an embodiment of setting address bits according to a page size.

도 7에는 피씨아이 익스프레스 (PCIe, Peripheral Component Interconnect Express) 표준에 따른 s 필드를 이용한 페이지 사이즈의 설정의 일 예가 도시되어 있다. 도 7에서 각 비트의 "X"는 실제 어드레스에 의해 결정되는 0 또는 1의 값을 나타낸다.7 shows an example of page size setting using the s field according to the Peripheral Component Interconnect Express (PCIe) standard. In FIG. 7, "X" of each bit represents a value of 0 or 1 determined by the actual address.

예를 들어, 최소 페이지 사이즈는 4KB 일 수 있고, 이 경우, 어드레스의 0~10번째 비트들은 무시될 수 있다. 어드레스의 11번째 비트는 s 필드에 해당하고, s 필드가 0이면 어드레스에 최소 페이지 사이즈가 적용됨을 나타내고 s 필드가 1이면 어드레스에 최소 페이지 사이즈보다 큰 페이지 사이즈가 적용됨을 나타낼 수 있다. 12번째 비트가 0이면 어드레스에 8KB의 페이지 사이즈가 적용되고 1이면 8KB보다 큰 페이지 사이즈가 적용됨을 나타낼 수 있다. For example, the minimum page size may be 4KB, and in this case, bits 0 to 10 of the address may be ignored. The 11th bit of the address corresponds to the s field. If the s field is 0, it may indicate that the minimum page size is applied to the address, and if the s field is 1, it may indicate that a page size larger than the minimum page size is applied to the address. If the twelfth bit is 0, a page size of 8 KB is applied to the address, and if it is 1, it may indicate that a page size larger than 8 KB is applied.

이와 같은 방식으로 하위 비트부터 처음으로 0이 되는 비트를 판별하여 어드레스의 페이지 사이즈를 결정할 수 있다. 도 7에는 페이지 사이즈가 4KB, 8KB, 16KB, 2MB, 1GB, 4GB인 경우에 해당하는 어드레스 비트들의 예가 도시되어 있다. 32~63번째의 상위 비트들은 4GB보다 큰 페이지 사이즈를 나타내기 위해 이용될 수 있다.In this way, the page size of the address can be determined by determining the bit that becomes 0 first from the lower bit. 7 shows examples of address bits corresponding to the case where the page size is 4 KB, 8 KB, 16 KB, 2 MB, 1 GB, and 4 GB. The 32nd to 63rd upper bits may be used to indicate a page size larger than 4GB.

도 8 및 9는 본 발명의 실시예들에 따른 어드레스 트랜슬레이션 캐시의 엔트리 탐색 동작을 나타내는 도면들이다. 도 8에는 도시의 편의상 복수의 가변 페이지 그룹 캐시들에 해당하는 제1 내지 제5 세트 연관 캐시들(FPGC1~FPGC5) 및 캐시 매니저(CMNG)가 도시되어 있으며 공유 캐시(SHC)는 도시를 생략하였다. 8 and 9 are diagrams illustrating an operation of searching for an entry of an address translation cache according to embodiments of the present invention. In FIG. 8 , for convenience of illustration, first to fifth set association caches FPGA to FGC5 corresponding to a plurality of flexible page group caches and a cache manager CMNG are shown, and the shared cache SHC is omitted. .

도 8을 참조하면, 제1 세트 연관 캐시(FPGC1)에는 4KB의 페이지 사이즈가 할당되고, 제2 세트 연관 캐시(FPGC2)에는 8KB의 페이지 사이즈가 할당되고, 제3 세트 연관 캐시(FPGC3)에는 16KB의 페이지 사이즈가 할당되고, 제4 세트 연관 캐시(FPGC4)에는 32KB의 페이지 사이즈가 할당되고, 제5 세트 연관 캐시(FPGC5)에는 64KB의 페이지 사이즈가 할당될 수 있다. 도 8에는 설명의 편의를 위한 페이지 사이즈 할당의 일 예가 도시되어 있으며, 본 발명의 실시예들이 이에 한정되는 것은 아니고 전술한 바와 같이 캐시 매니저(CMNG)는 페이지 사이즈를 동적으로 다양하게 할당할 수 있고 각 세트 연관 캐시에 할당된 페이지 사이즈를 캐시 페이지 정보(CPI)에 저장할 수 있다.Referring to FIG. 8 , a page size of 4 KB is allocated to the first set associative cache (FPGC1), a page size of 8 KB is allocated to the second set associative cache (FPGC2), and a page size of 16 KB is allocated to the third set associative cache (FPGC3). A page size of , a page size of 32 KB may be allocated to the fourth set associative cache (FPGC4), and a page size of 64 KB may be allocated to the fifth set associative cache (FPGC5). 8 shows an example of page size allocation for convenience of explanation, and embodiments of the present invention are not limited thereto, and as described above, the cache manager (CMNG) can dynamically allocate page sizes in various ways, A page size allocated to each set-associated cache may be stored in cache page information (CPI).

일 실시예에서, 제1 내지 제5 세트 연관 캐시들(FPGC1~FPGC5)은 모두 동일한 개수의 세트들을 포함할 수 있다. 예를 들어, 도 8에 도시된 바와 같이, 제1 내지 제5 세트 연관 캐시들(FPGC1~FPGC5)의 각각은 4개의 세트들(SET0~SET3)을 포함할 수 있으며, 이 경우 가상 어드레스(VA)의 2비트가 인덱스에 해당할 수 있다.In one embodiment, all of the first to fifth set associative caches FPGA1 to FPGA5 may include the same number of sets. For example, as shown in FIG. 8 , each of the first to fifth set association caches FPGA1 to FPGA5 may include four sets SET0 to SET3, in which case the virtual address VA ) may correspond to the index.

캐시 매니저(CMNG)는, 입력 가상 어드레스(VA)에 매핑되는 물리 어드레스를 탐색하는 경우, 제1 내지 제5 세트 연관 캐시들(FPGC1~FPGC5) 및 완전 연관 캐시를 모두 탐색할 수 있다.When searching for a physical address mapped to the input virtual address VA, the cache manager CMNG may search all of the first to fifth set associative caches FPGC1 to FPGA5 and fully associative caches.

도 9에는 도 7을 참조하여 설명한 페이지 사이즈에 따른 어드레스 비트들의 설정에 해당하는 예가 도시되어 있다.FIG. 9 shows an example corresponding to the setting of address bits according to the page size described with reference to FIG. 7 .

도 8 및 9를 참조하면, 캐시 매니저(CMNG)는, 캐시 페이지 정보(CPI)에 기초하여 입력 가상 어드레스(VA)로부터 제1 내지 제5 세트 연관 캐시들(FPGC1~FPGC5)에 할당된 페이즈 사이즈들(4KB, 8KB, 16KB, 32KB, 64KB)에 각각 상응하는 제1 내지 제5 태그들(TG1~TG5) 및 제1 내지 제5 인덱스들(IDX1~IDX5)을 추출하고, 할당된 페이즈 사이즈들(4KB, 8KB, 16KB, 32KB, 64KB)에 각각 상응하는 태그들(TG1~TG5) 및 인덱스들(IDX1~IDX5)을 할당된 페이지 사이즈들(4KB, 8KB, 16KB, 32KB, 64KB)에 상응하는 세트 연관 캐시들(FPGC1~FPGC5)에 각각 제공할 수 있다. 한편, 도면에 도시되지는 않았으나, 엔트리 탐색 동작시, 완전 연관 캐시로 구현되는 공유 캐시(SHC)에는 입력 가상 어드레스(VA)가 제공될 수 있다.Referring to FIGS. 8 and 9 , the cache manager CMNG determines the phase size allocated to the first to fifth set associated caches FPGA to FGC5 from the input virtual address VA based on the cache page information CPI. first to fifth tags (TG1 to TG5) and first to fifth indexes (IDX1 to IDX5) corresponding to 4KB, 8KB, 16KB, 32KB, and 64KB, respectively, are extracted, and the assigned phase sizes Tags (TG1 to TG5) and indexes (IDX1 to IDX5) corresponding to (4KB, 8KB, 16KB, 32KB, 64KB), respectively, correspond to page sizes (4KB, 8KB, 16KB, 32KB, 64KB) It can be provided to the set-associated caches (FPGC1 to FPGA5), respectively. Meanwhile, although not shown in the drawings, an input virtual address VA may be provided to the shared cache SHC implemented as a fully associative cache during an entry search operation.

도 9에 도시된 바와 같이, 페이지 사이즈에 따라서 태그 및 인덱스는 달라질 수 있다. 4KB의 페이지 사이즈의 경우 제1 인덱스(IDX1)는 B12 및 B13 비트들에 해당하고, 제1 태그(TG1)는 B14 내지 B31 비트들에 해당할 수 있다. 8KB의 페이지 사이즈의 경우 제2 인덱스(IDX2)는 B13 및 B14 비트들에 해당하고, 제2 태그(TG2)는 B15 내지 B31 비트들에 해당할 수 있다. 16KB의 페이지 사이즈의 경우 제3 인덱스(IDX3)는 B14 및 B15 비트들에 해당하고, 제3 태그(TG3)는 B16 내지 B31 비트들에 해당할 수 있다. 32KB의 페이지 사이즈의 경우 제4 인덱스(IDX4)는 B15 및 B16 비트들에 해당하고, 제4 태그(TG4)는 B17 내지 B31 비트들에 해당할 수 있다. 64KB의 페이지 사이즈의 경우 제5 인덱스(IDX5)는 B16 및 B17 비트들에 해당하고, 제5 태그(TG5)는 B18 내지 B31 비트들에 해당할 수 있다.As shown in FIG. 9 , tags and indexes may vary according to page sizes. In the case of a page size of 4 KB, the first index IDX1 may correspond to bits B12 and B13, and the first tag TG1 may correspond to bits B14 to B31. In the case of a page size of 8 KB, the second index IDX2 may correspond to bits B13 and B14, and the second tag TG2 may correspond to bits B15 to B31. In the case of a page size of 16 KB, the third index IDX3 may correspond to bits B14 and B15, and the third tag TG3 may correspond to bits B16 to B31. In the case of a page size of 32 KB, the fourth index IDX4 may correspond to bits B15 and B16, and the fourth tag TG4 may correspond to bits B17 to B31. In the case of a page size of 64 KB, the fifth index IDX5 may correspond to bits B16 and B17, and the fifth tag TG5 may correspond to bits B18 to B31.

이와 같이, 제1 내지 제5 세트 연관 캐시들(FPGC1~FPGC5)이 모두 동일한 개수의 세트들(SET0~SET3)을 포함하는 경우, 제1 내지 제5 세트 연관 캐시들(FPGC1~FPGC5) 중 각각의 세트 연관 캐시에 할당된 페이지 사이즈가 증가할수록 각각의 세트 연관 캐시에 저장되는 태그의 비트 수는 감소할 수 있다.As such, when the first to fifth set associative caches FPGA1 to FPGA5 include the same number of sets SET0 to SET3 , each of the first to fifth set associative caches FPGA1 to FPGA5 As the page size allocated to the set associative cache of increases, the number of bits of tags stored in each set associative cache may decrease.

어드레스 트랜슬레이션 캐시를 포함하는 장치의 입장에서는 도 14 및 15를 참조하여 후술하는 바와 같이 트랜슬레이션 레스판스를 수신하고 나서야 메모리 관리 유닛에서 어떤 페이지 사이즈로 관리하는지를 알 수 있고, 펑션 및/또는 레스판스마다 페이지 사이즈가 달라질 수 있기 때문에 세트 연관 캐시에 특정 사이즈를 할당하게 되면 동작 상에 문제가 생길 수 있다.From the point of view of a device including an address translation cache, as will be described later with reference to FIGS. 14 and 15, only after receiving a translation response, it is possible to know what page size is managed by the memory management unit, and the function and/or Since the page size can vary for each response, if a specific size is allocated to the set-association cache, problems may arise in operation.

또한, 도 9를 참조하여 설명한 바와 같이, 페이지 사이즈에 따라서 어드레스 내의 인덱스의 위치가 변하기 때문에 특정 위치의 비트들을 인덱스로 하는 종래의 방식에 의해 정상 동작이 불가능하다. 따라서 종래의 어드레스 트랜슬레이션 캐시는 세트 연관 캐시를 사용할 수 없고 완전 연관 캐시를 사용할 수 밖에 없다.In addition, as described with reference to FIG. 9, since the position of an index in an address changes according to the page size, normal operation is impossible due to the conventional method of using bits at a specific position as an index. Therefore, a conventional address translation cache cannot use a set associative cache and must use a fully associative cache.

도 8 및 9를 참조하여 설명한 바와 같이, 본 발명의 실시예들에 따라서, 각 세트 연관 캐시에 페이지 사이즈를 동적으로 할당하고, 캐시 페이지 정보(CPI)에 기초하여 입력 가상 어드레스로부터 각 세트 연관 캐시에 할당된 페이지 사이즈에 상응하는 태그 및 인덱스를 추출하여 제공할 수 있다.As described with reference to FIGS. 8 and 9, according to embodiments of the present invention, a page size is dynamically allocated to each set associative cache, and based on cache page information (CPI), from an input virtual address to each set associative cache. Tags and indexes corresponding to the page size assigned to can be extracted and provided.

도 10은 본 발명의 실시예들에 따른 어드레스 트랜슬레이션 캐시의 엔트리 무효화 동작을 나타내는 순서도이다.10 is a flowchart illustrating an entry invalidation operation of an address translation cache according to embodiments of the present invention.

도 1 및 10을 참조하면, 어드레스 트랜슬레이션 캐시(100)를 포함하는 장치는 아이들 상태(S20)에서 무효화 리퀘스트(IREQ)를 수신할 수 있다(S21). 무효화 리퀘스트(IREQ)는 무효화 하기 위한 트랜슬레이션 엔트리를 나타내는 입력 가상 어드레스(VA)를 포함할 수 있다.Referring to FIGS. 1 and 10 , the device including the address translation cache 100 may receive an invalidation request (IREQ) in an idle state (S20) (S21). The invalidation request IREQ may include an input virtual address VA indicating a translation entry to be invalidated.

무효화 리퀘스트(IREQ)를 수신한 경우 페이지 사이즈와 무관하게 무효화 범위(invalidation range)와 겹치면 어드레스 트랜슬레이션 캐시에 저장된 모든 트랜슬레이션 엔트리들을 탐색하여야 한다. 따라서, 캐시 매니저(110)는 입력 가상 어드레스(VA)를 공유 캐시(SHC) 및 모든 가변 페이지 그룹 캐시들(FPGCs)에 제공할 수 있다(S22). 전술한 바와 같이 가변 페이지 그룹 캐시들(FPGCs)은 세트 연관 캐시들로 구현될 수 있다. 이 경우 캐시 매니저(110)는, 도 8 및 9를 참조하여 설명한 엔트리 탐색 동작과 같이, 캐시 페이지 정보(CPI)에 기초하여 입력 가상 어드레스(VA)로부터 세트 연관 캐시들에 할당된 페이즈 사이즈들에 각각 상응하는 태그들 및 인덱스들을 추출하고, 할당된 페이즈 사이즈들에 각각 상응하는 태그들 및 인덱스들을 할당된 페이지 사이즈들에 상응하는 세트 연관 캐시들에 각각 제공할 수 있다. 한편, 캐시 매니저(110)는 완전 연관 캐시로 구현되는 공유 캐시(SHC)에는 입력 가상 어드레스(VA)를 제공할 수 있다.When the invalidation request (IREQ) is received, if it overlaps with the invalidation range regardless of the page size, all translation entries stored in the address translation cache must be searched. Accordingly, the cache manager 110 may provide the input virtual address VA to the shared cache SHC and all variable page group caches FPGAs (S22). As discussed above, variable page group caches (FPGCs) may be implemented as set associative caches. In this case, the cache manager 110, like the entry search operation described with reference to FIGS. 8 and 9 , determines the phase sizes allocated to the set association caches from the input virtual address VA based on the cache page information CPI. Each corresponding tags and indexes may be extracted, and the tags and indexes respectively corresponding to the assigned page sizes may be provided to set associative caches corresponding to the assigned page sizes, respectively. Meanwhile, the cache manager 110 may provide an input virtual address VA to a shared cache (SHC) implemented as a fully associative cache.

이와 같이, 입력 가상 어드레스(VA)에 해당하는 트랜슬레이션 엔트리를 무효화하는 경우 공유 캐시(SHC) 및 모든 가변 페이지 그룹 캐시들(FPGCs)를 탐색할 수 있다. In this way, when invalidating the translation entry corresponding to the input virtual address (VA), the shared cache (SHC) and all variable page group caches (FPGCs) may be searched.

공유 캐시(SHC) 및 가변 페이지 그룹 캐시들(FPGCs)의 각각은 입력 가상 어드레스(VA)에 상응하는 트랜슬레이션 엔트리(TE)를 삭제할 수 있다(S23). 예를 들어, 트랜슬레이션 엔트리(TE)의 삭제 또는 무효화는 도 6을 참조하여 설명한 트랜슬레이션 엔트리(TE)에 포함되는 유효성 필드(V)의 값을 변경하는 방식으로 수행될 수 있다.Each of the shared cache (SHC) and variable page group caches (FPGCs) may delete the translation entry (TE) corresponding to the input virtual address (VA) (S23). For example, deletion or invalidation of the translation entry TE may be performed by changing the value of the validity field V included in the translation entry TE described with reference to FIG. 6 .

도 11은 본 발명의 실시예들에 따른 어드레스 트랜슬레이션 캐시를 포함하는 시스템의 인터커넥트 아키텍처의 일 실시예를 나타내는 블록도이다.11 is a block diagram illustrating one embodiment of an interconnect architecture of a system including an address translation cache according to embodiments of the present invention.

도 11을 참조하면, 한 세트의 컴포넌트들을 상호접속시키는 점대점 링크들로 이루어져 있는 패브릭의 일 실시예가 도시된다. 시스템(300)은 컨트롤러 허브(315)에 결합된 호스트 프로세서(HPRC)(305), 호스트 메모리 장치 (또는 시스템 메모리)(HMEM)(310) 및 메모리 관리 유닛(MMU)(330)을 포함한다. 호스트 프로세서(305)는 중앙처리장치(CPU), 마이크로프로세서, 코-프로세서(co-processor), 또는 다른 프로세서와 같은 임의의 프로세싱 요소를 포함한다. 호스트 프로세서(305)는 FSB(front-side bus)(306)를 통해 컨트롤러 허브(315)에 결합될 수 있다. 실시예들에 따라서, FSB(306)는 직렬 점대점 인터커넥트일 수 있고, 상이한 인터커넥트 표준을 준수하는 직렬 차동 인터커넥트 아키텍처(serial, differential interconnect architecture)를 포함할 수 있다.Referring to Figure 11, one embodiment of a fabric consisting of point-to-point links interconnecting a set of components is shown. The system 300 includes a host processor (HPRC) 305, a host memory device (or system memory) (HMEM) 310, and a memory management unit (MMU) 330 coupled to a controller hub 315. Host processor 305 includes any processing element, such as a central processing unit (CPU), microprocessor, co-processor, or other processor. The host processor 305 may be coupled to the controller hub 315 via a front-side bus (FSB) 306 . Depending on embodiments, FSB 306 may be a serial point-to-point interconnect and may include a serial, differential interconnect architecture that conforms to different interconnect standards.

호스트 메모리 장치(310)는 RAM(random access memory), 비휘발성(non-volatile, NV) 메모리, 솔리드 스테이트 메모리 또는 시스템(300)에서의 디바이스들에 의해 액세스가능한 다른 임의의 메모리 디바이스를 포함한다. 호스트 메모리 장치(310)는 메모리 인터페이스(316)를 통해 컨트롤러 허브(315)에 결합된다. 메모리 인터페이스의 예들은 DDR(double-data rate) 메모리 인터페이스, 듀얼 채널(dual-channel) DDR 메모리 인터페이스, 및 동적 RAM(DRAM) 메모리 인터페이스를 포함한다.Host memory device 310 includes random access memory (RAM), non-volatile (NV) memory, solid state memory, or any other memory device accessible by devices in system 300 . The host memory device 310 is coupled to the controller hub 315 through a memory interface 316 . Examples of memory interfaces include a double-data rate (DDR) memory interface, a dual-channel DDR memory interface, and a dynamic RAM (DRAM) memory interface.

일 실시예에서, 컨트롤러 허브(315)는 PCIe 또는 PCIE(Peripheral Component Interconnect Express) 인터커넥트 계층구조에서 루트 허브, 루트 컴플렉스, 또는 루트 컨트롤러이다. 컨트롤러 허브(315)의 예들은 칩셋, MCH(memory controller hub), 노스브리지(northbridge), ICH(interconnect controller hub), 사우스브리지(southbridge), 및 루트 컨트롤러/허브를 포함한다. 종종, 칩셋이라는 용어는 2개의 물리적으로 분리된 컨트롤러 허브, 즉, ICH(interconnect controller hub)에 결합되어 있는 MCH(memory controller hub)를 지칭한다. 컨트롤러(315)는 I/O 디바이스들과 통신한다. 일부 실시예들에서, 피어 대 피어 라우팅(peer-to-peer routing)이 루트 컴플렉스(315)를 통해 선택적으로 지원된다.In one embodiment, controller hub 315 is a root hub, root complex, or root controller in a PCIe or Peripheral Component Interconnect Express (PCIE) interconnect hierarchy. Examples of controller hub 315 include chipset, memory controller hub (MCH), northbridge, interconnect controller hub (ICH), southbridge, and root controller/hub. Often, the term chipset refers to a memory controller hub (MCH) that is coupled to two physically separate controller hubs, an interconnect controller hub (ICH). Controller 315 communicates with I/O devices. In some embodiments, peer-to-peer routing is optionally supported through root complex 315 .

여기서, 컨트롤러 허브(315)는 직렬 링크(319)를 통해 스위치/브리지(320)에 결합된다. 인터페이스들/포트들(317 및 321)이라고도 지칭될 수 있는 입력/출력 모듈들(317 및 321)은, 컨트롤러 허브(315)와 스위치(320) 사이에 통신을 제공하기 위해, 계층화된 프로토콜 스택을 포함/구현한다. 일 실시예에서, 스토리지 장치와 같은 다수의 디바이스가 스위치(320)에 결합되어 있을 수 있다.Here, controller hub 315 is coupled to switch/bridge 320 via serial link 319. Input/output modules 317 and 321, which may also be referred to as interfaces/ports 317 and 321, provide a layered protocol stack to provide communication between controller hub 315 and switch 320. include/implement In one embodiment, multiple devices, such as storage devices, may be coupled to switch 320 .

스위치/브리지(320)는 디바이스(325)로부터의 패킷들/메시지들을 상류로, 즉, 루트 컴플렉스를 향해 계층 구조 위로 - 컨트롤러 허브(315)로 - 라우팅하고, 하류로, 즉, 루트 컨트롤러를 떠나 계층 구조 아래로 - 프로세서(305) 또는 시스템 메모리(310)로부터 디바이스(325)로 - 라우팅한다. 일 실시예에서, 스위치(320)는 다수의 가상 PCI 대 PCI 브리지 디바이스들(virtual PCI-to-PCI bridge devices)의 논리 조립체(logical assembly)로 지칭된다. 디바이스(325)는 I/O 디바이스, NIC(Network Interface Controller, 네트워크 인터페이스 컨트롤러), 애드인 카드(add-in card), 오디오 프로세서, 네트워크 프로세서, 하드 드라이브, 스토리지 장치, CD/DVD ROM, 모니터, 프린터, 마우스, 키보드, 라우터, 휴대용 저장 디바이스, Firewire 디바이스, USB(Universal Serial Bus) 디바이스, 스캐너, 및 다른 입력/출력 디바이스들과 같은, 전자 시스템에 결합될 임의의 내장형 또는 외장형 디바이스 또는 컴포넌트를 포함한다. 종종, PCIe에서, 디바이스와 같은 용어는 엔드포인트를 말한다. 구체적으로 도시되지는 않았지만, 디바이스(325)는 레거시 또는 다른 버전 PCI 디바이스들을 지원하기 위해 PCIe 투 PCI/PCI-X 브리지(PCIe to PCI/PCI-X bridge)를 포함할 수 있다. PCIe에서의 엔드포인트 디바이스들은 종종 레거시, PCIe, 또는 루트 컴플렉스 통합 엔드포인트들로 분류된다.Switch/bridge 320 routes packets/messages from device 325 upstream, i.e., up the hierarchy towards the root complex - to controller hub 315 - and downstream, i.e., leaving the root controller. down the hierarchy—from the processor 305 or system memory 310 to the device 325. In one embodiment, switch 320 is referred to as a logical assembly of multiple virtual PCI-to-PCI bridge devices. The device 325 includes an I/O device, a network interface controller (NIC), an add-in card, an audio processor, a network processor, a hard drive, a storage device, a CD/DVD ROM, a monitor, Including any internal or external device or component that will be incorporated into an electronic system, such as printers, mice, keyboards, routers, portable storage devices, Firewire devices, Universal Serial Bus (USB) devices, scanners, and other input/output devices. do. Often, in PCIe, a term like device refers to an endpoint. Although not specifically shown, device 325 may include a PCIe to PCI/PCI-X bridge to support legacy or other version PCI devices. Endpoint devices in PCIe are often classified as legacy, PCIe, or root complex integrated endpoints.

메모리 관리 유닛(330)은 인터페이스(332)를 통해 컨트롤러 허브(315)에 결합될 수 있다. I/O 모듈들(331 및 318)은 메모리 관리 유닛(330)과 컨트롤러 허브(315) 사이에서 통신하기 위해 계층화된 프로토콜 스택을 구현하는 것이다. The memory management unit 330 may be coupled to the controller hub 315 via an interface 332 . The I/O modules 331 and 318 implement a layered protocol stack to communicate between the memory management unit 330 and the controller hub 315.

메모리 관리 유닛(330)은 최근에 참조되는 어드레스 매핑 정보 및/또는 빈번하게 참조되는 어드레스 매핑 정보를 저장하는 변환 색인 버퍼(translation look aside buffer)(TLB)를 포함할 수 있다. 한편, 디바이스(325)는 다이렉트 메모리 액세스 기능을 가질 수 있고, 전술한 바와 같은 본 발명의 실시예들에 따른 어드레스 트랜슬레이션 캐시(ATC)를 포함할 수 있다.The memory management unit 330 may include a translation look aside buffer (TLB) that stores recently referenced address mapping information and/or frequently referenced address mapping information. Meanwhile, the device 325 may have a direct memory access function and may include an address translation cache (ATC) according to embodiments of the present invention as described above.

도 12는 본 발명의 실시예들에 따른 어드레스 트랜슬레이션 캐시를 포함하는 시스템을 나타내는 블록도이다.12 is a block diagram illustrating a system including an address translation cache according to embodiments of the present invention.

도 12를 참조하면, 시스템(400)은 호스트 프로세서(HPRC)(410), 다이렉트 메모리 액세스 장치(DMAIP)(420), 메모리 관리 유닛(MMU)(430) 및 호스트 메모리 장치(HMEM)(440)를 포함할 수 있다. 다이렉트 메모리 액세스 장치(420)는 호스트 프로세서(410)로부터 제공되는 제어 신호(CTRLD)에 의해 제어되고, 메모리 관리 유닛(430)은 호스트 프로세서(410)로부터 제공되는 제어 신호(CTRLM)에 의해 제어될 수 있다.Referring to FIG. 12 , a system 400 includes a host processor (HPRC) 410, a direct memory access unit (DMAIP) 420, a memory management unit (MMU) 430, and a host memory device (HMEM) 440. can include The direct memory access device 420 is controlled by a control signal CTRLD provided from the host processor 410, and the memory management unit 430 is controlled by a control signal CTRLM provided from the host processor 410. can

호스트 메모리 장치(440)는 데이터 및 프로그램 코드를 저장할 수 있다. 메모리 장치(400)에는 운영 체제, 애플리케이션 등의 소프트웨어 프로그램이 로드될 수 있고, 시스템(400)의 워킹 메모리로서 기능할 수 있다. The host memory device 440 may store data and program codes. Software programs such as an operating system and applications may be loaded into the memory device 400 and may function as a working memory of the system 400 .

호스트 메모리 장치(440)는 디램(DRAM, dynamic random access memory), 에스램(SRAM, static random access memory) 등의 휘발성 메모리로 구현될 수 있으나 본 발명의 실시예들이 이에 한정되는 것은 아니다. 호스트 메모리 장치(440)는 다른 유형의 휘발성 또는 비휘발성 메모리 장치로 구현될 수 있다.The host memory device 440 may be implemented as a volatile memory such as dynamic random access memory (DRAM) or static random access memory (SRAM), but embodiments of the present invention are not limited thereto. The host memory device 440 may be implemented as other types of volatile or non-volatile memory devices.

다이렉트 메모리 액세스 장치(420)는 호스트 메모리 장치(440)에 대한 다이렉트 메모리 액세스(direct memory access) 기능을 갖는다. 예를 들어, 다이렉트 메모리 액세스 장치(440)는 카메라, GPU(graphics processing unit), NPU (neural processing unit), PCIe (peripheral component interconnect express) 장치, UFS (universal flash storage) 장치 등일 수 있다. 도 12에는 한 개의 다이렉트 메모리 액세스 장치를 도시하였으나 본 발명의 실시예들이 이에 한정되는 것은 아니다. 시스템(400)은 다양한 기능을 갖는 복수의 아이피(IP, intellectual property)들을 포함할 수 있으며 두 개 이상의 아이피들이 다이렉트 메모리 액세스 기능을 가질 수 있다.The direct memory access device 420 has a direct memory access function for the host memory device 440 . For example, the direct memory access device 440 may be a camera, a graphics processing unit (GPU), a neural processing unit (NPU), a peripheral component interconnect express (PCIe) device, or a universal flash storage (UFS) device. 12 shows one direct memory access device, but embodiments of the present invention are not limited thereto. The system 400 may include a plurality of intellectual properties (IPs) having various functions, and two or more IPs may have a direct memory access function.

다이렉트 메모리 액세스는 중앙처리장치(CPU)와 같은 호스트 프로세서(410)를 통하지 않고 데이터를 호스트 메모리 장치(410)와 직접 전송하는 방식으로, 시스템(400) 내부의 전송 버스가 지원할 수 있다. Direct memory access is a method of directly transferring data to and from the host memory device 410 without going through a host processor 410 such as a central processing unit (CPU), and may be supported by a transfer bus inside the system 400 .

다이렉트 메모리 액세스 방식에는 CPU에서 제어를 빼앗아 데이터를 한번에 전송하는 방식인 버스트 모드(burst mode)와 CPU가 메모리에 액세스하고 있지 않을 때 다이렉트 메모리 액세스를 수행하는 사이클 스틸 모드(cycle stealing mode) 등이 있다. 다이렉트 메모리 액세스는 데이터 전송시 CPU의 개입이 필요 없으므로, CPU가 다른 작업을 수행할 수 있어 시스템의 성능이 향상될 수 있다.Direct memory access methods include burst mode, which takes control from the CPU and transfers data at once, and cycle stealing mode, which performs direct memory access when the CPU is not accessing memory. . Direct memory access does not require CPU intervention during data transfer, allowing the CPU to perform other tasks, improving system performance.

메모리 관리 유닛(430)은 호스트 프로세서(410)의 호스트 메모리 장치(440)에 대한 코어 액세스 및 다이렉트 메모리 액세스 장치(420)의 호스트 메모리 장치(440)에 대한 다이렉트 액세스를 관리할 수 있다. 상기 코어 액세스 및 상기 다이렉트 액세스는 호스트 메모리 장치(440)로부터 데이터를 독출하기 위한 독출 동작 및 호스트 메모리 장치(440)에 데이터를 저장하기 위한 기입 동작을 포함할 수 있다.The memory management unit 430 may manage core access of the host processor 410 to the host memory device 440 and direct access of the direct memory access device 420 to the host memory device 440 . The core access and the direct access may include a read operation for reading data from the host memory device 440 and a write operation for storing data in the host memory device 440 .

상기 코어 액세스는 호스트 프로세서(410)로부터 발행되는(issued) 코어 액세스 리퀘스트(CREQ)에 기초하여 수행되고, 상기 다이렉트 액세스는 다이렉트 메모리 액세스 장치(420)로부터 발행되는 다이렉트 액세스 리퀘스트(DREQ)에 기초하여 수행될 수 있다. The core access is performed based on a core access request (CREQ) issued from the host processor 410, and the direct access is based on a direct access request (DREQ) issued from the direct memory access device 420. can be performed

코어 액세스 리퀘스트(CREQ) 및 다이렉트 액세스 리퀘스트(DREQ)는 각각 데이터 기입 동작 또는 데이터 독출 동작을 위한 물리 어드레스(PA)를 포함할 수 있다. 메모리 관리 유닛(430)은 어드레스 트랜슬레이션을 수행하여 가상 어드레스(VA)에 매핑되는 물리 어드레스(PA)를 제공할 수 있다. 가상 어드레스(VA)는 운영 체제의 가상 어드레스 공간 상의 위치를 나타내고 물리 어드레스(PA)는 호스트 메모리 장치(440)의 메모리 영역의 실제의 물리적 위치를 나타낸다. 어드레스 트랜슬레이션의 실시예는 도 23 및 24를 참조하여 후술한다.The core access request (CREQ) and the direct access request (DREQ) may each include a physical address (PA) for a data write operation or data read operation. The memory management unit 430 may perform address translation to provide a physical address PA mapped to a virtual address VA. The virtual address VA represents a location in the virtual address space of the operating system and the physical address PA represents the actual physical location of a memory area of the host memory device 440 . An embodiment of address translation will be described later with reference to FIGS. 23 and 24 .

메모리 관리 유닛(430)은 최근에 참조되는 어드레스 매핑 정보 및/또는 빈번하게 참조되는 어드레스 매핑 정보를 저장하는 변환 색인 버퍼(TLB)를 포함할 수 있다. 한편, 다이렉트 메모리 액세스 장치(420)는 전술한 바와 같은 본 발명의 실시예들에 따른 어드레스 트랜슬레이션 캐시(ATC)를 포함할 수 있다.The memory management unit 430 may include a translation lookaside buffer (TLB) that stores recently referenced address mapping information and/or frequently referenced address mapping information. Meanwhile, the direct memory access device 420 may include an address translation cache (ATC) according to embodiments of the present invention as described above.

도 13 내지 16은 본 발명의 실시예들에 따른 어드레스 트랜슬레이션 캐시를 포함하는 시스템의 동작을 나타내는 도면들이다.13 to 16 are diagrams illustrating the operation of a system including an address translation cache according to embodiments of the present invention.

일 실시예에서, 도 13 내지 16의 동작은 PCIe 표준의 어드레스 트랜슬레이션 서비스(ATS, address translation service) 및 페이지 리퀘스트 인터페이스(PRI, page request interface)에 따라 수행될 수 있다.In one embodiment, the operations of FIGS. 13 to 16 may be performed according to an address translation service (ATS) and a page request interface (PRI) of the PCIe standard.

도 13을 참조하면, 다이렉트 메모리 액세스 장치(DMAIP)의 장치 프로세서(DPRC)는 어드레스 트랜슬레이션 캐시(ATC)에 가상 어드레스(VA)를 전송하고(S31), 어드레스 트랜슬레이션 캐시(ATC)는 가상 어드레스(VA)에 상응하는 트랜슬레이션 엔트리가 존재하는 경우, 즉 캐시 히트인 경우(S32) 가상 어드레스(VA)에 매핑되는 물리 어드레스(PA)를 장치 프로세서(DPRC)에 제공할 수 있다(S33). 장치 프로세서(DPRC)는 물리 어드레스(PA)를 포함하는 다이렉트 액세스 리퀘스트(DREQ)를 호스트 메모리 장치(HMEM)로 전송할 수 있다(S34).Referring to FIG. 13, the device processor (DPRC) of the direct memory access device (DMAIP) transmits the virtual address (VA) to the address translation cache (ATC) (S31), and the address translation cache (ATC) When there is a translation entry corresponding to the virtual address VA, that is, when the cache is hit (S32), the physical address PA mapped to the virtual address VA may be provided to the device processor DPRC ( S33). The device processor DPRC may transmit the direct access request DREQ including the physical address PA to the host memory device HMEM (S34).

도 14를 참조하면, 다이렉트 메모리 액세스 장치(DMAIP)의 장치 프로세서(DPRC)는 어드레스 트랜슬레이션 캐시(ATC)에 가상 어드레스(VA)를 전송하고(S41), 어드레스 트랜슬레이션 캐시(ATC)는 가상 어드레스(VA)에 상응하는 트랜슬레이션 엔트리가 존재하지 않는 경우, 즉 캐시 미스인 경우(S42) 가상 어드레스(VA)를 포함하는 트랜슬레이션 리퀘스트(TREQ)를 메모리 관리 유닛(MMU)으로 전송할 수 있다(S43).Referring to FIG. 14, the device processor (DPRC) of the direct memory access device (DMAIP) transmits the virtual address (VA) to the address translation cache (ATC) (S41), and the address translation cache (ATC) When the translation entry corresponding to the virtual address VA does not exist, that is, when there is a cache miss (S42), the translation request TREQ including the virtual address VA is transmitted to the memory management unit MMU. It can (S43).

메모리 관리 유닛(MMU)은 매핑 테이블 또는 페이지 테이블에 가상 어드레스(VA)에 상응하는 트랜슬레이션 엔트리가 존재하는 경우, 즉 매핑 히트인 경우(S44), 트랜슬레이션 성공(SUCCESS)을 나타내는 정보 및 가상 어드레스(VA)에 매핑되는 물리 어드레스(PA)를 포함하는 트랜슬레이션 레스판스(TRES)를 어드레스 트랜슬레이션 캐시(ATC)로 전송할 수 있다(S45). 어드레스 트랜슬레이션 캐시(ATC)는 물리 어드레스(PA)를 장치 프로세서(DPRC)에 제공할 수 있다(S46), 한편, 가상 어드레스(VA) 및 매핑되는 물리 어드레스(PA)를 포함하는 새로운 트랜슬레이션 엔트리는 어드레스 트랜슬레이션 캐시(ATC)에 저장될 수 있다(S47). 장치 프로세서(DPRC)는 물리 어드레스(PA)를 포함하는 다이렉트 액세스 리퀘스트(DREQ)를 호스트 메모리 장치(HMEM)로 전송할 수 있다(S48).When a translation entry corresponding to the virtual address VA exists in the mapping table or page table, that is, in case of a mapping hit (S44), the memory management unit (MMU) receives information indicating a successful translation (SUCCESS) and The translation response (TRES) including the physical address (PA) mapped to the virtual address (VA) may be transmitted to the address translation cache (ATC) (S45). The address translation cache (ATC) may provide the physical address (PA) to the device processor (DPRC) (S46), meanwhile, a new translation including the virtual address (VA) and the mapped physical address (PA). The translation entry may be stored in an address translation cache (ATC) (S47). The device processor DPRC may transmit the direct access request DREQ including the physical address PA to the host memory device HMEM (S48).

도 15를 참조하면, 다이렉트 메모리 액세스 장치(DMAIP)의 장치 프로세서(DPRC)는 어드레스 트랜슬레이션 캐시(ATC)에 가상 어드레스(VA)를 전송하고(S51), 어드레스 트랜슬레이션 캐시(ATC)는 가상 어드레스(VA)에 상응하는 트랜슬레이션 엔트리가 존재하지 않는 경우, 즉 캐시 미스인 경우(S52) 가상 어드레스(VA)를 포함하는 트랜슬레이션 리퀘스트(TREQ)를 메모리 관리 유닛(MMU)으로 전송할 수 있다(S53).Referring to FIG. 15, the device processor (DPRC) of the direct memory access device (DMAIP) transmits the virtual address (VA) to the address translation cache (ATC) (S51), and the address translation cache (ATC) When the translation entry corresponding to the virtual address VA does not exist, that is, when there is a cache miss (S52), the translation request TREQ including the virtual address VA is transmitted to the memory management unit MMU. It can (S53).

메모리 관리 유닛(MMU)은 매핑 테이블 또는 페이지 테이블에 가상 어드레스(VA)에 상응하는 트랜슬레이션 엔트리가 존재하지 않는 경우, 즉 매핑 미스인 경우(S54), 트랜슬레이션 실패(FAIL)을 나타내는 정보를 포함하는 트랜슬레이션 레스판스(TRES)를 어드레스 트랜슬레이션 캐시(ATC)로 전송할 수 있다(S55). The memory management unit (MMU) provides information indicating a translation failure (FAIL) when a translation entry corresponding to the virtual address (VA) does not exist in the mapping table or page table, that is, when there is a mapping miss (S54). A translation response (TRES) including a may be transmitted to the address translation cache (ATC) (S55).

어드레스 트랜슬레이션 캐시(ATC)는 가상 어드레스(VA)를 포함하는 페이지 리퀘스트(PREQ)를 메모리 관리 유닛(MMU)으로 전송할 수 있다(S56). 메모리 관리 유닛(MMU)은 물리 어드레스(PA)를 가상 어드레스(VA)에 할당하여(S57) 새로운 트랜슬레이션 엔트리를 생성하고, 할당 성공(SUCCESS)을 나타내는 정보를 포함하는 페이지 레스판스(PRES)를 어드레스 트랜슬레이션 캐시(ATC)로 전송할 수 있다(S58).The address translation cache (ATC) may transmit the page request (PREQ) including the virtual address (VA) to the memory management unit (MMU) (S56). The memory management unit (MMU) allocates the physical address (PA) to the virtual address (VA) (S57), creates a new translation entry, and generates a page response (PRES) including information indicating success of the allocation (SUCCESS) may be transmitted to the address translation cache (ATC) (S58).

어드레스 트랜슬레이션 캐시(ATC)는 가상 어드레스(VA)를 포함하는 트랜슬레이션 리퀘스트(TREQ)를 메모리 관리 유닛(MMU)으로 전송하고(S59), 메모리 관리 유닛(MMU)은 매핑 테이블 또는 페이지 테이블에 가상 어드레스(VA)에 상응하는 트랜슬레이션 엔트리가 존재하는 경우, 즉 매핑 히트인 경우(S60), 트랜슬레이션 성공(SUCCESS)을 나타내는 정보 및 가상 어드레스(VA)에 매핑되는 물리 어드레스(PA)를 포함하는 트랜슬레이션 레스판스(TRES)를 어드레스 트랜슬레이션 캐시(ATC)로 전송할 수 있다(S61).The address translation cache (ATC) transmits the translation request (TREQ) including the virtual address (VA) to the memory management unit (MMU) (S59), and the memory management unit (MMU) sends a mapping table or page table If there is a translation entry corresponding to the virtual address VA, that is, if the mapping is a hit (S60), the information indicating the success of the translation (SUCCESS) and the physical address (PA) mapped to the virtual address (VA) ) may be transmitted to the address translation cache (ATC) (S61).

어드레스 트랜슬레이션 캐시(ATC)는 물리 어드레스(PA)를 장치 프로세서(DPRC)에 제공할 수 있다(S62), 한편, 가상 어드레스(VA) 및 매핑되는 물리 어드레스(PA)를 포함하는 새로운 트랜슬레이션 엔트리는 어드레스 트랜슬레이션 캐시(ATC)에 저장될 수 있다(S63). 장치 프로세서(DPRC)는 물리 어드레스(PA)를 포함하는 다이렉트 액세스 리퀘스트(DREQ)를 호스트 메모리 장치(HMEM)로 전송할 수 있다(S64).The address translation cache (ATC) may provide the physical address (PA) to the device processor (DPRC) (S62), meanwhile, a new translation including the virtual address (VA) and the mapped physical address (PA). The translation entry may be stored in an address translation cache (ATC) (S63). The device processor DPRC may transmit the direct access request DREQ including the physical address PA to the host memory device HMEM (S64).

도 16을 참조하면, 메모리 관리 유닛(MMU)은 매핑 테이블에 포함되는 트랜슬레이션 엔트리를 삭제하여 무효화하는 경우(S71), 다이렉트 메모리 액세스 장치(DMAIP)의 어드레스 트랜슬레이션 캐시(ATC)에 무효화되는 트랜슬레이션 엔트리를 나타내는 가상 어드레스(VA)를 포함하는 무효화 리퀘스트(IREQ)를 전송할 수 있다(S72). Referring to FIG. 16, when the memory management unit (MMU) deletes and invalidates the translation entry included in the mapping table (S71), the address translation cache (ATC) of the direct memory access unit (DMAIP) is invalidated. An invalidation request (IREQ) including a virtual address (VA) indicating a translation entry to be used may be transmitted (S72).

어드레스 트랜슬레이션 캐시(ATC)는 무효화 리퀘스트(VA)에 포함되는 가상 어드레스(VA)에 상응하는 트랜슬레이션 엔트리를 삭제하고(S73), 삭제가 완료된 후 무효화 레스판스(IRES)를 메모리 관리 유닛(MMU)에 전송할 수 있다(S74). 전술한 바와 같이, 어드레스 트랜슬레이션 캐시(ATC)는 입력 가상 어드레스(VA)에 해당하는 트랜슬레이션 엔트리를 무효화하는 경우 공유 캐시(SHC) 및 모든 가변 페이지 그룹 캐시들(FPGCs)를 탐색할 수 있다.The address translation cache (ATC) deletes the translation entry corresponding to the virtual address (VA) included in the invalidation request (VA) (S73), and after the deletion is completed, the invalidation response (IRES) is sent to the memory management unit (MMU) (S74). As mentioned above, the Address Translation Cache (ATC) may search the Shared Cache (SHC) and all Variable Page Group Caches (FPGCs) if they invalidate the translation entry corresponding to the input virtual address (VA). there is.

도 17은 본 발명의 실시예들에 따른 어드레스 트랜슬레이션 캐시를 포함하는 시스템에서 전송되는 패킷의 일 실시예를 나타내는 도면이다.17 is a diagram illustrating an embodiment of a packet transmitted in a system including an address translation cache according to embodiments of the present invention.

도 17에는 PCIe 아키텍쳐의 트랜잭션 계층에 의해 생성되고 관리되는 트랜잭션 레이어 패킷(TLP)의 포맷이 도시되어 있다.17 shows the format of a transaction layer packet (TLP) generated and managed by the transaction layer of the PCIe architecture.

트랜잭션은 리퀘스트 및 컴플리션(또는 레스판스)으로 구성되고 패킷들을 사용하여 교신된다. 도 17에 도시된 바와 같이, 트랜잭션 레이어 패킷(TLP)은 복수의 바이트들(BYTE 0~k+3)로 이루어진 선택적인 하나 이상의 TLP 프리픽스들, TLP 헤더, 데이터 페일로드 및 선택적인 다이제스트와 같은 필드들을 포함할 수 있다.Transactions consist of requests and completions (or responses) and are communicated using packets. As shown in FIG. 17, a transaction layer packet (TLP) includes fields such as optional one or more TLP prefixes of a plurality of bytes (BYTE 0 to k+3), a TLP header, a data payload, and an optional digest. may include

전술한 트랜슬레이션 리퀘스트(TREQ), 트랜슬레이션 레스판스(TRES), 페이지 리퀘스트(PREQ), 페이지 레스판스(PRES), 무효화 리퀘스트(IREQ) 및 무효화 레스판스(IRES)는 도 17에 도시된 바와 같은 트랜잭션 레이어 패킷(TLP)에 해당할 수 있다. TLP 헤더에는 다양한 정보들이 포함될 수 있고, 데이터 페일로드에는 변환되지 않은 주소(untranslated address)에 해당하는 가상 어드레스(VA) 또는 변환된 주소(translated address)에 해당하는 물리 어드레스(PA)가 포함될 수 있다.The aforementioned translation request (TREQ), translation response (TRES), page request (PREQ), page response (PRES), invalidation request (IREQ), and invalidation response (IRES) are shown in FIG. may correspond to a transaction layer packet (TLP) such as A variety of information may be included in the TLP header, and a virtual address (VA) corresponding to an untranslated address or a physical address (PA) corresponding to a translated address may be included in the data payload. .

도 18은 본 발명의 실시예들에 따른 어드레스 트랜슬레이션 캐시를 포함하는 가상화 시스템을 나타내는 블록도이다. 18 is a block diagram illustrating a virtualization system including an address translation cache according to embodiments of the present invention.

도 18을 참조하면, 시스템(600)은 호스트 프로세서(HPRC)(610), 다이렉트 메모리 액세스 장치(DMAIP)(620), 메모리 관리 유닛(MMU)(630) 및 호스트 메모리 장치(HMEM)(640)를 포함할 수 있다. Referring to FIG. 18 , a system 600 includes a host processor (HPRC) 610, a direct memory access unit (DMAIP) 620, a memory management unit (MMU) 630, and a host memory device (HMEM) 640. can include

메모리 관리 유닛(630)은 최근에 참조되는 어드레스 매핑 정보 및/또는 빈번하게 참조되는 어드레스 매핑 정보를 저장하는 변환 색인 버퍼(TLB)를 포함할 수 있다. 한편, 다이렉트 메모리 액세스 장치(620)는 전술한 바와 같은 본 발명의 실시예들에 따른 어드레스 트랜슬레이션 캐시(ATC)를 포함할 수 있다. 도 18의 시스템(600)은 도 12의 시스템(400)과 유사하므로 중복되는 설명을 생략한다.The memory management unit 630 may include a translation lookaside buffer (TLB) that stores recently referenced address mapping information and/or frequently referenced address mapping information. Meanwhile, the direct memory access device 620 may include an address translation cache (ATC) according to embodiments of the present invention as described above. Since the system 600 of FIG. 18 is similar to the system 400 of FIG. 12, redundant descriptions are omitted.

도 18의 시스템(600)은 가상화 환경(virtualization environments)을 제공하는 가상화 시스템이고, 호스트 프로세서(610)는 가상화 환경을 제공할 수 있다. 가상화 환경에서 하이퍼바이저(HPVS) 및 복수의 게스트 운영 체제들(GOS1, GOS2)이 동작할(running) 수 있다. 도 18에는 도시 및 설명의 편의상 2개의 게스트 운영 체제들, 즉 제1 게스트 운영 체제(GOS1) 및 제2 게스트 운영 체제(GOS2)가 도시되어 있으나, 하이퍼바이저(HPVS) 상에서 동작하는 게스트 운영 체제들의 개수는 가상화 환경에 따라서 다양하게 결정될 수 있다.The system 600 of FIG. 18 is a virtualization system providing virtualization environments, and the host processor 610 may provide a virtualization environment. A hypervisor (HPVS) and a plurality of guest operating systems (GOS1, GOS2) may run in a virtualization environment. Although FIG. 18 shows two guest operating systems, that is, a first guest operating system (GOS1) and a second guest operating system (GOS2) for convenience of illustration and description, guest operating systems operating on a hypervisor (HPVS) The number may be variously determined according to a virtualization environment.

도 18에는 편의상 하이퍼바이저(HPVS) 및 복수의 게스트 운영 체제들(GOS1, GOS2)이 프로세서(610)에 포함되는 것으로 도시되어 있으나, 하이퍼바이저(HPVS) 및 복수의 게스트 운영 체제들(GOS1, GOS2)은 소프트웨어 프로그램으로서 호스트 메모리 장치(640)에 로딩되고 호스트 프로세서(610)에 의해 실행될 수 있다.18 shows that a hypervisor (HPVS) and a plurality of guest operating systems (GOS1, GOS2) are included in the processor 610 for convenience, but a hypervisor (HPVS) and a plurality of guest operating systems (GOS1, GOS2) ) may be loaded into the host memory device 640 as a software program and executed by the host processor 610 .

복수의 게스트 운영체제들(GOS1, GOS2)은 가상화 환경의 복수의 버츄얼 머신들에서 각각 독립적으로 동작할 수 있고, 하이퍼바이저(HPVS)는 가상화 환경에서 상기 복수의 버츄얼 머신들을 제어할 수 있다. 가상화 환경에 대해서는 도 19를 참조하여 후술하기로 한다The plurality of guest operating systems GOS1 and GOS2 may independently operate in a plurality of virtual machines in a virtualization environment, and the hypervisor HPVS may control the plurality of virtual machines in a virtualization environment. The virtualization environment will be described later with reference to FIG. 19

제1 게스트 운영 체제(GOS1)는 제1 디바이스 드라이버(DRV1)를 포함할 수 있고, 제1 게스트 운영 체제(GOS1)는 제1 디바이스 드라이버(DRV1)를 통하여 다이렉트 메모리 액세스 장치(620)를 제어할 수 있다. 제1 디바이스 드라이버(DRV1)는 다이렉트 메모리 액세스 장치(620)를 제어하기 위한 제어 신호(CTRLD1)를 생성할 수 있다.The first guest operating system GOS1 may include a first device driver DRV1, and the first guest operating system GOS1 may control the direct memory access device 620 through the first device driver DRV1. can The first device driver DRV1 may generate a control signal CTRLD1 for controlling the direct memory access device 620 .

제2 게스트 운영 체제(GOS2)는 제2 디바이스 드라이버(DRV2)를 포함할 수 있고, 제2 게스트 운영 체제(GOS2)는 제2 디바이스 드라이버(DRV2)를 통하여 다이렉트 메모리 액세스 장치(620)를 제어할 수 있다. 제2 디바이스 드라이버(DRV2)는 다이렉트 메모리 액세스 장치(620)를 제어하기 위한 제어 신호(CTRLD2)를 생성할 수 있다.The second guest operating system GOS2 may include a second device driver DRV2, and the second guest operating system GOS2 may control the direct memory access device 620 through the second device driver DRV2. can The second device driver DRV2 may generate a control signal CTRLD2 for controlling the direct memory access device 620 .

도 19는 본 발명의 실시예들에 따른 가상화 시스템을 나타내는 블록도이다.19 is a block diagram illustrating a virtualization system according to embodiments of the present invention.

도 19를 참조하면, 가상화 시스템(500)은 시스템 하드웨어(510) 및 시스템 하드웨어(510)가 제공하는 가상화 환경에서 동작하는(running) 소프트웨어를 포함할 수 있다. 상기 소프트웨어는 하이퍼바이저(520) 및 복수의 버츄얼 머신들(VM1, VM2, VM3)(530, 540, 550)을 포함할 수 있다. 도 19에는 도시의 편의상 3개의 버츄얼 머신들(530, 540, 550)을 도시하고 있으나, 하이퍼바이저(520) 상에 인스톨되는 버츄얼 머신들의 개수는 다양하게 결정될 수 있다.Referring to FIG. 19 , the virtualization system 500 may include system hardware 510 and software running in a virtualization environment provided by the system hardware 510 . The software may include a hypervisor 520 and a plurality of virtual machines (VM1, VM2, VM3) (530, 540, 550). Although FIG. 19 shows three virtual machines 530, 540, and 550 for convenience of illustration, the number of virtual machines installed on the hypervisor 520 may be variously determined.

시스템 하드웨어(510)는 가상화 환경을 제공하는 중앙처리장치(CPU), 메모리 장치(MEM), 스토리지 장치(STR), 메모리 관리 회로(MMC), 하나 이상의 아이피(IP, intellectual property) 등을 포함할 수 있다. 중앙처리장치(CPU)는 단일의 프로세서일 수도 있고, 복수의 프로세서 코어들을 포함할 수도 있다. 중앙처리장치(CPU)가 복수의 프로세서 코어들을 포함하는 경우 복수의 프로세서 코어들 중 하나가 가상화 환경을 제공하는 도 18의 호스트 프로세서(610)에 해당할 수 있다.The system hardware 510 may include a central processing unit (CPU), a memory device (MEM), a storage device (STR), a memory management circuit (MMC), one or more intellectual property (IP), and the like providing a virtualization environment. can A central processing unit (CPU) may be a single processor or may include a plurality of processor cores. When the central processing unit (CPU) includes a plurality of processor cores, one of the plurality of processor cores may correspond to the host processor 610 of FIG. 18 providing a virtualization environment.

버츄얼 머신들(530, 540, 550)은 각각의 기능을 수행하기 위한 다양한 구성을 가질 수 있다. 이하에서는 하나의 버츄얼 머신(530)을 예로 들어 설명한다. 예를 들어, 버츄얼 머신(530)은 버츄얼 하드웨어, 게스트 운영 체제(GOS) 및 애플리케이션들(APP)을 포함할 수 있다.The virtual machines 530, 540, and 550 may have various configurations for performing respective functions. Hereinafter, one virtual machine 530 will be described as an example. For example, the virtual machine 530 may include virtual hardware, a guest operating system (GOS), and applications (APP).

버츄얼 머신(530) 내에서, 가상화 시스템(500)의 물리적인 구성 요소들은 소프트웨어로 에뮬레이트된다(emulated). 즉 가상화 시스템(500)의 물리적인 구성 요소들은 버츄얼 하드웨어로 가상화(virtualized)될 수 있다. 버츄얼 하드웨어는 시스템 하드웨어(510)의 물리적 구성요소들 중에서 버츄얼 머신(530)에 할당된 물리적 구성요소들을 에뮬레이트한 가상적인 구성요소들을 포함할 수 있다. 예를 들어, 버츄얼 하드웨어는 프로세서(CPU)를 가상화한 버츄얼 프로세서, 메모리 장치(MEM)를 가상화한 버츄얼 메모리, 아이피(IP)를 가상화한 버츄얼 아이피 등을 포함할 수 있다.Within the virtual machine 530, the physical components of the virtualization system 500 are emulated in software. That is, physical components of the virtualization system 500 may be virtualized into virtual hardware. The virtual hardware may include virtual components emulating physical components allocated to the virtual machine 530 among physical components of the system hardware 510 . For example, the virtual hardware may include a virtual processor that virtualizes a processor (CPU), a virtual memory that virtualizes a memory device (MEM), and a virtual IP that virtualizes an IP.

예를 들어, 게스트 운영 체제(GOS1)는 버츄얼 메모리 관리 유닛(vGMMU), 디바이스 드라이버(GDRV), 상태 모니터(SMON) 등을 포함할 수 있다. For example, the guest operating system GOS1 may include a virtual memory management unit (vGMMU), a device driver (GDRV), a status monitor (SMON), and the like.

버츄얼 메모리 관리 유닛(vGMMU)은 게스트 운영 체제(GOS1)의 가상 어드레스 공간을 게스트 운영 체제(GOS1) 상에서 동작하는 애플리케이션들(APP)에 할당할 수 있다. 버츄얼 메모리 관리 유닛(vGMMU)은 상기 가상 어드레스 공간의 가상 어드레스와 상기 버츄얼 하드웨어에 포함되는 버츄얼 메모리의 중간 물리 어드레스 사이의 매핑을 관리할 수 있다. The virtual memory management unit (vGMMU) may allocate a virtual address space of the guest operating system (GOS1) to applications (APP) operating on the guest operating system (GOS1). A virtual memory management unit (vGMMU) may manage a mapping between a virtual address of the virtual address space and an intermediate physical address of a virtual memory included in the virtual hardware.

디바이스 드라이버(GDRV)는 상기 버츄얼 하드웨어에 포함되는 버츄얼 아이피를 매개로 하여 시스템 하드웨어(510)에 포함되는 아이피(IP)를 제어할 수 있다. The device driver (GDRV) can control the IP included in the system hardware 510 via the virtual IP included in the virtual hardware.

상태 모니터(SMON)는 버츄얼 머신(530) 및/또는 게스트 운영 체제(GOS1)의 상태를 모니터링하여 하이퍼바이저(520)에게 상태 정보를 제공할 수 있다. 예를 들어, 상태 모니터(SMON)는 버츄얼 머신(530)이 정상적으로 동작하는 동안 주기적으로 상태 정보를 제공하고, 하이퍼바이저(HPVS)는 일정한 시간 동안 상기 상태 정보를 수신하지 못한 경우 게스트 운영 체제(GOS1)의 재부팅 여부 등을 결정할 수 있다.The state monitor SMON may monitor the state of the virtual machine 530 and/or the guest operating system GOS1 and provide state information to the hypervisor 520 . For example, the status monitor (SMON) periodically provides status information while the virtual machine 530 is operating normally, and the hypervisor (HPVS) does not receive the status information for a certain period of time. ) can decide whether or not to reboot.

하이퍼바이저(520)는 복수의 버츄얼 머신들(530, 540, 550)을 생성, 스케쥴링 및 관리할 수 있다. 하이퍼바이저(520)는 복수의 버츄얼 머신들(530, 540, 550)과 시스템 하드웨어(510) 사이의 인터페이스를 제공하고, 버츄얼 머신과 연관된 인스트럭션의 실행 및 데이터 전송을 관리할 수 있다. 하이퍼바이저(520)는 버츄얼 머신 모니터(virtual machine monitor) 또는 버츄얼 머신 매니저(virtual machine manager)라 칭할 수도 있다.The hypervisor 520 may create, schedule, and manage a plurality of virtual machines 530, 540, and 550. The hypervisor 520 may provide an interface between the plurality of virtual machines 530 , 540 , and 550 and the system hardware 510 , and manage execution of instructions related to the virtual machines and data transmission. The hypervisor 520 may also be referred to as a virtual machine monitor or virtual machine manager.

예를 들어, 하이퍼바이저(520)는 인터럽트 핸들러(INTHD), 버츄얼 메모리 관리 유닛(vHMMU), 디바이스 드라이버(HDRV), 디바이스 에뮬레이터(DEML) 등을 포함할 수 있다.For example, the hypervisor 520 may include an interrupt handler (INTHD), a virtual memory management unit (vHMMU), a device driver (HDRV), a device emulator (DEML), and the like.

버츄얼 메모리 관리 유닛(vHMMU)은 복수의 버츄얼 머신들(530, 540, 550) 또는 복수의 게스트 운영 체제들에게 메모리 장치(MEM)의 게스트 메모리 영역들을 할당할 수 있다. 버츄얼 메모리 관리 유닛(vHMMU)은 복수의 버츄얼 머신들(530, 540, 550)의 버츄얼 메모리들의 중간 물리 어드레스와 메모리 장치(MEM)의 물리 어드레스 사이의 매핑을 관리할 수 있다.The virtual memory management unit (vHMMU) may allocate guest memory areas of the memory device (MEM) to a plurality of virtual machines (530, 540, 550) or a plurality of guest operating systems. The virtual memory management unit (vHMMU) may manage a mapping between an intermediate physical address of virtual memories of the plurality of virtual machines 530 , 540 , and 550 and a physical address of the memory device MEM.

디바이스 드라이버(HDRV)는 시스템 하드웨어(510)에 포함되는 아이피(IP)를 직접 제어할 수 있다. 시스템 하드웨어(510)에 포함되는 각각의 아이피(IP)는 게스트 운영 체제(GOS1)에 포함되는 디바이스 드라이버(GDRV) 및/또는 하이퍼바이저(520)에 포함되는 디바이스 드라이버(HDRV)에 의해 제어될 수 있다.The device driver HDRV may directly control an IP included in the system hardware 510 . Each IP included in the system hardware 510 can be controlled by a device driver (GDRV) included in the guest operating system (GOS1) and/or a device driver (HDRV) included in the hypervisor 520. there is.

인터럽트 핸들러(INTHD)는 복수의 버츄얼 머신들(530, 540, 550)로부터 제공되는 정보 및/또는 시스템 하드웨어(510)로부터 제공되는 정보에 기초하여 가상화 시스템의 동작 이상을 제어할 수 있다. 예를 들어, 인터럽트 핸들러(INTHD)는 복수의 버츄얼 머신들(530, 540, 550)에 각각 포함되는 복수의 게스트 운영 체제들의 재부팅 여부를 결정할 수 있다.The interrupt handler INTHD may control abnormal operations of the virtualization system based on information provided from the plurality of virtual machines 530 , 540 , and 550 and/or information provided from the system hardware 510 . For example, the interrupt handler INTHD may determine whether to reboot a plurality of guest operating systems respectively included in the plurality of virtual machines 530 , 540 , and 550 .

디바이스 에뮬레이터(DEML)는 버츄얼 머신들(530, 540, 500)의 각각에 대하여 시스템 하드웨어(510)의 물리적인 구성요소들을 할당하고, 할당된 물리적인 구성요소들을 에뮬레이션하여 버츄얼 머신들(530, 540, 500)의 버츄얼 하드웨어를 구축하고 관리할 수 있다.The device emulator (DEML) allocates physical components of the system hardware 510 to each of the virtual machines 530, 540, and 500, and emulates the allocated physical components to create virtual machines 530 and 540. , 500) of virtual hardware can be built and managed.

도 20, 21 및 22는 본 발명의 실시예들에 따른 가상화 시스템의 가상화 환경의 계층 구조의 실시예들을 나타내는 도면들이다.20, 21 and 22 are diagrams illustrating embodiments of a hierarchical structure of a virtualization environment of a virtualization system according to embodiments of the present invention.

도 20, 21 및 22를 참조하면, 가상화 환경은 복수의 게스트 운영 체제들(GOS1, GOS2, GOS3)을 포함하고 복수의 게스트 운영 체제들(GOS1, GOS2, GOS3) 상에서 동작하는 애플리케이션들을 포함할 수 있다. 예를 들어, 제1 게스트 운영 체제(GOS1) 상에서 애플리케이션들(APP11, APP12)이 동작하고, 제2 게스트 운영 체제(GOS2) 상에서 애플리케이션들(APP21, APP22)이 동작하고, 제3 게스트 운영 체제(GOS3) 상에서 애플리케이션들(APP31, APP32)이 동작할 수 있다. 게스트 운영 체제들의 개수 및 각각의 게스트 운영 체제 상에서 동작하는 애플리케이션들의 개수는 다양하게 결정될 수 있다.20, 21 and 22, the virtualization environment may include a plurality of guest operating systems (GOS1, GOS2, GOS3) and applications operating on the plurality of guest operating systems (GOS1, GOS2, GOS3). there is. For example, the applications APP11 and APP12 operate on the first guest operating system GOS1, the applications APP21 and APP22 operate on the second guest operating system GOS2, and the third guest operating system ( The applications APP31 and APP32 may operate on the GOS3. The number of guest operating systems and the number of applications running on each guest operating system may be variously determined.

하이퍼바이저(HPVS)는 제1 타입 및 제2 타입의 2개의 큰 카테고리들로 분류될 수 있다. 도 20은 제1 타입의 하이퍼바이저(HPVS)를 나타내고, 도 21 및 22는 제2 타입의 하이퍼바이저(HPVS)를 나타낸다. 제1 타입의 하이퍼바이저(HPVS)는 스탠드얼로운(standalone) 하이퍼바이저로 칭할 수 있고, 제2 타입의 하이퍼바이저(HPVS)는 호스티드(hosted) 하이퍼바이저로 칭할 수 있다. 대표적인 오픈소스 하이퍼바이저로서 제1 타입의 Xen 및 제2 타입의 KVM이 있다.Hypervisors (HPVS) can be classified into two broad categories of the first type and the second type. 20 shows a hypervisor (HPVS) of a first type, and FIGS. 21 and 22 show a hypervisor (HPVS) of a second type. The first type of hypervisor (HPVS) may be referred to as a standalone hypervisor, and the second type of hypervisor (HPVS) may be referred to as a hosted hypervisor. Representative open source hypervisors include Xen of the first type and KVM of the second type.

도 20을 참조하면, 제1 타입의 하이퍼바이저(HPVS)는 시스템 하드웨어(SYSHW) 상에서 동작하고 시스템 하드웨어(SYSHW)에 대한 전적인 제어(full control)를 갖는다. 이 경우, 가상화 계층 구조에서 호스트 운영 체제는 존재하지 않고, 복수의 게스트 운영 체제들(GOS1, GOS2, GOS3)들 중 하나가 호스트 운영 체제와 유사한 기능을 가질 수도 있다. 애플리케이션들은 제1 타입의 하이퍼바이저(HPVS) 상에서 동작할 수 있다.Referring to FIG. 20 , a hypervisor of the first type (HPVS) operates on the system hardware (SYSHW) and has full control over the system hardware (SYSHW). In this case, the host operating system does not exist in the virtualization hierarchical structure, and one of the plurality of guest operating systems (GOS1, GOS2, GOS3) may have a function similar to that of the host operating system. Applications may run on a hypervisor of the first type (HPVS).

제2 타입의 하이퍼바이저(HPVS)는, 도 21에 도시된 바와 같이 호스트 운영 체제(HOS) 상에서 동작하거나, 도 22에 도시된 바와 같이 호스트 운영 체제(HOS)에 포함될 수 있다. 호스트 운영 체제(HOS)는 시스템 하드웨어(SYSHW)에 대한 전적인 제어(full control)를 갖는다. 호스트 운영 체제(HOS)는 시스템 하드웨어(SYSHW) 상에서 동작하고 애플리케이션들은 호스트 운영 체제(HOS) 상에서 동작할 수 있다.The hypervisor (HPVS) of the second type may operate on the host operating system (HOS) as shown in FIG. 21 or may be included in the host operating system (HOS) as shown in FIG. 22 . The host operating system (HOS) has full control over the system hardware (SYSHW). The host operating system (HOS) runs on the system hardware (SYSHW) and applications may run on the host operating system (HOS).

도 23 및 24는 본 발명의 실시예들에 따른 가상화 시스템의 2-스테리지 어드레스 트랜슬레이션을 나타내는 도면들이다.23 and 24 are diagrams illustrating 2-stage address translation in a virtualization system according to embodiments of the present invention.

도 23 및 24을 참조하면, 2-스테이지 어드레스 트랜슬레이션은 가상 어드레스(VA)를 버츄얼 머신의 버츄얼 메모리의 중간 물리 어드레스(IPA)로 변환하는 제1 스테이지 어드레스 트랜슬레이션 및 중간 물리 어드레스(IPA)를 메모리 장치(MEM)의 물리 어드레스(PA)로 변환하는 제2 어드레스 트랜슬레이션을 포함한다.Referring to FIGS. 23 and 24, the 2-stage address translation is a first stage address translation that converts a virtual address (VA) into an intermediate physical address (IPA) of a virtual memory of a virtual machine and an intermediate physical address (IPA). ) into a physical address PA of the memory device MEM.

가상 어드레스(VA)는 가상 어드레스 공간(SVA) 상의 위치를 나타내고, 중간 물리 어드레스(IPA)는 중간 물리 어드레스 공간(SIPA)의 위치를 나타내고, 물리 어드레스(PA)는 메모리 장치(MEM)의 메모리 영역의 실제의 물리적 위치를 나타낸다. The virtual address VA represents a location on the virtual address space SVA, the intermediate physical address IPA represents a location in the intermediate physical address space SIPA, and the physical address PA represents a memory area of the memory device MEM. represents the actual physical location of

도 19를 참조하여 설명한 바와 같이, 복수의 게스트 운영 체제들(GOS1, GOS2)의 각각은 버츄얼 메모리 관리 유닛(vGMMU)을 포함할 수 있다. 버츄얼 메모리 관리 유닛(vGMMU)은 복수의 게스트 운영 체제들(GOS1, GOS2)에 각각 상응하는 게스트 가상 어드레스 공간들(SVA1, SVA2)의 가상 어드레스(VA)와 게스트 중간 물리 어드레스 공간들(SIPA1, SIPA2)의 중간 물리 어드레스(IPA) 사이의 매핑을 관리할 수 있다. As described with reference to FIG. 19 , each of the plurality of guest operating systems GOS1 and GOS2 may include a virtual memory management unit (vGMMU). The virtual memory management unit vGMMU includes virtual addresses VA of guest virtual address spaces SVA1 and SVA2 respectively corresponding to a plurality of guest operating systems GOS1 and GOS2 and guest intermediate physical address spaces SIPA1 and SIPA2. ) can manage mapping between intermediate physical addresses (IPAs).

버츄얼 메모리 관리 유닛(vGMMU)에 의해 관리되는 매핑 정보는 제1 스테이지 트랜슬레이션 테이블(TTAB1)에 저장되고 제1 스테이지 트랜슬레이션 테이블(TTAB1)은 메모리 장치에 대한 액세스를 위해 참조된다.Mapping information managed by the virtual memory management unit vGMMU is stored in the first stage translation table TTAB1, and the first stage translation table TTAB1 is referred to for access to the memory device.

도 23에는 도시의 편의상 게스트 가상 어드레스 공간들(SVA1, SVA2)이 서로 공간적으로 분리되고 게스트 중간 물리 어드레스 공간들(SIPA1, SIPA2)이 서로 공간적으로 분리되는 것을 도시하고 있다. 복수의 게스트 운영 체제들(GOS1, GOS2)은 서로 독립적으로 동작하기 때문에 어드레스 공간의 중첩 여부는 고려될 필요가 없다. 23 illustrates that the guest virtual address spaces SVA1 and SVA2 are spatially separated from each other and the guest intermediate physical address spaces SIPA1 and SIPA2 are spatially separated from each other for convenience of illustration. Since the plurality of guest operating systems GOS1 and GOS2 operate independently of each other, it is not necessary to consider overlapping address spaces.

한편, 도 19를 참조하여 설명한 바와 같이, 하이퍼바이저(HPVS)는 버츄얼 메모리 관리 유닛(vHMMU)을 포함할 수 있다. 버츄얼 메모리 관리 유닛(vHMMU)은 복수의 게스트 운영 체제들(GOS1, GOS2)에게 메모리 장치의 게스트 메모리 영역들(MR1, MR2)을 할당할 수 있다. 게스트 메모리 영역들(MR1, MR2)은 공간적으로 중첩되지 않도록 할당될 수 있다. Meanwhile, as described with reference to FIG. 19 , the hypervisor (HPVS) may include a virtual memory management unit (vHMMU). The virtual memory management unit vHMMU may allocate the guest memory areas MR1 and MR2 of the memory device to the plurality of guest operating systems GOS1 and GOS2. The guest memory areas MR1 and MR2 may be spatially allocated so as not to overlap.

제1 게스트 운영 체제(GOS1)는 제1 게스트 메모리 영역(MR1)만을 액세스할 수 있고, 제2 게스트 운영 체제(GOS2)는 제2 게스트 메모리 영역(MR2)만을 액세스할 수 있다. 결과적으로, 하이퍼바이저(HPVS)는 복수의 게스트 운영 체제들(GOS1, GOS2) 사이의 메모리 충돌을 방지할 수 있도록 공간적인 격리(spatial isolation)를 제공할 수 있다.The first guest operating system GOS1 can access only the first guest memory area MR1, and the second guest operating system GOS2 can access only the second guest memory area MR2. As a result, the hypervisor HPVS may provide spatial isolation to prevent memory conflict between the plurality of guest operating systems GOS1 and GOS2.

버츄얼 메모리 관리 유닛(vHMMU)은 게스트 중간 물리 어드레스 공간들(SIPA)의 중간 물리 어드레스(IPA)와 할당된 게스트 메모리 영역들(MR1, MR2)의 물리 어드레스 사이의 매핑을 관리할 수 있다.The virtual memory management unit (vHMMU) may manage a mapping between an intermediate physical address (IPA) of guest intermediate physical address spaces (SIPA) and physical addresses of allocated guest memory areas (MR1, MR2).

버츄얼 메모리 관리 유닛(vHMMU)에 의해 관리되는 매핑 정보는 제2 스테이지 트랜슬레이션 테이블(TTAB2)에 저장되고 제2 스테이지 트랜슬레이션 테이블(TTAB2)은 메모리 장치(400)에 대한 액세스를 위해 참조된다.Mapping information managed by the virtual memory management unit (vHMMU) is stored in the second stage translation table TTAB2, and the second stage translation table TTAB2 is referred to for access to the memory device 400. .

일반적으로 하이퍼바이저(HPVS)는 복수의 게스트 운영 체제들(GOS1, GOS2)의 메모리 사용 상태를 모니터링하여 적응적으로 게스트 메모리 영역들을 할당할 수 있다. In general, the hypervisor HPVS may monitor memory use states of the plurality of guest operating systems GOS1 and GOS2 and adaptively allocate guest memory areas.

도 24를 참조하면, 어드레스 매핑 정보를 포함하는 제1 스테이지 트랜슬레이션 테이블(TTAB1) 및 제2 스테이지 트랜슬레이션 테이블(TTAB2)이 메모리 장치에 저장될 수 있다. 메모리 장치에 저장된 제1 스테이지 트랜슬레이션 테이블(TTAB1) 및 제2 스테이지 트랜슬레이션 테이블(TTAB2)은 액세스 동작시 어드레스 트랜슬레이션을 위해 참조될 수 있다.Referring to FIG. 24 , a first stage translation table TTAB1 and a second stage translation table TTAB2 including address mapping information may be stored in a memory device. The first stage translation table TTAB1 and the second stage translation table TTAB2 stored in the memory device may be referred to for address translation during an access operation.

어드레스 트랜슬레이션의 속도 및 효율을 향상시키기 위해서 가상화 시스템은 도 24에 도시된 바와 같이 하드웨어로 구현된 메모리 관리 유닛들(MMU1, MMU2)을 포함할 수 있다. 메모리 관리 유닛들(MMU1, MMU2)은 도 18의 메모리 관리 유닛(630)에 포함될 수 있다.In order to improve the speed and efficiency of address translation, the virtualization system may include hardware-implemented memory management units MMU1 and MMU2 as shown in FIG. 24 . The memory management units MMU1 and MMU2 may be included in the memory management unit 630 of FIG. 18 .

제1 메모리 관리 유닛(MMU1)은 제1 스테이지 트랜슬레이션 테이블(TTAB1)의 어드레스 매핑 정보에 기초하여 메모리 장치에 대한 액세스 동작을 위한 가상 어드레스(VA)를 중간 물리 어드레스(IPA)로 변환하는 제1 스테이지 어드레스 트랜슬레이션을 수행할 수 있다.The first memory management unit MMU1 converts a virtual address VA for an access operation to a memory device into an intermediate physical address IPA based on the address mapping information of the first stage translation table TTAB1. One stage address translation can be performed.

제2 메모리 관리 유닛(MMU2)은 제2 스테이지 트랜슬레이션 테이블(TTAB2)의 어드레스 매핑 정보에 기초하여 제1 메모리 관리 유닛(MMU1)으로부터 전달되는 중간 물리 어드레스(IPA)를 물리 어드레스(PA)로 변환하는 제2 스테이지 코어 어드레스 트랜슬레이션을 수행할 수 있다.The second memory management unit MMU2 converts the intermediate physical address IPA transmitted from the first memory management unit MMU1 to the physical address PA based on the address mapping information of the second stage translation table TTAB2. Translating second stage core address translation may be performed.

제1 메모리 관리 유닛(MMU1) 및/또는 제2 메모리 관리 유닛(MMU2)은 어드레스 트랜슬레이션의 속도 및 효율을 더욱 향상하기 위하여 변환 색인 버퍼(translation look aside buffer)(TLB)를 포함할 수 있다. 변환 색인 버퍼(TLB)에는 최근에 참조되는 어드레스 매핑 정보 및/또는 빈번하게 참조되는 어드레스 매핑 정보가 저장될 수 있다. The first memory management unit MMU1 and/or the second memory management unit MMU2 may include a translation look aside buffer (TLB) to further improve address translation speed and efficiency. . Recently referenced address mapping information and/or frequently referenced address mapping information may be stored in the translation lookaside buffer (TLB).

도 25는 본 발명의 실시예들에 따른 어드레스 트랜슬레이션 캐시를 나타내는 블록도이다.25 is a block diagram illustrating an address translation cache according to embodiments of the present invention.

도 25를 참조하면, 어드레스 트랜슬레이션 캐시(700)는 캐시 매니저(CMNG)(710), 복수의 가변 페이지 그룹 캐시(flexible page group cache)들(FPGC1~FPGCn)(720), 공유 캐시(shared cache)(SHC)(730) 및 복수의 펑션 전속 캐시들(PFDC1~PFDCm)(740)를 포함할 수 있다. 어드레스 트랜슬레이션 캐시(700)는 가상 어드레스 및 메모리 장치의 물리 어드레스 사이의 매핑 정보를 나타내는 트랜슬레이션 엔트리들을 저장한다.Referring to FIG. 25, the address translation cache 700 includes a cache manager (CMNG) 710, a plurality of flexible page group caches (FPGC1 to FPGAn) 720, and a shared cache. cache) (SHC) 730 and a plurality of function-specific caches PFDC1 to PFDCm 740. The address translation cache 700 stores translation entries representing mapping information between a virtual address and a physical address of a memory device.

도 1의 어드레스 트랜슬레이션 캐시(100)와 비교하여, 도 25의 어드레스 트랜슬레이션 캐시(700)는 복수의 펑션 전속 캐시들(740)을 더 포함한다. 이하 도 1과 중복되는 설명을 생략하고 복수의 펑션 전속 캐시들(740)과 연관된 차이점만을 설명하기로 한다.Compared to the address translation cache 100 of FIG. 1 , the address translation cache 700 of FIG. 25 further includes a plurality of function-specific caches 740 . Hereinafter, descriptions duplicated with those of FIG. 1 will be omitted and only differences related to the plurality of function-specific caches 740 will be described.

복수의 펑션 전속 캐시들(PFDC1~PFDCm)은 복수의 펑션들(PF1~PFm)에 각각 전속되고(dedicated) 복수의 펑션들(PF1~PFm)에 연관된 트랜슬레이션 엔트리들을 각각 저장할 수 있다.The plurality of function-specific caches PFDC1 to PFDCm are respectively dedicated to the plurality of functions PF1 to PFm and may store translation entries related to the plurality of functions PF1 to PFm, respectively.

일 실시예에서, 복수의 펑션 전속 캐시들(PFDC1~PFDCm)은 완전 연관 캐시들로 구현될 수 있다. 다시 말해, 복수의 펑션 전속 캐시들(PFDC1~PFDCm)은 페이지 사이즈에 무관하게 복수의 펑션들(PF1~PFm)에 연관된 트랜슬레이션 엔트리들을 각각 저장할 수 있다.In one embodiment, the plurality of function-specific caches PFDC1 through PFDCm may be implemented as fully associative caches. In other words, the plurality of function-specific caches PFDC1 to PFDCm may store translation entries related to the plurality of functions PF1 to PFm, respectively, regardless of the page size.

일 실시예에서, 복수의 펑션들(PF1~PFm)은 피씨아이 익스프레스 (PCIe, Peripheral Component Interconnect Express) 표준에 따른 펑션들일 수 있다. 복수의 펑션들(PF1~PFm)은 전술한 복수의 게스트 운영 체제들에 각각 상응할 수 있다. 복수의 펑션들(PF1~PFm)과 연관된 어드레스, 리퀘스트, 레스판스 및 트랜슬레이션 엔트리는 도 6에 도시된 펑션 식별자(PFID)를 이용하여 구분될 수 있다.In one embodiment, the plurality of functions PF1 to PFm may be functions according to the Peripheral Component Interconnect Express (PCIe) standard. The plurality of functions PF1 to PFm may respectively correspond to the plurality of guest operating systems described above. Addresses, requests, responses, and translation entries associated with the plurality of functions PF1 to PFm may be identified using the function identifier PFID shown in FIG. 6 .

복수의 펑션 전속 캐시들(PFDC1~PFDCm)은 하위 레벨의 캐시 그룹(CG_L1)에 해당하고, 복수의 가변 페이지 그룹 캐시들(FPGC1~FPGCn) 및 공유 캐시(SHC)는 상위 레벨의 캐시 그룹(CG_L2)에 해당할 수 있다.The plurality of function-specific caches PFDC1 to PFDCm correspond to the lower level cache group CG_L1, and the plurality of variable page group caches FPGC1 to FPGAn and the shared cache SHC correspond to the upper level cache group CG_L2. ) may correspond to

캐시 매니저(710)는 엔트리 탐색 동작을 수행하는 경우, 즉 입력 가상 어드레스(VA)에 매핑되는 물리 어드레스(PA)를 탐색하는 경우, 복수의 펑션 전속 캐시들(PFDC1~PFDCm) 중에서 입력 가상 어드레스(VA)에 포함되는 펑션 식별자(PFID)에 상응하는 펑션 전속 캐시를 탐색할 수 있다. 캐시 매니저(710)는 펑션 식별자(PFID)에 상응하는 펑션 전속 캐시에 입력 가상 어드레스(VA)에 상응하는 트랜슬레이션 엔트리가 존재하지 않는 경우, 복수의 가변 페이지 그룹 캐시들(FPGC1~FPGCn) 및 공유 캐시(SHC)를 모두 탐색할 수 있다.When the cache manager 710 performs an entry search operation, that is, when searching for a physical address PA mapped to an input virtual address VA, the cache manager 710 selects an input virtual address ( A function-specific cache corresponding to a function identifier (PFID) included in VA) may be searched. When the translation entry corresponding to the input virtual address VA does not exist in the function-specific cache corresponding to the function identifier PFID, the cache manager 710 provides a plurality of variable page group caches FPGA to FPGA and All shared caches (SHC) can be searched.

한편, 캐시 매니저(710)는 엔트리 무효화 동작을 수행하는 경우, 즉 입력 가상 어드레스(VA)에 해당하는 트랜슬레이션 엔트리를 무효화하는 경우, 복수의 펑션 전속 캐시들(PFDC1~PFDCm), 복수의 가변 페이지 그룹 캐시들(FPG1~FPGn) 및 공유 캐시(SHC)를 모두 탐색할 수 있다.Meanwhile, when the cache manager 710 performs an entry invalidation operation, that is, when invalidating a translation entry corresponding to an input virtual address VA, a plurality of function-specific caches PFDC1 to PFDCm, a plurality of variable Both the page group caches (FPG1 to FPGn) and the shared cache (SHC) can be searched.

도 26은 본 발명의 실시예들에 따른 어드레스 트랜슬레이션 캐시의 엔트리 기입 동작을 나타내는 순서도이다.26 is a flowchart illustrating an entry write operation of an address translation cache according to embodiments of the present invention.

도 25 및 26을 참조하면, 캐시 매니저(710)는 아이들 상태(S80)에서 입력 트랜슬레이션 엔트리(ITE)를 수신할 수 있다(S81).25 and 26, the cache manager 710 may receive an input translation entry (ITE) in an idle state (S80) (S81).

캐시 매니저(710)는 입력 트랜슬레이션 엔트리(ITE)를 하위 레벨의 캐시 그룹(CG_L1)에 저장할 수 있다(S82). 다시 말해, 캐시 매니저(710)는 복수의 펑션 전속 캐시들(PFDC1~PFDCm) 중에서 입력 트랜슬레이션 엔트리(ITE)에 포함되는 펑션 식별자(PFID)에 상응하는 펑션 전속 캐시에 입력 트랜슬레이션 엔트리(ITE)를 저장할 수 있다.The cache manager 710 may store the input translation entry (ITE) in the low-level cache group (CG_L1) (S82). In other words, the cache manager 710 adds an input translation entry (to a function-specific cache corresponding to a function identifier (PFID) included in an input translation entry (ITE) among a plurality of function-specific caches PFDC1 to PFDCm). ITE) can be stored.

캐시 매니저(710)는 복수의 펑션 전속 캐시들(PFDC1~PFDCm)로부터 축출된 트랜슬레이션 엔트리(ETE)가 존재하는 경우(S83: YES), 축출된 트랜슬레이션 엔트리(ETE)를 상위 레벨의 캐시 그룹(CG_L2)에 저장하고(S84), 아이들 상태(S80)로 진입할 수 있다. 이때, 캐시 매니저(710)는 도 4를 참조하여 설명한 방법에 따라서 복수의 펑션 전속 캐시들(PFDC1~PFDCm)로부터 축출된 트랜슬레이션 엔트리(ETE)를 복수의 가변 페이지 그룹 캐시들(FPGC1~FPGCn) 또는 공유 캐시(SHC)에 저장할 수 있다. 한편, 캐시 매니저(710)는 복수의 펑션 전속 캐시들(PFDC1~PFDCm)로부터 축출된 트랜슬레이션 엔트리(ETE)가 존재하지 않는 경우(S83: NO), 아이들 상태(S80)로 돌아갈 수 있다.The cache manager 710, when there exists a translation entry (ETE) evicted from the plurality of function-specific caches (PFDC1 to PFDCm) (S83: YES), transfers the evicted translation entry (ETE) to a higher level. It may be stored in the cache group CG_L2 (S84) and enter an idle state (S80). At this time, the cache manager 710 transfers the translation entries ETE extracted from the plurality of function exclusive caches PFDC1 to PFDCm according to the method described with reference to FIG. 4 to the plurality of variable page group caches FPGC1 to FPGCn. ) or shared cache (SHC). Meanwhile, the cache manager 710 may return to an idle state (S80) when the translation entry (ETE) extracted from the plurality of function-specific caches (PFDC1 to PFDCm) does not exist (S83: NO).

도 27은 본 발명의 실시예들에 따른 어드레스 트랜슬레이션 캐시를 포함하는 장치를 나타내는 도면이다.27 is a diagram illustrating a device including an address translation cache according to embodiments of the present invention.

도 27을 참조하면, 장치(800)는 PCIe 표준에 따른 PCIe 장치일 수 있다. PCIe 장치(800)는 PCIe 포트(820)를 통하여 수신되는 신호를 내부 라우팅(810)을 통하여 복수의 펑션들(PF1, PF2, PF3)에 전달할 수 있다. 내부 라우팅(810)은 PCIe 포트(820)를 통하여 수신되는 신호에 포함되는 펑션 식별자(PFID)에 기초하여 신호를 라우팅할 수 있다.Referring to FIG. 27 , the device 800 may be a PCIe device conforming to the PCIe standard. The PCIe device 800 may transfer signals received through the PCIe port 820 to the plurality of functions PF1 , PF2 , and PF3 through the internal routing 810 . The internal routing 810 may route a signal based on a function identifier (PFID) included in a signal received through the PCIe port 820.

복수의 펑션들(PF1, PF2, PF3)은 각각에 전속되는 복수의 펑션 전속 캐시들(PFDC1, PFDC2, PFDC3) 및 복수의 물리 자원들(PRSC1, PRSC2, PRSC3)을 포함할 수 있다. 전술한 바와 같이, 복수의 펑션 전속 캐시들(PFDC1, PFDC2, PFDC3)은 하위 레벨의 캐시 그룹(CG_L1)에 해당할 수 있다. 한편, PCIe 장치(800)는 캐시 매니저(CMNG) 및 상위 레벨의 캐시 그룹(CG_L2)을 포함할 수 있다. 상위 레벨의 캐시 그룹(CG_L2)은 전술한 바와 같은 복수의 가변 페이지 그룹 캐시들 및 공유 캐시를 포함할 수 있다.The plurality of functions PF1, PF2, and PF3 may include a plurality of function-specific caches PFDC1, PFDC2, and PFDC3 and a plurality of physical resources PRSC1, PRSC2, and PRSC3, respectively. As described above, the plurality of function-specific caches PFDC1 , PFDC2 , and PFDC3 may correspond to the lower-level cache group CG_L1. Meanwhile, the PCIe device 800 may include a cache manager (CMNG) and a higher level cache group (CG_L2). The higher-level cache group CG_L2 may include a plurality of variable page group caches and a shared cache as described above.

도 28은 본 발명의 실시예들에 따른 가상화 시스템을 나타내는 블록도이다.28 is a block diagram illustrating a virtualization system according to embodiments of the present invention.

도 28을 참조하면, 가상화 시스템(1000)은 시스템 온 칩(SOC)과 메모리 장치(1130), 디스플레이 장치(LCD)(1152), 터치 패널(1154), 저장 장치(1170), 전력 관리 집적 회로(PMIC)(1200) 등을 포함할 수 있다. 시스템 온 칩(SOC)은 프로세서(CPU)(1110), 메모리 관리 회로(MMC)(1115), 메모리 컨트롤러(1120), 성능 제어기(PFMC)(1140), 사용자 인터페이스(UI) 컨트롤러(1150), 스토리지 인터페이스(1160), 다이렉트 메모리 액세스 기능 갖는 다이렉트 메모리 액세스 장치(DMAIP)(1180), 파워 관리 유닛(PMU)(1144), 클록 관리 유닛(CMU)(1146) 등을 포함할 수 있다. 가상화 시스템(1000)의 구성 요소들은 도시된 구성 요소들에 국한되지 않음은 잘 이해될 것이다. 예를 들면, 가상화 시스템(1000)은 영상 데이터를 처리하기 위한 하드웨어 코덱, 보안 블록 등을 더 포함할 수 있다.Referring to FIG. 28 , the virtualization system 1000 includes a system on chip (SOC), a memory device 1130, a display device (LCD) 1152, a touch panel 1154, a storage device 1170, and a power management integrated circuit. (PMIC) 1200 and the like. The system on chip (SOC) includes a processor (CPU) 1110, a memory management circuit (MMC) 1115, a memory controller 1120, a performance controller (PFMC) 1140, a user interface (UI) controller 1150, It may include a storage interface 1160, a direct memory access unit (DMAIP) 1180 having a direct memory access function, a power management unit (PMU) 1144, a clock management unit (CMU) 1146, and the like. It will be well understood that the components of the virtualization system 1000 are not limited to the illustrated components. For example, the virtualization system 1000 may further include a hardware codec and a security block for processing image data.

프로세서(1110)는 가상화 시스템(1000)에서 수행될 소프트웨어(응용 프로그램, 운영 체제, 장치 드라이버들)를 실행한다. 프로세서(1110)는 메모리 장치(1130)에 로드되는 운영 체제(OS)를 실행할 수 있다. 또한 프로세서(1110)는 운영 체제(OS) 기반에서 구동될 다양한 응용 프로그램들(Application Program)을 실행할 수 있다. 프로세서(1110)는 동종 멀티-코어 프로세서(Homogeneous Multi-Core Processor) 또는 이종 멀티-코어 프로세서(Heterogeneous Multi-Core Processor)로 제공될 수 있다. 멀티-코어 프로세서는 적어도 2개의 독립적으로 구동 가능한 프로세서 코어(이하, 코어)들을 갖는 컴퓨팅 컴포넌트(Computing component)이다. 코어들 각각은 프로그램 명령들(Program Instructions)을 독립적으로 읽고 실행할 수 있다.The processor 1110 executes software (application programs, operating systems, and device drivers) to be executed in the virtualization system 1000 . The processor 1110 may execute an operating system (OS) loaded on the memory device 1130 . In addition, the processor 1110 may execute various application programs to be driven based on an operating system (OS). The processor 1110 may be provided as a homogeneous multi-core processor or a heterogeneous multi-core processor. A multi-core processor is a computing component having at least two independently runable processor cores (hereinafter referred to as cores). Each of the cores can read and execute program instructions independently.

메모리 컨트롤러(1120)는 메모리 장치(130)와 시스템 온 칩(SoC) 사이에서 인터페이싱을 제공한다. 메모리 컨트롤러(1120)는 프로세서(1110)나 다이렉트 메모리 액세스 장치(1180)의 요청에 따라 메모리 장치(1130)를 액세스할 수 있다. 일 실시예에서, 메모리 장치(1130)는 디램(DRAM)으로 구현될 수 있으며, 이 경우 메모리 컨트롤러(1120)는 디램 컨트롤러라 칭할 수 있다.The memory controller 1120 provides interfacing between the memory device 130 and a system on chip (SoC). The memory controller 1120 may access the memory device 1130 according to a request of the processor 1110 or the direct memory access device 1180 . In one embodiment, the memory device 1130 may be implemented as DRAM, and in this case, the memory controller 1120 may be referred to as a DRAM controller.

메모리 관리 유닛 또는 메모리 관리 회로(1115)는 프로세서(1110)의 메모리 장치(1130)에 대한 코어 액세스 및 다이렉트 메모리 액세스 장치(1180)의 메모리 장치(1130)에 대한 다이렉트 액세스를 관리할 수 있다.The memory management unit or memory management circuit 1115 may manage core access of the processor 1110 to the memory device 1130 and direct access of the direct memory access device 1180 to the memory device 1130 .

메모리 장치(1130)에는 부팅시에 운영 체제(OS)나 기본 응용 프로그램들(Application Program)이 로드될 수 있다. 예를 들면, 가상화 시스템(1000)의 부팅시에 저장 장치(1170)에 저장된 하이퍼바이저(HPVS) 및 복수의 게스트 운영 체제들(GOS)이 부팅 시퀀스에 의거하여 메모리 장치(1130)로 로드된다. 이후, 복수의 게스트 운영 체제들(GOS)에 의해 상응하는 애플리케이션들(APP)이 메모리 장치(1130)로 로드될 수 있다.An operating system (OS) or basic application programs may be loaded into the memory device 1130 upon booting. For example, when the virtualization system 1000 boots, a hypervisor (HPVS) and a plurality of guest operating systems (GOS) stored in the storage device 1170 are loaded into the memory device 1130 according to a booting sequence. Thereafter, corresponding applications APP may be loaded into the memory device 1130 by the plurality of guest operating systems GOS.

성능 제어기(1140)는 운영 체제(OS)의 커널(Kernel)로부터 제공되는 제어 요청에 따라 시스템 온 칩(SOC)의 동작 파라미터들을 조정할 수 있다. 예를 들면, 성능 제어기(1140)는 시스템 온 칩(SOC)의 성능을 높이기 위해서 DVFS의 전력 레벨을 조정할 수 있다. The performance controller 1140 may adjust operating parameters of the system on chip (SOC) according to a control request provided from a kernel of an operating system (OS). For example, the performance controller 1140 may adjust the power level of the DVFS to increase the performance of a system on a chip (SOC).

사용자 인터페이스 컨트롤러(1150)는 사용자 인터페이스 장치들로부터의 사용자 입력 및 출력을 제어한다. 예를 들면, 사용자 인터페이스 컨트롤러(1150)는 프로세서(1110)의 제어에 따라 액정 표시 장치(1152)에 데이터를 입력하기 위한 키보드 화면 등을 표시할 수 있다. 또는, 사용자 인터페이스 컨트롤러(1150)는 사용자가 요청한 데이터를 표시하도록 디스플레이 장치(1152)를 제어할 수 있다. 사용자 인터페이스 컨트롤러(1150)는 터치 패널(1154)과 같은 사용자 입력 수단으로부터의 제공되는 데이터를 사용자 입력 데이터로 디코딩할 수 있다.User interface controller 1150 controls user input and output from user interface devices. For example, the user interface controller 1150 may display a keyboard screen for inputting data on the liquid crystal display device 1152 under the control of the processor 1110 . Alternatively, the user interface controller 1150 may control the display device 1152 to display data requested by the user. The user interface controller 1150 may decode data provided from a user input means such as the touch panel 1154 into user input data.

스토리지 인터페이스(1160)는 프로세서(1110)의 요청에 따라 저장 장치(1170)를 액세스한다. 즉, 스토리지 인터페이스(1160)는 시스템 온 칩(SOC)과 저장 장치(1170) 사이의 인터페이스를 제공한다. 프로세서(1110)에 의해서 처리된 데이터가 스토리지 인터페이스(1160)를 통해 저장 장치(1170)에 저장될 수 있고, 저장 장치(1170)에 저장된 데이터는 스토리지 인터페이스(1160)를 통해 프로세서(1110)에 제공될 수 있다. The storage interface 1160 accesses the storage device 1170 according to a request of the processor 1110 . That is, the storage interface 1160 provides an interface between the system on chip (SOC) and the storage device 1170 . Data processed by the processor 1110 may be stored in the storage device 1170 through the storage interface 1160, and the data stored in the storage device 1170 may be provided to the processor 1110 through the storage interface 1160. It can be.

저장 장치(1170)는 가상화 시스템(1000)의 저장 매체(Storage Medium)로서 제공된다. 저장 장치(1170)는 응용 프로그램들(Application Program), 운영 체제 이미지(OS Image) 및 각종 데이터를 저장할 수 있다. 저장 장치(1170)는 메모리 카드(MMC, eMMC, SD, MicroSD 등)로 제공될 수도 있다. 저장 장치(1170)는 대용량의 저장 능력을 가지는 낸드 플래시 메모리(NAND-type Flash memory)를 포함할 수 있다. 또는, 저장 장치(1710)는 PRAM, MRAM, ReRAM, FRAM 등의 차세대 불휘발성 메모리나 NOR 플래시 메모리를 포함할 수도 있다.The storage device 1170 is provided as a storage medium of the virtualization system 1000 . The storage device 1170 may store application programs, operating system images, and various data. The storage device 1170 may be provided as a memory card (MMC, eMMC, SD, MicroSD, etc.). The storage device 1170 may include a NAND-type flash memory having a large storage capacity. Alternatively, the storage device 1710 may include a next-generation nonvolatile memory such as PRAM, MRAM, ReRAM, FRAM, or NOR flash memory.

다이렉트 메모리 액세스 장치(1180)는 멀티미디어 또는 멀티미디어 데이터의 처리 속도를 향상하기 위한 별도의 아이피 또는 기능 블록(IP)으로 제공될 수 있다. 예를 들면, 다이렉트 메모리 액세스 장치 (1180)는 텍스트(Text), 오디오(Audio), 정지 영상들(Still images), 애니메이션(Animation), 비디오(Video), 2차원 데이터, 또는 3차원 데이터의 처리 성능을 향상시키기 위한 기능 블록(IP)으로 제공될 수 있다. The direct memory access device 1180 may be provided as a separate IP or function block (IP) to improve the processing speed of multimedia or multimedia data. For example, the direct memory access device 1180 processes text, audio, still images, animation, video, 2D data, or 3D data. It can be provided as a function block (IP) to improve performance.

시스템 인터커넥터(1190)는 시스템 온 칩(SoC)의 내부에서 온칩 네트워크를 제공하기 위한 시스템 버스(System Bus)이다. 시스템 인터커넥터(1190)는 예를 들면, 데이터 버스(Data bus), 어드레스 버스(Address bus) 및 컨트롤 버스(Control bus)를 포함할 것이다. 데이터 버스(Data bus)는 데이터가 이동하는 경로이다. 주로, 메모리 장치(1130)이나 저장 장치(1170)로의 메모리 접근 경로를 제공될 것이다. 어드레스 버스(Address bus)는 기능 블록들(IPs) 간의 어드레스 교환 경로를 제공한다. 컨트롤 버스(Control bus)는 기능 블록들(IPs) 간의 제어 신호를 전달하는 경로를 제공한다. 하지만, 시스템 인터커넥터(1190)의 구성은 상술한 설명에만 국한되지 않으며, 효율적인 관리를 위한 중재 수단들을 더 포함할 수 있다.The system interconnector 1190 is a system bus for providing an on-chip network inside a system on a chip (SoC). The system interconnector 1190 may include, for example, a data bus, an address bus, and a control bus. A data bus is a path through which data travels. Mainly, a memory access path to the memory device 1130 or the storage device 1170 will be provided. An address bus provides an address exchange path between functional blocks (IPs). The control bus provides a path for transferring control signals between functional blocks (IPs). However, the configuration of the system interconnector 1190 is not limited to the above description and may further include mediation means for efficient management.

본 발명의 실시예들에 따라서, 다이렉트 메모리 액세스 장치 (1180)는 도 1 내지 28을 참조하여 설명한 바와 같은 어드레스 트랜슬레이션 캐시(ATC)를 포함할 수 있다.According to embodiments of the present invention, the direct memory access device 1180 may include an address translation cache (ATC) as described with reference to FIGS. 1 to 28 .

이상 설명한 바와 같이, 본 발명의 실시예들에 따른 어드레스 트랜슬레이션 캐시는 복수의 가변 페이지 그룹 캐시들의 각각에 페이지 사이즈를 동적으로 할당하고, 할당된 페이지 사이즈들에 기초하여 할당된 페이지 사이즈에 상응하는 트랜슬레이션 엔트리들을 페이지 사이즈 별로 저장함으로써 캐시 메모리 자원을 효율적으로 이용할 수 있고 어드레스 매핑 정보의 탐색 시간을 감소할 수 있다.As described above, the address translation cache according to embodiments of the present invention dynamically allocates a page size to each of a plurality of variable page group caches, and corresponds to the allocated page size based on the allocated page sizes. By storing translation entries for each page size, cache memory resources can be efficiently used and search time for address mapping information can be reduced.

본 발명의 실시예들은 다이렉트 액세스 기능을 갖는 장치 및 시스템에 유용하게 이용될 수 있다. 특히 본 발명의 실시예들은 메모리 카드, 솔리드 스테이트 드라이브(Solid State Drive; SSD), 임베디드 멀티미디어 카드(eMMC, embedded multimedia card), 유니버셜 플래시 스토리지(UFS, universal flash storage), 컴퓨터(computer), 노트북(laptop), 핸드폰(cellular phone), 스마트폰(smart phone), MP3 플레이어, 피디에이(Personal Digital Assistants; PDA), 피엠피(Portable Multimedia Player; PMP), 디지털 TV, 디지털 카메라, 포터블 게임 콘솔(portable game console), 네비게이션(navigation) 기기, 웨어러블(wearable) 기기, IoT(internet of things;) 기기, IoE(internet of everything:) 기기, e-북(e-book), VR(virtual reality) 기기, AR(augmented reality) 기기, 자율 주행 장치, 서버 시스템 등과 같은 전자 기기에 더욱 유용하게 적용될 수 있다.Embodiments of the present invention can be usefully used in devices and systems having a direct access function. In particular, embodiments of the present invention are memory card, solid state drive (SSD), embedded multimedia card (eMMC, embedded multimedia card), universal flash storage (UFS, universal flash storage), computer (computer), notebook ( laptop, cellular phone, smart phone, MP3 player, Personal Digital Assistants (PDA), Portable Multimedia Player (PMP), digital TV, digital camera, portable game console ), navigation device, wearable device, IoT (internet of things;) device, IoE (internet of everything:) device, e-book, VR (virtual reality) device, AR ( It can be more usefully applied to electronic devices such as augmented reality devices, autonomous driving devices, and server systems.

상기에서는 본 발명이 바람직한 실시예를 참조하여 설명하였지만, 해당 기술분야의 숙련된 당업자는 하기의 청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 것이다.Although the present invention has been described above with reference to preferred embodiments, those skilled in the art can variously modify and change the present invention without departing from the spirit and scope of the present invention described in the claims below. you will understand that

Claims (20)

가상 어드레스 및 메모리 장치의 물리 어드레스 사이의 매핑 정보를 나타내는 트랜슬레이션 엔트리들을 저장하는 어드레스 트랜슬레이션 캐시로서,
할당된 페이지 사이즈에 해당하는 트랜슬레이션 엔트리들을 각각 저장하는 복수의 가변 페이지 그룹 캐시(flexible page group cache)들;
페이지 사이즈와 무관하게 상기 복수의 가변 페이지 그룹 캐시들에 저장되지 않는 트랜슬레이션 엔트리들을 저장하는 공유 캐시; 및
상기 복수의 가변 페이지 그룹 캐시들의 각각에 페이지 사이즈를 동적으로 할당하고, 상기 복수의 가변 페이지 그룹 캐시들에 할당된 페이지 사이즈들에 관한 캐시 페이지 정보를 관리하고, 상기 캐시 페이지 정보에 기초하여 상기 복수의 가변 페이지 그룹 캐시들 및 상기 공유 캐시를 제어하는 캐시 매니저를 포함하고,
상기 복수의 가변 페이지 그룹 캐시들은 세트 연관 캐시(set associative cache)들이고,
상기 공유 캐시는 완전 연관 캐시(fully associative cache)인 어드레스 트랜슬레이션 캐시.
An address translation cache for storing translation entries representing mapping information between a virtual address and a physical address of a memory device,
a plurality of flexible page group caches each storing translation entries corresponding to the allocated page size;
a shared cache storing translation entries not stored in the plurality of variable page group caches regardless of a page size; and
Dynamically allocates a page size to each of the plurality of variable page group caches, manages cache page information about page sizes allocated to the plurality of variable page group caches, and caches the plurality of variable page group caches based on the cache page information. A cache manager controlling variable page group caches of and the shared cache;
the plurality of variable page group caches are set associative caches;
The address translation cache is a fully associative cache.
제1 항에 있어서,
상기 캐시 매니저는,
상기 복수의 가변 페이지 그룹 캐시들에 할당된 페이지 사이즈들 중 하나와 동일한 페이지 사이즈에 해당하는 입력 트랜슬레이션 엔트리를 수신한 경우,
상기 입력 트랜슬레이션 엔트리에 해당하는 페이지 사이즈가 할당된 가변 페이지 그룹 캐시에 상기 입력 트랜슬레이션 엔트리를 저장하는 것을 특징으로 하는 어드레스 트랜슬레이션 캐시.
According to claim 1,
The cache manager,
When an input translation entry corresponding to a page size equal to one of page sizes allocated to the plurality of flexible page group caches is received,
and storing the input translation entry in a variable page group cache to which a page size corresponding to the input translation entry is allocated.
제1 항에 있어서,
상기 캐시 매니저는,
상기 복수의 가변 페이지 그룹 캐시들에 할당된 페이지 사이즈들과 다른 새로운 페이지 사이즈에 해당하는 입력 트랜슬레이션 엔트리를 수신하고 상기 복수의 가변 페이지 그룹 캐시들 중에서 페이지 사이즈가 할당되지 않은 가변 페이지 그룹 캐시가 존재하는 경우,
상기 페이지 사이즈가 할당되지 않은 가변 페이지 그룹 캐시에 상기 새로운 페이지 사이즈를 할당하고,
상기 입력 트랜슬레이션 엔트리를 상기 새로운 페이지 사이즈가 할당된 가변 페이지 그룹 캐시에 저장하는 것을 특징으로 하는 어드레스 트랜슬레이션 캐시.
According to claim 1,
The cache manager,
A variable page group cache that receives an input translation entry corresponding to a new page size different from the page sizes allocated to the plurality of variable page group caches and to which the page size is not allocated among the plurality of variable page group caches if present,
Allocating the new page size to a variable page group cache to which the page size is not allocated;
and storing the input translation entry in a variable page group cache to which the new page size is allocated.
제1 항에 있어서,
상기 캐시 매니저는,
상기 복수의 가변 페이지 그룹 캐시들에 할당된 페이지 사이즈들과 다른 새로운 페이지 사이즈에 해당하는 입력 트랜슬레이션 엔트리를 수신하고 상기 복수의 가변 페이지 그룹 캐시들 중에서 페이지 사이즈가 할당되지 않은 가변 페이지 그룹 캐시가 존재하지 않는 경우,
상기 입력 트랜슬레이션 엔트리를 상기 공유 캐시에 저장하는 것을 특징으로 하는 어드레스 트랜슬레이션 캐시.
According to claim 1,
The cache manager,
A variable page group cache that receives an input translation entry corresponding to a new page size different from the page sizes allocated to the plurality of variable page group caches and to which the page size is not allocated among the plurality of variable page group caches If it doesn't exist,
and storing the input translation entry in the shared cache.
제1 항에 있어서,
상기 캐시 매니저는,
상기 복수의 가변 페이지 그룹 캐시들로부터 축출된(evicted) 트랜슬레이션 엔트리를 상기 공유 캐시에 저장하는 것을 특징으로 하는 어드레스 트랜슬레이션 캐시.
According to claim 1,
The cache manager,
and storing translation entries extracted from the plurality of variable page group caches in the shared cache.
삭제delete 제1 항에 있어서,
상기 복수의 세트 연관 캐시들은 모두 동일한 개수의 세트들을 포함하는 것을 특징으로 하는 어드레스 트랜슬레이션 캐시.
According to claim 1,
The plurality of set association caches all include the same number of sets.
제1 항에 있어서,
상기 복수의 세트 연관 캐시들 중 각각의 세트 연관 캐시에 할당된 페이지 사이즈가 증가할수록 상기 각각의 세트 연관 캐시에 저장되는 태그의 비트 수는 감소하는 것을 특징으로 하는 어드레스 트랜슬레이션 캐시.
According to claim 1,
wherein the number of bits of a tag stored in each set-associated cache decreases as a page size allocated to each set-associated cache among the plurality of set-associated caches increases.
제1 항에 있어서,
상기 캐시 매니저는,
입력 가상 어드레스에 매핑되는 물리 어드레스를 탐색하는 경우,
상기 복수의 세트 연관 캐시들 및 상기 완전 연관 캐시를 모두 탐색하는 것을 특징으로 하는 어드레스 트랜슬레이션 캐시.
According to claim 1,
The cache manager,
When searching for a physical address mapped to an input virtual address,
and searching all of the plurality of set associative caches and the fully associative cache.
제9 항에 있어서,
상기 캐시 매니저는,
상기 캐시 페이지 정보에 기초하여 상기 입력 가상 어드레스로부터 상기 복수의 세트 연관 캐시들에 할당된 페이즈 사이즈들에 각각 상응하는 태그들 및 인덱스들을 추출하고,
상기 할당된 페이즈 사이즈들에 각각 상응하는 태그들 및 인덱스들을 상기 할당된 페이지 사이즈들에 상응하는 세트 연관 캐시들에 각각 제공하는 것을 특징으로 하는 어드레스 트랜슬레이션 캐시.
According to claim 9,
The cache manager,
extracting tags and indexes respectively corresponding to phase sizes allocated to the plurality of set-associated caches from the input virtual address based on the cache page information;
and providing tags and indexes respectively corresponding to the allocated page sizes to set associative caches corresponding to the allocated page sizes.
제1 항에 있어서,
상기 캐시 매니저는,
입력 가상 어드레스에 해당하는 트랜슬레이션 엔트리를 무효화하는 경우,
상기 복수의 세트 연관 캐시들 및 상기 완전 연관 캐시를 모두 탐색하는 것을 특징으로 하는 어드레스 트랜슬레이션 캐시.
According to claim 1,
The cache manager,
In case of invalidating the translation entry corresponding to the input virtual address,
and searching all of the plurality of set associative caches and the fully associative cache.
제1 항에 있어서,
복수의 펑션들에 각각 전속되고(dedicated) 상기 복수의 펑션들에 연관된 트랜슬레이션 엔트리들을 각각 저장하는 복수의 펑션 전속 캐시들을 더 포함하는 것을 특징으로 하는 어드레스 트랜슬레이션 캐시.
According to claim 1,
The address translation cache of claim 1, further comprising a plurality of function dedicated caches each dedicated to a plurality of functions and respectively storing translation entries associated with the plurality of functions.
제12 항에 있어서,
상기 복수의 펑션 전속 캐시들은 하위 레벨의 캐시 그룹에 해당하고,
상기 복수의 가변 페이지 그룹 캐시들 및 상기 공유 캐시는 상위 레벨의 캐시 그룹에 해당하는 것을 특징으로 하는 어드레스 트랜슬레이션 캐시.
According to claim 12,
The plurality of function-specific caches correspond to a cache group of a lower level,
The address translation cache of claim 1, wherein the plurality of variable page group caches and the shared cache correspond to a cache group of a higher level.
제12 항에 있어서,
입력 가상 어드레스에 매핑되는 물리 어드레스를 탐색하는 경우,
상기 복수의 펑션 전속 캐시들 중에서 상기 입력 가상 어드레스에 포함되는 펑션 식별자에 상응하는 펑션 전속 캐시를 탐색하고,
상기 펑션 식별자에 상응하는 펑션 전속 캐시에 상기 입력 가상 어드레스에 상응하는 트랜슬레이션 엔트리가 존재하지 않는 경우, 상기 복수의 가변 페이지 그룹 캐시들 및 상기 공유 캐시를 모두 탐색하는 것을 특징으로 하는 어드레스 트랜슬레이션 캐시.
According to claim 12,
When searching for a physical address mapped to an input virtual address,
Searching for a function-specific cache corresponding to a function identifier included in the input virtual address among the plurality of function-specific caches;
and searching all of the plurality of variable page group caches and the shared cache when a translation entry corresponding to the input virtual address does not exist in the function-specific cache corresponding to the function identifier. ration cache.
제12 항에 있어서,
상기 캐시 매니저는,
입력 가상 어드레스에 해당하는 트랜슬레이션 엔트리를 무효화하는 경우,
상기 복수의 펑션 전속 캐시들, 상기 복수의 가변 페이지 그룹 캐시들 및 상기 공유 캐시를 모두 탐색하는 것을 특징으로 하는 어드레스 트랜슬레이션 캐시.
According to claim 12,
The cache manager,
In case of invalidating the translation entry corresponding to the input virtual address,
and searching all of the plurality of function-specific caches, the plurality of variable page group caches, and the shared cache.
제12 항에 있어서,
상기 캐시 매니저는,
상기 복수의 펑션 전속 캐시들로부터 축출된 트랜슬레이션 엔트리를 상기 복수의 가변 페이지 그룹 캐시들 또는 상기 공유 캐시에 저장하는 것을 특징으로 하는 어드레스 트랜슬레이션 캐시.
According to claim 12,
The cache manager,
and storing translation entries extracted from the plurality of function-specific caches in the plurality of variable page group caches or the shared cache.
제12 항에 있어서,
상기 복수의 펑션 전속 캐시들은 완전 연관 캐시들인 것을 특징으로 하는 어드레스 트랜슬레이션 캐시.
According to claim 12,
Wherein the plurality of function-specific caches are fully associative caches.
제12 항에 있어서,
상기 복수의 펑션들은 피씨아이 익스프레스 (PCIe, Peripheral Component Interconnect Express) 표준에 따른 펑션들인 것을 특징으로 하는 어드레스 트랜슬레이션 캐시.
According to claim 12,
The address translation cache, characterized in that the plurality of functions are functions according to the PCI Express (PCIe, Peripheral Component Interconnect Express) standard.
가상 어드레스 및 메모리 장치의 물리 어드레스 사이의 매핑 정보를 나타내는 트랜슬레이션 엔트리들을 저장하는 어드레스 트랜슬레이션 캐시로서,
복수의 펑션들에 각각 전속되고(dedicated) 상기 복수의 펑션들에 연관된 트랜슬레이션 엔트리들을 각각 저장하고 완전 연관 캐시(fully associative cache)들로 구현되는 복수의 펑션 전속 캐시들;
상기 복수의 펑션 전속 캐시들에 저장되지 않고 할당된 페이지 사이즈에 해당하는 트랜슬레이션 엔트리들을 각각 저장하고 세트 연관 캐시(set associative cache)들로 구현되는 복수의 가변 페이지 그룹 캐시(flexible page group cache)들;
상기 복수의 펑션 전속 캐시들 및 상기 복수의 가변 페이지 그룹 캐시들에 저장되지 않는 트랜슬레이션 엔트리들을 페이지 사이즈와 무관하게 저장하고 완전 연관 캐시로 구현되는 공유 캐시; 및
상기 복수의 가변 페이지 그룹 캐시들의 각각에 페이지 사이즈를 동적으로 할당하고, 상기 복수의 가변 페이지 그룹 캐시들에 할당된 페이지 사이즈들에 관한 캐시 페이지 정보를 관리하고, 상기 캐시 페이지 정보에 기초하여 상기 복수의 가변 페이지 그룹 캐시들 및 상기 공유 캐시를 제어하는 캐시 매니저를 포함하는 어드레스 트랜슬레이션 캐시.
An address translation cache for storing translation entries representing mapping information between a virtual address and a physical address of a memory device,
a plurality of function dedicated caches respectively dedicated to a plurality of functions, each storing translation entries associated with the plurality of functions, and implemented as fully associative caches;
A plurality of flexible page group caches implemented as set associative caches, each storing translation entries corresponding to an allocated page size that are not stored in the plurality of function-specific caches field;
a shared cache implemented as a fully associative cache and storing translation entries not stored in the plurality of function-specific caches and the plurality of variable page group caches, regardless of page size; and
Dynamically allocates a page size to each of the plurality of variable page group caches, manages cache page information about page sizes allocated to the plurality of variable page group caches, and caches the plurality of variable page group caches based on the cache page information. An address translation cache including variable page group caches of and a cache manager controlling the shared cache.
호스트 메모리 장치;
호스트 프로세서;
상기 호스트 메모리 장치에 대한 다이렉트 메모리 액세스 기능을 갖고 상기 호스트 프로세서의 가상 어드레스 및 상기 호스트 메모리 장치의 물리 어드레스 사이의 매핑 정보를 나타내는 트랜슬레이션 엔트리들을 저장하는 어드레스 트랜슬레이션 캐시를 포함하는 다이렉트 메모리 액세스 장치; 및
상기 호스트 프로세서 및 상기 다이렉트 메모리 액세스 장치의 상기 호스트 메모리 장치에 대한 액세스를 관리하는 메모리 관리 유닛을 포함하고,
상기 어드레스 트랜슬레이션 캐시는,
할당된 페이지 사이즈에 해당하는 트랜슬레이션 엔트리들을 각각 저장하는 복수의 가변 페이지 그룹 캐시(flexible page group cache)들;
페이지 사이즈와 무관하게 상기 복수의 가변 페이지 그룹 캐시들에 저장되지 않는 트랜슬레이션 엔트리들을 저장하는 공유 캐시; 및
상기 복수의 가변 페이지 그룹 캐시들의 각각에 페이지 사이즈를 동적으로 할당하고, 상기 복수의 가변 페이지 그룹 캐시들에 할당된 페이지 사이즈들에 관한 캐시 페이지 정보를 관리하고, 상기 캐시 페이지 정보에 기초하여 상기 복수의 가변 페이지 그룹 캐시들 및 상기 공유 캐시를 제어하는 캐시 매니저를 포함하고,
상기 복수의 가변 페이지 그룹 캐시들은 세트 연관 캐시(set associative cache)들이고,
상기 공유 캐시는 완전 연관 캐시(fully associative cache)인 시스템.
host memory device;
host processor;
Direct memory access including an address translation cache having a direct memory access function for the host memory device and storing translation entries representing mapping information between a virtual address of the host processor and a physical address of the host memory device Device; and
a memory management unit managing access of the host processor and the direct memory access device to the host memory device;
The address translation cache,
a plurality of flexible page group caches each storing translation entries corresponding to the allocated page size;
a shared cache storing translation entries not stored in the plurality of variable page group caches regardless of a page size; and
Dynamically allocates a page size to each of the plurality of variable page group caches, manages cache page information about page sizes allocated to the plurality of variable page group caches, and caches the plurality of variable page group caches based on the cache page information. A cache manager controlling variable page group caches of and the shared cache;
the plurality of variable page group caches are set associative caches;
The system of claim 1 , wherein the shared cache is a fully associative cache.
KR1020220063986A 2021-12-01 2022-05-25 Address translation cache and system including the same KR102544401B1 (en)

Priority Applications (4)

Application Number Priority Date Filing Date Title
US17/965,700 US20230169013A1 (en) 2021-12-01 2022-10-13 Address translation cache and system including the same
EP22203192.4A EP4191420A1 (en) 2021-12-01 2022-10-24 Address translation cache and system including the same
TW111140754A TW202324107A (en) 2021-12-01 2022-10-27 Address translation cache and processor system including the same
CN202211452901.5A CN116204452A (en) 2021-12-01 2022-11-18 Address translation cache and system including the same

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020210169763 2021-12-01
KR20210169763 2021-12-01

Publications (2)

Publication Number Publication Date
KR20230082536A KR20230082536A (en) 2023-06-08
KR102544401B1 true KR102544401B1 (en) 2023-06-20

Family

ID=86765528

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220063986A KR102544401B1 (en) 2021-12-01 2022-05-25 Address translation cache and system including the same

Country Status (1)

Country Link
KR (1) KR102544401B1 (en)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180137069A1 (en) * 2016-11-14 2018-05-17 Intel Corporation Input/output translation lookaside buffer (iotlb) quality of service (qos)
US20200278935A1 (en) * 2019-03-01 2020-09-03 Cisco Technology, Inc. Adaptive address translation caches
US20210157725A1 (en) * 2019-11-22 2021-05-27 EMC IP Holding Company LLC Method and apparatus for dynamically adapting cache size based on estimated cache performance

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180137069A1 (en) * 2016-11-14 2018-05-17 Intel Corporation Input/output translation lookaside buffer (iotlb) quality of service (qos)
US20200278935A1 (en) * 2019-03-01 2020-09-03 Cisco Technology, Inc. Adaptive address translation caches
US20210157725A1 (en) * 2019-11-22 2021-05-27 EMC IP Holding Company LLC Method and apparatus for dynamically adapting cache size based on estimated cache performance

Also Published As

Publication number Publication date
KR20230082536A (en) 2023-06-08

Similar Documents

Publication Publication Date Title
JP5911985B2 (en) Providing hardware support for virtual memory shared between local and remote physical memory
US9384132B2 (en) Emulated message signaled interrupts in a virtualization environment
CN102483719B (en) Block-based non-transparent cache
RU2562372C2 (en) Computation medium adapter activation/deactivation
US9830262B2 (en) Access tracking mechanism for hybrid memories in a unified virtual system
US11194735B2 (en) Technologies for flexible virtual function queue assignment
US10073644B2 (en) Electronic apparatus including memory modules that can operate in either memory mode or storage mode
US11010084B2 (en) Virtual machine migration system
US11853223B2 (en) Caching streams of memory requests
KR20220001016A (en) How to provide a copy of the I/O memory management unit registers to the guest operating system
TWI785320B (en) Intra-device notational data movement system, information handling system and method for providing intra-device notational data movement
CN103262052A (en) Secure partitioning with shared input/output
US10866895B2 (en) Steering tag support in virtualized environments
KR102544401B1 (en) Address translation cache and system including the same
KR20230162100A (en) Methods and devices for offloading hierarchical memory management
JP2017033375A (en) Parallel calculation system, migration method, and migration program
EP4191420A1 (en) Address translation cache and system including the same
US10936219B2 (en) Controller-based inter-device notational data movement system
US10216524B2 (en) System and method for providing fine-grained memory cacheability during a pre-OS operating environment
US11281612B2 (en) Switch-based inter-device notational data movement system
CN103262053A (en) Secure partitioning with shared input/output
Nider et al. Systems Software for Fast Inter-Machine Page Faults

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant