CN107220004B - 一种固态硬盘中写buffer的方法及装置 - Google Patents
一种固态硬盘中写buffer的方法及装置 Download PDFInfo
- Publication number
- CN107220004B CN107220004B CN201710392605.3A CN201710392605A CN107220004B CN 107220004 B CN107220004 B CN 107220004B CN 201710392605 A CN201710392605 A CN 201710392605A CN 107220004 B CN107220004 B CN 107220004B
- Authority
- CN
- China
- Prior art keywords
- data
- data unit
- controller
- buffer
- address
- 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
- 239000000872 buffer Substances 0.000 title claims abstract description 99
- 239000007787 solid Substances 0.000 title claims abstract description 27
- 238000000034 method Methods 0.000 title claims abstract description 26
- 230000005540 biological transmission Effects 0.000 abstract description 10
- 230000006870 function Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- 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/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- 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
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
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)
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
本发明公开了一种固态硬盘中写buffer的方法及装置,其中该方法包括:预先准备多个地址连续的数据单元buffer,所述数据单元buffer的数量与数据条带中包含的数据单元的数量相同;接收主机下发的写命令,并将与所述写命令对应的数据条带中包含的每个数据单元以一一对应的关系分别分配至多个所述数据单元buffer;将所述数据单元buffer的首地址及目的地址发送至控制器,以指示该控制器基于所述首地址将所述数据单元buffer中分配的数据单元写入与所述目的地址对应的nand flash中。从而大大减小了传输开销,提高了数据传输效率,进而提高了固态硬盘的性能。
Description
技术领域
本发明涉及存储技术领域,更具体地说,涉及一种固态硬盘中写buffer的方法及装置。
背景技术
随着互联网、云计算、物联网等技术的发展,固态硬盘作为新的一代存储,广泛被应用;同时,企业级固态硬盘要求提供完整的数据保护功能,业界一般通过RAID(RedundantArrays of Independent Disks)方案来实现。具体来说,采用RAID方案时,数据将会以整条带的方式写入nand flash中;以RAID5为例,一个数据条带的结构形式为N+1,其中N为需要被保护的数据单元个数,1为根据被保护的数据单元生成的校验数据单元,因此要将数据条带从内存写入nand flash中,需要提供N+1个数据Buffer的地址,从而带来大量传输开销。
综上所述,如何提供一种在RAID方案中减少传输开销的技术方案,是目前本领域技术人员亟待解决的问题。
发明内容
本发明的目的是提供一种固态硬盘中写buffer的方法及装置,以在RAID方案中减少传输开销。
为了实现上述目的,本发明提供如下技术方案:
一种固态硬盘中写buffer的方法,包括:
预先准备多个地址连续的数据单元buffer,所述数据单元buffer的数量与数据条带中包含的数据单元的数量相同;
接收主机下发的写命令,并将与所述写命令对应的数据条带中包含的每个数据单元以一一对应的关系分别分配至多个所述数据单元buffer;
将所述数据单元buffer的首地址及目的地址发送至控制器,以指示该控制器基于所述首地址将所述数据单元buffer中分配的数据单元写入与所述目的地址对应的nandflash中。
优选的,将所述数据单元buffer的首地址及目的地址发送至控制器之后,还包括:
接收所述控制器返回的数据写入完成信息,所述数据写入完成信息为所述控制器基于所述首地址将所述数据单元buffer中分配的数据单元写入与所述目的地址对应的nand flash后返回的。
优选的,接收所述控制器返回的数据写入完成信息之后,还包括:
将所述数据写入完成信息发送至指定终端。
优选的,还包括:
如果与所述写命令对应的数据条带中包含的数据单元的数量大于所述数据单元buffer的数量,则将分配失败信息发送至指定终端。
一种固态硬盘中写buffer的装置,包括:
准备模块,用于:预先准备多个地址连续的数据单元buffer,所述数据单元buffer的数量与数据条带中包含的数据单元的数量相同;
分配模块,用于:接收主机下发的写命令,并将与所述写命令对应的数据条带中包含的每个数据单元以一一对应的关系分别分配至多个所述数据单元buffer;
写入模块,用于:将所述数据单元buffer的首地址及目的地址发送至控制器,以指示该控制器基于所述首地址将所述数据单元buffer中分配的数据单元写入与所述目的地址对应的nand flash中。
优选的,还包括:
接收模块,用于:将所述数据单元buffer的首地址及目的地址发送至控制器之后,接收所述控制器返回的数据写入完成信息,所述数据写入完成信息为所述控制器基于所述首地址将所述数据单元buffer中分配的数据单元写入与所述目的地址对应的nand flash后返回的。
优选的,还包括:
第一发送模块,用于:接收所述控制器返回的数据写入完成信息之后,将所述数据写入完成信息发送至指定终端。
优选的,还包括:
第二发送模块,用于:如果与所述写命令对应的数据条带中包含的数据单元的数量大于所述数据单元buffer的数量,则将写入失败信息发送至指定终端。
本发明提供了一种固态硬盘中写buffer的方法及装置,其中该方法包括:预先准备多个地址连续的数据单元buffer,所述数据单元buffer的数量与数据条带中包含的数据单元的数量相同;接收主机下发的写命令,并将与所述写命令对应的数据条带中包含的每个数据单元以一一对应的关系分别分配至多个所述数据单元buffer;将所述数据单元buffer的首地址及目的地址发送至控制器,以指示该控制器基于所述首地址将所述数据单元buffer中分配的数据单元写入与所述目的地址对应的nand flash中。本发明提供的上述技术方案中,为需要写入nand flash的数据条带准备多个地址连续的数据单元buffer,由此将数据条带对应数据单元分配至多个数据单元buffer后,只需将数据单元buffer的首地址及nand flash对应的目的地址发送至控制器即可,无需像现有技术中一样将每个数据单元buffer的地址均发送至控制器,从而大大减小了传输开销,提高了数据传输效率,进而提高了固态硬盘的性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的一种固态硬盘中写buffer的方法的流程图;
图2为本发明实施例提供的一种固态硬盘中写buffer的装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,其示出了本发明实施例提供的一种固态硬盘中写buffer的方法的流程图,可以包括:
S11:预先准备多个地址连续的数据单元buffer,数据单元buffer的数量与数据条带中包含的数据单元的数量相同。
需要说明的是,数据条带中包含的数据单元的数量是可以预先获知的,如RAID5方案中数据条带的数量为N+1;本申请中数据条带中包含的数据单元的数量包含需要被保护的数据单元及对这些需要被保护的数据单元计算得到的校验数据单元,而每个数据单元buffer可以存储一个数据条带中包含的数据单元。另外完成步骤S11后,可以完成一次或多次步骤S12和步骤S13,具体可以根据实际需要进行设定。
S12:接收主机下发的写命令,并将与写命令对应的数据条带中包含的每个数据单元以一一对应的关系分别分配至多个数据单元buffer。
接收主机下发的写命令并获取到对应的数据单元,然后将这些数据单元依次放入数据单元buffer中。本申请中写命令可以包含多个,而每个写命令对应一个数据单元,具体来说该步骤可以包括:
接收主机下发的写命令并获取与该写命令对应的数据单元,将该数据单元分配至多个数据单元buffer中第一个地址(即首地址)的数据单元buffer,判断接收的数据单元数量是否达到对应数据条带应具有的数据单元数量,如果是,则确定完成写buffer,如果否,则接收主机下发的写命令并获取与该写命令对应的数据单元,将该数据单元分配至为分配有上一个写命令对应数据单元的数据单元buffer的地址的下一个地址对应的数据单元buffer,并返回执行所述判断接收的数据单元数量是否达到对应数据条带应具有的数据单元数量的步骤。
S13:将数据单元buffer的首地址及目的地址发送至控制器,以指示该控制器基于首地址将数据单元buffer中分配的数据单元写入与目的地址对应的nand flash中。
写buffer完成后,将多个数据单元buffer的首地址及目的地址发送至控制器,由此控制器可根据首地址获取多个数据单元buffer中的数据单元,并将获取的数据单元写入目的地址对应的nand flash中,完成全部写步骤。
本发明提供的上述技术方案中,为需要写入nand flash的数据条带准备多个地址连续的数据单元buffer,由此将数据条带对应数据单元分配至多个数据单元buffer后,只需将数据单元buffer的首地址及nand flash对应的目的地址发送至控制器即可,无需像现有技术中一样将每个数据单元buffer的地址均发送至控制器,从而大大减小了传输开销,提高了数据传输效率,进而提高了固态硬盘的性能。
本发明实施例提供的一种固态硬盘中写buffer的方法,将数据单元buffer的首地址及目的地址发送至控制器之后,还可以包括:
接收控制器返回的数据写入完成信息,数据写入完成信息为控制器基于首地址将数据单元buffer中分配的数据单元写入与目的地址对应的nand flash后返回的。
控制器完成写入步骤后返回数据写入完成信息,能够使得对应终端及时获知数据写入的情况,进而实现对应的操作。其中数据写入完成信息可以包括数据单元的标识及对应写入位置等,具体可以根据实际需要进行设定。
本发明实施例提供的一种固态硬盘中写buffer的方法,接收控制器返回的数据写入完成信息之后,还可以包括:
将数据写入完成信息发送至指定终端。
将数据写入完成信息发送至预先根据实际需要设定的指定终端,能够使得与指定终端对应的工作人员能够及时获知对应数据写入情况,进而实现对应的后续处理。
本发明实施例提供的一种固态硬盘中写buffer的方法,还可以包括:
如果与写命令对应的数据条带中包含的数据单元的数量大于数据单元buffer的数量,则将分配失败信息发送至指定终端。
如果写命令对应数据条带中包含的数据单元数量大于数据单元buffer的数量,则很可能是对数据单元buffer的设置出错或者是数据条带传输过程出错,此时将分配失败信息发送至指定终端,能够使得指定终端对应工作人员及时获知该失败信息以进行对应的错误修复等。其中分配失败信息可以包括数据单元的标识及数据单元buffer的标识等,具体可以根据实际需要进行设定。
本发明实施例提供的上述技术方案中与现有技术中对应技术方案实现原理一致的部分并未详细说明,以免过多赘述。
本发明实施例还提供了一种固态硬盘中写buffer的装置,如图2所示,可以包括:
准备模块11,用于:预先准备多个地址连续的数据单元buffer,数据单元buffer的数量与数据条带中包含的数据单元的数量相同;
分配模块12,用于:接收主机下发的写命令,并将与写命令对应的数据条带中包含的每个数据单元以一一对应的关系分别分配至多个数据单元buffer;
写入模块13,用于:将数据单元buffer的首地址及目的地址发送至控制器,以指示该控制器基于首地址将数据单元buffer中分配的数据单元写入与目的地址对应的nandflash中。
本发明实施例提供的一种固态硬盘中写buffer的装置,还可以包括:
接收模块,用于:将数据单元buffer的首地址及目的地址发送至控制器之后,接收控制器返回的数据写入完成信息,数据写入完成信息为控制器基于首地址将数据单元buffer中分配的数据单元写入与目的地址对应的nand flash后返回的。
本发明实施例提供的一种固态硬盘中写buffer的装置,还可以包括:
第一发送模块,用于:接收控制器返回的数据写入完成信息之后,将数据写入完成信息发送至指定终端。
本发明实施例提供的一种固态硬盘中写buffer的装置,还可以包括:
第二发送模块,用于:如果与写命令对应的数据条带中包含的数据单元的数量大于数据单元buffer的数量,则将写入失败信息发送至指定终端。
本发明实施例提供的一种固态硬盘中写buffer的装置中相关部分的说明请参见本发明实施例提供的一种固态硬盘中写buffer的方法中对应部分的详细说明,在此不再赘述。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (6)
1.一种固态硬盘中写buffer的方法,其特征在于,包括:
预先准备多个地址连续的数据单元buffer,所述数据单元buffer的数量与数据条带中包含的数据单元的数量相同;
接收主机下发的写命令,并将与所述写命令对应的数据条带中包含的每个数据单元以一一对应的关系分别分配至多个所述数据单元buffer;
将所述数据单元buffer的首地址及目的地址发送至控制器,以指示该控制器基于所述首地址将所述数据单元buffer中分配的数据单元写入与所述目的地址对应的nand flash中;
所述方法还包括:
如果与所述写命令对应的数据条带中包含的数据单元的数量大于所述数据单元buffer的数量,则将分配失败信息发送至指定终端。
2.根据权利要求1所述的方法,其特征在于,将所述数据单元buffer的首地址及目的地址发送至控制器之后,还包括:
接收所述控制器返回的数据写入完成信息,所述数据写入完成信息为所述控制器基于所述首地址将所述数据单元buffer中分配的数据单元写入与所述目的地址对应的nandflash后返回的。
3.根据权利要求2所述的方法,其特征在于,接收所述控制器返回的数据写入完成信息之后,还包括:
将所述数据写入完成信息发送至指定终端。
4.一种固态硬盘中写buffer的装置,其特征在于,包括:
准备模块,用于:预先准备多个地址连续的数据单元buffer,所述数据单元buffer的数量与数据条带中包含的数据单元的数量相同;
分配模块,用于:接收主机下发的写命令,并将与所述写命令对应的数据条带中包含的每个数据单元以一一对应的关系分别分配至多个所述数据单元buffer;
写入模块,用于:将所述数据单元buffer的首地址及目的地址发送至控制器,以指示该控制器基于所述首地址将所述数据单元buffer中分配的数据单元写入与所述目的地址对应的nand flash中;
所述装置还包括:
第二发送模块,用于:如果与所述写命令对应的数据条带中包含的数据单元的数量大于所述数据单元buffer的数量,则将写入失败信息发送至指定终端。
5.根据权利要求4所述的装置,其特征在于,还包括:
接收模块,用于:将所述数据单元buffer的首地址及目的地址发送至控制器之后,接收所述控制器返回的数据写入完成信息,所述数据写入完成信息为所述控制器基于所述首地址将所述数据单元buffer中分配的数据单元写入与所述目的地址对应的nand flash后返回的。
6.根据权利要求5所述的装置,其特征在于,还包括:
第一发送模块,用于:接收所述控制器返回的数据写入完成信息之后,将所述数据写入完成信息发送至指定终端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710392605.3A CN107220004B (zh) | 2017-05-27 | 2017-05-27 | 一种固态硬盘中写buffer的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710392605.3A CN107220004B (zh) | 2017-05-27 | 2017-05-27 | 一种固态硬盘中写buffer的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107220004A CN107220004A (zh) | 2017-09-29 |
CN107220004B true CN107220004B (zh) | 2020-03-24 |
Family
ID=59946950
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710392605.3A Active CN107220004B (zh) | 2017-05-27 | 2017-05-27 | 一种固态硬盘中写buffer的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107220004B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1632764A (zh) * | 2004-12-31 | 2005-06-29 | 北京中星微电子有限公司 | 一种线性访问文件的方法 |
CN101241420A (zh) * | 2008-03-20 | 2008-08-13 | 杭州华三通信技术有限公司 | 用于提高写地址非连续的数据存储效率的方法和存储设备 |
CN101727299A (zh) * | 2010-02-08 | 2010-06-09 | 北京同有飞骥科技有限公司 | 连续数据存储中面向raid5的写操作优化设计方法 |
CN103019617A (zh) * | 2012-11-25 | 2013-04-03 | 向志华 | 高效实现ssd内部raid的构建方法、数据读写方法及装置 |
CN103488583A (zh) * | 2013-09-09 | 2014-01-01 | 华中科技大学 | 一种高性能高可靠的固态盘实现方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200844841A (en) * | 2007-05-10 | 2008-11-16 | Realtek Semiconductor Corp | Method for expediting data access of universal serial bus stoarage device |
US8892829B2 (en) * | 2012-02-29 | 2014-11-18 | Ixia | Methods, systems, and computer readable media for integrated sub-block interleaving and rate matching |
-
2017
- 2017-05-27 CN CN201710392605.3A patent/CN107220004B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1632764A (zh) * | 2004-12-31 | 2005-06-29 | 北京中星微电子有限公司 | 一种线性访问文件的方法 |
CN101241420A (zh) * | 2008-03-20 | 2008-08-13 | 杭州华三通信技术有限公司 | 用于提高写地址非连续的数据存储效率的方法和存储设备 |
CN101727299A (zh) * | 2010-02-08 | 2010-06-09 | 北京同有飞骥科技有限公司 | 连续数据存储中面向raid5的写操作优化设计方法 |
CN103019617A (zh) * | 2012-11-25 | 2013-04-03 | 向志华 | 高效实现ssd内部raid的构建方法、数据读写方法及装置 |
CN103488583A (zh) * | 2013-09-09 | 2014-01-01 | 华中科技大学 | 一种高性能高可靠的固态盘实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107220004A (zh) | 2017-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8954657B1 (en) | Storage processor managing solid state disk array | |
EP2811392B1 (en) | Method and device for reducing read delay | |
CN111159061B (zh) | 存储设备、存储设备的操作方法和主机的操作方法 | |
US9471242B2 (en) | Early de-allocation of write buffer in an SSD | |
CN106527971B (zh) | 一种提升ssd在垃圾回收期间读性能的方法 | |
US9223698B2 (en) | SSD-block aligned writes | |
US9264070B2 (en) | Memory controller, memory system, and memory write method | |
CN104407933A (zh) | 一种数据的备份方法及装置 | |
CN104346293A (zh) | 混合内存的数据访问方法、模块、处理器及终端设备 | |
US8868793B2 (en) | SAS expander system and method for dynamically allocating SAS addresses to SAS expander devices | |
US20180335975A1 (en) | Translating a host data storage command into multiple disk commands | |
CN109213429B (zh) | 存储管理方法和设备 | |
GB2538621A (en) | Verification of storage media upon deployment | |
US20200387307A1 (en) | Namespace auto-routing data storage system | |
CN106662895A (zh) | 计算机设备和计算机设备数据读写的方法 | |
US10592113B2 (en) | Method for transferring command from host to device controller and system using the same | |
US9176675B1 (en) | Fast-zeroing in a file system | |
CN109240943B (zh) | 地址映射关系反馈方法、装置、设备及可读存储介质 | |
Missimer et al. | Partitioned real-time NAND flash storage | |
CN107220004B (zh) | 一种固态硬盘中写buffer的方法及装置 | |
CN105094742B (zh) | 一种写数据的方法和设备 | |
CN104216834A (zh) | 一种内存访问的方法、缓冲调度器和内存模块 | |
CN106708445B (zh) | 链路选择方法及装置 | |
US9152348B2 (en) | Data transmitting method, memory controller and data transmitting system | |
CN103092725B (zh) | 一种实现存储器中数据备份的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |