CN106537361A - 用于通过组和通路将缓存灵活划分成组件缓存的方法和装置 - Google Patents

用于通过组和通路将缓存灵活划分成组件缓存的方法和装置 Download PDF

Info

Publication number
CN106537361A
CN106537361A CN201580038378.3A CN201580038378A CN106537361A CN 106537361 A CN106537361 A CN 106537361A CN 201580038378 A CN201580038378 A CN 201580038378A CN 106537361 A CN106537361 A CN 106537361A
Authority
CN
China
Prior art keywords
component
caching
system cache
group
configuration table
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.)
Granted
Application number
CN201580038378.3A
Other languages
English (en)
Other versions
CN106537361B (zh
Inventor
S·帕拉查拉
M·卡恩
A·阿尔蒂耶里
K·邦霍尔
V·沙马蒂
P·肖拉西亚
R·三库拉特里
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN106537361A publication Critical patent/CN106537361A/zh
Application granted granted Critical
Publication of CN106537361B publication Critical patent/CN106537361B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • 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
    • 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/12Replacement control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/601Reconfiguration of cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6042Allocation of cache space to multiple users or processors
    • G06F2212/6046Using a specific cache allocation policy other than replacement policy
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

一些方面包括用于通过组和通路将系统缓存划分成组件缓存的计算设备、系统和方法。一种系统缓存内存控制器可以管理这些组件缓存,并管理针对这些组件缓存的访问。该系统缓存内存控制器可以接收指定组件缓存标识符的系统缓存访问请求,将该组件缓存标识符与组件缓存配置表中同这些组件缓存标识符的特征相关的记录进行匹配。这些组件缓存特征可以包括组转变特征、组偏移特征和目标通路,它们可以规定该组件缓存在系统缓存中的位置。该系统缓存内存控制器还可以在系统缓存访问请求中接收针对系统缓存的物理地址,确定用于组件缓存的索引模式,以及转换用于该组件缓存的物理地址。

Description

用于通过组和通路将缓存灵活划分成组件缓存的方法和装置
相关申请
本申请与同时提交的、标题为“Method And Apparatus For A Shared CacheWith Dynamic Partitioning”的美国专利申请No.14/334,010相关,故以引用方式将其全部内容明确地并入本文。
背景技术
缓存分区以服务计算系统中的多个客户端进程(“客户端”)具有一些利益。分区大小可以进行变化,以匹配客户端的性能需求。客户端体验稳健的性能,因为其专用缓存中的数据不会由于其他客户端的访问而遭到驱逐。可以关闭空闲分区以减少功耗。但是,由于完成当前缓存划分的方式所造成的限制,这些益处不如它们所希望的那么大。
当前缓存只能在缓存通路(way)上进行划分,这具有多种限制。缓存划分数量受到缓存通路数量的限制,向缓存划分添加关联性以减少缓存冲突减少了可能的缓存划分的最大数量。根据该关联性来确定最小通路分区大小。例如,具有8路相连的8路的8MB缓存的最小分区是1MB。此外,更小的缓存分区则由于碎片化而导致缓存空间的丢失。使用同一个例子,将512KB的数据存储在最小的1MB缓存分区中将导致该缓存分区中512KB的空间未使用。根据关联性来确定最小通路分区电源崩溃粒度。在相同的例子中,可能发生电源崩溃的最小粒度是1MB缓存分区。崩溃粒度的大小影响功率节省/使用,特别是当共享系统缓存替代多个专用内存时,其中所述多个专用内存可能独立地发生电源崩溃。
在移动片上系统(SoC)计算系统中面临的另一个问题是子系统所产生的不同访问模式。例如,像视频和图形之类的多媒体子系统具有较长的访问时间,并受益于较长的缓存线,而来自于应用中央处理单元(CPU)的访问是较随机的,并对于时延是敏感的,因此受益于较小的缓存线和较高的关联性。并不是所有的潜在访问模式都能与依赖于通路缓存分区的当前缓存分区进行更好地工作。传统的缓存分区为所有应用和子系统提供一个大小的缓存。该缓存分区的大小可能使某些访问模式比其他模式更有利。另一个例子是在图像处理引擎和显示引擎之间看到的生产者对消费者访问模式,其可以受益于先进先出(FIFO)替换策略。但是,保持这些引擎之间的转换数据的缓存可能使该应用程序使用低效的替换策略。
发明内容
各个方面的方法和装置提供用于对系统缓存进行划分的电路和方法,其可以包括:加载被配置为存储多个组件缓存标识符的组件缓存配置表,其中,所述多个组件缓存标识符与组转变特征(set shift trait)、组偏移特征和目标通路特征相关,所述组转变特征被配置为指示系统缓存中的组群的数量,所述组偏移特征被配置为指示一个组件缓存所位于的组群,所述目标通路特征被配置为指示该组件缓存所位于的一个或多个通路,其中,所述组转变特征大于零指示通过多个组群划分的组件缓存。方法还包括:从客户端接收包括组件缓存标识符的系统缓存访问请求;从所述组件缓存配置表中,获取该组件缓存配置表中与所述组件缓存标识符相关的组转变特征、组偏移特征和目标通路特征;以及将所述系统缓存位置划分到由该组转变特征、组偏移特征和目标通路特征来限定的组件缓存中。
在一个方面,从客户端接收包括组件缓存标识符的系统缓存访问请求可以包括:接收系统缓存的物理地址和定制索引(custom index)。一个方面方法还可以包括:从所述组件缓存配置表中,获取该组件缓存配置表中与所述组件缓存标识符相关的索引模式;判断该索引模式指示物理索引化还是定制索引化;将系统缓存的物理地址转换成所述组件缓存的物理地址;以及访问所述组件缓存的物理地址,以从所述组件缓存的物理地址读取,或者写入到所述组件缓存的物理地址。在一个方面,将系统缓存的物理地址转换成所述组件缓存的物理地址可以包括:对所述系统缓存的物理地址的组索引的第一集合的位与所述系统缓存的物理地址的标签进行组合,其中,通过所述组转变特征的值来确定所述组索引的第一集合的位的数量;使用所述组偏移特征的值来替代所述组索引的第一集合的位;以及当确定所述索引模式指示定制索引化时,使用定制索引来替代所述组索引的第二集合的位。
在一个方面,从客户端接收包括所述组件缓存标识符的系统缓存访问请求可以包括:接收所述组件缓存的一个或多个特征;更新所述组件缓存配置表中与同该组件缓存标识符相关的所接收的一个或多个特征相对应的一个或多个特征。
一个方面方法还可以包括:判断在所述组件缓存配置表中是否存在所述组件缓存标识符;以及响应于确定在所述组件缓存配置表中不存在所述组件缓存标识符,在所述组件缓存配置表中生成针对所述组件缓存标识符的记录。
一个方面方法还可以包括:在计算设备的启动时间,加载所述组件缓存配置表;以及将所述组转变特征、所述组偏移特征和所述目标通路特征的所有可能组合包括在所加载的组件缓存配置表中,其中,每一个组合与不同的组件缓存标识符相关。
一个方面方法还可以包括:在运行时静态或者动态地,根据每一个组件缓存的所述目标通路特征,对每一个组件缓存的关联性进行定制;以及根据每一个组件缓存的替换策略特征,对每一个组件缓存的替换策略进行定制。一个方面方法还可以包括:对每一个组件缓存的缓存线大小进行定制。
一个方面包括一种计算设备,该计算设备具有彼此之间通信连接的处理器、系统缓存内存和系统缓存控制器,其中,所述系统缓存控制器被配置为执行上面所描述的方面方法中的一个或多个的操作。
一个方面包括一种其上存储有处理器可执行软件指令的非临时性处理器可读介质,所述处理器可执行软件指令使处理器和系统缓存控制器执行上面所描述的方面方法中的一个或多个的操作
一个方面包括一种计算设备,该计算设备具有用于执行上面所描述的方面方法中的一个或多个的功能的单元。
附图说明
被并入本文并且构成本说明书一部分的附图描绘了本发明的示例性方面,并且连同上面给出的概括描述以及下面给出的详细描述一起来解释本发明的特征。
图1是描绘适合于实现一个方面的计算设备的组件框图。
图2是示出适合于实现一个方面的示例性多核处理器的组件框图。
图3是示出根据一个方面,适合于通过组和通路将缓存内存划分成一些组件缓存的计算设备的组件框图。
图4是根据一个方面,示出通过组和通路对示例性缓存内存进行可变地划分,以实现组件缓存的示意图。
图5是根据一个方面,示出一种示例性组件缓存配置表的示意图。
图6是根据一个方面,示出通过组和通路将示例性系统缓存内存可变地划分成组件缓存的示意图。
图7是根据一个方面,示出组件缓存的客户端访问的例子的原理和过程流程图。
图8是根据一个方面,示出用于访问组件缓存的地址转换例子的原理和过程流程图。
图9是根据一个方面,示出使用物理地址来访问组件缓存的地址转换例子的原理和过程流程图。
图10是根据一个方面,示出使用结合定制索引的物理地址来访问组件缓存的地址转换例子的原理和过程流程图。
图11是适合于实现一个方面的示例性组件缓存激活/停用控制命令的组件框图。
图12是适合于实现一个方面的示例性组件缓存激活/停用控制状态的组件框图。
图13是根据一个方面,示出示例性组件缓存活动通路表的示意图。
图14是根据一个方面,示出示例性组件缓存预订表的示意图。
图15是根据一个方面,示出一种示例性系统缓存内存的示意图,该系统缓存内存具有被分配给各个组件缓存的预订的缓存通路。
图16是根据一个方面,示出一种示例性系统缓存内存的示意图,该系统缓存内存具有被分配给组件缓存的预订和奖励的缓存通路。
图17是根据一个方面,示出一种示例性系统缓存内存的示意图,该系统缓存内存具有被分配给各个组件缓存的预订的缓存通路。
图18是根据一个方面,示出一种示例性系统缓存内存的示意图,该系统缓存内存具有被分配给组件缓存的预订和奖励的缓存通路。
图19是示出用于访问系统缓存内存的组件缓存的一个方面方法的过程流程图,其中该系统缓存内存通过组和通路被划分成组件缓存。
图20是示出用于访问系统缓存内存的组件缓存的一个方面方法的过程流程图,其中该系统缓存内存通过组和通路被划分成组件缓存。
图21是示出用于对缓存内存地址进行转换,以访问系统缓存内存的组件缓存的一个方面方法的过程流程图,其中该系统缓存内存通过组和通路被划分成组件缓存。
图22是示出用于动态地激活系统缓存内存的组件缓存的一个方面方法的过程流程图,其中该系统缓存内存通过组和通路被划分成组件缓存。
图23是示出用于动态地停用系统缓存内存的组件缓存的一个方面方法的过程流程图,其中该系统缓存内存通过组和通路被划分成组件缓存。
图24是示出用于动态地重新调整系统缓存内存的组件缓存大小的一个方面方法的过程流程图,其中该系统缓存内存通过组和通路被划分成组件缓存。
图25是示出适合于结合各个方面使用的示例性移动设备的组件框图。
图26是示出适合于结合各个方面使用的示例性移动设备的组件框图。
具体实施方式
现在参照附图来详细地描述各个方面。在可以的地方,贯穿附图使用相同的附图标记来指代相同或者类似的部件。对于特定示例和实现的引用只是用于说明目的,而不是旨在限制本发明或者权利要求的保护范围。
本文可互换地使用术语“计算设备”和“移动设备”来指代下面中的任何一项或者全部:蜂窝电话、智能电话、个人或移动多媒体播放器、个人数据助理(PDA)、膝上型计算机、平板计算机、智能本、超级本、掌上计算机、无线电子邮件接收机、具备多媒体互联网功能的蜂窝电话、无线游戏控制器、包括内存和可编程处理器的类似个人电子设备。虽然各个方面对于诸如智能电话之类的移动计算设备(其中移动计算设备具有有限的能量资源)特别有用,但这些方面通常也可用于实现多个内存设备和有限的能量预算的任何电子设备,其中,减少内存设备的功耗可以延长移动计算设备的电池工作时间。
本文使用术语“片上系统”(SoC)指代一组相互连接的电子电路,其通常包括但不限于:硬件内核、内存和通信接口。硬件内核可以包括各种不同类型的处理器,例如,通用处理器、中央处理单元(CPU)、数字信号处理器(DSP)、图形处理单元(GPU)、加速处理单元(APU)、辅助处理器、单核处理器和多核处理器。硬件内核还可以体现其它硬件和硬件组合,例如,现场可编程门阵列(FPGA)、专用集成电路(ASCI)、其它可编程逻辑器件、分离门逻辑器件、晶体管逻辑器件、性能监测硬件、看门狗硬件和时间基准。可以对集成电路进行配置,使得集成电路的部件位于单片的半导体材料(例如,硅)上。
在一个方面,用于对缓存进行划分的方法实现了跨缓存通路和跨缓存组进行划分来生成组件缓存,与用于生成组件缓存的传统方法所可实现的相比,本公开内容的组件缓存较小。组件缓存配置表可以存储各个组件缓存的、规定该组件缓存的特征的参数,其包括:用于组的总数或者大小的参数、该组件缓存占据的组的位置、该组件缓存占据的通路、该组件缓存是使用定制索引(例如,其根据虚拟地址来导出)来访问还是根据物理地址(索引模式)导出的组索引来访问、以及用于组件缓存的替换策略。组件缓存配置表可以随着客户端请求缓存访问进行动态地填充,或者组件缓存配置表可以在启动时间进行填充,其规定组件缓存的数量,并在运行时保持静态。给予每一个组件缓存一个组件缓存标识符,其中该组件缓存标识符与组件缓存配置表中用于该组件缓存标识符的一组参数相对应。
为了访问经过通路和组划分的组件缓存,客户端可以通过互连到系统缓存(其被划分成一些组件缓存)的总线来请求访问。访问请求可以包括系统内存中的物理地址和组件缓存标识符。系统缓存控制器可以在组件缓存配置表中查找用于该组件缓存标识符的参数。可以从组件缓存配置表中读取用于规定以下各项的参数:系统缓存的组的数量或大小、该组件缓存在系统缓存中占据的组的位置、以及用于该组件缓存的索引模式。系统缓存控制器可以计算用于系统缓存访问的组索引和标签。该索引模式可以判断是使用物理地址还是定制索引来计算在系统缓存中的位置。在任一情况下,可以直接根据物理地址的最低有效位的数量或者根据定制索引来导出偏移。可以对用于指示组的数量或大小的参数所确定的物理地址的中间部分中的一些位进行丢弃,所丢弃的位可以使用指示该组的位置(该组件缓存所占据的位置)以确定组索引的参数来替代。可以对物理地址的新形成的中间部分的位进行重新排序。标签可以包括物理地址的最高有效位附加所丢弃位。
系统缓存控制器可以在运行时例示组件缓存(系统缓存的划分)。缓存内存控制器可以基于设备的客户端的任务请求,对组件缓存进行激活和停用。客户端可以为了任务而请求组件缓存的激活,组件缓存激活/停用控制命令寄存器可以向系统缓存控制器发送用于组件缓存激活的参数。存储在寄存器中的这些参数可以包括:用于触发该操作的位、对该组件缓存进行激活和停用的操作码、可以用于标识该组件缓存的配置的组件缓存标识符、指示在该组件缓存中使用的目标通路的目标通路参数、以及向这些目标通路应用操作信息的位。
组件缓存的激活可以导致该组件缓存的预订。该激活可以指示被指定由客户端用于任务的缓存通路。系统缓存控制器可以预订系统缓存中与该组件缓存相对应的线,特别是该组件缓存的指定的通路,以便由请求方客户端进行使用。该预订可以导致缓存控制器设置预订位,以说明缓存的一部分被预订用于激活该组件缓存的主操作者。当主操作者发布目标针对该组件缓存的写操作时,可以写入到该组件缓存的缓存线。对组件缓存进行预订避免与想要向该组件缓存的预订线写入数据的其它客户端发生冲突。组件缓存活动通路表可以用于指示活动的缓存通路,并用于通过尝试向相同占据的组件缓存分配线来避免客户端冲突。组件缓存激活/停用控制状态寄存器可以指示任务是否完成。当客户端的任务需要更多或者更少的缓存内存时,可以对组件缓存的预订空间(其部分地通过目标缓存通路来指示)进行动态改变,来支持该客户端的任务。在完成该任务时,缓存内存控制器可以使组件缓存停用,这使得子缓存的先前预订部分可用于任何客户端进行使用。组件缓存可以占据系统缓存的连续部分,或者占据系统缓存的非连续部分。
图1示出了适合于结合各个方面使用的一种系统,其包括与远程计算设备50进行通信的计算设备10。计算设备10可以包括具有处理器14、内存16、通信接口18和存储接口20的SoC 12。该计算设备还可以包括诸如有线或无线调制解调器之类的通信组件22、存储组件24、用于建立到无线网络30的无线连接32的天线26、和/或用于将有线连接44连接到互联网40的网络接口28。处理器14可以包括各种硬件内核中的任何一种,以及多个处理器内核。SoC 12可以包括一个或多个处理器14。计算设备10可以包括一个以上的SoC 12,从而增加处理器14和处理器内核的数量。计算设备10还可以包括与SoC 12不相关联的处理器内核14。各个处理器14可以是如下面参照图2所描述的多核处理器。处理器14中的每一个可以被配置为用于特定目的,其可以与计算设备10的其它处理器14相同或者不同。可以将相同或不同配置的处理器14和处理器内核中的一个或多个组合在一起,作为如下面参照图3所描述的计算设备10的一个或多个子系统的一部分。
SoC 12的内存16可以是被配置为存储由处理器14进行访问的数据和处理器可执行代码的易失性或者非易失性内存。在一个方面,内存16可以被配置为至少临时地存储数据结构,例如,用于管理缓存内存的组件缓存的表,其中该缓存内存通过组和通路进行了划分,如下面参照图5、图13和图14所描述的。如下面所进一步详细讨论的,处理器内核中的每一个可以访问缓存内存的各个组件缓存。
计算设备10和/或SoC 12可以包括被配置为用于各种目的的一个或多个内存16。在一个方面,一个或多个内存16可以被配置为专用于以下面的方式来保存用于存储组件缓存信息的数据结构:使该数据结构信息能被访问以便管理处理器14的组件缓存访问请求。当存储这些数据结构的内存16是非易失性的时,即使在计算设备10的电源关闭之后,内存16也可以保持这些数据结构的信息。当电源被再次打开,计算设备10重新启动时,计算设备10可获得非易失性内存16中存储的这些数据结构的信息。
通信接口18、通信组件22、天线26和/或网络接口28可以一致地工作,使计算设备10能够经由无线连接32通过无线网络30和/或有线网络44,与远程计算设备50进行通信。可以使用各种无线通信技术(例如,其包括用于无线通信的射频频谱)来实现无线网络30,以向计算设备10提供到互联网40的连接,其中通过互联网40,其可以与远程计算设备50交换数据。
存储接口20和存储组件24可以一致地工作,以允许计算设备10将数据存储在非易失性存储介质上。可以非常类似于内存16的方式,对存储组件24进行配置,其中,存储组件24可以存储数据结构,使得一个或多个处理器14可以访问该数据结构信息。即使在计算设备10的电源被关闭之后,存储组件24(其是非易失性的)也可以保持数据结构信息。当电源被再次打开,计算设备10重新启动时,计算设备10可获得存储组件24上存储的这些数据结构信息。存储接口20可以控制针对存储设备24的访问,以及允许处理器14从存储设备24读取数据和向存储设备24写入数据。
可以对计算设备10的组件中的一些或全部进行不同地排列和/或组合,同时仍然服务必要的功能。此外,计算设备10并不限于这些组件中的每一个,在计算设备10的各个配置中可以包括每一个组件的多个实例。
图2示出了适合于实现一个方面的多核处理器14。多核处理器14可以具有多个等同的处理器内核200、201、202、203。处理器内核200、201、202、203可以是等同的,其在于:单一处理器14的处理器内核200、201、202、203可以被配置为用于相同目的,且具有相同或类似的性能特性。例如,处理器14可以是通用处理器,处理器内核200、201、202、203可以是等同的通用处理器内核。替代地,处理器14可以是图形处理单元或者数字信号处理器,处理器内核200、201、202、203可以分别是等同的图形处理器内核或者数字信号处理器内核。通过制造过程和材料的变化,处理器内核200、201、202、203的性能特性可以在同一多核处理器14中或者使用相同设计的处理器内核的多核处理器14中,在处理器内核之间彼此不同。在图2所示出的例子中,多核处理器14包括四个处理器内核200、201、202、203(即,处理器内核0、处理器内核1、处理器内核2和处理器内核3)。为了便于解释起见,本文的例子可以指代图2中所示出的四个处理器内核200、201、202、203。但是,应当注意的是,图2中所示出以及在本文中所描述的四个处理器内核200、201、202、203仅仅只是提供成例子,而不意味着是限制性的。与本文所示出和描述的四个处理器内核200、201、202、203相比,计算设备10、SoC12或者多核处理器14可以单独地或者组合地包括更少或者更多的处理器内核。
图3示出了被配置为通过组和通路将缓存内存划分成一些组件缓存的计算设备。SoC 12可以包括如上所述的各种组件。可以使用一些这种组件和另外的组件来实现组件缓存。例如,被配置为实现组件缓存的SoC 12可以包括系统集线器300、系统缓存302、系统缓存控制器304、CPU簇306、协议转换器308、GPU 310、调制解调器DSP 312、应用DSP 314、内存接口316、照相机子系统318、视频子系统320、显示子系统322、片上系统网络(NoC)324、内存控制器326和随机存取内存(RAM)328。系统集线器300可以是管理各个处理器308、210、312、314对各个内存的访问的SoC 12的组件。在一个方面,系统集线器300可以管理针对SoC 12的系统缓存302以及针对RAM 328的访问。可以访问各种内存的处理器中的一些可以包括在CPU簇306和各个子系统(例如,照相机、视频和显示子系统318、320、322)中,这些处理器还可以包括诸如GPU 310、调制解调器DSP 312和应用DSP 314之类的其它专用处理器。
系统缓存302可以是用于替代或者补充与各个处理器和/或子系统相关联的缓存内存的SoC 12中的共享内存器件。系统缓存302可以对SoC 12的缓存内存资源进行集中,使得各个处理器和子系统可以访问系统缓存302以读取和写入被指定进行重复和/或快速访问的程序命令和数据。系统缓存302可以存储来自各个处理器和子系统的数据,以及来自计算设备的其它内存设备(例如,主内存、RAM 328和存储设备(如,硬盘驱动器))的数据。在一个方面,在由于从系统缓存302请求的项无法被定位到而发生缓存未命中的情况下,这些内存和存储设备可以对系统缓存302进行备份。在一个方面,系统缓存302可以使用成用于各个处理器和子系统的暂存内存。与不使用系统缓存302的类似架构的SoC的本地缓存内存的组合相比,系统缓存302在存储空间和物理大小上较小。但是,如本文所进一步描述的系统缓存302的管理可以允许更大的能量节省以及SoC 12的等同或更佳性能速率,尽管系统缓存具有较小的存储空间和物理大小。
系统缓存控制器304可以管理各个处理器和子系统对系统缓存302的访问。系统缓存302的访问管理的一部分可以包括:通过通路和组,对系统缓存内存空间进行划分。通过通路和组对系统缓存内存空间进行划分可以导致:将系统缓存内存空间划分成系统缓存内存空间中的各个大小和位置的组件缓存。系统缓存控制器304可以维持这些组件缓存的记录,并将各种特征/特性/参数与每一个组件缓存进行相关,如本文所描述的。
系统缓存控制器304可以接收用于指定特定的组件缓存的系统缓存访问请求。系统缓存访问请求还可以包括这些系统缓存访问请求的组件缓存的特征。在一个方面,系统缓存控制器304可以单独地在组件缓存配置请求中,在相同或者不同的通信总线上,接收组件缓存的特征。组件缓存配置请求可以是独立信号,或者可以与系统缓存访问请求相关联。系统缓存控制器304可以将组件缓存配置请求接收成系统缓存访问请求的一个组成部分。为了便于解释起见,围绕将组件缓存特征接收成系统缓存访问请求的一部分来描述下面的例子,其并不意味着对系统缓存控制器304接收这些组件缓存特征的方式进行限制。应当理解的是,可以经由各种相关联的或者独立的信号,来接收组件缓存特征。
系统缓存控制器304可以使用所指定的组件缓存的信息和相关的特征,来控制针对该组件缓存和其相关记录的访问、更新和/或生成和预订。在一个方面,系统缓存控制器304可以基于来自系统缓存302的客户端的系统缓存访问请求,将系统缓存内存空间动态地划分成组件缓存。这些客户端可以包括SoC 12的各个处理器和子系统。
CPU簇306可以包括一些通用处理器和/或通用处理器内核的群组。CPU簇306可以经由系统缓存控制器304来访问系统缓存302。协议转换器308可以将CPU簇306和系统缓存控制器304之间的通信从CPU簇306和系统缓存控制器304中的一个的标准协议或专有协议转换成适合于另一个的协议,以便在它们之间实现互操作性。CPU簇306可以向系统缓存控制器304发送用于指定特定的组件缓存和/或所指定的组件缓存的特征的系统缓存访问请求。作为回应,系统缓存控制器可以更新和/或生成所指定的组件缓存的记录,允许或者拒绝针对所指定的组件缓存的访问,并向CPU簇306返回存储在所指定的组件缓存中的信息。
类似于CPU簇306,像GPU 310、调制解调器DSP 312和应用DSP 314的专用处理器可以经由系统缓存控制器304来访问系统缓存302。专用处理器310、312、314和系统缓存控制器304之间的通信可以由专用的单独内存接口316进行管理。在一个方面,内存接口316可以管理多个类似的或者不同的专用处理器310、312、314和系统缓存控制器304之间的通信。
像照相机子系统318、视频子系统320和显示子系统322的各个子系统可以类似地经由系统缓存控制器304和内存接口316来访问系统缓存302。NoC 324可以管理子系统318、320、322和系统集线器300以及SoC 12的其它部件之间的通信业务。
系统缓存控制器304还可以管理SoC 12的各个处理器和子系统对RAM 328的访问。虽然各个处理器和子系统可以经由内存控制器326来向RAM 328进行直接访问请求,但在某些实例中,系统缓存访问请求可以是针对于RAM 328的。在一个方面,当在所指定的组件缓存中没有发现从指定的组件缓存请求的信息时,系统缓存访问请求可能导致缓存未命中。结果,系统缓存控制器304可以将系统缓存访问请求指引到RAM 328,以获取没有在该组件缓存中发现的所请求的信息。在一个方面,针对于RAM 328的对该信息的请求首先被指引到内存控制器326,其中内存控制器326可以控制针对RAM 328的访问。针对于RAM 328的对该信息的请求可以由系统缓存控制器304来发送,可以将所获得的信息返回给系统缓存控制器304以便写入到组件缓存中,并将其从该组件缓存返回到进行这些系统缓存访问请求的组件。在一个方面,可以直接地或者经由系统缓存控制器304,将所获得的信息返回给进行系统缓存访问请求的组件,而无需写入到组件缓存中。
在一些方面,可以利用固件来实现和配置系统缓存控制器304,以执行这些方面方法的操作。在一些方面,系统缓存控制器304可以是可编程控制器,其中控制器可执行指令对该可编程控制器进行配置,以执行这些方面方法的操作。在一些方面,系统缓存控制器304可以通过固件和控制器可执行指令的组合来实现和配置,以执行这些方面方法的操作。
本文中对SoC 12和其各个组件的描述仅仅意味着是示例性的而非限制性的。可以对SoC 12的组件中的一些进行可变地配置、组合和分离。这些组件中的一些可以包括更大或更少的数量,以及这些组件可以位于SoC 12中并进行不同地连接,或者与SoC 12相分离。类似地,诸如其它内存、处理器、子系统、接口和控制器之类的众多其它部件可以包括在SoC12中,以及与系统缓存控制器304进行通信以便访问系统缓存302。
图4示出了通过组和通路将系统缓存内存进行可变地划分以考虑组件缓存。系统缓存400(例如,图3中所描述的系统缓存)可以被配置为包括多个通路402、404、406、408、410、412、414、416和N个数量的组418,其中N是正整数。知道的是,通过通路402-416对系统缓存400进行分割。在该例子中,系统缓存400包括八个通路402-416,通过八个通路402-416中的每一个来分割系统缓存400将导致具有八个分区的经划分的系统缓存400,每一个分区包括一个通路402-416和相应的通路402-416的所有N个组418。在一个方面,也可以使用通路402-416的群组,对系统缓存400进行划分。继续具有八个通路402-416的系统缓存400的例子,每一个分区可以包括通路402-416中的两个(其导致四个分区),或者包括通路402-416中的四个(其导致两个分区)。
为了生成组件缓存,可以通过N个数量的组的规定组合,对系统缓存400进行另外地划分。在一个方面,系统缓存控制器所使用的组件缓存的特征可以确定能将N个数量的组划分成多少组群。在一个方面,该特征可以称为组转变特征(set shift trait)。例如,不将系统缓存400划分成一些组群,因此,组转变特征可以是用于指示不划分为组群的值(例如,空值或者零)。在另一个例子中,可以将系统缓存420划分成两个组群422、424。系统缓存420是与系统缓存400相同的系统缓存,但系统缓存420示出了:当组转变特征是指示划分为两个组群422、424的值时的系统缓存400。对于系统缓存420来说,系统缓存控制器可以使用通过将系统缓存420划分为两个组群422、424所生成的额外组件缓存,来管理系统缓存内存空间的使用。这些组件缓存可以包括:通过通路划分和组群划分的任意组合所生成的系统缓存420的分区,如本文所进一步详细描述的。
类似地,系统缓存430可以与系统缓存400相同,除了系统缓存430示出:当组转变特征是指示划分为四个组群432、434、436、438的值时的系统缓存400。类似地,系统缓存440示出:当组转变特征是指示划分为八个组群442、444、446、448、450、452、454、456的值时的系统缓存400。在图4所示出的这些示例性系统缓存430和440中的每一个,系统缓存控制器可以使用通过将系统缓存430、440划分为四个组群432、434、436、438或者八个组群442-456所生成的额外组件缓存,来管理系统缓存内存空间的使用。这些例子中的组件缓存可以包括:通过通路划分和组群划分的任意组合所生成的系统缓存430、440的分区,如本文所进一步详细描述的。
可以使用各种形式的符号来指示组转变特征(例如,整数)。在一个方面,指示对系统缓存内存空间划分的组群的数量的组转变特征可以指示组群数量的增量改变。例如,组转变特征值的改变(以指示组群数量的下一个更高改变)可以指示对组群的数量进行增加、相乘、指数性增加或者通过某种其它函数进行增加的增量变化。对于图4中的例子而言,组群的数量是2的幂,其中该幂是组转变特征。这些组群在大小上是相等的,并且每一个组群的组数量也可以是2的幂。可以设想的是,组的数量可以是另一个数的幂,其需要对某种硬件进行差别化配置(如,除以非2的幂整数),以计算如下面所进一步描述的组索引。
在一个方面,系统缓存控制器所使用的组件缓存的一种特征可以确定该组件缓存位于组群422、424、432、434、436、438、442、444、446、448、450、452、454、456中的哪个。在一个方面,该特征可以称为组偏移特征(set offset trait)。可以使用各种形式的符号来指示组偏移特征。
继续本文所描述的示例性组群,所描述的组群的总数是14,其没有统计N个数量的组418。对于该例子而言,组偏移特征可以是三位二进制码,其中,当不实现组群时,不需要组偏移特征。当实现两个组群时,组群422、424分别与组偏移特征=000和100相关。当实现四个组群时,组群432、434、436、438可以分别与组偏移特征=000、010、100和110相关。类似地,当实现八个组群时,组群442-456可以分别与组偏移特征=000、001、010、011、100、101、110和111相关。
图5示出了系统缓存控制器可以用于管理各个组件缓存的特征的组件缓存配置表500。组件缓存配置表500可以包括组件缓存标识符字段502、有效性指示符特征字段504、组转变特征字段506、组偏移特征字段508、目标通路特征字段510、探测所有通路特征字段512、索引模式特征字段514、替换策略特征字段516和缓存线大小特征字段528。系统缓存的每一个组件缓存可以与一个单独的组件缓存标识符(如组件缓存标识符特征字段502中所示出的)相关。
系统缓存控制器可以在来自SoC上的客户端的系统缓存访问请求中,接收组件缓存标识符,系统缓存控制器可以使用该组件缓存标识符来匹配具有正确的组件缓存和其特征的系统缓存访问请求。在一个方面,当接收到在组件缓存配置表500中不存在的组件缓存标识符时,系统缓存控制器可以更新组件缓存配置表500,以包括所接收的组件缓存标识符。
在一个方面,所接收的组件缓存标识符可以存在于组件缓存配置表500中,但与该组件缓存标识符相关的其它组件缓存特征中的一个或多个与随所接收的组件缓存标识符一起接收的组件缓存特征不匹配。在该环境下,系统缓存控制器可以使用所接收的组件缓存特征,对组件缓存表500中与该组件缓存标识符相关的组件缓存特征进行更新。可以使用各种符号来对组件缓存标识符字段502中的组件缓存标识符的值进行符号化。
系统缓存的每一个组件缓存可以与一个有效性指示符相关,如有效性指示符特征字段504中所示,以及其可以用于指示组件缓存配置表500中针对相关组件缓存的有效条目。对于各种情形而言,可以将组件缓存的记录标记成有效或者无效,例如,使用与有效或无效条件相关的值或者标志(例如,“0”或“1”)。系统缓存控制器可以允许针对与有效性指示符特征字段504中的有效性标识符相关的组件缓存标识符的系统缓存访问请求。当接收到针对与有效性指示符特征字段504中的无效标识符相关的组件缓存标识符的系统缓存访问请求时,系统缓存控制器可以将该系统缓存访问请求视作为错误。
组件缓存配置表500中的组转变特征字段506可以用于指示如上所述的组转变特征。如上所述,组转变特征标识:针对与该相应的组转变值相关的每一个组件缓存,将系统缓存内存空间划分成的组群的数量。例如,针对指示仅仅两个组群划分的组转变特征,存在众多的由组和通路划分的各种组合来构成的组件缓存。例如,在图5中,行522包括组转变特征=1,其中在该例子中,其指示两个组群划分。行522表示组件缓存组和通路划分中的仅仅一个,其包括组偏移特征字段508中的一个值和目标通路特征字段510中的一个值。存在着组偏移特征字段508中的完全相同的值和与组转变特征字段506中的相同值相关的目标通路特征字段510里的其它值的众多其它组合。对于表示组转变特征字段506中的组转变特征=1所指示的两个组群划分中的另一个的组偏移特征字段508可能的其它值来说,可以有甚至更多的组合。类似的示例包括:针对组转变特征字段506中的其它可能值,不同的组件缓存的组和通路划分的更大数量的组合。在一个方面,可以在组件缓存配置表500中包括系统缓存的已知划分(即,整个缓存或者仅通路的缓存划分)。虽然由于已知划分并不包括系统缓存通过组的划分,因此组件缓存配置表500对于这些已知的划分来说是先前没有必要的,但可以在组件缓存配置表500中包括这些已知划分。当组转变特征字段506包括组转变特征=0或者空值时,可以在组件缓存配置表500中规定系统缓存的已知划分,如在行518和526中。这种组转变特征值可以指示:与其相关联的组件缓存没有通过组被分割。将组件缓存通过组进行分割可以与大于零的组转变特征值相关联。可以使用各种符号来对组件组转变特征字段506中的组转变特征的值进行符号化。
组件缓存配置表500中的组偏移特征字段508可以用于指示:指出该相关的组件缓存所位于的组群的组偏移特征。如上所述,组件缓存部分地由组群划分与通路划分组合而成。组偏移特征可以标识组群划分的数量,组偏移特征可以指示包含相关的组件缓存的该数量的组群划分中的特定组群。如上所述,每一个组群可以与将在组件缓存配置表500中的组偏移特征字段508里表示的特定组偏移特征值相关。具体而言,在一个方面,组转变特征和组偏移特征的组合可以规定包含该组件缓存的组群,这是由于对应于一个组转变特征值的组偏移特征值可能与对应于另一个组转变特征值的组偏移特征值相重叠。例如,每一个组转变特征可以包括组偏移特征=000,其可以与第一组群相关。这是由于:对于指示多个组群的每一个组转变特征值来说,存在至少第一组群。因此,对应于组转变特征=1的组偏移特征=000可以表示对应于另一个组转变特征值的组偏移特征=000的不同组群。还可以向各个可能的组群分配唯一的组偏移特征值。可以使用各种符号来对组件组偏移特征字段508中的组偏移特征的值进行符号化。
组件缓存配置表500中的目标通路特征字段510可以用于指示:指出相关的组件缓存所位于的通路组划分的目标通路特征。就像组群,通路群可以包括:组件缓存可以位于的系统缓存内存空间的通路。对于任何组件缓存来说,不管组转变特征或者组偏移特征如何,目标通路都可以指示系统缓存的单一或者连续通路的任意组合。组件缓存的通路群划分可以允许在运行时,静态地和动态地对该组件缓存的关联性进行定制。在组件缓存配置表500中,可以将目标通路值的所有组合与组转变特征和组偏移特征值的任意组合进行相关。组件缓存配置表500中的组转变特征、组偏移特征和目标通路的组合为系统缓存控制器规定所有的可能组件缓存。在一个方面,目标通路特征值可以通过一个位向量来表示,其中该向量中的每一个位表示系统缓存的一个单一通路。在组件缓存配置表500中,以十六进制来表示该位向量。返回到与行522有关的例子,在行522中表示的系统缓存与图4中的系统缓存420相同,具有八个通路和两个组群。在该例子中,目标通路特征字段510包含0xF0的值,其还可以表示成二进制位向量1111 0000。因此,在该例子中,该组件缓存可以位于通过“F”或者“1”值所指示的四个通路中,它们与图4中的系统缓存420的通路402、404、406和410相关。可以使用各种符号来对目标通路特征字段508中的目标通路的值进行符号化。
组件缓存配置表500中的探测所有通路特征字段512可以用于指示:为了访问该组件缓存,是否对该系统缓存的所有通路的标签都进行查询或者探测。当探测所有通路特征指示对系统缓存的所有通路都进行探测时,组件缓存的探测不受到目标通路值的限制。这可以是动态组件缓存中的情形,这能够改变其组群中的大小,即,改变其目标通路。因此,如果组件缓存在不同的时间增大或缩小,仍然可以在系统缓存中的相同组群里,找到不再是该组件缓存的一部分的通路中所存储的信息。当组件缓存是静态时,使得其不会改变该组件缓存所占据的通路群,探测所有通路特征字段512可以包含空值或者用于指示不针对相关的组件缓存启动探测所有通路特征的值。这可以通过使标签查找最小化来减少功耗,并比较系统缓存的所有通路之中的操作。
组件缓存配置表500中的索引模式特征字段514可以用于指示:是使用物理索引化模式(PI)下的物理地址,还是使用定制索引化模式(CI)下的定制索引,对相关的组件缓存进行索引。在一个方面,物理寻址可能导致不可预测的和有时过度的缓存冲突(取决于内存分配),因此可以使用定制索引化模式来访问组件缓存。可以使用任何形式的定制索引。在一个方面,定制索引可以包括虚拟地址索引,以便例如根据高级操作系统内存分配方案,来确保可预测的冲突未命中。另一个方面可以使用定制索引与虚拟地址最高有效位的哈希运算,以使冲突未命中减到最小。在物理索引化模式下,系统缓存控制器可以将系统缓存的物理地址接收成来自客户端的系统缓存访问请求的一部分,以及使用所接收的系统缓存的物理地址,以将其转换成系统缓存中的组件缓存的物理地址。在定制索引化模式下,系统缓存控制器可以将系统缓存的物理地址和定制索引接收成来自客户端的系统缓存访问请求的一部分,以及使用所接收的系统缓存的物理地址和所接收的定制索引,以将它们转换成系统缓存中的组件缓存的物理地址。本文将进一步描述用于将所接收的系统缓存的物理地址和/或所接收的定制索引转换成系统缓存中的组件缓存的物理地址的一个方面过程。
组件缓存配置表500中的替换策略特征字段516可以用于指示:用于在相关的组件缓存中存储的信息的替换策略。一些这种替换策略可以包括已知的替换策略,其包括:最近使用、最近最少使用、先进先出、后进先出和随机替换策略。其它已知和专有替换策略也可以用于各个组件缓存中存储的信息。可以根据替换策略特征字段516,为每一个组件缓存来定制替换策略。
组件缓存配置表500中的缓存线大小特征字段528可以用于指示:用于相关的组件缓存的缓存线的缺省或者定制大小。缺省缓存线大小可以是系统缓存内存的标准缓存线大小。在一个方面,当在组件缓存配置表500中生成相应的组件缓存时,可以针对这些组件缓存中的一些或全部,将缓存线大小特征字段528设置为缺省缓存线大小。在一个方面,空值还可以指示缺省缓存线大小。在一个方面,可以将缓存线大小特征字段528设置为:当在组件缓存配置表500中生成组件缓存时,或者与系统缓存访问请求相关联地,从内存中设置的定制缓存线大小。当指示的定制缓存线大小与缺省缓存线大小相同时,该定制缓存线大小可以包括缺省缓存线大小。在图5所示的例子中,在行518-526中所表示的组件缓存可以在缓存线大小特征字段528中包括不同的值。如图所示,可以使用以数字信息的单位(例如,位、字节、兆字节和其它变型)进行测量的大小值来表示这些值。还可以依据缓存线跨度的系统缓存内存的组和/或通路的数量来表示。
在一个方面,还可以使用组转变特征字段506和/或目标通路特征字段510来确定缓存线大小。如上所述,组转变特征字段506可以指示在组件缓存中使用的系统缓存内存的组的数量,目标通路特征字段510可以指示系统缓存内存的通路。组件缓存中的缓存线的大小取决于构成该组件缓存的缓存组和/或通路的数量。因此,可以通过设置组转变特征字段506和/或目标通路特征字段510,来实现对用于相应的组件缓存的缓存线大小进行定制。
在一个方面,组件缓存配置表500可以是静态的,因为至少对于组件缓存标识符字段502、组转变特征字段506、组偏移特征字段508和目标通路特征字段510来说,可以在组件缓存配置表500中表示每一个可能的组件缓存。其它字段502、512、514和516不必用于限定组件缓存,而是表示组件缓存中静态或者可变的特征。因此,在静态缓存配置表500中,可以针对与一个组件缓存标识符相关的组转变特征、组偏移特征和目标通路的每一种组合,都存在一行。在静态缓存配置表500中,其它字段502、512、514和516仍然是可变的,并允许它们的值发生改变。在一个方面,组件缓存配置表500可以是动态的,因为可以在运行时期间,向组件缓存配置表500增加和从组件缓存配置表500中删除包括与组件缓存标识符相关的组转变特征、组偏移特征和目标通路的各种组合的行。类似于静态的组件缓存配置表500,其它字段502、512、514和516不必用于限定组件缓存,而是可变的,并且允许它们的值发生改变。
图6示出了通过组和通路来将系统缓存600可变地划分成组件缓存。图6中所示出并且本文所描述的组件缓存仅仅意味着是示例性的,并且决不意味着是限制性的。图6中所示出的组件缓存与图5的行518、520、522、524和526中所示出的组件缓存的非限制性示例相关。组件缓存602与组件缓存配置表500中的行518相关。在该例子中,在行518中,组转变特征值是空或者零。组偏移特征值是无关的,这是由于不存在组群划分,但组偏移特征值也可以是空或零。目标通路包括系统缓存600的所有通路402-416,如目标通路=0xFF所指示的,其中在位向量中,其可以表示成11111111,如上所述。
在图6所示出的例子中,组件缓存604与组件缓存配置表500中的行520相关。在该例子中,在行520中,组转变特征=3可以表示:该系统缓存600被划分成八个组群442-456。组偏移特征=100可以表示:组件缓存604位于组群450中。通过位向量0000 1100所表示的目标通路=0x0C可以表示组件缓存604位于通路410和412中。
在图6所示出的例子中,组件缓存606与组件缓存配置表500中的行522相关。在该例子中,在行522中,组转变特征=1可以表示:该系统缓存600被划分成两个组群422和424。组偏移特征=000可以表示:组件缓存604位于组群422中。通过位向量1111 0000所表示的目标通路=0xF0可以表示组件缓存604位于通路402、404、406和408中。
在图6所示出的例子中,组件缓存608与组件缓存配置表500中的行524相关。在该例子中,在行524中,组转变特征值=2可以表示:该系统缓存600被划分成四个组群432-438。组偏移特征=110可以表示:组件缓存604位于组群438中。通过位向量0111 1000所表示的目标通路=0x78可以表示组件缓存604位于通路404、406、408和410中。
在图6所示出的例子中,组件缓存610与组件缓存配置表500中的行526相关。在该例子中,在行526中,组转变特征值是空或零。组偏移特征值是无关的,这是由于不存在组群划分,但组偏移特征值也可以是空或零。目标通路包括系统缓存600的通路416,如目标通路=0x01所指示的,其中在位向量中,其可以表示成0000 0001。
图6仅示出了系统缓存控制器可以使用组件缓存配置表500来管理的潜在组件缓存的很少例子。虽然在图6中将组件缓存604、606、608和610示出成占据系统缓存600中的非重叠位置(除了组件缓存602之外),但应当注意的是,这样做只是为便于解释目的,很多组件缓存可能与其它组件缓存重叠(如它们与组件缓存602重叠)。并不是所有组件缓存同时都是活动的,因此系统缓存控制器可以对于重叠的组件缓存的使用进行管理,如本文所进一步讨论的。还应当注意的是,不同组件缓存的参数可能导致每一个组件缓存具有不同的缓存线大小。由于每一个组件缓存包括系统缓存的全部的缓存组的一个分区,因此与缓存通路中的所有缓存组相比,与每一个组件缓存相关联的缓存线较小。与没有通过缓存组进行划分相比,这可以导致较小的缓存线,以及每一个组件缓存的缓存组的数量(通过组转变特征来限定)可以确定每一个组件缓存的缓存线大小。
图7示出了组件缓存的客户端访问的示例。例如,客户端可以包括程序软件、操作系统软件、计算设备固件、处理器、处理器内核或计算设备子系统和系统内存管理单元,以及可以进行针对从系统缓存302的组件缓存读取和向其写入的系统缓存访问请求。一个或多个客户端进行的系统缓存访问请求可以在针对系统缓存的请求和从系统缓存接收的响应中发生变化。来自客户端的系统缓存访问请求可以包括:诸如处理器内核A 700、处理器内核B 702、处理器内核C 704、处理器内核D 706和处理器内核E 708之类的处理器内核发送信号,以请求从系统缓存302进行读取或者向系统缓存302进行写入。
处理器700-708可以包括虚拟地址或物理地址、组件缓存标识符和组件缓存特征、以及针对读取或写入的系统缓存访问请求。在一个方面,系统内存管理单元710、712、714、716可以是SoC上的在处理器、处理器内核或子系统和系统缓存控制器之间的单独组件,或者也可以集成到相同组件中的一个或多个中。系统内存管理单元710、712、714、716可以接收系统缓存访问请求、虚拟地址、组件缓存标识符和组件缓存特征。根据虚拟地址,系统内存管理单元710、712、714、716可以确定用于系统缓存内存空间的相关物理地址。在一个方面,系统内存管理单元710、712、714、716可以根据该虚拟地址来构造定制索引。系统内存管理单元710、712、714、716可以将系统缓存访问请求、用于系统缓存的物理地址、该定制索引、组件缓存标识符和组件缓存特征转发给系统缓存302。在一个方面,如本文所进一步描述的,系统缓存控制器可以接收由系统内存管理单元710、712、714、716所转发的信息,并将系统缓存内存空间的物理地址转换成所识别的组件缓存的物理地址。
下面的例子描述了各种类型的系统缓存内存访问请求。一个例子可以包括:处理器内核A 700向组件缓存A 720进行系统缓存内存访问请求,其指定使用物理索引化模式。处理器内核A 700可以发送具有组件缓存A 720的组件缓存标识符、系统缓存内存空间的虚拟地址和至少物理索引化模式特征指示符的其系统缓存内存访问请求。系统内存管理单元A 710可以接收由处理器内核A 700所发送的信息,确定系统缓存内存空间中与该虚拟地址相关的物理地址,以及将该系统缓存内存访问请求连同组件缓存标识符、组件缓存特征和系统缓存的物理地址进行转发。在一个方面,系统内存管理单元710可以构造定制索引,或者也可以不构造定制索引。由于指定了物理索引化模式,因此构造定制索引在该实例中并不是必需的,所以将不使用定制索引。但是,在一个方面,可以对定制索引进行构造和转发,但不使用。在没有指定索引化模式的方面,可以将定制索引化模式与组件缓存配置表中的组件缓存标识符进行相关,在没有指定索引化模式来提供定制索引的实例中,其也是有益的。系统缓存302可以使用由系统内存管理单元710所转发的信息来访问组件缓存A 720。在一个方面,组件缓存A720可以使它存储的数据的改变与RAM 328相一致。
另一个例子可以包括:处理器内核B 702向组件缓存B 722进行系统缓存内存访问请求,其指定使用定制索引化模式。处理器内核B 702可以发送其系统缓存内存访问请求连同组件缓存B 722的组件缓存标识符、系统缓存内存空间的虚拟地址和至少定制索引化模式特征指示符。系统内存管理单元B 712可以接收由处理器内核B 702所发送的信息,确定系统缓存内存空间中与该虚拟地址相关的物理地址,构造定制索引,以及将该系统缓存内存访问请求、组件缓存标识符、组件缓存特征、系统缓存的物理地址和定制索引进行转发。系统缓存302可以使用由系统内存管理单元B 712所转发的信息来访问组件缓存B 722。在一个方面,组件缓存B 722可以使它存储的数据的改变与RAM 328相一致。
在一个例子中,处理器内核C 704可以使用系统缓存的物理地址,向组件缓存C724进行系统缓存内存访问请求。处理器内核C 704可以直接向系统缓存302发送其系统缓存内存访问请求连同组件缓存C 724的组件缓存标识符、系统缓存内存空间的物理地址和任何组件缓存特征。系统缓存302可以使用由处理器内核C 704所发送的信息来访问组件缓存C 724。
另一个例子可以包括:处理器内核D 706向缺省组件缓存D 726进行系统缓存内存访问请求,其可以表示涵盖整个系统缓存的组件缓存(例如,图6的组件缓存602),而不是涵盖系统缓存的一个分区的组件缓存。处理器内核D 706可以发送其系统缓存内存访问请求连同系统缓存内存空间的虚拟地址。由于系统缓存内存访问请求是针对缺省组件缓存D726,因此处理器内核D 706不需要发送组件缓存标识符或组件缓存特征。可以发送缺省组件缓存标识符(例如,空或零),并使用其在组件缓存配置表中识别出该系统缓存内存访问请求是针对缺省组件缓存的。系统内存管理单元D 716可以接收由处理器内核D 706所发送的信息,确定系统缓存内存空间中与该虚拟地址相关的物理地址,并将该系统缓存内存访问请求、组件缓存标识符(当提供时)和系统缓存的物理地址进行转发。系统缓存302可以使用由系统内存管理单元D 716所转发的信息来访问缺省组件缓存D 726。在一个方面,缺省组件缓存D 726可以使它存储的数据的改变与RAM 328相一致。
在一个例子中,处理器内核E 708可以进行不可缓存的系统缓存内存访问请求。在该例子中,该不可缓存的系统缓存内存访问请求可以是通过系统缓存302去往RAM 328的。处理器内核E 708可以发送其不可缓存的系统缓存内存访问请求连同系统缓存内存空间的虚拟地址。系统内存管理单元E 718可以接收由处理器内核E 708所发送的信息,确定系统缓存内存空间中与该虚拟地址相关的物理地址,以及将该系统缓存内存访问请求和系统缓存的物理地址进行转发。系统缓存302可以使用由系统内存管理单元E718所转发的信息来访问RAM 328以执行所请求的内存访问功能。
图8示出了用于访问组件缓存的地址转换。上面所提及的系统缓存控制器的地址转换将系统缓存内存空间800中的物理地址转换成系统缓存内存空间中的组件缓存814的物理地址。在一个方面,系统缓存内存空间800中的物理地址可以包括标签802和具有组索引804和块偏移806的物理索引。组件缓存814的物理地址可以包括扩展的标签816和具有组索引818和块偏移820的经修改的物理索引。如上所述,系统缓存控制器可以接收该系统缓存访问请求的信息以及与之有关的信息,其包括系统缓存内存空间800中的物理地址、组件缓存标识符和组件缓存特征(例如,索引化模式)。系统缓存控制器可以使用该信息来确定组件缓存814的物理地址。系统缓存控制器可以使用组件缓存索引化模式特征(当使用系统缓存访问请求提供时),以针对也与系统缓存访问请求一起接收的相应组件缓存标识符来更新组件缓存配置表500中的索引化模式特征字段。系统缓存控制器可以使用该组件缓存标识符,以从组件缓存配置表500中确定适当的索引化模式、组转变特征和组偏移特征,以便用于确定该组件缓存标识符所对应的组件缓存814的物理地址。
系统缓存控制器可以使用系统缓存内存空间800中的物理地址的一部分,来确定用于确定组件缓存814的物理地址的部分。例如,系统缓存控制器可以使用系统缓存内存空间800中的物理地址的块偏移806,来确定组件缓存814的物理地址的块偏移820。在一个方面,块偏移806和块偏移820中的值可以是相同的。系统缓存控制器可以使用标签802和系统缓存内存空间800中的物理地址的组索引804的所述部分和/或定制索引808,来分别确定标签816和组件缓存814的物理地址的组索引818。
在一个方面,可以对标签802和组索引804进行修改,以确定标签816和组索引818。为了修改标签802和组索引804,系统缓存控制器可以使用组件缓存配置表500中针对相应的组件缓存标识符的索引化模式特征,来选择(810)是使用组索引804的第一集合的位(当指示物理索引化模式时),还是使用定制索引808来替换组索引804的第一集合的位(当指示定制索引化模式时)。该索引化模式可以确定使用组索引804的第一集合的位或者定制索引808构成的组索引818的第一集合的位的组成成分。无论是选择组索引804的第一集合的位还是选择定制索引808,系统缓存控制器都可以使用组索引804的第二集合的位作为组索引818的第二集合的位,并将它们与组索引804的第一集合的位或者定制索引808进行组合。此外,无论是选择组索引804的第一集合的位还是选择定制索引808,系统缓存控制器都可以使用相应的组件缓存标识符的组转变特征和组偏移特征,来确定丢弃(或者转变)和连接操作812的实现。组转变特征可以规定组索引804的第一集合的位或者定制索引808的最高有效位的数量,以便进行丢弃和增加(或转变)到标签816中,从而将丢弃(或者转变)的位添加到标签802来确定标签816,将标签816的大小从标签802的大小扩展相同数量的位。可以使用组偏移特征来替代组索引818中的被丢弃的(或者转变的)位。
图9示出了使用物理地址来访问组件缓存的地址转换。如上面参照图8所描述的,可以将块偏移806转置成块偏移820。当索引化模式指示物理索引化时,可以对组索引804进行修改以丢弃(或者转变)组索引804的第一集合的位(在一个方面,最高有效位900)。组索引804的第一集合的位的数量可以取决于该组件缓存所对应的组转变特征的值。组索引804的第二集合的位(在一个方面,其是组索引804的剩余位906)可以使用成组索引818的第二集合的位。在一个方面,可以将剩余位906转置成组索引818的相同位908。该组件缓存所对应的组偏移特征902的位可以替代被丢弃(或者转变)的组索引804的第一集合的位(例如,组索引804的最高有效位900),作为组索引818的第一集合的位(在一个方面,其是组索引818的最高有效位904)。与被丢弃(或者转变)的组索引804的第一集合的位(例如,组索引804的最高有效位900)相组合(例如,添加)的标签802可以被转置成标签816。
图10示出了用于使用定制索引来访问组件缓存的地址转换。如上面参照图8所描述的,可以将块偏移806转置成块偏移820。当索引化模式指示定制索引化时,可以对组索引804进行修改以丢弃(或者转变)组索引804的第一集合的位(在一个方面,最高有效位900)。组索引804的第一集合的位的数量可以取决于该组件缓存所对应的组转变特征的值。组索引804的剩余的第二集合的位(在一个方面,其是组索引804的中间位1006和低位1000)可以使用成组索引818的第二集合的位。在一个方面,可以将低位1000转置成组索引818的相同位1002。定制索引808可以在组索引818的相应中间位1004中替代中间位1006。该组件缓存所对应的组偏移特征902的位可以替代组索引804的第一集合的位(例如,组索引804的最高有效位900),作为组索引818的第一集合的位(在一个方面,其是组索引818的最高有效位904)。与被丢弃(或者转变)的组索引804的第一集合的位(例如,组索引804的最高有效位900)相组合(或者添加)的标签802可以被转置成标签816。
应当注意的是,对物理地址800、组偏移特征902和定制索引808的位进行丢弃、转变、转置、组合和添加的上面例子只是示例性的,并且决不意味着是限制性的。可以以任何多种的方式,对这些组成部分的位进行操作和组合,以排列物理地址814的位。例如,组偏移特征902的位可以替代组索引804的最高有效位、最低有效位或者中间位。
在一个方面,可以对组件缓存进行激活和停用。由于在系统缓存内存空间中存在组件缓存重叠的可能性,因此为了避免缓存冲突,可以对与活动的组件缓存重叠的组件缓存进行停用。此外,为了省电,可以对没有在使用的组件缓存进行停用。可以在运行时,对组件缓存进行激活和停用,以便部分地对系统缓存内存空间进行划分,以及将组件缓存分配给指定的客户端。系统缓存的客户端中的一些可能只在相对较短的一段时间需要这些组件缓存,客户端可以对该组件缓存所使用的系统缓存内存空间进行预订,以避免与使用系统缓存的其它客户端冲突。此外,当客户端完成组件缓存的使用时,可以对该组件缓存进行停用,以及使该系统缓存空间解除预订,以使得该系统缓存内存空间和组件缓存可用于其它客户端。
图11示出了一种示例性组件缓存激活/停用控制命令1100,其可以包括用于存储与组件缓存激活和内存访问操作有关的信息的寄存器。在一个方面,组件缓存激活/停用控制命令1100可以包含诸如触发1102、操作码1104、组件缓存标识符1106、应用目标通路1108和目标通路1110之类的信息。触发1102可以是诸如一位码之类的标志,以指示是否开始针对该组件缓存的系统缓存内存访问。例如,位值“0”可以指示不应当开始系统缓存内存访问,位值“1”可以指示系统缓存内存访问可以开始。操作码1104可以是用于指示是对该组件缓存进行激活还是停用的代码。例如,二位码(其中,“01”表示激活,“10”表示停用)可以用于操作码1104。组件缓存标识符1106可以存储与组件缓存激活/停用控制命令1100的其它信息有关的特定组件缓存相关联的值。应用目标通路1108可以是用于表示在系统缓存内存访问中,是否使用目标通路1110中存储的信息的标志。例如,位值“0”可以指示不使用目标通路1110中存储的信息,位值“1”可以指示使用目标通路1110中存储的信息。目标通路1110可以存储这些通路,以便在系统缓存内存空间中的组件缓存里进行激活,并且仅仅当操作码1104表示激活时,目标通路1110才是有效的。在一个方面,客户端可能不需要使用整个的组件缓存来进行系统缓存内存访问,客户端可以指定只对组件缓存中的某些通路进行激活。当客户端需要使用组件缓存中的更多通路时,目标通路1110可以指定该组件缓存的更多通路。
图12示出了一种组件缓存激活/停用控制状态1200,其可以包括用于存储与组件缓存内存访问操作有关的信息的寄存器。在一个方面,组件缓存激活/停用控制状态1200可以包含诸如完成(done)指示符1202之类的信息,其可以是一个标志。例如,位值“0”可以指示系统缓存内存访问操作还没有开始或者正在进行,位值“1”可以指示系统缓存内存访问操作已完成。
系统缓存控制器可以读取组件缓存激活/停用控制命令1100和组件缓存激活/停用控制状态1200,以管理系统缓存内存空间。此外,图13示出了可以由系统缓存控制器使用以便管理组件缓存中的通路的使用的组件缓存活动通路表1300。如上所述,客户端可能需要使用整个组件缓存来进行系统缓存内存访问,也可能不需要使用,其可以指定只激活组件缓存中的某些通路。系统缓存控制器可以通过更新组件缓存活动通路表1300,来跟踪每一个组件缓存的活动通路。在组件缓存活动通路表1300中,组件缓存标识符字段1302(类似于组件缓存配置表中的一个)可以与相应的活动通路字段1034相关。当应用目标通路指示应用这些目标通路时,随着从目标通路中读出组件缓存激活/停用控制命令,系统缓存控制器可以将客户端所请求的目标通路存储在活动通路字段1034中。当应用目标通路指示不应用这些目标通路时,可以将活动通路字段1034设置为缺省值、空值、或者用于指示组件缓存的所有目标通路的值(如组件缓存配置表中所指定的)。
图14示出了组件缓存预订表1400的一个方面,其中该组件缓存预订表1400可以是上面所描述的组件缓存活动通路表的伴随表。组件缓存预订表1400可以包括通路列1402、1404、1406、1408、1410、1412、1414、1416和组群行1418、1420、1422、1424、1426、1428、1430、1432,它们可以表示进行了组件缓存划分的系统缓存的通路和组群。组件缓存预订表1400可以针对系统缓存中被客户端预订和/或未被预订的每一对的通路和组群,设置预订的和/或未预订的指示符。根据一个方面的组件缓存预订表1400可以允许系统缓存控制器对客户端将使用的系统缓存中的位置保持跟踪,以及通过不允许客户端使用正在被另一个客户端使用或者被另一个客户端预订的系统缓存位置,来避免缓存冲突。在一个方面,预订指示符可以使得与系统缓存活动通路表的组件缓存标识符和组件缓存配置表相关的组群进行匹配,与系统缓存活动通路表中所指示的通路进行匹配。一旦客户端完成了对于其预订的组件缓存空间的使用,就可以针对组件缓存预订表1400中的相应位置,删除预订指示符,或者将其改变成未预订指示符。
举例而言,图13中所示出的组件高速活动通路表1300示出了用于四个组件缓存标识符的活动通路。系统缓存控制器可以预订每一个组件缓存标识符所对应的系统缓存位置,其将预订的通路限制于所指示的活动通路。可以根据组件缓存配置表的组转变特征、组偏移特征、以及组件缓存活动通路表1300中的活动通路,来确定系统缓存位置。系统缓存控制器可以通过对组件缓存预订表1400中预订的系统缓存位置进行标记,来预订系统缓存中的位置。因此,在图14所示出的例子中,组件缓存预订表1400包括用于指示以下信息的数据:预订指定的组群和活动通路,用于组件缓存配置表和组件缓存活动通路表1300中的组件缓存标识符和相应的组件缓存特征所指定的每一个系统缓存位置。
应当注意的是,虽然不可能,但组件缓存配置表500中的组件缓存标识符“0”可以表示整个系统缓存的组件缓存将包括在组件缓存激活表1300和组件缓存预订表1400中,这是由于其将预订整个系统缓存,除非用于该组件缓存的活动通路受到限制。这将导致其它客户端不能够使用该系统缓存,直到对通路中的至少一些进行停用为止。
在一个方面,可以使用两个W位向量,对组件缓存重新调整大小,其中W是缓存通路的数量,这些向量中的每一个位表示一个特定的缓存通路。每一个组件缓存可以与W位向量中的一个或二者相关联。预订向量或者第一向量可以指示被预订用于向相关联的组件缓存(当其被激活时)分配的缓存通路。奖励向量或者第二向量可以指示被分配给相关联的组件缓存的额外缓存通路(当空闲时),或者没有被任何组件缓存预订的额外缓存通路。如上面所讨论的,组件缓存可以与特定的客户端(例如,计算设备的处理组件或者子系统)相关联。
图15示出了一种示例性系统缓存内存,该系统缓存内存具有被分配给各个组件缓存的预订的缓存通路。系统缓存内存1500可以包括多个通路;在该例子中,系统缓存内存1500包括16个通路1502、1504、1506、1508、1510、1512、1514、1518、1520、1522、1524、1526、1528、1530、1532和1534。对于该例子而言,两个W位向量可以是16位向量。预订的缓存通路1536可以被分配给第一客户端(例如,CPU)的第一组件缓存,其可以包括缓存通路1502-1508。预订的缓存通路1536可以通过十六进制符号的第一预订向量=0xF000来表示。在二进制形式下,预订的缓存通路1536可以通过第一预订向量=1111 0000 0000 0000来表示。将二进制形式的第一预订缓存向量与缓存通路1502-1534进行比较,位“1”对应于预订的缓存通路1536(其包括缓存通路1502-1508)。类似地,预订的缓存通路1538可以被分配给第二客户端(例如,计算设备的其它处理组件或者子系统中的一个)的第二组件缓存,其可以包括缓存通路1506-1518。预订的缓存通路1536可以通过十六进制符号的第二预订向量=0x3F00来表示。预订的缓存通路1540可以被分配给第三客户端(例如,计算设备的其它处理组件或者子系统中的一个)的第三组件缓存,其可以包括缓存通路1520-1526。预订的缓存通路1540可以通过十六进制符号的第三预订向量=0x00F0来表示。未预订的缓存通路1542可以包括缓存通路1528-1534。另外,第一组件缓存可以与十六进制符号的第一奖励向量=0x0FFF相关联,其表示潜在地将第一组件缓存扩展到缓存通路1510-1534。如使用预订的缓存通路1536、1538所演示的,在组件缓存之间,预订的缓存通路可能重叠。这可能是由于组件缓存占据系统缓存的相同通路中的不同组群导致的。因此,可以在相同的缓存通路中,激活多个组件缓存。在一个方面,图6中具有组件缓存标识符“0”的组件缓存602(如图5中的行518所示)可以具有相关联的预订向量,其中该预订向量可以与其它组件缓存的预订向量相重叠。
对于扩展到由第一奖励缓存向量所指示的缓存通路1510-1534的第一组件缓存来说,该组件缓存扩展到的每一个缓存通路1510-1534应当是未被预订的。可以在针对每一个组件缓存的激活命令中,指定该预订向量。计算设备可以根据激活命令的预订向量,为适当的组件缓存预订和分配缓存通路1502-1534中的一个或多个。可以将预订的缓存通路存储在内存设备(例如,寄存器)中。计算设备还可以将用于各个组件缓存的奖励向量存储在内存设备(例如,寄存器)中。可以在启动时间,将奖励向量写入到内存设备中,和/或资源管理器可以基于用例,向各个组件缓存分配奖励向量。响应于奖励向量的缓存通路被分配给特定的组件缓存,可以对存储该特定组件缓存的所分配缓存通路的内存设备进行扩增,以包括奖励向量的缓存通路。计算设备(在一个方面,其可以是系统缓存控制器)可以针对组件缓存的预订向量和/或奖励向量,对分配给该组件缓存的可用通路进行计算。可以使用下式来完成该计算:
在上面的式中,X可以是用于相关的组件缓存的组件缓存标识符,N可以是组件缓存的总数,I可以是所有组件缓存的组件缓存标识符。ReservedVecX、ReservedVecI和BonusVecX可以分别是用于通过X和I所指示的组件缓存的预订向量和奖励向量。当I的组件缓存活动时,可以宣称Active1。求和运算可以是应用于每一个组件缓存的按位OR(或)运算符。响应于计算组件缓存的奖励向量中所包括的可用缓存通路,可以向该组件缓存分配可用的缓存通路。
图16根据一个方面,示出了一种示例性系统缓存内存,该系统缓存内存具有被分配给组件缓存的预订和奖励的缓存通路。继续图15中的例子,第一组件缓存可以使用系统缓存1500中的缓存通路1502-1510和1528-1534。如上所述,缓存通路1502-1510落入第一组件缓存的预订向量的范围之内;而缓存通路1528-1534落入第一组件缓存的奖励向量的范围之内。缓存通路1528-1534可以没有被另一个组件缓存预订,所以计算设备将缓存通路1528-1534分配给第一组件缓存。虽然缓存通路1528-1534在该例子中没有被预订,但用于第一组件缓存的奖励缓存向量与预订的缓存通路1538和1540(包括缓存通路1510-1526)相重叠,如图15中所示。为了向第一组件缓存分配缓存通路1528-1534,计算设备可以为第一组件缓存分配奖励向量中所指示的缓存通路1510-1534的全部。计算设备可以对第二和第三组件缓存进行停用,以使缓存通路1510-1526解除预订,从而除了图15中的预订的缓存通路1538之外,将缓存通路1510-1534分配给第一组件缓存。可以向第一组件缓存分配预订的缓存通路1600(其包括所有的缓存通路1502-1534)。
图17根据一个方面,示出了一种示例性系统缓存内存,该系统缓存内存具有被分配给各个组件缓存的预订的缓存通路。下面的例子使用图15的相同的系统缓存1500,其区别仅仅在于不同的预订缓存通路1700和1702和未预订的缓存通路1704。预订的缓存通路1700可以被分配给第一组件,其可以包括缓存通路1502-1508。预订的缓存通路1700可以通过十六进制符号的第一预订向量=0xF000来表示。预订的缓存通路1702可以被分配给第二组件缓存,其可以包括缓存通路1506-1518。预订的缓存通路1536可以通过十六进制符号的第二预订向量=0x3F00来表示。未预订的缓存通路1704可以包括缓存通路1520-1534。另外,第二组件缓存可以与十六进制符号的第二预订向量=0xC000相关联,其表示潜在地将第二组件缓存扩展到缓存通路1502和1504。
图18根据一个方面,示出了一种示例性系统缓存内存,该系统缓存内存具有被分配给组件缓存的预订和奖励的缓存通路。继续图17中的例子,第二组件缓存可以使用系统缓存1500中的缓存通路1506-1518。如上所述,缓存通路1506-1518落入第二组件缓存的预订向量的范围之内。缓存通路1506-1518可以没有被另一个组件缓存预订,所以计算设备将缓存通路1506-1518分配给第二组件缓存。但是,缓存通路1506和1508与预订的缓存通路1700(其包括图17中所示出的缓存通路1502-1508)相重叠,如图17中所示。为了向第二组件缓存分配缓存通路1506-1518,计算设备可以对第一组件缓存进行停用,以使缓存通路1506和1508解除预订,从而将缓存通路1502-1518分配给第二组件缓存。可以向第二组件缓存分配预订的缓存通路1800(包括预订的缓存通路1702)和通过第一组件缓存的停用而解除预订的额外缓存通路1502和1504,它们包括在第二组件缓存的奖励缓存向量中。
图19示出了用于访问系统缓存内存的组件缓存的一个方面方法1900,其中该系统缓存内存通过组和通路被划分成组件缓存。方法1900可以由如本文所描述的计算设备(例如,系统缓存控制器)来执行。在方框1902中,计算设备可以加载组件缓存配置表。在一个方面,在使用静态组件缓存配置表的情况下,可以在计算设备的启动时间期间发生加载该组件缓存配置表,以及可以使用对于系统缓存来说可能的组件缓存的每一种组合来填充组件缓存配置表。可以至少使用组件缓存标识符、组转变特征、组偏移特征和目标通路特征来填充该组件缓存配置表。在一个方面,在使用如本文所描述的动态组件缓存配置表的情况下,可以在启动时间或者针对组件缓存访问的第一次请求时,加载该组件缓存表。该动态组件缓存配置表可以从计算设备已保存的组件缓存配置表的最新版本中加载,或者可以是要基于接收的组件缓存访问请求来进行填充的空表。
在方框1904中,计算设备可以接收系统缓存访问请求。如上所述,该系统缓存访问请求可以源自于计算设备上的客户端,由系统缓存控制器进行接收。该系统缓存访问请求可以包括:对于从系统缓存读取数据或者向系统缓存写入数据的请求、组件缓存标识符、组件缓存特征、系统缓存的物理地址和定制索引。在判断框1906中,计算设备可以判断该系统缓存访问请求是否包括组件缓存标识符(CCID)。响应于确定该系统缓存访问请求不包括组件缓存标识符(即,判断框1906=“否”),在方框1908中,计算设备可以通过已知方法,将该系统缓存访问请求视作为普通访问请求。
响应于确定该系统缓存访问请求包括组件缓存标识符(即,判断框1906=“是”),在方框1910中,计算设备可以在组件缓存配置表中,查找与该组件缓存标识符相关的记录。如上所述,在组件缓存配置表是静态的方面,存在着针对该系统缓存的每一种可能的组件缓存(其具有组件缓存标识符)的记录。在可选框1912中,计算设备可以使用与该记录中已经存在的组件缓存特征不同的所接收的组件缓存特征中的任何一个,来更新组件缓存配置表中与该组件缓存标识符相对应的记录。替代地,计算设备可以替换该记录中的所有组件缓存特征,而无需判断它们是否不同。
在方框1914中,计算设备可以将连同系统缓存访问请求所接收的物理地址转换成系统缓存中的该组件缓存的相应物理地址。如本文所进一步详细描述的,对该地址进行转换可以涉及:判断该组件缓存的索引化模式特征是物理索引化还是定制索引化。
在判断框1916中,计算设备可以判断该组件缓存是否是可用的。如本文所描述的,判断该组件缓存是否是可用的可以涉及:判断该组件缓存的系统缓存位置是否被预订用于计算设备的另一个客户端。响应于确定该组件缓存是不可用的(即,判断框1916=“否”),在方框1918中,计算设备可以保持该系统缓存访问请求,直到该组件缓存变得可用为止。在方框1920中,计算设备可以访问与该系统缓存访问请求的组件缓存标识符相关联的组件缓存,以实现所请求的读或写操作。
图20示出了用于访问系统缓存内存的组件缓存的一个方面方法2000,其中该系统缓存内存通过组和通路被划分成组件缓存。方法2000可以由如本文所描述的计算设备(例如,系统缓存控制器)来执行。在一个方面,可以实现方法2000,以用于如本文所描述的加载的动态组件缓存配置表。在方框2002中,计算设备可以接收系统缓存访问请求。如上所述,系统缓存访问请求可以源自于计算设备上的客户端,并由系统缓存控制器来接收。该系统缓存访问请求可以包括对于从系统缓存读取数据或者向系统缓存写入数据的请求、组件缓存标识符、组件缓存特征、系统缓存的物理地址和定制索引。
在判断框2004中,计算设备可以判断该系统缓存访问请求是否包括组件缓存标识符(CCID)。响应于确定该系统缓存访问请求不包括组件缓存标识符(即,判断框2004=“否”),在方框2006中,计算设备可以根据已知方法,将该系统缓存访问请求视作普通访问请求。
响应于确定该系统缓存访问请求包括组件缓存标识符(即,判断框2004=“是”),在判断框2006中,计算设备可以判断在组件缓存配置表中是否存在针对该组件缓存标识符的记录。例如,在组件缓存配置表中可能存在针对该组件缓存标识符的记录,也可能不存在,这是由于在动态的组件缓存配置表中,针对该组件缓存标识符的记录可能不是加载的组件缓存配置表的一部分,或者当该组件缓存停用时,可以从该表中删除该记录。
响应于确定在组件缓存配置表中不存在针对该组件缓存的记录(即,判断框2006=“否”),在方框2010中,计算设备可以在组件缓存配置表中生成针对该组件缓存的记录。在一个方面,系统缓存控制器可以使用连同该系统缓存访问请求所提供的信息(其包括组件缓存标识符和组件缓存特征),以在组件缓存配置表中生成针对该组件缓存的记录。
响应于确定在组件缓存配置表中存在针对该组件缓存的记录(即,判断框2006=“是”),在方框2012中,计算设备可以在组件缓存配置表中,查找与该组件缓存标识符相关的记录。在可选框2014中,计算设备可以使用与该记录中已经存在的组件缓存特征不同的所接收的组件缓存特征中的任何一个,来更新组件缓存配置表中与该组件缓存标识符相对应的记录。替代地,计算设备可以仅仅替换该记录中的所有组件缓存特征,而无需判断它们是否不同。
在方框2016中,计算设备可以将连同系统缓存访问请求所接收的物理地址转换成系统缓存中的该组件缓存的相应物理地址。如本文所进一步详细描述的,对该地址进行转换可以涉及:判断该组件缓存的索引化模式特征是物理索引化还是定制索引化。
在判断框2018中,计算设备可以判断该组件缓存是否是可用的。如本文所描述的,判断该组件缓存是否是可用的可以涉及:判断该组件缓存的系统缓存位置是否被预订用于计算设备的另一个客户端。响应于确定该组件缓存是不可用的(即,判断框2018=“否”),在方框2020中,计算设备可以保持该系统缓存访问请求,直到该组件缓存变得可用为止。在方框2022中,计算设备可以访问与该系统缓存访问请求的组件缓存标识符相关联的组件缓存,以实现所请求的读或写操作。
图21示出用于对缓存内存地址进行转换,以访问系统缓存内存的组件缓存的一个方面方法2100,其中该系统缓存内存通过组和通路被划分成组件缓存。方法2100可以实现成图19中的方法1900的方框1914的一部分,和实现成图20中的方法2000的方框2016的一部分。方法2100可以由如本文所描述的计算设备(例如,系统缓存控制器)来执行。
在判断框2102中,计算设备可以判断用于相关的组件缓存标识符的索引化模式特征是指示物理索引化,还是指示定制索引化。计算设备可以针对相关的组件缓存标识符的记录,对组件缓存配置表中的索引化模式特征字段进行检查,以判断索引化模式是指示物理索引化,还是指示定制索引化。响应于确定用于相关的组件缓存标识符的索引化模式特征指示定制索引化(即,判断框2102=“CI”),在方框2104中,计算设备可以使用所接收的定制索引,来替代所接收的物理地址的组索引的中间位。如上所述,组索引的中间位是该组索引中被转变的最高有效位和该组索引的较低位之间的位,其中,该组索引的较低位被转置成该组件缓存的物理地址的组索引的较低位。
在方框2106中,计算设备可以将所接收的物理地址的组索引的多个最高有效位进行转变。可以根据组件缓存配置表中的相应组件缓存标识符的组转变特征的值,来确定该组索引被转变的最高有效位的数量。在方框2108中,计算设备可以将该组索引的被转变的最高有效位添加到所接收的物理地址的标签上,使用与被转变的位相组合的标签来作为标签。在方框2110中,计算设备可以将相应的组件缓存标识符的组偏移特征的值插入在组件缓存配置表中。在方框2112中,计算设备可以使用所接收的物理地址的相同块偏移。因此,系统缓存中的组件缓存的物理地址取决于针对该系统缓存访问请求所接收的物理地址,其中,通过以下方式,根据所接收的组索引来修改组索引:对最高有效位进行转变,使用指定的值来替代被转变的位,替代地使用相同的中间位或者使用定制索引来替代它们,使用相同的较低位,使用相同的标签(其中将被转变的位添加到该标签上),以及使用相同的块偏移。
图22示出用于动态地激活系统缓存内存的组件缓存的一个方面方法2200,其中该系统缓存内存通过组和通路被划分成组件缓存。方法2200还可以视作为使用组件缓存来动态地划分系统缓存,这是由于激活的组件缓存的系统缓存位置中的一些或者全部可以被预订用于一个客户端,从而防止其它客户端使用该系统缓存的动态划分的部分。方法2200可以实现成图19中的方法1900的方框1916-1920的一部分,和实现成图20中的方法2000的方框2018-2022的一部分。方法2200可以由如本文所描述的计算设备(例如,系统缓存控制器)来执行。
在方框2202中,计算设备可以针对与该组件缓存标识符有关的组件缓存位置,对组件缓存预订表中的系统缓存位置的预订指示符进行检查。如本文所描述的,可以根据组件缓存配置表中针对该组件缓存标识符的组转变特征、组偏移特征和目标通路的组合,来确定该组件缓存位置,从而确定系统缓存位置。在一个方面,还可以通过组件缓存活动通路表中针对该组件缓存标识符的活动通路,对预订的组件缓存位置进行调节。这些活动通路可以指示所预订的位置,而目标通路可以指示所预订的位置,或者仅仅指示该组件缓存可以使用和预订,但并不必需使用或者预订的全部标签。
在判断框2204中,计算设备可以判断该组件缓存位置是否被预订。如上面所讨论的,判断组件缓存位置是否被预订可以取决于活动通路组件缓存表中的相应组件缓存的活动通路。响应于确定该组件缓存位置被预订(即,判断框2204=“是”),在方框2202中,计算设备可以再次检查这些位置是否被预订。
响应于确定该组件缓存位置没有被预订(即,判断框2204=“否”),在方框2206中,计算设备可以针对该组件缓存标识符,对活动通路表进行更新。针对该组件缓存标识符对活动通路表进行更新指示:系统缓存访问请求的该组件缓存可以对由该组件缓存标识符的组转变特征、组偏移特征和活动通路所表示的系统缓存内存位置进行预订。在方框2208中,计算设备可以针对该组件缓存,对组件缓存预订表中的这些系统缓存位置的预订指示符进行更新。一旦在组件缓存预订表中,将这些系统缓存位置预订用于该组件缓存,则有效地从系统缓存的剩余部分中动态地分配这些位置(这是由于这些位置被预订用于特定的请求客户端)。请求访问系统缓存的已被预订位置的其它客户端可以被拒绝访问这些已预订位置,直到预订这些已预订位置的客户端停用所预订的位置为止。
图23示出用于动态地停用系统缓存内存的组件缓存的一个方面方法2300,其中该系统缓存内存通过组和通路被划分成组件缓存。方法2300可以实现成图19中的方法1900的方框1920的一部分,和实现成图20中的方法2000的方框622的一部分。方法2300可以由如本文所描述的计算设备(例如,系统缓存控制器)来执行。在方框2302中,计算设备可以从与系统缓存访问请求的组件缓存标识符相关联的组件缓存的所预订位置进行读取,和/或向其进行写入。在判断框2304中,计算设备可以判断该系统缓存访问是否完成。响应于确定该系统缓存访问没有完成(即,判断框2304=“否”),在方框2302中,计算设备可以继续从该组件缓存的所预订位置进行读取,和/或向其进行写入。响应于确定该系统缓存访问已完成(即,判断框2304=“是”),在方框2306中,计算设备可以对组件缓存预订表中的这些系统缓存位置的预订指示符进行更新,以释放/停用该组件缓存所预订的位置。
在一个方面,预订了系统缓存空间的客户端可以动态地请求另外的或者更少的组件缓存空间,从而预订系统缓存空间。在方法2200中,请求更多空间的客户端可以针对还没有被预订的该组件缓存的系统缓存位置,来请求更多的空间。在方法2300中,请求更少空间的客户端可以通过完成对该组件缓存的已预订系统缓存位置的仅仅一部分的访问,来请求更少的空间。
图24示出用于动态地重新调整系统缓存内存的组件缓存的大小的一个方面方法2400,其中该系统缓存内存通过组和通路被划分成组件缓存。方法2400可以实现成图19中的方法1900的方框1916-1920的一部分,和实现成图20中的方法2000的方框2018-2022的一部分。方法2200可以由如本文所描述的计算设备(例如,系统缓存控制器)来执行。在方框2402中,计算设备可以加载针对至少一个组件缓存标识符的奖励向量。如上面所讨论的,该奖励向量可以指示用于相关联的组件缓存的一个或多个缓存通路(其与和该奖励向量有关的组件缓存标识符相关联)以便进行扩展。可以在启动时间和/或运行时,执行奖励向量的加载,以及可以将奖励向量存储在寄存器中。计算设备可以加载奖励向量中的全部或者一些。在方框2404中,计算设备可以接收针对至少一个组件缓存标识符的预订向量。如上面所讨论的,该预订向量可以指示被预订用于相关联的组件缓存(其与和该预订向量有关的组件缓存标识符相关联)的一个或多个缓存通路。
在判断框2406中,计算设备可以判断该预订向量的一个或多个缓存通路是否被另一个组件缓存预订。为了进行该判断,计算设备可以实现上面所讨论的方程式。响应于确定该预订向量的缓存通路被另一个组件缓存预订(即,判断框2406=“是”),在方框2408中,计算设备可以对其它组件缓存进行停用。对其它组件缓存进行停用可以导致:解除由其它组件缓存所预订的缓存通路的预订,从而使得与该预订向量的缓存通路相重叠的缓存通路解除预订。响应于确定该预订向量的缓存通路示被解除预订(即,判断框2406=“否”),在方框2410中,计算设备可以判断使用该组件缓存是否包括使用相关联的奖励向量的缓存通路中的一个或多个。
响应于确定使用该组件缓存不包括使用相关联的奖励向量的缓存通路中的一个或多个(即,判断框2410=“否”),在方框2412中,计算设备可以预订这些未预订的缓存通路以用于相关联的组件缓存。可以通过将预订向量写入包含所预订的缓存通路数据的寄存器,来完成对缓存通路的预订。响应于确定使用该组件缓存包括使用相关联的奖励向量的缓存通路中的一个或多个(即,判断框2410=“是”),在判断框2414中,计算设备可以判断该奖励向量的一个或多个缓存通路是否被另一个组件缓存预订。响应于确定该奖励向量的一个或多个缓存通路没有被另一个组件缓存预订(即,判断框2414=“否”),在方框2412中,计算设备可以预订这些未预订的缓存通路用于该相关联的组件缓存。响应于确定该奖励向量的一个或多个缓存通路被另一个组件缓存预订(即,判断框2414=“是”),在方框2416中,计算设备可以对其它组件缓存进行停用。在方框2412中,计算设备可以预订这些未预订的缓存通路以用于相关联的组件缓存。
图25示出了适合于与各个方面一起使用的示例性移动设备。移动设备2500可以包括耦合到触摸屏控制器2504和内部内存2506的处理器2502。处理器2502可以是被设计为实现通用或特定处理任务的一个或多个多核集成电路。内部内存2506可以是易失性内存或非易失性内存,以及还可以是安全和/或加密内存,或者非安全和/或非加密内存、或者其任意组合。可以利用的内存类型的例子包括但不限于:DDR、LPDDR、GDDR、WIDEIO、RAM、SRAM、DRAM、P-RAM、R-RAM、M-RAM、STT-RAM和嵌入式DRAM。触摸屏控制器2504和处理器2502还可以耦合到触摸屏面板2512,例如,电阻式感应触摸屏、电容感应触摸屏、红外线感测触摸屏等等。另外,计算设备2500的显示器并不需要具有触摸屏能力。
移动设备2500可以具有用于发送和接收通信的一个或多个无线信号收发机2508(例如,Peanut、Bluetooth、Zigbee、Wi-Fi、RF无线电装置)和天线2510,它们彼此之间相耦合和/或耦合到处理器2502。收发机2508和天线2510可以结合上面所提及的电路来使用,以实现各种无线传输协议栈和接口。移动设备2500可以包括蜂窝网络无线调制解调器芯片2516,其经由蜂窝网络来实现通信并耦合到处理器。
移动设备2500可以包括耦合到处理器2502的外围设备连接接口2518。外围设备连接接口2518可以被单独地配置为接受一种类型的连接,或者被配置为接受多种类型的物理和通信连接、共同或专有连接(例如,USB、火线、Thunderbolt或PCIe)。外围设备连接接口2518还可以耦合到类似配置的外围设备连接端口(没有示出)。
移动设备2500还可以包括用于提供音频输出的扬声器2514。移动设备2500还可以包括使用塑料、金属、或材料的组合所构成的壳体2520,以包含本文所讨论的所有组件或者一些组件。移动设备2500可以包括耦合到处理器2502的电源2522,例如一次性或可充电电池。该可充电电池还可以耦合到外围设备连接端口,以便从移动设备2500之外的源接收充电电流。移动设备2500还可以包括用于接收用户输入的物理按钮2524。移动设备2500还可以包括用于打开和关闭移动设备2500的电源按钮2526。
上面所描述的各个方面还可以实现在各种各样的移动设备中,例如,如图26中所示的膝上型计算机2600。很多膝上型计算机包括触摸板触摸接口2617,其用作该计算机的指向设备,故可以接收拖动、滚动和滑动手势(其类似于上面所描述的在装备有触摸屏显示器的计算设备上所实现的那些手势)。通常,膝上型计算机2600包括耦合到易失性内存2612和大容量非易失性内存(例如,硬盘驱动器2613或者闪存)的处理器2611。另外,计算机2600可以具有用于发送和接收电磁辐射的一个或多个天线2608,这些天线2608可以连接到无线数据链路和/或耦合到处理器2611的蜂窝电话收发机2616。计算机2600还可以包括耦合到处理器2611的软盘驱动器2614和压缩光盘(CD)驱动器2615。在笔记本电脑配置中,计算机壳体包括全部都耦合到处理器2611的触摸板2617、键盘2618和显示器2619。该计算设备的其它配置可以包括(例如,经由USB输入)耦合到处理器的计算机鼠标或者跟踪球,如公众所知道的,这些部件也可以结合各个方面来使用。
用于在可编程处理器上运行以执行本文的各个方面的操作的计算机程序代码或“程序代码”可以利用诸如C、C++、C#、Smalltalk、Java、JavaScript、Visual Basic、结构化查询语言(例如,Transact-SQL)、Perl之类的高级编程语言来编写,或者利用各种其它编程语言来编写。如本申请中所使用的计算机可读存储介质上所存储的程序代码或程序可以指代其格式是处理器可理解的机器语言代码(例如,目标代码)。
将很多计算设备操作系统内核组织到用户空间(非特权代码运行的空间)和内核空间(特权代码运行的空间)。这种分隔在Android(安卓)和其它通用公共许可证(GPL)环境中具有特别的重要性,其中在这些环境中,作为内核空间的一部分的代码必须是GPL许可的,而在用户空间中运行的代码可以不是GPL许可的。应当理解的是,这里所讨论的各种软件组件/模块可以实现在内核空间中,也可以实现在用户空间中,除非另外明确指出。
上述的方法描述和过程流程图仅仅是提供作为说明性例子,而不是旨在要求或者隐含着必须以所给出的顺序来执行各个方面的步骤。如本领域普通技术人员所应当理解的,可以以任何顺序来执行上述的方面中的操作顺序。诸如“其后”、“转而”、“接着”等等之类的词语,并不旨在限制这些操作的顺序;这些词语仅仅只是用于引导读者遍历该方法的描述。此外,任何对权利要求元素的单数引用(例如,使用冠词“一个(a)”、“某个(an)”或者“该(the)”),不应被解释为将该元素限制为单数形式。
结合本文的各个方面描述的各种示例性的逻辑框、模块、电路和算法操作均可以实现成电子硬件、计算机软件或二者的组合。为了清楚地表示硬件和软件之间的这种可交换性,上面对各种示例性的部件、框、模块、电路和操作均围绕其功能进行了总体描述。至于这种功能是实现成硬件还是实现成软件,取决于特定的应用和对整个系统所施加的设计约束条件。熟练的技术人员可以针对每个特定应用,以变通的方式实现所描述的功能,但是,这种实现决策不应解释为背离本发明的保护范围。
用于执行本文所述功能的通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件部件或者其任意组合,可以用来实现或执行结合本文所公开的方面描述的用于实现各种示例性的逻辑、逻辑框、模块和电路的硬件。通用处理器可以是微处理器,或者,该处理器也可以是任何常规的处理器、控制器、微控制器或者状态机。处理器也可以实现为计算设备的组合,例如,DSP和微处理器的组合、若干微处理器、一个或多个微处理器与DSP内核的结合,或者任何其它此种结构。替代地,一些操作或方法可以由特定于给定功能的电路来执行。
在一个或多个方面,本文所述功能可以用硬件、软件、固件或它们任意组合的方式来实现。如果用软件实现,则可以将这些功能存储成非临时性计算机可读介质或者非临时性处理器可读介质上的一个或多个指令或代码。本文所公开的方法或算法的操作可以体现在处理器可执行软件模块中,其可以位于非临时性计算机可读存储介质或处理器可读存储介质上。非临时性计算机可读或处理器可读存储介质可以是计算机或处理器能够存取的任何存储介质。举例而言,但非做出限制,这种非临时性计算机可读介质或者处理器可读介质可以包括RAM、ROM、EEPROM、闪存、CD-ROM或其它光盘存储器、磁盘存储器或其它磁存储设备、或者能够用于存储具有指令或数据结构形式的期望的程序代码并能够由计算机进行存取的任何其它介质。如本文所使用的,磁盘和光盘包括压缩光盘(CD)、激光光盘、光盘、数字通用光盘(DVD)、软盘和蓝光光盘,其中磁盘通常磁性地复制数据,而光盘则用激光来光学地复制数据。上述的组合也应当包括在非临时性计算机可读介质和处理器可读介质的保护范围之内。另外,一种方法或算法的操作可以作为一个代码和/或指令集或者其任意组合,位于非临时性处理器可读介质和/或计算机可读介质上,其中该非临时性处理器可读介质和/或计算机可读介质可以并入到计算机程序产品中。
为使本领域任何普通技术人员能够实现或者使用本发明,上面围绕所公开的方面进行了描述。对于本领域普通技术人员来说,对这些方面的各种修改是显而易见的,并且,本申请定义的总体原理也可以在不脱离本发明的精神或保护范围的基础上应用于其它方面。因此,本发明并不限于本文所示出的方面,而是被给予与所附权利要求书和本文公开的原理和新颖性特征相一致的最广范围。

Claims (36)

1.一种用于对系统缓存进行划分的方法,包括:
加载被配置为存储多个组件缓存标识符的组件缓存配置表,其中,所述多个组件缓存标识符与组转变特征、组偏移特征和目标通路特征相关,所述组转变特征被配置为指示所述系统缓存中的组群的数量,所述组偏移特征被配置为指示组件缓存所位于的组群,所述目标通路特征被配置为指示所述组件缓存所位于的一个或多个通路,其中,所述组转变特征大于零指示通过多个组群划分组件缓存;
从客户端接收包括组件缓存标识符的系统缓存访问请求;
从所述组件缓存配置表中,获取在所述组件缓存配置表中与所述组件缓存标识符相关的组转变特征、组偏移特征和目标通路特征;以及
将系统缓存位置划分成通过所述组转变特征、所述组偏移特征和所述目标通路特征来规定的所述组件缓存。
2.根据权利要求1所述的方法,其中,从所述客户端接收包括所述组件缓存标识符的所述系统缓存访问请求包括:接收所述系统缓存的物理地址和定制索引。
3.根据权利要求2所述的方法,还包括:
从所述组件缓存配置表中,获取在所述组件缓存配置表中与所述组件缓存标识符相关的索引模式;
判断所述索引模式是指示物理索引化还是定制索引化;
将所述系统缓存的所述物理地址转换成所述组件缓存的物理地址;以及
访问所述组件缓存的所述物理地址,以从所述组件缓存的所述物理地址进行读取,或者向所述组件缓存的所述物理地址进行写入。
4.根据权利要求3所述的方法,其中,将所述系统缓存的所述物理地址转换成所述组件缓存的所述物理地址包括:
对所述系统缓存的所述物理地址的组索引的第一集合的位与所述系统缓存的所述物理地址的标签进行组合,其中,所述组索引的所述第一集合的位的数量是根据所述组转变特征的值来确定的;
使用所述组偏移特征的值,来替代所述组索引的所述第一集合的位;以及
当确定所述索引模式指示定制索引化时,使用定制索引来替代所述组索引的第二集合的位。
5.根据权利要求1所述的方法,其中,从所述客户端接收包括所述组件缓存标识符的所述系统缓存访问请求包括:
接收所述组件缓存的一个或多个特征;以及
更新所述组件缓存配置表中与所述组件缓存标识符相关的同所接收的一个或多个特征相对应的一个或多个特征。
6.根据权利要求1所述的方法,还包括:
判断在所述组件缓存配置表中是否存在所述组件缓存标识符;以及
响应于确定在所述组件缓存配置表中不存在所述组件缓存标识符,在所述组件缓存配置表中生成针对所述组件缓存标识符的记录。
7.根据权利要求1所述的方法,还包括:
在计算设备的启动时间,加载所述组件缓存配置表;以及
将所述组转变特征、所述组偏移特征和所述目标通路特征的所有可能组合包括在所加载的组件缓存配置表中,其中,每一个组合与不同的组件缓存标识符相关。
8.根据权利要求1所述的方法,还包括:
在运行时静态或者动态地,根据每一个组件缓存的所述目标通路特征,对每一个组件缓存的关联性进行定制;以及
根据每一个组件缓存的替换策略特征,对每一个组件缓存的替换策略进行定制。
9.根据权利要求1所述的方法,还包括:
对每一个组件缓存的缓存线大小进行定制。
10.一种计算设备,包括:
处理器;
连接到所述处理器的系统缓存,其被配置为提供用于存储和获取数据的快速访问;
通信地连接到所述处理器和所述系统缓存的系统缓存控制器,其被配置为执行包括以下各项的操作:
加载被配置为存储多个组件缓存标识符的组件缓存配置表,其中,所述多个组件缓存标识符与组转变特征、组偏移特征和目标通路特征相关,所述组转变特征被配置为指示所述系统缓存中的组群的数量,所述组偏移特征被配置为指示组件缓存所位于的组群,所述目标通路特征被配置为指示所述组件缓存所位于的一个或多个通路,其中,所述组转变特征大于零指示通过多个组群划分组件缓存;
从客户端接收包括组件缓存标识符的系统缓存访问请求;
从所述组件缓存配置表中,获取在所述组件缓存配置表中与所述组件缓存标识符相关的组转变特征、组偏移特征和目标通路特征;以及
将系统缓存位置划分成通过所述组转变特征、所述组偏移特征和所述目标通路特征来规定的所述组件缓存。
11.根据权利要求10所述的计算设备,其中,所述系统缓存控制器还被配置为执行操作,使得从所述客户端接收包括所述组件缓存标识符的所述系统缓存访问请求包括:接收所述系统缓存的物理地址和定制索引。
12.根据权利要求11所述的计算设备,其中,所述系统缓存控制器被配置为执行还包括以下各项的操作:
从所述组件缓存配置表中,获取在所述组件缓存配置表中与所述组件缓存标识符相关的索引模式;
判断所述索引模式是指示物理索引化还是定制索引化;
将所述系统缓存的所述物理地址转换成所述组件缓存的物理地址;以及
访问所述组件缓存的所述物理地址,以从所述组件缓存的所述物理地址进行读取,或者向所述组件缓存的所述物理地址进行写入。
13.根据权利要求12所述的计算设备,其中,所述系统缓存控制器被配置为执行操作,使得将所述系统缓存的所述物理地址转换成所述组件缓存的所述物理地址包括:
对所述系统缓存的所述物理地址的组索引的第一集合的位与所述系统缓存的所述物理地址的标签进行组合,其中,所述组索引的所述第一集合的位的数量是根据所述组转变特征的值来确定的;
使用所述组偏移特征的值,来替代所述组索引的所述第一集合的位;以及
当确定所述索引模式指示定制索引化时,使用定制索引来替代所述组索引的第二集合的位。
14.根据权利要求10所述的计算设备,其中,所述系统缓存控制器被配置为执行操作,使得从所述客户端接收包括所述组件缓存标识符的所述系统缓存访问请求包括:
接收所述组件缓存的一个或多个特征;以及
更新所述组件缓存配置表中与所述组件缓存标识符相关的同所接收的一个或多个特征相对应的一个或多个特征。
15.根据权利要求10所述的计算设备,其中,所述系统缓存控制器被配置为执行还包括以下各项的操作:
判断在所述组件缓存配置表中是否存在所述组件缓存标识符;以及
响应于确定在所述组件缓存配置表中不存在所述组件缓存标识符,在所述组件缓存配置表中生成针对所述组件缓存标识符的记录。
16.根据权利要求10所述的计算设备,其中,所述系统缓存控制器被配置为执行还包括以下各项的操作:
在计算设备的启动时间,加载所述组件缓存配置表;以及
将所述组转变特征、所述组偏移特征和所述目标通路特征的所有可能组合包括在所加载的组件缓存配置表中,其中,每一个组合与不同的组件缓存标识符相关。
17.根据权利要求10所述的计算设备,其中,所述系统缓存控制器被配置为执行还包括以下各项的操作:
在运行时静态或者动态地,根据每一个组件缓存的所述目标通路特征,对每一个组件缓存的关联性进行定制;以及
根据每一个组件缓存的替换策略特征,对每一个组件缓存的替换策略进行定制。
18.根据权利要求10所述的计算设备,其中,所述系统缓存控制器被配置为执行还包括以下的操作:
对每一个组件缓存的缓存线大小进行定制。
19.一种其上存储有处理器可执行软件指令的非临时性处理器可读介质,所述处理器可执行软件指令使处理器和系统缓存控制器执行包括以下各项的操作:
加载被配置为存储多个组件缓存标识符的组件缓存配置表,其中,所述多个组件缓存标识符与组转变特征、组偏移特征和目标通路特征相关,所述组转变特征被配置为指示系统缓存中的组群的数量,所述组偏移特征被配置为指示组件缓存所位于的组群,所述目标通路特征被配置为指示所述组件缓存所位于的一个或多个通路,其中,所述组转变特征大于零指示通过多个组群划分组件缓存;
从客户端接收包括组件缓存标识符的系统缓存访问请求;
从所述组件缓存配置表中,获取在所述组件缓存配置表中与所述组件缓存标识符相关的组转变特征、组偏移特征和目标通路特征;以及
将系统缓存位置划分成通过所述组转变特征、所述组偏移特征和所述目标通路特征来规定的所述组件缓存。
20.根据权利要求19所述的非临时性处理器可读介质,其中,所存储的处理器可执行软件指令被配置为使所述处理器和所述系统缓存控制器执行操作,使得从所述客户端接收包括所述组件缓存标识符的所述系统缓存访问请求包括:接收所述系统缓存的物理地址和定制索引。
21.根据权利要求20所述的非临时性处理器可读介质,其中,所存储的处理器可执行软件指令被配置为使所述处理器和所述系统缓存控制器执行还包括以下各项的操作:
从所述组件缓存配置表中,获取在所述组件缓存配置表中与所述组件缓存标识符相关的索引模式;
判断所述索引模式是指示物理索引化还是定制索引化;
将所述系统缓存的所述物理地址转换成所述组件缓存的物理地址;以及
访问所述组件缓存的所述物理地址,以从所述组件缓存的所述物理地址进行读取,或者向所述组件缓存的所述物理地址进行写入。
22.根据权利要求21所述的非临时性处理器可读介质,其中,所存储的处理器可执行软件指令被配置为使所述处理器和所述系统缓存控制器执行操作,使得将所述系统缓存的所述物理地址转换成所述组件缓存的所述物理地址包括:
对所述系统缓存的所述物理地址的组索引的第一集合的位与所述系统缓存的所述物理地址的标签进行组合,其中,所述组索引的所述第一集合的位的数量是根据所述组转变的值来确定的;
使用所述组偏移特征的值,来替代所述组索引的所述第一集合的位;以及
当确定所述索引模式指示定制索引化时,使用定制索引来替代所述组索引的第二集合的位。
23.根据权利要求19所述的非临时性处理器可读介质,其中,所存储的处理器可执行软件指令被配置为使所述处理器和所述系统缓存控制器执行操作,使得从所述客户端接收包括所述组件缓存标识符的所述系统缓存访问请求包括:
接收所述组件缓存的一个或多个特征;以及
更新所述组件缓存配置表中与所述组件缓存标识符相关的同所接收的一个或多个特征相对应的一个或多个特征。
24.根据权利要求19所述的非临时性处理器可读介质,其中,所存储的处理器可执行软件指令被配置为使所述处理器和所述系统缓存控制器执行还包括以下各项的操作:
判断在所述组件缓存配置表中是否存在所述组件缓存标识符;以及
响应于确定在所述组件缓存配置表中不存在所述组件缓存标识符,在所述组件缓存配置表中生成针对所述组件缓存标识符的记录。
25.根据权利要求19所述的非临时性处理器可读介质,其中,所存储的处理器可执行软件指令被配置为使所述处理器和所述系统缓存控制器执行还包括以下各项的操作:
在计算设备的启动时间,加载所述组件缓存配置表;以及
将所述组转变特征、所述组偏移特征和所述目标通路特征的所有可能组合包括在所加载的组件缓存配置表中,其中,每一个组合与不同的组件缓存标识符相关。
26.根据权利要求19所述的非临时性处理器可读介质,其中,所存储的处理器可执行软件指令被配置为使所述处理器和所述系统缓存控制器执行还包括以下各项的操作:
在运行时静态或者动态地,根据每一个组件缓存的所述目标通路特征,对每一个组件缓存的关联性进行定制;以及
根据每一个组件缓存的替换策略特征,对每一个组件缓存的替换策略进行定制。
27.根据权利要求19所述的非临时性处理器可读介质,其中,所存储的处理器可执行软件指令被配置为使所述处理器和所述系统缓存控制器执行还包括以下各项的操作:
对每一个组件缓存的缓存线大小进行定制。
28.一种计算设备,包括:
用于加载被配置为存储多个组件缓存标识符的组件缓存配置表的单元,其中,所述多个组件缓存标识符与组转变特征、组偏移特征和目标通路特征相关,所述组转变特征被配置为指示系统缓存中的组群的数量,所述组偏移特征被配置为指示组件缓存所位于的组群,所述目标通路特征被配置为指示所述组件缓存所位于的一个或多个通路,其中,所述组转变特征大于零指示通过多个组群划分组件缓存;
用于从客户端接收包括组件缓存标识符的系统缓存访问请求的单元;
用于从所述组件缓存配置表中,获取在所述组件缓存配置表中与所述组件缓存标识符相关的组转变特征、组偏移特征和目标通路特征的单元;以及
用于将系统缓存位置划分成通过所述组转变特征、所述组偏移特征和所述目标通路特征来规定的所述组件缓存的单元。
29.根据权利要求28所述的计算设备,其中,用于从所述客户端接收包括所述组件缓存标识符的所述系统缓存访问请求的单元包括:用于接收所述系统缓存的物理地址和定制索引的单元。
30.根据权利要求29所述的计算设备,还包括:
用于从所述组件缓存配置表中,获取在所述组件缓存配置表中与所述组件缓存标识符相关的索引模式的单元;
用于判断所述索引模式是指示物理索引化还是定制索引化的单元;
用于将所述系统缓存的所述物理地址转换成所述组件缓存的物理地址的单元;以及
用于访问所述组件缓存的所述物理地址,以从所述组件缓存的所述物理地址进行读取,或者向所述组件缓存的所述物理地址进行写入的单元。
31.根据权利要求30所述的计算设备,其中,用于将所述系统缓存的所述物理地址转换成所述组件缓存的所述物理地址的单元包括:
用于对所述系统缓存的所述物理地址的组索引的第一集合的位与所述系统缓存的所述物理地址的标签进行组合的单元,其中,所述组索引的所述第一集合的位的数量是根据所述组转变特征的值来确定的;
用于使用所述组偏移特征的值,来替代所述组索引的所述第一集合的位的单元;以及
用于当确定所述索引模式指示定制索引化时,使用定制索引来替代所述组索引的第二集合的位的单元。
32.根据权利要求28所述的计算设备,其中,用于从所述客户端接收包括所述组件缓存标识符的所述系统缓存访问请求的单元包括:
用于接收所述组件缓存的一个或多个特征的单元;
用于更新所述组件缓存配置表中与所述组件缓存标识符相关的同所接收的一个或多个特征相对应的一个或多个特征的单元。
33.根据权利要求28所述的计算设备,还包括:
用于判断在所述组件缓存配置表中是否存在所述组件缓存标识符的单元;以及
用于响应于确定在所述组件缓存配置表中不存在所述组件缓存标识符,在所述组件缓存配置表中生成针对所述组件缓存标识符的记录的单元。
34.根据权利要求28所述的计算设备,还包括:
用于在计算设备的启动时间,加载所述组件缓存配置表的单元;以及
用于将所述组转变特征、所述组偏移特征和所述目标通路特征的所有可能组合包括在所加载的组件缓存配置表中的单元,其中,每一个组合与不同的组件缓存标识符相关。
35.根据权利要求28所述的计算设备,还包括:
用于在运行时静态或者动态地,根据每一个组件缓存的所述目标通路特征,对每一个组件缓存的关联性进行定制的单元;以及
用于根据每一个组件缓存的替换策略特征,对每一个组件缓存的替换策略进行定制的单元。
36.根据权利要求28所述的计算设备,还包括:
用于对每一个组件缓存的缓存线大小进行定制的单元。
CN201580038378.3A 2014-07-17 2015-06-25 用于通过组和通路将缓存灵活划分成组件缓存的方法和装置 Active CN106537361B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/333,981 2014-07-17
US14/333,981 US9612970B2 (en) 2014-07-17 2014-07-17 Method and apparatus for flexible cache partitioning by sets and ways into component caches
PCT/US2015/037681 WO2016010706A1 (en) 2014-07-17 2015-06-25 Method and apparatus for flexible cache partitioning by sets and ways into component caches

Publications (2)

Publication Number Publication Date
CN106537361A true CN106537361A (zh) 2017-03-22
CN106537361B CN106537361B (zh) 2018-09-28

Family

ID=55074693

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580038378.3A Active CN106537361B (zh) 2014-07-17 2015-06-25 用于通过组和通路将缓存灵活划分成组件缓存的方法和装置

Country Status (6)

Country Link
US (1) US9612970B2 (zh)
EP (1) EP3170085B1 (zh)
JP (1) JP6214815B2 (zh)
CN (1) CN106537361B (zh)
TW (1) TWI610172B (zh)
WO (1) WO2016010706A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107861819A (zh) * 2017-12-07 2018-03-30 郑州云海信息技术有限公司 一种缓存组负载均衡的方法、装置和计算机可读存储介质
WO2019052442A1 (zh) * 2017-09-14 2019-03-21 华为技术有限公司 一种内容填充方法和存储器
CN116185886A (zh) * 2022-12-13 2023-05-30 中国科学院声学研究所 一种匹配表系统
CN117234431A (zh) * 2023-11-14 2023-12-15 苏州元脑智能科技有限公司 缓存管理方法、装置、电子设备及存储介质

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2547191B (en) * 2016-02-05 2020-01-08 Advanced Risc Mach Ltd An apparatus and method for supporting multiple cache features
TWI636363B (zh) 2017-08-08 2018-09-21 慧榮科技股份有限公司 用來於一記憶裝置中進行動態資源管理之方法以及記憶裝置及其控制器
US10678690B2 (en) * 2017-08-29 2020-06-09 Qualcomm Incorporated Providing fine-grained quality of service (QoS) control using interpolation for partitioned resources in processor-based systems
US10747679B1 (en) * 2017-12-11 2020-08-18 Amazon Technologies, Inc. Indexing a memory region
US10908915B1 (en) 2019-07-31 2021-02-02 Micron Technology, Inc. Extended tags for speculative and normal executions
US11200166B2 (en) 2019-07-31 2021-12-14 Micron Technology, Inc. Data defined caches for speculative and normal executions
US11048636B2 (en) 2019-07-31 2021-06-29 Micron Technology, Inc. Cache with set associativity having data defined cache sets
US11010288B2 (en) 2019-07-31 2021-05-18 Micron Technology, Inc. Spare cache set to accelerate speculative execution, wherein the spare cache set, allocated when transitioning from non-speculative execution to speculative execution, is reserved during previous transitioning from the non-speculative execution to the speculative execution
US10915326B1 (en) 2019-07-31 2021-02-09 Micron Technology, Inc. Cache systems and circuits for syncing caches or cache sets
US11194582B2 (en) 2019-07-31 2021-12-07 Micron Technology, Inc. Cache systems for main and speculative threads of processors

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101118519A (zh) * 2007-09-10 2008-02-06 杭州华三通信技术有限公司 对缓存内容进行保护的方法和装置以及缓存控制器
CN101135994A (zh) * 2007-09-07 2008-03-05 杭州华三通信技术有限公司 一种划分缓存空间的方法和装置以及缓存控制器
CN101482851A (zh) * 2008-12-31 2009-07-15 中国科学院计算技术研究所 二进制翻译器中线程共享目标本地码缓存替换方法及系统
US20120246408A1 (en) * 2011-03-25 2012-09-27 Fujitsu Limited Arithmetic processing device and controlling method thereof

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01251386A (ja) * 1988-03-30 1989-10-06 Toshiba Corp システム拡張方式
JPH05324468A (ja) 1992-05-21 1993-12-07 Fujitsu Ltd 階層化キャッシュメモリ
US5434992A (en) 1992-09-04 1995-07-18 International Business Machines Corporation Method and means for dynamically partitioning cache into a global and data type subcache hierarchy from a real time reference trace
US5479627A (en) 1993-09-08 1995-12-26 Sun Microsystems, Inc. Virtual address to physical address translation cache that supports multiple page sizes
US5781926A (en) 1996-05-20 1998-07-14 Integrated Device Technology, Inc. Method and apparatus for sub cache line access and storage allowing access to sub cache lines before completion of line fill
JP3834323B2 (ja) * 2004-04-30 2006-10-18 日本電気株式会社 キャッシュメモリおよびキャッシュ制御方法
US7558920B2 (en) 2004-06-30 2009-07-07 Intel Corporation Apparatus and method for partitioning a shared cache of a chip multi-processor
JP4336848B2 (ja) * 2004-11-10 2009-09-30 日本電気株式会社 マルチポートキャッシュメモリ及びマルチポートキャッシュメモリのアクセス制御方式
JP2007034514A (ja) * 2005-07-25 2007-02-08 Fuji Xerox Co Ltd 情報処理装置
US7430145B2 (en) * 2005-09-16 2008-09-30 Hewlett-Packard Development Company, L.P. System and method for avoiding attempts to access a defective portion of memory
US20070143550A1 (en) * 2005-12-19 2007-06-21 Intel Corporation Per-set relaxation of cache inclusion
US7613898B2 (en) 2006-01-17 2009-11-03 Globalfoundries Inc. Virtualizing an IOMMU
US20070239661A1 (en) 2006-03-28 2007-10-11 Sun Microsystems, Inc. Systems and methods for a distributed in-memory database and distributed cache
US7685401B2 (en) 2006-12-27 2010-03-23 Intel Corporation Guest to host address translation for devices to access memory in a partitioned system
US8285757B2 (en) * 2007-01-31 2012-10-09 Agency For Science, Technology And Research File system for a storage device, methods of allocating storage, searching data and optimising performance of a storage device file system
US9015399B2 (en) 2007-08-20 2015-04-21 Convey Computer Multiple data channel memory module architecture
TWI382426B (zh) * 2007-10-04 2013-01-11 Realtek Semiconductor Corp 預測快取記憶體之存取位置的方法及系統
US8055847B2 (en) * 2008-07-07 2011-11-08 International Business Machines Corporation Efficient processing of data requests with the aid of a region cache
US20100115233A1 (en) 2008-10-31 2010-05-06 Convey Computer Dynamically-selectable vector register partitioning
US8745618B2 (en) 2009-08-25 2014-06-03 International Business Machines Corporation Cache partitioning with a partition table to effect allocation of ways and rows of the cache to virtual machine in virtualized environments
JPWO2011045931A1 (ja) * 2009-10-14 2013-03-04 パナソニック株式会社 情報処理装置
US8533399B2 (en) 2010-01-15 2013-09-10 International Business Machines Corporation Cache directory look-up re-use as conflict check mechanism for speculative memory requests
US8386749B2 (en) 2010-03-16 2013-02-26 Advanced Micro Devices, Inc. Address mapping in virtualized processing system
US8813085B2 (en) 2011-07-19 2014-08-19 Elwha Llc Scheduling threads based on priority utilizing entitlement vectors, weight and usage level
US9098418B2 (en) * 2012-03-20 2015-08-04 Apple Inc. Coordinated prefetching based on training in hierarchically cached processors
JP5776821B2 (ja) * 2013-08-26 2015-09-09 富士ゼロックス株式会社 情報処理装置、演算処理装置及びプログラム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101135994A (zh) * 2007-09-07 2008-03-05 杭州华三通信技术有限公司 一种划分缓存空间的方法和装置以及缓存控制器
CN101118519A (zh) * 2007-09-10 2008-02-06 杭州华三通信技术有限公司 对缓存内容进行保护的方法和装置以及缓存控制器
CN101482851A (zh) * 2008-12-31 2009-07-15 中国科学院计算技术研究所 二进制翻译器中线程共享目标本地码缓存替换方法及系统
US20120246408A1 (en) * 2011-03-25 2012-09-27 Fujitsu Limited Arithmetic processing device and controlling method thereof

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019052442A1 (zh) * 2017-09-14 2019-03-21 华为技术有限公司 一种内容填充方法和存储器
CN107861819A (zh) * 2017-12-07 2018-03-30 郑州云海信息技术有限公司 一种缓存组负载均衡的方法、装置和计算机可读存储介质
CN116185886A (zh) * 2022-12-13 2023-05-30 中国科学院声学研究所 一种匹配表系统
CN116185886B (zh) * 2022-12-13 2023-10-13 中国科学院声学研究所 一种匹配表系统
CN117234431A (zh) * 2023-11-14 2023-12-15 苏州元脑智能科技有限公司 缓存管理方法、装置、电子设备及存储介质
CN117234431B (zh) * 2023-11-14 2024-02-06 苏州元脑智能科技有限公司 缓存管理方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
TW201617891A (zh) 2016-05-16
CN106537361B (zh) 2018-09-28
JP2017527884A (ja) 2017-09-21
WO2016010706A1 (en) 2016-01-21
US20160019157A1 (en) 2016-01-21
JP6214815B2 (ja) 2017-10-18
US9612970B2 (en) 2017-04-04
TWI610172B (zh) 2018-01-01
EP3170085B1 (en) 2018-08-15
EP3170085A1 (en) 2017-05-24

Similar Documents

Publication Publication Date Title
CN106537361A (zh) 用于通过组和通路将缓存灵活划分成组件缓存的方法和装置
CN106537360A (zh) 用于具有动态分区的共享高速缓存的方法和装置
CN107636625A (zh) 用于共享系统高速缓存的虚拟化控制的方法和装置
CN105431827B (zh) 针对异构多处理器系统中的共享存储区域的动态地址协商
CN102365627B (zh) 用于缓存中通路分配及通路锁定的方法
KR102137761B1 (ko) 이종 통합 메모리부 및 그것의 확장 통합 메모리 스페이스 관리 방법
CN108713194A (zh) 使用虚拟资源视图的数据保护
CN105637492A (zh) 多核异构系统转换后备缓冲器相干性
CN106663029A (zh) 用于多处理器系统的定向事件信号告知
CN106030549B (zh) 用于对晶片外高速缓存存储器的标签集高速缓存的方法、装置和系统
CN107438837A (zh) 数据高速缓存
CN107408081A (zh) 提供对存储器的加强重放保护
CN102880557A (zh) 一种异构数据源的多级分布式高速缓存
CN108885661A (zh) 时变地址空间布局随机化
US8904114B2 (en) Shared upper level cache architecture
CN103222003A (zh) 用于根据配置信息执行原子存储器操作的存储器及方法
CN108431775A (zh) 用于高效并行计算的简化的基于任务的运行时的方法
CN107771322A (zh) 可编程集成电路中存储器资源的管理
CN109791510A (zh) 在异构计算中管理数据流
CN110073338A (zh) 翻译旁视缓冲器中的可配置的偏斜关联性
CN103890737B (zh) 映射持久存储器
CN109690502A (zh) 使用硬件控制的分离监听目录的相干互连功率降低
CN108701082A (zh) 硬件辅助的垃圾收集

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant