一种数据写入、读取方法和装置与流程

文档序号:13446137阅读:240来源:国知局
一种数据写入、读取方法和装置与流程

本发明属于数据存储技术领域,尤其涉及一种数据写入、读取方法和装置。



背景技术:

目前,3d闪存主要采用电荷捕获闪存(chargetrapflash,简称ctf)技术和垂直堆叠制程技术。

ctf技术与传统的浮栅极技术的区别在于:ctf技术使用一层极薄的氮化硅薄膜来捕获电荷并储存电子。在ctf技术中,数据被临时存放在非传导层中一个由氮化硅组成的“单元格”中,并用绝缘的氮化硅薄膜来充当电子的隔离层。当需要读取数据时,对数据进行“解禁”,可以对储存流进行更好的控制。但是,ctf技术受温度的影响较大,高温条件下会造成电子的损耗。另外,芯片频繁的写入和擦除会使温度升高,进而加剧电子损耗,最终降低芯片的存储新能。

垂直堆叠制程技术制造的3d闪存使用垂直堆叠结构,其主要特点是在垂直方向是一个圆柱体结构,这样在进行频繁的擦除和读写后,3d闪存的温度升高,会使得圆柱体中顶部氧化层和底部氧化层电子分布不均匀导致电荷的损耗,进而降低3d闪存的存储性能。另外,由于3d闪存中的物理块呈垂直结构,水平方向上临近的是不同的物理块,在读数据进行读写操作时,对某一物理块中物理页的读写不仅存在相同物理块间的干扰,还存在不同物理块间的干扰,使得存储的数据差错率增加,重要数据的可靠性降低。



技术实现要素:

本发明提供一种数据写入、读取方法和装置,旨在解决现有的3d闪存中,由于在频繁的擦除和读写后,使得3d闪存的温度升高,进而导致3d闪存存储性能降低的问题,以及在对数据进行读写时,由于临近的物理块之间相互干扰造成的数据存储的可靠性降低的问题。

本发明提供的一种数据写入方法,所述方法包括:

获取待写入3d闪存的数据和所述数据的逻辑页号;

判断配置在二级存储器中的缓存链表中是否存在所述逻辑页号;

若所述缓存链表中存在所述逻辑页号,则将所述数据更新在所述缓存链表中所述逻辑页号对应的位置;

若所述缓存链表中不存在所述逻辑页号,则当所述缓存链表写满时,将所述缓存链表的表尾的数据移至所述3d闪存中,并将所述数据及所述数据的逻辑页号写入所述表头,当所述缓存链表未写满时,将所述数据及所述数据的逻辑页号写入所述缓存链表。

本发明提供的一种数据读取方法,所述方法包括:

获取待读取数据的逻辑页号,并判断设置在二级存储器中的缓存链表中是否存在所述逻辑页号;

若是,则读取所述缓存链表中所述逻辑页号对应的数据;

若否,则根据所述逻辑页号在3d闪存的物理块中查找所述逻辑页号对应的数据并读取。

本发明提供的一种数据写入装置,所述装置包括:

获取模块,用于获取待写入3d闪存的数据和所述数据的逻辑页号;

判断模块,用于判断配置在二级存储器中的缓存链表中是否存在所述逻辑页号;

写入模块,用于若所述缓存链表中存在所述逻辑页号,则将所述数据更新在所述缓存链表中所述逻辑页号对应的位置;

所述写入模块,用于若所述缓存链表中不存在所述逻辑页号,则当所述缓存链表写满时,将所述缓存链表的表尾的数据移至所述3d闪存中,并将所述数据及所述数据的逻辑页号写入所述表头,当所述缓存链表未写满时,将所述数据及所述数据的逻辑页号写入所述缓存链表。

本发明提供的一种数据读取装置,所述装置包括:

获取模块,用于获取待读取数据的逻辑页号;

判断模块,用于判断设置在二级存储器中的缓存链表中是否存在所述逻辑页号;

读取模块,用于若所述二级存储器中的缓存链表中存在所述逻辑页号,则读取所述缓存链表中所述逻辑页号对应的数据;

所述读取模块,还用于若所述二级存储器中的缓存链表中存在所述逻辑页号,则根据所述逻辑页号在3d闪存的物理块中查找所述逻辑页号对应的数据并读取。

本发明提供的一种数据写入、读取方法和装置,通过将待写数据写入到缓存链表中,并在缓存链表写满的情况下,再将数据写入到3d闪存的物理块中,如此,可以极大的减少对3d闪存的访问,避免由于3d闪存的温度升高造成的存储性能降低的问题。此外,由于对3d闪存的访问量减少,还可以避免读取数据时临近的物理块间相互干扰造成的数据存储可靠性降低的问题。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例。

图1是本发明第一实施例提供的一种数据写入方法的实现流程示意图;

图2是本发明第二实施例提供的一种数据写入方法的实现流程示意图;

图3是本发明第三实施例提供的一种数据读取方法的实现流程示意图;

图4是本发明第四实施例提供的一种数据读取方法的实现流程示意图;

图5是本发明第五实施例提供的一种数据写入装置的结构示意图;

图6是本发明第六实施例提供的一种数据写入装置的结构示意图;

图7是本发明第七实施例和第八实施例提供的一种数据读取装置的结构示意图。

具体实施方式

为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参阅图1,图1为本发明第一实施例提供的数据写入方法的实现流程示意图,图1所示的数据写入方法主要包括以下步骤:

s101、获取待写入3d闪存的数据和该数据的逻辑页号;

逻辑页号为用于表示待写入3d闪存的数据的地址,通过逻辑页号可以在映射表中查找到数据待写入3d闪存的物理块号和物理页号。

s102、判断配置在二级存储器中的缓存链表中是否存在该逻辑页号;

二级存储器为非易失性存储器(nonvolatilememory,nvm),可以为静态随机存取存储器(staticrandomaccessmemory,sram),动态随机存取存储器(dynamicrandomaccessmemory,dram),数据方向寄存器(datadirectionregister,ddr)或同步动态随机存储器(synchronousdynamicrandomaccessmemory,sdram)等。逻辑页号表示待写入3d闪存的数据的地址,通过逻辑页号可以在映射表中查找到数据待写入3d闪存的物理块号和物理页号。

s103、若该缓存链表中存在该逻辑页号,则将该数据更新在该缓存链表中该逻辑页号对应的位置;

s104、若该缓存链表中不存在该逻辑页号,则当该缓存链表写满时,将该缓存链表的表尾的数据移至该3d闪存中,并将该数据及该数据的逻辑页号写入该表头,当该缓存链表未写满时,将该数据及该数据的逻辑页号写入该缓存链表。

缓存链表包括顺次排列的多个用于存储数据和数据的逻辑页号的单元,其中,每一个单元包括两个部分,一部分用于存储数据,另一部分用于存储该数据对应的逻辑页号。缓存链表可以为一个,也可以为多个。

本发明提供的一种数据写入方法,通过将待写数据写入到缓存链表中,并在缓存链表写满的情况下,再将数据写入到3d闪存的物理块中,如此,可以极大的减少对3d闪存的访问,避免由于3d闪存的温度升高造成的存储性能降低的问题。此外,由于对3d闪存的访问量减少,还可以避免读取数据时临近的物理块间相互干扰造成的数据存储可靠性降低的问题。

请参阅图2,图2为本发明第二实施例提供的数据写入方法的实现流程示意图,图2所示的数据写入方法主要包括以下步骤:

s201、获取待写入3d闪存的数据和该数据的逻辑页号;

逻辑页号表示待写入3d闪存的数据的地址,通过逻辑页号可以在映射表中查找到数据待写入3d闪存的物理块号和物理页号。

s202、判断一级缓存链表或二级缓存链表中是否存在该逻辑页号;

其中,一级缓存链表和二级缓存链表均为配置于3d闪存中的二级存储器中的缓存链表,即nvm中的链表,包括顺次排列的多个用于存储数据和数据的逻辑页号的单元,其中,每一个单元包括两个部分,一部分用于存储数据,另一部分用于存储该数据对应的逻辑页号。优选地,一级缓存链表存储数据的单元少于二级缓存链表存储数据的单元,在判断是否存在逻辑页号时先判断二级缓存链表中是否存在逻辑页号,若没有,则判断一级缓存链表中是否存在逻辑页号。需要说明的是,同一个逻辑页号不会同时存在一级缓存链表和二级缓存链表中。

s203、若该一级缓存链表存在该逻辑页号,则将该数据更新在该一级缓存链表中该逻辑页号对应的位置;

在实际应用中,数据更新后,记录逻辑页号对应的数据的更新次数。将该一级缓存链表中的该逻辑页号对应的数据更新为该待写数据之后,还包括:

判断该逻辑页号对应的数据是否为第二次写入;

若是第二次写入,将更新后的数据和该逻辑页号移至该二级缓存链表的表头。

一级缓存链表用于存放访问次数较多的数据,二级缓存链表用于存放访问次数较少的数据。在实际应用中,数据更新后,记录逻辑页号对应的数据的写入次数。若数据为第二次写入,即第二次获取逻辑页号对应的数据,则说明数据写入次数较少,将其移至二级缓存链表的表头,删除一级缓存链表中更新后的数据,可以使一级缓存链表存放更多写入次数较多的数据。若写入次数大于二次,则不作处理,即写入次数大于二次时,直接在一级缓存链表中更新即可。若写入次数为一次,则该数据在一级缓存链表中没有对应的逻辑号,则按照步骤s205-s207处理。需要说明的是,一级缓存链表存储的数据为更新后的数据和步骤s204中由二级链表的表头移入的数据。

s204、若该二级缓存链表存在该逻辑页号,则将该数据更新在该二级缓存链表中该逻辑页号对应的位置;

在实际应用中,数据更新后,记录逻辑页号对应的数据的写入次数。将该二级缓存链表中的该逻辑页号对应的数据更新为该待写数据之后,还包括:

判断更新后的数据是否位于该二级缓存链表的表头;

若更新后的数据位于该二级缓存链表的表头,则将该更新后的数据和该逻辑页号移至该一级缓存链表的表头;

若更新后的数据不是位于该二级缓存链表的表头,则将该更新后的数据和该逻辑页号移至该二级缓存链表的表头。

需要说明的是,一级缓存链表和二级缓存链表中顺次排列的多个单元中,由表头到表尾存储的数据的写入次数呈现降低的趋势。因此,若更新后的数据位于二级缓存链表的表头,说明该数据写入频繁,通过将二级缓存链表中的数据移至一级缓存链表中,可以将写入次数较多的数据向一级缓存链表转移,以便使一级缓存链表存储写入量最多的数据。由于一级缓存链表中存储数据的单元较少,可以快速的进行数据的读取和写入操作。同时,将数据插入到一级缓存链表的表头后,一级缓存链表中的数据顺序向表尾移动,直到写满整个一级缓存链表。若处于表尾的数据没有位置写入,则写入二级缓存链表的表头。二级缓存链表存储的数据为更新后的数据和步骤s203中由一级链表移入的数据。

同理,若更新后的数据没有位于二级缓存链表的表头,则将其插入到二级缓存链表的表头,使二级缓存链表形成由表头到表尾存储的数据的写入次数逐渐减少。同时,将数据插入到二级缓存链表的表头后,二级缓存链表中的数据由表头到表尾顺次移动,直到整个二级缓存链表被写满。

s205、若该一级缓存链表和该二级缓存链表中均不存在该逻辑页号,则判断该一级缓存链表是否写满;

s206、若该一级缓存链表已写满,则判断该二级缓存链表是否写满,并当该二级缓存链表已写满时,将该二级缓存链表的表尾的数据移至该3d闪存的物理块中,并将一级缓存链表的表尾的数据移至二级缓存链表的表头,并将数据和逻辑页号写入一级缓存链表的表头,以及当二级缓存链表未写满时,将一级缓存链表的表尾的数据移至二级缓存链表的表头,并将数据和逻辑页号写入一级缓存链表的表头;

若二级缓存链表未写满,则将数据及逻辑页号写入二级缓存链表的表头。在对数据进行写入操作时,优先将数据写入一级缓存链表和二级缓存链表,可以减少对3d闪存的写入,一方面可以避免对3d闪存频繁写入造成温度升高导致的存储性能降低的问题,另一方面,一级缓存链表和二级缓存链表为在3d闪存中配置的二级存储器中的缓存链表,可以对数据进行缓存,将数据写入其中,可以快速的对数据的写入和读取操作进行响应。需要说明的是,将数据及逻辑页号写入二级缓存链表的表头后,原来在表头的数据和逻辑页号顺延到表头的下一个单元,其它单元的数据和逻辑页号依次顺延。

进一步地,将该二级缓存链表的表尾的数据移至该3d闪存的物理块中,具体可通过以下步骤实现:

步骤一、根据该表尾的数据的逻辑页号,在预置的映射表中查找该逻辑页号该表尾的数据的逻辑块号,并判断预置的最近擦除链表中是否存在该逻辑块号。

步骤二、若最近擦除链表中不存在该逻辑块号,则将该表尾的数据写入到该3d闪存中逻辑块号对应的物理块中,并在该最近擦除链表中记录该逻辑块号对应的物理块的物理块号和擦除次数1。

最近的擦除链表用于记录3d闪存中进行过擦除操作的物理块的物理块号和擦除次数。若最近擦除链表中没有逻辑块号,则说明逻辑块号对应的物理块没有发生过擦除操作,将该数据写入到该逻辑块号对应的物理块中,并在最近擦除链表中记录该物理块的物理块号和擦除次数1。

步骤三、若最近擦除链表中存在该逻辑块号,则判断该逻辑块号对应的物理块的擦除次数是否大于预置的擦除次数。

步骤四、若大于预置的擦除次数,则将该表尾的数据写入该3d闪存中的预置的空闲链表中擦除次数最少物理块。

若该逻辑块号对应的物理块的擦除次数不大于预置的擦除次数,则将表尾的数据写入逻辑块号对应的物理块中。空闲链表用于记录没有写入数据的物理块的物理块号、物理块的擦除次数和物理块被选择写入数据的次数。进一步地,将该表尾的数据写入该3d闪存中的预置的空闲链表中擦除次数最少的物理块,具体包括:

若逻辑块号对应的物理块的擦除次数大于预置的擦除次数,则判断空闲链表中是否存在空闲的物理块;若存在空闲的物理块,则将该表尾的数据写入擦除次数最少的且被选择写入数据的次数最少的物理块;若不存在空闲的物理块,则在预置的等待链表中选择擦除次数最少的物理块的物理块号加入到空闲链表中,并将该表尾的数据写入空闲链表中擦除次数最少的物理块。

等待链表用于记录最近擦除次数大于预置的擦除次数的物理块号和物理块的擦除次数。通过等待链表可以均衡写入的物理块的擦除次数,不会出现擦除次数剧增的情况。在实际应用中,判断该逻辑块号对应的物理块的擦除次数是否大于预置的擦除次数之后,还包括:若小于预置的擦除次数,则将数据写入物理块中,并更新物理块的擦除次数。通过上述方法,将数据写入到3d闪存的物理块之前,选择没有进行过擦除操作或擦除次数较少的物理块进行写入,可以均衡3d闪存中物理块的擦除次数,避免由于某个物理块的擦除次数过多发生失效导致数据的可靠性下降的问题。

s207、若该一级缓存链表未写满,则将该数据和该逻辑页号写入该一级缓存链表中的表头。

通过上述方法,可以按照从表头到表尾的顺序,将写入次数最多的数据存储于一级缓存链表中,以及按照表头到表尾的顺序,将写入次数较多的数据存储于二级缓存链表中,以便减少对3d闪存中物理块的写入次数。

本发明实施例提供的一种数据写入方法,通过将待写数据写入到缓存链表中,并在缓存链表写满的情况下,再将待写数据写入到3d闪存的物理块中,如此,可以极大的减少对3d闪存的访问,避免由于3d闪存的温度升高造成的存储性能降低的问题。此外,由于对3d闪存的访问量减少,还可以避免读取数据时临近的物理块间相互干扰造成的数据存储可靠性降低的问题。

请参阅图3,图3为本发明第三实施例提供的数据读取方法的实现流程示意图,图3所示的数据读取方法主要包括以下步骤:

s301、获取待读取数据的逻辑页号,并判断设置在二级存储器中的缓存链表中是否存在该逻辑页号;

逻辑页号为用于表示待写入3d闪存的数据的地址,通过逻辑页号可以在映射表中查找到数据待写入3d闪存的物理块号和物理页号。

s302、若缓存链表中存在该逻辑页号,则读取该缓存链表中该逻辑页号对应的数据;

缓存链表包括顺次排列的多个用于存储数据和数据的逻辑页号的单元,其中,每一个单元包括两个部分,一部分用于存储数据,另一部分用于存储该数据对应的逻辑页号。缓存链表可以为一个,也可以为多个。

s303、若缓存链表中不存在该逻辑页号,则根据该逻辑页号在3d闪存的物理块中查找该逻辑页号对应的数据并读取。

本发明实施例提供的一种数据读取方法,读取数据时,先通过缓存链表读取,如此,可以极大的减少对3d闪存的访问,避免由于3d闪存的温度升高造成的存储性能降低的问题。此外,由于对3d闪存的访问量减少,还可以避免读取数据时临近的物理块间相互干扰造成的数据存储可靠性降低的问题。

请参阅图4,图4为本发明第四实施例提供的数据读取方法的实现流程示意图,图4所示的数据读取方法主要包括以下步骤:

s401、获取待读取数据的逻辑页号;

逻辑页号为用于表示待写入3d闪存的数据的地址,通过逻辑页号可以在映射表中查找到数据待写入3d闪存的物理块号和物理页号。

s402、判断一级缓存链表或二级缓存链表中是否存在所述逻辑页号;

本发明实施例中缓存链表包括:一级缓存链表和二级缓存链表,二者预置于二级存储器中。一级缓存链表存储的额数据为更新次数最多的数据,由于空间局部效应,更新次数越多的数据,被访问的概率也最大,因此,数据在一级缓存链表中出现的概率大,所以先判断一级缓存链表中是否存在该逻辑页号。

s403、若该一级缓存链表中存在该逻辑页号,读取该一级缓存链表中该逻辑页号对应的数据;

s404、若该二级缓存链表中存在该逻辑页号,读取该二级缓存链表中该逻辑页号对应的数据;

s405、若该一级缓存链表中和该二级缓存链表中均不存在该逻辑页号,根据该逻辑页号在该3d闪存的物理块中查找该逻辑页号对应的数据并读取。

由于二级缓存链表存储的数据的更新次数少于一级缓存链表,当一级缓存链表不存在逻辑页号时,对二级缓存链表进行判断,当二级缓存链表不存在逻辑页号时,在3d闪存的物理块查找。读取数据时,通过先判断一级缓存链表和二级缓存链表中逻辑页号是否存在,可以减少对3d闪存的物理块的读取次数,避免由于读取次数频繁使得3d闪存的温度升高造成存储性能降低的问题。

本发明实施例提供的一种数据读取方法,读取数据时,先通过缓存链表读取,如此,可以极大的减少对3d闪存的访问,避免由于3d闪存的温度升高造成的存储性能降低的问题。此外,由于对3d闪存的访问量减少,还可以避免读取数据时临近的物理块间相互干扰造成的数据存储可靠性降低的问题。

请参阅图5,图5是本发明第五实施例提供的一种数据写入装置的结构示意图,为了便于说明,仅示出了与本发明实施例相关的部分。图5示例的数据写入装置可以是前述图1和图2所示实施例提供的数据写入方法的执行主体,或者还可以是该执行主体中的一个功能模块。图5示例的数据写入装置,主要包括:获取模块501、判断模块502和写入模块503。以上各功能模块详细说明如下:

获取模块501,用于获取待写入3d闪存的数据和该数据的逻辑页号。

判断模块502,用于判断配置在二级存储器中的缓存链表中是否存在该逻辑页号。

写入模块503,用于若该缓存链表中存在该逻辑页号,则将该数据更新在该缓存链表中该逻辑页号对应的位置。

写入模块503,还用于若该缓存链表中不存在该逻辑页号,则当该缓存链表写满时,将该缓存链表的表尾的数据移至该3d闪存中,并将该数据及该数据的逻辑页号写入该表头,当该缓存链表未写满时,将该数据及该数据的逻辑页号写入该缓存链表。

上述各模块实现各自功能的方法,具体可参考前述图1所示第一实施例提供的数据写入方法,此处不再赘述。

本发明实施例提供的一种数据写入装置,通过将待写数据写入到缓存链表中,并在缓存链表写满的情况下,再将待写数据写入到3d闪存的物理块中,如此,可以极大的减少对3d闪存的访问,避免由于3d闪存的温度升高造成的存储性能降低的问题。此外,由于对3d闪存的访问量减少,还可以避免读取数据时临近的物理块间相互干扰造成的数据存储可靠性降低的问题。

请参阅图6,图6是本发明第六实施例提供的一种数据写入装置的结构示意图,为了便于说明,仅示出了与本发明实施例相关的部分。图6示例的数据写入装置可以是前述图1和图2所示实施例提供的数据写入方法的执行主体,或者还可以是该执行主体中的一个功能模块。图6示例的数据写入装置,主要包括:获取模块601、判断模块602和写入模块603,其中,写入模块603包括:写入判断模块613和数据写入模块623,其中,数据写入模块623包括:查找模块6231、逻辑判断模块6232、逻辑写入模块6233和记录模块6234。以上各功能模块详细说明如下:

获取模块601,用于获取待写入3d闪存的数据和该数据的逻辑页号。

判断模块602,用于判断配置在二级存储器中的缓存链表中是否存在该逻辑页号。

写入模块603,用于若该缓存链表中存在该逻辑页号,则将该数据更新在该缓存链表中该逻辑页号对应的位置。

写入模块603,还用于若该缓存链表中不存在该逻辑页号,则当该缓存链表写满时,将该缓存链表的表尾的数据移至该3d闪存中,并将该数据及该数据的逻辑页号写入该表头,当该缓存链表未写满时,将该数据及该数据的逻辑页号写入该缓存链表。

进一步地,

缓存链表包括:一级缓存链表和二级缓存链表。

判断模块602,还用于判断该一级缓存链表或该二级缓存链表中是否存在该逻辑页号。

写入模块603,还用于若该一级缓存链表存在该逻辑页号,则将该数据更新在该一级缓存链表中该逻辑页号对应的位置。

写入模块603,还用于若该二级缓存链表存在该逻辑页号,则将该数据更新在该二级缓存链表中该逻辑页号对应的位置。

进一步地,

判断模块602,还用于判断逻辑页号对应的数据是否为第二次写入。

写入模块603,还用于若是,则将更新后的数据和该逻辑页号移至该二级缓存链表的表头。

进一步地,

判断模块602,还用于判断更新后的数据是否位于该二级缓存链表的表头。

写入模块603,还用于若是,则将该更新后的数据和该逻辑页号移至该一级缓存链表的表头。

写入模块603,还用于若否,则将该更新后的数据和该逻辑页号移至该二级缓存链表的表头。

进一步地,

写入模块603包括:

写入判断模块613,用于若该一级缓存链表和该二级缓存链表中均不存在该逻辑页号,则判断该一级缓存链表是否写满。

写入判断模块613,还用于若该一级缓存链表已写满,则判断该二级缓存链表是否写满。

数据写入模块623,用于当该二级缓存链表已写满时,将该二级缓存链表的表尾的数据移至该3d闪存的物理块中,并将一级缓存链表的表尾的数据移至二级缓存链表的表头,并将数据和逻辑页号写入一级缓存链表的表头,以及当二级缓存链表未写满时,将一级缓存链表的表尾的数据移至二级缓存链表的表头,并将数据和逻辑页号写入一级缓存链表的表头。

数据写入模块623,还用于若该一级缓存链表未写满,则将该数据和该逻辑页号写入该一级缓存链表中的表头。

进一步地,

数据写入模块623包括:

查找模块6231,用于根据该表尾的数据的逻辑页号,在预置的映射表中查找该表尾的数据的逻辑块号。

逻辑判断模块6232,用于并判断预置的最近擦除链表中是否存在该逻辑块号。

该映射表及该最近擦除链表预置在该3d闪存中。

逻辑写入模块6233,用于若否,则将该表尾的数据写入到该3d闪存中该逻辑块号对应的物理块中。

记录模块6234,用于在该最近擦除链表中记录该逻辑块号对应的物理块的物理块号和擦除次数1。

逻辑判断模块6232,还用于若是,则判断该逻辑块号对应的物理块的擦除次数是否大于预置的擦除次数。

逻辑写入模块6233,还用于若大于,则将该表尾的数据写入该3d闪存中的预置的空闲链表中擦除次数最少的物理块。

上述各模块实现各自功能的方法,具体可参考前述图2所示第二实施例提供的数据写入方法,此处不再赘述。

本发明实施例提供的一种数据写入装置,通过将待写数据写入到缓存链表中,并在缓存链表写满的情况下,再将待写数据写入到3d闪存的物理块中,如此,可以极大的减少对3d闪存的访问,避免由于3d闪存的温度升高造成的存储性能降低的问题。此外,由于对3d闪存的访问量减少,还可以避免读取数据时临近的物理块间相互干扰造成的数据存储可靠性降低的问题。

请参阅图7,图7是本发明第七实施例提供的一种数据读取装置的结构示意图,为了便于说明,仅示出了与本发明实施例相关的部分。图7示例的数据读取装置可以是前述图3和图4所示实施例提供的数据读取方法的执行主体,或者还可以是该执行主体中的一个功能模块。图7示例的数据读取装置,主要包括:获取模块701、判断模块702和读取模块703。以上各功能模块详细说明如下:

获取模块701,用于获取待读取数据的逻辑页号。

判断模块702,用于判断设置在二级存储器中的缓存链表中是否存在该逻辑页号。

读取模块703,用于若该二级存储器中的缓存链表中存在该逻辑页号,则读取该缓存链表中该逻辑页号对应的数据。

读取模块703,还用于若该二级存储器中的缓存链表中存在该逻辑页号,则根据该逻辑页号在3d闪存的物理块中查找该逻辑页号对应的数据并读取。

上述各模块实现各自功能的方法,具体可参考前述图3所示第三实施例提供的数据读取方法,此处不再赘述。

本发明实施例提供的一种数据读取方法,读取数据时,先通过缓存链表读取,如此,可以极大的减少对3d闪存的访问,避免由于3d闪存的温度升高造成的存储性能降低的问题。此外,由于对3d闪存的访问量减少,还可以避免读取数据时临近的物理块间相互干扰造成的数据存储可靠性降低的问题。

请继续参阅图7,图7是本发明第八实施例提供的一种数据读取装置的结构示意图,为了便于说明,仅示出了与本发明实施例相关的部分。图7示例的数据读取装置可以是前述图3和图4所示实施例提供的数据读取方法的执行主体,或者还可以是该执行主体中的一个功能模块。图7示例的数据读取装置,主要包括:获取模块701、判断模块702和读取模块703。以上各功能模块详细说明如下:

获取模块701,用于获取待读取数据的逻辑页号。

判断模块702,用于判断设置于二级存储器中的缓存链表中是否存在该逻辑页号。

读取模块703,用于若是,则读取该缓存链表中该逻辑页号对应的数据。

读取模块703,还用于若否,则根据该逻辑页号在3d闪存的物理块中查找该逻辑页号对应的数据并读取。

进一步地,

缓存链表包括:一级缓存链表和二级缓存链表。

判断模块702,还用于判断该一级缓存链表或该二级缓存链表中是否存在该逻辑页号。

读取模块703,还用于若该一级缓存链表中存在该逻辑页号,则读取该一级缓存链表中该逻辑页号对应的数据。

读取模块703,还用于若该二级缓存链表中存在该逻辑页号,则读取该二级缓存链表中该逻辑页号对应的数据。

读取模块703,还用于若该一级缓存链表和该二级缓存链表中均不存在该逻辑页号,则根据该逻辑页号在该3d闪存的物理块中查找该逻辑页号对应的数据并读取。

上述各模块实现各自功能的方法,具体可参考前述图4所示第四实施例提供的数据读取方法,此处不再赘述。

本发明实施例提供的一种数据读取方法,读取数据时,先通过缓存链表读取,如此,可以极大的减少对3d闪存的访问,避免由于3d闪存的温度升高造成的存储性能降低的问题。此外,由于对3d闪存的访问量减少,还可以避免读取数据时临近的物理块间相互干扰造成的数据存储可靠性降低的问题。

在本申请所提供的多个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信链接可以是通过一些接口,装置或模块的间接耦合或通信链接,可以是电性,机械或其它的形式。

所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。

所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本发明所必须的。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。

以上为对本发明所提供的数据写入、读取方法和装置的描述,对于本领域的技术人员,依据本发明实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本发明的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1