CN107111555A - 用于改进便携式计算设备中的牺牲(victim)缓存模式的系统和方法 - Google Patents

用于改进便携式计算设备中的牺牲(victim)缓存模式的系统和方法 Download PDF

Info

Publication number
CN107111555A
CN107111555A CN201680005771.7A CN201680005771A CN107111555A CN 107111555 A CN107111555 A CN 107111555A CN 201680005771 A CN201680005771 A CN 201680005771A CN 107111555 A CN107111555 A CN 107111555A
Authority
CN
China
Prior art keywords
caching
low level
cache lines
sacrifice
cache
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201680005771.7A
Other languages
English (en)
Inventor
王峰
B·雷赫利克
M·卡恩
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 CN107111555A publication Critical patent/CN107111555A/zh
Pending legal-status Critical Current

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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/0888Addressing 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
    • 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/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0833Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
    • 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/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0835Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means for main memory peripheral accesses (e.g. I/O or DMA)
    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本文给出了用于便携式计算设备(PCD)中的牺牲缓存的改进操作的系统和方法。低级别缓存被操作成高级别缓存的牺牲者,该低级别缓存包含多个缓存行。过滤器与低级别牺牲缓存相关联地操作,其反映包含在牺牲缓存中的缓存行。对于高级别缓存处的未命中,检查该过滤器以判断所请求的缓存行是否在牺牲缓存中。如果检查该过滤器确定所请求的缓存行在牺牲缓存中,则从牺牲缓存中取回该请求的缓存行。如果检查该过滤器确定所请求的缓存行不在牺牲缓存中,则旁路牺牲缓存,以及从存储器控制器请求该缓存行。

Description

用于改进便携式计算设备中的牺牲(victim)缓存模式的系统 和方法
背景技术
具有处理器、通过各种各样的通信介质(其包括无线信号)与其它设备进行通信的设备到处可见。包括便携式计算设备(PCD)的移动设备可以用于经由无线、模拟、数字和其它手段,与各种各样的其它设备进行通信。这些移动设备可以包括移动电话、便携式数字助理(PDA)、便携式游戏控制台、掌上型计算机、平板计算机和其它便携式电子设备。
除了主要功能之外,PCD还可以用于:下载和玩游戏;下载和播放音乐;下载和观看视频;全球定位系统(GPS)导航、web浏览、以及运行应用。为了适应这些不断增长的用途和对更高性能的需求,现代PCD通常包括用于控制或者执行该PCD的不同功能的一个或多个内核(例如,处理单元)。此外,这些PCD还可以包括以不同级别按照分层方式布置的缓存存储器,多个内核或者处理单元可以通过总线或互连来共享这些缓存存储器。
为了努力提高这种分层缓存存储器的性能,具有更慢访问时间的更大容量的低级别缓存存储器,可以被操作成具有更快访问时间的更低容量的高级别缓存存储器的“牺牲”缓存。在这种布置中,随着缓存行从高级别缓存中被删除或者“逐出”,分层结构中低级别“牺牲”缓存被高级别缓存所独占和完全填充。例如,处理器可以从高级别L2缓存中获取数据。如果该数据在L2缓存中,则发生“命中”,并将该数据提供给处理器。如果该数据不在L2缓存中,则发生“未命中”,而从其它地方取回所请求的数据。此外,还将所请求的数据放置在L2缓存中,替换L2缓存中的现有缓存行。根据替换策略,将现有的L2缓存行删除或逐出到低级别的牺牲缓存(例如,L3缓存)中。
但是,该“牺牲”缓存系统可能会由缓存存储器带来额外的带宽和功耗,其中,这些缓存存储器没有通过从将低级别缓存操作成“牺牲”缓存中获得的任何增益来适当化。因此,需要用于适应性实现牺牲缓存模式的系统和方法。此外,当以“牺牲”模式操作时,由于缓存之间可能存在迂回的路由数据,从而缓存存储器本身的物理布置可能导致增加的时延。因此,还需要用于牺牲模式下的缓存的改进操作的系统和方法。
发明内容
公开了用于允许便携式计算设备(PCD)中的牺牲缓存的改进操作的系统和方法。在操作时,低级别缓存被操作成高级别缓存的牺牲者,该低级别缓存包含多个缓存行。过滤器与低级别牺牲缓存相关联地操作,以及对过滤器进行更新以反映包含在低级别牺牲缓存中的多个缓存行。当在高级别缓存处发生未命中时,通过检查与低级别牺牲缓存相关联的过滤器,来做出关于请求的缓存行是否是低级别缓存中包含的多个缓存行里的一个的判断。如果该判断是该请求的缓存行是低级别缓存中包含的多个缓存行里的一个,则从该低级别牺牲缓存中取回该请求的缓存行。如果该判断是该请求的缓存行不是低级别缓存中包含的多个缓存行里的一个,则旁路该低级别牺牲缓存,以及从与高级别缓存通信的存储器控制器请求该缓存行。
一种示例性实施例是用于便携式计算设备(PCD)中的片上系统(SoC)的计算机系统,该系统包括:高级别缓存;与高级别缓存通信的低级别缓存,该低级别缓存被配置为操作成高级别缓存的牺牲者,该低级别缓存包含多个缓存行;与低级别牺牲缓存通信的过滤器,其中,该过滤器被配置为反映包含在低级别牺牲缓存中的所述多个缓存行;以及逻辑组件,其配置为:当在高级别缓存处发生未命中时,通过检查与低级别牺牲缓存相关联的过滤器,判断请求的缓存行是否是低级别缓存中包含的所述多个缓存行里的一个;以及,如果该判断是所请求的缓存行是低级别缓存中包含的所述多个缓存行里的一个,则使得从低级别牺牲缓存中取回所请求的缓存行,以及如果该判断是所请求的缓存行不是低级别缓存中包含的所述多个缓存行里的一个,则旁路低级别牺牲缓存,以及从与高级别缓存通信的存储器控制器请求该缓存行。
另一种示例性实施例是一种包括非临时性计算机可使用介质的计算机程序产品,所述非临时性计算机可使用介质中体现有计算机可读程序代码,所述计算机可读程序代码适于被执行,以实现用于便携式计算设备(PCD)中的牺牲缓存的改进操作的方法,该方法包括:将低级别缓存操作成高级别缓存的牺牲者,该低级别缓存包含多个缓存行;将过滤器与低级别牺牲缓存相关联地操作;对该过滤器进行更新以反映包含在低级别牺牲缓存中的所述多个缓存行;当在高级别缓存处发生未命中时,判断请求的缓存行是否是低级别缓存中包含的所述多个缓存行里的一个,其中,所述判断包括:检查与低级别牺牲缓存相关联的过滤器;以及如果所述判断是所请求的缓存行是低级别缓存中包含的所述多个缓存行里的一个,则从低级别牺牲缓存中取回所请求的缓存行,以及如果所述判断是所请求的缓存行不是低级别缓存中包含的所述多个缓存行里的一个,则旁路低级别牺牲缓存,并从与高级别缓存通信的存储器控制器请求该缓存行。
附图说明
在附图中,除非另外指出,否则贯穿各个视图的相同附图标记指代类似的组件。对于利用诸如“102A”或“102B”之类的字母字符进行命名的附图标记而言,这些字母字符命名可以区分在同一附图中出现的两个类似组件或者组成部分。当一个附图标记旨在涵盖所有附图之中具有相同附图标记的所有组件时,可以省略用于附图标记的字母字符命名。类似地,对于具有‘诸如102之类的名称’的附图标记而言,该‘名称’可以代表具有相同附图标记(但不具有该‘名称’)的基本元素的替代实施例。
图1是可以实现本发明的便携式计算设备(PCD)的示例性实施例的框图;
图2是示出用于在PCD(例如,图1所示出的PCD实施例)中适应性实现牺牲缓存模式的系统的示例性实施例的框图;
图3A是示出图2的示例性系统中的缓存存储器的示例性实施例的细节的框图;
图3B是示出图2的示例性系统中的缓存存储器的另一个示例性实施例的细节的框图;
图4是示出用于在PCD(例如,图1所示出的PCD实施例)中在改进缓存存储器的操作的情况下、适应性实现牺牲缓存模式的系统的另一个示例性实施例的框图;
图5A是描述用于在PCD中适应性实现牺牲缓存模式的方法的示例性实施例的方面的流程图;
图5B描绘了能够执行图5A中所示出的方法的方面的示例性组件;
图6A是描述用于在PCD中适应性实现牺牲缓存模式的方法的另一个示例性实施例的方面的流程图;
图6B描绘了能够执行图6A中所示出的方法的方面的示例性组件;
图7A是描述用于在PCD中在改进缓存存储器的操作的情况下、适应性实现牺牲缓存模式的方法的示例性实施例的方面的流程图;以及
图7B描绘了能够执行图7A中所示出的方法的方面的示例性组件。
具体实施方式
本文所使用的“示例性”一词意味着“用作例子、例证或说明”。本文中被描述为“示例性”的任何方面不一定被解释为比其它方面更优选或更具优势。
在本说明书中,术语“应用”还可以包括具有可执行内容的文件,例如:目标代码、脚本、字节码、标记语言文件和补丁。此外,本文所引用的“应用”还可以包括:在性质上不可执行的文件,例如,可能需要被打开的文档或者需要进行访问的其它数据文件。
此外,术语“内容”还可以包括具有可执行内容的文件,例如:目标代码、脚本、字节代码、标记语言文件和补丁。此外,本文所引用的“内容”还可以包括:在性质上不可执行的文件,例如,可能需要被打开的文档或者需要进行访问的其它数据文件或者数据值。
如本说明书中所使用的,术语“组件”、“数据库”、“模块”、“系统”等等旨在指代与计算机相关的实体,无论其是硬件、固件、硬件和软件的结合、软件或运行中的软件。例如,组件可以是,但不限于是:在处理器上运行的过程、处理器、对象、可执行文件、执行的线程、程序和/或计算机。举例而言,在计算设备上运行的应用和该计算设备都可以是组件。一个或多个组件可以存在于执行的过程和/或线程中,并且组件可以位于一个计算机上和/或分布在两个或更多计算机之间。此外,这些组件能够根据其上存储有各种数据结构的各种计算机可读介质来执行。这些组件可以诸如根据具有一个或多个数据分组的信号(例如,来自一个组件的数据,该组件与本地系统、分布式系统中的另一个组件进行交互和/或以信号的方式跨越诸如互联网之类的网络与其它系统进行交互),以本地和/或远程处理的方式进行通信。
在本说明书中,使用术语“便携式计算设备”(“PCD”)来描述在有限容量的可充电电源(例如,电池和/或电容)上进行操作的任何设备。虽然具有可充电电源的PCD已经使用了数十年,但与第三代(“3G”)和第四代(“4G”)无线技术的出现伴随发生的可再充电电池的技术进步,实现了具有多种能力的众多PCD。因此,PCD可以是蜂窝电话、卫星电话、寻呼机、PDA、智能电话、导航设备、智能本或阅读器、媒体播放器、前述设备的组合、具有无线连接的膝上型计算机或平板计算机等等。
在本说明书中,术语“中央处理单元(“CPU”)”、“数字信号处理器(“DSP”)”、“图形处理单元(“GPU”)”、“芯片”、“视频编解码器”、“系统总线”、“图像处理器”和“媒体显示处理器(“MDP”)”,是可以在SoC上实现的处理组件的非限制性示例。用于处理组件的这些术语可互换地使用,除非另外指出。此外,如下面所讨论的,上面的任意项或者它们的等同物可以实现在本文通常称为“内核”和/或“子内核”的一个或多个不同的处理组件中,或者包括一个或多个不同的处理组件。
在本说明书中,术语“工作负荷”、“处理负荷”、“处理工作负荷”和“图形工作负荷”可以互换地使用,并通常针对于与给定的实施例中的给定处理组件相关联(或者向其分配)的处理负担、或者处理负担的百分比。另外,可互换地使用相关术语“帧”、“代码块”和“代码的块”来指代给定工作负荷的一部分或者一段。除了上面所规定的之外,“处理组件”等等可以是,但不限于是:中央处理单元、图形处理单元、内核、主核、子核、处理区域、硬件引擎等等、或者位于便携式计算设备中的集成电路之内或者之外的任何组件。
本领域普通技术人员应当认识到,术语“MIPS”表示处理器能够按照给定的功率频率,每秒处理的数以百万计数量的指令。在本说明书中,将该术语使用成测量的通用单位,以指示该示例性实施例中的处理器性能的相对水平,并且其不应被解释为用于建议:落入本公开内容的保护范围之内的任何给定实施例都必须包括具有任何特定的Dhrystone评级或者处理能力的处理器,或者必须不包括该处理器。另外,如本领域普通技术人员所应当理解的,处理器的MIPS设置直接与提供给该处理器的功率、频率或者工作频率相关。
本文的用于在PCD中适应性实现牺牲缓存模式和在牺牲模式期间进行缓存存储器的改进操作的系统和方法,提供了一种当PCD的架构、工作负荷、操作条件等等要求在牺牲缓存模式下进行操作是令人满意的时(例如针对数据密集型工作负荷和/或应用程序,增加数据缓存的有效大小),动态地实现牺牲缓存的成本有效方式。另外,本文的系统和方法提供了当操作在牺牲缓存模式中时,对缓存存储器的改进操作。替代地,本文用于在PCD中适应性实现牺牲缓存模式的系统和方法允许,当工作负荷、架构、操作条件等等表明在牺牲缓存模式下操作的好处未被完全实现,或者超出了就在牺牲缓存模式中操作所引起的存储器带宽、功耗等等方面而言的额外成本时,动态地关闭牺牲缓存模式。
可以利用硬件或软件来实现本文所描述的系统(其包括用于在PCD中适应性实现牺牲缓存模式和用于在牺牲模式下改进缓存存储器的操作的系统)或该系统的部分。当利用硬件来实现时,这些设备可以包括下面技术中的任何一种或者组合,其中这些技术都是本领域所公知的:离散电子组件、集成电路、具有适当配置的半导体器件和阻抗式元件的专用集成电路等等。这些硬件器件中的任何一种,无论是与其它器件或其它组件(例如,存储器)协作还是单独操作,还可以形成或者包括用于执行所公开的方法的各种操作或步骤的组件或单元。
当利用软件来实现或者部分地实现本文所描述的PCD或其它系统时,该软件部分可以用于执行本文所描述的方法的各个步骤。在表示各种元素时使用的软件和数据,可以存储在存储器中,并由适当的指令执行系统(微处理器)来执行。该软件可以包括用于实现逻辑功能的经排列的可执行指令列表,其可以体现在任何“处理器可读介质”中,以便由指令执行系统、装置或设备(例如,单核或多核处理器或者包含处理器系统)来使用,或者结合它们来使用。这些系统通常将从指令执行系统、装置或设备中访问这些指令,并执行这些指令。
图1是可以实现本文所描述的系统和方法的PCD 100的示例性非限制性方面的框图。图1中所示出的PCD 100具有能够与一个或多个无线通信系统进行通信的无线电话的形式。该无线通信系统可以是宽带无线通信系统,其包括长期演进(LTE)系统、码分多址(CDMA)系统、频分多址(FDMA)系统、全球移动通信系统(GSM)系统、无线局域网(WLAN)系统、某种其它无线系统、或者这些系统中的任何系统的组合。CDMA系统可以实现宽带CDMA(WCDMA)、CDMA 1X、演进数据优化(EVDO)、时分同步CDMA(TD-SCDMA)或者某种其它版本的CDMA。
如图所示,PCD 100包括片上系统(或SoC)102,后者包括耦合在一起的异构多核中央处理单元(“CPU”)110和模拟信号处理器128。CPU 110可以包括第零内核120、第一内核122、第二内核124和第N内核126,如本领域普通技术人员所理解的。此外,还可以使用数字信号处理器(“DSP”)来替代CPU 110,如本领域普通技术人员所理解的。此外,如异构多核处理器领域的技术人员所理解的,内核120、122、124、126中的每一个内核可以在类似的操作条件下,按照不同的效率来处理工作负荷。内核120、122、124、126中的每一个内核可以控制PCD 100的一个或多个功能。例如,第零内核120可以是用于控制PCD 100中的图形的图形处理单元(GPU)。此外,该GPU/第零内核120还可以包括:为了控制PCD 100中的图形所必需的驱动器和/或其它组件,其包括控制GPU内核120和存储器112(其包括缓冲器)之间的通信。对于另一个例子而言,不同的内核(如,第N内核126)可以运行PCD操作系统,例如,高级操作系统(HLOS)。该第N/HLOS内核126还可以包括为了运行HLOS所必需的驱动器、硬件接口、和/或其它组件,其包括内核126和存储器112(其可以包括闪存)之间的通信。
内核120、122、124、126中的任何一个内核可以是诸如CPU或数字信号处理器之类的单独处理器。另外,可以将这些内核中的每一个内核与其它组件(例如,存储器112、传感器或PCD 100的其它硬件)功能性地组合在一起,以形成如下面所描述的子系统。可以实现这些子系统以便执行PCD的某种功能,例如,音频子系统、GPS子系统、传感器子系统等等。此外,这些子系统中的一个或多个子系统还可以被配置为独立于SoC 102进行操作,例如,以便当该SoC 102已经被置于低功率状态或模式或者减小功率状态或模式(其包括关闭状态或模式)时,继续进行操作。
另外,内核120、122、124、126中的一个或多个内核除了包括处理器之外,还可以包括其它组件(如,一个或多个缓存存储器)。这些缓存存储器可以包括用于特定内核的专用缓存存储器,比如L1缓存。另外地或替代地,这些缓存存储器可以包括与其它内核或处理器共享的和/或由其它内核或处理器可访问的缓存存储器,例如,L2缓存。
此外,还可以将存储器112描绘成耦合到多核CPU 110。例如,该存储器112可以是随机存取存储器(RAM)、只读存储器(ROM)、闪存或者其任意组合。另外,存储器112可以包括位于在一起或者彼此之间远离的多个不同类型的存储器,其包括缓冲器、主存储器和缓存。这些缓存可以包括可以由内核120、122、124、126中的一个或多个内核访问的一个或多个L3缓存。另外,虽然将存储器112描绘成位于SoC 102上,但存储器112可以包括物理上位于远离SoC 102的位置的一个或多个存储器,例如,与多核CPU 110和/或内核120、122、124、126中的一个或多个内核进行通信的DDR存储器。
如图1中所示,显示控制器129和触摸屏控制器130耦合到多核CPU 110。转而,在片上系统102之外的显示器/触摸屏132,耦合到显示控制器129和触摸屏控制器130。数码相机148也可以耦合到多核CPU 110。在这些实施例中,数码相机148可以由多核CPU 110中的内核120、122、124、126里的一个内核进行控制。在一个示例性方面,数码相机148是电荷耦合器件(CCD)相机或者互补金属氧化物半导体(CMOS)相机。
此外,图1的PCD 100还可以包括视频编码器134,例如,逐行倒相(PAL)编码器、顺序与存储彩色电视系统(SECAM)编码器、或者国家电视制式委员会(NTSC)编码器或者耦合到多核CPU 110的任何其它类型的视频解码器134。此外,视频放大器136耦合到视频编码器134和显示器/触摸屏132。视频端口138耦合到视频放大器136。如图1中所示,通用串行总线(USB)控制器140耦合到多核CPU 110。此外,USB端口142耦合到USB控制器140。用户识别模块(SIM)卡146还可以耦合到多核CPU 110。在其它实施例中,可以实现多个SIM卡146。
如图1中所进一步示出的,立体声音频CODEC 150可以耦合到多核CPU 110。此外,音频放大器152可以耦合到立体声音频CODEC 150。在一个示例性方面,第一立体声扬声器154和第二立体声扬声器156耦合到音频放大器152。图1示出了还可以耦合到立体声音频CODEC 150的麦克风放大器158。另外,麦克风160可以耦合到麦克风放大器158。在一个特定的方面,调频(FM)无线调谐器162可以耦合到立体声音频CODEC 150。此外,FM天线164耦合到FM无线调谐器162。此外,立体声耳机166可以耦合到立体声音频CODEC 150。
此外,图1还指示调制解调器器件/射频(“RF”)收发机168可以耦合到多核CPU110。调制解调器器件168可以支持诸如GSM、CDMA、W-CDMA、TDSCDMA、LTE以及LTE的变型(例如,但不限于FDB/LTE和PDD/LTE无线协议)之类的无线通信协议中的一种或多种无线通信协议。另外,可以存在多个调制解调器器件168,在这些实施例中,不同的调制解调器器件168可以支持上面所列出的无线通信协议和/或技术中的一些或全部。
在一些实现中,调制解调器器件168还可以包括各种组件(其包括单独的处理器、存储器和/或RF收发机)。在其它实现中,调制解调器器件168可以简单的是RF收发机。此外,调制解调器器件168可以合并到集成电路中。也就是说,包括调制解调器器件168的组件可以是全芯片解决方案,并包括可以由本文所描述的系统和方法进行监视的其自己的处理器和/或内核。替代地,包括调制解调器器件168的各种组件可以耦合到多核CPU 110,并由CPU110的内核120、122、124中的一个内核进行控制。RF开关170可以耦合到调制解调器器件168和RF天线172。在各个实施例中,可以存在多付RF天线172,并且每一付这种RF天线172可以通过RF开关170来耦合到调制解调器器件168。
如图1中所示,键盘174可以直接地或者通过模拟信号处理器128,来耦合到多核CPU 110。此外,具有麦克风的单声道耳机176可以耦合到多核CPU 110和/或模拟信号处理器128。此外,振动器器件178也可以耦合到多核CPU 110和/或模拟信号处理器128。此外,图1还示出了电源188可以耦合到片上系统102,并且在一些实现中,电源188是经由USB控制器140来耦合的。在一个特定的方面,该电源188是直流(DC)电源,其向需要能量的PCD 100的各个组件供电。此外,在一个特定的方面,该电源188可以是可充电DC电池或者DC电源,后者是从连接到AC电源的交流电(AC)到DC变换器来得到的。
此外,多核CPU 110还可以耦合到一个或多个内部、片上热传感器157A,以及一个或多个外部、片外热传感器157B。片上热传感器157A可以包括一个或多个正比于绝对温度(“PTAT”)温度传感器,后者是基于垂直PNP结构,并通常专用于互补金属氧化物半导体(“CMOS”)甚大规模集成(“VLSI”)电路。片外热传感器157B可以包括一个或多个热敏电阻。热传感器157可以产生电压下降,利用模数转换器(“ADC”)控制器103将该电压下降转换成数字信号。但是,在不脱离本公开内容的保护范围的基础上,也可以使用其它类型的热传感器157。
此外,图1还指出PCD 110还可以包括网卡114,后者可以用于接入数据网络(例如,局域网、个域网或者任何其它网络)。网卡114可以是蓝牙网卡、WiFi网卡、个域网(PAN)卡或者本领域公知的任何其它网卡。此外,可以将网卡114合并在集成电路中。也就是说,网卡114可以是全芯片解决方案,其可以不是单独的网卡114。
如图1中所示,显示器/触摸屏132、视频端口138、USB端口142、照相机148、第一立体声扬声器154、第二立体声扬声器156、麦克风160、FM天线164、立体声耳机166、RF开关170、RF天线172、键盘174、单声道耳机176、振动器178和电源180,在SoC 102之外。
此外,SoC 102还可以包括各种总线和/或互连(没有示出),以便将多核CPU 110和/或内核120、122、124、126中的一个或多个内核与SoC 102或PCD 100的其它子系统或组件通信地耦合。应当理解的是,还可以实现和布置任意数量的总线和/或互连控制器,以监测片上系统102中的总线/互连接口。替代地,可以将单个总线/互连控制器配置有被布置为监测两个或更多总线/互连接口的输入,其中这些总线/互连接口可以根据需要,在CPU 110和PCD 100的各个子系统或组件之间传输信号。
在特定的方面,本文所描述的方法步骤中的一个或多个,可以经由存储器112和/或位于CPU 110上的存储器中所存储的数据和处理器指令的组合来实现。这些指令可以由多核CPU 110中的一个或多个内核120、122、124、126和/或SoC 102的子系统来执行,以便执行本文所描述的方法。此外,多核CPU 110、内核120、122、124、126中的一个或多个内核、存储器112、PCD 100的其它组件或者它们的组合,可以充当用于执行本文所描述的方法步骤中的一个或多个的手段,以便实现对牺牲缓存模式的适应性实现,和/或当处于牺牲模式时对缓存的改进操作。
图2是示出用于在PCD(例如,图1所示出的PCD 100实施例)中适应性实现牺牲缓存模式的系统200的示例性实施例的框图。图2示出了包括可以实现在PCD中的片上系统(SoC)集成电路202(其类似于图1中的SoC 102)的示例性系统200。图2的SoC 202包括存储器控制器210、第零内核220、第一内核222、第N内核224和L3缓存230,所有这些都连接到SoC 202的互连或总线240。SoC 202的互连/总线240可以是任何期望类型的总线或互连,其可以取决于SoC 202的架构和/或SoC 202或PCD预期的用途。
如图2的实施例中所示,存储器控制器210与互连/总线250进行通信,还与SoC 202之外的存储器DDR 250进行通信。存储器控制器210可以控制对SoC 202的各种存储器(其包括L3缓存230)的访问,还可以允许当SoC 202加电和/或处于功能状态或模式时,SoC 202的各个组件(其包括第零内核220、第一内核222和第N内核224)访问外部DDR 250存储器。
SoC 202还可以包括为了清楚说明起见,而在图2中没有示出的其它组件和/或子系统(其包括图1中没有示出的那些)。第零内核220、第一内核222和第N内核224中的每一个内核将包括某种类型的处理器,并且每一个内核可以实现成上面针对图1所讨论的内核120、122、124、126中的一个内核。在一些实施例中,可以将第零内核220、第一内核222和第N内核224中的一个或多个内核的处理器,实现成通用处理单元,而在其它实施例中,可以将该处理器实现成专用处理器(例如,DSP)。此外,第零内核220、第一内核222和第N内核224中的每一个内核还包括至少一个缓存存储器,在图2中示出成L2缓存221(用于第零内核220)、L2缓存223(用于第一内核222)和L2缓存225(用于第N内核224)。
在各个实施例中,第零内核220、第一内核222和第N内核224中的一个或多个内核可以包括比图2中所示出的更多或更少的组件,例如,额外的L1缓存。另外,在一些实施例中,可以以不同的配置来在SoC 202上物理地布置图2中所示出的组件,并且图2中所示出的一个或多个组件可能在SoC 202上不是物理地位于彼此邻近的位置。
在图2所示出的实施例中,可以按层级结构来组织L2缓存221、223、225、L3缓存230和DDR 250,其中,L2缓存221、223、225表示最小数据容量但具有最快性能/最低时延,L3缓存230比L2缓存221、223、225具有更大的数据容量但更慢的性能/更高的时延,而DDR 250具有最大的数据容量和最慢的性能/最高的时延。在该实施例中,L3缓存230是比L2缓存221、223、225更低一级的缓存。另外,在所示出的实施例中,L3缓存230可以操作成独立的缓存,其可以由任何第零内核220、第一内核222和第N内核224中的任何一个内核进行直接访问(“普通模式”),或者L3缓存230可以是更高级别L2缓存221、223、225中的一个或多个缓存的牺牲缓存(“牺牲模式”)。如下面所描述的,在PCD的操作期间,可以动态地确定和/或设置L3缓存230在普通模式下操作或在牺牲模式下操作,并随后进行改变。
当L3缓存230操作在针对L2缓存221、223、225中的一个或多个缓存的牺牲模式时,通过使用从更高级别的L2缓存221、223、225到更低级别的L3缓存230的缓存行驱逐,增加用于内核220、222、224的有效缓存大小/容量,理论上减少第零内核220、第一内核222和/或第N内核224的缓存未命中数。但是,由于L3缓存230是牺牲缓存,所以它仅仅被从更高级别的L2缓存221、223、225驱逐的缓存行所填充,这需要包括来自L2缓存221、223、225的干净和脏的缓存行驱逐二者。转而,这在L3 230缓存处导致额外的驱逐和驱逐带宽(以及相关联的增加的功耗),以便为来自L2缓存221、223、225的额外的脏的和干净的缓存行驱逐腾出空间(与只驱逐脏的缓存行的普通模式相对)。
当L3缓存230操作在普通模式时,如上面所讨论的,并不增加用于内核220、222、224的有效缓存大小/容量,理论上增加第零内核220、第一内核222和/或第N内核224的缓存未命中数,这转而增加了不得不从主存储器(例如,DDR 250)中取回数据的时延。不过,减少对L3缓存230的驱逐(和从L3缓存230的驱逐),在L3缓存处引发更低的带宽使用(以及相关联的减少的功耗)。
转到图3A,该图示出了图2的示例性系统中的缓存存储器的示例性实施例的细节。图3A示出了与图2中所示出的第N内核224的L2缓存225相对应的L2缓存325的方面。类似地,图3A示出了与图2中所示出的L3缓存230相对应的L3缓存330的方面。虽然图3A只示出了一个L2缓存325,但这些原理可等同地适用于图2中所示出的其它L2缓存221、223。
如图3A中所示,L2缓存325被划分成包含常规的缓存数据行集的第一主要部分325a和包含L2数据的采样集的第二采样部分325b。图3A的实施例的所示出的第二部分325b进一步被细分成牺牲模式L2数据采样集326和普通模式L2数据采样集327,有效地将L2缓存325划分为三个数据集。
类似地,L3缓存330被划分成包含常规的缓存数据行集的第一主要部分330a和包含L3数据的采样集的第二采样部分330b。图3A的实施例的所示出的第二部分330b进一步被细分成牺牲模式L3数据采样集336和普通模式L3数据采样集337,有效地将L3缓存330划分为三个数据集。牺牲模式L3数据采样集336和普通模式L3数据采样集337均与L3缓存330的逻辑组件331进行通信。L3缓存330的逻辑组件331与图2A中所示出的L3缓存230的逻辑组件231相对应。应当注意,虽然将逻辑组件231/331示出成L3缓存230/330的一部分,但其可以是与L3缓存230/330、牺牲模式L3数据采样集336和普通模式L3数据采样集337,和/或L2缓存225/325通信的单独硬件、固件或软件组件。
在操作时,不管L3缓存330操作在普通模式还是操作在针对L2缓存325的牺牲模式,L2缓存325的第二采样部分325b都将生成牺牲模式L2数据采样集326和普通模式L2数据采样集327二者。采样L2数据的这种生成将导致在L3缓存330的采样部分330b中生成的相应的牺牲模式L3数据采样集336和普通模式L3数据采样集337。在采样时段期间,与L3缓存330相关联的逻辑组件331将基于所生成的牺牲模式L3数据采样集336和普通模式L3数据采样集337,动态地判断是否应当将L3缓存330作为针对L2缓存325的牺牲者来操作在牺牲模式下,还是应当将L3缓存330独立地操作在普通模式下。
在一个实施例中,L2缓存325将连续地生成牺牲模式L2数据采样集326和普通模式L2数据采样集327,以及将在L3缓存330中连续地生成所引发的牺牲模式L3数据采样集336和普通模式L3数据采样集337,使得其可以在采样时段期间被逻辑组件331读取或者以其它方式接收。在其它实施例中,L2缓存325将仅在逻辑组件331的采样时段期间生成牺牲模式L2数据采样集326和普通模式L2数据采样集327(以及使得在L3缓存330中生成引发的牺牲模式L3数据采样集336和普通模式L3数据采样集337)。
可以使用L2缓存325与牺牲L3缓存330的任何典型操作(例如,通过将干净的缓存行逐出到牺牲模式L3数据采样集336,以及将脏数据写回牺牲模式L3数据采样集336),来生成牺牲模式L2数据采样集326。类似地,可以在非牺牲或者普通模式下,使用L2缓存325和L3缓存330的任何典型操作(例如,通过只将脏数据写回普通模式L3数据采样集337,而不驱逐干净的缓存行),来生成普通模式L3数据采样集337。
一旦已经生成了采样集,则逻辑组件331基于L3数据的采样集336、337,判断在牺牲模式下操作L3缓存330的益处是否超过成本。可以以任何期望的方式来进行该判断。例如,在一个实施例中,逻辑组件331可以将牺牲模式L3数据采样集336和普通模式L3数据采样集337的缓存未命中进行相互比较和/或与门限值进行比较,以确定最佳驱逐策略(即,L3缓存330应当操作在普通模式,还是操作在针对L2缓存325的牺牲模式)。在该实施例的实现中,逻辑组件331可以确定或者测量牺牲模式L3数据采样集336的缓存未命中数量,将该数量与门限值进行比较。在另一种实现中,逻辑组件331可以确定或者测量牺牲模式L3数据采样集336的缓存未命中数量,从该数量中减去普通模式L3数据采样集337的测量的缓存未命中数量,将所获得的差值与门限值进行比较。
用于这些实施例的门限值可以是基于缓存容量、缓存时延或者其它性能属性、系统架构、由系统在执行的工作负荷、在执行的工作负荷的类型(例如,图形密集型应用对比音频文件重播应用)等等中的一个或多个的,以便允许逻辑组件331动态地判断在牺牲模式下操作L3缓存330的益处是否超过在牺牲模式下进行操作的“成本”(例如,就带宽、功耗等等而言)。在各个实施例中,该门限值可以是单个固定的、预先设置的值,可以是用于变化的条件或者工作负荷的多个值(例如,不同的门限值用于不同类型的工作负荷),或者可以是能够基于历史数据、当前状况等等进行编程或更新的动态值。
根据期望,关于逻辑组件331何时进行该判断的采样时段可以是按照固定的或者变化的时间间隔的,可以由一个或多个事件进行触发,或者上述二者。例如,在一个实施例中,在处理器(例如,图2中所示出的第N内核224的处理器)上对工作负荷、应用或线程的发起,可以是用于触发逻辑组件331的采样时段以进行关于如下的判断的事件:L3缓存330是否应当针对与第N内核224相关联的L2缓存225/335而操作在牺牲模式下。
在一些实施例中,一旦进行了该判断,则L3缓存330应当操作在所确定的模式下,直到发起新的工作负荷、应用或者线程为止。在其它实施例中,按照工作负荷、应用或线程的处理期间的一个或多个时间间隔,发起采样时段,使得当在处理该工作负荷、应用或线程时,逻辑组件331可以定期地进行该判断。在其它实施例中,该工作负荷、应用或线程的完成,可以是引发逻辑组件331进行另一次判断的触发事件。
一旦进行了该判断,则逻辑组件231/331可以使得L2缓存225/325和L3缓存230/330操作在由逻辑组件231/331有利地确定的牺牲/普通模式下。在图2和图3A所示出的实施例中,逻辑组件231/331可以向另一个组件发送信号(例如,通过互连/总线240向存储器控制器210发送信号),存储器控制器210使得L2缓存225/325和L3缓存230/330操作在期望的模式下。在其它实施例中,逻辑组件231/331可以是与L2缓存225/325和L3缓存230/330二者进行通信的单独组件(没有示出)。在这些实施例中,逻辑组件231/331自身的动作可以使得L2缓存225/325和L3缓存230/330操作在期望的模式下。
应当注意,虽然围绕硬件组件来讨论图3A,但上面所讨论的组件和操作也可以利用软件来实现和/或由软件来执行。例如,在一个实施例中,可以将包含图3A中所示出的L2数据的采样集的L2缓存325的第二采样部分325b划分成:包含在一个或多个软件可写入寄存器中的牺牲模式L2数据采样集326,以及包含在一个或多个软件可写入寄存器中的普通模式L2数据采样集327。类似地,图3A的L3缓存330还可以具有包含L3数据的采样集的第二采样部分330b。可以将L3缓存330的第二部分330b划分成:包含在一个或多个软件可写入寄存器中的牺牲模式L3数据采样集336,以及包含在一个或多个软件可写入寄存器中的普通模式L3数据采样集337。牺牲模式L3数据采样集336和普通模式L3数据采样集337均可以与L3缓存330的逻辑组件331进行通信,在该实施例中,逻辑组件331可以是软件组件。在该实施例中利用软件实现的逻辑组件331,可以通过以下方式来定期地确定要施加的策略:对软件寄存器中的L3数据的采样集336/337进行采样,和/或以其它方式获得与该策略确定有关的信息(例如,关于在执行的程序或工作负荷的信息)。
转到图3B,该图示出了图2的示例性系统中的缓存存储器的另一个示例性实施例的细节。图3B示出了与图2中所示出的第N内核224的L2缓存225相对应的L2缓存325’的方面。类似地,图3B示出了与图2中所示出的L3缓存230相对应的L3缓存330’的方面。虽然图3B只示出了一个L2缓存325’,但这些原理可等同地适用于图2中所示出的其它L2缓存221、223。
如图3B中所示,L2缓存325’被划分成包含常规的缓存数据线集的第一主要部分325a’和包含L2数据的采样集326’的第二采样部分325b’。与图3A中所示出的实施例不同的是,图3B的实施例的第二部分325b’没有被进一步细分成两个不同的L2数据采样集。
类似地,L3缓存330’也被划分成包含常规的缓存数据线集的第一主要部分330a’和包含L3数据的采样集336’的第二采样部分330b。L3数据的采样集336’与L3缓存330’的逻辑组件331’进行通信。L3缓存的逻辑组件331’与图2A中所示出的L3缓存230的逻辑组件231相对应。应当注意,虽然将逻辑组件231/331’示出成L3缓存230/330’的一部分,但其可以是与L3缓存230/330’、L3数据采样集336’和/或L2缓存225/325’通信的单独硬件、固件或软件组件。
在操作时,图3B的L2缓存325’将生成L2数据的采样集326’,其将是牺牲模式采样集或者普通模式采样集,取决于L3缓存330’的当前操作模式。如果L3缓存330’操作在普通模式下,则图3B的L2缓存325’将生成牺牲模式L2数据采样集326’。牺牲模式采样L2数据的这种生成,将导致在L3缓存330’的采样部分330b’中生成相应的牺牲模式L3数据采样集336’。
另一方面,如果L3缓存330’操作在牺牲模式下,则图3B的L2缓存325’将生成普通模式L2数据采样集326’。普通采样L2数据的这种生成,将导致在L3缓存330’的采样部分330b’中生成相应的普通模式L3数据采样集336’。因此,L2数据的采样集326’和L3数据的采样集336,将始终遵循L3缓存330’的当前操作模式的相反策略/模式。
在采样时段期间,与L3缓存330’相关联的逻辑组件331’将基于所生成的L3数据的采样集336’和主要部分330a’中的常规的缓存数据行集,动态地判断是否应当将L3缓存330’作为针对L2缓存325’的牺牲者来操作在牺牲模式下,还是应当将L3缓存330’独立地操作在普通模式下。
在一个实施例中,L2缓存325’将连续地生成L2数据的采样集326’,以及在L3缓存330’中将连续地生成所引发的L3数据的采样集336’,使得其可以在采样时段期间被逻辑组件331’读取或者以其它方式接收。在其它实施例中,L2缓存325’将仅在逻辑组件331’的采样时段期间,生成L2数据的采样集326’(并造成在L3缓存330中生成所引发的L3数据的采样集336’)。
可以使用L2缓存325’的任何典型操作,来生成L2数据采样集326’,如上面在图3A中所讨论的。例如,为了生成牺牲模式L2数据采样集326’和牺牲模式L3数据采样集336’,L2缓存325’可以将干净的缓存行驱逐到L3数据的采样集336,以及将脏数据写回到L3数据的采样集336。类似地,可以在没有牺牲L3缓存330’的情况下使用L2缓存325’的任何典型操作,来生成普通模式L2数据采样集326’、普通模式L3数据采样集336’,例如,通过只将脏数据写回到L3数据的采样集336’,而不驱逐干净的缓存行。
逻辑组件331’判断L3数据的采样集336’是否提供比主要部分330a’中的常规数据更佳的行为。只要L3数据的采样集336’提供更佳的行为,则对L3数据的采样集336’和主要部分330a’中的常规数据的模式/策略均进行改变。由于L3数据的采样集336’始终操作在与常规数据相反的模式下,因此当L3数据的采样集336’的模式是更有利的模式时,对二者进行改变将导致采样集和常规数据的模式/策略的翻转。
逻辑组件331’可以以任何期望的方式,来进行关于L3数据的采样集336’是否提供更佳的行为的判断。例如,在一个实施例中,逻辑组件331’可以将L3数据的采样集336’的缓存未命中与主要部分330a’中的常规的缓存数据行集的缓存未命中进行相互比较和/或与门限值进行比较,以确定最佳驱逐策略即,L3缓存330’应当操作在其当前模式下,还是应当改变该当前模式。可以以上面针对图3A所讨论的相同方式,来进行该判断。
在另一个实施例中,可以针对操作在牺牲模式下的任何数据集(常规325a’或者采样325b’),在采样时段期间跟踪干净驱逐的数量,可以将该数量与来自相同数据集的缓存命中数量进行比较。如果缓存命中数量除以干净驱逐的数量大于门限值,则牺牲模式是所确定的模式。如果L3缓存330’(即,主要部分330a’中的常规数据)当前在该采样时段内操作在牺牲模式下,则不进行改变。如果L3数据的采样集336’在该采样时段内操作在牺牲模式下,则对主要部分330a’和采样部分330b二者的模式/策略进行改变,使得L3缓存330’开始操作在牺牲模式下(而L3数据的采样集336’将开始在普通模式下采样/操作)。
用于任何判断方法的门限值可以是基于缓存容量、缓存时延或者其它性能属性、系统架构、系统在执行的工作负荷、在执行的工作负荷的类型(例如,图形密集型应用对比音频文件重播应用)等等中的一个或多个,以便允许逻辑组件331’动态地判断在牺牲模式下操作L3缓存330’的益处是否超过在牺牲模式下进行操作的“成本”(例如,就带宽、功耗等等而言)。在各个实施例中,该门限值可以是单个固定的、预先设置的值,可以是用于变化的条件或者工作负荷的多个值(例如,不同的门限值用于不同类型的工作负荷),或者可以是能够基于历史数据、当前状况等等进行编程或更新的动态值。
根据期望,关于逻辑组件331’何时进行该判断的采样时段可以是按照固定的或者变化的时间间隔的,可以由一个或多个事件进行触发,或者上述二者。例如,在一个实施例中,在处理器(例如,图2中所示出的第N内核224的处理器)上对工作负荷、应用或线程的发起,可以是用于触发逻辑组件331’的采样时段以进行以下判断的事件:L3缓存330’是否应当针对与第N内核224相关联的L2缓存225/335’而操作在牺牲模式下。
在一些实施例中,一旦进行了该判断,则L3缓存330’应当操作在所确定的模式下,直到发起新的工作负荷、应用或者线程为止。在其它实施例中,按照工作负荷、应用或线程的处理期间的一个或多个时间间隔,发起采样时段,使得当在处理该工作负荷、应用或线程时,逻辑组件331可以定期地进行该判断。在其它实施例中,该工作负荷、应用或线程的完成,可以是造成逻辑组件331’进行另一次判断的触发事件。
一旦进行了该判断,则逻辑组件231/331’可以使得L2缓存225/325’和L3缓存230/330’操作在由逻辑组件231/331’有利地确定的牺牲/普通模式下。在图2和图3B所示出的实施例中,逻辑组件231/331’可以向另一个组件发送信号(例如,通过互连/总线240向存储器控制器210发送信号),存储器控制器210使得L2缓存225/325’和L3缓存230/330’操作在期望的模式下。在其它实施例中,逻辑组件231/331’可以是与L2缓存225/325’和L3缓存230/330’二者进行通信的单独组件(没有示出)。在这些实施例中,逻辑组件231/331’自身的动作可以使得L2缓存225/325’和L3缓存230/330’操作在期望的模式下。
图4中示出了本公开内容的另一个方面。图4示出了用于在PCD(诸如,在图1中所示出的PCD实施例)中在改进缓存存储器的操作的情况下、适应性实现牺牲缓存模式的系统400的另一个示例性实施例。图4示出了包括可以在PCD中实现的片上系统(SoC)集成电路402(类似于图1中的SoC 102)的示例性系统400。图4的SoC 402包括存储器控制器410、第零内核420、第一内核422、第N内核424和L3缓存430,所有这些都连接到SoC 402的互连或总线440。SoC 402的互连/总线440可以是任何期望类型的总线或互连,其取决于SoC 402的架构和/或SoC 402或PCD预期的用途。
如图4的实施例中所示,存储器控制器410与互连/总线450进行通信,还与SoC 402之外的存储器DDR 450进行通信。存储器控制器410可以控制对SoC 402的各种存储器(其包括L3缓存430)的访问,还可以允许SoC 402的各个组件(其包括第零内核420、第一内核422和第N内核424)访问外部存储器DDR 450。
SoC 402还可以包括为了清楚说明起见,而在图4中没有示出的其它组件和/或子系统(其包括图1中示出的那些)。第零内核420、第一内核422和第N内核424中的每一个内核包括某种类型的处理器,每一个内核可以实现成上面针对图1所讨论的内核120、122、124、126中的一个内核。在一些实施例中,可以将第零内核420、第一内核422和第N内核424中的一个或多个内核的处理器,实现成通用处理单元,而在其它实施例中,可以将处理器实现成专用处理器(例如,DSP)。此外,第零内核420、第一内核422和第N内核424中的每一个内核还包括至少一个缓存存储器,在图4中示出成L2缓存421(用于第零内核420)、L2缓存423(用于第一内核422)和L2缓存425(用于第N内核424)。
在各个实施例中,第零内核420、第一内核422和第N内核424中的一个或多个内核可以包括比图4中所示出的更多或更少的组件,例如,额外的L1缓存。另外,在一些实施例中,可以按照不同的配置在SoC 402上物理地布置图4中所示出的组件,以及图4中所示出的一个或多个组件可能在SoC 402上不是物理地位于彼此邻近的位置。
在图4所示出的实施例中,可以按层级结构来组织L2缓存421、423、425、L3缓存430和DDR 450,其中,L2缓存421、423、425表示最小数据容量但具有最快性能/最低时延,L3缓存430比L2缓存421、423、425具有更大的数据容量但更慢的性能/更高的时延,而DDR 450具有最大的数据容量和最慢的性能/最高的时延。在该实施例中,L3缓存430是比L2缓存421、423、425更低一级的缓存。另外,在所示出的实施例中,L3缓存230可以操作成独立的缓存,其可以由第零内核420、第一内核422或者第N内核424中的任何一个内核直接访问(“普通模式”),或者L3缓存230可以是更高级别L2缓存421、423、425中的一个或多个缓存的牺牲缓存(“牺牲模式”)。如上所述,可以在PCD的操作期间,动态地确定和/或设置L3缓存430操作在普通模式下或操作在牺牲模式下,并随后进行改变。但是,对于图4的系统400而言,不需要确定或者选择牺牲模式,因为L3缓存430是动态的。
当L3缓存430操作在牺牲模式下时,处理器在L2缓存处的缓存未命中(例如,L2缓存423和第一内核422)将转到牺牲L3缓存430。L3缓存430处的未命中将从L3转到存储器控制器410再到DDR 450。从DDR 450返回的数据将从存储器控制器410转到L3缓存430,随后返回给请求的处理器(在该例子中,第一内核422)。这极大地增加了L2缓存423未命中时延,使与L2缓存423相关联的处理器(在该例子中,第一内核422的处理器)的性能劣化。
系统400使用所示出的与互连/总线440进行通信的L3过滤器460,来帮助减少这种L2缓存423未命中时延。L3过滤器460是具有更简单结构(例如,利用硬件实现的标签数组或布隆过滤器)的牺牲L3缓存430中包含的数据的复本。当L3缓存430操作在牺牲模式下时,该L3过滤器460可以结合系统400的L3缓存430进行使用,无论是连续地还是动态地作为如上面所讨论的适应性系统的一部分。
如本领域普通技术人员所应当理解的,虽然本文参照操作在牺牲模式下的L3缓存430进行讨论,但所讨论的预过滤器的原理也可等同地适用于被操作成更高级别缓存的牺牲者的任何缓存。例如,如果期望的话,替代于如图4中所示的L3过滤器460,方框460可以是用于L2缓存的L2过滤器(没有示出),其中L2缓存可以操作成更高级别缓存(例如,L1缓存(没有示出))的牺牲者。类似地,在其它实施例中,方框460可以是用于L4缓存(没有示出)的L4过滤器(没有示出),其中L4缓存可以操作成用于L3缓存430的牺牲者。
在图4所示出的实施例中,在L3缓存430操作在牺牲模式期间,当迫使L3缓存430接受从L2缓存(例如,L2缓存423)驱逐的缓存行时,在L3过滤器460中形成一个相应的条目,使得L3过滤器460包含关于在L3缓存430中存在该缓存行的某种注释。进行该通信和/或注释的形式,可以取决于如何实现L3过滤器460(例如,布隆过滤器、标签数组等等)的。类似地,当从操作在牺牲模式下的L3缓存430中驱逐缓存行时,在L3过滤器460中形成或者更新相应的条目,使得L3过滤器460反映出在L3缓存430中不再存在该缓存行。例如,在L3过滤器460是布隆过滤器的实现中,对于L3缓存430处的牺牲行替换而言,当L3缓存430中要被牺牲行替换的缓存行是干净的时,可以发出“不具有数据的驱逐”消息,以便更新L3过滤器460的布隆过滤器。
在系统400的操作期间,在处理器(例如,第一内核422的处理器)的L2缓存423未命中之后,处理器能够通过检查F3过滤器460,快速地判断所期望的缓存行是否位于牺牲L3缓存430之中。如果该缓存行位于L3过滤器460中,则L2缓存423未命中将针对该缓存行而转到L3缓存460。如果该缓存行不在L3过滤器460中,则L2缓存423未命中将不需要检查L3缓存430,而是将直接转到存储器控制器410继而到DDR 450,其极大地减少L2缓存423未命中时延。作为L2缓存423未命中的结果,如果对L2缓存423的更新,导致将缓存行从L2缓存423驱逐到牺牲L3缓存430,则对L3过滤器460进行更新,以反映新的缓存行被写入到L3缓存430,以及从L3缓存430中驱逐了任何缓存行。
在一个实施例中,L3过滤器460还可以包括序列化点(没有示出)或者与序列化点进行通信。通过在L3过滤器460中包括序列化点,或者作为与L3过滤器460通信的单独组件,可以将L3缓存430“未命中”(该“未命中”源自于检查L3过滤器460的结果,如上面所讨论的)之后从DDR 450随后返回的任何数据,直接发送回给请求的处理器。这将进一步减少L2缓存423未命中的时延损失。可以针对这些实施例,根据期望,将L3过滤器460和序列化点一起包含在一个硬件单元中,或者它们可以是彼此之间进行通信的单独硬件单元。
图5A是描述用于在PCD中适应性实现牺牲缓存模式的方法500的示例性实施例的方面的流程图。在方框502中,高级别缓存被划分成第一主要部分和第二采样部分。在一些实施例中,方框502的高级别缓存可以是与处理器相关联的L2缓存,例如,图1的示例性系统200中所示出的L2缓存221、223、225中的一个缓存。在其它实施例中,根据实现的特定架构,高级别缓存可以是L1缓存,L3缓存或者任何级别的缓存。
方框502的高级别缓存的第一主要部分可以包含常规的L2缓存数据行集,第二采样部分可以包含L2数据的采样集。例如,如图3A的实施例中所示,L2缓存325可以划分成包含常规的缓存数据行集的第一主要部分325a和包含L2数据的采样集的第二采样部分325b。
在方框504中,在方框502中产生的第二采样部分被进一步细分成牺牲模式采样数据集和普通模式采样数据集,有效地将高级别缓存划分成三个数据集。继续图3A的示例,图3A的实施例的第二部分325b示出成被进一步细分成牺牲模式L2数据采样集326和普通模式L2数据采样集327,有效地将L2缓存325划分为三个数据集。
在方框506中,低级别缓存也被划分成第一主要部分和第二采样部分。相对于存储器层级结构的高级别缓存而言,该低级别缓存在级别上更低,在一个实施例中,这意味着低级别缓存比高级别缓存具有更大的容量,和/或比高级别缓存具有更低的性能水平。在上面的高级别缓存是L2缓存的示例中,低级别缓存可以是L3缓存或者L4缓存。例如,如图3A中所示,当高级别缓存是L2缓存325时,低级别缓存可以是L3缓存330,该L3缓存330还被划分成包含常规的缓存数据行集的第一主要部分330a和包含L3数据的采样集的第二采样部分330b。
在方框508中,在方框506中产生的第二采样部分被进一步划分成牺牲模式采样数据集和普通模式采样数据集,有效地将低级别缓存划分成三个数据集。这三个数据集可以与上面所讨论的方框502-504中产生的三个数据集相对应。继续图3A的示例,所示出的L3缓存330的示出的第二部分330b被进一步细分成牺牲模式L3数据采样集336和普通模式L3数据采样集337,有效地将L3缓存330划分为三个数据集。
应当注意,虽然在图5A的示例性方法500中,将方框502-504和506-508示出成并行地发生,但在其它实施例中,这些方框可以顺序地发生,其中首先对高级别缓存进行划分,接着对低级别缓存进行划分(反之亦然)。类似地,虽然在方法500中将方框502-504示出成涉及针对高级别缓存的两个单独的划分操作,但在其它实施例中,可以将这些方框502-504组合成致使高级别缓存的三个部分的一个方框。相同的原理也适用于针对低级别缓存的方框506-508的划分操作。
在方框510中,检测到触发事件。在一些实施例中,方框510的触发事件可以是系统的操作改变,例如,系统的启动、或者特定工作负荷的开始。在一些实施例中,方框510的触发事件还可以是周期性事件,例如,定时器按照规则(或者不规则)时间间隔的触发。在其它实施例中,可以使用基于操作的触发事件和基于时间的触发事件的混合,例如,在特定的工作负荷开始时检测该触发事件,随后在工作负荷的处理期间定期地检测。
与高级别缓存和/或低级别缓存进行通信的任何组件可以检测方框510的触发事件。在一个实施例中,该触发事件可以由低级别缓存中的逻辑组件或者与低级别缓存进行通信的逻辑组件(例如,图3A中所示出的L3缓存330的逻辑组件331)来检测。
转到方框520,方法500从低级别缓存中获得牺牲模式采样数据和普通模式采样数据。例如,如图3A中所示,可以使得L2缓存325的第二采样部分325b生成牺牲模式L2数据采样集326和普通模式L2数据采样集327二者。采样L2数据的这种生成将导致在L3缓存330的采样部分330b中生成相应的牺牲模式L3数据采样集336和普通模式L3数据采样集337。随后,可以根据方框520来获得低级别缓存的这些数据集,例如,通过与低级别缓存(L3缓存330)相关联的逻辑组件331在采样时段期间接收或读取这些采样数据集。
在一些实施例中,高级别缓存(例如,图3A的L2缓存325)可以连续地使得生成所引发的低级别缓存牺牲模式采样数据集和普通模式采样数据集。在这些实施例中,只在采样时段期间,才接收或者读取这些持续生成的采样数据集。在其它实施例中,高级别缓存可以使得仅在采样时段期间,才生成所引发的低级别缓存牺牲模式采样数据集和普通模式采样数据集。
可以使用任何期望的方法,来生成在方框520中获得的低级别缓存的牺牲模式采样数据集。例如,可以使用低级别缓存作为牺牲缓存所耦合到的高级别缓存的任何典型操作,来生成牺牲模式采样数据集,例如,通过将干净的缓存行驱逐到低级别缓存的牺牲模式采样数据集,以及将脏的数据写回到低级别缓存的牺牲模式采样数据集。类似地,可以在非牺牲或者普通模式下,使用高级别缓存和低级别缓存的任何典型操作,来生成低级别缓存的普通模式采样集,例如,通过只将脏数据写回低级别缓存的普通模式采样数据集,而不驱逐干净的缓存行。
一旦在方框520中已经从低级别缓存获得了采样数据集,则方法500在方框530中,判断将低级别缓存操作在牺牲模式下是否是更为有利的。方框530的判断可以由与高级别缓存和/或低级别缓存进行通信的任何组件来做出。例如,在一个实施例中,方框530的判断可以由低级别缓存中的逻辑组件或者与低级别缓存进行通信的逻辑组件(例如,图3A中所示出的L3缓存330的逻辑组件331)来做出。
在一个实施例中,方框530的判断可以包括:将低级别缓存的牺牲模式采样数据集与低级别缓存的普通模式采样数据集的缓存未命中进行比较和/或与门限值进行比较,以判断将低级别缓存操作成高级别缓存的牺牲者是否是最佳的。例如,该判断可以包括:测量低级别缓存的牺牲模式采样数据集的缓存未命中数量,将该数量与门限值进行比较。在另一种实现中,该判断可以包括:测量低级别缓存的牺牲模式采样数据集的缓存未命中数量,从该数量中减去低级别缓存的普通模式采样数据集的测量的缓存未命中数量,将所获得的差值与门限值进行比较。
用于这些实施例的门限值可以是基于缓存容量、缓存时延或者其它性能属性、系统架构、由系统在执行的工作负荷、在执行的工作负荷的类型(例如,图形密集型应用对比音频文件重播应用)等等中的一个或多个,以便允许动态地判断将低级别缓存操作成牺牲缓存的益处是否超过这种操作的“成本”。
如果方框520的判断结果是不应当将低级别缓存操作在牺牲模式下,则方法500转到方框540,将低级别缓存的主要部分操作在普通、非牺牲缓存模式下。在低级别缓存的主要部分已经操作在普通、非牺牲模式下的情况中,方框540将不造成对低级别缓存的任何操作改变。低级别缓存将继续操作在该模式下,方法500将返回到方框510,等待检测下一个触发事件。
但是,如果当方框530做出的判断是操作在普通模式时,低级别缓存的主要部分操作成牺牲缓存,则方框540将造成该低级别缓存的主要部分操作在普通、非牺牲模式下。可以以任何期望的方式,来实现低级别缓存的主要部分的操作的这种改变,例如,在图2的示例性系统200中,通过互连/总线240去往存储器控制器210的信号。在该实施例中,存储器控制器210使得高级别缓存(在该例子中,L2缓存225/325)和低级别缓存(在该例子中,L3缓存230/330)操作在期望的普通模式下。在其它实施例中,与系统存储器控制器分开来的与高级别缓存和低级别缓存二者通信的单独的组件,可以用于使得高级别缓存和低级别缓存操作在期望的普通模式下,而无需使用存储器控制器。
返回到方框530,如果判断结果是将低级别缓存操作成高级别缓存的牺牲者是有利的,则该方法转到方框550,将低级别缓存的主要部分操作成高级别缓存的牺牲者。方框550的操作可以类似于上面针对方框540所讨论的,但是是相反的(即,使得低级别缓存继续操作成牺牲缓存(如果已经操作在该模式下的话),但如果当前操作成普通、非牺牲缓存,则使得低级别缓存改变成牺牲操作)。随后,方法500返回到方框510,等待检测下一个触发事件。
图6A是描述用于在PCD中适应性实现牺牲缓存模式的方法600的另一个示例性实施例的方面的流程图。图6A类似于图5A的方法500,除了在方法600中,仅生成用于高级别缓存和低级别缓存的一个采样数据集,并且始终通过操作在与高级别缓存和低级别缓存的主要部分的操作相反的模式下来生成该采样集。用此方式,高级别缓存的主要部分有效地代替先前方法500的第二采样数据集。
方法600开始于方框602,其中,高级别缓存被划分成第一主要部分和第二采样部分,类似于图5A的方框502。在方框604中,将高级别缓存的主要部分操作在普通模式(当高级别缓存不具有牺牲缓存时)或者牺牲模式(当假定低级别缓存是高级别缓存的牺牲者时)中的一者下。在不同的实施例中,方框604可以造成高级别缓存的主要部分根据期望来操作在这些模式中的任意一者下,可以将这些模式中的一者建立成自动缺省模式。不管为高级别缓存的主要部分选择哪种模式,采样部分都操作在另一/相反模式下。
在方框606中,低级别缓存也被划分成第一主要部分和第二采样部分,类似于图5A的方框506。在方框608中,将低级别缓存的主要部分操作在与高级别缓存的主要部分相同的模式下。类似地,将低级别缓存的采样部分操作在与高级别缓存的采样部分相同的模式下。因此,类似于高级别缓存,方框608确保不管低级别缓存的主要部分操作在哪种模式下,采样部分都操作在另一/相反模式下。
在图6A的示例性方法600中,将方框602-604(用于高级别缓存)和606-608(用于低级别缓存)示出成并行地发生。在方法600的其它实施例中,方框602-604可以顺序地而不是并行地发生。另外,在一些实施例中,方框604可以不是相对于方框602的单独步骤(例如,当在方框602中产生这些部分时,可以设置用于方框604的部分的相应操作模式,而不是作为单独的步骤)。在一些实施例中,方框606-608也是如此。
在方框610中,检测到触发事件。类似于图5A的方框510,在一些实施例中,方框610的触发事件可以是系统的操作改变,例如,系统的启动、或者特定工作负荷的开始。在一些实施例中,方框610的触发事件还可以是周期性事件,例如,定时器按照规则(或者不规则)时间间隔的触发。在其它实施例中,可以使用基于操作的触发事件和基于时间的触发事件的混合。另外,与高级别缓存和/或低级别缓存进行通信的任何组件可以检测方框610的触发事件。在一个实施例中,该触发事件可以由低级别缓存中的逻辑组件或者与低级别缓存进行通信的逻辑组件(例如,图3B中所示出的L3缓存330’的逻辑组件331’)来检测。
转到方框620,方法600从低级别缓存中获得主要部分数据集和采样部分数据集。由于低级别缓存的主要部分和采样部分操作在相反模式下,因此这些数据集将包括:表示低级别缓存操作成高级别缓存的牺牲者的一个数据集,以及表示低级别缓存操作成普通、非牺牲缓存的一个数据集。
例如,如图3B中所示,L2缓存325’的主要部分325a’将根据在方法600的方框604中设置/选定的模式进行操作。取决于用于主要部分325a’的模式,高级别缓存(L2缓存325’)和系统200(图2)的操作将导致在低级别缓存(在图3B的例子中,L3缓存330’)的主要部分330a’中连续地生成牺牲缓存数据集或者普通、非牺牲缓存数据集。在方框620中,获得或者读取低级别缓存的主要部分的数据集。
类似地,可以使得L2缓存325’的采样部分325b’生成L2数据的采样集326,采样的类型(牺牲或者普通)将取决于主要部分325a’的操作模式。采样L2数据的这种生成,将致使在L3缓存330’的采样部分330b’中生成相应的L3数据采样集336’。随后,可以根据方框620来获得低级别缓存的该采样数据集,例如,通过与低级别缓存(L3缓存330’)相关联的逻辑组件331’在采样时段期间接收或读取该采样数据集。
在一些实施例中,高级别缓存(例如,图3A的L2缓存325’)可以连续地使得生成所引发的低级别缓存采样数据集。在这些实施例中,可以仅仅在采样时段期间,才接收或者读取该连续生成的采样数据集。在其它实施例中,高级别缓存可以只在采样时段期间,致使生成所引发的低级别缓存采样数据集。
可以使用任何期望的方法,来生成在方框620中获得的低级别缓存的采样数据集。例如,可以使用低级别缓存作为牺牲缓存所耦合到的高级别缓存的任何典型操作,来生成牺牲模式采样数据集(当指示采样部分操作在牺牲模式时),例如,通过将干净的缓存行驱逐到低级别缓存的牺牲模式采样数据集,将脏的数据写回到低级别缓存的牺牲模式采样数据集。类似地,可以在非牺牲或者普通模式下,使用高级别缓存和低级别缓存的任何典型操作,来生成低级别缓存的普通模式采样集(当指示采样部分操作在牺牲模式时),例如,通过只将脏数据写回低级别缓存的普通模式采样数据集,而不驱逐干净的缓存行。
一旦已经在方框620中从低级别缓存获得了主要部分和采样部分数据集,在方框630中,方法600判断将低级别缓存操作在采样集的模式下是否更为有利。方框630的判断可以由与高级别缓存和/或低级别缓存进行通信的任何组件来做出。例如,在一个实施例中,方框630的判断可以由低级别缓存中的逻辑组件或者与低级别缓存进行通信的逻辑组件(例如,图3B中所示出的L3缓存330’的逻辑组件331’)来做出。
在一个实施例中,方框630判断采样数据集(例如,图3B的例子中的L3数据336’)是否提供比主要部分(图3B中的330a’)中的常规数据更佳的行为。可以以任何期望的方式来进行该判断。例如,在一个实施例中,方框630的判断可以包括:将来自采样部分的采样数据集的缓存未命中与主要部分中的常规的缓存数据行集的缓存未命中进行相互比较,和/或与门限值进行比较,以判断是否应当将低级别缓存操作在其当前模式下,或者是否应当改变当前模式。可以利用上面针对图5A所讨论的相同方式,来进行这些实施例中的该判断。
在另一个实施例中,可以针对操作在牺牲模式下的任何数据集(主要部分或者采样部分),在采样时段期间跟踪干净驱逐的数量,可以将该数量与来自相同数据集的缓存命中数量进行比较。如果缓存命中数量除以干净驱逐的数量大于门限值,则牺牲模式是所确定的模式。如果缓存命中数量除以干净驱逐的数量大于门限值,则非牺牲模式是所确定的模式。在这些实施例中,方框630继而识别或者判断采样部分是否是操作在所确定的模式下的部分(即,判断使低级别缓存操作在采样部分的模式下是否是更为有利的)。
如上面所讨论的,用于任何判断方法的门限值可以是基于缓存容量、缓存时延或者其它性能属性、系统架构、由系统在执行的工作负荷、在执行的工作负荷的类型(例如,图形密集型应用对比音频文件重播应用)等等中的一个或多个。在各个实施例中,该门限值可以是单个固定的、预先设置的值,可以是用于变化的条件或者工作负荷的多个值(例如,不同的门限值用于不同类型的工作负荷),或者可以是能够基于历史数据、当前状况等等进行编程或更新的动态值。
如果在方框630中的判断结果为‘是’(即,使低级别缓存操作在采样部分的模式下是更为有利的),则方法600转到方框640,对用于高级别缓存和低级别缓存二者的主要部分和采样部分二者的操作模式进行切换。如上面所讨论的,将操作模式从非牺牲改变成牺牲(或者反之亦然),可以由与高级别缓存和低级别缓存二者进行通信的单独组件来完成,或者可以通过在互连/总线240上向存储器控制器(例如,图2中的210)发信号来完成。随后,方法600返回到方框610,以等待检测另一个触发事件。
如果在方框630中的判断结果为‘否’(即,使低级别缓存操作在采样部分的模式下不是更为有利的),则方法600返回到方框610,以等待检测另一个触发事件。
因此,只要低级别缓存中的采样数据集提供更佳的行为,则对采样部分和主要部分二者的模式/策略进行改变。由于采样部分始终操作在与主要部分相反的模式下,因此改变二者将导致采样部分中的采样集和主要部分中的常规数据的模式/策略的翻转。
图7A是描述用于在PCD中在改进缓存存储器的操作的情况下、适应性实现牺牲缓存模式的方法700的示例性实施例的方面的流程图。方法700开始于方框710,其中,低级别缓存操作在针对高级别缓存的牺牲模式下。如上面参照图5A和图6A所讨论的,低级别缓存可以动态地和/或适应性地操作成牺牲缓存。在其它实施例中,低级别缓存可以持续地操作成牺牲缓存。
高级别缓存和低级别缓存是如上所述的存储器分层结构的一部分。在一个实施例中,与高级别缓存相比,低级别缓存具有更大的容量和/或更慢的性能。通常,高级别缓存与处理器相关联(例如,L1或L2缓存),但在一些实施例中,高级别缓存可以是任何级别的缓存(其包括L3或L4),其中,存储器分层结构包括比高缓存级别低至少一个级别的缓存。
在方框720中,过滤器与低级别牺牲缓存相关联地操作。该过滤器可以是如图4中所示的过滤器460,以及可以是任何期望的过滤器结构(例如,布隆过滤器、标签数组等等)。在一个实施例中,该过滤器是利用更简单结构实现的低级别牺牲缓存中所包含的数据的复本。
在方框730中,对过滤器进行更新以反映出低级别牺牲缓存中的缓存行。在一个实施例中,在低级别缓存操作成高级别缓存的牺牲缓存期间(例如,图4中所示出的L3缓存430),当迫使低级别缓存接受从高级别缓存驱逐的缓存行时,在过滤器中形成一个相应的条目,使得该过滤器包含关于在低级别牺牲缓存中存在该缓存行的某种注释或记录。
进行该通信和/或注释的形式,可以取决于如何实现过滤器460(例如,布隆过滤器、标签数组等等)。例如,在一种实现中,在方框730中更新过滤器可以包括:当从低级别牺牲缓存中驱逐缓存行时,在该过滤器中形成或者改变条目,以便反映出在低级别牺牲缓存中不再存在该缓存行。在该实现中,如果过滤器是布隆过滤器,则在方框730中更新过滤器可以包括:当在低级别缓存处被牺牲行来替换的缓存行是干净的时,发出“不具有数据的驱逐”消息。
在方框740中,当在高级别缓存处缓存未命中时,进行关于该缓存行是否在低级别缓存中的判断。在一个实施例中,可以通过针对在高级别缓存处未命中时的该缓存行来检查过滤器,从而进行该判断。因此,举例而言,在图4所示出的实施例中,在处理器的L2缓存423未命中之后,处理器能够通过在方框740中检查过滤器,快速地判断所期望的缓存行是否处于低级别牺牲缓存中。
如果方框740处的判断结果是‘是’(即,如果高级别缓存未命中在过滤器上发生命中),则该高级别未命中转到低级别牺牲缓存处,以便在方框750中取回该缓存行。随后,方法700返回。
如果方框740处的判断结果是‘否’(即,如果高级别缓存未命中也在过滤器上未命中),则在方框760中,该高级别缓存未命中旁路低级别牺牲缓存。因此,如果该缓存行不在过滤器中,则高级别缓存未命中将不需要检查低级别缓存本身(以及招致向低级别牺牲缓存进行请求和从其获得答复的时延)。事实上,在方框760中,高级别缓存未命中将直接转到存储器控制器(例如,图4中的存储器控制器410)以及继而到主存储器(例如,图4的DDR450)。这极大地减少了高级别缓存未命中的时延损失。
如果作为方框760中针对存储器控制器请求的结果,对高级别缓存进行了更新,则这些更新可以造成缓存行从高级别缓存驱逐到低级别牺牲缓存。在方框770中,对过滤器进行更新以反映出新的缓存行被写入到了低级别缓存,以及从低级别缓存中驱逐了任何缓存行。随后,方法700返回。
如本领域普通技术人员所应当理解的,图5A、6A和图7A只分别描述了所公开的方法500、600和700的一种示例性实施例。在其它实施例中,可以向图5A中所示出的方法500、图6A中所示出的方法600和/或图7A中所示出的方法700增加额外的方框或步骤。类似地,在一些实施例中,可以对图5A、6A和/或图7A中所示出的各个方框或步骤进行组合或省略。方法500、600或700的这些变型也落入本公开内容的保护范围之内。
另外,本说明书中所描述的处理或者处理流程(其包括图5A、6A或7A)中的某些步骤,可以自然地在所述的实施例中在本发明的其它步骤之前来实现功能。但是,本公开内容并不限于这些所描述的步骤的顺序,如果这种顺序或者序列并不改变本发明的功能的话。此外,应当认识到,在不脱离本公开内容的保护范围的基础上,一些步骤可以在其它步骤之前执行、之后执行或者并行地执行(基本同时地执行)。此外,诸如“其后”、“转而”、“接着”、“随后”等等之类的词语,并不旨在限制这些步骤的顺序。这些词语仅仅用于引导读者遍历对该示例性方法的描述。
上面针对于方法500、600和700所描述的各种操作、方法或功能,可以由各种硬件和/或软件组件/模块来执行。这些组件和/或模块可以提供用于执行这些各种所描述的操作、方法或功能的手段。通常,在具有相应配对的手段加功能附图的附图中示出有方法的地方,这些操作框与具有类似编号的手段加功能框相对应。例如,图5A中所示出的方框502-550与图5B中所示出的手段加功能框502’-550’相对应。类似地,图6A中所示出的方框602-640与图6B中所示出的手段加功能框602’-640’相对应。最后,图7A中所示出的方框710-770与图7B中所示出的手段加功能框710’-770’相对应。
另外,编程领域中的普通技术人员能够编写计算机代码或者识别适当的硬件和/或电路,以便例如基于流程图和本说明书中的相关联的描述,没有困难地实现本发明的所公开内容。因此,对于充分地理解如何实施和使用本发明来说,并不认为是必需要公开特定的程序代码指令集或者详细的硬件设备。在上面的描述中,结合可以描绘各个处理流程的附图,来更详细地解释所主张的处理器实现的过程的创新性功能。
在如上面所指示的一个或多个示例性方面,本文所描述功能可以用硬件、软件、固件或它们任意组合的方式来实现。当在软件中实现时,可以将这些功能存储在计算机可读介质(例如,非临时性处理器可读介质)上,或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括数据存储介质和通信介质二者,其中通信介质包括便于从一个位置向另一个位置传送程序的任何介质。
存储介质可以是计算机或者处理器能够存取的任何可用介质。举例而言但非做出限制,这种计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或者其它光盘存储器、磁盘存储器或其它磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机进行存取的任何其它介质。如本文中所使用的,磁盘和光盘包括压缩光盘(“CD”)、激光盘、光盘、数字通用光盘(“DVD”)、软盘和蓝光盘,其中磁盘通常磁性地复制数据,而光盘则用激光来光学地复制数据。上述的组合也应当包括在非临时性计算机可读介质的范围之内。
虽然已经详细地描绘和描述了选定的方面,但应当理解的是,可以在不脱离如所附权利要求书所界定的本发明的基础上,对本文做出各种替代和改变。

Claims (30)

1.一种用于改进便携式计算设备(PCD)中的牺牲缓存的操作的方法,所述方法包括:
将低级别缓存操作成高级别缓存的牺牲者,所述低级别缓存包含多个缓存行;
将过滤器与所述低级别牺牲缓存相关联地操作;
对所述过滤器进行更新以反映包含在所述低级别牺牲缓存中的所述多个缓存行;
倘若在所述高级别缓存处发生未命中,判断请求的缓存行是否是所述低级别缓存中包含的所述多个缓存行里的一个缓存行,其中,所述判断包括:检查与所述低级别牺牲缓存相关联的所述过滤器;以及
如果所述判断是所述请求的缓存行是所述低级别缓存中包含的所述多个缓存行里的一个缓存行,则从所述低级别牺牲缓存中取回所述请求的缓存行,以及
如果所述判断是所述请求的缓存行不是所述低级别缓存中包含的所述多个缓存行里的一个缓存行,则旁路所述低级别牺牲缓存,以及从与所述高级别缓存通信的存储器控制器请求所述缓存行。
2.根据权利要求1所述的方法,其中:
所述高级别缓存包括与处理器相关联的L2缓存,以及
所述低级别牺牲缓存包括经由互连与所述L2缓存进行通信的L3缓存。
3.根据权利要求1所述的方法,其中,所述滤波器是布隆过滤器。
4.根据权利要求3所述的方法,其中,对所述过滤器进行更新以反映包含在所述低级别牺牲缓存中的所述多个缓存行还包括:
对所述布隆过滤器进行更新以显示从所述高级别缓存驱逐的缓存行已经被所述低级别牺牲缓存接受。
5.根据权利要求4所述的方法,其中,对所述布隆过滤器进行更新以显示从所述高级别缓存驱逐的缓存行已经被所述低级别牺牲缓存接受还包括:
当从所述低级别缓存驱逐的缓存行包括干净的数据缓存行时,发出没有数据驱逐消息。
6.根据权利要求3所述的方法,其中,对所述过滤器进行更新以反映包含在所述低级别牺牲缓存中的所述多个缓存行还包括:
对所述布隆过滤器进行更新,以显示在所述低级别牺牲缓存中不再存在从所述低级别牺牲缓存中驱逐的缓存行。
7.根据权利要求3所述的方法,其中,所述过滤器与用于所述低级别牺牲缓存的序列化点通信。
8.根据权利要求7所述的方法,其中,所述序列化点包括所述过滤器的一部分。
9.根据权利要求1所述的方法,其中,旁路所述低级别牺牲缓存,以及从与所述高级别缓存通信的存储器控制器请求所述缓存行还包括:
从与所述存储器控制器通信的非缓存存储器中,请求所述缓存行。
10.根据权利要求1所述的方法,其中:
所述高级别缓存包括与处理器相关联的第一L2缓存,以及
所述低级别牺牲缓存包括经由互连与所述第一L2缓存进行通信的第二L2缓存。
11.一种用于便携式计算设备(PCD)中的片上系统(SoC)的计算机系统,所述系统包括:
高级别缓存;
与所述高级别缓存通信的低级别缓存,所述低级别缓存被配置为操作成所述高级别缓存的牺牲者,以及所述低级别缓存包含多个缓存行;
与所述低级别牺牲缓存通信的过滤器,其中,所述过滤器被配置为反映包含在所述低级别牺牲缓存中的所述多个缓存行;以及
逻辑组件,其被配置为:
倘若在所述高级别缓存处发生未命中,通过检查与所述低级别牺牲缓存相关联的所述过滤器,来判断请求的缓存行是否是所述低级别缓存中包含的所述多个缓存行里的一个缓存行;以及
如果所述判断是所述请求的缓存行是所述低级别缓存中包含的所述多个缓存行里的一个缓存行,则使得从所述低级别牺牲缓存中取回所述请求的缓存行,以及
如果所述判断是所述请求的缓存行不是所述低级别缓存中包含的所述多个缓存行里的一个缓存行,则旁路所述低级别牺牲缓存,以及从与所述高级别缓存通信的存储器控制器请求所述缓存行。
12.根据权利要求11所述的系统,其中:
所述高级别缓存包括与处理器相关联的L2缓存,以及
所述低级别牺牲缓存包括经由互连与所述L2缓存进行通信的L3缓存。
13.根据权利要求11所述的系统,其中,所述滤波器是布隆过滤器
14.根据权利要求13所述的系统,其中,所述过滤器被配置为反映包含在所述低级别牺牲缓存中的所述多个缓存行还包括:
所述布隆过滤器被配置为反映从所述高级别缓存驱逐的缓存行已经被所述低级别牺牲缓存接受。
15.根据权利要求14所述的系统,其中,所述布隆过滤器被配置为反映从所述高级别缓存驱逐的缓存行已经被所述低级别牺牲缓存接受还包括:
当从所述低级别缓存驱逐的缓存行包括干净的数据缓存行时的没有数据驱逐消息。
16.根据权利要求13所述的系统,其中,所述过滤器被配置为反映包含在所述低级别牺牲缓存中的所述多个缓存行还包括:
所述布隆过滤器被配置为反映在所述低级别牺牲缓存中不再存在从所述低级别牺牲缓存中驱逐的缓存行。
17.根据权利要求13所述的系统,还包括:
与所述低级别牺牲缓存通信的序列化点。
18.根据权利要求17所述的系统,其中,所述序列化点包括所述过滤器的一部分。
19.根据权利要求11所述的系统,还包括:
与所述存储器控制器通信的非缓存存储器,以及其中,被配置为旁路所述低级别牺牲缓存,以及从与所述高级别缓存通信的存储器控制器请求所述缓存行的所述逻辑组件,还被配置为:从所述非缓存存储器中,请求所述缓存行。
20.根据权利要求11所述的系统,其中:
所述高级别缓存包括与处理器相关联的第一L2缓存,以及
所述低级别牺牲缓存包括经由互连与所述第一L2缓存进行通信的第二L2缓存。
21.一种包括非临时性计算机可使用介质的计算机程序产品,其中,所述非临时性计算机可使用介质中体现有计算机可读程序代码,所述计算机可读程序代码适于被执行,以实现用于改进便携式计算设备(PCD)中的牺牲缓存的操作的方法,所述方法包括:
将低级别缓存操作成高级别缓存的牺牲者,所述低级别缓存包含多个缓存行;
将过滤器与所述低级别牺牲缓存相关联地操作;
对所述过滤器进行更新以反映包含在所述低级别牺牲缓存中的所述多个缓存行;
倘若在所述高级别缓存处发生未命中,判断请求的缓存行是否是所述低级别缓存中包含的所述多个缓存行里的一个缓存行,其中,所述判断包括:检查与所述低级别牺牲缓存相关联的所述过滤器;以及
如果所述判断是所述请求的缓存行是所述低级别缓存中包含的所述多个缓存行里的一个缓存行,则从所述低级别牺牲缓存中取回所述请求的缓存行,以及
如果所述判断是所述请求的缓存行不是所述低级别缓存中包含的所述多个缓存行里的一个缓存行,则旁路所述低级别牺牲缓存,以及从与所述高级别缓存通信的存储器控制器请求所述缓存行。
22.根据权利要求21所述的计算机程序产品,其中:
所述高级别缓存包括与处理器相关联的L2缓存,以及
所述低级别牺牲缓存包括经由互连与所述L2缓存进行通信的L3缓存。
23.根据权利要求21所述的计算机程序产品,其中,所述滤波器是布隆过滤器
24.根据权利要求23所述的计算机程序产品,其中,对所述过滤器进行更新以反映包含在所述低级别牺牲缓存中的所述多个缓存行还包括:
对所述布隆过滤器进行更新以显示从所述高级别缓存驱逐的缓存行已经被所述低级别牺牲缓存接受。
25.根据权利要求24所述的计算机程序产品,其中,对所述布隆过滤器进行更新以显示从所述高级别缓存驱逐的缓存行已经被所述低级别牺牲缓存接受还包括:
当从所述低级别缓存驱逐的缓存行包括干净的数据缓存行时,发出没有数据驱逐消息。
26.一种用于改进便携式计算设备(PCD)中的牺牲缓存的操作的计算机系统,所述系统包括:
用于将低级别缓存操作成高级别缓存的牺牲者的单元,所述低级别缓存包含多个缓存行;
用于将过滤器与所述低级别牺牲缓存相关联地操作的单元;
用于对所述过滤器进行更新以反映包含在所述低级别牺牲缓存中的所述多个缓存行的单元;
用于倘若在所述高级别缓存处发生未命中,判断请求的缓存行是否是所述低级别缓存中包含的所述多个缓存行里的一个缓存行的单元,其中,所述用于判断的单元包括:用于检查与所述低级别牺牲缓存相关联的所述过滤器的单元;以及
如果所述判断是所述请求的缓存行是所述低级别缓存中包含的所述多个缓存行里的一个缓存行,则用于从所述低级别牺牲缓存中取回所述请求的缓存行的单元,以及
如果所述判断是所述请求的缓存行不是所述低级别缓存中包含的所述多个缓存行里的一个缓存行,则用于旁路所述低级别牺牲缓存,以及从与所述高级别缓存通信的存储器控制器请求所述缓存行的单元。
27.根据权利要求26所述的系统,其中:
所述高级别缓存包括与处理器相关联的L2缓存,以及
所述低级别牺牲缓存包括经由互连与所述L2缓存进行通信的L3缓存。
28.根据权利要求26所述的系统,所述滤波器是布隆过滤器。
29.根据权利要求28所述的系统,其中,所述用于对所述过滤器进行更新以反映包含在所述低级别牺牲缓存中的所述多个缓存行的单元,还包括:
用于对所述布隆过滤器进行更新以显示从所述高级别缓存驱逐的缓存行已经被所述低级别牺牲缓存接受的单元。
30.根据权利要求29所述的系统,其中,所述用于对所述布隆过滤器进行更新以显示从所述高级别缓存驱逐的缓存行已经被所述低级别牺牲缓存接受的单元,还包括:
用于当从所述低级别缓存驱逐的缓存行包括干净的数据缓存行时,发出没有数据驱逐消息的单元。
CN201680005771.7A 2015-01-15 2016-01-08 用于改进便携式计算设备中的牺牲(victim)缓存模式的系统和方法 Pending CN107111555A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/598,049 US9690710B2 (en) 2015-01-15 2015-01-15 System and method for improving a victim cache mode in a portable computing device
US14/598,049 2015-01-15
PCT/US2016/012745 WO2016114998A1 (en) 2015-01-15 2016-01-08 System and method for improving a victim cache mode in a portable computing device

Publications (1)

Publication Number Publication Date
CN107111555A true CN107111555A (zh) 2017-08-29

Family

ID=55275189

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680005771.7A Pending CN107111555A (zh) 2015-01-15 2016-01-08 用于改进便携式计算设备中的牺牲(victim)缓存模式的系统和方法

Country Status (5)

Country Link
US (1) US9690710B2 (zh)
EP (1) EP3245592A1 (zh)
JP (1) JP6266850B1 (zh)
CN (1) CN107111555A (zh)
WO (1) WO2016114998A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109117388A (zh) * 2018-07-19 2019-01-01 浙江大学 针对内存端缓存的数据动态旁路装置及方法

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2012225496B2 (en) 2011-03-07 2016-09-22 Conventus Orthopaedics, Inc. Apparatus and methods for bone repair preparation
US10075741B2 (en) * 2013-07-03 2018-09-11 Avago Technologies General Ip (Singapore) Pte. Ltd. System and control protocol of layered local caching for adaptive bit rate services
US9575551B2 (en) * 2013-09-26 2017-02-21 Intel Corporation GNSS services on low power hub
US9558117B2 (en) 2015-01-15 2017-01-31 Qualcomm Incorporated System and method for adaptive implementation of victim cache mode in a portable computing device
JP6334824B2 (ja) * 2015-07-16 2018-05-30 東芝メモリ株式会社 メモリコントローラ、情報処理装置および処理装置
CN107368437B (zh) * 2017-07-24 2021-06-29 郑州云海信息技术有限公司 一种末级缓存管理方法及系统
US10831659B2 (en) 2018-09-28 2020-11-10 International Business Machines Corporation Scope resolution tag buffer to reduce cache miss latency
US11275692B2 (en) * 2019-05-24 2022-03-15 Texas Instruments Incorporated Methods and apparatus for multi-banked victim cache with dual datapath

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090222625A1 (en) * 2005-09-13 2009-09-03 Mrinmoy Ghosh Cache miss detection in a data processing apparatus
US20120017041A1 (en) * 2010-07-19 2012-01-19 Lsi Corporation Managing extended raid caches using counting bloom filters
US20130145104A1 (en) * 2011-12-06 2013-06-06 Lisa Hsu Method and apparatus for controlling cache refills
US20140143493A1 (en) * 2012-11-19 2014-05-22 Advanced Micro Devices Bypassing a Cache when Handling Memory Requests

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3262182B2 (ja) * 1992-05-25 2002-03-04 日本電気株式会社 キャッシュメモリ方式及びマイクロプロセッサ装置
US6397296B1 (en) * 1999-02-19 2002-05-28 Hitachi Ltd. Two-level instruction cache for embedded processors
WO2002027498A2 (en) 2000-09-29 2002-04-04 Sun Microsystems, Inc. System and method for identifying and managing streaming-data
US7136967B2 (en) * 2003-12-09 2006-11-14 International Business Machinces Corporation Multi-level cache having overlapping congruence groups of associativity sets in different cache levels
US7430639B1 (en) 2005-08-26 2008-09-30 Network Appliance, Inc. Optimization of cascaded virtual cache memory
US20070094450A1 (en) 2005-10-26 2007-04-26 International Business Machines Corporation Multi-level cache architecture having a selective victim cache
US7711902B2 (en) 2006-04-07 2010-05-04 Broadcom Corporation Area effective cache with pseudo associative memory
US9244793B1 (en) 2008-11-04 2016-01-26 Teradata Us, Inc. Using target database system statistics in emulation
US8966181B2 (en) 2008-12-11 2015-02-24 Seagate Technology Llc Memory hierarchy with non-volatile filter and victim caches
US8935478B2 (en) * 2011-11-01 2015-01-13 International Business Machines Corporation Variable cache line size management
US8868843B2 (en) 2011-11-30 2014-10-21 Advanced Micro Devices, Inc. Hardware filter for tracking block presence in large caches
US8788757B2 (en) 2011-12-09 2014-07-22 International Business Machines Corporation Dynamic inclusive policy in a hybrid cache hierarchy using hit rate
US9298632B2 (en) * 2012-06-28 2016-03-29 Intel Corporation Hybrid cache state and filter tracking of memory operations during a transaction
US9218204B2 (en) 2012-12-21 2015-12-22 Advanced Micro Devices, Inc. Processing engine for complex atomic operations
US9558117B2 (en) 2015-01-15 2017-01-31 Qualcomm Incorporated System and method for adaptive implementation of victim cache mode in a portable computing device

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090222625A1 (en) * 2005-09-13 2009-09-03 Mrinmoy Ghosh Cache miss detection in a data processing apparatus
US20120017041A1 (en) * 2010-07-19 2012-01-19 Lsi Corporation Managing extended raid caches using counting bloom filters
US20130145104A1 (en) * 2011-12-06 2013-06-06 Lisa Hsu Method and apparatus for controlling cache refills
US20140143493A1 (en) * 2012-11-19 2014-05-22 Advanced Micro Devices Bypassing a Cache when Handling Memory Requests

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109117388A (zh) * 2018-07-19 2019-01-01 浙江大学 针对内存端缓存的数据动态旁路装置及方法
CN109117388B (zh) * 2018-07-19 2020-10-16 浙江大学 针对内存端缓存的数据动态旁路装置及方法

Also Published As

Publication number Publication date
US9690710B2 (en) 2017-06-27
JP6266850B1 (ja) 2018-01-24
WO2016114998A1 (en) 2016-07-21
JP2018506112A (ja) 2018-03-01
EP3245592A1 (en) 2017-11-22
US20160210239A1 (en) 2016-07-21

Similar Documents

Publication Publication Date Title
CN107111555A (zh) 用于改进便携式计算设备中的牺牲(victim)缓存模式的系统和方法
CN108701079A (zh) 具有自适应预取的闪存读取高速缓存的系统和方法
TWI643125B (zh) 多處理器系統及快取共用方法
CN103959234B (zh) 计算系统的快速平台休眠与恢复
CN103309818B (zh) 存储数据的方法及装置
EP3332306B1 (en) System and method for cache aware low power mode control in a portable computing device
TWI465908B (zh) 用於在階層式快取設計之快取記憶體間有效通訊的方法及設備
US9558117B2 (en) System and method for adaptive implementation of victim cache mode in a portable computing device
CN104216796B (zh) 一种数据备份、恢复方法及电子设备
CN103268204B (zh) 固态硬盘的调优方法及装置
CN106575262B (zh) 用于带宽压缩的补充写入缓存命令的方法和装置
US9632562B2 (en) Systems and methods for reducing volatile memory standby power in a portable computing device
WO2015135506A1 (en) Method for controlling memory device to achieve more power saving and related apparatus thereof
CN102057359A (zh) 高速缓冲存储器装置、高速缓冲存储器控制方法、程序及集成电路
CN104040508A (zh) 填充来自第一高速缓存的轨道的第一步幅以向第二高速缓存中的第二步幅写入
CN109857554B (zh) 一种带下限的资源缓存方法及系统
US20180276140A1 (en) Snoop filter with stored replacement information, method for same, and system including victim exclusive cache and snoop filter shared replacement policies
WO2015147868A1 (en) Magnetoresistive random-access memory cache write management
CN104460938B (zh) 利用存储器高速缓存在系统范围内节省电力的方法和系统
CN107851075A (zh) 用于存储器的频率重置的系统、方法和装置
CN110287064A (zh) 一种磁盘数据的还原方法、装置及电子设备
CN103210377A (zh) 信息处理系统
TWI525529B (zh) 可提升顯示作業效能的電腦系統、顯示控制系統及其控制方法
JP2008217421A (ja) 電子機器、電子機器の電源制御プログラムおよび電源制御方法
CN110308974A (zh) 一种数据处理方法、虚拟机装置及虚拟机架构

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
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20170829

WD01 Invention patent application deemed withdrawn after publication