CN116204452A - 地址转换高速缓存以及包括地址转换高速缓存的系统 - Google Patents
地址转换高速缓存以及包括地址转换高速缓存的系统 Download PDFInfo
- Publication number
- CN116204452A CN116204452A CN202211452901.5A CN202211452901A CN116204452A CN 116204452 A CN116204452 A CN 116204452A CN 202211452901 A CN202211452901 A CN 202211452901A CN 116204452 A CN116204452 A CN 116204452A
- Authority
- CN
- China
- Prior art keywords
- cache
- caches
- page
- flexible
- atc
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
- G06F13/404—Coupling between buses using bus bridges with address mapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/652—Page size control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
- G06F2212/681—Multi-level TLB, e.g. microTLB and main TLB
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
- G06F2212/683—Invalidation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/28—DMA
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
公开了一种地址转换高速缓存(ATC),被配置为存储指示虚拟地址和存储器件的物理地址之间的映射信息的转换条目。该ATC包括多个灵活页组高速缓存、共享高速缓存和高速缓存管理器。每个灵活页组高速缓存存储与分配给该灵活页组高速缓存的页大小相对应的转换条目。无论页大小如何,共享高速缓存都存储没有存储在多个灵活页组高速缓存中的转换条目。高速缓存管理器向每个灵活页组高速缓存分配页大小、管理与分配给多个灵活页组高速缓存的页大小有关的高速缓存页信息、并基于高速缓存页信息来控制多个灵活页组高速缓存和共享高速缓存。
Description
相关申请的交叉引用
本申请要求于2021年12月1日向韩国知识产权局(KIPO)提交的韩国专利申请号10-2021-0169763以及于2022年5月25日向KIPO提交的韩国专利申请号10-2022-0063986的优先权,其公开内容通过引用整体并入本文。
技术领域
示例实施例总体上涉及半导体集成电路,并且更具体地,涉及地址转换高速缓存和包括地址转换高速缓存的系统。
背景技术
数据处理系统或计算系统通过地址转换来执行对存储器件的访问,以将虚拟地址转换为存储器件的物理地址。具有各种功能的知识产权(IP)(即功能电路或块)可以包括在计算系统中,或由计算系统实现。一些IP能够执行直接访问存储器件的功能,并且具有直接访问功能的IP可以被称为直接存储器访问设备。直接存储器访问设备可以将数据发送到存储器件和/或从存储器件发送数据,而无需通过处理器(例如,中央处理单元(CPU))。为了防止主机设备与各种直接存储器访问设备的存储冲突,存储器管理单元(MMU)或转换代理(TA)可以管理包括虚拟地址和存储器件的物理地址之间的映射信息的映射表或页表。
存储器管理单元的主机设备可以包括转换后备缓冲器(TLB),以进一步提高地址转换的速度和效率。TLB可以存储最近地和/或频繁地引用的地址映射信息。直接存储器访问设备中包括的TLB可以被称为与主机设备使用的处理器TLB不同的地址转换高速缓存(ATC)。
一般来说,地址转换是以页为单位来执行的,并且可以对页大小进行各种确定。ATC用全关联高速缓存来实现以存储与各种页大小相对应的映射信息。然而,当ATC用全关联高速缓存实现时,直接存储器访问设备的大小会增加,并且地址转换的速度会降低。
发明内容
一些示例实施例可以提供一种能够有效率地执行地址转换的地址转换高速缓存和包括该地址转换高速缓存的系统。
根据示例实施例,一种地址转换高速缓存(ATC)被配置为存储对虚拟地址和存储器件的物理地址之间的映射信息加以指示的转换条目。该ATC包括多个灵活页组高速缓存、共享高速缓存和高速缓存管理器。每个灵活页组高速缓存存储与分配给该灵活页组高速缓存的页大小相对应的转换条目。无论页大小如何,共享高速缓存都存储没有存储在多个灵活页组高速缓存中的转换条目。高速缓存管理器向每个灵活页组高速缓存分配页大小、管理与分配给多个灵活页组高速缓存的页大小有关的高速缓存页信息、并基于高速缓存页信息来控制多个灵活页组高速缓存和共享高速缓存。
根据示例实施例,一种ATC被配置为存储对虚拟地址和存储器件的物理地址之间的映射信息加以指示的转换条目。该ATC包括:多个功能专用高速缓存,专用于多个功能并用多个全关联高速缓存实现,每个功能专用高速缓存被配置为存储与相应功能相关的转换条目;多个灵活页组高速缓存,用多个集合关联高速缓存实现,每个灵活页组高速缓存被配置为存储与分配给该灵活页组高速缓存的页大小相对应且没有存储在多个功能专用高速缓存中的转换条目;共享高速缓存,用全关联高速缓存实现,该共享高速缓存被配置为不管页大小如何,存储没有存储在多个功能专用高速缓存和多个灵活页组高速缓存中的转换条目;以及高速缓存管理器,被配置为向每个灵活页组高速缓存分配页大小、管理与分配给多个灵活页组高速缓存的页大小有关的高速缓存页信息、并基于高速缓存页信息来控制多个灵活页组高速缓存和共享高速缓存。
根据示例实施例,一种系统包括:主机存储器件;主机处理器;直接存储器访问设备,被配置为对主机存储器件执行直接存储器访问;直接存储器访问设备包括:ATC,被配置为存储对主机处理器的虚拟地址和主机存储器件的物理地址之间的映射信息加以指示的转换条目;以及存储器管理单元,被配置为管理主机处理器和直接存储器访问设备对主机存储器件的访问。该ATC包括:多个灵活页组高速缓存,每个灵活页组高速缓存被配置为存储与分配给该灵活页组高速缓存的页大小相对应的转换条目;共享高速缓存,被配置为不管页大小如何,存储没有存储在多个灵活页组高速缓存中的转换条目;以及高速缓存管理器,被配置为向每个灵活页组高速缓存分配页大小、管理与分配给多个灵活页组高速缓存的页大小有关的高速缓存页信息、并基于高速缓存页信息来控制多个灵活页组高速缓存和共享高速缓存。
根据示例实施例的地址转换高速缓存通过向多个灵活页组高速缓存动态地分配页大小并基于分配的页大小来存储每个页大小的转换条目,可以有效率地利用高速缓存存储器资源,并减小对地址映射信息的搜索时间。
附图说明
根据结合附图的以下详细描述,将更清楚地理解本公开的示例实施例。
图1是示出了根据示例实施例的地址转换高速缓存的框图。
图2是示出了根据示例实施例的操作地址转换高速缓存的方法的流程图。
图3是示出了根据示例实施例的地址转换高速缓存的示例高速缓存页信息的图。
图4是示出了根据示例实施例的地址转换高速缓存的整个写入操作的示例实施例的流程图。
图5是示出了根据示例实施例的地址转换高速缓存中包括的集合关联高速缓存的示例实施例的图。
图6是示出了根据示例实施例的存储在地址转换高速缓存的高速缓存行中的示例转换条目的图。
图7是示出了根据页大小来设定地址位的示例的图。
图8和图9是示出了根据示例实施例的地址转换高速缓存的条目搜索操作的示例实施例的图。
图10是示出了根据示例实施例的地址转换高速缓存的条目无效操作的示例实施例的流程图。
图11是示出了根据示例实施例的包括地址转换高速缓存的系统的互连架构的示例实施例的框图。
图12是示出了根据示例实施例的包括地址转换高速缓存的系统的框图。
图13至图16是示出了根据示例实施例的包括地址转换高速缓存的系统的操作的图。
图17是示出了根据示例实施例的在包括地址转换高速缓存的系统中传送的数据包的示例的图。
图18是示出了根据示例实施例的包括地址转换高速缓存的虚拟化系统的框图。
图19是示出了根据示例实施例的虚拟化系统的框图。
图20、图21和图22是示出了根据示例实施例的虚拟化系统的虚拟化环境的分层结构的示例实施例的图。
图23和图24是示出了根据示例实施例的虚拟化系统的两级地址转换的图。
图25是示出了根据示例实施例的地址转换高速缓存的框图。
图26是示出了根据示例实施例的地址转换高速缓存的条目写入操作的示例实施例的流程图。
图27是示出了根据示例实施例的包括地址转换高速缓存的设备的图。
图28是示出了根据示例实施例的虚拟化系统的框图。
具体实施方式
下面将参考附图更全面地描述各种示例实施例,在附图中示出了一些示例实施例。在附图中,相似的附图标记始终指代相似的元件。可以省略重复的描述。
图1是示出了根据示例实施例的地址转换高速缓存的框图,并且图2是示出了根据示例实施例的操作地址转换高速缓存的方法的流程图。
参考图1,地址转换高速缓存(ATC)100可以包括高速缓存管理器CMNG 110、多个灵活页组高速缓存FPGC1~FPGCn 120和共享高速缓存SHC 130。ATC 100存储指示虚拟地址和存储器件的物理地址之间的映射信息的转换条目。
参考图1和图2,多个灵活页组高速缓存120中的每个灵活页组高速缓存可以存储与分配给每个灵活页组高速缓存的页大小相对应的转换条目(S100)。例如,可以指定每个灵活页组高速缓存来存储具有特定页大小的转换条目。
共享高速缓存130可以存储没有存储在多个灵活页组高速缓存120中的转换条目,而不管页大小如何(S200)。
高速缓存管理器110可以向每个灵活页组高速缓存分配页大小,并管理与分配给多个灵活页组高速缓存120的页大小有关的高速缓存页信息CPI(S300)。
高速缓存管理器130可以基于高速缓存页信息CPI来控制多个灵活页组高速缓存120和共享高速缓存130(S400)。
ATC 100的操作可以包括条目写入操作、条目搜索操作和条目无效操作。
在条目写入操作中,高速缓存管理器110可以将输入转换条目ITE存储在多个灵活页组高速缓存120之一或共享高速缓存130中的任一个中。从多个灵活页组高速缓存120中逐出的逐出转换条目ETE可以存储在共享高速缓存130中。将参考图4来描述条目写入操作的示例实施例。
在条目搜索操作中,高速缓存管理器110可以确定高速缓存命中或高速缓存未命中,即,与输入的虚拟地址VA相对应的转换条目是否存在于多个灵活页组高速缓存120或共享高速缓存130中。高速缓存管理器110可以在高速缓存命中的情况下激活高速缓存命中信号CHT,并提供与输入的虚拟地址VA相对应的转换条目的物理地址PA。高速缓存管理器110可以在高速缓存未命中的情况下将高速缓存命中信号CHT去激活。将参考图8和图9来描述条目搜索操作的示例实施例。
在条目无效操作中,高速缓存管理器110可以在多个灵活页组高速缓存120和共享高速缓存130中搜索并删除与输入的虚拟地址VA相对应的转换条目。将参考图10来描述条目无效操作的示例实施例。
在一些示例实施例中,多个灵活页组高速缓存可以用多个集合关联高速缓存来实现,并且共享高速缓存可以用全关联高速缓存来实现。
集合关联高速缓存可以包括多个集合,并且每个集合可以包括分别与多条路有关的多个高速缓存行。每条“路”可以指代分别与多个集合有关的一组高速缓存行。仅包括一条路(例如,每个集合一个高速缓存行)的集合关联高速缓存可以被称为直接映射高速缓存。集合关联高速缓存可以基于与虚拟地址VA的地址位的一部分相对应的索引来确定集合,并基于与地址位的另一部分相对应的标签来确定高速缓存命中。将参考图5来进一步描述集合关联高速缓存。
而集合关联高速缓存包括多个集合,使得每个集合可以包括一个或多个高速缓存行,全关联高速缓存包括与任何集合不相对应的多个高速缓存行(例如,整组高速缓存行仅一个集合)。因此全关联高速缓存不使用索引来确定对应的集合,而是将所有地址位存储为标签。
因为全关联高速缓存不指定要存储转换条目的高速缓存行,所以全关联高速缓存可以有效率地利用高速缓存存储器资源。然而,因为全关联高速缓存必须在条目搜索操作中搜索所有高速缓存行,所以硬件结构可能是复杂的,并且会增加功耗。
相反,因为集合关联高速缓存指定要存储转换条目的集合,所以在集合关联高速缓存的情况下,高速缓存存储器资源的有效率利用可能会受到限制,并且缓存未命中的概率可能会增加。然而,因为集合关联高速缓存在条目搜索操作中搜索特定的集合,所以集合关联高速缓存可以具有相对简单的硬件结构,并减小功耗和搜索时间。
根据示例实施例,ATC 100的性能可以通过用集合关联高速缓存来实现多个灵活页组高速缓存120、用全关联高速缓存来实现共享高速缓存130,在高速缓存存储器资源的有效率利用方面得以增强。
图3是示出了根据示例实施例的地址转换高速缓存的示例高速缓存页信息的图。
图3示出了由高速缓存管理器110管理的高速缓存页信息CPI的示例。例如,4KB的页大小可以分配给第一灵活页组高速缓存FPGC1,8KB的页大小可以分配给第二灵活页组高速缓存FPGC2,16KB的页大小可以分配给第三灵活页组高速缓存FPGC3,32KB的页大小可以分配给第四灵活页组高速缓存FPGC4,64KB的页大小可以分配给第五灵活页组高速缓存FPGC5,并且4KB的页大小可以分配给第六灵活页组高速缓存FPGC6。第七灵活页组高速缓存FPGC7至第n灵活页组高速缓存FPGCn可以处于尚未分配页大小的未分配状态NA。例如,可以将相同的页大小(例如,4KB)分配给两个或更多个灵活页组高速缓存(例如,FPGC1和FPGC6)。当转换条目中页大小被分配了的所有转换条目都无效时,可以取消该页大小的分配,并且可以将灵活页组高速缓存返回到未分配状态NA。
因此,根据示例实施例的地址转换高速缓存100可以通过将页大小动态地分配给多个灵活页组高速缓存120并基于所分配的页大小来存储每个页大小的转换条目(一般描述为高速缓存页信息CPI),来有效率地利用高速缓存存储器资源,并减小地址映射信息的搜索时间。
图4是示出了根据示例实施例的地址转换高速缓存的整个写入操作的示例实施例的流程图。
参考图1和图4,高速缓存管理器110可以在空闲状态S10期间接收输入转换条目ITE(S11)。
高速缓存管理器110可以确定与输入转换条目ITE相对应的页大小是否与分配给多个灵活页组高速缓存120的页大小之一相同(S12)。例如,高速缓存管理器110可以基于地址位来确定与输入转换条目ITE相对应的页大小,这将在下面参考图7进行描述。高速缓存管理器110可以基于高速缓存页信息CPI来确定与输入转换条目ITE相对应的页大小是否与所分配的页大小相对应。
当高速缓存管理器110接收到与和分配给多个灵活页组高速缓存120的页大小之一相同的页大小相对应的输入转换条目ITE时(S12:“是”),高速缓存管理器110可以将输入转换条目ITE存储在被分配了与输入转换条目ITE相对应的页大小的对应的灵活页组高速缓存(FPGC)中(S13)。
当存在从多个灵活页组高速缓存120中逐出的逐出转换条目ETE时(S14:“是”),高速缓存管理器110可以将该逐出转换条目ETE存储在共享高速缓存SHC中(S15),然后返回空闲状态(S10)。当不存在逐出转换条目ETE时(S14:“否”),高速缓存管理器110可以返回空闲状态(S10)。
当高速缓存管理器110接收到与和分配给多个灵活页组高速缓存120的页大小不同的新页大小相对应的输入转换条目ITE时(S12:“否”),高速缓存管理器110可以确定多个灵活页组高速缓存120之中是否存在未分配页大小的空的灵活页组高速缓存(S16)。
当存在空的灵活页组高速缓存时(S16:“是”),高速缓存管理器110可以将与输入转换条目ITE相对应的新页大小分配给空的灵活页组高速缓存(S17),并将输入转换条目ITE存储在被分配了新页大小的对应的灵活页组高速缓存中(S18)。
当不存在空的灵活页组高速缓存时(S16:“否”),高速缓存管理器110可以将输入转换条目ITE存储在共享高速缓存SHC中,并返回空闲状态(S10)。
因此,根据示例实施例的地址转换高速缓存100可以通过将页大小动态地分配给多个灵活页组高速缓存120并基于所分配的页大小来存储每个页大小的转换条目(即,高速缓存页信息CPI),来有效率地利用高速缓存存储器资源,并减小地址映射信息的搜索时间。
高速缓存管理器110和在其他实施例中的其他示例高速缓存管理器可以包括被配置为执行本文中所描述的各种任务的硬件、固件和软件。例如,高速缓存管理器110可以包括以下组件中的一个或多个:被配置为执行计算机程序指令以执行本文中所描述的各种过程和方法的至少一个处理器(例如,逻辑器件或中央处理单元(CPU))、被配置为访问并存储数据和信息以及计算机程序指令的随机存取存储器(RAM)和只读存储器(ROM)、以及可以存储数据和/或指令的存储介质或其他适合类型的存储器(例如,RAM、ROM、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、其他类型的有形和非暂时性存储介质)。此外,高速缓存管理器110可以包括提供适当的交流电(AC)或直流电(DC)来为高速缓存管理器110的一个或多个组件供电的电源的连接,以及允许在高速缓存管理器110的各种公开的组件之间进行通信的总线。高速缓存管理器110的可控的功能可以使用一个或多个输入设备(例如键盘、鼠标、触摸屏等)来设定。
图5是示出了根据示例实施例的地址转换高速缓存中包括的集合关联高速缓存的示例实施例的图。
参考图5,集合关联高速缓存20可以包括高速缓存存储器50、标签比较电路41、数据输出电路MUX 42、更新控制器UCON 43和高速缓存命中确定电路44。
高速缓存存储器50可以包括用于存储虚拟地址VA的标签的标签存储器TARR区域(例如,标签存储器TARR单元)和用于存储映射到虚拟地址VA的物理地址PA的数据存储器DARR区域(例如,数据存储器DARR单元)。
图5示出了具有四条路的集合关联高速缓存结构的示例。标签存储器TARR和数据存储器DARR可以包括多条路和多个集合,使得可以基于虚拟地址VA的索引IDX来选择每个集合。每条路可以包括多个高速缓存行,使得每个高速缓存行可以存储单独的转换条目。标签存储器TARR和数据存储器DARR的行指示集合,并且标签存储器TARR和数据存储器DARR的列指示路。
图5示出了用由从0至m的索引指定的m+1个集合和四条路WY0~WY3实现的4路集合关联高速缓存结构。如图5所示,一个集合可以存储第一标签TG0至第四标签TG3和分别映射到第一标签TG0至第四标签TG3的第一物理地址PA0至第四物理地址PA3。
另外,第一标签TG0至第四标签TG3可以存储在标签存储器TARR的同一行中。第一标签TG0与第一路WY0相对应,第二标签TG1与第二路WY1相对应,第三标签TG2与第三路WY2相对应,并且第四标签TG3与第四路WY3相对应。分别与第一标签TG0至第四标签TG3相对应的第一物理地址PA0至第四物理地址PA3可以以与第一标签TG0至第四标签TG3相同的方式存储在数据存储器DARR中。
集合关联高速缓存20从外部设备接收输入虚拟地址VA以进行地址转换。如图5所示,输入虚拟地址VA包括标签TG和索引IDX。索引IDX指示高速缓存存储器50的行地址。换言之,索引IDX指示高速缓存存储器50中包括的多个集合中的一个集合。
标签比较电路41和高速缓存命中确定电路44可以接收输入虚拟地址VA的标签TG以进行地址转换,并确定与输入虚拟地址VA相对应的转换条目是否存储在于高速缓存存储器50中。换言之,标签比较电路41和高速缓存命中确定电路44可以确定是否存在高速缓存命中或高速缓存未命中。
标签比较电路41可以包括比较器COM0~COM3,以将存储在与输入虚拟地址VA的索引IDX相对应的集合中并从该集合中读取的标签TG0~TG3中的每一个与输入虚拟地址VA的标签TG进行比较。当第一标签TG0至第四标签TG3中的对应的一个标签与标签TG一致时,比较器COM0~COM3可以分别激活路命中信号HT0~HT3。高速缓存命中确定电路44可以在当至少一个路命中信号HT0~HT3被激活时激活高速缓存命中信号CHT以指示高速缓存命中。例如,高速缓存命中指示外部请求的映射信息存在于高速缓存存储器50中。
当高速缓存命中信号CHT被激活以指示高速缓存命中时,可以输出与输入虚拟地址VA的标签TG相对应的物理地址PA。标签比较电路41将路命中信号HT0~HT3输出到数据输出电路42,并且数据输出电路42可以选择与激活的路命中信号相对应的物理地址PA0~PA3之一以输出选择的物理地址PA。相反,在高速缓存未命中的情况下,高速缓存命中确定电路44可以将高速缓存命中信号CHT去激活以指示高速缓存未命中。在高速缓存未命中的情况下,如下面将参考图14和图15描述的,ATC 100可以向存储器管理单元请求与输入虚拟地址VA相对应的物理地址PA。
如果所有高速缓存行当前都在存储信息,则可以逐出先前存储在高速缓存行之一中的信息以为新信息腾出空间。基于高速缓存替换策略来选择高速缓存行进行逐出。例如,高速缓存替换策略可以基于最近最少使用(LRU)策略或重新参考区间预测(RRIP)策略。
更新控制器43可以从可以由高速缓存替换策略确定的一个高速缓存行中删除与逐出转换条目ETE相对应的高速缓存数据,并将接收到的输入转换条目ITE存储在逐出转换条目ETE所存储的高速缓存行中。
图6是示出了根据示例实施例的存储在地址转换高速缓存的高速缓存行中的示例转换条目的图。
参考图6,转换条目TE可以包括虚拟地址的标签TG和映射到标签TG的物理地址PA。此外,转换条目TE还可以包括有效性字段V、功能标识符PFID和其他信息OINF。有效性字段V可以指示转换条目TE的有效或无效,并且功能标识符PFID可以指示多个功能之中与转换条目TE相关的功能。其他信息OINF可以包括用于确定逐出转换条目ETE的LRU字段、指示与转换条目TE相关的未完成的指令的数量的锁定计数字段等。
图7是示出了根据页大小来设定地址位的示例的图。
图7示出了根据外围组件互连快速(PCIe)标准使用s字段来设定页大小的示例。在图7中,“X”指示由真实地址确定的0或1的位值。
例如,最小的页大小可以是4KB,并且在这种情况下,可以忽略位0~10。位11与s字段相对应。s字段的值为0可以指示应用了最小的页大小,并且s字段的值为1可以指示应用了大于最小页大小的页大小。位12的值为0可以指示应用了8KB的页大小,并且位12的值为1可以指示应用了大于8KB的页大小。这样,可以通过确定从s字段开始具有0值的第一位来确定地址的页大小。图7示出了与4KB、8KB、2MB、1GB和4GB的页大小相对应的地址位。高位32~63可以用于指示大于4GB的页大小。
图8和图9是示出了根据示例实施例的地址转换高速缓存的条目搜索操作的示例实施例的图。
为了便于说明,图8示出了与多个灵活页组高速缓存相对应的第一集合关联高速缓存FPGC1至第五集合关联高速缓存FPGC5和高速缓存管理器CMNG,并且图8中省略了上述共享高速缓存SHC。
参考图8,可以将4KB的页大小分配给第一集合关联高速缓存FPGC1,可以将8KB的页大小分配给第二集合关联高速缓存FPGC2,可以将16KB的页大小分配给第三集合关联高速缓存FPGC3,可以将32KB的页大小分配给第四集合关联高速缓存FPGC4,并且可以将64KB的页大小分配给第五集合关联高速缓存FPGC5。示例实施例不限于图8所示的页大小的设定,并且高速缓存管理器CMNG可以对页大小进行各种和/或动态地分配。可以将所分配的页大小存储为高速缓存页信息CPI。
在一些示例实施例中,第一集合关联高速缓存FPGC1至第五集合关联高速缓存FPGC5可以包括相同数量的集合。例如,如图8所示,每个集合关联高速缓存可以包括四个集合SET0~SET3,并且在这种情况下,虚拟地址VA的两个位可以与索引IDX相对应。
当高速缓存管理器CMNG搜索映射到输入虚拟地址VA的物理地址PA时,高速缓存管理器CMNG可以搜索与多个灵活页组高速缓存相对应的第一集合关联高速缓存FPGC1至第五集合关联高速缓存FPGC5中的全部和与共享高速缓存SHC相对应的全关联高速缓存(图8中未示出)。
图9示出了根据如上参考图7所描述的页大小来设定地址位的示例。
参考图8和图9,高速缓存管理器CMNG可以基于高速缓存页信息CPI,从输入的虚拟地址VA中提取与分配到第一集合关联高速缓存FPGC1至第五集合关联高速缓存FPGC5的页大小4KB、8KB、16KB、32KB和64KB相对应的第一标签TG1至第五标签TG5和第一索引IDX1至第五索引IDX5,并将该标签和该索引分别提供给对应的集合关联高速缓存。即使未示出,但是输入虚拟地址VA也可以提供给用全关联高速缓存实现的共享高速缓存SHC。
如图9所示,可以根据页大小来改变标签和索引。在页大小为4KB的情况下,第一索引IDX1可以与地址位B12和B13相对应,并且第一标签TG1可以与地址位B14~B31相对应。在页大小为8KB的情况下,第二索引IDX2可以与地址位B13和B14相对应,并且第二标签TG2可以与地址位B15~B31相对应。在页大小为16KB的情况下,第三索引IDX3可以与地址位B14和B15相对应,并且第三标签TG3可以与地址位B16~B31相对应。在页大小为32KB的情况下,第四索引IDX4可以与地址位B15和B16相对应,并且第四标签TG4可以与地址位B17~B31相对应。在页大小为64KB的情况下,第五索引IDX5可以与地址位B16和B17相对应,并且第五标签TG5可以与地址位B18~B31相对应。
因此,当第一集合关联高速缓存FPGC1至第五集合关联高速缓存FPGC5包括相同数量的集合SET0~SET3时,存储在每个集合关联高速缓存中的每个标签的位数可以随着分配给每个集合关联高速缓存的页大小增加而减小。
在包括地址转换高速缓存的设备的方面中,可以在设备接收到转换响应之后确定由存储器管理单元管理的页大小,如下面将参考图14和图15描述的那样。页大小可以每个功能和/或每个转换响应而变化,并且因此特定的页大小可能不会被预先分配给集合关联高速缓存。
此外,地址位中的索引位置可以根据页大小而变化,并且采用地址位中的特定位置作为索引的常规地址转换高速缓存可以不使用集合关联高速缓存,而是使用全关联高速缓存。
如参考图8和图9所描述的,根据示例实施例,可以将页大小动态地分配给每个集合关联高速缓存,并且可以基于高速缓存页信息CPI从输入虚拟地址VA中提取与所分配的页大小相对应的标签和索引,并将该标签和该索引提供给每个集合关联高速缓存。
图10是示出了根据示例实施例的地址转换高速缓存的条目无效操作的示例实施例的流程图。
参考图1和图10,包括处于空闲状态(S20)的ATC 100的设备可以从诸如主机处理器之类的外部设备接收无效请求IREQ(S21)。无效请求IREQ可以包括指示要被无效的转换条目的输入虚拟地址VA。
必须搜索全部的转换条目,以使与由无效请求IREQ指示的无效范围重叠的转换条目无效。因此,高速缓存管理器CMNG可以将输入虚拟地址VA提供给共享高速缓存SHC和灵活页组高速缓存FPGC中的全部(S22)。如上所述,灵活页组高速缓存FPGC可以用集合关联高速缓存来实现。在这种情况下,高速缓存管理器CMNG可以基于高速缓存页信息CPI,将与所分配的页大小相对应的标签和索引分别提供给灵活页组高速缓存。高速缓存管理器CMNG可以将输入虚拟地址VA提供给用全关联高速缓存实现的共享高速缓存SHC。
因此,当高速缓存管理器CMNG使与输入虚拟地址VA相对应的转换条目无效时,高速缓存管理器CMNG可以搜索多个灵活页组高速缓存FPGC和共享高速缓存SHC中的全部。
多个灵活页组高速缓存FPGC和共享高速缓存SHC中的每一个可以删除与输入虚拟地址VA相对应的转换条目TE(S23)。例如,可以通过改变如上面参考图6描述的转换条目TE中包括的有效性字段V的值来执行转换条目TE的删除或无效。
图11是示出了根据示例实施例的包括地址转换高速缓存的系统的互连架构的示例实施例的框图。
参考图11,示出了由将一组的组件互连的点对点链路组成的设计的示例实施例。系统300包括耦接到控制器集线器315的主机处理器HPRC 305、主机存储器件(或系统存储器)HMEM 310和存储器管理单元MMU 330。主机处理器305包括诸如微处理器、主机处理器、嵌入式处理器、协处理器或其他处理器之类的任何处理元件。主机处理器305通过前端总线(FSB)306耦接到控制器集线器315。在一个示例实施例中,FSB 306是串行点对点互连。在另一示例实施例中,FSB306包括符合不同互连标准的串行差分互连架构。
系统存储器310包括诸如随机存取存储器(RAM)、非易失性(NV)存储器、固态存储器或系统300中的设备可访问的其他存储器之类的任何存储器件。系统存储器310通过存储器接口316耦接到控制器集线器315。存储器接口的示例包括双数据速率(DDR)存储器接口、双通道DDR存储器接口和动态RAM(DRAM)存储器接口。
在一个示例实施例中,控制器集线器315是外围组件互连快速(PCIe或PCIE)互连分级结构中的根集线器、根联合体或根控制器。控制器集线器315的示例包括芯片组、存储控制器集线器(MCH)、北桥芯片、互连控制器集线器(ICH)、南桥芯片和根控制器/集线器。通常,术语芯片组指代两个物理上独立的控制器集线器,即,耦接到互连控制器集线器(ICH)的存储控制器集线器(MCH)。应当注意,当前系统通常包括与主机处理器305集成的MCH,同时控制器集线器315用于以与以下描述相似的方式与I/O设备通信。在一些示例实施例中,通过根联合体或控制器集线器315来可选地支持对等路由。
这里,控制器集线器315通过串行链路319耦接到交换机/桥320。也可以被称为接口/端口317和321的输入/输出模块317和321包括/实现分层协议栈以提供控制器集线器315和交换机320之间的通信。在一个示例实施例中,多个设备能够耦接到交换机320。
交换机/桥320将数据包/消息从设备325向上游(即,朝向根联合体的向上分级结构)路由到控制器集线器315,并从处理器305或系统存储器310向下游(即,远离根控制器的向下分级结构)路由到设备325。在一个示例实施例中,交换机320被称为多个虚拟PCI到PCI桥设备的逻辑组件。设备325包括要耦接到电子系统的任何内部或外部设备或组件,例如I/O设备、网络接口控制器(NIC)、附加卡、音频处理器、网络处理器、硬盘驱动器、存储设备、CD/DVD ROM、监视器、打印机、鼠标、键盘、路由器、便携式存储设备、火线设备、通用串行总线(USB)设备、扫描仪、和其他输入/输出设备。通常在PCIe术语中,这样的设备被称为端点。尽管未具体地示出,但设备325可以包括PCIe到PCI/PCI-X桥以支持传统或其他版本的PCI设备。PCIe中的端点设备通常被分类为传统、PCIe或根联合体集成的端点。
存储器管理单元330还通过串行链路332耦接到控制器集线器315。I/O模块331和318用于实现分层协议栈以在存储器管理单元330和控制器集线器315之间进行通信。
存储器管理单元330可以包括被配置为存储最近地和/或频繁地引用的地址映射信息的转换后备缓冲器(TLB)。设备325可以具有直接存储器访问功能,并包括根据示例实施例的地址转换高速缓存ATC。
图12是示出了根据示例实施例的包括地址转换高速缓存的系统的框图。
参考图12,系统400可以包括主机处理器HPRC 410(例如,CPU)、直接存储器访问设备DMAIP 420、存储器管理单元MMU(或存储器管理电路)430和主机存储器件HMEM 440。
直接存储器访问设备420和存储器管理单元430可以通过由主机处理器410生成的控制信号CTRLD和CTRLM来控制。主机存储器件440可以存储数据和程序代码。软件程序代码可以被加载到主机存储器件440中,并且所加载的软件程序代码可以由主机处理器410执行,并且主机存储器件440可以用作系统400的工作存储器。
主机存储器件440可以用诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)等的易失性存储器来实现,但是示例实施例不限于此。主机存储器件440可以用另一种类型的易失性存储器或非易失性存储器来实现。
直接存储器访问设备420可以能够执行对主机存储器件440的直接存储器访问的功能。例如,直接存储器访问设备420可以是相机、图形处理单元(GPU)、神经处理单元(NPU)、外围组件互连快速(PCIe)设备、通用闪存(UFS)设备等。为了便于说明和描述,图12示出了一个直接存储器访问设备,并且示例实施例不限于此。系统400可以包括具有各种功能的多个知识产权(即,功能块或功能电路),并且两个或更多个知识产权可以能够执行直接存储器访问的功能。
直接存储器访问指示可以由系统400的内部总线支持的将数据直接从一个存储器件传送到另一个存储器件、或直接在存储器件和输入-输出设备之间传送而不通过主机处理器410的方案。
直接存储器访问的模式可以包括直接存储器访问设备420从主机处理器410获得对内部总线的控制以一次全部发送数据的突发模式、以及直接存储器访问设备420访问主机存储器件440,而主机处理器410不访问主机存储器件440的周期挪用模式。直接存储器访问在没有主机处理器410干预的情况下执行。相应地,因为主机处理器410可以在执行直接存储器访问的同时操作,所以可以增强系统400的性能。
存储器管理单元430可以管理主机处理器410对主机存储器件440的核心访问以及直接存储器访问设备420对主机存储器件440的直接访问。核心访问和直接访问可以包括从主机存储器件440读取数据的读取操作和将数据存储到主机存储器件440的写入操作。核心访问可以基于由主机处理器410发出的核心访问请求CREQ来执行,并且直接访问可以基于由直接存储器访问设备420发出的直接访问请求DREQ来执行。
核心访问请求CREQ和直接访问请求DREQ中的每一个可以包括用于读操作或写操作的虚拟地址VA。存储器管理单元430可以执行地址转换以提供映射到虚拟地址VA的物理地址PA。虚拟地址VA指示操作系统的虚拟地址空间中的位置,并且物理地址PA指示主机存储器件440的存储区域的真实物理位置。下面将参考图23和图24描述地址转换的示例实施例。
存储器管理单元430可以包括被配置为存储最近地和/或频繁地引用的地址映射信息的转换后备缓冲器(TLB)。直接存储器访问设备420可以包括根据示例实施例的地址转换高速缓存ATC。
图13至图16是示出了根据示例实施例的包括地址转换高速缓存的系统的操作的图。
在一些示例实施例中,图13至图16的操作可以根据由PCIe标准定义的地址转换服务(ATS)和页面请求接口(PRI)来执行。
参考图13,直接存储器访问设备DMAIP中的设备处理器DPRC可以将虚拟地址VA传送到ATC(S31)。当存在与虚拟地址VA相对应的转换条目时,在高速缓存命中的情况下(S32),即,ATC可以将映射到虚拟地址VA的物理地址PA提供给设备处理器DPRC(S33)。设备处理器DPRC可以将包括物理地址PA的直接访问请求DREQ发送到主机存储器件HMEM(S34)。
参考图14,设备处理器DPRC可以将虚拟地址VA传送到ATC(S41)。当不存在与虚拟地址VA相对应的转换条目时,即,在高速缓存未命中的情况下(S42),ATC可以将转换请求TREQ发送到存储器管理单元MMU(S43)。
当在映射表(或页表)中存在与虚拟地址VA相对应的转换条目时,即,在映射命中(S44)的情况下,存储器管理单元MMU可以将包括指示转换成功的信息SUCCESS和映射到虚拟地址VA的物理地址PA在内的转换响应TRES传送到ATC(S45)。ATC可以将该物理地址PA提供给设备处理器DPRC(S46)。此外,可以将包括虚拟地址VA和物理地址PA之间的映射的新转换条目存储在ATC中(S47)。设备处理器DPRC可以将包括物理地址PA的直接访问请求DREQ发送到主机存储器件HMEM(S48)。
参考图15,设备处理器DPRC可以将虚拟地址VA发送到ATC(S51)。当不存在与虚拟地址VA相对应的转换条目时,即,在高速缓存未命中的情况下(S52),ATC可以将转换请求TREQ发送到存储器管理单元MMU(S53)。
当在映射表中不存在与虚拟地址VA相对应的转换条目时,即,在映射未命中的情况下(S54),存储器管理单元MMU可以将包括指示转换失败的信息FAIL的转换响应TRES传送到ATC(S55)。
ATC可以将包括虚拟地址VA的页面请求PREQ传送到存储器管理单元MMU(S56)。存储器管理单元MMU可以通过将新物理地址PA分配给虚拟地址VA来生成新转换条目(S57),并将包括指示映射成功的信息SUCCESS的页面响应PRES传送到ATC(S58)。
ATC可以将包括虚拟地址VA的转换请求TREQ传送到存储器管理单元MMU(S59)。当在映射表中存在与虚拟地址VA相对应的转换条目时,即,在映射命中的情况下(S60),存储器管理单元MMU可以将包括指示转换成功的信息SUCCESS和映射到虚拟地址VA的物理地址PA在内的转换响应TRES发送到ATC(S61)。
ATC可以将物理地址PA提供给设备处理器DPRC(S62)。此外,可以将包括虚拟地址VA和物理地址PA之间的映射的新转换条目存储在ATC中(S63)。设备处理器DPRC可以将包括物理地址PA的直接访问请求DREQ发送到主机存储器件HMEM(S64)。
参考图16,当存储器管理单元MMU使映射表中的转换条目无效或删除该转换条目时(S71),存储器管理单元MMU可以将包括与要无效的转换条目相对应的虚拟地址VA的无效请求IREQ传送到直接存储器访问设备DMAIP中的ATC(S72)。
ATC可以删除无效请求IREQ中与虚拟地址VA相对应的转换条目(S73)。在完成转换条目的删除之后,ATC可以将无效响应IRES发送到存储器管理单元MMU(S74)。如上所述,当ATC使转换条目无效时,ATC可以搜索共享高速缓存SHC和灵活页组高速缓存FPGC中的全部。
图17是示出了根据示例实施例的在包括地址转换高速缓存的系统中传送的数据包的示例的图。
图17示出了由PCIe架构的事务层生成并管理的事务层数据包(TLP)的格式。
该事务由使用数据包进行通信的请求和完成(或响应)组成。如图17所示,TLP可以包括被分配给多个字节(BYTE 0~k+3)的一个或多个可选的TLP前缀、TLP报头、数据有效载荷和可选的TLP摘要。
上述转换请求TREQ、转换响应TRES、页面请求PREQ、页面响应PRES、无效请求IREQ和无效响应IRES可以与图17所示的TLP相对应。TLP报头中可以包括各种信息,并且数据有效载荷中可以包括与未转换的地址相对应的虚拟地址VA和与转换的地址相对应的物理地址PA。
图18是示出了根据示例实施例的包括地址转换高速缓存的虚拟化系统的框图。
参考图18,虚拟化系统600可以包括主机处理器HPRC 610(例如,CPU)、直接存储器访问设备DMAIP 620、存储器管理单元MMU(或存储器管理电路)630和主机存储器件HMEM640。
存储器管理单元630可以包括被配置为存储最近地和/或频繁地引用的地址映射信息的转换后备缓冲器(TLB)。直接存储器访问设备620可以包括根据示例实施例的地址转换高速缓存ATC。图18的虚拟化系统600与图12的系统400类似,并且可以省略重复的描述。
主机处理器610可以提供虚拟化环境。管理程序HPVS与多个客户操作系统GOS1和GOS2可以在虚拟化环境中运行。为了便于说明和描述,图18示出了两个客户操作系统,即第一客户操作系统GOS1和第二客户操作系统GOS2,并且示例实施例不限于此。可以根据虚拟化环境对由管理程序HPVS控制的客户操作系统的数量进行各种确定。
为了便于说明,图18示出了主机处理器610中包括管理程序HPVS和多个客户操作系统GOS1和GOS2。管理程序HPVS和多个客户操作系统GOS1和GOS2可以作为软件程序代码加载到主机存储器件640中,并且可以由主机处理器610执行。
多个客户操作系统GOS1和GOS2可以在虚拟化环境的多个虚拟机上彼此独立地运行,并且管理程序HPVS可以在虚拟化环境中控制多个虚拟机。下面将参考图19来描述虚拟化环境。
第一客户操作系统GOS1可以包括第一设备驱动器DRV1,并且第一客户操作系统GOS1可以通过第一设备驱动器DRV1来控制直接存储器访问设备620。第一设备驱动器DRV1可以生成控制信号CTRLD1以控制直接存储器访问设备620。
第二客户操作系统GOS2可以包括第二设备驱动器DRV2,并且第二客户操作系统GOS2可以通过第二设备驱动器DRV2来控制直接存储器访问设备620。第二设备驱动器DRV2可以生成控制信号CTRLD2以控制直接存储器访问设备620。
图19是示出了根据示例实施例的虚拟化系统的框图。
参考图19,虚拟化系统500可以包括系统硬件510和在由系统硬件510提供的虚拟化环境上运行的软件。该软件可以包括管理程序520和多个虚拟机VM1 530、VM2540和VM3550。为了便于说明,图19示出了三个虚拟机530、540和550,并且可以对安装在管理程序520上的虚拟机的数量进行各种确定。
系统硬件510可以包括中央处理单元CPU、存储器件MEM、存储设备STR、存储器管理电路MMC、一个或多个知识产权IP。中央处理单元CPU可以是单个处理器或包括多个处理器核。当中央处理单元CPU包括多个处理器核时,处理器核之一可以与图18中的提供虚拟化环境的处理器610相对应。
虚拟机530、540和550可以具有各种配置以执行相应的功能。在下文中,以一个虚拟机530作为示例进行描述。如图19所示,虚拟机530可以包括虚拟硬件、客户操作系统GOS1和应用APP。
虚拟硬件可以与在虚拟机530中被仿真为软件的物理组件相对应。换言之,虚拟化系统500的对应物理组件可以被虚拟化为虚拟硬件。虚拟硬件可以包括在仿真系统硬件510的整个物理组件之中被分配给虚拟机530的物理组件的虚拟组件。例如,虚拟硬件可以包括仿真中央处理单元CPU的虚拟处理器、仿真存储器件MEM的虚拟存储器件、仿真IP的虚拟IP等。
例如,客户操作系统GOSI可以包括虚拟存储器管理单元vGMMU、设备驱动器GDRV、状态监视器SMON等。
虚拟存储器管理单元vGMMU可以将客户操作系统GOS1的虚拟地址空间分配给在客户操作系统GOS1上运行的应用APP。虚拟存储器管理单元vGMMU可以管理虚拟地址空间中的虚拟地址与虚拟硬件中包括的虚拟存储器件的中间物理地址之间的映射。
设备驱动器GDRV可以经由虚拟硬件中包括的虚拟IP来控制系统硬件510中包括的IP。
状态监视器SMON可以通过监视虚拟机530和/或客户操作系统GOS1来提供状态信息。例如,状态监视器SMON可以在虚拟机530正常操作时周期性地提供状态信息。在这种情况下,当在预定时间间隔内没有提供状态信息时,管理程序520可以确定重启客户操作系统GOS1。
管理程序520可以生成、调度并管理多个虚拟机530、540和550。管理程序520可以提供多个虚拟机530、540和550与系统硬件510之间的接口,并管理与多个虚拟机530、540和550相关联的指令和数据传送的执行。管理程序520可以被称为虚拟机监视器或虚拟机管理器。
例如,管理程序520可以包括中断处理程序INTHD、虚拟存储器管理单元vHMMU、设备驱动器HDRV、设备仿真器DEML等。
虚拟存储器管理单元vHMMU可以将存储器件MEM的多个客户存储区域分配给多个虚拟机530、540和550或多个客户操作系统。虚拟存储器管理单元vHMMU可以管理多个虚拟机530、540和550中的虚拟存储器件的中间物理地址与存储器件MEM的物理地址之间的映射。
设备驱动器HDRV可以直接控制系统硬件510中包括的IP。系统硬件510中的每个IP可以由客户操作系统GOS1中包括的设备驱动器GDRV和/或管理程序520中包括的设备驱动器HDRV控制。
中断处理程序INTHD可以基于来自虚拟机530、540和550的信息和/或来自系统硬件510的信息来控制虚拟化系统500的异常操作。例如,中断处理程序INTHD可以确定虚拟机530、540和550中分别包括的客户操作系统的重启。
设备仿真器DEML可以将物理组件分别分配给虚拟机530、540和550,并通过对所分配的物理组件进行仿真来建立和管理虚拟硬件。
图20、图21和图22是示出了根据示例实施例的虚拟化系统的虚拟化环境的分层结构的示例实施例的图。
参考图20、图21和图22,虚拟化环境可以包括多个客户操作系统GOS1、GOS2和GOS3以及在多个客户操作系统GOS1、GOS2和GOS3上运行的应用。例如,应用APP11和APP12可以在第一客户操作系统GOS1上运行,应用APP21和APP22可以在第二客户操作系统GOS2上运行,并且应用APP31和APP32可以在第三客户操作系统GOS3上运行。可以对客户操作系统的数量和在每个客户操作系统上运行的应用的数量进行各种确定。
管理程序HPVS可以被主要分为第一类型和第二类型。图20示出了第一类型的管理程序HPVS,并且图21和图22示出了第二类型的管理程序HPVS。第一类型的管理程序HPVS可以被称为独立管理程序,并且第二类型的管理程序HPVS可以被称为托管管理程序。代表性的开源管理程序包括第一类型的Xen和第二类型的KVM。
参考图20,第一类型的管理程序HPVS可以在系统硬件SYSHW上运行,并且相对于系统硬件SYSHW具有完全控制。在这种情况下,在虚拟化分层结构中不存在主机操作系统,并且客户操作系统GOS1、GOS2和GOS3之一可以执行主机操作系统的功能。应用可以在第一类型的管理程序HPVS上运行。
第二类型的管理程序HPVS可以在如图21所示的主机操作系统HOS上运行,或者可以包括在如图22所示的主机操作系统HOS中。在这种情况下,主机操作系统HOS相对于系统硬件SYSHW具有完全控制。主机操作系统HOS可以在系统硬件SYSHW上运行,并且应用可以在主机操作系统HOS上运行。
图23和图24是示出了根据示例实施例的虚拟化系统的两级地址转换的图。
参考图23和图24,两级地址转换可以包括:第一级地址转换,用于将多个客户操作系统的虚拟地址VA转换为虚拟机中的虚拟存储器件的中间物理地址IPA,和第二级地址转换,用于将中间物理地址IPA转换为存储器件的物理地址PA。
虚拟地址VA指示虚拟地址空间SVA中的位置,中间物理地址IPA指示中间地址空间SIPA中的位置,并且物理地址PA指示存储器件的存储器区域的实际物理位置。
如参考图19所述,每个客户操作系统GOS1和GOS2可以包括虚拟存储器管理单元vGMMU。虚拟存储器管理单元vGMMU可以管理分别与客户操作系统GOS1和GOS2相对应的客户虚拟地址空间SVA1和SVA2的虚拟地址VA与分别与客户操作系统GOS1和GOS2相对应的客户中间物理地址空间SIPA1和SIPA2的中间物理地址IPA之间的映射。
由虚拟存储器管理单元vGMMU管理的映射信息可以存储在第一级转换表TTAB1中,并且可以参考第一级转换表TTAB1来访问存储器件。
为了便于说明,图23示出了客户虚拟地址空间SVA1和SVA2在空间上是分离的,并且客户中间物理地址空间SIPA1和SIPA2在空间上是分离的。因为客户操作系统GOS1和GOS2彼此独立地运行,所以可以不考虑地址空间的叠加。
另外,如参考图19所述,管理程序HPVS可以包括虚拟存储器管理单元vHMMU。虚拟存储器管理单元vHMMU可以将存储器件的客户存储器区域MR1和MR2分别分配给客户操作系统GOS1和GOS2。客户存储器区域MR1和MR2必须被分配为在空间上彼此分离。
第一客户操作系统GOS1可以仅访问第一客户存储器区域MR1,并且第二客户操作系统GOS2可以仅访问第二客户存储器区域MR2。例如,第一客户操作系统GOS1不能访问第二客户存储器区域MR2,并且第二客户操作系统GOS2不能访问第一客户存储器区域MR1。结果,管理程序HPVS可以提供空间隔离以防止多个客户操作系统GOS1和GOS2之间的存储器崩溃。
虚拟存储器管理单元vHMMU可以管理客户中间物理地址空间SIPA1和SIPA2的中间物理地址IPA与所分配的客户存储器区域MR1和MR2的物理地址PA之间的映射。
由虚拟存储器管理单元vHMMU管理的映射信息可以存储在第二级转换表TTAB2中,并且可以参考第二级转换表TTAB2来访问存储器件。
一般来说,管理程序HPVS可以通过监视多个客户操作系统GOS1和GOS2的存储器使用状态来自适应地分配客户存储器区域。
参考图24,包括地址映射信息的第一级转换表TTAB1和第二级转换表TTAB2可以存储在存储器件中。在访问操作期间,可以参考存储在存储器件中的第一级转换表TTAB1和第二级转换表TTAB2用于地址转换。
为了增强地址转换的速度和效率,虚拟化系统可以包括实现为如图24所示的硬件的存储器管理单元MMU1和MMU2。存储器管理单元MMU1和MMU2可以包括在图18中的存储器管理电路630中。
第一存储器管理单元MMU1可以基于第一级转换表TTAB1的地址映射信息来执行第一级地址转换,以将用于针对存储器件的访问操作的虚拟地址VA转换为中间物理地址IPA。
第二存储器管理单元MMU2可以基于第二级转换表TTAB2的地址映射信息来执行第二级地址转换,以将从第一存储器管理单元MMU1发送的中间物理地址IPA转换为存储器件的物理地址PA。
第一存储器管理单元MMU1和/或第二存储器管理单元MMU2可以包括转换后备缓冲器(TLB)以进一步增强地址转换的速度和效率。TLB可以存储最近地和/或频繁地引用的地址映射信息。
图25是示出了根据示例实施例的地址转换高速缓存的框图。
参考图25,ATC 700可以包括高速缓存管理器CMNG 710、多个灵活页组高速缓存FPGC1~FPGCn 720、共享高速缓存SHC 730和多个功能专用高速缓存PFDC1~PFDCm 740。ATC 700存储指示虚拟地址和存储器件的物理地址之间的映射信息的转换条目。
与图1的ATC 100相比,图25的ATC 700还包括多个功能专用高速缓存740。在下文中,省略与图1重复的描述,并且描述与多个功能专用高速缓存740相关联的差异。
多个功能专用高速缓存PFDC1~PFDCm可以专用于多个功能PF1~PFm,使得每个功能专用高速缓存可以存储与每个功能相关的转换条目。
在一些示例实施例中,多个功能专用高速缓存PFDC1~PFDCm可以用多个全关联高速缓存来实现。例如,多个功能专用高速缓存PFDC1~PFDCm可以分别存储与功能PF1~PFm相关联的转换条目,而不管页大小如何。
在一些示例实施例中,多个功能PF1~PFm可以是根据外围组件互连快速(PCIe)标准的功能。多个功能PF1~PFm可以分别与如上所述的多个客户操作系统相对应。地址、请求、响应和转换条目可以使用上面参考图6描述的功能标识符来彼此区分。
多个功能专用高速缓存PFDC1~PFDCm可以与较低级别的高速缓存组CG_L1相对应,并且多个灵活页组高速缓存FPGC1~FPGCn和共享高速缓存SHC可以与较高级别的高速缓存组CG_L2相对应。
当高速缓存管理器710执行条目搜索操作以搜索映射到输入虚拟地址的物理地址时,高速缓存管理器710可以搜索与输入虚拟地址中包括的功能标识符相对应的功能专用高速缓存。当在与功能标识符相对应的功能专用高速缓存中不存在与输入虚拟地址相对应的转换条目时,高速缓存管理器710可以搜索多个灵活页组高速缓存FPGC1~FPGCn和共享高速缓存SHC中的全部。
当高速缓存管理器710执行条目无效操作以使与输入虚拟地址相对应的转换条目无效时,高速缓存管理器710可以搜索多个功能专用高速缓存PFDC1~PFDCm、多个灵活页组高速缓存FPGC1~FPGCn和共享高速缓存SHC中的全部。
图26是示出了根据示例实施例的地址转换高速缓存的条目写入操作的示例实施例的流程图。
参考图25和图26,处于空闲状态S80的高速缓存管理器CMNG710可以接收输入转换条目ITE(S81)。高速缓存管理器710可以将输入转换条目ITE存储在较低级别的高速缓存组CG_L1中(S82)。例如,高速缓存管理器710可以将输入转换条目ITE存储在与输入转换条目ITE中包括的功能标识符PFID相对应的功能专用高速缓存中。
当存在从功能专用高速缓存中逐出的逐出转换条目ETE时(S83:“是”),高速缓存管理器710可以将逐出转换条目ETE存储在较高级别的高速缓存组CG_L2中(S84),并返回空闲状态(S80)。在这种情况下,高速缓存管理器710可以根据参考图4描述的方法将逐出转换条目ETE存储在多个灵活页组高速缓存FPGC1~FPGCn或共享高速缓存SHC中。当不存在逐出转换条目ETE时(S83:“否”),高速缓存管理器710可以返回空闲状态(S80)。
图27是示出了根据示例实施例的包括地址转换高速缓存的设备的图。
参考图27,设备800可以是根据PCIe标准的PCIe设备。PCIe设备可以通过PCIe端口820接收信号,并通过内部路由810将接收到的信号分别传送到多个功能PF1、PF2和PF3。内部路由810可以基于每个接收的信号中包括的功能标识符PFID来对每个接收的信号进行路由。
多个功能PF1、PF2和PF3中的每一个可以包括多个功能专用高速缓存PFDC1、PFDC2和PFDC3中的每一个和多个物理资源PRSC1、PRSC2和PRSC3中的每一个。如上所述,多个功能专用高速缓存PFDC1、PFDC2和PFDC3可以与较低级别的高速缓存组CG_L1相对应。PCIe设备800还可以包括高速缓存管理器CMNG和较高级别的高速缓存组CL_L2。如上所述,较高级别的高速缓存组CG_L2可以包括多个灵活页组高速缓存和共享高速缓存。
图28是示出了根据示例实施例的虚拟化系统的框图。
参考图28,虚拟化系统1000可以包括片上系统(SoC)、存储器件1130、显示设备(LCD)1152、触摸面板1154、存储设备1170、电源管理集成电路(PMIC)1200等。SoC可以包括处理器(CPU)1110、存储器管理单元(MMC)1115、DRAM控制器1120、性能控制器(PFMC)1140、用户接口控制器(UI控制器)1150、存储器接口1160和具有直接存储器访问功能的直接存储器访问设备(DMAIP)1180、系统互连器1190、电源管理单元(PMU)1144、时钟管理单元(CMU)1146等。应当理解,虚拟化系统1000的组件不限于图28中所示的组件。例如,虚拟化系统1000还可以包括用于处理图像数据的硬件编解码器、安全块等。
处理器1110为虚拟化系统1000执行软件(例如,应用程序、操作系统(OS)和设备驱动器)。处理器1110可以执行可以被加载到存储器件1130中的操作系统(OS)。处理器1110可以执行要在操作系统(OS)上驱动的各种应用程序。处理器1110可以被提供为同构多核处理器或异构多核处理器。多核处理器是包括至少两个可独立地驱动的处理器的计算组件(在下文中简称“核”或“处理器核”)。每个核可以独立地读取并执行程序指令。
DRAM控制器1120提供存储器件1130和片上系统(SoC)之间的接口。DRAM控制器1120可以根据处理器1110或另一知识产权(IP)块的请求来访问存储器件1130。
存储器管理单元(或内存管理电路)1115可以管理处理器1110对存储器件1130的核心访问以及直接存储器访问设备1180对存储器件1130的直接访问。
在引导操作期间,可以将操作系统(OS)或基础应用程序加载到存储器件1130中。例如,在虚拟化系统1000的引导期间,可以基于引导顺序将存储在存储设备1170中的管理程序HPVS和多个客户操作系统GOS加载到存储器件1130中。之后,可以将与多个客户操作系统GOS相对应的应用APP加载到存储器件1130中。
性能控制器1140可以根据从操作系统(OS)的内核提供的控制请求来调整片上系统(SoC)的操作参数。例如,性能控制器1140可以调整动态电压和频率缩放(DVFS)的水平以增强片上系统(SoC)的性能。
用户界面控制器1150控制来自用户界面设备的用户输入和输出。例如,用户界面控制器1150可以根据处理器1110的控制来显示用于将数据输入到LCD 1152的键盘屏幕。备选地,用户界面控制器1150可以控制LCD 1152以显示用户请求的数据。用户界面控制器1150可以将从诸如触摸面板1154等用户输入装置提供的数据解码为用户输入数据。
存储器接口1160根据处理器1110的请求来访问存储设备1170。例如,存储器接口1160提供片上系统(SoC)和存储设备1170之间的接口。例如,由处理器1110处理的数据通过存储器接口1160存储在存储设备1170中。备选地,可以通过存储器接口1160将存储在存储设备1170中的数据提供给处理器1110。
存储设备1170作为虚拟化系统1000的存储介质来提供。存储设备1170可以存储应用程序、OS图像和各种类型的数据。存储设备1170可以作为存储卡(例如,MMC、eMMC、SD、MicroSD等)来提供。存储设备1170可以包括具有高容量存储能力的NAND型闪存。备选地,存储设备1170可以包括诸如PRAM、MRAM、ReRAM和FRAM的下一代非易失性存储器或NOR型闪存。
直接存储器访问设备1180可以作为单独的知识产权(IP)组件来提供,以提高多媒体或多媒体数据的处理速度。例如,直接存储器访问设备1180可以作为知识产权(IP)组件来提供,以增强文本、音频、静止图像、动画、视频、二维数据或三维数据的处理性能。
系统互连器1190可以是系统总线以在片上系统(SoC)内提供片上网络。系统互连器1190可以包括例如数据总线、地址总线和控制总线。数据总线是数据发送路径。还可以提供到存储器件1130或存储设备1170的存储器访问路径。地址总线提供了知识产权(IP)之间的地址交换路径。控制总线提供了沿其在知识产权(IP)之间传输控制信号的路径。然而,系统互连器1190的配置不限于以上描述,并且系统互连器1190还可以包括用于有效管理的仲裁装置。
根据示例实施例,如上面参考图1至图27所描述的,直接存储器访问设备1180可以包括地址转换高速缓存ATC。
如上所述,根据示例实施例的地址转换高速缓存可以通过将页大小动态地分配给多个灵活页组高速缓存并基于所分配的页大小来存储每个页大小的转换条目来有效率地利用高速缓存存储器资源,并减小地址映射信息的搜索时间。
示例实施例可以应用于具有直接存储器访问功能的任何电子设备和系统。例如,本发明构思可以应用于以下系统:例如,存储卡、固态驱动器(SSD)、嵌入式多媒体卡(eMMC)、通用闪存(UFS)、移动电话、智能电话、个人数字助理(PDA)、便携式多媒体播放器(PMP)、数码相机、摄像机、个人计算机(PC)、服务器计算机、工作站、膝上型计算机、数字电视、机顶盒、便携式游戏机、导航系统、可穿戴设备、物联网(IoT)设备、万物互联(IoE)设备、电子书、虚拟现实(VR)设备、增强现实(AR)设备、车辆驾驶系统、服务器系统等。
前述内容是对示例实施例的说明,而不应被解释为对其的限制。尽管已经描述了一些示例实施例,但本领域技术人员将容易地理解,在本质上不脱离本发明构思的情况下,可以在示例实施例中进行许多修改。
Claims (20)
1.一种地址转换高速缓存ATC,被配置为存储对虚拟地址和存储器件的物理地址之间的映射信息加以指示的转换条目,所述ATC包括:
多个灵活页组高速缓存,每个灵活页组高速缓存被配置为存储与分配给该灵活页组高速缓存的页大小相对应的转换条目;
共享高速缓存,被配置为无论页大小如何,都存储没有存储在所述多个灵活页组高速缓存中的转换条目;以及
高速缓存管理器,被配置为向每个灵活页组高速缓存分配页大小、管理与分配给所述多个灵活页组高速缓存的页大小有关的高速缓存页信息、并基于所述高速缓存页信息来控制所述多个灵活页组高速缓存和所述共享高速缓存。
2.根据权利要求1所述的ATC,其中,所述高速缓存管理器被配置为使得当所述高速缓存管理器接收到与和分配给所述多个灵活页组高速缓存的页大小之一相同的页大小相对应的输入转换条目时,所述高速缓存管理器将所述输入转换条目存储在被分配了与所述输入转换条目相对应的页大小的灵活页组高速缓存中。
3.根据权利要求1所述的ATC,其中,所述高速缓存管理器被进一步配置为使得当所述高速缓存管理器接收到与和分配给所述多个灵活页组高速缓存的页大小不同的新页大小相对应的输入转换条目,并且在所述多个灵活页组高速缓存之中存在未被分配页大小的空的灵活页组高速缓存时,所述高速缓存管理器将所述新页大小分配给所述空的灵活页组高速缓存,并将所述输入转换条目存储在被分配了所述新页大小的所述空的灵活页组高速缓存中。
4.根据权利要求1所述的ATC,其中,所述高速缓存管理器被配置为使得当所述高速缓存管理器接收到与和分配给所述多个灵活页组高速缓存的页大小不同的新页大小相对应的输入转换条目,并且不存在未被分配页大小的空的灵活页组高速缓存时,所述高速缓存管理器将所述输入转换条目存储在所述共享高速缓存中。
5.根据权利要求1所述的ATC,其中,所述高速缓存管理器被配置为在所述共享高速缓存中存储从所述多个灵活页组高速缓存逐出的转换条目。
6.根据权利要求1所述的ATC,其中,所述多个灵活页组高速缓存用多个集合关联高速缓存实现,并且所述共享高速缓存用全关联高速缓存实现。
7.根据权利要求6所述的ATC,其中,所述多个集合关联高速缓存均包括相同数量的集合。
8.根据权利要求7所述的ATC,其中,每个集合关联高速缓存中的每个转换条目包括标签,并且存储在每个集合关联高速缓存中的每个标签的位数随着分配给该集合关联高速缓存的页大小的增加而减小。
9.根据权利要求6所述的ATC,其中,所述高速缓存管理器被配置为使得对于输入到所述ATC的每个虚拟地址,当所述高速缓存管理器搜索映射到输入的虚拟地址的物理地址时,所述高速缓存管理器搜索所述多个集合关联高速缓存和所述全关联高速缓存中的全部。
10.根据权利要求9所述的ATC,其中,所述高速缓存管理器被配置为基于所述高速缓存页信息从所述输入的虚拟地址中提取与分配给所述多个集合关联高速缓存的页大小相对应的标签和索引,并将所述标签和所述索引分别提供给对应的集合关联高速缓存。
11.根据权利要求6所述的ATC,其中,所述高速缓存管理器被配置为使得当所述高速缓存管理器使与输入虚拟地址相对应的转换条目无效时,所述高速缓存管理器搜索所述多个集合关联高速缓存和所述全关联高速缓存中的全部。
12.根据权利要求1所述的ATC,还包括:
多个功能专用高速缓存,专用于多个功能,每个功能专用高速缓存被配置为存储与每个功能相关的转换条目。
13.根据权利要求12所述的ATC,其中,所述多个功能专用高速缓存与较低级别的高速缓存组相对应,并且所述多个灵活页组高速缓存和所述共享高速缓存与较高级别的高速缓存组相对应。
14.根据权利要求12所述的ATC,其中,所述高速缓存管理器被配置为使得当所述高速缓存管理器搜索映射到输入虚拟地址的物理地址时,所述高速缓存管理器搜索与所述输入虚拟地址中包括的功能标识符相对应的功能专用高速缓存,并且当在与所述功能标识符相对应的功能专用高速缓存中不存在与所述输入虚拟地址相对应的转换条目时,搜索所述多个灵活页组高速缓存和所述共享高速缓存中的全部。
15.根据权利要求12所述的ATC,其中,所述高速缓存管理器被配置为使得当所述高速缓存管理器使与输入虚拟地址相对应的转换条目无效时,所述高速缓存管理器搜索所述多个功能专用高速缓存、所述多个灵活页组高速缓存和所述共享高速缓存中的全部。
16.根据权利要求12所述的ATC,其中,所述高速缓存管理器被配置为在所述多个灵活页组高速缓存或所述共享高速缓存中存储从所述多个功能专用高速缓存中逐出的转换条目。
17.根据权利要求12所述的ATC,其中,所述多个功能专用高速缓存用多个全关联高速缓存实现。
18.根据权利要求12所述的ATC,其中,所述多个功能是根据外围组件互连快速PCIe标准的功能。
19.一种地址转换高速缓存ATC,被配置为存储对虚拟地址和存储器件的物理地址之间的映射信息加以指示的转换条目,所述ATC包括:
多个功能专用高速缓存,专用于多个功能并用多个全关联高速缓存实现,每个功能专用高速缓存被配置为存储与相应功能有关的转换条目;
多个灵活页组高速缓存,用多个集合关联高速缓存实现,每个灵活页组高速缓存被配置为存储与分配给该灵活页组高速缓存的页大小相对应且没有存储在所述多个功能专用高速缓存中的转换条目;
共享高速缓存,用全关联高速缓存实现,所述共享高速缓存被配置为无论页大小如何,都存储没有存储在所述多个功能专用高速缓存和所述多个灵活页组高速缓存中的转换条目;以及
高速缓存管理器,被配置为向每个灵活页组高速缓存分配页大小、管理与分配给所述多个灵活页组高速缓存的页大小有关的高速缓存页信息、并基于所述高速缓存页信息来控制所述多个灵活页组高速缓存和所述共享高速缓存。
20.一种系统,包括:
主机存储器件;
主机处理器;
直接存储器访问设备,被配置为对所述主机存储器件执行直接存储器访问,所述直接存储器访问设备包括地址转换高速缓存ATC,所述地址转换高速缓存ATC被配置为存储对所述主机处理器的虚拟地址和所述主机存储器件的物理地址之间的映射信息加以指示的转换条目;以及
存储器管理单元,被配置为管理所述主机处理器和所述直接存储器访问设备对所述主机存储器件的访问,
其中,所述ATC包括:
多个灵活页组高速缓存,每个灵活页组高速缓存被配置为存储与分配给该灵活页组高速缓存的页大小相对应的转换条目;
共享高速缓存,被配置为无论页大小如何,都存储没有存储在所述多个灵活页组高速缓存中的转换条目;以及
高速缓存管理器,被配置为向每个灵活页组高速缓存分配页大小、管理与分配给所述多个灵活页组高速缓存的页大小有关的高速缓存页信息、并基于所述高速缓存页信息来控制所述多个灵活页组高速缓存和所述共享高速缓存。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20210169763 | 2021-12-01 | ||
KR10-2021-0169763 | 2021-12-01 | ||
KR1020220063986A KR102544401B1 (ko) | 2021-12-01 | 2022-05-25 | 어드레스 트랜슬레이션 캐시 및 이를 포함하는 시스템 |
KR10-2022-0063986 | 2022-05-25 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116204452A true CN116204452A (zh) | 2023-06-02 |
Family
ID=83995130
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211452901.5A Pending CN116204452A (zh) | 2021-12-01 | 2022-11-18 | 地址转换高速缓存以及包括地址转换高速缓存的系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230169013A1 (zh) |
EP (1) | EP4191420A1 (zh) |
CN (1) | CN116204452A (zh) |
TW (1) | TW202324107A (zh) |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5479627A (en) * | 1993-09-08 | 1995-12-26 | Sun Microsystems, Inc. | Virtual address to physical address translation cache that supports multiple page sizes |
US7370174B2 (en) * | 2005-01-05 | 2008-05-06 | Intel Corporation | Method, system, and program for addressing pages of memory by an I/O device |
US7389402B2 (en) * | 2005-06-07 | 2008-06-17 | Advanced Micro Devices, Inc. | Microprocessor including a configurable translation lookaside buffer |
GB2565069B (en) * | 2017-07-31 | 2021-01-06 | Advanced Risc Mach Ltd | Address translation cache |
US10372621B2 (en) * | 2018-01-05 | 2019-08-06 | Intel Corporation | Mechanism to support variable size page translations |
CN112631961B (zh) * | 2019-09-24 | 2024-06-11 | 阿里巴巴集团控股有限公司 | 一种内存管理单元、地址转译方法以及处理器 |
US11829298B2 (en) * | 2020-02-28 | 2023-11-28 | Apple Inc. | On-demand memory allocation |
KR20220063986A (ko) | 2020-11-11 | 2022-05-18 | 아도바이오 주식회사 | 레이저 두피문신 방법 |
-
2022
- 2022-10-13 US US17/965,700 patent/US20230169013A1/en active Pending
- 2022-10-24 EP EP22203192.4A patent/EP4191420A1/en active Pending
- 2022-10-27 TW TW111140754A patent/TW202324107A/zh unknown
- 2022-11-18 CN CN202211452901.5A patent/CN116204452A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4191420A1 (en) | 2023-06-07 |
TW202324107A (zh) | 2023-06-16 |
US20230169013A1 (en) | 2023-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5911985B2 (ja) | ローカル物理メモリとリモート物理メモリとの間で共有されるバーチャルメモリのためのハードウェアサポートの提供 | |
CN102483719B (zh) | 基于块的非透明高速缓存 | |
US8412907B1 (en) | System, method and computer program product for application-level cache-mapping awareness and reallocation | |
US11194735B2 (en) | Technologies for flexible virtual function queue assignment | |
JPH11167524A (ja) | コンピュータ・システム | |
CN113039531B (zh) | 用于分配缓存资源的方法、系统和存储介质 | |
US7721047B2 (en) | System, method and computer program product for application-level cache-mapping awareness and reallocation requests | |
CN117743205A (zh) | 用dram作为可按字节寻址存储器的缓存的方法和装置 | |
TWI785320B (zh) | 裝置內標記資料移動系統、資訊處置系統及用於提供裝置內標記資料移動之方法 | |
US10866895B2 (en) | Steering tag support in virtualized environments | |
KR102544401B1 (ko) | 어드레스 트랜슬레이션 캐시 및 이를 포함하는 시스템 | |
KR20230162100A (ko) | 계층형 메모리 관리를 오프로드하기 위한 방법들 및 장치들 | |
EP4191420A1 (en) | Address translation cache and system including the same | |
CN116383101A (zh) | 内存访问方法、内存管理单元、芯片、设备和存储介质 | |
US10936219B2 (en) | Controller-based inter-device notational data movement system | |
US11281612B2 (en) | Switch-based inter-device notational data movement system | |
Divya | An Efficient Virtual Memory using Graceful Code | |
CN114258534A (zh) | 阶层式存储器系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |