System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及重复线程的调度。
技术介绍
1、许多现代处理系统具有两个或更多个并行执行单元,例如同一芯片上的独立cpu核,使得能够在不同的执行单元上并行运行相应的指令序列。每个指令序列可以包括一个或多个线程。通常,这种布置用于在执行单元中的每个执行单元上彼此并行地运行不同的指令序列,以便增加每单位时间可以执行的独特处理操作的数量。
2、然而,也有可能使用执行单元(例如核)中的第二执行单元来运行在执行单元中的第一执行单元上运行的“关键”线程的重复实例。这可以作为“安全检查”来完成,以检查系统是否已经无误地执行了关键线程。即,在具有至少两个并行执行单元的处理系统中,除了不同线程的并行执行之外,一个执行单元还可以用于运行在另一个执行单元上运行的线程的冗余实例,以便检查系统是否按预期工作(注意,并行执行在这里不是指以分时方式通过相同的执行单元交错线程,而是指在独立的硬件上执行)。如果线程的两个实例产生相同的结果,则这证明处理器正在工作,但如果不是,则这表明存在硬件或软件故障(处理系统的操作中的实际故障,而不仅仅是由于开发者的错误造成的漏洞)。例如,在处理系统的硬件中可能已经出现了硬件故障,或者当保存在存储器或寄存器中时,在数据或代码中可能已经出现了随机位翻转(例如,由宇宙辐射引起的宇宙位翻转)。
3、在自动或半自动交通工具(例如汽车、飞机或火车)上的处理系统中可以找到这种检查的示例应用,其中待检查的线程可以被配置成执行用于控制交通工具的运动,或者通过交通工具的用户界面(例如通过交通工具的平视显示器hud)输出关键
4、某些标准可能实际上要求在并行硬件上针对某些进程运行重复进程。例如,asil-d(汽车安全完整性等级d)是国际标准iso 26262下的规范,其定义了与用于控制道路交通工具的汽车系统相关必须采取的某些安全措施。
5、更一般地说,针对本目的的“关键”意味着对于所讨论的线程正在运行的期望应用是关键的。特别地,“关键”在本文中可以指期望运行重复实例(检查线程)的任何线程,并且对照由检查线程执行的相同操作的对应结果来检查由关键线程执行的至少一个操作的至少一个结果。类似地,此上下文中的术语“安全”或“安全检查”仅指借助于重复执行和比较结果来预防关键线程执行中的错误。如本文中使用的术语“关键”和“安全”不一定意味着人类或其他生物的安全处于危险中,尽管这些肯定是安全关键应用的示例。
6、处理系统可以在不同时间运行关键线程和非关键线程两者。非关键线程是不需要为其运行冗余实例的线程。关键线程在不同时间跨系统的多个执行单元(例如核)被调度到非关键线程中。
7、按照惯例,为了对关键线程执行检查,则两个线程(关键线程及其检查线程)以“锁步”方式执行。这意味着它们在完全相同的时间被执行。以锁步方式执行两个线程有助于捕获代码中同一时间、同一点出现的错误。在实践中,两个线程可以彼此偏移小的预定数量的时钟周期,以避免错误在同一时间和同一状态击中两个核(如果接受错误仅出现在一个执行单元中的假设,则在完全相同的时间执行是可以的,但如果在两个执行单元中出现相同的错误,则错误将被掩蔽,这就是在实践中线程中的一个线程通常相对于另一个线程稍微延迟一点的原因)。
8、锁步执行可以由在处理系统上运行的操作系统(os)来设置,或者可以借助于对核进行锁步的专用硬件来实现。
技术实现思路
1、然而,对两个线程的执行进行锁步的问题在于设置锁步执行会引入时延。如果两个空闲执行单元同时都可用,则关键线程的两个实例只能被调度为同时(或者在彼此的几个周期内)开始执行。然而,如果处理系统的大多数或所有执行单元都忙于执行非关键线程,则执行单元中的两个执行单元不太可能只是碰巧同时变为空闲。如果是这种情况,则按照惯例,os或锁步硬件将不得不迫使两个执行单元同时变为空闲。由于不同非关键线程在不同执行单元上的执行不太可能在时间上对齐,这意味着故意阻止对一个执行单元的调度,即故意在一个执行单元的最后一个非关键线程结束后将其保持在空闲状态,同时等待另一个执行单元变为空闲,以便人为地创建其中两个执行单元空闲并且关键线程的两个实例可以同时开始的窗口。因此,这将导致引入额外的空闲时间,从而影响处理系统的整体处理吞吐量。
2、期望提供一种系统,该系统使得能够调度关键线程及其对应检查线程,而不会引入严格锁步的空闲时间惩罚,但同时确保检查线程仍在关键线程的某个安全时间窗口内执行。
3、根据本文公开的第一方面,提供了一种处理系统,其包括多个并行执行单元,每个并行执行单元可操作以执行相应的线程系列,其中由执行单元中的至少一些执行单元执行的线程中的至少一些线程是未被指定为关键的非关键线程。该处理系统还包括请求缓冲存储装置,该请求缓冲存储装置可操作以接收请求,该请求指示由执行单元中的第一执行单元执行的相应系列中的线程中的一个线程被指定为关键线程;以及安全线程调度电路,该安全线程调度电路被布置成从请求缓冲存储装置读取请求,并且作为响应,调度作为关键线程的副本的检查线程在多个执行单元中除第一执行单元之外的第二执行单元上执行。该处理系统还包括结果缓冲存储装置,该结果缓冲存储装置被布置成缓冲以下中的一者:第一结果,该第一结果是在第一执行单元上执行关键线程的结果;以及第二结果,该第二结果是在第二执行单元上执行检查线程的结果;以及比较电路,该比较电路被布置成将来自结果缓冲存储装置的第一结果和第二结果中的所述一个结果与第一结果和第二结果中的另一个结果进行比较,并且如果根据所述比较,第一结果和第二结果不匹配,则产生错误信号。该请求包括安全时间窗口的指示。安全线程调度电路被配置成检测执行单元中的至少一个执行单元何时空闲,并且如果在安全时间窗口到期时执行单元中没有一个执行单元被检测为空闲,则中断在执行单元中的非空闲执行单元上执行的非关键线程中的一个非关键线程,并且选择非空闲执行单元作为第二执行单元来执行检查线程,以代替中断的线程。
4、所公开的系统因此允许关键线程的主实例在其重复实例(检查线程)之前开始执行。所公开的系统因此消除了人为地将一个执行单元保持在空闲状态以等待另一个执行单元同时变为空闲的需要。这之所以成为可能,是因为安全窗口提供了对另一个执行单元在足够量的时间内未变为空闲以检查关键线程的结果的情况的防范,而不是要求锁步。换句话说,中断非关键线程的能力确保了检查线程将总是在足够量的时间内被调度。安全时间窗口的值可以取决于所讨论的特定应用,并且可以是可编程的。
5、如果(通常情况下)在开始执行关键线程的主实例时第二执行单元不立即可用,则取决于具体实现,检查线程(关键线程的次实例或重复实例)可以在直到时间窗口结束的任何时间中断非关键线程中的一个非关键线程,在此之本文档来自技高网...
【技术保护点】
1.一种处理系统,所述处理系统包括:
2.如权利要求1所述的处理系统,其中所述安全线程调度电路被配置成:如果在从所述请求缓冲存储装置读取所述请求时所述执行单元中的一个执行单元被检测为空闲,则随即选择所述执行单元中的空闲执行单元作为所述第二执行单元来开始执行所述检查线程;但是如果在读取所述请求时所述执行单元中没有一个执行单元被检测为空闲,则等待并检测在所述安全时间窗口到期之前是否有一个执行单元变为新空闲,并且如果有一个执行单元变为新空闲,则随即选择新空闲的执行单元作为所述第二执行单元来开始执行所述检查线程;但是如果在所述安全时间窗口到期时没有一个执行单元变为空闲,则执行对在所述执行单元中的非空闲执行单元上执行的所述非关键线程中的一个非关键线程的所述中断,并且选择所述非空闲执行单元作为所述第二执行单元来开始执行所述检查线程,以代替中断的非空闲线程。
3.如权利要求2所述的处理系统,其中所述安全线程调度电路被配置成:如果所述检查线程被急切地执行,则允许所述检查线程被中断,如果对所述检查线程的所述执行在所述安全时间窗口到期之前开始执行,则允许所述检查线程被急切地执
4.如权利要求3所述的处理系统,其中所述安全线程调度电路被配置成:如果一个或多个另外的线程在重新调度时限到期时还没有完成,则通过在所述第二执行单元上恢复对所述检查线程的所述执行来中断所述一个或多个另外的线程中的一个线程,否则在所述一个或多个另外的线程完成之后恢复对所述检查线程的执行;所述重新调度时限是:
5.如权利要求3所述的处理系统,其中所述安全线程调度电路被配置成:当急切执行的检查线程被另一线程中断时,将所述急切执行的检查线程迁移到所述执行单元中除所述第一执行单元和所述第二执行单元之外的另一个执行单元。
6.如权利要求2至5中任一项所述的处理系统,其中所述安全线程调度电路被配置成:如果在所述安全时间窗口到期之前,所述执行单元中没有一个执行单元变为空闲,也没有发现所述执行单元正在执行非关键线程,则引发紧急情况。
7.如权利要求1至5中任一项所述的处理系统,其中所述第一结果包括由所述关键线程执行的存储器访问的指示,并且所述第二结果包括由所述检查线程执行的存储器访问的指示。
8.如权利要求1至5中任一项所述的处理系统,其中所述第一结果和所述第二结果以压缩形式输出和比较。
9.如权利要求1至5中任一项所述的处理系统,所述处理系统被配置成响应于所述错误信号以:
10.如权利要求1至5中任一项所述的处理系统,其中:
11.如权利要求10所述的处理系统,其中所述结果缓冲存储装置包括用于所述多个执行单元中的每个执行单元的相应存储器访问队列,并且每个存储器访问队列包括用于缓冲在同一执行单元上执行的不同线程的结果的多个FIFO。
12.如权利要求1至5中任一项所述的处理系统,其中所述处理系统在集成电路上的硬件中体现。
13.一种使用集成电路制造系统来制造如权利要求1至5中任一项所述的处理系统的方法。
14.一种集成电路定义数据集,当在集成电路制造系统中被处理时,所述集成电路定义数据集将所述集成电路制造系统配置成制造如权利要求1至5中的任一项所述的处理系统。
15.一种计算机可读存储介质,所述计算机可读存储介质上存储有如权利要求1至5中任一项所述的处理系统的计算机可读描述,当在集成电路制造系统中被处理时,所述计算机可读描述使得所述集成电路制造系统制造体现所述处理系统的集成电路。
16.一种集成电路制造系统,所述集成电路制造系统被配置成制造如权利要求1至5中任一项所述的处理系统。
17.一种方法,所述方法包括:
18.一种图形处理系统,所述图形处理系统被配置成执行如权利要求17所述的方法。
19.一种计算机可读存储介质,所述计算机可读存储介质上编码有计算机可读代码,所述计算机可读代码被配置成在运行所述代码时使得如权利要求17所述的方法得以执行。
...【技术特征摘要】
1.一种处理系统,所述处理系统包括:
2.如权利要求1所述的处理系统,其中所述安全线程调度电路被配置成:如果在从所述请求缓冲存储装置读取所述请求时所述执行单元中的一个执行单元被检测为空闲,则随即选择所述执行单元中的空闲执行单元作为所述第二执行单元来开始执行所述检查线程;但是如果在读取所述请求时所述执行单元中没有一个执行单元被检测为空闲,则等待并检测在所述安全时间窗口到期之前是否有一个执行单元变为新空闲,并且如果有一个执行单元变为新空闲,则随即选择新空闲的执行单元作为所述第二执行单元来开始执行所述检查线程;但是如果在所述安全时间窗口到期时没有一个执行单元变为空闲,则执行对在所述执行单元中的非空闲执行单元上执行的所述非关键线程中的一个非关键线程的所述中断,并且选择所述非空闲执行单元作为所述第二执行单元来开始执行所述检查线程,以代替中断的非空闲线程。
3.如权利要求2所述的处理系统,其中所述安全线程调度电路被配置成:如果所述检查线程被急切地执行,则允许所述检查线程被中断,如果对所述检查线程的所述执行在所述安全时间窗口到期之前开始执行,则允许所述检查线程被急切地执行;对所述检查线程的所述中断包括调度一个或多个另外的关键或非关键线程在所述第二执行单元上执行,以代替所述检查线程。
4.如权利要求3所述的处理系统,其中所述安全线程调度电路被配置成:如果一个或多个另外的线程在重新调度时限到期时还没有完成,则通过在所述第二执行单元上恢复对所述检查线程的所述执行来中断所述一个或多个另外的线程中的一个线程,否则在所述一个或多个另外的线程完成之后恢复对所述检查线程的执行;所述重新调度时限是:
5.如权利要求3所述的处理系统,其中所述安全线程调度电路被配置成:当急切执行的检查线程被另一线程中断时,将所述急切执行的检查线程迁移到所述执行单元中除所述第一执行单元和所述第二执行单元之外的另一个执行单元。
6.如权利要求2至5中任一项所述的处理系统,其中所述安全线程调度电路被配置成:如果在所述安全时间窗口到期之前,所述执行单元中...
【专利技术属性】
技术研发人员:R·卡马拉吉,V·卡迪亚拉,J·安德鲁,O·奥库尔特,
申请(专利权)人:想象技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。