CN108701079A - 具有自适应预取的闪存读取高速缓存的系统和方法 - Google Patents

具有自适应预取的闪存读取高速缓存的系统和方法 Download PDF

Info

Publication number
CN108701079A
CN108701079A CN201680062767.4A CN201680062767A CN108701079A CN 108701079 A CN108701079 A CN 108701079A CN 201680062767 A CN201680062767 A CN 201680062767A CN 108701079 A CN108701079 A CN 108701079A
Authority
CN
China
Prior art keywords
cache
flash memory
data
value
access request
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
CN201680062767.4A
Other languages
English (en)
Inventor
D·T·全
Y·李
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 CN108701079A publication Critical patent/CN108701079A/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/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • 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/6026Prefetching based on access pattern detection, e.g. stride based prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks

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

本文给出了用于改进便携式计算设备中的闪存性能的系统和方法。在一种方法中,确定值N,该值N与要从闪存中获取的预取数据的数量相对应。在与高速缓冲存储器通信的高速缓存控制器处,接收针对闪存的访问请求。做出关于该针对闪存的访问请求是否对应于存储在高速缓冲存储器中的数据的部分的判断。如果针对闪存的访问请求对应于该数据的部分,则响应于该访问请求来返回该数据的部分。否则,从闪存中获取N数量的预取数据,并将其存储在高速缓冲存储器中。基于高速缓冲存储器的高速缓存命中百分比来渐变值N。

Description

具有自适应预取的闪存读取高速缓存的系统和方法
背景技术
具有通过各种各样的通信介质(其包括无线信号)与其它设备进行通信的处理器的移动设备到处可见。包括便携式计算设备(PCD)的移动设备可以用于经由无线、模拟、数字和其它方式,与各种各样的其它设备进行通信。这些移动设备可以包括移动蜂窝电话、便携式数字助理(PDA)、便携式游戏控制台、掌上型计算机、膝上型计算机或平板计算机、可穿戴设备和其它便携式电子设备。除了主要功能之外,PCD还可以用于:下载和玩游戏;下载和播放音乐;下载和观看视频;全球定位系统(GPS)导航、web浏览、以及运行各种应用。
为了适应不断增加的功能,现代PCD通常包括增加数量的存储器,其包括非易失性存储器(例如,可以与PCD的主动态随机存取存储器(DRAM)结合使用的NAND闪存,其包括使用闪存作为虚拟存储器来增强PCD的DRAM。但是,与读取和写入PCD上的其它存储器相比,从这种闪存读取和写入可能更耗时,尤其是在实现较低成本闪存(例如,嵌入式多媒体卡(eMMC)闪存)的PCD中。
因此,需要用于改进PCD中的这种闪存的性能的系统和方法。
发明内容
公开了用于通过在便携式计算设备(PCD)中实现具有自适应预取的闪存读取高速缓存,来允许改进的闪存性能的系统和方法。在操作时,一种示例性方法包括:确定值N,该值N与要从闪存中获取的预取数据的数量相对应。在与高速缓冲存储器通信的高速缓存控制器处,接收针对闪存的访问请求。随后,做出关于该针对闪存的访问请求是否对应于存储在高速缓冲存储器中的数据的部分的判断。如果针对闪存的访问请求对应于该数据的部分,则响应于该访问请求来返回该数据的部分。否则,从闪存中获取N数量的预取数据,并将其存储在高速缓冲存储器中。基于高速缓冲存储器的高速缓存命中百分比来渐变值N。
另一个示例性实施例是用于便携式计算设备(PCD)中的片上系统(SoC)的计算机系统,该系统包括:所述SoC的高速缓存控制器、与高速缓存控制器通信的高速缓冲存储器;以及与所述高速缓存控制器通信的闪存。所述高速缓存控制器被配置为:确定值N,该值N与要从闪存中获取的预取数据的数量相对应;从SoC的另一个部件接收针对闪存的访问请求;判断针对闪存的访问请求是否对应于存储在高速缓冲存储器中的数据的部分;如果针对闪存的访问请求对应于存储在高速缓冲存储器中的该数据的部分,则响应于访问闪存的请求来返回存储在高速缓冲存储器中的该数据的部分;如果针对闪存的访问请求不对应于存储在高速缓冲存储器中的数据的部分,则从闪存中获取N数量的预取数据,将所述N数量的预取数据存储在高速缓冲存储器中;以及基于高速缓冲存储器的高速缓存命中百分比来渐变所述值N。
附图说明
在附图中,除非另外指出,否则贯穿各个视图的相同附图标记指代类似的部件。对于利用诸如“102A”或“102B”之类的字母字符进行命名的附图标记而言,这些字母字符命名可以区分在同一附图中出现的两个类似部件或者组成部分。当附图标记旨在涵盖所有附图之中具有该相同附图标记的所有部件时,可以省略用于附图标记的字母字符命名。类似地,对于具有‘诸如102之类的名称’的附图标记而言,该‘名称’可以代表具有相同附图标记(但不具有该‘名称’)的基础要素的替代实施例。
图1是一种便携式计算设备(PCD)的示例性实施例的框图,其中在该PCD中,可以实现具有利用自适应预取的闪存读取高速缓存的改进的闪存性能;
图2是示出可以在PCD(例如,图1所示出的PCD实施例)中实现的,使用闪存读取高速缓存和自适应预取的改进的闪存性能的系统的示例性实施例的框图;
图3是示出图2的系统的示例性部分的互操作的框图;
图4A-4B是示出图3中所示的互操作的示例性结果的图;
图5A是示出用于改进的闪存性能的方法的示例性实施例的流程图,其中,可以实现用于实施自适应预取的闪存读取高速缓存;
图5B描绘了能够执行图5A中所示出的方法的示例性部件;
图6A是示出用于改进的闪存性能的方法的示例性实施例的另外方面的流程图,其中,可以实现用于实施自适应预取的闪存读取高速缓存;
图6B描绘了能够执行图6A中所示出的方法的示例性部件。
具体实施方式
本文所使用的“示例性”一词意味着“用作例子、例证或说明”。本文中描述为“示例性”的任何方面不一定被解释为比其它方面更优选或更具优势。
在本说明书中,术语“应用”还可以包括具有可执行内容的文件,例如:目标代码、脚本、字节码、标记语言文件和补丁。此外,本文所引用的“应用”还可以包括:在性质上不可执行的文件,例如,需要被打开的文档或者需要进行访问的其它数据文件。
此外,术语“内容”也可以包括具有可执行内容的文件,例如:目标代码、脚本、字节代码、标记语言文件和补丁。此外,本文所引用的“内容”还可以包括:在性质上不可执行的文件,例如,需要被打开的文档或者需要进行访问的其它数据文件或者数据值。
如本说明书中所使用的,术语“组件”、“数据库”、“模块”、“系统”等等旨在指代与计算机相关的实体,无论其是硬件、固件、硬件和软件的结合、软件或运行中的软件。例如,组件可以是,但不限于是:在处理器上运行的处理、处理器、对象、可执行文件、执行的线程、程序和/或计算机。举例而言,在计算设备上运行的应用和该计算设备都可以是组件。一个或多个组件可以存在于处理和/或执行线程中,组件可以位于一个计算机上和/或分布在两个或更多计算机之间。此外,这些组件能够根据其上存储有各种数据结构的各种计算机可读介质来执行。这些组件可以通过诸如根据具有一个或多个数据分组的信号(例如,来自一个组件的数据,该组件与本地系统、分布式系统中的另一个组件进行交互和/或以信号的方式通过诸如互联网之类的网络与其它系统进行交互),以本地和/或远程处理的方式进行通信。
在本说明书中,使用术语“便携式计算设备”(“PCD”)来描述在有限容量的可再充电电源(例如,电池和/或电容)上进行操作的任何设备。虽然具有可再充电电源的PCD已经使用了数十年,但与第三代(3G)和第四代(4G)无线技术的出现伴随发生的可再充电电池的技术进步,实现了具有多种能力的众多PCD。因此,PCD可以是蜂窝电话、卫星电话、寻呼机、PDA、智能电话、导航设备、智能本或阅读器、媒体播放器、前述设备的组合、具有无线连接的膝上型计算机或平板计算机等等。
在本说明书中,术语“中央处理单元(“CPU”)”、“数字信号处理器(“DSP”)”、“图形处理单元(“GPU”)”、“芯片”、“视频编解码器”、“系统总线”、“图像处理器”和“媒体显示处理器(“MDP”)”,是可以在SoC上实现的处理部件的非限制性示例。用于处理部件的这些术语可互换地使用,除非另外指出。此外,如下面所讨论的,上面各项中的任意项或者它们的等同物可以实现在本文通常称为“内核”和/或“子内核”的一个或多个不同的处理部件中,或者包括一个或多个不同的处理部件。
在本说明书中,术语“工作负荷”、“处理负荷”、“处理工作负荷”和“图形工作负荷”可以互换地使用,并通常针对于与给定的实施例中的给定处理组件相关联(或者向其分配)的处理负担、或者处理负担的百分比。另外,可互换地使用相关术语“帧”、“代码块”和“代码的块”来指代给定工作负荷的一部分或者一段。除了上面所规定的之外,“处理部件”等等可以是,但不限于是:中央处理单元、图形处理单元、内核、主核、子核、处理区域、硬件引擎等等、或者位于便携式计算设备中的集成电路之内或者之外的任何部件。
本领域普通技术人员应当认识到,术语“MIPS”表示处理器能够按照给定的功率频率,每秒处理的数以百万计数量的指令。在本说明书中,将该术语使用成测量的通用单位,以指示该示例性实施例中的处理器性能的相对水平,并且其不应被解释为用于建议:落入本公开内容的保护范围之内的任何给定实施例都必须包括具有任何特定的Dhrystone评级或者处理容量的处理器,或者必须不包括该处理器。另外,如本领域普通技术人员所应当理解的,处理器的MIPS设置直接与提供给该处理器的功率、频率或者工作频率相关。
本文的系统和方法提供了一种用于提高PCD中的闪存或者连接到PCD的闪存的性能的成本有效方式。在一个实施例中,高速缓存控制器与PCD的处理器/内核/CPU以及PCD的高速缓存进行通信。该实施例的高速缓存控制器独立于处理器/内核/CPU来操作,并且实现从闪存中自适应地预取信息,基于高速缓存命中率或百分比来增加或者减少预取并存储在高速缓存中的信息量。
本文所描述的系统或者该系统的一些部分可以根据期望利用硬件或软件来实现。当利用硬件设备来实现时,这些设备可以包括下面技术中的任何一种或者组合,其中这些技术都是本领域所公知的:分立电子组件、集成电路、具有适当配置的半导体器件和阻抗式元件的专用集成电路等等。这些硬件设备中的任何一种,无论是与其它设备或其它部件(例如,存储器)一起运作还是单独的,还可以形成或者包括用于执行所公开的方法的各种操作或步骤的部件或单元。
当利用软件来实现或者部分地实现本文所描述的系统时,该软件部分可以用于执行本文所描述的方法的各个步骤。在表示各种元素时使用的软件和数据,可以存储在存储器中,并由适当的指令执行系统(微处理器)来执行。该软件可以包括用于实现逻辑功能的经排列的可执行指令列表,其可以体现在任何“处理器可读介质”中,以便由指令执行系统、装置或设备(例如,单核或多核处理器或者处理器包含系统)来使用,或者结合它们来使用。这些系统通常将从指令执行系统、装置或设备中访问这些指令,并执行这些指令。
图1是PCD 100的示例性非限制性方面的框图,PCD 100可以实现本文所描述的系统和方法。图1中所示出的PCD 100具有能够与一个或多个无线通信系统进行通信的无线电话的形式。该无线通信系统可以是宽带无线通信系统,其包括长期演进(LTE)系统、码分多址(CDMA)系统、频分多址(FDMA)系统、全球移动通信系统(GSM)系统、无线局域网(WLAN)系统、某种其它无线系统、或者这些系统中的任何系统的组合。CDMA系统可以实现宽带CDMA(WCDMA)、CDMA1X、演进数据优化(EVDO)、时分同步CDMA(TD-SCDMA)或者某种其它版本的CDMA。
如图所示,PCD 100包括片上系统(或SoC)102,后者包括耦合到模拟信号处理器128的多核中央处理单元(CPU)110。CPU 110可以包括第零内核120、第一内核122、第二内核124和第N内核126,如本领域普通技术人员所理解的。此外,还可以使用数字信号处理器(DSP)来替代CPU110,如本领域普通技术人员所理解的。此外,如异构多核处理器领域的技术人员所理解的,内核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(其可以包括只读存储器(ROM)、静态随机存取存储器(SRAM)或者其它类型的存储器中的一个或多个)之间的通信。
内核120、122、124、126中的任何一个内核可以是诸如CPU或数字信号处理器之类的单独处理器。除了处理器之外,内核120、122、124、126中的一个或多个内核还可以包括诸如一个或多个高速缓冲存储器之类的其它部件。这些高速缓冲存储器可以包括用于特定内核或处理器的专用高速缓冲存储器(例如,L1高速缓存)。另外地或替代地,这些高速缓冲存储器可以包括与其它内核或处理器共享和/或可由其它内核或处理器访问的高速缓冲存储器(例如,L2高速缓存)。
另外,可以将这些内核120、122、124、126中的每一个内核与其它部件(例如,存储器112、传感器或PCD 100的其它硬件)功能性组合在一起,以形成如下面所描述的子系统。可以实现这些子系统以便执行PCD的某种功能,例如,音频子系统、GPS子系统、传感器子系统等等。此外,这些子系统中的一个或多个子系统还可以被配置为独立于SoC 102进行操作,例如,以便当该SoC 102已经被置于低功率状态或模式或者降低功率状态或模式(其包括关闭状态或模式)时,继续进行操作。
如上所述,将存储器112描绘成耦合到图1中的多核CPU 110。例如,该存储器112可以是RAM、ROM、闪存或者其任意组合。另外,存储器112可以包括位于在一起或者彼此之间远离的多个不同类型的存储器,其包括缓冲器、主存储器和高速缓存。这些高速缓存包括可以由内核120、122、124、126中的一个或多个内核访问的一个或多个L2、L3、LN高速缓存。另外,虽然将存储器112描绘成位于SoC 102上,但存储器112可以包括位置上物理地远离SoC 102或者“片外”的一个或多个存储器,例如,与多核CPU 110和/或内核120、122、124、126中的一个或多个内核进行通信的双数据速率(DDR)存储器或者动态随机存取存储器(DRAM)。这些存储器中的一个或多个存储器可以由位于SoC 102上的存储器控制器来控制。这些存储器控制器可以包括图1中所示出并在下面更详细讨论的闪存控制器116。
如图1中所示,显示控制器129和触摸屏控制器130耦合到多核CPU110。转而,在片上系统102之外的显示器/触摸屏132,耦合到显示控制器129和触摸屏控制器130。数码相机148也可以耦合到多核CPU 110。在这些实施例中,数码相机148可以由多核CPU 110中的内核120、122、124、126里的一个内核进行控制。在一个示例性方面,数码相机148是电荷耦合器件(CCD)相机或者互补金属氧化半导体(CMOS)相机。
此外,图1的PCD 100还可以包括耦合到多核CPU 110的视频编码器134,例如,逐行倒相(PAL)编码器、顺序与存储彩色电视系统(SECAM)编码器、或者国家电视制式委员会(NTSC)编码器或者任何其它类型的视频解码器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可以耦合到多核CPU 110。调制解调器设备168可以支持诸如GSM、CDMA、W-CDMA、TDSCDMA、LTE以及LTE的变型(例如,但不限于FDB/LTE和PDD/LTE无线协议)之类的无线通信协议中的一种或多种。另外,可以存在多个调制解调器设备168,在这些实施例中,不同的调制解调器设备168可以支持上面所列出的无线通信协议和/或技术中的一些或全部。
在一些实现中,调制解调器设备168还可以包括各种组件(其包括单独的处理器、存储器和/或RF收发机)。在其它实现中,调制解调器设备168可以简单的是RF收发机。此外,调制解调器设备168可以合并到集成电路中。也就是说,包括调制解调器设备168的这些部件可以是全芯片解决方案,并包括可以由本文所描述的系统和方法进行监视的其自己的处理器和/或内核。替代地,包括调制解调器设备168的各种部件可以耦合到多核CPU110,并由CPU 110的内核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中的总线/互连接口。替代地,单个总线/互连控制器可以被配置有被布置为监测两个或更多总线/互连接口的输入,其中这些总线/互连接口可以根据需要,在CPU110和PCD 100的各个子系统或部件之间传输信号。
本文所描述的方法步骤中的一个或多个,可以经由存储器112、位于SoC 102之外的存储器中所存储的数据和处理器指令的组合、和/或一个或多个控制器(例如,图1中所示出的闪存控制器116)来实现。这些指令可以由多核CPU 110中的一个或多个内核120、122、124、126和/或SoC 102的其它部件和子系统来执行,以便执行本文所描述的方法。此外,多核CPU110、内核120、122、124、126中的一个或多个内核、存储器112、PCD 100的其它部件(例如,闪存控制器116)或者它们的组合,可以充当用于执行本文所描述的方法步骤中的一个或多个的单元。
图2是示出可以在PCD(例如,图1所示出的PCD实施例)中实现的,使用闪存读取高速缓存和自适应预取的改进的闪存性能的系统的示例性实施例的框图。示例性系统200包括可以实现在PCD中的片上系统(SoC)集成电路202(其类似于图1中的SoC 102)。图2的SoC202包括连接到SoC 202的SoC互连或总线215的CPU 210(其可以类似于图1中的CPU110)。SoC总线215可以是任何期望类型的总线或互连(具有任何数量的共享或独立端口),其取决于SoC 202的架构和/或SoC 202或PCD预期的用途。
在图2所示出的实施例中,“片外”DRAM 230还经由将DRAM 230耦合到位于SoC 202上的DRAM控制器208的DRAM总线235,来连接到SoC总线215。“片外”闪存240还经由将闪存240耦合到位于SoC 202上的闪存控制器216的输入/输出(I/O)226的闪存总线245,来连接到SoC总线215。在其它实施例中,DRAM 230和闪存240中的一个或多个可以位于SoC 202上,而不是“片外”。在这些替代的实施例中,闪存总线245和DRAM总线235中的一个或多个可以不是单独的总线,而可以替代地是SoC总线215的一部分。在这些替代的实施例中,可以省略SoC总线215,其中CPU 210、闪存控制器216、存储器212和DRAM控制器208共享单个总线。
SoC 202还可以包括为了清楚说明起见,而在图2中没有示出的其它部件和/或子系统(其包括图1中没有示出的那些)。CPU 210将包括至少一个处理器,并且在一些实施例中,可以包括诸如上面针对图1所讨论的内核120、122、124、126之类的多个处理器。另外,SoC 202可以包括一个或多个存储器212(类似于图1的存储器112),它们可以是SRAM、ROM或者其它类型的存储器中的一个或多个。另外,在一些实施例中,图2中所示出的部件可以以不同的配置被物理地布置在SoC 202上,并且图2中所示出的一个或多个部件可能在SoC202上不是物理地位于彼此附近。
DRAM 230可以是用于PCD的主存储器或操作存储器,使得CPU 210执行的应用211通过DRAM控制器208来访问DRAM 230。在操作时,CPU210可以从DRAM 230读取信息和/或向DRAM 230写入信息。DRAM 230可以包括针对于频繁地向闪存240写入和/或从闪存240读取的数据而充当文件高速缓存231的部分,其可以具有“页”的形式,如本领域普通技术人员所应当理解的。文件高速缓存231通常是“软”高速缓存,CPU 210通过DRAM控制器208进行操作来控制该“软”高速缓存。
闪存240可以远离SoC 202(如图1中所示),或者可以位于SoC 202内或者之上。闪存240可以包括任何类型的非易失性存贮设备,以及被实现成嵌入式多媒体卡(eMMC)、固态驱动器(SSD)、通用闪速存储(UFS)或者NVM快速(NVMe)类型存储器。这些设备可以使用任何类型的非易失性器件元件,其包括NAND闪存、NOR闪存、EEPROM、磁、光、阻抗、充电和/或相变器件技术。另外,在一些实施例中,闪存240可以可移动地连接到SoC 202。在操作时,CPU210可以通过与CPU 210和闪存240通信的闪存控制器216,从闪存240读取信息和/或向闪存240写入信息。
例如,CPU 210可以使得从闪存240的一个或多个地址242读取信息,并将其存储在DRAM 230中以便由CPU 201执行(例如,当CPU 210在执行应用211时)。另外,CPU 210可以使DRAM 230中的信息存储在闪存240的一个或多个地址242中(例如,用于当前没有被CPU 210执行的应用211的数据/其部分)。
SoC 202的闪存控制器216与闪存240进行通信,并且包括I/O 226以及本领域普通技术人员都理解其操作的闪速直接存储器访问控制器(DMA)224。在图2所示出的实施例中,闪存控制器216还包括耦合到读高速缓存(rCache 222)的读高速缓存控制器(rCache控制器220),下面将讨论其操作。将rCache控制器220实现成与图1的实施例中的CPU 210分离的位于SoC 202上的硬件部件或者器件。在其它实施例中,rCache控制器220可以替代地利用固件或软件来实现,并且可以位于与闪存控制器216分离的位置。
rCache控制器220与rCache 222进行通信,并且被实现成图1中所示出的实施例里的闪存控制器216的单独RAM存储器。在其它实施例中,rCache 222可以是不同类型的存储器,可以是SoC 202上的另一个存储器(例如,图1中所示出的存储器212)的一部分,也可以位于远离SoC 202的位置(例如,实现成DRAM 230的一部分)。在操作时,rCache控制器220与CPU 210单独地操作,并且将来自闪存240的预取页面或者信息存储或者缓存在rCache 222中。此外,rCache控制器220还至少部分地基于针对rCache 222中存储的预取信息/页面的命中率或命中百分比,来自适应地调整预取并存储在rCache 222中的信息量/页面数量。
例如,图3是示出图2的系统的示例性部分的互操作的框图。如图3中所示,在操作期间,闪存控制器216接收用于访问闪存240的请求。该访问请求可以来自于图2的CPU 210,或者来自于SoC 202的另一个部件。例如,该请求可以是来自CPU 210的用于从/向闪存240中的一个或多个地址242读取或者写入信息的指令。
举例而言,当访问请求是来自CPU 210的从闪存240的地址(0)242读取信息以存储在DRAM 230中的初始指令时,CPU 210将使闪存DMA控制器224从地址(0)242获取要被获取的信息。随后,CPU 210将使DRAM控制器208把信息存储在DRAM 230中的地址里,以及将该信息的一些部分高速缓存在DRAM 230的文件高速缓存231中。rCache控制器220将使得闪存DMA控制器224还从闪存240的额外地址242预取预定数量的额外页面,以及将该额外的信息存储在rCache 222中。
继续该例子,对于CPU 210要从闪存240读取信息的后续请求而言,rCache控制器220将首先检查由CPU 210请求的信息是否已经存储在rCache 222中。如果是已经存储了,则rCache控制器220将该信息从rCache222提供给CPU 210,并从rCache 222中删除该数据。如果由CPU 210请求的信息不在rCache 222中,则将从闪存240中获取该信息并将其存储在DRAM 230中(如上所述)。rCache控制器220将判断是减少还是增加预取的大小/从闪存240中预取的信息的量。该判断将是至少部分地基于先前“命中”或者从rCache 222的成功获取的数量或者百分比而做出的。随后,rCache控制器220将使得预取/获取该新数量的信息,并将其放置在rCache 222中。对于CPU 210要从闪存240读取信息的后续请求而言,rCache控制器220将继续自适应地调整用于rCache 222的预取大小。
另一个例子是访问请求是来自于CPU 210的用于向闪存240的地址(0)242写入信息的指令,例如,针对于在被执行的应用211,CPU 210不再需要的DRAM 230中的信息。在该例子中,CPU 210将使DRAM控制器208从DRAM 230中获取该信息,CPU 210将使闪存DMA控制器224将信息存储到闪存240的地址(0)242中。在该例子中,rCache控制器220将不会引起预取的发生。rCache控制器220将判断rCache 222是否具有CPU 210正在写入的来自相同地址242(在该例子中,地址(0))的任何数据。如果rCache 222确实具有与地址(0)242相关联的数据,则rCache控制器220使得rCache 222中的该条目(现在为“脏数据”)被删除。
知道的是,通过增加预取的大小,可以提高闪存的读性能。但是,已经确定的是,存在着增加预取大小的收益递减点。换言之,在超过某个大小的预取时,在浪费高速缓存资源和能量的情况下,只能获得读性能的最小改进。例如,如下面的图表1中所示,可以存在某个预取大小范围,低于该范围时,读性能下降,高于该范围时,读性能的提高被增加的资源和能源成本所抵消。
图表1
另外,已经确定的是,针对所有情况(例如,CPU随机读取闪存)保持较大的预取大小,也可能减少或者抵消读性能方面的任何改进。通过如本文公开地自适应调整预取的大小,可以进一步提高闪存的读性能,同时使资源和能量成本减至最小。例如,图4A-4B是示出图3中所示的互操作的示例性结果的图。如图4A中所示,当CPU(例如,图2的CPU 210)在执行对闪存(例如,图2-3的闪存240)的不频发的读取或随机读取时,开始并维护较小的预取大小是有益的。
在图4A的例子中,将预取大小N设置为4,这使得针对闪存240的每个CPU 210读取,从闪存240预取4x 4KB页面,并将其存储在rCache 222(参见图3)中。可以根据诸如CPU 210正在执行的应用211的文件类型之类的信息(例如,可以预期使得从闪存240中随机读取信息的数据库文件类型),来初始确定这种相对较小的预取大小N=4。此外,作为rCache控制器220确定rCache 222(参见图3)的内容上的“命中”的相对较小数量或百分比,证明将预取大小减少到N=4是合理的结果,也可以初始地确定或者获得相对较小的预取大小N=4。结果,如图4A中所示,在对闪存240的每个CPU 210读取时,在rCache 222中存储较少量的预取信息,这需要较少时间将预取信息加载到rCache 222中,并消耗较少的rCache 222。
转到图4B的例子,将预取大小N设置为较大的值24,这使得针对闪存240的每个CPU210读取,从闪存240中预取24x 4KB页面,并将其存储在rCache 222(参见图3)中。可以根据诸如CPU 210正在执行的应用211的文件类型之类的信息(例如,可以预期使得从闪存240中多次连续地读取信息的电影或多媒体文件类型),来初始地确定这种相对较大的预取大小N=24。此外,作为rCache控制器220确定rCache 222(参见图3)的内容上的“命中”的相对较大数量或百分比,证明将预取大小增加到N=24是合理的结果,也可以初始地确定或者获得相对较大的预取大小N=24。
结果,如图4B中所示,在对闪存240的每个CPU 210读取时,将较大量的预取信息存储在rCache 222中。与图4A的较少量的预取信息相比,较大量的预取信息/较大数量的预取页面花费更长的时间来加载到rCache 222中。但是,与通过图4的较小的预取大小所可能做到的相比,通过图4B的较大的预取大小,能够在相同的时间段内,将更多的信息加载到rCache 222中。已经确定的是,如上面的图表1中所示,根据rCache 222上的较大数量/百分比的命中的增加的闪存读性能,证明将较大的预取加载到rCache222中的这种增加的时间是合理的。
如果条件改变(例如,rCache 222命中的数量或百分比降低和/或CPU210执行不同的应用211),则具有图4B的相对较大的预取大小可能不再是有益的。因此,期望基于操作条件来自适应地调整预取的大小,其包括减小预取大小。这种自适应预取可以相对于先前的预取方法来提高闪存读性能,可以在诸如eMMC闪存之类的较低成本闪存中显示出显著的性能改进。图5A是示出用于使用读高速缓存和自适应预取来改进闪存性能的方法的示例性实施例的流程图。在一个实施例中,图5A的方法500由图2-3的rCache控制器220单独地操作来实现,或者结合图2-3所示出的系统200、300的其它部件或部分一起操作来实现。
示例性方法500开始于方框510,其中,设置用于预取大小的初始值N0。在一个实施例中,在方框510中设置N0可以包括:诸如由rCache控制器220基于可能在访问闪存240的文件系统、上游客户端等等所提供或者确定的信息,来确定初始值N0。例如,在一个实施例中,N0可以表示在闪存240的一个或多个地址242中存储的4KB“页面”的数量。可以将N0的初始值设置为更高的值(例如,64),其中,rCache控制器220确定更可能连续地访问闪存240的多个地址242。例如,该确定可以是基于在闪存240中访问的访问的类型或者文件的类型(例如,该文件是其中预期连续地访问闪存240的MP4、MOV、AVI或者其它多媒体文件类型)。程序或应用211也可以建议或提示该程序将以顺序方式来读取闪存。通过负责配置和控制闪存控制器216的软件输入/输出驱动器来传送该确定和/或提示。类似地,访问闪存240的SoC 202的其它部件可以将提示传送到公共软件输入/输出驱动器。或者,SoC 202的其它部件可以直接配置和控制闪存控制器216。
相反,当rCache控制器220确定更可能很少地或者随机地访问闪存240时,可以将N0的初始值设置为更低的值。该确定可以再次是基于访问的类型(例如,对于闪存240的系统调用)或者诸如数据库文件类型之类的文件类型(此时,预期更少地和/或随机地访问闪存240)。在一个实施例中,可能存在用于N0的初始值的变化缩放,其中对于期望的单次访问(例如,系统调用),设置N0的最低值,对于少量的和/或随机预期访问,设置N0的中间值,以及对于更多和/或顺序的预期访问,设置较大的N0值。
在方框512中,接收针对闪存(例如,图2-3的闪存240)的读请求。在一个实施例中,该读请求可以是来自于执行应用211的CPU 210。可以在包括rCache控制器220(其可以是如图2-3中所示的闪存控制器216的一部分)的图2-3的系统200、300的多个部件处接收方框512的该读请求。如方框512中所述,该读请求可以是针对与闪存240的一个或多个地址242相关联的一个或多个4KB“页面”。在其它实施例中,方框512的读请求可以是针对于其它、或不同的数据大小。
在方框514中,做出关于在方框512的读请求中所请求的数据是否已经在rCache222中的判断。该判断可以是由rCache控制器220和/或系统200、300的其它部件使用各种已知的方法或方式来做出的。如果在方框514中确定所请求的数据在rCache 222,则方法500转到方框515,从rCache 222返回该请求的数据。在一个实施例中,方框515的返回请求的数据可以包括:rCache控制器220使请求方从rCache 222中读取该数据。在其它实施例中,方框515的返回请求的数据可以包括:rCache控制器220使某个其它部件向在方框512中从其接收到读请求的部件返回rCache 222中存储的信息。此外,在一些实施例中,方框515的返回请求的数据还可以包括:使得从rCache 222中删除该请求的数据,这是由于该数据现在“被使用了”,使得不需要继续在预取rCache 222中高速缓存该数据了。
继续方法500的流程路径,在方框515中返回请求的数据之后,在方框516中,更新rCache 222的命中百分比或命中率,方法500在方框517处等待针对闪存240的下一次读请求。在方框516中更新rCache 222的命中百分比可以由rCache控制器220来执行,并且可以包括:更新存储在rCache 222中的预取信息的成功访问的运行总数或百分比。转到方框517,如果下一个读请求是现有文件的延续,则在方框512中读取下一个4KB的数据。如果下一个读请求属于不同的文件(具有不同的文件扩展名或程序提示),则在方框510中,软件输入/输出驱动器将配置新的N0值。
在一些实施例中,在方框516中更新命中百分比还可以包括:更新与已经在rCache222中存储各种数据多长时间相关联的一个或多个计数器或值。例如,可以更新与rCache222的每个地址相关联的计数器,以反映数据已经存储在rCache 222中而没有被访问或使用的时长的增加。对于另一个例子,可以更新与rCache 222的地址相关联的计数器,以反映当前在该地址中没有存储数据(例如,当从rCache 222的地址中删除“已使用的”数据时)。在一些实施例中,在方框516中的命中百分比可以是跨所有文件和SoC 202的所有部件的长期平均值。在其它实施例中,方框516中的命中百分比可以是仅仅对应于当前文件或者SoC202的当前部件的短期平均值。
返回到方框514处,如果该判断是请求的数据不在rCache 222中,则方法500转到方框518处,其中在方框518处,从闪存240预取数据并将其存储在rCache 222中。在方框518中的预取的量/大小取决于N的当前值,针对于图5A中所示出的实施例,N是在闪存240的地址(0)-地址(N)中的一个或多个地址里存储的4KB“页面”的数量。对于第一读请求而言,将N设置为N0,如上面针对方框510所讨论的。对于后续的读请求而言,可以对N的值进行递增或递减(如下面所讨论的),使得在方框518中使用的用于确定预取大小的N的当前值与N0不同。在一个实施例中,方框518可以由rCache控制器220单独地动作来执行,或者结合诸如闪存DMA控制器224(参见图2)之类的其它部件来执行,以使得从闪存240中读取适当量的预取数据/适当数量的预取页面,并将其存储在rCache 222中。
在方框520中,将在方框512中请求的数据返回到请求该数据的组件。应当注意的是,方框520不必在方框518之后发生,如图5A的示例性实施例中所示。在其它实施例中,方框520可以在方框518的预取数据的获取之前发生、或者与其同时/并行地发生。例如,在一个实施例中,可以对方框518和520进行组合,使得执行针对在方框512中请求的数据和在方框518中确定的预取信息二者的一次性地获取。在这些实施例中,可以将在方框512中请求的数据返回给请求该数据的组件(例如,通过闪存DMA控制器224),与此同时可以将预取数据存储在rCache 222中(例如,通过rCache控制器220)。在其它实施例中,方框518和520的步骤可以以不同的顺序来执行,和/或由系统200的相同或由不同的部件来执行。
方法500在方框522中继续,其中在方框522中,判断rCache 222的命中百分比和/或命中的数量是否超过门限值。如上面针对图2-3所讨论的,rCache控制器220接收针对闪存240的任何读请求(例如,来自于CPU210),并跟踪所请求的信息已经被预取并被存储在rCache 222中的“命中数”和/或命中“率”。在方法500的方框522中,rCache控制器220评估当前命中“率”或命中百分比是否高于门限,以便自适应地调整预取的并存储在rCache 222中的数据的量。
该门限值可以是存储在rCache控制器220或者rCache 222中的固定值,由制造商或由用户进行设置,以及可以基于诸如SoC 202和/或CPU 210架构、该PCD将用于的用途、终端用户性能偏好、性能概况之类的多种因素来确定和设置。在一些实施例中,可以例如基于终端用户期望访问或执行的文件或应用的类型、终端用户性能偏好等等,由终端用户根据需要来改变或修改该门限值。在图5A所示出的实施例中,如果确定rCache 222命中百分比高于门限值,则方法500转到方框524,而如果确定rCache 222命中百分比低于门限值,则该方法转到方框526。
在其它实施例中,方框522中的判断可以不是二态判断,而替代地可以包括多种选项。例如,在替代的实施例(没有示出)中,方框522的门限可以包括上门限和下门限。在该替代的实施例中,如果判断是rCache 222命中百分比高于上门限,则方法转到方框524。类似地,在该替代的实施例中,如果判断是rCache 222命中百分比低于下门限,则方法转到方框526。但是,如果判断是rCache 222的命中百分比在上门限和下门限之间,则不需要对预取大小进行调整,该替代方法可以转到方框516。应当理解的是,方框522中的判断的其它变型也是可能的。
返回到所示出的方法500的方框522,如果确定rCache 222命中百分比高于门限值,则该方法转到方框524,其中在方框524处,做出关于预取大小的当前值N是否低于最大值Nmax的判断。如果N的当前值不小于Nmax(即,当前N已经等于Nmax),则方法500转到上面所讨论的方框516,其中在方框516中,对rCache 222命中百分比进行更新,和/或对于与rCache222中的数据相关联的计数器进行更新。
如果在方框524中确定的N的当前值小于Nmax,则方法500转到方框525处,其中,对N进行增加。在方框525中增加N的值用于增加针对闪存240的后续读取的预取并存储在rCache 222中的信息的预取大小/量。方框525中的增加量可以是可变的。在一个实施例中,针对于连续类型的访问,该增加可以是更大的数,而针对于较短和随机的访问,该增加可以是更小的数。在另一个实施例中,该增加量可以是恒定值。在另一个实施例中,该增加量可以是几何性的(例如,双倍、三倍等等)。
方法500转到上面所讨论的方框516处,其中,对rCache 222命中百分比进行更新,和/或对于与rCache 222中的数据相关联的计数器进行更新。在一些实施例中,Nmax的值可以是固定值,可以是在高于其时将出现以下情形的N值:增加的预取大小所带来的增加的时间/资源成本超过了闪存的读性能的增量改进,如上面的图表1中所示。在这些实施例中,Nmax的值可以在不同的实现中,由制造商或者终端用户来设置。在其它实施例中,Nmax的值可以是可变的,其可以基于历史信息、使用情况统计、在闪存420中访问的文件的类型等等来设置和/或更新。
再次返回到所示出的方法500的方框522,如果确定rCache 222命中百分比低于门限值,则该方法转到方框526,其中在方框526中,做出关于预取大小的当前值N是否高于最大值Nmin的判断。如果N的当前值不大于Nmin(即,当前N已经等于Nmin),则该方法500转到上面所讨论的方框516,其中在方框516中,对rCache 222命中百分比进行更新,和/或对于与rCache222中的数据相关联的计数器进行更新。
如果在方框526中确定N的当前值大于Nmin,则方法500转到方框527处,其中,对N进行减小。在方框527中减小N的值用于减小针对闪存240的后续读取的预取并存储在rCache222中的信息的预取大小/量。如上面针对在方框525中增加N所描述的,方框527中的减小量也可以是可变的。方法500转到上面所讨论的方框516,其中在方框516中,对rCache 222命中百分比进行更新,和/或对于与rCache 222中的数据相关联的计数器进行更新。在一些实施例中,Nmin的值可以是固定值,可以是在低于其时闪存的读性能开始下降的N值,如上面的图表1中所示。在这些实施例中,Nmin的值可以在不同的实现中,由制造商或者终端用户来设置。在其它实施例中,Nmin的值可以是可变的,其可以基于历史信息、使用情况统计、在闪存420中访问的文件的类型等等来设置和/或更新。
虽然在图5A的上下文中描述了示例性方法500,但应当理解的是,可以实现其它方法或者方法500的其它实施例。例如,在替代的实施例(没有示出)中,方框524和526可以不是如图5A中所示出的分别的判断,而可以是用于判断N的当前值是否超过Nmax或者是否低于Nmin,并相应地调整N的值的单个框。此外,在一些实施例中,方框524和526的判断还可以是方框522的判断的一部分。应当理解的是,图5A的方法500的其它实施例和/或改变也是可能的。
接着转到图6A,该图描绘了用于使用闪存读取高速缓存和自适应预取来改进闪存性能的方法600的示例性实施例的额外方面。具体而言,图6A示出了对rCache 222的管理的额外方面,例如由rCache控制器220(参见图2)进行管理。方法600可以操作成图5A中所示出的方法500的一部分,或者结合方法500的步骤中的一个或多个进行操作,并且方法600的方框中的一个或多个可以通过rCache控制器220单独地操作来执行,或者结合系统200的其它部件(参见图2)来执行。图6A的示例性方法600开始于方框610,其中,接收针对闪存(例如,图2-3的闪存240)的访问请求。如下面所讨论的,方框610中的访问请求可以是(但不必需是)类似于结合图5A中所示出的方法500的方框512所讨论的读请求。在一个实施例中,该访问请求可以是来自于正在执行应用211的CPU 210,如图2中所示。可以在包括rCache控制器220(其可以是如图2-3中所示的闪存控制器216的一部分)的图2-3的系统200、300的多个部件处接收方框610的针对闪存的访问请求。该访问请求可以是针对与闪存240的一个或多个地址(0)-(N)242相关联的一个或多个4KB“页面”的读取或者写入。在其它实施例中,该访问请求可以是针对于闪存240中的其它、或不同的数据大小。
在方框612中,做出关于在方框610中接收的请求是否是写请求的判断(例如,CPU210向闪存240中的一个或多个地址242写入信息)。如果该请求是写请求,则方法600转到方框614处,其中,做出关于rCache 222中的任何条目是否与要被写入数据的闪存240中的地址242相关联的判断。用于在方框614中执行该搜索的一个例子是通过使用内容可寻址存储器(CAM),其中CAM可以提供关于所提供地址的立即硬件查找。如上面所讨论的,一旦从地址(0)242中预取了数据并将其写入到预取rCache 222中,rCache 222中的数据就变为“脏”(如果新数据被写入地址(0)242的话)。在该情况下,方法600转到方框615处,其中在方框615中,从rCache222中删除rCache 222中的与地址(0)242相关联的“脏”数据。
如果在方框614中的判断是rCache 222中没有条目与要被写入数据的闪存240中的地址242相关联,则方法600返回以等待针对闪存的下一次访问请求(方框610)。在图6A的示例性实施例中,方框614中的判断是关于方框612的不同判断。在其它实施例中(没有示出),可以将方框612和614的判断组合为单个判断步骤或者判断框。另外,在所示出的方法600中,如果方框610的访问请求是向闪存240写入信息,则rCache控制器220并不使得将信息预取到rCache 222中。在其它实施例中,如果方框610的访问请求是向闪存240写入信息,则rCache控制器220可以使得将信息预取到rCache 222中,该预取可以是根据图5A中所示出的方框中的一个或多个。
返回到方框612,如果判断是针对闪存240的访问请求不是写请求(即,诸如CPU210之类的部件在从闪存240读取信息),则该方法转到方框616,其中在方框616处,做出关于(类似于使用CAM的方框614)rCache 222中的任何预取数据是否“被使用”的判断,以便对针对闪存240的读请求进行响应(参见图5A的方框514-515)。如果rCache 222的预取数据或页面被CPU 210或者系统200的其它部件“使用”,则可以将其放置到另一个存储器(例如,DRAM 230或者DRAM 230的文件高速缓存231)中。在该情况下,不需要另外将该数据或页面维持成在rCache 222中存储或缓存的预取数据的一部分,在方框617中,从rCache 222中删除“已使用的”数据。
在在方框617中从rCache 222中删除“已使用的”数据之后,或者如果在方框616中确定rCache 222中没有任何数据“被使用”,则该方法转到方框618。在方框618中,做出关于当前预取是否将造成rCache 222溢出的判断。在图2-3所示出的实施例中,rCache 222是固定大小存储器。方框618提供了用于确保rCache 222不会由于针对闪存240的连续读请求以及伴随这些读请求的伴随预取(参见图5A的方框518-527)而溢出的机制或者方式。在一个实施例中,rCache控制器220可以做出该判断(例如,在图5A中所示出的方法500的方框516、518、522、524或526中的任何一个处)。在另一个实施例中,方框618可以是可选的,使得不单独地做出关于rCache 222溢出的判断。在这种替代的实施例中,在不具有方框618的单独判断的情况下,每个新的连续的预取可以自动地覆盖rCache 222中存储的最旧的“未使用的”数据。
如果方框618中的判断是当前预取将造成rCache 222溢出,则该方法转到方框620处,其中在方框620中,删除rCache 222中的任何“超龄(overage)”数据条目或者页面。如上面所讨论的,rCache 222中的页面或数据条目可以具有一个或多个计数器,它们跟踪这些页面或者数据条目(条目集)已在rCache 222中存储了多长时间。在一些实施例中,这些计数器可以是rCache 222的一部分。在方框620中删除“超龄”数据条目可以包括:只删除“最旧”的页面/数据条目(即,已存储在rCache 222中最长时间的未使用的页面/数据条目),直到在rCache 222上存在足够的空间来存储当前预取为止。在其它实施例中,方框620可以包括:删除已经在rCache 222中存储了超过门限时间段的所有页面/数据条目。
在方框620中删除了超龄rCache 222页面/数据条目之后,或者如果方框618中的判断是当前预取不会导致rCache 222溢出,则方法600转到块619,其中在方框619处,对于与rCache 222的页面/数据条目相关联的计数器进行渐变或更新。在方框619中,rCache222可以自己渐变这些计数器,或者rCache控制器220可以使得用于先前存在的页面/数据条目的任何计数器进行渐变。另外,方框619还可以包括:针对由于当前预取而新存储在rCache 222中的页面/数据条目来开始计数器,以及重置与源自于方框615、617和620的被删除页面相关联的计数器。此外,还应当理解的是,删除页面的动作还将清除与所删除页面相关联的任何硬件引用(例如,内容可寻址存储器中的条目)。随后,方法600可以返回以在方框610中等待针对闪存240的下一次访问请求。
应当理解的是,图5A和图6A只分别描述了所公开的方法500和600的一种示例性实施例。在其它实施例中,可以向图5A中所示出的方法500和/或图6A中所示出的方法600增加另外的方框或步骤。类似地,在一些实施例中,如上所讨论的,可以对图5A和/或图6A中所示出的各个方框或步骤进行组合或省略。方法500和600的这些变型也落入本公开内容的保护范围之内。
另外,本说明书所描述的处理或者处理流程(其包括图5A或图6A)中的某些步骤,自然地在方法500和600的其它步骤之前,以在描述的实施例中起作用。但是,本公开内容并不限于这些所描述的步骤的顺序,如果这种顺序或者序列并不改变本发明的功能的话。此外,应当认识到,在不脱离本公开内容的保护范围的基础上,一些步骤可以在其它步骤之前执行、之后执行或者并行地执行(基本同时地执行)。此外,诸如“其后”、“转而”、“接着”、“随后”等等之类的词语,并不旨在限制这些步骤的顺序。这些词语仅仅只是用于引导读者遍历该示例性方法的描述。
上面针对于方法500和600所描述的各种操作、方法或功能,可以由各种硬件和/或软件组件/模块来执行。这些组件和/或模块可以提供用于执行这些各种所描述的操作、方法或功能的单元。通常,在具有相应配对的手段加功能附图的附图中示出有方法的地方,这些操作框与具有类似编号的手段加功能框相对应。例如,图5A中所示出的方框510-527与图5B中所示出的手段加功能框510’-527’相对应。类似地,图6A中所示出的方框610-620与图6B中所示出的手段加功能框610’-620’相对应。
编程领域中的普通技术人员能够编写计算机代码或者识别适当的硬件和/或电路,以便例如基于流程图和本说明书中的相关联描述,没有困难地实现本发明的所公开内容。因此,对于充分地理解如何利用和使用本发明来说,并不认为是必需要公开特定的程序代码指令集或者详细的硬件设备。在上面的描述中,并且结合可以描绘各个处理流程的附图,来更详细地解释所主张的处理器实现的处理的创造性功能。
在如上面所指示的一个或多个示例性方面中,本文所描述功能可以用硬件、软件、固件或它们任意组合的方式来实现。当以软件方式来实现时,可以将这些功能存储在计算机可读介质(例如,非临时性处理器可读介质)上,或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括数据存储介质和通信介质二者,其中通信介质包括便于从一个位置向另一个位置传送程序的任何介质。
存储介质可以是计算机或者处理器能够存取的任何可用介质。举例而言但并非做出限制,这种计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或者其它光盘存储器、磁盘存储器或其它磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机进行存取的任何其它介质。如本文所使用的,磁盘和光盘包括压缩光盘(“CD”)、激光盘、光盘、数字通用光盘(“DVD”)、软盘和蓝光盘,其中磁盘通常磁性地复制数据,而光盘则用激光来光学地复制数据。上述的组合也应当包括在非临时性计算机可读介质的范围之内。
虽然详细地描绘和描述了选定的方面,但应当理解的是,可以在不脱离如由所附权利要求书所界定的本发明的基础上,对本文做出各种替换和改变。

Claims (30)

1.一种用于便携式计算设备(PCD)中的改进的闪存性能的方法,所述方法包括:
确定值N,所述值N与要从所述闪存中获取的预取数据的数量相对应;
在与高速缓冲存储器通信的高速缓存控制器处,接收针对闪存的访问请求;
判断针对所述闪存的所述访问请求是否与存储在所述高速缓冲存储器中的数据的部分相对应;
如果针对所述闪存的所述访问请求与存储在所述高速缓冲存储器中的数据的所述部分相对应,则响应于访问所述闪存的所述请求来返回存储在所述高速缓冲存储器中的数据的所述部分;
如果针对所述闪存的所述访问请求不与存储在所述高速缓冲存储器中的数据的所述部分相对应,则从所述闪存中获取N数量的预取数据,并将所述N数量的预取数据存储在所述高速缓冲存储器中;以及
基于所述高速缓冲存储器的高速缓存命中百分比来渐变所述值N。
2.根据权利要求1所述的方法,其中,所述值N表示所述闪存中的4千字节数据块的数量。
3.根据权利要求1所述的方法,其中,接收针对闪存的所述访问请求包括:从与所述高速缓存控制器和所述闪存通信的处理器接收读请求。
4.根据权利要求3所述的方法,其中,所述高速缓存控制器是与所述处理器分离的硬件器件。
5.根据权利要求1所述的方法,其中,基于所述高速缓存命中百分比来渐变所述值N还包括:
确定所述高速缓存命中百分比高于门限值,并且如果N小于最大值Nmax,则增加所述值N。
6.根据权利要求5所述的方法,其中,基于所述高速缓存命中百分比来渐变所述值N还包括:
确定所述高速缓存命中百分比低于所述门限值,并且如果N大于最小值Nmin,则减小所述值N。
7.根据权利要求6所述的方法,还包括:
响应于针对所述闪存的所述访问请求,更新所述高速缓存命中百分比。
8.根据权利要求1所述的方法,其中,如果针对所述闪存的所述访问请求与存储在所述高速缓冲存储器中的数据相对应,则响应于访问所述闪存的所述请求来返回存储在所述高速缓冲存储器中的数据的所述部分,还包括:
从所述高速缓冲存储器中删除数据的所述部分。
9.一种用于便携式计算设备(PCD)中的片上系统(SoC)的计算机系统,所述系统包括:
所述SoC的高速缓存控制器;
与高速缓存控制器通信的高速缓冲存储器;以及
与所述高速缓存控制器通信的闪存,
所述高速缓存控制器被配置为:
确定值N,所述值N与要从所述闪存中获取的预取数据的数量相对应;
从所述SoC的另一个部件接收针对闪存的访问请求;
判断针对所述闪存的所述访问请求是否与存储在所述高速缓冲存储器中的数据的部分相对应;
如果针对所述闪存的所述访问请求与存储在所述高速缓冲存储器中的数据的所述部分相对应,则响应于访问所述闪存的所述请求来返回存储在所述高速缓冲存储器中的数据的所述部分;
如果针对所述闪存的所述访问请求不与存储在所述高速缓冲存储器中的数据的所述部分相对应,则从所述闪存中获取N数量的预取数据,并将所述N数量的预取数据存储在所述高速缓冲存储器中;以及
基于所述高速缓冲存储器的高速缓存命中百分比来渐变所述值N。
10.根据权利要求9所述的系统,其中,所述值N表示所述闪存中的4千字节数据块的数量。
11.根据权利要求9所述的系统,还包括:
与所述高速缓存控制器通信的所述SoC的处理器,所述处理器被配置为向所述高速缓存控制器发送针对所述闪存上的数据的读请求。
12.根据权利要求11所述的系统,其中,所述高速缓存控制器是与所述处理器分离的所述SoC上的硬件器件。
13.根据权利要求9所述的系统,其中,被配置为基于所述高速缓冲存储器的高速缓存命中百分比来渐变所述值N的所述高速缓存控制器还包括所述高速缓存控制器被配置为:
确定所述高速缓存命中百分比高于门限值,以及
如果N小于最大值Nmax,则增加所述值N。
14.根据权利要求13所述的系统,其中,被配置为基于所述高速缓冲存储器的高速缓存命中百分比来渐变所述值N的所述高速缓存控制器还包括所述高速缓存控制器被配置为:
确定所述高速缓存命中百分比低于所述门限值,以及
如果N大于最小值Nmin,则减小所述值N。
15.根据权利要求14所述的系统,其中,所述高速缓存控制器还被配置为:
响应于针对所述闪存的所述访问请求,更新所述高速缓存命中百分比。
16.根据权利要求9所述的系统,其中,所述高速缓存控制器还被配置为:
如果针对所述闪存的所述访问请求与存储在所述高速缓冲存储器中的数据相对应,则从所述高速缓冲存储器中删除数据的所述部分。
17.一种包括非临时性计算机可使用介质的计算机程序产品,所述非临时性计算机可使用介质中体现有计算机可读程序代码,所述计算机可读程序代码适于被执行,以实现用于便携式计算设备(PCD)中的改进的闪存性能的方法,所述方法包括:
确定值N,所述值N与要从所述闪存中获取的预取数据的数量相对应;
在与高速缓冲存储器通信的高速缓存控制器处,接收针对闪存的访问请求;
判断针对所述闪存的所述访问请求是否与存储在所述高速缓冲存储器中的数据的部分相对应;
如果针对所述闪存的所述访问请求与存储在所述高速缓冲存储器中的数据的所述部分相对应,则响应于访问所述闪存的所述请求来返回存储在所述高速缓冲存储器中的数据的所述部分;
如果针对所述闪存的所述访问请求不与存储在所述高速缓冲存储器中的数据的所述部分相对应,则从所述闪存中获取N数量的预取数据,并将所述N数量的预取数据存储在所述高速缓冲存储器中;以及
基于所述高速缓冲存储器的高速缓存命中百分比来渐变所述值N。
18.根据权利要求17所述的计算机程序产品,其中,所述值N表示所述闪存中的4千字节数据块的数量。
19.根据权利要求17所述的计算机程序产品,其中,接收针对闪存的所述访问请求包括:从与所述高速缓存控制器通信的处理器接收读请求。
20.根据权利要求19所述的计算机程序产品,其中,所述高速缓存控制器是与所述处理器分离的硬件器件。
21.根据权利要求17所述的计算机程序产品,其中,基于所述高速缓存命中百分比来渐变所述值N还包括:
确定所述高速缓存命中百分比高于门限值,并且如果N小于最大值Nmax,则增加所述值N。
22.根据权利要求21所述的计算机程序产品,其中,基于所述高速缓存命中百分比来渐变所述值N还包括:
确定所述高速缓存命中百分比低于所述门限值,并且如果N大于最小值Nmin,则减小所述值N。
23.根据权利要求22所述的计算机程序产品,还包括:
响应于针对所述闪存的所述访问请求,更新所述高速缓存命中百分比。
24.一种用于便携式计算设备(PCD)中的改进的闪存性能的计算机系统,所述系统包括:
用于确定值N的单元,所述值N与要从所述闪存中获取的预取数据的数量相对应;
用于在与高速缓冲存储器通信的高速缓存控制器处,接收针对闪存的访问请求的单元;
用于判断针对所述闪存的所述访问请求是否与存储在所述高速缓冲存储器中的数据的部分相对应的单元;
用于如果针对所述闪存的所述访问请求与存储在所述高速缓冲存储器中的数据的所述部分相对应,则响应于访问所述闪存的所述请求来返回存储在所述高速缓冲存储器中的数据的所述部分的单元;
用于如果针对所述闪存的所述访问请求不与存储在所述高速缓冲存储器中的数据的所述部分相对应,则从所述闪存中获取N数量的预取数据,并将所述N数量的预取数据存储在所述高速缓冲存储器中的单元;以及
用于基于所述高速缓冲存储器的高速缓存命中百分比来渐变所述值N的单元。
25.根据权利要求24所述的系统,其中,所述值N表示所述闪存中的4千字节数据块的数量。
26.根据权利要求24所述的系统,其中,所述用于接收针对闪存的所述访问请求的单元还包括:
用于从与所述高速缓存控制器通信的处理器接收读请求的单元。
27.根据权利要求26所述的系统,其中,所述高速缓存控制器是与所述处理器分离的硬件器件。
28.根据权利要求24所述的系统,其中,所述用于基于所述高速缓存命中百分比来渐变所述值N的单元还包括:
用于确定所述高速缓存命中百分比高于门限值的单元,以及
用于如果N小于最大值Nmax,则增加所述值N的单元。
29.根据权利要求28所述的系统,其中,所述用于基于所述高速缓存命中百分比来渐变所述值N的单元还包括:
用于确定所述高速缓存命中百分比低于所述门限值的单元,以及
用于如果N大于最小值Nmin,则减小所述值N的单元。
30.根据权利要求29所述的系统,还包括:
用于响应于针对所述闪存的所述访问请求,更新所述高速缓存命中百分比的单元。
CN201680062767.4A 2015-10-30 2016-09-29 具有自适应预取的闪存读取高速缓存的系统和方法 Pending CN108701079A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/929,083 US9734073B2 (en) 2015-10-30 2015-10-30 System and method for flash read cache with adaptive pre-fetch
US14/929,083 2015-10-30
PCT/US2016/054537 WO2017074643A1 (en) 2015-10-30 2016-09-29 System and method for flash read cache with adaptive pre-fetch

Publications (1)

Publication Number Publication Date
CN108701079A true CN108701079A (zh) 2018-10-23

Family

ID=57133437

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680062767.4A Pending CN108701079A (zh) 2015-10-30 2016-09-29 具有自适应预取的闪存读取高速缓存的系统和方法

Country Status (5)

Country Link
US (1) US9734073B2 (zh)
EP (1) EP3368986A1 (zh)
CN (1) CN108701079A (zh)
TW (1) TW201717027A (zh)
WO (1) WO2017074643A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110955387A (zh) * 2019-10-25 2020-04-03 合肥沛睿微电子股份有限公司 自适应识别闪存类型方法及计算机可读取存储介质及装置
CN111104054A (zh) * 2018-10-29 2020-05-05 伊姆西Ip控股有限责任公司 管理输入/输出操作的方法、装置和计算机程序产品
CN111666233A (zh) * 2019-03-05 2020-09-15 马维尔亚洲私人有限公司 具有本地执行高速缓存控制的双接口闪存控制器

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10972574B2 (en) * 2016-04-27 2021-04-06 Seven Bridges Genomics Inc. Methods and systems for stream-processing of biomedical data
US10686906B2 (en) * 2016-05-02 2020-06-16 Netapp, Inc. Methods for managing multi-level flash storage and devices thereof
CN106250064B (zh) * 2016-08-19 2020-05-12 深圳大普微电子科技有限公司 固态硬盘控制装置和基于学习的固态硬盘数据存取方法
US10402337B2 (en) * 2017-08-03 2019-09-03 Micron Technology, Inc. Cache filter
US11281587B2 (en) * 2018-01-02 2022-03-22 Infinidat Ltd. Self-tuning cache
US10714159B2 (en) 2018-05-09 2020-07-14 Micron Technology, Inc. Indication in memory system or sub-system of latency associated with performing an access command
US10942854B2 (en) 2018-05-09 2021-03-09 Micron Technology, Inc. Prefetch management for memory
US11010092B2 (en) * 2018-05-09 2021-05-18 Micron Technology, Inc. Prefetch signaling in memory system or sub-system
US10754578B2 (en) 2018-05-09 2020-08-25 Micron Technology, Inc. Memory buffer management and bypass
TW202001791A (zh) * 2018-06-06 2020-01-01 晨星半導體股份有限公司 影像處理系統及其記憶體管理方法
CN110660012A (zh) * 2018-06-29 2020-01-07 晨星半导体股份有限公司 图像处理系统及其内存管理方法
US10860504B2 (en) 2018-12-05 2020-12-08 New Century Technologies Ltd. Peripheral device with embedded video codec functionality
US10884938B2 (en) * 2018-12-13 2021-01-05 International Business Machines Corporation Method and apparatus for prefetching data items to a cache
US11520703B2 (en) * 2019-01-31 2022-12-06 EMC IP Holding Company LLC Adaptive look-ahead configuration for prefetching data in input/output operations
US11210093B2 (en) 2019-04-08 2021-12-28 Micron Technology, Inc. Large data read techniques
US11182321B2 (en) 2019-11-01 2021-11-23 EMC IP Holding Company LLC Sequentiality characterization of input/output workloads

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040205298A1 (en) * 2003-04-14 2004-10-14 Bearden Brian S. Method of adaptive read cache pre-fetching to increase host read throughput
US20070014544A1 (en) * 2005-07-15 2007-01-18 Lg Electronics Inc. Apparatus for reproducing data, method thereof, recording medium, apparatus for recording data and method thereof
CN101105773A (zh) * 2007-08-20 2008-01-16 杭州华三通信技术有限公司 一种利用缓存实现数据存储的方法和装置
CN101634970A (zh) * 2009-08-26 2010-01-27 成都市华为赛门铁克科技有限公司 预取长度调整方法、装置和存储系统
US8291171B2 (en) * 2009-11-30 2012-10-16 Hewlett-Packard Development Company, L.P. Altering prefetch depth based on ready data
US20150178207A1 (en) * 2013-12-20 2015-06-25 Netapp, Inc. System and method for cache monitoring in storage systems

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030041214A1 (en) 2001-07-27 2003-02-27 Fujitsu Limited Cache control methods and apparatus for hard disk drives
US6983356B2 (en) 2002-12-19 2006-01-03 Intel Corporation High performance memory device-state aware chipset prefetcher
US7676630B2 (en) 2006-10-05 2010-03-09 Sun Microsystems, Inc. Method and apparatus for using a determined file access pattern to perform caching in a file system
JP2008225915A (ja) 2007-03-13 2008-09-25 Fujitsu Ltd プリフェッチ制御装置、記憶装置システムおよびプリフェッチ制御方法
US7702857B2 (en) 2007-08-22 2010-04-20 International Business Machines Corporation Adjusting parameters used to prefetch data from storage into cache
US8713260B2 (en) 2010-04-02 2014-04-29 Intel Corporation Adaptive block pre-fetching method and system
JP6146087B2 (ja) * 2013-03-28 2017-06-14 富士通株式会社 ストレージ制御プログラム,ストレージ制御方法,ストレージシステム及びその階層制御装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040205298A1 (en) * 2003-04-14 2004-10-14 Bearden Brian S. Method of adaptive read cache pre-fetching to increase host read throughput
US20070014544A1 (en) * 2005-07-15 2007-01-18 Lg Electronics Inc. Apparatus for reproducing data, method thereof, recording medium, apparatus for recording data and method thereof
CN101105773A (zh) * 2007-08-20 2008-01-16 杭州华三通信技术有限公司 一种利用缓存实现数据存储的方法和装置
CN101634970A (zh) * 2009-08-26 2010-01-27 成都市华为赛门铁克科技有限公司 预取长度调整方法、装置和存储系统
US8291171B2 (en) * 2009-11-30 2012-10-16 Hewlett-Packard Development Company, L.P. Altering prefetch depth based on ready data
US20150178207A1 (en) * 2013-12-20 2015-06-25 Netapp, Inc. System and method for cache monitoring in storage systems

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111104054A (zh) * 2018-10-29 2020-05-05 伊姆西Ip控股有限责任公司 管理输入/输出操作的方法、装置和计算机程序产品
CN111104054B (zh) * 2018-10-29 2023-10-27 伊姆西Ip控股有限责任公司 管理输入/输出操作的方法、装置和计算机程序产品
CN111666233A (zh) * 2019-03-05 2020-09-15 马维尔亚洲私人有限公司 具有本地执行高速缓存控制的双接口闪存控制器
CN110955387A (zh) * 2019-10-25 2020-04-03 合肥沛睿微电子股份有限公司 自适应识别闪存类型方法及计算机可读取存储介质及装置
CN110955387B (zh) * 2019-10-25 2023-10-24 合肥沛睿微电子股份有限公司 自适应识别闪存类型方法及计算机可读取存储介质及装置

Also Published As

Publication number Publication date
US9734073B2 (en) 2017-08-15
EP3368986A1 (en) 2018-09-05
TW201717027A (zh) 2017-05-16
WO2017074643A1 (en) 2017-05-04
US20170123988A1 (en) 2017-05-04

Similar Documents

Publication Publication Date Title
CN108701079A (zh) 具有自适应预取的闪存读取高速缓存的系统和方法
US11341059B2 (en) Using multiple memory elements in an input-output memory management unit for performing virtual address to physical address translations
US9690710B2 (en) System and method for improving a victim cache mode in a portable computing device
WO2013062714A1 (en) Enabling a non-core domain to control memory bandwidth
US9529730B2 (en) Methods for cache line eviction
JP6276470B2 (ja) ポータブルコンピューティングデバイスの揮発性メモリのスタンバイ電力を低減するためのシステムおよび方法
US20170255561A1 (en) Technologies for increasing associativity of a direct-mapped cache using compression
CN109074331A (zh) 具有系统高速缓存和本地资源管理的功率降低存储器子系统
US10642493B2 (en) Mobile device and data management method of the same
US9558117B2 (en) System and method for adaptive implementation of victim cache mode in a portable computing device
CN112052097B (zh) 虚拟场景的渲染资源处理方法、装置、设备及存储介质
CN107924225A (zh) 用于动态地调整存储器状态转变定时器的系统和方法
KR102479394B1 (ko) 이종 프로세서 시스템 내 캐시들 간에 데이터 이동
CN107562645B (zh) 一种内存页管理方法及计算设备
EP2901287B1 (en) System cache with sticky removal engine
CN115794682A (zh) 缓存替换方法及装置、电子设备、存储介质
CA2787560C (en) System and method for locking data in a cache memory
Xu et al. CLRU: a new page replacement algorithm for NAND flash-based consumer electronics
CN103823634A (zh) 一种支持无随机写模式的数据处理方法及系统
US10061698B2 (en) Reducing or avoiding buffering of evicted cache data from an uncompressed cache memory in a compression memory system when stalled write operations occur
US9354812B1 (en) Dynamic memory utilization in a system on a chip
JP6209573B2 (ja) 情報処理装置および情報処理方法
CN108885587A (zh) 具有系统高速缓存和本地资源管理的功率降低存储器子系统
TW202328896A (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
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20181023