JP2023059860A - 完全性検査を伴うインプレースアーキテクチャの実行 - Google Patents

完全性検査を伴うインプレースアーキテクチャの実行 Download PDF

Info

Publication number
JP2023059860A
JP2023059860A JP2022165312A JP2022165312A JP2023059860A JP 2023059860 A JP2023059860 A JP 2023059860A JP 2022165312 A JP2022165312 A JP 2022165312A JP 2022165312 A JP2022165312 A JP 2022165312A JP 2023059860 A JP2023059860 A JP 2023059860A
Authority
JP
Japan
Prior art keywords
data
partition
code
error detection
repair
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2022165312A
Other languages
English (en)
Inventor
マンジュナス スナンダ
Manjunath Sunanda
ローゼンブッシュ イェンス
Jens Rosenbusch
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Infineon Technologies AG
Original Assignee
Infineon Technologies AG
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 Infineon Technologies AG filed Critical Infineon Technologies AG
Publication of JP2023059860A publication Critical patent/JP2023059860A/ja
Pending legal-status Critical Current

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/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • 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/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • G06F11/167Error detection by comparing the memory output

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Detection And Correction Of Errors (AREA)
  • Hardware Redundancy (AREA)
  • Stored Programmes (AREA)

Abstract

Figure 2023059860000001
【課題】外部メモリから受信されたコードの完全性を検査するためのシステム、方法および回路を提供する。
【解決手段】コントローラシステム100は、不揮発性メモリとコントローラとを含む。不揮発性メモリは、プログラムコードに対応する第1のデータを記憶するパーティション1と、第1のデータのコピーに対応する第2のデータを記憶するパーティション2と、を備える。コントローラは、プロセッサ(CPU0,CPU1)と比較器回路とを含んでいる。比較器回路は、第1のデータの部分と対応する第2のデータの部分とを受信し、第1のデータの部分と第2のデータの部分とを比較し、第1のデータの部分が第2のデータの部分と一致する場合、第1のデータの部分をプロセッサに供給し、第1のデータの部分が第2のデータの部分と一致しない場合、アラーム信号を生成する。
【選択図】図1

Description

本開示は、外部メモリに記憶されている命令を実行するマイクロコントローラユニット(MCU)および中央処理ユニット(CPU)の分野に関する。
最近の集積回路は、ディープサブミクロン技術を用いて製造されている。これにより、エンベデッド型不揮発性メモリのコストが大幅に増大している。
以下では、単なる例示としてであるが、回路、装置および/または方法のいくつかの実施例を説明する。これに関連して、添付の図面を参照する。
記載の種々の態様による、外部メモリから読み出された命令の完全性を検証する完全性検査回路を有するコントローラを含む例示的なアーキテクチャのブロック図である。 開示の種々の態様による、例示的な比較器回路のブロック図である。 記載の種々の態様による、外部メモリから読み出された命令の完全性を検証する例示的な方法の概要を示すフローチャートである。 記載の種々の態様による、外部メモリから読み出された命令の完全性を検証する別の例示的な方法の概要を示すフローチャートである。 記載の種々の態様による、メモリ内に記憶されている命令を更新する例示的な方法の概要を示すフローチャートである。
安全性に関連するアプリケーションにおいて使用されるコントローラは、誤動作に対する保護のための情報冗長措置を使用している。例えば、自動車安全性および完全性レベルD(ASIL-D)なる等級に認定されるためには、コントローラシステムオンチップ(SoC)が、実行されるプログラムコードに対していくつかのタイプの検証措置を含む必要がある。外部メモリから受信した(SoCに関する)プログラムコードを検証する1つの方法は、プログラムコードを(SoCに関する)内部スタティックランダムアクセスメモリ(SRAM)にまずコピーすることである。プログラムコードを実行する前に、コントローラは、コピーされたプログラムコードに基づいて誤り検出符号(EDC)を計算し、計算されたEDCを、プログラムコードと共に受信された記憶されたEDCに対して検査することができる。EDCの一例は、巡回冗長検査(CRC)符号である。
EDCを計算するために必要な処理とEDCを記憶するために使用されるメモリとにより、EDCは、典型的には、プログラムコード全体またはプログラムコードのかなり大きい部分に基づいて計算される。プログラムコードの検証を可能にするには、ASIL-Dとして認定されたSoCの内部SRAMにコピーされたプログラムコードの部分が、この部分全体をカバーする予め計算されたEDCを有していなければならない。これは、プログラムコード全体またはプログラムコードの大部分が、検証を可能にするために内部SRAMにコピーされることを意味する。SRAMのコストが高いため、こうした大量のプログラムコードを記憶するのに十分な内部SRAMの供給にはコストがかかりうる。1つの解決手段は、プログラムコードの比較的小さい部分に対してEDCを計算することである。しかし、このことは、多数のEDCおよびこうした多数のEDCを記憶したメモリを計算するための付加的な処理を含む。さらに、当該アプローチは、多数のEDCが計算および検査されるので、実行時間レイテンシが追加される。
以下の記述では、プログラムコードがSoCインタフェースによって受信される際に外部に記憶されたプログラムコードの検証を可能にするシステム、方法および回路の概要を述べる。プログラムコードの検証は、ワードごとにまたは他の精細な粒度のベースで実施することができる。
図1には、コントローラSoC110、外部メモリ120およびメモリコントローラ125を含むコントローラシステム100の一実施例が示されている。コントローラSoC110は、1つまたは複数のプロセッサ(CPU0,CPU1)およびシリアルペリフェラルインタフェース(SPI)130を含んでいる。SPI130は、外部メモリ120へデータを送信し、また外部メモリ120からデータを受信するように構成されている。一実施例では、SPI130は、データを1回に1ワードずつ送受信する。上述したシステムではSPIがインタフェースとして使用されているが、外部メモリ120へのデータの小部分の読み出しおよび書き込みに用いることができるものであれば、任意のタイプのインタフェースを使用することができる。
コントローラSoC110は、SPI130により受信されたプログラムコードデータを検証する完全性検査回路140も含む。完全性検査回路140の動作については以下により詳細に説明する。
外部メモリ120は、プログラムコードに対応する第1のデータを記憶する第1のパーティション122を含むように構成されている。外部メモリ120は、プログラムコードのコピーに対応する第2のデータを記憶する第2のパーティション124を含むように構成されている。ここでの説明の目的で、「パーティション」なる用語は、所定のデータセット(例えば、第1のデータ、第2のデータ、EDCなど)を記憶するように設計された、メモリ媒体の予め定められたまたは割り当てられたいずれかの部分を含むものと解釈されたい。一例では、パーティションは、不揮発性メモリ内の物理セクタであってよい。
「コピー」なる用語は、第1のデータから導出され、第1のデータの検証および復元に使用可能なデータを広く意味するものと解釈されたい。したがって、第2のデータは、第1のデータの正確な複製とすることができる。他の例では、第2のデータは、第1のデータの反転コピーに対応する。他の例では、第2のデータは、第1のデータの検証および復元に使用可能な第1のデータの他のバージョンに対応する。
外部メモリの第3のパーティション126は、第1のパーティション122に記憶されたプログラムコードに対して計算されたEDC(例えばCRC)を記憶する。第3のパーティション126はまた、コントローラSoC110によって実行される際に、自身に記憶されたEDCを使用して、第1のパーティション122に記憶されたプログラムコードの完全性を検証させるための修復符号を記憶することもできる。外部メモリの第4のパーティション128は、第2のパーティション124に記憶されたプログラムコードのコピーに対して計算されたEDC(例えばCRC)を記憶する。第4のパーティション128はまた、コントローラSoCによって実行される際に、自身に記憶されたEDCを使用して、第2のパーティション124に記憶されたプログラムコードのコピーの完全性を検証させるための修復符号を記憶することもできる。いくつかの実施例では、第1のパーティション、第2のパーティション、第3のパーティションおよび第4のパーティションは、重なっておらず、これにより領域的に集中するメモリエラーが分離される。
完全性検査回路140は、比較器回路150および修復回路160を含む。比較器回路150は、ロックステップコンパレータであってよい。比較器回路は、SPI130を介して、第1のパーティション122に記憶された第1のデータの部分(例えばワード)を受信するように構成されている。また、比較器回路150は、SPI130を介して、第2のパーティション124に記憶された第2のデータの部分(例えばワード)も受信するようにも構成されている。受信された第2のデータの部分は、受信された第1のデータの部分に対応する。一実施例では、受信された第2のデータの部分が第1のデータの部分に対応するとは、第2のパーティション内の、第1のデータの部分が第1のパーティション内に配置されているのと同じ相対位置に、受信された第2のデータの部分が配置されることを意味する。換言すれば、第1のデータの部分に対応する第2のデータの部分は、破損がない場合、第1のデータの部分が破損していなければ当該第1のデータの部分のコピーとなる。
比較器回路150は、第1のデータの部分と第2のデータの部分とを比較し、各部分が一致する場合、第1のデータ(または第2のデータ)をプロセッサCPU0,CPU1に実行のために供給する。本説明の目的において、「一致する」なる用語は、受信された第2のデータの部分が受信された第1のデータの部分と整合しているか、またはそれ以外の形式で受信された第1のデータの部分と同等であると決定されたことを意味するものとして広義に解釈されたい。一実施例では、受信された部分は、各部分内の対応する各ビットが一致する場合に一致するものとされる。別の実施例では、受信された部分は、対応するビットの各対が反対の部分である場合(例えば、第2のデータが第1のデータの反転コピーである場合)に一致するものとされる。
図2には、ロックステップ比較技術を用いて実装される例示的な比較器回路250が示されている。比較器回路250は、2つのロックされたCPU出力、すなわちパーティション122での読み出し動作の出力とパーティション124での読み出し動作の出力とを比較する比較ロジック270を含んでいる。一実施例では、比較ロジック270は、(例えば、パーティション124がパーティション122のデータの複製を記憶している場合)XOR演算を実施することができる。別の実施例では、比較ロジック270は、(例えば、パーティション124がパーティション122のデータの反転コピーを記憶している場合)XNOR演算を実施することができる。比較ロジック270は、2つのロックされた読み出し動作の出力が一致しない場合、アラーム信号を出力する。比較ロジック270は、2つのロックされた読み出し動作の出力が一致しない場合、修復回路160をトリガすることもできる。
再び図1を参照すると、第1のデータの部分と第2のデータの部分とが一致しない場合、比較器回路150は、外部メモリ120からプロセッサへのプログラムコードの転送にエラーがあることを示すアラーム信号を生成する。このように、比較器回路150は、受信された第1のデータの部分と受信された第2のデータの部分との比較に基づいて、受信されたプログラムコードの完全性をリアルタイムで検証する。受信された第1のデータの部分と受信された第2のデータの部分とが一致する場合、実行時間レイテンシは導入されない。受信された第1のデータの部分と受信された第2のデータの部分とが一致しない場合、比較器回路150はアラーム信号を生成し、これにより破損している可能性があるプログラムコードがプロセッサによって実行されることを防止する措置を講じることができるようにする。一実施例では、アラーム信号はインタラプト信号である。
当該アラーム信号は、コントローラシステム100内の任意の数の動作をトリガすることができる。例えば、当該アラーム信号は、コントローラシステム100に対して、第1のパーティション122または第2のパーティション124内の破損したデータの診断および修復を試みるための何らかのアクションを起こさせることができる。一実施例では、当該アラーム信号は、第3のパーティション126および第4のパーティション128にそれぞれ記憶されたEDCに基づいて、第1のパーティション122内の第1のデータと第2のパーティション124内の第2のデータとに対してEDC検査を実行することを含む修復ルーチンが実行されるように、メモリコントローラ125をトリガする。第1のデータまたは第2のデータのうちの一方がEDC検査に失敗し(例えば破損しており)、第1のデータまたは第2のデータのうちの他方がEDC検査に合格した(例えば破損していない)場合、修復ルーチンは、破損した第1のデータもしくは第2のデータを、破損していない第1のデータもしくは第2のデータのコピーと交換し、破損していない第1のデータもしくは第2のデータのコピーに対するEDCを計算し、記憶することを含む。
図示の実施例では、比較器回路150がアラーム信号を生成すると、比較器回路はさらに、コントローラSoC110に修復ルーチンを実行させるように修復回路160をトリガする。修復回路160は、第3のパーティション126から修復符号または修復命令をフェッチする。修復符号は、プロセッサCPU0,CPU1により実行される際に修復ルーチンを実行するためのものである。修復回路160は、第1のデータに対するEDCを第3のパーティション126からフェッチする。プロセッサCPU0,CPU1は、SPI130を介して第1のデータを読み出し、第1のデータに対するEDCを計算するために、修復符号を実行する。計算されたEDCは、第3のパーティション126に記憶されていたEDCと比較され、第1のデータが破損しているかどうかが決定される。修復回路160は、第2のデータに対する修復符号およびEDCを第4のパーティション128からフェッチする。プロセッサCPU0,CPU1は、SPI130を介して第2のデータを読み出し、第2のデータに対するEDCを計算するために修復符号を実行する。計算されたEDCは、第4のパーティション128に記憶されていたEDCと比較され、第2のデータが破損しているかどうかが決定される。
第1のデータまたは第2のデータのうちの一方のみが破損している場合、修復回路160は、破損している第1のデータもしくは第2のデータを、破損していない第1のデータもしくは第2のデータのコピーと交換させる。修復回路160、CPU0/CPU1、またはメモリコントローラ125は、破損していない第1のデータもしくは第2のデータのコピーに対するEDCを計算して記憶する。その後、プログラムコードの実行を、修復を行わずに再開することができる。
いくつかの実施例では、修復符号は、外部メモリ120ではなく、コントローラSoC110内のSRAMに記憶されている。いくつかの実施例では、修復符号は第3のパーティション126内に記憶されており、修復符号のコピーは第4のパーティション128内に記憶されており、比較器回路150は、修復符号の実行前にコピー間で修復符号プログラムデータを比較することにより、修復符号の完全性を検証するために使用される。
修復ルーチンにより、第1のデータも第2のデータも破損していないと決定された場合、修復ルーチンは障害が一時的なものであると見なすことができ、プログラムコードの実行を続行することができる。アラーム信号は終了されてよい。
いくつかの実施例では、アラーム信号を生成することに加えて、比較器回路150が、潜在的に破損したデータがプロセッサに供給されることを防止するための確認アクションを行うこともできる。
EDCを使用した第1のデータおよび第2のデータの検証は、第1のデータと第2のデータとの間の不一致に応じてのみ実行されることが理解されよう。これは、第1のデータまたは第2のデータのいずれかが破損していると思われる場合を除いて、実行時間レイテンシがEDC検査のパフォーマンスの影響を受けないことを意味する。
いくつかの態様では、本明細書に記載するコード検証技術は、ソフトウェアオーバーザエア(SOTA)更新の実現のために使用される既存のメモリパーティショニングスキーマを活用することができる。SOTAを実現するには、オペレーティングコードを記憶したメモリが少なくとも2つのパーティション(例えばパーティション122,124)を含むように構成される。第1のパーティションは使用されているオペレーティングコードのバージョンを記憶し、これに対して第2のパーティションはコードの直前のバージョンを記憶する。SOTA更新の際に新しいプログラムコードが受信された場合、メモリコントローラ125が、当該プログラムコードの直前のバージョンを記憶している第2のパーティションに、新しいプログラムコードに対応する新しい第1のデータを記憶する。メモリコントローラは、記憶された新しい第1のデータに対するEDCを計算し、計算されたEDCと受信されたEDCとを比較する。計算されたEDCが受信されたEDCと一致する場合、メモリコントローラ125は、当該EDCを(例えば、第3のパーティション126または第4のパーティション128のいずれかに)記憶する。この時点で、SoCは、第2のパーティションに記憶されている新しいプログラムコードに基づいて動作を開始する。第1のパーティションは、プログラムコードの以前のバージョンに動作を戻すことが望ましい場合、ここで直前のバージョンであるプログラムコードの記憶を続行する。
本明細書に記載するコード検証技術を実現するために、こうした2つのパーティションスキーマを使用することができ、これにより、SOTA更新において受信されたプログラムコードの検証後に、検証されたプログラムコードのコピーを他のパーティションに記憶することができる。これは、一方のパーティションにプログラムコードの現在のバージョンを記憶して、他方のパーティションにプログラムコードの以前のバージョンを記憶するのではなく、両方のパーティションにプログラムコードの現在のバージョンを記憶することを意味する。したがって、SOTA更新プロセスは、次のように更新されうる。
メモリコントローラ125が、第1のデータをコピーして第2のデータを生成する。メモリコントローラ125は、第2のデータを第2のパーティション124に記憶し、記憶された第2のデータに対する第2のEDCを計算する。記憶された第2のデータに対して計算されたEDCが第1のデータに対するEDCと一致する場合、メモリコントローラは当該EDCを第4のパーティション128に記憶する。
第1のデータのコピーが反転コピーである場合、反転を行った後、書き込みデータに対するターゲットEDCが計算される。書き込みデータが第2のパーティション124に記憶された後、データが第2のパーティションから読み戻され、読み戻されたデータに対してEDCが計算可能となる。計算されたEDCがターゲットEDCと一致する場合、第2のデータが確認される。
上記の説明から、説明した解決手段により、プログラムコードおよびプログラムコードのコピーを記憶した未修正の外部メモリが、SoCによる実行のためにフェッチされたプログラムコードのリアルタイム検証をサポート可能となることが理解されよう。説明した解決手段は、プログラムフェッチパスにおけるアクセスペナルティなしに、診断カバレッジもサポートすることができる。
例示的な方法の概要を示すいくつかのフローチャートを以下に示す。本明細書および添付の特許請求の範囲では、方法のステップまたは機能を説明する際の何らかのエンティティ(例えば、パラメータ、変数など)についての「決定する」なる用語の使用は広義に解釈されるべきである。例えば「決定する」とは、例えば、エンティティまたはエンティティの値を符号化した通信を受信して解析することを包含すると解釈されるべきである。「決定する」とは、エンティティまたはエンティティの値を記憶したメモリ(例えば、ルックアップテーブル、レジスタ、デバイスメモリ、リモートメモリなど)のアクセスおよび読み出しを包含すると解釈されるべきである。「決定する」とは、他のエンティティまたは他の量に基づいてエンティティまたはエンティティの値を計算もしくは導出することを包含すると解されるべきである。「決定する」とは、エンティティまたはエンティティの値を推定もしくは識別する任意の方式を包含すると解釈されるべきである。
本明細書において使用されるように、何らかのエンティティまたはエンティティの値に関して使用される「識別する」なる用語は、エンティティまたはエンティティの値を決定する任意の方式を包含すると広義に解されるべきである。例えば、「識別する」なる用語は、例えばエンティティまたはエンティティの値を符号化した通信を受信および解析することを包含すると解釈されるべきである。「識別する」なる語は、エンティティまたはエンティティの値を記憶したメモリ(例えば、デバイスキュー、ルックアップテーブル、レジスタ、デバイスメモリ、リモートメモリなど)へのアクセスおよび読み出しを包含すると解すべきである。
図3は、外部メモリからフェッチされたプログラムコードを検証するための例示的な方法300の概要を示すフローチャートである。方法は、例えば、図1の完全性検査回路140によって実行されうる。方法は、310において、外部メモリの第1のパーティションから第1のデータの部分を受信することを含む。第1のデータはプログラムコードに対応する。方法は、320において、外部メモリの第2のパーティションから、第1のデータのコピーに対応する第2のデータの対応する部分を受信することを含む。第1のデータの部分および第2のデータの部分は例えばワードであってよい。第2のデータは第1のデータの反転コピーであってよい。
方法は、330において、第1のデータの部分と第2のデータの部分とを比較することを含む。340において、第1のデータの部分が第2のデータの部分と一致する場合、350において、第1のデータの部分が1つまたは複数のプロセッサに実行のために供給される。360において、第1のデータの部分が第2のデータの部分と一致しない場合、アラーム信号が生成される。アラーム信号は、例えばCPU1およびCPU2の動作を停止させるインタラプト信号であってよい。
図4は、外部メモリからフェッチされたプログラムコードを検証するための例示的な方法400の概要を示すフローチャートである。方法は、例えば図1の完全性検査回路140によって実行されうる。方法は、410において、外部メモリの第1のパーティションから第1のデータの部分を受信することを含む。第1のデータはプログラムコードに対応する。方法は、420において、外部メモリの第2のパーティションから、第1のデータのコピーに対応する第2のデータの対応する部分を受信することを含む。第1のデータの部分および第2のデータの部分は例えばワードであってよい。第2のデータは第1のデータの反転コピーであってよい。
方法は、430において、第1のデータの部分と第2のデータの部分とを比較することを含む。440において、第1のデータの部分が第2のデータの部分と一致する場合、450において、第1のデータの部分が1つまたは複数のプロセッサに実行のために供給される。460において、第1のデータの部分が第2のデータの部分と一致しない場合、アラーム信号が生成される。470では、第1のデータの部分も第2のデータの部分も1つまたは複数のプロセッサに供給されない。したがって、方法400では、アラーム信号の生成に加えて、方法が、潜在的に破損したデータの部分が1つまたは複数のプロセッサに供給されることを防止するための付加的な確認アクションを含む。
一実施例では、方法300または方法400は、アラーム信号の受信に応答して実施される次のようなアクションを含む。外部メモリの第3のパーティションから第1の誤り検出符号がフェッチされ、外部メモリの第4のパーティションから第2の誤り検出符号がフェッチされる。第1のデータが第1の誤り検出符号を用いて検証され、第2のデータが第2の誤り検出符号を用いて検証される。方法は、第1のデータまたは第2のデータのうちの一方が破損したデータであり、かつ第1のデータまたは第2のデータのうちの他方が破損していないデータである場合に、破損していないデータに基づいて破損したデータを修復することを含む。いくつかの実施例では、方法は、外部メモリから修復命令をフェッチし、第1のデータおよび第2のデータを検証して破損したデータを修復するために、修復符号を実行することを含む。
図5は、不揮発性メモリに記憶されたプログラムコードを更新するための例示的な方法500の概要を示すフローチャートである。方法は、例えば図1のメモリコントローラ125によって実行可能である。方法は、510において、プログラムコードに対応する第1のデータと第1のデータに対する第1の誤り検出符号とを含む更新命令を受信することを含む。方法は、520において、第1のデータを不揮発性メモリの第1のパーティションに記憶することを含む。方法は、530において、第1の誤り検出符号を不揮発性メモリの第2のパーティションに記憶することを含む。
方法は、540において、第1の誤り検出符号を用いて第1のデータを検証することを含む。第1のデータの検証が成功した場合、方法は、550において、第1のデータのコピーに対応する第2のデータを生成することを含む。560において、第2のデータが不揮発性メモリの第3のパーティションに記憶される。570において、第2のデータに対する第2の誤り検出符号が計算される。方法は、580において、第2の誤り検出符号を不揮発性メモリの第4のパーティションに記憶することを含む。一実施例では、第1のパーティション、第2のパーティション、第3のパーティションおよび第4のパーティションは、重ならない。
上記の説明から、説明したシステム、方法および回路が、プログラムコードの実行時間の検証および完全性検査を、フェッチパスにおける最小のレイテンシおよびオンチップメモリリソースへの最小限の影響でサポートすることが理解されよう。記載したシステム、方法および回路は、破損したプログラムコードの修復もサポートすることができる。
本発明を1つまたは複数の実現形態に関して図示および説明してきたが、添付の特許請求の範囲の趣旨および範囲から逸脱することなく、図示の実施例に対する変更および/または修正を行うことができる。特に、上述した構成要素または構造(アセンブリ、デバイス、回路、回路装置、システムなど)によって実行される種々の機能に関して、これらの構成要素の説明に使用される用語(「手段」との言及を含む)は、別段の指示がない限り、本明細書に示した発明の例示的な実現形態の機能を実行する開示の構造と構造的に等しくなくても、記載した(例えば機能的に等価の)構成要素の規定した機能を実行する任意の構成要素または構造に対応することが意図されている。
実施例は、方法、方法のアクションもしくはブロックを実行する手段、機械によって実行される際にこの機械に本明細書に記載した実施形態および実施例に従って用途に対するグループについての安全管理を行わせるための命令を含む、少なくとも1つの機械可読媒体などの主題を含むことができる。
実施例1は、不揮発性メモリとコントローラとを備えたシステムである。不揮発性メモリは、プログラムコードに対応する第1のデータを記憶するように構成された第1のパーティションと、第1のデータのコピーに対応する第2のデータを記憶するように構成された第2のパーティションと、を含む。コントローラは、プログラムコードを実行するように構成された1つまたは複数のプロセッサと、比較器回路と、を含む。比較器回路は、第1のデータの部分および対応する第2のデータの部分を受信し、第1のデータの部分と第2のデータの部分とを比較し、第1のデータの部分が第2のデータの部分と一致する場合、第1のデータの部分を1つまたは複数のプロセッサに供給し、第1のデータの部分が第2のデータの部分と一致しない場合、アラーム信号を生成するように構成されている。
実施例2は、任意手段としての要素を含むかまたはこれを省略した実施例1の主題を含み、ここでは、第2のデータが第1のデータの反転コピーを含む。
実施例3は、任意手段としての要素を含むかまたはこれを省略した実施例1の主題を含み、ここでは、不揮発性メモリが、第1のデータに対して計算された第1の誤り検出符号と、第2のデータに対して計算された第2の誤り検出符号とを記憶するように構成されており、コントローラは修復回路を備えており、修復回路は、アラーム信号を受信し、当該アラーム信号に応答して、第1の誤り検出符号を使用して第1のデータを検証し、第2の誤り検出符号を使用して第2のデータを検証し、第1のデータの検証と第2のデータの検証とに基づいて、第1のデータまたは第2のデータのうちの一方が破損したデータであり、第1のデータまたは第2のデータのうちの他方が破損していないデータであることを決定し、破損していないデータに基づいて破損したデータを修復するように構成されている。
実施例4は、任意手段としての要素を含むかまたはこれを省略した実施例3の主題を含み、ここでは、第1の誤り検出符号は巡回冗長検査(CRC)符号を含み、第2の誤り検出符号は巡回冗長検査(CRC)符号を含む。
実施例5は、任意手段としての要素を含むかまたはこれを省略した実施例3の主題を含み、ここでは、第1の誤り検出符号は不揮発性メモリの第3のパーティションに記憶されており、第2の誤り検出符号は不揮発性メモリの第4のパーティションに記憶されており、第1のパーティション、第2のパーティション、第3のパーティションおよび第4のパーティションは重ならない。
実施例6は、任意手段としての要素を含むかまたはこれを省略した実施例5の主題を含み、ここでは、不揮発性メモリが、第3のデータ符号化の修復符号を記憶しており、修復回路は、アラーム信号を受信したことに応答して、第3のデータを不揮発性メモリからフェッチし、第3のデータによって符号化された修復符号を実行して第1のデータおよび第2のデータを検証し、破損したデータを修復するように構成されている。
実施例7は、任意手段としての要素を含むかまたはこれを省略した実施例6の主題を含み、ここでは、不揮発性メモリが、第3のデータのコピーに対応する第4のデータを記憶しており、比較器回路は、第3のデータの部分および第4のデータの対応する部分を受信し、第3のデータの部分と第4のデータの部分とを比較し、第3のデータの部分が第4のデータの部分と一致する場合、第3のデータの部分を修復回路に供給し、第3のデータの部分が第4のデータの部分と一致しない場合、アラーム信号を生成し、修復回路への第3のデータの部分または第4のデータの部分の供給を抑止するように構成されている。
実施例8は、任意手段としての要素を含むかまたはこれを省略した実施例1の主題を含み、ここでは、比較器回路がさらに、第1のデータの部分が第2のデータの部分に一致しない場合、1つまたは複数のプロセッサへの第1のデータの部分または第2のデータの部分の供給を抑止するように構成されている。
実施例9は、不揮発性メモリを更新する方法であって、プログラムコードに対応する第1のデータと当該第1のデータに対する第1の誤り検出符号とを含む更新命令を受信することと、第1のデータを不揮発性メモリの第1のパーティションに記憶することと、第1の誤り検出符号を不揮発性メモリの第2のパーティションに記憶することと、第1の誤り検出符号を用いて第1のデータを検証することと、第1のデータの検証が成功した場合、第1のデータのコピーに対応する第2のデータを生成し、第2のデータを不揮発性メモリの第3のパーティションに記憶し、第2のデータに対する第2の誤り検出符号を計算し、第2の誤り検出符号を不揮発性メモリの第4のパーティションに記憶することと、を含む。
実施例10は、任意手段としての要素を含むかまたはこれを省略した実施例9の主題を含み、ここでは、誤り検出符号が巡回冗長検査(CRC)符号を含む。
実施例11は、任意手段としての要素を含むかまたはこれを省略した実施例9の主題を含み、ここでは、第2のデータが第1のデータの反転コピーを含む。
実施例12は、任意手段としての要素を含むかまたはこれを省略した実施例9の主題を含み、ここでは、第1のパーティション、第2のパーティション、第3のパーティションおよび第4のパーティションが重ならない。
実施例13は、システムオンチップであって、プログラムコードを実行するように構成された1つまたは複数のプロセッサと、比較器回路とを備える。比較器回路は、外部メモリの第1のパーティションから、プログラムコードに対応する第1のデータの部分を受信し、外部メモリの第2のパーティションから、第1のデータのコピーに対応する第2のデータの対応する部分を受信し、第1のデータの部分と第2のデータの部分とを比較し、第1のデータの部分が第2のデータの部分と一致する場合、第1のデータの部分を1つまたは複数のプロセッサに供給し、第1のデータの部分が第2のデータの部分と一致しない場合、アラーム信号を生成する、ように構成されている。
実施例14は、任意手段としての要素を含むかまたはこれを省略した実施例13の主題を含み、ここでは、第2のデータが第1のデータの反転コピーを含む。
実施例15は、任意手段としての要素を含むかまたはこれを省略した実施例13の主題を含み、ここでは、システムオンチップは、修復回路をさらに備え、修復回路は、アラーム信号を受信し、これに応答して、外部メモリの第3のパーティションに記憶されている第1の誤り検出符号をフェッチし、外部メモリの第4のパーティションに記憶されている第2の誤り検出符号をフェッチし、第1の誤り検出符号を用いて第1のデータを検証し、第2の誤り検出符号を用いて第2のデータを検証し、第1のデータの検証と第2のデータの検証とに基づいて第1のデータまたは第2のデータのうちの一方が破損したデータであり、第1のデータまたは第2のデータのうちの他方が破損していないデータであることを決定し、破損していないデータに基づいて破損したデータを修復する、ように構成されている。
実施例16は、任意手段としての要素を含むかまたはこれを省略した実施例15の主題を含み、ここでは、第1の誤り検出符号が巡回冗長検査(CRC)符号を含み、第2の誤り検出符号が巡回冗長検査(CRC)符号を含む。
実施例17は、任意手段としての要素を含むかまたはこれを省略した実施例15の主題を含み、ここでは、第1のパーティション、第2のパーティション、第3のパーティションおよび第4のパーティションが重ならない。
実施例18は、任意手段としての要素を含むかまたはこれを省略した実施例15の主題を含み、ここでは、修復回路は、アラーム信号の受信に応答して、外部メモリから修復符号をフェッチし、修復符号を実行して第1のデータおよび第2のデータを検証し、破損したデータを修復する、ように構成されている。
実施例19は、方法であって、外部メモリの第1のパーティションから、プログラムコードに対応する第1のデータの部分を受信することと、外部メモリの第2のパーティションから、第1のデータのコピーに対応する第2のデータの対応する部分を受信することと、第1のデータの部分と第2のデータの部分とを比較することと、第1のデータの部分が第2のデータの部分と一致する場合、第1のデータの部分を実行のために1つまたは複数のプロセッサに供給することと、第1のデータの部分が第2のデータの部分と一致しない場合、アラーム信号を生成することと、を含む。
実施例20は、任意手段としての要素を含むかまたはこれを省略した実施例19の主題を含み、ここでは、第2のデータが第1のデータの反転コピーを含む。
実施例21は、任意手段としての要素を含むかまたはこれを省略した実施例19の主題を含み、ここでは、方法が、さらに、アラーム信号を受信することと、これに応答して、外部メモリの第3のパーティションに記憶されている第1の誤り検出符号をフェッチすることと、外部メモリの第4のパーティションに記憶されている第2の誤り検出符号をフェッチすることと、第1の誤り検出符号を用いて第1のデータを検証することと、第2の誤り検出符号を用いて第2のデータを検証することと、第1のデータの検証と第2のデータの検証とに基づいて、第1のデータまたは第2のデータのうちの一方が破損したデータであり、第1のデータまたは第2のデータのうちの他方が破損していないデータであることを決定することと、破損していないデータに基づいて破損したデータを修復することと、を含む。
実施例22は、任意手段としての要素を含むかまたはこれを省略した実施例21の主題を含み、ここでは、第1の誤り検出符号が巡回冗長検査(CRC)符号を含み、第2の誤り検出符号が巡回冗長検査(CRC)符号を含む。
実施例23は、任意手段としての要素を含むかまたはこれを省略した実施例21の主題を含み、ここでは、方法が、さらに、アラーム信号の受信に応答して、外部メモリから修復符号をフェッチし、修復符号を実行して第1のデータおよび第2のデータを検証し、破損したデータを修復することを含む。
実施例24は、任意手段としての要素を含むかまたはこれを省略した実施例19の主題を含み、ここでは、方法は、第1のデータの部分が第2のデータの部分に一致しない場合、1つまたは複数のプロセッサへの第1のデータの部分または第2のデータの部分の供給を抑止することをさらに含む。
1つまたは複数の実現形態の前述の説明は例示および説明を提供するものであるが、網羅的であることまたは例示的な実施形態の範囲を開示の精密な形態に限定することを意図したものではない。上記の教説に照らして修正形態および変更形態が可能であり、または例示的な実施形態の様々な実現形態の実施から修正形態および変更形態が得られる。
本明細書に開示した態様に関連して説明した様々な例示的なロジック、論理ブロック、モジュール、回路および回路装置は、本明細書に記載した機能を実行するために設計された、汎用プロセッサ、デジタルシグナルプロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、または他のプログラマブルロジックデバイス、離散ゲートまたはトランジスタロジック、離散ハードウェアコンポーネント、またはこれらの任意の組み合わせによって実装または実行することができる。汎用プロセッサはマイクロプロセッサであってよいが、代替的に、プロセッサが任意の従来のプロセッサ、コントローラ、マイクロコントローラ、またはステートマシンであってもよい。
本開示では、全体を通して同様の要素を指すために同様の参照符号が使用されており、図示の構造および装置は必ずしも一定の縮尺で描かれているわけではない。本明細書で使用される場合、「モジュール」、「構成要素」、「システム」、「回路」、「回路装置」、「要素」、「スライス」などの用語は、コンピュータに関連するエンティティ、ハードウェア、(例えば、実行中の)ソフトウェアおよび/またはファームウェアを指すことが意図されている。例えば、回路または類似の用語は、プロセッサ、プロセッサ上で実行されるプロセス、コントローラ、オブジェクト、実行可能プログラム、記憶装置および/または処理装置を備えたコンピュータとすることができる。図示を用いると、サーバ上で実行されるアプリケーションおよびサーバは、回路であってもよい。1つまたは複数の回路をプロセス内に設けることができ、回路を1つのコンピュータ上にローカルに設け、かつ/または2つ以上のコンピュータ間に分散させることもできる。要素のセットまたは他の回路のセットについても本明細書に記載したところがあるが、「セット」なる用語は「1つまたは複数」と解釈することができる。
別の例として、回路または類似の用語は、電気回路または電子回路によって動作する機械部品によって提供される特定の機能を有する装置であることができ、ここでの電気回路または電子回路は、1つまたは複数のプロセッサによって実行されるソフトウェアアプリケーションまたはファームウェアアプリケーションによって動作可能である。1つまたは複数のプロセッサは装置の内部にあっても外部にあってもよく、ソフトウェアアプリケーションまたはファームウェアアプリケーションの少なくとも一部を実行することができる。さらに別の例として、回路は、機械部品を有していない電子部品によって特定の機能を提供する装置であってもよく、電子部品は、その機能を少なくとも部分的に提供するソフトウェアおよび/またはファームウェアを実行するための、フィールドゲート、論理コンポーネント、ハードウェア符号化ロジック、レジスタ転送ロジック、内部の1つまたは複数のプロセッサを含むことができる。
「例」なる語の使用は、具体的な方法で概念を提示することを意図する。本明細書で使用した用語は、特定の実施例を説明するためのものに過ぎず、各実施例の限定を意図したものではない。本明細書で使用される単数形「ある」、「1つの」は、文脈からそうでないとの明示的な指示がない限り、複数形も含むことが意図されている。さらに、「含む」、「含んでいる」、「備える」および/または「備えている」なる用語は、本明細書で使用される場合、記載されている特徴、整数、ステップ、操作、要素および/または構成要素の存在を規定しているが、1つまたは複数の他の特徴、整数、ステップ、操作、要素、構成要素および/またはこれらのグループの存在または追加を排除しないことが理解されるであろう。本明細書で使用される場合、「または」なる用語は、当該「または」なる語により関連する全ての要素の選択肢を含む。例えば、AまたはBは、Aのみ、Bのみ、ならびにAおよびBの両方を含むと解釈されるべきである。さらに、A、BまたはCに続く「~のうちの1つまたは複数」という語句は、A、B、C、AB、AC、BCおよびABCを含むと解釈されるべきである。

Claims (24)

  1. 不揮発性メモリおよびコントローラを備えたシステムであって、
    前記不揮発性メモリは、
    プログラムコードに対応する第1のデータを記憶するように構成された第1のパーティションと、
    前記第1のデータのコピーに対応する第2のデータを記憶するように構成された第2のパーティションと、
    を含み、
    前記コントローラは、
    前記プログラムコードを実行するように構成された1つまたは複数のプロセッサと、
    比較器回路と
    を含み、
    前記比較器回路は、
    第1のデータの部分および対応する第2のデータの部分を受信し、
    前記第1のデータの部分と前記第2のデータの部分とを比較し、
    前記第1のデータの部分が前記第2のデータの部分と一致する場合、前記第1のデータの部分を前記1つまたは複数のプロセッサに供給し、
    前記第1のデータの部分が前記第2のデータの部分と一致しない場合、アラーム信号を生成する、
    ように構成されている、
    システム。
  2. 前記第2のデータは、前記第1のデータの反転コピーを含む、
    請求項1記載のシステム。
  3. 前記不揮発性メモリは、前記第1のデータに対して計算された第1の誤り検出符号と、前記第2のデータに対して計算された第2の誤り検出符号と、を記憶するように構成されており、
    前記コントローラは、修復回路を備えており、前記修復回路は、
    前記アラーム信号を受信し、
    前記アラーム信号に応答して、前記第1の誤り検出符号を使用して前記第1のデータを検証し、前記第2の誤り検出符号を使用して前記第2のデータを検証し、
    前記第1のデータの検証と前記第2のデータの検証とに基づいて、前記第1のデータまたは前記第2のデータのうちの一方が破損したデータであり、前記第1のデータまたは前記第2のデータのうちの他方が破損していないデータであることを決定し、
    前記破損していないデータに基づいて前記破損したデータを修復する、
    ように構成されている、
    請求項1記載のシステム。
  4. 前記第1の誤り検出符号は、巡回冗長検査(CRC)符号を含み、
    前記第2の誤り検出符号は、巡回冗長検査(CRC)符号を含む、
    請求項3記載のシステム。
  5. 前記第1の誤り検出符号は、前記不揮発性メモリの第3のパーティションに記憶されており、前記第2の誤り検出符号は、前記不揮発性メモリの第4のパーティションに記憶されており、前記第1のパーティション、前記第2のパーティション、前記第3のパーティションおよび前記第4のパーティションは、重ならない、
    請求項3記載のシステム。
  6. 前記不揮発性メモリは、第3のデータ符号化の修復符号を記憶しており、
    前記修復回路は、前記アラーム信号を受信したことに応答して、
    第3のデータを前記不揮発性メモリからフェッチし、
    前記第3のデータによって符号化された前記修復符号を実行して前記第1のデータおよび前記第2のデータを検証し、前記破損したデータを修復する、
    ように構成されている、
    請求項5記載のシステム。
  7. 前記不揮発性メモリは、前記第3のデータのコピーに対応する第4のデータを記憶しており、
    前記比較器回路は、
    前記第3のデータの部分および対応する前記第4のデータの部分を受信し、
    前記第3のデータの部分と前記第4のデータの部分とを比較し、
    前記第3のデータの部分が前記第4のデータの部分と一致する場合、前記第3のデータの部分を前記修復回路に供給し、
    前記第3のデータの部分が前記第4のデータの部分と一致しない場合、アラーム信号を生成し、前記修復回路への前記第3のデータの部分または前記第4のデータの部分の供給を抑止する、
    ように構成されている、
    請求項6記載のシステム。
  8. 前記比較器回路は、前記第1のデータの部分が前記第2のデータの部分に一致しない場合、前記1つまたは複数のプロセッサへの前記第1のデータの部分または前記第2のデータの部分の供給を抑止するようにさらに構成されている、
    請求項1記載のシステム。
  9. 不揮発性メモリを更新する方法であって、前記方法は、
    プログラムコードに対応する第1のデータと前記第1のデータに対する第1の誤り検出符号とを含む更新命令を受信するステップと、
    前記第1のデータを前記不揮発性メモリの第1のパーティションに記憶するステップと、
    前記第1の誤り検出符号を前記不揮発性メモリの第2のパーティションに記憶するステップと、
    前記第1の誤り検出符号を用いて前記第1のデータを検証するステップと、
    前記第1のデータの検証が成功した場合、
    前記第1のデータのコピーに対応する第2のデータを生成し、
    前記第2のデータを前記不揮発性メモリの第3のパーティションに記憶し、
    前記第2のデータに対する第2の誤り検出符号を計算し、
    前記第2の誤り検出符号を前記不揮発性メモリの第4のパーティションに記憶するステップと、
    を含む方法。
  10. 前記誤り検出符号は、巡回冗長検査(CRC)符号を含む、
    請求項9記載の方法。
  11. 前記第2のデータは、前記第1のデータの反転コピーを含む、
    請求項9記載の方法。
  12. 前記第1のパーティション、前記第2のパーティション、前記第3のパーティションおよび前記第4のパーティションは、重ならない、
    請求項9記載の方法。
  13. システムオンチップであって、前記システムオンチップは、
    プログラムコードを実行するように構成された1つまたは複数のプロセッサと、
    比較器回路と、
    を備え、
    前記比較器回路は、
    外部メモリの第1のパーティションから、プログラムコードに対応する第1のデータの部分を受信し、
    前記外部メモリの第2のパーティションから、前記第1のデータのコピーに対応する第2のデータの対応する部分を受信し、
    前記第1のデータの部分と前記第2のデータの部分とを比較し、
    前記第1のデータの部分が前記第2のデータの部分と一致する場合、前記第1のデータの部分を1つまたは複数のプロセッサに供給し、
    前記第1のデータの部分が前記第2のデータの部分と一致しない場合、アラーム信号を生成する、
    ように構成されている、
    システムオンチップ。
  14. 前記第2のデータは、前記第1のデータの反転コピーを含む、
    請求項13記載のシステムオンチップ。
  15. 前記システムオンチップは、修復回路をさらに備え、前記修復回路は、
    アラーム信号を受信し、これに応答して、
    前記外部メモリの第3のパーティションに記憶されている第1の誤り検出符号をフェッチし、
    前記外部メモリの第4のパーティションに記憶されている第2の誤り検出符号をフェッチし、
    前記第1の誤り検出符号を用いて前記第1のデータを検証し、
    前記第2の誤り検出符号を用いて前記第2のデータを検証し、
    前記第1のデータの検証と前記第2のデータの検証とに基づいて、前記第1のデータまたは前記第2のデータのうちの一方が破損したデータであり、前記第1のデータまたは前記第2のデータのうちの他方が破損していないデータであることを決定し、
    前記破損していないデータに基づいて前記破損したデータを修復する、
    ように構成されている、
    請求項13記載のシステムオンチップ。
  16. 前記第1の誤り検出符号は、巡回冗長検査(CRC)符号を含み、
    前記第2の誤り検出符号は、巡回冗長検査(CRC)符号を含む、
    請求項15記載のシステムオンチップ。
  17. 前記第1のパーティション、前記第2のパーティション、前記第3のパーティションおよび前記第4のパーティションは、重ならない、
    請求項15記載のシステムオンチップ。
  18. 前記修復回路は、前記アラーム信号の受信に応答して、
    前記外部メモリから修復符号をフェッチし、
    前記修復符号を実行して前記第1のデータおよび前記第2のデータを検証し、前記破損したデータを修復する、
    ように構成されている、
    請求項15記載のシステムオンチップ。
  19. 外部メモリの第1のパーティションから、プログラムコードに対応する第1のデータの部分を受信するステップと、
    前記外部メモリの第2のパーティションから、前記第1のデータのコピーに対応する第2のデータの対応する部分を受信するステップと、
    前記第1のデータの部分と前記第2のデータの部分とを比較するステップと、
    前記第1のデータの部分が前記第2のデータの部分と一致する場合、前記第1のデータの部分を実行のために1つまたは複数のプロセッサに供給するステップと、
    前記第1のデータの部分が前記第2のデータの部分と一致しない場合、アラーム信号を生成するステップと、
    を含む方法。
  20. 前記第2のデータは、前記第1のデータの反転コピーを含む、
    請求項19記載の方法。
  21. 前記方法は、
    前記アラーム信号を受信するステップと、これに応答して、
    前記外部メモリの第3のパーティションに記憶されている第1の誤り検出符号をフェッチするステップと、
    前記外部メモリの第4のパーティションに記憶されている第2の誤り検出符号をフェッチするステップと、
    前記第1の誤り検出符号を用いて前記第1のデータを検証するステップと、
    前記第2の誤り検出符号を用いて前記第2のデータを検証するステップと、
    前記第1のデータの前記検証と前記第2のデータの前記検証とに基づいて、前記第1のデータまたは前記第2のデータのうちの一方が破損したデータであり、前記第1のデータまたは前記第2のデータのうちの他方が破損していないデータであることを決定するステップと、
    前記破損していないデータに基づいて前記破損したデータを修復するステップと、
    をさらに含む、
    請求項19記載の方法。
  22. 前記第1の誤り検出符号は、巡回冗長検査(CRC)符号を含み、
    前記第2の誤り検出符号は、巡回冗長検査(CRC)符号を含む、
    請求項21記載の方法。
  23. 前記方法は、前記アラーム信号の受信に応答して、
    前記外部メモリから修復符号をフェッチするステップと、
    前記修復符号を実行して前記第1のデータおよび前記第2のデータを検証し、前記破損したデータを修復するステップと、
    をさらに含む、
    請求項21記載の方法。
  24. 前記方法は、前記第1のデータの部分が前記第2のデータの部分に一致しない場合、前記1つまたは複数のプロセッサへの前記第1のデータの部分または前記第2のデータの部分の供給を抑止するステップをさらに含む、
    請求項19記載の方法。
JP2022165312A 2021-10-15 2022-10-14 完全性検査を伴うインプレースアーキテクチャの実行 Pending JP2023059860A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/502,300 2021-10-15
US17/502,300 US11640332B1 (en) 2021-10-15 2021-10-15 Execute in place architecture with integrity check

Publications (1)

Publication Number Publication Date
JP2023059860A true JP2023059860A (ja) 2023-04-27

Family

ID=85773301

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022165312A Pending JP2023059860A (ja) 2021-10-15 2022-10-14 完全性検査を伴うインプレースアーキテクチャの実行

Country Status (3)

Country Link
US (1) US11640332B1 (ja)
JP (1) JP2023059860A (ja)
DE (1) DE102022125477A1 (ja)

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5619642A (en) * 1994-12-23 1997-04-08 Emc Corporation Fault tolerant memory system which utilizes data from a shadow memory device upon the detection of erroneous data in a main memory device
US6009547A (en) * 1997-12-03 1999-12-28 International Business Machines Corporation ECC in memory arrays having subsequent insertion of content
TW511340B (en) * 2000-12-12 2002-11-21 Elan Microelectronics Corp Method and system for data loss detection and recovery in wireless communication
DE102007029116A1 (de) * 2007-06-25 2009-01-02 Continental Automotive Gmbh Verfahren zum Betreiben eines Mikrocontrollers und einer Ausführungseinheit sowie ein Mikrocontroller und eine Ausführungseinheit
EP2294581B1 (en) * 2008-06-20 2013-01-09 Freescale Semiconductor, Inc. A system for distributing available memory resource
EP2294580B1 (en) * 2008-06-20 2014-04-02 Freescale Semiconductor, Inc. Memory system with redundant data storage and error correction
US20180107591A1 (en) * 2011-04-06 2018-04-19 P4tents1, LLC System, method and computer program product for fetching data between an execution of a plurality of threads
US8909981B2 (en) * 2011-06-21 2014-12-09 Hamilton Sundstrand Corporation Control system software execution during fault detection
US9362913B1 (en) * 2014-09-26 2016-06-07 Altera Corporation Circuitry for implementing multi-mode redundancy and arithmetic functions
US10496484B2 (en) * 2016-08-05 2019-12-03 Sandisk Technologies Llc Methods and apparatus for error detection for data storage devices
US10606829B1 (en) * 2018-04-17 2020-03-31 Intuit Inc. Methods and systems for identifying data inconsistencies between electronic record systems using data partitioning
KR20240051328A (ko) * 2018-10-12 2024-04-19 수퍼멤, 인크. 오류 정정 및 데이터 클리닝 회로가 구비된 메모리 시스템
US20210311832A1 (en) * 2021-06-22 2021-10-07 Intel Corporation Register fault detector

Also Published As

Publication number Publication date
US20230123080A1 (en) 2023-04-20
DE102022125477A1 (de) 2023-04-20
US11640332B1 (en) 2023-05-02

Similar Documents

Publication Publication Date Title
Wu et al. FT-ScaLAPACK: Correcting soft errors on-line for ScaLAPACK Cholesky, QR, and LU factorization routines
RU2385484C2 (ru) Уменьшение частоты появления некорректируемых ошибок в системе двухмодульной избыточности в жесткой конфигурации
EP2156292B1 (en) Data integrity validation in storage systems
JP5512892B2 (ja) メモリのセグメントをプロテクトするための方法及び装置
Calhoun et al. FlipIt: An LLVM based fault injector for HPC
US6708284B2 (en) Method and apparatus for improving reliability in microprocessors
US10296312B2 (en) Methods, apparatuses, and systems for zero silent data corruption (ZDC) compiler technique
Schiffel et al. ANB-and ANBDmem-encoding: detecting hardware errors in software
US10963334B2 (en) Method and computer system for fault tolerant data integrity verification of safety-related data
US11663095B2 (en) Error detection circuit
US7146530B2 (en) Targeted fault tolerance by special CPU instructions
Boston et al. Leto: verifying application-specific hardware fault tolerance with programmable execution models
Tavarageri et al. Compiler-assisted detection of transient memory errors
CN111033470A (zh) 确保双处理器架构中的校正程序序列
JP2023059860A (ja) 完全性検査を伴うインプレースアーキテクチャの実行
US8176406B2 (en) Hard error detection
EP4089538A1 (en) System and method for improved control flow monitoring of processors
Nezzari et al. Modelling processor reliability using LLVM compiler fault injection
US7155378B2 (en) Method for providing cycle-by-cycle ad HOC verification in a hardware-accelerated environment
Briggs et al. FailAmp: Relativization transformation for soft error detection in structured address generation
Maghsoudloo et al. CCDA: Correcting control-flow and data errors automatically
Latif et al. Soft error protection via fault-resilient data representations
Huang et al. Critical Signature Assertion and On-the-Fly Recovery for Control Flow Errors in Processors
Loh et al. Fault tolerance through invariant checking for the lanczos eigensolver
Saha A single-version scheme of fault tolerant computing