CN1967504A - 闪存的控制装置与方法 - Google Patents
闪存的控制装置与方法 Download PDFInfo
- Publication number
- CN1967504A CN1967504A CN 200510123613 CN200510123613A CN1967504A CN 1967504 A CN1967504 A CN 1967504A CN 200510123613 CN200510123613 CN 200510123613 CN 200510123613 A CN200510123613 A CN 200510123613A CN 1967504 A CN1967504 A CN 1967504A
- Authority
- CN
- China
- Prior art keywords
- address
- block
- bad
- storage area
- access section
- 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
Images
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
一种闪存的控制装置与方法。此闪存包括多个区块,其中,这些区块分为多个储存区块以及多个备用区块。此控制装置包括坏块映射表以及控制器。当要根据存取区块地址存取数据时,控制器判断存取区块地址所对应的区块是否为损坏的区块。当控制器判断出存取区块地址所对应的区块为损坏区块时,控制器根据存取区块地址寻找坏块映射表以找出对应的备用区块地址以取代存取区块地址。接下来,控制器重复上述操作直至存取区块地址所对应的备用区块为正常区块后,根据存取区块地址存取数据。
Description
技术领域
本发明涉及储存设备,特别涉及一种闪存的控制装置与方法。
背景技术
随着消费性产品的普及,对于数据储存的需求也日益增加。因闪存制造技术突飞猛进,储存容量也日益加大,并且因其体积小,操作省电而广受欢迎。然而,目前的半导体制造工艺尚不能保证闪存出厂时,每一个储存区块都是良好可用的。另外,每一个储存区块的写入次数以及擦除次数也都有各自的上限,会在使用的过程中达到寿命而损坏。因此,在现有技术中要开发一个以闪存作为储存媒介的消费性产品,此闪存的控制装置必须要使用很大的内存才能管理其储存空间。
图1所示为已知闪存的系统结构图。闪存10本身便是由一个个区块(Block)所组成,例如128Mb的闪存约由8千多个区块101所组成。而每一个区块内部又分为多个页(Page)102,一般来说是8~64页。而每一页又分为数据储存区(data storage area)103以及空闲区(spare area)104,一般来说,页分为两种规格,若数据储存区为512字节(byte),则空闲区便为16字节,若数据储存区为2048字节,则空闲区便为64字节。其中,空闲区其中一个作用是用于作为数据储存区的错误更正码,另一个功能则是当区块内有损坏时,会在第一页或是第二页(若第一页损坏时)标示非FF的值,以便表示此区块为损坏的区块。
一般来说,在写入闪存之前,要先作擦除(erase)的操作,把所有的储存单元(memory cell)通通编程为逻辑1状态。闪存作擦除的操作是以区块为单位,而写入是以页为单位。由于闪存的物理特性,从逻辑1状态转变为逻辑0状态是可行的,但是从逻辑0状态转为逻辑1状态是不可行的。若需要在某个区块的某页写入数据,且该页已经存有逻辑0状态时,便必须擦除整个区块再写入。这就是闪存的特性。然而,长期作擦除的操作容易造成损坏的区块产生。
使用闪存最大的问题即在损坏的区块的产生。损坏的区块可能在一出厂即出现,也有可能是在使用过程中出现。一般来说,厂商会保证损坏的区块的比例控制在2%。但是在使用者的角度上来看,使用者在储存数据时不会希望数据不能连续储存,一般的使用者,一定是希望数据可以连续放在闪存中。然而现在的半导体制造工艺并不能保证每一个区块都是良好可用的。所以闪存的空间并非连续,而是良好区块与损坏的区块交杂使用。然而使用者若不幸将数据(或数据的一部分)储存至损坏的区块中,便会造成数据的损毁,这种情形在一个产品上是不允许被接受的。
为了解决上述损坏的区块所造成使用者在使用产品上的不便,已知MSystem公司曾在美国提出第5,404,485号专利,另外SSFDC组织也提出了SmartMedia Format规格。上述两者解决方案都是建立一个映射表(VirtualMap)以及分配表(Allocation Map)。映射表主要是用于将出厂时已经损毁的区块或使用过程中损毁的区块通过不列入映射范围的方式,达到排除的目的。而分配表主要是用于纪录每个区块的状态,可加速区块写入时对新的区块的寻找,以增加储存速度。
以上两种已知做法虽然可以有效的解决闪存中损坏的区块被使用者所使用的问题。但是,以一个128Mb的闪存来说,就会有8192个区块,每个区块16Kb的闪存容量,此闪存以区块(Block)为单位的映射表至少需要16Kb,也就是8192*2字节的内存。若是以区块加上页(Page)的两层式的映射方式则需要24Kb,也就是8192*3个字节的内存。而分配表需要2Kb的存储空间。因此若要使用上述的方式,总共的内存需求至少要18Kb的内存。在很多的嵌入式产品上无法提供如此大的内存需求。因此需要一较低内存需求的闪存控制装置与控制方法。
发明内容
本发明的目的就是提供一种闪存的控制装置,用于降低成本。
本发明的再一目的是提供一种闪存的控制方法,用于避免使用者使用损坏的区块。
本发明提出一种闪存的控制装置。此闪存包括多个区块,其中这些区块分为多个储存区块以及多个备用区块,此装置包括坏块映射表以及控制器。当要根据一存取区块地址存取一数据时,控制器判断存取区块地址所对应的区块是否为损坏的区块,当存取区块地址所对应区块为损坏区块时,根据存取区块地址寻找坏块映射表以找出对应的备用区块的地址来取代该存取区块地址,重复上述操作直至存取区块地址所对应的备用区块为正常区块,根据最后得到的存取区块地址存取该数据。
依照本发明的较佳实施例所述的闪存的控制装置,上述的坏块映射表包括多个映射单元,每一映射单元包括一损坏区块地址储存区以及一备用区块地址储存区,该控制器查找坏块映射表以获得备用区块地址来取代原存取区块地址时,扫描每一映射单元中的损坏区块地址储存区内所储存的损坏区块的地址,找出对应的备用区块地址储存区所储存的备用区块的地址取代该存取区块地址。
本发明提出一种闪存的控制方法,用于控制一闪存。此闪存包括多个区块,其中这些区块分为多个储存区块以及多个备用区块。此控制方法至少包括下列步骤:首先,提供一坏块映射表。当要根据存取区块地址存取数据时,判断存取区块地址所对应的区块是否为损坏的区块。当存取区块地址所对应的区块为损坏区块时,根据存取区块地址查找坏块映射表以找出对应的备用区块的地址来取代该存取区块地址。之后重复上述操作直至存取区块地址所对应的备用区块为正常区块后,根据最后得到的存取区块地址存取该数据。
依照本发明的较佳实施例所述的闪存的控制方法,上述坏块映射表包括多个映射单元,每一映射单元包括损坏区块地址储存区以及备用区块地址储存区。当存取区块地址所对应的区块为损坏的区块时,根据存取区块地址扫描坏块映射表内每一映射单元中的损坏区块地址储存区内所储存的损坏区块的地址,找出对应的备用区块地址储存区所储存的备用区块的地址取代原本的存取区块地址。
本发明因采用较简单的坏块映射表,当使用者存取时,控制器先侦测储存区块是否为损坏区块,若是损坏区块则查表找出备用区块,因此可避免使用者使用损坏的区块。另外,由于坏块映射表只须储存损坏的区块的信息,也就是说其余未损坏的区块不须储存至表内,比起已知查找表必须储存所有地址信息造成的内存浪费,本发明的方法与装置可使用更少的储存空间,同样可达到避免使用者使用损坏区块的功能,从而达到减少硬件成本的目的。
附图说明
图1所示为已知闪存系统结构图。
图2所示为本发明实施例的一种闪存控制装置的电路方框图。
图3所示为本发明实施例图2中坏块映射表202的一种实施方式。
图4所示为本发明实施例图2中坏块映射表202的一种实施方式。
图5所示为本发明实施例图2中坏块映射表202的一种实施方式。
图6所示为本发明另一实施例的一种闪存控制装置的电路方框图;
图7所示为本发明实施例图6中坏块映射表602的一种实施方式。
图8所示为本发明实施例的一种闪存控制方法的流程图。
图9所示为本发明另一实施例闪存控制方法的流程图。
具体实施方式
为让本发明上述和其它目的、特点和优点能更明显易懂,下文特举较佳实施例,并配合附图,作详细说明如下。
由于先前为了防止损坏的区块被使用者所使用的技术预先把所有储存区块的地址作映射表,以排除损坏的区块,需要耗费许多的内存来管理,增加了许多不必要的硬件成本。因此本发明提出一种闪存的控制装置与方法,藉以少量的硬件成本,同样可以做到“防止损坏的区块被使用者所使用”。详细的实施方式将会在下面实施例中说明。
图2为本发明实施例的一种闪存控制装置的电路方框图。请参考图2,此实施例的电路方框图包括接口电路200、控制器201、坏块映射表202以及被控制器所控制的闪存区块21,其中闪存区块21分为多个给使用者所使用的储存区块211以及多个为了当有损坏区块时所提供的备用区块212。另外,图3为坏块映射表202的实施例,在此实施例中包括多个映射单元I_01~I_10,每一映射单元包括损坏区块地址(Address)储存区BA以及备用区块地址储存区SA。
为了方便说明本发明,此图2实施例以较少数目的储存区块(20个区块)以及备用区块(10个区块)加以说明,其中储存区块211标示为B01~B20,备用区块212标示为B21~B30。同样的,图3所示的映射单元也以较少数目(10个映射单元)I_01~I_10作为例子。然而,若以一般128Mb的闪存,会有八千多个使用者储存区块,因此本实施例仅为了说明方便而举例,本发明不以此为限。
请参考图2与图3。首先,当启动此装置时,例如此装置是一个通用串行总线(Universal Serial Bus,USB)随身碟,接口电路即USB接口电路。当此装置第一次通过USB接口插入电脑时,便开始供应电力至此随身碟。此时控制器201便开始扫描闪存区块21中所有使用者可使用的储存区块211内的B01~B20是否有损坏。若区块有损坏时,便会在该损坏的区块内的第一个页或第二个页里面的空闲区标示非FF的值。当控制器201例如在第8个储存区块B08内的第一页里面的空闲区发现非FF值,便确定第8个储存区块B08为损坏的区块,之后,控制器201将第8个储存区块的地址(Address)储存在坏块映射表202里面的映射单元I_01中的损坏区块地址储存区BA,并且分配一个备用区块例如第一个备用区块B21代替第8个储存区块B08,并在映射单元I_01中的备用区块地址储存区SA储存B21的地址。
接下来控制器201继续扫描闪存区块21,又发现第15个储存区块B15也为损坏的区块,控制器201便开始作与上述第8个储存区块相同的操作,将第15个储存区块的地址储存至坏块映射表202里面的映射单元I_02中的损坏区块地址储存区BA,并且分配一个备用区块,例如第二个备用区块B22代替第15个储存区块B15,并在映射单元I_02中的备用区块地址储存区SA储存B22的地址以供查询。
当正常使用时,例如使用者通过电脑要对此随身碟作存取的操作时,使用者通过操作系统Windows的资源管理器将文件拖曳至随身碟中。此时,通过接口电路200传送指令至控制器201告知要储存文件,并且将要储存在例如第8个储存区块的地址作为存取区块地址。此时控制器201便根据存取区块地址检查闪存区块21内的第8个储存区块B08。当控制器201发现此区块为损坏时,便开始查坏块映射表202内所有映射单元I_01~I_10的损坏区块地址储存区BA,查询是否有与第8个储存地址B08相符合的地址。当控制器201查询到第8个储存区块B08的地址在映射单元I_01时,便开始检查B08对应的备用区块地址储存区SA,查出第一个备用区块B21的地址作为代替第8个储存区块B08地址的存取区块地址。之后,控制器201检查备用区块B21是否为损坏的区块。当控制器201确定备用区块B21为可用的区块(非损坏),便开始控制接口电路200将数据储存在第一个备用区块B21。
接下来,当使用者通过电脑操作系统Windows的资源管理器,将一个较大的文件拖曳至随身碟中。此时,通过接口电路200传送指令至控制器201告知要储存文件,并且告知将要储存到的例如第10~15个储存区块B10~B15的地址。此时控制器201便依次根据这些地址开始搜寻第10~15个储存区块B10~B15是否为坏块,若不是坏块,则将数据储存至该区块。
假设搜寻至第12个储存区块B12发现此区块为损坏的区块时,同样的,控制器201会开始搜寻坏块映射表202。此时由于第12个储存区块B12的地址并没有储存在坏块映射表202中,因此,控制器201会在坏块映射表202中未使用的映射单元I_03建立一个映射关系,如图4中的401。在映射单元I_03内的损坏区块地址储存区BA写入B12的地址,在备用区块地址储存区SA中储存第3个备用区块B23的地址以提供映射关系。而控制器201便以第3个备用区块B23代替第12个储存区块B12。控制器201接下来检查第3个备用区块是否为损坏的区块,假设没有损坏,便将原本要储存至第12个储存区块B12的数据存进第3个备用区块B23。
接下来,重复上述步骤直到第15个储存区块B15,控制器201发现此区块B15为损坏时,查询坏块映射表202,查出其对应的地址为第二个备用区块B22的地址。接下来控制器201便开始检查第二个备用区块B22是否为坏块,若发现此区块也为坏块时,继续查询坏块映射表202,此时发现无法查出第二个备用区块B22所对应的备用区块时,控制器201同样的在坏块映射表202中的映射单元I_04建立一个映射关系,如图5中的501,其中损坏区块地址储存区BA写入B22的地址,在备用区块地址储存区SA中储存第4个备用区块B24的地址以提供映射关系。控制器201便以第4个备用区块B24代替第2个备用区块B22。控制器201接下来检查第4个备用区块是否为损坏的区块,假设没有损坏,便将原本要储存至第15个储存区块B15的数据存进第4个备用区块B24。
上述的实施例为储存的实施例,读取时也相同。当使用者通过电脑操作系统Windows的资源管理器,将一个在此随身碟中的文件例如MP3文件点选两下启动了WinAmp软件要播放此文件时,此时读取指令通过接口电路200传送至控制器201,控制器201接收到要读取文件的地址(例如第15个储存区块B15的地址)后,便开始检查第15个储存区块B15是否为损坏的区块。当控制器201检查到第15个储存区块B15为损坏区块时,查询坏块映射表202内的对应关系查出B22为代替B15的区块。接下来控制器201会再度检查B22区块是否为损坏。同样的,控制器201检查出B22区块也是损坏的区块,因此再一次查询坏块映射表202查出B24区块为代替B22的区块。控制器201会再次检查B24是否为损坏的区块,此时查出B24为非坏块,便读取B24数据给应用程序WinAmp播放MP3音乐。
在此实施例中,不难发现,此实施例的映射表只需要少数内存便可以执行。在先前的技术中,映射表必须要映射闪存中所有的空间,也就是说,闪存越大,映射表所需的内存也会跟着越大。而此实施例中,映射表所需的内存的最大值只需要根据备用区块多少来决定。因此,若以闪存出厂约有2%的损坏的区块的机率来说,按照产品的保质期,我们可以安排一定的备用区块以保证产品在保质期内,使用者可以正常使用。
例如以一个MP3随身碟来说,使用者一般将MP3放入随身碟后,一周内都是在听该设备内的歌,并不会常常作擦除的操作。因此在闪存中便可以选择例如3%的备用区块,其中2%是为了出厂的损坏率。另外1%则可以为了保质期(如3年)而准备。若以上述MP3随身碟的例子来说,坏块映射表便只需要先前技术内存使用量的3%。另外,此坏块映射表的特性在于当有损坏的区块时,写入此映射表,换句话说,此映射表不需要再更新。而控制器的操作则是一直查询闪存的区块是否有损坏,若有损坏则查表,无损坏则存取。因此此类型的坏块映射表很适合储存在只读储存器中,例如直接将此表建置在闪存中。而不须作擦除的操作。如此,本发明的实施例可以做到不需要任何形式的外加(或内建)随机存取存储器即可实施。
再者,以本发明的实施例来说,虽然此实施例中的坏块映射表中映射单元所映射的备用区块都是以递增的关系,也就是说I_01的备用区块地址储存区SA所储存的备用区块地址为B21,I_02的备用区块地址储存区SA所储存的备用区块地址为B22...。然而本发明不一定要如此实施。例如以递减的方式,I_01的备用区块地址储存区SA所储存的备用区块地址为B30、I_02的备用区块地址储存区SA所储存的备用区块地址为B29...。或是以随机的方式,都是可以实行的。同样的,此坏块映射表也可以不需要依照顺序储存。
然而上述的实施例以按照顺序的方式来储存映射表的方式可带来一个好处。一般来说,当闪存在初始时可以先作一次完全的擦除,也就是说闪存所有的储存单元都是例如逻辑1的状态。因此要写入文件的时候,便可以按照地址将某些区段(某个区块内的某几页)其部分改为逻辑0的状态。但是若要编辑文件,也就是原本已经储存好的文件要编辑时,原本被改为逻辑0的部分是无法再次变更为逻辑1。然而除了擦除的时间远大于写入的时间外,由于写入是以页来计算,擦除是以区块来计算。因此假设使用者要编辑的文件只占了2页,其它存在此区块的数据便需要一并擦除。因此在现有技术中一般文件编辑完成后,会将整个区块中除了编辑的文件之外的数据都放入例如电脑的内存中,再将区块作擦除后,再将储存在内存内的区块数据以及该编辑过的文件写入。
然而若以本发明实施例的方式来实施时,便可以清楚的界定哪些部分是未使用的备用区块,例如本实施例便有6个备用区块未使用B25~B30,因此可以作为数据交换区。假设要编辑的文件存于B17内的第5页,当要编辑的文件编辑完成后,将该编辑完成的文件以及除了该文件之外的整个区块B17的数据写入到备用区块B25。接下来擦除该区块B17后再将B25的资料写入B17。若不幸在写入B17时断电,可以实现数据复原的功能。另外此交换区可以依序使用,假设这一次使用区块B25作交换区,下一次便可以使用B26,接下来使用B27...。以如此的方式依序循环的使用与擦除备用区块,可以平均的使用到备用区块。由于备用区块被平均的使用,因此可以使得备用区块的损坏机率较低。
若以上述实施例中按顺序递增的方式储存,可以有另一实施例能进一步减少坏块映射表的存储容量。以电路来说,是类似图2的电路实施例。然而本实施例图6中除了原图2就有的闪存区块61、控制器601、接口电路600以及坏块映射表602之外,还多加了一个寄存器603用于提供第一个备用区块B21的地址。闪存区块61仍然是以20个储存区块611(B01~B20)以及10个备用区块612(B21~B30)作为例子。由于电路以图6的方式实施,坏块映射表602便可以以图7的方式实施,只需设置损坏区块地址储存区,而不设置备用区块地址储存区。
请参考图6与图7,同样的,例如此装置是一个USB随身碟,接口电路600即USB接口电路。同样假设第8个与第15个储存区块是损坏的区块。与上一实施例相同的方式,在启动时,控制器601先扫描所有储存区块并将损坏的区块的地址储存在坏块映射表。因此,坏块映射表602的第1个损坏区块地址储存区BA_00储存第8个储存区块的地址。坏块映射表602的第2个损坏区块地址储存区BA_01储存第15个储存区块的地址。
举例来说,例如使用者通过电脑要对此随身碟作存取的操作时,使用者通过操作系统Windows的资源管理器将文件拖至该随身碟中。此时,通过接口电路600传送指令至控制器601告知要储存文件,并且告知将要储存到的例如第8个储存区块的地址。此时控制器601便会开始检查闪存区块61内部的第8个储存区块B08。当控制器601发现此区块为损坏时,便开始查坏块映射表602内损坏区块地址储存区BA_00~BA_09,查询是否有与第8个储存地址B08相符合的地址。当控制器601查询到第8个储存区块B08的地址在第0个损坏区块地址储存区BA_00时,便开始读取寄存器603内所储存的第1个备用区块的地址。并将此地址值加上0作为存取区块地址。控制器601根据此存取区块地址找出备用区块B21,再检查备用区块B21是否为损坏的区块。当控制器601确定B21为可用的区块(非损坏),则控制接口电路600将数据储存在第一个备用区块B21。
同样的以上面实施例的例子说明。当使用者通过电脑操作系统Windows的资源管理器将一个较大的文件拖曳至随身碟中。此时,通过接口电路600传送指令至控制器601告知要储存文件,并且告知将要储存到的例如第10~15个储存区块B10~B15的地址。此时控制器601便依序根据这些地址开始搜寻第10~15个储存区块B10~B15是否为坏块,若不是坏块,则将数据储存至该区块。
假设搜寻至第12个储存区块B12发现此区块为损坏的区块时,同样的,控制器601会开始搜寻坏块映射表602。此时由于第12个储存区块B12的地址并没有储存在坏块映射表202中,因此,控制器601会将第12个储存区块B12的地址储存至坏块映射表602中第2个损坏区块地址储存区BA_02,如图7中的701。而控制器601便以第1个备用区块的地址值加上2,也就是第3个备用区块的地址作为新的存取区块地址。控制器201接下来检查第3个备用区块是否为损坏的区块,假设没有损坏,便将原本要储存至第12个储存区块B12的数据存进第3个备用区块B23。
接下来,假设第13以及第14个区块皆无损坏。控制器601开始处理第15个储存区块B15。当控制器601发现此区块B15为损坏时,查询坏块映射表602,查出B15的地址存于第1个损坏区块地址储存区BA_01,因此可以计算出其对应的地址为寄存器所储存的备用区块的地址值加上1,也就是第二个备用区块B22的地址。接下来控制器601便开始检查第二个备用区块B22是否为坏块,若发现此区块也为坏块时,继续查询坏块映射表602,此时发现无法查出第2个备用区块B22的地址时,控制器601同样的在坏块映射表602中的损坏区块地址储存区BA_03储存第2个备用区块B22的地址,如图7中的702。控制器201便以同样的计算方式算出第4个备用区块B24的地址代替第22个备用区块B22的地址作为存取区块地址。控制器201根据存取区块地址来检查第4个备用区块是否为损坏的区块,假设没有损坏,便将原本要储存至第15个储存区块B15的数据存进第4个备用区块B24。
上述图6的实施例为储存的实施例,在读取时的操作也相同,因此不加以赘述。而在本实施例中,可进一步减少坏块映射表的内存使用量。同样的,由于坏块映射表以及寄存器所储存的备用区块起始地址是不需要更新的数据,因此两者都同样适合存在闪存内部。因此,本发明的实施例可以做到不需要任何形式的外加(或内建)随机存取内存即可实施。
上述的装置实施例仅为根据本发明的精神提出的一种实施例。本发明另外提出方法实施例。图8为本发明实施例的一种闪存控制方法的流程图,此方法流程图为当坏块映射表为图3实施例时的方法实施例。请参考图8,首先,提供一坏块映射表,其中坏块映射表包括多个映射单元,每一映射单元包括损坏区块地址储存区以及备用区块地址储存区(步骤801)。初始时,扫描所有储存区块,将已经损坏的区块的地址存于映射单元中的损坏区块地址储存区,并从备用区块中选择一个区块配置,将配置的区块的地址存于映射单元中的备用区块地址储存区(步骤802)。
接下来,当要根据一存取区块地址存取数据时,判断存取区块地址所对应的区块是否为损坏的区块(步骤803)。上一步骤若判断存取区块地址所对应的区块为损坏区块时,根据存取区块地址寻找坏块映射表内的每一映射单元中损坏区块地址储存区内所储存的损坏区块的地址,试着找出与损坏区块的地址相同的地址,以找出对应的备用区块地址储存区所储存的备用区块的地址作为存取区块地址(步骤804),若找到则回到步骤803。
若在坏块映射表内无法找出与损坏区块的地址相同的地址以找出对应的存取区块地址,则从未被使用的映射单元之中选择一新的映射单元,将存取区块地址存入该新增映射单元的损坏区块地址储存区内,并从备用区块中选择一个区块配置,将其地址存于该新增映射单元中的备用区块地址储存区,并且以其地址作为存取区块地址(步骤805),回到步骤803。重复上述操作直至存取区块地址所对应的备用区块为正常的区块,根据存取区块地址存取数据(步骤806)。
当坏块映射表为图7实施例时,方法实施例便修正为图9的流程图。图9为本发明另一实施例的一种闪存控制方法的流程图。首先,提供一坏块映射表以及一备用区块的起始地址,其中坏块映射表包括N个损坏区块地址储存区,每一损坏区块地址储存区可储存一个损坏区块的地址(步骤901)。初始化时,扫描所有储存区块,将已经损坏的区块的地址依序储存于未使用的损坏区块地址储存区(步骤902)。
接下来,当要根据一存取区块地址存取数据时,判断存取区块地址所对应的区块是否为损坏的区块(步骤903)。上一步骤若判断存取区块地址所对应的区块为损坏区块时,查询损坏的区块的地址是否储存在损坏区块地址储存区,若存在于第K个损坏区块地址储存区时,输出备用区块起始地址加上K作为存取区块地址,其中N、K为正整数且N>=K>=0(步骤904),回到步骤903。若在该坏块映射表内无法找出存取区块地址,将存取区块地址依序存入未使用的损坏区块地址储存区,并按存入的损坏区块地址储存区的顺序算出存取区块地址(步骤905),回到步骤903。重复上述操作直至存取区块地址所对应的备用区块为正常的区块,根据存取区块地址存取数据(步骤906)。
综上所述,本发明因采用较简单的坏块映射表。当使用者存取时,控制器先侦测储存区块是否为损坏区块,若是损坏区块则查表找出备用区块,因此可避免使用者使用损坏的区块。另外,由于坏块映射表只须储存损坏区块的信息,也就是说其余未损坏的区块不须储存至表内,比起已知查找表必须储存所有地址信息造成的内存浪费,本发明的方法与装置可使用更少的储存空间,同样可达到避免使用者使用损坏的区块的功能。
虽然本发明已以较佳实施例公开如上,但其并非用于限定本发明,任何本领域技术人员在不脱离本发明的精神和范围内,当可作些许的变动与润饰,因此本发明的保护范围当以权利要求书所界定的范围为准。
Claims (20)
1、一种闪存的控制装置,该闪存包括多个区块,该些区块分为多个储存区块以及多个备用区块,该装置包括:
一坏块映射表;以及
一控制器,当要根据一存取区块地址存取一数据时,判断该存取区块地址所对应的区块是否为损坏的区块,当该存取区块地址所对应的区块为损坏的区块时,根据该存取区块地址寻找该坏块映射表以找出对应的备用区块地址来取代该存取区块地址,重复上述操作直至该存取区块地址所对应的备用区块为正常区块,根据最后得到的存取区块地址存取该数据。
2、如权利要求1所述的闪存的控制装置,其中该坏块映射表包括多个映射单元,每一映射单元包括一损坏区块地址储存区以及一备用区块地址储存区,该控制器查找该坏块映射表以获得备用区块地址来取代该存取区块地址时,扫描每一映射单元中的损坏区块地址储存区内所储存的损坏区块的地址,找出对应的备用区块地址储存区所储存的备用区块的地址取代该存取区块地址。
3、如权利要求2所述的闪存的控制装置,其中该控制器在扫描每一映射单元中的损坏区块地址储存区内所储存的损坏区块的地址时,如找到与该存取区块地址相同的地址,则用该地址对应的备用区块地址储存区所储存的备用区块的地址取代该存取区块地址。
4、如权利要求2或3所述的闪存的控制装置,其中该控制器在扫描每一映射单元中的损坏区块地址储存区内所储存的损坏区块的地址时,如无法找到与该存取区块地址相同的地址,则从未被使用的所述映射单元之中选择一新增映射单元,该控制器将该存取区块地址存入该新增映射单元的损坏区块地址储存区内,并从所述备用区块中选择一个区块配置,将其地址存于该新增映射单元中的该备用区块地址储存区。
5、如权利要求2所述的闪存的控制装置,其中该控制器在初始化时,扫描所有储存区块,将已经损坏的区块的地址存于该映射单元中的该损坏区块地址储存区,并从所述备用区块中选择一个区块配置,将其地址存于该映射单元中的该备用区块地址储存区。
6、如权利要求1所述的闪存的控制装置,还包括:
一寄存器,用于提供所述备用区块的一备用区块起始地址。
7、如权利要求6所述的闪存的控制装置,其中该坏块映射表包括N个损坏区块地址储存区,每一损坏区块地址储存区可储存一个损坏的区块的地址,该控制器查询到该损坏区块的地址储存在第K个损坏区块地址储存区时,将该备用区块起始地址加上K输出作为该存取区块地址以找出对应的备用区块,其中N、K为正整数且N>=K>=0。
8、如权利要求7所述的闪存的控制装置,其中该控制器在初始化时,扫描所有该些储存区块,将已经损坏的区块的地址依序储存于未使用的损坏区块地址储存区。
9、如权利要求7所述的闪存的控制装置,该控制器判断该存取区块地址所对应的区块为损坏的区块,且于该坏块映射表无法找出该存取区块地址时,该控制器将该存取区块地址依序存入未使用的损坏区块地址储存区。
10、一种闪存的控制方法,该闪存包括多个区块,这些区块分为多个储存区块以及多个备用区块,该方法包括:
提供一坏块映射表;
当要根据一存取区块地址存取一数据时,判断该存取区块地址所对应的区块是否为损坏的区块;
当该存取区块地址所对应的区块为损坏的区块时,根据该存取区块地址寻找该坏块映射表以找出对应的备用区块的地址来取代该存取区块地址;以及
重复上述操作直至该存取区块地址所对应的备用区块为正常区块,根据最后得到的存取区块地址存取该数据。
11、如权利要求9所述的闪存的控制方法,其中该坏块映射表包括:
多个映射单元,每一映射单元包括一损坏区块地址储存区以及一备用区块地址储存区。
12、如权利要求10所述的闪存的控制方法,其中当该存取区块地址所对应的区块为损坏的区块时,根据该存取区块地址寻找该坏块映射表以找出对应的备用区块的地址来取代该存取区块地址时,包括以下操作:
扫描该坏块映射表内的每一映射单元中的该损坏区块地址储存区内所储存的损坏区块的地址,找出对应的备用区块地址储存区所储存的备用区块的地址取代该存取区块地址。
13、如权利要求12所述的闪存的控制方法,其中在扫描坏块映射表内内每一映射单元中的损坏区块地址储存区内所储存的损坏区块的地址时,如找到与该存取区块地址相同的地址,则用该地址对应的备用区块地址储存区所储存的备用区块的地址取代该存取区块地址。
14、如权利要求12或13所述的闪存的控制方法,其中在扫描坏块映射表内内每一映射单元中的损坏区块地址储存区内所储存的损坏区块的地址时,如无法找到与该存取区块地址相同的地址,则从未被使用的所述映射单元之中选择一新增映射单元,该控制器将该存取区块地址存入该新增映射单元的损坏区块地址储存区内,并从所述备用区块中选择一个区块配置,将其地址存于该新增映射单元中的该备用区块地址储存区。
15、如权利要求11所述的闪存的控制方法,还包括:
初始化时,扫描所有储存区块,将已经损坏的区块的地址存于该映射单元中的该损坏区块地址储存区,并从所述备用区块中选择一个区块配置,将其地址存于该映射单元中的备用区块地址储存区。
16、如权利要求10所述的闪存的控制方法,其中该坏块映射表包括N个损坏区块地址储存区,每一损坏区块地址储存区可储存一个损坏的区块的地址。
17、如权利要求16所述的闪存的控制方法,还包括:
提供一备用区块的初始地址。
18、如权利要求17所述的闪存的控制方法,其中当该存取区块地址所对应的区块为损坏的区块,根据该存取区块地址寻找该坏块映射表以找出对应的备用区块的地址来取代该存取区块地址时,包括以下操作:
当查询到该损坏区块的地址储存在第K个损坏区块地址储存区时,将该备用区块起始地址加上K输出作为该存取区块地址,其中N、K为正整数且N>=K>=0。
19、如权利要求18所述的闪存的控制方法,还包括:
初始化时,扫描所有储存区块,将已经损坏的区块的地址依序储存于未使用的损坏区块地址储存区。
20、如权利要求18所述的闪存的控制方法,还包括:
当该存取区块地址所对应的区块为损坏的区块,且在该坏块映射表内无法找出该存取区块地址时,该控制器将该存取区块地址依序存入未使用的损坏区块地址储存区。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005101236135A CN100520734C (zh) | 2005-11-18 | 2005-11-18 | 闪存的控制装置与方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005101236135A CN100520734C (zh) | 2005-11-18 | 2005-11-18 | 闪存的控制装置与方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1967504A true CN1967504A (zh) | 2007-05-23 |
CN100520734C CN100520734C (zh) | 2009-07-29 |
Family
ID=38076287
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005101236135A Expired - Fee Related CN100520734C (zh) | 2005-11-18 | 2005-11-18 | 闪存的控制装置与方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100520734C (zh) |
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101582052B (zh) * | 2008-05-15 | 2011-01-05 | 慧国(上海)软件科技有限公司 | 存储器模组及于存储器模组中实现平均磨损的方法 |
CN101556555B (zh) * | 2008-04-08 | 2011-09-14 | 群联电子股份有限公司 | 用于闪存的区块管理方法、其控制器与储存系统 |
CN101661432B (zh) * | 2008-08-26 | 2012-01-25 | 群联电子股份有限公司 | 闪存区块管理方法、闪存储存系统及控制器 |
CN101320594B (zh) * | 2008-05-21 | 2012-02-29 | 深圳市硅格半导体有限公司 | 一种闪存芯片的物理操作方法 |
CN101853138B (zh) * | 2009-04-03 | 2012-05-09 | 群联电子股份有限公司 | 闪存写入方法及使用此方法的储存系统与控制器 |
CN101727397B (zh) * | 2008-10-20 | 2012-06-27 | 群联电子股份有限公司 | 区块管理与更换方法、闪存储存系统及其控制器 |
CN101782877B (zh) * | 2009-01-16 | 2012-07-04 | 慧帝科技(深圳)有限公司 | 控制周边装置的控制装置、非挥发性储存元件及相关方法 |
CN101866319B (zh) * | 2009-04-17 | 2012-08-29 | 智微科技股份有限公司 | 存取储存装置的方法及相关控制电路 |
US8285951B2 (en) | 2008-12-01 | 2012-10-09 | Silicon Motion Inc. | Control apparatus for controlling peripheral device, non-volatile storage element, and method thereof |
US8407397B2 (en) | 2008-02-29 | 2013-03-26 | Phison Electronics Corp. | Block management method for flash memory and controller and storage system using the same |
CN102033811B (zh) * | 2009-09-24 | 2013-04-17 | 慧荣科技股份有限公司 | 用于管理闪存多个区块的方法和相关记忆装置及其控制器 |
US8473670B2 (en) | 2008-03-26 | 2013-06-25 | Microsoft Corporation | Boot management of non-volatile memory |
TWI400707B (zh) * | 2009-07-09 | 2013-07-01 | Phison Electronics Corp | 快閃記憶體邏輯區塊管理方法及其控制電路與儲存系統 |
CN103186471A (zh) * | 2011-12-30 | 2013-07-03 | 深圳市共进电子股份有限公司 | 存储设备中坏块的管理方法及系统 |
CN101739352B (zh) * | 2008-11-06 | 2013-09-18 | 慧帝科技(深圳)有限公司 | 用来管理一记忆装置的方法以及其相关的记忆装置 |
US8812744B1 (en) | 2013-03-14 | 2014-08-19 | Microsoft Corporation | Assigning priorities to data for hybrid drives |
CN104380262A (zh) * | 2012-06-29 | 2015-02-25 | 英特尔公司 | 坏块管理机制 |
CN104461750A (zh) * | 2013-09-25 | 2015-03-25 | 北京兆易创新科技股份有限公司 | 一种NAND flash的访问方法和装置 |
CN105487821A (zh) * | 2015-11-30 | 2016-04-13 | 北京奇艺世纪科技有限公司 | 一种存储虚拟化中的数据存储方法、系统及装置 |
CN104051010B (zh) * | 2013-03-12 | 2017-04-12 | 旺宏电子股份有限公司 | 用于编程包含多个区块的非易失性存储器的方法及装置 |
US9626126B2 (en) | 2013-04-24 | 2017-04-18 | Microsoft Technology Licensing, Llc | Power saving mode hybrid drive access management |
US9946495B2 (en) | 2013-04-25 | 2018-04-17 | Microsoft Technology Licensing, Llc | Dirty data management for hybrid drives |
WO2019205444A1 (zh) * | 2018-04-27 | 2019-10-31 | 江苏华存电子科技有限公司 | 一种提升储存装置可用容量的坏块管理方法 |
-
2005
- 2005-11-18 CN CNB2005101236135A patent/CN100520734C/zh not_active Expired - Fee Related
Cited By (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8407397B2 (en) | 2008-02-29 | 2013-03-26 | Phison Electronics Corp. | Block management method for flash memory and controller and storage system using the same |
CN101981541B (zh) * | 2008-03-26 | 2013-07-17 | 微软公司 | 使用闪存和有限功能存储器控制器来引导电子设备 |
US8473670B2 (en) | 2008-03-26 | 2013-06-25 | Microsoft Corporation | Boot management of non-volatile memory |
CN101556555B (zh) * | 2008-04-08 | 2011-09-14 | 群联电子股份有限公司 | 用于闪存的区块管理方法、其控制器与储存系统 |
CN101582052B (zh) * | 2008-05-15 | 2011-01-05 | 慧国(上海)软件科技有限公司 | 存储器模组及于存储器模组中实现平均磨损的方法 |
CN101320594B (zh) * | 2008-05-21 | 2012-02-29 | 深圳市硅格半导体有限公司 | 一种闪存芯片的物理操作方法 |
CN101661432B (zh) * | 2008-08-26 | 2012-01-25 | 群联电子股份有限公司 | 闪存区块管理方法、闪存储存系统及控制器 |
CN101727397B (zh) * | 2008-10-20 | 2012-06-27 | 群联电子股份有限公司 | 区块管理与更换方法、闪存储存系统及其控制器 |
CN101739352B (zh) * | 2008-11-06 | 2013-09-18 | 慧帝科技(深圳)有限公司 | 用来管理一记忆装置的方法以及其相关的记忆装置 |
US8285951B2 (en) | 2008-12-01 | 2012-10-09 | Silicon Motion Inc. | Control apparatus for controlling peripheral device, non-volatile storage element, and method thereof |
CN101782877B (zh) * | 2009-01-16 | 2012-07-04 | 慧帝科技(深圳)有限公司 | 控制周边装置的控制装置、非挥发性储存元件及相关方法 |
CN101853138B (zh) * | 2009-04-03 | 2012-05-09 | 群联电子股份有限公司 | 闪存写入方法及使用此方法的储存系统与控制器 |
CN101866319B (zh) * | 2009-04-17 | 2012-08-29 | 智微科技股份有限公司 | 存取储存装置的方法及相关控制电路 |
TWI400707B (zh) * | 2009-07-09 | 2013-07-01 | Phison Electronics Corp | 快閃記憶體邏輯區塊管理方法及其控制電路與儲存系統 |
CN102033811B (zh) * | 2009-09-24 | 2013-04-17 | 慧荣科技股份有限公司 | 用于管理闪存多个区块的方法和相关记忆装置及其控制器 |
CN103186471B (zh) * | 2011-12-30 | 2016-10-12 | 深圳市共进电子股份有限公司 | 存储设备中坏块的管理方法及系统 |
CN103186471A (zh) * | 2011-12-30 | 2013-07-03 | 深圳市共进电子股份有限公司 | 存储设备中坏块的管理方法及系统 |
CN104380262A (zh) * | 2012-06-29 | 2015-02-25 | 英特尔公司 | 坏块管理机制 |
CN104051010B (zh) * | 2013-03-12 | 2017-04-12 | 旺宏电子股份有限公司 | 用于编程包含多个区块的非易失性存储器的方法及装置 |
US8812744B1 (en) | 2013-03-14 | 2014-08-19 | Microsoft Corporation | Assigning priorities to data for hybrid drives |
US9323460B2 (en) | 2013-03-14 | 2016-04-26 | Microsoft Technology Licensing, Llc | Assigning priorities to data for hybrid drives |
US8990441B2 (en) | 2013-03-14 | 2015-03-24 | Microsoft Technology Licensing, Llc | Assigning priorities to data for hybrid drives |
US9626126B2 (en) | 2013-04-24 | 2017-04-18 | Microsoft Technology Licensing, Llc | Power saving mode hybrid drive access management |
US9946495B2 (en) | 2013-04-25 | 2018-04-17 | Microsoft Technology Licensing, Llc | Dirty data management for hybrid drives |
CN104461750A (zh) * | 2013-09-25 | 2015-03-25 | 北京兆易创新科技股份有限公司 | 一种NAND flash的访问方法和装置 |
CN104461750B (zh) * | 2013-09-25 | 2018-05-04 | 北京兆易创新科技股份有限公司 | 一种NAND flash的访问方法和装置 |
CN105487821A (zh) * | 2015-11-30 | 2016-04-13 | 北京奇艺世纪科技有限公司 | 一种存储虚拟化中的数据存储方法、系统及装置 |
WO2019205444A1 (zh) * | 2018-04-27 | 2019-10-31 | 江苏华存电子科技有限公司 | 一种提升储存装置可用容量的坏块管理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN100520734C (zh) | 2009-07-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1967504A (zh) | 闪存的控制装置与方法 | |
US8250286B2 (en) | Block management method, and storage system and controller using the same | |
US20070081401A1 (en) | Apparatus for controlling flash memory and method thereof | |
US8583860B2 (en) | Block management method for flash memory and controller and storage system using the same | |
CN101937319B (zh) | 存储器系统及其映射方法 | |
US8417872B2 (en) | Write and merge methods in memory card systems for reducing the number of page copies | |
US8055873B2 (en) | Data writing method for flash memory, and controller and system using the same | |
US8086787B2 (en) | Wear leveling method, and storage system and controller using the same | |
CN101271379B (zh) | 混合密度存储体储存装置及其控制方法 | |
US8621139B2 (en) | Data writing method for writing data into block of multi-level cell NAND flash memory by skipping a portion of upper page addresses and storage system and controller using the same | |
US8606987B2 (en) | Data writing method for flash memory and controller using the same | |
US8131911B2 (en) | Data writing method, and flash storage system and controller using the same | |
TWI399644B (zh) | 非揮發記憶體區塊管理方法 | |
US20100011154A1 (en) | Data accessing method for flash memory and storage system and controller using the same | |
US8732385B2 (en) | Non-volatile memory, controller controlling next access | |
CN1466060A (zh) | 闪速存储器文件系统 | |
US20100042774A1 (en) | Block management method for flash memory, and storage system and controller using the same | |
US20100042775A1 (en) | Block management method for flash memory, and storage system and controller using the same | |
CN1705936A (zh) | 用于分割一逻辑块的方法及设备 | |
CN1795437A (zh) | 用于块内页面分组的方法及设备 | |
CN110489052B (zh) | 数据储存装置 | |
CN101908368A (zh) | 电子存储装置及其操作方法 | |
CN1635580A (zh) | 闪存介质数据写入方法 | |
CN1447242A (zh) | 可适用于快闪存储卡的控制装置及其建构方法 | |
US20090240868A1 (en) | Management method, management apparatus, and controller for memory data access |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090729 Termination date: 20171118 |
|
CF01 | Termination of patent right due to non-payment of annual fee |