CN106294203A - 一种3d闪存的控制方法及控制*** - Google Patents
一种3d闪存的控制方法及控制*** Download PDFInfo
- Publication number
- CN106294203A CN106294203A CN201610620730.0A CN201610620730A CN106294203A CN 106294203 A CN106294203 A CN 106294203A CN 201610620730 A CN201610620730 A CN 201610620730A CN 106294203 A CN106294203 A CN 106294203A
- Authority
- CN
- China
- Prior art keywords
- physical
- page
- physical block
- data
- block
- 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
- G06F12/0684—Configuration or reconfiguration with feedback, e.g. presence or absence of unit detected by addressing, overflow detection
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明提供一种3D闪存的控制方法和控制***。所述控制方法包括以下步骤:在进行数据的读/写操作时,根据读/写数据的逻辑页号得到逻辑块号和块内页偏移号;根据预设的映射表得到所述逻辑块号对应物理块链的入口物理块号;在所述入口物理块号对应物理块所在的当前物理块链中由前往后查找所述块内页偏移号对应物理页是否空闲或是否存在有效数据,如果是,进行数据的写入或读出;如果否,在进行写操作时从当前物理块链最后一个物理块开始由后往前查找空闲物理页或获取空闲物理块加入当前的物理块链中,进入进行数据的写入的步骤;在进行读操作时从当前物理块链最后一个物理块开始由后往前查找有效数据并当没有查找到有效数据时提示无数据可读。
Description
技术领域
本发明涉及存储技术领域,尤其涉及一种3D闪存的控制方法及控制***。
背景技术
由于3D闪存具有高存储容量的特点,因此受到越来越多行业的青睐,但是现有上层操作***对某一范围的逻辑地址空间进行频繁更新操作,在现有的3D闪存管理技术中,随着某一逻辑地址中的数据不断更新,其对应的物理块链不断增长,而在同一块链中的其他空闲物理页却得不到使用,严重影响芯片的空间利用率。特别是在现有3D闪存芯片的物理空间的组织形式上,比如令log_page为逻辑页号,每个物理块中有page_per_block个物理页,当log_page需要更新时,需要分配一个空闲物理块给物理块链,并在新分配的空闲物理块的第offset物理页上写入更新的数据。在极端情况下,若log_page号逻辑页频繁进行更新,则对应的物理块链将大大增长,而物理块链的实际空间利用率却极小,即物理块链中存在大量未被使用的空闲物理页。
发明内容
本发明旨在解决现有技术中在某些逻辑页频繁进行更新时,对应的物理块链将大大增长,而物理块链的实际空间利用率却极小的技术问题,提供一种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。
在具体实施中,对于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。
在步骤S3中,若phy_block中的第offset物理页空闲,则向该物理页中写入数据;否则从当前物理块链的头部开始,沿着当前物理块链链由前向后查看每个物理块的第offset物理页是否空闲,若找到空闲物理页,则写入数据,若无空闲页,则转入图3。
在步骤S4中,进行数据的写入具体为:在所述块内页偏移号对应物理页或空闲物理页中进行数据的写入。
在具体实施中,如图2所示,步骤S3中,所述查找所述当前物理块链中各个替换块是否有空闲物理页的步骤,具体包括:
步骤S31,在所述入口物理块号对应物理块中查找所述块内页偏移号对应物理页是否空闲,如果是,进入步骤S32,如果否,进入步骤S33;
步骤S32,在所述块内页偏移号对应物理页中写入数据;
步骤S33,顺次从前往后查找当前物理块链中的物理块是否存在空闲的所述块内页偏移号对应物理页,如果是,步骤S4,如果否,进入步骤S5。
在具体实施中,当当前物理块链中所有的物理块的第offset物理页均存有数据时,存储管理***寻找空闲物理页的具体操作流程如图3所示,步骤S5,具体包括:
步骤S51,判断当前物理块链的长度是否到达预设的长度,如果是,进入步骤S53,如果否,则进入步骤S52;
步骤S52,获取空闲物理块加入当前的物理块链,进入步骤S4;
步骤S53,查找当前物理块链最后一个物理块中物理页是否存有所述块内页偏移号对应物理页的数据,如果是进入步骤S55,如果否则进入步骤S54;
步骤S54,确定当前物理块链最后一个物理块中的空闲物理页,进入步骤S4;
步骤S55,将存在所述数据的物理页设置为标记物理页;
步骤S56,从当前物理块链的最后一个物理块开始由后往前查找各个物理块的标记物理页是否为空闲页,如果是进入步骤S4,如果否则进入步骤S57;
步骤S57,对当前物理链块进行擦除回收操作。
也就是说,存储管理***首先判断当前物理块链长度是否到达预设长度,即最大限定长度,若未达到最大限定长度,则分配空闲物理块,并将其加入当前物理块链中,将数据写入当前物理块链的第一个空闲物理块的offset号物理页。若到达最大长度限定,则查看当前物理块链中最后一个物理块是否有物理页存有offset页的数据,若存在,记该物理页号为r_offset,并从当前物理块链的最后一个物理块开始,由后向前扫描该物理块链,查看当前物理块链中物理块的第r_offset物理页是否为空闲页。若找到空闲的物理页,则分配并写入数据,那么将当前物理块链设计成一个长度有限,可以折回访问的、共享存储空间的块链结构。若当前物理块链中最后一个物理块第r_offset物理页不存在offset的数据,则查看最后一个物理块中是否有空闲物理页,若有空闲物理页,则分配该空闲物理页。若以上操作均未找到空闲的物理页,则对当前物理块链进行擦除回收操作,分配物理块,写入有效数据,完成写请求操作。
在本发明的控制方法中,通过当前物理块链达到一定长度时,某一逻辑页更新的数据将从当前物理块链的尾部,最后一个物理块的某个空闲物理页offset开始,沿着当前物理块链,由后向前进行写入数据。当块链中所有offset物理页均有数据时,则从块链的最后一个物理块的某个空闲物理页r_offset开始,按照上面步骤,重新进行写操作,使得当前物理块链中,从物理块链前部分到物理块链后半部分更新的数据均与实际的逻辑页所对应的块内偏移物理页相对应,从物理块链后半部分到物理块链前半部分,更新的数据均与另外一个逻辑页相对应,那么该方法充分利用当前物理块链中未被使用的物理页,将当前物理块链中所有物理块相同块内偏移物理页动态分割成两个部分,块链的前一部分仍然按照原技术存储数据,块链的后一部分则存储另外物理页的数据,既保证了物理空间的有效利用,又避免了对存储空间管理的复杂性。
在具体实施中,在写操作时,如图4所示,在步骤S2之后,所述控制方法还包括以下步骤:
步骤S6,判断所述入口物理块号是否存在对应的物理块,如果否,步骤S7,如果是,步骤S3;
步骤S7,获取空闲物理块,在空闲物理块的块内页偏移号对应物理页写入数据并在增加映射表项。
通过根据当前物理块链的入口映射表确定是否有相应的逻辑块到当前物理块链的入口物理块的映射表项,如果有,则从物理块连的入口物理块,从前向后顺次寻找空闲物理页。如果没有映射表项,则寻找空闲物理块,构造逻辑块到物理块的映射表项。
由于现有技术中3D闪存芯片的物理块的擦除回收策略,只有在芯片无空闲物理块或空闲物理块长度达到一定阈值时,才进行物理块的擦除回收操作,且选择最长的物理块链进行擦除回收操作。因此,一旦因空闲物理块不足而触发擦除回收操作,则将严重影响***的单次响应时间,影响芯片的性能。在具体实施中,改进物理块的擦除回收策略,减小因擦除回收操作而造成的较长的响应时间。步骤S56,具体为:
根据所述当前物理链块的更新频率,分配对应的物理层以移转所述当前物理链块中的数据,其中更新频率为预设时间内所述当前物理链块的更新次数。
也就是说,在对芯片进行物理块擦除回收操作中,当当前物理块链到达一定长度后,且该块链中已无空间继续满足对应逻辑页的数据更新时,则对该块链进行擦除回收操作,并根据该块链的更新频率,在合适区域为该块链分配空间以转移数据。
在发明的控制方法中,对于芯片进行物理块擦除回收操作,通过当前物理块链到达一定长度后,且当前物理块链中已无空间继续满足对应逻辑页的数据更新时,才对当前物理块链进行擦除回收操作,提高了块链中空闲物理页的利用率,因此不会出现某一逻辑页频繁更新造成当前物理块链过长而导致物理块链中大量空闲物理页被擦除的情况发生。同时该擦除回收操作的方案可以有效延迟了擦除操作,保证了较短的用户响应时间。而该擦除回收操作并不是在芯片内无空闲物理块时进行擦除操作,可以有效防止单次用户访问时间过长的情况发生。
在具体实施中,在本发明在物理块的读写操作方面,首先保证在当前物理块链允许的最大长度之前,在物理块链中的每个物理块固定物理页中对数据进行更新,当物理块链长度达到最大限度,则从最后一个物理块开始,逆向寻找空闲物理页对数据进行更新。对于读操作的过程中,首先在每个物理块的固定位置的物理页中查看是否存在有效数据,若不存在,再根据写操作的步骤,从最后一个物理块开始,沿着物理块链逆向寻找存储有效数据的物理页,使得本发明的控制方法可以针对更新频率不同的数据采用了更加灵活的读写策略。当数据的更新频率较高时,可以保证了空间利用率,当数据的更新频率较低时,则保证数据具有较高的访问速度。
图5是根据本发明一个实施例3D闪存的控制方法在进行数据的读操作时的流程示意图。如图5所示,在进行数据的读操作时,所述控制方法包括以下步骤:
步骤S510,根据读数据的逻辑页号得到逻辑块号和块内页偏移号;
步骤S520,根据预设的映射表得到所述逻辑块号对应物理块链的入口物理块号;
步骤S530,判断所述入口物理块号对应物理块中所述块内页偏移号对应物理页是否存在有效数据,如果是,进入步骤S540,如果否,进入步骤S550;
步骤S540,进行有效数据的读出;
步骤S550,顺次从前往后查找所述当前物理块链中各个物理块的所述块内页偏移号对应物理页是否存在有效数据,当查找到所述块内页偏移号对应物理页存在有效数据时,进入步骤S540,否则进入步骤S560;
步骤S560,查找当前物理块链最后一个物理块中物理页是否存有所述块内页偏移号对应物理页的数据,如果是,进入步骤S580,如果否,进入步骤S570;
步骤S570,提示无数据可读;
步骤S580,将存在所述数据的物理页设置为标记物理页,进入步骤S590;
步骤S590,从当前物理块链的最后一个物理块开始查看各个物理块的标记物理页以确定是否存在所述块内页偏移号对应物理页的有效数据,如果是,进入步骤S540,如果否,进入步骤S570。
也就是说,操作***给出逻辑页号log_page,发出读数据请求。存储管理***首先计算对应的逻辑块号log_block和块内偏移量offset。根据对应的逻辑块号log_block,查找逻辑块到物理块的映射表,获得物理块链的入口物理块号phy_block。存储管理***查看第phy_block号物理块的第offset物理页中的数据是否为有效数据,若有效,则读出数据即可;若为无效数据,存储管理***从块链的最后一个物理块的最后一个物理页,从前向后,顺次扫描当前物理块链上各个物理块的物理页,一方面查看物理页中是否存有offset页的数据,另一方面查看该物理页中的数据是否有效,若满足以上两个方面,则读出数据;若直到当前物理块链的最后一个物理块的第offset物理页中依然未查找到有效数据,则查看最后一个物理块中某个物理页r_offset中是否存有offset页的数据,若存有offset页的数据,则从物理块链的最后一个物理块开始,由后向前,查看物理块链中的每一个物理块中的第r_offset物理页,寻找offset页的有效数据。若找到有效数据,则读取数据,完成读操作请求,否则,提示无数据可读。对于有效数据,每个物理页附带有元数据存储区,元数据存储区中存放有标记位用于标记该物理页中的数据是否有效。
在具体实施中,本发明还提供一种实施例的3D闪存的控制***,如图6所示,所述控制***包括:生成模块10,映射关系建立模块20,确定模块30,写入操作模块40,读出操作模块50,读出查找模块60,写入查找分配模块70和结束操作模块80;
生成模块10,用于在进行数据的读/写操作时,根据读写数据的逻辑页号得到逻辑块号和块内页偏移号;
映射关系建立模块20,用于根据预设的映射表得到所述逻辑块号对应物理块链的入口物理块号;
确定模块30,用于在所述入口物理块号对应物理块所在的当前物理块链中由前往后查找所述块内页偏移号对应物理页是否空闲或是否存在有效数据,如果是,在进行读操作时,进入读出操作模块50,在进行写操作时,进入写入操作模块40,如果否,在进行读操作时,进入读出查找模块60,在进行写操作时,进入写入查找分配模块70;
读出操作模块50,用于进行有效数据的读出;
写入操作模块40,用于进行数据的写入;
读出查找模块60,用于当前物理块链最后一个物理块开始由后往前查找有效数据,当查找到有效数据时,进入读出操作模块50,否则进入结束操作模块80;
写入查找分配模块70,用于从当前物理块链最后一个物理块开始由后往前查找空闲物理页或获取空闲物理块加入当前的物理块链,进入写入操作模块40。
在具体实施中,对于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。
在确定模块30中,若phy_block中的第offset物理页空闲,则向该物理页中写入数据;否则从当前物理块链的头部开始,沿着当前物理块链链由前向后查看每个物理块的第offset物理页是否空闲,若找到空闲物理页,则写入数据,若无空闲页,进入写入查找分配模块70。
在写入操作模块40中,还用于在所述块内页偏移号对应物理页或空闲物理页中进行数据的写入。
在具体实施中,所述确定模块30包括第一空闲查找单元,写入单元和第二空闲查找单元;
第一空闲查找单元,用于在所述入口物理块号对应物理块中查找所述块内页偏移号对应物理页是否空闲,如果是,进入写入单元,如果否,进入第二空闲查找单元;
写入单元,用于在所述块内页偏移号对应物理页中写入数据;
第二空闲查找单元,用于顺次从前往后查找当前物理块链中的物理块是否存在空闲的所述块内页偏移号对应物理页,如果是,进入写入操作模块40,如果否,进入写入查找分配模块70。
在具体实施中,所述写入查找分配模块70包括:长度判断单元,获取单元,物理页查找单元,空闲页确定单元,物理页标记单元和擦除回收单元;
长度判断单元,用于判断当前物理块链的长度是否到达预设的长度,如果否,进入获取单元,如果是,进入物理页查找单元;
获取单元,用于获取空闲物理块加入当前的物理块链,进入写入操作模块40;
物理页查找单元,用于查找当前物理块链最后一个物理块中物理页是否存有所述块内页偏移号对应物理页的数据,如果否,进入空闲页确定单元,如果是,进入物理页标记单元;
空闲页确定单元,用于确定当前物理块链最后一个物理块中的空闲物理页,进入写入操作模块40;
物理页标记单元,用于将存在所述数据的物理页设置为标记物理页,从当前物理块链的最后一个物理块开始由后往前查找各个物理块的标记物理页是否为空闲页,如果是,进入写入操作模块40,如果否,擦除回收单元;
擦除回收单元,用于对当前物理链块进行擦除回收操作。
也就是说,写入查找分配模块70首先判断当前物理块链长度是否到达预设长度,即最大限定长度,若未达到最大限定长度,则分配空闲物理块,并将其加入当前物理块链中,将数据写入当前物理块链的第一个空闲物理块的offset号物理页。若到达最大长度限定,则查看当前物理块链中最后一个物理块是否有物理页存有offset页的数据,若存在,记该物理页号为r_offset,并从当前物理块链的最后一个物理块开始,由后向前扫描该物理块链,查看当前物理块链中物理块的第r_offset物理页是否为空闲页。若找到空闲的物理页,则分配并写入数据,那么将当前物理块链设计成一个长度有限,可以折回访问的、共享存储空间的块链结构。若当前物理块链中最后一个物理块第r_offset物理页不存在offset的数据,则查看最后一个物理块中是否有空闲物理页,若有空闲物理页,则分配该空闲物理页。若以上操作均未找到空闲的物理页,则对当前物理块链进行擦除回收操作,分配物理块,写入有效数据,完成写请求操作。
在本发明的控制***中,通过当前物理块链达到一定长度时,某一逻辑页更新的数据将从当前物理块链的尾部,最后一个物理块的某个空闲物理页offset开始,沿着当前物理块链,由后向前进行写入数据。当块链中所有offset物理页均有数据时,则从块链的最后一个物理块的某个空闲物理页r_offset开始,按照上面步骤,重新进行写操作,使得当前物理块链中,从物理块链前部分到物理块链后半部分更新的数据均与实际的逻辑页所对应的块内偏移物理页相对应,从物理块链后半部分到物理块链前半部分,更新的数据均与另外一个逻辑页相对应。那么该方法充分利用当前物理块链中未被使用的物理页,将当前物理块链中所有物理块相同块内偏移物理页动态分割成两个部分,块链的前一部分仍然按照原技术存储数据,块链的后一部分则存储另外物理页的数据,既保证了物理空间的有效利用,又避免了对存储空间管理的复杂性。
在具体实施中,如图6所示,所述控制***还包括映射判断模块90和物理块获取模块91,
映射判断模块90,用于判断所述入口物理块号是否存在对应的物理块,如果否,进入物理块获取模块91,如果是,进入确定模块60;
物理块获取模块91,用于获取空闲物理块,在空闲物理块的块内页偏移号对应物理页写入数据并在增加映射表项。通过根据当前物理块链的入口映射表确定是否有相应的逻辑块到当前物理块链的入口物理块的映射表项,如果有,则从物理块连的入口物理块,从前向后顺次寻找空闲物理页。如果没有映射表项,则寻找空闲物理块,构造逻辑块到物理块的映射表项。
由于现有技术中3D闪存芯片的物理块的擦除回收策略,只有在芯片无空闲物理块或空闲物理块长度达到一定阈值时,才进行物理块的擦除回收操作,且选择最长的物理块链进行擦除回收操作。因此,一旦因空闲物理块不足而触发擦除回收操作,则将严重影响***的单次响应时间,影响芯片的性能。在具体实施中,改进物理块的擦除回收策略,减小因擦除回收操作而造成的较长的响应时间。所述擦除回收单元,还用于根据所述当前物理链块的更新频率,分配对应的物理层以移转所述当前物理链块中的数据,其中更新频率为预设时间内所述当前物理链块的更新次数。
也就是说,在对芯片进行物理块擦除回收操作中,当当前物理块链到达一定长度后,且该块链中已无空间继续满足对应逻辑页的数据更新时,则对该块链进行擦除回收操作,并根据该块链的更新频率,在合适区域为该块链分配空间以转移数据。
在发明的控制***中,对于对芯片进行物理块擦除回收操作,通过当前物理块链到达一定长度后,且当前物理块链中已无空间继续满足对应逻辑页的数据更新时,才对当前物理块链进行擦除回收操作,提高了块链中空闲物理页的利用率,因此不会出现某一逻辑页频繁更新造成当前物理块链过长而导致物理块链中大量空闲物理页被擦除的情况发生。同时该擦除回收操作的方案可以有效延迟了擦除操作,保证了较短的用户响应时间。而该擦除回收操作并不是在芯片内无空闲物理块时进行擦除操作,可以有效防止单次用户访问时间过长的情况发生。
在具体实施中,在本发明在物理块的读写操作方面,首先保证在当前物理块链允许的最大长度之前,在物理块链中的每个物理块固定物理页中对数据进行更新,当物理块链长度达到最大限度,则从最后一个物理块开始,逆向寻找空闲物理页对数据进行更新。对于读操作的过程中,首先在每个物理块的固定位置的物理页中查看是否存在有效数据,若不存在,再根据写操作的步骤,从最后一个物理块开始,沿着物理块链逆向寻找存储有效数据的物理页,使得本发明的控制***可以针对更新频率不同的数据采用了更加灵活的读写策略。当数据的更新频率较高时,可以保证了空间利用率,当数据的更新频率较低时,则保证数据具有较高的访问速度。
在具体实施中,所述读出查找模块60还包括:数据查找单元和有效数据确定单元;
数据查找单元,用于查找当前物理块链最后一个物理块中物理页是否存有所述块内页偏移号对应物理页的数据,如果否,进入结束操作模块,如果是,进入有效数据确定单元;
有效数据确定单元,用于将存在所述数据的物理页设置为标记物理页,从当前物理块链的最后一个物理块开始查看各个物理块的标记物理页以确定是否存在所述块内页偏移号对应物理页的有效数据,如果是,进入读出操作模块50,如果否,进入结束操作模块80。
也就是说,操作***给出逻辑页号log_page,发出读数据请求。生成模块10首先计算对应的逻辑块号log_block和块内偏移量offset。根据对应的逻辑块号log_block,查找逻辑块到物理块的映射表,获得物理块链的入口物理块号phy_block。确定模块30查看第phy_block号物理块的第offset物理页中的数据是否为有效数据,若有效,则读出数据即可;若为无效数据,存储管理***从块链的最后一个物理块的最后一个物理页,从前向后,顺次扫描当前物理块链上各个物理块的物理页,一方面查看物理页中是否存有offset页的数据,另一方面查看该物理页中的数据是否有效,若满足以上两个方面,则读出数据;若直到当前物理块链的最后一个物理块的第offset物理页中依然未查找到有效数据,则查看最后一个物理块中某个物理页r_offset中是否存有offset页的数据,若存有offset页的数据,则从物理块链的最后一个物理块开始,由后向前,查看物理块链中的每一个物理块中的第r_offset物理页,寻找offset页的有效数据。若找到有效数据,则读取数据,完成读操作请求,否则,提示无数据可读。对于有效数据,每个物理页附带有元数据存储区,元数据存储区中存放有标记位用于标记该物理页中的数据是否有效。
本发明的3D闪存的控制方法和控制***,通过在当前物理块链中由前往后查找所述块内页偏移号对应物理页以及在当前物理块链中由后往前查找所述块内页偏移号对应物理页以写入或读出数据,既保证了物理块链中物理空间的有效利用,又避免了对存储空间管理的复杂性。该技术适用但并不限于存储集群、数据服务器、个人商务存储等方面的3D闪存存储介质。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (14)
1.一种3D闪存的控制方法,其特征在于:所述控制方法包括以下步骤:
在进行数据的读/写操作时,根据读/写数据的逻辑页号得到逻辑块号和块内页偏移号;
根据预设的映射表得到所述逻辑块号对应物理块链的入口物理块号;
在所述入口物理块号对应物理块所在的当前物理块链中由前往后查找所述块内页偏移号对应物理页是否空闲或是否存在有效数据,如果是,进行数据的写入或读出;
如果否,在进行写操作时从当前物理块链最后一个物理块开始由后往前查找空闲物理页或获取空闲物理块加入当前的物理块链中,进入进行数据的写入的步骤;在进行读操作时从当前物理块链最后一个物理块开始由后往前查找有效数据并当没有查找到有效数据时提示无数据可读。
2.如权利要求1所述的3D闪存的控制方法,其特征在于:所述在所述入口物理块号对应物理块所在的当前物理块链中由前往后查找所述块内页偏移号对应物理页是否空闲的步骤,具体包括:
在所述入口物理块号对应物理块中查找所述块内页偏移号对应物理页是否空闲,如果是,在所述块内页偏移号对应物理页中写入数据;
如果否,顺次从前往后查找当前物理块链中的物理块是否存在空闲的所述块内页偏移号对应物理页,如果是,进入进行数据的写入的步骤,如果否,进入在进行写操作时从当前物理块链最后一个物理块开始由后往前查找空闲物理页或获取空闲物理块加入当前的物理块链中的步骤。
3.如权利要求1所述的3D闪存的控制方法,其特征在于:所述在进行写操作时从当前物理块链最后一个物理块开始由后往前查找空闲物理页的步骤,具体包括:
判断当前物理块链的长度是否到达预设的长度,如果否,获取空闲物理块加入当前的物理块链,进入进行数据的写入的步骤;
如果是,查找当前物理块链最后一个物理块中物理页是否存有所述块内页偏移号对应物理页的数据,如果否,确定当前物理块链最后一个物理块中的空闲物理页,进入进行数据的写入的步骤;
如果是,将存在所述数据的物理页设置为标记物理页,从当前物理块链的最后一个物理块开始由后往前查找各个物理块的标记物理页是否为空闲页,如果是,进入进行数据的写入的步骤;
如果否,对当前物理链块进行擦除回收操作。
4.如权利要求1所述的3D闪存的控制方法,其特征在于:在写操作时,所述控制方法还包括以下步骤:
判断所述入口物理块号是否存在对应的物理块,如果否,获取空闲物理块,在空闲物理块的块内页偏移号对应物理页写入数据并在增加映射表项,如果是,进入在所述入口物理块号对应物理块所在的当前物理块链中由前往后查找所述块内页偏移号对应物理页是否空闲的步骤。
5.如权利要求1所述的3D闪存的控制方法,其特征在于:所述当前物理链块进行擦除回收操作的步骤,具体包括:
根据所述当前物理链块的更新频率,分配对应的物理层以移转所述当前物理链块中的数据,其中更新频率为预设时间内所述当前物理链块的更新次数。
6.如权利要求1-5任意一项所述的3D闪存的控制方法,其特征在于:所述进行数据的写入的具体为:
在所述块内页偏移号对应物理页或空闲物理页中进行数据的写入。
7.如权利要求1所述的3D闪存的控制方法,其特征在于:所述在进行读操作时从当前物理块链最后一个物理块开始由后往前查找有效数据的步骤,具体为:
查找当前物理块链最后一个物理块中物理页是否存有所述块内页偏移号对应物理页的数据,如果否,提示无数据可读;
如果是,将存在所述数据的物理页设置为标记物理页,从当前物理块链的最后一个物理块开始查看各个物理块的标记物理页以确定是否存在所述块内页偏移号对应物理页的有效数据,如果是,进入进行数据的读出的步骤,如果否,进入提示无数据可读的步骤。
8.一种3D闪存的控制***,其特征在于:所述控制***包括:生成模块,映射关系建立模块,确定模块,写入操作模块,读出操作模块,读出查找模块,写入查找分配模块和结束操作模块;
生成模块,用于在进行数据的读/写操作时,根据读写数据的逻辑页号得到逻辑块号和块内页偏移号;
映射关系建立模块,用于根据预设的映射表得到所述逻辑块号对应物理块链的入口物理块号;
确定模块,用于在所述入口物理块号对应物理块所在的当前物理块链中由前往后查找所述块内页偏移号对应物理页是否空闲或是否存在有效数据,如果是,在进行读操作时,进入读出操作模块,在进行写操作时,进入写入操作模块,如果否,在进行读操作时,进入读出查找模块,在进行写操作时,进入写入查找分配模块;
读出操作模块,用于进行有效数据的读出;
写入操作模块,用于进行数据的写入;
读出查找模块,用于当前物理块链最后一个物理块开始由后往前查找有效数据,当查找到有效数据时,进入读出操作模块,否则进入结束操作模块;
写入查找分配模块,用于从当前物理块链最后一个物理块开始由后往前查找空闲物理页或获取空闲物理块加入当前的物理块链,进入写入操作模块。
9.如权利要求8所述的控制***,其特征在于:所述确定模块包括第一空闲查找单元,写入单元和第二空闲查找单元;
第一空闲查找单元,用于在所述入口物理块号对应物理块中查找所述块内页偏移号对应物理页是否空闲,如果是,进入写入单元,如果否,进入第二空闲查找单元;
写入单元,用于在所述块内页偏移号对应物理页中写入数据;
第二空闲查找单元,用于顺次从前往后查找当前物理块链中的物理块是否存在空闲的所述块内页偏移号对应物理页,如果是,进入写入操作模块,如果否,进入写入查找分配模块。
10.如权利要求8所述的控制***,其特征在于:所述写入查找分配模块包括:长度判断单元,获取单元,物理页查找单元,空闲页确定单元,物理页标记单元和擦除回收单元;
长度判断单元,用于判断当前物理块链的长度是否到达预设的长度,如果否,进入获取单元,如果是,进入物理页查找单元;
获取单元,用于获取空闲物理块加入当前的物理块链,进入写入操作模块;
物理页查找单元,用于查找当前物理块链最后一个物理块中物理页是否存有所述块内页偏移号对应物理页的数据,如果否,进入空闲页确定单元,如果是,进入物理页标记单元;
空闲页确定单元,用于确定当前物理块链最后一个物理块中的空闲物理页,进入写入操作模块;
物理页标记单元,用于将存在所述数据的物理页设置为标记物理页,从当前物理块链的最后一个物理块开始由后往前查找各个物理块的标记物理页是否为空闲页,如果是,进入写入操作模块,如果否,擦除回收单元;
擦除回收单元,用于对当前物理链块进行擦除回收操作。
11.如权利要求8所述的控制***,其特征在于:所述控制***还包括映射判断模块和物理块获取模块,
映射判断模块,用于判断所述入口物理块号是否存在对应的物理块,如果否,进入物理块获取模块,如果是,进入确定模块;
物理块获取模块,用于获取空闲物理块,在空闲物理块的块内页偏移号对应物理页写入数据并在增加映射表项。
12.如权利要求8所述的控制***,其特征在于:所述擦除回收单元,还用于根据所述当前物理链块的更新频率,分配对应的物理层以移转所述当前物理链块中的数据,其中更新频率为预设时间内所述当前物理链块的更新次数。
13.如权利要求8-12任意一项所述的控制***,其特征在于:所述写入操作模块,还用于在所述块内页偏移号对应物理页或空闲物理页中进行数据的写入。
14.如权利要求8所述的控制***,其特征在于:所述读出查找模块还包括:数据查找单元和有效数据确定单元;
数据查找单元,用于查找当前物理块链最后一个物理块中物理页是否存有所述块内页偏移号对应物理页的数据,如果否,进入结束操作模块,如果是,进入有效数据确定单元;
有效数据确定单元,用于将存在所述数据的物理页设置为标记物理页,从当前物理块链的最后一个物理块开始查看各个物理块的标记物理页以确定是否存在所述块内页偏移号对应物理页的有效数据,如果是,进入读出操作模块,如果否,进入结束操作模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610620730.0A CN106294203B (zh) | 2016-08-01 | 2016-08-01 | 一种3d闪存的控制方法及控制*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610620730.0A CN106294203B (zh) | 2016-08-01 | 2016-08-01 | 一种3d闪存的控制方法及控制*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106294203A true CN106294203A (zh) | 2017-01-04 |
CN106294203B CN106294203B (zh) | 2019-06-28 |
Family
ID=57663940
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610620730.0A Active CN106294203B (zh) | 2016-08-01 | 2016-08-01 | 一种3d闪存的控制方法及控制*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106294203B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109407963A (zh) * | 2017-08-15 | 2019-03-01 | 深圳市中兴微电子技术有限公司 | 一种实现存储管理的方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5627783A (en) * | 1995-01-31 | 1997-05-06 | Mitsubishi Denki Kabushiki Kaisha | Semiconductor disk device |
CN101329656A (zh) * | 2008-05-06 | 2008-12-24 | 无锡紫芯集成电路***有限公司 | 一种Nand-Flash存储***的管理方法 |
CN102298555A (zh) * | 2011-08-22 | 2011-12-28 | 宜兴市华星特种陶瓷科技有限公司 | 基于nand技术的模块化闪存管理*** |
CN105677578A (zh) * | 2016-01-08 | 2016-06-15 | 深圳大学 | 一种3d闪存的控制方法及控制*** |
-
2016
- 2016-08-01 CN CN201610620730.0A patent/CN106294203B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5627783A (en) * | 1995-01-31 | 1997-05-06 | Mitsubishi Denki Kabushiki Kaisha | Semiconductor disk device |
CN101329656A (zh) * | 2008-05-06 | 2008-12-24 | 无锡紫芯集成电路***有限公司 | 一种Nand-Flash存储***的管理方法 |
CN102298555A (zh) * | 2011-08-22 | 2011-12-28 | 宜兴市华星特种陶瓷科技有限公司 | 基于nand技术的模块化闪存管理*** |
CN105677578A (zh) * | 2016-01-08 | 2016-06-15 | 深圳大学 | 一种3d闪存的控制方法及控制*** |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109407963A (zh) * | 2017-08-15 | 2019-03-01 | 深圳市中兴微电子技术有限公司 | 一种实现存储管理的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106294203B (zh) | 2019-06-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102117278B (zh) | 链表的创建方法及***、数据的查找方法及*** | |
CN101354681B (zh) | 存储器***、非易失性存储器的磨损均衡方法及装置 | |
CN103136121B (zh) | 一种固态盘的缓存管理方法 | |
US9871727B2 (en) | Routing lookup method and device and method for constructing B-tree structure | |
CN115328820B (zh) | 多级缓存***的访问方法、数据存储方法及装置 | |
CN101419571A (zh) | 基于Hash算法的在NOR FLASH中存储配置参数的方法 | |
JP2008242503A (ja) | メモリ管理装置及び方法、並びにプログラム | |
CN108399050B (zh) | 一种数据处理方法及装置 | |
CN107122130A (zh) | 一种数据重删方法及装置 | |
CN105243030A (zh) | 一种数据缓存方法 | |
CN107025182A (zh) | 非易失性存储器加速器及存取加速方法 | |
CN102650972B (zh) | 数据存储方法、装置及*** | |
CN103019963B (zh) | 一种高速缓存的映射方法及存储设备 | |
CN106294203A (zh) | 一种3d闪存的控制方法及控制*** | |
CN106155919A (zh) | 一种3d闪存的控制方法及控制*** | |
CN103077099A (zh) | 一种块级快照***及基于该***的用户读写方法 | |
CN109992535B (zh) | 一种存储控制方法、装置和*** | |
CN111443874A (zh) | 基于内容感知的固态盘内存缓存管理方法、设备及固态盘 | |
CN110174998A (zh) | 一种提高高速信号采集***实时性的方法 | |
CN116661690A (zh) | 记录内存状态的方法、装置、计算机设备及存储介质 | |
US20100161937A1 (en) | Memory system and computer system | |
CN103678141B (zh) | 闪存的管理方法和管理*** | |
CN106201903B (zh) | 一种三维闪存擦除控制方法及其*** | |
WO2011160392A1 (zh) | 名单管理方法及装置 | |
KR101465426B1 (ko) | 익스텐트 매핑 플래시 디바이스 |
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 |