一种固态硬盘及其读-修改-写操作的数据管理方法

文档序号:6442047阅读:488来源:国知局
专利名称:一种固态硬盘及其读-修改-写操作的数据管理方法
技术领域
本发明涉及固态硬盘及信息存储领域,尤其涉及一种固态硬盘及其读-修改-写操作的数据管理方法。
背景技术
固态硬盘主要包括微控制器和闪存单元,目前固态硬盘的闪存单元主要采用NAND FLSH(闪存的一种)芯片,NAND FLASH颗粒的读写单元一般为一整个页,比如8KB ;而文件系统的读写单元,由于历史的原因只用512B。由于两者的不匹配,以及NAND FLASH在写之前必须要擦除的特性,产生了 RMW(读-修改-写操作)的问题。比如文件系统要修改LBA_ i的内容,则固态硬盘需要先读出LBA_i所在的NAND FLASH物理页,修改LBA_i所在位置的内容,然后依据新的逻辑地址到物理地址映射将修改后的页写入到新分配的物理地址。现有RMW的数据管理方法主要包括以下两种方式一、纯粹的RMW 将读-修改-写操作三个动作完全串行化,具体实现方法如图1所示。其优点在于实现简单、不消耗额外的内存总线带宽;其缺点在于读-修改操作串行化,性能较低,微控制器需全程参与。二、带归并功能的RMW:读-修改操作并行,使用独立的读、修改缓冲区,而后对读、 修改缓冲区进行归并,并将归并后的内容写出,具体实现方法如图2所示。其优点在于 读-修改操作并行化,其缺点在于需要独立的读、修改缓冲区;归并操作需要消耗额外的内存总线带宽和时间;微控制器需全程参与。综上可知,现有固态硬盘读-修改-写操作的数据管理方法在实际使用上,显然存在不便与缺陷,所以有必要加以改进。

发明内容
针对上述的缺陷,本发明的目的在于提供一种固态硬盘及其读-修改-写操作的数据管理方法。其能在不额外增加缓冲区的前提下,降低微控制器的参与程度、节省内存总线带宽、提高读-修改-写操作的性能。为了实现上述目的,本发明提供一种固态硬盘读-修改-写操作的数据管理方法, 所述方法包括如下步骤固态硬盘收到宿主机的逻辑块地址写命令;所述固态硬盘的微控制器为所述逻辑块地址写命令分配页缓冲区,并基于所述页缓冲区建立具有同步机制的宿主机写操作请求、存储器页读操作请求和存储器页写操作请求,所述存储器页读请求包含可配置直接内存存取所需的数据传输描述;所述固态硬盘的串行硬件驱动器接口以及存储器控制器根据所述同步机制执行宿主机写操作、存储器页读操作以及存储器页写操作。根据本发明的数据管理方法,所述同步机制具体为同步执行所述宿主机写操作请求和所述存储器页读操作请求,当所述存储器页读操作请求和所述宿主机写操作请求完成后执行所述存储器页写操作请求。根据本发明的数据管理方法,所述可配置直接内存存取的数据传输描述具体为将存储器读出页中指定逻辑块地址区间的数据传输到所述页缓冲区中,将需要被修改部分的逻辑块地址区间的数据丢弃。根据本发明的数据管理方法,所述同步机制具体为所述微控制器为所述页缓冲区在内存中设置对应的同步描述符,所述同步描述符包括累加计数变量和目标计数变量, 所述累加计数变量的初始值为0,所述目标计数变量的初始值为2 ;所述存储器控制器执行存储器页读操作后将所述累加计数变量的值加1,且所述串行硬件驱动器接口执行宿主机写操作后将所述累加计数变量的值加1 ;当所述累加计数变量的值等于所述目标计数变量的初始值后,所述存储器控制器执行所述存储器页写操作。根据本发明的数据管理方法,所述串行硬件驱动器接口为串行高级技术附件。本发明还提供一种固态硬盘,所述固态硬盘包括微控制器,用于当所述固态硬盘收到宿主机的逻辑块地址写命令时;为所述逻辑块地址写命令分配页缓冲区,并基于所述页缓冲区建立具有同步机制的宿主机写操作请求、存储器页读操作请求和存储器页写操作请求,其中存储器页读请求包含可配置直接内存存取所需的数据传输描述;串行硬件驱动器接口,用于根据所述同步机制执行宿主机写操作;存储器控制器,用于根据所述同步机制执行存储器页读操作和存储器页写操作。根据本发明的固态硬盘,所述同步机制具体为同步执行所述宿主机写操作请求和所述存储器页读操作请求,当存储器页读操作请求和宿主机写操作请求完成后执行所述存储器页写请求。根据本发明的固态硬盘,所述可配置直接内存存取的数据传输描述具体为将存储器读出页中指定逻辑块地址区间的数据传输到所述页缓冲区中,将需要被修改部分的逻辑块地址区间的数据丢弃。根据本发明的固态硬盘,所述同步机制具体为所述微控制器为所述页缓冲区在内存中设置对应的同步描述符,所述同步描述符包括累加计数变量和目标计数变量,所述累加计数变量的初始值为0,所述目标计数变量的初始值为2 ;所述存储器控制器执行存储器页读操作后将所述累加计数变量的值加1,且所述串行硬件驱动器接口执行宿主机写操作后也将所述累加计数变量的值加1 ;当所述累加计数变量的值等于所述目标计数变量的初始值后,所述存储器控制器执行所述存储器页写操作。根据本发明的固态硬盘,所述串行硬件驱动器接口为串行高级技术附件。本发明通过在宿主机写操作请求、存储器页读操作请求和存储器页写操作请求间建立同步机制,使存储器页读操作请求(即修改操作)和宿主机写操作请求并行,可提高读-修改-写操作性能。通过引入可配置直接内存存取,无需使用额外的页缓冲区、更不需要引入额外的归并操作,由于在存储器页读操作时“被修改的数据”不会传输,还可进一步节省内存总线带宽;同时通过引入同步机制,微控制器只需要在开始时建立所需的读-修改-写操作请求及其同步描述符,无需参与读-修改-写操作后续过程,降低了微控制器的参与程度。借此,本发明能在不额外增加缓冲区的前提下、降低微控制器的参与程度、节省内存总线带宽、提高读-修改-写操作的性能。


图1是现有技术中一种RMW数据管理方法的示意图;图2是现有技术中另一种RMW数据管理方法的示意图;图3是本发明本一种固态硬盘读-修改-写操作的数据管理方法的流程图;图4是本发明一种固态硬盘读-修改-写操作的数据管理方法的应用实施例;图5是本发明一种固态硬盘读-修改-写操作的数据管理方法中可配置DMA的具体实现方法的示意图;图6是本发明一种固态硬盘的结构示意图。
具体实施例方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。如图3所示,本发明一种固态硬盘读-修改-写操作的数据管理方法,其主要包括以下步骤步骤S301,固态硬盘收到宿主机的逻辑块地址写命令。其中宿主机为固态硬盘的使用者,例如计算机,具体为BIOS (Basic Input Output System,基本输入输出系统)或操作系统。步骤S302,固态硬盘的微控制器为逻辑块地址写命令分配页缓冲区,并基于页缓冲区建立具有同步机制的宿主机写操作请求、存储器页读操作请求和存储器页写操作请求,存储器页读请求包含可配置直接内存存取所需的数据传输描述。宿主机写操作请求即为宿主机对指定逻辑块地址的修改操作。该存储器为NAND FLASH闪存芯片。在本步骤中,宿主机写操作请求、存储器页读操作请求和存储器页写操作请求之间的同步机制具体为同步执行宿主机写操作请求和存储器页读操作请求,当存储器页读操作请求和宿主机写操作请求完成后执行所述存储器页写请求。在实际操作过程中,可将同步机制具体描述为微控制器为页缓冲区在内存中设置对应的同步描述符,同步描述符包括累加计数变量和目标计数变量,累加计数变量的初始值为0,目标计数变量的初始值为2 ;存储器控制器执行存储器页读操作后将所述累加计数变量的值加1,且串行硬件驱动器接口执行宿主机写操作后也将所述累加计数变量的值加1 ;当累加计数变量的值等于目标计数变量的初始值后,存储器控制器执行存储器页写操作。串行硬件驱动器接口优选为 SATA (Serial Advanced Technology Attachment,串行高级技术附件,一种基于行业标准的串行硬件驱动器接口)。在本步骤中,可配置直接内存存取的数据传输描述具体为将存储器读出页中指定逻辑块地址区间的数据传输到页缓冲区中,将需要被修改部分的逻辑块地址区间的数据丢弃。步骤S303,固态硬盘的串行硬件驱动器接口以及存储器控制器根据同步机制执行宿主机写操作、存储器页读操作以及存储器页写操作。其中,宿主机写操作由串行硬件驱动器接口执行,存储器页读操作以及存储器页写操作由存储器控制器执行。本发明通过在宿主机写操作请求、存储器页读操作请求和存储器页写操作请求间建立同步机制,使存储器页读操作请求(即修改操作)和宿主机写操作请求并行,可提高读-修改-写操作性能。通过引入可配置直接内存存取,无需使用额外的页缓冲区、更不需要引入额外的归并操作,由于在存储器页读操作时“被修改的数据”不会传输,还可进一步节省内存总线带宽;同时通过引入同步机制,微控制器只需要在开始时建立所需的读-修改-写操作请求及其同步描述符,无需参与读-修改-写操作后续过程,降低了微控制器的参与程度。图4示出了本发明的一种应用实施例,SSD(Solid State Disk,固态硬盘)中包括NAND FLASH芯片禾Π MCU(Micro control unit,微控制器),NAND FLASH芯片中集成有 NFC(Nand flash controller,闪存控制器),同时固态硬盘还包括SATA。当SSD收到Host (宿主机)关于LBA (Logical Block Address,逻辑块地址)写命令时;MCU为该LBA写命令在memory (内存)中分配page buffer (页缓冲区),并在memory 中围绕该page buffer分别建立Host写请求(1. 3)、Nand page读请求(1)和Nand page 写请求(2)。其中Nand page读请求(1)包含可配置DMA (Direct Memory Access,直接内存存取)所需的数据传输描述。可配置DMA的具体实现方法如图5所示,其可根据软件要求, 将NAND FLASH芯片的读出页中指定的LBA区间传输到指定的LPA(Logical page Address, 逻辑页地址)缓冲区中,将需要被修改部分LBA区间的数据丢弃。MCU为该LBA写命令相关的操作请求基于sync (同步)机制建立“Sync描述符”。 “Sync描述符”简单描述为Nand page写请求⑵被设置为只有当“Sync描述符”被Nand page读请求(1)和Host写请求(1. 3)更新后才能进一步执行;Nand page读请求(1)和 Host写请求(1. 3)完成后软件会分别自动对“Sync描述符”进行更新,并触发Sync机制更新检查,此时软件可将Nand page写请求( 继续向下执行。Sync(同步)机制是一种不同硬件模块之间的握手机制。具体而言,每个LPA数据缓冲区在MEMORY中拥有对应的“SYNC描述符” sync_cur_cnt和sync_target_cnt,可简单理解为两个计数变量,sync_cur_cnt为累加计数变量,sync_target_cnt为目标计数变量。对于一个需要进行RMW操作的LPA,软件会一次性为其建立RMW相关的3个操作,并设置 sync_cur_cnt 为 0,sync_target_cnt 为 2 ;NFC 负责发起 RMW_READ,该操作完成后 NFC 将 sync_cur_cnt 力卩 1 ;SATA 完成 RMW_M0DIFY 后也将 sync_cur_cnt 加一;对于 RMW_WRITE 操作,NFC需要等到sync_cur_cnt等于sync_target_cnt时才能执行。由此可见,MCU只需要在LBA写命令开始时,为其分配页缓冲区、建立操作请求、 Sync描述符就可以了 ;而无需参与RMW的具体操作过程。利用Read和Modify并行操作的同时,没有耗费额外的带宽和缓冲区。如图6所示,本发明相应提供一种固态硬盘100,其包括微控制器10,用于当所述固态硬盘收到宿主机关于逻辑块地址写命令时;为所述逻辑块地址写命令分配页缓冲区,并基于所述页缓冲区建立具有同步机制的宿主机写操作请求、存储器页读操作请求和存储器页写操作请求,其中存储器页读请求包含可配置直接内存存取所需的数据传输描述;串行硬件驱动器接口 20,用于根据所述同步机制执行宿主机写操作;
存储器控制器30,用于根据所述同步机制执行存储器页读操作和存储器页写操作。串行硬件驱动器接口优选为SATA(Serial Advanced Technology Attachment,串行高级技术附件,一种基于行业标准的串行硬件驱动器接口)。显然,固态硬盘还应包括存储器 40等结构。综上所述,本发明通过在宿主机写操作请求、存储器页读操作请求和存储器页写操作请求间建立同步机制,使存储器页读操作请求(即修改操作)和宿主机写操作请求并行,可提高读-修改-写操作性能。通过引入可配置直接内存存取,无需使用额外的页缓冲区、更不需要引入额外的归并操作,由于在存储器页读操作时“被修改的数据”不会传输,还可进一步节省内存总线带宽;同时通过引入同步机制,微控制器只需要在开始时建立所需的读-修改-写操作请求及其同步描述符,无需参与读-修改-写操作后续过程,降低了微控制器的参与程度。当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
权利要求
1.一种固态硬盘读-修改-写操作的数据管理方法,其特征在于,所述方法包括如下步骤固态硬盘收到宿主机的逻辑块地址写命令;所述固态硬盘的微控制器为所述逻辑块地址写命令分配页缓冲区,并基于所述页缓冲区建立具有同步机制的宿主机写操作请求、存储器页读操作请求和存储器页写操作请求, 所述存储器页读请求包含可配置直接内存存取所需的数据传输描述;所述固态硬盘的串行硬件驱动器接口以及存储器控制器根据所述同步机制执行宿主机写操作、存储器页读操作以及存储器页写操作。
2.根据权利要求1所述的数据管理方法,其特征在于,所述同步机制具体为同步执行所述宿主机写操作请求和所述存储器页读操作请求,当所述存储器页读操作请求和所述宿主机写操作请求完成后执行所述存储器页写操作请求。
3.根据权利要求1所述的数据管理方法,其特征在于,所述可配置直接内存存取的数据传输描述具体为将存储器读出页中指定逻辑块地址区间的数据传输到所述页缓冲区中,将需要被修改部分的逻辑块地址区间的数据丢弃。
4.根据权利要求1所述的数据管理方法,其特征在于,所述同步机制具体为所述微控制器为所述页缓冲区在内存中设置对应的同步描述符,所述同步描述符包括累加计数变量和目标计数变量,所述累加计数变量的初始值为0,所述目标计数变量的初始值为2 ;所述存储器控制器执行存储器页读操作后将所述累加计数变量的值加1,且所述串行硬件驱动器接口执行宿主机写操作后将所述累加计数变量的值加1 ;当所述累加计数变量的值等于所述目标计数变量的初始值后,所述存储器控制器执行所述存储器页写操作。
5.根据权利要求1所述的数据管理方法,其特征在于,所述串行硬件驱动器接口为串行高级技术附件。
6.一种固态硬盘,其特征在于,所述固态硬盘包括微控制器,用于当所述固态硬盘收到宿主机的逻辑块地址写命令时;为所述逻辑块地址写命令分配页缓冲区,并基于所述页缓冲区建立具有同步机制的宿主机写操作请求、存储器页读操作请求和存储器页写操作请求,其中存储器页读请求包含可配置直接内存存取所需的数据传输描述;串行硬件驱动器接口,用于根据所述同步机制执行宿主机写操作;存储器控制器,用于根据所述同步机制执行存储器页读操作和存储器页写操作。
7.根据权利要求6所述的固态硬盘,其特征在于,所述同步机制具体为同步执行所述宿主机写操作请求和所述存储器页读操作请求,当存储器页读操作请求和宿主机写操作请求完成后执行所述存储器页写请求。
8.根据权利要求6所述的固态硬盘,其特征在于,所述可配置直接内存存取的数据传输描述具体为将存储器读出页中指定逻辑块地址区间的数据传输到所述页缓冲区中,将需要被修改部分的逻辑块地址区间的数据丢弃。
9.根据权利要求6所述的固态硬盘,其特征在于,所述同步机制具体为所述微控制器为所述页缓冲区在内存中设置对应的同步描述符,所述同步描述符包括累加计数变量和目标计数变量,所述累加计数变量的初始值为0,所述目标计数变量的初始值为2 ;所述存储器控制器执行存储器页读操作后将所述累加计数变量的值加1,且所述串行硬件驱动器接口执行宿主机写操作后也将所述累加计数变量的值加1 ;当所述累加计数变量的值等于所述目标计数变量的初始值后,所述存储器控制器执行所述存储器页写操作。
10.根据权利要求6所述的固态硬盘,其特征在于,所述串行硬件驱动器接口为串行高级技术附件。
全文摘要
本发明适用于固态硬盘及信息存储领域,提供了一种固态硬盘及其读-修改-写操作的数据管理方法,所述数据管理方法包括固态硬盘收到宿主机的逻辑块地址写命令;固态硬盘的微控制器为逻辑块地址写命令分配页缓冲区,并基于页缓冲区建立具有同步机制的宿主机写操作请求、存储器页读操作请求和存储器页写操作请求,存储器页读请求包含可配置直接内存存取所需的数据传输描述;固态硬盘的串行硬件驱动器接口以及存储器控制器根据同步机制执行宿主机写操作、存储器页读操作以及存储器页写操作。本发明能在不额外增加缓冲区的前提下,降低微控制器的参与程度、节省内存总线带宽、提高读-修改-写操作的性能。
文档编号G06F3/06GK102566939SQ20111042629
公开日2012年7月11日 申请日期2011年12月19日 优先权日2011年12月19日
发明者徐伟华 申请人:记忆科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1