CN102306124A - Nand Flash芯片硬件驱动层的实现方法 - Google Patents
Nand Flash芯片硬件驱动层的实现方法 Download PDFInfo
- Publication number
- CN102306124A CN102306124A CN201110218432A CN201110218432A CN102306124A CN 102306124 A CN102306124 A CN 102306124A CN 201110218432 A CN201110218432 A CN 201110218432A CN 201110218432 A CN201110218432 A CN 201110218432A CN 102306124 A CN102306124 A CN 102306124A
- Authority
- CN
- China
- Prior art keywords
- buffer area
- nand flash
- block
- memory
- flash chip
- 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.)
- Pending
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
- Memory System (AREA)
Abstract
本发明揭示了一种Nand Flash芯片硬件驱动层的实现方法,包括:将Nand Flash划分为多个分区;将每一分区划分为缓存区和存储区;将写入的数据缓存至缓存区;当缓存区满时,将该缓存区的数据移至该缓存区所在分区的存储区。本发明提供的一种Nand Flash芯片硬件驱动层的实现方法,有效管理Nand Flash芯片的物理存储空间,提高上层操作系统的文件系统的运行效率。
Description
技术领域
本发明涉及到一种闪存数据管理方法,特别涉及到一种Nand Flash芯片硬件驱动层的实现方法。
背景技术
Nand Flash芯片的存储单元有物理存储地址,操作系统的文件系统将文件分开为一些逻辑存储块,并用存储块的逻辑编号来组织文件,因此需要硬件驱动层将芯片的物理地址和文件系统的逻辑编号关联起来,一般实现方式为建立映射表。现有技术主要为两种,在页(Page)基础之上为芯片建立映射表,另外的实现方式采取建立在Block映射机制上的映射表。
Nand Flash芯片是非易失存储器,Block是擦除的最小单位,读取和写入的最小单位是Page。任何Nand Flash芯片的写入操作只能在已擦除的单元内进行,所以大多数情况下,在进行写入操作之前必须先执行擦除的操作。如图1所示,为现有技术以Page为单元的写入操作过程,假设Block3和Block4都为闪存中一个标准大小的Block块,其中Block3为已有数据存储区域,PageB、C和D存储有数据,Block4为空置,现要将PageE写入Block3中的PageD位置处,由于Block3的Page D区域已存储数据,而对于Nand Flash芯片而言,擦除的最小单元为Block,只有将Block原有的数据全部擦除,才可以将PageE写入,但是在擦除一个Block块时,其他有效数据需要保留,例如Block3中的Page B和C,因此需要寻找一个处于擦除状态下的Block(例如Block4),先将PageE写入Block4的Page E处,最后将Block3的Page B和C写入Block4的Page B和C处。因此在现有技术的Nand Flash芯片中,在PageE的起始逻辑地址写入数据时,其通过以下两个步骤完成:
找到空置的Block4,将Block3的PageB和C拷贝至Block4的相应位置;
将要写入的PageE直接写入Block4的相应区域,并将原有的PageE与Block3的映射关系修改为PageE与Block4的映射关系。
上述步骤可以看出,上述拷贝数据的过程,实际上需要搬运数据3次。当拷贝的文件包含数据量比较大时,系统文件区不停的反复被读写,而NandFlash的存储单元在擦写一定次数之后会损坏,导致该存储单元不能再被使用,大大降低产品的寿命。
而在Page基础之上为芯片建立映射表,需要大量消耗内存,无法在资源受到限制的嵌入式设备特别是智能卡设备中实现。
发明内容
本发明的主要目的为提供一种Nand Flash芯片硬件驱动层的实现方法,有效管理Nand Flash芯片的物理存储空间,提高上层操作系统的文件系统的运行效率。
本发明提出一种Nand Flash芯片硬件驱动层的实现方法,包括:
将Nand Flash划分为多个分区;
将每一分区划分为缓存区和存储区;
将写入的数据缓存至缓存区;
当缓存区满时,将该缓存区的数据移至该缓存区所在分区的存储区。
优选地,所述分区包括至少两个Block块,该分区的缓存区包括至少一Block块。
优选地,所述当缓存区满时,将该缓存区的数据移至该缓存区所在分区的存储区包括:
当某一分区包括两个以上Block块,该分区的缓存区包括至少两个Block块,且该缓存区中任一Block块填满时,将填满的Block块的数据移至该分区的存储区的Block块。
优选地,所述将Nand Flash划分为多个分区包括:
建立分区映射表,记录所述分区的逻辑地址与物理地址的对应关系。
优选地,在执行所述将写入的数据缓存至缓存区之前,还包括:
基于Page建立缓存区映射表,用于记录所述缓存区内Page的逻辑地址和Page的物理地址。
优选地,在执行所述将写入的数据缓存至缓存区之前,还包括:
基于Block建立存储区映射表,用于记录所述存储区内Block块的逻辑地址 和Block块的物理地址的对应关系。
优选地,在执行所述将写入的数据缓存至缓存区之前,还包括:
建立缓存-存储映射表,指明缓存区中的Page和将要写入存储区的Block的映射关系。
优选地,在执行所述将写入的数据缓存至缓存区之前,还包括:
建立需要进行读写操作的分区的缓存区映射表、存储区映射表和缓存-存储映射表。
本发明提出的一种Nand Flash芯片硬件驱动层的实现方法,通过建立分别基于Block块和Page的混合映射表,解决了由于系统文件区域的快速磨损而导致Nand Flash的文件系统损坏所造成的寿命缩减的问题,以及单纯基于Page建立的映射表效率低下的问题。在有效管理Nand Flash芯片的物理存储空间的基础上提高上层操作系统的文件系统的运行效率。
附图说明
图1为现有技术Nand Flash芯片硬件驱动层的实现方法的操作示意图;
图2为本发明Nand Flash芯片硬件驱动层的实现方法一实施例的流程示意图;
图3为本发明Nand Flash芯片硬件驱动层的实现方法又一实施例的流程示意图;
图4为本发明Nand Flash芯片硬件驱动层的实现方法另一实施例的流程示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
参照图2,提出本发明Nand Flash芯片硬件驱动层的实现方法一实施例,包括:
步骤S101、将Nand Flash划分为多个分区;
步骤S102、将每一分区划分为缓存区和存储区;
步骤S103、将写入的数据缓存至缓存区;
步骤S104、当缓存区满时,将该缓存区的数据移至该缓存区所在分区的存储区。
本实施例的实现需要依赖于Nand Flash芯片内置或外置的控制器指令,Nand Flash的操作特性是以Page为单位进行读写,一个Page不能重复写,重复写之前必须先擦除。而擦除是以Block块为单位进行。
为方便描述,本实施例将擦除操作的一个单位称为Block块,是一种NandFlash的物理存储结构单元;对Block块中的进行读写操作的基本单元称为Page(数据块),一个Block含有多个Page。
将Nand Flash存储空间划分为多个分区,每一分区包括多个Block块。将Nand Flash芯片像硬盘一样分区管理,建立对应的分区映射表,在其表项中记录各分区的逻辑地址与物理地址的对应关系。
将每一分区再划分为缓存区和存储区,缓存区包括至少一个Block块,用于缓存写入分区的数据,存储区包括除缓存区以外的其余Block块,用于存储从缓存区转移过来的数据。当向分区写入数据时,数据首先被缓存至缓存区,当缓存区存满后,将该缓存区的数据移至存储区。只须在收到相同的逻辑地址的数据块时,将对应的物理地址做修改,数据就会存放到新的缓存区的物理地址。
本实施例中,将Nand Flash存储空间分区管理,并分别建立缓存区和存储区,可减少对存储区的操作频率。
参照图3,提出本发明Nand Flash芯片硬件驱动层的实现方法又一实施例,在一实施例中,在执行步骤S103之前,还包括:
步骤S105,建立分区的缓存区映射表、存储区映射表和缓存-存储映射表。
当分区包括两个以上Block块,该分区的缓存区包括至少两个Block块,且该缓存区中任一Block块填满时,可将填满的Block块的数据移至该分区的存储区的Block块。如此是以缓存区中的Block块为缓存单位,当任一Block块填满时,就将该Block块的数据移至对应存储区的Block块中。此时将数据转移后的 缓存区的Block块进行擦除,又可以再从该Block块的第一个Page开始缓存数据。
由于Nand Flash的读写是以Page为单位,而擦写是以Block块为单位,因此为了将读写定位至Page,同时又减少擦写Block块的次数,再分别设置缓存区映射表、存储区映射表以及缓存-存储映射表。缓存区映射表基于Page建立,记录缓存区内Page的逻辑地址和Page的物理地址的对应关系,存储区映射表基于Block建立,记录存储区内Block块的逻辑地址和Block块的物理地址的对应关系,缓存-存储映射表,用于指明缓存区中的Page和将要写入存储区的Block的映射关系,即缓存区中Page的逻辑地址与存储区中Block的逻辑地址之间的映射关系。如此,在数据写入分区时,先查找缓存区映射表中相关表项的物理地址,将数据缓存到该物理地址中,当缓存区填满后,再查找缓存-存储映射表和存储区映射表中相关表项,将缓存区数据移至该数据本来要写入的真实的物理地址中。
本实施例中,将读写数据的临时操作放在缓存区中的Page进行,因此可以将映射至相同存储区中某一Block的不同Page一次性写入,并没有频繁地对存储区内Block块进行操作,将Nand Flash芯片的磨损次数大大降低,又避免了单纯以Page为单位进行读写而造成的效率低下。在有效管理Nand Flash芯片的物理存储空间的基础上提高上层操作系统的文件系统的运行效率。
参照图4,步骤S105可具体为:
步骤S106、建立需要进行读写操作的分区的缓存区映射表、存储区映射表和缓存-存储映射表。
由于基于Page建立的映射表非常消耗内存,虽然只是挑选非常少的Block块作为缓存区而降低了内存消耗,但是缓存-存储映射表也会增加内存消耗。为了解决上述问题,可以只对需要对其进行读写操作的分区建立缓存区映射表、存储区映射表和缓存-存储映射表,进一步节约内存空间,抵消需要增加的内存消耗。
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (8)
1.一种Nand Flash芯片硬件驱动层的实现方法,其特征在于,包括:
将Nand Flash划分为多个分区;
将每一分区划分为缓存区和存储区;
将写入的数据缓存至缓存区;
当缓存区满时,将该缓存区的数据移至该缓存区所在分区的存储区。
2.如权利要求1所述的Nand Flash芯片硬件驱动层的实现方法,其特征在于,所述分区包括至少两个Block块,该分区的缓存区包括至少一Block块。
3.如权利要求2所述的Nand Flash芯片硬件驱动层的实现方法,其特征在于,所述当缓存区满时,将该缓存区的数据移至该缓存区所在分区的存储区包括:
当某一分区包括两个以上Block块,该分区的缓存区包括至少两个Block块,且该缓存区中任一Block块填满时,将填满的Block块的数据移至该分区的存储区的Block块。
4.如权利要求1至3中任一项所述的Nand Flash芯片硬件驱动层的实现方法,其特征在于,所述将Nand Flash划分为多个分区包括:
建立分区映射表,记录所述分区的逻辑地址与物理地址的对应关系。
5.如权利要求1至3中任一项所述的Nand Flash芯片硬件驱动层的实现方法,其特征在于,在执行所述将写入的数据缓存至缓存区之前,还包括:
基于Page建立缓存区映射表,用于记录所述缓存区内Page的逻辑地址和Page的物理地址。
6.如权利要求5所述的Nand Flash芯片硬件驱动层的实现方法,其特征在于,在执行所述将写入的数据缓存至缓存区之前,还包括:
基于Block建立存储区映射表,用于记录所述存储区内Block块的逻辑地址和Block块的物理地址的对应关系。
7.如权利要求6所述的Nand Flash芯片硬件驱动层的实现方法,其特征在于,在执行所述将写入的数据缓存至缓存区之前,还包括:
建立缓存-存储映射表,指明缓存区中的Page和将要写入存储区的Block的映射关系。
8.如权利要求7所述的Nand Flash芯片硬件驱动层的实现方法,其特征在于,在执行所述将写入的数据缓存至缓存区之前,还包括:
建立需要进行读写操作的分区的缓存区映射表、存储区映射表和缓存-存储映射表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110218432A CN102306124A (zh) | 2011-08-01 | 2011-08-01 | Nand Flash芯片硬件驱动层的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110218432A CN102306124A (zh) | 2011-08-01 | 2011-08-01 | Nand Flash芯片硬件驱动层的实现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102306124A true CN102306124A (zh) | 2012-01-04 |
Family
ID=45379989
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110218432A Pending CN102306124A (zh) | 2011-08-01 | 2011-08-01 | Nand Flash芯片硬件驱动层的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102306124A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103077121A (zh) * | 2013-01-07 | 2013-05-01 | 深圳市江波龙电子有限公司 | 一种闪存存储设备中数据管理的方法及装置 |
CN103514097A (zh) * | 2012-06-20 | 2014-01-15 | 安凯(广州)微电子技术有限公司 | 基于Nand Flash的数据写入方法 |
WO2013174326A3 (zh) * | 2012-12-27 | 2014-01-16 | 中兴通讯股份有限公司 | 不同Nand闪存兼容方法及装置 |
CN103823640A (zh) * | 2014-03-03 | 2014-05-28 | 山西科泰微技术有限公司 | 一种Flash存储器的高效率存储方法 |
CN105683930A (zh) * | 2013-10-29 | 2016-06-15 | 上海宝存信息科技有限公司 | 用于数据存储系统的动态缓存方法和系统 |
CN103823766B (zh) * | 2014-03-03 | 2017-03-22 | 山西科泰航天防务技术股份有限公司 | Flash存储器的高效率存储方法 |
CN107273309A (zh) * | 2017-05-19 | 2017-10-20 | 瑞斯康微电子(深圳)有限公司 | 一种串行闪存数据保护方法和装置 |
CN107329697A (zh) * | 2017-06-27 | 2017-11-07 | 湖南威胜信息技术有限公司 | 用于嵌入式系统的用电信息数据存取方法及其电能表 |
CN117632015A (zh) * | 2023-11-28 | 2024-03-01 | 中科驭数(北京)科技有限公司 | 数据分区方法、装置、计算机存储介质及加速卡 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040078512A1 (en) * | 1993-03-11 | 2004-04-22 | Kunihiro Katayama | File memory device and information processing apparatus using the same |
CN101002274A (zh) * | 2004-07-22 | 2007-07-18 | 赛普拉斯半导体公司 | 提高usb闪存写入性能的方法和器件 |
CN101251788A (zh) * | 2008-03-07 | 2008-08-27 | 威盛电子股份有限公司 | 储存单元管理方法及系统 |
CN201218944Y (zh) * | 2008-07-03 | 2009-04-08 | 西安奇维测控科技有限公司 | 双口ram实现闪存控制器缓存的结构 |
CN102012873A (zh) * | 2010-11-24 | 2011-04-13 | 清华大学 | Nand闪存的缓存系统及缓存方法 |
CN102043721A (zh) * | 2010-05-12 | 2011-05-04 | 中颖电子股份有限公司 | 闪存存储管理方法 |
-
2011
- 2011-08-01 CN CN201110218432A patent/CN102306124A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040078512A1 (en) * | 1993-03-11 | 2004-04-22 | Kunihiro Katayama | File memory device and information processing apparatus using the same |
CN101002274A (zh) * | 2004-07-22 | 2007-07-18 | 赛普拉斯半导体公司 | 提高usb闪存写入性能的方法和器件 |
CN101251788A (zh) * | 2008-03-07 | 2008-08-27 | 威盛电子股份有限公司 | 储存单元管理方法及系统 |
CN201218944Y (zh) * | 2008-07-03 | 2009-04-08 | 西安奇维测控科技有限公司 | 双口ram实现闪存控制器缓存的结构 |
CN102043721A (zh) * | 2010-05-12 | 2011-05-04 | 中颖电子股份有限公司 | 闪存存储管理方法 |
CN102012873A (zh) * | 2010-11-24 | 2011-04-13 | 清华大学 | Nand闪存的缓存系统及缓存方法 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103514097A (zh) * | 2012-06-20 | 2014-01-15 | 安凯(广州)微电子技术有限公司 | 基于Nand Flash的数据写入方法 |
WO2013174326A3 (zh) * | 2012-12-27 | 2014-01-16 | 中兴通讯股份有限公司 | 不同Nand闪存兼容方法及装置 |
CN103077121A (zh) * | 2013-01-07 | 2013-05-01 | 深圳市江波龙电子有限公司 | 一种闪存存储设备中数据管理的方法及装置 |
CN105683930A (zh) * | 2013-10-29 | 2016-06-15 | 上海宝存信息科技有限公司 | 用于数据存储系统的动态缓存方法和系统 |
CN105683930B (zh) * | 2013-10-29 | 2019-05-31 | 上海宝存信息科技有限公司 | 用于数据存储系统的动态缓存方法和系统 |
CN103823640A (zh) * | 2014-03-03 | 2014-05-28 | 山西科泰微技术有限公司 | 一种Flash存储器的高效率存储方法 |
CN103823766B (zh) * | 2014-03-03 | 2017-03-22 | 山西科泰航天防务技术股份有限公司 | Flash存储器的高效率存储方法 |
CN103823640B (zh) * | 2014-03-03 | 2017-12-01 | 山西科泰航天防务技术股份有限公司 | 一种Flash存储器的高效率存储方法 |
CN107273309A (zh) * | 2017-05-19 | 2017-10-20 | 瑞斯康微电子(深圳)有限公司 | 一种串行闪存数据保护方法和装置 |
WO2018209733A1 (zh) * | 2017-05-19 | 2018-11-22 | 瑞斯康微电子(深圳)有限公司 | 一种串行闪存数据保护方法和装置 |
CN107329697A (zh) * | 2017-06-27 | 2017-11-07 | 湖南威胜信息技术有限公司 | 用于嵌入式系统的用电信息数据存取方法及其电能表 |
CN117632015A (zh) * | 2023-11-28 | 2024-03-01 | 中科驭数(北京)科技有限公司 | 数据分区方法、装置、计算机存储介质及加速卡 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102306124A (zh) | Nand Flash芯片硬件驱动层的实现方法 | |
CN103049397B (zh) | 一种基于相变存储器的固态硬盘内部缓存管理方法及系统 | |
CN101727402B (zh) | 一种非易失性存储器数据的读写控制方法及系统 | |
TWI389125B (zh) | 記憶體儲存裝置及其控制方法 | |
US9311232B2 (en) | Management of memory array with magnetic random access memory (MRAM) | |
US20140089564A1 (en) | Method of data collection in a non-volatile memory | |
US8650379B2 (en) | Data processing method for nonvolatile memory system | |
US7937522B2 (en) | Method for flash memory data management | |
US20140129758A1 (en) | Wear leveling in flash memory devices with trim commands | |
US20120084484A1 (en) | Selectively combining commands for a system having non-volatile memory | |
CN104794070A (zh) | 基于动态非覆盖raid技术的固态闪存写缓存系统及方法 | |
CN1822217A (zh) | 将数据存储在非易失性高速缓冲存储器中的设备和方法 | |
CN101382918A (zh) | 一种基于数据交换区的NAND Flash闪存优化管理方法 | |
KR20130096881A (ko) | 플래시 메모리 장치 | |
CN102163175A (zh) | 一种基于局部性分析的混合地址映射方法 | |
KR101403922B1 (ko) | 접근 빈도에 따라 데이터를 할당하는 저장장치 및 저장방법 | |
CN102662856A (zh) | 一种固态硬盘及其存取方法 | |
CN103838676B (zh) | 数据存储系统、数据存储方法及pcm桥 | |
CN102768645A (zh) | 混合缓存的固态硬盘预取方法和固态硬盘ssd | |
KR101374065B1 (ko) | 칩 레벨 평행 플래시 메모리를 위한 정보 분별 방법 및 장치 | |
CN105278875A (zh) | 一种混合异构nand固态硬盘 | |
CN102999441A (zh) | 一种细粒度内存访问的方法 | |
CN102541755A (zh) | 闪存存储器及其接收数据的方法 | |
CN101324899B (zh) | 一种快速写nand型flash的方法 | |
CN103207836B (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 | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20120104 |