发明内容
在电子设备(如各便携式终端)的软件中,改正称为程序缺陷(bug)的错误是共同的作法,并且执行版本更新以增加和改进功能。
当执行版本更新时,程序使用装入程序(loader)等存储到NAND存储器中。在这种情况下,通常采用一种跳过缺陷块的方法,并将程序加载到NAND存储器中。
当一个缺陷块后来出现时,在整个程序区域加载到NAND存储器中的情况下,没有问题出现。然而,当由于在软件更新中使用差别(difference)数据而产生了更新前后的差别文件时,由于后来出现的缺陷块的出现,更新前程序的地址连续性丢失,与用于更新的文件匹配难以完成,并且程序的更新难以执行。即使程序更新能够执行,该块的内容和随后块的内容需要移动对应于一个块的量,并且被重写。结果,只更新差别文件是不够的,并且有一个问题,即使用差别文件更新软件的优势被削弱了。
在这样的背景下,本发明提供一种存储器管理方法和使用该存储器管理方法的便携式终端设备,所述存储器管理方法适用于针对以块为单位执行写入的非易失性存储器,用差别文件更新软件。
根据本发明的实施例,提供了一种用于管理非易失性存储器的存储器管理方法,向所述非易失性存储器以块为单位执行写入,所述存储器管理方法包括以下各步骤:将非易失性存储器的多个块分配到由至少一个块构成的用来存储管理信息的管理区、由多个块构成的向其写入程序代码的代码区、由多个块构成的用来替换缺陷块的替换区、以及由至少一个块构成干扰区,该干扰区提供在管理区和替换区之间;至少将替换区的各块和替换目标的缺陷块之间的对应信息,作为管理信息存储在管理区内;以及当缺陷块将被使用时,以对应信息为基础使用替换区的块替换缺陷块。
在该存储器管理方法中,非易失性存储器的多个块被分为“管理区”、“代码区”、“替换区”和“干扰区”,并且该干扰区安排在管理区和替换区之间。用这种配置,管理区和代码区可以共同使用替换区。此外,通过在非易失性存储器中提供管理区,可以执行缺陷块的替换管理而不需要外部提供特殊的存储器管理装置。
作为更特殊的实施例,当管理区的块变成有缺陷时,干扰区被移动到替换区内与干扰区有更接近存储地址的块,使得将原始干扰区的一个块设置为新的管理区。按照从具有距干扰区最远的存储地址的块开始的顺序,使用替换区的块。结果,干扰区用作管理区和替换区的之间的边界,边界的位置是可变的,并且管理区和替换区都能够使用替换区的块。
根据本发明的另一个实施例,提供了一种便携式电话终端,其包括:非易失性存储器,向其以块为单位执行写入;以及控制装置,用于将非易失性存储器的多个块分配到由至少一个块构成的用以存储管理信息的管理区、由多个块构成的写入程序代码的程序区、由多个块构成的用以替换缺陷块的替换区、以及由至少一个块构成的干扰区,所述干扰区提供在管理区和替换区之间,并且该控制装置用于使用各区,其中该控制装置至少将替换区的各块和替换目标的缺陷块间的对应信息,作为管理信息存储在管理区内,以及当缺陷块被使用时,以对应信息为基础使用替换区的块替换缺陷块。
根据本发明的实施例,即使当后来出现的缺陷块出现在非易失性存储器中时,通过使用替换区中的块替换该缺陷块,可以容易地以更新所用的差别文件为基础执行软件的更新。
即使当后来出现的缺陷块出现在管理区时,通过将管理区向替换区侧移动,并且通过使用原始的干扰区作为新的管理区,实质上管理区和代码区都可以使用替换区的块。也就是说,可以有效地利用替换区的所有块,而不限于使用固定数量的替换区的块。
通过使用至少两个用来存储管理信息的块作为管理区,不必外部备份管理信息。
通过将关于使用替换区的块替换缺陷块的管理信息存储在至少一个非易失性存储器的块内,并通过使用该管理信息,不需要提供特定的逻辑/物理地址转换装置(如MMU)。
具体实施方式
以下将参照附图详细说明本发明的优选实施例。
图1显示根据本发明实施例的便携式终端10的硬件的示意性配置。该便携式终端10包括控制器11、音频处理器12、麦克风13、扬声器14、存储部分15、通信部分16、天线17、操作部分18和显示部分19。
控制器11包括处理器(如中央处理单元(CPU)和数字信号处理器(DSP)),并且控制便携式终端10的处理和每个部分。在控制器11的控制下,音频处理器12执行音频处理(如电话交谈和音乐再现),执行来自麦克风13的音频输入和到扬声器14的音频输出。
存储部分15是用来存储程序和数据的部分,在该实施例中包括SDRAM15a和NAND存储器15b。
NAND存储器15b是可重写非易失性存储器,用于存储由控制器11执行的程序。NAND存储器15b具有用来存储程序主体的代码(程序代码)的代码区21,以及用来存储用于更新的文件的存储区22。在存储区22中能够存储程序以及各种数据,如电话目录、电子邮件、Web内容、音乐和图像。
在引导时代码区21被加载到SDRAM 15a中,并且程序在SDRAM 15a中被执行。更明确地,当给控制器11和存储部分15供电时,NAND存储器15b的引导区的内容被读入控制器中包括的存储区中,并由控制器11内嵌的逻辑电路执行。由本发明定义的缺陷块管理方法嵌入在该程序中。该程序允许程序代码被执行,被从NAND存储器15b加载到SDRAM 15a中,并且程序在SDRAM 15a中被执行。用于更新的文件由便携式终端10外部的专用工具提前生成,通过通信部分16从专用服务器下载,并存储在存储区22中。
在本发明中,在NAND存储器中的连续区中提供了管理区,并且管理信息存储于管理区中,使得执行缺陷块的管理和块替换管理(稍后将描述)。本说明书中的“块”是指对每个存储设备定义的特定大小的成组单元区域。
通信部分16是通过天线17以无线的方式与基站(没有显示)执行发送和接收的部分。操作部分18包括十键盘、各种控制键等,并且具有从用户输入指令和信息到控制器11的功能。显示部分19包括例如显示设备(如LCD或者有机EL),并且具有为用户显示可视信息(如文本和图像(静态图像和运动图像))的功能。
如上面所描述,当从NAND存储器15b启动引导程序时,该程序从NAND存储器15b加载到SDRAM 15a中,并在SDRAM 15a中被执行。图2显示程序区存储在NAND存储器15b的块3和随后各块中的示例。当程序被写入NAND存储器15b中时,如图2(b)部分中所示,如果某个“块N”是有缺陷的,则不使用该缺陷块,并且将程序写入下一个无缺陷的“块N+1”中。由于程序在SDRAM 15a中执行,这样足够了。
当在NAND存储器15b的块N中检测到缺陷时,程序存储在块N+1中,跳过块N。以这种方法,更新了整个程序。然而以这种方法,当使用用于更新的文件(差别文件)来进行软件更新时,麻烦出现了。
如图3中示意性所示,通过比较更新前的程序31和更新后的程序32,产生了用于更新的文件33作为差别文件。通常,用于更新的文件33的大小(数据量)比更新后的程序32要小。优点是下载和更新过程所需的时间比更新后的整个程序32所需的时间缩短了。
如图4中所示,当要执行软件更新时,用于更新的文件33存储于便携式终端内部的NAND存储器15b的存储区22中。以用于更新的该文件为基础,软件更新引擎23对更新前的程序31执行更新过程,所述程序31存储于NAND存储器15b的代码区21中,并且在NAND存储器中产生更新后的程序32。软件更新引擎23存储于例如NAND存储器15b中。在更新过程期间,软件更新引擎23被暂时拷贝到RAM 15a,并且执行RAM 15a内部的软件更新引擎23,因此使得可以实现软件更新。
由于程序存储于NAND存储器中,所以在相关技术中,当NAND存储器的所有块无缺陷时不会出现问题。然而,如图5中所示,当缺陷块N后来出现时,更新前的程序的地址连续性丢失了,与用于更新的文件的匹配不能达到,并且难以执行程序更新。如果能够执行程序的更新,对于该缺陷块和随后各块,程序被移动和存储。结果,原先不需要的写入块是必须的。
在该实施例中,预先提供了能够与NAND存储器中各缺陷块相关联的替换块,并且使用逻辑地址来管理缺陷块和替换块的物理地址,使得可以确保NAND存储器的地址连续性。通过使用软件更新前后的用于更新的文件(差别文件),其基于地址连续的假设产生,即使当缺陷块后来出现在NAND存储器中时,也可以执行软件更新。
下面将给出用于即使当后来出现的缺陷块出现在存储了更新前的程序的NAND中、允许软件更新的方法的描述。
图6显示了该实施例中NAND存储器156的存储空间的内部配置的示例。NAND存储器15b被划分为对应多个单元数据量的块,并且功能被分配到相应的各块如图6所示。图6的状态是初始时期分配功能的状态,并且如后面将要描述的该状态能够改变。
引导代码位于NAND存储器15b的开始块(块0)。使用块1和随后各块执行该实施例的操作。
如图6中所示的示例中,块0之后的两个块(即,块1和块2)分别用作“管理区1”和“管理区2”。“管理区”是用于存储管理NAND存储器中缺陷块和替换块的管理信息的区域。管理信息的细节将在随后描述。提供了多个管理区组,作为防止由于例如当正执行写入NAND存储器时断电造成的管理信息的丢失(损坏)的方法。
在“管理区2”之后,在块3和4中分别提供了“干扰区1”和“干扰区2”。“干扰区”是用来识别管理区和替换区边界的区域。
在“干扰区2”的块4之后,块5到14被设置为替换区。替换区是分配作为用来替换缺陷块的区域。在图6中所示的示例中,分配了10块作为替换区。通过考虑要使用的NAND存储器容量,将块的数量调整到最佳值。
在替换区和随后各块之后的块(块15)中,存在实际存储程序的代码区。
参照图7,现在将要给出本实施例中各管理区的内部配置和存储在其中的信息的描述。下面的信息存储在管理区的一个块150中。
(1)校验数位151:校验数据(如校验和),用来校验一个管理区(块)内的数据的损坏。这样使得能够确定关于当例如数据正写入电源被切断时、块内的不完全写入状态。
(2)代名(generation number)152:当管理区(块)内的管理信息被更新时指示代的代信息。例如,这是按顺序增加的数量。
(3)替换区的使用数量153:在多个提供作为替换区的块中已使用的块的数量。可以使用未使用的块数量替换这个数量。由于替换区中块的初始数量是已知的值(这里,10),如果已用的块数量和未用的块数量中的一个已知,则另一个数量能够知道。如稍后将要描述的,在替换区的块变成有缺陷的、并且这样的缺陷块对应于“已用”块的情况下。
(4)替换目标的对应信息154:当将替换区中未使用的无缺陷块分配为特定块的替换目标时,该对应信息是指示它们间的对应的信息。这里,缺陷块的块数和替换区的块数以互相对应的方式存储。在该示例中,最多能够存储10条信息。
(5)关于管理区(块1到14)内的缺陷块的信息155:管理区、干扰区和替换区(图6的示例中的块1到14)是用于管理的区域。当它们之一的块变成有缺陷的时,该关于管理区内缺陷块的信息,是用来指定记录的缺陷块的信息(这里,块数)。当要使用用于管理的区的某块时,在该块已经被记录为缺陷的情况下,将跳过该块并使用下一块。
现在将参照图8,给出当执行写入块操作时(当执行软件更新时),检测到后来出现的缺陷块时的操作。假设在块N+3中检测到缺陷,并且写入被确定为不可能。该块N+3被标记为坏块,并且以下禁止其使用。将要写入块N+3的代码以替换的方式写入替换区10,而不是写入下一个块N+4。该替换信息被存储在“管理区1”中。在该示例中,使替换区10用块N+3来替换的替换信息被存储。
通过以上面描述的方式,使用管理信息执行对缺陷块和替换块的管理,可以使实际的物理地址对应逻辑地址,并且可以将逻辑地址转换为物理地址。同样,通过参照逻辑地址,能够确保存储器地址的连续性。根据使用存储在管理区中的替换信息将逻辑地址转换为物理地址,不需要外部提供特定的地址转换装置,如已知的存储器管理单元(MMU)。
接下来,参照图9,将要描述当管理区的块变成缺陷时所执行的操作。在该实施例中,如上面所描述的,对于管理区,原形(original)和副本(duplicate)两个区域使用“管理区1”和“管理区2”来管理。“管理区1”和“管理区2”交替使用,并且使用的一方成为“原形”而另一方成为“副本”。对于将信息存储在管理区中有两种方法:一种是将一代的管理信息存储于一个块中;而另一种是将多个代的管理信息附加地写入一个块中,并且当对原形区的附加写入变成不可能时,执行“原形”和“副本”间的切换。对于这点,为了描述简单的缘故,将描述前一种方法。
提供两个区域的理由如下。由于应用本发明的存储器的特征,所以当将信息重新记录在已经记录了信息的位置时,需要对块执行一次擦除操作以删除记录在那里的信息。如果只使用一个区域更新管理区,则在当管理区被擦除时由于断电等而出现问题的情况下,当前的管理信息丢失了。为了防止这样的故障,将用于存储最近信息的块、与执行擦除操作并且写入了最近更新的管理信息的块分开。在更新管理区的具体操作中,当需要执行管理区的更新时,“副本”区被擦除,从“原形”区读取的信息被更新,并且使用新的代名对“副本”区执行写入。当该写入完成时,原形区和副本区的交换完成。旧的“副本”区变成了“原形”区,而旧的“原形”区变成了“副本”区。
用这样的方式执行管理信息的写入,使得更新了已经预先读入RAM的“原形”管理区的拷贝,并且将管理信息写入至此已成为“副本”的管理区中(作为更新方法,可以有当管理信息的更新成为必要时从“原形”区产生拷贝到存储器的方法。然而,在这个实施例中,通过考虑执行期间的效率,假设最新的管理信息的拷贝已经预先读入存储器中并保持常驻)。为了区别管理信息的原形和副本,将附接到管理信息的代名152相互比较,并且已经更近记录的区域被处理为“原形”。
在图9(a)的状态中,当在RAM中更新的新管理信息要写入“副本”区时,在块2变成如图9(b)所示的缺陷块的情况下,如图9(c)所示,块3的干扰区被分配为新的“管理区2”。原始的“管理区2”被认为是有缺陷的,并被记录在RAM中的管理信息中,并且考虑到块2是有缺陷的而更新的管理信息被写入新分配的“管理区2”中。结果,原始的“管理区1”成为“副本”,新写入的“管理区2”成为“原形”。
作为块3变成管理区的结果,将干扰区1和2移动对应于一个块的量,并且移动到块4和5。预定数据(如0xAA)被预先写入干扰区,使得干扰区用作识别代码区21和管理区之间边界的区域。在该实施例中,对于干扰区相同的预定数据已经被写入替换区中未使用的块。在该情况下,根据块内的数据不能区分干扰区和替换区。即使将“干扰区1和2移动了对应于一个块的量”,也只有管理信息改变了,并且不需要在该替换区上,特别地执行特定的写入过程等来设置替换区的一个块为新的干扰区。
如上所述,替换区不但能够用来替换代码区的缺陷块,而且也可以替换管理区,如图9中所示。然而,和替换代码区的缺陷块不同,替换管理区通过移动干扰区来执行。以上面描述的方式,通过以将干扰区插入在NAND存储器15b内的存储空间中的管理区和干扰区之间的方式,分配每个块的功能,能够有效地使用替换空间。
作为替代,考虑在管理区中提供固定数量的专用替换区、并且在代码区中提供固定数量的替换区的实现格式。然而,依赖于缺陷块出现在管理区和代码区中的情形,其中一个替换区会变成浪费。作为比较,如在该实施例中,替换区能够动态地用于管理区和代码区,可以有效地使用替换区的所有块而没有浪费。
在该实施例中,替换过程能够持续直到不能分配对于两个块的干扰区。在用完替换区1后,检测到下一个替换区是对于干扰区,并且替换操作停止。这样防止了管理区和替换区相互重叠。
在图9等中,当各区域的分配将被改变时,区域从1开始重新编号。这是为了描述的方便,并且分配给相应区域的编号并不是特别重要。
如图8中所示,使用替换区中离干扰区最远的块,用替换区对代码区中的缺陷块执行替换。
图10显示以上面描述的方式、用替换区替换代码区中缺陷块的情况,剩余的替换区变成一个块,在该时间点缺陷出现在代码区的块L(没有显示)中,并且替换区被用完。就是说,直到临近干扰区2的替换区1的区域已经“已使用”。此外,如图10的块11中所示,存在替换区中的块变成有缺陷的情况。在该情况下,该缺陷块存储在关于用于管理的区的内缺陷块(图7)的信息155中,并被管理,使得这个块将不会被使用。
利用上面的配置,通过管理管理区内的逻辑地址,保持了NAND存储器中程序地址的连续性。由于这个原因,即使当NAND存储器中有缺陷块,软件更新引擎可以通过参照管理区以用于更新的文件为基础执行软件更新。
图11是显示当发现缺陷块后、执行缺陷块的替换过程的示意性过程的流程图。后来出现的缺陷块能够在图12(之后将描述)的步骤S23和S24中、以及图11的步骤S18中检测到。
在图11的处理中,首先,检查在替换区(S11)中是否存在没有使用的无缺陷块。如果不存在,这个过程完成。此时,一些消息(如错误消息)可以显示在显示部分上。
当存在未使用的无缺陷块时,检查缺陷块是否为管理区(S12)中的块。如果该缺陷块不是管理区中的块,则过程进行到步骤S15。如果是在管理区中的块,则将前干扰区1设置为新的管理区(S13),并且当前的替换区1设置为新的干扰区2(S14)。
在步骤S15中检查该缺陷块是否为代码区中的块。当该缺陷块不是代码区中的块时,考虑到块(替换区中块)是有缺陷的,对管理信息更新(S17),并且过程进行到步骤S18。
当缺陷块是代码区中的块时,用替换区中未使用的离干扰区最远的无缺陷块,替换缺陷块(S16)。
其后,NAND存储器156的管理区中块的内容被更新(S18)。
图12是显示以用于更新的文件为基础、更新NAND存储器156内程序的过程的流程图。
最初,当程序被写入NAND存储器15b(S21)时,以管理区(原形)的管理信息为基础,确定待写入的块是否已经由替换区替换(S22)。
当待写入的块已经被替换,程序被写入由管理信息指定的替换区域(替换块)(S23)。当待写入的块没有被替换时,将程序写入待写入的区域(S24)。
图13显示对应于作为缺陷块替换结果的NAND存储器的物理地址的实际块、和对应逻辑地址的代码区之间的关系。
基于管理区中管理信息的、NAND存储器156的物理地址和逻辑地址之间的对应,使得即使当更新前的程序的NAND存储器中存在缺陷块时,逻辑地址的连续性也得以确保。不需要通过使用用于更新的文件来移动NAND存储器15b内块的内容,并且程序的更新成为可能。
当程序将从NAND存储器15b传递到SDRAM 15a时,可以通过以类似的方式检查替换区是否可用,将程序正确地传递到SDRAM。
图14是显示读取NAND存储器15b过程的流程图。首先,以管理信息为基础,检查将要读取的块是否已经被替换(S31)。如果将要读取的块没有被替换,则按原样读取要读取的块(S32)。如果将要读取的块已经被替换,则读取替换目标块(S33)。如果有另一个块要读取(S34),则过程返回到步骤S31,并且重复上面描述的过程。
通过使用便携式电话终端作为示例已经描述了本发明。但是,本发明不限于电话终端。
在本发明中,软件差别更新已经被描述为主要的应用。本发明不限于软件差别更新,并且能够一般地应用到NAND存储器的一些块的内容需要重写而不对其它块施加影响的情况。
本发明能够适当地应用于NAND型闪速存储器,但也能够应用于NOR型闪速存储器。
本领域的技术人员应该理解的是:依赖于设计需要和其它因素,各种修改、组合、子组合和替换可以出现,只要它们在权利要求或其等效的范围内。