CN109144399B - 一种数据存储方法、装置及电子设备 - Google Patents
一种数据存储方法、装置及电子设备 Download PDFInfo
- Publication number
- CN109144399B CN109144399B CN201710456360.6A CN201710456360A CN109144399B CN 109144399 B CN109144399 B CN 109144399B CN 201710456360 A CN201710456360 A CN 201710456360A CN 109144399 B CN109144399 B CN 109144399B
- Authority
- CN
- China
- Prior art keywords
- storage unit
- stored
- user data
- storing
- type
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0674—Disk device
- G06F3/0676—Magnetic disk device
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供了一种数据存储方法、装置及电子设备。该电子设备包括至少一个硬盘,每个硬盘包括多个存储单元,上述多个存储单元分为第一类存储单元和第二类存储单元。该方法包括:获得待存储用户数据;判断第一类存储单元中用于存储用户数据的空间是否已存满;如果未存满,则将待存储用户数据存储至第一类存储单元中,获得待存储非用户数据,将待存储非用户数据存储至第二类存储单元中;如果已存满,则将待存储用户数据存储至第二类存储单元中,获得待存储非用户数据,将待存储非用户数据存储至第一类存储单元中。应用本申请实施例提供的方案,能够减少存储数据时所耗费的时间。
Description
技术领域
本申请涉及数据存储技术领域,特别是涉及一种数据存储方法、装置及电子设备。
背景技术
常见的固态硬盘(Solid State Drive,SSD)是用固态电子存储芯片阵列制成的硬盘,包括控制单元和存储单元。每个存储单元包含多个块,每个块包含多个页。电子设备在向存储单元中存储数据时,通常以页为单位存储数据。
同时,电子设备在存储用户数据时,会不断产生逻辑地址与物理地址的映射(Logic to Physical,L2P)数据、系统数据(系统掉电次数、用户数据量等)等非用户数据。用户数据和非用户数据这两种数据均需要存储至硬盘的存储单元中。
例如,图1所述为一种固态硬盘(Nand Flash)的阵列结构示意图。图中的每个圆点表示一个存储单元,该SSD包含CH0~CH3四个通道以及CE0~CE7八个片选管脚,即CExCHn表示一个存储单元。
现有技术中,用户数据和非用户数据被分配在每个存储单元的不同块中,也就是说,每个存储单元既存储用户数据又存储非用户数据。在存储一种数据时,会操作到每个存储单元,例如,将该数据划分成若干小份,依次将每个小份存储在CE0CH0的第一个块的第一个页……CE0CH3的第一个块的第一个页、CE1CH0的第一个块的第一个页……CE1CH3的第一个块的第一个页……CE7CH3的第一个块的第一个页……依此循环,直至所有的小份数据均存储完毕。这样,在存储一种数据时就不能执行对另一种数据的存储,导致在同一时间段只能对一种数据进行存储。例如,在存储用户数据时,无法执行对非用户数据的存储,只能等待用户数据存储完毕之后,再存储非用户数据。可见,采用现有的数据存储方法存储数据时需要耗费较长的时间。
发明内容
本申请实施例的目的在于提供了一种数据存储方法、装置及电子设备,以减少存储数据时所耗费的时间。具体的技术方案如下。
为了达到上述目的,本申请实施例提供一种数据存储方法,应用于电子设备,所述电子设备包括至少一个硬盘,每个硬盘包括多个存储单元,所述多个存储单元分为第一类存储单元和第二类存储单元;所述方法包括:
获得待存储用户数据;
判断所述第一类存储单元中用于存储用户数据的空间是否已存满;
如果未存满,则将所述待存储用户数据存储至所述第一类存储单元中,获得待存储非用户数据,将所述待存储非用户数据存储至所述第二类存储单元中;
如果已存满,则将所述待存储用户数据存储至所述第二类存储单元中,获得待存储非用户数据,将所述待存储非用户数据存储至所述第一类存储单元中。
可选的,所述将所述待存储用户数据存储至所述第一类存储单元中,获得待存储非用户数据,将所述待存储非用户数据存储至所述第二类存储单元中的步骤,包括:
通过第一接口将所述待存储用户数据存储至所述第一类存储单元中,获得待存储非用户数据,通过第二接口将所述待存储非用户数据存储至所述第二类存储单元中;其中,所述第一接口和第二接口分别由不同的处理器控制;
所述将所述待存储用户数据存储至所述第二类存储单元中,获得待存储非用户数据,将所述待存储非用户数据存储至所述第一类存储单元中的步骤,包括:
通过所述第二接口将所述待存储用户数据存储至所述第二类存储单元中,获得待存储非用户数据,通过所述第一接口将所述待存储非用户数据存储至所述第一类存储单元中。
可选的,所述第一类存储单元包括用于存储用户数据的第一类块和用于存储非用户数据的第二类块,所述第二类存储单元包括用于存储用户数据的第一类块和用于存储非用户数据的第二类块;
所述将所述待存储用户数据存储至所述第一类存储单元中,获得待存储非用户数据,将所述待存储非用户数据存储至所述第二类存储单元中的步骤,包括:
将所述待存储用户数据存储至所述第一类存储单元的第一类块中,获得待存储非用户数据,将所述待存储非用户数据存储至所述第二类存储单元的第二类块中;
所述将所述待存储用户数据存储至所述第二类存储单元中,获得待存储非用户数据,将所述待存储非用户数据存储至所述第一类存储单元中的步骤,包括:
将所述待存储用户数据存储至所述第二类存储单元的第一类块中,获得待存储非用户数据,将所述待存储非用户数据存储至所述第一类存储单元的第二类块中。
可选的,所述将所述待存储用户数据存储至所述第一类存储单元的第一类块中的步骤,包括:
将所述待存储用户数据作为待存储数据,将所述第一类存储单元的第一类块作为待存储空间,按照预设的数据存储规则,将所述待存储数据存储至所述待存储空间中;
所述将所述待存储非用户数据存储至所述第二类存储单元的第二类块中的步骤,包括:
将所述待存储非用户数据作为待存储数据,将所述第二类存储单元的第二类块作为待存储空间,按照预设的数据存储规则,将所述待存储数据存储至所述待存储空间中;
其中,所述按照预设的数据存储规则,将所述待存储数据存储至所述待存储空间中的步骤,包括:
按照预设的数据量划分单位,对所述待存储数据进行划分,获得各个单位数据;
获得所述待存储空间的末尾存储单元、末尾块中的末尾页;
将所述单位数据中的第一个单位数据作为目标数据,将所述末尾存储单元作为目标存储单元,将所述末尾块和末尾页分别作为目标块和目标页;
将所述目标数据存储至所述目标存储单元目标块的目标页中;
在所述单位数据不是最后一个单位数据的情况下,将所述单位数据中的下一个单位数据更新为目标数据,在所述目标存储单元不是所述待存储空间的最后一个存储单元的情况下,按照预设的存储单元排列顺序,将所述待存储空间中所述目标存储单元的下一个存储单元更新为目标存储单元,在所述目标存储单元是所述待存储空间的最后一个存储单元的情况下,按照预设的存储单元排列顺序,将所述待存储空间中的第一个存储单元更新为目标存储单元,按照预设的块和页更新规则更新所述目标块和目标页,返回执行所述将所述目标数据存储至所述目标存储单元目标块的目标页中的步骤;其中,所述块和页更新规则为:在目标页不是最后一个页的情况下,将目标页的下一个页更新为目标页,在目标页是最后一个页的情况下,将第一个页更新为目标页,将目标块的下一个块更新为目标块。
可选的,所述判断所述第一类存储单元中用于存储用户数据的空间是否已存满的步骤,包括:
判断所述第一类存储单元中空闲的第一类块的数量是否少于预设第一数值,如果是,则判定所述第一类存储单元中用于存储用户数据的空间已存满。
可选的,当判断出所述第一类存储单元中用于存储用户数据的空间未存满时,所述方法还包括:
判断所述第二类存储单元中的第一类块是否满足预设的第一回收条件;如果是,则对所述第二类存储单元中的第一类块进行回收;
判断所述第二类存储单元中的第二类块是否满足预设的第二回收条件;如果是,则对所述第二类存储单元中的第二类块进行回收;
当判断出所述第一类存储单元中用于存储用户数据的空间已存满时,所述方法还包括:
判断所述第一类存储单元中的第一类块是否满足预设的第一回收条件;如果是,则对所述第一类存储单元中的第一类块进行回收;
判断所述第一类存储单元中的第二类块是否满足预设的第二回收条件;如果是,则对所述第一类存储单元中的第二类块进行回收。
可选的,所述第一类存储单元所在的通道和第二类存储单元所在的通道不同。
为了达到上述目的,本申请实施例提供一种数据存储装置,应用于电子设备,所述电子设备包括至少一个硬盘,每个硬盘包括多个存储单元,所述多个存储单元分为第一类存储单元和第二类存储单元;所述装置包括:
获得模块,用于获得待存储用户数据;
判断模块,用于判断所述第一类存储单元中用于存储用户数据的空间是否已存满;
第一存储模块,用于当所述第一类存储单元中用于存储用户数据的空间未存满时,将所述待存储用户数据存储至所述第一类存储单元中,获得待存储非用户数据,将所述待存储非用户数据存储至所述第二类存储单元中;
第二存储模块,用于当所述第一类存储单元中用于存储用户数据的空间已存满时,将所述待存储用户数据存储至所述第二类存储单元中,获得待存储非用户数据,将所述待存储非用户数据存储至所述第一类存储单元中。
可选的,所述第一存储模块,具体用于:
通过第一接口将所述待存储用户数据存储至所述第一类存储单元中,获得待存储非用户数据,通过第二接口将所述待存储非用户数据存储至所述第二类存储单元中;其中,所述第一接口和第二接口分别由不同的处理器控制;
所述第二存储模块,具体用于:
通过所述第二接口将所述待存储用户数据存储至所述第二类存储单元中,获得待存储非用户数据,通过所述第一接口将所述待存储非用户数据存储至所述第一类存储单元中。
可选的,所述第一类存储单元包括用于存储用户数据的第一类块和用于存储非用户数据的第二类块,所述第二类存储单元包括用于存储用户数据的第一类块和用于存储非用户数据的第二类块;
所述第一存储模块,具体用于:
将所述待存储用户数据存储至所述第一类存储单元的第一类块中,获得待存储非用户数据,将所述待存储非用户数据存储至所述第二类存储单元的第二类块中;
所述第二存储模块,具体用于:
将所述待存储用户数据存储至所述第二类存储单元的第一类块中,获得待存储非用户数据,将所述待存储非用户数据存储至所述第一类存储单元的第二类块中。
可选的,所述第一存储模块,包括:
第一用户数据存储子模块,用于将所述待存储用户数据存储至所述第一类存储单元的第一类块中;
第一非用户数据存储子模块,用于将所述待存储非用户数据存储至所述第二类存储单元的第二类块中;
所述第一用户数据存储子模块,具体用于:
将所述待存储用户数据作为待存储数据,将所述第一类存储单元的第一类块作为待存储空间,触发存储子模块将所述待存储数据存储至所述待存储空间中;
所述第一非用户数据存储子模块,具体用于:
将所述待存储非用户数据作为待存储数据,将所述第二类存储单元的第二类块作为待存储空间,触发存储子模块将所述待存储数据存储至所述待存储空间中;
其中,所述存储子模块,用于:
按照预设的数据量划分单位,对所述待存储数据进行划分,获得各个单位数据;
获得所述待存储空间的末尾存储单元、末尾块中的末尾页;
将所述单位数据中的第一个单位数据作为目标数据,将所述末尾存储单元作为目标存储单元,将所述末尾块和末尾页分别作为目标块和目标页;
将所述目标数据存储至所述目标存储单元目标块的目标页中;
在所述单位数据不是最后一个单位数据的情况下,将所述单位数据中的下一个单位数据更新为目标数据,在所述目标存储单元不是所述待存储空间的最后一个存储单元的情况下,按照预设的存储单元排列顺序,将所述待存储空间中所述目标存储单元的下一个存储单元更新为目标存储单元,在所述目标存储单元是所述待存储空间的最后一个存储单元的情况下,按照预设的存储单元排列顺序,将所述待存储空间中的第一个存储单元更新为目标存储单元,按照预设的块和页更新规则更新所述目标块和目标页,将所述目标数据存储至所述目标存储单元目标块的目标页中;其中,所述块和页更新规则为:在目标页不是最后一个页的情况下,将目标页的下一个页更新为目标页,在目标页是最后一个页的情况下,将第一个页更新为目标页,将目标块的下一个块更新为目标块。
可选的,所述判断模块,具体用于:
判断所述第一类存储单元中空闲的第一类块的数量是否少于预设第一数值,如果是,则判定所述第一类存储单元中用于存储用户数据的空间已存满。
可选的,所述装置还包括:
第一回收模块,用于当判断出所述第一类存储单元中用于存储用户数据的空间未存满时,判断所述第二类存储单元中的第一类块是否满足预设的第一回收条件;如果是,则对所述第二类存储单元中的第一类块进行回收;
第二回收模块,用于判断所述第二类存储单元中的第二类块是否满足预设的第二回收条件;如果是,则对所述第二类存储单元中的第二类块进行回收;
第三回收模块,用于当判断出所述第一类存储单元中用于存储用户数据的空间已存满时,判断所述第一类存储单元中的第一类块是否满足预设的第一回收条件;如果是,则对所述第一类存储单元中的第一类块进行回收;
第四回收模块,用于判断所述第一类存储单元中的第二类块是否满足预设的第二回收条件;如果是,则对所述第一类存储单元中的第二类块进行回收。
为了达到上述目的,本申请实施例提供一种电子设备,包括处理器、通信接口、至少一个硬盘和通信总线,其中,处理器,通信接口,硬盘通过通信总线完成相互间的通信;
硬盘,用于存放计算机程序;每个硬盘包括多个存储单元,所述多个存储单元分为第一类存储单元和第二类存储单元;
处理器,用于执行存储器上所存放的程序时,实现本申请实施例提供的数据存储方法。其中,该数据存储方法包括:
获得待存储用户数据;
判断所述第一类存储单元中用于存储用户数据的空间是否已存满;
如果未存满,则将所述待存储用户数据存储至所述第一类存储单元中,获得待存储非用户数据,将所述待存储非用户数据存储至所述第二类存储单元中;
如果已存满,则将所述待存储用户数据存储至所述第二类存储单元中,获得待存储非用户数据,将所述待存储非用户数据存储至所述第一类存储单元中。
为了达到上述目的,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现本申请实施例提供的数据存储方法。其中,该数据存储方法包括:
获得待存储用户数据;
判断所述第一类存储单元中用于存储用户数据的空间是否已存满;
如果未存满,则将所述待存储用户数据存储至所述第一类存储单元中,获得待存储非用户数据,将所述待存储非用户数据存储至所述第二类存储单元中;
如果已存满,则将所述待存储用户数据存储至所述第二类存储单元中,获得待存储非用户数据,将所述待存储非用户数据存储至所述第一类存储单元中。
可见,本申请实施例提供的数据存储方法、装置及电子设备,可以获得待存储用户数据,判断第一类存储单元中用于存储用户数据的空间是否已存满;如果未存满,则将待存储用户数据存储至第一类存储单元中,获得待存储非用户数据,将待存储非用户数据存储至第二类存储单元中;如果已存满,则将待存储用户数据存储至第二类存储单元中,获得待存储非用户数据,将待存储非用户数据存储至第一类存储单元中。其中,第一类存储单元和第二类存储单元为电子设备硬盘中的两种存储单元。
也就是说,本申请实施例可以将待存储用户数据存储至第一类存储单元中,将待存储非用户数据存储至第二类存储单元中,当第一类存储单元中用于存储用户数据的空间已存满时,将待存储用户数据存储至第二类存储单元中,将非用户数据存储至第一类存储单元中。这样,在存储用户数据的同时也能存储非用户数据,或者存储非用户数据的同时也能存储用户数据,两者的存储过程互不影响,无需等待一种数据存储完成再存储另一种数据。因此,应用本申请实施例提供的方案,能够减少存储数据时所耗费的时间。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为一种固态硬盘(Nand Flash)的阵列结构示意图;
图2为本申请实施例提供的数据存储方法的一种流程示意图;
图2a和图2b为硬盘存储单元的两种阵列划分方式示意图;
图3a为一种常见的固态硬盘中控制器与通道的交互关系示意图;
图3b为本申请实施例提供的固态硬盘中控制器与通道的一种交互关系示意图;
图3c为本申请实施例提供的控制器与通道的另一种交互关系示意图;
图4为本申请实施例提供的数据存储装置的一种结构示意图;
图5为本申请实施例提供的电子设备的一种结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整的描述。显然,所描述的实施例仅仅是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提供了一种数据存储方法、装置及电子设备,能够减少存储数据时所耗费的时间。下面通过具体实施例,对本申请进行详细说明。
图2为本申请实施例提供的数据存储方法的一种流程示意图,该方法应用于电子设备,该电子设备可以为智能手机、平板电脑、笔记本电脑等便携式设备,也可以为普通计算机、服务器等设备。
本实施例中,电子设备包括至少一个硬盘,每个硬盘包括多个存储单元,所述多个存储单元分为第一类存储单元和第二类存储单元。其中,第一类存储单元中的各个存储单元可以均不同于第二类存储单元中的各个存储单元。在不影响相互独立存储数据的情况下,第一类存储单元和第二类存储单元中的存储单元可以有少量重叠。
上述硬盘可以理解为固态硬盘(Solid State Drive,SSD)。SSD是用固态电子存储芯片阵列制成的硬盘,通常包括控制器和存储单元。控制器用于将接收的用户数据分配至对应的存储单元。存储单元用于存储用户数据和其他非用户数据。例如,存储单元可以为闪存芯片(Nand flash)。其中,每个存储单元内部包含多个块,每个块包含多个页。上述硬盘还可以包括缓存,缓存可以由动态随机存取存储芯片(Dynamic Random Access Memory,DRAM)实现。电子设备在向存储单元中存储数据时,通常以页为单位存储数据。固态硬盘在接口的规范和定义、功能及使用方法上与普通硬盘的完全相同,在产品外形和尺寸上也完全与普通硬盘一致,被广泛应用于军事、车载、工控、视频监控、网络监控、网络终端、电力、医疗、航空、导航设备等领域。
具体的,本实施例的数据存储方法可以是由控制器执行的。例如,在图1所示固态硬盘的结构示意图中,控制器可以通过选择不同的通道(Channel,CH)和不同的片选管脚(Chip Enable,CE),将数据存储至对应的存储单元。其中,当片选管脚为低电平时为选中状态,可以进行读写操作。
通常,硬盘中可以包含4个通道、8个通道或更多个通道,每个通道下面最多可以挂接8个CE。在将硬盘的存储单元划分成第一类存储单元和第二类存储单元时,可以将所有的存储单元按照数量进行平分,当然也可以不做平分处理。在划分时,可以按照通道来划分,例如图2a中的划分方式,可以按照片选管脚来划分,例如图2b中的划分方式,其中,每个虚线框为一类存储单元。
具体的,上述数据存储方法包括如下步骤:
步骤S201:获得待存储用户数据。
具体的,作为执行主体的电子设备在获得待存储用户数据时,可以是接收其他电子设备发送的待存储用户数据,也可以是接收用户输入的待存储用户数据。
步骤S202:判断第一类存储单元中用于存储用户数据的空间是否已存满,如果未存满,则执行步骤S203;如果已存满,则执行步骤S204。
具体的,判断第一类存储单元中用于存储用户数据的空间是否已存满时,可以判断第一类存储单元中用于存储用户数据的空闲块的数量是否少于预设第一数量,如果是,则判断第一类存储单元中用于存储用户数据的空间已存满。其中,第一数量可以为预设值,例如为10个或其他值。
步骤S203:将待存储用户数据存储至第一类存储单元中,获得待存储非用户数据,将待存储非用户数据存储至第二类存储单元中。
具体的,将待存储用户数据存储至第一类存储单元中,可以采用多种存储方式,例如,可以将待存储用户数据均匀地存储至第一类存储单元的各个存储单元中,也可以将待存储用户数据存储至第一类存储单元中指定的存储单元中,本实施例不做具体限定。
需要说明的是,在存储用户数据时,会不断生成逻辑地址与物理地址的映射(Logic to Physical,L2P)数据等非用户数据。非用户数据还可以包括系统数据,例如所存储的用户数据量、系统掉电次数等。非用户数据也需要存储至硬盘的存储单元中。
为了提高数据存储的效率,作为一种具体实施方式,获得待存储非用户数据的步骤,可以包括:
判断当前生成的非用户数据的数据量是否大于预设数据量阈值,如果是,则将当前生成的非用户数据确定为待存储非用户数据;如果否,则不予处理。其中,预设数据量阈值可以为默认值。
具体的,上述不断生成的非用户数据可以暂时存储在硬盘的缓存中。当缓存中的非用户数据的数据量大于预设数据量阈值时,将这部分非用户数据确定为待存储非用户数据。另外,当长时间没有存储用户数据,即没有生成L2P数据时,也可以直接将缓存中的非用户数据确定为待存储的非用户数据。
具体的,将待存储非用户数据存储至第二类存储单元中,可以采用多种存储方式,例如,可以将待存储非用户数据均匀地存储至第二类存储单元的各个存储单元中,也可以将待存储非用户数据存储至第二类存储单元中指定的存储单元中,本实施例不做具体限定。
需要说明的是,将待存储用户数据存储至第一类存储单元的过程中,如果获得了待存储非用户数据,则将待存储非用户数据存储至第二类存储单元中,无需等待用户数据存储完毕,因此可以节省存储非用户数据的时间。
步骤S204:将待存储用户数据存储至第二类存储单元中,获得待存储非用户数据,将待存储非用户数据存储至第一类存储单元中。
可以理解的是,当第一类存储单元中用于存储用户数据的空间已存满时,可以将待存储用户数据存储至第二类存储单元中,在存储待存储用户数据时产生的非用户数据存储至第一类存储单元中。这样能够将用户数据的存储和非用户数据的存储进行分流,分别独立存储,使两者互不影响,进而节省数据存储所耗费的时间,提高存储效率。
具体的,将待存储用户数据存储至第二类存储单元中的方式,可以与将待存储用户数据存储至第一类存储单元中的方式相同,此处不再赘述。将待存储非用户数据存储至第一类存储单元中的方式,可以与将待存储非用户数据存储至第二类存储单元中的方式相同,此处不再赘述。
需要说明的是,第一类存储单元和第二类存储单元中均包含用于存储用户数据的空间和用于存储非用户数据的空间。例如,已知每个存储单元中包含1024个块,可以将其中的1000个块用于存储用户数据,将24个块用于存储非用户数据。
根据上述存储过程可知,与第一类存储单元中用户数据对应的非用户数据存储在第二类存储单元上,与第二类存储单元中用户数据对应的非用户数据存储在第一类存储单元上,这样能够实现将用户数据与非用户数据的存储位置进行分开,避免存储数据时的等待过程,节省存储耗时。
由上述内容可知,本实施例可以将待存储用户数据存储至第一类存储单元中,将待存储非用户数据存储至第二类存储单元中,当第一类存储单元中用于存储用户数据的空间已存满时,将待存储用户数据存储至第二类存储单元中,将非用户数据存储至第一类存储单元中。这样,在存储用户数据的同时也能存储非用户数据,或者存储非用户数据的同时也能存储用户数据,两者的存储过程互不影响,无需等待一种数据存储完成再存储另一种数据。因此,应用本实施例提供的方案,能够减少存储数据时所耗费的时间。
另外,常见的SSD控制器有单核和多核两种类型。在多核类型中,控制器至少包含两个用于向存储单元中存储数据的CPU,每个CPU采用对于的接口向存储单元中存储数据。图3a为一种常见的多核SSD中控制器与通道的交互关系示意图。在该图所示的SSD中,控制器包含用于接收用户数据的Sata Phy接口和用于向存储单元中存储数据的Flash Phy1接口和Flash Phy2接口。当然,该控制器还可以包含其他接口。其中,对于的CPU可以分别通过Flash Phy1接口和Flash Phy2接口访问CH0~CH3通道。控制器通过Flash Phy1接口向存储单元中存储一种数据时,由于需要操作到所有的存储单元,因此无法向存储单元中存储另一种数据。控制器通过Flash Phy2接口向存储单元中存储一种数据的过程也一样。
为了减少存储数据时所耗费的时间,本实施例将硬盘中的存储单元重新划分为两类,使Flash Phy1接口和Flash Phy2接口分别控制不同类的存储单元。
为了进一步提高数据存储的效率,在划分存储单元时可以按照通道来进行划分,即使第一类存储单元所在的通道和第二类存储单元所在的通道不同。
下面举例说明。在图3b所示硬盘中包含4个通道,图中将这4个通道下的存储单元按通道进行了划分,其中Flash Phy1接口控制CH0和CH1下的存储单元,Flash Phy2接口控制CH2和CH3下的存储单元。图3c所示硬盘中包含8个通道,图中将这8个通道下的存储单元也按通道进行了划分,其中Flash Phy1接口控制CH0~CH3下的存储单元,Flash Phy2接口控制CH4~CH7下的存储单元。
需要说明的是,电子设备在向存储单元中存储数据时,通常以页为单位存储数据。这样就需要将待存储数据划分成多个小份,将一份数据存储至一个存储单元的页中的过程需要耗费一定的时间。如果各个存储单元所在的通道不同,在将一份数据存储至一个通道上的存储单元时,紧接着可以将另一份数据存储至另一个通道的存储单元中,这样为第一个通道上的存储单元存储数据留出了时间,向第二个通道上的存储单元存储数据时也无需等待第一个通道上的存储单元完成数据的存储过程,能够进一步节省数据存储时所耗费的时间,提高数据存储的效率。
在图2所示实施例的一种实施方式中,步骤S203中将待存储用户数据存储至第一类存储单元中,获得待存储非用户数据,将待存储非用户数据存储至第二类存储单元中的步骤,可以包括:
通过第一接口将待存储用户数据存储至第一类存储单元中,获得待存储非用户数据,通过第二接口将待存储非用户数据存储至第二类存储单元中。其中,第一接口和第二接口分别由不同的处理器控制。
步骤S204中将待存储用户数据存储至第二类存储单元中,获得待存储非用户数据,将待存储非用户数据存储至第一类存储单元中的步骤,可以包括:
通过第二接口将待存储用户数据存储至第二类存储单元中,获得待存储非用户数据,通过第一接口将待存储非用户数据存储至第一类存储单元中。
可以理解的是,为了实现存储用户数据和存储非用户数据之间的独立处理,互不影响,可以分别通过两个接口存储用户数据和非用户数据。
以图3b所示控制器为例说明上述数据存储过程。控制器通过Sata Phy接口接收用户数据,判断通道CH0和CH1对应的第一类存储单元上用于存储用户数据的空间是否已存满,并确定判断结果为未存满,则可以将上述用户数据通过Flash Phy1接口存储至通道CH0和CH1对应的第一类存储单元上。当检测到非用户数据的数据量大于预设数据量阈值时,将非用户数据通过FlashPhy2接口存储至通道CH2和CH3对应的第二类存储单元上。
可见,本实施例可以分别通过不同的接口独立地将待存储数据存储至不同类别的存储单元上,实现用户数据和非用户数据的分流,防止用户数据和非用户数据存储时的冲突,节省存储数据所耗费的时间,提高了SSD的性能。
在图2所述实施例的另一实施方式中,第一类存储单元可以包括用于存储用户数据的第一类块和用于存储非用户数据的第二类块,第二类存储单元可以包括用于存储用户数据的第一类块和用于存储非用户数据的第二类块。
也就是说,第一类存储单元或第二类存储单元的各个存储单元中,一部分块为用于存储用户数据的块,另一部分块为用于存储非用户数据的块。每个存储单元中第一类块和第二类块的数量可以是预设的。在初始时,第一类块和第二类块的序号可以是预先设置好的,但是随着数据的不断存储,块出现了回收,那么第一类块和第二类块的序号可能就不固定了。
这样,步骤S203,将待存储用户数据存储至第一类存储单元中,获得待存储非用户数据,将待存储非用户数据存储至第二类存储单元中的步骤,可以包括:
将待存储用户数据存储至所述第一类存储单元的第一类块中,获得待存储非用户数据,将待存储非用户数据存储至第二类存储单元的第二类块中。
步骤S204,将待存储用户数据存储至第二类存储单元中,获得待存储非用户数据,将待存储非用户数据存储至第一类存储单元中的步骤,可以包括:
将待存储用户数据存储至第二类存储单元的第一类块中,获得待存储非用户数据,将待存储非用户数据存储至第一类存储单元的第二类块中。
具体的,步骤S203中将待存储用户数据存储至第一类存储单元的第一类块中的步骤,可以包括:
将待存储用户数据作为待存储数据,将第一类存储单元的第一类块作为待存储空间,按照预设的数据存储规则,将待存储数据存储至待存储空间中。
步骤S203中将待存储非用户数据存储至第二类存储单元的第二类块中的步骤,可以包括:
将待存储非用户数据作为待存储数据,将第二类存储单元的第二类块作为待存储空间,按照预设的数据存储规则,将待存储数据存储至待存储空间中。
其中,按照预设的数据存储规则,将待存储数据存储至待存储空间中的步骤,包括以下步骤1~步骤5:
步骤1:按照预设的数据量划分单位,对所述待存储数据进行划分,获得各个单位数据。
其中,预设的数据量划分单位可以为存储单元中页的存储容量。例如,当页的容量为4kB时,数据量划分单位可以为4kB。当页的容量为8kB时,数据量划分单位可以为8kB。
对待存储数据进行划分,获得各个单位数据,可以理解为将待存储数据划分为各个小份数据。
步骤2:获得待存储空间的末尾存储单元、末尾块中的末尾页。
需要说明的是,本实施例中待存储空间是指对应类别的存储单元中对应类别的块区域。例如,将第二类存储单元的第二类块作为待存储空间时,待存储空间即是指将第二类存储单元的各个存储单元中第二类块所对应的空间。
具体的,可以从保存的末尾存储位置中获得待存储单元的末尾存储单元、末尾块中的末尾页。
步骤3:将所述单位数据中的第一个单位数据作为目标数据,将所述末尾存储单元作为目标存储单元,将所述末尾块和末尾页分别作为目标块和目标页。
步骤4:将所述目标数据存储至所述目标存储单元目标块的目标页中。
步骤5:在所述单位数据不是最后一个单位数据的情况下,将所述单位数据中的下一个单位数据更新为目标数据,在所述目标存储单元不是所述待存储空间的最后一个存储单元的情况下,按照预设的存储单元排列顺序,将所述待存储空间中所述目标存储单元的下一个存储单元更新为目标存储单元,在所述目标存储单元是所述待存储空间的最后一个存储单元的情况下,按照预设的存储单元排列顺序,将所述待存储空间中的第一个存储单元更新为目标存储单元,按照预设的块和页更新规则更新所述目标块和目标页,返回步骤4,即将所述目标数据存储至所述目标存储单元目标块的目标页中。
其中,上述存储单元排列顺序可以为:按照片选管脚序号的大小顺序排列各个存储单元,具有相同片选管脚序号的存储单元按照通道序号的大小顺序进行排列。
例如,以图2a所示硬盘结构为例,当上述待存储空间为第一类存储单元第一类块时,上述待存储空间中各个存储单元的排列顺序可以为以下顺序:
CE0CH0,CE0CH1,CE1CH0,CE1CH1,
CE2CH0,CE2CH1,CE3CH0,CE3CH1,
CE4CH0,CE4CH1,CE5CH0,CE5CH1,
CE6CH0,CE6CH1,CE7CH0,CE7CH1。
其中,在CExCHn中,CEx为片选管脚序号,CHn为通道序号。并且,上述CE0CH0为该待存储空间中的第一个存储单元,CE7CH1为该待存储空间中的最后一个存储单元。
上述块和页更新规则为:在目标页不是最后一个页的情况下,将目标页的下一个页更新为目标页,在目标页是最后一个页的情况下,将第一个页更新为目标页,将目标块的下一个块更新为目标块。其中,块的更新范围限于该类的块范围。例如,当待存储空间为将第一类存储单元的第一类块时,块的更新范围仅限于第一类块的范围内。
例如,已知第一类存储单元的每个存储单元中第一类块为1000个块,每个块中包括128个页,使用Blockx和Pagex分别表示块序号和页序号。已知末尾块和末尾页分别为Block1和Page2,则上述块和页的更新可以按照以下顺序进行:
Block1-Page2,Block1-Page3,Block1-Page4,……,Block1-Page127(最后一个页),Block2-Page0,Block2-Page1,Block2-Page2,……,Block2-Page127(最后一个页),Block3-Page0,Block3-Page1,Block3-Page2,……,Block3-Page127,……
在将所有的单位数据存储完毕之后,还可以记录最后一个单位数据所存储的存储单元、块和页,将该存储单元、该块和该页对应的下一个存储位置作为末尾存储位置,记录并保存下来。
需要说明的是,步骤S204中将待存储用户数据存储至第二类存储单元的第一类块中和将待存储非用户数据存储至第一类存储单元的第二类块中的步骤,与上述存储方式相同,详细过程不再赘述。
可见,本实施例可以将待存储数据分成小份存储至待存储空间各个存储单元的块和页中,在存储中用户数据和非用户数据分开存储,相互之间不影响,能够减少数据存储时所消耗的时间,提高存储效率。
在图2所示实施例的一种实施方式中,步骤S202,判断第一类存储单元中用于存储用户数据的空间是否已存满的步骤,具体可以包括:
判断第一类存储单元中空闲的第一类块的数量是否少于预设第一数值,如果是,则判定第一类存储单元中用于存储用户数据的空间已存满,并记录存满的信息。其中,第一数值可以为预设值,例如可以为10个或其他值。
另外,随着数据的不断存储,存储空间在逐渐减少。在满足一定条件下,需要对存储单元的块进行回收。需要说明的是,存储单元在写入时以页为单位,在擦除时或回收时以块为单位。
在图2所示实施例的一种实施方式中,当判断出第一类存储单元中用于存储用户数据的空间未存满时,也就是采用第一存储单元存储用户数据时,所述方法还可以包括以下步骤1和步骤2:
步骤1:判断第二类存储单元中的第一类块是否满足预设的第一回收条件,如果是,则对第二类存储单元中的第一类块进行回收。
其中,预设的第一回收条件可以为以下情况中的至少一种:被标记为垃圾回收块的块数量大于预设第一数量阈值;空闲块的数量小于预设第二数量阈值。第一数量阈值大于第二数量阈值。第一数量阈值可以根据每个存储单元中总的第一类块数量确定,例如可以为总的第一类块的1/2~3/4,第二数量阈值可以为3~10或其他值。
可以理解的是,随着SSD存储单元的不断使用,一些数据可能会被用户覆盖写入或删除,这样会导致一些块中的数据无效或老化。当块中的无效或老化数据增加到一定值时,该块就被标记为垃圾回收块。存储单元中未存储数据的块可以理解为空闲块。随着数据的不断存储,存储单元中的空闲块会越来越少。
具体的,在初始时,第二类存储单元中还没有存储任何用户数据时,显然无需对其进行回收条件的判断,即可以不对第二类存储单元中的第一类块是否满足预设的第一回收条件进行判断。因此,在上述步骤1之前,可以判断第二类存储单元的第一类块中是否存储数据,如果是,则执行步骤1,如果否,则不予处理。
步骤2:判断第二类存储单元中的第二类块是否满足预设的第二回收条件,如果是,则对第二类存储单元中的第二类块进行回收。
其中,预设的第二回收条件可以为以下情况中的至少一种:被标记为垃圾回收块的块数量大于预设第三数量阈值;空闲块的数量小于预设第四数量阈值。第三数量阈值大于第四数量阈值。第三数量阈值可以根据每个存储单元中总的第二类块数量进行确定,例如可以为总的第二类块的1/2~3/4,第二数量阈值可以为3~10或其他值。第四数量阈值可以为3~10或其他值。
可以理解的是,当第一类存储单位中用于存储用户数据的空间未存满时,第一类存储单元将作为存储用户数据的空间。此时第二类存储单元用于存储非用户数据,并且非用户数据是间歇性存储的,因此,第二类存储单元相对来说空闲时间较多,因此这时可以对第二类存储单元进行块回收。
具体的,在初始时,第二类存储单元中还没有存储任何用户数据时,显然无需对其进行回收条件的判断,即可以不对第二类存储单元中的第二类块是否满足预设的第二回收条件进行判断。因此,在上述步骤2之前,可以判断第二类存储单元的第二类块中是否存储数据,如果是,则执行步骤2,如果否,则不予处理。
需要说明的是,上述步骤1和步骤2的执行不存在先后顺序。
当判断出第一类存储单元中用于存储用户数据的空间已存满时,也就是采用第二存储单元存储用户数据时,所述方法还可以包括步骤1和步骤2:
步骤1:判断第一类存储单元中的第一类块是否满足预设的第一回收条件,如果是,则对第一类存储单元中的第一类块进行回收。
步骤2:判断所述第一类存储单元中的第二类块是否满足预设的第二回收条件,如果是,则对第一类存储单元中的第二类块进行回收。
需要说明的是,上述步骤1和步骤2的执行不存在先后顺序。
可以理解的是,当第一类存储单位中用于存储用户数据的空间已存满时,第二类存储单元将作为存储用户数据的空间。此时第一类存储单元用于存储非用户数据,并且非用户数据是间歇性存储的,因此,第一类存储单元相对来说空闲时间较多,因此这时可以对第一类存储单元进行块回收。
可见,本实施例可以利用第一类存储单元和第二类存储单元交替存储用户数据的特点,对处于相对较闲的存储单元进行块回收,这样能够在不影响数据存储的情况下充分利用空隙时间,获得更多空闲块,为后续数据的存储提供空间。
图4为本申请实施例提供的数据存储装置的一种结构示意图,应用于电子设备。所述电子设备包括至少一个硬盘,每个硬盘包括多个存储单元,所述多个存储单元分为第一类存储单元和第二类存储单元。其中,所述第一类存储单元中的各个存储单元可以均不同于所述第二类存储单元中的各个存储单元,也可以有少量的重叠部分。该装置与图2所示实施例相对应。本实施例中该装置包括:
获得模块401,用于获得待存储用户数据;
判断模块402,用于判断所述第一类存储单元中用于存储用户数据的空间是否已存满;
第一存储模块403,用于当所述第一类存储单元中用于存储用户数据的空间未存满时,将所述待存储用户数据存储至所述第一类存储单元中,获得待存储非用户数据,将所述待存储非用户数据存储至所述第二类存储单元中;
第二存储模块404,用于当所述第一类存储单元中用于存储用户数据的空间已存满时,将所述待存储用户数据存储至所述第二类存储单元中,获得待存储非用户数据,将所述待存储非用户数据存储至所述第一类存储单元中。
在图4所示实施例的一种实施方式中,第一存储模块403具体可以用于:
通过第一接口将所述待存储用户数据存储至所述第一类存储单元中,获得待存储非用户数据,通过第二接口将所述待存储非用户数据存储至所述第二类存储单元中;其中,所述第一接口和第二接口分别由不同的处理器控制;
所述第二存储模块404具体可以用于:
通过所述第二接口将所述待存储用户数据存储至所述第二类存储单元中,获得待存储非用户数据,通过所述第一接口将所述待存储非用户数据存储至所述第一类存储单元中。
在图4所示实施例的一种实施方式中,所述第一类存储单元包括用于存储用户数据的第一类块和用于存储非用户数据的第二类块,所述第二类存储单元包括用于存储用户数据的第一类块和用于存储非用户数据的第二类块;
所述第一存储模块403,具体可以用于:
将所述待存储用户数据存储至所述第一类存储单元的第一类块中,获得待存储非用户数据,将所述待存储非用户数据存储至所述第二类存储单元的第二类块中;
所述第二存储模块404,具体可以用于:
将所述待存储用户数据存储至所述第二类存储单元的第一类块中,获得待存储非用户数据,将所述待存储非用户数据存储至所述第一类存储单元的第二类块中。
在图4所示实施例的一种实施方式中,所述第一存储模块403可以包括:
第一用户数据存储子模块(图中未示出),用于将所述待存储用户数据存储至所述第一类存储单元的第一类块中;
第一非用户数据存储子模块(图中未示出),用于将所述待存储非用户数据存储至所述第二类存储单元的第二类块中;
所述第一用户数据存储子模块,具体可以用于:
将所述待存储用户数据作为待存储数据,将所述第一类存储单元的第一类块作为待存储空间,触发存储子模块将所述待存储数据存储至所述待存储空间中;
所述第一非用户数据存储子模块,具体用于:
将所述待存储非用户数据作为待存储数据,将所述第二类存储单元的第二类块作为待存储空间,触发存储子模块将所述待存储数据存储至所述待存储空间中;
其中,所述存储子模块,用于:
按照预设的数据量划分单位,对所述待存储数据进行划分,获得各个单位数据;
获得所述待存储空间的末尾存储单元、末尾块中的末尾页;
将所述单位数据中的第一个单位数据作为目标数据,将所述末尾存储单元作为目标存储单元,将所述末尾块和末尾页分别作为目标块和目标页;
将所述目标数据存储至所述目标存储单元目标块的目标页中;
在所述单位数据不是最后一个单位数据的情况下,将所述单位数据中的下一个单位数据更新为目标数据,在所述目标存储单元不是所述待存储空间的最后一个存储单元的情况下,按照预设的存储单元排列顺序,将所述待存储空间中所述目标存储单元的下一个存储单元更新为目标存储单元,在所述目标存储单元是所述待存储空间的最后一个存储单元的情况下,按照预设的存储单元排列顺序,将所述待存储空间中的第一个存储单元更新为目标存储单元,按照预设的块和页更新规则更新所述目标块和目标页,将所述目标数据存储至所述目标存储单元目标块的目标页中;其中,所述块和页更新规则为:在目标页不是最后一个页的情况下,将目标页的下一个页更新为目标页,在目标页是最后一个页的情况下,将第一个页更新为目标页,将目标块的下一个块更新为目标块。
在图4所示实施例的一种实施方式中,所述判断模块402具体可以用于:
判断所述第一类存储单元中空闲的第一类块的数量是否少于预设第一数值,如果是,则判定所述第一类存储单元中用于存储用户数据的空间已存满。
在图4所示实施例的一种实施方式中,所述装置还可以包括:
第一回收模块(图中未示出),用于当判断出所述第一类存储单元中用于存储用户数据的空间未存满时,判断所述第二类存储单元中的第一类块是否满足预设的第一回收条件;如果是,则对所述第二类存储单元中的第一类块进行回收;
第二回收模块(图中未示出),用于判断所述第二类存储单元中的第二类块是否满足预设的第二回收条件;如果是,则对所述第二类存储单元中的第二类块进行回收;
第三回收模块(图中未示出),用于当判断出所述第一类存储单元中用于存储用户数据的空间已存满时,判断所述第一类存储单元中的第一类块是否满足预设的第一回收条件;如果是,则对所述第一类存储单元中的第一类块进行回收;
第四回收模块(图中未示出),用于判断所述第一类存储单元中的第二类块是否满足预设的第二回收条件;如果是,则对所述第一类存储单元中的第二类块进行回收。
由于上述装置实施例是基于方法实施例得到的,与该方法具有相同的技术效果,因此装置实施例的技术效果在此不再赘述。对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。
图5为本申请实施例提供的电子设备的一种结构示意图。该电子设备包括处理器501、通信接口502、至少一个硬盘503和通信总线504,其中,处理器501,通信接口502,硬盘503通过通信总线504完成相互间的通信;
硬盘503,用于存放计算机程序;每个硬盘包括多个存储单元,多个存储单元分为第一类存储单元和第二类存储单元。
处理器501,用于执行存储器上所存放的程序时,实现本申请实施例提供的数据存储方法。具体的,该方法包括以下步骤:
获得待存储用户数据;
判断所述第一类存储单元中用于存储用户数据的空间是否已存满;
如果未存满,则将所述待存储用户数据存储至所述第一类存储单元中,获得待存储非用户数据,将所述待存储非用户数据存储至所述第二类存储单元中;
如果已存满,则将所述待存储用户数据存储至所述第二类存储单元中,获得待存储非用户数据,将所述待存储非用户数据存储至所述第一类存储单元中。
其中,上述电子设备提到的通信总线可以是外设部件互连标准(PeripheralComponent Interconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
硬盘可以为随机存取存储器(Random Access Memory,RAM)、非易失性存储器(Non-Volatile Memory,NVM)或非易失性闪存(Nand Flash)。可选的,硬盘还可以是至少一个位于远离前述处理器的存储装置。
上述处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
可见,本实施例可以将待存储用户数据存储至第一类存储单元中,将待存储非用户数据存储至第二类存储单元中,当第一类存储单元中用于存储用户数据的空间已存满时,将待存储用户数据存储至第二类存储单元中,将非用户数据存储至第一类存储单元中。这样,在存储用户数据的同时也能存储非用户数据,或者存储非用户数据的同时也能存储用户数据,两者的存储过程互不影响,无需等待一种数据存储完成再存储另一种数据。因此,应用本实施例提供的方案,能够减少存储数据时所耗费的时间。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现本申请实施例提供的数据存储方法。具体的,该方法包括以下步骤:
获得待存储用户数据;
判断所述第一类存储单元中用于存储用户数据的空间是否已存满;
如果未存满,则将所述待存储用户数据存储至所述第一类存储单元中,获得待存储非用户数据,将所述待存储非用户数据存储至所述第二类存储单元中;
如果已存满,则将所述待存储用户数据存储至所述第二类存储单元中,获得待存储非用户数据,将所述待存储非用户数据存储至所述第一类存储单元中。
可见,本实施例可以将待存储用户数据存储至第一类存储单元中,将待存储非用户数据存储至第二类存储单元中,当第一类存储单元中用于存储用户数据的空间已存满时,将待存储用户数据存储至第二类存储单元中,将非用户数据存储至第一类存储单元中。这样,在存储用户数据的同时也能存储非用户数据,或者存储非用户数据的同时也能存储用户数据,两者的存储过程互不影响,无需等待一种数据存储完成再存储另一种数据。因此,应用本实施例提供的方案,能够减少存储数据时所耗费的时间。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。
以上所述仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本申请的保护范围内。
Claims (14)
1.一种数据存储方法,其特征在于,应用于电子设备,所述电子设备包括至少一个硬盘,每个硬盘包括多个存储单元,所述多个存储单元分为第一类存储单元和第二类存储单元;所述第一类存储单元所在的通道和所述第二类存储单元所在的通道不同,所述方法包括:
获得待存储用户数据;
判断所述第一类存储单元中用于存储用户数据的空间是否已存满;
如果未存满,则将所述待存储用户数据存储至所述第一类存储单元中,获得待存储非用户数据,将所述待存储非用户数据存储至所述第二类存储单元中;
如果已存满,则将所述待存储用户数据存储至所述第二类存储单元中,获得待存储非用户数据,将所述待存储非用户数据存储至所述第一类存储单元中;
其中,与所述第一类存储单元中用户数据对应的非用户数据存储在所述第二类存储单元中,与所述第二类存储单元中用户数据对应的非用户数据存储在所述第一类存储单元中。
2.根据权利要求1所述的方法,其特征在于,所述将所述待存储用户数据存储至所述第一类存储单元中,获得待存储非用户数据,将所述待存储非用户数据存储至所述第二类存储单元中的步骤,包括:
通过第一接口将所述待存储用户数据存储至所述第一类存储单元中,获得待存储非用户数据,通过第二接口将所述待存储非用户数据存储至所述第二类存储单元中;其中,所述第一接口和第二接口分别由不同的处理器控制;
所述将所述待存储用户数据存储至所述第二类存储单元中,获得待存储非用户数据,将所述待存储非用户数据存储至所述第一类存储单元中的步骤,包括:
通过所述第二接口将所述待存储用户数据存储至所述第二类存储单元中,获得待存储非用户数据,通过所述第一接口将所述待存储非用户数据存储至所述第一类存储单元中。
3.根据权利要求1所述的方法,其特征在于,所述第一类存储单元包括用于存储用户数据的第一类块和用于存储非用户数据的第二类块,所述第二类存储单元包括用于存储用户数据的第一类块和用于存储非用户数据的第二类块;
所述将所述待存储用户数据存储至所述第一类存储单元中,获得待存储非用户数据,将所述待存储非用户数据存储至所述第二类存储单元中的步骤,包括:
将所述待存储用户数据存储至所述第一类存储单元的第一类块中,获得待存储非用户数据,将所述待存储非用户数据存储至所述第二类存储单元的第二类块中;
所述将所述待存储用户数据存储至所述第二类存储单元中,获得待存储非用户数据,将所述待存储非用户数据存储至所述第一类存储单元中的步骤,包括:
将所述待存储用户数据存储至所述第二类存储单元的第一类块中,获得待存储非用户数据,将所述待存储非用户数据存储至所述第一类存储单元的第二类块中。
4.根据权利要求3所述的方法,其特征在于,所述将所述待存储用户数据存储至所述第一类存储单元的第一类块中的步骤,包括:
将所述待存储用户数据作为待存储数据,将所述第一类存储单元的第一类块作为待存储空间,按照预设的数据存储规则,将所述待存储数据存储至所述待存储空间中;
所述将所述待存储非用户数据存储至所述第二类存储单元的第二类块中的步骤,包括:
将所述待存储非用户数据作为待存储数据,将所述第二类存储单元的第二类块作为待存储空间,按照预设的数据存储规则,将所述待存储数据存储至所述待存储空间中;
其中,所述按照预设的数据存储规则,将所述待存储数据存储至所述待存储空间中的步骤,包括:
按照预设的数据量划分单位,对所述待存储数据进行划分,获得各个单位数据;
获得所述待存储空间的末尾存储单元、末尾块中的末尾页;
将所述单位数据中的第一个单位数据作为目标数据,将所述末尾存储单元作为目标存储单元,将所述末尾块和末尾页分别作为目标块和目标页;
将所述目标数据存储至所述目标存储单元目标块的目标页中;
在所述单位数据不是最后一个单位数据的情况下,将所述单位数据中的下一个单位数据更新为目标数据,在所述目标存储单元不是所述待存储空间的最后一个存储单元的情况下,按照预设的存储单元排列顺序,将所述待存储空间中所述目标存储单元的下一个存储单元更新为目标存储单元,在所述目标存储单元是所述待存储空间的最后一个存储单元的情况下,按照预设的存储单元排列顺序,将所述待存储空间中的第一个存储单元更新为目标存储单元,按照预设的块和页更新规则更新所述目标块和目标页,返回执行所述将所述目标数据存储至所述目标存储单元目标块的目标页中的步骤;其中,所述块和页更新规则为:在目标页不是最后一个页的情况下,将目标页的下一个页更新为目标页,在目标页是最后一个页的情况下,将第一个页更新为目标页,将目标块的下一个块更新为目标块。
5.根据权利要求3所述的方法,其特征在于,所述判断所述第一类存储单元中用于存储用户数据的空间是否已存满的步骤,包括:
判断所述第一类存储单元中空闲的第一类块的数量是否少于预设第一数值,如果是,则判定所述第一类存储单元中用于存储用户数据的空间已存满。
6.根据权利要求3所述的方法,其特征在于,当判断出所述第一类存储单元中用于存储用户数据的空间未存满时,所述方法还包括:
判断所述第二类存储单元中的第一类块是否满足预设的第一回收条件;如果是,则对所述第二类存储单元中的第一类块进行回收;
判断所述第二类存储单元中的第二类块是否满足预设的第二回收条件;如果是,则对所述第二类存储单元中的第二类块进行回收;
当判断出所述第一类存储单元中用于存储用户数据的空间已存满时,所述方法还包括:
判断所述第一类存储单元中的第一类块是否满足预设的第一回收条件;如果是,则对所述第一类存储单元中的第一类块进行回收;
判断所述第一类存储单元中的第二类块是否满足预设的第二回收条件;如果是,则对所述第一类存储单元中的第二类块进行回收。
7.一种数据存储装置,其特征在于,应用于电子设备,所述电子设备包括至少一个硬盘,每个硬盘包括多个存储单元,所述多个存储单元分为第一类存储单元和第二类存储单元;所述第一类存储单元所在的通道和所述第二类存储单元所在的通道不同,所述装置包括:
获得模块,用于获得待存储用户数据;
判断模块,用于判断所述第一类存储单元中用于存储用户数据的空间是否已存满;
第一存储模块,用于当所述第一类存储单元中用于存储用户数据的空间未存满时,将所述待存储用户数据存储至所述第一类存储单元中,获得待存储非用户数据,将所述待存储非用户数据存储至所述第二类存储单元中;
第二存储模块,用于当所述第一类存储单元中用于存储用户数据的空间已存满时,将所述待存储用户数据存储至所述第二类存储单元中,获得待存储非用户数据,将所述待存储非用户数据存储至所述第一类存储单元中;
其中,与所述第一类存储单元中用户数据对应的非用户数据存储在所述第二类存储单元中,与所述第二类存储单元中用户数据对应的非用户数据存储在所述第一类存储单元中。
8.根据权利要求7所述的装置,其特征在于,所述第一存储模块,具体用于:
通过第一接口将所述待存储用户数据存储至所述第一类存储单元中,获得待存储非用户数据,通过第二接口将所述待存储非用户数据存储至所述第二类存储单元中;其中,所述第一接口和第二接口分别由不同的处理器控制;
所述第二存储模块,具体用于:
通过所述第二接口将所述待存储用户数据存储至所述第二类存储单元中,获得待存储非用户数据,通过所述第一接口将所述待存储非用户数据存储至所述第一类存储单元中。
9.根据权利要求7所述的装置,其特征在于,所述第一类存储单元包括用于存储用户数据的第一类块和用于存储非用户数据的第二类块,所述第二类存储单元包括用于存储用户数据的第一类块和用于存储非用户数据的第二类块;
所述第一存储模块,具体用于:
将所述待存储用户数据存储至所述第一类存储单元的第一类块中,获得待存储非用户数据,将所述待存储非用户数据存储至所述第二类存储单元的第二类块中;
所述第二存储模块,具体用于:
将所述待存储用户数据存储至所述第二类存储单元的第一类块中,获得待存储非用户数据,将所述待存储非用户数据存储至所述第一类存储单元的第二类块中。
10.根据权利要求9所述的装置,其特征在于,所述第一存储模块,包括:
第一用户数据存储子模块,用于将所述待存储用户数据存储至所述第一类存储单元的第一类块中;
第一非用户数据存储子模块,用于将所述待存储非用户数据存储至所述第二类存储单元的第二类块中;
所述第一用户数据存储子模块,具体用于:
将所述待存储用户数据作为待存储数据,将所述第一类存储单元的第一类块作为待存储空间,触发存储子模块将所述待存储数据存储至所述待存储空间中;
所述第一非用户数据存储子模块,具体用于:
将所述待存储非用户数据作为待存储数据,将所述第二类存储单元的第二类块作为待存储空间,触发存储子模块将所述待存储数据存储至所述待存储空间中;
其中,所述存储子模块,用于:
按照预设的数据量划分单位,对所述待存储数据进行划分,获得各个单位数据;
获得所述待存储空间的末尾存储单元、末尾块中的末尾页;
将所述单位数据中的第一个单位数据作为目标数据,将所述末尾存储单元作为目标存储单元,将所述末尾块和末尾页分别作为目标块和目标页;
将所述目标数据存储至所述目标存储单元目标块的目标页中;
在所述单位数据不是最后一个单位数据的情况下,将所述单位数据中的下一个单位数据更新为目标数据,在所述目标存储单元不是所述待存储空间的最后一个存储单元的情况下,按照预设的存储单元排列顺序,将所述待存储空间中所述目标存储单元的下一个存储单元更新为目标存储单元,在所述目标存储单元是所述待存储空间的最后一个存储单元的情况下,按照预设的存储单元排列顺序,将所述待存储空间中的第一个存储单元更新为目标存储单元,按照预设的块和页更新规则更新所述目标块和目标页,将所述目标数据存储至所述目标存储单元目标块的目标页中;其中,所述块和页更新规则为:在目标页不是最后一个页的情况下,将目标页的下一个页更新为目标页,在目标页是最后一个页的情况下,将第一个页更新为目标页,将目标块的下一个块更新为目标块。
11.根据权利要求9所述的装置,其特征在于,所述判断模块,具体用于:
判断所述第一类存储单元中空闲的第一类块的数量是否少于预设第一数值,如果是,则判定所述第一类存储单元中用于存储用户数据的空间已存满。
12.根据权利要求9所述的装置,其特征在于,所述装置还包括:
第一回收模块,用于当判断出所述第一类存储单元中用于存储用户数据的空间未存满时,判断所述第二类存储单元中的第一类块是否满足预设的第一回收条件;如果是,则对所述第二类存储单元中的第一类块进行回收;
第二回收模块,用于判断所述第二类存储单元中的第二类块是否满足预设的第二回收条件;如果是,则对所述第二类存储单元中的第二类块进行回收;
第三回收模块,用于当判断出所述第一类存储单元中用于存储用户数据的空间已存满时,判断所述第一类存储单元中的第一类块是否满足预设的第一回收条件;如果是,则对所述第一类存储单元中的第一类块进行回收;
第四回收模块,用于判断所述第一类存储单元中的第二类块是否满足预设的第二回收条件;如果是,则对所述第一类存储单元中的第二类块进行回收。
13.一种电子设备,其特征在于,包括处理器、通信接口、至少一个硬盘和通信总线,其中,处理器,通信接口,硬盘通过通信总线完成相互间的通信;
硬盘,用于存放计算机程序;每个硬盘包括多个存储单元,所述多个存储单元分为第一类存储单元和第二类存储单元;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-6任一所述的方法步骤。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-6任一所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710456360.6A CN109144399B (zh) | 2017-06-16 | 2017-06-16 | 一种数据存储方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710456360.6A CN109144399B (zh) | 2017-06-16 | 2017-06-16 | 一种数据存储方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109144399A CN109144399A (zh) | 2019-01-04 |
CN109144399B true CN109144399B (zh) | 2021-12-17 |
Family
ID=64830307
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710456360.6A Active CN109144399B (zh) | 2017-06-16 | 2017-06-16 | 一种数据存储方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109144399B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114996769B (zh) * | 2022-08-08 | 2022-10-25 | 西安晟昕科技发展有限公司 | 一种数据预处理和存储的方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103176752A (zh) * | 2012-07-02 | 2013-06-26 | 晶天电子(深圳)有限公司 | 带有耐用转换层及临时文件转移功能从而实现闪速存储器磨损降低的超耐用固态驱动器 |
CN104881257A (zh) * | 2015-06-09 | 2015-09-02 | 北京世纪铭辰科技有限公司 | 一种海量数据的实时存储系统和方法 |
CN104991738A (zh) * | 2015-06-19 | 2015-10-21 | 华中科技大学 | 一种固态盘及其读写操作方法 |
CN105912486A (zh) * | 2016-04-27 | 2016-08-31 | 联想(北京)有限公司 | 信息处理方法及处理器 |
CN106502586A (zh) * | 2016-10-17 | 2017-03-15 | 记忆科技(深圳)有限公司 | 一种提高固态硬盘顺序读性能的方法 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1526541A1 (en) * | 2003-10-23 | 2005-04-27 | Deutsche Thomson-Brandt Gmbh | Method and apparatus for recording data and recovering recorded data |
US7284095B2 (en) * | 2004-08-18 | 2007-10-16 | International Business Machines Corporation | Latency-aware replacement system and method for cache memories |
JP5003017B2 (ja) * | 2006-05-08 | 2012-08-15 | ソニー株式会社 | データ記録装置及びデータ記録方法、並びにコンピュータ・プログラム |
CN101271393A (zh) * | 2008-01-22 | 2008-09-24 | 孙国仲 | 便携式固态存储器 |
US20130031431A1 (en) * | 2011-07-28 | 2013-01-31 | Eran Sharon | Post-Write Read in Non-Volatile Memories Using Comparison of Data as Written in Binary and Multi-State Formats |
US8631239B2 (en) * | 2012-01-12 | 2014-01-14 | Facebook, Inc. | Multiple system images for over-the-air updates |
CN105808151B (zh) * | 2014-12-29 | 2019-09-27 | 华为技术有限公司 | 固态硬盘存储设备和固态硬盘存储设备的数据存取方法 |
US9940028B2 (en) * | 2015-11-13 | 2018-04-10 | Samsung Electronics Co., Ltd | Multimode storage device |
-
2017
- 2017-06-16 CN CN201710456360.6A patent/CN109144399B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103176752A (zh) * | 2012-07-02 | 2013-06-26 | 晶天电子(深圳)有限公司 | 带有耐用转换层及临时文件转移功能从而实现闪速存储器磨损降低的超耐用固态驱动器 |
CN104881257A (zh) * | 2015-06-09 | 2015-09-02 | 北京世纪铭辰科技有限公司 | 一种海量数据的实时存储系统和方法 |
CN104991738A (zh) * | 2015-06-19 | 2015-10-21 | 华中科技大学 | 一种固态盘及其读写操作方法 |
CN105912486A (zh) * | 2016-04-27 | 2016-08-31 | 联想(北京)有限公司 | 信息处理方法及处理器 |
CN106502586A (zh) * | 2016-10-17 | 2017-03-15 | 记忆科技(深圳)有限公司 | 一种提高固态硬盘顺序读性能的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109144399A (zh) | 2019-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107168647B (zh) | Flash数据读写方法及系统 | |
US9846643B2 (en) | Methods for maintaining a storage mapping table and apparatuses using the same | |
US20180307496A1 (en) | Methods for gc (garbage collection) por (power off recovery) and apparatuses using the same | |
CN109669640B (zh) | 一种数据存储方法、装置、电子设备及介质 | |
US11960396B2 (en) | Method and computer program product for performing data writes into a flash memory | |
US11675698B2 (en) | Apparatus and method and computer program product for handling flash physical-resource sets | |
CN107391038B (zh) | 资料存储型闪存的数据写入方法、闪存及存储介质 | |
US20160110107A1 (en) | Method for writing data into flash memory apparatus, flash memory apparatus, and storage system | |
KR20120105294A (ko) | 불휘발성 메모리를 제어하는 메모리 컨트롤러 | |
TWI710905B (zh) | 資料儲存裝置及邏輯至物理位址映射表之載入方法 | |
US10776280B1 (en) | Data storage device and method for updating logical-to-physical mapping table | |
US10168951B2 (en) | Methods for accessing data in a circular block mode and apparatuses using the same | |
US11537328B2 (en) | Method and apparatus for executing host commands | |
US20120089765A1 (en) | Method for performing automatic boundary alignment and related non-volatile memory device | |
US20180275915A1 (en) | Methods for regular and garbage-collection data access and apparatuses using the same | |
US9852068B2 (en) | Method and apparatus for flash memory storage mapping table maintenance via DRAM transfer | |
US11544185B2 (en) | Method and apparatus for data reads in host performance acceleration mode | |
US20130138910A1 (en) | Information Processing Apparatus and Write Control Method | |
CN109144399B (zh) | 一种数据存储方法、装置及电子设备 | |
US20110107056A1 (en) | Method for determining data correlation and a data processing method for a memory | |
US8209475B2 (en) | Write timeout control methods for flash memory and memory devices using the same | |
CN113253939B (zh) | 数据处理方法、装置、电子设备及存储介质 | |
US20180365144A1 (en) | Electronic computing device, method for adjusting the trigger mechanism of a garbage collection function, and non-transitory computer readable storage medium thereof | |
EP3296878B1 (en) | Electronic device and page merging method therefor | |
US20210389904A1 (en) | Computer program product and method and apparatus for scheduling execution of host commands |
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 |