CN111108488B - 内存块回收方法和装置 - Google Patents
内存块回收方法和装置 Download PDFInfo
- Publication number
- CN111108488B CN111108488B CN201780095112.1A CN201780095112A CN111108488B CN 111108488 B CN111108488 B CN 111108488B CN 201780095112 A CN201780095112 A CN 201780095112A CN 111108488 B CN111108488 B CN 111108488B
- Authority
- CN
- China
- Prior art keywords
- memory
- controller
- information
- media controller
- memory block
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
- G06F2212/1036—Life time enhancement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7211—Wear leveling
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)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
一种内存块回收方法和装置,该方法包括:介质控制器接收内存控制器发送的释放命令,释放命令包括待回收的内存块的内存逻辑地址信息(S201);介质控制器根据内存逻辑地址信息回收内存块;其中,回收后的内存块为可用内存块(S202)。所述介质控制器在接收到内存控制器发送的释放命令后,根据释放命令中包括的待回收的内存块的内存逻辑地址信息,释放对应的内存块,将内存块回收,提高了介质控制器的介质管理操作效果,进而提高了NVDIMM的存储性能并延长了NVDIMM的寿命。
Description
技术领域
本申请涉及计算机技术,尤其涉及一种内存块回收方法和装置。
背景技术
非易失性双列直插式内存模块(non-volatile dual in-line memory module,NVDIMM)是一种计算机的随机存取存储器(random access memory,RAM)。NVDIMM上可以包括多个非易失性内存(non-volatile memory,NVM)芯片。NVDIMM能够在系统完全断电的时候依然保存完整的内存数据。可以理解的是,NVDIMM上的NVM芯片具体可以为非易失性随机存取存储器(non-volatile random access memory,NVRAM)。NVDIMM上的NVM可以包括相变存储器(phase change memory,PCM)、电阻性随机存取存储器(resistive random accessmemory,RRAM)、磁性随机存取存储器(magnetic random access memory,MRAM)、自旋扭矩转换磁性随机存取存储器(spin-transfer torque MRAM,STT MRAM)等等。NVDIMM采用NVDIMM-P协议与内存控制器通信。NVDIMM-P协议是兼容双倍速率(double data rate,DDR)协议的一个总线访问协议。
然而,与动态随机存取存储器(Dynamic Random Access Memory,DRAM)相比,NVM的耐疲劳性较差,其写次数有限。因此,当NVM芯片中某些内存块达到最大写次数时,就会导致该NVM芯片不可用,从而会影响整个NVDIMM的使用寿命。为避免NVM芯片中不同内存块的写次数不均衡,以提升磨损均衡的效果,延长NVDIMM的使用寿命,需要对NVDIMM进行内存管理。
发明内容
本申请实施例提供一种内存块回收方法和装置,能够提升内存块的回收速度,提高磨损均衡效果。
第一方面,本申请实施例提供一种内存块回收方法,所述方法应用于计算机系统中,所述计算机系统包括内存控制器、介质控制器以及与所述介质控制器连接的非易失性内存,所述内存控制器与所述介质控制器通过NVDIMM-P协议进行通信,所述非易失性内存包括多个内存块,所述方法包括:
所述介质控制器接收所述内存控制器发送的释放命令,所述释放命令包括待回收的内存块的内存逻辑地址信息;所述介质控制器根据所述内存逻辑地址信息回收所述内存块;其中,回收后的所述内存块为可用内存块。
上述介质控制器在接收到内存控制器发送的释放命令后,根据释放命令中包括的待回收的内存块的内存逻辑地址信息,释放对应的内存块,将内存块回收,提高了介质控制器的介质管理操作效果,进而提高了NVDIMM的存储性能并延长了NVDIMM的寿命。
在一种可能的实施方式中,所述介质控制器根据所述内存逻辑地址信息回收所述内存块,包括:
所述介质控制器根据所述内存逻辑地址信息,删除所述内存块的内存逻辑地址和对应的内存物理地址之间的映射关系;所述介质控制器将所述内存块的内存物理地址添加至内存空闲列表中。
由于介质控制器能够及时删除内存块的内存逻辑地址和对应的内存物理地址之间的映射关系,从而能够增加可用内存块的数量,增强内存块间的磨损均衡的效果,可以提高NVDIMM的性能和寿命。实现了在NVDIMM做内存的情况下,对内存模块的管理。
在一种可能的实施方式中,所述内存逻辑地址信息包括待回收的内存块的起始地址和长度信息,所述起始地址用于指示待回收的内存块的首地址,所述长度信息用于指示待回收的内存块的数量。
在一种可能的实施方式中,所述释放命令还包括擦除模式指示信息;所述方法还包括:
若所述擦除模式指示信息指示擦除所述内存块中的数据信息,所述介质控制器将预设数据写入所述内存块中。
本实施方式中释放命令还包括擦除模式指示信息,可以在内存块中的数据为敏感数据时,指示介质控制器采用预设数据将敏感数据覆盖,从而保护了敏感数据,提高了NVDIMM的安全性。
在一种可能的实施方式中,所述方法还包括:
所述介质控制器接收所述内存控制器发送的读命令,所述读命令包括待读取数据的所述内存逻辑地址信息;
所述介质控制器确定根据所述内存逻辑地址信息没有查找到对应的内存物理地址;
所述介质控制器向所述内存控制器发送错误响应信息;其中,所述错误响应信息用于指示所述读命令执行失败。
第二方面,本申请实施例还提供一种内存块回收方法,所述方法应用于计算机系统中,所述计算机系统包括处理器、内存控制器、介质控制器以及与所述介质控制器连接的非易失性内存,所述内存控制器与所述介质控制器通过NVDIMM-P协议进行通信,所述非易失性内存包括多个内存块,所述方法包括:
所述内存控制器接收所述处理器发送的修剪(TRIM)指令,所述修剪指令包括待回收的内存块的内存逻辑地址信息;
所述内存控制器向所述介质控制器发送释放命令;
其中,所述释放命令包括所述待回收的内存块的内存逻辑地址信息,所述释放命令用于指示所述介质控制器回收所述内存块,回收后的所述内存块为可用内存块。
在一种可能的实施方式中,所述内存逻辑地址信息包括待回收的内存块的起始地址和长度信息,所述起始地址用于指示待回收的内存块的首地址,所述长度信息用于指示待回收的内存块的数量。
在一种可能的实施方式中,所述释放命令还包括擦除模式指示信息;当所述擦除模式指示信息指示擦除所述内存块中的数据信息时,所述释放命令还用于指示所述介质控制器将预设数据写入所述内存块中。
在一种可能的实施方式中,所述方法还包括:
所述内存控制器向所述介质控制器发送读命令,所述读命令包括待读取数据的所述内存逻辑地址信息;
所述内存控制器接收所述介质控制器发送的错误响应信息,其中,所述错误响应信息用于指示所述读命令执行失败。
第三方面,本申请实施例还提供一种存储器,用于执行上述第一方面的内存块回收方法,具有相同的技术特征和技术效果。本申请对此不再赘述。
本申请实施例第三方面提供一种存储器,包括介质控制器以及与所述介质控制器连接的非易失性内存,所述介质控制器通过NVDIMM-P协议与处理器的内存控制器进行通信,所述非易失性内存包括多个内存块;所述介质控制器用于;
接收所述内存控制器发送的释放命令,所述释放命令包括待回收的内存块的内存逻辑地址信息;
根据所述内存逻辑地址信息回收所述内存块,其中,回收后的所述内存块为可用内存块。
在一种可能的实施方式中,所述介质控制器还用于:
根据所述内存逻辑地址信息,删除所述内存块的内存逻辑地址和对应的内存物理地址之间的映射关系;
将所述内存块的内存物理地址添加至内存空闲列表中。
在一种可能的实施方式中,所述内存逻辑地址信息包括待回收的内存块的起始地址和长度信息,所述起始地址用于指示待回收的内存块的首地址,所述长度信息用于指示待回收的内存块的数量。
在一种可能的实施方式中,所述释放命令还包括擦除模式指示信息,所述介质控制器还用于:
在所述擦除模式指示信息指示擦除所述内存块中的数据信息时,将预设数据写入所述内存块中。
在一种可能的实施方式中,所述介质控制器还用于:
接收所述内存控制器发送的读命令,所述读命令包括待读取数据的所述内存逻辑地址信息;
确定根据所述内存逻辑地址信息没有查找到对应的内存物理地址;
向所述内存控制器发送错误响应信息;其中,所述错误响应信息用于指示所述读命令执行失败。
第四方面,本申请实施例还提供一种计算机系统,所述计算机系统包括处理器、内存控制器、介质控制器以及与所述介质控制器连接的非易失性内存,所述内存控制器与所述介质控制器通过NVDIMM-P协议进行通信,所述非易失性内存包括多个内存块;其中,所述内存控制器用于:
接收所述处理器发送的修剪指令,所述修剪指令包括待回收的内存块的内存逻辑地址信息;
向所述介质控制器发送释放命令,其中,所述释放命令包括所述待回收的内存块的内存逻辑地址信息,所述释放命令用于指示所述介质控制器回收所述内存块;
所述介质控制器用于:
接收所述内存控制器发送的所述释放命令;
根据所述内存逻辑地址信息回收所述内存块,其中,回收后的所述内存块为可用内存块。
在一种可能的实施方式中,所述内存逻辑地址信息包括待回收的内存块的起始地址和长度信息,所述起始地址用于指示待回收的内存块的首地址,所述长度信息用于指示待回收的内存块的数量。
在一种可能的实施方式中,所述释放命令还包括擦除模式指示信息;所述介质控制器还用于:
当所述擦除模式指示信息指示擦除所述内存块中的数据信息时,将预设数据写入所述内存块中。
在一种可能的实施方式中,所述内存控制器还用于:
接收处理器发送的内存访问请求,所述内存访问请求中包括待读取数据的所述内存逻辑地址信息;
所述内存控制器还用于,根据所述内存访问请求向所述介质控制器发送读命令,所述读命令中携带有所述内存逻辑地址信息;
所述介质控制器还用于:
确定根据所述内存逻辑地址信息没有查找到对应的内存物理地址;
向所述内存控制器发送错误响应信息;其中,所述错误响应信息用于指示所述读命令执行失败;
所述内存控制器还用于,根据所述错误响应信息向所述处理器发送读失败信息。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例。
图1为本申请实施例提供的一种计算机系统架构示意图;
图2为本申请实施例一提供的内存块回收方法的流程示意图;
图3为本申请实施例二提供的内存块回收方法的信令流程图;
图4为本申请实施例提供的一种读数据的方法流程图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚地描述。显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。
图1为本申请实施例提供的一种计算机系统架构示意图。如图1所示,计算机系统100至少可以包括处理器102、内存控制器106以及NVDIMM 108。通常,内存控制器106可以集成在处理器102中。需要说明的是,本申请实施例提供的计算机系统中,除了图1所示的器件外,计算机系统100还可以包括通信接口以及作为外存的磁盘等其他器件,在此不做限制。
处理器(processor)102是计算机系统100的运算核心和控制核心(controlunit)。处理器102中可以包括一个或多个处理器核(core)104。处理器102可以是一块超大规模的集成电路。在处理器102中安装有操作系统和其他软件程序,从而处理器102能够实现对NVDIMM 108、缓存及磁盘的访问。可以理解的是,在本申请实施例中,处理器102中的Core 104例如可以是中央处理器(central processing unit,CPU),还可以是其他特定集成电路(application specific integrated circuit,ASIC)。
内存控制器(memory controller)106是计算机系统100内部控制NVDIMM 108并用于管理与规划从NVDIMM 108到Core 104间的数据传输的总线电路控制器。通过内存控制器106,NVDIMM 108与Core 104之间可以交换数据。内存控制器106可以是一个单独的芯片,并通过系统总线与Core 104连接。本领域技术人员可以知道,内存控制器106也可以被集成到处理器102中(如图1所示)也可以被内置于北桥中。本申请实施例不对内存控制器106的具体位置进行限定。实际应用中,内存控制器106可以包括通信接口1062和控制电路1064,内存控制器106可以通过通信接口1062与处理器102和NVDIMM 108进行通信。内存控制器106可以通过控制电路1064控制必要的逻辑以将数据写入NVDIMM 108或从NVDIMM 108中读取数据。
NVDIMM 108是计算机系统100的一种随机存取存储器RAM,可以作为计算机系统100的内存或存储。NVDIMM 108可以包括介质控制器110、至少一个NVM 112以及一个或多个缓存114。介质控制器110可以包括具有控制能力的逻辑电路。NVM 112用于存放操作系统中各种正在运行的软件、输入和输出数据以及与外存交换的信息等。其中,NVM 112可以以芯片的形式存在。示例性的,NVM 112可以包括相变存储器(phase change memory,PCM)、电阻性随机存取存储器(resistive random access memory,RRAM)、磁性随机存取存储器(magnetic random access memory,MRAM)、自旋扭矩转换磁性随机存取存储器(spin-transfer torque MRAM,STT MRAM)等可以作为内存的非易失性存储器。
内存控制器106通过总线105和NVDIMM 108进行连接。内存控制器106与NVDIMM108之间的通信遵从NVDIMM-P协议。NVDIMM-P协议是兼容双倍速率(double data rate,DDR)协议的一种异步协议。介质控制器110可以根据内存控制器106的访存命令对NVM 112中存储的数据进行访问。可以理解的是,内存控制器106发送的访存命令可以是读命令或写命令。介质控制器110可以根据内存控制器106发送的读命令从NVM 112中读取数据并存储至读缓冲区,并向内存控制器106发送异步信号以通知内存控制器106从所述读缓冲区内读取数据,或者,介质控制器110还可以根据内存控制器106发送的写命令将数据先存储在写缓冲区,并将写缓冲区中的数据写入NVM 112或缓存114中。
本申请实施例中总线105至少可以包括数据总线以及命令/地址总线。其中,数据总线用于传输数据及元数据。命令/地址总线用于传输读命令、写命令等访存命令。缓存114用于缓存介质控制器110从NVM 112读取的数据。
为了延长NVDIMM的寿命和提高NVDIMM的性能,介质控制器需要执行不同的介质管理操作,例如磨损均衡(Wear Leveling)、坏块管理、缓存和NVM之间的数据搬移等。其中,磨损均衡是指尽可能地将数据平均分配到NVDIMM的每一个内存块中,保证对每一个内存块的擦写次数一致,以提高NVDIMM的寿命。当介质控制器为数据分配新的内存块时,在内存空闲列表中优先选择磨损次数较少的内存块。坏块管理是指在确定了内存块为坏块后,为当前坏块中的数据在内存空闲列表中选择新的内存块。缓存和NVM之间的数据搬移是为了将经常被访问的数据保存在缓存中,不经常被访问的数据被搬移至NVM中,以提高读写请求的处理速度,但是将缓存中的数据写入NVM中时,需要为缓存中的数据在内存空闲列表中选择新的内存块。由上述分析可知,内存空闲列表的及时更新决定了介质控制器的介质管理操作的管理效果,进而影响了NVDIMM的寿命和性能。
为了提高上述介质管理操作的效率,本申请实施例提供一种内存块回收方法和装置。
下面结合具体实施例对本申请实施例提供的内存块回收方法和装置进行详细说明。下面这几个具体的实施例中,对于相同或相似的概念或过程可能在某些实施例不再赘述。
本申请实施例一方面提供一种内存块回收方法。图2为本申请实施例一提供的内存块回收方法的流程示意图。本实施例中介质控制器接收内存控制器发送的释放命令,根据释放命令回收内存块,将内存块转换为可用内存块,提高了介质控制器的介质管理操作的管理效果,进而提高了NVDIMM的存储性能并延长了NVDIMM的寿命。如图2所示,本实施例提供的内存块回收方法,应用于如图1所示的计算机系统中,内存块回收方法的执行主体示例性的可以为图1中的介质控制器。计算机系统包括内存控制器、介质控制器以及与介质控制器连接的非易失性内存,内存控制器与介质控制器通过NVDIMM-P协议进行通信,非易失性内存包括多个内存块,内存块回收方法包括:
S201、内存控制器向介质控制器发送释放命令,释放命令包括待回收的内存块的内存逻辑地址信息。
示例性的,介质控制器在接收到内存控制器发送的访问请求时,通常为访问请求中的内存逻辑地址分配对应的内存物理地址,并存储内存逻辑地址和内存物理地址的映射关系。当内存控制器读或写该内存逻辑地址时,介质控制器可以根据映射关系去对应的内存物理地址中进行读或写。介质控制器为内存逻辑地址分配内存物理地址时,介质控制器从内存空闲列表中选择内存块。为确保NVM芯片中的内存块的磨损平衡效果,应保证未被使用的内存块被及时的转换为可用内存块,避免部分内存块无法参与到介质管理中,内存资源被浪费,降低了NVDIMM的寿命。为实现上述目的,内存控制器向介质控制器发送释放命令(unmap命令),释放命令中携带有待回收的内存块的内存逻辑地址信息。释放命令用于指示介质控制器根据释放命令进行内存块的回收。介质控制器在接收到释放命令时,即可根据释放命令中的待回收的内存块的内存逻辑地址信息,确定待回收的内存物理地址信息。
S202、介质控制器根据内存逻辑地址信息回收内存块;其中,回收后的内存块为可用内存块。
示例性的,介质控制器根据释放命令中的内存逻辑地址信息,进行指定的内存块的回收,回收后的内存块为可用内存块,介质控制器在进行磨损均衡等介质管理时,可对该内存块进行管理。现有内存控制器在释放对象时,通常不向介质控制器发送该对象所对应的数据所占用的内存块的释放命令,本实施例通过向介质控制器发送释放命令,将指定内存块回收,使得内存块变为可用内存块,使得未使用的内存块可以尽快被释放,避免了超额配置所带来的开销较大的问题。也使得未使用的内存块可以尽早在介质管理操作中被管理,提高了NVDIMM的存储性能并延长了NVDIMM的寿命。
本申请实施例提供一种内存块回收方法,该方法包括:介质控制器接收内存控制器发送的释放命令,释放命令包括待回收的内存块的内存逻辑地址信息;介质控制器根据内存逻辑地址信息回收内存块;其中,回收后的内存块为可用内存块。介质控制器在接收到内存控制器发送的释放命令后,根据释放命令中包括的待回收的内存块的内存逻辑地址信息,释放对应的内存块,将内存块回收,提高了介质控制器的介质管理操作效果,进而提高了NVDIMM的存储性能并延长了NVDIMM的寿命。
示例性的,在图2所示实施例的基础上,本申请实施例还提供一种内存块回收方法。图3为本申请实施例二提供的内存块回收方法的信令流程图。本实施例中对介质控制器根据释放命令回收内存块的具体过程进行详细说明。如图3所示,内存块回收方法包括:
S301、介质控制器接收内存控制器发送的释放命令,释放命令包括待回收的内存块的内存逻辑地址信息。
示例性的,本实施例中的S301与图2所示实施例中的S201相同,本申请对此不再赘述。
可选的,在图2和图3所示实施例中,内存逻辑地址信息包括待回收的内存块的起始地址和长度信息,起始地址用于指示待回收的内存块的首地址,长度信息用于指示待回收的内存块的数量。
示例性的,介质控制器在回收内存块时,根据释放命令中的待回收的内存块的起始地址以及待回收的内存块的总长度,确定内存物理地址中哪些内存块会被回收。示例性的,当待回收的内存块为连续的内存块1、2和3时,起始地址示例性的可以为内存块1的首地址,长度信息可以为3。可选的,内存控制器和介质控制器约定内存块的粒度。可选的,释放命令中还可包括内存块的粒度大小信息。
可选的,在上述实施例的基础上,在S301之前,内存块回收方法还包括:
S300、内存控制器接收处理器发送的修剪指令,修剪指令包括待回收的内存块的内存逻辑地址信息。
示例性的,处理器(例如图1中的任一处理器核104)向内存控制器发送修剪指令(TRIM指令),内存控制器在接收到TRIM指令后,向介质控制器发送释放命令。其中,TRIM指令是操作系统用于通知内存哪些内存块不再使用,可以被擦除的命令。
具体的,当运行于处理器中的操作系统在删除对象时,介质控制器并无法知道对象已经被删除,介质控制器中还存储有逻辑地址和物理地址的映射关系。因此,在本申请实施例中,当对象文件被删除时,处理器可以向内存控制器发送TRIM指令,所述TRIM指令中携带有内存块的地址,所述TRIM指令用于通知内存控制器该内存块的数据所对应的对象已被删除,该内存块的数据可被删除,该内存块可被回收。
实际应用中,当处理器在检测到如下中的任一种情况发生时,处理器向内存控制器发送修剪指令:
存在对象和该对象对应的数据被释放、存在超过预设大小的内存块被释放、应用结束、内存的读写请求数量少于预设数量或者处理器根据预设的操作系统内存管理算法确定需要发送修剪指令。
示例性的,当处理器检测到有对象被释放时,处理器将该对象占用的内存块作为待回收的内存块向内存控制器发送修剪指令。可选的,为减少处理器核内存控制器之间的信令交互,可在处理器检测到有超过预设大小的内存块被释放时,处理器再将该些内存块作为待回收的内存块向内存控制器发送修剪指令。可选的,处理器检测到有应用结束时,将该应用占用的内存块作为待回收的内存块向内存控制器发送修剪指令。可选的,处理器在检测到读写请求较少时,也即内存处于空闲时,向内存控制器发送修剪指令,避免在内存忙碌时进行内存释放,可提高内存的读写性能。可选的,处理器还可在预设的操作系统内存管理算法确定需要发送修剪指令时,向内存控制器发送修剪指令。
实际应用中,介质控制器和内存控制器之间可以采用第四代双倍速率同步(DDR4)接口或第五代双倍速率同步(DDR5)接口。当采用不同的DDR接口时,内存控制器向介质控制器发送的释放命令的格式不同。
第一种可能的实现方式中,介质控制器和内存控制器之间采用DDR4接口,释放命令(unmap命令)的格式如下表1所示:
表1
示例性的,由于释放命令长度有限,无法携带待回收的内存块的完整的地址信息,因此,内存控制器在发送释放命令之后,通常还发送一个扩展地址命令。释放命令和扩展地址命令背靠背发送,也即内存控制器将释放命令和扩展地址命令交替发送,例如,内存控制器在第一时钟节拍发送完第一释放命令后,在第二时钟节拍发送第一扩展地址命令,然后再依次在后续的时钟节拍发送第二释放命令和第二扩展地址命令。其中,释放命令和扩展地址命令在两个时钟节拍发送。扩展地址命令的格式同样如表1所示。其中,一个时钟节拍为一个时钟变化沿,变化沿可以为上升沿或下降沿。
示例性的,如表1所示,释放命令和扩展地址命令中H(high)表示二进制数据1,L(low)表示二进制数据0。其中,CKE0(Clock Enable)位用于指示时钟使能信号,Previous(previous cycle)位用于指示前一个时钟是否有效,Current(current cycle)位用于指示当前时钟是否有效。如表1所示,当Previous位和Current位均为H时,时钟使能信号有效,介质控制器在时钟使能信号有效时接收释放命令。CS(Chip Select)为片选信号。在内存通道上存在有多个内存条,内存控制器可以通过片选信号确定接收释放命令和扩展地址命令的内存条。当某一内存条接收到的片选信号为L时,表示被选中,接收释放命令和扩展地址命令。其中,ADDR[39:2]字段用于存储待回收的内存块的起始地址。换一种表达方式,ADDR[39:2]为待回收的内存块的起始地址,也即待回收的第一个内存块的起始地址。LENGTH[4:0]用于指示待回收的内存块的长度信息,具体的,可以用于指示待回收的内存块的数量。以LENGTH[4:0]为例,LENGTH[4:0]字段的最大取值为32,因此,通过一个unmap命令,可以指示回收32个内存块。OPCODE[0]字段用于指示擦除模式信息。
第二种可能的实现方式中,介质控制器和内存控制器之间采用DDR5接口,释放命令的格式如下表2所示:
表2
其中,与第一种可能的实现方式相似,由于释放命令长度有限,无法携带待回收的内存块的完整的地址信息,因此,内存控制器在发送释放命令之后,通常还发送一个扩展地址命令。释放命令和扩展地址命令背靠背发送,也即内存控制器将释放命令和扩展地址命令交替发送。与第一种可能的实现方式不同的是,本实现方式中,释放命令和扩展地址命令均需占用两个时钟周期发送,每个时钟周期内包括一个时钟上升沿和一个时钟下降沿。本实施例中,内存控制器在第一时钟周期内的两个时钟沿上发送完释放命令的第一部分后,在第二时钟周期内的两个时钟沿上发送释放命令的第二部分,然后内存控制器在第三时钟周期内的两个时钟沿上发送扩展地址命令的第一部分,再然后在第四时钟周期内的的两个时钟沿上发送扩展地址命令的第二部分。内存控制器再依次在后续的时钟节拍发送其他的释放命令和扩展地址命令。扩展地址命令的格式同样如表2所示。
其中,释放命令和扩展地址命令中H(high)表示二进制数据1,L(low)表示二进制数据0。其中,CS(Chip Select)为片选信号。当第一个时钟周期内检测到CS为L时,表示释放命令或扩展地址命令开始。对于第二个时钟周期内的释放命令或扩展地址命令,当检测到CS为H时,表示接收到释放命令或扩展地址命令的第二部分。但是,当在第二个时钟内仍检测到CS为L时,则表示释放命令或扩展地址命令出错。此时,可将两个时钟周期内的释放命令或扩展地址命令均舍弃,或者将第一个时钟周期内检测到CS为L的释放命令或扩展地址命令舍弃。ADDR[39:1]字段用于指示待回收的内存块的起始地址。换一种表达方式,ADDR[39:1]字段用于指示待回收的第一个内存块的起始地址。LENGTH[6:0]用于指示待回收的内存块的长度信息,具体的,可以用于指示待回收的内存块的数量。以LENGTH[6:0]为例,LENGTH[6:0]字段的最大取值为128,因此,通过一个unmap命令,可以指示回收128个内存块。OPCODE[0]字段用于指示擦除模式的信息。
S302、介质控制器根据内存逻辑地址信息,删除内存块的内存逻辑地址和对应的内存物理地址之间的映射关系。具体的,介质控制器接收到释放命令后,根据释放命令中的第一内存逻辑地址信息,可以确定第一内存逻辑地址对应的第一内存物理地址,从而,介质控制器可以将第一内存逻辑地址和第一内存物理地址之间的映射关系删除,使得第一内存物理地址不再存在对应的内存逻辑地址,介质控制器可以为第一内存物理地址分配新的内存逻辑地址。若不删除第一内存逻辑地址和第一内存物理地址之间的映射关系,介质控制器只能在内存控制器下一次访问第一内存逻辑地址时,才访问第一内存物理地址,但是两次访问间隔可能会很长,将会使得第一内存物理地址的擦写次数明显低于NVM中其他内存块的擦写次数,可能影响NVDMM的寿命。
S303、介质控制器将内存块的内存物理地址添加至内存空闲列表中。在本申请实施例中个,没有对应的内存逻辑地址的内存物理地址为可用内存块,介质控制器将该内存物理地址添加至内存空闲列表中。在本申请实施例中,内存空闲列表中所指示的内存块为可用的内存块。换一种表达方式,当需要为新的访问请求分配内存块时,介质控制器可以根据内存空闲列表分配内存块。实际应用中,内存空闲列表中的内存块可按照内存块的写次数由小到大排列。介质控制器在分配内存块的过程中,可以优先分配擦写次数少的内存块。当然,实际应用中,介质控制器也可以随机分配内存块。在此不做限定。在本申请实施例提供的包含有NVDIMM的计算机系统中,内存控制器可以根据NVDIMM-P协议向介质控制器发送释放命令,以指示介质控制器回收内存块。介质控制器接收到释放命令后,可以根据释放命令中携带的内存逻辑地址信息删除内存块的内存逻辑地址和对应的内存物理地址之间的映射关系,回收相应的内存块。
本申请实施例提供的这种通过内存控制器向介质控制器发送释放命令的方式,使介质控制器能够及时删除内存块的内存逻辑地址和对应的内存物理地址之间的映射关系,从而能够增加可用内存块的数量,增强内存块间的磨损均衡的效果,可以提高NVDIMM的性能和寿命。实现了在NVDIMM做内存的情况下,对内存模块的管理。
本领域技术人员可以知道,由于NVM芯片支持按字节写入,因此在内存更新时,可以直接对内存块中的数据进行改写,而不需要提前对不用的内存块进行擦除和垃圾回收。因此,实际应用中,为提高处理速度,在释放内存块时,可以不对回收的内存块进行擦除。但是,对于敏感数据,由于可能存在未擦除数据被泄露的风险。因此,在本申请实施例中,如上表1和表2所示,在释放命令中还可以包括OPCODE[0]字段。OPCODE[0]字段用于指示擦除模式信息。具体的,介质控制器可以根据释放命令中OPCODE[0]字段的擦除模式指示信息确定是否需要对数据块进行擦除。例如,当OPCODE[0]取值为0时,指示无需擦除内存块中的数据信息。当OPCODE[0]取值为1时,指示需要擦除内存块中的数据信息。
具体的,如图3所示,在S302之后,内存块回收方法还可以包括:
S304、若擦除模式指示信息指示擦除内存块中的数据信息,介质控制器将预设数据写入内存块中。示例性的,在本申请实施例中,当OPCODE[0]取值为1时,介质控制器在删除内存块的内存逻辑地址和对应的内存物理地址之间的映射关系,回收所述内存块后,介质控制器可以在回收的内存块中写入预设的数据(pre-defined pattern),以将内存块中原有数据进行覆盖,防止内存块中的敏感数据的泄露。实际应用中,预设的数据可以存储在预设寄存器中。预设的数据可以为全0、全1或其他任意预定义数据。在此不再限定。实际应用中,S304可在S303之前执行,也可以在S303之后执行,也可以与S303同时执行,本申请对此不作限定。
本申请实施例提供的内存块回收方法中,释放命令还包括擦除模式指示信息,可以在内存块中的数据为敏感数据时,指示介质控制器采用预设数据将敏感数据覆盖,从而保护了敏感数据,提高了NVDIMM的安全性。
进一步的,在实际应用中,可能存在多个处理器或多个处理器核访问相同内存块的情况。则当某个内存块被回收后,可能存在其他处理器访问该内存块的情况。下面将对内存块回收之后的,内存控制器和介质控制器之间的读数据的过程进行详细描述。图4为本申请实施例提供的一种读数据的方法流程图。如图4所示,该方法可以包括:
S402、内存控制器接收处理器发送的内存访问请求,所述内存访问请求中包括待读取数据的内存逻辑地址信息。在本申请实施例中,读请求中的内存逻辑地址信息与前述实施例中描述Trim命令中的内存逻辑地址信息相同。
S404、内存控制器向介质控制器发送读命令。具体的,内存控制器会根据接收到内存访问请求向介质控制器发送读命令,所述读命令用于读取所述内存块中的数据,所述内存访问请求中携带有待访问的所述内存块的所述内存逻辑地址。
S406、介质控制器确定根据内存逻辑地址信息没有查找到对应的内存物理地址。介质控制器在接收到所述读命令中,查询读命令中的内存逻辑地址对应的内存物理地址。由于所述读命令中的内存逻辑地址信息与所述Trim命令中的内存逻辑地址相同,所述介质控制器已经根据前述Trim指令回收了所述内存逻辑地址对应的内存块,因此,所述介质控制器根据所述内存逻辑地址信息无法查找到对应的内存物理地址。
S408、介质控制器向内存控制器发送错误响应信息;其中,错误响应信息用于指示读命令执行失败。如前所述,由于介质控制器根据内存逻辑地址信息无法查找到对应的内存物理地址,因此,所述介质控制器无法从所述对应的物理地址中获取相应的数据并返回给所述内存控制器。因此,在本步骤中,介质控制器可以向内存控制器发送错误响应信息,以告知内存控制器读命令执行失败。
S410、内存控制器根据错误响应信息,向处理器发送读失败信息。示例性的,内存控制器接收到介质控制器发送的错误响应信息后,还可根据错误响应信息向处理器发送读失败信息,读失败信息用于通知处理器读命令执行失败。
可选的,内存控制器在接收到错误响应信息时,需根据错误响应信息中携带的错误类型指示信息确定错误类型。具体的,内存控制器可以根据预设的错误类型指示信息和失败类型的映射关系确定接收到的错误响应信息中的错误类型。其中,预设的错误类型指示信息和失败类型的映射关系可以存储在模式寄存器中。
可选的,在本申请实施例中,错误响应信息包括错误类型指示信息和错误指示信息(Poison);其中,错误指示信息用于指示读命令执行失败;错误类型指示信息用于指示失败类型;失败类型包括:错误数据、无法纠正的校验码错误、介质错误和内存通道错误。
示例性的,错误响应信息中包括Poison位,当Poison位取值为0时,指示读命令执行成功。当Poison位取值为1时,指示读命令执行失败。错误响应信息中还包括错误类型指示信息,用于指示读命令执行失败的类型。示例性的,内存控制器根据错误响应信息中的Poison位取值为1确定读命令执行失败,根据错误类型指示信息可以确定读命令执行失败的类型为,介质控制器确定不存在内存块对应的内存物理地址。示例性的,错误类型指示信息的取值不同时,可以代表不同的错误类型。错误类型还可以为:错误数据、无法纠正的校验码错误、介质错误和内存通道错误等。
在一种情况下,介质控制器和内存控制器之间采用DDR4接口时,错误响应信息的一种可能的格式如下表3所示:
表3
其中,DQ0~DQ 63和CB0~CB7均为数据线,用于传输数据。UI0~UI7为时钟线,指示数据传输时的时钟节拍,例如,UI0是第一个时钟节拍,为时钟上升沿,UI1是第二个时钟节拍,为时钟下降沿。一个错误响应信息在DDR4中,至少需要4个时钟周期来发送。如表3所示,在本申请实施例所示的错误响应信息中,RID[7:0]字段用于指示所述读命令的标识ID。错误指示信息用于指示该读命令是否错误。错误类型指示信息字段用于指示错误的类型。ECC字段用于指示传输的数据的校验信息(Error Correcting Code,ECC)。RFU字段为预留位。
在另一种情况下,介质控制器和内存控制器之间采用DDR5接口时,错误响应信息的一种可能的格式如下表4所示:
表4
其中,与表3所示错误响应信息不同的是,在DDR5中,数据线的位数较少,其中,DQ为32位。因此,为了传输相同位数的错误响应信息,在DDR5中所需要的时钟节拍数量多于在DDR4中所需要的时钟节拍数量。
内存控制器向处理器发送的读失败信息可以包括错误类型指示信息和错误指示信息。可选的,读失败信息也可以为错误指示信息,错误指示信息仅用于指示读失败。
本申请实施例另一方面还提供一种存储器,存储器示例性的可以为图1中的NVDIMM,存储器的结构可以如图1中的NVDIMM所示,包括介质控制器110以及与介质控制器110连接的非易失性内存(例如图1中的NVM112),介质控制器110通过NVDIMM-P协议与处理器的内存控制器106进行通信,非易失性内存包括多个内存块。介质控制器110示例性的可以执行上述图2至图4中的内存块回收方法。具体的,介质控制器110用于;
接收内存控制器106发送的释放命令,释放命令包括待回收的内存块的内存逻辑地址信息;
根据内存逻辑地址信息回收内存块,其中,回收后的内存块为可用内存块。
可选的,介质控制器110还用于:
根据内存逻辑地址信息,删除内存块的内存逻辑地址和对应的内存物理地址之间的映射关系;
将内存块的内存物理地址添加至内存空闲列表中。
可选的,内存逻辑地址信息包括待回收的内存块的起始地址和长度信息,起始地址用于指示待回收的内存块的首地址,长度信息用于指示待回收的内存块的数量。
可选的,释放命令还包括擦除模式指示信息,介质控制器110还用于:
在擦除模式指示信息指示擦除内存块中的数据信息时,将预设数据写入内存块中。
可选的,介质控制器110还用于:
接收内存控制器106发送的读命令,读命令包括待读取数据的内存逻辑地址信息;
确定根据内存逻辑地址信息没有查找到对应的内存物理地址;
向内存控制器106发送错误响应信息;其中,错误响应信息用于指示读命令执行失败。
本申请实施例另一方面还提供一种计算机系统,计算机系统的结构如图1所示,包括处理器102、内存控制器106、介质控制器110以及与介质控制器110连接的非易失性内存(例如图1中的NVM112),内存控制器106与介质控制器110通过NVDIMM-P协议进行通信,非易失性内存包括多个内存块;其中,内存控制器106用于:
接收处理器102发送的修剪指令,修剪指令包括待回收的内存块的内存逻辑地址信息;
向介质控制器110发送释放命令,其中,释放命令包括待回收的内存块的内存逻辑地址信息,释放命令用于指示介质控制器110回收内存块;
介质控制器110用于:
接收内存控制器106发送的释放命令;
根据内存逻辑地址信息回收内存块,其中,回收后的内存块为可用内存块。
可选的,内存逻辑地址信息包括待回收的内存块的起始地址和长度信息,起始地址用于指示待回收的内存块的首地址,长度信息用于指示待回收的内存块的数量。
可选的,释放命令还包括擦除模式指示信息;介质控制器110还用于:
当擦除模式指示信息指示擦除内存块中的数据信息时,将预设数据写入内存块中。
可选的,内存控制器106还用于:
接收处理器发送的内存访问请求,内存访问请求中包括待读取数据的内存逻辑地址信息;
内存控制器106还用于,根据内存访问请求向介质控制器110发送读命令,读命令中携带有内存逻辑地址信息;
介质控制器110还用于:
确定根据内存逻辑地址信息没有查找到对应的内存物理地址;
向内存控制器106发送错误响应信息;其中,错误响应信息用于指示读命令执行失败;
内存控制器106还用于,根据错误响应信息向处理器发送读失败信息。
需要说明的是,本申请所提供的实施例仅仅是示意性的。所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。在本申请实施例、权利要求以及附图中揭示的特征可以独立存在也可以组合存在。在本申请实施例中以硬件形式描述的特征可以通过软件来执行,反之亦然。在此不做限定。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如软盘、硬盘、磁带)、光介质(例如光盘)、或者半导体介质(例如固态硬盘(solid-state drive,SSD))等各种可以存储程序代码的非短暂性的(non-transitory)机器可读介质。
需要说明的是,本申请所提供的实施例仅仅是示意性的。所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。在本申请实施例、权利要求以及附图中揭示的特征可以独立存在也可以组合存在。在本申请实施例中以硬件形式描述的特征可以通过软件来执行,反之亦然。在此不做限定。
Claims (18)
1.一种内存块回收方法,其特征在于,所述方法应用于计算机系统中,所述计算机系统包括内存控制器、介质控制器以及与所述介质控制器连接的非易失性内存,所述内存控制器与所述介质控制器通过NVDIMM-P协议进行通信,所述非易失性内存包括多个内存块,所述方法包括:
所述介质控制器接收所述内存控制器交替发送的释放命令和扩展地址命令,所述释放命令和所述扩展地址命令都包括待回收的内存块的内存逻辑地址信息;
所述介质控制器根据所述内存逻辑地址信息回收所述内存块,其中,回收后的所述内存块为可用内存块。
2.根据权利要求1所述的方法,其特征在于,所述介质控制器根据所述内存逻辑地址信息回收所述内存块,包括:
所述介质控制器根据所述内存逻辑地址信息,删除所述内存块的内存逻辑地址和对应的内存物理地址之间的映射关系;
所述介质控制器将所述内存块的内存物理地址添加至内存空闲列表中。
3.根据权利要求1或2所述的方法,其特征在于,所述内存逻辑地址信息包括待回收的内存块的起始地址和长度信息,所述起始地址用于指示待回收的内存块的首地址,所述长度信息用于指示待回收的内存块的数量。
4.根据权利要求1或2所述的方法,其特征在于,所述释放命令还包括擦除模式指示信息;所述方法还包括:
若所述擦除模式指示信息指示擦除所述内存块中的数据信息,所述介质控制器将预设数据写入所述内存块中。
5.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
所述介质控制器接收所述内存控制器发送的读命令,所述读命令包括待读取数据的所述内存逻辑地址信息;
所述介质控制器确定根据所述内存逻辑地址信息没有查找到对应的内存物理地址;
所述介质控制器向所述内存控制器发送错误响应信息;其中,所述错误响应信息用于指示所述读命令执行失败。
6.一种内存块回收方法,其特征在于,所述方法应用于计算机系统中,所述计算机系统包括处理器、内存控制器、介质控制器以及与所述介质控制器连接的非易失性内存,所述内存控制器与所述介质控制器通过NVDIMM-P协议进行通信,所述非易失性内存包括多个内存块,所述方法包括:
所述内存控制器接收所述处理器发送的修剪(TRIM)指令,所述修剪指令包括待回收的内存块的内存逻辑地址信息;
所述内存控制器向所述介质控制器交替发送释放命令和扩展地址命令;
其中,所述释放命令和所述扩展地址命令都包括所述待回收的内存块的内存逻辑地址信息,所述释放命令用于指示所述介质控制器回收所述内存块,回收后的所述内存块为可用内存块。
7.根据权利要求6所述的方法,其特征在于,所述内存逻辑地址信息包括待回收的内存块的起始地址和长度信息,所述起始地址用于指示待回收的内存块的首地址,所述长度信息用于指示待回收的内存块的数量。
8.根据权利要求6或7所述的方法,其特征在于,所述释放命令还包括擦除模式指示信息;当所述擦除模式指示信息指示擦除所述内存块中的数据信息时,所述释放命令还用于指示所述介质控制器将预设数据写入所述内存块中。
9.根据权利要求6或7所述的方法,其特征在于,所述方法还包括:
所述内存控制器向所述介质控制器发送读命令,所述读命令包括待读取数据的所述内存逻辑地址信息;
所述内存控制器接收所述介质控制器发送的错误响应信息,其中,所述错误响应信息用于指示所述读命令执行失败。
10.一种存储器,其特征在于,包括介质控制器以及与所述介质控制器连接的非易失性内存,所述介质控制器通过NVDIMM-P协议与处理器的内存控制器进行通信,所述非易失性内存包括多个内存块;所述介质控制器用于;
接收所述内存控制器交替发送的释放命令和扩展地址命令,所述释放命令和所述扩展地址命令都包括待回收的内存块的内存逻辑地址信息;
根据所述内存逻辑地址信息回收所述内存块,其中,回收后的所述内存块为可用内存块。
11.根据权利要求10所述的存储器,其特征在于,所述介质控制器还用于:
根据所述内存逻辑地址信息,删除所述内存块的内存逻辑地址和对应的内存物理地址之间的映射关系;
将所述内存块的内存物理地址添加至内存空闲列表中。
12.根据权利要求10或11所述的存储器,其特征在于,所述内存逻辑地址信息包括待回收的内存块的起始地址和长度信息,所述起始地址用于指示待回收的内存块的首地址,所述长度信息用于指示待回收的内存块的数量。
13.根据权利要求10或11所述的存储器,其特征在于,所述释放命令还包括擦除模式指示信息,所述介质控制器还用于:
在所述擦除模式指示信息指示擦除所述内存块中的数据信息时,将预设数据写入所述内存块中。
14.根据权利要求10或11所述的存储器,其特征在于,所述介质控制器还用于:
接收所述内存控制器发送的读命令,所述读命令包括待读取数据的所述内存逻辑地址信息;
确定根据所述内存逻辑地址信息没有查找到对应的内存物理地址;
向所述内存控制器发送错误响应信息;其中,所述错误响应信息用于指示所述读命令执行失败。
15.一种计算机系统,其特征在于,所述计算机系统包括处理器、内存控制器、介质控制器以及与所述介质控制器连接的非易失性内存,所述内存控制器与所述介质控制器通过NVDIMM-P协议进行通信,所述非易失性内存包括多个内存块;其中,所述内存控制器用于:
接收所述处理器发送的修剪指令,所述修剪指令包括待回收的内存块的内存逻辑地址信息;
交替的向所述介质控制器发送释放命令和扩展地址命令,其中,所述释放命令和所述扩展地址命令都包括所述待回收的内存块的内存逻辑地址信息,所述释放命令用于指示所述介质控制器回收所述内存块;
所述介质控制器用于:
接收所述内存控制器发送的所述释放命令和所述扩展地址命令;
根据所述内存逻辑地址信息回收所述内存块,其中,回收后的所述内存块为可用内存块。
16.根据权利要求15所述的系统,其特征在于,所述内存逻辑地址信息包括待回收的内存块的起始地址和长度信息 ,所述起始地址用于指示待回收的内存块的首地址,所述长度信息用于指示待回收的内存块的数量。
17.根据权利要求15或16所述的系统,其特征在于,所述释放命令还包括擦除模式指示信息;所述介质控制器还用于:
当所述擦除模式指示信息指示擦除所述内存块中的数据信息时,将预设数据写入所述内存块中。
18.根据权利要求15或16所述的系统,其特征在于,所述内存控制器还用于:
接收处理器发送的内存访问请求,所述内存访问请求中包括待读取数据的所述内存逻辑地址信息;
所述内存控制器还用于,根据所述内存访问请求向所述介质控制器发送读命令,所述读命令中携带有所述内存逻辑地址信息;
所述介质控制器还用于:
确定根据所述内存逻辑地址信息没有查找到对应的内存物理地址;
向所述内存控制器发送错误响应信息;其中,所述错误响应信息用于指示所述读命令执行失败;
所述内存控制器还用于,根据所述错误响应信息向所述处理器发送读失败信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110856426.7A CN113760185B (zh) | 2017-11-07 | 2017-11-07 | 内存块回收方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2017/109808 WO2019090493A1 (zh) | 2017-11-07 | 2017-11-07 | 内存块回收方法和装置 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110856426.7A Division CN113760185B (zh) | 2017-11-07 | 2017-11-07 | 内存块回收方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111108488A CN111108488A (zh) | 2020-05-05 |
CN111108488B true CN111108488B (zh) | 2022-05-10 |
Family
ID=66437532
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780095112.1A Active CN111108488B (zh) | 2017-11-07 | 2017-11-07 | 内存块回收方法和装置 |
CN202110856426.7A Active CN113760185B (zh) | 2017-11-07 | 2017-11-07 | 内存块回收方法和装置 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110856426.7A Active CN113760185B (zh) | 2017-11-07 | 2017-11-07 | 内存块回收方法和装置 |
Country Status (6)
Country | Link |
---|---|
US (2) | US20200257620A1 (zh) |
EP (2) | EP4345629A3 (zh) |
JP (1) | JP7279889B2 (zh) |
KR (1) | KR102517685B1 (zh) |
CN (2) | CN111108488B (zh) |
WO (1) | WO2019090493A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113760185B (zh) * | 2017-11-07 | 2024-09-24 | 华为技术有限公司 | 内存块回收方法和装置 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7159069B2 (ja) * | 2019-01-29 | 2022-10-24 | キオクシア株式会社 | メモリシステムおよび制御方法 |
JP2021135760A (ja) * | 2020-02-27 | 2021-09-13 | キオクシア株式会社 | メモリシステムおよびメモリ制御方法 |
CN112162701B (zh) * | 2020-09-18 | 2023-12-22 | 北京浪潮数据技术有限公司 | 一种存储空间回收方法、装置、设备及计算机存储介质 |
US20220318042A1 (en) * | 2021-04-01 | 2022-10-06 | RAMScaler, Inc. | Distributed memory block device storage |
TWI773371B (zh) * | 2021-06-09 | 2022-08-01 | 宇瞻科技股份有限公司 | 固態硬碟 |
US12265717B2 (en) * | 2022-07-20 | 2025-04-01 | Micron Technology, Inc. | Storage access communications and data placement for improved performance and reduced write amplification |
US12197754B2 (en) | 2022-07-20 | 2025-01-14 | Micron Technology, Inc. | Random storage access and data erasure for improved performance and reduced write amplification |
CN118550843A (zh) * | 2023-02-24 | 2024-08-27 | 中兴通讯股份有限公司 | 内存盘的瘦供给方法、系统、设备及计算机可读存储介质 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1532708A (zh) * | 2003-03-19 | 2004-09-29 | 华为技术有限公司 | 一种静态内存管理方法 |
JP2008217183A (ja) * | 2007-03-01 | 2008-09-18 | Yokogawa Electric Corp | メモリ管理装置 |
CN102047341A (zh) * | 2008-02-29 | 2011-05-04 | 马维尔国际贸易有限公司 | 用于混合非易失性固态存储系统的疲劳管理系统和方法 |
CN102622309A (zh) * | 2011-01-30 | 2012-08-01 | 成都市华为赛门铁克科技有限公司 | 数据安全擦除方法及装置 |
CN102622310A (zh) * | 2011-01-30 | 2012-08-01 | 成都市华为赛门铁克科技有限公司 | 无效数据擦除方法、装置及系统 |
CN103577343A (zh) * | 2013-11-20 | 2014-02-12 | 华为技术有限公司 | 内存管理方法和装置 |
CN103970680A (zh) * | 2014-04-28 | 2014-08-06 | 上海华为技术有限公司 | 内存管理方法、装置及嵌入式系统 |
CN103984641A (zh) * | 2014-05-22 | 2014-08-13 | 华为技术有限公司 | 一种基于精简配置技术的存储空间回收方法及其装置 |
CN106980541A (zh) * | 2017-03-10 | 2017-07-25 | 浙江大学 | 一种大页内存压缩回收系统及方法 |
JP2017157214A (ja) * | 2016-03-03 | 2017-09-07 | 三星電子株式会社Samsung Electronics Co.,Ltd. | インモジュール機能を遂行するメモリモジュール |
CN107291625A (zh) * | 2017-06-19 | 2017-10-24 | 济南浪潮高新科技投资发展有限公司 | 一种用于Nand Flash的指针式逻辑地址映射表实现方法 |
Family Cites Families (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4515793B2 (ja) | 2004-03-11 | 2010-08-04 | 株式会社東芝 | メモリカード装置およびメモリカード制御方法 |
US7502256B2 (en) | 2004-11-30 | 2009-03-10 | Siliconsystems, Inc. | Systems and methods for reducing unauthorized data recovery from solid-state storage devices |
US8108579B2 (en) * | 2005-03-31 | 2012-01-31 | Qualcomm Incorporated | Mechanism and method for managing data storage |
US9134918B2 (en) | 2009-12-31 | 2015-09-15 | Sandisk Technologies Inc. | Physical compression of data with flat or systematic pattern |
US8407445B1 (en) * | 2010-03-31 | 2013-03-26 | Emc Corporation | Systems, methods, and computer readable media for triggering and coordinating pool storage reclamation |
US8949502B2 (en) * | 2010-11-18 | 2015-02-03 | Nimble Storage, Inc. | PCIe NVRAM card based on NVDIMM |
JP5624510B2 (ja) | 2011-04-08 | 2014-11-12 | 株式会社東芝 | 記憶装置、記憶システム及び認証方法 |
US10803970B2 (en) * | 2011-11-14 | 2020-10-13 | Seagate Technology Llc | Solid-state disk manufacturing self test |
JP5882467B2 (ja) * | 2012-03-13 | 2016-03-09 | 株式会社日立製作所 | 不揮発半導体メモリを含んだ不揮発半導体記憶デバイスを有するストレージシステム |
JP5659178B2 (ja) * | 2012-03-16 | 2015-01-28 | 株式会社東芝 | 不揮発性記憶装置及び不揮発性メモリの制御方法 |
US8938584B2 (en) * | 2012-04-30 | 2015-01-20 | Dell Products, Lp | System and method to keep parity consistent in an array of solid state drives when data blocks are de-allocated |
JP5586718B2 (ja) * | 2012-06-19 | 2014-09-10 | 株式会社東芝 | 制御プログラム、ホスト装置の制御方法、情報処理装置およびホスト装置 |
JP5802804B2 (ja) * | 2012-06-19 | 2015-11-04 | 株式会社東芝 | 制御プログラム、ホスト装置の制御方法、情報処理装置およびホスト装置 |
US9235344B2 (en) * | 2012-11-28 | 2016-01-12 | International Business Machines Corporation | Identifying redundant data for disk image streaming |
US9229854B1 (en) * | 2013-01-28 | 2016-01-05 | Radian Memory Systems, LLC | Multi-array operation support and related devices, systems and software |
CN103559138B (zh) * | 2013-10-09 | 2016-03-30 | 华为技术有限公司 | 固态硬盘及其空间管理方法 |
US9841902B2 (en) * | 2014-11-20 | 2017-12-12 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Peripheral component interconnect express controllers configured with non-volatile memory express interfaces |
US10261725B2 (en) | 2015-04-10 | 2019-04-16 | Toshiba Memory Corporation | Storage system capable of invalidating data stored in a storage device thereof |
JP2016206938A (ja) * | 2015-04-22 | 2016-12-08 | キヤノン株式会社 | 情報処理システム、情報処理システムのメモリ制御方法、及びプログラム |
JP2017027388A (ja) * | 2015-07-23 | 2017-02-02 | 株式会社東芝 | メモリシステムおよび不揮発性メモリの制御方法 |
US10031674B2 (en) * | 2015-10-07 | 2018-07-24 | Samsung Electronics Co., Ltd. | DIMM SSD addressing performance techniques |
KR20170059049A (ko) * | 2015-11-19 | 2017-05-30 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
US20170206165A1 (en) * | 2016-01-14 | 2017-07-20 | Samsung Electronics Co., Ltd. | Method for accessing heterogeneous memories and memory module including heterogeneous memories |
CN105760311B (zh) * | 2016-02-17 | 2019-08-30 | 珠海全志科技股份有限公司 | trim命令响应方法和系统及操作系统 |
US9927999B1 (en) | 2016-09-09 | 2018-03-27 | Western Digital Technologies, Inc. | Trim management in solid state drives |
US10481798B2 (en) | 2016-10-28 | 2019-11-19 | Pure Storage, Inc. | Efficient flash management for multiple controllers |
US11243899B2 (en) * | 2017-04-28 | 2022-02-08 | International Business Machines Corporation | Forced detaching of applications from DMA-capable PCI mapped devices |
GB2563883B (en) | 2017-06-28 | 2019-10-09 | Advanced Risc Mach Ltd | Invalidation of a target realm in a realm hierarchy |
US10649967B2 (en) | 2017-07-18 | 2020-05-12 | Vmware, Inc. | Memory object pool use in a distributed index and query system |
US10585754B2 (en) * | 2017-08-15 | 2020-03-10 | International Business Machines Corporation | Memory security protocol |
CN111108488B (zh) * | 2017-11-07 | 2022-05-10 | 华为技术有限公司 | 内存块回收方法和装置 |
US10275352B1 (en) * | 2017-12-28 | 2019-04-30 | Advanced Micro Devices, Inc. | Supporting responses for memory types with non-uniform latencies on same channel |
-
2017
- 2017-11-07 CN CN201780095112.1A patent/CN111108488B/zh active Active
- 2017-11-07 WO PCT/CN2017/109808 patent/WO2019090493A1/zh unknown
- 2017-11-07 EP EP23210214.5A patent/EP4345629A3/en active Pending
- 2017-11-07 KR KR1020207015217A patent/KR102517685B1/ko active Active
- 2017-11-07 CN CN202110856426.7A patent/CN113760185B/zh active Active
- 2017-11-07 EP EP17931159.2A patent/EP3696681B1/en active Active
- 2017-11-07 JP JP2020524281A patent/JP7279889B2/ja active Active
-
2020
- 2020-04-30 US US16/863,440 patent/US20200257620A1/en not_active Abandoned
-
2023
- 2023-03-31 US US18/194,182 patent/US11886333B2/en active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1532708A (zh) * | 2003-03-19 | 2004-09-29 | 华为技术有限公司 | 一种静态内存管理方法 |
JP2008217183A (ja) * | 2007-03-01 | 2008-09-18 | Yokogawa Electric Corp | メモリ管理装置 |
CN102047341A (zh) * | 2008-02-29 | 2011-05-04 | 马维尔国际贸易有限公司 | 用于混合非易失性固态存储系统的疲劳管理系统和方法 |
CN102622309A (zh) * | 2011-01-30 | 2012-08-01 | 成都市华为赛门铁克科技有限公司 | 数据安全擦除方法及装置 |
CN102622310A (zh) * | 2011-01-30 | 2012-08-01 | 成都市华为赛门铁克科技有限公司 | 无效数据擦除方法、装置及系统 |
CN103577343A (zh) * | 2013-11-20 | 2014-02-12 | 华为技术有限公司 | 内存管理方法和装置 |
CN103970680A (zh) * | 2014-04-28 | 2014-08-06 | 上海华为技术有限公司 | 内存管理方法、装置及嵌入式系统 |
CN103984641A (zh) * | 2014-05-22 | 2014-08-13 | 华为技术有限公司 | 一种基于精简配置技术的存储空间回收方法及其装置 |
JP2017157214A (ja) * | 2016-03-03 | 2017-09-07 | 三星電子株式会社Samsung Electronics Co.,Ltd. | インモジュール機能を遂行するメモリモジュール |
CN106980541A (zh) * | 2017-03-10 | 2017-07-25 | 浙江大学 | 一种大页内存压缩回收系统及方法 |
CN107291625A (zh) * | 2017-06-19 | 2017-10-24 | 济南浪潮高新科技投资发展有限公司 | 一种用于Nand Flash的指针式逻辑地址映射表实现方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113760185B (zh) * | 2017-11-07 | 2024-09-24 | 华为技术有限公司 | 内存块回收方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
US11886333B2 (en) | 2024-01-30 |
EP3696681A1 (en) | 2020-08-19 |
EP3696681B1 (en) | 2023-12-20 |
EP4345629A2 (en) | 2024-04-03 |
CN113760185B (zh) | 2024-09-24 |
KR20200078592A (ko) | 2020-07-01 |
JP7279889B2 (ja) | 2023-05-23 |
US20200257620A1 (en) | 2020-08-13 |
CN113760185A (zh) | 2021-12-07 |
CN111108488A (zh) | 2020-05-05 |
KR102517685B1 (ko) | 2023-04-05 |
EP4345629A3 (en) | 2024-07-03 |
US20230325311A1 (en) | 2023-10-12 |
EP3696681A4 (en) | 2020-10-21 |
WO2019090493A1 (zh) | 2019-05-16 |
JP2021501941A (ja) | 2021-01-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111108488B (zh) | 内存块回收方法和装置 | |
CN107844431B (zh) | 映射表更新方法、存储器控制电路单元与存储器存储装置 | |
US9582416B2 (en) | Data erasing method, memory control circuit unit and memory storage apparatus | |
TW202046116A (zh) | 儲存系統 | |
US10635358B2 (en) | Memory management method and storage controller | |
US12086432B2 (en) | Gradually reclaim storage space occupied by a proof of space plot in a solid state drive | |
TWI698749B (zh) | 資料儲存裝置與資料處理方法 | |
CN107590080B (zh) | 映射表更新方法、存储器控制电路单元及存储器存储装置 | |
US11775188B2 (en) | Communications to reclaim storage space occupied by proof of space plots in solid state drives | |
CN111400201A (zh) | 快闪存储器的数据整理方法、存储装置及控制电路单元 | |
CN107346211B (zh) | 映射表加载方法、存储器控制电路单元与存储器储存装置 | |
CN108733577B (zh) | 存储器管理方法、存储器控制电路单元及存储器存储装置 | |
CN107943710B (zh) | 存储器管理方法及使用所述方法的存储控制器 | |
KR102702680B1 (ko) | 메모리 시스템 및 메모리 시스템의 동작방법 | |
US10339045B2 (en) | Valid data management method and storage controller | |
CN112306906A (zh) | 存储设备、包括该存储设备的存储系统及其操作方法 | |
CN109273033B (zh) | 存储器管理方法、存储器控制电路单元与存储器存储装置 | |
CN107102951B (zh) | 存储器管理方法、存储器控制电路单元与存储器储存装置 | |
US12216597B2 (en) | Memory system, including a plurality of memory controllers and operation method thereof | |
EP3771986A1 (en) | Storage device, memory system comprising the same, and operation method thereof | |
CN106326142A (zh) | 缓冲存储器存取方法、存储器控制器与存储器存储装置 | |
US20250013367A1 (en) | Performance Optimization for Storing Data in Memory Services Configured on Storage Capacity of a Data Storage Device | |
CN102456401A (zh) | 区块管理方法、存储器控制器与存储器储存装置 | |
CN112181859A (zh) | 有效数据合并方法、存储器控制电路单元与存储装置 | |
KR20210063814A (ko) | 메모리 시스템의 리드 동작 방법 및 장치 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |