IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 新唐科技股▲ふん▼有限公司の特許一覧

特許7097407ビットエラー修正の試行錯誤を優先順位付けるためのシステムおよび方法
<>
  • 特許-ビットエラー修正の試行錯誤を優先順位付けるためのシステムおよび方法 図1
  • 特許-ビットエラー修正の試行錯誤を優先順位付けるためのシステムおよび方法 図2
  • 特許-ビットエラー修正の試行錯誤を優先順位付けるためのシステムおよび方法 図3
  • 特許-ビットエラー修正の試行錯誤を優先順位付けるためのシステムおよび方法 図4
  • 特許-ビットエラー修正の試行錯誤を優先順位付けるためのシステムおよび方法 図5
  • 特許-ビットエラー修正の試行錯誤を優先順位付けるためのシステムおよび方法 図6
  • 特許-ビットエラー修正の試行錯誤を優先順位付けるためのシステムおよび方法 図7
  • 特許-ビットエラー修正の試行錯誤を優先順位付けるためのシステムおよび方法 図8
  • 特許-ビットエラー修正の試行錯誤を優先順位付けるためのシステムおよび方法 図9
  • 特許-ビットエラー修正の試行錯誤を優先順位付けるためのシステムおよび方法 図10
  • 特許-ビットエラー修正の試行錯誤を優先順位付けるためのシステムおよび方法 図11
  • 特許-ビットエラー修正の試行錯誤を優先順位付けるためのシステムおよび方法 図12
  • 特許-ビットエラー修正の試行錯誤を優先順位付けるためのシステムおよび方法 図13
  • 特許-ビットエラー修正の試行錯誤を優先順位付けるためのシステムおよび方法 図14
  • 特許-ビットエラー修正の試行錯誤を優先順位付けるためのシステムおよび方法 図15
  • 特許-ビットエラー修正の試行錯誤を優先順位付けるためのシステムおよび方法 図16
  • 特許-ビットエラー修正の試行錯誤を優先順位付けるためのシステムおよび方法 図17
  • 特許-ビットエラー修正の試行錯誤を優先順位付けるためのシステムおよび方法 図18
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-06-29
(45)【発行日】2022-07-07
(54)【発明の名称】ビットエラー修正の試行錯誤を優先順位付けるためのシステムおよび方法
(51)【国際特許分類】
   G06F 11/10 20060101AFI20220630BHJP
   G06F 21/64 20130101ALI20220630BHJP
   G09C 1/00 20060101ALI20220630BHJP
   G11C 29/44 20060101ALI20220630BHJP
   G11C 29/50 20060101ALI20220630BHJP
   H04L 9/32 20060101ALI20220630BHJP
【FI】
G06F11/10 668
G06F21/64
G09C1/00 640D
G11C29/44 100
G11C29/50 100
H04L9/32 200A
H04L9/32 200E
【請求項の数】 17
(21)【出願番号】P 2020093748
(22)【出願日】2020-05-28
(65)【公開番号】P2020195135
(43)【公開日】2020-12-03
【審査請求日】2020-05-28
(31)【優先権主張番号】16/423,676
(32)【優先日】2019-05-28
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】16/588,089
(32)【優先日】2019-09-30
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】508197206
【氏名又は名称】新唐科技股▲ふん▼有限公司
(74)【代理人】
【識別番号】100102923
【弁理士】
【氏名又は名称】加藤 雄二
(72)【発明者】
【氏名】ジヴ ハーシュマン
(72)【発明者】
【氏名】イーラン マルガリータ
(72)【発明者】
【氏名】アブラハム フィッシュマン
【審査官】漆原 孝治
(56)【参考文献】
【文献】特開2012-113809(JP,A)
【文献】特開平10-303759(JP,A)
【文献】特開2004-199751(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/10
G06F 21/64
G09C 1/00
G11C 29/44
G11C 29/50
H04L 9/32
(57)【特許請求の範囲】
【請求項1】
少なくとも1つのしきい値を用いて、電圧しきい値を設定することで、論理ビットの順位を決定するための、メモリにある少なくとも1つのビットエラーを修正する試行を優先順位つける方法であって、
第一ビットが前記第一ビットよりもエラーの可能性が比較的に低い第二ビットより前に順位付けられるように、複数のビットを順位付けることと、
エラーの可能性が比較的に低い前記第二ビットの修正を試行する前に、前記第二ビットよりもエラーの可能性が高い前記第一ビットの修正を試行することを含む順位付けた順位に従って、前記複数のビットの修正を試行することによって、複数の試行を定義し、
前記複数のビットを順位付けることは各ビットの読取電圧とその隣接する電圧しきい値との距離に応じて行うことと、
前記第一ビットは、電圧読取値が隣接する前記電圧閾値に近い前記ビットであり、前記第二ビットは、電圧読取値が隣接する前記電圧閾値から遠い前記ビットであることと、を含む方法。
【請求項2】
前記メモリは、複数のシングルレベルセルを含み、
順位付けた順位に従って修正を試行することは、
順位付けた順位に従って、複数のビットを順次にフリップさせることによって、複数のビットフリップの試行を定義し、エラーの可能性が比較的に低い前記第二ビットをフリップする前に、第二ビットよりもエラーの可能性が高い前記第一ビットをフリップさせることを含む請求項1に記載の方法。
【請求項3】
少なくとも1つのビット内のビットエラーを検出するステップをさらに含み
前記検出するステップは、順位付け、及び順位付けた順位に従って修正を試行することをトリガする請求項1に記載の方法。
【請求項4】
前記メモリは、チップを含み、
前記チップは、NVMを含む請求項1に記載の方法。
【請求項5】
前記複数のビットは、
すべてのビットがフリップした場合、及び
複数のビットフリップのうち、1つのビットフリップの試行がエラーの修正に成功したと判断された場合、
のいずれか1つが発生するまで、フリップし続ける請求項2に記載の方法。
【請求項6】
前記複数のビットの修正を試行することは、
すべてのビットに対して修正を試行した場合、及び
複数の試行のうちの一つは、エラーの修正に成功したと判断された場合、
のいずれか1つが発生するまで、継続する請求項1に記載の方法。
【請求項7】
前記メモリは、オリジナル認証機能を有しており、
順位付けた順位に従って修正を試行する(例えば、順位付けた順位に従ってフリップする)ことは、
すべてのビットに対して修正を試行した(例えば、すべてのビットがフリップした)場合、及び、
オリジナル認証機能が、複数の修正試行(例えば、ビットフリップ)のうちの1つの修正試行(例えば、ビットフリップ)が、エラーの修正に成功したと判断した場合、
のいずれか1つが発生するまで、継続する請求項1に記載の方法。
【請求項8】
前記順位付けることは、
1から0に修正された回数が0から1に修正された回数よりも多かった場合、1を保存するビットに対してより高い修正優先権を割り当て、0を保存するビットに対してより低い修正優先権を割り当てることを含む請求項2に記載の方法。
【請求項9】
前記順位付けることは、
1から0に修正された回数が0から1に修正された回数よりも少なかった場合、0を保存するビットに対してより高い修正優先権を割り当て、1を保存するビットに対してより低い修正優先権を割り当てることを含む請求項2に記載の方法。
【請求項10】
前記順位付けることは、
修正待ちすべき各ビットの、ロジックビット値を変換して読み出す電圧に対する電圧しきいである電圧読取距離を判定することを含む請求項1に記載の方法。
【請求項11】
フリップ待ちすべき各ビットの、ロジックビット値を変換して読み出す電圧に対する電圧しきいである電圧読取距離を判定することを含む請求項2に記載の方法。
【請求項12】
順位付けた順位に従って修正を試行することは、
第一の試行で修正する距離が第二の試行で修正する距離より小さい場合、複数の試行修正中の第二の試行修正を行う前に、複数の試行修正中の第一の試行修正を先に実行することを含む請求項10に記載の方法。。
【請求項13】
順位付けた順位に従ってフリップすることは、複数のビットフリップ試行のために使用される第1のビットフリップの距離が複数のビットフリップ試行のために使用される第2のビットフリップの距離よりも小さい場合に、第2のビットフリップを行う前に、第1のビットフリップを行うことを含む請求項11に記載の方法。
【請求項14】
締切点として電圧を変換することで1つのロジックビット値の少なくとも1つの電圧しきい値を読み取った中、個別の電圧しきい値は、電圧読み値に最も近い値である請求項10に記載の方法。
【請求項15】
前記メモリはチップを含み、前記方法を実行するコードはチップで実行されるファームウェアである請求項1に記載の方法。
【請求項16】
前記チップは、マージン読み出し機能を有し、
前記ファームウェアは、マージン読み出し機能を用いて、修正待ちの各ビットの電圧読み取りと個別の電圧しきい値との距離を判断する請求項15に記載の方法。
【請求項17】
少なくとも1つのしきい値を用いて、電圧しきい値を設定することで、論理ビットの順位を決定するための、メモリにある少なくとも1つのビットエラーを修正する試行を優先順位つけるシステムであって、
第一ビットが前記第一ビットよりもエラーの可能性が比較的に低い第二ビットより前に順位付けられるように、複数のビットを順位付けることと、
エラーの可能性が比較的に低い前記第二ビットの修正を試行する前に、前記第二ビットよりもエラーの可能性が高い前記第一ビットの修正を試行することを含む順位付けた順位に従って、前記複数のビットの修正を試行することによって、複数の試行を定義することと、
前記複数のビットを順位付けることは各ビットの読取電圧とその隣接する電圧しきい値との距離に応じて行うことと、
前記第一ビットは、電圧読取値が隣接する前記電圧閾値に近い前記ビットであり、前記第二ビットは、電圧読取値が隣接する前記電圧閾値から遠い前記ビットであると、を含むシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、半導体デバイスに関するメモリ体の完全度、特に非揮発性メモリ体(NVM)の完全度に関するビットエラー修正の試行錯誤を優先順位付けるためのシステムおよび方法である。
【背景技術】
【0002】
非揮発性メモリ体(NVM)半導体メモリデバイスは至る所で使われており、その特徴としてはNVMメモリユニットを含むデバイスの電力供給が中断されたり、終了させられたりの状況になってもNVMはデータビットを保存する。非揮発性メモリ体は、フラッシュメモリ、浮遊ゲート素子、窒化物唯読メモリ(NROM)、および他の電荷蓄積素子を含む。対照的に、ある種の半導体メモリデバイス、例えば、静態ランダムアクセスメモリ(SRAM)は、揮発性メモリデバイスであり、電源が切れると、保存されたデータは失われる。
【0003】
NVMユニットに保存された多位体情報は、NVMユニットのしきい電圧を基準とした状態で表すことができる。例えば、NVMユニットのしきい電圧を中間順位としてプログラムすることにより、複数のビットは単一のNVMユニットに保存することができる。例えば、複数のビット準NVMユニットでは、単一NVMユニットのnビットは、通常であれば2 n-1個のしきい値ビット準を使用する。n>1で単一NVMユニットが1ビットを保存することではない場合は、隣接するビットの電圧差が減少し、且つNVMユニットのしきい電圧状態を干渉し、状態を高くまたは低くしてしまう可能性が高い。したがって、NVMユニットの状態はそのしきい電圧(Vt)によって定義また確定できるが、このNVMユニットに電流が流れると、状態の相違を感知するの電圧にエラーが起こりやすい。
【0004】
もちろん、このしきい値は、マルチレベルセルに適用するだけでなく、1ビット(n=1)を格納する単級ユニット、すなわち2 n-1=1で1しき値を使用する場合にも適用される。
【0005】
一般的に、NVMユニットをプログラミングすることができる、例えば、それに「消去」または「読み取り」のプログラムをかけることができる。プログラムは、メモリユニット端部に電圧をかけ、FGの電荷メモリ層またはNROMの電荷捕捉層に電子を注入することができる。次に、相関層のしきい電圧(Vt)が増加。閾値電圧(Vt)またはその範囲で、それぞれNVMユニットの状態またはプログラミングビット準に関連する。従って、NVMユニットのしきい電圧に基づき、各メモリデバイスを様々な状態またはプログラムビット準にプログラミングし得る。シングルレベルのユニットには、2つのプログラミングビット準しかないので、「消去」と「書き込み」と称することができますが、マルチレベルのユニット(MLC)では、2つ以上(n>2)の書き込みビット準がある。
【0006】
文献で使用される用語「NVMしきい値」は、多目的で使用される様々な理学数値に使われている、例えば、以下の特許文献1、特許文献2でも記述したされている。
【0007】
Moonらは、(特許文献3)「隣接しているしきい電圧分布が重なると、特定の読取電圧を選択した文字ラインに印加する時に、読み取ったデータに多くのエラーが多発する可能性がある」と述べている。例えば、選択された文字ラインに加えた読取電圧Vread 3がメモリユニットがオンであることを示す場合、このメモリ体ユニットは、第2の書き込み状態「P 2」を有すると判断される。選択した文字ラインに加えた読取電圧Vread 3がストックユニットの状態がオフと感知した場合、メモリ体ユニットは、第3の書き込み状態「P 3」を有すると判断される。但し、隣接したしきい電圧の分布が重なると、第3書き込み状態が「P 3」を有するメモリユニットは、第2書き込み状態「P 2」であると誤判断される可能性がある。つまり、隣接したしきい電圧分布が図2に表示されたように重なってる場合、読み取ったデータには多数のエラーが含まれている可能性がある”。したがって、Moonは「高度な集積された半導体メモリデバイスの多ビットメモリデバイスにメモリされているデータをより正確に読み取る」と提案している。
【0008】
NVMなどのメモリに対して、マージン読み出し(margin-read,またはread margin)技術は、その使い道がこの分野で知り渡されている。フラッシュメモリまたはEEPROMのNVMに使用。
【0009】
通常、必須ではないが、マージン読み出し作動の出力は、バイナリ値を含み、各バイナリ値はそれぞれ対応するビットの強度を表す。変更後のしきい値が示度を変化させた場合、マージン読み出し作動の出力は1とすることができ、そうでない場合は0とすることができる、裕度が読み取った出力中のすべての1は「弱」ビットを表し、裕度が読み取ったの出力中のすべての0は「強」ビットを表している。
【先行技術文献】
【特許文献】
【0010】
【文献】米国特許登録公告US7626868B1
【文献】米国特許公開公報US20130235661A1
【文献】米国特許公開公報US20180062668A1
【文献】米国特許公開公報US20150255164A1
【発明の概要】
【発明が解決しようとする課題】
【0011】
本発明の目的は、ビットエラー修正の試行錯誤を優先順位付けるためのシステムおよび方法を提供することにある。
【課題を解決するための手段】
【0012】
特定の実施例は、メモリ本体のデータの完備度を向上させるために用いられ、例えば、マージンの読み出し作動をサポートするために用いられる。
【0013】
特定の実施例は、NVMシステムに対する試験及びエラーフローの最適化を図るために、時間及び電力支出を低減するために使用される。
【0014】
特定の実施例は、どのビットがエラーであるかを判断するために使用され(その他でエラーする可能性が低いビットと対照)、エラー訂正候補の優先順位をつける為、順位情報を使用する。
【0015】
特定の実施例は、メモリ本体要素のデータ完備度を向上させるために用いられ、例えば、マージン読み出し作動を支援するNVMに使用。
【0016】
特定の実施例は、エラー訂正を行うビットの優先順位をつけるために用いられ、これを通してどのエラー訂正方法を使用しても全体補正周期時間を低減することができる。特定の実施例は、各ビットがマージン読み出しに対するレスポンスをランク付けすることによって、エラーの可能性が低いビットの前に、比較的にエラーしやすいビットを先に処理する。
【0017】
特定の実施例によれば、システムは承認作動を通じてメモリに与えられた文字のエラーを察知ことができる。特定の実施例によれば、文字のうちで複数のビットにエラーが発生する可能性がある中、使用テストおよびエラー処理のロジックを提供する。前記のロジックは文字の各ビットをフリップすると同時にどのビットに対してエラー訂正が必要かを判断する。このようなシステムのアドバンテージは,ビットがフリップすると,エラーを修正することができて、当デバイスを修理実験室に送る必要がなくなる。
【0018】
特定の実施例によれば、複数のビットは任意の順序でフリップすることができ、例えば、ビットの物理的順序または任意のランダム順序。最もエラーし得るビットは、最もエラーし得ないのビットよりも先にフリップする。本発明の最適化メカニズムは、初期に不良ビットを見つける可能性を高めることができる為、長期的な統計からすれば、比較的に少数のビットがフリップする。そのため、本発明は最適化メカニズムを達成することができる。
【0019】
前記のシステムは、任意の適切な基準を用いて、比較的にエラーし得るビット及びエラーし得ないビットを判断することができる。上記の基準は、メモリ(例えばNVM)のマージン読み出し機能を使用することで、ビットに対するロジック0またはロジック1の強さ(strong)を判定することができる。当ビットが正常であれば、ビット電圧は、0と1を区別するしきい値から乖離するので、ビットの1(または0)は強い。当ビットがエッジにいるまたは衰弱している場合、マージン読み出しは、当ビットの電圧が0と1を区別するしきい値から乖離していないことを示す可能性がある為、ビットの1(または0)は強くない。
【0020】
特定の実施例は、テストおよびエラー方法を実行して、どのビットがエラーであるかを判断するために推薦する。当エラー訂正ロジックがマージン読み出し機能をコントロールできて、当ロジックは旧い不良ビットを先にフリップさせ、その後に正常なビットをフリップさせることができる。
【0021】
一部の実施例は、エラー訂正する為の方法を提供、当方法は、少なくとも1つの発生し得るエラー訂正に適用することを含み、また後に集積回路の既存検証機能を使用し、当発生し得るエラーの訂正は正しいかどうかを検証する。
【0022】
一部の実施例は、エラー修正解決案を提供しようと試み、既存のエラー訂正解案とは異なり、メモリのコストは増加させない(エラー訂正コード(error correction code,ECC)はすべてのy個データはXビートをストレージする必要あるとの比較)。これはデータの「評価」が習得機能のアイデンティティで検証したためであり、例えば、安全性と完備性を察知(security-and integrity-aware)するメモリで管理すれば、必然的に自身に負担に加えるが、本明細書で説明したように、前記した実施例を利用してエラー訂正を行えば、通常では検証以外の負担は無くなる。
【0023】
本発明で説明される実施例の適用性は、プロセッサおよびメモリの任意の機能を有する任意の一般的なマイクロコントローラにも応用されると認識できる。これらの機能は、通用だとプロセッサによって作動されるファームウェア(firmware,FW)作動であり、FWはメモリに常駐し、且つ自身は保護されるメモリの内容に含まれている可能性がある。
【0024】
本発明で説明される実施例は従来のICと共に使用することができ、従来IC自体の既存の検証(legacy auth)の一部を利用して、その暗号計算は、ハードウエア(hardware,HW)またはファームウェアで行うことができる。通常では、ハードウェアを検証の概要をストレージする為、一般的なCPU命令のファームウェアまたはハードウェア加速器を使用することができる。例えば、ハッシュ ベース メッセージ認証コード(Hash-based message authentication code、HMAC)を強力認証に使用して、且つ従来のICは作動可能なHMACの部分暗号化ハードウエアを有し、従来バージョンのハードウェアが主ICのプロセッサにアクセスすることができたことによって、プロセッサに実行されているファームウェアにアクセス可能な場合、ファームウェアは前記の従来ICで該当部分のハードウェアを利用することができる。
【0025】
代替または付属として、ICの従来のハードウェアおよび/またはファームウェアにおけるアクセスを使って機能をコントロールすることができる。
【0026】
代替にまたは付属として、本発明で説明した実施例に既存のICのハードウェアおよび/またはファームウェアを採用せず、代わりに適切なファームウェアに本明細書で説明された一部または全部機能を実施して、当ファームウェアは既存のICの従来ファームウェアのミュータブルコード(mutable code)に追加される。
【図面の簡単な説明】
【0027】
図1図1は、本発明にある一つの実施例で取り上げた集積回路の見取り図であり、その集積回路は、いくつかの実現すべき機能(「他の機能」ともいう)を有し、且つエラー修正機構を備え、認証を使いながら可能となるエラー修正をテストする機能を含む。
図2図2は、認証とエラー修正を組み合わせるプロセスを示す簡略化したフローチャートである。
図3図3は、図2の作動30の流れのサンプルのプロセスを示した簡略化したフローチャートである。
図4図4は、メモリがページに基づく非揮発性メモリである場合、且つエラー修正および検証を行うためのプロセスを示す簡略化したフローチャートである。
図5図5は、図2の作動プロセス220を示す簡略化したフローチャートである。
図6図6は、図1にある集積回路の作動プロセスを示す簡略化したフローチャートである。
図7図7は、適切なエラー修正サンプルプロセスを示す簡略化したフローチャートであり、可能となるエラー修正のテストを含む。
図8図8は、図7の作動プロセス10012のサンプルプロセスを実行する為の簡略化したフローチャートである。
図9図9は、図1にあるメモリ区域3の見取り図であり、文字認証比較機能も示している。オーバロード(payload)および認証サイズは一例としてのみ表され、いかなる他の数値にすることもできる。
図10図10は、一部の実施例のスキャンおよびエラー修正機能の見取り図である。ビットを順次、または任意の適切な打診法に基づいてフリップさせることが可能だと理解することができる。
図11図11は、図1のメモリ区域3の見取り図であり、強力認証の比較機能も示している。
図12図12は、一部の実施例に基づいて、強力認証をトリガさせる期間を示す見取り図である。
図13図13はエラーテストするエラー修正の簡略化したフローチャートであり、通常は図1図12にある例示システムによってエラーが検出された時にトリガされる。
図14図14aは、nビットエラー文字にエラーテストする方法ついての簡略化したフローチャートである。例えば図13にはフリップするbビットの一部または全ビットを含み、Bまたそれより少ない推定修正をもたらし、且つエラーだと検証されたビットの修正する為のフリップに対して識別を試み、特定のビット配列をしきい値に基づく優先順位を提供する。図14aと図14bは、比較的に不可能/可能成功(most/least likely to succered)によって、順位付け/ランク化する。
図15図14bは、nビットエラー文字にエラーテストする方法ついての簡略化したフローチャートである。例えば図13にはフリップするbビットの一部または全ビットを含み、Bまたそれより少ない推定修正をもたらし、且つエラーだと検証されたビットの修正する為のフリップに対して識別を試み、特定のビット配列をしきい値に基づく優先順位を提供する。図14aと図14bは、比較的に不可能/可能成功(most/least likely to succered)によって、順位付け/ランク化する。
図16図15は、ビットエラー防止方法を示しており、周期的に予防的なメモリの修理を行う為に実行する。例えば、エラー発生しようとするビットを識別して、そのビットに対して予防的な処理を行う。
図17図16は、エラー修正方法及びメモリコンテンツの更新を示す簡略化したフローチャートである。
図18図17は、エラー修正為のエラーテストを簡略化したフローチャートであり、図13に示す誤りのあるビットの降順(descending order)に基づいてビットフリップを行う。
【発明を実施するための形態】
【0028】
したがって、本発明は少なくとも以下の実施例を提供する。
【0029】
実施例1:
【0030】
自己修正メモリシステム:当システムに集積回路、集積回路とそれに含まれるメモリ、メモリ内のコンテンツ認証機能およびエラー訂正機能を含む。メモリ内コンテンツ認証機能は、認証待ちのメモリのコンテンツと標準のコンテンツと比較し、且つ認証待ちのメモリのコンテンツが標準コンテンツだと認証されると、メモリのコンテンツ認証機能は「認証済(authentic)」を出力し、さもなければ「非認証(non-authentic)」を出力する。エラー訂正機能は、少なくとも1つ可能な修正をメモリの少なくとも1つの文字エンティティに適用した上、可能な正確である文字エンティティを生成しながら、メモリのコンテンツ認証機能を喚起し、前記の可能な正確である文字エンティティに対応する。また、メモリのコンテンツ認証機能の出力が「認証済」となれば、メモリの中のエラーの文字エンティティを可能な正確な文字エンティティで置換する。したがって、認証に関する信頼度レベルから導き出す信頼度のレベルによるエラー修正が実現する。
【0031】
本発明で説明される実施例について、認証待ちの対象となるコンテンツを標準コンテンツと比較することは、一般的に認証対象コンテンツと関係している派生内容と比較する、例えば簡単に言えば、元のコンテンツを標準コンテンツと直接に比較するのではなく、元のコンテンツと関係している派生内容と比較することだと理解して頂きたい。
【0032】
実施例2:
【0033】
上記実施例で述べた任意のシステムについて、システムが持つ認証機能は暗号化した強力認証の実行に応用可能である。
【0034】
実施例3:
【0035】
上記の実施例で述べた任意のシステムについて、その認証機能は文字認証の実行に応用可能である。
【0036】
実施例4:
【0037】
上記の実施例で述べた任意のシステムについて、そのエラー修正機能は、少なくとも1つ可能な修正をメモリの少なくとも1つの文字エンティティに適用した上、可能な正確である文字エンティティを生成する。正確な文字エンティティを果たす為に文字認証機能を喚起。メモリの文字認証機能の出力が「認証済」となれば、強力認証を喚起し、可能な正確文字に適用する。そして、強力認証が「認証済」と出力すれば、その可能な正確文字でメモリにあるエラー文字を置換する。したがって、強力認証に関する文字確認の信頼度レベルから導き出す信頼度のレベルによるエラー修正が実現する。
【0038】
実施例5:
【0039】
上記の実施例で述べた任意のシステムについて、文字認証をメモリの少なくとも1つの文字に加えることにより、エラー文字/文字を検出し、「非認証」の出力を生成したすべての文字はエラーと見なされ、「認証」の出力を生成するすべての文字は非エラーと見なされる。
【0040】
実施例6:
【0041】
上記の実施例で述べた任意のシステムについて、少なくとも1つの可能な修正は、エラー文字エンティティの中の少なくとも1ビットを0から1にするか、もしくは1から0にフリップすることを含む。
【0042】
実施例7 a:
【0043】
上記の実施例で述べた任意のシステムについて、可能な修正は複数のエラー文字に適用され、複数の可能な正確な文字を生成し、一度だけ強力認証を喚起して、修正されたメモリ画像またはブロックに適用する。修正されたメモリ画像またはブロックにおけるすべての複数の(重複表示)エラー文字の中で、それぞれ可能な正確な文字に置換される。複数回にわたって、それぞれ複数の可能性のある複数の正確な文字に複数の各メモリ画像またはブロックに強力認証を喚起するのではなく、メモリまたは修正時間もしくは両者のコストを節約する。
【0044】
実施例7 b:
【0045】
上記の実施例で述べた任意のシステムについて、可能な修正は複数のエラー文字に適用され、複数の可能な正確な文字を生成し、一度だけ強力認証を喚起して、複数の可能な正確文字に適用する。複数回にわたって、それぞれ複数個の可能な正確文字のメモリ画像またはブロックに強力認証を喚起するのではなく、少なくともメモリと修正時間のどれかのコストを節約する。
【0046】
実施例8:
【0047】
上記の実施例で述べた任意のシステムについて、第1の可能とpなる修正および第2の可能となる修正は少なくとも1つのエラー文字に適用され、且つその第1の可能となる修正でフリップされるエラー文字のうちの任意のビットは、第2の可能となる修正がエラー文字に適用される前にフリップされない為、第2の可能となる修正が同一エラー文字に適用する前、エラー文字の第一可能な修正を復元(undo)。
【0048】
実施例9:
【0049】
上記の実施例で述べた任意のシステムについて、可能となるすべての修正は少なくとも1つのエラー文字に適用される。
【0050】
実施例10:
【0051】
上記の実施例で述べた任意のシステムについて、可能となる修正を適用するすべてのエラー文字は、修正不可能なエラー文字を含む、それはあらゆる可能となる修正を試行したが、依然に正しい文字認証をパスすることができず、修正不可(uncorrectable)だと認識される。
【0052】
実施例11:
【0053】
上記の実施例で述べた任意のシステムについて、可能となる修正のサブセットを判断するために少なくとも1つの打診法が採用する。その可能となる修正のサブセットは、あらゆる可能となる修正よりも少ない修正を含み、且つサブセットにある可能となる修正のみが少なくとも1つのエラー文字に適用され、サブセットにおいて可能となる修正がない場合であっても同じである。
【0054】
打診法は候補となる修正(可能となる修正とも言う)のサブセットの生成に用いられ、また優先順位(prioritize)の候補の修正にも用いられることができ、所定された使用範囲の中で、より早く正確な修正方法を発見する可能性を高めた。不可能な修正法ついては、以降のテストでのみ試行する(例えば、可能となる修正が認証されない場合のみ)。
【0055】
通常であれば、所定された優先かつ可能な修正を持つサブセットが認証されない場合、システムは残りの可能となる修正を実行しない(認証される可能性が低いと推定され、優先度が低いと認識される)。
【0056】
実施例12:
【0057】
上記の実施例で述べた任意のシステムについて、認証待ちのメモリコンテンツと標準コンテンツを比較するのは、強化認証を時間t 2で保存され且つ所定のメモリにある承認待ちメモリコンテンツに適用した上で、計算認証値を生成し、この計算認証値及びメモリ結果を比較する。メモリ結果は期待認証値とも言い、期待承認地はその時間t 2の前に時間t 1において、所定のメモリ位置におけるメモリコンテンツに強化承認を行うことで生成される。
【0058】
実施例13:
【0059】
メモリコンテンツに対するエラー修正機能を提供する一つの方法である。メモリコンテンツは集積回路にあるターミナルとなるメモリ(非揮発性または揮発性であってもよい)に保存されている。少なくとも以下のプロセスを含む。
【0060】
(b):ターゲットとなるメモリに保存されているメモリコンテンツのエラーを検出。
【0061】
(c):エラーを修復する可能性のあるビットの組み合わせで置換し、少なくとも1つの即時署名マッチ(on-the-fly signature match)を検索した上で、修復を定義且つ修復を成功させる強力認証である。
【0062】
(d):少なくとも1つの即時署名のマッチングを見つけたら、完全認証を修復サジェスチョンの最終認証とする。
【0063】
(e):電源を使用して、セキュリティコードでの修復リニューアルプログラムを中断する場合、コードを修正して最終検証をパスすることにより、ターゲットメモリのエラー修正を提供し、目標メモリ体を実験室に運ぶ必要がなくなる。
【0064】
実施例14:
【0065】
上記の実施例で述べた任意の方法のうち、メモリの修復ニーズを示す出力指示を提供することも含まれている。例えば、メモリのコンテンツ修正が失敗したため、少なくとも一つのターゲットメモリを実験室に持ち込み、完全なる再プログラムを行う必要がある。
【0066】
実施例15:
【0067】
上記の実施例で述べた任意のシステムのうち、出力指示を出す前に、エラーを有するビットを置換(single-bit permutation)するための捜査を実行する。
【0068】
実施例16:
【0069】
上記の実施例で述べた任意の方法のうち、出力指示を出す前に、エラーが発生しているすべてのビットおよび双ビットの置換するための捜査を実行する。
【0070】
実施例17:
【0071】
上記の実施例で述べた任意の方法のうち、出力指示を出す前に、エラーが発生したすべてビットの置換を探索し、1つの即時署名も発見されていない場合、エラー発生した少なくともいくつかの双ビットの置換を再度検索する。
【0072】
実施例18:
【0073】
上記の実施例で述べた任意の方法のうち、検出前に一度の強力認証および即時の文字認証することによって、ターゲットのメモリに保存されているメモリのコンテンツを保護することも含まれる。
【0074】
実施例19:
【0075】
上記の実施例で述べた任意の方法について、一度の強力認証の実行は、低アクティブ状態からの集積回路を起動させた直後に実行される強力認証を含む。
【0076】
施例20:
【0077】
上記の実施例で述べた任意の方法について、一度の強力認証の実行は、集積回路が起動した直後に実行される強力認証を含む。
【0078】
実施例21:
【0079】
上記の実施例で述べた任意の方法によると、一度の強力認証の実行は、集積回路がスリープ状態から離れた直後に実行される強力認証を含む。
【0080】
実施例22:
【0081】
上記の実施例で述べた任意の方法によれば、メモリのコンテンツは、ターゲットのメモリに保存されているコードを含む。
【0082】
実施例23:
【0083】
上記の実施例で述べた任意の方法によれば、エラー修正機能は少なくとも1つの可能となる修正をメモリもある少なくとも一つのエラー文字に適用し、エラー修正機能は可能となる正確の文字を生成し、そしてメモリコンテンツ認証機能を喚起して認証プロセスを実施。メモリのコンテンツ認証機能が「認証済」だと出力すれば、その可能となる正確な文字でメモリ内のエラー文字を代替する。
【0084】
実施例24:
【0085】
上記の実施例で述べた任意の方法によれば、エラー修正機能は少なくとも1つの可能となる修正を少なくとも1つのエラー文字エンティティ認証に適用。エラー修正機能は正しい文字エンティティを生成し、正確な文字エンティティを果たす為にメモリのコンテンツ認証機能を喚起する。メモリのコンテンツ認証機能が「認証済」を出力した場合、その可能となる正確な文字でメモリ内のエラー文字を代替する。
【0086】
実施例25:
【0087】
上記の実施例で述べた任意のシステムによれば、前の時間t 1は、メモリのファームウェアのリニューアルが起こった時間である。
【0088】
実施例26:
【0089】
指令を含むコンピュータープログラムをである、プロセッサがこの指令を実行するとき、指令はプロセッサに上記の1つまたは複数の方法のうちの1つまたは複数の作動を実行させる。
【0090】
実施例27:
【0091】
少なくとも一つのプロセッサを含むシステムである、通常では、専用のハードウェアを組み合わせて作動する、そのシステムは本明細書で説明した1つまたは複数の方法のうちの一つまたは複数の作動を実行する。
【0092】
実施例101:
【0093】
メモリの少なくとも1つのビットエラーテストと優先順位を修正する方法。ロジックのビット基準を決定するために、少なくとも一つのしきい値でしきい電圧を使用。この方法は、複数のビット階層に対して、複数のビットのうちの第一ビットが第二ビットの前に階層化し、第二ビットが第一位よりもエラー発生にくい。また、階層順に沿って複数のビットを修正しようと試み、これによって複数の試行修正が定義され、比較的にエラー発生しにくい第二ビットを修正しようとする前に、第二のビットよりもエラーし得る第一のビットを修正する試みが行われる。
【0094】
実施例102:
【0095】
上記で述べた方法では、メモリは単層式メモリユニット(single-lvel cell)を含み、二進制(0/1)ストレージユニットとも呼ばれる。順序に従って修正を試みるプロセスは、階層順に複数のビットを順次フリップさせることにより、複数のビットのフリップを定義、かつフリップが比較的にエラーしにくいな第2のビットの前に、先に第二ビットよりエラーしやすい第1のビットをフリップさせる。
【0096】
実施例103:
【0097】
上記で述べた任意の実施例の方法には、少なくとも1ビットのビットエラーを検出することが含まれ、この検出は階層化をトリガし、順序に応じて試行も行う。
【0098】
実施例104:
【0099】
上記で述べた任意の実施例の方法には、メモリは一ウエハを含み、且つこのウェハは一NVMを含む。
【0100】
実施例105:
【0101】
上記で述べた任意の実施例の方法には、複数個のビットは下記のイベントのうちの1つが発生するまでフリップし続ける。
【0102】
すべてのビットがフリップした。および
【0103】
複数のビットがフリップする中で、ビットフリップを試みたところ、エラーの修正に成功したと判断された。
【0104】
実施例106:
【0105】
上記で述べた任意の実施例の方法では、複数の試行修正は、下記のイベントのうちの1つが発生するまで継続される。
【0106】
すべてのビットに対して修正を試みた。および
【0107】
複数の試行修正のうちの一つは、エラーの修正に成功したと判断。
【0108】
実施例107:
【0109】
上記で述べた任意の実施例の方法では、メモリのウエハは本来の認証機能を有しており、順序に従って修正を試行していくこと(例えば、順序に従ってフリップする)は下記のイベントのうちの1つが発生するまで継続的に行われる。
【0110】
すべてのビットに対して修正を試み、例えば、すべてのビットがフリップしました。および
【0111】
従来の認証機能は、複数の試行修正(例えば、ビットフリップ)のうちの1つの試行修正(例えば、ビットフリップ)がエラーの修正に成功したと判断。
【0112】
実施例108:
【0113】
上記で述べた任意の実施例の方法では、階層化プロセスは、1から0に修正された回数が0から1に修正した回数よりも多い場合、1のビットを保存することに対してより高い修正優先権を割り当て、0のビットを保存することに対してより低い修正優先権を割り当てることを含む。
【0114】
実施例109:
【0115】
上記で述べた任意の実施例の方法では、階層化プロセスは、1から0に修正された回数が0から1に修正された回数よりも少ない場合、0のビットを保存することに対してより高い修正優先権を割り当て、1のビットを保存することに対してより低い修正優先権を割り当てることを含む。
【0116】
実施例110:
【0117】
上記で述べた任意の実施例の方法では、階層化プロセスは修正すべき各ビットの電圧読取距離(a distance of a voltage reading of each bit)を判断する。電圧読取距離は、変換してロジックビット値を読み出す電圧に対する電圧しきい値である。
【0118】
実施例111:
【0119】
上記で述べた任意の実施例の方法では、階層化プロセスはフリップ待ちのすべてビットの電圧読取距離を判定する。電圧読取距離は、変換してロジックビット値を読み出す電圧に対する電圧しきい値である。
【0120】
実施例112:
【0121】
上記で述べた任意の実施例の方法では、順序に従って修正を試みるプロセスは、第1の試行修正(first attempted correction)に用いる距離が第2の試行修正に用いる距離よりも小さい場合に、複数の試行修正中の第2の試行修正を行う前に、複数の試行修正のうちの第1の試行を行うプロセスを含む。
【0122】
実施例113:
【0123】
上記で述べた任意の実施例の方法では、順序に従ってフリップするプロセスは、複数のビットフリップの試行するために使用される第1のビットフリップの距離が複数の試みビットフリップのために使用される第2のビットフリップの距離よりも小さい場合に、第2のビットフリップの前に、第1のビットフリップすることを含む。
【0124】
実施例114:
【0125】
上記で述べた任意の実施例の方法では、オフポイントとして電圧を変換してロジックビット値に読み出す少なくとも1つの電圧しきい値のうち、個別の電圧しきい値は、電圧読み値に最も近い値である。
【0126】
実施例115:
【0127】
上記で述べた任意の実施例の方法では、メモリは一ウエハを含み、上記した方法を実行するコードはウェハで実行されるファームウェアである。
【0128】
実施例116:
【0129】
上記で述べた任意の実施例の方法では、上記のウェハはマージン読み出し機能を有しており、このファームウェアはマージン読み出し機能を使用して、修正対象となるすべての修正待ちビットの電圧読み取りと個別電圧閾値の距離を判断する。
【0130】
実施例117:
【0131】
メモリの中の少なくとも1つビットエラーテストと優先順位修正をアレンジするもの、ロジックビット基準は少なくとも一つしきい値を用いた設定したしきい電圧値によって決定され、このシステムは以下を含む。
【0132】
1つの回路は、階層化(rank)の複数のビットを使用して、複数のビットのうちの第1のビットが第2のビットの前に階層化される。その第2のビットが第1のビットと比較してエラー可能性は低くなる。および
【0133】
一つのコントローラは、階層化の順(order of the ranking)に従って複数のビットを修正しようとの試行により、複数の試行修正を定義する。それについては第二のビットを修正しようとする前に第一のビットを修正することを試行。その第一のビットは第二のビットに比べて比較的にエラーしやすい。
【0134】
以下は本発明にある名詞についての定義説明である。
【0135】
アクセス制御(Access Control):任意の既存のアクセス制御機能を指しており、通常はプロセッサとメモリとの間のインターフェースと結合し、ハードウェアおよびファームウェアを含む仮想ロジックのエンティティとして実施することができる。
【0136】
ターゲットメモリ(Target Memory):集積回路(ICとも呼ばれる)内の任意のメモリレイを含むことができ、通常ではメモリレイは使用中および不活動なメモリのページングを含む。現在未使用のページングは保留のページングと見なされる。
【0137】
保留のページングを使用する場合で、例えば、メモリページングを更新する際に非常に短いバッファとして使用、その方法は通常だと保留ページングに含まれているコンテンツが書き込みの内容であることを検証する(例えば、保留ページングの内容と保留ページングにコピーされたデータとを即時に比較することによって、両者が同じであることを保証する)。そうでない場合は、保留ページングの内容は消去され、再度の書き込みによって保留ページに書き換えるべきである。保留ページングに書き込まれた後、直ちに保留ページングを読み取りの検証を実施して、書き込みが成功したことを確認する。これにより保留ページングまたは空白ページングにデータが正しく保存される。例えば、完全に書き込むしたデータと一致することを含む。
【0138】
強力認証(Strong Authentication):メモリコンテンツを検証するためのアルゴリズムまたはプログラムを含むことができる。大型コードまたは継続的なデータセグメントでは、ダイジェスト/セキュリティ鍵に基づくハッシュ(HASH)関数を採用可能、例えば、金鍵ハイブリッドメッセージ認証コード(HMAC)またはパス文字に基づくメッセージ認証コード(CMAC)が採用されてもよい。
【0139】
強力認証に使用される認証コードは、SHA(SHA-1、SHA-2)やHMACなどのセキュリティハッシュ関数に基づくことができる、https:/en.wikipedia.org/wiki/Securega Algorithmsをご参照。
【0140】
通常では、本明細書の「強力認証」は単一の数値を生成し、その数値は、保護すべき全体内容の部分か、全体のデータを表す画像または全体の画像ブロック(例えば、コードに限定されない)を代表し、検証待ちのすべきデータの一部または全体の画像またはデータの画像ブロックの内容の完備性を確保する。特定の対象行また対象列のみを検証する画像ブロックしている既存の2 D水平/垂直エラー補正方式とは異なる。
【0141】
通常では、強力認証は文字認証よりも高い信頼度でメモリコンテンツを認証する。したがって、本明細書で使用される「強力認証」は、より小さいダイジェスト(ここで述べた「文字認証」アルゴリズムによって生成されるダイジェスト)を生成するための任意のアルゴリズムまたは任意のメッセージ認証コードスキームを含むことが指しており、したがって、文字認証に対して、本明細書で使用される「強力認証」は不可逆だと見なし、つまりダイジェストから元文書を再生成することが不可能である。
【0142】
通常、メモリコンテンツ(認証によって識別できる)内の特定データの文字データでは、エラーを訂正または修正した後、修正したデータとデータを代用する強力認証及び強力認証した後、すべてのメモリ体コンテンツに対する強力認証は再計算され、再計算された結果は、保存されたあらかじめ計算された強力認証またはダイジェストと比較される。
【0143】
通常、強力認証は所定のデータ本体に適用される(そのうちの少なくとも1つのエラー文字は、それぞれ提案された正しい文字に置換される)。例えば、メモリ全体の画像またはその一部だけに加えられ、これは再計算された強力認証と比較するためのデータ本体に依存する。例えば、再計算される強力認証と比較するための予め計算された強力認証データが、メモリ全体の画像(通常、誤った文字を提案された正しい文字元に置き換える)上、あるいはメモリ体ブロックのみで予め計算されているかに依存するもの。
【0144】
再計算した強力認証データと予め計算した強力認証データ(所望の強力認証データともいう)が完全に等しい場合、通常は強力認証を「成功的(successful)」とみなす。
【0145】
「強力検証」はファームウェアがクエストした時に発生する可能性がある。ファームウェアのクエストは通常アプリケーションプログラムシステムからきたもの、つまり集積回路のより高いレベルのシステムを利用して統合したものです(第1図参照)。代替的にまたは追加的に、所定のIC(集積回路)で実行されるアプリケーションファームウェアのクエストで「強力認証」が実行される。所定のICにはエラーを修正しようとするメモリコンテンツを含む。通常では、上記のクエストを受信すると、いくつかの他のICまたはシステム要素で識別された攻撃などのイベントによって引き起こされるあるトリガ(例えば、第12図による)に応答して、自身を再認証することができる。したがって、より高いレベルのシステムは、本明細書で説明したような機能(例えば、強力認証)の要求を実行するための可能なソースであり、IC内のファームウェアおよびハードウェア のイベントもこのようにすることができる。
【0146】
文字(word):メモリよりもはるかに小さい任意のデータのセグメントを含むことができる。数千に上る文字のメモリレイにおける16ビットのデータか、128ビットのデータ、または256ビットのデータ、もしくはそれより以上のもの。通常では、文字はメモリから検索された最小データのセグメントであり、自身の認証コードを持っている。
【0147】
文字認証(Word Authentication)は、署名マッチングとも呼ばれる。認証されるべき「文字」のダイジェスト(digest of the「word」being authenticated)を含むことができる。
【0148】
即時署名マッチング(on-the-fly signature match):字元を読み取るたびに、文字認証を同時に読み出す。通常では、ビット構造の長さはデータの長さと認証の長さを合計したものである。また、読み取った文字に基づいて認証を再計算し、計算した認証データをその読み取った文字の認証と比較する。再計算された認証データなどがメモリから読み取った認証データで同じで場合は、マッチングと判断される。
【0149】
全認証(Overall Authentication):システムが管理するメモリのすべてのコンテンツを作動させる強力認証を含むことができる。通常、どんな時でも、特にデータ修正した後に、コンテンツのダイジェストが予め計算されたデータと同じであれば、再認証する時には現在のコンテンツは当時のあらかじめ計算されたものと同じと見なすことができる。したがって、仮にデータ修正後、直ちに実行され、且つ強力認証が成功した場合、提案された訂正また修復が正しいと考え、認証済または確認済とのこと。
【0150】
ダイジェスト(digest):コンテンツからハッシュ(hash)を生成するためのアルゴリズム(例えば、強力認証)を含むことができ、このハッシュは認証待ちの対象コンテンツの完備性を確認することができる。例えば、コンテンツが変更されたかどうか、または(制御されたアクセス権限を持つメモリについて)未許可の変更または改ざんがされたかどうかを確認する。したがって、ダイジェストとハッシュは、本明細書では一般的に互換して使用することができ、ともに名詞または動詞として使用可能。
【0151】
HMACアルゴリズム:通常はメッセージ認証コード(message authentication code, MAC)アルゴリズムである。それは内部でハッシュ(暗号化ではなく)を使用してMACを生成する。
【0152】
即時(on-the-fly):例えば、他の進行中のプログラムと同時に進行する。例えば、認証の最中では認証待ちのデータを読み出しながらダイジェストを計算し、そのダイジェストを期待値と比較したり、または(コンテンツの)書込み作動中にダイジェストを計算してメモリに書き込めたりすることができる。
【0153】
例えば、以下の特許ファイルには、即時暗号化、解読と認証が記述したされており、その開示内容は引用してここに掲載:https:/patens.google.com/patent/US 9525546 B 2/en。
【0154】
エラー検証(Errer Veriftication):時間t 2で算出されたメモリの「強力認証データ」と時間t 2の前に時間t 1で予め計算/保存(期待的ともいう)している同じメモリ領域にある「強力認証データ」との間にマッチングあるいマッチングしない(同じかどうか)を判断すること含む。
【0155】
通常では、予め計算された強力認証データはメモリ空間またはアレイ(本明細書の実施例を使用して、その完備性の保護)のコンテンツ全体に対する強力認証のダイジェストを含む。
【0156】
スタック式フラッシュメモリ(Stoced flash):1つのウエハを含むことができ、そのウエハは「垂直」または「3 D」ウエハに分類され、複数(時には数十層)のメモリ層または結晶粒を積層することによって高い密度の保存を行い、ビットコストを低減することができる。垂直3 dスタック技術(bit cost scaling,BiCS)または1つの穿孔およびプラグ・プロセス(punh and plug process)が使用されてもよい。本明細書の実施例は通常、メモリに応用する、そのメモリにスタックフラッシュメモリおよび他のフラッシュメモリ/非揮発メモリ(NVM)技術を含むが、これらに限定されないことを理解して頂きたい。
【0157】
オーバヘッド(Overhead):メモリ容量に含まれる冗長は、通常は不利であり、例えば、結晶粒面積および製品コストの少なくとも一方にとって。例えば、エラー修正コード(ECC)を利用してエラー修正を実施すると、一般的にECCのXビットをデータ/検証メッセージのYビットに追加することを意味し、これはエラー修正に使用されるオーバヘッドまたは余分なメモリ容量(Y/X)x 100%に変換される。
【0158】
文字エンティティ(Word entity):メモリに保存されている関連文字のデータを含み、文字そのもの(文字の位元ともいう)を含み、文字に関する文字検証データ(検証ビットともいう)を加えることができる。文字認証は本明細書では文字の「相応の」文字認証データと呼ぶ。いくつかの実施例によれば、文字部分のビットおよび認証部分のビットはいずれにスキャンまたはフリップされるが、文字については通常計算が実行され、認証比較については明細書で例にしたすべてが実行される。
【0159】
本明細書では、ECC(エラー修正コードを示す)、FW(ファームウェアを表す)、NVM(非揮発性メモリを表す)、ASIC(特殊応用集積回路を示す)、DSP(デジタル信号処理)、HMAC(金鍵ハイブリッド情報認証コードを示す)、IC(集積回路を表す)、およびHW(ハードウェアを表す)の略語を採用する。
【0160】
上記の実施例および他の実施例について、次のセクションで詳細に説明する。本文または図式に登場するいかなる商標もその所有者の財産であり、本明細書に登場する目的は本発明の実施方法の一例を説明または説明するためだけである。
【0161】
説明書全体の議論において、別途に具体的な説明をしない限り、以下の議論にて明らかであることは、例えば「処理」、「計算」、「推定」、「選択」、「順位つけ」、「ランク付け」、「判断」、「生成」、「再評価」、「分類」、「双整合(stereo-matching)」、「一時保存」、「偵察」、「結合」、「重複」および「獲得」、またはこれらと似た用語は、作動か転換することあるいはその組み合わせを指しており、その対象は実際のデータがある少なくとも一つのコンピュータ、コンピュータシステム、プロセッサ、または類似の電子計算デバイスの作動、プログラムまたはそれらの組み合わせ(例えばコンピュータシステムの一時的なメモリ、メモリとその組合せ、または他のこれらに類似しているもの)。メッセージストック、伝送、または表示デバイス内の電子数量である。用語「コンピュータ」は、一般的にデータ処理能力を有するあらゆる種類の電子機器を対象すると解釈されるべきであり、パーソナルコンピュータ、サービスサーバ、組み込みコア、コンピュータシステム、通信機器、プロセッサ(例えば、デジタル信号プロセッサ(DSP)、マイクロコントローラ、フィールドプログラマブルロジックゲートアレイ(field programmable gate array)、FPGA)、集積回路(ASIC)等々と含む。
【0162】
本明細書でそれぞれ示した要素は必ずしも異なる構成要素ではなく、代替的に同じ構造であってもよい。あるべき要素または特徴となる記述したは、(a)要素または特徴として実施例、(b)要素または特徴となるものいが無い実施例、および(c)要素または特徴は、限定的にその中に存在して実施例を指すことができる。例えば、ユーザは要素または特徴の存在を構成または選択することができる。
【0163】
本発明の範疇に含まれる方法およびシステムは、機能ブロックの一部(例えば、任意の適切なサブセット)または全部は任意の適切な順序に基づいて、図に示すように、具体的に説明された実施例を例として表示することができる。
【0164】
本明細書で説明された計算は、機能的またはロジック的な構成要素が様々な形態で実施されてもよく、例えば、ハードウェア回路は既存のVLSI回路、ロジックゲートアレイまたはプログラマブルハードウェアデバイスに限定されない。例えば、FPGAに限定されず、またはソフトウェアコードとして、そのソフトウェアプログラムコードは、少なくとも1つの有形または無形のコンピュータ読み取り可能な媒体に保存される。且つ、少なくとも1つのプロセッサまたはその任意の適切な組み合わせによって実行される。
【0165】
特定の機能要素は、特定のソフトウェアコードシーケンスまたは複数のこのようなソフトウェアコードから構成されてもよい。これらのソフトウェアコードは共同に説明して来た機能要素が持つ作用,働きまたは利用する。例えば、構成要素は複数のコードシーケンス上に分布することができ、オブジェクト(objects)、手続き(procedures)、機能(functions)、常型(routines)、およびプログラム(programs)に限定されず、通常の協同作動す一部のコンピュータファイルをトリガできる。
【0166】
適切であれば、本明細書で説明する任意のロジック機能は、適時にアプリケーションとして応用されることができる、ASICまたはDSPまたはそれらの任意の適切な組み合わせに限定されないような任意の適切なアーキテクチャオプションを採用できる。実際には、本明細書で言及した任意のハードウエア構成要素は、ウェハのような1つ以上のハードウエアデバイスを含んでもよく、それは同じ場所または互いの位置が離れていてもよい。
(実施の方法)
【0167】
ICの製造メーカーは、集積回路のメモリコンテンツを保護したいと希望している。
【0168】
本明細書の実施例は、多くの異なる技術のメモリに適用され得るので、本明細書で使用される用語「フラッシュメモリ」は、一例としてのみ使用。
【0169】
本発明は、ICにおけるメモリのコンテンツの完備性を確保するためのシステムを詳細に説明する。通常では、このようなメモリへのアクセスは制御される、ダイジェストは制限され且つ許可されたメモリの更新に署名するために使用され得る。したがって、アクセス制御されていないメモリ内の任意の変更は、望ましくないエラーであり、悪意または過度の実質あるいは電気的障害であっても該当する(例えば、実質的なメモリ自身の故障)。本論文のシステムはエラーの可能となる修正をテストする作動ができ、集積回路が埋め込まれたコンピュータまたは他の製品の「乱序」時間を減らす。一般的に、(1つまたは一つ以上のレベル)認証機能は、その集積回路は通常いかなる目的として、可能となる修正を検証または承認する為に使用、フォント認証を使用してエラーを発見、そして初期段階にて提案の修正を検証し、強力認証を使用して、提案された修正を最終的に検証するように。
【0170】
一部の実施例は集積回路において、エラー検出および修復(エラー修正とも呼ぶ)機能を提供し、これは図1に示すように、集積回路によって提供されるか、または既存のIC上にソフトウェア18を保存するような、既存の集積回路を修正することによって提供される。ソフトウェア18は、同じICのもう一つの通常独立したメモリ空間に保存ができ、そのICはシステムが保護しようとするメモリ空間へのアクセス許可を有し、通常は、認証を実行するように作動可能であり、例えば、少なくとも文字認証と強力認証の一つを作動し、本明細書で述べたようなエラー修正および検証の少なくとも1つを完了させるためである。
【0171】
一部の実施例は、集積回路にエラー検出および修復機能を提供する。その機能は検出(例えば、既存の認証に基づく)を含み、メモリコンテンツが変更されたイベントを識別し、これらのイベントから修復することにより、IC(及びこのICが埋め込まれたデバイス、例えばコンピュータ)が通常通りに作動して、デバイスの端末使用者の負担を最小限に抑える。これは¥非常に有利義なことで、これはいくつかのイベント(例えば、今日端末使用者が処理しているコンピュータを引き起こす)の「故障」、且つ端末使用者はコンピュータを実験室に持ち込んで修理しなければならないだとすると、本明細書に記述したいくつかの実施例によればこのようなことする必要がなくなる。その理由は、メモリ故障が発生した要素は自分自身で修正ができ、システムの安全性をキープ。
【0172】
エラー補正機能は、ハードウェアとファームウェア間で任意の適切な組み合わせで実行することができる。通常では、メモリは認証および文字認証の構造を満たすができる。通常では、リアルタイムの文字認証はハードウェアで実施される(メモリを読み出すとき)。強力認証は通常ファームウェアで実施され、ハードウェアを適切な暗号化することでプログラムを加速する。ファームウェアまたはハードウェアにおいて、ビットフリップ(bit flipping)および整合性検査(consistency check)を実施することができる。例えば、これはNVM消去や書き換えにおいてたまに発生することで、複雑な作動を考慮して、エラーを修正する為のメモリコンテンツの更新はファームウェアによって行われる。
【0173】
図1のシステムは、一部の実施例にある集積回路を表示し、より高いランクであるシステム16に組み込むことができる。図1のより高いランクのシステム16は、本明細書で説明する機能(例えば、認証、強力認証)のクエストの可能となるソースである。代替または付随的に、より高いランクのシステムは、アクセスパスとして図1中のメモリレイ2を介して、その元のコンテンツ(例えば、メモリレイ2に保存されたコード)を合理的に取得したり、またはその後に更新されたり、すなわちメモリレイのコンテンツが異なるコンテンツに置き換えられたりすることができる。
【0174】
アクセス制御機能(例えば、第1図に示すように)では、一般的にとハードウェアとファームウェアの組み合わせである。通常では、どのような保存エリアがアクセスできるか否かを定め、ファームウェアが一部の特権階級でメモリのあるハードウェアにアクセスすることができまる。したがって、ファームウェアがこうするとの許可を有していることで「説得」することにより、メモリのコンテンツを更新。この場合、ファームウェアがロジックゲートを開けとメモリを更新する。
【0175】
可能となるエラー修正をテストする機能は、例えば、第7図の方法によれば、単独の状態マシン(state machine)を含んでもよく、その状態マシンは、ハードウェアまたはファームウェアで実施することができる(第1図のハードウェア6およびファームウェア7の少なくとも1つを参照)。同様に、エラー修正機能のロジックは、ハードウェアとファームウェアの任意の適切な組み合わせにも埋め込むことができる。
【0176】
図1図9図10および図11の実施例のすべてまたは任意のサブセットは図1のシステムまたは説明されたブロックの任意のサブセットを提供してもよい。前の図2で説明したすべてまたは任意のサブフローに関連して、および/またはそれらに関連する。
【0177】
図2は、認証機能とエラー修正を組み合わせたスキームまたは方法を説明し、メモリの負担においては経済的であること。既に知られているのECCは保各データを保存するECCビットのメモリ容量を必要とするが、本明細書の実施例は現有の設計に存在しているあるいは新規設計に提供される即時認証を利用して、コードの使用あるい保存についてエラー検出または修正する。そして、セキュリティレベルを損なうことなく、エラー修正に使用する。
【0178】
通常ではセキュリティレベルは影響されない、その原因はECCを使用する時、攻撃者が同時にデータとECCを改ざんし、データとECCが互いにマッチングするように改ざんされる可能性があるため、エラーを即時に認識できず、文字認証あるいは強力認証を実行する場合のみ、システムがエラーを認識することができる。
【0179】
用語「負担」は、本明細書では認証か、エラー修正または任意の適切な位置にあるその他のメモリ管理プログラムなどの含むことによって引き起こされるメモリ需要だと理解して頂きたい。例えば、文字認証(または文字レベル認証ともいう)または文字ECCでは、より広い文字サイズを使用してメモリを生成することができ、したがって、認証/ECCは文字と隣接して保存されることができ、認証/ECCのビットもアクセスされるようになる。また、ハードウェアシステムでは、実際の負荷(その認証/ECCビットと相応)を読み取るとともに、効果的により大きな文字の長さを許容する為、一つ付属のメモリ要素を読み取る。その後、メモリ全体の文字の長さを実際の負荷に専用することが可能となり、その実際の負荷の認証/ECCビットを他の位置に保存することができる。
【0180】
図が示すように、図2の方法は、以下の作動のすべてまたは適切な並べ替えた任意のサブセットを含むことができる。
【0181】
作動ステップ10:集積回路を提供、そのメモリコンテンツ、例としてメモリに保存されたコードは、「強力認証」および「文字認証」によって保護される。
【0182】
「強力認証」を起動、(例えば、大きなコードセグメントにてHMACまたはCMACを実行)。たとえば、コールドフラッシュメモリコンテンツの置換に対抗するために使用。
【0183】
即時「文字認証」(例えば、128ビット負荷+16ビット認証)。例えば、ホットフラッシュメモリコンテンツの置換に対抗するため使用される。例えば、フラッシュメモリからコードに直接に実行するなど。
【0184】
即時暗号化、復号及び認証は、以下の特許文献に記述したされており、その開示内容は引用によってここに合併される。https:/patens.google.com/patent/US 9525546 B 2/en。
【0185】
作動ステップ20:リアルタイムの文字認証が失敗するたびに、(例えば、稼働中に)集積回路はストップし(例えば、次の起動まで停止)、または自動に再起動する。例えば、保存スペースには保護すべきコードがあると仮定。そうすると、メモリから読み取りを行うと、一般的には、ICのプロセッサがメモリスペースからコードを採取していることを意味し、これは逆に、通常では文字認証が失敗したと認識されると、メインプロセッサは変更されたコードのみを取り込むことを意味する。この時、プロセッサは変更されたコードの実行を防止するために一時停止し、通常では修復を開始する必要がある。修復する作動は次を含む:例えば、ROM内のコードのように、100%の安全だと認識している別のコードに切り替えたり、またはROMからリセットしたりすることで、ソフトウェアとハードウェアのどちらによっても、本明細書で説明したようなエラー修正および検証の少なくとも1つをトリガすることができる。
【0186】
作動ステップ30:次回の起動時(または上記の例による)、すべての「文字認証」は、「強力認証」計算の一部として検査されており、その「強力認証」計算はメモリコンテンツを保護するために使用されている。起動認証中に「文字認証」が失敗した場合(稼働時とは逆)、エラー検出となり、集積回路はそのメモリ内のコンテンツにて発見されたエラーを修正しようとする、例えば図3の作動140から作動170のすべてまたは任意のサブセット。
【0187】
作動ステップ80:メモリがコード実行メモリ(code execution memory)である場合、エラー修正(例えば、図3の作動140から作動170のすべてまたは任意のサブセットを実行する)を行うと、修正されたコードが解析して導き出され、適切な電源中断安全コード修復更新フローが実行される。コードの修正が成功すれば、プロセッサは稼働を復帰する、正常作動とも呼ばれる。
【0188】
図が示すように、図3の方法は、以下の作動のすべてまたは適切な順序付けの任意のサブセットを含むことができる。
【0189】
作動ステップ140:破損した文字を検査し(エラーも文字を発見、例えば、検証が開始されている間に、「字元検証」に失敗したため)、すべてのビットを置換し(例えば、説明した実施例では128+16ビットを置換する)、マッチングを探索する。強調するのは、データと認証の間に任意の適切な比率がある、128ビットと16ビットのパラメータはただ説明する為である。
【0190】
専用HWまたはSWは置換を迅速にスキャンすることができる。例えば、メモリ上またはメソスコープの一部として、メモリから繰り返して読み書きすることなくなる。フラッシュメモリのように。
【0191】
一部の実施形態によれば、専用のバッファは、破損した文字のデータ構造を保存することができ、それはビットに従って破損した文字対して作動することができる。次に、専用のファームウェアコードまたはハードウェアステートマシンを使用して、データ構造の配列をスキャンし、一度に一つのビットをフリップさせる(例えば、第10図の「1ビットをフリップ」のステップを参照)またはそれ以上をフリップ。毎回置換した後、その時に作動またはビットフリップしたデータの構造について文字認証計算を行う。通常では、置換のスキャンはファームウェアが実行、あるいは代替的に、専用のハードウェアによって実行される。
【0192】
作動ステップ150:マッチングを確認したら、修正または訂正された(例えば、エラーしたコンテンツのサジェスチョン修正)エラーデータまたはコンテンツが「強力認証」計算の一部としてダイジェスト。認証アルゴリズムと修正されるビット数によっては、一つ以上のマッチングが見つかるかもしれない。この場合には、すべてのビット組み合わせの置換(ビットタイプとも称する)を試み、正確の「強力認証」を生成する置換を採用することができる。正確とは、通常で修正されたコードに対して「強力認証」を行った結果は、メモリの元コンテンツに対して強力認証を行った事前計算の結果と同じであることを意味する。
【0193】
例えば、単一のビットエラーに対して、その方法は、第1のビットをフリップさせること、例えば、ビット0。そして、マッチングが見つかるまで後続のビットの認証を検査する、例えば、ビット1、ビット2など。2つのビットエラーについては、一回でペアのビット(a pair of bits)をフリップさせことができる、通常ではペアである2つのビットのそれぞれが可能となる数値を考慮する。
【0194】
作動ステップ160:オプションとして、複数のエラーの修正を試みることができ、例えば、再検索によって、今回のエラーに対する少なくとも一部のダブルビットの置換することが可能。1つ以上のエラー(1つ以上のビットを含む)は修正可能であるが、一部の実施例によれば、複数個のビットに関するエラーは1ビットエラーの計算より複雑で、約X ^2/2(例えば、144^2/2)回の検査が必要であるので、修正できないことを理解して頂きたい。
【0195】
作動ステップ170:図1が示すように、エラーを修正できない場合は、通常では端末ユーザにアラームを提供する。例えば、高レベルのソフトウェアを介して。
【0196】
図4は、メモリがページに基づく非揮発性メモリ(page-based nonvolatile memory)である場合に、エラー修正及び検証を行う方法である。通常では、このようなメモリでは、消去の作動はページ全体(またはメモリ全体)を消去することとなる。したがって、修正する必要があるエラーが発見された時は、一般的にページ調整を実行して修正が行えるようにする。例えば、修正する際に、修正データがあるページを保留ページにコピーする。より一般的には、本発明はメモリの使用制限の下による修正だと理解できる。
【0197】
任意の適切な時間で図4の方法を実行できる、例えば、エラーが検出されたときに直ちに(以下の作動ステップ220)、または次回のICが起動するときに(以下の作動ステップ230)。
【0198】
図4が示すように、図4の方法は以下の作動の全部または適切な順序付けした任意のサブセットを含むことができる。
【0199】
作動ステップ210:修正待ちのフラッシュメモリページを識別する。1ページ以上の修正が必要である場合、修正が必要な文字(位置+データ)は非揮発性メモリに保留される(または文字の指示)。次に、作動220を実行して直ちに修正する、または作動230を実行して、次回の起動後に修正。
【0200】
作動ステップ220:修正待ちの各ページを修正、例えば、各ページに対して図5が示す作動ステップ310から作動ステップ350の全てを実行する。
【0201】
作動ステップ230:起動中に、フラッシュメモリコード認証を実行する前に、ブートコード(boot code)は利用可能なページ(例えば、利用可と標記された)があるか否かを検査。この場合、続けて起動する前にブートコードは作動テップ2310から作動ステップ2350までの全部またはその任意のサブセットを完了することができる。そうでなければ、一部のより高いランクのファームウェアは「ゴミ収集(garbage collection)」を実行することができ、例えば、メモリコンテンツを圧縮して最小の可能なメモリ空間を占有することで、少なくとも1ページを解放して一時的なエラー修正に用いる。
【0202】
図5が示すように、図5の方法は、以下の作動の全部または適切な順序付けした任意のサブセットを含むことができる。
【0203】
作動ステップ310:保留の予め定義されたフラッシュメモリページにフラッシュメモリページの位置および修正されたデータ(コード)を書き込み、且つ正しく書き込まれているかを検証する。
【0204】
作動ステップ320:保留ページに1ビットを設置し、それが有効情報を有するページを持つその他のファームウェアのような、もしくは使用中且つ消去すべきでないファームウェアを指すように設置。本発明のシステムは、例えば中断された場合(例えば、使用者が電源を切ってから作動を再開しようとする場合)でもこのビットは有効的である。
【0205】
作動ステップ330:元のフラッシュメモリページを消去する。例えば、第4図の作動ステップ210において、エラーが発見されたページ。
【0206】
作動ステップ340:保留されたフラッシュメモリページの修正されたデータから元のフラッシュメモリページを更新し、正しく書き込まれているかを検証する。
【0207】
作動ステップ350:保留されたページを削除して、将来に他のページでのエラーを修正することを可能にする。
【0208】
前にある図2のエラー検出および修正方法をトリガする変化型は、以下を含むことができる。
【0209】
(I)即時(On-the-fly):メモリ検査で直ちに文字認証が失敗とリスポンス:対象のメモリから読み出した時に文字認証がマッチングしていないことが発見された場合、プロセッサの次に実行するシーケンスの前に上記のプログラムを実行する。
【0210】
例を挙げて説明すると、メモリから来ているコードが実行されている際に、且つ既にコードを抽出する段階で文字認証に失敗したと識別されると、通常ではコードの実行は停止され、例えばメモリスペース全体またはアレイ全体をスキャンして、失敗またはエラーを検索する。その後、コードの実行が一時停止され、且つプロセッサの実行シーケンスで次に実行する作動を実行するか、コードの最初から実行を再開することができる。データがコードではない場合、データの読み込み中にエラー表示が発生する可能性がある。この場合、プロセッサは再度に停止し、メモリのスキャン/修正/検証をトリガする可能性がある。
【0211】
(II)起動(Power-up):各集積回路が低活動状態から起動するイベントにトリガされ、例えば、起動またはスリープ状態から活動状態に変更された後に、強力認証を再計算し、予め計算した強力認証データと比較して、且つ再計算された及び予め計算された強力認証との間に不一致が生じた場合に、上記のエラー修正機構を有効にする。
【0212】
(III)定期的なデータの整理(Periodic aka scrubbing):時には、強力認証を再計算し、再計算した結果を予め計算した強力認証と比較し、再計算した強力認証が予め計算された強力認証と一致しない場合には、本明細書で説明したメモリのエラー修正プログラムをトリガすることができる。例えば、一部のプログラミング可のタイマを使用してトリガすることができ、プログラミング可のタイマは上記の作動を実行するための時間指示を示す。このメカニズムは通常では一部の損失をもたらす。集積回路の正常な作動は干渉と中断されるが、より良い保護を得られる。
【0213】
(IV)初期化(Initiated):外部のイベントによってトリガされ、例えば、デバイス(集積回路とも呼ばれる)がハッカー攻撃または他の一部の機能にエラーを引き起こす行為が識別された場合(例えば、ICに存在するハードウェアまたはファームウェアのハッカー攻撃を検出機能を使用)、その時は再認証を計算し、予め計算された強力認証と比較して、再計算された強力認証データおよび予め計算されたものと比較する。計算された強力認証データの間に不一致があれば、本明細書で説明したメモリエラーの修正プログラムを起動することができる。
【0214】
(V)アクセストリガ:メモリにアクセスするたびに、ターゲットメモリ全体をチェックする。この実施例は適切であり、メモリが頻繁にアクセスされない場合、、リアルタイムのデータ完備性が極めて重要である為、性能に対する負担は比較的重要ではない。
【0215】
任意の所定のデバイスにおいて、上記の変化型のすべてまたは任意のサブセットを提供することができることだと理解。
【0216】
図6が示すように、図1にある集積回路での作動ステップは、図1のプロセッサ1によって制御または実行されてもよく、フローは以下の作動の全てまたは適切に並べられた任意のサブセット、例えば、以下の順序を含むことができる。
【0217】
作動ステップ1001:メモリ区域にコンテンツを書き込み、例えばコード、複数の文字を含む。各文字については、書き込み時に「文字認証データ」を計算し、例えば、「文字認証データ」をこの文字のそばに保存。
【0218】
作動ステップ1002:メモリのコンテンツに「強力認証」を実行し、その結果をメモリのどこかに保存しておく(例えば、エンティティのオフラインによってメモリ画像を予め計算する、そのエンティティは強力認証を実行する能力がある)、且つセキュアメモリレイ2が存在するICに提供される。
【0219】
通常ではICの外部にメモリ画像(memory image)を備え、ICに「注入」し、コンテンツに付加された認証コードとともにプログラムすることだと理解。
【0220】
作動ステップ1003:通常通りにメモリ装置を使用して、メモリ読取作動を実行することを含む。各メモリの読取作動は、以下のように構成されている。
【0221】
まず、現在のコンテンツを文字認証の計算し、再計算した「文字認証」ともいう。
【0222】
次に、作動ステップ1001にメモリされた予め計算された文字認証データをメモリから読み出し、計算された認証データと予め計算された文字認証データを比較する。
【0223】
再計算した「文字認証データ」などがメモリから読み取った予め計算した「字元認証データ」と同じである場合、引き続き作動する、その理由はすべてのデータが正しいである為。もし同じではない場合は、エラーが認識されたと仮定して、エラー修正のシーケンスに入る。
【0224】
適切なエラー訂正シーケンスフローは、図7に示されており、可能となるエラー修正のテストを含み、且つ以下の作動の全部、または適切に並べ替えられた任意のサブセットを含む。例えば、以下の順序でエラー修正機能によって制御または実行することができ、そのエラー修正機能はソフトウェアによって実行される、且つ図1に例があるプロセッサ1に常駐することが可能。
【0225】
作動ステップ1006:修正されたコンテンツに対してエラー修正を実行し、修正待ちのコンテンツは文字とその関連する文字認証を含み、もしくはその両者の組み合わせ(例えば、順序に従って組み合わせ)していき、組み合わされたビット列を提供する。エラー修正には、すべてのビットをスキャンし、フリップと組み合わせした後のビット列にある各ビット(ターゲットが単一ビットエラー修正であれば)と各ベアビット(ターゲットがベアビットエラー修正であれば)の少なくとも一種類をスキャンし、文字認証データを再確認する。エラーは文字ではなく、文字認証データに存在している可能性があるため、メモリに保存されているメモリ文字認証データと比較してはいけない。代わりに、1ビットをフリップさせて、文字認証データを再計算し、再計算された文字認証と利用可能な文字認証データを比較する。例えば、メモリからX個のビットの読取データとY個のビットの認証データが形成した構造を読み取り、この組み合わせ構造でビットをフリップさせることができる。フリップされたビットがXビットのデータの中にあれば、修正後のデータが持つXビットを再計算して認証し、且つ再計算された認証データをメモリから読み取ったYビットの認証データと比較する。
【0226】
フリップされたビットがY位元の認証データのビットであれば、メモリから読み取られたXビットが持つデータ認証を再計算し、且つ修正されたY位元の認証データと比較する。
【0227】
マッチングが見つかった場合(比較した文字認証データが等しい)、文字および文字認証データが「一致」であることを示し、作動ステップ1009にシフトする。マッチングが見つからない場合は、次のビット(または次のペアビット)をフリップさせ、上記の再計算作動および比較作動を繰り返す。ここおよび他の場所では、用語「次の」は実際に隣接している、または任意の適切な打診法によって定義されたビット間の順序によってシーケンスとして認識されている前後のシーケンスとして理解。
【0228】
作動ステップ1008:このステップに達すると、通常ではビットフリップ(または、2つビットエラーで起きるベアビットフリップ)が実行可能な修正が無いことを意味し、エラー修正は、文字レベルで失敗と示す。したがって、このメモリのコンテンツは修正不可の内容と標記。第1図が示すようにより高いレベルのソフトウェア、一時停止システム、プロセッサ1およびその組合せによって、より高いレベルの修正を警告提示することができ、例えば、集積回路が搭載された装置を実験室に送って、人為的技術サポートを行う。
【0229】
作動ステップ1009:「強力認証」を行い、ダイジェストの計算、メモリ区域全体のHMACのようなものを含み、強力認証の結果を生成する。通常では強力認証はダイジェスト/MAC/サインを生成する。
【0230】
作動ステップ10010:強力認証の結果を作動ステップ1002でメモリに保存されている予め計算された強力認証結果と比較する。結果が同じであれば、強力認証マッチングだと確認される。そうでなければ、強力認証不一致がと確認される。
【0231】
作動ステップ10011:強力認証マッチングが確認されると、修正後のメモリコンテンツが合格したことを示し、このメモリをそのまま使用して、例えば作動ステップ1003を実行する。
【0232】
作動ステップ10012:そうでなければ、すなわち、強力認証不一致がある場合には、例えば、図8が示している不一致プログラムが実行される。図8が示すように、作動ステップ10012における不一致プログラムの適切な流れで使用され、且つその流れは以下の作動のすべて、または適切に並べ替えられた任意のサブセットを含む。例えば、以下の順序で、エラー修正機能によって制御または実行されることができる。
【0233】
作動ステップ10012.5:作動ステップ1006を再度することによって図1中の全てのメモリレイ2をスキャンするが、既に認識されたすべてのエラーを修正する。
【0234】
作動ステップ10013:作動ステップ1009から作動ステップ10011まで作動を再度することで、強力認証をやり直す。
【0235】
作動ステップ10014:現に強力認証が失敗した場合(つまり、不一致)、修正ができないと仮定する。したがって、より高いレベルの修復が必要となる場合がある。そして、メモリのコンテンツを修正不可能なメモリコンテンツとして標記。例えば第1図が示すような、より高いレベルのソフトウェア、一時停止システム、プロセッサ1およびその組合せがより高いレベルの修復を提示することができる。例えば、集積回路が搭載された装置を実験室に送って、人為的技術サポートを行う。
【0236】
可能となるエラー修正をテストする機能。例えば、図7の方法によれば、ハードウェアまたはファームウェアで実施できる個別の状態マシンを使うことを含む。その機能は、認証機能から「認証サービス」を取得することができ、通常では修正を試んだ後に、文字認証の検証(例えば、上記の作動ステップ1006)も含む。強力認証を使って、メモリ全体を検証する(例えば、上記の作動ステップ1009から作動ステップ10012)、または両方の組合せ。
【0237】
上記の全部または大部分のハードウェアは一般的に最適な性能を発揮。例えば、全体のプロセスがハードウェアにおいて実行されると、メモリを使用する際に、ハードウェアによって即時に検証が行われ、エラーがなければ、性能の損失は発生しない。
【0238】
ほとんどの実行がファームウェアにて行われた場合は、リアルタイムの文字認証を省略してもよく、周期的か、たまに行うかあるいは両者を組み合わせてメモリをスキャンしてエラーをチェックする、その後にエラーを発見したら、修正および検証を実行することができる(例えば、上記の作動ステップ1006から作動ステップ10012まで)。
【0239】
全部の実行がファームウェアにて行われた場合、既存のIC(従来ともいう)を採用することができる。既存のICは、一般的に既存の(従来ともいう)メモリ構造を有しており、本明細書で説明したエラー修正プログラムにおいて計算された文字認証を保存するために、ソフトウェアにおいてロジック上において再配列または管理することができる。この場合、エラー検出および修正は、通常では上述したあるトリガの下で即時に実行されず、オフラインの形で実行される。
【0240】
任意の適切な実施例を採用して、可能となるエラー修正をテストするインターフェースが認証機能を有し、または「認証サービス」から取得した認証機能を確保することができる。既存(または従来)のICでは、従来の認証機能をメモリコンテンツとある標準コンテンツ(例えば、直近の認証済メモリの更新後すぐに計算されたダイジェスト)比較することができる。実行方法は、通常では認証機能が提案されたテスト待ちのエラーを標準コンテンツと比較することを確保することができる。上記の実施例は以下の例を通して確保できる。
【0241】
(1)FWは、メモリから文字データと文字認証データを読み出すことができる。
【0242】
(2)FWは、自分自身が計算したデータ、文字認証データまたは一部専用ハードウェアを使ってをデータの文字認証を計算することができる。
【0243】
(3)FWは、計算結果とメモリから読み出された認証データと比較することができる。且つデータの構造が一致しているか、またはエラーがあるかを確認することができる。
【0244】
(4)FWがエラーを識別すると、FWは、本明細書で説明したビットフリップのプログラムを実行することができる。例えば、上記(2)のような計算でデータを認証することができる。
【0245】
(5)メモリを通してエラー修正が完成させると、FWはメモリ全体コンテンツのダイジェストを単独でまたはいくつかのハードウェアを使って計算することができる。これらのハードウェアはシステムの設計者が選択した任意のMACパフォーマンスアルゴリズムの実行を加速または簡略化することができる。
【0246】
本明細書の一部の実施例の利点は、エラー修正が上記の追加認証(通常は、強力認証および文字認証)ような認証負担を生じないことである。
【0247】
本明細書の一部の実施例の他の利点は、本明細書で説明したように、エラーの推定修正(様々な可能となるエラー修正をテストする)は、ビット数に対してハードル設定しないことである。逆に、既存のエラー修正方式はある種のエラー修正コードを実行している。例えば、所定されたXビットサイズのデータに対して、一部予想していたエラーを修正するとして、バイナリの組み合わせの数と選択した方法は、エラー修正コードに必要なビット数を表している。一旦実行すれば、予定していた数量のビットエラーだけ修正でき、これ以上修正できない。エラー修正の複雑さは通常、修正を試みるビット数によって増加する。しかし、所与の使用状況が合理的であれば、修正された任意の数のエラーを非常に強い認証を使用して検証することができ、任意の数のビットエラーを修正することができる。
【0248】
本明細書の一部の実施例の他の利点は、認証を利用して検証し、高い信頼レベルを有する本当に正しい修正を生成することである。例えば、強力認証を使用して提案の修正を検証すると、これは通常、「改正後のデータ」(すなわち提案の修正)に対する強力認証の結果が、予めに期待していた強力認証と一致すれば(例えば、同じ)、暗号化レベルを示す信頼度は、修正後のデータに対して確実に正しいと意味している。
【0249】
ECC(エラー修正コード)を実行する既存の技術システムと比較して、本明細書のいくつかの実施例の他の利点は、悪意のあるコンテンツ改ざんを防止することである。しかし、悪意のある攻撃はデータとエラー修正コードが互いに一致するように置換させる為、エラーが修正したように見えるが、実際にはコンテンツやコードが不良状態または悪質なままである。逆に、本明細書の方法は暗号学上の強度であるため、本明細書で説明したエラー修正による認証の利点を使用することによって、ハッカーは上述のようにデータ及び認証コードを悪意的に置換することを阻止できる。
【0250】
リアルタイム認証を使用することは非常に有利な場合があると理解可能。エラーが含まれていることを発見しない限り、性能が不変である(認証が並行している)ため、および/または読み取られたデータを直ちに使用してもラグが生じない。
【0251】
あらゆるメモリ、例えば、コード実行メモリ、または継続的もしくは非経常的に変更される大型データブロック、および/あるいは特にメモリコンテンツへのアクセスを制御する際に、例えば、安全または制御(ファームウェア)のみを介して更新で変更されたメモリコンテンツは、図2のフローで恩恵を受けることができ、特にメモリコンテンツが保護されない場合や外部に晒されてる状況。図2のフローから恩恵を得ることができるメモリは、EEPROM、ハードディスク、NANDフラッシュメモリ、NORフラッシュメモリ、SDRAM、またはSRAMこれらに限らない。
【0252】
セキュリティ(ファームウェア)更新以外に、メモリへのアクセス制御には様々な解決策があることを理解。特に、様々な既存の技術がメモリコンテンツへのアクセスを厳しく制御することができることが知られている。例えば、メモリのコンテンツは実行のみが可能、実行のみする(execute-only)のメモリ。あるいは、読み取りのみ許されているメモリ、且つあるアクセス権または認証したりした後、専用ゲートを介して更新または書き込みができる。もしくは、アクセス制御設定を変更してから書くことができるメモリは、アクセス特権がある場合のみ設定が変更される。
【0253】
保存されたコンテンツは頻繁に変更しない:例えば、いくつかの保存されたコンテンツの変更頻度は、本明細書で説明されるシステムおよび方法によって生成される負担が費用対効果を有するように十分に低い。例えば、ソフトウェアの更新が定期的または不定期的に行われていることが知られている為、コードは数ヶ月ごとに一回だけ変更されるか、あるいは、一部のデータは数日または数週間ごとに一回だけ変更されるか、あるいはそれらの間隔内で平均的に変更される可能性がある。逆に、いくつかのデータはソフトウェアによってコントロールされている。そのため、プログラムを実行または稼働するたびに変更される可能性がある。
【0254】
多くの変化型が可能。例えば、ある実施例によれば、エラーが発生したら、それを修正することも、修正と称して、すぐにメモリを修復する。その後、どんなプログラムを実行しても、稼働を継続できる。
【0255】
代替的にまたは付随的に、実際のメモリコンテンツの修復を後に延ばすことによって、オーバーレイ補修(overlay patch)を提供して、装置の稼働を継続することができる。これはNVMの処理時間が長引く可能性があり、装置がオンラインでこの作動を完了しようとするとラグを引き起こすので、装置がオフラインでこの作動を完了し、後で実行すれば、装置を継続稼働させることができる。専用の置換修正におけるキャッシュ(非揮発性または揮発性)コンテンツは任意のコンピュータのメモリに常駐することができ、通常は同じICにおいて、ターゲットとなるメモリの任意のプロセッサを使用してそのメモリにアクセスことができ、必要とするときにそのメモリを抜き出して修復することができる。
【0256】
可能となる変化型の他の展示例は、単独でまたは任意の適切な組み合わせで任意の適切な認証を使用して、可能なエラー修正をテストすることができ、強力認証および文字認証レベルに限らず含む。
【0257】
フローで、強力認証を通じてメモリに存在するエラーを識別することのみを要求、一旦エラーがあると認識されると、すべて保存されているビットはフリップされ、その後に強力認証はビットフリップ(またはペアビット)を検証するために使用することができる。しかしながら、強力認証は複雑で時間がかかって、リソースを使う作動であるが、小型のメモリ区域にとって完全に実行可能な実施であり、そのために、2つのレベルの認証を提供する必要がないかもしれない。
【0258】
多くの使用状況において、2つのレベルを使用することはプログラムを保証するための有効措置である。本明細書では、2つのレベルを文字認証と強力認証と呼び、さらに一般的にあるものと程度の違いがある。つまり、前者は短時間、および/または少ないリソースを消費し、後者は長時間、および/またはより多くのリソースを消費する。
【0259】
大型メモリ区域については、文字認証(これは一般的である)があり、通常では、より効率的なプログラム。それは、文字ベースで、文字レベルとも呼ぶレベルでエラーを検出することが可能。且つ文字レベルでも提案に対する基本的な検証が発生する可能性があり、推測性修正(speculative corrections)ともいう。したがって、文字レベル認証を省略する実施例に対しては、頻繁に認証や修正検証に使う強力認証を頻繁に実行する必要性がない。
【0260】
以下は本発明の事例についての説明である。
【0261】
例(1):推測した提案ついての訂正は、提案の訂正を加え、強力認証により修正を検証する。失敗したら、もう一度試したり、他の修正を推測したりする等々。
【0262】
例(2):推測した提案ついての訂正、文字認証を検査し、もし失敗したら、他に提案された修正を推測し、再び文字認証を使って検査し、成功した文字認証を得るまで継続する。そして、強力認証を修正の最終検証として使用する。文字認証がなくても使用可能。
【0263】
もう一つ可能なとなる変化型は、あるゆる適切な方法を用いて保存したコンテンツを検証するための提案修正。例えば、メモリコンテンツがコードであれば、電源中断セキュリティコードの修復プログラムを使ってコードを修正する、験証された提案の修正をコードに適用する。例えば、身元認証に失敗したために、エラーコードであることが判明された。
【0264】
性能、位置、稼働時間および信頼度の折り合いに基づいて変化型を設計することができ、例えば、但し以下に限定されない:
【0265】
変化型A:比較大きな「リアルタイムコード文字」は、以下のような結果をもたらす。
【0266】
(1)より小さなフラッシュメモリ区域およびスループットオーバヘッド(所与の「冗長」幅)を取得する。
【0267】
(2)より長いビット時間(すべてのビットをスキャンするため)。
【0268】
(3)大きな取得ラグ(実行前に検査を待つなら、US 2014082721の方法を使用することができ、これの出願中の特許ファイル(https://patents.google.com/patent/US 2014082721 A 1/enoq=13%2 f 965%2 c 256)で公開された内容を引用し、本明細書の計算装置に取り入れた。以下を含む:入力ブリッジ、これはデータのシーケンスを受信するために結合され、プログラムを実行するときに使用する;出力ブリッジ、一つのプロセッサーコアであり、入力ブリッジからデータのシーケンスを受信するために結合され、且つこのプログラムを実行する。データシーケンスの所与のデータ項目に応答するための信号を出力する;及び一つの認証ロジック、このプロセッサーコアがプログラムを実行するときに、データシーケンスの受信と認証する為に使われ、与えられたデータが認証されるまで、出力ブリッジによって信号を出力することを禁止する。
【0269】
変化型B:比較的に少ない選択である、大きな「リアルタイム冗長文字」は以下の結果をもたらす。
【0270】
(1)より安全で、より確実で、より迅速な修正。
【0271】
(2)大きなフラッシュメモリ区域およびスループットオーバーヘッド取得。
【0272】
変化型C:比較的少ない選択、大きな「強力認証」サイズ(ビット単位)は以下のような結果をもたらす。
【0273】
(1)より安全で、認証されたオリジナルコンテンツやメモリ体の確認内容に対する信頼度が高い。
【0274】
(2)比較的大きなフラッシュメモリ区域のオーバーヘッド(通常は省略可)。
【0275】
(3)SHA 256-512 HMACは良き選択のようである。
【0276】
変化型D:比較多い選択と比べて、小さいコードセグメント(コードをそれぞれ「強絵よく認証」を有するセグメントに分ける場合)は、以下のような結果が発生する。
【0277】
(1)比較的大きな区域オーバーヘッド。
【0278】
(2)より速い修正時間。
【0279】
(3)HASHが累積している場合は、稼働時間にオープン/周期することができ、つまりコード全体に一つのHASHを使用し、中間結果を保留して修正プログラムを加速させることができる。
【0280】
1つの提案は、トレードオフパラメータを能動的に決定することである。例えば、異なる(大きなまたは小さい)「リアルタイム冗長文字」および/または異なる(大きなまたは小さい)「強力認証」サイズおよび/または異なる(大きなまたは小さい)セグメントを選択すること(コードを「強力認証」を有する各セグメントごとにに分ける場合)。フラッシュメモリごとに情報および/または各ウェアレベリング(wear level))を統計する。例えば、ターゲットメモリが劣化したときに、上記のトレードオフパラメータをターゲットメモリよりも新しい時である、より速く、かつ/またはより強力なエラー修正に変更し、例えば、より旧いおよび/またはより劣化したフラッシュメモリは新しいときおよび/または劣化が少ないフラッシュメモリと比較すると作動が遅い。
【0281】
一部の実施例によれば、修正を統計できるリアルタイムの「文字認証」を提供。全体のターゲットメモリのすべてのビットフリップのオプション(可能な修正)に対して強制実施、基本型スキャンともいう。逆に、所定した文字の中でエラーを検出したら、「近道」をとる(基本型実施形態に対して)。
【0282】
スキャンまたは検索を通して、スキャンまたは検索することによって、所定のビットをフリップすることで所定のピットを修正。負荷文字が認証された文字と一致するように修正されると、強力認証を起用してメモリコンテンツの完備性に対する最高レベルの検証とする。
【0283】
したがって、本発明の実施例は、以下の実施例をさらに含むことができる。
【0284】
実施例(A):組み合わせ認証およびエラー修正の方法、以下を含む:強力認証を起用して、ターゲットメモリのコンテンツの少なくとも一部の完備性を検証すること、全体のターゲットメモリの少なくとも一部の文字フリップをスキャンする項目を含む
【0285】
実施例(B):実施例(A)の方法によれば、ターゲットメモリの全体をスキャンする。
【0286】
実施例(C):修正を統計する実施例のリアルタイム「文字認証」を備え、実施例(A)の方法によれば、文字認証を採用して、所定の文字で認証エラーを検出した場合は、ターゲットのメモリ全体ではなく所定のフォントのみをスキャンして所定の文字を修正する。また、負荷ロード文字が認証文字と一致している場合は、強力認証を起用してメモリコンテンツの完備性への最高レベルの検証とする。
【0287】
修正を統計することにおいて、メモリコンテンツの修正が成功するとは保証されないことを理解。
【0288】
図1において、「他のプロセッサ機能」は、本明細書で説明した特定の機能以外の任意の主要な機能を有することと理解ができる。周辺デバイスを使用することができる、例えばタイマ、通信チャネル、変換器のすべてまたは任意のサブセットを含むが、これだけとは限らない。
【0289】
図10における「1ビットをフリップ」のステップは、例えば、一般的なロジック設計者およびソフトウェア設計者に知られている任意の適切な置換スキャンプログラムで使用できる。例えば、ハードウェア、ソフトウェアもしくはそれらの組み合わせ等に限定されずに実行することができる。
【0290】
図9及び図10の少なくとも一者の「計算認証」のステップには、オンラインの文字認証計算が含まれてもよい。文字認証は、異なる強度レベルを有することができ、通常では強度と性能の間でウェードを分配する必要があり、強度を極限まで発揮すれば、文字認証は修正の最終判断だと仮定できる。この場合、強力認証はオプション(optional)となる。したがって、文字認証を単独で使用もしくは強力認証を単独で使用することができ、または両方を同時に使用することも可能。この場合、文字認証を簡略化することができ(比較的に低い強度にて実行して、より良い性能を発揮する)、強力認証にて最終の裁定を下す。
【0291】
一般的に、メモリシステム及び具体例となるNVMシステムはエラー修正プロセスを使用する。例えば、エラー修正コードを使用する場合、システムはメモリのエラーを検出することができるが、エラー修正の優先順位は判断できない(例えば、試行錯誤テストは不要)。このようなフローには、以下の作動a~xを含むことができ、第13図に示すように、エラーが検出されたときにトリガすることができる。
【0292】
作動ステップ(a):このシステムは試行、または推定、または候補の修正値を生成する。
【0293】
作動ステップ(b):システムは、作動ステップ(a)をフリップすることでエラーの可能性があるビットを判断して、試行、または推定、または候補となる修正値を使用して、疑いがあるエラーのデータを代替する。
【0294】
作動ステップ(c):このシステムは認証または検証により修正が成功したと推定される特定の検査(例えば、第1~12図の実施例で説明した)を実行し、例えば、修正が成功したか否かを判断する。
【0295】
第1から12図のシステムおよび方法は、第13図のエラーテストプログラムを作動するシステムのサンプル例である。
【0296】
図13が示すように作動する、修正にはあるビットのフリップが含まれていると推定され、作動(c)にてフリップが成功しないと判断された場合、システムは作動(a)に戻り、他のビットをフリップさせ続ける。作動(c)のすべてのビットがフリップしても成功しない場合、システムは修正を放棄する(NVMシステムが実験室に送られて修理する)か、または再度2ビットのフリップの全プログラムを実行する。
【0297】
本発明のエラーテストのフローの周期は、時間および電力を消費するものであるかもしれない。用語「n周期」は、通常だとビットフリップして上記の作動(a)、(b)と(c)を行う。そして、他のビットが同じく作動(a)、(b)及び(c)を繰り返して行う。n番目の周期が失敗した場合は、n+1周期を実行する、そして類推する。所定の文字Wにて検出されたミスまたは疑わしいエラーに対しては、最大のエラーの各実行周期は文字wのビット数である。
【0298】
通常では、1周期は1ビット(ペアビットも)のフリップから始め、修正が成功したかどうかを判断するための試行検証にて終了する。
【0299】
第1~図12の実施例は、試行するエラー修正のサンプル例である。
【0300】
メモリのビットはそのビットが持つ電荷を保持し、「読み出し」を実行するとそのビットはあるリファレンス電圧を生成することに留意すべきである。リファレンス電圧は続いて、リファレンス電圧がロジック「0」または「1」(二進制ビットに対して)に訳されるかどうかをしきい値で判断する、或いはn級(n-level)メモリに対して、このリファレンス電圧が00、01、10、または11に訳されるべきかを判断する。例えば、二進制ビットは0 Vと2 Vの間のリファレンス電圧を示せる、リファレンス電圧が1 V以下であれば、メモリのリファレンス電圧はロジック0とみなされ、読み取ったリファレンス電圧が1 V以上であれば、メモリのリファレンス電圧はロジック1とみなされる。ここで言う1 Vはしきい値としてロジック0とロジック1を区別するができる。一つ健全なメモリでは、メモリとその制御機構は電荷がメモリユニット中にあるまたは放電すると確保し、読み取ったリファレンス電圧をできるだけ0 Vと2 Vの近辺に近づけるようにして、物理的な検査の絶対的な精度が欠けてることによるあいまいな結果を防止する為、読み取ったリファレンス電圧がしきい値1 Vに近づくのを避ける。
【0301】
特定のメモリでは、例えば、NVMに限定されないもの。データが読み取れるかどうかは所定の時点で、所定のビットから与えられた電圧を読み出すビットの状態を示す品質、強度、または信頼度に関係している。または与えられた時点で与えられた電圧を、やや上または下の臨界ビット準との間の距離から読み取ったもの。
【0302】
同一サンプル例の内容では、2進制ビット電圧の範囲は0 V及び2 Vの間であり、しきい値ビットは1 Vとする。ロジック0与えられたビットは実際に異なる電荷量を蓄積する可能性があると仮定する。それにより、様々な異なるリファレンス電圧、例えば0.1 V、0.2 V、0.377 V、または0.9999 V、またはこれらの間に存在する電圧値のいずれかを読み取ることができる。これらの状況で読み取ったビットはいずれも0と見なせる。しかし、特にNVMでは、アクセスしたデータが実際に読み取ったリファレンス電圧、または実際のリファレンス電準と電圧しきい値との距離を表すものである。このデータが0.1 Vを読み取ったと表している場合、この電圧値はしきい値1 Vから遠いので、このロジック0の読み取った品質や強度、または信頼度は高い。逆に、NVMから供給したデータが0.9999 Vの電圧を読み取ったとすると、このビットは依然としてロジック0と見なされているが、このロジック0は品質、強度、または信頼度が極めて低い。同様に、0.9 Vまたは0.8 Vの品質または強度も0.1 Vまでの電圧を読み取る品質または強度より遥かに低いが、0.9999 Vの電圧を読み取った品質または強度より高い。
【0303】
通常では、ビットの状態を予め定義したしきい値基準との品質あるいは強度を検査をサポートする機能を持つ既存のNVMの特性を最適化。しきい値基準とは、隣接するビットの状態の間にある臨界点(cut-off point)である。一般的には、各種のメモリは、例えばNVM限定されないもの、内蔵機構(例えばマージン読み出し機能)を備えて、ビットが0と1の間でどれだけ正確かまたはどれだけビットが強いのかを連続して出す指示である、あるいはちょうど0または1を出力していない場合で、ビット数値が持つが信頼度を提供する。このため、マージン読み出しの出力は、読み取り中のロジック0は実際だと0.2 Vまたは0.36 Vとして設定したことを表す。メモリが読み取りを行う際に、マージン読み出しを起動していない場合、この作動は0または1をのみを出力し、品質または強度の指示は生成しない。
【0304】
通常では、ビットに対する検査の順序を最適化するためには、本発明の方法は各ビットの読取電圧とその隣接する電圧しきい値(例えば、読み取り電圧よりも高いまたは低い)との距離に応じてビットを階層化する。一般に、階層化に使用する距離数値は読み出し電圧値とこの電圧値に最も近いしきい値(電圧値よりも高いか低いしきい値)との間の距離と定義されている。したがって、この距離の値は以下の数値の中で比較的に小さいものを採用。
【0305】
(i)電圧読み値と電圧読み値より高い電圧しきい値との間の電圧差の絶対値。および
【0306】
(ii)電圧読み値と電圧読み値より低い電圧しきい値との間の電圧差の絶対値。
【0307】
次に、この方法は電圧読み値が隣接する電圧しきい値に近いビットを電圧読み値が隣接する電圧しきい値から遠いビットに優先する。このようにする利点は、電圧読み値と隣接したしきい値との距離が大きいことは、このビットが健全(healthy)なビットであり、比較的にエラー、破損(eroded)または喪失(evaporated)しにくいと示している。逆に、電圧読みと隣接したしきい値の間の距離が小さいということは、このビットが相対的に不健全なビットで、エラー、破損(eroded)または喪失(evaporated)しやすい。従って、本発明の利点は、電圧読み値から電圧しきい値から遠い位置にある、あまり疑わしくない(less suspect)ビットよりも、非常に疑わしい(highly suspect)ビットを優先させること。あまり疑わしくないビットは健全なメモリ機能を意味している。
【0308】
ビットエラーの検出に従って、修正する周期は、1つのビット(または2つ、または3つ)を一時的にフリップさせ、結果を検証する試行錯誤(trial and error)プログラムを含む。
【0309】
しきい値基準は、判断またはエラー修正を成功に実行するために必要とする時間の最適化を果たすスキャンの順序に使用可能。
【0310】
例えば、ビットエラーが検出された場合、例として、Bビットを有する所定の文字Wに格納され、予め計算されたハッシュ ベース メッセージ認証コードまたは他の任意のタイプのメッセージ認証コード(特殊コード)に不一致が検出された場合、本発明の方法はどのビットが修正可能性があるか/不可能であるか(ビットフリップが成功して修正される場合)、Bビットを階層化または順序付けする、フリップを行うと最も成功して修正値を生成する可能性があるビットから開始して、フリップを行うと最も成功して修正値を生成不可能なビットを最後にして終了する。通常、修正される可能性が最も高いビットは、ビットの状態の品質/強度が低い場合に、エラーである可能性が最も高いビット。
【0311】
最も修正される可能性が低いビットは、ビットの状態の品質/強度が低い場合に、エラーである可能性が最も低いビット。次に、上記の試行フローは、通常だと上記(a)から(c)までの作動を含み、文字Wの各ビットはこれらの作動を行い、且つ一つのビットがフリップして作動(c)が成功結果を得たときに作動を停止する。したがって、ビットが上記の順序通りにスキャンされない(例えば、文字の中のビットが物理的順序でスキャンされる)と比較して、最も成功する可能性のあるビットから開始して、成功するビットが発見されると、実行周期が停止されるので、統計的には、試行フローの周期数(実行回数)を低減することができる。
【0312】
本明細書での第1~12の図の実施例では、このシステムは、以下の要素の全てまたは任意のサブセットを含むことができる。
【0313】
NVMまたは他のメモリシステムは、本明細書で説明された品質データまたは信頼度データを提供する。
【0314】
予め行の長さを定義するハッシュベースメッセージ認証コード(HMAC)署名、または他のあらゆる種類の署名欄(line signature)。
【0315】
強力な暗号化署名/認証の仕組みは、必要に応じて完備性を保つためのデータロックの全部を使用する。
【0316】
留意すべきのは、特定の実施例において、データブロック全体に対する強力検証(strong overall auth)は選択可能であり、行検証(line auth)のみを提供することができる。
【0317】
特定の実施例は、優先修正に従ってしきい値基準を提供するために使用される。
【0318】
b個のビットを有するエラー文字と、b個のビットをフリップして、ビットエラーを修正可の検証となるビットのフリップを識別して、b個かそれ以下の推定修正を生成するために、特定の実施例は、特定のビットの優先順位に従って、しきい値基準を提供する。
【0319】
どのビットがしきい値に近いかを確認することにより、ビットの検査手順を最適化できる。14 aと14 bの図を参照してください。一番可能な/最も不可能な修正されるビットを並べ替え/階層化する。
【0320】
この方法は通常、以下の作動の全てまたは任意のサブセットを含み、作動の適切な順序は上記の通りである。
【0321】
作動ステップ2010:Read_R=フラッシュメモリ文字を読み取る(検証を含む)。
【0322】
作動ステップ2020:Read_H=比較的に高いしきい値(margin-read 1と似た)を有するフラッシュメモリのワードを読み出す。ここで、「高い」とは、所定されたしきい数値基準より高い数値(例えば、予め設定されたまたは予め決定された)。
【0323】
各ビット(ロジック0またはロジック1)のマージン読み出しは、所定したしきい値基準によって決められた電圧を返すが、リファレンス電圧を返送しないことに留意する。しかし、しきい値は通常だとロジック0と1の強度を判定するために変化することがあって、予めに設置したしきい値に全部依存してロジック0と1を区別する仕組みを代替する。より高いしきい値の読み取りを使用すると、マージン読み出しの出力をロジック0に寄せる、前の例に続いて、出力電圧2 Vと電圧1 Vの間の各電圧を出力するビットはロジック1とみなされる。しきい値がどうどう高くなるにつれ(例えば同じステップで)、1つまたは複数のビットのロジック状態を読み取る、あるいは読み出し値はある時点で1から0に変更された場合(ビットを保存している物理状態が同じであっても)、それはビット出力の電圧が丁度上昇したしきい値よりも低いことを示している(それでも最後から2回目に増加したしきい値より高い)。したがって、各数値(直近高くなった各しきい値)と予め設定したしきい値(高くなったしきい値より高いか低い)との間の距離を計算することによって、しきい値が高くなるたびに、ビットがロジック1と0のどれだけ強い電圧を生産するかを示す。
【0324】
注意すべきは、マージン読み出しは既知のテストモード。それには、PGMまたはERSの後に、メモリユニットのしきい値電圧の特性をチェックするスロー読み込み(slow-speed reading)を含む。ウェハで実行されるファームウェアがコードまたはロジック実行を含んで、本発明のエラー修正および/またはビットフリップの優先順位付け方法を実行する場合、マージン読み出しはNVMの端末使用者に有効であり、次いでファームウェアとしてのコードは全てのNVM機能を使用して、マージン読み取り機能を含む。一般に,NVMのいかなる使用者に対して,マージン読み出しはハードウェアまたはファームウェアにおいて有効である。
【0325】
作動ステップ2030:「弱」ロジック1を識別し、例えばロジック「1」のビットが別の読み取り作動で1ではなく0を得た場合、標準しきい値より高いしきい値(マージン以外の読み取りの標準しきい値ではなく)を使用してマージン読み出しによって得られたロジック値である場合、通常だと、作動ステップ2010のRead_ Rと作動ステップ2010のRead_ Hでxor計算によってCheck_bitsHを定義することが多い。なお、Checkubits Hのいずれかのビット(例えば、ビット4)が1である場合、元のワードのビット4には「弱い」ロジック1が存在することを示す。
【0326】
作動ステップ2040:一つずつ「Check_bitsH」のビットインデックス(bit indices)またはビットを通して、この文字が検証値に一致するかどうかを決定する。
【0327】
作動ステップ2050:マッチングが発見された場合、これは通常成功を表し、すなわち良き修正候補を発見したことを表す。このとき、本発明の方法は、「良い」候補者に対して検証または認証を試みる。例えば、文字認証(word auth)を実行し、文字認証が成功すれば、強力認証を実行して、この修正候補を完全検証する。
【0328】
したがって、フローを終了する。この方法は、ビットインデックス2に対応する文字がマッチング検証されていることを発見した場合、他のビットインデックス、例えば、ビットインデックス3または4を再検査する必要がない。
【0329】
逆に、マッチングが見つからない場合。
【0330】
作動ステップ2060:Read_ L=低いしきい値を用いてフラッシュメモリの文字を読み出す(マージン読み出し0と同様)。
【0331】
作動ステップ2070:“弱”ロジック0を識別する、例えば、ロジック“0”であるべきビットが異なる読み取りで0ではなく1となった場合、標準のしきい値より低いしきい値を使用してマージン読み出しによって得られたロジック値を得る。通常では、作動ステップ2010のRead_Rおよび作動2060のRead_Lをxor計算によってCheck_bitsLを定義することが多い。
【0332】
注意すべきは、Check_bits Lのいずれかのビット(例えば、ビット7)が1であれば、通常では元の文字のビット7の「弱0」の存在を示すこととなる。
【0333】
作動ステップ2080:一つずつ「Check_bits L」のビットインデックス(bit indices)またはビットを通して、この文字が検証値に一致するかどうかを決定する。
【0334】
作動ステップ2090:マッチング成功が発見された場合、プロセスは終了する。
【0335】
作動ステップ20000:強ビットを認識する、「弱」と識別されたロジック0および1に対して非または(NOR)演算を行う。強ビットとはより高い読出マージンまたはより低い読出マージンによって取り込まれることがない。一般に、Check_rest={BitwiseNOT(Checkubits LとCheckubitsHとをビット単位でor演算する。
【0336】
作動ステップ20100 a:ビット単位bitwiseで作動ステップ2070のCheck_bits Lと作動ステップ2030のCheck_bits HをOR計算する。
【0337】
作動ステップ20100b:Check_restを定義するために、作動ステップ20100aのBitwiserORのBitwiseNOTと作動ステップ2030のCheck_bits HとOR計算する。
【0338】
エラーが発生しやすいロジック1と0が認識(例えば、すでに優先順位を付けた)されており、通常では、エラーが発生しやすいロジック1と0にエラーが発生していない場合にのみ、残りのビットに対して適切な順序(例えば任意の順序)で検査する、例えば強ビットとみなされる。これは、最も疑わしいビットが修正可能なビットであることが発見されていない為である。この方法は通常で他のビットのいくつかまたは全部をスキャンし、複数の強ビットの中でどれが修正成功するかを判断するためである。特定の状態のビット(比較にエラーしやすいビットであると予想)は必ずしも好ましくないビットではない。時には、この方法がより優先的なビット(弱いロジック1または弱いロジック0を有するビット)に成功していない場合には、残りのビット(一部または全部)をスキャンすることができる。
【0339】
作動ステップ20110:1つずつ「Check_bits L」のビットインデックス(bit indices)またはビットを通して、この文字が検証値に一致するかどうかを決定する。
【0340】
作動ステップ20120:マッチングが発見された場合、例えば、作動ステップ110で文字マッチング検証が発見された場合、成功だと示す。
【0341】
作動ステップ20130:さもなければ、例えば、作動ステップ20110において、文字と検証が一致しない場合、失敗だと示す。通常、修正検査する必要とするビットがないので、修正プログラム全体が不合格となり、この方法は、ビットエラーを修復するためのより高いレベルの方法(higher instance)を行う。例えば、実験室による修復が必要であるというエラーメッセージを出力する。
【0342】
作動ステップ20140:フローを終了する。
【0343】
注意すべきは、作動ステップ2020から2050がロジック0(ロジック1ではなく)と見なされているビットのうちにエラービットである可能性を識別できる以外、作動ステップ2060から2090は、作動ステップ2020から2050も似たものである。もう一つ注意すべきは、この具体的な実施例では、この方法はエラーの可能性があるロジック1を最初に検索することができる、その理由は、徐々に高くなるしきい値は読み取り電圧が予め設定されたしきい値に近いこと示す為である。その後、この方法は通常だとロジック0に対して同じ作動をする。しかしながら、この方法はまず、ロジック0の検索を開始する可能性があり、もし発見できなければ、ロジック1を確認できる。一般的に、使用中のメモリが一つの方向に対して敏感であることを知った場合、例えばロジック1がロジック0よりも比較的にエラーの可能性がある場合、この方法はロジック1検査から開始されてもいい。一般的に、この方法は既知の比較的に劣化する可能なロジック値から開始されてもよい。したがって、一実施例においては、作動2020から2050までだけ、または作動2060から2090だけ、または作動2060から2090だけを実行しても良いし、先に作動2060から2090を行い、次に作動2020から2050までを行うことができる。
【0344】
注意すべきは、作動2020及び2060におけるしきい値(マージン読み出しモードではなく、標準読み取りの標準しきい値よりも低いか高い)を使用。あらゆる適切な低めまたは高めのしきい値を使用することが可能、例えば、標準しきい値より10%、50%あるいは90%低いしきい値、又は10%、50%もしくは90%高いしきい値など。設計考量は非常に近くかつより低い/高いしきい値、またはマージン読み出しモードに使用しない標準しきい値を含む。それは誤アラームを減らせるが、より多くのエラービット(すなわち、より弱いビット)を見逃すこととなる。
【0345】
対照的に、予め設定したしきい値から遠く離れたしきい値はより敏感マージン読み出しを発生し、比較的に弱いビットを見つけやすいが、誤アラームが発生する可能性がある。すなわち、特に弱くないビットに対しても誤アラームが発生する。したがって、弱いビットの検出感度と偽のアラームのコストとの折り合い(例えば、メモリの特性または他の属性に基づいて)に基づいて、設計者は、需要に応じてより低いしきい値またはより高いしきい値を選択することができる。
【0346】
特定の実施例によれば、弱いロジック1に対して成功となる修正の数xをカウントし、弱いロジック0に対して成功となる修正の数yをカウントすることができる。次に、x>yであれば、本発明の方法は、弱いロジック1が弱いロジック0よりも優先的な順位を設定し、y>xであれば、本発明の方法は、弱いロジック0が弱いロジック1よりも優先的な順位を設定する。
【0347】
図15に示すビットエラー予防方法は、方法2ともいう。予防的なメモリのメンテナンスを周期的に行うことができます。
【0348】
注意すべきは、エラー修正はビットエラー検出機能を有するシステムで実行されることができること。しかしながら、エラー予防措置は、エラー検出機能を持たないが、マージン読み出し機能を有するシステムでも実行可能である。
【0349】
方法2は、もう直ぐエラーが発生しそうのビットを認識するために使用でき、これらのビットに対して予防的な処理を行うことができる。
【0350】
この方法は、一般的に前に述べたような適切な順序で実行される以下の作動の全てまたは任意のサブセットを含む。
【0351】
作動ステップ20210:データ区域を読み取る。
【0352】
作動ステップ20212:データ区域に対してマージン0の読み取りを実行し、マージン読み出し0とも称する。
【0353】
作動ステップ20214:データ区域に対してマージン1の読み取りを実行し、マージン読み出し1とも称する。
【0354】
一般的に、マージン読み出しテスト(マージン1またはマージン0)は書込み(ロジック1または0)ビットの相対強度を読み返し、例えば、しきい値を段階的に変更することによってロジック1(または0)に近づく為、しきい値を上げる(または下げる)。このプロセスでは、ビットが1から0にフリップする(逆でも良い)の作動はビットが強いかどうかまたは弱いかをロジック1(または0)と書くことを表し、上述したように。
【0355】
作動ステップ2020:作動ステップ20210、20212と20214によって生成された3つの読取数値が全く同じでない場合、上記の内容に対して結果を検査する為、方法3を実行する。
【0356】
作動ステップ20230:そうでなければ、作動ステップ20210によって生成された3つの読取数値がすべて同じである場合、完備性チェックイベント(例えば、強力認証)を待ち、最初の作動ステップ20210に戻る。
【0357】
注意すべきは、システム設計者は周期的または不定期的に完備性チェックを実行することを選べる、例えば、強力認証を行い、メモリコンテンツの完備性を再確認することができる。
【0358】
注意すべきは、NVMの設計/製造制限または実施例の開発者の時間制限により、特定の実施例は、マージン読み出し1とマージン読み出し0のうちの1つだけを実行。両方を実行するのではない。
【0359】
実施例が片側(0または1)のみのマージン読み出しを実行する場合、マージン読み出しが完了した後も、配置されたビットの優先順位に対応する。どちらのマージン読み出しを実行するかを選択する時に、侵食に敏感な側(NVMのメーカーが決定する)に対してマージン読み出しを実行するように選択できる。侵食とは、ビットが弱体化したり、エラーしたりする可能性をいう。ロジック0と1の保存は電気性上で異なる、例えばロジック0と1のうちの1つは電荷の存在を表すことができ、もう片方は電荷が欠けていることを表してもよいので、ロジック0と1のどちらかは片方より侵食に敏感で絵エラーが発生しやすいかもしれない。しかし、両側(ロジック0および1)が共に有効であり、実行可能である場合、このシステムは通常では両方に対してマージン読み出しを実行し、両側の実行結果の適切な組み合わせに基づいて最後の優先順位を決定することができる。例えば、それぞれ片側に優先順位を設定し、実際の電圧読み値と読み取り値に最も近い電圧しきい値との間の距離に応じて、元ビット1、2、3…階層化をする。次に、マージン読み出し1に相応するのビットの階層とマージン読み出し0に相応するビットの階層とを加算することにより、各ビットの結合階層が生成される。次に、結合階層の順序によって、ビットの優先順位を決めます。
【0360】
注意すべきは、階層化はしきい値との間の距離を必要としないこと。その他に、ロジック1がロジック0よりエラーするのが可能/不可能である知識や経験結果によっては、すべてのロジック1はr_1に分類されることがあり、ロジック0はr_0に分類されるかもしれません。その場合は、すべてのロジック0がロジック1の後に階層されることを生じ、逆もまた可能であり、全部のロジック1がロジック0の後に階層される。
【0361】
図16が示す方法は、通常だと以下の作動の全てまたは任意のサブセットを含み、前述のような適切な順序で進行する。
【0362】
作動ステップ20320:エラーチェック構造(例えば、サイン/パリティ検査/冗長検査機構)がある場合、このエラーチェック機構を使用して、データ区域の通常読み取り(マージン読み出しに対して)のエラーをチェックする。作動ステップ20310の出力は、実行可能(ok)または実行不可能(NO ok)とすることができる。
【0363】
作動ステップ20320:もし作動ステップ20310の出力が実行可能(ok)であれば、あるいは既存のエラーチェック構造であれば、何もしないまたはビットを強くする、例えばデータの更新は、同じメモリ位置Lで書き換えをする、第一メモリ位置Lのデータを他のメモリ位置にコピーした後に、最初の位Lに戻す。上記データ更新の方法は、該当しないタイプやメモリタイプに関連している。
【0364】
作動ステップ20330:作動ステップ20310の出力が実行不可能である場合(NO ok)、各ビット毎に試行錯誤修正を実行し、不一致の読取ビットを先に配置し(読取ったしきい値が高くなるかまたは低下すると、そのビットの読み取り値が変更し、他のビットよりもエラーする可能性があることを示す)、続いて一時的に(優先順位による)ビットフリップして、エラーを再確認し、マッチングが見つかるまで続ける。
【0365】
注意すべきは、本明細書で示しまたは説明した方法は、必要な修正を経て多層式メモリユニットに適用することができる。1つ以上のしきい値によって2つ以上の数値を保存することができる。逆に、0または1だけを保存するメモリは、0を1(または1を0にフリップさせる)によって修正する。前述したように、多層式メモリユニットのビットは通常だと比較および階層化されており、階層基準は実際のビット基準と(最も近い)しきい値との間の距離を含み、最も近いしきい値は一般にしきい値Tを含み、その特徴はすべてのしきい値のうちのしきい値Tとこのメモリユニットの実際の電圧との電圧差が最小であること。この利点は、しきい値Tが対応するビットの侵食が’起こる際に最も越される可能性がある。
【0366】
多層メモリユニットは、実際のビット基準と所与のメモリユニットの2つの隣接状態、または数値の2つ隣接するビット基準のしきい値間の距離に応じて階層化する、例えば前述の方法。したがって、多層式メモリユニットについては、この方法では、あるしきい値に接近していると判断した場合、このメモリユニットはリファレンス電圧を維持しているかどうかを確認することができる。しかし、2進制(0/1)メモリについては、修正には必ずしもビット不リップではなく、疑わしいなエラーを表す数値から、エラー修正の原因となる隣接数値に数値を移動させる試行できることを含む。例えば、メモリユニットが4つの数値を代表している時、すなわち0、1、2、または3、または8つの数値、すなわち0~7を表す場合。次に、読んだ数値を2とする。
【0367】
数値2が所定の数値2と数値1の間のしきい値に接近している場合(例えば、数値2と数値3までのしきい値よりも、数値1と数値2間のしきい値に近い)、この方法は、数値2を1に修正することを試みることができ、そうでなければ、この数値2が数値2と数値3のしきい値に接近する場合、この方法は数値2を数値3に修正することを試みることができる。
【0368】
通常、本明細書で説明したエラー修正期間には、メモリは利用できない(unavailable)。システム中の集積回路はメモリに使われる、またはやメモリを使ってエラー検出や修正を行うと、集積回路の機能性アプリケーションはメモリにアクセスできず、実行不可となる。
【0369】
したがって、メモリエラーを検出した場合、および/または、周期的またはロジック的に起動または他のトリガ構造によるメモリ検査を行う。適切な論理回路は機能的なアプリケーションを停止し、メモリ修正機能はメモリのコントロールを引き継ぎ、メモリ修正が完了(およびメモリエラーの修正が成功した場合)するとコントロール権はアプリケーションに戻る。
【0370】
注意すべきは、特定の使用状況において、エラーが検出されると、システムにダメージを与えないように、システムがメモリを使用続けることが不可となる。通常では、システム設計者は適切な論理回路を設計して、発見されたエラーに基づいて、すべての作動をエラーが修正されるまで、停止するか、作動を継続して待つか、もしくは延期してある適切なタイミングで修正するか、あるいはまったく修正しないを判断する。
【0371】
例えば、重要なマイクロプロセッサの作動コードにエラーのビットフリップした場合、この論理回路はすべての作動を停止することができる。この手段は、重要なアプリケーションが実行している時に損傷を受けず、もしくは予期せぬ有害な結果を防ぐ、あるいは壊滅的な誤作動を引き起こす可能性を配慮した安全対策。例えば、重要なデータ(例えば、暗号鍵)にビットフリップがある場合、この論理回路はすべての作動を停止できる。
【0372】
対照的に、重要ではない音信モードまたはビデオモード(せいぜい瞬間的な雑報、あるいは娯楽ビデオにおいて不正なピクセルをもたらすので、重要度が低い)でエラービットフリップすると、この論理回路は作動を継続することができる。この場合、修正を後々の適切なタイミングに延期するか、または抜本的に修正をスキップすることができる。
【0373】
注意すべきは、従来のエンティティデータ作動を使用して、本発明の「試行錯誤(trial and error)」ビットフリップに利用できること。例えば、NVMにおいてエラー文字が認識されると、エンティティデータ作動は、以下の作動の全てまたは任意のサブセットを含み、前述の適切な順序で実行されてもよい。
【0374】
(i):この文字を含む最小消去NVMブロックをSRAMにコピーする。
【0375】
(i i):ビットカウンタiを0に設定する。
【0376】
(iii):このエラー文字を読み取りと変数Aとなる。
【0377】
(iv):変数Aから変数Bにコピーし、B={B XOR 2^i}を実行します。変数Bにおけるビットiをフリップする。
【0378】
(v):変数Bを書き込み、フリップされたビットiを有する文字となり、且つこのデータブロックに戻ってSRAMの文字位置にコピーされる。
【0379】
(vi):SRAMのデータブロック上で完備度チェックを行います。
【0380】
(vii):作動viの完備度チェックが成功すれば、エラーがすでに修正されたことを示し、関連するNVMデータブロックを抹消し、且つSRAM上で成功的に修正されたデータブロックをNVMにコピーする。
【0381】
(viii):そうでなければ、がビットi上で完備度検査にエラーが発生した場合、フリップされたビットiがエラー修正に成功していないことを示しているので、それをコピーしない。代わりに、iを1ずつインクリメントし、i<16の状態で作動(iv)に戻る。
【0382】
(ix):i=16の場合、修正試行失敗を示す出力を生成する。
【0383】
注意すべきは、適切な位置でビットフリップを行う必要がある場合、メモリがNVMであれば、ターゲットのデータブロックは、揮発性メモリ(例えばSRAM)に置くことができる、次にビットフリップを作動し、NVMのターゲットデータブロックを消去し、揮発性メモリからフリップしたビットのデータをNVMに書き返す。
【0384】
図17を参照してください。これはエラー修正の試行錯誤による簡略化したフローチャートであり、図13に示されているエラー可能性のあるビットの降順(descending order)に従ってビットフリップを行う。第17図のフローチャートには、作動ステップ20 a~20 cが含まれている。
【0385】
作動ステップ(20 a):このシステムは、試行または推定または候補修正値を生成する。
【0386】
作動ステップ(20 b):システムは、フリップ作動ステップ(20 a)によって判断されるエラー可能性のあるビットとそのビットの降順(descending order)に従って、つまり、エラーのあるビットが、比較的にエラー不可能なビットよりも優先的にフリップされ、試行または推定または候補修正値を使用して、疑わしいエラーデータの置換を試みる。
【0387】
作動ステップ(20 c):このシステムは、特定検査(例えば、第1~12の図で説明した実施例)にを実行することによって、推定の修正は成功したかを認証または検証する。例えば、修正が成功したか否かを推定する。
【0388】
本発明の範囲は、各エンティティ実装形態を含むが、限定されず、エラー修正が実行されると、機能性システムはメモリを使用することができない。本発明の保護範囲は、様々なエンティティ実装形態を含むが、それに限定されない。例えば、ターゲットデータブロック(subject chunk)をSRAMにコピーし、且つSRAMですべてのビット作動を完了させ、修正を試行する。修正されたデータブロックをNVMにコピーすることによって、「有効」(available)なNVMを保持し、その後に使用することが可能。
【0389】
注意すべきは、本発明の方法はファームウェアにおいて方法1、2、および3のうちの少なくとも1つを実現することができる、あるいはNVMに直面するインターフェース上で論理回路を増加させる。本発明の方法を従来のNVM(使用中でも)に適用できる。オプションとして、NVM上でハードウェアを増やして、本発明の方法の全部または部分的な作動を加速(ファームウェアのみを使用する場合に対して)することができる。
【0390】
特定の実施形態の1つの利点は、例えば、文字認証(word auth)ような検査の実行を加速できる。
【0391】
注意すべきは、いくつかの使用状況において、様々な可能となるエラー修正を試みる場合、エラーが発生したビットの指示を先に提供、受信または生成する必要がない。
【0392】
注意すべきは、各ビットのマージン読み出しに対するリスポンスに基づいて、ビットエラー修正の優先順位を設定することは、特殊なエラー修正を使用することと無関係である。例えば、第1~図12の実施例を使用すると、比較的にエラーしやすいビットをエラーしにくいビットよりも優先して配置することによって、任意の試行錯誤修正方法の全体的な修正サイクル時間を統計的に低減することができる。しかしながら、優先順位を設定する方式は、本発明を用いて開示される優先順位に限定されない。
【0393】
注意すべきは、本発明において、ビットフリップは実際のメモリの完備度を保護した上で、試行錯誤に基づいて実際にビットをフリップして、エラーの修正に成功したビットはフリップ状態を保持するが、エラーの修正に成功していないビットは再度フリップされる。また、フリップ作動はメモリコンテンツの全部または一部のコピー上でビットフリップを行うことができ、このコピー内容は完備度を保護しようとする実際のメモリの位置ではなく、その他の位置にあるが、ビットがエラー修正に成功すると、フリップされたビットは実際のメモリに保存される。試行錯誤の過程で、コピーしたデータの中でフリップされるが、エラー修正する必要のない他のビットは、実際にはフリップしない。例えば、元のメモリではフリップせず、コピーデータの中でフリップし返さなくでもいい。
【0394】
代替的に、本明細書で説明する一部の実施例は、部分的にまたは排他的に(すなわち、ファームウェアがない)ハードウエアで実施することができ、この場合、本明細書で説明するいくつかまたはすべての変数、パラメータ、シーケンス作動および計算は、ハードウエアで行って良い。
【0395】
「強制」、「要求」、「必要」および「必須」などの用語は、明確化するために本明細書で説明する特定の実施例またはアプリケーションの背景の下で行われる実施例の選択を意味し、限定することが意図されないことを理解して頂きたい。代替実施例では、同じ要素は、非強制および非要求として定義されてもよく、完全に除去されてもよい。
【0396】
分離された実施例の上下の文脈で説明された本発明の特徴は、動作を含み、単一の実施例で組み合わせて提供してもよい。例えば、システムの実施例は、対応するフロー実施例を含むことが意図され、その逆もまた同じである。特徴は当分野に既知されている特徴と組み合わせることができ、特に、背景技術の一部またはその中で言及された出版物にて説明したものに限定されず。
【0397】
逆に、単一の実施例の上下の文脈内、またはある順序で簡潔に説明した本発明の特徴は、動作を含み、分離的あるいは任意の適切なサブコンビネーション方式で提供する。この分野で知られている特徴(特に、バックグラウンド技術の部分またはここで言及された出版物に記述したされた内容に限定されない)を含み、または他の異なる順序で並べられてもよい。「例えば」は限定することを意図しない例を表すために用いられる。
【0398】
各方法は、本明細書で説明されるように、説明または説明された一部かまたは全部の動作を含み、本明細書で説明または説明するように適切に並べ替える。。
【0399】
本発明の前に述べた実施例は、上記のように明らかにしたが、本発明を限定するために用いられるものではなく、類似の技術を熟知している者は、本発明の精神と範囲内を逸脱しない限り、僅かな変更と修整だとする。したがって、本発明の特許保護範囲は、本願明細書に添付された特許範囲に規定されている者に準じるものとする。
【符号の説明】
【0400】
1…プロセッサ
2…メモリアレイ
6…ハードウェア
7…ファームウェア
10…集積回路
16…システム
18…ソフトウェア
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18