CN117806526A - 数据迁移方法、装置、芯片以及计算机可读存储介质 - Google Patents
数据迁移方法、装置、芯片以及计算机可读存储介质 Download PDFInfo
- Publication number
- CN117806526A CN117806526A CN202211168045.0A CN202211168045A CN117806526A CN 117806526 A CN117806526 A CN 117806526A CN 202211168045 A CN202211168045 A CN 202211168045A CN 117806526 A CN117806526 A CN 117806526A
- Authority
- CN
- China
- Prior art keywords
- storage unit
- data
- migration
- storage
- storage medium
- 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
Links
- 230000005012 migration Effects 0.000 title claims abstract description 618
- 238000013508 migration Methods 0.000 title claims abstract description 618
- 238000000034 method Methods 0.000 title claims abstract description 166
- 238000013507 mapping Methods 0.000 claims abstract description 99
- 238000001514 detection method Methods 0.000 claims description 16
- 230000008569 process Effects 0.000 abstract description 72
- 238000012545 processing Methods 0.000 description 28
- 238000010586 diagram Methods 0.000 description 21
- 238000004590 computer program Methods 0.000 description 12
- 230000004044 response Effects 0.000 description 9
- 206010047289 Ventricular extrasystoles Diseases 0.000 description 6
- 238000005129 volume perturbation calorimetry Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000001427 coherent effect Effects 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 230000001172 regenerating effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
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/061—Improving I/O performance
-
- 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
-
- 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
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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/0683—Plurality of storage devices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种数据迁移方法、装置、芯片以及计算机可读存储介质,涉及存储技术领域。该方法通过在获取到对第一存储介质的存储单元的数据迁移请求的情况下,将该存储单元中的数据迁移至第二存储介质中未参与统一编址的存储单元,迁移过程中应用程序的数据访问请求通过查询第二单元映射表中的映射关系和迁移表中的迁移状态路由到第一存储介质或者第二存储介质,迁移完成后再将第二存储单元的地址分配给应用程序,由于参与迁移的存储单元无须加锁,简化了迁移流程,相应地,降低了数据迁移的时长,提高了数据迁移效率。
Description
技术领域
本申请涉及存储技术领域,特别涉及一种数据迁移方法、装置、芯片以及计算机可读存储介质。
背景技术
计算设备的处理器可配置包括多个存储介质的混合内存系统,对于处理器而言,混合内存系统中的各个存储介质的存储性能不同,处理器可以将对混合内存系统中某一存储介质中的数据迁移至另一存储介质,以便发挥各个存储介质的存储性能。
目前,数据迁移的过程为:混合内存系统中的各个存储介质均包括多个页面,对于混合内存系统中某一存储介质的待迁移页面(即旧页面),处理器先为旧页面中的数据分配另一存储介质的某个页面(即新页面),然后,获取旧页面的页面锁,取消页面表中旧页面的映射关系,无效掉转译后备缓冲器(translation lookaside buffer,TLB)中旧页面的TLB表项,之后,获取新页面的页面锁,将数据从旧页面复制到新页面,最后,通过页面表完成新页面的映射,释放新页面的页面锁,释放旧页面以及旧页面的页面锁。
但是,上述数据迁移过程依赖于页面锁机制,处理器需要分别获取旧页面和新页面的页面锁,在完成数据迁移后,还需要释放旧页面和新页面的页面锁,数据迁移流程复杂,增加了数据迁移的时长,降低了数据迁移效率。
发明内容
本申请提供了一种数据迁移方法、装置、芯片以及计算机可读存储介质,能够提高数据迁移效率。
第一方面,提供了一种数据迁移方法,方法应用于混合内存系统,混合内存系统包括第一存储介质和第二存储介质,该方法包括如下步骤:获取数据迁移请求,其中,数据迁移请求指示将第一存储介质的第一存储单元中的数据迁移至第二存储介质;之后,将第一存储单元中的数据迁移至第二存储介质中的第二存储单元;将第一存储单元在统一编址时所关联的第一地址分配给第二存储单元,其中,第二存储单元未参与混合内存系统中的统一编址。
该方法通过在获取到对第一存储介质的存储单元的数据迁移请求的情况下,将该存储单元中的数据迁移至第二存储介质中未参与统一编址的存储单元,由于未参与统一编址的存储单元不支持应用程序访问,在向未参与统一编址的存储单元迁移数据的过程中,也就不存在写数据一致性维护问题,因此,未参与统一编址的存储单元无须加锁,简化了迁移流程,相应地,降低了数据迁移的时长,提高了数据迁移效率。
在一种可能的实现方式中,第一地址与第一存储单元在第一存储介质中的第二地址之间具有映射关系,以指示将第一地址分配给第一存储单元,基于此,上述将第一存储单元在统一编址时所关联的第一地址分配给第二存储单元的实现过程包括:将映射关系中的第二地址修改为第二存储单元在第二存储介质中的第二地址。
基于上述可能的实现方式,实现了混合内存系统中第一地址和第二地址放置的解耦,在不改变第一地址的情况下,实现了数据在不同存储介质中的迁移,不影响处理器的执行流程。
在另一种可能的实现方式中,该方法还包括如下步骤:接收应用程序的第一数据写请求,第一数据写请求指示向第一存储单元写入数据;之后,根据第一数据写请求,查询第一存储单元的迁移状态;若迁移状态为迁移中,将第一数据写请求转换为第二数据写请求,其中,迁移状态指示第一存储单元的迁移进度,迁移中指示正在将第一存储单元中的数据迁移至第二存储单元,第二数据写请求指示向第二存储单元写入数据。
基于上述可能的实现方式,在数据迁移过程中若处理器向第一地址写入数据,根据关联第一地址的第一存储单元的迁移状态,向第一存储单元或第二存储单元写入数据,以覆盖掉第一地址中存储的旧数据,确保写入到第一地址的数据为最新数据,以便之后处理器能够在第一地址中读取到最新数据。
在另一种可能的实现方式中,该方法还包括如下步骤:接收应用程序的第一数据读请求,其中,第一数据读请求指示从第一存储单元的第一缓存行读取数据;之后,根据第一数据读请求,获取第二存储单元中第一缓存行对应的第二缓存行的写入状态;若写入状态为写入完成,将第一数据读请求转换为第二数据读请求,其中,写入状态指示第二缓存行写入数据的进度写入完成指示第二缓存行已经写入数据,第二数据读请求指示从第二缓存行读取数据。
基于上述可能的实现方式,在数据迁移过程中若处理器读取第一存储单元的第一缓存行中的数据,根据第二存储单元中与该第一缓存行对应的第二缓存行的写入状态,在第一存储单元或第二缓存行读取数据,以确保读取到最新数据。
在另一种可能的实现方式中,上述获取数据迁移请求的过程包括:先对第一存储介质进行数据迁移检测;若检测到第一存储单元满足迁移条件,在生成数据迁移请求。
在另一种可能的实现方式中,第一存储单元满足迁移条件包括第一存储单元的被访问次数达到迁移阈值的取值范围,基于此,上述对第一存储介质进行数据迁移检测的过程包括:检测发往混合内存系统的数据访问请求,数据访问请求指示访问混合内存系统中的存储单元;根据检测到数据访问请求,获取第一存储单元的被访问次数。
在另一种可能的实现方式中,第一存储单元满足迁移条件包括第一存储介质的访问时延小于第二存储介质的访问时延,第一存储介质中空闲存储单元的个数小于或等于个数阈值,且第一存储单元为被访问次数未达到访问阈值的非空闲存储单元;基于此,上述对第一存储介质进行数据迁移检测的过程包括:先获取第一存储介质中各个存储单元的被访问次数;再根据第一存储介质中各个存储单元的被访问次数,确定第一存储介质中的空闲存储单元以及非空闲存储单元。
基于上述可能的实现方式,通过第一存储介质中的各个存储单元的访问次数,确定第一存储介质中的空闲存储单元和非空闲存储单元,而无需从第一存储介质查询的各个存储单元是否存储有数据,确定方式简单且快捷。
在另一种可能的实现方式中,该方法还包括如下步骤:若检测到第一存储单元满足迁移条件,且接收到应用程序对第一存储单元的数据访问请求,生成数据迁移请求。
基于上述可能的实现方式,在应用程序对该存储单元有访问需求的情况下,再生成对该存储单元的数据迁移请求,对该存储单元进行数据迁移,从而避免无效的数据迁移。
在另一种可能的实现方式中,在将第一存储单元中的数据迁移至第二存储介质中的第二存储单元的步骤之前,该方法还包括如下步骤:从第二存储介质的候选存储单元中,确定第二存储单元,候选存储单元为用于未参与统一编址的空闲存储单元。
基于上述可能的实现方式,通过从未参与统一编址的空闲存储单元中确定出第二存储单元,以便将第一存储单元中的数据迁移至未参与统一编址的空闲存储单元,由未参与统一编址的空闲存储单元不支持应用程序访问且未存储数据,再向未参与统一编址的空闲存储单元迁移数据时不会出现写一致性问题,从而无须对未参与统一编址的空闲存储单元加锁,简化了迁移流程,提高了数据迁移效率。
在另一种可能的实现方式中,候选存储单元位于第二存储介质的候选存储单元队列,将第一存储单元中的数据迁移至第二存储单元之后,该方法还包括如下步骤:移除候选存储单元队列中的第二存储单元;若候选存储单元队列中的候选存储单元未满,将第二存储介质中参与统一编址的空闲存储单元加入候选存储单元队列。
基于上述可能的实现方式,动态维护第二存储介质中用于存储迁移数据且不支持应用程序写入数据的存储空间,从而不影响之后向第二存储介质继续迁移数据。
第二方面,提供了一种数据迁移方法,该方法应用于混合内存系统,混合内存系统包括第一存储介质和第二存储介质,该方法包括如下步骤:获取数据迁移请求,其中,数据迁移请求指示将第一存储介质的第一存储单元中的数据迁移至第二存储介质;之后从第二存储介质的候选存储单元中,确定第二存储单元;再之后,将第一存储单元中的数据迁移至第二存储介质中的第二存储单元,其中,候选存储单元为用于未参与统一编址的空闲存储单元。
该方法通过在获取到对第一存储介质的存储单元的数据迁移请求的情况下,将该存储单元中的数据迁移至第二存储介质中未参与统一编址的空闲存储单元,由于未参与统一编址的空闲存储单元不支持应用程序访问,且没有存储数据,在向未参与统一编址的空闲存储单元迁移数据的过程中,也就不存在写数据一致性维护问题,因此,未参与统一编址的空闲存储单元无须加锁,简化了迁移流程,相应地,降低了数据迁移的时长,提高了数据迁移效率。
第三方面,提供了一种数据迁移装置,该装置包括用于执行第一方面或第一方面任一种可能实现方式中的数据迁移方法的各个模块,或者该装置包括用于执行第二方面的数据迁移方法的各个模块。
第四方面,提供一种芯片,该芯片用于实现如第一方面或第一方面任一种可能实现方式中的数据迁移方法的操作步骤,或该芯片用于实现如第二方面的数据迁移方法的操作步骤。
第五方面,提供一种计算机可读存储介质,该存储介质中存储有至少一条程序代码,该程序代码由处理器读取以使芯片执行如上述数据迁移方法的操作步骤。
第六方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括程序代码,该程序代码存储在计算机可读存储介质中,芯片的处理器从计算机可读存储介质读取该程序代码,处理器执行该程序代码,使得该芯片执行上述第一方面或者第一方面的各种可选实现方式中提供的方法。
本申请在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。
附图说明
图1是本申请提供的一种数据迁移访问方法的应用系统示意图;
图2是本申请提供的一种应用数据迁移方法的电子设备的结构图;
图3是本申请提供的另一种应用数据迁移方法的电子设备的结构图;
图4是本申请提供的一种数据迁移方法的流程图;
图5是本申请提供的一种基于方式A获取数据迁移请求的流程图;
图6是本申请提供的一种基于方式B获取数据迁移请求的流程图;
图7是本申请提供的一种数据迁移过程的流程图;
图8是本申请提供的一种数据迁移与数据写入并行的情况下存储单元的访问流程图;
图9是本申请提供的一种第一数据写请求在迁移读请求之前达到管理器时的数据迁移过程示意图;
图10是本申请提供的一种第一数据写请求在迁移读请求之后迁移写请求之前达到管理器时的数据迁移过程示意图;
图11是本申请提供的一种第一数据写请求在迁移写请求之后达到管理器时的数据迁移过程示意图;
图12是本申请提供的一种数据迁移与数据读取并行的情况下存储单元的访问流程图;
图13是本申请提供的一种第一数据读请求在迁移写请求之后达到管理器时的数据迁移过程示意图;
图14是本申请提供的一种处理器两次访问第一存储单元时的数据迁移过程示意图;
图15是本申请提供的一种基于处理器的访问命令进行数据迁移的流程图;
图16是本申请提供的一种数据迁移装置的结构示意图;
图17是本申请提供的另一种数据迁移装置的结构示意图;
图18是本申请提供的一种芯片的结构示意图。
具体实施方式
为了提升数据迁移的效率,本申请提供一种应用于混合内存系统的数据迁移方法,在混合内存系统中的两个存储介质之间有数据迁移的需求时,区分参与统一编址的存储单元和未参与统一编址的存储单元,在执行数据迁移时,将待迁移的存储单元中的数据迁移至混合内存系统中其他存储介质内未参与统一编址的存储单元。
下面将结合附图对本申请所提供的混合内存系统的数据迁移方法作进一步地详细描述。
图1是本申请提供的一种数据迁移访问方法的应用系统示意图,如图1所示,该应用系统包括处理器101、缓存(cache)102、混合内存系统103以及混合内存系统103的管理器104,其中,处理器101可以采用专用集成电路(application-specific integratedcircuit,ASIC)、数字信号处理(digital signal processing,DSP)、现场可编程门阵列(field-programmable gate array,FPGA)、可编程逻辑阵列(programmable logic array,PLA)中的至少一种硬件形式来实现,当然,处理器101也可以有其他的硬件实现方式,对此本申请不做限定。处理器101例如中央处理器(central processing unit,CPU),在一些实施例中,处理器101还可以利用图像处理器(graphics processing unit,GPU)或数据处理单元(data processing unit,DPU)实现,GPU用于负责显示屏所需要显示的内容的渲染和绘制。在一些实施例中,处理器101还包括人工智能(artificial intelligence,AI)处理器,AI处理器用于处理有关机器学习的计算操作。
处理器101访问混合内存系统103的存储介质31,以从存储介质31读取数据或者向存储介质31写入数据。在访问存储介质31时,处理器101可以将存储介质31中的部分数据复制到缓存102中,以便后续能够从缓存102快速读取这部分数据。在另一些实施例中,该应用系统不包括缓存102,此时处理器101直接访问存储介质31。
混合内存系统103包括多种存储介质31,该多种存储介质31用于存储数据(如代码或者业务数据)。多种存储介质31例如图1所示的静态随机存取高速带宽内存(highbandwidth memory,HBM)311、相变存储器(phase change memory,PCM)312以及双倍速率同步动态随机存储器(double data Rate SDRAM,DDR)313。在另一些实施例中,混合内存系统103包括这3种存储介质中的任意2种,或者包括除这3种存储介质以外的其他存储介质,其他存储介质例如磁性随机存储器(magnetic random access memory,MRAM)、静态随机存取存储器(static random-access memory,SRAM)等,在此,本申请实施例对混合内存系统103中存储介质31的数目以及种类不做限定。
混合内存系统103还包括存储介质31的控制器32,控制器32用于实现对应存储介质31与处理器101之间的数据交换。如图1所示,HBM311、PCM312以及DDR313的控制器32分别为:HBM控制器321、PCM控制器322、DDR控制器323。
如图1所示,管理器104用于连接缓存102和各个控制器32,在另一些实施例中,该应用系统中不包括缓存102,此时,管理器104用于连接处理器101和各个控制器32。管理器104作为控制器32的上一级控制器,与处理器101进行数据交互。例如,在处理器101访问HBM311时,处理器101向管理器104下发对HBM311的访问请求,管理器104将数据访问请求发送给HBM控制器321,由HBM控制器321根据数据访问请求访问HBM311,其中,数据访问请求指示访问混合内存系统103中的存储单元。
另外,混合内存系统103中的不同存储介质31具有不同的存储性能,例如,有些存储介质31存储容量大,但访问时延高,而有些存储介质31存储容量小,但访问时延低。管理器104还用于通过该数据迁移方法,将混合内存系统103中任一种存储介质31中的数据迁移至另一种存储介质31,以便发挥混合内存系统103中各个存储介质31的优势性能。
管理器104通过软件实现、硬件实现或者软硬件结合的方式实现。管理器104作为软件功能单元的一种举例,管理器104包括运行在计算实例上的代码。其中,计算实例包括虚拟机、容器中的至少一种。进一步地,上述计算实例可以是一台或者多台。例如,管理器104包括运行在多个虚拟机/容器上的代码。另外,用于运行该代码的多个虚拟机/容器可能分布在相同的区域(region)中,也可能分布在不同的region中。进一步地,用于运行该代码的多个虚拟机/容器可能分布在相同的可用区(availability zone,AZ)中,也可能分布在不同的AZ中,每个AZ包括一个数据中心或多个地理位置相近的数据中心。其中,通常一个region可以包括多个AZ。
同样,用于运行该代码的多个虚拟机/容器可以分布在同一个虚拟私有云(virtual private cloud,VPC)中,也可以分布在多个VPC中。其中,通常一个VPC设置在一个region内,同一region内两个VPC之间,以及不同region的VPC之间跨区通信需在每个VPC内设置通信网关,经通信网关实现VPC之间的互连。
管理器104作为硬件功能单元的一种举例,管理器104可能是利用专用集成电路(application-specific integrated circuit,ASIC)实现或可编程逻辑器件(programmable logic device,PLD)实现的设备等。其中,上述PLD可以是复杂程序逻辑器件(complex programmable logical device,CPLD)、现场可编程门阵列(field-programmable gate array,FPGA)、通用阵列逻辑(generic array logic,GAL)或其任意组合实现。
在一些实施例中,图1所示的应用系统由电子设备提供,该电子设备可能是服务器,也可能是终端设备,其中,服务器例如云服务器、中心服务器、边缘服务器、远端数据中心中的远端服务器或本地数据中心中的本地服务器等。终端设备例如台式机、笔记本电脑或者智能手机等。此时,混合内存系统103中的存储介质31可能是片上存储器(on chipmemory)、处理器101外挂的存储器或者电子设备通过串行总线扩展的存储设备中的存储介质。其中,串行总线例如高速串行计算机扩展总线标准(peripheral componentinterconnect express,PCIE)总线、计算机高速链接(compute express link,CXL)总线、加速器的缓存一致互联协议(cache coherent interconnect for accelerators,CCIX)总线等,在此,本申请实施例对混合内存系统103中存储介质31的位置不做限定。
例如,图2所示的本申请提供的一种应用数据迁移方法的电子设备的结构图,参见图2,电子设备200包括处理器101、缓存102以及混合内存系统103a的管理器104a,处理器101包括至少一个处理器核心11以及存储介质31a。在电子设备200中,处理器11还外挂存储介质31b。电子设备200通过PCIE/CXL/CCIX总线连接存储设备105,存储设备105包括存储介质31c和存储介质31d。
如图2所示混合内存系统103a包括存储介质31a至存储介质31d,存储介质31a至31d的控制器分别为控制器32a、32b、32c以及32d。混合内存系统103a内各个存储介质分别通过各自的控制器连接管理器104a,从而使得管理器104a作为混合内存系统103a与处理器101沟通的桥梁。应当理解,存储介质31a至31d分别为不同种类的存储介质,混合内存系统103a中的每种存储介质均可以有至少一个。
存储介质31a为处理器101片上集成的HBM、DDR或PCM等。存储介质31b为电子设备内处理器101外挂HBM、DDR或PCM等。存储介质31c或存储介质31d为存储设备105中的HBM、DDR或PCM等。在此,本申请实施例对存储介质31a至31d的种类不做限定。
可以理解的是,图2中的混合内存系统103a为图1中混合内存系统103的一种示例,在另一些实施例中,混合内存系统103a不包括存储介质31a和31d中的任一种存储介质,或者不包括存储介质31c和31d。图2中的管理器104a为图1中管理器104的一种示例,若管理器104a作为硬件功能单元,管理器104a用于连接缓存102和混合内存系统103a中的各个控制器32。例如,管理器104a集成在缓存102和控制器32之间的主机内存桥片(host memorybridge)中。或者,管理器104a作为一个单独的芯片,连接主机内存桥片和各个控制器32。
在另一些实施例中,混合内存系统103中的存储介质仅有电子设备通过串行总线扩展的存储设备中的存储介质组成。例如图3所示的本申请提供的另一种应用数据迁移方法的电子设备的结构图,参见图3,电子设备300包括处理器101、缓存102、至少一个存储介质105以及每个存储介质105的控制器106,电子设备300通过PCIE/CXL/CCIX总线连接存储设备107,存储设备107包括混合内存系统103b以及混合内存系统103b的管理器104b,混合内存系统103b包括存储介质31e、存储介质31e的控制器32e、存储介质31f以及存储介质31的控制器32f,控制器32e和32f均与管理器104b连接。其中,图3是混合内存系统103b包括两种存储介质为例示出的,在一些实施例中,混合内存系统103b包括2种以上的存储介质31,在此,本申请实施例对混合内存系统103b中存储介质31的种类不做限定。
可以理解的是,图3所示的混合内存系统103b为图1所示的混合内存系统103的一种示例,管理器104b为管理器104的一种示例,若管理器104b作为硬件功能单元,和图2不同的是,在图3所示的实施例中,管理器104b位于电子设备所连接的存储设备中,而图2所示的管理器104a位于在电子设备中。
接下来,基于上述介绍应用系统,对本申请提供的数据迁移方法作如下介绍:
图4是本申请提供的一种数据迁移方法的流程图,该方法应用于混合内存系统,该混合内存系统包括第一存储介质和第二存储介质,该方法包括如下步骤。
步骤401、管理器获取数据迁移请求,该数据迁移请求指示将第一存储介质的第一存储单元中的数据迁移至第二存储介质。
其中,混合内存系统包括多种存储介质,例如,混合内存系统为上文介绍的任一种混合系统。混合内存系统中的各个存储介质均包括多个存储单元,存储单元用于存储数据,例如,存储单元为存储介质中的页面。存储单元为数据迁移的基本单位,存储单元的数据容量可能为4千字节(kilobyte,KB)、64KB或2兆字节(MByte,MB),在此本申请实施例对存储单元的数据容量不做限定。
各种存储介质中的存储单元分为迁移数据的候选存储单元和非候选存储单元,其中,存储介质中的候选存储单元的数量小于非候选存储单元的数量。电子设备中的处理器对混合内存系统中多种存储介质的非候选存储单元进行统一编址,得到各个非候选存储单元的物理地址,以将多种存储介质的非候选存储单元组织成该混合内存系统为应用程序提供的存储空间。
可以理解的是,非候选存储单元为参与统一编址的存储单元,以便处理器在运行应用程序时访问非候选存储单元(如在非候选存储单元存储数据或读取非候选存储单元中的数据),即非候选存储单元为支持应用程序访问的存储单元。候选存储单元为未参与统一编址的空闲存储单元。为区分参与统一编址的存储单元和未参与统一编址的存储单元,管理器为参与统一编的各个存储单元分别建立各自的物理地址和介质地址之间的映射关系,将未参与统一编址的存储单元的介质地址添加到所属存储介质对应的候选存储单元队列,其中,存储单元的介质地址用于指示存储单元在所属存储介质中的位置。基于此,后续管理器可以根据候选存储单元队列中的介质地址,将某一存储介质的非候选存储单元中存储的数据迁移至另一存储介质中的候选存储单元,即候选存储单元为支持迁移数据且不支持应用程序访问的空闲存储单元。
非候选存储单元的物理地址用于指示该存储单元在该存储空间中的位置。以非候选存储单元为存储介质中的页面为例,该物理地址为该页面在该混合内存系统中的页面框号。另外,处理器还为各个非候选存储单元分别分配虚拟存储空间中的虚拟地址,非候选存储单元的虚拟地址对应用程序透明,应用程序通过虚拟地址对非候选存储单元进行访问。
在一些实施例,各种存储介质的控制器中存储有各自的非候选存储单元的物理地址与虚拟地址之间的第一映射关系。示例性地,该第一映射关系由第一单元映射表来记录。例如下述表1所示的第一单元映射表,第一单元映射表包括多个第一单元映射表项,每个第一单元映射表项包括非候选存储单元的物理地址以及虚拟地址,每个第一单元映射表项也即是非候选存储单元的物理地址以及虚拟地址之间的第一映射关系。
表1
物理地址 | 虚拟地址 |
00000001 | 00000001 |
00000002 | 00000004 |
00000003 | 00000005 |
…… | …… |
第一存储介质为混合内存系统中的任一种存储介质,第二存储介质为混合内存系统中支持与第一存储介质进行数据交换的任一存储介质。例如,混合内存系统包括存储介质1至存储介质3,在存储介质1和存储介质2之间支持数据交换,而存储介质1和3之间不支持数据交换的情况下,若在存储介质1为第一存储介质,则存储介质2为第二存储介质。在存储介质1至存储介质3互相支持数据交换的情况下,若在存储介质1为第一存储介质,第二存储介质可能是存储介质2或3。
第一存储单元为第一存储介质中待迁移数据的任一非候选存储单元,该数据迁移请求包括第一存储单元的物理地址以及第二存储介质的介质属性标识,该介质属性标识用于指示该第二存储介质。另外,在管理器已知第一存储介质与第二存储介质之间支持数据迁移的情况下,该数据迁移请求不包括第二存储介质的介质属性标识。
其中,管理器通过下述方式A或者方式B中的至少一种方式,来获取数据迁移请求。
方式A、管理器接收处理器对第一存储单元的数据迁移请求。
结合图5所示的本申请提供的一种基于方式A获取数据迁移请求的流程图,对方式A做如下介绍:
步骤A1、处理器对第一存储介质进行数据迁移检测。
处理器通过对第一存储介质进行数据迁移检测,以确定第一存储介质中支持应用程序访问的各个存储单元(即候选存储单元)是否满足迁移条件。
在一种可能的实现方式中,存储单元满足迁移条件包括存储单元的被访问次数达到迁移阈值的取值范围,其中,被访问次数为处理器访问存储单元的次数,迁移阈值的取值范围由第一存储介质和第二存储介质的访问时延来确定。例如,若第一存储介质的访问时延大于第二存储介质的访问时延,迁移阈值的取值范围为大于或等于第一迁移阈值,若第一存储介质的访问时延小于第二存储介质的访问时延,迁移阈值的取值范围为大于0且小于或等于第二迁移阈值,第一迁移阈值大于第二迁移阈值。基于这种迁移条件,对第一存储介质进行数据迁移检测的过程做如下介绍:
混合内存系统所在的电子设备还提供有统计单元,统计单元根据处理器向第一存储介质下发的数据访问请求,对第一存储介质中参与统一编址的多个存储单元的被访问次数进行周期性统计,向处理器周期性提供该多个存储单元的被访问次数。其中,统计单元处理器周期性提供该多个存储单元的被访问次数的方式,例如,统计单元每经过一个统计周期,向处理器发送当前周期统计到的该多个存储单元的被访问次数。再例如,统计单元存储最近统计周期统计到的该多个存储单元的被访问次数,处理器周期性或者非周期性的从统计单元读取该对个存储单元最新的被访问次数,以便根据各个存储单元的被访问次数确定各个存储单元是否满足迁移条件。再例如,统计单元每经过一个统计周期,将当前周期统计到的该多个存储单元的被访问次数存储至第一存储介质,处理器周期性或者非周期性的从第一存储介质读取各个存储单元最新的被访问次数,以便根据各个存储单元的被访问次数确定各个存储单元是否满足迁移条件。
其中,该统计单元可以通过硬件实现或者通过软件形式,在通过硬件实现时,该统计单元为芯片,该芯片通过CPU实现,也可以通过ASIC实现,也可以通过PLD实现,上述PLD可以是CPLD、FPGA、GAL、数据处理单元(data processing unit,DPU)、片上系统(system onchip,SoC)或其任意组合。芯片可能集成在管理器、处理器、第一存储介质的第一控制器或插接有第一存储介质的转接卡。
处理器获取到该多个存储单元的被访问次数后,根据各个存储单元的被访问次数以及迁移阈值的取值范围,确定各个存储单元是否满足迁移条件。例如,对于第一存储介质中的第一存储单元,若第一存储介质的访问时延大于第二存储介质的访问时延,且该第一存储单元的被访问次数大于或等于第一迁移阈值,则该第一存储单元满足迁移条件,此时第一存储单元为处理器频繁访问的存储单元(即热页面),第一存储单元中的数据为处理器频繁访问的数据(即热数据),之后将第一存储单元中的热数据迁移至低访问时延的第二存储介质,以便后续能够从第二存储介质快速读取到该数据。
若第一存储介质的访问时延小于第二存储介质的访问时延,且该第一存储单元的被访问次数小于或等于第二迁移阈值,则该第一存储单元满足迁移条件,此时第一存储单元为处理器不频繁访问的存储单元(即冷页面),第一存储单元中的数据为处理器不频繁访问的数据(即冷数据),之后将第一存储单元中的冷数据迁移至高访问时延的第二存储介质,以便第一存储单元存储第二存储介质中处理器频繁访问的数据,处理器能够快速获取频繁访问的数据。
在另一些实施例中,处理器在获取到第一存储介质中各个存储单元的被访问次数后,先对各个存储单元的被访问次数进行排序,得到次数序列,之后,再根据次数序列以及访问阈值的取值范围,确定第一存储介质中的各个存储单元是否满足迁移条件。
例如,若第一存储介质的访问时延大于第二存储介质的访问时延,处理器从次数序列中最小的被访问次数开始,依次将次数序列中的被访问次数与第一迁移阈值进行比较,若任一被访问次数小于第一迁移阈值,则对次数序列中该任一被访问次数的下一个被访问次数与第一迁移阈值进行比较,若任一被访问次数大于或等于第一迁移阈值,则次数序列中该任一被访问次数以及该任一被访问次数之后的被访问次数所对应存储单元均满足迁移条件,比较结束。或者,处理器从次数序列中最大的被访问次数开始,依次将次数序列中的被访问次数与第一迁移阈值进行比较,若任一被访问次数大于或等于第一迁移阈值,则对次数序列中该任一被访问次数的下一个被访问次数与第一迁移阈值进行比较,若任一被访问次数小于第一迁移阈值,则次数序列中该任一被访问次数之前的被访问次数所对应存储单元均满足迁移条件,比较结束。
若第一存储介质的访问时延小于第二存储介质的访问时延,处理器从次数序列中最大的被访问次数开始,依次将次数序列中的被访问次数与第二迁移阈值进行比较,若任一被访问次数大于第二迁移阈值,则对次数序列中该任一被访问次数的下一个被访问次数与第二迁移阈值进行比较,若任一被访问次数小于或等于第二迁移阈值,则次数序列中该任一被访问次数以及该任一被访问次数之后的被访问次数所对应存储单元均满足迁移条件,比较结束。或者,处理器从次数序列中最小的被访问次数开始,依次将次数序列中的被访问次数与第一迁移阈值进行比较,若任一被访问次数小于或等于第二迁移阈值,则对次数序列中该任一被访问次数的下一个被访问次数与第一迁移阈值进行比较,若任一被访问次数大于第二迁移阈值,则次数序列中该任一被访问次数之前的被访问次数所对应存储单元均满足迁移条件,比较结束。
对于第一迁移阈值和第二迁移阈值中的任一迁移阈值,按照次数序列,将第一存储介质的存储单元的被访问次数与该迁移阈值进行比较,以确定出满足迁移条件的存储单元,从而无须对次数序列中的被访问次数与该迁移阈值进行一一对比,提高了确定满足迁移条件的存储单元的效率。相应地,若第一存储介质的访问时延大于第二存储介质的访问时延,且该第一存储单元的被访问次数小于第一迁移阈值,则该第一存储单元不满足迁移条件。若第一存储介质的访问时延小于第二存储介质的访问时延,且该第一存储单元的被访问次数大于第二迁移阈值,则该第一存储单元不满足迁移条件。
另外,上述是以统计单元周期性向处理器发送第一存储介质的各个存储单元的被访问次数为例进行说明的,另一些实施例中,统计单元存储第一存储介质的各个存储单元的被访问次数,在获取到当前周期统计到的各个存储单元的被访问次数后,将之前存储的各个存储单元的被访问次数更新为当前周期统计到的各个存储单元的被访问次数,处理器周期性或者非周期性的从统计单元读取各个存储单元最新的被访问次数,以便根据各个存储单元的被访问次数确定各个存储单元是否满足迁移条件。或者,统计单元每经过一个统计周期,将当前周期统计到的各个存储单元的被访问次数存储至第一存储介质,处理器周期性或者非周期性的从第一存储介质读取各个存储单元最新的被访问次数,以便根据各个存储单元的被访问次数确定各个存储单元是否满足迁移条件。
步骤A2、若检测到该第一存储介质的第一存储单元满足迁移条件,处理器生成数据迁移请求,向管理器发送数据迁移请求。
例如,若检测到第一存储单元满足迁移条件,且统计单元提供的第一存储单元的被访问次数与第一存储单元的虚拟地址对应,处理器从第一映射关系中查询该虚拟地址对应的物理地址,根据该物理地址,生成该数据迁移请求。或者,若检测到第一存储单元满足迁移条件,且统计单元提供的第一存储单元的被访问次数与第一存储单元的物理地址对应,则处理器根据该物理地址,生成该数据迁移请求,此时该数据迁移请求包括该物理地址。
相应地,若第一存储单元中有多个存储单元满足迁移条件,处理器针对满足迁移条件的每个存储单元,都生成一个数据迁移请求,向管理器发送生成的数据迁移请求。
步骤A3、管理器接收该数据迁移请求。
方式B、管理器生成对第一存储单元的数据迁移请求。
下面结合图6所示的本申请提供的一种基于方式B获取数据迁移请求的流程图,对方式B做如下介绍:
步骤B1、管理器对第一存储介质进行数据迁移检测。
其中,管理器通过下述方式B11-B13中的任一方式,对第一存储介质进行数据迁移检测。
方式B11、管理器获取统计单元统计的第一存储介质中参与统一编址的多个存储单元的被访问次数,根据各个存储单元的被访问次数以及迁移阈值的取值范围,确定满足迁移条件的存储单元。
其中,方式B11与上述的方式A同理。
方式B12、管理器检测发往该混合内存系统的数据访问请求,该数据访问请求指示访问混合内存系统的存储单元,根据检测到的数据访问请求,确定满足迁移条件的存储单元。
其中,该数据访问请求包括第一存储介质中待访问的存储单元的物理地址。
在处理器访问内存混合系统中的任一非候选存储单元时,处理器向管理器发送对该存储单元的数据访问请求,管理器对接收到的数据访问请求进行解析,得到该存储单元的物理地址,以实现对数据访问请求的检测。管理器以第一时长为统计周期,每经过第一时长,统计在该第一时长内解析出的各个物理地址的个数,将统计出的各个物理地址的个数作为对应存储单元的被访问次数。
例如,管理器为该混合内存系统中每个非候选存储单元分别设置一个被访问次数,初始时,每个存储单元的被访问次数均为0,在任一第一时长中,每解析出任一存储单元的物理地址,将该任一存储单元的被访问次数加1,在该第一时长结束时,管理器获取到每个存储单元的被访问次数。另外,在该第一时长结束时,管理器还将每个存储单元的被访问次数清0,以便在下一个第一时长进行计数,使得每个存储单元的被访问次数能够指示最近时间段内各个存储单元的被访问情况,以便管理器根据最近时间段内各个存储单元的被访问情况,确定是否对存储单元进行数据迁移,提高数据迁移的准确性。
在获取到混合内存系统中的各个存储单元的被访问次数的情况下,也就获取到了第一存储介质中各个存储单元的被访问次数,之后管理器根据各个存储单元的被访问次数以及迁移阈值的取值范围,确定各个存储单元是否满足迁移条件,该过程可参考处理器根据各个存储单元的被访问次数以及迁移阈值的取值范围,以确定各个存储单元是否满足迁移条件。
在第一存储单元满足迁移条件包括第一存储介质的访问时延小于第二存储介质的访问时延,第一存储介质中空闲存储单元的个数小于或等于个数阈值,且第一存储单元为被访问次数未达到访问阈值的非空闲存储单元的情况下,管理器通过下述方式B13,对第一存储介质进行数据迁移检测。其中,空闲存储单元为没有存储数据的存储单元,非空闲存储单元是指存储有数据的存储单元,此时,该迁移阈值为第二迁移阈值。
方式B13、管理器检测第一存储介质中的空闲存储单元和非空闲存储单元,根据空闲存储单元和非空闲存储单元,确定满足迁移条件的存储单元。
在第一存储介质的访问时延小于第二存储介质的访问时延的情况下,管理器以第一时长为周期,获取该第一存储介质中各个存储单元在第一时长的被访问次数(获取方式参考上述的方式B11或方式B12)。对于第一存储介质中的任一存储单元,若任一存储单元的被访问次数大于0,则该任一存储单元为非空闲存储单元,否则,该第一存储单元为空闲存储单元。
管理器通过第一存储介质中的各个存储单元的访问次数,确定第一存储介质中的空闲存储单元和非空闲存储单元,而无需从第一存储介质查询的各个存储单元是否存储有数据,确定方式简单且快捷。而在一些实施例中,管理器通过从第一存储介质查询的各个存储单元是否存储有数据,以确定第一存储介质中的空闲存储单元和非空闲存储单元,确定出的空闲存储单元和非空闲存储单元准确。
在确定出存储介质中的非空闲存储单元和空闲存储单元后,若第一存储介质中空闲存储单元的个数小于或等于个数阈值,第一存储单元的被访问次数小于或等于第二迁移阈值,且第一存储单元为非空闲存储单元,则管理器确定第一存储单元满足迁移条件,否则该第一单元不满足迁移条件。
其中,个数阈值大于0且小于或等于第一存储介质中0.1%、0.01%、0.001%的存储单元的个数,或者是,个数阈值为0,在此,本申请实施例对个数阈值的取值范围不做限定。
若第一存储介质中空闲存储单元的个数小于或等于个数阈值,说明第一存储介质中当前可用的存储空间比较小,若第一存储单元的被访问次数小于或等于第二迁移阈值,且第一存储单元为非空闲存储单元,说明该第一存储单元中的数据为冷数据,则判定该第一存储单元满足迁移条件,触发对第一存储单元的数据迁移,之后将第一存储单元中的冷数据迁移至高访问时延的第二存储介质,使得第一存储单元变为空闲存储单元,以便第一存储介质能够有更多的空闲存储单元存储热数据。
步骤B2、若检测到该第一存储单元满足迁移条件,管理器生成该数据迁移请求。
其中,步骤B2与步骤A2同理,在此,本申请实施例对步骤B2不再赘述。
步骤B3、若第一存储单元满足迁移条件,且接收到应用程序对该第一存储单元的数据访问请求,管理器生成该数据迁移请求。
其中,该应用程序为处理器运行的任一应用程序。若处理器在运行应用程序过程中,生成应用程序对混合内存系统中的存储单元的数据访问请求,向管理器发送该数据访问请求,若管理器在该数据访问请求中解析出第一存储单元的物理地址,则说明该数据访问请求为应用程序对该第一存储单元的数据访问请求,若此时第一存储单元满足迁移条件,则管理器生成该迁移请求。
在一种可能的实现方式中,管理器通过为混合内存系统中的存储单元记录触发标识,来指示在接收到应用程序对该存储单元的数据访问请求时是否触发生成数据迁移请求。其中,触发标识包括第一触发标识和第二触发标识,第一触发标识指示在接收到应用程序对该存储单元的数据访问请求时触发生成数据迁移请求,第二触发标识指示在接收到应用程序对该存储单元的数据访问请求时不触发生成数据迁移请求。
其中,为存储单元记录触发标识的方式,例如,管理器中存储有混合内存系统中支持用于程序访问的各个存储单元(即非候选存储单元)与触发标识之间的第二映射关系。在一些实施例中,该第二映射关系由第二单元映射表来记录,例如下述表2所示的第二单元映射表,第二单元映射表包括多个第二单元映射表项,每个第二单元映射表项包括一个存储单元的第一地址、第二地址、介质属性标识以及触发标识,其中,第一地址为该存储单元的物理地址和虚拟地址中的任一个,在本申请实施例中,以第一地址为存储单元的物理地址为例进行介绍。该第二地址为该存储单元在所属存储介质中的地址,换言之,第二地址为存储单元的介质地址。以该存储单元为页面为例,第二地址为该存储单元在所属存储介质中的页面框号。此时,该存储单元与触发标识之间的第二映射关系也即是该存储单元的第一地址与该存储单元在所属存储介质中的第二地址之间具有映射关系,以指示将混合内存系统统一编址时的第一地址分配给该存储单元。
介质属性标识用于指示存储单元所属的存储介质。其中,表2,是以混合内存系统包括DDR和PCM两种存储介质为例示出的,应当理解,混合内存系统还可能包括除DDR和PCM以外的其他存储介质,或者,混合内存系统不包括DDR和PCM,而是包括除DDR和PCM以外的其他存储介质。表2以字符(如“DDR”、“PCM”)为例作为介质属性标识示出,在一些实施例中,管理器为混合内存系统中的每种存储介质分别分配一个介质编号,介质属性标识为存储介质的介质编号。
表2
第一地址 | 第二地址 | 介质属性标识 | 触发标识 |
00000001 | 000001 | “DDR” | 第一触发标识 |
00000002 | 000001 | “PCM” | 第一触发标识 |
00000003 | 000002 | “PCM” | 第二触发标识 |
…… | …… | …… | …… |
基于上述的第二映射关系,对管理器基于映射关系,生成数据迁移的过程做如下介绍:
在一些实施例中,初始时,对于任一存储单元,在该任一存储单元的第二映射关系中的触发标识为第二触发标识,若任一存储单元的满足迁移条件,管理器将第二映射关系中,该任一存储单元对应的第二触发标识更新为第一触发标识。之后,若管理器接收到处理器发送的任一数据访问请求,获取该任一数据访问请求所指示的待访问存储单元的触发标识,若该触发标识为第一触发标识,则管理器生成对该待访问存储单元的数据迁移请求,将该触发标识修改为第二触发标识,否则,不生成对该待访问存储单元的数据迁移请求,也不修改触发标识。
从而在存储单元满足迁移条件,且对该存储单元有访问需求的情况下,管理器才会对该存储单元进行数据迁移,而在存储单元满足迁移条件,但对该存储单元没有访问需求的情况下,无须对该存储单元进行数据迁移,减少了管理器迁移存储单元的次数,降低了管理器的工作负担。
在另一些实施例中,对于第一存储介质中第一存储单元,若第一存储介质的访问时延大于第二存储介质的访问时延,且该第一存储单元满足迁移条件,管理器将第二映射关系中,该第一存储单元对应触发标识记录为第一触发标识;若第一存储介质的访问时延小于第二存储介质的访问时延,管理器将第二映射关系中,该第一存储单元对应触发标识记录为第二触发标识。
其中,若第一存储介质的访问时延大于第二存储介质的访问时延,说明处理器优先访问第二存储介质中的数据,即使第一存储介质中的某一存储单元满足迁移条件,但处理器之后可能不再访问该存储单元,因此,将第二映射关系中,该存储单元对应触发标识记录为第一触发标识,以便之后在应用程序对该存储单元有访问需求的情况下,再生成对该存储单元的数据迁移请求,对该存储单元进行数据迁移,从而避免无效的数据迁移。若第一存储介质的访问时延小于第二存储介质的访问时延,说明处理器优先访问第一存储介质中的数据,将第二映射关系中,该存储单元对应触发标识记录为第二触发标识,之后,在该第一存储介质中的存储单元满足迁移条件的情况下,再对该存储单元进行数据迁移,无须再等到访问数据请求下发时再进行数据迁移,以为该第一存储介质空出更多的存储单元来存储低访问时延的第二存储介质中的热数据。
其中,步骤B2和步骤B3为并列方案,管理器执行步骤B2和步骤B3中任一步骤,或者,若第一存储介质的访问时延小于第二存储介质的访问时延,则管理器按照步骤B2,生成数据访问请求,若第一存储介质的访问时延大于第二存储介质的访问时延,则管理器按照步骤B3,生成数据访问请求。
步骤402、管理器将该第一存储单元中的数据迁移至该第二存储介质中的第二存储单元,该第二存储单元未参与混合内存系统中的统一编址。
其中,第二存储单元为第二存储介质中未参与混合内存系统中的统一编址的任一存储单元。
在一些实施例中,第二存储介质包括多个候选存储单元,管理器将该第一存储单元中的数据迁移至该多个候选存储单元中的任一候选存储单元,此时,该任一候选存储单元也即是第二存储单元。
在另一些实施例中,在将该第一存储单元中的数据迁移至第二存储单元之前,管理器先从第二存储介质的候选存储单元中,确定第二存储单元。示例性地,管理器中存储有第二存储介质的候选存储单元队列,该候选存储单元队列包括多个候选存储单元的第二地址,管理器将该候选存储单元队列中处于队头的第二地址所指示的存储单元作为第二存储单元,向第二存储单元迁移数据。
下面结合图7所示的本申请提供的一种数据迁移过程的流程图,对步骤402的数据迁移过程作如下介绍:
其中,数据迁移过程包括迁移读过程和迁移写过程,迁移读过程是从第一存储单元中读取数据,迁移读过程包括下述步骤4021至4024,迁移写过程是向第二存储单元写入读取到数据,迁移写过程包括下述步骤4025至4028。
步骤4021、管理器根据第一存储单元的第二地址,生成迁移读请求,该迁移读请求指示从第一存储单元中读取数据。
其中,该迁移读请求包括该第一存储单元的第二地址。
管理器中存储有混合内存系统的未参与统一编址的各个存储单元的第一地址与第二地址之间的第三映射关系,以指示为第二地址所指示的存储单元分配第一地址。
在一些实施例中,该第三映射关系由第三单元映射表来记录,例如下述表3所示的第三单元映射表,第三单元映射表包括多个第三单元映射表项,每个第三单元映射表项包括参与统一编址的一个存储单元的第一地址、第二地址以及介质属性标识。
表3
第一地址 | 第二地址 | 介质属性标识 |
00000001 | 000001 | “DDR” |
00000002 | 000001 | “PCM” |
00000003 | 000002 | “PCM” |
…… | …… | …… |
以第一存储单元为例,管理器从迁移请求中获取第一存储单元的物理地址,以物理地址为第一存储单元的第一地址,从第一存储单元的第三映射关系中,获取该第一存储单元的第一地址对应的第二地址,根据该第二地址,生成迁移读请求。
另外,管理器存储第二单元映射表和第三单元映射表中的一个即可,例如,若管理器中存储有第二单元映射表,则无须存储第三映射单元映射表,而是将第二单元映射表中的第一地址、第二地址以及介质属性标识这三列内容作为第三单元映射表。若管理器中没有存储第二单元映射表,则管理器存储第三映射单元映射表。应当理解,第二单元映射表或第三单元映射表是管理器为该混合内存系统新增的映射表,用于记录对混合内存系统一编址得到的各个第一地址(如物理地址)被分配给哪些存储单元,以便后续在某一存储单元迁移完成后,管理器基于新增的映射表,对该存储单元所分配到的第一地址进行重分配。对于上述的第一单元映射表至第三单元映射表中的任一单元映射表,该单元映射表中的多列表格可能存储在同一位置,进而形成一张表格,以指示映射关系。该多列表格也可能不存储在同一位置,每列表格为单独表格,管理器在查询单元映射表时,以多个表格中的处于同一行的表项来指示映射关系进行查询。
步骤4022、管理器向第一存储介质的第一控制器发送该迁移读请求。
其中,第一控制器为第一存储介质的控制器。
步骤4023、第一控制器根据接收到的迁移读请求,从第一存储介质的第一存储单元读取数据。
例如,第一控制器从接收到的迁移读请求中,获取第一存储单元的第二地址,根据该第二地址,从该第一存储单元读取数据。
步骤4024、第一控制器向管理器发送读取到的第一数据。
其中,第一数据为从第一存储单元读取到的数据。当管理器接收到第一数据后,执行下述步骤4025。
步骤4025、管理器根据第二存储单元的第二地址以及接收到的第一数据,生成迁移写请求,该迁移写请求指示向第二存储单元写入第一数据。
其中,该迁移写请求包括第二存储单元的第二地址以及该第一数据。
例如,管理器先从第二存储介质的候选存储单元队列中获取第二存储单元的第二地址,然后再根据第二存储单元的第二地址以及接收到的第一数据,生成迁移写请求。
步骤4026、管理器向第二存储介质的第二控制器发送迁移写请求。
其中,第二控制器为第二存储介质的控制器。
步骤4027、第二控制器根据接收到的迁移写请求,向第二存储介质的第二存储单元写入第一数据。
例如,第二控制器从接收到的迁移写请求中,获取第二存储单元的第二地址以及第一数据,根据该第二地址,向该第二存储单元写入第一数据。
步骤4028、写入完成后,第二控制器向管理器发送写入完成响应,该写入完成响应指示已经将第一数据写入第二存储单元。
在管理器接收到该写入完成响应的情况下,迁移完成。若管理器是从候选存储单元中确定的第二存储单元,则迁移完成后,该管理器移除候选存储单元队列中的该第二存储单元。例如,管理器将该候选存储单元队列中的第一个第二地址从该候选存储单元队列弹出,将该候选存储单元队列中剩余的各个第二地址移动到前一个第二地址的位置,使得该候选存储单元队列中原来的第二个第二地址作为第一个第二地址,依此类推。
在候选存储单元队列中的至少一个候选存储单元移除后,候选存储单元队列中的候选存储单元出现未满的情况。若候选存储单元队列中的候选存储单元未满,管理器将该第二存储介质中的空闲存储单元加入该候选存储单元队列,以动态维护第二存储介质中用于存储迁移数据且不支持应用程序写入数据的存储空间,从而不影响之后向第二存储介质继续迁移数据。
例如,若第二存储介质的第三存储单元中的数据已经迁移完成,查询候选存储单元队列中的候选存储单元是否未满,若候选存储单元队列中的候选存储单元未满,管理器将该第三存储单元的第二地址添加在该候选存储单元队列中的最后一个第二地址之后。其中,第三存储单元为第二存储介质中非候选存储单元,且第三存储单元中的数据已经迁移完成是指第三存储单元中的数据已经迁移到另一存储单元。
或者,若候选存储单元队列中的候选存储单元未满,管理器从第二存储介质中参与统一编址的多个存储单元,查询空闲存储单元,在该候选存储单元队列中的最后一个第二地址之后,依次添加查询到的空闲存储单元的第二地址,直至候选存储单元队列中的存储单元已满为止。应当理解,当将该非参与统一编址的任一存储单元的第二地址添加在该候选存储单元队列时,该存储单元的角色从参与非候选存储单元变成候选存储单元。
步骤403、管理器将该第一存储单元在该统一编址时所关联的第一地址分配给该第二存储单元。
其中,该第一地址与该第一存储单元在第一存储介质中的第二地址之间具有映射关系,以指示将该第一地址分配给该第一存储单元,该映射关系例如第一存储单元的第三映射关系
在一些实施例中,管理器将第一存储单元的第三映射关系中,第一存储单元的第二地址修改为该第二存储单元的第二地址,以将该第一存储单元在该统一编址时所关联的第一地址分配给该第二存储单元。
例如,管理器以第一存储单元的物理地址为该第一存储单元所关联的第一地址,在第三单元映射表中查询第一存储单元的第一地址,对于查询到的第一地址所在的第三单元映射表项,将该第三单元映射页面表项中的第二地址修改为该第二存储单元的第二地址,第一存储介质的介质属性标识修改为第二存储介质的介质属性标识。
仍以表3所示的第三单元映射表为例,若第一存储单元的第一地址与第二地址之间的第二映关系由表3中的第一个单元映射表项来记录,第二存储介质为PCM,第二存储单元的第二地址为000010,管理器将该第一个单元映射表项中的第二地址“000001”更新为“000010”,将介质属性标识“DDR”更新为“PCM”,得到下述的表4。此时,对于管理器而言,第一地址1为第二存储单元在混合内存系统中的地址。
表4
第一地址 | 第二地址 | 介质属性标识 |
00000001 | 000010 | “PCM” |
00000002 | 000001 | “PCM” |
00000003 | 000002 | “PCM” |
…… | …… | …… |
对于处理器而言,混合内存系统提供的存储空间是一定的,该存储空间包括第三存储单元映射表中的各个第一地址所指示的存储单元,即使管理器将该第一存储单元所关联的第一地址分配给第二存储单元,对于处理器而言,该第一地址没有发生变化,因此,本申请实施例通过第三映射关系实现了混合内存系统中第一地址和第二地址放置的解耦,在不改变第一地址的情况下,实现了数据在不同存储介质中的迁移,不影响处理器的执行流程。
另外,在第一地址为存储单元的物理地址的情况下,应用程序感知到是混合内存系统中分配给该应用程序的虚拟地址,在应用程序访问混合内存系统中的存储单元时,处理器运行应用程序,生成应用程序的数据访问请求,该数据访问请求携带混合内存系统中的待访问存储单元的虚拟地址。之后,处理器根据混合内存系统中的第一映射关系,将数据访问请求中的虚拟地址转换为物理地址,然后,向管理器发送携带物理地址的数据访问请求。管理器以数据访问请求中的物理地址为第一地址,从第三映射关系中查询该第一地址对应的第二地址,访问查询到的第二地址所指示的存储单元。而数据迁移的过程中,第三映射关系中的第一地址没有发生变化,因此,在数据迁移的过程中,不会打断处理器上应用程序的运行流程,使得应用程序对数据迁移无感知。
图4所示的数据迁移方法,通过在获取到对第一存储介质的存储单元的数据迁移请求的情况下,将该存储单元中的数据迁移至第二存储介质中未参与统一编址的存储单元,由于未参与统一编址的存储单元不支持应用程序访问,在向未参与统一编址的存储单元迁移数据的过程中,也就不存在写数据一致性维护问题,因此,未参与统一编址的存储单元无须加锁,简化了迁移流程,相应地,降低了数据迁移的时长,提高了数据迁移效率。在另一些实施例中图4所示的数据迁移方法包括步骤401至步骤402,当步骤402执行完毕后,数据迁移完成,此时,还是向未参与统一编址的存储单元迁移数据,仍然能够迁移流程,相应地,降低了数据迁移的时长,提高了数据迁移效率。
在一些实施例中,当混合内存系统中的第一存储单元正在数据迁移的过程中,或者数据迁移完成后,应用程序可能会访问第一存储单元,管理器通过第一存储单元的迁移状态,辅助应用程序完成访问第一存储单元。应用程序访问第一存储单元可能是向第一存储单元写入数据,也可能是读取第一存储单元中的数据,下面分别以图8和图12所示的实施例,对管理器辅助应用程序向第一存储单元写入数据的过程以及辅助应用程序读取第一存储单元数据的过程作如下介绍。
图8是本申请提供的一种数据迁移与数据写入并行的情况下存储单元的访问流程图,该方法应用于混合内存系统中,该混合内存系统包括第一存储介质和第二存储介质,该方法由混合内存系统的管理器来执行,该方法包括如下步骤。
步骤801、管理器获取数据迁移请求,该数据迁移请求指示将第一存储介质的第一存储单元中的数据迁移至第二存储介质。
其中,本步骤801与上述步骤401同理,在此,本申请实施例对本步骤801不再赘述。
步骤802、管理器根据该数据迁移请求,确定第二存储介质中的第二存储单元,该第二存储单元未参与所述混合内存系统中的统一编址。
例如,当接收到该数据迁移请求后,从第二存储介质的候选单元中确定第二存储单元,该过程在步骤402中有相关介绍。
步骤803、管理器建立第一存储单元、第二存储单元以及第一存储单元的迁移状态之间的第四映射关系,该迁移状态指示该第一存储单元的迁移进度。
其中,迁移状态包括迁移中以及迁移完成,其中,迁移中指示正在将第一存储单元中的数据迁移至第二存储单元,迁移完成指示已经将第一存储单元中的数据迁移至第二存储单元,另外,为了便于描述,在对某个存储单元进行数据迁移时,将该存储单元称为源存储单元(如第一存储单元),将用于存储将该存储单元的迁移数据的存储单元称为目的存储单元(如第二存储单元)。
在一种可能的实现方式中,管理器中存储有迁移表,管理器在迁移状态中建立第一存储单元、第二存储单元以及第一存储单元的迁移状态之间的第四映射关系。
以下述表5所示的迁移表为例,该迁移表包括多个迁移表项,每个迁移表项包括待迁移数据的迁移状态、源地址、源介质属性标识、目的地址以及目的迁移属性标识。在表5中,以迁移状态为1表示迁移中,以迁移状态为0表示迁移完成,在另一些实施例中,迁移状态为0表示迁移中,以迁移状态为1表示迁移完成。源地址为待迁移数据的源存储单元的第二地址,源介质属性标识为该源存储单元所属存储介质的介质属性标识,目的地址为待迁移数据的目的存储单元的第二地址,目的介质属性标识为该目的存储单元所属存储介质的介质属性标识。
表5
迁移状态 | 源地址 | 源介质属性标识 | 目的地址 | 目的介质属性标识 | 缓存行状态 |
1 | 000001 | “DDR” | 000010 | “PCM” | 001001001 |
0 | xxx | xxx | xxx | xxx | xxx |
0 | xxx | xxx | xxx | xxx | xxx |
…… | …… | …… | …… | …… | …… |
管理器以迁移中为迁移状态,以第一存储单元的第二地址为源地址,以第一存储介质的介质属性标识为源介质属性标识,以第二存储单元的第二地址为目的地址,以第二存储介质的介质属性标识为目的介质属性标识,在迁移表中添加目标迁移表项,以实现建立第一存储单元、第二存储单元以及第一存储单元的迁移状态之间的第四映射关系。
以第一存储单元为DDR中第二地址“000001”所指示的存储单元,第二存储单元为PCM中第二地址“000010”所指示的存储单元为例,管理器在表5所示的迁移表的第一行添加目标迁移表项。
另外,混合内存系统中的各个存储单元都包括多个缓存行,在一些实施例中,如表5所示,迁移表中的迁移表项还包括缓存行状态,缓存行状态包括多个状态位,多个状态位与目的存储单元的多个缓存行一一对应,状态位用于存储缓存行的写入状态,以指示缓存行写入数据的进度。
其中,写入状态包括写入完成和写入未完成,写入完成指示缓存行已经写入数据,写入未完成指示该缓存行还未完成写入数据。在表5中,以写入状态为1表示写入完成,以写入状态为0表示写入未完成,在另一些实施例中,以写入状态为0表示写入完成,以写入状态为1表示写入未完成。
在迁移表项包括缓存状态的情况下,在该迁移表中添加第一存储单元对应的迁移表项时,管理器将该迁移表项中缓存行状态都置位为写入未完成,以指示第二存储单元中的各个缓存行还未完成写入数据。通过缓存行状态记录目的存储单元的各个缓存行的写入状态,以便管理器确认数据迁移的进度。
缓存行状态为迁移表中的可选项,在一些实施例中,迁移表不包括缓存行状态,例如,在管理器对目的存储单元的缓存行的写入状态没有需求的情况下,迁移表不包括缓存行状态。
步骤804、管理器将该第一存储单元中的数据迁移至第二存储单元,将第一存储单元在统一编址时所关联的第一地址分配给第二存储单元。
其中,本步骤804与上述步骤402和步骤403同理,在此本步骤804不再赘述。
另外,在数据迁移的迁移读过程中,第一控制器按照第一存储单元中缓存行的排序,依次读取第一存储单元的各个缓存行中的数据,再向管理器依次发送各个缓存行中的数据。且在处理访问存储单元的请求(如应用程序的数据访问请求、管理器的迁移读请求或迁移写请求)时,管理器按照先到先处理的原则,优先处理最先获取到的请求,再处理后获取的请求,因此,在迁移表包括缓存状态的情况下,管理器每接收到第一存储单元的一个缓存行中的数据,根据该缓存行在第一存储单元中的位置,从迁移表中查询第二存储单元中该缓存行对应的目标缓存行的写入状态,若该写入状态为写入未完成,管理器将该写入状态更新为写入状态,其中,目标缓存行在第二存储单元中的位置和该缓存行在该第一存储单元中的位置相同,若该写入状态为写入完成,则丢弃当前收到的数据,放弃后续改缓存行的迁移写入操作。
在数据迁移的迁移写过程中,在向第二存储单元的第二控制器发送迁移写请求中的第一数据时,管理器按照第一存储单元中缓存行的排序,依次向第二控制器发送第一存储单元的各个缓存行中的数据。
在第一存储单元迁移完成后,管理器将第一存储单元的迁移状态更新为迁移完成,以指示已经该第一存储单元中的数据迁移至第二存储单元,之后,管理器将第一存储单元在统一编址时所关联的第一地址分配给第二存储单元。另外,在一些实施例中,当将第一存储单元的迁移状态更新为迁移完成时,还指示该迁移状态所在的迁移表项无效,相应地,迁移状态为迁移中的迁移表项为有效表项,之后,可在迁移表中的有效表项查询迁移状态,以减少查询迁移表时待查询迁移表项的个数。
步骤805、管理器接收应用程序的第一数据写请求,该第一数据写请求指示向该第一存储单元写入数据。
其中,该第一数据写请求为应用程序的一种数据访问请求,该第一数据写请求包括第一存储单元的物理地址以及向该物理地址待写入的第二数据。
应当理解,应用程序先将第一数据写请求发送给处理器,此时第一数据写请求包括第一存储单元的虚拟地址以及第二数据,处理器通过查询第一单元映射表,第一数据写请求中的第一存储单元的虚拟地址转换为物理地址,之后,处理器在向管理器发送地址转换后的第一数据写请求,相应地,管理器接收到第一数据写请求中包括的是第一存储单元的虚拟地址而不是物理地址。
步骤806、管理器根据该第一数据写请求,查询第一存储单元的迁移状态,该迁移状态指示该第一存储单元的迁移进度。
在一种可能的实现方式中,管理器根据该第一数据写请求中第一存储单元的物理地址,在第三映射关系中,查询该第一存储单元的第二地址。例如,管理器以第一存储单元的物理地址为第一存储单元的第一地址,在第三单元映射表中记录的第一地址中,查询第一存储单元的第一地址,在查询到的第一地址所在第三映射表项中,获取第一存储单元的第二地址以及第一存储介质的介质属性标识。
之后,管理器根据该第一存储单元的第二地址,在迁移表中查询该第一存储单元的迁移状态。例如,管理器从迁移表中记录的源地址以及源介质属性标识,查询第一存储单元的第二地址以及第一存储介质的介质属性标识,若查询到第一存储单元的第二地址以及第一存储介质的介质属性标识位于迁移表中的同一迁移表项(即目标迁移表项),则管理器从目标迁移表项,获取第一存储单元的迁移状态。再例如,以迁移表中迁移状态为迁移完成的迁移表项为无效迁移表项,以迁移表中迁移状态为迁移中的迁移表项为有效迁移表项,从迁移表中的各个有效迁移表项的源地址以及源介质属性标识,查询第一存储单元的第二地址以及第一存储介质的介质属性标识,若查询到第一存储单元的第二地址以及第一存储介质的介质属性标识位于迁移表中的同一有效迁移表项,则此时第一存储单元的迁移状态为迁移中。
步骤807、若该迁移状态为迁移中,管理器将该第一数据写请求转换为第二数据写请求,向第二存储介质发送第二数据写请求。
其中,该第二数据写请求指示向该第二存储单元写入第二数据,相应地,第二数据写请求包括第二存储单元的第二地址以及第二数据。
若该迁移状态为迁移中,说明在管理器正在将第一存储单元中的第一数据迁移至第二存储单元,在第一数据写请求之前,管理器已经进行对该第一存储单元进行数据迁移,第一数据写请求中的第二数据为第一存储单元的最新数据,而第二存储单元为第一存储单元的目的存储单元,因此,管理器将第一数据写请求中的第一存储单元的物理地址修改为第二存储单元的第二地址,得到第二数据写请求,向第二存储介质发送第二数据写请求。
例如,管理器向第二存储介质的第二控制器发送第二数据写请求,由第二控制器根据第二数据写请求,将第二数据写请求中的第二数据写入第二存储单元,另外,若此时第二存储单元中的已经迁移了部分数据,在向第二存储单元写入第二数据时,若迁移的这部分数据的存储位置和第二数据的存储位置相同,则第二数据覆盖掉已经迁移的数据,从而确保第二存储单元中的数据为第一存储单元的最新数据。
在一些实施例中,在迁移表中存储有缓存行状态的情况下,若该迁移状态为迁移中,该管理器还根据第一数据写请求中第二数据在第一存储单元中的偏移地址,确定第一存储单元中待写入该第二数据的缓存行(称为第三缓存行),获取第二存储单元中第三缓存行对应的缓存行(称为第四缓存行)的写入状态,若该第四缓存行的写入状态为写入完成,向第二存储介质发送第二数据写请求,以覆盖之前迁移到第四缓存行中的数据。若该第四缓存行的写入状态为写入未完成,则管理器将该第四缓存行的写入状态更新为写入完成,向第二存储介质发送第二数据写请求,之后,若迁移读请求读取到该第三缓存行的数据,且第四缓存行的写入状态为写入完成,则管理器丢弃从该第三缓存行读取到的数据,在迁移写的过程中,不再向第四缓存行写入从该第三缓存行读取到的数据,以避免该第三缓存行的数据覆盖掉第四缓存行中的第二数据。
其中,第三缓存行在第一存储介质中的位置和第四缓存行在第二存储介质中的位置相同,管理器根据第三缓存行在第一存储介质中的位置,在迁移表中目标迁移表项的缓存状态,获取第四缓存行的写入状态。其中,该第三缓存行在第一存储介质中的位置与第四缓存行的写入状态在缓存状态中的位置相同。
若第一存储单元的该迁移状态为迁移完成,且还未将第一存储单元所关联的第一地址分配给第二存储单元,则管理器还先将第一存储单元所关联的第一地址分配给第二存储单元,再向第二存储介质发送第二数据写请求。
步骤808、若没有查询到该迁移状态,管理器向第一存储介质发送第一数据写请求。
例如,若管理器没有在迁移表的有效迁移表项中没有查询到目标迁移表项,说明没有将第一存储单元中的数据迁移至第二存储单元,而第一数据写请求中的第二数据为第一存储单元待写入的最新数据,因此,管理器将第一数据写请求中第一存储单元的物理地址修改为第一存储单元的第二地址,向第一存储介质发送第一数据写请求。
例如,管理器向第一存储介质的第一控制器发送第一数据写请求,由第一控制器根据第一数据写请求,将第一数据写请求中的第二数据写入第一存储单元,以盖掉第一存储单元中的原来的第一数据,从而确保第一存储单元中的第二数据为最新数据。
图8所示的数据迁移方法,能够达到图4所示的数据迁移方法所能达到的有益效果。并且,在数据迁移过程中,应用程序的数据访问请求(如数据写请求)通过查询第三单元映射表中的映射关系和迁移表中的迁移状态路由到第一存储介质或者第二存储介质,迁移完成后再将第二存储单元的地址分配给应用程序,以确保应用程序在待访问地址写入最新数据。
图8是从整体角度说明,管理器通过维护第一存储单元的迁移状态和第二存储单元的缓存行状态,处理对第一存储单元的第一数据写请求的过程,但是上述步骤805至步骤808中的各个步骤都可能在步骤801至804的前后,或者执行过程中发生,则第一数据写请求可能在迁移读请求的前后达到管理器,也可能在迁移写请求的前后达到管理器。为了便于理解,接下来从第一数据写请求到达管理器的不同时机出发,结合图9至图11,分别对数据迁移过程做如下介绍:
图9是本申请提供的一种第一数据写请求在迁移读请求之前达到管理器时的数据迁移过程示意图,如图9所示,处理器向管理器下发对第一存储单元的数据迁移请求或者管理器生成该数据迁移请求,之后,在根据数据迁移请求生成迁移读请求之前或者生成迁移读请求时,管理器在迁移表中增加第一存储单元的目标迁移表项,在管理器生成迁移读请求时,还将目标迁移表项中的第一存储单元迁移状态设置为迁移中。
如图9所示,处理器向管理器下发的第一数据写请求在迁移读请求生成之前达到管理器,若迁移表中不存在目标迁移表项,则管理器根据第一数据写请求,在迁移表中查询不到目标迁移表项,此时第一数据写请求未命中迁移表,说明此时第一存储单元中的数据还未迁移,则管理器将第一数据写请求下发给第一存储单元所属的第一存储介质,以将最新数据写入第一存储单元。之后再生成对第一存储单元的迁移读请求,通过迁移读请求从第一存储单元读取最新数据,然后,通过迁移写请求将最新数据写入到第二存储单元。
图10是本申请提供的一种第一数据写请求在迁移读请求之后迁移写请求之前达到管理器时的数据迁移过程示意图,在根据数据迁移请求生成迁移读请求时,管理器在迁移表中的目标迁移表项将第一存储单元的迁移状态设置为迁移中。
如图10所示,管理器在生成迁移读请求之后,接收到处理器向管理器下发的第一数据写请求,管理器先向第一存储介质发送该迁移读请求,以通过迁移读请求读取第一存储单元中的数据,再处理第一数据写请求。
在处理第一数据写请求时,由于此时迁移表中存在目标迁移表项,根据第一数据写请求,在迁移表中查询到目标迁移表项,此时第一数据写请求命中迁移表,说明第一存储单元正在迁移中,第一存储单元中的数据最终要存储在第二存储单元,则管理器将第一数据写请求中第一存储单元的物理地址修改为第二存储单元的第二地址,得到第二数据请求写请求,通过第二数据写请求向第二存储单元写入最新数据。另外,管理器还根据第二数据写请求,将迁移表中目标迁移选项内第二存储单元的缓存行状态修改为写入完成。
之后,管理器基于从第一存储单元读取的数据,生成迁移写请求,根据迁移写请求查询到迁移表中目标迁移选项内第二存储单元的缓存行状态为写入完成,则管理器取消向第二存储介质发送迁移写请求,以避免第一存储单元中的旧数据覆盖掉第二数据请求写入的最新数据。
图11是本申请提供的一种第一数据写请求在迁移写请求之后达到管理器时的数据迁移过程示意图,在根据数据迁移请求生成迁移读请求时,管理器在迁移表中的目标迁移表项将第一存储单元的迁移状态设置为迁移中。
如图11所示,管理器根据迁移请求,通过迁移请求读取第一存储单元中的数据,然后,基于从第一存储单元读取的数据,生成迁移写请求,通过迁移写请求将读取到的数据写入第二存储单元。之后,管理器接收到处理器对第一存储单元的第一数据写请求,此时正在向第二存储单元写入第一存储单元的旧数据或者已经向第二存储单元写入完成,则管理器将第一数据写请求中第一存储单元的物理地址修改为第二存储单元的第二地址,得到第二数据请求写请求,通过第二数据写请求向第二存储单元写入最新数据,以覆盖掉第一存储单元的旧数据。
图12是本申请提供的一种数据迁移与数据读取并行的情况下存储单元的访问流程图,该方法应用于混合内存系统中,该混合内存系统包括第一存储介质和第二存储介质,该方法由混合内存系统的管理器来执行,该方法包括如下步骤。
步骤1201、管理器获取数据迁移请求,该数据迁移请求指示将第一存储介质的第一存储单元中的数据迁移至第二存储介质。
其中,本步骤1201与上述步骤401同理,在此,本申请实施例对本步骤1201不再赘述。
步骤1202、管理器根据该数据迁移请求,确定第二存储介质中的第二存储单元,该第二存储单元未参与所述混合内存系统中的统一编址。
例如,当接收到该数据迁移请求后,从第二存储介质的候选单元中确定第二存储单元,该过程在步骤402中有相关介绍。
步骤1203、管理器建立第一存储单元、第二存储单元以及第一存储单元的迁移状态之间的第四映射关系,该迁移状态指示该第一存储单元的迁移进度。
其中,本步骤1204与步骤803同理,在此,本申请实施例对本步骤1203不再赘述。
步骤1204、管理器将该第一存储单元中的数据迁移至第二存储单元,将第一存储单元在统一编址时所关联的第一地址分配给第二存储单元。
其中,本步骤1204与步骤804同理,在此,本申请实施例对本步骤1204不再赘述。
步骤1205、管理器接收应用程序的第一数据读请求,该第一数据读请求指示从该第一存储单元的第一缓存行读取数据。
其中,该第一数据读请求为应用程序的一种数据访问请求,该第一数据写请求包括第一存储单元的物理地址以及第一缓存行在该第一存储单元中的偏移地址。该第一缓存行为第一存储单元中的任一缓存行。应当理解,应用程序先将第一数据读请求发送给处理器,此时第一数据读请求包括第一存储单元的虚拟地址以及该偏移地址,处理器通过查询第一单元映射表,第一数据读请求中的第一存储单元的虚拟地址转换为物理地址,之后,处理器在向管理器发送地址转换后的第一数据读请求,相应地,管理器接收到第一数据读请求中包括的是第一存储单元的虚拟地址而不是物理地址。
步骤1206、管理器根据该第一数据读请求,获取该第二存储单元中第一缓存行对应的第二缓存行的写入状态,该写入状态指示该第二缓存行写入数据的进度。
其中,第一缓存行在第一存储介质中的位置与第二缓存行在第二存储介质中的位置相同。
在一种可能的实现方式中,管理器根据该第一数据读请求,查询第一存储单元的迁移状态,该过程可参考管理器根据该第一数据写请求,查询第一存储单元的迁移状态,
之后,若查询到该第一存储单元的迁移状态为迁移中,管理器根据第一缓存行的偏移地址,从迁移表中第二存储单元的缓存状态中,查询该第二缓存行的写入状态。例如,管理器根据第一缓存行的偏移地址,从迁移表中第二存储单元的缓存状态中,查询该第二缓存行的写入状态的过程,例如,管理器根据第一缓存行的偏移地址所指示的位置,将该第二存储单元的缓存状态中处于该位置的写入状态获取为该第二缓存行的写入状态。
步骤1207、若该第二缓存行的写入状态为写入完成,管理器将该第一数据读请求转换为第二数据读请求,向第二存储介质发送第二数据读请求,该写入完成指示该第二缓存行已经写入数据,该第二数据读请求指示从该第二缓存行读取数据。
其中,第二数据写请求包括第二存储单元的第二地址以及该第二缓存行在该第二存储单元的偏移地址。
若第一存储单元的迁移状态为迁移中,且该第二缓存行的写入状态为写入完成,说明此时管理器正在将第一存储单元中的数据迁移至第二存储单元,且第二缓存行已经迁移入第一缓存行中的数据,为了使得应用程序读取到第一缓存行中的数据,则管理器将第一数据读请求中第一存储单元的物理地址更新为第二存储单元的第二地址,得到第二数据读取请求,而第二数据读取请求中该第一缓存行在该第一存储单元的偏移地址相当于该第二缓存行在该第二存储单元的偏移地址。
例如,管理器向第二存储介质的第二控制器发送第二数据读请求,由第二控制器根据第二数据写请求中第二存储单元的第二地址以及该偏移地址,读取该第二存储单元中第二缓存行中的数据(称为第三数据),向管理器返回第三数据,之后,管理器再将第三数据作为第一数据读请求的读完成响应,向应用程序发送读完成响应。
步骤1208、若第二缓存行的写入状态为写入未完成,管理器向第一存储介质发送第一数据读请求。
若第二缓存行的写入状态为写入未完成,说明此时第一缓存行中的数据还未迁移至第二缓存行,则管理器将第一存储数据读取请求中第一存储单元的物理地址修改为第一存储单元的第二地址,向第一存储介质发送第一数据读请求。
或者,若在迁移表的有效迁移表项中没有查询到目标迁移表项,说明没有将第一存储单元中的数据迁移至其他存储单元,此时,第一存储单元中存储的数据为最新数据,则管理器无须查询第二缓存行的写入状态且无须执行上述步骤1207,管理器将第一数据读取请求中第一存储单元的物理地址修改为第一存储单元的第二地址,向第一存储介质发送修改后的第一数据读请求。
其中,管理器向第一存储介质发送第一数据读请求的过程与向第二存储介质发送第二数据读请求的过程同理,在此,不再赘述。
图12所述的数据迁移方法,能够达到图4所示的数据迁移方法所能达到的有益效果,并且,在数据迁移过程中,应用程序的访问请求(如数据读请求)通过查询第三单元映射表中的映射关系和迁移表中的迁移状态路由到第一存储介质或者第二存储介质,迁移完成后再将第二存储单元的地址分配给应用程序,以确保应用程序在待访问地址读取到最新数据。
图12是从整体角度说明,管理器通过维护第一存储单元的迁移状态和第二存储单元的缓存行状态,处理对第一存储单元的第一数据读请求的过程,但是上述步骤1205至步骤1208中的各个步骤都可能在步骤1201至步骤1204的前后或者执行过程中发生,则第一数据读请求可能在数据迁移过程中的在迁移读请求的前后达到管理器,也可能在迁移写请求的前后达到管理器,为了便于理解,接下来从第一数据读请求到达管理器的时机出发,结合图13对数据迁移过程做如下介绍:
图13是本申请提供的一种第一数据读请求在迁移写请求之后达到管理器时的数据迁移过程示意图,如图13所示,管理器根据对第一存储单元的数据迁移请求,生成迁移读请求,向第一存储介质发送迁移读请求,以从第一存储单元读取数据,之后,根据读取到的数据,生成迁移写请求,向第二存储介质发送迁移写请求,以向第二存储单元写入读取到的数据。另外,在向第二存储介质发送迁移写请求时,管理器将迁移表中的目标迁移表项无效。另外,在向第二存储介质发送迁移写请求时,管理器将第三映射单元表中第一存储单元关联的第一地址所在的第三映射单元表项内,第一存储单元的第二地址更新为第二存储单元的第二地址,以该第一地址分配给第二存储单元。
如图13所示,如果管理器在向第二存储介质发送迁移写请求后,接收到处理器对第一存储单元的第一数据读请求,第一存储单元中的数据提前写入到第二存储单元,此时第一地址所在的第三映射单元表项内的第二地址已经更新为第二存储单元的第二地址,则管理器将第一数据读请求中的第一存储单元的物理地址修改为第二存储单元的第二地址,得到第二数据读请求,向第二存储介质发送第二数据读请求,以从第二存储单元读取第一地址中的最新数据。
在另一些实施例中,如果管理器在向第二存储介质发送迁移写请求之前,接收到处理器对第一存储单元的第一数据读请求,此时第一存储单元中的数据还未迁移,第一地址所在的第三映射单元表项内的第二地址仍然为第一存储单元的第二地址,则管理器将第一数据读请求中的第一存储单元的物理地址修改为第一存储单元的第二地址,向第一存储介质发送第一数据读请求,以从第一存储单元读取第一地址中的最新数据。
图9至图13都是以数据迁移过程与处理器访问一次存储单元过程并行的情况下介绍,而在图14所示的实施例中,数据迁移过程还可能与处理器多次访问存储单元的过程并行。其中,图14是本申请提供的一种处理器两次访问第一存储单元时的数据迁移过程示意图。
如图14所示,在对第一存储单元进行数据迁移的过程中,管理器先通过向第一存储介质发送迁移读请求,以从第一存储单元读取数据。之后,管理器接收到处理器对第一存储单元的第一数据写请求,根据该第一数据写请求,向第二控制器发送第二数据写请求,以向第二存储单元写入第一地址的最新数据,第二存储单元写完成后,第二控制器向管理器发送写入完成响应,由管理器将写入完成响应转发给处理器。另外,管理器在向第二存储单元写入数据时。
另外,管理器在向第二内存控制发送第二数据写请求时,还将第二存储单元的缓存行状态修改为写入完成。之后,若接收到对第一存储单元的第一数据读请求,管理器将第一数据读请求转换为第二数据读请求,向第二控制器发送第二数据读请求,以从第二存储单元读取最新数据。
另外,将第二存储单元的缓存行状态修改为写入完成之后,对于基于读取到的数据所生成迁移写请求,管理器根据第二存储单元当前的缓存行状态,取消向第二控制器发送迁移写请求。
应当理解,图14是以数据迁移过程中遇到处理器2次访问待迁移存储单元的情况,在另一下实施例中,在数据迁移过程中,还可能遇到处理器访问待迁移存储单元2次以上的情况,对于处理器任一访问待迁移存储单元的过程,若是处理器向迁移存储单元写入数据可参考图8中管理器处理第一数据写请求的过程,若是处理器读取迁移存储单元中的数据可参考图12中管理器处理第一数据读请求的过程。
下面再结合图15所示的本申请提供的一种基于处理器的访问命令进行数据迁移的流程图,对本申请的提出的数据迁移过程做如下介绍:
处理器向管理器下发对混合内存系统中某一存储介质的数据访问请求,管理器根据数据访问请求中待访问存储单元的物理地址,在第二单元映射表中查询该物理地址对应的介质地址以及触发标识,将数据访问请求中的物理地址转换为源介质地址(即待访问存储单元的第二地址)。若查询到的触发标识为第一触发标识,则触发数据迁移,管理器生成对待访问存储单元的数据迁移请求。
另外,管理器在处理该数据访问请求的过程中,根据数据访问请求查询迁移表中源存储单元的迁移状态以及目的存储单元的缓存状态。若数据访问请求为数据写请求,且数据写请求命中迁移表,此时源存储单元的迁移状态为迁移中,则数据写请求和该数据迁移请求发生冲突,将数据写请求中的源介质地址转换为目的介质地址(即目的存储单元的第二地址),之后向目的存储单元的控制器发送后下发,并在命中的迁移表项中将目的存储单元的待访问缓存行的写入状态设置为写入完成。若数据访问请求未命中迁移表,则数据写请求和该数据迁移请求发送未发生冲突,管理器不修改数据写请求中的源介质地址,向待访问存储单元的控制器发送数据写请求。
若数据访问请求不为数据写请求为数据读请求,且数据读请求命中迁移表,此时源存储单元的迁移状态为迁移中,则数据读请求和该数据迁移请求发生冲突。若数据读请求待读取的缓存行的写入状态为写入完成,则管理器将数据读请求中的源介质地址修改为目的介质地址,向目的存储单元的控制器发送该数据读请求。若数据读请求待读取的缓存行的写入状态为写入未完成,则管理器不修改数据读请求中的源介质地址,向待访问存储单元的控制器发送该数据读请求。
图4至图15所示的各个方法实施例均是以管理器处理一个数据迁移为例进行说明,在另一些实施例中,管理器会周期性地对混合内存系统中参与统一编址的各个存储单元进行数据迁移。例如,在每个迁移周期,管理器和/或处理器检测混合内存系统中参与统一编址的各个存储单元是否满足迁移条件,基于满足迁移条件的存储单元,生成迁移列表(list),该迁移列表包括至少一个数据迁移请求,每个数据迁移请求指示对满足迁移条件的一个存储单元进行数据迁移。由管理器依次对迁移列表中的各个数据迁移求进行处理,每个数据迁移请求的处理过程可参考上述的图4至图15所示的实施例,当迁移列表中的各个数据迁移请求都处理完成后,进入下一个迁移周期。
以上介绍了本申请提供的数据迁移方法,接下来,结合附图进一步介绍下本申请提供的装置、芯片和电子设备。应理解,以下介绍的装置、芯片和电子设备可以实现上述任一方法中混合内存系统的管理器或管理器一部分的任意功能。
图16是本申请提供的一种数据迁移装置的结构示意图,如图16所示的装置1600可以为前面各个实施例混合内存系统的管理器或管理器的部分,用于执行管理器所执行的数据迁移方法,装置1600应用于混合内存系统,所述混合内存系统包括第一存储介质和第二存储介质,所述装置1600包括:
获取模块1601,获取数据迁移请求,所述数据迁移请求指示将所述第一存储介质的第一存储单元中的数据迁移至所述第二存储介质;
迁移模块1602,将所述第一存储单元中的数据迁移至所述第二存储介质中的第二存储单元,所述第二存储单元未参与所述混合内存系统中的统一编址;
分配模块1603,将所述第一存储单元在所述统一编址时所关联的第一地址分配给所述第二存储单元。
应理解的是,本申请实施例的装置1600可以通过CPU实现,也可以通过专用集成电路(application-specific integrated circuit,ASIC)实现,也可以通过可编程逻辑器件(programmable logic device,PLD)实现,上述PLD可以是复杂程序逻辑器件(complexprogrammable logical device,CPLD),现场可编程门阵列(field-programmable gatearray,FPGA),通用阵列逻辑(generic array logic,GAL)、数据处理单元(dataprocessing unit,DPU)、片上系统(system on chip,SoC)或其任意组合。装置1600也可以通过软件实现图4至图15所示的方法,在通过软件实现时,装置1600及其各个模块也可以为软件模块。
在一种可能的实现方式中,所述第一地址与所述第一存储单元在所述第一存储介质中的第二地址之间具有映射关系,以指示将所述第一地址分配给所述第一存储单元,所述分配模块1603用于:
将所述映射关系中的所述第二地址修改为所述第二存储单元在所述第二存储介质中的第二地址。
在另一种可能的实现方式中,所述装置模块1600还包括第一处理模块:
接收应用程序的第一数据写请求,所述第一数据写请求指示向所述第一存储单元写入数据;
根据所述第一数据写请求,查询所述第一存储单元的迁移状态,所述迁移状态指示所述第一存储单元的迁移进度;
若所述迁移状态为迁移中,将所述第一数据写请求转换为第二数据写请求,所述迁移中指示正在将所述第一存储单元中的数据迁移至所述第二存储单元,所述第二数据写请求指示向所述第二存储单元写入数据。
在另一种可能的实现方式中,所述装置模块1600还包括第二处理模块:
接收应用程序的第一数据读请求,所述第一数据读请求指示从所述第一存储单元的第一缓存行读取数据;
根据所述第一数据读请求,获取所述第二存储单元中所述第一缓存行对应的第二缓存行的写入状态,所述写入状态指示所述第二缓存行写入数据的进度;
若所述写入状态为写入完成,将所述第一数据读请求转换为第二数据读请求,所述写入完成指示所述第二缓存行已经写入数据,所述第二数据读请求指示从所述第二缓存行读取数据。
其中,上述的第一处理模块和第二处理模块可以为同一模块也可以为不同的模块。
在另一种可能的实现方式中,所述获取模块1601包括:
检测子模块,用于对所述第一存储介质进行数据迁移检测;
生成子单元,用于若检测到所述第一存储单元满足迁移条件,生成所述数据迁移请求。在另一种可能的实现方式中,所述第一存储单元满足迁移条件包括所述第一存储单元的被访问次数达到迁移阈值的取值范围,所述检测子模块用于:检测发往所述混合内存系统的数据访问请求,所述数据访问请求指示访问所述混合内存系统中的存储单元;以及,根据检测到所述数据访问请求,获取所述第一存储单元的被访问次数。
在另一种可能的实现方式中,所述第一存储单元满足迁移条件包括所述第一存储介质的访问时延小于所述第二存储介质的访问时延,所述第一存储介质中空闲存储单元的个数小于或等于个数阈值,且所述第一存储单元为被访问次数未达到访问阈值的非空闲存储单元;所述检测子模块用于:获取所述第一存储介质中各个存储单元的被访问次数;根据所述第一存储介质中各个存储单元的被访问次数,确定所述第一存储介质中的空闲存储单元以及非空闲存储单元。
在另一种可能的实现方式中,所述装置1600还包括:生成模块,用于若检测到所述第一存储单元满足迁移条件,且接收到应用程序对所述第一存储单元的数据访问请求,生成所述数据迁移请求。
在另一种可能的实现方式中,所述装置1600还包括:确定模块,用于从所述第二存储介质的候选存储单元中,确定所述第二存储单元,所述候选存储单元为用于未参与所述统一编址的空闲存储单元。
在另一种可能的实现方式中,所述确定模块还用于:移除候选存储单元队列中的所述第二存储单元;若所述候选存储单元队列中的候选存储单元未满,将所述第二存储介质中参与所述统一编址的空闲存储单元加入所述候选存储单元队列。
上述所有可能的实现方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。
图17是本申请提供的另一种数据迁移装置的结构示意图,如图17所示,装置1700包括映射模块1701、迁移命令触发模块1702、迁移命令调度模块1703、迁移模块1704、迁移冲突管理模块1705以及仲裁模块1706。其中,映射模块1701,用于维护第二存储单元映射表,将处理器下发的数据访问请求中的物理地址转换为介质地址后发送给迁移冲突管理模块1705,在有数据访问请求触发迁移的情况下,向迁移命令调度模块1703发送数据迁移请求。
迁移命令触发模块1702为可选模块,迁移命令触发模块1702和电子设备中的处理器,都能用于根据统计单元统计的混合内存系统中参与统一编址的各个存储单元的被访问次数,确定满足迁移条件的存储单元,基于满足迁移条件的存储单元,向迁移命令调度模块1703下发数据迁移请求。迁移命令触发模块1702为可选模块。
迁移命令调度模块1703,用于维护混合内存系统中各个存储介质(如第一控制器和第二控制器连接的存储介质)的候选存储单元队列,在接收到的数据迁移请求中添加目的存储单元的介质地址,通过查询第二存储单元映射表,将数据迁移请求中的源存储单元的物理地址转换为介质地址,向迁移模块1704发送携带介质地址的数据迁移请求。
迁移模块1704,用于根据接收到的数据迁移请求,在迁移冲突表管理模块1705中添加迁移表项,并处理数据迁移请求(如向仲裁模块1706下发迁移读请求和迁移写请求),在数据迁移完成后,无效对应的迁移表项,并通知迁移命令调度模块1703处理下一个迁移请求。
迁移冲突表管理模块1705,用于维护迁移表,根据数据访问请求在迁移表的命中情况,确定是否更新数据访问迁移请求中的介质地址,之后,将更新后的或未更新的数据访问请求发送给仲裁模块1706。
仲裁模块1706,用于每接收到一个处理请求(如来自数据访问请求、迁移读请求或迁移写请求),将处理请求加入到发送队列的队尾,从发送队列的队头依次发送各个处理请求,每接收到一个处理请求的处理响应,将处理响应加入到接收队列的队尾,从接收队列的队头依次原路返回各个处理响应。
装置1700的实现方式可参考装置1600,在此,本申请实施例对装置1700的实现方式不做赘述。
应理解,对于装置1600和装置1700中的任一装置,该装置对应于上述方法实施例中的管理器,该装置中的各模块和上述其他操作和/或功能分别为了实现方法实施例中的管理器所实施的各种步骤和方法,具体细节可参见上述方法实施例,为了简洁,在此不再赘述。
应理解,对于装置1600和装置1700中的任一装置,该任一装置在进行数据迁移时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将该装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与上述方法实施例属于同一构思,其具体实现过程详见上述方法实施例,这里不再赘述。
应理解,对于装置1600和装置1700中的任一装置可以相当于图1至图3中的管理器104、104a以及104b,或者相当于管理器104、104a以及104b中的执行部件。
图18是本申请提供的一种芯片的结构示意图,如图18所示,芯片1800包括处理器1801和接口电路1802,其中,接口电路1802,用于接收指令并传输至处理器1801。处理器1801,例如可以是装置1600或装置1700的一种具体实现形式,可以用于执行上述应用于数据迁移方法。处理器1801与存储器1803耦合,存储器1803用于存储程序代码,当该程序代码被处理器1801执行时,使得处理器1801、接口电路1802以及存储器1803所组成的芯片系统实现上述图4至图15中任一方法实施例中的方法的操作步骤。
可选地,该芯片系统中的处理器1801有至少一个,应理解,在本申请实施例中,处理器1801可以是CPU或其他通用处理器,处理器1801还可以是一个或多个用于实现本申请方案的集成电路,例如,数字信号处理器(digital signal processing,DSP)、ASIC、PLD、FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者是任何常规的处理器等。
可选地,该芯片系统中的存储器1803也可以为一个或多个。存储器1803可以与处理器1801集成在一起,也可以和处理器1801分离设置,本申请并不限定。示例性的,存储器1803可以与处理器1801集成在同一块芯片上,如图18所示,存储器1803也可以和处理器1801分别设置在不同的芯片上,本申请对存储器1803的类型以及存储器1803与处理器1801的设置方式不作具体限定。
其中,存储器1803可以包括只读存储器和随机存取存储器,并向处理器1801提供指令和数据。存储器1803还可以包括非易失性随机存取存储器。例如,存储器1803还可以存储设备类型的信息。存储器1803还可以是易失性存储器,或可包括易失性和非易失性存储器两者。
其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data date SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。
示例性的,该芯片系统可以是FPGA,可以是ASIC,还可以是SoC,还可以是CPU,还可以是网络处理器(network processor,NP),还可以是数字信号处理电路(digital signalprocessor,DSP),还可以是微控制器(micro controller unit,MCU),还可以是PLD)或其他集成芯片。
本申请还提供了一种计算机可读存储介质,例如包括程序代码的存储器,上述程序代码可由电子设备(或芯片)中的处理器执行以完成上述实施例中的数据迁移方法。该计算机可读存储介质的实现方式可参考与图18中的存储器1803。
本申请还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括程序代码,该程序代码存储在计算机可读存储介质中,处理器从计算机可读存储介质读取该程序代码,处理器执行该程序代码,使得处理器所在芯片或电子设备执行上述数据迁移方法。
另外,本申请还提供一种装置,这个装置具体可以是芯片,组件或模块,该装置可包括相连的处理器和存储器;其中,存储器用于存储计算机执行指令,当装置运行时,处理器可执行存储器存储的计算机执行指令,以使芯片执行上述各方法实施例中数据迁移方法。
其中,本申请提供的装置、设备、计算机可读存储介质、计算机程序产品或芯片均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本发明本申请实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)或者半导体介质。半导体介质可以是固态硬盘(solid state disk,SSD)。
以上所述,仅为本申请的具体实施方式。熟悉本技术领域的技术人员根据本申请提供的具体实施方式,可想到变化或替换,都应涵盖在本申请的保护范围之内。
Claims (13)
1.一种数据迁移方法,其特征在于,所述方法应用于混合内存系统,所述混合内存系统包括第一存储介质和第二存储介质,所述方法包括:
获取数据迁移请求,所述数据迁移请求指示将所述第一存储介质的第一存储单元中的数据迁移至所述第二存储介质;
将所述第一存储单元中的数据迁移至所述第二存储介质中的第二存储单元,所述第二存储单元未参与所述混合内存系统中的统一编址;
将所述第一存储单元在所述统一编址时所关联的第一地址分配给所述第二存储单元。
2.根据权利要求1所述的方法,其特征在于,所述第一地址与所述第一存储单元在所述第一存储介质中的第二地址之间具有映射关系,以指示将所述第一地址分配给所述第一存储单元,所述将所述第一存储单元在所述统一编址时所关联的第一地址分配给所述第二存储单元包括:
将所述映射关系中的所述第二地址修改为所述第二存储单元在所述第二存储介质中的第二地址。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
接收应用程序的第一数据写请求,所述第一数据写请求指示向所述第一存储单元写入数据;
根据所述第一数据写请求,查询所述第一存储单元的迁移状态,所述迁移状态指示所述第一存储单元的迁移进度;
若所述迁移状态为迁移中,将所述第一数据写请求转换为第二数据写请求,所述迁移中指示正在将所述第一存储单元中的数据迁移至所述第二存储单元,所述第二数据写请求指示向所述第二存储单元写入数据。
4.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
接收应用程序的第一数据读请求,所述第一数据读请求指示从所述第一存储单元的第一缓存行读取数据;
根据所述第一数据读请求,获取所述第二存储单元中所述第一缓存行对应的第二缓存行的写入状态,所述写入状态指示所述第二缓存行写入数据的进度;
若所述写入状态为写入完成,将所述第一数据读请求转换为第二数据读请求,所述写入完成指示所述第二缓存行已经写入数据,所述第二数据读请求指示从所述第二缓存行读取数据。
5.根据权利要求1或2所述的方法,其特征在于,所述获取数据迁移请求包括:
对所述第一存储介质进行数据迁移检测;
若检测到所述第一存储单元满足迁移条件,生成所述数据迁移请求。
6.根据权利要求5所述的方法,其特征在于,所述第一存储单元满足迁移条件包括所述第一存储单元的被访问次数达到迁移阈值的取值范围,所述对所述第一存储介质进行数据迁移检测包括:
检测发往所述混合内存系统的数据访问请求,所述数据访问请求指示访问所述混合内存系统中的存储单元;
根据检测到所述数据访问请求,获取所述第一存储单元的被访问次数。
7.根据权利要求5所述的方法,其特征在于,所述第一存储单元满足迁移条件包括所述第一存储介质的访问时延小于所述第二存储介质的访问时延,所述第一存储介质中空闲存储单元的个数小于或等于个数阈值,且所述第一存储单元为被访问次数未达到访问阈值的非空闲存储单元;
所述对所述第一存储介质进行数据迁移检测包括:
获取所述第一存储介质中各个存储单元的被访问次数;
根据所述第一存储介质中各个存储单元的被访问次数,确定所述第一存储介质中的空闲存储单元以及非空闲存储单元。
8.根据权利要求5所述的方法,其特征在于,所述方法还包括:
若检测到所述第一存储单元满足迁移条件,且接收到应用程序对所述第一存储单元的数据访问请求,生成所述数据迁移请求。
9.根据权利要求1-2以及6-8中任一项所述的方法,其特征在于,所述将所述第一存储单元中的数据迁移至所述第二存储介质中的第二存储单元之前,所述方法还包括:
从所述第二存储介质的候选存储单元中,确定所述第二存储单元,所述候选存储单元为用于未参与所述统一编址的空闲存储单元。
10.根据权利要求9所述的方法,其特征在于,所述候选存储单元位于所述第二存储介质的候选存储单元队列,所述将所述第一存储单元中的数据迁移至第二存储单元之后,所述方法还包括:
移除候选存储单元队列中的所述第二存储单元;
若所述候选存储单元队列中的候选存储单元未满,将所述第二存储介质中参与所述统一编址的空闲存储单元加入所述候选存储单元队列。
11.一种数据迁移装置,其特征在于,所述装置应用于混合内存系统,所述混合内存系统包括第一存储介质和第二存储介质,所述装置包括:
获取模块,用于获取数据迁移请求,所述数据迁移请求指示将所述第一存储介质的第一存储单元中的数据迁移至所述第二存储介质;
迁移模块,用于将所述第一存储单元中的数据迁移至所述第二存储介质中的第二存储单元,所述第二存储单元未参与所述混合内存系统中的统一编址;
分配模块,用于将所述第一存储单元在所述统一编址时所关联的第一地址分配给所述第二存储单元。
12.一种芯片,其特征在于,所述芯片包括处理器,所述处理器用于执行至少一条程序代码,使得所述芯片执行如权利要求1至权利要求10中任一项所述的方法。
13.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条程序代码,所述至少一条程序代码由处理器读取以使芯片执行如权利要求1至权利要求10中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211168045.0A CN117806526A (zh) | 2022-09-23 | 2022-09-23 | 数据迁移方法、装置、芯片以及计算机可读存储介质 |
PCT/CN2023/120667 WO2024061344A1 (zh) | 2022-09-23 | 2023-09-22 | 数据迁移方法、装置、芯片以及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211168045.0A CN117806526A (zh) | 2022-09-23 | 2022-09-23 | 数据迁移方法、装置、芯片以及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117806526A true CN117806526A (zh) | 2024-04-02 |
Family
ID=90427510
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211168045.0A Pending CN117806526A (zh) | 2022-09-23 | 2022-09-23 | 数据迁移方法、装置、芯片以及计算机可读存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN117806526A (zh) |
WO (1) | WO2024061344A1 (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105353980B (zh) * | 2013-11-22 | 2019-10-22 | 华为技术有限公司 | 一种内存数据的迁移方法、计算机和装置 |
US10275177B2 (en) * | 2016-10-31 | 2019-04-30 | Oracle International Corporation | Data layout schemas for seamless data migration |
CN107678981A (zh) * | 2017-08-24 | 2018-02-09 | 北京盛和大地数据科技有限公司 | 数据处理方法及装置 |
CN109324758A (zh) * | 2018-08-24 | 2019-02-12 | 华为技术有限公司 | 数据迁移方法、装置及存储设备 |
-
2022
- 2022-09-23 CN CN202211168045.0A patent/CN117806526A/zh active Pending
-
2023
- 2023-09-22 WO PCT/CN2023/120667 patent/WO2024061344A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2024061344A1 (zh) | 2024-03-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10552337B2 (en) | Memory management and device | |
US10289555B1 (en) | Memory read-ahead using learned memory access patterns | |
US9871727B2 (en) | Routing lookup method and device and method for constructing B-tree structure | |
EP2645259B1 (en) | Method, device and system for caching data in multi-node system | |
EP3441884B1 (en) | Method for managing translation lookaside buffer and multi-core processor | |
US11656779B2 (en) | Computing system and method for sharing device memories of different computing devices | |
CN105518631B (zh) | 内存管理方法、装置和系统、以及片上网络 | |
KR20120068454A (ko) | 원격 페이지 폴트 처리 장치 및 그 방법 | |
US20190018808A1 (en) | Memory node controller | |
US20170228164A1 (en) | User-level instruction for memory locality determination | |
US11243877B2 (en) | Method, apparatus for data management, and non-transitory computer-readable storage medium for storing program | |
CN113760560A (zh) | 一种进程间通信方法以及进程间通信装置 | |
WO2024036985A1 (zh) | 存储系统及其计算存储处理器、固体硬盘和数据读写方法 | |
US11256630B2 (en) | Cache address mapping method and related device | |
CN114546898A (zh) | 一种tlb管理方法、装置、设备及存储介质 | |
US7562204B1 (en) | Identifying and relocating relocatable kernel memory allocations in kernel non-relocatable memory | |
CN113297105A (zh) | 一种转换地址的缓存处理方法及装置 | |
CN115586943B (zh) | 一种智能网卡虚拟机脏页的硬件标记实现方法 | |
WO2015161804A1 (zh) | 一种Cache分区的方法及装置 | |
CN116225693A (zh) | 元数据管理方法、装置、计算机设备及存储介质 | |
CN117806526A (zh) | 数据迁移方法、装置、芯片以及计算机可读存储介质 | |
WO2021249030A1 (zh) | 随机数序列生成方法和随机数引擎 | |
US10949357B2 (en) | Real time input/output address translation for virtualized systems | |
CN113805845A (zh) | 随机数序列生成方法和随机数引擎 | |
CN113742253A (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 |