CN112905111A - 数据缓存的方法和数据缓存的装置 - Google Patents

数据缓存的方法和数据缓存的装置 Download PDF

Info

Publication number
CN112905111A
CN112905111A CN202110163068.1A CN202110163068A CN112905111A CN 112905111 A CN112905111 A CN 112905111A CN 202110163068 A CN202110163068 A CN 202110163068A CN 112905111 A CN112905111 A CN 112905111A
Authority
CN
China
Prior art keywords
information
read request
historical
data block
data
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
CN202110163068.1A
Other languages
English (en)
Inventor
张恒
赵银鑫
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.)
Samsung China Semiconductor Co Ltd
Samsung Electronics Co Ltd
Original Assignee
Samsung China Semiconductor Co Ltd
Samsung Electronics Co Ltd
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 Samsung China Semiconductor Co Ltd, Samsung Electronics Co Ltd filed Critical Samsung China Semiconductor Co Ltd
Priority to CN202110163068.1A priority Critical patent/CN112905111A/zh
Publication of CN112905111A publication Critical patent/CN112905111A/zh
Priority to KR1020210107135A priority patent/KR20220113238A/ko
Priority to US17/516,007 priority patent/US11995003B2/en
Pending legal-status Critical Current

Links

Images

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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • G06F12/1054Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently physically addressed
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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/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/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
    • 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/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • 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/0871Allocation or management of cache space
    • 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/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • 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/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/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/6024History based prefetching
    • 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/7201Logical to physical mapping or translation of blocks or pages
    • 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/7208Multiple device management, e.g. distributing data over multiple flash devices

Landscapes

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

Abstract

公开了数据缓存的方法和数据缓存的装置,其中,方法包括:响应于主机发送的读请求,确定读请求对应的进程;根据缓存中的历史进程信息,获取读请求对应进程的历史访问信息,历史进程信息包括至少一个进程的历史访问信息,每个进程的历史访问信息包括每个进程历史访问的一个或多个数据块的热度信息;根据读请求对应进程的历史访问信息,确定读请求对应进程历史访问的热度信息满足第一预设条件的第一数据块;将第一数据块的物理地址从存储设备加载到缓存中。本公开的方案可以使得所有的读操作中HPB读占比高,并且保证被缓存的数据块后续会被频繁访问,从而提高设备的读性能。

Description

数据缓存的方法和数据缓存的装置
技术领域
本公开涉及存储领域,更具体地讲,涉及数据缓存的方法和数据缓存的装置。
背景技术
现阶段基于UFS(Universal Flash Storage,通用闪存存储器)存储的主机(例如Android手机)在运行过程中,都需要从UFS中读取数据,读取数据的快慢直接影响设备的运行速度,例如大型游戏启动时更能体现这一状况。
相关技术中,采用UFS合并主机性能提升器HPB(Host Performance Booster)的方案执行数据读取,该方案虽已经有较快的数据读取速度,但是仍然存在以下问题:HPB的读占比较低以及缓存资源的浪费,从而使得读性能不能充分体现出来。
发明内容
本公开提供了数据缓存的方法以及相应的数据缓存装置,以至少解决上述相关技术中的问题,也可不解决任何上述问题。
根据本公开示例性实施例的一个方面,提供一种数据缓存的方法,其中,所述方法包括:响应于主机发送的读请求,确定所述读请求对应的进程;根据缓存中的历史进程信息,获取所述读请求对应进程的历史访问信息,所述历史进程信息包括至少一个进程的历史访问信息,所述每个进程的历史访问信息包括每个进程历史访问的一个或多个数据块的热度信息;根据所述读请求对应进程的历史访问信息,确定所述读请求对应进程历史访问的热度信息满足第一预设条件的第一数据块;将所述第一数据块的物理地址从存储设备加载到缓存中。
如上所述,通过引入“进程”管理,利用历史进程信息可获取所述读请求对应进程的历史访问信息,进而确定热度信息满足第一预设条件的第一数据块,然后第一数据块的物理地址加载至缓存中,即提前加载将要启动的读请求对应进程中热度较高数据块的物理页表,可使得所有的读操作中HPB读占比高,并且保证被缓存的数据块后续会被频繁访问,提高每个读请求对应进程的运行速度,从而提高所述主机系统的运行速度,增强用户体验。
可选地,所述方法还包括:在主机启动后,将所述历史进程信息从存储设备中加载到所述缓存中。
如上所述,主机启动后加载历史进程信息,为进程管理引入管理数据,便于后续基于历史进程信息判断读请求涉及的数据块是否存在缓存中。
可选地,所述方法还包括:根据所述读请求访问的数据块,更新所述历史进程信息中的所述读请求对应进程的历史访问信息。
可选地,所述更新所述历史进程信息中的所述读请求对应进程的历史访问信息包括:若所述历史进程信息中不存在所述读请求对应进程的历史访问信息,在所述历史进程信息中增加所述读请求对应进程的访问信息,所述读请求对应进程的访问信息包括所述读请求访问的数据块的热度信息;若所述对应进程的历史访问信息中包括所述读请求访问的数据块,更新所述读请求访问的数据块的热度信息;若所述读请求访问的数据块中有所述对应进程的历史访问信息不包括的数据块,在所述历史访问信息中增加所述不包括的数据块的热度信息。
如上所述,更新的历史访问信息涉及读请求对应进程的访问信息、读请求涉及的数据块的热度信息,这些信息可作为下一次主机启动时加载的历史访问信息,以保证作为进程管理支撑数据的历史访问信息的连续性和有效性。
可选地,所述根据所述读请求对应进程的历史访问信息,确定所述读请求对应进程历史访问的热度信息满足第一预设条件的第一数据块包括:所述根据所述读请求对应进程的更新后的历史访问信息,确定所述读请求对应进程历史访问的热度信息满足第一预设条件的第一数据块。
可以理解,更新后的历史访问信息具有实时性和有效性,因此利用更新后的历史访问信息确定的第一数据块准确度更高。
可选地,所述方法还包括:在主机关机时,将所述缓存中的历史进程信息存储在存储设备中。
如上所述,缓存(例如,DRAM)通常具有掉电数据丢失的特性,因此,在设备关机时将缓存中数据存储至存储设备(例如,UFS)可保障数据不丢失,便于下次开机加载。
可选地,所述从存储在缓存中的历史进程信息中,获取所述读请求对应进程的历史访问信息包括:若所述读请求是主机启动后所述对应进程的首次读数据请求,则从存储在缓存中的历史进程信息中,获取所述读请求对应进程的历史访问信息。
可选地,所述方法还包括:若所述读请求是主机启动后所述对应进程的非首次读数据请求,所述读请求访问的数据块中存在未被缓存物理地址的数据块,且所述未被缓存物理地址的数据块的热度信息满足所述第一预设条件,将所述未被缓存物理地址的数据块的物理地址加载到所述缓存中。
如上所述,对于对应进程的“首次”读取数据请求可以直接从缓存中获取历史访问信息,以用于确定哪些第一数据块的物理地址需要缓存,相比于现有技术要从内存或者其他存储设备中多次读数据后才能确定要缓存的内容,本申请的方案可提高数据读取效率。
对于“非首次”读数据请求,需判断所述读请求访问的数据块中是否存在未被缓存物理地址的数据块,在存在的情况下可以通过前述步骤更新对应进程的历史访问信息,将满足所述第一预设条件的未被缓存物理地址的数据块的物理地址加载到所述缓存中,快速确定了需要缓存的内容,进而提高数据读取效率。
可选地,所述历史访问信息具体包括:进程名称,进程历史访问的一个或多个数据块的ID,及每个数据块的热度信息。
可选地,所述历史访问信息还包括进程的热度信息。
根据本公开示例性实施例的另一个方面,提供一种数据缓存的装置,其中,所述装置包括:进程管理单元,被配置为:响应于主机发送的读请求,确定所述读请求对应的进程;根据缓存中的历史进程信息,获取所述读请求对应进程的历史访问信息,所述历史进程信息包括至少一个进程的历史访问信息,所述每个进程的历史访问信息包括每个进程历史访问的一个或多个数据块的热度信息;根据所述读请求对应进程的历史访问信息,确定所述读请求对应进程历史访问的热度信息满足第一预设条件的第一数据块;缓存管理单元,被配置为:将所述第一数据块的物理地址从存储设备加载到缓存中。
可选地,所述进程管理单元被配置为:在主机启动后,将所述历史进程信息从存储设备中加载到所述缓存中。
可选地,所述进程管理单元被配置为:根据所述读请求访问的数据块,更新所述历史进程信息中的所述读请求对应进程的历史访问信息。
可选地,所述进程管理单元被配置为:所述根据所述读请求对应进程的更新后的历史访问信息,确定所述读请求对应进程历史访问的热度信息满足第一预设条件的第一数据块。
可选地,所述进程管理单元被配置为:若所述历史进程信息中不存在所述读请求对应进程的历史访问信息,在所述历史进程信息中增加所述读请求对应进程的访问信息,所述读请求对应进程的访问信息包括所述读请求访问的数据块的热度信息;若所述对应进程的历史访问信息中包括所述读请求访问的数据块,更新所述读请求访问的数据块的热度信息;若所述读请求访问的数据块中有所述对应进程的历史访问信息不包括的数据块,在所述历史访问信息中增加所述不包括的数据块的热度信息。
可选地,所述进程管理单元被配置为:在主机关机时,将所述缓存中的历史进程信息存储在存储设备中。
可选地,所述进程管理单元被配置为:若所述读请求是主机启动后所述对应进程的首次读数据请求,则从存储在缓存中的历史进程信息中,获取所述读请求对应进程的历史访问信息。
可选地,所述缓存管理单元被配置为:若所述读请求是主机启动后所述对应进程的非首次读数据请求,所述读请求访问的数据块中存在未被缓存物理地址的数据块,且所述未被缓存物理地址的数据块的热度信息满足所述第一预设条件,将所述未被缓存物理地址的数据块的物理地址加载到所述缓存中。
可选地,所述历史访问信息具体包括:进程名称,进程历史访问的一个或多个数据块的ID,及每个数据块的热度信息。
可选地,所述历史访问信息还包括进程的热度信息。
根据本公开示例性实施例的再一个方面,提供一种存储有指令的计算机可读存储介质,其中,当所述指令被处理器执行时,实现本公开所述的数据缓存的方法。
根据本公开示例性实施例的又一个方面,提供一种电子设备,其中,所述电子设备包括:至少一个处理器;至少一个存储计算机可执行指令的存储器,其中,所述计算机可执行指令在被所述至少一个处理器运行时,促使所述至少一个处理器执行本公开所述的数据缓存的方法。
本公开的有益技术效果:
本公开提供的数据缓存的方法和/或数据缓存的装置,可通过提前加载将要启动的读请求对应进程中热度较高数据块的物理页表,使得所有的读操作中HPB读占比高,并且保证被缓存的数据块后续会被频繁访问,提高每个读请求对应进程的运行速度,从而提高所述主机系统的运行速度,增强用户体验。
将在接下来的描述中部分阐述本公开总体构思另外的方面和/或优点,还有一部分通过描述将是清楚的,或者可以经过本公开总体构思的实施而得知。
附图说明
通过下面结合示例性地示出实施例的附图进行的描述,本公开的示例性实施例的上述和其他目的和特点将会变得更加清楚,其中:
图1是示出的现有技术中UFS数据区结构示意图;
图2是示出的现有技术中主机(Host)端数据块管理的示图;
图3是示出根据本公开的示例性实施例的数据缓存的方法的流程图;
图4是示出根据本公开的示例性实施例的数据缓存的装置的框图;
图5是示出根据本公开的示例性实施例的数据缓存的方法应用于主机(Host)端数据块管理的一个示例的示图;
图6是示出根据本公开的示例性实施例的数据缓存的装置的一个应用示例的示图;
图7是示出根据本公开的示例性实施例的数据缓存的方法的又一个应用示例的流程图。
具体实施方式
提供下面的具体实施方式以帮助读者获得对在此描述的方法、设备和/或系统的全面理解。然而,在理解本申请的公开之后,在此描述的方法、设备和/或系统的各种改变、修改和等同物将是清楚的。例如,在此描述的操作的顺序仅是示例,并且不限于在此阐述的那些顺序,而是除了必须以特定的顺序发生的操作之外,可如在理解本申请的公开之后将是清楚的那样被改变。此外,为了更加清楚和简明,本领域已知的特征的描述可被省略。
在此描述的特征可以以不同的形式来实现,而不应被解释为限于在此描述的示例。相反,已提供在此描述的示例,以仅示出实现在此描述的方法、设备和/或系统的许多可行方式中的一些可行方式,所述许多可行方式在理解本申请的公开之后将是清楚的。
在此使用的术语仅用于描述各种示例,并不将用于限制公开。除非上下文另外清楚地指示,否则单数形式也意在包括复数形式。术语“包含”、“包括”和“具有”说明存在叙述的特征、数量、操作、构件、元件和/或它们的组合,但不排除存在或添加一个或多个其他特征、数量、操作、构件、元件和/或它们的组合。
除非另有定义,否则在此使用的所有术语(包括技术术语和科学术语)具有与由本公开所属领域的普通技术人员在理解本公开之后通常理解的含义相同的含义。除非在此明确地如此定义,否则术语(诸如,在通用词典中定义的术语)应被解释为具有与它们在相关领域的上下文和本公开中的含义一致的含义,并且不应被理想化或过于形式化地解释。
此外,在示例的描述中,当认为公知的相关结构或功能的详细描述将引起对本公开的模糊解释时,将省略这样的详细描述。
在下文中,将参照附图详细描述实施例。然而,实施例可以以各种形式实现,并且不限于在此描述的示例。
为了解决上述背景技术部分提及的技术问题,本公开的发明人对相关技术进行了反复研究,具体如下:
参照图1,UFS设备通过Region(数据块)管理数据,不同的数据在UFS中存储时对应不同的物理地址。UFS中每4KB数据为一个Page(Host端通常一个Block就是4K),对应一个独立的物理地址。每个Region包含有一个sub-region,每个sub-region包含4096个Page。具体地,参照图1示出的UFS数据区结构示意图对应HPB2.0版本,其中数据区的LBA的逻辑地址范围包括从LBA Zero至LBA Max-1,在该范围内划分有Region#0,Region#1,Region#2,…,Region#M-1,Region#M,其中每个Region内包括一个Sub-Region#0。
LINUX虚拟文件系统通过逻辑地址访问数据,在UFS设备中存储有L2P(Logicaladdress to physical address,逻辑地址到物理地址的对应关系表)表,即每个Page的逻辑地址与物理地址的对应关系。
访问数据时,可基于L2P表快速定位获取被访问数据的Region,从而获取物理地址,L2P表位于内存UFS中,每次数据访问都需要先根据逻辑地址从UFS设备中读取物理地址。
主机性能提升器(HPB,Host performance Booster)技术优化了由逻辑地址获取物理地址的过程。具体地,在缓存(例如,DRAM动态随机存储)中为位于UFS设备中的L2P表创建部分热数据的动态镜像,这样部分被HPB命中的数据读取操作就可以直接从DRAM中直接获取数据的物理地址,从而省去从UFS设备获取物理地址的过程,提高数据读取的性能。
进一步地,发明人经过反复研究发现了导致上述技术问题的原因,具体如下:
现阶段相关技术中主要采用两种方案更新主机中主机端缓存的物理地址。具体地,第一种方案中,只在某个数据块被多次访问后才能被确定为热数据(例如,参照图2中示出的高热度至低热度的排序,将高热度的数据块326、数据块100、数据块8548以及数据块3253作为热的Region),根据UFS设备的缓存策略,会将所述热数据的物理地址提供给Host端进行缓存。基于前述关于HPB的分析可知,只有缓存之后所述主机性能提升器(HPB)才能发挥作用,因此在所述数据块的物理地址未被加载到缓存时,就不能基于HPB在缓存中查找读请求的逻辑地址对应的物理地址,从而导致HPB读占比较低。即,HPB的优化效果不能在数据被初次访问时得到体现。
第二种方案中,当某个数据块刚被访问,就去主动获取该数据块(例如,图2示出的数据块10、数据块33、数据块1085以及数据块1001)的物理地址,这样可以保证每次读都是HPB读操作,但是如果某个数据块只被读取了一次数据,那么将其物理地址加载到缓存中就会导致缓存资源的浪费。
基于上述原因,发明人想到,对于以类UNIX操作系统为基础的操作系统(例如,LINUX系统或者基于LINUX的Android系统)而言,不同进程涉及的数据块(Region)数量有限而且范围相对固定。因此可考虑引入“进程”维度来评估数据块的热度,同时还可以“进程”为基本单元保存进程相关的数据块的历史热度信息,从而在进程启动时,可根据存储的历史热度信息提前加载相应的数据块,进而可实现兼顾HPB读占比高、以及保证被缓存Region后续会被频繁访问的技术效果。
有鉴于此,根据本公开示例性实施例的一个方面,提供一种数据缓存的方法,所述数据缓存的方法可由下文将描述的数据缓存的装置执行,参照图3,所述数据缓存的方法包括步骤S110至S140,其中,步骤S110至S130可由所述数据缓存装置中的进程管理单元执行,步骤S140可由所述数据缓存装置中的缓存管理单元执行。
在步骤S110中,响应于主机发送的读请求,确定所述读请求对应的进程。
如能理解的,本公开对所述主机不做限定,例如可以为智能手机、平板电脑和/或智能手环等。
以智能手机为例,开机状态下,用户点击运行某个APP即认为开启了某个进程,当该APP发起了相应的读请求,进程管理单元(下文将详细描述)响应于主机发送的读请求,执行确定所述读请求对应的进程的操作。
可选地,根据主机的操作系统(例如,Android系统)创建进程的机制,操作系统会为不同进程分配对应的进程名称,因此通过获取读请求中携带的进程名称即可确定对应的进程。
在步骤S120中,根据缓存中的历史进程信息,获取所述读请求对应进程的历史访问信息,所述历史进程信息包括至少一个进程的历史访问信息,所述每个进程的历史访问信息包括每个进程历史访问的一个或多个数据块的热度信息。
其中,所述历史访问信息可具体包括:进程名称,进程历史访问的一个或多个数据块的ID,及每个数据块的热度信息。此外,所述历史访问信息还包括进程的热度信息。
如能理解的,可通过以下方式将历史进程信息加载到缓存中。例如可选择地,在主机启动后,将所述历史进程信息从存储设备中加载到所述缓存中。
此外,步骤S120中涉及的“根据缓存中的历史进程信息,获取所述读请求对应进程的历史访问信息”的步骤可包括以下情况:
情况一、若所述读请求是主机启动后所述对应进程的首次读数据请求,则从存储在缓存中的历史进程信息中,获取所述读请求对应进程的历史访问信息。
情况二、若所述读请求是主机启动后所述对应进程的非首次读数据请求,所述读请求访问的数据块中存在未被缓存物理地址的数据块,且所述未被缓存物理地址的数据块的热度信息满足所述第一预设条件,将所述未被缓存物理地址的数据块的物理地址加载到所述缓存中。
如上所述,这里“主机启动后所述对应进程的首次读数据请求”涉及的“首次”的时间参照起点可以是本次主机开机时刻。
具体地,由于在主机开机时,进程管理单元会将历史进程信息从存储设备中加载到缓存中,基于此,对于主机设备开机后的首次读数据请求,可直接调取缓存中的历史进程信息以获取对应进程的历史访问信息。
对于主机启动后所述对应进程的非首次读数据请求,进程管理单元可以判断所述读请求访问的数据块中是否存在未被缓存物理地址的数据块,具体的,可以通过搜索缓存的物理地址来判断,或者其它现有技术方式来实现。
在确定存在未被缓存物理地址的数据块的情况下,进一步判断所述未被缓存物理地址的数据块的热度信息是否满足所述第一预设条件;并在确定所述未被缓存物理地址的数据块的热度信息满足所述“第一预设条件”的情况下,将所述未被缓存物理地址的数据块的物理地址加载到所述缓存中。
如上所述,对于对应进程的“首次”读取数据请求可以直接从缓存中获取历史访问信息,以用于确定哪些第一数据块的物理地址需要缓存,相比于现有技术要从内存或者其他存储设备中多次读数据后才能确定需要缓存的内容,本申请的方案可提高数据读取效率。
对于“非首次”读数据请求,需判断所述读请求访问的数据块中是否存在未被缓存物理地址的数据块,在存在的情况下更新对应进程的历史访问信息,将满足所述第一预设条件的未被缓存物理地址的数据块的物理地址加载到所述缓存中,快速确定了需要缓存的内容,进而提高数据读取效率。
需要说明的是,更新对应进程的历史访问信息和判断未被缓存物理地址的数据块是否满足第一预设条件这两个步骤的执行,可以不分先后顺序的执行,可以先更新再判断,也可以先判断再更新。本发明对此不作具体限定。
可以理解,确定“主机启动后所述对应进程的读请求是否为首次读取数据请求”的方式,可以包括但不限于在进程信息中设置状态位(status)来指示所述对应进程的读请求是首次读数据请求还是非首次读数据请求。例如,对于首次读数据请求,可设置状态位(status)为1,对于非首次读数据请求,可设置状态位(status)为0。
在步骤S130中,根据所述读请求对应进程的历史访问信息,确定所述读请求对应进程历史访问的热度信息满足第一预设条件的第一数据块。
需要说明的是,所述“第一预设条件”可以为数据块的热度在该进程的所有数据块的热度排序中排名符合预设排名阈值,或者该进程访问数据块的次数大于预设次数阈值。其中,所述预设排名阈值例如可以为前三或者前五;所述预设次数阈值例如可以为3次、5次等;本公开对此不作限定,可根据实际情况或需求调整。
可以理解,可以通过以下方式确定所述第一数据块。例如,进程管理单元可以利用进程历史访问的一个或多个数据块的ID统计数据块被访问的次数,将被访问次数大于预设次数阈值的数据块作为第一数据块。或者利用每个数据块的热度信息,统计对应进程内所涉及的数据块的热度排序,基于排序确定排名符合预设排名阈值的数据块作为第一数据块。
通过执行上述步骤S110至S130可实现兼顾HPB读占比高,以及保证被缓存数据块后续会被频繁访问的效果。具体地,参照图5,当进程10被启动后,根据所述历史进程信息可知,进程10在运行过程中会访问数据块352、数据块854、数据块1998、数据块10、数据块5中的数据。因为数据块5热度较低,说明该进程10运行过程中,针对数据块5的数据读写不是很频繁,所以只加载前四个数据块(即,数据块352、数据块854、数据块1998、数据块10)的物理地址。这样既保证了HPB读占比不会太低,同时也避免应因加载数据块5而导致缓存资源的浪费。
在步骤S140中,将所述第一数据块的物理地址从存储设备加载到缓存中。
如能理解的,所述缓存管理单元可通过任何适用的方式实现上述步骤S140。
例如,由于可能存在两个或多个进程运行时都访问了同一个数据块的情况,因此在执行加载之前,首先还需要判断所述第一数据块的物理地址是否存在于缓存中,这样可以避免重复加载,提高效率。
其中,所述缓存中对已经加载的第一数据块的物理地址会建立缓存列表(CacheTable),因此通过查询Cache Table即可判断出所述第一数据块的物理地址是否已经在所述缓存中。
所述缓存管理单元可以将第一数据块的编号加到缓存物理页表的命令中,UFS设备响应于所述命令向主机反馈第一数据块对应的物理地址,并缓存第一数据块对应的物理地址,从而实现上述将所述第一数据块的物理地址从存储设备加载到缓存中的步骤。
本公开提供的数据缓存的方法,还包括在上述步骤S110至S140之后由所述进程管理单元执行的以下步骤:
可选择地,根据所述读请求访问的数据块,更新所述历史进程信息中的所述读请求对应进程的历史访问信息。
根据情况,可以通过以下方式实现所上述“更新”。例如,若所述历史进程信息中不存在所述读请求对应进程的历史访问信息,在所述历史进程信息中增加所述读请求对应进程的访问信息,所述读请求对应进程的访问信息包括所述读请求访问的数据块的热度信息。又例如,若所述对应进程的历史访问信息中包括所述读请求访问的数据块,更新所述读请求访问的数据块的热度信息。再例如,若所述读请求访问的数据块中有所述对应进程的历史访问信息不包括的数据块,在所述历史访问信息中增加所述不包括的数据块的热度信息。
具体地,可利用缓存算法,更新对应进程被启动的次数,或者更新对应进程内读数据请求涉及的数据块被访问的次数。其中,所述缓存算法可包括但不限于LFU(LeastFrequently Used,最近最少使用算法)、LRU(Least Recently Used,最近最久未使用算法)、FIFO(First In First Out,先进先出调度算法)。对应进程被启动的次数越多,其热度越高,在各历史进程的热度排序中越靠前。类似地,对应进程中所涉及的数据块被访问的次数越多,其热度越高,在对应进程内所涉及的数据块的热度排序中越靠前。
基于上述更新后的历史访问信息,可选择地,步骤S130中,所述根据所述读请求对应进程的历史访问信息,确定所述读请求对应进程历史访问的热度信息满足第一预设条件的第一数据块包括:根据所述读请求对应进程的更新后的历史访问信息,确定所述读请求对应进程历史访问的热度信息满足第一预设条件的第一数据块。
可选地,在设备关机时,将所述缓存中的历史进程信息存储在存储设备中,以作为下一次所述主机开机时的历史进程信息。
参照图6,可选地,所述历史进程信息可保存在主机的存储设备(例如,UFS)中。如能理解的,所述主机下次开机时可直接加载所述历史进程信息,然后可响应于所述各历史进程中存在所述读请求的对应进程,提前加载对应进程中热度较高数据块的物理页表,即实现预加载,从而可提高数据读取速度。
本公开提供的数据缓存的方法,还包括在上述步骤S110至S140之后由缓存管理单元120执行的以下步骤:
可选地,在所述物理地址被加载到所述缓存后,更新所述缓存中物理地址的热度排序;在所述缓存的剩余存储空间小于预设存储空间阈值时,将热度小于预设阈值的物理地址删除。其中,更新所述缓存中物理地址的热度排序的方式可以为利用缓存算法,更新所述缓存中物理地址被访问的次数。
如能理解的,利用热度排序优化缓存的存储空间,有利于提高缓存的有效利用率。其中,所述缓存算法可包括但不限于LFU(Least Frequently Used,最近最少使用算法)、LRU(Least Recently Used,最近最久未使用算法)、FIFO(First In First Out,先进先出调度算法)。本公开对于所述预设存储空间阈值以及所述预设阈值不做限定,可根据需求设定。
基于上文描述可知,本公开提供的数据缓存的方法,可通过提前加载读请求对应进程中热度较高数据块的物理页表,使得所有的读操作中HPB读占比高,并且保证被缓存的数据块后续会被频繁访问,提高每个读请求对应进程的运行速度,从而提高所述主机系统的运行速度,增强用户体验。
根据本公开示例性实施例的另一个方面,提供一种数据缓存的装置,其中,参照图4,数据缓存的装置100可包括进程管理单元110和缓存管理单元120,并且进程管理单元110和缓存管理单元120可通信地耦合。
进程管理单元110可被配置为:响应于主机发送的读请求,确定所述读请求对应的进程;根据缓存中的历史进程信息,获取所述读请求对应进程的历史访问信息,所述历史进程信息包括至少一个进程的历史访问信息,所述每个进程的历史访问信息包括每个进程历史访问的一个或多个数据块的热度信息;根据所述读请求对应进程的历史访问信息,确定所述读请求对应进程历史访问的热度信息满足第一预设条件的第一数据块。缓存管理单元120可被配置为:将所述第一数据块的物理地址从存储设备加载到缓存中。
应理解,本公开前述关于数据缓存的方法所描述的具体特征也可类似地应用于关于数据缓存的装置中进行类似扩展。为简化起见,未对其进行详细描述。
可选地,所述进程管理单元110被配置为在主机启动后,将所述历史进程信息从存储设备中加载到所述缓存中。
可选地,所述进程管理单元110被配置为根据所述读请求访问的数据块,更新所述历史进程信息中的所述读请求对应进程的历史访问信息。
可选地,所述进程管理单元110被配置为:根据所述读请求对应进程的更新后的历史访问信息,确定所述读请求对应进程历史访问的热度信息满足第一预设条件的第一数据块。
可选地,所述进程管理单元110被配置为若所述历史进程信息中不存在所述读请求对应进程的历史访问信息,在所述历史进程信息中增加所述读请求对应进程的访问信息,所述读请求对应进程的访问信息包括所述读请求访问的数据块的热度信息;若所述对应进程的历史访问信息中包括所述读请求访问的数据块,更新所述读请求访问的数据块的热度信息;若所述读请求访问中有所述对应进程的历史访问信息不包括的数据块,在所述历史访问信息中增加所述不包括的数据块的热度信息。
可选地,所述进程管理单元110被配置为在设备关机时,将所述缓存中的历史进程信息存储在存储设备中。
可选地,所述进程管理单元110被配置为若所述读请求是主机启动后所述对应进程的首次读数据请求,则从存储在缓存中的历史进程信息中,获取所述读请求对应进程的历史访问信息。
可选地,所述缓存管理单元120被配置为若所述读请求是主机启动后所述对应进程的非首次读数据请求,所述读请求访问的数据块中存在未被缓存物理地址的数据块,且所述未被缓存物理地址的数据块的热度信息满足所述第一预设条件,将所述未被缓存物理地址的数据块的物理地址加载到所述缓存中。
可选地,所述历史访问信息具体包括进程名称,进程历史访问的一个或多个数据块的ID,及每个数据块的热度信息。
可选地,所述历史访问信息还包括进程的热度信息。
下面结合图5和图6,对本公开的数据缓存的方法和/或数据缓存的装置的工作原理进行描述。
参照图6,主机可包括存储设备(例如UFS设备)、中央处理器(CPU)以及缓存(例如DRAM)。在所述主机开机时,所述进程管理单元可以从UFS中加载历史进程信息,在所述主机关机时,所述进程管理单元将主机运行期间更新的历史进程信息存储至UFS中。
所述进程管理单元在执行前述步骤S110至S130涉及的具体特征限定的方法后,将确定的所述读请求对应进程历史访问的热度信息满足第一预设条件的第一数据块的逻辑地址发送给缓存管理单元,其中,所述进程管理单元、缓存管理单元以及UFS设备之间的通信方式可以为无线方式或有线方式。
所述缓存管理单元响应于接收到所述第一数据块的逻辑地址,从UFS中基于L2P表加载对应的物理页表。
参照图5,主机端(例如,CPU)可设置所述数据缓存装置,进程管理单元可根据读请求对应进程,采用上述的缓存算法更新所述历史进程信息中涉及的各个历史进程的热度,例如,所述读请求对应进程即为进程10,其被启动的次数目前最多,因此其热度最高,更新其排序至第一位,而其他进程的排序相应调整,例如包括进程325、进程546以及进程7650相应下调。
所述进程管理单元可根据所述读请求对应进程涉及的数据块,在所述各历史进程中存在所述读请求对应进程的情况下,采用上述的缓存算法和/或机器学习算法更新对应进程中涉及的数据块热度。在所述各历史进程中不存在所述读请求对应进程的情况下,存储所述读请求对应进程的进程信息。
参照图5,以在所述各历史进程中存在的所述读请求对应进程是进程10为例,可根据进程涉及的数据块被访问的次数确定热度排序。在图5实施例中,热度排序由高到低为数据块352、数据块854、数据块1998、数据块10以及数据块5。
所述缓存管理单元也可基于上述缓存算法和/或机器学习算法更新已加载物理页表的数据块的热度,并据此排序。这里,更新时考虑到不同进程可能访问同一数据块的情况,例如进程10访问了数据块5和10,进程325访问了数据块5和1001,此时可确定数据块5被访问了2次,当前热度最高,排序至第一位。同理其他数据块则相应调整,例如数据块10、…、数据块1085、数据块1001的排序相应下调。
由于缓存的存储空间有限,因此可根据所述缓存管理单元对已加载的数据块的排序优化缓存存储空间,提升缓存的有效利用率。
下面结合图7,对本公开的数据缓存的方法和/或装置的完整工作过程的一种具体实施例进行描述,当然,本公开的数据缓存的方法和/或装置不限于此具体实施例。这里,为便于描述,将所述读请求对应进程替换为“读请求的目标进程”。
第1步、主机开机时,所述进程管理单元从UFS中加载所述历史进程信息;
第2步、所述进程管理单元判断是否接收到读请求,如果是,则进一步判断所述历史进程信息中是否存在所述读请求的目标进程的信息,如果否,则返回;
第3步、如果所述进程管理单元判断出所述历史进程信息中存在所述读请求的目标进程,则进一步判断所述目标进程的状态是否为“休眠”;如果所述进程管理单元判断出所述历史进程信息中不存在所述读请求的目标进程,则将所述目标进程的信息添加至所述历史进程信息中;
第4步、如果所述目标进程的状态为“休眠”,所述进程管理单元将所述目标进程的状态调整为“运行”;
第5步、所述进程管理单元确定出所述读请求的目标进程所涉及的一个或多个数据块中热度大于预设阈值的数据块(即,第一数据块),然后发送对应的逻辑地址给所述缓存管理单元,所述缓存管理单元响应于所述逻辑地址从所述内存(例如,UFS)中加载对应的物理地址;
第6步、所述进程管理单元基于所述目标进程的启动次数更新该目标进程在各历史进程中的热度排序,以及基于目标进程访问的数据块的频次更新该目标进程内数据块的热度排序;
第7步、所述进程管理单元判断主机是否关机,如果是,则将所有进程的状态调整为“休眠”;同时将更新后的历史进程信息存储至所述内存(例如,UFS)中,以作为下一次开机时的历史进程信息;如果否,返回第2步。
参照上述图7实施例可知,本公开的数据缓存的方法和/或装置,通过引入“进程”维度来评价数据块的热度,同时以“进程”为基本单元保存并更新进程涉及的数据块的历史热度排序,可将高热度的数据块预先加载至缓存,以兼顾HPB读占比与缓存资源的有效利用率。
应该理解,根据本公开的示例性实施例的数据缓存的装置中的各个单元/模块可被实现为硬件组件和/或软件组件。本领域技术人员根据限定的各个单元/模块所执行的处理,可以例如使用现场可编程门阵列(FPGA)或专用集成电路(ASIC)来实现各个单元/模块。
根据本公开示例性实施例的再一个方面,提供一种存储有计算机程序的计算机可读存储介质,其中,当所述计算机程序被处理器执行时,实现本公开所述的数据缓存的方法。
具体地,根据本公开的示例性实施例的数据缓存的方法可被编写为计算机程序、代码段、指令或它们的任何组合,并被记录、存储或固定在一个或多个非暂时性计算机可读存储介质中或一个或多个非暂时性计算机可读存储介质上。所述计算机可读存储介质是可存储由计算机系统读出的数据的任意数据存储装置。计算机可读存储介质的示例包括:只读存储器、随机存取存储器、只读光盘、磁带、软盘、光数据存储装置和载波(诸如经有线或无线传输路径通过互联网的数据传输)。
根据本公开示例性实施例的又一个方面,提供一种电子设备,其中,所述电子设备包括:至少一个处理器;至少一个存储计算机可执行指令的存储器,其中,所述计算机可执行指令在被所述至少一个处理器运行时,促使所述至少一个处理器执行本公开所述的数据缓存的方法。
具体地,所述电子设备可以广义地为平板电脑、智能手机、智能手表,或任何其他具有必要的计算和/或处理能力的电子设备。在一个实施例中,该电子设备可包括通过系统总线连接的处理器、存储器、网络接口、通信接口等。该电子设备的处理器可用于提供必要的计算、处理和/或控制能力。该电子设备的存储器可包括非易失性存储介质和内存储器。该非易失性存储介质中或上可存储有操作系统、计算机程序等。该内存储器可为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该电子设备的网络接口和通信接口可用于与外部的设备通过网络连接和通信。
综上所述,本公开提供的数据缓存的方法和/或数据缓存的装置,可通过提前加载将要启动的读请求对应进程中热度较高数据块的物理页表,使得所有的读操作中HPB读占比高,并且保证被缓存的数据块后续会被频繁访问,提升缓存资源的有效利用率,提高每个读请求对应进程的运行速度,从而提高所述主机系统的运行速度,增强用户体验。
虽然已表示和描述了本公开的一些示例性实施例,但本领域技术人员应该理解,在不脱离由权利要求及其等同物限定其范围的本公开的原理和精神的情况下,可以对这些实施例进行修改。

Claims (13)

1.一种数据缓存的方法,其特征在于,所述方法包括:
响应于主机发送的读请求,确定所述读请求对应的进程;
根据缓存中的历史进程信息,获取所述读请求对应进程的历史访问信息,所述历史进程信息包括至少一个进程的历史访问信息,所述每个进程的历史访问信息包括每个进程历史访问的一个或多个数据块的热度信息;
根据所述读请求对应进程的历史访问信息,确定所述读请求对应进程历史访问的热度信息满足第一预设条件的第一数据块;
将所述第一数据块的物理地址从存储设备加载到缓存中。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:在主机启动后,将所述历史进程信息从存储设备中加载到所述缓存中。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:根据所述读请求访问的数据块,更新所述历史进程信息中的所述读请求对应进程的历史访问信息。
4.根据权利要求3所述的方法,其特征在于,所述根据所述读请求对应进程的历史访问信息,确定所述读请求对应进程历史访问的热度信息满足第一预设条件的第一数据块包括:
所述根据所述读请求对应进程的更新后的历史访问信息,确定所述读请求对应进程历史访问的热度信息满足第一预设条件的第一数据块。
5.根据权利要求3或4所述的方法,其特征在于,所述更新所述历史进程信息中的所述读请求对应进程的历史访问信息包括:
若所述历史进程信息中不存在所述读请求对应进程的历史访问信息,在所述历史进程信息中增加所述读请求对应进程的访问信息,所述读请求对应进程的访问信息包括所述读请求访问的数据块的热度信息;
若所述对应进程的历史访问信息中包括所述读请求访问的数据块,更新所述读请求访问的数据块的热度信息;
若所述读请求访问的数据块中有所述对应进程的历史访问信息不包括的数据块,在所述历史访问信息中增加所述不包括的数据块的热度信息。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在主机关机时,将所述缓存中的历史进程信息存储在存储设备中。
7.根据权利要求1所述的方法,其特征在于,所述根据缓存中的历史进程信息,获取所述读请求对应进程的历史访问信息包括:
若所述读请求是主机启动后所述对应进程的首次读数据请求,则从存储在缓存中的历史进程信息中,获取所述读请求对应进程的历史访问信息。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:若所述读请求是主机启动后所述对应进程的非首次读数据请求,所述读请求访问的数据块中存在未被缓存物理地址的数据块,且所述未被缓存物理地址的数据块的热度信息满足所述第一预设条件,将所述未被缓存物理地址的数据块的物理地址加载到所述缓存中。
9.根据权利要求1所述的方法,其特征在于,所述历史访问信息包括:进程名称,进程历史访问的一个或多个数据块的ID,及每个数据块的热度信息。
10.根据权利要求1所述的方法,其特征在于,所述历史访问信息还包括进程的热度信息。
11.一种数据缓存的装置,其特征在于,所述装置包括:
进程管理单元,被配置为:
响应于主机发送的读请求,确定所述读请求对应的进程;
根据缓存中的历史进程信息,获取所述读请求对应进程的历史访问信息,所述历史进程信息包括至少一个进程的历史访问信息,所述每个进程的历史访问信息包括每个进程历史访问的一个或多个数据块的热度信息;
根据所述读请求对应进程的历史访问信息,确定所述读请求对应进程历史访问的热度信息满足第一预设条件的第一数据块;
缓存管理单元,被配置为:
将所述第一数据块的物理地址从存储设备加载到缓存中。
12.一种存储有指令的计算机可读存储介质,其特征在于,当所述指令被处理器执行时,实现如权利要求1至10中任一项所述的数据缓存的方法。
13.一种电子设备,其特征在于,包括:
至少一个处理器;
至少一个存储计算机可执行指令的存储器,
其中,所述计算机可执行指令在被所述至少一个处理器运行时,促使所述至少一个处理器执行如权利要求1到10中的任一权利要求所述的数据缓存的方法。
CN202110163068.1A 2021-02-05 2021-02-05 数据缓存的方法和数据缓存的装置 Pending CN112905111A (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202110163068.1A CN112905111A (zh) 2021-02-05 2021-02-05 数据缓存的方法和数据缓存的装置
KR1020210107135A KR20220113238A (ko) 2021-02-05 2021-08-13 데이터 캐싱 방법 및 데이터 캐싱 장치
US17/516,007 US11995003B2 (en) 2021-02-05 2021-11-01 Method of data caching and device caching data

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110163068.1A CN112905111A (zh) 2021-02-05 2021-02-05 数据缓存的方法和数据缓存的装置

Publications (1)

Publication Number Publication Date
CN112905111A true CN112905111A (zh) 2021-06-04

Family

ID=76122978

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110163068.1A Pending CN112905111A (zh) 2021-02-05 2021-02-05 数据缓存的方法和数据缓存的装置

Country Status (3)

Country Link
US (1) US11995003B2 (zh)
KR (1) KR20220113238A (zh)
CN (1) CN112905111A (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114201233A (zh) * 2021-11-18 2022-03-18 成都网思科平科技有限公司 一种基于快照参照的减少进程模块加载数据存储的方法
CN114741336A (zh) * 2022-06-09 2022-07-12 荣耀终端有限公司 内存中Host侧缓存区调整方法、电子设备及芯片系统
CN114816749A (zh) * 2022-04-22 2022-07-29 江苏华存电子科技有限公司 一种用于内存的智能化管理方法及系统
CN115022342A (zh) * 2022-05-31 2022-09-06 Oppo广东移动通信有限公司 数据处理方法、装置、电子设备和计算机可读存储介质
CN116775713A (zh) * 2023-08-22 2023-09-19 北京遥感设备研究所 基于数据访问模式的数据库主被动缓存优化方法
CN117112268A (zh) * 2023-10-23 2023-11-24 深圳市七彩虹禹贡科技发展有限公司 一种内存共享管理方法及系统

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117707639B (zh) * 2023-08-30 2024-07-12 荣耀终端有限公司 应用启动加速方法、电子设备及存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070198780A1 (en) * 2006-02-17 2007-08-23 Boyd Kenneth W Apparatus, system, and method for determining prefetch data
CN102707966A (zh) * 2012-04-12 2012-10-03 腾讯科技(深圳)有限公司 加速操作系统启动的方法及装置、预取信息生成方法及装置和终端
US20130138886A1 (en) * 2010-08-27 2013-05-30 Fujitsu Limited Scheduler, multi-core processor system, and scheduling method
US20160267018A1 (en) * 2015-03-13 2016-09-15 Fujitsu Limited Processing device and control method for processing device
CN108509151A (zh) * 2018-03-13 2018-09-07 华中科技大学 一种基于dram内存控制器的行缓存方法和系统
CN111435289A (zh) * 2019-01-15 2020-07-21 爱思开海力士有限公司 映射数据访问性能提高的存储器控制器及其操作方法
CN112035054A (zh) * 2019-06-04 2020-12-04 爱思开海力士有限公司 控制器的操作方法以及存储器系统

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8788764B2 (en) * 2003-10-08 2014-07-22 Oracle International Corporation Access controller for storage devices
KR102025180B1 (ko) 2013-08-08 2019-09-26 삼성전자주식회사 스토리지 시스템 및 그것의 쓰기 방법
CN104571951B (zh) 2014-12-19 2018-04-20 上海新储集成电路有限公司 Emmc/ufs卡及其提高emmc/ufs卡读性能的方法
US20160266797A1 (en) * 2015-03-07 2016-09-15 CacheBox Inc. Caching On Ephemeral Storage
US10558393B2 (en) 2017-10-20 2020-02-11 Qualcomm Incorporated Controller hardware automation for host-aware performance booster
US10430117B2 (en) 2017-10-23 2019-10-01 Micron Technology, Inc. Host accelerated operations in managed NAND devices
KR20200049051A (ko) 2018-10-31 2020-05-08 삼성전자주식회사 스토리지 장치의 구동 방법, 이를 수행하는 스토리지 장치 및 이를 이용한 스토리지 시스템의 구동 방법
KR20200099882A (ko) * 2019-02-15 2020-08-25 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
CN110781106A (zh) 2019-09-05 2020-02-11 深圳市德名利电子有限公司 一种通用闪存存储器主机端芯片装置以及设备
US20230033029A1 (en) * 2021-07-22 2023-02-02 Vmware, Inc. Optimized memory tiering

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070198780A1 (en) * 2006-02-17 2007-08-23 Boyd Kenneth W Apparatus, system, and method for determining prefetch data
US20130138886A1 (en) * 2010-08-27 2013-05-30 Fujitsu Limited Scheduler, multi-core processor system, and scheduling method
CN102707966A (zh) * 2012-04-12 2012-10-03 腾讯科技(深圳)有限公司 加速操作系统启动的方法及装置、预取信息生成方法及装置和终端
US20160267018A1 (en) * 2015-03-13 2016-09-15 Fujitsu Limited Processing device and control method for processing device
CN108509151A (zh) * 2018-03-13 2018-09-07 华中科技大学 一种基于dram内存控制器的行缓存方法和系统
CN111435289A (zh) * 2019-01-15 2020-07-21 爱思开海力士有限公司 映射数据访问性能提高的存储器控制器及其操作方法
CN112035054A (zh) * 2019-06-04 2020-12-04 爱思开海力士有限公司 控制器的操作方法以及存储器系统

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114201233A (zh) * 2021-11-18 2022-03-18 成都网思科平科技有限公司 一种基于快照参照的减少进程模块加载数据存储的方法
CN114816749A (zh) * 2022-04-22 2022-07-29 江苏华存电子科技有限公司 一种用于内存的智能化管理方法及系统
CN115022342A (zh) * 2022-05-31 2022-09-06 Oppo广东移动通信有限公司 数据处理方法、装置、电子设备和计算机可读存储介质
CN115022342B (zh) * 2022-05-31 2023-12-05 Oppo广东移动通信有限公司 数据处理方法、装置、电子设备和计算机可读存储介质
CN114741336A (zh) * 2022-06-09 2022-07-12 荣耀终端有限公司 内存中Host侧缓存区调整方法、电子设备及芯片系统
CN114741336B (zh) * 2022-06-09 2022-11-25 荣耀终端有限公司 内存中Host侧缓存区调整方法、电子设备及芯片系统
CN116775713A (zh) * 2023-08-22 2023-09-19 北京遥感设备研究所 基于数据访问模式的数据库主被动缓存优化方法
CN116775713B (zh) * 2023-08-22 2024-01-02 北京遥感设备研究所 基于数据访问模式的数据库主被动缓存优化方法
CN117112268A (zh) * 2023-10-23 2023-11-24 深圳市七彩虹禹贡科技发展有限公司 一种内存共享管理方法及系统
CN117112268B (zh) * 2023-10-23 2024-02-13 深圳市七彩虹禹贡科技发展有限公司 一种内存共享管理方法及系统

Also Published As

Publication number Publication date
KR20220113238A (ko) 2022-08-12
US11995003B2 (en) 2024-05-28
US20220253388A1 (en) 2022-08-11

Similar Documents

Publication Publication Date Title
CN112905111A (zh) 数据缓存的方法和数据缓存的装置
US11307769B2 (en) Data storage method, apparatus and storage medium
US10503635B2 (en) System and method for adaptive optimization for performance in solid state drives based on segment access frequency
CN109426619B (zh) 访问快闪存储器模块的方法及相关闪存控制器与电子装置
US20050080986A1 (en) Priority-based flash memory control apparatus for XIP in serial flash memory,memory management method using the same, and flash memory chip thereof
US20150378888A1 (en) Controller, flash memory apparatus, and method for writing data into flash memory apparatus
US20170123988A1 (en) System and method for flash read cache with adaptive pre-fetch
US11372779B2 (en) Memory controller and memory page management method
EP2478441A1 (en) Read and write aware cache
CN110109845B (zh) 缓存数据管理方法、装置、计算机设备及存储介质
TWI703566B (zh) 快閃記憶體控制器及相關的存取方法及電子裝置
US11126553B2 (en) Dynamic allocation of memory between containers
CN113614702A (zh) 基于检测到的读取命令活跃流的自适应预读高速缓存管理器
CN110737607B (zh) 管理hmb内存的方法、装置、计算机设备及存储介质
CN113407120B (zh) 基于hmb的映射表管理方法、装置及计算机设备
CN110908595B (zh) 存储装置及信息处理系统
US20220261354A1 (en) Data access method and apparatus and storage medium
CN115576863A (zh) 一种数据读写方法、存储设备及存储介质
US11138118B2 (en) Method and apparatus for dynamically adapting sizes of cache partitions in a partitioned cache
CN110888588A (zh) 快闪记忆体控制器及相关的访问方法及电子装置
CN117632809B (zh) 存储器控制器、数据读取方法及存储装置
CN117032594B (zh) 一种读命令调度方法、处理方法、装置及存储设备
CN115291801A (zh) 数据处理方法、装置、存储介质及电子装置
CN110941571B (zh) 闪存控制器及相关的存取方法及电子装置
US11467730B1 (en) Method and system for managing data storage on non-volatile memory media

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