CN113870931A - 数据写入和数据读取方法及装置、电子设备和存储介质 - Google Patents
数据写入和数据读取方法及装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN113870931A CN113870931A CN202111175960.8A CN202111175960A CN113870931A CN 113870931 A CN113870931 A CN 113870931A CN 202111175960 A CN202111175960 A CN 202111175960A CN 113870931 A CN113870931 A CN 113870931A
- Authority
- CN
- China
- Prior art keywords
- storage
- current
- segment
- data
- memory
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/26—Sensing or reading circuits; Data output circuits
Landscapes
- Read Only Memory (AREA)
Abstract
一种用于存储装置的数据写入方法、数据读取方法及装置和存储介质。存储装置包括第一子存储装置,第一子存储装置包括依序排列且具有相应的依序的多个地址的多个第一存储段,数据写入方法包括:为第一子存储装置中的每个第一存储段提供对应的标志位;除最后一个第一存储段之外,判断当前要写入数据的当前第一存储段是否有效;响应于当前第一存储段有效,在当前第一存储段存储对应的第一写入数据,且当前第一存储段对应的标志位被设置为有效;响应于当前第一存储段无效,在当前第一存储段的下一第一存储段对第一写入数据进行数据写入操作,且将当前第一存储段对应的标志位设置为无效。该方法提高了存储装置的实用性、灵活性、稳定性。
Description
技术领域
本公开的实施例涉及一种用于存储装置的数据写入方法及装置、数据读取方法及装置、电子设备和非瞬时可读存储介质。
背景技术
存储装置是用于储存信息的装置,通常是将信息数字化后再以利用电、磁或光学等方式的媒体加以存储。存储装置是许多存储单元的集合,按单元号顺序排列。每个单元由若干二进制位构成,以表示存储单元中存放的数值。根据存储材料的性能及使用方法的不同,存储装置有不同的分类方法。例如,按照信息的可保存性分类,存储装置可以分为易失性存储装置(断电后信息即消失的存储装置)和非易失性存储装置(断电后仍能保存信息的存储装置)。
发明内容
本公开至少一个实施例提供一种数据写入方法,用于存储装置,该存储装置包括第一子存储装置,第一子存储装置包括依序排列的多个第一存储段,多个第一存储段具有相应的依序的多个地址。该数据写入方法包括:为第一子存储装置中的每个第一存储段提供对应的标志位;除最后一个第一存储段之外,判断当前要写入数据的当前第一存储段是否有效;响应于当前第一存储段有效,在当前第一存储段存储对应的第一写入数据,且当前第一存储段对应的标志位被设置为有效;响应于当前第一存储段无效,在当前第一存储段的下一第一存储段对第一写入数据进行数据写入操作,且将当前第一存储段对应的标志位设置为无效。
例如,在本公开至少一实施例提供的方法中,判断当前第一存储段是否有效,包括:向当前第一存储段写入第一写入数据;读取写入到当前第一存储段中的第一读取数据;比较第一写入数据和第一读取数据;响应于第一写入数据和第一读取数据相同,确定当前第一存储段有效;响应于第一写入数据和第一读取数据不同,确定当前第一存储段无效。
例如,在本公开至少一实施例提供的方法中,判断当前第一存储段是否有效,包括:获取当前第一存储段对应的标志位,该当前第一存储段对应的标志位是预先设置的;响应于当前第一存储段对应的标志位有效,确定当前第一存储段有效,响应于当前第一存储段对应的标志位无效,确定当前第一存储段无效。
例如,在本公开至少一实施例提供的方法中,存储装置包括第二子存储装置,第二子存储装置包括依序排列的多个第二存储段,多个第二存储段具有相应的依序的多个地址,该方法还包括:在多个第二存储段中选择空闲的当前第二存储段;在当前第二存储段中写入第二写入数据。第二写入数据包括第一子存储装置中的目标地址和目标地址对应的更新数据。
例如,在本公开至少一实施例提供的方法中,在多个第二存储段中选择空闲的当前第二存储段,包括:在多个第二存储段中,按照地址递增顺序,逐一判断第二存储段是否空闲;选择在多个第二存储段中具有最小地址且空闲的第二存储段作为当前第二存储段。
例如,本公开至少一实施例提供的方法还包括:除最后一个第一存储段之外,在响应于当前第一存储段有效,在当前第一存储段存储对应的第一写入数据后,对当前第一存储段的下一第一存储段进行数据写入操作。
例如,本公开至少一实施例提供的方法还包括:响应于当前第一存储段为最后一个第一存储段,判断当前第一存储段是否有效,响应于当前第一存储段有效,在当前第一存储段存储对应的第一写入数据,且当前第一存储段对应的标志位被设置为有效;响应于当前第一存储段无效,将当前第一存储段对应的标志位设置为无效。
例如,在本公开至少一实施例提供的方法中,当前第一存储段对应的标志位存储在第一子存储装置之外。
例如,在本公开至少一实施例提供的方法中,当前第一存储段对应的标志位存储在第一子存储装置之内。
例如,在本公开至少一实施例提供的方法中,第二子存储装置的位宽为第一子存储装置的地址宽度和数据宽度之和。
例如,在本公开至少一实施例提供的方法中,存储装置为电可编程熔丝(EFUSE)。
本公开至少一个实施例还提供一种数据读取方法,用于存储装置,该存储装置包括第一子存储装置,第一子存储装置包括依序排列的多个第一存储段,多个第一存储段具有相应的依序的多个地址,第一子存储装置中的每个第一存储段设置有对应的标志位,数据读取方法包括:除最后一个第一存储段之外,判断当前要读取数据的当前第一存储段是否有效;响应于当前第一存储段有效,获取当前第一存储段中存储的第一数据;响应于当前第一存储段无效,对当前第一存储段的下一第一存储段进行数据读取操作。
例如,在本公开至少一实施例提供的数据读取方法中,判断当前第一存储段是否有效,包括:获取当前第一存储段对应的标志位;判断当前第一存储段对应的标志位是否有效;响应于当前第一存储段对应的标志位有效,确定当前第一存储段有效,响应于当前第一存储段对应的标志位无效,确定当前第一存储段无效。
例如,在本公开至少一实施例提供的数据读取方法中,判断当前第一存储段是否有效,包括:获取当前第一存储段中存储的第一数据;判断第一数据是否全部为0或全部为1;响应于第一数据不是全部为0或全部为1,确定当前第一存储段有效;响应于第一数据全部为0或全部为1,确定当前第一存储段无效。
例如,在本公开至少一实施例提供的数据读取方法中,存储装置包括第二子存储装置,第二子存储装置包括多个第二存储段,该数据读取方法还包括:在多个第二存储段中选择非空闲的当前第二存储段,读取在当前第二存储段存储的第二数据。该第二数据包括第一子存储装置中的目标地址和目标地址对应的更新数据。
例如,在本公开至少一实施例提供的数据读取方法中,还包括:响应于当前第二存储段不是第二子存储装置中最后一个非空闲的第二存储段,对当前第二存储段的下一非空闲第二存储段执行数据读取操作;响应于当前第二存储段是第二子存储装置中最后一个非空闲的第二存储段,在读取当前第二存储段存储的第二数据后,结束对第二子存储装置的数据读取操作。
例如,本公开至少一实施例提供的数据读取方法还包括:除最后一个第一存储段之外,在响应于当前第一存储段有效,获取当前第一存储段中存储的第一数据后,对当前第一存储段的下一第一存储段进行数据读取操作。
例如,本公开至少一实施例提供的数据读取方法还包括:响应于当前第一存储段为最后一个第一存储段,判断当前第一存储段是否有效;响应于当前第一存储段有效,获取当前第一存储段中存储的第一数据;响应于当前第一存储段无效,结束对第一子存储装置的数据读取操作。
本公开至少一个实施例还提供一种数据写入装置,用于存储装置。存储装置包括第一子存储装置,第一子存储装置包括依序排列的多个第一存储段,多个第一存储段具有相应的依序的多个地址。数据写入装置包括:设置单元,配置为为第一子存储装置中的每个第一存储段提供对应的标志位;写入判断单元,配置为除最后一个第一存储段之外,判断当前要写入数据的当前第一存储段是否有效;确定单元,配置为响应于当前第一存储段有效,在当前第一存储段存储对应的第一写入数据,且当前第一存储段对应的标志位被设置为有效,重写单元,配置为响应于当前第一存储段无效,在当前第一存储段的下一第一存储段对第一写入数据进行数据写入操作,且将当前第一存储段对应的标志位设置为无效。
本公开至少一个实施例还提供一种数据读取装置,用于存储装置。存储装置包括第一子存储装置,第一子存储装置包括依序排列的多个第一存储段,多个第一存储段具有相应的依序的多个地址,第一子存储装置中的每个第一存储段设置有对应的标志位。数据读取装置包括:读取判断单元,配置为除最后一个第一存储段之外,判断当前要读取数据的当前第一存储段是否有效;获取单元,配置为响应于当前第一存储段有效,获取当前第一存储段中存储的第一数据,重读单元,配置为响应于当前第一存储段无效,对当前第一存储段的下一第一存储段进行数据读取操作。
本公开至少一个实施例还提供一种电子设备,包括:处理器;存储器,包括一个或多个计算机程序模块。一个或多个计算机程序模块被存储在存储器中并被配置为由处理器执行,一个或多个计算机程序模块包括用于执行本公开任一实施例所述的数据写入方法的指令和/或用于执行本公开任一实施例所述的数据读取方法的指令。
本公开至少一个实施例还提供一种非瞬时可读存储介质,其上存储有计算机指令。计算机指令被处理器执行时执行本公开任一实施例所述的数据写入方法和/或本公开任一实施例所述的数据读取方法。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
图1为本公开至少一个实施例提供的一种EFUSE的示意图;
图2为本公开至少一个实施例提供的一种数据写入方法的流程图;
图3为本公开至少一个实施例提供的一种存储装置的示意图;
图4为本公开至少一个实施例提供的对应步骤S202的一种方法流程图;
图5为本公开至少一个实施例提供的对应步骤S202的另一种方法流程图;
图6为本公开至少一个实施例提供的另一种数据写入方法的流程图;
图7为本公开至少一个实施例提供的另一种存储装置的示意图;
图8为本公开至少一个实施例提供的另一种数据写入方法的示意图;
图9为本公开至少一个实施例提供的一种数据读取方法的流程图;
图10为本公开至少一个实施例提供的另一种数据读取方法的示意图;
图11为根据本公开至少一个实施例的一种用于存储装置的数据写入装置的示意框图;
图12为根据本公开至少一个实施例的一种用于存储装置的数据读取装置的示意框图;
图13为本公开至少一个实施例提供的一种电子设备的示意框图;
图14为本公开至少一个实施例提供的另一种电子设备的示意框图;以及
图15为本公开至少一个实施例提供的一种非瞬时可读存储介质的示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”、“一”或者“该”等类似词语也不表示数量限制,而是表示存在至少一个。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
目前,电可编程熔丝(Electrically Programmable Fuse,EFUSE)被广泛应用于片上系统(System on Chip)SOC设计中,用于存储冗余逻辑,私有信息,安全信息,配置信息等。EFUSE是一种一次性可编程存储器,通过熔断熔丝的方式,实现在芯片上写入数据的功能。EFUSE内的数据一经写入将无法修改,并且不会因为系统掉电而丢失。因此,EFUSE被广泛应用于芯片制造中,用于保存数据。
EFUSE是一次性电可编程的,每个数据位只能提供一次编程,编程以后就不能更改EFUSE里存储的数据。因此,在当前EFUSE的实际使用中,通常EFUSE的地址和待编程数据是固定的映射关系。例如,如图1所示,EFUSE中地址ADD_0对应于数据DATA_0,地址ADD_1对应于数据DATA_1,……,地址ADD_N对应于数据DATA_N。
通常,对于芯片领域的制造缺陷问题(包括各种物理问题,例如,玷污、裂片、工艺结构缺陷等),可以使用额外的冗余位来进行替换。然而,冗余位在制造以后无法改变。当编程过程中发生错误时,一些存储装置(例如,上述EFUSE)中已经编程(写入)的数据位无法重新编程,导致芯片无法正常使用。
针对上述涉及例如一次性可编程存储装置所面临的问题,本公开至少一个实施例提供了一种数据写入方法,用于存储装置。该存储装置包括第一子存储装置,第一子存储装置包括依序排列的多个第一存储段,多个第一存储段具有相应的依序的多个地址。该数据写入方法包括:为第一子存储装置中的每个第一存储段提供对应的标志位;除最后一个第一存储段之外,判断当前要写入数据的当前第一存储段是否有效;响应于当前第一存储段有效,在当前第一存储段存储对应的第一写入数据,且当前第一存储段对应的标志位被设置为有效;响应于当前第一存储段无效,在当前第一存储段的下一第一存储段对第一写入数据进行数据写入操作,且将当前第一存储段对应的标志位设置为无效。
相应地,本公开至少一个实施例还提供了一种对应于上述数据写入方法的装置、数据读取方法及装置、非瞬时可读存储介质和电子设备。
本公开至少一个实施例提供的用于存储装置的数据写入方法,通过为第一子存储装置中的每个第一存储段提供对应的标志位,使得第一子存储装置中的地址和待编程数据不是固定的映射关系,通过在数据写入过程中,检测第一存储段存储是否有效,可以有效避免编程错误、制造缺陷等问题,从而提高存储装置的实用性、灵活性、稳定性。本公开实施例的数据写入方法不限于用于一次性可编程存储装置,也可以用于其他类型的存储装置。
下面通过几个示例或实施例对根据本公开的至少一个实施例提供的数据写入方法和数据读取方法进行非限制性的说明,如下面所描述的,在不相互抵触的情况下这些具体示例或实施例中不同特征可以相互组合,从而得到新的示例或实施例,这些新的示例或实施例也都属于本公开保护的范围。
图2为本公开至少一个实施例提供的一种数据写入方法的流程图,图3为本公开至少一个实施例提供的一种存储装置的示意图。
例如,图2所示的数据写入方法20可以应用于存储装置30。在本公开的实施例中,存储装置30可以是诸如可编程只读存储器(PROM)、可擦可编程只读存储器(EPROM)、闪存(Flash Memory)、EFUSE等的非易失性存储器,也可以是诸如RAM的易失性存储器,本公开的实施例对此不作限制,可以根据实际需求进行设置。
例如,在本公开至少一个实施例中,存储装置30包括第一子存储装置,第一子存储装置包括依序排列的多个第一存储段,多个第一存储段具有相应的依序的多个地址。例如,以存储装置30为EFUSE为示例,如图3所示,存储装置30包括第一子存储装置EFUSE1,第一子存储装置EFUSE1包括依序排列的多个第一存储段,多个第一存储段具有相应的依序的多个地址,例如图3中的ADD 0、ADD 1、……、ADD N+2。每个第一存储段根据需要可以为8位、16位、32位、64位等,本公开的实施例对于第一存储段大小不做限制。
例如,在本公开至少一个实施例中,第一存储段可以是第一子存储装置EFUSE1中的一行数据位,例如,用于存储数据,本公开的实施例对第一存储段的长度(即,一行数据位的长度)不作限制,可以根据实际需求设置。
例如,如图2所示,在本公开的至少一个实施例中,应用于存储装置30的数据写入方法20包括以下步骤S201至步骤S204。需要说明的是,在本公开的实施例中,步骤S201-步骤S204可以顺序执行,也可以按调整后的其他次序执行,步骤S201-步骤S204中的部分或全部操作还可以并行执行,本公开的实施例对各个步骤的执行顺序不作限制,可以根据实际情况调整。例如,在一些示例中,实施本公开至少一个实施例提供的数据写入方法可以选择地执行步骤S201-步骤S204中的部分步骤,也可以执行除了步骤S201-步骤S204以外的一些附加步骤,本公开的实施例对此不做限制。
步骤S201:为第一子存储装置中的每个第一存储段提供对应的标志位。
例如,在本公开至少一个实施例中,预先为第一子存储装置EFUSE1中的每个第一存储段提供对应的标志位。例如,如图3所示,有效的标志位可以用“Va”表示,无效的标志位可以用“InV”表示。例如,在一个示例中,对于EFUSE1,一个标志位对应一根熔丝,熔丝导通时,代表标志位有效,例如,数据“0”,熔丝熔断后,代表标志位无效,例如,数据“1”。例如,在一个示例中,初始状态的EFUSE所有数据都是“0”,写入数据时可以把需要改写为“1”的熔丝熔断。当然,熔丝导通也可以表示数据“1”,熔丝熔断也可以表示数据“0”,本公开的实施例对此不作限制。
例如,在本公开至少一个实施例中,在执行数据写入操作之前,可以默认所有的标志位都是有效的。又例如,在另一个示例中,若提前获知多个第一存储段的状态,例如有效状态或无效状态,可以提前将状态信息写入到相应的标志位中。例如,在一个示例中,假设提前已知地址ADD1对应的第一存储段无效,则可以将地址ADD1对应的第一存储段对应的标志位对应的熔丝熔断,使得该标志位为无效,即“InV”。
需要说明的是,虽然以上实施例中设置的标志位为一位数据,但是本公开的实施例对标志位的位数不作限制,标志位可以根据实际需求设置为多位数据。
还需要说明的是,虽然图3中所示的标志位被包括在相应的第一存储段中,但是本公开的实施例对标志位的存储位置不作限制,标志位可以存储在第一子存储装置EFUSE1中,也可以存储在其他存储单元中,只要能被读取即可。
步骤S202:除最后一个第一存储段之外,判断当前要写入数据的当前第一存储段是否有效。
例如,在本公开至少一个实施例中,当前要写入数据的当前第一存储段可以是第一子存储装置EFUSE1中的第一个存储段,即从EFUSE1中的起始地址开始写入数据。例如,在本公开至少一个实施例中,第一子存储装置EFUSE1可以被多次编程。例如,在一个示例中,第一子存储装置EFUSE1中前两个第一存储段中已经具有编程数据,则当前要写入数据的当前第一存储段可以是第一子存储装置EFUSE1中的第三个存储段,例如从EFUSE1中的第三个第一存储段开始写入数据,按照地址递增顺序,连续写入到第五个第一存储段停止,本公开的实施例对此不作限制。
例如,在本公开的实施例中,若当前第一存储段对应的标志位为无效,表示当前第一存储段可能存在制造缺陷、编程错误等,使得无法对当前第一存储段正确地写入数据。若当前第一存储段对应的标志位为有效,则表示可以对当前第一存储段正常执行数据写入操作。
图4为本公开至少一个实施例提供的对应步骤S202的一种方法流程图,图5为本公开至少一个实施例提供的对应步骤S202的另一种方法流程图。
例如,在本公开至少一个实施例中,如图4所示,对于步骤S202,可以包括以下步骤S401-S405。
步骤S401:向当前第一存储段写入第一写入数据。
步骤S402:读取写入到当前第一存储段中的第一读取数据。
步骤S403:比较第一写入数据和第一读取数据。
步骤S404:响应于第一写入数据和第一读取数据相同,确定当前第一存储段有效。
步骤S405:响应于第一写入数据和第一读取数据不同,确定当前第一存储段无效。
例如,在本公开至少一个实施例中,第一子存储装置EFUSE1中所有第一存储段的标志位的初始状态均为有效状态。在数据写入过程中,例如,如图3所示,向当前第一存储段(即当前操作所针对的存储段,例如,对应于地址ADD0的第一存储段,但不限于ADD0)写入第一写入数据(例如,DATA0),然后读取写入到当前第一存储段中的第一读取数据(例如,DATA0’)。如果DATA0等于DATA0’,则确定当前第一存储段有效。如果DATA0不等于DATA0’,则当前第一存储段可能发生了编程错误或者存在物理缺陷等问题,可以确定当前第一存储段无效。
例如,在本公开至少一个实施例中,如图5所示,步骤S202可以包括以下步骤S501-S503:
步骤S501:获取当前第一存储段对应的标志位,当前第一存储段对应的标志位是预先设置的。
步骤S502:响应于当前第一存储段对应的标志位有效,确定当前第一存储段有效。
步骤S503:响应于当前第一存储段对应的标志位无效,确定当前第一存储段无效。
例如,在本公开至少一个实施例中,在存储装置执行数据写入操作前,可以已提前获知部分存储区域是无效的。例如,在对存储装置进行测试后,可能发现存在制造缺陷的一个或多个第一存储段。因此,可以基于测试结果预先设置第一子存储装置EFUSE1中多个第一存储段的标志位。例如,在一个示例中,在对当前第一存储段写入数据前,获取当前第一存储段对应的标志位。响应于当前第一存储段对应的标志位有效,确定当前第一存储段有效。响应于当前第一存储段对应的标志位无效,确定当前第一存储段无效。
需要说明的是,对于判断当前第一存储段是否有效的步骤S202可以单独地包括图4中的步骤S401-S405或者图5中的步骤S501-S503,也可以将步骤S401-S405和步骤S501-S503组合使用。
例如,在本公开至少一个实施例中,首先执行步骤S501,若基于步骤S501判断当前第一存储段的标志位有效,则执行步骤S401-步骤S405,从而最终确定当前第一存储段是有效或无效。若基于步骤S501判断当前第一存储段的标志位无效,则可以确定当前第一存储段无效,无需再执行步骤S401-S405。
本公开的实施例对判断当前第一存储段是否有效的步骤S202的具体操作不作限制,可以根据实际需求来设置。
步骤S203:响应于当前第一存储段有效,在当前第一存储段存储对应的第一写入数据,且当前第一存储段对应的标志位被设置为有效。
例如,在本公开至少一个实施例中,如图3所示,响应于当前第一存储段有效,例如地址ADD0对应的当前第一存储段,在当前第一存储段存储对应的第一写入数据,例如DATA0,并且当前第一存储段对应的标志位被设置为有效“Va”。
步骤S204:响应于当前第一存储段无效,在当前第一存储段的下一第一存储段对第一写入数据进行数据写入操作,且将当前第一存储段对应的标志位设置为无效。
例如,在本公开至少一个实施例中,如图3所示,响应于当前第一存储段无效,例如地址ADD1对应的第一存储段,则跳过当前第一存储段,在当前第一存储段的下一第一存储段(例如,地址ADD2对应的第一存储段)对第一写入数据(DATA1)进行数据写入操作,且将当前第一存储段对应的标志位设置为无效,即“InV”。
例如,在本公开的至少一个实施例的数据写入方法20中,通过为第一子存储装置中的每个第一存储段提供对应的标志位,使得存储地址和待写入数据不再是固定的映射关系。通过在数据写入过程中,检测第一存储段存储是否有效,可以有效避免编程错误、制造缺陷等问题,从而提高存储装置的实用性、灵活性、稳定性。
例如,在本公开至少一实施例中,数据写入方法20还包括步骤S205:除最后一个第一存储段之外,在响应于当前第一存储段有效,在当前第一存储段存储对应的第一写入数据后,对当前第一存储段的下一第一存储段进行数据写入操作。
例如,在本公开至少一实施例中,对第一子存储装置EFUSE1的数据写入操作是按地址递增顺序逐一执行的。例如,在本公开至少一实施例中,对第一子存储装置EFUSE1的数据写入操作可以是分区执行的,本公开的实施例对此不作限制。
例如,在本公开至少一实施例中,数据写入方法20还包括步骤S206:响应于当前第一存储段为最后一个第一存储段,判断当前第一存储段是否有效,响应于当前第一存储段有效,在当前第一存储段存储对应的第一写入数据,且当前第一存储段对应的标志位被设置为有效;响应于当前第一存储段无效,将当前第一存储段对应的标志位设置为无效。
例如,在本公开至少一实施例中,对第一子存储装置EFUSE1的最后一个第一存储段执行数据写入操作时,无论最后一个第一存储段是有效或无效,不会再跳转至下一地址,即下一第一存储段。
图6为本公开至少一个实施例提供的另一种数据写入方法的流程图,图7为本公开至少一个实施例提供的另一种存储装置的示意图。
当芯片设计发生变更,需要更新存储数据时,由于存储装置例如上述EFUSE无法重新编程,常常导致芯片不能正常使用。
针对上述问题,如图6和图7所示,本公开至少一实施例提供的数据写入方法20还可以包括步骤S601-S602,并且用于存储装置70。
例如,在本公开至少一个实施例中,如图7所示,存储装置70除了包括上述第一子存储装置(例如,EFUSE1)之外,还包括第二子存储装置(例如,EFUSE2),第二子存储装置包括依序排列的多个第二存储段,多个第二存储段具有相应的依序的多个地址。每个第二存储段根据需要可以为8位、16位、32位、64位等,本公开的实施例对于第二存储段大小不做限制。
例如,用于存储装置70的数据写入方法20除了上述步骤S201-S204以外,还包括以下步骤S601-S602。
步骤S601:在多个第二存储段中选择空闲的当前第二存储段。
步骤S602:在当前第二存储段中写入第二写入数据,第二写入数据包括第一子存储装置中的目标地址和目标地址对应的更新数据。
例如,在本公开至少一实施例中,在第二子存储装置EFUSE2为初始状态时,选择第二子存储装置EFUSE2中的第一个第二存储段(例如,图7所示的地址ADD2_0对应的第二存储段)作为当前第二存储段,即从EFUSE2的起始地址开始写入数据,并按照地址递增顺序,向下一个第二存储段(例如,图7所示的地址ADD2_1对应的第二存储段)继续写入下一数据。
例如,在本公开至少一个实施例中,步骤S601可以包括:在多个第二存储段中,按照地址递增顺序,逐一判断第二存储段是否空闲;选择在多个第二存储段中具有最小地址且空闲的第二存储段作为当前第二存储段。
例如,在本公开至少一个实施例中,第二子存储装置EFUSE2可以被多次编程。例如,可以从第二子存储装置EFUSE2的起始地址(第一个第二存储段)开始依次写入数据,也可以从第二子存储装置EFUSE2的具有最小地址且空闲的第二存储段开始依次写入数据,还可以在多个第二存储段中选择任意空闲的当前第二存储段进行数据写入操作,本公开的实施例对此不作限制。
例如,在本公开至少一实施例中,对第二子存储装置EFUSE2的数据写入操作可以是分区执行的,本公开的实施例对此不作限制。
例如,在本公开至少一实施例中,如图7所示,向当前第二存储段(例如,地址ADD2_0对应的第二存储段)中写入的第二数据包括第一子存储装置EFUSE1中的目标地址(例如,地址ADD3)和目标地址对应的更新数据(例如,DATA2)。因此,可以通过后续读取第二子存储装置EFUSE2中的第二数据,以在数据读取记录中将更新数据(例如,DATA2)覆盖/更新第一子存储装置EFUSE1中的目标地址(例如,地址ADD3)中存储的原始数据(需要说明的是,并非实际覆盖/更新在第一子存储装置EFUSE1中的目标地址中存储的原始数据),从而在效果上实现对第一子存储装置EFUSE1中的数据更新,因此,可以提高存储装置的实用性、灵活性和稳定性。
图8为本公开至少一个实施例提供的另一种数据写入方法的示意图。
例如,在本公开至少一实施例中,如图8所示,默认第一子存储装置EFUSE1中的所有标志位的初始状态为有效,对第一子存储装置EFUSE1中的当前第一存储段写入第一写入数据,然后读取写入到当前第一存储段的第一读取数据,通过比较第一写入数据和第一读取数据,确定是否对当前第一存储段的编程成功。如果不成功(即第一写入数据和第一读取数据不同),则跳过当前第一存储段,将第一写入数据重新写入下一第一存储段,并且将当前第一存储段对应的标志位编程为“无效”。如果成功(即第一写入数据和第一读取数据相同),则对当前第一存储段的下一第一存储段继续执行数据写入操作。
例如,在本公开的至少一个实施例中,当前第一存储段对应的标志位可以存储在第一子存储装置之内。例如,在一个示例中,当前第一存储段对应的标志位可以存储在当前第一存储段中,如图3所示,标志位“Va”、“InV”存储在相应的第一存储段中。
例如,在本公开至少一实施例中,当前第一存储段对应的标志位可以存储在第一子存储装置之外。例如,在一个示例中,当前第一存储段对应的标志位可以存储在第一子存储装置EFUSE1之外。例如,可以存储在第三子存储装置或者其他额外的存储单元中,本公开的实施例对此不作限制。
例如,在本公开至少一实施例中,第二子存储装置EFUSE2的位宽可以为第一子存储装置EFUSE1的地址宽度和数据宽度之和。需要说明的是,本公开的实施例对此不作限制。例如,在一个示例中,第二子存储装置EFUSE2的位宽可以大于第一子存储装置EFUSE1的地址宽度和数据宽度之和。例如,在另一个示例中,若第二子存储装置EFUSE2的位宽小于第一子存储装置EFUSE1的地址宽度和数据宽度之和,可以使用额外的存储装置(例如,第三子存储装置EFUSE3)来与EFUSE2合并。
例如,在本公开至少一个实施例中,第二子存储装置EFUSE2的容量可以与第一子存储装置EFUSE1的容量不同。例如,在一个示例中,第二子存储装置EFUSE2的容量小于第一子存储装置EFUSE1的容量,以节约成本。
例如,在本公开至少一个实施例中,存储装置可以是电可编程熔丝(EFUSE)。需要说明的是,本公开的实施例对此不作限制,存储装置也可以是其他一次性电可编程存储器、ROM、闪存、RAM等,只要能应用本公开的至少一个实施例提供的数据写入方法以及下面描述的数据读取方法即可。
因此,本公开至少一个实施例提供的数据写入方法20,可以使得存储装置的地址和待写入数据不再是固定的映射关系,有效避免编程错误、制造缺陷等问题,还可以更新存储装置中已编程的数据,从而提高存储装置的实用性、灵活性、稳定性。
图9为本公开至少一个实施例提供的一种数据读取方法的流程图。
本公开至少一个实施例还提供一种数据读取方法90,用于存储装置30,如图3所示,该存储装置30包括第一子存储装置,例如EFUSE1,第一子存储装置EFUSE1包括依序排列的多个第一存储段,多个第一存储段具有相应的依序的多个地址,第一子存储装置EFUSE1中的每个第一存储段设置有对应的标志位。例如,通过该数据读取方法90所读取的数据被存储在另外的存储装置之中,作为数据读取记录。如图9所示,数据读取方法90包括以下步骤S901-S903:
步骤S901:除最后一个第一存储段之外,判断当前要读取数据的当前第一存储段是否有效。
步骤S902:响应于当前第一存储段有效,获取当前第一存储段中存储的第一数据。
步骤S903:响应于当前第一存储段无效,对当前第一存储段的下一第一存储段进行数据读取操作。
例如,在本公开至少一个实施例中,当前要读取数据的当前第一存储段可以是第一子存储装置EFUSE1中的第一个第一存储段,即从EFUSE1中的起始地址开始依次读取数据。当然,当前第一存储段也可以是第一子存储装置EFUSE1中的其他第一存储段,本公开的实施例对此不作限制。
例如,在本公开至少一个实施例中,对于步骤S901,判断当前第一存储段是否有效,可以包括:获取当前第一存储段对应的标志位;判断当前第一存储段对应的标志位是否有效;响应于当前第一存储段对应的标志位有效,确定当前第一存储段有效;响应于当前第一存储段对应的标志位无效,确定当前第一存储段无效。
例如,如图3所示,在一个示例中,响应于地址ADD0对应的第一存储段对应的标志位有效,即“Va”,确定地址ADD0对应的第一存储段有效。例如,在另一个示例中,响应于地址ADD1对应的第一存储段对应的标志位无效,即“InV”,确定地址ADD1对应的第一存储段无效。
例如,在本公开至少一实施例中,对于步骤S901,判断当前第一存储段是否有效,可以包括:获取当前第一存储段中存储的第一数据;判断第一数据是否全部为0或全部为1;响应于第一数据不是全部为0或全部为1,确定当前第一存储段有效;响应于第一数据全部为0或全部为1,确定当前第一存储段无效。
例如,在本公开至少一实施例中,如果获取的当前第一存储段中存储的第一数据全部为0或全部为1,则表示当前第一存储段尚未写入数据,也就是当前第一存储段尚未被编程,可以确定当前第一存储段无效。
需要说明的是,虽然本公开的实施例提供了上述两种判断当前第一存储段是否有效的方法和步骤,但是这些方法和步骤也可以组合使用,本公开的实施例对此不作限制。
例如,在本公开至少一实施例中,数据读取方法90还可以包括:除最后一个第一存储段之外,在响应于当前第一存储段有效,获取当前第一存储段中存储的第一数据后,对当前第一存储段的下一第一存储段进行数据读取操作。
例如,在本公开至少一实施例中,数据读取方法90还包括:响应于当前第一存储段为最后一个第一存储段,判断当前第一存储段是否有效;响应于当前第一存储段有效,获取当前第一存储段中存储的第一数据;响应于当前第一存储段无效,结束对第一子存储装置的数据读取操作。
例如,在本公开至少一实施例中,从第一子存储装置EFUSE1中的第一个第一存储段(对应EFUSE1的起始地址)开始读取数据,读取后判断当前第一存储段是否有效。若确定当前第一存储段有效,则获取第一数据;若确定当前第一存储段无效,则丢弃读取的数据。按照地址递增顺序,对下一地址继续执行数据读取操作,直到操作至EFUSE1中的最后地址结束。
例如,在本公开至少一实施例中,在存储装置被编程完成的情况下,存储装置的中存储地址和编程数据之间的映射关系可以单独存储,例如存储到其他存储单元。因此,基于存储地址和编程数据之间的映射关系,可以直接读取存储装置中期望的地址所对应的数据,本公开的实施例对此不作限制,可以根据实际需求来设置。
例如,在本公开至少一实施例中,数据读取方法90还可以用于存储装置70。如图7所示,存储装置除了第一子存储装置(例如,EFUSE1)外,还可以包括第二子存储装置(例如,EFUSE2)。第二子存储装置EFUSE2包括依序排列的多个第二存储段,多个第二存储段具有相应的依序的多个地址。例如,用于存储装置70的数据读取方法90还可以包括:在多个第二存储段中选择非空闲的当前第二存储段,读取在当前第二存储段存储的第二数据。例如,该第二数据包括第一子存储装置中的目标地址和目标地址对应的更新数据。
例如,在本公开至少一实施例中,当前第二存储段可以是第二子存储装置EFUSE2中的第一个第二存储段,即从EFUSE2中的起始地址开始读取数据。当然,当前第二存储段也可以是第二子存储装置EFUSE2中的其他第一存储段,本公开的实施例对此不作限制。
例如,在本公开至少一实施例中,数据读取方法90还包括:响应于当前第二存储段不是第二子存储装置中最后一个非空闲的第二存储段,对当前第二存储段的下一非空闲第二存储段执行数据读取操作;响应于当前第二存储段是第二子存储装置中最后一个非空闲的第二存储段,在读取当前第二存储段存储的第二数据后,结束对第二子存储装置的数据读取操作。
例如,在本公开至少一实施例中,对EFUSE2的数据读取操作是按地址递增顺序依次执行的。例如,在一个示例中,从EFUSE2的起始地址开始读取数据,读取后判断所读数据是否为空闲,例如,判断所读数据是否全部为0或全部为1。若确定所读数据为空闲,则丢弃该数据,并对下一地址执行数据读取操作,直到操作至EFUSE2中的最后地址结束。
例如,在本公开至少一实施例中,如图7所示,首先读取第二子存储装置EFUSE2中第一第二存储段(对应于地址ADD2_0)中的数据,即ADD3+DATA2。在数据读取记录中,将更新数据DATA2覆盖第一子存储装置EFUSE1中的地址ADD3中存储的原始数据,从而在效果上实现对第一子存储装置EFUSE1中的地址ADD3中存储数据的更新,由此在数据读取记录中,与地址ADD3对应的数据不再是当前第一子存储装置EFUSE1中存储的原始数据,而是当前第二子存储装置EFUSE2中存储的DATA2。然后,读取EFUSE2中第二个第二存储段(对应于地址ADD2_1)中的数据,即ADD N+DATA(N-2)NEW。在数据读取记录中,将更新数据DATA(N-2)NEW覆盖第一子存储装置EFUSE1中的地址ADD N中存储的原始数据。然后,读取EFUSE2中第三个第二存储段(对应于地址ADD2_2)中的数据,即ADD N+DATA(N-2)NEW1。在数据读取记录中,将更新数据DATA(N-2)NEW1覆盖第一子存储装置EFUSE1中的地址ADD N中存储的DATA(N-2)NEW。然后,读取EFUSE2中第四个第二存储段(对应于地址ADD2_3)中的数据,即ADD N+DATA(N-2)NEW2。在数据读取记录中,将更新数据DATA(N-2)NEW2覆盖第一子存储装置EFUSE1中的地址ADD N中存储的DATA(N-2)NEW1。然后,读取EFUSE2中最后一个第二存储段(对应于地址ADD2_4)中的数据,响应于该数据为空,则丢弃所读取的数据。由此,通过读取第二子存储装置EFUSE2中的数据,在使用效果上,完成了对第一子存储装置EFUSE1中地址ADD3中存储数据的一次更新,EFUSE1的地址ADDN中存储数据的三次更新。
需要说明的是,本公开的实施例对所读取的数据被存储(记录)到何处不作限制,可以根据实际需求来设置。
图10为本公开至少一个实施例提供的一种数据读取方法的另一种示意图。例如,如图10所示,在本公开至少一实施例中,首先,对第一子存储装置EFUSE1中当前第一存储段(例如,EFUSE1中的第一个第一存储段)开始执行数据读取操作,若从当前第一存储段读取的数据被确定为有效,则将该读取数据下载到芯片(例如SOC芯片)中,若从当前第一存储段读取的数据被确定为无效,则丢弃该数据。然后,按照地址递增顺序,继续对下一第一存储段执行数据读取操作,直至EFUSE1中的最后地址,即最后一个第一存储段。在对最后一个第一存储段执行了数据读取操作后,开始对第二子存储装置EFUSE2执行数据读取操作。从第二子存储装置的EFUSE2的当前第二存储段(例如,EFUSE2中的第一个第二存储段)开始执行数据读取操作,读取后判断所读数据是否为空闲。若确定所读数据为空闲,则丢弃该数据,若确定所读数据为非空闲,则将该数据下载到芯片(例如SOC芯片)中,接着,按照地址递增顺序,继续对下一第二存储段执行数据读取操作,直至EFUSE2中的最后地址,即最后一个第二存储段。
因此,通过本公开至少一个实施例提供的数据写入方法20和数据读取方法90,可以使得存储装置有效避免编程错误、制造缺陷等问题,还可以更新存储装置中已编程的数据,从而提高存储装置的实用性、灵活性、稳定性。
需要说明的是,虽然本文以EFUSE为示例来说明本公开的实施例提供的数据写入方法20和数据读取方法90,但是本公开的实施例提供的数据写入方法20和数据读取方法90并不仅仅适用于EFUSE,也可以适用于其他类型的存储装置,本公开的实施例对此不作限制。
还需要说明的是,在本公开的各个实施例中,数据写入方法20和数据读取方法90的各个步骤的执行顺序不受限制,虽然上文以特定顺序描述了各个步骤的执行过程,但这并不构成对本公开实施例的限制。数据写入方法20和数据读取方法90中的各个步骤可以串行执行或并行执行,这可以根据实际需求而定。例如,数据写入方法20和数据读取方法90还可以包括更多或更少的步骤,本公开的实施例对此不作限制。
图11为根据本公开至少一个实施例的一种用于存储装置的数据写入装置的示意框图。
例如,本公开至少一个实施例提供的一种用于存储装置的数据写入装置,该存储装置包括第一子存储装置,第一子存储装置包括依序排列的多个第一存储段,多个第一存储段具有相应的依序的多个地址。例如,如图11所示,该数据写入装置11包括设置单元1101、写入判断单元1102、确定单元1103和重写单元1104。
例如,设置单元1101被配置为为第一子存储装置中的每个第一存储段提供对应的标志位。例如,设置单元1101可以实现步骤S201,其具体实现方法可以参考步骤S201的相关描述,在此不再赘述。
例如,写入判断单元1102被配置为除最后一个第一存储段之外,判断当前要写入数据的当前第一存储段是否有效。例如,该写入判断单元1102可以实现步骤S202,其具体实现方法可以参考步骤S202的相关描述,在此不再赘述。
例如,确定单元1103被配置为响应于当前第一存储段有效,在当前第一存储段存储对应的第一写入数据,且当前第一存储段对应的标志位被设置为有效。例如,确定单元1103可以实现步骤S203,其具体实现方法可以参考步骤S203的相关描述,在此不再赘述。
例如,重写单元1104被配置为响应于当前第一存储段无效,在当前第一存储段的下一第一存储段对第一写入数据进行数据写入操作,且将当前第一存储段对应的标志位设置为无效。例如,该重写单元1104可以实现步骤S204,其具体实现方法可以参考步骤S204的相关描述,在此不再赘述。
例如,上述设置单元1101、写入判断单元1102、确定单元1103,和重写单元1104被配置执行的具体操作均可以参见上文中本公开的至少一个实施例提供的数据写入方法20的相关描述,在此不再赘述。
需要说明的是,设置单元1101、写入判断单元1102、确定单元1103和重写单元1104可以通过软件、硬件、固件或它们的任意组合实现,例如,设置单元1101、写入判断单元1102、确定单元1103,和重写单元1104可以分别实现为设置电路1101、写入判断电路1102、确定电路1103和重写电路1104,本公开的实施例对它们的具体实施方式不作限制。
例如,在本公开至少一个实施例中,写入判断单元1102可以包括第一判断单元。例如,第一判断单元被配置为向当前第一存储段写入第一写入数据;读取写入到当前第一存储段中的第一读取数据;比较第一写入数据和第一读取数据;响应于第一写入数据和第一读取数据相同,确定当前第一存储段有效;响应于第一写入数据和第一读取数据不同,确定当前第一存储段无效。例如,第一判断单元可以实现的操作可以参考前述数据写入方法20中步骤S401-S405的相关描述,在此不再赘述。
例如,在本公开至少一个实施例中,写入判断单元1102可以包括第二判断单元。例如,第二判断单元被配置为获取当前第一存储段对应的标志位,该当前第一存储段对应的标志位是预先设置的;响应于当前第一存储段对应的标志位有效,确定当前第一存储段有效;响应于当前第一存储段对应的标志位无效,确定当前第一存储段无效。例如,第二判断单元可以实现的操作可以参考前述数据写入方法20中步骤S501-S503的相关描述,在此不再赘述。
例如,在本公开至少一个实施例中,存储装置除了第一子存储装置以外,还包括第二子存储装置。该第二子存储装置包括依序排列的多个第二存储段,多个第二存储段具有相应的依序的多个地址,在这种情况下,读取写入装置11还可以包括选择单元。
例如,在一个示例中,选择单元可以包括选择子单元和写入子单元。例如,选择子单元被配置为在多个第二存储段中选择空闲的当前第二存储段。例如,选择子单元可以实现的操作可以参考前述数据写入方法20中步骤S601的相关描述,在此不再赘述。写入子单元被配置为在当前第二存储段中写入第二写入数据,该第二写入数据包括第一子存储装置中的目标地址和目标地址对应的更新数据。例如,写入子单元可以实现的操作可以参考前述数据写入方法20中步骤S602的相关描述,在此不再赘述。
例如,在本公开至少一个实施例中,选择子单元可以包括循环子单元,该循环子单元被配置为在多个第二存储段中,按照地址递增顺序,逐一判断第二存储段是否空闲;选择在多个第二存储段中具有最小地址且空闲的第二存储段作为当前第二存储段。例如,循环子单元可以实现的操作可以参考前述数据写入方法20的相关描述,在此不再赘述。
例如,在本公开至少一个实施例中,读取写入装置11还可以包括第一循环单元,该第一循环单元配置为除最后一个第一存储段之外,在响应于当前第一存储段有效,在当前第一存储段存储对应的第一写入数据后,对当前第一存储段的下一第一存储段进行数据写入操作。例如,第一循环单元可以实现的操作可以参考前述数据写入方法20的相关描述,在此不再赘述。
例如,在本公开至少一个实施例中,读取写入装置11还可以包括第二循环单元,该第二循环单元配置为响应于当前第一存储段为最后一个第一存储段,判断当前第一存储段是否有效,响应于当前第一存储段有效,在当前第一存储段存储对应的第一写入数据,且当前第一存储段对应的标志位被设置为有效,响应于当前第一存储段无效,将当前第一存储段对应的标志位设置为无效。例如,第一循环单元可以实现的操作可以参考前述数据写入方法20的相关描述,在此不再赘述。
例如,在本公开的实施例中,上述第一判断单元、第二判断单元、选择单元、选择子单元、写入子单元、循环子单元、第一循环单元和第二循环单元被配置执行的具体操作均可以参见上文中本公开的至少一个实施例提供的数据写入方法20的相关描述,在此不再赘述。
需要说明的是,上述第一判断单元、第二判断单元、选择单元、选择子单元、写入子单元、循环子单元、第一循环单元和第二循环单元可以通过软件、硬件、固件或它们的任意组合实现,例如,上述第一判断单元、第二判断单元、选择单元、选择子单元、写入子单元、循环子单元、第一循环单元和第二循环单元可以分别实现为第一判断电路、第二判断电路、选择电路、选择子电路、写入子电路、循环子电路、第一循环电路和第二循环电路,本公开的实施例对它们的具体实施方式不作限制。
应当理解的是,本公开实施例提供的用于存储装置的数据写入装置11可以实施前述数据写入方法20,也可以实现与前述数据写入方法20相似的技术效果,在此不作赘述。
图12为根据本公开至少一个实施例的一种用于存储装置的数据读取装置的示意框图。
例如,本公开至少一个实施例提供的一种用于存储装置的数据读取装置,该存储装置包括第一子存储装置,第一子存储装置包括依序排列的多个第一存储段,多个第一存储段具有相应的依序的多个地址。例如,如图12所示,该数据读取装置12包括设置读取判断单元1201、获取单元1202和重读单元1203。
例如,读取判断单元1201被配置为除最后一个第一存储段之外,判断当前要读取数据的当前第一存储段是否有效。例如,读取判断单元1201可以实现步骤S901,其具体实现方法可以参考步骤S901的相关描述,在此不再赘述。
例如,获取单元1202被配置为响应于当前第一存储段有效,获取当前第一存储段中存储的第一数据。例如,该获取单元1202可以实现步骤S902,其具体实现方法可以参考步骤S902的相关描述,在此不再赘述。
例如,重读单元1203被配置为响应于当前第一存储段无效,对当前第一存储段的下一第一存储段进行数据读取操作。例如,重读单元1203可以实现步骤S903,其具体实现方法可以参考步骤S903的相关描述,在此不再赘述。
例如,上述读取判断单元1201、获取单元1202和重读单元1203被配置执行的具体操作均可以参见上文中本公开的至少一个实施例提供的数据读取方法90的相关描述,在此不再赘述。
需要说明的是,读取判断单元1201、获取单元1202和重读单元1203可以通过软件、硬件、固件或它们的任意组合实现,例如,读取判断单元1201、获取单元1202和重读单元1203可以分别实现为读取判断电路1201、获取电路1202和重读电路1203,本公开的实施例对它们的具体实施方式不作限制。
例如,在本公开至少一个实施例中,读取判断单元1201可以包括第一判断子单元和第二判断子单元。
例如,在一个示例中,第一判断子单元被配置为获取当前第一存储段对应的标志位;判断当前第一存储段对应的标志位是否有效;响应于当前第一存储段对应的标志位有效,确定当前第一存储段有效;响应于当前第一存储段对应的标志位无效,确定当前第一存储段无效。
例如,在一个示例中,第二判断子单元被配置为获取当前第一存储段中存储的第一数据;判断第一数据是否全部为0或全部为1;响应于第一数据不是全部为0或全部为1,确定当前第一存储段有效;响应于第一数据全部为0或全部为1,确定当前第一存储段无效。例如,第一判断子单元和第二判断子单元可以实现的操作可以参考数据读取方法90的相关描述,在此不再赘述。
例如,在本公开至少一个实施例中,存储装置除了第一子存储装置外,还可以包括第二子存储装置,该第二子存储装置包括依序排列的多个第二存储段,多个第二存储段具有相应的依序的多个地址。在这种情况下,数据读取装置12还可以包括读取选择单元。例如,读取选择单可以包括第一读取子单元和第二读取子单元。例如,第一读取子单元被配置为在多个第二存储段中选择非空闲的当前第二存储段。例如,第二读取子单元被配置为读取在当前第二存储段存储的第二数据,该第二数据包括第一子存储装置中的目标地址和目标地址对应的更新数据。例如,第一读取子单元和第二读取子单元可以实现的操作可以参考数据读取方法90的相关描述,在此不再赘述。
例如,在本公开至少一个实施例中,数据读取装置12可以包括第一读取循环单元。例如,第一读取循环单元被配置为响应于当前第二存储段不是第二子存储装置中最后一个非空闲的第二存储段,对当前第二存储段的下一非空闲第二存储段执行数据读取操作;响应于当前第二存储段是第二子存储装置中最后一个非空闲的第二存储段,在读取当前第二存储段存储的第二数据后,结束对第二子存储装置的数据读取操作。例如,第一读取循环单元可以实现的操作可以参考数据读取方法90的相关描述,在此不再赘述。
例如,在本公开至少一个实施例中,数据读取装置12可以包括第二读取循环单元。例如,第二读取循环单元被配置为除最后一个第一存储段之外,在响应于当前第一存储段有效,获取当前第一存储段中存储的第一数据后,对当前第一存储段的下一第一存储段进行数据读取操作。例如,第二读取循环单元可以实现的操作可以参考数据读取方法90的相关描述,在此不再赘述。
例如,在本公开至少一个实施例中,数据读取装置12可以包括第三读取循环单元。例如,第三读取循环单元被配置为响应于当前第一存储段为最后一个第一存储段,判断当前第一存储段是否有效;响应于当前第一存储段有效,获取当前第一存储段中存储的第一数据;响应于当前第一存储段无效,结束对第一子存储装置的数据读取操作。例如,第二读取循环单元可以实现的操作可以参考数据读取方法90的相关描述,在此不再赘述。
例如,在本公开的实施例中,上述第一判断单元、第二判断单元、选择单元、选择子单元、写入子单元、循环子单元、第一循环单元和第二循环单元被配置执行的具体操作均可以参见上文中本公开的至少一个实施例提供的数据写入方法20的相关描述,在此不再赘述。
需要说明的是,上述第一判断子单元、第二判断子单元、读取选择单元、第一读取子单元、第二读取子单元、第一读取循环单元、第二读取循环单元和第三读取循环单元可以通过软件、硬件、固件或它们的任意组合实现,例如,上述第一判断子单元、第二判断子单元、读取选择单元、第一读取子单元、第二读取子单元、第一读取循环单元、第二读取循环单元和第三读取循环单元可以分别实现为第一判断子电路、第二判断子电路、读取选择电路、第一读取子电路、第二读取子电路、第一读取循环电路、第二读取循环电路和第三读取循环电路,本公开的实施例对它们的具体实施方式不作限制。
应当理解的是,本公开实施例提供的用于存储装置的数据读取装置12可以实施前述数据读取方法90,也可以实现与前述数据读取方法90相似的技术效果,在此不作赘述。
需要注意的是,在本公开的实施例中,用于存储装置的数据写入装置11和数据读出装置12可以包括更多或更少的电路或单元,并且各个电路或单元之间的连接关系不受限制,可以根据实际需求而定。各个电路的具体构成方式不受限制,可以根据电路原理由模拟器件构成,也可以由数字芯片构成,或者以其他适用的方式构成。
图13是本公开至少一个实施例提供的一种电子设备的示意框图。如图13所示,电子设备13包括处理器1310和存储器1320。存储器1320包括一个或多个计算机程序模块1321。一个或多个计算机程序模块1321被存储在存储器1320中并被配置为由处理器1310执行,该一个或多个计算机程序模块1321包括用于执行本公开的至少一个实施例提供的数据写入方法20/数据读取方法90的指令,其被处理器1310执行时,可以执行本公开的至少一个实施例提供的数据写入方法20/数据读取方法90中的一个或多个步骤。存储器1320和处理器1310可以通过总线系统和/或其它形式的连接机构(未示出)互连。
例如,处理器1310可以是中央处理单元(CPU)、数字信号处理器(DSP)或者具有数据处理能力和/或程序执行能力的其它形式的处理单元,例如现场可编程门阵列(FPGA)等;例如,中央处理单元(CPU)可以为X86或ARM架构等。处理器1310可以为通用处理器或专用处理器,可以控制电子设备13中的其它组件以执行期望的功能。
例如,存储器1320可以包括一个或多个计算机程序产品的任意组合,计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、USB存储器、闪存等。在计算机可读存储介质上可以存储一个或多个计算机程序模块1321,处理器1310可以运行一个或多个计算机程序模块1321,以实现电子设备13的各种功能。在计算机可读存储介质中还可以存储各种应用程序和各种数据以及应用程序使用和/或产生的各种数据等。该电子设备13例如可以是片上系统(SOC)或者包括该SOC的计算机、电视、显示器等。该电子设备13的具体功能和技术效果可以参考上文中关于数据写入方法20和数据读取方法90的描述,此处不再赘述。
图14为本公开至少一个实施例提供的另一种电子设备400的示意框图。该电子设备400例如适于用来实施本公开实施例提供的数据写入方法20和数据读取方法90。需要注意的是,图14示出的电子设备400仅仅是一个示例,其不会对本公开实施例的功能和使用范围带来任何限制。
如图14所示,电子设备400可以包括处理装置(例如中央处理器、图形处理器等)410,其可以根据存储在只读存储器(ROM)420中的程序或者从存储装置480加载到随机访问存储器(RAM)430中的程序而执行各种适当的动作和处理。在RAM 430中,还存储有电子设备400操作所需的各种程序和数据。处理装置410、ROM 420以及RAM 430通过总线440彼此相连。输入/输出(I/O)接口450也连接至总线440。
通常,以下装置可以连接至I/O接口450:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置460;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置470;包括例如磁带、硬盘等的存储装置480;以及通信装置490。通信装置490可以允许电子设备400与其他电子设备进行无线或有线通信以交换数据。虽然图14示出了具有各种装置的电子设备400,但应理解的是,并不要求实施或具备所有示出的装置,电子设备400可以替代地实施或具备更多或更少的装置。
例如,本公开实施例提供的数据写入方法20和数据读取方法90可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包括用于执行上述数据写入方法20和数据读取方法90的程序代码。在这样的实施例中,该计算机程序可以通过通信装置490从网络上被下载和安装,或者从存储装置480安装,或者从ROM 420安装。在该计算机程序被处理装置410执行时,可以执行本公开实施例提供的数据写入方法20和数据读取方法90。
本公开的实施例还提供一种非瞬时可读存储介质。图15是根据本公开至少一个实施例的一种非瞬时可读存储介质的示意框图。如图15所示,非瞬时可读存储介质140上存储有计算机指令111,该计算机指令111被处理器执行时执行如上所述的用于存储装置的数据写入方法20/数据读取方法90中的一个或多个步骤。
例如,该非瞬时可读存储介质140可以是一个或多个计算机可读存储介质的任意组合,例如,一个计算机可读存储介质包含用于为第一子存储装置中的每个第一存储段提供对应的标志位的计算机可读的程序代码,另一个计算机可读存储介质包含用于除最后一个第一存储段之外,判断当前要写入数据的当前第一存储段是否有效的计算机可读的程序代码,另一个计算机可读存储介质包含用于响应于当前第一存储段有效,在当前第一存储段存储对应的第一写入数据,且当前第一存储段对应的标志位被设置为有效的计算机可读的程序代码,又一个计算机可读存储介质包含用于响应于当前第一存储段无效,在当前第一存储段的下一第一存储段对第一写入数据进行数据写入操作,且将当前第一存储段对应的标志位设置为无效的计算机可读的程序代码。当然,上述各个程序代码也可以存储在同一个计算机可读介质中,本公开的实施例对此不作限制。
例如,当该程序代码由计算机读取时,计算机可以执行该计算机存储介质中存储的程序代码,执行例如本公开任一个实施例提供的数据写入方法20。
又例如,一个计算机可读存储介质包含用于除最后一个第一存储段之外,判断当前要读取数据的当前第一存储段是否有效的计算机可读的程序代码,另一个计算机可读存储介质包含用于响应于当前第一存储段有效,获取当前第一存储段中存储的第一数据的计算机可读的程序代码,另一个计算机可读存储介质包含用于响应于当前第一存储段无效,对当前第一存储段的下一第一存储段进行数据读取操作的计算机可读的程序代码。当然,上述各个程序代码也可以存储在同一个计算机可读介质中,本公开的实施例对此不作限制。
例如,当上述程序代码由计算机读取时,计算机可以执行该计算机存储介质中存储的程序代码,执行例如本公开任一个实施例提供的数据读取方法90。
例如,存储介质可以包括智能电话的存储卡、平板电脑的存储部件、个人计算机的硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、闪存、或者上述存储介质的任意组合,也可以为其他适用的存储介质。例如,该可读存储介质也可以为图13中的存储器1320,相关描述可以参考前述内容,此处不再赘述。
在本公开中,术语“多个”指两个或两个以上,除非另有明确的限定。
本领域技术人员在考虑说明书及实践这里公开的公开后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (22)
1.一种用于存储装置的数据写入方法,所述存储装置包括第一子存储装置,所述第一子存储装置包括依序排列的多个第一存储段,所述多个第一存储段具有相应的依序的多个地址,所述数据写入方法包括:
为所述第一子存储装置中的每个第一存储段提供对应的标志位;
除最后一个第一存储段之外,判断当前要写入数据的当前第一存储段是否有效;
响应于所述当前第一存储段有效,在所述当前第一存储段存储对应的第一写入数据,且所述当前第一存储段对应的标志位被设置为有效,
响应于所述当前第一存储段无效,在所述当前第一存储段的下一第一存储段对所述第一写入数据进行数据写入操作,且将所述当前第一存储段对应的标志位设置为无效。
2.根据权利要求1中所述的方法,其中,判断所述当前第一存储段是否有效,包括:
向所述当前第一存储段写入所述第一写入数据;
读取写入到所述当前第一存储段中的第一读取数据;
比较所述第一写入数据和所述第一读取数据;
响应于所述第一写入数据和所述第一读取数据相同,确定所述当前第一存储段有效;
响应于所述第一写入数据和所述第一读取数据不同,确定所述当前第一存储段无效。
3.根据权利要求1中所述的方法,其中,判断所述当前第一存储段是否有效,包括:
获取所述当前第一存储段对应的标志位,其中,所述当前第一存储段对应的标志位是预先设置的;
响应于所述当前第一存储段对应的标志位有效,确定所述当前第一存储段有效;
响应于所述当前第一存储段对应的标志位无效,确定所述当前第一存储段无效。
4.根据权利要求1所述的方法,其中,所述存储装置包括第二子存储装置,所述第二子存储装置包括依序排列的多个第二存储段,所述多个第二存储段具有相应的依序的多个地址,所述方法还包括:
在所述多个第二存储段中选择空闲的当前第二存储段;
在所述当前第二存储段中写入第二写入数据;
其中,所述第二写入数据包括所述第一子存储装置中的目标地址和所述目标地址对应的更新数据。
5.根据权利要求4所述的方法,其中,在所述多个第二存储段中选择空闲的当前第二存储段,包括:
在所述多个第二存储段中,按照地址递增顺序,逐一判断第二存储段是否空闲;
选择在所述多个第二存储段中具有最小地址且空闲的第二存储段作为所述当前第二存储段。
6.根据权利要求1中所述的方法,还包括:
除最后一个第一存储段之外,在响应于所述当前第一存储段有效,在所述当前第一存储段存储对应的第一写入数据后,对所述当前第一存储段的下一第一存储段进行数据写入操作。
7.根据权利要求1中所述的方法,还包括:
响应于所述当前第一存储段为最后一个第一存储段,判断所述当前第一存储段是否有效;
响应于所述当前第一存储段有效,在所述当前第一存储段存储对应的第一写入数据,且所述当前第一存储段对应的标志位被设置为有效;
响应于所述当前第一存储段无效,将所述当前第一存储段对应的标志位设置为无效。
8.根据权利要求1-7中任一项所述的方法,其中,所述当前第一存储段对应的标志位存储在所述第一子存储装置之外。
9.根据权利要求1-7中所述的方法,其中,所述当前第一存储段对应的标志位存储在所述第一子存储装置之内。
10.根据权利要求4或5中所述的方法,其中,所述第二子存储装置的位宽为所述第一子存储装置的地址宽度和数据宽度之和。
11.根据权利要求1中所述的方法,其中,所述存储装置为电可编程熔丝(EFUSE)。
12.一种用于存储装置的数据读取方法,所述存储装置包括第一子存储装置,所述第一子存储装置包括依序排列的多个第一存储段,所述多个第一存储段具有相应的依序的多个地址,所述第一子存储装置中的每个第一存储段设置有对应的标志位,所述方法包括:
除最后一个第一存储段之外,判断当前要读取数据的当前第一存储段是否有效;
响应于所述当前第一存储段有效,获取所述当前第一存储段中存储的第一数据;
响应于所述当前第一存储段无效,对所述当前第一存储段的下一第一存储段进行数据读取操作。
13.根据权利要求12中所述的方法,其中,判断所述当前第一存储段是否有效,包括:
获取所述当前第一存储段对应的标志位;
判断所述当前第一存储段对应的标志位是否有效;
响应于所述当前第一存储段对应的标志位有效,确定所述当前第一存储段有效;
响应于所述当前第一存储段对应的标志位无效,确定所述当前第一存储段无效。
14.根据权利要求12中所述的方法,其中,判断所述当前第一存储段是否有效,包括;
获取所述当前第一存储段中存储的第一数据;
判断所述第一数据是否全部为0或全部为1;
响应于所述第一数据不是全部为0或全部为1,确定所述当前第一存储段有效;
响应于所述第一数据全部为0或全部为1,确定所述当前第一存储段无效。
15.根据权利要求12中所述的方法,其中,所述存储装置包括第二子存储装置,所述第二子存储装置包括依序排列的多个第二存储段,所述多个第二存储段具有相应的依序的多个地址,所述方法还包括:
在所述多个第二存储段中选择非空闲的当前第二存储段;
读取在所述当前第二存储段存储的第二数据,
其中,所述第二数据包括第一子存储装置中的目标地址和所述目标地址对应的更新数据。
16.根据权利要求15中所述的方法,还包括:
响应于所述当前第二存储段不是第二子存储装置中最后一个非空闲的第二存储段,对所述当前第二存储段的下一非空闲第二存储段执行数据读取操作;
响应于所述当前第二存储段是第二子存储装置中最后一个非空闲的第二存储段,在读取所述当前第二存储段存储的第二数据后,结束对所述第二子存储装置的数据读取操作。
17.根据权利要求12中所述的方法,还包括:
除最后一个第一存储段之外,在响应于所述当前第一存储段有效,获取所述当前第一存储段中存储的第一数据后,对所述当前第一存储段的下一第一存储段进行数据读取操作。
18.根据权利要求12-17中任一项所述的方法,还包括:
响应于所述当前第一存储段为最后一个第一存储段,判断所述当前第一存储段是否有效;
响应于所述当前第一存储段有效,获取所述当前第一存储段中存储的第一数据;
响应于所述当前第一存储段无效,结束对所述第一子存储装置的数据读取操作。
19.一种用于存储装置的数据写入装置,其中,所述存储装置包括第一子存储装置,所述第一子存储装置包括依序排列的多个第一存储段,所述多个第一存储段具有相应的依序的多个地址,所述数据写入装置包括:
设置单元,配置为为所述第一子存储装置中的每个第一存储段提供对应的标志位;
写入判断单元,配置为除最后一个第一存储段之外,判断当前要写入数据的当前第一存储段是否有效;
确定单元,配置为响应于所述当前第一存储段有效,在所述当前第一存储段存储对应的第一写入数据,且所述当前第一存储段对应的标志位被设置为有效;
重写单元,配置为响应于所述当前第一存储段无效,在所述当前第一存储段的下一第一存储段对所述第一写入数据进行数据写入操作,且将所述当前第一存储段对应的标志位设置为无效。
20.一种用于存储装置的数据读取装置,其中,所述存储装置包括第一子存储装置,所述第一子存储装置包括依序排列的多个第一存储段,所述多个第一存储段具有相应的依序的多个地址,所述第一子存储装置中的每个第一存储段设置有对应的标志位,所述数据读取装置包括:
读取判断单元,配置为除最后一个第一存储段之外,判断当前要读取数据的当前第一存储段是否有效;
获取单元,配置为响应于所述当前第一存储段有效,获取所述当前第一存储段中存储的第一数据;
重读单元,配置为响应于所述当前第一存储段无效,对所述当前第一存储段的下一第一存储段进行数据读取操作。
21.一种电子设备,包括
处理器;
存储器,包括一个或多个计算机程序模块;
其中,所述一个或多个计算机程序模块被存储在所述存储器中并被配置为由所述处理器执行,所述一个或多个计算机程序模块包括用于执行如权利要求1-11中任一项所述的数据写入方法的指令和/或用于执行如权利要求12-18中任一项所述的数据读取方法的指令。
22.一种非瞬时可读存储介质,其上存储有计算机指令,其中,所述计算机指令被处理器执行时执行如权利要求1-11中任一项所述的数据写入方法和/或如权利要求12-18中任一项所述的数据读取方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111175960.8A CN113870931A (zh) | 2021-10-09 | 2021-10-09 | 数据写入和数据读取方法及装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111175960.8A CN113870931A (zh) | 2021-10-09 | 2021-10-09 | 数据写入和数据读取方法及装置、电子设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113870931A true CN113870931A (zh) | 2021-12-31 |
Family
ID=79002187
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111175960.8A Pending CN113870931A (zh) | 2021-10-09 | 2021-10-09 | 数据写入和数据读取方法及装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113870931A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114625385A (zh) * | 2022-03-17 | 2022-06-14 | 集睿致远(厦门)科技有限公司 | 一种芯片efuse数据烧写方法、装置及存储介质 |
-
2021
- 2021-10-09 CN CN202111175960.8A patent/CN113870931A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114625385A (zh) * | 2022-03-17 | 2022-06-14 | 集睿致远(厦门)科技有限公司 | 一种芯片efuse数据烧写方法、装置及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI470429B (zh) | 記憶體裝置及記憶體存取方法 | |
US9372750B2 (en) | Method and apparatus for non-volatile RAM error re-mapping | |
JP4999325B2 (ja) | フラッシュメモリ | |
US8271719B2 (en) | Non-volatile memory controller device and method therefor | |
US9141476B2 (en) | Method of storing system data, and memory controller and memory storage apparatus using the same | |
US9858366B2 (en) | Simulator and simulating method for flash memory background | |
CN107045423B (zh) | 存储器装置及其数据存取方法 | |
CN111352594B (zh) | eFuse中写入数据、读取数据的方法及装置 | |
US20140258792A1 (en) | Symmetrical Data Replication For Failure Management In Non-Volatile Memory Systems | |
US7707380B2 (en) | Memories, method of storing data in memory and method of determining memory cell sector quality | |
US8438327B2 (en) | Recovery scheme for an emulated memory system | |
CN113870931A (zh) | 数据写入和数据读取方法及装置、电子设备和存储介质 | |
CN113885808B (zh) | 映射信息记录方法以及存储器控制电路单元与存储装置 | |
US6510083B1 (en) | Electrically erasable and programmable memory that allows data update without prior erasure of the memory | |
EP3057100B1 (en) | Memory device and operating method of same | |
US8010854B2 (en) | Method and circuit for brownout detection in a memory system | |
CN108665941A (zh) | 基于nand闪存的列修复方法、装置和nand存储设备 | |
US11720276B2 (en) | Memory system and controller for managing write status | |
US9710347B2 (en) | Handling defective non-volatile memory | |
KR102389534B1 (ko) | 레지스터 데이터 백업 및 복구 | |
US8614926B2 (en) | Memory apparatus and associated method | |
US10579306B1 (en) | Memory management method and storage controller | |
US10223195B2 (en) | Counter in a flash memory | |
WO2018040804A1 (zh) | 一种存储器块处理方法、装置和计算机存储介质 | |
CN103514953A (zh) | 对存储在闪存中的数据有地址ram的模拟电可擦存储器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |