以下では、添付の図面を参照して本出願の技術的解決策を説明する。
本出願において、「少なくとも1つ」は1つ以上を意味し、「複数の」は2つ以上を意味する。「および/または」という用語は、関連する対象を説明するための関連関係を説明するものであり、3つの関係が存在し得ることを表す。例えば、Aおよび/またはBは、以下の3つの場合を、すなわちAのみが存在する場合と、AおよびBの両方が存在する場合と、Bのみが存在する場合とを、表す。AおよびBの各々は単数であっても複数であってもよい。文字「/」は一般に、関連付けられる対象間の「または」関係を指示する。以下のもの(要素)のうちの少なくとも1つまたはその同様の表現は、単数のもの(要素)または複数のもの(要素)の任意の組み合わせを含む、これらのものの任意の組み合わせを指す。例えば、a、b、またはcのうちの少なくとも1つは、a、b、c、a-b、a-c、b-c、またはa-b-cを指示してもよく、a、b、およびcは単数であっても複数であってもよい。
当業者が本出願の技術的解決策をよりよく理解するのを助けるために、本出願の技術的解決策に含まれる適用シナリオおよびいくつかの関連概念が最初に説明される。
図1は、本出願の実施形態による可能な適用シナリオの概略図である。図1に示されるように、ソリッドステートディスク(solid-state disk、SSD)100は、SSDコントローラ110と、NAND型フラッシュメモリ(NAND flash)130とを備える。
SSDコントローラ110は、ホストインターフェースコントローラ111と、プロセッサ112と、フラッシュメモリコントローラ113とを含む。ホストインターフェースコントローラ111、プロセッサ112、およびフラッシュメモリコントローラ113は、バス114を介して接続される。図1に示されるホストインターフェースコントローラ111、プロセッサ112、およびフラッシュメモリコントローラ113に加えて、SSDコントローラは、他のモジュール、例えばキャッシュコントローラおよび誤り訂正符号(error correcting code、ECC)モジュールをさらに含んでもよいことが理解されてもよい。
ホストインターフェースコントローラ(host interface controller)は、フロントエンドと呼ばれる場合もある。フロントエンドは、ホストとSSDとの間の通信を担うインターフェースである。コマンドおよびデータは、フロントエンドバスを介してSSDとの間で伝送される。ホストは、コンピュータ、携帯電話、基地局、トリップコンピュータ(電子制御ユニット(electronic control unit、ECU)と呼ばれる場合もある)などであってもよい。フロントエンドインターフェースは、高速シリアルコンピュータ拡張バス規格(peripheral component interconnect express、PCIe)インターフェース、ミニシリアル高度技術アタッチメント(mini serial advanced technology attachment、mSATA)インターフェース、M.2(または次世代フォームファクタ(next generation form factor、NGFF)と呼ばれる)インターフェース、または別のユーザ定義インターフェースであってもよい。
プロセッサ112は、1つ以上の中央処理装置(central processing unit、CPU)コアを含んでもよい。プロセッサ112は、計算およびシステムスケジューリングなどの機能を担当する。プロセッサ112は、CPUコアに加えて、いくつかの周辺モジュール、例えば、汎用非同期受信機/送信機(universal asynchronous receiver/transmitter、UART)、汎用入力/出力(general-purpose input/output、GPIO)モジュール、温度センサ、およびタイマをさらに有してもよい。
フラッシュメモリコントローラ113は、NAND flash130に対するデータの書き込み、またはNAND flash130からのデータの読み出しを管理することを担当する。フラッシュメモリコントローラ113は、NFIバス120を介してNAND flash130に接続される。
以下では、図2を参照して、フラッシュメモリコントローラ113について説明する。
図2は、フラッシュメモリコントローラおよびNAND flashチップの概略図である。図1に示されるNAND flash130は、複数のNAND flashチップを含む。図2に示されるNAND flashチップ131は、NAND flash130に含まれる複数のNAND flashチップのうちのいずれのNAND flashチップであってもよい。
図2に示されるように、フラッシュメモリコントローラ113は、NFIバス120を介してNAND flashチップ131に接続される。NFIバス120は、複数のデータ信号線(例えば、図2のデータ信号線L0~L7)と、複数のタイミング(例えば、図1のタイミング信号線LS-P、LS-N)とを含む。
データ信号線L0~データ信号線L7は、8個のデータ信号(data signal、DQ)を並列に伝送してもよい。例えば、データ信号線L0はDQ0を伝送してもよく、データ信号線L1はDQ1を伝送してもよく、…、そして、データ信号線L7はDQ7を伝送してもよい。DQは周期デジタル信号であり、したがってデータを搬送することができることを理解されたい。例えば、DQは、1サイクルで1ビット(bit)のデータを伝送してもよい。低電気レベルサイクルでは、1ビットのデータ「0」が伝送されてもよく、高電気レベルサイクルでは、1ビットのデータ「1」が伝送されてもよい。データ信号線L0~データ信号線L7は、8個のDQを並列に伝送してもよい。したがって、1サイクルにおいて、データ信号線L0~データ信号線L7を介して、合計で8ビットのデータが伝送される。
DQはデジタル信号であるため、DQの受信端は、DQの電気レベル状態を正しく識別し、DQによって搬送されるデータを正しく取得するために、DQと同じサイクルを有するクロック信号を介してDQのサイクルを正しく区別する必要があることが理解されよう。これを考慮して、NFIバス120は、タイミング信号線LS-Nと、タイミング信号線LS-Pとをさらに含んでもよい。タイミング信号線LS-Nおよびタイミング信号線LS-Pは、データストローブ信号(data strobe signal、DQS)を伝送してもよい。
具体的には、タイミング信号線LS-NはDQS-Nを伝送してもよく、タイミング信号線LS-PはDQS-Pを伝送してもよい。DQS-NおよびDQS-Pは位相反転信号である。例えば、DQS-NおよびDQS-Pは、図3に示されてもよい。DQSは、DQS-NおよびDQS-Pを含む。DQSは、DQに対応するクロック信号として使用されてもよく、DQと同じ伝送端および受信端を有し、DQの受信端をトリガしてDQの電気レベル状態を識別してもよい。説明を容易にするために、本出願のこの実施形態では、DQSはDQS-NおよびDQS-Pを表すために使用される。
フラッシュメモリコントローラ113とNAND flashチップ131との間の双方向データ伝送は、NFIバス120を介して実装されてもよいことに留意されたい。例えば、フラッシュメモリコントローラ113がNAND flashチップ131にデータを書き込むプロセスにおいて、フラッシュメモリコントローラ113はDQSおよびDQの伝送端として使用されてもよく、NAND flashチップ131はDQSおよびDQの受信端として使用されてもよい。フラッシュメモリコントローラ113がNAND flashチップ131からデータを読み出すプロセスにおいて、NAND flashチップ131はDQSおよびDQの伝送端として使用されてもよく、フラッシュメモリコントローラ113はDQSおよびDQの受信端として使用されてもよい。
説明を容易にするために、本出願の以下の実施形態では、書き込みDQおよび書き込みDQSは、フラッシュメモリコントローラ113がNAND flashチップ131にデータを書き込むプロセスにおいて、フラッシュメモリコントローラ113によってNAND flashチップ131に送信されるDQおよびDQSを表すためにそれぞれ使用され;読み出しDQおよび読み出しDQSは、フラッシュメモリコントローラ113がNAND flashチップ131からデータを読み出すプロセスにおいてNAND flashチップ131によってフラッシュメモリコントローラ113に送信されるDQおよびDQSを表すためにそれぞれ使用される。書き込みDQは、書き込みDQ0~書き込みDQ7を含み、読み出しDQは、読み出しDQ0~読み出しDQ7を含む。
以下では、データの書き込みおよびデータの読み出しの具体的な実装形態について別々に説明する。
シナリオ1:フラッシュメモリコントローラ113は、NAND flashチップ131にデータを書き込む。
プロセッサ110は、NAND flashチップ131にデータを書き込むためにフラッシュメモリコントローラ113を呼び出してもよい。プロセッサ110によってフラッシュメモリコントローラ113を呼び出す具体的な実装形態については、従来技術を参照されたい。これは、本出願のこの実施形態では限定されない。
プロセッサ112によって呼び出されると、フラッシュメモリコントローラ113は、NAND flashチップ131にデータを書き込んでもよい。具体的には、フラッシュメモリコントローラ113は、書き込みDQ0~書き込みDQ7を、データ信号線L0~データ信号線L7を介してNAND flashチップ131に送信してもよい。フラッシュメモリコントローラ113によって送信される書き込みDQ0~書き込みDQ7は、NAND flashチップ131に書き込まれる必要があるターゲット書き込みデータを搬送してもよい。
フラッシュメモリコントローラ113がNAND flashチップ131にデータを書き込むプロセスにおいて、フラッシュメモリコントローラ113は、NAND flashチップ131に書き込みDQSをさらに送信する。書き込みDQSは、書き込みDQ0~書き込みDQ7の電気レベル状態を識別するために、NAND flashチップ131をトリガしてもよい。NAND flashチップ131は、識別された電気的レベル状態に基づいて、書き込みDQ0~書き込みDQ7によって搬送されるデータを記憶してもよく、これにより、NAND flashチップ131へのデータの書き込みが実装される。
一般に、フラッシュメモリコントローラ113によってNAND flashチップ131に送信される書き込みDQSにおいて、書き込みDQS-Nと書き込みDQS-Pとの間のクロスポイント(図3に示される)は、NAND flashチップ131をトリガして書き込みDQの電気レベル状態を識別するためのトリガポイントとして使用されてもよい。すなわち、NAND flashチップ131が、受信された書き込みDQSがクロスポイントにあると決定した場合、NAND flashチップ131は、書き込みDQ0~書き込みDQ7の現在の電気レベル状態を識別してもよく、これにより、書き込みDQ0~書き込みDQ7で搬送されたターゲット書き込みデータがNAND flashチップ131に書き込まれてもよい。
例えば、ターゲット書き込みデータが11010011であり、書き込みDQSにおける同じクロスポイントに対応する場合、この場合に書き込みDQ0~書き込みDQ7によって搬送されるデータは以下の通りである:書き込みDQ0は「1」を搬送してもよく、書き込みDQ1は「1」を搬送してもよく、書き込みDQ2は「0」を搬送してもよく、書き込みDQ3は「1」を搬送してもよく、書き込みDQ4は「0」を搬送してもよく、書き込みDQ5は「0」を搬送してもよく、書き込みDQ6は「1」を搬送してもよく、かつ書き込みDQ7は「1」を搬送してもよい。
受信された書き込みDQSがクロスポイントにあると決定する場合、NAND flashチップ131は、書き込みDQ0~書き込みDQ7の受信された電気レベル状態を識別してもよい。前述の例では、書き込みDQ0は高電気レベル(「1」を搬送)であり、書き込みDQ1は高電気レベル(「1」を搬送)であり、書き込みDQ2は低電気レベル(「0」を搬送)であり、書き込みDQ3は高電気レベル(「1」を搬送)であり、書き込みDQ4は低電気レベル(「0」を搬送)であり、書き込みDQ5は低電気レベル(「0」を搬送)であり、書き込みDQ6は高電気レベル(「1」を搬送)であり、書き込みDQ7は高電気レベル(「1」を搬送)である。NAND flashチップ131は、書き込みDQ0~書き込みDQ7の識別された電気レベル状態に基づいて、ターゲット書き込みデータ「11010011」を記憶してもよい。
シナリオ2:フラッシュメモリコントローラ113は、NAND flashチップ131からデータを読み出す。
プロセッサ110は、NAND flashチップ131からデータを読み出すためにフラッシュメモリコントローラ113を呼び出してもよい。プロセッサ110によってフラッシュメモリコントローラ113を呼び出す具体的な実装形態については、従来技術を参照されたい。これは、本出願のこの実施形態では限定されない。
フラッシュメモリコントローラ113は、フラッシュメモリコントローラ113へとターゲット読み出しデータを送信するようにNAND flashチップ131に指示するために、プロセッサ110によって呼び出されてもよく、これにより、フラッシュメモリコントローラ113は、NAND flashチップ131内のターゲット読み出しデータを読み出す。フラッシュメモリコントローラ113によってNAND flashチップ131に指示する具体的な実装形態については、従来技術を参照されたい。これは、本出願のこの実施形態では限定されない。
NAND flashチップ131は、読み出しDQ0~読み出しDQ7を、データ信号線L0~データ信号線L7を介してフラッシュメモリコントローラ113に送信してもよい。読み出しDQ0~読み出しDQ7は、フラッシュメモリコントローラ113に送信されたターゲット読み込みデータを搬送してもよい。NAND flashチップ131が読み出しDQ0~読み出しDQ7をフラッシュメモリコントローラ113に送信する場合、NAND flashチップ131は、読み出しDQSをフラッシュメモリコントローラ113にさらに送信する。フラッシュメモリコントローラ113は、読み出しDQSに基づいて読み出しDQ0~読み出しDQ7の電気レベル状態を識別し、識別された電気レベル状態に基づいて、読み出しDQ0~読み出しDQ7によって搬送されたターゲット読み出しデータを取得して、NAND flashチップ131からデータを読み出してもよい。
読み出しDQSおよび読み出しDQ0~読み出しDQ7の具体的な実装形態は、前述のシナリオ1のものと同様である。ここでは詳細は再び説明されない。違いは、NAND flashチップ131によってフラッシュメモリコントローラ113に送信される読み出しDQSにおいて、2つの隣接するクロスポイント間の中間ポイントが、一般に、読み出しDQ0~読み出しDQ7の電気レベル状態を識別するためにフラッシュメモリコントローラ113をトリガするトリガポイントとして使用され得ることである。言い換えれば、NAND flashチップ131が、受信された読み出しDQSが中間ポイントにあると決定する場合、フラッシュメモリコントローラ113は、読み出しDQ0~読み出しDQ7の現在の電気レベル状態を識別して、読み出しDQ0~読み出しDQ7によって搬送されるターゲット読み出しデータを取得してもよい。
前述のシナリオ1および前述のシナリオ2から、フラッシュメモリコントローラ113とNAND flashチップ131との間でデータを正確に伝送できるかどうかは、同じ方向に伝送されるDQSおよびDQの相対的なタイミング位置が整列させられているかどうかと密接に関係することが学習されることができる。同じ方向に伝送されるDQSおよびDQは、読み出しDQSおよび読み出しDQと理解されてもよく、または書き込みDQSおよび書き込みDQと理解されてもよい。
図3に示される書き込みDQSおよび書き込みDQは、一例として使用される。書き込みDQは、書き込みDQ0~書き込みDQ7のいずれか1つであってもよい。書き込みDQSのクロスポイントがトリガポイントとして使用され、そのクロスポイントに対応する書き込みDQのサイクルが、クロスポイントが発生した時刻が収まる書き込みDQサイクルとなる。図3から学習されることができるように、書き込みDQSのトリガポイント(クロスポイント)は、トリガポイントに対応する書き込みDQのサイクルを2つの部分に分割してもよく、トリガポイントの前の部分はセットアップ(setup)時間であり、トリガポイントの後の部分はホールド(hold)時間である。NAND flashチップ131によって受信されるいずれかの書き込みDQサイクルの開始時点がt1であり、書き込みDQサイクルの終了時点がt2であり、t1とt2との間において、NAND flashチップ131によって受信される書き込みDQSがトリガポイントとなる時点がt0であると仮定される。この場合、t1~t0間の期間はセットアップ時間と呼ばれる場合があり、t0~t2間の期間はホールド時間と呼ばれる場合がある。
書き込みDQのセットアップ時間は十分である。これは、データ伝送の精度を改善するのに役立つ。具体的には、書き込みDQはデジタル信号であるため、書き込みDQの電気レベル状態は通常可変であり、すなわち、書き込みDQは任意のサイクルで低電気レベルまたは高電気レベルであり得る。2つの隣接するサイクルの間で、書き込みDQの電気レベル状態は変化しないままであってもよく、または低電気レベルから高電気レベルに変化してもよく、または高電気レベルから低電気レベルに変化してもよい。
一般に、高電気レベルおよび低電気レベルは、基準電圧に対するものである。すなわち、書き込みDQの電気レベルが基準電圧よりも低い場合、書き込みDQは低電気レベルであり;または、書き込みDQの電気レベルが基準電圧よりも高い場合、書き込みDQは高電気レベルである。書き込みDQの電気レベル状態が変化すると、電気レベル状態の切り替えを完了するために具体的な遅延が通常かかる。例えば、図3に示されるように、tminおよびtmaxにおいて、書き込みDQの電気レベルは基準電圧に到達する。
前のサイクルの低電気レベルが、現在のサイクルでの高電気レベルに切り替えられる例が使用される。セットアップ時間が不十分である場合、例えば、t0がt1とtminとの間にある場合、t0における書き込みDQの電気レベルは、基準電圧よりも大きい高電気レベルまで完全には上昇しない場合がある。この場合、NAND flashチップ131は、書き込みDQが現在のサイクルにおいて低電気レベルであると誤って見なす場合がある。すなわち、現在のサイクルにおける書き込みDQは、高電気レベルであるべきであるが、t0がt1とtminとの間にあり、電気レベルが基準電圧よりも大きい値まで完全には上昇しないので、低電気レベルとして誤って識別される。その結果、NAND flashチップ131に書き込まれるデータにエラーが発生する。したがって、フラッシュメモリコントローラ113とNAND flashチップ131との間のデータ伝送の精度を保証するためには、セットアップ時間が十分に長いことが保証される必要がある。
書き込みDQのホールド時間は十分である。これも、データ伝送の精度を改善するのに役立つ。具体的には、NAND flashチップ131は、書き込みDQの電気レベル状態を識別するために具体的な遅延を必要とする。例えば、現在のサイクルの高電気レベルが、次のサイクルでの低電気レベルに切り替えられる。t0において、NAND flashチップ131は、書き込みDQの電気レベル状態の識別を開始する。ホールド時間が不十分である場合、例えば、t0がtmaxとt2との間にある場合、NAND flashチップ131が書き込みDQの電気レベル状態を識別すると、書き込みDQの電気レベルは基準電圧よりも低くなる場合があり(書き込みDQは次のサイクルでは低電気レベルである)、これにより、NAND flashチップ131は現在のサイクルの電気レベルを低電気レベルとして誤って識別し、NAND flashチップ131に書き込まれたデータにエラーが発生する。言い換えれば、現在のサイクルにおける書き込みDQの電気レベルは、高電気レベルでなければならないが、t0がtmaxとt2との間にあり、電気レベルが基準電圧よりも低いため、低電気レベルと誤って見なされる。したがって、フラッシュメモリコントローラ113とNAND flashチップ131との間のデータ伝送の精度を保証するためには、ホールド時間が十分に長いことが保証される必要がある。
結論として、フラッシュメモリコントローラ113とNAND flashチップ131との間のデータ伝送の精度を改善するためには、書き込みDQのホールド時間およびセットアップ時間の両方が比較的長い持続時間を有する必要がある。書き込みDQのホールド時間またはセットアップ時間の持続時間が不十分である場合、フラッシュメモリコントローラ113とNAND flashチップ131との間のデータ伝送の精度が低減され、ビットエラーレートが増加される。
一般に、フラッシュメモリコントローラ113における基準電圧は、NAND flashチップ131における基準電圧と同じである。すなわち、図3に示される書き込みDQSおよび書き込みDQに関して、tminとt1との間の時間間隔は、NAND flashチップ131に適用可能な最小セットアップ時間と呼ばれる場合もあり、tmaxとt2との間の時間間隔は、メモリチップt2に適用可能な最小ホールド時間と呼ばれる場合もある。
書き込みDQのサイクルにおいて、書き込みDQSのセットアップ時間とNAND flashチップ131に適用可能な最小セットアップ時間との差は、書き込みDQのセットアップ時間のタイミングマージンと呼ばれる場合があり、かつ書き込みDQSのホールド時間とNAND flashチップ131に適用可能な最小ホールド時間との差は、書き込みDQのホールド時間のタイミングマージンと呼ばれる場合がある。書き込みDQのセットアップ時間のタイミングマージンおよびホールド時間のタイミングマージンの最小値は、書き込みDQのタイミングマージンと理解されてもよい。例えば、図3において、書き込みDQのタイミングマージンは、t1とtminとの差と、tmaxとt2との差との最小値である。
一般に、tminとtmaxとの間の時間間隔は、NAND flashチップ131の性能によって主に決定される。言い換えれば、フラッシュメモリコントローラ113について、チップのセットアップ時間の要件およびホールド時間の要件は、チップの性能によって決定され、調整されることはできない。タイミングマージンは、タイミング訓練によって最適値に調整されてもよい。タイミング訓練によって、フラッシュメモリコントローラ113は、書き込みDQSのクロスポイントに対応する時点t0をtminとtmaxとの間の中間位置、すなわち、書き込みDQのセットアップ時間のタイミングマージンがホールド時間のタイミングマージンと等しい位置に調整することができる。したがって、書き込みDQのタイミングマージンは最大値に到達することが可能にされてもよく、そして、タイミングマージンの観点から、フラッシュメモリコントローラ113からNAND flashチップ131へのデータ伝送の精度は最適化されることができる。
同じ理由から、フラッシュメモリコントローラ113がNAND flashチップ131からデータを読み出すプロセスにおいて、NAND flashチップ131によってフラッシュメモリコントローラ113に送信される読み出しDQのホールド時間と、フラッシュメモリコントローラ113に適用可能な最小ホールド時間との差は、読み出しDQのホールド時間のタイミングマージンと呼ばれる場合もある。読み出しDQのセットアップ時間とフラッシュメモリコントローラ113に適用可能な最小セットアップ時間との差は、読み出しDQのセットアップ時間のタイミングマージンと呼ばれる場合もある。読み出しDQのタイミングマージンは、読み出しDQのホールド時間のタイミングマージンおよびセットアップ時間のタイミングマージンの最小値と理解されてもよい。NAND flashチップ131によってフラッシュメモリコントローラ113に送信される読み出しDQのホールド時間のタイミングマージンがセットアップ時間のタイミングマージンと等しい場合、読み出しDQのタイミングマージンは最大値に到達することが可能にされ得る。この場合、NAND flashチップ131からフラッシュメモリコントローラ113へのデータ伝送の精度は、タイミングマージンの観点から最適化され得る。
読み出しDQおよび書き込みDQのタイミングマージンを改善し、フラッシュメモリコントローラ113とNAND flashチップ131との間のデータ伝送の精度を改善するためには、同じ方向に伝送されるDQおよびDQSの相対的なタイミング位置は整列させられる必要が通常ある。このプロセスは、メモリ訓練ともしばしば呼ばれる。
本出願のこの実施形態では、「整列させられた」は、同じ方向に伝送されるDQSおよびDQにおいて、DQのホールド時間のタイミングマージンがセットアップ時間のタイミングマージンに等しいか、またはDQのホールド時間のタイミングマージンがセットアップ時間のタイミングマージンと大きく異ならず、これにより、DQがホールド時間の比較的十分なタイミングマージンおよびセットアップ時間の比較的十分なタイミングマージンを有することとして理解され得る。DQのセットアップ時間のタイミングマージンは受信端に適用可能な最小セットアップ時間に対するものであり、かつ同様に、DQのホールド時間のタイミングマージンは受信端に適用可能な最小ホールド時間に対するものである。すなわち、「整列させられた」は、DQのセットアップ時間を受信端に適用可能な最小セットアップ時間以上にすることを可能にし、DQのホールド時間を受信端に適用可能な最小ホールド時間以上にすることを可能にしてもよい。
受信端は、NAND flashチップ131であってもよく、またはフラッシュメモリコントローラ113であってもよい。受信端に適用可能な最小セットアップ時間および最小ホールド時間は、受信端の構造および性能などの要因に基づいて取得されることができる。DQのセットアップ時間が受信端に適用可能な最小セットアップ時間未満であるか、またはDQのホールド時間が受信端に適用可能な最小ホールド時間未満である場合、受信端はDQによって搬送されたデータを正しく識別することができない。
加えて、前述の高電気レベルおよび低電気レベルは、基準電圧と比較することによって決定される。図4に示されるように、t0から開始すると、書き込み電気レベルは書き込み基準電圧Vrefよりも高く、この場合、NAND flashチップ131は、書き込み電気レベルが高電気レベルであると決定して、書き込まれたデータが1であると決定してもよく;t1から開始すると、書き込み電気レベルは書き込み基準電圧Vrefよりも低く、この場合、NAND flashチップ131は、書き込み電気レベルが低電気レベルであると決定して、書き込まれたデータが0であると決定してもよく;t2から開始すると、書き込み電気レベルは書き込み基準電圧Vrefよりも高く、この場合、NAND flashチップ131は、書き込み電気レベルが高電気レベルであると決定して、書き込まれたデータが1であると決定してもよい。
書き込み基準電圧Vrefが書き込み電気レベルの最大値(すなわち、図4に示されるV1)よりも大きく、NAND flashチップ131が、書き込み電気レベルが低電気レベルであると見なすと仮定される。この場合、NAND flashチップ131は、書き込まれたすべてのデータが0であると決定する。代替的に、書き込み基準電圧Vrefが書き込み電気レベルの最小値(すなわち、図4に示されるV2)よりも小さく、NAND flashチップ131が、書き込み電気レベルが高電気レベルであると見なすと仮定される。この場合、NAND flashチップ131は、書き込まれたすべてのデータが1であると決定する。
書き込み方向の電圧マージンは、基準電圧と書き込み電気レベルとの差である。図4に示されるように、VrefとV2との差が書き込み方向の電圧マージンである。
同じ理由により、フラッシュメモリコントローラ113がNAND flashチップ131からデータを読み出すプロセスにおいて、基準電圧と読み込み電気レベルとの差が読み込み方向の電圧マージンとなる。
図5は、図1に示される電子デバイス内のNAND flashチップの概略図である。
フラッシュメモリ(flash memory)は、NOR型フラッシュ(NOR flash)とNAND型フラッシュ(NAND flash)とに分類されることができる。NOR flashと比較されると、NANO flashは、大容量、低価格、読み出し/書き込み速度が速いなどの利点を有するため、広く適用されている。現在、NAND flashは、ソリッドステートディスク(solid-state disk、SSD)、セキュアデジタル(secure digital、SD)カード、アドインカード(add in card、AID)などに適用される場合がある。NAND flashは、携帯電話またはタブレットコンピュータなどの電子デバイス内の記憶媒体として使用される場合もある。
NAND flashの構造は、降順に、デバイス(device)、ターゲット(target)、ダイ(die)、プレーン(plane)、ブロック(block)、ページ(page)、およびセル(cell)に分割され得る。
図5に示されるNAND flashチップ131は、deviceである。deviceは、パッケージ化されたNAND flashセルであり、パッケージ(package)、フラッシュメモリチップ、NAND flashチップなどと呼ばれる場合もある。1つのストレージデバイス(例えば、SSD)は、1つ以上のdeviceを含んでもよく、1つのdeviceは、1つ以上のtargetを含んでもよい。1つのtargetは、1つ以上のdieを含んでもよい。
例えば、図5に示されるNAND flashチップ131は、target510およびtarget520の2つのtargetを含む。各targetは4つのdieを含む。target510は、die511、die512、die513、およびdie514を含み、target520は、die521、die522、die523、およびdie524を含む。
dieは論理ユニット(logical unit、LUN)と呼ばれる場合もある。1つのdieは、1つ以上のplaneを含んでもよい。各planeは大量のblockページを含んでもよく、各blockページは大量のpageページを含み、各pageは大量のcellを含む。
フラッシュメモリのチャネル(channel)の数は、ソリッドステートディスクの同時読み出し/書き込み能力を直接反映する。1つのチャネルは、1つ以上のdieを有してもよい。各deviceは、1つ以上のチャネルをサポートする。
例えば、図5に示されるNAND flashチップ131は、入力/出力インターフェース501と、チャネル502と、チャネル503と、チャネル504と、チャネル505とをさらに含む。チャネル502はdie511およびdie512に接続され、チャネル503はdie513およびdie514に接続され、チャネル504はdie521およびdie522に接続され、かつチャネル505はdie523およびdie524に接続される。
NAND flashチップ131の入力/出力インターフェース501は、NFIバスを介してフラッシュメモリコントローラに接続され、フラッシュメモリコントローラからコマンドを受信し、受信されたコマンドに基づいて、NAND flashチップ131に記憶されたデータの読み出し、NAND flashチップ131へのデータの書き込み、NAND flashチップ131からのデータの削除などを行ってもよい。例えば、NAND flashチップ131によって受信された読み出しコマンドがdie511に記憶されたデータを読み出すことである場合、die511に記憶されたデータはチャネル502を介して読み出されてもよく、その後、読み出されたデータはフラッシュメモリコントローラに送信される。別の例として、NAND flashチップ131によって受信された書き込みコマンドがdie524にデータを書き込むことである場合、データはチャネル505を介してdie524に書き込まれてもよい。
NAND flashチップのデータインターフェースは、本出願のこの実施形態では限定されず、SDR、NV-DDR、NV-DDR2、またはNV-DDR3であってもよい。
NFIバスの理想的なデータ幅は、理想的な伝送環境における単一時間データ伝送のために占有される時間を指す。理想的な伝送環境は、データ伝送時に伝送損失が考慮されないことを意味する。例えば、NFIバスの伝送レートが400×100万回/秒(million times per second、MT/s)である場合、各時間データ伝送によって占有される時間は1/400×108秒であり、すなわち、各時間データ伝送に対応する理想的なデータ幅は2.5nsである。
NFIバスの理想的なデータ幅は、フラッシュメモリチップの性能、容量、レート仕様などに関係する。NFIバスの伝送レートは、NFIバスの理想的なデータ幅と相互関係にある。したがって、NFIバスの伝送レートが増加すると、NFIバスの理想的なデータ幅はそれに応じて減少する。例えば、NFIバスの伝送レートが400MT/sであり、伝送レートである場合、NFIバスの理想的なデータ幅は2.5nsであり;NFIバスの伝送レートが800MT/sであり、伝送レートである場合、NFIバスの理想的なデータ幅は1.25nsであり;NFIバスの伝送レートが1,200MT/sであり、伝送レートである場合、NFIバスの理想的なデータ幅は0.83nsであり;または、NFIバスの伝送レートが1,600MT/sであり、伝送レートである場合、NFIバスの理想的なデータ幅は0.625nsである。
図3に示されるように、t2とt1との差がデータの有効幅である。NFIバスの理想的なデータ幅が小さいほど、t2とt1との差が小さいことを指示する。これに対応して、t1とtminとの間の差およびtmaxとt2との間の差もそれに応じて減少する。これにより、タイミングマージンが小さくなる。加えて、実際のデータ伝送プロセスでは、理想的なデータ幅で伝送端によって送信されたデータが伝送チャネルを介して減衰された後、受信端によって実際に取得されるデータ幅が低減される。この場合、NFIバスは、温度や電圧などの外的要因の影響を受けやすくなる。その結果、NFIバスチャネルにおいて信頼性の問題が発生し、データ伝送の問題が発生する。例えば、データ伝送中にビットエラーが発生する。
以下、有効幅およびマージン有効幅の概念が説明される。
有効幅は、伝送端における理想的な幅のデータが、伝送チャネルを通過するときに減衰された後に受信端に到着した後に、受信端によって実際にデータが取得される信号幅として定義されてもよい。マージン有効幅は、伝送端での理想的な信号幅において、受信端に予め設定されたデータが伝送された後に、受信端によって予め設定されたデータが正しくサンプリングされる信号幅である。有効幅と比較されると、マージン有効幅は、データセットアップ時間およびデータホールド時間の後に残っている時間を除去する。
例えば、DQSサイクルで合計nビットが伝送されることができる場合、例えば、伝送レートが400Mbpsである、すなわち、毎秒4×108ビットが伝送される場合、各ビットを伝送するために占有される時間は1s/(4×108)=2.5ns、すなわち、各ビットに対応する理想的な信号幅は2.5nsである。信号が伝送チャネルを介して受信端に到達した後、理想的な信号幅は低減され、受信端によって実際に正しく受信される有効信号幅は2nsである。
ここで、bpsはビットレート(bit rate)の単位であり、ビットレートは、(デジタルバイナリビットで表される)信号がシステム(デバイス、電波または有線)によって処理または伝送されるレート、すなわち、単位時間内に処理または伝送されるデータの量である。単位は「ビット毎秒」(bit/sまたはbps)である。ビットレートは、通信分野における接続速度、伝送速度、チャネル容量、最大スループット、デジタル帯域幅容量などを指示するために使用されることができる。本出願では、ビットレートは、コントローラとNAND flashとの間の伝送のためのバスレートを示すために使用されることができる。
加えて、「マージン有効幅」は、タイミングマージンの有効幅と呼ばれる場合もある。これは前述の「タイミングマージン」と同等であり、違いは、本出願では「タイミングマージン」を測定するために「マージン有効幅」の概念が定義されていることのみである。ここで、「マージン」は英語の「margin」に翻訳されることができ、本出願における「margin」は「マージン有効幅」を指してもよい。したがって、特に明記しない限り、本出願のこの実施形態におけるタイミングマージンは、タイミングマージンの有効幅として理解されることができる。
本出願の一実施形態は、フラッシュメモリチップを最適化するための方法を提供する。本方法によれば、データ伝送ビットエラーレートを低減し、フラッシュメモリチップの信頼性を改善するために、フラッシュメモリチップのサービス実行プロセスにおいて電圧マージンおよびタイミングマージンが最適化される。
本出願の技術的解決策は、NAND flashチップが提供されたデバイスに適用され得るが、デバイスは図2に示される構造を有するものとする。言い換えれば、図1に示されるSSDに加えて、本出願の基本的な解決策は、NFIバスを介してNAND flashチップと通信する他のデバイス、例えば、アドインカード(add in card、AIC)、セキュアデジタルカード(secure digital memory card、SDカード)、およびNAND flashチップを記憶媒体として使用する電子デバイス(例えば、携帯電話、タブレットコンピュータ、デジタルカメラ、またはECU)にも適用されてもよい。
図6は、本出願の一実施形態によるフラッシュメモリチップを最適化するための方法の概略フローチャートである。
図6に示されるように、パワーオン初期化、タイミング訓練、および電圧訓練を完了した後、フラッシュメモリチップは、サービス実行フェーズを開始する(すなわち、フラッシュメモリチップに記憶されたデータの読み出し、フラッシュメモリチップへのデータの書き込み、フラッシュメモリチップからのデータの削除などを行ってもよい)。サービス実行プロセスでは、トリガ条件が満たされているかどうかが決定され;トリガ条件が満たされていない場合、監視が継続される;トリガ条件が満たされている場合、フラッシュメモリチップの1つ以上のチャネルが選択されて一時停止され;かつ選択されたパスバンドのdieがアイドル(idle)状態に変化した後、選択されたチャネルのマージンが要件を満たしているかどうかを決定するために、選択されたチャネルに対してマージン試験が実施される。選択されたチャネルのマージンが要件を満たしていない場合、チャネルは最適化されてもよく;または、選択されたチャネルのマージンが要件を満たしている場合、フラッシュメモリチップのすべてのチャネルに対してマージン試験が実施されたかどうかが決定される。「いいえ」の場合、残りのチャネルに対してマージン試験が引き続き実施され;または、マージン試験がすべてのチャネルで実施されていた場合、トリガ条件が満たされているかどうかが監視され続ける。
以下では、図5に示されるNAND flashチップ131を参照して、図6に示される本出願のこの実施形態によるフラッシュメモリチップを最適化するための方法の概略フローチャートを説明する。
時刻t0においてNAND flashチップ131の電源がオンにされ、時刻t1においてパワーオン初期化が完了され、時刻t2においてタイミング訓練および電圧訓練が完了すると仮定される。この場合、時刻t2から、NAND flashチップ131がサービス実行フェーズにあると見なされてもよい。言い換えれば、時刻t2から、NAND flashチップ131に対して読み出し/書き込み動作が実施されてもよく、またはNAND flashチップ131内のデータが削除されてもよい。
いくつかの実施形態では、稼働環境データが監視されてもよく、監視された稼働環境データに基づいてトリガ条件が満たされているかどうかが決定される。稼働環境データは、温度および/または湿度を含んでもよい。温度監視は、温度センサを使用して実装されてもよく、湿度監視は、湿度センサを使用して実装されてもよい。
例えば、温度上限が設定されてもよく、監視された温度が温度上限よりも大きい場合、トリガ条件が満たされていると決定されてもよい。別の例として、温度上限および温度下限が設定されてもよい。監視された温度が温度上限よりも大きいか、または温度下限よりも小さい場合、トリガ条件が満たされていると決定されてもよい。
別の例として、温度上限および湿度上限が設定されてもよい。監視された温度および監視された湿度の両方が同時に対応する上限を満たしている場合(すなわち、温度は温度上限を満たし、湿度は湿度上限を満たしている)、トリガ条件が満たされていると決定されてもよい。監視された温度および監視された湿度の少なくとも一方が対応する上限を満たしていない場合(例えば、温度は温度上限より大きいが、湿度は湿度上限より小さい)、トリガ条件が満たされていないと決定されてもよい。
温度閾値と比較される温度は、温度センサによって監視されるリアルタイム温度であってもよく、またはある期間の平均温度値であってもよい。同様に、湿度閾値と比較される湿度は、湿度によって監視されるリアルタイム湿度であってもよく、またはある期間の湿度平均値であってもよい。
いくつかの他の実施形態では、NAND flashチップ131の稼働パラメータが監視されてもよく、監視された稼働パラメータに基づいてトリガ条件が満たされているかどうかが決定される。稼働パラメータは、稼働電圧、データ伝送量、チャネルの現在の状態などのうちの1つ以上を含んでもよい。稼働電圧は、NAND flashチップ131の稼働電圧であってもよく、またはデータを伝送するためのインターフェース電圧であってもよい。
例えば、データ伝送量下限値が設定されてもよい。NAND flashチップ131のデータ伝送量がデータ伝送量下限値未満である場合、トリガ条件が満たされていると決定されてもよい。
別の例として、NAND flashチップ131がアイドル状態のチャネルを有するか、またはアイドル状態のチャネルの数が予め設定された数よりも大きいと決定された場合、トリガ条件が満たされていると決定されてもよい。
いくつかの他の実施形態では、タイマが設定されてもよい。タイマが満了した場合、トリガ条件が満たされていると決定されてもよい。加えて、タイマは、すべてのチャネルがマージン試験を完了した後に再起動されてもよい。
いくつかの他の実施形態では、トリガ条件が満たされているかどうかを決定するために、複数の稼働環境データ、稼働パラメータ、またはタイマが同時に監視されてもよい。
いくつかの実施形態では、トリガ条件は、複数の監視されたデータがそれぞれ対応する条件を同時に満たしている場合にのみ満たされていると決定されてもよい。例えば、記憶デバイスの温度およびタイマが同時に監視される。記憶デバイスの温度が予め設定された上限温度よりも大きく、かつタイマが満了した場合、トリガ条件が満たされていると決定されてもよく;または、記憶デバイスの温度が予め設定された上限温度よりも大きいがタイマが満了していない場合、トリガ条件が満たされていないと決定されてもよい。
いくつかの他の実施形態では、複数の監視されたデータのいずれか1つが対応する条件を満たしている場合にトリガ条件が満たされていると決定されてもよい。例えば、記憶デバイスの温度およびタイマが同時に監視される。記憶デバイスの温度が予め設定された上限温度よりも大きく、かつ/またはタイマが満了した場合、トリガ条件が満たされていると決定されてもよく;または、記憶デバイスの温度が予め設定された上限温度未満であり、かつタイマが満了していない場合、トリガ条件は満たされていないと決定されてもよい。
トリガ条件が満たされると、1つ以上のチャネルが一時停止されるように選択されてもよい。
いくつかの実施形態では、一時停止チャネルはランダムに選択されてもよい。
いくつかの他の実施形態では、一時停止チャネルは、チャネルのデータ伝送量に基づいて選択されてもよい。例えば、アイドル状態のチャネルが最初に選択されてもよく、次いで、サービス読み出し/書き込みを実施しているチャネルが選択される。別の例では、比較的低いデータ伝送量を有するチャネルが最初に選択されてもよく、次いで、比較的高いデータサービスフローを有するチャネルが選択される。
選択された一時停止チャネルの数がチャネルの総数未満である場合、選択されていないチャネルは正常に稼働し続ける。
図5に示されるチャネル502およびチャネル503は、一時停止されるように選択されているものと仮定される。この場合、チャネル504およびチャネル505を介して、die521~die524に対して通常の読み出し/書き込み動作が実施されてもよい。
チャネル502およびチャネル503が一時停止された後、チャネル502およびチャネル503に対応するdieの状態はアイドル状態に変化されてもよい。die511およびdie512の状態がアイドル状態に変化してもよく、かつマージン試験がチャネル502に対して実施されてもよいことが仮定される。チャネル502に対してマージン試験が実施された後、die513およびdie514がアイドル状態にある場合、マージン試験はチャネル503に対して実施されてもよい。
マージン試験は、タイミングマージン試験と電圧マージン試験とに分類されることができる。チャネル502は、マージン試験を説明するための例として使用される。
いくつかの実施形態では、チャネル502に対してマージン試験を実施することは、チャネル502に対してのみタイミングマージン試験を実施することであってもよい。この場合、チャネル502がタイミングマージン試験に合格している場合、チャネル502は最適化される必要がないと決定されてもよく;または、チャネル502がタイミングマージン試験に合格していない場合、チャネル502は最適化対象チャネルであると決定されてもよい。
いくつかの他の実施形態では、チャネル502に対してマージン試験を実施することは、チャネル502に対してのみ電圧マージン試験を実施することであってもよい。この場合、チャネル502が電圧マージン試験に合格している場合、チャネル502は最適化される必要がないと決定されてもよく;または、チャネル502が電圧マージン試験に合格していない場合、チャネル502は最適化対象チャネルであると決定されてもよい。
いくつかの他の実施形態では、チャネル502に対してマージン試験を実施することは、チャネル502に対してタイミングマージン試験および電圧マージン試験を実施することであってもよい。
タイミングマージン試験および電圧マージン試験の両方がチャネル502に対して実施される場合、チャネル502がマージン試験に合格するかどうかは複数の方式で決定されてもよい。
例えば、一実装形態では、両方の試験が合格した場合にのみ、チャネル502はマージン試験に合格していると決定されることができる。言い換えれば、チャネル502がタイミングマージン試験に合格していないか、またはチャネル502が電圧マージン試験に合格していない場合、チャネル502はマージン試験に合格していないと決定されてもよい。
別の例として、別の実装形態では、他のマージン試験のうちの1つが合格した場合に、チャネル502はマージン試験に合格していると決定されてもよい。言い換えれば、チャネル502がタイミングマージン試験に合格しているか、またはチャネル502が電圧マージン試験に合格している場合、チャネル502はマージン試験に合格していると決定されてもよい。この場合、2つのマージン試験は順に実施されてもよい。最初に実施されたマージン試験が合格であれば、他のマージン試験は実施されなくてもよい。例えば、タイミングマージン試験が、チャネル502に対して最初に実施される。チャネル502がタイミングマージン試験に合格している場合、チャネル502はマージン試験に合格していると直接決定されてもよく、チャネル502に対して電圧マージン試験を実施し続ける必要はない。チャネル502がタイミングマージン試験に合格していない場合、チャネル502に対して電圧マージン試験が実施される。チャネル502が電圧マージン試験に合格している場合、チャネル502はマージン試験に合格していると決定されてもよい。チャネル502が電圧マージン試験に合格していない場合、チャネル502はマージン試験に合格していないと決定されてもよい。
図7~図10を参照して、以下では、タイミングマージン試験および電圧マージン試験について説明する。
図7は、フラッシュメモリコントローラとdieとの間の接続の概略図である。図7に示される入力/出力インターフェース701は、フラッシュメモリコントローラの入力/出力インターフェースである。図7に示される入力/出力インターフェース703は、dieの入出力インターフェースである。
図7に示されるように、入力/出力インターフェース701は、分圧モジュール702を含む。分圧モジュール702は、タイミングマージン試験を実装してもよい。
図8は、タイミングマージン試験のフローチャートである。分圧モジュール702は、N個のレベルの基準電圧Vref(Nは2以上の正の整数)を設定してもよいものと仮定される。N個のレベルの電圧は、それぞれV1、V2、…、およびVNで表されてもよい。
801:VrefのレベルをV1に設定する。
802:Vrefの現在のレベルがVN以下であるかどうかを決定する。Vrefの現在のレベルが基準電圧の最大レベルVN以下である場合、タイミングマージン試験の後続のステップが実施され続ける。
803:試験データをNAND flashチップに書き込む。
任意選択で、試験データは、比較的低いレートでNAND flashチップに書き込まれてもよい。これにより、書き込み時のエラーの確率が低減されることができる。例えば、表1は、本出願のこの実施形態におけるNFIバス稼働モードとレートとの間の対応関係を示す。異なる稼働モードは異なるバスレートに対応する。
例えば、NV-DDR稼働モードに対応するバスレートは40~200×100万ビット毎秒(million bit per second、Mbps)であり、NV-DDR稼働モードに対応する低レートは40Mbpsまたは48Mbpsであってもよい。
NAND flashチップに書き込まれるデータは、例えば、0x5AA55AA5または0xA55AA55Aなど、伝送エラーが発生しやすいデータであってもよい。試験データは、NAND flashチップのキャッシュレジスタ(catach register)に書き込まれてもよい。別のより深い領域(例えば、データレジスタまたはNAND flashアレイ(NAND flash array))の代わりにNAND flashチップのキャッシュレジスタに試験データを書き込むことは、NAND flashチップ内のデータ伝送中にエラーが発生する確率を低減し得る。
804:読み出し方向タイミングマージン試験を実施し、読み出し方向タイミングマージンの有効幅を記録する。
NAND flashチップに試験データが書き込まれた後、ステップ803で書き込まれた試験データが読み出されてもよい。試験データの読み出しプロセスでは、現在レベルの読み出し方向タイミングマージンの有効幅Trx1を取得するために、DQ信号の書き込み方向有効アイ幅が記録される。
805:書き込み方向タイミングマージン試験を実施し、書き込み方向タイミングマージンの有効幅を記録する。
読み出し方向タイミングマージン試験が完了した後、書き込み方向タイミングマージン試験を実施するために、通常レートで試験データが書き込まれる。試験データの書き込みプロセスでは、現在レベルの書き込み方向タイミングマージンの有効幅Ttx1を取得するために、DQ信号の書き込み方向有効アイ幅が記録される。
806:Vrefのレベルを次のレベル、すなわちVref=Vn+1に設定し、読み出し方向タイミングマージン試験および書き込み方向タイミングマージン試験を実施し続けて、N個のレベルの読み出し方向タイミング有効幅およびN個のレベルの書き込み方向タイミング有効幅を順次取得する。
N個のレベルの読み出し方向タイミング有効幅およびN個のレベルの書き込み方向タイミング有効幅が取得された後、N個のレベルの読み出し方向タイミング有効幅およびN個のレベルの書き込み方向タイミング有効幅に基づいて、タイミングマージン試験が合格したかどうかが決定されてもよい。説明を簡単にするために、N個のレベルの読み出し方向タイミング有効幅はN個の読み出しタイミング有効幅と呼ばれる場合があり、N個のレベルの書き込み方向タイミング有効幅はN個の書き込みタイミング有効幅と呼ばれる場合がある。
いくつかの実施形態では、N個の読み出しタイミング有効幅およびN個の書き込みタイミング有効幅の両方がタイミングマージン試験に合格している場合、チャネルはタイミングマージン試験に合格していると見なされてもよい。言い換えれば、N個の読み出しタイミング有効幅およびN個の書き込みタイミング有効幅のいずれかがマージン試験に合格していない場合、チャネルはタイミングマージン試験に合格していないと見なされてもよい。
いくつかの実施形態では、N個のレベルの読み出し方向タイミング有効幅は、それぞれ閾値範囲に対応する。例えば、N個のレベルの読み出し方向タイミング有効幅はそれぞれ、別々にTrx1、Trx2、…、およびTrxNであると仮定される。Trx1の閾値範囲は[Th1_Trx1,Th2_Trx1]であり、Trx2の閾値範囲は[Th1_Trx2,Th2_Trx2]であり、…、そして、TrxNの閾値範囲は[Th1_TrxN,Th2_TrxN]である。あるレベルの読み出し方向タイミング有効幅が対応する閾値範囲内であれば、このレベルの読み出し方向タイミング有効幅はタイミングマージン試験に合格していると見なされてもよい。同様に、N個のレベルの書き込み方向タイミング有効幅は、それぞれ閾値範囲に対応する。例えば、N個のレベルの書き込み方向タイミング有効幅はそれぞれ、別々にTtx1、Ttx2、…、およびTtxNであると仮定される。Ttx1の閾値範囲は[Th1_Ttx1,Th2_Ttx1]であり、Ttx2の閾値範囲は[Th1_Ttx2,Th2_Ttx2]であり、…、そして、TrxNの閾値範囲は[Th1_TtxN,Th2_TtxN]である。あるレベルの書き込み方向タイミング有効幅が対応する閾値範囲内であれば、このレベルの書き込み方向タイミング有効幅はタイミングマージン試験に合格していると見なされてもよい。
いくつかの他の実施形態では、N個のレベルの読み出し方向タイミング有効タイミング幅はそれぞれ下限値を有する。あるレベルの読み出し方向タイミング有効幅が、そのレベルに対応する下限値を超えていれば、そのレベルでの読み出し方向タイミング有効幅は、タイミングマージン試験に合格していると見なされてもよい。同様に、N個のレベルの書き込み方向タイミング有効幅は、それぞれ下限値を有する。あるレベルの書き込み方向タイミング有効幅が、そのレベルに対応する下限値を超えていれば、そのレベルでの書き込み方向タイミング有効幅は、タイミングマージン試験に合格していると見なされてもよい。
いくつかの他の実施形態では、タイミングマージン試験に合格するレベルが予め設定された比を超える場合、チャネルはタイミングマージン試験に合格していると見なされてもよい。
いくつかの実施形態では、読み出し方向および書き込み方向で合格したマージン試験のレベル比が別々にカウントされる。2つのレベル比は、予め設定された比と別々に比較される。2つのレベル比の両方が予め設定された比を超える場合、チャネルはタイミングマージン試験に合格していると見なされてもよい。
例えば、予め設定された比率が50%であり、75%のレベルの読み出し方向タイミング有効幅がタイミングマージン試験に合格し、90%のレベルの書き込み方向タイミング有効幅がタイミングマージン試験に合格していると仮定される。この場合、チャネルがタイミングマージン試験に合格していると見なされてもよい。
別の例として、予め設定された比率が50%であり、75%のレベルの読み出し方向タイミング有効幅がタイミングマージン試験に合格し、40%のレベルの書き込み方向タイミング有効幅がタイミングマージン試験に合格していると仮定される。この場合、チャネルがタイミングマージン試験に合格していないと見なされてもよい。
いくつかの他の実施形態では、タイミングマージン試験に合格している合計レベルの比がカウントされてもよい。合計レベルの比が予め設定された比を超える場合、チャネルはタイミングマージン試験に合格していると見なされてもよい。そうでない場合、チャネルはタイミングマージン試験に合格していないと見なされる。
例えば、N=10であり、予め設定された比が50%であり、3つのレベルの読み出し方向タイミング有効幅がタイミングマージン試験に合格し、8つのレベルの書き込み方向タイミング有効幅がタイミングマージン試験に合格していると仮定される。タイミングマージン試験に合格している合計レベルの比は、(3+8)/(10+10)=11/20である。タイミングマージン試験に合格している合計レベルの比は50%より大きいことが学習されることができる。したがって、チャネルがタイミングマージン試験に合格していると見なされてもよい。
いくつかの他の実施形態では、2つの予め設定された閾値が設定されてもよく、2つの予め設定された閾値は、予め設定されたタイミング閾値1および予め設定されたタイミング閾値2とそれぞれ呼ばれてもよい。N個の読み出しタイミング有効幅およびN個の書き込みタイミング有効幅が決定された後、N個の読み出しタイミング有効幅の最大値(Max_rxで表される場合がある)およびN個の書き込みタイミング有効幅の最大値(Max_txで表される場合がある)が決定されてもよい。Max_rxが予め設定されたタイミング閾値1以下であり、かつMax_txが予め設定されたタイミング閾値2以下である場合、チャネルはタイミングマージン試験に合格していると見なされてもよい。Max_rxが予め設定されたタイミング閾値1より大きいか、またはMax_txが予め設定されたタイミング閾値2より大きい場合、チャネルはタイミングマージン試験に合格していないと見なされてもよい。
いくつかの他の実施形態では、N個の読み出しタイミング有効幅およびN個の書き込みタイミング有効幅の最大値が決定されてもよい。最大値が予め設定された閾値以下である場合、チャネルはタイミングマージン試験に合格していると見なされてもよく;または、最大値が予め設定された閾値より大きい場合、チャネルはタイミングマージン試験に合格していないと見なされてもよい。
前述の実施形態では、タイミング有効幅の最大値は、予め設定された閾値と比較される。いくつかの他の実施形態では、タイミング有効幅の平均値がさらに決定されてもよく、チャネルがタイミングマージン試験に合格するかどうかは、決定された平均値を予め設定された閾値と比較することによって決定される。
例えば、いくつかの実施形態では、N個の読み出しタイミング有効幅の平均値(Avg_rxで表される場合がある)およびN個の書き込みタイミング有効幅の平均値(Avg_txで表される場合がある)がカウントされてもよい。Avg_rxが予め設定された閾値(予め設定されたタイミング閾値3と呼ばれる場合がある)以下であり、かつAvg_txが別の予め設定された閾値(予め設定されたタイミング閾値4と呼ばれる場合がある)以下である場合、チャネルはタイミングマージン試験に合格していると見なされてもよく;または、Avg_rxが予め設定されたタイミング閾値3よりも大きいか、もしくはAvg_txが予め設定されたタイミング閾値4よりも大きい場合、チャネルはタイミングマージン試験に合格していないと見なされてもよい。
いくつかの他の実施形態では、N個の読み出しタイミング有効幅およびN個の書き込みタイミング有効幅の平均値がカウントされてもよい。平均値が予め設定された閾値以下である場合、チャネルはタイミングマージン試験に合格していると見なされてもよく;または、平均値が予め設定された閾値より大きい場合、チャネルはタイミングマージン試験に合格していないと見なされてもよい。
図9は、フラッシュメモリコントローラの概略図である。電圧マージン試験は、図9に示されるフラッシュメモリコントローラ内のDLL/DLモジュール内の遅延ロックループ(delay locked loop、DLL)および遅延線(delay line、DL)を介して実装されてもよい。
図10は、電圧マージン試験の概略フローチャートである。図10に示されるDLL/DLモジュールは、DQS遅延レベルの数をN(Nは2以上の正の整数である)に設定し得ると仮定される。N個のレベルの遅延は、T1、T2、…、およびTNによってそれぞれ表されてもよい。
1001:DQS遅延の初期レベルをT1に設定する。
1002:DQS遅延の現在のレベルがTN以下であるかどうかを決定する。DQS遅延の現在のレベルが最大遅延レベルTN以下である場合、電圧マージン試験の後続のステップが引き続き実施される。
1003:試験データをNAND flashチップに書き込む。
図8のタイミングマージン試験プロセスと同様に、試験データはまた、比較的低いレートでNAND flashチップに書き込まれてもよい。試験データはまた、エラーを起こしやすい可能性がある。書き込まれた試験データの位置は、NAND flashチップ内のキャッシュレジスタである場合もある。
1004:読み出し方向タイミングマージン試験を実施し、読み出し方向電圧マージンを記録する。
NAND flashチップに試験データが書き込まれた後、書き込まれた試験データが読み出されてもよい。試験データの読み出しプロセスでは、現在のレベルの読み出し方向の高電気レベルVrx1hと低電気レベルVrx1lとが取得され、Vrx1hとVrx1lとの和が現在のレベルの読み出し方向の電圧マージンVrx1として決定される。
1005:書き込み方向タイミングマージン試験を実施し、書き込み方向電圧マージンを記録する。
試験データの書き込みプロセスでは、現在のレベルの書き込み方向の高電気レベルVtx1hと低電気レベルVtx1lとが取得され、Vtx1hとVtx1lとの和が現在のレベルの書き込み方向の電圧マージンVtx1として決定される。
1006:DQS遅延レベルを次のレベル、すなわちTn+1に設定し、読み出し方向電圧マージン試験および書き込み方向電圧マージン試験を実施し続けて、N個のレベルの読み出し方向電圧マージンおよびN個のレベルの書き込み方向電圧マージンを順次取得する。
N個のレベルの読み出し方向電圧マージンおよびN個のレベルの書き込み方向電圧マージンが取得された後、N個のレベルの読み出し方向電圧マージンおよびN個のレベルの書き込み方向電圧マージンに基づいて、電圧マージン試験が合格したかどうかが決定されてもよい。説明を容易にするために、N個のレベルの読み出し方向電圧マージンはN個の読み出し電圧マージンと呼ばれる場合があり、N個のレベルの書き込み方向電圧マージンはN個の書き込み電圧マージンと呼ばれる場合がある。
チャネルが電圧マージン試験に合格しているかどうかを決定する方式は、チャネルがタイミングマージン試験に合格しているかどうかを決定する方式と同様である。
例えば、いくつかの実施形態では、各電圧マージンは、対応する閾値範囲を有してもよい。N個の読み出し電圧マージンおよびN個の書き込み電圧マージンの両方が対応する閾値範囲内にある場合、チャネルは電圧マージン試験に合格していると決定されてもよく;または、電圧マージンが対応する閾値範囲内にない場合、チャネルがマージン試験に合格していないと決定されてもよい。
別の例として、いくつかの実施形態では、N個の読み出し電圧マージンの最大値が予め設定された閾値と比較されてもよく、N個の書き込み電圧マージンの最大値が予め設定された閾値と比較されてもよく、そして、比較結果に基づいてチャネルがマージン試験に合格しているかどうかが決定される。
別の例として、いくつかの他の実施形態では、閾値は、電圧マージンの平均値と比較されてもよい。
チャネルが電圧マージン試験に合格しているかどうかを決定する具体的な実装形態については、チャネルがタイミングマージン試験に合格しているかどうかを決定する説明を参照されたい。簡潔にするため、ここでは詳細は再度説明されない。
チャネル502はマージン試験に合格し、チャネル503はマージン試験に合格していないと仮定される。この場合、チャネル503は最適化対象チャネルであると決定されてもよい。この場合、チャネル502は最適化される必要はなく、チャネル503は最適化される必要がある。以下では、図11~図12を参照して、チャネル最適化プロセスについて説明する。
チャネル最適化は、電圧マージン最適化とタイミングマージン最適化とに分類されてもよい。
いくつかの実施形態では、電圧マージン最適化およびタイミングマージン最適化の両方が、最適化対象チャネル(例えば、チャネル503)に対して実施されてもよい。
いくつかの他の実施形態では、電圧マージン最適化のみ、またはタイミングマージン最適化のみが、最適化対象チャネル(例えば、チャネル503)に対して実施されてもよい。
例えば、チャネル503が電圧マージン試験に合格しているがタイミングマージン試験に合格していない場合、チャネル503に対してタイミングマージン最適化が実施されてもよい。
別の例では、チャネル503がタイミングマージン試験に合格しているが電圧マージン試験に合格していない場合、チャネル503に対して電圧マージン最適化が実施されてもよい。
図11は、本出願の一実施形態による電圧マージン最適化の概略フローチャートである。
1101:K個の読み出しマージンおよびK個の書き込みマージンを取得し、ここで、K個の読み出しマージンはK個のレベルと1対1に対応し、K個の書き込みマージンはK個のレベルと1対1に対応し、かつKは1より大きい正の整数である。
上述のように、タイミングマージン試験を実施するプロセスにおいて、N個の電圧レベルの読み出し方向タイミングマージン有効幅と、N個のレベルの書き込み方向タイミングマージン有効幅とが抽出されてもよい。
いくつかの実施形態では、K個の電圧レベル(Kは1よりも大きく、かつNよりも小さい正の整数)およびK個の電圧レベルに対応する読み出し方向タイミングマージン有効幅および書き込み方向タイミングマージン有効幅は、N個の電圧レベルから選択されてもよい。選択されたK個の電圧レベルはステップ1101におけるK個のレベルであり、K個の電圧レベルに対応する読み出し方向タイミングマージン有効幅はステップ1101におけるK個の読み出しマージンであり、かつK個の電圧レベルに対応する書き込み方向タイミングマージン有効幅はステップ1101におけるK個の書き込みマージンである。
N個の電圧レベルからK個の電圧レベルを選択するための複数の方式が存在してもよい。例えば、K個の電圧レベルはランダムに選択されてもよい。別の例として、読み出し方向タイミングマージン有効幅のうちの最大のK個の読み出し方向タイミングマージン有効幅に対応するK個の電圧レベルが選択されてもよく、Kは、予め設定された値、または予め設定された比に基づいて計算された正の整数であってもよい。別の例として、書き込み方向タイミングマージン有効幅のうちの最大のK個の書き込み方向タイミングマージン有効幅に対応するK個の電圧レベルが選択されてもよく、Kは、予め設定された値、または予め設定された比に基づいて計算された正の整数であってもよい。
いくつかの他の実施形態では、K個のレベルはN個の電圧レベルと同じであってもよい。言い換えれば、ステップ1101において、タイミングマージン試験で取得されたN個の電圧レベル、ならびに各電圧レベルの読み出し方向タイミングマージン有効幅および書き込み方向タイミングマージン有効幅が直接使用されてもよい。この場合、Kの値はNの値と同じである。
K個のレベルがK個の電圧レベルである場合、K個の読み出しマージンは、K個の読み出しタイミングマージンと呼ばれる場合もあり、K個の書き込みマージンは、K個の書き込みタイミングマージンと呼ばれる場合もある。
上述のように、電圧マージン試験を実施するプロセスにおいて、N個のDQS遅延レベルの読み出し方向電圧マージンおよび書き込み方向電圧マージンが取得されてもよい。
同様に、いくつかの実施形態では、K個のDQS遅延レベル(Kは1より大きく、かつNより小さい正の整数である)、ならびにK個のDQS遅延レベルに対応する読み出し方向電圧マージンおよび書き込み方向電圧マージンが、N個のDQS遅延レベルから選択されてもよい。選択されたK個のDQS遅延レベルはステップ1101のK個のレベルであり、K個のDQS遅延レベルに対応する読み出し方向電圧マージンは、ステップ1101のK個の読み出しマージンであり、かつK個のDQS遅延レベルに対応する書き込み方向電圧マージンは、ステップ1101のK個の書き込みマージンである。
N個のDQS遅延レベルからK個のDQS遅延レベルを選択するために複数の方式が存在してもよい。例えば、K個のDQS遅延レベルはランダムに選択されてもよい。別の例として、読み出し方向電圧マージンのうちの最大のK個の読み出し方向電圧マージンに対応するK個の電圧レベルが選択されてもよく、Kは、予め設定された値、または予め設定された比に基づいて計算された正の整数であってもよい。別の例として、書き込み方向電圧マージンのうちの最大のK個の方向電圧マージンに対応するK個の電圧レベルが選択されてもよく、Kは、予め設定された値、または予め設定された比に基づいて計算された正の整数であってもよい。
いくつかの他の実施形態では、K個のレベルはN個のDQS遅延レベルと同じであってもよい。言い換えれば、ステップ1101において、電圧マージン試験で取得されたN個のDQS遅延レベル、ならびに各DQS遅延レベルの読み出し方向電圧マージンおよび書き込み方向電圧マージンが直接使用されてもよい。この場合、Kの値はNの値と同じである。
K個のレベルがK個のDQS遅延レベルである場合、K個の読み出しマージンは、K個の読み出し電圧マージンと呼ばれる場合もあり、K個の書き込みマージンは、K個の書き込み電圧マージンと呼ばれる場合もある。
1102:ステップ1101で取得されたK個の読み出しマージンおよびK個の書き込みマージンに基づいて最適化パラメータを決定する。
K個の読み出しマージンに基づいて読み出し最適化電圧が決定されてもよく、K個の書き込みマージンに基づいて書き込み読み出し電圧が決定されてもよい。
例えば、読み出し最適化電圧は、以下の式を使用することによって決定されてもよい。
式中、Vrx_bestは読み出し最適化電圧を表し、VkはK個の電圧レベルのうちのk番目の電圧レベルを表し、Trx1はK個の読み出しタイミングマージンのうちのk番目の読み出しタイミングマージンを表し、かつk=1,…,Kである。
書き込み最適化電圧は、以下の式を使用することによって決定されてもよい。
式中、Vtx_bestは書き込み最適化電圧を表し、VkはK個の電圧レベルのうちのk番目の電圧レベルを表し、かつTtx1はK個の書き込みタイミングマージンのうちのk番目の書き込みタイミングマージンを表す。
別の例として、読み出し最適化電圧は、K個の読み出し方向電圧マージンの算術平均値であってもよく、すなわち、読み出し最適化電圧は、以下の式を使用することによって決定されてもよい。
式中、Vrx_bestは、読み出し最適化電圧を表し、Vrxkは、K個の読み出し電圧マージンのうちのk番目の読み出し電圧マージンを表し、かつk=1,…,Kである。
書き込み最適化電圧は、K個の書き込み方向電圧マージンの算術平均値であってもよく、すなわち、最適化電圧は、以下の式を使用することによって決定されてもよい。
式中、Vtx_bestは、読み出し最適化電圧を表し、Vtxkは、K個の書き込み電圧マージンのうちのk番目の書き込み電圧マージンを表し、かつk=1,…,Kである。
前述の実施形態では、読み出し最適化電圧および書き込み最適化電圧を決定するプロセスにおいて、ステップ1101で決定されたすべての読み出しマージンおよび書き込みマージンが使用される。いくつかの他の実施形態では、読み出し最適化電圧および書き込み最適化電圧を決定するプロセスにおいて、ステップ1101で決定されたいくつかの読み出しマージンおよび書き込みマージンが使用されてもよい。例えば、最大読み出しマージン、最小読み出しマージン、最大書き込みマージン、および最小書き込みマージンが除外された後、読み出し最適化電圧を取得するために残りの読み出しマージンが平均され、かつ書き込み電圧マージンを取得するために残りの書き込みマージンが平均される。
前述の実施形態では、読み出し基準電圧および書き込み基準電圧が最適化されることができ、フラッシュメモリコントローラとNAND flashチップとの間の伝送におけるエラーの確率が低減され、記憶性能が改善される。
図12は、本出願の一実施形態によるタイミングマージン最適化の概略フローチャートである。
1201:試験データをNAND flashチップに書き込む。
図8のタイミングマージン試験プロセスと同様に、試験データはまた、比較的低いレートでNAND flashチップに書き込まれてもよい。試験データはまた、エラーを起こしやすい可能性がある。書き込まれた試験データの位置は、NAND flashチップ内のキャッシュレジスタである場合もある。
1202:DQのタイミングマージン有効幅を取得する。
1203:タイミングマージン有効幅に基づいて左境界(L_Boundary)および右境界(R_Boundary)を決定し、ここで、左境界はすべてのDQのタイミングマージン有効幅の最小値の最大値であり、右境界はすべてのDQが左境界と整列させられているときのすべての対応するタイミングマージン有効幅の最大値の最小値である。
1204:左境界および右境界に基づいて第1の中心位置を算出する。読み出しデータの訓練中、第1の中心位置は、すべてのDQが整列させられた後に取得される最小マージン有効幅の中心である。
第1の中心位置は、左境界と右境界との平均値、すなわち、Centring=-(L_Boundary-R_Boundary)/2である。
1205:DQS信号のエッジがDQのマージン有効幅の中心ポイント(Centring)に位置されるように、DQSの遅延線DLを第1の中心位置に調整する。
加えて、本方法は、第1の中心位置に対応する遅延線DL値をDQSレジスタに割り当てるステップと;各DQのDL値を対応するDQレジスタに割り当てるステップとをさらに含む。各DQのDL値は、各DQをDQSのエッジに整列させるために調整されることが必要な長さを、DQに対応するスケール単位に変換することによって取得される値である。
任意選択で、DQSのスケールはDQのスケールとは異なる。具体的には、DQS信号は、比較的多くのスケール値を有する。例えば、合計1024個のタップ番号があり、単位スケールで表される時間はDQSサイクルによって決定され、すなわちDLLによって測定されるDQSサイクルは1024個に分割される。DQ信号は、比較的少ないスケール値を有する。例えば、タップ数は合計20個あり、単位スケールで表される時間は固定である(ハードウェア回路の精密度で決定される)。さらに、スケール単位は、5ps、10ps、20psなどに設定されてもよい。
DQSの遅延線を第1の中心位置に調整するために使用されるパラメータは、読み出し最適化DQSタイミング最適化パラメータと呼ばれる場合がある。
1206:第2の中心位置を取得するために書き込み方向マージンタイミング訓練を実施する。書き込みデータの訓練中、第2の中心位置は、すべてのDQが整列させられた後に取得される最小マージン有効幅の中心である。
読み出し方向訓練が完了した後、予め設定されたデータまたはカスタムデータが通常のレートで書き込まれ、次いで、書き込まれたばかりのデータを読み出すために読み出しコマンドが送信され、書き込み方向タイミング訓練が実施される。
書き込まれる予め設定されたデータまたはカスタムデータは、読み出し方向において予め設定されたデータと同じであっても、または異なっていてもよい。これは、本出願のこの実施形態では限定されない。
書き込み方向訓練が完了した後、第2の中心位置に対応する遅延線DLがDQSレジスタに割り当てられ、各DQのDL値が対応するDQレジスタに割り当てられる。各DQのDL値は、各DQをDQSのエッジに整列させるために調整されることが必要な長さを、DQに対応するスケール単位に変換することによって取得される値である。
DQSの遅延線を第2の中心位置に調整するために使用されるパラメータは、書き込み最適化DQSタイミング最適化パラメータと呼ばれる場合がある。
前述の方法では、訓練データが低レートで書き込まれ、次いで、読み出しコマンドが送信されて訓練データが読み出され、読み出し方向タイミング訓練が実施される。読み出し訓練方向の第1の中心位置は、NFIバス上のDQのマージン有効幅の左境界および右境界の値を使用して決定され、かつコントローラ側のDQ信号の遅延線が自動的に調整され、これにより、すべてのDQ信号のタイミングマージン有効幅が最大化され、DQS信号の遅延線が第1の中心位置に調整され、かつDQS信号エッジがDQ信号の最適サンプリングポイントに位置される。さらに、カスタムデータが通常レートで書き込まれ、読み出しコマンドが送信されて書き込まれたばかりのデータが読み出され、そして、第2の中心位置を決定するために書き込み方向タイミング訓練が実施される。次いで、コントローラのDQ信号の遅延線が自動的に調整され、これにより、すべての受信されたDQ信号のマージン有効幅が最大化され、コントローラは、DQS信号の遅延線を第2の中心位置に調整し、NAND flash受信端によって受信されたDQS信号のエッジは、DQ信号の最適なサンプリングポイントに位置される。結論として、前述の解決策では、受信端での信号のタイミングマージン有効幅が最大であり、セットアップ時間マージンおよびホールド時間マージンが最大であることを可能にするために、タイミングマージンは、DQS信号の遅延線の位置を調整することによって最適化されることができ、それによって仕様要件を満たし、データ読み出し/書き込み中のビットエラーによって引き起こされるデータ損失を回避する。
左境界および右境界は、以下の3つの具体的な実装形態のうちの1つで決定されてもよい。
方式1:左境界および右境界は、予め設定された境界範囲[a,b]に基づいて決定される。
方式2:左境界および右境界は、DQSサイクルの1/4を開始位置として使用し、DQS位置を左右に調整することによって決定される。
方式3:左境界および右境界は、初期スケール値から、左から右にDQS位置を徐々に調整することによって決定される。
図13は、本出願の一実施形態によるフラッシュメモリチップを最適化するための方法の概略フローチャートである。
1301:フラッシュメモリチップのサービス実行プロセスにおいて、フラッシュメモリチップの不揮発性フラッシュインターフェースNFIバス内のN個のチャネルを一時停止し、ここで、Nは1以上、かつNFIバス内のチャネルの総数以下の整数である。
1302:N個のチャネルから少なくとも1つの最適化対象チャネルを決定する。
1303:少なくとも1つの最適化対象チャネル内の各最適化対象チャネルの訓練データに基づいて、各最適化対象チャネルの最適化パラメータを決定する。
1304:各最適化対象チャネルの最適化パラメータに基づいて各最適化対象チャネルを最適化する。
最適化対象チャネルを決定し、パラメータを最適化する具体的な実装形態については、前述の実施形態を参照されたい。簡潔にするため、ここでは詳細は再度説明されない。
前述の技術的解決策では、フラッシュメモリチップの実行プロセスにおいて、複数のチャネル内のいくつかのチャネルが検出および最適化のために選択される。言い換えれば、NFIバス内のチャネルの別の部分は、通常の稼働状態にある。したがって、チャネルパラメータは、ディスクの切断なしに最適化されることができる。マージン決定規格における物理環境および稼働状態への依存性が低減されてもよく、マージン決定規格がさらに圧縮されてもよく、これにより、より多くのマージンがインターフェースリンクのために確保され、それによってより高いレートをサポートしてもよい。
図14は、本出願の実施形態による電子デバイスの構造の概略ブロック図である。図14に示される電子デバイス1400は、図1に示されるSSD100であってもよく、図1に示されるSSDコントローラ110であってもよく、または図1に示されるフラッシュメモリコントローラ113であってもよい。
処理ユニット1401は、フラッシュメモリチップのサービス実行プロセスにおいて、フラッシュメモリチップの不揮発性フラッシュインターフェースNFIバス内のN個のチャネルを一時停止するように構成され、ここで、Nは1以上、かつNFIバス内のチャネルの総数以下の整数である。
決定ユニット1402は、N個のチャネルから少なくとも1つの最適化対象チャネルを決定するように構成される。
決定ユニット1402は、少なくとも1つの最適化対象チャネル内の各最適化対象チャネルの訓練データに基づいて、各最適化対象チャネルの最適化パラメータを決定するようにさらに構成される。
最適化ユニット1403は、各最適化対象チャネルの最適化パラメータに基づいて各最適化対象チャネルを最適化するように構成される。
処理ユニット1401、決定ユニット1402、および最適化ユニット1403の具体的な機能および有益な効果については、前述の実施形態を参照されたい。簡潔にするために、詳細は再度説明されない。
本出願の一実施形態は、チップシステムをさらに提供する。チップシステムは、論理回路を含む。論理回路は、前述の実施形態に示された方法を実施するために、入力/出力インターフェースに結合され、かつ入力/出力インターフェースを介してデータを伝送するように構成される。
チップシステムは、図1に示されるフラッシュメモリコントローラ113であってもよく、または図1に示されるSSDコントローラ110であってもよい。
本出願の一実施形態はSSDをさらに提供し、SSDは前述のチップシステムを含む。
本出願の一実施形態は、コンピュータ可読媒体をさらに提供する。コンピュータ可読媒体はコンピュータプログラムコードを記憶し、プログラムコードがコンピュータ上で実行されると、コンピュータは、前述の実施形態の方法を実施することが可能にされる。
実装中、前述の方法におけるステップは、プロセッサ内のハードウェア集積論理回路を使用することによって、またはソフトウェアの形の命令を使用することによって実装されることができる。本出願の実施形態を参照して開示された方法のステップは、ハードウェアプロセッサによって直接実施されてもよく、またはプロセッサ内のハードウェアとソフトウェアモジュールとの組み合わせを使用することによって実施されてもよい。ソフトウェアモジュールは、ランダムアクセスメモリ、フラッシュメモリ、読み出し専用メモリ、プログラム可能読み出し専用メモリ、電気的消去可能プログラム可能メモリ、またはレジスタなど、当技術の成熟した記憶媒体に位置されてよい。記憶媒体はメモリに位置され、プロセッサはメモリ内の情報を読み出して、プロセッサのハードウェアと組み合わせて前述の方法のステップを完了する。繰り返しを避けるため、本明細書では詳細は再度説明されない。
本出願の実施形態のプロセッサが、集積回路チップであってもよく、信号処理能力を有することに留意されたい。実装中、前述の方法実施形態におけるステップは、プロセッサ内のハードウェア集積論理回路を使用することにより、またはソフトウェアの形態の命令を使用することによって実装されることができる。汎用プロセッサはマイクロプロセッサであってもよく、またはプロセッサは従来のいずれかのプロセッサなどであってもよい。本出願の実施形態を参照して開示されている方法のステップは、ハードウェア復号プロセッサによって直接遂行されて達成されてもよく、または復号プロセッサにおいてハードウェアとソフトウェアモジュールとの組み合わせによって遂行されて達成されてもよい。ソフトウェアモジュールは、ランダムアクセスメモリ、フラッシュメモリ、読み出し専用メモリ、プログラム可能読み出し専用メモリ、電気的消去可能プログラム可能メモリ、またはレジスタなど、当技術の成熟した記憶媒体に位置されてよい。記憶媒体はメモリに位置され、プロセッサはメモリ内の情報を読み出して、プロセッサのハードウェアと組み合わせて前述の方法のステップを完了する。
本出願の実施形態におけるメモリは、揮発性メモリもしくは不揮発性メモリであってもよく、または揮発性メモリおよび不揮発性メモリを含んでもよいことが理解され得る。不揮発性メモリは、読み出し専用メモリ(read-only memory、ROM)、プログラム可能読み出し専用メモリ(programmable ROM、PROM)、消去可能プログラム可能読み出し専用メモリ(erasable PROM、EPROM)、電気的消去可能プログラム可能読み出し専用メモリ(electrically EPROM、EEPROM)、またはフラッシュメモリであってもよい。揮発性メモリは、外部キャッシュとして使用されるランダムアクセスメモリ(random access memory、RAM)であってもよい。限定的な説明ではなく例として、複数の形態のRAM、例えば、静的ランダムアクセスメモリ(static RAM、SRAM)、動的ランダムアクセスメモリ(dynamic RAM、DRAM)、同期動的ランダムアクセスメモリ(synchronous DRAM、SDRAM)、ダブルデータレート同期動的ランダムアクセスメモリ(double data rate SDRAM、DDR SDRAM)、拡張同期動的ランダムアクセスメモリ(enhanced SDRAM、ESDRAM)、同期リンク動的ランダムアクセスメモリ(synchlink DRAM、SLDRAM)、および直接ランバス動的ランダムアクセスメモリ(direct rambus RAM、DR RAM)が使用されてもよい。本明細書で説明されているシステムおよび方法のメモリは、これらのメモリおよび別の適切なタイプの任意のメモリを含むが、これらに限定されないことに留意されたい。
本出願の実施形態で提供される方法によると、本出願はコンピュータプログラム製品をさらに提供する。コンピュータプログラム製品はコンピュータプログラムコードを含み、コンピュータプログラムコードがコンピュータ上で実行されると、コンピュータは前述の実施形態で示される方法を実施することが可能にされる。
当業者は、本明細書に開示されている実施形態で説明された例と組み合わせて、ユニットおよびアルゴリズムステップが、電子ハードウェア、またはコンピュータソフトウェアと電子ハードウェアとの組み合わせによって実装され得ることを認識し得る。機能がハードウェアによって実施されるか、それともソフトウェアによって実施されるかは、技術的解決策の特定の用途および設計制約条件に依存する。当業者は、具体的な用途ごとに異なる方法を使用して説明されている機能を実装し得るが、その実装は、本出願の範囲を超えると見なされるべきではない。
説明を簡便にするため、前述のシステム、装置、およびユニットの詳しい稼働プロセスについては、前述の方法の実施形態の対応するプロセスを参照するべきであることは、当業者によって明確に理解されよう。ここでは詳細は再び説明されない。
本出願において提供されるいくつかの実施形態においては、開示のシステム、装置、および方法が他の方式で実装されてもよいことを理解されたい。例えば、説明されている装置の実施形態は一例にすぎない。例えば、ユニットへの分割は、単なる論理的な機能分割にすぎず、実際の実装時には他の分割であってもよい。例えば、複数のユニットまたは構成要素が組み合わされるか、または他のシステムに統合されてもよく、またはいくつかの特徴が無視されるか、もしくは実施されなくてもよい。加えて、表示されたまたは述べられた相互結合または直接的な結合もしくは通信接続は、いくつかのインターフェースを介して実装されてもよい。装置またはユニット間の間接結合または通信接続は、電子的形態、機械的形態、またはその他の形態で実装されてよい。
別々の部分として説明されたユニットは、物理的に別々であってもなくてもよく、ユニットとして提示された部分は物理ユニットであってもなくてもよく、1つの位置に位置されてもよく、または複数のネットワークユニットに分散されてもよい。実施形態の解決策の目的を成し遂げるため、実際の要件に基づいてユニットの一部または全部が選択されてもよい。
加えて、本出願の実施形態の機能ユニットは、1つの処理ユニットに統合されてもよく、ユニットの各々は、物理的に単独で存在してもよく、または2つ以上のユニットが1つのユニットに統合される。
機能が、ソフトウェア機能ユニットの形態で実装され、独立した製品として販売または使用されるとき、機能は、コンピュータ可読記憶媒体に記憶されてもよい。このような理解に基づけば、必須なものとしての本出願の技術的解決手段、先行技術に貢献する部分、または技術的解決手段の一部は、ソフトウェア製品の形態で実装されてもよい。ソフトウェア製品は、記憶媒体に記憶され、本出願の実施形態で説明された方法のステップの全部または一部を実施するようにコンピュータデバイス(パーソナルコンピュータ、サーバ、またはネットワークデバイスであり得る)に命令するためのいくつかの命令を含む。前述の記憶媒体は、USBフラッシュドライブ、リムーバブルハードディスク、読み出し専用メモリ(Read-Only Memory、ROM)、ランダムアクセスメモリ(Random Access Memory、RAM)、磁気ディスク、または光ディスクなど、プログラムコードを記憶することができる任意の媒体を含む。
前述の説明は、本出願の具体的な実装形態にすぎず、本出願の保護範囲を限定することを意図するものではない。本出願で開示されている技術的範囲内で当業者によって容易く考え出されるいかなるバリエーションまたは置換は、本出願の保護範囲内に入るものとする。したがって、本出願の保護範囲は、特許請求の範囲の保護範囲に従うものとする。
NFIバスにおける単一チャネルの単一ビットエラーに対する解決策は、ビットエラーが発生したチャネルのデータを再送信することである。しかしながら、NFIバスチャネルの数が増加すると、単一ビットエラーの確率はそれに応じて増加する。加えて、データ再送信は、フラッシュメモリチップの読み出しおよび書き込み性能に重大な影響を及ぼし、ユーザエクスペリエンスを低下させる。
第1の態様を参照して、第1の態様の可能な実装形態では、N個のチャネルから少なくとも1つの最適化対象チャネルを決定するステップは、N個のチャネルのうちの第nのチャネルのマージンを取得するために、第nのチャネルに対してマージン試験を実施するステップであって、nは順番に1からNまでの整数(1およびNを含む)である、ステップと;第nのチャネルのマージンがマージン条件を満たしているかどうかを決定するステップであって、マージン条件はタイミングマージン条件および電圧マージン条件のうちの少なくとも1つを含む、ステップと;第nのチャネルのマージンがマージン条件を満たしていない場合、第nのチャネルが最適化対象チャネルに属すると決定するステップとを含む。
第1の態様を参照して、第1の態様の可能な実装形態では、K個の読み出しマージンはK個の読み出しタイミングマージンであり、K個の書き込みマージンはK個の書き込みタイミングマージンであり、K個の読み出しタイミングマージンはK個の電圧レベルと1対1に対応し、かつK個の書き込みタイミングマージンはK個の電圧レベルと1対1に対応し;読み出し最適化電圧は、以下の式に従って決定され:
(式中、Vrx_bestは読み出し最適化電圧を表し、VkはK個の電圧レベルのうちのk番目の電圧レベルを表し、Trx1はK個の読み出しタイミングマージンのうちのk番目の読み出しタイミングマージンを表し、k=1,…,Kである);かつ書き込み最適化電圧は、以下の式に従って決定される:
(式中、Vtx_bestは書き込み最適化電圧を表し、VkはK個の電圧レベルのうちのk番目の電圧レベルを表し、Ttx1はK個の書き込みタイミングマージンのうちのk番目の書き込みタイミングマージンを表す)。
SSDコントローラ110は、ホストインターフェースコントローラ111と、プロセッサ112と、フラッシュメモリコントローラ113とを含む。ホストインターフェースコントローラ111、プロセッサ112、およびフラッシュメモリコントローラ113は、バス114を介して接続される。図1に示されるホストインターフェースコントローラ111、プロセッサ112、およびフラッシュメモリコントローラ113に加えて、SSDコントローラは、他のモジュール、例えばキャッシュコントローラおよび誤り訂正符号(ECC)モジュールをさらに含んでもよいことが理解されよう。
図2に示されるように、フラッシュメモリコントローラ113は、NFIバス120を介してNAND flashチップ131に接続される。NFIバス120は、複数のデータ信号線(例えば、図2のデータ信号線L0~L7)と、複数のタイミング信号線(例えば、図1のタイミング信号線LS-P、LS-N)とを含む。
DQはデジタル信号であるため、DQの受信端は、DQの電気レベル状態を正しく識別し、DQによって搬送されるデータを正しく取得するために、DQと同じサイクルを有するクロック信号を介してDQのサイクルを正しく区別する必要があることが理解されよう。これを考慮して、NFIバス120は、タイミング信号線LS-Nと、タイミング信号線LS-Pとをさらに含んでもよい。タイミング信号線LS-Nおよびタイミング信号線LS-Pは、データストローブ信号(DQS)を伝送してもよい。
図3に示される書き込みDQSおよび書き込みDQは、一例として使用される。書き込みDQは、書き込みDQ0~書き込みDQ7のいずれか1つであってもよい。書き込みDQSのクロスポイントがトリガポイントとして使用され、そのクロスポイントに対応する書き込みDQのサイクルが、クロスポイントが発生した時刻が収まる書き込みDQサイクルとなる。図3から学習されることができるように、書き込みDQSのトリガポイント(クロスポイント)は、トリガポイントに対応する書き込みDQのサイクルを2つの部分に分割してもよく、トリガポイントの前の部分はセットアップ時間であり、トリガポイントの後の部分はホールド時間である。NAND flashチップ131によって受信されるいずれかの書き込みDQサイクルの開始時点がt1であり、書き込みDQサイクルの終了時点がt2であり、t1とt2との間において、NAND flashチップ131によって受信される書き込みDQSがトリガポイントとなる時点がt0であると仮定される。この場合、t1~t0間の期間はセットアップ時間と呼ばれる場合があり、t0~t2間の期間はホールド時間と呼ばれる場合がある。
前のサイクルの低電気レベルが、現在のサイクルでの高電気レベルに切り替えられる例が使用される。セットアップ時間が不十分である場合、例えば、t0がt1とtminとの間にある場合、t0における書き込みDQの電気レベルは、基準電圧よりも大きい高電気レベルまで完全には上昇しない場合がある。この場合、NAND flashチップ131は、書き込みDQが現在のサイクルにおいて低電気レベルであると誤って見なす場合がある。すなわち、現在のサイクルにおける書き込みDQは、高電気レベルであるべきであるが、t0がt1とtminとの間にあり、電気レベルが基準電圧よりも大きい高レベルまで完全には上昇しないので、低電気レベルとして誤って識別される。その結果、NAND flashチップ131に書き込まれるデータにエラーが発生する。したがって、フラッシュメモリコントローラ113とNAND flashチップ131との間のデータ伝送の精度を保証するためには、セットアップ時間が十分に長いことが保証される必要がある。
一般に、フラッシュメモリコントローラ113における基準電圧は、NAND flashチップ131における基準電圧と同じである。すなわち、図3に示される書き込みDQSおよび書き込みDQに関して、tminとt1との間の時間間隔は、NAND flashチップ131に適用可能な最小セットアップ時間と呼ばれる場合もあり、tmaxとt2との間の時間間隔は、フラッシュメモリチップに適用可能な最小ホールド時間と呼ばれる場合もある。
NFIバスの理想的なデータ幅は、理想的な伝送環境における単一時間データ伝送のために占有される時間を指す。理想的な伝送環境は、データ伝送時に伝送損失が考慮されないことを意味する。例えば、NFIバスの伝送レートが400×100万回/秒(MT/s)である場合、各時間データ伝送によって占有される時間は(1/400×108
)秒であり、すなわち、各時間データ伝送に対応する理想的なデータ幅は2.5nsである。
NFIバスの理想的なデータ幅は、フラッシュメモリチップの性能、容量、レート仕様などに関係する。NFIバスの伝送レートは、NFIバスの理想的なデータ幅と相互関係にある。したがって、NFIバスの伝送レートが増加すると、NFIバスの理想的なデータ幅はそれに応じて減少する。例えば、NFIバスの伝送レートが400MT/sである場合、NFIバスの理想的なデータ幅は2.5nsであり;NFIバスの伝送レートが800MT/sである場合、NFIバスの理想的なデータ幅は1.25nsであり;NFIバスの伝送レートが1,200MT/sである場合、NFIバスの理想的なデータ幅は0.83nsであり;または、NFIバスの伝送レートが1,600MT/sである場合、NFIバスの理想的なデータ幅は0.625nsである。
加えて、「マージン有効幅」は、タイミングマージンの有効幅と呼ばれる場合もある。これは前述の「タイミングマージン」と同等であり、違いは、本出願では「タイミングマージン」を測定するために「マージン有効幅」の概念が定義されていることのみである。ここで、本出願における「マージン」は、「マージン有効幅」を指してもよい。したがって、特に明記しない限り、本出願のこの実施形態におけるタイミングマージンは、タイミングマージンの有効幅として理解されることができる。
本出願の技術的解決策は、NAND flashチップが提供されたデバイスに適用され得るが、デバイスは図2に示される構造を有するものとする。言い換えれば、図1に示されるSSDに加えて、本出願の基本的な解決策は、NFIバスを介してNAND flashチップと通信する他のデバイス、例えば、アドインカード(AIC)、セキュアデジタルカード(SDカード)、およびNAND flashチップを記憶媒体として使用する電子デバイス(例えば、携帯電話、タブレットコンピュータ、デジタルカメラ、またはECU)にも適用されてもよい。
図6に示されるように、パワーオン初期化、タイミング訓練、および電圧訓練を完了した後、フラッシュメモリチップは、サービス実行フェーズを開始する(すなわち、フラッシュメモリチップに記憶されたデータの読み出し、フラッシュメモリチップへのデータの書き込み、フラッシュメモリチップからのデータの削除などを行ってもよい)。サービス実行プロセスでは、トリガ条件が満たされているかどうかが決定され;トリガ条件が満たされていない場合、監視が継続される;トリガ条件が満たされている場合、フラッシュメモリチップの1つ以上のチャネルが選択されて一時停止され;かつ選択されたチャネルのdieがアイドル状態に変化した後、選択されたチャネルのマージンが要件を満たしているかどうかを決定するために、選択されたチャネルに対してマージン試験が実施される。選択されたチャネルのマージンが要件を満たしていない場合、チャネルは最適化されてもよく;または、選択されたチャネルのマージンが要件を満たしている場合、フラッシュメモリチップのすべてのチャネルに対してマージン試験が実施されたかどうかが決定される。「いいえ」の場合、残りのチャネルに対してマージン試験が引き続き実施され;または、マージン試験がすべてのチャネルで実施されていた場合、トリガ条件が満たされているかどうかが監視され続ける。
温度閾値と比較される温度は、温度センサによって監視されるリアルタイム温度であってもよく、またはある期間の平均温度値であってもよい。同様に、湿度閾値と比較される湿度は、湿度センサによって監視されるリアルタイム湿度であってもよく、またはある期間の湿度平均値であってもよい。
NAND flashチップに書き込まれるデータは、例えば、0x5AA55AA5または0xA55AA55Aなど、伝送エラーが発生しやすいデータであってもよい。試験データは、NAND flashチップのキャッシュレジスタに書き込まれてもよい。別のより深い領域(例えば、データレジスタまたはNAND flashアレイ)の代わりにNAND flashチップのキャッシュレジスタに試験データを書き込むことは、NAND flashチップ内のデータ伝送中にエラーが発生する確率を低減し得る。
図9は、フラッシュメモリコントローラの概略図である。電圧マージン試験は、図9に示されるフラッシュメモリコントローラ内のDLL/DLモジュール内の遅延ロックループ(DLL)および遅延線(DL)を介して実装されてもよい。
本出願の実施形態におけるメモリは、揮発性メモリもしくは不揮発性メモリであってもよく、または揮発性メモリおよび不揮発性メモリを含んでもよいことが理解され得る。不揮発性メモリは、読み出し専用メモリ(ROM)、プログラム可能読み出し専用メモリ(PROM)、消去可能プログラム可能読み出し専用メモリ(EPROM)、電気的消去可能プログラム可能読み出し専用メモリ(EEPROM)、またはフラッシュメモリであってもよい。揮発性メモリは、外部キャッシュとして使用されるランダムアクセスメモリ(RAM)であってもよい。限定的な説明ではなく例として、複数の形態のRAM、例えば、静的ランダムアクセスメモリ(SRAM)、動的ランダムアクセスメモリ(DRAM)、同期動的ランダムアクセスメモリ(SDRAM)、ダブルデータレート同期動的ランダムアクセスメモリ(DDR SDRAM)、拡張同期動的ランダムアクセスメモリ(ESDRAM)、同期リンク動的ランダムアクセスメモリ(SLDRAM)、および直接ランバス動的ランダムアクセスメモリ(DR RAM)が使用されてもよい。本明細書で説明されているシステムおよび方法のメモリは、これらのメモリおよび別の適切なタイプの任意のメモリを含むが、これらに限定されないことに留意されたい。
機能が、ソフトウェア機能ユニットの形態で実装され、独立した製品として販売または使用されるとき、機能は、コンピュータ可読記憶媒体に記憶されてもよい。このような理解に基づけば、必須なものとしての本出願の技術的解決手段、先行技術に貢献する部分、または技術的解決手段の一部は、ソフトウェア製品の形態で実装されてもよい。ソフトウェア製品は、記憶媒体に記憶され、本出願の実施形態で説明された方法のステップの全部または一部を実施するようにコンピュータデバイス(パーソナルコンピュータ、サーバ、またはネットワークデバイスであり得る)に命令するためのいくつかの命令を含む。前述の記憶媒体は、USBフラッシュドライブ、リムーバブルハードディスク、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク、または光ディスクなど、プログラムコードを記憶することができる任意の媒体を含む。