CN106155919A - 一种3d闪存的控制方法及控制*** - Google Patents
一种3d闪存的控制方法及控制*** Download PDFInfo
- Publication number
- CN106155919A CN106155919A CN201610595172.7A CN201610595172A CN106155919A CN 106155919 A CN106155919 A CN 106155919A CN 201610595172 A CN201610595172 A CN 201610595172A CN 106155919 A CN106155919 A CN 106155919A
- Authority
- CN
- China
- Prior art keywords
- physical block
- physical
- block
- page
- free
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/22—Employing cache memory using specific memory technology
- G06F2212/222—Non-volatile memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种3D闪存的控制方法和控制***。所述控制方法包括以下步骤:根据预设的映射表得到所述逻辑块号对应物理块链的入口物理块号;判断所述入口物理块号对应物理块中所述块内页偏移号对应物理页是否空闲或是否存在有效数据,如果是,进行数据的写入或读出;如果否,在进行写操作时,查找所述当前物理块链中各个替换块是否有空闲物理页,如果是,在所述空闲物理页中进行数据的写入,如果否,则查找所述当前物理块链之外的物理块链是否存在空闲物理块,如果存在空闲物理块,将所述空闲物理块分配给所述当前物理块链并在所述空闲物理块的空闲物理页中进行数据的写入,如果没有存在空闲物理块,则进行物理块的擦除回收操作。
Description
技术领域
本发明涉及存储技术领域,尤其涉及一种3D闪存的控制方法及控制***。
背景技术
由于3D闪存具有高存储容量的特点,因此受到越来越多行业的青睐,但是现有3D闪存存在上层操作***对于不同逻辑地址访问的读写频度不同,且在现有3D闪存管理技术的框架下,某些逻辑地址对应的物理存储区域不断进行读写操作,而另一些逻辑地址对应的物理块长期不做更新。特别是在现有3D闪存芯片的物理空间的组织形式上,比如令log_page为逻辑页号,每个物理块中有page_per_block个物理页,当请求更新的数据仅存储在物理块的第offset=log_page%page_per_block号物理页中,当逻辑页中的数据需要更新时,则分配新的空闲物理块,并在空闲物理块中的第offset物理页内写入数据。当某一逻辑地址中的数据需要频繁更新时,一方面物理块链将不断增长,另一方面,物理块链中将存在大量未被使用的空闲物理页,导致空闲严重浪费。
发明内容
本发明旨在解决现有技术中对某些逻辑地址对应的物理存储区域不断进行读写操作,而另一些逻辑地址对应的物理块长期不做更新的技术问题的技术问题,提供一种3D闪存的控制方法及控制***。
本发明的实施例提供一种3D闪存的控制方法,所述控制方法包括以下步骤:在进行数据的读/写操作时,根据读/写数据的逻辑页号得到逻辑块号和块内页偏移号;
根据预设的映射表得到所述逻辑块号对应物理块链的入口物理块号,其中所述物理块链包括一个作为入口物理块的基本块和多个用于更新数据的替换块;
判断所述入口物理块号对应物理块中所述块内页偏移号对应物理页是否空闲或是否存在有效数据,如果是,进行数据的写入或读出;
如果否,在进行读操作时,查找所述当前物理块链中各个物理块的物理页,当查找到所述块内页偏移号对应物理页存在有效数据时,进行有效数据的读出,否则返回提示无有效数据;
在进行写操作时,查找所述当前物理块链中各个替换块是否有空闲物理页,如果是,在所述空闲物理页中进行数据的写入,如果否,则查找所述当前物理块链之外的物理块链是否存在空闲物理块,如果存在空闲物理块,将所述空闲物理块分配给所述当前物理块链并在所述空闲物理块的空闲物理页中进行数据的写入,如果没有存在空闲物理块,则进行物理块的擦除回收操作。
本发明的控制方法与现有技术相比,有益效果在于:通过将物理块链中的物理块分为基本块和用于更新数据的替换块,来防止数据频繁更新导致块链过长从而增加响应时间的问题。
本发明的实施例还提供一种3D闪存的控制***,所述控制***包括:生成模块,映射关系建立模块,确定模块,写入操作模块,读出操作模块,读出查找模块,写入查找分配模块,结束操作模块和擦除回收操作模块;
生成模块,用于在进行数据的读/写操作时,根据读写数据的逻辑页号得到逻辑块号和块内页偏移号;
映射关系建立模块,用于根据预设的映射表得到所述逻辑块号对应物理块链的入口物理块号,其中所述物理块链包括一个作为入口物理块的基本块和多个用于更新数据的替换块;
确定模块,用于判断所述入口物理块号对应物理块中所述块内页偏移号对应物理页是否空闲或是否存在有效数据,如果是,在进行读操作时,进入读出操作模块,在进行写操作时,进入写入操作模块,如果否,在进行读操作时,进入读出查找模块,在进行写操作时,进入写入查找分配模块;
读出操作模块,用于进行有效数据的读出;
写入操作模块,用于在所述空闲物理页中进行数据的写入;
读出查找模块,用于查找所述当前物理块链中各个物理块的物理页,当查找到所述块内页偏移号对应物理页存在有效数据时,进入读出操作模块,否则进入结束操作模块;
写入查找分配模块,用于查找所述当前物理块链中各个替换块是否有空闲物理页,如果是,进入写入操作模块,如果否,所述写入查找分配模块还用于查找所述当前物理块链之外的物理块链是否存在空闲物理块,如果存在空闲物理块,将所述空闲物理块分配给所述当前物理块链和进入写入操作模块,如果没有存在空闲物理块,进入所述擦除回收操作模块;
擦除回收操作模块,用于进行物理块的擦除回收操作。
本发明的控制***与现有技术相比,有益效果在于:通过将物理块链中的物理块分为基本块和用于更新数据的替换块,来防止数据频繁更新导致块链过长从而增加响应时间的问题。
附图说明
图1是本发明3D闪存的控制方法在进行数据的写操作时一个实施例的流程示意图;
图2是本发明3D闪存的控制方法中空闲物理块分配算法一个实施例的流程示意图;
图3是本发明3D闪存的控制方法中构建队列一个实施例的流程示意图;
图4是本发明3D闪存的控制方法中物理块擦除回收策略一个实施例的流程示意图;
图5是本发明3D闪存的控制方法在进行数据的读操作时一个实施例的流程示意图;
图6是本发明3D闪存的控制***一个实施例的结构示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
本发明的3D闪存的控制方法主要针对某些逻辑地址对应的物理存储区域不断进行读写操作,而另一些逻辑地址对应的物理块长期不做更新的技术问题,主要从三个方面进行改进:一、对物理块链的组织形式进行改进,防止某些逻辑地址空间存储的数据因更新较频繁而导致物理块链过长,从而增加存储操作的响应时间。二、对空闲块的分配策略进行改进,实现物理块擦除频度均匀分布的目标。三、对物理块的擦除回收策略进行改进,缩短延迟时间,提高芯片寿命。
图1是本发明一个实施例3D闪存的控制方法在进行数据的写操作时的流程示意图。如图1所示,在进行数据的写操作时,所述控制方法包括以下步骤:
步骤S1,在进行数据的写操作时,根据读写数据的逻辑页号得到逻辑块号和块内页偏移号;
步骤S2,根据预设的映射表得到所述逻辑块号对应物理块链的入口物理块号,其中所述物理块链包括一个作为入口物理块的基本块和多个用于更新数据的替换块;
步骤S3,判断所述入口物理块号对应物理块中所述块内页偏移号对应物理页是否空闲,如果是,进入步骤S4,如果否,进入步骤S5;
步骤S4,在所述空闲物理页中进行数据的写入;
步骤S5,查找所述当前物理块链中各个替换块是否有空闲物理页,如果是进入步骤S4,如果否进入步骤S6;
步骤S6,查找所述当前物理块链之外的物理块链是否存在空闲物理块,如果存在空闲物理块,进入步骤S4,如果没有存在空闲物理块,则进入步骤S8;
步骤S7,将所述空闲物理块分配给所述当前物理块链,进入步骤S4;
步骤S8,进行物理块的擦除回收操作。
在具体实施中,对于3D闪存芯片,所述3D闪存芯片可分为若干层,每层可分为若干行,而每行中有若干物理块,每个物理块有若干个物理页。
在步骤S1中,操作***首先发出写操作请求,存储管理***计算相应的逻辑块号log_block和块内页偏移号offset,比如每个物理块中有page_per_block=36个物理页,而写数据的逻辑页号log_page=38,其对应的逻辑块号log_block为log_page/page_per_block=38/36=1,其对应的块内页偏移号offset为log_page%page_per_block=38%36=2,接着存储管理***查看逻辑块号到物理块号的映射表,获得对应物理块链的入口物理块,即基本块的物理块号phy_block。
在步骤S2中,每个物理块链只有一个基本块,该基本块作为块链的入口物理块。比如逻辑页号为log_page,每个物理块中共有page_per_block个物理页,则在基本块中,逻辑页仅在log_page%page_per_block物理页上存入数据。每个物理块链有多个替换块,当数据进行更新,且基本块对应的物理页存有数据时,则更新数据按照物理页号大小,顺次写入替换块中。也就是说对基本块中的物理页进行数据更新时,则更新数据按照物理页号大小,顺次写入替换块中。另外在物理块链的组织形式上,通过将物理块链中的物理块分为基本块和替换块,针对频繁进行数据更新的逻辑页,用于更新数据的替换块可以保证了空间的有效利用,减少了擦除次数以及对因为擦除期间复制有效数据的时间,提高了芯片的性能。而针对频繁读数据的操作,基本块中按照随机读取方式,保证了较短的读数据时间,从而防止数据频繁更新导致块链过长以增加响应时间的问题发生。
在步骤S3中,若phy_block中的第offset物理页空闲,则向该物理页中写入数据;否则,顺次查找当前的物理块链中的替换块是否有空闲的物理页。若块链中无空闲的物理页,则分配空闲物理块给当前的物理块链。将新分配的空闲物理块放于当前的物理块链的尾端,并在所述空闲物理块的第一个物理页上写入数据。
在具体实施中,步骤S5中,所述查找所述当前物理块链中各个替换块是否有空闲物理页的步骤,具体为:
按照物理块加入当前物理块链的顺序查找所述当前物理块链中各个替换块是否有空闲物理页。
在具体实施中,在分配空闲物理块时,存储管理***首先查看当前物理块链所在的物理行中是否有空闲物理块,若该行中存在空闲物理块,则分配;若该行中无空闲物理块,则转入图2,按照空闲物理块分配算法,分配空闲物理块。如图2所示,步骤S6中,所述查找所述当前物理块链之外的物理块链是否存在空闲物理块,具体包括:
步骤S61,查找所述当前物理块链所在物理行中是否存在空闲物理块,如果是,进入步骤S7,如果否则进入步骤S62;
步骤S62,查找所述当前物理块链所在物理行外的物理行是否存在空闲物理块,如果是进入步骤S7,如果否则进入步骤S8。
在具体实施中,如图3所示,步骤S62,具体包括:
步骤S621,构建一个队列,其中所述队列包括多个元素,每个元素对应一个物理行;
步骤S622,从所述队列的队头至所述当前物理块链中第一个替换块所在物理行对应的元素顺次查找是否有存在空闲物理块的物理行,如果是进入步骤S7,如果否则进入步骤S8。
在具体实施中,每个元素的记录内容包括对应物理行中物理块的总擦除次数。
步骤S621,具体为;
根据所述物理行中物理块的总擦除次数从小到大对多个元素进行排列,形成所述队列。也就是说,在队列中靠近队头元素所对应的物理行擦除次数较少,而靠近队尾元素所对应的物理行擦除次数较多。
那么在空闲物理块的分配方面,在当前物理块链申请空闲物理块,而当前物理块链所在的物理行没有空闲物理块时,存储管理***构建一个队列queue_erase,接着从队列queue_erase的队头开始扫描,查看队列中元素对应的行是否有空闲物理块,若有,则分配该空闲物理块;若扫描到行号为line所对应的元素依然没有空闲物理块,其中行号为line的物理行就是当前物理块链所在的物理行,则对队列中行号为line对应元素之前的元素的某个对应行中的物理块链进行擦除操作,此步骤见如图4所示。经过回收擦除后,按照图4步骤分配空闲物理块给当前的物理块链。
由于现有技术中3D闪存芯片的空闲块分配策略为线性分配策略,当存储管理***需要分配空闲块进行数据写入时,在上一次分配的空闲块的位置基础上,按照物理块号大小顺序,顺次扫描芯片中的物理块,直到找到空闲物理块,并分配该空闲物理块。该方法的缺陷主要在于,对于一些存储更新频度较少的数据的物理块,相对于一些擦次数较多的物理块,由于其被擦除次数较少,从而导致在未充分利用的情况下,芯片就会因少数擦除频度过高的物理块而损坏,从而严重缩短芯片的使用寿命。因此本发明在空闲物理块的分配方面,根据局部性原理以及3D闪存的性能特点,考虑到连续读取同一行的物理块的响应速度较快这一特性,优先分配与当前的物理块链所在同一行的空闲物理块。若该物理行无空闲物理块,则仅仅扫描queue_erase队列中当前物理块链所在行对应元素之前的元素。另外,由于在队列中靠近队头元素所对应的物理行擦除次数较少,而靠近队尾元素所对应的物理行擦除次数较多,那么扫描的这些元素所对应的物理行的擦除次数都较少,那么相对来说这些元素所对应的物理行的寿命较长,以保证了芯片中各个物理块的擦除寿命分布较为平均,从而延长了芯片的整体寿命。
在具体实施中,每个元素的记录内容包括对应物理行中物理块的总擦除次数,还包括空闲物理页占该行总空间的比例,如图4所示,所述步骤S8,具体包括:
步骤S81,从所述队列的队头开始至所述当前物理块链中第一个替换块所在物理行对应的元素,查找队列中每个元素所记录的空闲物理页占该行总空间的比例,以确定所述空闲物理页所占比例最大的元素;
步骤S82,对所述空闲物理页所占比例最大的元素对应物理行中最长的物理链块进行擦除回收;
步骤S83,修改所述空闲物理页所占比例最大的元素中的记录内容;
步骤S84,移动所述空闲物理页所占比例最大的元素在队列中的位置,以重新排列所述队列,进入步骤S7。
在对芯片进行物理块擦除回收操作中,存储管理***首先从队列queue_erase的队头开始扫描,查看队列中每个元素所记录对应物理行中,空闲物理页占该行总空间的比例,找到第line行对应队列元素之前的所有元素中空闲物理页所占比例最大的元素element,该元素element对应的行号为line_max_free,接着对第line_max_free号行的物理块链进行擦除回收操作,并修改元素element存储的记录内容。移动队列元素element在队列queue_erase中的位置,使队列按照擦除次数从小到大有序排列,并将第line_max_free号行中的空闲物理块分配给当前的物理块链。
在现有的物理块擦除回收策略中,当芯片中无空闲块供存储管理***分配时,存储管理***寻找芯片中最长的物理块链进行回收擦除操作,并释放出大量物理空闲的物理块供存储管理***进行分配。一方面,该方法寻找的最长物理块链,实际的空间利用率较低,仅是某个特定页更新较频繁,当对该物理块链进行擦除时,大量未被利用的物理页也受到擦除操作,严重降低芯片寿命。另一方面,由于是针对最长的物理块链进行擦除操作,导致单次延迟时间较长,从而降低了芯片性能。而本发明的擦除回收策略是:存储管理***只在queue_erase队列查找所需空闲物理块的块链所在的物理行对应的元素之前的元素,即进行擦除回收操作的物理行的擦除次数需小于所需空闲物理块的块链所在行的擦除次数,这样做保证了芯片中各物理块的擦除次数分布较为均匀,从而防止芯片因单个物理块擦除次数较多而影响芯片整体寿命。另外,在每次选择需要擦除的物理行中,本发明选择空闲物理页比例最高的物理行进行擦除,这样做可以缩短管理***的响应时间,从而提高***的性能。
图5是根据本发明一个实施例3D闪存的控制方法在进行数据的读操作时的流程示意图。如图5所示,在进行数据的读操作时,所述控制方法包括以下步骤:
步骤S51,根据读数据的逻辑页号得到逻辑块号和块内页偏移号;
步骤S52,根据预设的映射表得到所述逻辑块号对应物理块链的入口物理块号,其中所述物理块链包括一个作为入口物理块的基本块和多个用于更新数据的替换块;
步骤S53,判断所述入口物理块号对应物理块中所述块内页偏移号对应物理页是否存在有效数据,如果是,进入步骤S54,如果否,进入步骤S55;
步骤S54,进行有效数据的读出;
步骤S55,查找所述当前物理块链中各个物理块的物理页,当查找到所述块内页偏移号对应物理页存在有效数据时,进入步骤S54,否则进入步骤S56;
步骤S56,返回提示无有效数据。
也就是说,操作***给出逻辑页号log_page,发出读数据请求。存储管理***首先计算对应的逻辑块号log_block和块内偏移量offset。根据对应的逻辑块号log_block,查找逻辑块到物理块的映射表,获得物理块链的入口物理块号phy_block。存储管理***查看第phy_block号物理块的第offset物理页中的数据是否为有效数据,若有效,则读出数据即可;若为无效数据,存储管理***从块链的最后一个物理块的最后一个物理页,右前向后,顺次扫描当前物理块链上各个物理块的物理页,一方面查看物理页中是否存有offset页的数据,另一方面查看该物理页中的数据是否有效,若满足以上两个方面,则读出数据;否则返回提示无有效数据。对于有效数据,每个物理页附带有元数据存储区,元数据存储区中存放有标记位用于标记该物理页中的数据是否有效。
在具体实施中,本发明还提供一种实施例的3D闪存的控制***,所述控制***包括:生成模块10,映射关系建立模块20,确定模块30,写入操作模块40,读出操作模块50,读出查找模块60,写入查找分配模块70,结束操作模块80和擦除回收操作模块90;
生成模块10,用于在进行数据的读/写操作时,根据读写数据的逻辑页号得到逻辑块号和块内页偏移号;
映射关系建立模块20,用于根据预设的映射表得到所述逻辑块号对应物理块链的入口物理块号,其中所述物理块链包括一个作为入口物理块的基本块和多个用于更新数据的替换块;
确定模块30,用于判断所述入口物理块号对应物理块中所述块内页偏移号对应物理页是否空闲或是否存在有效数据,如果是,在进行读操作时,进入读出操作模块50,在进行写操作时,进入写入操作模块40,如果否,在进行读操作时,进入读出查找模块60,在进行写操作时,进入写入查找分配模块70;
读出操作模块50,用于进行有效数据的读出;
写入操作模块40,用于在所述空闲物理页中进行数据的写入;
读出查找模块60,用于查找所述当前物理块链中各个物理块的物理页,当查找到所述块内页偏移号对应物理页存在有效数据时,进入读出操作模块50,否则进入结束操作模块80;
写入查找分配模块70,用于查找所述当前物理块链中各个替换块是否有空闲物理页,如果是,进入写入操作模块40,如果否,所述写入查找分配模块70还用于查找所述当前物理块链之外的物理块链是否存在空闲物理块,如果存在空闲物理块,将所述空闲物理块分配给所述当前物理块链和进入写入操作模块40,如果没有存在空闲物理块,进入所述擦除回收操作模块90;
擦除回收操作模块90,用于进行物理块的擦除回收操作。
在具体实施中,对于3D闪存芯片,所述3D闪存芯片可分为若干层,每层可分为若干行,而每行中有若干物理块,每个物理块有若干个物理页。
在生成模块10中,操作***首先发出写操作请求,生成模块10计算相应的逻辑块号log_block和块内页偏移号offset,比如每个物理块中有page_per_block=36个物理页,而写数据的逻辑页号log_page=38,其对应的逻辑块号log_block为log_page/page_per_block=38/36=1,其对应的块内页偏移号offset为log_page%page_per_block=38%36=2,接着映射关系建立模块20查看逻辑块号到物理块号的映射表,获得对应物理块链的入口物理块,即基本块的物理块号phy_block。
在映射关系建立模块20中,每个物理块链只有一个基本块,该基本块作为块链的入口物理块。比如逻辑页号为log_page,每个物理块中共有page_per_block个物理页,则在基本块中,逻辑页仅在log_page%page_per_block物理页上存入数据。每个物理块链有多个替换块,当数据进行更新,且基本块对应的物理页存有数据时,则更新数据按照物理页号大小,顺次写入替换块中。也就是说对基本块中的物理页进行数据更新时,则更新数据按照物理页号大小,顺次写入替换块中。另外在物理块链的组织形式上,通过将物理块链中的物理块分为基本块和替换块,针对频繁进行数据更新的逻辑页,用于更新数据的替换块可以保证了空间的有效利用,减少了擦除次数以及对因为擦除期间复制有效数据的时间,提高了芯片的性能。而针对频繁读数据的操作,基本块中按照随机读取方式,保证了较短的读数据时间,从而防止数据频繁更新导致块链过长以增加响应时间的问题发生。
在确定模块30中,若phy_block中的第offset物理页空闲,则向该物理页中写入数据;否则,顺次查找当前的物理块链中的替换块是否有空闲的物理页。若块链中无空闲的物理页,则分配空闲物理块给当前的物理块链。将新分配的空闲物理块放于当前的物理块链的尾端,并在所述空闲物理块的第一个物理页上写入数据。
在具体实施中,所述写入查找分配模块70还用于按照物理块加入当前物理块链的顺序查找所述当前物理块链中各个替换块是否有空闲物理页。
在具体实施中,所述写入查找分配模块70包括第一物理块查找单元,物理块分配单元和第二物理块查找单元;
第一物理块查找单元,用于查找所述当前物理块链所在物理行中是否存在空闲物理块,如果是,进入物理块分配单元和写入操作模块,如果否,查找所述当前物理块链所在物理行外的物理行是否存在空闲物理块;
物理块分配单元,用于将所述空闲物理块分配给所述当前物理块链;
第二物理块查找单元,用于查找所述当前物理块链所在物理行外的物理行是否存在空闲物理块,如果是,进入物理块分配单元和写入操作模块40,如果否,进入擦除回收操作模块90。
在具体实施中,所述写入查找分配模块70包括队列构建单元和队列扫描单元,
队列构建单元用于构建一个队列,其中所述队列包括多个元素,每个元素对应一个物理行;
队列扫描单元用于从所述队列的队头至所述当前物理块链所在物理行对应的元素顺次查找是否有存在空闲物理块的物理行,如果是,进入物理块分配单元和写入操作模块,如果否,则进入所述擦除回收操作模块。
每个元素的记录内容包括对应物理行中物理块的总擦除次数,所述队列构建单元还用于根据所述物理行中物理块的总擦除次数从小到大对多个元素进行排列,形成所述队列。也就是说,在队列中靠近队头元素所对应的物理行擦除次数较少,而靠近队尾元素所对应的物理行擦除次数较多。
那么在空闲物理块的分配方面,在当前物理块链申请空闲物理块,而当前物理块链所在的物理行没有空闲物理块时,队列构建单元构建一个队列queue_erase,接着从队列queue_erase的队头开始扫描,查看队列中元素对应的行是否有空闲物理块,若有,则分配该空闲物理块;若扫描到行号为line所对应的元素依然没有空闲物理块,其中行号为line的物理行就是当前物理块链所在的物理行,则对队列中行号为line对应元素之前的元素的某个对应行中的物理块链进行擦除操作,此步骤见如图4所示。经过回收擦除后,按照图4步骤分配空闲物理块给当前的物理块链。
由于现有技术中3D闪存芯片的空闲块分配策略为线性分配策略,当存储管理***需要分配空闲块进行数据写入时,在上一次分配的空闲块的位置基础上,按照物理块号大小顺序,顺次扫描芯片中的物理块,直到找到空闲物理块,并分配该空闲物理块。该方法的缺陷主要在于,对于一些存储更新频度较少的数据的物理块,相对于一些擦次数较多的物理块,由于其被擦除次数较少,从而导致在未充分利用的情况下,芯片就会因少数擦除频度过高的物理块而损坏,从而严重缩短芯片的使用寿命。因此本发明在空闲物理块的分配方面,根据局部性原理以及3D闪存的性能特点,考虑到连续读取同一行的物理块的响应速度较快这一特性,优先分配与当前的物理块链所在同一行的空闲物理块。若该物理行无空闲物理块,则仅仅扫描queue_erase队列中当前物理块链所在行对应元素之前的元素。另外,由于在队列中靠近队头元素所对应的物理行擦除次数较少,而靠近队尾元素所对应的物理行擦除次数较多,那么扫描的这些元素所对应的物理行的擦除次数都较少,那么相对来说这些元素所对应的物理行的寿命较长,以保证了芯片中各个物理块的擦除寿命分布较为平均,从而延长了芯片的整体寿命。
在具体实施中,每个元素的记录内容包括对应物理行中物理块的总擦除次数,还包括空闲物理页占该行总空间的比例,所述擦除回收操作模块90包括:元素扫描单元,物理块链回收单元,修改单元和移动单元,
元素扫描单元,用于从所述队列的队头开始至所述当前物理块链中第一个替换块所在物理行对应的元素,查找队列中每个元素所记录的空闲物理页占该行总空间的比例,以确定所述空闲物理页所占比例最大的元素;
物理块链回收单元,用于对所述空闲物理页所占比例最大的元素对应物理行中最长的物理链块进行擦除回收;
修改单元,用于修改所述空闲物理页所占比例最大的元素中的记录内容;
移动单元,用于移动所述空闲物理页所占比例最大的元素在队列中的位置,以重新排列所述队列,并进入物理块分配单元和写入操作模块。
在对芯片进行物理块擦除回收操作中,元素扫描单元首先从队列queue_erase的队头开始扫描,查看队列中每个元素所记录对应物理行中,空闲物理页占该行总空间的比例,找到第line行对应队列元素之前的所有元素中空闲物理页所占比例最大的元素element,该元素element对应的行号为line_max_free,接着对第line_max_free号行的物理块链进行擦除回收操作,并修改元素element存储的记录内容。移动队列元素element在队列queue_erase中的位置,使队列按照擦除次数从小到大有序排列,并将第line_max_free号行中的空闲物理块分配给当前的物理块链。
在现有的物理块擦除回收策略中,当芯片中无空闲块供存储管理***分配时,存储管理***寻找芯片中最长的物理块链进行回收擦除操作,并释放出大量物理空闲的物理块供存储管理***进行分配。一方面,该方法寻找的最长物理块链,实际的空间利用率较低,仅是某个特定页更新较频繁,当对该物理块链进行擦除时,大量未被利用的物理页也受到擦除操作,严重降低芯片寿命。另一方面,由于是针对最长的物理块链进行擦除操作,导致单次延迟时间较长,从而降低了芯片性能。而本发明的擦除回收策略是:元素扫描单元只在queue_erase队列查找所需空闲物理块的块链所在的物理行对应的元素之前的元素,即进行擦除回收操作的物理行的擦除次数需小于所需空闲物理块的块链所在行的擦除次数,这样做保证了芯片中各物理块的擦除次数分布较为均匀,从而防止芯片因单个物理块擦除次数较多而影响芯片整体寿命。另外,在每次选择需要擦除的物理行中,本发明选择空闲物理页比例最高的物理行进行擦除,这样做可以缩短管理***的响应时间,从而提高***的性能。
本发明的3D闪存的控制方法和控制***,通过将物理块链中的物理块分为基本块和用于更新数据的替换块,来防止数据频繁更新导致块链过长从而增加响应时间的问题。该技术适用但并不限于存储集群、数据服务器、个人商务存储等方面的3D闪存存储介质。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (15)
1.一种3D闪存的控制方法,其特征在于:所述控制方法包括以下步骤:
在进行数据的读/写操作时,根据读/写数据的逻辑页号得到逻辑块号和块内页偏移号;
根据预设的映射表得到所述逻辑块号对应物理块链的入口物理块号,其中所述物理块链包括一个作为入口物理块的基本块和多个用于更新数据的替换块;
判断所述入口物理块号对应物理块中所述块内页偏移号对应物理页是否空闲或是否存在有效数据,如果是,进行数据的写入或读出;
如果否,在进行读操作时,查找所述当前物理块链中各个物理块的物理页,当查找到所述块内页偏移号对应物理页存在有效数据时,进行有效数据的读出,否则返回提示无有效数据;
在进行写操作时,查找所述当前物理块链中各个替换块是否有空闲物理页,如果是,在所述空闲物理页中进行数据的写入,如果否,则查找所述当前物理块链之外的物理块链是否存在空闲物理块,如果存在空闲物理块,将所述空闲物理块分配给所述当前物理块链并在所述空闲物理块的空闲物理页中进行数据的写入,如果没有存在空闲物理块,则进行物理块的擦除回收操作。
2.如权利要求1所述的控制方法,其特征在于:所述查找所述当前物理块链中各个替换块是否有空闲物理页的步骤,具体为:
按照物理块加入当前物理块链的顺序查找所述当前物理块链中各个替换块是否有空闲物理页。
3.如权利要求1所述的控制方法,其特征在于:所述查找所述当前物理块链之外的物理块链是否存在空闲物理块,具体包括:
查找所述当前物理块链所在物理行中是否存在空闲物理块;
如果是,进入将所述空闲物理块分配给所述当前物理块链并在所述空闲物理块的空闲物理页中进行数据的写入的步骤;
如果否,查找所述当前物理块链所在物理行外的物理行是否存在空闲物理块。
4.如权利要求3所述的控制方法,其特征在于:所述查找所述当前物理块链所在物理行外的物理行是否存在空闲物理块,具体包括:
构建一个队列,其中所述队列包括多个元素,每个元素对应一个物理行;
从所述队列的队头至所述当前物理块链中第一个替换块所在物理行对应的元素顺次查找是否有存在空闲物理块的物理行,如果是,进入将所述空闲物理块分配给所述当前物理块链并在所述空闲物理块的空闲物理页中进行数据的写入的步骤,如果否,则进入进行物理块的擦除回收操作的步骤。
5.如权利要求4所述的控制方法,其特征在于:每个元素的记录内容包括对应物理行中物理块的总擦除次数;
构建一个队列,具体为;
根据所述物理行中物理块的总擦除次数从小到大对多个元素进行排列,形成所述队列。
6.如权利要求4或5所述的控制方法,其特征在于:每个元素的记录内容包括对应物理行中物理块的总擦除次数和空闲物理页占该行总空间的比例。
7.如权利要求6所述的控制方法,其特征在于:所述物理块的擦除回收操作,具体包括:
从所述队列的队头开始至所述当前物理块链中第一个替换块所在物理行对应的元素,查找队列中每个元素所记录的空闲物理页占该行总空间的比例,以确定所述空闲物理页所占比例最大的元素;
对所述空闲物理页所占比例最大的元素对应物理行中最长的物理链块进行擦除回收;
修改所述空闲物理页所占比例最大的元素中的记录内容;
移动所述空闲物理页所占比例最大的元素在队列中的位置,以重新排列所述队列,并进入将所述空闲物理块分配给所述当前物理块链并在所述空闲物理块的空闲物理页中进行数据的写入的步骤。
8.如权利要求1所述的控制方法,其特征在于:所述将所述空闲物理块分配给所述当前物理块链并在所述空闲物理块的空闲物理页中进行数据的写入,具体为:
将所述空闲物理块分配给所述当前物理块链,并为位于所述当前物理块链的链尾;
在所述空闲物理块的第一个空闲物理页中进行数据的写入。
9.一种3D闪存的控制***,其特征在于:所述控制***包括:生成模块,映射关系建立模块,确定模块,写入操作模块,读出操作模块,读出查找模块,写入查找分配模块,结束操作模块和擦除回收操作模块;
生成模块,用于在进行数据的读/写操作时,根据读写数据的逻辑页号得到逻辑块号和块内页偏移号;
映射关系建立模块,用于根据预设的映射表得到所述逻辑块号对应物理块链的入口物理块号,其中所述物理块链包括一个作为入口物理块的基本块和多个用于更新数据的替换块;
确定模块,用于判断所述入口物理块号对应物理块中所述块内页偏移号对应物理页是否空闲或是否存在有效数据,如果是,在进行读操作时,进入读出操作模块,在进行写操作时,进入写入操作模块,如果否,在进行读操作时,进入读出查找模块,在进行写操作时,进入写入查找分配模块;
读出操作模块,用于进行有效数据的读出;
写入操作模块,用于在所述空闲物理页中进行数据的写入;
读出查找模块,用于查找所述当前物理块链中各个物理块的物理页,当查找到所述块内页偏移号对应物理页存在有效数据时,进入读出操作模块,否则进入结束操作模块;
写入查找分配模块,用于查找所述当前物理块链中各个替换块是否有空闲物理页,如果是,进入写入操作模块,如果否,所述写入查找分配模块还用于查找所述当前物理块链之外的物理块链是否存在空闲物理块,如果存在空闲物理块,将所述空闲物理块分配给所述当前物理块链和进入写入操作模块,如果没有存在空闲物理块,进入所述擦除回收操作模块;
擦除回收操作模块,用于进行物理块的擦除回收操作。
10.如权利要求9所述的控制***,其特征在于:所述写入查找分配模块还用于按照物理块加入当前物理块链的顺序查找所述当前物理块链中各个替换块是否有空闲物理页。
11.如权利要求9所述的控制***,其特征在于:所述写入查找分配模块包括第一物理块查找单元,物理块分配单元和第二物理块查找单元;
第一物理块查找单元,用于查找所述当前物理块链所在物理行中是否存在空闲物理块,如果是,进入物理块分配单元和写入操作模块,如果否,查找所述当前物理块链所在物理行外的物理行是否存在空闲物理块;
物理块分配单元,用于将所述空闲物理块分配给所述当前物理块链;
第二物理块查找单元,用于查找所述当前物理块链所在物理行外的物理行是否存在空闲物理块,如果是,进入物理块分配单元和写入操作模块,如果否,进入擦除回收操作模块。
12.如权利要求11所述的控制***,其特征在于:所述写入查找分配模块包括队列构建单元和队列扫描单元,
队列构建单元用于构建一个队列,其中所述队列包括多个元素,每个元素对应一个物理行;
队列扫描单元用于从所述队列的队头至所述当前物理块链中第一个替换块所在物理行对应的元素顺次查找是否有存在空闲物理块的物理行,如果是,进入物理块分配单元和写入操作模块,如果否,则进入所述擦除回收操作模块。
13.如权利要求12所述的控制***,其特征在于:每个元素的记录内容包括对应物理行中物理块的总擦除次数,所述队列构建单元还用于根据所述物理行中物理块的总擦除次数从小到大对多个元素进行排列,形成所述队列。
14.如权利要求12或13所述的控制***,其特征在于:每个元素的记录内容包括对应物理行中物理块的总擦除次数和空闲物理页占该行总空间的比例。
15.如权利要求14所述的控制***,其特征在于:所述擦除回收操作模块包括:元素扫描单元,物理块链回收单元,修改单元和移动单元,
元素扫描单元,用于从所述队列的队头开始至所述当前物理块链中第一个替换块所在物理行对应的元素,查找队列中每个元素所记录的空闲物理页占该行总空间的比例,以确定所述空闲物理页所占比例最大的元素;
物理块链回收单元,用于对所述空闲物理页所占比例最大的元素对应物理行中最长的物理链块进行擦除回收;
修改单元,用于修改所述空闲物理页所占比例最大的元素中的记录内容;
移动单元,用于移动所述空闲物理页所占比例最大的元素在队列中的位置,以重新排列所述队列,并进入物理块分配单元和写入操作模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610595172.7A CN106155919B (zh) | 2016-07-26 | 2016-07-26 | 一种3d闪存的控制方法及控制*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610595172.7A CN106155919B (zh) | 2016-07-26 | 2016-07-26 | 一种3d闪存的控制方法及控制*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106155919A true CN106155919A (zh) | 2016-11-23 |
CN106155919B CN106155919B (zh) | 2019-06-11 |
Family
ID=58059787
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610595172.7A Active CN106155919B (zh) | 2016-07-26 | 2016-07-26 | 一种3d闪存的控制方法及控制*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106155919B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107229419A (zh) * | 2017-05-23 | 2017-10-03 | 深圳大学 | 基于三维闪存的数据写入方法及装置 |
CN109407963A (zh) * | 2017-08-15 | 2019-03-01 | 深圳市中兴微电子技术有限公司 | 一种实现存储管理的方法及装置 |
CN111290972A (zh) * | 2020-03-11 | 2020-06-16 | 深圳忆联信息***有限公司 | 数据搬运效率的提升方法、装置和计算机设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102298555A (zh) * | 2011-08-22 | 2011-12-28 | 宜兴市华星特种陶瓷科技有限公司 | 基于nand技术的模块化闪存管理*** |
US20140101369A1 (en) * | 2012-10-05 | 2014-04-10 | Western Digital Technologies, Inc. | Methods, devices and systems for physical-to-logical mapping in solid state drives |
CN105677578A (zh) * | 2016-01-08 | 2016-06-15 | 深圳大学 | 一种3d闪存的控制方法及控制*** |
-
2016
- 2016-07-26 CN CN201610595172.7A patent/CN106155919B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102298555A (zh) * | 2011-08-22 | 2011-12-28 | 宜兴市华星特种陶瓷科技有限公司 | 基于nand技术的模块化闪存管理*** |
US20140101369A1 (en) * | 2012-10-05 | 2014-04-10 | Western Digital Technologies, Inc. | Methods, devices and systems for physical-to-logical mapping in solid state drives |
CN105677578A (zh) * | 2016-01-08 | 2016-06-15 | 深圳大学 | 一种3d闪存的控制方法及控制*** |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107229419A (zh) * | 2017-05-23 | 2017-10-03 | 深圳大学 | 基于三维闪存的数据写入方法及装置 |
CN107229419B (zh) * | 2017-05-23 | 2020-05-12 | 深圳大学 | 基于三维闪存的数据写入方法及装置 |
CN109407963A (zh) * | 2017-08-15 | 2019-03-01 | 深圳市中兴微电子技术有限公司 | 一种实现存储管理的方法及装置 |
CN111290972A (zh) * | 2020-03-11 | 2020-06-16 | 深圳忆联信息***有限公司 | 数据搬运效率的提升方法、装置和计算机设备 |
Also Published As
Publication number | Publication date |
---|---|
CN106155919B (zh) | 2019-06-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101354681B (zh) | 存储器***、非易失性存储器的磨损均衡方法及装置 | |
CN106547703B (zh) | 一种基于块组结构的ftl优化方法 | |
CN100565477C (zh) | 一种NAND Flash存储器的动态管理方法 | |
CN102981963B (zh) | 一种固态盘的闪存转换层的实现方法 | |
CN106502587B (zh) | 硬盘数据管理方法和硬盘控制装置 | |
CN104899156A (zh) | 一种面向大规模社交网络的图数据存储及查询方法 | |
CN101493794B (zh) | 一种闪存数据处理方法及装置 | |
KR20110117099A (ko) | 메모리 장치에서 맵핑 어드레스 테이블을 유지관리하는 방법 | |
CN109582593B (zh) | 一种基于计算的ftl地址映射读、写方法 | |
CN106681668A (zh) | 一种基于固态盘缓存的混合式存储***及存储方法 | |
CN104102591A (zh) | 计算机子***及在其中实现闪存转换层的方法 | |
CN101169751A (zh) | 具有闪存设备的***及其数据恢复方法 | |
CN103440207A (zh) | 缓存方法及装置 | |
CN110321301A (zh) | 一种数据处理的方法及装置 | |
CN101369252A (zh) | 基于nand闪存文件***中静态数据损耗均衡的方法 | |
CN102163175A (zh) | 一种基于局部性分析的混合地址映射方法 | |
CN107015763A (zh) | 混合存储***中ssd管理方法及装置 | |
CN104598386B (zh) | 通过追踪和利用二级映射索引重复利用固态驱动器块 | |
CN109783398A (zh) | 一种基于相关感知页面级ftl固态硬盘性能优化方法 | |
US20230214328A1 (en) | Cache memory system and cache memory control method | |
CN106155919A (zh) | 一种3d闪存的控制方法及控制*** | |
CN106445740A (zh) | 固态硬盘中nand闪存数据的控制方法及控制*** | |
CN105975215A (zh) | 一种基于Ondemand算法的STL映射表管理方法 | |
CN108845957A (zh) | 一种置换和回写自适应的缓冲区管理方法 | |
CN110968266B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20211223 Address after: 461000 floor 3, plant 1, Weidu hi tech Industrial Park, Laodong North Road, Weidu District, Xuchang City, Henan Province Patentee after: Henan Lingcun Intelligent Manufacturing Co.,Ltd. Address before: 518103 B2 1101, Kexing Science Park, 15 Keyuan Road, central Nanshan District science and Technology Park, Shenzhen, Guangdong Patentee before: RENICE TECHNOLOGY Co.,Ltd. |
|
TR01 | Transfer of patent right |