WO2015180649A1 - 存储设备间移动数据的方法、控制器和存储系统 - Google Patents
存储设备间移动数据的方法、控制器和存储系统 Download PDFInfo
- Publication number
- WO2015180649A1 WO2015180649A1 PCT/CN2015/079947 CN2015079947W WO2015180649A1 WO 2015180649 A1 WO2015180649 A1 WO 2015180649A1 CN 2015079947 W CN2015079947 W CN 2015079947W WO 2015180649 A1 WO2015180649 A1 WO 2015180649A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- data
- destination
- storage device
- source
- physical address
- Prior art date
Links
Images
Classifications
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
一种存储设备间移动数据的方法、控制器和存储系统。方法包括:一体化存储UAS控制器接收用户空间库发送的数据移动请求,所述数据移动请求包括源存储设备的源地址、目的存储设备的目的地址以及所需移动的数据大小,所述数据移动请求为所述用户空间库接收到应用程序对所述用户空间库中的数据移动应用程序接口API的调用请求时发送的(101);所述UAS控制器根据所述源地址、目的地址以及数据大小,将待移动数据从所述源存储设备移动到目的存储设备(102)。该数据移动过程在用户态即可实现两个存储设备之间的直接的数据移动,而无需操作系统参与,无需进入内核态,从而可以节约系统开销。
Description
本发明实施例涉及存储技术,尤其涉及一种存储设备间移动数据的方法、控制器和存储系统。
一体化存储(Unified Accessing Storage,以下简称:UAS)系统中可以包括多种不同特性的存储设备,如可以包括动态随机访问存储器(Dynamic Random Access Memory,以下简称:DRAM)、非易失性存储器(Non-Volatile Memory,以下简称:NVM)、基于Flash的固态硬盘(Flash-based Solid State Disk,以下简称:Flash-based SSD)、磁盘(Hard Disk,以下简称:HDD)等。这些不同特性的存储设备都通过内存总线或者其它互连方式连接到CPU。一体化存储系统对不同特性的存储设备进行统一编址,CPU可以寻址到整个存储系统的各个地址空间,从而可以针对一体化存储系统中的各个存储设备进行存取访问。
为了更好地利用一体化存储系统的性能,需要支持应用程序在一体化存储系统的不同存储设备间移动数据。因此,如何使应用程序能够在一体化存储系统的不同存储设备间移动数据,成为亟待解决的技术问题。
发明内容
本发明实施例提供一种存储设备间移动数据的方法、控制器和存储系统。
第一方面,提供一种存储设备间移动数据的方法,包括:
一体化存储UAS控制器接收用户空间库发送的数据移动请求,所述数据移动请求包括源存储设备的源地址、目的存储设备的目的地址以及所需移动的数据大小,所述数据移动请求为所述用户空间库接收到应用程序对所述用户空间库中的数据移动应用程序接口API的调用请求时发送的;
所述UAS控制器根据所述源地址、目的地址以及数据大小,将待移动
数据从所述源存储设备移动到目的存储设备。
第二方面,提供一种UAS控制器,包括:
接收模块,用于接收用户空间库发送的数据移动请求,所述数据移动请求包括源存储设备的源地址、目的存储设备的目的地址以及所需移动的数据大小,所述数据移动请求为所述用户空间库接收到应用程序对所述用户空间库中的数据移动应用程序接口API的调用请求时发送的;
数据移动模块,用于根据所述源地址、目的地址以及数据大小,将待移动数据从所述源存储设备移动到目的存储设备。
第三方面,提供一种UAS系统,包括:UAS控制器和与所述UAS控制器连接的至少两个存储设备,所述UAS控制器采用上述的UAS控制器。
本发明上述实施例,通过在用户空间库中增加数据移动API,从而使得应用程序可以通过调用该用户空间库中的API,向UAS控制器发送数据移动请求;UAS控制器在接收到数据移动请求之后,可以根据该请求中包含的源存储设备的源地址、目的存储设备的目的地址以及所需移动的数据大小,将所需移动的数据从源存储设备移动到目的存储设备,从而可以完成两个存储设备间的数据移动。因此,本发明实施例只需要开发用户空间库中的数据移动API,实现简便;而且,本发明实施例的数据移动过程,在用户态即可实现两个存储设备之间的直接的数据移动,而无需操作系统参与,无需进入内核态,从而可以节约系统开销。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明存储设备间移动数据的方法实施例一的流程图;
图2为图1所示方法所应用的系统架构图;
图3为本发明存储设备间移动数据的方法实施例二的流程图;
图4为本发明UAS控制器实施例的结构示意图;
图5为本发明UAS系统实施例的结构示意图。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明存储设备间移动数据的方法实施例一的流程图,图2为图1所示方法所应用的系统架构图,如图1和2所示,本实施例的方法可以包括:
S101、UAS控制器接收用户空间库发送的数据移动请求,该数据移动请求包括源存储设备的源地址、目的存储设备的目的地址以及所需移动的数据大小,数据移动请求为用户空间库接收到应用程序对用户空间库中的数据移动应用程序接口(Application Programming Interface,以下简称:API)的调用请求时发送的;
S102、UAS控制器根据源地址、目的地址以及数据大小,将待移动数据从源存储设备移动到目的存储设备。
具体来说,本实施例所采用的系统架构包括软件部分和硬件部分,其中,软件部分包括应用程序和用户空间库,硬件部分包括UAS控制器和与该UAS控制器连接的DRAM、NVM、Flash-based SSD、HDD等多种不同特性的存储设备,UAS控制器可以控制这些存储设备上的数据操作。应用程序可以调用用户空间库中提供的API,从而可以通过用户空间库向UAS控制器发送访问请求,以访问存储设备中的数据。
为了实现本实施例的技术方案,可以在用户空间库中增加一个数据移动API(以下简称:move API),move API的基本参数可以包括待移动数据所在源存储设备的源地址src_addr、目的存储设备的目的地址dest_addr以及所需移动的数据大小data_size,该接口函数可以表征为void move(src_addr,dest_addr,data_size,……)。
应用程序可以向用户空间库发送调用请求,以调用用户空间库中的move API,即可将从源地址src_addr开始的data_size大小的数据块移动到目的地
址dest_addr开始的位置。
用户空间库在接收到应用程序对该move API的调用时,即可向UAS控制器发送数据移动请求,该数据移动请求即可将应用程序调用move API时发送的源存储设备的源地址src_addr、目的存储设备的目的地址dest_addr以及所需移动的数据大小data_size传送给UAS控制器。
UAS控制器在接收到用户空间库发送的数据移动请求后,即可根据该数据移动请求中所包含的源存储设备的源地址src_addr、目的存储设备的目的地址dest_addr以及所需移动的数据大小data_size,将所需移动的数据从源存储设备移动到目的存储设备。
在具体实现数据移动时,UAS控制器可以先将源地址转换为源物理地址,并将目的地址转换为目的物理地址;然后可以确定从源物理地址开始的数据大小的数据块为待移动数据;并将待移动数据从源物理地址移动到目的物理地址。
可选的,应用程序在调用用户空间库中的move API时,还可以进一步设置一数据有效标志位,即valid标志。该标志位用于表示是否保留源地址上的数据;相应的,用户空间库在向UAS控制器发送数据移动请求时,可以将该数据有效标志位携带在数据移动请求中,从而使得UAS控制器可以获知在数据移动时,是否需要保留源地址上的数据。相应的,UAS控制器在根据源地址、目的地址以及数据大小,将待移动数据从源存储设备移动到目的存储设备之后,还可以进一步地根据数据有效标识位确定是否保留源地址上的数据,若不保存,则可以将源地址上的数据置为无效。
可选的,UAS控制器可以对可移动的数据进行权限控制,例如设定预设地址范围内的数据是可操作的或者不可操作的。因此,UAS控制器在确定从源物理地址开始的数据大小的数据块为待移动数据之前,还可以先确定源物理地址和目的物理地址是否超出可操作的地址范围;若超出,则UAS控制器可以向用户空间库发送地址越界报告,进而可以使得用户空间库向应用程序通知地址越界,操作错误;若未超出,则UAS控制器再去执行确定从源物理地址开始的数据大小的数据块为待移动数据的步骤。
下面针对三种场景对数据移动过程进行详细说明。
场景一、若源物理地址为一个源存储设备的物理地址,且目的物理地址
为一个目的存储设备的物理地址,则UAS控制器可以采用两种方式进行数据移动:
方式一、UAS控制器先从源存储设备读取待移动数据,并根据目的物理地址将读取的待移动数据写入目的存储设备中;
方式二、UAS控制器可以从源存储设备读取待移动数据,并将读取的待移动数据缓存到UAS控制器的缓存空间中;然后,从缓存空间中读取待移动数据,并根据目的物理地址将读取的待移动数据写入目的存储设备中。
场景二、若源物理地址为一个源存储设备的物理地址,且目的物理地址包含至少两个目的存储设备的物理地址;或者,若源物理地址包含至少两个源存储设备的物理地址,且目的物理地址为一个目的存储设备的物理地址;或者,若源物理地址包含至少两个源存储设备的物理地址,且目的物理地址包含至少两个目的存储设备的物理地址,则UAS控制器可以将移动操作拆分为一个源存储设备对应一个目的存储设备的移动子操作,并且采用两种方式进行具体的数据移动:
方式一、UAS控制器针对每个移动子操作,从源存储设备读取待移动数据,并根据目的物理地址将读取的待移动数据写入目的存储设备中;
方式二:UAS控制器针对每个移动子操作,从源存储设备读取待移动数据,并将读取的待移动数据缓存到UAS控制器的缓存空间中,从缓存空间中读取待移动数据,并根据目的物理地址将读取的待移动数据写入目的存储设备中。
场景三、若所述源物理地址包含一个源存储设备中的至少两个非连续的物理地址,所述目的物理地址为一个目的存储设备中的连续物理地址;或者,所述源物理地址为一个源存储设备中的连续物理地址,所述目的物理地址包含一个目的存储设备中的至少两个非连续的物理地址;或者,所述源物理地址包含一个源存储设备中的至少两个非连续的物理地址,所述目的物理地址包含一个目的存储设备中的至少两个非连续的物理地址,则UAS控制器将移动操作拆分为源物理地址中的每一个物理地址对应目的物理地址中的每一个物理地址的移动子操作,并且采用两种方式进行具体的数据移动:
方式一、UAS控制器针对每个移动子操作,从源存储设备读取对应物理地址的待移动数据,并根据对应目的物理地址将读取的待移动数据写入目的
存储设备中;
方式二、UAS控制器针对每个移动子操作,从源存储设备读取对应物理地址的待移动数据,并将读取的待移动数据缓存到UAS控制器的缓存空间中,从缓存空间中读取待移动数据,并根据对应目的物理地址将读取的待移动数据写入目的存储设备中。
另外,若目的存储设备是以数据块粒度存储的设备,例如目的存储设备为flash-based SSD,则UAS控制器在将待移动数据写入目的存储设备时,可以根据flash-based SSD的数据块粒度大小,对待移动数据进行数据块划分;若划分得到的数据块均为数据块粒度大小,即待移动数据的大小是数据块粒度的整数倍,则UAS控制器可以将划分得到的各个数据块直接写入目的存储设备;若划分得到的数据块包括N个数据块粒度大小的数据块和1个小于数据块粒度大小的数据块,也即待移动数据的大小不是数据块粒度的整数倍,则UAS控制器可以将划分得到的N个数据块直接写入目的存储设备,而对于剩余的1个小于数据块粒度大小的数据块来说,可以先填充为满足数据块粒度大小的数据块,然后再写入目的存储设备。
上述实施例中,用户空间库向UAS控制器发送数据移动请求的过程,既可以通过对UAS控制器中的寄存器进行写操作来实现,也可以通过扩展指令的方式向UAS发送指令的方式来实现。这两种实现方式,均可以使得用户空间库与UAS控制器之间直接进行通信,而不需要操作系统的参与。
针对UAS控制器中寄存器置位的方式来说,UAS控制器具体可以接收用户空间库发送的寄存器写请求,该寄存器写请求包括源存储设备的源地址、目的存储设备的目的地址以及所需移动的数据大小;然后,UAS控制器即可将源地址、目的地址以及数据大小写入寄存器。在UAS控制器需要根据源地址、目的地址以及数据大小,将待移动数据从所述源存储设备移动到目的存储设备时,UAS控制器可以从寄存器中读取源地址、目的地址以及数据大小,并根据源地址、目的地址以及数据大小,将待移动数据从源存储设备移动到目的存储设备。
针对扩展指令的方式来说,本发明实施例可以针对该数据移动操作专门扩展出一条操作指令,即数据移动操作指令,UAS控制器和用户空间库均可识别该数据移动操作指令。UAS控制器可以接收用户空间库发送的数据移动
操作指令,该数据移动操作指令包括源存储设备的源地址、目的存储设备的目的地址以及所需移动的数据大小;然后,UAS控制器即可根据该数据移动操作指令,将待移动数据从源存储设备移动到目的存储设备。
进一步的,应用程序需要获知数据移动操作的完成状态,因此,用户空间库与UAS控制器需要配合以向应用程序通知数据移动操作完成。在完成数据移动之后,UAS控制器可以向寄存器中写入移动操作完成信息。
本发明实施例可以在用户空间库中增加另一API,即检查API(以下简称:check API)。当应用程序需要检查数据移动操作是否完成时,可以向用户空间库发送check API的调用请求;用户空间库在接收到该调用请求时读取寄存器,获取该移动操作完成信息;并且,向应用程序通知数据移动操作完成。在具体实现时,应用程序在调用check API时,用户空间库可以启动一个专门的线程,不断查询UAS控制器中的寄存器的写入状态,如果查询到寄存器中写入了移动操作完成信息,则可以通知应用程序数据移动操作完成。
下面采用一个具体的实例,对本发明的技术方案进行说明。
图3为本发明存储设备间移动数据的方法实施例二的流程图,如图3所示,本实施例的方法可以包括:
S301、应用程序调用用户空间库中的申请API(以下简称:acquire API),请求在DRAM和HDD上申请2MB和1MB的虚拟地址空间。
具体来说,应用程序可以调用用户空间库中的如下两个acquire API:
addr1=acquire(2MB,LOW_LATENCY);
addr2=acquire(1MB,PERSISTENT);
其中,LOW_LATENCY表示低延迟,addr1=acquire(2MB,LOW_LATENCY)表征需要在满足低延迟特性的DRAM上分配2MB的虚拟地址空间addr1;PERSISTENT表示持久化,addr2=acquire(1MB,PERSISTENT)表征需要在满足持久化特性的HDD上分配1MB的虚拟地址空间addr2。
S302、用户空间库向UAS控制器发送物理空间分配请求,以请求UAS控制器在DRAM和HDD上为应用程序分配2MB和1MB的物理地址空间。
S303、UAS控制器根据物理空间分配请求,在DRAM和HDD上为应用
程序分配2MB和1MB的物理地址空间。
S304、应用程序调用用户空间库中的move API,请求将DRAM中512KB的数据移动到HDD中。
具体来说,应用程序可以调用move(addr1,addr2,512KB)。
S305、用户空间库获得move调用后,将UAS控制器中的寄存器地址映射到用户态空间,向UAS控制器发送寄存器写请求。
S306、UAS控制器接收到寄存器写请求,将源地址add1和目的地址add2转换成物理地址,发现源设备和目的设备分别是DRAM和HDD。
S307、UAS控制器将DRAM中指定地址处512KB的数据移动到HDD中。
S308、在数据传输完成后,UAS控制器将移动操作完成信息写入寄存器。
可选的,UAS控制器可以将DRAM中移动的512KB的数据块信息置为无效。
S309、应用程序调用用户空间库中的check API。
S310、用户空间库在获得check调用后,读取UAS控制器中的寄存器,获取移动操作完成信息。
S311、用户空间库向应用程序通知数据移动操作完成。
综上,本发明上述实施例的方法,通过在用户空间库中增加数据移动API,从而使得应用程序可以通过调用该用户空间库中的API,向UAS控制器发送数据移动请求;UAS控制器在接收到数据移动请求之后,可以根据该请求中包含的源存储设备的源地址、目的存储设备的目的地址以及所需移动的数据大小,将所需移动的数据从源存储设备移动到目的存储设备,从而可以完成两个存储设备间的数据移动。因此,本发明实施例只需要开发用户空间库中的数据移动API,实现简便;而且,本发明实施例的数据移动过程,在用户态即可实现两个存储设备之间的直接的数据移动,而无需操作系统参与,无需进入内核态,从而可以节约系统开销。
图4为本发明UAS控制器实施例的结构示意图,如图4所示,本实施例的UAS控制器可以包括:接收模块41、数据移动模块42;
其中,接收模块41,用于接收用户空间库发送的数据移动请求,所述数
据移动请求包括源存储设备的源地址、目的存储设备的目的地址以及所需移动的数据大小,所述数据移动请求为所述用户空间库接收到应用程序对所述用户空间库中的数据移动应用程序接口API的调用请求时发送的;数据移动模块42,用于根据所述源地址、目的地址以及数据大小,将待移动数据从所述源存储设备移动到目的存储设备。
可选的,接收模块41,具体用于:
接收用户空间库发送的寄存器写请求,所述寄存器写请求包括源存储设备的源地址、目的存储设备的目的地址以及所需移动的数据大小;
将所述源地址、目的地址以及数据大小写入寄存器;
相应的,数据移动模块42,具体用于:
从所述寄存器中读取所述源地址、目的地址以及数据大小,并根据所述源地址、目的地址以及数据大小,将待移动数据从所述源存储设备移动到目的存储设备。
或者,接收模块41,具体用于:
接收用户空间库发送的数据移动操作指令,所述数据移动操作指令包括源存储设备的源地址、目的存储设备的目的地址以及所需移动的数据大小。
进一步的,数据移动模块42,还用于:
向寄存器中写入移动操作完成信息,以使所述用户空间库在接收到所述应用程序对所述用户空间库中的检查API的调用请求时读取所述移动操作完成信息并向所述应用程序通知数据移动操作完成。
另外,数据移动模块42,具体用于:
将所述源地址转换为源物理地址,并将所述目的地址转换为目的物理地址;
确定从所述源物理地址开始的所述数据大小的数据块为待移动数据;
将所述待移动数据从所述源物理地址移动到所述目的物理地址。
在具体实现时,若所述源物理地址为一个源存储设备的物理地址,且所述目的物理地址为一个目的存储设备的物理地址,则:
数据移动模块42,具体用于:
从所述源存储设备读取所述待移动数据,并根据所述目的物理地址将读取的所述待移动数据写入所述目的存储设备中;
或者,
从所述源存储设备读取所述待移动数据,并将读取的所述待移动数据缓存到所述UAS控制器的缓存空间中;从所述缓存空间中读取所述待移动数据,并根据所述目的物理地址将读取的所述待移动数据写入所述目的存储设备中。
或者,若所述源物理地址为一个源存储设备的物理地址,且所述目的物理地址包含至少两个目的存储设备的物理地址;或者,若所述源物理地址包含至少两个源存储设备的物理地址,且所述目的物理地址为一个目的存储设备的物理地址;或者,若所述源物理地址包含至少两个源存储设备的物理地址,且所述目的物理地址包含至少两个目的存储设备的物理地址,则:
数据移动模块42,具体用于:
将移动操作拆分为一个源存储设备对应一个目的存储设备的移动子操作;
针对每个移动子操作,从所述源存储设备读取所述待移动数据,并根据所述目的物理地址将读取的所述待移动数据写入所述目的存储设备中;或者,从源存储设备读取所述待移动数据,并将读取的所述待移动数据缓存到所述UAS控制器的缓存空间中,从所述缓存空间中读取所述待移动数据,并根据所述目的物理地址将读取的所述待移动数据写入目的存储设备中。
或者,若所述源物理地址包含一个源存储设备中的至少两个非连续的物理地址,所述目的物理地址为一个目的存储设备中的连续物理地址;或者,所述源物理地址为一个源存储设备中的连续物理地址,所述目的物理地址包含一个目的存储设备中的至少两个非连续的物理地址;或者,所述源物理地址包含一个源存储设备中的至少两个非连续的物理地址,所述目的物理地址包含一个目的存储设备中的至少两个非连续的物理地址,则:
数据移动模块42,具体用于:
将移动操作拆分为所述源物理地址中的每一个物理地址对应所述目的物理地址中的每一个物理地址的移动子操作;
针对每个移动子操作,从所述源存储设备读取对应物理地址的待移动数据,并根据对应目的物理地址将读取的所述待移动数据写入所述目的存储设备中;或者,从源存储设备读取对应物理地址的待移动数据,并将读取的待
移动数据缓存到所述UAS控制器的缓存空间中,从所述缓存空间中读取待移动数据,并根据对应目的物理地址将读取的所述待移动数据写入目的存储设备中。
更进一步的,若所述目的存储设备是以数据块粒度存储的设备,则数据移动模块42,具体用于:
根据所述数据块粒度大小,对所述待移动数据进行数据块划分;
若划分得到的数据块均为所述数据块粒度大小,则将划分得到的各个数据块写入目的存储设备;
若划分得到的数据块包括N个数据块粒度大小的数据块和1个小于数据块粒度大小的数据块,则将划分得到的所述N个数据块写入目的存储设备,并将所述1个小于数据块粒度大小的数据块填充为满足数据块粒度大小的数据块并写入目的存储设备。
另外,数据移动模块42,还用于:
确定所述源物理地址和目的物理地址是否超出可操作的地址范围;
若超出,则向所述用户空间库发送地址越界报告;
若未超出,则执行确定从所述源物理地址开始的所述数据大小的数据块为待移动数据的步骤。
另外,数据移动请求中还包括数据有效标志位,所述数据有效标志位用于表示是否保留源地址上的数据;
相应的,数据移动模块42,还用于:
根据所述数据有效标识位确定是否保留源地址上的数据,若不保存,则将所述源地址上的数据置为无效。
本实施例的装置可以用于执行图1~3所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图5为本发明UAS系统实施例的结构示意图,如图5所示,本实施例的系统可以包括:UAS控制器51和与UAS控制器51连接的至少两个存储设备52,本实施例中示例出了DRAM、NVM、Flash-based SSD、HDD。
其中,该UAS控制器51具体可以采用图4所示方法实施例的结构,并且该UAS控制器51与软件部分的配合的系统架构可以如图2所示,该UAS控制器51可以用于执行图1或3所示方法实施例的技术方案,其实现原理和
技术效果类似,此处不再赘述。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (24)
- 一种存储设备间移动数据的方法,其特征在于,包括:一体化存储UAS控制器接收用户空间库发送的数据移动请求,所述数据移动请求包括源存储设备的源地址、目的存储设备的目的地址以及所需移动的数据大小,所述数据移动请求为所述用户空间库接收到应用程序对所述用户空间库中的数据移动应用程序接口API的调用请求时发送的;所述UAS控制器根据所述源地址、目的地址以及数据大小,将待移动数据从所述源存储设备移动到目的存储设备。
- 根据权利要求1所述的方法,其特征在于,所述UAS控制器接收用户空间库发送的数据移动请求,所述数据移动请求包括源存储设备的源地址、目的存储设备的目的地址以及所需移动的数据大小,包括:所述UAS控制器接收用户空间库发送的寄存器写请求,所述寄存器写请求包括源存储设备的源地址、目的存储设备的目的地址以及所需移动的数据大小;所述UAS控制器将所述源地址、目的地址以及数据大小写入寄存器;所述UAS控制器根据所述源地址、目的地址以及数据大小,将待移动数据从所述源存储设备移动到目的存储设备,包括:所述UAS控制器从所述寄存器中读取所述源地址、目的地址以及数据大小,并根据所述源地址、目的地址以及数据大小,将待移动数据从所述源存储设备移动到目的存储设备。
- 根据权利要求1所述的方法,其特征在于,所述UAS控制器接收用户空间库发送的数据移动请求,所述数据移动请求包括源存储设备的源地址、目的存储设备的目的地址以及所需移动的数据大小,包括:所述UAS控制器接收用户空间库发送的数据移动操作指令,所述数据移动操作指令包括源存储设备的源地址、目的存储设备的目的地址以及所需移动的数据大小。
- 根据权利要求2或3所述的方法,其特征在于,所述UAS控制器根据所述源地址、目的地址以及数据大小,将待移动数据从所述源存储设备移动到目的存储设备之后,还包括:所述UAS控制器向寄存器中写入移动操作完成信息,以使所述用户空间库在接收到所述应用程序对所述用户空间库中的检查API的调用请求时读取 所述移动操作完成信息并向所述应用程序通知数据移动操作完成。
- 根据权利要求1~4中任一项所述的方法,其特征在于,所述UAS控制器根据所述源地址、目的地址以及数据大小,将待移动数据从所述源存储设备移动到目的存储设备,包括:所述UAS控制器将所述源地址转换为源物理地址,并将所述目的地址转换为目的物理地址;所述UAS控制器确定从所述源物理地址开始的所述数据大小的数据块为待移动数据;所述UAS控制器将所述待移动数据从所述源物理地址移动到所述目的物理地址。
- 根据权利要求5所述的方法,其特征在于,若所述源物理地址为一个源存储设备的物理地址,且所述目的物理地址为一个目的存储设备的物理地址,则:所述UAS控制器将所述待移动数据从所述源物理地址移动到所述目的物理地址,包括:所述UAS控制器从所述源存储设备读取所述待移动数据,并根据所述目的物理地址将读取的所述待移动数据写入所述目的存储设备中;或者,所述UAS控制器从所述源存储设备读取所述待移动数据,并将读取的所述待移动数据缓存到所述UAS控制器的缓存空间中;从所述缓存空间中读取所述待移动数据,并根据所述目的物理地址将读取的所述待移动数据写入所述目的存储设备中。
- 根据权利要求5所述的方法,其特征在于,若所述源物理地址为一个源存储设备的物理地址,且所述目的物理地址包含至少两个目的存储设备的物理地址;或者,若所述源物理地址包含至少两个源存储设备的物理地址,且所述目的物理地址为一个目的存储设备的物理地址;或者,若所述源物理地址包含至少两个源存储设备的物理地址,且所述目的物理地址包含至少两个目的存储设备的物理地址,则:所述UAS控制器将所述待移动数据从所述源物理地址移动到所述目的物理地址,包括:所述UAS控制器将移动操作拆分为一个源存储设备对应一个目的存储设备的移动子操作;所述UAS控制器针对每个移动子操作,从所述源存储设备读取所述待移动数据,并根据所述目的物理地址将读取的所述待移动数据写入所述目的存储设备中;或者,所述UAS控制器从源存储设备读取所述待移动数据,并将读取的所述待移动数据缓存到所述UAS控制器的缓存空间中,从所述缓存空间中读取所述待移动数据,并根据所述目的物理地址将读取的所述待移动数据写入目的存储设备中。
- 根据权利要求5所述的方法,其特征在于,若所述源物理地址包含一个源存储设备中的至少两个非连续的物理地址,所述目的物理地址为一个目的存储设备中的连续物理地址;或者,所述源物理地址为一个源存储设备中的连续物理地址,所述目的物理地址包含一个目的存储设备中的至少两个非连续的物理地址;或者,所述源物理地址包含一个源存储设备中的至少两个非连续的物理地址,所述目的物理地址包含一个目的存储设备中的至少两个非连续的物理地址,则:所述UAS控制器将所述待移动数据从所述源物理地址移动到所述目的物理地址,包括:所述UAS控制器将移动操作拆分为所述源物理地址中的每一个物理地址对应所述目的物理地址中的每一个物理地址的移动子操作;所述UAS控制器针对每个移动子操作,从所述源存储设备读取对应物理地址的待移动数据,并根据对应目的物理地址将读取的所述待移动数据写入所述目的存储设备中;或者,所述UAS控制器从源存储设备读取对应物理地址的待移动数据,并将读取的待移动数据缓存到所述UAS控制器的缓存空间中,从所述缓存空间中读取待移动数据,并根据对应目的物理地址将读取的所述待移动数据写入目的存储设备中。
- 根据权利要求6~8中任一项所述的方法,其特征在于,若所述目的存储设备是以数据块粒度存储的设备,则所述UAS控制器将所述待移动数据写入目的存储设备,包括:所述UAS控制器根据所述数据块粒度大小,对所述待移动数据进行数据块划分;若划分得到的数据块均为所述数据块粒度大小,则所述UAS控制器将划分得到的各个数据块写入目的存储设备;若划分得到的数据块包括N个数据块粒度大小的数据块和1个小于数据块粒度大小的数据块,则所述UAS控制器将划分得到的所述N个数据块写 入目的存储设备,并将所述1个小于数据块粒度大小的数据块填充为满足数据块粒度大小的数据块并写入目的存储设备。
- 根据权利要求5~9中任一项所述的方法,其特征在于,所述UAS控制器确定从所述源物理地址开始的所述数据大小的数据块为待移动数据之前,还包括:所述UAS控制器确定所述源物理地址和目的物理地址是否超出可操作的地址范围;若超出,则所述UAS控制器向所述用户空间库发送地址越界报告;若未超出,则所述UAS控制器执行确定从所述源物理地址开始的所述数据大小的数据块为待移动数据的步骤。
- 根据权利要求1~10中任一项所述的方法,其特征在于,所述数据移动请求中还包括数据有效标志位,所述数据有效标志位用于表示是否保留源地址上的数据;相应的,所述UAS控制器根据所述源地址、目的地址以及数据大小,将待移动数据从所述源存储设备移动到目的存储设备之后,还包括:所述UAS控制器根据所述数据有效标识位确定是否保留源地址上的数据,若不保存,则将所述源地址上的数据置为无效。
- 一种一体化存储UAS控制器,其特征在于,包括:接收模块,用于接收用户空间库发送的数据移动请求,所述数据移动请求包括源存储设备的源地址、目的存储设备的目的地址以及所需移动的数据大小,所述数据移动请求为所述用户空间库接收到应用程序对所述用户空间库中的数据移动应用程序接口API的调用请求时发送的;数据移动模块,用于根据所述源地址、目的地址以及数据大小,将待移动数据从所述源存储设备移动到目的存储设备。
- 根据权利要求12所述的控制器,其特征在于,所述接收模块,具体用于:接收用户空间库发送的寄存器写请求,所述寄存器写请求包括源存储设备的源地址、目的存储设备的目的地址以及所需移动的数据大小;将所述源地址、目的地址以及数据大小写入寄存器;所述数据移动模块,具体用于:从所述寄存器中读取所述源地址、目的地址以及数据大小,并根据所述源地址、目的地址以及数据大小,将待移动数据从所述源存储设备移动到目 的存储设备。
- 根据权利要求12所述的控制器,其特征在于,所述接收模块,具体用于:接收用户空间库发送的数据移动操作指令,所述数据移动操作指令包括源存储设备的源地址、目的存储设备的目的地址以及所需移动的数据大小。
- 根据权利要求13或14所述的控制器,其特征在于,所述数据移动模块,还用于向寄存器中写入移动操作完成信息,以使所述用户空间库在接收到所述应用程序对所述用户空间库中的检查API的调用请求时读取所述移动操作完成信息并向所述应用程序通知数据移动操作完成。
- 根据权利要求12~15中任一项所述的控制器,其特征在于,所述数据移动模块,具体用于:将所述源地址转换为源物理地址,并将所述目的地址转换为目的物理地址;确定从所述源物理地址开始的所述数据大小的数据块为待移动数据;将所述待移动数据从所述源物理地址移动到所述目的物理地址。
- 根据权利要求16所述的控制器,其特征在于,若所述源物理地址为一个源存储设备的物理地址,且所述目的物理地址为一个目的存储设备的物理地址,则:所述数据移动模块,具体用于:从所述源存储设备读取所述待移动数据,并根据所述目的物理地址将读取的所述待移动数据写入所述目的存储设备中;或者,从所述源存储设备读取所述待移动数据,并将读取的所述待移动数据缓存到所述UAS控制器的缓存空间中;从所述缓存空间中读取所述待移动数据,并根据所述目的物理地址将读取的所述待移动数据写入所述目的存储设备中。
- 根据权利要求16所述的控制器,其特征在于,若所述源物理地址为一个源存储设备的物理地址,且所述目的物理地址包含至少两个目的存储设备的物理地址;或者,若所述源物理地址包含至少两个源存储设备的物理地址,且所述目的物理地址为一个目的存储设备的物理地址;或者,若所述源物理地址包含至少两个源存储设备的物理地址,且所述目的物理地址包含至少两个目的存储设备的物理地址,则:所述数据移动模块,具体用于:将移动操作拆分为一个源存储设备对应一个目的存储设备的移动子操作;针对每个移动子操作,从所述源存储设备读取所述待移动数据,并根据所述目的物理地址将读取的所述待移动数据写入所述目的存储设备中;或者,从源存储设备读取所述待移动数据,并将读取的所述待移动数据缓存到所述UAS控制器的缓存空间中,从所述缓存空间中读取所述待移动数据,并根据所述目的物理地址将读取的所述待移动数据写入目的存储设备中。
- 根据权利要求16所述的控制器,其特征在于,若所述源物理地址包含一个源存储设备中的至少两个非连续的物理地址,所述目的物理地址为一个目的存储设备中的连续物理地址;或者,所述源物理地址为一个源存储设备中的连续物理地址,所述目的物理地址包含一个目的存储设备中的至少两个非连续的物理地址;或者,所述源物理地址包含一个源存储设备中的至少两个非连续的物理地址,所述目的物理地址包含一个目的存储设备中的至少两个非连续的物理地址,则:所述数据移动模块,具体用于:将移动操作拆分为所述源物理地址中的每一个物理地址对应所述目的物理地址中的每一个物理地址的移动子操作;针对每个移动子操作,从所述源存储设备读取对应物理地址的待移动数据,并根据对应目的物理地址将读取的所述待移动数据写入所述目的存储设备中;或者,从源存储设备读取对应物理地址的待移动数据,并将读取的待移动数据缓存到所述UAS控制器的缓存空间中,从所述缓存空间中读取待移动数据,并根据对应目的物理地址将读取的所述待移动数据写入目的存储设备中。
- 根据权利要求17~19中任一项所述的控制器,其特征在于,若所述目的存储设备是以数据块粒度存储的设备,则所述数据移动模块,具体用于:根据所述数据块粒度大小,对所述待移动数据进行数据块划分;若划分得到的数据块均为所述数据块粒度大小,则将划分得到的各个数据块写入目的存储设备;若划分得到的数据块包括N个数据块粒度大小的数据块和1个小于数据块粒度大小的数据块,则将划分得到的所述N个数据块写入目的存储设备, 并将所述1个小于数据块粒度大小的数据块填充为满足数据块粒度大小的数据块并写入目的存储设备。
- 根据权利要求17~20中任一项所述的控制器,其特征在于,所述数据移动模块,还用于:确定所述源物理地址和目的物理地址是否超出可操作的地址范围;若超出,则向所述用户空间库发送地址越界报告;若未超出,则执行确定从所述源物理地址开始的所述数据大小的数据块为待移动数据的步骤。
- 根据权利要求12~21中任一项所述的控制器,其特征在于,所述数据移动请求中还包括数据有效标志位,所述数据有效标志位用于表示是否保留源地址上的数据;相应的,所述数据移动模块,还用于:根据所述数据有效标识位确定是否保留源地址上的数据,若不保存,则将所述源地址上的数据置为无效。
- 一种一体化存储UAS系统,其特征在于,包括:UAS控制器和与所述UAS控制器连接的至少两个存储设备,所述UAS控制器采用权利要求12~22中任一项所述的UAS控制器。
- 根据权利要求23所述的系统,其特征在于,所述至少两个存储设备,包括下述存储设备中的至少两个存储设备:动态随机访问存储器DRAM、非易失性存储器NVM、基于闪存Flash的固态硬盘Flash-based SSD、磁盘HDD。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410240821.2 | 2014-05-30 | ||
CN201410240821.2A CN105446888B (zh) | 2014-05-30 | 2014-05-30 | 存储设备间移动数据的方法、控制器和存储系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2015180649A1 true WO2015180649A1 (zh) | 2015-12-03 |
Family
ID=54698115
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/CN2015/079947 WO2015180649A1 (zh) | 2014-05-30 | 2015-05-27 | 存储设备间移动数据的方法、控制器和存储系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN105446888B (zh) |
WO (1) | WO2015180649A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109324982A (zh) * | 2017-07-31 | 2019-02-12 | 上海华为技术有限公司 | 一种数据处理方法以及数据处理装置 |
CN115567590A (zh) * | 2022-11-17 | 2023-01-03 | 鹏城实验室 | 数据包调度方法、装置、设备及可读存储介质 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107870874B (zh) * | 2016-09-23 | 2020-12-15 | 华为数字技术(成都)有限公司 | 一种数据写入控制方法及存储设备 |
CN108572792B (zh) * | 2017-06-13 | 2021-06-11 | 北京金山云网络技术有限公司 | 数据存储方法、装置、电子设备及计算机可读存储介质 |
CN107632795B (zh) * | 2017-10-25 | 2020-11-24 | 奇酷互联网络科技(深圳)有限公司 | 移动数据的方法、设备、移动终端以及计算机存储介质 |
CN108762666B (zh) * | 2018-04-13 | 2020-07-03 | 北京青云科技股份有限公司 | 一种存储系统的访问方法、系统、介质及设备 |
CN109408404B (zh) * | 2018-10-15 | 2020-10-09 | 深圳忆联信息系统有限公司 | 基于tf卡的逆向查表方法、装置和计算机设备 |
CN111209231B (zh) * | 2018-11-21 | 2021-05-11 | 上海寒武纪信息科技有限公司 | 数据处理方法、装置及相关产品 |
CN111209243B (zh) * | 2018-11-21 | 2022-12-02 | 上海寒武纪信息科技有限公司 | 数据处理装置、方法及相关产品 |
CN111210012B (zh) * | 2018-11-21 | 2022-12-09 | 上海寒武纪信息科技有限公司 | 数据处理方法、装置及相关产品 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050278492A1 (en) * | 2004-06-10 | 2005-12-15 | Stakutis Christopher J | Method, system, and program for migrating source data to target data |
US20090150641A1 (en) * | 2007-12-06 | 2009-06-11 | David Flynn | Apparatus, system, and method for efficient mapping of virtual and physical addresses |
CN101694635A (zh) * | 2009-10-22 | 2010-04-14 | 中兴通讯股份有限公司 | 基于虚拟磁带库备份的控制方法、系统及近线存储节点 |
CN102521138A (zh) * | 2011-11-28 | 2012-06-27 | 成都市华为赛门铁克科技有限公司 | 数据迁移触发方法和装置 |
CN103763383A (zh) * | 2014-01-27 | 2014-04-30 | 西安雷迪维护系统设备有限公司 | 一体化云存储系统及其存储方法 |
-
2014
- 2014-05-30 CN CN201410240821.2A patent/CN105446888B/zh active Active
-
2015
- 2015-05-27 WO PCT/CN2015/079947 patent/WO2015180649A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050278492A1 (en) * | 2004-06-10 | 2005-12-15 | Stakutis Christopher J | Method, system, and program for migrating source data to target data |
US20090150641A1 (en) * | 2007-12-06 | 2009-06-11 | David Flynn | Apparatus, system, and method for efficient mapping of virtual and physical addresses |
CN101694635A (zh) * | 2009-10-22 | 2010-04-14 | 中兴通讯股份有限公司 | 基于虚拟磁带库备份的控制方法、系统及近线存储节点 |
CN102521138A (zh) * | 2011-11-28 | 2012-06-27 | 成都市华为赛门铁克科技有限公司 | 数据迁移触发方法和装置 |
CN103763383A (zh) * | 2014-01-27 | 2014-04-30 | 西安雷迪维护系统设备有限公司 | 一体化云存储系统及其存储方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109324982A (zh) * | 2017-07-31 | 2019-02-12 | 上海华为技术有限公司 | 一种数据处理方法以及数据处理装置 |
CN115567590A (zh) * | 2022-11-17 | 2023-01-03 | 鹏城实验室 | 数据包调度方法、装置、设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105446888B (zh) | 2018-10-12 |
CN105446888A (zh) | 2016-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2015180649A1 (zh) | 存储设备间移动数据的方法、控制器和存储系统 | |
KR101625777B1 (ko) | 휘발성 메모리 및 비휘발성 메모리 간의 코드 및 데이터 저장소들을 분산하기 위한 방법 및 장치 | |
CN105740164B (zh) | 支持缓存一致性的多核处理器、读写方法、装置及设备 | |
US9928168B2 (en) | Non-volatile random access system memory with DRAM program caching | |
JP5752989B2 (ja) | プロセッサ・メインメモリのための持続性メモリ | |
KR102446733B1 (ko) | 스토리지 장치 및 스토리지 장치를 포함하는 전자 장치 | |
KR102147993B1 (ko) | 불휘발성 메모리 시스템 및 그것의 동작 방법 | |
JP2019067417A (ja) | 最終レベルキャッシュシステム及び対応する方法 | |
US20160283385A1 (en) | Fail-safe write back caching mode device driver for non volatile storage device | |
KR102106261B1 (ko) | 메모리 컨트롤러의 작동 방법과 이를 포함하는 장치들의 작동 방법들 | |
TWI750243B (zh) | 非揮發性記憶體儲存裝置 | |
KR20130096881A (ko) | 플래시 메모리 장치 | |
CN110187832B (zh) | 一种数据操作的方法、设备和系统 | |
US20190042153A1 (en) | Mass storage device capable of fine grained read and/or write operations | |
US20180095884A1 (en) | Mass storage cache in non volatile level of multi-level system memory | |
TW201443646A (zh) | 用於存取記憶體之系統及方法 | |
US20190042415A1 (en) | Storage model for a computer system having persistent system memory | |
US10318418B2 (en) | Data storage in a mobile device with embedded mass storage device | |
US10185501B2 (en) | Method and apparatus for pinning memory pages in a multi-level system memory | |
WO2016119618A1 (zh) | 一种远端内存分配方法、装置和系统 | |
US20170153994A1 (en) | Mass storage region with ram-disk access and dma access | |
JP6254986B2 (ja) | 情報処理装置、アクセスコントローラ、および情報処理方法 | |
TWI530787B (zh) | 電子裝置以及資料寫入方法 | |
TWI521349B (zh) | 攜帶式電子裝置資料寫入方法 | |
TW202349214A (zh) | 輸入/輸出裝置的位址變換預取出 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 15799033 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 15799033 Country of ref document: EP Kind code of ref document: A1 |