CN114303137A - 使用主机存储器缓冲器的存储器叠加 - Google Patents

使用主机存储器缓冲器的存储器叠加 Download PDF

Info

Publication number
CN114303137A
CN114303137A CN202080022052.2A CN202080022052A CN114303137A CN 114303137 A CN114303137 A CN 114303137A CN 202080022052 A CN202080022052 A CN 202080022052A CN 114303137 A CN114303137 A CN 114303137A
Authority
CN
China
Prior art keywords
memory
overlay
memory buffer
executable instructions
buffer
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
CN202080022052.2A
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.)
Micron Technology Inc
Original Assignee
Micron Technology 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 Micron Technology Inc filed Critical Micron Technology Inc
Publication of CN114303137A publication Critical patent/CN114303137A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • G06F3/0611Improving I/O performance in relation to response time
    • 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
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • 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
    • G06F3/0673Single storage device
    • 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
    • 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44568Immediately runnable code
    • G06F9/44578Preparing or optimising for loading

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)
  • Memory System (AREA)
  • Computer And Data Communications (AREA)

Abstract

将两个或更多个叠加区段从存储器子系统的非易失性存储器装置复制到驻留于与所述存储器子系统通信的主机系统的第一易失性存储器装置上的第一存储器缓冲器。每一叠加区段包含一组相应的可执行指令。将第一叠加区段从所述主机存储器缓冲器复制到驻留于所述存储器子系统的第二易失性存储器装置上的第二存储器缓冲器。执行驻留于所述第二存储器缓冲器中的所述第一叠加区段中所包含的第一组可执行指令。将第二叠加区段从所述主机存储器缓冲器复制到所述第二存储器缓冲器。执行驻留于所述第二存储器缓冲器中的所述第二叠加区段中所包含的第二组可执行指令。

Description

使用主机存储器缓冲器的存储器叠加
技术领域
本公开的实施例大体上涉及存储器子系统,且更明确来说,涉及使用主机存储器缓冲器的存储器叠加。
背景技术
存储器子系统可包含存储数据的一或多个存储器装置。存储器装置可为例如非易失性存储器装置及易失性存储器装置。一般来说,主机系统可利用存储器子系统来将数据存储在存储器装置处及从所述存储器装置检索数据。
附图说明
从下文给出的详细描述及从本公开的各个实施例的附图将更加完全地理解本公开。然而,图式不应理解为将本公开限于特定实施例,而仅是为了解释及理解。
图1说明根据本公开的一些实施例的包含存储器子系统的实例计算环境。
图2说明根据本公开的一些实施例的使用主机存储器缓冲器的存储器叠加。
图3是根据本公开的一些实施例的用于使用主机存储器缓冲器执行存储器叠加的实例方法的流程图。
图4是根据本公开的一些实施例的用于使用主机存储器缓冲器执行存储器叠加的另一实例方法的流程图。
5A到C说明根据本公开的一些实施例的使用主机存储器缓冲器在存储器子系统处进行的存储器叠加。
图6是本公开的实施例可操作于其中的实例计算机系统的框图。
具体实施方式
本公开的方面涉及用于使用主机系统存储器缓冲器进行存储器叠加的系统及方法。存储器子系统可为存储装置、存储器模块或存储装置与存储器模块的混合。下文结合图1描述存储装置及存储器模块的实例。一般来说,主机系统可利用包含一或多个存储器组件(在下文也称为“存储器装置”)的存储器子系统。主机系统可提供将存储在存储器子系统处的数据且可请求将从存储器子系统检索的数据。
存储器子系统可包含每一者与不同存储器延时相关联的多个存储器装置。存储器存取延时是指服务于对存储在存储器装置处的数据或代码的请求所经过的时间量。在一些常规系统中,存储器子系统控制器可将存储于展现高存取延时的存储器装置(称为高延时存储器装置)处的第一代码区段复制到与较低存取延时相关联的存储器装置(称为低延时存储器装置)。举例来说,低延时存储器装置可为动态随机存取存储器(DRAM)装置,且高延时存储器装置可为非易失性存储器装置(例如快闪存储器装置)。存储器子系统控制器可执行驻留于低延时存储器装置上的第一代码区段。在一些例子中,第一代码区段可包含对存储于高延时存储器装置处的第二代码区段的引用(即跳转指令)。存储器子系统控制器可从低延时存储器装置移除第一代码区段且将第二代码区段从高延时装置复制到低延时装置。接着,存储器子系统控制器可执行驻留于低延时存储器装置上的第二代码区段。此技术称为存储器叠加(memory overlay/memory overlaying)。
存储器叠加可用于减小整体存储器子系统延时。举例来说,在包含DRAM装置的存储器子系统中,存储器子系统控制器可将存储于非易失性存储器装置(例如NAND快闪存储器装置)处的代码区段叠加到DRAM装置。然而,一些存储器子系统不包含DRAM装置且代替地仅包含静态RAM(SRAM)装置或紧耦合存储器(TCM)装置。SRAM装置及/或TCM装置的存储容量可显著小于非易失性存储器装置的存储容量。因此,可在给定时间将存储于高延时存储器装置处的仅一小部分代码复制到低延时存储器装置。存储器子系统控制器执行大量的复制操作来在存储器子系统操作期间将代码从高延时存储器装置复制到低延时存储器装置。由于大量的复制操作及与高延时存储器装置相关联的高延时,整体存储器子系统延时的减小最好是最小的。
本公开的方面通过具有在存储器子系统操作期间使用主机系统的存储器缓冲器(在本文中称为主机存储器缓冲器)来促进存储器叠加的存储器子系统来解决上述及其它缺点。主机存储器缓冲器可为与低于高延时存储器装置(例如非易失性存储器装置)的延时相关联的存储器装置的部分。举例来说,主机存储器缓冲器可驻留于主机系统的DRAM装置上。
例如非易失性存储器装置的高延时存储器装置可存储多个叠加区段,每一叠加区段包含在存储器子系统操作期间将执行的一或多个代码区段。每一代码区段可包含由存储器子系统控制器执行的一组一或多个可执行指令。在存储器子系统初始化期间,存储器子系统控制器可将存储于高延时存储器装置处的叠加区段的至少一部分复制到主机存储器缓冲器。响应于确定特定代码区段将由存储器子系统控制器执行,存储器子系统控制器可识别包含特定代码区段的第一叠加区段并确定第一叠加区段是否存在于主机存储器缓冲器中。响应于确定第一叠加区段存在于主机存储器缓冲器中,存储器子系统控制器可将第一叠加区段复制到驻留于存储器子系统的低延时存储器装置(例如SRAM装置、TCM装置等)上的缓冲器(称为存储器子系统缓冲器)。存储器子系统控制器可从存储器子系统缓冲器执行包含于第一叠加区段中的特定代码区段。存储器子系统控制器可确定另一代码区段将由存储器子系统控制器执行。响应于确定包含代码区段的第二叠加区段存在于主机存储器缓冲器中,存储器子系统控制器可从存储器子系统缓冲器移除第一叠加区段且将第二叠加区段从主机存储器缓冲器复制到存储器子系统缓冲器。接着,存储器子系统控制器可从存储器子系统缓冲器执行包含于第二叠加区段中的代码区段。
本公开的优点包含(但不限于)存储器子系统的整体系统延时减小及整体存储器子系统性能增加。存储于高延时存储器装置(例如非易失性存储器装置)处的叠加区段在存储器子系统初始化期间复制到低延时存储器装置(例如DRAM装置)的主机存储器缓冲器。在存储器子系统操作期间,存储器子系统控制器可将叠加区段从主机存储器缓冲器(而非高延时存储器装置)复制到存储器子系统缓冲器。通过从主机存储器缓冲器(而非高延时存储器装置)复制数据,高延时存储器装置与存储器子系统缓冲器之间的复制操作的数目显著减小,借此减小整体系统延时并增加整体系统性能。此外,由于主机存储器缓冲器驻留于低延时存储器装置(例如DRAM存储器装置)上,可存取存储于主机存储器缓冲器处的数据且可比从高延时存储器装置复制到存储器子系统缓冲器的数据更快地将其复制到存储器子系统缓冲器,借此进一步减小整体系统延时并增加整体系统性能。
图1说明根据本公开的一些实施例的包含存储器子系统110的实例计算系统100。存储器子系统110可包含媒体,例如一或多个易失性存储器装置(例如存储器装置140)、一或多个非易失性存储器装置(例如存储器装置130)或此类装置的组合。
存储器子系统110可为存储装置、存储器模块或存储装置与存储器模块的混合。存储装置的实例包含固态驱动器(SSD)、快闪驱动器、通用串行总线(USB)快闪驱动器、嵌入式多媒体控制器(eMMC)驱动器、通用快闪存储(UFS)驱动器、安全数字(SD)卡及硬盘驱动器(HDD)。存储器模块的实例包含双列直插式存储器模块(DIMM)、小形DIMM(SO-DIMM)及各种类型的非易失性双列直插式存储器模块(NVDIMM)。
计算系统100可为例如桌面计算机、膝上型计算机、网络服务器、移动装置、运载工具(例如飞机、无人机、火车、汽车或其它运输工具)、物联网(IoT)启用装置、嵌入式计算机(例如,包含于运载工具、工业设备或联网商用装置中的嵌入式计算机)或包含存储器及处理装置的此类计算装置的计算装置。
计算系统100可包含耦合到一或多个存储器子系统110的主机系统120。在一些实施例中,主机系统120耦合到不同类型的存储器子系统110。图1说明耦合到一个存储器子系统110的主机系统120的一个实例。如本文中使用,“耦合到”或“与…耦合”一般指组件之间的连接,其可为间接通信连接或直接通信连接(例如,不具有中介组件),无论是有线还是无线,包含例如电连接、光学连接、磁性连接等的连接。
主机系统120可包含处理器芯片组及由处理器芯片组执行的软件堆叠。处理器芯片组可包含一或多个核心、一或多个高速缓存、存储器控制器(例如NVDIMM控制器)及存储协议控制器(例如PCIe控制器、SATA控制器)。主机系统120使用存储器子系统110(例如)将数据写入到存储器子系统110及从存储器子系统110读取数据。
主机系统120可经由物理主机接口耦合到存储器子系统110。物理主机接口的实例包含(但不限于)串行高级技术附件(SATA)接口、外围组件互连高速(PCIe)接口、通用串行总线(USB)接口、光纤通道、串行附接SCSI(SAS)、双倍数据速率(DDR)存储器总线、小计算机系统接口(SCSI)、双列直插式存储器模块(DIMM)接口(例如,支持双倍数据率(DDR)的DIMM套接字接口)等。物理主机接口可用于在主机系统120与存储器子系统110之间传输数据。当存储器子系统110通过PCIe接口与主机系统120耦合时,主机系统120可进一步利用NVM高速(NVMe)接口来存取组件(例如,存储器装置130)。物理主机接口可提供用于在存储器子系统110与主机系统120之间传递控制、地址、数据及其它信号的接口。图1将存储器子系统110说明为实例。一般来说,主机系统120可经由同一通信连接、多个单独通信连接及/或通信连接的组合来存取多个存储器子系统。
存储器装置130、140可包含不同类型的非易失性存储器装置及/或易失性存储器装置的任何组合。易失性存储器装置(例如存储器装置140)可为(但不限于)随机存取存储器(RAM),例如动态随机存取存储器(DRAM)及同步动态随机存取存储器(SDRAM)。
非易失性存储器装置(例如存储器装置130)的一些实例包含与非(NAND)型快闪存储器及原位写入存储器,例如三维交叉点(“3D交叉点”)存储器。非易失性存储器的交叉点阵列可基于体电阻变化连同可堆叠交叉栅格化数据存取阵列而执行位存储。另外,与许多基于快闪的存储器相比,交叉点非易失性存储器可执行原位写入操作,其中可在未预先擦除非易失性存储器单元的情况下对所述非易失性存储器单元进行编程。NAND型快闪存储器包含例如二维NAND(2D NAND)及三维NAND(3D NAND)。
存储器装置130中的每一者可包含一或多个存储器单元阵列。一种类型的存储器单元(例如单电平单元(SLC))每单元可存储一个位。其它类型的存储器单元(例如多电平单元(MLC)、三电平单元(TLC)及四电平单元(QLC))每单元可存储多个位。在一些实施例中,存储器装置130中的每一者可包含一或多个存储器单元阵列,例如SLC、MLC、TLC、QLC或此类的任何组合。在一些实施例中,特定存储器装置可包含存储器单元的SLC部分及MLC部分、TLC部分或QLC部分。存储器装置130的存储器单元可经分组为页,其可指用于存储数据的存储器装置的逻辑单元。对于一些类型的存储器(例如NAND),页可经分组以形成块。
尽管描述了例如非易失性存储器单元及NAND类型快闪存储器的3D交叉点阵列(例如2D NAND、3D NAND)的非易失性存储器装置,但存储器装置130可为基于任何其它类型的非易失性存储器,例如只读存储器(ROM)、相变存储器(PCM)、自选择存储器、其它基于硫属化物的存储器、铁电晶体管随机存取存储器(FeTRAM)、铁电随机存取存储器(FeRAM)、磁随机存取存储器(MRAM)、自旋转移力矩(STT)-MRAM、导电桥接RAM(CBRAM)、电阻随机存取存储器(RRAM)、基于氧化物的RRAM(OxRAM)、或非(NOR)快闪存储器、电可擦除可编程只读存储器(EEPROM)。
存储器子系统控制器115(或简称控制器115)可与存储器装置130通信以执行操作,例如在存储器装置130处读取数据、写入数据或擦除数据及其它此类操作。存储器子系统控制器115可包含硬件,例如一或多个集成电路及/或离散组件、缓冲器存储器或其组合。硬件可包含具有用于执行本文中描述的操作的专用(即,硬编码)逻辑的数字电路系统。存储器子系统控制器115可为微控制器、专用逻辑电路系统(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)或其它合适的处理器。
存储器子系统控制器115可包含经配置以执行存储在本地存储器119中的指令的处理器117(例如处理装置)。在说明的实例中,存储器子系统控制器115的本地存储器119包含经配置以存储用于执行控制存储器子系统110的操作(包含处置存储器子系统110与主机系统120之间的通信)的各种过程、操作、逻辑流及例程的指令的嵌入式存储器。
在一些实施例中,本地存储器119可包含存储存储器指针、经提取数据等的存储器寄存器。本地存储器119还可包含用于存储微代码的只读存储器(ROM)。虽然已将图1中的实例存储器子系统110说明为包含存储器子系统控制器115,但在本公开的另一实施例中,存储器子系统110不包含存储器子系统控制器115,且可代替地依赖于外部控制(例如,由外部主机提供、或由与存储器子系统分离的处理器或控制器提供)。
一般来说,存储器子系统控制器115可从主机系统120接收命令或操作且可将所述命令或操作转换成指令或适当命令以实现对存储器装置130的所期望存取。存储器子系统控制器115可负责其它操作,例如损耗均衡操作、废弃项目收集操作、错误检测及错误校正代码(ECC)操作、加密操作、高速缓存操作及与存储器装置130相关联的逻辑地址(例如逻辑块地址(LBA)、命名空间)与物理地址(例如物理块地址)之间的地址转译。存储器子系统控制器115可进一步包含经由物理主机接口与主机系统120通信的主机接口电路系统。所述主机接口电路系统可将从主机系统接收的命令转换成用于存取存储器装置130的命令指令,且还将与存储器装置130相关联的响应转换成用于主机系统120的信息。
存储器子系统110还可包含未说明的额外电路系统或组件。在一些实施例中,存储器子系统110可包含高速缓存或缓冲器(例如DRAM)及地址电路系统(例如行解码器及列解码器),其可从存储器子系统控制器115接收地址且对所述地址进行解码以存取存储器装置130。
在一些实施例中,存储器装置130包含本地媒体控制器135,其连同存储器子系统控制器115操作以对存储器装置130的一或多个存储器单元执行操作。外部控制器(例如存储器子系统控制器115)可外部地管理存储器装置130(例如,对存储器装置130执行媒体管理操作)。在一些实施例中,存储器装置130是受管理存储器装置,其是与同一存储器装置封装内用于媒体管理的本地控制器(例如本地控制器135)组合的原始存储器装置。受管理存储器装置的实例是受管理NAND(MNAND)装置。
在一些实施例中,主机系统120的驱动器可分配主机系统存储器的可由存储器子系统控制器115存取的一或多个部分(在本文中称为主机存储器缓冲器)。主机存储器缓冲器可存储与存储器子系统110的操作相关联的数据或代码。举例来说,逻辑到物理地址表(即L2P表)可经存储于主机系统120的主机存储器缓冲器的第一部分处。存储器子系统控制器115可存取存储于主机存储器缓冲器处的L2P表以将存储于存储器装置130、140处的一部分数据的逻辑地址转译成物理地址。在一些实施例中,主机存储器缓冲器的一或多个部分可存储从存储器装置130、140复制的可执行代码区段。在此类实施例中,主机存储器缓冲器可用于在存储器子系统110操作期间促进存储器叠加。主机存储器缓冲器可与低于与存储器装置130、140相关联的延时的延时相关联。举例来说,主机存储器缓冲器可为DRAM装置的一部分,且存储器装置130可为非易失性存储器装置。在一些实施例中,主机存储器缓冲器可存储L2P表及从存储器装置130、140复制的可执行代码区段。在其它或类似实施例中,主机存储器缓冲器可存储从存储器装置130、140复制的可执行代码区段,而无需存储L2P表。
在一些实施例中,存储器子系统110可包含存储器子系统缓冲器。在一些例子中,存储器子系统缓冲器可与低于与主机存储器缓冲器相关联的延时及与存储器装置130、140相关联的延时的延时相关联。举例来说,存储器子系统缓冲器可为紧耦合存储器(TCM)装置或静态随机存取存储器(SRAM)装置的部分,主机存储器缓冲器可为DRAM装置的部分,且存储器装置130可为非易失性存储器装置。在一些实施例中,存储器子系统缓冲器可为本地存储器119的一部分。在其它或类似实施例中,存储器装置130可为第一存储器装置,且存储器子系统缓冲器可为第二存储器装置(例如存储器装置140)的部分。
存储器子系统110包含使用主机系统120的主机存储器缓冲器促进存储器叠加的主机存储器缓冲器叠加组件113(在本文中称为HMB叠加组件113)。在一些实施例中,存储器子系统控制器115包含HMB叠加组件113的至少一部分。举例来说,存储器子系统控制器115可包含经配置以执行存储于本地存储器119中的指令以用于执行本文中描述的操作的处理器117(处理装置)。在一些实施例中,HMB叠加组件113是主机系统110、应用程序或操作系统的部分。
HMB叠加组件113可促进存储器子系统缓冲器中的代码区段叠加。在一些实施例中,存储器装置130可存储多个代码区段,其中每一代码区段包含于叠加区段中。每一代码区段可包含由存储器子系统110的固件执行的一组可执行指令。在存储器子系统110初始化期间,HMB叠加组件113可将存储于存储器装置130处的叠加区段的至少一部分复制到主机存储器缓冲器。响应于存储器子系统控制器115确定将执行特定代码区段,HMB叠加组件113可识别存储器装置130的包含所述特定代码区段的第一叠加区段并确定第一叠加区段是否存在于主机存储器缓冲器中。响应于确定第一叠加区段存在于主机存储器缓冲器中,HMB叠加组件113可将第一叠加区段从主机存储器缓冲器复制到存储器子系统缓冲器。存储器子系统控制器115可从存储器子系统缓冲器执行包含于第一叠加区段中的特定代码区段。存储器子系统控制器115可确定将执行另一代码区段。响应于确定包含代码区段的第二叠加区段存在于主机存储器缓冲器中,HMB叠加组件113可从存储器子系统缓冲器移除第一叠加区段且将第二叠加区段从主机存储器缓冲器复制到存储器子系统缓冲器。接着,存储器子系统控制器115可从存储器子系统缓冲器执行包含于第二叠加区段中的代码区段。下面描述关于HMB叠加组件113的操作的更多细节。
在一些实施例中,可在存储器子系统110初始化期间将包含与执行HMB叠加组件113相关联的代码的叠加区段复制到存储器子系统缓冲器。举例来说,根据本文中描述的实施例,可将与执行HMB叠加组件113相关联的叠加区段从存储器装置130复制到存储器子系统缓冲器或将其从主机存储器缓冲器复制到存储器子系统缓冲器。在一些实施例中,与执行HMB叠加组件113相关联的叠加区段在存储器子系统110操作期间可保持于存储器子系统缓冲器中且在存储器叠加执行期间不从存储器子系统缓冲器移除。
图2说明根据本公开的一些实施例的使用主机存储器缓冲器210的存储器叠加。如先前描述,存储器装置130、140可为存储一或多个叠加区段212的非易失性存储器装置。每一叠加区段212可包含一组可执行指令。在存储器子系统110初始化期间,HMB叠加组件113可将一或多个叠加区段(例如叠加区段1到N)复制到主机存储器缓冲器210。如先前描述,主机存储器缓冲器210可驻留于展现比存储器装置130、140更低的延时的存储器装置上。举例来说,主机存储器缓冲器210可驻留于DRAM存储器装置上。在存储器子系统110操作期间,存储器子系统控制器可确定将执行存储于存储器装置130、140处的特定代码区段。在一些实施例中,存储器子系统控制器115可确定响应于从存储器子系统110的固件接收请求将执行特定代码区段。HMB叠加组件113可识别存储器装置130的包含所请求的代码区段的叠加区段212且确定经识别叠加区段212是否存在于主机存储器缓冲器210中。响应于确定叠加区段212存在于主机存储器缓冲器210中,HMB叠加组件113可将叠加区段从主机存储器缓冲器210复制到存储器子系统缓冲器220。如先前论述,存储器子系统器缓冲器220可驻留于与比主机存储器缓冲器210及存储器装置130、140更低的延时相关联的存储器装置上。举例来说,存储器子系统缓冲器220可驻留于TCM存储器装置或SRAM存储器装置上。
在说明性实例中,存储器子系统控制器115可确定将执行包含于叠加区段1中的特定代码区段。响应于确定特定代码区段包含于叠加区段1中,HMB叠加组件113可确定叠加区段1是否存在于主机存储器缓冲器210中。响应于确定叠加区段1存在于主机存储器缓冲器210中,HMB叠加组件113可将叠加区段从主机存储器缓冲器210复制到存储器子系统缓冲器220。存储器子系统控制器115可从存储器子系统缓冲器220执行叠加区段1的代码区段。存储器子系统控制器115可确定将执行包含于叠加区段2中的另一代码区段。举例来说,叠加区段1的代码区段的一部分可包含用于执行叠加区段2的代码区段的一部分的指令(即跳转指令)。响应于确定叠加区段2存在于主机存储器缓冲器210中,HMB叠加组件113可确定存储器子系统缓冲器220上空间是否可用于叠加区段2的复制。响应于确定存储器子系统缓冲器220上空间不可用于叠加区段2的复制,HMB叠加组件113可从存储器子系统缓冲器220移除叠加区段1。接着,HMB叠加组件113可将叠加区段2复制到存储器子系统缓冲器220。
图3是根据本公开的一些实施例的使用主机存储器缓冲器执行存储器叠加的实例方法300的流程图。方法300可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微代码、装置的硬件、集成电路等)、软件(例如,运行或执行于处理装置上的指令)或其组合。在一些实施例中,方法300由图1的HMB叠加组件113执行。尽管以特定顺序或次序展示,但除非另外指定,否则过程的次序是可修改的。因此,说明的实施例应被理解为仅作为实例,且说明的过程可以不同次序执行,且一些过程可并行执行。另外,在各种实施例中,可省略一或多个过程。因此,并非在每个实施例中都需要所有过程。其它过程流是可能的。
在操作310,处理装置将两个或更多个叠加区段从存储器子系统的非易失性存储器装置复制到驻留于与存储器子系统通信的主机系统的第一易失性存储器装置上的第一存储器缓冲器(即主机存储器缓冲器)。每一叠加区段可包含存储于存储器装置处的代码区段。每一第二代码可包含一组可执行指令,如先前描述。图5A到5C说明根据本公开的一些实施例的使用主机存储器缓冲器210在存储器子系统110处进行的存储器叠加。如图5A中说明,存储器装置130可为非易失性存储器装置。在一些实施例中,图3的处理装置可包含HMB叠加组件113。HMB叠加组件113可指派存储于存储器装置130处的将包含于特定叠加区段212中的代码区段。
在一些实施例中,HMB叠加组件113可基于包含于特定代码区段中的指令在存储器子系统110操作期间(例如,由存储器子系统110的固件等)执行的频率来指派将包含于叠加区段212中的代码区段。在一些实施例中,HMB叠加组件113可基于在存储器子系统110操作期间执行的包含于特定代码区段中的实例指令的估计数目来确定执行频率。举例来说,HMB叠加组件113可基于与类似于或相关于一组特定指令的另一组指令相关联的经测量执行频率来确定所述一组特定指令的执行频率。在其它或类似实施例中,HMB叠加组件113可基于所述一组指令的经测量执行频率来确定执行频率。举例来说,HMB叠加组件113可在存储器子系统110操作期间测量一组指令的执行频率。HMB叠加组件113可将经测量执行频率存储于非易失性存储器(例如存储器130)中。在存储器子系统110初始化(通电)期间,HMB叠加组件113可基于与非易失性存储器中所存储的一组特定指令相关联的先前经测量执行频率来确定所述一组特定指令的执行频率。在其它或类似实施例中,一组特定指令的执行频率可由所述一组特定指令的程序员或开发者提供。
在一些实施例中,HMB叠加组件113可识别存储于存储器装置130处的第一代码区段及第二代码区段。包含于第一代码区段中的指令可与第一执行频率相关联,且第二代码区段可与第二执行频率相关联。HMB叠加组件113可将第一执行频率与第二执行频率进行比较。响应于确定第一执行频率低于第二执行频率,HMB叠加组件113可确定在存储器子系统110操作期间与第一代码区段相关联的指令执行频率低于与第二代码区段相关联的指令。因而,HMB叠加组件113可在第一叠加区段212中包含第一代码区段及在第二叠加区段212中包含第二代码区段。
在一些实施例中,存储器装置130可存储包含对存储器子系统110或主机系统120的性能或操作关键的指令(例如,与用于频繁执行的命令的处理程序相关联的数据)的代码区段。HMB叠加组件113可识别包含关键指令的代码区段且将此类代码区段一起包含于叠加区段212中。在一些实施例中,HMB叠加组件113可基于由代码区段的程序员或开发者提供的指示来确定指令是否为关键指令。在其它或类似实施例中,HMB叠加组件113可基于已知关键指令与存储器装置130处存储的代码区段中所包含的指令之间的相似度或关系来确定指令是关键指令。响应于确定存储器装置130处存储的代码区段包含关键指令,HMB叠加组件113可在特定叠加区段212中包含所述代码区段。
在一些实施例中,HMB叠加组件可在叠加区段212中包含包含引用叠加区段212的其它指令的指令的代码区段。HMB叠加组件113可识别存储于存储器装置130处的第一代码区段及第二代码区段。HMB叠加组件113可确定包含于第一代码区段中的指令是否包含对包含于第二代码区段中的指令的引用。响应于确定包含于第一代码区段中的指令包含对包含于第二代码区段中的指令的引用,HMB叠加组件113可在单个叠加区段212中包含第一代码区段及第二代码区段。响应于确定第一代码区段不包含引用第二代码区段中的指令的指令,HMB叠加组件113可在第一叠加区段212中包含第一代码区段及在第二叠加区段212中包含第二代码区段。
HMB叠加组件113可分配主机存储器缓冲器210的一或多个部分以用于一或多个叠加区段212的复制。在一些实施例中,HMB叠加组件113可将请求传输到主机系统120以为存储器装置130的叠加区段212分配主机存储器缓冲器210的一或多个部分。在其它或类似实施例中,HMB叠加组件113可分配主机存储器缓冲器210的部分,而无需传输请求到主机系统120。HMB叠加组件可为叠加区段212分配主机存储器缓冲器210的特定数目个部分及/或特定空间量。在一些实施例中,HMB叠加组件113可在传输到主机系统120的请求中包含特定数目个部分及/或特定空间量。响应于从HMB叠加组件113接收到请求,主机系统120的驱动器可根据所述请求识别主机存储器缓冲器210的一或多个可用部分及为叠加区段分配主机存储器缓冲器210的一或多个可用部分。主机系统120的驱动器可传输为叠加区段212保留的主机存储器缓冲器210的一或多个部分的指示。在一些实施例中,所述指示可包含主机存储器缓冲器210的经保留部分中所包含的空间量。在其它或类似实施例中,所述指示可包含主机存储器缓冲器210的每一经分配部分的存储器地址。
如关于图2描述,HMB叠加组件113可将两个或更多个叠加区段212复制到主机存储器缓冲器210。如图5A中说明,主机存储器缓冲器210可驻留于易失性存储器装置中,例如易失性存储器装置510。在一些实施例中,HMB叠加组件113可在存储器子系统110初始化期间复制两个或更多个叠加区段212。在一些实施例中,HMB叠加组件113可将叠加区段212复制到主机存储器缓冲器210的经保留部分。HMB叠加组件113可基于主机存储器缓冲器210的可用部分的大小确定要复制到主机存储器缓冲器210的叠加区段212的数目。在一些实施例中,主机存储器缓冲器210的可用部分的大小可小于存储器装置130的叠加区段212的总大小或总数目。在此类实施例中,HMB叠加组件113可将叠加区段212复制到主机存储器缓冲器210的可用部分直到主机存储器缓冲器210不再可用于复制(即,主机存储器缓冲器210不包含可用部分)。结果,HMB叠加组件113不会将所有叠加区段212复制到主机存储器缓冲器202。举例来说,如关于图5A说明,HMB叠加组件113将叠加区段1、叠加区段2及叠加区段3中的每一者复制到主机存储器缓冲器210直到主机存储器缓冲器210不再可用于复制(即,在主机存储器缓冲器210的任何经分配部分中没有额外空间可用)。结果,HMB叠加组件113不会将存储于存储器装置130的额外叠加区段212(例如叠加区段N)复制到主机存储器缓冲器210。
在一些实施例中,HMB叠加组件113可维持经配置以跟踪包含于叠加区段212中的代码区段及存在于主机存储器缓冲器210中的叠加区段212的叠加数据结构。举例来说,叠加数据结构可包含用于存储器装置130的每一叠加区段212的条目。每一条目可包含用于包含于叠加区段212中的每一代码区段的一或多个存储器地址。响应于从存储器装置130复制叠加区段212,HMB叠加组件113可更新叠加区段212的条目以指示在主机存储器缓冲器210处复制叠加区段212。在一些实施例中,叠加数据结构条目可进一步包含主机存储器缓冲器210的包含经复制叠加区段212的部分的指示。在其它或类似实施例中,HMB叠加组件113可根据其它实施方案跟踪存在于主机存储器缓冲器210中的叠加区段212。
返回参考图3,在操作320,处理装置可将两个或更多个叠加区段中的第一叠加区段从第一存储器缓冲器复制到驻留于存储器子系统的第二易失性存储器装置上的第二存储器缓冲器。在一些实施例中,第二易失性存储器装置可为本地存储器装置,例如本地存储器119。在其它或类似实施例中,第二存储器装置可为存储器子系统110的存储器装置(例如存储器装置140),如图5A中说明。驻留于第二易失性存储器装置上的第二存储器缓冲器可为存储器子系统缓冲器220
在一些实施例中,HMB叠加组件113可响应于确定将执行第一叠加区段212的第一代码区段而将第一叠加区段复制到图5A的存储器子系统缓冲器220。HMB叠加组件113可识别存储器装置130的包含第一代码区段的第一叠加区段212。在一些实施例中,HMB叠加组件113可使用叠加区段识别函数识别存储器装置130、140的包含第一代码区段的第一叠加区段212。举例来说,HMB叠加组件113可将与第一代码区段相关联的一或多个指令的存储器地址作为参数值提供给叠加区段识别函数。HMB叠加组件113可接收一或多个指令经包含于第一叠加区段212中的指示作为叠加区段识别函数的输出。在其它或类似实施例中,图2的HMB叠加组件113可使用叠加数据结构识别存储器装置130的包含第一代码区段的第一叠加区段212。举例来说,HMB叠加组件113可将与第一代码区段相关联的存储器装置地址同叠加数据结构的条目的一或多个存储器装置地址进行比较。响应于确定第一代码区段的存储器装置地址对应于第一叠加区段212的叠加数据结构的条目的存储器装置地址,HMB叠加组件113可确定第一代码区段包含于第一叠加区段212中。
响应于确定第一代码区段包含于第一叠加区段212中,HMB叠加组件113可确定第一叠加区段212是否存在于主机存储器缓冲器210中。在一些实施例中,HMB叠加组件113可使用叠加数据结构确定第一叠加区段212是否存在于主机存储器缓冲器210中。举例来说,HMB叠加组件113可基于第一叠加区段212的叠加数据结构条目确定第一叠加区段212是否存在于主机存储器缓冲器210中。响应于确定第一叠加区段212存在于主机存储器缓冲器210中,HMB叠加组件113可将第一叠加区段复制到存储器子系统缓冲器220。根据本文中描述的实施例,响应于确定第一叠加区段212不存在于主机存储器缓冲器210中,HMB叠加组件113可将第一叠加区段从存储器装置130、140复制到主机存储器缓冲器210。在操作230,处理装置可执行驻留于存储器子系统缓冲器220中的叠加区段中所包含的第一组可执行指令。
在操作340,处理装置可将两个或更多个叠加区段中的第二叠加区段从第一存储器缓冲器(即主机存储器缓冲器210)复制到第二存储器缓冲器(即存储器子系统缓冲器220)。在一些实施例中,根据先前描述的实施例,HMB叠加组件113可响应于确定将执行第二叠加区段212的第二代码区段而将第二叠加区段复制到图5A的存储器子系统缓冲器220。HMB叠加组件113可确定第二叠加区段212是否驻留于主机存储器缓冲器210上。响应于确定第二叠加区段212驻留于主机存储器缓冲器210中,HMB叠加组件可确定在存储器子系统缓冲器220上空间是否可用于复制第二叠加区段212。在一些实施例中,HMB叠加组件可确定存储器子系统缓冲器220的空间不可用于第二叠加区段212的复制。举例来说,HMB叠加组件113可确定存储器子系统缓冲器220的空间不可用于叠加区段2的复制,这是因为叠加区段1驻留于存储器子系统缓冲器220中。如图5B中说明,HMB叠加组件113可从存储器子系统缓冲器220移除或擦除叠加区段2且随后将叠加区段2从主机存储器缓冲器210复制到存储器子系统缓冲器220。在操作350,根据先前描述的实施例,处理装置可执行驻留于第二存储器缓冲器中的第二组可执行指令。
图4是根据本公开的一些实施例的使用主机存储器缓冲器执行存储器叠加的另一实例方法400的流程图。方法400可由处理逻辑执行,所述处理逻辑可包含硬件(例如处理装置、电路系统、专用逻辑、可编程逻辑、微代码、装置的硬件、集成电路等)、软件(例如运行或执行于处理装置上的指令)或其组合。在一些实施例中,方法400由图1的HMB叠加组件113执行。尽管以特定顺序或次序展示,但除非另外指定,否则过程的次序是可修改的。因此,说明的实施例应被理解为仅作为实例,且说明的过程可以不同次序执行,且一些过程可并行执行。另外,在各种实施例中,可省略一或多个过程。因此,并非在每个实施例中都需要所有过程。其它过程流是可能的。
在操作410,处理装置可确定第一组可执行指令包含于两个或更多个叠加区段中的第一叠加区段中。根据先前描述的实施例,处理装置(例如HMB叠加组件113)可确定第一组可执行指令包含于第一叠加区段中。
在操作420,处理装置可确定第一叠加区段不存在于存储器子系统上的第一易失性存储器装置(即存储器子系统缓冲器220)上。在一些实施例中,处理装置(例如HMB叠加组件113)可使用叠加数据结构确定第一叠加区段212不存在于第一易失性存储器装置140上,如先前描述。举例来说,HMB叠加组件113可识别对应于第一叠加区段212的叠加数据结构的条目。HMB叠加组件113可确定与第一叠加区段212相关联的经识别条目的存储器地址是否对应于存储器子系统缓冲器220的存储器地址。响应于确定存储器地址不对应于存储器子系统缓冲器220的存储器地址,HMB叠加组件113可确定第一叠加区段212不存在于第一易失性装置140上。
在一些实施例中,响应于确定第一叠加区段212不存在于第一易失性装置140上,HMB叠加组件113可确定第一叠加区段212是否存在于主机系统120的第二易失性存储器装置510上(即,在主机存储器缓冲器210中)。HMB叠加组件113可确定与第一叠加区段212相关联的经识别叠加数据结构条目的存储器地址是否对应于主机存储器缓冲器210的存储器地址。响应于确定存储器地址不对应于主机存储器缓冲器210的存储器地址,HMB叠加组件113可确定第一叠加区段212不驻留于易失性存储器装置510上。
根据先前描述的实施例,响应于确定第一叠加区段不驻留于易失性存储器装置510上,HMB叠加组件113可将第一叠加区段212从非易失性存储器装置130复制到主机存储器缓冲器210。根据先前描述的实施例,图5A的HMB叠加组件113可将第一叠加区段212从非易失性存储器装置130复制到主机存储器缓冲器210的可用部分。在一些实施例中,主机存储器缓冲器210不包含可用于第一叠加区段212的复制的任何部分。在此类实施例中,HMB叠加组件113可识别存在于主机存储器缓冲器210中的候选叠加区段212以从主机存储器缓冲器210移除或擦除。在一些实施例中,HMB叠加组件113可基于包含于候选叠加区段212中的代码区段的指令被存储器子系统控制器114执行的频率而识别要移除的候选叠加区段212。响应于从主机存储器缓冲器210移除或擦除候选叠加区段212,HMB叠加组件113可将第一叠加区段212复制到主机存储器缓冲器210的可用部分。
在说明性实例中,存储器子系统控制器115可确定将执行包含于叠加区段N中的代码区段。响应于确定叠加区段N不存在于主机存储器缓冲器210中,HMB叠加组件113可确定主机存储器缓冲器210的一部分是否可用于叠加区段N的复制。响应于确定主机存储器缓冲器210不包含可用部分,HMB叠加组件113可识别将从主机存储器缓冲器210移除或擦除的候选叠加区段212(例如叠加区段3)。如关于图5C说明,HMB叠加组件113可从主机存储器缓冲器210移除或擦除叠加区段3并将叠加区段N复制到主机存储器缓冲器210的最新可用部分。
返回参考图4,在操作430,处理装置可经由主机接口将第一叠加区段从主机系统的第二易失性存储器装置的第二存储器缓冲器(例如主机存储器缓冲器210)复制到第一易失性存储器装置(例如,复制到存储器子系统缓冲器220)。在一些实施例中,主机接口可为外围组件互连高速(PCIe)接口。HMB叠加组件113可将第一叠加区段212从主机存储器缓冲器210复制到存储器子系统缓冲器220的可用部分。如图5C中说明,HMB叠加组件113可响应于确定存储器子系统缓冲器220的一部分可用而将叠加区段N从主机存储器缓冲器210复制到存储器子系统缓冲器220。在其它或类似实施例中,存储器子系统缓冲器220不包含可用于复制叠加区段212的部分。在此类实施例中,根据先前描述的实施例,HMB叠加组件113可移除或擦除存在于存储器子系统缓冲器220中的叠加区段212且将包含所请求的代码区段的叠加区段212从主机存储器缓冲器210复制到存储器子系统缓冲器220。如图5C中说明,响应于接收到存取叠加N的请求,HMB叠加组件113可确定存储器子系统缓冲器220是否可用于叠加N的复制。响应于确定存储器子系统缓冲器330不可用于叠加N的复制,HMB叠加组件113可从存储器子系统缓冲器220移除或擦除叠加区段1且将叠加区段N从主机存储器缓冲器210复制到存储器子系统缓冲器220。返回参考图4,在操作440,根据先前描述的实施例,处理装置可执行包含于第一叠加区段中的第一组可执行指令。
图6说明用于致使机器执行本文中论述的方法论中的任一或多者的一组指令可在其内执行的计算机系统600的实例机器。在一些实施例中,计算机系统600可对应于主机系统(例如图1的主机系统120),所述主机系统包含、经耦合到或利用存储器子系统(例如图1的存储器子系统110)或可用于执行控制器的操作(例如,执行操作系统以执行对应于图1的HMB叠加组件113的操作)。在替代实施例中,机器可经连接(例如联网)到LAN、内联网、外联网及/或因特网中的其它机器。机器可在客户端-服务器网络环境中以服务器或客户端机器的身份操作,在对等(或分布式)网络环境中作为对等机器,或在云端计算基础设施或环境中作为服务器或客户端机器。
机器可为个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、网络设备、服务器、网络路由器、交换机或网桥或能够(循序或以其它方式)执行指定将由机器采取的动作的一组指令的任何机器。此外,虽然说明了单个机器,但术语“机器”还应被视为包含个别或联合执行一组(或多组)指令以执行本文中论述的方法论中的任一或多者的机器的任何集合。
实例计算机系统600包含处理装置602、主存储器604(例如只读存储器(ROM)、快闪存储器、动态随机存取存储器(DRAM)(例如同步DRAM(SDRAM)或RDRAM等))、静态存储器606(例如快闪存储器、静态随机存取存储器(SRAM)等)及数据存储系统618,它们经由总线630彼此通信。
处理装置602表示一或多个通用处理装置,例如微处理器、中央处理单元或类似物。更特定来说,处理装置可为复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器或实施其它指令集的一处理器或实施指令集组合的多个处理器。处理装置602也可为一或多个专用处理装置,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器或类似物。处理装置602经配置以执行用于执行本文中论述的操作及步骤的指令426。计算机系统600可进一步包含网络接口装置608以经过网络620通信。
数据存储系统618可包含其上存储体现本文中描述的方法论或功能中的任一或多者的一或多组指令626或软件的机器可读存储媒体624(也称为计算机可读媒体)。指令626在其由计算机系统600执行期间也可完全或至少部分驻留于主存储器604内及/或处理装置602内,主存储器604及处理装置602也构成机器可读存储媒体。机器可读存储媒体624、数据存储系统618及/或主存储器604可对应于图1的存储器子系统110。
在一个实施例中,指令626包含用于实施对应于HMB叠加组件(例如图1的HMB叠加组件113)的功能性的指令。虽然在实例实施例中将机器可读存储媒体624展示为单个媒体,但术语“机器可读存储媒体”应理解为包含存储一或多个指令集的单个媒体或多个媒体。术语“机器可读存储媒体”也应理解为包含能够存储或编码由机器执行的一组指令且致使机器执行本公开的方法论中的任一或多者的任何媒体。术语“机器可读存储媒体”应相应地理解为包含(但不限于)固态存储器、光学媒体及磁性媒体。
已依据对计算机存储器内的数据位的操作的算法及符号表示呈现前述详细描述的一些部分。这些算法描述及表示是由数据处理领域的技术人员用以向所属领域的其他技术人员最有效地传达其工作实质的方式。算法在本文且通常被认为是导致所期望结果的自相一致的操作序列。操作是需要对物理量进行物理操纵的操作。通常,尽管不是必须的,这些量采取能够被存储、组合、比较及以其它方式操纵的电或磁性信号的形式。已证明,主要由于通用的原因,有时将这些信号称为位、值、元素、符号、字符、项、数字或类似物是方便的。
然而,应记住,全部这些及类似术语与适当物理量相关联,且仅为应用于这些量的方便标签。本公开可涉及计算机系统或类似电子计算装置的动作及过程,其将表示为计算机系统的寄存器及存储器内的物理(电子)量的数据操纵或变换成类似地表示为计算机系统存储器或寄存器或其它此类信息存储系统内的物理量的其它数据。
本公开还涉及用于执行本文中的操作的设备。此设备可出于预期目的而被特别构造,或其可包含由存储于计算机中的计算机程序选择性地激活或重新配置的通用计算机。此计算机程序可存储于计算机可读存储媒体中,例如(但不限于)任何类型的磁盘,包含软盘、光盘、CD-ROM及磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡或适于存储电子指令的任何类型的媒体,每一者都耦合到计算机系统总线。
本文呈现的算法及显示器并不固有地与任何特定计算机或其它设备相关。各种通用系统可与根据本文的教示的程序一起使用,或可证明构造更专门的设备来执行方法是方便的。多种这些系统的结构将如下文描述中陈述那样出现。另外,本公开并非是参考任何特定编程语言描述。应了解,多种编程语言可用于实施本文中所描述的本公开的教示。
本公开可经提供作为计算机程序产品或软件,其可包含其上存储有指令的机器可读媒体,所述指令可用于对计算机系统(或其它电子装置)进行编程以执行根据本公开的过程。机器可读媒体包含用于存储呈可由机器(例如计算机)读取的形式的信息的任何机构。在一些实施例中,机器可读(例如计算机可读)媒体包含机器(例如计算机)可读存储媒体,例如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储媒体、光学存储媒体、快闪存储器组件等。
在前述说明书中,已参考本公开的特定实例实施例描述了其实施例。明显的是,在不背离随附权利要求书中所陈述的本公开的实施例的更宽精神及范围的情况下,可对其做出各种修改。说明书及图式应相应地以说明性意义而非限制性意义来看待。

Claims (20)

1.一种方法,其包括:
由存储器子系统的处理装置将多个叠加区段从所述存储器子系统的非易失性存储器装置复制到驻留于与所述存储器子系统通信的主机系统的第一易失性存储器装置上的第一存储器缓冲器,其中所述多个叠加区段中的每一叠加区段包括一组相应的可执行指令;
将所述多个叠加区段中的第一叠加区段从所述第一存储器缓冲器复制到驻留于所述存储器子系统的第二易失性存储器装置上的第二存储器缓冲器;
由所述存储器子系统的所述处理装置执行驻留于所述第二存储器缓冲器中的所述第一叠加区段中所包含的第一组可执行指令;
将所述多个叠加区段中的第二叠加区段从所述第一存储器缓冲器复制到所述第二存储器缓冲器;及
由所述存储器子系统的所述处理装置执行驻留于所述第二存储器缓冲器中的所述第二叠加区段中所包含的第二组可执行指令。
2.根据权利要求1所述的方法,其进一步包括:
将存储于所述非易失性存储器装置处的一或多组可执行指令指派到所述多个叠加区段中的相应叠加区段。
3.根据权利要求2所述的方法,其进一步包括:
识别存储于所述非易失性存储器装置处的所述第一组可执行指令及所述第二组可执行指令,其中所述第一组可执行指令与第一执行频率相关联,且所述第二组可执行指令与第二执行频率相关联,
其中响应于确定所述第一执行频率低于所述第二执行频率,所述第一组可执行指令经指派到所述第一叠加区段且所述第二组可执行指令经指派到所述第二叠加区段。
4.根据权利要求2所述的方法,其进一步包括:
确定所述第一组可执行指令中的指令是否包含对第三组可执行指令中的额外指令的引用,
其中响应于确定所述第一组可执行指令中的所述指令包含对所述第三组可执行指令中的所述额外指令的引用,所述第一组可执行指令及所述第三组可执行指令经指派到所述第一叠加区段。
5.根据权利要求1所述的方法,其进一步包括:
确定在所述第二存储器缓冲器上空间是否可用于将所述第二叠加区段从所述第一存储器缓冲器复制到所述第二存储器缓冲器;及
响应于确定在所述第二存储器缓冲器上空间不可用,从所述第二存储器缓冲器移除所述第一叠加区段,
其中响应于从所述第二存储器缓冲器移除所述第一叠加区段,将所述第二叠加区段从所述第一存储器缓冲器复制到所述第二存储器缓冲器。
6.根据权利要求1所述的方法,其进一步包括:
分配所述第一存储器缓冲器的一或多个部分以用于所述多个叠加区段的复制,其中所述第一叠加区段及所述第二叠加区段经复制到所述第一存储器缓冲器的所述一或多个经分配部分。
7.根据权利要求6所述的方法,其进一步包括:
基于所述第一存储器缓冲器的所述一或多个经分配部分的大小或数目中的至少一者来确定将复制到所述第一存储器缓冲器的所述一或多个经分配部分的所述多个叠加区段的数目。
8.一种存储器子系统,其包括:
第一易失性存储器装置,其包括第一存储器缓冲器;
非易失性存储器装置,其经配置以存储多个叠加区段,其中所述多个叠加区段中的每一叠加区段包括一组相应的可执行指令;
主机接口,其用于与主机系统通信;及
处理装置,其用于:
确定第一组可执行指令经包含于所述多个叠加区段中的第一叠加区段中;
响应于确定所述多个叠加区段中的所述第一叠加区段不存在于所述存储器子系统的所述第一易失性存储器装置上,经由所述主机接口将所述第一叠加区段从所述主机系统的第二易失性存储器装置的第二存储器缓冲器复制到所述第一易失性存储器装置的所述第一存储器缓冲器;及
执行驻留于所述第一存储器缓冲器中的所述第一组可执行指令。
9.根据权利要求8所述的存储器子系统,其进一步包括:
响应于确定所述多个叠加区段中的所述第一叠加区段不存在于所述主机系统的所述第二易失性存储器装置上,经由所述主机接口将所述第一叠加区段从所述非易失性存储器装置复制到所述主机系统的所述第二易失性存储器装置的所述第二存储器缓冲器。
10.根据权利要求8所述的存储器子系统,其中为了确定所述第一组可执行指令经包含于所述第一叠加区段中,所述处理装置将:
将所述第一组可执行指令的存储器地址作为参数值提供给叠加区段识别函数;及
接收所述第一组可执行指令经包含于所述第一叠加区段中的指示作为所述叠加区段识别函数的输出。
11.根据权利要求8所述的存储器子系统,其中为了确定所述第一叠加区段是否存在于所述存储器子系统的所述第一易失性存储器装置上,所述处理装置将:
识别对应于所述第一叠加区段的叠加数据结构的条目,其中所述叠加数据结构的所述条目包括所述第一叠加区段的当前存储器位置的存储器地址;及
基于包含于所述叠加数据结构的所述经识别条目中的所述第一叠加区段的所述当前存储器位置的所述存储器地址,确定所述第一叠加区段是否存在于所述第一易失性存储器装置上。
12.根据权利要求8所述的存储器子系统,其中所述处理装置将进一步:
确定第二叠加区段存在于所述第一存储器缓冲器中且所述第一存储器缓冲器不可用于所述第一叠加区段的复制;及
从所述第一存储器缓冲器移除所述第二叠加区段,
其中响应于从所述第一存储器缓冲器移除所述第二叠加区段,将所述第一叠加区段从所述第二存储器缓冲器复制到所述第一存储器缓冲器。
13.根据权利要求8所述的存储器子系统,其中所述主机接口包括外围组件互连高速电接口。
14.一种包括指令的非暂时性计算机可读存储媒体,当由处理装置执行所述指令时致使所述处理装置:
将多个叠加区段从存储器子系统的非易失性存储器装置复制到驻留于与所述存储器子系统通信的主机系统的第一易失性存储器装置上的第一存储器缓冲器,其中所述多个叠加区段中的每一叠加区段包括一组相应的可执行指令;
将所述多个叠加区段中的第一叠加区段从所述第一存储器缓冲器复制到驻留于所述存储器子系统的第二易失性存储器装置上的第二存储器缓冲器;
执行驻留于所述第二存储器缓冲器中的所述第一叠加区段中所包含的第一组指令;
将所述多个叠加区段中的第二叠加区段从所述第一存储器缓冲器复制到所述第二存储器缓冲器;及
执行驻留于所述第二存储器缓冲器中的所述第二叠加区段的第二组可执行指令。
15.根据权利要求14所述的非暂时性计算机可读存储媒体,其中所述处理装置将进一步:
将存储于所述非易失性存储器装置处的一或多组可执行指令指派到所述多个叠加区段中的相应叠加区段。
16.根据权利要求15所述的非暂时性计算机可读存储媒体,其中所述处理装置将进一步:
识别存储于所述非易失性存储器装置处的所述第一组可执行指令及所述第二组可执行指令,其中所述第一组可执行指令与第一执行频率相关联,且所述第二组可执行指令与第二执行频率相关联,
其中响应于确定所述第一执行频率低于所述第二执行频率,所述第一组可执行指令经指派到所述第一叠加区段且所述第二组可执行指令经指派到所述第二叠加区段。
17.根据权利要求15所述的非暂时性计算机可读存储媒体,其中所述处理装置将进一步:
确定所述第一组可执行指令中的指令是否包含对第三组可执行指令中的额外指令的引用,
其中响应于确定所述第一组可执行指令中的所述指令包含对所述第三组可执行指令中的所述额外指令的引用,所述第一组可执行指令及所述第三组可执行指令经指派到所述第一叠加区段。
18.根据权利要求14所述的非暂时性计算机可读存储媒体,其中所述处理装置将进一步:
确定在所述第二存储器缓冲器上空间是否可用于将所述第二叠加区段从所述第一存储器缓冲器复制到所述第二存储器缓冲器;
响应于确定在所述第二存储器缓冲器上空间不可用,从所述第二存储器缓冲器移除所述第一叠加区段,
其中响应于从所述第二存储器缓冲器移除所述第一叠加区段,所述处理器装置将第二叠加区段从所述第一存储器缓冲器复制到所述第二存储器缓冲器。
19.根据权利要求14所述的非暂时性计算机可读存储媒体,其中所述处理装置将进一步:
分配所述第一存储器缓冲器的一或多个部分以用于所述多个叠加区段的复制,其中所述处理装置将所述第一叠加区段及所述第二叠加区段复制到所述第一存储器缓冲器的所述一或多个经分配部分。
20.根据权利要求19所述的非暂时性计算机可读存储媒体,其中所述处理装置将进一步:
基于所述第一存储器缓冲器的所述一或多个经分配部分的大小或数目中的至少一者来确定将复制到所述第一存储器缓冲器的所述一或多个经分配部分的所述多个叠加区段的数目。
CN202080022052.2A 2020-08-07 2020-08-07 使用主机存储器缓冲器的存储器叠加 Pending CN114303137A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2020/107787 WO2022027578A1 (en) 2020-08-07 2020-08-07 Memory overlay using host memory buffer

Publications (1)

Publication Number Publication Date
CN114303137A true CN114303137A (zh) 2022-04-08

Family

ID=80119023

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080022052.2A Pending CN114303137A (zh) 2020-08-07 2020-08-07 使用主机存储器缓冲器的存储器叠加

Country Status (3)

Country Link
US (1) US20230129363A1 (zh)
CN (1) CN114303137A (zh)
WO (1) WO2022027578A1 (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090113207A1 (en) * 2007-10-30 2009-04-30 Sandisk Il Ltd. Secure overlay manager protection
US20090210615A1 (en) * 2008-02-14 2009-08-20 Vadzim Struk Overlay management in a flash memory storage device
CN104081366A (zh) * 2012-01-26 2014-10-01 内存技术有限责任公司 借助非易失性大容量存储器系统提供高速缓冲存储器移动的设备和方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9436480B1 (en) * 2013-11-08 2016-09-06 Western Digital Technologies, Inc. Firmware RAM usage without overlays
US9734117B2 (en) * 2015-01-26 2017-08-15 Western Digital Technologies, Inc. Data storage device and method for integrated bridge firmware to be retrieved from a storage system on chip (SOC)
TWI588742B (zh) * 2015-07-27 2017-06-21 晨星半導體股份有限公司 應用程式的程式碼載入方法及應用其方法的電腦系統
CN106708444A (zh) * 2017-01-17 2017-05-24 北京联想核芯科技有限公司 数据存储方法和硬盘控制器
EP3598313B1 (en) * 2017-04-14 2021-06-30 Huawei Technologies Co., Ltd. Data access method and device
KR20210023184A (ko) * 2019-08-22 2021-03-04 에스케이하이닉스 주식회사 런타임 오버레이를 통해 펌웨어를 관리하는 장치 및 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090113207A1 (en) * 2007-10-30 2009-04-30 Sandisk Il Ltd. Secure overlay manager protection
US20090210615A1 (en) * 2008-02-14 2009-08-20 Vadzim Struk Overlay management in a flash memory storage device
CN104081366A (zh) * 2012-01-26 2014-10-01 内存技术有限责任公司 借助非易失性大容量存储器系统提供高速缓冲存储器移动的设备和方法

Also Published As

Publication number Publication date
WO2022027578A1 (en) 2022-02-10
US20230129363A1 (en) 2023-04-27
WO2022027578A8 (en) 2022-03-17

Similar Documents

Publication Publication Date Title
CN115699185A (zh) 在存储装置上每单元实施可变数目的位
CN112948284A (zh) 高速缓存媒体中的动态存取粒度
US20220050772A1 (en) Data block switching at a memory sub-system
US20240062820A1 (en) Tracking operations performed at a memory device
US20240028239A1 (en) Zone block staging component for a memory sub-system with zoned namespace
CN114981785A (zh) 基于改变高速缓存中数据块的写入模式执行媒体管理操作
US20230195350A1 (en) Resequencing data programmed to multiple level memory cells at a memory sub-system
US20220171713A1 (en) Temperature-aware data management in memory sub-systems
US11675695B2 (en) Namespace management for memory sub-systems
CN113342710A (zh) 存储器装置页面程序序列
WO2022027578A1 (en) Memory overlay using host memory buffer
CN113918479B (zh) 用于并行独立线程的低位密度存储器高速缓存的方法及系统
US11922011B2 (en) Virtual management unit scheme for two-pass programming in a memory sub-system
US11934685B2 (en) Performing memory access operations based on quad-level cell to single-level cell mapping table
CN113094293B (zh) 存储器系统及相关方法和计算机可读存储介质
US11934676B2 (en) Memory command aggregation to improve sequential memory command performance
US20240069774A1 (en) Deferred zone adjustment in zone memory system
US20230065337A1 (en) Managing trim commands in a memory sub-system
CN113253917A (zh) 用于存储器子系统的媒体管理的多状态炼狱
CN115273925A (zh) 存储器子系统刷新
CN115729459A (zh) 管理存储器子系统中的页地址和分区号的分布
CN113126899A (zh) 完全多平面操作启用
CN114647377A (zh) 基于有效存储器单元计数的数据操作
CN114077404A (zh) 使存储器单元与主机系统解除关联

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20220408