CN117015765A - 计算机可读指令的陷阱子部分以及相关系统、方法和装置 - Google Patents

计算机可读指令的陷阱子部分以及相关系统、方法和装置 Download PDF

Info

Publication number
CN117015765A
CN117015765A CN202280014115.9A CN202280014115A CN117015765A CN 117015765 A CN117015765 A CN 117015765A CN 202280014115 A CN202280014115 A CN 202280014115A CN 117015765 A CN117015765 A CN 117015765A
Authority
CN
China
Prior art keywords
address
trap
jump
subsection
sub
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
Application number
CN202280014115.9A
Other languages
English (en)
Inventor
J·L·拉森
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microchip Technology Inc
Original Assignee
Microchip Technology Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microchip Technology Inc filed Critical Microchip Technology Inc
Publication of CN117015765A publication Critical patent/CN117015765A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/321Program or instruction counter, e.g. incrementing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • G06F11/221Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test buses, lines or interfaces, e.g. stuck-at or open line faults
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/28Error detection; Error correction; Monitoring by checking the correct order of processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3471Address tracing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/0757Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0796Safety measures, i.e. ensuring safe condition in the event of error, e.g. for controlling element
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/1016Error in accessing a memory location, i.e. addressing error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program

Abstract

公开了计算机可读指令的陷阱子部分以及相关系统、方法和设备。处理电路包括处理核心和数据存储设备,该处理核心包括循环通过地址的程序计数器,该数据存储设备包括存储在其上的计算机可读指令。该计算机可读的子部分对应于子例程。该子部分在该数据存储设备内的位置与该地址相关联。在该数据存储设备内的第一位置处的第一子部分由第一地址指示。第一陷阱位置处的第一陷阱子部分由第一陷阱地址指示。该第一陷阱地址与该第一地址仅相差单个位。该第一陷阱子部分指示该处理核心执行第一陷阱子例程以跳转到该第一地址或跳转回到其自身。

Description

计算机可读指令的陷阱子部分以及相关系统、方法和装置
相关专利申请的交叉引用
本申请根据35U.S.C.§119(e)要求2021年2月10日提交的美国临时专利申请序列号63/148,060的优先权日的权益,该临时专利申请的整个公开内容据此以引用方式并入本文。
技术领域
本公开整体涉及计算机可读指令的陷阱子部分,并且更具体地涉及响应于计算机可读指令的陷阱子部分的安全关键产品的安全操作。
背景技术
处理电路的程序计数器(PC)中的固定型故障可响应于PC的一个或多个半导体器件(例如,晶体管)的损坏或缺陷而发生。“固定型故障”是其中位的输出保持固定在特定逻辑电平而不管编程的错误状况。例如,高能粒子(例如,辐射粒子诸如α粒子、β粒子和γ粒子)可穿透集成电路设备的封装材料并且撞击半导体芯片,这可损坏实现PC功能的电路。类似的问题可能由地址总线引起,其中一条或多条线被固定在特定值。
附图说明
虽然本公开以特别指出并清楚地要求保护具体示例的权利要求书作为结尾,但当结合附图阅读时,通过以下描述可更容易地确定本公开范围内的示例的各种特征和优点,在附图中:
图1是示出在操作处理电路的方法中响应于固定型故障可能发生的问题的流程示意图;
图2是根据一些示例的处理电路的框图;
图3是根据一些示例的示出操作图2的处理电路的方法的示例的操作流程示意图;
图4是根据一些示例的示出操作图2的处理电路的方法的另一个示例的操作流程示意图;
图5是根据一些示例的示出操作图2的处理电路的方法的又一个示例的操作流程示意图;
图6是根据一些示例的包括图3的处理电路的安全关键系统的框图;
图7是根据一些示例的示出操作处理电路的方法的流程图;并且
图8是电路的框图,在一些示例中,该电路可用于实现本文所公开的各种功能、操作、动作、过程和/或方法。
具体实施方式
在以下具体实施方式中,参考了形成本公开的一部分的附图,并且在附图中以举例的方式示出了可实践本公开的特定示例。充分详细地描述了这些示例,以使本领域的普通技术人员能够实践本公开。然而,可利用本文已启用的其他示例,并且可在不脱离本公开的范围的情况下进行结构、材料和流程变化。
本文所呈现的图示并不旨在为任何特定方法、系统、设备或结构的实际视图,而仅仅是用于描述本公开的示例的理想化表示。在一些情况下,为了读者的方便,各附图中的类似结构或部件可保持相同或相似的编号;然而,编号的相似性并不一定意味着结构或部件在尺寸、组成、构造或任何其他属性方面是相同的。
以下描述可以包括示例以帮助本领域的普通技术人员实践本发明所公开的示例。术语“示例性”、“比如”和“例如”的使用意味着相关描述是说明性的,并且虽然本公开的范围旨在涵盖示例和法律等同形式,但使用此类术语并不旨在将示例或本公开的范围限制于指定的部件、步骤、特征、功能等。
应当容易理解,如本文一般所述并且在附图中示出的示例的部件可被布置和设计成多种不同的配置。因此,对各种示例的以下描述并不旨在限制本公开的范围,而是仅代表各种示例。虽然这些示例的各个方面可在附图中给出,但附图未必按比例绘制,除非特别指明。
此外,所示出和描述的特定实施方式仅为示例,并且不应理解为实施本公开的唯一方式,除非本文另外指明。元件、电路和功能可以框图形式示出,以便不以不必要的细节模糊本公开。相反,所示出和描述的特定实施方式仅为示例性的,并且不应理解为实施本公开的唯一方式,除非本文另外指明。另外,块定义和各个块之间逻辑的分区是特定实施方式的示例。对于本领域的普通技术人员将显而易见的是,本公开可通过许多其他分区解决方案来实践。在大多数情况下,已省略了关于定时考虑等的细节,其中此类细节不需要获得本公开的完全理解,并且在相关领域的普通技术人员的能力范围内。
本领域的普通技术人员将会理解,可使用多种不同技术和技法中的任何一者来表示信息和信号。为了清晰地呈现和描述,一些附图可以将信号示出为单个信号。本领域的普通技术人员应当理解,信号可表示信号总线,其中总线可具有多种位宽度,并且本公开可在包括单个数据信号在内的任意数量的数据信号上实现。
结合本文所公开的示例描述的各种示例性逻辑块、模块和电路可以用通用处理器、专用处理器、数字信号处理器(DSP)、集成电路(IC)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他可编程逻辑设备、分立栅极或晶体管逻辑部件、分立硬件部件或设计成实施本文所描述的功能的其任何组合来实现或实施。通用处理器(在本文还可以称为“主机处理器”或简称“主机”)可以是微处理器,但在替代方案中,该处理器可以是任何常规的处理器、控制器、微控制器或状态机。处理器也可实现为计算设备的组合,诸如DSP和微处理器的组合、多个微处理器、与DSP核心结合的一个或多个微处理器或任何其他此类配置。在包括处理器的通用计算机执行与本公开的示例相关的计算指令(例如,软件代码)时,该通用计算机被认为是专用计算机。
示例可以根据被描绘为流程图、流程示意图、结构图或框图的过程来描述。虽然流程图可将可操作动作描述为连续过程,但是这些动作中的许多动作可按照另一序列、并行地或基本上同时地执行。此外,可重新安排动作的顺序。本文中的过程可对应于方法、线程、函数、过程(procedure)、子例程、子程序、其他结构或它们的组合。此外,本文公开的方法可通过硬件、软件或这两者来实现。如果在软件中实现,这些函数可作为一个或多个指令或代码存储或传输到计算机可读介质上。计算机可读介质包括计算机存储介质和通信介质两者,该通信介质包括有利于将计算机程序从一个位置传递到另一个位置的任何介质。
本文中使用诸如“第一”、“第二”等称呼的对元件的任何引用并不限制那些元件的数量或顺序,除非明确说明了这种限制。相反,这些名称可在本文中用作在两个或更多个元件或元件的实例之间进行区分的便利方法。因此,提及第一元件和第二元件并不意味着在那里只能采用两个元件,或者第一元件必须以某种方式在第二元件之前。此外,除非另外指明,一组元件可包括一个或多个元件。
如本文所用,提及给定参数、属性或条件时的术语“大体上”是指并且包括在一定程度上本领域的普通技术人员将理解在具有较小差异的情况下(诸如,例如,在可接受的制造公差内)达到给定的参数、属性或条件。以举例的方式,取决于基本上满足的具体参数、属性或条件,参数、属性或条件可至少满足90%、至少满足95%、或甚至至少满足99%。
在安全关键产品中,需要测试或检测(例如,诊断)处理电路(例如,微控制器)中的故障,并且能够确保产品的安全操作。作为非限制性示例,如果在处理电路的程序计数器或地址总线中发生固定型故障,则涉及阀的控制以允许和禁止可燃流体流过阀的安全关键产品可能以不可预测的和危险的方式执行。可燃流体在不期望的时间的流动可能导致对一个或多个人的伤害或死亡和/或对装备、设施和/或环境的损害或破坏。
推荐的和充分的诊断测试由诸如IEC 60730的标准规定。IEC 60730,附录H,表H.1规定了诊断测试必须识别程序计数器(PC)中的固定型故障。
通过测试没有位被固定来执行针对程序计数器中的固定型故障的诊断测试。如果发生意外的程序流/定时以捕捉在运行时间出现的并且未被诊断测试检测到的程序计数器固定型故障,则监视定时器被用于重置MCU或安全关键设备的其他处理器。
然而,如果位被固定在程序计数器中或地址总线中,则处理电路可能不能够以预期序列执行指令。因此,诊断测试可能不运行,或者可能不按预期运行。故障检测机制受故障影响,并且因此不能被认为是独立安全机制。诊断测试的成功执行要求在程序计数器中没有固定型故障,这意味着故障检测机制没有实现其目的,并且不能正确地宣称其成功地有助于系统的安全。在程序计数器中的固定型故障的情况下,监视定时器是唯一且最后的防线,但是由于监视定时器通常由软件初始化,因此监视定时器的成功初始化可能以程序计数器中是否存在固定型故障为条件。实际上,这意味着软件初始化的监视定时器的故障检测能力也受到损害,因为它也受到故障的影响。本公开的发明人现在认识到,软件初始化的监视定时器和验证不存在固定型故障的诊断的组合将奏效的任何假设都是不安全的,因为固定型故障可能阻止监视定时器的初始化、诊断或两者正常奏效。
许多安全关键系统可使用程序计数器固定型诊断方法,该方法不一定在现实中奏效,并且因此可能是不安全的。本文所公开的程序计数器固定型陷阱器示例可捕捉程序计数器的基本上所有单个位固定型故障,而不管监视定时器是否由软件初始化以按预期操作。
图1是示出在操作处理电路(例如,CPU)的方法100中响应于固定型故障可能发生的问题的流程示意图。如果位被固定为高,则指令地址的一半将不可由处理电路访问。在没有任何固定型位(例如,固定型高位或固定型低位)的情况下,方法100可在使用实线示出的正常操作流程下进行。相比之下,虚线示出了响应于单个位故障114(例如,固定型高故障)的方法100的异常操作流程。
在正常操作下(无固定型故障),方法100可包括在操作102处释放重置。在操作104处,方法100包括CPU从地址0x0000开始执行。由于没有固定型故障干扰指向地址0x0000的程序计数器,因此与地址0x0000相关联的程序可执行,并且方法100可因此在操作106处跳转到已知地址以在操作108处初始化监视定时器。在操作110处,方法100可包括运行诊断测试(例如,用于程序计数器和/或地址总线的固定型诊断测试以测试固定型故障)。响应于固定型诊断测试的通过,方法100可进行到操作112,此时方法100包括运行应用程序。方法100可周期性地返回到操作110以运行固定型诊断测试并且返回到操作112以在正常操作期间运行应用程序。
然而,如果程序计数器经历固定型故障(诸如,单个位故障114),则响应于在操作102处释放重置,方法100可包括在操作116处跳转到未知地址。因此,不是在操作104中从地址0x0000开始执行,而是方法100可替代地包括CPU从地址0x0000外一个位的不同地址开始执行。作为特定非限制性示例,在操作118处,CPU可从地址0x0001开始执行,在操作120处,CPU可从地址0x0002开始执行,在操作122处,CPU可从地址0x0004开始执行,或在操作124处,CPU可从地址0x8000开始执行。因此,在操作126处,CPU可无序地运行未知指令块,而不初始化监视定时器(操作108),不运行用于程序计数器的固定型诊断测试(例如,操作110),并且不运行应用程序(操作112)。换句话说,响应于单个位故障114,方法100可能永远不会到达操作108(初始化监视定时器)、操作110(运行用于程序计数器的固定型故障诊断测试)或操作112(运行应用程序)。
如图1所示,响应于单个位故障114,与各种地址中的任一者相关联的各种不同未知指令块中的任一者可在操作126处结束执行。例如,令A是一组指令地址,并且F是固定型故障值2^n,其中n是固定为高的位的位地址。因此,如果存在固定型高位故障,则所有地址A将作为A|F(其中_|_是逐位OR运算符)而不是作为A来执行。例如,如果位0为固定型高,则指令地址0x0000用0x0001替换,0x0002用0x0003替换,等等。如果程序计数器位被固定为低,则类似问题适用。
单个固定型故障的特性包括:
·仅指令地址的一半将可被处理核心访问
·随机指令具有50%的错误执行概率
·统计上,在仅十个指令之后存在99.9%的错误执行机会(假设待访问的每个地址的统一概率)
固定型高的特性包括地址0x0000将总是错误执行。固定型低的特性包括地址0x0000将总是正确执行并且地址0xFFFF将总是错误执行。
图2是根据一些示例的处理电路200的框图。处理电路200包括处理核心202和数据存储设备204。处理核心202包括用于循环通过地址的程序计数器208。在图2的程序计数器208处指示当前地址210。处理核心202还包括用于执行由数据存储设备204存储的计算机可读指令206的代码执行逻辑252。
计算机可读指令206包括计算机可读指令的子部分(例如,第一子部分212、第二子部分218、第一陷阱子部分224、第二陷阱子部分226和应用程序子部分240)。计算机可读指令206的子部分用于指示处理核心202执行子例程。计算机可读指令206的每个子部分对应于相应子例程中的一个子例程。例如,第一子部分212对应于第一子例程232,第二子部分218对应于第二子例程234,第一陷阱子部分224对应于第一陷阱子例程236,第二陷阱子部分226对应于第二陷阱子例程238,并且应用程序子部分240对应于应用程序子例程244。
计算机可读指令206的子部分位于数据存储设备204的位置处。如本文所用,当参考存储在数据存储设备中的数据或计算机可读指令的位置而使用时,术语“位置”是指逻辑位置、物理位置或两者。作为非限制性示例,位置可对应于存储计算机可读指令206的对应子部分的物理数据存储元件(例如,存储器单元)的物理位置,或对应于此类物理位置的逻辑位置。例如,第一子部分212被存储在第一位置214处,第二子部分218被存储在第二位置222处,第一陷阱子部分224被存储在相应第一陷阱位置254处,第二陷阱子部分226被存储在相应第二陷阱位置256处,并且应用程序子部分240被存储在相应应用程序位置258处。
使用地址来指示计算机可读指令206的子部分的位置。例如,第一子部分212位于使用第一地址216(例如,0x0000)指示的第一位置214处。第二子部分218位于使用第二地址220(例如,对应于存储器位置的引导或末尾的存储器地址0xFFFF的引导或末尾)指示的第二位置222处。第一陷阱子部分224位于使用相应第一陷阱地址228(例如,0x0001、……、0x8000)指示的相应第一陷阱位置254处。第二陷阱子部分226位于使用相应第二陷阱地址230(例如,0x7FFF、……、0xFFFE)指示的相应第二陷阱位置256处,并且应用程序子部分240位于由相应应用程序地址242(例如,应用程序地址中的一个应用程序地址是应用程序开始地址)指示的相应应用程序位置258处。
在操作中,当前地址210循环通过对应于存储在数据存储设备204上的计算机可读指令206的子部分的地址。处理核心202向数据存储设备204提供当前地址210(例如,经由地址总线246)。响应于当前地址210,数据存储设备204向处理核心202提供当前子部分250(即,计算机可读指令206的子部分中位于由当前地址210指示的位置处的一个子部分)(例如,经由数据总线248)。
第一地址216包括多个位,并且第一陷阱地址228中的每个第一陷阱地址与第一地址216相差单个相应位。作为非限制性示例,第一地址216可以是连续的一系列零。由于第一陷阱地址228各自与第一地址216仅相差单个位,其中第一地址216为0x0000(十六进制,其等于二进制中的16个连续零),因此第一陷阱地址228可以是0x0001、0x0002、0x0004、0x0008、0x0010、0x0020、0x0040、0x0080、0x0100、0x0200、0x0400、0x0800、0x1000、0x2000、0x4000和0x8000。第一陷阱子部分224指示处理核心202执行相应第一陷阱子例程236以跳转到第一地址216或跳转回到其自身。因此,在固定型高使得处理核心202检索第一陷阱子部分224中的一个第一陷阱子部分并执行第一陷阱子例程236中的一个第一陷阱子例程而不是检索第一子部分212并执行第一子例程232的情况下,可重复地检索第一陷阱子部分224中的一个第一陷阱子部分并且可重复地执行第一陷阱子例程236中的对应一个第一陷阱子例程。因此,响应于程序计数器208或地址总线246的单个固定型高故障,处理核心202将在执行第一陷阱子例程236中的一个第一陷阱子例程的连续循环中被固定。
在一些示例中,第一子部分212指示处理核心202执行第一子例程232以跳转到第二地址220。因此,在第一地址216为连续的一系列零的情况下,如果在程序计数器208处不存在固定型高故障,则程序计数器208的当前地址210可更新到第二地址220(例如,连续的一系列一:0xFFFF、引导地址或存储器地址的末尾)。第二地址220可以是第一地址216的一的补数,以使得能够通过执行第一子例程232和第二子例程234来检测所有固定型故障。换句话说,第一子例程232和第一陷阱子例程236使得能够检测固定型高故障,并且第二子例程234和第二陷阱子例程238使得能够检测固定型低故障。
第二陷阱地址230与第二地址220仅相差单个位。例如,在第二地址220是0xFFFF(十六进制,其等于二进制中的16个连续的一)的情况下,第二陷阱子部分226可在地址2300x7FFF、0xBFFF、0xDFFF、0xEFFF、0xF7FF、0xFBFF、0xFDFF、0xFEFF、0xFF7F、0xFFBF、0xFFDF、0xFFEF、0xFFF7、0xFFFB、0xFFFD和0xFFFE处。第二陷阱子部分226指示处理核心202执行第二陷阱子例程238以跳转到第二地址220、跳转回到其自身或跳转到第一地址216。因此,在固定型低使得处理核心202检索第二陷阱子部分226中的一个第二陷阱子部分并执行第二陷阱子例程238中的一个第二陷阱子例程而不是检索第二子部分218并执行第二子例程234的情况下,可重复地检索第二陷阱子部分226中的一个第二陷阱子部分并且可重复地执行第二陷阱子例程238中的对应一个第二陷阱子例程。因此,响应于程序计数器208或地址总线246的单个固定型低故障,处理核心202将在执行第二陷阱子例程238中的一个第二陷阱子例程的连续循环中被固定。
为了捕集所有可能的一位固定型故障,第一陷阱子部分224和第二陷阱子部分226的数量(即,量)各自等于地址的位的数量,即,对于具有X个位的地址,存在X个第一陷阱子部分224和X个第二陷阱子部分226。
在一些示例中,处理电路200包括监视定时器260以在运行时间期间检测程序计数器208的固定型故障。监视定时器260响应于检测到故障(诸如程序计数器208的固定型故障)而启动重置操作,例如,因为监视定时器260在超时之前没有被重置。在重置操作之后,处理核心202将被固定在执行如上所述的第一陷阱子例程236或第二陷阱子例程238中的一者的连续循环中。在一些示例中,监视定时器260可独立于计算机可读指令206来实现,以防止固定型故障干扰监视定时器260的操作。在一些示例中,可使用处理电路200外部的监视定时器(未示出)。在一些示例中,监视定时器260独立于处理核心202启动重置操作。
图3是根据一些示例的示出操作图2的处理电路200的方法300的示例的操作流程示意图。图3示出了16位程序计数器208(图2)。该具体实施覆盖了重置之外的所有单个位固定型故障。该具体实施假设所执行的第一指令在地址0x0000处。应当指出的是,可替代地实现不同数量的位的程序计数器,并且16位程序计数器208在本文中仅作为示例进行讨论。例如,该具体实施可适于与其他大小的程序计数器(例如,8位、32位、64位程序计数器)(即,不同于16位程序计数器)一起工作。该具体实施可适于与除了0x0000之外的开始地址一起工作
处理电路200(图2)的正常操作(例如,没有单个固定型高位故障314或单个固定型低位故障316的操作)在图3中使用具有实线的箭头来指示,并且处理电路200的异常操作使用具有虚线的箭头来指示。在操作302处,方法300包括重置的释放。在正常操作(无固定型故障,诸如单个固定型高位故障314或单个固定型低位故障316)下,可将重置释放后的程序计数器208设定为0x0000并且在操作304处执行到存储器地址0xFFFF(例如,JMP 0xFFFF)的末尾的跳转。响应于在操作304处执行的到存储器地址的末尾的跳转,即,跳转到存储器地址0xFFFF,方法300包括在操作306处执行到应用程序的开始(例如,来自存储器地址0xFFFF的JMP应用程序的开始)的跳转。在操作308处,如果未检测到故障,则方法300包括运行应用程序。
然而,如果程序计数器208或地址总线246(图2)经历单个固定型高位故障314,则可执行若干固定型高位陷阱310中的一个固定型高陷阱而不是重置向量(地址0x0000)。与这些固定型高陷阱310相关联的第一陷阱地址228(图2)可与初始重置地址0x0000(诸如0x0001、0x0002、0x0004、0x0008、0x0010、0x0020、0x0040、0x0080、0x0100、0x0200、0x0400、0x0800、0x1000、0x2000、0x4000和0x8000)相差一个位。在图3所示的示例中,固定型高陷阱310中的每个固定型高陷阱执行到0x0000(重置向量地址)的跳转。然而,由于单个固定型高位故障314,将执行固定型高陷阱310中的相同的一个固定型高陷阱,从而将方法300捕集到对固定型高陷阱310中的一个固定型高陷阱的重复执行中。因此,处理电路200(图2)进行安全操作,即,不跳转到未知地址。
如果程序计数器208或地址总线246经历单个固定型低位故障316,则正确地执行重置向量(0x0000)。然而,在操作306处,可执行若干固定型低陷阱312中的一个固定型低陷阱,而不是0xFFFF(程序存储器的末尾)。与这些固定型低陷阱312相关联的第二陷阱地址230(图2)可与0xFFFF(诸如0x7FFF、0xBFFF、0xDFFF、0XEFFF、0xF7FF、0xFBFF、0xFDFF、0xFEFF、0xFF7F、0xFFBF、0xFFDF、0xFFEF、0xFFF7、0xFFFB、0xFFFD和0xFFFE)相差一个位。在图3所示的示例中,固定型低陷阱312中的每个固定型低陷阱可执行以跳转到0xFFFF。然而,由于单个固定型低位故障316,将执行固定型低陷阱312中的相同的一个固定型低陷阱,从而将方法300捕集为对固定型低陷阱312中的一个固定型低陷阱的重复执行。因此,处理电路200(图2)进行安全操作,即,不跳转到未知地址。
本公开的示例安全地捕获所有单个位程序计数器固定型故障。如先前所讨论的,本文所公开的示例可与实现独立时隙监视机制的监视定时器组合使用,使得在运行时间出现的固定型故障由监视定时器检测(不管由程序计数器固定型故障引起的代码错误执行如何),该固定型故障然后可由另一个系统监视以识别对固定型高陷阱310中的一个固定型高陷阱或固定型低陷阱312中的一个固定型低陷阱的重复执行。监视定时器独立于CPU生成RESET,并且通过这样做,将设置用于程序计数器固定型陷阱器的级以在重置之后将系统保持在安全状态。一旦固定型陷阱器被故障触发,系统保持安全,即使监视定时器不能由软件初始化。
作为跳转到固定型高陷阱310跳转到地址0x0000的替代方案,固定高陷阱310可跳转到其自身。类似地,不是跳转到0xFFFF,而是固定型低陷阱312可跳转到其自身。将关于图4描述该替代方案的示例。
图4是根据一些示例的示出操作图2的处理电路200的方法400的另一个示例的操作流程示意图。方法400类似于图3的方法300。例如,方法400包括上文参考图3讨论的操作302、304、306和308。与图3的执行以跳转到0x0000的固定型高陷阱310相比,方法400包括执行以跳转到其自身(JMP SELF)的固定型高陷阱402。而且,与图3的执行以跳转到0xFFFF的固定型低陷阱312相比,方法400包括执行以跳转到其自身(JMP SELF)的固定型低陷阱404。
如果程序计数器208经历单个固定型高位故障314,则可执行若干固定型高陷阱402中的一个固定型高位陷阱而不是重置向量(地址0x0000)。在图4所示的示例中,固定型高陷阱402中的每个固定型高陷阱可执行以跳转到其自身,其将继而执行以跳转到固定型高陷阱402中的相同的一个固定型高陷阱,即跳转到其自身。跳转回到其自身将被连续地重复,从而将方法400捕集到对固定型高陷阱402中的一个固定型高陷阱的重复执行中。因此,处理电路200(图2)进行安全操作,即,不跳转到未知地址。
如果程序计数器208经历单个固定型低位故障316,则正确地执行重置向量(0x0000)。然而,可执行若干固定型低陷阱404中的一个固定型低陷阱,而不是0xFFFF。在图4所示的示例中,固定型低陷阱404中的每个固定型低陷阱可执行以跳转到其自身,其将继而执行再次跳转到其自身(即,固定型低陷阱404中的相同的一个固定型低陷阱)。将连续重复跳转回到固定型低陷阱404中的相同的一个固定型低陷阱,从而将方法400捕集到对固定型低陷阱404中的一个固定型低陷阱的重复执行中。因此,处理电路200(图2)进行安全操作,即,不跳转到未知地址。
图5是根据一些示例的示出操作图2的处理电路200的方法500的又一个示例的操作流程示意图。方法500类似于图3的方法300。例如,方法500包括上文参考图3讨论的操作302、304、306和308。方法500还包括上文参考图3讨论的固定型高陷阱310。然而,与图3的执行以跳转到0xFFFF的固定型低陷阱312相比,方法500包括执行以跳转到初始重置向量0x0000(JMP 0x0000)的固定型低陷阱502。
响应于单个固定型高位故障314,方法500可与图3的方法300类似地操作,因为方法500包括图3的固定型高陷阱310。而且,响应于单个固定型低位故障316,正确地执行重置向量(0x0000)。然而,可执行若干固定型低陷阱502中的一个固定型低陷阱,而不是在0xFFFF处的操作306。在图5所示的示例中,固定型低陷阱502中的每个固定型低陷阱可执行以跳转到重置向量0x0000。在不存在单个固定型高位故障314的情况下,操作304可正确地执行以跳转到0xFFFF,但响应于单个固定型低位故障316,先前执行以跳转回到重置向量0x0000的固定型低陷阱502中的相同一个固定型低陷阱可再次执行以再次跳转回到重置向量0x0000。跳转回到重置向量(操作304的执行)和单个固定型低位故障316可连续重复,从而将方法500捕集到对固定型低陷阱502中的一个固定型低陷阱的重复执行中。因此,处理电路200(图2)进行安全操作,即,不跳转到未知地址。
图6是根据一些示例的包括图2的处理电路200的安全关键系统600的框图。安全关键系统600还包括由处理电路200控制的安全关键设备602。
作为非限制性示例,安全关键设备602可包括允许和限制可燃流体的流动的阀。同样作为非限制性示例,安全关键设备602可包括医疗设备(例如,起搏器、呼吸机、透析设备、生命维持设备等)、电气基础设施设备(例如,保险丝、断路器、警报器等)、核能系统、车辆制动器、其他安全关键设备或它们的组合。
当处理电路200响应于程序计数器208或地址总线246(图2)中的单个位固定型故障而将处理电路200的操作捕集到连续循环中时,处理电路200可不循环通过随机应用程序子例程244(图2),这可防止安全关键设备602的不安全操作。
图7是示出根据一些示例的操作处理电路(例如,图2的处理电路200)的方法700的流程图。在操作702处,方法700包括在处理电路的运行时间期间检测处理电路的操作中的故障。作为非限制性示例,检测故障可包括由监视定时器(例如,图2的监视定时器260)或诊断测试中的一者来检测固定型故障。在操作704处,方法700包括响应于检测到的故障重置处理电路的操作。
在操作706处,方法700包括以与由数据存储设备(例如,图2的数据存储设备204,但不限于此)存储在第一位置处(例如,图2的第一位置214处,但不限于此)的计算机可读指令(例如,图2的计算机可读指令206,但不限于此)的第一子部分(例如,图2的第一子部分212,但不限于此)对应的第一地址(例如,图2的第一地址216,但不限于此)在程序计数器(例如,图2的程序计数器208,但不限于此)中启动地址的循环。在操作712处,方法700包括响应于程序计数器中的第一地址以及程序计数器或地址总线的第一类型的固定型故障(例如,固定型高故障)而执行对应于计算机可读指令的第一陷阱子部分的第一陷阱子例程以跳转到第一地址或跳转回到其自身。
在操作708处,方法700包括响应于程序计数器和地址总线中的第一地址没有第一类型的固定型故障,执行对应于计算机可读指令的第一子部分的第一子例程,以跳转到对应于计算机可读指令的在数据存储设备的第二位置处的第二子部分的第二地址。在操作714处,方法700包括响应于程序计数器中的第二地址以及程序计数器或地址总线的第二类型的固定型故障(例如,固定型低故障)而执行对应于计算机可读指令的第二陷阱子部分的第二陷阱子例程以跳转到第二地址、跳转回到其自身或跳转到第一地址。包括虚线的箭头从操作714被绘制到操作706和操作714以指示操作706或操作714可响应于操作714而被执行。
在操作710处,方法700包括响应于程序计数器中的第二地址以及地址总线没有第二类型的固定型故障而执行对应于计算机可读指令的第二子部分的第二子例程,以跳转到对应于计算机可读指令的应用程序子部分和应用程序子例程的应用程序开始地址。
使用虚线来指示操作702和704,以指示仅在处理电路的运行时间期间发生固定型故障的情况下才可执行这些操作。如果固定型故障发生在处理电路的运行时间之外,则方法700可在操作706处开始。
本领域技术人员将了解,本文所公开的示例的功能元件(例如,功能、操作、动作、过程和/或方法)可以在任何合适的硬件、软件、固件或其组合中实现。图8示出了本文所公开的功能元件的具体实施的非限制性示例。在一些示例中,本文公开的功能元件的一些或所有部分可由专门设计用于执行该功能元件的硬件来执行。
图8是电路800的框图,在一些示例中,该电路可用于实现本文所公开的各种功能、操作、动作、过程和/或方法。电路800包括能够操作地耦接到一个或多个数据存储设备(在本文中有时称为“存储装置8004”)的一个或多个处理器802(在本文中有时称为“处理器802”)。存储装置804包括存储在其上的机器可执行代码806,并且处理器802包括逻辑电路808。机器可执行代码806包括描述了可由逻辑电路808实现(例如,执行)的功能元件的信息。逻辑电路808适于实现(例如,执行)由机器可执行代码806描述的功能元件。当执行由机器可执行代码806描述的功能元件时,电路800应被视为用于执行本文所公开的功能元件的专用硬件。在一些示例中,处理器802可按顺序、同时地(例如,在一个或多个不同的硬件平台上)或在一个或多个并行过程流中执行由机器可执行代码806描述的功能元件。
当由处理器802的逻辑电路808实现时,机器可执行代码806使处理器802适于执行本文所公开的示例的操作。例如,机器可执行代码806可使处理器802适于执行图3的方法300、图4的方法400、图5的方法500和/或图7的方法700的至少一部分或全部。又如,机器可执行代码806可使处理器802适于执行针对图2的处理电路200所讨论的操作的至少一部分或全部。
处理器802可包括通用处理器、专用处理器、中央处理单元(CPU)、微控制器、可编程逻辑控制器(PLC)、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他可编程逻辑设备、分立栅极或晶体管逻辑、分立硬件部件、其他可编程设备或它们的被设计成执行本文所公开的功能的任何组合。包括处理器的通用计算机执行对应于与本公开的示例相关的机器可执行代码806(例如,软件代码、固件代码、硬件描述)的功能元件时,该通用计算机被视为专用计算机。需注意,通用处理器(在本文中也可称为主机处理器或简称为主机)可以是微处理器,但在替代方案中,处理器802可包括任何常规处理器、控制器、微控制器或状态机。处理器802也可实现为计算设备的组合,诸如DSP和微处理器的组合、多个微处理器、与DSP核心结合的一个或多个微处理器或任何其他此类配置。
在一些示例中,存储装置804包括易失性数据存储装置(例如,随机存取存储器(RAM))、非易失性数据存储装置(例如,闪存存储器、硬盘驱动器、固态驱动器、可擦除可编程只读存储器(EPROM)等)。在一些示例中,处理器802和存储装置804可实现为单个设备(例如,半导体设备产品、片上系统(SOC)等)。在一些示例中,处理器802和存储装置804可实现为单独的设备。
在一些示例中,机器可执行代码806可包括计算机可读指令(例如,软件代码、固件代码)。作为非限制性示例,计算机可读指令可由存储装置804存储、由处理器802直接访问,并且由处理器802使用至少逻辑电路808来执行。同样作为非限制性示例,计算机可读指令可被存储在存储装置804上,被传输到存储器设备(未示出)以供执行,并且由处理器802使用至少逻辑电路808来执行。因此,在一些示例中,逻辑电路808包括能够以电的方式配置的逻辑电路808。
在一些示例中,机器可执行代码806可描述要在逻辑电路808中实现以执行功能元件的硬件(例如,电路)。该硬件可以从低级晶体管布局到高级描述语言的各种抽象级别中的任何一种进行描述。在高级抽象下,可以使用硬件描述语言(HDL),诸如IEEE标准硬件描述语言(HDL)。作为非限制性示例,可以使用VerilogTM、SystemVerilogTM或超大规模集成(VLSI)硬件描述语言(VHDLTM)。
HDL描述可根据需要以多种其他抽象级别中的任一种转换成描述。作为非限制性示例,高级描述可被转换为逻辑级描述,诸如寄存器传送语言(RTL)、栅极级(GL)描述、布局级描述或掩模级描述。作为非限制性示例,将由逻辑电路808的硬件逻辑电路(例如,门、触发器、寄存器,但不限于此)执行的微操作可在RTL中描述并且然后通过合成工具转换成GL描述,并且GL描述可通过安置和路由工具转换成布局级描述,该布局级描述对应于可编程逻辑设备的集成电路、分立栅极或晶体管逻辑、分立硬件部件或它们的组合的物理布局。因此,在一些示例中,机器可执行代码806可包括HDL、RTL、GL描述、掩模级描述、其他硬件描述或它们的任何组合。
在机器可执行代码806包括硬件描述(以任何抽象级别)的示例中,系统(未示出,但包括存储装置804)可实现由机器可执行代码806描述的硬件描述。作为非限制性示例,处理器802可包括可编程逻辑设备(例如,FPGA或PLC),并且逻辑电路808可以电的方式进行控制以将对应于硬件描述的电路实现到逻辑电路808中。同样作为非限制性示例,逻辑电路808可包括根据机器可执行代码806的硬件描述由制造系统(未示出,但包括存储装置804)制造的硬连线逻辑部件。
无论机器可执行代码806包括计算机可读指令还是硬件描述,逻辑电路808都适于在实现机器可执行代码806的功能元件时执行由机器可执行代码806描述的功能元件。需注意,虽然硬件描述可能不直接描述功能元件,但硬件描述间接描述了由硬件描述所描述的硬件元件能够执行的功能元件。
实施例
以下是实施例的非穷举、非限制性列表。并非以下列出的实施例中的每个实施例均被清楚且单独地指示为可与下面列出的实施例以及上文讨论的实施例中的所有其他实施例组合。然而,意图是这些实施例可与所有其他实施例组合,除非对于本领域的普通技术人员来说显而易见的是这些实施例不可组合。
实施例1:一种装置,包括:处理核心,所述处理核心包括用于循环通过地址的程序计数器;和数据存储设备,所述数据存储设备包括存储在其上的计算机可读指令,所述计算机可读指令包括用以指示所述处理核心执行子例程的所述计算机可读指令的子部分,所述计算机可读指令的每个子部分对应于所述子例程中的一个子例程,所述计算机可读指令的所述子部分在所述数据存储设备内的位置与所述地址相关联,所述子部分包括:第一子部分,所述第一子部分在所述数据存储设备内由第一地址指示的第一位置处;和第一陷阱子部分,所述第一陷阱子部分在所述数据存储设备内的第一陷阱位置处,所述第一陷阱子部分由相应第一陷阱地址指示,所述第一陷阱地址与所述第一地址仅相差单个位,所述第一陷阱子部分用于指示所述处理核心执行相应第一陷阱子例程以跳转到所述第一地址或跳转到其自身中的一者。
实施例2:根据实施例1所述的装置,其中所述第一地址是连续的一系列零。
实施例3:根据实施例1和2中任一项所述的装置,其中所述第一地址包括多个位,所述第一陷阱地址中的每个第一陷阱地址与所述第一地址相差单个相应位。
实施例4:根据实施例1至3中任一项所述的装置,其中所述子部分包括:第二子部分,所述第二子部分在所述数据存储设备内由第二地址指示的第二位置处,所述第二地址是所述第一地址的一的补数,所述第一子部分用于指示所述处理核心执行第一子例程以跳转到所述第二地址;和第二陷阱子部分,所述第二陷阱子部分在所述数据存储设备内的第二陷阱位置处,所述第二陷阱位置由第二陷阱地址指示,所述第二陷阱地址与所述第二地址仅相差单个位,所述第二陷阱子部分用于指示所述处理核心执行第二陷阱子例程以跳转到所述第二地址或跳转到其自身。
实施例5:根据实施例4所述的装置,其中所述第一地址和所述第二地址中的一者是连续的一系列零,并且所述第一地址和所述第二地址中的另一者是连续的一系列一。
实施例6:根据实施例1至5中任一项所述的装置,其中所述子部分包括:第二子部分,所述第二子部分在所述数据存储设备内由第二地址指示的第二位置处,所述第二地址是所述第一地址的一的补数,所述第一子部分用于指示所述处理核心执行第一子例程以跳转到所述第二地址;和第二陷阱子部分,所述第二陷阱子部分在所述数据存储设备内的第二陷阱位置处,所述第二陷阱位置由第二陷阱地址指示,所述第二陷阱地址与所述第二地址仅相差单个位,所述第二陷阱子部分用于指示所述处理核心执行第二陷阱子例程以跳转到所述第二地址、跳转到其自身或跳转到所述第一地址。
实施例7:根据实施例6所述的装置,包括将所述程序计数器电连接到所述数据存储设备的地址总线,其中在所述地址总线或所述程序计数器中的一者或多者处发生单个固定型低位故障的情况下,所述第二陷阱子部分防止跳转到未知地址。
实施例8:根据实施例1至7中任一项所述的装置,包括监视定时器,所述监视定时器用于在运行时间期间检测所述程序计数器的故障或者将所述程序计数器电连接到所述数据存储设备的地址总线的故障,所述监视定时器用于响应于在运行时间期间检测到所述程序计数器的所述故障而启动重置操作。
实施例9:根据实施例8所述的装置,其中独立于所述子例程来实现所述监视定时器。
实施例10:根据实施例8和9中任一项所述的装置,所述监视定时器用于独立于所述处理核心来启动所述重置操作。
实施例11:根据实施例8至10中任一项所述的装置,其中所述监视定时器在与所述处理核心分离的硬件中实现。
实施例12:根据实施例1至11中任一项所述的装置,包括将所述程序计数器电连接到所述数据存储设备的地址总线,其中在所述地址总线或所述程序计数器中的一者或多者处发生单个固定型高位故障的情况下,所述第一陷阱子部分防止跳转到未知地址。
实施例13:一种系统,包括:安全关键设备;和处理电路,所述处理电路用于控制所述安全关键设备,所述处理电路包括:处理核心,所述处理核心包括用于循环通过地址的程序计数器;数据存储设备,所述数据存储设备包括存储在其上的计算机可读指令,所述计算机可读指令包括所述计算机可读指令的子部分,所述子部分用于指示所述处理核心执行子例程,所述子部分包括:第一子部分,所述第一子部分在所述数据存储设备内由所述地址中的第一地址指示的第一位置处;第一陷阱子部分,所述第一陷阱子部分在所述数据存储设备内的第一陷阱位置处,所述第一陷阱位置由所述地址中的相应第一陷阱地址指示,所述第一陷阱地址与所述第一地址仅相差单个相应位,所述第一陷阱子部分用于指示所述处理核心执行第一陷阱子例程以跳转到所述第一地址或跳转回到其自身;第二子部分,所述第二子部分在所述数据存储设备内由所述地址中的第二地址指示的第二位置处,所述第二地址是所述第一地址的一的补数,所述第一子部分用于指示所述处理核心执行第一子例程以跳转到所述第二地址;和第二陷阱子部分,所述第二陷阱子部分在所述数据存储设备内的第二陷阱位置处,所述第二陷阱位置由所述地址中的相应第二陷阱地址指示,所述第二陷阱地址与所述第二地址仅相差单个相应位,所述第二陷阱子部分用于指示所述处理核心执行第二陷阱子例程以跳转到所述第二地址、跳转到其自身或跳转到所述第一地址。
实施例14:根据实施例13所述的系统,其中所述第一陷阱子部分和所述第二陷阱子部分的数量各自都等于所述地址的位数量。
实施例15:一种操作处理电路的方法,所述方法包括:以第一地址在程序计数器中启动地址的循环,所述第一地址对应于由数据存储设备存储在第一位置处的计算机可读指令的第一子部分;响应于所述程序计数器中的所述第一地址以及所述程序计数器或地址总线的第一类型的固定型故障,执行对应于所述计算机可读指令的第一陷阱子部分的第一陷阱子例程以跳转到所述第一地址或跳转到其自身;响应于所述程序计数器中的所述第一地址以及所述地址总线没有所述第一类型的固定型故障,执行对应于所述计算机可读指令的所述第一子部分的第一子例程,以跳转到对应于所述计算机可读指令的在所述数据存储设备的第二位置处的第二子部分的第二地址;以及响应于所述程序计数器中的所述第二地址以及所述程序计数器或所述地址总线的第二类型的固定型故障,执行对应于所述计算机可读指令的第二陷阱子部分的第二陷阱子例程以跳转到所述第二地址、跳转到所述第一地址或跳转到其自身。
实施例16:根据实施例15所述的方法,包括响应于所述程序计数器中的所述第二地址或所述地址总线没有所述第二类型的固定型故障,执行对应于所述计算机可读指令的第二子部分的第二子例程,以跳转到对应于所述计算机可读指令的应用程序子部分和应用程序子例程的应用程序开始地址。
实施例17:根据实施例15和16中任一项所述的方法,包括:在所述处理电路的运行时间期间检测所述处理电路的操作中的故障;以及响应于检测到的故障重置所述处理电路的操作。
实施例18:根据实施例17所述的方法,其中检测所述故障包括由监视定时器和诊断测试中的一者来检测所述程序计数器或所述地址总线的固定型故障。
实施例19:根据实施例15至18中任一项所述的方法,其中所述第一类型的固定型故障是固定型高故障,并且所述第二类型的固定型故障是固定型低故障。
实施例20:根据实施例15至19中任一项所述的方法,其中以所述第一地址在所述程序计数器中启动所述地址的所述循环包括以包括连续的一系列全零的所述第一地址在所述程序计数器中启动所述地址的所述循环。
实施例21:一种处理电路,包括:处理核心,所述处理核心包括被配置为循环通过地址的程序计数器;和数据存储设备,所述数据存储设备包括存储在其上的计算机可读指令,所述计算机可读指令包括所述计算机可读指令的子部分,所述计算机可读指令的所述子部分被配置为指示所述处理核心执行子例程,所述计算机可读指令的每个子部分对应于所述子例程中的一个子例程,所述计算机可读指令的所述子部分在所述数据存储设备内的位置与所述地址相关联,所述子部分包括:第一子部分,所述第一子部分在所述数据存储设备内由第一地址指示的第一位置处;和第一陷阱子部分,所述第一陷阱子部分在所述数据存储设备内的第一陷阱位置处,所述第一陷阱位置由第一陷阱地址指示,所述第一陷阱地址与所述第一地址仅相差单个位,所述第一陷阱子部分被配置为指示所述处理核心执行第一陷阱子例程以跳转到所述第一地址或跳转到所述第一陷阱地址中的一个第一陷阱地址。
实施例22:根据实施例21所述的处理电路,其中所述第一地址是连续的一系列零。
实施例23:根据实施例21和22中任一项所述的处理电路,其中所述子部分还包括:第二子部分,所述第二子部分在所述数据存储设备内由第二地址指示的第二位置处,所述第二地址是所述第一地址的一的补数,所述第一子部分被配置为指示所述处理核心执行第一子例程以跳转到所述第二地址;和第二陷阱子部分,所述第二陷阱子部分在所述数据存储设备内的第二陷阱位置处,所述第二陷阱位置由第二陷阱地址指示,所述第二陷阱地址与所述第二地址仅相差单个位,所述第二陷阱子部分被配置为指示所述处理核心执行第二陷阱子例程以跳转到所述第二地址或跳转回到所述第二陷阱地址。
实施例24:根据实施例23所述的处理电路,其中所述第一地址和所述第二地址中的一者是连续的一系列零,并且所述第一地址和所述第二地址中的另一者是连续的一系列一。
实施例25:根据实施例21至24中任一项所述的处理电路,还包括:监视定时器,所述监视定时器被配置为在运行时间期间检测所述程序计数器的固定型故障,所述监视定时器被配置为响应于检测到固定型故障而启动重置操作。
实施例26:根据实施例25所述的处理电路,其中独立于所述子例程来实现所述监视定时器,以防止所述固定型故障干扰所述监视定时器的操作。
实施例27:根据实施例25和26中任一项所述的处理电路,其中所述监视定时器被配置为独立于所述处理核心来启动和启动所述重置操作。
实施例28:根据实施例25至27中任一项所述的处理电路,其中所述监视定时器在与所述处理核心分离的硬件中实现。
实施例29:一种安全关键系统,包括:安全关键设备;和处理电路,所述处理电路被配置为控制所述安全关键设备,所述处理电路包括:处理核心,所述处理核心包括被配置为循环通过地址的程序计数器;数据存储设备,所述数据存储设备包括存储在其上的计算机可读指令,所述计算机可读指令包括所述计算机可读指令的子部分,所述子部分被配置为指示所述处理核心执行子例程,所述子部分包括:第一子部分,所述第一子部分在所述数据存储设备内由所述地址中的第一地址指示的第一位置处;第一陷阱子部分,所述第一陷阱子部分在所述数据存储设备内的第一陷阱位置处,所述第一陷阱位置由所述地址的第一陷阱地址指示,所述第一陷阱地址与所述第一地址仅相差单个位,所述第一陷阱子部分被配置为指示所述处理核心执行第一陷阱子例程以跳转到所述第一地址或跳转回到所述第一陷阱地址;第二子部分,所述第二子部分在所述数据存储设备内由所述地址中的第二地址指示的第二位置处,所述第二地址是所述第一地址的一的补数,所述第一子部分被配置为指示所述处理核心执行第一子例程以跳转到所述第二地址;和第二陷阱子部分,所述第二陷阱子部分在所述数据存储设备内的第二陷阱位置处,所述第二陷阱位置由所述地址的第二陷阱地址指示,所述第二陷阱地址与所述第二地址仅相差单个位,所述第二陷阱子部分被配置为指示所述处理核心执行第二陷阱子例程以跳转到所述第二地址或跳转回到所述第二陷阱地址。
实施例30:根据实施例29所述的安全关键系统,其中所述第一陷阱子部分和所述第二陷阱子部分的数量各自都等于所述地址的位数量。
实施例31:一种操作处理电路的方法,所述方法包括:以第一地址在程序计数器中启动地址的循环,所述第一地址对应于由数据存储设备存储在第一位置处的计算机可读指令的第一子部分;响应于所述程序计数器中的所述第一地址以及所述程序计数器的第一类型的固定型故障,执行对应于所述计算机可读指令的第一陷阱子部分的第一陷阱子例程以跳转到所述第一地址;响应于所述程序计数器中的所述第一地址没有所述第一类型的固定型故障,执行对应于所述计算机可读指令的所述第一子部分的第一子例程,以跳转到对应于所述计算机可读指令的在所述数据存储设备的第二位置处的第二子部分的第二地址;以及响应于所述程序计数器中的所述第二地址以及所述程序计数器的第二类型的固定型故障,执行对应于所述计算机可读指令的第二陷阱子部分的第二陷阱子例程以跳转到所述第二地址。
实施例32:根据实施例31所述的方法,还包括:响应于所述程序计数器中的所述第二地址没有所述第二类型的固定型故障,执行对应于所述计算机可读指令的第二子部分的第二子例程,以跳转到对应于所述计算机可读指令的引导子部分和引导子例程的引导地址。
实施例33:根据实施例31和32中任一项所述的方法,还包括:在所述处理电路的运行时间期间检测所述处理电路的操作中的故障;以及响应于检测到的故障重置所述处理电路的操作。
实施例34:根据实施例33所述的方法,其中检测所述故障包括由监视定时器和诊断测试中的一者来检测所述程序计数器的固定型故障。
实施例35:根据实施例31至34中任一项所述的方法,其中所述第一类型的固定型故障是固定型低故障,并且所述第二类型的固定型故障是固定型高故障。
实施例36:根据实施例31至35中任一项所述的方法,其中以所述第一地址在所述程序计数器中启动所述地址的所述循环包括以包括连续的一系列全零的所述第一地址在所述程序计数器中启动所述地址的所述循环。
结论
如在本公开中使用的,术语“模块”或“部件”可以是指执行模块或部件的动作的特定硬件实施方式和/或可以存储在计算系统的通用硬件(例如,计算机可读介质、处理设备等)上并且/或者由通用硬件执行的软件对象或软件例程。在一些示例中,本公开中描述的不同部件、模块、引擎和服务可以实现为在计算系统上执行的对象或进程(例如,作为单独的线程)。虽然本公开中描述的系统和方法中的一些系统和方法通常被描述为在软件中实现(存储在通用硬件上并且/或者由通用硬件执行),但是特定硬件实施方式或软件和特定硬件实施方式的组合也是可能且可以预期的。
如本公开内容所用,涉及多个元件的术语“组合”可包括所有元件的组合或某些元件的各种不同子组合中的任何一种组合。例如,短语“A、B、C、D或它们的组合”可指A、B、C或D中的任一者;A、B、C和D中的每个的组合;以及A、B、C或D的任何子组合,诸如A、B和C;A、B和D;A、C和D;B、C和D;A和B;A和C;A和D;B和C;B和D;或C和D。
用于本公开,尤其是所附权利要求书中的术语(例如,所附权利要求书的主体)通常旨在作为“开放”术语(例如,术语“包括”应被解释为“包括但不限于”,术语“具有”应被解释为“至少具有”,术语“包括”应被解释为“包括但不限于”等)。
另外,如果预期特定数量的引入的权利要求表述,则在权利要求中将明确叙述此类意图,并且在不进行此类表述的情况下,不存在此类意图。例如,作为对理解的帮助,以下所附权利要求书可包含使用介绍性短语“至少一个”和“一个或多个”来引入权利要求表述。然而,使用此类短语不应理解为暗示由不定冠词“一个”或“一种”引入的权利要求表述将包含此类引入的权利要求表述的任何特定权利要求限定于仅包含一个此类表述的示例,即使当相同的权利要求包括介绍性短语“一个或多个”或“至少一个”和不定冠词,诸如“一个”或“一种”(例如,“一个”和/或“一种”可被解释为指的是“至少一个”或“一个或多个”);使用定冠词来引入权利要求叙述也是如此。
此外,即使明确列举了所引入的权利要求表述的特定编号,本领域的技术人员也将认识到,此类表述应被解释为意指至少所列举的数目(例如,在不存在其他修饰语的情况下,“两个表述”的基本表述是指至少两个表述或两个或更多个表述)。此外,在使用类似于“A、B和C等中的至少一者”或“A、B和C等中的一者或多者”的惯例的那些情况下,通常此类构造旨在仅包括A、仅包括B、仅包括C、包括A和B两者、包括A和C两者、包括B和C两者或包括A、B和C三者等等。
此外,无论在说明书、权利要求书或附图中,呈现两个或更多个替代性术语的任何分离的词或措辞应当理解为考虑包括该术语中的一个术语、该术语中的任意一个术语或两个术语的可能性。例如,短语“A或B”应理解为包括“A”或“B”或“A和B”的可能性。
虽然本公开关于某些图示示例描述了本发明,但本领域的普通技术人员将认识到并理解本发明不受此限制。相反,在不脱离下文所要求保护的本发明的范围及其法律等同形式的情况下,可对图示示例和所述示例进行许多添加、删除和修改。此外,来自一个示例的特征可与另一个示例的特征组合,同时仍被包括在发明人所设想的本发明的范围内。

Claims (20)

1.一种装置,包括:
处理核心,所述处理核心包括用于循环通过地址的程序计数器;和
数据存储设备,所述数据存储设备包括存储在其上的计算机可读指令,所述计算机可读指令包括用以指示所述处理核心执行子例程的所述计算机可读指令的子部分,所述计算机可读指令的每个子部分对应于所述子例程中的一个子例程,所述计算机可读指令的所述子部分在所述数据存储设备内的位置与所述地址相关联,所述子部分包括:
第一子部分,所述第一子部分位于所述数据存储设备内由第一地址指示的第一位置处;和
第一陷阱子部分,所述第一陷阱子部分位于所述数据存储设备内的第一陷阱位置处,所述第一陷阱子部分由相应第一陷阱地址指示,所述第一陷阱地址与所述第一地址仅相差单个位,所述第一陷阱子部分用于指示所述处理核心执行相应第一陷阱子例程以跳转到所述第一地址或跳转到其自身中的一者。
2.根据权利要求1所述的装置,其中所述第一地址是连续的一系列零。
3.根据权利要求1所述的装置,其中所述第一地址包括多个位,所述第一陷阱地址中的每个第一陷阱地址与所述第一地址相差单个相应位。
4.根据权利要求1所述的装置,其中所述子部分包括:
第二子部分,所述第二子部分位于所述数据存储设备内由第二地址指示的第二位置处,所述第二地址是所述第一地址的一的补数,所述第一子部分用于指示所述处理核心执行第一子例程以跳转到所述第二地址;和
第二陷阱子部分,所述第二陷阱子部分位于所述数据存储设备内的第二陷阱位置处,所述第二陷阱位置由第二陷阱地址指示,所述第二陷阱地址与所述第二地址仅相差单个位,所述第二陷阱子部分用于指示所述处理核心执行第二陷阱子例程以跳转到所述第二地址或跳转到其自身。
5.根据权利要求4所述的装置,其中所述第一地址和所述第二地址中的一者是连续的一系列零,并且所述第一地址和所述第二地址中的另一者是连续的一系列一。
6.根据权利要求1所述的装置,其中所述子部分包括:
第二子部分,所述第二子部分位于所述数据存储设备内由第二地址指示的第二位置处,所述第二地址是所述第一地址的一的补数,所述第一子部分用于指示所述处理核心执行第一子例程以跳转到所述第二地址;和
第二陷阱子部分,所述第二陷阱子部分位于所述数据存储设备内的第二陷阱位置处,所述第二陷阱位置由第二陷阱地址指示,所述第二陷阱地址与所述第二地址仅相差单个位,所述第二陷阱子部分用于指示所述处理核心执行第二陷阱子例程以跳转到所述第二地址、跳转到其自身或跳转到所述第一地址。
7.根据权利要求6所述的装置,包括将所述程序计数器电连接到所述数据存储设备的地址总线,其中在所述地址总线或所述程序计数器中的一者或多者处发生单个固定型低位故障的情况下,所述第二陷阱子部分防止跳转到未知地址。
8.根据权利要求1所述的装置,包括监视定时器,所述监视定时器用于在运行时间期间检测所述程序计数器的故障或者将所述程序计数器电连接到所述数据存储设备的地址总线的故障,所述监视定时器用于响应于在运行时间期间检测到所述程序计数器的所述故障而启动重置操作。
9.根据权利要求8所述的装置,其中独立于所述子例程来实现所述监视定时器。
10.根据权利要求8所述的装置,所述监视定时器用于独立于所述处理核心来启动所述重置操作。
11.根据权利要求8所述的装置,其中所述监视定时器在与所述处理核心分离的硬件中实现。
12.根据权利要求1所述的装置,包括将所述程序计数器电连接到所述数据存储设备的地址总线,其中在所述地址总线或所述程序计数器中的一者或多者处发生单个固定型高位故障的情况下,所述第一陷阱子部分防止跳转到未知地址。
13.一种系统,包括:
安全关键设备;和
处理电路,所述处理电路用于控制所述安全关键设备,所述处理电路包括:
处理核心,所述处理核心包括用于循环通过地址的程序计数器;
数据存储设备,所述数据存储设备包括存储在其上的计算机可读指令,所述计算机可读指令包括所述计算机可读指令的子部分,所述子部分用于指示所述处理核心执行子例程,所述子部分包括:
第一子部分,所述第一子部分位于所述数据存储设备内由所述地址中的第一地址指示的第一位置处;
第一陷阱子部分,所述第一陷阱子部分位于所述数据存储设备内的第一陷阱位置处,所述第一陷阱位置由所述地址中的相应第一陷阱地址指示,所述第一陷阱地址与所述第一地址仅相差单个相应位,所述第一陷阱子部分用于指示所述处理核心执行第一陷阱子例程以跳转到所述第一地址或跳转回到其自身;
第二子部分,所述第二子部分位于所述数据存储设备内由所述地址中的第二地址指示的第二位置处,所述第二地址是所述第一地址的一的补数,所述第一子部分用于指示所述处理核心执行第一子例程以跳转到所述第二地址;和
第二陷阱子部分,所述第二陷阱子部分位于所述数据存储设备内的第二陷阱位置处,所述第二陷阱位置由所述地址中的相应第二陷阱地址指示,所述第二陷阱地址与所述第二地址仅相差单个相应位,所述第二陷阱子部分用于指示所述处理核心执行第二陷阱子例程以跳转到所述第二地址、跳转到其自身或跳转到所述第一地址。
14.根据权利要求13所述的系统,其中所述第一陷阱子部分和所述第二陷阱子部分的数量各自都等于所述地址的位数量。
15.一种操作处理电路的方法,所述方法包括:
以第一地址在程序计数器中启动地址的循环,所述第一地址对应于由数据存储设备存储在第一位置处的计算机可读指令的第一子部分;
响应于所述程序计数器中的所述第一地址以及所述程序计数器或地址总线的第一类型的固定型故障,执行对应于所述计算机可读指令的第一陷阱子部分的第一陷阱子例程以跳转到所述第一地址或跳转到其自身;
响应于所述程序计数器中的所述第一地址以及所述地址总线没有所述第一类型的固定型故障,执行对应于所述计算机可读指令的所述第一子部分的第一子例程,以跳转到对应于所述计算机可读指令的在所述数据存储设备的第二位置处的第二子部分的第二地址;以及
响应于所述程序计数器中的所述第二地址以及所述程序计数器或所述地址总线的第二类型的固定型故障,执行对应于所述计算机可读指令的第二陷阱子部分的第二陷阱子例程以跳转到所述第二地址、跳转到所述第一地址或跳转到其自身。
16.根据权利要求15所述的方法,包括响应于所述程序计数器中的所述第二地址或所述地址总线没有所述第二类型的固定型故障,执行对应于所述计算机可读指令的第二子部分的第二子例程,以跳转到对应于所述计算机可读指令的应用程序子部分以及应用程序子例程的应用程序开始地址。
17.根据权利要求15所述的方法,包括:
在所述处理电路的运行时间期间检测所述处理电路的操作中的故障;以及
响应于检测到的故障重置所述处理电路的操作。
18.根据权利要求17所述的方法,其中检测所述故障包括由监视定时器和诊断测试中的一者来检测所述程序计数器或所述地址总线的固定型故障。
19.根据权利要求15所述的方法,其中所述第一类型的固定型故障是固定型高故障,并且所述第二类型的固定型故障是固定型低故障。
20.根据权利要求15所述的方法,其中以所述第一地址在所述程序计数器中启动所述地址的所述循环包括以包括连续的一系列全零的所述第一地址在所述程序计数器中启动所述地址的所述循环。
CN202280014115.9A 2021-02-10 2022-02-10 计算机可读指令的陷阱子部分以及相关系统、方法和装置 Pending CN117015765A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US202163148060P 2021-02-10 2021-02-10
US63/148,060 2021-02-10
PCT/US2022/070615 WO2022174246A1 (en) 2021-02-10 2022-02-10 Trap sub-portions of computer-readable instructions and related systems, methods, and apparatuses

Publications (1)

Publication Number Publication Date
CN117015765A true CN117015765A (zh) 2023-11-07

Family

ID=80461592

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202280014115.9A Pending CN117015765A (zh) 2021-02-10 2022-02-10 计算机可读指令的陷阱子部分以及相关系统、方法和装置

Country Status (4)

Country Link
US (1) US11537401B2 (zh)
CN (1) CN117015765A (zh)
DE (1) DE112022001005T5 (zh)
WO (1) WO2022174246A1 (zh)

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4910663A (en) * 1987-07-10 1990-03-20 Tandem Computers Incorporated System for measuring program execution by replacing an executable instruction with interrupt causing instruction
CN1045655A (zh) * 1988-11-23 1990-09-26 约翰弗兰克制造公司 系统自动诊断的内核测试接口和方法
US5134701A (en) * 1989-02-10 1992-07-28 Hewlett-Packard Co. Test apparatus performing runtime replacement of program instructions with breakpoint instructions for processor having multiple instruction fetch capabilities
US5495598A (en) * 1993-12-23 1996-02-27 Unisys Corporation Stuck fault detection for branch instruction condition signals
US6134682A (en) * 1998-08-31 2000-10-17 International Business Machines Corporation Testable bus control logic circuitry and method for using same
US6370655B1 (en) * 1998-10-19 2002-04-09 Winbond Electronics Corp. Method and system for reversed-sequence code loading into partially defective memory
DE10229817B4 (de) 2002-06-28 2007-05-24 Robert Bosch Gmbh Verfahren und Vorrichtung zum Ablegen eines Computerprogramms in einen Programmspeicher eines Steuergeräts
FR2877118B1 (fr) * 2004-10-22 2007-01-19 Oberthur Card Syst Sa Protection contre les attaques par generation de fautes sur les instructions de saut
US9129062B1 (en) * 2010-05-20 2015-09-08 Vmware, Inc. Intercepting subroutine return in unmodified binaries
US8615684B2 (en) * 2011-04-18 2013-12-24 Astronautics Corporation Of America High reliability processor system
US9092312B2 (en) * 2012-12-14 2015-07-28 International Business Machines Corporation System and method to inject a bit error on a bus lane
JP6605359B2 (ja) * 2016-03-02 2019-11-13 ルネサスエレクトロニクス株式会社 半導体装置及びメモリアクセス制御方法

Also Published As

Publication number Publication date
DE112022001005T5 (de) 2023-12-21
WO2022174246A1 (en) 2022-08-18
US11537401B2 (en) 2022-12-27
US20220261250A1 (en) 2022-08-18

Similar Documents

Publication Publication Date Title
CN107111600B (zh) 通信接口初始化
KR101301022B1 (ko) 암 코어 기반의 프로세서를 위한 외부 공격 방어 장치 및 이를 이용한 방법
US8990622B2 (en) Post-silicon validation using a partial reference model
WO2016048627A1 (en) Programmable ic with safety sub-system
CN111033630A (zh) 具有mbist的多处理器内核设备
US6658597B1 (en) Method and apparatus for automatic recovery of microprocessors/microcontrollers during electromagnetic compatibility (EMC) testing
JP2018160240A (ja) 安全関連のアプリケーションにおけるマイクロコントローラシステム用の安全なリセット技術
EP3961229A1 (en) Electronic device and corresponding self-test method
US9678870B2 (en) Diagnostic apparatus, control unit, integrated circuit, vehicle and method of recording diagnostic data
CN117015765A (zh) 计算机可读指令的陷阱子部分以及相关系统、方法和装置
CN114730281A (zh) 具有引脚自主浮动的定时器电路和相关系统、方法和装置
WO2013189896A1 (en) Error correction
CN106935266B (zh) 从存储器中读取配置信息的控制方法、装置和系统
Yiu Design of soc for high reliability systems with embedded processors
Unger et al. Functional Safety Test Strategy for Automotive Microcontrollers During Electro-Magnetic Compatibility Characterization
US20090228731A1 (en) System and Method for Providing a One-Step Testing Architecture
Ganesan et al. Effective pre-silicon verification of processor cores by breaking the bounds of symbolic quick error detection
US9734032B1 (en) Diagnostic coverage of registers by software
De Carvalho et al. Increasing fault coverage during functional test in the operational phase
EP1271317A1 (en) System-on-chip with time redundancy operation
Schneider et al. Basic single-microcontroller monitoring concept for safety critical systems
US7246206B2 (en) Method and device for storing a computer program in a program memory of a control unit
CN116700786B (zh) 一种微控制器及防止微控制器Flash误擦写的方法
Sguigna Mitigating jtag as an attack surface
CN105718326A (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