一种固态硬盘及其混合映射方法
【专利摘要】本发明适用于固态存储领域,提供了一种固态硬盘及其混合映射方法。该混合映射方法包括:根据闪存芯片的容量和块大小,建立逻辑块和物理块的块映射表;根据内存页框的大小和逻辑页框在块内的地址偏移建立基于内存页框的逻辑页框的页框映射表,页框映射表记录一个或多个逻辑页框和一个物理页的对应关系;接收读写操作请求,并将所述读写操作请求整合成页框大小,对读操作请求进行分裂和对齐,对写操作请求进行分裂和部分写。借此,本发明能使闪存芯片具有较好读写性能,减少写放大,又避免了过大的映射表。
【专利说明】一种固态硬盘及其混合映射方法
【技术领域】
[0001]本发明涉及固态存储领域,更具体地说是涉及一种固态硬盘及其混合映射方法。【背景技术】
[0002]固态硬盘在日常生活中应用越来越普遍,固态硬盘通常包括多个闪存芯片,每个闪存芯片包括一个或多个晶粒,每个晶粒包括多个块,每个块中包含多个页。块是闪存中最小的最小擦除单位,页是最小写入单位。
[0003]固态硬盘按照所定义的擦除单位(即在擦除操作期间被擦除的数据块尺寸)和所定义的写单位(即在写操作期间被写的数据块尺寸)来操作。在擦除单位和写单位之间的块尺寸的差异通常需要使用闪存转换层(Flash Translation Layer)。FTL本质上是一种地址映射方案,可以使用页映射、块映射或混合映射来实现地址映射。页映射表用于页映射,也即页映射表被用于在逻辑页地址和对应的物理页地址之间基于页到页执行映射操作。块映射表用于块映射,也即块映射表用于在逻辑块地址和对应的物理块地址之间基于块到块执行映射操作。混合映射方法本质上使用页映射和块映射技术两者。目前闪存芯片的页大小越来越大,8K已经是主流,16K不久也将会成为主流,而目前最常用的I/O请求大小一般是基于内存管理的页框大小,为4k。若采用现有映射方法,不利于减小写放大和映射表的大小,不利于提闻闪存芯片的与入速度。
【发明内容】
[0004]针对上述的缺陷,本发明的目的在于提供一种固态硬盘及其混合映射方法,能使闪存芯片具有较好读写性能,减少写放大,又避免了过大的映射表。
[0005]为了实现上述目的,本发明提供一种固态硬盘混合映射方法,包括:
[0006]根据闪存芯片的容量和块大小,建立逻辑块和物理块的块映射表;
[0007]根据内存页框的大小和逻辑页框在块内的地址偏移建立基于内存页框的逻辑页框的页框映射表,所述页框映射表记录一个或多个逻辑页框和一个物理页的对应关系;
[0008]接收读写操作请求,并将所述读写操作请求整合成页框大小,对读操作请求进行分裂和对齐,对写操作请求进行分裂和部分写。
[0009]根据本发明的固态硬盘混合映射方法,对读操作请求进行分裂和对齐的步骤包括:对所述读操作请求进行基于页框大小对齐的分裂操作,小于一个页框的读操作请求进行补齐操作,使每个读操作请求都是基于页框的大小。
[0010]根据本发明的固态硬盘混合映射方法,对写操作请求进行分裂和部分写的步骤包括:对所述写操作请求进行基于页框大小对齐的分裂操作,大于页框大小的写请求被分裂成以页框大小的多个小的请求,分裂后小于单个页框大小的写请求,进行部分写入。
[0011]根据本发明的固态硬盘混合映射方法,小于一个页框的读操作请求进行补齐操作的步骤之后还包括:将读取的多余部分丢弃。
[0012]根据本发明的固态硬盘混合映射方法,分裂后小于单个页框大小的写请求,进行部分写入的步骤包括:将整个页框全部读出,同时对该页框的其它读写请求进行缓存,完成写操作以后,再进行相关的读写操作。
[0013]本发明相应提供一种固态硬盘,包括闪存转换层、闪存以及内存,所述闪存转换层包括:
[0014]块映射表建立模块,用于根据闪存芯片的容量和块大小和建立逻辑块和物理块的块映射表;
[0015]页框映射表建立模块,用于根据内存页框的大小和逻辑页框在块内的地址偏移建立基于内存页框的逻辑页框的页框映射表,所述页框映射表记录一个或多个逻辑页框和一个物理页的对应关系;
[0016]处理模块,用于接收读写操作请求,并将所述读写操作请求整合成页框大小,对读操作请求进行分裂和对齐,对写操作请求进行分裂和部分写。
[0017]根据本发明的固态硬盘,所述处理模块还用于对所述读操作请求进行基于页框大小对齐的分裂操作,小于一个页框的读操作请求进行补齐操作,使每个读操作请求都是基于页框的大小。
[0018]根据本发明的固态硬盘,所述处理模块还用于对所述写操作请求进行基于页框大小对齐的分裂操作,大于页框大小的写请求被分裂成以页框大小的多个小的请求,分裂后小于单个页框大小的写请求,进行部分写入。
[0019]根据本发明的固态硬盘,所述处理模块还用于将读取的多余部分丢弃。
[0020]根据本发明的固态硬盘,所述处理还模块还用于在部分写入时将整个页框全部读出,同时对该页框的其它读写请求进行缓存,完成写操作以后,再进行相关的读写操作。
[0021]相对于现有技术,本发明根据固态硬盘运行的系统架构得到内存管理的内存页框大小(通常为4k),然后根据该页框大小和闪存芯片的块大小做混合映射。由于操作系统中处理的I/O请求大小一般是基于内存页框大小,而本发明中建立基于内存页框大小的页框映射表,可以提闻i/o性能,进而提闻了整个系统的性能,因此本发明基于页框大小进行映射能够获得较高的I/o性能和减少写入放大,并且采用块映射和基于内存页框大小的页框映射两级映射机制,能够减少在大容量固态盘下的过大映射表。从而本发明能使闪存芯片具有较好读写性能,减少写放大,又避免了过大的映射表。
【专利附图】
【附图说明】
[0022]图1为本发明固态硬盘的原理框图;
[0023]图2为本发明一种实施例的固态硬盘中映射关系的示意图;
[0024]图3为本发明固态硬盘混合映射方法的流程图。
【具体实施方式】
[0025]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0026]如图1所示,本发明一种固态硬盘100,包括闪存转换层10、闪存芯片20以及内存30,闪存转换层10包括块映射表建立模块11、页框映射表建立模块12以及处理模块13。[0027]块映射表建立模块11,用于根据闪存芯片20容量和的块大小建立逻辑块和物理块的块映射表。该块映射表用于在逻辑块地址和对应的物理块地址之间基于块到块执行映射操作。
[0028]页框映射表建立模块12,用于根据内存页框的大小和逻辑页框在块内的地址偏移建立基于内存页框的逻辑页框的页框映射表,所述页框映射表记录多个逻辑页框和一个物理页的对应关系。该页框映射表包括了逻辑页框的地址偏移信息。页框映射表与块映射表中每个块是相关的,本质和现有技术中块页通用的块页两级映射是没有区别的,只不过现在的页是基于内存页框大小的逻辑页。逻辑页框与物理页对应的,一个闪存的页可能对应一个或者多个逻辑页框,如该发明的图2所示。
[0029]处理模块13,用于接收读写操作请求,并将读写操作请求整合成页框大小,对读操作请求进行分裂和对齐,对写操作请求进行分裂和部分写。
[0030]在闪存转换层10接收到文件系统发来的读操作请求时,对读操作请求进行基于页框大小对齐的分裂操作,小于一个页框的读操作请求进行补齐操作,使下发固件的每个读操作请求都是基于页框的大小,并将读取的多余部分丢弃。例如逻辑页框大小为4k,闪存转换层接收到3K的读命令,且该命令基于4k逻辑页框的首地址对齐,那么把这个读请求补齐为4k的读请求,下发给固件进行读取,将数据返回给上层应用时,把多余读取的Ik数据的内存直接释放即可。另外,因为补齐以后产生的多段散列表,进行直接内存访问的时候需要注意。例如:上层应用需要读取3k数据,补齐以后读取的是4k数据,而多分配的这Ik的内存,需要保证其是可以进行DMA (Direct Memory Access,直接内存访问)操作的,不是所有分配的内存都可以进行DMA操作。
[0031]对齐就是数据在内存中的偏移地址必须是一个字的倍数,以提高读取数据时的性能。对于一些和PCI设备(插在这些PCI插槽上的设备,如声卡、网卡、MODEM等)交互数据时,不按一定的位数对齐,DMA操作将无法进行。
[0032]在闪存转换层接收到文件系统发来的写操作请求时,对写操作请求进行基于页框大小对齐的分裂操作,大于页框大小的写请求被分裂成以页框大小的多个小的请求,分裂后小于单个页框大小的写请求,进行部分写入。部分写入时将整个页框全部读出,同时对该页框的其它读写请求进行缓存,完成写操作以后,再进行相关的读写操作,避免对该页框的数据I/o产生不一致性。例如:例如逻辑页框大小为4k,闪存转换层10接收到一个首地址对齐的5k的写操作,处理模块13先把该操作分裂成一个4k对齐的写操作和一个Ik的写操作,4k的写操作可以直接下发,Ik的写操作需要先把基于这个Ik写操作的首地址的4k数据读到内存中,然后把Ik的数据修改这4k数据中的Ik数据,再把数据写到闪存,在这个途中,该闪存的4k数据不能被读写,避免数据的不一致性。对于要对这4k数据进行读写的请求进行缓存,等这个写操作返回以后,再进行相关操作,可以有效减少写放大。
[0033]相对于现有技术,本发明根据固态硬盘运行的系统架构得到内存管理的内存页框大小(通常为4k),然后根据该页框大小和闪存芯片的块大小做混合映射。由于操作系统中处理的I/O请求大小一般是基于内存页框大小,而本发明中建立基于内存页框大小的页框映射表,可以提高I/o性能,进而提高了整个系统的性能,对于非映射页框大小的IO操作,可能要多一些转换,甚至为了避免数据不一致,要做多次IO操作(例如部分写),因此本发明基于页框大小进行映射能够获得较高的I/o性能和减少写入放大,并且采用块映射和基于内存页框大小的页框映射两级映射机制,能够减少在大容量固态盘下的过大映射表。从而本发明能使闪存芯片具有较好读写性能,减少写放大,又避免了过大的映射表。
[0034]根据本发明的一个实施例,假设在通用的X86-64系统中,闪存芯片的页大小为8k,而内存页框的大小为4k,这样两级映射表首先是块,然后块内是基于4k的映射,而不是基于闪存芯片的页大小进行映射,其映射关系如图2所示。若闪存转换层10接收到一个大小5K的读操作命令和一个大小3K的写操作命令,5k的读操作命令会被进行分裂,而3k的写操作命令会使用部分写技术,当这些命令下发到闪存转换层10时,都会被整合成4K的命令,具体的形式会因为该I/O命令是否是对齐的,比如5K的读操作命令,可能被整合为2个大小4K的I/O命令,也有可能是3个大小为4K的I/O命令。
[0035]如图3所示,本发明相应提供一种固态硬盘混合映射方法,其通过如图1所示的固态硬盘100实现,该方法包括:
[0036]步骤S301,根据闪存芯片的块大小、容量以及内存页框大小,建立逻辑块和物理块的块映射表。本步骤通过块映射表建立模块11实现。块映射表用于在逻辑块地址和对应的物理块地址之间基于块到块执行映射操作。
[0037]步骤S302,计算页框的块内偏移,根据页框的块内偏移对块地址映射表中的页框映射表进行修改,页框映射表记录一个逻辑页框和一个物理页的对应关系。本步骤通过页框映射表建立模块11实现。
[0038]步骤S303,接收读写操作请求,并将读写操作请求整合成页框大小,对读操作请求进行分裂和对齐,对写操作请求进行分裂和部分写。本步骤通过处理模块13实现。
[0039]优选的是,步骤S303中,对读操作请求进行分裂和对齐的步骤包括:对读操作请求进行基于页框大小对齐的分裂操作,小于一个页框的读操作请求进行补齐操作,使下发固件的每个读操作请求都是基于页框的大小。并且,小于一个页框的读操作请求进行补齐操作的步骤之后还包括:将读取的多余部分丢弃
[0040]优选的是,步骤S303中,对写操作请求进行分裂和部分写的步骤包括:对写操作请求进行基于页框大小对齐的分裂操作,大于页框大小的写请求被分裂成以页框大小的多个小的请求,分裂后小于单个页框大小的写请求,进行部分写入。部分写入的步骤包括:将整个页框全部读出,同时对该页框的其它读写请求进行缓存,完成写操作以后,再进行相关的读写操作。
[0041]综上所述,相对于现有技术,本发明根据固态硬盘运行的系统架构得到内存管理的内存页框大小(通常为4k),然后根据该页框大小和闪存芯片的块大小做混合映射。由于操作系统中处理的I/O请求大小一般是基于内存页框大小,而本发明中建立基于内存页框大小的页框映射表,可以提高I/o性能,进而提高了整个系统的性能,因此本发明基于页框大小进行映射能够获得较高的I/o性能和减少写入放大,并且采用块映射和基于内存页框大小的页框映射两级映射机制,能够减少在大容量固态盘下的过大映射表。从而本发明能使闪存芯片具有较好读写性能,减少写放大,又避免了过大的映射表。
[0042]当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
【权利要求】
1.一种固态硬盘混合映射方法,其特征在于,包括: 根据闪存芯片的容量和块大小,建立逻辑块和物理块的块映射表; 根据内存页框的大小和逻辑页框在块内的地址偏移建立基于内存页框的逻辑页框的页框映射表,所述页框映射表记录一个或多个逻辑页框和一个物理页的对应关系; 接收读写操作请求,并将所述读写操作请求整合成页框大小,对读操作请求进行分裂和对齐,对写操作请求进行分裂和部分写。
2.根据权利要求1所述的固态硬盘混合映射方法,其特征在于,对读操作请求进行分裂和对齐的步骤包括: 对所述读操作请求进行基于页框大小对齐的分裂操作,小于一个页框的读操作请求进行补齐操作,使每个读操作请求都是基于页框的大小。
3.根据权利要求1所述的固态硬盘混合映射方法,其特征在于,对写操作请求进行分裂和部分写的步骤包括: 对所述写操作请求进行基于页框大小对齐的分裂操作,大于页框大小的写请求被分裂成以页框大小的多个小的请求,分裂后小于单个页框大小的写请求,进行部分写入。
4.根据权利要求2所述的固态硬盘混合映射方法,其特征在于,小于一个页框的读操作请求进行补齐操作的步骤之后还包括: 将读取的多余部分丢弃。
5.根据权利要求3所述的固态硬盘混合映射方法,其特征在于,分裂后小于单个页框大小的写请求,进行部分写 入的步骤包括: 将整个页框全部读出,同时对该页框的其它读写请求进行缓存,完成写操作以后,再进行相关的读写操作。
6.一种固态硬盘,包括闪存转换层、闪存芯片以及内存,其特征在于,所述闪存转换层包括: 块映射表建立模块,用于根据闪存芯片的容量和块大小和建立逻辑块和物理块的块映射表; 页框映射表建立模块,用于根据内存页框的大小和逻辑页框在块内的地址偏移建立基于内存页框的逻辑页框的页框映射表,所述页框映射表记录一个或多个逻辑页框和一个物理页的对应关系; 处理模块,用于接收读写操作请求,并将所述读写操作请求整合成页框大小,对读操作请求进行分裂和对齐,对写操作请求进行分裂和部分写。
7.根据权利要求6所述的固态硬盘,其特征在于,所述处理模块还用于对所述读操作请求进行基于页框大小对齐的分裂操作,小于一个页框的读操作请求进行补齐操作,使每个读操作请求都是基于页框的大小。
8.根据权利要求6所述的固态硬盘,其特征在于,所述处理模块还用于对所述写操作请求进行基于页框大小对齐的分裂操作,大于页框大小的写请求被分裂成以页框大小的多个小的请求,分裂后小于单个页框大小的写请求,进行部分写入。
9.根据权利要求7所述的固态硬盘,其特征在于,所述处理模块还用于将读取的多余部分丢弃。
10.根据权利要求8所述的固态硬盘,其特征在于,所述处理还模块还用于在部分写入时将整个页框全部读出,同时对该页框的其它读写请求进行缓存,完成写操作以后,再进行相关的读写 操作。
【文档编号】G06F12/08GK103440206SQ201310316321
【公开日】2013年12月11日 申请日期:2013年7月25日 优先权日:2013年7月25日
【发明者】冯旭刚 申请人:记忆科技(深圳)有限公司