CN101464834B - 闪存数据写入方法及使用此方法的控制器 - Google Patents
闪存数据写入方法及使用此方法的控制器 Download PDFInfo
- Publication number
- CN101464834B CN101464834B CN2007103001909A CN200710300190A CN101464834B CN 101464834 B CN101464834 B CN 101464834B CN 2007103001909 A CN2007103001909 A CN 2007103001909A CN 200710300190 A CN200710300190 A CN 200710300190A CN 101464834 B CN101464834 B CN 101464834B
- Authority
- CN
- China
- Prior art keywords
- block
- flash memory
- writing
- data
- unit
- 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
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Abstract
本发明一种闪存数据写入方法及使用此方法的控制器。此闪存数据写入方法包括:以一写入单位的长度将欲写入的新数据分割为至少一个子数据;在闪存中从备用区块中提取一区块作为一替换区块,用以替换欲写入新数据的数据区块;将子数据之中具写入单位长度的子数据以写入单位为单位来连续地写入至替换区块中;以及将子数据之中不具写入单位长度的子数据储存在暂存区中。通过暂存不满一写入单位的子数据于暂存区并且之后与后续写入数据一起写入闪存可有效提升闪存写入的效率。
Description
技术领域
本发明涉及一种资料写入方法,且特别是有关于一种闪存数据写入方法及使用此方法的闪存控制器。
背景技术
数码相机、手机相机与MP3在这几年来的成长十分迅速,使得消费者对储存媒体的需求也急速增加,由于闪存(Flash Memory)具有数据非挥发性、省电、体积小与无机械结构等的特性,适合可携式应用,最适合使用于这类可携式由电池供电的产品上。除了可携式产品内建内存需要之外,对于小型记忆卡与随身碟等外接式产品来说,每个人可能同时拥有多个随身碟与小型记忆卡,所以市场规模较那些设备更大。因此,近年闪存产业成为电子产业中相当热门的一环。
闪存依其记忆胞可分为单层记忆胞(Single Level Cell,SLC)与非(NAND)闪存与多层记忆胞(Multi Level Cell,MLC)NAND闪存。闪存通常实质上分割为多个实体区块(physical block),为方便说明以下将实体区块简称为区块。一般而言,在闪存中区块为抹除的最小单位。亦即,每一区块含有最小数目之一并被抹除之记忆胞。每一区块通常会分割为数个页(page)。页通常为程序(program)的最小单元,换言之,页为写入数据或读取数据的最小单元。但要特别说明的是于有些不同的闪存设计,最小的程序单位也可为一个扇区(sector)大小,即一页中有多个扇区并以一扇区为程序的最小单元,例如使用程序次数(number of program,NOP)为4之技术的SLC与非闪存。
图1A~1E是根据现有技术绘示闪存100及其运作的详细方块图。
图1A是绘示闪存一般的组成与运作。请参照图1A,为了有效率地程序(即写入与抹除)闪存100,闪存100的区块会在逻辑上分组为***区块102、数据区块104与备用区块106。
***区块102是用以记录***数据,***数据例如是关于闪存100的区域(zone)数、每一区域的区块数、每一区块的页数、逻辑实体对映表(mapping table)等。一般来说,闪存100中数据区块104会占90%以上。
数据区块104用以储存使用者的数据,一般来说就是主机(未绘示)所操作之逻辑区块地址所对应的区块。
备用区块106是用以替换数据区块104的区块,因此备用区块106为空的区块,即无记录数据或标记为已没用的无效数据。具体来说,由于若要对已写过资料位置再次写入资料时,必须先执行抹除的动作。闪存写入单位为页,而抹除单位为区块。一个抹除的单位大于写入的单位,这表示若要执行区块抹除动作,必须先将欲抹除区块中的有效页复制至其它区块后才可进行。因此,当欲在数据区块104之中已写过资料位置的区块M中写入新数据时,一般会从备用区块106之中提取一区块S,然后将区块M中的有效数据复制至区块S且将新数据写入区块S后,将区块M抹除后关联为备用区块106同时将区块S关联为数据区块104(如图1A所示)。
一般来说,为了更有效率地使用闪存100,区块在逻辑上会更分为替换区块108。
图1B是绘示闪存的另一种运作方式,而图1C是绘示图1B的详细运作示意图。
请参照图1B与1C,替换区块108是用以准备替换资料区块104的区块。更详细而言,当从上述备用区块106之中提取区块C来取代数据区块104之中的区块M时,会将新数据入至区块C,但不会立刻将区块M中的所有有效数据搬移至区块C而抹除区块M。具体来说,会将区块M中欲写入地址之前的有效数据(即页P0与P1)复制至区块C(如图1C的(a)),并且将新数据(即区块C的页P2与P3)写入至C区块(如图1C的(b))。此时,将含有部分的有效旧数据与所写入新数据的区块C暂时地关联为替换区块108。此是因为,区块M中的有效数据有可能在下个操作中变成无效,因此立刻将区块M中的所有有效数据搬移至实体区块C可能会造成无谓的搬移。在此案例中,在逻辑区块地址与实体区块地址的对映上会记录多个实体区块地址对应到一个逻辑区块地址的情况,也就是区块M与区块C的内容整合起来才是所对映逻辑区块的内容。之后,当需要将区块M与区块C的内容真正合并时,才将区块M与区块C整并为一区块,由此提升区块的使用效率。例如,如图1C的(c)所示,当进行整并时,区块M中剩余的有效数据(即页P4~PN)会复制至区块C,然后将区块M抹除并关联为备用区块106,同时,将区块C关联为数据区块104,由此完成合并。
在上述例子中,当进行合并时更新的数据是刚好属于一整个完整的页面,因此可直接将区块M中剩余的有效数据写入至区块C中所更新数据的后面页。然而,更新的数据亦可能非整个完整页面。图1D是绘示闪存的另一种运作方式,而图1E是绘示图1D的详细运作示意图。
在图1D与1E的例子中,由于区块M中剩余有效数据是非属于完整页面(即部分旧数据是与部分新数据是属于同一页面,如图1E的页P3所示),因此当进行整并时会从备用区块106之中提取一空白区块S,并且将区块M与区块C的有效数据复制于此区块S中,并且将区块M与区块C抹除后关联为备用区块106而将此区块S关联为数据区块104,由此完成合并。需要提取区块S来合并区块M与区块C的原因是因为一页仅能程序一次(区块C的页P3已被程序)的物理限制下,必须提取空的区块(如图1C的区块S)来重新完整地写入数据。
在使用多层记忆胞(Multi Level Cell,MLC)NAND闪存的案例中,MLC NAND闪存1页中可包括4个扇区(sector),即1页中有4个512bytes的扇区,共2Kbytes,其中扇区为档案***中所使用最小的储存单位。如上所述,闪存在写入时是以页为写入单位,因此在使用MLC NAND闪存的情况下每次必须程序4个扇区。换言之,在上述图1E所示的例子中,虽然新资料未写满1整个页(如区块C的页P3),但程序时依然必须程序整个区块C的页P3。然而,倘若在进行上述的区块整并之前接收到下一个写入指令并且指示欲变更的数据是接续前次变更的数据(即接续在区块C的页P3中的更新数据之后)时,由于已在图1E的步骤(c)中已对区块C的页P3程序,因此必须再重新提取一个空的区块来再次复制区块C之页P0-P2的数据然后将区块C之页P3的数据与更新数据一起写入。
由于闪存物理特性的关系,每次欲在区块中写入数据时必须先对此区块进行抹除的动作。然而,原先区块上可能还存有其有效数据,因此在抹除前必须进行有效数据的搬移(即复制)。因此上述写入小量数据的动作(如图1E所示)会造成之后无谓的抹除与程序的次数,而使得储存装置的效率降低,并且对于区块来说会增加不必要的抹除而降低闪存的寿命(即闪存的抹除次数是有限的)。
发明内容
本发明目的是提供一种闪存的数据写入方法,其可将不满一单位的多个连续数据一起写入,以提升闪存写入的效率。
本发明另一目的是,提供一种闪存控制器,其所执行的数据写入方法可将不满一单位的多个连续数据一起写入,以提升闪存写入的效率。
本发明提出一种闪存的数据写入方法。此方法包括:a.以一写入单位的长度将欲写入的新数据分割为至少一个子数据;b.在闪存中从多个备用区块中提取一区块作为一替换区块,用以替换欲写入新数据的数据区块;c.将子数据之中具写入单位长度的子数据以写入单位为单位来连续地写入至替换区块中;以及d.将子数据之中不具写入单位长度的子数据储存在暂存区中。
在本发明之一实施例中,上述的数据写入方法更包括将数据区块中的有效数据以写入单位为单位来写入至替换区块。
在本发明之一实施例中,上述的数据写入方法更包括判断欲写入的后续新数据为接续此新数据时,则以写入单位的长度将在暂存区中的子数据加上此后续新数据一起分割为至少一个子数据并且执行步骤c。
在本发明之一实施例中,上述的数据写入方法更包括判断后续新数据不是接续该新资料时,则将在暂存区中的子数据与数据区块中的有效数据以写入单位为单位来一起写入至替换区块。
在本发明之一实施例中,上述的闪存为MLC(Multi Level Cell)与非(NAND)闪存,其中MLC NAND闪存的区块分别包括上页(upper pages)与下页(lower pages),其中暂存区仅使用MLC NAND闪存中区块的下页来储存数据,并且下页的写入速度快于上页的写入速度。
在本发明之一实施例中,上述的数据写入方法还包括建立页查询表,其用以记录下页的实体地址。
在本发明之一实施例中,上述的写入单位包括至少一个页。
在本发明之一实施例中,上述的闪存的数据写入方法更包括在闪存所属的储存装置断电前将暂存于暂存区的数据写入至替换区块。
本发明提出一种闪存控制器,其适用于具有至少一个闪存的一储存装置,其中闪存包括多个数据区块与多个备用区块。此闪存控制器包括微处理单元、闪存接口、缓冲存储器与内存管理模块。微处理单元是用以控制闪存控制器的整体运作。闪存接口是电性连接至微处理单元并且用以存取闪存。缓冲存储器是电性连接至微处理单元并且用以暂时地储存数据。内存管理模块是电性连接至微处理单元并且用以管理闪存,其中内存管理模块会以一写入单位的长度将欲写入的新数据分割为至少一个子数据,内存管理模块会在闪存中从多个备用区块中提取一区块作为一替换区块,用以替换欲写入新数据的数据区块,内存管理模块会将子数据之中具写入单位长度的子数据以写入单位为单位来连续地写入至替换区块中,以及内存管理模块会将子数据之中不具写入单位长度的子数据储存在暂存区中。
在本发明之一实施例中,上述的内存管理模块会将欲写入新数据的数据区块中的有效数据以写入单位为单位来写入至替换区块。
在本发明之一实施例中,上述的内存管理模块在判断欲写入的后续新数据为接续此新数据时,会以写入单位的长度将在暂存区中的子数据加上此后续新数据一起分割为至少一个子数据并且将其中具写入单元长度的子数据以写入单位为单位来连续地写入至替换区块中。
在本发明之一实施例中,上述的内存管理模块在判断后续新数据不是接续该新资料时,会将在暂存区中的子资料与欲写入新数据的数据区块中的有效数据以写入单位为单位来一起写入至替换区块。
在本发明之一实施例中,上述的暂存区为设置于闪存控制器内部或外部的随机存取内存、磁阻式内存或相变化内存。
在本发明之一实施例中,上述的闪存为SLC(Single Level Cell)与非(NAND)闪存。
在本发明之一实施例中,上述的闪存为MLC(Multi Level Cell)与非(NAND)闪存,其中MLC NAND闪存的区块分别包括上页(upper pages)与下页(lower pages),其中暂存区仅使用MLC NAND闪存中区块的下页来储存数据,并且下页的写入速度快于上页的写入速度。
在本发明之一实施例中,上述的数据写入方法更包括建立页查询表,其用以记录下页的实体地址。
在本发明之一实施例中,上述的写入单位包括至少一个页。
在本发明之一实施例中,上述的储存装置为USB随身碟、快闪记忆卡或固态硬盘。
在本发明之一实施例中,上述的内存管理模块在储存装置断电前会将暂存于暂存区的数据写入至替换区块。
本发明提出一种闪存模块的数据写入方法,闪存模块是由多个闪存封装而成,闪存模块的数据写入方法包括:a.以写入单位的长度将欲写入的新数据分割为至少一个子数据;b.在每一闪存中从多个备用区块中提取区块作为替换区块,用以替换欲写入新数据的数据区块;c.将至少一个子数据之中具长度的子数据以写入单位为单位来同时连续地写入至每一闪存的替换区块中;以及d.将至少一个子数据之中不具长度的子数据储存在暂存区中,其中写入单位是由内存模块中每一闪存中的一页所构成。
在本发明之一实施例中,上述之闪存为MLC(Multi Level Cell)与非(NAND)闪存,其中MLC NAND闪存的区块分别包括上页(upper pages)与下页(lower pages),其中暂存区仅使用MLC NAND闪存中区块的下页来储存数据,并且下页的写入速度快于上页的写入速度。
本发明提出一种闪存控制器,其适用于具有闪存模块的储存装置,其中闪存模块具有多个闪存且每一闪存包括多个数据区块与多个备用区块。此闪存控制器包括微处理单元、闪存接口、缓冲存储器与内存管理模块。微处理单元是用以控制闪存控制器的整体运作。闪存接口是电性连接至微处理单元并且用以存取闪存模块。缓冲存储器是电性连接至微处理单元并且用以暂时地储存数据。内存管理模块是电性连接至微处理单元并且用以管理闪存模块,其中内存管理模块会以写入单位的长度将欲写入的新数据分割为至少一个子数据,内存管理模块会在每一闪存中从多个备用区块中提取区块作为替换区块,用以替换欲写入新数据的数据区块,内存管理模块会将至少一个子数据之中具长度的子数据以写入单位为单位来同时连续地写入至每一闪存的替换区块中,以及内存管理模块会将至少一个子数据之中不具长度的子数据储存在暂存区中,其中写入单位是由内存模块中每一闪存中的一页所构成。
在本发明之一实施例中,上述之暂存区为设置于闪存控制器内部或外部的随机存取内存、或磁阻式内存或相变化内存。
在本发明之一实施例中,上述之闪存为MLC(Multi Level Cell)与非(NAND)闪存,其中MLC NAND闪存的区块分别包括上页(upper pages)与下页(lower pages),其中暂存区仅使用MLC NAND闪存中区块的下页来储存数据,并且下页的写入速度快于上页的写入速度。
本发明提出一种SLC(Single Level Cell)与非(NAND)闪存的数据写入方法。此方法包括:a.以写入单位的长度将欲写入的新数据分割为至少一个子数据;b.在该SLC与非闪存中从多个备用区块中提取区块作为替换区块,用以替换欲写入该新数据的数据区块;c.将子数据之中具上述长度的子数据以写入单位为单位来连续地写入至替换区块中;以及d.将子数据之中不具上述长度的子数据储存在暂存区中,其中SLC与非的每一页可程序4次并且每一页的容量大于2千字节。
本发明所提出的数据写入方法与执行此方法的控制器因采用暂存区将将少于一个写入单位的数据累积可写满一个写入单位再写入替换区块,由此提升整体的程序效率。
为让本发明之上述特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下。
附图说明
图1A~图1E是根据现有技术绘示闪存及其运作的详细方块图;
图2A是根据本发明第一实施例绘示使用闪存储存装置的主机;
图2B是绘示图2A所示闪存控制器的详细方块图;
图2C是根据本发明另一实施例绘示控制器的详细方块图;
图3A与3B是根据本发明第一实施例绘示闪存的数据写入方法的流程图;
图4是根据本发明第一实施例绘示资料写入的示意图;
图5是根据本发明另一实施例绘示资料写入的示意图;
图6是根据本发明第二实施例绘示闪存模块的详细方块图;
图7是根据本发明第三实施例绘示闪存模块的详细方块图。
【主要组件符号说明】
100:闪存
102:***区块
104:资料区块
106:备用区块
M、C、S:区块
200:主机
202:微处理器
204:随机存取内存
206:输入/输出装置
208:***总线
210:数据传输接口
220:内存储存装置
222、222’:控制器
222a:内存管理模块
222b:闪存界面
222c:主机传输接口
222d:缓冲存储器
222f:错误校正模块
222g:电源管理模块
222e:微处理单元
224:闪存模块
S301、S303、S305、S307、S309、S311、S313、S315、S317、S319、S321、S323、S325、S327、S329、S331、S333、S335:数据写入方法的步骤
400-1、400-2...400-(N-1)、400-N:子资料
401-1、401-2、401-(N-1):写入动作
401-N:暂存动作
T:暂存区
224’:闪存模块
610:第一闪存
620:第二闪存
630:数据总线
224’’:闪存模块
702、704:缓冲器
710:第一储存单元
712:第一闪存
714:第二闪存
716:第一子总线
718:第二子总线
720:第二储存单元
722:第三闪存
724:第四闪存
726:第三子总线
728:第四子总线
730:数据总线
具体实施方式
必须了解的是,本发明实施例在描述闪存的运作时使用“提取”、“搬移”、“交换”等词来操作闪存区块是逻辑上的概念。也就是说,闪存区块的实际位置并未更动,而是逻辑上对闪存区块进行操作。
闪存储存***一般而言包括闪存与控制器(控制芯片)。通常闪存储存***会与主机***一起使用,以使主机***可将数据写入至闪存储存***或从闪存储存***中读取数据。另外,亦有闪存储存***是包括嵌入式闪存与可执行于主机***上以实质地作为此嵌入式闪存之控制器的软件。
『第一实施例』
图2A是根据本发明第一实施例绘示使用闪存储存装置的主机。
请参照图2A,主机200一般包括微处理器202、随机存取内存(randomaccess memory,RAM)204、输入/输出(input/output,I/O)装置206、***总线208以及数据传输总线210。必须了解的是,主机200可更包括其它组件,例如显示器装置或网络装置等。
主机200可以是计算机、数码相机、摄影机、通信装置、音讯播放器或视讯播放器等***。一般而言,主机200可实质地为可储存数据的任意***。
在本发明实施例中闪存储存装置220是透过数据传输接口210与主机200的其它组件电性连接。通过微处理器202、随机存取内存204与输入/输出装置206的处理可将数据写入至闪存储存装置220或从闪存储存装置220中读取数据。闪存储存装置220一般包括控制器222与闪存模块224。
控制器222用以控制闪存储存装置220的整体运作,例如数据的储存、读取与抹除等。
闪存模块224是电性连接控制器222并且用以储存数据。在本实施中闪存模块224为单个MLC NAND闪存。
在本发明实施例中,闪存储存装置220为随身碟。但必须了解的是,本发明不限于此。在本发明另一实施例中,闪存储存装置220亦可以是记忆卡或固态硬盘(Solid State Drive,SSD)。
图2B是绘示图2A所示闪存控制器的详细方块图。
控制器222包括内存管理模块222a、闪存接口222b、缓冲存储器222d与微处理单元222e。
内存管理模块222a是电性连接微处理单元222e并且用以管理闪存模块224,例如执行平均磨损(wear leveling)方法、坏块管理、维护对映表(mapping table)等。特别是,内存管理模块222a会执行根据本发明实施例的资料写入方法(以下将配合图3详细说明)。
闪存接口222b是电性连接微处理单元222e并且用以存取闪存模块224,也就是主机200欲写入至的数据会经由闪存接口222b转换为闪存模块224所能接受的格式。
缓冲存储器222d是电性连接微处理单元222e并且用以暂时地储存***数据(例如对映表)或者主机所读取或写入的数据。在本实施例中,缓冲存储器222d为静态随机存取内存(static random access memory,SRAM)。然而,必须了解的是,本发明不限于此,动态随机存取内存(DRAM)、磁阻式内存(MRAM)、相变化内存(PRAM)或其它适合的内存亦可应用于本发明。
微处理单元222e用以控制控制器222的整体运作。
在本发明另一实施例中,控制器更包括主机传输接口222c、程序内存222h、错误校正模块222f与电源管理模块222g(如图2C的控制器222’)。
主机传输接口222c是电性连接微处理单元222e并且用以与主机200通讯,主机传输接口222c可以是USB接口、IEEE 1394接口、SATA接口、PCI Express接口、MS接口、MMC接口、SD接口、CF接口或IDE接口。
程序内存222h是电性连接微处理单元222e并且用以储存控制器所执行用以控制闪存储存装置220的程序代码。
错误校正模块222f是电性连接微处理单元222e并且用以计算错误校正码(error correcting code)来检查与校正主机所读取或写入的数据。
电源管理模块222g是电性连接微处理单元222e并且用以管理闪存储存装置220的电源。
图3A与3B是根据本发明第一实施例绘示闪存的数据写入方法的流程图,并且图4是根据本发明第一实施例绘示资料写入的示意图。以下将配合图3A、3B与图4详细说明根据本发明实施例的闪存资料写入方法。
在图3A的步骤S301中控制器222会从主机200中接收一主机写入命令以及欲写入的新数据。具体来说。控制器222的微处理单元222e会接收此主机写入命令,并且之后控制内存管理模块222a、闪存接口222b与缓冲存储器222d来依据此命令的内容来执行。之后,在步骤S303中会从备用区块之中提取一区块作为替换区块C(如图4所示)。关于在闪存中写入资料时提取一个空区块(即替换区块C)进行写入动作以取代数据区块已于配合图1A~1E描述如上,在此不再重复描述。
在步骤S305中,会以写入单位的长度将欲写入的新数据分割为多个子数据(例如图4所示的子数据400-1、400-2...400-(N-1)与400-N)。然而,必须了解的是当新数据的长度小于写入单位时,则全部欲写入的数据就是唯一的子数据。在本发明实施例中,控制器222对闪存执行写入指令时每次会程序(program)一个固定写入单位长度的数据,而每个写入指令会执行一个固定的写入单位时间。在本发明中,写入单位会依据不同闪存设计的架构而有所不同。在本发明实施例中,闪存储存装置220的闪存模块224为单个MLC NAND闪存,其写入单位设计为一个页的长度,其包括4个扇区。值得一提的是,在本实施例中,虽然是以MLC NAND闪存为例来作说明。但必须了解的是,本发明不限于此,例如闪存模块224亦可为SLC与非闪存。
在步骤S307中会依序地判断所分割子数据的长度是否为写入单位长度。由于欲写入的新数据是以写入单位的长度来分割,逻辑上也可仅判断最后一段数据(例如数据400-N)的长度是否为写入单位长度。因此,在本发明另一实施例中,亦可仅对最后一段数据进行判断。
倘若在步骤S307中判断子数据的长度为写入单位长度时,则在步骤S309中会将此子数据以写入单位为单位来连续地写入至替换区块中(例如图4所示的写入动作401-1、401-2...与401-(N-1))。
倘若在步骤S307中判断子数据的数据长度不为写入单位的长度时,则在步骤S311中会将此子数据储存在一暂存区中。换句话说,在步骤S311中不会将无法写满整个写入单元的子数据(即所谓的少量数据)写入至替换区块C中,取而代之的是将此少量的子数据暂时地储存(如图4的暂存动作403-N)在暂存区T中。在本发明实施例中,此暂存区T为闪存模块224中一瞬时区块的下页(lower pages),其中瞬时区块是闪存模块224中未使用的区块。例如,瞬时区块是从备用区块之中提取,下页为闪存一区块中写入速度较快的多页,又可以称为fast pages。
在本发明实施例中闪存模块224是MLC NAND闪存,而MLC NAND闪存的区块的程序可分为多阶段。例如,以4层记忆胞为例,区块的程序可分为2阶段。第一阶段是下页(lower page)的写入部分,其物理特性类似于单层记忆胞(Single Level Cell,SLC)NAND闪存,在完成第一阶段之后才程序上页(upper page)。在其程序的过程中下页的写入速度会快于上页。特别是,上页与下页具有耦合关系。也就是说,在程序上页时,若发生异常,可能造成下页的不稳定(即数据可能遗失)。这也是MLC NAND闪存的可靠度低于SLC与非闪存的原因。类似地,在8层记忆胞或16层记忆胞的案例中,记忆胞包括更多个页并且会以更多阶段来写入。在此,将写入速度最快的页面称为下页,其它写入速度较慢的页面统称为上页。例如,上页包括具有不同写入速度的多个页。在本发明实施例中,仅使用区块的下页作为上述暂存区T可提高数据写入速度与数据的可靠度。
在本发明另一实施例中,数据写入还包括建立一页查询表,其用以记录闪存中下页的实体地址。
虽然在本发明实施例中是以闪存模块224中瞬时区块(即未使用区块)的下页来作为暂存区T。然而,本发明不限于此,其它适合的储存媒体亦可作为此暂存区。例如,在本发明另一实施例中是在闪存储存装置220中独立于控制器222外或于控制器222内再设置一随机存取内存(randomaccess memory,RAM),特别是动态随机存取内存(dynamic RAM,DRAM)来作为此暂存区T。使用DRAM作为暂存区的优点是可以减少闪存的写入抹除次数以延长闪存的寿命,并且DRAM的存取速度较闪存快,可提高储存装置的执行效能。
另外,在本发明另一实施例中是在闪存储存装置220中独立于控制器222外或于控制器222内再设置一磁阻式内存(Magnetoresistive RAM,MRAM)或一相变化内存(Phase change RAM,PRAM)来作为此暂存区T。使用MRAM作为暂存区的优点是以磁电阻特性储存数据具有低耗电、非挥发性与半永久特性,并且可以减少闪存的写入抹除次数以延长闪存的寿命。
之后,在步骤S313中会判断是否所有子数据都已处理。倘若在步骤S313中判断还有子数据未处理时则会执行步骤S307直到所有子数据都处理完为止。
在本发明另一实施例中,数据写入方法还包括在替换区块中写入新数据之前会将所欲写入地址之前的有效旧数据从数据区块复制至替换区块(如图5的(a))。
在本发明实施例中,控制器222执行完步骤S313则暂时完成此次写入命令。在本发明另一实施例中,倘若在此瞬时下将停止闪存储存装置220的运作时,则会将暂存区T的子数据与以及数据区块中其它有效旧数据以写入单位为单位来一起写入至替换区块中(如图5的(c))。之后,将此数据区块抹除成为备用区块并且将此替换区块关联为数据区块(相同于图1B所示的整并)。
在图3B中是绘示在图3A所示瞬时下接受到主机写入命令时的处理流程图。在步骤S315中会判断主机写入命令欲写入的接续新数据的地址是否接续前次写入新数据的地址。
倘若在步骤S315中判断接续新数据的地址是接续前次写入新数据的地址时,则在步骤S317中会判断暂存区中是否存有暂存的子资料。
倘若在步骤S317中判断存有暂存的子数据时,则在步骤S319中会将暂存区中的子数据与接续新数据一起以写入单位的长度来分割为至少一个子数据(类似步骤S305)。
倘若在步骤S317中判断暂存区中无任何子数据时,则在步骤S321中会将此接续新数据以写入单位的长度来分割为至少一个子数据(类似步骤S305)。在步骤S319与S321之后会执行步骤S329、S331、S333与S335,其分别相同于图3A步骤S307、S309、S311与S313。
在步骤S329中会依序地判断所分割子数据的长度是否为写入单位长度。倘若在步骤S329中判断子数据的长度为写入单位长度时,则在步骤S331中会将此子数据以写入单位为单位来连续地写入至替换区块中。反之,则在步骤S333中会将此子数据储存在一暂存区中。之后,在步骤S335中会判断是否所有子数据都已处理。倘若还有子数据未处理时则会执行步骤S329直到所有子数据都处理完为止。
倘若在步骤S315中判断欲写入的接续新数据的地址不是接续前次写入新数据的地址时,则在步骤S323中会判断暂存区中是否存有子资料。
倘若在步骤S323中存有暂存的子数据时,则在步骤S325中会将暂存区的子数据与以及数据区块中其它的有效旧数据以写入单位为单位来一起写入至替换区块中(如图5的(c))。
倘若在步骤S323中判断暂存区中无子数据时,则在步骤S327中会将数据区块中其它的有效旧数据以写入单位为单位来一起写入至替换区块中。之后,控制器222的内存管理模块222a会将此数据区块抹除成为备用区块并且将此替换区块关联为数据区块(如图1B所示)。
值得一提的是,在闪存中逻辑区块所对映的区块是处于图3A所示的状态时,当控制器222执行主机的写入命令时就会如图3B所示的步骤,以判断欲写入的资料是否接续此区块的目前更新资料。
在本发明另一实施例中,当暂存区是以挥发性内存(例如DRAM)来实作时,闪存的数据写入方法会包括在闪存储存装置断电前将暂存于暂存区的数据写入至替换区块。
此外,在本发明实施例中是以一组母子区块(即一资料区块与一替换区块)为例进行说明。然而,必须了解的是本发明不限于此,在闪存储存装置220运作期间,控制器222可依据缓冲存储器222d中可用的储存空间来记录多组母子区块的关系以更有效率使用闪存区块。具体来说,当缓冲存储器222d中可储存多组母子区块的关系时,当上述步骤S315中判断主机写入命令欲写入数据的地址不是接续前次写入数据(即缓冲存储器222d中母子区块的更新数据)的地址时,则仅需要整并其中一组母子区块关系,而***下次写入数据时有可能会写入数据至目前所记录的任何一组母子区块,此时则可提高闪存区块的使用效率。
『第二实施例』
在第一实施例中闪存储存装置的闪存是以单个MLC NAND闪存为例进行说明,因此其写入单位设计为一个页。而在本发明第二实施例中是以两个SLC与非闪存封装成闪存储存装置的闪存模块为例。
本发明第二实施例的闪存储存装置方块图与闪存的运作与数据写入方法是相同于第一实施例(如图2A、图2B、图3与图4),因此,在此不再重复描述。以下仅针对第二实施例与第一实施例不同之处进行说明。
图6是根据本发明第二实施例绘示闪存模块的详细方块图。
请参照图6,闪存模块224’包括第一闪存610、第二闪存620与数据总线630。在此,第一闪存610具有页P0~P1023,而第二闪存具有页P1024~P2047。第一闪存610与第二闪存620交错(interleave)电性连接至数据总线630,并且数据总线630用以连接至控制器222。
在上述闪存架构下,当在闪存模块600中写入数据时,则会同时对第一闪存610与第二闪存620进行程序,例如同时对第一闪存610的页0与第二闪存620的页1024。因此,在第二实施例中会以两个页面为一写入单位来执行上述数据写入方法(如图3与4所示)。
虽然目前已有技术可在使用SLC与非闪存的状况下对一个页进行4次程序(即程序次数(number of program,NOP)为4),因此当一个页为2K bytes时,每次刚好可程序4个扇区,而不会发生上述问题。然而,由于半导体技术的发展,使得每一区块的储存容量越来越大(例如一个页为4K bytes)。因此在使用NOP=4的SLC与非闪存例子中,每次程序亦必需程序1K bytes。因此,使用本实施例所述的方法,亦可有效解决在此类SLC与非闪存中写入小量数据(数据量少于写入单位的数据)时效率降低与寿命减少的问题。
『第三实施例』
第二实施例是以两个SLC与非闪存封装成的闪存模块为例来进行说明。然而,本发明亦可应用于使用更多闪存所封装的闪存模块。在本发明第三实施例中是以四个SLC与非闪存封装成的闪存模块为例。
本发明第三实施例的闪存储存装置方块图与闪存的运作与数据写入方法是相同于第二实施例,因此,在此不再重复描述。以下仅针对第三实施例与第二实施例不同之处进行说明。
图7是根据本发明第三实施例绘示闪存模块的详细方块图。
请参照图7,闪存模块700包括第一储存单元710、第二储存单元720与数据总线730。
第一储存单元710包括第一闪存712、第二闪存714、第一子总线716、第二子总线718与缓冲器702。第二储存单元包括第三闪存722、第四闪存724、第三子总线726、第四子总线728与缓冲器704。
第一储存单元710与第二储存单元720交错电性连接至数据总线730,并且数据总线730是连接至控制器222。
在第一储存单元710中第一子总线716与第二子总线718是以平行(parallel)方式将第一闪存712及第二闪存714与缓冲器702电性连接,并且缓冲器702是电性连接至数据总线730。在第二储存单元720中第三子总线726与第四子总线728是以平行方式将第三闪存722及第四闪存724与缓冲器704电性连接,并且缓冲器704电性连接至数据总线730。
在上述闪存架构下,当在闪存模块700中写入数据时,则会同时对第一储存单元710与第二储存单元720进行程序,并且在第一储存单元710与第二储存单元720中分别会平行程序第一闪存712与第二闪存714以及第三闪存722与第四闪存724。因此,在第三实施例中会以四个页面为一写入单位来执行上述数据写入方法(如图3与4所示)。
值得一提的是,第二实施例与第三实施例是以多个SLC与非闪存为例进行说明。然而必须了解的是,本发明另一实施例中亦可应用于使用多个MLC NAND闪存所封装的闪存模块。
第二实施例与第三实施例仅是以两个与四个来说明以交错与平行电性连接方式封装的范例。必须了解的是,本发明不限于上述的组合,在不脱离本发明精神下,闪存模块可使用更多个闪存或以不同的交错与平行电性连接方式来封装。
综上所述,本发明所提出的数据写入方法能够将少于一个写入单位的数据暂时不写入至替换区块中,由此可以减少不必要的区块抹除,由此降低区块的抹除次数而可延长闪存的寿命。此外,将少于一个写入单位的数据累积可写满一个写入单位再写入替换区块可避免执行多个写入单位时间于不满一个写入单位的数据上,由此提升整体的程序效率。再者,由于本发明所提出的数据写入方法可适用于不同的闪存架构(即可使用单个或多个闪存的闪存模块,而此闪存可为SLC与非快闪记体或MLC NAND闪存),因此可提升管理的便利性。
虽然本发明已以较佳实施例揭露如上,然其并非用以限定本发明,任何所属技术领域中具有通常知识者,在不脱离本发明之精神和范围内,当可作些许之更动与润饰,因此本发明之保护范围当视后附之申请专利范围所界定者为准。
Claims (14)
1.一种闪存的数据写入方法,其特征在于包括:
a.以一写入单位的长度将欲写入的新数据分割为至少一个子数据;
b.在该闪存中从多个备用区块中提取一区块作为一替换区块,用以替换欲写入该新数据的一数据区块;
c.将该至少一个子数据之中具该长度的子数据以该写入单位为单位来连续地写入至该替换区块中;
d.从该些备用区块中提取一区块,将所提取的该区块的下页作为一暂存区并且将该至少一个子数据之中不具该长度的子数据储存在该暂存区中,其中所提取的该区块的该下页为所提取的该区块中写入速度较快的多页;以及
e.在该闪存所属的一储存装置断电前,将暂存于该暂存区的子数据写入至该替换区块。
2.如权利要求1所述的闪存的数据写入方法,其特征在于,包括将该数据区块中的有效数据以该写入单位为单位来写入至该替换区块。
3.如权利要求1所述的闪存的数据写入方法,其特征在于,包括判断欲写入的后续新数据为接续该新数据时,则以该写入单位的长度将在该暂存区中的子数据加上该后续新数据一起分割为至少一个子数据并且执行步骤c。
4.如权利要求1所述的闪存的数据写入方法,其特征在于,包括判断该后续新数据不是接续该新数据时,则将在该暂存区中的子数据与该数据区块中的有效数据以该写入单位为单位来一起写入至该替换区块。
5.如权利要求1所述的闪存的数据写入方法,其特征在于,包括
建立一页查询表,其用以记录该下页的实体地址。
6.如权利要求1所述的闪存的数据写入方法,其特征在于,该写入单位包括至少一个页。
7.一种闪存控制器,其适用于具有至少一个闪存的一储存装置,其特征在于,该至少一个闪存包括多个数据区块与多个备用区块,该闪存控制器包括:
一微处理单元,用以控制该闪存控制器的整体运作;
一闪存接口,电性连接至该微处理单元并且用以存取该闪存,其中该闪存为一多层记忆胞与非闪存,该多层记忆胞与非闪存的区块分别包括一上页与一下页,并且该些下页的写入速度快于该些上页的写入速度;
一缓冲存储器,电性连接至该微处理单元并且用以暂时地储存数据;以及
一内存管理模块,电性连接至该微处理单元并且用以管理该至少一个闪存,
其中该内存管理模块会以一写入单位的长度将欲写入的新数据分割为至少一个子数据,
该内存管理模块会在该闪存中从该些备用区块中提取一区块作为一替换区块,用以替换欲写入该新数据的数据区块,
该内存管理模块会将该至少一个子数据之中具该长度的子数据以该写入单位为单位来连续地写入至该替换区块中,以及
该内存管理模块会从该些备用区块中提取一区块,将所提取的该区块的该下页作为一暂存区并且使用该暂存区来储存该至少一个子数据之中不具该长度的子数据,其中所提取的该区块的该下页为所提取的该区块中写入速度较快的多页。
8.如权利要求7所述的控制器,其特征在于,该内存管理模块会将欲写入该新数据的数据区块中的有效数据以该写入单位为单位来写入至该替换区块。
9.如权利要求7所述的控制器,其特征在于,该内存管理模块在判断欲写入的后续新数据为接续该新数据时,会以该写入单位的长度将在该暂存区中的子数据加上该后续新数据一起分割为至少一个子数据并且将其中具该长度的子数据以该写入单位为单位来连续地写入至该替换区块中。
10.如权利要求7所述的控制器,其特征在于,该内存管理模块在判断该后续新数据不是接续该新数据时,会将在该暂存区中的子数据与欲写入该新数据的数据区块中的有效数据以该写入单位为单位来一起写入至该替换区块。
11.如权利要求7所述的控制器,其特征在于,该数据写入方法还包括建立一页查询表,其用以记录该些下页的实体地址。
12.如权利要求7所述的控制器,其特征在于,该写入单位包括至少一个页。
13.如权利要求7所述的控制器,其特征在于,该储存装置为一USB随身碟、一快闪记忆卡或一固态硬盘。
14.如权利要求7所述的控制器,其特征在于,该内存管理模块在该储存装置断电前,会将暂存于该暂存区的子数据写入至该替换区块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007103001909A CN101464834B (zh) | 2007-12-19 | 2007-12-19 | 闪存数据写入方法及使用此方法的控制器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007103001909A CN101464834B (zh) | 2007-12-19 | 2007-12-19 | 闪存数据写入方法及使用此方法的控制器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101464834A CN101464834A (zh) | 2009-06-24 |
CN101464834B true CN101464834B (zh) | 2011-01-26 |
Family
ID=40805423
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007103001909A Active CN101464834B (zh) | 2007-12-19 | 2007-12-19 | 闪存数据写入方法及使用此方法的控制器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101464834B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102073600B (zh) * | 2009-11-20 | 2012-10-17 | 群联电子股份有限公司 | 数据备份方法、闪存控制器及闪存储存*** |
TWI477966B (zh) | 2012-05-31 | 2015-03-21 | Silicon Motion Inc | 資料儲存裝置與快閃記憶體操作方法 |
CN102981975B (zh) * | 2012-11-16 | 2016-02-03 | 深圳市江波龙电子有限公司 | 闪存数据的管理方法和*** |
CN103685552B (zh) * | 2013-12-25 | 2017-11-07 | 烽火通信科技股份有限公司 | 一种小内存设备的软件升级方法 |
CN103823766B (zh) * | 2014-03-03 | 2017-03-22 | 山西科泰航天防务技术股份有限公司 | Flash存储器的高效率存储方法 |
KR101730151B1 (ko) | 2014-06-27 | 2017-04-25 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 플래시 메모리 장치에 데이터를 기록하는 방법, 플래시 메모리 장치, 및 저장 시스템 |
CN105117168A (zh) * | 2015-08-17 | 2015-12-02 | 联想(北京)有限公司 | 一种信息处理方法和电子设备 |
TWI603193B (zh) * | 2016-03-31 | 2017-10-21 | 慧榮科技股份有限公司 | 資料儲存裝置及其資料維護方法 |
CN107544922B (zh) * | 2016-06-24 | 2020-01-21 | 群联电子股份有限公司 | 数据写入方法、存储器控制电路单元及存储器存储装置 |
CN106293841A (zh) * | 2016-08-11 | 2017-01-04 | 青岛海信移动通信技术股份有限公司 | 一种烧录数据的方法和装置 |
CN107632943B (zh) * | 2017-08-30 | 2020-09-11 | 记忆科技(深圳)有限公司 | 一种固态硬盘数据保护的方法及固态硬盘 |
TWI705328B (zh) * | 2018-09-26 | 2020-09-21 | 慧榮科技股份有限公司 | 資料儲存裝置以及非揮發式記憶體控制方法 |
CN110955383B (zh) | 2018-09-26 | 2023-05-02 | 慧荣科技股份有限公司 | 数据储存装置以及非挥发式存储器控制方法 |
CN110955384B (zh) | 2018-09-26 | 2023-04-18 | 慧荣科技股份有限公司 | 数据储存装置以及非挥发式存储器控制方法 |
JP2020155052A (ja) * | 2019-03-22 | 2020-09-24 | キオクシア株式会社 | メモリシステムおよび制御方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5577194A (en) * | 1992-10-30 | 1996-11-19 | Intel Corporation | Method of managing defects in flash disk memories |
CN1536579A (zh) * | 2003-04-08 | 2004-10-13 | 株式会社瑞萨科技 | 存储卡 |
CN1567476A (zh) * | 2003-06-24 | 2005-01-19 | 群联电子股份有限公司 | 闪存高速大区块的数据写入方法 |
CN2676291Y (zh) * | 2004-01-02 | 2005-02-02 | 创惟科技股份有限公司 | 提升闪存存取效能的装置 |
-
2007
- 2007-12-19 CN CN2007103001909A patent/CN101464834B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5577194A (en) * | 1992-10-30 | 1996-11-19 | Intel Corporation | Method of managing defects in flash disk memories |
CN1536579A (zh) * | 2003-04-08 | 2004-10-13 | 株式会社瑞萨科技 | 存储卡 |
CN1567476A (zh) * | 2003-06-24 | 2005-01-19 | 群联电子股份有限公司 | 闪存高速大区块的数据写入方法 |
CN2676291Y (zh) * | 2004-01-02 | 2005-02-02 | 创惟科技股份有限公司 | 提升闪存存取效能的装置 |
Also Published As
Publication number | Publication date |
---|---|
CN101464834A (zh) | 2009-06-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101464834B (zh) | 闪存数据写入方法及使用此方法的控制器 | |
US8606987B2 (en) | Data writing method for flash memory and controller using the same | |
CN101483067B (zh) | 快闪存储器数据写入方法及其快闪存储器控制器 | |
US8055873B2 (en) | Data writing method for flash memory, and controller and system using the same | |
US8214578B2 (en) | Method of storing data into flash memory according to usage patterns of addresses and data storage system using the same | |
CN101634967B (zh) | 用于闪存的区块管理方法、储存***与控制器 | |
CN101571832B (zh) | 数据写入方法及使用该方法的快闪存储***与其控制器 | |
US20100057979A1 (en) | Data transmission method for flash memory and flash memory storage system and controller using the same | |
CN101661431B (zh) | 用于快闪存储器的区块管理方法、快闪储存***及控制器 | |
CN101625897B (zh) | 用于快闪存储器的数据写入方法、储存***与控制器 | |
CN101419834B (zh) | 平均磨损方法及使用此方法的控制器 | |
CN101414282B (zh) | 平均磨损方法及使用此方法的控制器 | |
CN101667157A (zh) | 闪存数据传输方法、闪存储存***及控制器 | |
CN102193869A (zh) | 存储器管理与写入方法及其存储器控制器与储存*** | |
CN101425338B (zh) | 非易失性存储器的写入方法及使用此方法的控制器 | |
CN101527169A (zh) | 闪存数据写入方法及其控制器 | |
CN102866861B (zh) | 闪存储存***、闪存控制器与数据写入方法 | |
CN101409108B (zh) | 平均磨损方法及使用此方法的控制器 | |
CN101625661B (zh) | 用于闪存的数据管理方法、储存***与控制器 | |
CN101930407B (zh) | 闪速存储器控制电路及其存储***与数据传输方法 | |
CN102122233B (zh) | 区块管理与数据写入方法、闪存储存***与控制器 | |
CN102999437A (zh) | 数据搬移方法、存储器控制器与存储器储存装置 | |
US20110029719A1 (en) | Data writing method for flash memory and control circuit and storage system using the same | |
CN101661432B (zh) | 闪存区块管理方法、闪存储存***及控制器 | |
US20120324205A1 (en) | Memory management table processing method, memory controller, and memory storage apparatus |
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 |