[发明专利]程序语句控制的指令流控制有效
申请号: | 201210057989.0 | 申请日: | 2012-03-07 |
公开(公告)号: | CN102708013A | 公开(公告)日: | 2012-10-03 |
发明(设计)人: | B.加梅尔;S.曼加尔德;S.佐内卡尔布 | 申请(专利权)人: | 英飞凌科技股份有限公司 |
主分类号: | G06F11/00 | 分类号: | G06F11/00;G06F9/48;G06F21/00 |
代理公司: | 中国专利代理(香港)有限公司 72001 | 代理人: | 胡莉莉;李家麟 |
地址: | 德国瑙伊比*** | 国省代码: | 德国;DE |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 程序 语句 控制 指令 | ||
技术领域
本发明的实施例提出了一种用于执行程序的设备,该设备具有计算单元和签名模块。签名模块是用于对程序在计算单元上的执行进行指令流控制的部件。本发明的其他实施例提出了一种签名模块,该签名模块被构造来以便在通过计算单元执行程序时基于给计算单元的程序语句(Programmanweisung)来算出签名并且将该签名存放在签名模块的签名寄存器中。本发明的其他实施例提出了一种用于基于如下指令算出签名并且用于将该签名存放在签名模块的签名寄存器中的方法:所述指令由计算单元在执行程序期间被执行。
背景技术
当程序(软件)在计算单元(硬件)上被执行时,则通常期望该程序实际上也如曾由编译器在编译时所设置的那样被执行。然而,实际上,程序或代码的执行偏离最初规划的程序流程。对此有责任的例如是硬件中的故障、干扰信号或者也是在计算单元上的有针对性的、恶意的操纵。硬件中的故障例如可以归因于不期望的线路短路、线路中断或者悬置的(haengend)开关元件(所谓的“固定故障(stuck-at fault)”),以便列举一些常常出现的类型的硬件故障。干扰信号可以在计算单元工作期间例如由于电磁场或者也以在针对计算单元所设置的温度范围之外的极端温度的形式而出现。对硬件的恶意操纵例如可以通过使所选择的接触部短路、线路中断或者对计算单元和/或连接到计算单元上的存储器的激光照射而实现。所列举的故障类型例如在计算单元本身之内、在存储有程序的存储器之内、在包括计算单元的系统的其他部件之内或者在计算机系统的部件之间的电连接中出现。为了在执行程序期间检测到这样的故障,可执行指令流控制。
针对指令流控制的目的,通常在程序制订(Programmerstellung)期间算出校验值(Pruefwert),所述校验值由给计算单元的程序的指令得到。例如,指令的操作码(Opcode)可以被加起来,以便以这种方式形成校验和。在通常从程序开始直至程序结束包括所有位于其间的指令在内地被执行的线性程序中,因此可以算出唯一的校验和(或俗称:校验值),所述唯一的校验和可以在程序结束处或者在程序结束之后被校验。针对该检验,与通过计算单元执行每个指令并行地用特定寄存器的内容结清(例如以作为位模式存在的opcode为形式的)该指令的值,例如将该指令的值加到寄存器内容上或者与寄存器内容逐位地进行异或运算(XOR)。一旦所有指令值以这种方式在特定寄存器中被考虑,则特定寄存器的所得到的值与参考校验值进行比较,以便确定在两个值之间是否存在一致性。如果存在一致性,则通常可以以程序的有序(ordnungsgemaess)执行为出发点,即程序曾实际上如在程序制订的时刻曾被规划的那样被执行。参考校验值例如可以作为常数被存放在程序代码中。根据曾以何种方式和利用何种编程语言制订程序,参考校验值可以被编译器(“compiler”)算出并且被写入到程序代码中。
常常,程序在程序流中具有分支,这些分支也可以被视为“有条件的转移”。按照分支,程序可以在至少两个路径上继续,其中只有在程序运行时通过分析条件才得到关于两个或可能更多的路径中的哪个路径被选择的判定。应注意的是,具有多于两个的可能的分支路径的分支点通常能被分解成基本的分支点,即分别仅具有两个可能的分支路径的分支点。对于在程序运行期间所算出的值,这意味着该值取决于哪个路径曾多频繁地被通过。为了例如临近程序结束时或者在该程序流程之内的其他点处可以执行当前校验值与针对该点所限定的参考校验值之间的比较,存在将可被通过的不同路径之内的校验值彼此对准的可能性。这可以以如下形式来实现:编译器将一个或多个对于程序流程本身多余的指令嵌入到路径中,所述指令改变校验值来使得所述的路径在与另一路径的聚集点处具有与所述另一路径相同的校验值。
除了在程序之内出现的并且由程序的代码所限定的分支点之外,也会发生的是,程序的执行暂时被计算单元中断,以便执行或继续另一程序。这样的中断用英语术语“interrupt”来标识。在对程序编程时对于计算机系统和类似系统比较常使用的另一可能性在于,确定的程序调用在另一程序(例如程序库(“software library(软件库)”))中存在的函数。由于在程序库中限定的函数或子函数通常并不与主程序共同被编译,所以通常不可能在主程序的校验值算出中将子函数包括在内。如果针对子函数或子程序也要执行指令流控制,则子函数可以利用自己的校验值单独地被测试。子程序的校验值因此与主程序的校验值无关。与计算单元从对主程序的处理到对子程序的处理的转变或者相反的转变有关联地出现的故障常常未被发现。
发明内容
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于英飞凌科技股份有限公司,未经英飞凌科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210057989.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:推板卸板联合机
- 下一篇:一种无卤阻燃剂甲基膦酸二甲酯的制备方法