CN107636625A - 用于共享系统高速缓存的虚拟化控制的方法和装置 - Google Patents
用于共享系统高速缓存的虚拟化控制的方法和装置 Download PDFInfo
- Publication number
- CN107636625A CN107636625A CN201680027464.9A CN201680027464A CN107636625A CN 107636625 A CN107636625 A CN 107636625A CN 201680027464 A CN201680027464 A CN 201680027464A CN 107636625 A CN107636625 A CN 107636625A
- Authority
- CN
- China
- Prior art keywords
- cache
- component
- status command
- maintenance
- memory
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0888—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
-
- 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/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- 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/0893—Caches characterised by their organisation or structure
-
- 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/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- 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
- 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
-
- 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/15—Use in a specific computing environment
- G06F2212/152—Virtualized environment, e.g. logically partitioned system
-
- 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/60—Details of cache memory
- G06F2212/608—Details relating to cache mapping
-
- 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
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
各个方面包括用于实现针对系统高速缓存的分量高速缓存的高速缓存维护或状态操作的计算设备、系统和方法。计算设备可以产生分量高速缓存配置表,将分量高速缓存的至少一个分量高速缓存指示符分配给分量高速缓存的主设备,以及由集中式控制实体将至少一个控制寄存器映射到分量高速缓存设备指示符。计算设备可以存储分量高速缓存指示符,使得分量高速缓存指示符可由分量高速缓存的主设备访问用于发现系统高速缓存的虚拟化视图,并绕过集中式控制实体发出针对分量高速缓存的高速缓存维护或状态命令。计算设备可以绕过集中式控制实体而由与高速缓存维护或状态命令和分量高速缓存相关联的控制寄存器来接收高速缓存维护或状态命令。
Description
背景技术
当今的移动片上系统(SoC)包括基于DRAM技术来共享公共主存储器的多个子系统,例如Apps CPU、GPU和Video。每个子系统使用一个或多个本地存储器用于快速访问经常使用的数据并最小化对主存储器的访问。本地存储器通常被配置作为根据子系统需要而被软件管理或硬件管理的高速缓存。产品间的性能缩放需要增加本地存储器的大小。这种缩放策略遭受增加的区域和静态功率的缺点。而且,在大多数使用情况下,由于所有的子系统不是同时活动的,所以本地存储器的利用率可能很低。
共享系统高速缓存可以通过将所有本地存储器集中到共享的片上存储器资源来解决这些缺点。系统高速缓存可能潜在地保存区域,这是因为它的大小被预期小于所有本地存储器的总大小。在一个或两个活动子系统的常见使用情况下,系统高速缓存还被预期提供明显的省电和提升的性能。对于这些使用场景,活动子系统将访问可能较大的片上本地存储器,这可以减少对主存储器的访问次数,并且带来较高的整体性能和较低的功率。
在于其中共享高速缓存可用于SoC子系统的系统中,系统高速缓存的一部分被划分以专用于供经指派的SoC主设备使用。在这样的系统中出现了若干问题。主设备在系统运行时可能会断电。在当前的系统中,应用程序处理器子系统(APSS)管理整个共享高速缓存。如果APSS断电,则其它主设备无法执行高速缓存管理命令,诸如,去激活或刷新高速缓存分区。通过APSS管理系统高速缓存还产生较多的在管理系统高速缓存时使用额外软件交互的开销。
发明内容
各个方面的方法和设备提供了用于实现分量高速缓存(component cache)的高速缓存维护或状态操作的电路和方法。各方面的方法可以包括:存储分量高速缓存的分量高速缓存指示符使得分量高速缓存指示符可由分量高速缓存的主设备访问,绕过集中式控制实体而由所述主设备发出用于所述分量高速缓存的高速缓存维护或状态命令,以及绕过所述集中式控制实体而由与高速缓存维护或状态命令相关联的控制寄存器和所述分量高速缓存接收所述高速缓存维护或状态命令。
在一个方面中,存储分量高速缓存的分量高速缓存指示符使得所述分量高速缓存指示符可由所述分量高速缓存的主设备访问可以包括:向所述主设备提供用于所述分量高速缓存的控制空间的虚拟化视图,并且一个方面的方法还可以包括:通过绕过所述集中式控制实体而由所述主设备发现所述分量高速缓存的特征。
一个方面的方法还可以包括:将与所述高速缓存维护或状态命令相关联的所述控制寄存器和所述分量高速缓存的地址分配到所述高速缓存维护或状态命令,将数据分配到所述高速缓存维护或状态命令,以所述数据更新与所述高速缓存维护或状态命令相关联的所述控制寄存器和所述分量高速缓存,以及基于所述数据来实现所述控制寄存器的高速缓存维护或状态操作。
在一个方面中,将所述数据分配到所述高速缓存维护或状态命令可以包括将高速缓存存储器的存储器虚拟地址作为所述数据分配到所述高速缓存维护或状态命令。
一个方面的方法还可以包括:确定所述高速缓存维护或状态命令的所述数据是否包括所述高速缓存存储器的存储器虚拟地址,响应于确定所述数据是所述高速缓存存储器的存储器虚拟地址,而将所述高速缓存存储器的所述存储器虚拟地址转换成所述高速缓存存储器的存储器物理地址,以及用所述高速缓存存储器的所述存储器物理地址替换所述数据。
在一个方面中,所述高速缓存维护或状态命令的所述数据可以包括至少一个高速缓存组和至少一个高速缓存路(cache way)。在一个方面,所述控制寄存器的所述地址可以是所述控制寄存器的虚拟地址,并且一个方面的方法还可以包括将所述控制寄存器的所述虚拟地址转换成所述控制寄存器的物理地址。
一个方面的方法可以进一步包括:由所述集中式控制实体生成分量高速缓存配置表,由所述集中式控制实体将至少一个分量高速缓存指示符分配给所述主设备,由所述集中式控制实体将至少一个控制寄存器映射到所述分量高速缓存指示符,由多个主设备并发地直接访问多个控制寄存器。在这样的方面中,绕过集中式控制实体而由所述主设备发出用于所述分量高速缓存的高速缓存维护或状态命令可以包括:绕过所述集中式控制实体而由所述多个主设备并发地发出用于多个分量高速缓存的多个高速缓存维护或状态命令;以及绕过集中式控制实体而由与高速缓存维护或状态命令相关联的控制寄存器和所述分量高速缓存接收所述高速缓存维护或状态命令可包括:绕过所述集中式控制实体而由与所述多个高速缓存维护或状态命令相关联的所述多个控制寄存器和所述多个分量高速缓存并发地接收所述多个高速缓存维护或状态命令。
一个方面包括计算设备,其具有处理器,通信地连接到所述处理器的被配置为提供用于存储和获取数据的快速访问的高速缓存存储器,通信地连接到所述处理器、所述高速缓存存储器以及多个控制寄存器的系统高速缓存控制器,通信地连接到所述处理器和所述系统高速缓存控制器的集中式控制实体,通信地连接到所述系统高速缓存控制器和所述处理器、并被分配给所述处理器用于实现用于所述高速缓存存储器的分量高速缓存的高速缓存维护或状态命令的控制寄存器。在这样的方面中,所述处理器可以被配置成是所述分量高速缓存的主设备、以及被配置有处理器可执行指令以执行在上面描述的一个或多个方面的方法的操作,并且所述系统高速缓存控制器可以被配置为执行在上面描述的方面的方法中的一个或多个的操作。
一个方面包括一种具有用于用于执行在上面描述的方面的方法中的一个或多个的功能的单元的计算设备。
一个方面包括一种其上存储有处理器可执行软件指令以使得处理器执行在上面描述的方面的方法中的一个或多个的操作的非暂时性处理器可读介质。
附图说明
并入本文并构成本说明书的一部分的附图示出了本发明的示例性方面,并与在上面给出的一般性描述和在下面给出的具体实施方式一起用于解释本发明的特征。
图1是示出适合于实现一个方面的计算设备的组件框图。
图2是示出适合于实现一个方面的示例多核心处理器的组件框图。
图3是示出根据一个方面的适合于按组和路将高速缓存存储器划分成分量高速缓存的计算设备的组件框图。
图4是示出根据一个方面的按组和路被可变地划分以允许分量高速缓存的示例高速缓存存储器的示意图。
图5是示出根据一个方面的示例分量高速缓存配置表的示意图。
图6是示出根据一个方面的按组和路被可变地划分成分量高速缓存的示例系统高速缓存存储器的示意图。
图7是示出根据一个方面的主设备分量高速缓存标识符分配和高速缓存维护操作直接访问的示例的示意图。
图8是示出根据一个方面的主设备高速缓存维护操作直接访问的示例的示意图。
图9是示出根据一个方面的主设备分量高速缓存标识符分配和高速缓存维护操作直接访问的示例的示意性和过程流程图。
图10是示出用于虚拟化分量高速缓存控制寄存器的一个方面的方法的过程流程图。
图11是示出用于将分量高速缓存标识符分配给主设备的一个方面的方法的过程流程图。
图12是示出用于由主设备向分量高速缓存控制寄存器直接发出高速缓存维护操作的一个方面的方法的过程流程图。
图13是示出用于实现由主设备直接发出的用于分量高速缓存的高速缓存维护操作的一个方面的方法的过程流程图。
图14是示出根据一个方面的高速缓存维护操作直接访问的示例的示意性和过程流程图。
图15是示出根据一个方面的根据用于高速缓存维护操作直接访问的数据转换虚拟存储器地址的示例的示意性和过程流程图。
图16是示出适用于各个方面的示例移动设备的组件框图。
图17是示出适用于各个方面的示例移动设备的组件框图。
具体实施方式
将参照附图详细描述各个方面。只要可行,在整个附图中将使用相同的附图标记来指代相同或相似的部分。对特定示例和实现方案的引用是为了说明的目的,并不意图限制本发明或权利要求书的范围。
术语“计算设备”和“移动设备”在本文中可互换使用以指代蜂窝电话、智能手机、个人或移动多媒体播放器、个人数据助理(PDA)、膝上型计算机、平板电脑计算机、智能本、超极本、掌上电脑、无线电子邮件接收机、支持多媒体因特网的蜂窝电话、无线游戏控制器以及包括存储器和可编程处理器的类似个人电子设备。尽管各个方面对于具有有限能量资源的移动计算设备(诸如智能电话)特别有用,但是这些方面通常在实现多个存储设备和有限能量预算的任何电子设备中是有用的,其中,降低存储器设备的功耗可以延长移动计算设备的电池工作时间。
本文使用的术语“片上系统”(SoC)是指一组互连的电子电路,典型地但不排它地包括硬件核心、存储器和通信接口。硬件核心可以包括各种不同类型的处理器,诸如,通用处理器、中央处理单元(CPU)、数字信号处理器(DSP)、图形处理单元(GPU)、加速处理单元(APU)、辅助处理器、单核心处理器和多核心处理器。硬件核心还可以体现其它硬件和硬件组合,诸如,现场可编程门阵列(FPGA)、专用集成电路(ASCI)、其它可编程逻辑器件、分立门逻辑、晶体管逻辑、性能监视硬件、监察硬件和时间参考。集成电路可以被配置为使得集成电路的组件驻留在诸如硅的单个半导体材料上。
在一个方面中,用于对共享系统高速缓存的虚拟化控制的方法和装置允许当集中式控制实体(诸如应用程序处理器子系统(APSS)CPU)断电或活动时实现系统高速缓存操作。通常,集中式控制实体参与对共享系统高速缓存的控制。当集中式控制实体断电时,对共享系统高速缓存的控制被中断。即使集中式控制实体是活动的时,通过集中式控制实体通信序列也会引起等待时间并产生不希望的开销,这对于需要快速响应的情况是不理想的。该方法和装置可以实现虚拟化系统,该虚拟化系统可以为单独的SoC主设备提供直接访问以不经过或绕过集中式控制实体来控制系统高速缓存。系统高速缓存可以被虚拟化以向每个主设备提供由主设备拥有的系统高速缓存的各部分的虚拟化视图。高速缓存维护操作可以由虚拟化系统中的系统高速缓存的分量高速缓存(高速缓存分区或子高速缓存)的主设备直接实现,其中,分量高速缓存的主设备仅知道其分量高速缓存的虚拟地址。
采用共享高速缓存的系统可以包括:集中式实体(诸如,APSS CPU),其具有系统的所有子系统或组件的视图,其中系统的所有子系统或组件可以是共享系统高速缓存的相应分量高速缓存的主设备。此集中式实体可以包括:管理程序(hypervisor),其可以使用提供给每个子系统或组件的系统分量高速缓存标识符来初始化分量高速缓存配置表,该分量高速缓存配置表将每个子系统或组件与相应的分量高速缓存进行相关。分量高速缓存配置表可以被维护在诸如系统高速缓存控制空间内的寄存器的硬件中,并且分量高速缓存标识符(CCID)可以由其相应的子系统或组件保存。虽然管理程序可以保持对分量高速缓存配置表的控制,但是通过将分量高速缓存标识符提供给其相应的子系统或组件,子系统或组件可以对硬件(诸如系统高速缓存控制空间中的控制寄存器)做出与分量高速缓存标识符对应的直接高速缓存维护和状态命令。以这种方式,可以绕过-或者不依赖于-如运行管理程序的APSS CPU一样的集中式实体,而针对系统高速缓存的分量高速缓存来实现高速缓存维护和状态命令。如果APSS CPU断电,则子系统或组件主设备仍然可以经由系统高速缓存控制空间内的寄存器,使用分量高速缓存的分量高速缓存标识符,来对分量高速缓存做出直接命令。
分配有一个或多个分量高速缓存标识符的每个子系统或组件主设备可以访问其相应的分量高速缓存的虚拟化视图。虚拟化视图可以包括与每个分量高速缓存相关联的多个控制寄存器和状态寄存器。控制寄存器可以实现针对其相应的分量高速缓存中的全部或一部分的不同的功能,并存储与其相应的分量高速缓存中的全部或一部分有关的数据。控制寄存器可以基于供子系统或组件的存储器管理单元控制的粒度而被分配给分量高速缓存中的不同部分。状态寄存器可以提供对其相应的分量高速缓存的虚拟化容量和错误指示。
子系统或组件主设备可能只知道其相应的分量高速缓存。高速缓存维护操作可以根据指定的分量高速缓存参数(例如,组和/或路)和/或系统高速缓存地址来实现。由于子系统或组件主设备仅知道其分量高速缓存的虚拟化版本,因此与高速缓存维护命令相关联的数据可以包括可以被转换为系统高速缓存的物理地址以实现该命令的分量高速缓存的虚拟地址。分量高速缓存的虚拟化视图向各种主设备提供各种分量高速缓存的虚拟所有权,使得主设备可以与其它主设备直接访问并发地(包括与其同时地)直接访问相关的分量高速缓存控制和状态寄存器,而不同步各主设备之间的直接访问。如本文所使用地,对“并发地”执行的操作的引用涵盖同时发生的操作以及在时间上至少部分地重叠的两个或更多个操作。
图1示出了包括与适用于各个方面的远程计算机50通信的计算设备10的系统。计算设备10可以包括具有处理器14、存储器16、通信接口18和存储接口20的SoC 12。计算设备还可以包括诸如有线或无线调制解调器的通信组件22、存储组件24、天线26,用于建立到无线网络30和/或网络接口28的无线连接32,或者连接到去往因特网40的有线连接44。处理器14可以包括各种硬件核心中的任何一个、以及多个处理器核心。SoC 12可以包括一个或多个处理器14。计算设备10可以包括多个SoC 12,由此增加处理器14和处理器核心的数量。计算设备10还可以包括不与SoC 12相关联的处理器核心14。各个处理器14可以是如在下面参照图2描述的多核心处理器。处理器14中的每一个可以被配置用于可以与计算设备10的其它处理器14相同或不同的特定目的。具有相同或不同配置的处理器核心和处理器14中的一个或多个可以被分组在一起作为计算设备10的一个或多个子系统的一部分,如在下面参照图3描述地。
SoC 12的存储器16可以是易失性或非易失性存储器,其被配置为存储供处理器14访问的数据和处理器可执行代码。在一个方面中,一个或多个存储器16可以包括易失性存储器,诸如随机存取存储器(RAM)或主存储器、高速缓存存储器或硬件寄存器。这些存储器16可以被配置为临时保存从非易失性存储器请求的、从非易失性存储器加载到存储器16以期将来基于多种因素访问的有限数量的数据和/或处理器可执行代码指令,和/或由处理器14生成且被临时存储用于将来的快速访问而不被存储在非易失性存储器中的中间处理数据和/或处理器可执行代码指令。在一个方面中,存储器16可以被配置为至少临时存储数据结构,诸如用于管理经分区的高速缓存存储器的分量高速缓存的表。在一个方面中,存储器16可以被配置为存储用于实现高速缓存维护操作的数据。如在下面进一步详细讨论地,每个处理器核心可以访问高速缓存存储器的多个分量高速缓存。
计算设备10和/或SoC 12可以包括被配置用于各种目的的一个或多个存储器16。在一个方面中,一个或多个存储器16可以被配置为专用于以使得能够访问数据结构信息以便管理分量高速缓存访问请求和高速缓存维护操作的方式来存储用于存储分量高速缓存信息的数据结构。当存储数据结构的存储器16是非易失性的时,那么即使在计算设备10的电源被关闭之后,存储器16也可以保存数据结构的信息。当电源重新打开并且计算设备10重新启动时,存储在非易失性存储器16中的数据结构的信息可以对计算设备10是可用的。
通信接口18、通信组件22、天线26和/或网络接口28可以协同工作以使得计算设备10能够通过无线网络30经由无线连接32和/或有线网络44与远程计算设备50进行通信。无线网络30可以使用各种无线通信技术(包括例如用于无线通信的无线电频谱)来实现,以向计算设备10提供到因特网40的连接,使得其可以通过该连接与远程计算设备50交换数据。
存储接口20和存储组件24可以协同工作以允许计算设备10将数据存储在非易失性存储介质上。存储组件24可以被配置得非常类似于在其中存储组件24可以存储数据结构的存储器16的一个方面,使得数据结构信息可以被一个或多个处理器14访问。非易失性的存储组件24即使在计算设备10的电源已被关闭之后,也可以保留数据结构信息。当电源重新接通并且计算设备10重新启动时,存储组件24上的数据结构信息可以对计算设备10是可用的。存储接口20可以控制对存储设备24的访问并且允许处理器14从存储设备24读取数据并将数据写入存储设备24。
计算设备10的部分或全部组件可以被不同地布置和/或组合,而仍然提供必要的功能。而且,计算设备10可以不限于每个组件中的一个,并且每个组件的多个实例可以被包括在计算设备10的各种配置中。
图2示出了适合于实现一个方面的多核心处理器14。参照图1,多核心处理器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仅作为例子提供,而决不意味着要进行限制。计算设备10、SoC 12或多核心处理器14可以单独或组合地包括少于或多于在本文示出和描述的四个处理器核心200、201、202、203。
图3图示了被配置为将系统高速缓存存储器划分成分量高速缓存的计算设备。参照图1和2,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可以是SoC 12的组件,其管理各个处理器306、310、312、314对各个存储器的访问和维护。在一个方面中,系统集线器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请求的条目(item)而发生高速缓存未命中(cache miss)。在一个方面中,系统高速缓存302可以用作各个处理器和子系统的暂存(scratchpad)存储器。与不采用系统高速缓存302的具有类似架构的SoC的本地高速缓存存储器的组合相比,系统高速缓存302的存储空间和物理尺寸可以更小。然而,如本文进一步描述地,对系统高速缓存302的管理可以在尽管系统高速缓存的存储空间和物理尺寸较小时也允许SoC 12的更高的节能以及相同或更好的执行速度,并且可以允许使用简单的软件调用流。
系统高速缓存控制器304可以管理各个处理器和子系统对系统高速缓存302的访问和维护。对系统高速缓存302的部分访问管理可以包括管理对系统高速缓存存储器空间的分区。系统高速缓存存储器空间可以以各种方式来划分,包括但不限于以高速缓存字、高速缓存行、高速缓存页、高速缓存路、高速缓存组、高速缓存体(cache bank)、高速缓存标签中的分区指示字段或这些参数的组合来划分。在2014年7月17日提交的标题为“Method AndApparatus For Flexible Cache Partitioning By Sets And Ways Into ComponentCaches”的美国专利申请NO.14/333,981中描述了按路和组进行高速缓存存储器空间划分的各方面,其被通过引用并入以描述关于按路和组进行高速缓存存储器空间划分的细节。对系统高速缓存存储器空间进行划分可以产生系统高速缓存存储器空间中的具有各种大小和位置的分量高速缓存。系统高速缓存控制器304可以包括诸如多个寄存器(在图7和8中示出)的硬件,被配置为维护这些分量高速缓存的记录并且将各个特性/特征/参数与每个分量高速缓存进一步相关,如参照图5、7和8描述地。寄存器也可以被配置为实现用于相应的分量高速缓存的高速缓存维护操作,如参照图7-13进一步描述地。
系统高速缓存控制器304可以接收指定特定的分量高速缓存的系统高速缓存访问请求。系统高速缓存访问请求还可以包括系统高速缓存访问请求的分量高速缓存的特性。在一个方面中,系统高速缓存控制器304可以在相同或不同的通信总线上在分量高速缓存配置请求中单独地接收分量高速缓存的特性。分量高速缓存配置请求可以是独立信号,或者可以与系统高速缓存访问请求相关联。系统高速缓存控制器304可以作为系统高速缓存访问请求的组件来接收分量高速缓存配置请求。为了便于解释,下面的示例是根据作为系统高速缓存访问请求的一部分被接收的分量高速缓存特性来描述的,这并不意味着限制系统高速缓存控制器304可以用于接收分量高速缓存特性的方式。应该理解地是,分量高速缓存特性可以经由各种相关联的或独立的信号来接收。
系统高速缓存控制器304可以使用所指定的分量高速缓存的信息和相关的特性来控制对分量高速缓存及其相关记录的访问、更新和/或创建,以及保存分量高速缓存及其相关的记录。在一个方面中,系统高速缓存控制器304可以基于来自系统高速缓存302的主设备的系统高速缓存访问请求来动态地将系统高速缓存存储器空间划分为分量高速缓存。在2014年7月17日提交的标题为“Method And Apparatus For A Shared Cache WithDynamic Partitioning”的序列号为NO.14/334,010的美国专利申请中描述了将系统高速缓存存储器空间动态划分为分量高速缓存的各方面,其被通过引用并入本文以描述关于将系统高速缓存存储器空间动态地划分成分量高速缓存的细节。主设备可以包括SoC 12的各种处理器和子系统。
系统高速缓存控制器304的控制寄存器可以被配置为管理用于分量高速缓存的高速缓存维护和状态命令/操作。控制寄存器可以被分配给由分量高速缓存标识符标识的特定的分量高速缓存,并将分量高速缓存的虚拟化视图提供给其主设备,诸如各种处理器和子系统中的一个。硬件可以被配置为实现针对分量高速缓存中的全部或部分的不同的功能,并存储与分量高速缓存中的全部或部分相关的数据。分量高速缓存的主设备可以使用分量高速缓存标识符向被分配给分量高速缓存的控制寄存器做出缓存维护和状态命令。系统高速缓存控制器304的这些和其它方面将参照图5和7-13进一步描述地。
CPU群集306可以包括成组的若干通用处理器和/或通用处理器核心。CPU集群306可以经由系统高速缓存控制器304访问和维护系统高速缓存302。CPU集群306与系统高速缓存控制器304之间的通信可以由协议转换器308从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的针对信息的请求可以首先被导向可以控制对RAM 328的访问的存储器控制器326。导向RAM 328的针对信息的请求可以由系统高速缓存控制器304,并且所得到的信息可以被返回到系统高速缓存控制器304以被写入到分量高速缓存并且从分量高速缓存返回到进行系统高速缓存访问请求的组件。在一个方面中,所得到的信息可以被直接地或经由系统高速缓存控制器304返回给进行系统高速缓存访问请求的组件,而不被写入到分量高速缓存中。
在一些方面中,高速缓存存储器控制器304的各部分可以以硬件和/或固件来实现和配置以执行各方面的方法的操作。在一些方面中,高速缓存存储器控制器304可以是由控制器可执行指令配置以执行各方面的方法的操作的可编程控制器。在一些方面中,高速缓存存储器控制器304可以通过固件和控制器可执行指令的组合来实现和配置,以执行各方面的方法的操作。
本文对SoC 12及其各个组件的描述仅仅是示例性的而不是限制性的。SoC 12的若干组件可以可变地配置、组合和分离。若干组件可以以更多或更少的数量被包括,并且可以在SoC 12内或者在SoC 12外被不同地定位和连接。类似地,诸如其它存储器、处理器、子系统、接口和控制器之类的许多其它组件可以被包括在SoC 12中并且与系统高速缓存控制器304通信,以便访问系统高速缓存302。
图4图示了按组和/或路被可变地划分的系统高速缓存存储器以允许分量高速缓存。诸如上面在图3中描述的系统高速缓存的系统高速缓存400可以被配置为包括多个路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的全部。在一个方面中,系统高速缓存400还可以使用多群组的路402-416来划分。继续具有八个路402-416的系统高速缓存400的例子,每个分区可以包括:路402-416中的两个,这导致产生四个分区;或路402-416中的四个,这导致产生两个分区。
系统高速缓存400可以另外以具有N个组的定义群组来划分以创建分量高速缓存。在一个方面中,系统高速缓存控制器使用的分量高速缓存的特性可以确定可以将N个组划分成多少个组群组(set group)。在一个方面中,这个特性可以被称为组位移(set shift)。例如,由于系统高速缓存400没有被划分为组群组,因此组位移可以是指示不按组群组进行划分的值,诸如空值或零。在另一个例子中,系统高速缓存420可以被划分成两个组群组422、424。虽然系统高速缓存420与系统高速缓存400是相同的系统高速缓存,但是系统高速缓存420示出了当组位移是指示以两个组群组422、424进行划分的值时的系统高速缓存400。对于系统高速缓存420,系统高速缓存控制器可以使用通过以两个组群组422、424对系统高速缓存420的划分而创建的额外分量高速缓存,来管理对系统高速缓存存储器空间的使用。分量高速缓存可以包括按路划分(way partition)和组群组划分(set grouppartition)的任何组合而创建的系统高速缓存420的分区,如在本文进一步详细描述地。
类似地,除了如下之外,系统高速缓存430可以与系统高速缓存400相同:系统高速缓存430示出了组位移是指示以四个组群组432、434、436、438进行划分的值时的系统高速缓存400。类似地,系统高速缓存440示出了当组位移是指示以八个组群组442、444、446、448、450、452、454、456进行划分的值时的系统高速缓存400。在于图4中示出的这些示例性系统高速缓存430和440中的每个中,系统高速缓存控制器可以使用通过以四个组群组432、434、436、438或八个组群组442-456划分系统高速缓存430、440而创建的额外分量高速缓存,来管理对系统高速缓存存储器空间的使用。这些示例中的分量高速缓存可以包括按路划分、组群组划分或者其它形式的划分的任何组合而创建的系统高速缓存430、440的分区,如在本文进一步详细描述地。
可以使用各种形式的记号来指示组位移,诸如整数。在一个方面中,指示以其将系统高速缓存存储器空间划分的组群组的数量的组位移特性可以指示组群组的数量的递增变化。例如,组位移特性值的用以指示组群组数目的下一更高变化的变化可以指示增加、相乘、指数地增加、或以组群组的数量的某个其它函数增加的增量变化。对于图4中示出的例子,组群组的数量是2的幂,其中幂是组位移特性。组群组的大小可以相等,并且每个组群组的组数量也可以是2的幂。可以想到地是,组的数量可以是另一数量的幂,这可能需要一些硬件被不同地配置(如不以整数2的幂来划分)以计算如下面进一步描述的组索引。
在一个方面中,由系统高速缓存控制器使用的分量高速缓存的特性可以确定分量高速缓存被定位在其中的组群组422、424、432、434、436、438、442、444、446、448、450、452、454和456。在一个方面中,这个特性可以被称为组偏移(set offset)。可以使用各种形式的记号来指示组偏移。
继续本文描述的示例性的组群组,不算N个组418,所描述的组群组的总数是14。对于这个示例,组偏移可以是三比特二进制码,其中当不实现组群组时不需要组偏移。当实现两个组群组时,组群组422、424分别与组偏移=000和100相关。当实现四个组群组时,组群组432、434、436、438可以分别与组偏移=000、010、100和110相关。类似地,当实现八个组群组时,组群组442-456可以分别与组偏移=000、001、010、011、100、101、110和111相关。
本文对通过按路和/或组划分系统高速缓存所创建的分量高速缓存的描述仅仅是示例性的而不是限制性的。为了便于解释并且仅作为示例,各个方面是根据路和/或组来描述的。但是,也可以使用几个其它参数来创建分量高速缓存,诸如,高速缓存字、高速缓存行、高速缓存页、高速缓存路、高速缓存组、高速缓存体或这些参数的组合。
图5图示了分量高速缓存配置表500,其可以被系统高速缓存控制器用来管理各个分量高速缓存的特性。参照图1-4,分量高速缓存配置表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中的其它值的许多其它组合。针对对于组偏移特性字段508可能的其它值,可能有甚至更多的组合,其中该值表示由组位移特性字段506中的组位移=1所指示的两个组群组分区中的另一个。类似示例包括:针对组位移特性字段506中的其它可能的值,不同的分量高速缓存的组和路分区的更大数量的组合。
在一个方面中,系统高速缓存的已知分区(即,整个高速缓存、或仅路高速缓存分区(way only cache partition))可以被包括在分量高速缓存配置表500中。尽管分量高速缓存配置表500先前对于这些已知分区是不必要的(因为这些已知分区没有包括系统高速缓存的按组的分区),但这些已知的分区可以被包括在分量高速缓存配置表500中。当组位移特性字段506包括如在行518和526中那样的组位移=0或空值,系统高速缓存的已知分区可以在分量高速缓存配置表500中被定义。此组位移值可以指示与其关联的分量高速缓存未按组来分割。按组来划分的分量高速缓存可能与大于零的组位移值相关联。可以使用各种记号来表示组件组位移特性字段506中的组位移的值。
分量高速缓存配置表500中的组偏移特性字段508可以用于指示可以指示相关的分量高速缓存驻留在其中的组群组的组偏移特性。如上面讨论地,分量高速缓存是部分地由组群组分区与路分区组合而成。组位移特性可以标识组群组分区的数量,以及组偏移特性可以指示在该数量个组群组分区内的包含相关的分量高速缓存的特定的组群组。如上面讨论地,每个组群组可以与要在组偏移特性字段508中在分量高速缓存配置表500中表示的特定组偏移特性值相关。更具体地,在一个方面中,组位移和组偏移的组合可以定义包含分量高速缓存的组群组,这是因为针对一个组位移值的组偏移值可以与针对另一个组位移值的组偏移值重叠。例如,每个组位移可以包括可以与第一组群组相关的组偏移=000。这是因为:对于指示多个组群组的每个组位移值,至少存在第一组群组。因此,针对组位移=1的组偏移=000可以表示对于针对另一组位移值的组偏移=000而言的不同的组群组。也可以为各种可能的组群组分配唯一的组偏移值。可以使用各种记号来表示组件组偏移特性字段508中的组偏移的值。
分量高速缓存配置表500中的目标路特性字段510可以用于指示可以指示相关分量高速缓存驻留在其中的路群组分区的目标路特性。就像组群组一样,路群组可以包括分量高速缓存可以驻留在其中的系统高速缓存存储器空间的路。对于任何分量高速缓存,无论组位移或者组偏移是多少,目标路可以指示系统高速缓存的单个或连续路的任何组合。分量高速缓存的路群组分区可以允许在运行时静态地和动态地定制分量高速缓存的关联性。在分量高速缓存配置表500中,目标路值的所有组合可以与组位移值和组偏移值的任何组合相关。分量高速缓存配置表500中的组位移、组偏移和目标路的组合为系统高速缓存控制器定义了所有可能的分量高速缓存。在一个方面中,目标路特性值可以由比特向量表示,其中向量中的每个比特表示系统高速缓存的各个路。在分量高速缓存配置表500中,比特矢量以十六进制表示。
返回与行522相关的示例,在行522中表示的系统高速缓存与在图4中的系统高速缓存420相同,具有有八个路和两个组。在该示例中,目标路特性字段510包含值0xF0,其也可以表示为二进制比特向量1111 0000。因此,在该示例中,分量高速缓存可以驻留在由“F”或由“1”值指示的四个路中,“1”值与图4中的系统高速缓存420的路402、404、406和410相关。可以使用各种记号来表征目标路特性字段510中的目标路的值。
可以使用分量高速缓存配置表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,其它字段502、512、514和516不必定义分量高速缓存,并且可以是可变的并允许改变其值。
图6示出了按组和路被可变地划分成分量高速缓存的系统高速缓存600。在图6中所描述的并且在本文描述的分量高速缓存仅仅是示例,决不意味着要进行限制。参照图1-5,在图6中示出的分量高速缓存与在图5的行518、520、522、524和526中示出的分量高速缓存的非限制性示例相关。分量高速缓存602与分量高速缓存配置表500中的行518相关。在该示例中,在行518中,组位移值为空值或零。因为没有组群组分区,所以组偏移值是不相关的,但也可以为空值或零。如上所述,目标路包括如由目标路=0xFF指示的系统高速缓存600的所有路402-416,目标路=0xFF在比特向量中可以被表示为1111 1111。
在图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中,组位移值为空值或零。因为没有组群组分区,所以组偏移值是不相关的,但也可以为空值或零。目标路包括如由目标路=0x01指示的系统高速缓存600的路416,目标路=0x01在比特向量中可以被表示为0000 0001。
图6仅示出了可以由系统高速缓存控制器使用分量高速缓存配置表500和控制寄存器来管理的潜在分量高速缓存的小样例。虽然在图6中示出分量高速缓存604、606、608和610占用了系统高速缓存600中的非重叠位置(除了分量高速缓存602),但是这个图示仅仅是为了便于解释,并且如许多分量高速缓存与分量高速缓存602重叠,这些分量高速缓存可以重叠其它分量高速缓存。不是所有的分量高速缓存可能同时是活动的,因此分量高速缓存的重叠的使用可以由系统高速缓存控制器管理,如本文进一步讨论地。不同分量高速缓存的参数可以导致每个分量高速缓存的不同高速缓存行大小。由于每个分量高速缓存包括系统高速缓存的全部高速缓存组的分区,因此与每个分量高速缓存相关联的高速缓存行可以少于高速缓存路中的全部高速缓存组。这可能导致产生与如果未按高速缓存组划分相比较少的高速缓存行,并且由组位移特性定义的每个分量高速缓存的高速缓存组的数量可以确定每个分量高速缓存的高速缓存行大小。
在一个方面中,分量高速缓存可以被激活和去激活。由于在由系统高速缓存管理的存储器空间中存在分量高速缓存重叠的可能性,所以为了避免高速缓存冲突,可以去激活与活动的分量高速缓存重叠的分量高速缓存。另外,为了节省电力,可以去激活未使用的分量高速缓存。分量高速缓存可以在运行时被激活和去激活,以部分地为了动态划分由系统高速缓存管理/对系统高速缓存可见的双倍数据速率(DDR)存储器空间,并将分量高速缓存分配给经指定的主设备。系统高速缓存的一些主设备可能只在相对较短的时间段内需要分量高速缓存,并且分量高速缓存使用的系统高速缓存存储器空间可以被保留用于主设备以避免与使用或维护系统高速缓存的其它主设备的高速缓存冲突。此外,当主设备结束使用分量高速缓存时,那么分量高速缓存可以被去激活并且系统高速缓存空间不被保留,使得系统高速缓存存储器空间和分量高速缓存可用于其它主设备。
图7示出了根据一个方面的主设备分量高速缓存标识符分配和高速缓存维护操作直接访问的示例。参照图1-6所示,计算设备可以包括各种处理器和子系统,诸如,应用程序子系统702、视频子系统320和调制解调器子系统704。处理器和子系统320、702、704可以经由系统高速缓存控制器304与系统高速缓存302和控制空间700通信。处理器或子系统之一(例如,应用程序子系统702)可以用作集中式控制实体,用于管理系统高速缓存302的分量高速缓存602、604、606、608、706。如下面进一步描述地,处理器和子系统320、702、704中的每个可以用作一个或多个分量高速缓存602、604、606、608、706的主设备。在一个方面中,应用程序子系统702可以在系统高速缓存中设置分量高速缓存,并且控制空间700可以将分量高速缓存602、604、606、608、706的虚拟化视图提供给其主设备320、702、704用于执行高速缓存维护和状态命令/操作(例如,高速缓存容量的虚拟化视图)以及刷新整个分量高速缓存。
在一个方面中,用于管理分量高速缓存602、604、606、608、706的集中式控制实体,在这个示例和其它示例中的应用程序子系统702可以具有可以访问系统高速缓存302的所有处理器和子系统的视图。在计算设备的引导序列期间,或者在运行时期间,应用程序子系统702可以产生、加载或更新分量高速缓存配置表,并将其写入指定的一组分量高速缓存配置表(CCCT)控制寄存器708,用于存储分量高速缓存配置表。在一个方面中,应用程序子系统702可以实现管理程序/虚拟机管理器726,以管理应用程序子系统702和分量高速缓存配置表控制寄存器组708之间的交互,用于操控分量高速缓存配置表。应用程序子系统702还可以经由管理程序726与一组通用控制寄存器710进行交互,用于执行系统高速缓存302的高速缓存维护和状态命令/操作。
应用程序子系统702还可以经由管理程序726将多组控制寄存器组712-720分配给分量高速缓存的相应主设备320、702、704,用于对各个分量高速缓存602、602执行高速缓存维护和状态命令/操作。为了将多组控制寄存器712-720分配给相应的主设备320、702、704,应用程序子系统702可以向存储器管理单元730、746指示用于多组控制寄存器712-720的虚拟地址,使得每个主设备320、702、704具有针对每组控制寄存器712-720的虚拟地址的映射。在一个方面中,存储器管理单元730、746可以不提供与其上游主设备无关的一组控制寄存器的映射,并且通过这样做可以禁止主设备访问与其它分量高速缓存相关的未分配给上游主设备的该组控制寄存器,从而防止对未分配的分量高速缓存602、604、606、608、706的意外干预。在一个方面中,应用程序子系统702可以向存储器管理单元730、746指示虚拟地址到每组控制寄存器712-720的物理地址的相关性。在一个方面中,对相关性的指示可以是物理地址和虚拟地址的一对一相关,或者关于确定相关性的算法。
在一个方面中,分配给每组控制寄存器712-720的分量高速缓存602、604、606、608、706可以由相应的分量高速缓存标识符(诸如分量高速缓存配置表中的分量高速缓存标识符(CCID))来标识。如在图7中的示例中指示地,控制寄存器712(CCID 0控制寄存器)可以与分量高速缓存602(CCID 0分量高速缓存)相关。类似地,在相同的示例中,控制寄存器714(CCID 1控制寄存器)可以与分量高速缓存604(CCID 1分量高速缓存)相关、控制寄存器716(CCID 2控制寄存器)可以与分量高速缓存606(CCID 2分量高速缓存)相关,以及控制寄存器718(CCID 3控制寄存器)可以与分量高速缓存608(CCID 3分量高速缓存)相关。
应用程序子系统702还可以经由管理程序726将处理器和子系统320、702、704分配作为系统高速缓存302的相应的分量高速缓存602、604、606、608、706的主设备。应用程序子系统702可以向处理器和子系统320、702、704分配对它们是其主设备的相应的分量高速缓存602、604、606、608、706的指示符738-744。处理器和子系统320、702、704可以存储对它们是其主设备的相应的分量高速缓存602、604、606、608、706的指示符738-744。指示符738-744可以包括相应的分量高速缓存602、604、606、608、706的分量高速缓存标识符。
在一个方面中,指示符738-744可以用于定位在分量高速缓存配置表(CCCT)708中的分量高速缓存配置信息、以及正确的一组控制寄存器712-720,该组控制寄存器712-720向主设备320、702、704提供针对其相应的分量高速缓存602、604、606、608、706的控制空间700的虚拟化视图,使得它们看不见针对其它分量高速缓存602、604、606、608、706的控制空间700或系统高速缓存的其它部分。主设备320、702、704可以使用指示符738-744来发现相应的分量高速缓存602、604、606、608、706的大小、位置和其它特征,诸如,分量高速缓存配置表中的特征。
在一个方面中,高速缓存维护和状态命令可以由主设备320、702、704经由应用程序子系统702发出。主设备320、702、704可以向应用程序子系统702发送针对分量高速缓存602、604、606、608、706的高速缓存维护或状态命令。接收到高速缓存维护或状态命令后,应用程序子系统702可以经由存储器管理单元730和系统高速缓存控制器304,将高速缓存维护或状态命令发送给与分量高速缓存602、604、606、608、706相关的一组控制寄存器712-720。在另一个方面中,高速缓存维护和状态命令可以由主设备320、702、704直接发出而不经过应用程序子系统702,如下面进一步描述地。
在一个方面中,存储器管理单元730可以将高速缓存维护或状态命令的与分量高速缓存602、604、606、608、706相关联的虚拟地址转换为与分量高速缓存602、604、606、608、706相关联的一组控制寄存器712-720的物理地址。以这种方式,高速缓存维护或状态命令可以被引导到一组恰当的控制寄存器712-720。系统高速缓存控制器304可以控制高速缓存维护或状态命令是否可以被接受用于该组恰当的控制寄存器712-720,并且可以将数据写入该组恰当的控制寄存器712-720以实现针对分量高速缓存602、604、606、608、706的高速缓存维护或状态命令/操作。在图7中的示例中,应用程序子系统702代表主设备320、702、704发出的高速缓存维护或状态命令是由虚线指示的。
在一个方面中,应用程序子系统702可以实现信任区域732或安全操作环境,应用程序子系统702可以从信任区域732或安全操作环境将高速缓存维护或状态命令发出给控制空间700。信任区域732可以发出高速缓存维护或状态命令给多组特定的控制寄存器712-720。
在一个方面中,对处理器或子系统320、702、704的执行的调用可以触发处理器和子系统320、702、704的高速缓存维护或状态命令。该调用可以源自各种应用程序722、高级操作系统(HLOS)内核724或由应用程序子系统702执行的管理程序726。在一个方面中,应用程序子系统702可能断电,并且处理器或子系统320、704可以由计算设备的另一部件触发。无论应用程序子系统702是上电还是断电,作为经被提供有相应的分量高速缓存指示符740-744相应的分量高速缓存604-608的主设备,处理器和子系统320、704都具有与分量高速缓存指示符740-744相关联的多组控制寄存器714-718的虚拟化视图。
继续图7中的例子,分配了分量高速缓存指示符740(在该示例中为CCID1)的视频子系统320具有一组相应的控制寄存器组714(在本示例中为CCID1控制寄存器)的虚拟化视图。类似地,分配了分量高速缓存指示符742、744(在该示例中为CCID 2和CCID 3)的调制解调器子系统704具有一组相应的控制寄存器716、718的虚拟化视图(在该示例中为CCID 2控制寄存器和CCID 3控制寄存器)。具有一组相应的控制寄存器714-718的虚拟视图的处理器或子系统320、704可以向一组相应的控制寄存器714-718直接发出高速缓存维护和状态命令。可以由处理器或者子系统320、704的处理器或者组件(诸如视频固件734或者调制解调器固件738)使用恰当的分量高速缓存指示符740-744以标识一组目标分量高速缓存控制寄存器714-718,来发出高速缓存维护和状态命令。
在图7中的例子中,由处理器和子系统320、704作为相应的分量高速缓存604-608的主设备向多组相应的控制寄存器714-718直接发出的高速缓存维护或状态命令是由从视频子系统320到一组控制寄存器组714、以及从调制解调器子系统704到多组控制寄存器组716、718的实线指示的。分量高速缓存604 608的虚拟化视图向相应的主设备320、702、704提供分量高速缓存604-608的虚拟所有权。这样的虚拟所有权可以使得主设备320、702、704能够与其它主设备320、702、704的直接访问并发地(例如,同时地)直接访问多组相应的控制寄存器714-718,而不同步主设备320、702、704之间的直接访问。于是,主设备320、702、704可以并发地(例如,同时地)发出高速缓存维护和状态命令给多组相应的控制寄存器714-718,并且多组相应的控制寄存器714-718可以并发地(例如,同时地)接收高速缓存维护和状态命令。
图8示出了根据一个方面的主设备高速缓存维护操作直接访问的示例。参照图1-7,图8中的例子示出了图7中的例子的一个方面,使得应用程序子系统702被断电,并且视频子系统320向已被分配了分量高速缓存指示符740(在这个例子中为CCID 1)的与分量高速缓存604(在该示例中为CCID 1分量高速缓存)相关联的一组控制寄存器714(在本示例中为CCID1控制寄存器)直接发出高速缓存维护或状态命令。尽管应用程序子系统702被断电,但是视频子系统320保存其被分配的高速缓存指示符740,并且MMU 746仍然被配置为具有到控制寄存器的映射。通过保存高速缓存指示符740,即使没有通过应用程序子系统702或者在本示例中的集中式控制实体与该组控制寄存器714进行通信,视频子系统320也保存了该组控制寄存器714的虚拟化视图。为简化解释,在图8中省略了图7的元件。图8还提供了下面进一步详细讨论的该组控制寄存器714的例子。
如图7所示,控制空间700可以包括多组控制寄存器708-720。多组控制寄存器712-720的每组可以包括用于实现针对其相应的分量高速缓存602、604、606、608、706的控制和状态命令/操作的控制寄存器。为了便于解释,图8示出了针对与分量高速缓存604相关的一组控制寄存器714的控制寄存器800-808,视频子系统320是分量高速缓存604的主设备。
控制寄存器800-808中的每一个可以被配置为实现针对其相关的分量高速缓存604的高速缓存维护或状态命令/操作。控制寄存器800-808可以包括激活/去激活寄存器800、当前分配的组/路寄存器802和高速缓存维护操作寄存器804-808。激活/去激活寄存器800可以被配置为激活和去激活由主设备320使用的分量高速缓存604。
在一个方面中,当激活/去激活寄存器800例如通过比特标志=1被设置为活动的时,可以防止任何重叠的分量高速缓存被系统高速缓存控制器304激活。系统高速缓存控制器304可以允许当没有重叠的分量高速缓存是活动的时候将激活码写入激活/去激活寄存器,或者例如通过比特标志=0将重叠的分量高速缓存的所有激活/去激活寄存器设置为去激活。在一个方面中,分量高速缓存配置表可以包括:重叠特性字段,其存储可以指示相关的分量高速缓存是可以允许还是防止当相关的分量高速缓存是活动的时与其它分量高速缓存重叠的值。响应于指示重叠被接受的重叠值,系统高速缓存控制器304可以允许激活重叠的分量高速缓存,并使用分量高速缓存配置表中的针对分量高速缓存的替换策略来管理分量高速缓存的重叠。响应于指示重叠不被接受的重叠值,系统高速缓存控制器304可以防止将重叠的分量高速缓存激活,并且通知主设备无法激活分量高速缓存。
目标路寄存器802可以用于指示分量高速缓存604的某些路,用于实现控制或状态命令/操作。高速缓存维护操作寄存器804-808可以表示用于基于分量高速缓存604内的地址或地址范围来实现针对分量高速缓存604的指定部分的特定高速缓存维护操作的控制寄存器。例如,高速缓存维护操作寄存器804-808可以被配置为实现高速缓存清理、高速缓存无效、或高速缓存清理和失效维护命令。
高速缓存维护操作寄存器804-808可以使用不同的地址类型来指示分量高速缓存604的用于实现缓存维护操作的区域。在一个方面中,高速缓存维护操作寄存器804可以被配置为在由与分量高速缓存604的一部分相关的系统高速缓存302的组和/或路指示的位置处实现针对分量高速缓存604的高速缓存维护操作。高速缓存维护操作寄存器806可以被配置为在由存储器物理地址和分量高速缓存604的该部分的大小指示的位置处实现针对分量高速缓存604的高速缓存维护操作。高速缓存维护操作寄存器808可以被配置为在由针对分量高速缓存604的该部分的基本偏移和存储器虚拟地址指示的位置处实现针对分量高速缓存604的高速缓存维护操作。在一个方面中,高速缓存维护操作寄存器可以被配置成使用虚拟地址范围来实现高速缓存维护操作。地址类型可以涉及分量高速缓存604的部分或者可变大小,其可以包括高速缓存字、高速缓存行、高速缓存页、高速缓存路、高速缓存组、高速缓存体或者这些参数的组合。控制寄存器组714可以包括针对高速缓存维护操作和寻址类型的每个组合的分开的高速缓存维护操作寄存器804-808。
图8中的例子表示视频子系统320作为分量高速缓存604的主设备,对控制寄存器800-808中的至少一个的直接访问。在一个方面中,控制寄存器800-808的访问是直接的,这是因为发出高速缓存维护或状态命令可以通过绕过或不涉及诸如应用程序子系统702之类的集中式控制实体来完成。视频子系统320可以发起并发送直接高速缓存维护或状态命令。在一个方面中,直接高速缓存维护或状态命令可以包括:有关的控制寄存器800-808和有关的分量高速缓存604的信息,其根据指示符740或通过使用指示符740以从控制空间700发现该信息来获取。有关的控制寄存器800-808的信息可以包括基于发出的高速缓存维护或状态命令的有关的控制寄存器800-808的地址偏移。例如,用于激活/停用寄存器800的虚拟地址可以用于将激活/去激活命令引导至激活/去激活寄存器800。
从主设备320发出的高速缓存维护或状态命令的虚拟地址可以被转换为有关的控制寄存器800-808的物理地址。在一个方面中,转换可以由系统存储器管理单元746来实现,系统存储器管理单元746在产生、加载或更新分量高速缓存配置表时针对控制寄存器800-808确定虚拟地址时加载有转换表或算法。在一个方面中,系统存储器管理单元746可以预先加载有用于将控制寄存器800-808的虚拟地址转换为物理地址的转换表或算法。在向激活/去激活寄存器800发出激活/去激活命令的示例中,激活/去激活命令还可以包括用于写入激活/去激活寄存器800的数据,诸如针对上述比特标志的数据或其它数据,该其它数据可以更具体地指示要激活或去激活的分量高速缓存604的部分。
在一个方面中,为了指示目标路或按高速缓存组和/或路的高速缓存维护操作而发出的高速缓存维护或状态命令可以类似地涉及:获取有关的控制寄存器800-808的虚拟地址,例如目标路寄存器802和高速缓存维护操作寄存器804,以及将虚拟地址转换为有关的控制寄存器800-808的物理地址。这些高速缓存维护或状态命令还可以涉及获取分量高速缓存604的信息。为了指示目标路或按高速缓存组和/或路的高速缓存维护操作而发出的高速缓存维护或状态命令可以包括:用于写入目标路寄存器802和高速缓存维护操作寄存器804的数据,用于指示分量高速缓存604的部分以实现高速缓存维护或状态命令/操作。在该示例中,数据可以包括对用于实现高速缓存维护或状态命令/操作的目标路或高速缓存组和/或路的指示。
在一个方面中,用于指示按存储器虚拟地址的高速缓存维护操作以及有关的分量高速缓存602、604、606、608、706的一部分的大小或基本偏移的高速缓存维护或状态命令可以类似地涉及:获取有关的控制寄存器800-808例如高速缓存维护操作寄存器806、808的虚拟地址。发出高速缓存维护或状态命令还可以涉及:将虚拟地址转换为有关的控制寄存器800-808的物理地址。
对于标识分量高速缓存604的用于实现高速缓存维护或状态命令/操作的部分的高速缓存维护或状态命令,可以实现额外的地址转换以转换高速缓存维护或状态命令的数据部分,如参照图15描述地。数据部分可以包括分量高速缓存604内的内容的存储器虚拟地址,其中高速缓存维护或状态命令/操作将对该内容生效。为了实现针对分量高速缓存604的高速缓存维护或状态命令/操作,高速缓存维护操作寄存器806、808可以需要以分量高速缓存604内的内容为目标的请求的存储器物理地址。作为发出的高速缓存维护或状态命令的数据而转换的存储器虚拟地址可以被转换成用于分量高速缓存604的存储器物理地址。在一个方面中,数据转换可以由系统存储器管理单元746来实现,该系统存储器管理单元746可以在产生、加载或更新分量高速缓存配置表时针对分量高速缓存602、604、606、608、706确定虚拟地址时加载有转换表或算法。在一个方面中,系统存储器管理单元746或系统高速缓存控制器304可以预加载有用于将分量高速缓存602、604、606、608、706的存储器虚拟地址转换成存储器物理地址的数据转换表或算法。
图9示出了根据一个方面的主设备分量高速缓存标识符分配和高速缓存维护操作直接访问的示例。参照图1-8,在一个方面中,计算设备可以产生分量高速缓存配置表,并将分量高速缓存的指示符分配给分量高速缓存主设备,作为计算设备的引导序列的一部分。计算设备可以使用安全的信任区域环境732来进行引导902,以确保引导过程对于恶意代码是安全的。引导过程可以发起管理程序906作为集中式控制实体的执行。
管理程序726可以在系统高速缓存控制器304中产生分量高速缓存配置表906。在一个方面中,分量高速缓存配置表可以基于提供给计算设备的用于划分系统高速缓存存储器的程序指令来产生。在一个方面中,分量高速缓存配置表可以基于从分量高速缓存配置表的先前配置的存储中获取的信息来产生。
管理程序726可以向分量高速缓存主设备中的每一个提供对于相应的分量高速缓存908的至少一个指示符。在一个方面中,分量高速缓存主设备900可以包括参照图1-3、7和8描述的处理器和子系统。如上面参照图7和8描述的指示符可以包括分量高速缓存标识符、与分量高速缓存相关的多组控制寄存器的虚拟地址、和/或分量高速缓存的虚拟地址、组和/或路。
管理程序726可以将与分量高速缓存相关联的多组恰当的控制寄存器映射到系统存储器管理单元746中的每个主设备910。利用主设备900和多组控制寄存器之间的映射信息,可以使得存储器管理单元746能够以将由主设备900发出的高速缓存维护或状态命令的控制寄存器的虚拟地址转换为物理地址,以将高速缓存维护或状态命令的数据递送给控制寄存器。
一旦分量高速缓存配置表产生、分量高速缓存指示符分配和控制寄存器映射完成,管理程序726可以发起高级操作系统912并且许可高级操作系统加载处理器和子系统映像914。高级操作系统724可以调用主设备916的功能,这可以提示主设备900发现其已经被分配的分量高速缓存能力918。在一个方面中,主设备900可能仅能够发现其已经被分配的分量高速缓存指示符和/或位置918,并且可以通过读取相关的控制寄存器920来发现分量高速缓存能力。主设备900可以发出高速缓存维护或状态命令到经由直接访问相关的控制寄存器而分配给主设备900的分量高速缓存922。在一个方面中,由主设备900发出的第一缓存维护或状态命令可以是用于分量高速缓存的激活命令。
图10示出了用于虚拟化分量高速缓存控制寄存器的一个方面的方法1000。方法1000可以由如本文所描述的计算设备(诸如由集中式控制实体和分量高速缓存主设备)来执行。在框1002中,计算设备可以进行引导。在可选的框1004中,计算设备可以发起信任区域安全环境以确保引导过程不被恶意代码破坏。在可选框1006中,计算设备可以发起管理程序来管理分量高速缓存配置,并且在一些方面中作为集中式控制实体的一部分进行访问和/或维护。计算设备不必需使用信任区安全环境来进行引导,也不必需使用管理程序来管理分量高速缓存配置、以及在某些方面的访问和/或维护。然而,在各个方面中,信任区域和管理程序的实现可以有助于保护计算设备免受恶意攻击以及管理计算资源。
在框1008中,计算设备可以将系统高速缓存存储器划分成分量高速缓存存储器,如参照图11进一步描述地。在框1010中,计算设备可以发起高级操作系统。在框1012中,运行高级操作系统的计算设备可以对处理器或子系统进行函数调用。函数调用可以提示处理器或子系统使用分配给该处理器或子系统的分量高速缓存。
在框1014中,计算设备可以经由处理器或子系统,通过向与分量高速缓存相关的激活/去激活控制寄存器发出激活命令,来激活分配给处理器或子系统的分量高速缓存,如进一步参照图12描述地。
图11示出了用于将分量高速缓存指示符分配给主设备的一个方面的方法1100。方法1100可以由诸如集中式控制实体、分量高速缓存主设备、系统存储器管理单元、系统高速缓存控制器和分量高速缓存控制寄存器之类的在本文描述的计算设备执行。在框1102中,计算设备可以产生或加载分量高速缓存配置表。在一个方面中,分量高速缓存配置表可以基于提供给计算设备用于划分系统高速缓存存储器的程序指令来产生。在一个方面中,分量高速缓存配置表可以基于从分量高速缓存配置表的先前配置的存储中获取的信息来产生。
在框1104中,计算设备可以将分量高速缓存指示符分配给相应的分量高速缓存的主设备。在框1106中,计算设备可以将控制寄存器分配或映射到分量高速缓存指示符信息。在一个方面中,每个主设备可以是至少一个分量高速缓存的主设备,并且可以被分配针对作为其主设备的每个分量高速缓存的分量高速缓存指示符。如上所述,分量高速缓存指示符可以包括相应的分量高速缓存的分量高速缓存标识符、与相应的分量高速缓存相关的控制寄存器的虚拟地址、和/或虚拟地址。处理器和子系统可以存储作为其主设备的相应的分量高速缓存的分量高速缓存指示符。
在一个方面中,分量高速缓存指示符可以向主设备提供用于它们相应的分量高速缓存的控制空间的虚拟化视图,使得主设备看不见其它分量高速缓存的控制空间或者系统高速缓存的其它部分。主设备可以使用分量高速缓存指示符来发现相应的分量高速缓存的大小、位置和其它特征,例如,分量高速缓存配置表的特征。在一个方面中,存储分量高速缓存指示符允许主设备使用分量高速缓存指示符以对与主设备的分量高速缓存相关联的控制寄存器做出直接高速缓存维护和状态命令。在这样的方面中,主设备不需要集中式控制实体的帮助而向控制寄存器发出高速缓存维护和状态命令,并因此,即使集中式控制实体断电,也可以做出直接高速缓存维护和状态命令。
图12示出了用于由主设备向分量高速缓存控制寄存器直接发出高速缓存维护或状态命令/操作的一个方面的方法1200。方法1200可以由如本文所描述的计算设备(诸如由集中式控制实体和分量高速缓存主设备)来执行。在一个方面中,方法1200可以被实现为用于激活分量高速缓存的方法1000的框1014的一部分。在一个方面中,方法1200还可以被实现用于基于高速缓存组、高速缓存路或具有大小或基本偏移的高速缓存存储器虚拟地址中的一个或多个来发出任何高速缓存维护或状态命令/操作,包括激活、去激活、指示目标路、或高速缓存清理、高速缓存失效、或高速缓存清理和无效。
在框1202中,计算设备可以经由主设备选择分配给主设备的分量高速缓存指示符。如上所述,主设备可以被分配多个分量高速缓存指示符,这些指示符将主设备与多个分量高速缓存相关联。分量高速缓存指示符可以包括分量高速缓存的分量高速缓存标识符、与分量高速缓存相关的控制寄存器的虚拟地址、和/或相应的分量高速缓存的虚拟地址中的一个或多个。
在框1204中,计算设备可以经由主设备识别用于针对与所选择的分量高速缓存指示符相关的分量高速缓存实现的高速缓存维护或状态命令/操作。在框1206中,计算设备可以将用于实现高速缓存维护或状态命令/操作的控制寄存器的虚拟地址分配给高速缓存维护或状态命令/操作。
如上所述,不同的高速缓存维护或状态命令/操作可以基于不同的数据,其可以包括要被写入到控制寄存器用于实现高速缓存维护或状态命令/操作的数据。在一个方面中,数据可以表示的值诸如:标志值或目标路,或者当由高速缓存组和/或路标识的分量高速缓存可以在没有操纵的情况下被写入到控制寄存器时的位置。在一个方面中,数据可以代表分量高速缓存的位置或部分,其中要执行高速缓存维护或状态命令/操作。在这样的方面中,分量高速缓存的位置或部分可以在高速缓存维护或状态命令/操作中由存储器虚拟地址表示,所述存储器虚拟地址可以是分量高速缓存的主设备已知的系统高速缓存的虚拟地址。
在确定框1208中,计算设备可以确定用于高速缓存维护或状态命令/操作的数据是否是存储器虚拟地址。
响应于确定针对高速缓存维护或状态命令/操作的数据是存储器虚拟地址(即,确定框1208=“是”),计算设备可以在框1210中将分量高速缓存的存储器虚拟地址分配到高速缓存维护或状态命令/操作的数据部分。在框1214中,计算设备可以将高速缓存维护或状态命令/操作发送给针对高速缓存维护或状态命令/操作的并与分量高速缓存相关联的控制寄存器。参照图15描述了将分量高速缓存的存储器虚拟地址分配到高速缓存维护或状态命令/操作的数据部分以及发送高速缓存维护或状态命令/操作的另一个方面。
响应于确定针对高速缓存维护或状态命令/操作的数据不是存储器虚拟地址(即,确定框1208=“否”),计算设备可以在框1212中将包括诸如如下各项的值的数据分配到高速缓存维护或状态命令/操作的数据部分:标志值或目标路,或者当由高速缓存组和/或路标识分量高速缓存时的位置。计算设备可以在框1214中将高速缓存维护或状态命令/操作发送给针对高速缓存维护或状态命令/操作的并与分量高速缓存相关联的控制寄存器。参照图14描述了另一个方面,其将数据分配给高速缓存维护或状态命令/操作的数据部分以及发送高速缓存维护或状态命令/操作。如上所述,将高速缓存维护或状态命令/操作发送给针对高速缓存维护或状态命令/操作的并与分量高速缓存相关联的控制寄存器,可以经由系统存储器管理单元和系统高速缓存控制器中的一个或多个,通过在主设备和控制寄存器之间直接进行发送来完成,而无需集中式控制实体的帮助。
图13示出了用于实现由主设备直接发出的针对分量高速缓存的高速缓存维护或状态命令/操作的一个方面的方法1300。方法1300可以由如本文所述的计算设备(例如由集中式控制实体、分量高速缓存主设备和系统存储器管理单元)执行。在一个方面中,方法1300可以响应于方法1200的框1214中的高速缓存维护或状态命令/操作的发送来实现。
在框1302中,计算设备可以经由系统存储器管理单元和系统高速缓存控制器,接收寻址到与高速缓存维护或状态命令/操作以及分量高速缓存相关联的恰当的控制寄存器的高速缓存维护或状态命令/操作。
在框1304中,计算设备可以经由系统存储器管理单元和系统高速缓存控制器,将用于控制寄存器的虚拟地址转换为控制寄存器的对应物理地址。如上所述,可以使用响应于产生分量高速缓存配置表或者预先加载到计算设备而提供给计算设备的存储器映射或算法,来完成控制寄存器的虚拟地址与物理地址之间的转换。
同样如上所述,高速缓存维护或状态命令/操作的数据可以采用多种格式,包括不需要提供给控制寄存器的转换的数据、以及诸如系统高速缓存存储器的存储器虚拟地址(其需要转换到存储器物理地址以实现高速缓存维护或状态命令/操作)。在确定框1306中,计算设备可以确定高速缓存维护或状态命令/操作的数据是否是存储器虚拟地址。在一个方面中,该确定可以基于控制寄存器的虚拟或物理地址与控制寄存器的功能之间的相关性来进行。计算设备可以包含识别特定虚拟或物理地址处的控制寄存器是否被配置为接收用于实现其高速缓存维护或状态命令/操作的存储器地址的信息。
响应于确定高速缓存维护或状态命令/操作的数据是存储器虚拟地址(即,确定框1306=“是”),计算设备可以在框1308中将高速缓存维护或者状态命令/操作的存储器虚拟地址数据转换成系统高速缓存的存储器物理地址,以便实现高速缓存维护或状态命令/操作。就像将控制寄存器虚拟地址转换为物理地址一样,存储器虚拟地址和存储器物理地址之间的转换可以使用响应于产生分量高速缓存配置表或被预加载到计算设备而提供给计算设备的存储器映射或算法来完成。在一个方面中,存储器地址的转换可以由系统存储器管理单元和系统高速缓存控制器来实现。作为转换的一部分,高速缓存维护或状态命令/操作的存储器虚拟地址数据可以被存储器物理地址替换。
在框1310中,计算设备可以用由高速缓存维护或状态命令/操作提供的数据来更新与分量高速缓存以及高速缓存维护或状态命令/操作相关联的控制寄存器。在框1312中,计算设备可以基于高速缓存维护或状态命令/操作的数据,来针对指定的分量高速缓存或分量高速缓存内的位置,实现高速缓存维护或状态命令/操作。参照图15描述了使用作为数据的存储器虚拟地址来更新针对高速缓存维护或状态命令/操作的控制寄存器的另一个方面。
响应于确定高速缓存维护或状态命令/操作的数据不是存储器虚拟地址(即,确定框1306=“否”),计算设备可以在框1310中用由高速缓存维护或状态命令/操作提供的数据更新与分量高速缓存以及高速缓存维护或状态命令/操作相关联的控制寄存器。在框1312中,计算设备可以基于高速缓存维护或状态命令/操作的数据,进一步实现针对指定的分量高速缓存或分量高速缓存内的位置的高速缓存维护或状态命令/操作。参照图15描述了用该数据更新针对高速缓存维护或状态命令/操作的控制寄存器的另一个方面。
图14图示了根据一个方面的高速缓存维护操作直接访问的示例。在一个方面中,计算设备可以实现高速缓存维护或状态命令/操作,包括被配置为标识目标控制/状态寄存器800-808的位置的虚拟地址(VA)1402、以及用于实现高速缓存维护或者状态命令/操作的数据1404。在一个方面中,主设备(例如视频子系统320)的处理器1400可以发出包括虚拟地址1402和数据1404的高速缓存维护或状态命令/操作。主设备320的存储器管理单元746可以将虚拟地址1402转换为对应于目标控制/状态寄存器800-808的物理地址(PA)1406,其中虚拟地址1402标识高速缓存维护或状态命令/操作的目标控制/状态寄存器800-808的位置。存储器管理单元746可以使用各种已知技术将虚拟地址1402转换成物理地址1406。包括数据1404以及现在从虚拟地址1402导出的物理地址1406的高速缓存维护或状态命令/操作,可以由系统高速缓存控制器304使用物理地址1406路由到对应的目标控制/状态寄存器800-808,在该示例中是高速缓存维护操作寄存器804。
图15示出根据一个方面的根据用于高速缓存维护操作直接访问的数据转换虚拟存储器地址的示例。在一个方面中,计算设备可以实现高速缓存维护或状态命令/操作,包括被配置为标识目标控制/状态寄存器800-808的位置的虚拟地址(VA)、以及作为数据的虚拟地址(VA)1500用于实现高速缓存维护或状态命令/操作。
在一个方面中,主设备(例如视频子系统320)的处理器1400可以发出包括虚拟地址1402和作为数据的虚拟地址1500的高速缓存维护或状态命令/操作。作为数据1500的虚拟地址可以包括:分配给主设备302的分量高速缓存中的位置的虚拟地址,其用于实现高速缓存维护或状态命令/操作并被写入到高速缓存维护或状态命令/操作的数据部分。主设备320的存储器管理单元746可以将配置成标识高速缓存维护或状态命令/操作的目标控制/状态寄存器800-808的位置的虚拟地址1402转换成对应于目标控制/状态寄存器800-808的物理地址(PA)1406。存储器管理单元746还可以将分配给主设备302的分量高速缓存中的位置的虚拟地址1402转换成对应于分量高速缓存中的位置的物理地址的物理地址(PA)。所转换的物理地址可以作为作为数据的物理地址1502写入到高速缓存维护或状态命令/操作。因此,可以将作为数据的物理地址1502写入到高速缓存维护或状态命令/操作的数据部分。存储器管理单元746可以使用各种已知技术将虚拟地址1402和作为数据的虚拟地址1500转换成物理地址1406和作为数据的物理地址1502。包括物理地址1404、以及从作为数据的虚拟地址1500导出的现在的作为数据的物理地址1502的高速缓存维护或状态命令/操作,可以由系统高速缓存控制器304利用物理地址1406路由到对应的目标控制/状态寄存器800-808,在这个例子中是高速缓存维护操作寄存器804。高速缓存维护操作寄存器804可以使用作为数据的物理地址1502来实现针对分量高速缓存的物理地址的高速缓存维护或状态命令/操作。
图16示出了适用于各个方面的示例移动设备。参照图1-14,移动设备1600可以包括参照图1-3、7-9、14和15描述的计算设备和组件。移动设备1600可以包括耦合到触摸屏控制器1604和内部存储器1606的处理器1602。处理器1602可以是被指定用于通用或专用处理任务的一个或多个多核集成电路。内部存储器1606可以是易失性或非易失性存储器,也可以是安全的和/或加密的存储器,或不安全的和/或未加密的存储器,或其任何组合。可以使用的存储器类型的示例包括但不限于DDR、LPDDR、GDDR、WIDEIO、RAM、SRAM、DRAM、P-RAM、R-RAM、M-RAM、STT-RAM和嵌入式DRAM。触摸屏控制器1604和处理器1602还可以耦合到触摸屏面板1612,诸如电阻式传感触摸屏、电容式传感触摸屏、红外传感触摸屏等。另外,计算设备1600的显示器不需要触摸屏幕能力。
移动设备1600可以具有用于发送和接收通信的一个或多个无线电信号收发机1608(例如,Peanut、蓝牙、Zigbee、Wi-Fi、RF无线电)和天线1610,其彼此耦合和/或耦合到处理器1602。收发机1608和天线1610可以与上述电路一起使用以实现各种无线传输协议栈和接口。移动设备1600可以包括蜂窝网络无线调制解调器芯片1616,该蜂窝网络无线调制解调器芯片1616使得能够经由蜂窝网络进行通信。
移动设备1600可以包括耦合到处理器1602的外围设备连接接口1618。外围设备连接接口1618可以被单独配置为接受一种类型的连接,或者可以被配置为接受各种类型的通用或专有的物理和通信连接,诸如USB、FireWire、Thunderbolt或PCIe。外围设备连接接口1618还可以耦合到类似配置的外围设备连接端口(未示出)。
移动设备1600还可以包括用于提供音频输出的扬声器1614。移动设备1600还可以包括壳体1620,壳体1620由塑料、金属或材料的组合构成,用于容纳本文所述的全部或部分组件。移动设备1600可以包含耦合到处理器1602的电源1622,诸如一次性或可再充电电池。可充电电池还可以耦合到外围设备连接端口以从移动设备1600外部的源接收充电电流。移动设备1600还可以包括用于接收用户输入的物理按钮1624。移动设备1600还可以包括用于打开和关闭移动设备1600的电源按钮1626。
上面描述的各个方面也可以在各种移动设备(诸如图17所示的膝上型计算机1700)内实现。参照图1-16,膝上型计算机1700可以包括参照图1-3和7-9描述的计算设备和组件。许多膝上型计算机包括用作计算机的点击设备的触摸板触摸表面1717,并且因此可以接收类似于并且如上所述的在配备有触摸屏显示器的计算设备上实现的拖动、滚动和轻拂手势。膝上型计算机1700通常将包括耦合到易失性存储器1712和诸如闪存的磁盘驱动器1713的大容量非易失性存储器的处理器1711。另外,计算机1700可以具有用于发送和接收可以连接到耦合到处理器1711的无线数据链路和/或蜂窝电话收发机1716的电磁辐射的一个或多个天线1708。计算机1700还可以包括耦合到处理器1711的软盘驱动器1714和光盘(CD)驱动器1715。在笔记本配置中,计算机壳体包括全部耦合到处理器1711的触摸板1717、键盘1718和显示器1719。计算设备的其它配置可以包括耦合到处理器(例如,经由USB输入)的计算机鼠标或轨迹球,这也是众所周知的,其也可以结合各个方面使用。
用于在可编程处理器上执行以用于执行各个方面的操作的计算机程序代码或“程序代码”可以用高级编程语言如C、C++、C#、Smalltalk、Java、JavaScript、Visual Basic、结构化查询语言(例如,Transact-SQL)、Perl或其它各种编程语言来书写。存储在本申请中使用的计算机可读存储介质上的程序代码或程序可以指其格式可被处理器理解的机器语言代码(诸如目标代码)。
许多计算设备操作系统内核被组织成用户空间(其中运行非特权代码)和内核空间(特许代码在其中运行)。在Android和其它通用公共许可(GPL)环境中,这种分离是特别重要的,其中作为内核空间的一部分的代码必须是GPL许可的,而在用户空间中运行的代码可能不是GPL许可的。应该理解,除非另有明确说明,本文讨论的各种软件组件/模块可以在内核空间或用户空间中实现。
前述方法描述和过程流程图仅作为说明性示例提供,并不意图要求或暗示各个方面的操作必须按所给出的顺序执行。如本领域技术人员将认识到地,前述方面中的操作顺序可以以任何顺序执行。诸如“此后”、“接着”、“接下来”等词语并不旨在限制操作的顺序;这些单词只是用来指导读者通过对方法的描述。此外,例如使用冠词“一”、“一个”或“该”的单数形式的对权利要求要素的任何引用不应被解释为将该要素限制为单数。
结合各个方面描述的各种说明性的逻辑框、模块、电路和算法操作可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,上面已经根据其功能一般地描述了各种说明性的组件、框、模块、电路和操作。这样的功能是以硬件还是软件来实现,取决于施加在整个系统上的特定应用和设计约束。本领域技术人员可以针对每个特定应用以各种方式实现所描述的功能,但是这样的实施决定不应该被解释为导致偏离权利要求的范围。
用于实现结合本文公开的方面描述的各种说明性逻辑单元、逻辑框、模块和电路的硬件可以用被设计以执行本文所述的功能的通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑器件、分立门或晶体管逻辑、分立硬件组件或其任何组合来实现或执行。通用处理器可以是微处理器,但是替代地,处理器可以是任何传统的处理器、控制器、微控制器或状态机。处理器还可以被实现为计算设备的组合,例如,DSP和微处理器的组合、多个微处理器的组合、一个或多个微处理器与DSP核心的结合、或者任何其它这样的配置。或者,一些操作或方法可以由特定于给定功能的电路来执行。
在一个或一个以上方面中,所描述的功能可以以硬件、软件、固件或其任何组合来实施。如果以软件实施,则可将功能作为一个或一个以上指令或代码存储在非暂时性计算机可读介质或非暂时性处理器可读介质上。本文公开的方法或算法的操作可以体现在驻留在非暂时性计算机可读或处理器可读存储介质上的处理器可执行软件模块中。非暂时性计算机可读或处理器可读存储介质可以是可以由计算机或处理器访问的任何存储介质。作为示例而非限制,这种非暂时性计算机可读或处理器可读介质可以包括RAM、ROM、EEPROM、闪存、CD-ROM或其它光盘存储器、磁盘存储器或其它磁存储设备、或者可以用于以指令或数据结构的形式存储期望的程序代码并且可以由计算机访问的任何其它介质。在本文使用的盘和碟包括压缩盘(CD)、激光盘、光盘、数字多功能盘(DVD)、软盘和蓝光盘,其中盘通常磁性地复制数据,而碟用激光光学地复制数据。以上的组合也包括在非暂时性计算机可读和处理器可读介质的范围内。此外,方法或算法的操作可以驻留作为可以被并入计算机程序产品的非暂时性处理器可读介质和/或计算机可读介质上的代码和/或指令的一个或任何组合或集合。
提供所公开方面的先前描述以使得本领域的任何技术人员能够制作或使用权利要求书。这些方面的各种修改对于本领域技术人员来说将是显而易见的,并且在不脱离权利要求书的范围的情况下,可以将在本文定义的一般原理应用于其它方面。因此,本发明不旨在限于本文所示的方面,而是要符合与以下权利要求书以及本文所公开的原理和新颖特征一致的最宽范围。
Claims (30)
1.一种用于实现针对分量高速缓存的高速缓存维护或状态操作的方法,包括:
存储分量高速缓存的分量高速缓存指示符,使得所述分量高速缓存指示符可由所述分量高速缓存的主设备访问;
绕过集中式控制实体而由所述主设备发出针对所述分量高速缓存的高速缓存维护或状态命令;以及
绕过所述集中式控制实体而由与高速缓存维护或状态命令和所述分量高速缓存相关联的控制寄存器接收所述高速缓存维护或状态命令。
2.根据权利要求1所述的方法,其中,存储分量高速缓存的分量高速缓存指示符,使得所述分量高速缓存指示符可由所述分量高速缓存的主设备访问包括:向所述主设备提供针对所述分量高速缓存的控制空间的虚拟化视图,
所述方法还包括:通过绕过所述集中式控制实体而由所述主设备发现所述分量高速缓存的特征。
3.如权利要求1所述的方法,还包括:
将与所述高速缓存维护或状态命令和所述分量高速缓存相关联的所述控制寄存器的地址分配到所述高速缓存维护或状态命令;
将数据分配到所述高速缓存维护或状态命令;
用所述数据更新与所述高速缓存维护或状态命令和所述分量高速缓存相关联的所述控制寄存器;以及
基于所述数据来实现所述控制寄存器的高速缓存维护或状态操作。
4.如权利要求3所述的方法,其中,将数据分配到所述高速缓存维护或状态命令包括:将高速缓存存储器的存储器虚拟地址作为所述数据分配到所述高速缓存维护或状态命令。
5.如权利要求3所述的方法,还包括:
确定所述高速缓存维护或状态命令的所述数据是否包括高速缓存存储器的存储器虚拟地址;
响应于确定所述数据是所述高速缓存存储器的存储器虚拟地址,将所述高速缓存存储器的所述存储器虚拟地址转换成所述高速缓存存储器的存储器物理地址;以及
用所述高速缓存存储器的所述存储器物理地址替换所述数据。
6.如权利要求3所述的方法,其中,所述高速缓存维护或状态命令的所述数据包括至少一个高速缓存组和至少一个高速缓存路。
7.如权利要求3所述的方法,其中,所述控制寄存器的所述地址是所述控制寄存器的虚拟地址,
所述方法还包括:将所述控制寄存器的所述虚拟地址转换成所述控制寄存器的物理地址。
8.如权利要求1所述的方法,还包括:
由所述集中式控制实体产生分量高速缓存配置表;
由所述集中式控制实体将至少一个分量高速缓存指示符分配给所述主设备;
由所述集中式控制实体将至少一个控制寄存器映射到所述分量高速缓存指示符;以及
由多个主设备直接并发地访问多个控制寄存器,其中:
绕过所述集中式控制实体而由所述主设备发出针对所述分量高速缓存的高速缓存维护或状态命令包括:绕过所述集中式控制实体而由所述多个主设备并发地发出针对多个分量高速缓存的多个高速缓存维护或状态命令;以及
绕过所述集中式控制实体而由与高速缓存维护或状态命令和所述分量高速缓存相关联的控制寄存器接收所述高速缓存维护或状态命令包括:绕过所述集中式控制实体而由与所述多个高速缓存维护或状态命令和所述多个分量高速缓存相关联的所述多个控制寄存器并发地接收所述多个高速缓存维护或状态命令。
9.一种计算设备,包括:
处理器;
高速缓存存储器,其被配置为提供用于存储和获取通信地连接到所述处理器的数据的快速访问;
系统高速缓存控制器,其通信地连接到所述处理器、所述高速缓存存储器和多个控制寄存器;
集中式控制实体,其通信地连接到所述处理器和所述系统高速缓存控制器;以及
控制寄存器,其通信地连接到所述系统高速缓存控制器和所述处理器,并被分配给所述处理器用于实现针对所述高速缓存存储器的分量高速缓存的高速缓存维护或状态命令,
其中,所述处理器被配置成是所述分量高速缓存的主设备,并被配置有处理器可执行指令以执行包括以下各项的操作:
存储所述分量高速缓存的分量高速缓存指示符,使得所述分量高速缓存指示符可由所述分量高速缓存的所述主设备访问;以及
绕过所述集中式控制实体而由所述主设备发出针对所述分量高速缓存的高速缓存维护或状态命令,以及
其中,所述系统高速缓存控制器被配置为执行包括如下项的操作:绕过所述集中式控制实体而为与所述高速缓存维护或状态命令和所述分量高速缓存相关联的所述控制寄存器接收所述高速缓存维护或状态命令。
10.根据权利要求9所述的计算设备,其中:
所述处理器被配置有处理器可执行指令以执行操作使得,存储所述分量高速缓存的分量高速缓存指示符,使得所述分量高速缓存指示符可由所述分量高速缓存的所述主设备访问包括:向所述主设备提供针对所述分量高速缓存的控制空间的虚拟化视图,以及
所述处理器被配置有处理器可执行指令以执行还包括如下项的操作:通过绕过所述集中式控制实体而由所述主设备发现所述分量高速缓存的特征。
11.根据权利要求9所述的计算设备,其中:
所述处理器被配置有处理器可执行指令以执行还包括如下各项的操作:
将与所述高速缓存维护或状态命令和所述分量高速缓存相关联的所述控制寄存器的地址分配到所述高速缓存维护或状态命令;以及
将数据分配到所述高速缓存维护或状态命令;以及
所述系统高速缓存控制器被配置为执行还包括如下各项的操作:
用所述数据更新与所述高速缓存维护或状态命令和所述分量高速缓存相关联的所述控制寄存器;以及
基于所述数据来实现所述控制寄存器的高速缓存维护或状态操作。
12.根据权利要求11所述的计算设备,其中,所述处理器被配置有处理器可执行指令以执行操作使得,将数据分配到所述高速缓存维护或状态命令包括:将高速缓存存储器的存储器虚拟地址作为所述数据分配到所述高速缓存维护或状态命令。
13.如权利要求11所述的计算设备,还包括:
存储器管理单元,其耦合到所述处理器和所述系统高速缓存控制器,并被配置为执行包括如下各项的操作:
确定所述高速缓存维护或状态命令的所述数据是否包括所述系统高速缓存存储器的存储器虚拟地址;
响应于确定所述数据是所述系统高速缓存存储器的存储器虚拟地址,将所述系统高速缓存存储器的所述存储器虚拟地址转换成所述系统高速缓存存储器的存储器物理地址;以及
用所述系统高速缓存存储器的所述存储器物理地址替换所述数据。
14.根据权利要求11所述的计算设备,其中,所述高速缓存维护或状态命令的所述数据包括至少一个高速缓存组和至少一个高速缓存路。
15.根据权利要求11所述的计算设备,其中:
所述控制寄存器的所述地址是所述控制寄存器的虚拟地址,以及
所述系统高速缓存控制器被配置为执行还包括如下项的操作:将所述控制寄存器的所述虚拟地址转换成所述控制寄存器的物理地址。
16.根据权利要求9所述的计算设备,其中:
所述集中式控制实体被配置为执行包括如下各项的操作:
产生分量高速缓存配置表;
将至少一个分量高速缓存指示符分配给所述主设备;以及
将至少一个控制寄存器映射到所述分量高速缓存指示符;
所述处理器被配置有处理器可执行指令以执行还包括与另一主设备访问另一控制寄存器并发地直接访问所述控制寄存器的操作,其中,所述处理器被配置有处理器可执行指令以执行操作使得,绕过所述集中式控制实体而由所述主设备发出针对所述分量高速缓存的高速缓存维护或状态命令包括:与另一主设备发出针对另一分量高速缓存的另一高速缓存维护或状态命令并发地,发出针对所述分量高速缓存的所述高速缓存维护或状态命令;以及
所述系统高速缓存控制器被配置为执行还包括允许与所述另一主设备访问所述另一控制寄存器并发地直接访问所述控制寄存器的操作,其中,所述系统高速缓存控制器被配置为执行操作使得,绕过所述集中式控制实体而为与所述高速缓存维护或状态命令和所述分量高速缓存相关联的所述控制寄存器接收所述高速缓存维护或状态命令包括:同为与所述另一高速缓存维护或状态命令和所述另一分量高速缓存相关联的所述另一控制寄存器接收所述另一高速缓存维护或状态命令并发地,为所述控制寄存器接收所述高速缓存维护或状态命令。
17.一种计算设备,包括:
用于存储分量高速缓存的分量高速缓存指示符,使得所述分量高速缓存指示符可由所述分量高速缓存的主设备访问的单元;
用于绕过集中式控制实体而由所述主设备发出针对所述分量高速缓存的高速缓存维护或状态命令的单元;以及
用于绕过所述集中式控制实体而为与高速缓存维护或状态命令和所述分量高速缓存相关联的控制寄存器接收所述高速缓存维护或状态命令的单元。
18.根据权利要求17所述的计算设备,其中,用于存储分量高速缓存的分量高速缓存指示符,使得所述分量高速缓存指示符可由所述分量高速缓存的主设备访问的单元包括:用于向所述主设备提供针对所述分量高速缓存的控制空间的虚拟化视图的单元,
所述计算设备还包括用于通过绕过所述集中式控制实体而由主设备发现所述分量高速缓存的特征的单元。
19.如权利要求17所述的计算设备,还包括:
用于将与所述高速缓存维护或状态命令和所述分量高速缓存相关联的所述控制寄存器的地址分配到所述高速缓存维护或状态命令的单元;
用于将数据分配到所述高速缓存维护或状态命令的单元;
用于用所述数据更新与所述高速缓存维护或状态命令和所述分量高速缓存相关联的所述控制寄存器的单元;以及
用于基于所述数据来实现所述控制寄存器的高速缓存维护或状态操作的单元。
20.根据权利要求19所述的计算设备,其中,用于将数据分配到所述高速缓存维护或状态命令的单元包括:用于将高速缓存存储器的存储器虚拟地址作为所述数据分配到所述高速缓存维护或状态命令的单元。
21.如权利要求19所述的计算设备,还包括:
用于确定所述高速缓存维护或状态命令的所述数据是否包括高速缓存存储器的存储器虚拟地址的单元;
用于响应于确定所述数据是所述高速缓存存储器的存储器虚拟地址,将所述高速缓存存储器的所述存储器虚拟地址转换成所述高速缓存存储器的存储器物理地址的单元;以及
用于用所述高速缓存存储器的所述存储器物理地址替换所述数据的单元。
22.根据权利要求19所述的计算设备,其中,所述控制寄存器的所述地址是所述控制寄存器的虚拟地址,所述计算设备还包括用于将所述控制寄存器的所述虚拟地址转换成所述控制寄存器的物理地址的单元。
23.如权利要求17所述的计算设备,还包括:
用于由所述集中式控制实体产生分量高速缓存配置表的单元;
用于由所述集中式控制实体将至少一个分量高速缓存指示符分配给所述主设备的单元;
用于由所述集中式控制实体将至少一个控制寄存器映射到所述分量高速缓存指示符的单元;以及
用于由多个主设备直接并发地访问多个控制寄存器的单元,
其中:
用于绕过所述集中式控制实体而由所述主设备发出针对所述分量高速缓存的高速缓存维护或状态命令的单元包括:用于绕过所述集中式控制实体而由所述多个主设备并发地发出针对多个分量高速缓存的多个高速缓存维护或状态命令的单元;以及
用于绕过所述集中式控制实体而为与高速缓存维护或状态命令和所述分量高速缓存相关联的控制寄存器接收所述高速缓存维护或状态命令的单元包括:用于绕过所述集中式控制实体而为与所述多个高速缓存维护或状态命令和所述多个分量高速缓存相关联的所述多个控制寄存器并发地接收所述多个高速缓存维护或状态命令的单元。
24.一种其上存储有处理器可执行软件指令的非暂时性处理器可读介质,所述处理器可执行软件指令被配置成使处理器执行包括如下各项的操作:
存储分量高速缓存的分量高速缓存指示符,使得所述分量高速缓存指示符可由所述分量高速缓存的主设备访问;
绕过集中式控制实体而由所述主设备发出针对所述分量高速缓存的高速缓存维护或状态命令;以及
绕过所述集中式控制实体而由与高速缓存维护或状态命令和所述分量高速缓存相关联的控制寄存器接收所述高速缓存维护或状态命令。
25.根据权利要求24所述的非暂时性处理器可读介质,其中:
所存储的处理器可执行软件指令被配置成使处理器执行操作使得,存储分量高速缓存的分量高速缓存指示符,使得所述分量高速缓存指示符可由所述分量高速缓存的主设备访问包括:向所述主设备提供针对所述分量高速缓存的控制空间的虚拟化视图,以及
所存储的处理器可执行软件指令被配置成使处理器执行还包括通过绕过所述集中式控制实体而由主设备发现所述分量高速缓存的特征的操作。
26.根据权利要求24所述的非暂时性处理器可读介质,其中,所存储的处理器可执行软件指令被配置成使处理器执行还包括以下各项的操作:
将与所述高速缓存维护或状态命令和所述分量高速缓存相关联的所述控制寄存器的地址分配到所述高速缓存维护或状态命令;
将数据分配到所述高速缓存维护或状态命令;
用所述数据更新与所述高速缓存维护或状态命令和所述分量高速缓存相关联的所述控制寄存器;以及
基于所述数据来实现所述控制寄存器的高速缓存维护或状态操作。
27.根据权利要求26所述的非暂时性处理器可读介质,其中,所存储的处理器可执行软件指令被配置成使处理器执行操作使得,将数据分配到所述高速缓存维护或状态命令包括:将高速缓存存储器的存储器虚拟地址作为所述数据分配到所述高速缓存维护或状态命令。
28.根据权利要求26所述的非暂时性处理器可读介质,其中,所存储的处理器可执行软件指令被配置成使处理器执行还包括以下各项的操作:
确定所述高速缓存维护或状态命令的所述数据是否包括高速缓存存储器的存储器虚拟地址;
响应于确定所述数据是所述高速缓存存储器的存储器虚拟地址,将所述高速缓存存储器的所述存储器虚拟地址转换成所述高速缓存存储器的存储器物理地址;以及
用所述高速缓存存储器的所述存储器物理地址替换所述数据。
29.根据权利要求26所述的非暂时性处理器可读介质,其中:
所述控制寄存器的所述地址是所述控制寄存器的虚拟地址,以及
所存储的处理器可执行软件指令被配置成使处理器执行还包括将所述控制寄存器的所述虚拟地址转换成所述控制寄存器的物理地址的操作。
30.根据权利要求24所述的非暂时性处理器可读介质,其中,所存储的处理器可执行软件指令被配置成使处理器执行还包括以下各项的操作:
由所述集中式控制实体产生分量高速缓存配置表;
由所述集中式控制实体将至少一个分量高速缓存指示符分配给所述主设备;
由所述集中式控制实体将至少一个控制寄存器映射到所述分量高速缓存指示符;以及
由多个主设备直接并发地访问多个控制寄存器,其中:
绕过所述集中式控制实体而由所述主设备发出针对所述分量高速缓存的高速缓存维护或状态命令包括:绕过所述集中式控制实体而由所述多个主设备并发地发出针对多个分量高速缓存的多个高速缓存维护或状态命令;以及
绕过所述集中式控制实体而由与高速缓存维护或状态命令和所述分量高速缓存相关联的控制寄存器接收所述高速缓存维护或状态命令包括:绕过所述集中式控制实体而由与所述多个高速缓存维护或状态命令和所述多个分量高速缓存相关联的所述多个控制寄存器并发地接收所述多个高速缓存维护或状态命令。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/710,693 | 2015-05-13 | ||
US14/710,693 US10180908B2 (en) | 2015-05-13 | 2015-05-13 | Method and apparatus for virtualized control of a shared system cache |
PCT/US2016/027270 WO2016182664A1 (en) | 2015-05-13 | 2016-04-13 | Method and apparatus for virtualized control of a shared system cache |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107636625A true CN107636625A (zh) | 2018-01-26 |
CN107636625B CN107636625B (zh) | 2021-04-20 |
Family
ID=55754487
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680027464.9A Active CN107636625B (zh) | 2015-05-13 | 2016-04-13 | 用于共享系统高速缓存的虚拟化控制的方法和装置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10180908B2 (zh) |
EP (1) | EP3295315B1 (zh) |
JP (1) | JP2018521385A (zh) |
CN (1) | CN107636625B (zh) |
WO (1) | WO2016182664A1 (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111625182A (zh) * | 2019-02-28 | 2020-09-04 | 慧荣科技股份有限公司 | 通用闪存存储器模块、控制器、电子装置及操作方法 |
CN112131011A (zh) * | 2020-11-26 | 2020-12-25 | 北京壁仞科技开发有限公司 | 用于管理资源的方法、计算设备和计算机可读存储介质 |
US11487694B1 (en) | 2021-12-17 | 2022-11-01 | SambaNova Systems, Inc. | Hot-plug events in a pool of reconfigurable data flow resources |
TWI789687B (zh) * | 2019-01-03 | 2023-01-11 | 美商聖巴諾瓦系統公司 | 可重組態資料處理器的虛擬化 |
US11580056B2 (en) | 2019-05-09 | 2023-02-14 | SambaNova Systems, Inc. | Control barrier network for reconfigurable data processors |
US11609769B2 (en) | 2018-11-21 | 2023-03-21 | SambaNova Systems, Inc. | Configuration of a reconfigurable data processor using sub-files |
US11983140B2 (en) | 2021-11-22 | 2024-05-14 | SambaNova Systems, Inc. | Efficient deconfiguration of a reconfigurable data processor |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10552070B2 (en) * | 2017-11-14 | 2020-02-04 | International Business Machines Corporation | Separation of memory-based configuration state registers based on groups |
US10664181B2 (en) | 2017-11-14 | 2020-05-26 | International Business Machines Corporation | Protecting in-memory configuration state registers |
US10761983B2 (en) * | 2017-11-14 | 2020-09-01 | International Business Machines Corporation | Memory based configuration state registers |
US10558366B2 (en) | 2017-11-14 | 2020-02-11 | International Business Machines Corporation | Automatic pinning of units of memory |
US10761751B2 (en) | 2017-11-14 | 2020-09-01 | International Business Machines Corporation | Configuration state registers grouped based on functional affinity |
US10642757B2 (en) | 2017-11-14 | 2020-05-05 | International Business Machines Corporation | Single call to perform pin and unpin operations |
US10698686B2 (en) * | 2017-11-14 | 2020-06-30 | International Business Machines Corporation | Configurable architectural placement control |
US10901738B2 (en) | 2017-11-14 | 2021-01-26 | International Business Machines Corporation | Bulk store and load operations of configuration state registers |
US10635602B2 (en) * | 2017-11-14 | 2020-04-28 | International Business Machines Corporation | Address translation prior to receiving a storage reference using the address to be translated |
US10496437B2 (en) | 2017-11-14 | 2019-12-03 | International Business Machines Corporation | Context switch by changing memory pointers |
US10592164B2 (en) | 2017-11-14 | 2020-03-17 | International Business Machines Corporation | Portions of configuration state registers in-memory |
US10884959B2 (en) * | 2019-02-13 | 2021-01-05 | Google Llc | Way partitioning for a system-level cache |
WO2020168522A1 (zh) * | 2019-02-21 | 2020-08-27 | 华为技术有限公司 | 一种片上系统、访问命令的路由方法及终端 |
US11010165B2 (en) | 2019-03-12 | 2021-05-18 | Marvell Asia Pte, Ltd. | Buffer allocation with memory-based configuration |
US11327890B1 (en) * | 2019-05-29 | 2022-05-10 | Marvell Asia Pte, Ltd. | Partitioning in a processor cache |
US11036643B1 (en) | 2019-05-29 | 2021-06-15 | Marvell Asia Pte, Ltd. | Mid-level instruction cache |
US11513958B1 (en) | 2019-05-29 | 2022-11-29 | Marvell Asia Pte, Ltd. | Shared mid-level data cache |
US11093405B1 (en) | 2019-05-29 | 2021-08-17 | Marvell Asia Pte, Ltd. | Shared mid-level data cache |
US11379368B1 (en) | 2019-12-05 | 2022-07-05 | Marvell Asia Pte, Ltd. | External way allocation circuitry for processor cores |
US11855831B1 (en) | 2022-06-10 | 2023-12-26 | T-Mobile Usa, Inc. | Enabling an operator to resolve an issue associated with a 5G wireless telecommunication network using AR glasses |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020083299A1 (en) * | 2000-12-22 | 2002-06-27 | International Business Machines Corporation | High speed remote storage controller |
US20030236947A1 (en) * | 2002-06-24 | 2003-12-25 | Shinya Yamazaki | Prevention of conflicting cache hits without an attendant increase in hardware |
US20100005213A1 (en) * | 2008-07-02 | 2010-01-07 | International Business Machines Corporation | Access Table Lookup for Bus Bridge |
CN103688505A (zh) * | 2011-07-29 | 2014-03-26 | 国际商业机器公司 | 虚拟化环境中的网络过滤 |
CN104067246A (zh) * | 2012-01-10 | 2014-09-24 | 高通股份有限公司 | 通过物理地址进行的非分配存储器存取 |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US5555430A (en) * | 1994-05-31 | 1996-09-10 | Advanced Micro Devices | Interrupt control architecture for symmetrical multiprocessing system |
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 |
US7107382B2 (en) | 2003-04-03 | 2006-09-12 | Emulex Design & Manufacturing Corporation | Virtual peripheral component interconnect multiple-function device |
US7558920B2 (en) | 2004-06-30 | 2009-07-07 | Intel Corporation | Apparatus and method for partitioning a shared cache of a chip multi-processor |
US7613898B2 (en) | 2006-01-17 | 2009-11-03 | Globalfoundries Inc. | Virtualizing an IOMMU |
GB0603552D0 (en) * | 2006-02-22 | 2006-04-05 | Advanced Risc Mach Ltd | Cache management within a data processing apparatus |
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 |
US9015399B2 (en) | 2007-08-20 | 2015-04-21 | Convey Computer | Multiple data channel memory module architecture |
US8365184B2 (en) * | 2007-08-31 | 2013-01-29 | Apple Inc. | Multi-core resource utilization planning |
US20100115233A1 (en) | 2008-10-31 | 2010-05-06 | Convey Computer | Dynamically-selectable vector register partitioning |
US8688910B2 (en) * | 2009-02-06 | 2014-04-01 | Freescale Semiconductor, Inc. | Debug control for snoop operations in a multiprocessor system and method thereof |
JP2010244435A (ja) * | 2009-04-08 | 2010-10-28 | Panasonic Corp | キャッシュ制御装置及びキャッシュ制御方法 |
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 |
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 |
US8510493B2 (en) * | 2010-12-27 | 2013-08-13 | Lsi Corporation | Circuit to efficiently handle data movement within a cache controller or on-chip memory peripheral |
US8813085B2 (en) | 2011-07-19 | 2014-08-19 | Elwha Llc | Scheduling threads based on priority utilizing entitlement vectors, weight and usage level |
US9213644B2 (en) * | 2013-03-07 | 2015-12-15 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Allocating enclosure cache in a computing system |
US9697130B2 (en) * | 2014-06-25 | 2017-07-04 | Sandisk Technologies Llc | Systems and methods for storage service automation |
-
2015
- 2015-05-13 US US14/710,693 patent/US10180908B2/en active Active
-
2016
- 2016-04-13 EP EP16716812.9A patent/EP3295315B1/en active Active
- 2016-04-13 CN CN201680027464.9A patent/CN107636625B/zh active Active
- 2016-04-13 JP JP2017558413A patent/JP2018521385A/ja active Pending
- 2016-04-13 WO PCT/US2016/027270 patent/WO2016182664A1/en active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020083299A1 (en) * | 2000-12-22 | 2002-06-27 | International Business Machines Corporation | High speed remote storage controller |
US20030236947A1 (en) * | 2002-06-24 | 2003-12-25 | Shinya Yamazaki | Prevention of conflicting cache hits without an attendant increase in hardware |
US20100005213A1 (en) * | 2008-07-02 | 2010-01-07 | International Business Machines Corporation | Access Table Lookup for Bus Bridge |
CN103688505A (zh) * | 2011-07-29 | 2014-03-26 | 国际商业机器公司 | 虚拟化环境中的网络过滤 |
CN104067246A (zh) * | 2012-01-10 | 2014-09-24 | 高通股份有限公司 | 通过物理地址进行的非分配存储器存取 |
Non-Patent Citations (1)
Title |
---|
XUHAO CHEN: "Adaptive Cache Management for Energy-efficient GPU Computing", 《2014 47TH ANNUAL IEEE/ACM INTERNATIONAL SYMPOSIUM ON MICROARCHITECTURE》 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11609769B2 (en) | 2018-11-21 | 2023-03-21 | SambaNova Systems, Inc. | Configuration of a reconfigurable data processor using sub-files |
TWI789687B (zh) * | 2019-01-03 | 2023-01-11 | 美商聖巴諾瓦系統公司 | 可重組態資料處理器的虛擬化 |
US11681645B2 (en) | 2019-01-03 | 2023-06-20 | SambaNova Systems, Inc. | Independent control of multiple concurrent application graphs in a reconfigurable data processor |
CN111625182A (zh) * | 2019-02-28 | 2020-09-04 | 慧荣科技股份有限公司 | 通用闪存存储器模块、控制器、电子装置及操作方法 |
US11580056B2 (en) | 2019-05-09 | 2023-02-14 | SambaNova Systems, Inc. | Control barrier network for reconfigurable data processors |
CN112131011A (zh) * | 2020-11-26 | 2020-12-25 | 北京壁仞科技开发有限公司 | 用于管理资源的方法、计算设备和计算机可读存储介质 |
CN112131011B (zh) * | 2020-11-26 | 2021-02-26 | 北京壁仞科技开发有限公司 | 用于管理资源的方法、计算设备和计算机可读存储介质 |
US11983140B2 (en) | 2021-11-22 | 2024-05-14 | SambaNova Systems, Inc. | Efficient deconfiguration of a reconfigurable data processor |
US11487694B1 (en) | 2021-12-17 | 2022-11-01 | SambaNova Systems, Inc. | Hot-plug events in a pool of reconfigurable data flow resources |
Also Published As
Publication number | Publication date |
---|---|
US10180908B2 (en) | 2019-01-15 |
JP2018521385A (ja) | 2018-08-02 |
CN107636625B (zh) | 2021-04-20 |
US20160335190A1 (en) | 2016-11-17 |
EP3295315B1 (en) | 2018-11-07 |
WO2016182664A1 (en) | 2016-11-17 |
EP3295315A1 (en) | 2018-03-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107636625A (zh) | 用于共享系统高速缓存的虚拟化控制的方法和装置 | |
CN106537360B (zh) | 用于具有动态分区的共享高速缓存的方法和装置 | |
CN106537361B (zh) | 用于通过组和通路将缓存灵活划分成组件缓存的方法和装置 | |
CN102640124B (zh) | 用于数据流的储存感知预取的计算系统、方法以及预取单元 | |
CN108713194A (zh) | 使用虚拟资源视图的数据保护 | |
CN105378642A (zh) | 用于高性能和低成本的闪存转换层的系统和方法 | |
CN1979452A (zh) | 用于短暂高速缓存存储的方法和处理器 | |
US10275251B2 (en) | Processor for avoiding reduced performance using instruction metadata to determine not to maintain a mapping of a logical register to a physical register in a first level register file | |
CN108431775A (zh) | 用于高效并行计算的简化的基于任务的运行时的方法 | |
CN108885661A (zh) | 时变地址空间布局随机化 | |
CN105094691B (zh) | 一种数据操作的方法、设备和系统 | |
CN107771322A (zh) | 可编程集成电路中存储器资源的管理 | |
CN109791510A (zh) | 在异构计算中管理数据流 | |
Zhang et al. | Fuse: Fusing stt-mram into gpus to alleviate off-chip memory access overheads | |
CN104298519B (zh) | 用于配置操作系统的装置及其方法 | |
CN103262052A (zh) | 具有共享的输入/输出的安全分区 | |
CN107223239A (zh) | 用于改善牺牲(Victim)高速缓存模式的处理调度 | |
Das et al. | Victim retention for reducing cache misses in tiled chip multiprocessors | |
CN108885569A (zh) | 识别增强型同步操作结果以改善运行时操作 | |
CN108228333A (zh) | 一种多核系统的核间资源隔离方法 | |
CN103262053A (zh) | 具有共享的输入/输出的安全分区 | |
Menezo et al. | Mosaic: A Scalable Coherence Protocol | |
Schwedock | Optimizing Data Movement Through Software Control of General-Purpose Hardware Caches |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | 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 |