(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-08
(45)【発行日】2023-12-18
(54)【発明の名称】データ検証回路を有するデータ記憶デバイス
(51)【国際特許分類】
G06F 3/06 20060101AFI20231211BHJP
G06F 12/00 20060101ALI20231211BHJP
G06F 12/06 20060101ALI20231211BHJP
G06F 11/30 20060101ALI20231211BHJP
【FI】
G06F3/06 305A
G06F12/00 597U
G06F12/06 550A
G06F11/30 140N
G06F11/30 151
【外国語出願】
(21)【出願番号】P 2022083481
(22)【出願日】2022-05-23
【審査請求日】2022-05-27
(32)【優先日】2021-08-06
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】504056130
【氏名又は名称】ウェスタン デジタル テクノロジーズ インコーポレーテッド
(74)【代理人】
【識別番号】100207837
【氏名又は名称】小松原 寿美
(72)【発明者】
【氏名】リネン・ダニエル
(72)【発明者】
【氏名】サンゴイ・アシシュ
(72)【発明者】
【氏名】ペリヤナン・クリバカラン
(72)【発明者】
【氏名】ハーン・ユダ ガムリエル
【審査官】松平 英
(56)【参考文献】
【文献】特表2008-535043(JP,A)
【文献】特開2016-126738(JP,A)
【文献】特表2008-500626(JP,A)
【文献】米国特許出願公開第2005/0135367(US,A1)
【文献】米国特許出願公開第2014/0115278(US,A1)
【文献】米国特許出願公開第2020/0042341(US,A1)
【文献】米国特許出願公開第2006/0107184(US,A1)
【文献】米国特許出願公開第2013/0246650(US,A1)
【文献】米国特許出願公開第2016/0139837(US,A1)
【文献】米国特許出願公開第2008/0281997(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/06-3/08
11/07
11/28-11/36
12/00-12/128
13/16-13/18
(57)【特許請求の範囲】
【請求項1】
データ記憶デバイスであって、
コントローラを含む不揮発性メモリデバイスと、
複数のメモリダイを含むメモリブロックと、
データ検証回路と、を備え、前記データ検証回路が、
前記コントローラからメモリアクセスコマンドを受信することと、
前記メモリアクセスコマンドに基づいて、メモリアクセス動作を実行することと、
前記メモリアクセス動作中に転送されるバイト
の数を判定することと、
前記転送されるバイト
の数が所定のバイト数に等しいかどうかを判定すること
であって、前記所定のバイト数が、前記メモリアクセスコマンドに関連付けられた、要求されたデータサイズに基づくものである、判定することと、
前記転送されるバイト
の数が前記所定のバイト数に等しくないと判定することに応答して、
転送エラーの発生を示す転送ステータス失敗ビットを設定することと、を行うように構成されている、データ記憶デバイス。
【請求項2】
前記メモリアクセス動作が、読み取り動作である、請求項1に記載のデータ記憶デバイス。
【請求項3】
前記データ検証回路が、
前記転送されるバイト
の数が前記所定のバイト数に等しくないと判定することに応答して、前記転送されるバイトに第2の数の追加のバイトを付加するように更に構成されており、前記第2の
数が、前記所定のバイト数と前記転送されるバイト
の数との間の差に等しい、請求項2に記載のデータ記憶デバイス。
【請求項4】
前記第2の数の追加のバイトはランダムに生成されるバイトである、請求項3に記載のデータ記憶デバイス。
【請求項5】
前記メモリアクセス動作が、書き込み動作である、請求項1に記載のデータ記憶デバイス。
【請求項6】
前記データ検証回路が、
前記転送されるバイトを前記メモリダイのうちの1つ以上内のアレイに書き込むためのコミット動作コマンドを発行することと、
前記転送ステータス失敗ビットが設定されているかどうかを判定することと、
前記転送ステータス失敗ビットが設定されていると判定することに基づいて、前記書き込み動作における失敗の指標を生成することと、を行うように更に構成されている、請求項
5に記載のデータ記憶デバイス。
【請求項7】
前記メモリブロックが、前記失敗
の指標を前記コントローラに送信するように更に構成されている、請求項
6に記載のデータ記憶デバイス。
【請求項8】
前記データ検証回路が、前記メモリブロックの一部である、請求項1に記載のデータ記憶デバイス。
【請求項9】
不揮発性メモリデバイスに結合されたコントローラを有するデータ記憶デバイスによって実行される方法であって、前記方法が、
外部デバイスからメモリアクセスコマンドを受信することと、
前記メモリアクセスコマンドに基づいて、メモリアクセス動作を実行することと、
前記メモリアクセス動作中に前記メモリデバイスに転送されるバイト
の数を判定することと、
前記転送されるバイト
の数が所定のバイト数に等しいかどうかを判定すること
であって、前記所定のバイト数が、前記メモリアクセスコマンドに関連付けられた、要求されたデータサイズに基づくものである、判定することと、
前記転送されるバイト
の数が前記所定のバイト数に等しくないと判定することに応答して、
転送エラーの発生を示す転送ステータス失敗ビットを設定することと、を含む、方法。
【請求項10】
前記メモリアクセス動作が、読み取り動作である、請求項9に記載の方法。
【請求項11】
前記転送されるバイト
の数が前記所定のバイト数に等しくないと判定することに応答して、前記転送されるバイトに追加のバイ
トを付加することを更に含み、前記追加のバイト
の数が、前記所定のバイト数と前記転送されるバイト
の数との間の差に等しい、請求項10に記載の方法。
【請求項12】
前記追加のバイトはランダムに生成されるバイトである、請求項11に記載の方法。
【請求項13】
前記メモリアクセス動作が、書き込み動作である、請求項9に記載の方法。
【請求項14】
前記
転送されるバイトを1つ以上のメモリダイ内のアレイに書き込むためのコミット動作コマンドを発行することと、
前記転送ステータス失敗ビットが設定されているかどうかを判定することと、
前記転送ステータス失敗ビットが設定されていると判定することに基づいて、前記書き込み動作における失敗の指標を生成することと、を更に含む、請求項
13に記載の方法。
【請求項15】
前記指標を前記コントローラのメモリに記憶することを更に含む、請求項
14に記載の方法。
【請求項16】
装置であって、
コントローラからメモリアクセスコマンドを受信するための手段と、
前記メモリアクセスコマンドに基づいて、メモリアクセス動作を実行するための手段と、
前記メモリアクセス動作中に転送されるバイト
の数を判定するための手段と、
前記転送されるバイト
の数が所定のバイト数に等しいかどうかを判定するための手段
であって、前記所定のバイト数が、前記メモリアクセスコマンドに関連付けられた、要求されたデータサイズに基づくものである、判定するための手段と、
前記転送されるバイト
の数が前記所定のバイト数に等しくないと判定することに応答して、
転送エラーの発生を示す転送ステータス失敗ビットを設定するための手段と、を備える、装置。
【請求項17】
前記メモリアクセス動作が、読み取り動作である、請求項16に記載の装置。
【請求項18】
前記転送されるバイト
の数が前記所定のバイト数に等しくないと判定することに応答して、転送されるバイトに第2の数の追加のバイトを付加するための手段を更に備え、前記第2の
数が、前記所定のバイト数と前記転送されるバイト
の数との間の差に等しい、請求項17に記載の装置。
【請求項19】
前記第2の数の追加のバイトはランダムに生成されるバイトである、請求項18に記載の装置。
【請求項20】
前記メモリアクセス動作が、書き込み動作であり、前記装置が、
前記転送されるバイトを1つ以上のメモリダイ内のアレイに書き込むためのコミット動作コマンドを発行するための手段と、
前記転送ステータス失敗ビットが設定されているかどうかを判定するための手段と、
前記転送ステータス失敗ビットが設定されていると判定することに基づいて、前記書き込み動作における失敗の指標を生成するための手段と、を更に備える、請求項16に記載の装置。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、概して、データ記憶デバイスに関し、より具体的には、データ検証回路を有するデータ記憶デバイスに関する。
【背景技術】
【0002】
メモリデバイスは、一般に、メモリから読み取られるか又はメモリに書き込まれるデータが正確であることを確実にするための様々なデータ検査アルゴリズム及び/又は回路を含む。しかしながら、場合によっては、読み取り又は書き込み動作は、データが予想されるバイト数を含むことができないメモリデバイスに/からデータを転送し、潜在的にメモリデバイスの障害をもたらす可能性がある。例えば、クロックパルスは、コントローラ及び/又はメモリ読み取り/書き込み回路によって見逃され得、その結果、データは、1つ以上のバイトだけオフになるようにシフトされる(本明細書では「バイトシフト」と称される)。多くの場合、これらのシフトされた/見逃されたバイトは、メモリコントローラ又は読み取り/書き込み回路によって検出されず、したがって、メモリデバイスによって処理されることが不可能な障害を生じ得る。例えば、バイトシフト/見逃し障害は、ユーザがメモリデバイスに対する電力をサイクルすることを必要とし得るか、又は場合によっては、メモリデバイスの完全な故障をもたらし得る。
【発明の概要】
【0003】
エラー検出及び訂正回路は、一般に、バイトシフトの影響(例えば、所与の動作のための不適切な転送バイト数)を検出又は軽減しない。所与の動作(例えば、読み取り動作又は書き込み動作)で不適切なバイト数が転送されたことを検出することにより、データ検証回路を使用するメモリデバイスは、不適切なバイト数が転送されることから生じる障害を防止するための様々なアクションを実行することができる。更に、データ検証回路を使用してバイトシフトが発生したと判定することによって、1つ以上のステータスビット又は他の指標をメモリコントローラ、ユーザなどに提供することができる。バイトシフトイベントを検出及び緩和することにより、読み取り及び書き込み性能、並びに一般的なメモリデバイスの性能及び寿命を改善することできる。
【0004】
本開示の一実施形態は、コントローラ及びメモリブロックを含む不揮発性メモリデバイスを含む、データ記憶デバイスを含む。メモリブロックは、いくつかのメモリダイ及びデータ検証回路を含む。データ検証回路は、コントローラからメモリアクセスコマンドを受信し、かつメモリアクセスコマンドに基づいて、メモリアクセス動作を実行するように構成されている。データ検証回路は、メモリアクセス動作中に転送されるバイト数を判定し、バイト数が所定のバイト数に等しいかどうかを判定し、バイト数が所定のバイト数に等しくないと判定したことに応答して、バイト数が所定のバイト数に等しくないことを示す転送ステータス失敗ビットを設定するように更に構成されている。
【0005】
本開示の別の実施形態は、不揮発性メモリデバイスに結合されたコントローラを有するデータ記憶デバイスによって実行される方法を含む。この方法は、外部デバイスからメモリアクセスコマンドを受信することと、メモリアクセスコマンドに基づいて、メモリアクセス動作を実行することと、を含む。この方法はまた、メモリアクセス動作中に転送されるバイト数を判定することと、バイト数が所定のバイト数に等しいかどうかを判定することと、を含む。バイト数が所定のバイト数に等しくないと判定することに応答して、バイト数が所定のバイト数に等しくないことを示す転送ステータス失敗ビットを設定する。
【0006】
本開示の別の実施形態は、コントローラからメモリアクセスコマンドを受信するための手段と、メモリアクセスコマンドに基づいて、メモリアクセス動作を実行するための手段と、を含む装置を含む。この装置は、メモリアクセス動作中に転送されるバイト数を判定するための手段と、バイト数が所定のバイト数に等しいかどうかを判定するための手段と、を更に含む。この装置は、バイト数が所定のバイト数に等しくないと判定することに応答して、バイト数が所定のバイト数に等しくないことを示す転送ステータスビットを設定するための手段を更に含む。
【0007】
本開示の様々な態様は、データ検証回路を有するデータ記憶デバイスを提供する。本開示は、ソフトウェア、ファームウェア、又はそれらの組み合わせによって制御されるハードウェア又は回路を含む様々な形態で具現化することができる。上述の概要は、本開示の様々な態様の一般的な概念を提供することのみを意図したものであり、いかなる方法でも本開示の範囲を限定するものではない。
【図面の簡単な説明】
【0008】
【
図1】いくつかの実施形態による、データ記憶デバイスを含むシステムの一実施例を示すブロック図である。
【0009】
【
図2】いくつかの実施形態による、読み取り動作中のバイトシフト緩和プロセスを示すフローチャートである。
【0010】
【
図3】いくつかの実施形態による、書き込み動作中のバイトシフト緩和プロセスを示すフローチャートである。
【発明を実施するための形態】
【0011】
以下の説明では、本開示の1つ以上の態様の理解を提供するために、データ記憶デバイス構成、コントローラ動作などのような多数の詳細が記載される。これらの具体的な詳細は単なる例示であり、本出願の範囲を限定することを意図するものではないことは、当業者には容易に明らかであろう。具体的には、コントローラに関連付けられた機能は、ハードウェア(例えば、アナログ回路又はデジタル回路)、ハードウェアとソフトウェアとの組み合わせ(例えば、プロセッサ若しくは制御回路によって実行される非一時的コンピュータ可読媒体に記憶されたプログラムコード又はファームウェア)、又は任意の他の好適な手段によって実行することができる。以下の説明は、本開示の様々な態様の一般的な概念を提供することのみを意図するものであり、いかなる方法でも本開示の範囲を限定するものではない。更に、本開示は、NANDフラッシュに言及するが、本明細書で考察する概念は、NOR、PCM(「相変化メモリ」)、ReRAM、MRAM、DRAMなどのような他のタイプの固体メモリに適用可能であることが、当業者には明らかであろう。
【0012】
図1は、本開示のいくつかの実施形態による、バイトシフト検出及び緩和機能を含むシステム100の一実施例のブロック図である。
図1の実施例では、システム100は、ホストデバイス108と通信するデータ記憶デバイス102を含む。データ記憶デバイス102は、コントローラ106に結合されたメモリデバイス104(例えば、不揮発性メモリ)を含む。
【0013】
コントローラ106によって提供される構造的特徴及び機能的特徴の一実施例を
図1に示す。しかしながら、コントローラ106は、
図1のコントローラ106によって提供される構造的特徴及び機能的特徴に限定されない。コントローラ106は、
図1に示されていない、少数又は追加の構造的特徴及び機能的特徴を含み得る。
【0014】
データ記憶デバイス102及びホストデバイス108は、バス接続又はワイヤレス接続などの接続(例えば、通信経路110)を介して動作可能に結合され得る。いくつかの実施例では、データ記憶デバイス102は、ホストデバイス108内に埋め込まれ得る。代替的に、他の実施例では、データ記憶デバイス102は、ホストデバイス108から取り外し可能であり得る(すなわち、ホストデバイス108に「取り外し可能に」結合される)。一実施例として、データ記憶デバイス102は、取り外し可能なユニバーサルシリアルバス(universal serial bus、USB)構成によって、ホストデバイス108に取り外し可能に結合され得る。いくつかの実装態様では、データ記憶デバイス102は、ソリッドステートドライブ(solid state drive、SSD)を含むか、又はそれに対応し得るが、このSSDは、埋め込みストレージドライブ(例えば、モバイル埋め込みストレージドライブ)、エンタープライズ記憶ドライブ(enterprise storage drive、ESD)、クライアントストレージデバイス、クラウドストレージドライブ、又は他の好適なストレージドライブとして使用され得る。
【0015】
データ記憶デバイス102は、有線通信経路及び/又はワイヤレス通信経路などの通信経路110を使用してホストデバイス108に結合されるように構成され得る。例えば、データ記憶デバイス102は、インターフェース120がホストデバイス108に通信可能に結合されたときなど、データ記憶デバイス102とホストデバイス108との間の通信経路110を使用した通信を可能にするインターフェース120(例えば、ホストインターフェース)を含み得る。
【0016】
ホストデバイス108は、プロセッサ及びメモリを含み得る。メモリは、プロセッサによって実行可能であり得るデータ及び/又は命令を記憶するように構成され得る。メモリは、単一のメモリであり得るか、又は1つ以上の不揮発性メモリ、1つ以上の揮発性メモリ、若しくはこれらの組み合わせなどの1つ以上のメモリを含み得る。ホストデバイス108は、データ記憶デバイス102のメモリデバイス104へのデータの消去、データの読み取り、又はデータの書き込みのための1つ以上の要求など、1つ以上のコマンドをデータ記憶デバイス102に発行し得る。例えば、ホストデバイス108は、メモリデバイス104に記憶されるユーザデータ132などのデータを提供するか、又はメモリデバイス104からデータを読み取られるデータを要求するように構成され得る。ホストデバイス108は、モバイルスマートフォン、音楽プレーヤ、ビデオプレーヤ、ゲーム機、電子書籍リーダ、パーソナルデジタルアシスタント(personal digital assistant、PDA)、ラップトップコンピュータ若しくはノートブックコンピュータなどのコンピュータ、これらの任意の組み合わせ、又は他の好適な電子デバイスを含み得る。
【0017】
ホストデバイス108は、メモリデバイス104からの読み取り、及びメモリデバイス104への書き込みを可能にするメモリインターフェースを使用して通信する。いくつかの実施例では、ホストデバイス108は、ユニバーサルフラッシュストレージ(Universal Flash Storage、UFS)ホストコントローラインターフェース仕様などの工業規格に準拠して動作し得る。他の実施例では、ホストデバイス108は、セキュアデジタル(Secure Digital、SD)ホストコントローラ仕様又は他の好適な工業規格などの1つ以上の他の仕様に準拠して動作し得る。ホストデバイス108はまた、任意の他の好適な通信プロトコルによって、メモリデバイス104と通信し得る。
【0018】
データ記憶デバイス102のメモリデバイス104は、不揮発性メモリ(例えば、NAND、NOR、BiCSファミリーのメモリ、又は他の好適なメモリ)を含み得る。いくつかの実施例では、メモリデバイス104は、任意のタイプのフラッシュメモリとし得る。例えば、メモリデバイス104は、二次元(2D)メモリ又は三次元(3D)フラッシュメモリとし得る。メモリデバイス104は、1つ以上のメモリダイ103を含み得る。1つ以上のメモリダイ103の各々は、1つ以上のメモリブロック112(例えば、1つ以上の消去ブロック)を含み得る。各メモリブロック112は、記憶素子107A~107Nの代表的なグループなどの記憶素子の1つ以上のグループを含み得る。記憶素子107A~107Nのグループは、ワード線として構成され得る。記憶素子107A~107Nのグループは、それぞれ代表的な記憶素子109A及び109Nなどの複数の記憶素子(例えば、本明細書で「ストリング」又は「アレイ」と称されるメモリセル)を含み得る。
【0019】
メモリデバイス104は、読み取り/書き込み回路140、読み取りデータ検証回路、書き込みデータ検証回路144、及びエラー訂正回路146などのサポート回路を含み得る。単一の構成要素として示されているが、読み取り/書き込み回路140は、読み取り回路及び書き込み回路などのメモリデバイス104の別個の構成要素に分割され得る。読み取り/書き込み回路140は、メモリデバイス104の1つ以上のメモリダイ103の外部にあり得る。代替的に、1つ以上の個々のメモリダイ103は、他のメモリダイのいずれかにおける任意の他の読み取り及び/又は書き込み動作とは独立して、個々のメモリダイ内の記憶素子から読み取り及び/又は記憶素子に書き込みするように動作可能である、対応する読み取り/書き込み回路140を含み得る。例えば、読み取り/書き込み回路140は、揮発性メモリへの初期書き込み、アレイコミット機能、及び所与の用途に対して必要とされるような他の機能などの様々な読み取り/書き込み動作を実行するように構成され得る。メモリデバイス104は、1つ以上のラッチ(例えば、ラッチ113、115、及び117を含む一組のラッチ111)を更に含み得る。
【0020】
読み取りデータ検証回路142及び書き込みデータ検証回路144は、別個の回路として示されているが、いくつかの実施形態では、それらは、単一のデータ検証回路に組み合わされ得る。他の実施例では、読み取りデータ検証回路142及び書き込みデータ検証回路144は、読み取り/書き込み回路140内に組み込まれる。他の実施例では、読み取りデータ検証回路142及び書き込み検証回路144は、コントローラ106内に組み込まれ得る。読み取りデータ検証回路142及び書き込みデータ検証回路144は、読み取り及び/又は書き込み動作に関連付けられたデータが有効であること、すなわち、予想されるバイト数を含むことを確実にするために、1つ以上のデータ検証動作を実行するように構成され得る。これらの検証動作は、以下でより詳細に説明される。エラー訂正回路146は、周期的冗長検査(cyclic redundancy check、「CRC」)などの1つ以上のエラー訂正動作を実行して、読み取り/書き込み回路140によって処理されたデータの内容を検証するように構成されている。
【0021】
コントローラ106は、バス105、インターフェース(例えば、インターフェース回路)、別の構造、又はそれらの組み合わせを使用して、メモリデバイス104(例えば、1つ以上のメモリダイ103)に結合される。例えば、バス105は、コントローラ106が、1つ以上のメモリダイ103の各々と、他のメモリダイ103との通信と並列かつ独立して通信することを可能にするために、複数の別個のチャネルを含み得る。
【0022】
コントローラ106は、ホストデバイス108からデータ及び命令を受信し、ホストデバイス108にデータを送信するように構成されている。例えば、コントローラ106は、インターフェース120を使用してホストデバイス108にデータを送信することができ、コントローラ106は、インターフェース120を使用してホストデバイス108からデータを受信し得る。コントローラ106は、データ及びコマンド(例えば、メモリデバイス104のメモリブロックのサイクル動作であり得るメモリ動作136)をメモリデバイス104に送信し、メモリデバイス104からデータを受信するように構成されている。例えば、コントローラ106は、データ及びプログラム又は書き込みコマンドを送信して、メモリデバイス104にデータをメモリデバイス104の指定されたアドレスに記憶させるように構成されている。書き込みコマンドは、データを記憶することになるメモリデバイス104の一部分の物理アドレス(例えば、メモリデバイス104のワード線の物理アドレス)、並びに書き込まれることになるデータのサイズ(例えば2k、4kなど)を指定し得る。
【0023】
コントローラ106は、メモリデバイス104に読み取りコマンドを送信して、メモリデバイス104の指定されたアドレスからデータにアクセスするように構成されている。読み取りコマンドは、メモリデバイス104の領域の物理アドレス(例えば、メモリデバイス104のワード線の物理アドレス)、並びに読み取られることになるデータのサイズ(例えば2k、4kなど)を指定し得る。コントローラ106はまた、バックグラウンドスキャン動作、ガベージコレクション動作、及び/又は摩耗平準化動作、又は他の好適なメモリ動作に関連付けられたメモリデバイス104にデータ及びコマンドを送信するように構成され得る。
【0024】
コントローラ106は、プロセッサ124、メモリ126、及び他の関連回路を含み得る。メモリ126は、プロセッサ124によって実行可能であり得るデータ及び/又は命令を記憶するように構成され得る。メモリ126は、アプリケーション、プログラムなどの中でも、データ転送エラーアプリケーション130を含むことができる。データ転送エラーアプリケーション130は、プロセッサ124によって実行可能なハードウェア回路又は命令であり得る。いくつかの実施例では、メモリ126に記憶されているように示されているが、データ転送エラーアプリケーション130は、メモリデバイス104内の回路として構成され得る。
【0025】
データ転送エラーアプリケーション130は、1つ以上のデータ転送エラー動作を実行するように構成され得る。例えば、データ転送エラーアプリケーション130は、後のレビューのためにデータ転送エラーを記憶することができる。次に、記憶された転送エラーは、更なる分析のために、1人以上のユーザ又は1つ以上の監視コントローラによって後でアクセスされ得る。
【0026】
ここで
図2を参照すると、いくつかの実施形態による、読み取り動作中のバイトシフト緩和プロセス200を示すフローチャートが示されている。一実施形態では、バイトシフト緩和プロセス200は、読み取りデータ検証回路142によって実行される。いくつかの実施形態では、バイトシフト緩和プロセス200は、読み取り/書き込み回路140と組み合わせて読み取りデータ検証回路142によって実行される。更に他の実施形態では、読み取り/書き込み回路140は、バイトシフト緩和プロセス200を実行することができる。
【0027】
ブロック202において、読み取り要求がメモリ104で受信される。一実施例では、読み取り要求は、コントローラ106からメモリ104に送信され得る。コントローラ106は、上述のように、ホストデバイス108から読み取り要求を受信することができる。ブロック204において、読み取り動作が実行される。一実施形態では、読み取り動作は、要求されたデータをメモリ104から読み取る。一実施形態では、読み取り/書き込み回路140は、読み取り要求を容易にし、メモリダイ103内のデータにアクセスする。いくつかの実施形態では、データは、メモリダイ103からラッチ111内に読み取られ、次いで、コントローラ106によって読み取られ得る。
【0028】
ブロック206において、読み取り動作が停止したかどうかに関して判定が行われる。いくつかの実施形態では、読み取り動作は、読み取り動作に関連付けられたバイト数がアクセスされた(例えば、読み取られた)ときに停止する。いくつかの実施形態では、読み取り動作に関連付けられた読み取り持続時間タイマにアクセスして、読み取り動作が停止したか、又は停止したはずであるかどうかを判定する。例えば、読み取り持続時間タイマが期限切れになると、読み取り動作が停止されると見なされる。一実施形態では、読み取り持続時間タイマは、読み取り/書き込み回路140内にある。一実施形態では、読み取り持続時間タイマは、所与の読み取りコマンドに関連付けられた時間値である。例えば、時間値は、読み取り要求で要求されたデータのサイズに基づくことができる。時間値は、所与のデータ記憶デバイス102に対して所与の読み取り動作を実行するのに必要とされる時間であり得る。更に、10%などの追加の遅延を時間値に追加して、関連付けられた読み取り動作を実行する際の遅延を可能にすることができる。更に、10%超又は10%未満の時間遅延値もまた、所与の用途に必要とされるように企図される。一実施形態では、時間値は、10ナノ秒~50ナノ秒の値を有し得る。しかしながら、10ナノ秒未満及び50ナノ秒超の値も企図される。いくつかの実施形態では、時間遅延値は、メモリデバイスのタイプに依存する。一実施形態では、コントローラ106などのデバイスは、以下に説明するようにデータカウントを検証することができるように、ある期間(例えば、読み取り持続時間タイマ)の要求読み取り動作を停止する。更に別の実施例では、読み取りが完了すると、1つ以上の読み取り完了ビットが設定され得る。例えば、読み取り/書き込み回路140は、読み取り動作が停止するときに読み取り完了ビットを設定することができる。
【0029】
読み取り動作が停止していないと判定することに応答して、読み取り動作は、ブロック204において継続される。読み取り動作が停止したと判定することに応答して、ブロック208において読み取りデータの量がカウントされる。一実施形態では、読み取り動作に関連付けられたバイト数が判定及び/又はカウントされる。一実施形態では、読み取りデータ検証回路142は、読み取りデータの量を判定する。しかしながら、他の実施例では、読み取り/書き込み回路140が、転送された読み取りデータの量を判定する。要求された読み取り動作について予想されるデータの量は、読み取り要求に基づくことができる。例えば、読み取り要求は、4,096バイトのデータ(例えば、4kデータ読み取り)を要求し得る。1k、2k、8kなどの他のデータ読み取りサイズも、読み取り要求に関連付けられ得る。
【0030】
ブロック210において、転送されるデータが所定の量のデータに等しいかどうかに関して判定が行われる。一実施形態では、読み取りデータ検証回路142は、検証を実行する。しかしながら、他の実施形態では、読み取り/書き込み回路140が、検証を実行する。転送されるデータの量が所定の量のデータに等しい場合、データは、所定の量のデータに等しいと判定される。例えば、上記のように、4kデータ読み取りは、4,096に等しい予想される(例えば、所定の)数のバイトを有する。したがって、4,096バイトが読み取り動作中に転送されると判定される場合、転送されるデータは、所定の値に等しいと判定される。しかしながら、4,095バイトが読み取り動作中に転送されたと判定される場合、転送されるデータは、所定の値に等しくないと判定される。いくつかの実施例では、所定のバイト数は、所与のデータ記憶デバイス102に固有であり得る。例えば、4kの転送は、一般に4,096バイトのデータを含むが、特定のデータ記憶デバイス及び関連付けられたプロトコルは、エラー訂正ビット、アドレスビット、及び/又は所与の用途に対して必要とされるような他の情報を考慮するためのより多くのデータを含み得る。したがって、データ記憶デバイス102は、所定のバイト数の定義された値を有し得る。
【0031】
転送されるデータが所定の値に等しいと判定することに応答して、読み取り動作は、ブロック212において完了する。転送されるデータが所定の値に等しくないと判定することに応答して、ブロック214において転送失敗ビットが設定される。転送失敗ビットは、データ転送エラーアプリケーション130に記憶され得る。しかしながら、他の実施形態では、転送失敗ビットは、読み取り/書き込み回路140及び/又は読み取りデータ検証回路142に記憶され得る。
【0032】
ブロック216において、転送されるデータの量が所定の値に等しくなることを確実にするために、転送されるデータに追加のデータが追加される。例えば、4k読み取り要求に対する転送されるデータがわずか4,095バイトに等しい場合、転送されるデータが所定のバイト数を含むことを確実にするために、追加の1バイトが、転送されるデータに付加され得る。1バイトを超えるバイトは、転送されるデータが所定のバイト数を含むことを確実にするために、必要に応じて、転送されるデータに付加され得る。一実施形態では、読み取りデータ検証回路142は、必要とされる追加のデータを転送されるデータに追加する。他の実施形態では、読み取り/書き込み回路140が、必要とされる追加のデータを転送されるデータに追加する。一実施形態では、付加されるデータは常に同じであってもよく、例えば、論理1又は論理0であってもよい。しかしながら、他の実施例では、付加されるデータは、大気ノイズに基づいて生成されたデータなど、ランダムであり得る。一実施例では、クロック信号は、必要とされる数の見逃されたバイトに等しくトグルされ得、ランダムデータが、転送されるデータの残りのバイトを満たすことを可能にする。どんなデータが付加されるかに関係なく、ブロック214における転送失敗ビットの設定は、データが無効であると理解されることを確実にする。追加のデータが、転送されるデータに追加されると、ブロック212において読み取り動作が完了する。
【0033】
見逃されたデータを転送されるデータに付加することにより、転送されるデータは、所定のデータ値(例えば、許容可能なバイト数)を含まされる。上記のように、バイトシフト(例えば、許容不能なデータバイト値)は、データ記憶デバイス102などのデータ記憶デバイスの故障又は「ブリッキング」をもたらし得る。いくつかの事例では、データ記憶デバイス102は、電力リサイクルによってリセットされ得るが、他の事例では、データ記憶デバイス102、又はその一部分は、修復可能でない場合がある。バイトシフトは、正しいバイト数が決して受信されないため、1つ以上の要求されたコマンドを完了できないものにする可能性がある。これにより、1つ以上のウォッチドッグルーチンが失敗を示し、それによってデータ記憶デバイス102を故障させる可能性がある。
【0034】
一般に、バイトシフトは、データ記憶デバイスでは通例の発生ではない。しかしながら、上記のように、バイトシフトの発生は、実質的な、場合によっては不可逆的な、データ記憶デバイスへの損傷を引き起こす可能性がある。バイトシフトは、ワード線の銅トレースの劣化、シリコンマトリックスの破壊、データ記憶デバイス102内の電圧不安定性、データ記憶デバイスの年齢、アルファ粒子劣化などに起因して、デバイスがエージングするにつれて発生し得る。更に、コントローラと1つ以上のメモリとの間のタイミング問題は、見逃されたクロックパルスを生じ、これは、バイトシフトをもたらす可能性がある。
【0035】
ここで
図3を参照すると、いくつかの実施形態による、書き込み動作中のバイトシフト検証プロセス300を示すフローチャートが示されている。一実施形態では、バイトシフト検証プロセス300は、書き込みデータ検証回路144によって実行される。いくつかの実施形態では、バイトシフト検証は、読み取り/書き込み回路140と組み合わせて書き込みデータ検証回路144によって実行される。更に他の実施形態では、読み取り/書き込み回路140は、バイトシフト検証プロセス200を実行することができる。
【0036】
ブロック302において、書き込み要求は、メモリ104で受信される。一実施例では、書き込み要求は、コントローラ106からメモリ104に送信され得る。コントローラ106は、上述のように、ホストデバイス108から書き込み要求を受信することができる。ブロック304において、要求されたデータは、揮発性ラッチ111など、メモリの揮発性部分に書き込まれる。一実施形態では、読み取り/書き込み回路140は、書き込み要求を容易にし、データを揮発性ラッチ111に転送する。
【0037】
ブロック306において、受信されたデータの量(例えば、受信されたバイト)を所定の値と比較する。例えば、書き込み要求が4k書き込み要求である場合、所定の値は、4,096バイトであり得る。2k書き込み要求では、所定の値は、2,048バイトであり得る。全てのサイズの書き込み要求について、所定の値が存在する。一実施形態では、書き込み動作に関連付けられた受信データの量は、書き込みデータ検証回路144によって判定及び/又はカウントされる。しかしながら、他の実施例では、読み取り/書き込み回路140が、受信されたデータの量を判定する。上記のように、要求された書き込み動作について予想されるデータの量は、書き込み要求に基づくことができる。例えば、書き込み要求は、4,096ビットのデータ(例えば、4kデータ読み取り)を要求し得る。1k、2k、8kなどの他のデータ書き込みサイズも、書き込み要求に関連付けられ得る。いくつかの実施例では、所定のバイト数は、所与のデータ記憶デバイス102に固有であり得る。例えば、4kの転送は、一般に4,096バイトのデータを含むが、特定のデータ記憶デバイス及び関連付けられたプロトコルは、エラー訂正ビット、アドレスビット、及び/又は所与の用途に対して必要とされるような他の情報を考慮するためのより多くのデータを含み得る。したがって、データ記憶デバイス102は、所定のデータ記憶バイトの定義された値を有し得る。
【0038】
ブロック308において、受信されたデータが所定の量のデータに等しいかどうかに関して判定が行われる。一実施形態では、書き込みデータ検証回路144は、検証を実行する。しかしながら、他の実施形態では、読み取り/書き込み回路140が、検証を実行する。受信されたデータの量が所定の量のデータに等しい場合、受信されたデータは、所定の量のデータに等しいと判定される。例えば、上記のように、4kデータ書き込みは、4,096に等しい予想される数のバイトを有する。したがって、4,096バイトが書き込み動作中に受信されると判定される場合、受信されたバイト数が所定のバイト数に等しいため、データ転送は許容可能である。しかしながら、4,095バイトが書き込み動作中に受信されたと判定される場合、受信されたバイト数が所定のバイト数に等しくないため、データ転送は許容可能でない。データ転送が許容可能でないと判定することに応答して、ブロック310において、転送失敗ビットが設定される。転送失敗ビットは、データ転送エラーアプリケーション130に記憶され得る。しかしながら、他の実施形態では、転送失敗ビットは、読み取り/書き込み回路140及び/又は書き込みデータ検証回路144に記憶され得る。転送失敗ビットを設定すると、ブロック312においてプログラムコミット遅延が開始される。
【0039】
書き込み中に転送失敗ビットを設定することにより、データ記憶デバイス102、したがってコントローラ106は、転送問題が発生していることを理解することが可能になり、これにより、作成されるデータを読み取るのを試みる前にデバッグ及び/又はエラー管理を実行することが可能になり、これによって、破損したデータがアクセスされることになるか、又は不適切なデータに起因するデータ記憶デバイス102の故障をもたらす可能性がある。したがって、転送失敗ビットステータスをデータ記憶デバイス102に提供することにより、後続の読み取り動作中の潜在的な障害が低減又は排除され得る。更に、転送失敗ビットは、追加のデバッグが将来の転送エラーを防止するのを可能にする。例えば、1つ以上のアレイ(例えば、記憶素子107A~107N)及び/又はメモリダイ103は、上述のようなデータ転送エラーに応答して後退され得る。場合によっては、所与の記憶素子107A~107N及び/又はメモリダイ103の読み取り/書き込みサイクルの数などの追加の情報を、転送エラービットステータスと併せて使用して、関連付けられた記憶素子107A~107N及び/又はメモリダイ103が後退されるべきかどうかを判定することができる。更に、データ記憶デバイス102がエンタープライズシステムの一部である場合、転送失敗ビットステータスに関連付けられた情報は、システム管理者及び/又はエンタープライズコントローラに提供され得る。これは、エラーがバイトシフトエラーに起因したことを示す情報又はステータスデータを提供することなく、バイトシフトエラーが発生するときにデータが破損したことのみを示した以前のデータ記憶デバイスの改善である。
【0040】
データ転送が許容可能な値である(すなわち、所定の値に等しくない)と判定することに応答して、プログラムコミット遅延は、ブロック312において開始される。プログラムコミット遅延は、ラッチ111などの揮発性メモリに書き込みコマンドに関連付けられたデータを書き込むことと、記憶素子107A~107Nなどの1つ以上のアレイ(例えば、ワード線)にデータをコミットすることとの間の遅延である。いくつかの実施形態では、コミット遅延は、定義された期間(例えば、10ナノ秒)であり得る。しかしながら、他の実施例では、コミット遅延は、10ナノ秒超又は10ナノ秒未満であり得る。他の実施例では、コミット遅延は、書き込み要求のサイズに基づき得るため、書き込み要求が大きいほど、プログラムコミット遅延は大きくなる。いくつかの実施例では、コミット遅延はない場合がある。
【0041】
プログラムコミット遅延が完了すると、ブロック314においてコミット動作コマンドが発行される。一実施形態では、コミット動作コマンドは、読み取り/書き込み回路140によって発行される。他の実施形態では、コントローラ106などのデータ記憶デバイス102の1つ以上の他の構成要素が、コミット動作コマンドを発行する。コミット動作コマンドは、読み取り/書き込み回路140に、受信されたデータを記憶素子107A~107N及び/又は109A~109Nなどの1つ以上の静的アレイに書き込むように命令する。コミット動作コマンドを発行すると、転送失敗ビットがブロック316において設定されたかどうかに関して判定が行われる。一実施形態では、読み取り/書き込み回路140は、転送失敗ビットが設定されているかどうかを判定する。他の実施形態では、読み取りデータ検証回路142及び書き込みデータ検証回路144のうちの1つ以上が、転送失敗ビットが設定されているかどうかを判定する。他の実施形態では、書き込みデータ検証回路144、エラー訂正回路146、及び/又はコントローラ106など、データ記憶デバイス102の1つ以上の他の構成要素が、転送失敗ビットが設定されているかどうかを判定する。
【0042】
転送失敗ビットが設定されていると判定することに応答して、動作ステータスは、ブロック318において失敗に設定される。一実施形態では、動作ステータスは、データ転送エラーアプリケーション130内で失敗に設定され得る。他の実施形態では、動作ステータスは、エラー訂正回路146内で失敗に設定され得る。動作ステータスを失敗に設定することに加えて、追加のデータを記憶し、動作失敗に関連付けることができる。例えば、許容値ではない受信されたバイトに基づいて転送失敗ビットが設定されたことを示す指標が提供され得る。書き込み要求サイズ、見逃しバイト情報、書き込みアドレス、デバイス温度、及び/又は所与の記憶素子107A~107Nの読み取り/書き込み動作の数などの他の情報も、動作失敗ステータスとともに記憶され得る。
【0043】
転送失敗ビットが設定されていないと判定することに応答して、(例えば、受信されたデータを1つ以上の静的アレイに書き込む)コミット動作がブロック320において実行される。ブロック322において、読み取り/書き込み回路140は、コミット動作が成功したかどうかを判定する。コミット動作が成功しなかったと判定することに応答して、動作ステータスは、ブロック318において失敗に設定される。コミット動作が成功したと判定することに応答して、動作は、ブロック324において成功として報告される。一実施例では、読み取り/書き込み回路140は、成功した動作を、データ転送エラーアプリケーション130、書き込みデータ検証回路144、及び/又はコントローラ106などの1つ以上の構成要素に報告することができる。
【0044】
本明細書に説明されるプロセス、システム、方法、ヒューリスティックなどに関して、かかるプロセスのステップは、特定の順序付けられたシーケンスに従って発生するものとして説明されているが、かかるプロセスは、本明細書に説明される順序以外の順序で実行されると説明されたステップを用いて実施され得ることを理解されたい。更に、特定のステップが同時に実行されてもよく、他のステップが追加されてもよく、又は本明細書に説明される特定のステップを省略することができることを理解されたい。すなわち、本明細書のプロセスの説明は、特定の実装を例示する目的で提供され、特許請求の範囲を限定するものと解釈されるべきではない。
【0045】
したがって、上の説明は例示的であり、限定的ではないことが意図されることを理解されたい。提供される実施例以外の多くの実施形態及び用途は、上の説明を読むことで明らかとなるであろう。範囲は、上の説明を参照して決定されるべきではなく、その代わりに、添付の特許請求の範囲を参照して、かかる特許請求の範囲が権利を与えられる等価物の全範囲とともに決定されるべきである。将来の開発が本明細書で考察される技術において生じ、開示されたシステム及び方法がそのような将来の実施形態に組み込まれることが予想及び意図されている。要約すると、用途は、修正及び変形が可能であることを理解されたい。
【0046】
特許請求の範囲で使用される全ての用語は、本明細書でなされる反対の明示的な指示がない限り、本明細書に説明される技術において知識豊富な者によって理解されるような、最も広い合理的な構造及びそれらの通常の意味が与えられることを意図している。具体的には、「a」、「the」、「said」などのような単数形冠詞の使用は、請求項の反対の明示的な限定を列挙しない限り、示された要素のうちの1つ以上を列挙するために読み取られるべきである。
【0047】
要約書は、読者が技術的開示の性質を迅速に確認することができるように提供される。請求項の範囲又は意味を解釈又は限定するために使用されないことが理解されよう。加えて、上述の[発明を実施するための形態]において、様々な機能が、本開示を合理化する目的で様々な実施形態において一緒にグループ化されていることが分かり得る。本開示の方法は、請求される実施形態が各請求項に明示的に列挙されているよりも多くの機能を必要とするという意図を反映するものとして解釈されるべきではない。むしろ、以下の特許請求の範囲が反映されるように、本発明の主題は、開示される単一の実施形態の全ての機能よりも少ないことにある。したがって、以下の特許請求の範囲は、「発明を実施するための形態」に組み込まれ、各特許請求の範囲は、個別に請求される主題として独立している。