メモリデバイスは、(例えば、信頼性の理由のために)メモリセルにおいて蓄積されたデータビットを反転し得る。特定のメモリセルに対する1つ以上のデータビットを反転した後、メモリデバイスは、該特定のメモリセルにおいて蓄積された論理状態が反転されたことを指し示すための反転ビットをセットし得る。メモリからデータを読み出す場合、メモリデバイスは、データ及び反転ビットを誤り訂正し得、対応する誤り訂正された反転ビットに基づいて、データビットの内の何れかが反転されているか否かを判定し得る。しかしながら、反転ビットに対する誤り訂正を実施することは、読み出し動作を遅延し得る。また、この遅延は、読み出し動作がメモリのセクション全体にアクセスする場合に伝搬遅延により悪化し得、メモリシステムに著しいレイテンシを導く。
メモリデバイスは、多数の(例えば、数百万の)メモリセルを有するメモリアレイを含み得、メモリアレイは、個々の部分に分割され得る。例えば、メモリアレイは、メモリセクション、コードワード、及び/又はメモリユニットに分割され得、メモリセクションは複数のコードワードを含み得、コードワードは複数のメモリユニットを含み得る。幾つかの例では、メモリセクションは、ページサイズに対応し得、コードワードは、プリフェッチサイズに対応し、メモリユニットは、判定された数のビット(例えば、4ビット)に対応し得る。メモリアレイの物理的実装において、メモリセクションは、物理的に長距離(例えば、~1mm)に及ぶ多数の(例えば、数千の)メモリセルを含み得る。
情報は、分割されたメモリリソースに従ってメモリアレイ内に蓄積され得る。例えば、特定の情報(例えば、ユーザデータ)がコードワード内に蓄積され得る。コードワードは、データビットを含むデータ部分と、冗長、誤り検出/訂正(“誤り訂正”)、及び/又は反転ビット等の制御ビットを含む制御部分とに分離され得る。データビットは、蓄積のためのメモリアレイを使用するアプリケーションのためのデータを表し得る。冗長ビットは、冗長修復として知られる動作の間に特定のデータ及び制御ビットを置換するために使用され得る。誤り訂正ビット(例えば、パリティビット)は、破損しているデータ及び反転ビットを識別するために使用され得る。共に、冗長及び誤り訂正ビットは、データビットがアクセスされる場合に生じ得る読み出しエラーの数を減少させ得、メモリデバイスの信頼性を増加させる。反転ビットは、メモリの第1のコードワード内に元々蓄積されたデータ、冗長、及び/又は誤り訂正ビットが反転状態にあるか否かを指し示し得、メモリアレイ内に蓄積されたビットは、節電するため、信頼性の理由のため等のために反転され得る。
情報はまた、分割されたメモリリソースに従ってメモリアレイから読み出され得る。例えば、コードワード内に蓄積されたデータは、メモリアレイからリクエストされ得、リクエストするデバイス(例えば、別のメモリコンポーネント又は外部のデバイス)へ配送され得る。リクエストを受信した後であるが、リクエストするデバイスへコードワード内に含まれるデータビットを配送する前に、メモリアレイは、例えば、誤りを修復する、コードワード内に蓄積されたビットをフリッピングするために、コードワードを処理し得る。
例えば、読み出し動作の間、コードワードのデータ部分は、データコンポーネントを通じて処理され得、コードワードの制御部分は、次のように制御コンポーネントを通じて処理され得る。まず、ある一定のデータ、誤り訂正、及び/又は反転ビットを置換するために、冗長ビットが使用され得る。次に、コードワード内の何れかのデータ又は反転ビットが破損しているか否かを(例えば、ハミング符号を使用して)判定するために、並びに該判定に基づいて、コードワード内の任意の誤り及びこうした誤りの場所を識別するシンドロームビットを生成するために、誤り訂正ビットが使用され得る。
シンドロームビットは、データ及び制御コンポーネントにその後提供され得(提供される、送信される、及び通信されるは、交換可能に使用され得る)、データ又は反転ビット内の任意の識別された誤りを修正するために使用され得る。幾つかの場合、誤り訂正を実施する前に誤りを含むビットの割合は、生のビット誤り率(RBER)と称され得、誤り訂正を実施した後の誤りを含むビットの割合は、訂正不可能なビット誤り率(UBER)と称され得る。
シンドロームビットが処理された後、“フリップビット”と称され得る誤り訂正された反転ビットは、データコンポーネント内のビットフリッピングコンポーネントへ送信され得る。データビットが反転状態にあることをフリップビットが指し示す場合、誤り訂正されたデータビットは、(例えば、リクエストするデバイスに提供される前に、誤り訂正されたデータビットがそれらの元々の蓄積値に戻されるように)フリッピングされ得る。さもなければ、データビットが元の状態にある(例えば、現在反転されていない)ことをフリップビットが指し示す場合、誤り訂正されたデータビットは、フリッピング動作が実施されることなく、リクエストするデバイスに直接提供され得る。
本明細書で言及するように、反転ビットを含む、コードワード内の全てではないが少なくとも幾つかのビット上で誤り訂正を実施することは、(例えば、データビットが訂正され、間違ってフリッピングされないことを確実にすることによって)リクエストするデバイスへ訂正データビットが配送される可能性を増加させ得、それは、メモリデバイスの信頼性を順次増加させ得る。シンドロームビットが処理された後までフリップビットを送ることを待機することは、しかしながら、幾つかの例では、メモリシステムにレイテンシを導き得る。
幾つかの場合、メモリセクション内に蓄積された全てのデータは、該セクションのコードワード内に配置されたデータに対するリクエストに応答して、リクエストするデバイスに提供され得、それは、伝搬遅延をもたらし得る。本明細書で論じられるように、メモリセクションは、物理的に長距離、例えば、伝搬遅延としてレイテンシをメモリシステムに導くのに十分な長さの距離に及ぶ複数のメモリセルに渡って広がり得る。幾つかの場合、冗長ビット、誤り訂正ビット、シンドロームビット、及び/又は反転ビット等の制御情報をメモリセクションに渡って分散することは、メモリ動作に対するレイテンシの増加をもたらす。実例として、メモリシステムは、シンドロームビットがメモリセクションに渡って分散されるのを待機する間の伝搬遅延を招き得る。
こうした伝搬遅延は、連続的な制御動作によって悪化し得る。すなわち、メモリ動作に対する総計の伝搬遅延は、制御情報がメモリセクションに渡って提供される度に増加し得る。例えば、本明細書で論じられる読み出し動作は、メモリセクションに渡ってシンドロームビットを分散する場合に第1の伝搬遅延を招き得る。また、メモリセクションに渡って誤り訂正された反転ビットを分散する場合に別の伝搬遅延を招き得る。こうした場合、フリッピング動作を実施する前に反転ビット上で誤り訂正を実施することは、両伝搬遅延の総計によってメモリ動作のレイテンシを増加させ得、メモリデバイスのスループットを減少させる。幾つかの場合、メモリセクション内の反転ビット上で誤り訂正を実施することは、1nsの遅延をもたらす。
幾つかの場合、メモリ動作の幾つかのステップは、省略され得、及び/又は他のステップと並行して実施され得る。この方法では、特定のステップに対する伝搬遅延は、レイテンシをメモリ動作に追加しなくてもよい。
例えば、コードワードと関連付けられた反転ビットに対して誤り訂正は実施されなくてもよく、反転ビットと同じである、又は反転ビットに基づいて判定されるフリップビットは、誤り訂正の間に生成されたシンドロームビットの生成又は分散の前又は同時にデータコンポーネントに提供され得る。この方法では、メモリセクション内のコードワードの全てに対する反転ビットに対応するシンドロームビットがメモリセクションに渡って伝搬した後にフリップビットをデータコンポーネントへ送ることと関連付けられる総計の伝搬遅延が回避され得る。
とは言え、反転ビットに対して誤り訂正を実施することを控えることは、幾つかの例では、フリップビットの信頼性を減らし得る。したがって、フリップビットをビットフリッピングコンポーネントへ直接送ることは、メモリシステムの信頼性を減らし得る。
幾つかの場合、コードワードのデータビットを(例えば、ハミング符号を使用して)誤り訂正するために使用される誤り訂正技術以外の(例えば、反復符号を使用する)代替的な誤り訂正技術が、コードワードに対するフリップビットの信頼性を増加させるために使用され得る。この方法では、フリップビットの信頼性、更に言えばメモリデバイスの信頼性は、データビットに対して使用される同じ誤り訂正スキームを使用してフリップビットを誤り訂正することによって得られる信頼性レベル以上で維持され得る。また、代替的な誤り訂正技術は、データビットに対してその他の誤り訂正技術が実施されながら実施され得、対応するシンドロームビットがメモリセクションに渡って分散された後まで、メモリセクションのフリップビットをビットフリッピングコンポーネントへ送るのを待機することと関連付けられる総計の伝搬遅延を和らげる。
幾つかの例では、フリップビットの信頼性は、コードワード内に複数の反転ビットを含むことによる代替的な誤り訂正技術を使用して増加し得る。例えば、コードワード内に3つ以上の反転ビットが含まれ得、
それがフリップビットの値
に関して“多数決を取る”ために使用され得
、これは反復スキームとも称され得る。すなわち、フリップビットは、コードワード内のデータビットが反転されていることを反転ビットの過半数が指し示すか否かを判定することに基づいて生成され得る。この方法では、フリップビットの失敗(failing)の確率は、コードワード内に含まれる反転ビットの数と反転ビットのRBERとの関数であり得る。例えば、3つの反転ビットを使用するこうした多数決スキームに対しては、フリップビットのUBERは、単一の反転ビットのRBERの二乗の3C2倍、例えば、
であり得る。また、該多数決は、データビットへの参照なく、したがって、データビットに対するシンドロームビットが生成される及び/又はメモリセクション全体に分散される前又は間に完了され得る。
別の例では、フリップビットの信頼性は、複数の反転ビットとよりロバスト性のあるセンシングスキームとを使用することによって、誤り訂正なく増加させ得る。例えば、差動センシングスキームを使用して、2つのメモリセル内に蓄積された2つの反転ビットは読み出され得る。また、コードワードを処理する前に、単一の高い信頼性の反転ビットを生成するために2つのメモリセルがセンシングされ得、該反転ビットは、フリップビットとしてその後使用され得、又はフリップビットを生成するためにその後使用され得る。幾つかの場合、差動センシングスキームに基づいてコードワードに対して生成されたフリップビットのRBERは、コードワードに対するデータビットのUBER以上であり得る。
幾つかの例では、フリップビットの信頼性は、コードワード当たり1つの反転ビットと、この反転ビットに対するよりロバスト性のある蓄積スキームとを使用することによって、例えば、反転ビットの信頼性を増加させることによって、誤り訂正することなく増加させ得る。例えば、反転ビットは、例えば、メモリセルの化学組成、メモリセルのサイズ、メモリセルに対して使用される技術に起因して、より大きなセンシングウィンドウを有するメモリセル内に蓄積され得る。また、コードワードを処理する場合、メモリセルは、高い信頼性の反転ビットを生成するためにセンシングされ得、該反転ビットは、フリップビットとしてその後使用され得、又はフリップビットを生成するためにその後使用され得る。幾つかの場合、ロバスト性のある蓄積スキームで蓄積された反転ビットに基づいてコードワードに対して生成されたフリップビットのRBERは、コードワードに対するデータビットのUBER以上であり得る。幾つかの例では、フリップビットの信頼性を増加させるための技術は、例の中でもとりわけ、誤り訂正、若しくは冗長ビット、又はそれら両方等のその他の制御ビットにも拡張され得る。
上で紹介した開示の機構は、メモリシステムの文脈で本明細書で更に説明される。強化されたビットフリッピングスキームに従ってコードワードを読み出すためのデバイス及び方法の具体例がその後説明される。開示のこれら及びその他の機構は、強化されたビットフリッピングスキームに関する装置図、システム図、及びフローチャートによって更に説明され、それらを参照しながら更に説明される。
図1は、本開示の様々な実施形態に従った強化されたビットフリッピングスキームをサポートする例示的なメモリアレイを説明する。メモリアレイ100は、デジタル情報(例えば、バイナリ情報)を蓄積するために使用され得、電子メモリ装置とも称され得る。メモリアレイ100は、異なる状態を蓄積するようにプログラミング可能であるメモリセル105を含む。各メモリセル105は、論理0及び論理1として示される2つの状態を蓄積するようにプログラミング可能であり得る。幾つかの場合、メモリセル105は、2つよりも多い論理状態を蓄積するように構成される。
メモリセル105は、プログラミング可能な状態を有するメモリ素子を含み得る。DRAM又はFeRAMアーキテクチャにおけるメモリセル105は、プログラミング可能な状態を表す電荷をコンデンサ内に蓄積し得、例えば、充電及び非充電のコンデンサは、2つの論理状態を夫々表し得る。DRAMアーキテクチャは、こうした設計を一般的に使用し得、誘電材料を含み、メモリ素子として線形電気分極特性を有するコンデンサを使用し得る。FeRAMアーキテクチャもこうした設計を使用し得るが、メモリ素子として使用されるコンデンサは、非線形分極特性を有する強誘電体材料を含み得る。PCM又は分離ベースメモリ(SBM)アーキテクチャにおけるメモリセル105は、異なる抵抗率が異なる論理状態を表し得る材料の抵抗率(例えば、抵抗又は閾値電圧)を変化させ得る。PCM及び/又はSBMアーキテクチャは、メモリ素子として電子的にプログラミング可能な抵抗を有するカルコゲナイド材料を使用し得る。幾つかの場合、PCMアーキテクチャにおけるメモリセル105は、メモリ材料の相を変化させることによってプログラミングされる。幾つかの場合、SBMアーキテクチャにおけるメモリセル105は、メモリ材料内にイオン移動を生じさせることによってプログラミングされる。
読み出し及び書き込み等の動作は、適切なアクセス線110及びデジット線115を活性化又は選択することによってメモリセル105上で実施され得る。アクセス線110はワード線110とも称され得、デジット線115はビット線115とも称され得る。ワード線110又はデジット線115を活性化又は選択することは、個別の線に電圧を印加することを含み得る。ワード線110及びデジット線115は、導電材料で作られる。例えば、ワード線110及びデジット線115は、金属(銅、アルミニウム、金、タングステン等)、金属合金、又はその他の導電材料等で作られ得る。図1の例に従えば、メモリセル105の各行は、単一のワード線110に接続され、メモリセル105の各列は、単一のデジット線115に接続される。1つのワード線110及び1つのデジット線115を活性化することによって(例えば、ワード線110又はデジット線115に電圧を印加することによって)、それらの交点において単一のメモリセル105がアクセスされ得る。メモリセル105にアクセスすることは、メモリセル105を読み出すこと又は書き込むことを含み得る。ワード線110とデジット線115との交点は、メモリセルのアドレスと称され得る。
幾つかのアーキテクチャでは、セルの論理蓄積デバイス(例えば、コンデンサ)は、選択コンポーネントによってデジット線から電気的に絶縁され得る。ワード線110は、選択コンポーネントに接続され得、選択コンポーネントを制御し得る。例えば、選択コンポーネントはトランジスタであり得、ワード線110は、トランジスタのゲートに接続され得る。ワード線110を活性化することは、メモリセル105のコンデンサと、その対応するデジット線115との間の電気的接続又は閉回路をもたらす。デジット線は、メモリセル105の読み出し又は書き込みの何れかのためにその後アクセスされ得る。
メモリセル105へのアクセスは、行デコーダ120及び列デコーダ130を通じて制御され得る。幾つかの例では、行デコーダ120は、メモリコントローラ140から行アドレスを受信し、受信した行アドレスに基づいて適切なワード線110を活性化する。同様に、列デコーダ130は、メモリコントローラ140から列アドレスを受信し、適切なデジット線115を活性化する。例えば、メモリアレイ100は、WL_1~WL_Mとラベルが付された複数のワード線110と、DL_1~DL_Nとラベルが付された複数のデジット線115とを含み得、M及びNはアレイサイズに依存する。したがって、ワード線110及びデジット線115、例えば、WL_3及びDL_Nを活性化することによって、それらの交点におけるメモリセル105がアクセスされ得る。
アクセスすると、メモリセル105は、メモリセル105の蓄積状態を判定するために、センスコンポーネント125によって読み出され得又はセンシングされ得る。例えば、メモリセル105へのアクセス後、メモリセル105のコンデンサは、その対応するデジット線115上に放電し得る。コンデンサの放電は、コンデンサに対してバイアスすること又は電圧を印加することに基づき得る。放電は、デジット線115の電圧の変化を生じさせ得、センスコンポーネント125は、メモリセル105の蓄積状態を判定するために、デジット線115の電圧をリファレンス電圧(図示せず)と比較し得る。例えば、デジット線115がリファレンス電圧よりも高電圧を有する場合、センスコンポーネント125は、メモリセル105内の蓄積状態が論理1であると判定し得、逆もまた同様である。
センシング動作の信頼性は、メモリセル105の読み出しからもたらされるセンシングウィンドウに依存し得る。実例として、より大きなセンシングウィンドウは、より小さなセンシングウィンドウよりも少ないビット誤りと関連付けられ得る。センシングウィンドウは、論理1を蓄積する場合にメモリセル105の読み出しからもたらされるデジット線115の電圧と、論理0を蓄積する場合にメモリセルの読み出しからもたらされるデジット線115の電圧との間の差として判定され得る。センスコンポーネント125は、ラッチと称され得る、信号中の差を検出及び増幅するための様々なトランジスタ又はアンプを含み得る。メモリセル105の検出された論理状態は、出力135として列デコーダ130を通じてその後出力され得る。
メモリセル105は、関連するワード線110及びデジット線115を活性化することによってセットされ得、又は書き込まれ得る。本明細書で論じるように、ワード線110の活性化は、(複数の)メモリセル105の対応する行をそれらの個別のデジット線115に電気的に接続する。ワード線110が活性化される間に、関連するデジット線115を制御することによって、メモリセル105は書き込まれ得、例えば、メモリセル105内に論理値が蓄積され得る。列デコーダ130は、メモリセル105に書き込まれるデータ、例えば入力135を受け入れ得る。
メモリコントローラ140は、行デコーダ120、列デコーダ130、及びセンスコンポーネント125等の様々なコンポーネントを通じて、メモリセル105の動作(例えば、読み出し、書き込み、再書き込み、リフレッシュ等)を制御し得る。メモリコントローラ140は、所望のワード線110及びデジット線115を活性化するために、行及び列のアドレス信号を生成し得る。メモリコントローラ140はまた、メモリアレイ100の動作の間に使用される様々な電位を生成及び制御し得る。一般的に、本明細書で論じる印加電圧の振幅、形状、又は存続期間は、調整又は変更され得、メモリアレイ100を動作するための様々な動作に対して異なり得る。更に、メモリアレイ100内の1つの、複数の、又は全てのメモリセル105は同時にアクセスされ得、例えば、メモリアレイ100の複数の又は全てのセルは、全てのメモリセル105又はメモリセル105のグループが単一の論理状態にセットされるリセット動作の間に同時にアクセスされ得る。
幾つかの場合、メモリアレイ100は、メモリセル105の論理状態をフリッピングし得、例えば、ある値(例えば、論理1)から別の論理値(論理0)へメモリセル内105に蓄積された論理値を変化させ得る。メモリアレイ100は、フリッピングを内部的に実施し得、メモリセルの論理状態がフリッピングされていることを外部のデバイス又はコンポーネントに通知しなくてもよい。メモリアレイ100は、節電又はデバイスの信頼性を増加させる等のためにメモリセルをフリッピングし得る。例えば、FeRAMに対しては、強誘電体メモリセルは、インプリントの影響、例えば、メモリセルの信頼性を時間と共に減らし得る同じ電荷の長期の暴露又は蓄積に起因する強誘電体ドメインのドリフトを緩和するためにフリッピングされ得る。元々の論理状態、例えば、外部のデバイス又はコンポーネントによってメモリセルにおいて蓄積されると期待される論理状態とは異なる論理状態を蓄積するメモリセル105は、反転状態にあると称され得る。
幾つかの場合、メモリアレイ100は、メモリセルのセットに分割される。例えば、メモリアレイ100は、数千のメモリセル105を含み得るメモリセクションに分割され得る。メモリセクションは、数百のメモリセル105を含み得るコードワードに更に分割され得る。また、コードワードは、一桁の数のメモリセル105を含み得るメモリユニットに分割され得、例えば、メモリユニットは、4つのメモリセル105を含み得る。
幾つかの例では、メモリアレイ100内に蓄積された情報は、別のデバイス(例えば、バッファ等のメモリコンポーネント又は外部のプロセッサ)によってリクエストされ得る。メモリアレイ100は、メモリアレイ100内の情報の場所を識別し得る。幾つかの場合、メモリアレイ100は、メモリの特定のセクション内に配置されたコードワード内に情報が配置されたと判定し得る。幾つかの例では、メモリアレイ100は、メモリセクションがコードワードを含むと識別することに基づいて、メモリセクション全体にアクセスし得、メモリセクション内に蓄積された情報の全てを、リクエストするデバイスに提供し得る。
しかしながら、メモリセクション内に蓄積された情報を、リクエストするデバイスに提供する前に、メモリアレイ100は、情報をまず処理し得、メモリセクション内に蓄積された情報ビットに対して冗長修復及び誤り訂正を実施する。メモリアレイ100はまた、メモリセクション内のコードワードの内の何れかが反転状態にあるか否かを判定し得、リクエストするデバイスが期待する蓄積状態にデータビットを戻すために、コードワードのビットをフリッピングし得る。
誤り訂正の間、メモリアレイ100は、幾つかのメモリセルが破損しているデータを蓄積しているか否かを指し示すために使用され得るシンドロームビットを生成し得、破損したメモリセル内に蓄積されたデータは、訂正値にフリッピングされ得る。幾つかの場合、誤り訂正の間に、誤りが何らないと識別され得、生成されたシンドロームビットの全ては、論理値0を有する。幾つかの場合、メモリセクション全体を通じたシンドロームビットの配送は、例えば、メモリセクションの物理的サイズ及び/又は連続的なデータ配送に起因する伝搬遅延と関連付けられ得る。コードワードのビットをフリッピングするために、コードワードに対する反転/フリップビットはビットフリッピングコンポーネントに提供され得、ビットフリッピングコンポーネントは、(例えば、データビットが反転状態にあることを反転ビットが指し示す場合に)コードワードのデータビットをフリッピングし得る。幾つかの場合、反転ビットは、フリップビットと同じであり得、又はフリップビットを生成するために使用され得る。
幾つかの場合、メモリアレイ100は、対応する反転ビットを含むコードワード全体に対して誤り訂正を実施し得る。したがって、メモリアレイ100は、シンドロームビットが受信される後まで、フリップビットをビットフリッピングコンポーネントに提供するのを待機し得る。しかしながら、シンドロームビットを受信した後までフリップビットを送るのを待機することは、メモリシステムのレイテンシを増加させ得る。また、例えば、メモリセクション内に蓄積された情報は、セクション全体が完全に処理される後まで、リクエストするデバイスに提供されなくてもよいので、該レイテンシは、フリップビットがメモリセクション全体を通じて提供され、配送される間に更に増加し得る。
メモリアレイ100は、コードワードにおける反転ビットに対して誤り訂正を実施することを控え得、誤り訂正と同時に(すなわち、少なくとも部分的に重複して)フリップビットをビットフリッピングコンポーネントに提供し得る。幾つかの例では、メモリアレイ100は、コードワード内に複数の反転ビットを含み得、反転ビットにより蓄積された値に基づいてフリップビットを生成し得る。
メモリアレイ100は、異なる誤り訂正技術を使用した(例えば、反復符号を使用する)フリップビットの誤り訂正/生成と同時に、ある誤り訂正技術を使用した(例えば、ハミング符号を使用する)コードワードのデータビット誤り訂正を実施し得る。幾つかの場合、フリップビットの生成/誤り訂正は、データビットの誤り訂正の間に、シンドロームビットの生成又は分散、例えば、メモリセクションの異なる場所へのシンドロームビットの全ての送信と重複し得る。フリップビットを誤り訂正/生成した後、メモリアレイ100は、フリップビットの値に基づいてデータビットがフリッピングされ得るビットフリッピングコンポーネントにフリップビットを通信(例えば、送信し、送り、提供し、等)得る。この方法では、レイテンシは減らされ得、総計の伝搬遅延の影響は、メモリアレイ100に対して和らげられ得る。
幾つかの場合、メモリアレイ100は、多数決スキーム及び複数の反転ビットを使用してフリップビットを生成/誤り訂正し得る。多数決スキームは、誤り訂正スキームの一種であり得る。例えば、メモリアレイ100は、複数の反転ビットを含むコードワードについて、コードワード内のデータビットが反転状態にあることを反転ビットの過半数が指し示すか否かを判定し得る。メモリアレイ100は、コードワード内のデータビットが反転状態にあることを反転ビットの内の少なくとも幾つか(例えば、過半数又は全て)が指し示すか否かを判定することに基づいてフリップビットを生成し得、例えば、メモリアレイ100は、コードワード内のデータビットが反転状態にあることを反転ビットの過半数が指し示す場合に、データビットがフリッピングされるべきであることを指し示すフリップビットを生成し得る。メモリアレイ100は、フリップビットをビットフリッピングコンポーネントへその後送信し得る。フリップビットの信頼性は、コードワードのデータビットに対するものとは異なる、反転ビットに対する誤り訂正スキームを使用して増加し得る。幾つかの場合、多数決スキームにより出力されるフリップビットは、コードワードに対するデータビットの誤り訂正の間に、シンドロームビットの生成及び/若しくは分散と同時に、生成され得、並びに/又はビットフリッピングコンポーネントに提供され得る。
幾つかの場合、メモリアレイ100は、差動センシングスキームを使用してコードワードに対する2つの反転ビットを蓄積して、コードワードに対するフリップビットを生成する。差動センシングスキームは、メモリアレイ100内の個々の反転ビット及び訂正された情報ビットよりも高い信頼性を有する単一の反転ビットを生成するために使用され得る。単一の反転ビットは、フリップビットとしてその後使用され得、又はフリップビットを生成するために使用され得る。こうしたスキームは、反転/フリップビットを誤り訂正することなくフリップビットの信頼性を増加させ得、シンドロームビットの生成及び/又は分散と同時にフリップビットをビットフリッピングコンポーネントに提供するために使用され得る。
幾つかの場合、メモリアレイ100は、メモリアレイ100内のその他のメモリセルよりも大きなセンシングウィンドウを有するメモリセル内にコードワードに対する単一の反転ビットを蓄積し得る。例えば、該反転ビットは、メモリアレイ内のその他のメモリセルとは異なる技術を使用する等、メモリアレイ100内のその他のメモリセルよりも大きなサイズを有するメモリセル内に蓄積され得る。単一の反転ビットは、メモリアレイ100内の訂正された情報ビットよりも高い信頼性を有し得、フリップビットとして使用され得、又はフリップビットを生成するために使用され得る。こうしたスキームは、反転/フリップビットを誤り訂正することなくフリップビットの信頼性を増加させ得、シンドロームビットの生成及び/又は分散と同時にフリップビットをビットフリッピングコンポーネントに提供し得る。
図2は、本開示の様々な態様に従った強化されたビットフリッピングスキームをサポートする例示的な読み出しコンポーネントを説明する。読み出しコンポーネント200は、メモリアレイ内に蓄積された情報を処理するために使用され得る。読み出しコンポーネント200は、入力線(データビット線205、冗長ビット線210、誤り訂正ビット線215、及び反転ビット線220)、データコンポーネント225、制御コンポーネント230、誤り識別コンポーネント235、出力線(グローバルデータ線240)、及びロバストセンシングコンポーネント275を含み得る。
データビット線205は、データを蓄積するメモリセルとデータコンポーネント225との間で1つ以上のコードワードに対するデータビットを通信するように構成され得る。データビットは、ユーザアプリケーションに対するデータを表し得る。冗長ビット線210は、冗長データビットを蓄積するメモリセルとデータコンポーネント225との間で、並びに冗長データ制御ビットを蓄積するメモリセルと制御コンポーネント230との間で冗長ビットを通信するために使用され得る。冗長ビットは、幾つかのデータ及び/又は制御ビットに対応し得、幾つかのデータ及び/又は制御ビットを置換するために使用され得る。幾つかの場合、冗長ビットは、他のメモリセルよりも高い信頼性を有するメモリセル内に蓄積される。
誤り訂正ビット線215は、誤り訂正ビットを蓄積するメモリセルと制御コンポーネント230との間で、パリティビット等の誤り訂正ビットを通信するために使用され得る。誤り訂正ビットは、データ及び/又は制御ビット内の誤りを識別するために使用され得る。反転ビット線220は、反転ビットを蓄積するメモリセルと制御コンポーネント230との間で、データビットが反転状態にあるか否かを指し示す反転ビットを通信するために使用され得る。コードワードに対する反転ビットは、コードワードに対する対応するデータ及び/又は制御ビットが元々の/期待される状態にあるか、それとも反転状態にあるかを指し示すために使用され得る。
データコンポーネント225は、1つ以上のコードワード内に蓄積されたデータビットを処理するように、及び処理されたデータビットを、リクエストするデバイスに配送するように構成され得る。データコンポーネント225は、データビットをデータビット線205から受信し得る。データコンポーネント225は、第1のビット修復コンポーネント245、ビット訂正コンポーネント250、及びビットフリッピングコンポーネント255を含み得る。
第1のビット修復コンポーネント245は、特定のデータビットを、それに対応する冗長データビットと置換するように構成され得る。第1のビット修復コンポーネント245は、データビットをデータビット線205から、及び冗長データビットを冗長ビット線210から受信し得る。第1のビット修復コンポーネント245は、冗長修復と称され得る処理の間に、受信されたデータビットの内の特定のデータビットを、受信された冗長ビットの内の特定の冗長データビットと置換し得る。第1のビット修復コンポーネント245は、データビットのサブセットを置換するように構成された第1のマルチプレクサと、修復された冗長データビットを蓄積するためのラッチとを含み得る。第1のマルチプレクサの出力は、ビット訂正コンポーネント250及び/又は誤り識別コンポーネント235と結合され得る。第1のビット修復コンポーネント245は、ビット訂正コンポーネント250及び/又は誤り識別コンポーネント235へ、冗長修復されたデータビットを送信し得る。
ビット訂正コンポーネント250は、破損していると識別されているデータビットを訂正するように構成され得る。ビット訂正コンポーネント250は、破損したビットを訂正するためのコンポーネントと、シンドロームデコーダ等のシンドロームビットを処理するためのコンポーネントとを含み得る。ビット訂正コンポーネント250は、第1のビット修復コンポーネント245からデータビット(例えば、修復された冗長データビット)を受信し得る。
ビット訂正コンポーネント250はまた、誤り識別コンポーネント235からシンドロームビットを受信し得る。シンドロームビットは、冗長修復されたデータビットのうちの、失敗(故障)している(例えば、破損している)データビットを識別し得る。ビット訂正コンポーネント250は、シンドロームビットにより識別されたデータビット内の誤りをその後訂正し得る。幾つかの場合、ビット訂正コンポーネント250は、シンドロームビットに基づいて、失敗(例えば、破損)として識別されている特定のデータビットを識別し、該データビットの論理値を(例えば、XOR回路を使用して)フリッピングする。幾つかの場合、ビット訂正コンポーネント250は、シンドロームビットに基づいて(例えば、シンドロームビットが全て論理0である場合に)、データビットが何ら破損していないと判定する。シンドロームビットを処理した後、ビット訂正コンポーネント250は、訂正されたデータビットをビットフリッピングコンポーネント255へ送信し得る。
ビットフリッピングコンポーネント255は、受信されたフリップビットに基づいて、訂正されたデータビットを反転状態から元々の状態へフリッピングするように構成され得る。ビットフリッピングコンポーネント255は、訂正されたデータビットをビット訂正コンポーネント250から受信し得る。ビットフリッピングコンポーネント255はまた、フリップビットをフリップビットジェネレータ270から受信し得る。ビットフリッピングコンポーネント255は、フリップビットの値に基づいて、訂正されたデータビットを反転状態からフリッピングし得る。例えば、フリップビットの値が論理1である場合、ビットフリッパーは、訂正されたデータビットをフリッピングし得る。訂正されたデータビットをフリッピングすることは、データビットの値を反対の値に(例えば、論理0から論理1に)変化させるXORコンポーネントを通じて、訂正されたデータビットを送信することを含み得る。
データコンポーネント225に提供される前に、メモリセル内に蓄積されたデータビットがフリッピングされた(例えば、信頼性の理由のために反転状態に置かれた)場合、ビットフリッピングコンポーネント255は、訂正されたデータビットをフリッピングするようにビットフリッピングコンポーネント255を発動するフリップビットを受信することに基づいて、訂正されたデータビットをフリッピングし得る。データコンポーネント225に提供される前に、メモリセル内に蓄積されたデータビットがフリッピングされていない場合、ビットフリッピングコンポーネント255は、訂正されたデータビットをフリッピングするようにビットフリッピングコンポーネント255を発動しないフリップビットを受信することに基づいて、訂正されたデータビットをフリッピングすることを控え得る。幾つかの場合、ビットフリッピングコンポーネントは、データビット内の誤りが訂正された後にデータビットをフリッピングするように構成され得る。幾つかの場合、ビットフリッピングコンポーネント255は、フリップビットが破損している場合に、訂正されたデータビットを不適切にフリッピングし得、又はフリッピングを失敗し得る。ビットフリッピングコンポーネント255はグローバルデータビットを生成し得、グローバルデータビットをグローバルデータ線240を介して、リクエストするデバイスへ送信し得、グローバルデータビットは、読み出しコンポーネント200により完全に処理されて、リクエストするデバイスに提供されるデータビットを称するために使用され得る。
制御コンポーネント230は、1つ以上のコードワード内に蓄積された制御ビットを処理するように、及び1つ以上のコードワードに対するデータビットの処理においてデータコンポーネント225を助力するように構成され得る。制御コンポーネント230は、第2のビット修復コンポーネント260、第3のビット修復コンポーネント265、及びフリップビットジェネレータ270を含み得る。
第2のビット修復コンポーネント260は、第1のビット修復コンポーネント245と同様に、特定の誤り訂正ビットを、それに対応する冗長誤り訂正ビットに置換するように構成され得る。第2のビット修復コンポーネント260は、誤り訂正ビットを誤り訂正ビット線215から、及び冗長誤り訂正ビットを冗長ビット線210から受信し得る。幾つかの場合、第2のビット修復コンポーネント260は、冗長ビット線210上の何れの冗長誤り訂正ビットも受信しなくてもよい。第2のビット修復コンポーネント260は、誤り訂正ビットのサブセットを置換するように構成された第2のマルチプレクサと、冗長修復された誤り訂正ビットを蓄積するためのラッチとを含み得る。第2のビット修復コンポーネント260は、冗長修復された誤り訂正ビットを誤り識別コンポーネント235へ送信し得る。
第3のビット修復コンポーネント265は、第1のビット修復コンポーネント245及び第2のビット修復コンポーネント260と同様に、特定の反転ビットを、それに対応する冗長反転ビットに置換するように構成され得る。第3のビット修復コンポーネント265は、反転ビットを反転ビット線220から、及び冗長反転ビットを冗長ビット線210から受信し得る。幾つかの場合、第3のビット修復コンポーネント265は、冗長ビット線210上の何れの冗長反転ビットも受信しなくてもよい。第3のビット修復コンポーネント265は、反転ビットのサブセットを置換するように構成された第3のマルチプレクサと、冗長修復された反転ビットを蓄積するためのラッチとを含み得る。第3のビット修復コンポーネント265は、冗長修復された反転ビットを誤り識別コンポーネント235へ送信し得る。幾つかの場合、第3のビット修復コンポーネント265は、反転ビット線220を介して複数の反転ビットを受信し、複数の冗長修復された反転ビットをフリップビットジェネレータ270へ送信する。幾つかの場合、第2及び第3のマルチプレクサは、制御ビットのサブセットを置換するように構成された単一のマルチプレクサとして実装され得る。
フリップジェネレータ270は、データビットが反転状態にあるか否かを判定するように構成され得、かつ、リクエストするデバイスに提供する前に、コードワードのデータビットが反転状態から元々の/期待される状態へと戻るようにフリッピングされるべきか否かを指し示す、コードワードに対するフリップビットを生成するように構成され得る。フリップビットジェネレータ270は、ビット修復コンポーネント265から受信した冗長修復された反転ビットに基づいてフリップビットを生成し得る。幾つかの場合、フリップビットジェネレータ270は、誤り識別コンポーネント235により実行される誤り訂正技術とは異なる代替的な誤り訂正技術を(例えば、多数決スキーム等の反復符号を使用して)実行し得る。
例えば、コードワードに対して複数の反転ビットが使用される場合、フリップビットジェネレータ270は、多数決コンポーネントを含み得、多数決コンポーネントは、コードワード内の対応するデータビットが反転状態にあることを、反転ビットの内の少なくとも幾つか(例えば、過半数又は全て)が指し示すか、それともコードワード内の対応するデータビットが反転状態にないことを反転ビットが指し示すかを判定するために使用され得る。
例えば、反転ビットの過半数が、それに対応するデータビットが反転状態にあることを指し示す場合、フリップビットジェネレータ270は、訂正されたデータビットをフリッピングするようにビットフリッピングコンポーネント255を発動するフリップビットを生成し得る。或いは、反転ビットの過半数が、それに対応するデータビットが反転状態にない(例えば、非反転の元々の蓄積状態にある)ことを指し示す場合、フリップビットジェネレータ270は、訂正されたデータビットをフリッピングすることをビットフリッピングコンポーネント255に控えさせるフリップビットを生成し得る。幾つかの場合、多数決コンポーネントは、誤り識別コンポーネント235によるデータビット内の誤りの識別と同時に、対応するデータビットが反転状態にあることを反転ビットの過半数が指し示すか否かを判定し得る。多数決コンポーネントは、誤り識別コンポーネント235から電気的に絶縁され得る。多数決コンポーネントは、本明細書でより詳細に、図6及び図7を少なくとも参照しながら論じられる。
付加的に又は代替的に、コードワードに対して複数の反転ビットが使用される場合、データコンポーネント225又は制御コンポーネント230を使用してコードワードを処理する前に、及び反転ビットに対する誤り訂正技術を用いることなく、コードワードの複数の反転ビットから単一の高い信頼性の反転/フリップビットを生成するためにロバストセンシングコンポーネント275が使用され得る。例えば、ロバストセンシングコンポーネント275は、差動センシングコンポーネントであり得る。こうした場合、単一の高い信頼性の反転ビット、例えば、メモリシステムにおける情報ビットのUBER以上のRBERを有する反転ビットを生成するために、2つのメモリセル内に蓄積されたコードワードの2つの反転ビットがロバストセンシングコンポーネント275を使用して共にセンシングされ得る。差動センシングコンポーネントは、本明細書でより詳細に、図5を少なくとも参照しながら論じられる。高い信頼性の反転ビットは、第3のビット修復コンポーネント265にその後提供され得る。ロバストセンシングコンポーネント275が使用される場合、フリップビットジェネレータ270は、高い信頼性の反転ビットをビットフリッピングコンポーネント255へルーティングするスイッチ又はワイヤを含み得、例えば、生成された高い信頼性の反転ビットは、フリップビットとして使用され得る。
コードワードに対して単一の反転ビットが使用される場合、データコンポーネント225又は制御コンポーネント230を使用してコードワードを処理する前に、及び反転ビットに対する誤り訂正技術を用いることなく、単一の高い信頼性の反転/フリップビットを生成するために、よりロバスト性のあるメモリセルが使用され得る。幾つかの場合、メモリアレイ内のその他のメモリセルよりも誤ったデータを生み出す可能性が低い(例えば、1e-18以下のRBER)ロバスト性のあるメモリセル内に単一の反転ビットは蓄積される。例えば、メモリセルは、他のメモリセルよりも大きなセンシングウィンドウを有するように構築され得、異なるメモリ技術(例えば、FeRAMに代わりDRAM)を使用し得る等である。コードワードに対する反転ビットを蓄積するために単一のメモリセル(例えば、ロバスト性のあるメモリセル)が使用される場合、フリップビット及び反転ビットは同じであり得、フリップビットジェネレータ270は、反転/フリップビットをビットフリッピングコンポーネント255へルーティングするためのスイッチ又はワイヤを含み得、例えば、反転ビットは、幾つかの場合ではフリップビットとして使用され得る。
フリップビットジェネレータ270は、生成されたフリップビットをビットフリッピングコンポーネント255へ送信し得る。フリップビットは、誤り識別コンポーネント235がシンドロームビットを生成及び/又は送信する間にビットフリッピングコンポーネント255へ送信され得、例えば、フリップビットジェネレータ270は、シンドロームビットがビット訂正コンポーネント250へ送信される前又は間に、フリップビットをビットフリッピングコンポーネント255へ送信し得る。幾つかの場合、フリップビットジェネレータ270は、ビットフリッピングコンポーネント255を介して誤り識別コンポーネント235から電気的に絶縁され得る。すなわち、誤り識別コンポーネント235の出力は、フリップビットジェネレータ270の出力に影響を及ぼさなくてもよく、又はフリップビットの生成は、シンドロームビットの生成とは無関係に、又はシンドロームビットの生成を参照することなく実施され得る。
誤り識別コンポーネント235は、第1のビット修復コンポーネント245から受信されたデータビット内の誤りを識別するように構成され得る。幾つかの場合、誤り識別コンポーネント235は、(例えば、ハミング符号を使用して)ビット修復コンポーネント260から受信された誤り訂正ビットに基づいて、データビット内の誤りを識別し得る。誤り識別コンポーネント235は、データビット及び誤り訂正ビットに基づいてシンドロームビットを生成し得、シンドロームビットをビット訂正コンポーネント250へ送信し得る。誤り識別コンポーネント235は、連続又は並列の仕方でシンドロームビットをビット訂正コンポーネント250へ送信し得る。メモリセクション全体に対するシンドロームビットをビット訂正コンポーネント250に提供することは、伝搬遅延と関連付けられ得る。
グローバルデータ線240は、読み出しコンポーネント200を通じて処理されたデータビット(“グローバルデータビット”)を、リクエストするデバイスへ送信するように構成され得る。
幾つかの場合、第1のビット修復コンポーネント245、ビット訂正コンポーネント250、ビットフリッピングコンポーネント255、第2のビット修復コンポーネント260、第3のビット修復コンポーネント265、及びフリップビットジェネレータ270は、メモリセクション全体に対して単一のコンポーネントとして各々実装され得る。他の場合、第1のビット修復コンポーネント245、ビット訂正コンポーネント250、ビットフリッピングコンポーネント255、第2のビット修復コンポーネント260、第3のビット修復コンポーネント265、及びフリップビットジェネレータ270は、メモリセクション全体の各コードワード毎に複数のコンポーネントとして各々実装され得る。例えば、複数のメモリセクションを含む読み出しコンポーネント200は、1つ以上の第1のビット修復コンポーネント245、1つ以上のビット訂正コンポーネント250、1つ以上のビットフリッピングコンポーネント255、1つ以上の第2のビット修復コンポーネント260、1つ以上の第3のビット修復コンポーネント265、及び1つ以上のフリップビットジェネレータ270を含み得る。
図3は、本開示の様々な態様に従った強化されたビットフリッピングスキームを使用する例示的なメモリ動作の態様を説明する。フローチャート300は、強化されたビットフリッピングスキームに従って、一例として、図2の読み出しコンポーネント200等の1つ以上のメモリコンポーネントを動作する態様を説明する。
本明細書に説明されるように、コードワードのデータビットに依存するコードワードの反転ビットに対して誤り訂正を実施することは、メモリシステムにレイテンシを導き得る。また、このレイテンシは、伝搬遅延に起因してメモリセクション全体から情報を読み出す場合に悪化し得る。このレイテンシを減らすために、メモリシステムは、コードワードの反転ビットに対して誤り訂正を実施するのを控え得、コードワードのデータビットの誤り訂正と並行してフリップビットを生成し得る。レイテンシを減らすための例は、フローチャート300の文脈で論じられ得る。
ブロック305において、メモリシステムは、例えば、ユーザアプリケーションのために、メモリアレイ内に情報ビットを蓄積し得る。情報ビットを蓄積することは、1つ以上のメモリセクションのコードワード内にデータビットと、対応する制御ビットを蓄積することを含み得る。幾つかの場合、制御ビットは、冗長ビット、誤り訂正ビット(例えば、パリティビット)、及び/又は反転ビットを含み得る。
ブロック310において、メモリシステムは、例えば、信頼性の理由のために、メモリセクションの1つ以上のコードワードの情報ビットをフリッピングし得る。データビットをフリッピングすることは、元々蓄積された値(例えば、ブロック305において蓄積された値)から、異なる値(例えば、反対の値、論理1に対する論理0)にデータ及び制御ビットをフリッピングすること、又はデータ及び制御ビットを異なる値から元々蓄積された値に戻すようにフリッピングすることを含み得る。反対の値を蓄積するためにフリッピングされたデータ及び制御ビットは、反転状態にあると称され得る。情報ビットをフリッピングした後、メモリシステムは、コードワードのデータビット及び/又は制御ビットが反転状態にあるか否かを指し示す、コードワードに対する1つ以上の反転ビットをセットし得る。
例えば、論理値1を有する、コードワードに対する反転ビットは、コードワードが反転状態にあることを指し示し得、論理値0を有する、コードワードに対する反転ビットは、コードワードが元々の/期待される状態にあることを指し示し得る。幾つかの場合、フリッピングは、メモリシステムの内部で実施され得、したがって、ユーザアプリケーション及びその他のメモリコンポーネントは、コードワード内に蓄積された情報が元々蓄積された何らかから変化したことを知らなくともよい。したがって、メモリシステムは、コードワード内に蓄積された情報を、リクエストするデバイスに配送する前に、送信された何れのデータが反転されているか、又は反転された情報ビットを元々の状態に戻しているかを、リクエストするデバイスに指し示し得る。
ブロック315において、メモリシステムは、例えば、ユーザアプリケーション又は別のメモリコンポーネントから、1つ以上のコードワード内に蓄積されたデータに対するリクエストを受信し得る。データのリクエストに応答して、メモリシステムは、メモリセクション全体にアクセスし得る。すなわち、メモリシステムは、メモリセクション内の各メモリセル内に蓄積された論理状態をセンシングし得る。センシングされた論理状態は、情報ビットを処理し得る読み出しコンポーネント200へ、対応する情報ビットとしてその後送信され得る。情報ビットは、1つ以上のコードワードに対するデータビット及び制御ビットを含み得る。本明細書で論じるように、読み出しコンポーネント200は、メモリセクションのコードワード毎にデータビット及び制御ビットを別々に処理し得る。ブロック320~350は、こうしたコードワードの処理の態様を説明する。
ブロック320において、読み出しコンポーネント200は、冗長修復と称される処理の間に、コードワード毎に(例えば、第1のビット修復コンポーネント245、第2のビット修復コンポーネント260、及び第3のビット修復コンポーネント265において)特定のデータビット及び制御ビットを冗長ビットと置換し得る。修復されたデータビットは、誤り識別コンポーネント235及びビット訂正コンポーネント等の誤り訂正回路へ送信され得る。修復された制御ビットは、誤り識別コンポーネント235及びフリップビットジェネレータ270へ送信され得る。幾つかの場合、冗長修復の期間は、冗長ビットがメモリセクションに渡って伝搬する間の時間を含む。
ブロック325において、誤り識別コンポーネント235は、コードワード毎に誤り訂正を実施し得る。誤り訂正の間、誤り識別コンポーネント235は、(もしあれば)何れのデータビットが破損しているかを識別する、コードワードのデータビットに対するシンドロームビットを生成し得る。幾つかの場合、シンドロームビットは、コードワードのデータビット、誤り訂正ビット、及び/又は反転ビットに基づいて生成される。ビット訂正コンポーネント250は、シンドロームビットを受信し得、例えば、識別されたデータビットの論理値をフリッピングすることによって、破損していると識別されている任意のデータビットを訂正し得る。
コードワード毎にシンドロームビットを生成した後、誤り識別コンポーネント235は、シンドロームビットをデータコンポーネント225へ送り得る。メモリセクションのコードワード毎にシンドロームビットを送ることは、(例えば、メモリセクションの物理的サイズに起因する)伝搬遅延、及び(例えば、特に、シンドロームビットが連続的に処理される場合には)処理遅延によって遅く成り得る。読み出しコンポーネント200は、コードワード毎のシンドロームビットを制御コンポーネント230に分散する間に発生する伝搬遅延を導くことを避けるために、コードワードの反転ビットに対するシンドロームビットを生成するのを控え得る。幾つかの場合、シンドロームビットは、コードワードに対するフリップビットを生成する間又は後に、コードワードのデータビットに対して生成され得、幾つかの場合、誤り識別コンポーネント235は、フリップビットがビットフリッピングコンポーネント255へ送信された後に、シンドロームビットをビット訂正コンポーネント250へ送信し得る。
ブロック330において、フリップビットジェネレータ270は、各コードワードの反転ビットの値に基づいて、コードワード毎にフリップビットを生成し得る。幾つかの場合、フリップビットの生成と、ブロック325において論じられる誤り訂正の態様とは、同時に実施される。例えば、フリップビットは、シンドロームビットと同時に、又はシンドロームビットがデータコンポーネント225へ配送されている間に生成され得る。フリップビットジェネレータ270は、コードワード毎のフリップビットをビットフリッピングコンポーネント255へ送信し得る。幾つかの場合、フリップビットは、シンドロームビットの少なくとも一部分がビット訂正コンポーネント250へ配送される前にビットフリッピングコンポーネント255へ送信され得る。幾つかの場合、フリップビットは、訂正されたデータビットの少なくとも一部分がビット訂正コンポーネント250からビットフリッピングコンポーネント255へ送信される前にビットフリッピングコンポーネント255へ送信され得る。この方法では、シンドロームビットを送信することにより発生する伝搬遅延は和らげられ、データビットに対する処理速度は増加し得、例えば、ブロック320~350に対する合計処理時間は5nsから4nsに減少し得る。
ブロック350において、ビットフリッピングコンポーネント255は、1つ以上のコードワードに対する訂正されたデータビット及びフリップビットを受信し得、対応するフリップビットの値に基づいて、コードワードに対する訂正されたデータビットの値をフリッピングし得る。例えば、ビットフリッピングコンポーネント255は、訂正されたデータビットと、コードワード内に蓄積されたデータビットが反転状態にあることを指し示す、コードワードに対するフリップビットとを受信し得、このことは、例えば、フリップビットの値が論理1であると判定することに基づく。
幾つかの場合、コードワードに対する反転ビットの内の少なくとも幾つか(例えば、過半数又は全て)が、データビットが反転状態にあることを指し示す、とフリップビットジェネレータ270が判定することに基づいて、フリップビットは、データビットが反転状態にあることを指し示し得る。したがって、ビットフリッピングコンポーネント255は、データビットをそれらの元々蓄積された値に戻すために、訂正されたデータビットをフリッピングし得る。ビットフリッピングコンポーネント255は、メモリバッファ等のリクエストするデバイスへ、フリッピングされたデータビット(又は“グローバルデータビット”)をその後送信し得る。
或いは、ビットフリッピングコンポーネント255は、訂正されたデータビットと、コードワード内に蓄積されたデータビットが元々の状態にあることを指し示す、コードワードに対するフリップビットとを受信し得、このことは、例えば、フリップビットの値が論理0を指し示すと判定することに基づく。幾つかの場合、コードワードに対する反転ビットの内の複数(例えば、少数(minority))が、データビットが反転状態にあることを指し示す、とフリップビットジェネレータ270が判定することに基づいて、フリップビットは、データビットが反転状態にないことを指し示す。したがって、ビットフリッピングコンポーネント255は、訂正されたデータビットをフリッピングすることなく、訂正されたデータビットを、リクエストするデバイスへ送信し得る。
本明細書で論じるように、例えば、フリップビットを生成するために破損した反転ビットを使用することに起因して、誤り訂正されていないフリップビットを使用することは、意図しないフリッピング動作をもたらし得る。レイテンシを依然として減らしながらフリップビットの信頼性を増加させるために、メモリシステムは、代替的な誤り訂正技術及び/又は誤り訂正以外の技術を用い得る。信頼性を増加させるための例は、ブロック350の文脈で論じられ得る。
コードワードに対して複数の反転ビットが使用される場合、フリップビットジェネレータ270は、コードワードの情報が反転状態にあることを反転ビットの過半数が指し示すか否かを判定するために、図6及び図7を参照しながらより詳細に論じられるように、多数決回路を用いることによって反転ビットの代替的な誤り訂正を実施し得る。実例として、フリップビットジェネレータ270は、反転ビットの各々により蓄積された値を比較することによって、データビットが反転状態にあることを、コードワードの反転ビットの過半数が指し示すと判定することによって、コードワードのデータビットが反転状態にあると判定し得る。又は、フリップビットジェネレータ270は、反転ビットの各々により蓄積された値を比較することによって、データビットが反転状態にあることを、コードワードの反転ビットの少数が指し示すと判定することによって、コードワードのデータビットが元々の状態にあると判定し得る。複数の反転ビットを使用してフリップビットを生成することは、使用される反転ビットの数の関数としてフリップビットのUBERを増加させ得る。
幾つかの例では、コードワードに対するフリップビットと関連付けられた第1の誤り率は、コードワードのデータビットと関連付けられた第2の誤り率以上であり得る。例えば、多数決スキームを使用して生成されたコードワードに対するフリップビットのUBERは、コードワードのデータビットのUBER以上であり得る。実例として、3つの反転ビットを含むコードワードに対しては、フリップビットのUBERは、メモリシステム内に蓄積された個々の情報ビットのRBER2の3C2倍であり得、例えば、単一の未訂正の情報ビットのRBERは1e-10であり得、フリップビットのUBERは3e-20であり得る。
付加的に又は代替的に、コードワードに対して複数の反転ビットが使用される場合、読み出しコンポーネント200は、反転ビットの誤り訂正を実施することなく、フリップビットとして使用され得る単一の高い信頼性の反転ビットを生成するために、ロバスト性のあるセンシングスキームを用い得る。ロバスト性のあるセンシングスキームにより生成された反転ビットの信頼性(例えば、反転ビットのRBER)は、メモリデバイス内の誤り訂正された情報ビットの信頼性(例えば、誤り訂正された情報ビットのUBER)よりも高くてもよい。ロバスト性のあるセンシングスキームは、図5を参照しながらより詳細に論じられる。
コードワードに対して単一の反転ビットが使用される場合、読み出しコンポーネント200は、ロバスト性のあるメモリセル内に単一の反転ビットを蓄積し得、反転ビットの誤り訂正を実施することなく、単一の高い信頼性の反転ビットをフリップビットとして使用し得る。幾つかの場合、反転ビットの信頼性(例えば、反転ビットのRBER)は、メモリデバイス内の誤り訂正された情報ビットの信頼性(例えば、誤り訂正された情報ビットのUBER)よりも高くてもよい。上の技術の各々は、誤り訂正技術を使用してフリップビットを生成することと同等以上の信頼性を有するフリップビットを生成するために使用され得る。
コードワード毎に単一の反転ビットが使用される場合、コードワードに対するフリップビットを生成することは、反転ビットの値をコピーすること又はフリップビットジェネレータ270を通じて反転ビットを送信することを含み得る。コードワード毎に複数の反転ビットが使用される場合、コードワードに対するフリップビットを生成することは、複数の反転ビットの値に基づいてフリップビットの値を計算することを含み得る。或いは、単一の高い信頼性の反転ビットを生成するためにコードワード毎に複数の反転ビットが使用される場合、コードワードに対するフリップビットを生成することは、反転ビットの値をコピーすること又はフリップビットジェネレータ270を通じて反転ビットを送信することを含み得る。
幾つかの場合、メモリシステムは、フリップビットの生成と同時にデータビットに対する誤り訂正を実施し得ると共に、フリップビットの信頼性を増加させるために、代替的な誤り訂正/その他の技術を使用し得る。この方法では、メモリデバイスの信頼性は、メモリデバイスのスループットをも増加させながら有利に維持され得る。
図4は、本開示の様々な態様に従った強化されたビットフリッピングスキームのための例示的なメモリ構成を説明する。メモリ構成400は、デジタル情報を蓄積するために使用され得る。メモリ構成400は、メモリセクション405等のメモリセクション、コードワード410等のコードワード、及びメモリユニット425等のメモリユニットを含み得る。
メモリセクション405は、数百又は数千のメモリセル内に蓄積された情報を包含し得る。幾つかの場合、メモリセルは、物理的に長距離(例えば、~1mm)に渡って及び得る。幾つかの場合、メモリセクション405は、メモリのページ(例えば、1024ビット)に対応し、コードワード410を含む複数のコードワード(例えば、8つのコードワード)を含む。
コードワード410は、数百のメモリセルを包含し得る。幾つかの場合、コードワード410は、プリフェッチサイズ(例えば、128ビット)に対応し、データ部分415及び制御部分420を含む。データ部分415は、アプリケーションデータ等のデータビットを蓄積し得る。制御部分420は、冗長ビット、誤り訂正ビット、及び反転ビット等の制御ビットを蓄積し得る。制御ビットは、データ部分415内に蓄積されたデータビットの処理を容易にするため、及びデータ部分415内に蓄積されたデータビットの信頼性を増加させるために使用され得る。データ部分415及び制御部分420は、メモリユニットに更に分割され得る。メモリユニット425等のメモリユニットは、少数のメモリセル(例えば、2、4、又は8)を包含し得る。幾つかの場合、メモリユニット425は複数のビットに対応し得る。
幾つかの場合、コードワード410内に蓄積されたデータが別のデバイスによりリクエストされた場合に、メモリセクション405の全てがアクセスされる。幾つかの場合、メモリセクション405の全てにアクセスすることは、例えば、メモリセクション405内のメモリセルの物理的な長距離に起因して、メモリ動作の間の伝搬遅延をもたらす。
本明細書で論じるように、これらの伝搬遅延は、動作の処理ステップが連続的に実施される場合に悪化し得、伝搬遅延を減らすために、メモリシステムは、フリップビットの生成及びコードワードに対するデータビットの誤り訂正等の幾つかのステップを並列に実施し得る。
本明細書でまた論じるように、代替的な誤り訂正技術を使用して、生成されたフリップビットの信頼性を増加させるために、メモリシステムは、コードワード毎に複数の反転ビットを利用し得る。幾つかの例では、複数の反転ビットは、制御部分420内に蓄積され得る。例えば、3つの反転ビットは、9つの誤り訂正ビット及び12個の冗長ビットと共に、制御部分420内に蓄積され得る。別の例では、2つの反転ビットは、9つの誤り訂正ビット、12個の冗長ビット、及び1つの未使用ビットと共に、制御部分420内に蓄積され得る。
図5は、本開示の様々な態様に従った強化されたビットフリッピングスキームのための例示的なロバストセンシングコンポーネントを説明する。ロバストセンシングスキーム500は、複数の反転ビットに基づいて、単一の高い信頼性の反転ビットを生成するために使用され得、図2のロバストセンシングコンポーネント275の一例であり得る。ロバストセンシングスキーム500は、第1の入力線505、第2の入力線510、差動センシングコンポーネント515、及び出力線520を含み得る。
第1の入力線505は、第1のメモリセルにおいて蓄積された論理状態を差動センシングコンポーネント515に通信するために使用され得る。第1の入力線505は、導電トレース又は無線通信経路であり得る。
第2の入力線510は、第2のメモリセルにおいて蓄積された論理状態を差動センシングコンポーネント515に通信するために使用され得る。第2の入力線510は、導電トレース又は無線通信経路であり得る。
差動センシングコンポーネント515は、第1及び第2のメモリセル内に蓄積された論理値から単一の高い信頼性のビットを生成するために使用され得る。幾つかの場合、第1のメモリセルは、コードワードに対する第1の反転ビットの値を蓄積するために使用され得、第2のメモリセルは、コードワードに対する第2の反転ビットの値を蓄積するために使用され得る。第1及び第2の反転ビットの論理値は同じであり得る。第1のメモリセルは、第1の方向に分極され得、第2のメモリセルは、第2の方向に分極され得る。こうしたスキームを使用することは、集合的メモリセルに対するセンシングウィンドウを二倍にし得、リファレンス電圧が使用されなくてもよい。センシングされる場合、メモリセルは、蓄積された反転ビットに基づいて、高電圧及び低電圧を生成し得、各電圧は、差動アンプに印加され得、単一のより高い信頼性の反転ビットを生成する。
出力線520は、差動センシングコンポーネント515により生成された高い信頼性の反転ビットを読み出しコンポーネントに通信するために使用され得る。幾つかの場合、高い信頼性の反転ビットは、フリップビットを生成するために、又はフリップビットとして使用され得る。出力線520は、導電トレース又は無線通信経路であり得る。
図6は、本開示の様々な実施形態に従った強化されたビットフリッピングスキームのための例示的なフリップビットジェネレータを説明する。フリップビットジェネレータ600は、複数の反転ビットに基づいてフリップビットを生成するために使用され得、図2のフリップビットジェネレータ270の一例であり得る。フリップビットジェネレータ600は、入力線605、多数決コンポーネント610、及び出力線615を含み得る。
入力線605は、コードワードの複数の反転ビットの値を多数決コンポーネント610に通信するために使用され得る。入力線605は、導電トレース又は無線通信経路であり得る。幾つかの場合、入力線605は、3つ以上の入力線であり得る。幾つかの場合、入力線605は、単一の入力線であり得、連続的な方法で複数の反転ビットを多数決コンポーネント610へ配送し得る。
多数決コンポーネント610は、誤り訂正スキームを実装するために、及びコードワードのデータビットが反転又は元々の状態にあることを反転ビットの内の少なくとも幾つか(例えば、過半数又は全て)が指し示すか否かを判定するために使用され得る。多数決コンポーネント610はまた、反転ビットの数の関数としてフリップビットの信頼性を増加させ得る。例えば、3つの反転ビットに対しては、フリップビットの信頼性は、RBER2の3C2倍であり得、4つの反転ビットに対しては、フリップビットの信頼性は、RBER3の4C3倍であり得、5つの反転ビットに対しては、フリップビットの信頼性は、RBER3の6C3倍であり得る。
幾つかの例では、多数決コンポーネント610は、例えば、2つの反転ビットの各々の値が論理1であることに基づいて、コードワードのデータビットが反転状態にあることを指し示す3つの反転ビットの内の2つを識別し得、データビットをフリッピングするようにビットフリッピングコンポーネントを発動するフリップビットを生成し得、例えば、多数決コンポーネント610は、データビットが反転状態にあると判定し得る。或いは、多数決コンポーネント610は、コードワードのデータビットが反転状態にあることを3つの反転ビットの内の1つが指し示すことを識別し得、データビットをフリッピングするようにビットフリッピングコンポーネントを発動しないフリップビットを生成し得、例えば、多数決コンポーネント610は、データビットが元々の状態にあると判定し得る。
出力線615は、図2を参照しながら論じたようなビットフリッピングコンポーネント255等のビットフリッピングコンポーネントに、生成されたフリップビットを通信するために使用され得る。出力線615は、導電トレース又は無線通信経路であり得る。
図7は、本開示の様々な態様に従った強化されたビットフリッピングスキームのための例示的な多数決回路を説明する。多数決回路700は、誤り訂正スキームを実装するために使用され得る。幾つかの場合、多数決回路700は、3つの反転ビットを使用してフリップビットを生成するために使用され得、図6の多数決コンポーネント610の一例であり得る。多数決回路700は、第1の電圧源705、第2の電圧源710、第3の電圧源715、第4の電圧源720、第5の電圧源740、第6の電圧源745、第7の電圧源750、第8の電圧源755、第1の入力線725、第2の入力線730、第3の入力線735、出力線760、p型トランジスタ765、及びn型トランジスタ770を含み得る。
第1の電圧源705、第2の電圧源710、第3の電圧源715、及び第4の電圧源720は、高電圧(例えば、正電圧)を多数決回路700に提供し得る。幾つかの場合、第1の電圧源705、第2の電圧源710、第3の電圧源715、及び第4の電圧源720は、単一の電圧源を使用して実装され、例えば、第1の電圧源705、第2の電圧源710、第3の電圧源715、及び第4の電圧源720の各々は、高供給レール(例えば、3.3Vレール)に関連付けられ得る。
第5の電圧源740、第6の電圧源745、第7の電圧源750、及び第8の電圧源755は、低電圧(例えば、仮想接地又は正電圧)を多数決回路700に提供し得る。幾つかの場合、第5の電圧源740、第6の電圧源745、第7の電圧源750、及び第8の電圧源755は、単一の電圧源を使用して実装され、例えば、第5の電圧源740、第6の電圧源745、第7の電圧源750、及び第8の電圧源755の各々は、仮想接地に関連付けられ得る。
第1の入力線725は、第1の反転ビットの値を多数決回路700に通信するために使用され得る。第1の入力線725は、複数のp型トランジスタ765及び複数のn型トランジスタ770に接続され得る。
第2の入力線730は、第2の反転ビットの値を多数決回路700に通信するために使用され得る。第2の入力線730は、複数のp型トランジスタ765及び複数のn型トランジスタ770に接続され得る。
第3の入力線735は、第3の反転ビットの値を多数決回路700に通信するために使用され得る。第3の入力線735は、複数のp型トランジスタ765及び複数のn型トランジスタ770に接続され得る。
多数決回路700は、多数決回路700に提供される反転ビットの過半数の値に対応する出力値を生成し得る。すなわち、多数決回路は、3つの反転ビットの内の少なくとも2つにより保持される値と同じ値である値を有する出力を生成し得る。
例えば、第1の入力線725に対応する第1の反転ビットが論理値1に対応する高電圧(例えば、3V)を有し、第2の入力線730に対応する第2の反転ビットが論理値0に対応する低電圧を有し、第3の入力線735に対応する第3の反転ビットが論理値1に対応する高電圧を有する場合、多数決回路700は、高電圧(例えば、3.3V)を有する出力を生成し得る。又は、第1の入力線725に対応する第1の反転ビットが論理値0に対応する低電圧(例えば、0V)を有し、第2の入力線730に対応する第2の反転ビットが論理値0に対応する低電圧を有し、第3の入力線735に対応する第3の反転ビットが論理値1に対応する高電圧を有する場合、多数決回路700は、低電圧(例えば、0V)を有する出力を生成し得る。
出力線760は、多数決回路700の出力値をビットフリッピングコンポーネント等の別のコンポーネントに通信するために使用され得る。幾つかの場合、多数決回路700により生成される出力値は、フリップビットと同じであり得る。幾つかの場合、フリップビットに対する高電圧は、該フリップビットに対応するコードワード内のデータビットをフリッピングするようにビットフリッピングコンポーネントを発動する。また、フリップビットに対する低電圧は、フリッピング動作を実施することなく、該フリップビットに対応するコードワード内のデータビットをビットフリッピングコンポーネントに送信させ得る。
図8は、本開示の様々な実施形態に従った強化されたビットフリッピングスキームをサポートするメモリアレイのブロック図である。ブロック図800は、図1を参照しながら論じたようなメモリアレイ100の一例であり得るメモリアレイ100-aを含み得る。メモリアレイ100-aは、電子メモリ装置と称され得、図1を参照しながら説明したメモリコントローラ140、ワード線110、ビット線115、センスコンポーネント125、及びメモリセル105の例示であり得るメモリコントローラ140-a、ワード線110-a、ビット線115-a、センスコンポーネント125-a、及びメモリセル105-aを含む。メモリアレイ100-aはまた、リファレンスコンポーネント820、ラッチ825、及び読み出しコンポーネント850を含み得る。メモリアレイ100-aのコンポーネントは、相互に電子通信し得、図1~図7を参照しながら説明した機能を実施し得る。
メモリコントローラ140-aは、他のコンポーネントと組み合わせて、メモリアレイ100-a全体を通じて電圧を印加し、データをメモリセル105-aに書き込み得、データをメモリセル105から読み出し得、図1~図7を参照しながら説明したようにメモリアレイ100-aを一般的に動作し得る。メモリコントローラ140-aは、バイアスコンポーネント810及びタイミングコンポーネント815を含み得る。幾つかの場合、メモリコントローラは、ビットフリッピングコンポーネント845を含み得る。メモリコントローラ140-aは、メモリセル105-a、センスコンポーネント125-a、及びリファレンスコンポーネント820と電子通信し得る。
バイアスコンポーネント810は、ワード線110-a又はビット線115-aを、それらの様々なノードに電圧を印加することによって活性化するように(例えば、メモリコントローラ140-aによって)構成され得る。例えば、バイアスコンポーネント810は、本明細書で説明するようにメモリセル105-aを読み出す又は書き込むための電圧を印加するように構成され得る。幾つかの場合、メモリコントローラ140-aは、図1を参照しながら説明したように、行デコーダ、列デコーダ、又はそれら両方を含み得る。このことは、メモリコントローラ140-aが1つ以上のメモリセル105にアクセスすることを可能にし得る。バイアスコンポーネント810はまた、センスコンポーネント125-aに対するリファレンス信号を生成するために、リファレンスコンポーネント820に電位を提供し得る。また、バイアスコンポーネント810は、センスコンポーネント125-aの動作のための電位を提供し得る。
タイミングコンポーネント815は、本明細書で論じる、読み出し及び書き込み等のメモリ機能を実施するためのスイッチング及び電圧印加に対するタイミングを含む、様々なワード線選択又はプレートバイアスのタイミングを制御するように構成され得る。幾つかの場合、タイミングコンポーネント815はバイアスコンポーネント810の動作を制御し得る。
リファレンスコンポーネント820は、センスコンポーネント125-aに対するリファレンス信号を生成するための様々なコンポーネントを含み得る。リファレンスコンポーネント820は、リファレンス信号を生み出すように構成された回路を含み得る。
センスコンポーネント125-aは、メモリセル105-aからの信号を、リファレンスコンポーネント820からのリファレンス信号と比較し得る。論理状態を判定すると、センスコンポーネントは、出力をラッチ825内にその後蓄積し得、それは、メモリアレイ100-aが一部である電子デバイスの動作に従って使用され得る。幾つかの場合、リファレンスコンポーネント820、センスコンポーネント125-a、及びラッチ825は、メモリコントローラ140-aのコンポーネントであり得る。
ビットフリッピングコンポーネント845は、強化されたビットフリッピングスキームの態様を管理するために使用され得る。実例として、ビットフリッピングコンポーネント845は、ビットフリッピング動作のためのタイミング情報をバイアスコンポーネント810及び/又はタイミングコンポーネント815に提供するために使用され得る。ビットフリッピングコンポーネント845はまた、フリップビット生成コンポーネント及び/又はビットフリッピングコンポーネントを含み得る。
読み出しコンポーネント850は、ラッチ825において蓄積された情報ビットを処理するために使用され得る。読み出しコンポーネント850は、図2を参照しながら論じたような読み出しコンポーネント200の態様を含み得る。
幾つかの場合、メモリコントローラ140-aは、読み出しコンポーネント850と組み合わせて、データビット及び反転ビットを含むコードワードの誤り訂正を実施し得、反転ビットは、データビットが反転状態にあるか否かを指し示す。幾つかの場合、コードワードのデータ及び反転ビットは、メモリセル105-a内に蓄積され、データ及び反転ビットの値は、センスコンポーネント125-aによりセンシングされる。メモリコントローラ140-aはまた、読み出しコンポーネント850と組み合わせて、複数の反転ビットにより蓄積された値に少なくとも部分的に基づいてフリップビットを、誤り訂正と同時に生成し得、フリップビットをビットフリッピングコンポーネントへ送信し得る。幾つかの場合、ビットフリッピングコンポーネントは、読み出しコンポーネント850内に含まれる。
幾つかの場合、メモリコントローラ140-aは、読み出しコンポーネント850と組み合わせて、データビットと、データビットが反転状態にあるか否かを指し示す反転ビットとを含むコードワードに対して、データビットが反転状態にあることを反転ビットの過半数が指し示すか否かを判定し得る。幾つかの場合、コードワードのデータ及び反転ビットはメモリセル105-a内に蓄積され、データ及び反転ビットの値はセンスコンポーネント125-aによってセンシングされる。メモリコントローラ140-aはまた、読み出しコンポーネント850と組み合わせて、データビットが反転状態にあることを反転ビットの過半数が指し示すか否かを判定することに少なくとも部分的に基づいてフリップビットを生成し得、フリップビットをビットフリッピングコンポーネントへ送信し得る。幾つかの場合、ビットフリッピングコンポーネントは読み出しコンポーネント850内に含まれ得る。
図9は、本開示の様々な実施形態に従った強化されたビットフリッピングスキームをサポートするシステムを説明する。システム900は、デバイス905を含み、デバイス905は、様々なコンポーネントに接続する、又は様々なコンポーネントを物理的にサポートするためのプリント回路基板であり得、又は該プリント回路基板を含み得る。デバイス905は、図1及び図8を参照しながら説明したメモリアレイ100の一例であり得るメモリアレイ100-bを含む。メモリアレイ100-bは、図1及び図8を参照しながら説明したようなメモリコントローラ140及びメモリセル105の例示であり得るメモリコントローラ140-b及びメモリセル105-bを含み得る。デバイス905はまた、プロセッサ910、BIOSコンポーネント915、周辺コンポーネント920、入力/出力制御コンポーネント925を含み得る。デバイス905のコンポーネントは、バス930を通じて相互に電子通信し得る。
プロセッサ910は、メモリコントローラ140-bを通じてメモリアレイ100-bを動作するように構成され得る。幾つかの場合、プロセッサ910は、図1及び図8を参照しながら説明したメモリコントローラ140の機能を実施し得る。その他の場合、メモリコントローラ140-bは、プロセッサ910に統合され得る。プロセッサ910は、汎用プロセッサ、デジタルシグナルプロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)若しくはその他のプログラミング可能な論理デバイス、別々のゲート又はトランジスタロジック、別々のハードウェアコンポーネントであり得、又はこれらの種類のコンポーネントの組み合わせであり得、プロセッサ910は、本明細書で説明する様々な機能を実施し得る。プロセッサ910は、例えば、様々な機能又はタスクをデバイス905に実施させるための、メモリアレイ100-b内に蓄積されたコンピュータ可読命令を実行するように構成され得る。
BIOSコンポーネント915は、ファームウェアとして動作するベーシック入力/出力システム(BIOS)を含むソフトウェアコンポーネントであり得、それは、システム900の様々なハードウェアコンポーネントを初期化し得、稼働し得る。BIOSコンポーネント915は、プロセッサ910と様々なコンポーネント、例えば、周辺コンポーネント920、入力/出力制御コンポーネント925等との間のデータの流れをも管理し得る。BIOSコンポーネント915は、リードオンリーメモリ(ROM)、フラッシュメモリ、又は任意のその他の不揮発性メモリ内に蓄積されたプログラム又はソフトウェアを含み得る。
周辺コンポーネント920は、任意の入力若しくは出力デバイス、又はそうしたデバイスに対するインタフェースを含み得、デバイス905に統合される。例示として、ディスクコントローラ、音声コントローラ、画像コントローラ、イーサネットコントローラ、モデム、ユニバーサルシリアルバス(USB)コントローラ、シリアル若しくはパラレルポート、又はペリフェラルコンポーネントインタコネクト(PCI)若しくはアクセラレーテッドグラフィックスポート(AGP)スロット等の周辺カードスロットを挙げることができる。
入力/出力制御コンポーネント925は、プロセッサ910と周辺コンポーネント920、入力デバイス935、又は出力デバイス940との間のデータ通信を管理し得る。入力/出力制御コンポーネント925はまた、デバイス905に統合されない周辺装置を管理し得る。幾つかの場合、入力/出力制御コンポーネント925は、外部の周辺装置への物理的接続又はポートを表し得る。
入力935は、デバイス905又はそのコンポーネントへの入力を提供する、デバイス905の外にあるデバイス又は信号を表し得る。これは、ユーザインタフェース、又はその他のデバイスとのインタフェース若しくはその他のデバイス間のインタフェースを含み得る。幾つかの場合、入力935は、周辺コンポーネント920を介してデバイス905とインタフェースで接続する周辺装置であり得、又は入力/出力制御コンポーネント925により管理され得る。
出力940は、デバイス905又はその何れかのコンポーネントからの出力を受信するように構成された、デバイス905の外にあるデバイス又は信号を表し得る。出力940の例は、表示装置、音声スピーカ、プリントデバイス、別のプロセッサ、又はプリント回路基板等を含み得る。幾つかの場合、出力940は、周辺コンポーネント920を介してデバイス905とインタフェースで接続する周辺装置であり得、又は入力/出力制御コンポーネント925により管理され得る。
メモリコントローラ140-b、デバイス905、及びメモリアレイ100-bのコンポーネントは、それらの機能を実行するように設計された回路で作られ得る。これは、本明細書で説明される機能を実行するように構成された様々な回路素子、例えば、導電線、トランジスタ、コンデンサ、インダクタ、抵抗器、アンプ、又はその他の能動素子若しくは非能動素子を含み得る。
図10は、本開示の様々な実施形態に従った、強化されたビットフリッピングスキームのための1つ以上の方法の態様を説明する。方法1000は、読み出し動作の間にコードワードを処理する態様を説明する。
ブロック1005において、方法は、図1~図7を参照しながら説明したように、データビット及び反転ビットを含むコードワードの誤り訂正を実施することを含み得、反転ビットは、データビットが反転状態にあるか否かを指し示す。幾つかの例では、ブロック1005の動作は、図1、図2、図8、及び図9を参照しながら説明したように、誤り識別コンポーネント又はメモリコントローラによって実施又は促進され得る。
ブロック1010において、方法は、図1~図7を参照しながら説明したように、誤り訂正と同時に、複数の反転ビットにより蓄積された値に少なくとも部分的に基づいてフリップビットを生成することを含み得る。幾つかの例では、ブロック1010の動作は、図1、図2、図6~図8、及び図9を参照しながら説明したように、フリップビットジェネレータ又はメモリコントローラによって実施又は促進され得る。
ブロック1015において、方法は、図1~図7を参照しながら説明したように、フリップビットをビットフリッピングコンポーネントへ送信することを含み得る。幾つかの例では、ブロック1015の動作は、図1、図2、図8、及び図9を参照しながら説明したように、ビットフリッピングコンポーネント又はメモリコントローラによって実施又は促進され得る。
図11は、本開示の様々な実施形態に従った、強化されたビットフリッピングスキームのための1つ以上の方法の態様を説明する。方法1100は、読み出し動作の間にコードワードを処理する態様を説明する。
ブロック1105において、方法は、図1~図7を参照しながら説明したように、データビットと、データビットが反転状態にあるか否かを指し示す反転ビットとを含むコードワードに対して、データビットが反転状態にあることを反転ビットの過半数が指し示すか否かを判定することを含み得る。幾つかの例では、ブロック1105の動作は、図1、図2、図6~図8、及び図9を参照しながら説明したように、フリップビットジェネレータ、多数決コンポーネント、又はメモリコントローラによって実施又は促進され得る。
ブロック1110において、方法は、図1~図7を参照しながら説明したように、データビットが反転状態にあることを反転ビットの過半数が指し示すか否かを判定することに少なくとも部分的に基づいてフリップビットを生成することを含み得る。幾つかの例では、ブロック1110の動作は、図1、図2、図6~図8、及び図9を参照しながら説明したように、フリップビットジェネレータ又はメモリコントローラによって実施又は促進され得る。
ブロック1115において、方法は、図1~図7を参照しながら説明したように、フリップビットをビットフリッピングコンポーネントへ送信することを含み得る。幾つかの例では、ブロック1115の動作は、図1、図2、図8、及び図9を参照しながら説明したように、ビットフリッピングコンポーネント又はメモリコントローラによって実施又は促進され得る。
幾つかの例では、本明細書で説明されるような装置は、方法1000等の1つ以上の方法を実施し得る。装置は、データビット及び反転ビットを含むコードワードの誤り訂正を実施することであって、反転ビットは、データビットが反転状態にあるか否かを指し示すことと、誤り訂正と同時に、複数の反転ビットにより蓄積された値に基づいてフリップビットを生成することと、フリップビットをビットフリッピングコンポーネントへ送信することとのための機構、手段、又は命令(例えば、プロセッサにより実行可能な命令を蓄積する非一時的コンピュータ可読媒体)を含み得る。
本明細書で説明する方法、装置、及び非一時的コンピュータ可読媒体の内の幾つかの例は、複数の反転ビットの各々により蓄積された値に基づいて、データビットが反転状態にあり得るか否かを判定することであって、フリップビットは、データビットが反転状態にあり得るか否かを判定することに基づいて生成され得ることのための動作、機構、手段、又は命令を更に含み得る。
本明細書で説明する方法、装置、及び非一時的コンピュータ可読媒体の内の幾つかの例は、複数の反転ビットの各々により蓄積された値を比較することによって、データビットが反転状態にあり得ることを反転ビットの過半数が指し示すと判定することと、データビットが反転状態にあり得ることを反転ビットの過半数が指し示すと判定することに基づいて、データビットが反転状態にあり得ると判定することとのための動作、機構、手段、又は命令を更に含み得る。
本明細書で説明する方法、装置、及び非一時的コンピュータ可読媒体の内の幾つかの例は、データビットが反転状態にあり得ると判定することに基づいてデータビットをフリッピングすることと、データビットがフリッピングされ得る後にデータビットをメモリバッファへ送信することとのための動作、機構、手段、又は命令を更に含み得る。
本明細書で説明する方法、装置、及び非一時的コンピュータ可読媒体の内の幾つかの例は、複数の反転ビットの各々により蓄積された値を比較することによって、データビットが反転状態にあり得ることを反転ビットの少数が指し示すと判定することと、データビットが反転状態にあり得ることを反転ビットの少数が指し示すと判定することに基づいて、データビットが元々の状態にあり得ると判定することと、データビットをメモリバッファへ送信することとのための動作、機構、手段、又は命令を更に含み得る。
本明細書で説明する方法、装置、及び非一時的コンピュータ可読媒体の内の幾つかの例では、誤り訂正を実施することは、フリップビットを生成する間又は後にデータビットに対するシンドロームビットを生成することのための動作、機構、手段、又は命令を含み得る。
本明細書で説明する方法、装置、及び非一時的コンピュータ可読媒体の内の幾つかの例は、ビットフリッピングコンポーネントと結合されたビット訂正コンポーネントへデータビットを送信することと、ビットフリッピングコンポーネントへフリップビットが転送され得る後にビット訂正コンポーネントへシンドロームビットを送信することのための動作、機構、手段、又は命令を更に含み得る。
本明細書で説明する方法、装置、及び非一時的コンピュータ可読媒体の内の幾つかの例は、誤り訂正の間に、複数のデータビットの内のデータビットが破損し得るか否かを判定することであって、シンドロームビットは、複数のデータビットの内のデータビットが破損し得るか否かを判定することに基づいて生成され得ることのための動作、機構、手段、又は命令を更に含み得る。
本明細書で説明する方法、装置、及び非一時的コンピュータ可読媒体の内の幾つかの例では、フリップビットのRBER又はUBERは、複数のデータビットの内のデータビットのUBER以上であり得る。
本明細書で説明する方法、装置、及び非一時的コンピュータ可読媒体の内の幾つかの例では、コードワード毎に誤り訂正動作を実施することと、コードワード毎に、コードワードの誤り訂正とは無関係に、反転ビットに基づいてフリップビットの値を判定することと、コードワード毎にフリップビットをビットフリッピングコンポーネントへ送信することとのための動作、機構、手段、又は命令を含み得る。
幾つかの例では、本明細書で説明されるような装置は、方法1100等の1つ以上の方法を実施し得る。装置は、データビットと、データビットが反転状態にあるか否かを指し示す反転ビットとを含むコードワードに対して、データビットが反転状態にあることを反転ビットの過半数が指し示すか否かを判定することと、データビットが反転状態にあることを反転ビットの過半数が指し示すか否かを判定することに基づいてフリップビットを生成することと、フリップビットをビットフリッピングコンポーネントへ送信することとのための機構、手段、又は命令(例えば、プロセッサにより実行可能な命令を蓄積する非一時的コンピュータ可読媒体)を含み得る。
本明細書で説明する方法、装置、及び非一時的コンピュータ可読媒体の内の幾つかの例は、コードワードの誤り訂正を実施することと、誤り訂正に基づいてデータビットに対するシンドロームビットを生成することと、フリップビットをビットフリッピングコンポーネントへ送信することと同時に、ビットフリッピングコンポーネントと結合され得るビット訂正コンポーネントへシンドロームビットを送信することとのための動作、機構、手段、又は命令を更に含み得る。
本明細書で説明する方法、装置、及び非一時的コンピュータ可読媒体の内の幾つかの例は、コードワードの誤り訂正を実施することと、誤り訂正に基づいてデータビットに対するシンドロームビットを生成することと、ビットフリッピングコンポーネントと結合され得るビット訂正コンポーネントへデータビットを送信することと、ビットフリッピングコンポーネントへフリップビットを送信した後にビット訂正コンポーネントへシンドロームビットを送信することとのための動作、機構、手段、又は命令を更に含み得る。
本明細書で説明する方法、装置、及び非一時的コンピュータ可読媒体の内の幾つかの例では、フリップビットと関連付けられた第1の誤り率は、データビットと関連付けられた第2の誤り率以上であり得る。本明細書で説明する方法は、可能的実装を説明すること、動作及びステップは、再配置又は、さもなければ変更され得ること、及びその他の実装が可能であることに留意すべきである。更に、方法の内の2つ以上からの実施形態は組み合わせられ得る。
幾つかの例では、装置又はデバイスは、汎用、又は専用ハードウェアを使用して、本明細書で説明する機能の態様を実施し得る。例えば、装置又はデバイスは、データビットを処理するように構成されたデータコンポーネントと、データビットが反転状態にあるか否かを指し示す反転ビットを含む制御ビットを処理するように構成された制御コンポーネントと、データコンポーネント及び制御コンポーネントと結合された誤り識別コンポーネントであって、データビット内の誤りを識別するように構成された誤り識別コンポーネントと、データビットが反転状態にあることを反転ビットの過半数が指し示すか否かに基づいて、データビットが反転状態にあるか否かを判定するように構成されたフリップビットジェネレータとを含み得る。幾つかの場合、制御ビットは誤り訂正ビット及び冗長ビットを含む。
装置又はデバイスの内の幾つかの例では、フリップビットジェネレータは、制御コンポーネント内に含まれ、データビットの過半数が反転状態にあるか否かに少なくとも部分的に基づいてフリップビットを生成することと、フリップビットをデータコンポーネントへ送信することとをするように構成される。幾つかの例では、フリップビットジェネレータは、シンドロームビットがデータコンポーネントへ送信される前又は間に、フリップビットをデータコンポーネントへ送信するように構成される。幾つかの例では、フリップビットジェネレータは、誤り識別コンポーネントの出力とは無関係に、データビットが反転状態にあるか否かを判定するように構成される。
装置又はデバイスの内の幾つかの例では、誤り識別コンポーネントは、データビット内で識別された誤りに少なくとも部分的に基づいてシンドロームビットをデータコンポーネントへ送信するように構成される。幾つかの場合、誤り識別コンポーネント及びフリップビットジェネレータは、相互に無関係に動作し得る。
幾つかの例では、装置又はデバイスは、フリップビットに少なくとも部分的に基づいてデータビットをフリッピングするように構成されたビットフリッピングコンポーネントを含む。幾つかの場合、データコンポーネントは、ビットフリッピングコンポーネントを含む。幾つかの例では、装置又はデバイスは、データコンポーネント、制御コンポーネント、及びメモリセクションを含むメモリアレイを含み、各メモリセクションはコードワードを含む。
幾つかの例では、装置又はデバイスは、メモリセクション内のコードワード毎にデータビット内の誤りを識別するように構成された1つ以上の誤り識別コンポーネントを含み、1つ以上の誤り識別コンポーネントは、前記誤り識別コンポーネントを含む。
幾つかの例では、装置又はデバイスは、メモリセクション内のコードワード毎に、データビットが反転状態にあるか否かを判定するように構成された1つ以上のフリップビットジェネレータを含み、1つ以上のフリップビットジェネレータは、前記フリップビットジェネレータを含み、1つ以上の誤り識別コンポーネント及び1つ以上のフリップビットジェネレータは相互に無関係に動作し得る。
他の例では、装置又はデバイスは、データビットを蓄積するように構成された第1のメモリセルと、反転ビットを含む制御ビットを蓄積するように構成された第2のメモリセルと、メモリアレイと結合された修復コンポーネントであって、データビットのサブセット及び制御ビットのサブセットを置換するように構成された修復コンポーネントと、修復コンポーネントの出力と結合された誤り識別コンポーネントであって、データビットのサブセットが置換された後にデータビット内の誤りを識別するように構成された誤り識別コンポーネントと、修復コンポーネントの出力と結合された多数決コンポーネントであって、誤り識別コンポーネントによるデータビット内の誤りの識別と同時に、データビットが反転状態にあることを反転ビットの過半数が指し示すか否か判定するように構成された多数決コンポーネントとを含み得る。
装置又はデバイスの内の幾つかの例では、多数決コンポーネントは、誤り識別コンポーネントから電気的に絶縁される。装置又はデバイスの内の幾つかの例では、修復コンポーネントは、データビットのサブセットを置換するように構成された第1のマルチプレクサと、制御ビットのサブセットを置換するように構成された第2のマルチプレクサとを含む。
幾つかの例では、装置又はデバイスは、第1のマルチプレクサの出力及び誤り識別コンポーネントと結合されたビット訂正コンポーネントであって、データビット内の誤りを訂正するように構成されたビット訂正コンポーネントを含む。幾つかの例では、装置又はデバイスは、多数決コンポーネント及びビット訂正コンポーネントと結合されたフリッピングコンポーネントを含み、フリッピングコンポーネントは、データビット内の誤りが訂正された後にデータビットをフリッピングするように構成される。
他の例では、装置又はデバイスは、データビット及び反転ビットであって、データビットが反転状態にあるか否かを指し示す反転ビットを含むコードワードの誤り訂正を実施するように構成された誤り識別コンポーネントと、誤り識別コンポーネントと結合されたフリップビットジェネレータであって、反転ビットのサブセットにより蓄積された値に少なくとも部分的に基づいてフリップビットを生成するように構成されたフリップビットジェネレータと、フリップビットジェネレータと結合されたビットフリッピングコンポーネントであって、フリップビットジェネレータからフリップビットを受信するように、及びフリップビットの値に少なくとも部分的に基づいてデータビットをフリッピングするように構成されたビットフリッピングコンポーネントとを含み得る。
装置又はデバイスの内の幾つかの例では、フリップビットジェネレータは多数決コンポーネントを含み、多数決コンポーネントは、データビットが反転状態にあることを反転ビットの過半数が指し示すか否かを判定するように構成される。幾つかの場合、フリップビットは、該判定に少なくとも部分的に基づいて生成される。
幾つかの例では、装置又はデバイスは、誤り識別コンポーネント及びフリップビットジェネレータと結合されたビット訂正コンポーネントを含む。幾つかの場合、ビット訂正コンポーネントは、データビット内の誤りを訂正するように構成される。幾つかの場合、誤り識別コンポーネントは、データビットに対するシンドロームビットを生成し、シンドロームビットをビット訂正コンポーネントであって、シンドロームビットに少なくとも部分的に基づいてデータビット内の誤りを訂正するように構成されたビット訂正コンポーネントへ送信するように更に構成される。幾つかの場合、フリップビットジェネレータは、ビット訂正コンポーネントへシンドロームビットが送信される前又は間にフリップビットをビットフリッピングコンポーネントへ送信するように構成される。
本明細書で使用されるとき、用語“仮想接地(virtual ground)”は、約ゼロボルト(0V)の電圧に保持されるがグランドと直接接続されない電気回路のノードを指す。したがって、仮想接地の電圧は、一時的に変動し得、定常状態で約0Vに戻り得る。仮想接地は、オペアンプ及び抵抗器を含む電圧分圧器等の様々な電子回路素子を使用して実装され得る。その他の実装も可能である。“仮想接地する(virtual grounding)”又は“仮想接地される(virtually grounded)”は約0Vに接続されることを意味する。
用語“電子通信”及び“結合”は、コンポーネント間の電子流動をサポートするコンポーネント間の関係を指す。これは、コンポーネント間の直接接続を含み得、又は仲介コンポーネントを含み得る。相互に電子通信する又は結合されたコンポーネントは、(例えば、通電された回路内の)電子若しくは信号を能動的に交換し得、又は(例えば、非通電の回路内の)電子若しくは信号を能動的に交換しないことがあるが、回路が通電されると電子若しくは信号を交換するように構成され得、動作可能であり得る。例として、スイッチ(例えば、トランジスタ)を介して物理的に接続された2つのコンポーネントは、スイッチの状態(すなわち、開放又は閉鎖)に関わらず電子通信し、又は結合され得る。
用語“絶縁”又は“電気的に絶縁”は、コンポーネント間を電子が現在流れることができないコンポーネント間の関係を指し、コンポーネントは、それらの間に開放回路がある場合に相互から絶縁される。例えば、スイッチにより物理的に接続された2つのコンポーネントは、スイッチが開放された場合に相互から絶縁され得る。
用語“実質的に”は、(該用語により実質的に修正される動詞又は形容詞)が絶対的である必要はないが、該特徴の利点を実現するのに十分近いことを意味する。
メモリアレイ100を含む本明細書で論じられるデバイスは、シリコン、ゲルマニウム、シリコン-ゲルマニウム合金、ヒ化ガリウム、窒化ガリウム等の半導体基板上に形成され得る。幾つかの場合、該基板は半導体ウエハである。その他の場合、該基板は、シリコンオングラス(SOG)若しくはシリコンオンサファイア(SOP)等のシリコンオンインシュレータ(SOI)基板、又は別の基板上の半導体材料のエピタキシャル層であり得る。基板又は基板のサブ地域の導電性は、リン、ホウ素、又はヒ素を含むがそれらに限定されない様々な化学種を使用したドーピングを通じて制御され得る。ドーピングは、イオン注入により、又は任意のその他のドーピング手段により、基板の初期の形成又は成長中に実施され得る。
本明細書で論じられる1つ以上のトランジスタは、電界効果トランジスタ(FET)を表し得、ソース、ドレイン、及びゲートを含む3端子デバイスを含み得る。端子は、導電性材料、例えば金属を通じて他の電子素子に接続され得る。ソース及びドレインは、導電性であり得、高濃度にドープされた、例えば縮退した、半導体領域を含み得る。ソース及びドレインは、低濃度にドープされた半導体領域又はチャネルによって分離され得る。チャネルがn型(すなわち、主たるキャリアが電子)である場合、該FETはn型FETと称され得る。チャネルがp型(すなわち、主たるキャリアがホール)である場合、該FETはp型FETと称され得る。チャネルは、絶縁ゲート酸化物によって覆われ得る。チャネルの導電性は、ゲートに電圧を印加することによって制御され得る。例えば、正の電圧又は負の電圧をn型FET又はp型FETに夫々印加することは、チャネルが導電性になることをもたらし得る。トランジスタの閾値電圧以上の電圧がトランジスタのゲートに印加された場合、トランジスタは“オン”に又は“活性化”され得る。トランジスタの閾値電圧未満の電圧がトランジスタのゲートに印加された場合、トランジスタは“オフ”に又は“不活性化”され得る。
添付の図面に関連して本明細書に記載される説明は、例示的構成を説明し、実装され得る又は請求項の範囲内にある全ての実施例を表さない。本明細書で使用される用語“例”“例示的”は、“好適”又は“その他の例よりも有利”ではなく“一例、実例、又は説明として役立つこと”を意味する。詳細な説明は、説明される技術の理解を提供する目的のための具体的詳細を含む。これらの技術は、しかしながら、これらの具体的詳細なしに実践され得る。幾つかの実例では、説明される実施例の内容を不明確にすることを避けるために、周知の構造及びデバイスはブロック図の形式で示される。
情報及び信号は、様々な異なる科学技術及び技術の内の何れかを使用して表され得る。例えば、上述の説明全体通じて言及され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、及びチップは、電圧、電流、電磁波、磁界若しくは磁性粒子、光場若しくは光粒子、又はそれらの任意の組み合わせにより表され得る。
本明細書の開示と関連して説明される様々な説明ブロック及びコンポーネントは、本明細書で説明される機能を実施するように設計された汎用プロセッサ、デジタルシグナルプロセッサ(DSP)、ASIC、FPGA若しくはその他のプログラム可能論理デバイス、別々のゲート若しくはトランジスタロジック、別々のハードウェアコンポーネント、又はそれらの任意の組み合わせで実装又は実施され得る。汎用プロセッサは、マイクロプロセッサであり得るが、代わりに、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、又はステートマシーンであり得る。プロセッサはまた、コンピューティングデバイスの組み合わせ、例えば、DSPとマイクロプロセッサとの組み合わせ、複数のマイクロプロセッサ、DSPコアと連携した1つ以上のマイクロプロセッサ、又は任意のその他のそうした構成として実装され得る。
本明細書に説明される機能は、ハードウェア、プロセッサにより実行されるソフトウェア、ファームウェア、又はそれらの任意の組み合わせで実装され得る。プロセッサにより実行されるソフトウェアで実装される場合、機能は、コンピュータ可読媒体上の1つ以上の命令又はコードとして蓄積され得、又は送信され得る。その他の実施例及び実装は、本開示及び添付の請求項の範囲内である。例えば、ソフトウェアの性質に起因して、上で説明した機能は、プロセッサにより実行されるソフトウェア、ハードウェア、ファームウェア、配線、又はこれらの任意の組み合わせを使用して実装できる。機能を実装する機構はまた、機能の(複数の)部分が異なる物理的場所に実装されるように分散されることを含む、様々な位置に物理的に設置され得る。また、請求項を含む本明細書で使用されるとき、用語“及び/又は”は、2つ以上の項目のリスト内に使用される場合、列挙された雲久野何れか1つがそれ自体に用いられ得ること、又は列挙された項目の内の2つ以上の何れかの組み合わせが用いられ得ることを意味する。例えば、構成要素A、B、及び/又Cを含むものとして構成物が説明される場合、該構成物は、A単体、B単体、C単体、A及びBの組み合わせ、A及びCの組み合わせ、B及びCの組み合わせ、又はA、B、及びCの組み合わせを包含し得る。また、請求項を含む本明細書で使用されるとき、項目のリスト(例えば、“少なくとも1つの”又は“の内の1つ以上”等の句により前置きされる項目のリスト)に使用されるような“又は”は、例えば、“A、B、又はCの内の少なくとも1つ”のリストがA又はB又はC又はAB又はAC又はBC又はABC(すなわちA及びB及びC)を意味するように包含的リストを指し示す。
コンピュータ可読媒体は、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含むコンピュータストレージ媒体及び通信媒体の両方を含む。ストレージ媒体は、汎用又は専用のコンピュータによりアクセス可能な任意の利用可能な媒体であり得る。例として、非限定的に、コンピュータ可読媒体は、RAM、ROM、EEPROM、フラッシュメモリ、CD-ROM若しくはその他の光ディスクストレージ、磁気ディスクストレージ若しくはその他の磁気ストレージデバイス、又は所望のプログラムコード手段を命令若しくはデータ構造の形式で搬送若しくは蓄積するのに使用し得、且つ汎用若しくは専用コンピュータ又は汎用若しくは専用プロセッサによりアクセスし得る任意のその他の媒体を含み得る。また、任意の接続は、コンピュータ可読媒体として適切に称される。例えば、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者線(DSL)、又は赤外線、無線、及びマイクロ波等の無線技術を使用してウェブサイト、サーバ、又はその他の遠隔ソースからソフトウェアが送られる場合、同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、又は赤外線、無線、及びマイクロ波等の無線技術は媒体の定義に含まれる。本明細書で使用されるとき、ディスク(disk)及びディスク(disc)は、コンパクトディスク(CD)、レーザディスク、光ディスク、デジタル多目的ディスク(DVD)、フロッピーディスク、及びブルーレイディスクを含み、ディスク(disc)がレーザでデータを光学的に再生する一方で、ディスク(disk)はデータを磁気的に通常再生する。上の組み合わせもコンピュータ可読媒体の範囲に含まれる。
開示の説明は、当業者が開示を製作又は使用できるように提供される。開示への様々な変更が当業者に容易に分かるであろうし、本明細書で定義される包括的な原理は開示の範囲を逸脱することなくその他の変形に適用され得る。したがって、開示は、本明細書で説明された例示及び設計に限定されず、本明細書に開示された原理及び新規の機構と一致する最も広い範囲に一致する。