CN101788955B - 闪存数据的存取方法及其储存***与控制器*** - Google Patents
闪存数据的存取方法及其储存***与控制器*** Download PDFInfo
- Publication number
- CN101788955B CN101788955B CN2009100098723A CN200910009872A CN101788955B CN 101788955 B CN101788955 B CN 101788955B CN 2009100098723 A CN2009100098723 A CN 2009100098723A CN 200910009872 A CN200910009872 A CN 200910009872A CN 101788955 B CN101788955 B CN 101788955B
- Authority
- CN
- China
- Prior art keywords
- physical
- page
- page address
- physical page
- those
- 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.)
- Active
Links
Images
Landscapes
- Memory System (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明公开了一种闪存数据的存取方法及其储存***与控制***,用以在闪存芯片的多个实体区块的多个实体页地址中写入数据。此数据存取方法包括提供主机***多个逻辑页地址,建立逻辑页转实体页对映表与实体页转逻辑页对映表以记录逻辑页地址与实体页地址的对映。此数据存取方法也包括当主机***写入数据至逻辑页地址时,在实体页地址中写入数据,并且更新逻辑页转实体页对映表与实体页转逻辑页对映表。此数据存取方法亦包括比对逻辑页转实体页对映表与实体页转逻辑页对映表来判断已写入数据的实体页地址之中无效的实体页地址与有效的实体页地址。
Description
技术领域
本发明是有关于一种用于闪存的数据存取方法及使用此方法的闪存储存***与闪存控制器。
背景技术
数字相机、手机相机与MP3在这几年来的成长十分迅速,使得消费者对储存媒体的需求也急速增加。由于闪存(Flash Memory)具有数据非易失性、省电、体积小与无机械结构等的特性,适合可携式应用,最适合使用于这类可携式由电池供电的产品上。固态硬盘就是一种以NAND闪存作为储存媒体的储存装置。
一般来说,闪存储存***的闪存芯片(chip)会划分为多个实体区块,其中实体区块更划分为多个页,而实体区块是闪存的抹除单位并且页是闪存的写入单位。由于在程序化闪存的记忆单元时,仅能执行单向的程序化(即,仅能将记忆单元的值由1程序化为0),因此无法对已程序化的页(即,存有旧数据的页)直接进行写入,而是必须先将此页抹除后方可重新程序化。特别是,由于闪存的抹除是以实体区块为单位,因此当欲将存有旧数据的页执行抹除运作时,必须对此页所属的整个实体区块进行抹除。因此,传统上闪存的写入机制会以实体区块为基础来进行。例如,在传统写入方法中会将此些实体区块会界定为数据区(data area)与备用区(spare area),其中归类为数据区的实体区块中会储存由写入指令所写入的有效数据,而备用区中的实体区块是用以在执行写入指令时替换数据区中的实体区块。具体来说,当闪存储存***接受到主机***的写入指令而欲对数据区的实体区块进行写入时,闪存储存***会从备用区中提取实体区块并且将在数据区中欲更新的实体区块中的有效旧数据与欲写入的新数据写入至从备用区中提取的实体区块并且将已写入新数据的实体区块关联为数据区,并且将原本数据区的实体区块进行抹除并关联为备用区。为了能够让主机***能够顺利地存取以轮替方式储存数据的实体区块,闪存储存***会配置逻辑区块以供主机***进行存取,其中逻辑区块是根据实体区块以一个或多个实体区块的大小来配置。也就是说,闪存储存***会建立逻辑区块-实体区块对映表(logical block-physical block mapping table),并且在此表中记录与更新逻辑区块与数据区的实体区块之间的对映关系来反映实体区块的轮替,所以主机***仅需要针对所提供逻辑区块进行存取而闪存储存***会依据逻辑区块-实体区块对映表来对所对映的实体区块进行实际地读取或写入数据。
因此当主机***仅更新一个逻辑区块中的一部分数据时,上述数据存取方法除了写入新数据的动作之外还必须包括搬移实体区块内的有效旧数据的动作。特别是,当更新的数据量越小,致使所需要搬移的有效旧数据量越多时,完成上述写入动作的所需时间会大幅的增加。特别是,目前计算机发展的趋势已逐渐将闪存(即,固态硬盘)作为计算机***的主硬盘,同时计算机操作***具有频繁地更新少量数据的特性,因此闪存芯片的写入速度将严重影响整体计算机***的运作效率。因此,有需要发展一套可减少数据搬移的数据存取方法,以提升写入数据至闪存的速度。
发明内容
本发明提供一种数据存取方法,其能够在写入数据至闪存芯片时减少数据搬移动作,进而提升闪存的数据写入速度。
本发明提供一种控制器***,其能够在写入数据至闪存芯片时减少数据搬移动作,进而提升闪存的数据写入速度。
本发明提供一种闪存储存***,其在写入数据时可减少数据搬移动作,进而提升闪存的数据写入速度。
本发明提出一种数据存取方法,其是由一闪存控制器执行以在至少一闪存芯片的多个实体区块的多个实体页地址(physical page address)中写入数据。此数据存取方法包括提供主机***多个逻辑页地址(logical page address),建立逻辑页转实体页对映表(logical page to physical page mapping table)以分别地记录逻辑页地址所对映的实体页地址,以及建立实体页转逻辑页对映表(physicalpage to logical page mapping table)以分别地记录实体页地址所对映的逻辑页地址。此数据存取方法也包括:从此主机***接收一欲写入数据及一欲写入逻辑页地址;写入此欲写入数据于一实体页地址;在上述逻辑页转实体页对映表中更新此欲写入逻辑页地址是对映写入此数据的实体页地址;并且在上述实体页转逻辑页对映表中更新写入此欲写入数据的实体页地址是对映此欲写入逻辑页地址。此数据存取方法亦包括比对逻辑页转实体页对映表与实体页转逻辑页对映表来判断已写入数据的实体页地址之中无效的实体页地址与有效的实体页地址。
在本发明的一实施例中,上述的数据存取方法更包括建立实体区块无效页地址计数表以记录每一实体区块中无效的实体页地址的数目,以及在此实体区块无效页地址计数表中更新在上述欲写入逻辑页地址原始对映的实体页地址中无效的实体页地址的数目。
在本发明的一实施例中,上述的数据存取方法更包括建立实体区块有效页地址计数表以记录每一实体区块中有效的实体页地址的数目,以及在此实体区块有效页地址计数表中更新在上述欲写入逻辑页地址原始对映的实体页地址中有效的实体页地址的数目。
在本发明的一实施例中,上述的数据存取方法更包括判断未写入数据的该些实体区块的数目是否少于一无数据实体区块数门槛值,其中当未写入数据的实体区块的数目少于此无数据实体区块数门槛值时,则执行一无效数据抹除程序,其中此无效数据抹除程序包括:依据上述实体区块无效页地址计数表从已写入数据的实体区块之中选择至少一第一实体区块;从未写入数据的实体区块之中选择至少一第二实体区块;将此第一实体区块中有效的实体页地址中的数据复制至属于第二实体区块的实体页地址中;更新上述逻辑页转实体页对映表、实体页转逻辑页对映表与实体区块无效页地址计数表;以及抹除此第一实体区块。
在本发明的一实施例中,其中在已写入数据的实体区块之中上述第一实体区块存有最少数目的有效的实体页地址。
在本发明的一实施例中,上述的数据存取方法更包括建立一无数据实体区块管理表,以记录未写入数据的实体区块。
在本发明的一实施例中,上述的比对该逻辑页转实体页对映表与该实体页转逻辑页对映表判断已写入数据的该些实体页地址之中无效的该些实体页地址与有效的该些实体页地址的步骤包括:从实体页面地址之中选择一待判断实体页地址;依据实体页转逻辑页对映表查询待判断实体页地址对映的逻辑页地址;依据逻辑页转实体页对映表查询所对映的逻辑页地址对映的实体页地址;判断所查询的实体页地址是否相同于待判断实体页地址。在此判断中倘若所查询的实体页地址相同于待判断实体页地址,则待判断实体页地址为有效,并且倘若所查询的实体页地址不同于待判断实体页地址,则待判断实体页地址为无效。
在本发明的一实施例中,上述的数据存取方法更包括依据上述实体区块无效页地址计数表判断在已写入数据的实体区块之中至少一第一实体区块内无效的实体页地址占其所有实体页地址的比例是否超过一无效实体页地址门槛值,其中当此第一实体区块内无效的实体页地址占其所有实体页地址的比例超过此无效实体页地址门槛值时,则执行一无效数据抹除程序,其中此无效数据抹除程序包括:从未写入数据的实体区块之中选择至少一第二实体区块;将此第一实体区块中有效的该些实体页地址中的数据复制至属于此第二实体区块的实体页地址中;更新上述逻辑页转实体页对映表、实体页转逻辑页对映表与实体区块无效页地址计数表;以及抹除此第一实体区块。
在本发明的一实施例中,上述的数据存取方法更包括依据上述实体区块无效页地址计数表判断在已写入数据的实体区块之中至少一第一实体区块内是否无任何有效的该些实体页地址,其中当此第一实体区块内无有效的实体页地址时,则抹除第一实体区块并且更新上述实体区块无效页地址计数表。
在本发明的一实施例中,上述的数据存取方法更包括建立一可写入实体页指针,以标记下一个可写入的实体页地址。
本发明提出一种控制器***,适用在至少一闪存芯片的多个实体区块的多个实体页地址中写入数据,此控制器***包括微处理器单元、用以连接主机***的主机接口单元、用以连接闪存芯片的闪存接口单元,用以暂存数据的缓冲存储器、逻辑页转实体页对映表、实体页转逻辑页对映表以及页管理模块。微处理器单元用以从主机***接收一欲写入数据及一欲写入逻辑页地址,逻辑页转实体页对映表是用以记录逻辑页地址所对映的实体页地址,而实体页转逻辑页对映表是用以记录实体页地址所对映的逻辑页地址。页管理模块用以写入此欲写入数据于一实体页地址,在上述逻辑页转实体页对映表中更新此欲写入逻辑页地址是对映写入此数据的实体页地址,并且在上述实体页转逻辑页对映表中更新写入此欲写入数据的实体页地址是对映此欲写入逻辑页地址。此外,页管理模块会比对逻辑页转实体页对映表与实体页转逻辑页对映表判断已写入数据的实体页地址之中无效的实体页地址与有效的实体页地址。
在本发明的一实施例中,上述的控制器***更包括一实体区块无效页地址计数表,用以记录每一实体区块中无效的实体页地址的数目,其中页管理模块更用以在此实体区块无效页地址计数表中更新在上述欲写入逻辑页地址原始对映的实体页地址中无效的实体页地址的数目。
在本发明的一实施例中,上述的控制器***更包括一实体区块有效页地址计数表,用以记录每一实体区块中有效的实体页地址的数目,其中页管理模块更用以在此实体区块有效页地址计数表中更新在上述欲写入逻辑页地址原始对映的实体页地址中有效的实体页地址的数目。
在本发明的一实施例中,上述的页管理模块更用以判断未写入数据的实体区块的数目是否少于一无数据实体区块数门槛值,其中当未写入数据的该些实体区块的数目少于该无数据实体区块数门槛值时,该页管理模块更用以依据上述实体区块无效页地址计数表从已写入数据的实体区块之中选择至少一第一实体区块,从未写入数据的实体区块之中选择至少一第二实体区块,将此第一实体区块中有效的实体页地址中的数据复制至属于此第二实体区块的实体页地址中,更新上述逻辑页转实体页对映表、实体页转逻辑页对映表与实体区块无效页地址计数表,并且抹除此第一实体区块。
在本发明的一实施例中,在已写入数据的该些实体区块之中上述的第一实体区块与第二实体区块存有最少数目的有效的实体页地址。
在本发明的一实施例中,上述的控制器***更包括一无数据实体区块管理表,用以记录未写入数据的实体区块。
在本发明的一实施例中,上述的页管理模块是通过从实体页面地址的中选择一待判断实体页地址,依据上述实体页转逻辑页对映表查询此待判断实体页地址对映的逻辑页地址,依据此逻辑页转实体页对映表查询所对映的逻辑页地址对映的实体页地址,以及判断所查询的实体页地址是否相同于此待判断实体页地址来判断无效的实体页地址与有效的实体页地址,其中倘若所查询的实体页地址相同于此待判断实体页地址,则此待判断实体页地址为有效,并且倘若所查询的实体页地址不同于此待判断实体页地址,则此待判断实体页地址为无效。
在本发明的一实施例中,上述的页管理模块更用以依据上述实体区块无效页地址计数表来判断在已写入数据的实体区块之中至少一第一实体区块内无效的实体页地址占其所有实体页地址的比例是否超过一无效实体页地址门槛值,其中当此第一实体区块内无效的该些实体页地址占其所有该些实体页地址的比例超过该无效实体页地址门槛值时上述页管理模块更用以从未写入数据的实体区块之中选择至少一第二实体区块,将此第一实体区块中有效的实体页地址中的数据复制至属于此第二实体区块的实体页地址中,更新上述逻辑页转实体页对映表、实体页转逻辑页对映表与实体区块无效页地址计数表,并且抹除此第一实体区块。
在本发明的一实施例中,上述的页管理模块更用以依据上述实体区块无效页地址计数表来判断在已写入数据的该些实体区块之中至少一第一实体区块内是否无任何有效的该些实体页地址,其中当此第一实体区块内无有效的该些实体页地址时上述页管理模块更用以抹除此第一实体区块并且更新上述实体区块无效页地址计数表。
在本发明的一实施例中,上述的控制器***更包括一可写入实体页指针,用以标记下一个可写入的实体页地址。
本发明提出一种闪存储存***,其包括属于多个实体区块的多个实体页地址、用以连接主机***的连接器、电性连接至实体页地址与此连接器的闪存控制器、逻辑页转实体页对映表以及实体页转逻辑页对映表。逻辑页转实体页对映表是用以记录逻辑页地址所对映的实体页地址,而实体页转逻辑页对映表是用以记录实体页地址所对映的逻辑页地址。闪存控制器用以从此主机***接收一欲写入数据及一欲写入逻辑页地址。此外,闪存用以写入此欲写入数据于一实体页地址,在上述逻辑页转实体页对映表中更新此欲写入逻辑页地址是对映写入此数据的实体页地址,并且在上述实体页转逻辑页对映表中更新写入此欲写入数据的实体页地址是对映此欲写入逻辑页地址。此外,闪存控制器用以比对逻辑页转实体页对映表与实体页转逻辑页对映表判断已写入数据的实体页地址之中无效的实体页地址与有效的实体页地址。
在本发明的一实施例中,上述的闪存储存***更包括一实体区块无效页地址计数表,用以记录每一实体区块中无效的实体页地址的数目,其中当上述闪存控制器更用以在此实体区块无效页地址计数表中更新在欲写入逻辑页地址原始对映的实体页地址中无效的实体页地址的数目。
在本发明的一实施例中,上述的闪存储存***,更包括一实体区块有效页地址计数表,用以记录每一实体区块中有效的该些实体页地址的数目,其中闪存控制器更用以在此实体区块有效页地址计数表中更新在欲写入逻辑页地址原始对映的实体页地址中有效的实体页地址的数目。
在本发明的一实施例中,上述的闪存控制器更以判断未写入数据的实体区块的数目是否少于一无数据实体区块数门槛值,其中当未写入数据的该些实体区块的数目少于该无数据实体区块数门槛值时,闪存控制器更用以依据上述实体区块无效页地址计数表从已写入数据的实体区块之中选择至少一第一实体区块,从未写入数据的实体区块之中选择至少一第二实体区块,将此第一实体区块中有效的实体页地址中的数据复制至属于此第二实体区块的实体页地址中,更新上述逻辑页转实体页对映表、实体页转逻辑页对映表与实体区块无效页地址计数表,并且抹除此第一实体区块。
在本发明的一实施例中,上述的闪存控制器是通过从实体页面地址之中选择一待判断实体页地址,依据上述实体页转逻辑页对映表查询此待判断实体页地址对映的逻辑页地址,依据此逻辑页转实体页对映表查询所对映的逻辑页地址对映的实体页地址,以及判断所查询的实体页地址是否相同于此待判断实体页地址来判断无效的实体页地址与有效的实体页地址,其中倘若所查询的实体页地址相同于此待判断实体页地址,则此待判断实体页地址为有效,并且倘若所查询的实体页地址不同于此待判断实体页地址,则此待判断实体页地址为无效。
基于上述,本发明使用逻辑页转实体页对映表与实体页转逻辑页对映表来记录逻辑页地址与实体页地址的对映关系,由此可以页为基础对闪存芯片进行写入,可有效地提升闪存储存***的效能。
为让本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合附图作详细说明如下。
附图说明
图1是根据本发明一实施例绘示闪存储存***的概要方块图。
图2是根据本发明一范例实施例绘示闪存芯片的概要方块图。
图3是根据本发明范例实施例绘示闪存芯片中储存区的概要示意图。
图4A~图4C是根据本发明一范例实施例绘示逻辑页转实体页对映表及实体页转逻辑页对映表的范例。
图5是根据本发明一范例实施例所绘示闪存储存***的存取运作的流程图。
图6是根据本发明另一实施例绘示闪存储存***的概要方块图。
图7是根据本发明一范例实施例绘示实体区块无效页地址计数表的范例。
图8是根据本发明另一范例实施例所绘示闪存储存***的存取运作的流程图。
图9是根据本发明另一范例实施例所绘示闪存储存***的存取运作的流程图。
图10是根据本发明另一范例实施例所绘示闪存统的存取运作的流程图。
具体实施方式
图1是根据本发明一实施例绘示闪存储存***的概要方块图。请参照图1,闪存储存***100具有连接器110、闪存芯片120、以及包括闪存控制器130、逻辑页转实体页对映表140与实体页转逻辑页对映表150的控制器***。
通常闪存储存***100会与主机***200一起使用,以使主机***200可将数据写入至闪存储存***100或从闪存储存***100中读取数据。在本范例实施例中,闪存储存***100为固态硬盘(Solid State Drive,SSD)。但必须了解的是,在本发明另一实施例中闪存储存***100亦可以是存储卡或随身碟。
连接器110是电性连接至闪存控制器130,并且用以透过总线300连接主机***200。在本范例实施例中,连接器110为SATA连接器。然而,必须了解的是本发明不限于此,连接器110亦可以是USB连接器、IEEE 1394连接器、PCI Express连接器、MS连接器、MMC连接器、SD连接器、CF连接器、IDE连接器或其它适合的连接器。
闪存芯片120是电性连接至闪存控制器130并且用以储存数据。在本范例实施中闪存芯片120为多层记忆单元(Multi Level Cell,MLC)NAND闪存。然而,必须了解的是,本发明不限于此,在本发明另一实施例中,单层记忆单元(Single LevelCell,SLC)NAND闪存亦可应用于本发明。
图2是根据本发明一范例实施例绘示闪存芯片的概要方块图。必须了解的是,在此描述闪存芯片的运作时以“选择”、“搬移”、“划分”、“替换”、“轮替”、“分组”等词来操作闪存芯片120的实体区块是逻辑上的概念。也就是说,闪存的实体区块的实际位置并未更动,而是逻辑上对闪存的实体区块进行操作。值得一提的是,闪存芯片120的运作(例如,写入、读取、抹除等运作)是由闪存控制器130来控制。
请参照图2,闪存芯片120具有多个实体区块(physical block)120-0~120-N。一般而言,在闪存中,实体区块为抹除的最小单位。亦即,每一实体区块含有最小数目之一并被抹除的记忆单元。在本范例实施例中实体区块120-0~120-N分别具有128个页(page),其中页为程序化(program)的最小单元。换言的,页为写入数据或读取数据的最小单元。每一页包括使用者数据区D与冗余区R。使用者数据区D用以储存使用者数据,而冗余区R用以储存***的数据(例如,ECC码、实体页地址所对映的逻辑页地址等)。在本范例实施例中,使用者数据区D为512字节,而冗余区R为16字节。
实体区块120-0~120-N会在逻辑上分组为***区210、储存区220与替代区230。
分组为***区210的实体区块120-0~实体区块120-S是用以储存***数据,此***数据包括逻辑页转实体页对映表140、实体页转逻辑页对映表150、闪存芯片120的实体区块数、每一实体区块的页地址数、记录逻辑页地址与实体页地址的关系等。
分组为储存区220的实体区块120-(S+1)~实体区块120-(S+D)是用以储存主机***200所写入的数据。也就是说,闪存储存***100会使用分组为储存区220的实体区块120-(S+1)~实体区块120-(S+D)来实际地储存主机***200所写入的数据。
分组为替代区230中的实体区块120-(S+D)~实体区块120-N是替代实体区块。具体来说,闪存芯片120于出厂时会预留4%的实体区块作为更换使用,也就是说,当储存区220中的实体区块损毁时,预留于替代区230中的实体区块可用以取代损坏的实体区块。因此,倘若当储存区220中的实体区块发生损毁且替代区230中仍存有可用的实体区块时,闪存控制器130可从替代区230中提取可用的实体区块来更换损毁的实体区块。倘若当储存区220中的实体区块发生损毁且替代区230中无可用的实体区块时,闪存储存***100将会被宣告无法再使用。
图3是根据本发明范例实施例绘示闪存芯片中储存区的概要示意图。
请参照图3,储存区220的每一实体区块包括127个实体页地址,因此储存区220的实体区块120-(S+1)~实体区块120-(S+D)共包括(127×D)个实体页地址,其中实体页地址0~实体页地址127属于实体区块120-(S+1),实体页地址128~实体页地址254属于实体区块120-(S+2),实体页地址255~实体页地址381属于实体区块120-(S+3),...,实体页地址(127(D-1)+1)~实体页地址127D属于实体区块120-(S+D)。此外,在本发明范例实施例中,闪存统100100会提供对映储存区220的实体页地址的逻辑页地址0~逻辑页地址L给主机***200以进行存取。在本发明范例实施例中,S、D与L为整数,其是依据闪存芯片120的容量由设计者来设定,一般来说,实体页地址的数目是大于逻辑页地址的数目。
请再参照图1,闪存控制器130会执行以硬件型式、软件型式或固件型式实作的多个指令来与连接器110和闪存芯片120一起完成数据的储存、读取与抹除等运作。闪存控制器130包括微处理器单元130a、缓冲存储器130b、主机接口单元130c与闪存块130130d。
微处理器单元130a用以控制闪存控制器130的运作,例如与缓冲存储器130b、主机接口单元130c、闪存接口模块130d和页管理模块130e等协同合作以对闪存储存***100进行写入、读取、抹除等指令。
缓冲存储器130b是耦接至微处理器单元130a并且用以暂时地储存***数据或者主机***200所读取或写入的数据。在本范例实施例中,缓冲存储器130b为静态随机存取内存(static random access memory,SRAM)。然而,必须了解的是,本发明不限于此,动态随机存取内存(Dynamic Random Access memory,DRAM)、磁阻式内存(Magnetoresistive Random Access Memory,MRAM)、相变化内存(PhaseChange Random Access Memory,PRAM)或其它适合的内存亦可应用于本发明。
主机接口单元130c是耦接至微处理器单元130a并且用以接收与识别主机***200所传送的指令。也就是,主机***200所传送的指令与数据会透过主机接口单元130c来传送至微处理器单元130a。在本范例实施例中,主机接口单元130c为SATA接口。然而,必须了解的是本发明不限于此,主机接口单元130c亦可以是USB接口、IEEE 1394接口、PCI Express接口、MS接口、MMC接口、SD接口、CF接口、IDE接口或其它适合的数据传输接口。特别是,主机接口单元130c会与连接器110相对应。也就是,主机接口单元130c必须与连接器110互相搭配。
闪存接口模块130d是耦接至微处理器单元130a并且用以存取闪存芯片120。也就是,欲写入至闪存芯片120的数据会经由闪存接口模块130d转换为闪存芯片120所能接受的格式。具体来说,闪存接口模块130d可支持闪存接口信号,例如,闪存接口信号包含芯片使能信号/CE,命令闩锁信号/CLE,地址闩锁信号/ALE,数据读取控制信号/RE,数据写入控制信号/WE,写入保护信号/WP,芯片状态信号R/B及多个数据输出入信号/IO等。
页管理模块130e是用以在微处理单元130a单元的控制下管理闪存芯片120。
在本发明范例实施例中,页管理模块130e以一固件型式实作在闪存控制器130中。例如,将包括多个程序指令的页管理模块130e烧录至一程序内存(例如,只读存储器(Read Only Memory,ROM))中并且将此程序内存嵌入在闪存控制器130中,其中当闪存储存***100运作时,微处理器单元130a会从此程序内存中加载页管理模块130e来对闪存芯片120执行抹除、读取、写入等运作。
此外,在本发明另一范例实施例中,页管理模块130e亦可以是以软件型式储存于闪存芯片120的特定区域(例如,在闪存芯片120中的***区210)中,其中当闪存储存***100运作时,页管理模块130e会被加载至缓冲存储器130b中并且由微处理器单元130a来执行以进行抹除、读取、写入等运作。
再者,在本发明另一实施例中,页管理模块130e亦可以一硬件型式(例如,逻辑闸)直接地布局(lay out)在闪存控制器130中。
此外,虽未绘示于本范例实施例,但闪存控制器130亦可更包括错误校正模块与电源管理模块等用于控制闪存的一般功能模块。
逻辑页转实体页对映表140是由微处理器单元130a经由执行页管理模块130e来操作以记录逻辑页地址0~逻辑页地址L所对映的实体页地址,而实体页转逻辑页对映表150是由微处理器单元130a经由执行页管理模块130e来操作以记录实体页地址0~实体页地址127D所对映的逻辑页地址。例如,逻辑页转实体页对映表140与实体页转逻辑页对映表150是储存在闪存芯片120的***区210中,并且在闪存储存***100运作时,逻辑页转实体页对映表140与实体页转逻辑页对映表150会被加载至缓冲存储器130b中并且由页管理模块130e来操作,并且会不定时地被回存至闪存芯片120的***区210,以避免闪存储存***100不正常地断电,而遗失其中已更新的内容。
具体来说,在本发明范例实施例中,当主机***200在任意逻辑页地址0~逻辑页地址L中写入数据时,微处理器单元130a所闪存控制器130所执行的页管理模块130e的程序指令的程序指令会在实体区块120-(S+1)~实体区块120-(S+D)中将数据依序地写入至实体页地址中。具体来说,当页管理模块130e的程序指令的程序指令开始使用实体区块120-(S+1)来储存主机***200欲写入的数据时,不管主机***200是写入那个逻辑页地址,页管理模块130e的程序指令的程序指令都会将数据依序地写入至实体页地址0~实体页地址127;而当页管理模块130e的程序指令的程序指令开始使用实体区块120-(S+2)来储存主机***200欲写入的数据时,不管主机***200是写入那个逻辑页地址,页管理模块130e的程序指令的程序指令都会将数据依序地写入至实体页地址128~实体页地址254。也就是说,在写入主机***200欲写入的数据时,页管理模块130e的码程序指令依序地使用一个实体区块内的实体页地址来写入数据,并且当此实体区块内的实体页地址被使用完后才会再选择另一个无数据的实体区块,并且在新选择的实体区块的实体页地址中继续依序地写入数据。
特别是,在页管理模块130e的程序指令将数据写入至实体页地址后,页管理模块130e的程序指令会更新逻辑页转实体页对映表140与实体页转逻辑页对映表150以正确地记录逻辑页地址与实体页地址的对映关系。
值得一提的是,在本发明一范例实施例中,在页管理模块130e中更包括一可写入实体页指针(Available Physical Page Pointer),用以指示下一个可写入的实体页地址,基此,当闪存控制器130执行页管理模块130e的程序指令来写入主机***200欲写入的数据时,可依据可写入实体页指针的标记依序地将数据写入至闪存芯片120的实体页地址中。
此外,值得说明的是,在另一实施例中,当闪存芯片120为多层记忆单元(MultiLevel Cell,MLC)NAND闪存芯片,且写入方式是指定写入实体区块中的写入速度较同一实体区块中的上页(upper page)快的下页(lower page)时,由于该等下页的实体页地址并非连续,故页管理模块130e的程序指令会依据该实体区块中的下页的实体页地址,由小至大地写入数据,而该可写入实体页指针也会依据下页的实体页地址由小至大的指示下一个可写入的实体页地址。
此外,当此实体页指针欲从一实体区块改指向另一实体区块时,可在无数据状态的实体区块之中依该等实体区块被抹除的次序选择最早被抹除的实体区块的最小实体页地址为下一欲写入数据的实体页地址,其中该等实体区块被抹除的次序可由一区块抹除次序记录(未绘示)得知。
图4A~图4C是根据本发明一范例实施例绘示逻辑页转实体页对映表及实体页转逻辑页对映表的范例。
请参照图4A,假设逻辑页地址0~逻辑页地址L是分别地对映实体页地址0~实体页地址L,也就是,实体页地址0~实体页地址L是分别储存主机***200在逻辑页地址0~逻辑页地址L中写入的数据。因此,逻辑页转实体页对映表140以及实体页转逻辑页对映表150会记录此些对映关系,并且此时可写入实体页指针会指向实体页地址(L+1)。
倘若主机***200欲写入数据至逻辑页地址1时,页管理模块130e的程序指令会依据可写入实体页指针将主机***200欲写入的数据写入至实体页地址(L+1)中,并且将可写入实体页指针改为指向实体页地址(L+2)。此时,页管理模块130e的程序指令会在逻辑页转实体页对映表140中将逻辑页地址1的对映更新为实体页地址(L+1),并且在实体页转逻辑页对映表150中将实体页地址(L+1)的对映更新为逻辑页地址1(如图4B所示)。
接着,倘若主机***200欲写入数据至逻辑页地址129时,页管理模块130e的程序指令会依据可写入实体页指针将主机***200欲写入的数据写入至实体页地址(L+2)中,并且将可写入实体页指针改为指向实体页地址(L+3)。此时,页管理模块130e的程序指令会在逻辑页转实体页对映表140中将逻辑页地址129的对映更新为实体页地址(L+2),并且在实体页转逻辑页对映表150中将实体页地址(L+2)的对映更新为逻辑页地址129(如图4C所示)。
图5是根据本发明一范例实施例所绘示闪存储存***100的存取运作的流程图。
请参照图5,当闪存储存***100与主机***200连接并激活时,在步骤S501中会提供多个逻辑页地址以供主机***200存取。接着,在步骤S503中会建立逻辑页转实体页对映表140与实体页转逻辑页对映表150。之后,在步骤S505中会待命并且判断所接收的指令。
倘若在步骤S505中接收到读取指令时,则在步骤S507中会根据欲读取的逻辑页地址从逻辑页转实体页对映表140中读出对映的实体页地址,并且在步骤S509中从对映的实体页地址读取数据并且将此数据传送给主机***。之后,返回步骤S505待命。例如,当在闪存芯片140的储存区220是处于图4的(b)的状态并且主机***200欲读取逻辑页地址1的数据时,页管理模块130e的程序指令会从逻辑页转实体页对映表140中读出对映逻辑页地址1的实体页地址为实体页地址(L+1),并且从实体页地址(L+1)中读取数据并将数据传送给主机***200。
倘若在步骤S505中接收到写入指令时,则在步骤S511中会将数据写入至可写入实体页指针所指向的实体页地址。然后,在步骤S513中会在逻辑页转实体页对映表140中将欲写入数据的逻辑页地址所对映的实体页地址更新为可写入实体页指针所指向的实体页地址。接着,在步骤S515中在实体页转逻辑页对映表150中更新写入此数据的实体页地址所对映的逻辑页地址,并且在步骤S517中将可写入实体页指针指向下一个可写入的实体页地址。最后,在步骤S519中判断与记录有效实体页地址与无效的实体页地址,之后返回步骤S505。例如,当在闪存芯片140的储存区220是处于图4B的状态并且主机***200欲写入数据至逻辑页地址129时,页管理模块130e的程序指令会将数据写入至实体页地址(L+2)中并且如图4C所示更新逻辑页转实体页对映表140与实体页转逻辑页对映表150。
值得一提的是,在本发明范例实施例中,页管理模块130e的程序指令会通过比对逻辑页转实体页对映表140以及实体页转逻辑页对映表150中的记录来判断哪些实体页地址为无效的实体页地址与有效的实体页地址,其中所谓无效的实体页地址是指其中所储存的数据为无效的旧数据,而有效的实体页地址是指其中所储存的数据是对映目前逻辑页地址的有效数据。
例如,以图4C为例,当欲判断实体页地址0是否为有效的实体页地址时,页管理模块130e的程序指令会从实体页转逻辑页对映表150中读出实体页地址0是对映逻辑页地址0,并且依据逻辑页地址0从逻辑页转实体页对映表140读出逻辑页地址0是对映实体页地址0,因此实体页地址0为有效的实体页地址。另外,当欲判断实体页地址1是否为有效的实体页地址时,页管理模块130e的程序指令会从实体页转逻辑页对映表150中读出实体页地址1是对映逻辑页地址1,并且依据逻辑页地址1从逻辑页转实体页对映表140读出逻辑页地址1是对映实体页地址(L+1),因此实体页地址1为无效的实体页地址。类似地,当欲判断实体页地址129是否为有效的实体页地址时,页管理模块130e的程序指令会从实体页转逻辑页对映表150中读出实体页地址129是对映逻辑页地址129,并且依据逻辑页地址129从逻辑页转实体页对映表140读出逻辑页地址129是对映实体页地址(L+2),因此实体页地址129为无效的实体页地址。也就是说,页管理模块130e的程序指令会依据待判断的实体页地址透过实体页转逻辑页对映表150与逻辑页转实体页对映表140查询待判断的实体页地址对映的逻辑页地址所对映的实体页地址,倘若待判断的实体页地址和所查询的实体页地址相符时,则此待判断的实体页地址为有效的实体页地址,反的则为无效的实体页地址。
值得一提的是,由于闪存芯片120是以实体区块作为抹除的最小单位,因此页管理模块130e的程序指令可透过上述比对将有效的实体页地址中的数据进行合并以释放无效的实体页地址来写入新的数据。例如,页管理模块130e的程序指令可将至少一个实体区块中有效实体页地址中的数据复制到未写入任何数据的实体区块的实体页地址中,并且将此实体区块进行抹除运作,由此可将分散的有效数据合并并且将无效的实体页地址释放出来(以下称为无效数据抹除程序)。值得一提的是,在进行有效数据合并以释放无效的实体页地址后,页管理模块130e的程序指令会更新实体页转逻辑页对映表150与逻辑页转实体页对映表140中逻辑页地址与实体页地址的对映关系。
在本发明一范例实施例中,控制器***更包括实体区块无效页地址计数表170(如图6的闪存储存***100’所示)以记录每一实体区块120-0~140-(S+D)中无效的实体页地址的数目,以作为将有效的实体页地址中的数据进行合并以释放无效的实体页地址的依据。类似地,是储存在闪存芯片120的***区210中,并且在闪存储存***100运作时,实体区块无效页地址计数表170会被加载至缓冲存储器130b中并且由闪存控制器130执行页管理模块130e的程序指令来操作,并且会不定时地被回存至闪存芯片120的***区210,以避免闪存储存***100不正常地断电,而遗失其中已更新的内容。
图7是根据本发明一范例实施例绘示实体区块无效页地址计数表的范例,其中实体区块无效页地址计数表170是对应图4的范例。
请参照图7的(a)与图4A,在对应图4A所示的状态下,实体区块无效页地址计数表170会记录每一实体区块120-0~120-(S+D)的无效实体页地址的计数值为0。
请参照图7的(b)与图4B,在对应图4B所示的状态下,由于主机***200欲写入的逻辑页地址1的数据被写入至实体页地址(L+1),因此页管理模块130e的程序指令会更新逻辑页转实体页对映表140中逻辑页地址1的对映以及实体页转逻辑页对映表150中实体页地址(L+1)的对映。特别是,在页管理模块130e的程序指令更新逻辑页转实体页对映表140之前会读出逻辑页地址1原对映的实体页地址为实体页地址1并且在实体区块无效页地址计数表170中将关于实体页地址1所属的实体区块120-(S+1)的无效实体页地址的计数值加1。
类似地,请参照图7的(c)与图4C,在对应图4C所示的状态下,由于主机***200欲写入的逻辑页地址129的数据被写入至实体页地址(L+2),因此页管理模块130e的程序指令会更新逻辑页转实体页对映表140中逻辑页地址129的对映以及实体页转逻辑页对映表150中实体页地址(L+2)的对映。特别是,在页管理模块130e的程序指令更新逻辑页转实体页对映表140之前会读出逻辑页地址129原对映的实体页地址为实体页地址129并且在实体区块无效页地址计数表170中将关于实体页地址129所属的实体区块120-(S+1)的无效实体页地址的计数值加1。
例如,在本发明一范例实施例中,当进行无效数据抹除程序时会依据实体区块无效页地址计数表170选择存有最少数目的有效实体页地址的至少一个实体区块来进行数据合并程序。
值得一提的是,上述范例实施例是以建立实体区块无效页地址计数表170来计数实体区块中无效的实体页地址的数目。然而,在本发明另一实施例中,亦可以建立实体区块有效页地址计数表来计数实体区块中有效的实体页地址的数目,以在进行无效数据抹除程序由此选择有效数据数据最少的实体区块来数据合并。
此外,在本发明一范例实施例中,控制器***更新包括无数据实体区块管理表(未绘示)以记录未写入任何数据的实体区块。也就是说,记录在无数据实体区块管理表中的实体区块是已被抹除可供写入数据的实体区块。特别是,页管理模块130e的程序指令可依据无数据实体区块管理表中的信息来更新可写入实体页指针。例如,在可写入实体页指针已指向实体页地址127D并执行写入指令时,页管理模块130e的程序指令会依据无数据实体区块管理表中可写入实体页指针指向其中一个未写入任何数据的实体区块的第一个实体页地址。
特别是,如上所述当进行无效数据抹除程序中需要未写入任何数据的实体区块来写入有效实体页地址中的数据,因此在本发明一范例实施例中,页管理模块130e的程序指令会依据无数据实体区块管理表中判断仅剩1个未写入任何数据的实体区块时,则会进行无效数据抹除程序以释放无效的实体页地址。值得一提的是,本发明不限于在剩1个未写入任何数据的实体区块时进行无效数据抹除。
此外,在本发明另一范例实施例中,页管理模块130e的程序指令亦可根据实体区块无效页地址计数表170中的计数值判断当有至少一个实体区块内无效实体页地址的比例超过一无效实体页地址门槛值时,则进行数据合并以释放无效的实体页地址的程序。在此,此无效实体页地址门槛值是可由使用者自行设定,其中当此无效实体页地址门槛值越低时,则执行数据合并程序的频率越高,反之,则越低。在本发明一范例实施例中,此无效实体页地址门槛值是设定为80%。
另外,在本发明另一范例实施例中,页管理模块130e的程序指令亦可根据实体区块无效页地址计数表170中的计数值判断当有任一实体区块内无任何有效实体页地址时,则将此无任何有效实体页地址的实体区块执行抹除运作以释放无效的实体页地址,并且将此实体区块记录在无数据实体区块管理表中。
图8是根据本发明一范例实施例所绘示闪存储存***100’的存取运作的流程图。
请参照图8,当闪存储存***100与主机***200连接并激活时,在步骤S801中会提供多个逻辑页地址以供主机***200存取。接着,在步骤S803中会建立逻辑页转实体页对映表140、实体页转逻辑页对映表150与实体区块无效页地址计数表170。之后,在步骤S805中会待命并且判断所接收的指令。
倘若在步骤S805中接收到读取指令时,则在步骤S807中会根据欲读取的逻辑页地址从逻辑页转实体页对映表140读出对映的实体页地址,并且在步骤S809中从对映的实体页地址读取数据并且将此数据传送给主机***。之后,返回步骤S805待命。
倘若在步骤S805中接收到写入指令时,则在步骤S811中会将数据写入至可写入实体页指针所指向的实体页地址。然后,在步骤S813中会在实体区块无效页地址计数表170中将欲写入数据的逻辑页地址目前所对映的实体区块的无效实体页地址的计数值加1。之后,在步骤S815中会在逻辑页转实体页对映表140中将欲写入数据的逻辑页地址所对映的实体页地址更新为可写入实体页指针所指向的实体页地址。接着,在步骤S817中在实体页转逻辑页对映表150中更新写入此数据的实体页地址所对映的逻辑页地址,并且在步骤S819中将可写入实体页指针指向下一个可写入的实体页地址。
特别是在完成写入动作之后,在步骤S821中会判断未写入数据的实体区块的数目是否少于无数据实体区块数门槛值(例如,如上所述,本范例实施例是设定为1)。倘若在步骤S821中判断未写入数据的实体区块少于无数据实体区块数门槛值时,则会执行无效数据抹除程序。例如,在步骤S823中会依据实体区块无效页地址计数表170从已写入数据的实体区块中选择2个实体区块。例如,所选择的2个实体区块是已写入数据的实体区块之中存有最少数目的有效实体页地址的2个实体区块,并且在步骤S825中比对逻辑页转实体页对映表140与实体页转逻辑页对映表150以判断所选择的2个实体区块中的有效实体页地址。
然后,在步骤S827中会从闪存芯片120中选择1个未写入数据的实体区块,并且在步骤S829中将在步骤S825中所判断的有效实体页地址内的数据复制到在步骤S827中所选择的实体区块的实体页面地址中。接着,在步骤S831中将步骤S823中所选择的2个实体区块进行抹除运作以释放可用的储存空间。最后,在步骤S833中更新逻辑页转实体页对映表140、实体页转逻辑页对映表150与实体区块无效页地址计数表170,而完成无效数据抹除程序并返回步骤S805待命。
必须了解的是,虽然图8是选择已写入数据的2个实体区块以1个未写入数据的实体区块来进行无效数据抹除程序,然而本发明不限于此,当进行无效数据抹除程序时可选择1个或多个已写入数据的实体区块来进行无效数据抹除,并且可选择1个或多个未写入数据的实体区块来储存所合并的有效数据。
图9是根据本发明另一范例实施例所绘示闪存储存***100’的存取运作的流程图。
请参照图9,步骤S901、S903、S905、S907、S909、S911、S913、S915、S917与S919是相同于步骤S801、S803、S805、S807、S809、S811、S813、S815、S817与S819,在此不再赘述。
在步骤S921中,会依据实体区块无效页地址计数表170判断是否有实体区块内无效实体页地址的比例超过无效实体页地址门槛值(例如,本范例实施例是设定80%)。倘若在步骤S921中判断有至少1个实体区块内无效实体页地址的比例超过无效实体页地址门槛值时,则会执行一无效数据抹除程序(例如,步骤S923~S929)。
在步骤S923中会比对逻辑页转实体页对映表140与实体页转逻辑页对映表150来判断此实体区块中的有效实体页地址。
然后,在步骤S925中会依据所判断无效实体页地址的比例超过无效实体页地址门槛值的实体区块数目从闪存芯片120中选择至少1个未写入数据的实体区块,并且在步骤S927中将在步骤S923中所判断的有效实体页地址内的数据复制到在步骤S925中所选择的实体区块的实体页面地址中。接着,在步骤S927中将步骤S921中所判断的实体区块进行抹除运作以释放可用的储存空间。最后,在步骤S929中更新逻辑页转实体页对映表140、实体页转逻辑页对映表150与实体区块无效页地址计数表170,而完成无效数据抹除程序并返回步骤S905待命。
图10是根据本发明另一范例实施例所绘示闪存储存***100’的存取运作的流程图。
请参照图10,步骤S1001、S1003、S1005、S1007、S1009、S1011、S1013、S1015、S1017与S1019是相同于步骤S801、S803、S805、S807、S809、S811、S813、S815、S817与S819,在此不再赘述。
在步骤S1021中,会依据实体区块无效页地址计数表170判断是否存有任何其的实体页地址皆为无效的实体区块。倘若在步骤S1021中判断存有实体页地址皆为无效的实体区块时,则在步骤S1023中会将实体页地址皆为无效的实体区块执行抹除运作以释放可用的储存空间。最后,在步骤S1025中更新实体区块无效页地址计数表,而完成数据合并程序并返回步骤S1005待命。
必须了解的是,在上述图5、图8、图9与图10中虽未绘示结束运作的步骤,然而此领域技术人员可轻易了解在闪存储存***停止运作此些流程会终止。此外,本范例实施例图5、图8、图9与图10所述步骤的顺序并非限定本发明,此领域熟知技艺者可根据本发明的精神轻易地以非本范例实施例所述的顺序来实作本发明。
综上所述,本发明使用逻辑页转实体页对映表与实体页转逻辑页对映表来记录逻辑页地址与实体页地址的对映关系,由此可以页为基础对闪存芯片进行写入,可有效地提升闪存储存***的效能。此外,透过比对逻辑页转实体页对映表与实体页转逻辑页对映表即可判定无效的实体页地址与有效的实体页地址而进行数据合并以释放无效的实体页地址。再者,本发明使用实体区块无效页地址计数表来记录每一实体区块内无效实体页地址的数目,由此可快速地判断能够在抹除后释放较多空间的实体区块,以提升闪存储存***的效能。
虽然本发明已以实施例揭露如上,然其并非用以限定本发明,任何所属技术领域中具有通常知识者,在不脱离本发明的精神和范围内,当可作些许的更动与润饰,故本发明的保护范围当以权利要求所界定的为准。
Claims (25)
1.一种数据存取方法,其由一闪存控制器执行以在至少一闪存芯片的多个实体区块的多个实体页地址中存取数据,该数据存取方法包括:
提供多个逻辑页地址,以供一主机***存取;
建立一逻辑页转实体页对映表以分别地记录该些逻辑页地址所对映的该些实体页地址;
建立一实体页转逻辑页对映表以分别地记录该些实体页地址所对映的该些逻辑页地址;
从该主机***接收一欲写入数据及一欲写入逻辑页地址,写入该欲写入数据于一实体页地址,并在该逻辑页转实体页对映表中更新该欲写入逻辑页地址是对映写入该数据的实体页地址,并且在该实体页转逻辑页对映表中更新写入该欲写入数据的实体页地址是对映该欲写入逻辑页地址;以及
比对该逻辑页转实体页对映表与该实体页转逻辑页对映表判断已写入数据的该些实体页地址之中无效的该些实体页地址与有效的该些实体页地址。
2.如权利要求1所述的数据存取方法,其特征在于,更包括:
建立一实体区块无效页地址计数表以记录每一该些实体区块中无效的该些实体页地址的数目;以及
在该实体区块无效页地址计数表中更新在该欲写入逻辑页地址原始对映的实体页地址中无效的该些实体页地址的数目。
3.如权利要求1所述的数据存取方法,其特征在于,更包括:
建立一实体区块有效页地址计数表以记录每一该些实体区块中有效的该些实体页地址的数目;以及
在该实体区块有效页地址计数表中更新在该欲写入逻辑页地址原始对映的实体页地址中有效的该些实体页地址的数目。
4.如权利要求2所述的数据存取方法,其特征在于,更包括:
判断未写入数据的该些实体区块的数目是否少于一无数据实体区块数门槛值,
其中当未写入数据的该些实体区块的数目少于该无数据实体区块数门槛值时,则执行一无效数据抹除程序,该无效数据抹除程序包括:
依据该实体区块无效页地址计数表从已写入数据的该些实体区块之中选择至少一第一实体区块;
从未写入数据的该些实体区块之中选择至少一第二实体区块;
将该至少一第一实体区块中有效的该些实体页地址中的数据复制至属于该至少一第二实体区块的该些实体页地址中;
更新该逻辑页转实体页对映表、该实体页转逻辑页对映表与该实体区块无效页地址计数表;以及
抹除该至少一第一实体区块。
5.如权利要求4所述的数据存取方法,其特征在于,在已写入数据的该些实体区块之中该至少一第一实体区块存有最少数目的有效的该些实体页地址。
6.如权利要求4所述的数据存取方法,其特征在于,更包括建立一无数据实体区块管理表,以记录未写入数据的该些实体区块。
7.如权利要求1所述的数据存取方法,其特征在于,比对该逻辑页转实体页对映表与该实体页转逻辑页对映表判断已写入数据的该些实体页地址之中无效的该些实体页地址与有效的该些实体页地址的步骤包括:
从该些实体页面地址之中选择一待判断实体页地址;
依据该实体页转逻辑页对映表查询该待判断实体页地址对映的逻辑页地址;
依据该逻辑页转实体页对映表查询所对映的逻辑页地址对映的实体页地址;
判断所查询的实体页地址是否相同于该待判断实体页地址,其中倘若所查询的实体页地址相同于该待判断实体页地址,则该待判断实体页地址为有效,并且倘若所查询的实体页地址不同于该待判断实体页地址,则该待判断实体页地址为无效。
8.如权利要求2所述的数据存取方法,其特征在于,更包括:
依据该实体区块无效页地址计数表判断在已写入数据的该些实体区块的中至少一第一实体区块内无效的该些实体页地址占其所有该些实体页地址的比例是否超过一无效实体页地址门槛值,
其中当该至少一第一实体区块内无效的该些实体页地址占其所有该些实体页地址的比例超过该无效实体页地址门槛值时,则执行一无效数据抹除程序,该无效数据抹除程序包括:
从未写入数据的该些实体区块之中选择至少一第二实体区块;
将该至少一第一实体区块中有效的该些实体页地址中的数据复制至属于该至少一第二实体区块的该些实体页地址中;
更新该逻辑页转实体页对映表、该实体页转逻辑页对映表与该实体区块无效页地址计数表;以及
抹除该至少一第一实体区块。
9.如权利要求2所述的数据存取方法,其特征在于,更包括:
依据该实体区块无效页地址计数表判断在已写入数据的该些实体区块之中至少一第一实体区块内是否无任何有效的该些实体页地址,
其中当该至少一第一实体区块内无有效的该些实体页地址时,则抹除该至少一第一实体区块并且更新该实体区块无效页地址计数表。
10.如权利要求1所述的数据存取方法,其特征在于,更包括建立一可写入实体页指针,以标记下一个可写入的该些实体页地址。
11.一种控制器***,适用在至少一闪存芯片的多个实体区块的多个实体页地址中写入数据,该控制器***包括:
一主机接口单元,用以连接一主机***;
一微处理器单元,用以从该主机***接收一欲写入数据及一欲写入逻辑页地址;
一闪存接口单元,用以连接该至少一闪存芯片;
一缓冲存储器,用以暂存数据;
一逻辑页转实体页对映表,用以记录该些逻辑页地址所对映的该些实体页地址;
一实体页转逻辑页对映表,用以记录该些实体页地址所对映的该些逻辑页地址;以及
一页管理模块,用以写入该欲写入数据于一实体页地址,并在该逻辑页转实体页对映表中更新该欲写入逻辑页地址是对映写入该数据的实体页地址,并且在该实体页转逻辑页对映表中更新写入该欲写入数据的实体页地址是对映该欲写入逻辑页地址,
其中该页管理模块比对该逻辑页转实体页对映表与该实体页转逻辑页对映表来判断已写入数据的该些实体页地址之中无效的该些实体页地址与有效的该些实体页地址。
12.如权利要求11所述的控制器***,其特征在于,更包括一实体区块无效页地址计数表,用以记录每一该些实体区块中无效的该些实体页地址的数目,
其中该页管理模块更用以在该实体区块无效页地址计数表中更新在该欲写入逻辑页地址原始对映的实体页地址中无效的该些实体页地址的数目。
13.如权利要求11所述的控制器***,其特征在于,更包括一实体区块有效页地址计数表,用以记录每一该些实体区块中有效的该些实体页地址的数目,
其中该页管理模块更用以在该实体区块有效页地址计数表中更新在该欲写入逻辑页地址原始对映的实体页地址中有效的该些实体页地址的数目。
14.如权利要求12所述的控制器***,其特征在于,该页管理模块更用以判断未写入数据的该些实体区块的数目是否少于一无数据实体区块数门槛值,
其中当未写入数据的该些实体区块的数目少于该无数据实体区块数门槛值时,该页管理模块更用以依据该实体区块无效页地址计数表从已写入数据的该些实体区块之中选择至少一第一实体区块,从未写入数据的该些实体区块之中选择至少一第二实体区块,将该至少一第一实体区块中有效的该些实体页地址中的数据复制至属于该至少一第二实体区块的该些实体页地址中,更新该逻辑页转实体页对映表、该实体页转逻辑页对映表与该实体区块无效页地址计数表,并且抹除该至少一第一实体区块。
15.如权利要求14所述的控制器***,其特征在于,在已写入数据的该些实体区块之中该至少一第一实体区块存有最少数目的有效的该些实体页地址。
16.如权利要求14所述的控制器***,其特征在于,更包括一无数据实体区块管理表,用以记录未写入数据的该些实体区块。
17.如权利要求11所述的控制器***,其特征在于,该页管理模块是通过从该些实体页面地址之中选择一待判断实体页地址,依据该实体页转逻辑页对映表查询该待判断实体页地址对映的逻辑页地址,依据该逻辑页转实体页对映表查询所对映的逻辑页地址对映的实体页地址,以及判断所查询的实体页地址是否相同于该待判断实体页地址来判断无效的该些实体页地址与有效的该些实体页地址,
其中倘若所查询的实体页地址相同于该待判断实体页地址,则该待判断实体页地址为有效,并且倘若所查询的实体页地址不同于该待判断实体页地址,则该待判断实体页地址为无效。
18.如权利要求12所述的控制器***,其特征在于,该页管理模块更用以依据该实体区块无效页地址计数表判断在已写入数据的该些实体区块之中至少一第一实体区块内无效的该些实体页地址占其所有该些实体页地址的比例是否超过一无效实体页地址门槛值,
其中当该至少一第一实体区块内无效的该些实体页地址占其所有该些实体页地址的比例超过该无效实体页地址门槛值时,该页管理模块更用以从未写入数据的该些实体区块之中选择至少一第二实体区块,将该至少一第一实体区块中有效的该些实体页地址中的数据复制至属于该至少一第二实体区块的该些实体页地址中,更新该逻辑页转实体页对映表、该实体页转逻辑页对映表与该实体区块无效页地址计数表,并且抹除该至少一第一实体区块。
19.如权利要求12所述的控制器***,其特征在于,该页管理模块更用以依据该实体区块无效页地址计数表判断在已写入数据的该些实体区块之中至少一第一实体区块内是否无任何有效的该些实体页地址,
其中当该至少一第一实体区块内无有效的该些实体页地址时,该页管理模块更用以抹除该至少一第一实体区块并且更新该实体区块无效页地址计数表。
20.如权利要求11所述的控制器***,其特征在于,更包括一可写入实体页指针,用以标记下一个可写入的该些实体页地址。
21.一种闪存储存***,包括:
多个实体页地址,其中该些实体页地址属于多个实体区块;
一连接器,用以连接一主机***;
一逻辑页转实体页对映表,用以记录该些逻辑页地址所对映的该些实体页地址;
一实体页转逻辑页对映表,用以记录该些实体页地址所对映的该些逻辑页地址;以及
一闪存控制器,电性连接至该些实体页地址与该连接器,并且用以从该主机***接收一欲写入数据及一欲写入逻辑页地址,
其中该闪存控制器更用以写入该欲写入数据于一实体页地址,并在该逻辑页转实体页对映表中更新该欲写入逻辑页地址是对映写入该数据的实体页地址,并且在该实体页转逻辑页对映表中更新写入该欲写入数据的实体页地址是对映该欲写入逻辑页地址,
其中该闪存控制器比对该逻辑页转实体页对映表与该实体页转逻辑页对映表来判断已写入数据的该些实体页地址之中无效的该些实体页地址与有效的该些实体页地址。
22.如权利要求21所述的闪存储存***,其特征在于,更包括一实体区块无效页地址计数表,用以记录每一该些实体区块中无效的该些实体页地址的数目,
其中该闪存控制器更用以在该实体区块无效页地址计数表中更新在该欲写入逻辑页地址原始对映的实体页地址中无效的该些实体页地址的数目。
23.如权利要求21所述的闪存储存***,其特征在于,更包括一实体区块有效页地址计数表,用以记录每一该些实体区块中有效的该些实体页地址的数目,
其中该闪存控制器更用以在该实体区块有效页地址计数表中更新在该欲写入逻辑页地址原始对映的实体页地址中有效的该些实体页地址的数目。
24.如权利要求22所述的闪存储存***,其特征在于,该闪存控制器更用以判断未写入数据的该些实体区块的数目是否少于一无数据实体区块数门槛值,
其中当未写入数据的该些实体区块的数目少于该无数据实体区块数门槛值时,该闪存控制器更用以依据该实体区块无效页地址计数表从已写入数据的该些实体区块之中选择至少一第一实体区块,从未写入数据的该些实体区块之中选择至少一第二实体区块,将该至少一第一实体区块中有效的该些实体页地址中的数据复制至属于该至少一第二实体区块的该些实体页地址中,更新该逻辑页转实体页对映表、该实体页转逻辑页对映表与该实体区块无效页地址计数表,并且抹除该至少一第一实体区块。
25.如权利要求21所述的闪存储存***,其特征在于,该闪存控制器是通过从该些实体页面地址之中选择一待判断实体页地址,依据该实体页转逻辑页对映表查询该待判断实体页地址对映的逻辑页地址,依据该逻辑页转实体页对映表查询所对映的逻辑页地址对映的实体页地址,以及判断所查询的实体页地址是否相同于该待判断实体页地址来判断无效的该些实体页地址与有效的该些实体页地址,
其中倘若所查询的实体页地址相同于该待判断实体页地址,则该待判断实体页地址为有效,并且倘若所查询的实体页地址不同于该待判断实体页地址,则该待判断实体页地址为无效。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100098723A CN101788955B (zh) | 2009-01-23 | 2009-01-23 | 闪存数据的存取方法及其储存***与控制器*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100098723A CN101788955B (zh) | 2009-01-23 | 2009-01-23 | 闪存数据的存取方法及其储存***与控制器*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101788955A CN101788955A (zh) | 2010-07-28 |
CN101788955B true CN101788955B (zh) | 2012-05-02 |
Family
ID=42532175
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009100098723A Active CN101788955B (zh) | 2009-01-23 | 2009-01-23 | 闪存数据的存取方法及其储存***与控制器*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101788955B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102375779B (zh) * | 2010-08-16 | 2015-08-19 | 深圳市朗科科技股份有限公司 | 一种数据处理方法以及数据处理模块 |
WO2012049711A1 (en) * | 2010-10-14 | 2012-04-19 | Hitachi, Ltd. | Data migration system and data migration method |
CN102779551B (zh) * | 2011-05-10 | 2015-01-07 | 群联电子股份有限公司 | 数据写入方法、存储器控制器与存储器储存装置 |
CN103226516A (zh) * | 2012-01-31 | 2013-07-31 | 上海华虹集成电路有限责任公司 | 将Nandflash的物理块按无效页数量进行排序的方法 |
CN105183660B (zh) * | 2012-03-23 | 2018-07-13 | 群联电子股份有限公司 | 数据读取方法、存储器控制器与储存装置 |
TWI448891B (zh) * | 2012-09-06 | 2014-08-11 | Silicon Motion Inc | 資料儲存裝置與快閃記憶體控制方法 |
US9244833B2 (en) | 2012-05-30 | 2016-01-26 | Silicon Motion, Inc. | Data-storage device and flash memory control method |
CN104424110B (zh) * | 2013-09-10 | 2017-11-14 | Lsi公司 | 固态驱动器的主动回收 |
KR102225618B1 (ko) * | 2014-09-30 | 2021-03-12 | 한화테크윈 주식회사 | 실패 시나리오로부터 기록된 데이터의 시간 관련 메타데이터의 공간 효율적인 복구 |
CN106326134B (zh) * | 2015-06-30 | 2019-10-01 | 华为技术有限公司 | Ftl地址映射的方法及装置 |
CN107632943B (zh) * | 2017-08-30 | 2020-09-11 | 记忆科技(深圳)有限公司 | 一种固态硬盘数据保护的方法及固态硬盘 |
CN110633224A (zh) * | 2018-06-01 | 2019-12-31 | 深圳大心电子科技有限公司 | 逻辑转实体表更新方法及存储控制器 |
CN112286721A (zh) * | 2019-07-23 | 2021-01-29 | 慧荣科技股份有限公司 | 瞬间断电回复处理方法及计算机可读取存储介质以及装置 |
CN112764670A (zh) * | 2019-11-04 | 2021-05-07 | 深圳宏芯宇电子股份有限公司 | 闪存设备及闪存管理方法 |
CN113223584A (zh) * | 2021-05-26 | 2021-08-06 | 合肥康芯威存储技术有限公司 | 一种存储器及其数据读取方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101176074A (zh) * | 2005-12-09 | 2008-05-07 | 松下电器产业株式会社 | 非易失性存储器件,写入数据的方法,和读出数据的方法 |
CN101187898A (zh) * | 2006-11-20 | 2008-05-28 | 三星电子株式会社 | 管理非易失性存储器的设备和方法 |
CN101329656A (zh) * | 2008-05-06 | 2008-12-24 | 无锡紫芯集成电路***有限公司 | 一种Nand-Flash存储***的管理方法 |
-
2009
- 2009-01-23 CN CN2009100098723A patent/CN101788955B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101176074A (zh) * | 2005-12-09 | 2008-05-07 | 松下电器产业株式会社 | 非易失性存储器件,写入数据的方法,和读出数据的方法 |
CN101187898A (zh) * | 2006-11-20 | 2008-05-28 | 三星电子株式会社 | 管理非易失性存储器的设备和方法 |
CN101329656A (zh) * | 2008-05-06 | 2008-12-24 | 无锡紫芯集成电路***有限公司 | 一种Nand-Flash存储***的管理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101788955A (zh) | 2010-07-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101788955B (zh) | 闪存数据的存取方法及其储存***与控制器*** | |
CN101625897B (zh) | 用于快闪存储器的数据写入方法、储存***与控制器 | |
CN100487632C (zh) | 双媒体存储装置 | |
CN101169760B (zh) | 电子硬盘的存储空间的管理方法 | |
US8234466B2 (en) | Flash memory storage system applying SLC NAND flash memory and MLC NAND flash memory and data writing method thereof | |
US8131911B2 (en) | Data writing method, and flash storage system and controller using the same | |
CN101571832B (zh) | 数据写入方法及使用该方法的快闪存储***与其控制器 | |
US20100042774A1 (en) | Block management method for flash memory, and storage system and controller using the same | |
CN101640069B (zh) | 用于闪速存储器的平均磨损方法与平均磨损*** | |
CN101556555B (zh) | 用于闪存的区块管理方法、其控制器与储存*** | |
CN107590080B (zh) | 映射表更新方法、存储器控制电路单元及存储器存储装置 | |
US8074128B2 (en) | Block management and replacement method, flash memory storage system and controller using the same | |
CN101661431B (zh) | 用于快闪存储器的区块管理方法、快闪储存***及控制器 | |
CN101957797A (zh) | 闪速存储器逻辑区块管理方法及其控制电路与储存*** | |
CN101630233A (zh) | 用于闪存的数据存取方法、储存***与控制器 | |
CN101727397B (zh) | 区块管理与更换方法、闪存储存***及其控制器 | |
CN102866861B (zh) | 闪存储存***、闪存控制器与数据写入方法 | |
CN102200946B (zh) | 资料存取方法、记忆体控制器与储存*** | |
CN102800357A (zh) | 程序码载入与存取方法、存储器控制器与存储器储存装置 | |
CN102591738B (zh) | 数据管理方法、存储器控制器与嵌入式存储器储存装置 | |
CN102467459B (zh) | 数据写入方法、存储器控制器与存储器储存装置 | |
CN101957799B (zh) | 用于闪速存储器的数据写入方法及其控制电路与存储*** | |
CN102650971A (zh) | 存储器管理方法、存储器控制器与存储器储存装置 | |
CN110442300B (zh) | 整理指令记录方法、存储器控制电路单元与存储装置 | |
CN102043588B (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 |