CN102243611B - 数据存储方法和系统 - Google Patents

数据存储方法和系统 Download PDF

Info

Publication number
CN102243611B
CN102243611B CN201010178238.5A CN201010178238A CN102243611B CN 102243611 B CN102243611 B CN 102243611B CN 201010178238 A CN201010178238 A CN 201010178238A CN 102243611 B CN102243611 B CN 102243611B
Authority
CN
China
Prior art keywords
packet
data
memory
page
sector
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
Application number
CN201010178238.5A
Other languages
English (en)
Other versions
CN102243611A (zh
Inventor
万红波
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Netac Technology Co Ltd
Original Assignee
Netac Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Netac Technology Co Ltd filed Critical Netac Technology Co Ltd
Priority to CN201010178238.5A priority Critical patent/CN102243611B/zh
Publication of CN102243611A publication Critical patent/CN102243611A/zh
Priority to HK12104708.1A priority patent/HK1164481A1/zh
Application granted granted Critical
Publication of CN102243611B publication Critical patent/CN102243611B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Memory System (AREA)

Abstract

本申请公开了一种向存储装置中存储数据的方法,所述存储装置的写操作单元为存储页,所述方法包括:将所述数据分割为N个数据包,并将所述N个数据包顺序存储在所述存储装置内,其中将所述N个数据包中第m个数据包的大小设置为使得其后的第m+1个数据包的起始存储地址对应于某一存储页的起始存储位置,并将所述第m+1个数据包所包含的扇区数设置为等于一个所述存储页所包含扇区数的整数倍,其中1≤m<N。本申请还公开了一种用于执行上述方法的、控制存储装置中数据存储的系统。

Description

数据存储方法和系统
技术领域
本发明涉及数据处理领域,尤其涉及一种用于进行数据存储的方法和系统。
背景技术
目前,以闪存作为存储介质的存储装置应用日益广泛,如何进一步提高其读写速度成为人们关注的焦点。众所周知,闪存在物理上具有块、页、扇区的组织结构,其中一个物理块由多个物理页组成,一个物理页由多个扇区组成。在闪存中通常以存储页为写操作单元,即存储页为最小的数据写入单位。一个存储页与一个闪存物理页相对应。在对闪存存储装置进行写操作时,如果数据的起始写入地址刚好位于某一存储页的页开头,而且写入数据的大小也是存储页大小的整数倍,则数据将是整页整页的写入,写入速度快,系统开销小。
然而,在向闪存写入数据的过程中,还可能存在部分页写入的情况。即,数据往往不是从存储页的页开头开始写入,而是从某页的中部开始写入。以图1所示情况为例,假设每个页由4个扇区组成,黑色表示已写有数据的部分,灰色表示要新写入数据的部分。由图可见,由于页1的前两个扇区中存储了先前写入的数据,因此本次向闪存中存储数据时,数据不是从页1的开头、而是从该页的第3扇区开始写入,并在页4的第1扇区结束。在这种情况下,由于页为最小的写入单位,为了避免数据写入时页1的前两个扇区中需要保留的数据被一并覆盖,需要把该页保存的原有数据先转移到页缓存器中,然后将要写的新数据写入页缓存器的相应位置,再将包含了待保留的原有数据和新数据的整页缓存数据写入该页。该过程耗时且会增大系统开销,由此降低存储性能。同样地,对于具有与上述存储特性类似特性的任何存储装置而言,都可能存在上述问题。
发明内容
本发明的一个目的在于提供一种能够至少部分解决现有技术中上述问题的方法。
本发明的另一个目的在于提供一种能够至少部分解决现有技术中上述问题的系统。
为了实现以上目的,本发明提供了一种向存储装置中存储数据的方法,所述存储装置的写操作单元为存储页,所述方法包括:将所述数据分割为N个数据包,并将所述N个数据包顺序存储在所述存储装置内,其中将所述N个数据包中第m个数据包的大小设置为使得其后的第m+1个数据包的起始存储地址对应于某一存储页的起始存储位置,并将所述第m+1个数据包所包含的扇区数设置为等于一个所述存储页所包含扇区数的整数倍,其中1≤m<N;
检测所述第m个数据包的起始存储地址所对应的存储页中、未被第m-1个数据包所占据的空白扇区的数量;以及
将所述第m个数据包的大小设置为其所需占据的扇区数等于所述空白扇区数与n个存储页所包含扇区数之和,其中n=0,1,2,3,....。
本发明还提供了一种控制存储装置中数据存储的系统,所述存储装置的写操作单元为存储页,所述系统包括:处理模块,被配置为将所述数据分割为N个数据包,并将所述N个数据包顺序存储在所述存储装置内,其中所述处理模块将所述N个数据包中第m个数据包的大小设置为使得其后的第m+1个数据包的起始存储地址对应于某一存储页的起始存储位置,并将所述第m+1个数据包所包含的扇区数设置为等于一个所述存储页所包含扇区数的整数倍,其中1≤m<N;
其中所述处理模块包括检测模块,所述检测模块被配置为检测所述第m个数据包的起始存储地址所对应的存储页中、未被第m-1个数据包所占据的空白扇区的数量,所述处理模块根据所述检测模块的检测结果将所述第m个数据包的大小设置为其所需占据的扇区数等于所述空白扇区数与n个存储页所包含扇区数之和,其中n=0,1,2,3,....。
附图说明
图1是向存储装置中写入数据时部分页写入的示意图;
图2是采用传统数据分包方式时、向存储页中写入数据的示意图;
图3是采用本发明一个示例性数据分包方法时、向存储页中写入数据的示意图;
图4是采用本发明另一个示例性数据分包方法时、向存储页中写入数据的示意图;以及
图5是根据本发明一个示例性实施方案的、对存储装置进行数据写入的方法流程图。
具体实施方式
以下将以闪存存储介质为例对本发明进行说明,但本领域技术人员可以理解的是,以下的描述仅是示例性的,本发明可适用于与闪存具有类似存储特性的存储装置,即以页作为最小的写操作单元,需要减少部分页写入的情况以提高存储性能的存储装置。
当主机端向存储装置写入数据时,如果待写入的数据总量较大,主机通常不会在一次写入命令中将全部数据发送至并写入存储装置,而是分为多次写入命令、在每次写入命令中发送部分数据写入存储装置。在本文中,将一次写入命令中所发送的数据称为一个数据包。换言之,在待写入存储装置的文件较大的情况下,主机会将文件数据分为多个数据包(例如以64K、128K或其他大小为单位对数据进行分包),在一次写入命令中将一个数据包的内容写入存储装置,通过多次写入命令来将全部文件数据写入存储装置。例如,对于一个数据量为200k的文件,主机可将200k数据分为3个64k的数据包和1个8k的数据包,然后通过4次写命令将上述4个数据包分别发送至存储装置以依次进行数据的写入。
然而,如前所述,在向存储装置写入数据时,有可能存在部分页写入的情况。即,数据不是从某页的第一个扇区、而是从该页的中间某个扇区开始写入。图2示出了采用传统数据分包方式时、向存储页中写入数据的示意图。在写数据的过程中,主机首先获取要写入的起始地址和待写入数据需占据的扇区总数,然后按照固定的大小对待写入数据依次进行分包。假定存储页的大小是每页包含8个扇区,待写入的起始地址是页1的第8个扇区,待写入的数据共需占据72个扇区,主机按照每包包含24个扇区的数据分割方式将数据分为3包。如图2所示,分包完成后,主机将以以下方式依次将第1至第3包数据发送至并写入存储装置:从第8个扇区开始写入第1包的24个扇区数据,在第31个扇区(页4的第7个扇区)结束;从第32个扇区开始写入第2包的24个扇区数据,在第55个扇区(页7的第7个扇区)结束;从第56个扇区开始写入第3包的24个扇区数据,在第79个扇区(页10的第7个扇区)结束。由上可见,在写入每个数据包的数据时,都存在两次部分页写入的情况,全部数据写入的过程中,共需进行3*2=6次部分页写入。可以想见,如果待写入存储装置的文件较大,进行分包处理后数据包的个数N为较大的数值,那么数据写入过程中部分页写入的次数N*2将非常可观,从而将显著影响存储性能。
为解决上述问题,本发明对现有技术进行了改进,在对数据进行分包处理时,通过调整分包策略来有效减少部分页写入的情况。根据本发明的一个实施方案,在将数据分割为N个数据包时,将所述N个数据包中第m个数据包的大小设置为使得其后的第m+1个数据包的起始存储地址对应于某一存储页的起始存储位置,其中1≤m<N。举例来说,可调整第一个数据包的数据量大小,使得第一个数据包的写入操作在某一存储页的最后一个扇区结束,由此第二个数据包的数据将从下一页的开头开始写入,此时m=1。
根据本发明的另一个实施方案,在将数据分割为N个数据包时,对其中第m个数据包的大小进行设置的步骤包括:检测所述第m个数据包的起始存储地址所对应的存储页中、未被第m-1个数据包所占据的空白扇区的数量;以及将所述第m个数据包的大小设置为其所需占据的扇区数等于所述空白扇区数与n个存储页所包含扇区数之和(其中n=0,1,2,3,….),从而使得第m+1个数据包的起始存储地址对应于某一存储页的起始存储位置。
此外,可进一步将第m+1个数据包所包含的扇区数设置为等于一个所述存储页所包含扇区数的整数倍,从而使得第m+2个数据包的数据也是从某一存储页的开头开始写入。
另外,为了使后续的数据包均尽量实现整页写,可将第m+1个数据包至第N-1个数据包(假定全部数据共被分割为N个数据包)的大小均设置为等于一个存储页所包含扇区数的整数倍。由此,在第m个数据包的数据量被调整为使得第m个数据包的写入操作在某一存储页的最后一个扇区结束的情况下,后续的第m+1至N-1个数据包将均为整页写。
图3示出了本发明的一个具体实施例,以下结合图3中的示例进行进一步说明。主机首先获知存储页的大小是每页包含8个扇区、待写入的起始地址是页1的第8个扇区、待写入的数据共需占据72个扇区。根据本发明的方法,主机将数据分为4个数据包,其中第1个数据包包含1个扇区的数据,第2、3个数据包分别包含24个扇区(3个整页)的数据,第4个数据包包含23个扇区的数据。由此,在向存储装置写入数据时,主机将以以下方式依次将第1至第4包数据发送至并写入存储装置:在第8个扇区内写入第1包的1个扇区数据;从第9个扇区(页2的第1个扇区)开始写入第2包的24个扇区数据,在第32个扇区(页4的第8个扇区)结束;从第33个扇区(页5的第1个扇区)开始写入第3包的24个扇区数据,在第56个扇区(页7的第8个扇区)结束;从第57个扇区(页8的第1个扇区)开始写入第4包的23个扇区数据,在第79个扇区(页10的第7个扇区)结束。由以上过程可以看出,在全部数据写入的过程中,仅第一个和最后一个数据包中存在部分页写入的情况,其他数据包全部为整页写。与现有技术中的分包方式相比,根据本发明的方法进行数据分包后可以有效减少部分页写入的情况,提高存储装置的读写性能。
本领域技术人员可以理解,第1个数据包显然也可包括1+x*y个扇区的数据(其中x为每个存储页所包含的扇区数,y为自然数),从而使得第1个数据包的写入操作在某一存储页的最后一个扇区结束。
图4示出了本发明的另一个具体实施例,其与图3所示实施例的区别在于,主机在对数据进行分包时,对中间某个数据包而非第一个数据包所包含的数据量进行了调整。如图4所示,主机将数据分为4个数据包,其中第1个数据包被分割为包含24个扇区的数据,第2个数据包包含9个扇区的数据(1个扇区+1个整页),第3个数据包包含24个扇区(3个整页)的数据,第4个数据包包含15个扇区的数据。在向存储装置写入数据时,由于第2个数据包的写入操作在页5的最后一个扇区结束,因此其后的数据包(即第3个数据包)可实现整页写。也就是说,在应用本发明的方法时,并不限于对第一个数据包的数据量大小进行调整,而是可以调整第1至N-1个数据包中任何数据包的大小,使得所述被调整数据包中所包含的数据量刚好占满所写入存储页全部未被占据的扇区。由此,下一个数据包可实现整页写。
图5示出了根据本发明一个实施方案的、对存储装置进行数据写入的方法流程图。如图所示,首先检查存储装置类型,判断存储装置是否以闪存为存储介质(步骤S102),若否,则结束流程,若是,则进一步获取存储装置的页大小信息,即存储装置中每个存储页包含多少扇区(步骤S103)。然后,获取数据待存入的起始存储地址,即数据将从存储装置中的哪一位置开始写入(步骤S104)。随后,根据步骤S103中获取的页大小信息和步骤S104中获取的起始目标地址将数据分割为N个数据包,在进行数据包分割时,通过调整各个数据包的大小,使得第m个数据包中最后一个扇区与某一存储页的最后一个扇区对齐,即第m个数据包中所包含的数据量刚好占满其开始写入的存储页中未被第m-1个数据包占据的扇区、以及其后的n个存储页,以便使得下一个数据包的起始地址刚好从下一个存储页起始扇区开始(步骤S105),以及使得第m+1个数据包至第N-1个数据包中所包含的扇区数分别等于每个存储页所包含扇区数的整数倍(步骤S106)。继而,将上述N个数据包依次发送至并写入存储装置(步骤S107)。
根据以上方法,可通过调整数据分包方式而使得部分数据包的写入为整页写,从而改善存储装置的读写性能。
本领域技术人员可以理解的是,本说明书中的每个存储页所包含的具体扇区数目、数据分包时每个数据包内数据量的具体数值等都是出于说明的目的而给出的示例性数据,本领域技术人员可基于本发明的原理根据具体应用采用不同的数据。另外,在不脱离本发明精神的情况下,不同实施例/实施方案中所描述的各个特征之间可进行互换或组合。
以上通过实施方式和附图对本申请进行了描述,但是本申请并不局限于上述实施方式和附图,本领域技术人员应当理解,在不脱离本申请的技术思想的情况下,还可以进行各种变型和等效变换,这些变型和变换同样包含在本申请权利要求书所限定的保护范围内。

Claims (6)

1.一种向存储装置中存储数据的方法,所述存储装置的写操作单元为存储页,所述方法包括:
将所述数据分割为N个数据包,并将所述N个数据包顺序存储在所述存储装置内,
其中将所述N个数据包中第m个数据包的大小设置为使得其后的第m+1个数据包的起始存储地址对应于某一存储页的起始存储位置,并将所述第m+1个数据包所包含的扇区数设置为等于一个所述存储页所包含扇区数的整数倍,其中1≤m<N;
检测所述第m个数据包的起始存储地址所对应的存储页中、未被第m-1个数据包所占据的空白扇区的数量;以及
将所述第m个数据包的大小设置为其所需占据的扇区数等于所述空白扇区数与n个存储页所包含扇区数之和,其中n=0,1,2,3,....。
2.如权利要求1所述的方法,其中将待存储数据分割为N个数据包的步骤进一步包括将所述第m+1个数据包至第N-1个数据包中每个数据包所包含的扇区数均设置为等于一个所述存储页所包含扇区数的整数倍。
3.如权利要求1所述的方法,其中在所述数据包分割步骤前还包括:
判断所述存储装置是否包括闪存存储介质;
若是,则查询一个所述存储页所包含的扇区数。
4.一种控制存储装置中数据存储的系统,所述存储装置的写操作单元为存储页,所述系统包括:
处理模块,被配置为将所述数据分割为N个数据包,并将所述N个数据包顺序存储在所述存储装置内,其中所述处理模块将所述N个数据包中第m个数据包的大小设置为使得其后的第m+1个数据包的起始存储地址对应于某一存储页的起始存储位置,并将所述第m+1个数据包所包含的扇区数设置为等于一个所述存储页所包含扇区数的整数倍,其中1≤m<N;
其中所述处理模块包括检测模块,所述检测模块被配置为检测所述第m个数据包的起始存储地址所对应的存储页中、未被第m-1个数据包所占据的空白扇区的数量,所述处理模块根据所述检测模块的检测结果将所述第m个数据包的大小设置为其所需占据的扇区数等于所述空白扇区数与n个存储页所包含扇区数之和,其中n=0,1,2,3,....。
5.如权利要求4所述的系统,其中所述处理模块被配置为将所述第m+1个数据包至第N-1个数据包中每个数据包所包含的扇区数均设置为等于一个所述存储页所包含扇区数的整数倍。
6.如权利要求4所述的系统,进一步包括:
判断模块,被配置为判断所述存储装置是否包括闪存存储介质,若是,则查询一个所述存储页所包含的扇区数,并将查询结果发送至所述处理模块。
CN201010178238.5A 2010-05-11 2010-05-11 数据存储方法和系统 Active CN102243611B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201010178238.5A CN102243611B (zh) 2010-05-11 2010-05-11 数据存储方法和系统
HK12104708.1A HK1164481A1 (zh) 2010-05-11 2012-05-14 數據存儲方法和系統

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201010178238.5A CN102243611B (zh) 2010-05-11 2010-05-11 数据存储方法和系统

Publications (2)

Publication Number Publication Date
CN102243611A CN102243611A (zh) 2011-11-16
CN102243611B true CN102243611B (zh) 2015-06-17

Family

ID=44961678

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201010178238.5A Active CN102243611B (zh) 2010-05-11 2010-05-11 数据存储方法和系统

Country Status (2)

Country Link
CN (1) CN102243611B (zh)
HK (1) HK1164481A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103544170B (zh) * 2012-07-12 2016-12-21 百度在线网络技术(北京)有限公司 浏览质量的评估方法及装置
CN105389124B (zh) * 2015-10-16 2018-11-09 联想(北京)有限公司 一种信息处理方法及电子设备
CN106293841A (zh) * 2016-08-11 2017-01-04 青岛海信移动通信技术股份有限公司 一种烧录数据的方法和装置
CN106527984A (zh) * 2016-11-02 2017-03-22 郑州云海信息技术有限公司 一种用于固态硬盘的存储方法及其系统
CN106503594B (zh) * 2016-11-04 2019-05-07 湖南威铭能源科技有限公司 智能水表的数据存储方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1300714C (zh) * 2003-03-10 2007-02-14 华为技术有限公司 对数据通信中交换芯片外挂存储器优化管理的方法
US7139864B2 (en) * 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
US7395404B2 (en) * 2004-12-16 2008-07-01 Sandisk Corporation Cluster auto-alignment for storing addressable data packets in a non-volatile memory array
CN101441596B (zh) * 2007-11-21 2013-05-01 深圳市朗科科技股份有限公司 提高闪存介质读写速度的方法

Also Published As

Publication number Publication date
CN102243611A (zh) 2011-11-16
HK1164481A1 (zh) 2012-09-21

Similar Documents

Publication Publication Date Title
US8010770B2 (en) Caching device for NAND flash translation layer
US9304938B2 (en) Storage device and data transferring method thereof
CN102243611B (zh) 数据存储方法和系统
US7076598B2 (en) Pipeline accessing method to a large block memory
CN103425602B (zh) 一种闪存存储设备数据读写的方法、装置及主机系统
US8621134B2 (en) Storage tiering with minimal use of DRAM memory for header overhead
KR20090026941A (ko) 복수개의 비휘발성 데이터 저장매체를 구비한 저장장치의가상 파일 시스템에서 어드레스 맵핑을 수행하는 방법 및그 장치
CN102681946B (zh) 内存访问方法和装置
CN103399823B (zh) 业务数据的存储方法、设备和系统
US20120290769A1 (en) Flash memory device, memory control device, memory control method, and storage system
TWI525430B (zh) 快取記憶體裝置以及該裝置的資料處理方法
JP2008016003A (ja) メモリー格納装置及びその読み書き方法
CN106484628A (zh) 基于事务的混合存储器模块
US20110016261A1 (en) Parallel processing architecture of flash memory and method thereof
KR101305490B1 (ko) 메모리 맵핑 방법 및 장치
EP2437462A2 (en) Data access processing method and device
CN101645043A (zh) 写数据的方法、读数据的方法及存储设备
CN103744744B (zh) 数据储存装置以及易失性存储器的数据校验方法
US20170185294A1 (en) Memory system and operating method thereof
CN107329904A (zh) 数据读取方法及装置
CN101840375A (zh) 半导体存储装置
CN108701089A (zh) 用于处理到可寻址单元的部分的顺序写入的方法和设备
KR20140008914A (ko) 비휘발성 메모리 제어기 및 그 제어 방법
CN105488108A (zh) 一种多个视频文件高速并行存储的方法及装置
US20090006669A1 (en) Dma transfer control device and method of dma transfer

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1164481

Country of ref document: HK

C53 Correction of patent for invention or patent application
CB02 Change of applicant information

Address after: 518000 South Guangdong province Shenzhen high tech Zone of Nanshan District City, six South Road No. 10 building, 18 Netac 16 and 19

Applicant after: Shenzhen Netac Technology Co., Ltd.

Address before: The South Guangdong province 518057 Shenzhen high tech Zone of Nanshan District City, a China Development Institute of science and technology incubator building, 6 floor

Applicant before: Shenzhen Netac Technology Co., Ltd.

C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: GR

Ref document number: 1164481

Country of ref document: HK