CN117033257A - 数据读取方法、装置、电子设备及可读存储介质 - Google Patents
数据读取方法、装置、电子设备及可读存储介质 Download PDFInfo
- Publication number
- CN117033257A CN117033257A CN202311001353.9A CN202311001353A CN117033257A CN 117033257 A CN117033257 A CN 117033257A CN 202311001353 A CN202311001353 A CN 202311001353A CN 117033257 A CN117033257 A CN 117033257A
- Authority
- CN
- China
- Prior art keywords
- data
- data address
- address
- bit
- reading
- 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
- 238000000034 method Methods 0.000 title claims abstract description 76
- 238000012545 processing Methods 0.000 claims abstract description 9
- 238000012937 correction Methods 0.000 claims description 17
- 239000004744 fabric Substances 0.000 claims 4
- 230000006870 function Effects 0.000 description 10
- 230000002159 abnormal effect Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 230000003190 augmentative effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 229910000679 solder Inorganic materials 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000009662 stress testing Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本申请公开了一种数据读取方法、装置、电子设备及可读存储介质,属于数据处理领域。该方法包括:在利用第一数据地址进行数据读取的次数大于第一阈值,且未读取到数据的情况下,确定第一数据地址是否发生位翻转;在第一数据地址发生位翻转的情况下,根据第一数据地址确定第二数据地址;利用第二数据地址进行数据读取。
Description
技术领域
本申请属于数据处理领域,具体涉及一种数据读取方法、装置、电子设备及可读存储介质。
背景技术
目前,在读取中央处理器(Central Processing Unit,CPU)或数据方向寄存器(Data Direction Register,DDR)中存储的数据时,可以通过访问用于指示CPU或DDR中存储的数据的数据地址,以读取到该数据地址所指示的数据。
然而,在数据访问过程中,常常发生电子设备重启的情况,使得系统的稳定性较差。
发明内容
本申请实施例的目的是提供一种数据读取方法、装置、电子设备及可读存储介质,能够提高电子设备系统的稳定性。
第一方面,本申请实施例提供了一种数据读取方法,该方法包括:在利用第一数据地址进行数据读取的次数大于第一阈值,且未读取到数据的情况下,确定第一数据地址是否发生位翻转;在第一数据地址发生位翻转的情况下,根据第一数据地址确定第二数据地址;利用第二数据地址进行数据读取。
第二方面,本申请实施例提供了一种数据读取装置,该装置包括确定模块和读取模块;确定模块,用于在利用第一数据地址进行数据读取的次数大于第一阈值,且未读取到数据的情况下,确定第一数据地址是否发生位翻转;确定模块,还用于在第一数据地址发生位翻转的情况下,根据第一数据地址确定第二数据地址;读取模块,用于利用确定模块确定的第二数据地址进行数据读取。
第三方面,本申请实施例提供了一种电子设备,该电子设备包括处理器和存储器,所述存储器存储可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如第一方面所述的方法的步骤。
第四方面,本申请实施例提供了一种可读存储介质,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如第一方面所述的方法的步骤。
第五方面,本申请实施例提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现如第一方面所述的方法。
第六方面,本申请实施例提供一种计算机程序产品,该程序产品被存储在存储介质中,该程序产品被至少一个处理器执行以实现如第一方面所述的方法。
在本申请实施例中,可以在利用第一数据地址进行数据读取的次数大于第一阈值,且未读取到数据的情况下,确定第一数据地址是否发生位翻转,在第一数据地址发生位翻转的情况下,根据第一数据地址确定第二数据地址,并利用第二数据地址进行数据读取。通过该方案,由于在利用第一数据地址进行数据读取的次数大于第一阈值,且未读取到目标元件的目标数据的情况下,可以及时检测第一数据地址是否发生位翻转,并在第一数据地址发生位翻转的情况下,及时根据第一数据地址确定第二数据地址,因此可以避免因位翻转从异常的数据地址读取数据,导致的电子设备重启,从而可以提高电子设备系统的稳定性。
附图说明
图1是本申请实施例提供的数据读取方法的流程图之一;
图2是本申请实施例提供的数据读取方法的流程图之二;
图3是本申请实施例提供的数据读取方法的流程图之三;
图4是本申请实施例提供的数据读取方法的流程图之四;
图5是本申请实施例提供的数据读取方法的流程图之五;
图6是本申请实施例提供的数据读取方法的流程图之六;
图7是本申请实施例提供的数据读取装置的示意图;
图8是本申请实施例提供的电子设备的示意图;
图9是本申请实施例提供的电子设备的硬件示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中“和/或”表示所连接对象的至少其中之一,字符“/”,一般表示前后关联对象是一种“或”的关系。
本申请的术语“指示”既可以是一个直接的指示(或者说显式的指示),也可以是一个间接的指示(或者说隐含的指示)。其中,直接的指示可以理解为,发送方在发送的指示中明确告知了接收方具体的信息、需要执行的操作或请求结果等内容;间接的指示可以理解为,接收方根据发送方发送的指示确定对应的信息,或者进行判断并根据判断结果确定需要执行的操作或请求结果等。
本申请的说明书和权利要求书中的术语“至少一个(项)”、“至少之一”等指其包含对象中的任意一个、任意两个或两个以上的组合。例如,a、b、c中的至少一个(项),可以表示:“a”、“b”、“c”、“a和b”、“a和c”、“b和c”以及“a、b和c”,其中a,b,c可以是单个,也可以是多个。同理,“至少两个(项)”是指两个或两个以上,其表达的含义与“至少一个(项)”类似。
下面结合附图,通过具体的实施例及其应用场景对本申请实施例提供的数据读取方法、装置、电子设备及可读存储介质进行详细地说明。
位翻转(即Bitflip,也称为比特翻转或位反转)是一种常见的电子设备故障,在压力测试或用户场景中经常能够遇到。位翻转是指电子设备的CPU(具体可以为CPU中的高速缓冲存储器或通用寄存器)、DDR或闪存(即flash)中,一个或者多个比特位(即bit)发生翻转;例如,比特位由0变为1,或由1变为0,从而会导致16进制数据F变为D,或者F变为B等。位翻转并非软件行为,而是硬件故障导致的非预期现象。
电子设备中的位翻转主要由以下因素导致:
1.元件不良,即CPU或DDR元件本身的不良;例如,CPU中高速缓冲存储器(即cache)的异常或者通用寄存器的异常等。
2.元件供电不足或供电受到干扰;CPU、DDR或flash等元件工作时通常需要稳定的电压频率,如果供电不足或者波动较大,就会引发元件状态不稳定,随之可能会导致位翻转。而且电子设备在低压低频或低功耗的情况下发生位翻转的概率较大,在高负载或者高压高频情况下发生位翻转的概率相对于低频场景较小。
3.传输干扰;数据在元件之间(例如CPU和DDR之间)传输时,引脚之间的干扰较大也会导致位翻转。
4.引脚虚焊;例如,元件与主板的硬件有虚焊。
5.主板损坏或微损坏;主板损坏或微损坏会导致给元件的电或者信号不稳定,可能导致位翻转。
发明人发现,在数据访问的场景下,电子设备重启的原因之一是:CPU或DDR本身的异常、CPU或DDR供电受到干扰或者数据传输场景下的引脚间的干扰,导致的数据访问地址发生位翻转。
然而,一旦发生位翻转,便可能会访问到异常的数据地址(例如,访问到了0xFFFFDF或者0xBFFFFF开头的地址),即不属于内核空间地址(即kernel space address,地址区间为0xFFFFFF0000000000~0xFFFFFFFFFFFFFFFF)和用户空间地址(即user spaceaddress,地址区间为0x0000000000000000~0x000000FFFFFFFFFF)中的数据地址,从而会触发触发数据中止(即data abort),进而触发内核错误(Kernel panic),使得电子设备重新启动,而电子设备的频繁重启导致系统的稳定性差。
当前芯片平台厂商对于位翻转导致的电子设备死机或重启并没有补救措施。为了解决上述问题,本申请实施例提供一种数据读取方法、装置、电子设备及可读存储介质,本申请实施例提供的数据读取方法可以应用在发生位翻转时的数据读取场景。
在本申请实施例提供的数据读取方法中,可以在利用第一数据地址进行数据读取的次数大于第一阈值,且未读取到数据的情况下,确定该第一数据地址是否发生位翻转;且在该第一数据地址发生位翻转的情况下,根据该第一数据地址确定第二数据地址;并利用该第二数据地址进行数据读取。通过该方案,由于在利用第一数据地址进行数据读取的次数大于第一阈值,且未读取到目标元件的目标数据的情况下,可以及时检测第一数据地址是否发生位翻转,并在第一数据地址发生位翻转的情况下,及时根据第一数据地址确定第二数据地址,因此可以避免因位翻转从异常的数据地址读取数据,导致的电子设备重启,从而可以提高电子设备系统的稳定性。
需要说明的是,本申请实施例提供的数据读取方法,执行主体可以为数据读取装置、电子设备或电子设备中的功能模块等。本申请的一些实施例中以电子设备执行数据读取方法为例,说明本申请实施例提供的数据读取方法。
图1示出了本申请实施例提供的数据读取方法的流程图。如图1所示,本申请实施例提供的数据读取方法可以包括下述的步骤101至步骤103。
步骤101、在利用第一数据地址进行数据读取的次数大于第一阈值,且未读取到数据的情况下,电子设备确定第一数据地址是否发生位翻转。
可选地,本申请实施例中,上述第一数据地址可以为电子设备中第一元件存储的数据的数据地址。
可选地,本申请实施例中,电子设备可以通过访问上述第一数据地址,读取该第一数据地址的数据。
可选地,本申请实施例中,上述第一元件可以为电子设备中的CPU、DDR或flash等。
例如,以上述第一元件为CPU为例,对该CPU的数据读取可以为:读取该CPU中的cache或X0-X30寄存器中存储的数据。
可选地,本申请实施例中,上述第一阈值可以为系统预设的,或可以为用户根据使用需求任意设置的。
例如,以上述第一阈值为用户根据使用需求任意设置的为例,该第一阈值可以为用户根据使用需求任意设置的10次、15次或20次等任意的次数。
可选地,本申请实施例中,可以通过为上述第一元件设置的寄存器,对上述数据读取的次数进行计数,并在该寄存器中的数值大于上述第一阈值,且未读取到数据的情况下,确定上述第一数据地址是否发生位翻转。
可选地,本申请实施例中,电子设备在确定上述第一数据地址是否发生位翻转之后,可以对上述寄存器中的数值进行清零,并在下次利用上述第一数据地址对上述第一元件进行数据读取时,通过该寄存器重新进行计数。
可选地,本申请实施例中,电子设备可以为上述第一元件设置两个寄存器,分别对高频场景下的数据读取次数和低频场景下的数据读取次数进行计数,并在其中一个寄存器中的数值大于该寄存器对应的阈值时,确定上述第一数据地址是否发生位翻转。
可选地,本申请实施例中,上述对高频场景下的数据读取次数进行计数的寄存器对应的阈值(以下称为阈值a),可以与上述对低频场景下的数据读取次数进行计数的寄存器对应的阈值(以下称为阈值b)相同或不同。
可选地,本申请实施例中,上述阈值b可以小于上述阈值a,以使低频场景下确定上述第一数据地址是否发生位翻转的频率较高,且高频场景下确定该第一数据地址是否发生位翻转的频率较低,从而可以适应低频场景下发生位翻转的概率较大,以及高频场景下发生位翻转的概率较小,进而在性能和稳定性中达到平衡。
可选地,本申请实施例中,监测上述数据读取的次数,以及确定上述第一数据地址是否发生位翻转均可以通过C代码或汇编代码实现。
可选地,本申请实施例中,可以为电子设备中的CPU、DDR和flash等分别设置一个寄存器,以对不同元件的数据读取次数进行计数。
例如,假设为电子设备中的CPU设置CPUCOUNT寄存器,以对该CPU的数据读取次数进行计数,并为电子设备中的DDR设置DDRCOUNT寄存器,以对该DDR的数据读取次数进行计数;那么相应的汇编代码如下所示:
LDR X8,[X10]–从x10寄存器读取数值,并从x10寄存器保存的地址值中读取数据到x8寄存器
ADD CPUCOUNT,CPUCOUNT,#0x1—CPU寄存器读取次数+1
CMP CPUCOUNT,#0xA–判断从CPU cache或者通用寄存器读取数据的次数是否达到10次
B.EQ校验修正汇编代码地址–如果达到的话跳转到校验修正汇编代码段。
ADD DDRCOUNT,DDRCOUNT,#0x1—DDR读取次数+1
CMP DDRCOUNT,#0xA–判断从DDR读取数据的次数是否达到10次
B.EQ校验修正汇编代码地址–如果达到的话跳转到校验修正汇编代码段。
可选地,本申请实施例中,上述第一数据地址可以为第一数制的数据地址。示例性地,结合图1,如图2所示,上述步骤101具体可以通过下述的步骤101a和步骤101b实现。
步骤101a、在利用第一数据地址进行数据读取的次数大于第一阈值,且未读取到数据的情况下,电子设备将第一数据地址转换为第二数制的数据地址。
可选地,本申请实施例中,上述第一数制可以为2进制,上述第二数制可以为16进制。
可选地,本申请实施例中,电子设备将2进制的上述第一数据地址转为为16进制的数据地址,以便于在C代码或汇编代码中进行操作。
可选地,本申请实施例中,上述第一数制和上述第二数制还可以为任意可能的两种不同数制,具体可以根据实际实现设置,本申请实施例不作限定。
步骤101b、电子设备基于第二数制的数据地址确定第一数据地址是否发生位翻转。
可选地,本申请实施例中,电子设备可以通过C代码或汇编代码,基于上述第二数制的数据地址(即第二数制的上述第一数据地址)确定该第一数据地址是否发生位翻转。
本申请实施例中,由于电子设备可以先对上述第一数据地址进行数制转换,然后基于数制转换后的第一数据地址确定第一数据地址是否发生位翻转,因此可以便于通过基于不同数制的检测方法(例如,基于16进制的C代码或汇编代码),确定第一数据地址是否发生位翻转,从而可以提高检测的灵活性。
可选地,本申请实施例中,结合图2,如图3所示,在上述101b之前,本申请实施例提供的数据读取方法还可以包括下述的步骤101c;上述步骤101b具体可以通过下述的步骤101b1实现。
步骤101c、电子设备确定第二数制的数据地址中位值为第二数值的位的数量。
可选地,本申请实施例中,上述第二数值可以为0。
步骤101b1、在数量小于或等于第二阈值的情况下,电子设备基于第二数制的数据地址确定第一数据地址是否发生位翻转。
可选地,本申请实施例中,上述数量即上述第二数制的数据地址中位值为上述第二数值的位的数量。
可选地,本申请实施例中,上述第二阈值可以为系统预设的,或可以为用户根据实际使用需求设置的。
例如,以上述第二阈值为系统预设的为例,该第二阈值可以为30、40或50等。
可选地,本申请实施例中,当上述第二数制的数据地址中位值为0的位的数量大于上述第二阈值时,可以认为上述第一数据地址为空指针(由于正常的数据地址不会有过多位为0);此时代码层面会跳过对该空指针的访问,并跳转至接续的代码段。
需要说明的是,一旦访问了空指针,将会触发data abort异常进而触发电子设备的重新启动。
可选地,本申请实施例中,当上述第二数制的数据地址中位值为0的位的数量小于或等于上述第二阈值时,可以认为上述第一数据地址为非空指针;正常情况下可以直接访问该非空指针(即该第一数据地址),但考虑到位翻转的因素,该非空指针可能是空指针位翻转之后得到的,而一旦访问了该非空指针,由于实际上,访问的是空指针,因此会导致电子设备的重启。如此需要基于上述第二数制的数据地址确定该第一数据地址是否发生位翻转。
示例性地,在CBZ指令(表示预测一个寄存器的值是否为0,若为0,则将控制流程更改为另一个代码地址处)或CBNZ指令(与CBZ指令类似,但在测试时会反转结果)的非空指针判断的场景下,相关技术中的汇编代码如下:
LDR X25,[X24]–将CPU中x24寄存器保存的数据在DDR中寻址,读取到CPU中x25寄存器
CBZ X25,0xFFFFFF1234567890–若是0,则跳转到0xFFFFFF1234567890这个假想的汇编代码段,这个假想的代码段是指跳过对空指针访问后接续的代码段
LDR X8,[X25]–若非0,则访问改地址,但是由于发生bitflip,访问时发生dataabort并触发死机。
可以看出,在上述汇编代码中TBZ指令只能对其中某一个bit进行判断,但是考虑到位翻转发生的随机性,不能照顾到所有的场景,多条TBZ指令会显得汇编代码较为冗余。从而可以考虑新增一个TSC指令,用于判断该地址中保存的数据,是否设定的数值以上的bit都为0,汇编代码如下:
LDR X25,[X24]–将x24寄存器保存的数据在DDR中寻址,并读取到x25寄存器
ADD DDRCOUNT,DDRCOUNT,#0x1—DDR读取次数+1
CMP DDRCOUNT,#0xA–判断从DDR读取数据的次数是否达到10次(即上述第一阈值)
B.EQ校验修正汇编代码段–如果达到的话跳转到校验修正汇编代码段,此处我们假定是接下来的汇编指令
CBZ X25,0xFFFFFF1234567890–若是0,则跳转到0xFFFFFF1234567890这个假想的地址接续运行原有的代码段,这里可以指跳过对空指针访问后接续的代码段。若非0,则运行接下来的汇编代码
TSC X25,#0x32--此处x25寄存器的数值不是0,测验x25寄存器中的数值是否有大于50个bit的数值为0
b.gt(将寄存器数值清零的代码段地址,默认下一个指令)--b.gt是指若x25寄存器的数值大于50的话(greater than),可以认定它是一个空指针,因为内核空间段没有如此多的bit为0。是则跳转到清零代码段,此处假定下一个汇编代码
MOV X25,XZR--对X25寄存器赋值0
ADD DDRFLIP,DDRFLIP,#0x1–发生了bitflip,则flip计数寄存器加1。
本申请实施例中,由于电子设备可以根据上述第二数制的数据地址中位值为上述第二数值的位的数量,在该数量小于或等于上述第二阈值的情况下,确定上述第一数据地址是否发生位翻转,因此可以避免访问到空指针,进而可以避免电子设备的重启。
步骤102、在第一数据地址发生位翻转的情况下,电子设备根据第一数据地址确定第二数据地址。
可选地,本申请实施例中,上述第二数据地址可以为对上述第一数据地址进行位翻转校正处理后得到的数据地址,或可以为根据该第一数据地址重新确定的数据地址。
可选地,本申请实施例中,结合图2,如图4所示,上述步骤101b具体可以通过下述的步骤101b2实现;上述步骤102具体可以通过下述的步骤102a和步骤102b实现。
步骤101b2、电子设备确定第二数制的数据地址的各个目标位对应的位值是否为第一数值。
其中,在存在至少一个上述目标位对应的位值不为上述第一数值的情况下,判定上述第一数据地址发生位翻转。
可选地,本申请实施例中,上述目标位可以为上述第二数制的数据地址的高6位中的一位。
可选地,本申请实施例中,上述第一数值可以为F或0。
需要说明的是,对于上述内核空间地址和用户空间地址中的每个地址,高6位均为0或F,若上述第二数制的数据地址的高6位中的至少一位不为0或F,则可以判定上述第一数据地址发生了位翻转,需进行位翻转校正处理。
步骤102a、在第一数据地址发生位翻转的情况下,电子设备对第二数制的数据地址的各个位的位值进行位翻转校正处理。
本申请实施例中,上述位翻转校正处理用于对数据地址的位翻转进行校正,以得到正常的数据地址。
可选地,本申请实施例中,上述位翻转校正处理可以为或操作,即对上述第二数制的数据地址进行或操作;具体的,可以将该第二数制的数据地址中的0转换为1,且将该第二数制的数据地址中的1转换为0。
步骤102b、电子设备将校正处理后的第二数制的数据地址转换为第一数制,得到第二数据地址。
可选地,本申请实施例中,将上述校正处理后的第二数制的数据地址转换为第一数制(例如2进制),可以方便电子设备对该第二数据地址的访问。
示例性地,假设上述第一元件为电子设备中的DDR,且为该DDR设置DDRCOUNT寄存器,以对利用上述第一数据地址对该DDR的数据读取次数进行计数;那么若上述第二数制的数据地址的高6位是BFFFFF,且上述第一数值为F,显然该高6位中的一位(即上述至少一个目标位)不为F,则电子设备可以通过以下代码1(C代码)或代码2(汇编代码),对该第二数制的数据地址的各个位的位值进行位翻转校正处理:
代码1:
asm volatile(“mrs%0,DDRCOUNT”:”=r”(ddr_check_count));//通过C代码直接操作汇编代码,从DDRCOUNT寄存器中读取当前从DDR中读取数据的次数,并存放到C代码中的ddr_check_count变量,以便核对看是否需要校验和修正
if(ddr_check_count++==10&&check_kernel_space())//ddr_check_count变量加一,表示访问次数加一,并判断是否到达10次,check_kernel_space函数用于判断地址是否属于内核空间地址,两者条件都满足,则执行括号内的C代码{
ddr_check_count=0;//是的话首先对C代码计数变量清零
asm volatile(“msr DDRCOUNT,%0”::”r”(ddr_check_count));//再对计数寄存器清零
address|=0xFFFFFF0000000000;//将地址进行或操作,在发生bitflip场景下,将高24位的从1翻转成0的位恢复成1,保证访问的是正确的内核空间地址
}。
代码2:
TST X8,0xFFFFFF0000000000–假设要从x8寄存器保存的地址访问数据,验证地址高6位是否均为F
B.EQ汇编代码接续运行的地址–如果开头均为6个F则接续到下一个原有汇编指令处运行
ORR X8,X8,0xFFFFFF0000000000–如果不为全F,则进行或运算使地址高6位均为F并重新保存修正后的地址值
ADD DDRFLIP,DDRFLIP,#0x1–发生了bitflip,则flip计数寄存器加1。
本申请实施例中,由于电子设备可以直接根据上述第二数制的数据地址的各个目标位对应的位值是否为上述第一数值,判定上述第一数据地址是否发生了位翻转,因此可以提高检测位翻转的速率;且由于在该第一数据地址发生位翻转的情况下,可以对该第二数制的数据地址的各个位的位值进行位翻转校正处理及数制转换,以得到上述第二数据地址,因此可以确保最终访问的数据地址为正确的数据地址,从而降低电子设备重启的频率。
可选地,本申请实施例中,上述第一数据地址是从第一结构体中获取的,该第一数据地址用于从第二结构体中读取数据。示例性地,结合图1,如图5所示,上述步骤101具体可以通过下述的步骤101d和步骤101e实现;上述步骤102具体可以通过下述的步骤102c实现。
本申请实施例中,上述第一结构体地址为电子设备的程序设计语言中的结构体地址;例如,该第一结构体地址为C语言的链表结构中的结构体地址。
需要说明的是,链表结构是一种常见的数据结构,该链表结构由一系列节点组成,每个节点包含一个数据元素和指向下一个节点的指针。链表可以动态地增加或删除节点,适合需要频繁插入或删除元素的场景。在C语言中,链表结构是由结构体和指针配合使用构成的一种动态数据结构,实质是链式存储、顺序访问的线性表,用一组任意的存储单元来存储线性表中的数据,存储单元并不一定是连续的。
示例性地,上述链表结构中的每个结构体包括两个成员,即next地址成员和prev地址成员,每个地址成员包括一个结构体地址;上述第一结构体地址可以为上述链表结构中第一结构体的next地址成员或prev地址成员包括的结构体地址,该第一结构体可以为该链表结构中一种自定义的数据类型;其中,上述第二结构体可以为该next地址成员指向的结构体,或该prev地址成员指向的结构体。
步骤101d、在利用第一数据地址进行数据读取的次数大于第一阈值,且未读取到数据的情况下,电子设备计算第一数据地址对应的第一哈希值。
可选地,本申请实施例中,电子设备可以通过将上述第一结构体地址对目标数值求余,计算上述第一哈希值。
可选地,本申请实施例中,上述目标数值可以为16进制的任意数值;例如,该目标数值为0xF或0xFF等。
可选地,本申请实施例中,电子设备在确定上述第一结构体之前,可以在C语言层面,将上述链表结构中的每个结构体中的每个地址成员包括的结构体地址对上述目标数值求余,并将得到的每个哈希值存储在对应的地址成员中,并将上述链表结构中所有哈希值的和作为该链表结构的链表地址的哈希值进行存储,代码如下:
步骤101e、电子设备将第一哈希值与第一结构体中的第二哈希值进行比对。
其中,在上述第一哈希值与上述第二哈希值不一致的情况下,判定上述第一数据地址发生位翻转。
本申请实施例中,上述第二哈希值为采用与上述第一哈希值相同计算方法计算得到的哈希值;可以看出,由于上述目标数值和计算方法均未发生改变,因此若该第一哈希值与该第二哈希值不一致,则必然是上述第一数据地址发生了位翻转。
可选地,本申请实施例中,若上述第一哈希值与上述第二哈希值相同,则可以判定上述第一数据地址未发生位翻转,此时无需对该第一数据地址进行任何操作,可直接进行访问。
步骤102c、在第一数据地址发生位翻转的情况下,电子设备根据第二哈希值计算得到第二数据地址。
可选地,本申请实施例中,电子设备可以将上述第二哈希值乘以上述目标数值,以得到上述第二数据地址。
示例性地,假设pos结构体变量里的member成员是链表成员变量,那么可以通过如下代码得到上述第二数据地址:
本申请实施例中,由于电子设备可以在上述第一哈希值与上述第二哈希值不同的情况下,采用该第二哈希值对访问的数据地址进行恢复;因此可以确保访问的数据地址的准确性,从而可以避免触发data abort异常,进而避免触发电子设备重启。
步骤103、电子设备利用第二数据地址进行数据读取。
可选地,本申请实施例中,结合图1,如图6所示,上述步骤103具体可以通过下述的步骤103a实现。
步骤103a、电子设备利用第二数据地址进行至少两次数据读取。
其中,在上述至少两次数据读取的数据一致的情况下,将其中一次数据读取的数据作为目标数据;在该至少两次数据读取的数据不一致的情况下,将最近一次数据读取的数据作为该目标数据。
可选地,本申请实施例中,上述目标数据即利用上述第二数据地址,最终读取到的所需数据。
可选地,本申请实施例中,电子设备可以利用上述第二数据地址先进行一次数据读取,得到第一数据;然后再进行一次数据读取,得到第二数据;以此类推,得到与上述至少两次数据读取一一对应的至少两个数据,之后再对该之少两个数据进行比对。
可选地,本申请实施例中,在上述至少两次数据读取的数据一致的情况下,可以判定电子设备在利用上述第二数据地址进行数据读取的过程中未发生位翻转;此时可以将将其中任意一次数据读取的数据作为上述目标数据。
可选地,本申请实施例中,在上述至少两次数据读取的数据不一致的情况下,可以判定电子设备在利用上述第二数据地址进行数据读取的过程中发生了位翻转;由于位翻转是随机现象,可能会再次翻转回原来的数据地址,因此此时可以将最近一次数据读取的数据作为上述目标数据,以提高读取数据的准确性的概率。
示例性地,电子设备可以通过如下代码,确定上述目标数据:
LDR X8,[X10]–从x10寄存器保存的地址值读取数据到x8寄存器
ADD DDRCOUNT,DDRCOUNT,#0x1—DDR读取次数+1
CMP DDRCOUNT,#0xA–判断从DDR读取数据的次数是否打到10次
B.EQ校验修正汇编代码段–如果达到的话跳转到校验汇编代码段
LDR X9,[X10]--校验修正汇编代码段开始,再一次读取数据
CMP X8,X9–对两次读取的数据进行比较
B.EQ接续运行的汇编代码地址–如果相等则接续运行后续汇编代码段
LDR X8,[X10]–若不相等,则在读取一次,并作为最终结果
ADD DDRFLIP,DDRFLIP,#0x1–发生了bitflip,则flip计数寄存器加1。
本申请实施例中,由于电子设备可以在确定上述第二数据地址之后,通过对该第二数据地址的多次数据读取,最终确定读取到的目标数据,因此可以避免在数据读取过程中发生位翻转导致的数据读取错误,从而可以提升数据读取的准确性。
在本申请实施例提供的数据读取方法中,由于在利用第一数据地址进行数据读取的次数大于第一阈值,且未读取到目标元件的目标数据的情况下,可以及时检测第一数据地址是否发生位翻转,并在第一数据地址发生位翻转的情况下,及时根据第一数据地址确定第二数据地址,因此可以避免因位翻转从异常的数据地址读取数据,导致的电子设备重启,从而可以提高电子设备系统的稳定性。
可选地,本申请实施例中,可以为上述第一元件增设另一个寄存器,以对该第一元件发生位翻转的次数进行计数。
可选地,本申请实施例中,可以为电子设备中的CPU、DDR和flash等均增设一个寄存器,以对对应元件发生位翻转的次数进行计数,从而方便对不同元件中位翻转次数进行监控。
可选地,本申请实施例中,电子设备可以为不同的元件设置对应的位翻转次数阈值;当一个元件对应的寄存器中的数值大于或等于该元件对应的位翻转次数阈值时,可以判定该元件发生了硬件故障。
示例性地,以上述第一元件为DDR为例,假设该DDR对应的位翻转次数阈值为10,那么电子设备可以通过以下代码,判断该DDR是否发生硬件故障:
CMP DDRFLIP,#0xA----CMP为比较指令,将DDRFLIP寄存器数值与0xA进行比较
B.EQ主动BUG_ON的汇编代码段----若flip次数达到10次,则跳转到主动触发BUG的汇编代码段。
如此,可以通过对电子设备中不同元件发生位翻转的次数的监控,判断对应元件是否发生硬件故障,从而可以方便对电子设备中元件的维护。
上述各个方法实施例,或者各个方法实施例中的各种可能的实现方式可以单独执行,或者,在不存在矛盾的前提下,也可以相互结合执行,具体可以根据实际使用需求确定,本申请实施例对此不做限制。
本申请实施例提供的数据读取方法,执行主体可以为数据读取装置。本申请实施例中以数据读取装置执行数据读取方法为例,说明本申请实施例提供的数据读取装置。
如图7所示,本申请实施例提供一种数据读取装置70,该数据读取装置70可以包括确定模块71和读取模块72。
其中,确定模块71,可以用于在利用第一数据地址进行数据读取的次数大于第一阈值,且未读取到数据的情况下,确定第一数据地址是否发生位翻转。确定模块71,还可以用于在第一数据地址发生位翻转的情况下,根据第一数据地址确定第二数据地址。读取模块72,可以用于利用确定模块71确定的第二数据地址进行数据读取。
一种可能的实现方式中,上述第一数据地址为第一数制的数据地址。确定模块71,具体可以用于将该第一数据地址转换为第二数制的数据地址;并基于该第二数制的数据地址确定该第一数据地址是否发生位翻转。
一种可能的实现方式中,确定模块71,具体可以用于确定上述第二数制的数据地址的各个目标位对应的位值是否为第一数值;其中,在存在至少一个目标位对应的位值不为该第一数值的情况下,判定该第一数据地址发生位翻转。确定模块71,具体可以用于对该第二数制的数据地址的各个位的位值进行位翻转校正处理;并将校正处理后的该第二数制的数据地址转换为第一数制,得到上述第二数据地址。
一种可能的实现方式中,确定模块71,还可以用于在基于上述第二数制的数据地址确定上述第一数据地址是否发生位翻转之前,确定该第二数制的数据地址中位值为第二数值的位的数量。确定模块71,具体可以用于在该数量小于或等于第二阈值的情况下,基于该第二数制的数据地址确定该第一数据地址是否发生位翻转。
一种可能的实现方式中,上述第一数据地址是从第一结构体中获取的,该第一数据地址用于从第二结构体中读取数据。确定模块71,具体可以用于计算该第一数据地址对应的第一哈希值;并将该第一哈希值与该第一结构体中的第二哈希值进行比对;其中,在该第一哈希值与该第二哈希值不一致的情况下,判定该第一数据地址发生位翻转。确定模块71,具体可以用于根据该第二哈希值计算得到上述第二数据地址。
一种可能的实现方式中,读取模块72,具体可以用于利用上述第二数据地址进行至少两次数据读取;其中,在该至少两次数据读取的数据一致的情况下,将其中一次数据读取的数据作为目标数据;在该至少两次数据读取的数据不一致的情况下,将最近一次数据读取的数据作为该目标数据。
在本申请实施例提供的数据读取装置中,由于在利用第一数据地址进行数据读取的次数大于第一阈值,且未读取到目标元件的目标数据的情况下,可以及时检测第一数据地址是否发生位翻转,并在第一数据地址发生位翻转的情况下,及时根据第一数据地址确定第二数据地址,因此可以避免因位翻转从异常的数据地址读取数据,导致的电子设备重启,从而可以提高电子设备系统的稳定性。
本申请实施例中的数据读取装置可以是电子设备,也可以是电子设备中的部件,例如集成电路或芯片。该电子设备可以是终端,也可以为除终端之外的其他设备。示例性的,电子设备可以为手机、平板电脑、笔记本电脑、掌上电脑、车载电子设备、移动上网装置(Mobile Internet Device,MID)、增强现实(augmented reality,AR)/虚拟现实(virtualreality,VR)设备、机器人、可穿戴设备、超级移动个人计算机(ultra-mobile personalcomputer,UMPC)、上网本或者个人数字助理(personal digital assistant,PDA)等,还可以为服务器、网络附属存储器(Network Attached Storage,NAS)、个人计算机(personalcomputer,PC)、电视机(television,TV)、柜员机或者自助机等,本申请实施例不作具体限定。
本申请实施例中的数据读取装置可以为具有操作系统的装置。该操作系统可以为安卓(Android)操作系统,可以为IOS操作系统,还可以为其他可能的操作系统,本申请实施例不作具体限定。
本申请实施例提供的数据读取装置能够实现上述方法实施例实现的各个过程,达到相同的技术效果,为避免重复,这里不再赘述。
如图8所示,本申请实施例还提供一种电子设备800,包括处理器801和存储器802,存储器802上存储有可在所述处理器801上运行的程序或指令,该程序或指令被处理器801执行时实现如上述数据读取方法实施例的各个步骤,且能达到相同的技术效果,为避免重复,这里不再赘述。
需要说明的是,本申请实施例中的电子设备包括移动电子设备和非移动电子设备。
图9为实现本申请实施例的一种电子设备的硬件结构示意图。
如图9所示,电子设备1000包括但不限于:射频单元1001、网络模块1002、音频输出单元1003、输入单元1004、传感器1005、显示单元1006、用户输入单元1007、接口单元1008、存储器1009、以及处理器1010等部件。
本领域技术人员可以理解,电子设备1000还可以包括给各个部件供电的电源(比如电池),电源可以通过电源管理系统与处理器1010逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。图9中示出的电子设备结构并不构成对电子设备的限定,电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置,在此不再赘述。
其中,处理器1010,可以用于在利用第一数据地址进行数据读取的次数大于第一阈值,且未读取到数据的情况下,确定第一数据地址是否发生位翻转。处理器1010,还可以用于在第一数据地址发生位翻转的情况下,根据第一数据地址确定第二数据地址。处理器1010,还可以用于利用确定的第二数据地址进行数据读取。
一种可能的实现方式中,上述第一数据地址为第一数制的数据地址。处理器1010,具体可以用于将该第一数据地址转换为第二数制的数据地址;并基于该第二数制的数据地址确定该第一数据地址是否发生位翻转。
一种可能的实现方式中,处理器1010,具体可以用于确定上述第二数制的数据地址的各个目标位对应的位值是否为第一数值;其中,在存在至少一个目标位对应的位值不为该第一数值的情况下,判定该第一数据地址发生位翻转。处理器1010,具体可以用于对该第二数制的数据地址的各个位的位值进行位翻转校正处理;并将校正处理后的该第二数制的数据地址转换为第一数制,得到上述第二数据地址。
一种可能的实现方式中,处理器1010,还可以用于在基于上述第二数制的数据地址确定上述第一数据地址是否发生位翻转之前,确定该第二数制的数据地址中位值为第二数值的位的数量。处理器1010,具体可以用于在该数量小于或等于第二阈值的情况下,基于该第二数制的数据地址确定该第一数据地址是否发生位翻转。
一种可能的实现方式中,上述第一数据地址是从第一结构体中获取的,该第一数据地址用于从第二结构体中读取数据。处理器1010,具体可以用于计算该第一数据地址对应的第一哈希值;并将该第一哈希值与该第一结构体中的第二哈希值进行比对;其中,在该第一哈希值与该第二哈希值不一致的情况下,判定该第一数据地址发生位翻转。处理器1010,具体可以用于根据该第二哈希值计算得到上述第二数据地址。
一种可能的实现方式中,处理器1010,具体可以用于利用上述第二数据地址进行至少两次数据读取;其中,在该至少两次数据读取的数据一致的情况下,将其中一次数据读取的数据作为目标数据;在该至少两次数据读取的数据不一致的情况下,将最近一次数据读取的数据作为该目标数据。
在本申请实施例提供的电子设备中,由于在利用第一数据地址进行数据读取的次数大于第一阈值,且未读取到目标元件的目标数据的情况下,可以及时检测第一数据地址是否发生位翻转,并在第一数据地址发生位翻转的情况下,及时根据第一数据地址确定第二数据地址,因此可以避免因位翻转从异常的数据地址读取数据,导致的电子设备重启,从而可以提高电子设备系统的稳定性。
应理解的是,本申请实施例中,输入单元1004可以包括图形处理器(GraphicsProcessing Unit,GPU)10041和麦克风10042,图形处理器10041对在视频捕获模式或图像捕获模式中由图像捕获装置(如摄像头)获得的静态图片或视频的图像数据进行处理。显示单元1006可包括显示面板10061,可以采用液晶显示器、有机发光二极管等形式来配置显示面板10061。用户输入单元1007包括触控面板10071以及其他输入设备10072中的至少一种。触控面板10071,也称为触摸屏。触控面板10071可包括触摸检测装置和触摸控制器两个部分。其他输入设备10072可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆,在此不再赘述。
存储器1009可用于存储软件程序以及各种数据。存储器1009可主要包括存储程序或指令的第一存储区和存储数据的第二存储区,其中,第一存储区可存储操作系统、至少一个功能所需的应用程序或指令(比如声音播放功能、图像播放功能等)等。此外,存储器1009可以包括易失性存储器或非易失性存储器,或者,存储器1009可以包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data Rate SDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Synch link DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,DRRAM)。本申请实施例中的存储器1009包括但不限于这些和任意其它适合类型的存储器。
处理器1010可包括一个或多个处理单元;可选地,处理器1010集成应用处理器和调制解调处理器,其中,应用处理器主要处理涉及操作系统、用户界面和应用程序等的操作,调制解调处理器主要处理无线通信信号,如基带处理器。可以理解的是,上述调制解调处理器也可以不集成到处理器1010中。
本申请实施例还提供一种可读存储介质,所述可读存储介质上存储有程序或指令,该程序或指令被处理器执行时实现上述数据读取方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
其中,所述处理器为上述实施例中所述的电子设备中的处理器。所述可读存储介质,包括计算机可读存储介质,如计算机只读存储器ROM、随机存取存储器RAM、磁碟或者光盘等。
本申请实施例另提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现上述数据读取方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
应理解,本申请实施例提到的芯片还可以称为系统级芯片、系统芯片、芯片系统或片上系统芯片等。
本申请实施例提供一种计算机程序产品,该程序产品被存储在存储介质中,该程序产品被至少一个处理器执行以实现如上述数据读取方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。此外,需要指出的是,本申请实施方式中的方法和装置的范围不限按示出或讨论的顺序来执行功能,还可包括根据所涉及的功能按基本同时的方式或按相反的顺序来执行功能,例如,可以按不同于所描述的次序来执行所描述的方法,并且还可以添加、省去、或组合各种步骤。另外,参照某些示例所描述的特征可在其他示例中被组合。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以计算机软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。
Claims (14)
1.一种数据读取方法,其特征在于,所述方法包括:
在利用第一数据地址进行数据读取的次数大于第一阈值,且未读取到数据的情况下,确定所述第一数据地址是否发生位翻转;
在所述第一数据地址发生位翻转的情况下,根据所述第一数据地址确定第二数据地址;
利用所述第二数据地址进行数据读取。
2.根据权利要求1所述的方法,其特征在于,所述第一数据地址为第一数制的数据地址;
所述确定所述第一数据地址是否发生位翻转,包括:
将所述第一数据地址转换为第二数制的数据地址;
基于所述第二数制的数据地址确定所述第一数据地址是否发生位翻转。
3.根据权利要求2所述的方法,其特征在于,所述基于所述第二数制的数据地址确定所述第一数据地址是否发生位翻转,包括:
确定所述第二数制的数据地址的各个目标位对应的位值是否为第一数值;
其中,在存在至少一个所述目标位对应的位值不为所述第一数值的情况下,判定所述第一数据地址发生位翻转;
所述根据所述第一数据地址确定第二数据地址,包括:
对所述第二数制的数据地址的各个位的位值进行位翻转校正处理;
将校正处理后的所述第二数制的数据地址转换为第一数制,得到所述第二数据地址。
4.根据权利要求2所述的方法,其特征在于,在所述基于所述第二数制的数据地址确定所述第一数据地址是否发生位翻转之前,所述方法还包括:
确定所述第二数制的数据地址中位值为第二数值的位的数量;
所述基于所述第二数制的数据地址确定所述第一数据地址是否发生位翻转,包括:
在所述数量小于或等于第二阈值的情况下,基于所述第二数制的数据地址确定所述第一数据地址是否发生位翻转。
5.根据权利要求1所述的方法,其特征在于,所述第一数据地址是从第一结构体中获取的,所述第一数据地址用于从第二结构体中读取数据;
所述确定所述第一数据地址是否发生位翻转,包括:
计算所述第一数据地址对应的第一哈希值;
将所述第一哈希值与所述第一结构体中的第二哈希值进行比对;
其中,在所述第一哈希值与所述第二哈希值不一致的情况下,判定所述第一数据地址发生位翻转;
所述根据所述第一数据地址确定第二数据地址,包括:
根据所述第二哈希值计算得到所述第二数据地址。
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述利用所述第二数据地址进行数据读取,包括:
利用所述第二数据地址进行至少两次数据读取;
其中,在所述至少两次数据读取的数据一致的情况下,将其中一次数据读取的数据作为目标数据;在所述至少两次数据读取的数据不一致的情况下,将最近一次数据读取的数据作为所述目标数据。
7.一种数据读取装置,其特征在于,所述装置包括确定模块和读取模块;
所述确定模块,用于在利用第一数据地址进行数据读取的次数大于第一阈值,且未读取到数据的情况下,确定所述第一数据地址是否发生位翻转;
所述确定模块,还用于在所述第一数据地址发生位翻转的情况下,根据所述第一数据地址确定第二数据地址;
所述读取模块,用于利用所述确定模块确定的所述第二数据地址进行数据读取。
8.根据权利要求7所述的装置,其特征在于,所述第一数据地址为第一数制的数据地址;
所述确定模块,具体用于将所述第一数据地址转换为第二数制的数据地址;并基于所述第二数制的数据地址确定所述第一数据地址是否发生位翻转。
9.根据权利要求8所述的装置,其特征在于,
所述确定模块,具体用于确定所述第二数制的数据地址的各个目标位对应的位值是否为第一数值;
其中,在存在至少一个所述目标位对应的位值不为所述第一数值的情况下,判定所述第一数据地址发生位翻转;
所述确定模块,具体用于对所述第二数制的数据地址的各个位的位值进行位翻转校正处理;并将校正处理后的所述第二数制的数据地址转换为第一数制,得到所述第二数据地址。
10.根据权利要求8所述的装置,其特征在于,
所述确定模块,还用于在基于所述第二数制的数据地址确定所述第一数据地址是否发生位翻转之前,确定所述第二数制的数据地址中位值为第二数值的位的数量;
所述确定模块,具体用于在所述数量小于或等于第二阈值的情况下,基于所述第二数制的数据地址确定所述第一数据地址是否发生位翻转。
11.根据权利要求7所述的装置,其特征在于,所述第一数据地址是从第一结构体中获取的,所述第一数据地址用于从第二结构体中读取数据;
所述确定模块,具体用于计算所述第一数据地址对应的第一哈希值;并将所述第一哈希值与所述第一结构体中的第二哈希值进行比对;
其中,在所述第一哈希值与所述第二哈希值不一致的情况下,判定所述第一数据地址发生位翻转;
所述确定模块,具体用于根据所述第二哈希值计算得到所述第二数据地址。
12.根据权利要求7至11中任一项所述的装置,其特征在于,
所述读取模块,具体用于利用所述第二数据地址进行至少两次数据读取;
其中,在所述至少两次数据读取的数据一致的情况下,将其中一次数据读取的数据作为目标数据;在所述至少两次数据读取的数据不一致的情况下,将最近一次数据读取的数据作为所述目标数据。
13.一种电子设备,其特征在于,包括处理器和存储器,所述存储器存储可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如权利要求1-6中任一项所述的数据读取方法的步骤。
14.一种可读存储介质,其特征在于,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如权利要求1-6中任一项所述的数据读取方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311001353.9A CN117033257A (zh) | 2023-08-09 | 2023-08-09 | 数据读取方法、装置、电子设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311001353.9A CN117033257A (zh) | 2023-08-09 | 2023-08-09 | 数据读取方法、装置、电子设备及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117033257A true CN117033257A (zh) | 2023-11-10 |
Family
ID=88631214
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311001353.9A Pending CN117033257A (zh) | 2023-08-09 | 2023-08-09 | 数据读取方法、装置、电子设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117033257A (zh) |
-
2023
- 2023-08-09 CN CN202311001353.9A patent/CN117033257A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10310926B2 (en) | Data error detection in computing systems | |
EP0835489B1 (en) | Method and system for using inverted data to detect corrupt data | |
US7313727B2 (en) | Adaptive recovery from system failure for application instances that govern message transactions | |
EP1974272A1 (en) | Method and apparatus for detecting a fault condition and restoration thereafter using user context information | |
CN112817625A (zh) | 系统升级方法、装置、电子设备及存储介质 | |
CN117891645B (zh) | 一种显示故障检测方法、装置、电子设备及存储介质 | |
US20190102251A1 (en) | Systems and methods for detecting and correcting memory corruptions in software | |
US8707133B2 (en) | Method and apparatus to reduce a quantity of error detection/correction bits in memory coupled to a data-protected processor port | |
CN112130926A (zh) | 应用程序运行的方法、装置、终端设备及存储介质 | |
US20060253740A1 (en) | System and method for hardware error reporting and recovery | |
CN112181760B (zh) | 一种异常检测方法及装置 | |
CN110535476B (zh) | Ldpc软译码器软信息存储优化方法、装置、计算机设备及存储介质 | |
US9772892B2 (en) | Recovery method for portable touch-control device and portable touch-control device using the same | |
CN117033257A (zh) | 数据读取方法、装置、电子设备及可读存储介质 | |
CN112349343A (zh) | 电路结构、芯片以及电子设备 | |
US6453427B2 (en) | Method and apparatus for handling data errors in a computer system | |
CN116991487A (zh) | 基于数据压缩的可信平台控制系统及可信固件恢复方法 | |
CN112540799A (zh) | 启动数据的管理方法、系统、终端设备及存储介质 | |
CN108133149B (zh) | 一种数据保护方法、装置及电子设备 | |
CN111427623A (zh) | 程序退出方法、装置、计算机设备和存储介质 | |
US20090198878A1 (en) | Information processing system and information processing method | |
CN1979435A (zh) | 计算机程序还原模式自动启动控制方法及系统 | |
CN111352754A (zh) | 一种数据存储检错纠错方法及数据存储装置 | |
CN116069634A (zh) | 埋点检测方法、装置、电子设备及存储介质 | |
CN111122945B (zh) | 医院后勤监测系统高精确度告警过滤方法、装置 |
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 |