CN112306908B - Cpu的icache指令缓存区异常定位方法、系统、终端设备及介质 - Google Patents
Cpu的icache指令缓存区异常定位方法、系统、终端设备及介质 Download PDFInfo
- Publication number
- CN112306908B CN112306908B CN202011303846.4A CN202011303846A CN112306908B CN 112306908 B CN112306908 B CN 112306908B CN 202011303846 A CN202011303846 A CN 202011303846A CN 112306908 B CN112306908 B CN 112306908B
- Authority
- CN
- China
- Prior art keywords
- instruction
- logic calculation
- icache
- instruction cache
- area
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 43
- 230000005856 abnormality Effects 0.000 title claims abstract description 37
- 238000004364 calculation method Methods 0.000 claims abstract description 159
- 230000002159 abnormal effect Effects 0.000 claims abstract description 27
- 238000012216 screening Methods 0.000 claims description 11
- 238000004590 computer program Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 8
- 230000000694 effects Effects 0.000 description 2
- 230000008030 elimination Effects 0.000 description 2
- 238000003379 elimination reaction Methods 0.000 description 2
- 230000009191 jumping Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- KLDZYURQCUYZBL-UHFFFAOYSA-N 2-[3-[(2-hydroxyphenyl)methylideneamino]propyliminomethyl]phenol Chemical compound OC1=CC=CC=C1C=NCCCN=CC1=CC=CC=C1O KLDZYURQCUYZBL-UHFFFAOYSA-N 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 201000001098 delayed sleep phase syndrome Diseases 0.000 description 1
- 208000033921 delayed sleep phase type circadian rhythm sleep disease Diseases 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012360 testing method Methods 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
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明公开了一种CPU的ICACHE指令缓存区异常定位方法、系统、终端设备及计算机可读存储介质,所述方法包括从获取的能覆盖ICACHE指令缓存区所有位置逻辑计算指令组合中任选一条逻辑计算指令,将该条逻辑计算指令的机器码重复并顺序写入外部存储区的程序执行区域,并从程序执行区域的起始位置循环执行两次;按照所选逻辑计算指令的执行操作,执行逻辑计算指令组合中的剩余逻辑计算指令,当任意一条逻辑计算指令的执行结果中存在异常时,判定ICACHE指令缓存区存在异常。本发明提供的异常定位方法,使CPU在执行程序序列时能完全覆盖到ICACHE指令缓存区的每个单元每一个位,从而快速判断ICACHE指令缓存区域是否存在异常,提高了判断结果的精确度,且程序运行快,占用空间少。
Description
技术领域
本发明涉及设备异常定位技术领域,尤其涉及一种CPU的ICACHE指令缓存区异常定位方法、系统、终端设备及计算机可读存储介质。
背景技术
目前,嵌入式处理器芯片中的CPU绝大多数都具备ICACHE指令缓存区,用于缓存CPU指令,但ICACHE指令缓存区全程是由CPU自行控制,无法通过用户程序进行访问,因此在ICACHE指令缓存区出现异常时,无法直观地确认是ICACHE指令缓存区出现异常,还是其他程序硬件等错误造成的异常。针对这一现象,现有的技术方案通常是通过增减程序试验出不同问题的表象,即用排除法逐个排除,最后根据概率人为猜想是ICACHE指令缓存区的异常,这种方式不仅花费时间多,成本高、无法快速定位异常区域,同时定位结果的精确度往往无法保证。
发明内容
本发明的目的在于提供一种CPU ICACHE指令缓存区异常定位方法,通过利用CPUICACHE存储程序的特性及CPU运行程序的特性制作对应的程序序列,使CPU在执行这些程序序列时能够完全的覆盖到ICACHE指令缓存区的每个单元每一个位,从而快速判断ICACHE指令缓存区域是否存在异常,并提高判断结果的精确度。
为了克服上述现有技术中的缺陷,本发明实施例提供了一种CPU的ICACHE指令缓存区异常定位方法,包括:
从获取的能覆盖ICACHE指令缓存区所有位置逻辑计算指令组合中任选一条逻辑计算指令,将该条逻辑计算指令的机器码重复并顺序写入外部存储区的程序执行区域,并从所述程序执行区域的起始位置循环执行两次;
按照所选逻辑计算指令的执行操作,执行所述逻辑计算指令组合中的剩余逻辑计算指令,当任意一条逻辑计算指令的执行结果中存在异常时,判定所述ICACHE指令缓存区存在异常。
进一步地,在所述从获取的能覆盖ICACHE指令缓存区所有位置逻辑计算指令组合中任选一条逻辑计算指令之前,还包括:
获取CPU中所有的逻辑计算指令及其对应的机器码,从中筛选出逻辑运算为加、减、乘、除、与、或、非、条件跳转的逻辑计算指令及其对应的机器码;
当筛选出的逻辑计算指令能在连续地址执行重复执行时,获得其在所述ICACHE指令缓存区每个单元中能覆盖的位置,从中筛选能覆盖所述ICACHE指令缓存区中所有单元的所有位的逻辑计算指令,将其组合得到能覆盖ICACHE指令缓存区所有位置逻辑计算指令组合。
进一步地,所述CPU的ICACHE指令缓存区异常定位方法,还包括:
获得写满所述ICACHE指令缓存区所需的指令数量,且所述将该条逻辑计算指令的机器码重复并顺序写入外部存储区的程序执行区域的指令写入数量等于所述写满所述ICACHE指令缓存区所需的指令数量。
进一步地,所述将该条逻辑计算指令的机器码重复并顺序写入外部存储区的程序执行区域,并从所述程序执行区域的起始位置循环执行两次,包括:
将所述外部存储区的逻辑计算指令对应的机器码写入所述ICACHE指令缓存区的所有单元;
执行所述ICACHE指令缓存区的所有单元中的机器码。
本发明实施例还提供一种CPU的ICACHE指令缓存区异常定位系统,包括:
指令执行单元,用于从获取的能覆盖ICACHE指令缓存区所有位置逻辑计算指令组合中任选一条逻辑计算指令,将该条逻辑计算指令的机器码重复并顺序写入外部存储区的程序执行区域,并从所述程序执行区域的起始位置循环执行两次;
异常判定单元,用于按照所选逻辑计算指令的执行操作,执行所述逻辑计算指令组合中的剩余逻辑计算指令,当任意一条逻辑计算指令的执行结果中存在异常时,判定所述ICACHE指令缓存区存在异常。
进一步地,所述CPU的ICACHE指令缓存区异常定位系统,还包括:
指令获取单元,用于获取CPU中所有的逻辑计算指令及其对应的机器码,从中筛选出逻辑运算为加、减、乘、除、与、或、非、条件跳转的逻辑计算指令及其对应的机器码;根据筛选出的逻辑计算指令及其对应的机器码,获得其在所述ICACHE指令缓存区每个单元中能覆盖的位置,从中筛选能覆盖所述ICACHE指令缓存区中所有单元的所有位的逻辑计算指令,将其组合得到能覆盖ICACHE指令缓存区所有位置逻辑计算指令组合。
进一步地,所述指令执行单元,还用于,
获得写满所述ICACHE指令缓存区所需的指令数量,且所述将该条逻辑计算指令的机器码重复并顺序写入外部存储区的程序执行区域的指令写入数量等于所述写满所述ICACHE指令缓存区所需的指令数量。
进一步地,所述指令执行单元,还用于,
将所述外部存储区的逻辑计算指令对应的机器码写入所述ICACHE指令缓存区的所有单元;
执行所述ICACHE指令缓存区的所有单元中的机器码。
本发明实施例还提供一种计算机终端设备,包括:
一个或多个处理器;
存储器,与所述处理器耦接,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上任一项所述的CPU的ICACHE指令缓存区异常定位方法。
本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行实现如上任一项所述的CPU的ICACHE指令缓存区异常定位方法。
相对于现有技术,本发明实施例通过利用CPU ICACHE存储程序的特性及CPU运行程序的特性制作对应的程序序列,使CPU在执行这些程序序列时能够完全的覆盖到ICACHE指令缓存区的每个单元每一个位,从而快速判断ICACHE指令缓存区域是否存在异常,提高了判断结果的精确度,程序运行快,占用空间少。
附图说明
图1是本发明某一实施例提供的CPU的ICACHE指令缓存区异常定位方法的流程示意图;
图2是本发明某一实施例提供的ICACHE指令缓存区缓存单元的结构示意图;
图3是本发明某一实施例提供的ICACHE指令缓存区中一个单元包含位数的结构示意图;
图4是本发明某一实施例提供的ICACHE指令缓存区中所有单元包含位数的结构示意图;
图5是本发明又一实施例提供的CPU的ICACHE指令缓存区异常定位方法的流程示意图;
图6是本发明某一实施例提供的CPU的ICACHE指令缓存区异常定位方法的具体步骤示意图;
图7是本发明某一实施例提供的以ARM9 CPU为例实现ICACHE指令缓存区异常定位方法的具体步骤示意图;
图8是本发明某一实施例提供的ARM9处理器芯片的ICACHE与外部存储器的基本存储结构示意图;
图9是本发明某一实施例提供的CPU的ICACHE指令缓存区异常定位系统的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,文中所使用的步骤编号仅是为了方便描述,不对作为对步骤执行先后顺序的限定。
应当理解,在本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
请参阅图1,本发明实施例某一提供了一种CPU的ICACHE指令缓存区异常定位方法,包括:
S10、从获取的能覆盖ICACHE指令缓存区所有位置逻辑计算指令组合中任选一条逻辑计算指令,将该条逻辑计算指令的机器码重复并顺序写入外部存储区的程序执行区域,并从所述程序执行区域的起始位置循环执行两次;
S20、按照所选逻辑计算指令的执行操作,执行所述逻辑计算指令组合中的剩余逻辑计算指令,当任意一条逻辑计算指令的执行结果中存在异常时,判定所述ICACHE指令缓存区存在异常。
需要说明的是,CPU CACHE位于CPU与内存之间的临时存储器,它的容量比内存小但交换速度快。在缓存中的数据是内存中的一小部分,但这一小部分是短时间内CPU即将访问的,当CPU调用大量数据时,就可避开内存直接从缓存中调用,从而加快读取速度。其中,CPU CACHE又分为ICACHE(指令缓存)和DCACHE(数据缓存)两类,其中,在CPU的ICACHE指令缓存区存在异常时,无法直接访问,且由于ICACHE异常所造成的问题表象的不确定性,现有技术通常只能通过排除法判断ICACHE指令缓存区的错误,而这种排除法的执行操作是本领域人员根据经验猜想,按照不同的方向一个个排查,例如硬件电路板,软件程序,电源电压,芯片外部器件等等,这样必然会耗费大量时间,并且最终的定位结果也只能怀疑是ICACHE的异常问题,也而不能准确定位是ICACHE异常。
因此,本发明实施例的主要做法就是使得CPU执行的指令能够覆盖ICACHE指令缓存区的每个单元的每一个位。请参阅图2至图3,这两张图分别给出了ARM9ICACHE指令缓存区包含的单元,及每个ICACHE指令缓存区单元的位数。其中ARM指令是32位宽,因此ICACHE指令缓存区内的每个缓存单元为32位,bit即代表位,因此可以清晰的看出ICACHE指令缓存区内的所有单元的所有位置,如图4所示。在步骤S10中,首先会获取的能覆盖ICACHE指令缓存区所有位置逻辑计算指令组合,然后从中任选一条逻辑计算指令,并将该条逻辑计算指令的机器码重复并顺序写入外部存储区的程序执行区域,然后在执行时会循环执行两次,因为CPU执行第1次时会将处于外部存储区的逻辑计算指令机器码填充到ICACHE指令缓存区的所有单元,执行第2次时全部机器码将从ICACHE指令缓存区中读取执行,此时即实现了指令机器码存入ICACHE和读出ICACHE的操作,执行完成后判断执行结果确认是否存在异常。
可以理解的是,步骤S10给出了执行逻辑计算指令组合中某一条指令的操作,因此在步骤S20中,只需要按照刚选出的那条逻辑计算指令执行的操作,依次执行所述逻辑计算指令组合中的剩余逻辑计算指令,当所有逻辑计算指令的执行结束后,会得到逻辑计算指令组合中所有的逻辑计算指令的执行结果,这时候只需要判断是否有异常结果,若不存在,则判定ICACHE指令缓存区域无异常,若存在,也即ICACHE指令缓存区域中的任一单元出现异常,则逻辑计算指令机器码将出现错误,执行程序也将出现错误,就可以判定ICACHE指令缓存区存在异常。
本发明实施例通过利用CPU ICACHE存储程序的特性及CPU运行程序的特性制作对应的程序序列,使CPU在执行这些程序序列时能够完全的覆盖到ICACHE指令缓存区的每个单元每一个位,从而快速判断ICACHE指令缓存区域是否存在异常,并提高判断结果的精确度,且程序运行快,占用空间少。
请参阅图5,在某一个示例性的实施例中,在所述从获取的能覆盖ICACHE指令缓存区所有位置逻辑计算指令组合中任选一条逻辑计算指令之前,还包括:
S01、获取CPU中所有的逻辑计算指令及其对应的机器码,从中筛选出逻辑运算为加、减、乘、除、与、或、非、条件跳转的逻辑计算指令及其对应的机器码;
S02、当筛选出的逻辑计算指令能在连续地址执行重复执行时,获得其在所述ICACHE指令缓存区每个单元中能覆盖的位置,从中筛选能覆盖所述ICACHE指令缓存区中所有单元的所有位的逻辑计算指令,将其组合得到能覆盖ICACHE指令缓存区所有位置逻辑计算指令组合。
需要说明的是,步骤S01和S02主要目的是获取能够覆盖ICACHE指令缓存区中所有单元所有位的逻辑计算指令组合,在获取时,首先需要理解ICACHE指令缓存区的工作原理及CPU运行时的特性,ICACHE指令缓存区是一段存储区域,是由ICACHE指令缓存区单元组成,每个ICACHE指令缓存区单元由每个BIT组成,每个ICACHE指令缓存区单元能够容纳一条CPU指令机器码。CPU在执行程序时需要先经过寻址再执行,在寻址阶段,CPU访问ICACHE指令缓存区确认是否有对应的指令代码,若有则直接进入执行阶段,若无则需要通过访问外部存储器执行指令,同时将这条指令存入ICACHE指令缓存区以备后续CPU再度使用。然后获得所有CPU逻辑计算指令所对应的机器码,通过机器码可以确认这条指令的二进制数据,然后筛选出加、减、乘、除、与、或、非、条件跳转等逻辑计算指令及其机器码。并且判断这些逻辑计算指令能否在连续地址中重复执行,其中连续地址指的是顺序表和顺序栈存储在物理介质(如硬盘)的地址是连续的,例如一组连续的地址可以为:第一个地址是0001(二进制),第二个就是0010(二进制)。当筛选出的逻辑计算指令能在连续地址执行重复执行时,获得其在所述ICACHE指令缓存区每个单元中能覆盖的位置,因为不同逻辑计算指令覆盖的位置可能有重叠部分,因此只需要从中筛选能覆盖所述ICACHE指令缓存区中所有单元的所有位的逻辑计算指令,然后将其组合,得到能覆盖ICACHE指令缓存区所有位置逻辑计算指令组合,用于步骤S10。
在某一个示例性的实施例中,进一步地,所述CPU的ICACHE指令缓存区异常定位方法,还包括:
获得写满所述ICACHE指令缓存区所需的指令数量,且所述将该条逻辑计算指令的机器码重复并顺序写入外部存储区的程序执行区域的指令写入数量等于所述写满所述ICACHE指令缓存区所需的指令数量,其中,可以将写满所述ICACHE指令缓存区所需的指令数量进行自定义,如ICACHE_CMD_SIZE。
请参阅图6,在某一个示例性的实施例中,还提供了该异常定位方法的全部步骤,具体如下:
步骤1)理解ICACHE指令缓存区的工作原理及CPU运行时的特性:
ICACHE指令缓存区是一段存储区域,是由ICACHE指令缓存区单元组成,每个ICACHE指令缓存区单元由每个BIT组成。每个ICACHE指令缓存区单元能够容纳一条CPU指令机器码。CPU在执行程序时需要先经过寻址再执行,在寻址阶段,CPU访问ICACHE指令缓存区确认是否有对应的指令代码,若有则直接进入执行阶段,若无则需要通过访问外部存储器执行指令,同时将这条指令存入ICACHE指令缓存区以备后续CPU再度使用。
步骤2)查阅CPU手册的得到所有CPU指令所对应的机器码:
通过CPU指令对应的机器码可以确认这条指令的二进制数据,这些数据将用于步骤3对指令的选择。
步骤3)筛选出加、减、乘、除、与、或、非、条件跳转等逻辑计算指令及其机器码;
选出逻辑计算指令以满足顺序执行后判断结果,同时筛选出的指令将用于判断是否能在步骤4中实现连续地址执行同一指令的功能。
步骤4)分析筛选出来的逻辑计算指令是否能在连续地址执行同一指令:
这一步需要确认这些指令能否满足在连续地址执行相同的命令。连续地址使得CPU能将这些相同指令顺序的存储到ICACHE指令缓存区中。
步骤5:分析筛选出来的逻辑计算指令对应的机器码在ICACHE指令缓存区每个单元中所能够覆盖的位置:
其中,筛选出来的每一条逻辑计算指令对应的机器码是一串01组合的二进制数据,该二进制数据将填充到ICACHE指令缓存区的一个单元,分析该单元中存储的0和1的位置,为步骤6的组合提供位置信息。
步骤6)抽取能覆盖ICACHE指令缓存区单元中不同位置的逻辑计算指令机器码,将它们组合成能覆盖所有位置的指令组合:
每条逻辑计算指令机器码所对应的01二进制数能够覆盖ICACHE指令缓存区单元的部分位置,将不同的逻辑计算指令机器码组合起来即能覆盖所有位置。
步骤7)阅读CPU手册得到ICACHE指令缓存区的大小,计算出填满ICACHE所需要的指令数量,该指令数量自定义为ICACHE_CMD_SIZE(填满ICACHE所需要的指令数量):
可以理解的是,ICACHE指令缓存区是由每一个ICACHE指令缓存区单元组成,每种CPU会有不同大小的ICACHE指令缓存区。需要得到ICACHE指令缓存区单元的总体数量,才能使用步骤6中筛选出来的逻辑计算指令机器码填充满所有的ICACHE指令缓存区单元
步骤8)在步骤6的指令组合中抽出一条逻辑计算指令,以重复形式将这条指令的机器码顺序存入外部存储区的程序执行区域,存入的数量为ICACHE_CMD_SIZE:
该步骤中使用一条相同的逻辑计算指令机器码顺序填满ICACHE_CMD_SIZE大小的外部存储区中的程序执行区域,用于步骤9执行这段程序。
步骤9)将CPU执行地址跳转到步骤8中程序执行区域的起始位置,循环执行该程序两次,并在执行完成后判断执行结果:
CPU执行第1次时会将处于外部存储区的逻辑计算指令机器码填充到ICACHE指令缓存区的所有单元,执行第2次时,全部机器码将从ICACHE指令缓存区中读取执行,此时即实现了指令机器码存入ICACHE和读出ICACHE的操作,执行完成后判断执行结果确认是否存在异常。
步骤10)重复执行步骤8,9,直到所有指令组合中的指令执行完成:
其中,每条逻辑计算指令机器码只能覆盖一部分ICACHE指令缓存区位置,而所有逻辑计算指令机器码即能覆盖所有ICACHE指令缓存区。
步骤11)若步骤9出现错误则判定ICACHE指令缓存区域存在异常,若抽取的所有指令集合均执行正确,则判定ICACHE指令缓存区域无异常;若ICACHE指令缓存区域中的任一单元出现异常,则逻辑计算指令机器码将出现错误,执行程序也将出现错误。
请参阅图7,为了帮助理解本发明的实施过程,在某一个示例性的实施例中,还提供了以使用ARM9 CPU为实施例实现ICACHE指令缓存区错误定位方法:
第一步,理解ICACHE指令缓存区的工作原理及CPU运行时的特性,ARM9处理器芯片的ICACHE与外部存储器的基本存储结构示意图如图8所示,ARM9 CPU通过地址总线访问外部存储区,通过数据总线得到对应地址的数据。在执行程序时CPU需要先寻址,ARM首先访问ICACHE指令缓存区确认是否有对应的指令代码在缓冲区内,若有则直接从ICACHE指令缓存区取出指令进入执行阶段,若没有则CPU需要访问外部存储器取到对应地址的指令才能执行,在从外部存储器取出指令的同时CPU会将这条指令自动存入ICACHE指令缓存区内以备CPU后续再度使用。
第二步,阅读ARM9 CPU手册所有指令所对应的机器码,找出加、减、乘、除、与、或、非、条件跳转等逻辑计算指令及其对应机器码,再从中挑选出能够在连续地址执行并且能够覆盖ICACHE指令缓存区单元32位空间的指令组合。在本实施例中,选出以下指令组合,见表1:
表1
第三步,阅读这颗芯片的datasheet得到ICACHE指令缓存区的大小为4K Byte,由于每条指令为32bit即4Byte,因此一共需要1024条指令能填满ICACHE指令缓存区。
第四步,将表1中的逻辑计算指令的第一条机器码重复顺序的写入外部存储器的一段4KB的连续地址中并在结尾加入返回指令,将ARM9所有R0~R12寄存器写一个固定的初始数值,然后程序跳转到这段连续地址的开头执行这段程序,程序结束后,判断所有R0~R12寄存器是否发生变化以及计算值是否有误。这个过程需要执行两次,第一次执行是让ARM9 CPU将外部存储器中存储的4KByte指令机器码全部存入ICACHE指令缓存区,第二次执行时ARM9 CPU就会全程从ICACHE指令缓存区中读取指令执行,从而实现执行ICACHE指令缓存区指令的目的。
第五步,将表1中的所有命令依次按照上述做法做同样操作即可实现对ICACHE指令缓存区所有单元的覆盖,确认ICACHE指令缓存区是否存在异常。在实际实施过程中,如果ICACHE指令缓存区出现异常,一般会出现程序跑飞,计算值不正确,程序无法正常返回等异常错误。
请参阅图9,在某一个示例性的实施例中,还提供一种CPU的ICACHE指令缓存区异常定位系统,包括:
指令执行单元100,用于从获取的能覆盖ICACHE指令缓存区所有位置逻辑计算指令组合中任选一条逻辑计算指令,将该条逻辑计算指令的机器码重复并顺序写入外部存储区的程序执行区域,并从所述程序执行区域的起始位置循环执行两次;
异常判定单元200,用于按照所选逻辑计算指令的执行操作,执行所述逻辑计算指令组合中的剩余逻辑计算指令,当任意一条逻辑计算指令的执行结果中存在异常时,判定所述ICACHE指令缓存区存在异常。
进一步地,所述CPU的ICACHE指令缓存区异常定位系统,还包括:
指令获取单元,用于获取CPU中所有的逻辑计算指令及其对应的机器码,从中筛选出逻辑运算为加、减、乘、除、与、或、非、条件跳转的逻辑计算指令及其对应的机器码;根据筛选出的逻辑计算指令及其对应的机器码,获得其在所述ICACHE指令缓存区每个单元中能覆盖的位置,从中筛选能覆盖所述ICACHE指令缓存区中所有单元的所有位的逻辑计算指令,将其组合得到能覆盖ICACHE指令缓存区所有位置逻辑计算指令组合。
进一步地,所述指令执行单元,还用于,
获得写满所述ICACHE指令缓存区所需的指令数量,且所述将该条逻辑计算指令的机器码重复并顺序写入外部存储区的程序执行区域的指令写入数量等于所述写满所述ICACHE指令缓存区所需的指令数量。
进一步地,所述指令执行单元,还用于,
将所述外部存储区的逻辑计算指令对应的机器码写入所述ICACHE指令缓存区的所有单元;执行所述ICACHE指令缓存区的所有单元中的机器码。
其中,指令执行单元100用于执行步骤S10,异常判定单元用于执行步骤S20;在步骤S10中,首先会获取的能覆盖ICACHE指令缓存区所有位置逻辑计算指令组合,然后从中任选一条逻辑计算指令,并将该条逻辑计算指令的机器码重复并顺序写入外部存储区的程序执行区域,然后在执行时会循环执行两次,因为CPU执行第1次时会将处于外部存储区的逻辑计算指令机器码填充到ICACHE指令缓存区的所有单元,执行第2次时全部机器码将从ICACHE指令缓存区中读取执行,此时即实现了指令机器码存入ICACHE和读出ICACHE的操作,执行完成后判断执行结果确认是否存在异常。步骤S10给出了执行逻辑计算指令组合中某一条指令的操作,因此在步骤S20中,只需要按照刚选出的那条逻辑计算指令执行的操作,依次执行所述逻辑计算指令组合中的剩余逻辑计算指令,当所有逻辑计算指令的执行结束后,会得到逻辑计算指令组合中所有的逻辑计算指令的执行结果,这时候只需要判断是否有异常结果,若不存在,则判定ICACHE指令缓存区域无异常,若存在,也即ICACHE指令缓存区域中的任一单元出现异常,则逻辑计算指令机器码将出现错误,执行程序也将出现错误,就可以判定ICACHE指令缓存区存在异常。
指令获取单元用于执行步骤S01和S02,其中,步骤S01和S02主要目的是获取能够覆盖ICACHE指令缓存区中所有单元所有位的逻辑计算指令组合,在获取时,首先需要理解ICACHE指令缓存区的工作原理及CPU运行时的特性,ICACHE指令缓存区是一段存储区域,是由ICACHE指令缓存区单元组成,每个ICACHE指令缓存区单元由每个BIT组成,每个ICACHE指令缓存区单元能够容纳一条CPU指令机器码。CPU在执行程序时需要先经过寻址再执行,在寻址阶段,CPU访问ICACHE指令缓存区确认是否有对应的指令代码,若有则直接进入执行阶段,若无则需要通过访问外部存储器执行指令,同时将这条指令存入ICACHE指令缓存区以备后续CPU再度使用。然后获得所有CPU逻辑计算指令所对应的机器码,通过机器码可以确认这条指令的二进制数据,然后筛选出加、减、乘、除、与、或、非、条件跳转等逻辑计算指令及其机器码。并且判断这些逻辑计算指令能否在连续地址中重复执行,其中连续地址指的是顺序表和顺序栈存储在物理介质(如硬盘)的地址是连续的,例如一组连续的地址可以为:第一个地址是0001(二进制),第二个就是0010(二进制)。当筛选出的逻辑计算指令能在连续地址执行重复执行时,获得其在所述ICACHE指令缓存区每个单元中能覆盖的位置,因为不同逻辑计算指令覆盖的位置可能有重叠部分,因此只需要从中筛选能覆盖所述ICACHE指令缓存区中所有单元的所有位的逻辑计算指令,然后将其组合,得到能覆盖ICACHE指令缓存区所有位置逻辑计算指令组合,用于步骤S10。
在某一个示例性的实施例中,还提供了一种计算机终端设备,包括:
一个或多个处理器;
存储器,与所述处理器耦接,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上所述的CPU的ICACHE指令缓存区异常定位方法。
处理器用于控制该计算机终端设备的整体操作,以完成上述的CPU的ICACHE指令缓存区异常定位方法的全部或部分步骤。存储器用于存储各种类型的数据以支持在该计算机终端设备的操作,这些数据例如可以包括用于在该计算机终端设备上操作的任何应用程序或方法的指令,以及应用程序相关的数据。该存储器可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random AccessMemory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable ProgrammableRead-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable ProgrammableRead-Only Memory,简称EPROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。
计算机终端设备可以被一个或多个应用专用集成电路(Application Specific1ntegrated Circuit,简称AS1C)、数字信号处理器(Digital Signal Processor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable Logic Device,简称PLD)、现场可编程门阵列(Field ProgrammableGate Array,简称FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行如上述任一项实施例所述的CPU的ICACHE指令缓存区异常定位方法,并达到如上述方法一致的技术效果。
在某一个示例性的实施例中,还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现如上述任一项实施例所述的CPU的ICACHE指令缓存区异常定位方法的步骤。例如,该计算机可读存储介质可以为上述包括程序指令的存储器,上述程序指令可由计算机终端设备的处理器执行以完成如上述任一项实施例所述的CPU的ICACHE指令缓存区异常定位方法,并达到如上述方法一致的技术效果。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。
Claims (6)
1.一种CPU的ICACHE指令缓存区异常定位方法,其特征在于,包括:
从获取的能覆盖ICACHE指令缓存区所有位置逻辑计算指令组合中任选一条逻辑计算指令,将该条逻辑计算指令的机器码重复并顺序写入外部存储区的程序执行区域,并从所述程序执行区域的起始位置循环执行两次;其中,所述能覆盖ICACHE指令缓存区所有位置逻辑计算指令组合的获取步骤为:获取CPU中所有的逻辑计算指令及其对应的机器码,从中筛选出逻辑运算为加、减、乘、除、与、或、非、条件跳转的逻辑计算指令及其对应的机器码;当筛选出的逻辑计算指令能在连续地址执行重复执行时,获得其在所述ICACHE指令缓存区每个单元中能覆盖的位置,从中筛选能覆盖所述ICACHE指令缓存区中所有单元的所有位的逻辑计算指令,将其组合得到能覆盖ICACHE指令缓存区所有位置逻辑计算指令组合;同时还需获得写满所述ICACHE指令缓存区所需的指令数量,且所述将该条逻辑计算指令的机器码重复并顺序写入外部存储区的程序执行区域的指令写入数量等于所述写满所述ICACHE指令缓存区所需的指令数量;
按照所选逻辑计算指令的执行操作,执行所述逻辑计算指令组合中的剩余逻辑计算指令,当任意一条逻辑计算指令的执行结果中存在异常时,判定所述ICACHE指令缓存区存在异常。
2.根据权利要求1所述的CPU的ICACHE指令缓存区异常定位方法,其特征在于,所述将该条逻辑计算指令的机器码重复并顺序写入外部存储区的程序执行区域,并从所述程序执行区域的起始位置循环执行两次,包括:
将所述外部存储区的逻辑计算指令对应的机器码写入所述ICACHE指令缓存区的所有单元;
执行所述ICACHE指令缓存区的所有单元中的机器码。
3.一种CPU的ICACHE指令缓存区异常定位系统,其特征在于,包括:
指令执行单元,用于从获取的能覆盖ICACHE指令缓存区所有位置逻辑计算指令组合中任选一条逻辑计算指令,将该条逻辑计算指令的机器码重复并顺序写入外部存储区的程序执行区域,并从所述程序执行区域的起始位置循环执行两次;其中,所述能覆盖ICACHE指令缓存区所有位置逻辑计算指令组合的获取步骤为:获取CPU中所有的逻辑计算指令及其对应的机器码,从中筛选出逻辑运算为加、减、乘、除、与、或、非、条件跳转的逻辑计算指令及其对应的机器码;当筛选出的逻辑计算指令能在连续地址执行重复执行时,获得其在所述ICACHE指令缓存区每个单元中能覆盖的位置,从中筛选能覆盖所述ICACHE指令缓存区中所有单元的所有位的逻辑计算指令,将其组合得到能覆盖ICACHE指令缓存区所有位置逻辑计算指令组合;同时还需获得写满所述ICACHE指令缓存区所需的指令数量,且所述将该条逻辑计算指令的机器码重复并顺序写入外部存储区的程序执行区域的指令写入数量等于所述写满所述ICACHE指令缓存区所需的指令数量;
异常判定单元,用于按照所选逻辑计算指令的执行操作,执行所述逻辑计算指令组合中的剩余逻辑计算指令,当任意一条逻辑计算指令的执行结果中存在异常时,判定所述ICACHE指令缓存区存在异常。
4.根据权利要求3所述的CPU的ICACHE指令缓存区异常定位系统,其特征在于,所述指令执行单元,还用于,
将所述外部存储区的逻辑计算指令对应的机器码写入所述ICACHE指令缓存区的所有单元;
执行所述ICACHE指令缓存区的所有单元中的机器码。
5.一种计算机终端设备,其特征在于,包括:
一个或多个处理器;
存储器,与所述处理器耦接,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1至2任一项所述的CPU的ICACHE指令缓存区异常定位方法。
6.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行实现如权利要求1至2任一项所述的CPU的ICACHE指令缓存区异常定位方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011303846.4A CN112306908B (zh) | 2020-11-19 | 2020-11-19 | Cpu的icache指令缓存区异常定位方法、系统、终端设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011303846.4A CN112306908B (zh) | 2020-11-19 | 2020-11-19 | Cpu的icache指令缓存区异常定位方法、系统、终端设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112306908A CN112306908A (zh) | 2021-02-02 |
CN112306908B true CN112306908B (zh) | 2024-03-15 |
Family
ID=74336003
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011303846.4A Active CN112306908B (zh) | 2020-11-19 | 2020-11-19 | Cpu的icache指令缓存区异常定位方法、系统、终端设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112306908B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0149858A2 (en) * | 1980-04-25 | 1985-07-31 | Data General Corporation | Data processing system |
WO1995022108A1 (en) * | 1994-02-08 | 1995-08-17 | Meridian Semiconductor, Inc. | Exception handling circuit and method |
CN1702625A (zh) * | 2004-05-28 | 2005-11-30 | 国际商业机器公司 | 保存跟踪数据的方法和装置 |
CN102968293A (zh) * | 2012-11-28 | 2013-03-13 | 中国人民解放军国防科学技术大学 | 基于指令队列的程序循环代码动态检测及执行方法 |
CN104951276A (zh) * | 2015-06-24 | 2015-09-30 | 福州瑞芯微电子有限公司 | 一种芯片指令高速缓存失效的检测方法及系统 |
CN111563052A (zh) * | 2020-04-30 | 2020-08-21 | 深圳忆联信息系统有限公司 | 降低读延时的缓存方法、装置、计算机设备及存储介质 |
-
2020
- 2020-11-19 CN CN202011303846.4A patent/CN112306908B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0149858A2 (en) * | 1980-04-25 | 1985-07-31 | Data General Corporation | Data processing system |
WO1995022108A1 (en) * | 1994-02-08 | 1995-08-17 | Meridian Semiconductor, Inc. | Exception handling circuit and method |
CN1702625A (zh) * | 2004-05-28 | 2005-11-30 | 国际商业机器公司 | 保存跟踪数据的方法和装置 |
CN102968293A (zh) * | 2012-11-28 | 2013-03-13 | 中国人民解放军国防科学技术大学 | 基于指令队列的程序循环代码动态检测及执行方法 |
CN104951276A (zh) * | 2015-06-24 | 2015-09-30 | 福州瑞芯微电子有限公司 | 一种芯片指令高速缓存失效的检测方法及系统 |
CN111563052A (zh) * | 2020-04-30 | 2020-08-21 | 深圳忆联信息系统有限公司 | 降低读延时的缓存方法、装置、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112306908A (zh) | 2021-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8261130B2 (en) | Program code trace signature | |
US6877089B2 (en) | Branch prediction apparatus and process for restoring replaced branch history for use in future branch predictions for an executing program | |
US5202889A (en) | Dynamic process for the generation of biased pseudo-random test patterns for the functional verification of hardware designs | |
US7340566B2 (en) | System and method for initializing a memory device from block oriented NAND flash | |
KR100774598B1 (ko) | 순차 접근 메모리에 저장된 부트 코드를 통한 컴퓨터 시스템의 초기화 | |
US8171260B2 (en) | Fetching all or portion of instructions in memory line up to branch instruction based on branch prediction and size indicator stored in branch target buffer indexed by fetch address | |
JP5357017B2 (ja) | 高速で安価なストア−ロード競合スケジューリング及び転送機構 | |
JP5313228B2 (ja) | 適切なプレデコーディングにより可変長命令セットから命令をプレロードするシステム、方法およびソフトウェア | |
US9753730B2 (en) | Decoding instructions from multiple instructions sets | |
US6965983B2 (en) | Simultaneously setting prefetch address and fetch address pipelined stages upon branch | |
KR100421749B1 (ko) | 비폴팅로드명령실행방법및그장치 | |
US20130152048A1 (en) | Test method, processing device, test program generation method and test program generator | |
CN104978284B (zh) | 处理器子程序高速缓冲存储器 | |
US20080126877A1 (en) | Microprocessor with trace functionality | |
KR100303712B1 (ko) | 파이프라인기계에서의어드레스파이프라인을위한방법및장치 | |
CN112306908B (zh) | Cpu的icache指令缓存区异常定位方法、系统、终端设备及介质 | |
US7640421B1 (en) | Method and system for determining context switch state | |
KR20180100229A (ko) | 벡터 원자 메모리 갱신 명령 | |
CN111666102A (zh) | 文件格式转换方法、芯片验证方法、相关装置及网络芯片 | |
CN109408402B (zh) | 一种闪存器的数据写入方法及闪存器 | |
JP3652956B2 (ja) | エミュレーション装置 | |
US7191430B2 (en) | Providing instruction execution hints to a processor using break instructions | |
CN108920188B (zh) | 一种扩展寄存器堆的方法及装置 | |
CN114428642B (zh) | 一种基于新型处理器架构的随机指令生成环境 | |
US20100146332A1 (en) | Data correction circuit and semiconductor integrated circuit |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address |
Address after: 510555 No. 107 Bowen Road, Huangpu District, Guangzhou, Guangdong Patentee after: Guangzhou Ankai Microelectronics Co.,Ltd. Country or region after: Zhong Guo Address before: Unit 301, 302, 303, 3 / F, C1 area, 182 science Avenue, Science City, Guangzhou hi tech Industrial Development Zone, Guangzhou, Guangdong 510000 Patentee before: Guangzhou Ankai Microelectronics Co.,Ltd. Country or region before: Zhong Guo |
|
CP03 | Change of name, title or address |