CN108475235A - 利用dram程序高速缓存的非易失性随机存取系统存储器 - Google Patents

利用dram程序高速缓存的非易失性随机存取系统存储器 Download PDF

Info

Publication number
CN108475235A
CN108475235A CN201680078338.6A CN201680078338A CN108475235A CN 108475235 A CN108475235 A CN 108475235A CN 201680078338 A CN201680078338 A CN 201680078338A CN 108475235 A CN108475235 A CN 108475235A
Authority
CN
China
Prior art keywords
executable program
program
memory
volatile
volatile memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201680078338.6A
Other languages
English (en)
Inventor
S·莫洛伊
D·T·全
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 CN108475235A publication Critical patent/CN108475235A/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/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
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0638Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
    • 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
    • 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
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting 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/0893Caches characterised by their organisation or structure
    • 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/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/205Hybrid memory, e.g. using both volatile and non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • 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/281Single cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/30Providing cache or TLB in specific location of a processing system
    • G06F2212/304In main memory subsystem
    • G06F2212/3042In main memory subsystem being part of a memory device, e.g. cache DRAM
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/30Providing cache or TLB in specific location of a processing system
    • G06F2212/305Providing cache or TLB in specific location of a processing system being part of a memory device, e.g. cache DRAM

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

公开了用于利用易失性存储器程序高速缓存来提供非易失性系统存储器的系统、方法和计算机程序。一种这样的方法包括在非易失性随机存取存储器中存储可执行程序。响应于对可执行程序的最初启动,从非易失性随机存取存储器中将可执行程序加载到易失性存储器高速缓存中用于执行。响应于对可执行程序的最初中止,与可执行程序相对应的高速缓存页面被冲洗到非易失性随机存取存储器中。

Description

利用DRAM程序高速缓存的非易失性随机存取系统存储器
背景技术
便携式计算设备(例如,蜂窝电话、智能电话、平板电脑、便携式数字助理(PDA)、便携式游戏操纵台、可穿戴设备,以及其它电池供电的设备)以及其它计算设备继续提供不断发展的大量的特征和服务,以及提供给用户前所未有的接入信息、源和通信的水平。以与这些服务的增强并驾齐驱,这样的设备已经变得更加强大和更加复杂。便携式计算设备现在通常包括片上系统(SoC),所述片上系统包括一个或多个芯片组件,所述芯片组件嵌入在单个的基板上(例如,一个或多个中央处理单元(CPU)、图形处理单元(GPU)、数字信号处理器等)。SoC可以经由双倍数据速率(DDR)高性能数据和控制接口耦合至诸如动态随机存取存储器(DRAM)的一个或多个易失性存储器模块或设备。
因为DRAM快速、可靠以及大批量产,在许多系统中其被用作随机存取存储器。当可用来保持所有已启动的应用的系统存储器不足够时,用于在应用之间进行切换的用户响应能力能够被降级。随着系统和应用变得更加复杂,针对更大容量的系统存储器的需求以及DRAM的成本导致了替代的解决方案。一种替代的方案是对非易失性存储设备的使用,诸如NAND闪存,其与DRAM相比成本明显地更低。然而,NAND闪存是块设备,其意味着数据存取的粒度相对大(例如,大约8-16千字节)。此外,NAND的读取和写入速度比DRAM慢很多,使得NAND不太令人满意。
现有的使用NAND闪存来替代RAM的方法包括内核交换。内核交换使用系统的NAND闪存存储器的一小部分作为暂时性的支持。当DRAM的可用性低时,内核交换从DRAM驱逐空闲的4千字节页面,以及暂时性地将它们存储进NAND闪存中。如果被驱逐的4千字节页面变成活动的,则内核交换将所述页面从NAND闪存复制回到DRAM中。
关于内核交换方式的重要议题是在闪存中的交换存储器容量与DRAM容量的比率必须被限制。过分依赖交换存储器可以导致由闪存持久性引起的低性能或低可靠性。因此,闪存交换容量与DRAM容量的存储器比率可以被限制(例如,不大于1:4)。例如,对于5个千兆字节的整体系统容量来说,系统可以使用4个千兆字节的DRAM,以及允许1个千兆字节的闪存交换。
因此,存在针对利用较低成本的非易失性存储器来替代DRAM作为系统存储器的改善的系统和方法的需求。
发明内容
公开了用于利用易失性存储器程序高速缓存来提供非易失性系统存储器的系统、方法和计算机程序。一种这样的方法包括在非易失性随机存取存储器中存储可执行程序。响应于对可执行程序的最初启动,将可执行程序从非易失性随机存取存储器加载到易失性存储器高速缓存中用于执行。响应于对可执行程序的最初中止,将与可执行程序相对应的高速缓存页面冲洗到非易失性随机存取存储器中。
另一种实施例是包括用于存储可执行程序的非易失性随机存取存储器(RAM)设备、易失性存储器高速缓存和片上系统(SoC)的计算机系统。SoC电耦合至非易失性RAM设备以及易失性存储器高速缓存。SoC包括处理器和存储器控制器。存储器控制器被配置为响应于对可执行程序的最初启动,将可执行程序从非易失性RAM设备加载到易失性存储器高速缓存中。响应于对可执行程序的最初中止,存储器控制器将与可执行程序相对应的高速缓存页面从易失性存储器高速缓存冲洗到非易失性RAM设备中。
附图说明
在附图中,除非另外指定,否则贯穿各个视图的相似的参考数字指代相似的部分。针对具有诸如“102A”或“102B”的字母符号名称的参考数字,字母符号名称可以区分在同一附图中存在的两个相似的部分或元素。当参考数字旨在来包含在所有附图中具有相同参考数字的所有部分时,针对参考数字的字母符号名称可以省略。
图1是合并了利用DRAM高速缓存的非易失性随机存取系统存储器的系统的实施例的方块图。
图2示出了在图1的系统中被预读取和冲洗的可执行程序映像。
图3是示出在图1的系统中实现的方法的实施例的流程图,所述方法用于在非易失性随机存取系统存储器和DRAM高速缓存之间预读取和冲洗可执行程序映像。
图4是示出在图1的系统中实现的DRAM高速缓存结构的实施例的数据图。
图5是示出针对示例性的程序的状态转换的实施例的流程图。
图6是示出用于在图1的系统中最初启动程序的方法的实施例的流程图。
图7是示出用于暂停在图1的系统中的程序的方法的实施例的流程图。
图8是示出用于恢复在图1的系统中的暂停的程序的方法的实施例的流程图。
图9是示出用于从DRAM高速缓存中驱逐程序的方法的实施例的流程图。
图10是示出在图1的系统中的非易失性RAM控制器的实施例的方块图。
图11是示出合并了利用DRAM高速缓存的非易失性随机存取存储器的系统的另一种实施例的方块图。
图12是用于合并图1和图11的系统的便携式通信设备的实施例的方块图。
具体实施方式
词语“示例性的”在本文中用于意指“用作示例,实例或说明”。本文中被描述为“示例性的”任何方面不必要被解释为比其它方面更优选的或更具优势的。
在该描述中,术语“应用”还可以包括具有可执行内容的文件,诸如:目标代码、脚本、字节代码、标记语言文件和补丁。此外,本文中涉及的“应用”还可以包括本质上不能执行的文件,诸如可能需要打开的文件或其它需要存取的数据文件。
术语“内容”还可以包括具有可执行内容的文件,诸如:目标代码、脚本、字节代码、标记语言文件和补丁。此外,本文中涉及的“内容”还可以包括本质上不能执行的文件,诸如可能需要打开的文件或其它需要存取的数据文件。
如在本描述中使用的,术语“组件”、“数据库”、“模块”、“系统”等旨在指计算机相关的实体,硬件、固件、硬件和软件的组合、软件或执行中的软件中的任何一个。例如,组件可以是但不限于,在处理器上运行的进程、处理器、对象、可执行文件、执行的线程、程序和/或计算机。举例而言,在计算设备上运行的应用和计算设备两者都可以是组件。一个或多个组件可以存在于进程和/或执行的线程内,以及组件可以被局部化在一台计算机上和/或分布在两台或多于两台计算机之间。此外,这些组件可以从具有存储在其上的各种数据结构的各种计算机可读介质中执行。组件可以通过本地和/或远程进程的方式来进行通信,诸如根据具有一个或多个数据分组的信号(例如,来自一个组件的数据,所述组件与在本地系统、分布式系统中的另一个组件进行交互,和/或跨越诸如互联网的网络与其它系统通过信号的方式进行交互)。
在该描述中,术语“通信设备”、“无线设备”、“无线电话”、“无线通信设备”和“无线手机”可互换地使用。随着第三代(“3G”)无线技术和第四代(“4G”)的到来,更大的带宽可用性已经使得更多具有更多样化的无线能力的便携式计算设备成为可能。因此,便携式计算设备可以包括蜂窝电话、寻呼机、PDA、智能电话、导航设备或具有无线连接或链路的手持计算机。
图1示出了系统100的实施例,所述系统100使用非易失性存储器作为系统存储器。应当被理解的是系统100可以在任何计算设备中实现,包括个人电脑、工作站、服务器、便携式计算设备(PCD),诸如蜂窝电话、智能电话、便携式数字助理(PDA)、便携式游戏操纵台、导航设备、平板电脑、可穿戴设备,诸如运动手表,健康追踪设备等,或其它电池供电的、支持网络功能的设备。
系统100包括电耦合至一个或多个易失性存储器设备(例如,动态随机存取存储器(DRAM)104)、一个或多个非易失性存储器设备106的片上系统(SoC)102。例如,非易失性存储器可以包括磁性RAM设备、NAND闪存设备、NOR闪存设备、电阻式RAM设备、相变RAM设备、铁电RAM设备或任何其它非易失性存储器。非易失性存储器106被用作系统存储器,以及DRAM104被用作针对系统存储器的高速缓存。应当被理解的是,相对较低成本的非易失性存储器106可以被用作具有足够用来保持所有的用户的应用处于启动状态中的容量的系统存储器,用于实现改进的响应能力然而没有不令人满意的内存比率限制。
SoC 102可以包括各种经由SoC总线111相互连接的片上组件。在图1的实施例中,SoC 102包括请求存储器资源的一个或多个存储器客户端。存储器客户端可以包括一个或多个处理单元(例如,中央处理单元(CPU)108、图形处理单元(GPU)、数字信号处理器(DSP)等)、视频编码器或用于请求到存储器设备的读取/写入存取的其它客户端。SoC 102还可以包括片上存储器,诸如静态随机存取存储器(SRAM)110和只读存储器(ROM)112。
如在图1中进一步示出的,SoC 102可以包括各种用于控制对外部存储器设备的存取的存储器控制器。DRAM控制器122经由RAM总线电耦合至DRAM 104。DRAM控制器122电耦合至DRAM高速缓存控制器114。存储装置控制器120和118电耦合至非易失性存储器设备106。存储装置控制器120经由RAM总线电耦合至非易失性存储器控制器124,所述非易失性存储器控制器124控制对非易失性存储器的第一部分128的存取。存储装置控制器120还耦合至非易失性RAM控制器116,例如,所述非易失性RAM控制器116经由DRAM高速缓存总线耦合至DRAM高速缓存控制器114。存储装置控制器118经由存储装置总线电耦合至非易失性存储器控制器126,其控制对非易失性存储器的第二部分130的存取。
应当被理解的是,非易失性存储器的部分128和130可以包括非易失性存储器的分开的管芯或分开的设备。在图1和图2中示出的实施例中,存在分别经由RAM总线和存储装置总线来存取的两个物理地分开的非易失性存储装置设备。这可以通过阻止在两个存储装置设备之间的干扰来提供改善的性能。然而,在其它实施例中,存储器部分128和130可以包括单个设备的互相排斥的专用部分。
存储器部分128包括物理可寻址的系统存储器(即,RAM)。存储器部分130存储文件系统数据。DRAM高速缓存控制器114管理在DRAM 104中的内容,所述DRAM 104作为存储在存储器部分128中的系统存储器的高速缓存来操作。
如图2中示出的,应用或程序可以被安装以及存储在非易失性存储器设备106的存储器部分130中(例如,压缩程序202)。当压缩程序202由用户最初启动或打开时,程序可以解压缩成为可执行程序映像204以及从存储器部分128加载到DRAM 104中。以这种方式,系统100不直接地执行来自非易失性存储器106中的程序。替代地,它们被加载到DRAM高速缓存中。当程序被暂停或中止时,完整且充分的可执行程序映像204可在非易失性存储设备106的存储器部分128中获得。当中止的程序恢复时,如果其未存在于DRAM 104中,程序被从非易失性存储器设备106复制到DRAM 104。如果当前未在DRAM 104中高速缓存的程序需要恢复,则操作系统(O/S)113可以请求DRAM高速缓存控制器114来从非易失性存储器部分128预读取整个程序。非易失性RAM控制器116将随机存取请求转化为块事务。
在前台不活动的程序可以被暂停。当程序被暂停时,DRAM高速缓存控制器114可以冲洗任何“脏”高速缓存页面返回到在非易失性存储器设备126中的存储器部分128。当在页面内的任意部分已经由活动的程序进行了修改以及页面不再精确地匹配在非易失性系统存储器128中的相应的原始页面时,高速缓存页面可能变成“脏”。例如,非易失性系统存储器128可以包括最初地预读取到DRAM高速缓存104中的并由处理器执行的完整的程序。在运行程序的进程期间,如果处理器对DRAM高速缓存104做出任何改变,那么该改变可以是对非易失性系统存储器128做出的。然而,并非持续地更新非易失性系统存储器128,当暂停发生时来进行更新可以是更加高效的。应当被理解的是当可执行程序映像104被暂停时,其可以保持存在于DRAM高速缓存104中。随着新的程序被启动以及加载到DRAM高速缓存104中,DRAM高速缓存控制器114试图针对新的程序提供高速缓存空间,例如,可以冲洗所有与最近最少使用的程序相关联的“脏”页面到非易失性存储设备106中。非脏页面和只读页面可以被标记为未使用的,以便它们可以由另外的程序再使用。
图3是示出在系统100中实现的方法300的实施例的流程图。在方块302处,可执行程序映像204可以存储在非易失性随机存取存储器106的存储器部分128中。在方块304处,响应于对可执行程序204的最初启动,可执行程序204可以从非易失性存储器设备106加载到DRAM高速缓存104中。在方块306处,可执行程序204从DRAM高速缓存104而不是从非易失性系统存储器128来运行。在方块308处,响应于对可执行程序204的最初中止,系统100可以冲洗所有对应于可执行程序204的高速缓存页面到非易失性存储器设备106中。在方块310处,中止的可执行程序204可以被恢复。
图4是示出在系统100中实现的DRAM高速缓存结构的实施例的数据图。在系统初始化或启动期间,系统映像可以从非易失性存储器设备106复制到DRAM 104中。存储器映射402包括针对在NAND闪存设备106内的示例性的非易失性存储器部分128的系统存储器映射。存储器映射404包括针对示例性的DRAM设备104的存储器映射。存储器映射402包括分别与程序A、程序B、程序X和程序Z相对应的部分412、414、416和418。存储器映射402还包括与系统映像(例如,内核、操作系统、驱动程序、服务、库、后台程序等)相关联的部分410。
如在图4中所示的,存储器映射404包括高速缓存区域406和系统区域408。高速缓存区域406是针对高速缓存程序A、B、X和Z的。系统区域406是用于在启动处加载和锁定系统映像410的。在图4的示例中,系统区域410包括内核和操作系统436、内容保护区域434、信赖区域432以及可重定位的代码422、424、426、428和430。图4示出了存在于非易失性存储器106中的程序Z 418。当程序Z 418最初启动时,针对第一次运行,程序被加载到DRAM高速缓存104中。如果程序在前台不是活动的,则其可以被暂停。在暂停/中止状态期间,程序可以继续存在于DRAM 104中。然而,O/S 113可以认为中止/暂停的程序是更有可能用于驱逐的。在程序恢复状态期间,由DRAM高速缓存控制器114将程序从非易失性存储器106复制到DRAM104中。如果在DRAM 104中高速缓存空间是不足够的,那么DRAM高速缓存控制器114通知O/S113哪个(些)当前存在于DRAM高速缓存104中的程序可以被驱逐。例如,O/S 113可以使用手动的和/或自动的硬件维护操作来使得DRAM高速缓存控制器114能够冲洗被驱逐者。以这种方式,在DRAM 104中的空间可以被释放,以便新启动的程序可以存在于其上。当程序被迫停止时,O/S 113可以立即从DRAM 104驱逐程序。在低高速缓存存储器期间,当O/S 113驱逐程序时,程序的脏的部分(即,一个或多个高速缓存页面)可以被从DRAM 104冲洗到非易失性存储器106中。
在系统100中的程序的各个操作状态将参考图5-图9进行描述。图5是示出针对示例性的程序的状态转移的实施例的流程图。程序状态502涉及安装在非易失性存储器设备106中的程序(即,压缩程序202-图2)。当程序被第一次打开和启动时,程序从状态502转移到状态504。状态506涉及已经从非易失性存储器设备106加载到DRAM高速缓存104中的活动的程序。响应于系统输入508,活动的程序可以被暂停(状态510)和随后恢复(状态512)。如果程序响应于系统输入514来被停止(状态516),则流程返回至状态504。如果程序响应于系统输入518来被卸载(状态520),则流程返回状态502。应当理解的是,当程序处于状态504、506、512和516时,在DRAM 104中的空间可以被释放出来。例如,当程序被停止(状态516)、卸载(状态520)和/或暂停(状态510)时,DRAM 104可以被释放出来。图5示出了若干个示例性的操作状态中的一个操作状态。在其它实施例中,操作状态可以是更简单的(例如,消除停止程序状态516)或更复杂的(例如,取决于程序,在暂停状态510和恢复状态512之间增加与不同的质量、性能和/或功率消耗相对应的中间状态)。
图6是示出用于在系统100中最初启动程序的方法600的实施例的流程图。在方块602处,程序被第一次打开。如果在DRAM高速缓存104中没有足够的空间(判定方块604),则在方块606处将目前的程序从DRAM高速缓存104中逐出。如果存在足够的空间,则在方块608处程序可以被解压缩以及从非易失性存储器106加载到DRAM高速缓存104中。在方块610处,程序进程可以被创建和开始。
图7是示出用于暂停在DRAM高速缓存104上运行的程序的方法700的实施例的流程图。在方块702处,暂停序列被发起。如果暂停序列是程序第一次被暂停(判定方块704),则DRAM高速缓存控制器114可以冲洗针对整个程序的DRAM高速缓存页面到非易失性存储器106中(方块706)。DRAM高速缓存页面可以被维持在DRAM高速缓存104中。如果暂停序列不是程序第一次被暂停,则DRAM高速缓存控制器114可以仅冲洗包括转换状态的程序数据的脏的高速缓存页面(方块708)。
图8是示出用于恢复已暂停程序的方法800的实施例的流程图。在方块802处,恢复序列被发起。如果在DRAM高速缓存104中没有足够的空间(判定方块804),则DRAM高速缓存控制器114可以从DRAM高速缓存104驱逐目前的程序。然而,在方块808处,如果有足够的高速缓存容量,则DRAM高速缓存控制器114可以从非易失性存储器106预读取程序数据的一部分,直到整个程序被预读取为止。随着额外的部分被预读取以及需要更多的DRAM高速缓存空间,可以驱逐更多的程序(方块806)。
图9是示出用于从DRAM高速缓存104驱逐程序的方法900的实施例的流程图。在方块902处,驱逐序列被发起(方块806-图8)。在方块904处,系统100例如基于优先级、系统用量、应用类型等来确定最不重要的程序以驱逐。在方块906和908处,与驱逐程序相对应的“脏”高速缓存页面被冲洗到非易失性存储器中。在冲洗了所有的“脏”页面之后,所有余下的程序页面可以从DRAM高速缓存104中删除(方块910)。
图10是示出非易失性RAM控制器116的实施例的方块图。通常,非易失性RAM控制器提供在高速缓存总线115与存储装置总线117之间的接口(图1)。随机存取的读取和写入是经由高速缓存总线115来接收的,以及被转换成要经由存储装置总线117提供给非易失性存储器控制器124的块交易。在设备106内,DRAM高速缓存控制器114可以从非易失性存储器部分128发出读取序列,来将程序预读取至DRAM高速缓存104中,或发出写入序列来冲洗DRAM高速缓存104至非易失性存储器部分128中。读取或写入请求可以暂时地存储在请求队列1002中。独立的请求将被立即服务。然而,因为非易失性存储器是比DRAM速度要慢的闪存,所以请求队列1002可以保持多个请求。请求重新排序方块1006可以试图将请求合并至相同的NAND闪存页面(例如,16千字节)或块(例如,512千字节)中。请求重新排序方块1006可以区分读取对比写入和/或其它事务特征的优先次序。在重新排序之后,可以在地址转换方块1008中生成页面起始地址和页面数量。然后,存储装置交易生成方块1010可以构造和格式化将发送至存储装置总线117的命令。存储装置交易生成方块1010还可以追踪去往非易失性存储器设备106的未解决的交易。对于一些类型的闪存设备来说,交易可以是多队列的,允许多个未解决的闪存交易。对于其它类型的闪存设备来说,交易可以是单队列的,允许一个未解决的交易。响应队列1004返回控制和/或数据回到DRAM高速缓存控制器114。对于写入来说,仅可以使用用于指示成功或失败的确认。对于读取来说,可以返回确认加上已读数据。
图11是示出将非易失性随机存取系统存储器与DRAM程序高速缓存进行合并的系统1100的另一个实施例的方块图。SoC 102使用单个的直接存储器接口(DMA)总线1111来与外部集成多芯片存储器系统1102进行通信。存储器系统1102包括DRAM 104、非易失性存储器部分128和130,以及存储器控制器芯片1104。存储器控制器芯片1104包括在系统100中(图1)的SoC 102的部分中预先存在的某种功能。因为存储装置控制器120和118(图1)在通信中的角色已经由使用DMA总线1111的DMA接口1105和1106替代了,所以存储装置控制器120和118(图1)可以被消除。程序可以被安装到存储器部分130上以及然后第一次启动,并且加载到DRAM 104中。在第一次暂停之后,完整和充分的可执行程序映像204可以被写入到非易失性存储器部分128。程序不被直接地从非易失性存储器执行。当恢复时,如果不是已经存在的,则程序可以从非易失性存储器部分128复制到DRAM 104中。如果需要恢复的不是当前高速缓存到DRAM 104中的程序,那么O/S 113(经由DMA总线1111)可以请求DRAM高速缓存控制器114来从非易失性存储器部分128预读取整个程序,以及复制其到DRAM 104。在前台不活动的程序可以被暂停,这将冲洗任何脏页面返回至非易失性存储器部分128,而程序可能仍存在于DRAM 104中。当存在不足够的用以在CPU 108上执行程序的DRAM空闲空间时,DRAM高速缓存控制器114可以从DRAM 104冲洗与全部最近最少使用的程序相对应的所有脏页面到非易失性存储器128中。非脏页面和只读页面可以简单地被丢弃。SRAM 110可以被用作针对控制和数据两者的暂时的工作空间。DMA总线1111可以是并行或串行的,以及是利用用以提供具有低延时的高数据吞吐量的任何类型的技术来实现的。
如上文所述的,系统100可以被并入任何期望的计算系统。图12示出了并入示例性的便携式计算设备(PCD)1200中的系统100。将易于理解的是,系统100的某些组件被包括在SoC 322上,而其它组件(例如,DRAM 104)是耦合到SoC 322的外部组件。SoC 322可以包括多内核CPU 1202和其它处理单元(例如,图形处理单元(GPU)等)。多内核CPU 1202可以包括第零内核1210、第一内核1212以及第N内核1214。
显示控制器328和触摸屏幕控制器330可以被耦合至CPU 1202。继而,在片上系统322外部的触摸屏幕显示器1206可以被耦合至显示控制器328和触摸屏幕控制器330。
图12还示出了耦合至多内核CPU 1202的视频编码器334,例如逐行倒相(PAL)编码器、按顺序传送彩色与存储(SECAM)编码器、或国家电视标准委员会(NTSC)编码器。进一步地,视频放大器336耦合至视频编码器334和触摸屏幕显示器1206。此外,视频端口338耦合至视频放大器336。如在图12中所示,通用串行总线(USB)控制器340耦合至多内核CPU1202。此外,USB端口342耦合至USB控制器340。存储器104可以耦合至SoC 322(如在图1中所示)。
进一步地,如在图12中所示,数字照相机348可以耦合至多内核CPU 1202。在示例性的方面中,数字照相机348是电荷耦合设备(CCD)照相机或互补金属氧化物半导体(CMOS)照相机。
如在图12中还示出的,立体声音频编码解码器(CODEC)350可以耦合至多内核CPU1202。此外,音频放大器352可以耦合至立体声音频CODEC 350。在示例性的方面中,第一立体声扬声器354和第二立体声扬声器356耦合至音频放大器352。图12示出了也可以耦合至立体声扬声器CODEC 350的扩音器放大器358。此外,扩音器360可以耦合至扩音器放大器358。在具体的方面中,频率调制(FM)无线电调谐器362可以耦合至立体声音频CODEC 350。此外,FM天线364耦合至FM无线电调谐器362。进一步地,立体声耳机366可以耦合至立体声音频CODEC 350。
图12还示出了可以耦合至多内核CPU 1202的射频(RF)收发机368。RF开关370可以耦合至RF收发机368和RF天线372。小型键盘204可以耦合至多内核CPU 1202。此外,具有扩音器376的单声道耳机可以耦合至多内核CPU 1202。进一步地,振动器设备378可以耦合至多内核CPU 1202。
图12还示出了可以耦合至片上系统322的电源供给380。在具体的方面中,电源供给380是向PCD 1200的需要电源的各个组件提供电力的直流(DC)电源供给。此外,在具体的方面中,电源供给是可充电的DC电池或源自连接至交流电(AC)电源的AC到DC转换器的DC电源供给。
图12还指示PCD 1200还可以包括网卡388,所述网卡388可以用于接入数据网络,例如本地局域网、个域网或任何其它网络。网卡388可以是蓝牙网卡,WiFi网卡、个域网(PAN)卡、个域网超低功率技术(PeANUT)网卡、电视/电缆/卫星调谐器或本领域中公知的任何其它网卡。进一步地,网卡388可以并入芯片中,即,网卡388可以是在芯片中的完整解决方案,以及可以不是分开的网卡388。
如在图12中所描绘的,触摸屏幕显示器1206、视频端口338、USB端口342、照相机348、第一立体声扬声器354、第二立体声扬声器356、扩音器360、FM天线364、立体声头戴式耳机366、RF开关370、RF天线372、小型键盘374、单声道耳机376、振动器378以及电源供给380可以是在片上系统322外部的。
应当被理解的是,在本文中所描述的方法步骤中的一个或多个方法步骤可以作为计算机程序指令存储在存储器中,诸如上文所描述的模块。这些指令可以由任何适合的处理器与用以执行本文中所描述的方法的相应的模块相组合或合作来执行。
对于本发明以如所描述的来运行来说,在本说明书中描述的在过程中的某些步骤或处理流程自然地优先于其它。然而,如果所描述的步骤的顺序或序列并不改变本发明的功能,则本发明并不受限于所描述的步骤的顺序。换言之,被认识到的是,在不背离本发明的保护范围和精神的情况下,一些步骤可以在其它步骤之前、在其它步骤之后或与其它步骤并行(实质上与其同时地)来执行。在一些实例中,在不背离本发明的情况下,某些步骤可以被省略或不执行。进一步地,诸如“其后”、“然后”、“下一个”等的词语并不旨在限制步骤的顺序。贯穿示例性的方法的描述,这些词语被简单地用来引导读者。
此外,例如基于本说明书中的流程图和相关联的描述,编程领域的普通技术人员能够不费力地编写计算机代码或识别适当的硬件和/或电路以实现所公开的发明。
因此,对于充分地理解如何来制造和使用本发明来说,公开程序代码指令的具体的集合或详细的硬件设备被认为是不必要的。在上文的描述中与可以说明各个过程流程的附图相结合,以更多的细节来解释了所要求保护的计算机实现的过程的发明性的功能。
在一个或多个示例性的方面,所描述的功能可以在硬件、软件、固件或其任意组合中实现。如果在软件中实现,则功能可以作为一个或多个指令或代码存储在计算机可读介质或在其上进行传输。计算机可读介质包括计算机存储介质和通信介质两者,所述通信介质包括促进计算机程序从一处传送到另一处的任意介质。存储介质可以是可以由计算机存取的任何可用介质。举例而言,但不是限制,这种计算机可读介质能够包括RAM、ROM、EEPROM、NAND闪存、NOR闪存、M-RAM、P-RAM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁存储装置设备、或能够用于以指令或数据结构的形式携带或存储期望的程序代码并且能够由计算机存取的任何其它介质。
如文中所使用的,磁盘和光盘包括压缩光盘(CD)、激光光盘、光盘、数字通用磁盘(DVD)、软盘、蓝光光盘,其中磁盘通常磁性地复制数据,而光盘则利用激光来光学地复制数据。上述内容的组合也应该包括在计算机可读介质的保护范围之内。
对于本领域普通技术人员来说,在不背离本发明内容的精神和保护范围的情况下,关于本发明的替代性的实施例将是显然的。因此,虽然详细地说明和描述了所选择的方面,但是将理解的是在不背离如由下文的权利要求书所限定的本发明的精神和保护范围的情况下,可以在其中做出各种置换和修改。

Claims (30)

1.一种利用易失性存储器程序高速缓存来提供非易失性系统存储器的方法,所述方法包括:
在非易失性随机存取存储器中存储可执行程序;
响应于对所述可执行程序的最初启动,将所述可执行程序从所述非易失性随机存取存储器加载到易失性存储器高速缓存中;
从所述易失性存储器高速缓存中执行所述可执行程序;以及
响应于对所述可执行程序的最初中止,将与所述可执行程序相对应的高速缓存页面冲洗到所述非易失性随机存取存储器中。
2.根据权利要求1所述的方法,还包括:
恢复所中止的可执行程序。
3.根据权利要求2所述的方法,其中,所述恢复所中止的可执行程序包括:
确定所述可执行程序已经被从所述易失性存储器高速缓存中逐出;以及
从所述非易失性随机存取存储器中预读取所述可执行程序到所述易失性存储器高速缓存。
4.根据权利要求2所述的方法,还包括:
响应于对所述可执行程序的随后的中止,将状态转换程序数据冲洗到所述非易失性随机存取存储器中。
5.根据权利要求1所述的方法,其中,所述将所述可执行程序从所述非易失性随机存取存储器加载到所述易失性存储器高速缓存中包括:
从所述易失性存储器高速缓存中驱逐另一个可执行程序以创造空闲的空间。
6.根据权利要求1所述的方法,其中,所述易失性存储器高速缓存包括动态随机存取存储器(DRAM)设备。
7.根据权利要求1所述的方法,其中,所述非易失性随机存取存储器包括磁性RAM设备、NAND闪存设备、NOR闪存设备、电阻式RAM设备、参数RAM设备以及铁电体RAM设备中的一者。
8.一种用于利用易失性存储器程序高速缓存来提供非易失性系统存储器的系统,所述系统包括:
用于在非易失性存储器中安装可执行程序的单元;
用于响应于对所述可执行程序的最初启动,将所述可执行程序从所述非易失性存储器加载到易失性存储器高速缓存中的单元;
用于从所述易失性存储器高速缓存中执行所述可执行程序的单元;以及
用于响应于对所述可执行程序的最初中止,将与所述可执行程序相对应的高速缓存页面冲洗到所述非易失性存储器中的单元。
9.根据权利要求8所述的系统,还包括:
用于恢复所中止的可执行程序的单元。
10.根据权利要求8所述的系统,其中,所述用于恢复所中止的可执行程序的单元包括:
用于确定所述可执行程序已经被从所述易失性存储器高速缓存中逐出的单元;以及
用于从所述非易失性存储器中预读取所述可执行程序到所述易失性存储器高速缓存的单元。
11.根据权利要求9所述的系统,还包括:
用于响应于对所述可执行程序的随后的中止,将状态转换程序数据冲洗到所述非易失性存储器中的单元。
12.根据权利要求8所述的系统,其中,所述用于将所述可执行程序从所述非易失性存储器加载到所述易失性存储器高速缓存中的单元包括:
用于从所述易失性存储器高速缓存中驱逐另一个可执行程序以创造空闲空间的单元。
13.根据权利要求8所述的系统,其中,所述易失性存储器高速缓存包括动态随机存取存储器(DRAM)设备。
14.根据权利要求8所述的系统,其中,所述非易失性存储器包括磁性随机存取存储器(RAM)设备、NAND闪存设备、NOR闪存设备、电阻式RAM设备、参数RAM设备以及铁电体RAM设备中的一者。
15.一种体现在计算机可读介质中以及由处理器执行用于利用易失性存储器程序高速缓存来管理非易失性系统存储器的计算机程序,所述计算机程序包括被配置为进行以下操作的逻辑单元:
在非易失性系统存储器中存储可执行程序;
响应于对所述可执行程序的最初启动,将所述可执行程序从所述非易失性系统存储器加载到易失性存储器高速缓存中;
从所述易失性存储器高速缓存中执行所述可执行程序;以及
响应于对所述可执行程序的最初中止,将与所述可执行程序相对应的高速缓存页面冲洗到所述非易失性系统存储器中。
16.根据权利要求14所述的计算机程序,还包括:
被配置为恢复所中止的可执行程序的逻辑单元。
17.根据权利要求16所述的计算机程序,其中,所述被配置为恢复所中止的可执行程序的逻辑单元包括:
被配置为确定所述可执行程序已经被从所述易失性存储器高速缓存中逐出的逻辑单元;以及
被配置为从所述非易失性系统存储器中预读取所述可执行程序到所述易失性存储器高速缓存的逻辑单元。
18.根据权利要求16所述的计算机程序,还包括:
被配置为响应于对所述可执行程序的随后的中止,将状态转换程序数据冲洗到所述非易失性系统存储器中的逻辑单元。
19.根据权利要求15所述的计算机程序,其中,所述被配置为将所述可执行程序从所述非易失性系统存储器加载到所述易失性存储器高速缓存中的逻辑单元包括:
被配置为从所述易失性存储器高速缓存中驱逐另一个可执行程序以创造空闲的空间的逻辑单元。
20.根据权利要求15所述的计算机程序,其中,所述易失性存储器高速缓存包括动态随机存取存储器(DRAM)设备。
21.根据权利要求15所述的计算机程序,其中,所述非易失性系统存储器包括磁性随机存取存储器(RAM)设备、NAND闪存设备、NOR闪存设备、电阻式RAM设备、参数RAM设备,以及铁电体RAM设备中的一者。
22.一种计算机系统,包括:
用于存储可执行程序的非易失性随机存取存储器(RAM)设备;
易失性存储器高速缓存;以及
片上系统(SoC),其电耦合至所述非易失性RAM设备和所述易失性存储器高速缓存,所述SoC包括处理器和存储器控制器,所述存储器控制器被配置为:
响应于对所述可执行程序的最初启动,将所述可执行程序从所述非易失性RAM设备加载到所述易失性存储器高速缓存中;以及
响应于对所述可执行程序的最初中止,将与所述可执行程序相对应的高速缓存页面从所述易失性存储器高速缓存冲洗到所述非易失性RAM设备中。
23.根据权利要求22所述的计算机系统,其中,所述存储器控制器还被配置为恢复所中止的可执行程序。
24.根据权利要求23所述的计算机系统,其中,所述存储器控制器通过以下操作来恢复所中止的可执行程序:
确定所述可执行程序已经被从所述易失性存储器高速缓存中逐出;以及
从所述非易失性RAM设备中预读取所述可执行程序到所述易失性存储器高速缓存。
25.根据权利要求22所述的计算机系统,其中,所述存储器控制器响应于对所述可执行程序的随后的中止,来将状态转换程序数据冲洗到所述非易失性随机存取存储器中。
26.根据权利要求22所述的计算机系统,其中,所述存储器控制器在将所述可执行程序从所述非易失性随机存取存储器加载之前,从所述易失性存储器高速缓存中驱逐另一个可执行程序以创造空闲的空间。
27.根据权利要求22所述的计算机系统,其中,所述易失性存储器高速缓存包括动态随机存取存储器(DRAM)设备。
28.根据权利要求22所述的计算机系统,其中,所述非易失性RAM设备包括磁性RAM设备、NAND闪存设备、NOR闪存设备、电阻式RAM设备、参数RAM设备,以及铁电体RAM设备中的一者。
29.根据权利要求22所述的计算机系统并入便携式通信设备中。
30.根据权利要求29所述的计算机系统,其中,所述便携式通信设备包括智能手机和平板电脑中的一者。
CN201680078338.6A 2016-01-11 2016-12-09 利用dram程序高速缓存的非易失性随机存取系统存储器 Pending CN108475235A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/993,045 US9928168B2 (en) 2016-01-11 2016-01-11 Non-volatile random access system memory with DRAM program caching
US14/993,045 2016-01-11
PCT/US2016/065986 WO2017123357A1 (en) 2016-01-11 2016-12-09 Non-volatile random access system memory with dram program caching

Publications (1)

Publication Number Publication Date
CN108475235A true CN108475235A (zh) 2018-08-31

Family

ID=57708798

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680078338.6A Pending CN108475235A (zh) 2016-01-11 2016-12-09 利用dram程序高速缓存的非易失性随机存取系统存储器

Country Status (3)

Country Link
US (1) US9928168B2 (zh)
CN (1) CN108475235A (zh)
WO (1) WO2017123357A1 (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110291586A (zh) * 2019-05-17 2019-09-27 长江存储科技有限责任公司 具有静态随机存取存储器的三维存储器件的高速缓存程序操作
WO2020052323A1 (zh) * 2018-09-13 2020-03-19 华为技术有限公司 数据存储方法、装置及服务器
CN111177029A (zh) * 2018-11-12 2020-05-19 创义达科技股份有限公司 用于管理软件定义的永久性存储器的系统及方法
US10811071B1 (en) 2019-05-17 2020-10-20 Yangtze Memory Technologies Co., Ltd. Three-dimensional memory device with static random-access memory
CN113099286A (zh) * 2021-03-31 2021-07-09 深圳创维-Rgb电子有限公司 一种基于epg统一节目推荐方法及系统
CN113721839A (zh) * 2021-07-23 2021-11-30 平头哥(上海)半导体技术有限公司 用于处理图数据的计算系统和存储分层方法
CN114116550A (zh) * 2020-08-26 2022-03-01 美光科技公司 用于驱逐程序的缓冲器的动态分配

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9933953B1 (en) * 2016-06-30 2018-04-03 EMC IP Holding Company LLC Managing copy sessions in a data storage system to control resource consumption
US10855766B2 (en) * 2017-09-28 2020-12-01 Intel Corporation Networking switch with object storage system intelligence
KR102348693B1 (ko) * 2017-10-24 2022-01-10 삼성전자주식회사 어플리케이션 프로그램을 제어하는 전자 장치 및 그 제어 방법
KR102353859B1 (ko) * 2017-11-01 2022-01-19 삼성전자주식회사 컴퓨팅 장치 및 비휘발성 듀얼 인라인 메모리 모듈
CN110058964B (zh) * 2018-01-18 2023-05-02 伊姆西Ip控股有限责任公司 数据恢复方法、数据恢复系统和计算机可读介质
CN110096452B (zh) * 2018-01-31 2024-05-28 北京忆恒创源科技股份有限公司 非易失随机访问存储器及其提供方法
US11269774B2 (en) 2018-10-15 2022-03-08 Texas Instruments Incorporated Delayed snoop for improved multi-process false sharing parallel thread performance
US11537521B2 (en) * 2019-06-05 2022-12-27 Samsung Electronics Co., Ltd. Non-volatile dual inline memory module (NVDIMM) for supporting dram cache mode and operation method of NVDIMM
FR3107975B1 (fr) * 2020-03-05 2022-12-02 Idemia France Procédé mis en œuvre dans un module à circuit intégré, module à circuit intégré correspondant, système comportant un tel module et programme d’ordinateur associé

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040078509A1 (en) * 2002-10-21 2004-04-22 Malueg Michael D. System and method for executing binary images
US20070101077A1 (en) * 2005-10-28 2007-05-03 International Business Machines Corporation Mirroring system memory in non-volatile random access memory (NVRAM) for fast power on/off cycling
US20080263302A1 (en) * 2007-04-17 2008-10-23 Stmicroelectronics S.R.L Non-volatile memory circuit, system, and method
CN101506776A (zh) * 2005-04-15 2009-08-12 微软公司 直插式非易失性存储器盘读取高速缓存和写入缓冲器
US20100299513A1 (en) * 2009-05-22 2010-11-25 Samsung Electronics Co., Ltd. Memory apparatus and method therefor
US20110004728A1 (en) * 2009-07-02 2011-01-06 Ocz Technology Group, Inc. On-device data compression for non-volatile memory-based mass storage devices
US20120096227A1 (en) * 2010-10-19 2012-04-19 Leonid Dubrovin Cache prefetch learning
US20120297147A1 (en) * 2011-05-20 2012-11-22 Nokia Corporation Caching Operations for a Non-Volatile Memory Array
US20130290760A1 (en) * 2011-10-01 2013-10-31 Barnes Cooper Fast platform hibernation and resumption of computing systems
CN103999038A (zh) * 2011-12-28 2014-08-20 英特尔公司 用于在易失性存储器与非易失性存储器之间分布代码和数据存储的方法和设备
CN104011690A (zh) * 2011-12-29 2014-08-27 英特尔公司 具有直接存取的多级存储器
US20140304475A1 (en) * 2011-12-20 2014-10-09 Raj K Ramanujan Dynamic partial power down of memory-side cache in a 2-level memory hierarchy
US20150324120A1 (en) * 2014-05-07 2015-11-12 Sandisk Technologies Inc. Method and Computing Device for Controlling Bandwidth of Swap Operations

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040230784A1 (en) * 2003-05-12 2004-11-18 Cohen Eugene M. Concurrent program loading and execution
US20040250147A1 (en) * 2003-06-03 2004-12-09 Christopher Chang Uninterrupted system operation
US7412565B2 (en) 2003-08-18 2008-08-12 Intel Corporation Memory optimization for a computer system having a hibernation mode
US20080270811A1 (en) * 2007-04-26 2008-10-30 Super Talent Electronics Inc. Fast Suspend-Resume of Computer Motherboard Using Phase-Change Memory
US8209463B2 (en) 2008-02-05 2012-06-26 Spansion Llc Expansion slots for flash memory based random access memory subsystem
US8332572B2 (en) 2008-02-05 2012-12-11 Spansion Llc Wear leveling mechanism using a DRAM buffer
US8738840B2 (en) 2008-03-31 2014-05-27 Spansion Llc Operating system based DRAM/FLASH management scheme
US9223642B2 (en) 2013-03-15 2015-12-29 Super Talent Technology, Corp. Green NAND device (GND) driver with DRAM data persistence for enhanced flash endurance and performance
KR20120079682A (ko) * 2011-01-05 2012-07-13 삼성전자주식회사 디램 캐시를 포함하는 메모리 장치 및 이를 포함하는 시스템
WO2013089685A1 (en) * 2011-12-13 2013-06-20 Intel Corporation Enhanced system sleep state support in servers using non-volatile random access memory
US9147464B1 (en) * 2012-05-15 2015-09-29 Adesto Technologies Corporation System architecture with multiple memory types, including programmable impedance memory elements
US9195575B2 (en) 2013-05-17 2015-11-24 Coherent Logix, Incorporated Dynamic reconfiguration of applications on a multi-processor embedded system
US9507675B2 (en) 2014-04-15 2016-11-29 Qualcomm Incorporated Systems and methods for recovering from uncorrected DRAM bit errors
JP5901698B2 (ja) * 2014-06-17 2016-04-13 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation メモリ管理方法

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040078509A1 (en) * 2002-10-21 2004-04-22 Malueg Michael D. System and method for executing binary images
CN101506776A (zh) * 2005-04-15 2009-08-12 微软公司 直插式非易失性存储器盘读取高速缓存和写入缓冲器
US20070101077A1 (en) * 2005-10-28 2007-05-03 International Business Machines Corporation Mirroring system memory in non-volatile random access memory (NVRAM) for fast power on/off cycling
US20080263302A1 (en) * 2007-04-17 2008-10-23 Stmicroelectronics S.R.L Non-volatile memory circuit, system, and method
US20100299513A1 (en) * 2009-05-22 2010-11-25 Samsung Electronics Co., Ltd. Memory apparatus and method therefor
US20110004728A1 (en) * 2009-07-02 2011-01-06 Ocz Technology Group, Inc. On-device data compression for non-volatile memory-based mass storage devices
US20120096227A1 (en) * 2010-10-19 2012-04-19 Leonid Dubrovin Cache prefetch learning
US20120297147A1 (en) * 2011-05-20 2012-11-22 Nokia Corporation Caching Operations for a Non-Volatile Memory Array
US20130290760A1 (en) * 2011-10-01 2013-10-31 Barnes Cooper Fast platform hibernation and resumption of computing systems
US20140304475A1 (en) * 2011-12-20 2014-10-09 Raj K Ramanujan Dynamic partial power down of memory-side cache in a 2-level memory hierarchy
CN103999038A (zh) * 2011-12-28 2014-08-20 英特尔公司 用于在易失性存储器与非易失性存储器之间分布代码和数据存储的方法和设备
CN104011690A (zh) * 2011-12-29 2014-08-27 英特尔公司 具有直接存取的多级存储器
US20150324120A1 (en) * 2014-05-07 2015-11-12 Sandisk Technologies Inc. Method and Computing Device for Controlling Bandwidth of Swap Operations

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020052323A1 (zh) * 2018-09-13 2020-03-19 华为技术有限公司 数据存储方法、装置及服务器
US11403227B2 (en) 2018-09-13 2022-08-02 Huawei Technologies Co., Ltd. Data storage method and apparatus, and server
CN111177029B (zh) * 2018-11-12 2022-06-21 创义达科技股份有限公司 用于管理软件定义的永久性存储器的系统及方法
CN111177029A (zh) * 2018-11-12 2020-05-19 创义达科技股份有限公司 用于管理软件定义的永久性存储器的系统及方法
US10811071B1 (en) 2019-05-17 2020-10-20 Yangtze Memory Technologies Co., Ltd. Three-dimensional memory device with static random-access memory
US11200935B2 (en) 2019-05-17 2021-12-14 Yangtze Memory Technologies Co., Ltd. Three-dimensional memory device with static random-access memory
CN110291586B (zh) * 2019-05-17 2020-10-30 长江存储科技有限责任公司 具有静态随机存取存储器的三维存储器件的高速缓存程序操作
CN110291586A (zh) * 2019-05-17 2019-09-27 长江存储科技有限责任公司 具有静态随机存取存储器的三维存储器件的高速缓存程序操作
US11474739B2 (en) 2019-05-17 2022-10-18 Yangtze Memory Technologies Co., Ltd. Cache program operation of three-dimensional memory device with static random-access memory
US11735243B2 (en) 2019-05-17 2023-08-22 Yangtze Memory Technologies Co., Ltd. Three-dimensional memory device with static random-access memory
CN114116550A (zh) * 2020-08-26 2022-03-01 美光科技公司 用于驱逐程序的缓冲器的动态分配
CN113099286A (zh) * 2021-03-31 2021-07-09 深圳创维-Rgb电子有限公司 一种基于epg统一节目推荐方法及系统
CN113099286B (zh) * 2021-03-31 2023-10-31 深圳创维-Rgb电子有限公司 一种基于epg统一节目推荐方法及系统
CN113721839A (zh) * 2021-07-23 2021-11-30 平头哥(上海)半导体技术有限公司 用于处理图数据的计算系统和存储分层方法
CN113721839B (zh) * 2021-07-23 2024-04-19 阿里巴巴达摩院(杭州)科技有限公司 用于处理图数据的计算系统和存储分层方法

Also Published As

Publication number Publication date
WO2017123357A1 (en) 2017-07-20
US20170199814A1 (en) 2017-07-13
US9928168B2 (en) 2018-03-27

Similar Documents

Publication Publication Date Title
CN108475235A (zh) 利用dram程序高速缓存的非易失性随机存取系统存储器
WO2018059079A1 (zh) 一种内存管理方法和装置
TWI512676B (zh) 用於顯示子系統之混和顯示圖框緩衝器
US20120246390A1 (en) Information processing apparatus, program product, and data writing method
JP6276470B2 (ja) ポータブルコンピューティングデバイスの揮発性メモリのスタンバイ電力を低減するためのシステムおよび方法
CN107533442A (zh) 用于对异构系统存储器中的存储器功率消耗进行优化的系统和方法
JP2014116017A (ja) モバイル装置とアプリケーションプロセッサ及びそのデータ管理方法
CN110704161B (zh) 虚拟机创建方法、装置及计算机设备
EP4239477A1 (en) Virtual memory management method and electronic device
JP2017516123A (ja) Dramメモリシステムにおいて省電力静止画像表示リフレッシュを提供するためのシステムおよび方法
JP2017519294A (ja) フラッシュメモリベースストレージデバイスのマルチホスト電力コントローラ(mhpc)
US20110099149A1 (en) Adaptive logging apparatus and method
CN106575273A (zh) 用于扩展片上系统的存储器的系统和方法
CN114579055B (zh) 磁盘存储方法、装置、设备及介质
WO2023179742A1 (zh) 数据访问方法及系统、硬件卸载设备、电子设备及介质
CN109416662A (zh) 使用存储使用率环的选择性闪存压缩/解压缩
CN112988388A (zh) 一种内存页管理方法及计算设备
JP6674460B2 (ja) 不均一メモリアーキテクチャにおける改善されたレイテンシのためのシステムおよび方法
JP2018502379A (ja) 不均一メモリアーキテクチャにおける改善されたレイテンシを可能にするためのシステムおよび方法
US10579516B2 (en) Systems and methods for providing power-efficient file system operation to a non-volatile block memory
CN107251000A (zh) 片上系统中的动态存储器利用
WO2023185684A1 (zh) 一种应用程序的进程查杀方法及电子设备
CN108235757A (zh) 一种操作系统屏幕锁定的方法、装置及电子设备
CN114090489B (zh) 基于virtio的IO扩展方法及装置
CN112925654B (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: 20180831