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

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

▶ タホ リサーチ リミテッドの特許一覧

<>
  • 特許-片側ソフト読み出し 図1
  • 特許-片側ソフト読み出し 図2A
  • 特許-片側ソフト読み出し 図2B
  • 特許-片側ソフト読み出し 図2C
  • 特許-片側ソフト読み出し 図3
  • 特許-片側ソフト読み出し 図4
  • 特許-片側ソフト読み出し 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-13
(45)【発行日】2024-08-21
(54)【発明の名称】片側ソフト読み出し
(51)【国際特許分類】
   G06F 11/10 20060101AFI20240814BHJP
   G11C 16/04 20060101ALI20240814BHJP
   G11C 11/56 20060101ALI20240814BHJP
   G11C 16/26 20060101ALI20240814BHJP
【FI】
G06F11/10 672
G11C16/04 170
G11C11/56 220
G11C16/26 100
【請求項の数】 20
【外国語出願】
(21)【出願番号】P 2023121400
(22)【出願日】2023-07-26
(62)【分割の表示】P 2019020247の分割
【原出願日】2019-02-07
(65)【公開番号】P2023139215
(43)【公開日】2023-10-03
【審査請求日】2023-07-28
(31)【優先権主張番号】15/948,556
(32)【優先日】2018-04-09
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】522426098
【氏名又は名称】タホ リサーチ リミテッド
(74)【代理人】
【識別番号】100147485
【弁理士】
【氏名又は名称】杉村 憲司
(72)【発明者】
【氏名】ジオン エス. クォック
(72)【発明者】
【氏名】プラナフ カラヴァデ
(72)【発明者】
【氏名】ラヴィ エイチ.モトワニ
【審査官】坂東 博司
(56)【参考文献】
【文献】特開2013-080450(JP,A)
【文献】特開2011-165301(JP,A)
【文献】特開2017-162068(JP,A)
【文献】米国特許出願公開第2018/0081542(US,A1)
【文献】米国特許出願公開第2015/0095736(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/10
G11C 16/04
G11C 11/56
G11C 16/26
(57)【特許請求の範囲】
【請求項1】
ソリッドステートドライブ(SSD)であって、当該ソリッドステートドライブ(SSD)は、
1または複数のフラッシュメモリチップであって、当該フラッシュメモリチップのそれぞれがストレージセルアレイを含む、1または複数のフラッシュメモリチップと、
前記1または複数のフラッシュメモリチップにおける前記ストレージセルアレイにアクセスするコントローラであって、ストレージセルの少なくとも1つの読み出しを行うコントローラと、
前記少なくとも1つの読み出しに応答して、
所期の読み出し基準電圧で前記ストレージセルに読み出しストローブを印加し、
前記所期の読み出し基準電圧の片側のみにおける電圧で前記ストレージセルに1または複数のソフト読み出しストローブを印加する
アクセス回路と
を備え、
前記コントローラは、前記読み出しストローブおよび前記1または複数のソフト読み出しストローブに対する前記ストレージセルの電気的応答に基づいて、論理値と前記論理値の精度の信頼性を示す1または複数のビットとを提供する、
ソリッドステートドライブ(SSD)
【請求項2】
前記コントローラは、1または複数の過去の読み出しからの誤り情報に基づいて、前記所期の読み出し基準電圧の片側のみにおける電圧で前記1または複数のソフト読み出しストローブを引き起こすよう、前記少なくとも1つの読み出しを行う、
請求項1に記載のソリッドステートドライブ(SSD)
【請求項3】
前記コントローラはさらに、
前記1または複数の過去の読み出しにおいて1-0誤りまたは0-1誤りのどちらがより多く生じたかを決定することを含めて、前記誤り情報を決定する、
請求項2に記載のソリッドステートドライブ(SSD)
【請求項4】
1-0誤りまたは0-1誤りのどちらがより多く生じたかの前記決定は、同じページからの符号語における0-1誤りビットおよび1-0誤りビットのカウントに基づく、
請求項3に記載のソリッドステートドライブ(SSD)
【請求項5】
1-0誤りまたは0-1誤りのどちらがより多く生じたかの前記決定は、訂正不可能な部分的に復号されたECC(誤り訂正符号)符号語において特定される0-1誤りビットおよび1-0誤りビットのカウントに基づく、
請求項3に記載のソリッドステートドライブ(SSD)
【請求項6】
符号語の少なくとも一部分に予め定められた数の0および1を含める符号によって符号語が生成され、
1-0誤りまたは0-1誤りのどちらがより多く生じたかの前記決定は、読み出された符号語における1および0の数の、前記予め定められた1および0の数との比較に基づく、
請求項3に記載のソリッドステートドライブ(SSD)
【請求項7】
前記論理値と信頼性を示す情報とに基づいて訂正不可能である誤りに応答して、前記コントローラは、前記所期の読み出し基準電圧の両側における読み出しストローブの印加を引き起こすよう、1または複数の追加的な読み出しを行う、
請求項から6のいずれか一項に記載のソリッドステートドライブ(SSD)
【請求項8】
1-0誤りがより多いことを前記誤り情報が示す場合、前記アクセス回路は、前記所期の読み出し基準電圧の、論理0を示すレベルに最も近い側における電圧で前記1または複数のソフト読み出しストローブを印加し、
0-1誤りがより多いことを前記誤り情報が示す場合、前記アクセス回路は、前記所期の読み出し基準電圧の、論理1を示すレベルに最も近い側における電圧で前記1または複数のソフト読み出しストローブを印加する、
請求項2から7のいずれか一項に記載のソリッドステートドライブ(SSD)
【請求項9】
前記1または複数のフラッシュメモリチップの少なくとも1つのための前記ストレージセルアレイは、マルチビットストレージセルを含むNANDフラッシュアレイを含む、
請求項1から8のいずれか一項に記載のソリッドステートドライブ(SSD)
【請求項10】
前記アクセス回路は、最も低い2つのレベル(L0およびL1)の間で前記1または複数のソフト読み出しストローブを印加し、より高いレベルについては所期の読み出し基準電圧の片側における追加的なソフト読み出しストローブを印加しない、
請求項9に記載のソリッドステートドライブ(SSD)
【請求項11】
ソリッドステートドライブ(SSD)コントローラであって、
前記ソリッドステートドライブ(SSD)の1または複数のフラッシュメモリチップにおけるストレージセルアレイのストレージセルの少なくとも1つの読み出しを行うコマンド回路であって、前記少なくとも1つの読み出しは、所期の読み出し基準電圧での前記ストレージセルへの読み出しストローブの印加と、前記所期の読み出し基準電圧の片側のみにおける電圧での前記ストレージセルへの1または複数のソフト読み出しストローブの印加とを引き起こす、コマンド回路と、
読み出しデータをホストに伝送するインターフェース回路であって、前記読み出しデータは、前記読み出しストローブおよび前記1または複数のソフト読み出しストローブに対する前記ストレージセルの電気的応答に基づいた、論理値と前記論理値の精度の信頼性を示す1または複数のビットとを含む、インターフェース回路と
を備える、ソリッドステートドライブ(SSD)コントローラ。
【請求項12】
前記コマンド回路は、1または複数の過去の読み出しからの誤り情報に基づいて、前記所期の読み出し基準電圧の片側のみにおける電圧での前記1または複数のソフト読み出しストローブを引き起こすよう、前記少なくとも1つの読み出しを行う、
請求項11に記載のソリッドステートドライブ(SSD)コントローラ。
【請求項13】
前記コマンド回路はさらに、
前記1または複数の過去の読み出しにおいて1-0誤りまたは0-1誤りのどちらがより多く生じたかを決定することを含めて、前記誤り情報を決定する、
請求項12に記載のソリッドステートドライブ(SSD)コントローラ。
【請求項14】
1-0誤りまたは0-1誤りのどちらがより多く生じたかの前記決定は、同じページからの符号語における0-1誤りビットおよび1-0誤りビットのカウントに基づく、
請求項13に記載のソリッドステートドライブ(SSD)コントローラ。
【請求項15】
1-0誤りまたは0-1誤りのどちらがより多く生じたかの前記決定は、訂正不可能な部分的に復号されたECC(誤り訂正符号)符号語において特定される0-1誤りビットおよび1-0誤りビットのカウントに基づく、
請求項13に記載のソリッドステートドライブ(SSD)コントローラ。
【請求項16】
符号語の少なくとも一部分に予め定められた数の0および1を含める符号によって符号語が生成され、
1-0誤りまたは0-1誤りのどちらがより多く生じたかの前記決定は、読み出された符号語における1および0の数の、前記予め定められた1および0の数との比較に基づく、
請求項13に記載のソリッドステートドライブ(SSD)コントローラ。
【請求項17】
前記論理値と信頼性を示す情報とに基づいて訂正不可能である誤りに応答して、前記コマンド回路は、前記所期の読み出し基準電圧の両側における読み出しストローブの印加を引き起こすよう、1または複数の追加的な読み出しを行う、
請求項1から16のいずれか一項に記載のソリッドステートドライブ(SSD)コントローラ。
【請求項18】
1-0誤りがより多いことを前記誤り情報が示す場合、前記1または複数のソフト読み出しストローブは、前記所期の読み出し基準電圧の、論理0を示すレベルに最も近い側における電圧で印加され、
0-1誤りがより多いことを前記誤り情報が示す場合、前記1または複数のソフト読み出しストローブは、前記所期の読み出し基準電圧の、論理1を示すレベルに最も近い側における電圧で印加される、
請求項12から17のいずれか一項に記載のソリッドステートドライブ(SSD)コントローラ。
【請求項19】
前記1または複数のフラッシュメモリチップの少なくとも1つのための前記ストレージセルアレイは、マルチビットストレージセルを含むNANDフラッシュアレイを含む、請求項11から18のいずれか一項に記載のソリッドステートドライブ(SSD)コントローラ。
【請求項20】
前記1または複数のソフト読み出しストローブは、最も低い2つのレベル(L0およびL1)の間で印加され、より高いレベルについては所期の読み出し基準電圧の片側における追加的なソフト読み出しストローブが印加されない、
請求項19に記載のソリッドステートドライブ(SSD)コントローラ。
【発明の詳細な説明】
【技術分野】
【0001】
本説明は、概してフラッシュメモリなどのメモリデバイスおよびストレージデバイスに関し、より詳細な説明は、フラッシュメモリの読み出しを行うための技法に関する。
【背景技術】
【0002】
モバイル、クライアント、およびエンタープライズの区分にわたるシステムにおいて、ストレージにフラッシュメモリ(例えばソリッドステートドライブ(SSD)など)を用いる動向がある。NANDフラッシュメモリなどのフラッシュストレージは、不揮発性ストレージ媒体である。不揮発性ストレージとは、デバイスへの電力が遮断された場合であっても確定的な状態を有するストレージを指す。揮発性ストレージと同様に、不揮発性ストレージの読み出しには、誤り(error)が生じることがある。フラッシュストレージデバイスは通常、誤りを検出および訂正するための技法を実装するが、全ての誤りが訂正可能ではなく、また誤り訂正技法は通常、読み出しオペレーションに遅延を上乗せする。
【図面の簡単な説明】
【0003】
以下の説明は、本発明の実施形態の実装例として供される図示を有する図についての議論を含む。図面は、限定としてではなく例として理解されるべきである。本明細書において用いる場合、1または複数の「実施形態」または「例」という記載は、本発明の少なくとも1つの実装形態に含まれる特定の特徴、構造、および/または特性を説明するものとして理解されるべきである。よって、本明細書において現れる「一実施形態において」または「一例において」などの文言は、本発明の様々な実施形態および実装形態を説明するものであり、必ずしもその全てが同じ実施形態を指すとは限らない。ただし、それらは必ずしも相互に排他的であるとも限らない。
【0004】
図1】マルチレベルフラッシュストレージセルの電圧確率分布の例を示す。
図2A】従来のソフト読み出しの例を示す。
図2B】片側ソフト読み出しの例を示す。
図2C】L0とL1との間のみで行われる片側ソフト読み出しの例を示す。
図3】片側ソフト読み出しを行うための方法の例を示すフローチャートである。
図4】片側ソフト読み出しが実装され得るフラッシュストレージデバイスを有するシステムのブロック図の例を示す。
図5】片側ソフト読み出しが実装され得るコンピューティングシステムの例示的な図示を提供する。
【0005】
以下は、特定の詳細および実装形態についての説明であり、下記で説明する実施形態の一部または全てを図示し得る図の説明を含むとともに、本明細書に提示する発明概念のその他の潜在的な実施形態または実装形態についても論じる。
【発明を実施するための形態】
【0006】
片側ソフト読み出しを本明細書に説明する。一例において、片側ソフト読み出しは、所期の基準読み出し電圧よりも上または下のいずれかである1または複数の追加的な読み出しストローブを印加することを伴う。所期の読み出し基準電圧の片側に印加される追加的な読み出しストローブは、読み出された値の信頼性に関する情報(「ソフト情報」と称する場合がある)をもたらすことができる。
【0007】
フラッシュストレージデバイスに格納されたデータにアクセスするための読み出しオペレーションは、通常、1または複数の読み出し電圧をストレージセルに印加して、セルがその(1または複数の)印加電圧において電流を伝導するかを調べることを伴う。単一セルに複数ビットを格納できるフラッシュストレージセルにおいては、複数レベルの読み出し電圧(読み出しストローブまたは読み出しパルスと称する場合がある)がセルに印加される。次いで、セルが複数の異なる読み出し電圧において電流を伝導するか否かに基づいて、格納されている値を決定することができる。印加された読み出し電圧が閾値電圧よりも上である(例えば、セルがプログラミングされているレベルにおける閾値電圧よりも上である)場合、セルは電流を伝導することになる。印加された読み出し電圧が閾値電圧よりも下である場合、セルは電流を伝導しないことになる。
【0008】
図1は、マルチレベルフラッシュストレージセルの電圧確率分布の例を示す。x軸は閾値電圧であり、y軸は確率である。一例において、NANDメモリは、フラッシュメモリセルまたはトランジスタの浮遊ゲート内に様々な数の電子を格納することにより動作する。これらの電子は、トランジスタに電流を流すためにフラッシュトランジスタの制御ゲートに印加する必要がある最小電圧に影響する。この最小電圧は、閾値電圧またはVTとして知られている。NANDフラッシュメモリチップは、数十億個のフラッシュトランジスタを有する場合があり、これらは通常、2つの異なるレベルにプログラミングされて1セルあたり1ビットを格納するもの(SLC)、4つの異なるレベルにプログラミングされて1セルあたり2ビットを格納するもの(MLC)、もしくは8つの異なるレベルにプログラミングされて1セルあたり3ビットを格納するもの(TLC)、または16の異なるレベルにプログラミングされて1セルあたり4ビットを格納するもの、のいずれかである。NANDフラッシュメモリを読み出すときには、読み出し基準電圧が1または複数のワード線に沿って制御ゲートに印加される。読み出し基準電圧は、2つの異なるレベルの間に収まるように選定される。いくつかの場合において、トランジスタに電流が流れる場合は論理1として検出され、電流が流れない場合は論理0として検出される。他の場合においては、論理0と論理1とが逆転する。
【0009】
図1に示す例では、セルが取り得る4つのレベル、すなわちL0、L1、L2、およびL3が存在する。レベルL0~L3は、異なる2ビット論理値に対応する。図示の例において、L0は「11」に対応し、L1は「10」に対応し、L2は「00」に対応し、L3は「01」に対応する。ただし、異なる論理値を異なるレベルに割り当てた異なる規則を採用することもできる。図1に示すように、L0を取るセルは通常、L0において示す閾値電圧分布を呈することになり、L1、L2、またはL3を取るようプログラミングされたセルは通常、より高い閾値電圧分布を呈することになる。
【0010】
従来は、読み出し基準電圧での単一の読み出しストローブを、マルチレベルストレージセルのレベル間で印加していた。例えば、図1に示すように、下位ページが0であるか1であるかを決定するべく、中央読み出し基準電圧102がL1とL2との間で印加される。読み出し基準電圧は通常、所期の閾値電圧の間に収まるよう選択される。例えば、図1に示すように、読み出し基準電圧102は、L1およびL2における所期の閾値電圧の間の大きさを有する。そのような一例において、同様の読み出し基準電圧が、L0およびL1の所期の閾値電圧の間、ならびにL2およびL3の所期の閾値電圧の間で印加される。この例において、読み出し基準電圧102でのストローブによってセルが電流を伝導する場合、(L0およびL1の下位ページが論理1であることから)下位ページは論理1であると決定することができ、セルが電流を伝導しない場合、(L2およびL3の下位ページが論理0であることから)セルの下位ページは論理0であると決定することができる。
【0011】
しかしながら、閾値電圧が常に所期の分布内にあるとは限らない。これは、フラッシュトランジスタのVTを厳密にプログラミングできないこと、および、VTを増大または減少させる読み出しディスターブ、書き込みディスターブ、プログラムディスターブなどの作用があることによる。これにより、一部のトランジスタが読み出し基準電圧の誤った側に位置することになり、これが誤った論理ビット値として読み出される。図1の分布を参照すると、閾値電圧分布は、互いに接近するまたは重なる裾を有することがある。例えば、L1を取るようプログラミングされたセルは、L0またはL2の閾値電圧分布に比較的近いまたはこれと重なる閾値電圧を有することがある。そのような場合、読み出しストローブの結果が不正確になる場合がある。
【0012】
多くのビット誤りには、読み出し基準電圧よりもわずかに上または下のVTを有するフラッシュセルが関与する。したがって、読み出しオペレーションの信頼性を改善するための1つの技法は、ソフト読み出しを行うことである。「ソフト読み出し」は通常、読み出し基準電圧の両側における、読み出し基準電圧よりもほんのわずかに大きい電圧および小さい電圧での1または複数の追加的な読み出しストローブをセルに印加することを伴う。例えば、図1は、読み出し基準電圧102でのストローブに加え、電圧104、106、108、および110での追加的な読み出しストローブを示す。
【0013】
図1に示す例において、対数尤度比(LLR)を各追加読み出しストローブの電圧について示す。通常、テストデータに基づいて正規ガウス分布が仮定され、それからLLRが計算され得る。読み出し基準電圧は、(電流が伝導した最も高い電圧と、電流が伝導しなかった最も低い電圧未満との間の範囲で)閾値電圧が位置する可能性のある「ビン」または「ゾーン」を画定し得る。これらのビンについて、テストデータに基づいて予期される正規ガウス分布に関する仮定に基づき、LLR値が割り当てられ得る。図示の例において、LLRは、プログラミングされた値が実際は論理0であった場合に論理0を読み出す閾値電圧における確率を、プログラミングされた値が論理1であった確率で除算したものにより与えられる比の対数を取ることによって求められる。よって、ページ値が論理0である確率が、ページ値が論理1である確率よりも高い場合、LLRは正であり、ページ値が論理1である確率の方が高い場合には、LLRは負である。この例において、LLRの絶対値は必ずしも意味がある(例えばそれらの数がスケーリングできる)とは限らないが、複数の異なる電圧における、互いに対してのLLRは、誤り訂正に有用な情報を提供し得る。LLRは通常、LDPC符号で用いられる。ただし、片側ソフト読み出しは、LDPCに加え、ビタビ復号器による畳み込み符号などの他のタイプの符号で用いることもできる。所期の読み出し基準電圧よりも僅かに大きい読み出しおよび小さい読み出しを行うことにより、閾値電圧が境界に近い(例えば別のレベルの分布と重なる状態に近い)かどうかを決定することができる。閾値電圧が境界に近い場合、そのビットは信頼できない(例えば誤りである)おそれがある。
【0014】
このように、所期の読み出し基準電圧での読み出しを行うことにより決定される論理値に加えて、ソフト読み出しにより、その値がどれだけ信頼できるかを示す「ソフト情報」を提供することもでき、そしてこれをより強力なECC(誤り訂正符号)訂正のために用いることができる。しかしながら、ソフト読み出しは、読み出しオペレーションの遅延を増大させる。ソフト読み出しは通常、レギュラー読み出しと比較して少なくとも三倍の数の読み出しストローブを有する。マルチレベルフラッシュセルにおいては、シングルレベルフラッシュセルの場合よりもさらに多くの読み出しストローブがレギュラー読み出しに必要となり、ソフト読み出しのための読み出しストローブの数はさらに多くなる。したがって、マルチレベルフラッシュセル(トリプルレベルセル(TLC)またはクアッドレベルセル(QLC)など)のソフト読み出しは、レギュラー読み出しよりも著しく高遅延となる。
【0015】
これに対し、片側ソフト読み出しでは、従来のソフト読み出しほど大幅に読み出し遅延を増大させることなく、誤り訂正の改善をもたらすことができる。図2Aおよび図2Bは、それぞれ、従来のソフト読み出しおよび片側ソフト読み出しの例を示す。図2Aは、トリプルレベルセルにおける従来のソフト読み出しの例を示す。図2Aおよび図2Bには、8つの異なるレベル(L0~L7)に対応する8つの閾値電圧分布が示されている。したがって、図2Aおよび図2Bはまた、(閾値電圧分布間の実線で示される)7つの読み出しストローブを示す。図2Aはまた、XP(エクストラページ)読み出しストローブの所期の読み出し基準電圧の両側におけるソフト読み出しを示す。ソフト読み出しをXP(エクストラページ)読み出しについてのみ図示しているが、ソフト読み出しは全てのレベル間において行うことができる(例えば、上位ページ(UP)および下位ページ(LP)の読み出しにおいてソフト読み出しストローブを印加することもできる)ことに留意されたい。よって、図示の例においては、ソフト読み出しを行うために印加される追加的な8つの読み出しストローブが存在する。具体的には、図2Aは、XP読み出しにおける所期の読み出し基準電圧の各々よりも上および下の両方での追加的な読み出しを示す。
【0016】
これに対し、図2Bは、片側ソフト読み出しの例を示す。図2Bに見られるように、追加的な読み出しストローブは、XP読み出しにおける所期の読み出し基準電圧の片側のみに印加される。したがって、半分の数の追加的な読み出しストローブ(図2Aに示す通常のソフト読み出しのための8つの追加的な読み出しストローブと比較して、片側ソフト読み出しのための4つの追加的な読み出しストローブ)が存在する。図2Bは、追加的な読み出しストローブをXP読み出しについてのみ示すが、追加的な読み出しストローブは、XP読み出しに代えてまたはこれに加えて、UP読み出しおよびLP読み出しにおいても印加され得ることに留意されたい。しかしながら、図示の例においては、エクストラページを読み出すために印加される読み出しストローブ(4ストローブ)が、下位ページおよび上位ページを読み出すためのもの(下位ページの1ストローブおよび上位ページの2ストローブ)よりも多数存在する。したがって、図示の例において、片側ソフト読み出しは、XP読み出しにおいて印加される場合に、読み出しストローブの著しい削減をもたらす。
【0017】
図2Bに見られるように、片側ソフト読み出しのための追加的な読み出しストローブは、常に所期の読み出し基準電圧の同じ側に印加されるとは限らない。例えば、いくつかのレベルにおいては所期の読み出し基準電圧の大きさよりも小さい大きさで追加的な読み出しストローブが印加され、その他のレベルにおいては所期の読み出し基準電圧の大きさよりも大きい大きさで追加的な読み出しストローブが印加される。一例において、追加的な読み出しストローブが所期の読み出し基準電圧よりも上で印加されるか下で印加されるかは、ソフト読み出し誤りパターンに基づく。ソフト読み出し誤りパターンは、閾値電圧の大きさが増大するまたは大きさが減少する場合を含み得る。別のソフト読み出し誤りパターンは、0が1になることまたは1が0になることを含み得る。例えば、書き込まれた論理1が論理0として読み戻される傾向が存在することがあり、その逆もまた然りである。よって、そのような一例において、コントローラ(例えばフラッシュストレージコントローラ)内の論理は、ビットが0-1誤り(zero-to-one error)または1-0誤り(one-to-zero error)のどちらを有する可能性がより高いかを決定し、所期の読み出し基準電圧の片側における追加の読み出しストローブのみを行う。
【0018】
一例において、1-0誤りがより多い場合、追加的な読み出しは、所期の読み出し基準電圧の、論理0を示すレベルに最も近い側において行われる。0-1誤りがより多い場合、追加的な読み出しは、所期の読み出し基準電圧の、論理1を示すレベルに最も近い側において行われる。図2Bは、そのような、0-1誤りが存在する可能性がより高いと決定された場合の一例を示す。例えば、図2Bを参照すると、エクストラページ読み出しは、最下位ビット(ビット0)を決定する。L0とL1との間の読み出しストローブに応答してセルが電流を伝導する場合は、最下位ビットは論理1であり、セルが電流を伝導しない場合、最下位ビットは論理0である。したがって、L0とL1との間の読み出しストローブについて、所期の基準電圧の、論理1に最も近い「側」は、所期の基準電圧よりも下側(すなわち、所期の読み出し基準電圧よりも小さい大きさを有する電圧)である。いくつかの場合において、所期の読み出し基準電圧と追加的な読み出しストローブとは、異なる極性の電圧を取り得ることに留意されたい。例えば、図2Bを参照すると、L0とL1との間の所期の読み出し基準電圧は正の電圧として示されているが、所期の読み出し基準電圧の、論理1に最も近い側におけるL0とL1との間の追加的な読み出しストローブは、負の電圧であり得る。よって、そのような場合において、所期の読み出し基準電圧よりも「下」の追加的な読み出しストローブの大きさは、所期の読み出し基準電圧の大きさよりも小さい、それと同じである、またはさらにそれよりも大きいことも考えられる。しかしながら、図2Bに示す例においては、追加的な読み出しストローブ電圧と所期の読み出し基準電圧とは同じ極性を有し、したがって、追加的な読み出しストローブの大きさは、所期の読み出し基準電圧の大きさよりも小さい。
【0019】
これに対し、L2とL3との間の追加的な読み出しストローブは、所期の基準電圧よりも上である(すなわち、所期の読み出し基準電圧よりも大きい大きさを有する電圧である)。これは、図示の例において、L2とL3との間の読み出しストローブの印加に応答してセルが電流を伝導する場合は、最も下位のビットは論理0であり、セルが電流を伝導しない場合は、最も下位のビットは論理1であるためである。したがって、L2とL3との間の読み出しストローブについて、所期の読み出し基準電圧の、論理1に最も近い側は、所期の基準電圧よりも上側である。よって、図2Bに示す例において、0-1誤りが存在する可能性がより高い場合、L0とL1との間およびL4とL5との間の追加的な読み出しストローブは、それらのレベルにおける所期の読み出し基準電圧よりも小さい大きさを有し、L2とL3との間およびL6とL7との間の追加的な読み出しストローブは、それらのレベルにおける所期の読み出し基準電圧よりも大きい大きさを有する。したがって、追加的な読み出しストローブは、所期の読み出し基準電圧の片側のみに印加され得る。さらに、追加的なストローブの有する大きさが、所与のレベルにおける所期の読み出し基準電圧よりも大きいかまたは小さいかは、0-1誤りまたは1-0誤りのどちらがより多く予測されるかなどの誤り情報に基づくものであり得る。片側ソフト読み出しでは、読み出しストローブがより少なくなることで、通常のソフト読み出しよりも低遅延となり、また同時に信頼性情報を提供することで誤り訂正を改善することができる。
【0020】
当業者には理解されるであろうが、本開示において説明する技法は、シングルレベルセルおよびマルチレベルセルの両方に当てはまる。さらに、各レベルに割り当てられる論理値を、本開示において論じる例とは異なるものとすることもできる。加えて、図2BにはXP読み出しについて単一の片側読み出しストローブを示しているが、他の例においては、読み出し基準電圧の片側において複数のソフト読み出しを行うこともできる(例えば、読み出し基準電圧の片側において1、2、3、またはそれより多くのソフト読み出しを行うことができる)。
【0021】
図2Cもまた片側ソフト読み出しの例を示すが、(1または複数の)追加的な読み出しストローブはL0とL1との間のみである。一例において、セルは、最も低い2つのレベル(例えばレベル0(L0)およびレベル1(L1))の間において最も多数の誤りをこうむる場合がある。一例において、L0状態は負の電圧を取ることがあり、電圧分布は、0Vに向かって動く、またはさらに0Vを通り過ぎてより正側に進んでいく傾向を有する場合がある。この作用は、「プログラムディスターブ」と称されることがある。これは、プログラミングに高電圧を用いる場合があり、それによってセルがより高い閾値電圧に向かって動く場合があるためである。プログラムディスターブは、L0に著しく影響を及ぼすことがある。したがって、そのような一例においては、全ての隣接レベル間においてソフト読み出しを行うのではなく、L0とL1との間においてのみ追加的なソフト読み出しを行う。図2Cに示す例においては、全ての隣接レベル間において単一の読み出しストローブが行われ、L0とL1との間において1つのみの追加的なソフト読み出しストローブが行われる(例えば、L0とL1との間においては単一の読み出しストローブに代えて2つの読み出しストローブが行われる)。したがって、下位レベルにおいて多数の誤りをこうむるストレージデバイスにおいては、単一の追加的な読み出しストローブにより、読み出しの遅延を著しく増大させることなく、誤り訂正の改善を可能とすることができる。
【0022】
図3は、片側ソフト読み出しを行うための方法の例を示すフローチャートである。方法300は、フラッシュストレージデバイスのコントローラにより行われ得る。例えば、図4を参照すると、方法300は、下記でより詳細に説明するフラッシュストレージのコントローラ430および/またはアクセス回路により行われ得る。方法300は、ハードウェア、ファームウェア、ソフトウェア、またはその組み合わせにより行われ得る。
【0023】
本方法は、オペレーション302において、所期の読み出し基準電圧でフラッシュストレージデバイスのストレージセルの読み出しを行うことから開始する。この読み出しは、レギュラー読み出しまたはハード読み出しと称されることがある。例えば、コントローラは、図4のストレージ422などのストレージアレイにおける1または複数のストレージセルに、所期の読み出し基準電圧での読み出しストローブを印加し得る。所期の読み出し基準電圧は、セルが特定の値にプログラミングされている場合には印加された読み出し電圧に応答してセルに電流を伝導させ、かつ、異なる値にプログラミングされている場合には印加された読み出し電圧に応答して電流を伝導させないことが予期される電圧である。ストレージセルは通常、印加電圧が所与のレベルにおけるセルの閾値電圧を超える場合に電流を伝導する。マルチレベルセルにおいては、所期の読み出し基準電圧は通常、2つのレベルの所期の閾値電圧分布の間における電圧である。よって、コントローラは、セルが電流を伝導するか否かを決定することで、セルの論理値を決定する。方法300は、簡単のため、オペレーション302における単一の読み出しを説明するが、マルチレベルセルにおいては、複数の「レギュラー」読み出しが行われてもよいことに留意されたい。例えば、図2Aおよび図2Bを参照すると、TLCのエクストラページ(XP)を読み出すために4つの読み出しストローブが印加され、また3つのビット全てを決定するために、8つのレベル全てが区別できるよう7つのストローブが印加される。
【0024】
上記のとおり、異なるレベルにおける閾値電圧分布は、互いに接近するまたは重なる裾を有する場合があり、それによって読み出し誤りがもたらされることがある。これらの誤りは、非対称であり得る(例えば、0-1誤りまたは1-0誤りがより多い傾向があり得る)。したがって、方法300はさらに、オペレーション304において、所期の読み出し基準電圧の片側のみにおける電圧で1または複数の追加的な読み出しを行うことを伴う。例えば、図2Bを参照すると、XP読み出しにおいて、1つの追加的な読み出しストローブが所期の読み出し基準電圧の片側に印加される。追加的な読み出しストローブが所期の読み出し基準電圧よりも下であるか上であるかは、1または複数の過去の読み出しからの誤り情報に基づく、または、誤りがどちらの方向に偏る(skewed)可能性がより高いかを予測するための、最も頻発的な誤りメカニズムのバルク統計または履歴データなどの他の情報に基づくものであり得る。一例において、追加的な読み出しストローブが所期の読み出し基準電圧よりも下で印加されるべきか上で印加されるべきかは、プログラム-消去サイクルカウントに部分的に基づくものであり得る。フラッシュメモリにおけるプログラム-消去サイクルはフラッシュセルの消耗を引き起こし、それにより、発生したプログラム-消去サイクルの数に基づいて閾値電圧の分布が変化することがある。よって、1-0誤りまたは0-1誤りのどちらの可能性がより高いかの決定または予測は、プログラム-消去サイクルカウント、1または複数の過去の読み出しからの誤り情報、統計、または他の情報などの、1または複数のタイプの情報に基づくものであり得る。
【0025】
一例において、そのような誤り情報は、1または複数の過去の読み出しにおいて1-0誤りまたは0-1誤りのどちらがより多く生じたかに基づく。1-0誤りまたは0-1誤りのどちらがより多く生じたかを決定することは、同じページからの符号語における0-1誤りビットおよび1-0誤りビットのカウントに基づくものであり得る。別の例において、1-0誤りまたは0-1誤りのどちらがより多く生じたかの決定は、訂正不可能な部分的に復号されたECC(誤り訂正符号)符号語において特定される0-1誤りビットおよび1-0誤りビットのカウントに基づく。畳み込み符号、ターボ符号、およびLDPCなどの符号は、部分的に復号された統計を提供し得る。符号語の少なくとも一部分に予め定められた数の0および1を含める符号によって符号語が生成される場合の一例において、1-0誤りまたは0-1誤りのどちらがより多く生じたかの決定は、読み出された符号語における1および0の数の、当該予め定められた1および0の数との比較に基づく。例えば、50%の0および1を有するバランス符号(balanced code)を、符号語または符号語の一部において用いることができる(あるいは、50%でない場合は、0および1の数またはパーセンテージが格納されてトラッキングされ得る)。次いで、1-0誤りまたは0-1誤りにおける非対称性を決定するべく、0および1の数がカウントされ、所期の数と比較され得る。符号語の生成にLDPCが用いられる場合の例など、別の例においては、各変数ノードについての満たされる検査方程式の数に基づくLLR推定が行われ得る。LLR推定に基づいて、1-0誤りまたは0-1誤りに非対称性があるかを決定することができる。
【0026】
一例において、1-0誤りがより多いことを誤り情報が示す場合、コントローラは、所期の読み出し基準電圧の、論理0を示すレベルに最も近い側において1または複数の読み出しを行う。0-1誤りがより多いことを誤り情報が示す場合、コントローラは、所期の読み出し基準電圧の、論理1を示すレベルに最も近い側において1または複数の読み出しを行う。このように、所期の読み出し基準電圧のどちらの側において片側ソフト読み出しを行うべきかを決定するために、1または複数の技法が用いられ得る。
【0027】
オペレーション304において1または複数の追加的な読み出しを行った後、コントローラは、オペレーション306において、読み出しに基づいた論理値と、1または複数の追加的な読み出しに基づいた信頼性を示すソフト情報の1または複数のビットとを提供し得る。ソフト情報は、信頼性または信頼度情報と称されることがあり、通常、読み出された論理値がどれだけ信頼できるかについての、または誤りの可能性のインジケーションを提供する1または複数のビットからなる。
【0028】
レギュラー読み出しおよび(1または複数の)追加的な読み出しの実行は、種々の技法を用いて行うことができる。一例において、ストレージデバイス上のコントローラは、片側ソフト読み出しをもたらす、フラッシュコンポーネントへの単一のコマンド(例えば片側ソフト読み出しコマンド)を発行し得る。そのような一例において、片側ソフト読み出しコマンドは、レギュラー読み出しストローブと、所期の読み出し基準電圧の片側における追加的な読み出しストローブとの2つの読み出しストローブをもたらす単一のコマンドである。一例においては、1つよりも多くのコマンドが用いられ得る。例えば、コントローラは、2つの読み出しコマンド(所期の読み出し基準電圧での1つのレギュラー読み出しコマンド、および所期の読み出し基準電圧よりも上または下の電圧での第2の読み出しコマンド)を発行し、それら2つの読み出しコマンドの結果の組み合わせに基づいてメモリセルの値を決定し得る。両方の場合において、コマンドは、(1または複数の)読み出しストローブの読み出し電圧を示す情報を含んでよい。単一のソフト読み出しコマンドは、2つの別個の読み出しコマンドよりも小さい遅延を有する場合がある。例えば、フラッシュストレージコンポーネントが単一のソフト読み出しコマンドを受け取る場合、フラッシュコンポーネントは2つの読み出しを互いに極めて近い時間に行う場合があり、一方でフラッシュコンポーネントが2つの別個の読み出しコマンドを受け取る場合、フラッシュコンポーネントはそれらのコマンドを行うのにより長い時間がかかる場合があり、またコマンドの順序が異なる場合がある。
【0029】
いくつかの場合において、片側ソフト読み出しは依然として、訂正不可能な誤りをもたらす場合があることが考えられる。例えば、誤り率が非常に高い場合、0-1誤りの数が1-0誤りと等しいまたはほぼ同等である場合、またはその両方の場合において、片側ソフト読み出しは依然として訂正不可能な誤りをもたらす場合がある。そのような一例において、コントローラはまず片側ソフト読み出しの実行を試み、論理値と信頼性を示す情報とに基づいて訂正不可能である誤りに応答して、コントローラは所期の読み出し基準電圧の他方側における追加的な読み出しを行う。単一の訂正不可能な誤りに応答して通常の両側ソフト読み出しを行うこともでき、または、訂正不可能な誤りの数が閾値を超過したことを検出した後に、両側ソフト読み出しをデフォルトの読み出しオペレーションとすることもできる。例えば、訂正不可能な誤りの後、コントローラは、所期の読み出し基準電圧の他方側における電圧での1つのソフト読み出しを行うこともでき、または両側ソフト読み出しを行うこともできる。訂正不可能な誤りの数が閾値を超過したことをコントローラまたはホスト側コントローラが検出する場合の一例において、コントローラまたはホスト側コントローラは、フラッシュコントローラに両側ソフト読み出しをデフォルト設定させるようにレジスタ(例えばモードレジスタ)をプログラミングし得る。同様に、そのようなモードレジスタは、(例えば片側ソフト読み出しモードをイネーブルすることによって)フラッシュコントローラに片側ソフト読み出しを行わせるようにプログラミングされ得る。
【0030】
このように、片側ソフト読み出しを行う方法は、読み出しオペレーションの遅延を著しく増大させることなく、多くの状況において誤り訂正の改善を提供することができる。遅延の改善は、マルチレベルフラッシュストレージセル、またはセルに格納された値を読み出すために複数の電圧ストローブが印加される他のストレージセルにおいて、特に有効であり得る。さらに、誤り率が高い場合においては、フラッシュストレージコントローラが、追加的な信頼性情報のための両側ソフト読み出しを行うことができる。
【0031】
図4は、一例に係る、片側ソフト読み出しが実装され得るフラッシュストレージデバイスを有するシステムのブロック図を示す。システム400は、ホスト410に結合されたフラッシュストレージドライブ402を含む。デバイス402について、および本開示の全体を通してストレージとの用語を用いているが、フラッシュストレージデバイスはフラッシュメモリデバイスと称されることもある。一例において、フラッシュストレージドライブ402は、ソリッドステートドライブ(SSD)である。
【0032】
ホスト410は、フラッシュストレージデバイス402に接続するホストハードウェアプラットフォームを表す。ホスト410は、CPU(中央処理ユニット)420または他の(1または複数の)プロセッサをホストプロセッサとして含む。CPU420は、フラッシュストレージデバイス402に格納されたデータにアクセスする(それにより当該データの読み出しまたはストレージ422へのデータの書き込みのいずれかを行う)ための要求を生成する任意のホストプロセッサを表す。そのようなプロセッサは、シングルコアまたはマルチコアプロセッサ、コンピューティングデバイスの一次プロセッサ、グラフィクスプロセッサ、周辺プロセッサ、もしくは補助的もしくは副次的なプロセッサ、またはその組み合わせを含み得る。ホスト410は、CPU420とフラッシュストレージデバイス402を含むシステム400の他のコンポーネントとの間のデータの流れを制御または管理し得るハードウェアコンポーネントを表すチップセット414を含む。例えば、チップセット414は、フラッシュストレージデバイス402へのアクセスを可能とする相互接続回路および論理を含み得る。一例において、チップセット414は、フラッシュストレージデバイス402内のコントローラ430とは別個のホスト側コントローラであるストレージコントローラを含む。図4は、フラッシュストレージデバイスへのアクセスを制御する論理を含むチップセットをホスト内に示しているが、他の例においては、ホスト410はチップセットを含まなくてもよく、またはチップセットを含む場合は、ストレージコントローラをチップセットとは独立のものとすることができる。一例において、チップセット、ストレージコントローラ、またはその両方は、CPU420と統合される。
【0033】
ホストはまた、オペレーティングシステム412、ファイルシステム424、基本入出力システム(BIOS)418、ドライバ416、ならびに他のファームウェアおよびソフトウェアなどの、ハードウェア上で動作するファームウェアおよびソフトウェアを含む。システムの電源が入れられると、BIOS418は通常、ハードウェアの初期化およびオペレーティングシステム412のロードを担う。オペレーティングシステム412は通常、システム400上のアクティビティの管理、連携、およびスケジューリング、ならびにシステムのリソースの共有を担う。ファイルシステム424は、フラッシュストレージデバイス402にアクセスするべく、ソフトウェア、ファームウェア、またはその両方とやり取りする。例えば、ホスト410は、ストレージデバイスドライバ428を含み得、これを介してオペレーティングシステム412およびファイルシステム424がフラッシュストレージデバイス402にアクセスし得る。ストレージデバイスドライバの一例は、Intel(登録商標)Rapid Storage Technology(RST)ドライバである。システム400は、ホストオペレーティングシステムと、データを格納するストレージデバイスとを有するコンピュータシステムとして示されているが、システム400は代替的に、SPI(シリアルペリフェラルインターフェース)ストレージまたはSPIバスに接続されたストレージ、LSMベース(ログ構造マージベース)キーバリュー(key-value)ソリューション、三次元クロスポイントメモリベースのソリューション、または他のストレージシステムを含み得る。
【0034】
一例において、フラッシュストレージデバイス402は、データを格納する不揮発性ストレージ422(不揮発性媒体(NVM)と称されることもある)を含むソリッドステートドライブを表す。そのような一例において、フラッシュストレージデバイス402は、PCI Express(PCIe)、シリアルアドバンストテクノロジーアタッチメント(ATA)、パラレルATA、および/またはユニバーサルシリアルバス(USB)インターフェースを用いてプロセッサに接続されたフラッシュベースのドライブであり得る。ストレージ422は、NANDフラッシュ、NORフラッシュ、相変化メモリ(PCM)、相変化メモリ+スイッチ(phase change memory with switch)(PCMS)、抵抗変化メモリ、または他の不揮発性ストレージ媒体のうちの1または複数を含み得る。データは、シングルレベルセル(SLC)、トリプルレベルセル(TLC)、クアッドレベルセル(QLC)および/またはマルチレベルセル(MLC)のフォーマットで格納されてよい。いくつかの例において、TLC、QLC、および/またはMLCのセルまたはブロックは通常、ユーザデータを格納するために用いられる。一般的にストレージ密度の低減と引き換えにより高速なアクセス速度を有するSLCのセルまたはブロックは、ユーザデータを格納しない場合があり、ホストによってアクセス可能でない場合がある。そのような一例において、SLCのセルまたはブロックは、フラッシュストレージデバイスにより、フラッシュストレージデバイスの動作に関連する「システムデータ」を格納するために用いられ得る。他の例においては、SLCがユーザデータを格納するために用いられることもあり得る。
【0035】
不揮発性ストレージ422に加え、フラッシュストレージデバイス402はまたDRAM408(または他の揮発性メモリ)を含み得る。DRAM408は、フラッシュストレージデバイス402の電源が入っている(例えば動作中である)間はデータを格納できる揮発性メモリを含む。DRAMは、DDRダブルデータレート(DDR)SDRAMについてのJESD79F、DDR2 SDRAMについてのJESD79-2F、DDR3
SDRAMについてのJESD79-3F、DDR4 SDRAMについてのJESD79-4A、LPDDR3(低電力デュアルデータレート バージョン3、JEDEC(Joint Electronic Device Engineering Council)により2013年8月にJEDEC JESD209-3Bで初版発行)、LPDDR4(低電力ダブルデータレート(LPDDR) バージョン4、JESD209-4、2014年8月にJEDECにより初版公表)、または他のJEDEC規格(これらの規格はwww.jedec.orgにて入手可能)などの、Joint Electron Device Engineering Council(JEDEC)により公布されている規格に準拠するものであり得る。他の揮発性メモリを用いてもよい。一部のフラッシュストレージデバイスは、DRAMを含まない(例えば「DRAMレス」SSD)。そのような一例において、フラッシュストレージデバイスは、SRAMなどのSSDコントローラメモリ(不図示)を含み得る。DRAM408は、論理-物理間接参照テーブルまたは他のそのような情報などの、フラッシュストレージデバイス402の動作に関するデータを格納するために用いられ得る。
【0036】
フラッシュストレージデバイス402はまた、ストレージ422へのアクセスを制御するコントローラ430を含む。一例において、コントローラ430は、ストレージ422への入出力(I/O)インターフェース434を含み、ホスト410へのインターフェースを含む。コントローラ430は、コマンド論理(CMD)432などのストレージ422への書き込みおよびストレージ422からの読み出しを制御するハードウェア論理を含む。コマンド論理432は、ストレージ422のストレージセルを読み出させるコマンドを生成および発行する回路を含む。一例において、コマンド論理432は、片側ソフト読み出しを引き起こす、ストレージ422への単一のコマンド(例えば片側ソフト読み出しコマンド)を生成し得る。そのような一例において、単一のコマンドは、レギュラー読み出しストローブと、レギュラー読み出しストローブの片側のみにおける1または複数の追加的な読み出しストローブとをもたらす。別の例において、コマンド論理432は、片側ソフト読み出しを生じさせる別個の読み出しコマンドを生成し得る。例えば、コマンド論理432は、所与のレベルにおける所期の読み出し基準電圧での読み出しを行わせる1つのコマンドと、所期の読み出し基準電圧よりも上または下の1または複数の追加的なコマンドとを生成し得る。ストレージ422はまた、コントローラ430からのコマンドに応答してストレージセルに対する読み出しおよび書き込みのためのストローブを印加するアクセス回路を含み得る。よって、ストレージ422は、コマンド論理432からのコマンド(片側ソフト読み出しを行わせる1または複数の読み出しコマンドを含む)を復号し、受け取ったコマンドに応じて読み出しまたは書き込みストローブをメモリセルに印加する回路を含み得る。コントローラはまた、ストレージ422から読み出されたデータにおける誤りを検出および訂正する誤り符号訂正(ECC)論理436を含み得る。コントローラ430は、シリアルATAなどのインターフェースに接続された特定用途向け集積回路コントローラ(ASIC)デバイスまたはインテグレーテッドドライブエレクトロニクス(integrated drive electronics)コントローラであってよい。別の例において、コントローラ430は、プロセッサまたは他の処理回路(不図示)を含む。一例において、コントローラ430は、単一の集積回路チップに搭載されてシステムオンチップ(SoC)に含まれるものであってよい。
【0037】
フラッシュストレージデバイス402はまた、ファームウェア(不図示)を含み得る。ファームウェアは、変換、ガベージコレクション、ウェアレベリング、およびフラッシュストレージデバイス402の動作および最適化のための他の機能などの多様な機能を行い得る。一例において、ファームウェア404は、ファイルシステム424から受け取った要求の論理ブロックアドレス(LBA)などの論理アドレスの物理アドレス空間を特定するための間接参照を提供する論理を含むフラッシュ変換レイヤ(FTL)を含み得る。
【0038】
コントローラは、本開示において説明する片側ソフト読み出しを行う論理(例えば、ハードウェア、ファームウェア、ソフトウェア、またはその組み合わせ)を含み得る。
【0039】
図4は、コンピュータパッケージの内部(例えばラップトップ/ノートブックまたは他のコンピュータ内)に存在し得るシステムの例を示すが、ストレージデバイス402は、ローカルエリアネットワーク(例えばイーサネット(登録商標)ネットワーク)、またはさらにワイドエリアネットワーク(無線セルラーネットワーク、インターネット等々)などのより大規模なネットワークを介してアクセスされるものであってもよいことに留意されたい。
【0040】
図5は、コンピューティングシステム500(例えばスマートフォン、タブレットコンピュータ、ラップトップコンピュータ、デスクトップコンピュータ、サーバコンピュータ等)の例示的な図示を提供する。図5に認められるように、システム500は、1または複数のプロセッサまたは処理ユニット501を含んでよい。(1または複数の)プロセッサ501は、例えば複数の汎用処理コアを各々が含み得る1または複数の中央処理ユニット(CPU)を含んでよい。(1または複数の)プロセッサ501は、さらにまたは代替的に、1または複数のグラフィクス処理ユニット(GPU)または他の処理ユニットを含んでよい。(1または複数の)プロセッサ501は、メモリ管理論理(例えばメモリコントローラ)およびI/O制御論理を含んでよい。
【0041】
システム500はまた、メモリ502(例えばシステムメモリ)、不揮発性ストレージ504、通信インターフェース506、および他のコンポーネント508を含む。他のコンポーネントは、例えば、ディスプレイ(例えばタッチスクリーン、フラットパネル)、電源(例えばバッテリおよび/または他の電源)、センサ、電力管理論理、またはその他のコンポーネントを含んでよい。通信インターフェース506は、通信インターフェースをサポートする論理および/または機能を含んでよい。これらの例について、通信インターフェース506は、様々な通信プロトコルまたは規格に従って動作して直接またはネットワーク通信リンクまたはチャネルを介して通信する1または複数の通信インターフェースを含んでよい。直接通信は、PCIe仕様書に関連するものなどの1または複数の産業規格(その後継版および派生版を含む)に記載される通信プロトコルまたは規格を用いて行われてよい。ネットワーク通信は、IEEEにより公布される1または複数のイーサネット(登録商標)規格に記載されるものなどの通信プロトコルまたは規格を用いて行われてよい。例えば、1つのそのようなイーサネット(登録商標)規格は、IEEE802.3を含んでよい。ネットワーク通信は、OpenFlow Switch仕様書などの1または複数のOpenFlow仕様書に従って行われてもよい。通信インターフェースの他の例は、例えば、ローカル有線ポイントツーポイントリンク(例えばUSB)インターフェース、無線ローカルエリアネットワーク(例えばWiFi(登録商標))インターフェース、無線ポイントツーポイントリンク(例えばBluetooth(登録商標))インターフェース、全地球測位システムインターフェース、および/または他のインターフェースを含む。
【0042】
コンピューティングシステムはまた、システムの大容量ストレージコンポーネントであり得る不揮発性ストレージ504を含む。不揮発性ストレージ504は、上述した図4のフラッシュストレージデバイス402と類似するまたは同じものであり得る。不揮発性ストレージ504は、カルコゲナイド相変化材料(例えばカルコゲナイドガラス)を含む3次元(3D)クロスポイントメモリ構造を有する、バイトまたはブロックでアドレス指定可能なタイプの不揮発性メモリ(以下「3Dクロスポイントメモリ」と称する)を含んでよい。不揮発性タイプのメモリはまた、マルチ閾値レベルNANDフラッシュメモリ、NORフラッシュメモリ、シングルレベルまたはマルチレベル相変化メモリ(PCM)、抵抗変化メモリ、ナノワイヤメモリ、強誘電性トランジスタランダムアクセスメモリ(FeTRAM)、メモリスタ技術を取り入れた磁気抵抗ランダムアクセスメモリ(MRAM)、スピントランスファートルクMRAM(STT-MRAM)、または上記のいずれかの組み合わせなどであるがこれらに限定されない、他のタイプのバイトまたはブロックでアドレス指定可能な不揮発性メモリを含んでよい。一例において、不揮発性ストレージ504は、1または複数のSSDから構成された大容量ストレージを含んでよい。SSDは、上述の片側ソフト読み出しを実装することが可能なフラッシュメモリチップから構成され得る。
【0043】
本発明の実施形態は、上述したような様々なプロセスを含んでよい。それらのプロセスは、機械実行可能命令において具現化されてよい。それらの命令は、汎用または専用プロセッサに特定のプロセスを行わせるために用いられ得る。代替的に、これらのプロセスは、当該プロセスを実行するためのハードワイヤード論理回路またはプログラミング可能論理回路(例えば、FPGA、PLD)を含む固有/カスタムハードウェアコンポーネントにより、またはプログラミング済みコンピュータコンポーネントとカスタムハードウェアコンポーネントとの任意の組み合わせにより行われてよい。
【0044】
本発明の要素は、機械実行可能命令を格納するための機械可読媒体として提供されてもよい。機械可読媒体は、フロッピーディスケット、光ディスク、CD-ROM、および光磁気ディスク、フラッシュメモリ、ROM、RAM、EPROM、EEPROM、磁気カードもしくは光カード、伝搬媒体、または電子的命令を格納するのに好適な他のタイプの媒体/機械可読媒体を含んでよいが、これらに限定されない。例えば、本発明は、通信リンク(例えばモデムまたはネットワーク接続)を介して、搬送波または他の伝搬媒体において具現化されるデータ信号を用いて、遠隔コンピュータ(例えばサーバ)から要求元コンピュータ(例えばクライアント)へと伝達され得るコンピュータプログラムとしてダウンロードされてよい。
【0045】
以下は、片側ソフト読み出しを行うための方法、システム、および装置の例である。一例において、フラッシュストレージデバイスは、ストレージセルアレイと、ストレージセルアレイにアクセスするコントローラとを含む。コントローラは、ストレージセルの少なくとも1つの読み出しを行う。フラッシュストレージデバイスはまた、当該少なくとも1つの読み出しに応答して、所期の読み出し基準電圧でストレージセルに読み出しストローブを印加し、所期の読み出し基準電圧の片側のみにおける電圧でストレージセルに1または複数の読み出しストローブを印加するアクセス回路を含む。コントローラは、読み出しストローブおよび1または複数の読み出しストローブに対するストレージセルの電気的応答に基づいて、論理値と論理値の精度の信頼性を示す1または複数のビットとを提供する。一例において、コントローラは、1または複数の過去の読み出しからの誤り情報に基づいて、所期の読み出し基準電圧の片側のみにおける電圧での1または複数の読み出しストローブを引き起こすよう、少なくとも1つの読み出しを行う。
【0046】
一例において、コントローラはさらに、1または複数の過去の読み出しにおいて1-0誤りまたは0-1誤りのどちらがより多く生じたかを決定することを含めて、誤り情報を決定する。一例において、1-0誤りまたは0-1誤りのどちらがより多く生じたかの決定は、同じページからの符号語における0-1誤りビットおよび1-0誤りビットのカウントに基づく。一例において、1-0誤りまたは0-1誤りのどちらがより多く生じたかの決定は、訂正不可能な部分的に復号されたECC(誤り訂正符号)符号語において特定される0-1誤りビットおよび1-0誤りビットのカウントに基づく。一例において、符号語の少なくとも一部分に予め定められた数の0および1を含める符号によって符号語が生成される。そのような一例において、1-0誤りまたは0-1誤りのどちらがより多く生じたかの決定は、読み出された符号語における1および0の数の、当該予め定められた1および0の数との比較に基づく。
【0047】
一例において、論理値と信頼性を示す情報とに基づいて訂正不可能である誤りに応答して、コントローラは、所期の読み出し基準電圧の両側における読み出しストローブの印加を引き起こすよう、1または複数の追加的な読み出しを行う。一例において、1-0誤りがより多いことを誤り情報が示す場合、アクセス回路は、所期の読み出し基準電圧の、論理0を示すレベルに最も近い側における電圧で1または複数の読み出しストローブを印加し、0-1誤りがより多いことを誤り情報が示す場合、アクセス回路は、所期の読み出し基準電圧の、論理1を示すレベルに最も近い側における電圧で1または複数の読み出しストローブを印加する。一例において、ストレージセルアレイは、マルチビットストレージセルを含むNANDフラッシュアレイを含む。一例において、アクセス回路は、最も低い2つのレベル(L0およびL1)の間で1または複数の読み出しストローブを印加し、より高いレベルについては所期の読み出し基準電圧の片側における追加的な読み出しストローブを印加しない。
【0048】
一例において、フラッシュストレージコントローラは、ストレージセルの少なくとも1つの読み出しを行うコマンド回路であって、少なくとも1つの読み出しは、所期の読み出し基準電圧でのストレージセルへの読み出しストローブの印加と、所期の読み出し基準電圧の片側のみにおける電圧でのストレージセルへの1または複数の読み出しストローブの印加とを引き起こす、コマンド回路と、読み出しデータをホストに伝送するインターフェース回路であって、読み出しデータは、読み出しストローブおよび1または複数の読み出しストローブに対するストレージセルの電気的応答に基づいた、論理値と論理値の精度の信頼性を示す1または複数のビットとを含む、インターフェース回路とを備える。一例において、コマンド回路は、1または複数の過去の読み出しからの誤り情報に基づいて、所期の読み出し基準電圧の片側のみにおける電圧での1または複数の読み出しストローブを引き起こすよう、少なくとも1つの読み出しを行う。一例において、コントローラはさらに、1または複数の過去の読み出しにおいて1-0誤りまたは0-1誤りのどちらがより多く生じたかを決定することを含めて、誤り情報を決定する。一例において、1-0誤りまたは0-1誤りのどちらがより多く生じたかの決定は、同じページからの符号語における0-1誤りビットおよび1-0誤りビットのカウントに基づく。
【0049】
一例において、フラッシュストレージデバイスにアクセスする方法は、フラッシュストレージデバイスのストレージセルの少なくとも1つの読み出しを行う段階であって、少なくとも1つの読み出しは、所期の読み出し基準電圧でのストレージセルへの読み出しストローブの印加と、所期の読み出し基準電圧の片側のみにおける電圧でのストレージセルへの1または複数の読み出しストローブの印加とを引き起こす、段階と、読み出しストローブおよび1または複数の読み出しストローブに対するストレージセルの電気的応答に基づいて、論理値と論理値の精度の信頼性を示す1または複数のビットとを提供する段階とを伴う。一例において、所期の読み出し基準電圧の片側のみにおける電圧での1または複数の読み出しストローブを引き起こすよう、少なくとも1つの読み出しを行うことは、1または複数の過去の読み出しからの誤り情報に基づく。
【0050】
一例において、方法は、1または複数の過去の読み出しにおいて1-0誤りまたは0-1誤りのどちらがより多く生じたかを決定することを含めて、誤り情報を決定する段階を伴う。そのような一例において、1-0誤りまたは0-1誤りのどちらがより多く生じたかを決定することは、同じページからの符号語における0-1誤りビットおよび1-0誤りビットのカウントすることを伴う。一例において、1-0誤りまたは0-1誤りのどちらがより多く生じたかを決定することは、訂正不可能な部分的に復号されたECC(誤り訂正符号)符号語において特定される0-1誤りビットおよび1-0誤りビットをカウントすることを伴う。一例において、符号語の少なくとも一部分に予め定められた数の0および1を含める符号によって符号語が生成され、1-0誤りまたは0-1誤りのどちらがより多く生じたかを決定することは、読み出された符号語における1および0の数を当該予め定められた1および0の数と比較することを伴う。
【0051】
一例において、方法は、論理値と信頼性を示す情報とに基づいて訂正不可能である誤りに応答して、所期の読み出し基準電圧の両側における電圧での読み出しストローブの印加を引き起こすよう、1または複数の追加的な読み出しを行う段階を伴う。一例において、少なくとも1つの読み出しを行うことは、マルチビットストレージセルの複数のレベルの間で読み出しストローブを印加することを伴い、1または複数の読み出しストローブは、最も低い2つのレベル(L0およびL1)の間で印加され、より高いレベルについては所期の読み出し基準電圧の片側における追加的な読み出しストローブが印加されない。一例において、コンピューティングデバイスにより実行されると、コンピューティングデバイスに、フラッシュストレージデバイスのストレージセルの少なくとも1つの読み出しを行う段階であって、少なくとも1つの読み出しは、所期の読み出し基準電圧でのストレージセルへの読み出しストローブの印加と、所期の読み出し基準電圧の片側のみにおける電圧でのストレージセルへの1または複数の読み出しストローブの印加とを引き起こす、段階と、読み出しストローブおよび1または複数の読み出しストローブに対するストレージセルの電気的応答に基づいて、論理値と論理値の精度の信頼性を示す1または複数のビットとを提供する段階とを備える方法を行わせる1または複数の命令を格納した少なくとも1の非一時的機械可読媒体。一例において、システムは、プロセッサと、本明細書において説明する1または複数の例に係るフラッシュストレージデバイスとを含む。一例において、フラッシュストレージデバイスは、ストレージセルアレイと、所期の読み出し基準電圧でストレージセルに読み出しストローブを印加し、所期の読み出し基準電圧の片側のみにおける電圧でストレージセルに1または複数の読み出しストローブを印加し、読み出しストローブおよび1または複数の読み出しストローブに対するストレージセルの電気的応答に基づいて、論理値と論理値の精度の信頼性を示す1または複数のビットとを提供するための手段とを備える。
【0052】
本明細書において例示されているフロー図は、様々なプロセス動作のシーケンスの例を提供する。それらのフロー図は、ソフトウェアまたはファームウェアルーチンにより実行されるべきオペレーション、加えて物理オペレーションを示し得る。一例において、フロー図は、ハードウェア、ソフトウェア、またはその組み合わせにおいて実装され得る有限状態機械(FSM)の状態を例示し得る。動作の順序は、特定のシーケンスまたは順序で示されているが、別途指定のない限り、変更することができる。よって、例示されている実施形態は単に例として理解されるべきであり、プロセスは異なる順序で行うことができ、いくつかの動作は並行して行うことができる。加えて、様々な例において、1または複数の動作を省略することができる。よって、あらゆる実施形態において全ての動作が必要とは限らない。他のプロセスフローも考えられる。
【0053】
様々なオペレーションまたは機能は、本明細書において説明されている範囲において、ソフトウェア符号、命令、構成、データ、またはその組み合わせとして説明または定義され得る。コンテンツは、直接実行可能なもの(「オブジェクト」または「実行ファイル」の形式)、ソース符号、または差分符号(「デルタ」または「パッチ」符号)であり得る。本明細書において説明する実施形態のソフトウェアコンテンツは、コンテンツを格納した製造物品を介して、または通信インターフェースを介してデータを送るよう通信インターフェースを動作させる方法を介して提供され得る。機械可読ストレージ媒体は、機械に、説明されている機能またはオペレーションを行わせることができ、記録可能/非記録可能媒体(例えばリードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスクストレージ媒体、光ストレージ媒体、フラッシュメモリデバイス等)などの、機械(例えばコンピューティングデバイス、電子システム等)によりアクセス可能な形式の情報を格納する任意のメカニズムを含む。通信インターフェースは、メモリバスインターフェース、プロセッサバスインターフェース、インターネット接続、ディスクコントローラ等のような、別のデバイスと通信するためにハードワイヤード、無線、光等の媒体のいずれかへのインターフェースとなる任意のメカニズムを含む。通信インターフェースは、ソフトウェアコンテンツを記述するデータ信号を提供する準備を通信インターフェースにさせるよう、構成パラメータを提供することもしくは信号を送ること、またはその両方により構成され得る。通信インターフェースは、通信インターフェースに送られる1または複数のコマンドまたは信号を介してアクセスされ得る。
【0054】
本明細書において説明する様々なコンポーネントは、説明されているオペレーションまたは機能を行うための手段であり得る。本明細書において説明する各コンポーネントは、ソフトウェア、ハードウェア、またはこれらの組み合わせを含む。それらのコンポーネントは、ソフトウェアモジュール、ハードウェアモジュール、専用ハードウェア(例えば特定用途向けハードウェア、特定用途向け集積回路(ASIC)、デジタルシグナルプロセッサ(DSP)等)、組み込みコントローラ、ハードワイヤード回路等として実装され得る。
【0055】
本明細書において説明されているものの他、本発明の開示されている実施形態および実装形態に対し、その範囲を逸脱しない限りにおいて様々な変更を行うことができる。したがって、本明細書における例示および例は、限定ではなく例示の意味で解釈されるべきである。本発明の範囲は、専ら以下の特許請求の範囲を参照することによって評価されるべきである。
【0056】
[項目1]
ソリッドステートドライブ(SSD)であって、当該ソリッドステートドライブ(SSD)は、
1または複数のフラッシュメモリチップであって、当該フラッシュメモリチップのそれぞれがストレージセルアレイを含む、1または複数のフラッシュメモリチップと、
上記1または複数のフラッシュメモリチップにおける上記ストレージセルアレイにアクセスするコントローラであって、ストレージセルの少なくとも1つの読み出しを行うコントローラと、
上記少なくとも1つの読み出しに応答して、
所期の読み出し基準電圧で上記ストレージセルに読み出しストローブを印加し、
上記所期の読み出し基準電圧の片側のみにおける電圧で上記ストレージセルに1または複数のソフト読み出しストローブを印加する
アクセス回路と
を備え、
上記コントローラは、上記読み出しストローブおよび上記1または複数のソフト読み出しストローブに対する上記ストレージセルの電気的応答に基づいて、論理値と上記論理値の精度の信頼性を示す1または複数のビットとを提供する、
ソリッドステートドライブ(SSD)
[項目2]
上記コントローラは、1または複数の過去の読み出しからの誤り情報に基づいて、上記所期の読み出し基準電圧の片側のみにおける電圧での上記1または複数のソフト読み出しストローブを引き起こすよう、上記少なくとも1つの読み出しを行う、
項目1に記載のソリッドステートドライブ(SSD)
[項目3]
上記コントローラはさらに、
上記1または複数の過去の読み出しにおいて1-0誤りまたは0-1誤りのどちらがより多く生じたかを決定することを含めて、上記誤り情報を決定する、
項目2に記載のソリッドステートドライブ(SSD)
[項目4]
1-0誤りまたは0-1誤りのどちらがより多く生じたかの上記決定は、同じページからの符号語における0-1誤りビットおよび1-0誤りビットのカウントに基づく、
項目3に記載のソリッドステートドライブ(SSD)
[項目5]
1-0誤りまたは0-1誤りのどちらがより多く生じたかの決定は、訂正不可能な部分的に復号されたECC(誤り訂正符号)符号語において特定される0-1誤りビットおよび1-0誤りビットのカウントに基づく、
項目3に記載のソリッドステートドライブ(SSD)
[項目6]
符号語の少なくとも一部分に予め定められた数の0および1を含める符号によって符号語が生成され、
1-0誤りまたは0-1誤りのどちらがより多く生じたかの決定は、読み出された符号語における1および0の数の、上記予め定められた1および0の数との比較に基づく、
項目3に記載のソリッドステートドライブ(SSD)
[項目7]
上記論理値と信頼性を示す情報とに基づいて訂正不可能である誤りに応答して、上記コントローラは、上記所期の読み出し基準電圧の両側における読み出しストローブの印加を引き起こすよう、1または複数の追加的な読み出しを行う
ことをさらに備える、項目に記載のソリッドステートドライブ(SSD)
[項目8]
1-0誤りがより多いことを上記誤り情報が示す場合、上記アクセス回路は、上記所期の読み出し基準電圧の、論理0を示すレベルに最も近い側における電圧で上記1または複数のソフト読み出しストローブを印加し、
0-1誤りがより多いことを上記誤り情報が示す場合、上記アクセス回路は、上記所期の読み出し基準電圧の、論理1を示すレベルに最も近い側における電圧で上記1または複数のソフト読み出しストローブを印加する、
項目2に記載のソリッドステートドライブ(SSD)
[項目9]
上記1または複数のフラッシュメモリチップの少なくとも1つのための上記ストレージセルアレイは、マルチビットストレージセルを含むNANDフラッシュアレイを含む、
項目1に記載のソリッドステートドライブ(SSD)
[項目10]
上記アクセス回路は、最も低い2つのレベル(L0およびL1)の間で上記1または複数のソフト読み出しストローブを印加し、より高いレベルについては所期の読み出し基準電圧の片側における追加的なソフト読み出しストローブを印加しない、
項目9に記載のソリッドステートドライブ(SSD)
[項目11]
ソリッドステートドライブ(SSD)コントローラであって、
上記ソリッドステートドライブ(SSD)の1または複数のフラッシュメモリチップにおけるストレージセルアレイのストレージセルの少なくとも1つの読み出しを行うコマンド回路であって、上記少なくとも1つの読み出しは、所期の読み出し基準電圧での上記ストレージセルへの読み出しストローブの印加と、上記所期の読み出し基準電圧の片側のみにおける電圧での上記ストレージセルへの1または複数のソフト読み出しストローブの印加とを引き起こす、コマンド回路と、
読み出しデータをホストに伝送するインターフェース回路であって、上記読み出しデータは、上記読み出しストローブおよび上記1または複数のソフト読み出しストローブに対する上記ストレージセルの電気的応答に基づいた、論理値と上記論理値の精度の信頼性を示す1または複数のビットとを含む、インターフェース回路と
を備える、ソリッドステートドライブ(SSD)コントローラ。
[項目12]
上記コマンド回路は、1または複数の過去の読み出しからの誤り情報に基づいて、上記所期の読み出し基準電圧の片側のみにおける電圧での上記1または複数のソフト読み出しストローブを引き起こすよう、上記少なくとも1つの読み出しを行う、
項目11に記載のソリッドステートドライブ(SSD)コントローラ。
[項目13]
上記コントローラはさらに、
上記1または複数の過去の読み出しにおいて1-0誤りまたは0-1誤りのどちらがより多く生じたかを決定することを含めて、上記誤り情報を決定する、
項目12に記載のソリッドステートドライブ(SSD)コントローラ。
[項目14]
1-0誤りまたは0-1誤りのどちらがより多く生じたかの決定は、同じページからの符号語における0-1誤りビットおよび1-0誤りビットのカウントに基づく、
項目12に記載のソリッドステートドライブ(SSD)コントローラ。
[項目15]
1-0誤りまたは0-1誤りのどちらがより多く生じたかの上記決定は、訂正不可能な部分的に復号されたECC(誤り訂正符号)符号語において特定される0-1誤りビットおよび1-0誤りビットのカウントに基づく、
項目12に記載のソリッドステートドライブ(SSD)コントローラ。
[項目16]
符号語の少なくとも一部分に予め定められた数の0および1を含める符号によって符号語が生成され、
1-0誤りまたは0-1誤りのどちらがより多く生じたかの決定は、読み出された符号語における1および0の数の、上記予め定められた1および0の数との比較に基づく、
項目12に記載のソリッドステートドライブ(SSD)コントローラ。
[項目17]
上記論理値と信頼性を示す情報とに基づいて訂正不可能である誤りに応答して、上記コマンド回路は、上記所期の読み出し基準電圧の両側における読み出しストローブの印加を引き起こすよう、1または複数の追加的な読み出しを行う
ことをさらに備える、項目12に記載のソリッドステートドライブ(SSD)コントローラ。
[項目18]
1-0誤りがより多いことを上記誤り情報が示す場合、上記1または複数のソフト読み出しストローブは、上記所期の読み出し基準電圧の、論理0を示すレベルに最も近い側における電圧で印加され、
0-1誤りがより多いことを上記誤り情報が示す場合、上記1または複数のソフト読み出しストローブは、上記所期の読み出し基準電圧の、論理1を示すレベルに最も近い側における電圧で印加される、
項目12に記載のソリッドステートドライブ(SSD)コントローラ。
[項目19]
上記1または複数のフラッシュメモリチップの少なくとも1つのための上記ストレージセルアレイは、マルチビットストレージセルを含むNANDフラッシュアレイを含む、
項目11に記載のソリッドステートドライブ(SSD)コントローラ。
[項目20
上記1または複数のソフト読み出しストローブは、最も低い2つのレベル(L0およびL1)の間で印加され、より高いレベルについては所期の読み出し基準電圧の片側における追加的なソフト読み出しストローブが印加されない、
項目1に記載のソリッドステートドライブ(SSD)コントローラ。
図1
図2A
図2B
図2C
図3
図4
図5