JP2010534888A - High integrity and high availability computer processing module - Google Patents

High integrity and high availability computer processing module Download PDF

Info

Publication number
JP2010534888A
JP2010534888A JP2010518384A JP2010518384A JP2010534888A JP 2010534888 A JP2010534888 A JP 2010534888A JP 2010518384 A JP2010518384 A JP 2010518384A JP 2010518384 A JP2010518384 A JP 2010518384A JP 2010534888 A JP2010534888 A JP 2010534888A
Authority
JP
Japan
Prior art keywords
module
lane
lanes
data
processing
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.)
Granted
Application number
JP2010518384A
Other languages
Japanese (ja)
Other versions
JP2010534888A5 (en
JP5436422B2 (en
Inventor
プルイエット,ジェイ・アール
サイクス,グレゴリー・アール
スカット,ティモシー・ディー
Original Assignee
ジーイー・アビエイション・システムズ・エルエルシー
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 ジーイー・アビエイション・システムズ・エルエルシー filed Critical ジーイー・アビエイション・システムズ・エルエルシー
Publication of JP2010534888A publication Critical patent/JP2010534888A/en
Publication of JP2010534888A5 publication Critical patent/JP2010534888A5/ja
Application granted granted Critical
Publication of JP5436422B2 publication Critical patent/JP5436422B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1675Temporal synchronisation or re-synchronisation of redundant processing components
    • G06F11/1687Temporal synchronisation or re-synchronisation of redundant processing components at event level, e.g. by interrupt or result of polling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/14Time supervision arrangements, e.g. real time clock
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1675Temporal synchronisation or re-synchronisation of redundant processing components
    • G06F11/1683Temporal synchronisation or re-synchronisation of redundant processing components at instruction level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/845Systems in which the redundancy can be transformed in increased performance

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Hardware Redundancy (AREA)

Abstract

高完全性Nレーンコンピュータ処理モジュール(「モジュール」)であって、Nは、2以上の整数である。「モジュール」は、処理レーンあたり1つの「ホストされるアプリケーション」要素および入出力要素と、N個の処理レーンのそれぞれで動作するソフトウェアによって行われる要求がN個の処理レーンのそれぞれによって実際にいつ受け取られ、作用されるかに関わりなく、要求について同等の時刻値を判定するように構成された時刻管理ユニット(TM)と、それぞれのレーン内のクリティカル領域をN個の処理レーンのすべてにまたがって識別し、同期化することを可能にするように構成されたクリティカル領域管理ユニット(CRM)とを含む。
【選択図】図4
A high integrity N lane computer processing module ("module"), where N is an integer greater than or equal to two. A “module” is actually a “hosted application” element and input / output element per processing lane, and when requests made by software running in each of the N processing lanes are actually made by each of the N processing lanes. Regardless of whether they are received and acted upon, a time management unit (TM) configured to determine an equivalent time value for the request and the critical region in each lane spans all N processing lanes. And a critical region management unit (CRM) configured to allow identification and synchronization.
[Selection] Figure 4

Description

関連出願の相互参照
本願は、2007年7月24日に出願した米国仮出願第60/935,044号、名称「High Integrity and High Availability Computer Processing Module and Method」の優先権を主張するものである。
This application claims priority from US Provisional Application No. 60 / 935,044, filed July 24, 2007, entitled “High Integrity and High Availability Computer Processing Module and Method”. .

本明細書で説明されるテクノロジは、「ホストされるアプリケーション」に最小限の設計制約を課すソースコンピューティングでの高いインテグリティ(”integrity”、以下「完全性」)と高い可用性(”availability”)を追求したコンピュータ処理モジュール(「モジュール」)に関するもので、本テクノロジーにより、「ホストされるアプリケーション」は、上記モジュール上で、ホストされるソフトウェアアプリケーション(「ホストされるアプリケーション」)が通常の普通の完全性を有するコンピュータ処理モジュール上でも動作できるようになる。   The technology described herein provides high integrity (“integrity”) and high availability (“availability”) in source computing that imposes minimal design constraints on “hosted applications”. With this technology, the “hosted application” is a software application that is hosted on the module (“hosted application”). It will also be possible to operate on a complete computer processing module.

コンピュータ処理モジュール(「モジュール」)は、故障が正確に検出され、分離され、誤ったアラームが最小になることが保証されて初めて、ソース側における高完全性と高可用性を提供することができる。高完全性を備えた「モジュール」は、迅速かつ正確に検出も分離もされない故障が動作上の問題をもたらし得る航空機にとって、さらにより重要である。ソース側で高い完全性をもたらすようなモジュール内での正確な故障を検出し分離する能力は、時々、「故障封じ込めゾーン確立能力」と呼ばれ、「故障封じ込めゾーン」とは、フォールトをコンテインメンしたゾーン(fault containment zone、FCZ)であり、このゾーンがシステム内で確立すると、そのゾーンの外部には故障が伝搬できないようになる。また、高完全性「モジュール」では、誤ったアラームの発生確率は非常に低いことも重要である、なぜならば、そのような誤ったアラームは、実際には存在しないにも関わらずその誤報された問題を訂正するために、機能の一次的な消失やコンピュータリソースの浪費をもたらす場合があるからである。   Computer processing modules ("modules") can provide high integrity and high availability on the source side only if faults are accurately detected and isolated and false alarms are guaranteed to be minimized. “Modules” with high integrity are even more important for aircraft where failures that are not detected and isolated quickly and accurately can result in operational problems. The ability to detect and isolate an accurate fault within a module that results in high integrity on the source side is sometimes referred to as the "Fault Containment Zone Establishment Ability", which is a fault containment fault. If this zone is established in the system, a failure cannot be propagated outside the zone. It is also important for high integrity “modules” that the probability of false alarms is very low because such false alarms were misreported even though they did not actually exist. This is because it may cause a temporary loss of function or a waste of computer resources to correct the problem.

ソース「モジュール」での高い完全性を得るための従来の設計は、当該「モジュール」上の複数のマイクロプロセッサ間での、命令レベルでのロック−ステップ(lock−step)処理を実施することが必要とされ、これには高価なカスタム回路網を必要とするものである。従来の命令レベルのロック−ステップ処理手法は、「ホストされるアプリケーション」のすべてに高完全性を提供するものではあるものの、埋め込みメモリコントローラや異なるクロック回復回路を有する複数の位相ロックループ(PLL)を必要とする入出力サポートなどを、現時点での技術的現状のマイクロプロセッサに実施するのは困難(または不可能)である場合がある。   A conventional design to achieve high integrity at a source “module” is to perform an instruction level lock-step process between multiple microprocessors on the “module”. This is what is required and this requires expensive custom circuitry. While traditional instruction-level lock-step processing techniques provide high integrity for all “hosted applications”, multiple phase-locked loops (PLLs) with embedded memory controllers and different clock recovery circuits It may be difficult (or impossible) to implement I / O support and the like that require a current state-of-the-art microprocessor.

英国特許第2425380A号公報British Patent No. 2425380A

従って、「ホストされるアプリケーション」に最小限の設計制約を課し(即ち、同一の「ホストされるアプリケーション」は通常の普通の完全性を有する「モジュール」でも実行することもできる)つつも、高速マイクロプロセッサ(たとえば、統合されたプロセッサ)を利用することもできる、「モジュール」用のソース設計での高完全性に対する必要がある。   Thus, while imposing minimal design constraints on the “hosted application” (ie, the same “hosted application” can also run in a “module” with normal normal integrity) There is a need for high integrity in source designs for “modules” that can also utilize high-speed microprocessors (eg, integrated processors).

本発明の一態様は、高完全性を発揮するNレーンコンピュータ処理モジュール(「モジュール」)に関する。ここで、Nは2以上の整数である。この「モジュール」は、処理レーンあたり1つの「ホストされるアプリケーション」要素および入出力要素と、N個の処理レーンのそれぞれで動作するソフトウェアによって行われる要求がN個の処理レーンのそれぞれによって実際にいつ受け取られ、作用されるかに関わりなく、要求について同等の時刻値を判定するように構成された時刻管理ユニット(TM)と、それぞれのレーン内のクリティカル領域をN個の処理レーンのすべてにまたがって識別し、同期化することを可能にするように構成されたクリティカル領域管理ユニット(CRM)とを含む。   One aspect of the invention relates to an N-lane computer processing module (“module”) that exhibits high integrity. Here, N is an integer of 2 or more. This “module” actually has one “hosted application” and input / output elements per processing lane, and requests made by software running in each of the N processing lanes are actually executed by each of the N processing lanes. Regardless of when it is received and acted upon, a time management unit (TM) configured to determine an equivalent time value for the request and the critical region in each lane to all N processing lanes And a critical region management unit (CRM) configured to allow identification and synchronization across.

例示的実施形態を、下で添付図面を参照して説明するが、図面では、類似する符号が類似する要素を指す。   Exemplary embodiments are described below with reference to the accompanying drawings, in which like numerals refer to like elements.

障害状態が「ホストされるアプリケーション」について排除されるような、障害が軽減されることが望まれる第1シナリオを示す図である。FIG. 6 illustrates a first scenario where it is desired that the failure be mitigated such that the failure state is eliminated for “hosted application”. 障害状態が「ホストされるアプリケーション」について排除されるような、障害が軽減されることが望まれる第1シナリオを示す図である。FIG. 6 illustrates a first scenario where it is desired that the failure be mitigated such that the failure state is eliminated for “hosted application”. 時刻管理(Time Management:TM)ユニット、クリティカル領域管理(Critical Region Management:CRM)ユニット、データ入力管理(data Input Management:IM)ユニット、およびデータ出力管理(data Output Management:OM)ユニットを示す論理ブロック図である。Logic blocks showing a time management (TM) unit, a critical region management (CRM) unit, a data input management (IM) unit, and a data output management (OM) unit FIG. 例示的実施形態による高完全疎同期(high integrity loosely synchronized)コンピュータ処理モジュール(「モジュール」)を示すブロック図である。FIG. 2 is a block diagram illustrating a high integrity loosely synchronized computer processing module (“module”) according to an exemplary embodiment. 例示的実施形態による時刻管理ユニットの詳細を示すブロック図である。FIG. 3 is a block diagram illustrating details of a time management unit according to an exemplary embodiment. 例示的実施形態によるクリティカル領域管理ユニットの詳細を示すブロック図である。FIG. 3 is a block diagram illustrating details of a critical area management unit according to an exemplary embodiment. 例示的実施形態によるシステムおよび方法を利用することによって潜在的障害状態が排除される、第1シナリオ(図1の)を示す図である。FIG. 2 illustrates a first scenario (of FIG. 1) in which a potential fault condition is eliminated by utilizing the system and method according to an exemplary embodiment. 例示的実施形態によるシステムおよび方法を利用することによって潜在的障害状態が排除される、第2シナリオ(図2の)を示す図である。FIG. 3 illustrates a second scenario (of FIG. 2) in which a potential fault condition is eliminated by utilizing the system and method according to an exemplary embodiment.

次の記述では、説明において、本明細書で説明するテクノロジの完全な理解を提供するために多数の具体的な詳細を示す。しかし、例示的実施形態をこれらの具体的な詳細なしで実践できることは、当業者に明白であろう。他の場合には、例示的実施形態の説明を容易にするために、構造およびデバイスを線図の形で示す。   In the following description, in the description, numerous specific details are set forth in order to provide a thorough understanding of the technology described herein. However, it will be apparent to those skilled in the art that the exemplary embodiments may be practiced without these specific details. In other instances, structures and devices are shown in diagram form in order to facilitate describing the exemplary embodiments.

例示的実施形態を、下で図面を参照して説明する。これらの図面は、本明細書で説明するモジュール、方法、およびコンピュータプログラム製品を実施する特定の実施形態のある詳細を示す。しかし、図面を、図面に存在し得る限定を課すものと解釈してはならない。方法およびコンピュータプログラム製品を、その動作を達成するために任意の機械可読媒体上で提供することができる。実施形態を、既存のコンピュータプロセッサを使用して、この目的または別の目的のために組み込まれる特殊目的コンピュータプロセッサによって、またはハードワイヤードシステムによって実施することができる。   Exemplary embodiments are described below with reference to the drawings. These drawings illustrate certain details of specific embodiments that implement the modules, methods, and computer program products described herein. However, the drawings should not be construed as imposing limitations that may exist in the drawings. The method and computer program product can be provided on any machine-readable medium to accomplish its operations. Embodiments may be implemented using existing computer processors, with special purpose computer processors incorporated for this or other purposes, or with hardwired systems.

上で注記したように、本明細書で説明する実施形態は、機械実行可能命令またはデータ構造を担持するかその上に格納された機械可読媒体を含むコンピュータプログラム製品を含む。そのような機械可読媒体は、汎用のもしくは特殊目的のコンピュータまたはプロセッサを有する他の機械によってアクセスできる、任意の使用可能な媒体とすることができる。たとえば、そのような機械可読媒体は、RAM、ROM、EPROM、EEPROM、CD−ROMまたは他の光ディスクストレージ、磁気ディスクストレージまたは他の磁気ストレージデバイス、あるいは、機械実行可能命令またはデータ構造の形で所望のプログラムコードを担持するか格納するのに使用でき、汎用のもしくは特殊目的のコンピュータまたはプロセッサを有する他の機械によってアクセスできる任意の他の媒体を含むことができる。情報が、ネットワークまたは別の通信接続(ハードワイヤード、無線、またはハードワイヤードもしくは無線の組合せのいずれか)を介して機械に転送されまたは供給される時に、その機械は、当然、その接続を機械可読媒体と見なす。したがって、すべてのそのような接続が、当然、機械可読媒体と呼ばれる。上の組合せも、機械可読媒体の範囲に含まれる。機械実行可能命令は、たとえば、汎用コンピュータ、特殊目的コンピュータ、または特殊目的処理機械にある機能または機能のグループを実行させる命令およびデータを含む。   As noted above, the embodiments described herein include a computer program product that includes a machine-readable medium that carries or is stored on machine-executable instructions or data structures. Such machine-readable media can be any available media that can be accessed by a general purpose or special purpose computer or other machine with a processor. For example, such machine readable media may be in the form of RAM, ROM, EPROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage device, or machine-executable instructions or data structures. Any other medium that can be used to carry or store any other program code and that can be accessed by a general purpose or special purpose computer or other machine having a processor. When information is transferred or supplied to a machine over a network or another communication connection (either hardwired, wireless, or a combination of hardwired or wireless), the machine will of course make the connection machine-readable. Consider it a medium. Accordingly, all such connections are naturally referred to as machine readable media. Combinations of the above are also included within the scope of machine-readable media. Machine-executable instructions comprise, for example, instructions and data which cause a general purpose computer, special purpose computer, or special purpose processing machine to perform a certain function or group of functions.

実施形態を、たとえばネットワーク化された環境内の機械によって実行されるプログラムモジュールの形のプログラムコードなど、機械実行可能命令を含むプログラム製品によって1つの実施形態で実施できる方法ステップの全般的文脈で説明する。一般に、プログラムモジュールは、特定のタスクを実行するか特定の抽象データ型を実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。機械実行可能命令、関連するデータ構造、およびプログラムモジュールは、本明細書で開示される方法のステップを実行するプログラムコードの例を表す。そのような実行可能命令または関連するデータ構造の特定のシーケンスは、そのようなステップで説明される機能を実施する対応する行為の例を表す。   Embodiments are described in the general context of method steps that can be implemented in one embodiment by a program product that includes machine-executable instructions, such as program code in the form of program modules that are executed by machines in a networked environment, for example. To do. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. Machine-executable instructions, associated data structures, and program modules represent examples of program code that perform the steps of the methods disclosed herein. A particular sequence of such executable instructions or associated data structures represents an example of a corresponding act of performing the functions described in such steps.

実施形態を、プロセッサを有する1つまたは複数のリモートコンピュータへの論理接続を使用してネットワーク化された環境で実践することができる。論理接続は、ローカルエリアネットワーク(LAN)および広域ネットワーク(WAN)を含むことができ、これらは、限定ではなく例としてここで提示される。そのようなネットワーキング環境は、オフィス全体または企業全体のコンピュータネットワーク、イントラネット、およびインターネットでありふれたものであり、さまざまな異なる通信プロトコルを使用することができる。そのようなネットワークコンピューティング環境が、通常、パーソナルコンピュータ、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースのまたはプログラマブルな消費者エレクトロニクス、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、および類似物を含む多数のタイプのコンピュータシステム構成を含むことを、当業者は了解するであろう。   Embodiments can be practiced in a networked environment using logical connections to one or more remote computers having processors. Logical connections can include a local area network (LAN) and a wide area network (WAN), which are presented here by way of example and not limitation. Such networking environments are commonplace in office-wide or enterprise-wide computer networks, intranets, and the Internet, and can use a variety of different communication protocols. Many types of such network computing environments typically include personal computers, handheld devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, network PCs, minicomputers, mainframe computers, and the like. Those skilled in the art will appreciate that the present invention includes the following computer system configuration.

実施形態を、通信ネットワークを介してリンクされた(ハードワイヤードリンク、無線リンク、またはハードワイヤードリンクもしくは無線リンクの組合せのいずれかによって)ローカルおよびリモートの処理デバイスによってタスクが実行される分散コンピューティング環境で実践することもできる。分散コンピューティング環境では、プログラムモジュールを、ローカルとリモートとの両方のメモリストレージデバイスに配置することができる。   Distributed computing environment in which tasks are performed by local and remote processing devices linked by a communication network (either by hard wire drinks, wireless links, or a combination of hard wire drinks or wireless links) Can also be practiced. In a distributed computing environment, program modules can be located in both local and remote memory storage devices.

例示的実施形態の全体または一部を実施する例示的システムは、処理ユニット、システムメモリ、およびシステムメモリを含むさまざまなシステムコンポーネントを処理ユニットに結合するシステムバスを含むコンピュータの形の汎用コンピューティングデバイスを含むことができる。システムメモリは、読取り専用メモリ(ROM)およびランダムアクセスメモリ(RAM)を含むことができる。コンピュータは、磁気ハードディスクから読み取り、これに書き込む磁気ハードディスクドライブ、リムーバブル磁気ディスクから読み取るかこれに書き込む磁気ディスクドライブ、およびCD−ROMまたは他の光媒体などのリムーバブル光ディスクから読み取るかこれに書き込む光ディスクドライブをも含むことができる。ドライブおよびそれに関連する機械可読媒体は、機械実行可能命令、データ構造、プログラムモジュール、および他のデータのコンピュータのための不揮発性ストレージを提供する。   An exemplary system for implementing all or part of an exemplary embodiment is a general-purpose computing device in the form of a computer that includes a processing unit, a system memory, and a system bus that couples various system components including the system memory to the processing unit. Can be included. The system memory can include read only memory (ROM) and random access memory (RAM). The computer has a magnetic hard disk drive that reads from and writes to a magnetic hard disk, a magnetic disk drive that reads from or writes to a removable magnetic disk, and an optical disk drive that reads from or writes to a removable optical disk such as a CD-ROM or other optical media. Can also be included. The drives and associated machine-readable media provide non-volatile storage for machine-executable instructions, data structures, program modules, and other data computers.

この明細書の以下に、第1実施形態を詳細に説明するが、これは、コンピュータ処理モジュール(以下「モジュール」)からなるソースシステムでの高完全性を提供する疎同期化(高完全租同期)のための手法に対応する。   In the remainder of this specification, the first embodiment will be described in detail, which provides sparse synchronization (high perfect synchronization) that provides high integrity in a source system consisting of computer processing modules (hereinafter “modules”). ).

ソースコンピューティング(source computing)での高完全性は、現在のところ、命令レベルでのロックステップ(lockstep)方式で動作している少なくとも2つの処理レーン、すなわち1つの処理するレーンと1つのモニターするレーンとを必要とする。ソースコンピューティング「モジュール」でのデュアルレーンでの高完全性について、解決すべき問題を、有限状態機械(finite state machine)モデルになぞらえることができる。すなわち、ある「モジュール」の各処理レーンで動作するソフトウェアが、同一の入力(データ、割込み、時刻など)を受け取り、且つ、出力を送る前までに、または、新しい入力を受け取る前までに、当該データについて同一「量」の処理を実行することができる場合には、各レーンは、障害がない場合には、全く同一の出力を発生することになる。この実施形態が、主に、各処理レーンは同一のマイクロプロセッサを有する「モジュール」に関して説明されることに留意されたい。しかし、この実施形態は、N個のレーンのうちの1つまたは複数に異なるプロセッサを有する「モジュール」にもあてはまるものである。この場合には、各処理レーンは、指定された範囲(おそらくは、たとえば当該マイクロプロセッサの浮動小数点ユニットに存する相違に起因するばらつき)内での「同一」の出力を作るものと期待される。   High integrity in source computing currently monitors at least two processing lanes, one lane to process and one to monitor, operating in a lockstep manner at the instruction level Need a lane. The problem to be solved for high integrity in dual lanes in the source computing “module” can be compared to a finite state machine model. That is, software running in each processing lane of a “module” receives the same input (data, interrupt, time, etc.) and before sending the output or before receiving a new input. If the same “amount” of processing can be performed on the data, each lane will produce exactly the same output if there is no failure. Note that this embodiment is primarily described in terms of “modules” where each processing lane has the same microprocessor. However, this embodiment also applies to “modules” having different processors in one or more of the N lanes. In this case, each processing lane is expected to produce an “identical” output within a specified range (possibly due to, for example, variations due to differences in the floating point unit of the microprocessor).

有限状態機械モデルによるアナロジーの意味するところは、次のとおりである。「モジュール」上で動作するソフトウェアがある入力を受け取る時には、それらの入力は、両方のレーンで同一でなければならず、かつ、両方のレーンが、正確に同一の状態にある時にそれら入力を受け取らなければならない。入力とは、明示的に要求された入力(たとえば、ARINC653ポートデータ、タイムスタンプなど)、または、外部イベント(ハードウェア割込み、仮想割込みなど)に起因して受け取る入力であると考えなくてはならない。ソフトウェアに、たとえば優先順位プリエンプティブ動作などに起因して起こる、そのソフトウエアの実行(状態)のスレッドを変化させてしまう入力に、特に注意するひつようがある。ある「モジュール」上で動作するソフトウェアが出力を送る時には、その出力以前に、両方のレーンからのデータを比較しなければならない。(適切でない状態同期化が原因の)出力データの比較失敗が起こらないことを確実ならしめるために、ソフトウェアのうちで出力データの生成に責任を負うソフトウエア部分は、出力が比較できて、その後、送ることができる前に、両方のレーン間で同一の状態に達しなければならない。   The meaning of the analogy by the finite state machine model is as follows. When software that runs on the “module” receives certain inputs, those inputs must be the same in both lanes, and receive both inputs when both lanes are in exactly the same state. There must be. An input must be considered as an input that is explicitly requested (eg, ARINC 653 port data, timestamp, etc.) or received due to an external event (hardware interrupt, virtual interrupt, etc.) . There is a need to pay particular attention to inputs that change the thread of execution (state) of the software that occurs due to, for example, priority preemptive operations. When software running on a “module” sends an output, the data from both lanes must be compared before the output. To ensure that there is no output data comparison failure (due to improper state synchronization), the software portion of the software responsible for generating the output data can compare the outputs and then The same state must be reached between both lanes before it can be sent.

図1および図2に示されたシナリオは、障害状態の発生が「モジュール」の設計によって排除できるように、2つの潜在的障害シナリオの例示を与える。これらの特定のシナリオが選ばれた理由は、これらの障害状態を軽減できるような「モジュール」設計なるものが、Nレーンの「モジュール」で動作するソフトウェアに対して、入力データの同等性についてのより一般的な設計制約に対処でき(または、対処できると期待でき)、そして、同期化を制御できることについて高い確率を有すると思われるからである。   The scenarios shown in FIGS. 1 and 2 provide an illustration of two potential failure scenarios so that the occurrence of a failure condition can be eliminated by the “module” design. These specific scenarios were chosen because the “module” design that can mitigate these fault conditions is the equivalent of input data to software running on N-lane “modules”. This is because it seems likely that a more general design constraint can be addressed (or can be expected to be addressed) and that there is a high probability of being able to control the synchronization.

ここで、2レーン高完全性「モジュール」の図1に移り、第1タイプの潜在的障害状態について説明する。この「モジュール」では、レーン1および2は疎同期化されて動作しているが、本明細書で説明するTMユニットおよびCRMユニットは追加されていない。この場合に、疎同期化動作状態とは、レーン1が、レーン2に対して、1命令未満から任意数の命令の範囲の時間長だけ、進み或いは遅れた状態にあることを意味する。図1に示された例について、レーン1は、レーン2の「前」にある。この例で使用されるBoolean(ブール変数)の初期状態は、「False(偽)」である。   Turning now to FIG. 1 of the two-lane high integrity “module”, the first type of potential fault condition will be described. In this “module”, lanes 1 and 2 operate in a loosely synchronized manner, but the TM unit and the CRM unit described in this specification are not added. In this case, the sparsely synchronized operation state means that lane 1 is advanced or delayed with respect to lane 2 by a time length ranging from less than one instruction to an arbitrary number of instructions. For the example shown in FIG. 1, lane 1 is “before” lane 2. The initial state of the Boolean (Boolean variable) used in this example is “False”.

ステップ1で、レーン1の処理1は、タイマ割込みが発生したときに、Booleanを「True(真)」にセットしたばかりである。レーン2のプロセス1は、Booleanを「True」にセットする機会をまだ有していない(従って、そのBooleanはまだ「False」である)。   In step 1, lane 1 process 1 has just set Boolean to "True" when a timer interrupt occurs. Process 1 in lane 2 does not yet have an opportunity to set a Boolean to “True” (thus, that Boolean is still “False”).

ステップ2で、割込みが発生して、レーン1とレーン2との両方の「ホストされるアプリケーション」をして、(優先順位プリエンプションに起因して)プロセス2に切り替えさせる。   At step 2, an interrupt occurs, causing both “lane 1” and “lane 2” “hosted applications” to switch to process 2 (due to priority preemption).

ステップ3は、レーン1のプロセス2およびレーン2のプロセス2が、夫々のBooleanを読み取り、夫々のBooleanの状態を含む出力を送出する。レーン1はTrueを出力し、レーン2はFalseを出力する。   Step 3 is that process 2 in lane 1 and process 2 in lane 2 read each Boolean and send an output containing the state of each Boolean. Lane 1 outputs True and lane 2 outputs False.

ステップ4で、データ出力管理(OM)ユニットが、2つのレーンの間の不一致を検出する。これは、2つの計算レーン間に正しい同期化が「モジュール」によって提供されいたならば防ぐことができたであろう(したがって、可用性も高まったであろう)タイプの障害である。   In step 4, the data output management (OM) unit detects a mismatch between the two lanes. This is a type of failure that could have been prevented (and therefore increased availability) if the correct synchronization between the two compute lanes was provided by the “module”.

ここで図2に移って、第2タイプの潜在的障害状態を、2レーン高完全性「モジュール」について説明する。このシステムでは、レーン1および2は、疎同期化されているが、本明細書でこれから説明するTMユニットおよびCRMユニットは装備されていない。この例で、疎同期化は、レーン1が、レーン2に対して、1命令未満から任意数命令までの範囲の時間長だけ、進み或いは遅れた状態にあることを意味する。図2に示された例について、レーン1は、レーン2の「前」にある。   Turning now to FIG. 2, a second type of potential failure condition is described for a two-lane high integrity “module”. In this system, lanes 1 and 2 are loosely synchronized, but are not equipped with TM and CRM units as will be described herein. In this example, sparse synchronization means that lane 1 is advanced or delayed with respect to lane 2 by a time length ranging from less than one instruction to an arbitrary number of instructions. For the example shown in FIG. 2, lane 1 is “before” lane 2.

ステップ1で、レーン1のプロセス1(低優先順位のバックグラウンドプロセスである)は、タイマ割込みが発生した時に、ポートFOOでの出力トランザクションを完了したばかりである。レーン2のプロセス1は、同一の出力トランザクションを完了していない。   At step 1, process 1 in lane 1 (which is a low priority background process) has just completed an output transaction at port FOO when the timer interrupt occurs. Process 1 in lane 2 has not completed the same output transaction.

ステップ2で、バックグラウンドプロセス(プロセス1)は、低優先順位なので、もはや動作していない。そうではなく、高優先順位プロセス(プロセス2)が、両方のレーンで動作し、入力データを受け取り、この入力データが、プロセス1に再始動させる。したがって、レーン2のプロセス1は、その出力を送るようなことはない。   At step 2, the background process (process 1) is no longer running because it is low priority. Rather, a high priority process (Process 2) runs on both lanes and receives input data that causes Process 1 to restart. Thus, process 1 in lane 2 never sends its output.

ステップ3で、最終的に(ある制限された時間限度以内に)データ出力管理ユニットが、レーン2がポートFOOで出力しないという事実に起因して、障害を報告する。これは、2つの計算レーン間の正しい同期化が「モジュール」によって提供されていたならば防ぐことができであろう(したがって、可用性が高またであろう)タイプの障害である。   In step 3, eventually (within some limited time limit) the data output management unit reports a failure due to the fact that lane 2 does not output on port FOO. This is a type of failure that could be prevented (and therefore highly available) if correct synchronization between the two compute lanes was provided by the “module”.

第1の実施形態で利用されるアーキテクチャ的手法は、「モジュール」のハードウェアコンポーネントおよびソフトウェアコンポーネントが一緒に働いて、各処理レーンのソフトウェア状態を、入出力処理が実行される前(および間)に、同期化させられていることを保証するものである。「ソフトウェア」が、「ホストされるアプリケーション」ソフトウェアと「モジュール」のソフトウェアコンポーネントとの両方を指すことに留意されたい。また、用語「同期化される」が、レーンのそれぞれが、同一セットのクリティカル領域を実行完了して、双方が同一の入力を集める同一クリティカル領域内にあること、或いは、両レーンが同一出力を送る同一クリティカル領域内にあること、を意味するものであることに留意されたい。N個のレーンのそれぞれからの入力或いは出力(I/O)の出力は比較され、そして、出力される前にこの比較に合格しなければならない。   The architectural approach utilized in the first embodiment is that the “module” hardware and software components work together to determine the software state of each processing lane before (and during) the I / O processing. Guarantees that they are synchronized. Note that “software” refers to both “hosted application” software and “module” software components. Also, the term “synchronized” means that each of the lanes is in the same critical area where both have completed the same set of critical areas and both collect the same input, or both lanes have the same output. Note that it means that you are in the same critical region that you are sending. Input or output (I / O) outputs from each of the N lanes are compared and must pass this comparison before being output.

上記アーキテクチャ的手法のトップレベル属性は、次のとおりである。このアーキテクチャは、仮想化(たとえば、ARINC仕様653によって指定される)をサポートする「モジュール」に典型的な頑健に時間的におよび/または空間的に区分された環境ならびに「モジュール」が単一の「ホストされるアプリケーション」だけをサポートする環境をサポートする。このアーキテクチャは、「モジュール」のN個の処理レーン上の同一のまたは異なるプロセッサ(2個以上)をサポートする。このアーキテクチャは、疎同期化され、これによって、計算状態が同期化される。このアーキテクチャは、「ホストされるアプリケーション」から可能な最大の範囲へ冗長管理(同期化および比較)を抽象化する。これは、「ホストされるアプリケーション」供給業者が、彼らのソフトウェアに従来の設計標準を使用することを可能にし(彼らは、特殊な高完全性特徴を加えることを要求されない)、彼らが通常の普通の完全性「モジュール」上で同一の「ホストされるアプリケーション」ソフトウェアを実行することを可能にする。このアーキテクチャは、高完全性および高可用性を提供するユニットを静的に構成できるように、パラメトリックである。これは、一部の「ホストされるアプリケーション」(またはこれらの「ホストされるアプリケーション」への/からのデータ)を普通の完全性として構成することを可能にする。このアーキテクチャは、故障が、誤った出力に起因する機能的ハザードを軽減するのに間に合って検出されることを保証する。   The top level attributes of the architectural approach are as follows: This architecture provides a robust temporally and / or spatially partitioned environment typical of “modules” that support virtualization (eg, as specified by the ARINC specification 653) and a single “module”. Support environments that only support "hosted applications". This architecture supports the same or different processors (two or more) on N processing lanes of a “module”. This architecture is sparsely synchronized, thereby synchronizing the computational state. This architecture abstracts redundancy management (synchronization and comparison) from the “hosted application” to the largest possible range. This allows "hosted application" suppliers to use traditional design standards in their software (they are not required to add special high integrity features) and they Allows the same “hosted application” software to run on ordinary integrity “modules”. This architecture is parametric so that units that provide high integrity and high availability can be statically configured. This allows some “hosted applications” (or data to / from these “hosted applications”) to be configured as normal integrity. This architecture ensures that faults are detected in time to mitigate functional hazards due to false outputs.

この手法を実施するために、第1の実施形態によるシステムおよび方法は、データ入力管理(IM)、時刻管理(TM)、クリティカル領域管理(CRM)、およびデータ出力管理(OM)を含む機構(または要素)を提供する。図3に、これらの要素が「モジュール」と「ホストされるアプリケーション」ソフトウェアとの両方にどのように関係するかの論理ブロック図を示す。これらの要素のそれぞれを、詳細に説明する。   To implement this approach, the system and method according to the first embodiment includes a mechanism (including data input management (IM), time management (TM), critical region management (CRM), and data output management (OM)). Or element). FIG. 3 shows a logical block diagram of how these elements relate to both “module” and “hosted application” software. Each of these elements will be described in detail.

第1の実施形態の1つの可能な実施態様では、IM機構、TM機構、CRM機構、およびOM機構は、「ホストされるアプリケーション」プロセッサ要素に高速バス(たとえば、PCI−Expressまたはプロプライエタリバス)を介して接続された入出力要素に組み込まれる。2つの入出力要素が、高完全性要件をサポートするために使用される(その間の通信チャネルと共に)。さらに、「ホストされるアプリケーション」要素のソフトウェアは、規定された同期化ポイントでこれらの機構と相互作用する。   In one possible implementation of the first embodiment, the IM mechanism, TM mechanism, CRM mechanism, and OM mechanism provide a high speed bus (eg, PCI-Express or proprietary bus) to the “hosted application” processor element. Embedded in the input / output elements connected via Two input / output elements are used (with a communication channel between them) to support high integrity requirements. In addition, the “hosted application” element software interacts with these mechanisms at defined synchronization points.

図4に、第1の実施形態の2レーン高完全性「モジュール」において、上述の機能性がどのように実施できるかのブロック図を示す。当業者であれば、第1の実施形態の他の可能な実施態様には、次の2つの例を含めて多数あることを認めるであろう:
(i)各々のレーンが、非常に統合されたデュアル(二重)(またはマルチ(多重))コアマイクロプロセッサと、関連するクロック、メモリデバイス、入出力デバイスなどをそれぞれ含み、「ホストされるアプリケーション」要素310の機能性が、当該「モジュール」のハードウェアコンポーネントおよびソフトウェアコンポーネントを介して、1つまたは複数のマイクロプロセッサコア(および関連するクロック、メモリ、入出力デバイスなど)を利用して実施され、入出力要素320の機能性が、当該「モジュール」のハードウェアコンポーネントおよびソフトウェアコンポーネントを介して各レーン上の組み込まれた、1つまたは複数のマイクロプロセッサコア(および関連するメモリ、入出力デバイスなど)を利用して実施されるものであるような、これら2つの処理レーンからなる「モジュール」、
(ii)各々のレーンが、単一コアマイクロプロセッサおよび関連するクロック、メモリデバイス、入出力デバイスなどを含み、各レーンの「ホストされるアプリケーション」要素310および入出力要素320の機能性のすべてが各レーン上のマイクロプロセッサコアおよび関連するメモリ、入出力デバイスなどによって提供される「モジュール」のハードウェアコンポーネントおよびソフトウェアコンポーネントを介して実施されるという、このような2つの処理レーンからなる「モジュール」。
FIG. 4 shows a block diagram of how the above functionality can be implemented in the two-lane high integrity “module” of the first embodiment. One skilled in the art will recognize that there are many other possible implementations of the first embodiment, including the following two examples:
(I) Each lane includes a highly integrated dual (or multiple) core microprocessor and associated clock, memory device, input / output device, etc. The functionality of element 310 is implemented utilizing one or more microprocessor cores (and associated clocks, memory, input / output devices, etc.) via the “module” hardware and software components. , One or more microprocessor cores (and associated memory, input / output devices, etc.) in which the functionality of the input / output elements 320 is incorporated on each lane via the “module” hardware and software components ) In a such things, it consists of two processing lanes "module",
(Ii) Each lane includes a single core microprocessor and associated clock, memory device, input / output device, etc., all of the functionality of the “hosted application” element 310 and input / output element 320 for each lane A “module” consisting of two such processing lanes, implemented through the “module” hardware and software components provided by the microprocessor core and associated memory, input / output devices, etc. on each lane .

図4の例に示されているように、第1の実施形態による高完全疎同期「モジュール」300は、2つのレーンすなわちレーン1およびレーン2を含み、これによって、第1の実施形態を、N(2以上の正の整数)レーン「モジュール」で利用できるものである。「モジュール」300は、「ホストされるアプリケーション」要素310をも含み、この「ホストされるアプリケーション」要素310は、レーンごとのプロセッサCPU(350A、350B)を有する(図4に示された例では、レーン1用の1つのプロセッサCPU(350Aおよびレーン2用の1つのプロセッサCPU(350B)という2つのプロセッサCPUがある)。各プロセッサCPU(350A、350B)は、不揮発性メモリ(NVM)330A、330Bおよびシンクロナスダイナミックランダムアクセスメモリ(SDRAM)340A、340Bへのアクセスを有し、これによって、プロセッサCPUごとにクロック回路が設けられる。図4には、各プロセッサCPU(350A、350B)にクロック信号を供給する1つのクロック回路360が示され、これによって、クロックモニタ365も、安定したクロック信号が常時各レーンのプロセッサCPU(350A、350B)に供給されることを保証するために設けられる。当業者は、本明細書で説明される実施形態の趣旨および範囲の中に留まりながら、「ホストされるアプリケーション」要素310上のクロック360およびクロックモニタ365を、各レーンで動作する独立のクロックに置換でき、入出力要素320上のクロック384およびクロックモニタ382を、各レーンで動作する独立のクロックに置換できることを認めるであろう。   As shown in the example of FIG. 4, the highly fully sparse synchronous “module” 300 according to the first embodiment includes two lanes, lane 1 and lane 2, whereby the first embodiment is N (a positive integer greater than or equal to 2) lane “module” can be used. The “module” 300 also includes a “hosted application” element 310, which has a processor CPU (350A, 350B) for each lane (in the example shown in FIG. 4). , One processor CPU for lane 1 (there are two processor CPUs 350A and one processor CPU (350B) for lane 2) Each processor CPU (350A, 350B) is a non-volatile memory (NVM) 330A, 330B and synchronous dynamic random access memory (SDRAM) 340A, 340B, and a clock circuit is provided for each processor CPU, which is shown in FIG. Supply One clock circuit 360 is shown, whereby a clock monitor 365 is also provided to ensure that a stable clock signal is always provided to the processor CPU (350A, 350B) in each lane. While staying within the spirit and scope of the embodiments described herein, the clock 360 and clock monitor 365 on the “Hosted Applications” element 310 can be replaced with independent clocks operating in each lane. It will be appreciated that the clock 384 and clock monitor 382 on the output element 320 can be replaced with independent clocks operating in each lane.

「ホストされるアプリケーション」要素310は、PCI−Eバスによって、各それぞれのレーン内で入出力要素320に通信的に結合される。さらに、「ホストされるアプリケーション」要素310の各レーンは、PCI−Eバスによって「ホストされるアプリケーション」要素310の他方のレーンに接続される。当業者は、本明細書で説明される実施形態の趣旨および範囲の中に留まりながら、他のタイプのバス、交換網、またはメモリデバイスを利用して、「ホストされるアプリケーション」要素310内ならびに「ホストされるアプリケーション」要素310と入出力要素320との間でそのような通信接続を提供できることを認めるであろう。   The “hosted application” element 310 is communicatively coupled to the I / O element 320 in each respective lane by a PCI-E bus. Further, each lane of the “hosted application” element 310 is connected to the other lane of the “hosted application” element 310 by a PCI-E bus. Those skilled in the art will utilize other types of buses, switching networks, or memory devices while remaining within the spirit and scope of the embodiments described herein in the “hosted application” element 310 and It will be appreciated that such a communication connection can be provided between the “hosted application” element 310 and the input / output element 320.

入出力要素320は、レーン1入出力プロセッサ370Aおよびレーン2入出力プロセッサ370Bを含み、これによって、これらの入出力プロセッサ370A、370Bは、PCI−Eバスによって互いに通信的に接続される。当業者は、本明細書で説明される実施形態の趣旨および範囲の中に留まりながら、他のタイプのバス、交換網、またはメモリデバイスを利用して、各レーンの入出力プロセッサ370A、370Bの間でそのような通信接続を提供できることを認めるであろう。   The input / output element 320 includes a lane 1 input / output processor 370A and a lane 2 input / output processor 370B, so that these input / output processors 370A and 370B are communicatively connected to each other by a PCI-E bus. Those skilled in the art will be able to use other types of buses, switching networks, or memory devices to maintain the input / output processors 370A, 370B of each lane while remaining within the spirit and scope of the embodiments described herein. It will be appreciated that such communication connections can be provided between.

各入出力プロセッサ370A、370Bは、データ入力管理要素(IM)、時刻管理要素(TM)、クリティカル領域管理要素(CRM)、およびデータ出力管理要素(OM)を含む。各入出力プロセッサ370A、370Bは、他の入出力要素375A、375BおよびARINC 664 Part 7要素380A、380Bをも含み、これによって、これらの要素は、航空機コンピュータ処理技術の当業者に既知であり、説明を簡潔にするためにさらには説明されない。当業者は、本明細書で説明される実施形態の趣旨および範囲の中に留まりながら、他のタイプの入出力データバス(ARINC664 Part 7以外)を利用して、「モジュール」のそのような通信接続を提供できることを認めるであろう。   Each input / output processor 370A, 370B includes a data input management element (IM), a time management element (TM), a critical area management element (CRM), and a data output management element (OM). Each I / O processor 370A, 370B also includes other I / O elements 375A, 375B and an ARINC 664 Part 7 element 380A, 380B, which are known to those skilled in the art of aircraft computer processing, No further explanation is given for the sake of brevity. Those skilled in the art will utilize other types of input / output data buses (other than ARINC 664 Part 7) while remaining within the spirit and scope of the embodiments described herein to communicate such “modules”. You will admit that you can provide a connection.

クロックユニット384およびクロックモニタ382も、マルチレーン「モジュール」の各レーン内で各入出力プロセッサ370A、370Bに安定したクロック信号を供給するために、図4に示されている。当業者は、本明細書で説明される実施形態の趣旨および範囲の中に留まりながら、入出力要素320上のクロック384およびクロックモニタ382を、各レーンで動作する独立のクロックに置換できることを認めるであろう。   A clock unit 384 and a clock monitor 382 are also shown in FIG. 4 to provide a stable clock signal to each input / output processor 370A, 370B within each lane of the multi-lane “module”. Those skilled in the art will recognize that the clock 384 and clock monitor 382 on the input / output element 320 can be replaced with independent clocks operating in each lane, while remaining within the spirit and scope of the embodiments described herein. Will.

図4には、各レーンの入出力PHYユニット386A、386B、各レーンのXFMRユニット388A、388B、および電力信号を供給し、マルチレーン「モジュール」の各レーン内のコンポーネントの監視を実行する電源およびモニタユニット390も示されている。インターフェースユニット395は、「モジュール」300のさまざまなコンポーネントに電力に関する信号接続(たとえば、12V DC、PWR ENBL)を供給する。電力を、たとえば、航空機のエンジンから(航空機エンジンがオンになっている時に)またはバッテリもしくは発電機から(航空機エンジンがオフになっている時に)インターフェースユニット395に(したがって、高完全性「モジュール」300のさまざまなコンポーネントに)供給することができる。当業者は、本明細書で説明される実施形態の趣旨および範囲の中に留まりながら、電源およびモニタ390を独立の(レーンあたり1つ)または「モジュール」用の単一の電源およびモニタのいずれかとして実施できることを認めるであろう。   FIG. 4 includes an input / output PHY unit 386A, 386B for each lane, an XFMR unit 388A, 388B for each lane, and a power supply that provides power signals and performs monitoring of the components in each lane of the multilane “module”. A monitor unit 390 is also shown. The interface unit 395 provides power connection (eg, 12V DC, PWR ENBL) to the various components of the “module” 300. Power is supplied, for example, from the aircraft engine (when the aircraft engine is turned on) or from the battery or generator (when the aircraft engine is turned off) to the interface unit 395 (hence the high integrity “module”). 300 different components). Those skilled in the art will recognize that the power supply and monitor 390 can be either independent (one per lane) or a single power supply and monitor for a “module” while remaining within the spirit and scope of the embodiments described herein. I will admit that it can be implemented as well.

次では、IM機構、TM機構、CRM機構、およびOM機構の概要を提供する。   The following provides an overview of the IM, TM, CRM, and OM mechanisms.

IMは、すべての計算レーンで動作するソフトウェアが、高完全性入力データの正確に同一のセットを受け取ることを保証する。データの同一のセットを各レーンに供給できない場合には、IMは、そのデータを破棄し、いずれかのレーンがそのデータを受け取るのを防ぎ、エラー状態を報告する。   IM ensures that software running on all compute lanes receives an exact identical set of high integrity input data. If the same set of data cannot be supplied to each lane, the IM discards the data, prevents any lane from receiving the data, and reports an error condition.

普通の完全性と考えられる大量のデータフローがある場合がある。すなわち、デュアルレーン入出力インターフェース(およびクロスレーンデータ妥当性検査を実行するための関連するオーバーヘッド)を必要としない、「モジュール」に流れ込むまたは「モジュール」内の「ホストされるアプリケーション」から流れる大量のデータがある場合がある。第1の実施形態は、普通の完全性データフローを1つの普通の完全性ソースから両方の計算レーンに供給することを可能にする。この最適化は、普通の完全性または高完全性のいずれかとして各データフロー(たとえば、「ホストされるアプリケーション」宛のまたはこれから送られる各ARINC664 Part 7仮想リンク)を指定する構成パラメータを介して実施することができる。   There may be a large amount of data flow that is considered normal integrity. That is, it does not require a dual lane I / O interface (and associated overhead for performing cross lane data validation), flows into a “module” or flows from a “hosted application” within a “module” There may be data. The first embodiment allows a normal integrity data flow to be supplied to both computation lanes from one common integrity source. This optimization is via configuration parameters that specify each data flow (eg, each ARINC 664 Part 7 virtual link destined for or coming from a “hosted application”) as either normal or high integrity. Can be implemented.

商用航空機で使用される第1の実施形態の1つの可能な実施態様では、複数のレーン上で入力データ同等性を提供する必要があるサービスの例は、ARINC653 Part 1入出力API呼出し(たとえば、サンプリングおよびキューイングポート)、ARINC653 Part 2入出力API呼出し(たとえば、ファイルシステムおよびサービスアクセスポイント)、OS入出力API呼出し(たとえば、POSIXのプロセス間通信)、および他(たとえばプラットフォーム固有)のAPI呼出しである。   In one possible implementation of the first embodiment used in commercial aircraft, examples of services that need to provide input data equivalence on multiple lanes are ARINC 653 Part 1 I / O API calls (eg, Sampling and queuing ports), ARINC 653 Part 2 I / O API calls (eg, file system and service access point), OS I / O API calls (eg, POSIX interprocess communication), and other (eg, platform specific) API calls It is.

TMは、要求が時間的にスキューを有する(計算レーンの間の疎同期に起因して)場合であっても、すべての計算レーンが同一の要求に関する同等の時刻値を受け取ることを保証する。これに関して、時刻は、その値が別の「ホストされるアプリケーション」または「モジュール」の外部のLRUによって作られるのではなく、「モジュール」によって作られ/制御されるので、「ホストされるアプリケーション」への特殊なタイプの入力データである。図5に、第1の実施形態による、TM400およびこれがレーンに送り、マルチレーン「モジュール」のレーンから受け取る信号のブロック図を示す。   TM ensures that all computation lanes receive equivalent time values for the same request, even if the requests are skewed in time (due to loose synchronization between computation lanes). In this regard, the time is “hosted application” because its value is created / controlled by the “module” rather than by another “hosted application” or LRU outside of the “module”. Is a special type of input data. FIG. 5 shows a block diagram of TM 400 and the signals it sends to the lane and receives from the lane of the multi-lane “module” according to the first embodiment.

本質的に、TMは、すべての計算レーンが、他のレーンによって行われた要求に対応する同一の正確な時刻を有することを保証する。深さ1バッファ(たとえば、1つの時刻エントリだけを格納するバッファ)が、レーンが両方とも時刻に関する要求を発行した後に両方のレーンに送達される時刻の値を保持する。計算レーンが、長い時間期間の間、時刻要求を発行するために他方のレーンを「待っている」(他方のレーンでのエラーの結果としてである可能性が最も高い)場合に、そのレーンのウォッチドッグタイマ機構(図示せず)が、このエラー状態を検出し、これに応答するのに使用される。   In essence, TM ensures that all computational lanes have the same exact time corresponding to requests made by other lanes. A depth 1 buffer (eg, a buffer that stores only one time entry) holds a time value that is delivered to both lanes after both lanes issue a request for time. If a computational lane “waits” on the other lane to issue a time request for a long period of time (most likely as a result of an error on the other lane) A watchdog timer mechanism (not shown) is used to detect and respond to this error condition.

第1の実施形態によるTMは、ハードウェア/ソフトウェア論理を介して「モジュール」内で(たとえば、FPGAへのアクセスを制御する「モジュール」ソフトウェアと組み合わせて入出力要素上のFPGA内で)実施することができる。効率的な同期化された時刻を提供するために、TMを、「ユーザ」モードでアクセス可能にすることができる(システム呼出しが不要になるようにするために)。   The TM according to the first embodiment is implemented in a “module” via hardware / software logic (eg, in an FPGA on an input / output element in combination with “module” software that controls access to the FPGA). be able to. In order to provide an efficient synchronized time, the TM can be made accessible in “user” mode (so that no system calls are required).

商用航空機で使用される第1の実施形態の1つの可能な実施態様では、TMは、「ホストされるアプリケーション」が、適用可能なARINC653 Part 1およびPart 2 API呼出し(たとえば、Get_Time)、適用可能なPOSIX API呼出し(たとえば、Timers APIs)、および他(たとえば、プラットフォーム固有)のAPI呼出しを行う時に呼び出される。   In one possible implementation of the first embodiment used in commercial aircraft, the TM is applicable when the “hosted application” is applicable to ARINC 653 Part 1 and Part 2 API calls (eg, Get_Time). Called when making POSIX API calls (eg, Timers APIs), and other (eg, platform specific) API calls.

TMは、プラットフォームソフトウェアがシステム時刻の必要を有する時に呼び出される。図5に示されたTMは、時刻バッファを含む。TMは、各レーンから要求された時刻信号を受け取り、時刻データを各レーンに出力する。現在時刻が、時刻ハードウェアユニットによってTMに供給される。   TM is invoked when the platform software has a need for system time. The TM shown in FIG. 5 includes a time buffer. The TM receives a time signal requested from each lane, and outputs time data to each lane. The current time is supplied to the TM by the time hardware unit.

時刻バッファは、第1の実施形態の代替実施態様では、深さ1バッファではなく、深さNバッファ(たとえば、N個の時刻値を格納できるバッファ)として実施することができる。これは、計算レーンの間に大量のスキュー/ドリフトの可能性があると判定される場合、および同期化ポイント(あるレーンが、他方のレーンが追い付くのを待たなければならないポイントに対応する)の個数を最小にすることが望まれる場合に、性能最適化を提供することができる。   The time buffer, in an alternative implementation of the first embodiment, can be implemented as a depth N buffer (eg, a buffer capable of storing N time values) rather than a depth 1 buffer. This is the case when it is determined that there is a large amount of skew / drift potential between computational lanes, and the synchronization point (corresponding to the point where one lane must wait for the other lane to catch up) Performance optimization can be provided when it is desired to minimize the number.

図6に、第1の実施形態による、CRM 500およびこれがレーンに送り、マルチレーン「モジュール」のレーンから受け取る信号のブロック図を示す。CRMは、複数のレーン内のクリティカル領域を計算レーンにまたがって識別でき、同期化できるようにする。これらのクリティカル領域は、本質的に、同一の処理コンテキスト内のすべての他の実行のスレッドによってプリエンプトすることのできない、ソフトウェア内の領域である。「ホストされるアプリケーション」および「モジュール」ソフトウェアによって生成されるある種のエポックは、すべての計算レーンにまたがって正しく同期化するためにCRMと相互作用する。CRMは、すべてのレーンが同期化された形で「モジュール」CR状態に入り、出ることを保証する。   FIG. 6 shows a block diagram of the CRM 500 and the signals it sends to the lane and receives from the lane of the multi-lane “module” according to the first embodiment. CRM allows critical regions in multiple lanes to be identified and synchronized across computational lanes. These critical regions are essentially regions in software that cannot be preempted by all other threads of execution within the same processing context. Certain epochs generated by “hosted application” and “module” software interact with the CRM to properly synchronize across all compute lanes. The CRM ensures that all lanes enter and exit the “module” CR state in a synchronized manner.

図6のブロック図からわかるように、CRM論理は、2レーンモジュールについて3セットの入力イベントすなわち、クリティカル領域に入るか出るためのレーン1要求、クリティカル領域に入るか出るためのレーン2要求、および「モジュール」割込みを必要とする。各レーンは、そのレーンで動作するソフトウェアまたはそのレーンのハードウェア(たとえば、ハードウェア割込み)によってクリティカル領域に入る要求を生成することができる。各レーンは、そのレーンで動作するソフトウェアまたはそのレーンのハードウェアによってクリティカル領域から出る要求を生成することができる。2レーン「モジュール」について、CRMは、単一の出力イベントすなわち直列化されたクリティカルイベントを有する。直列化されたクリティカルイベントは、タイマ割込みおよびクリティカル領域状態変化イベントの直列化を含む。すべての計算レーンが、直列化されたクリティカルイベントに基づいて同一の状態遷移を実行する。Nレーン処理「モジュール」について、Nは2以上の整数であるが、CRMは、クリティカル領域に入るか出るためのN個の入力要求、「モジュール」割込み、およびN個すべてのレーンに出力される1つの直列化されたクリティカルイベントをサポートする。当業者には、CRMが、「モジュール」の実施態様に基づいて追加のクリティカルイベントを直列化できることが明白であろう。また、当業者には、CRMを、マルチレベルオペレーティングシステム(たとえば、ユーザモード、スーパーバイザモード)などをサポートするために複数レベルのクリティカル領域をサポートするように拡張できることが明白であろう。   As can be seen from the block diagram of FIG. 6, the CRM logic has three sets of input events for a two-lane module: a lane 1 request to enter or exit a critical region, a lane 2 request to enter or exit a critical region, and Requires a “module” interrupt. Each lane may generate a request to enter the critical region by software running on that lane or by the lane's hardware (eg, hardware interrupt). Each lane can generate a request to exit the critical region by software running on that lane or by the hardware of that lane. For a two-lane “module”, the CRM has a single output event, a critical event serialized. Serialized critical events include serialization of timer interrupts and critical region state change events. All computation lanes perform the same state transition based on serialized critical events. For N-lane processing “modules”, N is an integer greater than or equal to 2, but the CRM is output to N input requests to enter or exit the critical region, “module” interrupts, and all N lanes Supports one serialized critical event. It will be apparent to those skilled in the art that the CRM can serialize additional critical events based on the “module” implementation. It will also be apparent to those skilled in the art that the CRM can be extended to support multiple levels of critical regions to support multi-level operating systems (eg, user mode, supervisor mode), etc.

CRMは、ハードウェア論理(たとえば、フィールドプログラマブルゲートアレイ)および/またはソフトウェア論理の組合せとして実施することができる。   The CRM may be implemented as a combination of hardware logic (eg, field programmable gate array) and / or software logic.

一般に、第1の実施形態によるCRMは、現在動作しているスレッド(またはプロセス)とは異なる実行のスレッドへの入力になり得るデータが操作された時に必ず(CRMは、すべての計算レーンにまたがって原子性を保証する)、データ(時刻を含む)がソフトウェアから入力または出力されつつある時に必ず、ソフトウェアがその実行のスレッドを変更することを試みる時に必ず、実行のスレッドが「モジュール」再始動を介して永続することを要求されるデータを変更しつつある時に、およびモジュール割込みを生成するイベントが発生する時に必ず、(CRに入る/出る要求およびモジュール割込みを介して)呼び出される。   In general, the CRM according to the first embodiment is used whenever data that can be input to a thread of execution different from the currently running thread (or process) is manipulated (the CRM spans all computation lanes). Guarantees atomicity), whenever data (including time of day) is being input or output from the software, whenever the software tries to change its thread of execution, the thread of execution is a “module” restart Called (via a request to enter / exit CR and a module interrupt) whenever the data required to persist through is being changed and whenever an event that generates a module interrupt occurs.

図7に、CRMが、入出力プロセッサの他の機構と協力して、図1に示されたシナリオをどのように軽減するかの例を示す。   FIG. 7 shows an example of how the CRM cooperates with other features of the I / O processor to mitigate the scenario shown in FIG.

図7のシステムでは、レーン1および2は、本明細書で説明するOMユニットおよびCRMユニットの追加を含めて、疎同期化されて動作している。この場合に、疎同期化は、レーン1が、レーン2の1命令未満前または後からレーン2の任意の個数の命令だけ前または後までのどこかにある可能性があることを意味する。図7に示された例について、レーン1は、レーン2の「前」にある。   In the system of FIG. 7, lanes 1 and 2 are operating loosely synchronized, including the addition of OM units and CRM units as described herein. In this case, sparse synchronization means that lane 1 may be somewhere before or after less than one instruction in lane 2 and before or after any number of instructions in lane 2. For the example shown in FIG. 7, lane 1 is “before” lane 2.

ステップ1では、レーン1のプロセス1が、グローバルBooleanをTrueにセットする前に、ARINC 653 Lock−Preemption APIを呼び出す。Lock−Preemptionへの呼出しは、クリティカル領域(CR)に入る要求を生成する。しかし、レーン1は、レーン2もARINC 653 Lock−Preemption APIを呼び出すまで「lock−preemption」状態に進むことを許可されず、レーン2のARINC 653 Lock−Preemption APIの呼出しは、クリティカル領域(CR)に入る要求を生成し、その後に、CRMは、両方のレーンに直列化されたクリティカルイベントを送る。   In step 1, process 1 in lane 1 calls the ARINC 653 Lock-Preemption API before setting the global Boolean to True. A call to Lock-Preemption generates a request to enter the critical region (CR). However, Lane 1 is not allowed to go to the “lock-preemption” state until Lane 2 also calls the ARINC 653 Lock-Preemption API, and the ARINC 653 Lock-Preemption API in Lane 2 is called the critical region (CR) Generate a request to enter, after which the CRM sends a critical event serialized to both lanes.

ステップ2では、タイマ割込みが発生する時に、(「モジュール」が、図6に示されているように割り込む)、CRに入る要求が生成される。CRMは、タイマ割込みがいずれかのレーンのコンテキスト切替えを引き起こすことを許容することができない。というのは、各レーンがCRを出る要求を生成し終えるまで、CRMは、別の直列化されたクリティカルイベントを生成できないからである。   In step 2, when a timer interrupt occurs (a “module” interrupts as shown in FIG. 6), a request to enter the CR is generated. The CRM cannot allow a timer interrupt to cause a context switch for any lane. This is because the CRM cannot generate another serialized critical event until each lane has generated a request to exit the CR.

ステップ3では、将来のある時点に、レーン1が、プリエンプションをアンロックし、レーン2が、プリエンプションをロックし、アンロックする(これは、CRを出る要求を生成する)。この時点で、両方のレーンは、グローバルデータを成功して更新済みであり、優先順位プリエンプション(両方のレーンでプロセス2を開始する)は、今や、CRMが次の直列化されたクリティカルイベントを送達することを介して発生することができる。   In step 3, at some point in the future, lane 1 unlocks the preemption and lane 2 locks and unlocks the preemption (this creates a request to exit CR). At this point, both lanes have been successfully updated with global data, and priority preemption (starting process 2 on both lanes) now delivers the next serialized critical event for the CRM. Can be generated through.

ステップ4では、両方のレーンのプロセス2が、Booleanを読み取り、出力(True)を送る。データ出力管理(OM)ユニットは、両方のレーンの出力が等しいことを検証する。図7からわかるように、CRMは、図1に示されたシナリオを軽減する。   In step 4, process 2 in both lanes reads Boolean and sends output (True). A data output management (OM) unit verifies that the outputs of both lanes are equal. As can be seen from FIG. 7, CRM mitigates the scenario shown in FIG.

図8に、CRMが、OMと協力して、図2に示されたシナリオをどのように軽減するかの例を示す。   FIG. 8 shows an example of how the CRM cooperates with the OM to mitigate the scenario shown in FIG.

図8のシステムでは、2つのプロセス(プロセス1およびプロセス2)を有する同一のソフトウェアが、疎同期化された形でレーン1とレーン2との両方で動作している。この場合に、疎同期化は、レーン1が、レーン2の1命令未満前または後からレーン2の任意の個数の命令だけ前または後までのどこかにある可能性があることを意味する。図8に示された例について、レーン1は、レーン2の「前」にある。   In the system of FIG. 8, the same software having two processes (Process 1 and Process 2) is operating on both Lane 1 and Lane 2 in a loosely synchronized fashion. In this case, sparse synchronization means that lane 1 may be somewhere before or after less than one instruction in lane 2 and before or after any number of instructions in lane 2. For the example shown in FIG. 8, lane 1 is “before” lane 2.

ステップ1では、レーン1のプロセス1(低優先順位バックグラウンドプロセス)が、クリティカル領域に入る要求をCRMに送り、その結果、ポートFOOでの出力トランザクションを開始できるようになり、CRMは、レーン1がその出力トランザクションを開始することを可能にする。レーン2のプロセス1も、クリティカル領域に入る要求をCRMに送り、ポートFOOでの出力トランザクションを開始済みであるが、レーン1に「遅れている」。レーン1での処理は、FOOがレーンから出力済みのポイントにあるが、FOOは、まだレーン2から出力されていない。「モジュール」へのCRMの導入に起因して、CRMは、レーン2のプロセス1も同一の出力トランザクションを完了し、クリティカル領域から出ることを要求するまで、レーン1がクリティカル領域から出ることを可能にしない。   In step 1, lane 1 process 1 (low priority background process) sends a request to enter the critical region to the CRM so that it can start an output transaction on the port FOO. Allows to start its output transaction. Process 1 in lane 2 also sends a request to enter the critical region to the CRM and has started an output transaction on port FOO, but is “lagging behind” lane 1. The processing in lane 1 is at a point where FOO has been output from lane, but FOO has not yet been output from lane 2. Due to the introduction of CRM in the “module”, the CRM can leave lane 1 out of the critical region until process 1 in lane 2 also completes the same output transaction and requires it to exit out of the critical region Don't make it.

ステップ2では、レーン1がクリティカル領域から出るのを待っており、レーン2がまだクリティカル領域でその出力トランザクションを行っている間に、タイマ割込みが発生する。   In step 2, waiting for lane 1 to leave the critical area, a timer interrupt is generated while lane 2 is still performing its output transaction in the critical area.

ステップ3では、両方のレーンがその入出力トランザクションを完了し、クリティカル領域から出る要求を送った後に、直列化された割込みを送達することができ、両方のレーンのプロセス2が、動作を開始する。この点の後に、プロセス2は、プロセス1を(両方のレーンで)安全に再始動することができる。図8からわかるように、CRMの追加は、図2に示されたシナリオで発生する障害状態を軽減する。   In step 3, a serialized interrupt can be delivered after both lanes have completed their I / O transaction and sent a request to exit the critical region, and process 2 in both lanes begins operation. . After this point, process 2 can safely restart process 1 (on both lanes). As can be seen from FIG. 8, the addition of CRM mitigates the fault condition that occurs in the scenario shown in FIG.

OMは、すべての計算レーンのソフトウェアから出力される高完全性データが流れることを保証する。エラーが出力データフロー内で検出される場合には、OMは、データが出力されるのを防ぎ、エラー表示を提供する。   OM ensures that high integrity data output from the software of all calculation lanes flows. If an error is detected in the output data flow, the OM prevents data from being output and provides an error indication.

普通の完全性と考えられる大量のデータがある場合があることに留意されたい。すなわち、デュアルレーン入出力要素(およびクロスレーン比較を実行するための関連するオーバーヘッド)を必要としない、大量のデータ(およびソフトウェアアプリケーション全体)がある場合がある。第1の実施形態によるシステムおよび方法は、普通の完全性データを計算レーンの1つから出力することを可能にする(他の計算レーンからの出力は無視される)。第1の実施形態の1つの可能な実施態様では、構成パラメータは、特定のデータまたは「ホストされるアプリケーション」全体を普通の完全性または高完全性のいずれかとして指定する。   Note that there may be a large amount of data that is considered normal integrity. That is, there may be a large amount of data (and the entire software application) that does not require dual lane input / output elements (and associated overhead to perform cross-lane comparisons). The system and method according to the first embodiment allows normal integrity data to be output from one of the calculation lanes (outputs from other calculation lanes are ignored). In one possible implementation of the first embodiment, the configuration parameters specify specific data or the entire “hosted application” as either normal integrity or high integrity.

第1の実施形態による方法およびシステムは、ソースでの高完全性および可用性に関する要件をサポートする。さらに、同期化ポイントが、プラットフォームで動作しているソフトウェアの状態に抽象化されているので、第1の実施形態を、異なるプロセッサをサポートするように拡張することができる。   The method and system according to the first embodiment supports requirements for high integrity and availability at the source. Furthermore, since the synchronization point is abstracted into the state of software running on the platform, the first embodiment can be extended to support different processors.

第1の実施形態の性能は、入出力プレーン上で穏当に同期化でき検証できるデータの量によって制限され得る。これが問題である場合には、普通の完全性のデータおよびソフトウェアアプリケーションと高完全性のデータおよびソフトウェアアプリケーションとの間の区別(システムでの)を利用することによって、性能を最適化することができる。   The performance of the first embodiment can be limited by the amount of data that can be moderately synchronized and verified on the input / output plane. If this is a problem, performance can be optimized by taking advantage of the distinction (in the system) between normal and high integrity data and software applications. .

CRMユニット、TMユニット、IMユニット、およびOMユニットの設計および実施態様は、カスタムハードウェア機能(カスタムFPGA、ASIC)あるいは現在のおよび/またはおそらくは時代遅れのマイクロプロセッサ機能の属性に頼らない。したがって、第1の実施形態に従って作られるモジュールは、次の例示的な有益な属性を示す:組込みメモリコントローラ、異なるクロック回復回路を有する複数の位相ロックループ(PLL)などを含む技術的現状のマイクロプロセッサを利用する能力(これは、CRM、TM、IM、およびOMを提供する「モジュール」のコンポーネントの大幅な再設計を必要とせずに、「モジュール」の性能をたやすく高める(マイクロプロセッサアップグレードを介して)ことを可能にする)、同期化エポックの頻度(すなわち、オーバーヘッド)は、命令レベルロックステップアーキテクチャにおいてはるかにより少ないものでなければならない。したがって、同期化機構はすべて、それにアクセスすることを必要とするソフトウェアから直接にアクセス可能でなければならない(追加のシステム呼出しは不要である)。したがって、同期化に起因する追加のオーバーヘッドは、各エポックで2〜3命令程度でなければならない。   The design and implementation of the CRM, TM, IM, and OM units does not rely on attributes of custom hardware functions (custom FPGA, ASIC) or current and / or possibly obsolete microprocessor functions. Thus, a module made according to the first embodiment exhibits the following exemplary beneficial attributes: a state-of-the-art micro, including an embedded memory controller, multiple phase-locked loops (PLLs) with different clock recovery circuits, and the like. The ability to utilize the processor (this easily increases the performance of the “module” without requiring a significant redesign of the “module” components that provide CRM, TM, IM, and OM (microprocessor upgrade The frequency of synchronization epochs (ie overhead) must be much less in an instruction level lockstep architecture. Thus, all synchronization mechanisms must be directly accessible from the software that needs to access it (no additional system calls are required). Therefore, the additional overhead due to synchronization must be on the order of 2-3 instructions at each epoch.

第1の実施形態によるシステムおよび方法の他の利益が提供される。性能改善は、ハードウェア性能改善に直接に伴ってスケーリングされなければならない。すなわち、性能改善は、プロセッサとメモリサブシステムとの間のインターフェースに多くの制約を課す可能性がある特殊なハードウェアを必要とはしない。「ホストされるアプリケーション」全体(DO−178B Level B、C、D、E)を、普通の完全性として識別され得るものにすることができる。これが行われる時には、IM要素、TM要素、CRM要素、およびOM要素は、この「ホストされるアプリケーション」に関連するすべてのデータおよび制御についてディスエーブルされ、すべてのトランザクションは、1つの計算レーン上でのみ発生し、他の計算レーンは、この時間中にアイドル状態であることができる。これは、性能のためになるだけではなく、インアクティブ計算レーンのプロセッサを普通の完全性時間ウィンドウ中に「スリープ」モードにすることができる場合に、電力消費(熱生成)の削減をももたらすことができる。   Other benefits of the system and method according to the first embodiment are provided. The performance improvement must be scaled directly with the hardware performance improvement. That is, performance improvements do not require specialized hardware that can impose many constraints on the interface between the processor and the memory subsystem. The entire “hosted application” (DO-178B Level B, C, D, E) can be made identifiable as normal integrity. When this is done, the IM, TM, CRM, and OM elements are disabled for all data and control associated with this “hosted application” and all transactions are on one compute lane. Only occur, and other computational lanes can be idle during this time. This is not only for performance, but also leads to a reduction in power consumption (heat generation) when the processor of inactive compute lanes can be put into a “sleep” mode during a normal integrity time window. be able to.

この第1の実施形態は、システムインテグレータが、異なる「ホストされるアプリケーション」を実行するのにインアクティブ計算レーンの空き時間を利用することによって、普通の完全性「ホストされるアプリケーション」という概念を利用することを可能にする。これは、大量の普通の完全性「ホストされるアプリケーション」を有するシステムについて性能改善をもたらすことができる。   This first embodiment introduces the concept of normal integrity “hosted application” by allowing system integrators to use the free time of inactive compute lanes to execute different “hosted applications”. It is possible to use. This can lead to performance improvements for systems with a large amount of normal integrity “hosted applications”.

第1の実施形態によるシステムおよび方法は、デュアル独立計算レーンを動作させることができることに向いており、したがって、普通の完全性モードでの「モジュール」の性能を効果的に2倍にする。   The system and method according to the first embodiment is suitable for operating dual independent computing lanes, thus effectively doubling the performance of the “module” in normal integrity mode.

第1の実施形態によるシステムおよび方法は、「モジュール」上の異なる計算レーン上の異なるプロセッサをサポートする。この場合に、異なるプロセッサの浮動小数点ユニットが、異なる丸め/切捨挙動を提供することが可能である(たとえば)場合があり、これは、わずかに異なるデータが異なる計算レーンから出ることをもたらす可能性がある。したがって、近似データ比較(正確データ比較ではなくを、異なるプロセッサをサポートするために、あるクラスの出力データフローについて利用することができる。   The system and method according to the first embodiment supports different processors on different computation lanes on the “module”. In this case, different processor floating point units may be able to provide different rounding / truncation behavior (for example), which may result in slightly different data coming out of different computation lanes. There is sex. Thus, approximate data comparison (rather than exact data comparison) can be used for a class of output data flows to support different processors.

IM、TM、CRM、およびOMを使用する機構とのソフトウェアアプリケーション相互作用を、任意のオペレーティングシステムAPIに組み込むことができる(すなわち、「特殊な」APIは不要である)。したがって、第1の実施形態によるシステムおよび方法は、ソフトウェアアプリケーション開発者に最小限の制約だけを課すと考えられる。   Software application interaction with mechanisms using IM, TM, CRM, and OM can be incorporated into any operating system API (ie, no “special” API is required). Thus, the system and method according to the first embodiment is considered to impose only minimal constraints on the software application developer.

システムインテグレータ(およびまたはツール)に対する唯一の影響は、入出力構成データがデータフローおよび「ホストされるアプリケーション」を高完全性または普通の完全性として識別するために(オプションの)属性を有することであると期待される。   The only impact on system integrators (and / or tools) is that the I / O configuration data has (optional) attributes to identify the data flow and "hosted application" as high or normal integrity. Expected to be.

この書かれた説明は、最良の態様を含む本発明を開示するのに、およびすべての当業者が本発明を作り、使用することを可能にするのに、例を使用する。本発明の特許可能範囲は、特許請求の範囲によって定義され、当業者が思い浮かべる他の例を含むことができる。そのような他の例は、それらが特許請求の範囲の文字どおりの言葉と異ならない構造的要素を有する場合に、またはそれらが特許請求の範囲の文字どおりの言葉からの実質のない相違を有する同等の構造的要素を含む場合に、特許請求の範囲の範囲内にあることが意図されている。   This written description uses examples to disclose the invention, including the best mode, and also to enable any person skilled in the art to make and use the invention. The patentable scope of the invention is defined by the claims, and may include other examples that occur to those skilled in the art. Such other examples are equivalent if they have structural elements that do not differ from the literal words of the claims, or if they have a substantial difference from the literal words of the claims. Where structural elements are included, they are intended to be within the scope of the claims.

300 高完全疎同期「モジュール」
310 「ホストされるアプリケーション」要素
320 入出力要素
330A 不揮発性メモリ(NVM)
330B 不揮発性メモリ(NVM)
340A シンクロナスダイナミックランダムアクセスメモリ(SDRAM)
340B シンクロナスダイナミックランダムアクセスメモリ(SDRAM)
350A プロセッサCPU
350B プロセッサCPU
360 クロック回路
365 クロックモニタ
370A レーン1入出力プロセッサ
370B レーン2入出力プロセッサ
375A 他の入出力要素
375B 他の入出力要素
380A ARINC 664 Part 7要素
380B ARINC 664 Part 7要素
382 クロックモニタ
384 クロック
386A 入出力PHYユニット
386B 入出力PHYユニット
388A XFMRユニット
388B XFMRユニット
390 電源およびモニタユニット
395 インターフェースユニット
500 CRM
300 Highly Sparsely Synchronized “Module”
310 “Hosted Application” Element 320 I / O Element 330A Nonvolatile Memory (NVM)
330B non-volatile memory (NVM)
340A Synchronous dynamic random access memory (SDRAM)
340B Synchronous dynamic random access memory (SDRAM)
350A processor CPU
350B processor CPU
360 Clock circuit 365 Clock monitor 370A Lane 1 input / output processor 370B Lane 2 input / output processor 375A Other input / output elements 375B Other input / output elements 380A ARINC 664 Part 7 elements 380B ARINC 664 Part 7 elements 382 Clock monitor 384 Clock 386A I / O PHY unit 386B I / O PHY unit 388A XFMR unit 388B XFMR unit 390 Power supply and monitor unit 395 Interface unit 500 CRM

Claims (9)

高い完全性を有するN(Nは2以上の整数)レーンのコンピュータ処理モジュール(「モジュール」)システムのための、「モジュール」であって、
処理レーンあたり1つの「ホストされるアプリケーション」要素および入出力要素と、
前記N個の処理レーンのそれぞれで動作するソフトウェアにより発生される要求が前記N個の処理レーンのそれぞれによって、実際にいつ受け取られ、いつ作用されるかに関わりなく、前記要求について同等の時刻値を判定するように構成された時刻管理ユニット(TM)と、
それぞれのレーン内のクリティカル領域を、前記N個の処理レーンのすべてにまたがって識別し、同期化することを可能にするように構成されたクリティカル領域管理ユニット(CRM)と
を含む「モジュール」。
A “module” for a computer processing module (“module”) system of N (N is an integer greater than or equal to 2) lanes with high integrity,
One “hosted application” element and input / output element per processing lane;
An equivalent time value for the request, regardless of when the request generated by software running in each of the N processing lanes is actually received and acted upon by each of the N processing lanes. A time management unit (TM) configured to determine
A “module” comprising a critical region management unit (CRM) configured to allow a critical region in each lane to be identified and synchronized across all of the N processing lanes.
各それぞれのレーンが前記N個の処理レーンの他のすべてと正確に同一の高完全性データのセットを受け取ることを保証し、そうでない場合にエラー状態を出力するように構成されたデータ入力管理(IM)ユニットと、
前記それぞれのレーンが前記N個の処理レーンの他のすべてと正確に同一の高完全性データのセットを出力するかどうかを判定し、そうでない場合にエラー状態を出力するように構成されたデータ出力管理(OM)ユニットと
をさらに含む、請求項1記載の「モジュール」。
Data input management configured to ensure that each respective lane receives exactly the same set of high integrity data as all other of the N processing lanes, and otherwise outputs an error condition An (IM) unit;
Data configured to determine whether each respective lane outputs a set of exactly the same integrity data as all other of the N processing lanes, and to output an error condition otherwise. The “module” of claim 1, further comprising an output management (OM) unit.
前記CRMによって識別される前記クリティカル領域が、現在動作している実行のスレッドとは別々の任意の他の実行のスレッドによってプリエンプトすることができないソフトウェア内の領域に対応する、請求項1記載の「モジュール」。 The claim 1, wherein the critical region identified by the CRM corresponds to a region in software that cannot be preempted by any other thread of execution that is separate from the thread of execution that is currently running. module". 前記TMが、深さ1のバッファを含む、請求項1記載の「モジュール」。 The “module” of claim 1, wherein the TM includes a depth one buffer. 前記TMが、深さMのバッファを含み、Mが、2以上の整数である、請求項1記載の「モジュール」。 The “module” according to claim 1, wherein the TM includes a buffer having a depth of M, and M is an integer of 2 or more. 高完全性データと普通の完全性データとの両方が、前記N個の処理レーンを介して流れ、前記高完全性データだけが、前記高完全性「モジュール」によって操作される、請求項1記載の「モジュール」。 The high integrity data and the normal integrity data both flow through the N processing lanes, and only the high integrity data is manipulated by the high integrity "module". "Module". 前記TMが、有限状態機械として実施される、請求項1記載の「モジュール」。 The “module” of claim 1, wherein the TM is implemented as a finite state machine. 前記CRMが、有限状態機械として実施される、請求項1記載の「モジュール」。 The “module” of claim 1, wherein the CRM is implemented as a finite state machine. 高い完全性を有するN(2以上の整数)個のレーンを有するコンピュータ処理モジュール(「モジュール」)システムのための「モジュール」において、
処理レーンあたり1つの「ホストされるアプリケーション」要素および入出力要素と、
有限状態機械として実施され、前記N個の処理レーンのそれぞれで動作するソフトウェアによって行われる要求が前記N個の処理レーンのそれぞれによって実際にいつ受け取られ、作用されるかに関わりなく、前記要求について同等の時刻値を判定するように構成された時刻管理ユニット(TM)と、
有限状態機械として実施され、それぞれのレーン内のクリティカル領域を前記N個の処理レーンのすべてにまたがって識別し、同期化することを可能にするように構成されたクリティカル領域管理ユニット(CRM)と、
各それぞれのレーンが前記N個の処理レーンの他のすべてと正確に同一の高完全性データのセットを受け取ることを保証し、そうでない場合にエラー状態を出力するように構成されたデータ入力管理(IM)ユニットと、
前記それぞれのレーンが前記N個の処理レーンの他のすべてと正確に同一の高完全性データのセットを出力するかどうかを判定し、そうでない場合にエラー状態を出力するように構成されたデータ出力管理(OM)ユニットと
を含み、高完全性データと普通の完全性データとの両方が、前記N個の処理レーンを介して流れ、前記高完全性データだけが、前記高完全性「モジュール」によって操作される「モジュール」。
In a “module” for a computer processing module (“module”) system having N (an integer greater than or equal to 2) lanes with high integrity,
One “hosted application” element and input / output element per processing lane;
Regardless of when requests made by software running in each of the N processing lanes, implemented as a finite state machine, are actually received and acted upon by each of the N processing lanes, A time management unit (TM) configured to determine an equivalent time value;
A critical region management unit (CRM) implemented as a finite state machine and configured to allow critical regions in each lane to be identified and synchronized across all of the N processing lanes ,
Data input management configured to ensure that each respective lane receives exactly the same set of high integrity data as all other of the N processing lanes, and otherwise outputs an error condition An (IM) unit;
Data configured to determine whether each respective lane outputs a set of exactly the same integrity data as all other of the N processing lanes, and to output an error condition otherwise. Both high integrity data and normal integrity data flow through the N processing lanes, and only the high integrity data is the high integrity “module”. "Module" operated by.
JP2010518384A 2007-07-24 2008-07-24 High integrity and high availability computer processing module Expired - Fee Related JP5436422B2 (en)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US93504407P 2007-07-24 2007-07-24
US60/935,044 2007-07-24
US13871708A 2008-06-13 2008-06-13
US12/138,717 2008-06-13
PCT/US2008/071023 WO2009015276A2 (en) 2007-07-24 2008-07-24 High integrity and high availability computer processing module

Publications (3)

Publication Number Publication Date
JP2010534888A true JP2010534888A (en) 2010-11-11
JP2010534888A5 JP2010534888A5 (en) 2013-03-28
JP5436422B2 JP5436422B2 (en) 2014-03-05

Family

ID=40149643

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010518384A Expired - Fee Related JP5436422B2 (en) 2007-07-24 2008-07-24 High integrity and high availability computer processing module

Country Status (6)

Country Link
EP (1) EP2174221A2 (en)
JP (1) JP5436422B2 (en)
CN (1) CN101861569B (en)
BR (1) BRPI0813077B8 (en)
CA (1) CA2694198C (en)
WO (1) WO2009015276A2 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016151674A1 (en) * 2015-03-20 2016-09-29 ルネサスエレクトロニクス株式会社 Data processing device
JP2019125349A (en) * 2017-11-21 2019-07-25 ザ・ボーイング・カンパニーThe Boeing Company Message synchronization system

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102011078630A1 (en) * 2011-07-05 2013-01-10 Robert Bosch Gmbh Method for setting up a system of technical units
US8924780B2 (en) * 2011-11-10 2014-12-30 Ge Aviation Systems Llc Method of providing high integrity processing
CN104699550B (en) * 2014-12-05 2017-09-12 中国航空工业集团公司第六三一研究所 A kind of error recovery method based on lockstep frameworks
US10802932B2 (en) 2017-12-04 2020-10-13 Nxp Usa, Inc. Data processing system having lockstep operation

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02202638A (en) * 1987-11-09 1990-08-10 Tandem Comput Inc Fault-tolerant computer system fitted with multiprocessor
JPH06187185A (en) * 1992-12-18 1994-07-08 Nec Commun Syst Ltd Duplex device
JP2005302020A (en) * 2004-04-06 2005-10-27 Hewlett-Packard Development Co Lp Core-level processor lockstepping
JP2006512634A (en) * 2002-09-12 2006-04-13 シーメンス アクチエンゲゼルシヤフト Method and circuit arrangement for synchronizing processing units synchronously or asynchronously clocked
JP2006302289A (en) * 2005-04-19 2006-11-02 Hewlett-Packard Development Co Lp Computing with both lock-step and free-step processor modes

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5226152A (en) * 1990-12-07 1993-07-06 Motorola, Inc. Functional lockstep arrangement for redundant processors
US6327668B1 (en) * 1998-06-30 2001-12-04 Sun Microsystems, Inc. Determinism in a multiprocessor computer system and monitor and processor therefor
US6615366B1 (en) * 1999-12-21 2003-09-02 Intel Corporation Microprocessor with dual execution core operable in high reliability mode
WO2006045786A1 (en) * 2004-10-25 2006-05-04 Robert Bosch Gmbh Method and device for mode switching and signal comparison in a computer system comprising at least two processing units
CN100392420C (en) * 2005-03-17 2008-06-04 上海华虹集成电路有限责任公司 Multi-channel analyzer of non-contact applied chip

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02202638A (en) * 1987-11-09 1990-08-10 Tandem Comput Inc Fault-tolerant computer system fitted with multiprocessor
JPH06187185A (en) * 1992-12-18 1994-07-08 Nec Commun Syst Ltd Duplex device
JP2006512634A (en) * 2002-09-12 2006-04-13 シーメンス アクチエンゲゼルシヤフト Method and circuit arrangement for synchronizing processing units synchronously or asynchronously clocked
JP2005302020A (en) * 2004-04-06 2005-10-27 Hewlett-Packard Development Co Lp Core-level processor lockstepping
JP2006302289A (en) * 2005-04-19 2006-11-02 Hewlett-Packard Development Co Lp Computing with both lock-step and free-step processor modes

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016151674A1 (en) * 2015-03-20 2016-09-29 ルネサスエレクトロニクス株式会社 Data processing device
CN106796541A (en) * 2015-03-20 2017-05-31 瑞萨电子株式会社 Data processing equipment
JPWO2016151674A1 (en) * 2015-03-20 2017-06-15 ルネサスエレクトロニクス株式会社 Data processing device
US10248156B2 (en) 2015-03-20 2019-04-02 Renesas Electronics Corporation Data processing device
CN106796541B (en) * 2015-03-20 2021-03-09 瑞萨电子株式会社 Data processing apparatus
JP2019125349A (en) * 2017-11-21 2019-07-25 ザ・ボーイング・カンパニーThe Boeing Company Message synchronization system
JP7421858B2 (en) 2017-11-21 2024-01-25 ザ・ボーイング・カンパニー message synchronization system

Also Published As

Publication number Publication date
CA2694198A1 (en) 2009-01-29
BRPI0813077B8 (en) 2020-02-27
BRPI0813077A2 (en) 2017-06-20
BRPI0813077B1 (en) 2020-01-28
CA2694198C (en) 2017-08-08
JP5436422B2 (en) 2014-03-05
CN101861569A (en) 2010-10-13
WO2009015276A3 (en) 2009-07-23
WO2009015276A2 (en) 2009-01-29
CN101861569B (en) 2014-03-19
EP2174221A2 (en) 2010-04-14

Similar Documents

Publication Publication Date Title
US7987385B2 (en) Method for high integrity and high availability computer processing
US8020041B2 (en) Method and computer system for making a computer have high availability
JP5436422B2 (en) High integrity and high availability computer processing module
US9823983B2 (en) Electronic fault detection unit
EP1380952B1 (en) Fault-tolerant computer system, re-synchronization method thereof and re-synchronization program thereof
US9329958B2 (en) Efficient incremental checkpointing of virtual devices
US8205201B2 (en) Process for maintaining execution synchronization between several asynchronous processors working in parallel and in a redundant manner
JP2001523855A (en) Failure recovery / fault-tolerant computer
CA2335709C (en) Synchronization of processors in a fault tolerant multi-processor system
KR101835458B1 (en) Method, system and computer-readable storage medium for restarting data processing systems
US7581222B2 (en) Software barrier synchronization
JPH0833874B2 (en) Device for synchronizing multiple processors
US10445169B2 (en) Temporal relationship extension of state machine observer
CN102799212B (en) Global clock system for multi-core multi-processor parallel system, and application method thereof
WO2016062460A1 (en) Improved efficiency for coordinated start interpretive execution exit for a multithreaded processor
WO2016033755A1 (en) Task handling apparatus and method, and electronic device
CN111400086B (en) Method and system for realizing fault tolerance of virtual machine
Scales et al. The design and evaluation of a practical system for fault-tolerant virtual machines
CN107111532B (en) Recovery and fault tolerance under computational uncertainty
Ramanathan et al. Checkpointing and Rollback Recovery in a Distributed System Using Common Time Base.
WO2011116672A1 (en) Method and apparatus for patching shared code segment
CA2826568C (en) System and method for controlling processor instruction execution
CN108052420B (en) Zynq-7000-based dual-core ARM processor single event upset resistance protection method
CN114020095B (en) Dual-processor lock step system based on clock alignment and synchronization
US20150169327A1 (en) Framework to provide time bound execution of co-processor commands

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110708

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130207

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130313

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130319

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130613

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130716

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131011

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20131112

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131210

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees