存储器诊断方法及装置与流程

文档序号:11707480阅读:258来源:国知局
存储器诊断方法及装置与流程

本申请涉及安全控制器技术领域,具体而言,涉及一种存储器诊断方法及装置。



背景技术:

在安全控制器中,要求对随机存取存储器(ram)进行诊断,以到达相应的安全等级。其中marchc算法常常被用来对ram进行诊断,并具有诊断覆盖率高和易于实现的特点。但是marchc算法只有在对整个ram一次性的诊断时才能具备诊断覆盖率高的特点。安全控制器中的ram往往比较大,如果在控制器运行过程中一次性对整个ram进行诊断,就需要比较长的时间,而安全控制器要在特定的响应时间内执行安全控制功能,则无法在一个运行周期内对整个ram一次性的进行诊断。为了解决该技术问题,如图1所示,现在普遍采用分块技术(将ram分为block_0、block_1……block_n-1等n个区块),在每个运行周期内对其中的一个区块进行诊断,经过多个运行周期完成对整个ram的诊断。

但是,在对ram分块并按照区块诊断后,由于无法检测出相邻的区块彼此之间的耦合影响,因此诊断覆盖率不高。



技术实现要素:

本申请实施例提供了一种存储器诊断方法及装置,以至少解决现有的存储器诊断方案所存在的诊断覆盖率不高的问题。

根据本发明的一个方面,提供一种存储器诊断方法,包括:将所述存储器的空间划分为多个区块;针对所述多个区块,选取至少一个边界区,所述边界区中的每一个分别跨越所述多个区块中的两个相邻区块;以及针对所述区块和所述边界区分别执行诊断操作。

根据本发明的另一个方面,提供一种存储器诊断装置,包括:区块划分模块,用于将存储器的空间划分为多个区块;边界区选取模块,用于针对所述多个区块,选取至少一个边界区,所述边界区中的每一个分别跨越所述多个区块中的两个相邻区块;以及诊断模块,用于针对所述区块和所述边界区分别执行诊断操作。

在本申请实施例中,解决了相关技术中现有的存储器诊断方案所存在的诊断覆盖率不高的问题。

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1是现有技术中对ram分块后的示意图;

图2是根据本申请实施例1的存储器诊断方法的流程图;

图3是根据本申请实施例2的存储器诊断装置的示意图;

图4是根据本申请实施例3的存储器的分块示意图;以及

图5是根据本申请实施例3的存储器诊断方法的流程图。

具体实施方式

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。

需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或模块或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块或单元。

实施例1

附图2示出了根据本申请实施例1的存储器诊断方法的流程图。如图2所示,该方法包括:

s202:将所述存储器的空间划分为多个区块;

s204:针对所述多个区块,选取至少一个边界区,所述边界区中的每一个分别跨越所述多个区块中的两个相邻区块;以及

s206:针对所述区块和所述边界区分别执行诊断操作。

根据本申请实施例1的技术方案,通过针对所述多个区块,选取分别跨越所述多个区块中的两个相邻区块的至少一个边界区,并针对该边界区执行诊断操作,使得能够检测出相邻区块之间的耦合影响,从而能够克服现有技术中存在的诊断覆盖率不高的技术问题。当然,在本申请实施例1的技术方案中,对于选取边界区的形式不加限制。既可以是针对所有的相邻区块的边界选取边界区,也可以只针对部分边界选取边界区。并且对所述区块和所述边界区执行诊断操作的方式也不作限定,既可以将各个区块和边界区整体地按照存储器的地址依次执行诊断操作,也可以将各个区块和边界区各自依次执行诊断操作,还可以随机确定执行诊断操作的顺序。此外,也可以一次性对所有区块和分界区执行诊断操作,或者是通过多个周期分别对所述区块和分界区执行诊断操作。

可选地,所述选取至少一个边界区包括针对所述多个区块中所有的彼此相邻的两个区块,选取对应的所述边界区。从而,所述诊断方法可以覆盖存储器的所有空间,实现全面的诊断。当然该技术特征并不是本申请的必要技术特征,本申请也可以只针对部分边界选取边界区。

可选地,通过多个周期对所述存储器执行诊断操作,并且其中在每一个周期中分别对一个所述区块或一个所述边界区执行诊断操作。从而,所述诊断方法可以通过多个周期完成对存储器的诊断操作,进而适用于大容量的存储器的诊断。当然本申请的技术方案不限于此,也可以一次性的对所有区块和分界区执行诊断操作。

可选地,针对所述区块和所述边界区分别执行诊断操作包括:在所述多个周期中的第一周期,针对所述多个区块中的第一区块执行诊断操作;在所述多个周期中的第二周期,针对所述至少一个边界区中的第一边界区执行诊断操作,其中所述第一边界区跨越所述第一区块和与所述第一区块相邻的第二区块;以及在所述多个周期中的第三周期,针对所述第二区块执行诊断操作。从而,可以将各个区块和边界区整体地按照顺序依次执行诊断操作,提高了诊断的效率。但是本申请的方法不限于此,也可以将各个区块和边界区各自依次执行诊断操作,还可以随机确定执行诊断操作的顺序。

可选地,还包括:在每一个周期中执行所述诊断操作之后,如果没有诊断出存储器故障则继续执行其他任务,否则对所述存储器设置故障标志。由于安全控制器中的存储器往往比较大,如果在控制器运行过程中对整个存储器进行诊断,就需要比较长的时间。从而,本申请的方法可以比避免由于存储器诊断而导致其他任务的执行被延误,从而提高了运行的效率。

实施例2

图3示出了根据本申请实施例3的存储器诊断装置300的示意图。如图3所示,所述存储器诊断装置300包括:

区块划分模块301,用于将存储器的空间划分为多个区块;

边界区选取模块302,用于针对所述多个区块,选取至少一个边界区,所述边界区中的每一个分别跨越所述多个区块中的两个相邻区块;以及

诊断模块303,用于针对所述区块和所述边界区分别执行诊断操作。

可选地,所述边界区选取模块被进一步配置为针对所述多个区块中所有的彼此相邻的两个区块,选取对应的所述边界区。

可选地,所述诊断模块进一步配置为通过多个周期对所述存储器执行诊断操作,并且其中在每一个周期中分别对一个所述区块或一个所述边界区执行诊断操作。

可选地,所述诊断模块进一步配置为:在所述多个周期中的第一周期,针对所述多个区块中的第一区块执行诊断操作;在所述多个周期中的第二周期,针对所述至少一个边界区中的第一边界区执行诊断操作,其中所述第一边界区跨越所述第一区块和与所述第一区块相邻的第二区块;在所述多个周期中的第三周期,针对所述第二区块执行诊断操作。

可选地,还包括诊断处理模块,用于所述诊断模块在每一个周期中执行所述诊断操作之后,如果没有诊断出存储器故障则继续执行其他任务,否则对所述存储器设置故障标志。

实施例3

下面在实施例3中,将结合图4至图5,详细说明本申请的技术方案。

图4示出了根据实施例3的方法对存储器400(例如,ram)进行分块的示意图。如图4所示,本实施例的方法首先将存储器400的空间划分为n个区块block_0至block_n-1(如实线所示)。从而使得本实例的方法可以分别针对每个区块block_0至block_n-1执行诊断操作,从而实现对存储器400的诊断。

但是正如在背景技术中所述的,如果无法检测出相邻的区块彼此之间的耦合影响,那么就会导致诊断覆盖率不高的缺陷。

因此,为了解决该技术问题,本实施例在上述分块操作的基础上。针对相邻的区块的边界分别选取跨越相邻的两个区块的n-1个分界区n_block_0至n_block_n-2(如虚线所示)。为了便于说明,图4中示出了针对各个区块的所有相邻区块的边界选取了n-1个边界区。但是也可以根据实际的需要针对部分的相邻区块选取边界区。

进一步参见图4,所述存储器400的空间地址范围为从addr_0至addr_2n,从而不同区块和分界区分别位于不同的地址范围内。例如区块block_0地址范围为addr_0至addr_2,区块block_1的地址范围为addr_2至addr_5,而分界区n_block_0的地址范围为addr_1至addr_3。由此可见,分界区n_block_0是跨越相邻的区块block_0与block_1而选取的。同样,分界区n_bolock_1(地址范围为addr_4至addr_6)是跨越相邻的区域block_1与block_2而选取的;分界区n_block_n-3是跨越相邻的区块block_n-3和block_n-2而选取的;分界区n_block_n-2是跨越相邻的区块block_n-2和block_n-1而选取的。

从而,区块block_0至block_n-1和分界区n_block_0至n_block_n-2共同构成了彼此交叉的分区结构。

图5示出了基于图4所示的分区结构对存储器400进行诊断的方法的流程图。

如图5所示,在第一个运行周期中(步骤s502),使用marchc算法对区块block_0(地址addr_0至addr_2)进行诊断。并确定是否发现存储器故障(步骤s504),如果没有发现存储器故障(否),则继续执行其他任务。否则,如果发现存储器故障(是),则前进到步骤s518,设置存储器故障标志,采取相应措施,然后结束诊断进程。

在第二个运行周期中(步骤s506),使用marchc算法对分界区n_block_0(地址addr_1至addr_3)进行诊断。并确定是否发现存储器故障(步骤s508),如果没有发现存储器故障(否),则继续执行其他任务。否则,如果发现存储器故障(是),则前进到步骤s518,设置存储器故障标志,采取相应措施,然后结束诊断进程。

在第三个运行周期中(步骤s510),使用marchc算法对区块block_1(地址addr_2至addr_5)进行诊断。并确定是否发现存储器故障(步骤s512),如果没有发现存储器故障(否),则继续执行其他任务。否则,如果发现存储器故障(是),则前进到步骤s518,设置存储器故障标志,采取相应措施,然后结束诊断进程。

依次类推,按照地址顺序对各个分界区或区块进行诊断并根据诊断结果执行相应的操作。

直到第2n+1个运行周期中(步骤s514),使用marchc算法对区块block_n-1(地址addr_2n-2至addr_2n)进行诊断。并确定是否发现存储器故障(步骤s516),如果没有发现存储器故障(否),则继续执行其他任务然后结束进程。否则,如果发现存储器故障(是),则前进到步骤s518,设置存储器故障标志,采取相应措施,然后结束诊断进程。

由此可见,通过本实施例的诊断方法流程,实现了对存储器的分块交叉诊断的诊断方法,从而提高了诊断的覆盖率,改善了存储器诊断的效果。

上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。

在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元或模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,模块或单元的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元或模块可以是或者也可以不是物理上分开的,作为单元或模块显示的部件可以是或者也可以不是物理单元或模块,即可以位于一个地方,或者也可以分布到多个网络单元或模块上。可以根据实际的需要选择其中的部分或者全部单元或模块来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元或模块可以集成在一个处理单元或模块中,也可以是各个单元或模块单独物理存在,也可以两个或两个以上单元或模块集成在一个单元或模块中。上述集成的单元或模块既可以采用硬件的形式实现,也可以采用软件功能单元或模块的形式实现。

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

以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1