CN116466879A - 一种cxl内存模组、内存数据的置换方法及计算机系统 - Google Patents

一种cxl内存模组、内存数据的置换方法及计算机系统 Download PDF

Info

Publication number
CN116466879A
CN116466879A CN202310266121.XA CN202310266121A CN116466879A CN 116466879 A CN116466879 A CN 116466879A CN 202310266121 A CN202310266121 A CN 202310266121A CN 116466879 A CN116466879 A CN 116466879A
Authority
CN
China
Prior art keywords
memory
data
address
page
cxl
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.)
Granted
Application number
CN202310266121.XA
Other languages
English (en)
Other versions
CN116466879B (zh
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.)
Beijing Superstring Academy of Memory Technology
Original Assignee
Beijing Superstring Academy of Memory Technology
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 Beijing Superstring Academy of Memory Technology filed Critical Beijing Superstring Academy of Memory Technology
Priority to CN202310266121.XA priority Critical patent/CN116466879B/zh
Publication of CN116466879A publication Critical patent/CN116466879A/zh
Application granted granted Critical
Publication of CN116466879B publication Critical patent/CN116466879B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/0608Saving storage space on storage 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/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
    • 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
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)

Abstract

本公开实施例公开了一种CXL内存模组、内存数据的置换方法及计算机系统,CXL内存模组可以包括闪存芯片、内存芯片,以及与闪存芯片和内存芯片连接的控制器芯片,控制器芯片被配置为能够把内存芯片中的部分数据置换到闪存芯片中。本公开实施例提供的CXL内存模组、内存数据的置换方法及计算机系统,能够用成本较低的闪存芯片大幅度扩充容量,提高产品性价比,以及可以解决闪存擦写次数限制造成的置换困难。

Description

一种CXL内存模组、内存数据的置换方法及计算机系统
技术领域
本公开涉及但不仅限于存储技术,尤指一种CXL内存模组、内存数据的置换方法及计算机系统。
背景技术
CXL是一种新的基于PCIe物理层的内存接口协议,CXL协议使得可以用CXL内存模组对计算机进行内存扩充。CXL内存模组一般是由一个CXL控制器芯片,和一组DRAM芯片组成。
作为内存扩展,CXL内存模组希望在同样的容量下比传统DIMM条便宜,然而DRAM芯片自身的限制让成本几乎无法降低。
发明内容
本公开实施例提供了一种CXL内存模组,包括闪存芯片、内存芯片,以及与所述闪存芯片和所述内存芯片连接的控制器芯片,所述控制器芯片被配置为能够把所述内存芯片中的部分数据置换到所述闪存芯片中。
本公开实施例还提供了一种内存数据的置换方法,应用于与设置有闪存芯片和内存芯片的CXL内存模组连接的主机,包括:
主机运行虚拟内存,维护逻辑物理地址翻译表中数据的逻辑地址、内存地址和闪存地址的对应关系;
主机确定内存空间不够时,向CXL内存模组发送换出指令,携带存储有数据的第一内存页的地址和空闲的第一闪存页的地址,或携带存储有数据的第一内存页的地址;
主机接收到所述CXL内存模组发送的换出完成响应或第一闪存页的地址后,释放所述第一内存页,将所述数据的内存地址标记为无效,记录所述数据的闪存地址为所述第一闪存页的地址且标记为有效。
本公开实施例还提供了一种内存数据的置换方法,应用于设置有闪存芯片和内存芯片的CXL内存模组,包括:
CXL内存模组能够把所述内存芯片中的部分数据置换到所述闪存芯片中。
本公开实施例还提供了一种CXL内存模组的控制器芯片,所述控制器芯片包括内存接口、闪存接口以及与所述内存接口和所述闪存接口连接的存储控制器,所述存储控制器被配置为执行如CXL内存模组端任一实施例所述的内存数据的置换方法。
本公开实施例还提供了一种主机,包括存储器和处理器,存储器用于存储执行指令;处理器调用所述执行指令,配置为执行如主机端任一实施例所述的内存数据的置换方法。
本公开实施例还提供了一种计算机系统,包括任一实施例所述的主机,及任一实施例所述的CXL内存模组。
本公开至少一个实施例提供的CXL内存模组、内存数据的置换方法及计算机系统,与现有技术相比,具有以下有益效果:CXL内存模组还包括至少一组闪存芯片,在内存(DRAM芯片)空间不够使用时,把部分内存中的数据置换到闪存芯片中,能够用成本较低的闪存芯片大幅度扩充容量,提高产品性价比,以及可以解决闪存擦写次数限制造成的置换困难。
本公开的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本公开而了解。本公开的其他优点可通过在说明书以及附图中所描述的方案来实现和获得。
附图说明
附图用来提供对本公开技术方案的理解,并且构成说明书的一部分,与本公开的实施例一起用于解释本公开的技术方案,并不构成对本公开技术方案的限制。
图1为本公开一示例实施例提供的CXL内存模组的结构框;
图2为本公开另一示例实施例提供的CXL内存模组的结构框图;
图3为本公开实施例提供的CXL内存模组的控制器芯片的结构框图;
图4为本公开一示例实施例提供的内存数据的置换方法的流程图;
图5为本公开实施例提供的主机的结构框图;
图6为本公开实施例提供的计算机系统的结构框图。
具体实施方式
本公开描述了多个实施例,但是该描述是示例性的,而不是限制性的,并且对于本领域的普通技术人员来说显而易见的是,在本公开所描述的实施例包含的范围内可以有更多的实施例和实现方案。尽管在附图中示出了许多可能的特征组合,并在具体实施方式中进行了讨论,但是所公开的特征的许多其它组合方式也是可能的。除非特意加以限制的情况以外,任何实施例的任何特征或元件可以与任何其它实施例中的任何其他特征或元件结合使用,或可以替代任何其它实施例中的任何其他特征或元件。
本公开包括并设想了与本领域普通技术人员已知的特征和元件的组合。本公开已经公开的实施例、特征和元件也可以与任何常规特征或元件组合,以形成由权利要求限定的独特的发明方案。任何实施例的任何特征或元件也可以与来自其它发明方案的特征或元件组合,以形成另一个由权利要求限定的独特的发明方案。因此,应当理解,在本公开中示出和/或讨论的任何特征可以单独地或以任何适当的组合来实现。因此,除了根据所附权利要求及其等同替换所做的限制以外,实施例不受其它限制。此外,可以在所附权利要求的保护范围内进行各种修改和改变。
此外,在描述具有代表性的实施例时,说明书可能已经将方法和/或过程呈现为特定的步骤序列。然而,在该方法或过程不依赖于本文所述步骤的特定顺序的程度上,该方法或过程不应限于所述的特定顺序的步骤。如本领域普通技术人员将理解的,其它的步骤顺序也是可能的。因此,说明书中阐述的步骤的特定顺序不应被解释为对权利要求的限制。此外,针对该方法和/或过程的权利要求不应限于按照所写顺序执行它们的步骤,本领域技术人员可以容易地理解,这些顺序可以变化,并且仍然保持在本公开实施例的精神和范围内。
图1为本公开一示例实施例提供的CXL内存模组的结构框图,图2为本公开另一示例实施例提供的CXL内存模组的结构框图,如图1和图2所示,CXL内存模组可以包括:闪存芯片11、内存芯片,内存芯片可以为DRAM芯片12,以及与闪存芯片和内存芯片连接的控制器芯片13,控制器芯片可以被配置为能够把内存芯片(比如DRAM芯片)中的部分数据置换到闪存芯片中。
本公开实施例提供的CXL内存模组,还包括至少一组闪存芯片。在内存(比如DRAM芯片)空间不够使用时,把部分内存中的数据置换到闪存芯片中,需要时再从闪存芯片中读出来。数据置换可以包括数据换出和数据换入,数据换出是指将内存芯片中的数据写入到闪存芯片中,数据换入是指将闪存中的数据写入到内存芯片中。
本公开实施例能够用成本较低的闪存芯片大幅度扩充容量,提高产品性价比,以及可以解决闪存擦写次数限制造成的置换困难。
在本公开一示例实施例中,使用闪存的方法可以是CXL内存模组的控制器芯片连接一个闪存控制芯片(如图2中的NAND控制器),再通过闪存控制芯片连接一组闪存芯片(如图2中的NAND芯片)并进行管理,一组闪存芯片可以包括一个或多个闪存芯片。
在本公开一示例实施例中,如图2所示,CXL内存模组的控制器芯片可以连接多个闪存控制芯片,一个闪存闪存控制芯片可以连接一组闪存芯片并进行管理,一组闪存芯片可以包括一个或多个闪存芯片。CXL内存模组的控制器芯片连接多个闪存控制芯片,可以增加闪存读写带宽。
在本公开一示例实施例中,控制器芯片可以被配置为通过以下方式进行数据置换:
接收到外部设备发送的换出指令,换出指令携带存储有数据的第一内存页的地址,控制器芯片从闪存芯片中选择一个空闲的第一闪存页,将第一内存页中的数据置换到第一闪存页中,向外部设备返回第一闪存页的地址。其中,外部设备可以包括主机。
本公开实施例中,可采用主机主导模式,通过主机检测内存是否够使用,以及内存空间不够用时需要置换到闪存芯片的数据信息。数据信息可以包括需置换到闪存芯片的数据在内存占用的地址。
CXL内存模组可向主机发送可供使用的DRAM芯片的内存空间总量信息。主机运行虚拟内存,维护逻辑物理地址翻译表中数据的逻辑地址、内存地址和闪存地址的对应关系。主机确定内存空间不够时,向CXL模组发送换出指令,携带存储有数据的第一内存页的地址。
内存空间不够可以是内存剩余空间小于阈值,或可以是内存剩余空间小于申请的内存空间等。
一个软件应用的内容通常包括很多内存页,大部分内存页是只读的,只读内存页可以包括程序代码、只读数据,只读数据例如可以是大量的图标图片,或人工智能推理中的权重,只有少部分是有读有写的。对于每一个内存页的读写属性,操作系统都有标记。
在一示例中,第一内存页为只读页或优先为只读页。主机记录每一个内存页的读写属性,包括只读页或读写页。数据置换时,只置换只读内存页的数据,或者优先置换只读内存页的数据。
优先置换是指只读内存页的优先级别高于其他内存页(比如读写内存页),如对近期不使用的内存页,对其中存储只读数据的所有内存页进行数据置换之后,才对其中存储可读写数据的内存页进行数据置换。
CXL内存模组接收到换出指令,从闪存芯片中选择一个空闲的第一闪存页,将第一内存页中的数据置换到第一闪存页中,向主机返回第一闪存页的地址。
本公开实施例,在主机检测到内存不够使用时,可以通过cxl.io协议发送换出指令,指定CXL内存模组把一个地址段的数据存入闪存芯片。CXL内存模组可以选择闪存地址,从内存中把该地址段的数据读取到闪存地址中,并将该闪存地址返回给主机。
主机接收到CXL内存模组发送的第一闪存页的地址后,释放第一内存页,将数据的内存地址标记为无效,记录数据的闪存地址为第一闪存页的地址且标记为有效。
主机使用虚拟内存进行管理,被置换到闪存中的数据仍然保留同样的逻辑地址,但对该数据的信息进行相应的标记,标记包括数据在闪存中的地址。
在一示例实施例中,控制器芯片被配置为通过以下方式进行数据置换:
接收到外部设备发送的换出指令,换出指令携带存储有数据的第一内存页的地址和空闲的第一闪存页的地址,控制器芯片将第一内存页中的数据置换到第一闪存页中,向外部设备返回换出完成响应。
本公开实施例中,可采用主机主导模式,通过主机检测内存是否够使用,以及内存空间不够用时需要置换到闪存芯片的数据信息。数据信息可以包括需置换到闪存芯片的数据在内存占用的地址,以及包括数据置换到闪存芯片所占用的闪存页的地址。
本公开实施例与上述主机主导实施例不同之处是:上述主机主导实施例中主机发送的换出指令仅携带存储有数据的第一内存页的地址,不携带或不指定数据置换到闪存芯片所需占用的闪存页的地址,数据置换到闪存芯片所需占用的闪存页由CXL内存模组确定。本公开实施例中主机发送的换出指令不仅携带存储有数据的第一内存页的地址,还携带数据置换到闪存芯片所需占用的闪存页的地址,即数据置换到闪存芯片所需占用的闪存页由主机确定。
CXL内存模组可向主机发送可供使用的DRAM芯片的内存空间总量信息。主机运行虚拟内存,维护逻辑物理地址翻译表中数据的逻辑地址、内存地址和闪存地址的对应关系。主机确定内存空间不够时,向CXL模组发送换出指令,携带存储有数据的第一内存页的地址和空闲的第一闪存页的地址。
CXL内存模组接收到换出指令,将第一内存页中的数据置换到主机指定的第一闪存页中,向主机返回换出完成响应。主机接收到CXL内存模组发送的换出完成响应后,释放第一内存页,将数据的内存地址标记为无效,记录数据的闪存地址为第一闪存页的地址且标记为有效。只读页的数据被置换到闪存中后,仍然保留闪存中的数据,并在数据的信息中保留相应的闪存地址。
本公开实施例,在主机检测到内存不够使用时,可以通过cxl.io协议发送换出指令,指定CXL内存模组把一个地址段的数据存入闪存芯片中指定的闪存页。CXL从内存中把该地址段的数据读取到主机指定的闪存地址中,并向主机返回换出完成响应。
在本公开一示例实施例中,控制器芯片可以包括CXL接口,被配置为连接主机。主机可通过cxl.io协议发送指令,发送的指令可以包括换出指令、下述实施例的换入指令和内存申请指令等。
在本公开一示例实施例中,控制器芯片还可以被配置为:
控制器芯片接收外部设备发送的换入指令,换入指令携带第一闪存页的地址,及空闲的第二内存页的地址;控制器芯片从第一闪存页读取数据,写入到第二内存页中,并向外部设备返回换入完成响应。
主机接收到读取数据的请求时,根据数据的逻辑地址查找数据的内存地址和闪存地址。在查找到的内存地址无效,闪存地址有效时,主机向CXL内存模组发送换入指令,携带第一闪存页的地址,及空闲的第二内存页的地址。
只读页的数据被置换到闪存中后,仍然保留闪存中的数据,并在数据的信息中保留相应的闪存地址。当只读页的数据再次被使用时,从同一个闪存地址中恢复该数据。
CXL内存模组接收到主机发送的换入指令后,从第一闪存页读取数据,写入到第二内存页中,并向主机返回换入完成响应。主机接收到CXL内存模组返回的换入完成响应后,记录数据的内存地址为第二内存页的地址且标记为有效。
当被置换出的数据需要被使用,对相应逻辑地址的读写操作将触发主机的虚拟内存管理机制,主机将根据相应的标记把数据从闪存中的对应地址读回到一个新的内存地址,并修改逻辑物理地址翻译表中该数据的逻辑地址、内存地址和闪存地址的对应关系,让新的内存地址对应到同一个逻辑地址。如果内存中空闲空间不够,置换出其他内存页。
在本公开一示例实施例中,主机确定释放存储数据的第二内存页时,查找数据的逻辑地址、内存地址和闪存地址的对应关系及状态,确定数据的闪存地址有效时,直接释放第二内存页,将数据的内存地址标记为无效。
主机主导时,可由主机释放数据所占用的内存空间。在完成置换之后,或只读页的数据再次需要被置换出内存时,主机可标记相应内存页为空闲,释放相应内存页。
在只读页的数据再次需要被置换出内存,即数据不是首次被换出时,不再进行闪存写入,直接释放数据所占用的内存空间,将该数据的内存地址标记为无效,不再把再次需要被置换的数据置换到闪存芯片中。
可通过查找数据逻辑地址、内存地址和闪存地址的对应关系及状态,在数据的闪存地址有效时,确定数据不是首次被换出。
在本公开一示例实施例中,在使用内存的进程结束时,释放进程的数据使用的所有只读页和闪存页。主机主导时,可由主机释放数据所占用的内存空间。使用内存的进程结束,确认只读页不会再被使用时,主机释放相应的内存空间和闪存空间。
在本公开一示例实施例中,控制器芯片运行虚拟内存,维护逻辑物理地址翻译表中数据的逻辑地址、内存地址和闪存地址的对应关系:控制器芯片被配置为通过以下方式进行数据置换:
接收到外部设备发送的内存申请指令和/或管理内存时,确定内存芯片中可分配的内存不足,启动数据置换,把内存芯片中的部分数据置换到闪存芯片的空闲区域中。
本公开实施例可通过CXL内存模组的自我主导模式确定内存空间是否够用,及内存空间不够用时需要置换到闪存芯片的数据信息。
自我主导模式可以通过以下两种中的至少一种确定内存芯片中可分配的内存是否不足:
第一种实现方式:接收到外部设备发送的内存申请指令时,CXL内存模组确定内存芯片中可分配的内存是否不足。内存申请指令携带申请的每一内存页的读写属性,读写属性为只读页或读写页。
CXL内存模组运行虚拟内存,外部设备(比如主机)通过逻辑地址对内存进行读写;主机需要增加容量时,可向CXL内存模组发送内存申请指令,携带申请的每一内存页的读写属性,读写属性为只读页或读写页。
主机向CXL内存模组发送内存申请指令,以告知CXL内存模组自己所需的内存页信息,比如内存申请指令可指示需申请5个内存页的空间,以及5个内存页中需有3个只读页,2个读写页。
CXL内存模组接收到主机发送的内存申请指令后,将内存剩余空间与内存申请指令所要申请的内存空间进行比较,在内存剩余空间小于申请的内存空间时,确定内存芯片中可分配的内存不足。
CXL内存模组确定内存芯片中可分配的内存不足,启动数据置换。数据置换时,只置换内存芯片中只读页中的数据,或者,优先置换内存芯片中只读页中的数据。
CXL内存模组可根据之前的写入数据的内存页属性,来获知DRAM芯片中已存储有数据的内存页的读写属性,将内存芯片中只读页中的数据置换或优先置换到闪存芯片的空闲区域(空闲闪存页)中。
CXL内存模组将内存芯片中只读页中的数据置换或优先置换到闪存芯片的空闲区域(空闲闪存页)之后,对该空闲区域的信息进行相应的标记:更新数据的逻辑地址、内存地址和闪存地址的对应关系表,将数据的闪存地址更新为该空闲闪存页的地址且标记为有效,并标记内存地址无效。被置换到闪存芯片中的数据仍然保留同样的逻辑地址,但CXL内存模组对该数据的信息进行相应的标记,标记包括数据在闪存芯片中的地址。
第二种实现方式:控制器芯片管理内存时,确定内存芯片中可分配的内存是否不足。
CXL内存模组使用虚拟内存管理机制,在检测到内存剩余空间小于阈值时,确定内存芯片中可分配的内存不足。
CXL内存模组确定内存芯片中可分配的内存不足,启动数据置换。数据置换时,只置换预计时间内不会被使用的内存页的数据。
控制器芯片还可以被配置为统计内存芯片中内存页的使用时间。CXL内存模组运行虚拟内存,统计DRAM芯片中每一个内存页的使用时间。在DRAM芯片中可分配的内存不足时,启动数据置换,把预计近期不被使用的内存页的数据置换到闪存芯片的(空闲闪存页)中。
CXL内存模组将内存芯片中预计时间内不会被使用内存页的数据置换到闪存芯片的空闲区域(空闲闪存页)之后,对该空闲区域的信息进行相应的标记:更新数据的逻辑地址、内存地址和闪存地址的对应关系表,将数据的闪存地址更新为该空闲闪存页的地址且标记为有效,并标记内存地址无效。被置换到闪存芯片中的数据仍然保留同样的逻辑地址,但CXL内存模组对该数据的信息进行相应的标记,标记包括数据在闪存芯片中的地址。
在本公开一示例实施例中,内存芯片中的部分数据可以包括内存芯片中的只读页中的第一数据,控制器芯片把内存芯片中的部分数据置换到闪存芯片的空闲区域中,可以包括:
检测第一数据是否首次被换出;在第一数据是首次被换出时,把第一数据置换到闪存芯片的空闲闪存页中,记录第一数据的闪存地址为该空闲闪存页的地址并标记为有效。
其中,第一数据是指只读页中需要从内存芯片置换到闪存芯片的数据,第一数据也可以称为置换数据或换出数据。
对于只读页数据的置换,CXL内存模组检测需要被从内存芯片置换到闪存芯片的第一数据是否首次被换出,在该第一数据是首次被换出置换时,把该第一数据置换到闪存芯片的空闲闪存页中,记录该空闲闪存页的地址并标记为有效。
在本公开一示例实施例中,控制器芯片检测第一数据是否首次被换出,可以包括:
查找第一数据的内存地址和闪存地址的状态;确定第一数据的内存地址有效,闪存地址无效时,判定第一数据是首次被换出;确定第一数据的闪存地址有效时,判定第一数据不是首次被换出。
CXL内存模组对于只读页数据的置换,查找数据的逻辑地址、内存地址和闪存地址的对应关系表及标记状态,确定需要被从内存芯片置换到闪存芯片的第一数据的内存地址和闪存地址的状态,确定第一数据的内存地址有效,闪存地址无效时,判定第一数据是首次被换出;确定第一数据的闪存地址有效时,判定第一数据不是首次被换出。通过数据的逻辑地址、内存地址和闪存地址的对应关系表及标记状态,可判定数据是否首次置换。
第一数据置换到闪存芯片的空闲闪存页之后,CXL内存模组对该空闲区域的信息进行相应的标记:更新数据的逻辑地址、内存地址和闪存地址的对应关系表,将数据的闪存地址更新为该空闲闪存页的地址且标记为有效,并标记内存地址无效。只读页被置换到闪存芯片中后,仍然保留闪存芯片中的数据,但CXL内存模组对该数据的信息进行相应的标记,标记包括数据在闪存芯片中的地址,以在数据的信息中保留相应的闪存地址。
在本公开一示例实施例中,控制器芯片还可以被配置为:在第一数据不是首次被换出时,直接释放只读页,将第一数据的内存地址标记为无效。
在判定第一数据不是首次被换出,即第一数据需要再次需要被置换出内存时,不再进行闪存写入,直接释放内存空间。
在本公开一示例实施例中,控制器芯片还可以被配置为:
在第一数据被置换到闪存芯片的空闲区域之后,确定第一数据需要被换入时,从记录的第一数据的闪存地址读出第一数据,写入到从内存芯片中选定的空闲内存页,将第一数据的内存地址更新为空闲内存页的地址且标记为有效。
在第一数据被置换到闪存芯片的空闲区域之后,在第一数据再次被使用时,从同一个闪存地址中恢复第一数据即可。
当被置换出的第一数据需要被使用,对相应逻辑地址的读写操作将触发CXL内存模组的虚拟内存管理机制,CXL内存模组将根据相应的标记把第一数据从闪存中的对应地址读回到一个新的内存地址,并修改逻辑物理地址翻译表中该数据的逻辑地址、内存地址和闪存地址的对应关系,让新的内存地址对应到同一个逻辑地址。
在本公开一示例实施例中,控制器芯片确定第一数据需要被换入,可以包括:
接收到外部设备读取第一数据的请求,请求携带第一数据的逻辑地址;查找到第一数据的闪存地址有效且内存地址无效,确定第一数据需要被换入;
控制器芯片还可以被配置为:从记录第一数据的闪存地址读出第一数据后,将读出的第一数据返回给外部设备。
外部设备(比如主机)接收到读取第一数据的请求后,主机向CXL内存模组发送数据读取指令,数据读取指令携带读取数据所在的逻辑地址。CXL内存模组查找数据的逻辑地址、内存地址和闪存地址的对应关系表及标记状态,在该逻辑地址对应的内存地址无效,但闪存地址有效时,确定第一数据需要被换入,CXL内存模组将根据相应的标记把第一数据从闪存中的对应地址读回到一个新的内存地址。以及CXL内存模组根据第一数据在闪存芯片中的闪存地址,从记录第一数据的闪存地址读取该第一数据,向主机返回读取的第一数据。
在本公开一示例实施例中,控制器芯片还可以被配置为:在使用内存的进程结束时,释放进程的数据使用的所有只读页和闪存页。
在本公开一示例实施例中,在使用内存的进程结束时,释放进程的数据使用的所有只读页和闪存页。CXL内存模组主导时,使用内存的进程结束,确认只读页不会再被使用时,CXL内存模组释放相应的内存空间和闪存空间。
本公开实施例还提供一种内存数据的置换方法,应用于设置有闪存芯片和内存芯片的CXL内存模组,内存数据的置换方法可以包括:
CXL内存模组能够把内存芯片中的部分数据置换到闪存芯片中。
本公开实施例提供的内存数据的置换方法,适用于包括至少一组闪存芯片的CXL内存模组。在内存(DRAM芯片)空间不够使用时,把部分内存中的数据置换到闪存芯片中,需要时再从闪存芯片中读出来。
本公开实施例提供的内存数据的置换方法的执行主体为任一实施例所示的CXL内存模组,其实现原理和实现效果类似,此处不再赘述。
在本公开一示例实施例中,所述CXL内存模组运行虚拟内存,维护逻辑物理地址翻译表中数据的逻辑地址、内存地址和闪存地址的对应关系:所述CXL内存模组可以通过以下方式进行数据置换:
接收到外部设备发送的内存申请指令和/或管理内存时,确定所述内存芯片中可分配的内存不足,启动数据置换,把所述内存芯片中的部分数据置换到所述闪存芯片的空闲区域中。
在本公开一示例实施例中,所述内存申请指令可以携带申请的每一内存页的读写属性,所述读写属性为只读页或读写页;
所述CXL内存模组启动数据置换时,只置换所述内存芯片中只读页中的数据,或者,优先置换所述内存芯片中只读页中的数据。
在本公开一示例实施例中,内存数据的置换方法还可以包括:统计所述内存芯片中内存页的使用时间;
所述CXL内存模组启动数据置换时,只置换预计时间内不会被使用的内存页的数据。
在本公开一示例实施例中,所述内存芯片中的部分数据可以包括所述内存芯片中的只读页中的第一数据,所述CXL内存模组把所述内存芯片中的部分数据置换到所述闪存芯片的空闲区域中,可以包括:
检测所述第一数据是否首次被换出;
在所述第一数据是首次被换出时,把所述第一数据置换到所述闪存芯片的空闲闪存页中,记录所述第一数据的闪存地址为该空闲闪存页的地址并标记为有效。
在本公开一示例实施例中,所述CXL内存模组检测所述第一数据是否首次被换出,可以包括:
查找所述第一数据的内存地址和闪存地址的状态;
确定所述第一数据的内存地址有效,闪存地址无效时,判定所述第一数据是首次被换出;
确定所述第一数据的闪存地址有效时,判定所述第一数据不是首次被换出。
在本公开一示例实施例中,内存数据的置换方法还可以包括:
在所述第一数据被置换到所述闪存芯片的空闲区域之后,确定所述第一数据需要被换入时,从记录的所述第一数据的闪存地址读出所述第一数据,写入到从所述内存芯片中选定的空闲内存页,将所述第一数据的内存地址更新为所述空闲内存页的地址且标记为有效。
在本公开一示例实施例中,所述CXL内存模组确定所述第一数据需要被换入,可以包括:
接收到外部设备读取所述第一数据的请求,所述请求携带所述第一数据的逻辑地址;
查找到所述第一数据的闪存地址有效且内存地址无效,确定所述第一数据需要被换入;
内存数据的置换方法还可以包括:从记录所述第一数据的闪存地址读出所述第一数据后,将读出的所述第一数据返回给所述外部设备。
在本公开一示例实施例中,内存数据的置换方法还可以包括:在所述第一数据不是首次被换出时,直接释放所述只读页,将所述第一数据的内存地址标记为无效。
在本公开一示例实施例中,内存数据的置换方法还可以包括:
在使用内存的进程结束时,释放所述进程的数据使用的所有只读页和闪存页。
在本公开一示例实施例中,所述CXL内存模组可以通过以下方式进行数据置换:
接收到外部设备发送的换出指令,所述换出指令携带存储有数据的第一内存页的地址和空闲的第一闪存页的地址,所述CXL内存模组将所述第一内存页中的所述数据置换到所述第一闪存页中,向所述外部设备返回换出完成响应;
或者,
接收到外部设备发送的换出指令,所述换出指令携带存储有数据的第一内存页的地址,所述CXL内存模组从所述闪存芯片中选择一个空闲的第一闪存页,将所述第一内存页中的所述数据置换到所述第一闪存页中,向所述外部设备返回所述第一闪存页的地址。
在本公开一示例实施例中,所述第一内存页可以为只读页。
在本公开一示例实施例中,内存数据的置换方法还可以包括:
所述CXL内存模组接收所述外部设备发送的换入指令,所述换入指令携带所述第一闪存页的地址,及空闲的第二内存页的地址;
所述CXL内存模组从所述第一闪存页读取所述数据,写入到所述第二内存页中,并向所述外部设备返回换入完成响应。
图3为本公开实施例提供的CXL内存模组的控制器芯片的结构框图,如图3所示,控制器芯片包括内存接口31、闪存接口32以及与内存接口和闪存接口连接的存储控制器33。
存储控制器可以是一个中央处理器(Central Processing Unit,简称CPU),或者是特定集成电路(Application Specific Integrated Circuit,简称ASIC),或者完成实施本公开实施例的一个或多个集成电路。存储控制器被配置为执行如CXL内存模组端任一实施例所示的内存数据的置换方法。
在本公开一示例实施例中,如图2所示,控制器芯片的一个实施方式可由嵌入式CPU内核和专用硬件(比如可编程硬件)共同实现。
在本公开一示例实施例中,如图3所示,控制器芯片还可以包括CXL接口34,被配置为连接主机,主机可通过控制器芯片的CXL接口连接到CXL内存模组。
本公开实施例还提供一种内存数据的置换方法,应用于与设置有闪存芯片和内存芯片(比如DRAM芯片)的CXL内存模组连接的主机。图4为本公开一示例实施例提供的内存数据的置换方法的流程图,如图4所示,内存数据的置换方法可以包括:
S401:主机运行虚拟内存,维护逻辑物理地址翻译表中数据的逻辑地址、内存地址和闪存地址的对应关系。
本公开实施例中,可采用主机主导模式,通过主机检测内存是否够使用,以及内存空间不够用时需要置换到闪存芯片的数据信息。数据信息可以包括需置换到闪存芯片的数据在内存占用的地址。
CXL内存模组可向主机发送可供使用的DRAM芯片的内存空间总量信息。主机运行虚拟内存,维护逻辑物理地址翻译表中数据的逻辑地址、内存地址和闪存地址的对应关系。
S402:主机确定内存空间不够时,向CXL内存模组发送换出指令,携带存储有数据的第一内存页的地址和空闲的第一闪存页的地址,或携带存储有数据的第一内存页的地址。
在主机检测到内存不够使用时,可以通过cxl.io协议发送指令,指定CXL内存模组把一个地址段的数据存入闪存芯片。CXL内存模组可以选择闪存地址,从内存中把该地址段的数据读取到闪存地址中,并将该闪存地址返回给主机。或者,主机可向CXL内存模组指定闪存地址,CXL内存模组从内存中把该地址段的数据读取到主机指定的闪存地址中,并向主机返回换出完成响应。
S403:主机接收到CXL内存模组发送的换出完成响应或第一闪存页的地址后,释放第一内存页,将数据的内存地址标记为无效,记录数据的闪存地址为第一闪存页的地址且标记为有效。
主机使用虚拟内存进行管理,被置换到闪存中的数据仍然保留同样的逻辑地址,但对该数据的信息进行相应的标记,标记包括数据在闪存中的地址。
本公开实施例提供的内存数据的置换方法的执行主体为任一实施例所示的主机,其实现原理和实现效果类似,此处不再赘述。
在本公开一示例实施例中,所述第一内存页可以为只读页。主机记录每一个内存页的读写属性,包括只读页或读写页。数据置换时,只置换只读内存页的数据,或者优先置换只读内存页的数据。
在本公开一示例实施例中,内存数据的置换方法还可以包括:
主机接收到读取所述数据的请求时,根据所述数据的逻辑地址查找所述数据的内存地址和闪存地址;
在查找到的内存地址无效,闪存地址有效时,向所述CXL内存模组发送换入指令,携带所述第一闪存页的地址,及空闲的第二内存页的地址;
接收到所述CXL内存模组返回的换入完成响应后,记录所述数据的内存地址为所述第二内存页的地址且标记为有效。
主机接收到读取数据的请求时,根据数据的逻辑地址查找数据的内存地址和闪存地址。在查找到的内存地址无效,闪存地址有效时,主机向CXL内存模组发送换入指令,携带第一闪存页的地址,及空闲的第二内存页的地址。
只读页的数据被置换到闪存中后,仍然保留闪存中的数据,并在数据的信息中保留相应的闪存地址。当只读页的数据再次被使用时,从同一个闪存地址中恢复该数据。
CXL内存模组接收到主机发送的换入指令后,从第一闪存页读取数据,写入到第二内存页中,并向主机返回换入完成响应。主机接收到CXL内存模组返回的换入完成响应后,记录数据的内存地址为第二内存页的地址且标记为有效。
当被置换出的数据需要被使用,对相应逻辑地址的读写操作将触发主机的虚拟内存管理机制,主机将根据相应的标记把数据从闪存中的对应地址读回到一个新的内存地址,并修改逻辑物理地址翻译表中该数据的逻辑地址、内存地址和闪存地址的对应关系,让新的内存地址对应到同一个逻辑地址。如果内存中空闲空间不够,置换出其他内存页。
在本公开一示例实施例中,内存数据的置换方法还可以包括:
确定释放存储所述数据的第二内存页时,查找所述数据逻辑地址、内存地址和闪存地址的对应关系及状态;
确定所述数据的闪存地址有效时,直接释放所述第二内存页,将所述数据的内存地址标记为无效。
主机主导时,可由主机释放数据所占用的内存空间。在完成置换之后,或只读页的数据再次需要被置换出内存时,主机可标记相应内存页为空闲,释放相应内存页。
在只读页的数据再次需要被置换出内存,即数据不是首次被换出时,不再进行闪存写入,直接释放数据所占用的内存空间,将该数据的内存地址标记为无效,不再把再次需要被置换的数据置换到闪存芯片中。
可通过查找数据的逻辑地址、内存地址和闪存地址的对应关系及状态,在数据的闪存地址有效时,确定数据不是首次被换出。
在本公开一示例实施例中,内存数据的置换方法还可以包括:
主机通过逻辑地址对内存进行读写;
主机需要增加容量时,向所述CXL内存模组发送内存申请指令,携带申请的每一内存页的读写属性,所述读写属性为只读页或读写页。
本公开实施例可通过CXL内存模组的自我主导模式确定内存空间是否够用,及内存空间不够用时需要置换到闪存芯片的数据信息。
CXL内存模组运行虚拟内存,外部设备(比如主机)通过逻辑地址对内存进行读写;主机需要增加容量时,可向CXL内存模组发送内存申请指令,携带申请的每一内存页的读写属性,读写属性为只读页或读写页。
主机向CXL内存模组发送内存申请指令,以告知CXL内存模组自己所需的内存页信息,比如内存申请指令可指示需申请5个内存页的空间,以及5个内存页中需有3个只读页,2个读写页。
CXL内存模组接收到主机发送的内存申请指令,确定内存芯片中可分配的内存不足时,进行数据置换,CXL内存模组将内存芯片中只读页中的数据置换或优先置换到闪存芯片的空闲区域(空闲闪存页)。
在本公开一示例实施例中,内存数据的置换方法还可以包括:
在使用内存的进程结束时,释放所述进程的数据使用的所有只读页和闪存页。主机主导时,可由主机释放数据所占用的内存空间。使用内存的进程结束,确认只读页不会再被使用时,主机释放相应的内存空间和闪存空间。
图5为本公开实施例提供的主机的结构框图,主机可以通过CXL接口与设置有闪存芯片和内存芯片(比如DRAM芯片)的CXL内存模组连接,如图5所示,主机可以包括存储器51和处理器52。
存储器用于存储执行指令,处理器可以是一个中央处理器(Central ProcessingUnit,简称CPU),或者是特定集成电路(Application Specific Integrated Circuit,简称ASIC),或者完成实施本发明实施例的一个或多个集成电路。当主机运行时,处理器与存储器之间通信,处理器调用执行指令,用于执行主机端任一实施例所示的内存数据的置换方法。
图6为本公开实施例提供的计算机系统的结构框图,如图6所示,计算机系统可以包括任一实施例所示的主机61,及任一实施例所示的CXL内存模组62。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。

Claims (35)

1.一种CXL内存模组,其特征在于,包括闪存芯片、内存芯片,以及与所述闪存芯片和所述内存芯片连接的控制器芯片,所述控制器芯片被配置为能够把所述内存芯片中的部分数据置换到所述闪存芯片中。
2.根据权利要求1所述的CXL内存模组,其特征在于,所述控制器芯片运行虚拟内存,维护逻辑物理地址翻译表中数据的逻辑地址、内存地址和闪存地址的对应关系:所述控制器芯片被配置为通过以下方式进行数据置换:
接收到外部设备发送的内存申请指令和/或管理内存时,确定所述内存芯片中可分配的内存不足,启动数据置换,把所述内存芯片中的部分数据置换到所述闪存芯片的空闲区域中。
3.根据权利要求2所述的CXL内存模组,其特征在于,所述内存申请指令携带申请的每一内存页的读写属性,所述读写属性为只读页或读写页;
所述控制器芯片启动数据置换时,只置换所述内存芯片中只读页中的数据,或者,优先置换所述内存芯片中只读页中的数据。
4.根据权利要求2所述的CXL内存模组,其特征在于,所述控制器芯片还被配置为统计所述内存芯片中内存页的使用时间;
所述控制器芯片启动数据置换时,只置换预计时间内不会被使用的内存页的数据。
5.根据权利要求3或4所述的CXL内存模组,其特征在于,所述内存芯片中的部分数据包括所述内存芯片中的只读页中的第一数据,所述控制器芯片把所述内存芯片中的部分数据置换到所述闪存芯片的空闲区域中,包括:
检测所述第一数据是否首次被换出;
在所述第一数据是首次被换出时,把所述第一数据置换到所述闪存芯片的空闲闪存页中,记录所述第一数据的闪存地址为该空闲闪存页的地址并标记为有效。
6.根据权利要求5所述的CXL内存模组,其特征在于,
所述控制器芯片检测所述第一数据是否首次被换出,包括:
查找所述第一数据的内存地址和闪存地址的状态;
确定所述第一数据的内存地址有效,闪存地址无效时,判定所述第一数据是首次被换出;
确定所述第一数据的闪存地址有效时,判定所述第一数据不是首次被换出。
7.根据权利要求6所述的CXL内存模组,其特征在于,所述控制器芯片还被配置为:
在所述第一数据被置换到所述闪存芯片的空闲区域之后,确定所述第一数据需要被换入时,从记录的所述第一数据的闪存地址读出所述第一数据,写入到从所述内存芯片中选定的空闲内存页,将所述第一数据的内存地址更新为所述空闲内存页的地址且标记为有效。
8.根据权利要求6所述的CXL内存模组,其特征在于,所述控制器芯片确定所述第一数据需要被换入,包括:
接收到外部设备读取所述第一数据的请求,所述请求携带所述第一数据的逻辑地址;
查找到所述第一数据的闪存地址有效且内存地址无效,确定所述第一数据需要被换入;
所述控制器芯片还被配置为:从记录所述第一数据的闪存地址读出所述第一数据后,将读出的所述第一数据返回给所述外部设备。
9.根据权利要求5所述的CXL内存模组,其特征在于,所述控制器芯片还被配置为:在所述第一数据不是首次被换出时,直接释放所述只读页,将所述第一数据的内存地址标记为无效。
10.根据权利要求2所述的CXL内存模组,其特征在于,所述控制器芯片还被配置为:在使用内存的进程结束时,释放所述进程的数据使用的所有只读页和闪存页。
11.根据权利要求1所述的CXL内存模组,其特征在于,所述控制器芯片被配置为通过以下方式进行数据置换:
接收到外部设备发送的换出指令,所述换出指令携带存储有数据的第一内存页的地址和空闲的第一闪存页的地址,所述控制器芯片将所述第一内存页中的所述数据置换到所述第一闪存页中,向所述外部设备返回换出完成响应;
或者,
接收到外部设备发送的换出指令,所述换出指令携带存储有数据的第一内存页的地址,所述控制器芯片从所述闪存芯片中选择一个空闲的第一闪存页,将所述第一内存页中的所述数据置换到所述第一闪存页中,向所述外部设备返回所述第一闪存页的地址。
12.根据权利要求11所述的CXL内存模组,其特征在于,所述第一内存页为只读页。
13.根据权利要求11所述的CXL内存模组,其特征在于,所述控制器芯片还被配置为:
接收所述外部设备发送的换入指令,所述换入指令携带所述第一闪存页的地址,及空闲的第二内存页的地址;
所述控制器芯片从所述第一闪存页读取所述数据,写入到所述第二内存页中,并向所述外部设备返回换入完成响应。
14.一种内存数据的置换方法,应用于与设置有闪存芯片和内存芯片的CXL内存模组连接的主机,其特征在于,包括:
主机运行虚拟内存,维护逻辑物理地址翻译表中数据的逻辑地址、内存地址和闪存地址的对应关系;
主机确定内存空间不够时,向CXL内存模组发送换出指令,携带存储有数据的第一内存页的地址和空闲的第一闪存页的地址,或携带存储有数据的第一内存页的地址;
主机接收到所述CXL内存模组发送的换出完成响应或第一闪存页的地址后,释放所述第一内存页,将所述数据的内存地址标记为无效,记录所述数据的闪存地址为所述第一闪存页的地址且标记为有效。
15.根据权利要求14所述的方法,其特征在于,所述第一内存页为只读页。
16.根据权利要求14所述的方法,其特征在于,所述方法还包括:
主机接收到读取所述数据的请求时,根据所述数据的逻辑地址查找所述数据的内存地址和闪存地址;
在查找到的内存地址无效,闪存地址有效时,向所述CXL内存模组发送换入指令,携带所述第一闪存页的地址,及空闲的第二内存页的地址;
接收到所述CXL内存模组返回的换入完成响应后,记录所述数据的内存地址为所述第二内存页的地址且标记为有效。
17.根据权利要求16所述的方法,其特征在于,所述方法还包括:
确定释放存储所述数据的第二内存页时,查找所述数据的逻辑地址、内存地址和闪存地址的对应关系及状态;
确定所述数据的闪存地址有效时,直接释放所述第二内存页,将所述数据的内存地址标记为无效。
18.根据权利要求14所述的方法,其特征在于,所述方法还包括:
主机通过逻辑地址对内存进行读写;
主机需要增加容量时,向所述CXL内存模组发送内存申请指令,携带申请的每一内存页的读写属性,所述读写属性为只读页或读写页。
19.根据权利要求14所述的方法,其特征在于,所述方法还包括:
在使用内存的进程结束时,释放所述进程的数据使用的所有只读页和闪存页。
20.一种内存数据的置换方法,应用于设置有闪存芯片和内存芯片的CXL内存模组,其特征在于,包括:
CXL内存模组能够把所述内存芯片中的部分数据置换到所述闪存芯片中。
21.根据权利要求20所述的方法,其特征在于,所述CXL内存模组运行虚拟内存,维护逻辑物理地址翻译表中数据的逻辑地址、内存地址和闪存地址的对应关系,所述CXL内存模组通过以下方式进行数据置换:
接收到外部设备发送的内存申请指令和/或管理内存时,确定所述内存芯片中可分配的内存不足,启动数据置换,把所述内存芯片中的部分数据置换到所述闪存芯片的空闲区域中。
22.根据权利要求21所述的CXL内存模组,其特征在于,所述内存申请指令携带申请的每一内存页的读写属性,所述读写属性为只读页或读写页;
所述CXL内存模组启动数据置换时,只置换所述内存芯片中只读页中的数据,或者,优先置换所述内存芯片中只读页中的数据。
23.根据权利要求21所述的CXL内存模组,其特征在于,所述方法还包括:统计所述内存芯片中内存页的使用时间;
所述CXL内存模组启动数据置换时,只置换预计时间内不会被使用的内存页的数据。
24.根据权利要求22或23所述的CXL内存模组,其特征在于,所述内存芯片中的部分数据包括所述内存芯片中的只读页中的第一数据,所述CXL内存模组把所述内存芯片中的部分数据置换到所述闪存芯片的空闲区域中,包括:
检测所述第一数据是否首次被换出;
在所述第一数据是首次被换出时,把所述第一数据置换到所述闪存芯片的空闲闪存页中,记录所述第一数据的闪存地址为该空闲闪存页的地址并标记为有效。
25.根据权利要求24所述的CXL内存模组,其特征在于,所述CXL内存模组检测所述第一数据是否首次被换出,包括:
查找所述第一数据的内存地址和闪存地址的状态;
确定所述第一数据的内存地址有效,闪存地址无效时,判定所述第一数据是首次被换出;
确定所述第一数据的闪存地址有效时,判定所述第一数据不是首次被换出。
26.根据权利要求25所述的CXL内存模组,其特征在于,所述方法还包括:
在所述第一数据被置换到所述闪存芯片的空闲区域之后,确定所述第一数据需要被换入时,从记录的所述第一数据的闪存地址读出所述第一数据,写入到从所述内存芯片中选定的空闲内存页,将所述第一数据的内存地址更新为所述空闲内存页的地址且标记为有效。
27.根据权利要求25所述的CXL内存模组,其特征在于,所述CXL内存模组确定所述第一数据需要被换入,包括:
接收到外部设备读取所述第一数据的请求,所述请求携带所述第一数据的逻辑地址;
查找到所述第一数据的闪存地址有效且内存地址无效,确定所述第一数据需要被换入;
所述方法还包括:从记录所述第一数据的闪存地址读出所述第一数据后,将读出的所述第一数据返回给所述外部设备。
28.根据权利要求24所述的CXL内存模组,其特征在于,所述方法还包括:在所述第一数据不是首次被换出时,直接释放所述只读页,将所述第一数据的内存地址标记为无效。
29.根据权利要求21所述的CXL内存模组,其特征在于,所述方法还包括:
在使用内存的进程结束时,释放所述进程的数据使用的所有只读页和闪存页。
30.根据权利要求20所述的CXL内存模组,其特征在于,所述CXL内存模组通过以下方式进行数据置换:
接收到外部设备发送的换出指令,所述换出指令携带存储有数据的第一内存页的地址和空闲的第一闪存页的地址,所述CXL内存模组将所述第一内存页中的所述数据置换到所述第一闪存页中,向所述外部设备返回换出完成响应;
或者,
接收到外部设备发送的换出指令,所述换出指令携带存储有数据的第一内存页的地址,所述CXL内存模组从所述闪存芯片中选择一个空闲的第一闪存页,将所述第一内存页中的所述数据置换到所述第一闪存页中,向所述外部设备返回所述第一闪存页的地址。
31.根据权利要求30所述的CXL内存模组,其特征在于,所述第一内存页为只读页。
32.根据权利要求30所述的CXL内存模组,其特征在于,所述方法还包括:
所述CXL内存模组接收所述外部设备发送的换入指令,所述换入指令携带所述第一闪存页的地址,及空闲的第二内存页的地址;
所述CXL内存模组从所述第一闪存页读取所述数据,写入到所述第二内存页中,并向所述外部设备返回换入完成响应。
33.一种CXL内存模组的控制器芯片,其特征在于,所述控制器芯片包括内存接口、闪存接口以及与所述内存接口和所述闪存接口连接的存储控制器,所述存储控制器被配置为执行如权利要求20至32中任一所述的方法。
34.一种主机,其特征在于,包括存储器和处理器,存储器用于存储执行指令;处理器调用所述执行指令,配置为执行如权利要求14至19中任一所述的方法。
35.一种计算机系统,其特征在于,包括如权利要求34所述的主机,及如权利要求1-13任一项所述的CXL内存模组。
CN202310266121.XA 2023-03-17 2023-03-17 一种cxl内存模组、内存数据的置换方法及计算机系统 Active CN116466879B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310266121.XA CN116466879B (zh) 2023-03-17 2023-03-17 一种cxl内存模组、内存数据的置换方法及计算机系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310266121.XA CN116466879B (zh) 2023-03-17 2023-03-17 一种cxl内存模组、内存数据的置换方法及计算机系统

Publications (2)

Publication Number Publication Date
CN116466879A true CN116466879A (zh) 2023-07-21
CN116466879B CN116466879B (zh) 2023-12-29

Family

ID=87172528

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310266121.XA Active CN116466879B (zh) 2023-03-17 2023-03-17 一种cxl内存模组、内存数据的置换方法及计算机系统

Country Status (1)

Country Link
CN (1) CN116466879B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117170882A (zh) * 2023-11-01 2023-12-05 新华三信息技术有限公司 一种资源分配方法、装置、电子设备及存储介质
CN117785757A (zh) * 2024-02-23 2024-03-29 北京超弦存储器研究院 Cxl内存模组、内存页交换的方法、芯片、介质和系统

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101281777A (zh) * 2007-04-04 2008-10-08 卢丽惠 可扩充容量的固态内存模块
CN105607862A (zh) * 2015-08-05 2016-05-25 上海磁宇信息科技有限公司 一种dram与mram结合具有备份电源的固态硬盘
CN112948149A (zh) * 2021-03-29 2021-06-11 江苏为是科技有限公司 一种远端内存共享方法、装置、电子设备及存储介质
CN113360093A (zh) * 2021-06-03 2021-09-07 锐掣(杭州)科技有限公司 内存系统和设备
CN113742259A (zh) * 2020-05-28 2021-12-03 三星电子株式会社 用于管理存储器资源的系统和方法
CN113778907A (zh) * 2021-08-25 2021-12-10 戴瑾 存储设备
CN115407839A (zh) * 2022-08-25 2022-11-29 脸萌有限公司 服务器结构及服务器集群架构
CN115543862A (zh) * 2022-09-27 2022-12-30 超聚变数字技术有限公司 内存管理方法及相关装置
US20230017643A1 (en) * 2021-07-18 2023-01-19 Elastics.cloud, Inc. Composable infrastructure enabled by heterogeneous architecture, delivered by cxl based cached switch soc
CN115686153A (zh) * 2022-12-29 2023-02-03 浪潮电子信息产业股份有限公司 一种内存模组及一种电子设备
CN115794669A (zh) * 2021-09-11 2023-03-14 华为技术有限公司 一种扩展内存的方法、装置及相关设备
CN115793953A (zh) * 2021-09-09 2023-03-14 上海江波龙数字技术有限公司 一种存储装置、数据处理方法、计算机可读存储介质

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101281777A (zh) * 2007-04-04 2008-10-08 卢丽惠 可扩充容量的固态内存模块
CN105607862A (zh) * 2015-08-05 2016-05-25 上海磁宇信息科技有限公司 一种dram与mram结合具有备份电源的固态硬盘
CN113742259A (zh) * 2020-05-28 2021-12-03 三星电子株式会社 用于管理存储器资源的系统和方法
CN112948149A (zh) * 2021-03-29 2021-06-11 江苏为是科技有限公司 一种远端内存共享方法、装置、电子设备及存储介质
CN113360093A (zh) * 2021-06-03 2021-09-07 锐掣(杭州)科技有限公司 内存系统和设备
US20230017643A1 (en) * 2021-07-18 2023-01-19 Elastics.cloud, Inc. Composable infrastructure enabled by heterogeneous architecture, delivered by cxl based cached switch soc
CN113778907A (zh) * 2021-08-25 2021-12-10 戴瑾 存储设备
CN115793953A (zh) * 2021-09-09 2023-03-14 上海江波龙数字技术有限公司 一种存储装置、数据处理方法、计算机可读存储介质
CN115794669A (zh) * 2021-09-11 2023-03-14 华为技术有限公司 一种扩展内存的方法、装置及相关设备
WO2023035646A1 (zh) * 2021-09-11 2023-03-16 华为技术有限公司 一种扩展内存的方法、装置及相关设备
CN115407839A (zh) * 2022-08-25 2022-11-29 脸萌有限公司 服务器结构及服务器集群架构
CN115543862A (zh) * 2022-09-27 2022-12-30 超聚变数字技术有限公司 内存管理方法及相关装置
CN115686153A (zh) * 2022-12-29 2023-02-03 浪潮电子信息产业股份有限公司 一种内存模组及一种电子设备

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117170882A (zh) * 2023-11-01 2023-12-05 新华三信息技术有限公司 一种资源分配方法、装置、电子设备及存储介质
CN117170882B (zh) * 2023-11-01 2024-02-23 新华三信息技术有限公司 一种资源分配方法、装置、电子设备及存储介质
CN117785757A (zh) * 2024-02-23 2024-03-29 北京超弦存储器研究院 Cxl内存模组、内存页交换的方法、芯片、介质和系统
CN117785757B (zh) * 2024-02-23 2024-05-28 北京超弦存储器研究院 Cxl内存模组、内存页交换的方法、芯片、介质和系统

Also Published As

Publication number Publication date
CN116466879B (zh) 2023-12-29

Similar Documents

Publication Publication Date Title
CN116466879B (zh) 一种cxl内存模组、内存数据的置换方法及计算机系统
KR102506392B1 (ko) 하이브리드 메모리에서 쓰기 및 플러시 지원을 위한 시스템 및 방법
US5983312A (en) Simultaneously writing to and erasing two commonly numbered sectors
US7475185B2 (en) Nonvolatile memory system, nonvolatile memory device, memory controller, access device, and method for controlling nonvolatile memory device
US8843691B2 (en) Prioritized erasure of data blocks in a flash storage device
US8909853B2 (en) Methods and apparatus to share a thread to reclaim memory space in a non-volatile memory file system
KR101263307B1 (ko) Usb 플래쉬 쓰기 성능을 향상시키기 위한 방법과 장치
US7647470B2 (en) Memory device and controlling method for elongating the life of nonvolatile memory
US20040085849A1 (en) Flash memory, and flash memory access method and apparatus
CN112486852B (zh) 一种固态硬盘及其地址映射方法
JP2002123421A (ja) フラッシュメモリのための再写像制御方法及びこれによるフラッシュメモリの構造
CN106648463B (zh) Nand Flash块管理方法和系统
US20100318760A1 (en) Memory controller, nonvolatile storage device, and nonvolatile storage system
CN107329704B (zh) 一种缓存镜像方法及控制器
CN106598504B (zh) 数据存储方法及装置
CN110968269A (zh) 基于scm与ssd的键值存储系统及读写请求处理方法
WO2008093961A1 (en) System and method for processing read request
CN116431530B (zh) 一种cxl内存模组、内存的处理方法及计算机系统
KR20170065427A (ko) Ssd의 데이터 프로세싱 방법 및 장치
US20060036663A1 (en) Method and apparatus for effective data management of files
CN110955488A (zh) 一种持久性内存的虚拟化方法及系统
CN111475099A (zh) 一种数据存储方法、装置及其设备
CN116540950B (zh) 一种存储器件及其写入数据的控制方法
CN109739688B (zh) 快照资源空间管理方法、装置、电子设备
CN112015671A (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
GR01 Patent grant
GR01 Patent grant