掌桥专利:专业的专利平台
掌桥专利
首页

一种模拟电可擦除存储器、控制方法及微处理芯片

文献发布时间:2024-07-23 01:35:12


一种模拟电可擦除存储器、控制方法及微处理芯片

技术领域

本申请涉及电子技术领域,具体地涉及一种模拟电可擦除存储器、控制方法及微处理芯片。

背景技术

模拟电可擦除存储器通常包括随机存取存储器(Random Access Memory,RAM)和电可擦除非易失性存储器,其中,电可擦除非易失性存储器的存储容量远大于RAM。相对于常规的非易失性存储器,模拟电可擦除存储器具有更高的耐用性和灵活性,因此,其适用于数据需要经常更新且必须以非易失性方式存储的汽车应用中。

在实际应用中,模拟电可擦除存储器可能会发生各种故障,例如断电。如果在模拟电可擦除存储器的数据写入过程中发生断电,可能导致数据丢失。

需要指出的是,公开于本申请背景技术部分的信息仅仅旨在加深对本申请的一般背景技术的理解,而不应当被视为承认或以任何形式暗示该信息构成己为本领域技术人员所公知的现有技术。

发明内容

本申请提供一种模拟电可擦除存储器、控制方法及微处理芯片,以利于解决现有技术中如果在模拟电可擦除存储器的数据写入过程中发生断电,可能导致数据丢失的问题。

第一方面,本申请实施例提供了一种模拟电可擦除存储器,包括:控制器;随机存取存储器,所述随机存取存储器与所述控制器通信连接;电可擦除非易失性存储器,所述电可擦除非易失性存储器与所述控制器通信连接;其中,所述控制器被配置为:在第一模式下,按照快速写入程序在所述电可擦除非易失性存储器中连续写入多条快写数据记录,多条所述快写数据记录中的非最后一条快写数据记录包括所述随机存取存储器对应的存储地址和存储数据,多条所述快写数据记录中的最后一条快写数据记录包括快写状态标志以及所述随机存取存储器对应的存储地址和存储数据;在第二模式下,按照常规写入程序在所述电可擦除非易失性存储器中写入常规数据记录,所述快速写入程序的耗时比所述常规写入程序的耗时短。

第二方面,本申请实施例提供了一种模拟电可擦除存储器的控制方法,所述模拟电可擦除存储器包括控制器、随机存取存储器和电可擦除非易失性存储器,所述控制器分别与所述随机存取存储器和所述电可擦除非易失性存储器通信连接,所述方法包括:在第一模式下,按照快速写入程序在所述电可擦除非易失性存储器中连续写入多条快写数据记录,多条所述快写数据记录中的非最后一条快写数据记录包括所述随机存取存储器对应的存储地址和存储数据,多条所述快写数据记录中的最后一条快写数据记录包括快写状态标志以及所述随机存取存储器对应的存储地址和存储数据;在第二模式下,按照常规写入程序在所述电可擦除非易失性存储器中写入常规数据记录,所述快速写入程序的耗时比所述常规写入程序的耗时短。

第三方面,本申请实施例提供了一种微处理芯片,包括处理器和上述的存储器控制电路,读数据时,所述处理器直接从所述随机存取存储器读取数据;写数据时,所述处理器发起的写请求由所述控制器响应,所述控制器将数据按一定格式写入到所述电可擦擦非易失性存储器中,并完成所述随机存取存储器的数据更新。

本申请实施例中,将电可擦除非易失性存储器的数据写入模式分为第一模式和第二模式。在第一模式下,按照快速写入程序进行数据记录的写入,且只有最后一条快写数据记录包括快写状态标志,在第二模式下,按照常规写入程序进行数据记录的写入。由于本发明的快速写入程序的耗时比现有快速写入程序以及常规写入程序的耗时短,因此,在相同的时间内按照本发明的快速写入程序可以写入更多的数据,以最大程度的避免数据的丢失。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。

图1为本申请实施例提供的一种模拟电可擦除存储器的结构示意图;

图2A为本申请实施例提供的一种模拟电可擦除存储系统的结构示意图;

图2B为本申请实施例提供的另一种模拟电可擦除存储系统的结构示意图;

图3为本申请实施例提供的一种数据记录的示意图;

图4为本申请实施例提供的一种电可擦除非易失性存储器的结构示意图;

图5A为本申请实施例提供的另一种数据记录的示意图;

图5B为本申请实施例提供的另一种数据记录的示意图;

图6为本申请实施例提供的另一种模拟电可擦除存储系统的结构示意图;

图7A为本申请实施例提供的另一种数据记录的示意图;

图7B为本申请实施例提供的另一种数据记录的示意图;

图7C为本申请实施例提供的另一种数据记录的示意图;

图7D为本申请实施例提供的另一种数据记录的示意图;

图8A为本申请实施例提供的另一种数据记录的示意图;

图8B为本申请实施例提供的另一种数据记录的示意图;

图9为本申请实施例提供的一种快速写入程序的流程示意图;

图10为本申请实施例提供的一种快写数据记录的维护流程示意图;

图11为本申请实施例提供的一种微处理芯片的结构示意图;

图12为本申请实施例提供的另一种微处理芯片的结构示意图;

图13为本申请实施例提供的一种模拟电可擦除存储器的控制方法的流程示意图。

具体实施方式

为了更好的理解本申请的技术方案,下面结合附图对本申请实施例进行详细描述。

应当明确,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。

在本申请实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。

应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,甲和/或乙,可以表示:单独存在甲,同时存在甲和乙,单独存在乙这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。

参见图1,为本申请实施例提供的一种模拟电可擦除存储器的结构示意图。如图1所示,该模拟电可擦除存储器包括RAM、控制器和电可擦除非易失性存储器(例如闪存或使用半导体基板形成的任何其他类型的非易失性存储器),其中,控制器分别与RAM和电可擦除非易失性存储器通信连接。

需要指出的是,图1仅为本申请实施例对模拟电可擦除存储器的一种示例性说明,并不应当将其作为本申请保护范围的限制。示例性的,在一些应用场景中,还可以在模拟电可擦除存储器中添加其他的功能模块,例如在模拟电可擦除存储器中添加其它类型的存储器、外围设备、输入输出设备等,本申请实施例对此不作具体限制。

参见图2A,为本申请实施例提供的一种模拟电可擦除存储系统的结构示意图。如图2A所示,模拟电可擦除存储系统包括处理器和图1所示的模拟电可擦除存储器,其中,模拟电可擦除存储器中的RAM和控制器通过系统总线与处理器通信连接,以便接收处理器发送的请求消息以及向处理器发送响应消息。在本申请实施例中,处理器可以为任何类型的处理器(例如中央处理器、微处理器等)或者任何可以访问模拟电可擦除存储器的数据处理设备。

参见图2B,为本申请实施例提供的另一种模拟电可擦除存储系统的结构示意图。图2B与图2A的不同之处在于,RAM和控制器通过点对点连接的方式分别与处理器通信连接。关于图2B所示的模拟电可擦除存储系统的其它内容可以参见图2A所示实施例的描述,为了表述简洁,在此不再赘述。

可理解,除了图2A所示的系统总线和图2B所示的点对点连接以外,本领域技术人员还可能采用其他的连接方式实现RAM和处理器以及控制器和处理器之间的通信连接。例如,RAM和控制器通过光学或无线通信技术实现与处理器之间的通信连接,本申请实施例对此不作具体限制。

请继续参阅图2A和图2B,当模拟电可擦除存储系统上电后,处理器和控制器会同时接收到复位信号,进而开始工作。工作过程中,处理器可以向模拟电可擦除存储器发送读请求或写请求,模拟电可擦除存储器根据处理器发送的读请求或写请求进行相应的响应。

具体地,当处理器需要在模拟电可擦除存储器中读数据时,向RAM发送读请求,RAM根据读请求将相关数据提供给处理器。也就是说,在读数据时,RAM是处理器访问模拟电可擦除存储器的接口。进一步的,读请求中通常包括RAM地址(RAM对应的存储地址)。当RAM接收到处理器发送的读请求后,根据读请求中的RAM地址查找对应的RAM数据(RAM地址对应的存储数据),并将查找到的RAM数据提供给处理器。示例性的,读请求中的RAM地址为“Ox4”,在RAM中,“Ox4”位置存储的RAM数据为“Ox33333333”,则RAM接收到处理器发送的读请求后,将数据“Ox33333333”提供给处理器。

当处理器需要将数据写入模拟电可擦除存储器中时,向控制器发送写请求,控制器根据写请求将相关数据按照一定的格式写入电可擦除非易失性存储器中,并在电可擦除非易失性存储器中形成一条数据记录。也就是说,在写数据时,控制器是处理器访问模拟电可擦除存储器的接口。进一步的,写请求中通常包括RAM地址和RAM数据。当控制器接收到处理器发送的写请求后,根据RAM地址和RAM数据生成一条数据记录,并将该数据记录存储在电可擦除非易失性存储器中。

在一种可能的实现方式中,数据记录的数据结构中包括状态标志字段(在本文的其它部分,也可能被称为“状态标志位”)、RAM地址字段和RAM数据字段。其中,状态标志字段用于写入状态标志,状态标志可以表征数据记录的状态。示例性的,状态标志包括有效、无效、空、快写等,关于不同状态标志的具体内容在下文中进行详细描述。RAM地址字段用于写入RAM地址,RAM数据字段用于写入RAM数据。

参见图3,为本申请实施例提供的一种数据记录的示意图。如图3所示,该数据记录的状态标志为“有效”、RAM地址为“Ox5”,RAM数据为“Ox22222222”。需要补充说明的是,本领域技术人员根据实际需要还可以在数据记录中添加其他的字段,本申请实施例对此不作具体限制。

另外,当电可擦除非易失性存储器中的数据发生更新后,控制器需要将更新的数据同步至RAM。具体地,控制器可以根据数据记录中的RAM地址,将数据记录中的RAM数据同步至RAM中的相应位置。例如,当在电可擦除非易失性存储器中生成图3所示的数据记录后,将数据“Ox22222222”存储至RAM中的“Ox5”位置,实现RAM和电可擦除非易失性存储器的数据同步。

另一种需要同步数据的情况为,当模拟电可擦除存储器断电后,RAM中的数据会被完全清除,电可擦除非易失性存储器中的数据保留。当模拟电可擦除存储器恢复供电后,电可擦除非易失性存储器中的全部有效数据(状态标志为“有效”的RAM数据)可以按照上述数据同步方式同步至RAM。由于电可擦除非易失性存储器是非易失性(断电后数据不会丢失)的,因此,本申请实施例提供的模拟电可擦除存储器可以避免断电后的数据丢失。

参见图4,为本申请实施例提供的一种电可擦除非易失性存储器的结构示意图。如图4所示,电可擦除非易失性存储器中包括多个扇区(扇区1-扇区N),每个扇区中包括多个块(块1-块M),每个扇区中包括至少一个保留块(例如,每个扇区中的第一个块为保留块)。其中,保留块用于存储扇区的信息,例如,扇区标识符、扇区状态等。

在扇区中,除保留块以外,每一个块用于写入一条数据记录。在电可擦除非易失性存储器中写入数据记录时,通常根据块的物理地址按顺序依次写入。

参见图5A,为本申请实施例提供的另一种数据记录的示意图。如图5A所示,当前数据记录写入扇区3中的块8,则下一条数据记录应当写入扇区3中的块9,依次类推。当扇区3被写满后,按照顺序,继续在扇区4中写入数据记录。

需要指出的是,若电可擦除非易失性存储器中存在与新的数据记录(后写入的数据记录)具有相同RAM地址的旧的数据记录(先写入的数据记录),说明该RAM地址对应的RAM数据进行了更新,因此,可以将旧的数据记录中的状态标志位改写为“无效”,以实现RAM数据的更新。

示例性的,在图5A中的块8中写入新的数据记录后,发现块8中新的数据记录的RAM地址和块7中旧的数据记录的RAM地址均为“Ox4”,即,新的数据记录中的RAM地址和旧的数据记录中的RAM地址相同。因此,可以将块7中旧的数据记录中的状态标志位改写为“无效”,如图5B所示。可理解,在将块7中旧的数据记录中的状态标志位改写为“无效”后,可以实现RAM地址“Ox4”对应的RAM数据的更新,即将RAM地址“Ox4”对应的RAM数据由“Ox33333333”更新为“Ox44444444”。

进一步的,在完成数据记录的写入后,为了提高电可擦除非易失性存储器的利用效率,通常还需要执行“扇区压缩”和“扇区擦除”的操作。具体地,随着电可擦除非易失性存储器的使用,旧的扇区(先写入数据的扇区)中有效的数据记录可能逐渐减少,为了释放旧的扇区,可以将旧的扇区中有效的数据记录移动至新的扇区(后写入数据的扇区),进而将有效的数据记录集中在新的扇区,实现扇区压缩。可理解,在将旧的扇区中有效的数据记录移动至新的扇区后,旧的扇区中可能仅存在状态标志位为“无效”或“空”的数据记录,因此,可以将旧的扇区中的数据擦除,即实现扇区擦除。

综上所述,在电可擦除非易失性存储器的常规写入程序中,通常需要经过数据写入(包括RAM地址和RAM数据)、状态标志位改写、数据更新(改写旧的数据记录的状态标志位)、扇区压缩、扇区擦除等步骤。

可理解,按照常规写入程序进行数据记录写入时需要执行较多的步骤,进而在数据记录的写入过程中需要耗费大量的时间。如果在数据记录的写入过程中发生断电,由于数据记录的写入时间不足,可能导致数据记录不能被完全写入,进而导致数据丢失。

针对上述问题,本申请实施例提供了一种模拟电可擦除存储器的控制方案,将电可擦除非易失性存储器的数据写入模式分为第一模式和第二模式。在第一模式下,按照快速写入程序进行数据记录的写入,在第二模式下,按照常规写入程序进行数据记录的写入。由于快速写入程序的耗时比常规写入程序的耗时短,因此,在相同的时间内按照快速写入程序可以写入更多的数据,以最大程度的避免数据的丢失。

为了便于说明,在本文的其它部分,第一模式也可能被称为“快速写入模式”或“低功率写入模式”,将在第一模式下写入的数据记录称为“快写数据记录”;第二写入模式也可能被称为“常规写入模式”或“全功率写入模式”,将在第二模式下写入的数据记录称为“常规数据记录”。

可理解,在模拟电可擦除存储器正常工作过程中,通常按照常规写入程序在电可擦除非易失性存储器中写入常规数据记录,即,模拟电可擦除存储器工作在常规写入模式下。关于常规写入程序的具体内容可以参见上文中的描述,在此不再赘述。当模拟电可擦除存储器发生断电时,为了使得模拟电可擦除存储器尽可能的写入更多的数据,将模拟电可擦除存储器的写入模式由常规写入模式切换至快速写入模式,在快速写入模式下,按照快速写入程序在电可擦除非易失性存储器中连续写入多条快写数据记录,关于快速写入程序的具体内容在下文中展开描述。

参见图6,为本申请实施例提供的另一种模拟电可擦除存储系统的结构示意图。如图6所示,在本申请实施例中,模拟电可擦除存储器中还设有低压检测模块,该低压检测模块用于进行断电检测。具体地,当低压检测模块检测到电压低于预设的电压阈值时,则认为发生了断电,进而通知控制器进入快速写入模式。当然,在一些可能的实现方式中,还可以在控制器中集成低压检测逻辑,由控制器检测是否发生断电;或者,在处理器中集成低压检测逻辑,由处理器检测是否发生断电,当处理器检测到发生断电时,通知控制器进入快速写入模式。

需要补充说明的是,除了发生断电导致模拟电可擦除存储器中的电路失压以外,还可能由于其他故障导致模拟电可擦除存储器中的电路失压,因此,本申请实施例提供的方案除了适用于断电的场景以外,同样可以适用于其他故障导致电路失压的场景。另外,本领域技术人员根据实际需要还可以设置其他的快速写入模式的触发条件。例如,当采集的数据量增大时,为了避免丢帧,触发控制器进入快速写入模式。也就是说,在不发生故障时,同样可以触发控制器进入快速写入模式,以实现数据记录的快速写入。

具体实现中,在快速写入模式下,控制器按照快速写入程序在电可擦除非易失性存储器中连续写入多条快写数据记录。其中,多条快写数据记录中的非最后一条快写数据记录包括RAM地址和RAM数据,多条快写数据记录中的最后一条快写数据记录包括快写状态标志、RAM地址和RAM数据。也就是说,在快速写入模式下,仅对最后一条快写数据记录中的状态标志位进行改写,对于其他的快写数据记录仅写入RAM地址和RAM数据,因此可以提高数据写入速度,以最大程度的避免数据的丢失。另外,在快速写入模式下,电可擦除非易失性存储器不执行数据更新、扇区压缩、扇区擦除等操作,以尽可能的节省时间。

在一种可能的实现方式中,当进入快速写入模式时,处理器可以通知控制器写请求的总数量(还需要写入的数据记录的总数量)。控制器在接收到写请求后,按照快速写入程序在电可擦除非易失性存储器中写入当前写请求对应的当前快写数据记录,并判断当前写请求是否为最后一个写请求。若当前写请求为最后一个写请求,则在当前快写数据记录中写入快写状态标志,即,将当前快写数据记录的状态标志位由“空”改写为“快写”;若当前写请求不是最后一个写请求,则等待接收下一个写请求。也就是说,除了最后一个快写数据记录外,其它快写数据记录中的状态标志位不作任何处理。

示例性的,在图7A所示的应用场景中,在扇区3的块5-块8中按照常规写入程序写入常规数据记录。当完成块8中常规数据记录的写入后,发生了掉电(或即将要掉电),则开始进入快速写入模式。处理器通知控制器剩余的写请求的总数量为4,即需要写入4条快写数据记录。当控制器接收到第1个写请求(断电后的第1个写请求)时,将第1个写请求的RAM地址“Ox8”和RAM数据“Ox00000001”写入块9,并判断第1个写请求是否为最后一个写请求。由于当前接收的写请求数量“1”<写请求的总数量“4”,因此,确定第1个写请求不是最后一个写请求,则不对块9中快写数据记录的状态标志位进行改写,即块9中快写数据记录的状态标志位保持为“空”,继续等待接收下一个写请求。当控制器接收到第2个写请求时,将第2个写请求的RAM地址“OxC”和RAM数据“Ox00000002”写入块10,并判断第2个写请求是否为最后一个写请求。由于当前接收的写请求数量“2”<写请求的总数量“4”,因此,确定第2个写请求不是最后一个写请求,则不对块10中快写数据记录的状态标志位进行改写,即块10中快写数据记录的状态标志位保持为“空”,继续等待接收下一个写请求。当控制器接收到第3个写请求时,将第3个写请求的RAM地址“Ox10”和RAM数据“Ox00000003”写入块11,并判断第3个写请求是否为最后一个写请求。由于当前接收的写请求数量“3”<写请求的总数量“4”,因此,确定第3个写请求不是最后一个写请求,则不对块11中快写数据记录的状态标志位进行改写,即块11中快写数据记录的状态标志位保持为“空”,继续等待接收下一个写请求。当控制器接收到第4个写请求时,将第4个写请求的RAM地址“Ox14”和RAM数据“Ox00000004”写入块12,并判断第4个写请求是否为最后一个写请求。由于当前接收的写请求数量“4”=写请求的总数量“4”,因此,确定第4个写请求是最后一个写请求,则将块11中快写数据记录的状态标志位由“空”改写为“快写”。至此,完成全部快写数据记录的存储。

需要补充说明的是,在一些可能的实现方式中,控制器可以基于其它的方式确定当前写请求是否为最后一个写请求。示例性的,处理器可以在最后一个写请求中添加对应的标识符,当控制器检测到该标识符后,确定当前写请求是最后一个写请求。

在一种可能的实现方式中,为了确保快写数据记录中数据的可靠性,在写入当前快写数据记录之后还可以对当前快写数据记录进行校验。若当前快写数据记录校验不通过,则在当前快写数据记录中写入无效状态标志,即,将当前快写数据记录的状态标志位由“空”改写为“无效”。进一步的,重新写入当前写请求对应的当前快写数据记录。若重新写入的当前快写数据记录通过校验,则在当前快写数据记录中状态标志不做修改,即,将当前快写数据记录的状态标志位为“空”,然后继续等待接收下一个写请求。

为了便于理解,下面结合完整的流程图对本申请实施例提供的快速写入程序进行说明。

参见图9,为本申请实施例提供的一种快速写入程序的流程示意图。如图9所示,其主要包括以下步骤。

步骤S901:通知控制器进入快速写入模式,以及写请求的总数量。

示例性的,当发生掉电(或即将要掉电)时,可以通知控制器进入快速写入模式,并将写请求的总数量发送至控制器。

步骤S902:接收写请求。

具体地,当进入快速写入模式后,控制器可以等待接收处理器发送的写请求。

步骤S903:根据当前写请求,在电可擦除非易失性存储器中写入当前写请求对应的当前快写数据记录。

具体地,在接收到写请求后,处理器可以根据接收到的当前写请求,在电可擦除非易失性存储器中写入当前写请求对应的当前快写数据记录。需要指出的是,此时,当前快写数据记录中的状态标志位还未进行改写。

步骤S904:判断当前快写数据记录是否校验通过。

具体地,在完成当前快写数据记录中RAM地址和RAM数据的写入后,对当前快写数据记录进行校验,并判断当前快写数据记录是否校验通过。若判断结果为是,说明RAM地址和RAM数据已经成功写入,则进入步骤S906;若判断结果为否,说明RAM地址和RAM数据未成功写入,则进入步骤S905。

步骤S905:在当前快写数据记录中写入无效状态标志。

具体地,若未校验通过,说明RAM地址和RAM数据未成功写入,则在当前快写数据记录中写入无效状态标志,之后返回步骤S904,重新写入当前写数据记录中的RAM地址和RAM数据。

步骤S906:判断当前写请求是否为最后一个写请求。

具体地,在当前快写数据记录校验通过后,判断当前写请求是否为最后一个写请求。若判断结果为是,则进入步骤S907,对当前快写数据记录的状态标志位进行改写;若判断结果为否,则返回步骤S902,继续等待接收下一个写请求。

步骤S907:在当前快写数据记录中写入快写状态标志。

具体地,若当前写请求为最后一个写请求,即当前快写数据记录为最后一个快写数据记录,则在当前快写数据记录中写入快写状态标志,以便在下一次上电后基于最后一个快写数据记录中的快写状态标志对快写数据记录进行维护。需要指出的是,图9所示实施例中的具体内容可以参见上文的描述,为了表述简洁,在此不再赘述。另外,本领域技术人员根据实际需要可以对图9中部分步骤的执行顺序进行调整,本申请实施例对此不作具体限制。

在一种可能的实现方式中,若某一快写数据记录重新写入多次后,仍然无法成功写入,则会影响后面其它快写数据记录的写入,最后可能导致完全失压(低于电可擦除非易失性存储器的最低工作电压)前无法完成全部快写数据记录的写入。

针对该问题,在一种可能的实现方式中,可以在控制器中设置写入次数阈值,在重新写入当前快写数据记录之前,判断当前快写数据记录的写入次数是否小于等于预设的写入次数阈值;若当前快写数据记录的写入次数小于等于预设的写入次数阈值,则重新按照快速写入程序在电可擦除非易失性存储器中写入当前写请求对应的当前快写数据记录;若当前快写数据记录的写入次数大于预设的写入次数阈值,则跳过当前写请求,继续执行下一个写请求。等待后续适当的时机再继续写入未成功的数据;也可以是若该薯条数据多次写入均失败(即多次校验不成功),则退出本次快速写入模式,本次快速写入数据失败。

可理解,若写入次数阈值过大,则会导致某一条快写数据记录的写入消耗较长的时间,进而可能导致无法完成全部快写数据记录的写入。因此,写入次数阈值不宜设置过大。具体地,可以将写入次数阈值设置为2或3。当然,本领域技术人员根据实际需要还可以对写入次数阈值进行调整,本申请实施例对此不作具体限制。

如上文所述,在常规写入程序中通常需要经过数据写入(包括RAM地址和RAM数据)、状态标志位改写、数据更新(改写旧的数据记录的状态标志位)、扇区压缩、扇区擦除等步骤,在快速写入程序中仅执行数据写入和最后一条快写数据记录的状态标志位改写。因此,相对常规写入程序,快速写入程序减少了较多的步骤,进而可以实现数据的快速写入。

但是,在后续工作过程中,由于快速写入程序减少了较多的步骤,同样会产生一系列的问题。具体地,如上文所述,在进行数据同步时,控制器仅将电可擦除非易失性存储器中状态标志位为“有效”的数据记录同步至RAM。按照快速写入程序,由于部分快写数据记录的状态标志位为“空”(如图7A中的块9-块11对应的快写数据记录),导致该部分快写数据记录中的RAM数据无法同步至RAM。

具体地,在快速写入模式后的第一个常规写入模式下,判断是否查找到包含快写状态标志的快写数据记录。由于在快速写入模式下,仅将最后一条快写数据记录的状态标志位改写为“快写”,因此若查找到包含快写状态标志的快写数据记录,则确定完成了所有快写数据记录的写入,即认为所有的快写数据记录均为有效的(即使现在快写数据记录的状态标志位并非为“有效”)。因此,若查找到包含快写状态标志的快写数据记录,则在多条快写数据记录中分别写入有效状态标志,即,将快写数据记录的状态标志位均改写为“有效”。

示例性的,在图7A所示的应用场景中,查找到块12中的快写数据记录中包含快写状态标志,则在图7A中的多条快写数据记录(块9-块12中的快写数据记录)中分别写入有效状态标志,进而完成快写数据记录的维护,如图7B所示。

相反,若未查找到包含快写状态标志的快写数据记录,则确定未完成所有快写数据记录的写入,此时即使已经完成了部分快写数据记录的写入,仍然认为写入的快写数据记录均为无效的。因此,若未查找到包含快写状态标志的快写数据记录,则在多条快写数据记录中分别写入无效状态标志,即,将快写数据记录的状态标志位均改写为“无效”。

示例性的,在图8A所示的应用场景中,虽然在块9-块12中存在快写数据记录,但是块9-块12中的快写数据记录中均不存在快写状态标志,说明未完成所有快写数据记录的写入,则在图8A中的多条快写数据记录(块9-块12中的快写数据记录)中分别写入无效状态标志,完成快写数据记录的维护,如图8B所示。

在一种可能的实现方式中,在查找到包含快写状态标志的快写数据记录后,从多条快写数据记录中的第一条快写数据记录开始,依次在每一条快写数据记录中写入有效状态标志。其原因在于,在多条快写数据记录中,仅最后一条快写数据记录存在快写状态标志。若首先将最后一条快写数据记录的状态标志位由“快写”改写为“有效”,之后在对其他快写数据记录维护的过程中再次断电或掉电,则上电后无法查到包含快写状态标志的快写数据记录。此时,会认为在完全失压前未完成所有快写数据记录的写入,即认为剩余的快写数据记录均为无效的,进而在剩余的快写数据记录中分别写入无效状态标志。显然,该判断逻辑是错误的。因此,从第一条快速写数据记录开始维护,带有“快写”标志的数据记录最后维护可以确保掉电后上电再掉电的情况,过程更加严谨、发生错误的可能性大大降低。

示例性的,在图7A所示的应用场景中,在对块9-块12中的快写数据记录进行维护时,首先将块12中的快写数据记录的状态标志位由“快写”改写为“有效”,之后发生了断电,则块9-块12中的快写数据记录如图7C所示。之后,模拟电可擦除存储器重新上电,但是在图7C所示的状态下,块9-块11的快写数据记录(由于块12中的快写数据记录的状态标志位已经改为“有效”,此时已经不再将其认定为快写数据记录)中均不存在快写状态标志。此时,控制器判断未完成所有快写数据记录的写入,即认为块9-块11的快写数据记录均为无效的,则在图7C中的多条快写数据记录(块9-块11中的快写数据记录)中分别写入无效状态标志,如图7D所示。

为了避免上述问题,在本申请实施例中,在查找到包含快写状态标志的快写数据记录后,从多条快写数据记录中的第一条快写数据记录开始,依次在每一条快写数据记录中写入有效状态标志,即从第一条快写数据记录开始,依次将每一条快写数据记录的状态标志位改写为“有效”。可理解,在该过程中即使发生了断电,由于最后一条快写数据记录中仍然存在快写状态标志,因此,再次上电后还可以继续在剩余的快写数据记录中写入有效状态标志。直到完成所有非最后一条快写数据记录的状态标志位的改写后,再将最后一条快写数据记录的状态标志位由“快写”改写为“有效”。

在一种可能的实现方式中,若未查找到包含快写状态标志的快写数据记录,说明未完成所有快写数据记录的写入。由于在该状态下多条快写数据记录中均不存在快写状态标志,因此,可以从任意一条快写数据记录开始,依次在每一条所述快写数据记录中写入无效状态标志,即使在该过程中发生了断电,再次上电后也不会影响继续在剩余的快写数据记录中写入无效状态标志。在本申请实施例中,为了便于程序的执行,从多条快写数据记录中的第一条快写数据记录开始,依次在每一条所述快写数据记录中写入无效状态标志。

如上文所述,在进行数据记录的写入时,快速写入程序相对常规写入程序减少了较多的程序/步骤,为了便于说明,在本申请实施例中,将快速写入程序相对常规写入程序减少的程序称为“补充程序”,在完成快写数据记录中状态标志位的改写后,通常还需要对电可擦除非易失性存储器执行补充程序,以便满足电可擦除非易失性存储器的其它性能需求。需要指出的是,该补充程序中并不包含对快写数据记录中状态标志位的改写。具体实现中,该补充程序可以包括数据更新(改写旧的数据记录的状态标志位)、扇区压缩、扇区擦除等。其中,关于数据更新、扇区压缩和扇区擦除的具体内容可以参见上文的描述,为了表述简洁,在此不再赘述。

为了便于理解,下面结合完整的流程图对本申请实施例提供的快写数据记录的维护过程进行说明。

参见图10,为本申请实施例提供的一种快写数据记录的维护流程示意图。如图10所示,其主要包括以下步骤。

步骤S1001:从第一条数据记录开始,判断当前数据记录中是否存在快写状态标志。

具体地,在断电后的第一次上电后,可以从电可擦除非易失性存储器的第一条数据记录开始,判断当前数据记录中是否存在快写状态标志。若判断结果为是,说明当前快写数据记录为最后一条快写数据记录,则进入步骤S1002,开始对快写数据记录的状态标志位进行改写。若判断结果为否,说明当前快写数据记录不是最后一条快写数据记录,则进入步骤S1008,继续查找具有快写状态标志的快写数据记录。

步骤S1002:前往第一条快速写记录。

具体地,在查找到最后一条快写数据记录后,前往第一条快写数据记录,以便从第一条快写数据记录开始,依次对快写数据记录的状态标志位进行改写。可理解,电可擦除非易失性存储器中通常存在常规数据记录、快写数据记录和空的数据记录。在前往第一条快写数据记录之前,首先应当确认哪一条或哪几条数据记录为快写数据记录,下面对快写数据记录的查找过程进行说明。

对于非最后一条快写数据记录,其状态标志位为“空”。但是,空的数据记录的状态标志位同样为“空”。示例性的,图7A中块9-块11中的快写数据记录的状态标志位为“空”;图7A中块13中的空的数据记录的状态标志位同样为“空”。也就是说,仅通过状态标志位无法区分“非最后一条快写数据记录”与“空的数据记录”。进一步的,“非最后一条快写数据记录”的存储数据通常不为空(存储数据通常不为0),“空的数据记录”的存储数据通常为空(存储数据通常为0)。因此,可以结合数据记录的状态标志和存储数据进行综合判断。具体地,若数据记录的状态标志位为空,存储数据不为空,则确定数据记录为快写数据记录。

对于最后一条快写数据记录,由于存在快写状态标志,因此很容易通过快写状态标志进行区分。具体地,若数据记录的状态标志位为“快写”,则确定该数据记录为快写数据记录。

步骤S1003:在当前快写数据记录中写入有效状态标志。

具体地,若当前快写数据记录为非最后一条快写数据记录,则将当前快写数据记录的状态标志位由“空”改写为“有效”;若当前快写数据记录为最后一条快写数据记录,则将当前快写数据记录的状态标志位由“快写”改写为“有效”。

步骤S1004:若存在与当前快写数据记录具有相同RAM地址的旧的数据记录,则在旧的数据记录中写入无效状态标志。

具体地,若存在与当前快写数据记录具有相同RAM地址的旧的数据记录,说明该RAM地址对应的RAM数据进行了更新,因此,可以将旧的数据记录中的状态标志位改写为“无效”,以实现RAM数据的更新。

步骤S1005:若需要,则执行扇区压缩和扇区擦除操作。

具体实现中,可以设置扇区压缩和扇区擦除的触发条件。例如,当电可擦除非易失性存储器的剩余存储容量小于预设的存储容量阈值时,执行扇区压缩和扇区擦除操作。当然,本领域技术人员根据实际需要还可以设置其他的扇区压缩和扇区擦除的触发条件,本申请实施例对此不作具体限制。

步骤S1006:判断当前数据记录是否为最后一条数据记录。

具体地,若判断结果为是,即当前数据记录是最后一条数据记录,说明已经遍历全部数据记录,则结束数据维护流程。若判断结果为否,即当前数据记录不是最后一条数据记录,说明还未遍历全部数据记录,则进入步骤S1007,前往下一条快写数据记录。

步骤S1007:前往下一条快速写数据记录。

具体地,若当前数据记录不是最后一条数据记录,则前往下一条快速写数据记录,返回步骤S1003,继续对下一条快写数据记录进行维护。

步骤S1008:判断当前数据记录是否为最后一条数据记录。

具体地,若当前快写数据记录不是最后一条快写数据记录,则继续判断当前数据记录是否为最后一条数据记录。若判断结果为是,即当前数据记录为最后一条数据记录,说明未查找到具有快写状态标志的数据记录(未完成全部快写数据记录的写入),则进入步骤S1009,开始对快写数据记录的状态标志位进行改写。若判断结果为否,即当前数据记录不是最后一条数据记录,则进入步骤S1010,前往下一条数据记录继续查找具有快写状态标志的最后一条数据记录。

步骤S1009:前往第一条快写数据记录。

具体地,若当前数据记录为最后一条数据记录,说明未查找到具有快写状态标志的数据记录(未完成全部快写数据记录的写入),则前往第一条快写数据记录,以便从第一条快写数据记录开始,依次对快写数据记录的状态标志位进行改写。

关于快写数据记录的确定原理可以参考步骤S1002中的描述,为了表述简洁,在此不再赘述。

步骤S1010:前往下一条数据记录,返回步骤S1001。

具体地,若当前数据记录不是最后一条数据记录,则前往第一条快写数据记录,并返回步骤S1001,继续判断当前数据记录中是否存在快写状态标志。

步骤S1011:在当前快写数据记录中写入无效状态标志。

具体地,将当前快写数据记录的状态标志位由“空”改写为“无效”。

步骤S1012:若需要,则进行扇区压缩和扇区擦除操作。

具体实现中,可以设置扇区压缩和扇区擦除的触发条件。例如,当电可擦除非易失性存储器的剩余存储容量小于预设的存储容量阈值时,执行扇区压缩和扇区擦除操作。当然,本领域技术人员根据实际需要还可以设置其他的扇区压缩和扇区擦除的触发条件,本申请实施例对此不作具体限制。

步骤S1013:判断当前数据记录是否为最后一条数据记录。

具体地,若判断结果为是,即当前数据记录是最后一条数据记录,说明已经遍历全部数据记录,则结束数据维护流程。若判断结果为否,即当前数据记录不是最后一条数据记录,说明还未遍历全部数据记录,则进入步骤S1014,前往下一条快写数据记录。

步骤S1014:前往下一条快写数据记录。

具体地,若当前数据记录不是最后一条数据记录,则前往下一条快速写数据记录,返回步骤S1011,继续对下一条快写数据记录进行维护。需要指出的是,图10所示实施例中的具体内容可以参见上文的描述,为了表述简洁,在此不再赘述。另外,本领域技术人员根据实际需要可以对图9中部分步骤的执行顺序进行调整,本申请实施例对此不作具体限制。

与上述实施例相对应,本申请实施例还提供了一种微处理芯片。

参见图11,为本申请实施例提供的一种微处理芯片的结构示意图。如图11所示,该微处理芯片包括模拟电可擦除存储器。关于模拟电可擦除存储器的具体内容可以参见上述实施例的描述,为了表述简洁,在此不再赘述。

与上述实施例相对应,本申请实施例还提供了另一种微处理芯片。

参见图12,为本申请实施例提供的另一种微处理芯片的结构示意图。如图12所示,该微处理芯片包括模拟电可擦除存储系统。关于模拟电可擦除存储系统的具体内容可以参见上述实施例的描述,为了表述简洁,在此不再赘述。

具体实现中,图11和图12所示的微处理芯片可以为MCU芯片、DSP芯片、MPU芯片、CPU芯片或SOC芯片等,本申请实施例对微处理芯片的产品形态不作具体限制。

与上述实施例相对应,本申请实施例还提供了一种模拟电可擦除存储器的控制方法。

参见图13,为本申请实施例提供的一种模拟电可擦除存储器的控制方法的流程示意图。其中,模拟电可擦除存储器包括控制器、随机存取存储器和电可擦除非易失性存储器,控制器分别与随机存取存储器和电可擦除非易失性存储器通信连接。如图13所示,该方法主要包括以下步骤。

步骤S1301:在第一模式下,按照快速写入程序在电可擦除非易失性存储器中连续写入多条快写数据记录,多条快写数据记录中的非最后一条快写数据记录包括随机存取存储器对应的存储地址和存储数据,多条快写数据记录中的最后一条快写数据记录包括快写状态标志以及随机存取存储器对应的存储地址和存储数据;

步骤S1302:在第二模式下,按照常规写入程序在电可擦除非易失性存储器中写入常规数据记录,快速写入程序的耗时比常规写入程序的耗时短。

在一种可能的实现方式中,按照快速写入程序在电可擦除非易失性存储器中连续写入多条快写数据记录,包括:根据当前写请求,按照快速写入程序在电可擦除非易失性存储器中写入当前写请求对应的当前快写数据记录,当前快写数据记录包括随机存取存储器对应的存储地址和存储数据;判断当前写请求是否为最后一个写请求;若当前写请求为最后一个写请求,则在当前快写数据记录中写入快写状态标志;若当前写请求不是最后一个写请求,则等待接收下一个写请求。

在一种可能的实现方式中,在电可擦除非易失性存储器中写入当前写请求对应的当前快写数据记录之后,还包括:对当前快写数据记录进行校验;若当前快写数据记录校验不通过,则在当前快写数据记录中写入无效状态标志;重新按照快速写入程序在电可擦除非易失性存储器中写入当前写请求对应的当前快写数据记录。

在一种可能的实现方式中,重新按照快速写入程序在电可擦除非易失性存储器中写入当前写请求对应的当前快写数据记录,包括:判断当前快写数据记录的写入次数是否小于等于预设的写入次数阈值;若当前快写数据记录的写入次数小于等于预设的写入次数阈值,则重新按照快速写入程序在电可擦除非易失性存储器中写入当前写请求对应的当前快写数据记录。

在一种可能的实现方式中,还包括:在第一模式后的第一个第二模式下,判断是否查找到包含快写状态标志的快写数据记录;若查找到包含快写状态标志的快写数据记录,则在多条快写数据记录中分别写入有效状态标志;若未查找到包含快写状态标志的快写数据记录,则在多条快写数据记录中分别写入无效状态标志。

在一种可能的实现方式中,在多条快写数据记录中写入有效状态标志,包括:从多条快写数据记录中的第一条快写数据记录开始,依次在每一条快写数据记录中写入有效状态标志。

在一种可能的实现方式中,从多条快写数据记录中的第一条快写数据记录开始,依次在每一条快写数据记录中写入有效状态标志,包括:从第一条数据记录开始,判断当前数据记录是否为快写数据记录;若当前数据记录是快写数据记录,则在当前数据记录中写入有效状态标志;判断当前数据记录是否为最后一条数据记录;若当前数据记录不是最后一条数据记录,则跳转至下一个快写数据记录。

在一种可能的实现方式中,在多条快写数据记录中分别写入无效状态标志,包括:从多条快写数据记录中的第一条快写数据记录开始,依次在每一条快写数据记录中写入无效状态标志。

在一种可能的实现方式中,从多条快写数据记录中的第一条快写数据记录开始,依次在每一条快写数据记录中写入无效状态标志,包括:从第一条数据记录开始,判断当前数据记录是否为快写数据记录;若当前数据记录是快写数据记录,则在当前数据记录中写入无效状态标志;判断当前数据记录是否为最后一条数据记录;若当前数据记录不是最后一条数据记录,则跳转至下一个快写数据记录。

在一种可能的实现方式中,判断当前数据记录是否为快写数据记录,包括:若当前数据记录的状态标志为空,存储数据不为空,则确定当前数据记录为快写数据记录。

在一种可能的实现方式中,在在多条快写数据记录中分别写入有效状态标志之后,还包括:按照补充程序对多条快写数据记录进行处理,补充程序为快速写入程序相对常规写入程序减少的程序。

需要指出的是,关于方法实施例的具体内容可以参见上述实施例的描述,为了表述简洁,在此不再赘述。

与上述实施例相对应,本申请实施例还提供了一种计算机程序产品,该计算机程序产品包含可执行指令,当可执行指令在计算机上执行时,使得计算机执行上述方法实施例中的部分或全部步骤。

本申请实施例中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示单独存在A、同时存在A和B、单独存在B的情况。其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项”及其类似表达,是指的这些项中的任意组合,包括单项或复数项的任意组合。例如,a,b和c中的至少一项可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。

本领域普通技术人员可以意识到,本文中公开的实施例中描述的各单元及算法步骤,能够以电子硬件、计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,任一功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-onl y memory,简称ROM)、随机存取存储器(random access memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本申请的具体实施方式,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。本申请的保护范围应以所述权利要求的保护范围为准。

相关技术
  • 以快闪存储器模拟电擦除可编程只读存储器的系统及方法
  • 一种芯片内建电可擦除存储器的测试模块及其测试方法
技术分类

06120116671813