CN117935896A - 一种存储器、电子设备及数据读写方法 - Google Patents
一种存储器、电子设备及数据读写方法 Download PDFInfo
- Publication number
- CN117935896A CN117935896A CN202410143664.7A CN202410143664A CN117935896A CN 117935896 A CN117935896 A CN 117935896A CN 202410143664 A CN202410143664 A CN 202410143664A CN 117935896 A CN117935896 A CN 117935896A
- Authority
- CN
- China
- Prior art keywords
- data
- code
- check code
- check
- flip
- 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
- 230000015654 memory Effects 0.000 title claims abstract description 82
- 238000000034 method Methods 0.000 title claims abstract description 34
- 230000007306 turnover Effects 0.000 claims abstract description 31
- 238000012937 correction Methods 0.000 claims description 39
- 238000012795 verification Methods 0.000 claims description 23
- 230000002159 abnormal effect Effects 0.000 claims description 13
- 238000013524 data verification Methods 0.000 claims description 10
- 230000002547 anomalous effect Effects 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 11
- 230000005856 abnormality Effects 0.000 description 8
- 238000012545 processing Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 6
- 230000009471 action Effects 0.000 description 3
- 229910002056 binary alloy Inorganic materials 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/44—Indication or identification of errors, e.g. for repair
Landscapes
- Detection And Correction Of Errors (AREA)
Abstract
本申请属于涉及一种存储器、电子设备及数据读写方法,存储器领域。存储器包括:校验码生成模块、编码模块、存储阵列;校验码生成模块,被配置为接收第一数据,并生成所述第一数据的第一校验码;编码模块被配置为对所述第一数据以及所述第一校验码进行编码,生成第二数据、第二校验码和翻转码,以减少所述第一数据以及所述第一校验码中0或1的个数,其中,所述翻转码表征所述第二数据、所述第二校验码的翻转情况;存储阵列被配置为存储所述第二数据、所述第二校验码和所述翻转码。本申请可以降低存储器的故障率。
Description
技术领域
本申请属于存储器领域,具体涉及一种存储器、电子设备及数据读写方法。
背景技术
eFuse(一次性可编程存储器)存储的特点是数据不会因为电源关闭而消失。eFuse适用于保护需要固化在芯片中的敏感信息的应用场景,如芯片ID(身份标识)、芯片密钥等。在芯片制造过程中,这些信息可以被编程进eFuse中,以保证被写入的数据不会被修改或篡改。此外,eFuse还可以在芯片量产后使用,用于一些特殊功能的设置和保护。
对于eFuse来说,当存储单元未被击穿(故障或损坏)时,可以正常读取和写入数据,而不会发生数据丢失或损坏,它的逻辑状态为0,当击穿时,它的逻辑状态为1。在芯片使用过程中如果长时间处于高温或者大电流环境,容易导致eFuse被击穿,从而增大了存储区域bit翻转的可能,最终导致芯片功能异常。
发明内容
鉴于此,本申请的目的在于提供一种存储器、电子设备及数据读写方法,以降低存储器的故障率。
本申请的实施例是这样实现的:
第一方面,本申请实施例提供了一种存储器,包括:校验码生成模块、编码模块以及存储阵列;校验码生成模块,被配置为接收第一数据,并生成所述第一数据的第一校验码;编码模块,被配置为对所述第一数据以及所述第一校验码进行编码,生成第二数据、第二校验码和翻转码,其中,所述翻转码表征所述第二数据、所述第二校验码的翻转情况;存储阵列,被配置为存储所述第二数据、所述第二校验码和所述翻转码。
在本申请实施例中,在存储数据时,通过生成第一数据的第一校验码,以便后续用于对第一数据进行校验纠错,以降低存储器的故障率,同时,通过对第一数据、第一校验码进行编码,以减少第一数据、第一校验码中数据0或1的个数,从而可以减少存储器损坏时,数据发生翻转的数量,从数据源头降低存储数据出现翻转的概率,进而可以降低存储器的存储故障。
结合第一方面实施例的一种可能的实施方式,所述第一数据以及所述第一校验码为二进制数据;所述编码模块包括:计数器、比较器以及编码单元;计数器被配置为统计所述第一数据、所述第一校验码中0和1的个数;比较器被配置为比较所述0和1的个数,确定所述第一数据、所述第一校验码的翻转情况;编码单元被配置为根据所述翻转情况、所述第一数据、所述第一校验码,编码生成所述第二数据、第二校验码和所述翻转码。
在本申请实施例中,通过统计第一数据、第一校验码中0和1的个数,以此来确定第一数据、第一校验码的翻转情况,并根据翻转情况来对第一数据、第一校验码进行翻转,这样快速减少第一数据、第一校验码中数据0或1的个数,并且处理流程简单。同时,采用上述结构的编码模块,可以在实现其发明目的的同时,减少设计难度,易于实现。
结合第一方面实施例的一种可能的实施方式,所述翻转码包括:数据翻转码和校验翻转码,所述数据翻转码表征所述第二数据的翻转情况,所述校验翻转码表征所述第二校验码的翻转情况。
在本申请实施例中,采用数据翻转码和校验翻转码的方式,使得在根据二进制数中0和1的个数,确定数据和校验码是否翻转时,可以不再是同时翻转或不翻转,而是可以根据第一数据中0和1的个数来确定第一数据是否翻转、根据第一校验码中0和1的个数来确定第一校验码是否翻转,能进一步减少存储的数据0或1的个数。
结合第一方面实施例的一种可能的实施方式,所述存储器还包括:解码模块、数据校验纠错模块;解码模块,被配置为从所述存储阵列中读取所述第二数据、所述第二校验码和所述翻转码,并对所述第二数据、所述第二校验码和所述翻转码进行解码,得到第一数据和第一校验码;数据校验纠错模块包括校验和纠错单元,所述校验和纠错单元,被配置为基于所述第一校验码对所述第一数据进行校验,当校验结果表征所述第一数据正常的情况下,输出所述第一数据。
在本申请实施例中,通过设置解码模块对第二数据、第二校验码和翻转码进行解码,还原出第一数据的第一校验码,之后通过数据校验纠错模块,来对第一数据进行校验,可以确保输出的数据是准确性。
结合第一方面实施例的一种可能的实施方式,所述数据校验纠错模块还包括错误状态寄存器;所述校验和纠错单元还被配置为:当校验结果表征所述第一数据异常的情况下,判断所述第一数据能否被纠正;在所述第一数据能被纠正的情况下,对所述第一数据进行纠正,输出纠正后的所述第一数据;在所述第一数据不能被纠正的情况下,配置所述错误状态寄存器输出中断标记位,其中,所述中断标记位用于表征所述第一数据异常、且不可纠正。
在本申请实施例中,通过数据校验纠错模块来对数据进行纠正,以提高数据的准确性,并且在第一数据不能被纠正的情况下,输出中断标记位,以便及时通知应用数据异常。
结合第一方面实施例的一种可能的实施方式,所述解码模块被配置为:在所述翻转码表征所述第二数据、所述第二校验码发生翻转的情况下,将所述第二数据、所述第二校验码进行翻转,其中,所述第一数据为翻转后的所述第二数据,所述第一校验码为翻转后的所述第二校验码。
在本申请实施例中,根据翻转码表征的翻转情况即可快速完成解码,如在翻转码表征第二数据、第二校验码发生翻转的情况下,将第二数据、第二校验码进行翻转即可。
结合第一方面实施例的一种可能的实施方式,所述解码模块包括:计数器、比较器以及解码单元;计数器被配置为统计所述第二数据、所述第二校验码中0和1的个数;比较器被配置为比较所述0和1的个数,确定所述第二数据、所述第二校验码的翻转情况;解码单元被配置为如果根据所述0和1的个数确定的翻转情况与所述翻转码表征的翻转情况相同,对所述翻转码、所述第二数据、所述第二校验码进行解码,得到第一数据和第一校验码。
在本申请实施例中,通过统计第二数据、第二校验码中0和1的个数,以此确定第二数据、第二校验码的翻转情况,之后将根据0和1的个数确定的翻转情况与翻转码表征的翻转情况相同,在二者的翻转情况相同时,才根据翻转码表征的翻转情况对第二数据、第二校验码进行处理,这样可以避免因为翻转码异常导致的后续校验异常的情况发生,例如,因翻转码异常,使得根据异常的翻转码对第二数据、第二校验码进行翻转,后续在校验时出错。同时,采用上述结构的解码模块,可以在实现其发明目的的同时,减少设计难度,易于实现。
结合第一方面实施例的一种可能的实施方式,所述解码模块还被配置为:如果根据所述0和1的个数确定的翻转情况与所述翻转码表征的翻转情况不相同,输出所述第二数据、所述第二校验码,以及翻转后的所述第二数据、翻转后的所述第二校验码;其中,所述第一数据包括所述第二数据以及翻转后的所述第二数据,所述第一校验码包括所述第二校验码以及翻转后的所述第二校验码。
在本申请实施例中,如果根据0和1的个数确定的翻转情况与翻转码表征的翻转情况不相同,直接输出第二数据、第二校验码,以及翻转后的第二数据、翻转后的第二校验码,以便后续在校验时,基于第二校验码对第二数据,以及基于翻转后的第二校验码对翻转后的第二数据进行校验,这样可以减少因为翻转码异常所带来的影响。
结合第一方面实施例的一种可能的实施方式,所述校验和纠错单元还被配置为:基于所述第二校验码对所述第二数据进行第一校验,以及基于翻转后的所述第二校验码对翻转后的所述第二数据进行第二校验;当第一校验结果表征所述第二数据正常的情况下,输出所述第二数据,或,当第二校验结果表征翻转后的所述第二数据正常的情况下,输出翻转后的所述第二数据。
在本申请实施例中,当第一数据包括第二数据以及翻转后的第二数据,第一校验码包括第二校验码以及翻转后的第二校验码在校验时,基于第二校验码对第二数据,以及基于翻转后的第二校验码对翻转后的第二数据进行校验,这样可以减少因为翻转码异常所带来的影响。
第二方面,本申请实施例还提供了一种存储器,包括:存储阵列、解码模块、数据校验纠错模块;存储阵列,被配置为存储第二数据、第二校验码和翻转码,其中,所述翻转码表征所述第二数据、所述第二校验码的翻转情况;解码模块,被配置为从所述存储阵列中读取所述第二数据、所述第二校验码和所述翻转码,并对所述第二数据、所述第二校验码和所述翻转码进行解码,生成第一数据和第一校验码;数据校验纠错模块,被配置为基于所述第一校验码对所述第一数据进行校验,当校验结果表征所述第一数据正常的情况下,输出所述第一数据。
第三方面,本申请实施例还提供了一种电子设备,包括:如上述第一方面实施例和/或结合第一方面实施例的任一种可能的实施方式提供的存储器。
第四方面,本申请实施例还提供了一种数据读写方法,包括:获取第一数据,并生成所述第一数据的第一校验码;对所述第一数据以及所述第一校验码进行编码,生成第二数据、第二校验码和翻转码,其中,所述翻转码表征所述第二数据、所述第二校验码的翻转情况;存储所述第二数据、所述第二校验码和所述翻转码。
结合第四方面实施例的一种可能的实施方式,所述方法还包括:读取所述第二数据、所述第二校验码和所述翻转码;对所述第二数据、所述第二校验码和所述翻转码进行解码,得到第一数据和第一校验码;基于所述第一校验码对所述第一数据进行校验,当校验结果表征所述第一数据正常的情况下,输出所述第一数据。
本申请的其他特征和优点将在随后的说明书阐述。本申请的目的和其他优点可通过在所写的说明书以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。通过附图所示,本申请的上述及其它目的、特征和优势将更加清晰。
图1示出了本申请实施例提供的一种存储器与应用连接的结构示意图。
图2示出了本申请实施例提供的一种编码模块的原理示意图。
图3示出了本申请实施例提供的一种写eFuse的流程示意图。
图4示出了本申请实施例提供的一种解码模块的原理示意图。
图5示出了本申请实施例提供的又一种解码模块的原理示意图。
图6示出了本申请实施例提供的一种读eFuse的流程示意图。
图7示出了本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。以下实施例可作为示例,用于更加清楚地说明本申请的技术方案,而不能以此来限制本申请的保护范围。本领域技术人员可以理解的是,在不相冲突的情况下,下述实施例及实施例中的特征可以相互结合。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中诸如“第一”、“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
再者,本申请中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
在本申请实施例的描述中,除非另有明确的规定和限制,技术术语“电连接”可以是直接电性连接,也可以是通过中间媒介间接电性连接。
为了降低存储器的存储故障,本申请实施例提供了一种存储器、电子设备及数据读写方法。
下面结合图1所示的存储器进行说明,本申请实施例提供的存储器包含存储阵列、校验码生成模块、编码模块,解码模块以及数据校验纠错模块。通过在已有存储器的基础上,增设校验码生成模块、编码模块、解码模块以及数据校验纠错模块,来降低存储器的存储故障。其中,应用可以向存储器写入数据,也可以从存储器中读取数据,应用可以是需要向存储器写入或读取数据的各种应用,如处理器等。
本申请中的存储器可以是eFuse存储器,或者其他非易失性存储器,如可编程只读存储器(Programmable Read-Only Memory,PROM),可擦除只读存储器(ErasableProgrammable Read-Only Memory,EPROM),电可擦除只读存储器(Electric ErasableProgrammable Read-Only Memory,EEPROM)等。
在一种可能的实施方式下,校验码生成模块、编码模块,解码模块以及数据校验纠错模块可以部分或者全部位于存储器之外,例如,在一种可能的方式下,解码模块以及数据校验纠错模块可以位于存储器之外,此时,存储器包含存储阵列、校验码生成模块、编码模块,同理,校验码生成模块、编码模块也可以位于存储器之外,此时,存储器包含存储阵列、解码模块以及数据校验纠错模块。
在应用向存储器写入第一数据时:
校验码生成模块被配置为接收第一数据,并生成第一数据的第一校验码,以及将第一数据以及第一校验码发送给编码模块。其中,第一校验码用于后续对第一数据进行校验。
校验码生成模块在生成第一数据的第一校验码时,可以是根据指定的校验算法来生成第一数据的第一校验码,例如,校验算法可以是ECC(Error Checking andCorrecting,错误检查和纠正)算法、LDPC(Low Density Parity Check,低密度奇偶校验)算法,或者其他校验算法。当校验算法为ECC算法时,第一校验码为ECC码,当校验算法为LDPC算法时,第一校验码为LDPC码。
数据进入到校验码生成模块后,根据校验算法生成一个校验码,并且和数据一起发送给编码模块。校验码生成模块的输出格式:N bit数据+Y bit校验码,例如收到的数据为b’10110110,生成的校验码为b’11001101,N、Y均为大于等于2的整数。
编码模块被配置为对第一数据以及第一校验码进行编码,生成第二数据、第二校验码和翻转码,以减少所述第一数据以及所述第一校验码中0或1的个数,之后向存储阵列写入第二数据、第二校验码和翻转码。其中,翻转码表征第二数据、第二校验码的翻转情况。存储阵列,被配置为存储第二数据、第二校验码和翻转码。通过编码模块对第一数据以及第一校验码进行编码,以减少第一数据以及第一校验码中0或1的个数,从而可以减少存储器损坏时,数据发生翻转的数量,从数据源头降低存储数据出现翻转的概率,进而可以降低存储器的存储故障。
编码模块接收到的第一数据以及第一校验码可以是二进制数据,如果第一数据以及第一校验码不为二进制数据,需要将其转换为二进制数据。编码模块在编码时,分别统计第一数据、第一校验码的二进制数中0和1的个数,根据二进制数中0和1的个数,确定第一数据、第一校验码的翻转情况,根据翻转情况、第一数据、第一校验码,生成第二数据、第二校验码和翻转码。编码完成后编码模块将数据、校验码和翻转码写入存储阵列。
例如,对于存储器损失时数据只能由0变成1的存储器,如eFuse存储器、PROM存储器被击穿时数据只能由0变成1,需要减少存储数据中数据0的个数,因此,若二进制数中0的个数大于1的个数,第一数据、第一校验码需要翻转,则第二数据为翻转后的第一数据,第二校验码为翻转后的第一校验码,翻转码表征第二数据、第二校验码发生翻转;反之,若二进制数中0的个数小于等于1的个数,第一数据、第一校验码不需要翻转,则第二数据为第一数据,第二校验码为第一校验码,翻转码表征第二数据、第二校验码未发生翻转。其中,翻转码可以是数字0或数字1,例如,第二数据、第二校验码发生翻转时,翻转码为0,第二数据、第二校验码未发生翻转时,翻转码为1,当然也可以反过来表示。
一种可选实施方式下,编码模块可以包括可编程逻辑器件,利用可编程逻辑器件实现上述功能。在一些可能的实施方式下,编码模块可以包括计数器、比较器和编码单元。计数器被配置为统计第一数据、第一校验码中0和1的个数;比较器被配置为比较0和1的个数,确定第一数据、第一校验码的翻转情况;编码单元被配置为根据翻转情况、第一数据、第一校验码,编码生成第二数据、第二校验码和翻转码。
上述的编码过程可以参阅图2所示的原理。写操作时编码模块将收到的数据和校验码进行编码。编码时编码模块中的计数器分别统计二进制数据和二进制校验码中0和1的个数。统计完成后编码模块中的比较器比较0的个数和1的个数。如果0的个数大于1的个数,则编码模块中的编码单元设置翻转码为0,同时将数据和校验码进行翻转。否则设置翻转码为1。编码完成后编码单元将数据、校验码和翻转码写入到存储器。
编码模块的输出格式:N bit数据+Y bit校验码+1bit翻转码。以N为8,Y为8为例,假如,编码模块收到的数据为b’01001001,校验码为b’00110010,编码时获取数据和校验码中0和1的个数,其中0的个数为10,1的个数为6,0的个数大于1的个数,因此,将数据和校验码进行翻转,同时将翻转码设置为0。编码后数据格式:数据+校验码+翻转码=b’10110110(翻转后数据)b’11001101(翻转后校验码)0(翻转码)。
本申请所示的方法同样适用于存储器损坏时,数据只能由1变成0的存储器,对于存储器损坏时数据只能由1变成0的存储器,需要减少存储数据为1的个数。本申请实施例中,在存储数据时通过减少数据0或1的个数,从而可以减少存储器损坏时,数据发生翻转的数量,从数据源头降低存储数据出现翻转的概率,进而可以降低存储器的存储故障。
一种实施方式下,编码模块在根据二进制数中0和1的个数,确定数据和校验码是否翻转时,数据和校验码可以不再是同时翻转或不翻转(该种实施方式下,只需要一个翻转码)而是可以根据各自的二进制数中0和1的个数,来确定数据、校验码是否翻转,这样可以进一步减少存储的数据0或1的个数。此时,翻转码包括:数据翻转码和校验翻转码,数据翻转码表征第二数据的翻转情况,校验翻转码表征第二校验码的翻转情况。即根据第一数据中0和1的个数来确定第一数据是否翻转,如第一数据中0的个数大于1的个数,确定第一数据需要翻转,对应的数据翻转码为0。同理,根据第一校验码中0和1的个数来确定第一校验码是否翻转,如第一校验码中0的个数大于1的个数,确定第一校验码需要翻转,对应的校验翻转码为0。在该种实施方式下,编码模块的输出格式:N bit数据+Y bit校验码+2bit翻转码(1bit数据翻转码+1bit校验翻转码)。
一种实施方式下,以存储器为eFuse为例,则写eFuse的流程图,如图3所示。当应用发起写eFuse操作时,校验码生成模块计算出校验码,然后将数据和校验码发给编码模块。编码模块统计收到的数据和校验码中0和1的个数,判断收到的数据和校验码中0的个数是否大于1的个数,如果大于则翻转码设置为0,否则翻转码为1。最后编码模块将数据、校验码和翻转码写入eFuse。
在应用从存储器中读取数据时:
解码模块被配置为从存储阵列中读取第二数据、第二校验码和翻转码,并对第二数据、第二校验码和翻转码进行解码,得到第一数据和第一校验码,并输出第一数据和第一校验码。
数据校验纠错模块,被配置为基于来自解码模块的第一校验码对第一数据进行校验,当校验结果表征第一数据正常的情况下,输出第一数据。
一种实施方式下,数据校验纠错模块包括校验和纠错单元,校验和纠错单元,被配置为基于来自解码模块的第一校验码对第一数据进行校验,当校验结果表征第一数据正常的情况下,输出第一数据。
一种实施方式下,数据校验纠错模块还被配置为:当校验结果表征第一数据异常的情况下,判断第一数据能否被纠正;在第一数据能被纠正的情况下,对第一数据进行纠正,输出纠正后的第一数据;在第一数据不能被纠正的情况下,输出中断标记位,其中,中断标记位用于表征第一数据异常、且不可纠正。
一种实施方式下,在输出中断标记位时,可以通过配置错误状态寄存器来实现,例如,在第一数据正常,或者,在第一数据异常、且可纠正时,配置错误状态寄存器为0,在第一数据异常、且不可纠正,配置错误状态寄存器为1,以通知应用数据异常。其中,错误状态寄存器可以设置于存储器内部。
在该种实施方式下,数据校验纠错模块还可以包括错误状态寄存器,校验和纠错单元还被配置为:当校验结果表征第一数据异常的情况下,判断第一数据能否被纠正;在第一数据能被纠正的情况下,对第一数据进行纠正,输出纠正后的第一数据;在第一数据不能被纠正的情况下,配置错误状态寄存器输出中断标记位,其中,中断标记位用于表征第一数据异常、且不可纠正。在一些可能的实施方式下,错误状态寄存器可以不属于数据校验纠错模块,其可以单独设置。
解码模块在对第二数据、第二校验码和翻转码进行解码,得到第一数据和第一校验码时,一种实施方式下,在翻转码表征第二数据、第二校验码发生翻转的情况下,将第二数据、第二校验码进行翻转,得到第一数据以及第一校验码,其中,第一数据为翻转后的第二数据,第一校验码为翻转后的第二校验码。在翻转码表征第二数据、第二校验码未发生翻转的情况下,第一数据为第二数据,第一校验码为第二校验码。其原理如图4所示,读操作时解码模块将收到的数据、校验码和翻转码进行解码。解码时判断翻转码的值是否为0,如果值为0则将数据和校验码翻转后发送给数据校验纠错模块。否则数据和校验码不翻转,直接将数据码和校验码发送给数据校验纠错模块。
编码模块的输出格式:N bit数据+Y bit校验位。例如N为8,Y为8,收到的数据为b’10110110,校验码为b’11001101,翻转码为0。由于翻转码为0,首先对数据和校验码进行翻转,翻转后的数据为b’001001001(翻转后数据),校验码为b’0011001(翻转后校验码)。然后将数据和校验码送往数据校验纠错模块。
在一些可能的实施方式下,解码模块在对第二数据、第二校验码和翻转码进行解码时,还会统计第二数据、第二校验码的二进制数中0和1的个数,根据二进制数中0和1的个数和翻转码,得到第一数据和第一校验码。在根据二进制数中0和1的个数和翻转码,得到第一数据和第一校验码时,一种实施方式下,其过程可以是:根据二进制数中0和1的个数,确定第二数据、第二校验码的翻转情况,如果根据二进制数中0和1的个数确定的翻转情况与翻转码表征的翻转情况相同,则按照正常的逻辑处理,即如果翻转码表征发生翻转,将第二数据、第二校验码进行翻转,如果翻转码表征没有发生翻转,直接输出第二数据、第二校验码。在一些可能的实施方式中,解码模块可以包括可编程逻辑器件,利用可编程逻辑器件实现上述功能。在一些可能的实施方式下,解码模块可以包括:计数器、比较器以及解码单元。计数器被配置为统计第二数据、第二校验码中0和1的个数;比较器被配置为比较0和1的个数,确定第二数据、第二校验码的翻转情况;解码单元被配置为如果根据0和1的个数确定的翻转情况与翻转码表征的翻转情况相同,对翻转码、第二数据、第二校验码进行解码,得到第一数据和第一校验码。
如果根据二进制数中0和1的个数确定的翻转情况与翻转码表征的翻转情况不同,一种实施方式下,可以直接输出中断标记位,表征数据异常。在一些可能的实施方式下,编码单元可以根据二进制数中0和1的个数确定的翻转情况,来进行逻辑处理,如根据二进制数中0和1的个数确定的翻转情况为发生翻转,将第二数据、第二校验码进行翻转,否则直接输出第二数据、第二校验码。
如果根据二进制数中0和1的个数确定的翻转情况与翻转码表征的翻转情况不同,一种可能的实施方式下,编码单元可以根据第二数据、第二校验码,得到第一数据和第一校验码,如需要输出第二数据、第二校验码,以及翻转后的第二数据、翻转后的第二校验码。例如,对于存储器损坏时数据只能由0变成1的存储器,在翻转码表征第二数据、第二校验码发生翻转,但二进制数中1的个数小于0的个数(表征没有翻转)时,输出第二数据以及翻转后的第二数据,以及输出第二校验码以及翻转后的第二校验码,此时,第一数据包括第二数据以及翻转后的第二数据,第一校验码包括第二校验码以及翻转后的第二校验码。该种实施方式中,解码模块的原理示意如图5所示,在读操作时解码模块将收到的数据、校验码和翻转码进行解码。解码时判断翻转码表征的翻转情况是否与数据、校验码的二进制中0和1的个数表征的翻转情况是否相同,在相同时,判断翻转码的值是否为0,如果值为0则将数据和校验码翻转后发送给数据校验纠错模块。否则数据和校验码不翻转,直接将数据码和校验码发送给数据校验纠错模块。如果翻转码表征的翻转情况与根据二进制中0和1的个数表征的翻转情况不相同时,将数据和校验码翻转后发送给数据校验纠错模块,同时,直接将数据码和校验码发送给数据校验纠错模块。
一种实施方式下,翻转码可以是一个,也可以是2个,当翻转码为2个时,需要分别对第二数据以及第二校验码进行判断,不再是整体判断。
一种实施方式下,当数据校验纠错模块收到的第一数据包括第二数据以及翻转后的第二数据,第一校验码包括第二校验码以及翻转后的第二校验码时,数据校验纠错模块中的校验和纠错单元还被配置为基于第二校验码对第二数据进行第一校验,以及基于翻转后的第二校验码对翻转后的第二数据进行第二校验;当第一校验结果表征第二数据正常的情况下,输出第二数据,或,当第二校验结果表征翻转后的第二数据正常的情况下,输出翻转后的第二数据。
当第一校验结果表征第二数据异常的情况下,判断第二数据能否被纠正;在第二数据能被纠正的情况下,对第二数据进行纠正,输出纠正后的第二数据;在第二数据不能被纠正的情况下,输出中断标记位,其中,中断标记位用于表征第二数据异常、且不可纠正。当第二校验结果表征翻转后的第二数据异常的情况下,判断翻转后的第二数据能否被纠正;在翻转后的第二数据能被纠正的情况下,对翻转后的第二数据进行纠正,输出纠正后的数据;在翻转后的第二数据不能被纠正的情况下,输出中断标记位,其中,中断标记位用于表征翻转后的第二数据异常、且不可纠正。
一种实施方式下,以存储器为eFuse为例,则读eFuse的流程图,如图6所示。当应用发起读操作时,解码模块读出数据、校验码和翻转码。解码模块判断翻转码是否为0。如果翻转码为0则将数据和校验码进行翻转后发送到数据校验纠错模块,否则不翻转直接发送到数据校验纠错模块。数据校验纠错模块中的校验和纠错单元对数据进行校验和纠错,如果数据发生了错误且能被纠正或者数据未发生错误,则错误状态寄存器设置为0,同时将纠正后数据或者无错误的数据返回给应用做后续处理。例如数据发给解密引擎或者IP参数配置等。否则错误状态寄存器设置为1用于通知用户数据异常。
本申请中,在存储数据时通过减少数据0或1的个数,降低eFuse中数据发生翻转的概率,达到降低eFuse储存故障率的效果,再通过使用校验和纠错进一步降低了储存故障率。可以理解的是,上述的校验和纠错与存储数据时通过减少数据0或1的个数的方式可以不同时使用,在该种实施方式下,可以省略上述的校验码生成模块以及数据校验纠错模块。此时,编码模块直接对接收到的数据进行编码,生成编码数据和翻转码,并将其存入存储阵列,在读取数据时,解码模块对读取的编码数据和翻转码进行解码,得到解码后的数据,之后,直接输出数据即可。因此,在本申请揭露的技术范围内的各种轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。
本申请实施例还提供了一种电子设备,该电子设备包括上述的存储器。一种可能的实施方式下,电子设备的结构框图如图7所示。所述电子设备包括:收发器、存储器、通讯总线以及处理器。
所述收发器、所述存储器、处理器各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。其中,收发器用于收发数据。存储器用于存储数据。所述处理器,可以用于向存储器写入数据或读取数据。
处理器可能是一种集成电路芯片,具有信号的处理能力。上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(NetworkProcessor,NP)、微处理器等;还可以是数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。或者该处理器也可以是任何常规的处理器等。
其中,上述的电子设备,包括但不限于手机、平板、电脑、服务器等。
本申请实施例还提供了一种数据读写方法,该数据读写方法可以应用于上述的存储器。该数据读写方法包括:S1~S3。
S1:获取第一数据,并生成所述第一数据的第一校验码。
该步骤可以是由上述的校验码生成模块来实现。
S2:对所述第一数据以及所述第一校验码进行编码,生成第二数据、第二校验码和翻转码。
其中,所述翻转码表征所述第二数据、所述第二校验码的翻转情况。该步骤可以是由上述的编码模块来实现。
一种实施方式下,该步骤的实现过程可以是:统计所述第一数据、所述第一校验码的二进制数中0和1的个数;根据二进制数中0和1的个数,确定所述第一数据、所述第一校验码的翻转情况;根据所述翻转情况、所述第一数据、所述第一校验码,生成所述第二数据、所述第二校验码和所述翻转码。
S3:存储所述第二数据、所述第二校验码和所述翻转码。
该步骤可以是由上述的存储阵列来实现。
一种实施方式下,数据读写方法还包括S4~S6。
S4:读取所述第二数据、所述第二校验码和所述翻转码。
该步骤可以由上述的解码模块来实现。
S5:对所述第二数据、所述第二校验码和所述翻转码进行解码,得到第一数据和第一校验码。
该步骤可以由上述的解码模块来实现。
一种实施方式下,S5的实现过程是:根据翻转码表征的翻转情况确定第二数据、第二校验码是否需要翻转,例如,在翻转码表征第二数据、第二校验码发生翻转的情况下,将第二数据、第二校验码进行翻转,其中,第一数据为翻转后的第二数据,第一校验码为翻转后的第二校验码。
一种实施方式下,S5的实现过程是:统计第二数据、第二校验码的二进制数中0和1的个数;根据二进制数中0和1的个数和翻转码,得到第一数据和第一校验码。
其中,根据二进制数中0和1的个数和翻转码,得到第一数据和第一校验码的过程可以是:比较二进制数中0和1的个数,确定第二数据、第二校验码的翻转情况;如果根据二进制数中0和1的个数确定的翻转情况与翻转码表征的翻转情况相同,对翻转码、第二数据、第二校验码,进行解码,得到第一数据和第一校验码。
如果根据二进制数中0和1的个数确定的翻转情况与翻转码表征的翻转情况不相同,则可以同时输出第二数据、第二校验码,以及输出翻转后的第二数据、翻转后的第二校验码。此时,第一数据包括第二数据以及翻转后的第二数据,第一校验码包括第二校验码以及翻转后的第二校验码。
S6:基于所述第一校验码对所述第一数据进行校验,当校验结果表征所述第一数据正常的情况下,输出所述第一数据。
该步骤可以由上述的数据校验纠错模块来实现。
其中,第一数据包括第二数据以及翻转后的第二数据,第一校验码包括第二校验码以及翻转后的第二校验码;S5的过程可以是:基于第二校验码对第二数据进行第一校验,以及基于翻转后的第二校验码对翻转后的第二数据进行第二校验;当第一校验结果表征第二数据正常的情况下,输出第二数据,或,当第二校验结果表征翻转后的第二数据正常的情况下,输出翻转后的第二数据。
本申请实施例所提供的数据读写方法,其实现原理及产生的技术效果和前述存储器实施例相同,为简要描述,方法实施例部分未提及之处,可参考前述存储器实施例中相应内容。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。
Claims (13)
1.一种存储器,其特征在于,包括:
校验码生成模块,被配置为接收第一数据,并生成所述第一数据的第一校验码;
编码模块,被配置为对所述第一数据以及所述第一校验码进行编码,生成第二数据、第二校验码和翻转码,其中,所述翻转码表征所述第二数据、所述第二校验码的翻转情况;
存储阵列,被配置为存储所述第二数据、所述第二校验码和所述翻转码。
2.根据权利要求1所述的存储器,其特征在于,所述第一数据以及所述第一校验码为二进制数据;所述编码模块包括:
计数器,被配置为统计所述第一数据、所述第一校验码中0和1的个数;
比较器,被配置为比较所述0和1的个数,确定所述第一数据、所述第一校验码的翻转情况;
编码单元,被配置为根据所述翻转情况、所述第一数据、所述第一校验码,编码生成所述第二数据、第二校验码和所述翻转码。
3.根据权利要求2所述的存储器,其特征在于,所述翻转码包括:数据翻转码和校验翻转码,所述数据翻转码表征所述第二数据的翻转情况,所述校验翻转码表征所述第二校验码的翻转情况。
4.根据权利要求1-3中任一项所述的存储器,其特征在于,所述存储器还包括:
解码模块,被配置为从所述存储阵列中读取所述第二数据、所述第二校验码和所述翻转码,并对所述第二数据、所述第二校验码和所述翻转码进行解码,得到第一数据和第一校验码;
数据校验纠错模块,包括校验和纠错单元,所述校验和纠错单元被配置为基于所述第一校验码对所述第一数据进行校验,当校验结果表征所述第一数据正常的情况下,输出所述第一数据。
5.根据权利要求4所述的存储器,其特征在于,所述数据校验纠错模块还包括错误状态寄存器;
所述校验和纠错单元还被配置为:当校验结果表征所述第一数据异常的情况下,判断所述第一数据能否被纠正;
在所述第一数据能被纠正的情况下,对所述第一数据进行纠正,输出纠正后的所述第一数据;在所述第一数据不能被纠正的情况下,配置所述错误状态寄存器输出中断标记位,其中,所述中断标记位用于表征所述第一数据异常、且不可纠正。
6.根据权利要求4所述的存储器,其特征在于,所述解码模块被配置为:
在所述翻转码表征所述第二数据、所述第二校验码发生翻转的情况下,将所述第二数据、所述第二校验码进行翻转,其中,所述第一数据为翻转后的所述第二数据,所述第一校验码为翻转后的所述第二校验码。
7.根据权利要求4所述的存储器,其特征在于,所述解码模块包括:
计数器,被配置为统计所述第二数据、所述第二校验码中0和1的个数;
比较器,被配置为比较所述0和1的个数,确定所述第二数据、所述第二校验码的翻转情况;
解码单元,被配置为如果根据所述0和1的个数确定的翻转情况与所述翻转码表征的翻转情况相同,对所述翻转码、所述第二数据、所述第二校验码进行解码,得到第一数据和第一校验码。
8.根据权利要求7所述的存储器,其特征在于,所述解码模块还被配置为:
如果根据所述0和1的个数确定的翻转情况与所述翻转码表征的翻转情况不相同,输出所述第二数据、所述第二校验码,以及翻转后的所述第二数据、翻转后的所述第二校验码;
其中,所述第一数据包括所述第二数据以及翻转后的所述第二数据,所述第一校验码包括所述第二校验码以及翻转后的所述第二校验码。
9.根据权利要求8所述的存储器,其特征在于,所述校验和纠错单元还被配置为:
基于所述第二校验码对所述第二数据进行第一校验,以及基于翻转后的所述第二校验码对翻转后的所述第二数据进行第二校验;
当第一校验结果表征所述第二数据正常的情况下,输出所述第二数据,或,当第二校验结果表征翻转后的所述第二数据正常的情况下,输出翻转后的所述第二数据。
10.一种存储器,其特征在于,包括:
存储阵列,被配置为存储第二数据、第二校验码和翻转码,其中,所述翻转码表征所述第二数据、所述第二校验码的翻转情况;
解码模块,被配置为从所述存储阵列中读取所述第二数据、所述第二校验码和所述翻转码,并对所述第二数据、所述第二校验码和所述翻转码进行解码,生成第一数据和第一校验码;
数据校验纠错模块,被配置为基于所述第一校验码对所述第一数据进行校验,当校验结果表征所述第一数据正常的情况下,输出所述第一数据。
11.一种电子设备,包括:如权利要求1-10任一项所述的存储器。
12.一种数据读写方法,其特征在于,包括:
获取第一数据,并生成所述第一数据的第一校验码;
对所述第一数据以及所述第一校验码进行编码,生成第二数据、第二校验码和翻转码,其中,所述翻转码表征所述第二数据、所述第二校验码的翻转情况;
存储所述第二数据、所述第二校验码和所述翻转码。
13.根据权利要求12所述的方法,其特征在于,所述方法还包括:
读取所述第二数据、所述第二校验码和所述翻转码;
对所述第二数据、所述第二校验码和所述翻转码进行解码,得到第一数据和第一校验码;
基于所述第一校验码对所述第一数据进行校验,当校验结果表征所述第一数据正常的情况下,输出所述第一数据。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202410143664.7A CN117935896A (zh) | 2024-01-31 | 2024-01-31 | 一种存储器、电子设备及数据读写方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202410143664.7A CN117935896A (zh) | 2024-01-31 | 2024-01-31 | 一种存储器、电子设备及数据读写方法 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CN117935896A true CN117935896A (zh) | 2024-04-26 |
Family
ID=90757522
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202410143664.7A Pending CN117935896A (zh) | 2024-01-31 | 2024-01-31 | 一种存储器、电子设备及数据读写方法 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN117935896A (zh) |
-
2024
- 2024-01-31 CN CN202410143664.7A patent/CN117935896A/zh active Pending
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN102567134B (zh) | 存储器模块的错误检查与校正系统以及方法 | |
| US8589737B2 (en) | Memory system with redundant data storage and error correction | |
| US7137057B2 (en) | Method and apparatus for performing error correction code (ECC) conversion | |
| US20040243887A1 (en) | Method and apparatus for verifying error correcting codes | |
| CN111143107B (zh) | 一种fpga单粒子反转校验电路和方法 | |
| KR20080054412A (ko) | 에러 검출/보정 회로 및 방법과, 전자 메모리 소자 또는메모리 모듈 | |
| JPH05108495A (ja) | データ用誤り訂正検出方法及びコンピユータ・メモリ用 誤り検出回路 | |
| CN111428280B (zh) | SoC安全芯片密钥信息完整性存储及错误自修复方法 | |
| US10191801B2 (en) | Error correction code management of write-once memory codes | |
| CN101373640A (zh) | 闪存装置以及错误校正方法 | |
| CN115904798A (zh) | 存储器的纠错检错方法、系统以及控制器 | |
| CN118199656A (zh) | 用于ecc故障检测的电路、系统和方法 | |
| US10860415B2 (en) | Memory architecture including response manager for error correction circuit | |
| CN115269258B (zh) | 一种数据恢复的方法和系统 | |
| CN117935896A (zh) | 一种存储器、电子设备及数据读写方法 | |
| CN106716387B (zh) | 存储器诊断电路 | |
| US20070260962A1 (en) | Methods and apparatus for a memory device with self-healing reference bits | |
| JP2012003569A (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
| CN120523647B (zh) | 一种数据存储、读取方法以及数据存储、读取电路 | |
| CN115904794A (zh) | 一种数据处理方法及装置 | |
| JP4213814B2 (ja) | エラー訂正回路のチェック方法およびチェック機能付きエラー訂正回路 | |
| US11579953B2 (en) | Method for encoded diagnostics in a functional safety system | |
| CN120821605B (zh) | 故障检测系统、方法、电子设备、存储介质和程序产品 | |
| RU2297034C2 (ru) | Отказоустойчивое устройство хранения информации | |
| JPS63310045A (ja) | マイクロコンピユ−タ |
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 |