CN102831072A - 闪存设备及其管理方法、数据读写方法及读写装置 - Google Patents
闪存设备及其管理方法、数据读写方法及读写装置 Download PDFInfo
- Publication number
- CN102831072A CN102831072A CN201210284917XA CN201210284917A CN102831072A CN 102831072 A CN102831072 A CN 102831072A CN 201210284917X A CN201210284917X A CN 201210284917XA CN 201210284917 A CN201210284917 A CN 201210284917A CN 102831072 A CN102831072 A CN 102831072A
- Authority
- CN
- China
- Prior art keywords
- page
- logical
- lpage
- piece
- write
- 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.)
- Granted
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System (AREA)
Abstract
本发明涉及一种闪存设备及其管理方法、数据读写方法及读写装置。一种闪存设备的管理方法,包括以下步骤:建立逻辑块和物理块的块映射表,所述块映射表中记录逻辑块和物理块的对应关系;根据第一条写命令中的起始逻辑地址和写入长度计算并记录页偏移量;将逻辑块中的逻辑页数加1,并根据所述页偏移量计算逻辑块中第一个逻辑页和最后一个逻辑页所占扇区数,对所述逻辑块与物理块中的页映射表进行修改;所述页映射表记录一个逻辑块中逻辑页和物理页的对应关系。上述闪存设备的管理方法,将逻辑块和物理块的页映射表进行修改,从而可以在后续的数据写入中有效减少因闪存页不对齐而造成的频繁的进行数据搬移操作,提高了闪存设备的数据写入效率。
Description
技术领域
本发明涉及存储装置,特别是涉及一种闪存设备及其管理方法、数据读写方法及读写装置。
背景技术
闪存设备在日常生活中应用越来越普遍,闪存设备的写入速度成为衡量闪存设备性能的重要指标,提高闪存设备的写入速度将大大提高数据处理效率,有利于扩展闪存设备的应用。
闪存的物理构成为:每个封装片内包含一个或多个晶粒;每个晶粒中包含多个块;每个块中包含多个页;每个页中一般被用户划分成一个或多个扇区。块是闪存中的最小擦除单位,页是最小写入单位。物理上,闪存是以页为单位管理的,而逻辑上则是以扇区为单位管理,一个页以一个或多个扇区为一组,分组存放在闪存芯片中。
现有的文件管理系统(例如FAT文件系统)对闪存设备写入数据的过程是:先写目录区、FAT区等隐藏区,再写数据区。而闪存设备是以页为最小单位进行管理的,要写入的数据往往不是从闪存设备的页开头开始,而是从某页的中部开始写,又在某页的中间结束。由于闪存的特性,对某页写数据如果不是从该页的开头开始写,就要把该页以及该页所在的块上保存的原有数据搬移到一个临时块,把要写的数据也写到该临时块对应的页,再把该页所在的块擦除,然后将原有数据和新写数据一起写入该块,整个过程非常耗时影响数据的写入效率,还增加了闪存块的磨损。如图1所示,闪存芯片中每个闪存块(block)包括128个闪存页(page),每个闪存页包括16个扇区(sector),假设主机给闪存设备发送一个写命令,所述写命令中的起始逻辑地址的页偏移量为4个扇区,写入长度为32个扇区,则如图1中所示,因闪存设备中最小写入单位为页,因此在写入时需先将page0的前4个扇区的旧数据写入该页,然后再写入新数据,写完新数据后还需写入page2的后12个扇区的旧数据,才算完整的执行了该写命令,由上可知,由于闪存页不对齐,在写入过程中需不断的进行旧数据的拷贝搬移操作,降低了闪存设备的数据写入效率。
发明内容
基于此,有必要针对现有的闪存设备在进行数据写入操作时写入速度慢的问题,提供一种能提高数据写入效率的闪存设备的管理方法。
一种闪存设备的管理方法,包括以下步骤:
建立逻辑块和物理块的块映射表,所述块映射表中记录逻辑块和物理块的对应关系;
根据第一条写命令中的起始逻辑地址和写入长度计算并记录页偏移量;
将逻辑块中的逻辑页数加1,并根据所述页偏移量计算逻辑块中第一个逻辑页和最后一个逻辑页所占扇区数,对所述逻辑块与物理块中的页映射表进行修改;所述页映射表记录一个逻辑块中逻辑页和物理页的对应关系。
在其中一个实施例中,所述根据第一条写命令中的起始逻辑地址和写入长度计算并记录页偏移量的步骤包括:
将所述起始逻辑地址对每页扇区数取余,得到起始逻辑地址在块中的扇区偏移;
将所述起始逻辑地址在块中的扇区偏移和写入扇区长度求和,再将所述和对每页扇区数取余,得到所述页偏移量。
在其中一个实施例中,所述对所述逻辑块与物理块中的页映射表进行修改步骤包括以下步骤:
将逻辑块中的逻辑页数加1;
将逻辑块中的最后一个逻辑页和第一个逻辑页映射到物理块中的最后一个物理页,其中,逻辑块中的最后一个逻辑页映射到物理块中最后一个物理页的前部分,所述最后一个逻辑页所占的扇区数等于页偏移量,第一个逻辑页位于最后一个物理页的后部分,所述第一个逻辑页所占的扇区数等于每页扇区数减去页偏移量;
逻辑块中的其他逻辑页映射到物理块中的上一个物理页。
此外,还有必要提供一种闪存设备的数据写入方法。
一种闪存设备的数据写入方法,包括以下步骤:
获取建立逻辑块和物理块的块映射表后第一个写命令中的起始逻辑地址和写入扇区长度,计算出页偏移量;
将逻辑块中的逻辑页数加1,根据所述页偏移量计算逻辑块中第一个逻辑页及最后一个逻辑页所占扇区数;
将第一个逻辑页的数据写入临时块,其他数据按页顺序写入顺序块;
当顺序块只剩最后一个物理页时,将第一个逻辑页和最后一个逻辑页合并,写入顺序块的最后一个物理页,当前写命令中还未写入的数据写入下一个逻辑块。
在其中一个实施例中,当在数据写入的时候出现页偏移量和旧块中的页偏移量不一致时,按照新建立的块映射表后计算出的页偏移量进行写入。
此外,还有必要提供一种闪存设备的数据读出方法。
一种闪存设备的数据读出方法,包括如下步骤:
根据读命令中的起始逻辑地址和读出扇区长度确定读出数据所在的逻辑块,以及根据预先读出的扇区的数据确定页偏移量;
获取块映射表,根据块映射表找到逻辑块对应的物理块,再根据所述页偏移量和块映射表计算逻辑页;
获取页映射表,根据计算出的逻辑页和页映射表,找到对应的物理页,读出数据。
在其中一个实施例中,所述物理块为旧块、顺序块或临时块,所述旧块为存储旧数据的块;所述顺序块为当前顺序写入数据的块;所述临时块为临时存储数据的块所述根据页偏移量和块映射表计算逻辑页的步骤包括:
位于顺序块的数据按照顺序块的页偏移量计算逻辑页,位于旧块的数据按照旧块的页偏移量计算逻辑页。
此外,还有必要提供一种闪存设备。
一种闪存设备,包括:
建立模块,用于建立逻辑块和物理块的块映射表,所述块映射表中记录逻辑块和物理块的对应关系;
计算模块,用于根据第一条写命令中的起始逻辑地址和写入长度计算并记录页偏移量;
更新模块,用于将逻辑块中的逻辑页数加1,并根据页偏移量计算逻辑块中第一个逻辑页和最后一个逻辑页所占扇区数,对所述逻辑块与物理块中的页映射表进行修改;所述页映射表记录一个逻辑块中逻辑页和物理页的对应关系。
在其中一个实施例中,所述计算模块还用于将所述起始逻辑地址对每页扇区数取余,得到起始逻辑地址在块中的扇区偏移,以及将所述起始逻辑地址在块中的扇区偏移和写入扇区长度求和,再将所述和对每页扇区数取余,得到所述页偏移量。
在其中一个实施例中,所述更新模块包括:
变更逻辑页数模块,用于将逻辑块中的逻辑页数加1;
第一映射模块,用于将逻辑块中的最后一个逻辑页和第一个逻辑页映射到物理块中的最后一个物理页,其中,逻辑块中的最后一个逻辑页映射到物理块中最后一个物理页的前部分,所述最后一个逻辑页所占的扇区数等于页偏移量,第一个逻辑页位于最后一个物理页的后部分,所述第一个逻辑页所占的扇区数等于每页扇区数减去页偏移量;
第二映射模块,用于将逻辑块中的其他逻辑页映射到物理块中的上一个物理页。
此外,还有必要提供一种闪存设备的数据写入装置。
一种闪存设备的数据写入装置,包括:
页偏移量计算模块,用于获取建立逻辑块和物理块的块映射表后第一个写命令中的起始逻辑地址和写入扇区长度,计算出页偏移量;
扇区数确定模块,将逻辑块中的逻辑页数加1,根据页偏移量计算逻辑块中第一个逻辑页及最后一个逻辑页所占扇区数;
数据写入模块,用于将第一个逻辑页的数据写入临时块,其他数据按页顺序写入顺序块;
合并模块,用于当顺序块只剩最后一个物理页时,将第一个逻辑页和最后一个逻辑页合并;
所述数据写入模块还用于将合并后的第一个逻辑页和最后一个逻辑页写入顺序块的最后一个物理页,以及将当前写命令中还未写入的数据写入下一个逻辑块。
此外,还有必要提供一种闪存设备的数据读出装置。
一种闪存设备的数据读出装置,包括:
逻辑块确定模块,用于根据读命令中的起始逻辑地址和读出扇区长度确定读出数据所在的逻辑块,以及根据预先读出的扇区的数据确定页偏移量;
逻辑页计算模块,用于获取块映射表,根据块映射表找到逻辑块对应的物理块,再根据页偏移量和块映射表计算逻辑页;
数据读取模块,用于获取页映射表,根据所述页映射表和计算出的逻辑页,得到对应的物理页,读出数据。
上述闪存设备的管理方法、数据读写方法及其装置,将逻辑块中的最后一个逻辑页和第一个逻辑页映射到物理块中的最后一个物理页,而逻辑块中的其他逻辑页映射到物理块中的上一个物理页,从而使页地址对齐,因此可以在数据写入中有效减少因页地址不对齐而造成的频繁的进行数据搬移操作,从而提高闪存设备的数据写入速度。
附图说明
图1为传统的闪存设备管理方法对闪存设备写入数据的示意图;
图2为一个实施例中闪存设备的管理方法的流程图;
图3为一个实施例中修改页映射表的示意图;
图4为一个实施例中对所述逻辑块与物理块中的页映射表进行修改步骤的具体流程图;
图5为一个实施例中闪存设备的数据写入方法的流程图;
图6a为闪存设备的数据写入方法的一示意图;
图6b为闪存设备的数据写入方法的另一示意图;
图6c为闪存设备的数据写入方法的另一示意图;
图7a为传统的数据写入方法的示意图;
图7b为闪存设备的数据写入方法的另一示意图;
图8为一个实施例中闪存设备的数据读出方法的流程图;
图9为一个实施例中闪存设备的数据读出方法的示意图;
图10为一个实施例中闪存设备的内部结构示意图;
图11为一个实施例中闪存设备的更新模块的内部结构示意图;
图12为一个实施例中闪存设备的数据写入装置的内部结构示意图;
图13为一个实施例中闪存设备的数据读出装置的内部结构示意图。
具体实施方式
下面结合具体的实施例及附图对闪存设备及其管理方法、数据读写方法及装置的技术方案进行详细的描述,以使其更加清楚。
如图2所示,一种闪存设备的管理方法,包括以下步骤:
步骤S110,建立逻辑块和物理块的块映射表,该块映射表中记录逻辑块和物理块的对应关系。
具体的,每个逻辑块可能与多个物理块对应,物理块为旧块(old block)、顺序块(sequence block)或临时块(temp block),旧块为存储旧数据的块;顺序块为当前顺序写入数据的块;临时块为临时存储数据的块。
步骤S120,根据第一条写命令中的起始逻辑地址和写入长度计算并记录页偏移量。
在一个实施例中,步骤S120包括:将起始逻辑地址对每页扇区数取余,得到起始逻辑地址在块中的扇区偏移;将起始逻辑地址在块中的扇区偏移和写入扇区长度求和,再将该和对每页扇区数取余,得到页偏移量。此外,页偏移量记录在闪存页的冗余区。
例如,以闪存设备中每个闪存块包括128个闪存页,每个闪存页包括16个扇区为例,本发明均以该闪存设备为例,但不作为对本发明的限制。新建立逻辑块和物理块的映射表之后,第一条写命令中的起始逻辑地址为扇区0,写入长度为8个扇区,则根据上述方法计算后的起始逻辑地址在块中的扇区偏移为0个扇区,页偏移量为8个扇区;如新建立逻辑块和物理块的映射表之后,第一条写命令中的起始逻辑地址为扇区8,写入长度为8个扇区,则根据上述方法计算后的起始逻辑地址在块中的扇区偏移为8个扇区,页偏移量为0个扇区;如新建立逻辑块和物理块的映射表之后,第一条写命令中的起始逻辑地址为扇区8,写入长度为128个扇区则根据上述方法计算后的起始逻辑地址在块中的扇区偏移为8个扇区,页偏移量为8个扇区。
步骤S130,将逻辑块中的逻辑页数加1,并根据页偏移量计算逻辑块中第一个逻辑页和最后一个逻辑页所占扇区数,对逻辑块与物理块中的页映射表进行修改;页映射表记录一个逻辑块中逻辑页和物理页的对应关系。
具体的,采用该步骤S130的方式进行页映射表修改后,如果页偏移量为0个扇区,则最后一个逻辑页的大小为0,相当于一个逻辑页(逻辑页0)独占最后一个物理页。
进一步的,可根据修改后的页映射表,执行接收到的写命令,写入数据。
上述闪存设备的管理方法,通过将逻辑块中的逻辑页加1,将逻辑块和物理块的页映射表进行修改,从而可以在后续的数据写入过程中有效减少因闪存页不对齐而造成的频繁的进行数据搬移操作,提高了闪存设备的数据写入效率。
此外,每次新建立逻辑块和物理块的块映射表之后,都需要根据第一条写命令的起始逻辑地址和写入长度重新计算并记录页偏移量。
如图3所示,在一个实施例中,步骤S130包括以下步骤:
步骤S132,将逻辑块中的逻辑页数加1。
步骤S134,将逻辑块中的最后一个逻辑页和第一个逻辑页映射到物理块中的最后一个物理页,其中,逻辑块中的最后一个逻辑页映射到物理块中最后一个物理页的前部分,最后一个逻辑页所占的扇区数等于页偏移量,第一个逻辑页位于最后一个物理页的后部分,第一个逻辑页所占的扇区数等于每页扇区数减去页偏移量。
步骤S136,逻辑块中的其他逻辑页映射到物理块中的上一个物理页。
如图4所示,假设经过计算后知,页偏移量为8个扇区,则根据该页偏移量进行页映射表修改且所有页映射完成后,逻辑页128及逻辑页0映射为物理页127,其中,逻辑页128对应物理页127的前8个扇区,逻辑页0对应物理页127的后8个扇区;逻辑块中的逻辑页1映射到物理块中的物理页0,逻辑页2映射到物理页1,依此类推,逻辑页127映射到物理页126。图中,logpage指逻辑页,phypage指物理页。
如图5所示,一种数据写入方法,包括以下步骤:
步骤S210,获取建立逻辑块和物理块的块映射表后第一个写命令中的起始逻辑地址和写入扇区长度,计算出页偏移量。
步骤S220,将逻辑块中的逻辑页数加1,根据页偏移量计算逻辑块中第一个逻辑页及最后一个逻辑页所占扇区数。
步骤S230,将第一个逻辑页的数据写入临时块,其他数据按页顺序写入顺序块。
步骤S240,当顺序块只剩最后一个物理页时,将第一个逻辑页和最后一个逻辑页合并,写入顺序块的最后一个物理页,当前写命令中还未写入的数据写入下一个逻辑块。
如图6a所示,建立逻辑块和物理块的块映射表后,第一条写命令LBA=0,LEN=8,其中,LBA为起始逻辑地址,LEN为写入扇区长度,根据第一条写命令中的起始逻辑地址扇区0和写入扇区长度8,计算得到页偏移量为8个扇区,从而确定逻辑页0占8个扇区,逻辑页128占8个扇区,将逻辑页0(扇区0-7)的数据写入临时块的物理页0,第一条写命令执行完;如图6b所示,第二条写命令中起始逻辑地址为8,写入长度为128个扇区,因此该写命令中的数据按页顺序写入顺序块;再顺序执行其他写命令,如图6c所示,直到执行到第n条写命令(起始逻辑地址为扇区1928,写入长度为128个扇区),临时块中的逻辑页0(扇区0-7)会和逻辑页128(2040-2047)合并写入顺序块的最后一个物理页,这条命令中扇区2048-2055的数据会写入下一个逻辑块。
通过以上闪存设备的数据写入方法,可以有效减少因页地址不对齐而造成的频繁进行数据搬移操作,从而提高写入速度。
如图7a和图7b所示,以写命令中起始逻辑地址为扇区8,写入长度为128个扇区为例:如图7a所示,采用传统的数据写入方法,则首先需要将旧块上扇区0至扇区7上的旧数据拷贝搬移到临时块,再顺序写入128个扇区的数据,之后再将旧块上扇区136至143上的旧数据拷贝搬移到临时块的对应位置;如图7b所示,采用本发明提供的数据写入方法,先计算页偏移量,得页偏移量为8个扇区,之后根据页偏移量修改页映射表,根据修改后的页映射表执行写命令后,完全不需进行数据搬移,大大提高了数据的写入效率。其中,逻辑扇区0至逻辑扇区7的数据如果在之前的命令中已经写过了,则这部分数据就在临时块中,如果之前的命令没有写过,则这部分数据在旧块中。
通过进行以上页映射表的修改之后,由上可知,采用本发明提供的闪存管理方法及数据写入方法,在写入数据时,能够有效减少因页不对齐造成的需频繁进行数据的拷贝搬移操作,提高写入效率。
进一步的,在一个实施例中,当在数据写入的时候出现页偏移量和旧块中的偏移量不一致时,优先按照新建立的块映射表后计算出的页偏移量进行写入。具体的,按照新建立的块映射表后第一个写命令中的起始逻辑地址和写入扇区长度计算出页偏移量。
如图8所示,一种闪存设备的数据读出方法,包括如下步骤:
步骤S310,根据读命令中的起始逻辑地址和读出扇区长度确定读出数据所在的逻辑块,以及根据预先读出的扇区的数据确定页偏移量。
具体的,因对逻辑块和物理块的页映射表进行了修改,因此将闪存设备中的数据读取时,需要预先读一个扇区的数据来确定页偏移量。
步骤S320,获取块映射表,根据块映射表找到逻辑块对应的物理块,再根据页偏移量和块映射表计算逻辑页。
步骤S330,获取页映射表,根据计算出的逻辑页和页映射表,找到对应的物理页,读出数据。
如图9所示,旧块的页偏移量为0扇区,顺序块的页偏移量为8扇区。读命令中的起始逻辑地址为扇区0,读出长度为128个扇区,则根据页偏移量计算,从逻辑页0开始读取,由于map表(块映射表)中逻辑页0还属于旧块,则逻辑页0需要读取的范围是扇区0至扇区8,所以从旧块的逻辑页0位置读前面8个扇区出来;扇区8至扇区55,根据块映射表,属于顺序块,可以直接读取。扇区56开始,属于逻辑页4,根据块映射表,属于旧块,所以切换到旧块的页偏移量0,计算得到逻辑页3,然后以此类推读完该命令所有数据。
进一步的,在一个实施例中,根据页偏移量和块映射表计算逻辑页的步骤包括:位于顺序块的数据按照顺序块的页偏移量计算,位于旧块的数据按照旧块的页偏移量计算。
进一步的,在一个实施例中,根据计算出的逻辑页和页映射表,找到对应的物理页,读出数据的步骤具体包括读取顺序块中的数据。
此外,本发明还提供一种闪存设备、一种闪存设备的数据写入装置和一种闪存设备的数据读出装置。
如图10所示,一种闪存设备,包括建立模块110、计算模块120和更新模块130。其中:
建立模块110用于建立逻辑块和物理块的块映射表,块映射表中记录逻辑块和物理块的对应关系。
具体的,每个逻辑块可能与多个物理块对应,物理块为旧块、顺序块或临时块,旧块为存储旧数据的块;顺序块为当前顺序写入数据的块;临时块为临时存储数据的块。
计算模块120用于根据第一条写命令中的起始逻辑地址和写入长度计算并记录页偏移量。
具体的,计算模块120用于将起始逻辑地址对每页扇区数取余,得到起始逻辑地址在块中的扇区偏移;将起始逻辑地址在块中的扇区偏移和写入扇区长度求和,再将该和对每页扇区数取余,得到页偏移量。此外,页偏移量记录在闪存页的冗余区。如新建立逻辑块和物理块的映射表之后,第一条写命令中的起始逻辑地址为扇区0,写入长度为8个扇区,则根据上述方法计算后的起始逻辑地址在块中的扇区偏移为0个扇区,页偏移量为8个扇区;如新建立逻辑块和物理块的映射表之后,第一条写命令中的起始逻辑地址为扇区8,写入长度为8个扇区,则根据上述方法计算后的起始逻辑地址在块中的扇区偏移为8个扇区,页偏移量为0个扇区;如新建立逻辑块和物理块的映射表之后,第一条写命令中的起始逻辑地址为扇区8,写入长度为128个扇区则根据上述方法计算后的起始逻辑地址在块中的扇区偏移为8个扇区,页偏移量为8个扇区。
更新模块130用于将逻辑块中的逻辑页数加1,并根据页偏移量计算逻辑块中第一个逻辑页和最后一个逻辑页所占扇区数,对逻辑块与物理块中的页映射表进行修改。
具体的,采用更新模块130对页映射表修改后如果页偏移量为0个扇区,则最后一个逻辑页的大小为0,相当于一个逻辑页(逻辑页0)独占最后一个物理页;所述页映射表记录一个逻辑块中逻辑页和物理页的对应关系。
此外,上述闪存设备还包括执行模块,用于根据修改后的页映射表,执行接收到的写命令,写入数据。
上述闪存设备,通过将逻辑块中的逻辑页加1,将逻辑块和物理块的页映射表进行修改,从而可以在后续的数据写入中有效减少因闪存页不对齐而造成的频繁的进行数据搬移操作,提高了闪存设备的数据写入效率。
如图11所示,在一个实施例中,更新模块130包括变更逻辑页数模块132、第一映射模块134和第二映射模块136。其中:
变更逻辑页数模块132用于将逻辑块中的逻辑页数加1。
第一映射模块134,用于将逻辑块中的最后一个逻辑页和第一个逻辑页映射到物理块中的最后一个物理页,其中,逻辑块中的最后一个逻辑页映射到物理块中最后一个物理页的前部分,最后一个逻辑页所占的扇区数等于页偏移量,第一个逻辑页位于最后一个物理页的后部分,第一个逻辑页所占的扇区数等于每页扇区数减去页偏移量。
第二映射模块136用于将逻辑块中的其他逻辑页映射到物理块中的上一个物理页。更新模块130工作的具体过程如图4所示,在此不再赘述。
如图12所示,一种闪存设备的数据写入装置,包括页偏移量计算模块210、扇区数确定模块220、数据写入模块230和合并模块240。其中:
页偏移量计算模块210用于获取建立逻辑块和物理块的块映射表后第一个写命令中的起始逻辑地址和写入扇区长度,计算出页偏移量。
扇区数确定模块220将逻辑块中的逻辑页数加1,根据页偏移量计算逻辑块中第一个逻辑页及最后一个逻辑页所占扇区数。
数据写入模块230用于将第一个逻辑页的数据写入临时块,其他数据按页顺序写入顺序块。
合并模块240用于当顺序块只剩最后一个物理页时,将第一个逻辑页和最后一个逻辑页合并。
数据写入模块230还用于将合并后的第一逻辑页和最后一个逻辑页写入顺序块的最后一个物理页,以及将当前写命令中还未写入的数据写入下一个逻辑块。具体过程如图6a、图6b、图6c和图7所示,在此不再赘述。
如图13所示,一种闪存设备的数据读出装置,包括逻辑块确定模块310、逻辑页计算模块320、数据读取模块330。其中:
逻辑块确定模块310用于根据读命令中的起始逻辑地址和读出扇区长度确定读出数据所在的逻辑块,以及根据预先读出的扇区的数据确定页偏移量。
逻辑页计算模块320用于获取块映射表,根据块映射表找到逻辑块对应的物理块,再根据页偏移量和块映射表计算逻辑页。
数据读取模块330用于获取页映射表,根据该页映射表和计算出的逻辑页,找到对应的物理页,读出数据。具体过程如图9所示,在此不再赘述。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (12)
1.一种闪存设备的管理方法,包括以下步骤:
建立逻辑块和物理块的块映射表,所述块映射表中记录逻辑块和物理块的对应关系;
根据第一条写命令中的起始逻辑地址和写入长度计算并记录页偏移量;
将逻辑块中的逻辑页数加1,并根据所述页偏移量计算逻辑块中第一个逻辑页和最后一个逻辑页所占扇区数,对所述逻辑块与物理块中的页映射表进行修改;所述页映射表记录一个逻辑块中逻辑页和物理页的对应关系。
2.根据权利要求1所述的闪存设备的管理方法,其特征在于,所述根据第一条写命令中的起始逻辑地址和写入长度计算并记录页偏移量的步骤包括:
将所述起始逻辑地址对每页扇区数取余,得到起始逻辑地址在块中的扇区偏移;
将所述起始逻辑地址在块中的扇区偏移和写入扇区长度求和,再将所述和对每页扇区数取余,得到所述页偏移量。
3.根据权利要求1或2中所述的闪存设备的管理方法,其特征在于,所述对所述逻辑块与物理块中的页映射表进行修改步骤包括以下步骤:
将逻辑块中的逻辑页数加1;
将逻辑块中的最后一个逻辑页和第一个逻辑页映射到物理块中的最后一个物理页,其中,逻辑块中的最后一个逻辑页映射到物理块中最后一个物理页的前部分,所述最后一个逻辑页所占的扇区数等于页偏移量,第一个逻辑页位于最后一个物理页的后部分,所述第一个逻辑页所占的扇区数等于每页扇区数减去页偏移量;
逻辑块中的其他逻辑页映射到物理块中的上一个物理页。
4.一种闪存设备的数据写入方法,包括以下步骤:
获取建立逻辑块和物理块的块映射表后第一个写命令中的起始逻辑地址和写入扇区长度,计算出页偏移量;
将逻辑块中的逻辑页数加1,根据页偏移量计算逻辑块中第一个逻辑页及最后一个逻辑页所占扇区数;
将第一个逻辑页的数据写入临时块,其他数据按页顺序写入顺序块;
当顺序块只剩最后一个物理页时,将第一个逻辑页和最后一个逻辑页合并,写入顺序块的最后一个物理页,当前写命令中还未写入的数据写入下一个逻辑块。
5.根据权利要求4所述的闪存设备的数据写入方法,其特征在于,当在数据写入的时候出现页偏移量和旧块中的页偏移量不一致时,按照新建立的块映射表后计算出的页偏移量进行写入。
6.一种闪存设备的数据读出方法,包括如下步骤:
根据读命令中的起始逻辑地址和读出扇区长度确定读出数据所在的逻辑块,以及根据预先读出的扇区的数据确定页偏移量;
获取块映射表,根据块映射表找到逻辑块对应的物理块,再根据所述页偏移量和块映射表计算逻辑页;
获取页映射表,根据计算出的逻辑页和页映射表,找到对应的物理页,读出数据。
7.根据权利要求6所述的闪存设备的数据读出方法,其特征在于,所述物理块为旧块、顺序块或临时块,所述旧块为存储旧数据的块;所述顺序块为当前顺序写入数据的块;所述临时块为临时存储数据的块;所述根据页偏移量和块映射表计算逻辑页的步骤包括:
位于顺序块的数据按照顺序块的页偏移量计算逻辑页,位于旧块的数据按照旧块的页偏移量计算逻辑页。
8.一种闪存设备,其特征在于,包括:
建立模块,用于建立逻辑块和物理块的块映射表,所述块映射表中记录逻辑块和物理块的对应关系;计算模块,用于根据第一条写命令中的起始逻辑地址和写入长度计算并记录页偏移量;
更新模块,用于将逻辑块中的逻辑页数加1,并根据页偏移量计算逻辑块中第一个逻辑页和最后一个逻辑页所占扇区数,对所述逻辑块与物理块中的页映射表进行修改;所述页映射表记录一个逻辑块中逻辑页和物理页的对应关系。
9.根据权利要求8所述的闪存设备,其特征在于,所述计算模块还用于将所述起始逻辑地址对每页扇区数取余,得到起始逻辑地址在块中的扇区偏移,以及将所述起始逻辑地址在块中的扇区偏移和写入扇区长度求和,再将所述和对每页扇区数取余,得到所述页偏移量。
10.根据权利要求8所述的闪存设备,其特征在于,所述更新模块包括:
变更逻辑页数模块,用于将逻辑块中的逻辑页数加1;
第一映射模块,用于将逻辑块中的最后一个逻辑页和第一个逻辑页映射到物理块中的最后一个物理页,其中,逻辑块中的最后一个逻辑页映射到物理块中最后一个物理页的前部分,所述最后一个逻辑页所占的扇区数等于页偏移量,第一个逻辑页位于最后一个物理页的后部分,所述第一个逻辑页所占的扇区数等于每页扇区数减去页偏移量;
第二映射模块,用于将逻辑块中的其他逻辑页映射到物理块中的上一个物理页。
11.一种闪存设备的数据写入装置,其特征在于,包括:
页偏移量计算模块,用于获取建立逻辑块和物理块的块映射表后第一个写命令中的起始逻辑地址和写入扇区长度,计算出页偏移量;
扇区数确定模块,将逻辑块中的逻辑页数加1,根据页偏移量计算逻辑块中第一个逻辑页及最后一个逻辑页所占扇区数;
数据写入模块,用于将第一个逻辑页的数据写入临时块,其他数据按页顺序写入顺序块;
合并模块,用于当顺序块只剩最后一个物理页时,将第一个逻辑页和最后一个逻辑页合并;
所述数据写入模块还用于将合并后的第一个逻辑页和最后一个逻辑页写入顺序块的最后一个物理页,以及将当前写命令中还未写入的数据写入下一个逻辑块。
12.一种闪存设备的数据读出装置,其特征在于,包括:
逻辑块确定模块,用于根据读命令中的起始逻辑地址和读出扇区长度确定读出数据所在的逻辑块,以及根据预先读出的扇区的数据确定页偏移量;
逻辑页计算模块,用于获取块映射表,根据块映射表找到逻辑块对应的物理块,再根据页偏移量和块映射表计算逻辑页;
数据读取模块,用于获取页映射表,根据所述页映射表和计算出的逻辑页,得到对应的物理页,读出数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210284917.XA CN102831072B (zh) | 2012-08-10 | 2012-08-10 | 闪存设备及其管理方法、数据读写方法及读写装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210284917.XA CN102831072B (zh) | 2012-08-10 | 2012-08-10 | 闪存设备及其管理方法、数据读写方法及读写装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102831072A true CN102831072A (zh) | 2012-12-19 |
CN102831072B CN102831072B (zh) | 2016-03-02 |
Family
ID=47334219
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210284917.XA Active CN102831072B (zh) | 2012-08-10 | 2012-08-10 | 闪存设备及其管理方法、数据读写方法及读写装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102831072B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103995783A (zh) * | 2013-02-20 | 2014-08-20 | 安凯(广州)微电子技术有限公司 | 一种建立逻辑块与物理块映射关系的方法及系统 |
CN104978148A (zh) * | 2014-04-09 | 2015-10-14 | 瑞萨电子(中国)有限公司 | 数据写入方法及装置、数据读取方法及装置 |
CN106201903A (zh) * | 2016-07-05 | 2016-12-07 | 深圳市瑞耐斯技术有限公司 | 一种三维闪存擦除控制方法及其系统 |
CN110457233A (zh) * | 2019-08-10 | 2019-11-15 | 深圳市德名利电子有限公司 | 一种基于混合大小单元的闪存管理方法和装置以及设备 |
CN111177034A (zh) * | 2019-12-27 | 2020-05-19 | 鸿秦(北京)科技有限公司 | 一种固态硬盘的自适应ftl算法 |
CN111290972A (zh) * | 2020-03-11 | 2020-06-16 | 深圳忆联信息系统有限公司 | 数据搬运效率的提升方法、装置和计算机设备 |
CN112506438A (zh) * | 2020-12-14 | 2021-03-16 | 深圳大普微电子科技有限公司 | 一种映射表管理方法及固态硬盘 |
CN113419675A (zh) * | 2021-06-11 | 2021-09-21 | 联芸科技(杭州)有限公司 | 用于存储器的写操作方法及读操作方法 |
CN114115719A (zh) * | 2021-08-24 | 2022-03-01 | 深圳市木浪云科技有限公司 | 基于io模式识别的io批量处理方法、装置及存储介质 |
CN114115700A (zh) * | 2020-08-31 | 2022-03-01 | 施耐德电气(中国)有限公司 | 闪存数据读写方法和闪存数据读写装置 |
CN114168225A (zh) * | 2021-12-08 | 2022-03-11 | 深圳忆联信息系统有限公司 | 固态硬盘映射表延迟更新方法、装置、计算机设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1637721A (zh) * | 2003-12-30 | 2005-07-13 | 三星电子株式会社 | 地址映射方法和映射信息管理方法及其闪速存储器 |
US20060161722A1 (en) * | 2004-12-16 | 2006-07-20 | Bennett Alan D | Scratch pad block |
CN101075211A (zh) * | 2007-06-08 | 2007-11-21 | 马彩艳 | 基于sector访问的flash存储器的存储管理 |
CN101441596A (zh) * | 2007-11-21 | 2009-05-27 | 深圳市朗科科技股份有限公司 | 提高闪存介质读写速度的方法 |
US20100185830A1 (en) * | 2009-01-21 | 2010-07-22 | Micron Technology, Inc. | Logical address offset |
CN101819509A (zh) * | 2010-04-19 | 2010-09-01 | 清华大学深圳研究生院 | 一种固态硬盘读写方法 |
-
2012
- 2012-08-10 CN CN201210284917.XA patent/CN102831072B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1637721A (zh) * | 2003-12-30 | 2005-07-13 | 三星电子株式会社 | 地址映射方法和映射信息管理方法及其闪速存储器 |
US20060161722A1 (en) * | 2004-12-16 | 2006-07-20 | Bennett Alan D | Scratch pad block |
CN101075211A (zh) * | 2007-06-08 | 2007-11-21 | 马彩艳 | 基于sector访问的flash存储器的存储管理 |
CN101441596A (zh) * | 2007-11-21 | 2009-05-27 | 深圳市朗科科技股份有限公司 | 提高闪存介质读写速度的方法 |
US20100185830A1 (en) * | 2009-01-21 | 2010-07-22 | Micron Technology, Inc. | Logical address offset |
CN101819509A (zh) * | 2010-04-19 | 2010-09-01 | 清华大学深圳研究生院 | 一种固态硬盘读写方法 |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103995783A (zh) * | 2013-02-20 | 2014-08-20 | 安凯(广州)微电子技术有限公司 | 一种建立逻辑块与物理块映射关系的方法及系统 |
CN104978148A (zh) * | 2014-04-09 | 2015-10-14 | 瑞萨电子(中国)有限公司 | 数据写入方法及装置、数据读取方法及装置 |
CN106201903A (zh) * | 2016-07-05 | 2016-12-07 | 深圳市瑞耐斯技术有限公司 | 一种三维闪存擦除控制方法及其系统 |
CN106201903B (zh) * | 2016-07-05 | 2019-07-30 | 深圳市领存技术有限公司 | 一种三维闪存擦除控制方法及其系统 |
CN110457233A (zh) * | 2019-08-10 | 2019-11-15 | 深圳市德名利电子有限公司 | 一种基于混合大小单元的闪存管理方法和装置以及设备 |
CN111177034A (zh) * | 2019-12-27 | 2020-05-19 | 鸿秦(北京)科技有限公司 | 一种固态硬盘的自适应ftl算法 |
CN111290972A (zh) * | 2020-03-11 | 2020-06-16 | 深圳忆联信息系统有限公司 | 数据搬运效率的提升方法、装置和计算机设备 |
CN114115700A (zh) * | 2020-08-31 | 2022-03-01 | 施耐德电气(中国)有限公司 | 闪存数据读写方法和闪存数据读写装置 |
CN112506438A (zh) * | 2020-12-14 | 2021-03-16 | 深圳大普微电子科技有限公司 | 一种映射表管理方法及固态硬盘 |
CN112506438B (zh) * | 2020-12-14 | 2024-03-26 | 深圳大普微电子科技有限公司 | 一种映射表管理方法及固态硬盘 |
CN113419675A (zh) * | 2021-06-11 | 2021-09-21 | 联芸科技(杭州)有限公司 | 用于存储器的写操作方法及读操作方法 |
CN114115719A (zh) * | 2021-08-24 | 2022-03-01 | 深圳市木浪云科技有限公司 | 基于io模式识别的io批量处理方法、装置及存储介质 |
CN114115719B (zh) * | 2021-08-24 | 2022-10-18 | 深圳市木浪云科技有限公司 | 基于io模式识别的io批量处理方法、装置及存储介质 |
CN114168225A (zh) * | 2021-12-08 | 2022-03-11 | 深圳忆联信息系统有限公司 | 固态硬盘映射表延迟更新方法、装置、计算机设备及存储介质 |
CN114168225B (zh) * | 2021-12-08 | 2024-05-14 | 深圳忆联信息系统有限公司 | 固态硬盘映射表延迟更新方法、装置、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN102831072B (zh) | 2016-03-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102831072A (zh) | 闪存设备及其管理方法、数据读写方法及读写装置 | |
CN102841851B (zh) | 闪存管理方法和闪存设备 | |
CN109871333B (zh) | 存取闪存模块的方法及相关的闪存控制器与电子装置 | |
CN103425597B (zh) | 数据储存装置和快闪存储器的区块管理方法 | |
US10437737B2 (en) | Data storage device | |
CN103154950B (zh) | 重复数据删除方法及装置 | |
TWI645404B (zh) | 資料儲存裝置以及非揮發式記憶體操作方法 | |
CN104699417B (zh) | 数据储存装置以及其数据存取方法 | |
US9176865B2 (en) | Data writing method, memory controller, and memory storage device | |
CN101640069B (zh) | 用于闪速存储器的平均磨损方法与平均磨损系统 | |
CN109388582B (zh) | 数据储存装置以及其数据抹除方法 | |
CN101364166B (zh) | 将2048字节页的Nand Flash模拟成硬盘的方法和装置 | |
CN101923448A (zh) | 一种nand闪存的转换层读写方法 | |
CN103996412A (zh) | 一种用于智能卡非易失性存储器的掉电保护方法 | |
CN101625897B (zh) | 用于快闪存储器的数据写入方法、储存系统与控制器 | |
CN101556555B (zh) | 用于闪存的区块管理方法、其控制器与储存系统 | |
CN106598493A (zh) | 一种固态硬盘地址映射表管理方法 | |
CN103970669A (zh) | 用于加速在固态设备中的回收操作的物理到逻辑地址映射 | |
CN107291374A (zh) | 纪录数据区块的使用时间的方法及其装置 | |
CN103514101A (zh) | 存取闪存的方法以及相关的记忆装置 | |
CN101324899B (zh) | 一种快速写nand型flash的方法 | |
CN103309619A (zh) | 一种闪存数据存储方法 | |
CN103645993B (zh) | 一种基于大页面Flash的数据更新和读取方法 | |
CN105653466A (zh) | 数据储存装置以及快闪存储器控制方法 | |
CN111324289B (zh) | 一种存储器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder |
Address after: 518057 A, B, C, D, E, F1, 8 Building, Financial Services Technology Innovation Base, No. 8 Kefa Road, Nanshan District, Shenzhen City, Guangdong Province Patentee after: Shenzhen jiangbolong electronic Limited by Share Ltd Address before: 518057 A, B, C, D, E, F1, 8 Building, Financial Services Technology Innovation Base, No. 8 Kefa Road, Nanshan District, Shenzhen City, Guangdong Province Patentee before: Shenzhen jiangbolong Electronic Co., Ltd. |
|
CP01 | Change in the name or title of a patent holder |