(58)【調査した分野】(Int.Cl.,DB名)
スキャンをすることが、前記メモリデバイスのブロック中の第一のセルを読み出すことを含み、前記第一のセルを読み出すことが、前記ブロック中の第二のセルへの書き込みの後に実行される、請求項1の方法。
前記コンポーネントは選択値を記憶するストレージユニットを含み、前記メモリアレイ上で実行された読み取り動作の数が前記選択値を超えるときに前記条件が満足される、請求項11の装置。
前記コンポーネントは選択値を記憶するストレージユニットを含み、前記メモリアレイのブロック上で実行された読み取り動作の数が前記選択値を超えるときに前記条件が満足される、請求項11の装置。
前記コンポーネントはオフセット値を記憶するストレージユニットを含み、前記コンポーネントは、前記オフセット値に基づくアドレスを有する位置でエラー検出のためのスキャンをする、請求項11の装置。
【発明を実施するための形態】
【0007】
図1は、本発明の実施形態に従うシステム100のブロック図を示している。システム100は、コンピュータ、携帯電話、又はデジタルカメラなどの電子システム中に備えられ得る。
図1に示されているように、システム100は、メモリセル104を有するメモリアレイ102を有するメモリデバイス101を含み、情報を記憶し得る。情報は、ユーザからのデータ及びシステム100によって生成された制御データの少なくとも一つを含み得る。システム100はまた、メモリコントローラ103を含み、一つ以上のインターフェイス又はバス105及びバス107を介したメモリデバイス101とプロセッサ106の間の通信を制御し得る。
【0008】
システム100はさらに、マネージメントコンポーネント119を含み得て、マネージメントコンポーネント119は、メモリデバイス101中に記憶された情報の中の潜在的エラー検出のためにメモリデバイス101のスキャンをすること、及びエラーを訂正することに関係し得る。上述のように、未検知の潜在的エラーは、使用不可能になり得る。システム100中では、情報が使用不可能になる前に、潜在的エラー検出のためにメモリデバイス101のスキャンをすること、及び次にエラーを訂正することが、全エラーレートを減少させ得る若しくは情報が使用不可能になるのを避け得るし、又は両方をし得る。
【0009】
マネージメントコンポーネント119はモニタリングユニット131を含み、バス105、107又は両方の上の信号をモニタすることよって、メモリアレイにアクセスする及びメモリアレイからアクセスされる数を追跡し得る。例えば、モニタリングユニット131は、少なくとも一つのカウンタ151を含み、メモリデバイス101中の読み取り動作又は書き込み動作の数をカウントし得る。マネージメントコンポーネント119はまた、ストレージユニット132を含み、システム100のエラースキャニングアクティビティ中で用いられ得る一以上の値を記憶し得る。ストレージユニット132は、読み取り専用メモリ(ROM)ストレージ素子、電子的に消去可能プログラム可能なROM(EEPROM)、及びレジスタ回路などのストレージ回路素子を含み得る。マネージメントコンポーネント119はまた、タイムキーパ133を含み得て、タイムキーパ133は時間を刻み続けるリアルタイムクロックを含み得る。マネージメントコンポーネント119はまた、エラー訂正ユニット134を含み、メモリデバイス101中に記憶された情報の中に見つかり得るエラーを訂正し得る。エラー訂正ユニット134は、エラー訂正回路を含み、記憶された情報に関連するエラー訂正コード(ECC)データに基づいてエラーを訂正し得る。ECCデータはハミングコード、リード−ソロモンコード、及びBCHコード(ボース、レイショードゥリ、ホッケンガムコード)などのコードに基づいて生成され得る。
【0010】
図1で、矢印141、142、及び143は、マネージメントコンポーネント119の全体が、メモリデバイス101、メモリコントローラ103、及びプロセッサ106の一つのみの中に備えられ得るのか、又はマネージメントコンポーネント119の一部が、メモリデバイス101、メモリコントローラ103、及びプロセッサ106の少なくとも二つの中に分散され得るのか、を表す。マネージメントコンポーネント119は、ソフトウェアプログラム命令、ファームウェア、ハードウェア、又はそれらの組み合わせを含み得る。マネージメントコンポーネント119中のファームウェアの例は、基本入出力システム(BIOS)回路又は電子システムのBIOS回路に類似の回路を含む。マネージメントコンポーネント119中のハードウェアの例は、フリップフロップ回路、レジスタ回路、ステートマシン回路、及び他の回路素子のような回路素子を含む。
【0011】
図1のメモリデバイス101は、フラッシュメモリデバイスのような不揮発性メモリデバイスを含み得る。プロセッサ106は、汎用プロセッサ(例えば、コンピュータで用いられるプロセッサ)又は特定用途向け集積回路若しくはASIC(例えば、携帯電話又はデジタルカメラ中で用いられるプロセッサ)を含み得る。メモリデバイス101及びメモリコントローラ103は、同一の半導体ダイから形成され、同一の半導体パッケージ又はチップ中に封入され得る。メモリデバイス101及びメモリコントローラ103はまた、別々の半導体ダイから形成され、別々の半導体パッケージ又は別々のチップ中に封入され得る。実施形態によっては、メモリコントローラ103は省略され得るし、メモリデバイス101及びプロセッサ106は、バス105及び107の一つ又は両方を介して互いに通信し得る。実施形態によっては、メモリデバイス101は、
図2のメモリデバイスを含み得る。
【0012】
図2は、本発明の実施形態に従うメモリデバイス201のブロック図を示している。メモリデバイス201は、行及び列に配置されたセル204を有するメモリアレイ202を含み得る。行デコーダ206及び列デコーダ208は、アドレスレジスタ213に応答し、ライン又は端子240上の行アドレス及び列アドレス信号に基づいてセル204にアクセスし得る。セル204にアクセスすることは、セル204へ情報を書き込むこと、又はセル204から情報を読み出すことを含み得る。データ入出力回路214は、セル204と端子240の間で情報を転送し得る。メモリデバイス201の端子240及び端子241は、インターフェイス又は
図1のバス105及び107のようなバスに結合され得る。端子240及び241は、メモリデバイス101の外部端子(例えば、メモリデバイス101を含むチップ又は半導体パッケージの外部に配置された端子)を含み得る。読み取り動作は、端子241に与えられる読み取りコマンド(又は読み取り動作を示す信号)に基づいて実行され得る。書き込み動作は、端子241に与えられる書き込みコマンド(又は書き込み動作を示す信号)に基づいて実行され得る。端子240及び241上の、信号の転送のようなアクティビティをモニタすることによって、メモリデバイス201はメモリアレイ202全体の上で、又は個々のブロック中で、実行された読み取り動作及び書き込み動作の数を追跡する又は決定することができる。
【0013】
制御回路216は、端子240及び241上の信号に基づいて、メモリデバイス201の動作を制御し得る。メモリデバイス201の動作は、セル204に情報を書き込む又はプログラムする書き込み動作、セル204から情報を読み出す読み取り動作、及びセル204から情報を消去する消去動作を含み得る。メモリデバイス201の書き込み、読み取り、及び消去動作は、セル204中に記憶された情報の中のエラー検出のためのスキャンをするといった、メモリデバイス201中での様々なアクティビティと結び付いて実行され得る。
【0014】
制御回路216は、マネージメントコンポーネント219を含み得て、マネージメントコンポーネント219は
図1のマネージメントコンポーネント119の実施形態を含み得る。実施形態によっては、
図2のマネージメントコンポーネント219は、
図1のマネージメントコンポーネント119より少ない回路素子を含み得る。例えば、
図2のマネージメントコンポーネント219は、
図1のエラー訂正ユニット134のようなエラー訂正ユニットを省略し得る。
図2で、メモリデバイス201のマネージメントコンポーネント219は、潜在的エラー検出のためにメモリアレイ202中のセル204をスキャンすることに関係し得る。マネージメントコンポーネント219はまた、エラーの訂正に関係し得る。
【0015】
メモリアレイ202は、メモリブロック211及び212、ページ(又はセルの行)221、222、223、及び224、並びにセクタ231、232、233、234、235、236、237及び238を含み得る。
図2に示されているように、ブロック211及び212の各々は複数のページを含み得るし、各ページは複数のセクタを含み得るし、そして各セクタは複数のセルを含み得る。ブロック211及び212は、フラッシュメモリデバイスの消去済みブロックと呼ばれ得る。明確化のために、
図2は、メモリアレイ202中に2つのブロック、各ブロック中に2つのページ、各ページ中に2つのセクタ、及び各セクタ中に2つのセルの例を示している。実施形態によっては、メモリアレイ202中の2つのブロックの数、各ブロック中のページの数、各ページ中のセクタの数、及び各セクタ中のセルの数は変わり得る。例えば、ブロック211及び212の各々は、64ページを含み得る。別の例では、ブロック211及び212の各々の中のページ221、222、223、及び224の各々は、4つのセクタを含み得る。別の例では、ブロック211及び212の各々の各セクタは4096セルを含み、512バイトの情報を記憶し得る。
【0016】
図2では、メモリデバイス201は不揮発性メモリデバイスを含み得る。実施形態によっては、メモリデバイス201は、セル204がNANDフラッシュメモリ配置に配置されたフラッシュセルを含み得るNANDフラッシュメモリデバイスを含み得る。別の実施形態では、メモリデバイス201は、NORフラッシュメモリデバイス、高分子メモリデバイス、強誘電体ランダムアクセスメモリ(FeRAM)デバイス、例えばオビオニクスユニバーサルメモリ(OUM)デバイスのような相変化メモリ(PCM)デバイス、窒素化合物読み取り専用メモリ(NROM)デバイス、又は磁気抵抗ランダムアクセスメモリ(MRAM)デバイスのようなメモリデバイスを含み得る。
【0017】
当業者は、メモリデバイス201は、本明細書中で記述される様々な実施形態に注意を向けさせるために
図2からは省略されている、他のコンポーネントを含み得ることを容易に理解するだろう。
【0018】
メモリデバイス201中に記憶されている情報の中のエラーの検出のためのスキャンをすることは、デバイスに基づくスキャニング、ブロックに基づくスキャニング、ブロックに基づくランダムページスキャニング、時間に基づくスキャニング、又はこれらの組み合わせで実行され得る。例えば、デバイスに基づくスキャニングでは、メモリアレイ202中のいくつかのセクタが読み出された後、又は何回かの読み取り動作がメモリデバイス201上で実行された後に、メモリアレイ202全体がスキャンされ得る。ブロックに基づくスキャニングでは、ブロック211又は212中のいくつかのセクタが読み出された後、又はブロック211又は212上で何回かの読み取り動作が実行された後、そのブロックのみがスキャンされ得る。ブロックに基づくスキャニングではまた、ブロック211又は212中のいくつかのセクタが書き込まれた後、又はブロック211又は212上で何回かの書き込み動作が実行された後に、そのブロックのみがまたスキャンされ得る。ブロックに基づくランダムページスキャニングでは、ブロック211及び212のうちの選択された一つの中のあるページが、選択された同じブロック内の別のページの読み取り動作に基づいてランダムにスキャンされ得る。時間に基づくスキャニングでは、例えば、数日ごとのように、各時間間隔後にメモリアレイ202がスキャンされ得る。
【0019】
実施形態によっては、メモリデバイス201に記憶されている情報の中のエラー検出のためのスキャンを含むメモリデバイス201中の動作及びアクティビティは、
図3のアクティビティの実施形態を含み得る。
【0020】
図3は、本発明の実施形態に従うエラー検出のためのスキャンをする方法300の流れ図である。方法300は、
図1のシステム100のようなシステム中、又は
図2のメモリデバイス201のようなメモリデバイス中で用いられ得る。よって、方法300中のメモリデバイスは、
図1のメモリデバイス101又は
図2のメモリデバイス201を含み得る。
【0021】
図3のアクティビティ310は、メモリデバイス中に記憶された情報の中のエラー検出のためのスキャンをする条件を設定し得る。
図1のメモリコントローラ103若しくはプロセッサ106のようなコントローラ若しくはプロセッサ中の回路、又は
図2のメモリデバイス201の制御回路216のような回路が、条件を設定し得る。条件を設定することは、ストレージユニットに少なくとも一つの選択値を記憶することを含み得る。
図1のストレージユニット132のようなストレージユニットは、アクティビティ310によって設定された選択値を記憶し得る。
【0022】
アクティビティ310で条件を設定することは、メモリデバイス中の読み取り動作の数が第一の設定値を超える又は少なくとも等しいときに、エラー検出のためのスキャンが実行され得るように第一の設定値を記憶することを含み得る。例えば、Mを整数として第一の選択値をMに設定すると、メモリデバイス中の読み取り動作の回数がMを超える又は少なくともMに等しくなると、エラー検出のためのスキャンが実行され得る。
【0023】
アクティビティ310で条件を設定することはまた、メモリデバイスのあるブロック中の読み取り動作の回数が第二の選択値を超える又は少なくとも等しいときに、エラー検出のためのスキャンが実行され得るように第二の選択値を記憶することを含み得る。例えば、Bを整数として第二の選択値をBに設定すると、ブロック中の読み取り動作の回数がBを超える又は少なくともBに等しくなると、エラー検出のためのスキャンが実行され得る。
【0024】
アクティビティ310で条件を設定することはまた、メモリデバイスのあるブロック中の読み取り動作の回数が第三の選択値を超える又は少なくとも等しいときに、メモリデバイスのそのブロック中のあるランダム位置において、エラー検出のためのスキャンが実行され得るように第三の選択値を記憶することを含み得る。例えば、Rを整数として第三の選択値をRに設定すると、ブロック中の読み取り動作の回数がRを超える又は少なくともRに等しくなると、ランダム位置でエラー検出のためのスキャンが実行され得る。
【0025】
アクティビティ310で条件を設定することはまた、メモリデバイスのあるブロック中の書き込み動作の回数が第四の選択値を超える又は少なくとも等しいときに、そのブロック中でエラー検出のためのスキャンが実行され得るように第四の選択値を記憶することを含み得る。例えば、Wを整数として第四の選択値をWに設定すると、ブロック中の書き込み動作の回数がWを超える又は少なくともWに等しくなると、そのブロック上でエラー検出のためのスキャンが実行され得る。
【0026】
アクティビティ310で条件を設定することはまた、第五の値によって示される各時間間隔でエラー検出のためのスキャンが実行され得るように第五の選択値を記憶することを含み得る。例えば、第五の選択値が、数日のような時間間隔を表し得るTに設定されると、Tで示される各時間間隔の毎にエラー検出のためのスキャンが実行され得る。
【0027】
アクティビティ310では、第一、第二、第三、第四、及び第五選択値は、あらゆる組み合わせで記憶され得る。例えば、第一、第二、第三、第四、及び第五選択値の一つのみが記憶されてもよい。よって、メモリデバイス中の情報の中のエラー検出のためのスキャンをする条件は、アクティビティ310によって記憶される第一、第二、第三、第四、及び第五選択値の一つのみに依存し得る。別の例では、第一、第二、第三、第四、及び第五選択値の少なくとも二つが記憶され得る。よって、メモリデバイス中の情報の中のエラー検出のためのスキャンをする条件は、第一、第二、第三、第四、及び第五選択値の少なくとも二つに依存し得る。
【0028】
アクティビティ320は、メモリデバイスにアクセスし得る。メモリデバイスにアクセスすることは、メモリデバイスに情報を記憶する又は書き込む書き込み動作を実行すること、及びメモリデバイスから情報を読み出す読み取り動作を実行することを含み得る。
【0029】
アクティビティ330は、アクセス数の追跡をし得る。アクセス数は、メモリデバイスにアクセスする又はメモリデバイスからアクセスされる数を含み得る。実施形態によっては、アクティビティ330は、アクセス数をカウントすることによって、アクセス数を追跡し得る。
図1のカウンタ151のようなカウンタは、アクティビティ330でアクセス数をカウントし得る。カウンタ又は
図1のストレージユニット132のようなストレージユニットは、カウントした後、アクセス数を記憶し得る。
【0030】
アクセス数は、メモリデバイス中の読み取り動作の数を含み得る。読み取り動作の数は、メモリデバイスの一つより多いブロックのセクタ上で実行される読み取り動作の総数を含み得る。アクセス数はまた、メモリデバイスのあるブロック中の読み取り動作の数を含み得る。アクセス数はまた、メモリデバイスのブロック中の書き込み動作の数を含み得る。
【0031】
アクティビティ340は、エラー検出のためのスキャンをする条件が満足されているかどうかを決定する。アクティビティ340では、アクティビティ330でのアクセス数が、アクティビティ310によって設定された対応する選択値と比較され得る。比較の結果は、条件が満足されているかどうかを決定し得る。
【0032】
例えば、メモリデバイス中の読み取り動作の数が、アクティビティ310によってストレージデバイス中に記憶され得るある選択値(例えば、上述の値B)を超える又は少なくとも等しいときに、アクティビティ340中の条件が満足される。
【0033】
別の例では、メモリデバイスのあるブロック中の読み取り動作の数が、アクティビティ310によってストレージデバイス中に記憶され得るある選択値(例えば、上述の値B)を超える又は少なくとも等しいときに、アクティビティ340中の条件が満足される。
【0034】
別の例では、メモリデバイスのあるブロック中の読み取り動作の数が、アクティビティ310によってストレージデバイス中に記憶され得るある選択値(例えば、上述の値R)を超える又は少なくとも等しいときに、アクティビティ340中の条件が満足される。
【0035】
別の例では、メモリデバイスのあるブロック中の書き込み動作の数が、アクティビティ310によってストレージデバイス中に記憶され得るある選択値(例えば、上述の値W)を超える又は少なくとも等しいときに、アクティビティ340中の条件が満足される。
【0036】
別の例では、情報がメモリデバイスに記憶されてからある時間量が経過し、その時間量が、アクティビティ310で設定され得るある選択値によって示される時間量を超える又は少なくとも等しいときに、アクティビティ340中の条件が満足される。
【0037】
図3に示されているように、方法300のアクティビティ340の条件が満足されないとき(“NO”によって示される)、方法300はアクティビティ330を繰り返し得る。条件が満足されるとき(“YES”によって示される)、方法300は引き続きアクティビティ350を実行し得る。
【0038】
アクティビティ350は、エラー検出のためのスキャンをし得る。アクティビティ350でスキャンをすることは、メモリデバイスの一部のみ又はメモリデバイス全体のスキャンをすることを含み得る。アクティビティ350でスキャンをすることは、デバイスに基づくスキャニング、ブロックに基づくスキャニング、ブロックに基づくランダム位置スキャニング、時間に基づくスキャニングの少なくとも一つを含み得る。
【0039】
アクティビティ350は、メモリデバイス中の読み取り動作の数がある選択値(例えば、上述の値M)を超える又は少なくとも等しいときに、デバイスに基づくスキャニングを実行し得る。デバイスに基づくスキャニングでは、アクティビティ350は、記憶された情報を有するセルを読み取り、記憶された情報を有しないセルの読み取りをスキップし得る。記憶された情報を有しているセルは、メモリデバイスの一つ以上ブロックに備えられ得る。実施形態によっては、デバイスに基づくスキャニングにおいて、アクティビティ350のスキャンでは、記憶された情報を有するセル及び記憶された情報を有しないセルの両方を読み取り得る。
【0040】
アクティビティ350は、あるブロック中の読み取り動作の数が、ある選択値(例えば、上述の値B)を超える又は少なくとも等しいとき、ブロックに基づくスキャニングを実行し得る。ブロックに基づくスキャニングでは、アクティビティ350は、選択されたブロック中の読み取り動作の数が、アクティビティ310によって記憶された第二の選択値を超える又は少なくとも等しいときに、その選択されたブロックのみの中のセルを読み取り得る。
【0041】
アクティビティ350は、あるブロック中の読み取り動作の数が、ある選択値(例えば、上述の値R)を超える又は少なくとも等しいときに、ブロックに基づくランダム位置スキャニングを実行し得る。ブロックに基づくランダム位置スキャニングでは、アクティビティ350は、あるブロック中のランダム位置でセルを読み取り、エラー検出のためのスキャンをし得る。アクティビティ350がランダム位置のセルを読み取り得る率は、値Rのような選択値に基づき得る。実施形態によっては、ランダム位置のアドレスは、オフセット値及び(エラー検出のためのスキャンをすることではない)通常のメモリ読み取り動作中にメモリデバイスに与えられるアドレスの関数であり得る。例えば、もしRのような選択値が12であり、オフセット値が16ならば、すると、あるブロックに対して12回の通常メモリ読み取り動作が実行される毎に、追加の読み取り動作(例えば、13回目の読み取り動作)が実行されて、ランダム位置でセルを読み取り、エラー検出のためのスキャンが行われ得る。この例では、追加の読み取り動作(13回目の読み取り動作)でのランダム位置のアドレスは、12回目の読み取り動作の位置のアドレス及び(この例では16である)オフセット値に基づいて決定され得る。例えば、13回目の読み取り動作でのランダム位置のアドレスは、12回目の読み取り動作での位置のアドレスとオフセット値の和(又は12回目の読み取り動作における位置のアドレスからオフセット値を減じた差)から決定され得る。オフセット値は選択され、アクティビティ310で用いられているストレージユニットのようなストレージユニットに記憶され得る。ブロックに基づくランダム位置スキャニングでは、オフセット値が記憶され得るストレージユニットにアクセスすることによって、オフセット値を得ることができる。
【0042】
実施形態によっては、ランダム位置は、あるブロックのあるページの位置を含み得る。よって、実施形態によっては、オフセット値は、ブロック中のページの数に基づいて選択され得る。例えば、ブロックが0から63までの番号付けされた64ページを有するとき、オフセット値は、1から62までであり得る。この例では、(エラー検出のためのスキャンがされるだろう)ランダムページのアドレスは、通常の読み取り動作で読み出される(64ページの一つである)ページのアドレスとオフセット値の和(又は通常の読み取り動作で読み出されるページのアドレスからオフセット値を減じた差)であって、ランダムページのアドレスがブロック内に収まるようなものであり得る。
【0043】
アクティビティ350でスキャンをすることはまた、ブロック中の書き込み動作の数が、アクティビティ310によって記憶され得る選択値(例えば、上述の値W)を超える又は少なくとも等しいときに、ブロックに基づくスキャニングを実行し得る。例えば、アクティビティ350は、あるブロックのある位置でセルに情報を書き込んだ後に、同じブロック中の別の位置でセルを読み取り、エラーの検出のためのスキャンをし得る。
【0044】
図2に示したように、ブロックは複数のページを含み得る。ブロックは、ページ毎に異なる書き込み動作によって、そして連続的な順番、例えば第一のページ、中間のページ、最後のページという連続的な順番で書き込まれ得る。ブロックはページ毎に書き込まれ得るので、動作の数は書き込まれたページの数に対応し得る。
図3で、アクティビティ350は、情報を新しいページに書き込んだ後に、書き込まれているページのセルを読み取り得る。例えば、もし選択値が14(例えば、W=14)であり、もしあるブロック上で実行された書き込み動作の数が14(例えば、14ページが書き込まれた)ならば、すると、15回目の書き込み動作でそのブロックに書き込んだ後、アクティビティ350は、以前に書き込まれたセル(例えば、1回目のページから第14回目のページまでのセル)を読み取り、エラー検出のためのスキャンをし得る。実施形態によっては、今と同一の例を用いて、アクティビティ350は、(第15回目の書き込み動作で書き込まれたセルを含む)全ブロック中のセルを、第15回目の書き込み動作の後に読み取り、エラー検出のためのスキャンをし得る。
【0045】
実施形態によっては、ブロックのあるページ内のセルが書き込まれるたびに、アクティビティ350がブロックの各ページ内のセルを読み取り、エラー検出のためのスキャンをし得るように、選択値が選ばれ得る。例えば、選択値は1(例えば、W=1)に設定され得る。他の実施形態では、エラー検出のためのスキャンをするために、ブロックのページの数の少なくとも半分が書き込まれた後にのみ、アクティビティ350はブロックのページのセルを読み取り得るように選択値が選ばれ得る。例えば、選択値はブロックのページの半数(例えば、Pをブロックのページ数として、W=(1/2)P)に設定され得る。
【0046】
アクティビティ350は、時間間隔毎に時間に基づくスキャニングを実行して、エラー検出のためのスキャンをし得る。時間に基づくスキャニングでは、アクティビティ350は、記憶されている情報を有するセルを読み取り、エラー検出のためのスキャンをし得る。例えば、もし設定値が30日(例えば、30日に対応する値に対応するT)であれば、すると30日ごとに、アクティビティ350は、記憶された情報を有するセルを読み取りエラー検出のためのスキャンをし得る。
【0047】
アクティビティ350では上述のように、満足された一つ以上の条件に基づいて、エラー検出のためのスキャンをするために、情報がメモリデバイスのセルから読み出され得る。アクティビティ350によって得られたスキャンに基づいて訂正動作が実行され、情報の中のあらゆるエラーを訂正し得る。
【0048】
実施形態によっては、アクティビティ350でエラー検出のためのスキャンをすることは、デバイスのメモリセルからの情報を読み出すこと、及び情報がセルから読み出されるときに、情報に付随するECCデータ(例えば、新しいチェックビット)を決定することを含み得る。そして、ECCデータ(例えば、新しいチェックビット)は、情報がメモリセルに書き込まれたときに、情報に付随していたECCデータ(例えば、古いチェックビット)と比較され得る。二つのECCデータ(例えば、古いチェックビットと新しいチェックビット)の間のミスマッチは、情報にエラーが生じていることを示し得る。
【0049】
他の実施形態では、アクティビティ350でエラー検出のためのスキャンをすることは、情報にエラーが生じているかどうか、を決定するためにメモリデバイス中の専用ハードウェアにアクセスすることを含み得る。例えば、アクティビティ350でエラー検出のためのスキャンをすることは、参照セル内の情報を表す電圧レベル値が限界値内にとどまっているかどうかを決定するために、デバイスの参照セルにアクセスすることを含み得る。この例では、もし電圧レベル値が限界値の外にあれば(例えば、限界値を下回った又は限界値を超えた電圧レベル値)、情報中にエラーが生じ得る。実施形態によっては、参照セルは、
図2のメモリアレイ102のセル104のようなメモリアレイのセルの一部であり得る。実施形態によっては、
図1のメモリコントローラ103又はプロセッサ106のような、コントローラ又はプロセッサが(
図1のエラー訂正ユニット134のようなエラー訂正ユニットの代わりに)、情報中にエラーが生じているかを決定するために、メモリデバイス中の専用ハードウェア(例えば、参照セル)にアクセスし得る。
【0050】
アクティビティ360は、もしエラーが見つかればエラーを訂正し得る。例えば、アクティビティ360は、情報にエラーが存在するとき、ビットエラー量(生じ得る1以上のエラービット)を決定するために情報をチェックし得る。アクティビティ360は、次にビットエラー量がある選択値以上のときに、エラーを訂正し得る。
図1のエラー訂正ユニット134のような訂正ユニットは、訂正を実行し得る。実施形態によっては、訂正ユニットは、ビットエラー量が少なくとも1であるときに、エラーを訂正し得る。よって、このような実施形態では、見つかったエラービットはどれも訂正され得る。他の実施形態では、訂正ユニットは、あるビット数がスキャンされる毎にビットエラー量がある値を超えたときのみ、エラーを訂正し得る。スキャンされるビット数はセクタ中のビット数であり得る。例えば、訂正ユニットは、あるビット数がスキャンされる毎にビットエラー量が3を超えたときのみエラーを訂正し得る。
【0051】
アクティビティ370は、追跡情報をアップデートし得る。例えば、アクティビティ330で追跡された一つ以上の値は、アクティビティ350でエラー検出のためのスキャンが行われた後、初期値にリセットされ得る。例えば、あるブロックがエラー検出のためにスキャンされた後、そのブロック上で実行された読み取り動作の数は、初期値(例えば、ゼロ)にリセットされ得て、リセット後に、そのブロック上で実行される読み取り動作の数が選択値(例えば、値B)に少なくとも等しいときに、そのブロックに対してエラー検出のための別のスキャンが行われ得る。アクティビティ330によって追跡される別の値は、その別の値に基づいてエラー検出のためのスキャンが実行された後、リセットされ得る。アクティビティ370の後、方法300は、上述の他のアクティビティの一つ以上を繰り返し得る。例えば、方法300は、アクティビティ320から始めて、上述の他のアクティビティを繰り返し得る。
【0052】
方法300の個々のアクティビティは、示された順番又はある特定の順番で行われる必要はなかろう。あるアクティビティが繰り返され得るし、他のものは一度しか生じないことがあり得る。様々な実施形態は、
図3に示されているものより多い又は少ないアクティビティを有し得る。例えば、方法300が時間に基づくスキャニングを行うときには、方法300は、アクティビティ320、330、及び370の一つ以上を省略し得る。実施形態によっては、方法300は、上の
図1から
図2、並びに以下の
図4及び
図6を参照して記述されるアクティビティ又は動作を含み得る。
【0053】
図4は、エラーレートと
図2のメモリデバイス201の読み取り動作の数の間の関係を示すグラフである。
図4において、X及びNはメモリデバイス201上で実行された読み取り動作のある特定の数を表し得る。
図4のR1、R2、及びR3は、読み取り動作の数に関するエラーレートを表している。
図4に示されているように、エラーレートは、読み取り動作の数がX以下のときは、R1からR2に向かって線形的に増加し得る。読み取り動作の数がXより大きいと、エラーレートはR2からR3に向かって指数関数的に増加し得る。よって、
図4では、読み取り動作の数が少なくともXであるとき、エラーレートは比較的高い割合で増加する。従って、メモリデバイス201では、読み取り動作の数が少なくともXであるときにエラー検出のためのスキャンをすることは、読み取り動作の数がXより小さいときにエラー検出のためのスキャンをすることより経済的であり得て、それは読み取り動作の数がX以上であるときは、エラーを見付ける機会が著しく増加し得るからである。
【0054】
実施形態によっては、
図4中のXのような読み取り動作の数は、検査中に決定され得る。例えば、検査中に、数多くの読み取り動作がメモリデバイス201上で実行され得て、よって読み取り動作に対応するエラーレート(例えば、R1、R2、及びR3)が記録され得る。
図4中のXのような、読み取り動作の数は、エラーレートが著しい変化を示し始める点で決定され得る。例えば、
図4に示されているように、XはR2に対応する点で決定され得るが、それはR1、R2、及びR3を繋ぐ曲線は、R1とR2の間の傾きに対して、R2とR3の間の傾きにおいて著しい変化を示すからである。実施形態によっては、
読み取り動作の数Xは約1000である。実施形態によっては、読み取り動作の数は、約1000から約2000の範囲内にある。よって、実施形態によっては、メモリデバイス201のような、メモリデバイス中に記憶された情報の中のエラー検出のためのスキャンをすることは、読み取り動作の数(例えば、X)が少なくとも1000であるときに開始し得る。
【0055】
図5は、本発明の実施形態に従うネットワーク500を示している。ネットワーク500は、接続563を介して互いに通信するシステム561及び562を含み得る。接続563は有線接続又は無線接続を含み得る。実施形態によっては、接続563はインターネット接続を含み得る。
【0056】
システム561は、プロセッサ510、画像センサデバイス520、メモリデバイス525、メモリコントローラ530、グラフィックコントローラ540、回路モジュール545、入出力(I/O)コントローラ550、ディスプレイ552、キーボード554、ポインティングデバイス556、周辺デバイス558、及びシステム561のコンポーネント内で情報を転送するためのバス560を含み得る。システム561はまた、情報を無線で送信及び受信するためのアンテナ570を含み得る。システム561はまた、システム561の幾つかのコンポーネントがその上に配置され得る回路基板502を含み得る。実施形態によっては、システム561のコンポーネントの数は変わり得る。例えば、実施形態によっては、システム561は、ディスプレイ552、画像センサデバイス520、メモリデバイス525、及び回路モジュール545の一つ以上を省略し得る。システム561は、
図1のシステム100の実施形態を含み得る。
【0057】
プロセッサ510は、汎用プロセッサ、例えば、コンピュータ中に使用されるプロセッサを含み得る。プロセッサ510は、特定用途向け集積回路(ASIC)、例えば、携帯電話、又はデジタルカメラ若しくはカムコーダに用いられるプロセッサを含み得る。プロセッサ510は、シングルコアプロセッサ又はマルチコアプロセッサを含み得る。プロセッサ510は、一つ以上のプログラミングコマンドを実行し、情報を処理及び処理された情報を生成し得る。プロセッサ510によって処理される情報は、画像センサデバイス520又はメモリデバイス525によるものなど、システム561の他のコンポーネントによって提供されるデジタル出力情報を含み得る。
【0058】
画像センサデバイス520は、相補型金属酸化物半導体(CMOS)画像センサであってCMOSピクセルアレイを有するもの、又は電荷結合デバイス(CCD)画像センサであってCCDピクセルアレイを有するものを含み得る。
【0059】
メモリデバイス525は、揮発性メモリデバイス、不揮発性メモリデバイス、又はその両方の組み合わせを含み得る。例えば、メモリデバイス525は、動的ランダムアクセスメモリ(DRAM)デバイス、静的ランダムアクセスメモリ(SRAM)デバイス、NAND若しくはNORフラッシュメモリデバイスのようなフラッシュメモリデバイス、又はDRAM、SRAM、及びフラッシュメモリデバイスの組み合わせを含み得る。実施形態によっては、メモリデバイス525は、
図1から
図4を参照しながら上で記述されたメモリデバイス101又は201の一つ以上の実施形態を含み得る。
【0060】
ディスプレイ552は、アナログディスプレイ、又はデジタルディスプレイを含み得る。ディスプレイ552は、液晶ディスプレイ(LCD)、又はプラズマディスプレイを含み得る。ディスプレイ552は、他のコンポーネントから情報を受け得る。例えば、ディスプレイ552は、画像センサデバイス520、メモリデバイス525、グラフィックコントローラ540及びプロセッサ510の一つ以上によって処理された情報を受け、テキスト及び画像を含む情報を表示し得る。
【0061】
回路モジュール545は、車両の回路モジュールを含み得る。回路モジュール545は他のコンポーネントから情報を受け、車両の一つ以上のサブシステムを起動し得る。例えば、回路モジュール545は、画像センサデバイス520、メモリデバイス525、及びプロセッサ510の一つ以上によって処理された情報を受け、車両のエアバッグシステム、車両セキュリティアラーム、及び車両の障害物警報システムの一つ以上を起動し得る。
【0062】
図500に示されているように、システム561は、マシン読み取り可能メディア571を含み得る。システム562は、マシン読み取り可能メディア572を含み得る。マシン読み取り可能メディア571及び572のそれぞれは、メモリ、例えば取り外し可能なストレージメディア、及び電気的、光学的、又は電磁気的伝導体を含むいかなるメモリを含み得る。
【0063】
マシン読み取り可能メディア571及び572のそれぞれは、実行されると、結果として
図1から
図5に関連して本明細書中で記述された一つ以上のアクティビティを機械(例えば、システム561のコンポーネント)が実行することとなる付随情報(例えば、コンピュータ又はソフトウェアプログラム命令及び/又はデータ)を、その上に含み得る。
【0064】
本開示の内容を読み、理解すると、当業者によっては、ソフトウェアプログラム中で定義された機能を実行するために、コンピュータに基づくシステム中のコンピュータ読み取り可能なメディアからソフトウェアプログラムがローンチされ得る方法を理解するだろう。当業者によってはさらに、本明細書中で記述されているアクティビティを含む方法を実装し、実行するように設計された一つ以上のソフトウェアプログラムを生成するのに様々なプログラミング言語が用いられ得ることを理解だろう。プログラムは、JavaまたはC++のようなオブジェクト指向言語を用いるオブジェクト指向フォーマットで構築され得る。あるいは、プログラムはアセンブリ又はCのような手続き型言語を用いる手続き指向フォーマットで構築され得る。ソフトウェアコンポーネントは、リモートプロシージャコールを含む、アプリケーションプログラムインターフェイス又はプロセス間通信技術のような、当業者にはよく知られている幾つかの仕組みのいずれかを用いて通信し得る。様々な実施形態の技法は、どの特定のプログラミング言語又は環境にも限定されない。
【0065】
システム100、561、及び562並びにメモリデバイス201、及び525などの、本明細書中のシステム及び装置の実例は、様々な実施形態の構造の一般的な理解を与えるために意図されたもので、本明細書中で記述された構造を利用し得る装置及びシステムの要素及び特徴の全ての完全な記述としては意図されていない。
【0066】
様々な実施形態の新規な装置、システム、及び方法は、高速コンピュータ中で用いられる電子回路、通信及び信号処理回路、シングル若しくはマルチプロセッサモジュール、シングル若しくはマルチ埋め込みプロセッサ、マルチコアプロセッサ、データスイッチ、並びに、マルチレイヤ、マルチチップモジュールを含む特定用途モジュールを含み、これらの中に含まれ、又はこれらの中で使用され得る。このような装置及びシステムはさらに、テレビ、携帯電話、パーソナルコンピュータ(例えば、ラップトップコンピュータ、デスクトップコンピュータ、ハンドヘルドコンピュータ、タブレットコンピュータ、他)、ワークステーション、ラジオ、ビデオプレーヤー、オーディオプレーヤー(例えば、MP3(ムービングピクチャエキスパートグループ、オーディオレイヤー3)プレーヤー)、車両、医療デバイス(例えば、心臓モニタ、血圧モニタ、他)、セットトップボックス、及びその他のような様々な電子システムの内部のサブコンポーネントとして含まれ得る。
【0067】
上の記述及び図面は、当業者が本発明の実施形態を実施することが可能となるように、本発明のいくつかの実施形態を示している。他の実施形態は、構造的、論理的、電気的、プロセスの、及び他の変更を組み込み得る。図面では、類似の特徴又は類似の番号は、いくつかの図面を通じて、実質的に同様の特徴を記述している。例は単に、可能な変形を代表しているに過ぎない。いくつかの実施形態の一部及び特徴は、他のものに含まれ得るし、又は置き換わり得る。上記記載を読み、理解すれば、多くの他の実施形態は当業者には明らかであろう。従って、本発明の様々な実施形態の範囲は、添付のクレームに、それらのクレームが付与する均等物の全範囲を合わせたものによって決定される。
【0068】
概要は読者が技術的開示の性質及び要旨を素早く確かめることが出来ることを要求する米国特許法施行規則(37C.F.R.)第1.72(b)条に従うように、本概要は書かれている。概要はクレームの範囲又は意味の解釈又は限定に用いられないという理解と共に提示されている。