JP6419215B2 - フェイルセーフ計算を実施するための方法 - Google Patents

フェイルセーフ計算を実施するための方法 Download PDF

Info

Publication number
JP6419215B2
JP6419215B2 JP2016566985A JP2016566985A JP6419215B2 JP 6419215 B2 JP6419215 B2 JP 6419215B2 JP 2016566985 A JP2016566985 A JP 2016566985A JP 2016566985 A JP2016566985 A JP 2016566985A JP 6419215 B2 JP6419215 B2 JP 6419215B2
Authority
JP
Japan
Prior art keywords
calculation
result
scalar
scaled
binary representation
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
Application number
JP2016566985A
Other languages
English (en)
Other versions
JP2017515243A (ja
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 JP2017515243A publication Critical patent/JP2017515243A/ja
Priority to JP2018134495A priority Critical patent/JP6914230B2/ja
Application granted granted Critical
Publication of JP6419215B2 publication Critical patent/JP6419215B2/ja
Active 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/14Error detection or correction of the data by redundancy in operation
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1492Generic software techniques for error detection or fault masking by run-time replication performed by the application software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0796Safety measures, i.e. ensuring safe condition in the event of error, e.g. for controlling element
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1487Generic software techniques for error detection or fault masking using N-version programming
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1497Details of time redundant execution on a single processing unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/805Real-time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Hardware Redundancy (AREA)
  • Retry When Errors Occur (AREA)
  • Detection And Correction Of Errors (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Description

本発明はコンピューティングに関し、より詳細には、コンピュータ上でフェイルセーフ計算を実施するための方法及びデバイスに関する。
重要なシステム、すなわち、故障した場合に人間の健康及び環境に高い危険性を呈するシステムを安全に動作させることができる機器に対する需要が増大している。冗長なハードウェア構成要素を設計すること、及び、ソフトウェアにエラーがないことを保証することによって危険性を低減するという域を越えて、フェイルセーフ計算を保証するように重要なシステムを動作させることが望ましい場合もある。フェイルセーフ計算とは、ソフトウェア数学ライブラリまたはハードウェアベースのプロセッサに欠陥がある結果として計算エラーが導入されることがないことを意味する。
安全度水準、安全計装水準、安全計装システム、安全工学、計算完全性、または多重冗長算術演算としても参照される、フェイルセーフ計算を保証するための様々な規格が作成されている。フェイルセーフ計算は一般的に、任意の単一の計算エラーが検出されることを保証するために多重冗長算術演算を使用することを含む。たとえば、以下の計算を考える。
x = y * 2.0 (計算A)
計算Aは、以下のソースコードを使用するCまたはC++プログラミング言語を使用して実施することができる。
float x, y; (ソースコードA)
x = y * 2.0f;
ソースコードAをコンパイルする際、コンパイラは、浮動小数点エミュレーション数学ライブラリ、または、利用可能である場合は、ハードウェアベースの浮動小数点コプロセッサを呼び出すことができる。数学ライブラリまたはコプロセッサにエラーが存在する場合、計算Aを正確に計算することができない。この種類のソフトウェア数学ライブラリによる、または、ハードウェアコプロセッサによるエラーは、ソフトウェアまたはハードウェアエラーを試験することによって検出することができない。上述したフェイルセーフ計算規格を実現するために、システムは、数学ライブラリ及びコプロセッサ計算エラーを検出することが可能でなければならない。
フェイルセーフ計算規格を満たすために使用される一般的な方法は、固有の数学ライブラリまたは独立したコプロセッサのいずれかを使用して各計算を2回完了させることである。たとえば、以下のCまたはC++プログラミング言語コードは、2つの数学ライブラリを使用してフェイルセーフ計算を実施する。
float x, y; (ソースコードB)
double xd, yd;
x = y*2.0f;
xd = yd *(double)2.0;
if ( x ! = xd ) { <code to put device in safe state> } // エラー検出!
ソースコードBにおいて、計算Aが2回、1回は浮動小数点数学ライブラリを使用して、1回は倍精度数学ライブラリを使用して実施される。変数y及びydは同じ値を有するが、型が異なる。その後、結果x及びxdが互いに比較されて、エラーが発生したか否かが判定される。計算AがソースコードBによって与えられるように実施されると、単一の計算の誤りを検出することができ、計算はフェイルセーフであると考えられる。
フェイルセーフ計算を保証するための現行の方法には多くの欠点がある。たとえば、フェイルセーフ計算を実施するために使用されることになる電子デバイスは、複数の数学ライブラリまたは複数のコプロセッサをサポートするというさらなる複雑度及びオーバヘッドを受けざるを得ない。
第2の欠点は、異なるデータ型において実行される算術演算が、異なる分解能、または有効数字をサポートする場合があることである。これによって解析は必然的に、入力の範囲を所与として、計算を適切に実行するために上出来のカバレッジが提供されることを保証するために、複雑でエラーが起きやすいものとなる。
第3の欠点は、冗長計算をソースコードにコード化することは、特に単一の計算のみを含むソースコードと比較して、設計及び保守管理上の危険要因となり得ることである。
第4の欠点は、メモリ破損によって計算が検出不可能な様式で乱されることがあり得ないことを保証するために、フェイルセーフ計算が、メモリ保護を必要とし得るということに由来する。ソースコードAは、単一ビット不良を識別することが可能であり得るが、さらなるフェイルセーフ計算保護を可能にするために、破損ポインタ障害に対して防御するための追加の保護が必要とされ得る。たとえば、ソースコードAからの変数x、y、xd、及びydは、メモリ内で同一場所に配置され得、従って、破損したポインタによってまとめて上書きされることに対して脆弱である。たとえば、破損したポインタによってx、y、xd、及びydにゼロが誤って書き込まれたとすると、xとxdとの間で単純に比較しても、この計算障害は識別されない。破損ポインタ障害に対して保護するために、メモリ保護ユニットのような追加のハードウェア、xd、ydの反転記憶のような追加のソフトウェア、または、記憶場所が多様になることを保証するための特別なコンパイラ/リンカコマンドも、フェイルセーフ計算を提供するために必要とされ得る。
複数の数学ライブラリ、複数のハードウェア算術演算アクセラレータ、エラーが起きやすい固定小数点分解能解析、及び破損したポインタをなくすことを可能にするフェイルセーフ計算方法が必要とされている。理想的には、フェイルセーフ計算方法は、ソースコードをほとんど改変せずに、容易に実施及び保守管理される。
フェイルセーフ計算を実施するための方法が提供される。方法は、第1の結果を生成するために第1の計算を実施するステップを含む。方法は、第2の結果を生成するためにスカラー及び第1の計算を使用して第2の計算を実施するステップを含み、第2の計算は、スケーリングされた結果を生成するために、第1の計算にスカラーを乗算することと、第2の結果を生成するために、スケーリングされた結果をスカラーで除算することとを含む。方法は、第1の結果と第2の結果とが等価であるか否かを比較するステップをさらに含む。
ハードウェアを動作させるためにフェイルセーフ計算を実施するためのデバイスが提供される。デバイスは、第1の結果を生成するために第1の計算を実施するように構成されている電子機器を含む。電子機器は、第2の結果を生成するためにスカラー及び第1の計算を使用して第2の計算を実施するようにさらに構成されている。第2の計算は、スケーリングされた結果を生成するために、第1の計算にスカラーを乗算することを含む。第2の計算は、第2の結果を生成するために、スケーリングされた結果をスカラーで除算することをさらに含む。電子機器は、第1の結果と第2の結果とが等価であるか否かを示すようにさらに構成されている。
ハードウェアをフェイルセーフに動作させるためのコードをコンパイルするための方法が提供される。方法は、第1の結果を生成するように構成されている第1の計算を識別するステップを含む。方法は、第1の計算及びスカラーを含む第2の計算を生成するステップをさらに含み、第2の計算は、第2の結果を生成する。第2の計算は、スケーリングされた結果を生成するために、第1の計算にスカラーを乗算することを含む。第2の計算は、第2の結果を生成するために、スケーリングされた結果をスカラーで除算することをさらに含む。方法は、第1の結果と第2の結果とが等価であるか否かの指示を生成するステップをさらに含む。方法は、第1の計算、第2の計算、及び指示を、実行可能プログラム内に含めるステップをさらに含む。
本出願の態様
方法の一実施形態において、方法は、第1の結果及び第2の結果が等価でない場合に、安全動作を実施するステップを含む。
方法の一実施形態において、第1の計算は1つまたは複数の演算を含み、1つまたは複数の演算は最終演算を含み、第2の計算は、最終演算の前にスカラーを乗算することを含む。
方法の一実施形態において、第1の結果は第1の2進表現を有し、スケーリングされた値は第2の2進表現を有し、スカラーは、第1の2進表現と第2の2進表現との間の差を最大化するように選択される。
方法の一実施形態において、スカラーは整数、浮動小数点、またはダブルである。
方法の一実施形態において、スカラーは無理数である。
方法の一実施形態において、スカラーと1.0との間の差が、スケーリングされた結果の分解能を保持するために最小化される。
方法の一実施形態において、方法は、第1の結果がゼロであると判定される場合に、第1の結果にオフセットを加算するステップをさらに含む。
デバイスの一実施形態において、電子機器は、第1の結果及び第2の結果が等価でない場合に、安全動作を実施するようにさらに構成されている。
デバイスの一実施形態において、第1の計算は1つまたは複数の演算を含み、1つまたは複数の演算は最終演算を含み、第2の計算は、最終演算の前にスカラーを乗算することを含む。
デバイスの一実施形態において、第1の結果は第1の2進表現を有し、スケーリングされた値は第2の2進表現を有し、スカラーは、第1の2進表現と第2の2進表現との間の差を最大化するように選択される。
デバイスの一実施形態において、スカラーは整数、浮動小数点、またはダブルである。
デバイスの一実施形態において、スカラーは無理数である。
デバイスの一実施形態において、スカラーと1.0との間の差が、スケーリングされた結果の分解能を保持するために最小化される。
デバイスの一実施形態において、電子機器は、第1の結果がゼロであると判定される場合に、第1の結果にオフセットを加算するようにさらに構成されている。
方法の一実施形態において、第1の計算及びスカラーを含む第2の計算を生成するステップ、ならびに、第1の結果と第2の結果とが等価であるか否かの指示を生成するステップは、クラスを定義することを含む。
方法の一実施形態において、方法は、第1の結果と第2の結果とを、メモリの離れた区画内に記憶するステップをさらに含む。
方法の一実施形態において、方法は、第1の計算と第2の計算とを、メモリの離れた区画内に記憶するステップをさらに含む。
方法の一実施形態において、第1の計算、第2の計算、及び指示を、実行可能プログラム内に含めるステップは、単一のプロセッサ上で動作させるために、実行可能プログラムをコンパイルすることを含む。
方法の一実施形態において、第1の計算、第2の計算、及び指示を、実行可能プログラム内に含めるステップは、単一の数学ライブラリを使用するために、実行可能プログラムをコンパイルすることを含む。
方法の一実施形態において、方法は、数学ライブラリを、計算エラーについて予備試験するステップをさらに含む。
すべての図面上で、同じ参照符号は同じ要素を表す。図面は必ずしも、原寸に比例していない。
本出願の一実施形態によるフェイルセーフシステム100のブロック図である。 本出願の一実施形態によるフェイルセーフ計算ルーチン200を示す図である。 本出願の一実施形態によるフェイルセーフ計算方法300を示す図である。 本出願の一実施形態によるフェイルセーフ計算コンパイル方法400を示す図である。
図1〜図4及び以下の説明は、当業者に、本出願の最良の形態を作成及び使用する方法を教示するための特定の例を示す。本発明の原理を教示する目的で、いくつかの従来の態様は単純化または省略されている。当業者であれば、これらの例から、本出願の範囲内に入る変形形態を諒解しよう。当業者であれば、下記に記載されている特徴を様々な方法で組み合わせて、本出願の複数の変形形態を形成することができることを諒解しよう。結果として、本出願は、下記に記載されている特定の例には限定されず、特許請求の範囲及びその均等物によってのみ限定される。
図1は、本発明の一実施形態によるフェイルセーフシステム100のブロック図を示す。フェイルセーフシステム100は、ハードウェア102と、電子機器104と、ハードウェア−ソフトウェア通信ライン106とを含む。フェイルセーフシステム100は、人間及び/または環境の健康及び安全にとって重要である計測器及び/または機器を含み得、それゆえ、フェイルセーフ環境において動作されなければならない。
ハードウェア102は、電子機器104によって動作、制御、監視、及び読み出しされ得る。ハードウェア102は、そのためにフェイルセーフ動作を可能にすることが特に望ましい、任意の電子的に動作または読み出し可能な機器を含んでもよい。たとえば、ハードウェア102は、救急サービス、防火システム、遠隔通信、医療装置、原子炉、航空、または宇宙飛行において見出されるシステムの構成要素であってもよい。ハードウェア102は、当業者には理解されるように、他の用途にも含まれてもよい。一実施形態において、ハードウェア102は、測定または監視デバイスを含んでもよい。たとえば、ハードウェア102は、流体の流速、密度、または粘度を決定することができる振動流量計を含んでもよい。
通信ライン106を介して、ハードウェア102と電子機器104との間で相互に信号を送信することができる。たとえば、電子機器104は、通信ライン106を介して、ハードウェア102を構成して命令するため、または、データを要求するための信号を送信することができる。ハードウェア102はさらに、ハードウェア102内部のイベントによって促されるときに、電子機器104にデータを送信することができる。実施形態において、当業者には理解されるように、通信ライン106は有線または無線であってもよいことは諒解されたい。
電子機器104は、インターフェース112と、処理システム108とをさらに含むことができる。処理システム108は、記憶システム110をさらに含むことができる。電子機器104は、フェイルセーフシステム100の様々な特性を決定するために、ハードウェア102から受信される信号を処理することができる。
インターフェース112は、通信ライン106を介して、または、追加のリード線を介して、センサ信号を受信することができる。インターフェース112は、任意の様式のフォーマット化、増幅、バッファリングなどのような、任意の必要なまたは所望の信号調整を実施することができる。代替的に、信号調整のいくつかまたはすべては、処理システム108内で実施されてもよい。加えて、インターフェース112は、電子機器104と外部デバイスとの間の通信を可能にすることができる。インターフェース112は、任意の様式の電子、光学、または無線通信が可能であり得る。加えて、インターフェース112は、電子機器104と外部デバイスとの間の通信を可能にすることができる。インターフェース112は、任意の様式の電子、光学、または無線通信が可能であり得る。
インターフェース112は、一実施形態において、デジタイザ(図示せず)を含むことができ、通信ライン106を介して受信されるセンサ信号は、アナログセンサ信号を含む。デジタイザは、アナログセンサ信号をサンプリング及びデジタル化し、デジタルセンサ信号を生成することができる。デジタイザはまた、任意の必要とされるデシメーションをも実施することができ、必要とされる信号処理の量を低減し、処理時間を低減するために、デジタルセンサ信号がデシメーションされる。
処理システム108は、電子機器104の動作を実行し、ハードウェア102からの測定値及びハードウェア102へのコマンドを処理する。処理システム108はまた、フェイルセーフ計算ルーチン200のような1つまたは複数の処理ルーチンを実行することもできる。
処理システム108は、汎用コンピュータ、マイクロ処理システム、論理回路、または、本明細書において記載されている機能を実施することが可能な任意の他の汎用またはカスタム処理デバイスを含んでもよい。処理システム108は、複数の処理デバイスの間で分散されてもよい。処理システム108は、記憶システム110のような、任意の様式の一体型または独立型電子記憶媒体を含んでもよい。
記憶システム110は、動作パラメータ及びデータ、ソフトウェアルーチン、一定値、ならびに変数値を記憶することができる。記憶システム110は、ランダムアクセスメモリ(RAM)のような主記憶装置またはメインメモリを含むことができる。実施形態において、記憶システム110は、ハードディスクドライブ、リムーバブル記憶デバイス、メモリカード、フロッピーディスクドライブ、磁気テープドライブ、コンパクトディスクドライブ、デジタル多用途ディスク、Blue-rayディスク、光学記憶デバイス、テープバックアップ、または任意の他のコンピュータ使用可能または読み取り可能記憶媒体を含んでもよい。
電子機器104は、当該技術分野において一般的に知られている様々な他の構成要素及び機能を含んでもよいことは理解されたい。これらの追加の特徴は、簡潔にするために、本明細書及び図面から省略されている。それゆえ、本発明は、図示及び論述されている特定の実施形態に限定されるべきではない。
図1は、電子機器104と通信している単一のハードウェア102のみを示しているが、当業者であれば、複数のハードウェアアセンブリが電子機器104と通信していてもよいことは容易に諒解されよう。さらに、電子機器104は、様々な異なるハードウェアタイプを動作させることが可能であり得る。電子機器104と通信しているハードウェア102のような各ハードウェアアセンブリは、そのハードウェアの動作に専用とされる、記憶システム110のそれぞれの区画を有することができる。
記憶システム110は、フェイルセーフ計算ルーチン200によって、ハードウェア102を安全に動作させるために使用することができる変数を記憶することができる。たとえば、記憶システム110は、第1の結果214、スカラー216、第2の結果220、及びエラーインジケータ222を記憶することができる。記憶システム110はまた、フェイルセーフ計算ルーチン200によって、ハードウェア102を安全に動作させるために使用することができる機能をも記憶することができる。たとえば、記憶システム110は、第1の計算212、第2の計算218、第1の計算論理202、第2の計算論理204、比較論理206、及び安全動作論理208を記憶することができる。記憶システム110はまた、フェイルセーフ計算ルーチン200をも記憶することができる。
一実施形態において、電子機器104は、ハードウェア102を安全に動作させるために、フェイルセーフ計算ルーチン200を開始し動作させることができる。実施形態において、フェイルセーフ計算ルーチン200は、ハードウェア102からのデータの安全な操作及び解釈を保証するために冗長な算術演算を実施することができる。
図2は、本出願の一実施形態によるフェイルセーフ計算ルーチン200を示す。フェイルセーフ計算ルーチン200は、第1の計算論理202と、第2の計算論理204と、比較論理206と、安全動作論理208とを含む。
フェイルセーフ計算ルーチン200は、第1の計算論理202によって開始する。第1の計算論理202は、第1の計算212を受信し、第1の結果214を生成する。第1の計算212は、プロセッサ上でフェイルセーフに実施することができる1つまたは複数の算術演算を含む。たとえば、第1の計算論理202は、算術演算の以下の非排他的なリスト、すなわち、加算、減算、乗算、除算などを含むことができる。第1の結果214は、処理システム108上で第1の計算212を実施した結果である。実施形態において、第1の結果214は、以下の非排他的なリスト、すなわち、整数、符号付き数、符号なし数、短整数、長整数、浮動小数点数、倍精度数、または、当業者に知られている任意の他のデータ型を含む、任意のデータ型または形式で表される数であってもよい。単純な一例において、第1の計算212は、以下の論理を含むことができる。
x1 = y1 * 2.0 (計算B)
計算Bの例において、第1の計算212はy1*2.0であり、第1の結果214はx1である。
フェイルセーフ計算ルーチン200は、第2の計算論理204によって継続する。第2の計算論理204は、第1の計算212及びスカラー216を受信し、第2の計算218及び第2の結果220を生成する。スカラー216は、フェイルセーフ計算を実施する際に補助として使用することができる数である。スカラー216は、限定ではないが、整数、一定値、符号付き数値、符号なし数値、浮動小数点数、倍精度数、短整数、長整数、または、当業者に一般的に知られている任意の他の型を含む、任意のデータ型であってもよい。
すでに論述したように、第1の計算212は、1つまたは複数の算術演算を含む。第2の計算論理204は、スカラー216による乗算及び除算のさらなる算術演算を含めることによって、第2の計算218を生成する。ソースコードBは、第2の計算論理204の例示的な実施態様を与える。
x1 = y1 * 2.0f; (ソースコードB)
x2 = ((y2 * 1.2f) * 2.0f ) / 1.2f);
ソースコードBにおいて、y1 * 2.0fは第1の計算212を表し、((y2 * 1.2f) * 2.0f ) / 1.2f)は第2の計算218を表し、スカラー216は1.2に等しく、第1の結果214はx1によって表され、第2の結果220はx2によって表される。ソースコードB内の変数y1及びy2は同じ値を有し、実施形態において、y1及びy2は、同じデータ型を有する場合もあれば、または、異なるデータ型を有する場合もある。ソースコードBにおいて、第1の計算212が、変数y1に定数2.0fを乗算することを含むことが見てとれる。第2の計算論理204は、第1の計算212にスカラー216を乗算することによって、第1の計算212をスケーリングし、スカラーはソースコードBの例では1.2fであり、スケーリングされた結果が生成される。当業者であれば、スケーリングされた結果を生成するために第1の計算212によって含まれる1つまたは複数の演算のいずれかの前、後、または間にスカラー216が乗算されてもよいことは認識されよう。一実施形態において、スカラー216を乗算する演算は、スケーリングされた結果を生成するために第1の計算212の実施における最終演算の前に含まれてもよい。第2の計算論理204は、スケーリングされた結果をスカラー216で除算することによって第1の計算212をさらに変換し、第2の結果220を生成する。第2の結果220は、限定ではないが、整数、一定値、符号付き数値、符号なし数値、浮動小数点数、倍精度数、短整数、長整数、または、当業者に一般的に知られている任意の他の型を含む、任意のデータ型であってもよい。
第1の計算212及び第2の計算218は冗長な算術演算をもたらし、第2の計算は単純に、第1の計算をスカラー216によって乗算及び除算することであることは諒解されたい。第1の計算212及び第2の計算218は同じプロセッサ上でまたは同じ数学ライブラリを用いて実施され得るということにもかかわらず、それらは異なる数のセットに対して実施される。それゆえ、ほとんどの状況において、第1の計算212及び第2の計算218は、固有の算術演算を表す。ソースコードBの例において、第1の計算212は、単純な乗算演算である。しかしながら、これは限定であるようには意図されていない。さらなる実施形態において、第1の計算212は、任意の数の算術演算を含んでもよい。
しかしながら、第1の計算212に使用される変数がゼロであるとき、第1の計算212及び第2の計算218は必ずしも、固有の算術演算を表すとは限らない場合がある。たとえば、ソースコードBのy1及びy2がゼロである場合、スカラー216を使用する結果として固有の計算がもたらされない。そのような状況において、第2の計算論理204は、計算の冗長性を保持するために、オフセットとスカラーの両方を使用することができる。ソースコードCは、オフセットとスカラーの両方を使用する例示的な実施態様を与える。
x1 =y1*2.0f; (ソースコードC)
x2 = ((((y2+z)* 1.2f)*2.0f ) / 1.2f) -(z*2.0f)
ソースコードCにおいて、zはオフセットを表す。それゆえ、y1及びy2がゼロである場合、第1の計算212及び第2の計算218の固有性が保持される。
しかしながら、オフセットを使用することによって、さらにコードが複雑になり、ソフトウェア実行時間が長くなる可能性がある。オフセットを含めることに対する代替形態は、第1の計算212及び第2の計算218に使用される変数がゼロである場合に成功することを証明するために、問題の数学ライブラリまたはコプロセッサを予備試験することである。
スカラー216の選択は解析を必要とし、使用される数学ライブラリ及び/またはコプロセッサに依存し得ることに留意されたい。一般的に言えば、スカラー216の値は1またはゼロに設定されるべきではなく、それは、そのような値が固有の第1の計算212及び第2の計算218をもたらさないためである。一実施形態において、スカラー216は、誤った計算を検出するのを補助するために、第1の結果214の2進表現とスケーリングされた結果の2進表現との間の差を最大化するように選択される。
実施形態において、スカラー216は、整数ベースの算術演算のために第1の計算212及び第2の計算218の分解能を節約するために、1.0に近くなるように選択することができる。実施形態において、スカラー216は、無理数であってもよい。たとえば、2.222222のスカラー216の値は、IEEE-754浮動小数点表現における妥当な選択である。2進法の世界における無理数として、値2.222222は、根本的に異なる仮数をもたらし、これは、それらの数のビット表現の間に大きな差をもたらし得る。数及びそれらのスケーリングされた値の例を、IEEE-754表現及び2.222222のスカラーを使用して下記に与える。
1.000000 (16進法では3F800000)
1.000000 X 2.222222 = 2.222222 (16進法では400E38E3)

1000000 (16進法では49742400)
1000000 X 2.222222 = 2222222 (16進法では4A07A238)

0.4500000 (16進法では3EE66666)
0.4500000 X 2.222222 = 1.000000 (16進法では3F800000)
それによって、第1の計算212及び第2の計算218の分解能を保持するスカラー216の値を選択することによって、計算の誤りの検出を補助する利点がもたらされる。
フェイルセーフ計算ルーチン200は、比較論理206によって継続する。比較論理206は、第1の結果214及び第2の結果220を受信し、エラーインジケータ222を生成する。比較論理206は、結果が同じであるか否かを判定するために、第1の結果214を第2の結果220と比較する。第1の計算212及び第2の計算218を同じコプロセッサ上でかつ/または同じ数学ライブラリを用いて実施することができるため、本出願の実施形態は、第1の結果214及び第2の結果220が同じデータ型であり得るという点において、従来の方法にまさる利点をもたらす。これによって、比較演算を大幅に単純化することができ、異なる型の値の比較において、エラーが起きやすい分解能解析を実施する必要がなくなる。第1の結果214及び第2の結果220が同じである場合、計算はフェイルセーフであると考えられる。第1の結果214及び第2の結果220が同じでない場合、エラー状態が存在し得、比較論理206は、エラーインジケータ222を設定することによってエラー状態が存在することを示すことができる。実施形態において、エラーインジケータ222は、ディスプレイまたは電子メッセージを介してユーザに報告することができる。
フェイルセーフ計算ルーチン200は、安全動作論理208によって継続する。安全動作論理208は、エラーインジケータ222を受信する。エラーが発生したことをエラーインジケータ222が示す場合、安全動作論理208は、失敗した計算に起因してもたらされ得る、人間または環境に対する損傷または被害を防止するための動作を実施することができる。実施形態において、安全動作論理208は、ハードウェア102に関する安全化手順を開始することができる。別の実施形態において、安全動作論理208は、ハードウェア102を用いて行われた測定が誤っている可能性があるとオペレータに警告することができる。
図3は、フェイルセーフ計算方法300を示す。フェイルセーフ計算方法300は、フェイルセーフ計算ルーチン200の例示的な実施形態である。処理システム108は、フェイルセーフ計算方法300を実行するために必要な信号及びデータ処理を実施するように構成することができる。フェイルセーフ計算方法300は、ステップ302によって開始する。ステップ302において、第1の結果を生成するために第1の計算が実施される。たとえば、上述したように、第1の結果214を生成するために、第1の計算論理202によって第1の計算212が実施されてもよい。
フェイルセーフ計算方法300は、ステップ304によって継続する。ステップ304において、第2の結果を生成するためにスカラー及び第1の計算を使用して第2の計算が実施され、第2の計算は、スケーリングされた結果を生成するために、第1の計算にスカラーを乗算することと、第2の結果を生成するために、スケーリングされた結果をスカラーで除算することとを含む。たとえば、第2の計算論理204が、スカラー216、第1の計算212を受信し、第2の計算218を生成してもよい。第2の結果220は、上述したように、処理システム108上で第2の計算218を実施した結果を含んでもよい。
フェイルセーフ計算方法300は、ステップ306によって継続する。ステップ306において、第1の結果と第2の結果とが等価であるか否かが示される。たとえば、比較論理206は、上述したように、第1の結果214及び第2の結果220を受信し、エラーインジケータ222を生成してもよい。
図4は、フェイルセーフ計算コンパイル方法400を示す。フェイルセーフ計算コンパイル方法400は、コードを、処理システム108上でフェイルセーフ計算を実行することができる実行可能ソフトウェアにコンパイルするために実施することができる。たとえば、フェイルセーフ計算コンパイル方法400は、フェイルセーフ計算ルーチン200またはフェイルセーフ計算方法300を実行するように構成されているコードをコンパイルするために実施することができる。
方法400は、ステップ402によって開始する。ステップ402において、第1の結果を生成するように構成されている第1の計算が識別される。たとえば、第1の計算212または計算Aが、コンパイラによって識別され得る。
フェイルセーフ計算コンパイル方法400は、ステップ404によって継続する。ステップ404において、第1の計算及びスカラーを含む第2の計算が生成され、第2の計算は第2の結果を生成し、第2の計算は、スケーリングされた結果を生成するために、第1の計算にスカラーを乗算することと、第2の結果を生成するために、スケーリングされた結果をスカラーで除算することとを含む。たとえば、第2の計算論理204が、第1の計算212及びスカラー216を受信して、第2の計算218及び第2の結果220を生成してもよい。
フェイルセーフ計算コンパイル方法400は、ステップ406によって継続する。ステップ406において、第1の結果と第2の結果とが等価であるか否かの指示が生成される。たとえば、上述したように、比較論理206がエラーインジケータ222を生成してもよい。
フェイルセーフ計算コンパイル方法400は、ステップ408によって継続する。ステップ408において、第1の計算、第2の計算、及び指示が、実行可能プログラム内に含められる。実施形態において、実行可能プログラムは、当業者に一般的に知られている任意のタイプのコンピュータ上で動作するようにコンパイルされてもよい。実施形態において、ソフトウェアは、実行可能ソフトウェアプログラム、または、他の実行可能ソフトウェアプログラムによってアクセス可能なライブラリであってもよい。
すべてのフェイルセーフ計算についてステップ402、404、及び406を含むようにソフトウェアコードを書くことによって、相当量のコンパイルがソフトウェアエンジニアの作業に加わる可能性があることは諒解されよう。このさらなるコンパイルは、最終ソフトウェア製品のロバスト性及び品質に悪影響を与える可能性がある。それゆえ、実施形態において、ステップ408はさらに、ソフトウェアコンパイル中にステップ404及び406の機能が自動的に生成され得ることを可能にする。ソフトウェアのコンパイル中にこのコードを「内部で」生成することによって、エラーのない、保守管理しやすい、ロバストなソフトウェアコードの利点をもたらすことができる。たとえば、ソフトウェアエンジニアは、ソースコードAを書くことができ、ソースコードBの機能が、コンパイル中に実行可能な最終製品ソフトウェア内に含められ得る。ソースコードAはソースコードBよりも、検査によってより容易に理解され、実施するのにはるかにエラーが起きにくく、他のプロセッサまたはコンピューティングシステムにより容易に移植される。
C、C++、Java(登録商標)、または当業者に知られている任意の他のプログラミング言語のような標的プログラミング言語の特徴を使用し、コンパイラを使用して、ソースコードAをコンパイルするときにソースコードBの機能をカプセル化することが可能である。たとえば、C及びC++プログラミング言語において、第1の計算212、第2の計算218、及び、第1の結果214と第2の結果220との間の比較をカプセル化するためのクラスを定義及び使用することができる。ほとんどのコンピュータ言語が、このタイプのカプセル化及び複雑性隠しに対する何らかのサポートを与える。
実施形態において、ステップ408は、独立した計算の結果を互いから離れているメモリの部分に記憶することを可能にすることによって、フェイルセーフ計算をさらにもたらすことができる。たとえば、第1の計算212、第1の結果214、スカラー216、第2の計算218、及び第2の結果220の任意の組み合わせを、隣接していないかつ/または離れたメモリの区画に書き込むことができる。隣接していないかつ/または離れたメモリの区画は、同じメモリ空間内の隣接していないアドレスを有するメモリの区画、または、異なるハードウェア構成要素上に見られるメモリを含んでもよい。実施形態において、メモリのいくつかは、当業者には理解されるような、さらなるハードウェア及び/またはソフトウェア保護を含むことができる。ステップ402、404、及び406によって与えられる演算の結果を離れたメモリに記憶することによって、破損したポインタに対して計算をさらに保護することができることは諒解されよう。
実施形態において、ステップ408は、第1の計算、第2の計算、及び指示を、単一のプロセッサ上で動作する実行可能プログラム内に含めることができる。さらなる実施形態において、ステップ408は、第1の計算、第2の計算、及び指示を、単一の数学ライブラリを利用する実行可能プログラム内に含めることができる。さらなる実施形態において、ステップ408は、数学ライブラリをエラーについて予備試験することを含むことができる。
上記の実施形態の詳細な説明は、本出願の範囲内にあるべき、本発明者らによって企図されているすべての実施形態の包括的でない説明である。事実、当業者であれば、上述した実施形態の特定の要素は、さらなる実施形態を作成するために様々に組み合わせ、または、なくすことができ、そのようなさらなる実施形態が本出願の範囲及び教示の中に入ることは認識されよう。上述した実施形態は、本発明の範囲及び教示内の追加の実施形態を作成するために全体的にまたは部分的に組み合わせることができることも、当業者には諒解されよう。
従って、本出願の特定の実施形態及びその例が、本明細書において例示を目的として記載されているが、当業者であれば認識されるような、様々な均等な改変が本出願の範囲内で可能である。本明細書において与えられている教示は、上述されており、添付の図面に示されている実施形態だけでなく、他の計器にも適用することができる。従って、本出願の範囲は、添付の特許請求の範囲から決定されるべきである。

Claims (21)

  1. フェイルセーフ計算を実施するための方法であって、
    第1の結果を生成するために第1の計算を実施するステップと、
    第2の結果を生成するためにスカラー及び第1の計算を使用して第2の計算を実施するステップであって、第2の計算は、スケーリングされた結果を生成するために、第1の計算にスカラーを乗算することと、第2の結果を生成するために、スケーリングされた結果をスカラーで除算することとを含むステップと、
    第1の結果と第2の結果とが等価であるか否かを比較し示すステップを含
    スカラーと1.0との間の差が、スケーリングされた結果の分解能を保持するために最小化される方法。
  2. 第1の結果及び第2の結果が等価でない場合に、安全動作を実施するステップを更に含む、請求項1に記載の方法。
  3. 第1の計算は1つまたは複数の演算を含み、1つまたは複数の演算は最終演算を含み、第2の計算は、最終演算の前にスカラーを乗算することを含む、請求項1に記載の方法。
  4. 第1の結果は第1の2進表現を有し、スケーリングされた値は第2の2進表現を有し、スカラーは、第1の2進表現と第2の2進表現との間の差を最大化するように選択される、請求項1に記載の方法。
  5. スカラーは整数、浮動小数点、またはダブルである、請求項1に記載の方法。
  6. スカラーは無理数である、請求項1に記載の方法。
  7. 第1の結果がゼロであると判定される場合に、第1の結果にオフセットを加算するステップをさらに含む、請求項1に記載の方法。
  8. ハードウェア(102)を動作させるためにフェイルセーフ計算を実施するためのデバイスであって、
    第1の結果(214)を生成するために第1の計算(212)を実施し、
    第2の結果(220)を生成するためにスカラー(216)及び第1の計算(212)を使用して第2の計算(218)を実施し、第2の計算(218)は、スケーリングされた結果を生成するために、第1の計算(212)にスカラー(216)を乗算すること、及び第2の結果(220)を生成するために、スケーリングされた結果をスカラー(216)で除算することを含み、
    第1の結果(214)と第2の結果(220)とが等価であるか否かを示すように構成されている電子機器(104)を備え、スカラーと1.0との間の差が、スケーリングされた結果の分解能を保持するために最小化される、デバイス。
  9. 前記電子機器(104)は、第1の結果(214)及び第2の結果(220)が等価でない場合に、安全動作を実施するようにさらに構成されている、請求項に記載のデバイス。
  10. 第1の計算(212)は1つまたは複数の演算を含み、1つまたは複数の演算は最終演算を含み、第2の計算(218)は、最終演算の前にスカラー(216)を乗算することを含む、請求項に記載のデバイス。
  11. 第1の結果(214)は第1の2進表現を有し、スケーリングされた値は第2の2進表現を有し、スカラー(216)は、第1の2進表現と第2の2進表現との間の差を最大化するように選択される、請求項に記載のデバイス。
  12. スカラー(216)は整数、浮動小数点、またはダブルである、請求項に記載のデバイス。
  13. スカラー(216)は無理数である、請求項に記載のデバイス。
  14. 前記電子機器(104)は、第1の結果(214)がゼロであると判定される場合に、第1の結果(214)にオフセットを加算するようにさらに構成されている、請求項に記載のデバイス。
  15. ハードウェアをフェイルセーフに動作させるためのコードをコンパイルするための方法であって、
    第1の結果を生成するように構成されている第1の計算を識別するステップと、
    第1の計算及びスカラーを含む第2の計算を生成するステップであって、第2の計算は、第2の結果を生成し、第2の計算は、スケーリングされた結果を生成するために、第1の計算にスカラーを乗算することと、第2の結果を生成するために、スケーリングされた結果をスカラーで除算することを含むステップと、
    第1の結果と第2の結果とが等価であるか否かの指示を生成するステップと、
    第1の計算、第2の計算、及び指示を、実行可能プログラム内に含めるステップを含
    スカラーと1.0との間の差が、スケーリングされた結果の分解能を保持するために最小化される、方法。
  16. 第1の計算及びスカラーを含む第2の計算を生成するステップ、ならびに、第1の結果と第2の結果とが等価であるか否かの指示を生成するステップは、クラスを定義することを含む、請求項15に記載の方法。
  17. 第1の結果と第2の結果とを、メモリの離れた区画内に記憶するステップをさらに含む、請求項15に記載の方法。
  18. 第1の計算と第2の計算とを、メモリの離れた区画内に記憶するステップをさらに含む、請求項15に記載の方法。
  19. 第1の計算、第2の計算、及び指示を、実行可能プログラム内に含めるステップは、単一のプロセッサ上で動作させるために、実行可能プログラムをコンパイルすることを含む、請求項15に記載の方法。
  20. 第1の計算、第2の計算、及び指示を、実行可能プログラム内に含めるステップは、単一の数学ライブラリを使用するために、実行可能プログラムをコンパイルすることを含む、請求項15に記載の方法。
  21. 数学ライブラリを、計算エラーについて予備試験するステップをさらに含む、請求項15に記載の方法。
JP2016566985A 2014-05-08 2014-05-08 フェイルセーフ計算を実施するための方法 Active JP6419215B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2018134495A JP6914230B2 (ja) 2014-05-08 2018-07-17 フェイルセーフ計算を実施するための方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2014/037343 WO2015171152A1 (en) 2014-05-08 2014-05-08 Method for performing failsafe calculations

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2018134495A Division JP6914230B2 (ja) 2014-05-08 2018-07-17 フェイルセーフ計算を実施するための方法

Publications (2)

Publication Number Publication Date
JP2017515243A JP2017515243A (ja) 2017-06-08
JP6419215B2 true JP6419215B2 (ja) 2018-11-07

Family

ID=50933525

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016566985A Active JP6419215B2 (ja) 2014-05-08 2014-05-08 フェイルセーフ計算を実施するための方法

Country Status (13)

Country Link
US (1) US10248514B2 (ja)
EP (1) EP3140742B1 (ja)
JP (1) JP6419215B2 (ja)
KR (1) KR101983125B1 (ja)
CN (1) CN106462482B (ja)
AR (1) AR100272A1 (ja)
AU (1) AU2014393412B2 (ja)
BR (1) BR112016025201B1 (ja)
CA (1) CA2948136C (ja)
MX (1) MX2016013538A (ja)
RU (1) RU2659732C2 (ja)
SG (1) SG11201608536QA (ja)
WO (1) WO2015171152A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102017208484A1 (de) * 2017-05-19 2018-11-22 Robert Bosch Gmbh Verfahren und Vorrichtung zur Erkennung von Hardwarefehlern in Mikroprozessoren
EP3629177B1 (de) * 2018-09-28 2021-09-01 Sick Ag Verfahren zum überprüfen eines betriebs eines elektronischen datenverarbeitungsmittels

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2739994B1 (fr) * 1995-10-17 1997-11-14 Henri Gilbert Procede cryptographique de protection contre la fraude
US7584405B2 (en) * 2003-12-03 2009-09-01 Hewlett-Packard Development Company, L.P. Fault-detecting computer system
US7290024B2 (en) * 2003-12-18 2007-10-30 Intel Corporation Methods and apparatus for performing mathematical operations using scaled integers
JP2006252548A (ja) * 2005-03-09 2006-09-21 Hewlett-Packard Development Co Lp 時間的冗長性を実施するための可変遅延命令
US7661228B1 (en) 2005-05-06 2010-02-16 Kontek Industries, Inc. Armored building modules and panels
JP2007047893A (ja) * 2005-08-08 2007-02-22 Fujitsu Ltd プロセッサの動作を検証する動作検証方法及び動作検証プログラム
CN101366232B (zh) * 2005-11-03 2012-05-16 塞尔蒂卡姆公司 同步标量乘法算法
US8595279B2 (en) * 2006-02-27 2013-11-26 Qualcomm Incorporated Floating-point processor with reduced power requirements for selectable subprecision
KR100887327B1 (ko) * 2006-08-25 2009-03-05 엠텍비젼 주식회사 다양한 정밀도에 대한 고속 부동 소수점 연산을 수행하는방법, 프로그래밍 구조 및 기록 매체
US8370822B2 (en) 2008-11-20 2013-02-05 Apple Inc. Compiling techniques for providing limited accuracy and enhanced performance granularity
US8539451B2 (en) * 2009-05-12 2013-09-17 Nec Laboratories America, Inc. Systems and methods for model checking the precision of programs employing floating-point operations
JP5407589B2 (ja) * 2009-06-29 2014-02-05 富士通株式会社 演算回路および演算処理装置ならびに演算処理方法
DE102010013349B4 (de) * 2010-03-30 2013-06-13 Eads Deutschland Gmbh Computersystem und Verfahren zum Vergleichen von Ausgangssignalen
US8793533B2 (en) * 2010-08-03 2014-07-29 Siemens Aktiengesellschaft Method and device for performing failsafe hardware-independent floating-point arithmetic
RU2455681C1 (ru) * 2010-12-09 2012-07-10 Федеральное государственное унитарное предприятие научно-исследовательский институт "Субмикрон" Отказоустойчивая вычислительная система с аппаратно-программной реализацией функций отказоустойчивости и динамической реконфигурации
FR2968855B1 (fr) * 2010-12-14 2012-12-07 Schneider Electric Ind Sas Procede et dispositif de surveillance d'un dispositif equipe d'un microprocesseur
US9063851B2 (en) * 2012-11-07 2015-06-23 Infineon Technologies Ag Fail safe code functionality
FR3047373B1 (fr) * 2016-01-28 2018-01-05 Morpho Procede de calcul securise multipartite protege contre une partie malveillante

Also Published As

Publication number Publication date
US20170031786A1 (en) 2017-02-02
BR112016025201A2 (pt) 2018-06-19
US10248514B2 (en) 2019-04-02
CN106462482B (zh) 2020-04-14
MX2016013538A (es) 2017-01-13
CN106462482A (zh) 2017-02-22
EP3140742A1 (en) 2017-03-15
RU2659732C2 (ru) 2018-07-03
AU2014393412B2 (en) 2018-04-19
BR112016025201B1 (pt) 2022-08-23
AU2014393412A1 (en) 2016-11-03
EP3140742B1 (en) 2019-01-02
WO2015171152A1 (en) 2015-11-12
KR20170002481A (ko) 2017-01-06
RU2016146739A (ru) 2018-06-08
AR100272A1 (es) 2016-09-21
RU2016146739A3 (ja) 2018-06-08
JP2017515243A (ja) 2017-06-08
KR101983125B1 (ko) 2019-05-28
CA2948136C (en) 2021-04-06
SG11201608536QA (en) 2016-11-29
CA2948136A1 (en) 2015-11-12

Similar Documents

Publication Publication Date Title
AU2010353843B2 (en) Decimal floating-point quantum exception detection
JP6419215B2 (ja) フェイルセーフ計算を実施するための方法
JP5344936B2 (ja) 制御装置
US8352795B2 (en) High integrity processor monitor
JP6914230B2 (ja) フェイルセーフ計算を実施するための方法
CN107665169B (zh) 处理器程序的测试方法和装置
US9299456B2 (en) Matrix and compression-based error detection
US11314512B2 (en) Efficient checking of a condition code anticipator for a floating point processor and/or unit
JP5563700B2 (ja) 制御装置
Jorgensen et al. Assurance of accuracy in floating-point calculations-a software model study
KR20240088450A (ko) 보안체크코드의 유효성 점검 장치, 보안체크코드의 유효성 점검 방법 및 컴퓨터 프로그램
Wichmann A note on the use of floating point in critical systems
Thiemann et al. Concept for a safety-controller based on uncertified hardware
Gassino et al. Assessment of safety-critical software.

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20171025

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171031

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20180327

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180717

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20180724

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: 20180911

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181009

R150 Certificate of patent or registration of utility model

Ref document number: 6419215

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S802 Written request for registration of partial abandonment of right

Free format text: JAPANESE INTERMEDIATE CODE: R311802

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250