CN104765587B - 用于使处理器同步到相同的计算点的系统和方法 - Google Patents
用于使处理器同步到相同的计算点的系统和方法 Download PDFInfo
- Publication number
- CN104765587B CN104765587B CN201410008511.8A CN201410008511A CN104765587B CN 104765587 B CN104765587 B CN 104765587B CN 201410008511 A CN201410008511 A CN 201410008511A CN 104765587 B CN104765587 B CN 104765587B
- Authority
- CN
- China
- Prior art keywords
- cpu
- module
- processor
- value
- signal
- 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
- 230000001360 synchronised effect Effects 0.000 title claims abstract description 80
- 238000000034 method Methods 0.000 title claims abstract description 74
- 238000012545 processing Methods 0.000 claims abstract description 20
- 230000004044 response Effects 0.000 claims description 17
- 230000006870 function Effects 0.000 claims description 13
- 230000036541 health Effects 0.000 description 114
- 230000003862 health status Effects 0.000 description 26
- 230000006854 communication Effects 0.000 description 21
- 238000004891 communication Methods 0.000 description 21
- 238000012544 monitoring process Methods 0.000 description 16
- 238000001514 detection method Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 9
- 238000003860 storage Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 6
- 238000009825 accumulation Methods 0.000 description 3
- 238000007689 inspection Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000007175 bidirectional communication Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 238000005538 encapsulation Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000001052 transient effect Effects 0.000 description 2
- 230000004888 barrier function Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011022 operating instruction Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17325—Synchronisation; Hardware support therefor
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/522—Barrier synchronisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
Abstract
本申请提供一种用于使处理器同步到相同的计算点的系统和方法。用于同步中央处理单元(CPU)的系统包括将第一存储器地址写至第一寄存器的第一CPU和将第二存储器地址写至第二寄存器的第二CPU。该系统进一步包括基于第一存储器地址和第二存储器地址将第一值写至第三寄存器的第一逻辑“与”模块和基于第一存储器地址和第二存储器地址将第二值写至第四寄存器的第二逻辑“与”模块。该系统还包括调度器模块,该调度器模块基于第一值和第二值选择性地生成处理器同步信号。
Description
技术领域
本公开内容涉及容错故障安全计算机系统。
背景技术
该部分提供与本公开内容相关的背景信息,该背景信息不一定是现有技术。
本文提供的背景描述是为了概括地呈现本公开内容的背景。当前命名的发明人的工作,就其在该背景部分中描述的范围以及不可能另外成为提交时的现有技术的描述的方面而言,既不明确地也不隐含地被认为是相对于本公开内容的现有技术。
外部安全系统,如轨道系统,可以包括被配置为实现安全应用的容错故障安全计算机系统。该容错故障安全计算机系统可以包括多个硬件组件,该多个硬件组件以电气方式和以逻辑方式联接来实现安全应用。安全应用选择性地与安全临界硬件和软件通信。将安全临界硬件和软件配置为控制轨道系统的安全相关功能。
例如,在轨道系统上行驶的火车包括制动系统。该制动系统配置为实现至少一个安全相关功能,如制动功能。该制动系统包括制动器和被配置为对该制动器进行促动的软件。该软件接收指令来对该制动器进行促动。例如,火车的驾驶员可以操作制动系统用户界面,以指示该软件对该制动器进行促动。该轨道系统的错误组件可以定期地生成差错指令来对该制动器进行促动。相应地,被配置为验证由外部安全系统接收的指令的容错故障安全计算机系统是期望的。
过去的中央处理单元(CPU)有被指令锁步的能力。例如,底板或总线上的每个指令和数据会是相同的。然而,现代CPU不再是决定性的。由于今天使用的多线程和缓存技术,运行相同代码的多个CPU可以不以完全相同的顺序运行。进一步地,今天的处理器的频率远超过过去几代CPU。于是,需要一种用于使CPU同步到相同的计算点的系统和方法。
发明内容
该部分提供本公开内容的一般概括,并且不是本公开内容的全部范围或本公开内容的全部特征的全面公开。
一种用于同步中央处理单元(CPU)的系统包括将第一存储器地址写至第一寄存器的第一CPU和将第二存储器地址写至第二寄存器的第二CPU。所述系统进一步包括基于所述第一存储器地址和所述第二存储器地址将第一值写至第三寄存器的第一逻辑“与”模块和基于所述第一存储器地址和所述第二存储器地址将第二值写至第四寄存器的第二逻辑“与”模块。所述系统还包括调度器模块,所述调度器模块基于所述第一值和所述第二值选择性地生成处理器同步信号。
在其它特征中,一种方法包括将第一存储器地址写至第一寄存器,将第二存储器地址写至第二寄存器,基于所述第一存储器地址和所述第二存储器地址将第一值写至第三寄存器,基于所述第一存储器地址和所述第二存储器地址将第二值写至第四寄存器,以及基于所述第一值和所述第二值选择性地生成处理器同步信号。
适用性的进一步方面将从本文提供的描述中变得明显。该发明内容中的描述和特定示例旨在仅用于说明目的,而不旨在限制本公开内容的范围。
附图说明
本文描述的附图仅用于所选择实施例的说明用途,而不是用于所有可能的实现,并且不旨在限制本公开的范围。
图1是根据本公开内容原理的容错故障安全计算机系统的功能框图;
图2是根据本公开内容原理的故障安全底架的功能框图;
图3是根据本公开内容原理的实现同步模式的同步系统的功能框图;
图4是图示根据本公开内容原理的处理器同步方法的流程图;以及
图5是图示根据本公开内容原理的可替代处理器同步方法的流程图。
在附图的若干图中,相对应的附图标记始终表示相对应的部分。
具体实施方式
现在将参考附图更全面地描述示例实施例。
现在参考图1,示出示例性容错故障安全计算机系统100的功能框图。将系统100布置为与安全应用交互。例如,作为非限定示例,将系统100布置为与安全临界硬件和软件关联轨道系统通信。安全临界硬件和软件控制轨道系统的安全相关组件。例如,安全临界硬件可以联接至在轨道系统上操作的列车的制动系统。进一步,系统100也许能够根据工业认可的安全标准被验证。
安全临界硬件从安全临界软件接收数据元素,以促动制动系统的制动器。系统100与安全临界硬件和软件交互,以保证安全临界硬件和软件正根据预确定的操作标准操作。要理解,尽管仅描述列车的制动系统,但是本公开的原理适用于任何安全临界硬件和软件。用于本文描述的实施例的其它可能应用包括但不限于:飞机系统的组件、医学治疗系统的组件、油和气控制系统的组件、智能电网系统的组件、以及各种制造系统的组件。
在一些实现中,系统100从外部安全系统(如轨道系统)接收多个进入数据分组。将系统100配置为处理多个进入数据分组,并且将多个外出数据分组传递给外部安全系统的安全相关组件。例如,系统100确定多个进入数据分组中的第一分组是否是有效分组。当系统100确定第一分组是有效分组时,系统100将外出分组传递给轨道系统的至少一个安全相关组件。
第一分组包括要由轨道系统的至少一个安全相关组件行动的数据元素。数据元素可以包括传感器数据和/或输入/输出(I/O)点状态。该至少一个安全相关组件可以是与在轨道系统上行驶的列车联接的制动器。要理解,尽管仅描述外部安全系统的安全相关组件,但是第一分组可以包括要由外部安全系统的非安全相关组件行动的数据元素。根据传输协议对数据元素进行格式编排。例如,将轨道系统配置为根据预确定的封装标准将数据元素封装为可传输的分组。然后,轨道系统根据传输协议传输多个进入数据分组。
将系统100布置为接收根据传输协议传输的分组。进一步,将系统100配置为解释预确定的封装标准。然后,系统100从第一分组中提取数据元素,并且基于数据元素生成外出数据分组。外出数据分组包括基于数据元素的一组指令。尽管仅讨论指令,但是外出数据分组还可以包括控制I/O的操作指令、读取输入来搜集信息的请求、健康消息通信、对中间过程通信的请求、或其它适合的元素。该组指令包括至少一个指令,该至少一个指令指示安全临界硬件和软件中至少之一运行过程。
例如,该组指令可以指示安全临界软件运行制动过程。制动过程包括硬件制动指令。将硬件制动指令传递给安全临界硬件。安全临界硬件运行制动指令。例如,安全临界硬件施加制动。
系统100确定是否要将外出数据分组和数据元素传递给安全临界硬件和软件。例如,系统100保证多个进入数据分组中每个进入数据分组满足预确定的安全标准。预确定的安全标准包括确定轨道系统是否正根据一组预限定的操作标准操作。系统100验证多个进入数据分组中每个数据分组是由轨道系统100有意传输的。仅例如,轨道系统可以传递由轨道系统内的硬件或软件错误引起的差错进入数据分组。
安全临界硬件和软件响应于来自轨道系统的操作者的命令接收多个进入数据分组中的第一分组。安全临界硬件和软件接收多个进入数据分组中由轨道系统中的错误引起的第二分组。仅作为非限定示例,轨道系统中的错误可以包括硬件故障,如由对热或潮湿的延长暴露引起的恶化电连接。安全临界硬件和软件将包括第一分组和第二分组的多个进入数据分组传递至系统100。将系统100配置为确定是否由于轨道系统中的错误而由安全临界硬件和软件接收多个进入数据分组中的每个数据分组。
当系统100确定响应于来自操作者的命令接收多个进入数据分组之一时,系统100生成与所接收的进入数据分组对应的外出数据分组。例如,系统100基于第一分组生成第一外出数据分组。第一外出数据分组包括与第一分组内的数据元素对应的一组指令。当系统100确定第一分组是有效分组时,系统100将第一外出数据分组传递至安全临界硬件和软件。例如,系统100确定第一分组是响应于来自操作者的命令接收的。系统100将第一外出数据分组传递至安全临界硬件和软件。安全临界硬件和软件运行在第一外出数据分组中包括的那组指令。
相反,当系统100确定多个进入数据分组之一是响应于轨道系统内的错误接收的时,系统100不将外出数据分组传递至安全临界硬件和软件。例如,系统100确定第二分组是由于轨道系统中的错误的原因接收的。系统100不将与第二分组对应的外出数据分组传递至安全临界硬件和软件。因此,安全临界硬件和软件不运行与第二分组中包括的数据元素对应的指令。
进一步,系统100基于在轨道系统内发生错误的确定,生成错误指示。以此方式,由安全临界硬件和软件运行的数据元素首先被系统100验证。该验证保证轨道系统正根据预确定的安全标准操作。
在一些实现中,系统100接收多个进入数据分组中的第一分组。同时,系统100接收多个进入数据分组中的第二分组。然后,系统100对第一分组和第二分组运行表决逻辑。可以将表决逻辑实现为双二选二(2oo2)系统。下面更详细地说明该2oo2表决逻辑。系统100确定第一分组和第二分组是否相同。当系统100确定第一分组和第二分组相同时,系统100生成第一外出数据分组并且将第一外出数据分组传递至安全临界硬件和软件的至少一个组件。
然后,该至少一个组件运行在第一外出数据分组中包括的操作数据元素。相反,当第一分组和第二分组不相同时,系统100将系统100或轨道系统的至少一个组件识别为有错误。要理解,尽管描述轨道系统,但是本公开内容的原理适用于任何外部安全系统。
系统100还生成安全指示。安全指示可以表示系统100或安全临界硬件和软件内的故障。进一步,系统100指示该至少一个组件在预确定的安全状态下操作。例如,安全状态可以包括被布置为保持轨道系统的安全操作环境的一组安全状态数据元素。
安全状态数据元素包括指示轨道系统在预确定的操作模式下操作,该预确定的操作模式保证轨道系统的总体安全。仅例如,预确定的操作模式包括使在轨道系统上操作的列车停止。在一些实现中,安全状态包括禁用所有安全相关的通信接口。例如,在安全状态下操作的故障安全计算机不能够与安全临界硬件和软件通信。以此方式,在安全状态下操作的故障安全计算机不能够与不正确地指示安全临界硬件和软件。
系统100包括活跃的故障安全底架(FSC)104和待命FSC108。为了提高系统100的可用性和可靠性,活跃FSC104和待命FSC108是冗余FSC。例如,将活跃FSC104配置为运行待命FSC108的任何和全部操作。以此方式,当活跃FSC104和待命FSC108之一遇到硬件或软件故障时,活跃FSC104和待命FSC108中另一个被配置为代替故障的FSC操作。
活跃FSC104实现二选二(2oo2)表决体系结构,该二选二表决体系结构检测表决不匹配并且在发生表决不匹配时执行故障安全操作。2oo2表决体系结构包括双冗余处理和表决子系统。冗余处理和表决子系统对进入或离开活跃FSC104的分组进行表决。例如,活跃FSC104接收多个进入数据分组。活跃FSC104接收多个进入数据分组中第一分组的两个复本。
活跃FSC104确定第一分组的有效性。活跃FSC104基于第一分组是否有效的确定,连续地生成第一健康状态信号和第二健康状态信号。在一些实现中,连续地生成信号可以包括将该信号设置为第一预确定的值。然后,所连续生成的信号保持在该第一预确定的值,直到将该信号失效为第二预确定的值。
活跃FSC104将第一分组的这两个复本的每个复本进行比较。当这两个复本相同时,活跃FSC104确定第一分组是有效的。当活跃FSC104确定第一分组是有效的时,活跃FSC104连续地生成第一健康状态信号和第二健康状态信号。可以将第一健康状态信号和第二健康状态信号生效(assert)为第一值。在一些实现中,第一值等于1。在另一实现中,第一值可以是表示该FSC104是健康的一串字符。
相反,当活跃FSC104确定第一分组的这两个复本不相同时,活跃FSC104使第一健康状态信号和第二健康状态信号失效(de-assert)。要理解,第一健康状态信号和第二健康状态信号可以被失效为第二值。例如,第二值可以等于0。在另一实现中,第二值可以是表示该FSC104不健康的一串字符。如下面将更详细地描述的,活跃FSC104包括第一处理器和第二处理器。当第一处理器确定第一分组的复本是有效的时,第一处理器连续地生成第一健康状态信号。类似地,当第二处理器确定第一分组的第二复本是有效的时,第二处理器连续地生成第二健康状态信号。
活跃FSC104将第一健康状态信号和第二健康状态信号传递至系统100。系统100监视第一健康状态信号和第二健康状态信号,以确定活跃FSC104是否是健康的。例如,当系统100接收第一健康状态信号和第二健康状态信号时,系统100确定活跃FSC104是健康的。相反,当系统100未收到第一健康状态信号和第二健康状态信号之一时,系统100确定活跃FSC104是不健康的。
如下面将更详细地讨论的,系统100指示活跃FSC104在安全状态下操作,以便保持系统100的安全。要理解,尽管仅关于被失效(de-asserted)的第一状态信号和第二状态信号讨论表决不匹配,但是系统100内的任何硬件或软件故障可以导致第一状态信号和第二状态信号之一被失效。健康状态信号可以表示系统100正根据预确定的操作标准操作。以此方式,健康状态信号表示系统100是健康的。
当活跃FSC104确定第一分组的这两个复本不相同时,活跃FSC104确定已经发生表决错误。活跃FSC104根据已经发生表决错误的确定,生成错误信号。该错误信号表示系统100内检测到的错误。该错误可以由系统100内或外部安全系统内的硬件或软件故障引起。出于可用性的原因,如果活跃FSC104遇到硬件或软件故障,则系统100迫使活跃FSC104至预确定的安全状态。然后,待命FSC108作为活跃FSC操作。
活跃FSC104和待命FSC108中每个FSC均可以包括多个通信链路。这些通信链路包括但不限于上行链路、下行链路和用户界面。上行链路是较高层设备的双向通信信道。该较高层设备可以是在总体系统体系结构中包括的系统硬件。例如,较高层设备可以是轨道系统的轨道制动系统的组件。
下行链路是较低层硬件的双向通信信道。例如,较低层硬件可以包括与较高层设备通信的交换机和中继器。下行链路可以依照任何适合的硬件标准实现。例如,可以将下行链路实现为RS-232、RS-422、RS-485、CAN、MVB、以太网、以太网HSR环网或其它适合的技术。用户界面是被设计为允许系统100的用户访问系统100的组件和子系统的界面。仅例如,可以将用户界面实现为多个发光二极管(LED)。
通信链路与系统100外部的硬件组件和软件应用通信。进一步,将系统100配置为接收输入并将输出传递给现场工程师。例如,现场工程师可以通过与系统100的用户界面通信,选择性地配置系统100。
将活跃FSC104和待命FSC108中每个FSC布置为运行健康和安全应用。例如,活跃FSC104和待命FSC108包括存储器和处理器。健康和安全应用可以是被加载到活跃FSC104和待命FSC108的存储器内的软件。然后,健康和安全应用由活跃FSC104和待命FSC108的处理器运行。
健康和安全应用监视并控制活跃FSC104和待命FSC108。例如,健康和安全应用生成多个健康信号。多个健康信号可以包括但不限于模块健康信号和屏蔽信号。健康和安全应用基于例如活跃FSC104中的错误,生成多个信号。健康和安全应用是功能安全子系统,其被设计为检测故障并通过迫使活跃FSC104或待命FSC108之一进入安全状态来对故障做出响应。
要理解,健康和安全应用可以包括在外部安全系统上运行的任何安全应用。这可以包括在一组数据元素由轨道系统的硬件和软件运行以前保证该组数据元素的有效性和安全性。还将健康和安全应用配置为,在该健康和安全应用检测到系统100中的故障时,保证轨道系统在预确定的安全状态下操作。
活跃FSC104和待命FSC108中每个FSC包括处理子系统。活跃FSC104处理子系统包括主中央处理单元(CPU)116a和检查器CPU120a。类似地,待命FSC108处理子系统包括主CPU116b和检查器CPU120b。将主CPU116a和116b中每个CPU配置为相同。类似地,将检查器CPU120a和120b中每个检查器配置为相同。以此方式,主CPU116a、主CPU116b、检查器CPU120a和检查器CPU120b起到提高系统100的可用性和可靠性的作用。
为监视和控制系统100的总体健康和安全,还将主CPU116a和检查器CPU120a配置为相同。例如,主CPU116a和检查器CPU120a运行相同的软件并且实现相同的处理功能。将主CPU116a和检查器CPU120a配置为执行相同的功能,以便保持安全临界硬件和软件的全硬件错误和差错检测覆盖,并且允许以正确的顺序对外出分组进行表决。
在一些实现中,主CPU116a从轨道系统的安全临界硬件或软件中至少之一中接收执行任务的请求。该执行任务的请求基于由安全临界硬件和软件从外部安全系统的操作者接收的命令。例如,轨道系统的操作者可以命令在轨道系统上行驶的列车提高速度。操作者可以促动列车内的物理操纵杆。将物理操纵杆布置为生成表示提高列车速度的命令的信号。将该信号传递至安全临界硬件和软件。
在运行该命令以前,安全临界硬件和软件将安全相关任务传递至系统100。将系统100配置为解释该信号并且确定与该信号关联的请求任务。然后,系统100确定所请求的任务是否表示安全相关任务。例如,所请求的任务可以是安全相关任务或者非安全相关任务。在一个示例中,非安全相关任务包括指示安全临界硬件和软件返回在轨道系统内操作的列车的当前状态的指令。在另一示例中,安全相关任务包括指示安全临界硬件和软件提高列车速度的指令。
系统100将所请求的任务与一系列预限定的任务进行比较。基于预限定的任务,系统100确定所请求的任务是否是安全相关的。当系统100确定所请求的任务是安全相关任务时,系统100生成与所请求的任务对应的分组。要理解,尽管本文只描述安全相关任务,但是系统100可以根据任何任务生成分组。系统100将分组传递至主CPU116a。将主CPU116a和检查器CPU120a都配置为,在安全临界硬件和软件运行所请求的任务以前验证分组的有效性。例如,执行任务的请求可以是多个进入数据分组之一。
同时,检查器CPU120a接收与所请求的任务对应的同一分组的复本。将主CPU116a和检查器CPU120a中每个CPU都配置为将分组的复本传递至主CPU116a和检查器CPU120a中的另一CPU。在主CPU116a指示安全临界硬件和软件执行所请求的任务以前,主CPU116a和检查器CPU120a对由主CPU116a和检查器CPU120a中每个CPU接收的分组进行比较。例如,主CPU116a和检查器CPU120a对分组执行2oo2表决。
当分组是相同的时,主CPU116a指示安全临界硬件和软件执行所请求的任务。例如,主CPU116a和检查器CPU120a生成与所请求的任务关联的外出分组。当表决成功时(即,分组是相同的),主CPU116a将外出分组传递至安全临界硬件和软件去运行所请求的任务。
外出分组可以包括控制I/O的操作数据元素、读取输入来搜集信息的请求、健康消息、对中间过程通信的请求、或与安全临界硬件和软件关联的其它适合的请求。操作数据元素可以包括指示安全临界硬件和软件之一运行预确定的过程的一组指令。例如,操作数据元素可以指示安全临界软件运行加速过程。加速过程包括控制至少一个安全临界硬件组件。该至少一个硬件组件包括列车的节流阀机构。
相反,当分组不相同时,主CPU116a和检查器CPU120a不指示安全临界硬件和软件执行所请求的任务。主CPU116a生成错误信号。该错误信号表示系统100、安全临界硬件和软件或外部安全系统内的故障。以此方式,主CPU116验证所请求的任务是来自有效源(即外部硬件组件或软件应用)的有效请求。
仅例如,主CPU116a接收由外部硬件故障、软件差错或整体系统失灵引起的执行任务的差错请求。要理解,尽管仅描述主CPU116a和检查器CPU120a,但是上面描述的原理还适用于主CPU116b和检查器CPU120b。
活跃FSC104和待命FSC108中每个FSC均包括多个输入/输出单元(IOU)模块。活跃FSC104包括IOU模块128a-128f。下文中,将IOU模块128a-128f称为IOU模块128。类似地,待命FSC108包括IOU模块132a-132f,IOU模块132a-132f与IOU模块128a-128f相同。下文中,将IOU模块132a-132f称为IOU模块132。
活跃FSC104和待命FSC108每个还包括表决子系统、输入/输出(I/O)子系统以及分别的交换模块124a和交换模块124b。将交换模块124a和交换模块124b配置为相同。交换模块124a和交换模块124b将从I/O子系统接收的分组路由至主CPU116a和116b以及检查器CPU120a和120b。
例如,交换模块124a可以将从主CPU116a接收的分组路由至外部网络组件。进一步,交换模块124a从外部组件接收分组并且将所接收的分组路由至主CPU116a、检查器CPU120b以及I/O子系统。进一步,交换模块124a将所接收的分组传递至表决子系统。应当理解,尽管仅描述交换模块124a,但是上面描述的原理还适用于交换模块124b。
IOU模块128实现活跃FSC104内的I/O子系统。将该I/O系统配置为提供下层网络设备和主CPU116a及检查器CPU120a之间的网关。IOU模块128将主CPU116a和检查器CPU120a与由外部硬件和软件需要的下层协议隔离。以此方式,IOU模块128在内部以太网上添加安全层,以支持主CPU116a、检查器CPU120a和外部硬件和软件之间的安全通信。IOU模块128和交换模块124a可以被共同称为前刀片(blade)124a-128f。类似地,IOU模块132和交换模块124b可以被共同称为前刀片124b-132f。
活跃FSC104和待命FSC108还包括多个后端转换模块(RTM)。活跃FSC104包括RTM136a-136i。待命FSC108包括RTM140a-140i。应当理解,由于待命FSC108是活跃FSC104的冗余配置,所以RTM136a-136i与RTM140a-140i是相同的。在一些实现中,RTM136a-136i中每个可以是可热交换的现场可更换单元(FRU)。
例如,RTM136a-136i中每个RTM可以由现场工程师在不必首先对全部系统100断电的情况下移除和更换。RTM136a-136i允许活跃FSC104与外部硬件组件和软件组件通信。例如,RTM136a以电的方式和以逻辑方式将主CPU116a联接至活跃FSC104外部的组件。类似地,RTM136b以电的方式和以逻辑方式将待命FSC108联接至外部的硬件组件和软件组件。
前刀片124a-128f每个包括第一存储器位置和第二存储器位置。第一存储器位置和第二存储器位置存储从活跃FSC104的对应硬件组件接收的值。例如,主CPU116a连续地生成表示主CPU116a的模块健康状况的模块健康信号(上面描述的)。当模块健康信号表示主CPU116a是健康的时,主CPU116a将“1”存储在第一存储器位置中。
前刀片124a-128f和主CPU116a中每个均生成模块健康信号。前刀片124a-128f中每个前刀片将表示模块健康信号的值存储在第一存储器位置中。仅例如,当模块健康信号表示交换模块124a是健康的时,交换模块124a将“1”存储在与交换模块124a关联的第一存储器位置中。
相反,当模块健康信号表示交换模块124a是不健康的时,交换模块124a将“0”存储在第一存储器位置中。要理解,尽管仅描述交换模块124a,但是本文讨论的原理适用于系统100内的所有模块。进一步要理解,尽管仅描述基于模块健康信号存储“1”和“0”,但是可以使用任何适合的指示符来表示系统100内的每个模块的健康状况。然后,系统100内的每个模块将存储在关联的第一存储器位置中的值传递至主CPU116a。
主CPU116a基于与由前刀片124a-128f中每个前刀片生成的模块健康信号和由主CPU116a生成的模块健康信号对应的多个值的接收,确定活跃FSC104是否是健康的。仅例如,当所接收的与模块健康信号对应的值中每个值表示系统100内的每个模块均是健康的时,主CPU116a确定活跃FSC104是健康的。相反,当所接收的与模块健康信号对应的值中至少一个值表示系统100内的模块中至少一个模块是不健康的时,主CPU116a确定活跃FSC104是不健康的。
在另一实现中,将表示模块健康信号的值存储在在系统100的前端配置的模块中。例如,当模块健康信号表示主CPU116a是健康的时,在系统100的与RTM136相对侧配置的模块将“1”存储在第一存储器位置中。要理解,尽管仅描述主CPU116a,但是本文描述的原理适用于检查器CPU120a。
主CPU116a接收多个进入数据分组中的第一分组。同时,检查器CPU120a接收第一分组的复本。主CPU116a和检查器CPU120a确定第一分组和第一分组的复本是否相同。当第一分组和第一分组的复本相同时,主CPU116a连续地生成模块健康信号。可以将模块健康信号设置为1或者高的信号值。模块健康信号的值表示活跃FSC104的健康状况。主CPU116a将“1”存储在第一存储器位置中。
相反,当第一分组和第一分组的复本不相同时,主CPU116a生成无效的模块健康信号。例如,主CPU116a使模块健康信号失效。主CPU116a将“0”存储在第一存储器位置中。主CPU116a接收表示主CPU116a内的屏蔽寄存器的状态的屏蔽信号。例如,屏蔽寄存器是主CPU116a和检查器CPU120a中每个CPU内的可编程的位。
当所请求的任务是安全相关的任务时,设置屏蔽寄存器。例如,当系统100确定所请求的任务是安全相关任务时,将屏蔽寄存器设置为1。当屏蔽信号表示主CPU116a内的屏蔽寄存器被设置为1时,RTM136a将“1”存储在第二存储器位置中。相反,当屏蔽信号表示主CPU116a内的屏蔽寄存器被设置为0时,RTM136a将“0”存储在第二存储器位置中。
系统100还包括监视狗计时器应用。监视狗计时器应用是持续运行的监视狗功能,其表示主CPU116a是否已经停止运行代码。例如,监视狗计时器应用监视主CPU116a。主CPU116a生成监视狗计时器复位信号。主CPU116a将监视狗计时器复位信号传递至监视狗计时器应用。监视狗计时器应用确定监视狗计时器复位信号是否是在预限定的时间段内接收的。例如,预限定的时间段可以是1分钟。预限定的时间段可以是可配置的项。
监视狗计时器应用根据监视狗计时器复位信号生成监视狗健康信号。例如,当主CPU116a在预限定的时间段以后传递监视狗计时器复位信号时,监视狗计时器应用将监视狗健康信号设置为0。相反,当主CPU116a在预限定的时间段内传递监视狗计时器复位信号时,监视狗计时器应用将监视狗健康信号设置为1。换言之,当主CPU116a不能在预限定的时间段内与监视狗应用通信时,监视狗计时器应用确定主CPU116a内的错误。例如,错误可以是主CPU116a被卡在软件循环中的结果。要理解,尽管上面仅描述主CPU116a,但是将检查器CPU120a配置为与主CPU116a相同的任务。
RTM136a传递表示主CPU116a的总体健康状况的模块健康值。例如,将RTM136a配置为对存储在第一存储器位置中的值和存储在第二存储器位置中的值执行逻辑“或(OR)”。例如,当存储在第一存储器位置中的值是0并且存储在第二存储器位置中的值是0时,RTM136a将传递0的模块健康值。
当存储在第一存储器位置中的值是1并且存储在第二存储器位置中的值是0时,RTM136a传递1的模块健康值。要理解,将RTM136a-136i中每个RTM配置为对存储在与前刀片124a-128f中每个前刀片关联的存储器中的值执行逻辑“或”。
RTM136a和136b将底架健康值传递至安全继电器箱模块144。安全继电器箱模块144基于多个底架健康值,选择性地确定系统100内的FSC中哪个FSC将是活跃FSC并且哪个FSC将是待命FSC。例如,安全继电器箱模块144从RTM136a、RTM136b、RTM140a和RTM140b接收多个底架健康值。RTM136a基于由主CPU116a和前刀片124a-128f生成的模块健康信号的累积结果和存储在屏蔽寄存器中的值,生成第一底架健康值。
RTM136a将底架健康值传递至安全继电器箱模块144。类似地,RTM136b基于由检查器CPU120a和前刀片124a-128f生成的模块健康信号的累积结果和存储在屏蔽寄存器中的值,生成第二底架健康值。RTM140a基于由主CPU116b和前刀片124b-132f生成的模块健康信号的累积结果和存储在屏蔽寄存器中的值,生成第三底架健康值。类似地,RTM140b基于由检查器CPU120b和前刀片124b-132f生成的模块健康信号的累积结果和存储在屏蔽寄存器中的值,生成第四底架健康值。
安全继电器箱模块144确定活跃FSC104和待命FSC108中哪个FSC将作为系统100内的活跃FSC操作。例如,安全继电器箱模块144基于第一底架健康值至第四底架健康值确定活跃FSC104将作为系统100内的活跃FSC操作。当第一底架健康信号和第二底架健康信号表示活跃FSC104是健康的时,安全继电器箱模块144确定活跃FSC104将是系统100内的活跃FSC。
安全继电器箱模块144基于活跃FSC确定,生成活跃FSC信号和待命FSC信号。例如,安全继电器箱模块144生成第一活跃FSC信号和第二活跃FSC信号。第一活跃FSC信号和第二活跃FSC信号是冗余信号,它们都表示选择哪个FSC作为活跃FSC操作。安全继电器箱模块144还生成第一待命FSC信号和第二待命FSC信号。
第一待命FSC信号和第二待命FSC信号是冗余信号,它们都表示选择哪个FSC作为待命FSC操作。安全继电器箱模块144将第一活跃FSC信号和第一待命FSC信号传递至活跃FSC104。类似地,安全继电器箱模块144将第二活跃FSC信号和第二待命FSC信号传递至待命FSC108。
安全继电器箱模块144还基于第一底架健康信号至第四底架健康信号确定在活跃FSC104和待命FSC108之一中是否已出现错误。例如,当安全继电器箱模块144从RTM136a和RTM136b之一接收无效底架健康信号时,安全继电器箱模块144确定在活跃FSC104中已发生错误。例如,无效底架健康信号可以是0的底架健康值。安全继电器箱模块144基于无效的底架健康信号生成待命信号。安全继电器箱模块144将待命信号传递至活跃FSC104。活跃FSC104基于该待命信号确定是否进入故障安全状态。例如,当活跃FSC104接收待命信号时,活跃FSC104确定进入故障安全状态。
安全继电器箱模块144基于底架健康值生成活跃信号。安全继电器箱模块144将活跃信号传递至待命FSC108。活跃信号向待命FSC108指示活跃FSC104正操作在故障安全状态或待命状态。当待命FSC108接收活跃信号时,待命FSC108开始作为活跃FSC操作。以此方式,安全继电器箱模块144迫使有故障的活跃FSC进入故障安全状态,并且提示待命FSC担当活跃FSC的角色。
在一些实现中,将安全继电器箱模块144配置为与多个商业现货供应(COTS)产品通信。例如,活跃FSC104和待命FSC108可以是在系统100内实现的COTS产品。根据预确定的实现标准,对活跃FSC104和待命FSC108进行配置。实现标准包括预限定的通信协议。
将安全继电器箱模块144配置为根据通信协议接收和解释来自活跃FSC104和待命FSC108的信号和消息。以此方式,无论活跃FSC104和待命FSC108的物理属性如何,只要活跃FSC104和待命FSC108服从通信协议,安全继电器箱模块144就与活跃FSC104和待命FSC108通信。要理解,安全继电器箱模块144与系统100内的任何组件通信。进一步,系统100内的任何组件可以使用COTS产品实现,只要该任何组件服从通信协议。
在一些实现中,I/O子系统还从像轨道系统的硬件组件和软件组件这样的外部源接收分组。所接收的分组可以包括上面讨论的多个进入数据分组。然后,I/O子系统将所接收的分组传递至表决子系统。
表决子系统是功能安全子系统并且被配置为检测故障和对故障做出响应。当表决子系统检测活跃FSC104和待命FSC108之一中的差错时,表决子系统迫使活跃FSC104和待命FSC108的该之一进入故障安全状态。表决子系统执行处理子系统的错误检测。例如,主CPU116a和检查器CPU120a基于所请求的任务生成外出分组。
表决子系统将由主CPU116a生成的外出分组与由检查器CPU120a生成的外出分组进行比较。当这些外出分组相同时,表决子系统将分组的单个复本传递至交换模块124a和I/O子系统。当外出分组不同时,表决子系统迫使活跃FSC104进入故障安全状态。以此方式,表决子系统检测活跃FSC104和待命FSC108之一中的错误。当检测活跃FSC104和待命FSC108之一中的错误时,表决子系统通过迫使有错误的FSC进入故障安全状态,将系统100带入安全状态。
表决子系统还从I/O子系统接收分组。例如,IOU模块128经由交换模块124a与表决子系统通信。IOU模块128将第一分组传递至交换模块124a。交换模块124a复制第一分组。例如,交换模块124a生成第二分组。第二分组是第一分组的复本。交换模块124a将第一分组传递至主CPU116a和检查器CPU120a。主CPU116a和检查器CPU120a如上面描述的那样对第一分组和第二分组运行表决逻辑。以此方式,表决子系统验证所接收的分组的有效性。
在另一示例中,由于外部组件中的硬件(如轨道系统中的安全临界硬件)失灵,第一分组可能与第二分组不同。当表决子系统确定第一分组与第二分组不同时,安全应用迫使活跃FSC104进入故障安全状态。此外或可替代地,可以悄悄地丢弃不匹配的分组。例如,主CPU116a和检查器CPU120a都不基于第一分组和第二分组生成外出分组。以此方式,系统100可以避免由其它可恢复的差错引起的过多故障转移/故障安全转换。在另一实现中,可以将输入表决配置为导致故障转移/故障安全转换。
现在参考图2,200处示出根据本公开原理的示例性故障安全底架(FSC)的框图。FSC200包括主CPU204和检查器CPU208。主CPU204和检查器CPU208运行相同的软件并且实现相同的处理功能。将主CPU204和检查器CPU208配置为执行相同的功能,以便保持安全临界硬件和软件的全硬件错误和差错检测覆盖。
例如,主CPU204从外部安全系统的安全临界硬件或软件至少之一中接收执行任务的请求。外部安全系统可以是需要根据预确定的安全标准操作的系统,如轨道系统。轨道系统包括安全临界硬件和软件。安全临界硬件和软件与轨道系统的组件交互,以便控制轨道系统的方面。例如,安全临界硬件和软件控制在轨道系统内操作的列车。
执行任务的请求可以包括但不限于:确定硬件组件的状态、接合轨道系统的制动器或者向轨道系统的操作者指示在轨道系统内操作的列车的位置。执行任务的请求是以分组的形式接收的。例如,执行任务的请求可以是多个进入数据分组之一。
同时,检查器CPU208接收同一请求的复本。将主CPU204和检查器CPU208中每个CPU都配置为将所请求的任务的复本传递至主CPU204和检查器CPU208中的另一CPU。在主CPU204执行所请求的任务以前,主CPU204和检查器CPU208对由主CPU204和检查器CPU208中每个CPU接收的所请求的任务进行比较。
当所请求的任务相同时,主CPU204和检查器CPU208将所请求的任务传递至安全临界硬件和软件。例如,主CPU204和检查器CPU208生成与所请求的任务关联的外出分组。外出分组包括操作数据元素。操作数据元素可以包括指示安全临界硬件和软件之一运行预确定的过程的一组指令。例如,操作数据元素可以指示安全临界软件运行制动器接合过程。制动器接合过程包括控制至少一个安全临界硬件组件。该至少一个硬件组件可以包括轨道系统的制动器机构。
相反,当所请求的任务不同时,主CPU204和检查器CPU208不将所请求的任务传递至安全临界硬件和软件。以此方式,主CPU204验证所请求的任务是来自有效源(即外部硬件组件或软件应用)的有效请求。仅例如,主CPU204接收由外部硬件故障、软件差错或整体系统失灵引起的执行任务的差错请求。
主CPU204和检查器CPU208包括屏蔽寄存器。屏蔽寄存器是主CPU204和检查器CPU208内的可编程的位。在屏蔽寄存器内存储的值是所请求的任务是否是安全相关任务的指示。例如,当系统100确定所请求的任务是安全相关任务时,将屏蔽寄存器设置为1。进一步,当系统100最初起动时,健康和安全应用设置屏蔽寄存器。
主CPU204和检查器CPU208每个均基于所请求的任务是否相同的确定,连续地生成模块健康信号。当主CPU204和检查器CPU208确定所请求的任务相同时,主CPU204和检查器CPU208连续地生成模块健康信号脉冲。当主CPU204和检查器CPU208确定所请求的任务不同时,主CPU204和检查器CPU208使模块健康信号脉冲失效。
主CPU204和检查器CPU208基于由与FSC200关联的多个模块中每个模块生成的多个模块健康信号脉冲,生成底架健康信号脉冲。FSC200包括与关于活跃FSC104描述的那些特征类似的特征。例如,FSC200包括如上面描述的前刀片124a-128f。FSC200内的每个模块连续地生成模块健康信号(如上面所述的)。当多个模块健康信号表示FSC200是健康的时,主CPU204生成第一底架健康信号脉冲。换言之,当屏蔽寄存器表示所请求的任务是安全相关的并且多个模块健康信号表示FSC200是健康的时,第一底架健康信号脉冲被连续地生效(即设置为1)。
要理解,当屏蔽寄存器表示所请求的任务不是安全相关的时(即屏蔽寄存器被设置为0),可以使第一模块健康信号脉冲失效。然而,将不运行安全相关的过程(即,迫使活跃FSC204进入安全状态。以此方式,当在安全相关任务期间发生错误时,仅实现故障转移/故障安全过程。底架健康信号脉冲表示FSC200的总体健康状况。
要理解,关于主CPU204描述的原理适用于检查器CPU208。检查器CPU208基于由与FSC200关联的多个模块中每个模块生成的多个模块健康信号脉冲,生成第二底架健康信号脉冲。当多个模块健康信号表示FSC200是健康的时,检查器CPU208连续地生成第二底架健康信号脉冲。主CPU204将第一底架健康信号脉冲传递至安全继电器箱212。类似地,检查器CPU208将第二底架健康信号脉冲传递至安全继电器箱212。
安全继电器箱模块212基于多个底架健康信号,选择性地确定FSC200是否将作为活跃FSC操作。例如,当初始化FSC200时,安全继电器箱模块212开始从主CPU204接收底架健康信号脉冲。安全继电器箱212还开始从检查器CPU208接收底架健康信号脉冲。安全继电器箱模块212基于底架健康信号,确定FSC200将被选择作为活跃FSC。
在一些实现中,安全继电器箱模块212还从另一FSC接收多个底架健康信号脉冲。安全继电器箱模块212基于多个底架健康信号脉冲,确定FSC200或另一FSC将被选择作为活跃FSC。例如,安全继电器箱模块212首先确定FSC200或另一FSC之一是否是健康的。当从FSC200接收的底架健康信号脉冲表示FSC200是健康的时,安全继电器箱模块212确定FSC200是健康的。例如,当安全继电器箱模块212从FSC200接收底架健康信号时,安全继电器箱模块212确定FSC200是健康的。
类似地,当从另一FSC接收的多个底架健康信号脉冲表示另一FSC是健康的时,安全继电器箱模块212确定另一FSC是健康的。当安全继电器箱模块212确定FSC200和另一FSC都是健康的时,安全继电器箱模块212基于FSC200和另一FSC中哪个FSC首先传递多个底架健康信号脉冲之一,选择活跃FSC。例如,当FSC200在另一FSC向安全继电器箱模块212传递信号以前向安全继电器箱模块212传递信号时,安全继电器箱212选择FSC200作为活跃FSC。
安全继电器箱模块212监视活跃FSC的健康状况。例如,安全继电器箱模块212从FSC200接收第一底架健康信号脉冲和第二底架健康信号脉冲。安全继电器箱模块212基于第一底架健康信号脉冲和第二底架健康信号脉冲,确定在FSC200中是否已发生错误。当第一底架健康信号脉冲和第二底架健康信号脉冲表示所请求的任务的不匹配时,安全继电器箱模块212确定在FSC200中已经发生错误。换言之,当安全继电器箱模块212未收到第一底架健康信号脉冲和第二底架健康信号脉冲之一时,安全继电器箱模块212确定已经发生错误。
当安全继电器箱模块212确定在FSC200中已经发生错误时,安全继电器箱模块212生成故障安全信号。安全继电器箱模块212将故障安全信号传递至活跃FSC200。FSC200基于该故障安全信号确定是否进入安全状态。例如,当FSC20接收故障安全信号时,FSC200进入安全状态。相反,FSC200将继续在活跃FSC模式下操作,除非FSC200接收故障安全信号。
可替代地,当FSC200未收到活跃信号时,FSC200可以进入待命状态。当安全继电器箱模块212确定FSC200要作为活跃FSC操作时,安全继电器箱模块212传递活跃信号。安全继电器箱模块212将活跃信号连续地传递至FSC200。当安全继电器箱模块212确定FSC200有错误时,安全继电器箱模块212不将活跃信号传递至FSC200。然后,FSC200操作在待命状态。
在一些实现中,将多个底架健康信号脉冲实现为动态脉冲信号,以消除未检测到的潜在的故障模式。将安全继电器箱模块212配置为确定脉冲信号被卡在0还是被卡在1。例如,安全继电器箱212从主CPU204接收第一脉冲信号。将安全继电器箱模块212配置为等待一预确定的时间段。
例如,该预确定的时间段可以是与对于使动态脉冲复位而言足够长的时间对应的时间段。当在预确定的时间段以后尚未复位第一脉冲信号时,安全继电器箱模块212确定第一脉冲信号被卡住。然后,当安全继电器箱模块212确定第一脉冲信号被卡住时,安全继电器箱模块212确定主CPU204中的错误。安全继电器箱模块212基于确定主CPU204中的错误,生成故障安全信号。
在一些实现中,主CPU204和检查器CPU208彼此以松锁步(loose lockstep)运行。在一些场景中,需要主CPU204和检查器CPU208以同步模式运行。特别参考图3,示出实现同步模式的同步系统300的功能框图。该同步模式包括首先使主CPU204和检查器CPU208中每个CPU的系统时钟同步以及其次使操作系统(OS)调度器同步,以便使主CPU204和检查器CPU208在数据元素层次上以相同顺序运行。
主CPU204和检查器CPU208中每个CPU包括被配置为运行同步逻辑的现场可编程门阵列(FPGA)。例如,主CPU204包括主FPGA304,检查器CPU208包括检查器FPGA308。主FPGA304和检查器FPGA308中每个FPGA均被配置为实现任务同步逻辑。例如,当任务请求时间指令时以及当任务发送和/或接收以太网分组时,主CPU204和检查器CPU208中每个CPU同步。进一步地,主FPGA304和检查器FPGA308中每个FPGA可以同步至参考时钟。
参考时钟是系统100内的25兆赫兹(MHz)时钟。仅例如,参考时钟可以是CPU减量器(decrementer)。参考时钟是公共参考时钟,系统100内的每个模块与该公共参考时钟同步。系统100内的每个模块包括与参考时钟同步的锁相环。例如,主CPU204包括以第一间隔计数的第一时钟。主CPU204包括第一锁相环,该第一锁相环确定第一间隔和参考时钟间隔之间的参考点。当主CPU204与系统100内的另一模块(例如,检查器CPU208)通信时,主CPU204基于第一间隔和参考时钟间隔之间的参考点确定当前参考时钟时间。以此方式,系统100内的每个模块可以参考对每个模块而言公共的参考时钟上的时间,以便在系统100内进行通信。
将主CPU204和检查器CPU208中每个CPU配置为运行系统100外部的软件应用。例如,主CPU204运行由上面描述的轨道应用请求的任务。将主CPU204配置为运行轨道应用的第一复本(第一复本)。将检查器CPU208配置为运行轨道应用的第二复本(第二复本)。将第一复本和第二复本中每个复本配置为同时运行任务。例如,当系统100重起动时,主CPU204和检查器CPU208中每个CPU分别发起第一复本和第二复本。使第一复本和第二复本同步至参考时钟,以便同时运行任务。
在一些实现中,系统300包括调度器模块312。将调度器模块312配置为运行在关联的存储器中存储的软件。调度器模块312运行OS调度器。OS调度器是软件程序,该软件程序将OS层任务传递至主CPU204和检查器CPU208。在一些实现中,调度器模块312基于任务同步点确定主CPU204和检查器CPU208是否同步。可以将任务同步点称为检查点。
同步点可以在任务请求时间指令时,在每个任务发送和/或接收以太网分组时,或者在新任务开始时。此外或可替代地,系统300外部的软件可以控制同步点。调度器模块312将第一同步点传递至主CPU204和检查器CPU208。如上面描述的,主CPU204和检查器CPU208运行应用软件的相同复本。主CPU204和检查器CPU208被配置为相同,因此同时运行与该应用关联的被请求的任务。然而,主CPU204和检查器CPU208的同步可以受参考时钟中的固有误差以及硬件偏差中的固有差异影响。
同步点是操作系统事件,其在主CPU204和检查器CPU208应当向相同地址写入时发生。作为非限定示例,主CPU204和检查器CPU208应该在参考时钟的5个周期以后都向相同地址写入。操作系统监视主CPU204内的处理器模块316和检查器CPU208内的处理器模块320的同步点。
例如,处理器模块316和处理器模块320每个都从应用软件的第一复本和第二复本接收要运行的多个任务。为保证处理器模块316和处理器模块320同步运行相同任务,在运行该任务以前,处理器模块316和处理器模块320都向存储器寄存器写存储器地址。例如,当主CPU204达到第一同步点时,处理器模块316向寄存器A324写第一同步点的地址。类似地,当检查器CPU208达到第一同步点时,处理器模块320向寄存器A328写第一同步点的地址。
FPGA304包括逻辑“与(AND)”模块332和寄存器B340。类似地,FPGA308包括逻辑“与(AND)”模块336和寄存器B344。逻辑“与”模块332接收在寄存器A324和寄存器A328中存储的地址。逻辑“与”332对所接收的地址执行逻辑“与”。仅例如,逻辑“与”332确定寄存器A324中的地址的第一位和寄存器A328中的地址的第一位是否相同。当这两个地址中的第一位相同时,逻辑“与”模块332在寄存器B340的第一位中写入“1”。本领域技术人员能够理解,尽管仅描述一个位的示例,但是寄存器A可以包括多个位。进一步地,尽管仅描述正逻辑“与”结果,但是当寄存器A324和寄存器A328中的地址位不同时,逻辑“与”332可以将“0”写至寄存器B340中的位。
逻辑“与”模块336接收在寄存器A324和寄存器A328中存储的地址。逻辑“与”336对所接收的地址执行逻辑“与”。仅例如,逻辑“与”336确定寄存器A324中的地址的第一位和寄存器A328中的地址的第一位是否相同。当这两个地址中的第一位相同时,逻辑“与”模块336在寄存器B344的第一位中写入“1”。本领域技术人员能够理解,尽管仅描述一个位的示例,但是寄存器A可以包括多个位。进一步地,尽管仅描述正逻辑“与”结果,但是当寄存器A324和寄存器A328中的地址位不同时,逻辑“与”336可以将“0”写至寄存器B344中的位。
调度器模块312监视寄存器B340和寄存器B344。例如,调度器模块312在第一同步点处从寄存器B340接收第一值,从寄存器B344接收第二值。第一同步点可以是预确定的存储器地址。调度器模块312确定第一值是否与第二值相同。当调度器模块312确定将第一值设置为“1”并且将第二值设置为“1”时,调度器模块312确定主CPU204和检查器CPU208同步。要理解,在寄存器B340和寄存器B344中存储的值可以是被设置为“1”的一系列位。调度器模块312生成处理器同步信号。调度器模块312将处理器同步信号传递至处理器模块316和处理器模块320。
当调度器模块312确定第一值与第二值不同时,调度器模块312确定主CPU204和检查器CPU208不同步。例如,第一值和第二值中至少之一不被设置为“1”。调度器模块312使同步计数器递增。调度器模块312在第二同步点处从寄存器B340接收第三值,从寄存器B344接收第四值。第二同步点可以是在第一同步点以后的预确定数量的存储器地址以后。调度器模块312确定是否将第三值和第四值设置为“1”。
如上面描述的,当调度器模块312确定将第三值设置为“1”并且将第四值设置为“1”时,调度器模块312确定主CPU204和检查器CPU208同步。调度器模块312生成处理器同步信号。调度器模块312将处理器同步信号传递至处理器模块316和处理器模块320。当调度器模块312确定第三值与第四值不同时,调度器模块312使同步计数器递增。
调度器模块312继续监视来自寄存器B340和寄存器B344的值,直到调度器模块312确定主CPU204和检查器CPU208同步。调度器模块312将处理器同步信号传递至处理器模块316和处理器模块320。
基于处理器同步信号,处理器模块316和处理器模块320确定是否运行与应用软件的第一复本和第二复本关联的任务。例如,当处理器模块316和处理器模块210接收处理器同步信号时,处理器模块316和处理器模块320运行与该应用的第一复本和第二复本关联的任务。换言之,一旦调度器模块312确定主CPU204和检查器CPU208同步,主CPU204和检查器CPU208就被释放并且开始运行任务。
进一步地,基于处理器同步信号,处理器模块316和处理器模块320确定是否发送和/或接收以太网分组。例如,处理器模块316和处理器模块320发送和接收与系统300关联的数据分组。数据分组可以包括关于图1和图2描述的多个数据分组。仅作为非限定示例,处理器模块316可以生成第一外出数据分组。当处理器模块316接收处理器同步信号时,处理器模块316传送第一外出数据分组。类似地,处理器模块320可以生成第二外出数据分组。当处理器模块320接收处理器同步信号时,处理器模块320传送第二外出数据分组。要理解,尽管仅描述传送数据分组,但是本公开内容的原理还适用于处理器模块316和处理器模块320中每个处理器模块接收数据分组。
在一些实现中,基于同步计数器,调度器模块312确定是否重起动系统300。例如,调度器模块312将同步计数器的值与预确定的阈值进行比较。预确定的阈值可以是与多个错过的同步点关联的值。例如,预确定的阈值可以是3。换言之,调度器模块312确定主CPU204和检查器CPU208失去同步3次。当调度器模块312确定同步计数器中的值大于预确定的阈值时,调度器模块312指示系统300重起动。
在又一实现中,可以基于同步点的密度对同步的粒度(granularity)进行控制。例如,调度器模块312将在寄存器A324中存储的当前存储器地址与第一同步点进行比较。在当前存储器地址与第一同步点不同时,调度器模块312使主同步计数器递增。调度器模块312继续将在寄存器A324中存储的当前存储器地址与第一同步点进行比较。调度器模块312继续使主同步计数器递增,直到当前存储器地址与第一同步点相同。换言之,调度器模块312进行计数,直到主CPU204达到第一同步点。
类似地,调度器模块312将在寄存器A328中存储的当前存储器地址与第一同步点进行比较。在当前存储器地址与第一同步点不同时,调度器模块312使检查器同步计数器递增。调度器模块312继续将在寄存器A328中存储的当前存储器地址与第一同步点进行比较。调度器模块312继续使检查器同步计数器递增,直到当前存储器地址与第一同步点相同。换言之,调度器模块312进行计数,直到检查器CPU204达到第一同步点。
基于主同步计数器中的值和检查器同步计数器中的值,调度器模块312选择性地调整同步密度。例如,基于在主同步计数器中存储的值和在检查器同步计数器中存储的值是否大于密度阈值,能够在任务层次上或在时间片(time slice)层次上添加同步点。
在另一实现中,处理器模块316和处理器模块320每个都从应用软件的第一复本和第二复本接收要运行的多个任务。为保证处理器模块316和处理器模块320同步运行相同的任务,在运行该任务以前,处理器模块316经由处理器间通信(IPC)信道与处理器模块320进行通信。仅例如,IPC信道可以是主CPU204和检查器CPU208之间的双冗余、高速、点对点串行通信链路。
处理器模块316和处理器模块320中每个处理器模块基于操作系统事件生成多个同步消息。操作系统事件可以包括请求时间指令的任务、发送和/或接收数据分组的请求或者任何其它适合的操作系统事件。当主CPU204达到同步点时,处理器模块316生成第一同步消息。处理器模块316将第一同步消息传递至处理器模块320。类似地,当检查器CPU208达到同步点时,处理器模块320生成第二同步消息。处理器模块320将第二同步消息传递至处理器模块316。
处理器模块316确定处理器模块320是否已经传递同步消息。当处理器模块316确定处理器模块320未传递同步消息时,处理器模块316继续等待以从处理器模块320接收同步消息。处理器模块316使同步计数器递增。相反,当处理器模块316确定处理器模块320已经传递同步消息时,处理器模块316确定该同步消息是否表示处理器模块320与处理器模块316同步。
例如,基于请求第一时间指令的第一任务,处理器模块316生成第一同步消息。基于请求第二时间指令的第二任务,处理器模块320生成第二同步消息。处理器模块316从处理器模块320接收第二同步消息。基于第一同步消息和第二同步消息,处理器模块316确定主CPU204和检查器CPU208是否同步。
例如,当处理器模块316将第一同步消息与第二同步消息进行比较时。当处理器模块316确定第一同步消息与第二同步消息相同时,处理器模块316确定主CPU204和检查器CPU208同步。当处理器模块316确定主CPU204和检查器CPU208同步时,处理器模块316向处理器模块320生成第一处理器同步信号。
类似地,处理器模块320确定处理器模块316是否已经传递同步消息。当处理器模块320确定处理器模块316未传递同步消息时,处理器模块320继续等待以从处理器模块316接收同步消息。处理器模块320使同步计数器递增。相反,当处理器模块320确定处理器模块316已经传递同步消息时,处理器模块320确定该同步消息是否表示处理器模块316与处理器模块320同步。
例如,基于请求第一时间指令的第一任务,处理器模块316生成第一同步消息。基于请求第二时间指令的第二任务,处理器模块320生成第二同步消息。处理器模块320从处理器模块316接收第一同步消息。基于第一同步消息和第二同步消息,处理器模块320确定主CPU204和检查器CPU208是否同步。
例如,当处理器模块320将第一同步消息与第二同步消息进行比较时。当处理器模块320确定第一同步消息与第二同步消息相同时,处理器模块320确定主CPU204和检查器CPU208同步。当处理器模块320确定主CPU204和检查器CPU208同步时,处理器模块320向处理器模块316生成第二处理器同步信号。
基于第一处理器同步信号和第二处理器同步信号,处理器模块316和处理器模块320确定是否运行与应用软件的第一复本和第二复本关联的任务。例如,当处理器模块316生成第一处理器同步信号并且接收第二处理器同步信号时,处理器模块316运行与该应用的第一复本和第二复本关联的任务。类似地,当处理器模块320生成第二处理器同步信号并且接收第一处理器同步信号时,处理器模块320运行与该应用的第一复本和第二复本关联的任务。
进一步地,基于第一处理器同步信号和第二处理器同步信号,处理器模块316和处理器模块320确定是否发送和/或接收以太网分组。例如,处理器模块316和处理器模块320发送和接收与系统300关联的数据分组。数据分组可以包括关于图1和图2描述的多个数据分组。仅作为非限定示例,处理器模块316可以生成第一外出数据分组。当处理器模块316生成第一处理器同步信号并且接收第二处理器同步信号时,处理器模块316传送第一外出数据分组。
类似地,处理器模块320可以生成第二外出数据分组。当处理器模块320生成第二处理器同步信号并且接收第一处理器同步信号时,处理器模块320传送第二外出数据分组。要理解,尽管仅描述传送数据分组,但是本公开内容的原理还适用于处理器模块316和处理器模块320中每个处理器模块接收数据分组。
在又一实现中,可以基于同步点的密度对同步的粒度进行控制。例如,如果操作系统正发送多个数据分组,那么其能够使用单个检查点来传递要发送的分组的数量和/或顺序,因此减少保持同步所需的检查点的数量。
基于同步计数器,调度器模块312确定是否重起动系统300。例如,调度器模块312将同步计数器的值与预确定的阈值进行比较。预确定的阈值可以是与多个错过的同步点关联的值。例如,预确定的阈值可以是3。换言之,调度器模块312确定主CPU204和检查器CPU208失去同步3次。当调度器模块312确定同步计数器中的值大于预确定的阈值时,调度器模块312指示系统300重起动。
参考图4,图示根据本公开内容原理的处理器同步方法400的流程图在404处开始。在408处,方法400对主寄存器B和检查器寄存器B进行复位。在412处,方法400将当前的主CPU地址写至主寄存器A。在416处,方法400将当前的检查器CPU地址写至检查器寄存器A。在420处,方法400将主寄存器A和检查器寄存器A的逻辑“与(AND)”的结果写至主寄存器B。在424处,方法400将主寄存器A和检查器寄存器A的逻辑“与(AND)”的结果写至检查器寄存器B。在428处,方法400确定主寄存器B中的值是否与检查器寄存器B中的值相同。如果真,则方法在432处继续。如果假,则方法在412处继续。在432处,方法400生成处理器同步信号。在436处,方法400释放主CPU和检查器CPU。方法在440处结束。
参考图5,图示根据本公开内容原理的可替代处理器同步方法500的流程图在504处开始。在508处,方法500生成第一同步消息。在512处,方法500确定是否收到第二同步消息。如果真,则方法500在520处继续。如果假,则方法500在516处继续。在516处,方法500使同步计数器递增。方法500在512处继续。在520处,方法500确定第一同步消息是否与第二同步消息相同。
如果真,则方法500在528处继续。如果假,则方法500在524处继续。在524处,方法500使同步计数器递增。方法500在512处继续。在528处,方法500生成第一同步信号。在532处,方法500确定是否接收第二同步信号。如果真,则方法500在536处继续。如果假,则方法500在532处继续。在536处,方法500释放主CPU204和检查器CPU208。方法500在540处结束。
已经为了说明和描述目的提供上面对实施例的描述。描述不旨在是详尽的或者限制本公开内容。特定实施例的单独元件或特征通常不局限于该特定实施例,而是可在适用时互换并且可以在选择的实施例中使用,即便未具体地示出或描述。本发明还可以以多种方式变化。这样的变化不应被视为背离本公开内容,并且所有这样的修改旨在包含在本公开内容的范围内。
本文中使用的术语“模块”可以指下面的组件、可以是下面的组件的一部分,或者可以包括下面的组件:专用集成电路(ASIC)、电子电路、组合逻辑电路、现场可编程门阵列(FPGA)、运行代码的处理器(共享的、专用的或它们的组合)、提供所描述的功能的其它适合的硬件组件、或者上面组件中一些组件或全部组件的组合,如在片上系统中。术语“模块”可以包括存储由处理器运行的代码的存储器(共享的、专用的或它们的组合)。
上面使用的术语“代码”可以包括软件、固件和/或微代码,并且可以指程序、例程、函数、类和/或对象。上面使用的术语“共享的”指来自多个模块的一些代码或全部代码可以使用单个(共享的)处理器运行。此外,来自多个模块的一些代码或全部代码可以由单个(共享的)存储器存储。上面使用的术语“组合”指来自单个模块的一些或全部代码可以使用一组处理器运行。此外,来自单个模块的一些或全部代码可以使用一组存储器存储。
本文描述的装置和方法可以被由一个或多个处理器运行的一个或多个计算机程序实现。计算机程序包括在非瞬态有形计算机可读介质上存储的处理器可运行指令。计算机程序还可以包括存储的数据。非瞬态有形计算机可读介质的非限定性示例是非易失性存储器、磁性存储和光存储。
Claims (20)
1.一种用于同步中央处理单元CPU的系统,包括:
第一CPU,将第一存储器地址写至包括在所述第一CPU中的第一寄存器;
第二CPU,将第二存储器地址写至包括在所述第二CPU中的第二寄存器,其中所述第一CPU和所述第二CPU被配置为运行相同的软件并且实现相同的处理功能;
包括在所述第一CPU中的第一逻辑“与”模块,基于所述第一存储器地址和所述第二存储器地址将第一值写至第三寄存器;
包括在所述第二CPU中的第二逻辑“与”模块,基于所述第一存储器地址和所述第二存储器地址将第二值写至第四寄存器;以及
调度器模块,从所述第三寄存器接收所述第一值并从所述第四寄存器接收所述第二值,基于所述第一值和所述第二值选择性地生成到所述第一CPU和所述第二CPU的处理器同步信号,其中如果所述第一CPU和所述第二CPU同时运行被请求的任务,则所述第一值和所述第二值相同。
2.根据权利要求1所述的系统,其中所述第一逻辑“与”模块对所述第一存储器地址和所述第二存储器地址执行逻辑“与”功能。
3.根据权利要求2所述的系统,其中所述第一逻辑“与”模块响应于所述第一存储器地址和所述第二存储器地址相同而将“1”写至所述第三寄存器。
4.根据权利要求1所述的系统,其中所述第二逻辑“与”模块对所述第一存储器地址和所述第二存储器地址执行逻辑“与”功能。
5.根据权利要求4所述的系统,其中所述第二逻辑“与”模块响应于所述第一存储器地址和所述第二存储器地址相同而将“1”写至所述第四寄存器。
6.根据权利要求1所述的系统,其中所述调度器模块响应于所述第一值和所述第二值被设置为“1”而生成所述处理器同步信号。
7.根据权利要求1所述的系统,其中所述调度器模块响应于所述第一值不等于所述第二值而不生成所述处理器同步信号。
8.根据权利要求1所述的系统,其中所述第一CPU包括第一处理器模块,并且其中所述第二CPU包括第二处理器模块。
9.根据权利要求8所述的系统,其中所述调度器模块将所述处理器同步信号传递至所述第一处理器模块和所述第二处理器模块。
10.根据权利要求9所述的系统,其中所述第一处理器模块响应于接收所述处理器同步信号而选择性地运行第一多个任务,并且其中所述第二处理器模块响应于接收所述处理器同步信号而选择性地运行第二多个任务。
11.一种用于同步中央处理单元CPU的方法,包括:
通过第一CPU在同步点处生成第一同步消息;
通过第二CPU在所述同步点处生成第二同步消息;
通过所述第一CPU传递所述第一同步消息给所述第二CPU;
通过所述第二CPU传递所述第二同步消息给所述第一CPU;
通过所述第一CPU确定所述第二同步消息是否被传递给所述第一CPU;
通过所述第二CPU确定所述第一同步消息是否被传递给所述第二CPU;以及
所述第一CPU和所述第二CPU基于所述第一同步消息和所述第二同步消息确定是否运行多个任务。
12.根据权利要求11所述的方法,进一步包括:基于所述第一同步消息和所述第二同步消息,确定第一CPU和第二CPU同步。
13.根据权利要求12所述的方法,进一步包括:当生成所述第一同步消息并且接收所述第二同步消息时,在所述第一CPU处确定所述第一CPU和所述第二CPU是否同步。
14.根据权利要求13所述的方法,进一步包括:响应于在所述第一CPU处确定所述第一CPU和所述第二CPU同步,生成第一处理器同步信号。
15.根据权利要求14所述的方法,进一步包括:当生成所述第二同步消息并且接收所述第一同步消息时,在所述第二CPU处确定所述第一CPU和所述第二CPU是否同步。
16.根据权利要求15所述的方法,进一步包括:响应于在所述第二CPU处确定所述第一CPU和所述第二CPU同步,生成第二处理器同步信号。
17.根据权利要求16所述的方法,进一步包括:响应于接收所述第一处理器同步信号和所述第二处理器同步信号,运行所述多个任务。
18.根据权利要求16所述的方法,进一步包括:响应于未接收所述第一处理器同步信号和所述第二处理器同步信号中至少之一,不运行所述多个任务。
19.根据权利要求11所述的方法,进一步包括:响应于未接收所述第一同步消息和所述第二同步消息中至少之一,使同步计数器递增。
20.根据权利要求19所述的方法,进一步包括:响应于所述同步计数器大于预确定的阈值,选择性地确定是否重起动第一CPU和第二CPU。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410008511.8A CN104765587B (zh) | 2014-01-08 | 2014-01-08 | 用于使处理器同步到相同的计算点的系统和方法 |
US14/254,930 US9348657B2 (en) | 2014-01-08 | 2014-04-17 | Method and system of synchronizing processors to the same computational point |
US15/148,271 US10042812B2 (en) | 2014-01-08 | 2016-05-06 | Method and system of synchronizing processors to the same computational point |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410008511.8A CN104765587B (zh) | 2014-01-08 | 2014-01-08 | 用于使处理器同步到相同的计算点的系统和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104765587A CN104765587A (zh) | 2015-07-08 |
CN104765587B true CN104765587B (zh) | 2018-12-14 |
Family
ID=53495279
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410008511.8A Active CN104765587B (zh) | 2014-01-08 | 2014-01-08 | 用于使处理器同步到相同的计算点的系统和方法 |
Country Status (2)
Country | Link |
---|---|
US (2) | US9348657B2 (zh) |
CN (1) | CN104765587B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101770915B1 (ko) * | 2016-03-08 | 2017-09-05 | 엘에스산전 주식회사 | 철도 신호 처리용 cpu 모듈 |
DE102016220197A1 (de) * | 2016-10-17 | 2018-04-19 | Robert Bosch Gmbh | Verfahren zum Verarbeiten von Daten für ein automatisiertes Fahrzeug |
US10338995B2 (en) * | 2017-03-10 | 2019-07-02 | Artesyn Embedded Computing, Inc. | End to end FPGA diagnostics for a safety system |
CN109240975A (zh) * | 2017-07-10 | 2019-01-18 | 比亚迪股份有限公司 | 二取二系统同步方法及装置 |
US10621024B2 (en) * | 2017-09-11 | 2020-04-14 | Smart Embedded Computing, Inc. | Signal pairing for module expansion of a failsafe computing system |
GB2575294B8 (en) * | 2018-07-04 | 2022-07-20 | Graphcore Ltd | Host Proxy On Gateway |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1259212A (zh) * | 1997-04-02 | 2000-07-05 | 通用动力信息系统公司 | 容错计算机系统 |
CN101478428A (zh) * | 2009-01-20 | 2009-07-08 | 北京全路通信信号研究设计院 | 软硬件协同的以太网故障安全通信系统和数据传输方法 |
CN101734246A (zh) * | 2008-11-14 | 2010-06-16 | 南车株洲电力机车有限公司 | 用于电力机车制动系统的同步控制通信装置 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5845147A (en) * | 1996-03-19 | 1998-12-01 | Emc Corporation | Single lock command for an I/O storage system that performs both locking and I/O data operation |
US6567873B1 (en) * | 2000-02-29 | 2003-05-20 | Novell, Inc. | Spinlock with adaptive delay |
US7549082B2 (en) | 2005-04-28 | 2009-06-16 | Hewlett-Packard Development Company, L.P. | Method and system of bringing processors to the same computational point |
US8103861B2 (en) | 2005-04-28 | 2012-01-24 | Hewlett-Packard Development Company, L.P. | Method and system for presenting an interrupt request to processors executing in lock step |
US7730350B2 (en) | 2005-04-28 | 2010-06-01 | Hewlett-Packard Development Company, L.P. | Method and system of determining the execution point of programs executed in lock step |
US7549085B2 (en) | 2006-04-28 | 2009-06-16 | Hewlett-Packard Development Company, L.P. | Method and apparatus to insert special instruction |
US7698523B2 (en) * | 2006-09-29 | 2010-04-13 | Broadcom Corporation | Hardware memory locks |
DE102009000584A1 (de) * | 2009-02-03 | 2010-08-05 | Robert Bosch Gmbh | Diagnose der Synchronisation zweier Kommunikationsnetzwerke eines elektronischen Datenverarbeitungssystems |
US8380916B2 (en) * | 2009-06-04 | 2013-02-19 | Micron Technology, Inc. | Control of page access in memory |
US10089043B2 (en) * | 2013-03-15 | 2018-10-02 | Micron Technology, Inc. | Apparatus and methods for a distributed memory system including memory nodes |
KR102432754B1 (ko) * | 2013-10-21 | 2022-08-16 | 에프엘씨 글로벌 리미티드 | 최종 레벨 캐시 시스템 및 이에 대응하는 방법 |
-
2014
- 2014-01-08 CN CN201410008511.8A patent/CN104765587B/zh active Active
- 2014-04-17 US US14/254,930 patent/US9348657B2/en active Active
-
2016
- 2016-05-06 US US15/148,271 patent/US10042812B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1259212A (zh) * | 1997-04-02 | 2000-07-05 | 通用动力信息系统公司 | 容错计算机系统 |
CN101734246A (zh) * | 2008-11-14 | 2010-06-16 | 南车株洲电力机车有限公司 | 用于电力机车制动系统的同步控制通信装置 |
CN101478428A (zh) * | 2009-01-20 | 2009-07-08 | 北京全路通信信号研究设计院 | 软硬件协同的以太网故障安全通信系统和数据传输方法 |
Non-Patent Citations (1)
Title |
---|
基于嵌入式多核平台的并行冗余线程容错技术研究;张淑燕;《中国优秀硕士学位论文全文数据库信息科技辑》;20111215;正文第28-32页 * |
Also Published As
Publication number | Publication date |
---|---|
US10042812B2 (en) | 2018-08-07 |
US9348657B2 (en) | 2016-05-24 |
US20160253285A1 (en) | 2016-09-01 |
US20150193341A1 (en) | 2015-07-09 |
CN104765587A (zh) | 2015-07-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104765587B (zh) | 用于使处理器同步到相同的计算点的系统和方法 | |
CN104714855B (zh) | 安全系统中的输入/输出操作 | |
US9367375B2 (en) | Direct connect algorithm | |
El Salloum et al. | The ACROSS MPSoC–A new generation of multi-core processors designed for safety–critical embedded systems | |
CN104714517B (zh) | 用于安全关键系统的可靠、低延迟的硬件和软件进程间通信通道 | |
US9934111B2 (en) | Control and data transmission system, process device, and method for redundant process control with decentralized redundancy | |
US20110276199A1 (en) | Flight control system and aircraft comprising it | |
KR102284080B1 (ko) | 2채널 아키텍처 | |
CN104714862B (zh) | 用于安全和任务关键系统的表决架构 | |
CN104714853B (zh) | 使用cots组件的容错故障安全计算机系统 | |
CN108572638B (zh) | 用于安全系统的fpga不匹配数据包的停止 | |
CN109491842A (zh) | 用于故障安全计算系统的模块扩展的信号配对 | |
CN104714510B (zh) | 用于容错故障安全计算机系统的基于任务的表决 | |
CN108572893B (zh) | 用于安全系统的端到端fpga诊断的方法和系统 | |
CN109144758A (zh) | 安全系统的菊花链 | |
JP5612995B2 (ja) | 入力バイパス型のフェイルセーフ装置及びフェイルセーフ用プログラム | |
Brasileiro | Constructing fail-controlled nodes for distributed systems: a software approach | |
Ammendola et al. | 'Mutual Watch-dog Networking': Distributed Awareness of Faults and Critical Events in Petascale/Exascale systems | |
Dambra et al. | Demonstrators | |
Shaikh | Design of input and ouput modules for a safety-critical wayside train control system | |
Ammendola et al. | Pier Stanislao Paolucci, Davide Rossetti, Francesco Simula, Laura Tosoratto and Piero Vicini INFN Sezione di Tor Vergata, Rome, Italy Email:[firstname. lastname]@ roma2. infn. it INFN Sezione di Roma, Rome, Italy |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: Arizona, USA Applicant after: ARTESYN EMBEDDED COMPUTING, INC. Address before: Arizona, USA Applicant before: Emerson Network Power-Embedded Computing, Inc. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |